Index: uKadecot/trunk/Readme.txt
===================================================================
--- uKadecot/trunk/Readme.txt	(revision 101)
+++ uKadecot/trunk/Readme.txt	(revision 101)
@@ -0,0 +1,94 @@
+
+	TOPPERS/ECNLiRelease 1.1.aj
+		TOPPERS ECHONET Lite Communication Middleware
+
+yÍ¶ßÉz
+
+TOPPERS/ECNLÍCECHONET LiteÌ@íü¯ÊM~hEFAÅ·D
+Rg[ÎÌöJOÌÅðgpµCKadecot APIðÀµ½ÆdT[oÌ
+TvvOÅ·D
+TOPPERS/ECNLÉÂ¢ÄÍÈºÌWeby[Wð¨ÇÝ­¾³¢D
+
+	https://www.toppers.jp/ecnl.html
+
+±ÌÅÅÍCTOPPERS/ASP{TINETÅÍÈ­CTOPPERS/SSP{uIPðgpµÄ¢Ü·D
+
+ypðz
+
+TOPPERS/ECNLÌpðÍCet@CÌæªÉ\¦³êÄ¢éTOPPERSCZ
+XÅ·DTOPPERSCZXÉÖ·éFAQªCÈºÌy[WÉ èÜ·D
+
+	http://www.toppers.jp/faq/faq_ct12.html
+
+±ÌpbP[WÉÍCTvvOÉKvÈTOPPERS/SSPÌ¼CÈºÌ\
+tgEFAªÜÜêÄ¨èCgp·éêÍ»ê¼êÌpðÉ]ÁÄ­¾
+³¢D
+
+EuIPFIPX^bN
+	https://github.com/adamdunkels/uip
+EPetit FAT File System ModuleFWebT[opt@CVXe
+	http://elm-chan.org/fsw/ff/00index_p.html
+Emod_websocketFWebSocketibase64,sha1ðgpj
+	https://github.com/nori0428/mod_websocket
+EJSONSLFJSONp[T[
+	https://github.com/mnunberg/jsonsl
+EjQuery
+	http://jquery.com
+EjQuery Mobile
+	http://jquerymobile.com
+ESaltarelle C# to JavaScript Compiler
+	http://www.saltarelle-compiler.com
+EUnitypKadecot WAMPCu
+	http://kadecot.net/blog/2842/
+
+uKadecotvÍ®ïÐ\j[Rs
+[^TCGX¤Ì¤WÅ·D
+
+yRpCû@z
+
+GR-SAKURAÌÀst@CÌRpCÉCRenesas CubeSuite+ðgpµÜ·D
+AvP[VÆCKadecotÅgp·é¼Ìe[uCWebAvP[V
+Ìt@CVXeÌCRÂÌt@CðµÄC«ÝC[Wðì¬
+µÜ·D
+
+ETOPPERS/SSPCuÌRpC
+	csp\libssp\libssp.mtpj
+¨libssp.a
+
+EAvP[VÌRpC
+	csp\ukadecot\ukadecot.mtpj
+¨ukadecot.mod
+
+ERg[WebAvP[VÌRpC
+	tools\EcnlControllerUI\EcnlControllerUI.sln
+¨ctrlui.js
+
+EWebAvP[VÌRs[/minify
+	tools\EcnlControllerUI\EcnlCtrlUI\copy_httpd-fs.bat
+¨httpd-fs\*
+
+EWebAvP[VÌt@CVXe»
+	uip\apps\webserver\makefsdata.exe
+¨httpd-fs.bin
+
+ERÂÌt@Ciukadecot.mod, httpd-fs.bin, kadecot_names.binjð
+	csp\flash\ukadecot_cat.bat
+¨ukadecot_YYMMDDhhmmss.mod
+
+ÅãÌuukadecot_YYMMDDhhmmss.modvªCGR-SAKURAÖÌ«ÝC[WÉÈ
+èÜ·D
+
+y¿âEoO|[gEÓ©Ìtæz
+
+TOPPERS/ECNLðæèÇ¢àÌÉ·é½ßÌ²Ó©ð½}µÜ·DTOPPERS/ECNL
+ÉÖ·é¿ââoO|[gC²Ó©ÍCTOPPERSvWFNgÌïõÍ
+TOPPERSJ­Ò[OXgidev@toppers.jpj¶Ü½ÍTOPPERS/ECNLÌo
+OgbLOVXeiTracjÉC»Ì¼ÌûÍTOPPERS[U[Y[
+OXgiusers@toppers.jpj¶É¨è¢µÜ·D
+
+TOPPERS[U[Y[OXgÖÌo^û@ÉÂ¢ÄÍCÈºÌy[WÉ
+à¾ª èÜ·D
+
+	http://www.toppers.jp/community.html
+
+Èã
Index: uKadecot/trunk/csp/flash/flash.rws
===================================================================
--- uKadecot/trunk/csp/flash/flash.rws	(revision 101)
+++ uKadecot/trunk/csp/flash/flash.rws	(revision 101)
@@ -0,0 +1,10 @@
+<RfpWorkspace>
+  <ProductVersion>2.01.01.00</ProductVersion>
+  <FormatVersion>2.0</FormatVersion>
+  <WindowMode>0</WindowMode>
+  <ActiveProjectName>gr_sakura</ActiveProjectName>
+  <Name project="gr_sakura">
+    <RelativePath>gr_sakura\gr_sakura.rpj</RelativePath>
+    <ActiveProgramName />
+  </Name>
+</RfpWorkspace>
Index: uKadecot/trunk/csp/flash/gr_sakura/RX600 Series (LittleEndian).fcf
===================================================================
--- uKadecot/trunk/csp/flash/gr_sakura/RX600 Series (LittleEndian).fcf	(revision 101)
+++ uKadecot/trunk/csp/flash/gr_sakura/RX600 Series (LittleEndian).fcf	(revision 101)
@@ -0,0 +1,447 @@
+[Header]
+Description=Renesas Flash Programmer Configuration File (Generic Generation)
+File Type=1.4
+[Device Info]
+Protocol=2 ;Protocol C: Generic Boot devices
+Device Code=7608
+Product Code=RX600 Series (LittleEndian)
+More Than 128 Erase Blocks=FALSE
+EVB Clock MHz=12.0000
+FLASH ROM Size=0x100000
+User Boot Area Size=0x0
+Supports32LockBit=TRUE
+SupportsUserLocking=TRUE
+SupportsDataLocking=FALSE
+SupportsLocking=TRUE
+SupportsFlashShield=FALSE
+Data Area Size=0x8000
+Memory Area Count=2
+Erase Block Count=70
+Write Line Size=0x400
+[Kernel Info]
+Base Device=Generic BOOT Device
+Protocol=C
+[Valid Clock Modes]
+Clock Modes=0
+[Clock Mode 0]
+CKM=8
+CKP=4
+Crystal Frequency Range=96.00|96.00
+[Memory Area 0]
+Block Name=UA0
+Start Address=0xFFF00000
+Block Size=0x100000
+Area Type=User Flash
+Overlay=0
+[Memory Area 1]
+Block Name=DA0
+Start Address=0x00100000
+Block Size=0x8000
+Area Type=Data Flash
+Overlay=0
+[Erase Block 0]
+Block Name=EB0
+Start Address=0xFFFFF000
+Block Size=0x1000
+Overlay=0
+Lockable=TRUE
+[Erase Block 1]
+Block Name=EB1
+Start Address=0xFFFFE000
+Block Size=0x1000
+Overlay=0
+Lockable=TRUE
+[Erase Block 2]
+Block Name=EB2
+Start Address=0xFFFFD000
+Block Size=0x1000
+Overlay=0
+Lockable=TRUE
+[Erase Block 3]
+Block Name=EB3
+Start Address=0xFFFFC000
+Block Size=0x1000
+Overlay=0
+Lockable=TRUE
+[Erase Block 4]
+Block Name=EB4
+Start Address=0xFFFFB000
+Block Size=0x1000
+Overlay=0
+Lockable=TRUE
+[Erase Block 5]
+Block Name=EB5
+Start Address=0xFFFFA000
+Block Size=0x1000
+Overlay=0
+Lockable=TRUE
+[Erase Block 6]
+Block Name=EB6
+Start Address=0xFFFF9000
+Block Size=0x1000
+Overlay=0
+Lockable=TRUE
+[Erase Block 7]
+Block Name=EB7
+Start Address=0xFFFF8000
+Block Size=0x1000
+Overlay=0
+Lockable=TRUE
+[Erase Block 8]
+Block Name=EB8
+Start Address=0xFFFF4000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 9]
+Block Name=EB9
+Start Address=0xFFFF0000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 10]
+Block Name=EB10
+Start Address=0xFFFEC000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 11]
+Block Name=EB11
+Start Address=0xFFFE8000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 12]
+Block Name=EB12
+Start Address=0xFFFE4000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 13]
+Block Name=EB13
+Start Address=0xFFFE0000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 14]
+Block Name=EB14
+Start Address=0xFFFDC000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 15]
+Block Name=EB15
+Start Address=0xFFFD8000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 16]
+Block Name=EB16
+Start Address=0xFFFD4000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 17]
+Block Name=EB17
+Start Address=0xFFFD0000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 18]
+Block Name=EB18
+Start Address=0xFFFCC000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 19]
+Block Name=EB19
+Start Address=0xFFFC8000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 20]
+Block Name=EB20
+Start Address=0xFFFC4000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 21]
+Block Name=EB21
+Start Address=0xFFFC0000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 22]
+Block Name=EB22
+Start Address=0xFFFBC000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 23]
+Block Name=EB23
+Start Address=0xFFFB8000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 24]
+Block Name=EB24
+Start Address=0xFFFB4000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 25]
+Block Name=EB25
+Start Address=0xFFFB0000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 26]
+Block Name=EB26
+Start Address=0xFFFAC000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 27]
+Block Name=EB27
+Start Address=0xFFFA8000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 28]
+Block Name=EB28
+Start Address=0xFFFA4000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 29]
+Block Name=EB29
+Start Address=0xFFFA0000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 30]
+Block Name=EB30
+Start Address=0xFFF9C000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 31]
+Block Name=EB31
+Start Address=0xFFF98000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 32]
+Block Name=EB32
+Start Address=0xFFF94000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 33]
+Block Name=EB33
+Start Address=0xFFF90000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 34]
+Block Name=EB34
+Start Address=0xFFF8C000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 35]
+Block Name=EB35
+Start Address=0xFFF88000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 36]
+Block Name=EB36
+Start Address=0xFFF84000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 37]
+Block Name=EB37
+Start Address=0xFFF80000
+Block Size=0x4000
+Overlay=0
+Lockable=TRUE
+[Erase Block 38]
+Block Name=EB38
+Start Address=0xFFF78000
+Block Size=0x8000
+Overlay=0
+Lockable=TRUE
+[Erase Block 39]
+Block Name=EB39
+Start Address=0xFFF70000
+Block Size=0x8000
+Overlay=0
+Lockable=TRUE
+[Erase Block 40]
+Block Name=EB40
+Start Address=0xFFF68000
+Block Size=0x8000
+Overlay=0
+Lockable=TRUE
+[Erase Block 41]
+Block Name=EB41
+Start Address=0xFFF60000
+Block Size=0x8000
+Overlay=0
+Lockable=TRUE
+[Erase Block 42]
+Block Name=EB42
+Start Address=0xFFF58000
+Block Size=0x8000
+Overlay=0
+Lockable=TRUE
+[Erase Block 43]
+Block Name=EB43
+Start Address=0xFFF50000
+Block Size=0x8000
+Overlay=0
+Lockable=TRUE
+[Erase Block 44]
+Block Name=EB44
+Start Address=0xFFF48000
+Block Size=0x8000
+Overlay=0
+Lockable=TRUE
+[Erase Block 45]
+Block Name=EB45
+Start Address=0xFFF40000
+Block Size=0x8000
+Overlay=0
+Lockable=TRUE
+[Erase Block 46]
+Block Name=EB46
+Start Address=0xFFF38000
+Block Size=0x8000
+Overlay=0
+Lockable=TRUE
+[Erase Block 47]
+Block Name=EB47
+Start Address=0xFFF30000
+Block Size=0x8000
+Overlay=0
+Lockable=TRUE
+[Erase Block 48]
+Block Name=EB48
+Start Address=0xFFF28000
+Block Size=0x8000
+Overlay=0
+Lockable=TRUE
+[Erase Block 49]
+Block Name=EB49
+Start Address=0xFFF20000
+Block Size=0x8000
+Overlay=0
+Lockable=TRUE
+[Erase Block 50]
+Block Name=EB50
+Start Address=0xFFF18000
+Block Size=0x8000
+Overlay=0
+Lockable=TRUE
+[Erase Block 51]
+Block Name=EB51
+Start Address=0xFFF10000
+Block Size=0x8000
+Overlay=0
+Lockable=TRUE
+[Erase Block 52]
+Block Name=EB52
+Start Address=0xFFF08000
+Block Size=0x8000
+Overlay=0
+Lockable=TRUE
+[Erase Block 53]
+Block Name=EB53
+Start Address=0xFFF00000
+Block Size=0x8000
+Overlay=0
+Lockable=TRUE
+[Erase Block 54]
+Block Name=EB54
+Start Address=0x00107800
+Block Size=0x800
+Overlay=0
+[Erase Block 55]
+Block Name=EB55
+Start Address=0x00107000
+Block Size=0x800
+Overlay=0
+[Erase Block 56]
+Block Name=EB56
+Start Address=0x00106800
+Block Size=0x800
+Overlay=0
+[Erase Block 57]
+Block Name=EB57
+Start Address=0x00106000
+Block Size=0x800
+Overlay=0
+[Erase Block 58]
+Block Name=EB58
+Start Address=0x00105800
+Block Size=0x800
+Overlay=0
+[Erase Block 59]
+Block Name=EB59
+Start Address=0x00105000
+Block Size=0x800
+Overlay=0
+[Erase Block 60]
+Block Name=EB60
+Start Address=0x00104800
+Block Size=0x800
+Overlay=0
+[Erase Block 61]
+Block Name=EB61
+Start Address=0x00104000
+Block Size=0x800
+Overlay=0
+[Erase Block 62]
+Block Name=EB62
+Start Address=0x00103800
+Block Size=0x800
+Overlay=0
+[Erase Block 63]
+Block Name=EB63
+Start Address=0x00103000
+Block Size=0x800
+Overlay=0
+[Erase Block 64]
+Block Name=EB64
+Start Address=0x00102800
+Block Size=0x800
+Overlay=0
+[Erase Block 65]
+Block Name=EB65
+Start Address=0x00102000
+Block Size=0x800
+Overlay=0
+[Erase Block 66]
+Block Name=EB66
+Start Address=0x00101800
+Block Size=0x800
+Overlay=0
+[Erase Block 67]
+Block Name=EB67
+Start Address=0x00101000
+Block Size=0x800
+Overlay=0
+[Erase Block 68]
+Block Name=EB68
+Start Address=0x00100800
+Block Size=0x800
+Overlay=0
+[Erase Block 69]
+Block Name=EB69
+Start Address=0x00100000
+Block Size=0x800
+Overlay=0
+[Checksum]
+Checksum=
Index: uKadecot/trunk/csp/flash/gr_sakura/gr_sakura.rpj
===================================================================
--- uKadecot/trunk/csp/flash/gr_sakura/gr_sakura.rpj	(revision 101)
+++ uKadecot/trunk/csp/flash/gr_sakura/gr_sakura.rpj	(revision 101)
@@ -0,0 +1,102 @@
+<RfpProject>
+  <ProductVersion>2.01.00.00</ProductVersion>
+  <Class Guid="7b634d76-252e-4043-850a-eb471438cc19">
+    <Instance Guid="d232e429-7dEB-4587-a9da-9b9848af03aa">
+      <FormatVersion>1.02</FormatVersion>
+      <SetupDLL>
+        <GUI>
+          <SelectedMenu>2</SelectedMenu>
+        </GUI>
+        <ProgramFile>
+          <UserDataCheck>TRUE</UserDataCheck>
+          <UserBootCheck>FALSE</UserBootCheck>
+          <UserDataArea>D:\EchonetLite\EchonetLite\csp\flash\ukadecot_20150520120051.mot</UserDataArea>
+          <UserBootArea>
+          </UserBootArea>
+        </ProgramFile>
+        <Wizard_DeviceInfo>
+          <DeviceName>RX600 Series (LittleEndian)</DeviceName>
+          <DeviceGroup>RX</DeviceGroup>
+          <ParameterPath>RX600 Series (LittleEndian).fcf</ParameterPath>
+        </Wizard_DeviceInfo>
+        <Wizard_CommunicationInfo>
+          <Tool>USB Direct</Tool>
+          <Interface>USB</Interface>
+        </Wizard_CommunicationInfo>
+        <Wizard_ClockInfo>
+          <ClockType>External Resonator or Clock</ClockType>
+          <Frequency>12.0000</Frequency>
+          <ClockMode>0</ClockMode>
+          <CKM>8</CKM>
+          <CKP>4</CKP>
+        </Wizard_ClockInfo>
+        <Wizard_BaudrateInfo>
+          <Baudrate>
+          </Baudrate>
+          <UseDefaultBaudrate>TRUE</UseDefaultBaudrate>
+          <UserBaudrate>FALSE</UserBaudrate>
+        </Wizard_BaudrateInfo>
+        <Wizard_ConnectModePinInfo>
+          <ModePinDir>00000000</ModePinDir>
+          <ModePinLvl>00000000</ModePinLvl>
+        </Wizard_ConnectModePinInfo>
+        <Wizard_PowerInfo>
+          <PowerOn>FALSE</PowerOn>
+          <PowerLevel>0.0</PowerLevel>
+        </Wizard_PowerInfo>
+        <Detail_BasicModeOptionInfo>
+          <AutoDisconnect>TRUE</AutoDisconnect>
+        </Detail_BasicModeOptionInfo>
+        <Detail_ProgramOptionInfo>
+          <ReadbackVerify>FALSE</ReadbackVerify>
+          <EraseBeforeProgram>0</EraseBeforeProgram>
+          <AllEraseBeforeProgram>FALSE</AllEraseBeforeProgram>
+          <RequestChecksum>FALSE</RequestChecksum>
+          <SetSecurityAfterProgram>FALSE</SetSecurityAfterProgram>
+          <FileOverWarning>FALSE</FileOverWarning>
+        </Detail_ProgramOptionInfo>
+        <Detail_DisconnectOptionInfo>
+          <ResetPinAsLow>TRUE</ResetPinAsLow>
+          <DisconnectReset>FALSE</DisconnectReset>
+          <ModePinDir>00000000</ModePinDir>
+          <ModePinLvl>00000000</ModePinLvl>
+        </Detail_DisconnectOptionInfo>
+        <Detail_LockBitInfo>
+          <ConnectOption>1</ConnectOption>
+          <DisconnectOption>1</DisconnectOption>
+          <LockBlocks>
+          </LockBlocks>
+        </Detail_LockBitInfo>
+        <Detail_IDCodeInfo>
+          <IDCode>FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF</IDCode>
+          <AutoSendID>FALSE</AutoSendID>
+        </Detail_IDCodeInfo>
+        <Detail_TimeoutInfo>
+          <Erase>10</Erase>
+          <BlankCheck>10</BlankCheck>
+          <Program>5</Program>
+          <Read>5</Read>
+        </Detail_TimeoutInfo>
+        <Detail_UserBootInfo>
+          <Eraseable>FALSE</Eraseable>
+        </Detail_UserBootInfo>
+        <Detail_FlashShieldInfo>
+          <Enable>FALSE</Enable>
+          <Begin>-1</Begin>
+          <End>-1</End>
+        </Detail_FlashShieldInfo>
+      </SetupDLL>
+      <UcpDLL>
+        <Ucp_Settings>
+          <UCP_Enabled>FALSE</UCP_Enabled>
+          <UCP_FilePath>
+          </UCP_FilePath>
+          <UCP_AllData>TRUE</UCP_AllData>
+          <UCP_StartPoint>0</UCP_StartPoint>
+          <UCP_EndPoint>0</UCP_EndPoint>
+          <UCP_Overwrite>FALSE</UCP_Overwrite>
+        </Ucp_Settings>
+      </UcpDLL>
+    </Instance>
+  </Class>
+</RfpProject>
Index: uKadecot/trunk/csp/flash/ukadecot_cat.bat
===================================================================
--- uKadecot/trunk/csp/flash/ukadecot_cat.bat	(revision 101)
+++ uKadecot/trunk/csp/flash/ukadecot_cat.bat	(revision 101)
@@ -0,0 +1,4 @@
+set time2=%time: =0%
+set fn=%date:~-10,4%%date:~-5,2%%date:~-2,2%%time2:~0,2%%time2:~3,2%%time2:~6,2%
+
+..\..\srecord\srec_cat --address-length=4 --line-length=70 ..\ukadecot\DefaultBuild\ukadecot.mot ..\..\uip\apps\webserver\httpd-fs.bin -binary -offset 0xFFF00000 ..\..\kadecot\kadecot_names.bin -binary -offset 0xFFFE0000  -o ukadecot_%fn%.mot
Index: uKadecot/trunk/csp/libssp/cfg/cfg.mtsp
===================================================================
--- uKadecot/trunk/csp/libssp/cfg/cfg.mtsp	(revision 101)
+++ uKadecot/trunk/csp/libssp/cfg/cfg.mtsp	(revision 101)
@@ -0,0 +1,1156 @@
+<CubeSuiteProject>
+  <ProductVersion>4.02.00.00</ProductVersion>
+  <Class Guid="68f4a651-b9cd-473b-a595-b00447132ffa">
+    <Instance Guid="00000000-0000-0000-0000-000000000000">
+      <FormatVersion>2.0</FormatVersion>
+      <FileVersion>4.2</FileVersion>
+      <ProjectGuid>c170030b-b19d-470a-99cb-00eb1a66ac6b</ProjectGuid>
+      <ProjectItemGuid>e7b5b09e-b638-4529-91de-eb34915bbeb7</ProjectItemGuid>
+      <FileCategoryGuid>479fec8d-854b-4e39-83c6-c84e8b20ea01</FileCategoryGuid>
+      <Property>fb98844b-2c27-4275-9804-f6e63e204da0</Property>
+    </Instance>
+    <Instance Guid="2663a3a4-1aa9-423b-8114-929eeb0f323e">
+      <Name>cfg1_out.c</Name>
+      <Type>File</Type>
+      <RelativePath>cfg1_out.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>479fec8d-854b-4e39-83c6-c84e8b20ea01</ParentItem>
+      <Property>62c8feca-6dc2-430a-9205-6ebd0ac31059</Property>
+    </Instance>
+  </Class>
+  <Class Guid="fb98844b-2c27-4275-9804-f6e63e204da0">
+    <Instance Guid="2a349cb6-b982-4ade-adcd-104b883ad81c">
+      <MemoCount>0</MemoCount>
+    </Instance>
+  </Class>
+  <Class Guid="0d548289-d5e9-4893-9a8f-9374b13f19a9">
+    <Instance Guid="62c8feca-6dc2-430a-9205-6ebd0ac31059">
+      <MemoCount>0</MemoCount>
+    </Instance>
+  </Class>
+  <Class Guid="8fb9c1f6-d351-4d10-8d99-bf5b3015b84c">
+    <Instance Guid="00000000-0000-0000-0000-000000000000">
+      <UsingPlatformGuid>500ba51a-4219-4828-b4be-80f54d6d3551</UsingPlatformGuid>
+    </Instance>
+  </Class>
+  <Class Guid="c325714f-8f51-484b-9e96-b4b59c0fb263">
+    <Instance Guid="c325714f-8f51-484b-9e96-b4b59c0fb263">
+      <DeviceManager>0e793ff3-2e3f-43c0-bdc9-926269595403</DeviceManager>
+    </Instance>
+  </Class>
+  <Class Guid="0e793ff3-2e3f-43c0-bdc9-926269595403">
+    <Instance Guid="0e793ff3-2e3f-43c0-bdc9-926269595403">
+      <DataFormatVersion>1.0</DataFormatVersion>
+    </Instance>
+    <Instance Guid="2a81c37a-5015-44c2-9f40-e58b669eec75">
+      <DeviceName>R5F563NBDxFP</DeviceName>
+      <MemoCount>0</MemoCount>
+    </Instance>
+  </Class>
+  <Class Guid="873c9a58-9bc5-439a-b476-78629a4553ed">
+    <Instance Guid="873c9a58-9bc5-439a-b476-78629a4553ed">
+      <ProjectDeviceChangedCounter>0</ProjectDeviceChangedCounter>
+      <ProjectInitialDeviceName>R5F563NBDxFP</ProjectInitialDeviceName>
+    </Instance>
+  </Class>
+  <Class Guid="c3835e31-dea3-4c93-b02b-d2db997f7630">
+    <Instance Guid="c3835e31-dea3-4c93-b02b-d2db997f7630">
+      <BuildToolManager>3a79707d-5977-45f7-ac11-19c35e333132</BuildToolManager>
+    </Instance>
+  </Class>
+  <Class Guid="3a79707d-5977-45f7-ac11-19c35e333132">
+    <Instance Guid="3a79707d-5977-45f7-ac11-19c35e333132">
+      <DataFormatVersion>1.2</DataFormatVersion>
+      <BuildModeCount>1</BuildModeCount>
+      <BuildMode0>RABlAGYAYQB1AGwAdABCAHUAaQBsAGQA</BuildMode0>
+      <BatchBuildFlag0>False</BatchBuildFlag0>
+      <CurrentBuildMode>DefaultBuild</CurrentBuildMode>
+      <SourceItemGuid0>2663a3a4-1aa9-423b-8114-929eeb0f323e</SourceItemGuid0>
+      <SourceItemType0>CSource</SourceItemType0>
+      <SourceItemCount>1</SourceItemCount>
+      <LastDeviceChangedCounter>0</LastDeviceChangedCounter>
+    </Instance>
+    <Instance Guid="9e208646-ccba-4100-a676-29b1efe6545f">
+      <AsmOptionInclude-DefaultValue />
+      <BuildMode-DefaultValue>DefaultBuild</BuildMode-DefaultValue>
+      <COptionInclude-DefaultValue />
+      <GeneralOptionIsa-DefaultValue>RXv1</GeneralOptionIsa-DefaultValue>
+      <GeneralOptionOutput-DefaultValue>LoadModuleFile</GeneralOptionOutput-DefaultValue>
+      <GeneralOptionPic-DefaultValue>False</GeneralOptionPic-DefaultValue>
+      <GeneralOptionSimultaneousBuild-DefaultValue>True</GeneralOptionSimultaneousBuild-DefaultValue>
+      <HexOptionOutput-DefaultValue>True</HexOptionOutput-DefaultValue>
+      <LibOptionDebug-DefaultValue>Debug</LibOptionDebug-DefaultValue>
+      <LinkOptionLibrary-DefaultValue />
+      <Memo-DefaultValue />
+      <OutputMessageFormat-DefaultValue>%TargetFiles%</OutputMessageFormat-DefaultValue>
+      <AsmOptionSystemInclude-DefaultValue />
+      <COptionSystemInclude-DefaultValue />
+      <CompilerVersion-DefaultValue>
+
+0</CompilerVersion-DefaultValue>
+      <DependencyFileExistCheckingType-DefaultValue>Rebuild</DependencyFileExistCheckingType-DefaultValue>
+      <FormatBuildOptionList-DefaultValue>%TargetFiles% : %Program% %Options%</FormatBuildOptionList-DefaultValue>
+      <GeneralOptionCpu-DefaultValue>RX600</GeneralOptionCpu-DefaultValue>
+      <GeneralOptionOutputFolder-DefaultValue>%BuildModeName%</GeneralOptionOutputFolder-DefaultValue>
+      <GeneralOptionPid-DefaultValue>None</GeneralOptionPid-DefaultValue>
+      <HexOptionForm-DefaultValue>Stype</HexOptionForm-DefaultValue>
+      <LinkOptionDebug-DefaultValue>Debug</LinkOptionDebug-DefaultValue>
+      <AsmOptionDefine-DefaultValue />
+      <COptionDefine-DefaultValue />
+      <EnsureCompatibilityOfPathAndLinkageOrder-DefaultValue>False</EnsureCompatibilityOfPathAndLinkageOrder-DefaultValue>
+      <GeneralOptionFpu-DefaultValue>Auto</GeneralOptionFpu-DefaultValue>
+      <GeneralOptionNousePidRegister-DefaultValue>True</GeneralOptionNousePidRegister-DefaultValue>
+      <LinkOptionConvertFolder-DefaultValue>%BuildModeName%</LinkOptionConvertFolder-DefaultValue>
+      <LinkOptionOptimize-DefaultValue>None</LinkOptionOptimize-DefaultValue>
+      <AsmOptionDebug-DefaultValue>True</AsmOptionDebug-DefaultValue>
+      <COptionDebug-DefaultValue>True</COptionDebug-DefaultValue>
+      <GeneralOptionEndian-DefaultValue>Little</GeneralOptionEndian-DefaultValue>
+      <LinkOptionConvertFileName-DefaultValue>%ProjectName%.mot</LinkOptionConvertFileName-DefaultValue>
+      <LinkOptionOptimizeSymbolDelete-DefaultValue>False</LinkOptionOptimizeSymbolDelete-DefaultValue>
+      <PreBuildCommands-DefaultValue />
+      <AsmOptionGoptimize-DefaultValue>False</AsmOptionGoptimize-DefaultValue>
+      <COptionOptimize-DefaultValue>Level2</COptionOptimize-DefaultValue>
+      <GeneralOptionRound-DefaultValue>Nearest</GeneralOptionRound-DefaultValue>
+      <LinkOptionMultiConvertFileName-DefaultValue />
+      <LinkOptionOptimizeSameCode-DefaultValue>False</LinkOptionOptimizeSameCode-DefaultValue>
+      <PostBuildCommands-DefaultValue />
+      <AsmOptionListFile-DefaultValue>False</AsmOptionListFile-DefaultValue>
+      <COptionGoptimize-DefaultValue>False</COptionGoptimize-DefaultValue>
+      <GeneralOptionDenormalize-DefaultValue>Off</GeneralOptionDenormalize-DefaultValue>
+      <LinkOptionSameSize-DefaultValue>1E</LinkOptionSameSize-DefaultValue>
+      <AsmOptionShowConditionals-DefaultValue>False</AsmOptionShowConditionals-DefaultValue>
+      <COptionSpeedAndSize-DefaultValue>Size</COptionSpeedAndSize-DefaultValue>
+      <GeneralOptionDblSize-DefaultValue>SinglePrecision</GeneralOptionDblSize-DefaultValue>
+      <LinkOptionOptimizeShortFormat-DefaultValue>False</LinkOptionOptimizeShortFormat-DefaultValue>
+      <AsmOptionShowDefinitions-DefaultValue>False</AsmOptionShowDefinitions-DefaultValue>
+      <COptionListfile-DefaultValue>False</COptionListfile-DefaultValue>
+      <GeneralOptionIntToShort-DefaultValue>False</GeneralOptionIntToShort-DefaultValue>
+      <LinkOptionOptimizeBranch-DefaultValue>False</LinkOptionOptimizeBranch-DefaultValue>
+      <AsmOptionShowExpansions-DefaultValue>False</AsmOptionShowExpansions-DefaultValue>
+      <COptionShowSource-DefaultValue>False</COptionShowSource-DefaultValue>
+      <GeneralOptionSignedChar-DefaultValue>Unsigned</GeneralOptionSignedChar-DefaultValue>
+      <LinkOptionStart-DefaultValue>B_1,R_1,B_2,R_2,B,R,SU,SI/04,PResetPRG/0FFFF8000,C_1,C_2,C,C$DSEC,C$BSEC,C$INIT,C$VTBL,C$VECT,D_1,D_2,D,P,PIntPRG,W_1,W_2,W,L/0FFFF8100,FIXEDVECT/0FFFFFFD0</LinkOptionStart-DefaultValue>
+      <COptionShowConditionals-DefaultValue>False</COptionShowConditionals-DefaultValue>
+      <GeneralOptionOtherAdditionalOptions-DefaultValue />
+      <GeneralOptionSignedBitfield-DefaultValue>Unsigned</GeneralOptionSignedBitfield-DefaultValue>
+      <COptionShowDefinitions-DefaultValue>False</COptionShowDefinitions-DefaultValue>
+      <GeneralOptionAutoEnum-DefaultValue>False</GeneralOptionAutoEnum-DefaultValue>
+      <COptionShowExpansions-DefaultValue>False</COptionShowExpansions-DefaultValue>
+      <GeneralOptionBitOrder-DefaultValue>Right</GeneralOptionBitOrder-DefaultValue>
+      <GeneralOptionPack-DefaultValue>False</GeneralOptionPack-DefaultValue>
+      <GeneralOptionException-DefaultValue>False</GeneralOptionException-DefaultValue>
+      <GeneralOptionRtti-DefaultValue>False</GeneralOptionRtti-DefaultValue>
+      <GeneralOptionFintRegister-DefaultValue>None</GeneralOptionFintRegister-DefaultValue>
+      <GeneralOptionBranch-DefaultValue>Branch24</GeneralOptionBranch-DefaultValue>
+      <GeneralOptionBaseRomRegister-DefaultValue>None</GeneralOptionBaseRomRegister-DefaultValue>
+      <GeneralOptionBaseRamRegister-DefaultValue>None</GeneralOptionBaseRamRegister-DefaultValue>
+      <GeneralOptionBaseAddressAddress-DefaultValue>00000000</GeneralOptionBaseAddressAddress-DefaultValue>
+      <GeneralOptionBaseAddressRegister-DefaultValue>None</GeneralOptionBaseAddressRegister-DefaultValue>
+      <GeneralOptionPatch-DefaultValue>None</GeneralOptionPatch-DefaultValue>
+      <GeneralOptionSaveAcc-DefaultValue>False</GeneralOptionSaveAcc-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8587688969117379814</TimeTagModified--0>
+      <BuildMode-0>DefaultBuild</BuildMode-0>
+      <Memo-0 />
+      <OutputMessageFormat-0>%TargetFiles%</OutputMessageFormat-0>
+      <FormatBuildOptionList-0>%TargetFiles% : %Program% %Options%</FormatBuildOptionList-0>
+      <PreBuildCommands-0>if exist "%OutputDir%\%ProjectName%.syms" del "%OutputDir%\%ProjectName%.syms"
+..\..\..\ssp\cfg\cfg\cfg.exe --pass 1 --kernel ssp --api-table ..\..\..\ssp\kernel\ssp_kernel_api.csv --cfg1-def-table ..\..\..\ssp\kernel\ssp_kernel_def.csv --cfg1-def-table ..\..\..\ssp\syssvc\syssvc_def.csv --cfg1-def-table ..\..\..\ssp\arch\rx630_ccrx\prc_def.csv --cfg1-def-table ..\..\..\ssp\target\grsakura_ccrx\target_def.csv -I ..\..\..\ssp -I ..\..\..\ssp\arch -I ..\..\..\ssp\include -I ..\..\..\ssp\target\grsakura_ccrx ..\dummy.cfg
+</PreBuildCommands-0>
+      <PostBuildCommands-0>..\..\..\ssp\arch\ccrx\gensyms.exe "%OutputDir%\%ProjectName%.map"
+%WinDir%\cscript //Nologo ..\..\tools\update.js "%OutputDir%\%ProjectName%.mot" cfg1_out.srec
+..\..\..\ssp\cfg\cfg\cfg.exe --pass 2 --kernel ssp --api-table ..\..\..\ssp\kernel\ssp_kernel_api.csv --cfg1-def-table ..\..\..\ssp\kernel\ssp_kernel_def.csv --cfg1-def-table ..\..\..\ssp\syssvc\syssvc_def.csv --cfg1-def-table ..\..\..\ssp\arch\rx630_ccrx\prc_def.csv --cfg1-def-table ..\..\..\ssp\target\grsakura_ccrx\target_def.csv -I ..\..\..\ssp -I ..\..\..\ssp\arch -I ..\..\..\ssp\arch\rx630_ccrx -I ..\..\..\ssp\include -I ..\..\..\ssp\kernel -I ..\..\..\ssp\target\grsakura_ccrx --template-file ..\..\..\ssp\target\grsakura_ccrx\target.tf ..\dummy.cfg
+..\..\..\ssp\cfg\cfg\cfg.exe --pass 3 --kernel ssp --api-table ..\..\..\ssp\kernel\ssp_kernel_api.csv --cfg1-def-table ..\..\..\ssp\kernel\ssp_kernel_def.csv --cfg1-def-table ..\..\..\ssp\syssvc\syssvc_def.csv --cfg1-def-table ..\..\..\ssp\arch\rx630_ccrx\prc_def.csv --cfg1-def-table ..\..\..\ssp\target\grsakura_ccrx\target_def.csv -I ..\..\..\ssp -I ..\..\..\ssp\arch -I ..\..\..\ssp\arch\rx630_ccrx -I ..\..\..\ssp\include -I ..\..\..\ssp\kernel -I ..\..\..\ssp\target\grsakura_ccrx --template-file ..\..\..\ssp\target\grsakura_ccrx\target_offset.tf --rom-image cfg1_out.srec --symbol-table cfg1_out.syms ..\dummy.cfg
+%WinDir%\cscript //Nologo ..\..\tools\DefToEqu.js offset.h offset.inc
+%WinDir%\cscript //Nologo ..\..\tools\cmp_update.js kernel_cfg.c ..\kernel_cfg.c
+%WinDir%\cscript //Nologo ..\..\tools\cmp_update.js kernel_cfg.h ..\kernel_cfg.h
+%WinDir%\cscript //Nologo ..\..\tools\cmp_update.js kernel_cfg_asm.src ..\kernel_cfg_asm.src
+%WinDir%\cscript //Nologo ..\..\tools\cmp_update.js asm_config.inc ..\asm_config.inc
+%WinDir%\cscript //Nologo ..\..\tools\cmp_update.js offset.h ..\offset.h
+%WinDir%\cscript //Nologo ..\..\tools\cmp_update.js offset.inc ..\offset.inc
+</PostBuildCommands-0>
+      <GeneralOptionIsa-0>None</GeneralOptionIsa-0>
+      <GeneralOptionOutput-0>LoadModuleFile</GeneralOptionOutput-0>
+      <GeneralOptionPic-0>False</GeneralOptionPic-0>
+      <GeneralOptionSimultaneousBuild-0>True</GeneralOptionSimultaneousBuild-0>
+      <CompilerVersion-0>
+
+0</CompilerVersion-0>
+      <DependencyFileExistCheckingType-0>Rebuild</DependencyFileExistCheckingType-0>
+      <GeneralOptionCpu-0>RX600</GeneralOptionCpu-0>
+      <GeneralOptionOutputFolder-0>%BuildModeName%</GeneralOptionOutputFolder-0>
+      <GeneralOptionPid-0>None</GeneralOptionPid-0>
+      <EnsureCompatibilityOfPathAndLinkageOrder-0>False</EnsureCompatibilityOfPathAndLinkageOrder-0>
+      <GeneralOptionFpu-0>Fpu</GeneralOptionFpu-0>
+      <GeneralOptionNousePidRegister-0>True</GeneralOptionNousePidRegister-0>
+      <LinkOptionConvertFolder-0>%BuildModeName%</LinkOptionConvertFolder-0>
+      <GeneralOptionEndian-0>Little</GeneralOptionEndian-0>
+      <LinkOptionConvertFileName-0>%ProjectName%.mot</LinkOptionConvertFileName-0>
+      <AsmOptionGoptimize-0>False</AsmOptionGoptimize-0>
+      <GeneralOptionRound-0>Nearest</GeneralOptionRound-0>
+      <LinkOptionMultiConvertFileName-0 />
+      <AsmOptionListFile-0>False</AsmOptionListFile-0>
+      <COptionGoptimize-0>False</COptionGoptimize-0>
+      <GeneralOptionDenormalize-0>Off</GeneralOptionDenormalize-0>
+      <AsmOptionShowConditionals-0>False</AsmOptionShowConditionals-0>
+      <GeneralOptionDblSize-0>SinglePrecision</GeneralOptionDblSize-0>
+      <AsmOptionShowDefinitions-0>False</AsmOptionShowDefinitions-0>
+      <COptionListfile-0>False</COptionListfile-0>
+      <GeneralOptionIntToShort-0>False</GeneralOptionIntToShort-0>
+      <AsmOptionShowExpansions-0>False</AsmOptionShowExpansions-0>
+      <COptionShowSource-0>False</COptionShowSource-0>
+      <GeneralOptionSignedChar-0>Unsigned</GeneralOptionSignedChar-0>
+      <COptionShowConditionals-0>False</COptionShowConditionals-0>
+      <GeneralOptionOtherAdditionalOptions-0 />
+      <GeneralOptionSignedBitfield-0>Unsigned</GeneralOptionSignedBitfield-0>
+      <COptionShowDefinitions-0>False</COptionShowDefinitions-0>
+      <GeneralOptionAutoEnum-0>False</GeneralOptionAutoEnum-0>
+      <COptionShowExpansions-0>False</COptionShowExpansions-0>
+      <GeneralOptionBitOrder-0>Right</GeneralOptionBitOrder-0>
+      <GeneralOptionPack-0>False</GeneralOptionPack-0>
+      <GeneralOptionException-0>False</GeneralOptionException-0>
+      <GeneralOptionRtti-0>False</GeneralOptionRtti-0>
+      <GeneralOptionFintRegister-0>None</GeneralOptionFintRegister-0>
+      <GeneralOptionBranch-0>Branch24</GeneralOptionBranch-0>
+      <GeneralOptionBaseRomRegister-0>None</GeneralOptionBaseRomRegister-0>
+      <GeneralOptionBaseRamRegister-0>None</GeneralOptionBaseRamRegister-0>
+      <GeneralOptionBaseAddressAddress-0>00000000</GeneralOptionBaseAddressAddress-0>
+      <GeneralOptionBaseAddressRegister-0>None</GeneralOptionBaseAddressRegister-0>
+      <GeneralOptionPatch-0>None</GeneralOptionPatch-0>
+      <GeneralOptionSaveAcc-0>False</GeneralOptionSaveAcc-0>
+      <LastCompilerVersion-0>V2.02.00</LastCompilerVersion-0>
+    </Instance>
+    <Instance Guid="95a63257-4aa7-40c0-a74a-7991543b099b">
+      <COptionLangC-DefaultValue>C</COptionLangC-DefaultValue>
+      <COptionListfile-DefaultValue>False</COptionListfile-DefaultValue>
+      <COptionLogo-DefaultValue>False</COptionLogo-DefaultValue>
+      <COptionMisra2004-DefaultValue>None</COptionMisra2004-DefaultValue>
+      <COptionOptimize-DefaultValue>Level2</COptionOptimize-DefaultValue>
+      <COptionOutput-DefaultValue>Object</COptionOutput-DefaultValue>
+      <COptionOutputAssembly-DefaultValue>False</COptionOutputAssembly-DefaultValue>
+      <COptionGoptimize-DefaultValue>False</COptionGoptimize-DefaultValue>
+      <COptionLangCpp-DefaultValue>Cpp</COptionLangCpp-DefaultValue>
+      <COptionMisra2004RuleFile-DefaultValue />
+      <COptionOutputFolder-DefaultValue>%BuildModeName%</COptionOutputFolder-DefaultValue>
+      <COptionOutputPreprocessed-DefaultValue>None</COptionOutputPreprocessed-DefaultValue>
+      <COptionShowSource-DefaultValue>False</COptionShowSource-DefaultValue>
+      <COptionXcref-DefaultValue>False</COptionXcref-DefaultValue>
+      <COptionDebug-DefaultValue>True</COptionDebug-DefaultValue>
+      <COptionInclude-DefaultValue />
+      <COptionMisra2004RuleNumberApply-DefaultValue />
+      <COptionPreCompileCommands-DefaultValue />
+      <COptionShowConditionals-DefaultValue>False</COptionShowConditionals-DefaultValue>
+      <COptionSpeedAndSize-DefaultValue>Size</COptionSpeedAndSize-DefaultValue>
+      <COptionLoop-DefaultValue>Auto</COptionLoop-DefaultValue>
+      <COptionMisra2004RuleNumberIgnore-DefaultValue />
+      <COptionPostCompileCommands-DefaultValue />
+      <COptionSectionP-DefaultValue>P</COptionSectionP-DefaultValue>
+      <COptionShowDefinitions-DefaultValue>False</COptionShowDefinitions-DefaultValue>
+      <COptionSystemInclude-DefaultValue />
+      <COptionLoopValue-DefaultValue>2</COptionLoopValue-DefaultValue>
+      <COptionMisra2004RuleNumberRequiredAdd-DefaultValue />
+      <COptionOtherAdditionalOptions-DefaultValue />
+      <COptionPreinclude-DefaultValue />
+      <COptionSectionC-DefaultValue>C</COptionSectionC-DefaultValue>
+      <COptionShowExpansions-DefaultValue>False</COptionShowExpansions-DefaultValue>
+      <COptionCommandLine-DefaultValue>-isa=rxv1
+-include=..\..\..\ssp
+-include=..\..\..\ssp\arch
+-include=..\..\..\ssp\include
+-include=..\..\..\ssp\kernel
+-include=..\..\..\ssp\arch
+-include=..\..\..\ssp\syssvc
+-include=..\..\..\ssp\library
+-include=..\..\..\ssp\pdic
+-include=..\..\..\ssp\target\grsakura_ccrx
+-include=..
+-output=obj
+-obj_path=%BuildModeName%
+-debug
+-fpu
+-nologo
+</COptionCommandLine-DefaultValue>
+      <COptionDefine-DefaultValue />
+      <COptionInline-DefaultValue>Auto</COptionInline-DefaultValue>
+      <COptionMisra2004RuleNumberRequiredRemove-DefaultValue />
+      <COptionSectionD-DefaultValue>D</COptionSectionD-DefaultValue>
+      <COptionIgnoreFilesMisra-DefaultValue />
+      <COptionInlineValue-DefaultValue>100</COptionInlineValue-DefaultValue>
+      <COptionSectionB-DefaultValue>B</COptionSectionB-DefaultValue>
+      <COptionUndefine-DefaultValue />
+      <COptionCheckLanguageExtension-DefaultValue>False</COptionCheckLanguageExtension-DefaultValue>
+      <COptionFileInline-DefaultValue />
+      <COptionMessage-DefaultValue>False</COptionMessage-DefaultValue>
+      <COptionSectionL-DefaultValue>L</COptionSectionL-DefaultValue>
+      <COptionCase-DefaultValue>Auto</COptionCase-DefaultValue>
+      <COptionMessage2-DefaultValue>False</COptionMessage2-DefaultValue>
+      <COptionSectionW-DefaultValue>W</COptionSectionW-DefaultValue>
+      <COptionNoMessageErrorNumber-DefaultValue />
+      <COptionNostuffB-DefaultValue>False</COptionNostuffB-DefaultValue>
+      <COptionVolatile-DefaultValue>False</COptionVolatile-DefaultValue>
+      <COptionConstCopy-DefaultValue>Auto</COptionConstCopy-DefaultValue>
+      <COptionNoMessageErrorNumber2-DefaultValue />
+      <COptionNostuffD-DefaultValue>False</COptionNostuffD-DefaultValue>
+      <COptionChangeMessageInformation-DefaultValue>No</COptionChangeMessageInformation-DefaultValue>
+      <COptionConstDiv-DefaultValue>Auto</COptionConstDiv-DefaultValue>
+      <COptionNostuffC-DefaultValue>False</COptionNostuffC-DefaultValue>
+      <COptionChangeMessageInformationNumber-DefaultValue />
+      <COptionLibrary-DefaultValue>Intrinsic</COptionLibrary-DefaultValue>
+      <COptionNostuffW-DefaultValue>False</COptionNostuffW-DefaultValue>
+      <COptionChangeMessageInformationNumber2-DefaultValue />
+      <COptionInstalign-DefaultValue>Noinstalign</COptionInstalign-DefaultValue>
+      <COptionScope-DefaultValue>Auto</COptionScope-DefaultValue>
+      <COptionChangeMessageWarning-DefaultValue>No</COptionChangeMessageWarning-DefaultValue>
+      <COptionNouseDiv-DefaultValue>True</COptionNouseDiv-DefaultValue>
+      <COptionSchedule-DefaultValue>Auto</COptionSchedule-DefaultValue>
+      <COptionChangeMessageWarningNumber-DefaultValue />
+      <COptionMap-DefaultValue>NoMap</COptionMap-DefaultValue>
+      <COptionOutcode-DefaultValue>Sjis</COptionOutcode-DefaultValue>
+      <COptionChangeMessageWarningNumber2-DefaultValue />
+      <COptionIntermodule-DefaultValue>None</COptionIntermodule-DefaultValue>
+      <COptionApproxdiv-DefaultValue>False</COptionApproxdiv-DefaultValue>
+      <COptionChangeMessageError-DefaultValue>No</COptionChangeMessageError-DefaultValue>
+      <COptionChangeMessageErrorNumber-DefaultValue />
+      <COptionEnableRegister-DefaultValue>False</COptionEnableRegister-DefaultValue>
+      <COptionChangeMessageErrorNumber2-DefaultValue />
+      <COptionSimpleFloatConv-DefaultValue>False</COptionSimpleFloatConv-DefaultValue>
+      <COptionFileInlinePath-DefaultValue />
+      <COptionFpu-DefaultValue>Fpu</COptionFpu-DefaultValue>
+      <COptionAlias-DefaultValue>False</COptionAlias-DefaultValue>
+      <COptionComment-DefaultValue>False</COptionComment-DefaultValue>
+      <COptionCheck-DefaultValue>No</COptionCheck-DefaultValue>
+      <COptionFloatOrder-DefaultValue>False</COptionFloatOrder-DefaultValue>
+      <COptionIncode-DefaultValue>Sjis</COptionIncode-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8588050931703493217</TimeTagModified--0>
+      <COptionLangC-0>C99</COptionLangC-0>
+      <COptionListfile-0>False</COptionListfile-0>
+      <COptionLogo-0>False</COptionLogo-0>
+      <COptionMisra2004-0>None</COptionMisra2004-0>
+      <COptionOptimize-0>Level2</COptionOptimize-0>
+      <COptionOutput-0>Object</COptionOutput-0>
+      <COptionOutputAssembly-0>False</COptionOutputAssembly-0>
+      <COptionGoptimize-0>False</COptionGoptimize-0>
+      <COptionLangCpp-0>Cpp</COptionLangCpp-0>
+      <COptionMisra2004RuleFile-0 />
+      <COptionOutputFolder-0>%BuildModeName%</COptionOutputFolder-0>
+      <COptionOutputPreprocessed-0>None</COptionOutputPreprocessed-0>
+      <COptionShowSource-0>False</COptionShowSource-0>
+      <COptionXcref-0>False</COptionXcref-0>
+      <COptionDebug-0>True</COptionDebug-0>
+      <COptionInclude-0>..\..\..\ssp
+..\..\..\ssp\arch
+..\..\..\ssp\include
+..\..\..\ssp\kernel
+..\..\..\ssp\arch
+..\..\..\ssp\syssvc
+..\..\..\ssp\library
+..\..\..\ssp\pdic
+..\..\..\ssp\target\grsakura_ccrx
+..
+</COptionInclude-0>
+      <COptionMisra2004RuleNumberApply-0 />
+      <COptionPreCompileCommands-0 />
+      <COptionShowConditionals-0>False</COptionShowConditionals-0>
+      <COptionSpeedAndSize-0>Size</COptionSpeedAndSize-0>
+      <COptionLoop-0>Auto</COptionLoop-0>
+      <COptionMisra2004RuleNumberIgnore-0 />
+      <COptionPostCompileCommands-0 />
+      <COptionSectionP-0>P</COptionSectionP-0>
+      <COptionShowDefinitions-0>False</COptionShowDefinitions-0>
+      <COptionSystemInclude-0 />
+      <COptionLoopValue-0>2</COptionLoopValue-0>
+      <COptionMisra2004RuleNumberRequiredAdd-0 />
+      <COptionOtherAdditionalOptions-0 />
+      <COptionPreinclude-0 />
+      <COptionSectionC-0>C</COptionSectionC-0>
+      <COptionShowExpansions-0>False</COptionShowExpansions-0>
+      <COptionCommandLine-0>-isa=rxv1
+-include=..\..\..\ssp
+-include=..\..\..\ssp\arch
+-include=..\..\..\ssp\include
+-include=..\..\..\ssp\kernel
+-include=..\..\..\ssp\arch
+-include=..\..\..\ssp\syssvc
+-include=..\..\..\ssp\library
+-include=..\..\..\ssp\pdic
+-include=..\..\..\ssp\target\grsakura_ccrx
+-include=..
+-output=obj
+-obj_path=%BuildModeName%
+-debug
+-fpu
+-nologo
+</COptionCommandLine-0>
+      <COptionDefine-0 />
+      <COptionInline-0>Auto</COptionInline-0>
+      <COptionMisra2004RuleNumberRequiredRemove-0 />
+      <COptionSectionD-0>D</COptionSectionD-0>
+      <COptionIgnoreFilesMisra-0 />
+      <COptionInlineValue-0>100</COptionInlineValue-0>
+      <COptionSectionB-0>B</COptionSectionB-0>
+      <COptionUndefine-0 />
+      <COptionCheckLanguageExtension-0>False</COptionCheckLanguageExtension-0>
+      <COptionFileInline-0 />
+      <COptionMessage-0>False</COptionMessage-0>
+      <COptionSectionL-0>L</COptionSectionL-0>
+      <COptionCase-0>Auto</COptionCase-0>
+      <COptionSectionW-0>W</COptionSectionW-0>
+      <COptionNoMessageErrorNumber-0 />
+      <COptionNostuffB-0>False</COptionNostuffB-0>
+      <COptionVolatile-0>False</COptionVolatile-0>
+      <COptionConstCopy-0>Auto</COptionConstCopy-0>
+      <COptionNostuffD-0>False</COptionNostuffD-0>
+      <COptionChangeMessageInformation-0>No</COptionChangeMessageInformation-0>
+      <COptionConstDiv-0>Auto</COptionConstDiv-0>
+      <COptionNostuffC-0>False</COptionNostuffC-0>
+      <COptionChangeMessageInformationNumber-0 />
+      <COptionLibrary-0>Intrinsic</COptionLibrary-0>
+      <COptionNostuffW-0>False</COptionNostuffW-0>
+      <COptionInstalign-0>Noinstalign</COptionInstalign-0>
+      <COptionScope-0>Auto</COptionScope-0>
+      <COptionChangeMessageWarning-0>No</COptionChangeMessageWarning-0>
+      <COptionNouseDiv-0>True</COptionNouseDiv-0>
+      <COptionSchedule-0>Auto</COptionSchedule-0>
+      <COptionChangeMessageWarningNumber-0 />
+      <COptionMap-0>NoMap</COptionMap-0>
+      <COptionOutcode-0>Sjis</COptionOutcode-0>
+      <COptionIntermodule-0>None</COptionIntermodule-0>
+      <COptionApproxdiv-0>False</COptionApproxdiv-0>
+      <COptionChangeMessageError-0>No</COptionChangeMessageError-0>
+      <COptionChangeMessageErrorNumber-0 />
+      <COptionEnableRegister-0>False</COptionEnableRegister-0>
+      <COptionSimpleFloatConv-0>False</COptionSimpleFloatConv-0>
+      <COptionFileInlinePath-0 />
+      <COptionFpu-0>Fpu</COptionFpu-0>
+      <COptionAlias-0>False</COptionAlias-0>
+      <COptionComment-0>False</COptionComment-0>
+      <COptionCheck-0>No</COptionCheck-0>
+      <COptionFloatOrder-0>False</COptionFloatOrder-0>
+      <COptionIncode-0>Sjis</COptionIncode-0>
+    </Instance>
+    <Instance Guid="5ad1746c-d03e-4610-a91f-aaa4fb37bc10">
+      <AsmOptionChkpm-DefaultValue>False</AsmOptionChkpm-DefaultValue>
+      <AsmOptionGoptimize-DefaultValue>False</AsmOptionGoptimize-DefaultValue>
+      <AsmOptionInclude-DefaultValue />
+      <AsmOptionListFile-DefaultValue>False</AsmOptionListFile-DefaultValue>
+      <AsmOptionOutput-DefaultValue>%BuildModeName%</AsmOptionOutput-DefaultValue>
+      <AsmOptionChkfpu-DefaultValue>False</AsmOptionChkfpu-DefaultValue>
+      <AsmOptionDebug-DefaultValue>True</AsmOptionDebug-DefaultValue>
+      <AsmOptionShowConditionals-DefaultValue>False</AsmOptionShowConditionals-DefaultValue>
+      <AsmOptionSystemInclude-DefaultValue />
+      <AsmOptionChkdsp-DefaultValue>False</AsmOptionChkdsp-DefaultValue>
+      <AsmOptionDefine-DefaultValue />
+      <AsmOptionShowDefinitions-DefaultValue>False</AsmOptionShowDefinitions-DefaultValue>
+      <AsmOptionInCode-DefaultValue>SJIS</AsmOptionInCode-DefaultValue>
+      <AsmOptionLogo-DefaultValue>False</AsmOptionLogo-DefaultValue>
+      <AsmOptionShowExpansions-DefaultValue>False</AsmOptionShowExpansions-DefaultValue>
+      <AsmOptionPreAssembleCommands-DefaultValue />
+      <AsmOptionPostAssembleCommands-DefaultValue />
+      <AsmOptionOtherAdditionalOptions-DefaultValue />
+      <AsmOptionCommandLine-DefaultValue>-isa=rxv1
+-output=obj
+-obj_path=%BuildModeName%
+-debug
+-nologo
+</AsmOptionCommandLine-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8588053514216173186</TimeTagModified--0>
+      <AsmOptionChkpm-0>False</AsmOptionChkpm-0>
+      <AsmOptionGoptimize-0>False</AsmOptionGoptimize-0>
+      <AsmOptionInclude-0 />
+      <AsmOptionListFile-0>False</AsmOptionListFile-0>
+      <AsmOptionOutput-0>%BuildModeName%</AsmOptionOutput-0>
+      <AsmOptionChkfpu-0>False</AsmOptionChkfpu-0>
+      <AsmOptionDebug-0>True</AsmOptionDebug-0>
+      <AsmOptionShowConditionals-0>False</AsmOptionShowConditionals-0>
+      <AsmOptionSystemInclude-0 />
+      <AsmOptionChkdsp-0>False</AsmOptionChkdsp-0>
+      <AsmOptionDefine-0 />
+      <AsmOptionShowDefinitions-0>False</AsmOptionShowDefinitions-0>
+      <AsmOptionInCode-0>SJIS</AsmOptionInCode-0>
+      <AsmOptionLogo-0>False</AsmOptionLogo-0>
+      <AsmOptionShowExpansions-0>False</AsmOptionShowExpansions-0>
+      <AsmOptionPreAssembleCommands-0 />
+      <AsmOptionPostAssembleCommands-0 />
+      <AsmOptionOtherAdditionalOptions-0 />
+      <AsmOptionCommandLine-0>-isa=rxv1
+-output=obj
+-obj_path=%BuildModeName%
+-debug
+-nologo
+</AsmOptionCommandLine-0>
+    </Instance>
+    <Instance Guid="dbb16727-3e81-4169-956a-790355cab4a1">
+      <LinkOptionCpu-DefaultValue>False</LinkOptionCpu-DefaultValue>
+      <LinkOptionForm-DefaultValue>Absolute</LinkOptionForm-DefaultValue>
+      <LinkOptionFormConvert-DefaultValue>Stype</LinkOptionFormConvert-DefaultValue>
+      <LinkOptionInput-DefaultValue />
+      <LinkOptionListShow-DefaultValue>List</LinkOptionListShow-DefaultValue>
+      <LinkOptionOptimize-DefaultValue>None</LinkOptionOptimize-DefaultValue>
+      <LinkOptionStack-DefaultValue>False</LinkOptionStack-DefaultValue>
+      <LinkOptionStart-DefaultValue>B_1,R_1,B_2,R_2,B,R,SU,SI/04,PResetPRG/0FFFF8000,C_1,C_2,C,C$DSEC,C$BSEC,C$INIT,C$VTBL,C$VECT,D_1,D_2,D,P,PIntPRG,W_1,W_2,W,L/0FFFF8100,FIXEDVECT/0FFFFFFD0</LinkOptionStart-DefaultValue>
+      <LinkOptionCompress-DefaultValue>False</LinkOptionCompress-DefaultValue>
+      <LinkOptionCpuInformation-DefaultValue />
+      <LinkOptionDebug-DefaultValue>Debug</LinkOptionDebug-DefaultValue>
+      <LinkOptionFSymbol-DefaultValue />
+      <LinkOptionLibrary-DefaultValue />
+      <LinkOptionOptimizeSymbolDelete-DefaultValue>False</LinkOptionOptimizeSymbolDelete-DefaultValue>
+      <LinkOptionRecordH-DefaultValue>None</LinkOptionRecordH-DefaultValue>
+      <LinkOptionShowSymbol-DefaultValue>False</LinkOptionShowSymbol-DefaultValue>
+      <LinkOptionAlignedSection-DefaultValue />
+      <LinkOptionCpuStride-DefaultValue>False</LinkOptionCpuStride-DefaultValue>
+      <LinkOptionMemory-DefaultValue>False</LinkOptionMemory-DefaultValue>
+      <LinkOptionOptimizeSameCode-DefaultValue>False</LinkOptionOptimizeSameCode-DefaultValue>
+      <LinkOptionOutputFolder-DefaultValue>%BuildModeName%</LinkOptionOutputFolder-DefaultValue>
+      <LinkOptionRecordS-DefaultValue>None</LinkOptionRecordS-DefaultValue>
+      <LinkOptionShowReference-DefaultValue>False</LinkOptionShowReference-DefaultValue>
+      <LinkOptionSystemLibrary-DefaultValue />
+      <LinkOptionBinary-DefaultValue />
+      <LinkOptionChangeMessageInformation-DefaultValue>None</LinkOptionChangeMessageInformation-DefaultValue>
+      <LinkOptionContiguousSection-DefaultValue />
+      <LinkOptionDividedConvertFile-DefaultValue>False</LinkOptionDividedConvertFile-DefaultValue>
+      <LinkOptionOutputFileName-DefaultValue>%ProjectName%.abs</LinkOptionOutputFileName-DefaultValue>
+      <LinkOptionRom-DefaultValue />
+      <LinkOptionSameSize-DefaultValue>1E</LinkOptionSameSize-DefaultValue>
+      <LinkOptionShowXreference-DefaultValue>False</LinkOptionShowXreference-DefaultValue>
+      <LinkOptionChangeMessageInformationNumber-DefaultValue />
+      <LinkOptionConvertFolder-DefaultValue>%BuildModeName%</LinkOptionConvertFolder-DefaultValue>
+      <LinkOptionDefine-DefaultValue />
+      <LinkOptionMap-DefaultValue>False</LinkOptionMap-DefaultValue>
+      <LinkOptionOptimizeShortFormat-DefaultValue>False</LinkOptionOptimizeShortFormat-DefaultValue>
+      <LinkOptionShowTotalSize-DefaultValue>False</LinkOptionShowTotalSize-DefaultValue>
+      <LinkOptionChangeMessageWarning-DefaultValue>None</LinkOptionChangeMessageWarning-DefaultValue>
+      <LinkOptionConvertFileName-DefaultValue>%ProjectName%.mot</LinkOptionConvertFileName-DefaultValue>
+      <LinkOptionEntry-DefaultValue>False</LinkOptionEntry-DefaultValue>
+      <LinkOptionMessage-DefaultValue>NoMessage</LinkOptionMessage-DefaultValue>
+      <LinkOptionOptimizeBranch-DefaultValue>False</LinkOptionOptimizeBranch-DefaultValue>
+      <LinkOptionShowVector-DefaultValue>False</LinkOptionShowVector-DefaultValue>
+      <LinkOptionChangeMessageWarningNumber-DefaultValue />
+      <LinkOptionEntryPoint-DefaultValue />
+      <LinkOptionMultiConvertFileName-DefaultValue />
+      <LinkOptionNoMessageErrorNumber-DefaultValue />
+      <LinkOptionSymbolForbid-DefaultValue />
+      <LinkOptionChangeMessageError-DefaultValue>None</LinkOptionChangeMessageError-DefaultValue>
+      <LinkOptionNoPrelink-DefaultValue>Auto</LinkOptionNoPrelink-DefaultValue>
+      <LinkOptionPadding-DefaultValue>False</LinkOptionPadding-DefaultValue>
+      <LinkOptionSameCodeForbid-DefaultValue />
+      <LinkOptionSpace-DefaultValue>None</LinkOptionSpace-DefaultValue>
+      <LinkOptionChangeMessageErrorNumber-DefaultValue />
+      <LinkOptionSectionForbid-DefaultValue />
+      <LinkOptionSpaceValue-DefaultValue>FF</LinkOptionSpaceValue-DefaultValue>
+      <LinkOptionVectN-DefaultValue />
+      <LinkOptionAbsoluteForbid-DefaultValue />
+      <LinkOptionByteCount-DefaultValue>False</LinkOptionByteCount-DefaultValue>
+      <LinkOptionHide-DefaultValue>False</LinkOptionHide-DefaultValue>
+      <LinkOptionVect-DefaultValue />
+      <LinkOptionByteCountValue-DefaultValue>FF</LinkOptionByteCountValue-DefaultValue>
+      <LinkOptionJumpEntriesForPic-DefaultValue>False</LinkOptionJumpEntriesForPic-DefaultValue>
+      <LinkOptionTotalSize-DefaultValue>False</LinkOptionTotalSize-DefaultValue>
+      <LinkOptionCrc-DefaultValue>None</LinkOptionCrc-DefaultValue>
+      <LinkOptionJumpEntriesForPicSectionName-DefaultValue />
+      <LinkOptionLogo-DefaultValue>False</LinkOptionLogo-DefaultValue>
+      <LinkOptionCrcOutputAddress-DefaultValue>0</LinkOptionCrcOutputAddress-DefaultValue>
+      <LinkOptionPreLinkCommands-DefaultValue />
+      <LinkOptionCrcCalculationRange-DefaultValue />
+      <LinkOptionPostLinkCommands-DefaultValue />
+      <LinkOptionOtherAdditionalOptionsForLoadModule-DefaultValue />
+      <LinkOptionS9-DefaultValue>False</LinkOptionS9-DefaultValue>
+      <LinkOptionOtherAdditionalOptionsForConvertFile-DefaultValue />
+      <LinkOptionCommandLine-DefaultValue>-noprelink
+-output=%BuildModeName%\%ProjectName%.abs
+-list=%BuildModeName%\%ProjectName%.map
+-show=symbol
+-nooptimize
+-start=B_1,R_1,B_2,R_2,B,R,SU,SI/04,PResetPRG/0FFF80000,C_1,C_2,C,C$DSEC,C$BSEC,C$INIT,C$VTBL,C$VECT,D_1,D_2,D,P,PIntPRG,W_1,W_2,W,L/0FFF80100,FIXEDVECT/0FFFFFFD0
+-nologo
+-exit
+</LinkOptionCommandLine-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8587957448306287726</TimeTagModified--0>
+      <LinkOptionCpu-0>False</LinkOptionCpu-0>
+      <LinkOptionForm-0>Absolute</LinkOptionForm-0>
+      <LinkOptionFormConvert-0>Stype</LinkOptionFormConvert-0>
+      <LinkOptionInput-0 />
+      <LinkOptionListShow-0>List</LinkOptionListShow-0>
+      <LinkOptionOptimize-0>None</LinkOptionOptimize-0>
+      <LinkOptionStack-0>False</LinkOptionStack-0>
+      <LinkOptionStart-0>B_1,R_1,B_2,R_2,B,R,SU,SI/04,PResetPRG/0FFF80000,C_1,C_2,C,C$DSEC,C$BSEC,C$INIT,C$VTBL,C$VECT,D_1,D_2,D,P,PIntPRG,W_1,W_2,W,L/0FFF80100,FIXEDVECT/0FFFFFFD0</LinkOptionStart-0>
+      <LinkOptionCompress-0>False</LinkOptionCompress-0>
+      <LinkOptionCpuInformation-0 />
+      <LinkOptionDebug-0>Debug</LinkOptionDebug-0>
+      <LinkOptionFSymbol-0 />
+      <LinkOptionLibrary-0 />
+      <LinkOptionOptimizeSymbolDelete-0>False</LinkOptionOptimizeSymbolDelete-0>
+      <LinkOptionRecordH-0>None</LinkOptionRecordH-0>
+      <LinkOptionShowSymbol-0>True</LinkOptionShowSymbol-0>
+      <LinkOptionAlignedSection-0 />
+      <LinkOptionCpuStride-0>False</LinkOptionCpuStride-0>
+      <LinkOptionMemory-0>False</LinkOptionMemory-0>
+      <LinkOptionOptimizeSameCode-0>False</LinkOptionOptimizeSameCode-0>
+      <LinkOptionOutputFolder-0>%BuildModeName%</LinkOptionOutputFolder-0>
+      <LinkOptionRecordS-0>None</LinkOptionRecordS-0>
+      <LinkOptionShowReference-0>False</LinkOptionShowReference-0>
+      <LinkOptionSystemLibrary-0 />
+      <LinkOptionBinary-0 />
+      <LinkOptionChangeMessageInformation-0>None</LinkOptionChangeMessageInformation-0>
+      <LinkOptionContiguousSection-0 />
+      <LinkOptionDividedConvertFile-0>False</LinkOptionDividedConvertFile-0>
+      <LinkOptionOutputFileName-0>%ProjectName%.abs</LinkOptionOutputFileName-0>
+      <LinkOptionRom-0 />
+      <LinkOptionSameSize-0>1E</LinkOptionSameSize-0>
+      <LinkOptionShowXreference-0>False</LinkOptionShowXreference-0>
+      <LinkOptionChangeMessageInformationNumber-0 />
+      <LinkOptionConvertFolder-0>%BuildModeName%</LinkOptionConvertFolder-0>
+      <LinkOptionDefine-0 />
+      <LinkOptionMap-0>False</LinkOptionMap-0>
+      <LinkOptionOptimizeShortFormat-0>False</LinkOptionOptimizeShortFormat-0>
+      <LinkOptionShowTotalSize-0>False</LinkOptionShowTotalSize-0>
+      <LinkOptionChangeMessageWarning-0>None</LinkOptionChangeMessageWarning-0>
+      <LinkOptionConvertFileName-0>%ProjectName%.mot</LinkOptionConvertFileName-0>
+      <LinkOptionEntry-0>False</LinkOptionEntry-0>
+      <LinkOptionMessage-0>NoMessage</LinkOptionMessage-0>
+      <LinkOptionOptimizeBranch-0>False</LinkOptionOptimizeBranch-0>
+      <LinkOptionShowVector-0>False</LinkOptionShowVector-0>
+      <LinkOptionChangeMessageWarningNumber-0 />
+      <LinkOptionEntryPoint-0 />
+      <LinkOptionMultiConvertFileName-0 />
+      <LinkOptionNoMessageErrorNumber-0 />
+      <LinkOptionSymbolForbid-0 />
+      <LinkOptionChangeMessageError-0>None</LinkOptionChangeMessageError-0>
+      <LinkOptionNoPrelink-0>Auto</LinkOptionNoPrelink-0>
+      <LinkOptionPadding-0>False</LinkOptionPadding-0>
+      <LinkOptionSameCodeForbid-0 />
+      <LinkOptionSpace-0>None</LinkOptionSpace-0>
+      <LinkOptionChangeMessageErrorNumber-0 />
+      <LinkOptionSectionForbid-0 />
+      <LinkOptionSpaceValue-0>FF</LinkOptionSpaceValue-0>
+      <LinkOptionVectN-0 />
+      <LinkOptionAbsoluteForbid-0 />
+      <LinkOptionByteCount-0>False</LinkOptionByteCount-0>
+      <LinkOptionHide-0>False</LinkOptionHide-0>
+      <LinkOptionVect-0 />
+      <LinkOptionByteCountValue-0>FF</LinkOptionByteCountValue-0>
+      <LinkOptionJumpEntriesForPic-0>False</LinkOptionJumpEntriesForPic-0>
+      <LinkOptionTotalSize-0>False</LinkOptionTotalSize-0>
+      <LinkOptionCrc-0>None</LinkOptionCrc-0>
+      <LinkOptionJumpEntriesForPicSectionName-0 />
+      <LinkOptionLogo-0>False</LinkOptionLogo-0>
+      <LinkOptionCrcOutputAddress-0>0</LinkOptionCrcOutputAddress-0>
+      <LinkOptionPreLinkCommands-0 />
+      <LinkOptionCrcCalculationRange-0 />
+      <LinkOptionPostLinkCommands-0 />
+      <LinkOptionOtherAdditionalOptionsForLoadModule-0 />
+      <LinkOptionS9-0>False</LinkOptionS9-0>
+      <LinkOptionOtherAdditionalOptionsForConvertFile-0 />
+      <LinkOptionCommandLine-0>-noprelink
+-output=%BuildModeName%\%ProjectName%.abs
+-list=%BuildModeName%\%ProjectName%.map
+-show=symbol
+-nooptimize
+-start=B_1,R_1,B_2,R_2,B,R,SU,SI/04,PResetPRG/0FFF80000,C_1,C_2,C,C$DSEC,C$BSEC,C$INIT,C$VTBL,C$VECT,D_1,D_2,D,P,PIntPRG,W_1,W_2,W,L/0FFF80100,FIXEDVECT/0FFFFFFD0
+-nologo
+-exit
+</LinkOptionCommandLine-0>
+    </Instance>
+    <Instance Guid="df74c69e-635e-42d9-845e-14128ba4d48a">
+      <HexOptionForm-DefaultValue>Stype</HexOptionForm-DefaultValue>
+      <HexOptionOutput-DefaultValue>True</HexOptionOutput-DefaultValue>
+      <LinkOptionOtherAdditionalOptionsForConvertFile-DefaultValue />
+      <HexOptionCommandLine-DefaultValue>-end
+-input=%BuildModeName%\%ProjectName%.abs
+-form=stype
+-output=%BuildModeName%\%ProjectName%.mot
+-exit
+</HexOptionCommandLine-DefaultValue>
+      <LinkOptionConvertFolder-DefaultValue>%BuildModeName%</LinkOptionConvertFolder-DefaultValue>
+      <LinkOptionRecordH-DefaultValue>None</LinkOptionRecordH-DefaultValue>
+      <LinkOptionConvertFileName-DefaultValue>%ProjectName%.mot</LinkOptionConvertFileName-DefaultValue>
+      <LinkOptionRecordS-DefaultValue>None</LinkOptionRecordS-DefaultValue>
+      <LinkOptionMultiConvertFileName-DefaultValue />
+      <LinkOptionSpace-DefaultValue>None</LinkOptionSpace-DefaultValue>
+      <LinkOptionSpaceValue-DefaultValue>FF</LinkOptionSpaceValue-DefaultValue>
+      <LinkOptionByteCount-DefaultValue>False</LinkOptionByteCount-DefaultValue>
+      <LinkOptionByteCountValue-DefaultValue>FF</LinkOptionByteCountValue-DefaultValue>
+      <LinkOptionCrc-DefaultValue>None</LinkOptionCrc-DefaultValue>
+      <LinkOptionCrcOutputAddress-DefaultValue>0</LinkOptionCrcOutputAddress-DefaultValue>
+      <LinkOptionCrcCalculationRange-DefaultValue />
+      <LinkOptionS9-DefaultValue>False</LinkOptionS9-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8588053514216073187</TimeTagModified--0>
+      <HexOptionForm-0>Stype</HexOptionForm-0>
+      <HexOptionOutput-0>True</HexOptionOutput-0>
+      <LinkOptionOtherAdditionalOptionsForConvertFile-0 />
+      <HexOptionCommandLine-0>-end
+-input=%BuildModeName%\%ProjectName%.abs
+-form=stype
+-output=%BuildModeName%\%ProjectName%.mot
+-exit
+</HexOptionCommandLine-0>
+      <LinkOptionConvertFolder-0>%BuildModeName%</LinkOptionConvertFolder-0>
+      <LinkOptionRecordH-0>None</LinkOptionRecordH-0>
+      <LinkOptionConvertFileName-0>%ProjectName%.mot</LinkOptionConvertFileName-0>
+      <LinkOptionRecordS-0>None</LinkOptionRecordS-0>
+      <LinkOptionMultiConvertFileName-0 />
+      <LinkOptionSpace-0>None</LinkOptionSpace-0>
+      <LinkOptionSpaceValue-0>FF</LinkOptionSpaceValue-0>
+      <LinkOptionByteCount-0>False</LinkOptionByteCount-0>
+      <LinkOptionByteCountValue-0>FF</LinkOptionByteCountValue-0>
+      <LinkOptionCrc-0>None</LinkOptionCrc-0>
+      <LinkOptionCrcOutputAddress-0>0</LinkOptionCrcOutputAddress-0>
+      <LinkOptionCrcCalculationRange-0 />
+      <LinkOptionS9-0>False</LinkOptionS9-0>
+    </Instance>
+    <Instance Guid="fff50d2e-74da-44ea-90a8-c47756029e83">
+      <LibOptionForm-DefaultValue>LibraryU</LibOptionForm-DefaultValue>
+      <LibOptionInput-DefaultValue />
+      <LibOptionListShow-DefaultValue>None</LibOptionListShow-DefaultValue>
+      <LibOptionMemory-DefaultValue>False</LibOptionMemory-DefaultValue>
+      <LibOptionChangeMessageInformation-DefaultValue>None</LibOptionChangeMessageInformation-DefaultValue>
+      <LibOptionDebug-DefaultValue>Debug</LibOptionDebug-DefaultValue>
+      <LibOptionLibrary-DefaultValue />
+      <LibOptionShowSymbol-DefaultValue>False</LibOptionShowSymbol-DefaultValue>
+      <LibOptionChangeMessageInformationNumber-DefaultValue />
+      <LibOptionOutputFolder-DefaultValue>%BuildModeName%</LibOptionOutputFolder-DefaultValue>
+      <LibOptionShowSection-DefaultValue>False</LibOptionShowSection-DefaultValue>
+      <LibOptionSystemLibrary-DefaultValue />
+      <LibOptionBinary-DefaultValue />
+      <LibOptionChangeMessageWarning-DefaultValue>None</LibOptionChangeMessageWarning-DefaultValue>
+      <LibOptionOutputFileName-DefaultValue>%ProjectName%.lib</LibOptionOutputFileName-DefaultValue>
+      <LibOptionShowXreference-DefaultValue>False</LibOptionShowXreference-DefaultValue>
+      <LibOptionChangeMessageWarningNumber-DefaultValue />
+      <LibOptionMessage-DefaultValue>NoMessage</LibOptionMessage-DefaultValue>
+      <LibOptionNoPrelink-DefaultValue>Auto</LibOptionNoPrelink-DefaultValue>
+      <LibOptionShowTotalSize-DefaultValue>False</LibOptionShowTotalSize-DefaultValue>
+      <LibOptionChangeMessageError-DefaultValue>None</LibOptionChangeMessageError-DefaultValue>
+      <LibOptionNoMessageErrorNumber-DefaultValue />
+      <LibOptionShowVector-DefaultValue>False</LibOptionShowVector-DefaultValue>
+      <LibOptionChangeMessageErrorNumber-DefaultValue />
+      <LibOptionHide-DefaultValue>False</LibOptionHide-DefaultValue>
+      <LibOptionTotalSize-DefaultValue>False</LibOptionTotalSize-DefaultValue>
+      <LibOptionLogo-DefaultValue>False</LibOptionLogo-DefaultValue>
+      <LibOptionPreLibrarianCommands-DefaultValue />
+      <LibOptionPostLibrarianCommands-DefaultValue />
+      <LibOptionOtherAdditionalOptions-DefaultValue />
+      <LibOptionCommandLine-DefaultValue />
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8588053514216073187</TimeTagModified--0>
+      <LibOptionForm-0>LibraryU</LibOptionForm-0>
+      <LibOptionInput-0 />
+      <LibOptionListShow-0>None</LibOptionListShow-0>
+      <LibOptionMemory-0>False</LibOptionMemory-0>
+      <LibOptionChangeMessageInformation-0>None</LibOptionChangeMessageInformation-0>
+      <LibOptionDebug-0>Debug</LibOptionDebug-0>
+      <LibOptionLibrary-0 />
+      <LibOptionShowSymbol-0>False</LibOptionShowSymbol-0>
+      <LibOptionChangeMessageInformationNumber-0 />
+      <LibOptionOutputFolder-0>%BuildModeName%</LibOptionOutputFolder-0>
+      <LibOptionShowSection-0>False</LibOptionShowSection-0>
+      <LibOptionSystemLibrary-0 />
+      <LibOptionBinary-0 />
+      <LibOptionChangeMessageWarning-0>None</LibOptionChangeMessageWarning-0>
+      <LibOptionOutputFileName-0>%ProjectName%.lib</LibOptionOutputFileName-0>
+      <LibOptionShowXreference-0>False</LibOptionShowXreference-0>
+      <LibOptionChangeMessageWarningNumber-0 />
+      <LibOptionMessage-0>NoMessage</LibOptionMessage-0>
+      <LibOptionNoPrelink-0>Auto</LibOptionNoPrelink-0>
+      <LibOptionShowTotalSize-0>False</LibOptionShowTotalSize-0>
+      <LibOptionChangeMessageError-0>None</LibOptionChangeMessageError-0>
+      <LibOptionNoMessageErrorNumber-0 />
+      <LibOptionShowVector-0>False</LibOptionShowVector-0>
+      <LibOptionChangeMessageErrorNumber-0 />
+      <LibOptionHide-0>False</LibOptionHide-0>
+      <LibOptionTotalSize-0>False</LibOptionTotalSize-0>
+      <LibOptionLogo-0>False</LibOptionLogo-0>
+      <LibOptionPreLibrarianCommands-0 />
+      <LibOptionPostLibrarianCommands-0 />
+      <LibOptionOtherAdditionalOptions-0 />
+      <LibOptionCommandLine-0 />
+    </Instance>
+    <Instance Guid="9cb0ade0-b3cb-4e21-823c-290b5fdb5f1e">
+      <LbgOptionLanguage-DefaultValue>C</LbgOptionLanguage-DefaultValue>
+      <LbgOptionLibraryMode-DefaultValue>MakeOptionChanged</LbgOptionLibraryMode-DefaultValue>
+      <LbgOptionLogo-DefaultValue>False</LbgOptionLogo-DefaultValue>
+      <LbgOptionOptimize-DefaultValue>Level2</LbgOptionOptimize-DefaultValue>
+      <LbgOptionOutputFolder-DefaultValue>%BuildModeName%</LbgOptionOutputFolder-DefaultValue>
+      <LbgOptionGoptimize-DefaultValue>False</LbgOptionGoptimize-DefaultValue>
+      <LbgOptionHead-DefaultValue>Custom</LbgOptionHead-DefaultValue>
+      <LbgOptionOutputFileName-DefaultValue>%ProjectName%.lib</LbgOptionOutputFileName-DefaultValue>
+      <LbgOptionPreLibraryGenerateCommands-DefaultValue />
+      <LbgOptionFunctionalCutdown-DefaultValue>None</LbgOptionFunctionalCutdown-DefaultValue>
+      <LbgOptionHeadRuntime-DefaultValue>True</LbgOptionHeadRuntime-DefaultValue>
+      <LbgOptionPostLibraryGenerateCommands-DefaultValue />
+      <LbgOptionSpeedAndSize-DefaultValue>Size</LbgOptionSpeedAndSize-DefaultValue>
+      <LbgOptionHeadCtypeH-DefaultValue>False</LbgOptionHeadCtypeH-DefaultValue>
+      <LbgOptionLoop-DefaultValue>Auto</LbgOptionLoop-DefaultValue>
+      <LbgOptionOtherAdditionalOptions-DefaultValue />
+      <LbgOptionReent-DefaultValue>False</LbgOptionReent-DefaultValue>
+      <LbgOptionCommandLine-DefaultValue />
+      <LbgOptionHeadMathH-DefaultValue>False</LbgOptionHeadMathH-DefaultValue>
+      <LbgOptionLoopValue-DefaultValue>2</LbgOptionLoopValue-DefaultValue>
+      <LbgOptionSectionP-DefaultValue>P</LbgOptionSectionP-DefaultValue>
+      <LbgOptionHeadMathfH-DefaultValue>False</LbgOptionHeadMathfH-DefaultValue>
+      <LbgOptionInline-DefaultValue>Auto</LbgOptionInline-DefaultValue>
+      <LbgOptionSectionC-DefaultValue>C</LbgOptionSectionC-DefaultValue>
+      <LbgOptionHeadStdargH-DefaultValue>False</LbgOptionHeadStdargH-DefaultValue>
+      <LbgOptionInlineValue-DefaultValue>100</LbgOptionInlineValue-DefaultValue>
+      <LbgOptionSectionD-DefaultValue>D</LbgOptionSectionD-DefaultValue>
+      <LbgOptionFileInline-DefaultValue />
+      <LbgOptionHeadStdioH-DefaultValue>True</LbgOptionHeadStdioH-DefaultValue>
+      <LbgOptionSectionB-DefaultValue>B</LbgOptionSectionB-DefaultValue>
+      <LbgOptionCase-DefaultValue>Auto</LbgOptionCase-DefaultValue>
+      <LbgOptionHeadStdlibH-DefaultValue>True</LbgOptionHeadStdlibH-DefaultValue>
+      <LbgOptionSectionL-DefaultValue>L</LbgOptionSectionL-DefaultValue>
+      <LbgOptionHeadStringH-DefaultValue>True</LbgOptionHeadStringH-DefaultValue>
+      <LbgOptionSectionW-DefaultValue>W</LbgOptionSectionW-DefaultValue>
+      <LbgOptionVolatile-DefaultValue>False</LbgOptionVolatile-DefaultValue>
+      <LbgOptionConstCopy-DefaultValue>Auto</LbgOptionConstCopy-DefaultValue>
+      <LbgOptionHeadIos-DefaultValue>False</LbgOptionHeadIos-DefaultValue>
+      <LbgOptionNostuffB-DefaultValue>False</LbgOptionNostuffB-DefaultValue>
+      <LbgOptionConstDiv-DefaultValue>Auto</LbgOptionConstDiv-DefaultValue>
+      <LbgOptionHeadNew-DefaultValue>True</LbgOptionHeadNew-DefaultValue>
+      <LbgOptionNostuffD-DefaultValue>False</LbgOptionNostuffD-DefaultValue>
+      <LbgOptionHeadComplex-DefaultValue>False</LbgOptionHeadComplex-DefaultValue>
+      <LbgOptionLibrary-DefaultValue>Intrinsic</LbgOptionLibrary-DefaultValue>
+      <LbgOptionNostuffC-DefaultValue>False</LbgOptionNostuffC-DefaultValue>
+      <LbgOptionHeadString-DefaultValue>False</LbgOptionHeadString-DefaultValue>
+      <LbgOptionNostuffW-DefaultValue>False</LbgOptionNostuffW-DefaultValue>
+      <LbgOptionScope-DefaultValue>Auto</LbgOptionScope-DefaultValue>
+      <LbgOptionHeadComplexH-DefaultValue>False</LbgOptionHeadComplexH-DefaultValue>
+      <LbgOptionInstalign-DefaultValue>Noinstalign</LbgOptionInstalign-DefaultValue>
+      <LbgOptionSchedule-DefaultValue>Auto</LbgOptionSchedule-DefaultValue>
+      <LbgOptionApproxdiv-DefaultValue>False</LbgOptionApproxdiv-DefaultValue>
+      <LbgOptionHeadFenvH-DefaultValue>False</LbgOptionHeadFenvH-DefaultValue>
+      <LbgOptionNouseDiv-DefaultValue>True</LbgOptionNouseDiv-DefaultValue>
+      <LbgOptionEnableRegister-DefaultValue>False</LbgOptionEnableRegister-DefaultValue>
+      <LbgOptionHeadInttypesH-DefaultValue>False</LbgOptionHeadInttypesH-DefaultValue>
+      <LbgOptionHeadWcharH-DefaultValue>False</LbgOptionHeadWcharH-DefaultValue>
+      <LbgOptionSimpleFloatConv-DefaultValue>False</LbgOptionSimpleFloatConv-DefaultValue>
+      <LbgOptionFpu-DefaultValue>Fpu</LbgOptionFpu-DefaultValue>
+      <LbgOptionHeadWctypeH-DefaultValue>False</LbgOptionHeadWctypeH-DefaultValue>
+      <LbgOptionFloatOrder-DefaultValue>False</LbgOptionFloatOrder-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8588053514216073187</TimeTagModified--0>
+      <LbgOptionLanguage-0>C</LbgOptionLanguage-0>
+      <LbgOptionLibraryMode-0>MakeOptionChanged</LbgOptionLibraryMode-0>
+      <LbgOptionLogo-0>False</LbgOptionLogo-0>
+      <LbgOptionOptimize-0>Level2</LbgOptionOptimize-0>
+      <LbgOptionOutputFolder-0>%BuildModeName%</LbgOptionOutputFolder-0>
+      <LbgOptionGoptimize-0>False</LbgOptionGoptimize-0>
+      <LbgOptionHead-0>Custom</LbgOptionHead-0>
+      <LbgOptionOutputFileName-0>%ProjectName%.lib</LbgOptionOutputFileName-0>
+      <LbgOptionPreLibraryGenerateCommands-0 />
+      <LbgOptionFunctionalCutdown-0>None</LbgOptionFunctionalCutdown-0>
+      <LbgOptionPostLibraryGenerateCommands-0 />
+      <LbgOptionSpeedAndSize-0>Size</LbgOptionSpeedAndSize-0>
+      <LbgOptionHeadCtypeH-0>False</LbgOptionHeadCtypeH-0>
+      <LbgOptionLoop-0>Auto</LbgOptionLoop-0>
+      <LbgOptionOtherAdditionalOptions-0 />
+      <LbgOptionReent-0>False</LbgOptionReent-0>
+      <LbgOptionCommandLine-0 />
+      <LbgOptionHeadMathH-0>False</LbgOptionHeadMathH-0>
+      <LbgOptionLoopValue-0>2</LbgOptionLoopValue-0>
+      <LbgOptionSectionP-0>P</LbgOptionSectionP-0>
+      <LbgOptionHeadMathfH-0>False</LbgOptionHeadMathfH-0>
+      <LbgOptionInline-0>Auto</LbgOptionInline-0>
+      <LbgOptionSectionC-0>C</LbgOptionSectionC-0>
+      <LbgOptionHeadStdargH-0>False</LbgOptionHeadStdargH-0>
+      <LbgOptionInlineValue-0>100</LbgOptionInlineValue-0>
+      <LbgOptionSectionD-0>D</LbgOptionSectionD-0>
+      <LbgOptionFileInline-0 />
+      <LbgOptionHeadStdioH-0>True</LbgOptionHeadStdioH-0>
+      <LbgOptionSectionB-0>B</LbgOptionSectionB-0>
+      <LbgOptionCase-0>Auto</LbgOptionCase-0>
+      <LbgOptionHeadStdlibH-0>True</LbgOptionHeadStdlibH-0>
+      <LbgOptionSectionL-0>L</LbgOptionSectionL-0>
+      <LbgOptionHeadStringH-0>True</LbgOptionHeadStringH-0>
+      <LbgOptionSectionW-0>W</LbgOptionSectionW-0>
+      <LbgOptionVolatile-0>False</LbgOptionVolatile-0>
+      <LbgOptionConstCopy-0>Auto</LbgOptionConstCopy-0>
+      <LbgOptionHeadIos-0>False</LbgOptionHeadIos-0>
+      <LbgOptionNostuffB-0>False</LbgOptionNostuffB-0>
+      <LbgOptionConstDiv-0>Auto</LbgOptionConstDiv-0>
+      <LbgOptionHeadNew-0>True</LbgOptionHeadNew-0>
+      <LbgOptionNostuffD-0>False</LbgOptionNostuffD-0>
+      <LbgOptionHeadComplex-0>False</LbgOptionHeadComplex-0>
+      <LbgOptionLibrary-0>Intrinsic</LbgOptionLibrary-0>
+      <LbgOptionNostuffC-0>False</LbgOptionNostuffC-0>
+      <LbgOptionHeadString-0>False</LbgOptionHeadString-0>
+      <LbgOptionNostuffW-0>False</LbgOptionNostuffW-0>
+      <LbgOptionScope-0>Auto</LbgOptionScope-0>
+      <LbgOptionHeadComplexH-0>False</LbgOptionHeadComplexH-0>
+      <LbgOptionInstalign-0>Noinstalign</LbgOptionInstalign-0>
+      <LbgOptionSchedule-0>Auto</LbgOptionSchedule-0>
+      <LbgOptionApproxdiv-0>False</LbgOptionApproxdiv-0>
+      <LbgOptionHeadFenvH-0>False</LbgOptionHeadFenvH-0>
+      <LbgOptionNouseDiv-0>True</LbgOptionNouseDiv-0>
+      <LbgOptionEnableRegister-0>False</LbgOptionEnableRegister-0>
+      <LbgOptionHeadInttypesH-0>False</LbgOptionHeadInttypesH-0>
+      <LbgOptionHeadWcharH-0>False</LbgOptionHeadWcharH-0>
+      <LbgOptionSimpleFloatConv-0>False</LbgOptionSimpleFloatConv-0>
+      <LbgOptionFpu-0>Fpu</LbgOptionFpu-0>
+      <LbgOptionHeadWctypeH-0>False</LbgOptionHeadWctypeH-0>
+      <LbgOptionFloatOrder-0>False</LbgOptionFloatOrder-0>
+    </Instance>
+    <Instance Guid="2663a3a4-1aa9-423b-8114-929eeb0f323e">
+      <ItemAddTime>635318851240186844</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="a7be515f-f007-45ed-9059-4e1500c0f74d">
+      <TimeTagModified-SourceItem0--0>-8588053509614588964</TimeTagModified-SourceItem0--0>
+      <SourceItem0-IsLockedByUser>False</SourceItem0-IsLockedByUser>
+      <SourceItem0-BuildingTarget-0>True</SourceItem0-BuildingTarget-0>
+      <SourceItem0-IndividualCompileOption-0>False</SourceItem0-IndividualCompileOption-0>
+    </Instance>
+  </Class>
+  <Class Guid="44fa27c9-0aa0-4297-bd3b-2c5c5bdb8881">
+    <Instance Guid="44fa27c9-0aa0-4297-bd3b-2c5c5bdb8881">
+      <IsLibraryMode>False</IsLibraryMode>
+      <StartUpCategoryItem>00000000-0000-0000-0000-000000000000</StartUpCategoryItem>
+    </Instance>
+  </Class>
+  <Class Guid="a29a09ee-92c3-4ce7-9586-a1b058043f92">
+    <Instance Guid="a29a09ee-92c3-4ce7-9586-a1b058043f92">
+      <ProjectGeneratr-GeneratedFile0 />
+    </Instance>
+  </Class>
+  <Class Guid="31a86ad3-37bd-4846-aff2-e08abdc00197">
+    <Instance Guid="31a86ad3-37bd-4846-aff2-e08abdc00197">
+      <DeviceNameOnCreateStartup>R5F563NBDxFP</DeviceNameOnCreateStartup>
+    </Instance>
+  </Class>
+  <Class Guid="8b5af363-dcc2-48e6-919c-6cdb80d50173">
+    <Instance Guid="8b5af363-dcc2-48e6-919c-6cdb80d50173">
+      <DataFormatVersionPlugin>1.0</DataFormatVersionPlugin>
+      <DataFormatVersionDebugger>1.0</DataFormatVersionDebugger>
+    </Instance>
+  </Class>
+  <Class Guid="932085a2-9361-4df9-a3f7-12e6de7681a8">
+    <Instance Guid="932085a2-9361-4df9-a3f7-12e6de7681a8">
+      <DebugToolManager>1d1a55cf-2b92-481a-af4f-5975d095c419</DebugToolManager>
+    </Instance>
+  </Class>
+  <Class Guid="e4df8d71-236e-4af2-aaea-56345a08da25">
+    <Instance Guid="9e76d4e8-0b8f-4e7c-91b7-a4c442bcf2e7">
+      <DeviceChangedCounter>0</DeviceChangedCounter>
+      <DeviceName>R5F563NBDxFP</DeviceName>
+      <DebuggerProperty-EssentialProperty-Endian-CpuEndian>Little</DebuggerProperty-EssentialProperty-Endian-CpuEndian>
+      <DebuggerProperty-EssentialProperty-Clock-SystemClockFrequency>100</DebuggerProperty-EssentialProperty-Clock-SystemClockFrequency>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Length>3</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Length>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item0-Name>CMT</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item0-Name>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item0-IsUse>False</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item0-IsUse>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item1-Name>ICU</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item1-Name>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item1-IsUse>False</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item1-IsUse>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item2-Name>MPU</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item2-Name>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item2-IsUse>False</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item2-IsUse>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-PeripheralClockRate>ClockRate_1</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-PeripheralClockRate>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-Length>1</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-Length>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-DebuggerGuid />
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-FileName>DefaultBuild\cfg.abs</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-FileName>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-FileType>LoadModuleFile</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-FileType>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-Offset>0</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-Offset>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-StartAddress>0</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-StartAddress>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-ObjectDownload>True</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-ObjectDownload>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-SymbolDownload>True</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-SymbolDownload>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-UsePicPidOffset>False</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-UsePicPidOffset>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-PicOffset>0</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-PicOffset>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-PidOffset>0</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-PidOffset>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-GenerateInformationForInputCompletion>True</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-GenerateInformationForInputCompletion>
+      <DebuggerProperty-DownloadProperty-DebugInformation-CpuReset>True</DebuggerProperty-DownloadProperty-DebugInformation-CpuReset>
+      <DebuggerProperty-DownloadProperty-DebugInformation-FlashErase>False</DebuggerProperty-DownloadProperty-DebugInformation-FlashErase>
+      <DebuggerProperty-DownloadProperty-DebugInformation-EventCorrection>SuspendEvent</DebuggerProperty-DownloadProperty-DebugInformation-EventCorrection>
+      <DebuggerProperty-DownloadProperty-DebugInformation-SkipStartup>True</DebuggerProperty-DownloadProperty-DebugInformation-SkipStartup>
+      <DebuggerProperty-DownloadProperty-DebugInformation-MainSymbol>XwBtAGEAaQBuAA==</DebuggerProperty-DownloadProperty-DebugInformation-MainSymbol>
+      <DebuggerProperty-OptionalProperty-Register-UpdateDisplayInExecutionForPC>No</DebuggerProperty-OptionalProperty-Register-UpdateDisplayInExecutionForPC>
+      <DebuggerProperty-OptionalProperty-Register-UpdateIntervalForPC>500</DebuggerProperty-OptionalProperty-Register-UpdateIntervalForPC>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-Length>17</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-Length>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-MapType>InternalRam</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-StartAddress>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-EndAddress>131071</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-MapType>NonMap</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-StartAddress>131072</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-EndAddress>524287</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-StartAddress>524288</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-EndAddress>540671</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-MapType>NonMap</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-StartAddress>540672</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-EndAddress>548863</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-StartAddress>548864</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-EndAddress>557055</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-StartAddress>557056</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-EndAddress>581631</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-Endian>Big</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-MapType>NonMap</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-StartAddress>581632</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-EndAddress>589823</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-StartAddress>589824</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-EndAddress>655359</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-Endian>Big</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-StartAddress>655360</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-EndAddress>786431</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-StartAddress>786432</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-EndAddress>1048575</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-Endian>Big</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-MapType>InternalRom</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-StartAddress>1048576</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-EndAddress>1081343</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-MapType>NonMap</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-StartAddress>1081344</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-EndAddress>8372223</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-StartAddress>8372224</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-EndAddress>8373503</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-Endian>Big</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-MapType>NonMap</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-StartAddress>8373504</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-EndAddress>8387583</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-StartAddress>8387584</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-EndAddress>8388607</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-Endian>Big</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-MapType>NonMap</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-StartAddress>8388608</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-EndAddress>4293918719</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-MapType>InternalRom</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-StartAddress>4293918720</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-EndAddress>4294967295</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-Endian>
+      <DebuggerProperty-OptionalProperty-AccessMemory-UpdateDisplayInExecution>Yes</DebuggerProperty-OptionalProperty-AccessMemory-UpdateDisplayInExecution>
+      <DebuggerProperty-OptionalProperty-AccessMemory-UpdateInterval>500</DebuggerProperty-OptionalProperty-AccessMemory-UpdateInterval>
+      <DebuggerProperty-OptionalProperty-Trace-UseTrace>No</DebuggerProperty-OptionalProperty-Trace-UseTrace>
+      <DebuggerProperty-OptionalProperty-Trace-ClearTraceMemory>Yes</DebuggerProperty-OptionalProperty-Trace-ClearTraceMemory>
+      <DebuggerProperty-OptionalProperty-Trace-TraceMode>Nonstop</DebuggerProperty-OptionalProperty-Trace-TraceMode>
+      <DebuggerProperty-OptionalProperty-Trace-AddUptimeTag>No</DebuggerProperty-OptionalProperty-Trace-AddUptimeTag>
+      <DebuggerProperty-OptionalProperty-Trace-TraceMemorySize>TraceMemory_64KB</DebuggerProperty-OptionalProperty-Trace-TraceMemorySize>
+      <DebuggerProperty-OptionalProperty-Coverage-UseCoverage>No</DebuggerProperty-OptionalProperty-Coverage-UseCoverage>
+      <DebuggerProperty-OptionalProperty-Coverage-ReuseCoverageData>No</DebuggerProperty-OptionalProperty-Coverage-ReuseCoverageData>
+      <DebuggerProperty-OptionalProperty-StreamIO-SelectStreamIO>Simulator</DebuggerProperty-OptionalProperty-StreamIO-SelectStreamIO>
+      <DebuggerProperty-OptionalProperty-StreamIO-UseStreamIO>No</DebuggerProperty-OptionalProperty-StreamIO-UseStreamIO>
+      <DebuggerProperty-OptionalProperty-StreamIO-StreamIOAddress>0</DebuggerProperty-OptionalProperty-StreamIO-StreamIOAddress>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-ExecutionModeType>Stop</DebuggerProperty-OptionalProperty-ExecutionMode-ExecutionModeType>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopUndefined>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopUndefined>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopPrivileged>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopPrivileged>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopAccess>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopAccess>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopFloatingPoint>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopFloatingPoint>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopInterrupt>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopInterrupt>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopInt>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopInt>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopBrk>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopBrk>
+      <DebuggerProperty-OptionalProperty-InstructionDecodeCache-CacheResults>No</DebuggerProperty-OptionalProperty-InstructionDecodeCache-CacheResults>
+      <DebuggerProperty-HookProperty-HookTransaction-Downloading-Length>0</DebuggerProperty-HookProperty-HookTransaction-Downloading-Length>
+      <DebuggerProperty-HookProperty-HookTransaction-Downloaded-Length>0</DebuggerProperty-HookProperty-HookTransaction-Downloaded-Length>
+      <DebuggerProperty-HookProperty-HookTransaction-Reset-Length>0</DebuggerProperty-HookProperty-HookTransaction-Reset-Length>
+      <DebuggerProperty-HookProperty-HookTransaction-Going-Length>0</DebuggerProperty-HookProperty-HookTransaction-Going-Length>
+      <DebuggerProperty-HookProperty-HookTransaction-Broke-Length>0</DebuggerProperty-HookProperty-HookTransaction-Broke-Length>
+      <DebuggerProperty-HookProperty-HookTransaction-Connected-Length>0</DebuggerProperty-HookProperty-HookTransaction-Connected-Length>
+      <DebuggerProperty-HookProperty-HookTransaction-Disconnecting-Length>0</DebuggerProperty-HookProperty-HookTransaction-Disconnecting-Length>
+      <DebuggerProperty-DownloadProperty-DebugInformation-MaxLoaderMemorySize>500</DebuggerProperty-DownloadProperty-DebugInformation-MaxLoaderMemorySize>
+    </Instance>
+  </Class>
+  <Class Guid="2a2c2a43-ecdb-4e88-80bd-e75f3e33db90">
+    <Instance Guid="2a2c2a43-ecdb-4e88-80bd-e75f3e33db90">
+      <ProductVersion>4.01.00.00</ProductVersion>
+    </Instance>
+  </Class>
+</CubeSuiteProject>
Index: uKadecot/trunk/csp/libssp/dummy.c
===================================================================
--- uKadecot/trunk/csp/libssp/dummy.c	(revision 101)
+++ uKadecot/trunk/csp/libssp/dummy.c	(revision 101)
@@ -0,0 +1,60 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/* 
+ *  J[lì¬p_~[^XN
+ */
+
+#include <kernel.h>
+#include "kernel_cfg.h"
+#include "dummy.h"
+
+/*
+ *  C^XN
+ */
+void dummy_task(intptr_t exinf)
+{
+}
Index: uKadecot/trunk/csp/libssp/dummy.cfg
===================================================================
--- uKadecot/trunk/csp/libssp/dummy.cfg	(revision 101)
+++ uKadecot/trunk/csp/libssp/dummy.cfg	(revision 101)
@@ -0,0 +1,10 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  TvvO(1)ÌVXeRtBM
+[Vt@C
+ */
+#include "dummy.h"
+CRE_TSK(MAIN_TASK, { TA_ACT, 0, dummy_task, MAIN_PRIORITY, STACK_SIZE, NULL });
Index: uKadecot/trunk/csp/libssp/dummy.h
===================================================================
--- uKadecot/trunk/csp/libssp/dummy.h	(revision 101)
+++ uKadecot/trunk/csp/libssp/dummy.h	(revision 101)
@@ -0,0 +1,81 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *	J[lì¬p_~[^XNÌwb_t@C
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include "target_test.h"
+
+/*
+ *  e^XNÌDæxÌè`
+ */
+
+#define MAIN_PRIORITY	5		/* C^XNÌDæx */
+
+/*
+ *  ^[QbgÉË¶·éÂ\«Ì éèÌè`
+ */
+
+#ifndef TASK_PORTID
+#define	TASK_PORTID		1			/* ¶üÍ·éVA|[gID */
+#endif /* TASK_PORTID */
+
+#ifndef STACK_SIZE
+#define	STACK_SIZE		4096		/* ^XNÌX^bNTCY */
+#endif /* STACK_SIZE */
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void	dummy_task(intptr_t exinf);
+
+#endif /* TOPPERS_MACRO_ONLY */
Index: uKadecot/trunk/csp/libssp/libssp.mtpj
===================================================================
--- uKadecot/trunk/csp/libssp/libssp.mtpj	(revision 101)
+++ uKadecot/trunk/csp/libssp/libssp.mtpj	(revision 101)
@@ -0,0 +1,1269 @@
+<CubeSuiteProject>
+  <ProductVersion>4.02.00.00</ProductVersion>
+  <Class Guid="68f4a651-b9cd-473b-a595-b00447132ffa">
+    <Instance Guid="00000000-0000-0000-0000-000000000000">
+      <FormatVersion>2.0</FormatVersion>
+      <FileVersion>4.2</FileVersion>
+      <ProjectGuid>150cc6fd-f95b-4858-a2b7-a4a61e9c9529</ProjectGuid>
+      <ProjectItemGuid>a9f64010-8222-4d5e-a730-09e4f4dd7b72</ProjectItemGuid>
+      <FileCategoryGuid>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</FileCategoryGuid>
+      <Property>fb98844b-2c27-4275-9804-f6e63e204da0</Property>
+      <ActiveProjectGuid>150cc6fd-f95b-4858-a2b7-a4a61e9c9529</ActiveProjectGuid>
+    </Instance>
+    <Instance Guid="bbf392be-9376-4aba-bf45-bd3546fe324a">
+      <DependentProjectsGuidsSourceProjectsCount>0</DependentProjectsGuidsSourceProjectsCount>
+      <Type>Data</Type>
+    </Instance>
+    <Instance Guid="418104fd-31b7-4e10-a52a-f3a40218ae47">
+      <Name>alarm.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\extension\alarm.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+    </Instance>
+    <Instance Guid="2a16567e-8174-41dd-a27a-386158a175b9">
+      <Name>cyclic.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\extension\cyclic.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+    </Instance>
+    <Instance Guid="7fee077f-b7de-40c9-ae6f-270d4788dfb2">
+      <Name>dataqueue.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\extension\dataqueue.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+    </Instance>
+    <Instance Guid="d29759b5-0b65-433e-a5dd-eabaa827926e">
+      <Name>eventflag.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\extension\eventflag.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+    </Instance>
+    <Instance Guid="62cdd7dc-f110-46fd-b286-34e5470c8adf">
+      <Name>exception.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\kernel\exception.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+    </Instance>
+    <Instance Guid="0c3f9205-2818-4d8b-9fdb-70bc98dc06ad">
+      <Name>interrupt.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\kernel\interrupt.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+    </Instance>
+    <Instance Guid="9aa3586d-4df3-430e-8496-da67b6df11c8">
+      <Name>startup.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\kernel\startup.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+      <Property>4bd7d8bf-18bd-4141-94d9-97fad079baa3</Property>
+    </Instance>
+    <Instance Guid="3a8e9b1d-6baa-4c8d-afbf-6aba1462f4f6">
+      <Name>sys_manage.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\kernel\sys_manage.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+    </Instance>
+    <Instance Guid="e4e95360-f85f-4469-b053-ce16e92de312">
+      <Name>task.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\kernel\task.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+    </Instance>
+    <Instance Guid="c68ccba7-5feb-4fc1-b6c6-1aaf66aa1e21">
+      <Name>task_manage.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\kernel\task_manage.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+    </Instance>
+    <Instance Guid="2aeaad0c-aef9-466b-acb5-fc12dd38b66a">
+      <Name>time_event.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\extension\time_event.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+    </Instance>
+    <Instance Guid="e5d7bf19-a826-482d-a700-42d7d39b557a">
+      <Name>time_manage.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\extension\time_manage.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+    </Instance>
+    <Instance Guid="d15e7073-c94f-4650-ac1c-2508bdbbe93a">
+      <Name>prc_config.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\arch\rx630_ccrx\prc_config.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+      <Property>c830664e-bb10-405c-ad5b-134d776b0747</Property>
+    </Instance>
+    <Instance Guid="6085e2ca-763c-4b27-8a8b-20e620c48494">
+      <Name>prc_support.src</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\arch\rx630_ccrx\prc_support.src</RelativePath>
+      <TreeImageGuid>f654126d-e7ad-426d-be34-8455271d959b</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+      <Property>a7069760-7a55-4870-b37c-5cf759b5b5a9</Property>
+    </Instance>
+    <Instance Guid="615ab7b6-f056-4147-9b71-8f13cd6dfcc5">
+      <Name>rx630_config.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\arch\rx630_ccrx\rx630_config.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+    </Instance>
+    <Instance Guid="3f36ed22-46b8-4376-98de-6f9973dd0af1">
+      <Name>target_config.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\target\grsakura_ccrx\target_config.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+    </Instance>
+    <Instance Guid="f22bd1a3-ee49-4534-bd7c-71c786e19406">
+      <Name>target_serial.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\target\grsakura_ccrx\target_serial.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+    </Instance>
+    <Instance Guid="490f6f78-f35a-4c25-9787-987f826efe89">
+      <Name>target_timer.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\target\grsakura_ccrx\target_timer.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+    </Instance>
+    <Instance Guid="e2945293-5f45-4a79-92cb-e335f3cb6c87">
+      <Name>rx630_uart.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\pdic\rx600\rx630_uart.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+    </Instance>
+    <Instance Guid="1df32ed1-e7ca-45d9-bf52-f5aa86354e4f">
+      <Name>target_support.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\target\grsakura_ccrx\target_support.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>04c58fd6-d589-4a0b-85c2-7233ec6f5a10</ParentItem>
+      <Property>39954361-f522-4748-a358-e1d666696ca4</Property>
+    </Instance>
+  </Class>
+  <Class Guid="9033e9fb-2b12-4437-a25e-27b28d42582b">
+    <Instance Guid="c170030b-b19d-470a-99cb-00eb1a66ac6b">
+      <Name>cfg</Name>
+      <RelativePath>cfg\cfg.mtsp</RelativePath>
+    </Instance>
+  </Class>
+  <Class Guid="fb98844b-2c27-4275-9804-f6e63e204da0">
+    <Instance Guid="fb98844b-2c27-4275-9804-f6e63e204da0">
+      <MemoCount>0</MemoCount>
+    </Instance>
+  </Class>
+  <Class Guid="0d548289-d5e9-4893-9a8f-9374b13f19a9">
+    <Instance Guid="4bd7d8bf-18bd-4141-94d9-97fad079baa3">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="c830664e-bb10-405c-ad5b-134d776b0747">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="a7069760-7a55-4870-b37c-5cf759b5b5a9">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="39954361-f522-4748-a358-e1d666696ca4">
+      <MemoCount>0</MemoCount>
+    </Instance>
+  </Class>
+  <Class Guid="8fb9c1f6-d351-4d10-8d99-bf5b3015b84c">
+    <Instance Guid="00000000-0000-0000-0000-000000000000">
+      <UsingPlatformGuid>7020d445-1358-4043-a8ea-3b101e73ceaa</UsingPlatformGuid>
+    </Instance>
+  </Class>
+  <Class Guid="c325714f-8f51-484b-9e96-b4b59c0fb263">
+    <Instance Guid="c325714f-8f51-484b-9e96-b4b59c0fb263">
+      <DeviceManager>0e793ff3-2e3f-43c0-bdc9-926269595403</DeviceManager>
+    </Instance>
+  </Class>
+  <Class Guid="0e793ff3-2e3f-43c0-bdc9-926269595403">
+    <Instance Guid="0e793ff3-2e3f-43c0-bdc9-926269595403">
+      <DataFormatVersion>1.0</DataFormatVersion>
+    </Instance>
+    <Instance Guid="2a81c37a-5015-44c2-9f40-e58b669eec75">
+      <DeviceName>R5F563NBDxFP</DeviceName>
+      <MemoCount>0</MemoCount>
+    </Instance>
+  </Class>
+  <Class Guid="873c9a58-9bc5-439a-b476-78629a4553ed">
+    <Instance Guid="873c9a58-9bc5-439a-b476-78629a4553ed">
+      <ProjectDeviceChangedCounter>0</ProjectDeviceChangedCounter>
+      <ProjectInitialDeviceName>R5F563NBDxFP</ProjectInitialDeviceName>
+    </Instance>
+  </Class>
+  <Class Guid="c3835e31-dea3-4c93-b02b-d2db997f7630">
+    <Instance Guid="c3835e31-dea3-4c93-b02b-d2db997f7630">
+      <BuildToolManager>3a79707d-5977-45f7-ac11-19c35e333132</BuildToolManager>
+    </Instance>
+  </Class>
+  <Class Guid="3a79707d-5977-45f7-ac11-19c35e333132">
+    <Instance Guid="3a79707d-5977-45f7-ac11-19c35e333132">
+      <DataFormatVersion>1.2</DataFormatVersion>
+      <BuildModeCount>1</BuildModeCount>
+      <BuildMode0>RABlAGYAYQB1AGwAdABCAHUAaQBsAGQA</BuildMode0>
+      <BatchBuildFlag0>False</BatchBuildFlag0>
+      <CurrentBuildMode>DefaultBuild</CurrentBuildMode>
+      <SourceItemGuid0>418104fd-31b7-4e10-a52a-f3a40218ae47</SourceItemGuid0>
+      <SourceItemType0>CSource</SourceItemType0>
+      <SourceItemGuid1>2a16567e-8174-41dd-a27a-386158a175b9</SourceItemGuid1>
+      <SourceItemType1>CSource</SourceItemType1>
+      <SourceItemGuid2>7fee077f-b7de-40c9-ae6f-270d4788dfb2</SourceItemGuid2>
+      <SourceItemType2>CSource</SourceItemType2>
+      <SourceItemGuid3>d29759b5-0b65-433e-a5dd-eabaa827926e</SourceItemGuid3>
+      <SourceItemType3>CSource</SourceItemType3>
+      <SourceItemGuid4>62cdd7dc-f110-46fd-b286-34e5470c8adf</SourceItemGuid4>
+      <SourceItemType4>CSource</SourceItemType4>
+      <SourceItemGuid5>0c3f9205-2818-4d8b-9fdb-70bc98dc06ad</SourceItemGuid5>
+      <SourceItemType5>CSource</SourceItemType5>
+      <SourceItemGuid6>9aa3586d-4df3-430e-8496-da67b6df11c8</SourceItemGuid6>
+      <SourceItemType6>CSource</SourceItemType6>
+      <SourceItemGuid7>3a8e9b1d-6baa-4c8d-afbf-6aba1462f4f6</SourceItemGuid7>
+      <SourceItemType7>CSource</SourceItemType7>
+      <SourceItemGuid8>e4e95360-f85f-4469-b053-ce16e92de312</SourceItemGuid8>
+      <SourceItemType8>CSource</SourceItemType8>
+      <SourceItemGuid9>c68ccba7-5feb-4fc1-b6c6-1aaf66aa1e21</SourceItemGuid9>
+      <SourceItemType9>CSource</SourceItemType9>
+      <SourceItemGuid10>2aeaad0c-aef9-466b-acb5-fc12dd38b66a</SourceItemGuid10>
+      <SourceItemType10>CSource</SourceItemType10>
+      <SourceItemGuid11>e5d7bf19-a826-482d-a700-42d7d39b557a</SourceItemGuid11>
+      <SourceItemType11>CSource</SourceItemType11>
+      <SourceItemGuid12>d15e7073-c94f-4650-ac1c-2508bdbbe93a</SourceItemGuid12>
+      <SourceItemType12>CSource</SourceItemType12>
+      <SourceItemGuid13>6085e2ca-763c-4b27-8a8b-20e620c48494</SourceItemGuid13>
+      <SourceItemType13>AsmSource</SourceItemType13>
+      <SourceItemGuid14>615ab7b6-f056-4147-9b71-8f13cd6dfcc5</SourceItemGuid14>
+      <SourceItemType14>CSource</SourceItemType14>
+      <SourceItemGuid15>3f36ed22-46b8-4376-98de-6f9973dd0af1</SourceItemGuid15>
+      <SourceItemType15>CSource</SourceItemType15>
+      <SourceItemGuid16>f22bd1a3-ee49-4534-bd7c-71c786e19406</SourceItemGuid16>
+      <SourceItemType16>CSource</SourceItemType16>
+      <SourceItemGuid17>490f6f78-f35a-4c25-9787-987f826efe89</SourceItemGuid17>
+      <SourceItemType17>CSource</SourceItemType17>
+      <SourceItemGuid18>e2945293-5f45-4a79-92cb-e335f3cb6c87</SourceItemGuid18>
+      <SourceItemType18>CSource</SourceItemType18>
+      <SourceItemGuid19>1df32ed1-e7ca-45d9-bf52-f5aa86354e4f</SourceItemGuid19>
+      <SourceItemType19>CSource</SourceItemType19>
+      <SourceItemCount>20</SourceItemCount>
+      <LastDeviceChangedCounter>0</LastDeviceChangedCounter>
+    </Instance>
+    <Instance Guid="9e208646-ccba-4100-a676-29b1efe6545f">
+      <AsmOptionInclude-DefaultValue />
+      <BuildMode-DefaultValue>DefaultBuild</BuildMode-DefaultValue>
+      <COptionInclude-DefaultValue />
+      <GeneralOptionIsa-DefaultValue>RXv1</GeneralOptionIsa-DefaultValue>
+      <GeneralOptionOutput-DefaultValue>LibraryFile</GeneralOptionOutput-DefaultValue>
+      <GeneralOptionPic-DefaultValue>False</GeneralOptionPic-DefaultValue>
+      <GeneralOptionSimultaneousBuild-DefaultValue>True</GeneralOptionSimultaneousBuild-DefaultValue>
+      <HexOptionOutput-DefaultValue>True</HexOptionOutput-DefaultValue>
+      <LibOptionDebug-DefaultValue>Debug</LibOptionDebug-DefaultValue>
+      <LinkOptionLibrary-DefaultValue />
+      <Memo-DefaultValue />
+      <OutputMessageFormat-DefaultValue>%TargetFiles%</OutputMessageFormat-DefaultValue>
+      <AsmOptionSystemInclude-DefaultValue />
+      <COptionSystemInclude-DefaultValue />
+      <CompilerVersion-DefaultValue>
+
+0</CompilerVersion-DefaultValue>
+      <DependencyFileExistCheckingType-DefaultValue>Rebuild</DependencyFileExistCheckingType-DefaultValue>
+      <FormatBuildOptionList-DefaultValue>%TargetFiles% : %Program% %Options%</FormatBuildOptionList-DefaultValue>
+      <GeneralOptionCpu-DefaultValue>RX600</GeneralOptionCpu-DefaultValue>
+      <GeneralOptionOutputFolder-DefaultValue>%BuildModeName%</GeneralOptionOutputFolder-DefaultValue>
+      <GeneralOptionPid-DefaultValue>None</GeneralOptionPid-DefaultValue>
+      <HexOptionForm-DefaultValue>Stype</HexOptionForm-DefaultValue>
+      <LinkOptionDebug-DefaultValue>Debug</LinkOptionDebug-DefaultValue>
+      <AsmOptionDefine-DefaultValue />
+      <COptionDefine-DefaultValue />
+      <EnsureCompatibilityOfPathAndLinkageOrder-DefaultValue>False</EnsureCompatibilityOfPathAndLinkageOrder-DefaultValue>
+      <GeneralOptionFpu-DefaultValue>Auto</GeneralOptionFpu-DefaultValue>
+      <GeneralOptionNousePidRegister-DefaultValue>True</GeneralOptionNousePidRegister-DefaultValue>
+      <LinkOptionConvertFolder-DefaultValue>%BuildModeName%</LinkOptionConvertFolder-DefaultValue>
+      <LinkOptionOptimize-DefaultValue>None</LinkOptionOptimize-DefaultValue>
+      <AsmOptionDebug-DefaultValue>True</AsmOptionDebug-DefaultValue>
+      <COptionDebug-DefaultValue>True</COptionDebug-DefaultValue>
+      <GeneralOptionEndian-DefaultValue>Little</GeneralOptionEndian-DefaultValue>
+      <LinkOptionConvertFileName-DefaultValue>%ProjectName%.mot</LinkOptionConvertFileName-DefaultValue>
+      <LinkOptionOptimizeSymbolDelete-DefaultValue>False</LinkOptionOptimizeSymbolDelete-DefaultValue>
+      <PreBuildCommands-DefaultValue />
+      <AsmOptionGoptimize-DefaultValue>False</AsmOptionGoptimize-DefaultValue>
+      <COptionOptimize-DefaultValue>Level2</COptionOptimize-DefaultValue>
+      <GeneralOptionRound-DefaultValue>Nearest</GeneralOptionRound-DefaultValue>
+      <LinkOptionMultiConvertFileName-DefaultValue />
+      <LinkOptionOptimizeSameCode-DefaultValue>False</LinkOptionOptimizeSameCode-DefaultValue>
+      <PostBuildCommands-DefaultValue />
+      <AsmOptionListFile-DefaultValue>False</AsmOptionListFile-DefaultValue>
+      <COptionGoptimize-DefaultValue>False</COptionGoptimize-DefaultValue>
+      <GeneralOptionDenormalize-DefaultValue>Off</GeneralOptionDenormalize-DefaultValue>
+      <LinkOptionSameSize-DefaultValue>1E</LinkOptionSameSize-DefaultValue>
+      <AsmOptionShowConditionals-DefaultValue>False</AsmOptionShowConditionals-DefaultValue>
+      <COptionSpeedAndSize-DefaultValue>Size</COptionSpeedAndSize-DefaultValue>
+      <GeneralOptionDblSize-DefaultValue>SinglePrecision</GeneralOptionDblSize-DefaultValue>
+      <LinkOptionOptimizeShortFormat-DefaultValue>False</LinkOptionOptimizeShortFormat-DefaultValue>
+      <AsmOptionShowDefinitions-DefaultValue>False</AsmOptionShowDefinitions-DefaultValue>
+      <COptionListfile-DefaultValue>False</COptionListfile-DefaultValue>
+      <GeneralOptionIntToShort-DefaultValue>False</GeneralOptionIntToShort-DefaultValue>
+      <LinkOptionOptimizeBranch-DefaultValue>False</LinkOptionOptimizeBranch-DefaultValue>
+      <AsmOptionShowExpansions-DefaultValue>False</AsmOptionShowExpansions-DefaultValue>
+      <COptionShowSource-DefaultValue>False</COptionShowSource-DefaultValue>
+      <GeneralOptionSignedChar-DefaultValue>Unsigned</GeneralOptionSignedChar-DefaultValue>
+      <LinkOptionStart-DefaultValue />
+      <COptionShowConditionals-DefaultValue>False</COptionShowConditionals-DefaultValue>
+      <GeneralOptionOtherAdditionalOptions-DefaultValue />
+      <GeneralOptionSignedBitfield-DefaultValue>Unsigned</GeneralOptionSignedBitfield-DefaultValue>
+      <COptionShowDefinitions-DefaultValue>False</COptionShowDefinitions-DefaultValue>
+      <GeneralOptionAutoEnum-DefaultValue>False</GeneralOptionAutoEnum-DefaultValue>
+      <COptionShowExpansions-DefaultValue>False</COptionShowExpansions-DefaultValue>
+      <GeneralOptionBitOrder-DefaultValue>Right</GeneralOptionBitOrder-DefaultValue>
+      <GeneralOptionPack-DefaultValue>False</GeneralOptionPack-DefaultValue>
+      <GeneralOptionException-DefaultValue>False</GeneralOptionException-DefaultValue>
+      <GeneralOptionRtti-DefaultValue>False</GeneralOptionRtti-DefaultValue>
+      <GeneralOptionFintRegister-DefaultValue>None</GeneralOptionFintRegister-DefaultValue>
+      <GeneralOptionBranch-DefaultValue>Branch24</GeneralOptionBranch-DefaultValue>
+      <GeneralOptionBaseRomRegister-DefaultValue>None</GeneralOptionBaseRomRegister-DefaultValue>
+      <GeneralOptionBaseRamRegister-DefaultValue>None</GeneralOptionBaseRamRegister-DefaultValue>
+      <GeneralOptionBaseAddressAddress-DefaultValue>00000000</GeneralOptionBaseAddressAddress-DefaultValue>
+      <GeneralOptionBaseAddressRegister-DefaultValue>None</GeneralOptionBaseAddressRegister-DefaultValue>
+      <GeneralOptionPatch-DefaultValue>None</GeneralOptionPatch-DefaultValue>
+      <GeneralOptionSaveAcc-DefaultValue>False</GeneralOptionSaveAcc-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8587688969117379814</TimeTagModified--0>
+      <BuildMode-0>DefaultBuild</BuildMode-0>
+      <Memo-0 />
+      <OutputMessageFormat-0>%TargetFiles%</OutputMessageFormat-0>
+      <FormatBuildOptionList-0>%TargetFiles% : %Program% %Options%</FormatBuildOptionList-0>
+      <PreBuildCommands-0 />
+      <PostBuildCommands-0 />
+      <GeneralOptionIsa-0>None</GeneralOptionIsa-0>
+      <GeneralOptionOutput-0>LibraryFile</GeneralOptionOutput-0>
+      <GeneralOptionPic-0>False</GeneralOptionPic-0>
+      <GeneralOptionSimultaneousBuild-0>True</GeneralOptionSimultaneousBuild-0>
+      <CompilerVersion-0>
+
+0</CompilerVersion-0>
+      <DependencyFileExistCheckingType-0>Rebuild</DependencyFileExistCheckingType-0>
+      <GeneralOptionCpu-0>RX600</GeneralOptionCpu-0>
+      <GeneralOptionOutputFolder-0>%BuildModeName%</GeneralOptionOutputFolder-0>
+      <GeneralOptionPid-0>None</GeneralOptionPid-0>
+      <EnsureCompatibilityOfPathAndLinkageOrder-0>False</EnsureCompatibilityOfPathAndLinkageOrder-0>
+      <GeneralOptionFpu-0>Fpu</GeneralOptionFpu-0>
+      <GeneralOptionNousePidRegister-0>True</GeneralOptionNousePidRegister-0>
+      <LinkOptionConvertFolder-0>%BuildModeName%</LinkOptionConvertFolder-0>
+      <GeneralOptionEndian-0>Little</GeneralOptionEndian-0>
+      <LinkOptionConvertFileName-0>%ProjectName%.mot</LinkOptionConvertFileName-0>
+      <AsmOptionGoptimize-0>False</AsmOptionGoptimize-0>
+      <GeneralOptionRound-0>Nearest</GeneralOptionRound-0>
+      <LinkOptionMultiConvertFileName-0 />
+      <AsmOptionListFile-0>False</AsmOptionListFile-0>
+      <COptionGoptimize-0>False</COptionGoptimize-0>
+      <GeneralOptionDenormalize-0>Off</GeneralOptionDenormalize-0>
+      <AsmOptionShowConditionals-0>False</AsmOptionShowConditionals-0>
+      <GeneralOptionDblSize-0>SinglePrecision</GeneralOptionDblSize-0>
+      <AsmOptionShowDefinitions-0>False</AsmOptionShowDefinitions-0>
+      <COptionListfile-0>False</COptionListfile-0>
+      <GeneralOptionIntToShort-0>False</GeneralOptionIntToShort-0>
+      <AsmOptionShowExpansions-0>False</AsmOptionShowExpansions-0>
+      <COptionShowSource-0>False</COptionShowSource-0>
+      <GeneralOptionSignedChar-0>Unsigned</GeneralOptionSignedChar-0>
+      <COptionShowConditionals-0>False</COptionShowConditionals-0>
+      <GeneralOptionOtherAdditionalOptions-0 />
+      <GeneralOptionSignedBitfield-0>Unsigned</GeneralOptionSignedBitfield-0>
+      <COptionShowDefinitions-0>False</COptionShowDefinitions-0>
+      <GeneralOptionAutoEnum-0>False</GeneralOptionAutoEnum-0>
+      <COptionShowExpansions-0>False</COptionShowExpansions-0>
+      <GeneralOptionBitOrder-0>Right</GeneralOptionBitOrder-0>
+      <GeneralOptionPack-0>False</GeneralOptionPack-0>
+      <GeneralOptionException-0>False</GeneralOptionException-0>
+      <GeneralOptionRtti-0>False</GeneralOptionRtti-0>
+      <GeneralOptionFintRegister-0>None</GeneralOptionFintRegister-0>
+      <GeneralOptionBranch-0>Branch24</GeneralOptionBranch-0>
+      <GeneralOptionBaseRomRegister-0>None</GeneralOptionBaseRomRegister-0>
+      <GeneralOptionBaseRamRegister-0>None</GeneralOptionBaseRamRegister-0>
+      <GeneralOptionBaseAddressAddress-0>00000000</GeneralOptionBaseAddressAddress-0>
+      <GeneralOptionBaseAddressRegister-0>None</GeneralOptionBaseAddressRegister-0>
+      <GeneralOptionPatch-0>None</GeneralOptionPatch-0>
+      <GeneralOptionSaveAcc-0>False</GeneralOptionSaveAcc-0>
+      <LastCompilerVersion-0>V2.02.00</LastCompilerVersion-0>
+    </Instance>
+    <Instance Guid="95a63257-4aa7-40c0-a74a-7991543b099b">
+      <COptionLangC-DefaultValue>C</COptionLangC-DefaultValue>
+      <COptionListfile-DefaultValue>False</COptionListfile-DefaultValue>
+      <COptionLogo-DefaultValue>False</COptionLogo-DefaultValue>
+      <COptionMisra2004-DefaultValue>None</COptionMisra2004-DefaultValue>
+      <COptionOptimize-DefaultValue>Level2</COptionOptimize-DefaultValue>
+      <COptionOutput-DefaultValue>Object</COptionOutput-DefaultValue>
+      <COptionOutputAssembly-DefaultValue>False</COptionOutputAssembly-DefaultValue>
+      <COptionGoptimize-DefaultValue>False</COptionGoptimize-DefaultValue>
+      <COptionLangCpp-DefaultValue>Cpp</COptionLangCpp-DefaultValue>
+      <COptionMisra2004RuleFile-DefaultValue />
+      <COptionOutputFolder-DefaultValue>%BuildModeName%</COptionOutputFolder-DefaultValue>
+      <COptionOutputPreprocessed-DefaultValue>None</COptionOutputPreprocessed-DefaultValue>
+      <COptionShowSource-DefaultValue>False</COptionShowSource-DefaultValue>
+      <COptionXcref-DefaultValue>False</COptionXcref-DefaultValue>
+      <COptionDebug-DefaultValue>True</COptionDebug-DefaultValue>
+      <COptionInclude-DefaultValue />
+      <COptionMisra2004RuleNumberApply-DefaultValue />
+      <COptionPreCompileCommands-DefaultValue />
+      <COptionShowConditionals-DefaultValue>False</COptionShowConditionals-DefaultValue>
+      <COptionSpeedAndSize-DefaultValue>Size</COptionSpeedAndSize-DefaultValue>
+      <COptionLoop-DefaultValue>Auto</COptionLoop-DefaultValue>
+      <COptionMisra2004RuleNumberIgnore-DefaultValue />
+      <COptionPostCompileCommands-DefaultValue />
+      <COptionSectionP-DefaultValue>P</COptionSectionP-DefaultValue>
+      <COptionShowDefinitions-DefaultValue>False</COptionShowDefinitions-DefaultValue>
+      <COptionSystemInclude-DefaultValue />
+      <COptionLoopValue-DefaultValue>2</COptionLoopValue-DefaultValue>
+      <COptionMisra2004RuleNumberRequiredAdd-DefaultValue />
+      <COptionOtherAdditionalOptions-DefaultValue />
+      <COptionPreinclude-DefaultValue />
+      <COptionSectionC-DefaultValue>C</COptionSectionC-DefaultValue>
+      <COptionShowExpansions-DefaultValue>False</COptionShowExpansions-DefaultValue>
+      <COptionCommandLine-DefaultValue>-isa=rxv1
+-include=..\..\ssp
+-include=..\..\ssp\arch
+-include=..\..\ssp\include
+-include=..\..\ssp\kernel
+-include=..\..\ssp\extension
+-include=..\..\ssp\arch
+-include=..\..\ssp\syssvc
+-include=..\..\ssp\library
+-include=..\..\ssp\pdic
+-include=..\..\ssp\target\grsakura_ccrx
+-include=..\..\ssp\arch\rx630_ccrx
+-include=..\..\ssp\arch\ccrx
+-include=.
+-define=ALLFUNC
+-output=obj
+-obj_path=%BuildModeName%
+-debug
+-fpu
+-nologo
+</COptionCommandLine-DefaultValue>
+      <COptionDefine-DefaultValue />
+      <COptionInline-DefaultValue>Auto</COptionInline-DefaultValue>
+      <COptionMisra2004RuleNumberRequiredRemove-DefaultValue />
+      <COptionSectionD-DefaultValue>D</COptionSectionD-DefaultValue>
+      <COptionIgnoreFilesMisra-DefaultValue />
+      <COptionInlineValue-DefaultValue>100</COptionInlineValue-DefaultValue>
+      <COptionSectionB-DefaultValue>B</COptionSectionB-DefaultValue>
+      <COptionUndefine-DefaultValue />
+      <COptionCheckLanguageExtension-DefaultValue>False</COptionCheckLanguageExtension-DefaultValue>
+      <COptionFileInline-DefaultValue />
+      <COptionMessage-DefaultValue>False</COptionMessage-DefaultValue>
+      <COptionSectionL-DefaultValue>L</COptionSectionL-DefaultValue>
+      <COptionCase-DefaultValue>Auto</COptionCase-DefaultValue>
+      <COptionMessage2-DefaultValue>False</COptionMessage2-DefaultValue>
+      <COptionSectionW-DefaultValue>W</COptionSectionW-DefaultValue>
+      <COptionNoMessageErrorNumber-DefaultValue />
+      <COptionNostuffB-DefaultValue>False</COptionNostuffB-DefaultValue>
+      <COptionVolatile-DefaultValue>False</COptionVolatile-DefaultValue>
+      <COptionConstCopy-DefaultValue>Auto</COptionConstCopy-DefaultValue>
+      <COptionNoMessageErrorNumber2-DefaultValue />
+      <COptionNostuffD-DefaultValue>False</COptionNostuffD-DefaultValue>
+      <COptionChangeMessageInformation-DefaultValue>No</COptionChangeMessageInformation-DefaultValue>
+      <COptionConstDiv-DefaultValue>Auto</COptionConstDiv-DefaultValue>
+      <COptionNostuffC-DefaultValue>False</COptionNostuffC-DefaultValue>
+      <COptionChangeMessageInformationNumber-DefaultValue />
+      <COptionLibrary-DefaultValue>Intrinsic</COptionLibrary-DefaultValue>
+      <COptionNostuffW-DefaultValue>False</COptionNostuffW-DefaultValue>
+      <COptionChangeMessageInformationNumber2-DefaultValue />
+      <COptionInstalign-DefaultValue>Noinstalign</COptionInstalign-DefaultValue>
+      <COptionScope-DefaultValue>Auto</COptionScope-DefaultValue>
+      <COptionChangeMessageWarning-DefaultValue>No</COptionChangeMessageWarning-DefaultValue>
+      <COptionNouseDiv-DefaultValue>True</COptionNouseDiv-DefaultValue>
+      <COptionSchedule-DefaultValue>Auto</COptionSchedule-DefaultValue>
+      <COptionChangeMessageWarningNumber-DefaultValue />
+      <COptionMap-DefaultValue>NoMap</COptionMap-DefaultValue>
+      <COptionOutcode-DefaultValue>Sjis</COptionOutcode-DefaultValue>
+      <COptionChangeMessageWarningNumber2-DefaultValue />
+      <COptionIntermodule-DefaultValue>None</COptionIntermodule-DefaultValue>
+      <COptionApproxdiv-DefaultValue>False</COptionApproxdiv-DefaultValue>
+      <COptionChangeMessageError-DefaultValue>No</COptionChangeMessageError-DefaultValue>
+      <COptionChangeMessageErrorNumber-DefaultValue />
+      <COptionEnableRegister-DefaultValue>False</COptionEnableRegister-DefaultValue>
+      <COptionChangeMessageErrorNumber2-DefaultValue />
+      <COptionSimpleFloatConv-DefaultValue>False</COptionSimpleFloatConv-DefaultValue>
+      <COptionFileInlinePath-DefaultValue />
+      <COptionFpu-DefaultValue>Fpu</COptionFpu-DefaultValue>
+      <COptionAlias-DefaultValue>False</COptionAlias-DefaultValue>
+      <COptionComment-DefaultValue>False</COptionComment-DefaultValue>
+      <COptionCheck-DefaultValue>No</COptionCheck-DefaultValue>
+      <COptionFloatOrder-DefaultValue>False</COptionFloatOrder-DefaultValue>
+      <COptionIncode-DefaultValue>Sjis</COptionIncode-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8588050931894491307</TimeTagModified--0>
+      <COptionLangC-0>C99</COptionLangC-0>
+      <COptionListfile-0>False</COptionListfile-0>
+      <COptionLogo-0>False</COptionLogo-0>
+      <COptionMisra2004-0>None</COptionMisra2004-0>
+      <COptionOptimize-0>Level2</COptionOptimize-0>
+      <COptionOutput-0>Object</COptionOutput-0>
+      <COptionOutputAssembly-0>False</COptionOutputAssembly-0>
+      <COptionGoptimize-0>False</COptionGoptimize-0>
+      <COptionLangCpp-0>Cpp</COptionLangCpp-0>
+      <COptionMisra2004RuleFile-0 />
+      <COptionOutputFolder-0>%BuildModeName%</COptionOutputFolder-0>
+      <COptionOutputPreprocessed-0>None</COptionOutputPreprocessed-0>
+      <COptionShowSource-0>False</COptionShowSource-0>
+      <COptionXcref-0>False</COptionXcref-0>
+      <COptionDebug-0>True</COptionDebug-0>
+      <COptionInclude-0>..\..\ssp
+..\..\ssp\arch
+..\..\ssp\include
+..\..\ssp\kernel
+..\..\ssp\extension
+..\..\ssp\arch
+..\..\ssp\syssvc
+..\..\ssp\library
+..\..\ssp\pdic
+..\..\ssp\target\grsakura_ccrx
+.
+</COptionInclude-0>
+      <COptionMisra2004RuleNumberApply-0 />
+      <COptionPreCompileCommands-0 />
+      <COptionShowConditionals-0>False</COptionShowConditionals-0>
+      <COptionSpeedAndSize-0>Size</COptionSpeedAndSize-0>
+      <COptionLoop-0>Auto</COptionLoop-0>
+      <COptionMisra2004RuleNumberIgnore-0 />
+      <COptionPostCompileCommands-0 />
+      <COptionSectionP-0>P</COptionSectionP-0>
+      <COptionShowDefinitions-0>False</COptionShowDefinitions-0>
+      <COptionSystemInclude-0 />
+      <COptionLoopValue-0>2</COptionLoopValue-0>
+      <COptionMisra2004RuleNumberRequiredAdd-0 />
+      <COptionOtherAdditionalOptions-0 />
+      <COptionPreinclude-0 />
+      <COptionSectionC-0>C</COptionSectionC-0>
+      <COptionShowExpansions-0>False</COptionShowExpansions-0>
+      <COptionCommandLine-0>-isa=rxv1
+-include=..\..\ssp
+-include=..\..\ssp\arch
+-include=..\..\ssp\include
+-include=..\..\ssp\kernel
+-include=..\..\ssp\extension
+-include=..\..\ssp\arch
+-include=..\..\ssp\syssvc
+-include=..\..\ssp\library
+-include=..\..\ssp\pdic
+-include=..\..\ssp\target\grsakura_ccrx
+-include=..\..\ssp\arch\rx630_ccrx
+-include=..\..\ssp\arch\ccrx
+-include=.
+-define=ALLFUNC
+-output=obj
+-obj_path=%BuildModeName%
+-debug
+-fpu
+-nologo
+</COptionCommandLine-0>
+      <COptionDefine-0>ALLFUNC
+</COptionDefine-0>
+      <COptionInline-0>Auto</COptionInline-0>
+      <COptionMisra2004RuleNumberRequiredRemove-0 />
+      <COptionSectionD-0>D</COptionSectionD-0>
+      <COptionIgnoreFilesMisra-0 />
+      <COptionInlineValue-0>100</COptionInlineValue-0>
+      <COptionSectionB-0>B</COptionSectionB-0>
+      <COptionUndefine-0 />
+      <COptionCheckLanguageExtension-0>False</COptionCheckLanguageExtension-0>
+      <COptionFileInline-0 />
+      <COptionMessage-0>False</COptionMessage-0>
+      <COptionSectionL-0>L</COptionSectionL-0>
+      <COptionCase-0>Auto</COptionCase-0>
+      <COptionSectionW-0>W</COptionSectionW-0>
+      <COptionNoMessageErrorNumber-0 />
+      <COptionNostuffB-0>False</COptionNostuffB-0>
+      <COptionVolatile-0>False</COptionVolatile-0>
+      <COptionConstCopy-0>Auto</COptionConstCopy-0>
+      <COptionNostuffD-0>False</COptionNostuffD-0>
+      <COptionChangeMessageInformation-0>No</COptionChangeMessageInformation-0>
+      <COptionConstDiv-0>Auto</COptionConstDiv-0>
+      <COptionNostuffC-0>False</COptionNostuffC-0>
+      <COptionChangeMessageInformationNumber-0 />
+      <COptionLibrary-0>Intrinsic</COptionLibrary-0>
+      <COptionNostuffW-0>False</COptionNostuffW-0>
+      <COptionInstalign-0>Noinstalign</COptionInstalign-0>
+      <COptionScope-0>Auto</COptionScope-0>
+      <COptionChangeMessageWarning-0>No</COptionChangeMessageWarning-0>
+      <COptionNouseDiv-0>True</COptionNouseDiv-0>
+      <COptionSchedule-0>Auto</COptionSchedule-0>
+      <COptionChangeMessageWarningNumber-0 />
+      <COptionMap-0>NoMap</COptionMap-0>
+      <COptionOutcode-0>Sjis</COptionOutcode-0>
+      <COptionIntermodule-0>None</COptionIntermodule-0>
+      <COptionApproxdiv-0>False</COptionApproxdiv-0>
+      <COptionChangeMessageError-0>No</COptionChangeMessageError-0>
+      <COptionChangeMessageErrorNumber-0 />
+      <COptionEnableRegister-0>False</COptionEnableRegister-0>
+      <COptionSimpleFloatConv-0>False</COptionSimpleFloatConv-0>
+      <COptionFileInlinePath-0 />
+      <COptionFpu-0>Fpu</COptionFpu-0>
+      <COptionAlias-0>False</COptionAlias-0>
+      <COptionComment-0>False</COptionComment-0>
+      <COptionCheck-0>No</COptionCheck-0>
+      <COptionFloatOrder-0>False</COptionFloatOrder-0>
+      <COptionIncode-0>Sjis</COptionIncode-0>
+    </Instance>
+    <Instance Guid="5ad1746c-d03e-4610-a91f-aaa4fb37bc10">
+      <AsmOptionChkpm-DefaultValue>False</AsmOptionChkpm-DefaultValue>
+      <AsmOptionGoptimize-DefaultValue>False</AsmOptionGoptimize-DefaultValue>
+      <AsmOptionInclude-DefaultValue />
+      <AsmOptionListFile-DefaultValue>False</AsmOptionListFile-DefaultValue>
+      <AsmOptionOutput-DefaultValue>%BuildModeName%</AsmOptionOutput-DefaultValue>
+      <AsmOptionChkfpu-DefaultValue>False</AsmOptionChkfpu-DefaultValue>
+      <AsmOptionDebug-DefaultValue>True</AsmOptionDebug-DefaultValue>
+      <AsmOptionShowConditionals-DefaultValue>False</AsmOptionShowConditionals-DefaultValue>
+      <AsmOptionSystemInclude-DefaultValue />
+      <AsmOptionChkdsp-DefaultValue>False</AsmOptionChkdsp-DefaultValue>
+      <AsmOptionDefine-DefaultValue />
+      <AsmOptionShowDefinitions-DefaultValue>False</AsmOptionShowDefinitions-DefaultValue>
+      <AsmOptionInCode-DefaultValue>SJIS</AsmOptionInCode-DefaultValue>
+      <AsmOptionLogo-DefaultValue>False</AsmOptionLogo-DefaultValue>
+      <AsmOptionShowExpansions-DefaultValue>False</AsmOptionShowExpansions-DefaultValue>
+      <AsmOptionPreAssembleCommands-DefaultValue />
+      <AsmOptionPostAssembleCommands-DefaultValue />
+      <AsmOptionOtherAdditionalOptions-DefaultValue />
+      <AsmOptionCommandLine-DefaultValue>-isa=rxv1
+-include=..\..\ssp\target\grsakura_ccrx
+-include=.
+-output=obj
+-obj_path=%BuildModeName%
+-debug
+-nologo
+</AsmOptionCommandLine-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8588053511973115383</TimeTagModified--0>
+      <AsmOptionChkpm-0>False</AsmOptionChkpm-0>
+      <AsmOptionGoptimize-0>False</AsmOptionGoptimize-0>
+      <AsmOptionInclude-0>..\..\ssp\target\grsakura_ccrx
+.
+</AsmOptionInclude-0>
+      <AsmOptionListFile-0>False</AsmOptionListFile-0>
+      <AsmOptionOutput-0>%BuildModeName%</AsmOptionOutput-0>
+      <AsmOptionChkfpu-0>False</AsmOptionChkfpu-0>
+      <AsmOptionDebug-0>True</AsmOptionDebug-0>
+      <AsmOptionShowConditionals-0>False</AsmOptionShowConditionals-0>
+      <AsmOptionSystemInclude-0 />
+      <AsmOptionChkdsp-0>False</AsmOptionChkdsp-0>
+      <AsmOptionDefine-0 />
+      <AsmOptionShowDefinitions-0>False</AsmOptionShowDefinitions-0>
+      <AsmOptionInCode-0>SJIS</AsmOptionInCode-0>
+      <AsmOptionLogo-0>False</AsmOptionLogo-0>
+      <AsmOptionShowExpansions-0>False</AsmOptionShowExpansions-0>
+      <AsmOptionPreAssembleCommands-0 />
+      <AsmOptionPostAssembleCommands-0 />
+      <AsmOptionOtherAdditionalOptions-0 />
+      <AsmOptionCommandLine-0>-isa=rxv1
+-include=..\..\ssp\target\grsakura_ccrx
+-include=.
+-output=obj
+-obj_path=%BuildModeName%
+-debug
+-nologo
+</AsmOptionCommandLine-0>
+    </Instance>
+    <Instance Guid="dbb16727-3e81-4169-956a-790355cab4a1">
+      <LinkOptionCpu-DefaultValue>False</LinkOptionCpu-DefaultValue>
+      <LinkOptionForm-DefaultValue>Absolute</LinkOptionForm-DefaultValue>
+      <LinkOptionFormConvert-DefaultValue>Stype</LinkOptionFormConvert-DefaultValue>
+      <LinkOptionInput-DefaultValue />
+      <LinkOptionListShow-DefaultValue>None</LinkOptionListShow-DefaultValue>
+      <LinkOptionOptimize-DefaultValue>None</LinkOptionOptimize-DefaultValue>
+      <LinkOptionStack-DefaultValue>False</LinkOptionStack-DefaultValue>
+      <LinkOptionStart-DefaultValue />
+      <LinkOptionCompress-DefaultValue>False</LinkOptionCompress-DefaultValue>
+      <LinkOptionCpuInformation-DefaultValue />
+      <LinkOptionDebug-DefaultValue>Debug</LinkOptionDebug-DefaultValue>
+      <LinkOptionFSymbol-DefaultValue />
+      <LinkOptionLibrary-DefaultValue />
+      <LinkOptionOptimizeSymbolDelete-DefaultValue>False</LinkOptionOptimizeSymbolDelete-DefaultValue>
+      <LinkOptionRecordH-DefaultValue>None</LinkOptionRecordH-DefaultValue>
+      <LinkOptionShowSymbol-DefaultValue>False</LinkOptionShowSymbol-DefaultValue>
+      <LinkOptionAlignedSection-DefaultValue />
+      <LinkOptionCpuStride-DefaultValue>False</LinkOptionCpuStride-DefaultValue>
+      <LinkOptionMemory-DefaultValue>False</LinkOptionMemory-DefaultValue>
+      <LinkOptionOptimizeSameCode-DefaultValue>False</LinkOptionOptimizeSameCode-DefaultValue>
+      <LinkOptionOutputFolder-DefaultValue>%BuildModeName%</LinkOptionOutputFolder-DefaultValue>
+      <LinkOptionRecordS-DefaultValue>None</LinkOptionRecordS-DefaultValue>
+      <LinkOptionShowReference-DefaultValue>False</LinkOptionShowReference-DefaultValue>
+      <LinkOptionSystemLibrary-DefaultValue />
+      <LinkOptionBinary-DefaultValue />
+      <LinkOptionChangeMessageInformation-DefaultValue>None</LinkOptionChangeMessageInformation-DefaultValue>
+      <LinkOptionContiguousSection-DefaultValue />
+      <LinkOptionDividedConvertFile-DefaultValue>False</LinkOptionDividedConvertFile-DefaultValue>
+      <LinkOptionOutputFileName-DefaultValue>%ProjectName%.abs</LinkOptionOutputFileName-DefaultValue>
+      <LinkOptionRom-DefaultValue />
+      <LinkOptionSameSize-DefaultValue>1E</LinkOptionSameSize-DefaultValue>
+      <LinkOptionShowXreference-DefaultValue>False</LinkOptionShowXreference-DefaultValue>
+      <LinkOptionChangeMessageInformationNumber-DefaultValue />
+      <LinkOptionConvertFolder-DefaultValue>%BuildModeName%</LinkOptionConvertFolder-DefaultValue>
+      <LinkOptionDefine-DefaultValue />
+      <LinkOptionMap-DefaultValue>False</LinkOptionMap-DefaultValue>
+      <LinkOptionOptimizeShortFormat-DefaultValue>False</LinkOptionOptimizeShortFormat-DefaultValue>
+      <LinkOptionShowTotalSize-DefaultValue>False</LinkOptionShowTotalSize-DefaultValue>
+      <LinkOptionChangeMessageWarning-DefaultValue>None</LinkOptionChangeMessageWarning-DefaultValue>
+      <LinkOptionConvertFileName-DefaultValue>%ProjectName%.mot</LinkOptionConvertFileName-DefaultValue>
+      <LinkOptionEntry-DefaultValue>False</LinkOptionEntry-DefaultValue>
+      <LinkOptionMessage-DefaultValue>NoMessage</LinkOptionMessage-DefaultValue>
+      <LinkOptionOptimizeBranch-DefaultValue>False</LinkOptionOptimizeBranch-DefaultValue>
+      <LinkOptionShowVector-DefaultValue>False</LinkOptionShowVector-DefaultValue>
+      <LinkOptionChangeMessageWarningNumber-DefaultValue />
+      <LinkOptionEntryPoint-DefaultValue />
+      <LinkOptionMultiConvertFileName-DefaultValue />
+      <LinkOptionNoMessageErrorNumber-DefaultValue />
+      <LinkOptionSymbolForbid-DefaultValue />
+      <LinkOptionChangeMessageError-DefaultValue>None</LinkOptionChangeMessageError-DefaultValue>
+      <LinkOptionNoPrelink-DefaultValue>Auto</LinkOptionNoPrelink-DefaultValue>
+      <LinkOptionPadding-DefaultValue>False</LinkOptionPadding-DefaultValue>
+      <LinkOptionSameCodeForbid-DefaultValue />
+      <LinkOptionSpace-DefaultValue>None</LinkOptionSpace-DefaultValue>
+      <LinkOptionChangeMessageErrorNumber-DefaultValue />
+      <LinkOptionSectionForbid-DefaultValue />
+      <LinkOptionSpaceValue-DefaultValue>FF</LinkOptionSpaceValue-DefaultValue>
+      <LinkOptionVectN-DefaultValue />
+      <LinkOptionAbsoluteForbid-DefaultValue />
+      <LinkOptionByteCount-DefaultValue>False</LinkOptionByteCount-DefaultValue>
+      <LinkOptionHide-DefaultValue>False</LinkOptionHide-DefaultValue>
+      <LinkOptionVect-DefaultValue />
+      <LinkOptionByteCountValue-DefaultValue>FF</LinkOptionByteCountValue-DefaultValue>
+      <LinkOptionJumpEntriesForPic-DefaultValue>False</LinkOptionJumpEntriesForPic-DefaultValue>
+      <LinkOptionTotalSize-DefaultValue>False</LinkOptionTotalSize-DefaultValue>
+      <LinkOptionCrc-DefaultValue>None</LinkOptionCrc-DefaultValue>
+      <LinkOptionJumpEntriesForPicSectionName-DefaultValue />
+      <LinkOptionLogo-DefaultValue>False</LinkOptionLogo-DefaultValue>
+      <LinkOptionCrcOutputAddress-DefaultValue>0</LinkOptionCrcOutputAddress-DefaultValue>
+      <LinkOptionPreLinkCommands-DefaultValue />
+      <LinkOptionCrcCalculationRange-DefaultValue />
+      <LinkOptionPostLinkCommands-DefaultValue />
+      <LinkOptionOtherAdditionalOptionsForLoadModule-DefaultValue />
+      <LinkOptionS9-DefaultValue>False</LinkOptionS9-DefaultValue>
+      <LinkOptionOtherAdditionalOptionsForConvertFile-DefaultValue />
+      <LinkOptionCommandLine-DefaultValue />
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8587956215507710328</TimeTagModified--0>
+      <LinkOptionCpu-0>False</LinkOptionCpu-0>
+      <LinkOptionForm-0>Absolute</LinkOptionForm-0>
+      <LinkOptionFormConvert-0>Stype</LinkOptionFormConvert-0>
+      <LinkOptionInput-0 />
+      <LinkOptionListShow-0>None</LinkOptionListShow-0>
+      <LinkOptionOptimize-0>None</LinkOptionOptimize-0>
+      <LinkOptionStack-0>False</LinkOptionStack-0>
+      <LinkOptionStart-0 />
+      <LinkOptionCompress-0>False</LinkOptionCompress-0>
+      <LinkOptionCpuInformation-0 />
+      <LinkOptionDebug-0>Debug</LinkOptionDebug-0>
+      <LinkOptionFSymbol-0 />
+      <LinkOptionLibrary-0 />
+      <LinkOptionOptimizeSymbolDelete-0>False</LinkOptionOptimizeSymbolDelete-0>
+      <LinkOptionRecordH-0>None</LinkOptionRecordH-0>
+      <LinkOptionShowSymbol-0>False</LinkOptionShowSymbol-0>
+      <LinkOptionAlignedSection-0 />
+      <LinkOptionCpuStride-0>False</LinkOptionCpuStride-0>
+      <LinkOptionMemory-0>False</LinkOptionMemory-0>
+      <LinkOptionOptimizeSameCode-0>False</LinkOptionOptimizeSameCode-0>
+      <LinkOptionOutputFolder-0>%BuildModeName%</LinkOptionOutputFolder-0>
+      <LinkOptionRecordS-0>None</LinkOptionRecordS-0>
+      <LinkOptionShowReference-0>False</LinkOptionShowReference-0>
+      <LinkOptionSystemLibrary-0 />
+      <LinkOptionBinary-0 />
+      <LinkOptionChangeMessageInformation-0>None</LinkOptionChangeMessageInformation-0>
+      <LinkOptionContiguousSection-0 />
+      <LinkOptionDividedConvertFile-0>False</LinkOptionDividedConvertFile-0>
+      <LinkOptionOutputFileName-0>%ProjectName%.abs</LinkOptionOutputFileName-0>
+      <LinkOptionRom-0 />
+      <LinkOptionSameSize-0>1E</LinkOptionSameSize-0>
+      <LinkOptionShowXreference-0>False</LinkOptionShowXreference-0>
+      <LinkOptionChangeMessageInformationNumber-0 />
+      <LinkOptionConvertFolder-0>%BuildModeName%</LinkOptionConvertFolder-0>
+      <LinkOptionDefine-0 />
+      <LinkOptionMap-0>False</LinkOptionMap-0>
+      <LinkOptionOptimizeShortFormat-0>False</LinkOptionOptimizeShortFormat-0>
+      <LinkOptionShowTotalSize-0>False</LinkOptionShowTotalSize-0>
+      <LinkOptionChangeMessageWarning-0>None</LinkOptionChangeMessageWarning-0>
+      <LinkOptionConvertFileName-0>%ProjectName%.mot</LinkOptionConvertFileName-0>
+      <LinkOptionEntry-0>False</LinkOptionEntry-0>
+      <LinkOptionMessage-0>NoMessage</LinkOptionMessage-0>
+      <LinkOptionOptimizeBranch-0>False</LinkOptionOptimizeBranch-0>
+      <LinkOptionShowVector-0>False</LinkOptionShowVector-0>
+      <LinkOptionChangeMessageWarningNumber-0 />
+      <LinkOptionEntryPoint-0 />
+      <LinkOptionMultiConvertFileName-0 />
+      <LinkOptionNoMessageErrorNumber-0 />
+      <LinkOptionSymbolForbid-0 />
+      <LinkOptionChangeMessageError-0>None</LinkOptionChangeMessageError-0>
+      <LinkOptionNoPrelink-0>Auto</LinkOptionNoPrelink-0>
+      <LinkOptionPadding-0>False</LinkOptionPadding-0>
+      <LinkOptionSameCodeForbid-0 />
+      <LinkOptionSpace-0>None</LinkOptionSpace-0>
+      <LinkOptionChangeMessageErrorNumber-0 />
+      <LinkOptionSectionForbid-0 />
+      <LinkOptionSpaceValue-0>FF</LinkOptionSpaceValue-0>
+      <LinkOptionVectN-0 />
+      <LinkOptionAbsoluteForbid-0 />
+      <LinkOptionByteCount-0>False</LinkOptionByteCount-0>
+      <LinkOptionHide-0>False</LinkOptionHide-0>
+      <LinkOptionVect-0 />
+      <LinkOptionByteCountValue-0>FF</LinkOptionByteCountValue-0>
+      <LinkOptionJumpEntriesForPic-0>False</LinkOptionJumpEntriesForPic-0>
+      <LinkOptionTotalSize-0>False</LinkOptionTotalSize-0>
+      <LinkOptionCrc-0>None</LinkOptionCrc-0>
+      <LinkOptionJumpEntriesForPicSectionName-0 />
+      <LinkOptionLogo-0>False</LinkOptionLogo-0>
+      <LinkOptionCrcOutputAddress-0>0</LinkOptionCrcOutputAddress-0>
+      <LinkOptionPreLinkCommands-0 />
+      <LinkOptionCrcCalculationRange-0 />
+      <LinkOptionPostLinkCommands-0 />
+      <LinkOptionOtherAdditionalOptionsForLoadModule-0 />
+      <LinkOptionS9-0>False</LinkOptionS9-0>
+      <LinkOptionOtherAdditionalOptionsForConvertFile-0 />
+      <LinkOptionCommandLine-0 />
+    </Instance>
+    <Instance Guid="df74c69e-635e-42d9-845e-14128ba4d48a">
+      <HexOptionForm-DefaultValue>Stype</HexOptionForm-DefaultValue>
+      <HexOptionOutput-DefaultValue>True</HexOptionOutput-DefaultValue>
+      <LinkOptionOtherAdditionalOptionsForConvertFile-DefaultValue />
+      <HexOptionCommandLine-DefaultValue />
+      <LinkOptionConvertFolder-DefaultValue>%BuildModeName%</LinkOptionConvertFolder-DefaultValue>
+      <LinkOptionRecordH-DefaultValue>None</LinkOptionRecordH-DefaultValue>
+      <LinkOptionConvertFileName-DefaultValue>%ProjectName%.mot</LinkOptionConvertFileName-DefaultValue>
+      <LinkOptionRecordS-DefaultValue>None</LinkOptionRecordS-DefaultValue>
+      <LinkOptionMultiConvertFileName-DefaultValue />
+      <LinkOptionSpace-DefaultValue>None</LinkOptionSpace-DefaultValue>
+      <LinkOptionSpaceValue-DefaultValue>FF</LinkOptionSpaceValue-DefaultValue>
+      <LinkOptionByteCount-DefaultValue>False</LinkOptionByteCount-DefaultValue>
+      <LinkOptionByteCountValue-DefaultValue>FF</LinkOptionByteCountValue-DefaultValue>
+      <LinkOptionCrc-DefaultValue>None</LinkOptionCrc-DefaultValue>
+      <LinkOptionCrcOutputAddress-DefaultValue>0</LinkOptionCrcOutputAddress-DefaultValue>
+      <LinkOptionCrcCalculationRange-DefaultValue />
+      <LinkOptionS9-DefaultValue>False</LinkOptionS9-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8588053514561269735</TimeTagModified--0>
+      <HexOptionForm-0>Stype</HexOptionForm-0>
+      <HexOptionOutput-0>True</HexOptionOutput-0>
+      <LinkOptionOtherAdditionalOptionsForConvertFile-0 />
+      <HexOptionCommandLine-0 />
+      <LinkOptionConvertFolder-0>%BuildModeName%</LinkOptionConvertFolder-0>
+      <LinkOptionRecordH-0>None</LinkOptionRecordH-0>
+      <LinkOptionConvertFileName-0>%ProjectName%.mot</LinkOptionConvertFileName-0>
+      <LinkOptionRecordS-0>None</LinkOptionRecordS-0>
+      <LinkOptionMultiConvertFileName-0 />
+      <LinkOptionSpace-0>None</LinkOptionSpace-0>
+      <LinkOptionSpaceValue-0>FF</LinkOptionSpaceValue-0>
+      <LinkOptionByteCount-0>False</LinkOptionByteCount-0>
+      <LinkOptionByteCountValue-0>FF</LinkOptionByteCountValue-0>
+      <LinkOptionCrc-0>None</LinkOptionCrc-0>
+      <LinkOptionCrcOutputAddress-0>0</LinkOptionCrcOutputAddress-0>
+      <LinkOptionCrcCalculationRange-0 />
+      <LinkOptionS9-0>False</LinkOptionS9-0>
+    </Instance>
+    <Instance Guid="fff50d2e-74da-44ea-90a8-c47756029e83">
+      <LibOptionForm-DefaultValue>LibraryU</LibOptionForm-DefaultValue>
+      <LibOptionInput-DefaultValue />
+      <LibOptionListShow-DefaultValue>List</LibOptionListShow-DefaultValue>
+      <LibOptionMemory-DefaultValue>False</LibOptionMemory-DefaultValue>
+      <LibOptionChangeMessageInformation-DefaultValue>None</LibOptionChangeMessageInformation-DefaultValue>
+      <LibOptionDebug-DefaultValue>Debug</LibOptionDebug-DefaultValue>
+      <LibOptionLibrary-DefaultValue />
+      <LibOptionShowSymbol-DefaultValue>False</LibOptionShowSymbol-DefaultValue>
+      <LibOptionChangeMessageInformationNumber-DefaultValue />
+      <LibOptionOutputFolder-DefaultValue>%BuildModeName%</LibOptionOutputFolder-DefaultValue>
+      <LibOptionShowSection-DefaultValue>False</LibOptionShowSection-DefaultValue>
+      <LibOptionSystemLibrary-DefaultValue />
+      <LibOptionBinary-DefaultValue />
+      <LibOptionChangeMessageWarning-DefaultValue>None</LibOptionChangeMessageWarning-DefaultValue>
+      <LibOptionOutputFileName-DefaultValue>%ProjectName%.lib</LibOptionOutputFileName-DefaultValue>
+      <LibOptionShowXreference-DefaultValue>False</LibOptionShowXreference-DefaultValue>
+      <LibOptionChangeMessageWarningNumber-DefaultValue />
+      <LibOptionMessage-DefaultValue>NoMessage</LibOptionMessage-DefaultValue>
+      <LibOptionNoPrelink-DefaultValue>Auto</LibOptionNoPrelink-DefaultValue>
+      <LibOptionShowTotalSize-DefaultValue>False</LibOptionShowTotalSize-DefaultValue>
+      <LibOptionChangeMessageError-DefaultValue>None</LibOptionChangeMessageError-DefaultValue>
+      <LibOptionNoMessageErrorNumber-DefaultValue />
+      <LibOptionShowVector-DefaultValue>False</LibOptionShowVector-DefaultValue>
+      <LibOptionChangeMessageErrorNumber-DefaultValue />
+      <LibOptionHide-DefaultValue>False</LibOptionHide-DefaultValue>
+      <LibOptionTotalSize-DefaultValue>False</LibOptionTotalSize-DefaultValue>
+      <LibOptionLogo-DefaultValue>False</LibOptionLogo-DefaultValue>
+      <LibOptionPreLibrarianCommands-DefaultValue />
+      <LibOptionPostLibrarianCommands-DefaultValue />
+      <LibOptionOtherAdditionalOptions-DefaultValue />
+      <LibOptionCommandLine-DefaultValue>-noprelink
+-form=library=u
+-output=%BuildModeName%\%ProjectName%.lib
+-list=%BuildModeName%\%ProjectName%.lbp
+-nologo
+-exit
+</LibOptionCommandLine-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8587956215507710328</TimeTagModified--0>
+      <LibOptionForm-0>LibraryU</LibOptionForm-0>
+      <LibOptionInput-0 />
+      <LibOptionListShow-0>List</LibOptionListShow-0>
+      <LibOptionMemory-0>False</LibOptionMemory-0>
+      <LibOptionChangeMessageInformation-0>None</LibOptionChangeMessageInformation-0>
+      <LibOptionDebug-0>Debug</LibOptionDebug-0>
+      <LibOptionLibrary-0 />
+      <LibOptionShowSymbol-0>False</LibOptionShowSymbol-0>
+      <LibOptionChangeMessageInformationNumber-0 />
+      <LibOptionOutputFolder-0>%BuildModeName%</LibOptionOutputFolder-0>
+      <LibOptionShowSection-0>False</LibOptionShowSection-0>
+      <LibOptionSystemLibrary-0 />
+      <LibOptionBinary-0 />
+      <LibOptionChangeMessageWarning-0>None</LibOptionChangeMessageWarning-0>
+      <LibOptionOutputFileName-0>%ProjectName%.lib</LibOptionOutputFileName-0>
+      <LibOptionShowXreference-0>False</LibOptionShowXreference-0>
+      <LibOptionChangeMessageWarningNumber-0 />
+      <LibOptionMessage-0>NoMessage</LibOptionMessage-0>
+      <LibOptionNoPrelink-0>Auto</LibOptionNoPrelink-0>
+      <LibOptionShowTotalSize-0>False</LibOptionShowTotalSize-0>
+      <LibOptionChangeMessageError-0>None</LibOptionChangeMessageError-0>
+      <LibOptionNoMessageErrorNumber-0 />
+      <LibOptionShowVector-0>False</LibOptionShowVector-0>
+      <LibOptionChangeMessageErrorNumber-0 />
+      <LibOptionHide-0>False</LibOptionHide-0>
+      <LibOptionTotalSize-0>False</LibOptionTotalSize-0>
+      <LibOptionLogo-0>False</LibOptionLogo-0>
+      <LibOptionPreLibrarianCommands-0 />
+      <LibOptionPostLibrarianCommands-0 />
+      <LibOptionOtherAdditionalOptions-0 />
+      <LibOptionCommandLine-0>-noprelink
+-form=library=u
+-output=%BuildModeName%\%ProjectName%.lib
+-list=%BuildModeName%\%ProjectName%.lbp
+-nologo
+-exit
+</LibOptionCommandLine-0>
+    </Instance>
+    <Instance Guid="9cb0ade0-b3cb-4e21-823c-290b5fdb5f1e">
+      <LbgOptionLanguage-DefaultValue>C</LbgOptionLanguage-DefaultValue>
+      <LbgOptionLibraryMode-DefaultValue>None</LbgOptionLibraryMode-DefaultValue>
+      <LbgOptionLogo-DefaultValue>False</LbgOptionLogo-DefaultValue>
+      <LbgOptionOptimize-DefaultValue>Level2</LbgOptionOptimize-DefaultValue>
+      <LbgOptionOutputFolder-DefaultValue>%BuildModeName%</LbgOptionOutputFolder-DefaultValue>
+      <LbgOptionGoptimize-DefaultValue>False</LbgOptionGoptimize-DefaultValue>
+      <LbgOptionHead-DefaultValue>Custom</LbgOptionHead-DefaultValue>
+      <LbgOptionOutputFileName-DefaultValue>%ProjectName%.lib</LbgOptionOutputFileName-DefaultValue>
+      <LbgOptionPreLibraryGenerateCommands-DefaultValue />
+      <LbgOptionFunctionalCutdown-DefaultValue>None</LbgOptionFunctionalCutdown-DefaultValue>
+      <LbgOptionHeadRuntime-DefaultValue>True</LbgOptionHeadRuntime-DefaultValue>
+      <LbgOptionPostLibraryGenerateCommands-DefaultValue />
+      <LbgOptionSpeedAndSize-DefaultValue>Size</LbgOptionSpeedAndSize-DefaultValue>
+      <LbgOptionHeadCtypeH-DefaultValue>False</LbgOptionHeadCtypeH-DefaultValue>
+      <LbgOptionLoop-DefaultValue>Auto</LbgOptionLoop-DefaultValue>
+      <LbgOptionOtherAdditionalOptions-DefaultValue />
+      <LbgOptionReent-DefaultValue>False</LbgOptionReent-DefaultValue>
+      <LbgOptionCommandLine-DefaultValue />
+      <LbgOptionHeadMathH-DefaultValue>False</LbgOptionHeadMathH-DefaultValue>
+      <LbgOptionLoopValue-DefaultValue>2</LbgOptionLoopValue-DefaultValue>
+      <LbgOptionSectionP-DefaultValue>P</LbgOptionSectionP-DefaultValue>
+      <LbgOptionHeadMathfH-DefaultValue>False</LbgOptionHeadMathfH-DefaultValue>
+      <LbgOptionInline-DefaultValue>Auto</LbgOptionInline-DefaultValue>
+      <LbgOptionSectionC-DefaultValue>C</LbgOptionSectionC-DefaultValue>
+      <LbgOptionHeadStdargH-DefaultValue>False</LbgOptionHeadStdargH-DefaultValue>
+      <LbgOptionInlineValue-DefaultValue>100</LbgOptionInlineValue-DefaultValue>
+      <LbgOptionSectionD-DefaultValue>D</LbgOptionSectionD-DefaultValue>
+      <LbgOptionFileInline-DefaultValue />
+      <LbgOptionHeadStdioH-DefaultValue>True</LbgOptionHeadStdioH-DefaultValue>
+      <LbgOptionSectionB-DefaultValue>B</LbgOptionSectionB-DefaultValue>
+      <LbgOptionCase-DefaultValue>Auto</LbgOptionCase-DefaultValue>
+      <LbgOptionHeadStdlibH-DefaultValue>True</LbgOptionHeadStdlibH-DefaultValue>
+      <LbgOptionSectionL-DefaultValue>L</LbgOptionSectionL-DefaultValue>
+      <LbgOptionHeadStringH-DefaultValue>True</LbgOptionHeadStringH-DefaultValue>
+      <LbgOptionSectionW-DefaultValue>W</LbgOptionSectionW-DefaultValue>
+      <LbgOptionVolatile-DefaultValue>False</LbgOptionVolatile-DefaultValue>
+      <LbgOptionConstCopy-DefaultValue>Auto</LbgOptionConstCopy-DefaultValue>
+      <LbgOptionHeadIos-DefaultValue>False</LbgOptionHeadIos-DefaultValue>
+      <LbgOptionNostuffB-DefaultValue>False</LbgOptionNostuffB-DefaultValue>
+      <LbgOptionConstDiv-DefaultValue>Auto</LbgOptionConstDiv-DefaultValue>
+      <LbgOptionHeadNew-DefaultValue>True</LbgOptionHeadNew-DefaultValue>
+      <LbgOptionNostuffD-DefaultValue>False</LbgOptionNostuffD-DefaultValue>
+      <LbgOptionHeadComplex-DefaultValue>False</LbgOptionHeadComplex-DefaultValue>
+      <LbgOptionLibrary-DefaultValue>Intrinsic</LbgOptionLibrary-DefaultValue>
+      <LbgOptionNostuffC-DefaultValue>False</LbgOptionNostuffC-DefaultValue>
+      <LbgOptionHeadString-DefaultValue>False</LbgOptionHeadString-DefaultValue>
+      <LbgOptionNostuffW-DefaultValue>False</LbgOptionNostuffW-DefaultValue>
+      <LbgOptionScope-DefaultValue>Auto</LbgOptionScope-DefaultValue>
+      <LbgOptionHeadComplexH-DefaultValue>False</LbgOptionHeadComplexH-DefaultValue>
+      <LbgOptionInstalign-DefaultValue>Noinstalign</LbgOptionInstalign-DefaultValue>
+      <LbgOptionSchedule-DefaultValue>Auto</LbgOptionSchedule-DefaultValue>
+      <LbgOptionApproxdiv-DefaultValue>False</LbgOptionApproxdiv-DefaultValue>
+      <LbgOptionHeadFenvH-DefaultValue>False</LbgOptionHeadFenvH-DefaultValue>
+      <LbgOptionNouseDiv-DefaultValue>True</LbgOptionNouseDiv-DefaultValue>
+      <LbgOptionEnableRegister-DefaultValue>False</LbgOptionEnableRegister-DefaultValue>
+      <LbgOptionHeadInttypesH-DefaultValue>False</LbgOptionHeadInttypesH-DefaultValue>
+      <LbgOptionHeadWcharH-DefaultValue>False</LbgOptionHeadWcharH-DefaultValue>
+      <LbgOptionSimpleFloatConv-DefaultValue>False</LbgOptionSimpleFloatConv-DefaultValue>
+      <LbgOptionFpu-DefaultValue>Fpu</LbgOptionFpu-DefaultValue>
+      <LbgOptionHeadWctypeH-DefaultValue>False</LbgOptionHeadWctypeH-DefaultValue>
+      <LbgOptionFloatOrder-DefaultValue>False</LbgOptionFloatOrder-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8588053514561269735</TimeTagModified--0>
+      <LbgOptionLanguage-0>C</LbgOptionLanguage-0>
+      <LbgOptionLibraryMode-0>None</LbgOptionLibraryMode-0>
+      <LbgOptionLogo-0>False</LbgOptionLogo-0>
+      <LbgOptionOptimize-0>Level2</LbgOptionOptimize-0>
+      <LbgOptionOutputFolder-0>%BuildModeName%</LbgOptionOutputFolder-0>
+      <LbgOptionGoptimize-0>False</LbgOptionGoptimize-0>
+      <LbgOptionHead-0>Custom</LbgOptionHead-0>
+      <LbgOptionOutputFileName-0>%ProjectName%.lib</LbgOptionOutputFileName-0>
+      <LbgOptionPreLibraryGenerateCommands-0 />
+      <LbgOptionFunctionalCutdown-0>None</LbgOptionFunctionalCutdown-0>
+      <LbgOptionPostLibraryGenerateCommands-0 />
+      <LbgOptionSpeedAndSize-0>Size</LbgOptionSpeedAndSize-0>
+      <LbgOptionHeadCtypeH-0>False</LbgOptionHeadCtypeH-0>
+      <LbgOptionLoop-0>Auto</LbgOptionLoop-0>
+      <LbgOptionOtherAdditionalOptions-0 />
+      <LbgOptionReent-0>False</LbgOptionReent-0>
+      <LbgOptionCommandLine-0 />
+      <LbgOptionHeadMathH-0>False</LbgOptionHeadMathH-0>
+      <LbgOptionLoopValue-0>2</LbgOptionLoopValue-0>
+      <LbgOptionSectionP-0>P</LbgOptionSectionP-0>
+      <LbgOptionHeadMathfH-0>False</LbgOptionHeadMathfH-0>
+      <LbgOptionInline-0>Auto</LbgOptionInline-0>
+      <LbgOptionSectionC-0>C</LbgOptionSectionC-0>
+      <LbgOptionHeadStdargH-0>False</LbgOptionHeadStdargH-0>
+      <LbgOptionInlineValue-0>100</LbgOptionInlineValue-0>
+      <LbgOptionSectionD-0>D</LbgOptionSectionD-0>
+      <LbgOptionFileInline-0 />
+      <LbgOptionHeadStdioH-0>True</LbgOptionHeadStdioH-0>
+      <LbgOptionSectionB-0>B</LbgOptionSectionB-0>
+      <LbgOptionCase-0>Auto</LbgOptionCase-0>
+      <LbgOptionHeadStdlibH-0>True</LbgOptionHeadStdlibH-0>
+      <LbgOptionSectionL-0>L</LbgOptionSectionL-0>
+      <LbgOptionHeadStringH-0>True</LbgOptionHeadStringH-0>
+      <LbgOptionSectionW-0>W</LbgOptionSectionW-0>
+      <LbgOptionVolatile-0>False</LbgOptionVolatile-0>
+      <LbgOptionConstCopy-0>Auto</LbgOptionConstCopy-0>
+      <LbgOptionHeadIos-0>False</LbgOptionHeadIos-0>
+      <LbgOptionNostuffB-0>False</LbgOptionNostuffB-0>
+      <LbgOptionConstDiv-0>Auto</LbgOptionConstDiv-0>
+      <LbgOptionHeadNew-0>True</LbgOptionHeadNew-0>
+      <LbgOptionNostuffD-0>False</LbgOptionNostuffD-0>
+      <LbgOptionHeadComplex-0>False</LbgOptionHeadComplex-0>
+      <LbgOptionLibrary-0>Intrinsic</LbgOptionLibrary-0>
+      <LbgOptionNostuffC-0>False</LbgOptionNostuffC-0>
+      <LbgOptionHeadString-0>False</LbgOptionHeadString-0>
+      <LbgOptionNostuffW-0>False</LbgOptionNostuffW-0>
+      <LbgOptionScope-0>Auto</LbgOptionScope-0>
+      <LbgOptionHeadComplexH-0>False</LbgOptionHeadComplexH-0>
+      <LbgOptionInstalign-0>Noinstalign</LbgOptionInstalign-0>
+      <LbgOptionSchedule-0>Auto</LbgOptionSchedule-0>
+      <LbgOptionApproxdiv-0>False</LbgOptionApproxdiv-0>
+      <LbgOptionHeadFenvH-0>False</LbgOptionHeadFenvH-0>
+      <LbgOptionNouseDiv-0>True</LbgOptionNouseDiv-0>
+      <LbgOptionEnableRegister-0>False</LbgOptionEnableRegister-0>
+      <LbgOptionHeadInttypesH-0>False</LbgOptionHeadInttypesH-0>
+      <LbgOptionHeadWcharH-0>False</LbgOptionHeadWcharH-0>
+      <LbgOptionSimpleFloatConv-0>False</LbgOptionSimpleFloatConv-0>
+      <LbgOptionFpu-0>Fpu</LbgOptionFpu-0>
+      <LbgOptionHeadWctypeH-0>False</LbgOptionHeadWctypeH-0>
+      <LbgOptionFloatOrder-0>False</LbgOptionFloatOrder-0>
+    </Instance>
+    <Instance Guid="418104fd-31b7-4e10-a52a-f3a40218ae47">
+      <ItemAddTime>635318846895400054</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="2a16567e-8174-41dd-a27a-386158a175b9">
+      <ItemAddTime>635318846895400054</ItemAddTime>
+      <ItemAddTimeCount>1</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="7fee077f-b7de-40c9-ae6f-270d4788dfb2">
+      <ItemAddTime>635318846895400054</ItemAddTime>
+      <ItemAddTimeCount>2</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="d29759b5-0b65-433e-a5dd-eabaa827926e">
+      <ItemAddTime>635318846895400054</ItemAddTime>
+      <ItemAddTimeCount>3</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="62cdd7dc-f110-46fd-b286-34e5470c8adf">
+      <ItemAddTime>635318846895400054</ItemAddTime>
+      <ItemAddTimeCount>4</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="0c3f9205-2818-4d8b-9fdb-70bc98dc06ad">
+      <ItemAddTime>635318846895400054</ItemAddTime>
+      <ItemAddTimeCount>5</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="9aa3586d-4df3-430e-8496-da67b6df11c8">
+      <ItemAddTime>635318846895400054</ItemAddTime>
+      <ItemAddTimeCount>10</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="3a8e9b1d-6baa-4c8d-afbf-6aba1462f4f6">
+      <ItemAddTime>635318846895400054</ItemAddTime>
+      <ItemAddTimeCount>11</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="e4e95360-f85f-4469-b053-ce16e92de312">
+      <ItemAddTime>635318846895400054</ItemAddTime>
+      <ItemAddTimeCount>12</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="c68ccba7-5feb-4fc1-b6c6-1aaf66aa1e21">
+      <ItemAddTime>635318846895400054</ItemAddTime>
+      <ItemAddTimeCount>14</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="2aeaad0c-aef9-466b-acb5-fc12dd38b66a">
+      <ItemAddTime>635318846895400054</ItemAddTime>
+      <ItemAddTimeCount>17</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="e5d7bf19-a826-482d-a700-42d7d39b557a">
+      <ItemAddTime>635318846895400054</ItemAddTime>
+      <ItemAddTimeCount>18</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="d15e7073-c94f-4650-ac1c-2508bdbbe93a">
+      <ItemAddTime>635318847616332867</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="615ab7b6-f056-4147-9b71-8f13cd6dfcc5">
+      <ItemAddTime>635318847616332867</ItemAddTime>
+      <ItemAddTimeCount>2</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="3f36ed22-46b8-4376-98de-6f9973dd0af1">
+      <ItemAddTime>635318848092228250</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="f22bd1a3-ee49-4534-bd7c-71c786e19406">
+      <ItemAddTime>635318848092228250</ItemAddTime>
+      <ItemAddTimeCount>1</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="490f6f78-f35a-4c25-9787-987f826efe89">
+      <ItemAddTime>635318848092228250</ItemAddTime>
+      <ItemAddTimeCount>3</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="e2945293-5f45-4a79-92cb-e335f3cb6c87">
+      <ItemAddTime>635321518825483024</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="1df32ed1-e7ca-45d9-bf52-f5aa86354e4f">
+      <ItemAddTime>635414911883310803</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="6085e2ca-763c-4b27-8a8b-20e620c48494">
+      <ItemAddTime>635416144333955242</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="a7be515f-f007-45ed-9059-4e1500c0f74d">
+      <TimeTagModified-SourceItem0--0>-8588053513959375754</TimeTagModified-SourceItem0--0>
+      <SourceItem0-IsLockedByUser>False</SourceItem0-IsLockedByUser>
+      <SourceItem0-BuildingTarget-0>True</SourceItem0-BuildingTarget-0>
+      <SourceItem0-IndividualCompileOption-0>False</SourceItem0-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem1--0>-8588053513959375754</TimeTagModified-SourceItem1--0>
+      <SourceItem1-IsLockedByUser>False</SourceItem1-IsLockedByUser>
+      <SourceItem1-BuildingTarget-0>True</SourceItem1-BuildingTarget-0>
+      <SourceItem1-IndividualCompileOption-0>False</SourceItem1-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem2--0>-8588053513959375754</TimeTagModified-SourceItem2--0>
+      <SourceItem2-IsLockedByUser>False</SourceItem2-IsLockedByUser>
+      <SourceItem2-BuildingTarget-0>True</SourceItem2-BuildingTarget-0>
+      <SourceItem2-IndividualCompileOption-0>False</SourceItem2-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem3--0>-8588053513959375754</TimeTagModified-SourceItem3--0>
+      <SourceItem3-IsLockedByUser>False</SourceItem3-IsLockedByUser>
+      <SourceItem3-BuildingTarget-0>True</SourceItem3-BuildingTarget-0>
+      <SourceItem3-IndividualCompileOption-0>False</SourceItem3-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem4--0>-8588053513959375754</TimeTagModified-SourceItem4--0>
+      <SourceItem4-IsLockedByUser>False</SourceItem4-IsLockedByUser>
+      <SourceItem4-BuildingTarget-0>True</SourceItem4-BuildingTarget-0>
+      <SourceItem4-IndividualCompileOption-0>False</SourceItem4-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem5--0>-8588053513959375754</TimeTagModified-SourceItem5--0>
+      <SourceItem5-IsLockedByUser>False</SourceItem5-IsLockedByUser>
+      <SourceItem5-BuildingTarget-0>True</SourceItem5-BuildingTarget-0>
+      <SourceItem5-IndividualCompileOption-0>False</SourceItem5-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem6--0>-8588053513959375754</TimeTagModified-SourceItem6--0>
+      <SourceItem6-IsLockedByUser>False</SourceItem6-IsLockedByUser>
+      <SourceItem6-BuildingTarget-0>True</SourceItem6-BuildingTarget-0>
+      <SourceItem6-IndividualCompileOption-0>False</SourceItem6-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem7--0>-8588053513959375754</TimeTagModified-SourceItem7--0>
+      <SourceItem7-IsLockedByUser>False</SourceItem7-IsLockedByUser>
+      <SourceItem7-BuildingTarget-0>True</SourceItem7-BuildingTarget-0>
+      <SourceItem7-IndividualCompileOption-0>False</SourceItem7-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem8--0>-8588053513959375754</TimeTagModified-SourceItem8--0>
+      <SourceItem8-IsLockedByUser>False</SourceItem8-IsLockedByUser>
+      <SourceItem8-BuildingTarget-0>True</SourceItem8-BuildingTarget-0>
+      <SourceItem8-IndividualCompileOption-0>False</SourceItem8-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem9--0>-8588053513959375754</TimeTagModified-SourceItem9--0>
+      <SourceItem9-IsLockedByUser>False</SourceItem9-IsLockedByUser>
+      <SourceItem9-BuildingTarget-0>True</SourceItem9-BuildingTarget-0>
+      <SourceItem9-IndividualCompileOption-0>False</SourceItem9-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem10--0>-8588053513959375754</TimeTagModified-SourceItem10--0>
+      <SourceItem10-IsLockedByUser>False</SourceItem10-IsLockedByUser>
+      <SourceItem10-BuildingTarget-0>True</SourceItem10-BuildingTarget-0>
+      <SourceItem10-IndividualCompileOption-0>False</SourceItem10-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem11--0>-8588053513959375754</TimeTagModified-SourceItem11--0>
+      <SourceItem11-IsLockedByUser>False</SourceItem11-IsLockedByUser>
+      <SourceItem11-BuildingTarget-0>True</SourceItem11-BuildingTarget-0>
+      <SourceItem11-IndividualCompileOption-0>False</SourceItem11-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem12--0>-8588053513238442941</TimeTagModified-SourceItem12--0>
+      <SourceItem12-IsLockedByUser>False</SourceItem12-IsLockedByUser>
+      <SourceItem12-BuildingTarget-0>True</SourceItem12-BuildingTarget-0>
+      <SourceItem12-IndividualCompileOption-0>False</SourceItem12-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem14--0>-8588053513238442941</TimeTagModified-SourceItem14--0>
+      <SourceItem14-IsLockedByUser>False</SourceItem14-IsLockedByUser>
+      <SourceItem14-BuildingTarget-0>True</SourceItem14-BuildingTarget-0>
+      <SourceItem14-IndividualCompileOption-0>False</SourceItem14-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem15--0>-8588053512762547558</TimeTagModified-SourceItem15--0>
+      <SourceItem15-IsLockedByUser>False</SourceItem15-IsLockedByUser>
+      <SourceItem15-BuildingTarget-0>True</SourceItem15-BuildingTarget-0>
+      <SourceItem15-IndividualCompileOption-0>False</SourceItem15-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem16--0>-8588053512762547558</TimeTagModified-SourceItem16--0>
+      <SourceItem16-IsLockedByUser>False</SourceItem16-IsLockedByUser>
+      <SourceItem16-BuildingTarget-0>True</SourceItem16-BuildingTarget-0>
+      <SourceItem16-IndividualCompileOption-0>False</SourceItem16-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem17--0>-8588053512762547558</TimeTagModified-SourceItem17--0>
+      <SourceItem17-IsLockedByUser>False</SourceItem17-IsLockedByUser>
+      <SourceItem17-BuildingTarget-0>True</SourceItem17-BuildingTarget-0>
+      <SourceItem17-IndividualCompileOption-0>False</SourceItem17-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem18--0>-8588050842029292784</TimeTagModified-SourceItem18--0>
+      <SourceItem18-IsLockedByUser>False</SourceItem18-IsLockedByUser>
+      <SourceItem18-BuildingTarget-0>True</SourceItem18-BuildingTarget-0>
+      <SourceItem18-IndividualCompileOption-0>False</SourceItem18-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem19--0>-8587957448971465005</TimeTagModified-SourceItem19--0>
+      <SourceItem19-IsLockedByUser>False</SourceItem19-IsLockedByUser>
+      <SourceItem19-BuildingTarget-0>True</SourceItem19-BuildingTarget-0>
+      <SourceItem19-IndividualCompileOption-0>False</SourceItem19-IndividualCompileOption-0>
+    </Instance>
+    <Instance Guid="c20a78d9-8038-46fe-9b87-bc2fa2aa9bdc">
+      <TimeTagModified-SourceItem13--0>-8587956216520820566</TimeTagModified-SourceItem13--0>
+      <SourceItem13-IsLockedByUser>False</SourceItem13-IsLockedByUser>
+      <SourceItem13-BuildingTarget-0>True</SourceItem13-BuildingTarget-0>
+      <SourceItem13-IndividualAssembleOption-0>False</SourceItem13-IndividualAssembleOption-0>
+    </Instance>
+  </Class>
+  <Class Guid="44fa27c9-0aa0-4297-bd3b-2c5c5bdb8881">
+    <Instance Guid="44fa27c9-0aa0-4297-bd3b-2c5c5bdb8881">
+      <IsLibraryMode>True</IsLibraryMode>
+      <StartUpCategoryItem>00000000-0000-0000-0000-000000000000</StartUpCategoryItem>
+    </Instance>
+  </Class>
+  <Class Guid="a29a09ee-92c3-4ce7-9586-a1b058043f92">
+    <Instance Guid="a29a09ee-92c3-4ce7-9586-a1b058043f92">
+      <ProjectGeneratr-GeneratedFile0 />
+    </Instance>
+  </Class>
+  <Class Guid="31a86ad3-37bd-4846-aff2-e08abdc00197">
+    <Instance Guid="31a86ad3-37bd-4846-aff2-e08abdc00197">
+      <DeviceNameOnCreateStartup>R5F563NBDxFP</DeviceNameOnCreateStartup>
+    </Instance>
+  </Class>
+  <Class Guid="78a5c5cd-76cb-4bcc-a031-3020011fbc9a">
+    <Instance Guid="622c849e-dc20-4eea-88c7-afb89e992154">
+      <MemoCount>0</MemoCount>
+    </Instance>
+  </Class>
+  <Class Guid="2a2c2a43-ecdb-4e88-80bd-e75f3e33db90">
+    <Instance Guid="2a2c2a43-ecdb-4e88-80bd-e75f3e33db90">
+      <ProductVersion>4.01.00.00</ProductVersion>
+    </Instance>
+  </Class>
+</CubeSuiteProject>
Index: uKadecot/trunk/csp/tools/DefToEqu.js
===================================================================
--- uKadecot/trunk/csp/tools/DefToEqu.js	(revision 101)
+++ uKadecot/trunk/csp/tools/DefToEqu.js	(revision 101)
@@ -0,0 +1,36 @@
+var fs = WScript.CreateObject("Scripting.FileSystemObject");
+
+args = WScript.Arguments;
+
+if(args.length >= 2)
+{
+	var istrm = fs.OpenTextFile(args(0)); // offset.h
+	var ostrm = fs.CreateTextFile(args(1)); // offset.inc
+
+	ostrm.WriteLine("; offset.inc");
+	ostrm.WriteLine("");
+
+	var line;
+	var newline;
+
+	while(!istrm.AtEndOfStream){
+		line = istrm.ReadLine();
+
+		re=/\s+$/;
+		newline = line.replace(re, "");
+		re=/^#define\s+([0-9|a-z|A-Z|_]+)\s+(.+)$/;
+		if(newline.search(re) == -1)
+			continue;
+
+		var value = newline.replace(re, "$2");
+		re2=/^0x([0-9A-Fa-f]+)$/;
+		if(value.search(re2) != -1)
+			value = "0" + value.replace(re2, "$1") + "H";
+
+		newline = newline.replace(re, "	$1	.equ	" + value);
+
+		ostrm.WriteLine(newline);
+	}
+	istrm.Close();
+	ostrm.Close();
+}
Index: uKadecot/trunk/csp/tools/cmp_update.js
===================================================================
--- uKadecot/trunk/csp/tools/cmp_update.js	(revision 101)
+++ uKadecot/trunk/csp/tools/cmp_update.js	(revision 101)
@@ -0,0 +1,82 @@
+var fs = WScript.CreateObject("Scripting.FileSystemObject");
+
+function Compare(a, b)
+{
+	var stream = WScript.CreateObject('ADODB.Stream');
+	//stream.Type=1;//1=binary,2=text
+	stream.type = 2;	//adTypeText
+	stream.charset = "ascii";
+
+	stream.Open();
+	stream.LoadFromFile(fs.GetAbsolutePathName(a));
+	//var fa = stream.Read(-1);//-1:read all , -2 : read line
+	var fa = stream.ReadText();
+	stream.Close();
+
+	stream.Open();
+	stream.LoadFromFile(fs.GetAbsolutePathName(b));
+	//var fb = stream.Read(-1);
+	var fb = stream.ReadText();
+	stream.Close();
+
+	if (fa.length != fb.length)
+		return false;
+
+	for (var i = 0; i < fa.length; i++) {
+		if(fa.charCodeAt(i) != fb.charCodeAt(i))
+			return false;
+	}
+
+	return true;
+}
+
+args = WScript.Arguments;
+
+if(args.length >= 2)
+{
+	var src_file = args(0);
+	var dst_file = args(1);
+
+	if(fs.FileExists(src_file))
+	{
+		if(fs.FileExists(dst_file))
+		{
+			var src = fs.GetFile(src_file);
+			var dst = fs.GetFile(dst_file);
+
+			if(!Compare(src, dst))
+			{
+				fs.CopyFile(src_file, dst_file, true);
+
+				WScript.StdOut.Write(dst_file);
+				WScript.StdOut.WriteLine("ðRs[µÜµ½B");
+			}
+		}
+		else
+		{
+			fs.CopyFile(src_file, dst_file);
+
+			WScript.StdOut.Write(dst_file);
+			WScript.StdOut.WriteLine("ðRs[µÜµ½B");
+		}
+	}
+	else
+	{
+		if(fs.FileExists(dst_file))
+		{
+			var dst = fs.GetFile(dst_file);
+			
+			fs.DeleteFile(dst_file);
+
+			WScript.StdOut.Write(dst_file);
+			WScript.StdOut.WriteLine("ðíµÜµ½B");
+		}
+		else
+		{
+			WScript.StdOut.WriteLine("wè³ê½t@Cª èÜ¹ñB");
+			WScript.StdOut.WriteLine(src_file);
+			WScript.StdOut.WriteLine(dst_file);
+		}
+	}
+}
+
Index: uKadecot/trunk/csp/tools/update.js
===================================================================
--- uKadecot/trunk/csp/tools/update.js	(revision 101)
+++ uKadecot/trunk/csp/tools/update.js	(revision 101)
@@ -0,0 +1,52 @@
+var fs = WScript.CreateObject("Scripting.FileSystemObject");
+
+args = WScript.Arguments;
+
+if(args.length >= 2)
+{
+	var src_file = args(0);
+	var dst_file = args(1);
+
+	if(fs.FileExists(src_file))
+	{
+		if(fs.FileExists(dst_file))
+		{
+			var src = fs.GetFile(src_file);
+			var dst = fs.GetFile(dst_file);
+
+			if(src.DateLastModified > dst.DateLastModified)
+			{
+				fs.CopyFile(src_file, dst_file, true);
+
+				WScript.StdOut.Write(dst_file);
+				WScript.StdOut.WriteLine("ðRs[µÜµ½B");
+			}
+		}
+		else
+		{
+			fs.CopyFile(src_file, dst_file);
+
+			WScript.StdOut.Write(dst_file);
+			WScript.StdOut.WriteLine("ðRs[µÜµ½B");
+		}
+	}
+	else
+	{
+		if(fs.FileExists(dst_file))
+		{
+			var dst = fs.GetFile(dst_file);
+			
+			fs.DeleteFile(dst_file);
+
+			WScript.StdOut.Write(dst_file);
+			WScript.StdOut.WriteLine("ðíµÜµ½B");
+		}
+		else
+		{
+			WScript.StdOut.WriteLine("wè³ê½t@Cª èÜ¹ñB");
+			WScript.StdOut.WriteLine(src_file);
+			WScript.StdOut.WriteLine(dst_file);
+		}
+	}
+}
+
Index: uKadecot/trunk/csp/ukadecot/cfg/cfg.mtsp
===================================================================
--- uKadecot/trunk/csp/ukadecot/cfg/cfg.mtsp	(revision 101)
+++ uKadecot/trunk/csp/ukadecot/cfg/cfg.mtsp	(revision 101)
@@ -0,0 +1,1143 @@
+<CubeSuiteProject>
+  <ProductVersion>4.02.00.00</ProductVersion>
+  <Class Guid="68f4a651-b9cd-473b-a595-b00447132ffa">
+    <Instance Guid="00000000-0000-0000-0000-000000000000">
+      <FormatVersion>2.0</FormatVersion>
+      <FileVersion>4.2</FileVersion>
+      <ProjectGuid>7a554b30-602c-45a8-8757-edc7ca566583</ProjectGuid>
+      <ProjectItemGuid>cbfe3e66-1679-4067-a2f3-6ff158c5f23c</ProjectItemGuid>
+      <FileCategoryGuid>6fd44e60-2970-4c12-a5c6-534ec9339dd6</FileCategoryGuid>
+      <Property>fb98844b-2c27-4275-9804-f6e63e204da0</Property>
+    </Instance>
+    <Instance Guid="dead237c-631a-45e3-81f9-46146a1fb78e">
+      <Name>cfg1_out.c</Name>
+      <Type>File</Type>
+      <RelativePath>cfg1_out.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>6fd44e60-2970-4c12-a5c6-534ec9339dd6</ParentItem>
+      <Property>9c6d89b2-a4bb-4d45-9be2-57738bc0fd85</Property>
+    </Instance>
+  </Class>
+  <Class Guid="fb98844b-2c27-4275-9804-f6e63e204da0">
+    <Instance Guid="2a349cb6-b982-4ade-adcd-104b883ad81c">
+      <MemoCount>0</MemoCount>
+    </Instance>
+  </Class>
+  <Class Guid="0d548289-d5e9-4893-9a8f-9374b13f19a9">
+    <Instance Guid="9c6d89b2-a4bb-4d45-9be2-57738bc0fd85">
+      <MemoCount>0</MemoCount>
+    </Instance>
+  </Class>
+  <Class Guid="8fb9c1f6-d351-4d10-8d99-bf5b3015b84c">
+    <Instance Guid="00000000-0000-0000-0000-000000000000">
+      <UsingPlatformGuid>500ba51a-4219-4828-b4be-80f54d6d3551</UsingPlatformGuid>
+    </Instance>
+  </Class>
+  <Class Guid="c325714f-8f51-484b-9e96-b4b59c0fb263">
+    <Instance Guid="c325714f-8f51-484b-9e96-b4b59c0fb263">
+      <DeviceManager>0e793ff3-2e3f-43c0-bdc9-926269595403</DeviceManager>
+    </Instance>
+  </Class>
+  <Class Guid="0e793ff3-2e3f-43c0-bdc9-926269595403">
+    <Instance Guid="0e793ff3-2e3f-43c0-bdc9-926269595403">
+      <DataFormatVersion>1.0</DataFormatVersion>
+    </Instance>
+    <Instance Guid="2a81c37a-5015-44c2-9f40-e58b669eec75">
+      <DeviceName>R5F563NBDxFP</DeviceName>
+      <MemoCount>0</MemoCount>
+    </Instance>
+  </Class>
+  <Class Guid="873c9a58-9bc5-439a-b476-78629a4553ed">
+    <Instance Guid="873c9a58-9bc5-439a-b476-78629a4553ed">
+      <ProjectDeviceChangedCounter>0</ProjectDeviceChangedCounter>
+      <ProjectInitialDeviceName>R5F563NBDxFP</ProjectInitialDeviceName>
+    </Instance>
+  </Class>
+  <Class Guid="c3835e31-dea3-4c93-b02b-d2db997f7630">
+    <Instance Guid="c3835e31-dea3-4c93-b02b-d2db997f7630">
+      <BuildToolManager>3a79707d-5977-45f7-ac11-19c35e333132</BuildToolManager>
+    </Instance>
+  </Class>
+  <Class Guid="3a79707d-5977-45f7-ac11-19c35e333132">
+    <Instance Guid="3a79707d-5977-45f7-ac11-19c35e333132">
+      <DataFormatVersion>1.2</DataFormatVersion>
+      <BuildModeCount>1</BuildModeCount>
+      <BuildMode0>RABlAGYAYQB1AGwAdABCAHUAaQBsAGQA</BuildMode0>
+      <BatchBuildFlag0>False</BatchBuildFlag0>
+      <CurrentBuildMode>DefaultBuild</CurrentBuildMode>
+      <SourceItemGuid0>dead237c-631a-45e3-81f9-46146a1fb78e</SourceItemGuid0>
+      <SourceItemType0>CSource</SourceItemType0>
+      <SourceItemCount>1</SourceItemCount>
+      <LastDeviceChangedCounter>0</LastDeviceChangedCounter>
+    </Instance>
+    <Instance Guid="9e208646-ccba-4100-a676-29b1efe6545f">
+      <AsmOptionInclude-DefaultValue />
+      <BuildMode-DefaultValue>DefaultBuild</BuildMode-DefaultValue>
+      <COptionInclude-DefaultValue />
+      <GeneralOptionIsa-DefaultValue>RXv1</GeneralOptionIsa-DefaultValue>
+      <GeneralOptionOutput-DefaultValue>LoadModuleFile</GeneralOptionOutput-DefaultValue>
+      <GeneralOptionPic-DefaultValue>False</GeneralOptionPic-DefaultValue>
+      <GeneralOptionSimultaneousBuild-DefaultValue>True</GeneralOptionSimultaneousBuild-DefaultValue>
+      <HexOptionOutput-DefaultValue>True</HexOptionOutput-DefaultValue>
+      <LibOptionDebug-DefaultValue>Debug</LibOptionDebug-DefaultValue>
+      <LinkOptionLibrary-DefaultValue />
+      <Memo-DefaultValue />
+      <OutputMessageFormat-DefaultValue>%TargetFiles%</OutputMessageFormat-DefaultValue>
+      <AsmOptionSystemInclude-DefaultValue />
+      <COptionSystemInclude-DefaultValue />
+      <CompilerVersion-DefaultValue>
+
+0</CompilerVersion-DefaultValue>
+      <DependencyFileExistCheckingType-DefaultValue>Rebuild</DependencyFileExistCheckingType-DefaultValue>
+      <FormatBuildOptionList-DefaultValue>%TargetFiles% : %Program% %Options%</FormatBuildOptionList-DefaultValue>
+      <GeneralOptionCpu-DefaultValue>RX600</GeneralOptionCpu-DefaultValue>
+      <GeneralOptionOutputFolder-DefaultValue>%BuildModeName%</GeneralOptionOutputFolder-DefaultValue>
+      <GeneralOptionPid-DefaultValue>None</GeneralOptionPid-DefaultValue>
+      <HexOptionForm-DefaultValue>Stype</HexOptionForm-DefaultValue>
+      <LinkOptionDebug-DefaultValue>Debug</LinkOptionDebug-DefaultValue>
+      <AsmOptionDefine-DefaultValue />
+      <COptionDefine-DefaultValue />
+      <EnsureCompatibilityOfPathAndLinkageOrder-DefaultValue>False</EnsureCompatibilityOfPathAndLinkageOrder-DefaultValue>
+      <GeneralOptionFpu-DefaultValue>Auto</GeneralOptionFpu-DefaultValue>
+      <GeneralOptionNousePidRegister-DefaultValue>True</GeneralOptionNousePidRegister-DefaultValue>
+      <LinkOptionConvertFolder-DefaultValue>%BuildModeName%</LinkOptionConvertFolder-DefaultValue>
+      <LinkOptionOptimize-DefaultValue>None</LinkOptionOptimize-DefaultValue>
+      <AsmOptionDebug-DefaultValue>True</AsmOptionDebug-DefaultValue>
+      <COptionDebug-DefaultValue>True</COptionDebug-DefaultValue>
+      <GeneralOptionEndian-DefaultValue>Little</GeneralOptionEndian-DefaultValue>
+      <LinkOptionConvertFileName-DefaultValue>%ProjectName%.mot</LinkOptionConvertFileName-DefaultValue>
+      <LinkOptionOptimizeSymbolDelete-DefaultValue>False</LinkOptionOptimizeSymbolDelete-DefaultValue>
+      <PreBuildCommands-DefaultValue />
+      <AsmOptionGoptimize-DefaultValue>False</AsmOptionGoptimize-DefaultValue>
+      <COptionOptimize-DefaultValue>Level2</COptionOptimize-DefaultValue>
+      <GeneralOptionRound-DefaultValue>Nearest</GeneralOptionRound-DefaultValue>
+      <LinkOptionMultiConvertFileName-DefaultValue />
+      <LinkOptionOptimizeSameCode-DefaultValue>False</LinkOptionOptimizeSameCode-DefaultValue>
+      <PostBuildCommands-DefaultValue />
+      <AsmOptionListFile-DefaultValue>False</AsmOptionListFile-DefaultValue>
+      <COptionGoptimize-DefaultValue>False</COptionGoptimize-DefaultValue>
+      <GeneralOptionDenormalize-DefaultValue>Off</GeneralOptionDenormalize-DefaultValue>
+      <LinkOptionSameSize-DefaultValue>1E</LinkOptionSameSize-DefaultValue>
+      <AsmOptionShowConditionals-DefaultValue>False</AsmOptionShowConditionals-DefaultValue>
+      <COptionSpeedAndSize-DefaultValue>Size</COptionSpeedAndSize-DefaultValue>
+      <GeneralOptionDblSize-DefaultValue>SinglePrecision</GeneralOptionDblSize-DefaultValue>
+      <LinkOptionOptimizeShortFormat-DefaultValue>False</LinkOptionOptimizeShortFormat-DefaultValue>
+      <AsmOptionShowDefinitions-DefaultValue>False</AsmOptionShowDefinitions-DefaultValue>
+      <COptionListfile-DefaultValue>False</COptionListfile-DefaultValue>
+      <GeneralOptionIntToShort-DefaultValue>False</GeneralOptionIntToShort-DefaultValue>
+      <LinkOptionOptimizeBranch-DefaultValue>False</LinkOptionOptimizeBranch-DefaultValue>
+      <AsmOptionShowExpansions-DefaultValue>False</AsmOptionShowExpansions-DefaultValue>
+      <COptionShowSource-DefaultValue>False</COptionShowSource-DefaultValue>
+      <GeneralOptionSignedChar-DefaultValue>Unsigned</GeneralOptionSignedChar-DefaultValue>
+      <LinkOptionStart-DefaultValue>B_1,R_1,B_2,R_2,B,R,SU,SI/04,PResetPRG/0FFFF8000,C_1,C_2,C,C$DSEC,C$BSEC,C$INIT,C$VTBL,C$VECT,D_1,D_2,D,P,PIntPRG,W_1,W_2,W,L/0FFFF8100,FIXEDVECT/0FFFFFFD0</LinkOptionStart-DefaultValue>
+      <COptionShowConditionals-DefaultValue>False</COptionShowConditionals-DefaultValue>
+      <GeneralOptionOtherAdditionalOptions-DefaultValue />
+      <GeneralOptionSignedBitfield-DefaultValue>Unsigned</GeneralOptionSignedBitfield-DefaultValue>
+      <COptionShowDefinitions-DefaultValue>False</COptionShowDefinitions-DefaultValue>
+      <GeneralOptionAutoEnum-DefaultValue>False</GeneralOptionAutoEnum-DefaultValue>
+      <COptionShowExpansions-DefaultValue>False</COptionShowExpansions-DefaultValue>
+      <GeneralOptionBitOrder-DefaultValue>Right</GeneralOptionBitOrder-DefaultValue>
+      <GeneralOptionPack-DefaultValue>False</GeneralOptionPack-DefaultValue>
+      <GeneralOptionException-DefaultValue>False</GeneralOptionException-DefaultValue>
+      <GeneralOptionRtti-DefaultValue>False</GeneralOptionRtti-DefaultValue>
+      <GeneralOptionFintRegister-DefaultValue>None</GeneralOptionFintRegister-DefaultValue>
+      <GeneralOptionBranch-DefaultValue>Branch24</GeneralOptionBranch-DefaultValue>
+      <GeneralOptionBaseRomRegister-DefaultValue>None</GeneralOptionBaseRomRegister-DefaultValue>
+      <GeneralOptionBaseRamRegister-DefaultValue>None</GeneralOptionBaseRamRegister-DefaultValue>
+      <GeneralOptionBaseAddressAddress-DefaultValue>00000000</GeneralOptionBaseAddressAddress-DefaultValue>
+      <GeneralOptionBaseAddressRegister-DefaultValue>None</GeneralOptionBaseAddressRegister-DefaultValue>
+      <GeneralOptionPatch-DefaultValue>None</GeneralOptionPatch-DefaultValue>
+      <GeneralOptionSaveAcc-DefaultValue>False</GeneralOptionSaveAcc-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8587688952440286552</TimeTagModified--0>
+      <BuildMode-0>DefaultBuild</BuildMode-0>
+      <Memo-0 />
+      <OutputMessageFormat-0>%TargetFiles%</OutputMessageFormat-0>
+      <FormatBuildOptionList-0>%TargetFiles% : %Program% %Options%</FormatBuildOptionList-0>
+      <PreBuildCommands-0>if exist "%OutputDir%\%ProjectName%.syms" del "%OutputDir%\%ProjectName%.syms"
+..\..\..\ssp\cfg\cfg\cfg.exe --pass 1 --kernel ssp --api-table ..\..\..\ssp\kernel\ssp_kernel_api.csv --api-table ..\..\..\ecnl_ssp\echonet_api.csv --cfg1-def-table ..\..\..\ssp\kernel\ssp_kernel_def.csv --cfg1-def-table ..\..\..\ssp\syssvc\syssvc_def.csv --cfg1-def-table ..\..\..\ssp\arch\rx630_ccrx\prc_def.csv --cfg1-def-table ..\..\..\ssp\target\grsakura_ccrx\target_def.csv --cfg1-def-table ..\..\..\ecnl_ssp\echonet_def.csv -I ..\..\..\ssp -I ..\..\..\ssp\arch -I ..\..\..\ssp\include -I ..\..\..\ssp\target\grsakura_ccrx -I ..\..\..\uip\task -I ..\..\..\uip\target\if_rx62n -I ..\..\..\ecnl_ssp -I ..\..\..\src\ukadecot ..\..\..\src\ukadecot\main.cfg
+</PreBuildCommands-0>
+      <PostBuildCommands-0>..\..\..\ssp\arch\ccrx\gensyms.exe "%OutputDir%\%ProjectName%.map"
+%WinDir%\cscript //Nologo ..\..\tools\update.js "%OutputDir%\%ProjectName%.mot" cfg1_out.srec
+..\..\..\ssp\cfg\cfg\cfg.exe --pass 2 --kernel ssp --api-table ..\..\..\ssp\kernel\ssp_kernel_api.csv --api-table ..\..\..\ecnl_ssp\echonet_api.csv --cfg1-def-table ..\..\..\ssp\kernel\ssp_kernel_def.csv --cfg1-def-table ..\..\..\ssp\syssvc\syssvc_def.csv --cfg1-def-table ..\..\..\ssp\arch\rx630_ccrx\prc_def.csv --cfg1-def-table ..\..\..\ssp\target\grsakura_ccrx\target_def.csv --cfg1-def-table ..\..\..\ecnl_ssp\echonet_def.csv -I ..\..\..\ssp -I ..\..\..\ssp\arch -I ..\..\..\ssp\arch\rx630_ccrx -I ..\..\..\ssp\include -I ..\..\..\ssp\kernel -I ..\..\..\ssp\target\grsakura_ccrx -I ..\..\..\uip\task -I ..\..\..\uip\target\if_rx62n -I ..\..\..\ecnl_ssp -I ..\..\..\src\ukadecot --template-file ..\..\..\ssp\target\grsakura_ccrx\target_echonet.tf ..\..\..\src\ukadecot\main.cfg
+%WinDir%\cscript //Nologo ..\..\tools\cmp_update.js kernel_cfg.c ..\kernel_cfg.c
+%WinDir%\cscript //Nologo ..\..\tools\cmp_update.js kernel_cfg.h ..\kernel_cfg.h
+%WinDir%\cscript //Nologo ..\..\tools\cmp_update.js kernel_cfg_asm.src ..\kernel_cfg_asm.src
+%WinDir%\cscript //Nologo ..\..\tools\cmp_update.js echonet_cfg.c ..\echonet_cfg.c
+%WinDir%\cscript //Nologo ..\..\tools\cmp_update.js echonet_cfg.h ..\echonet_cfg.h
+</PostBuildCommands-0>
+      <GeneralOptionIsa-0>None</GeneralOptionIsa-0>
+      <GeneralOptionOutput-0>LoadModuleFile</GeneralOptionOutput-0>
+      <GeneralOptionPic-0>False</GeneralOptionPic-0>
+      <GeneralOptionSimultaneousBuild-0>True</GeneralOptionSimultaneousBuild-0>
+      <CompilerVersion-0>
+
+0</CompilerVersion-0>
+      <DependencyFileExistCheckingType-0>Rebuild</DependencyFileExistCheckingType-0>
+      <GeneralOptionCpu-0>RX600</GeneralOptionCpu-0>
+      <GeneralOptionOutputFolder-0>%BuildModeName%</GeneralOptionOutputFolder-0>
+      <GeneralOptionPid-0>None</GeneralOptionPid-0>
+      <EnsureCompatibilityOfPathAndLinkageOrder-0>False</EnsureCompatibilityOfPathAndLinkageOrder-0>
+      <GeneralOptionFpu-0>Fpu</GeneralOptionFpu-0>
+      <GeneralOptionNousePidRegister-0>True</GeneralOptionNousePidRegister-0>
+      <LinkOptionConvertFolder-0>%BuildModeName%</LinkOptionConvertFolder-0>
+      <GeneralOptionEndian-0>Little</GeneralOptionEndian-0>
+      <LinkOptionConvertFileName-0>%ProjectName%.mot</LinkOptionConvertFileName-0>
+      <AsmOptionGoptimize-0>False</AsmOptionGoptimize-0>
+      <GeneralOptionRound-0>Nearest</GeneralOptionRound-0>
+      <LinkOptionMultiConvertFileName-0 />
+      <AsmOptionListFile-0>False</AsmOptionListFile-0>
+      <COptionGoptimize-0>False</COptionGoptimize-0>
+      <GeneralOptionDenormalize-0>Off</GeneralOptionDenormalize-0>
+      <AsmOptionShowConditionals-0>False</AsmOptionShowConditionals-0>
+      <GeneralOptionDblSize-0>SinglePrecision</GeneralOptionDblSize-0>
+      <AsmOptionShowDefinitions-0>False</AsmOptionShowDefinitions-0>
+      <COptionListfile-0>False</COptionListfile-0>
+      <GeneralOptionIntToShort-0>False</GeneralOptionIntToShort-0>
+      <AsmOptionShowExpansions-0>False</AsmOptionShowExpansions-0>
+      <COptionShowSource-0>False</COptionShowSource-0>
+      <GeneralOptionSignedChar-0>Unsigned</GeneralOptionSignedChar-0>
+      <COptionShowConditionals-0>False</COptionShowConditionals-0>
+      <GeneralOptionOtherAdditionalOptions-0 />
+      <GeneralOptionSignedBitfield-0>Unsigned</GeneralOptionSignedBitfield-0>
+      <COptionShowDefinitions-0>False</COptionShowDefinitions-0>
+      <GeneralOptionAutoEnum-0>False</GeneralOptionAutoEnum-0>
+      <COptionShowExpansions-0>False</COptionShowExpansions-0>
+      <GeneralOptionBitOrder-0>Right</GeneralOptionBitOrder-0>
+      <GeneralOptionPack-0>False</GeneralOptionPack-0>
+      <GeneralOptionException-0>False</GeneralOptionException-0>
+      <GeneralOptionRtti-0>False</GeneralOptionRtti-0>
+      <GeneralOptionFintRegister-0>None</GeneralOptionFintRegister-0>
+      <GeneralOptionBranch-0>Branch24</GeneralOptionBranch-0>
+      <GeneralOptionBaseRomRegister-0>None</GeneralOptionBaseRomRegister-0>
+      <GeneralOptionBaseRamRegister-0>None</GeneralOptionBaseRamRegister-0>
+      <GeneralOptionBaseAddressAddress-0>00000000</GeneralOptionBaseAddressAddress-0>
+      <GeneralOptionBaseAddressRegister-0>None</GeneralOptionBaseAddressRegister-0>
+      <GeneralOptionPatch-0>None</GeneralOptionPatch-0>
+      <GeneralOptionSaveAcc-0>False</GeneralOptionSaveAcc-0>
+      <LastCompilerVersion-0>V2.02.00</LastCompilerVersion-0>
+    </Instance>
+    <Instance Guid="95a63257-4aa7-40c0-a74a-7991543b099b">
+      <COptionLangC-DefaultValue>C</COptionLangC-DefaultValue>
+      <COptionListfile-DefaultValue>False</COptionListfile-DefaultValue>
+      <COptionLogo-DefaultValue>False</COptionLogo-DefaultValue>
+      <COptionMisra2004-DefaultValue>None</COptionMisra2004-DefaultValue>
+      <COptionOptimize-DefaultValue>Level2</COptionOptimize-DefaultValue>
+      <COptionOutput-DefaultValue>Object</COptionOutput-DefaultValue>
+      <COptionOutputAssembly-DefaultValue>False</COptionOutputAssembly-DefaultValue>
+      <COptionGoptimize-DefaultValue>False</COptionGoptimize-DefaultValue>
+      <COptionLangCpp-DefaultValue>Cpp</COptionLangCpp-DefaultValue>
+      <COptionMisra2004RuleFile-DefaultValue />
+      <COptionOutputFolder-DefaultValue>%BuildModeName%</COptionOutputFolder-DefaultValue>
+      <COptionOutputPreprocessed-DefaultValue>None</COptionOutputPreprocessed-DefaultValue>
+      <COptionShowSource-DefaultValue>False</COptionShowSource-DefaultValue>
+      <COptionXcref-DefaultValue>False</COptionXcref-DefaultValue>
+      <COptionDebug-DefaultValue>True</COptionDebug-DefaultValue>
+      <COptionInclude-DefaultValue />
+      <COptionMisra2004RuleNumberApply-DefaultValue />
+      <COptionPreCompileCommands-DefaultValue />
+      <COptionShowConditionals-DefaultValue>False</COptionShowConditionals-DefaultValue>
+      <COptionSpeedAndSize-DefaultValue>Size</COptionSpeedAndSize-DefaultValue>
+      <COptionLoop-DefaultValue>Auto</COptionLoop-DefaultValue>
+      <COptionMisra2004RuleNumberIgnore-DefaultValue />
+      <COptionPostCompileCommands-DefaultValue />
+      <COptionSectionP-DefaultValue>P</COptionSectionP-DefaultValue>
+      <COptionShowDefinitions-DefaultValue>False</COptionShowDefinitions-DefaultValue>
+      <COptionSystemInclude-DefaultValue />
+      <COptionLoopValue-DefaultValue>2</COptionLoopValue-DefaultValue>
+      <COptionMisra2004RuleNumberRequiredAdd-DefaultValue />
+      <COptionOtherAdditionalOptions-DefaultValue />
+      <COptionPreinclude-DefaultValue />
+      <COptionSectionC-DefaultValue>C</COptionSectionC-DefaultValue>
+      <COptionShowExpansions-DefaultValue>False</COptionShowExpansions-DefaultValue>
+      <COptionCommandLine-DefaultValue>-cpu=rx600
+-include=.
+-include=..\..\..\ssp
+-include=..\..\..\ssp\include
+-include=..\..\..\ssp\kernel
+-include=..\..\..\ssp\extension
+-include=..\..\..\ssp\arch
+-include=..\..\..\ssp\pdic
+-include=..\..\..\ssp\target\grsakura_ccrx
+-include=..\..\..\uip\task
+-include=..\..\..\uip\target\if_rx62n
+-include=..\..\..\ecnl_ssp
+-include=..\..\..\src\ukadecot
+-define=TARGET_KERNEL_SSP,SUPPORT_UIP
+-output=obj
+-obj_path=%BuildModeName%
+-debug
+-fpu
+-nologo
+</COptionCommandLine-DefaultValue>
+      <COptionDefine-DefaultValue />
+      <COptionInline-DefaultValue>Auto</COptionInline-DefaultValue>
+      <COptionMisra2004RuleNumberRequiredRemove-DefaultValue />
+      <COptionSectionD-DefaultValue>D</COptionSectionD-DefaultValue>
+      <COptionIgnoreFilesMisra-DefaultValue />
+      <COptionInlineValue-DefaultValue>100</COptionInlineValue-DefaultValue>
+      <COptionSectionB-DefaultValue>B</COptionSectionB-DefaultValue>
+      <COptionUndefine-DefaultValue />
+      <COptionCheckLanguageExtension-DefaultValue>False</COptionCheckLanguageExtension-DefaultValue>
+      <COptionFileInline-DefaultValue />
+      <COptionMessage-DefaultValue>False</COptionMessage-DefaultValue>
+      <COptionSectionL-DefaultValue>L</COptionSectionL-DefaultValue>
+      <COptionCase-DefaultValue>Auto</COptionCase-DefaultValue>
+      <COptionMessage2-DefaultValue>False</COptionMessage2-DefaultValue>
+      <COptionSectionW-DefaultValue>W</COptionSectionW-DefaultValue>
+      <COptionNoMessageErrorNumber-DefaultValue />
+      <COptionNostuffB-DefaultValue>False</COptionNostuffB-DefaultValue>
+      <COptionVolatile-DefaultValue>False</COptionVolatile-DefaultValue>
+      <COptionConstCopy-DefaultValue>Auto</COptionConstCopy-DefaultValue>
+      <COptionNoMessageErrorNumber2-DefaultValue />
+      <COptionNostuffD-DefaultValue>False</COptionNostuffD-DefaultValue>
+      <COptionChangeMessageInformation-DefaultValue>No</COptionChangeMessageInformation-DefaultValue>
+      <COptionConstDiv-DefaultValue>Auto</COptionConstDiv-DefaultValue>
+      <COptionNostuffC-DefaultValue>False</COptionNostuffC-DefaultValue>
+      <COptionChangeMessageInformationNumber-DefaultValue />
+      <COptionLibrary-DefaultValue>Intrinsic</COptionLibrary-DefaultValue>
+      <COptionNostuffW-DefaultValue>False</COptionNostuffW-DefaultValue>
+      <COptionChangeMessageInformationNumber2-DefaultValue />
+      <COptionInstalign-DefaultValue>Noinstalign</COptionInstalign-DefaultValue>
+      <COptionScope-DefaultValue>Auto</COptionScope-DefaultValue>
+      <COptionChangeMessageWarning-DefaultValue>No</COptionChangeMessageWarning-DefaultValue>
+      <COptionNouseDiv-DefaultValue>True</COptionNouseDiv-DefaultValue>
+      <COptionSchedule-DefaultValue>Auto</COptionSchedule-DefaultValue>
+      <COptionChangeMessageWarningNumber-DefaultValue />
+      <COptionMap-DefaultValue>NoMap</COptionMap-DefaultValue>
+      <COptionOutcode-DefaultValue>Sjis</COptionOutcode-DefaultValue>
+      <COptionChangeMessageWarningNumber2-DefaultValue />
+      <COptionIntermodule-DefaultValue>None</COptionIntermodule-DefaultValue>
+      <COptionApproxdiv-DefaultValue>False</COptionApproxdiv-DefaultValue>
+      <COptionChangeMessageError-DefaultValue>No</COptionChangeMessageError-DefaultValue>
+      <COptionChangeMessageErrorNumber-DefaultValue />
+      <COptionEnableRegister-DefaultValue>False</COptionEnableRegister-DefaultValue>
+      <COptionChangeMessageErrorNumber2-DefaultValue />
+      <COptionSimpleFloatConv-DefaultValue>False</COptionSimpleFloatConv-DefaultValue>
+      <COptionFileInlinePath-DefaultValue />
+      <COptionFpu-DefaultValue>Fpu</COptionFpu-DefaultValue>
+      <COptionAlias-DefaultValue>False</COptionAlias-DefaultValue>
+      <COptionComment-DefaultValue>False</COptionComment-DefaultValue>
+      <COptionCheck-DefaultValue>No</COptionCheck-DefaultValue>
+      <COptionFloatOrder-DefaultValue>False</COptionFloatOrder-DefaultValue>
+      <COptionIncode-DefaultValue>Sjis</COptionIncode-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8587805601566661072</TimeTagModified--0>
+      <COptionLangC-0>C99</COptionLangC-0>
+      <COptionListfile-0>False</COptionListfile-0>
+      <COptionLogo-0>False</COptionLogo-0>
+      <COptionMisra2004-0>None</COptionMisra2004-0>
+      <COptionOptimize-0>Level2</COptionOptimize-0>
+      <COptionOutput-0>Object</COptionOutput-0>
+      <COptionOutputAssembly-0>False</COptionOutputAssembly-0>
+      <COptionGoptimize-0>False</COptionGoptimize-0>
+      <COptionLangCpp-0>Cpp</COptionLangCpp-0>
+      <COptionMisra2004RuleFile-0 />
+      <COptionOutputFolder-0>%BuildModeName%</COptionOutputFolder-0>
+      <COptionOutputPreprocessed-0>None</COptionOutputPreprocessed-0>
+      <COptionShowSource-0>False</COptionShowSource-0>
+      <COptionXcref-0>False</COptionXcref-0>
+      <COptionDebug-0>True</COptionDebug-0>
+      <COptionInclude-0>.
+..\..\..\ssp
+..\..\..\ssp\include
+..\..\..\ssp\kernel
+..\..\..\ssp\extension
+..\..\..\ssp\arch
+..\..\..\ssp\pdic
+..\..\..\ssp\target\grsakura_ccrx
+..\..\..\uip\task
+..\..\..\uip\target\if_rx62n
+..\..\..\ecnl_ssp
+..\..\..\src\ukadecot
+</COptionInclude-0>
+      <COptionMisra2004RuleNumberApply-0 />
+      <COptionPreCompileCommands-0 />
+      <COptionShowConditionals-0>False</COptionShowConditionals-0>
+      <COptionSpeedAndSize-0>Size</COptionSpeedAndSize-0>
+      <COptionLoop-0>Auto</COptionLoop-0>
+      <COptionMisra2004RuleNumberIgnore-0 />
+      <COptionPostCompileCommands-0 />
+      <COptionSectionP-0>P</COptionSectionP-0>
+      <COptionShowDefinitions-0>False</COptionShowDefinitions-0>
+      <COptionSystemInclude-0 />
+      <COptionLoopValue-0>2</COptionLoopValue-0>
+      <COptionMisra2004RuleNumberRequiredAdd-0 />
+      <COptionOtherAdditionalOptions-0 />
+      <COptionPreinclude-0 />
+      <COptionSectionC-0>C</COptionSectionC-0>
+      <COptionShowExpansions-0>False</COptionShowExpansions-0>
+      <COptionCommandLine-0>-cpu=rx600
+-include=.
+-include=..\..\..\ssp
+-include=..\..\..\ssp\include
+-include=..\..\..\ssp\kernel
+-include=..\..\..\ssp\extension
+-include=..\..\..\ssp\arch
+-include=..\..\..\ssp\pdic
+-include=..\..\..\ssp\target\grsakura_ccrx
+-include=..\..\..\uip\task
+-include=..\..\..\uip\target\if_rx62n
+-include=..\..\..\ecnl_ssp
+-include=..\..\..\src\ukadecot
+-define=TARGET_KERNEL_SSP,SUPPORT_UIP
+-output=obj
+-obj_path=%BuildModeName%
+-debug
+-fpu
+-nologo
+</COptionCommandLine-0>
+      <COptionDefine-0>TARGET_KERNEL_SSP
+SUPPORT_UIP
+</COptionDefine-0>
+      <COptionInline-0>Auto</COptionInline-0>
+      <COptionMisra2004RuleNumberRequiredRemove-0 />
+      <COptionSectionD-0>D</COptionSectionD-0>
+      <COptionIgnoreFilesMisra-0 />
+      <COptionInlineValue-0>100</COptionInlineValue-0>
+      <COptionSectionB-0>B</COptionSectionB-0>
+      <COptionUndefine-0 />
+      <COptionCheckLanguageExtension-0>False</COptionCheckLanguageExtension-0>
+      <COptionFileInline-0 />
+      <COptionMessage-0>False</COptionMessage-0>
+      <COptionSectionL-0>L</COptionSectionL-0>
+      <COptionCase-0>Auto</COptionCase-0>
+      <COptionSectionW-0>W</COptionSectionW-0>
+      <COptionNoMessageErrorNumber-0 />
+      <COptionNostuffB-0>False</COptionNostuffB-0>
+      <COptionVolatile-0>False</COptionVolatile-0>
+      <COptionConstCopy-0>Auto</COptionConstCopy-0>
+      <COptionNostuffD-0>False</COptionNostuffD-0>
+      <COptionChangeMessageInformation-0>No</COptionChangeMessageInformation-0>
+      <COptionConstDiv-0>Auto</COptionConstDiv-0>
+      <COptionNostuffC-0>False</COptionNostuffC-0>
+      <COptionChangeMessageInformationNumber-0 />
+      <COptionLibrary-0>Intrinsic</COptionLibrary-0>
+      <COptionNostuffW-0>False</COptionNostuffW-0>
+      <COptionInstalign-0>Noinstalign</COptionInstalign-0>
+      <COptionScope-0>Auto</COptionScope-0>
+      <COptionChangeMessageWarning-0>No</COptionChangeMessageWarning-0>
+      <COptionNouseDiv-0>True</COptionNouseDiv-0>
+      <COptionSchedule-0>Auto</COptionSchedule-0>
+      <COptionChangeMessageWarningNumber-0 />
+      <COptionMap-0>NoMap</COptionMap-0>
+      <COptionOutcode-0>Sjis</COptionOutcode-0>
+      <COptionIntermodule-0>None</COptionIntermodule-0>
+      <COptionApproxdiv-0>False</COptionApproxdiv-0>
+      <COptionChangeMessageError-0>No</COptionChangeMessageError-0>
+      <COptionChangeMessageErrorNumber-0 />
+      <COptionEnableRegister-0>False</COptionEnableRegister-0>
+      <COptionSimpleFloatConv-0>False</COptionSimpleFloatConv-0>
+      <COptionFileInlinePath-0 />
+      <COptionFpu-0>Fpu</COptionFpu-0>
+      <COptionAlias-0>False</COptionAlias-0>
+      <COptionComment-0>False</COptionComment-0>
+      <COptionCheck-0>No</COptionCheck-0>
+      <COptionFloatOrder-0>False</COptionFloatOrder-0>
+      <COptionIncode-0>Sjis</COptionIncode-0>
+    </Instance>
+    <Instance Guid="5ad1746c-d03e-4610-a91f-aaa4fb37bc10">
+      <AsmOptionChkpm-DefaultValue>False</AsmOptionChkpm-DefaultValue>
+      <AsmOptionGoptimize-DefaultValue>False</AsmOptionGoptimize-DefaultValue>
+      <AsmOptionInclude-DefaultValue />
+      <AsmOptionListFile-DefaultValue>False</AsmOptionListFile-DefaultValue>
+      <AsmOptionOutput-DefaultValue>%BuildModeName%</AsmOptionOutput-DefaultValue>
+      <AsmOptionChkfpu-DefaultValue>False</AsmOptionChkfpu-DefaultValue>
+      <AsmOptionDebug-DefaultValue>True</AsmOptionDebug-DefaultValue>
+      <AsmOptionShowConditionals-DefaultValue>False</AsmOptionShowConditionals-DefaultValue>
+      <AsmOptionSystemInclude-DefaultValue />
+      <AsmOptionChkdsp-DefaultValue>False</AsmOptionChkdsp-DefaultValue>
+      <AsmOptionDefine-DefaultValue />
+      <AsmOptionShowDefinitions-DefaultValue>False</AsmOptionShowDefinitions-DefaultValue>
+      <AsmOptionInCode-DefaultValue>SJIS</AsmOptionInCode-DefaultValue>
+      <AsmOptionLogo-DefaultValue>False</AsmOptionLogo-DefaultValue>
+      <AsmOptionShowExpansions-DefaultValue>False</AsmOptionShowExpansions-DefaultValue>
+      <AsmOptionPreAssembleCommands-DefaultValue />
+      <AsmOptionPostAssembleCommands-DefaultValue />
+      <AsmOptionOtherAdditionalOptions-DefaultValue />
+      <AsmOptionCommandLine-DefaultValue />
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8588053503357851523</TimeTagModified--0>
+      <AsmOptionChkpm-0>False</AsmOptionChkpm-0>
+      <AsmOptionGoptimize-0>False</AsmOptionGoptimize-0>
+      <AsmOptionInclude-0 />
+      <AsmOptionListFile-0>False</AsmOptionListFile-0>
+      <AsmOptionOutput-0>%BuildModeName%</AsmOptionOutput-0>
+      <AsmOptionChkfpu-0>False</AsmOptionChkfpu-0>
+      <AsmOptionDebug-0>True</AsmOptionDebug-0>
+      <AsmOptionShowConditionals-0>False</AsmOptionShowConditionals-0>
+      <AsmOptionSystemInclude-0 />
+      <AsmOptionChkdsp-0>False</AsmOptionChkdsp-0>
+      <AsmOptionDefine-0 />
+      <AsmOptionShowDefinitions-0>False</AsmOptionShowDefinitions-0>
+      <AsmOptionInCode-0>SJIS</AsmOptionInCode-0>
+      <AsmOptionLogo-0>False</AsmOptionLogo-0>
+      <AsmOptionShowExpansions-0>False</AsmOptionShowExpansions-0>
+      <AsmOptionPreAssembleCommands-0 />
+      <AsmOptionPostAssembleCommands-0 />
+      <AsmOptionOtherAdditionalOptions-0 />
+      <AsmOptionCommandLine-0 />
+    </Instance>
+    <Instance Guid="dbb16727-3e81-4169-956a-790355cab4a1">
+      <LinkOptionCpu-DefaultValue>False</LinkOptionCpu-DefaultValue>
+      <LinkOptionForm-DefaultValue>Absolute</LinkOptionForm-DefaultValue>
+      <LinkOptionFormConvert-DefaultValue>Stype</LinkOptionFormConvert-DefaultValue>
+      <LinkOptionInput-DefaultValue />
+      <LinkOptionListShow-DefaultValue>List</LinkOptionListShow-DefaultValue>
+      <LinkOptionOptimize-DefaultValue>None</LinkOptionOptimize-DefaultValue>
+      <LinkOptionStack-DefaultValue>False</LinkOptionStack-DefaultValue>
+      <LinkOptionStart-DefaultValue>B_1,R_1,B_2,R_2,B,R,SU,SI/04,PResetPRG/0FFFF8000,C_1,C_2,C,C$DSEC,C$BSEC,C$INIT,C$VTBL,C$VECT,D_1,D_2,D,P,PIntPRG,W_1,W_2,W,L/0FFFF8100,FIXEDVECT/0FFFFFFD0</LinkOptionStart-DefaultValue>
+      <LinkOptionCompress-DefaultValue>False</LinkOptionCompress-DefaultValue>
+      <LinkOptionCpuInformation-DefaultValue />
+      <LinkOptionDebug-DefaultValue>Debug</LinkOptionDebug-DefaultValue>
+      <LinkOptionFSymbol-DefaultValue />
+      <LinkOptionLibrary-DefaultValue />
+      <LinkOptionOptimizeSymbolDelete-DefaultValue>False</LinkOptionOptimizeSymbolDelete-DefaultValue>
+      <LinkOptionRecordH-DefaultValue>None</LinkOptionRecordH-DefaultValue>
+      <LinkOptionShowSymbol-DefaultValue>False</LinkOptionShowSymbol-DefaultValue>
+      <LinkOptionAlignedSection-DefaultValue />
+      <LinkOptionCpuStride-DefaultValue>False</LinkOptionCpuStride-DefaultValue>
+      <LinkOptionMemory-DefaultValue>False</LinkOptionMemory-DefaultValue>
+      <LinkOptionOptimizeSameCode-DefaultValue>False</LinkOptionOptimizeSameCode-DefaultValue>
+      <LinkOptionOutputFolder-DefaultValue>%BuildModeName%</LinkOptionOutputFolder-DefaultValue>
+      <LinkOptionRecordS-DefaultValue>None</LinkOptionRecordS-DefaultValue>
+      <LinkOptionShowReference-DefaultValue>False</LinkOptionShowReference-DefaultValue>
+      <LinkOptionSystemLibrary-DefaultValue />
+      <LinkOptionBinary-DefaultValue />
+      <LinkOptionChangeMessageInformation-DefaultValue>None</LinkOptionChangeMessageInformation-DefaultValue>
+      <LinkOptionContiguousSection-DefaultValue />
+      <LinkOptionDividedConvertFile-DefaultValue>False</LinkOptionDividedConvertFile-DefaultValue>
+      <LinkOptionOutputFileName-DefaultValue>%ProjectName%.abs</LinkOptionOutputFileName-DefaultValue>
+      <LinkOptionRom-DefaultValue />
+      <LinkOptionSameSize-DefaultValue>1E</LinkOptionSameSize-DefaultValue>
+      <LinkOptionShowXreference-DefaultValue>False</LinkOptionShowXreference-DefaultValue>
+      <LinkOptionChangeMessageInformationNumber-DefaultValue />
+      <LinkOptionConvertFolder-DefaultValue>%BuildModeName%</LinkOptionConvertFolder-DefaultValue>
+      <LinkOptionDefine-DefaultValue />
+      <LinkOptionMap-DefaultValue>False</LinkOptionMap-DefaultValue>
+      <LinkOptionOptimizeShortFormat-DefaultValue>False</LinkOptionOptimizeShortFormat-DefaultValue>
+      <LinkOptionShowTotalSize-DefaultValue>False</LinkOptionShowTotalSize-DefaultValue>
+      <LinkOptionChangeMessageWarning-DefaultValue>None</LinkOptionChangeMessageWarning-DefaultValue>
+      <LinkOptionConvertFileName-DefaultValue>%ProjectName%.mot</LinkOptionConvertFileName-DefaultValue>
+      <LinkOptionEntry-DefaultValue>False</LinkOptionEntry-DefaultValue>
+      <LinkOptionMessage-DefaultValue>NoMessage</LinkOptionMessage-DefaultValue>
+      <LinkOptionOptimizeBranch-DefaultValue>False</LinkOptionOptimizeBranch-DefaultValue>
+      <LinkOptionShowVector-DefaultValue>False</LinkOptionShowVector-DefaultValue>
+      <LinkOptionChangeMessageWarningNumber-DefaultValue />
+      <LinkOptionEntryPoint-DefaultValue />
+      <LinkOptionMultiConvertFileName-DefaultValue />
+      <LinkOptionNoMessageErrorNumber-DefaultValue />
+      <LinkOptionSymbolForbid-DefaultValue />
+      <LinkOptionChangeMessageError-DefaultValue>None</LinkOptionChangeMessageError-DefaultValue>
+      <LinkOptionNoPrelink-DefaultValue>Auto</LinkOptionNoPrelink-DefaultValue>
+      <LinkOptionPadding-DefaultValue>False</LinkOptionPadding-DefaultValue>
+      <LinkOptionSameCodeForbid-DefaultValue />
+      <LinkOptionSpace-DefaultValue>None</LinkOptionSpace-DefaultValue>
+      <LinkOptionChangeMessageErrorNumber-DefaultValue />
+      <LinkOptionSectionForbid-DefaultValue />
+      <LinkOptionSpaceValue-DefaultValue>FF</LinkOptionSpaceValue-DefaultValue>
+      <LinkOptionVectN-DefaultValue />
+      <LinkOptionAbsoluteForbid-DefaultValue />
+      <LinkOptionByteCount-DefaultValue>False</LinkOptionByteCount-DefaultValue>
+      <LinkOptionHide-DefaultValue>False</LinkOptionHide-DefaultValue>
+      <LinkOptionVect-DefaultValue />
+      <LinkOptionByteCountValue-DefaultValue>FF</LinkOptionByteCountValue-DefaultValue>
+      <LinkOptionJumpEntriesForPic-DefaultValue>False</LinkOptionJumpEntriesForPic-DefaultValue>
+      <LinkOptionTotalSize-DefaultValue>False</LinkOptionTotalSize-DefaultValue>
+      <LinkOptionCrc-DefaultValue>None</LinkOptionCrc-DefaultValue>
+      <LinkOptionJumpEntriesForPicSectionName-DefaultValue />
+      <LinkOptionLogo-DefaultValue>False</LinkOptionLogo-DefaultValue>
+      <LinkOptionCrcOutputAddress-DefaultValue>0</LinkOptionCrcOutputAddress-DefaultValue>
+      <LinkOptionPreLinkCommands-DefaultValue />
+      <LinkOptionCrcCalculationRange-DefaultValue />
+      <LinkOptionPostLinkCommands-DefaultValue />
+      <LinkOptionOtherAdditionalOptionsForLoadModule-DefaultValue />
+      <LinkOptionS9-DefaultValue>False</LinkOptionS9-DefaultValue>
+      <LinkOptionOtherAdditionalOptionsForConvertFile-DefaultValue />
+      <LinkOptionCommandLine-DefaultValue>-noprelink
+-output=%BuildModeName%\%ProjectName%.abs
+-list=%BuildModeName%\%ProjectName%.map
+-show=symbol
+-nooptimize
+-start=B_1,R_1,B_2,R_2,B,R,SU,SI/04,PResetPRG/0FFFF8000,C_1,C_2,C,C$DSEC,C$BSEC,C$INIT,C$VTBL,C$VECT,D_1,D_2,D,P,PIntPRG,W_1,W_2,W,L/0FFFF8100,FIXEDVECT/0FFFFFFD0
+-nologo
+-exit
+</LinkOptionCommandLine-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8588053497661758479</TimeTagModified--0>
+      <LinkOptionCpu-0>False</LinkOptionCpu-0>
+      <LinkOptionForm-0>Absolute</LinkOptionForm-0>
+      <LinkOptionFormConvert-0>Stype</LinkOptionFormConvert-0>
+      <LinkOptionInput-0 />
+      <LinkOptionListShow-0>List</LinkOptionListShow-0>
+      <LinkOptionOptimize-0>None</LinkOptionOptimize-0>
+      <LinkOptionStack-0>False</LinkOptionStack-0>
+      <LinkOptionStart-0>B_1,R_1,B_2,R_2,B,R,SU,SI/04,PResetPRG/0FFFF8000,C_1,C_2,C,C$DSEC,C$BSEC,C$INIT,C$VTBL,C$VECT,D_1,D_2,D,P,PIntPRG,W_1,W_2,W,L/0FFFF8100,FIXEDVECT/0FFFFFFD0</LinkOptionStart-0>
+      <LinkOptionCompress-0>False</LinkOptionCompress-0>
+      <LinkOptionCpuInformation-0 />
+      <LinkOptionDebug-0>Debug</LinkOptionDebug-0>
+      <LinkOptionFSymbol-0 />
+      <LinkOptionLibrary-0 />
+      <LinkOptionOptimizeSymbolDelete-0>False</LinkOptionOptimizeSymbolDelete-0>
+      <LinkOptionRecordH-0>None</LinkOptionRecordH-0>
+      <LinkOptionShowSymbol-0>True</LinkOptionShowSymbol-0>
+      <LinkOptionAlignedSection-0 />
+      <LinkOptionCpuStride-0>False</LinkOptionCpuStride-0>
+      <LinkOptionMemory-0>False</LinkOptionMemory-0>
+      <LinkOptionOptimizeSameCode-0>False</LinkOptionOptimizeSameCode-0>
+      <LinkOptionOutputFolder-0>%BuildModeName%</LinkOptionOutputFolder-0>
+      <LinkOptionRecordS-0>None</LinkOptionRecordS-0>
+      <LinkOptionShowReference-0>False</LinkOptionShowReference-0>
+      <LinkOptionSystemLibrary-0 />
+      <LinkOptionBinary-0 />
+      <LinkOptionChangeMessageInformation-0>None</LinkOptionChangeMessageInformation-0>
+      <LinkOptionContiguousSection-0 />
+      <LinkOptionDividedConvertFile-0>False</LinkOptionDividedConvertFile-0>
+      <LinkOptionOutputFileName-0>%ProjectName%.abs</LinkOptionOutputFileName-0>
+      <LinkOptionRom-0 />
+      <LinkOptionSameSize-0>1E</LinkOptionSameSize-0>
+      <LinkOptionShowXreference-0>False</LinkOptionShowXreference-0>
+      <LinkOptionChangeMessageInformationNumber-0 />
+      <LinkOptionConvertFolder-0>%BuildModeName%</LinkOptionConvertFolder-0>
+      <LinkOptionDefine-0 />
+      <LinkOptionMap-0>False</LinkOptionMap-0>
+      <LinkOptionOptimizeShortFormat-0>False</LinkOptionOptimizeShortFormat-0>
+      <LinkOptionShowTotalSize-0>False</LinkOptionShowTotalSize-0>
+      <LinkOptionChangeMessageWarning-0>None</LinkOptionChangeMessageWarning-0>
+      <LinkOptionConvertFileName-0>%ProjectName%.mot</LinkOptionConvertFileName-0>
+      <LinkOptionEntry-0>False</LinkOptionEntry-0>
+      <LinkOptionMessage-0>NoMessage</LinkOptionMessage-0>
+      <LinkOptionOptimizeBranch-0>False</LinkOptionOptimizeBranch-0>
+      <LinkOptionShowVector-0>False</LinkOptionShowVector-0>
+      <LinkOptionChangeMessageWarningNumber-0 />
+      <LinkOptionEntryPoint-0 />
+      <LinkOptionMultiConvertFileName-0 />
+      <LinkOptionNoMessageErrorNumber-0 />
+      <LinkOptionSymbolForbid-0 />
+      <LinkOptionChangeMessageError-0>None</LinkOptionChangeMessageError-0>
+      <LinkOptionNoPrelink-0>Auto</LinkOptionNoPrelink-0>
+      <LinkOptionPadding-0>False</LinkOptionPadding-0>
+      <LinkOptionSameCodeForbid-0 />
+      <LinkOptionSpace-0>None</LinkOptionSpace-0>
+      <LinkOptionChangeMessageErrorNumber-0 />
+      <LinkOptionSectionForbid-0 />
+      <LinkOptionSpaceValue-0>FF</LinkOptionSpaceValue-0>
+      <LinkOptionVectN-0 />
+      <LinkOptionAbsoluteForbid-0 />
+      <LinkOptionByteCount-0>False</LinkOptionByteCount-0>
+      <LinkOptionHide-0>False</LinkOptionHide-0>
+      <LinkOptionVect-0 />
+      <LinkOptionByteCountValue-0>FF</LinkOptionByteCountValue-0>
+      <LinkOptionJumpEntriesForPic-0>False</LinkOptionJumpEntriesForPic-0>
+      <LinkOptionTotalSize-0>False</LinkOptionTotalSize-0>
+      <LinkOptionCrc-0>None</LinkOptionCrc-0>
+      <LinkOptionJumpEntriesForPicSectionName-0 />
+      <LinkOptionLogo-0>False</LinkOptionLogo-0>
+      <LinkOptionCrcOutputAddress-0>0</LinkOptionCrcOutputAddress-0>
+      <LinkOptionPreLinkCommands-0 />
+      <LinkOptionCrcCalculationRange-0 />
+      <LinkOptionPostLinkCommands-0 />
+      <LinkOptionOtherAdditionalOptionsForLoadModule-0 />
+      <LinkOptionS9-0>False</LinkOptionS9-0>
+      <LinkOptionOtherAdditionalOptionsForConvertFile-0 />
+      <LinkOptionCommandLine-0>-noprelink
+-output=%BuildModeName%\%ProjectName%.abs
+-list=%BuildModeName%\%ProjectName%.map
+-show=symbol
+-nooptimize
+-start=B_1,R_1,B_2,R_2,B,R,SU,SI/04,PResetPRG/0FFFF8000,C_1,C_2,C,C$DSEC,C$BSEC,C$INIT,C$VTBL,C$VECT,D_1,D_2,D,P,PIntPRG,W_1,W_2,W,L/0FFFF8100,FIXEDVECT/0FFFFFFD0
+-nologo
+-exit
+</LinkOptionCommandLine-0>
+    </Instance>
+    <Instance Guid="df74c69e-635e-42d9-845e-14128ba4d48a">
+      <HexOptionForm-DefaultValue>Stype</HexOptionForm-DefaultValue>
+      <HexOptionOutput-DefaultValue>True</HexOptionOutput-DefaultValue>
+      <LinkOptionOtherAdditionalOptionsForConvertFile-DefaultValue />
+      <HexOptionCommandLine-DefaultValue />
+      <LinkOptionConvertFolder-DefaultValue>%BuildModeName%</LinkOptionConvertFolder-DefaultValue>
+      <LinkOptionRecordH-DefaultValue>None</LinkOptionRecordH-DefaultValue>
+      <LinkOptionConvertFileName-DefaultValue>%ProjectName%.mot</LinkOptionConvertFileName-DefaultValue>
+      <LinkOptionRecordS-DefaultValue>None</LinkOptionRecordS-DefaultValue>
+      <LinkOptionMultiConvertFileName-DefaultValue />
+      <LinkOptionSpace-DefaultValue>None</LinkOptionSpace-DefaultValue>
+      <LinkOptionSpaceValue-DefaultValue>FF</LinkOptionSpaceValue-DefaultValue>
+      <LinkOptionByteCount-DefaultValue>False</LinkOptionByteCount-DefaultValue>
+      <LinkOptionByteCountValue-DefaultValue>FF</LinkOptionByteCountValue-DefaultValue>
+      <LinkOptionCrc-DefaultValue>None</LinkOptionCrc-DefaultValue>
+      <LinkOptionCrcOutputAddress-DefaultValue>0</LinkOptionCrcOutputAddress-DefaultValue>
+      <LinkOptionCrcCalculationRange-DefaultValue />
+      <LinkOptionS9-DefaultValue>False</LinkOptionS9-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8588053503357851523</TimeTagModified--0>
+      <HexOptionForm-0>Stype</HexOptionForm-0>
+      <HexOptionOutput-0>True</HexOptionOutput-0>
+      <LinkOptionOtherAdditionalOptionsForConvertFile-0 />
+      <HexOptionCommandLine-0 />
+      <LinkOptionConvertFolder-0>%BuildModeName%</LinkOptionConvertFolder-0>
+      <LinkOptionRecordH-0>None</LinkOptionRecordH-0>
+      <LinkOptionConvertFileName-0>%ProjectName%.mot</LinkOptionConvertFileName-0>
+      <LinkOptionRecordS-0>None</LinkOptionRecordS-0>
+      <LinkOptionMultiConvertFileName-0 />
+      <LinkOptionSpace-0>None</LinkOptionSpace-0>
+      <LinkOptionSpaceValue-0>FF</LinkOptionSpaceValue-0>
+      <LinkOptionByteCount-0>False</LinkOptionByteCount-0>
+      <LinkOptionByteCountValue-0>FF</LinkOptionByteCountValue-0>
+      <LinkOptionCrc-0>None</LinkOptionCrc-0>
+      <LinkOptionCrcOutputAddress-0>0</LinkOptionCrcOutputAddress-0>
+      <LinkOptionCrcCalculationRange-0 />
+      <LinkOptionS9-0>False</LinkOptionS9-0>
+    </Instance>
+    <Instance Guid="fff50d2e-74da-44ea-90a8-c47756029e83">
+      <LibOptionForm-DefaultValue>LibraryU</LibOptionForm-DefaultValue>
+      <LibOptionInput-DefaultValue />
+      <LibOptionListShow-DefaultValue>None</LibOptionListShow-DefaultValue>
+      <LibOptionMemory-DefaultValue>False</LibOptionMemory-DefaultValue>
+      <LibOptionChangeMessageInformation-DefaultValue>None</LibOptionChangeMessageInformation-DefaultValue>
+      <LibOptionDebug-DefaultValue>Debug</LibOptionDebug-DefaultValue>
+      <LibOptionLibrary-DefaultValue />
+      <LibOptionShowSymbol-DefaultValue>False</LibOptionShowSymbol-DefaultValue>
+      <LibOptionChangeMessageInformationNumber-DefaultValue />
+      <LibOptionOutputFolder-DefaultValue>%BuildModeName%</LibOptionOutputFolder-DefaultValue>
+      <LibOptionShowSection-DefaultValue>False</LibOptionShowSection-DefaultValue>
+      <LibOptionSystemLibrary-DefaultValue />
+      <LibOptionBinary-DefaultValue />
+      <LibOptionChangeMessageWarning-DefaultValue>None</LibOptionChangeMessageWarning-DefaultValue>
+      <LibOptionOutputFileName-DefaultValue>%ProjectName%.lib</LibOptionOutputFileName-DefaultValue>
+      <LibOptionShowXreference-DefaultValue>False</LibOptionShowXreference-DefaultValue>
+      <LibOptionChangeMessageWarningNumber-DefaultValue />
+      <LibOptionMessage-DefaultValue>NoMessage</LibOptionMessage-DefaultValue>
+      <LibOptionNoPrelink-DefaultValue>Auto</LibOptionNoPrelink-DefaultValue>
+      <LibOptionShowTotalSize-DefaultValue>False</LibOptionShowTotalSize-DefaultValue>
+      <LibOptionChangeMessageError-DefaultValue>None</LibOptionChangeMessageError-DefaultValue>
+      <LibOptionNoMessageErrorNumber-DefaultValue />
+      <LibOptionShowVector-DefaultValue>False</LibOptionShowVector-DefaultValue>
+      <LibOptionChangeMessageErrorNumber-DefaultValue />
+      <LibOptionHide-DefaultValue>False</LibOptionHide-DefaultValue>
+      <LibOptionTotalSize-DefaultValue>False</LibOptionTotalSize-DefaultValue>
+      <LibOptionLogo-DefaultValue>False</LibOptionLogo-DefaultValue>
+      <LibOptionPreLibrarianCommands-DefaultValue />
+      <LibOptionPostLibrarianCommands-DefaultValue />
+      <LibOptionOtherAdditionalOptions-DefaultValue />
+      <LibOptionCommandLine-DefaultValue />
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8588053503357851523</TimeTagModified--0>
+      <LibOptionForm-0>LibraryU</LibOptionForm-0>
+      <LibOptionInput-0 />
+      <LibOptionListShow-0>None</LibOptionListShow-0>
+      <LibOptionMemory-0>False</LibOptionMemory-0>
+      <LibOptionChangeMessageInformation-0>None</LibOptionChangeMessageInformation-0>
+      <LibOptionDebug-0>Debug</LibOptionDebug-0>
+      <LibOptionLibrary-0 />
+      <LibOptionShowSymbol-0>False</LibOptionShowSymbol-0>
+      <LibOptionChangeMessageInformationNumber-0 />
+      <LibOptionOutputFolder-0>%BuildModeName%</LibOptionOutputFolder-0>
+      <LibOptionShowSection-0>False</LibOptionShowSection-0>
+      <LibOptionSystemLibrary-0 />
+      <LibOptionBinary-0 />
+      <LibOptionChangeMessageWarning-0>None</LibOptionChangeMessageWarning-0>
+      <LibOptionOutputFileName-0>%ProjectName%.lib</LibOptionOutputFileName-0>
+      <LibOptionShowXreference-0>False</LibOptionShowXreference-0>
+      <LibOptionChangeMessageWarningNumber-0 />
+      <LibOptionMessage-0>NoMessage</LibOptionMessage-0>
+      <LibOptionNoPrelink-0>Auto</LibOptionNoPrelink-0>
+      <LibOptionShowTotalSize-0>False</LibOptionShowTotalSize-0>
+      <LibOptionChangeMessageError-0>None</LibOptionChangeMessageError-0>
+      <LibOptionNoMessageErrorNumber-0 />
+      <LibOptionShowVector-0>False</LibOptionShowVector-0>
+      <LibOptionChangeMessageErrorNumber-0 />
+      <LibOptionHide-0>False</LibOptionHide-0>
+      <LibOptionTotalSize-0>False</LibOptionTotalSize-0>
+      <LibOptionLogo-0>False</LibOptionLogo-0>
+      <LibOptionPreLibrarianCommands-0 />
+      <LibOptionPostLibrarianCommands-0 />
+      <LibOptionOtherAdditionalOptions-0 />
+      <LibOptionCommandLine-0 />
+    </Instance>
+    <Instance Guid="9cb0ade0-b3cb-4e21-823c-290b5fdb5f1e">
+      <LbgOptionLanguage-DefaultValue>C</LbgOptionLanguage-DefaultValue>
+      <LbgOptionLibraryMode-DefaultValue>MakeOptionChanged</LbgOptionLibraryMode-DefaultValue>
+      <LbgOptionLogo-DefaultValue>False</LbgOptionLogo-DefaultValue>
+      <LbgOptionOptimize-DefaultValue>Level2</LbgOptionOptimize-DefaultValue>
+      <LbgOptionOutputFolder-DefaultValue>%BuildModeName%</LbgOptionOutputFolder-DefaultValue>
+      <LbgOptionGoptimize-DefaultValue>False</LbgOptionGoptimize-DefaultValue>
+      <LbgOptionHead-DefaultValue>Custom</LbgOptionHead-DefaultValue>
+      <LbgOptionOutputFileName-DefaultValue>%ProjectName%.lib</LbgOptionOutputFileName-DefaultValue>
+      <LbgOptionPreLibraryGenerateCommands-DefaultValue />
+      <LbgOptionFunctionalCutdown-DefaultValue>None</LbgOptionFunctionalCutdown-DefaultValue>
+      <LbgOptionHeadRuntime-DefaultValue>True</LbgOptionHeadRuntime-DefaultValue>
+      <LbgOptionPostLibraryGenerateCommands-DefaultValue />
+      <LbgOptionSpeedAndSize-DefaultValue>Size</LbgOptionSpeedAndSize-DefaultValue>
+      <LbgOptionHeadCtypeH-DefaultValue>False</LbgOptionHeadCtypeH-DefaultValue>
+      <LbgOptionLoop-DefaultValue>Auto</LbgOptionLoop-DefaultValue>
+      <LbgOptionOtherAdditionalOptions-DefaultValue />
+      <LbgOptionReent-DefaultValue>False</LbgOptionReent-DefaultValue>
+      <LbgOptionCommandLine-DefaultValue />
+      <LbgOptionHeadMathH-DefaultValue>False</LbgOptionHeadMathH-DefaultValue>
+      <LbgOptionLoopValue-DefaultValue>2</LbgOptionLoopValue-DefaultValue>
+      <LbgOptionSectionP-DefaultValue>P</LbgOptionSectionP-DefaultValue>
+      <LbgOptionHeadMathfH-DefaultValue>False</LbgOptionHeadMathfH-DefaultValue>
+      <LbgOptionInline-DefaultValue>Auto</LbgOptionInline-DefaultValue>
+      <LbgOptionSectionC-DefaultValue>C</LbgOptionSectionC-DefaultValue>
+      <LbgOptionHeadStdargH-DefaultValue>False</LbgOptionHeadStdargH-DefaultValue>
+      <LbgOptionInlineValue-DefaultValue>100</LbgOptionInlineValue-DefaultValue>
+      <LbgOptionSectionD-DefaultValue>D</LbgOptionSectionD-DefaultValue>
+      <LbgOptionFileInline-DefaultValue />
+      <LbgOptionHeadStdioH-DefaultValue>True</LbgOptionHeadStdioH-DefaultValue>
+      <LbgOptionSectionB-DefaultValue>B</LbgOptionSectionB-DefaultValue>
+      <LbgOptionCase-DefaultValue>Auto</LbgOptionCase-DefaultValue>
+      <LbgOptionHeadStdlibH-DefaultValue>True</LbgOptionHeadStdlibH-DefaultValue>
+      <LbgOptionSectionL-DefaultValue>L</LbgOptionSectionL-DefaultValue>
+      <LbgOptionHeadStringH-DefaultValue>True</LbgOptionHeadStringH-DefaultValue>
+      <LbgOptionSectionW-DefaultValue>W</LbgOptionSectionW-DefaultValue>
+      <LbgOptionVolatile-DefaultValue>False</LbgOptionVolatile-DefaultValue>
+      <LbgOptionConstCopy-DefaultValue>Auto</LbgOptionConstCopy-DefaultValue>
+      <LbgOptionHeadIos-DefaultValue>False</LbgOptionHeadIos-DefaultValue>
+      <LbgOptionNostuffB-DefaultValue>False</LbgOptionNostuffB-DefaultValue>
+      <LbgOptionConstDiv-DefaultValue>Auto</LbgOptionConstDiv-DefaultValue>
+      <LbgOptionHeadNew-DefaultValue>True</LbgOptionHeadNew-DefaultValue>
+      <LbgOptionNostuffD-DefaultValue>False</LbgOptionNostuffD-DefaultValue>
+      <LbgOptionHeadComplex-DefaultValue>False</LbgOptionHeadComplex-DefaultValue>
+      <LbgOptionLibrary-DefaultValue>Intrinsic</LbgOptionLibrary-DefaultValue>
+      <LbgOptionNostuffC-DefaultValue>False</LbgOptionNostuffC-DefaultValue>
+      <LbgOptionHeadString-DefaultValue>False</LbgOptionHeadString-DefaultValue>
+      <LbgOptionNostuffW-DefaultValue>False</LbgOptionNostuffW-DefaultValue>
+      <LbgOptionScope-DefaultValue>Auto</LbgOptionScope-DefaultValue>
+      <LbgOptionHeadComplexH-DefaultValue>False</LbgOptionHeadComplexH-DefaultValue>
+      <LbgOptionInstalign-DefaultValue>Noinstalign</LbgOptionInstalign-DefaultValue>
+      <LbgOptionSchedule-DefaultValue>Auto</LbgOptionSchedule-DefaultValue>
+      <LbgOptionApproxdiv-DefaultValue>False</LbgOptionApproxdiv-DefaultValue>
+      <LbgOptionHeadFenvH-DefaultValue>False</LbgOptionHeadFenvH-DefaultValue>
+      <LbgOptionNouseDiv-DefaultValue>True</LbgOptionNouseDiv-DefaultValue>
+      <LbgOptionEnableRegister-DefaultValue>False</LbgOptionEnableRegister-DefaultValue>
+      <LbgOptionHeadInttypesH-DefaultValue>False</LbgOptionHeadInttypesH-DefaultValue>
+      <LbgOptionHeadWcharH-DefaultValue>False</LbgOptionHeadWcharH-DefaultValue>
+      <LbgOptionSimpleFloatConv-DefaultValue>False</LbgOptionSimpleFloatConv-DefaultValue>
+      <LbgOptionFpu-DefaultValue>Fpu</LbgOptionFpu-DefaultValue>
+      <LbgOptionHeadWctypeH-DefaultValue>False</LbgOptionHeadWctypeH-DefaultValue>
+      <LbgOptionFloatOrder-DefaultValue>False</LbgOptionFloatOrder-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8588053503357851523</TimeTagModified--0>
+      <LbgOptionLanguage-0>C</LbgOptionLanguage-0>
+      <LbgOptionLibraryMode-0>MakeOptionChanged</LbgOptionLibraryMode-0>
+      <LbgOptionLogo-0>False</LbgOptionLogo-0>
+      <LbgOptionOptimize-0>Level2</LbgOptionOptimize-0>
+      <LbgOptionOutputFolder-0>%BuildModeName%</LbgOptionOutputFolder-0>
+      <LbgOptionGoptimize-0>False</LbgOptionGoptimize-0>
+      <LbgOptionHead-0>Custom</LbgOptionHead-0>
+      <LbgOptionOutputFileName-0>%ProjectName%.lib</LbgOptionOutputFileName-0>
+      <LbgOptionPreLibraryGenerateCommands-0 />
+      <LbgOptionFunctionalCutdown-0>None</LbgOptionFunctionalCutdown-0>
+      <LbgOptionPostLibraryGenerateCommands-0 />
+      <LbgOptionSpeedAndSize-0>Size</LbgOptionSpeedAndSize-0>
+      <LbgOptionHeadCtypeH-0>False</LbgOptionHeadCtypeH-0>
+      <LbgOptionLoop-0>Auto</LbgOptionLoop-0>
+      <LbgOptionOtherAdditionalOptions-0 />
+      <LbgOptionReent-0>False</LbgOptionReent-0>
+      <LbgOptionCommandLine-0 />
+      <LbgOptionHeadMathH-0>False</LbgOptionHeadMathH-0>
+      <LbgOptionLoopValue-0>2</LbgOptionLoopValue-0>
+      <LbgOptionSectionP-0>P</LbgOptionSectionP-0>
+      <LbgOptionHeadMathfH-0>False</LbgOptionHeadMathfH-0>
+      <LbgOptionInline-0>Auto</LbgOptionInline-0>
+      <LbgOptionSectionC-0>C</LbgOptionSectionC-0>
+      <LbgOptionHeadStdargH-0>False</LbgOptionHeadStdargH-0>
+      <LbgOptionInlineValue-0>100</LbgOptionInlineValue-0>
+      <LbgOptionSectionD-0>D</LbgOptionSectionD-0>
+      <LbgOptionFileInline-0 />
+      <LbgOptionHeadStdioH-0>True</LbgOptionHeadStdioH-0>
+      <LbgOptionSectionB-0>B</LbgOptionSectionB-0>
+      <LbgOptionCase-0>Auto</LbgOptionCase-0>
+      <LbgOptionHeadStdlibH-0>True</LbgOptionHeadStdlibH-0>
+      <LbgOptionSectionL-0>L</LbgOptionSectionL-0>
+      <LbgOptionHeadStringH-0>True</LbgOptionHeadStringH-0>
+      <LbgOptionSectionW-0>W</LbgOptionSectionW-0>
+      <LbgOptionVolatile-0>False</LbgOptionVolatile-0>
+      <LbgOptionConstCopy-0>Auto</LbgOptionConstCopy-0>
+      <LbgOptionHeadIos-0>False</LbgOptionHeadIos-0>
+      <LbgOptionNostuffB-0>False</LbgOptionNostuffB-0>
+      <LbgOptionConstDiv-0>Auto</LbgOptionConstDiv-0>
+      <LbgOptionHeadNew-0>True</LbgOptionHeadNew-0>
+      <LbgOptionNostuffD-0>False</LbgOptionNostuffD-0>
+      <LbgOptionHeadComplex-0>False</LbgOptionHeadComplex-0>
+      <LbgOptionLibrary-0>Intrinsic</LbgOptionLibrary-0>
+      <LbgOptionNostuffC-0>False</LbgOptionNostuffC-0>
+      <LbgOptionHeadString-0>False</LbgOptionHeadString-0>
+      <LbgOptionNostuffW-0>False</LbgOptionNostuffW-0>
+      <LbgOptionScope-0>Auto</LbgOptionScope-0>
+      <LbgOptionHeadComplexH-0>False</LbgOptionHeadComplexH-0>
+      <LbgOptionInstalign-0>Noinstalign</LbgOptionInstalign-0>
+      <LbgOptionSchedule-0>Auto</LbgOptionSchedule-0>
+      <LbgOptionApproxdiv-0>False</LbgOptionApproxdiv-0>
+      <LbgOptionHeadFenvH-0>False</LbgOptionHeadFenvH-0>
+      <LbgOptionNouseDiv-0>True</LbgOptionNouseDiv-0>
+      <LbgOptionEnableRegister-0>False</LbgOptionEnableRegister-0>
+      <LbgOptionHeadInttypesH-0>False</LbgOptionHeadInttypesH-0>
+      <LbgOptionHeadWcharH-0>False</LbgOptionHeadWcharH-0>
+      <LbgOptionSimpleFloatConv-0>False</LbgOptionSimpleFloatConv-0>
+      <LbgOptionFpu-0>Fpu</LbgOptionFpu-0>
+      <LbgOptionHeadWctypeH-0>False</LbgOptionHeadWctypeH-0>
+      <LbgOptionFloatOrder-0>False</LbgOptionFloatOrder-0>
+    </Instance>
+    <Instance Guid="dead237c-631a-45e3-81f9-46146a1fb78e">
+      <ItemAddTime>635318883980019487</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="a7be515f-f007-45ed-9059-4e1500c0f74d">
+      <TimeTagModified-SourceItem0--0>-8588053476874756321</TimeTagModified-SourceItem0--0>
+      <SourceItem0-IsLockedByUser>False</SourceItem0-IsLockedByUser>
+      <SourceItem0-BuildingTarget-0>True</SourceItem0-BuildingTarget-0>
+      <SourceItem0-IndividualCompileOption-0>False</SourceItem0-IndividualCompileOption-0>
+    </Instance>
+  </Class>
+  <Class Guid="44fa27c9-0aa0-4297-bd3b-2c5c5bdb8881">
+    <Instance Guid="44fa27c9-0aa0-4297-bd3b-2c5c5bdb8881">
+      <IsLibraryMode>False</IsLibraryMode>
+      <StartUpCategoryItem>00000000-0000-0000-0000-000000000000</StartUpCategoryItem>
+    </Instance>
+  </Class>
+  <Class Guid="a29a09ee-92c3-4ce7-9586-a1b058043f92">
+    <Instance Guid="a29a09ee-92c3-4ce7-9586-a1b058043f92">
+      <ProjectGeneratr-GeneratedFile0 />
+    </Instance>
+  </Class>
+  <Class Guid="31a86ad3-37bd-4846-aff2-e08abdc00197">
+    <Instance Guid="31a86ad3-37bd-4846-aff2-e08abdc00197">
+      <DeviceNameOnCreateStartup>R5F563NBDxFP</DeviceNameOnCreateStartup>
+    </Instance>
+  </Class>
+  <Class Guid="8b5af363-dcc2-48e6-919c-6cdb80d50173">
+    <Instance Guid="8b5af363-dcc2-48e6-919c-6cdb80d50173">
+      <DataFormatVersionPlugin>1.0</DataFormatVersionPlugin>
+      <DataFormatVersionDebugger>1.0</DataFormatVersionDebugger>
+    </Instance>
+  </Class>
+  <Class Guid="932085a2-9361-4df9-a3f7-12e6de7681a8">
+    <Instance Guid="932085a2-9361-4df9-a3f7-12e6de7681a8">
+      <DebugToolManager>1d1a55cf-2b92-481a-af4f-5975d095c419</DebugToolManager>
+    </Instance>
+  </Class>
+  <Class Guid="e4df8d71-236e-4af2-aaea-56345a08da25">
+    <Instance Guid="9e76d4e8-0b8f-4e7c-91b7-a4c442bcf2e7">
+      <DeviceChangedCounter>0</DeviceChangedCounter>
+      <DeviceName>R5F563NBDxFP</DeviceName>
+      <DebuggerProperty-EssentialProperty-Endian-CpuEndian>Little</DebuggerProperty-EssentialProperty-Endian-CpuEndian>
+      <DebuggerProperty-EssentialProperty-Clock-SystemClockFrequency>100</DebuggerProperty-EssentialProperty-Clock-SystemClockFrequency>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Length>3</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Length>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item0-Name>CMT</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item0-Name>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item0-IsUse>False</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item0-IsUse>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item1-Name>ICU</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item1-Name>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item1-IsUse>False</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item1-IsUse>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item2-Name>MPU</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item2-Name>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item2-IsUse>False</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item2-IsUse>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-PeripheralClockRate>ClockRate_1</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-PeripheralClockRate>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-Length>1</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-Length>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-DebuggerGuid />
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-FileName>DefaultBuild\cfg.abs</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-FileName>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-FileType>LoadModuleFile</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-FileType>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-Offset>0</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-Offset>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-StartAddress>0</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-StartAddress>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-ObjectDownload>True</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-ObjectDownload>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-SymbolDownload>True</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-SymbolDownload>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-UsePicPidOffset>False</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-UsePicPidOffset>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-PicOffset>0</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-PicOffset>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-PidOffset>0</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-PidOffset>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-GenerateInformationForInputCompletion>True</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-GenerateInformationForInputCompletion>
+      <DebuggerProperty-DownloadProperty-DebugInformation-CpuReset>True</DebuggerProperty-DownloadProperty-DebugInformation-CpuReset>
+      <DebuggerProperty-DownloadProperty-DebugInformation-FlashErase>False</DebuggerProperty-DownloadProperty-DebugInformation-FlashErase>
+      <DebuggerProperty-DownloadProperty-DebugInformation-EventCorrection>SuspendEvent</DebuggerProperty-DownloadProperty-DebugInformation-EventCorrection>
+      <DebuggerProperty-DownloadProperty-DebugInformation-SkipStartup>True</DebuggerProperty-DownloadProperty-DebugInformation-SkipStartup>
+      <DebuggerProperty-DownloadProperty-DebugInformation-MainSymbol>XwBtAGEAaQBuAA==</DebuggerProperty-DownloadProperty-DebugInformation-MainSymbol>
+      <DebuggerProperty-OptionalProperty-Register-UpdateDisplayInExecutionForPC>No</DebuggerProperty-OptionalProperty-Register-UpdateDisplayInExecutionForPC>
+      <DebuggerProperty-OptionalProperty-Register-UpdateIntervalForPC>500</DebuggerProperty-OptionalProperty-Register-UpdateIntervalForPC>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-Length>17</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-Length>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-MapType>InternalRam</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-StartAddress>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-EndAddress>131071</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-MapType>NonMap</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-StartAddress>131072</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-EndAddress>524287</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-StartAddress>524288</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-EndAddress>540671</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-MapType>NonMap</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-StartAddress>540672</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-EndAddress>548863</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-StartAddress>548864</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-EndAddress>557055</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-StartAddress>557056</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-EndAddress>581631</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-Endian>Big</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-MapType>NonMap</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-StartAddress>581632</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-EndAddress>589823</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-StartAddress>589824</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-EndAddress>655359</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-Endian>Big</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-StartAddress>655360</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-EndAddress>786431</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-StartAddress>786432</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-EndAddress>1048575</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-Endian>Big</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-MapType>InternalRom</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-StartAddress>1048576</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-EndAddress>1081343</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-MapType>NonMap</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-StartAddress>1081344</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-EndAddress>8372223</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-StartAddress>8372224</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-EndAddress>8373503</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-Endian>Big</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-MapType>NonMap</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-StartAddress>8373504</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-EndAddress>8387583</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-StartAddress>8387584</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-EndAddress>8388607</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-Endian>Big</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-MapType>NonMap</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-StartAddress>8388608</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-EndAddress>4293918719</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-MapType>InternalRom</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-StartAddress>4293918720</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-EndAddress>4294967295</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-Endian>
+      <DebuggerProperty-OptionalProperty-AccessMemory-UpdateDisplayInExecution>Yes</DebuggerProperty-OptionalProperty-AccessMemory-UpdateDisplayInExecution>
+      <DebuggerProperty-OptionalProperty-AccessMemory-UpdateInterval>500</DebuggerProperty-OptionalProperty-AccessMemory-UpdateInterval>
+      <DebuggerProperty-OptionalProperty-Trace-UseTrace>No</DebuggerProperty-OptionalProperty-Trace-UseTrace>
+      <DebuggerProperty-OptionalProperty-Trace-ClearTraceMemory>Yes</DebuggerProperty-OptionalProperty-Trace-ClearTraceMemory>
+      <DebuggerProperty-OptionalProperty-Trace-TraceMode>Nonstop</DebuggerProperty-OptionalProperty-Trace-TraceMode>
+      <DebuggerProperty-OptionalProperty-Trace-AddUptimeTag>No</DebuggerProperty-OptionalProperty-Trace-AddUptimeTag>
+      <DebuggerProperty-OptionalProperty-Trace-TraceMemorySize>TraceMemory_64KB</DebuggerProperty-OptionalProperty-Trace-TraceMemorySize>
+      <DebuggerProperty-OptionalProperty-Coverage-UseCoverage>No</DebuggerProperty-OptionalProperty-Coverage-UseCoverage>
+      <DebuggerProperty-OptionalProperty-Coverage-ReuseCoverageData>No</DebuggerProperty-OptionalProperty-Coverage-ReuseCoverageData>
+      <DebuggerProperty-OptionalProperty-StreamIO-SelectStreamIO>Simulator</DebuggerProperty-OptionalProperty-StreamIO-SelectStreamIO>
+      <DebuggerProperty-OptionalProperty-StreamIO-UseStreamIO>No</DebuggerProperty-OptionalProperty-StreamIO-UseStreamIO>
+      <DebuggerProperty-OptionalProperty-StreamIO-StreamIOAddress>0</DebuggerProperty-OptionalProperty-StreamIO-StreamIOAddress>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-ExecutionModeType>Stop</DebuggerProperty-OptionalProperty-ExecutionMode-ExecutionModeType>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopUndefined>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopUndefined>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopPrivileged>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopPrivileged>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopAccess>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopAccess>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopFloatingPoint>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopFloatingPoint>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopInterrupt>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopInterrupt>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopInt>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopInt>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopBrk>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopBrk>
+      <DebuggerProperty-OptionalProperty-InstructionDecodeCache-CacheResults>No</DebuggerProperty-OptionalProperty-InstructionDecodeCache-CacheResults>
+      <DebuggerProperty-HookProperty-HookTransaction-Downloading-Length>0</DebuggerProperty-HookProperty-HookTransaction-Downloading-Length>
+      <DebuggerProperty-HookProperty-HookTransaction-Downloaded-Length>0</DebuggerProperty-HookProperty-HookTransaction-Downloaded-Length>
+      <DebuggerProperty-HookProperty-HookTransaction-Reset-Length>0</DebuggerProperty-HookProperty-HookTransaction-Reset-Length>
+      <DebuggerProperty-HookProperty-HookTransaction-Going-Length>0</DebuggerProperty-HookProperty-HookTransaction-Going-Length>
+      <DebuggerProperty-HookProperty-HookTransaction-Broke-Length>0</DebuggerProperty-HookProperty-HookTransaction-Broke-Length>
+      <DebuggerProperty-HookProperty-HookTransaction-Connected-Length>0</DebuggerProperty-HookProperty-HookTransaction-Connected-Length>
+      <DebuggerProperty-HookProperty-HookTransaction-Disconnecting-Length>0</DebuggerProperty-HookProperty-HookTransaction-Disconnecting-Length>
+      <DebuggerProperty-DownloadProperty-DebugInformation-MaxLoaderMemorySize>500</DebuggerProperty-DownloadProperty-DebugInformation-MaxLoaderMemorySize>
+    </Instance>
+  </Class>
+  <Class Guid="2a2c2a43-ecdb-4e88-80bd-e75f3e33db90">
+    <Instance Guid="2a2c2a43-ecdb-4e88-80bd-e75f3e33db90">
+      <ProductVersion>4.01.00.00</ProductVersion>
+    </Instance>
+  </Class>
+</CubeSuiteProject>
Index: uKadecot/trunk/csp/ukadecot/ukadecot.mtpj
===================================================================
--- uKadecot/trunk/csp/ukadecot/ukadecot.mtpj	(revision 101)
+++ uKadecot/trunk/csp/ukadecot/ukadecot.mtpj	(revision 101)
@@ -0,0 +1,2381 @@
+<CubeSuiteProject>
+  <ProductVersion>4.02.00.00</ProductVersion>
+  <Class Guid="68f4a651-b9cd-473b-a595-b00447132ffa">
+    <Instance Guid="00000000-0000-0000-0000-000000000000">
+      <FormatVersion>2.0</FormatVersion>
+      <FileVersion>4.2</FileVersion>
+      <ProjectGuid>2549006c-fcd4-4421-b0d4-eaa432247c3a</ProjectGuid>
+      <ProjectItemGuid>9269d96c-6d7a-4022-aec1-29dacec537b3</ProjectItemGuid>
+      <FileCategoryGuid>b2e986c8-61b2-4998-93c7-480f4abd3adf</FileCategoryGuid>
+      <Property>fb98844b-2c27-4275-9804-f6e63e204da0</Property>
+      <ActiveProjectGuid>2549006c-fcd4-4421-b0d4-eaa432247c3a</ActiveProjectGuid>
+    </Instance>
+    <Instance Guid="bbf392be-9376-4aba-bf45-bd3546fe324a">
+      <DependentProjectsGuidsSourceProjectsCount>0</DependentProjectsGuidsSourceProjectsCount>
+      <Type>Data</Type>
+    </Instance>
+    <Instance Guid="c9273e4d-9bc6-43a3-b0dd-b0cce4cfddba">
+      <Name>ssp</Name>
+      <Type>Category</Type>
+      <ParentItem>b2e986c8-61b2-4998-93c7-480f4abd3adf</ParentItem>
+      <Property>6a4af79b-634b-4fc8-b53f-c4932d9a9c92</Property>
+    </Instance>
+    <Instance Guid="07edd6aa-1254-4772-97df-f1e1d4b198bd">
+      <Name>uip</Name>
+      <Type>Category</Type>
+      <ParentItem>b2e986c8-61b2-4998-93c7-480f4abd3adf</ParentItem>
+      <Property>f78d966a-4935-4366-95f8-393f3f1e2030</Property>
+    </Instance>
+    <Instance Guid="cb4c48f1-ab50-4180-83e0-8bf4e1212b6a">
+      <Name>ecnl</Name>
+      <Type>Category</Type>
+      <ParentItem>b2e986c8-61b2-4998-93c7-480f4abd3adf</ParentItem>
+      <Property>81016c71-1dcd-4817-ba42-7d2871025106</Property>
+    </Instance>
+    <Instance Guid="da5e3c78-2990-422d-8f15-aa744ae6c400">
+      <Name>kadecot</Name>
+      <Type>Category</Type>
+      <ParentItem>b2e986c8-61b2-4998-93c7-480f4abd3adf</ParentItem>
+      <Property>5550cfe0-9727-4be6-89dd-28bec17ee1d6</Property>
+    </Instance>
+    <Instance Guid="fba78777-38ea-4ff3-b3f8-b7e7823ae080">
+      <Name>pfatfs</Name>
+      <Type>Category</Type>
+      <ParentItem>b2e986c8-61b2-4998-93c7-480f4abd3adf</ParentItem>
+      <Property>c7d33653-24b6-444f-ac23-839980030399</Property>
+    </Instance>
+    <Instance Guid="8780d761-4797-4c74-a761-4334bf06cd6f">
+      <Name>kernel_cfg.c</Name>
+      <Type>File</Type>
+      <RelativePath>kernel_cfg.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>b2e986c8-61b2-4998-93c7-480f4abd3adf</ParentItem>
+      <Property>96717be3-3cd5-41ec-9d5a-af8e56d1b7d9</Property>
+    </Instance>
+    <Instance Guid="c62c9f6d-1caf-4bff-bfdb-d2073e8d883b">
+      <Name>kernel_cfg_asm.src</Name>
+      <Type>File</Type>
+      <RelativePath>kernel_cfg_asm.src</RelativePath>
+      <TreeImageGuid>f654126d-e7ad-426d-be34-8455271d959b</TreeImageGuid>
+      <ParentItem>b2e986c8-61b2-4998-93c7-480f4abd3adf</ParentItem>
+      <Property>f6816365-86f5-4e40-b49a-30b6ed7bd7cc</Property>
+    </Instance>
+    <Instance Guid="de02f184-fa48-4e96-9e6a-6bb3dcb28323">
+      <Name>echonet_cfg.c</Name>
+      <Type>File</Type>
+      <RelativePath>echonet_cfg.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>b2e986c8-61b2-4998-93c7-480f4abd3adf</ParentItem>
+      <Property>58650108-15aa-40ad-ad8c-7919e862beaf</Property>
+    </Instance>
+    <Instance Guid="1bbd5dde-00fc-4a28-aa9c-60ae0e66d1b9">
+      <Name>main.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\src\ukadecot\main.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>b2e986c8-61b2-4998-93c7-480f4abd3adf</ParentItem>
+      <Property>3d955fa6-018c-4cbd-a54d-8fcaf2dee4b9</Property>
+    </Instance>
+    <Instance Guid="c6fd5121-fafc-402a-bd21-1fed2e540a0d">
+      <Name>arduino.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\src\ukadecot\arduino.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>b2e986c8-61b2-4998-93c7-480f4abd3adf</ParentItem>
+      <Property>fb20339f-a051-4f19-b9da-b36626f10a0b</Property>
+    </Instance>
+    <Instance Guid="4f4bde04-ca58-4545-8eb4-71fbb7e85b7c">
+      <Name>data_flash.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\src\ukadecot\data_flash.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>b2e986c8-61b2-4998-93c7-480f4abd3adf</ParentItem>
+      <Property>46500ebc-7e57-4e32-9973-241a61d6e55c</Property>
+    </Instance>
+    <Instance Guid="100de8d0-3fe3-43e4-babc-d7aa16facbd6">
+      <Name>start.src</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\arch\rx630_ccrx\start.src</RelativePath>
+      <TreeImageGuid>f654126d-e7ad-426d-be34-8455271d959b</TreeImageGuid>
+      <ParentItem>c9273e4d-9bc6-43a3-b0dd-b0cce4cfddba</ParentItem>
+      <Property>e6aeaedd-8dfe-44cb-a5d4-ba904488edb3</Property>
+    </Instance>
+    <Instance Guid="355812ee-668b-4f0b-9791-8f48825a3959">
+      <Name>prc_test.src</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\arch\rx630_ccrx\prc_test.src</RelativePath>
+      <TreeImageGuid>f654126d-e7ad-426d-be34-8455271d959b</TreeImageGuid>
+      <ParentItem>c9273e4d-9bc6-43a3-b0dd-b0cce4cfddba</ParentItem>
+      <Property>fe0f336b-f03b-4446-b0b3-6cb365d731a1</Property>
+    </Instance>
+    <Instance Guid="7fc99e01-e527-4738-a4ca-fc219d28b1b5">
+      <Name>log_output.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\syssvc\log_output.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>c9273e4d-9bc6-43a3-b0dd-b0cce4cfddba</ParentItem>
+      <Property>12eb346c-7108-48b4-9d5c-fe5474c36e51</Property>
+    </Instance>
+    <Instance Guid="4736c8a8-535e-4c84-b8cf-ccb9d5031867">
+      <Name>syslog.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\syssvc\syslog.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>c9273e4d-9bc6-43a3-b0dd-b0cce4cfddba</ParentItem>
+      <Property>ed28df36-c1f5-430c-96e6-b13c9c5d8863</Property>
+    </Instance>
+    <Instance Guid="77b72ec5-6d8d-4a1f-93ca-6c42f1023443">
+      <Name>vasyslog.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\syssvc\vasyslog.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>c9273e4d-9bc6-43a3-b0dd-b0cce4cfddba</ParentItem>
+      <Property>b7e23236-d1ea-4230-8c8b-562ad9d1c0a3</Property>
+    </Instance>
+    <Instance Guid="0bec35a2-6ac1-4d89-9403-72a3e1537885">
+      <Name>serial.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\syssvc\serial.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>c9273e4d-9bc6-43a3-b0dd-b0cce4cfddba</ParentItem>
+      <Property>28a1c3df-ac20-4c59-ab89-d6ae334bca7a</Property>
+    </Instance>
+    <Instance Guid="93832830-324b-44be-b4a3-ce060e78b364">
+      <Name>logtask.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\syssvc\logtask.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>c9273e4d-9bc6-43a3-b0dd-b0cce4cfddba</ParentItem>
+      <Property>894f6561-d5a8-46cd-bc31-e0cbe6d80777</Property>
+    </Instance>
+    <Instance Guid="cf6bb2a4-3ecb-4ca0-a544-db12b0076f4e">
+      <Name>banner.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\syssvc\banner.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>c9273e4d-9bc6-43a3-b0dd-b0cce4cfddba</ParentItem>
+      <Property>53c525a1-fd12-4ac2-a527-3197982980ab</Property>
+    </Instance>
+    <Instance Guid="4e012b1a-8795-42f3-b39c-61d26949c471">
+      <Name>psock.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\uip\psock.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>20018d79-920c-43d6-bd84-347000a47e0a</Property>
+    </Instance>
+    <Instance Guid="85f63bab-6a98-40fd-a7a3-554f50ba0bda">
+      <Name>timer.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\uip\timer.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>24f5f0de-962d-4248-83ef-26c54c123be1</Property>
+    </Instance>
+    <Instance Guid="bf1def42-49c6-47f9-8469-024fce72c520">
+      <Name>uip.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\uip\uip.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>519f7d7d-8770-4308-8539-27c22fcd29c3</Property>
+    </Instance>
+    <Instance Guid="1237608f-20f3-48ff-bb64-fa91866be8ff">
+      <Name>uip_arp.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\uip\uip_arp.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>18c25f2d-4f1e-47f5-a718-54cc506d285f</Property>
+    </Instance>
+    <Instance Guid="18854485-3e8d-45c6-af26-3c91fb86ab27">
+      <Name>uip-fw.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\uip\uip-fw.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>8fec4e19-fb0c-4084-9098-d3235c642c72</Property>
+    </Instance>
+    <Instance Guid="3c45dc57-e843-4d8a-843b-9ba60af3b64c">
+      <Name>uiplib.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\uip\uiplib.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>c83321d4-7af1-4344-8eaa-d0f3c80061e4</Property>
+    </Instance>
+    <Instance Guid="c2f52a1a-5ece-44e6-a507-0a3b745cdc25">
+      <Name>uip-neighbor.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\uip\uip-neighbor.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>2a21747e-b8f9-480e-b810-d01ef7b42a8f</Property>
+    </Instance>
+    <Instance Guid="4ca9d7d2-101e-4576-a66d-44d31d3313b6">
+      <Name>uip-split.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\uip\uip-split.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>9e852822-ba69-46bf-a0a0-69cc8f9a2e35</Property>
+    </Instance>
+    <Instance Guid="71b1d656-790d-4e4e-b799-a485961695df">
+      <Name>uip_adpt.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\task\uip_adpt.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>f338708c-2363-4513-b649-d1f4750c7344</Property>
+    </Instance>
+    <Instance Guid="b1e1546b-8919-4fcc-be08-7e70c4176b40">
+      <Name>uip_task.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\task\uip_task.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>7f329eea-42a4-47bc-b67a-4c084ac054ba</Property>
+    </Instance>
+    <Instance Guid="70beef52-47f0-44a9-adec-cde39e64ca3d">
+      <Name>uip_target_config.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ssp\target\grsakura_ccrx\uip_target_config.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>61e39bbf-e918-4c0e-8b96-a7892142c729</Property>
+    </Instance>
+    <Instance Guid="10ac15b6-3d56-478a-93b8-717f1f6e038b">
+      <Name>ether_phy.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\target\if_rx62n\ether_phy.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>09cc435c-37aa-410b-8cf3-a12b1fc0204b</Property>
+    </Instance>
+    <Instance Guid="934c4f09-e16a-4a6b-94f4-def5a373376f">
+      <Name>if_rx62n.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\target\if_rx62n\if_rx62n.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>9071ac76-6269-4b0d-bb79-2ecda9327f18</Property>
+    </Instance>
+    <Instance Guid="e495184a-f1b3-48ce-b35a-257661fffacd">
+      <Name>httpd.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\apps\webserver\httpd.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>8de7b0c5-f95d-4e59-9292-ed8fa302fbbf</Property>
+    </Instance>
+    <Instance Guid="5648c17c-f3f0-45e5-a825-92882559ff7c">
+      <Name>httpd-fs.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\apps\webserver\httpd-fs.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>c44dd27d-1308-41fb-8310-9f0a52c9db41</Property>
+    </Instance>
+    <Instance Guid="2fd077e0-ad8e-4402-9ef1-6e724c3eff61">
+      <Name>http-strings.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\apps\webserver\http-strings.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>07093563-23ba-49f9-b856-fd77a59211b8</Property>
+    </Instance>
+    <Instance Guid="e0c47528-437b-4b76-9298-467f8837893f">
+      <Name>base64.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\apps\webserver\base64.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>fdb68a21-b8f3-4e47-8cbc-c6360c4df901</Property>
+    </Instance>
+    <Instance Guid="2001cd02-68c7-43db-b703-28b9455b33bd">
+      <Name>http_parser.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\apps\webserver\http_parser.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>2905aba9-3b87-48f1-8b51-ee881678d14a</Property>
+    </Instance>
+    <Instance Guid="464b18d9-b491-4870-8d20-7e4cb7263c41">
+      <Name>http_pcb.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\apps\webserver\http_pcb.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>f36062c9-1f5e-4a96-89ee-fba103eb1a6f</Property>
+    </Instance>
+    <Instance Guid="e00a3588-5ee1-4c5f-9ed9-c049d58215b8">
+      <Name>sha1.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\apps\webserver\sha1.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>3a26ff2c-e741-4fb1-9f59-8035d7adf022</Property>
+    </Instance>
+    <Instance Guid="5d34a40f-835b-43c9-b32b-de2eb0c8c35c">
+      <Name>websocket.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\apps\webserver\websocket.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>5633d3a2-2c34-4d35-afcc-6fbf74c36838</Property>
+    </Instance>
+    <Instance Guid="36141459-2751-48a0-9b78-a7710f3cb5cd">
+      <Name>dhcpc.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\uip\apps\dhcpc\dhcpc.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>07edd6aa-1254-4772-97df-f1e1d4b198bd</ParentItem>
+      <Property>a219d7fe-6647-4300-b33f-3de51cd4a7e4</Property>
+    </Instance>
+    <Instance Guid="77b39d7f-a06a-4099-90cf-eae401121f01">
+      <Name>echonet.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ecnl_ssp\echonet.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>cb4c48f1-ab50-4180-83e0-8bf4e1212b6a</ParentItem>
+      <Property>615ef65c-4532-4e4c-bc96-1b3c93864153</Property>
+    </Instance>
+    <Instance Guid="dad7ac30-3e41-406e-9e9b-2f566ed1dc23">
+      <Name>echonet_dbg.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ecnl_ssp\echonet_dbg.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>cb4c48f1-ab50-4180-83e0-8bf4e1212b6a</ParentItem>
+      <Property>16917848-70a5-451d-9266-7071dd4a1a64</Property>
+    </Instance>
+    <Instance Guid="3ec6aec0-453c-4375-a93b-f5efcbc1098a">
+      <Name>echonet_fbs.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ecnl_ssp\echonet_fbs.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>cb4c48f1-ab50-4180-83e0-8bf4e1212b6a</ParentItem>
+      <Property>a32c2c47-5651-443d-be75-7488471aa036</Property>
+    </Instance>
+    <Instance Guid="87cb7b63-e0a9-4724-a412-ac08bf6a28d9">
+      <Name>echonet_task.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ecnl_ssp\echonet_task.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>cb4c48f1-ab50-4180-83e0-8bf4e1212b6a</ParentItem>
+      <Property>aa139cd3-b9b1-4187-aeff-37fa205c4cc2</Property>
+    </Instance>
+    <Instance Guid="449eb0b4-5f1f-4b14-b3c4-46150f3a2b79">
+      <Name>echonet_uip_task.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ecnl_ssp\echonet_uip_task.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>cb4c48f1-ab50-4180-83e0-8bf4e1212b6a</ParentItem>
+      <Property>cb73ddf7-f98d-4037-a141-06d9b8f718ce</Property>
+    </Instance>
+    <Instance Guid="7d791048-ac51-4690-8898-106a26e61abb">
+      <Name>echonet_agent.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ecnl_ssp\echonet_agent.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>cb4c48f1-ab50-4180-83e0-8bf4e1212b6a</ParentItem>
+      <Property>35a5cd0f-456c-4450-b9cd-8d1e05bd736c</Property>
+    </Instance>
+    <Instance Guid="6e861f62-9bee-40c3-8c96-b46b67e92236">
+      <Name>fbs_string.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\ecnl_ssp\fbs_string.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>cb4c48f1-ab50-4180-83e0-8bf4e1212b6a</ParentItem>
+      <Property>0682f365-8919-4a4b-8f45-7dff9565253a</Property>
+    </Instance>
+    <Instance Guid="f2351905-2884-4edd-867a-9af4196f3325">
+      <Name>jsonsl.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\kadecot\jsonsl.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>da5e3c78-2990-422d-8f15-aa744ae6c400</ParentItem>
+      <Property>d48176bc-5f18-4336-9cd6-a240ace967bb</Property>
+    </Instance>
+    <Instance Guid="a330a24e-1280-49d1-8729-306b9e7c70ff">
+      <Name>kadecot_names.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\kadecot\kadecot_names.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>da5e3c78-2990-422d-8f15-aa744ae6c400</ParentItem>
+      <Property>bb248a98-f1d9-4969-ad2a-b71712bfa42a</Property>
+    </Instance>
+    <Instance Guid="2e26c8a2-3939-46cd-b221-d758f86bfc64">
+      <Name>wamp.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\kadecot\wamp.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>da5e3c78-2990-422d-8f15-aa744ae6c400</ParentItem>
+      <Property>a9978bf1-1118-446e-9069-296ae81b3b73</Property>
+    </Instance>
+    <Instance Guid="5a59a53d-629f-4c9b-91a5-b3f1f2b272a4">
+      <Name>wamp_broker.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\kadecot\wamp_broker.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>da5e3c78-2990-422d-8f15-aa744ae6c400</ParentItem>
+      <Property>23ce37af-785d-4fea-9726-0f6cb6323c35</Property>
+    </Instance>
+    <Instance Guid="19786a9e-df3d-4ae1-a948-3761a3294490">
+      <Name>wamp_callee.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\kadecot\wamp_callee.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>da5e3c78-2990-422d-8f15-aa744ae6c400</ParentItem>
+      <Property>8eaa1be3-5c90-4fe1-9396-4722e32d3892</Property>
+    </Instance>
+    <Instance Guid="91743b66-ef5d-4742-891f-0773b28ad763">
+      <Name>wamp_caller.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\kadecot\wamp_caller.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>da5e3c78-2990-422d-8f15-aa744ae6c400</ParentItem>
+      <Property>de17ff5e-df05-4885-8bb1-9dc4cf215983</Property>
+    </Instance>
+    <Instance Guid="513f2334-520d-4fd3-9ec5-6ff3fa87b98b">
+      <Name>wamp_client.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\kadecot\wamp_client.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>da5e3c78-2990-422d-8f15-aa744ae6c400</ParentItem>
+      <Property>4c7d90eb-4257-4f67-98f8-3f224fc18193</Property>
+    </Instance>
+    <Instance Guid="1297d6f2-f405-4aed-8595-ce4588513fa2">
+      <Name>wamp_dealer.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\kadecot\wamp_dealer.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>da5e3c78-2990-422d-8f15-aa744ae6c400</ParentItem>
+      <Property>f5e74e37-d3fc-47ac-9cfb-2a00a25afe07</Property>
+    </Instance>
+    <Instance Guid="d5d000f5-c21a-4e8d-b899-6982a1a4d4d4">
+      <Name>wamp_publisher.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\kadecot\wamp_publisher.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>da5e3c78-2990-422d-8f15-aa744ae6c400</ParentItem>
+      <Property>06297275-43a3-4256-a609-91abd508efe8</Property>
+    </Instance>
+    <Instance Guid="e14cb20c-0af5-4af7-a959-a0c67353efae">
+      <Name>wamp_router.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\kadecot\wamp_router.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>da5e3c78-2990-422d-8f15-aa744ae6c400</ParentItem>
+      <Property>26abd191-c8e1-4322-8e05-aedb430fc650</Property>
+    </Instance>
+    <Instance Guid="9c7de5ab-3c4a-40f9-bc3e-c4a1fd625ddb">
+      <Name>wamp_subscriber.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\kadecot\wamp_subscriber.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>da5e3c78-2990-422d-8f15-aa744ae6c400</ParentItem>
+      <Property>c864cf15-61f4-4c76-8e8c-7e2959a6434a</Property>
+    </Instance>
+    <Instance Guid="959e97b8-a341-4c57-a670-a1fb868978eb">
+      <Name>diskio.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\pfatfs\diskio.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>fba78777-38ea-4ff3-b3f8-b7e7823ae080</ParentItem>
+      <Property>c397349e-b563-40e9-b60e-589cb75a49a5</Property>
+    </Instance>
+    <Instance Guid="f80fdc1d-1a42-4612-9e72-6cec4e709c34">
+      <Name>pff.c</Name>
+      <Type>File</Type>
+      <RelativePath>..\..\pfatfs\pff.c</RelativePath>
+      <TreeImageGuid>941832c1-fc3b-4e1b-94e8-01ea17128b42</TreeImageGuid>
+      <ParentItem>fba78777-38ea-4ff3-b3f8-b7e7823ae080</ParentItem>
+      <Property>de34d294-295e-4251-bd6b-48cc727775f3</Property>
+    </Instance>
+  </Class>
+  <Class Guid="9033e9fb-2b12-4437-a25e-27b28d42582b">
+    <Instance Guid="7a554b30-602c-45a8-8757-edc7ca566583">
+      <Name>cfg</Name>
+      <RelativePath>cfg\cfg.mtsp</RelativePath>
+    </Instance>
+  </Class>
+  <Class Guid="fb98844b-2c27-4275-9804-f6e63e204da0">
+    <Instance Guid="fb98844b-2c27-4275-9804-f6e63e204da0">
+      <MemoCount>0</MemoCount>
+    </Instance>
+  </Class>
+  <Class Guid="0d548289-d5e9-4893-9a8f-9374b13f19a9">
+    <Instance Guid="96717be3-3cd5-41ec-9d5a-af8e56d1b7d9">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="f6816365-86f5-4e40-b49a-30b6ed7bd7cc">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="58650108-15aa-40ad-ad8c-7919e862beaf">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="3d955fa6-018c-4cbd-a54d-8fcaf2dee4b9">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="fb20339f-a051-4f19-b9da-b36626f10a0b">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="46500ebc-7e57-4e32-9973-241a61d6e55c">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="e6aeaedd-8dfe-44cb-a5d4-ba904488edb3">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="fe0f336b-f03b-4446-b0b3-6cb365d731a1">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="12eb346c-7108-48b4-9d5c-fe5474c36e51">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="ed28df36-c1f5-430c-96e6-b13c9c5d8863">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="b7e23236-d1ea-4230-8c8b-562ad9d1c0a3">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="28a1c3df-ac20-4c59-ab89-d6ae334bca7a">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="894f6561-d5a8-46cd-bc31-e0cbe6d80777">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="53c525a1-fd12-4ac2-a527-3197982980ab">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="20018d79-920c-43d6-bd84-347000a47e0a">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="24f5f0de-962d-4248-83ef-26c54c123be1">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="519f7d7d-8770-4308-8539-27c22fcd29c3">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="18c25f2d-4f1e-47f5-a718-54cc506d285f">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="8fec4e19-fb0c-4084-9098-d3235c642c72">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="c83321d4-7af1-4344-8eaa-d0f3c80061e4">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="2a21747e-b8f9-480e-b810-d01ef7b42a8f">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="9e852822-ba69-46bf-a0a0-69cc8f9a2e35">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="f338708c-2363-4513-b649-d1f4750c7344">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="7f329eea-42a4-47bc-b67a-4c084ac054ba">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="61e39bbf-e918-4c0e-8b96-a7892142c729">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="09cc435c-37aa-410b-8cf3-a12b1fc0204b">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="9071ac76-6269-4b0d-bb79-2ecda9327f18">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="8de7b0c5-f95d-4e59-9292-ed8fa302fbbf">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="c44dd27d-1308-41fb-8310-9f0a52c9db41">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="07093563-23ba-49f9-b856-fd77a59211b8">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="fdb68a21-b8f3-4e47-8cbc-c6360c4df901">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="2905aba9-3b87-48f1-8b51-ee881678d14a">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="f36062c9-1f5e-4a96-89ee-fba103eb1a6f">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="3a26ff2c-e741-4fb1-9f59-8035d7adf022">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="5633d3a2-2c34-4d35-afcc-6fbf74c36838">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="a219d7fe-6647-4300-b33f-3de51cd4a7e4">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="615ef65c-4532-4e4c-bc96-1b3c93864153">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="16917848-70a5-451d-9266-7071dd4a1a64">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="a32c2c47-5651-443d-be75-7488471aa036">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="aa139cd3-b9b1-4187-aeff-37fa205c4cc2">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="cb73ddf7-f98d-4037-a141-06d9b8f718ce">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="35a5cd0f-456c-4450-b9cd-8d1e05bd736c">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="0682f365-8919-4a4b-8f45-7dff9565253a">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="d48176bc-5f18-4336-9cd6-a240ace967bb">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="bb248a98-f1d9-4969-ad2a-b71712bfa42a">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="a9978bf1-1118-446e-9069-296ae81b3b73">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="23ce37af-785d-4fea-9726-0f6cb6323c35">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="8eaa1be3-5c90-4fe1-9396-4722e32d3892">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="de17ff5e-df05-4885-8bb1-9dc4cf215983">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="4c7d90eb-4257-4f67-98f8-3f224fc18193">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="f5e74e37-d3fc-47ac-9cfb-2a00a25afe07">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="06297275-43a3-4256-a609-91abd508efe8">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="26abd191-c8e1-4322-8e05-aedb430fc650">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="c864cf15-61f4-4c76-8e8c-7e2959a6434a">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="c397349e-b563-40e9-b60e-589cb75a49a5">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="de34d294-295e-4251-bd6b-48cc727775f3">
+      <MemoCount>0</MemoCount>
+    </Instance>
+  </Class>
+  <Class Guid="78a5c5cd-76cb-4bcc-a031-3020011fbc9a">
+    <Instance Guid="6a4af79b-634b-4fc8-b53f-c4932d9a9c92">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="f78d966a-4935-4366-95f8-393f3f1e2030">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="81016c71-1dcd-4817-ba42-7d2871025106">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="5550cfe0-9727-4be6-89dd-28bec17ee1d6">
+      <MemoCount>0</MemoCount>
+    </Instance>
+    <Instance Guid="c7d33653-24b6-444f-ac23-839980030399">
+      <MemoCount>0</MemoCount>
+    </Instance>
+  </Class>
+  <Class Guid="8fb9c1f6-d351-4d10-8d99-bf5b3015b84c">
+    <Instance Guid="00000000-0000-0000-0000-000000000000">
+      <UsingPlatformGuid>500ba51a-4219-4828-b4be-80f54d6d3551</UsingPlatformGuid>
+    </Instance>
+  </Class>
+  <Class Guid="c325714f-8f51-484b-9e96-b4b59c0fb263">
+    <Instance Guid="c325714f-8f51-484b-9e96-b4b59c0fb263">
+      <DeviceManager>0e793ff3-2e3f-43c0-bdc9-926269595403</DeviceManager>
+    </Instance>
+  </Class>
+  <Class Guid="0e793ff3-2e3f-43c0-bdc9-926269595403">
+    <Instance Guid="0e793ff3-2e3f-43c0-bdc9-926269595403">
+      <DataFormatVersion>1.0</DataFormatVersion>
+    </Instance>
+    <Instance Guid="2a81c37a-5015-44c2-9f40-e58b669eec75">
+      <DeviceName>R5F563NBDxFP</DeviceName>
+      <MemoCount>0</MemoCount>
+    </Instance>
+  </Class>
+  <Class Guid="873c9a58-9bc5-439a-b476-78629a4553ed">
+    <Instance Guid="873c9a58-9bc5-439a-b476-78629a4553ed">
+      <ProjectDeviceChangedCounter>0</ProjectDeviceChangedCounter>
+      <ProjectInitialDeviceName>R5F563NBDxFP</ProjectInitialDeviceName>
+    </Instance>
+  </Class>
+  <Class Guid="c3835e31-dea3-4c93-b02b-d2db997f7630">
+    <Instance Guid="c3835e31-dea3-4c93-b02b-d2db997f7630">
+      <BuildToolManager>3a79707d-5977-45f7-ac11-19c35e333132</BuildToolManager>
+    </Instance>
+  </Class>
+  <Class Guid="3a79707d-5977-45f7-ac11-19c35e333132">
+    <Instance Guid="3a79707d-5977-45f7-ac11-19c35e333132">
+      <DataFormatVersion>1.2</DataFormatVersion>
+      <BuildModeCount>1</BuildModeCount>
+      <BuildMode0>RABlAGYAYQB1AGwAdABCAHUAaQBsAGQA</BuildMode0>
+      <BatchBuildFlag0>False</BatchBuildFlag0>
+      <CurrentBuildMode>DefaultBuild</CurrentBuildMode>
+      <SourceItemGuid0>8780d761-4797-4c74-a761-4334bf06cd6f</SourceItemGuid0>
+      <SourceItemType0>CSource</SourceItemType0>
+      <SourceItemGuid1>c62c9f6d-1caf-4bff-bfdb-d2073e8d883b</SourceItemGuid1>
+      <SourceItemType1>AsmSource</SourceItemType1>
+      <SourceItemGuid2>de02f184-fa48-4e96-9e6a-6bb3dcb28323</SourceItemGuid2>
+      <SourceItemType2>CSource</SourceItemType2>
+      <SourceItemGuid3>1bbd5dde-00fc-4a28-aa9c-60ae0e66d1b9</SourceItemGuid3>
+      <SourceItemType3>CSource</SourceItemType3>
+      <SourceItemGuid4>c6fd5121-fafc-402a-bd21-1fed2e540a0d</SourceItemGuid4>
+      <SourceItemType4>CSource</SourceItemType4>
+      <SourceItemGuid5>4f4bde04-ca58-4545-8eb4-71fbb7e85b7c</SourceItemGuid5>
+      <SourceItemType5>CSource</SourceItemType5>
+      <SourceItemGuid6>100de8d0-3fe3-43e4-babc-d7aa16facbd6</SourceItemGuid6>
+      <SourceItemType6>AsmSource</SourceItemType6>
+      <SourceItemGuid7>355812ee-668b-4f0b-9791-8f48825a3959</SourceItemGuid7>
+      <SourceItemType7>AsmSource</SourceItemType7>
+      <SourceItemGuid8>7fc99e01-e527-4738-a4ca-fc219d28b1b5</SourceItemGuid8>
+      <SourceItemType8>CSource</SourceItemType8>
+      <SourceItemGuid9>4736c8a8-535e-4c84-b8cf-ccb9d5031867</SourceItemGuid9>
+      <SourceItemType9>CSource</SourceItemType9>
+      <SourceItemGuid10>77b72ec5-6d8d-4a1f-93ca-6c42f1023443</SourceItemGuid10>
+      <SourceItemType10>CSource</SourceItemType10>
+      <SourceItemGuid11>0bec35a2-6ac1-4d89-9403-72a3e1537885</SourceItemGuid11>
+      <SourceItemType11>CSource</SourceItemType11>
+      <SourceItemGuid12>93832830-324b-44be-b4a3-ce060e78b364</SourceItemGuid12>
+      <SourceItemType12>CSource</SourceItemType12>
+      <SourceItemGuid13>cf6bb2a4-3ecb-4ca0-a544-db12b0076f4e</SourceItemGuid13>
+      <SourceItemType13>CSource</SourceItemType13>
+      <SourceItemGuid14>4e012b1a-8795-42f3-b39c-61d26949c471</SourceItemGuid14>
+      <SourceItemType14>CSource</SourceItemType14>
+      <SourceItemGuid15>85f63bab-6a98-40fd-a7a3-554f50ba0bda</SourceItemGuid15>
+      <SourceItemType15>CSource</SourceItemType15>
+      <SourceItemGuid16>bf1def42-49c6-47f9-8469-024fce72c520</SourceItemGuid16>
+      <SourceItemType16>CSource</SourceItemType16>
+      <SourceItemGuid17>1237608f-20f3-48ff-bb64-fa91866be8ff</SourceItemGuid17>
+      <SourceItemType17>CSource</SourceItemType17>
+      <SourceItemGuid18>18854485-3e8d-45c6-af26-3c91fb86ab27</SourceItemGuid18>
+      <SourceItemType18>CSource</SourceItemType18>
+      <SourceItemGuid19>3c45dc57-e843-4d8a-843b-9ba60af3b64c</SourceItemGuid19>
+      <SourceItemType19>CSource</SourceItemType19>
+      <SourceItemGuid20>c2f52a1a-5ece-44e6-a507-0a3b745cdc25</SourceItemGuid20>
+      <SourceItemType20>CSource</SourceItemType20>
+      <SourceItemGuid21>4ca9d7d2-101e-4576-a66d-44d31d3313b6</SourceItemGuid21>
+      <SourceItemType21>CSource</SourceItemType21>
+      <SourceItemGuid22>71b1d656-790d-4e4e-b799-a485961695df</SourceItemGuid22>
+      <SourceItemType22>CSource</SourceItemType22>
+      <SourceItemGuid23>b1e1546b-8919-4fcc-be08-7e70c4176b40</SourceItemGuid23>
+      <SourceItemType23>CSource</SourceItemType23>
+      <SourceItemGuid24>70beef52-47f0-44a9-adec-cde39e64ca3d</SourceItemGuid24>
+      <SourceItemType24>CSource</SourceItemType24>
+      <SourceItemGuid25>10ac15b6-3d56-478a-93b8-717f1f6e038b</SourceItemGuid25>
+      <SourceItemType25>CSource</SourceItemType25>
+      <SourceItemGuid26>934c4f09-e16a-4a6b-94f4-def5a373376f</SourceItemGuid26>
+      <SourceItemType26>CSource</SourceItemType26>
+      <SourceItemGuid27>e495184a-f1b3-48ce-b35a-257661fffacd</SourceItemGuid27>
+      <SourceItemType27>CSource</SourceItemType27>
+      <SourceItemGuid28>5648c17c-f3f0-45e5-a825-92882559ff7c</SourceItemGuid28>
+      <SourceItemType28>CSource</SourceItemType28>
+      <SourceItemGuid29>2fd077e0-ad8e-4402-9ef1-6e724c3eff61</SourceItemGuid29>
+      <SourceItemType29>CSource</SourceItemType29>
+      <SourceItemGuid30>e0c47528-437b-4b76-9298-467f8837893f</SourceItemGuid30>
+      <SourceItemType30>CSource</SourceItemType30>
+      <SourceItemGuid31>2001cd02-68c7-43db-b703-28b9455b33bd</SourceItemGuid31>
+      <SourceItemType31>CSource</SourceItemType31>
+      <SourceItemGuid32>464b18d9-b491-4870-8d20-7e4cb7263c41</SourceItemGuid32>
+      <SourceItemType32>CSource</SourceItemType32>
+      <SourceItemGuid33>e00a3588-5ee1-4c5f-9ed9-c049d58215b8</SourceItemGuid33>
+      <SourceItemType33>CSource</SourceItemType33>
+      <SourceItemGuid34>5d34a40f-835b-43c9-b32b-de2eb0c8c35c</SourceItemGuid34>
+      <SourceItemType34>CSource</SourceItemType34>
+      <SourceItemGuid35>36141459-2751-48a0-9b78-a7710f3cb5cd</SourceItemGuid35>
+      <SourceItemType35>CSource</SourceItemType35>
+      <SourceItemGuid36>77b39d7f-a06a-4099-90cf-eae401121f01</SourceItemGuid36>
+      <SourceItemType36>CSource</SourceItemType36>
+      <SourceItemGuid37>dad7ac30-3e41-406e-9e9b-2f566ed1dc23</SourceItemGuid37>
+      <SourceItemType37>CSource</SourceItemType37>
+      <SourceItemGuid38>3ec6aec0-453c-4375-a93b-f5efcbc1098a</SourceItemGuid38>
+      <SourceItemType38>CSource</SourceItemType38>
+      <SourceItemGuid39>87cb7b63-e0a9-4724-a412-ac08bf6a28d9</SourceItemGuid39>
+      <SourceItemType39>CSource</SourceItemType39>
+      <SourceItemGuid40>449eb0b4-5f1f-4b14-b3c4-46150f3a2b79</SourceItemGuid40>
+      <SourceItemType40>CSource</SourceItemType40>
+      <SourceItemGuid41>7d791048-ac51-4690-8898-106a26e61abb</SourceItemGuid41>
+      <SourceItemType41>CSource</SourceItemType41>
+      <SourceItemGuid42>6e861f62-9bee-40c3-8c96-b46b67e92236</SourceItemGuid42>
+      <SourceItemType42>CSource</SourceItemType42>
+      <SourceItemGuid43>f2351905-2884-4edd-867a-9af4196f3325</SourceItemGuid43>
+      <SourceItemType43>CSource</SourceItemType43>
+      <SourceItemGuid44>a330a24e-1280-49d1-8729-306b9e7c70ff</SourceItemGuid44>
+      <SourceItemType44>CSource</SourceItemType44>
+      <SourceItemGuid45>2e26c8a2-3939-46cd-b221-d758f86bfc64</SourceItemGuid45>
+      <SourceItemType45>CSource</SourceItemType45>
+      <SourceItemGuid46>5a59a53d-629f-4c9b-91a5-b3f1f2b272a4</SourceItemGuid46>
+      <SourceItemType46>CSource</SourceItemType46>
+      <SourceItemGuid47>19786a9e-df3d-4ae1-a948-3761a3294490</SourceItemGuid47>
+      <SourceItemType47>CSource</SourceItemType47>
+      <SourceItemGuid48>91743b66-ef5d-4742-891f-0773b28ad763</SourceItemGuid48>
+      <SourceItemType48>CSource</SourceItemType48>
+      <SourceItemGuid49>513f2334-520d-4fd3-9ec5-6ff3fa87b98b</SourceItemGuid49>
+      <SourceItemType49>CSource</SourceItemType49>
+      <SourceItemGuid50>1297d6f2-f405-4aed-8595-ce4588513fa2</SourceItemGuid50>
+      <SourceItemType50>CSource</SourceItemType50>
+      <SourceItemGuid51>d5d000f5-c21a-4e8d-b899-6982a1a4d4d4</SourceItemGuid51>
+      <SourceItemType51>CSource</SourceItemType51>
+      <SourceItemGuid52>e14cb20c-0af5-4af7-a959-a0c67353efae</SourceItemGuid52>
+      <SourceItemType52>CSource</SourceItemType52>
+      <SourceItemGuid53>9c7de5ab-3c4a-40f9-bc3e-c4a1fd625ddb</SourceItemGuid53>
+      <SourceItemType53>CSource</SourceItemType53>
+      <SourceItemGuid54>959e97b8-a341-4c57-a670-a1fb868978eb</SourceItemGuid54>
+      <SourceItemType54>CSource</SourceItemType54>
+      <SourceItemGuid55>f80fdc1d-1a42-4612-9e72-6cec4e709c34</SourceItemGuid55>
+      <SourceItemType55>CSource</SourceItemType55>
+      <SourceItemCount>56</SourceItemCount>
+      <LastDeviceChangedCounter>0</LastDeviceChangedCounter>
+    </Instance>
+    <Instance Guid="9e208646-ccba-4100-a676-29b1efe6545f">
+      <AsmOptionInclude-DefaultValue />
+      <BuildMode-DefaultValue>DefaultBuild</BuildMode-DefaultValue>
+      <COptionInclude-DefaultValue />
+      <GeneralOptionIsa-DefaultValue>RXv1</GeneralOptionIsa-DefaultValue>
+      <GeneralOptionOutput-DefaultValue>LoadModuleFile</GeneralOptionOutput-DefaultValue>
+      <GeneralOptionPic-DefaultValue>False</GeneralOptionPic-DefaultValue>
+      <GeneralOptionSimultaneousBuild-DefaultValue>True</GeneralOptionSimultaneousBuild-DefaultValue>
+      <HexOptionOutput-DefaultValue>True</HexOptionOutput-DefaultValue>
+      <LibOptionDebug-DefaultValue>Debug</LibOptionDebug-DefaultValue>
+      <LinkOptionLibrary-DefaultValue />
+      <Memo-DefaultValue />
+      <OutputMessageFormat-DefaultValue>%TargetFiles%</OutputMessageFormat-DefaultValue>
+      <AsmOptionSystemInclude-DefaultValue />
+      <COptionSystemInclude-DefaultValue />
+      <CompilerVersion-DefaultValue>
+
+0</CompilerVersion-DefaultValue>
+      <DependencyFileExistCheckingType-DefaultValue>Rebuild</DependencyFileExistCheckingType-DefaultValue>
+      <FormatBuildOptionList-DefaultValue>%TargetFiles% : %Program% %Options%</FormatBuildOptionList-DefaultValue>
+      <GeneralOptionCpu-DefaultValue>RX600</GeneralOptionCpu-DefaultValue>
+      <GeneralOptionOutputFolder-DefaultValue>%BuildModeName%</GeneralOptionOutputFolder-DefaultValue>
+      <GeneralOptionPid-DefaultValue>None</GeneralOptionPid-DefaultValue>
+      <HexOptionForm-DefaultValue>Stype</HexOptionForm-DefaultValue>
+      <LinkOptionDebug-DefaultValue>Debug</LinkOptionDebug-DefaultValue>
+      <AsmOptionDefine-DefaultValue />
+      <COptionDefine-DefaultValue />
+      <EnsureCompatibilityOfPathAndLinkageOrder-DefaultValue>False</EnsureCompatibilityOfPathAndLinkageOrder-DefaultValue>
+      <GeneralOptionFpu-DefaultValue>Auto</GeneralOptionFpu-DefaultValue>
+      <GeneralOptionNousePidRegister-DefaultValue>True</GeneralOptionNousePidRegister-DefaultValue>
+      <LinkOptionConvertFolder-DefaultValue>%BuildModeName%</LinkOptionConvertFolder-DefaultValue>
+      <LinkOptionOptimize-DefaultValue>None</LinkOptionOptimize-DefaultValue>
+      <AsmOptionDebug-DefaultValue>True</AsmOptionDebug-DefaultValue>
+      <COptionDebug-DefaultValue>True</COptionDebug-DefaultValue>
+      <GeneralOptionEndian-DefaultValue>Little</GeneralOptionEndian-DefaultValue>
+      <LinkOptionConvertFileName-DefaultValue>%ProjectName%.mot</LinkOptionConvertFileName-DefaultValue>
+      <LinkOptionOptimizeSymbolDelete-DefaultValue>False</LinkOptionOptimizeSymbolDelete-DefaultValue>
+      <PreBuildCommands-DefaultValue />
+      <AsmOptionGoptimize-DefaultValue>False</AsmOptionGoptimize-DefaultValue>
+      <COptionOptimize-DefaultValue>Level2</COptionOptimize-DefaultValue>
+      <GeneralOptionRound-DefaultValue>Nearest</GeneralOptionRound-DefaultValue>
+      <LinkOptionMultiConvertFileName-DefaultValue />
+      <LinkOptionOptimizeSameCode-DefaultValue>False</LinkOptionOptimizeSameCode-DefaultValue>
+      <PostBuildCommands-DefaultValue />
+      <AsmOptionListFile-DefaultValue>False</AsmOptionListFile-DefaultValue>
+      <COptionGoptimize-DefaultValue>False</COptionGoptimize-DefaultValue>
+      <GeneralOptionDenormalize-DefaultValue>Off</GeneralOptionDenormalize-DefaultValue>
+      <LinkOptionSameSize-DefaultValue>1E</LinkOptionSameSize-DefaultValue>
+      <AsmOptionShowConditionals-DefaultValue>False</AsmOptionShowConditionals-DefaultValue>
+      <COptionSpeedAndSize-DefaultValue>Size</COptionSpeedAndSize-DefaultValue>
+      <GeneralOptionDblSize-DefaultValue>SinglePrecision</GeneralOptionDblSize-DefaultValue>
+      <LinkOptionOptimizeShortFormat-DefaultValue>False</LinkOptionOptimizeShortFormat-DefaultValue>
+      <AsmOptionShowDefinitions-DefaultValue>False</AsmOptionShowDefinitions-DefaultValue>
+      <COptionListfile-DefaultValue>False</COptionListfile-DefaultValue>
+      <GeneralOptionIntToShort-DefaultValue>False</GeneralOptionIntToShort-DefaultValue>
+      <LinkOptionOptimizeBranch-DefaultValue>False</LinkOptionOptimizeBranch-DefaultValue>
+      <AsmOptionShowExpansions-DefaultValue>False</AsmOptionShowExpansions-DefaultValue>
+      <COptionShowSource-DefaultValue>False</COptionShowSource-DefaultValue>
+      <GeneralOptionSignedChar-DefaultValue>Unsigned</GeneralOptionSignedChar-DefaultValue>
+      <LinkOptionStart-DefaultValue>B_1,R_1,B_2,R_2,B,R,SU,SI/04,PResetPRG/0FFFF8000,C_1,C_2,C,C$DSEC,C$BSEC,C$INIT,C$VTBL,C$VECT,D_1,D_2,D,P,PIntPRG,W_1,W_2,W,L/0FFFF8100,FIXEDVECT/0FFFFFFD0</LinkOptionStart-DefaultValue>
+      <COptionShowConditionals-DefaultValue>False</COptionShowConditionals-DefaultValue>
+      <GeneralOptionOtherAdditionalOptions-DefaultValue />
+      <GeneralOptionSignedBitfield-DefaultValue>Unsigned</GeneralOptionSignedBitfield-DefaultValue>
+      <COptionShowDefinitions-DefaultValue>False</COptionShowDefinitions-DefaultValue>
+      <GeneralOptionAutoEnum-DefaultValue>False</GeneralOptionAutoEnum-DefaultValue>
+      <COptionShowExpansions-DefaultValue>False</COptionShowExpansions-DefaultValue>
+      <GeneralOptionBitOrder-DefaultValue>Right</GeneralOptionBitOrder-DefaultValue>
+      <GeneralOptionPack-DefaultValue>False</GeneralOptionPack-DefaultValue>
+      <GeneralOptionException-DefaultValue>False</GeneralOptionException-DefaultValue>
+      <GeneralOptionRtti-DefaultValue>False</GeneralOptionRtti-DefaultValue>
+      <GeneralOptionFintRegister-DefaultValue>None</GeneralOptionFintRegister-DefaultValue>
+      <GeneralOptionBranch-DefaultValue>Branch24</GeneralOptionBranch-DefaultValue>
+      <GeneralOptionBaseRomRegister-DefaultValue>None</GeneralOptionBaseRomRegister-DefaultValue>
+      <GeneralOptionBaseRamRegister-DefaultValue>None</GeneralOptionBaseRamRegister-DefaultValue>
+      <GeneralOptionBaseAddressAddress-DefaultValue>00000000</GeneralOptionBaseAddressAddress-DefaultValue>
+      <GeneralOptionBaseAddressRegister-DefaultValue>None</GeneralOptionBaseAddressRegister-DefaultValue>
+      <GeneralOptionPatch-DefaultValue>None</GeneralOptionPatch-DefaultValue>
+      <GeneralOptionSaveAcc-DefaultValue>False</GeneralOptionSaveAcc-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8587688952440286552</TimeTagModified--0>
+      <BuildMode-0>DefaultBuild</BuildMode-0>
+      <Memo-0 />
+      <OutputMessageFormat-0>%TargetFiles%</OutputMessageFormat-0>
+      <FormatBuildOptionList-0>%TargetFiles% : %Program% %Options%</FormatBuildOptionList-0>
+      <PreBuildCommands-0 />
+      <PostBuildCommands-0 />
+      <GeneralOptionIsa-0>None</GeneralOptionIsa-0>
+      <GeneralOptionOutput-0>LoadModuleFile</GeneralOptionOutput-0>
+      <GeneralOptionPic-0>False</GeneralOptionPic-0>
+      <GeneralOptionSimultaneousBuild-0>True</GeneralOptionSimultaneousBuild-0>
+      <CompilerVersion-0>
+
+0</CompilerVersion-0>
+      <DependencyFileExistCheckingType-0>Rebuild</DependencyFileExistCheckingType-0>
+      <GeneralOptionCpu-0>RX600</GeneralOptionCpu-0>
+      <GeneralOptionOutputFolder-0>%BuildModeName%</GeneralOptionOutputFolder-0>
+      <GeneralOptionPid-0>None</GeneralOptionPid-0>
+      <EnsureCompatibilityOfPathAndLinkageOrder-0>False</EnsureCompatibilityOfPathAndLinkageOrder-0>
+      <GeneralOptionFpu-0>Auto</GeneralOptionFpu-0>
+      <GeneralOptionNousePidRegister-0>True</GeneralOptionNousePidRegister-0>
+      <LinkOptionConvertFolder-0>%BuildModeName%</LinkOptionConvertFolder-0>
+      <GeneralOptionEndian-0>Little</GeneralOptionEndian-0>
+      <LinkOptionConvertFileName-0>%ProjectName%.mot</LinkOptionConvertFileName-0>
+      <AsmOptionGoptimize-0>False</AsmOptionGoptimize-0>
+      <GeneralOptionRound-0>Nearest</GeneralOptionRound-0>
+      <LinkOptionMultiConvertFileName-0 />
+      <AsmOptionListFile-0>False</AsmOptionListFile-0>
+      <COptionGoptimize-0>False</COptionGoptimize-0>
+      <GeneralOptionDenormalize-0>Off</GeneralOptionDenormalize-0>
+      <AsmOptionShowConditionals-0>False</AsmOptionShowConditionals-0>
+      <GeneralOptionDblSize-0>SinglePrecision</GeneralOptionDblSize-0>
+      <AsmOptionShowDefinitions-0>False</AsmOptionShowDefinitions-0>
+      <COptionListfile-0>False</COptionListfile-0>
+      <GeneralOptionIntToShort-0>False</GeneralOptionIntToShort-0>
+      <AsmOptionShowExpansions-0>False</AsmOptionShowExpansions-0>
+      <COptionShowSource-0>False</COptionShowSource-0>
+      <GeneralOptionSignedChar-0>Unsigned</GeneralOptionSignedChar-0>
+      <COptionShowConditionals-0>False</COptionShowConditionals-0>
+      <GeneralOptionOtherAdditionalOptions-0 />
+      <GeneralOptionSignedBitfield-0>Unsigned</GeneralOptionSignedBitfield-0>
+      <COptionShowDefinitions-0>False</COptionShowDefinitions-0>
+      <GeneralOptionAutoEnum-0>False</GeneralOptionAutoEnum-0>
+      <COptionShowExpansions-0>False</COptionShowExpansions-0>
+      <GeneralOptionBitOrder-0>Right</GeneralOptionBitOrder-0>
+      <GeneralOptionPack-0>False</GeneralOptionPack-0>
+      <GeneralOptionException-0>False</GeneralOptionException-0>
+      <GeneralOptionRtti-0>False</GeneralOptionRtti-0>
+      <GeneralOptionFintRegister-0>None</GeneralOptionFintRegister-0>
+      <GeneralOptionBranch-0>Branch24</GeneralOptionBranch-0>
+      <GeneralOptionBaseRomRegister-0>None</GeneralOptionBaseRomRegister-0>
+      <GeneralOptionBaseRamRegister-0>None</GeneralOptionBaseRamRegister-0>
+      <GeneralOptionBaseAddressAddress-0>00000000</GeneralOptionBaseAddressAddress-0>
+      <GeneralOptionBaseAddressRegister-0>None</GeneralOptionBaseAddressRegister-0>
+      <GeneralOptionPatch-0>None</GeneralOptionPatch-0>
+      <GeneralOptionSaveAcc-0>False</GeneralOptionSaveAcc-0>
+      <LastCompilerVersion-0>V2.02.00</LastCompilerVersion-0>
+    </Instance>
+    <Instance Guid="95a63257-4aa7-40c0-a74a-7991543b099b">
+      <COptionLangC-DefaultValue>C</COptionLangC-DefaultValue>
+      <COptionListfile-DefaultValue>False</COptionListfile-DefaultValue>
+      <COptionLogo-DefaultValue>False</COptionLogo-DefaultValue>
+      <COptionMisra2004-DefaultValue>None</COptionMisra2004-DefaultValue>
+      <COptionOptimize-DefaultValue>Level2</COptionOptimize-DefaultValue>
+      <COptionOutput-DefaultValue>Object</COptionOutput-DefaultValue>
+      <COptionOutputAssembly-DefaultValue>False</COptionOutputAssembly-DefaultValue>
+      <COptionGoptimize-DefaultValue>False</COptionGoptimize-DefaultValue>
+      <COptionLangCpp-DefaultValue>Cpp</COptionLangCpp-DefaultValue>
+      <COptionMisra2004RuleFile-DefaultValue />
+      <COptionOutputFolder-DefaultValue>%BuildModeName%</COptionOutputFolder-DefaultValue>
+      <COptionOutputPreprocessed-DefaultValue>None</COptionOutputPreprocessed-DefaultValue>
+      <COptionShowSource-DefaultValue>False</COptionShowSource-DefaultValue>
+      <COptionXcref-DefaultValue>False</COptionXcref-DefaultValue>
+      <COptionDebug-DefaultValue>True</COptionDebug-DefaultValue>
+      <COptionInclude-DefaultValue />
+      <COptionMisra2004RuleNumberApply-DefaultValue />
+      <COptionPreCompileCommands-DefaultValue />
+      <COptionShowConditionals-DefaultValue>False</COptionShowConditionals-DefaultValue>
+      <COptionSpeedAndSize-DefaultValue>Size</COptionSpeedAndSize-DefaultValue>
+      <COptionLoop-DefaultValue>Auto</COptionLoop-DefaultValue>
+      <COptionMisra2004RuleNumberIgnore-DefaultValue />
+      <COptionPostCompileCommands-DefaultValue />
+      <COptionSectionP-DefaultValue>P</COptionSectionP-DefaultValue>
+      <COptionShowDefinitions-DefaultValue>False</COptionShowDefinitions-DefaultValue>
+      <COptionSystemInclude-DefaultValue />
+      <COptionLoopValue-DefaultValue>2</COptionLoopValue-DefaultValue>
+      <COptionMisra2004RuleNumberRequiredAdd-DefaultValue />
+      <COptionOtherAdditionalOptions-DefaultValue />
+      <COptionPreinclude-DefaultValue />
+      <COptionSectionC-DefaultValue>C</COptionSectionC-DefaultValue>
+      <COptionShowExpansions-DefaultValue>False</COptionShowExpansions-DefaultValue>
+      <COptionCommandLine-DefaultValue>-cpu=rx600
+-include=.
+-include=..\..\ssp
+-include=..\..\ssp\include
+-include=..\..\ssp\arch
+-include=..\..\ssp\pdic
+-include=..\..\ssp\target\grsakura_ccrx
+-include=..\..\ccrx\sim\rx63n
+-include=..\..\uip\uip
+-include=..\..\uip\task
+-include=..\..\uip\apps\dhcpc
+-include=..\..\uip\apps\webserver
+-include=..\..\uip\target\if_rx62n
+-include=..\..\pfatfs
+-include=..\..\ecnl_ssp
+-include=..\..\src\ukadecot
+-define=__LIT,TARGET_KERNEL_SSP,SUPPORT_UIP,JSONSL_NO_JPR
+-output=obj
+-obj_path=%BuildModeName%
+-debug
+-nologo
+</COptionCommandLine-DefaultValue>
+      <COptionDefine-DefaultValue />
+      <COptionInline-DefaultValue>Auto</COptionInline-DefaultValue>
+      <COptionMisra2004RuleNumberRequiredRemove-DefaultValue />
+      <COptionSectionD-DefaultValue>D</COptionSectionD-DefaultValue>
+      <COptionIgnoreFilesMisra-DefaultValue />
+      <COptionInlineValue-DefaultValue>100</COptionInlineValue-DefaultValue>
+      <COptionSectionB-DefaultValue>B</COptionSectionB-DefaultValue>
+      <COptionUndefine-DefaultValue />
+      <COptionCheckLanguageExtension-DefaultValue>False</COptionCheckLanguageExtension-DefaultValue>
+      <COptionFileInline-DefaultValue />
+      <COptionMessage-DefaultValue>False</COptionMessage-DefaultValue>
+      <COptionSectionL-DefaultValue>L</COptionSectionL-DefaultValue>
+      <COptionCase-DefaultValue>Auto</COptionCase-DefaultValue>
+      <COptionMessage2-DefaultValue>False</COptionMessage2-DefaultValue>
+      <COptionSectionW-DefaultValue>W</COptionSectionW-DefaultValue>
+      <COptionNoMessageErrorNumber-DefaultValue />
+      <COptionNostuffB-DefaultValue>False</COptionNostuffB-DefaultValue>
+      <COptionVolatile-DefaultValue>False</COptionVolatile-DefaultValue>
+      <COptionConstCopy-DefaultValue>Auto</COptionConstCopy-DefaultValue>
+      <COptionNoMessageErrorNumber2-DefaultValue />
+      <COptionNostuffD-DefaultValue>False</COptionNostuffD-DefaultValue>
+      <COptionChangeMessageInformation-DefaultValue>No</COptionChangeMessageInformation-DefaultValue>
+      <COptionConstDiv-DefaultValue>Auto</COptionConstDiv-DefaultValue>
+      <COptionNostuffC-DefaultValue>False</COptionNostuffC-DefaultValue>
+      <COptionChangeMessageInformationNumber-DefaultValue />
+      <COptionLibrary-DefaultValue>Intrinsic</COptionLibrary-DefaultValue>
+      <COptionNostuffW-DefaultValue>False</COptionNostuffW-DefaultValue>
+      <COptionChangeMessageInformationNumber2-DefaultValue />
+      <COptionInstalign-DefaultValue>Noinstalign</COptionInstalign-DefaultValue>
+      <COptionScope-DefaultValue>Auto</COptionScope-DefaultValue>
+      <COptionChangeMessageWarning-DefaultValue>No</COptionChangeMessageWarning-DefaultValue>
+      <COptionNouseDiv-DefaultValue>True</COptionNouseDiv-DefaultValue>
+      <COptionSchedule-DefaultValue>Auto</COptionSchedule-DefaultValue>
+      <COptionChangeMessageWarningNumber-DefaultValue />
+      <COptionMap-DefaultValue>NoMap</COptionMap-DefaultValue>
+      <COptionOutcode-DefaultValue>Sjis</COptionOutcode-DefaultValue>
+      <COptionChangeMessageWarningNumber2-DefaultValue />
+      <COptionIntermodule-DefaultValue>None</COptionIntermodule-DefaultValue>
+      <COptionApproxdiv-DefaultValue>False</COptionApproxdiv-DefaultValue>
+      <COptionChangeMessageError-DefaultValue>No</COptionChangeMessageError-DefaultValue>
+      <COptionChangeMessageErrorNumber-DefaultValue />
+      <COptionEnableRegister-DefaultValue>False</COptionEnableRegister-DefaultValue>
+      <COptionChangeMessageErrorNumber2-DefaultValue />
+      <COptionSimpleFloatConv-DefaultValue>False</COptionSimpleFloatConv-DefaultValue>
+      <COptionFileInlinePath-DefaultValue />
+      <COptionFpu-DefaultValue>Auto</COptionFpu-DefaultValue>
+      <COptionAlias-DefaultValue>False</COptionAlias-DefaultValue>
+      <COptionComment-DefaultValue>False</COptionComment-DefaultValue>
+      <COptionCheck-DefaultValue>No</COptionCheck-DefaultValue>
+      <COptionFloatOrder-DefaultValue>False</COptionFloatOrder-DefaultValue>
+      <COptionIncode-DefaultValue>Sjis</COptionIncode-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8587690414931536593</TimeTagModified--0>
+      <COptionLangC-0>C99</COptionLangC-0>
+      <COptionListfile-0>False</COptionListfile-0>
+      <COptionLogo-0>False</COptionLogo-0>
+      <COptionMisra2004-0>None</COptionMisra2004-0>
+      <COptionOptimize-0>Level2</COptionOptimize-0>
+      <COptionOutput-0>Object</COptionOutput-0>
+      <COptionOutputAssembly-0>False</COptionOutputAssembly-0>
+      <COptionGoptimize-0>False</COptionGoptimize-0>
+      <COptionLangCpp-0>Cpp</COptionLangCpp-0>
+      <COptionMisra2004RuleFile-0 />
+      <COptionOutputFolder-0>%BuildModeName%</COptionOutputFolder-0>
+      <COptionOutputPreprocessed-0>None</COptionOutputPreprocessed-0>
+      <COptionShowSource-0>False</COptionShowSource-0>
+      <COptionXcref-0>False</COptionXcref-0>
+      <COptionDebug-0>True</COptionDebug-0>
+      <COptionInclude-0>.
+..\..\ssp
+..\..\ssp\include
+..\..\ssp\arch
+..\..\ssp\pdic
+..\..\ssp\target\grsakura_ccrx
+..\..\uip\uip
+..\..\uip\task
+..\..\uip\apps\dhcpc
+..\..\uip\apps\webserver
+..\..\uip\target\if_rx62n
+..\..\pfatfs
+..\..\ecnl_ssp
+..\..\kadecot
+..\..\src\ukadecot
+</COptionInclude-0>
+      <COptionMisra2004RuleNumberApply-0 />
+      <COptionPreCompileCommands-0 />
+      <COptionShowConditionals-0>False</COptionShowConditionals-0>
+      <COptionSpeedAndSize-0>Size</COptionSpeedAndSize-0>
+      <COptionLoop-0>Auto</COptionLoop-0>
+      <COptionMisra2004RuleNumberIgnore-0 />
+      <COptionPostCompileCommands-0 />
+      <COptionSectionP-0>P</COptionSectionP-0>
+      <COptionShowDefinitions-0>False</COptionShowDefinitions-0>
+      <COptionSystemInclude-0 />
+      <COptionLoopValue-0>2</COptionLoopValue-0>
+      <COptionMisra2004RuleNumberRequiredAdd-0 />
+      <COptionOtherAdditionalOptions-0 />
+      <COptionPreinclude-0 />
+      <COptionSectionC-0>C</COptionSectionC-0>
+      <COptionShowExpansions-0>False</COptionShowExpansions-0>
+      <COptionCommandLine-0>-cpu=rx600
+-include=.
+-include=..\..\ssp
+-include=..\..\ssp\include
+-include=..\..\ssp\arch
+-include=..\..\ssp\pdic
+-include=..\..\ssp\target\grsakura_ccrx
+-include=..\..\ccrx\sim\rx63n
+-include=..\..\uip\uip
+-include=..\..\uip\task
+-include=..\..\uip\apps\dhcpc
+-include=..\..\uip\apps\webserver
+-include=..\..\uip\target\if_rx62n
+-include=..\..\pfatfs
+-include=..\..\ecnl_ssp
+-include=..\..\src\ukadecot
+-define=__LIT,TARGET_KERNEL_SSP,SUPPORT_UIP,JSONSL_NO_JPR
+-output=obj
+-obj_path=%BuildModeName%
+-debug
+-nologo
+</COptionCommandLine-0>
+      <COptionDefine-0>__LIT
+TARGET_KERNEL_SSP
+SUPPORT_UIP
+JSONSL_NO_JPR
+</COptionDefine-0>
+      <COptionInline-0>Auto</COptionInline-0>
+      <COptionMisra2004RuleNumberRequiredRemove-0 />
+      <COptionSectionD-0>D</COptionSectionD-0>
+      <COptionIgnoreFilesMisra-0 />
+      <COptionInlineValue-0>100</COptionInlineValue-0>
+      <COptionSectionB-0>B</COptionSectionB-0>
+      <COptionUndefine-0 />
+      <COptionCheckLanguageExtension-0>False</COptionCheckLanguageExtension-0>
+      <COptionFileInline-0 />
+      <COptionMessage-0>False</COptionMessage-0>
+      <COptionSectionL-0>L</COptionSectionL-0>
+      <COptionCase-0>Auto</COptionCase-0>
+      <COptionSectionW-0>W</COptionSectionW-0>
+      <COptionNoMessageErrorNumber-0 />
+      <COptionNostuffB-0>False</COptionNostuffB-0>
+      <COptionVolatile-0>False</COptionVolatile-0>
+      <COptionConstCopy-0>Auto</COptionConstCopy-0>
+      <COptionNostuffD-0>False</COptionNostuffD-0>
+      <COptionChangeMessageInformation-0>No</COptionChangeMessageInformation-0>
+      <COptionConstDiv-0>Auto</COptionConstDiv-0>
+      <COptionNostuffC-0>False</COptionNostuffC-0>
+      <COptionChangeMessageInformationNumber-0 />
+      <COptionLibrary-0>Intrinsic</COptionLibrary-0>
+      <COptionNostuffW-0>False</COptionNostuffW-0>
+      <COptionInstalign-0>Noinstalign</COptionInstalign-0>
+      <COptionScope-0>Auto</COptionScope-0>
+      <COptionChangeMessageWarning-0>No</COptionChangeMessageWarning-0>
+      <COptionNouseDiv-0>True</COptionNouseDiv-0>
+      <COptionSchedule-0>Auto</COptionSchedule-0>
+      <COptionChangeMessageWarningNumber-0 />
+      <COptionMap-0>NoMap</COptionMap-0>
+      <COptionOutcode-0>Sjis</COptionOutcode-0>
+      <COptionIntermodule-0>None</COptionIntermodule-0>
+      <COptionApproxdiv-0>False</COptionApproxdiv-0>
+      <COptionChangeMessageError-0>No</COptionChangeMessageError-0>
+      <COptionChangeMessageErrorNumber-0 />
+      <COptionEnableRegister-0>False</COptionEnableRegister-0>
+      <COptionSimpleFloatConv-0>False</COptionSimpleFloatConv-0>
+      <COptionFileInlinePath-0 />
+      <COptionFpu-0>Auto</COptionFpu-0>
+      <COptionAlias-0>False</COptionAlias-0>
+      <COptionComment-0>False</COptionComment-0>
+      <COptionCheck-0>No</COptionCheck-0>
+      <COptionFloatOrder-0>False</COptionFloatOrder-0>
+      <COptionIncode-0>Sjis</COptionIncode-0>
+    </Instance>
+    <Instance Guid="5ad1746c-d03e-4610-a91f-aaa4fb37bc10">
+      <AsmOptionChkpm-DefaultValue>False</AsmOptionChkpm-DefaultValue>
+      <AsmOptionGoptimize-DefaultValue>False</AsmOptionGoptimize-DefaultValue>
+      <AsmOptionInclude-DefaultValue />
+      <AsmOptionListFile-DefaultValue>False</AsmOptionListFile-DefaultValue>
+      <AsmOptionOutput-DefaultValue>%BuildModeName%</AsmOptionOutput-DefaultValue>
+      <AsmOptionChkfpu-DefaultValue>False</AsmOptionChkfpu-DefaultValue>
+      <AsmOptionDebug-DefaultValue>True</AsmOptionDebug-DefaultValue>
+      <AsmOptionShowConditionals-DefaultValue>False</AsmOptionShowConditionals-DefaultValue>
+      <AsmOptionSystemInclude-DefaultValue />
+      <AsmOptionChkdsp-DefaultValue>False</AsmOptionChkdsp-DefaultValue>
+      <AsmOptionDefine-DefaultValue />
+      <AsmOptionShowDefinitions-DefaultValue>False</AsmOptionShowDefinitions-DefaultValue>
+      <AsmOptionInCode-DefaultValue>SJIS</AsmOptionInCode-DefaultValue>
+      <AsmOptionLogo-DefaultValue>False</AsmOptionLogo-DefaultValue>
+      <AsmOptionShowExpansions-DefaultValue>False</AsmOptionShowExpansions-DefaultValue>
+      <AsmOptionPreAssembleCommands-DefaultValue />
+      <AsmOptionPostAssembleCommands-DefaultValue />
+      <AsmOptionOtherAdditionalOptions-DefaultValue />
+      <AsmOptionCommandLine-DefaultValue>-cpu=rx600
+-include=../../ssp/target/grsakura_ccrx
+-include=.
+-output=obj
+-obj_path=%BuildModeName%
+-debug
+-nologo
+</AsmOptionCommandLine-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8587805584856593767</TimeTagModified--0>
+      <AsmOptionChkpm-0>False</AsmOptionChkpm-0>
+      <AsmOptionGoptimize-0>False</AsmOptionGoptimize-0>
+      <AsmOptionInclude-0>../../ssp/target/grsakura_ccrx
+.
+</AsmOptionInclude-0>
+      <AsmOptionListFile-0>False</AsmOptionListFile-0>
+      <AsmOptionOutput-0>%BuildModeName%</AsmOptionOutput-0>
+      <AsmOptionChkfpu-0>False</AsmOptionChkfpu-0>
+      <AsmOptionDebug-0>True</AsmOptionDebug-0>
+      <AsmOptionShowConditionals-0>False</AsmOptionShowConditionals-0>
+      <AsmOptionSystemInclude-0 />
+      <AsmOptionChkdsp-0>False</AsmOptionChkdsp-0>
+      <AsmOptionDefine-0 />
+      <AsmOptionShowDefinitions-0>False</AsmOptionShowDefinitions-0>
+      <AsmOptionInCode-0>SJIS</AsmOptionInCode-0>
+      <AsmOptionLogo-0>False</AsmOptionLogo-0>
+      <AsmOptionShowExpansions-0>False</AsmOptionShowExpansions-0>
+      <AsmOptionPreAssembleCommands-0 />
+      <AsmOptionPostAssembleCommands-0 />
+      <AsmOptionOtherAdditionalOptions-0 />
+      <AsmOptionCommandLine-0>-cpu=rx600
+-include=../../ssp/target/grsakura_ccrx
+-include=.
+-output=obj
+-obj_path=%BuildModeName%
+-debug
+-nologo
+</AsmOptionCommandLine-0>
+    </Instance>
+    <Instance Guid="dbb16727-3e81-4169-956a-790355cab4a1">
+      <LinkOptionCpu-DefaultValue>False</LinkOptionCpu-DefaultValue>
+      <LinkOptionForm-DefaultValue>Absolute</LinkOptionForm-DefaultValue>
+      <LinkOptionFormConvert-DefaultValue>Stype</LinkOptionFormConvert-DefaultValue>
+      <LinkOptionInput-DefaultValue />
+      <LinkOptionListShow-DefaultValue>List</LinkOptionListShow-DefaultValue>
+      <LinkOptionOptimize-DefaultValue>None</LinkOptionOptimize-DefaultValue>
+      <LinkOptionStack-DefaultValue>False</LinkOptionStack-DefaultValue>
+      <LinkOptionStart-DefaultValue>B_1,R_1,B_2,R_2,B,R,SU,SI/04,PResetPRG/0FFFF8000,C_1,C_2,C,C$DSEC,C$BSEC,C$INIT,C$VTBL,C$VECT,D_1,D_2,D,P,PIntPRG,W_1,W_2,W,L/0FFFF8100,FIXEDVECT/0FFFFFFD0</LinkOptionStart-DefaultValue>
+      <LinkOptionCompress-DefaultValue>False</LinkOptionCompress-DefaultValue>
+      <LinkOptionCpuInformation-DefaultValue />
+      <LinkOptionDebug-DefaultValue>Debug</LinkOptionDebug-DefaultValue>
+      <LinkOptionFSymbol-DefaultValue />
+      <LinkOptionLibrary-DefaultValue />
+      <LinkOptionOptimizeSymbolDelete-DefaultValue>False</LinkOptionOptimizeSymbolDelete-DefaultValue>
+      <LinkOptionRecordH-DefaultValue>None</LinkOptionRecordH-DefaultValue>
+      <LinkOptionShowSymbol-DefaultValue>False</LinkOptionShowSymbol-DefaultValue>
+      <LinkOptionAlignedSection-DefaultValue />
+      <LinkOptionCpuStride-DefaultValue>False</LinkOptionCpuStride-DefaultValue>
+      <LinkOptionMemory-DefaultValue>False</LinkOptionMemory-DefaultValue>
+      <LinkOptionOptimizeSameCode-DefaultValue>False</LinkOptionOptimizeSameCode-DefaultValue>
+      <LinkOptionOutputFolder-DefaultValue>%BuildModeName%</LinkOptionOutputFolder-DefaultValue>
+      <LinkOptionRecordS-DefaultValue>None</LinkOptionRecordS-DefaultValue>
+      <LinkOptionShowReference-DefaultValue>False</LinkOptionShowReference-DefaultValue>
+      <LinkOptionSystemLibrary-DefaultValue />
+      <LinkOptionBinary-DefaultValue />
+      <LinkOptionChangeMessageInformation-DefaultValue>None</LinkOptionChangeMessageInformation-DefaultValue>
+      <LinkOptionContiguousSection-DefaultValue />
+      <LinkOptionDividedConvertFile-DefaultValue>False</LinkOptionDividedConvertFile-DefaultValue>
+      <LinkOptionOutputFileName-DefaultValue>%ProjectName%.abs</LinkOptionOutputFileName-DefaultValue>
+      <LinkOptionRom-DefaultValue />
+      <LinkOptionSameSize-DefaultValue>1E</LinkOptionSameSize-DefaultValue>
+      <LinkOptionShowXreference-DefaultValue>False</LinkOptionShowXreference-DefaultValue>
+      <LinkOptionChangeMessageInformationNumber-DefaultValue />
+      <LinkOptionConvertFolder-DefaultValue>%BuildModeName%</LinkOptionConvertFolder-DefaultValue>
+      <LinkOptionDefine-DefaultValue />
+      <LinkOptionMap-DefaultValue>False</LinkOptionMap-DefaultValue>
+      <LinkOptionOptimizeShortFormat-DefaultValue>False</LinkOptionOptimizeShortFormat-DefaultValue>
+      <LinkOptionShowTotalSize-DefaultValue>False</LinkOptionShowTotalSize-DefaultValue>
+      <LinkOptionChangeMessageWarning-DefaultValue>None</LinkOptionChangeMessageWarning-DefaultValue>
+      <LinkOptionConvertFileName-DefaultValue>%ProjectName%.mot</LinkOptionConvertFileName-DefaultValue>
+      <LinkOptionEntry-DefaultValue>False</LinkOptionEntry-DefaultValue>
+      <LinkOptionMessage-DefaultValue>NoMessage</LinkOptionMessage-DefaultValue>
+      <LinkOptionOptimizeBranch-DefaultValue>False</LinkOptionOptimizeBranch-DefaultValue>
+      <LinkOptionShowVector-DefaultValue>False</LinkOptionShowVector-DefaultValue>
+      <LinkOptionChangeMessageWarningNumber-DefaultValue />
+      <LinkOptionEntryPoint-DefaultValue />
+      <LinkOptionMultiConvertFileName-DefaultValue />
+      <LinkOptionNoMessageErrorNumber-DefaultValue />
+      <LinkOptionSymbolForbid-DefaultValue />
+      <LinkOptionChangeMessageError-DefaultValue>None</LinkOptionChangeMessageError-DefaultValue>
+      <LinkOptionNoPrelink-DefaultValue>Auto</LinkOptionNoPrelink-DefaultValue>
+      <LinkOptionPadding-DefaultValue>False</LinkOptionPadding-DefaultValue>
+      <LinkOptionSameCodeForbid-DefaultValue />
+      <LinkOptionSpace-DefaultValue>None</LinkOptionSpace-DefaultValue>
+      <LinkOptionChangeMessageErrorNumber-DefaultValue />
+      <LinkOptionSectionForbid-DefaultValue />
+      <LinkOptionSpaceValue-DefaultValue>FF</LinkOptionSpaceValue-DefaultValue>
+      <LinkOptionVectN-DefaultValue />
+      <LinkOptionAbsoluteForbid-DefaultValue />
+      <LinkOptionByteCount-DefaultValue>False</LinkOptionByteCount-DefaultValue>
+      <LinkOptionHide-DefaultValue>False</LinkOptionHide-DefaultValue>
+      <LinkOptionVect-DefaultValue />
+      <LinkOptionByteCountValue-DefaultValue>FF</LinkOptionByteCountValue-DefaultValue>
+      <LinkOptionJumpEntriesForPic-DefaultValue>False</LinkOptionJumpEntriesForPic-DefaultValue>
+      <LinkOptionTotalSize-DefaultValue>False</LinkOptionTotalSize-DefaultValue>
+      <LinkOptionCrc-DefaultValue>None</LinkOptionCrc-DefaultValue>
+      <LinkOptionJumpEntriesForPicSectionName-DefaultValue />
+      <LinkOptionLogo-DefaultValue>False</LinkOptionLogo-DefaultValue>
+      <LinkOptionCrcOutputAddress-DefaultValue>0</LinkOptionCrcOutputAddress-DefaultValue>
+      <LinkOptionPreLinkCommands-DefaultValue />
+      <LinkOptionCrcCalculationRange-DefaultValue />
+      <LinkOptionPostLinkCommands-DefaultValue />
+      <LinkOptionOtherAdditionalOptionsForLoadModule-DefaultValue />
+      <LinkOptionS9-DefaultValue>False</LinkOptionS9-DefaultValue>
+      <LinkOptionOtherAdditionalOptionsForConvertFile-DefaultValue />
+      <LinkOptionCommandLine-DefaultValue>-library=..\libssp\%BuildModeName%\libssp
+-noprelink
+-output=%BuildModeName%\%ProjectName%.abs
+-list=%BuildModeName%\%ProjectName%.map
+-show=symbol,total_size
+-nooptimize
+-start=SI,SU/00000000,R,R_2,R_1,B,B_2,B_1/00000800,BETH_MEMORY/0001C000,C$VECT,P,D,D_2,D_1,W,W_2,W_1,C,C_2,C_1,L/0FFFC0000,FVECT/0FFFFFF80
+-rom=D=R,D_2=R_2,D_1=R_1
+-nologo
+-exit
+</LinkOptionCommandLine-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8587688264305376439</TimeTagModified--0>
+      <LinkOptionCpu-0>False</LinkOptionCpu-0>
+      <LinkOptionForm-0>Absolute</LinkOptionForm-0>
+      <LinkOptionFormConvert-0>Stype</LinkOptionFormConvert-0>
+      <LinkOptionInput-0 />
+      <LinkOptionListShow-0>List</LinkOptionListShow-0>
+      <LinkOptionOptimize-0>None</LinkOptionOptimize-0>
+      <LinkOptionStack-0>False</LinkOptionStack-0>
+      <LinkOptionStart-0>SI,SU/00000000,R,R_2,R_1,B,B_2,B_1/00000800,BETH_MEMORY/00019F00,C$VECT,P,D,D_2,D_1,W,W_2,W_1,C,C_2,C_1,L/0FFFC0000,FVECT/0FFFFFF80</LinkOptionStart-0>
+      <LinkOptionCompress-0>False</LinkOptionCompress-0>
+      <LinkOptionCpuInformation-0 />
+      <LinkOptionDebug-0>Debug</LinkOptionDebug-0>
+      <LinkOptionFSymbol-0 />
+      <LinkOptionLibrary-0>..\libssp\%BuildModeName%\libssp
+</LinkOptionLibrary-0>
+      <LinkOptionOptimizeSymbolDelete-0>False</LinkOptionOptimizeSymbolDelete-0>
+      <LinkOptionRecordH-0>None</LinkOptionRecordH-0>
+      <LinkOptionShowSymbol-0>True</LinkOptionShowSymbol-0>
+      <LinkOptionAlignedSection-0 />
+      <LinkOptionCpuStride-0>False</LinkOptionCpuStride-0>
+      <LinkOptionMemory-0>False</LinkOptionMemory-0>
+      <LinkOptionOptimizeSameCode-0>False</LinkOptionOptimizeSameCode-0>
+      <LinkOptionOutputFolder-0>%BuildModeName%</LinkOptionOutputFolder-0>
+      <LinkOptionRecordS-0>None</LinkOptionRecordS-0>
+      <LinkOptionShowReference-0>False</LinkOptionShowReference-0>
+      <LinkOptionSystemLibrary-0 />
+      <LinkOptionBinary-0 />
+      <LinkOptionChangeMessageInformation-0>None</LinkOptionChangeMessageInformation-0>
+      <LinkOptionContiguousSection-0 />
+      <LinkOptionDividedConvertFile-0>False</LinkOptionDividedConvertFile-0>
+      <LinkOptionOutputFileName-0>%ProjectName%.abs</LinkOptionOutputFileName-0>
+      <LinkOptionRom-0>D=R
+D_2=R_2
+D_1=R_1
+</LinkOptionRom-0>
+      <LinkOptionSameSize-0>1E</LinkOptionSameSize-0>
+      <LinkOptionShowXreference-0>False</LinkOptionShowXreference-0>
+      <LinkOptionChangeMessageInformationNumber-0 />
+      <LinkOptionConvertFolder-0>%BuildModeName%</LinkOptionConvertFolder-0>
+      <LinkOptionDefine-0 />
+      <LinkOptionMap-0>False</LinkOptionMap-0>
+      <LinkOptionOptimizeShortFormat-0>False</LinkOptionOptimizeShortFormat-0>
+      <LinkOptionShowTotalSize-0>True</LinkOptionShowTotalSize-0>
+      <LinkOptionChangeMessageWarning-0>None</LinkOptionChangeMessageWarning-0>
+      <LinkOptionConvertFileName-0>%ProjectName%.mot</LinkOptionConvertFileName-0>
+      <LinkOptionEntry-0>False</LinkOptionEntry-0>
+      <LinkOptionMessage-0>NoMessage</LinkOptionMessage-0>
+      <LinkOptionOptimizeBranch-0>False</LinkOptionOptimizeBranch-0>
+      <LinkOptionShowVector-0>False</LinkOptionShowVector-0>
+      <LinkOptionChangeMessageWarningNumber-0 />
+      <LinkOptionEntryPoint-0 />
+      <LinkOptionMultiConvertFileName-0 />
+      <LinkOptionNoMessageErrorNumber-0 />
+      <LinkOptionSymbolForbid-0 />
+      <LinkOptionChangeMessageError-0>None</LinkOptionChangeMessageError-0>
+      <LinkOptionNoPrelink-0>Auto</LinkOptionNoPrelink-0>
+      <LinkOptionPadding-0>False</LinkOptionPadding-0>
+      <LinkOptionSameCodeForbid-0 />
+      <LinkOptionSpace-0>None</LinkOptionSpace-0>
+      <LinkOptionChangeMessageErrorNumber-0 />
+      <LinkOptionSectionForbid-0 />
+      <LinkOptionSpaceValue-0>FF</LinkOptionSpaceValue-0>
+      <LinkOptionVectN-0 />
+      <LinkOptionAbsoluteForbid-0 />
+      <LinkOptionByteCount-0>False</LinkOptionByteCount-0>
+      <LinkOptionHide-0>False</LinkOptionHide-0>
+      <LinkOptionVect-0 />
+      <LinkOptionByteCountValue-0>FF</LinkOptionByteCountValue-0>
+      <LinkOptionJumpEntriesForPic-0>False</LinkOptionJumpEntriesForPic-0>
+      <LinkOptionTotalSize-0>False</LinkOptionTotalSize-0>
+      <LinkOptionCrc-0>None</LinkOptionCrc-0>
+      <LinkOptionJumpEntriesForPicSectionName-0 />
+      <LinkOptionLogo-0>False</LinkOptionLogo-0>
+      <LinkOptionCrcOutputAddress-0>0</LinkOptionCrcOutputAddress-0>
+      <LinkOptionPreLinkCommands-0 />
+      <LinkOptionCrcCalculationRange-0 />
+      <LinkOptionPostLinkCommands-0 />
+      <LinkOptionOtherAdditionalOptionsForLoadModule-0 />
+      <LinkOptionS9-0>False</LinkOptionS9-0>
+      <LinkOptionOtherAdditionalOptionsForConvertFile-0 />
+      <LinkOptionCommandLine-0>-library=..\libssp\%BuildModeName%\libssp
+-noprelink
+-output=%BuildModeName%\%ProjectName%.abs
+-list=%BuildModeName%\%ProjectName%.map
+-show=symbol,total_size
+-nooptimize
+-start=SI,SU/00000000,R,R_2,R_1,B,B_2,B_1/00000800,BETH_MEMORY/0001C000,C$VECT,P,D,D_2,D_1,W,W_2,W_1,C,C_2,C_1,L/0FFFC0000,FVECT/0FFFFFF80
+-rom=D=R,D_2=R_2,D_1=R_1
+-nologo
+-exit
+</LinkOptionCommandLine-0>
+    </Instance>
+    <Instance Guid="df74c69e-635e-42d9-845e-14128ba4d48a">
+      <HexOptionForm-DefaultValue>Stype</HexOptionForm-DefaultValue>
+      <HexOptionOutput-DefaultValue>True</HexOptionOutput-DefaultValue>
+      <LinkOptionOtherAdditionalOptionsForConvertFile-DefaultValue />
+      <HexOptionCommandLine-DefaultValue />
+      <LinkOptionConvertFolder-DefaultValue>%BuildModeName%</LinkOptionConvertFolder-DefaultValue>
+      <LinkOptionRecordH-DefaultValue>None</LinkOptionRecordH-DefaultValue>
+      <LinkOptionConvertFileName-DefaultValue>%ProjectName%.mot</LinkOptionConvertFileName-DefaultValue>
+      <LinkOptionRecordS-DefaultValue>None</LinkOptionRecordS-DefaultValue>
+      <LinkOptionMultiConvertFileName-DefaultValue />
+      <LinkOptionSpace-DefaultValue>None</LinkOptionSpace-DefaultValue>
+      <LinkOptionSpaceValue-DefaultValue>FF</LinkOptionSpaceValue-DefaultValue>
+      <LinkOptionByteCount-DefaultValue>False</LinkOptionByteCount-DefaultValue>
+      <LinkOptionByteCountValue-DefaultValue>FF</LinkOptionByteCountValue-DefaultValue>
+      <LinkOptionCrc-DefaultValue>None</LinkOptionCrc-DefaultValue>
+      <LinkOptionCrcOutputAddress-DefaultValue>0</LinkOptionCrcOutputAddress-DefaultValue>
+      <LinkOptionCrcCalculationRange-DefaultValue />
+      <LinkOptionS9-DefaultValue>False</LinkOptionS9-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8587805611768335560</TimeTagModified--0>
+      <HexOptionForm-0>Stype</HexOptionForm-0>
+      <HexOptionOutput-0>True</HexOptionOutput-0>
+      <LinkOptionOtherAdditionalOptionsForConvertFile-0 />
+      <HexOptionCommandLine-0 />
+      <LinkOptionConvertFolder-0>%BuildModeName%</LinkOptionConvertFolder-0>
+      <LinkOptionRecordH-0>None</LinkOptionRecordH-0>
+      <LinkOptionConvertFileName-0>%ProjectName%.mot</LinkOptionConvertFileName-0>
+      <LinkOptionRecordS-0>None</LinkOptionRecordS-0>
+      <LinkOptionMultiConvertFileName-0 />
+      <LinkOptionSpace-0>None</LinkOptionSpace-0>
+      <LinkOptionSpaceValue-0>FF</LinkOptionSpaceValue-0>
+      <LinkOptionByteCount-0>False</LinkOptionByteCount-0>
+      <LinkOptionByteCountValue-0>FF</LinkOptionByteCountValue-0>
+      <LinkOptionCrc-0>None</LinkOptionCrc-0>
+      <LinkOptionCrcOutputAddress-0>0</LinkOptionCrcOutputAddress-0>
+      <LinkOptionCrcCalculationRange-0 />
+      <LinkOptionS9-0>False</LinkOptionS9-0>
+    </Instance>
+    <Instance Guid="fff50d2e-74da-44ea-90a8-c47756029e83">
+      <LibOptionForm-DefaultValue>LibraryU</LibOptionForm-DefaultValue>
+      <LibOptionInput-DefaultValue />
+      <LibOptionListShow-DefaultValue>None</LibOptionListShow-DefaultValue>
+      <LibOptionMemory-DefaultValue>False</LibOptionMemory-DefaultValue>
+      <LibOptionChangeMessageInformation-DefaultValue>None</LibOptionChangeMessageInformation-DefaultValue>
+      <LibOptionDebug-DefaultValue>Debug</LibOptionDebug-DefaultValue>
+      <LibOptionLibrary-DefaultValue />
+      <LibOptionShowSymbol-DefaultValue>False</LibOptionShowSymbol-DefaultValue>
+      <LibOptionChangeMessageInformationNumber-DefaultValue />
+      <LibOptionOutputFolder-DefaultValue>%BuildModeName%</LibOptionOutputFolder-DefaultValue>
+      <LibOptionShowSection-DefaultValue>False</LibOptionShowSection-DefaultValue>
+      <LibOptionSystemLibrary-DefaultValue />
+      <LibOptionBinary-DefaultValue />
+      <LibOptionChangeMessageWarning-DefaultValue>None</LibOptionChangeMessageWarning-DefaultValue>
+      <LibOptionOutputFileName-DefaultValue>%ProjectName%.lib</LibOptionOutputFileName-DefaultValue>
+      <LibOptionShowXreference-DefaultValue>False</LibOptionShowXreference-DefaultValue>
+      <LibOptionChangeMessageWarningNumber-DefaultValue />
+      <LibOptionMessage-DefaultValue>NoMessage</LibOptionMessage-DefaultValue>
+      <LibOptionNoPrelink-DefaultValue>Auto</LibOptionNoPrelink-DefaultValue>
+      <LibOptionShowTotalSize-DefaultValue>False</LibOptionShowTotalSize-DefaultValue>
+      <LibOptionChangeMessageError-DefaultValue>None</LibOptionChangeMessageError-DefaultValue>
+      <LibOptionNoMessageErrorNumber-DefaultValue />
+      <LibOptionShowVector-DefaultValue>False</LibOptionShowVector-DefaultValue>
+      <LibOptionChangeMessageErrorNumber-DefaultValue />
+      <LibOptionHide-DefaultValue>False</LibOptionHide-DefaultValue>
+      <LibOptionTotalSize-DefaultValue>False</LibOptionTotalSize-DefaultValue>
+      <LibOptionLogo-DefaultValue>False</LibOptionLogo-DefaultValue>
+      <LibOptionPreLibrarianCommands-DefaultValue />
+      <LibOptionPostLibrarianCommands-DefaultValue />
+      <LibOptionOtherAdditionalOptions-DefaultValue />
+      <LibOptionCommandLine-DefaultValue />
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8587805611768335560</TimeTagModified--0>
+      <LibOptionForm-0>LibraryU</LibOptionForm-0>
+      <LibOptionInput-0 />
+      <LibOptionListShow-0>None</LibOptionListShow-0>
+      <LibOptionMemory-0>False</LibOptionMemory-0>
+      <LibOptionChangeMessageInformation-0>None</LibOptionChangeMessageInformation-0>
+      <LibOptionDebug-0>Debug</LibOptionDebug-0>
+      <LibOptionLibrary-0 />
+      <LibOptionShowSymbol-0>False</LibOptionShowSymbol-0>
+      <LibOptionChangeMessageInformationNumber-0 />
+      <LibOptionOutputFolder-0>%BuildModeName%</LibOptionOutputFolder-0>
+      <LibOptionShowSection-0>False</LibOptionShowSection-0>
+      <LibOptionSystemLibrary-0 />
+      <LibOptionBinary-0 />
+      <LibOptionChangeMessageWarning-0>None</LibOptionChangeMessageWarning-0>
+      <LibOptionOutputFileName-0>%ProjectName%.lib</LibOptionOutputFileName-0>
+      <LibOptionShowXreference-0>False</LibOptionShowXreference-0>
+      <LibOptionChangeMessageWarningNumber-0 />
+      <LibOptionMessage-0>NoMessage</LibOptionMessage-0>
+      <LibOptionNoPrelink-0>Auto</LibOptionNoPrelink-0>
+      <LibOptionShowTotalSize-0>False</LibOptionShowTotalSize-0>
+      <LibOptionChangeMessageError-0>None</LibOptionChangeMessageError-0>
+      <LibOptionNoMessageErrorNumber-0 />
+      <LibOptionShowVector-0>False</LibOptionShowVector-0>
+      <LibOptionChangeMessageErrorNumber-0 />
+      <LibOptionHide-0>False</LibOptionHide-0>
+      <LibOptionTotalSize-0>False</LibOptionTotalSize-0>
+      <LibOptionLogo-0>False</LibOptionLogo-0>
+      <LibOptionPreLibrarianCommands-0 />
+      <LibOptionPostLibrarianCommands-0 />
+      <LibOptionOtherAdditionalOptions-0 />
+      <LibOptionCommandLine-0 />
+    </Instance>
+    <Instance Guid="9cb0ade0-b3cb-4e21-823c-290b5fdb5f1e">
+      <LbgOptionLanguage-DefaultValue>C</LbgOptionLanguage-DefaultValue>
+      <LbgOptionLibraryMode-DefaultValue>MakeOptionChanged</LbgOptionLibraryMode-DefaultValue>
+      <LbgOptionLogo-DefaultValue>False</LbgOptionLogo-DefaultValue>
+      <LbgOptionOptimize-DefaultValue>Level2</LbgOptionOptimize-DefaultValue>
+      <LbgOptionOutputFolder-DefaultValue>%BuildModeName%</LbgOptionOutputFolder-DefaultValue>
+      <LbgOptionGoptimize-DefaultValue>False</LbgOptionGoptimize-DefaultValue>
+      <LbgOptionHead-DefaultValue>Custom</LbgOptionHead-DefaultValue>
+      <LbgOptionOutputFileName-DefaultValue>%ProjectName%.lib</LbgOptionOutputFileName-DefaultValue>
+      <LbgOptionPreLibraryGenerateCommands-DefaultValue />
+      <LbgOptionFunctionalCutdown-DefaultValue>None</LbgOptionFunctionalCutdown-DefaultValue>
+      <LbgOptionHeadRuntime-DefaultValue>True</LbgOptionHeadRuntime-DefaultValue>
+      <LbgOptionPostLibraryGenerateCommands-DefaultValue />
+      <LbgOptionSpeedAndSize-DefaultValue>Size</LbgOptionSpeedAndSize-DefaultValue>
+      <LbgOptionHeadCtypeH-DefaultValue>False</LbgOptionHeadCtypeH-DefaultValue>
+      <LbgOptionLoop-DefaultValue>Auto</LbgOptionLoop-DefaultValue>
+      <LbgOptionOtherAdditionalOptions-DefaultValue />
+      <LbgOptionReent-DefaultValue>False</LbgOptionReent-DefaultValue>
+      <LbgOptionCommandLine-DefaultValue />
+      <LbgOptionHeadMathH-DefaultValue>False</LbgOptionHeadMathH-DefaultValue>
+      <LbgOptionLoopValue-DefaultValue>2</LbgOptionLoopValue-DefaultValue>
+      <LbgOptionSectionP-DefaultValue>P</LbgOptionSectionP-DefaultValue>
+      <LbgOptionHeadMathfH-DefaultValue>False</LbgOptionHeadMathfH-DefaultValue>
+      <LbgOptionInline-DefaultValue>Auto</LbgOptionInline-DefaultValue>
+      <LbgOptionSectionC-DefaultValue>C</LbgOptionSectionC-DefaultValue>
+      <LbgOptionHeadStdargH-DefaultValue>False</LbgOptionHeadStdargH-DefaultValue>
+      <LbgOptionInlineValue-DefaultValue>100</LbgOptionInlineValue-DefaultValue>
+      <LbgOptionSectionD-DefaultValue>D</LbgOptionSectionD-DefaultValue>
+      <LbgOptionFileInline-DefaultValue />
+      <LbgOptionHeadStdioH-DefaultValue>True</LbgOptionHeadStdioH-DefaultValue>
+      <LbgOptionSectionB-DefaultValue>B</LbgOptionSectionB-DefaultValue>
+      <LbgOptionCase-DefaultValue>Auto</LbgOptionCase-DefaultValue>
+      <LbgOptionHeadStdlibH-DefaultValue>True</LbgOptionHeadStdlibH-DefaultValue>
+      <LbgOptionSectionL-DefaultValue>L</LbgOptionSectionL-DefaultValue>
+      <LbgOptionHeadStringH-DefaultValue>True</LbgOptionHeadStringH-DefaultValue>
+      <LbgOptionSectionW-DefaultValue>W</LbgOptionSectionW-DefaultValue>
+      <LbgOptionVolatile-DefaultValue>False</LbgOptionVolatile-DefaultValue>
+      <LbgOptionConstCopy-DefaultValue>Auto</LbgOptionConstCopy-DefaultValue>
+      <LbgOptionHeadIos-DefaultValue>False</LbgOptionHeadIos-DefaultValue>
+      <LbgOptionNostuffB-DefaultValue>False</LbgOptionNostuffB-DefaultValue>
+      <LbgOptionConstDiv-DefaultValue>Auto</LbgOptionConstDiv-DefaultValue>
+      <LbgOptionHeadNew-DefaultValue>True</LbgOptionHeadNew-DefaultValue>
+      <LbgOptionNostuffD-DefaultValue>False</LbgOptionNostuffD-DefaultValue>
+      <LbgOptionHeadComplex-DefaultValue>False</LbgOptionHeadComplex-DefaultValue>
+      <LbgOptionLibrary-DefaultValue>Intrinsic</LbgOptionLibrary-DefaultValue>
+      <LbgOptionNostuffC-DefaultValue>False</LbgOptionNostuffC-DefaultValue>
+      <LbgOptionHeadString-DefaultValue>False</LbgOptionHeadString-DefaultValue>
+      <LbgOptionNostuffW-DefaultValue>False</LbgOptionNostuffW-DefaultValue>
+      <LbgOptionScope-DefaultValue>Auto</LbgOptionScope-DefaultValue>
+      <LbgOptionHeadComplexH-DefaultValue>False</LbgOptionHeadComplexH-DefaultValue>
+      <LbgOptionInstalign-DefaultValue>Noinstalign</LbgOptionInstalign-DefaultValue>
+      <LbgOptionSchedule-DefaultValue>Auto</LbgOptionSchedule-DefaultValue>
+      <LbgOptionApproxdiv-DefaultValue>False</LbgOptionApproxdiv-DefaultValue>
+      <LbgOptionHeadFenvH-DefaultValue>False</LbgOptionHeadFenvH-DefaultValue>
+      <LbgOptionNouseDiv-DefaultValue>True</LbgOptionNouseDiv-DefaultValue>
+      <LbgOptionEnableRegister-DefaultValue>False</LbgOptionEnableRegister-DefaultValue>
+      <LbgOptionHeadInttypesH-DefaultValue>False</LbgOptionHeadInttypesH-DefaultValue>
+      <LbgOptionHeadWcharH-DefaultValue>False</LbgOptionHeadWcharH-DefaultValue>
+      <LbgOptionSimpleFloatConv-DefaultValue>False</LbgOptionSimpleFloatConv-DefaultValue>
+      <LbgOptionFpu-DefaultValue>Auto</LbgOptionFpu-DefaultValue>
+      <LbgOptionHeadWctypeH-DefaultValue>False</LbgOptionHeadWctypeH-DefaultValue>
+      <LbgOptionFloatOrder-DefaultValue>False</LbgOptionFloatOrder-DefaultValue>
+      <IsLockedByUser>False</IsLockedByUser>
+      <TimeTagModified--0>-8587793205330916052</TimeTagModified--0>
+      <LbgOptionLanguage-0>C</LbgOptionLanguage-0>
+      <LbgOptionLibraryMode-0>MakeOptionChanged</LbgOptionLibraryMode-0>
+      <LbgOptionLogo-0>False</LbgOptionLogo-0>
+      <LbgOptionOptimize-0>Level2</LbgOptionOptimize-0>
+      <LbgOptionOutputFolder-0>%BuildModeName%</LbgOptionOutputFolder-0>
+      <LbgOptionGoptimize-0>False</LbgOptionGoptimize-0>
+      <LbgOptionHead-0>Custom</LbgOptionHead-0>
+      <LbgOptionOutputFileName-0>%ProjectName%.lib</LbgOptionOutputFileName-0>
+      <LbgOptionPreLibraryGenerateCommands-0 />
+      <LbgOptionFunctionalCutdown-0>None</LbgOptionFunctionalCutdown-0>
+      <LbgOptionPostLibraryGenerateCommands-0 />
+      <LbgOptionSpeedAndSize-0>Size</LbgOptionSpeedAndSize-0>
+      <LbgOptionHeadCtypeH-0>False</LbgOptionHeadCtypeH-0>
+      <LbgOptionLoop-0>Auto</LbgOptionLoop-0>
+      <LbgOptionOtherAdditionalOptions-0 />
+      <LbgOptionReent-0>False</LbgOptionReent-0>
+      <LbgOptionCommandLine-0 />
+      <LbgOptionHeadMathH-0>False</LbgOptionHeadMathH-0>
+      <LbgOptionLoopValue-0>2</LbgOptionLoopValue-0>
+      <LbgOptionSectionP-0>P</LbgOptionSectionP-0>
+      <LbgOptionHeadMathfH-0>False</LbgOptionHeadMathfH-0>
+      <LbgOptionInline-0>Auto</LbgOptionInline-0>
+      <LbgOptionSectionC-0>C</LbgOptionSectionC-0>
+      <LbgOptionHeadStdargH-0>False</LbgOptionHeadStdargH-0>
+      <LbgOptionInlineValue-0>100</LbgOptionInlineValue-0>
+      <LbgOptionSectionD-0>D</LbgOptionSectionD-0>
+      <LbgOptionFileInline-0 />
+      <LbgOptionHeadStdioH-0>True</LbgOptionHeadStdioH-0>
+      <LbgOptionSectionB-0>B</LbgOptionSectionB-0>
+      <LbgOptionCase-0>Auto</LbgOptionCase-0>
+      <LbgOptionHeadStdlibH-0>True</LbgOptionHeadStdlibH-0>
+      <LbgOptionSectionL-0>L</LbgOptionSectionL-0>
+      <LbgOptionHeadStringH-0>True</LbgOptionHeadStringH-0>
+      <LbgOptionSectionW-0>W</LbgOptionSectionW-0>
+      <LbgOptionVolatile-0>False</LbgOptionVolatile-0>
+      <LbgOptionConstCopy-0>Auto</LbgOptionConstCopy-0>
+      <LbgOptionHeadIos-0>False</LbgOptionHeadIos-0>
+      <LbgOptionNostuffB-0>False</LbgOptionNostuffB-0>
+      <LbgOptionConstDiv-0>Auto</LbgOptionConstDiv-0>
+      <LbgOptionHeadNew-0>True</LbgOptionHeadNew-0>
+      <LbgOptionNostuffD-0>False</LbgOptionNostuffD-0>
+      <LbgOptionHeadComplex-0>False</LbgOptionHeadComplex-0>
+      <LbgOptionLibrary-0>Intrinsic</LbgOptionLibrary-0>
+      <LbgOptionNostuffC-0>False</LbgOptionNostuffC-0>
+      <LbgOptionHeadString-0>False</LbgOptionHeadString-0>
+      <LbgOptionNostuffW-0>False</LbgOptionNostuffW-0>
+      <LbgOptionScope-0>Auto</LbgOptionScope-0>
+      <LbgOptionHeadComplexH-0>False</LbgOptionHeadComplexH-0>
+      <LbgOptionInstalign-0>Noinstalign</LbgOptionInstalign-0>
+      <LbgOptionSchedule-0>Auto</LbgOptionSchedule-0>
+      <LbgOptionApproxdiv-0>False</LbgOptionApproxdiv-0>
+      <LbgOptionHeadFenvH-0>False</LbgOptionHeadFenvH-0>
+      <LbgOptionNouseDiv-0>True</LbgOptionNouseDiv-0>
+      <LbgOptionEnableRegister-0>False</LbgOptionEnableRegister-0>
+      <LbgOptionHeadInttypesH-0>False</LbgOptionHeadInttypesH-0>
+      <LbgOptionHeadWcharH-0>False</LbgOptionHeadWcharH-0>
+      <LbgOptionSimpleFloatConv-0>False</LbgOptionSimpleFloatConv-0>
+      <LbgOptionFpu-0>Auto</LbgOptionFpu-0>
+      <LbgOptionHeadWctypeH-0>False</LbgOptionHeadWctypeH-0>
+      <LbgOptionFloatOrder-0>False</LbgOptionFloatOrder-0>
+    </Instance>
+    <Instance Guid="de02f184-fa48-4e96-9e6a-6bb3dcb28323">
+      <ItemAddTime>635566759978682667</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="1bbd5dde-00fc-4a28-aa9c-60ae0e66d1b9">
+      <ItemAddTime>635566750818422980</ItemAddTime>
+      <ItemAddTimeCount>2</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="4e012b1a-8795-42f3-b39c-61d26949c471">
+      <ItemAddTime>635566751427899078</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="85f63bab-6a98-40fd-a7a3-554f50ba0bda">
+      <ItemAddTime>635566751427899078</ItemAddTime>
+      <ItemAddTimeCount>1</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="bf1def42-49c6-47f9-8469-024fce72c520">
+      <ItemAddTime>635566751427899078</ItemAddTime>
+      <ItemAddTimeCount>2</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="1237608f-20f3-48ff-bb64-fa91866be8ff">
+      <ItemAddTime>635566751427899078</ItemAddTime>
+      <ItemAddTimeCount>3</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="18854485-3e8d-45c6-af26-3c91fb86ab27">
+      <ItemAddTime>635566751427899078</ItemAddTime>
+      <ItemAddTimeCount>4</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="3c45dc57-e843-4d8a-843b-9ba60af3b64c">
+      <ItemAddTime>635566751427899078</ItemAddTime>
+      <ItemAddTimeCount>5</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="c2f52a1a-5ece-44e6-a507-0a3b745cdc25">
+      <ItemAddTime>635566751427899078</ItemAddTime>
+      <ItemAddTimeCount>6</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="4ca9d7d2-101e-4576-a66d-44d31d3313b6">
+      <ItemAddTime>635566751427899078</ItemAddTime>
+      <ItemAddTimeCount>7</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="b1e1546b-8919-4fcc-be08-7e70c4176b40">
+      <ItemAddTime>635566751685352321</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="10ac15b6-3d56-478a-93b8-717f1f6e038b">
+      <ItemAddTime>635566751914283359</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="934c4f09-e16a-4a6b-94f4-def5a373376f">
+      <ItemAddTime>635566751914283359</ItemAddTime>
+      <ItemAddTimeCount>1</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="77b39d7f-a06a-4099-90cf-eae401121f01">
+      <ItemAddTime>635566752511839883</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="dad7ac30-3e41-406e-9e9b-2f566ed1dc23">
+      <ItemAddTime>635566752511839883</ItemAddTime>
+      <ItemAddTimeCount>1</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="3ec6aec0-453c-4375-a93b-f5efcbc1098a">
+      <ItemAddTime>635566752511839883</ItemAddTime>
+      <ItemAddTimeCount>2</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="87cb7b63-e0a9-4724-a412-ac08bf6a28d9">
+      <ItemAddTime>635566752511839883</ItemAddTime>
+      <ItemAddTimeCount>3</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="449eb0b4-5f1f-4b14-b3c4-46150f3a2b79">
+      <ItemAddTime>635566752511839883</ItemAddTime>
+      <ItemAddTimeCount>4</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="8780d761-4797-4c74-a761-4334bf06cd6f">
+      <ItemAddTime>635566753537595075</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="355812ee-668b-4f0b-9791-8f48825a3959">
+      <ItemAddTime>635566772289345700</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="7fc99e01-e527-4738-a4ca-fc219d28b1b5">
+      <ItemAddTime>635566772508769527</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="c62c9f6d-1caf-4bff-bfdb-d2073e8d883b">
+      <ItemAddTime>635566773657980455</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="0bec35a2-6ac1-4d89-9403-72a3e1537885">
+      <ItemAddTime>635566774024486064</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="4736c8a8-535e-4c84-b8cf-ccb9d5031867">
+      <ItemAddTime>635566773071356019</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="93832830-324b-44be-b4a3-ce060e78b364">
+      <ItemAddTime>635566774260990128</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="cf6bb2a4-3ecb-4ca0-a544-db12b0076f4e">
+      <ItemAddTime>635566774492901039</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="100de8d0-3fe3-43e4-babc-d7aa16facbd6">
+      <ItemAddTime>635566774675839064</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="70beef52-47f0-44a9-adec-cde39e64ca3d">
+      <ItemAddTime>635566777549380963</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="77b72ec5-6d8d-4a1f-93ca-6c42f1023443">
+      <ItemAddTime>635566783545095172</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="959e97b8-a341-4c57-a670-a1fb868978eb">
+      <ItemAddTime>635576048944543237</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="f80fdc1d-1a42-4612-9e72-6cec4e709c34">
+      <ItemAddTime>635576048944543237</ItemAddTime>
+      <ItemAddTimeCount>1</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="e495184a-f1b3-48ce-b35a-257661fffacd">
+      <ItemAddTime>635576049371503237</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="5648c17c-f3f0-45e5-a825-92882559ff7c">
+      <ItemAddTime>635576049371503237</ItemAddTime>
+      <ItemAddTimeCount>1</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="2fd077e0-ad8e-4402-9ef1-6e724c3eff61">
+      <ItemAddTime>635576049371503237</ItemAddTime>
+      <ItemAddTimeCount>2</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="e0c47528-437b-4b76-9298-467f8837893f">
+      <ItemAddTime>635579125285798660</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="2001cd02-68c7-43db-b703-28b9455b33bd">
+      <ItemAddTime>635579125285959139</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="464b18d9-b491-4870-8d20-7e4cb7263c41">
+      <ItemAddTime>635579125285959139</ItemAddTime>
+      <ItemAddTimeCount>1</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="e00a3588-5ee1-4c5f-9ed9-c049d58215b8">
+      <ItemAddTime>635579125285959139</ItemAddTime>
+      <ItemAddTimeCount>2</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="5d34a40f-835b-43c9-b32b-de2eb0c8c35c">
+      <ItemAddTime>635580356402554706</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="9c7de5ab-3c4a-40f9-bc3e-c4a1fd625ddb">
+      <ItemAddTime>635681943774872255</ItemAddTime>
+      <ItemAddTimeCount>10</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="e14cb20c-0af5-4af7-a959-a0c67353efae">
+      <ItemAddTime>635681943774872255</ItemAddTime>
+      <ItemAddTimeCount>9</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="d5d000f5-c21a-4e8d-b899-6982a1a4d4d4">
+      <ItemAddTime>635681943774872255</ItemAddTime>
+      <ItemAddTimeCount>8</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="1297d6f2-f405-4aed-8595-ce4588513fa2">
+      <ItemAddTime>635681943774872255</ItemAddTime>
+      <ItemAddTimeCount>7</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="513f2334-520d-4fd3-9ec5-6ff3fa87b98b">
+      <ItemAddTime>635681943774872255</ItemAddTime>
+      <ItemAddTimeCount>6</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="91743b66-ef5d-4742-891f-0773b28ad763">
+      <ItemAddTime>635681943774872255</ItemAddTime>
+      <ItemAddTimeCount>5</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="19786a9e-df3d-4ae1-a948-3761a3294490">
+      <ItemAddTime>635681943774872255</ItemAddTime>
+      <ItemAddTimeCount>4</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="5a59a53d-629f-4c9b-91a5-b3f1f2b272a4">
+      <ItemAddTime>635681943774872255</ItemAddTime>
+      <ItemAddTimeCount>3</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="2e26c8a2-3939-46cd-b221-d758f86bfc64">
+      <ItemAddTime>635681943774872255</ItemAddTime>
+      <ItemAddTimeCount>2</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="a330a24e-1280-49d1-8729-306b9e7c70ff">
+      <ItemAddTime>635681943774872255</ItemAddTime>
+      <ItemAddTimeCount>1</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="6e861f62-9bee-40c3-8c96-b46b67e92236">
+      <ItemAddTime>635628943625108818</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="f2351905-2884-4edd-867a-9af4196f3325">
+      <ItemAddTime>635681943774872255</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="7d791048-ac51-4690-8898-106a26e61abb">
+      <ItemAddTime>635647227773058994</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="71b1d656-790d-4e4e-b799-a485961695df">
+      <ItemAddTime>635647919184430650</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="36141459-2751-48a0-9b78-a7710f3cb5cd">
+      <ItemAddTime>635675599713915850</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="c6fd5121-fafc-402a-bd21-1fed2e540a0d">
+      <ItemAddTime>635681959164315263</ItemAddTime>
+      <ItemAddTimeCount>0</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="4f4bde04-ca58-4545-8eb4-71fbb7e85b7c">
+      <ItemAddTime>635681959164315263</ItemAddTime>
+      <ItemAddTimeCount>1</ItemAddTimeCount>
+    </Instance>
+    <Instance Guid="a7be515f-f007-45ed-9059-4e1500c0f74d">
+      <TimeTagModified-SourceItem0--0>-8587805607317180733</TimeTagModified-SourceItem0--0>
+      <SourceItem0-IsLockedByUser>False</SourceItem0-IsLockedByUser>
+      <SourceItem0-BuildingTarget-0>True</SourceItem0-BuildingTarget-0>
+      <SourceItem0-IndividualCompileOption-0>False</SourceItem0-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem2--0>-8587805600875793135</TimeTagModified-SourceItem2--0>
+      <SourceItem2-IsLockedByUser>False</SourceItem2-IsLockedByUser>
+      <SourceItem2-BuildingTarget-0>True</SourceItem2-BuildingTarget-0>
+      <SourceItem2-IndividualCompileOption-0>False</SourceItem2-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem3--0>-8587805610036252751</TimeTagModified-SourceItem3--0>
+      <SourceItem3-IsLockedByUser>False</SourceItem3-IsLockedByUser>
+      <SourceItem3-BuildingTarget-0>True</SourceItem3-BuildingTarget-0>
+      <SourceItem3-IndividualCompileOption-0>False</SourceItem3-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem4--0>-8587690401690460545</TimeTagModified-SourceItem4--0>
+      <SourceItem4-IsLockedByUser>False</SourceItem4-IsLockedByUser>
+      <SourceItem4-BuildingTarget-0>True</SourceItem4-BuildingTarget-0>
+      <SourceItem4-IndividualCompileOption-0>False</SourceItem4-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem5--0>-8587690401690460545</TimeTagModified-SourceItem5--0>
+      <SourceItem5-IsLockedByUser>False</SourceItem5-IsLockedByUser>
+      <SourceItem5-BuildingTarget-0>True</SourceItem5-BuildingTarget-0>
+      <SourceItem5-IndividualCompileOption-0>False</SourceItem5-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem8--0>-8587805588346006281</TimeTagModified-SourceItem8--0>
+      <SourceItem8-IsLockedByUser>False</SourceItem8-IsLockedByUser>
+      <SourceItem8-BuildingTarget-0>True</SourceItem8-BuildingTarget-0>
+      <SourceItem8-IndividualCompileOption-0>False</SourceItem8-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem9--0>-8587805587783419789</TimeTagModified-SourceItem9--0>
+      <SourceItem9-IsLockedByUser>False</SourceItem9-IsLockedByUser>
+      <SourceItem9-BuildingTarget-0>True</SourceItem9-BuildingTarget-0>
+      <SourceItem9-IndividualCompileOption-0>False</SourceItem9-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem10--0>-8587805577309680636</TimeTagModified-SourceItem10--0>
+      <SourceItem10-IsLockedByUser>False</SourceItem10-IsLockedByUser>
+      <SourceItem10-BuildingTarget-0>True</SourceItem10-BuildingTarget-0>
+      <SourceItem10-IndividualCompileOption-0>False</SourceItem10-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem11--0>-8587805586830289744</TimeTagModified-SourceItem11--0>
+      <SourceItem11-IsLockedByUser>False</SourceItem11-IsLockedByUser>
+      <SourceItem11-BuildingTarget-0>True</SourceItem11-BuildingTarget-0>
+      <SourceItem11-IndividualCompileOption-0>False</SourceItem11-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem12--0>-8587805586593785680</TimeTagModified-SourceItem12--0>
+      <SourceItem12-IsLockedByUser>False</SourceItem12-IsLockedByUser>
+      <SourceItem12-BuildingTarget-0>True</SourceItem12-BuildingTarget-0>
+      <SourceItem12-IndividualCompileOption-0>False</SourceItem12-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem13--0>-8587805586361874769</TimeTagModified-SourceItem13--0>
+      <SourceItem13-IsLockedByUser>False</SourceItem13-IsLockedByUser>
+      <SourceItem13-BuildingTarget-0>True</SourceItem13-BuildingTarget-0>
+      <SourceItem13-IndividualCompileOption-0>False</SourceItem13-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem14--0>-8587805609426876730</TimeTagModified-SourceItem14--0>
+      <SourceItem14-IsLockedByUser>False</SourceItem14-IsLockedByUser>
+      <SourceItem14-BuildingTarget-0>True</SourceItem14-BuildingTarget-0>
+      <SourceItem14-IndividualCompileOption-0>False</SourceItem14-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem15--0>-8587805609426876730</TimeTagModified-SourceItem15--0>
+      <SourceItem15-IsLockedByUser>False</SourceItem15-IsLockedByUser>
+      <SourceItem15-BuildingTarget-0>True</SourceItem15-BuildingTarget-0>
+      <SourceItem15-IndividualCompileOption-0>False</SourceItem15-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem16--0>-8587805609426876730</TimeTagModified-SourceItem16--0>
+      <SourceItem16-IsLockedByUser>False</SourceItem16-IsLockedByUser>
+      <SourceItem16-BuildingTarget-0>True</SourceItem16-BuildingTarget-0>
+      <SourceItem16-IndividualCompileOption-0>False</SourceItem16-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem17--0>-8587805609426876730</TimeTagModified-SourceItem17--0>
+      <SourceItem17-IsLockedByUser>False</SourceItem17-IsLockedByUser>
+      <SourceItem17-BuildingTarget-0>True</SourceItem17-BuildingTarget-0>
+      <SourceItem17-IndividualCompileOption-0>False</SourceItem17-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem18--0>-8587805609426876730</TimeTagModified-SourceItem18--0>
+      <SourceItem18-IsLockedByUser>False</SourceItem18-IsLockedByUser>
+      <SourceItem18-BuildingTarget-0>True</SourceItem18-BuildingTarget-0>
+      <SourceItem18-IndividualCompileOption-0>False</SourceItem18-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem19--0>-8587805609426876730</TimeTagModified-SourceItem19--0>
+      <SourceItem19-IsLockedByUser>False</SourceItem19-IsLockedByUser>
+      <SourceItem19-BuildingTarget-0>True</SourceItem19-BuildingTarget-0>
+      <SourceItem19-IndividualCompileOption-0>False</SourceItem19-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem20--0>-8587805609426876730</TimeTagModified-SourceItem20--0>
+      <SourceItem20-IsLockedByUser>False</SourceItem20-IsLockedByUser>
+      <SourceItem20-BuildingTarget-0>True</SourceItem20-BuildingTarget-0>
+      <SourceItem20-IndividualCompileOption-0>False</SourceItem20-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem21--0>-8587805360716424671</TimeTagModified-SourceItem21--0>
+      <SourceItem21-IsLockedByUser>False</SourceItem21-IsLockedByUser>
+      <SourceItem21-BuildingTarget-0>False</SourceItem21-BuildingTarget-0>
+      <SourceItem21-IndividualCompileOption-0>False</SourceItem21-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem22--0>-8587724441670345158</TimeTagModified-SourceItem22--0>
+      <SourceItem22-IsLockedByUser>False</SourceItem22-IsLockedByUser>
+      <SourceItem22-BuildingTarget-0>True</SourceItem22-BuildingTarget-0>
+      <SourceItem22-IndividualCompileOption-0>False</SourceItem22-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem23--0>-8587805609169423487</TimeTagModified-SourceItem23--0>
+      <SourceItem23-IsLockedByUser>False</SourceItem23-IsLockedByUser>
+      <SourceItem23-BuildingTarget-0>True</SourceItem23-BuildingTarget-0>
+      <SourceItem23-IndividualCompileOption-0>False</SourceItem23-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem24--0>-8587805583305394845</TimeTagModified-SourceItem24--0>
+      <SourceItem24-IsLockedByUser>False</SourceItem24-IsLockedByUser>
+      <SourceItem24-BuildingTarget-0>True</SourceItem24-BuildingTarget-0>
+      <SourceItem24-IndividualCompileOption-0>False</SourceItem24-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem25--0>-8587805608940492449</TimeTagModified-SourceItem25--0>
+      <SourceItem25-IsLockedByUser>False</SourceItem25-IsLockedByUser>
+      <SourceItem25-BuildingTarget-0>True</SourceItem25-BuildingTarget-0>
+      <SourceItem25-IndividualCompileOption-0>False</SourceItem25-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem26--0>-8587805608940492449</TimeTagModified-SourceItem26--0>
+      <SourceItem26-IsLockedByUser>False</SourceItem26-IsLockedByUser>
+      <SourceItem26-BuildingTarget-0>True</SourceItem26-BuildingTarget-0>
+      <SourceItem26-IndividualCompileOption-0>False</SourceItem26-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem27--0>-8587793222473008567</TimeTagModified-SourceItem27--0>
+      <SourceItem27-IsLockedByUser>False</SourceItem27-IsLockedByUser>
+      <SourceItem27-BuildingTarget-0>True</SourceItem27-BuildingTarget-0>
+      <SourceItem27-IndividualCompileOption-0>False</SourceItem27-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem28--0>-8587796311483272571</TimeTagModified-SourceItem28--0>
+      <SourceItem28-IsLockedByUser>False</SourceItem28-IsLockedByUser>
+      <SourceItem28-BuildingTarget-0>True</SourceItem28-BuildingTarget-0>
+      <SourceItem28-IndividualCompileOption-0>False</SourceItem28-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem29--0>-8587796311483272571</TimeTagModified-SourceItem29--0>
+      <SourceItem29-IsLockedByUser>False</SourceItem29-IsLockedByUser>
+      <SourceItem29-BuildingTarget-0>True</SourceItem29-BuildingTarget-0>
+      <SourceItem29-IndividualCompileOption-0>False</SourceItem29-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem30--0>-8587793219784534644</TimeTagModified-SourceItem30--0>
+      <SourceItem30-IsLockedByUser>False</SourceItem30-IsLockedByUser>
+      <SourceItem30-BuildingTarget-0>True</SourceItem30-BuildingTarget-0>
+      <SourceItem30-IndividualCompileOption-0>False</SourceItem30-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem31--0>-8587793205330916052</TimeTagModified-SourceItem31--0>
+      <SourceItem31-IsLockedByUser>False</SourceItem31-IsLockedByUser>
+      <SourceItem31-BuildingTarget-0>True</SourceItem31-BuildingTarget-0>
+      <SourceItem31-IndividualCompileOption-0>False</SourceItem31-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem32--0>-8587793218144284420</TimeTagModified-SourceItem32--0>
+      <SourceItem32-IsLockedByUser>False</SourceItem32-IsLockedByUser>
+      <SourceItem32-BuildingTarget-0>True</SourceItem32-BuildingTarget-0>
+      <SourceItem32-IndividualCompileOption-0>False</SourceItem32-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem33--0>-8587793219157824774</TimeTagModified-SourceItem33--0>
+      <SourceItem33-IsLockedByUser>False</SourceItem33-IsLockedByUser>
+      <SourceItem33-BuildingTarget-0>True</SourceItem33-BuildingTarget-0>
+      <SourceItem33-IndividualCompileOption-0>False</SourceItem33-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem34--0>-8587792004452221102</TimeTagModified-SourceItem34--0>
+      <SourceItem34-IsLockedByUser>False</SourceItem34-IsLockedByUser>
+      <SourceItem34-BuildingTarget-0>True</SourceItem34-BuildingTarget-0>
+      <SourceItem34-IndividualCompileOption-0>False</SourceItem34-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem35--0>-8587696761140859958</TimeTagModified-SourceItem35--0>
+      <SourceItem35-IsLockedByUser>False</SourceItem35-IsLockedByUser>
+      <SourceItem35-BuildingTarget-0>True</SourceItem35-BuildingTarget-0>
+      <SourceItem35-IndividualCompileOption-0>False</SourceItem35-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem36--0>-8587805608342935925</TimeTagModified-SourceItem36--0>
+      <SourceItem36-IsLockedByUser>False</SourceItem36-IsLockedByUser>
+      <SourceItem36-BuildingTarget-0>True</SourceItem36-BuildingTarget-0>
+      <SourceItem36-IndividualCompileOption-0>False</SourceItem36-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem37--0>-8587805608342935925</TimeTagModified-SourceItem37--0>
+      <SourceItem37-IsLockedByUser>False</SourceItem37-IsLockedByUser>
+      <SourceItem37-BuildingTarget-0>True</SourceItem37-BuildingTarget-0>
+      <SourceItem37-IndividualCompileOption-0>False</SourceItem37-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem38--0>-8587805608342935925</TimeTagModified-SourceItem38--0>
+      <SourceItem38-IsLockedByUser>False</SourceItem38-IsLockedByUser>
+      <SourceItem38-BuildingTarget-0>True</SourceItem38-BuildingTarget-0>
+      <SourceItem38-IndividualCompileOption-0>False</SourceItem38-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem39--0>-8587805608342935925</TimeTagModified-SourceItem39--0>
+      <SourceItem39-IsLockedByUser>False</SourceItem39-IsLockedByUser>
+      <SourceItem39-BuildingTarget-0>True</SourceItem39-BuildingTarget-0>
+      <SourceItem39-IndividualCompileOption-0>False</SourceItem39-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem40--0>-8587805608342935925</TimeTagModified-SourceItem40--0>
+      <SourceItem40-IsLockedByUser>False</SourceItem40-IsLockedByUser>
+      <SourceItem40-BuildingTarget-0>True</SourceItem40-BuildingTarget-0>
+      <SourceItem40-IndividualCompileOption-0>False</SourceItem40-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem41--0>-8587725133081716814</TimeTagModified-SourceItem41--0>
+      <SourceItem41-IsLockedByUser>False</SourceItem41-IsLockedByUser>
+      <SourceItem41-BuildingTarget-0>True</SourceItem41-BuildingTarget-0>
+      <SourceItem41-IndividualCompileOption-0>False</SourceItem41-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem42--0>-8587743417229666990</TimeTagModified-SourceItem42--0>
+      <SourceItem42-IsLockedByUser>False</SourceItem42-IsLockedByUser>
+      <SourceItem42-BuildingTarget-0>True</SourceItem42-BuildingTarget-0>
+      <SourceItem42-IndividualCompileOption-0>False</SourceItem42-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem43--0>-8587690417079903553</TimeTagModified-SourceItem43--0>
+      <SourceItem43-IsLockedByUser>False</SourceItem43-IsLockedByUser>
+      <SourceItem43-BuildingTarget-0>True</SourceItem43-BuildingTarget-0>
+      <SourceItem43-IndividualCompileOption-0>False</SourceItem43-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem44--0>-8587690417079903553</TimeTagModified-SourceItem44--0>
+      <SourceItem44-IsLockedByUser>False</SourceItem44-IsLockedByUser>
+      <SourceItem44-BuildingTarget-0>True</SourceItem44-BuildingTarget-0>
+      <SourceItem44-IndividualCompileOption-0>False</SourceItem44-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem45--0>-8587690417079903553</TimeTagModified-SourceItem45--0>
+      <SourceItem45-IsLockedByUser>False</SourceItem45-IsLockedByUser>
+      <SourceItem45-BuildingTarget-0>True</SourceItem45-BuildingTarget-0>
+      <SourceItem45-IndividualCompileOption-0>False</SourceItem45-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem46--0>-8587690417079903553</TimeTagModified-SourceItem46--0>
+      <SourceItem46-IsLockedByUser>False</SourceItem46-IsLockedByUser>
+      <SourceItem46-BuildingTarget-0>True</SourceItem46-BuildingTarget-0>
+      <SourceItem46-IndividualCompileOption-0>False</SourceItem46-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem47--0>-8587690417079903553</TimeTagModified-SourceItem47--0>
+      <SourceItem47-IsLockedByUser>False</SourceItem47-IsLockedByUser>
+      <SourceItem47-BuildingTarget-0>True</SourceItem47-BuildingTarget-0>
+      <SourceItem47-IndividualCompileOption-0>False</SourceItem47-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem48--0>-8587690417079903553</TimeTagModified-SourceItem48--0>
+      <SourceItem48-IsLockedByUser>False</SourceItem48-IsLockedByUser>
+      <SourceItem48-BuildingTarget-0>True</SourceItem48-BuildingTarget-0>
+      <SourceItem48-IndividualCompileOption-0>False</SourceItem48-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem49--0>-8587690417079903553</TimeTagModified-SourceItem49--0>
+      <SourceItem49-IsLockedByUser>False</SourceItem49-IsLockedByUser>
+      <SourceItem49-BuildingTarget-0>True</SourceItem49-BuildingTarget-0>
+      <SourceItem49-IndividualCompileOption-0>False</SourceItem49-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem50--0>-8587690417079903553</TimeTagModified-SourceItem50--0>
+      <SourceItem50-IsLockedByUser>False</SourceItem50-IsLockedByUser>
+      <SourceItem50-BuildingTarget-0>True</SourceItem50-BuildingTarget-0>
+      <SourceItem50-IndividualCompileOption-0>False</SourceItem50-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem51--0>-8587690417079903553</TimeTagModified-SourceItem51--0>
+      <SourceItem51-IsLockedByUser>False</SourceItem51-IsLockedByUser>
+      <SourceItem51-BuildingTarget-0>True</SourceItem51-BuildingTarget-0>
+      <SourceItem51-IndividualCompileOption-0>False</SourceItem51-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem52--0>-8587690417079903553</TimeTagModified-SourceItem52--0>
+      <SourceItem52-IsLockedByUser>False</SourceItem52-IsLockedByUser>
+      <SourceItem52-BuildingTarget-0>True</SourceItem52-BuildingTarget-0>
+      <SourceItem52-IndividualCompileOption-0>False</SourceItem52-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem53--0>-8587690417079903553</TimeTagModified-SourceItem53--0>
+      <SourceItem53-IsLockedByUser>False</SourceItem53-IsLockedByUser>
+      <SourceItem53-BuildingTarget-0>True</SourceItem53-BuildingTarget-0>
+      <SourceItem53-IndividualCompileOption-0>False</SourceItem53-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem54--0>-8587796311910232571</TimeTagModified-SourceItem54--0>
+      <SourceItem54-IsLockedByUser>False</SourceItem54-IsLockedByUser>
+      <SourceItem54-BuildingTarget-0>True</SourceItem54-BuildingTarget-0>
+      <SourceItem54-IndividualCompileOption-0>False</SourceItem54-IndividualCompileOption-0>
+      <TimeTagModified-SourceItem55--0>-8587796311910232571</TimeTagModified-SourceItem55--0>
+      <SourceItem55-IsLockedByUser>False</SourceItem55-IsLockedByUser>
+      <SourceItem55-BuildingTarget-0>True</SourceItem55-BuildingTarget-0>
+      <SourceItem55-IndividualCompileOption-0>False</SourceItem55-IndividualCompileOption-0>
+    </Instance>
+    <Instance Guid="c20a78d9-8038-46fe-9b87-bc2fa2aa9bdc">
+      <TimeTagModified-SourceItem1--0>-8587805587196795353</TimeTagModified-SourceItem1--0>
+      <SourceItem1-IsLockedByUser>False</SourceItem1-IsLockedByUser>
+      <SourceItem1-BuildingTarget-0>True</SourceItem1-BuildingTarget-0>
+      <SourceItem1-IndividualAssembleOption-0>False</SourceItem1-IndividualAssembleOption-0>
+      <TimeTagModified-SourceItem6--0>-8587805586178936744</TimeTagModified-SourceItem6--0>
+      <SourceItem6-IsLockedByUser>False</SourceItem6-IsLockedByUser>
+      <SourceItem6-BuildingTarget-0>True</SourceItem6-BuildingTarget-0>
+      <SourceItem6-IndividualAssembleOption-0>False</SourceItem6-IndividualAssembleOption-0>
+      <TimeTagModified-SourceItem7--0>-8587805588565430108</TimeTagModified-SourceItem7--0>
+      <SourceItem7-IsLockedByUser>False</SourceItem7-IsLockedByUser>
+      <SourceItem7-BuildingTarget-0>True</SourceItem7-BuildingTarget-0>
+      <SourceItem7-IndividualAssembleOption-0>False</SourceItem7-IndividualAssembleOption-0>
+    </Instance>
+  </Class>
+  <Class Guid="44fa27c9-0aa0-4297-bd3b-2c5c5bdb8881">
+    <Instance Guid="44fa27c9-0aa0-4297-bd3b-2c5c5bdb8881">
+      <IsLibraryMode>False</IsLibraryMode>
+      <StartUpCategoryItem>00000000-0000-0000-0000-000000000000</StartUpCategoryItem>
+    </Instance>
+  </Class>
+  <Class Guid="a29a09ee-92c3-4ce7-9586-a1b058043f92">
+    <Instance Guid="a29a09ee-92c3-4ce7-9586-a1b058043f92">
+      <ProjectGeneratr-GeneratedFile0 />
+    </Instance>
+  </Class>
+  <Class Guid="31a86ad3-37bd-4846-aff2-e08abdc00197">
+    <Instance Guid="31a86ad3-37bd-4846-aff2-e08abdc00197">
+      <DeviceNameOnCreateStartup>R5F563NBDxFP</DeviceNameOnCreateStartup>
+    </Instance>
+  </Class>
+  <Class Guid="8b5af363-dcc2-48e6-919c-6cdb80d50173">
+    <Instance Guid="8b5af363-dcc2-48e6-919c-6cdb80d50173">
+      <DataFormatVersionPlugin>1.0</DataFormatVersionPlugin>
+      <DataFormatVersionDebugger>1.0</DataFormatVersionDebugger>
+    </Instance>
+  </Class>
+  <Class Guid="932085a2-9361-4df9-a3f7-12e6de7681a8">
+    <Instance Guid="932085a2-9361-4df9-a3f7-12e6de7681a8">
+      <DebugToolManager>1d1a55cf-2b92-481a-af4f-5975d095c419</DebugToolManager>
+    </Instance>
+  </Class>
+  <Class Guid="e4df8d71-236e-4af2-aaea-56345a08da25">
+    <Instance Guid="9e76d4e8-0b8f-4e7c-91b7-a4c442bcf2e7">
+      <DeviceChangedCounter>0</DeviceChangedCounter>
+      <DeviceName>R5F563NBDxFP</DeviceName>
+      <DebuggerProperty-EssentialProperty-Endian-CpuEndian>Little</DebuggerProperty-EssentialProperty-Endian-CpuEndian>
+      <DebuggerProperty-EssentialProperty-Clock-SystemClockFrequency>100</DebuggerProperty-EssentialProperty-Clock-SystemClockFrequency>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Length>3</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Length>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item0-Name>CMT</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item0-Name>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item0-IsUse>False</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item0-IsUse>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item1-Name>ICU</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item1-Name>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item1-IsUse>False</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item1-IsUse>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item2-Name>MPU</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item2-Name>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item2-IsUse>False</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-RegisterPeripheral-Item2-IsUse>
+      <DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-PeripheralClockRate>ClockRate_1</DebuggerProperty-EssentialProperty-PeripheralFunctionSimulation-PeripheralClockRate>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-Length>1</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-Length>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-DebuggerGuid />
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-FileName>DefaultBuild\ukadecot.abs</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-FileName>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-FileType>LoadModuleFile</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-FileType>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-Offset>0</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-Offset>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-StartAddress>0</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-StartAddress>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-ObjectDownload>True</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-ObjectDownload>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-SymbolDownload>True</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-SymbolDownload>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-UsePicPidOffset>False</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-UsePicPidOffset>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-PicOffset>0</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-PicOffset>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-PidOffset>0</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-PidOffset>
+      <DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-GenerateInformationForInputCompletion>True</DebuggerProperty-DownloadProperty-DebugInformation-DownloadFiles-DownloadItem0-GenerateInformationForInputCompletion>
+      <DebuggerProperty-DownloadProperty-DebugInformation-CpuReset>True</DebuggerProperty-DownloadProperty-DebugInformation-CpuReset>
+      <DebuggerProperty-DownloadProperty-DebugInformation-FlashErase>False</DebuggerProperty-DownloadProperty-DebugInformation-FlashErase>
+      <DebuggerProperty-DownloadProperty-DebugInformation-EventCorrection>SuspendEvent</DebuggerProperty-DownloadProperty-DebugInformation-EventCorrection>
+      <DebuggerProperty-DownloadProperty-DebugInformation-SkipStartup>True</DebuggerProperty-DownloadProperty-DebugInformation-SkipStartup>
+      <DebuggerProperty-DownloadProperty-DebugInformation-MainSymbol>XwBtAGEAaQBuAA==</DebuggerProperty-DownloadProperty-DebugInformation-MainSymbol>
+      <DebuggerProperty-OptionalProperty-Register-UpdateDisplayInExecutionForPC>No</DebuggerProperty-OptionalProperty-Register-UpdateDisplayInExecutionForPC>
+      <DebuggerProperty-OptionalProperty-Register-UpdateIntervalForPC>500</DebuggerProperty-OptionalProperty-Register-UpdateIntervalForPC>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-Length>17</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-Length>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-MapType>InternalRam</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-StartAddress>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-EndAddress>131071</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem0-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-MapType>NonMap</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-StartAddress>131072</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-EndAddress>524287</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem1-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-StartAddress>524288</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-EndAddress>540671</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem2-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-MapType>NonMap</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-StartAddress>540672</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-EndAddress>548863</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem3-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-StartAddress>548864</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-EndAddress>557055</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem4-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-StartAddress>557056</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-EndAddress>581631</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-Endian>Big</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem5-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-MapType>NonMap</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-StartAddress>581632</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-EndAddress>589823</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem6-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-StartAddress>589824</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-EndAddress>655359</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-Endian>Big</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem7-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-StartAddress>655360</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-EndAddress>786431</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem8-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-StartAddress>786432</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-EndAddress>1048575</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-Endian>Big</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem9-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-MapType>InternalRom</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-StartAddress>1048576</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-EndAddress>1081343</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem10-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-MapType>NonMap</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-StartAddress>1081344</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-EndAddress>8372223</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem11-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-StartAddress>8372224</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-EndAddress>8373503</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-Endian>Big</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem12-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-MapType>NonMap</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-StartAddress>8373504</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-EndAddress>8387583</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem13-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-MapType>Sfr</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-StartAddress>8387584</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-EndAddress>8388607</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-Endian>Big</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem14-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-MapType>NonMap</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-StartAddress>8388608</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-EndAddress>4293918719</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem15-Endian>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-MapType>InternalRom</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-MapType>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-StartAddress>4293918720</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-StartAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-EndAddress>4294967295</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-EndAddress>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-ChipSelect>0</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-ChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-AccessSize>8</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-AccessSize>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-IsReadOnly>True</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-IsReadOnly>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-HasChipSelect>False</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-HasChipSelect>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-FieldInformation>None</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-FieldInformation>
+      <DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-Endian>Little</DebuggerProperty-OptionalProperty-Memory-MemoryMappings-MemoryMapItem16-Endian>
+      <DebuggerProperty-OptionalProperty-AccessMemory-UpdateDisplayInExecution>Yes</DebuggerProperty-OptionalProperty-AccessMemory-UpdateDisplayInExecution>
+      <DebuggerProperty-OptionalProperty-AccessMemory-UpdateInterval>500</DebuggerProperty-OptionalProperty-AccessMemory-UpdateInterval>
+      <DebuggerProperty-OptionalProperty-Trace-UseTrace>No</DebuggerProperty-OptionalProperty-Trace-UseTrace>
+      <DebuggerProperty-OptionalProperty-Trace-ClearTraceMemory>Yes</DebuggerProperty-OptionalProperty-Trace-ClearTraceMemory>
+      <DebuggerProperty-OptionalProperty-Trace-TraceMode>Nonstop</DebuggerProperty-OptionalProperty-Trace-TraceMode>
+      <DebuggerProperty-OptionalProperty-Trace-AddUptimeTag>No</DebuggerProperty-OptionalProperty-Trace-AddUptimeTag>
+      <DebuggerProperty-OptionalProperty-Trace-TraceMemorySize>TraceMemory_64KB</DebuggerProperty-OptionalProperty-Trace-TraceMemorySize>
+      <DebuggerProperty-OptionalProperty-Coverage-UseCoverage>No</DebuggerProperty-OptionalProperty-Coverage-UseCoverage>
+      <DebuggerProperty-OptionalProperty-Coverage-ReuseCoverageData>No</DebuggerProperty-OptionalProperty-Coverage-ReuseCoverageData>
+      <DebuggerProperty-OptionalProperty-StreamIO-SelectStreamIO>Simulator</DebuggerProperty-OptionalProperty-StreamIO-SelectStreamIO>
+      <DebuggerProperty-OptionalProperty-StreamIO-UseStreamIO>No</DebuggerProperty-OptionalProperty-StreamIO-UseStreamIO>
+      <DebuggerProperty-OptionalProperty-StreamIO-StreamIOAddress>0</DebuggerProperty-OptionalProperty-StreamIO-StreamIOAddress>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-ExecutionModeType>Stop</DebuggerProperty-OptionalProperty-ExecutionMode-ExecutionModeType>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopUndefined>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopUndefined>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopPrivileged>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopPrivileged>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopAccess>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopAccess>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopFloatingPoint>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopFloatingPoint>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopInterrupt>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopInterrupt>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopInt>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopInt>
+      <DebuggerProperty-OptionalProperty-ExecutionMode-StopBrk>Yes</DebuggerProperty-OptionalProperty-ExecutionMode-StopBrk>
+      <DebuggerProperty-OptionalProperty-InstructionDecodeCache-CacheResults>No</DebuggerProperty-OptionalProperty-InstructionDecodeCache-CacheResults>
+      <DebuggerProperty-HookProperty-HookTransaction-Downloading-Length>0</DebuggerProperty-HookProperty-HookTransaction-Downloading-Length>
+      <DebuggerProperty-HookProperty-HookTransaction-Downloaded-Length>0</DebuggerProperty-HookProperty-HookTransaction-Downloaded-Length>
+      <DebuggerProperty-HookProperty-HookTransaction-Reset-Length>0</DebuggerProperty-HookProperty-HookTransaction-Reset-Length>
+      <DebuggerProperty-HookProperty-HookTransaction-Going-Length>0</DebuggerProperty-HookProperty-HookTransaction-Going-Length>
+      <DebuggerProperty-HookProperty-HookTransaction-Broke-Length>0</DebuggerProperty-HookProperty-HookTransaction-Broke-Length>
+      <DebuggerProperty-HookProperty-HookTransaction-Connected-Length>0</DebuggerProperty-HookProperty-HookTransaction-Connected-Length>
+      <DebuggerProperty-HookProperty-HookTransaction-Disconnecting-Length>0</DebuggerProperty-HookProperty-HookTransaction-Disconnecting-Length>
+      <DebuggerProperty-DownloadProperty-DebugInformation-MaxLoaderMemorySize>500</DebuggerProperty-DownloadProperty-DebugInformation-MaxLoaderMemorySize>
+    </Instance>
+  </Class>
+  <Class Guid="2a2c2a43-ecdb-4e88-80bd-e75f3e33db90">
+    <Instance Guid="2a2c2a43-ecdb-4e88-80bd-e75f3e33db90">
+      <ProductVersion>4.01.00.00</ProductVersion>
+    </Instance>
+  </Class>
+</CubeSuiteProject>
Index: uKadecot/trunk/ecnl_ssp/MANIFEST
===================================================================
--- uKadecot/trunk/ecnl_ssp/MANIFEST	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/MANIFEST	(revision 101)
@@ -0,0 +1,26 @@
+PACKAGE ecnl
+
+MANIFEST
+echonet.c
+echonet.h
+echonet.tf
+echonet_api.csv
+echonet_asp.cfg
+echonet_chk.tf
+echonet_class.h
+echonet_dbg.c
+echonet_dbg.cfg
+echonet_dbg.h
+echonet_def.csv
+echonet_fbs.c
+echonet_fbs.h
+echonet_lcl_task.h
+echonet_rename.h
+echonet_task.c
+echonet_task.h
+echonet_udp.cfg
+echonet_udp6_task.c
+echonet_udp6_task.h
+echonet_udp_task.c
+echonet_udp_task.h
+../doc/ecnl_manual.pdf
Index: uKadecot/trunk/ecnl_ssp/echonet.c
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet.c	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet.c	(revision 101)
@@ -0,0 +1,702 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#include <kernel.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "echonet.h"
+#include "echonet_fbs.h"
+#include "echonet_task.h"
+#include "echonet_dbg.h"
+#include "echonet_agent.h"
+
+/*
+ * ECHONET LiteT[rXJn
+ */
+ER ecn_sta_svc()
+{
+	return act_tsk(ecn_udp_taskid);
+}
+
+/*
+ * ECHONETIuWFNgQÆ
+ * ø
+ * ID		fa_eobjid	ECHONETIuWFNgID
+ * T_REOBJ	*fp_eobj	ECHONETIuWFNgÌÝèàeRs[æ
+ *
+ * eobjidÅwèµ½ECHONETIuWFNgÌÝèàeðQÆ·éB
+ * QÆµ½ÝèàeÍpk_eobjÉwèµ½ÉÔ³êéB
+ */
+ER ecn_ref_eobj(ID fa_eobjid, T_REOBJ *fp_eobj)
+{
+	const EOBJINIB	*p_obj;
+
+	if (!fp_eobj)
+		return E_PAR;	/* p[^G[ */
+
+	if ((fa_eobjid <= 0) || (fa_eobjid > tmax_eobjid))
+		return E_OBJ;	/* IuWFNg¢o^ */
+
+	p_obj = &eobjinib_table[fa_eobjid - 1];
+
+	*fp_eobj = *p_obj;
+
+	return E_OK;
+}
+
+/*
+ * ECHONETvpeBQÆ
+ * ø
+ * ID			fa_eobjid	ECHONETIuWFNgID
+ * uint8_t		fa_epc		vpeBR[h
+ * T_RPRP		*fp_eprp	ECHONETIuWFNgÌvpeBÝèàeRs[æ
+ *
+ * eobjidÅwèµ½ECHONETIuWFNgÌAepcÅwèµ½vpeBÌÝèàeðQÆ·éB
+ * QÆµ½ÝèàeÍpk_eprpÉwèµ½ÉÔ³êéB
+ */
+ER ecn_ref_eprp(ID fa_eobjid, uint8_t fa_epc, T_RPRP *fp_eprp)
+{
+	const EOBJINIB	*p_obj;
+	const EPRPINIB	*p;
+	uint_t			i;
+
+	if (!fp_eprp)
+		return E_PAR;	/* p[^G[ */
+
+	if ((fa_eobjid <= 0) || (fa_eobjid > tmax_eobjid))
+		return E_OBJ;	/* IuWFNg¢o^ */
+
+	p_obj = &eobjinib_table[fa_eobjid - 1];
+
+	/* eojÌÂvpeBú»è`zñ©çõ */
+	p = p_obj->eprp;
+	for (i = 0; i < p_obj->eprpcnt; i++, p++) {
+		if (p->eprpcd != fa_epc)
+			continue;
+		*fp_eprp = *p;
+		return E_OK;
+	}
+
+	return E_PAR;	/* p[^G[ */
+}
+
+/*
+ * vpeBl«Ývisvjd¶ì¬
+ * ø
+ * T_EDATA			**ppk_esv	æ¾µ½d¶Ìi[æ
+ * ID				fa_deoj		¶æÌECHONETIuWFNgID
+ * uint8_t			fa_epc		vpeBR[h
+ * uint8_t			fa_pdc		vpeBlf[^TCY
+ * const void		*p_edt		vpeBlf[^
+ *
+ *	vpeBl«Ývisvjd¶ðì¬·éB
+ *	d¶ÍdeojÅwèµ½ECHONETIuWFNgð¶æÆµA
+ *	d¶ÌßÌvpeBlÆµÄAepcÆpdcAp_edtÅwè³ê½
+ *	vpeBR[hAf[^TCYAf[^ðd¶ÉÝè·éB
+ *	ì¬µ½d¶ÌæªAhXÍ|C^oRÅÔ³êéB
+ */
+ER ecn_esv_seti(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc, uint8_t fa_pdc,
+	const void *p_edt)
+{
+	return _ecn_tsk_mk_esv((ECN_FBS_ID *)ppk_esv, (ID)1, fa_deoj, fa_epc, fa_pdc, p_edt, ESV_SET_I);
+}
+
+/*
+ * vpeBl«Ývivjd¶ì¬
+ * ø
+ * T_EDATA			**ppk_esv	æ¾µ½d¶Ìi[æ
+ * ID				fa_deoj		¶æÌECHONETIuWFNgID
+ * uint8_t			fa_epc		vpeBR[h
+ * uint8_t			fa_pdc		vpeBlf[^TCY
+ * const void		*p_edt		vpeBlf[^
+ *
+ *	vpeBl«Ývivjd¶ðì¬·éB
+ *	d¶ÍdeojÅwèµ½ECHONETIuWFNgð¶æÆµA
+ *	d¶ÌßÌvpeBlÆµÄAepcÆpdcAp_edtÅwè³ê½
+ *	vpeBR[hAf[^TCYAf[^ðd¶ÉÝè·éB
+ *	ì¬µ½d¶ÌæªAhXÍ|C^oRÅÔ³êéB
+ */
+ER ecn_esv_setc(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc, uint8_t fa_pdc,
+	const void *p_edt)
+{
+	return _ecn_tsk_mk_esv((ECN_FBS_ID *)ppk_esv, (ID)1, fa_deoj, fa_epc, fa_pdc, p_edt, ESV_SET_C);
+}
+
+/*
+ * vpeBlÇÝoµvd¶ì¬
+ * ø
+ * T_EDATA			**ppk_esv	æ¾µ½d¶Ìi[æ
+ * ID				fa_deoj		¶æÌECHONETIuWFNgID
+ * uint8_t			fa_epc		vpeBR[h
+ *
+ * vpeBlÇÝoµvd¶ðì¬·éB
+ * d¶ÍdeojÅwèµ½ECHONETIuWFNgð¶æÆµA
+ * d¶ÌßÌvpeBlÆµÄAepcÅwè³ê½
+ * vpeBR[hðd¶ÉÝè·éB
+ * ì¬µ½d¶ÌæªAhXÍ|C^oRÅÔ³êéB
+ */
+ER ecn_esv_get(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc)
+{
+	return _ecn_tsk_mk_esv((ECN_FBS_ID *)ppk_esv, (ID)1, fa_deoj, fa_epc, 0, NULL, ESV_GET);
+}
+
+/*
+ * vpeBlÊmvd¶ì¬
+ * ø
+ * T_EDATA			**ppk_esv	æ¾µ½d¶Ìi[æ
+ * ID				fa_deoj		¶æÌECHONETIuWFNgID
+ * uint8_t			fa_epc		vpeBR[h
+ *
+ * vpeBlÊmvd¶ðì¬·éB
+ * d¶ÍdeojÅwèµ½ECHONETIuWFNgð¶æÆµA
+ * d¶ÌßÌvpeBlÆµÄAepcÅwè³ê½
+ * vpeBR[hðd¶ÉÝè·éB
+ * ì¬µ½d¶ÌæªAhXÍ|C^oRÅÔ³êéB
+ */
+ER ecn_esv_inf_req(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc)
+{
+	return _ecn_tsk_mk_esv((ECN_FBS_ID *)ppk_esv, (ID)1, fa_deoj, fa_epc, 0, NULL, ESV_INF_REQ);
+}
+
+/*
+ * vpeBl«ÝEÇÝoµvd¶ì¬
+ * ø
+ * T_EDATA			**ppk_esv	æ¾µ½d¶Ìi[æ
+ * ID				fa_deoj		¶æÌECHONETIuWFNgID
+ * uint8_t			fa_epc		vpeBR[h
+ * uint8_t			fa_pdc		vpeBlf[^TCY
+ * const void		*p_edt		vpeBlf[^
+ *
+ * vpeBl«ÝEÇÝoµvd¶ðì¬·éB
+ * d¶ÍdeojÅwèµ½ECHONETIuWFNgð¶æÆµA
+ * d¶ÌßÌvpeBlÆµÄAepcÆpdcAp_edtÅwè³ê½
+ * vpeBR[hAf[^TCYAf[^ðd¶ÉÝè·éB
+ * ì¬µ½d¶ÌæªAhXÍ|C^oRÅÔ³êéB
+ */
+ER ecn_esv_set_get(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc, uint8_t fa_pdc,
+	const void *p_edt)
+{
+	return _ecn_tsk_mk_esv((ECN_FBS_ID *)ppk_esv, (ID)1, fa_deoj, fa_epc, fa_pdc, p_edt, ESV_SET_GET);
+}
+
+/*
+ * vpeBl«ÝEÇÝoµvd¶ì¬FÜèÔµwè
+ * vpeBl«ÝEÇÝoµvd¶ì¬ÌA«ÝvpeBzñðI¦Ä
+ * ÇÝoµvpeBzñÉÚéÉp¢éB
+ */
+ER ecn_trn_set_get(T_EDATA *ppk_esv, int *p_trn_pos)
+{
+	ER	a_ret;
+
+	if (!ppk_esv)
+		return E_PAR;
+	if (!p_trn_pos)
+		return E_PAR;
+
+	/* vpeBÇÝÝ«ÝÌwbhîñðL^ */
+	*p_trn_pos = _ecn_fbs_get_datalen(*(ECN_FBS_ID *)&ppk_esv);
+
+	/* d¶pÉf[^ÇÁE±Ì_ÅÌd¶vpeBðL^ */
+	a_ret = _ecn_fbs_add_data_ex(*(ECN_FBS_ID *)&ppk_esv, &ppk_esv->hdr.edata.opc, 1);
+	if (a_ret) {
+		ECN_DBG_PUT "ecn_trn_set_get(): _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		return a_ret;
+	}
+
+	/* d¶vpeBð 0 Éß·i¡ãAI¹wè·éÜÅÍÇÝoµvpeBÉÈéj */
+	ppk_esv->hdr.edata.opc = 0;
+
+	return E_OK;
+}
+
+/*
+ * vpeBl«ÝEÇÝoµvd¶ì¬FI¹wè
+ * vpeBl«ÝEÇÝoµvd¶ì¬ÌAÇÝoµvpeBzñðI¦éÉp¢éB
+ */
+ER ecn_end_set_get(T_EDATA *ppk_esv, int fa_trn_pos)
+{
+	ER		a_ret;
+	int		a_wr_opc;
+	uint8_t	a_rd_opc;
+
+	if (!ppk_esv)
+		return E_PAR;
+
+	/* ±Ì_ÅÌd¶vpeB(ÇÝoµvpeB)ðÛ */
+	a_rd_opc = ppk_esv->hdr.edata.opc;
+
+	/* d¶vpeB(«ÝvpeB)ðÛ¶Êu©çÇÝæè */
+	a_wr_opc = _ecn_fbs_peek(*(ECN_FBS_ID *)&ppk_esv, fa_trn_pos);
+	if (a_wr_opc < 0) {
+		ECN_DBG_PUT "ecn_end_set_get(): _ecn_fbs_peek() result = %d:%s", a_wr_opc, itron_strerror(a_wr_opc) ECN_DBG_END;
+		return a_wr_opc;
+	}
+
+	/* d¶vpeB(«ÝvpeB)ð³ */
+	ppk_esv->hdr.edata.opc = (uint8_t)a_wr_opc;
+
+	/* d¶vpeB(ÇÝoµvpeB)ðÛ¶ÊuÉ«Ý */
+	a_ret = _ecn_fbs_poke(*(ECN_FBS_ID *)&ppk_esv, fa_trn_pos, a_rd_opc);
+	if (a_ret) {
+		ECN_DBG_PUT "ecn_end_set_get(): _ecn_fbs_poke() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		return a_ret;
+	}
+
+	return E_OK;
+}
+
+/*
+ * vpeBlÊmivjd¶ì¬
+ * ø
+ * T_EDATA			**ppk_esv	æ¾µ½d¶Ìi[æ
+ * ID				fa_deoj		¶æÌECHONETIuWFNgID
+ * ID				fa_seoj		M³ÌECHONETIuWFNgID
+ * uint8_t			fa_sepc		M³ÌvpeBR[h
+ */
+ER ecn_esv_infc(T_EDATA **ppk_esv, ID fa_deoj, ID fa_seoj, uint8_t fa_sepc)
+{
+	return _ecn_tsk_mk_esv((ECN_FBS_ID *)ppk_esv, fa_seoj, fa_deoj, fa_sepc, 0, NULL, ESV_INFC);
+}
+
+/*
+ * vd¶ÖÌvpeBwèÇÁ (vpeBf[^ªtµÈ¢êÉp¢é)
+ */
+ER ecn_add_epc(T_EDATA *pk_esv, uint8_t epc)
+{
+	return ecn_add_edt(pk_esv, epc, 0, 0);
+}
+
+/*
+ * vd¶ÖÌvpeBf[^ÇÁ (vpeB¨æÑtf[^ðÇÁ·é)
+ */
+ER ecn_add_edt(T_EDATA *pk_esv, uint8_t fa_epc, uint8_t fa_pdc, const void *p_edt)
+{
+	ECN_FBS_ID	a_fbs_id;
+	ER			a_ret;
+	T_ECN_PRP	a_ecn_prp;
+
+	if (!pk_esv)
+		return E_PAR; /* æ¾µ½FBS_IDÌi[æªNULL */
+	if (ECHONET_MEMPOOL_BLOCK_SIZE <= fa_pdc)
+		return E_PAR; /* vpeBlTCYªå«·¬é */
+	if (!p_edt && 0 < fa_pdc)
+		return E_PAR; /* vpeBlTCYª1ÈãÈÌÉf[^|C^ªNULL */
+
+	a_fbs_id.ptr = (T_ECN_FST_BLK *)pk_esv;
+	if (((T_EDATA *)a_fbs_id.ptr)->hdr.edata.opc == 0xFF)
+		return E_PAR; /* vpeBª½·¬é */
+
+	/* vd¶pÉf[^ÇÁ */
+	memset(&a_ecn_prp, 0, sizeof(a_ecn_prp));
+	a_ecn_prp.epc = fa_epc;
+	a_ecn_prp.pdc = fa_pdc;
+	a_ret = _ecn_fbs_add_data_ex(a_fbs_id, &a_ecn_prp, sizeof(a_ecn_prp));
+	if (a_ret) {
+		ECN_DBG_PUT "ecn_add_edt(): _ecn_fbs_add_data_ex(*, ecn_prp{epc:0x%02X}, %u) result = %d:%s",
+			a_ecn_prp.epc, sizeof(a_ecn_prp),
+			a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		goto lb_except;
+	}
+	if (0 < fa_pdc) {
+		/* tf[^ÇÁ */
+		a_ret = _ecn_fbs_add_data_ex(a_fbs_id, p_edt, fa_pdc);
+		if (a_ret) {
+			ECN_DBG_PUT "ecn_add_edt(): _ecn_fbs_add_data_ex(*, ecn_prp{epc:0x%02X} edt, %u) result = %d:%s",
+				a_ecn_prp.epc, fa_pdc,
+				a_ret, itron_strerror(a_ret) ECN_DBG_END;
+			goto lb_except;
+		}
+	}
+	/* vpeBCNg */
+	((T_EDATA *)a_fbs_id.ptr)->hdr.edata.opc++;
+
+lb_except:
+	return a_ret;
+}
+
+/*
+ * vd¶ÌM
+ * esvÅwè³ê½vd¶ðM·éB
+ * d¶Éwè³ê½¶æ©çIPAhXðÁèµAUDPpPbgÆµÄM·éB
+ */
+ER ecn_snd_esv(T_EDATA *pk_esv)
+{
+	ECN_FBS_ID a_rsp_fbs;
+	a_rsp_fbs.ptr = (T_ECN_FST_BLK *)pk_esv;
+	return _ecn_tsk_snd_mbx(a_rsp_fbs, true);
+}
+
+/*
+ * d¶ÌóM|[O
+ * d¶ðóM·éÌðÒÂB
+ * óMµ½d¶Íppk_esvÅwèµ½|C^[ÉæªAhXªÔ³êéB
+ * d¶ÌóMÌL³É©©íç¸AÒ½¸ÉÖð²¯éB
+ */
+ER ecn_prcv_esv(T_EDATA **ppk_esv)
+{
+	intptr_t	p_msg = 0;
+	ER		a_ret;
+
+	if (!ppk_esv)
+		return E_PAR;
+
+	a_ret = prcv_dtq(ecn_api_mailboxid, &p_msg);
+	if (a_ret != E_OK) {
+		*ppk_esv = NULL;
+		return a_ret;
+	}
+
+	*ppk_esv = (T_EDATA *)p_msg;
+	return (((T_ECN_FST_BLK *)p_msg)->hdr.type == ECN_MSG_ECHONET) ? E_OK : E_BRK;
+}
+
+/*
+ * d¶Ìjü
+ */
+ER ecn_rel_esv(T_EDATA *pk_esv)
+{
+	ECN_FBS_ID	a_fbs;
+	ER			a_ret;
+
+	a_fbs.ptr = (T_ECN_FST_BLK *)pk_esv;
+	a_ret = _ecn_fbs_del(a_fbs);
+	return a_ret;
+}
+
+/*
+ * d¶ÌM³m[hðæ¾·é
+ */
+ID ecn_get_enod(T_EDATA *pk_esv)
+{
+	const EOBJCB	*p_snod;
+	const EOBJINIB	*p_sobj = NULL;
+	T_ECN_EDT_HDR	*p_esv;
+
+	p_esv = &pk_esv->hdr;
+	p_snod = _ecn_eno_fnd(((T_ECN_FST_BLK *)pk_esv)->hdr.sender);
+	if (p_snod != NULL) {
+		p_sobj = p_snod->profile;
+	}
+
+	if (p_sobj == NULL)
+		return EOBJ_NULL;
+#ifdef ECHONET_CONTROLLER_EXTENTION
+	if (p_sobj->eprpcnt == 0)
+		return ecn_agent_get_eobj(p_sobj);
+#endif
+	return 1 + (((intptr_t)p_sobj - (intptr_t)eobjinib_table) / sizeof(EOBJINIB));
+}
+
+/*
+ * d¶ÌM³@íIuWFNgðæ¾·é
+ */
+ID ecn_get_eobj(T_EDATA *pk_esv)
+{
+	const EOBJCB	*p_snod;
+	const EOBJINIB	*p_sobj = NULL;
+	T_ECN_EDT_HDR	*p_esv;
+
+	p_esv = &pk_esv->hdr;
+	p_snod = _ecn_eno_fnd(((T_ECN_FST_BLK *)pk_esv)->hdr.sender);
+	if (p_snod != NULL) {
+		/* m[hvt@CÌê */
+		if ((p_esv->edata.seoj.eojx1 == EOJ_X1_PROFILE)
+			&& (p_esv->edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) {
+			p_sobj = p_snod->profile;
+		}
+		/* @íIuWFNgÌê */
+		else {
+			p_sobj = _ecn_eoj_fnd(p_snod, &p_esv->edata.seoj);
+		}
+	}
+
+	if (p_sobj == NULL)
+		return EOBJ_NULL;
+#ifdef ECHONET_CONTROLLER_EXTENTION
+	if (p_sobj->eprpcnt == 0)
+		return ecn_agent_get_eobj(p_sobj);
+#endif
+	return 1 + (((intptr_t)p_sobj - (intptr_t)eobjinib_table) / sizeof(EOBJINIB));
+}
+
+/*
+ * d¶ðÍCe[^[ú»
+ */
+ER ecn_itr_ini(T_ENUM_EPC *pk_itr, T_EDATA *pk_esv)
+{
+	if (!pk_itr)
+		return E_PAR;
+	if (!pk_esv)
+		return E_PAR;
+
+	memset(pk_itr, 0, sizeof(*pk_itr));
+	pk_itr->pk_esv = pk_esv;
+	pk_itr->count = pk_esv->hdr.edata.opc;
+								/* ¡ÌubNÅÌvpeB */
+	pk_itr->got_ct = 0;			/* ¡ÌubNÅAÇÝæÁ½ */
+	pk_itr->next_blk_ct = 0;	/* ã±ubN */
+	pk_itr->is_eof = 0;			/* I[ÉBµ½Añ0 */
+	pk_itr->cur = offsetof(T_ECN_EDT_HDR, ecn_prp);
+
+	switch (pk_esv->hdr.edata.esv) {
+	case ESV_SET_GET:		/* 0x6E vpeBl«ÝEÇÝoµv		*/
+	case ESV_SET_GET_RES:	/* 0x7E vpeBl«ÝEÇÝoµ		*/
+	case ESV_SET_GET_SNA:	/* 0x5E	vpeBl«ÝEÇÝoµsÂ	*/
+		pk_itr->next_blk_ct ++;
+	default:
+		break;
+	}
+
+	return E_OK;
+}
+
+/*
+ * d¶ðÍCe[^[CNg
+ */
+ER ecn_itr_nxt(T_ENUM_EPC *pk_itr, uint8_t *p_epc, uint8_t *p_pdc, void *p_edt)
+{
+	ECN_FBS_ID		a_fbs_id;
+	int				a_rd_bak;
+	ER				a_ret;
+	ECN_FBS_SSIZE_T	a_rd_len;
+	T_ECN_PRP		a_ecn_prp;
+
+	if (!pk_itr)
+		return E_PAR;
+	if (!p_epc)
+		return E_PAR;
+	if (!p_pdc)
+		return E_PAR;
+	if (!p_edt)
+		return E_PAR;
+	if (!pk_itr->pk_esv)
+		return E_PAR;
+
+	if (pk_itr->is_eof)
+		return E_BOVR; /* f[^I¹ */
+	if (	pk_itr->count <= pk_itr->got_ct
+	&&	pk_itr->next_blk_ct < 1) {
+		pk_itr->is_eof = 1;			/* I[ÉBµ½Añ0 */
+		return E_BOVR; /* f[^I¹ */
+	}
+
+	a_fbs_id.ptr = (T_ECN_FST_BLK *)pk_itr->pk_esv;
+
+	/* ³ÌJ[\ÊuðÛ¶µACe[^ÌJ[\ÊuÉ·é */
+	a_rd_bak = a_fbs_id.ptr->hdr.rd;
+	a_fbs_id.ptr->hdr.rd = pk_itr->cur;
+
+#ifdef ECN_ENA_ITR_NXT_CARP
+	ECN_CAP_PUT "ecn_itr_nxt() rd.cur=b%dp%d", pk_itr->cur.blk, pk_itr->cur.pos ECN_CAP_PUT;
+#endif
+	if (pk_itr->count <= pk_itr->got_ct && 0 < pk_itr->next_blk_ct) {
+		/* ubNÉÚ® */
+		pk_itr->next_blk_ct --;
+		pk_itr->count = 0;		/* ¡ÌubNÅÌvpeB */
+		pk_itr->got_ct = 0;		/* ¡ÌubNÅAÇÝæÁ½ */
+
+		/* ubNÌvpeBðÇÝæé */
+		a_rd_len = 0;
+		a_ret = _ecn_fbs_get_data(a_fbs_id, &a_ecn_prp.pdc, 1, &a_rd_len);
+		if (a_ret != E_OK)
+			goto lb_except;
+		if (0 < a_rd_len) {
+			pk_itr->count = a_ecn_prp.pdc;	/* ¡ÌubNÅÌvpeB */
+		}
+		a_ret = E_BOVR;	/* f[^I¹ */
+		goto lb_finally;
+	}
+
+	/* vpeBR[hÆf[^TCYðÇÝæé */
+	memset(&a_ecn_prp, 0, sizeof(a_ecn_prp));
+	a_rd_len = 0;
+	a_ret = _ecn_fbs_get_data(a_fbs_id, &a_ecn_prp, sizeof(a_ecn_prp), &a_rd_len);
+	if (a_ret != E_OK)
+		goto lb_except;
+	if (a_rd_len < sizeof(a_ecn_prp)) {
+		ECN_DBG_PUT "ecn_itr_nxt() ecn_prp read fault." 
+			" rd.cur=%d", pk_itr->cur ECN_DBG_END;
+		pk_itr->is_eof = 1;			/* I[ÉBµ½Añ0 */
+		a_ret = E_BOVR;	/* f[^I¹ */
+		goto lb_finally;
+	}
+	*p_epc = a_ecn_prp.epc;
+	*p_pdc = a_ecn_prp.pdc;
+
+	if (0 < a_ecn_prp.pdc) {
+		/* tf[^ðÇÝæé */
+		a_rd_len = 0;
+		a_ret = _ecn_fbs_get_data(a_fbs_id, p_edt, a_ecn_prp.pdc, &a_rd_len);
+		if (a_ret != E_OK)
+			goto lb_except;
+		if (a_rd_len < (ECN_FBS_SSIZE_T)a_ecn_prp.pdc) {
+			ECN_DBG_PUT "ecn_itr_nxt() edt read fault."
+				" rd.cur=%d,epc=0x%02X,pdc=%u", pk_itr->cur, a_ecn_prp.epc , a_ecn_prp.pdc ECN_DBG_END;
+			pk_itr->is_eof = 1;			/* I[ÉBµ½Añ0 */
+			a_ret = E_BOVR;	/* f[^I¹ */
+			goto lb_finally;
+		}
+	}
+	pk_itr->got_ct++;
+
+#ifdef ECN_ENA_ITR_NXT_CARP
+	ECN_CAP_PUT "ecn_itr_nxt() read: ct=%d/%d", pk_itr->got_ct, pk_itr->count ECN_CAP_PUT;
+#endif
+
+lb_finally:
+	/* Ce[^ÌJ[\ÊuðXV */
+	pk_itr->cur = a_fbs_id.ptr->hdr.rd;
+
+lb_except:
+	/* ³ÌJ[\ÊuÉß· */
+	a_fbs_id.ptr->hdr.rd = a_rd_bak;
+	return a_ret;
+}
+
+/*
+ * d¶Ò¿ÌèÝM
+ */
+ER ecn_brk_wai(const void *p_dat, int fa_datsz)
+{
+	ER				a_ret;
+	ECN_FBS_ID		a_fbs_id = { 0 };	/* vd¶p	*/
+
+	/* d¶Ò¿ÌèÝd¶ì¬ */
+	a_ret = _ecn_mk_brk_wai(&a_fbs_id, p_dat, fa_datsz);
+	if (a_ret)
+		return a_ret;
+
+	/* èÝM */
+	a_ret = _ecn_tsk_snd_mbx(a_fbs_id, true);
+	if (a_ret) {
+		ECN_DBG_PUT "_ecn_tsk_snd_mbx() result = %d:%s",
+			a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		goto lb_except;
+	}
+
+	/* ³íI¹ */
+	return a_ret;
+
+lb_except:
+	/* f[^ì¬¸sµ½çÌæðú */
+	if (a_fbs_id.ptr)
+		_ecn_fbs_del(a_fbs_id);
+
+	return a_ret;
+}
+
+/*
+ * èÝf[^Ìæ¾
+ */
+ER ecn_get_brk_dat(T_EDATA *pk_esv, void *p_buf, int fa_bufsz, int *p_datsz)
+{
+	ECN_FBS_ID	a_fbs;
+	ER			a_ret;
+	ECN_FBS_SSIZE_T		a_len;
+
+	if (p_datsz)
+		*p_datsz = 0;
+	if (!pk_esv)
+		return E_PAR;
+
+	a_fbs.ptr = (T_ECN_FST_BLK *)pk_esv;
+	if (a_fbs.ptr->hdr.type != ECN_MSG_USER_BREAK) {
+		ECN_DBG_PUT "ecn_get_brk_dat: fbs-type:%d != ECN_MSG_USER_BREAK",
+			a_fbs.ptr->hdr.type ECN_DBG_END;
+		return E_PAR;
+	}
+
+	/* ÇÝæèÊuðæªÉß· */
+	a_ret = _ecn_fbs_set_rpos(a_fbs, 0);
+	if (a_ret) {
+		ECN_DBG_PUT "_ecn_fbs_set_rpos(*, 0) result = %d:%s",
+			a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		return a_ret;
+	}
+
+	/* tf[^ðÇÝÞ */
+	if (p_buf && 0 < fa_bufsz) {
+		a_len = 0;
+		a_ret = _ecn_fbs_get_data(a_fbs, p_buf, fa_bufsz, &a_len);
+		if (a_ret || !a_len) {
+			ECN_DBG_PUT "_ecn_fbs_get_data(*, p_buf, fa_bufsz) result = %d:%s",
+				a_ret, itron_strerror(a_ret) ECN_DBG_END;
+			return E_PAR;
+		}
+		*p_datsz = a_len;
+	}
+
+	return E_OK;
+}
+
+#ifndef ECN_USER_DATA_PROP_SET
+/*
+ * f[^ÝèÖ
+ */
+int ecn_data_prop_set(const EPRPINIB *item, const void *src, int size, bool_t *anno)
+{
+	if (size > item->eprpsz)
+		size = item->eprpsz;
+
+	if (*anno)
+		*anno = memcmp((uint8_t *)item->exinf, src, size) != 0;
+
+	memcpy((uint8_t *)item->exinf, src, size);
+
+	return size;
+}
+#endif
+
+#ifndef ECN_USER_DATA_PROP_GET
+/*
+ * f[^æ¾Ö
+ */
+int ecn_data_prop_get(const EPRPINIB *item, void *dst, int size)
+{
+	if (size > item->eprpsz)
+		size = item->eprpsz;
+
+	memcpy(dst, (uint8_t *)item->exinf, size);
+
+	return size;
+}
+#endif
Index: uKadecot/trunk/ecnl_ssp/echonet.h
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet.h	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet.h	(revision 101)
@@ -0,0 +1,447 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#ifndef ECHONET_H
+#define ECHONET_H
+
+#include <t_stddef.h>
+#include <t_syslog.h>
+
+#include "echonet_rename.h"
+#include "echonet_class.h"
+#include "echonet_app_config.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define E_BRK		(-100)
+
+#define EOBJ_NULL 0x00
+#define EOBJ_LOCAL_NODE 0x01			/* ©m[h */
+#define EOBJ_SYNC_REMOTE_NODE 0x02		/* ¼m[h */
+#define EOBJ_ASYNC_REMOTE_NODE 0x04		/* ¼m[hiñ¯új */
+#define EOBJ_DEVICE 0x08				/* @íIuWFNg */
+
+#define EPC_NONE 0x00
+#define EPC_RULE_SET 0x01				/* ANZX[ Set */
+#define EPC_RULE_GET 0x02				/* ANZX[ Get */
+#define EPC_RULE_ANNO 0x04				/* ANZX[ Anno */
+#define EPC_ANNOUNCE 0x40				/* óÔÏ»Êm */
+#define EPC_VARIABLE 0x80				/* ÂÏ·f[^ */
+
+typedef enum _echonet_enod_id
+{
+	ENOD_NOT_MATCH_ID	= -1,
+	ENOD_MULTICAST_ID	= 0,			/* }`LXgAhXID */
+	ENOD_LOCAL_ID		= 1,			/* ©m[hAhXID */
+	ENOD_API_ID			= 2,			/* APIAhXID */
+	ENOD_REMOTE_ID		= 3,			/* ¼m[hAhXID */
+} ECN_ENOD_ID;
+
+/* ECHONET LiteKi */
+typedef enum
+{
+	ECN_EDH1_ECHONET_LITE	=	0x10
+} ECN_EHD1_ECL_VERSION;
+
+/* d¶`®1/2 */
+typedef enum
+{
+	ECN_EDH2_FORMAT_1 = 0x81,	/* d¶`®1 */
+	ECN_EDH2_FORMAT_2 = 0x82	/* d¶`®2 */
+} ECN_EHD2_FORMAT;
+
+/* ECHONET LiteT[rXR[h */
+typedef enum _echonet_service_code
+{
+	ESV_NOP				=	0,		/* (@\wèÈµ)							*/
+	ESV_SET_I			=	0x60,	/* vpeBl«Ývisvj		*/
+	ESV_SET_C			=	0x61,	/* vpeBl«Ývivj		*/
+	ESV_GET				=	0x62,	/* vpeBlÇÝoµv					*/
+	ESV_INF_REQ			=	0x63,	/* vpeBlÊmv						*/
+	ESV_SET_GET			=	0x6E,	/* vpeBl«ÝEÇÝoµv		*/
+	ESV_SET_RES			=	0x71,	/* vpeBl«Ý					*/
+	ESV_GET_RES			=	0x72,	/* vpeBlÇÝoµ					*/
+	ESV_INF				=	0x73,	/* vpeBlÊm							*/
+	ESV_INFC			=	0x74,	/* vpeBlÊmivj				*/
+	ESV_INFC_RES		=	0x7A,	/* vpeBlÊm						*/
+	ESV_SET_GET_RES		=	0x7E,	/* vpeBl«ÝEÇÝoµ		*/
+	ESV_SET_I_SNA		=	0x50,	/* vpeBl«ÝvsÂ			*/
+	ESV_SET_C_SNA		=	0x51,	/* vpeBl«ÝvsÂ			*/
+	ESV_GET_SNA			=	0x52,	/* vpeBlÇÝoµsÂ				*/
+	ESV_INF_SNA			=	0x53,	/* vpeBlÊmsÂ					*/
+	ESV_SET_GET_SNA		=	0x5E	/* vpeBl«ÝEÇÝoµsÂ	*/
+} ECN_SRV_CODE;
+
+#ifdef __CA850__
+#pragma pack(1)
+#elif __RX
+#pragma pack
+#elif _MSC_VER
+#pragma pack(push, 1)
+#endif
+
+/*
+ *  ECHONET Lited¶wb_[
+ */
+typedef struct
+{
+	uint8_t	ehd1;		/* ECHONET Lited¶wb_[1 ECN_EHD1_ECL_VERSION */
+	uint8_t	ehd2;		/* ECHONET Lited¶wb_[2 ECN_EHD2_FORMAT */
+	uint16_t	tid;	/* gUNVID */
+} T_ECN_HDR;
+
+/*
+ *  ECHONET LiteIuWFNgR[h
+ */
+typedef struct
+{
+	uint8_t	eojx1;		/* NXO[vR[h */
+	uint8_t	eojx2;		/* NXR[h */
+	uint8_t	eojx3;		/* CX^XR[h */
+} T_ECN_EOJ;
+
+/*
+ *  ECHONET Litef[^wb_[
+ */
+typedef struct
+{
+	T_ECN_EOJ	seoj;	/* M³ECHONET LiteIuWFNgwè */
+	T_ECN_EOJ	deoj;	/* èæECHONET LiteIuWFNgwè */
+	uint8_t	esv;		/* ECHONET LiteT[rX (ECN_SRV_CODE) */
+	uint8_t	opc;		/* vpeB */
+} T_ECN_EDATA_BODY;
+
+/*
+ *  ECHONET LitevpeB
+ */
+typedef struct
+{
+	uint8_t	epc;		/* ECHONET LitevpeBR[h */
+	uint8_t	pdc;		/* EDTÌoCg */
+	/*void	*p_edt;*/	/* vpeBlf[^ */
+} T_ECN_PRP;
+
+/*
+ *  ECHONET Litef[^
+ */
+typedef struct
+{
+	T_ECN_HDR			ecn_hdr;
+	T_ECN_EDATA_BODY	edata;
+	T_ECN_PRP			ecn_prp;
+} T_ECN_EDT_HDR;
+
+/*
+ *  ECHONET Lite d¶
+ */
+typedef struct echonet_object_data
+{
+	uint8_t _private1[192];
+	T_ECN_EDT_HDR hdr;
+	uint8_t _private2[64 - sizeof(T_ECN_EDT_HDR)];
+} T_EDATA;
+
+#ifdef __CA850__
+#pragma pack(8)
+#elif __RX
+#pragma unpack
+#elif _MSC_VER
+#pragma pack(pop)
+#endif
+
+/*
+ *  d¶ðÍCe[^[
+ */
+typedef struct echonet_epc_enumerator
+{
+	T_EDATA *pk_esv;
+	uint8_t count;			/* ¡ÇÝæèÌubNÉ évpeB */
+	uint8_t got_ct;			/* ¡ÇÝæèÌubNÅAÇÝæÁ½ */
+	uint8_t next_blk_ct;	/* ã±ubN */
+	uint8_t is_eof;			/* I[ÉBµ½Añ0 */
+	int cur;
+} T_ENUM_EPC;
+
+typedef struct echonet_property_initialization_block EPRPINIB;
+
+/*
+ * ECHONET Lite vpeBÌÝèÖ
+ */
+typedef int (EPRP_SETTER)(const EPRPINIB *item, const void *src, int size, bool_t *anno);
+
+/*
+ * ECHONET Lite vpeBÌæ¾Ö
+ */
+typedef int (EPRP_GETTER)(const EPRPINIB *item, void *dst, int size);
+
+/*
+ *  ECHONET Lite vpeBú»ubN
+ */
+struct echonet_property_initialization_block
+{
+	uint8_t		eprpcd;			/* ECHONET Lite vpeBR[h */
+	ATR			eprpatr;		/* ECHONET Lite vpeB®« */
+	uint8_t		eprpsz;			/* ECHONET Lite vpeBÌTCY */
+	intptr_t	exinf;			/* ECHONET Lite vpeBÌg£îñ */
+	EPRP_SETTER	*eprpset;		/* ECHONET Lite vpeBÌÝèÖ */
+	EPRP_GETTER	*eprpget;		/* ECHONET Lite vpeBÌæ¾Ö */
+};
+
+#define TMIN_EOBJID		1		/* ECHONET Lite IuWFNgIDÌÅ¬l */
+
+/*
+ *  ECHONET Lite IuWFNgú»ubN
+ */
+typedef struct echonet_object_initialization_block
+{
+	ATR			eobjatr;		/* ECHONET Lite IuWFNg®« */
+	ID			enodid;			/* ECHONET Lite m[hvt@CIuWFNgID */
+	intptr_t	exinf;			/* ECHONET Lite IuWFNgÌg£îñ */
+	uint8_t		eojx1;			/* ECHONET Lite IuWFNgÌNXO[vR[h */
+	uint8_t		eojx2;			/* ECHONET Lite IuWFNgÌNXR[h */
+	uint8_t		eojx3;			/* ECHONET Lite IuWFNgÌCX^XR[h */
+	const EPRPINIB *eprp;		/* ECHONET Lite vpeBú»ubN */
+	uint_t		eprpcnt;		/* ECHONET Lite vpeBú»ubN */
+} EOBJINIB;
+
+/*
+ *  ECHONET Lite m[hÇubN
+ */
+typedef struct echonet_object_control_block
+{
+	const EOBJINIB *profile;	/* ECHONET Lite m[hvt@CÖÌ|C^ */
+	const EOBJINIB **eobjs;		/* ECHONET Lite IuWFNgXgÖÌ|C^ */
+	uint_t		eobjcnt;		/* ECHONET Lite IuWFNg */
+} EOBJCB;
+
+/*
+ *  ECHONET Lite m[hÆIPAhXÌÎîñubNÌè`
+ */
+typedef struct echonet_node_address_block
+{
+	bool_t		inuse;			/* gpóµ */
+	uint8_t		ipaddr[16];		/* IPAhX */
+} ENODADRB;
+
+/*
+ *  ECHONET Lite IuWFNgIDÌÅåliechonet_cfg.cj
+ */
+extern const ID tmax_eobjid;
+
+/*
+ *  ECHONET Lite IuWFNgú»ubNÌGAiechonet_cfg.cj
+ */
+extern const EOBJINIB eobjinib_table[];
+
+/*
+ *  ECHONET Litem[hÇubNÌ
+ */
+extern const int tnum_enodid;
+
+/*
+ *  ECHONET Lite IuWFNgÇubNÌGAiechonet_cfg.cj
+ */
+extern EOBJCB eobjcb_table[];
+
+/*
+ * ECHONET Litem[hÆIPAhXÌÎîñÌ
+ */
+extern const int tnum_enodadr;
+
+/*
+ *  ECHONET Lite m[hÆIPAhXÌÎîñubNÌGAiechonet_cfg.cj
+ */
+extern ENODADRB enodadrb_table[];
+
+/*
+ * ECHONET Lite J[lIuWFNgID
+ */
+extern const ID ecn_svc_taskid;
+extern const ID ecn_udp_taskid;
+extern const ID ecn_api_mailboxid;
+extern const ID ecn_svc_mailboxid;
+extern const ID ecn_udp_mailboxid;
+extern const ID ecn_svc_cychdrid;
+extern const ID ecn_udp_cychdrid;
+
+/*
+ *  ECHONET Lite IuWFNgÇubN©çECHONET Lite IuWFNgIDðæèo·½ßÌ}N
+ */
+#define	EOBJID(p_eobjcb)	((ID)(((p_eobjcb) - eobjcb_table) + TMIN_EOBJID))
+
+/*
+ *  ECHONET Lite IuWFNg@\Ìú»
+ */
+extern void initialize_echonet_object(void);
+
+typedef EOBJINIB T_REOBJ;
+
+typedef EPRPINIB T_RPRP;
+
+typedef ENODADRB T_ENOD_ADDR;
+
+/*
+ * ECHONET LiteT[rXJn
+ */
+ER ecn_sta_svc();
+
+/*
+ * ECHONETIuWFNgQÆ
+ */
+ER ecn_ref_eobj(ID eobjid, T_REOBJ *pk_eobj);
+
+/*
+ * ECHONETvpeBQÆ
+ */
+ER ecn_ref_eprp(ID eobjid, uint8_t epc, T_RPRP *pk_eprp);
+
+/*
+ * vpeBl«Ývisvjd¶ì¬
+ */
+ER ecn_esv_seti(T_EDATA **ppk_esv, ID eobjid, uint8_t epc, uint8_t pdc, const void *p_edt);
+
+/*
+ * vpeBl«Ývivjd¶ì¬
+ */
+ER ecn_esv_setc(T_EDATA **ppk_esv, ID eobjid, uint8_t epc, uint8_t pdc, const void *p_edt);
+
+/*
+ * vpeBlÇÝoµvd¶ì¬
+ */
+ER ecn_esv_get(T_EDATA **ppk_esv, ID eobjid, uint8_t epc);
+
+/*
+ * vpeBlÊmvd¶ì¬
+ */
+ER ecn_esv_inf_req(T_EDATA **ppk_esv, ID eobjid, uint8_t epc);
+
+/*
+ * vpeBl«ÝEÇÝoµvd¶ì¬
+ */
+ER ecn_esv_set_get(T_EDATA **ppk_esv, ID eobjid, uint8_t epc, uint8_t pdc, const void *p_edt);
+
+/*
+ * vpeBl«ÝEÇÝoµvd¶ÜèÔµwè
+ */
+ER ecn_trn_set_get(T_EDATA *pk_esv, int *p_trn_pos);
+
+/*
+ * vpeBl«ÝEÇÝoµvd¶I¹wè
+ */
+ER ecn_end_set_get(T_EDATA *pk_esv, int trn_pos);
+
+/*
+ * vpeBlÊmivjd¶ì¬
+ */
+ER ecn_esv_infc(T_EDATA **ppk_esv, ID eobjid, ID seobjid, uint8_t sepc);
+
+/*
+ * vd¶ÖÌvpeBwèÇÁ
+ */
+ER ecn_add_epc(T_EDATA *pk_esv, uint8_t epc);
+
+/*
+ * vd¶ÖÌvpeBf[^ÇÁ
+ */
+ER ecn_add_edt(T_EDATA *pk_esv, uint8_t epc, uint8_t pdc, const void *p_edt);
+
+/*
+ * vd¶ÌM
+ */
+ER ecn_snd_esv(T_EDATA *pk_esv);
+
+/*
+ * d¶ÌóM|[O
+ */
+ER ecn_prcv_esv(T_EDATA **ppk_esv);
+
+/*
+ * d¶Ìjü
+ */
+ER ecn_rel_esv(T_EDATA *pk_esv);
+
+/*
+ * d¶ÌM³m[hðæ¾·é
+ */
+ID ecn_get_enod(T_EDATA *pk_esv);
+
+/*
+ * d¶ÌM³@íIuWFNgðæ¾·é
+ */
+ID ecn_get_eobj(T_EDATA *pk_esv);
+
+/*
+ * d¶ðÍCe[^[ú»
+ */
+ER ecn_itr_ini(T_ENUM_EPC *pk_itr, T_EDATA *pk_esv);
+
+/*
+ * d¶ðÍCe[^[CNg
+ */
+ER ecn_itr_nxt(T_ENUM_EPC *pk_itr, uint8_t *p_epc, uint8_t *p_pdc, void *p_edt);
+
+/*
+ * d¶Ò¿ÌèÝM
+ */
+ER ecn_brk_wai(const void *p_dat, int datsz);
+
+/*
+ * èÝf[^Ìæ¾
+ */
+ER ecn_get_brk_dat(T_EDATA *pk_esv, void *p_buf, int bufsz, int *p_datsz);
+
+/*
+ * f[^ÝèÖ
+ */
+int ecn_data_prop_set(const EPRPINIB *item, const void *src, int size, bool_t *anno);
+
+/*
+ * f[^æ¾Ö
+ */
+int ecn_data_prop_get(const EPRPINIB *item, void *dst, int size);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // ECHONET_H
Index: uKadecot/trunk/ecnl_ssp/echonet.tf
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet.tf	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet.tf	(revision 101)
@@ -0,0 +1,621 @@
+$ =====================================================================
+$ 
+$  TOPPERS ECHONET Lite Communication Middleware
+$ 
+$  Copyright (C) 2014 Cores Co., Ltd. Japan
+$ 
+$  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+$  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+$  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+$       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+$      XR[hÉÜÜêÄ¢é±ÆD
+$  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+$      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+$      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+$      Ì³ÛØKèðfÚ·é±ÆD
+$  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+$      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+$      ÆD
+$    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+$        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+$        ñ·é±ÆD
+$  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+$      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+$      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+$      ÆÓ·é±ÆD
+$ 
+$  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+$  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+$  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+$  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+$  ÌÓCðíÈ¢D
+$ 
+$  @(#) $Id$
+$ 
+$ =====================================================================
+
+$ =====================================================================
+$ echonet_cfg.hÌ¶¬
+$ =====================================================================
+
+$FILE "echonet_cfg.h"$
+/* echonet_cfg.h */$NL$
+#ifndef TOPPERS_ECHONET_CFG_H$NL$
+#define TOPPERS_ECHONET_CFG_H$NL$
+$NL$
+
+#include "echonet_app_config.h"$NL$
+$NL$
+
+$ m[hXgÌì¬
+$ENOD.LIST = {}$
+$LOCAL_NODE = {}$
+$REMOTE_NODE = {}$
+
+$FOREACH eobjid EOBJ.ORDER_LIST$
+$	// m[hvt@CIuWFNgÌê
+	$IF (EOBJ.EOBJATR[eobjid] & EOBJ_LOCAL_NODE) != 0$
+		$LOCAL_NODE = APPEND(LOCAL_NODE, eobjid)$
+$	// @íIuWFNgÌê
+	$ELIF (EOBJ.EOBJATR[eobjid] & (EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE)) != 0$
+		$REMOTE_NODE = APPEND(REMOTE_NODE, eobjid)$
+	$END$
+$END$
+
+$	// [JÌm[hvt@CÍPÂ¾¯
+$IF LENGTH(LOCAL_NODE) != 1$
+	$ERROR$Local node must be only one.$END$
+$END$
+
+$ENOD.LIST = APPEND(LOCAL_NODE, REMOTE_NODE)$
+
+#define TNUM_ENODID	$LENGTH(ENOD.LIST)$$NL$
+$NL$
+
+#define TNUM_EOBJID	$LENGTH(EOBJ.ID_LIST)$$NL$
+$NL$
+$FOREACH id EOBJ.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$NL$
+
+$FOREACH eobjid EOBJ.ID_LIST$
+	$eprp_list = {}$
+	$prp_map_cnt = 3$
+$	// m[hvt@CÌê
+	$IF (EOBJ.EOBJATR[eobjid] & (EOBJ_LOCAL_NODE|EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE)) != 0$
+		$prp_map_cnt = prp_map_cnt + 5$
+	$END$
+
+	$FOREACH eprpno EPRP.ID_LIST$
+		$IF EQ(EPRP.EOBJID[eprpno], eobjid)$
+			$eprp_list = APPEND(eprp_list, eprpno)$
+		$END$
+
+		$IF (EPRP.EPRPCD[eprpno] == 0x9D) || (EPRP.EPRPCD[eprpno] == 0x9E) || (EPRP.EPRPCD[eprpno] == 0x9F)$
+			$prp_map_cnt = prp_map_cnt - 1$
+		$END$
+
+$		// m[hvt@CÌê
+		$IF (EOBJ.EOBJATR[eobjid] & (EOBJ_LOCAL_NODE|EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE)) != 0$
+			$IF (EPRP.EPRPCD[eprpno] >= 0xD3) && (EPRP.EPRPCD[eprpno] <= 0xD7)$
+				$prp_map_cnt = prp_map_cnt - 1$
+			$END$
+		$END$
+	$END$
+
+	#define TNUM_$EOBJ.EOBJID[eobjid]$_EPRPNO	$LENGTH(eprp_list) + prp_map_cnt$$NL$
+$END$$NL$
+
+$FOREACH enodid ENOD.LIST$
+	$eobj_count = 0$
+
+	$FOREACH eobjid EOBJ.ID_LIST$
+		$IF EQ(EOBJ.ENODID[eobjid], enodid)$
+			$eobj_count = eobj_count + 1$
+		$END$
+	$END$
+
+	#define TNUM_$EOBJ.EOBJID[enodid]$_EOBJNO	$eobj_count$$NL$
+$END$$NL$
+
+#ifndef TNUM_ENODADR$NL$
+#define TNUM_ENODADR 100$NL$
+#endif$NL$
+$NL$
+
+#endif /* TOPPERS_ECHONET_CFG_H */$NL$
+
+$ =====================================================================
+$ echonet_cfg.cÌ¶¬
+$ =====================================================================
+
+$FILE "echonet_cfg.c"$
+/* echonet_cfg.c */$NL$
+#include "echonet.h"$NL$
+#include "echonet_cfg.h"$NL$
+$NL$
+
+$ 
+$  CN[hfBNeBui#includej
+$ 
+/*$NL$
+$SPC$*  Include Directives (#include)$NL$
+$SPC$*/$NL$
+$NL$
+$INCLUDES$
+$NL$
+
+$ 
+$  IuWFNgÌIDÔðÛ·éÏ
+$ 
+$IF USE_EXTERNAL_ID$
+	/*$NL$
+	$SPC$*  Variables for Object ID$NL$
+	$SPC$*/$NL$
+	$NL$
+	$FOREACH id EOBJ.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+$END$
+
+$ 
+$  ECHONET LitevpeB
+$ 
+/*$NL$
+$SPC$*  ECHONET Lite Property Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$INCLUDE "echonet_chk.tf"$
+
+$ ECHONET LitevpeBú»ubNÌ¶¬
+$IF LENGTH(EOBJ.ID_LIST) && LENGTH(EPRP.ID_LIST)$
+	$FOREACH enodid ENOD.LIST$
+		$INST_LIST = {}$
+		$CLASS_LIST = {}$
+
+		$FOREACH eobjid EOBJ.ID_LIST$
+			$IF EQ(EOBJ.ENODID[eobjid], enodid)$
+				$INST_LIST = APPEND(INST_LIST, eobjid)$
+
+				$M = -1$
+				$FOREACH id CLASS_LIST$
+					$IF (EOBJ.EOJX1[eobjid] == EOBJ.EOJX1[id]) && (EOBJ.EOJX2[eobjid] == EOBJ.EOJX2[id])$
+						$M = id$
+					$END$
+				$END$
+				$IF M == -1$
+					$CLASS_LIST = APPEND(CLASS_LIST, eobjid)$
+				$END$
+			$END$
+		$END$
+
+		/*$NL$
+		$SPC$* CX^X$NL$
+		$SPC$*/$NL$
+		$inst_list_len = LENGTH(INST_LIST)$
+		const uint8_t _echonet_$EOBJ.EOBJID[enodid]$_inst_count[] = {$NL$
+			$TAB$$FORMAT("0x%1$x, 0x%2$x, 0x%3$x", (inst_list_len & 0xFF0000) >> 16, (inst_list_len & 0xFF00) >> 8, inst_list_len & 0xFF)$$NL$
+		};$NL$
+		$NL$
+
+		/*$NL$
+		$SPC$* NX$NL$
+		$SPC$*/$NL$
+$		// m[hvt@CàÜßéi + 1j
+		$class_list_len = LENGTH(CLASS_LIST) + 1$
+		const uint8_t _echonet_$EOBJ.EOBJID[enodid]$_class_count[] = {$NL$
+			$TAB$$FORMAT("0x%1$x, 0x%2$x", (class_list_len & 0xFF00) >> 8, class_list_len & 0xFF)$$NL$
+		};$NL$
+		$NL$
+
+		/*$NL$
+		$SPC$* CX^XXg$NL$
+		$SPC$*/$NL$
+		$pos = 0$
+		$IF inst_list_len > 84$
+			$ERROR EPRP.TEXT_LINE[eprpno]$E_PAR: $FORMAT(_("instance list count overflow, %1% %2% > 84"), enodid, inst_list_len)$$END$
+		$END$
+		const uint8_t _echonet_$EOBJ.EOBJID[enodid]$_inst_list[] = {$NL$
+		$IF inst_list_len > 0xFE$
+			$TAB$0xFF, 
+		$ELSE$
+			$TAB$$FORMAT("0x%1$x, ", inst_list_len)$
+		$END$
+		$JOINEACH id INST_LIST ", "$
+			$FORMAT("0x%1$x, 0x%2$x, 0x%3$x", +EOBJ.EOJX1[id], +EOBJ.EOJX2[id], +EOBJ.EOJX3[id])$
+		$END$$NL$
+		};$NL$
+		$NL$
+
+		/*$NL$
+		$SPC$* NXXg$NL$
+		$SPC$*/$NL$
+		$pos = 0$
+		$class_list_len = LENGTH(CLASS_LIST)$
+		$IF class_list_len > 84$
+			$ERROR EPRP.TEXT_LINE[eprpno]$E_PAR: $FORMAT(_("class list count overflow, %1% %2% > 84"), enodid, class_list_len)$$END$
+		$END$
+		const uint8_t _echonet_$EOBJ.EOBJID[enodid]$_class_list[] = {$NL$
+		$IF class_list_len > 0xFE$
+			$TAB$0xFF, 
+		$ELSE$
+			$TAB$$FORMAT("0x%1$x, ", class_list_len)$
+		$END$
+		$JOINEACH id CLASS_LIST ", "$
+			$FORMAT("0x%1$x, 0x%2$x", +EOBJ.EOJX1[id], +EOBJ.EOJX2[id])$
+		$END$$NL$
+		};$NL$
+		$NL$
+	$END$
+
+	$FOREACH eobjid EOBJ.ID_LIST$
+		$eprp_list = {}$
+		$anno_list = {}$
+		$set_list = {}$
+		$get_list = { 0x9D, 0x9E, 0x9F }$
+		$FOREACH i { 0 , 1 , ... , 15 }$
+			$anno_map[i] = 0x00$
+			$set_map[i] = 0x00$
+			$get_map[i] = 0x00$
+		$END$
+$		// 0x9DA0x9EA0x9FÍONÉµÄ¨­
+		$FOREACH i { 13 , 14 , 15 }$
+			$anno_map[i] = anno_map[i] | 0x02$
+			$get_map[i] = get_map[i] | 0x02$
+		$END$
+$		// m[hvt@CÌê
+		$IF (EOBJ.EOBJATR[eobjid] & (EOBJ_LOCAL_NODE|EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE)) != 0$
+			$anno_map[5] = anno_map[5] | 0x20$
+			$anno_list = APPEND(anno_list, { 0xD5 })$
+			$FOREACH i { 3 , 4 , 6 , 7 }$
+				$get_map[i] = get_map[i] | 0x20$
+			$END$
+			$get_list = APPEND(get_list, { 0xD3, 0xD4, 0xD6, 0xD7 })$
+		$END$
+
+		$FOREACH eprpno EPRP.ID_LIST$
+			$IF EQ(EPRP.EOBJID[eprpno], eobjid)$
+$				// (0x80 <= eprpcd && eprpcd <= 0xFF)ÅÈ¢êiE_PARj
+				$IF !(0x80 <= EPRP.EPRPCD[eprpno] && EPRP.EPRPCD[eprpno] <= 0xFF)$
+					$ERROR EPRP.TEXT_LINE[eprpno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eprpcd", EPRP.EPRPCD[eprpno], eprpno, "ECN_DEF_EPRP")$$END$
+				$END$
+
+$				// eprpatrªimEPC_RULE_SET] | [EPC_RULE_GET] | [EPC_RULE_ANNO] | [EPC_ANNOUNCEn| [EPC_VARIABLE]jÅÈ¢êiE_RSATRj
+				$IF (EPRP.EPRPATR[eprpno] & ~(EPC_RULE_SET|EPC_RULE_GET|EPC_RULE_ANNO|EPC_ANNOUNCE|EPC_VARIABLE)) != 0$
+					$ERROR EPRP.TEXT_LINE[eprpno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eprpatr", EPRP.EPRPATR[eprpno], eprpno, "ECN_DEF_EPRP")$$END$
+				$END$
+
+$				// (0 <= eprpsz && eprpsz <= 255)ÅÈ¢êiE_PARj
+				$IF !(0 <= EPRP.EPRPSZ[eprpno] && EPRP.EPRPSZ[eprpno] <= 255)$
+					$ERROR EPRP.TEXT_LINE[eprpno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eprpsz", EPRP.EPRPSZ[eprpno], eprpno, "ECN_DEF_EPRP")$$END$
+				$END$
+
+$				// vpeB}bvÉÝè
+				$pos = EPRP.EPRPCD[eprpno] & 0xF$
+				$bit = (EPRP.EPRPCD[eprpno] >> 4) - 8$
+				$IF (EPRP.EPRPATR[eprpno] & EPC_ANNOUNCE) != 0$
+					$anno_list = APPEND(anno_list, EPRP.EPRPCD[eprpno])$
+					$anno_map[pos] = anno_map[pos] | (1 << bit)$
+				$END$
+				$IF (EPRP.EPRPATR[eprpno] & EPC_RULE_SET) != 0$
+					$set_list = APPEND(set_list, EPRP.EPRPCD[eprpno])$
+					$set_map[pos] = set_map[pos] | (1 << bit)$
+				$END$
+				$IF (EPRP.EPRPATR[eprpno] & EPC_RULE_GET) != 0$
+					$get_list = APPEND(get_list, EPRP.EPRPCD[eprpno])$
+					$get_map[pos] = get_map[pos] | (1 << bit)$
+				$END$
+
+				$eprp_list = APPEND(eprp_list, eprpno)$
+			$END$
+		$END$
+
+$		// K{AiEXvpeBª é©`FbN
+		$must_anno_map = GetPropertyInfo(EOBJ.EOJX1[eobjid], EOBJ.EOJX2[eobjid], EPC_ANNOUNCE)$
+		$i = 0$
+		$WHILE i < LENGTH(ResultOfGetPropertyInfo)$
+			$j = FIND(anno_list, +AT(ResultOfGetPropertyInfo, i))$
+			$IF !LENGTH(j)$
+				$ERROR$$FORMAT("Required announce property (0x%1$x) of %2% is not defined.", +AT(ResultOfGetPropertyInfo, i), eobjid)$$END$
+			$END$
+			$i = i + 1$
+		$END$
+
+$		// K{SETvpeBª é©`FbN
+		$must_set_map = GetPropertyInfo(EOBJ.EOJX1[eobjid], EOBJ.EOJX2[eobjid], EPC_RULE_SET)$
+		$i = 0$
+		$WHILE i < LENGTH(ResultOfGetPropertyInfo)$
+			$j = FIND(set_list, +AT(ResultOfGetPropertyInfo, i))$
+			$IF !LENGTH(j)$
+				$ERROR$$FORMAT("Required set property (0x%1$x) of %2% is not defined.", +AT(ResultOfGetPropertyInfo, i), eobjid)$$END$
+			$END$
+			$i = i + 1$
+		$END$
+
+$		// K{GETvpeBª é©`FbN
+		$must_get_map = GetPropertyInfo(EOBJ.EOJX1[eobjid], EOBJ.EOJX2[eobjid], EPC_RULE_GET)$
+		$i = 0$
+		$WHILE i < LENGTH(ResultOfGetPropertyInfo)$
+			$j = FIND(get_list, +AT(ResultOfGetPropertyInfo, i))$
+			$IF !LENGTH(j)$
+				$ERROR$$FORMAT("Required get property (0x%1$x) of %2% is not defined.", +AT(ResultOfGetPropertyInfo, i), eobjid)$$END$
+			$END$
+			$i = i + 1$
+		$END$
+
+		/*$NL$
+		$SPC$* AiEXvpeB}bv$NL$
+		$SPC$*/$NL$
+		$anno_list = LSORT(anno_list, "compare")$
+		$anno_len = LENGTH(anno_list)$
+		const uint8_t _echonet_$EOBJ.EOBJID[eobjid]$_anno_prpmap[] = {$NL$
+		$TAB$$FORMAT("0x%1$x" , +anno_len)$, 
+		$IF anno_len < 16$
+			$JOINEACH eprpcd anno_list ", "$
+				$FORMAT("0x%1$x" , +eprpcd)$
+			$END$$NL$
+			$anno_len = anno_len + 1$
+		$ELSE$
+			$JOINEACH i anno_map ", "$
+				$FORMAT("0x%1$x" , +anno_map[i])$
+			$END$$NL$
+			$anno_len = 17$
+		$END$
+		};$NL$
+		$NL$
+
+		/*$NL$
+		$SPC$* SETvpeB}bv$NL$
+		$SPC$*/$NL$
+		$set_list = LSORT(set_list, "compare")$
+		$set_len = LENGTH(set_list)$
+		const uint8_t _echonet_$EOBJ.EOBJID[eobjid]$_set_prpmap[] = {$NL$
+		$TAB$$FORMAT("0x%1$x" , +set_len)$, 
+		$IF set_len < 16$
+			$JOINEACH eprpcd set_list ", "$
+				$FORMAT("0x%1$x" , +eprpcd)$
+			$END$$NL$
+			$set_len = set_len + 1$
+		$ELSE$
+			$JOINEACH i set_map ", "$
+				$FORMAT("0x%1$x" , +set_map[i])$
+			$END$$NL$
+			$set_len = 17$
+		$END$
+		};$NL$
+		$NL$
+
+		/*$NL$
+		$SPC$* GETvpeB}bv$NL$
+		$SPC$*/$NL$
+		$get_list = LSORT(get_list, "compare")$
+		$get_len = LENGTH(get_list)$
+		const uint8_t _echonet_$EOBJ.EOBJID[eobjid]$_get_prpmap[] = {$NL$
+		$TAB$$FORMAT("0x%1$x" , +get_len)$, 
+		$IF get_len < 16$
+			$JOINEACH eprpcd get_list ", "$
+				$FORMAT("0x%1$x" , +eprpcd)$
+			$END$$NL$
+			$get_len = get_len + 1$
+		$ELSE$
+			$JOINEACH i { 0 , 1 , ... , 15 } ", "$
+				$FORMAT("0x%1$x" , +get_map[i])$
+			$END$$NL$
+			$get_len = 17$
+		$END$
+		};$NL$
+		$NL$
+
+		/*$NL$
+		$SPC$* vpeBè`$NL$
+		$SPC$*/$NL$
+		const EPRPINIB _echonet_$EOBJ.EOBJID[eobjid]$_eprpinib_table[TNUM_$EOBJ.EOBJID[eobjid]$_EPRPNO] = {$NL$
+		$FOREACH eprpno eprp_list$
+$			// ECHONET LitevpeBú»ubN
+			$TAB${ ($EPRP.EPRPCD[eprpno]$), ($EPRP.EPRPATR[eprpno]$), ($EPRP.EPRPSZ[eprpno]$), ($EPRP.EXINF[eprpno]$), ($EPRP.EPRPSET[eprpno]$), ($EPRP.EPRPGET[eprpno]$) },$NL$
+		$END$
+$		// óÔAiEXvpeB}bv
+		$TAB${ (0x9D), (EPC_RULE_GET), $FORMAT("0x%1$x" , +anno_len)$, (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_anno_prpmap, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) },$NL$
+$		// SetvpeB}bv
+		$TAB${ (0x9E), (EPC_RULE_GET), $FORMAT("0x%1$x" , +set_len)$, (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_set_prpmap, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) },$NL$
+$		// GetvpeB}bv
+		$TAB${ (0x9F), (EPC_RULE_GET), $FORMAT("0x%1$x" , +get_len)$, (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_get_prpmap, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) }
+$		// m[hvt@CÌê
+		$IF (EOBJ.EOBJATR[eobjid] & (EOBJ_LOCAL_NODE|EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE)) != 0$
+			,$NL$
+$			// CX^X
+			$TAB${ (0xD3), (EPC_RULE_GET), (3), (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_inst_count, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) },$NL$
+$			// NX
+			$TAB${ (0xD4), (EPC_RULE_GET), (2), (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_class_count, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) },$NL$
+$			// CX^XXgÊm
+			$TAB${ (0xD5), (EPC_RULE_ANNO), sizeof(_echonet_$EOBJ.EOBJID[eobjid]$_inst_list), (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_inst_list, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) },$NL$
+$			// CX^XXgS
+			$TAB${ (0xD6), (EPC_RULE_GET), sizeof(_echonet_$EOBJ.EOBJID[eobjid]$_inst_list), (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_inst_list, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) },$NL$
+$			// NXXgS
+			$TAB${ (0xD7), (EPC_RULE_GET), sizeof(_echonet_$EOBJ.EOBJID[eobjid]$_class_list), (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_class_list, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) }$NL$
+		$ELSE$
+			$NL$
+		$END$
+		};$NL$
+		$NL$
+	$END$$NL$
+
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const EPRPINIB, _echonet_eprpinib_table);$NL$
+$END$
+
+$ 
+$  ECHONET LiteIuWFNg
+$ 
+/*$NL$
+$SPC$*  ECHONET Lite Object Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ECHONET LiteIuWFNgIDÔÌÅål
+const ID _echonet_tmax_eobjid = (TMIN_EOBJID + TNUM_EOBJID - 1);$NL$
+$NL$
+
+$ ECHONET LiteIuWFNgú»ubNÌ¶¬
+$IF LENGTH(EOBJ.ID_LIST)$
+	const EOBJINIB _echonet_eobjinib_table[TNUM_EOBJID] = {$NL$
+	$JOINEACH eobjid EOBJ.ID_LIST ",\n"$
+$		// eobjatrªimEOBJ_LOCAL_NODE] | [EOBJ_SYNC_REMOTE_NODE] | [EOBJ_ASYNC_REMOTE_NODE] | [EOBJ_DEVICEnjÅÈ¢êiE_RSATRj
+		$IF (EOBJ.EOBJATR[eobjid] & ~(EOBJ_LOCAL_NODE|EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE|EOBJ_DEVICE)) != 0$
+			$ERROR EOBJ.TEXT_LINE[eobjid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eobjatr", EOBJ.EOBJATR[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$
+		$END$
+
+$		// m[hvt@CIuWFNgÌê
+		$IF (EOBJ.EOBJATR[eobjid] & (EOBJ_LOCAL_NODE|EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE)) != 0$
+$			// (enodid == EOBJ_NULL)ÅÈ¢êiE_PARj
+			$IF !EQ(EOBJ.ENODID[eobjid], EOBJ_NULL)$
+				$ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "enodid", EOBJ.ENODID[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$
+			$END$
+
+$			// (eojx1 == EOJ_X1_PROFILE)ÅÈ¢êiE_PARj
+			$IF EOBJ.EOJX1[eobjid] != EOJ_X1_PROFILE$
+				$ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eojx1", EOBJ.EOJX1[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$
+			$END$
+
+$			// (eojx2 == EOJ_X2_NODE_PROFILE)ÅÈ¢êiE_PARj
+			$IF EOBJ.EOJX2[eobjid] != EOJ_X2_NODE_PROFILE$
+				$ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eojx2", EOBJ.EOJX2[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$
+			$END$
+
+$			// (1 <= eojx3 && eojx3 <= 2)ÅÈ¢êiE_PARj
+			$IF !(1 <= EOBJ.EOJX3[eobjid] && EOBJ.EOJX3[eobjid] <= 2)$
+				$ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eojx3", EOBJ.EOJX3[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$
+			$END$
+$		// @íIuWFNgÌê
+		$ELSE$
+$			// (enodid != EOBJ_NULL)ÅÈ¢êiE_PARj
+			$IF EQ(EOBJ.ENODID[eobjid], EOBJ_NULL)$
+				$ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "enodid", EOBJ.ENODID[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$
+			$END$
+
+$			// (0 <= eojx1 && eojx1 <= 255)ÅÈ¢êiE_PARj
+			$IF !(0 <= EOBJ.EOJX1[eobjid] && EOBJ.EOJX1[eobjid] <= 255)$
+				$ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eojx1", EOBJ.EOJX1[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$
+			$END$
+
+$			// (0 <= eojx2 && eojx2 <= 255)ÅÈ¢êiE_PARj
+			$IF !(0 <= EOBJ.EOJX2[eobjid] && EOBJ.EOJX2[eobjid] <= 255)$
+				$ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eojx2", EOBJ.EOJX2[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$
+			$END$
+
+$			// (0 <= eojx3 && eojx3 <= 255)ÅÈ¢êiE_PARj
+			$IF !(0 <= EOBJ.EOJX3[eobjid] && EOBJ.EOJX3[eobjid] <= 255)$
+				$ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eojx3", EOBJ.EOJX3[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$
+			$END$
+		$END$
+
+$		// ECHONET LiteIuWFNgú»ubN
+		$TAB${ ($EOBJ.EOBJATR[eobjid]$), ($EOBJ.ENODID[eobjid]$), ($EOBJ.EXINF[eobjid]$), ($EOBJ.EOJX1[eobjid]$), ($EOBJ.EOJX2[eobjid]$), ($EOBJ.EOJX3[eobjid]$), _echonet_$EOBJ.EOBJID[eobjid]$_eprpinib_table, TNUM_$EOBJ.EOBJID[eobjid]$_EPRPNO }
+	$END$$NL$
+	};$NL$
+	$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const EOBJINIB, _echonet_eobjinib_table);$NL$
+$END$
+$NL$
+
+$ ECHONET Litem[hÇubNÌ
+const int _echonet_tnum_enodid = TNUM_ENODID;$NL$
+$NL$
+
+$ 
+$  ECHONET Litem[hÇubN
+$ 
+/*$NL$
+$SPC$*  ECHONET Lite Node Functions$NL$
+$SPC$*/$NL$
+$NL$
+$ ECHONET Litem[hÆIPAhXÌÎîñubNÌ¶¬
+$FOREACH enodid ENOD.LIST$
+	$eobj_list = {}$
+	$FOREACH eobjid EOBJ.ID_LIST$
+		$IF EQ(EOBJ.ENODID[eobjid], enodid)$
+			$eobj_list = APPEND(eobj_list, eobjid)$
+		$END$
+	$END$
+	/*$NL$
+	$SPC$* m[hÉ®·é@íIuWFNgÌê$NL$
+	$SPC$*/$NL$
+	const EOBJINIB *_echonet_$EOBJ.EOBJID[enodid]$_eobjinib_table[TNUM_$EOBJ.EOBJID[enodid]$_EOBJNO] = {$NL$
+	$JOINEACH eobjid eobj_list ",\n"$
+		$TAB${ &_echonet_eobjinib_table[$eobjid$ - 1] }
+	$END$$NL$
+	};$NL$
+$END$$NL$
+
+$IF LENGTH(ENOD.LIST)$
+	/*$NL$
+	$SPC$* ECHONET Litem[hÇubN$NL$
+	$SPC$*/$NL$
+	EOBJCB _echonet_eobjcb_table[TNUM_ENODID] = {$NL$
+	$JOINEACH enodid ENOD.LIST ",\n"$
+		$TAB${ &_echonet_eobjinib_table[$enodid$ - 1], _echonet_$EOBJ.EOBJID[enodid]$_eobjinib_table, TNUM_$EOBJ.EOBJID[enodid]$_EOBJNO }
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(EOBJCB, _echonet_eobjcb_table);$NL$
+$END$
+$NL$
+
+$ ECHONET Litem[hÆIPAhXÌÎîñÌ
+const int _echonet_tnum_enodadr = TNUM_ENODADR;$NL$
+$NL$
+
+$ 
+$  ECHONET Litem[hÆIPAhXÌÎîñ
+$ 
+/*$NL$
+$SPC$*  ECHONET Lite Node Functions$NL$
+$SPC$*/$NL$
+$NL$
+$ ECHONET Litem[hÆIPAhXÌÎîñubNÌ¶¬
+$IF LENGTH(EOBJ.ID_LIST)$
+	ENODADRB _echonet_enodadrb_table[TNUM_ENODADR] = {$NL$
+	$JOINEACH enodid ENOD.LIST ",\n"$
+		$IF enodid == 1$
+			$TAB$/* ENOD_MULTICAST_ID $TAB$*/ { true, ECHONET_MULTICAST_ADDR },$NL$
+			$TAB$/* ENOD_LOCAL_ID     $TAB$*/ { true, },$NL$
+			$TAB$/* ENOD_API_ID       $TAB$*/ { true, }
+		$ELSE$
+			$TAB$/* ENOD_REMOTE_ID + $enodid - 4$$TAB$*/ { true, }
+		$END$
+	$END$$NL$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(ENODADRB, _echonet_enodadrb_table);$NL$
+$END$
+$NL$
+
+$ ECHONET Litem[h²ÆÌAvP[Vªvµ½d¶ÌV[PXÔ
+uint16_t _echonet_apitid_table[TNUM_ENODADR];$NL$
+$NL$
+
+$NL$
+#include "kernel_cfg.h"$NL$
+$NL$
+
+$
+$ ECHONET Lite J[lIuWFNgID
+$
+const ID _echonet_ecn_svc_taskid = ECHONET_SVC_TASK;$NL$
+const ID _echonet_ecn_udp_taskid = ECHONET_UDP_TASK;$NL$
+const ID _echonet_ecn_api_mailboxid = ECHONET_API_MAILBOX;$NL$
+const ID _echonet_ecn_svc_mailboxid = ECHONET_SVC_MAILBOX;$NL$
+const ID _echonet_ecn_udp_mailboxid = ECHONET_UDP_MAILBOX;$NL$
+const ID _echonet_ecn_svc_cychdrid = ECHONET_SVC_CYCHDR;$NL$
+const ID _echonet_ecn_udp_cychdrid = ECHONET_UDP_CYCHDR;$NL$
+$NL$
Index: uKadecot/trunk/ecnl_ssp/echonet_agent.c
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_agent.c	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet_agent.c	(revision 101)
@@ -0,0 +1,1218 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		ECHONET Lite ®I¶¬m[h
+ */
+
+#include <kernel.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <t_syslog.h>
+#include "echonet.h"
+#include "echonet_fbs.h"
+#include "echonet_agent.h"
+#include "echonet_task.h"
+#include "echonet_lcl_task.h"
+
+extern bool_t g_forward_esv;
+
+typedef struct ecn_agent_buffer
+{
+	union{
+		struct ecn_agent_buffer *free;
+		ecn_agent_queue_t queue;
+	};
+	union{
+		ecn_obj_t obj;
+		ecn_node_t node;
+		ecn_device_t device;
+	};
+} ecn_agent_buffer_t;
+
+typedef struct ecn_agent
+{
+	EPRPINIB eprpinib;
+	ecn_agent_queue_t nodes;
+	ecn_node_t *current_node;
+	bool_t msg_proced;
+	int blkpos;
+	ecn_agent_buffer_t *free;
+	ecn_agent_buffer_t blockes[TNUM_AEOBJID];
+	int requestid;
+} ecn_agent_t;
+
+static ER ecn_agent_proc_get_device_list(ecn_agent_t *agent, ECN_FBS_ID req);
+static ER ecn_agent_proc_get_device_info(ecn_agent_t *agent, ECN_FBS_ID req);
+static void ecn_node_send_set_prop_map(ecn_node_t *node);
+static void ecn_node_send_get_prop_map(ecn_node_t *node);
+static void ecn_node_send_anno_prop_map(ecn_node_t *node);
+static void ecn_node_timeout_on_start(ecn_node_t *node);
+static void ecn_node_next_proc_on_set_prpmap_wait(ecn_node_t *node, ecn_obj_t *sobj);
+static void ecn_node_timeout_on_set_prpmap_wait(ecn_node_t *node);
+static void ecn_node_next_proc_on_get_prpmap_wait(ecn_node_t *node, ecn_obj_t *sobj);
+static void ecn_node_timeout_on_get_prpmap_wait(ecn_node_t *node);
+static void ecn_node_next_proc_on_anno_prpmap_wait(ecn_node_t *node, ecn_obj_t *sobj);
+static void ecn_node_timeout_on_anno_prpmap_wait(ecn_node_t *node);
+
+int ecn_agent_eprpset(const EPRPINIB *item, const void *src, int size, bool_t *anno);
+int ecn_agent_eprpget(const EPRPINIB *item, void *dst, int size);
+
+static ecn_agent_queue_t *cast_queue(ecn_obj_t *obj)
+{
+	return (ecn_agent_queue_t *)((intptr_t)obj - offsetof(ecn_agent_buffer_t, obj));
+}
+
+static ecn_obj_t *cast_obj(ecn_agent_queue_t *queue)
+{
+	return (ecn_obj_t *)((intptr_t)queue + offsetof(ecn_agent_buffer_t, obj));
+}
+
+static ecn_node_t *cast_node(const EOBJCB *eobj)
+{
+	return (ecn_node_t *)((intptr_t)eobj - offsetof(ecn_node_t, eobj));
+}
+
+static ecn_obj_t *cast_obj2(const EOBJINIB *inib)
+{
+	return (ecn_obj_t *)((intptr_t)inib - offsetof(ecn_obj_t, inib));
+}
+
+static ecn_agent_t *cast_agent(const EPRPINIB *inib)
+{
+	return (ecn_agent_t *)((intptr_t)inib - offsetof(ecn_agent_t, eprpinib));
+}
+
+ecn_agent_t g_ecn_agent = {
+	/*eprpinib*/{
+		0x00,
+		EPC_RULE_SET | EPC_RULE_GET,
+		255,
+		(intptr_t)&g_ecn_agent,
+		ecn_agent_eprpset,
+		ecn_agent_eprpget
+	},
+};
+
+ER get_buf(ecn_agent_t *agent, ecn_agent_buffer_t **buf)
+{
+	ER ret = E_OK;
+
+	loc_cpu();
+
+	if (agent->blkpos < TNUM_AEOBJID) {
+		*buf = &agent->blockes[agent->blkpos++];
+	}
+	else if (agent->free == NULL) {
+		ret = E_TMOUT;
+	}
+	else{
+		*buf = agent->free;
+		agent->free = agent->free->free;
+	}
+
+	unl_cpu();
+
+	return ret;
+}
+
+ER rel_buf(ecn_agent_t *agent, ecn_agent_buffer_t *buf)
+{
+	if ((buf < &agent->blockes[0]) || (buf >= &agent->blockes[TNUM_AEOBJID]))
+		return E_PAR;
+
+	if ((((intptr_t)buf - (intptr_t)&agent->blockes[0]) % sizeof(ecn_agent_buffer_t)) != 0)
+		return E_PAR;
+
+	loc_cpu();
+
+	if (agent->free == NULL) {
+		agent->free = buf;
+		agent->free->free = NULL;
+	}
+	else {
+		ecn_agent_buffer_t *next = agent->free;
+		agent->free = buf;
+		agent->free->free = next;
+	}
+
+	unl_cpu();
+
+	return E_OK;
+}
+
+/*
+ *  L
+[Ìú»
+ *
+ *  p_queueÉÍL
+[wb_ðwè·éD
+ */
+Inline void
+ecn_agent_queue_init(ecn_agent_queue_t *p_queue)
+{
+#ifdef _DEBUG
+	p_queue->p_parent = p_queue;
+#endif
+	p_queue->p_prev = p_queue;
+	p_queue->p_next = p_queue;
+}
+
+/*
+ *  L
+[ÌOGgÖÌ}ü
+ *
+ *  p_queueÌOÉp_entryð}ü·éDp_queueÉL
+[wb_ðwèµ½ê
+ *  ÉÍCL
+[ÌöÉp_entryð}ü·é±ÆÉÈéD
+ */
+Inline void
+ecn_agent_queue_add(ecn_agent_queue_t *p_queue, ecn_agent_queue_t *p_entry)
+{
+#ifdef _DEBUG
+	assert((p_queue->p_parent == p_queue) && (p_entry->p_parent == NULL));
+	p_entry->p_parent = p_queue;
+#endif
+	p_entry->p_prev = p_queue->p_prev;
+	p_entry->p_next = p_queue;
+	p_queue->p_prev->p_next = p_entry;
+	p_queue->p_prev = p_entry;
+}
+
+/*
+ *  GgÌí
+ *
+ *  p_entryðL
+[©çí·éD
+ */
+Inline void
+ecn_agent_queue_remove(ecn_agent_queue_t *p_queue, ecn_agent_queue_t *p_entry)
+{
+#ifdef _DEBUG
+	assert((p_queue->p_parent == p_queue) && (p_entry->p_parent == p_queue));
+	p_entry->p_parent = NULL;
+#endif
+	p_entry->p_prev->p_next = p_entry->p_next;
+	p_entry->p_next->p_prev = p_entry->p_prev;
+}
+
+ecn_node_t *ecn_agent_find_node(ECN_ENOD_ID enodid)
+{
+	ecn_agent_t *agent = &g_ecn_agent;
+	ecn_agent_queue_t *queue = agent->nodes.p_next;
+#ifdef _DEBUG
+	assert(queue->p_parent == &agent->nodes);
+#endif
+	for (; queue != &agent->nodes; queue = queue->p_next) {
+		ecn_node_t *node = (ecn_node_t *)cast_obj(queue);
+		if(node->enodId == enodid)
+			return node;
+	}
+
+	return NULL;
+}
+
+ecn_node_t *ecn_agent_find_node2(const EOBJCB *pk_eobj)
+{
+	ecn_agent_t *agent = &g_ecn_agent;
+	ecn_agent_queue_t *queue;
+
+	if(pk_eobj == NULL)
+		return NULL;
+
+	queue = agent->nodes.p_next;
+#ifdef _DEBUG
+	assert(queue->p_parent == &agent->nodes);
+#endif
+	for (; queue != &agent->nodes; queue = queue->p_next) {
+		ecn_node_t *node = (ecn_node_t *)cast_obj(queue);
+		if(&node->eobj == pk_eobj)
+			return node;
+	}
+
+	return NULL;
+}
+
+ecn_obj_t *ecn_agent_find_eobj(const EOBJCB *pk_nod, T_ECN_EOJ eoj)
+{
+	ecn_agent_queue_t *devices = &cast_node(pk_nod)->devices;
+	ecn_agent_queue_t *queue = devices->p_next;
+#ifdef _DEBUG
+	assert(queue->p_parent == devices);
+#endif
+	for (; queue != devices; queue = queue->p_next) {
+		ecn_obj_t *obj = cast_obj(queue);
+		if (obj->inib.eojx1 != eoj.eojx1)
+			continue;
+		if (obj->inib.eojx2 != eoj.eojx2)
+			continue;
+		if (obj->inib.eojx3 != eoj.eojx3)
+			continue;
+
+		return obj;
+	}
+
+	return NULL;
+}
+
+ecn_obj_t *ecn_agent_find_obj2(ecn_node_t *pk_nod, const EOBJINIB *pk_obj)
+{
+	ecn_agent_queue_t *devices = &pk_nod->devices;
+	ecn_agent_queue_t *queue = devices->p_next;
+#ifdef _DEBUG
+	assert(queue->p_parent == devices);
+#endif
+	for (; queue != devices; queue = queue->p_next) {
+		ecn_obj_t *obj = cast_obj(queue);
+		if (&obj->inib == pk_obj)
+			return obj;
+	}
+
+	return NULL;
+}
+
+ID ecn_agent_get_eobj(const EOBJINIB *pk_obj)
+{
+	return cast_obj2(pk_obj)->eobjId;
+}
+
+const EOBJINIB *ecn_agent_next_eobj(const EOBJCB *pk_nod, const EOBJINIB *pk_obj)
+{
+	ecn_agent_queue_t *devices = &cast_node(pk_nod)->devices;
+	ecn_obj_t *device = (ecn_obj_t *)pk_obj->exinf;
+	ecn_agent_queue_t *queue = cast_queue(device);
+#ifdef _DEBUG
+	assert(queue->p_parent == devices);
+#endif
+	if (queue == devices)
+		return NULL;
+
+	return &cast_obj(queue->p_next)->inib;
+}
+
+bool_t ecn_agent_get_eoj_enodid(ID eobjid, T_ECN_EOJ *eoj, ECN_ENOD_ID *enodid)
+{
+	ecn_agent_t *agent = &g_ecn_agent;
+	ecn_agent_buffer_t *buf;
+	int i = eobjid;
+
+	/* IuWFNgID©çÀÌðæ¾ */
+	i -= (tmax_eobjid + 1);
+	if ((i < 0)
+		|| (i >= (sizeof(agent->blockes) / sizeof(agent->blockes[0])))){
+		return false;
+	}
+
+	buf = &agent->blockes[i];
+	if(buf->obj.eobjId != eobjid)
+		return false;
+
+	/* IuWFNgÌEOJðRs[ */
+	memcpy(eoj, &buf->obj.inib.eojx1, sizeof(*eoj));
+
+	/* ®·ém[hÌIuWFNgIDðæ¾ */
+	if(buf->obj.inib.enodid == 0)
+		i = buf->obj.eobjId;
+	else
+		i = buf->obj.inib.enodid;
+
+	i -= (tmax_eobjid + 1);
+	if ((i < 0)
+		|| (i >= (sizeof(agent->blockes) / sizeof(agent->blockes[0])))){
+		return false;
+	}
+
+	/* m[hIDðæ¾ */
+	buf = &agent->blockes[i];
+	*enodid = buf->node.enodId;
+
+	return true;
+}
+
+void ecn_agent_set_epc_to_prop_map(uint8_t epc, uint8_t *propMap)
+{
+	int i, j;
+	assert((epc & 0x80) != 0);
+	i = epc & 0xF;
+	j = (epc >> 4) - 8;
+	propMap[i] |= (1 << j);
+}
+
+bool_t ecn_agent_contains_epc_in_prop_map(uint8_t epc, uint8_t *propMap)
+{
+	int i, j;
+	assert((epc & 0x80) != 0);
+	i = epc & 0xF;
+	j = (epc >> 4) - 8;
+	return (propMap[i] & (1 << j)) != 0;
+}
+
+void ecn_agent_init(void)
+{
+	ecn_agent_queue_init(&g_ecn_agent.nodes);
+}
+
+ecn_node_t *ecn_agent_create_node(ecn_agent_t *agent, T_EDATA *esv)
+{
+	ecn_agent_buffer_t *result = NULL;
+	ecn_node_t *node;
+	uint8_t epc;
+	uint8_t pdc;
+	uint8_t edt[256];
+	T_ENUM_EPC enm;
+	ER ret;
+	T_ECN_EOJ *eoj, *end;
+
+	// vpeBÊm©æ¾ÅA
+	switch (esv->hdr.edata.esv) {
+	case ESV_GET_RES:
+	case ESV_GET_SNA:
+	case ESV_INF:
+		break;
+	default:
+		return NULL;
+	}
+
+	// m[hvt@C¶Ìê
+	eoj = &esv->hdr.edata.seoj;
+	if ((eoj->eojx1 != EOJ_X1_PROFILE) || (eoj->eojx2 != EOJ_X2_NODE_PROFILE)
+		|| (eoj->eojx3 != 0x01))
+		return NULL;
+
+	ret = ecn_itr_ini(&enm, esv);
+	if(ret != E_OK){
+		syslog(LOG_WARNING, "ecn_itr_ini");
+	}
+
+	while (ecn_itr_nxt(&enm, &epc, &pdc, &edt) == E_OK) {
+		switch (epc) {
+		// CX^XXgÊmÌê
+		case 0xD5:
+		// ©m[hCX^XXgrÊmÌê
+		case 0xD6:
+			// TCYªíÈ¢ê
+			if (pdc != (1 + edt[0] * sizeof(T_ECN_EOJ)))
+				return NULL;
+
+			ret = get_buf(agent, &result);
+			if(ret != E_OK){
+				syslog(LOG_WARNING, "get_buf");
+				return NULL;
+			}
+
+			memset(result, 0, sizeof(*result));
+			node = &result->node;
+			node->enodId = ((T_ECN_FST_BLK *)esv)->hdr.sender;
+			node->base.eobjId = tmax_eobjid + 1 + (((intptr_t)result - (intptr_t)agent->blockes) / sizeof(agent->blockes[0]));
+			node->base.inib.enodid = 0;
+			node->base.inib.eobjatr = EOBJ_SYNC_REMOTE_NODE;
+			node->base.inib.exinf = (intptr_t)node;
+			node->base.inib.eojx1 = eoj->eojx1;
+			node->base.inib.eojx2 = eoj->eojx2;
+			node->base.inib.eojx3 = eoj->eojx3;
+			node->base.inib.eprp = &agent->eprpinib;
+			node->base.inib.eprpcnt = 0;
+			ecn_agent_set_epc_to_prop_map(0xD5, node->base.pmapGet);
+			ecn_agent_set_epc_to_prop_map(0xD6, node->base.pmapGet);
+			ecn_agent_set_epc_to_prop_map(0x9D, node->base.pmapGet);
+			ecn_agent_set_epc_to_prop_map(0x9E, node->base.pmapGet);
+			ecn_agent_set_epc_to_prop_map(0x9F, node->base.pmapGet);
+			ecn_agent_queue_init(&node->devices);
+			node->eobj.profile = &node->base.inib;
+			node->eobj.eobjs = NULL;
+			node->eobj.eobjcnt = pdc / 3;
+			node->state = ecn_node_state_idle;
+			node->timer = TMO_FEVR;
+
+			end = (T_ECN_EOJ *)&edt[pdc];
+			for (eoj = (T_ECN_EOJ *)&edt[1]; eoj < end; eoj++) {
+				ecn_device_t *device;
+				ecn_agent_buffer_t *obj;
+
+				ret  = get_buf(agent, &obj);
+				if(ret != E_OK){
+					syslog(LOG_WARNING, "get_buf");
+					return NULL;
+				}
+
+				memset(obj, 0, sizeof(*obj));
+				device = &obj->device;
+				device->node = node;
+				device->base.eobjId = tmax_eobjid + 1 + (((intptr_t)obj - (intptr_t)agent->blockes) / sizeof(agent->blockes[0]));
+				device->base.inib.eobjatr = EOBJ_DEVICE;
+				device->base.inib.enodid = node->base.eobjId;
+				device->base.inib.exinf = (intptr_t)device;
+				device->base.inib.eojx1 = eoj->eojx1;
+				device->base.inib.eojx2 = eoj->eojx2;
+				device->base.inib.eojx3 = eoj->eojx3;
+				device->base.inib.eprp = &agent->eprpinib;
+				device->base.inib.eprpcnt = 0;
+				ecn_agent_set_epc_to_prop_map(0x9D, device->base.pmapGet);
+				ecn_agent_set_epc_to_prop_map(0x9E, device->base.pmapGet);
+				ecn_agent_set_epc_to_prop_map(0x9F, device->base.pmapGet);
+
+				ecn_agent_queue_add(&node->devices, &obj->queue);
+			}
+			break;
+		default:
+			continue;
+		}
+		break;
+	}
+
+	if (result == NULL)
+		return NULL;
+
+	ecn_agent_queue_add(&agent->nodes, &result->queue);
+
+	return node;
+}
+
+static ER ecn_agent_proc_get_device_list(ecn_agent_t *agent, ECN_FBS_ID req)
+{
+	ER ret;
+	ECN_FBS_ID res;
+	ecn_inm_get_device_list_req_t msg;
+	ECN_FBS_SSIZE_T len;
+	ecn_agent_buffer_t *pos, *end = &agent->blockes[TNUM_AEOBJID];
+	ecn_inm_get_device_item_t item;
+	int i, j;
+
+	ret = _ecn_fbs_get_data(req, &msg, sizeof(msg), &len);
+	if (ret != E_OK) {
+		return ret;
+	}
+
+	ret = _ecn_tsk_cre_res_fbs(req, ECN_INM_GET_DEVICE_LIST_RES, &res);
+	if (ret != E_OK) {
+		return ret;
+	}
+
+	ret = _ecn_fbs_add_data_ex(res, &msg.requestid, sizeof(((ecn_inm_get_device_list_res_t *)0)->requestid));
+	if (ret != E_OK) {
+		_ecn_fbs_del(res);
+		return ret;
+	}
+
+	for (i = 0; i < tnum_enodid; i++) {
+		const EOBJCB *enod = &eobjcb_table[i];
+		for (j = 0; j < enod->eobjcnt; j++) {
+			const EOBJINIB *eobj = enod->eobjs[i];
+			item.eobjid = 1 + (((intptr_t)eobj - (intptr_t)eobjinib_table) / sizeof(EOBJINIB));
+			item.enodid = eobj->enodid;
+			item.state = true;
+			item.eojx1 = eobj->eojx1;
+			item.eojx2 = eobj->eojx2;
+			item.eojx3 = eobj->eojx3;
+			item.addrid = (i == 0) ? ENOD_LOCAL_ID : (ENOD_REMOTE_ID + i);
+
+			ret = _ecn_fbs_add_data_ex(res, &item, sizeof(item));
+			if (ret != E_OK) {
+				_ecn_fbs_del(res);
+				return ret;
+			}
+		}
+	}
+
+	for (pos = &agent->blockes[0]; pos < end; pos++){
+		if(pos->obj.eobjId == 0)
+			continue;
+
+		item.eobjid = pos->obj.eobjId;
+		item.enodid = pos->obj.inib.enodid;
+		item.state = (pos->obj.pmapFlag & (PMAP_FLAG_SET | PMAP_FLAG_GET | PMAP_FLAG_ANNO))
+			== (PMAP_FLAG_SET | PMAP_FLAG_GET | PMAP_FLAG_ANNO);
+		item.eojx1 = pos->obj.inib.eojx1;
+		item.eojx2 = pos->obj.inib.eojx2;
+		item.eojx3 = pos->obj.inib.eojx3;
+
+		if(pos->device.node != NULL)
+			item.addrid = pos->device.node->enodId;
+		else
+			item.addrid = pos->node.enodId;
+
+		ret = _ecn_fbs_add_data_ex(res, &item, sizeof(item));
+		if (ret != E_OK) {
+			_ecn_fbs_del(res);
+			return ret;
+		}
+	}
+
+	ret = psnd_dtq(res.ptr->hdr.target_mbxid, (intptr_t)res.ptr);
+	if (ret != E_OK) {
+		_ecn_fbs_del(res);
+		return ret;
+	}
+
+	return E_OK;
+}
+
+static ER ecn_agent_proc_get_device_info(ecn_agent_t *agent, ECN_FBS_ID req)
+{
+	ER ret;
+	ECN_FBS_ID res;
+	ecn_inm_get_device_info_req_t msg;
+	ecn_inm_get_device_info_res_t rmsg;
+	ECN_FBS_SSIZE_T len;
+
+	ret = _ecn_fbs_get_data(req, &msg, sizeof(msg), &len);
+	if (ret != E_OK) {
+		return ret;
+	}
+
+	memset(&rmsg, 0, sizeof(rmsg));
+
+	if (msg.eobjid <= tmax_eobjid) {
+		const EOBJINIB *eobj = &eobjinib_table[msg.eobjid - 1];
+		int i;
+
+		rmsg.requestid = msg.requestid;
+		rmsg.eobjid = msg.eobjid;
+		for (i = 0; i < eobj->eprpcnt; i++) {
+			uint8_t epc = eobj->eprp[i].eprpcd;
+			ecn_agent_set_epc_to_prop_map(epc, rmsg.pmapSet);
+			ecn_agent_set_epc_to_prop_map(epc, rmsg.pmapGet);
+			ecn_agent_set_epc_to_prop_map(epc, rmsg.pmapAnno);
+		}
+		rmsg.eprpcnt = eobj->eprpcnt;
+	}
+	else {
+		int eobjId;
+		ecn_agent_buffer_t *pos;
+
+		eobjId = msg.eobjid - tmax_eobjid - 1;
+		pos = &agent->blockes[eobjId];
+
+		rmsg.requestid = msg.requestid;
+		rmsg.eobjid = pos->obj.eobjId;
+		memcpy(rmsg.pmapSet, pos->obj.pmapSet, sizeof(rmsg.pmapSet));
+		memcpy(rmsg.pmapGet, pos->obj.pmapGet, sizeof(rmsg.pmapGet));
+		memcpy(rmsg.pmapAnno, pos->obj.pmapAnno, sizeof(rmsg.pmapAnno));
+		rmsg.eprpcnt = pos->obj.eprpcnt;
+	}
+
+	ret = _ecn_tsk_cre_res_fbs(req, ECN_INM_GET_DEVICE_INFO_RES, &res);
+	if (ret != E_OK) {
+		return ret;
+	}
+
+	ret = _ecn_fbs_add_data_ex(res, &rmsg, sizeof(rmsg));
+	if (ret != E_OK) {
+		_ecn_fbs_del(res);
+		return ret;
+	}
+
+	ret = psnd_dtq(res.ptr->hdr.target_mbxid, (intptr_t)res.ptr);
+	if (ret != E_OK) {
+		_ecn_fbs_del(res);
+		return ret;
+	}
+
+	return E_OK;
+}
+
+TMO ecn_agent_get_timer()
+{
+	TMO timer = TMO_FEVR, temp;
+	ecn_agent_t *agent = &g_ecn_agent;
+	ecn_node_t *node;
+	ecn_agent_queue_t *queue;
+
+	queue = &agent->nodes;
+	for (;;) {
+		queue = queue->p_next;
+#ifdef _DEBUG
+		assert(queue->p_parent == &agent->nodes);
+#endif
+		if(&agent->nodes == queue)
+			break;
+
+		node = (ecn_node_t *)cast_obj(queue);
+		temp = node->timer;
+		if (temp != TMO_FEVR) {
+			if ((timer == TMO_FEVR) || (temp < timer)) {
+				timer = temp;
+			}
+		}
+	}
+
+	return timer;
+}
+
+void ecn_agent_progress(TMO interval)
+{
+	ecn_agent_t *agent = &g_ecn_agent;
+	ecn_node_t *node;
+	ecn_agent_queue_t *queue;
+
+	queue = &agent->nodes;
+	for (;;) {
+		queue = queue->p_next;
+#ifdef _DEBUG
+		assert(queue->p_parent == &agent->nodes);
+#endif
+		if(&agent->nodes == queue)
+			break;
+
+		node = (ecn_node_t *)cast_obj(queue);
+		if (node->timer == TMO_FEVR)
+			continue;
+
+		node->timer -= interval;
+		if (node->timer <= 0) {
+			node->timer = 0;
+		}
+	}
+}
+
+void ecn_agent_timeout()
+{
+	ecn_agent_t *agent = &g_ecn_agent;
+	ecn_node_t *node;
+	ecn_agent_queue_t *queue;
+
+	queue = &agent->nodes;
+	for (;;) {
+		queue = queue->p_next;
+#ifdef _DEBUG
+		assert(queue->p_parent == &agent->nodes);
+#endif
+		if(&agent->nodes == queue)
+			break;
+
+		node = (ecn_node_t *)cast_obj(queue);
+		if (node->timer != 0)
+			continue;
+
+		switch (node->state) {
+		case ecn_node_state_start:
+			ecn_node_timeout_on_start(node);
+			break;
+		case ecn_node_state_set_prpmap_wait:
+			ecn_node_timeout_on_set_prpmap_wait(node);
+			break;
+		case ecn_node_state_get_prpmap_wait:
+			ecn_node_timeout_on_get_prpmap_wait(node);
+			break;
+		case ecn_node_state_anno_prpmap_wait:
+			ecn_node_timeout_on_anno_prpmap_wait(node);
+			break;
+		case ecn_node_state_fault:
+			ecn_node_timeout_on_start(node);
+			break;
+		default:
+			assert(0);
+		}
+	}
+}
+
+bool_t ecn_agent_proc_int_msg(ECN_FBS_ID fbs, uint8_t cmd)
+{
+	ecn_agent_t *agent = &g_ecn_agent;
+
+	switch(cmd)
+	{
+	case ECN_INM_GET_DEVICE_LIST_REQ:
+		ecn_agent_proc_get_device_list(agent, fbs);
+		break;
+	case ECN_INM_GET_DEVICE_INFO_REQ:
+		ecn_agent_proc_get_device_info(agent, fbs);
+		break;
+	default:
+		return false;
+	}
+
+	return true;
+}
+
+void ecn_agent_proc_ecn_msg(const EOBJCB **ppk_snod, const EOBJINIB **ppk_sobj, T_EDATA *esv)
+{
+	ecn_agent_t *agent = &g_ecn_agent;
+	ecn_node_t *snod;
+	ecn_obj_t *sobj;
+
+	/* ÃIÉè`³ê½M³Ìê */
+	if ((*ppk_snod != NULL) && (*ppk_snod)->eobjs != NULL) {
+		/* µÈ¢ */
+		return;
+	}
+
+	snod = ecn_agent_find_node2(*ppk_snod);
+
+	/* M³ðmçÈ©Á½ç */
+	if (snod == NULL) {
+		/* M³Ìm[hîñðVKÉì¬ */
+		snod = ecn_agent_create_node(agent, esv);
+		if (snod == NULL)
+			return;
+	}
+
+	sobj = ecn_agent_find_obj2(snod, *ppk_sobj);
+
+	/* m[hvt@CÌê */
+	if ((esv->hdr.edata.seoj.eojx1 == EOJ_X1_PROFILE)
+		&& (esv->hdr.edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) {
+		sobj = &snod->base;
+	}
+	/* @íIuWFNgÌê */
+	else {
+		sobj = ecn_agent_find_eobj(&snod->eobj, esv->hdr.edata.seoj);
+	}
+
+	*ppk_snod = &snod->eobj;
+	*ppk_sobj = &sobj->inib;
+
+	agent->current_node = snod;
+	agent->msg_proced = false;
+}
+
+void ecn_agent_proc_ecn_msg_end()
+{
+	ecn_agent_t *agent = &g_ecn_agent;
+	ecn_node_t *node = agent->current_node;
+	ecn_obj_t *sobj;
+
+	if(node == NULL)
+		return;
+
+	sobj = node->current;
+	if(sobj == NULL)
+		return;
+
+	if (agent->msg_proced) {
+		switch (node->state) {
+		case ecn_node_state_set_prpmap_wait:
+			ecn_node_next_proc_on_set_prpmap_wait(node, sobj);
+			break;
+		case ecn_node_state_get_prpmap_wait:
+			ecn_node_next_proc_on_get_prpmap_wait(node, sobj);
+			break;
+		case ecn_node_state_anno_prpmap_wait:
+			ecn_node_next_proc_on_anno_prpmap_wait(node, sobj);
+			break;
+		}
+	}
+}
+
+static void ecn_node_send_set_prop_map(ecn_node_t *node)
+{
+	T_EDATA *esv;
+	ecn_obj_t *obj = node->current;
+
+	// vpeBlÇÝoµv
+	ecn_esv_get(&esv, obj->eobjId, 0x9E);
+	ecn_snd_esv(esv);
+
+	node->state = ecn_node_state_set_prpmap_wait;
+	node->timer = (TMO)5000;
+}
+
+static void ecn_node_send_get_prop_map(ecn_node_t *node)
+{
+	T_EDATA *esv;
+	ecn_obj_t *obj = node->current;
+
+	// vpeBlÇÝoµv
+	ecn_esv_get(&esv, obj->eobjId, 0x9F);
+	ecn_snd_esv(esv);
+
+	node->state = ecn_node_state_get_prpmap_wait;
+	node->timer = (TMO)5000;
+}
+
+static void ecn_node_send_anno_prop_map(ecn_node_t *node)
+{
+	T_EDATA *esv;
+	ecn_obj_t *obj = node->current;
+
+	// vpeBlÇÝoµv
+	ecn_esv_get(&esv, obj->eobjId, 0x9D);
+	ecn_snd_esv(esv);
+
+	node->state = ecn_node_state_anno_prpmap_wait;
+	node->timer = (TMO)5000;
+}
+
+static void ecn_node_next_obj(ecn_node_t *node)
+{
+	ecn_obj_t *obj = node->current;
+	ecn_agent_queue_t *queue;
+	ecn_device_t *device;
+
+	/* objªwè³êÄ¢È¢ê */
+	if(obj == NULL){
+		/* ±Ìm[hðÔ· */
+		node->current = &node->base;
+		return;
+	}
+	/* m[hÌê */
+	else if((obj->inib.eojx1 == EOJ_X1_PROFILE) && (obj->inib.eojx2 == EOJ_X2_NODE_PROFILE)){
+		node = (ecn_node_t *)obj;
+
+		/* zºÌ@íðÔ· */
+		queue = node->devices.p_next;
+		device = (ecn_device_t *)cast_obj(queue);
+	}
+	/* @íÌê */
+	else{
+		/* Ì@íðÔ· */
+		node = ((ecn_device_t *)obj)->node;
+		queue = cast_queue(obj)->p_next;
+		device = (ecn_device_t *)cast_obj(queue);
+	}
+
+	/* »Ì@íªö¾Á½ê */
+	if(&node->devices == queue){
+		node->current = NULL;
+	}
+	else {
+		node->current = &device->base;
+	}
+}
+
+static void ecn_node_timeout_on_start(ecn_node_t *node)
+{
+	for (;;) {
+		ecn_obj_t *obj = node->current;
+		if (obj == NULL) {
+			node->state = ecn_node_state_idle;
+			node->timer = TMO_FEVR;
+			return;
+		}
+
+		if((obj->pmapFlag & PMAP_FLAG_SET) == 0){
+			ecn_node_send_set_prop_map(node);
+			break;
+		}
+		else if((obj->pmapFlag & PMAP_FLAG_GET) == 0){
+			ecn_node_send_get_prop_map(node);
+			break;
+		}
+		else if((obj->pmapFlag & PMAP_FLAG_ANNO) == 0){
+			ecn_node_send_anno_prop_map(node);
+			break;
+		}
+		else{
+			ecn_node_next_obj(node);
+		}
+	}
+}
+
+static void ecn_node_next_proc_on_set_prpmap_wait(ecn_node_t *node, ecn_obj_t *sobj)
+{
+	if((sobj->pmapFlag & PMAP_FLAG_GET) == 0){
+		ecn_node_send_get_prop_map(node);
+	}
+	else if((sobj->pmapFlag & PMAP_FLAG_ANNO) == 0){
+		ecn_node_send_anno_prop_map(node);
+	}
+	else if((sobj->pmapFlag & PMAP_FLAG_SET) == 0){
+		ecn_node_send_set_prop_map(node);
+	}
+	else{
+		ecn_node_next_obj(node);
+		ecn_node_timeout_on_start(node);
+	}
+}
+
+static void ecn_node_timeout_on_set_prpmap_wait(ecn_node_t *node)
+{
+	ecn_obj_t *obj = node->current;
+	if(obj == NULL){
+		node->state = ecn_node_state_idle;
+		node->timer = TMO_FEVR;
+		return;
+	}
+
+	node->retry++;
+	if(node->retry < 3){
+		ecn_node_next_proc_on_set_prpmap_wait(node, obj);
+	}
+	else{
+		node->retry = 0;
+		node->state = ecn_node_state_fault;
+		node->timer = TMO_FEVR;
+	}
+}
+
+static void ecn_node_next_proc_on_get_prpmap_wait(ecn_node_t *node, ecn_obj_t *sobj)
+{
+	if((sobj->pmapFlag & PMAP_FLAG_ANNO) == 0){
+		ecn_node_send_anno_prop_map(node);
+	}
+	else if((sobj->pmapFlag & PMAP_FLAG_SET) == 0){
+		ecn_node_send_set_prop_map(node);
+	}
+	else if((sobj->pmapFlag & PMAP_FLAG_GET) == 0){
+		ecn_node_send_get_prop_map(node);
+	}
+	else{
+		ecn_node_next_obj(node);
+		ecn_node_timeout_on_start(node);
+	}
+}
+
+static void ecn_node_timeout_on_get_prpmap_wait(ecn_node_t *node)
+{
+	ecn_obj_t *obj = node->current;
+	if(obj == NULL){
+		node->state = ecn_node_state_idle;
+		node->timer = TMO_FEVR;
+		return;
+	}
+
+	ecn_node_next_proc_on_get_prpmap_wait(node, obj);
+}
+
+static void ecn_node_next_proc_on_anno_prpmap_wait(ecn_node_t *node, ecn_obj_t *sobj)
+{
+	if((sobj->pmapFlag & PMAP_FLAG_SET) == 0){
+		ecn_node_send_set_prop_map(node);
+	}
+	else if((sobj->pmapFlag & PMAP_FLAG_GET) == 0){
+		ecn_node_send_get_prop_map(node);
+	}
+	else if((sobj->pmapFlag & PMAP_FLAG_ANNO) == 0){
+		ecn_node_send_anno_prop_map(node);
+	}
+	else{
+		ecn_node_next_obj(node);
+		ecn_node_timeout_on_start(node);
+	}
+}
+
+static void ecn_node_timeout_on_anno_prpmap_wait(ecn_node_t *node)
+{
+	ecn_obj_t *obj = node->current;
+	if(obj == NULL){
+		node->state = ecn_node_state_idle;
+		node->timer = TMO_FEVR;
+		return;
+	}
+
+	ecn_node_next_proc_on_anno_prpmap_wait(node, obj);
+}
+
+const EPRPINIB *ecn_agent_get_property(const EOBJINIB *fp_obj, uint8_t fa_epc, const EPRPINIB *item)
+{
+	ecn_obj_t *obj = cast_obj2(fp_obj);
+	bool_t has = false;
+
+	/* m[hÌêÍCX^XXgÊmÆ©m[hCX^XXgrÊmðK{Åó¯æé */
+	if ((fp_obj->enodid == 0) && ((fa_epc == 0xD5) || (fa_epc == 0xD6)))
+		has = true;
+	else if (ecn_agent_contains_epc_in_prop_map(fa_epc, obj->pmapGet))
+		has = true;
+	else if (ecn_agent_contains_epc_in_prop_map(fa_epc, obj->pmapSet))
+		has = true;
+	else if (ecn_agent_contains_epc_in_prop_map(fa_epc, obj->pmapAnno))
+		has = true;
+
+	if(!has)
+		return NULL;
+
+	((EPRPINIB *)item)->eprpcd = fa_epc;
+	((EPRPINIB *)item)->exinf = (intptr_t)fp_obj;
+
+	return item;
+}
+
+int ecn_agent_eprpget(const EPRPINIB *item, void *dst, int size)
+{
+	return 0;
+}
+
+int ecn_agent_eprpset(const EPRPINIB *item, const void *src, int size, bool_t *anno)
+{
+	ecn_agent_t *agent = cast_agent(item);
+	ecn_node_t *node = agent->current_node;
+	const uint8_t *edt = (const uint8_t *)src;
+	ecn_obj_t *sobj = cast_obj2((const EOBJINIB *)item->exinf);
+	uint8_t eprpcnt;
+	int i;
+
+	switch (item->eprpcd) {
+	/* CX^XXgÊmÌê */
+	case 0xD5:
+	/* ©m[hCX^XXgrÊmÌê */
+	case 0xD6:
+		if ((node != NULL) && (node->state == ecn_node_state_idle)) {
+			ecn_agent_queue_t *devices = &node->devices;
+			ecn_agent_queue_t *queue = devices->p_next;
+#ifdef _DEBUG
+			assert(queue->p_parent == devices);
+#endif
+			for (; queue != devices; queue = queue->p_next) {
+				ecn_obj_t *obj = cast_obj(queue);
+				obj->pmapFlag = 0;
+			}
+			node->base.pmapFlag = 0;
+			node->state = ecn_node_state_start;
+			node->timer = (TMO)1000;
+			node->current = sobj;
+		}
+		break;
+	/* ÊmvpeB}bvÌê */
+	case 0x9D:
+		eprpcnt = edt[0];
+
+		if (eprpcnt < 16) {
+			/* TCY`FbN */
+			if (eprpcnt + 1 != size)
+				return 0;
+
+			for (i = 1; i < size; i++)
+				ecn_agent_set_epc_to_prop_map(edt[i], sobj->pmapAnno);
+		}
+		else {
+			/* TCY`FbN */
+			if (size != 17)
+				return 0;
+
+			memcpy(sobj->pmapAnno, &edt[1], 16);
+		}
+		sobj->eprpcnt = eprpcnt;
+		sobj->pmapFlag |= PMAP_FLAG_ANNO;
+		break;
+	/* SETvpeB}bvÌê */
+	case 0x9E:
+		eprpcnt = edt[0];
+
+		if (eprpcnt < 16) {
+			/* TCY`FbN */
+			if (eprpcnt + 1 != size)
+				return 0;
+
+			for (i = 1; i < size; i++)
+				ecn_agent_set_epc_to_prop_map(edt[i], sobj->pmapSet);
+		}
+		else {
+			/* TCY`FbN */
+			if (size != 17)
+				return 0;
+
+			memcpy(sobj->pmapSet, &edt[1], 16);
+		}
+		sobj->eprpcnt = eprpcnt;
+		sobj->pmapFlag |= PMAP_FLAG_SET;
+		break;
+	/* GETvpeB}bvÌê */
+	case 0x9F:
+		eprpcnt = edt[0];
+
+		if (eprpcnt < 16) {
+			/* TCY`FbN */
+			if (eprpcnt + 1 != size)
+				return 0;
+
+			for (i = 1; i < size; i++)
+				ecn_agent_set_epc_to_prop_map(edt[i], sobj->pmapGet);
+		}
+		else {
+			/* TCY`FbN */
+			if (size != 17)
+				return 0;
+
+			memcpy(sobj->pmapGet, &edt[1], 16);
+		}
+		sobj->eprpcnt = eprpcnt;
+		sobj->pmapFlag |= PMAP_FLAG_GET;
+		break;
+	default:
+		g_forward_esv = true;
+		return 0;
+	}
+
+	agent->msg_proced = true;
+
+	return size;
+}
+
+ER ecn_agent_get_device_list(ID sender, int requestid, ECN_FBS_ID *pk_req)
+{
+	ER a_ret;
+	ECN_FBS_ID req;
+
+	a_ret = _ecn_tsk_cre_req_fbs(sender, ECN_INM_GET_DEVICE_LIST_REQ, &req);
+	if (a_ret != E_OK) {
+		return a_ret;
+	}
+
+	a_ret = _ecn_fbs_add_data_ex(req, &requestid, sizeof(((ecn_inm_get_device_list_req_t *)0)->requestid));
+	if (a_ret != E_OK) {
+		_ecn_fbs_del(req);
+		return a_ret;
+	}
+
+	*pk_req = req;
+
+	return E_OK;
+}
+
+ER ecn_agent_get_device_info(ID sender, int requestid, ID eobjid, ECN_FBS_ID *pk_req)
+{
+	ER a_ret;
+	ECN_FBS_ID req;
+
+	a_ret = _ecn_tsk_cre_req_fbs(sender, ECN_INM_GET_DEVICE_INFO_REQ, &req);
+	if (a_ret != E_OK) {
+		return a_ret;
+	}
+
+	a_ret = _ecn_fbs_add_data_ex(req, &requestid, sizeof(((ecn_inm_get_device_info_req_t *)0)->requestid));
+	if (a_ret != E_OK) {
+		_ecn_fbs_del(req);
+		return a_ret;
+	}
+
+	a_ret = _ecn_fbs_add_data_ex(req, &eobjid, sizeof(((ecn_inm_get_device_info_req_t *)0)->eobjid));
+	if (a_ret != E_OK) {
+		_ecn_fbs_del(req);
+		return a_ret;
+	}
+
+	*pk_req = req;
+
+	return E_OK;
+}
Index: uKadecot/trunk/ecnl_ssp/echonet_agent.h
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_agent.h	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet_agent.h	(revision 101)
@@ -0,0 +1,185 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		ECHONET Lite ®I¶¬m[h
+ */
+
+#ifndef ECHONET_NODE_H
+#define ECHONET_NODE_H
+
+#include "echonet.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define TNUM_AEOBJID 20
+
+/*
+ *  L
+[Ìf[^\¢Ìè`
+ */
+typedef struct ecn_agent_queue {
+#ifdef _DEBUG
+	struct ecn_agent_queue *p_parent;	/* eL
+[ÖÌ|C^ */
+#endif
+	struct ecn_agent_queue *p_next;		/* GgÖÌ|C^ */
+	struct ecn_agent_queue *p_prev;		/* OGgÖÌ|C^ */
+} ecn_agent_queue_t;
+
+#define PMAP_FLAG_SET	0x01
+#define PMAP_FLAG_GET	0x02
+#define PMAP_FLAG_ANNO	0x04
+
+typedef struct ecn_obj
+{
+	ID eobjId;
+	EOBJINIB inib;
+	uint8_t pmapFlag;
+	uint8_t pmapSet[16];		/* SETvpeB}bv */
+	uint8_t pmapGet[16];		/* GETvpeB}bv */
+	uint8_t pmapAnno[16];		/* óÔÏ»ÊmvpeB}bv */
+	uint_t eprpcnt;				/* ECHONET Lite vpeB */
+} ecn_obj_t;
+
+typedef enum ecn_node_state
+{
+	ecn_node_state_idle,
+	ecn_node_state_start,
+	ecn_node_state_set_prpmap_wait,
+	ecn_node_state_get_prpmap_wait,
+	ecn_node_state_anno_prpmap_wait,
+	ecn_node_state_fault,
+} ecn_node_state_t;
+
+typedef struct ecn_node
+{
+	ecn_obj_t base;
+	EOBJCB eobj;
+	ECN_ENOD_ID enodId;
+	ecn_agent_queue_t devices;
+	ecn_node_state_t state;
+	TMO timer;
+	ecn_obj_t *current;
+	int retry;
+} ecn_node_t;
+
+typedef struct ecn_device
+{
+	ecn_obj_t base;
+	ecn_node_t *node;
+} ecn_device_t;
+
+typedef struct ecn_inm_get_device_list_req
+{
+	unsigned int requestid;
+} ecn_inm_get_device_list_req_t;
+
+typedef struct ecn_inm_get_device_item
+{
+	ID			eobjid;			/* ECHONET Lite IuWFNgID */
+	ID			enodid;			/* ECHONET Lite m[hvt@CIuWFNgID */
+	uint8_t		state;			/* îñûWóÔ */
+	uint8_t		eojx1;			/* ECHONET Lite IuWFNgÌNXO[vR[h */
+	uint8_t		eojx2;			/* ECHONET Lite IuWFNgÌNXR[h */
+	uint8_t		eojx3;			/* ECHONET Lite IuWFNgÌCX^XR[h */
+	ECN_ENOD_ID	addrid;			/* IPAhXæ¾pID */
+} ecn_inm_get_device_item_t;
+
+typedef struct ecn_inm_get_device_list_res
+{
+	unsigned int requestid;
+	ecn_inm_get_device_item_t devices[1];
+} ecn_inm_get_device_list_res_t;
+
+typedef struct ecn_inm_get_device_info_req
+{
+	unsigned int requestid;
+	ID eobjid;
+} ecn_inm_get_device_info_req_t;
+
+typedef struct ecn_inm_get_device_info_res
+{
+	unsigned int requestid;
+	ID eobjid;
+	uint8_t pmapSet[16];
+	uint8_t pmapGet[16];
+	uint8_t pmapAnno[16];
+	uint_t eprpcnt;
+} ecn_inm_get_device_info_res_t;
+
+/* ú» */
+void ecn_agent_init(void);
+/* m[hðõ */
+ecn_node_t *ecn_agent_find_node(ECN_ENOD_ID enodid);
+/* @íðõ */
+ecn_obj_t *ecn_agent_find_eobj(const EOBJCB *pk_nod, T_ECN_EOJ eoj);
+/* IuWFNgIDðæ¾ */
+ID ecn_agent_get_eobj(const EOBJINIB *pk_obj);
+/* Ì@íðæ¾ */
+const EOBJINIB *ecn_agent_next_eobj(const EOBJCB *pk_nod, const EOBJINIB *pk_obj);
+/* IuWFNgID©çEOJÆm[hIDðæ¾ */
+bool_t ecn_agent_get_eoj_enodid(ID eobjid, T_ECN_EOJ *eoj, ECN_ENOD_ID *enodid);
+/* ^CAEglðÔ· */
+TMO ecn_agent_get_timer();
+/* ^C}[ÌÔðißé */
+void ecn_agent_progress(TMO interval);
+/* ^CAEgiÌ½ßÌÄÑoµj */
+void ecn_agent_timeout();
+/* àbZ[W */
+bool_t ecn_agent_proc_int_msg(ECN_FBS_ID fbs, uint8_t cmd);
+/* ECHONETd¶óM */
+void ecn_agent_proc_ecn_msg(const EOBJCB **snod, const EOBJINIB **sobj, T_EDATA *esv);
+/* ECHONETd¶óMI¹ */
+void ecn_agent_proc_ecn_msg_end();
+/* vpeBðæ¾ */
+const EPRPINIB *ecn_agent_get_property(const EOBJINIB *fp_obj, uint8_t fa_epc, const EPRPINIB *item);
+
+ER ecn_agent_get_device_list(ID sender, int requestid, ECN_FBS_ID *pk_req);
+ER ecn_agent_get_device_info(ID sender, int requestid, ID eobjid, ECN_FBS_ID *pk_req);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ECHONET_NODE_H */
Index: uKadecot/trunk/ecnl_ssp/echonet_api.csv
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_api.csv	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet_api.csv	(revision 101)
@@ -0,0 +1,2 @@
+eobj,ECN_CRE_EOBJ,#eobjid { .eobjatr &enodid &exinf .eojx1 .eojx2 .eojx3 },,
+eprp,ECN_DEF_EPRP,&eobjid { .eprpcd .eprpatr .eprpsz &exinf &eprpset &eprpget },-1,
Index: uKadecot/trunk/ecnl_ssp/echonet_chk.tf
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_chk.tf	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet_chk.tf	(revision 101)
@@ -0,0 +1,178 @@
+$ =====================================================================
+$ 
+$  TOPPERS ECHONET Lite Communication Middleware
+$ 
+$  Copyright (C) 2014 Cores Co., Ltd. Japan
+$ 
+$  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+$  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+$  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+$       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+$      XR[hÉÜÜêÄ¢é±ÆD
+$  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+$      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+$      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+$      Ì³ÛØKèðfÚ·é±ÆD
+$  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+$      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+$      ÆD
+$    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+$        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+$        ñ·é±ÆD
+$  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+$      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+$      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+$      ÆÓ·é±ÆD
+$ 
+$  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+$  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+$  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+$  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+$  ÌÓCðíÈ¢D
+$ 
+$  @(#) $Id$
+$ 
+$ =====================================================================
+
+$ =====================================================================
+$ K{vpeBÌ`FbN
+$ =====================================================================
+
+$FUNCTION compare$
+	$RESULT = ARGV[1] - ARGV[2]$
+$END$
+
+$ vt@CIuWFNgX[p[NX
+$ProfileObjectSuperClass.EPC = { 0x88, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x9D, 0x9E, 0x9F }$
+$ProfileObjectSuperClass.MUST = { EPC_NONE, EPC_RULE_GET, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_RULE_GET, EPC_RULE_GET, EPC_RULE_GET }$
+
+$ m[hvt@CNX
+$NodeProfileClass.EPC = { 0x80, 0x82, 0x83, 0x89, 0xBF, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7 }$
+$NodeProfileClass.MUST = { EPC_RULE_GET, EPC_RULE_GET, EPC_RULE_GET, EPC_NONE, EPC_NONE, EPC_RULE_GET, EPC_RULE_GET, EPC_RULE_ANNO, EPC_RULE_GET, EPC_RULE_GET }$
+
+$ @íIuWFNgX[p[NX
+$DeviceSuperClass.EPC = { 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x93, 0x97, 0x98, 0x99, 0x9A, 0x9D, 0x9E, 0x9F }$
+$DeviceSuperClass.MUST = { EPC_RULE_GET, EPC_RULE_SET|EPC_RULE_GET, EPC_RULE_GET, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_RULE_GET, EPC_NONE, EPC_RULE_GET, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_RULE_GET, EPC_RULE_GET, EPC_RULE_GET }$
+
+$ResultOfGetPropertyInfo = {}$
+
+$FUNCTION GetPropertyInfo$
+	$eoj.x1 = ARGV[1]$
+	$eoj.x2 = ARGV[2]$
+	$attr = ARGV[3]$
+	$list = {}$
+	$FOREACH i { 0 , 1 , ... , 15 }$
+		$map[i] = 0x00$
+	$END$
+
+	$IF (attr != EPC_ANNOUNCE) && (attr != EPC_RULE_SET) && (attr != EPC_RULE_GET)$
+		$ERROR$$FORMAT("%1% is illegal value, must be EPC_RULE_ANNO or EPC_RULE_SET or EPC_RULE_GET.", attr)$$END$
+	$END$
+
+	$IF eoj.x1 == EOJ_X1_SENSOR$
+		$i = 0$
+		$WHILE i < LENGTH(DeviceSuperClass.EPC)$
+			$IF (AT(DeviceSuperClass.MUST, i) & attr) != 0$
+				$list = APPEND(list, AT(DeviceSuperClass.EPC, i))$
+			$END$
+			$i = i + 1$
+		$END$
+	$ELIF eoj.x1 == EOJ_X1_AIR_CONDITIONER$
+		$i = 0$
+		$WHILE i < LENGTH(DeviceSuperClass.EPC)$
+			$IF (AT(DeviceSuperClass.MUST, i) & attr) != 0$
+				$list = APPEND(list, AT(DeviceSuperClass.EPC, i))$
+			$END$
+			$i = i + 1$
+		$END$
+	$ELIF eoj.x1 == EOJ_X1_AMENITY$
+		$i = 0$
+		$WHILE i < LENGTH(DeviceSuperClass.EPC)$
+			$IF (AT(DeviceSuperClass.MUST, i) & attr) != 0$
+				$list = APPEND(list, AT(DeviceSuperClass.EPC, i))$
+			$END$
+			$i = i + 1$
+		$END$
+	$ELIF eoj.x1 == EOJ_X1_HOUSEWORK$
+		$i = 0$
+		$WHILE i < LENGTH(DeviceSuperClass.EPC)$
+			$IF (AT(DeviceSuperClass.MUST, i) & attr) != 0$
+				$list = APPEND(list, AT(DeviceSuperClass.EPC, i))$
+			$END$
+			$i = i + 1$
+		$END$
+	$ELIF eoj.x1 == EOJ_X1_WELLNESS$
+		$i = 0$
+		$WHILE i < LENGTH(DeviceSuperClass.EPC)$
+			$IF (AT(DeviceSuperClass.MUST, i) & attr) != 0$
+				$list = APPEND(list, AT(DeviceSuperClass.EPC, i))$
+			$END$
+			$i = i + 1$
+		$END$
+	$ELIF eoj.x1 == EOJ_X1_CONTROLLER$
+		$i = 0$
+		$WHILE i < LENGTH(DeviceSuperClass.EPC)$
+			$IF (AT(DeviceSuperClass.MUST, i) & attr) != 0$
+				$list = APPEND(list, AT(DeviceSuperClass.EPC, i))$
+			$END$
+			$i = i + 1$
+		$END$
+	$ELIF eoj.x1 == EOJ_X1_AUDIO_VISUAL$
+		$i = 0$
+		$WHILE i < LENGTH(DeviceSuperClass.EPC)$
+			$IF (AT(DeviceSuperClass.MUST, i) & attr) != 0$
+				$list = APPEND(list, AT(DeviceSuperClass.EPC, i))$
+			$END$
+			$i = i + 1$
+		$END$
+	$ELIF eoj.x1 == EOJ_X1_PROFILE$
+		$i = 0$
+		$WHILE i < LENGTH(ProfileObjectSuperClass.EPC)$
+			$IF (AT(ProfileObjectSuperClass.MUST, i) & attr) != 0$
+				$list = APPEND(list, AT(ProfileObjectSuperClass.EPC, i))$
+			$END$
+			$i = i + 1$
+		$END$
+		$IF eoj.x2 == EOJ_X2_NODE_PROFILE$
+			$i = 0$
+			$WHILE i < LENGTH(NodeProfileClass.EPC)$
+				$IF (AT(NodeProfileClass.MUST, i) & attr) != 0$
+					$list = APPEND(list, AT(NodeProfileClass.EPC, i))$
+				$END$
+				$i = i + 1$
+			$END$
+		$END$
+	$ELIF eoj.x1 == EOJ_X1_USER_DEFINED$
+		$i = 0$
+		$WHILE i < LENGTH(DeviceSuperClass.EPC)$
+			$IF (AT(DeviceSuperClass.MUST, i) & attr) != 0$
+				$list = APPEND(list, AT(DeviceSuperClass.EPC, i))$
+			$END$
+			$i = i + 1$
+		$END$
+	$END$
+
+	$i = 0$
+	$WHILE i < LENGTH(list)$
+		$pos = AT(list, i) & 0xF$
+		$bit = (AT(list, i) >> 4) - 8$
+		$map[pos] = map[pos] | (1 << bit)$
+		$i = i + 1$
+	$END$
+
+	$ResultOfGetPropertyInfo = {}$
+	$i = 0$
+	$WHILE i < LENGTH(list)$
+		$ResultOfGetPropertyInfo = APPEND(ResultOfGetPropertyInfo, AT(list, i))$
+		$i = i + 1$
+	$END$
+
+	$RESULT = ResultOfGetPropertyInfo$
+$END$
Index: uKadecot/trunk/ecnl_ssp/echonet_class.h
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_class.h	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet_class.h	(revision 101)
@@ -0,0 +1,618 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#ifndef ECHONET_CLASS_H
+#define ECHONET_CLASS_H
+
+/* ZT[ÖA@í */
+#define EOJ_X1_SENSOR 0x00
+
+/* ó²ÖA@í */
+#define EOJ_X1_AIR_CONDITIONER 0x01
+
+/* ZîEÝõÖA@í */
+#define EOJ_X1_AMENITY 0x02
+
+/* ²EÆÖA@í */
+#define EOJ_X1_HOUSEWORK 0x03
+
+/* NÖA@í */
+#define EOJ_X1_WELLNESS 0x04
+
+/* ÇEìÖA@í */
+#define EOJ_X1_CONTROLLER 0x05
+
+/* AVÖA@í */
+#define EOJ_X1_AUDIO_VISUAL 0x06
+
+/* vt@C */
+#define EOJ_X1_PROFILE 0x0E
+
+/* [U[è` */
+#define EOJ_X1_USER_DEFINED 0x0F
+
+/*
+ * ZTÖA@íNXO[v *
+ */
+/* KXRêZT */
+#define EOJ_X2_GAS_LEAK_SENSOR 0x01
+
+/* hÆZT */
+#define EOJ_X2_CRIME_PREVENTION_SENSOR 0x02
+
+/* ñí{^ */
+#define EOJ_X2_EMERGENCY_BUTTON 0x03
+
+/* ~}pZT */
+#define EOJ_X2_FIRST_AID_SENSOR 0x04
+
+/* nkZT */
+#define EOJ_X2_EARTHQUAKE_SENSOR 0x05
+
+/* RdZT */
+#define EOJ_X2_ELECTRIC_LEAK_SENSOR 0x06
+
+/* lÌmZT */
+#define EOJ_X2_HUMAN_DETECTION_SENSOR 0x07
+
+/* qZT */
+#define EOJ_X2_VISITOR_SENSOR 0x08
+
+/* ÄÑoµZT */
+#define EOJ_X2_CALL_SENSOR 0x09
+
+/* IZT */
+#define EOJ_X2_CONDENSATION_SENSOR 0x0A
+
+/* óCõZT */
+#define EOJ_X2_AIR_POLLUTION_SENSOR 0x0B
+
+/* _fZT */
+#define EOJ_X2_OXYGEN_SENSOR 0x0C
+
+/* ÆxZT */
+#define EOJ_X2_ILLUMINANCE_SENSOR 0x0D
+
+/* ¹ZT */
+#define EOJ_X2_SOUND_SENSOR 0x0E
+
+/* ZT */
+#define EOJ_X2_MAILING_SENSOR 0x0F
+
+/* d×ZT */
+#define EOJ_X2_WEIGHT_SENSOR 0x10
+
+/* ·xZT */
+#define EOJ_X2_TEMPERATURE_SENSOR 0x11
+
+/* ¼xZT */
+#define EOJ_X2_HUMIDITY_SENSOR 0x12
+
+/* JZT */
+#define EOJ_X2_RAIN_SENSOR 0x13
+
+/* 
+ÊZT */
+#define EOJ_X2_WATER_LEVEL_SENSOR 0x14
+
+/* C
+ÊZT */
+#define EOJ_X2_BATH_WATER_LEVEL_SENSOR 0x15
+
+/* C¦«ãªèZT */
+#define EOJ_X2_BATH_HEATING_STATUS_SENSOR 0x16
+
+/* 
+RêZT */
+#define EOJ_X2_WATER_LEAK_SENSOR 0x17
+
+/* 
+ ÓêZT */
+#define EOJ_X2_WATER_OVERFLOW_SENSOR 0x18
+
+/* ÎÐZT */
+#define EOJ_X2_FIRE_SENSOR 0x19
+
+/* ^oRZT */
+#define EOJ_X2_CIGARETTE_SMOKE_SENSOR 0x1A
+
+/* bnQZT */
+#define EOJ_X2_CO2_SENSOR 0x1B
+
+/* KXZT */
+#define EOJ_X2_GAS_SENSOR 0x1C
+
+/* unbZT */
+#define EOJ_X2_VOC_SENSOR 0x1D
+
+/* ·³ZT */
+#define EOJ_X2_DIFFERENTIAL_PRESSURE_SENSOR 0x1E
+
+/* ¬ZT */
+#define EOJ_X2_AIR_SPEED_SENSOR 0x1F
+
+/* L¢ZT */
+#define EOJ_X2_ODOR_SENSOR 0x20
+
+/* ZT */
+#define EOJ_X2_FLAME_SENSOR 0x21
+
+/* dÍÊZT */
+#define EOJ_X2_ELECTRIC_ENERGY_SENSOR 0x22
+
+/* d¬ÊZT */
+#define EOJ_X2_CURRENT_VALUE_SENSOR 0x23
+
+/* õZT */
+#define EOJ_X2_DAYLIGHT_SENSOR 0x24
+
+/* 
+¬ÊZT */
+#define EOJ_X2_WATER_FLOW_RATE_SENSOR 0x25
+
+/* ÷®ZT */
+#define EOJ_X2_MICROMOTION_SENSOR 0x26
+
+/* ÊßZT */
+#define EOJ_X2_PASSAGE_SENSOR 0x27
+
+/* Ý°ZT */
+#define EOJ_X2_BED_PRESENCE_SENSOR 0x28
+
+/* JÂZT */
+#define EOJ_X2_OPEN_CLOSE_SENSOR 0x29
+
+/* ®ÊZT */
+#define EOJ_X2_ACTIVITY_AMOUNT_SENSOR 0x2A
+
+/* lÌÊuZT */
+#define EOJ_X2_HUMAN_BODY_LOCATION_SENSOR 0x2B
+
+/* áZT */
+#define EOJ_X2_SNOW_SENSOR 0x2C
+
+/*
+ * ó²ÖA@íNXO[v *
+ */
+/* ÆëpGAR */
+#define EOJ_X2_HOME_AIR_CONDITIONER 0x30
+
+/* â@ */
+#define EOJ_X2_COLD_BLASTER 0x31
+
+/* î@ */
+#define EOJ_X2_ELECTRIC_FAN 0x32
+
+/* ·Cî */
+#define EOJ_X2_VENTILATION_FAN 0x33
+
+/* ó²·Cî */
+#define EOJ_X2_AIR_CONDITIONING_VENTILATION_FAN 0x34
+
+/* óC´òí */
+#define EOJ_X2_AIR_CLEANER 0x35
+
+/* âî */
+#define EOJ_X2_COLD_BLAST_FAN 0x36
+
+/* T[L
+[^ */
+#define EOJ_X2_CIRCULATOR 0x37
+
+/* ¼@ */
+#define EOJ_X2_DEHUMIDIFIER 0x38
+
+/* Á¼í */
+#define EOJ_X2_HUMIDIFIER 0x39
+
+/* Väî */
+#define EOJ_X2_CEILING_FAN 0x3A
+
+/* dC±½Â */
+#define EOJ_X2_ELECTRIC_KOTATSU 0x3B
+
+/* dC ñ© */
+#define EOJ_X2_ELECTRIC_HEATING_PAD 0x3C
+
+/* dCÑz */
+#define EOJ_X2_ELECTRIC_BLANKET 0x3D
+
+/* Xg[u */
+#define EOJ_X2_SPACE_HEATER 0x3E
+
+/* plq[^ */
+#define EOJ_X2_PANEL_HEATER 0x3F
+
+/* dCJ[ybg */
+#define EOJ_X2_ELECTRIC_CARPET 0x40
+
+/* tAq[^ */
+#define EOJ_X2_FLOOR_HEATER 0x41
+
+/* dCg[í */
+#define EOJ_X2_ELECTRIC_HEATER 0x42
+
+/* t@q[^ */
+#define EOJ_X2_FAN_HEATER 0x43
+
+/* [dí */
+#define EOJ_X2_BATTERY_CHARGER 0x44
+
+/* Æ±ppbP[WGARºà@ */
+#define EOJ_X2_PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_INDOOR_UNIT 0x45
+
+/* Æ±ppbP[WGARºO@ */
+#define EOJ_X2_PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_OUTDOOR_UNIT 0x46
+
+/* Æ±ppbP[WGAR~Mjbg */
+#define EOJ_X2_PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_THERMAL_STORAGE_UNIT 0x47
+
+/* Æ±pt@RCjbg */
+#define EOJ_X2_COMMERCIAL_FAN_COIL_UNIT 0x48
+
+/* Æ±pó²âM¹(`[) */
+#define EOJ_X2_COMMERCIAL_AIR_CONDITIONING_COLD_SOURCE_CHILLER 0x49
+
+/* Æ±pó²·M¹({C[) */
+#define EOJ_X2_COMMERCIAL_AIR_CONDITIONING_HEAT_SOURCE_BOILER 0x50
+
+/* Æ±pó²VAV */
+#define EOJ_X2_AIR_CONDITIONING_VAV_FOR_COMMERCIAL_APPLICATION 0x51
+
+/* Æ±pó²GAnhOjbg */
+#define EOJ_X2_AIR_HANDLING_UNIT_AIR_CONDITIONING_FOR_COMMERCIAL_APPLICATION 0x52
+
+/* jbgN[[ */
+#define EOJ_X2_UNIT_COOLER 0x53
+
+/* Æ±pRfVOjbg */
+#define EOJ_X2_CONDENSING_UNIT_FOR_COMMERCIAL_APPLICATION 0x54
+
+/*
+ * ZîEÝõÖA@íNXO[v *
+ */
+/* d®uCh */
+#define EOJ_X2_ELECTRICALLY_OPERATED_SHADE 0x60
+
+/* d®Vb^[ */
+#define EOJ_X2_ELECTRICALLY_OPERATED_SHUTTER 0x61
+
+/* d®J[e */
+#define EOJ_X2_ELECTRICALLY_OPERATED_CURTAIN 0x62
+
+/* d®JË */
+#define EOJ_X2_ELECTRICALLY_OPERATED_STORM_WINDOW 0x63
+
+/* d®K[W */
+#define EOJ_X2_ELECTRICALLY_OPERATED_DOOR 0x64
+
+/* d®V */
+#define EOJ_X2_ELECTRICALLY_OPERATED_SKYLIGHT 0x65
+
+/* I[jOiúæ¯j */
+#define EOJ_X2_AWNING 0x66
+
+/* U
+íiëpj */
+#define EOJ_X2_GARDEN_SPRINKLER 0x67
+
+/* U
+íiÎÐpj */
+#define EOJ_X2_FIRE_SPRINKLER 0x68
+
+/* ¬
+ */
+#define EOJ_X2_FOUNTAIN 0x69
+
+/* uÔ¦í */
+#define EOJ_X2_INSTANTANEOUS_WATER_HEATERS 0x6A
+
+/* dC·
+í */
+#define EOJ_X2_ELECTRIC_WATER_HEATER 0x6B
+
+/* ¾zM·
+í */
+#define EOJ_X2_SOLAR_WATER_HEATER 0x6C
+
+/* zÂ|v */
+#define EOJ_X2_CIRCULATION_PUMP 0x6D
+
+/* dCÖÀi·
+ôòÖÀAg[ÖÀÈÇj */
+#define EOJ_X2_BIDET_EQUIPPED_TOILET 0x6E
+
+/* dCù */
+#define EOJ_X2_ELECTRIC_KEY 0x6F
+
+/* KX³Ù */
+#define EOJ_X2_GAS_LINE_VALVE 0x70
+
+/* z[TEi */
+#define EOJ_X2_HOME_SAUNA 0x71
+
+/* uÔ®í */
+#define EOJ_X2_HOT_WATER_GENERATOR 0x72
+
+/* ºg[£@ */
+#define EOJ_X2_BATHROOM_DRYER 0x73
+
+/* z[Gx[^ */
+#define EOJ_X2_HOME_ELEVATOR 0x74
+
+/* d®ÔdØè */
+#define EOJ_X2_ELECTRICALLY_OPERATED_ROOM_DIVIDER 0x75
+
+/* 
+½gXt@ */
+#define EOJ_X2_HORIZONTAL_TRANSFER 0x76
+
+/* d®¨±µ */
+#define EOJ_X2_ELECTRICALLY_OPERATED_CLOTHES_DRYING_POLE 0x77
+
+/* ò»
+ */
+#define EOJ_X2_SEPTIC_TANK 0x78
+
+/* Zîp¾zõ­d */
+#define EOJ_X2_HOME_SOLAR_POWER_GENERATION 0x79
+
+/* â·
+M¹@ */
+#define EOJ_X2_COLD_AND_HOT_WATER_HEAT_SOURCE_EQUIPMENT 0x7A
+
+/* °g[ */
+#define EOJ_X2_FLOOR_HEATING 0x7B
+
+/* R¿dr */
+#define EOJ_X2_FUEL_CELL 0x7C
+
+/* ~dr */
+#define EOJ_X2_STORAGE_BATTERY 0x7D
+
+/* dC©®Ô[údVXe */
+#define EOJ_X2_ELECTRIC_VEHICLE 0x7E
+
+/* dÍÊ[^ */
+#define EOJ_X2_ELECTRIC_ENERGY_METER 0x80
+
+/* 
+¬Ê[^ */
+#define EOJ_X2_WATER_FLOW_METER 0x81
+
+/* KX[^ */
+#define EOJ_X2_GAS_METER 0x82
+
+/* LPKX[^ */
+#define EOJ_X2_LP_GAS_METERS 0x83
+
+/* v */
+#define EOJ_X2_CLOCK 0x84
+
+/* ©®hA */
+#define EOJ_X2_AUTOMATIC_DOOR 0x85
+
+/* Æ±pGx[^ */
+#define EOJ_X2_COMMERCIAL_ELEVATOR 0x86
+
+/* ªdÕ[^O */
+#define EOJ_X2_DISTRIBUTION_PANEL_METERING 0x87
+
+/* X}[gdÍÊ[^ */
+#define EOJ_X2_SMART_ELECTRIC_ENERGY_METER 0x88
+
+/* X}[gKX[^ */
+#define EOJ_X2_SMART_GAS_METER 0x89
+
+/* êÊÆ¾ */
+#define EOJ_X2_GENERAL_LIGHTING_CLASS 0x90
+
+/* ñíÆ¾ */
+#define EOJ_X2_EMERGENCY_LIGHTING 0x99
+
+/* ÝõÆ¾ */
+#define EOJ_X2_EQUIPMENT_LIGHT 0x9D
+
+/* uU[ */
+#define EOJ_X2_BUZZER 0xA0
+
+/*
+ * ²EÆÖA@íNXO[v *
+ */
+/* R[q[[J */
+#define EOJ_X2_COFFEE_MACHINE 0xB0
+
+/* R[q[~ */
+#define EOJ_X2_COFFEE_MILL 0xB1
+
+/* dC|bg */
+#define EOJ_X2_ELECTRIC_HOT_WATER_POT 0xB2
+
+/* dC±ñë */
+#define EOJ_X2_ELECTRIC_STOVE 0xB3
+
+/* g[X^ */
+#define EOJ_X2_TOASTER 0xB4
+
+/* W
+[TE~LT */
+#define EOJ_X2_JUICER_FOOD_MIXER 0xB5
+
+/* t[hvZbT */
+#define EOJ_X2_FOOD_PROCESSOR 0xB6
+
+/* ââ É */
+#define EOJ_X2_REFRIGERATOR_FREEZER 0xB7
+
+/* I[uW */
+#define EOJ_X2_COMBINATION_MICROWAVE_OVEN 0xB8
+
+/* NbLOq[^ */
+#define EOJ_X2_COOKING_HEATER 0xB9
+
+/* I[u */
+#define EOJ_X2_OVEN 0xBA
+
+/* Ñí */
+#define EOJ_X2_RICE_COOKER 0xBB
+
+/* dqW[ */
+#define EOJ_X2_ELECTRONIC_JAR 0xBC
+
+/* Híô¢@ */
+#define EOJ_X2_DISH_WASHER 0xBD
+
+/* Hí£@ */
+#define EOJ_X2_DISH_DRYER 0xBE
+
+/* dCà¿Â«@ */
+#define EOJ_X2_ELECTRIC_RICE_CAKE_COOKER 0xBF
+
+/* Û·@ */
+#define EOJ_X2_KEEP_WARM_MACHINE 0xC0
+
+/* ¸Ä@ */
+#define EOJ_X2_RICE_MILL 0xC1
+
+/* ©®»p@ */
+#define EOJ_X2_AUTOMATIC_BREAD_COOKER 0xC2
+
+/* X[NbJ[ */
+#define EOJ_X2_SLOW_COOKER 0xC3
+
+/* dCÐ¨@ */
+#define EOJ_X2_ELECTRIC_PICKLES_COOKER 0xC4
+
+/* ôó@ */
+#define EOJ_X2_WASHING_MACHINE 0xC5
+
+/* ßÞ£@ */
+#define EOJ_X2_CLOTH_DRYER 0xC6
+
+/* dCAC */
+#define EOJ_X2_ELECTRIC_IRON 0xC7
+
+/* Y{vbT */
+#define EOJ_X2_TROUSER_PRESS 0xC8
+
+/* ÓÆñ£@ */
+#define EOJ_X2_FUTON_DRYER 0xC9
+
+/* ¬¨E­Â£@ */
+#define EOJ_X2_SMALL_ARTICLE_SHOES_DRYER 0xCA
+
+/* dC|@iZgN[iÜÞj */
+#define EOJ_X2_ELECTRIC_VACUUM_CLEANER 0xCB
+
+/* fBX|[U */
+#define EOJ_X2_DISPOSER 0xCC
+
+/* dCáæè@ */
+#define EOJ_X2_ELECTRIC_MOSQUITO_CATCHER 0xCD
+
+/* Æ±pV[P[X */
+#define EOJ_X2_COMMERCIAL_SHOW_CASE 0xCE
+
+/* Æ±pâ É */
+#define EOJ_X2_COMMERCIAL_REFRIGERATOR 0xCF
+
+/* Æ±pzbgP[X */
+#define EOJ_X2_COMMERCIAL_HOT_CASE 0xD0
+
+/* Æ±ptC[ */
+#define EOJ_X2_COMMERCIAL_FRYER 0xD1
+
+/* Æ±pdqW */
+#define EOJ_X2_COMMERCIAL_MICROWAVE_OVEN 0xD2
+
+/* ôó£@ */
+#define EOJ_X2_WASHER_AND_DRYER 0xD3
+
+/*
+ * NÖA@íNXO[v *
+ */
+/* Ìdv */
+#define EOJ_X2_WEIGHING_MACHINE 0x01
+
+/* Ì·v */
+#define EOJ_X2_CLINICAL_THERMOMETER 0x02
+
+/* ³v */
+#define EOJ_X2_BLOOD_PRESSURE_METER 0x03
+
+/* lv */
+#define EOJ_X2_BLOOD_SUGAR_METER 0x04
+
+/* Ìbv */
+#define EOJ_X2_BODY_FAT_METER 0x05
+
+/*
+ * ÇEìÖA@íNXO[v *
+ */
+/* ZL
+AÊMp¤L®Ýèm[h */
+#define EOJ_X2_SECURE_COMMUNICATION_SHARED_KEY_SETUP_NODE 0xFC
+
+/* XCb`iJEMA/HA[qÎj */
+#define EOJ_X2_SWITCH 0xFD
+
+/* gÑ[ */
+#define EOJ_X2_PORTABLE_TERMINAL 0xFE
+
+/* Rg[ */
+#define EOJ_X2_CONTROLLER 0xFF
+
+/*
+ * `uÖA@íNXO[v *
+ */
+/* fBXv[ */
+#define EOJ_X2_DISPLAY 0x01
+
+/* er */
+#define EOJ_X2_TELEVISION 0x02
+
+/*
+ * vt@CNXO[v *
+ */
+/* m[hvt@C */
+#define EOJ_X2_NODE_PROFILE 0xF0
+
+#endif /* ECHONET_CLASS_H */
Index: uKadecot/trunk/ecnl_ssp/echonet_dbg.c
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_dbg.c	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet_dbg.c	(revision 101)
@@ -0,0 +1,446 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		ECHONET Lite ^XN fobOoÍ
+ */
+
+#include <kernel.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <t_syslog.h>
+#include <sil.h>
+#include <ctype.h>
+
+#include "syssvc/serial.h"
+#include "syssvc/syslog.h"
+
+#include "echonet.h"
+#include "echonet_dbg.h"
+#include "echonet_fbs.h"
+#include "echonet_task.h"
+
+#ifdef ECN_DBG_WAI_ENA
+#define _ECN_DBG_WAI_SYSLOG _ecn_dbg_wai_syslog()
+#else
+#define _ECN_DBG_WAI_SYSLOG
+#endif
+
+#if defined(ECN_DBG_PUT_ENA) || defined(ECN_CAP_PUT_ENA)
+#if defined(ECN_DBG_WAI_ENA)
+static ER _ecn_dbg_wai_syslog(void);
+/*
+ *  syslog()obt@É]TªÅ«éÜÅÒÂ
+ */
+static ER _ecn_dbg_wai_syslog(void)
+{
+	T_SYSLOG_RLOG	a_rlog;
+	ER				a_ret;
+	int				a_ct = 0;
+#ifndef ECN_DBG_WAI_SYSLOG_RETRY
+ #ifdef LOGTASK
+  #define ECN_DBG_WAI_SYSLOG_RETRY 10
+ #else
+  #define ECN_DBG_WAI_SYSLOG_RETRY 0
+ #endif
+#endif
+
+	for (;;) {
+		a_ret = syslog_ref_log(&a_rlog);
+		if (a_ret < 0)
+			return a_ret;
+		if (1 <= a_rlog.count) {
+			a_ct = 0;
+		} else
+#if (defined ECN_DBG_WAI_SYSLOG_RETRY) && (0 < ECN_DBG_WAI_SYSLOG_RETRY)
+		if (ECN_DBG_WAI_SYSLOG_RETRY <= ++a_ct)
+#endif
+		{
+/*			a_ret = dly_tsk(100);
+			if (a_ret < 0 && a_ret != E_RLWAI)
+				return a_ret; // */
+			break;
+		}
+
+		a_ret = dly_tsk(1);
+		if (a_ret < 0 && a_ret != E_RLWAI)
+			return a_ret;
+	}
+	return 0;
+}
+#endif /* #if defined(ECN_DBG_WAI_ENA) */
+
+/*
+ * fobOoÍ
+ * áF		ECN_DBG_PUT "task start" ECN_DBG_END;
+ */
+int _ecn_dbg_dbgput(const char *fp_srcloc, const char *fp_form, ...)
+{
+	va_list v;
+	char	*p_buf = 0;
+	ID		tskid;
+#ifdef ECN_DBG_PUT_USE_STATIC
+ #ifndef SEM_ECN_DBG_PUT
+	/* 256byteobt@8{[e[V */
+	static char				a_buf[8][256];
+	static volatile uint_t	a_buf_idx = 0;
+	uint_t					a_buf_idx_a;
+ #else
+	/* Z}tHðp¢ÄA1{Ìobt@ãÉ¶ñðÀ×Äg¤ */
+	static char				a_buf[1024];
+	static volatile uint_t	a_buf_pos = 0;
+	size_t					a_buf_len;
+  #define ECN_DBG_PUT_BUF_MAX a_buf_len
+ #endif /* #ifdef SEM_ECN_DBG_PUT */
+#endif /* #ifdef ECN_DBG_PUT_USE_STATIC */
+#ifndef ECN_DBG_PUT_BUF_MAX
+ #define ECN_DBG_PUT_BUF_MAX 255
+#endif
+
+	get_tid(&tskid);
+
+	if (!fp_srcloc)
+		fp_srcloc = "(null)";
+
+#ifdef SEM_ECN_DBG_PUT
+	syscall(wai_sem(SEM_ECN_DBG_PUT));
+#endif
+
+#ifdef ECN_DBG_PUT_USE_STATIC
+ #ifndef SEM_ECN_DBG_PUT
+	a_buf_idx_a = ++a_buf_idx;
+	p_buf = a_buf[a_buf_idx_a & 0x07];
+ #else
+	if (sizeof(a_buf) - a_buf_pos < 80)	/* cèª80byte¢ÉÈÁ½çAæªÉßé */
+		a_buf_pos = 0;
+	p_buf = a_buf + a_buf_pos;
+	a_buf_len = sizeof(a_buf) - a_buf_pos - 1;
+	if (80 * 2 <= a_buf_len)	/* 80byte*2ÈãÌ]ª é¤¿ÍAö80byteðc· */
+		a_buf_len -= 80;
+ #endif /* #ifdef SEM_ECN_DBG_PUT */
+#else
+	p_buf = (char *)_ecn_fbs_mbx_get(255);
+	if (!p_buf) {
+		syslog(LOG_NOTICE, "%s[%d]: (+mbx fault) %s", fp_srcloc, (int)tskid, fp_form);
+ #ifdef SEM_ECN_DBG_PUT
+		syscall(sig_sem(SEM_ECN_DBG_PUT));
+ #endif /* #ifdef SEM_ECN_DBG_PUT */
+		return 1;
+	}
+#endif /* #ifdef ECN_DBG_PUT_USE_STATIC */
+
+	va_start(v, fp_form);
+
+#ifdef _MSC_VER
+	vsnprintf_s(p_buf, ECN_DBG_PUT_BUF_MAX, ECN_DBG_PUT_BUF_MAX, fp_form, v);
+#else
+	vsprintf(p_buf, fp_form, v);
+#endif
+#ifdef ECN_DBG_PUT_USE_STATIC
+ #ifdef SEM_ECN_DBG_PUT
+	a_buf_len = strlen(p_buf) + 1;
+	/* cèª80byte¢ÉÈÁ½ç */
+	if (sizeof(a_buf) - a_buf_pos - a_buf_len < 80) {
+		/* æªÉßé */
+		a_buf_pos = 0;
+	} else {
+		a_buf_pos += a_buf_len;
+	}
+ #endif /* #ifdef SEM_ECN_DBG_PUT */
+#endif
+
+	_ECN_DBG_WAI_SYSLOG; /* syslog()obt@É]TªÅ«éÜÅÒÂ */
+
+#ifdef SEM_ECN_DBG_PUT
+	syscall(sig_sem(SEM_ECN_DBG_PUT));
+#endif
+
+	syslog(LOG_NOTICE, "%s[%d]: %s", fp_srcloc, (int)tskid, p_buf);
+
+	va_end(v);
+
+#ifndef ECN_DBG_PUT_USE_STATIC
+	_ecn_fbs_mbx_rel(p_buf);
+#endif
+	return 0;
+}
+
+/* ECN_ENOD_IDÌ¶ñÏ· */
+const char *_ecn_dbg_enod2str(ECN_ENOD_ID fa_enod_id)
+{
+/*	#define _ECN_FBS_DBG_ENOD2STR_BUF_MAX_BIT (4)
+/*	*/
+#ifdef _ECN_FBS_DBG_ENOD2STR_BUF_MAX_BIT
+	static volatile uint8_t a_idx_vol = 0;
+	static char a_buf[1 << _ECN_FBS_DBG_ENOD2STR_BUF_MAX_BIT][sizeof("ENOD_REMOTE_ID()")+5];
+	uint8_t a_idx;
+#endif
+
+	if (fa_enod_id == ENOD_NOT_MATCH_ID)
+		return "ENOD_NOT_MATCH_ID";
+	if (fa_enod_id == ENOD_MULTICAST_ID)
+		return "ENOD_MULTICAST_ID";
+	if (fa_enod_id == ENOD_LOCAL_ID)
+		return "ENOD_LOCAL_ID";
+	if (fa_enod_id == ENOD_API_ID)
+		return "ENOD_API_ID";
+	if (fa_enod_id == ENOD_REMOTE_ID)
+		return "ENOD_REMOTE_ID(0)";
+	if (fa_enod_id == ((ENOD_REMOTE_ID) + 1))
+		return "ENOD_REMOTE_ID(1)";
+	if (fa_enod_id == ((ENOD_REMOTE_ID) + 2))
+		return "ENOD_REMOTE_ID(2)";
+	if (fa_enod_id == ((ENOD_REMOTE_ID) + 3))
+		return "ENOD_REMOTE_ID(3)";
+	if (fa_enod_id == ((ENOD_REMOTE_ID) + 4))
+		return "ENOD_REMOTE_ID(4)";
+	if (fa_enod_id == ((ENOD_REMOTE_ID) + 5))
+		return "ENOD_REMOTE_ID(5)";
+#ifdef _ECN_FBS_DBG_ENOD2STR_BUF_MAX_BIT
+	if (ENOD_REMOTE_ID <= fa_enod_id) {
+		/* return "ENOD_REMOTE_ID"; */
+		a_idx = (++a_idx_vol) & ((1 << _ECN_FBS_DBG_ENOD2STR_BUF_MAX_BIT) - 1);
+#ifdef _MSC_VER
+		sprintf_s(a_buf[a_idx], sizeof(*a_buf), "ENOD_REMOTE_ID(%d)", fa_enod_id - ENOD_REMOTE_ID);
+#else
+		sprintf(a_buf[a_idx], "ENOD_REMOTE_ID(%d)", fa_enod_id - ENOD_REMOTE_ID);
+#endif
+		return a_buf[a_idx];
+	}
+#endif
+
+	return "?";
+}
+
+/*
+ * oCi_voÍ
+ */
+void _ecn_dbg_bindmp(const uint8_t *buffer, size_t len)
+{
+	/* staticÌæÌobt@ðØèÖ¦éÂ(2^n) */
+	#define _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT (4)
+/*	*/
+#ifdef SEM_ECN_DBG_BINDMP
+ #ifdef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT
+  #undef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT
+  /* Z}tH(SEM_ECN_DBG_BINDMP)ªè`³êÄ¢éêAobt@ØèÖ¦ÍsvÈÌÅundef */
+ #endif
+#endif
+#ifndef _ECN_FBS_DBG_BINDMP_BUFLEN
+ /* obt@TCY(bindmpÌ1sªûÜéTCY) */
+ #define _ECN_FBS_DBG_BINDMP_BUFLEN (80)
+#endif
+#ifdef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT
+	/* staticÌæÌobt@ðØèÖ¦é½ßÌÇpÏ */
+	static volatile uint8_t a_idx_vol = 0;
+	/* staticÌæÌobt@ØèÖ¦Ìæ */
+	static char a_buf_area[1 << _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT][_ECN_FBS_DBG_BINDMP_BUFLEN];
+	uint8_t a_idx;
+	char *a_buf;
+#else
+	/* staticÌæÌobt@Ìæ */
+	static char a_buf[_ECN_FBS_DBG_BINDMP_BUFLEN];
+#endif
+	const uint8_t *p = buffer;			/* ÇÝæè|C^ */
+	int i, a_blk, a_blk_max, a_pos = 0;
+	const T_ECN_EDT_HDR *p_req_esv;
+	const T_ECN_INTERNAL_MSG *p_im;
+
+#ifdef SEM_ECN_DBG_BINDMP
+	syscall(wai_sem(SEM_ECN_DBG_BINDMP));
+#endif
+
+	if (len != 256) {
+		a_blk_max = 1;
+	} else {
+		a_blk_max = ((T_ECN_FST_BLK *)buffer)->hdr.wr.blk
+						+ (((T_ECN_FST_BLK *)buffer)->hdr.wr.pos ? 1 : 0);
+		if (!a_blk_max)
+			a_blk_max = 1;
+	}
+	#ifndef ECN_DBG_BINDMP_MAXLEN
+	 /* bindmpoÍÌÅåTCY */
+	 #define ECN_DBG_BINDMP_MAXLEN 1600
+	#endif
+	if (ECN_DBG_BINDMP_MAXLEN < len) {
+		len = ECN_DBG_BINDMP_MAXLEN;
+	}
+
+#ifdef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT
+	a_idx = (++a_idx_vol) & ((1 << _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT) - 1);
+	a_buf = a_buf_area[a_idx];
+	/* #define a_buf (a_buf_area[a_idx]) */
+#endif
+
+	for (a_blk = 0; p && a_blk < a_blk_max; p = ((T_ECN_FST_BLK *)buffer)->lnk.p_sub[a_blk++]->dat) {
+		if (0 < a_blk) {
+			_ECN_DBG_WAI_SYSLOG; /* syslog()obt@É]TªÅ«éÜÅÒÂ */
+			syslog(LOG_NOTICE, "p_sub[%d] (0x%08X)", a_blk - 1, p);
+		}
+		memset(a_buf, 0, _ECN_FBS_DBG_BINDMP_BUFLEN);
+		for (i = 0; i < (int)len; i++) {
+			if (i % 16 == 0) {
+				if (a_buf[0]) {
+					_ECN_DBG_WAI_SYSLOG; /* syslog()obt@É]TªÅ«éÜÅÒÂ */
+					syslog(LOG_NOTICE, "%s", a_buf);
+				}
+#ifdef _MSC_VER
+				sprintf_s(a_buf, _ECN_FBS_DBG_BINDMP_BUFLEN, "[%08X]:", i);
+#else
+				sprintf(a_buf, "[%08X]:", i);
+#endif
+				a_pos = strlen(a_buf);
+			} else {
+				a_buf[a_pos++] = (i % 16 == 8 ? '-':' ');
+			}
+#ifdef _MSC_VER
+			sprintf_s(a_buf + a_pos, _ECN_FBS_DBG_BINDMP_BUFLEN - a_pos, "%02X", p[i]);
+#else
+			sprintf(a_buf + a_pos, "%02X", p[i]);
+#endif
+			a_pos += 2;
+		}
+		if (a_buf[0]) {
+			_ECN_DBG_WAI_SYSLOG; /* syslog()obt@É]TªÅ«éÜÅÒÂ */
+			syslog(LOG_NOTICE, "%s", a_buf);
+		}
+		if (a_blk_max == 1)
+			break;
+	}
+
+	if (len == 256) {
+		switch (((const T_ECN_FST_BLK *)buffer)->hdr.type) {
+		case ECN_MSG_ECHONET:
+			p_req_esv = &((const T_ECN_FST_BLK *)buffer)->d.t_esv;
+			_ECN_DBG_WAI_SYSLOG; /* syslog()obt@É]TªÅ«éÜÅÒÂ */
+			syslog(LOG_NOTICE, " sender: %d %s, target: %d %s",
+				((T_ECN_FST_BLK *)buffer)->hdr.sender, _ecn_dbg_enod2str(((T_ECN_FST_BLK *)buffer)->hdr.sender),
+				((T_ECN_FST_BLK *)buffer)->hdr.target, _ecn_dbg_enod2str(((T_ECN_FST_BLK *)buffer)->hdr.target));
+			_ECN_DBG_WAI_SYSLOG; /* syslog()obt@É]TªÅ«éÜÅÒÂ */
+			syslog(LOG_NOTICE, " ecn_hdr: 0x%02X 0x%02X 0x%04X", p_req_esv->ecn_hdr.ehd1, p_req_esv->ecn_hdr.ehd2, p_req_esv->ecn_hdr.tid);
+			_ECN_DBG_WAI_SYSLOG; /* syslog()obt@É]TªÅ«éÜÅÒÂ */
+			syslog(LOG_NOTICE, " edata: 0x%06X 0x%06X 0x%02X 0x%02X (%s)",
+				p_req_esv->edata.seoj.eojx1 << 16 | p_req_esv->edata.seoj.eojx2 << 8 | p_req_esv->edata.seoj.eojx3,
+				p_req_esv->edata.deoj.eojx1 << 16 | p_req_esv->edata.deoj.eojx2 << 8 | p_req_esv->edata.deoj.eojx3,
+				p_req_esv->edata.esv, p_req_esv->edata.opc, _ecn_dbg_esv2str(p_req_esv->edata.esv));
+			_ECN_DBG_WAI_SYSLOG; /* syslog()obt@É]TªÅ«éÜÅÒÂ */
+			syslog(LOG_NOTICE, " ecn_prp: 0x%02X 0x%02X", p_req_esv->ecn_prp.epc, p_req_esv->ecn_prp.pdc);
+			_ECN_DBG_WAI_SYSLOG; /* syslog()obt@É]TªÅ«éÜÅÒÂ */
+			syslog(LOG_NOTICE, " cur(blk/pos): wr %d/%d, rd %d/%d",
+				(int)((T_ECN_FST_BLK *)buffer)->hdr.wr.blk,
+				(int)((T_ECN_FST_BLK *)buffer)->hdr.wr.pos,
+				(int)((T_ECN_FST_BLK *)buffer)->hdr.rd.blk,
+				(int)((T_ECN_FST_BLK *)buffer)->hdr.rd.pos);
+		break;
+		case ECN_MSG_INTERNAL:
+			p_im = (const T_ECN_INTERNAL_MSG *)&((const T_ECN_FST_BLK *)buffer)->payload[0];
+			syslog(LOG_NOTICE, " a_im.command: %d:%s", p_im->command,
+				(p_im->command == ECN_INM_NOTIFY_INSTANCELIST ? "ECN_INM_NOTIFY_INSTANCELIST":
+				(p_im->command == ECN_INM_RELEASE_WAIT ? "ECN_INM_RELEASE_WAIT" : "?")));
+			memset(a_buf, 0, _ECN_FBS_DBG_BINDMP_BUFLEN);
+			a_blk_max = ((const T_ECN_FST_BLK *)buffer)->hdr.wr.blk * 64
+					+ ((const T_ECN_FST_BLK *)buffer)->hdr.wr.pos;
+			if (0 < a_blk_max) {
+				if (64 < a_blk_max)
+					a_blk_max = 64;
+				if (_ECN_FBS_DBG_BINDMP_BUFLEN < a_blk_max)
+					a_blk_max = _ECN_FBS_DBG_BINDMP_BUFLEN;
+				for (i = offsetof(T_ECN_INTERNAL_MSG, data); i < a_blk_max; i++) {
+					a_blk = ((const T_ECN_FST_BLK *)buffer)->payload[i];
+					if (!isprint(a_blk) || !isascii(a_blk))
+						a_blk = '.';
+					a_buf[i - 1] = a_blk;
+				}
+				syslog(LOG_NOTICE, " a_im.data: [%s]", &a_buf[offsetof(T_ECN_INTERNAL_MSG, data) - 1]);
+			}
+			break;
+		default:
+			syslog(LOG_NOTICE, " invalid type: %d", ((const T_ECN_FST_BLK *)buffer)->hdr.type);
+		}
+	}
+	else if (8 <= len
+	&& ((const T_ECN_FST_BLK *)buffer)->bin[0] == 0x10
+	&& ((const T_ECN_FST_BLK *)buffer)->bin[1] == 0x81) {
+		p_req_esv = (const T_ECN_EDT_HDR *)&((const T_ECN_FST_BLK *)buffer)->bin[0];
+		_ECN_DBG_WAI_SYSLOG; /* syslog()obt@É]TªÅ«éÜÅÒÂ */
+		syslog(LOG_NOTICE, " ecn_hdr: 0x%02X 0x%02X 0x%04X", p_req_esv->ecn_hdr.ehd1, p_req_esv->ecn_hdr.ehd2, p_req_esv->ecn_hdr.tid);
+		_ECN_DBG_WAI_SYSLOG; /* syslog()obt@É]TªÅ«éÜÅÒÂ */
+		syslog(LOG_NOTICE, " edata: 0x%06X 0x%06X 0x%02X 0x%02X (%s)",
+			p_req_esv->edata.seoj.eojx1 << 16 | p_req_esv->edata.seoj.eojx2 << 8 | p_req_esv->edata.seoj.eojx3,
+			p_req_esv->edata.deoj.eojx1 << 16 | p_req_esv->edata.deoj.eojx2 << 8 | p_req_esv->edata.deoj.eojx3,
+			p_req_esv->edata.esv, p_req_esv->edata.opc, _ecn_dbg_esv2str(p_req_esv->edata.esv));
+		_ECN_DBG_WAI_SYSLOG; /* syslog()obt@É]TªÅ«éÜÅÒÂ */
+		syslog(LOG_NOTICE, " ecn_prp: 0x%02X 0x%02X", p_req_esv->ecn_prp.epc, p_req_esv->ecn_prp.pdc);
+	}
+#ifdef SEM_ECN_DBG_BINDMP
+	syscall(sig_sem(SEM_ECN_DBG_BINDMP));
+#endif
+}
+
+/*
+ * ECHONET LiteT[rXR[h¶ñÏ·
+ */
+const char *_ecn_dbg_esv2str(uint8_t fa_esv)
+{
+	switch (fa_esv) {
+	case ESV_SET_I_SNA:		return "vpeBl«ÝvsÂ";			/* 0x50 */
+	case ESV_SET_C_SNA:		return "vpeBl«ÝvsÂ";			/* 0x51	*/
+	case ESV_GET_SNA:		return "vpeBlÇÝoµsÂ";				/* 0x52	*/
+	case ESV_INF_SNA:		return "vpeBlÊmsÂ";					/* 0x53 */
+	case ESV_SET_GET_SNA:	return "vpeBl«ÝEÇÝoµsÂ";	/* 0x5E	*/
+	case ESV_SET_I:			return "vpeBl«Ývisvj";		/* 0x60 */
+	case ESV_SET_C:			return "vpeBl«Ývivj";		/* 0x61 */
+	case ESV_GET:			return "vpeBlÇÝoµv";					/* 0x62 */
+	case ESV_INF_REQ:		return "vpeBlÊmv";						/* 0x63 */
+	case ESV_SET_GET:		return "vpeBl«ÝEÇÝoµv";		/* 0x6E */
+	case ESV_SET_RES:		return "vpeBl«Ý";					/* 0x71 */
+	case ESV_GET_RES:		return "vpeBlÇÝoµ";					/* 0x72 */
+	case ESV_INF:			return "vpeBlÊm";							/* 0x73 */
+	case ESV_INFC:			return "vpeBlÊmivj";				/* 0x74 */
+	case ESV_SET_GET_RES:	return "vpeBl«ÝEÇÝoµ";		/* 0x7E */
+	case ESV_INFC_RES:		return "vpeBlÊm";						/* 0x7A */
+	default:
+		return "(unknown)";
+	}
+}
+#endif /* #if defined(ECN_DBG_PUT_ENA) || defined(ECN_CAP_PUT_ENA) */
Index: uKadecot/trunk/ecnl_ssp/echonet_dbg.cfg
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_dbg.cfg	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet_dbg.cfg	(revision 101)
@@ -0,0 +1,66 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *  lbg[NÎTvvO(1)Ì
+ *  VXeRtBM
+[Vt@C
+ */
+
+#include "echonet_task.h"
+#include "echonet_lcl_task.h"
+
+/* #include "echonet_dbg.h" // */
+
+/* INCLUDE("main.cfg"); */
+
+/* INCLUDE("tinet/tinet_asp.cfg"); // */
+
+/* Z}tH */
+
+CRE_SEM(SEM_ECN_DBG_PUT, { TA_TPRI, 1, 1 });
+
+CRE_SEM(SEM_ECN_DBG_BINDMP, { TA_TPRI, 1, 1 });
+
+
+/* ECHONET Lite DBG-UDP */
+/* INCLUDE("../echonet/echonet_dbg_udp.cfg"); */
+
Index: uKadecot/trunk/ecnl_ssp/echonet_dbg.h
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_dbg.h	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet_dbg.h	(revision 101)
@@ -0,0 +1,84 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		ECHONET Lite ^XN fobOoÍ
+ */
+
+#ifndef TOPPERS_ECHONET_DBG_H
+#define TOPPERS_ECHONET_DBG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "echonet.h"
+
+#ifdef ECN_DBG_PUT_ENA
+#define ECN_DBG_PUT syslog(LOG_WARNING,
+#define ECN_DBG_END )
+/* áF		ECN_DBG_PUT "task start" ECN_DBG_END; */
+#else
+#define ECN_DBG_PUT for (;0;
+#define ECN_DBG_END )
+#endif
+
+/* fobOoÍ(CARP) */
+#ifdef ECN_CAP_PUT_ENA
+#define ECN_CAP_PUT syslog(LOG_DEBUG,
+#define ECN_CAP_END )
+/* áF		ECN_CAP_PUT "task start" ECN_CAP_END; */
+#else
+#define ECN_CAP_PUT for (;0;
+#define ECN_CAP_END )
+#endif
+
+#ifdef TARGET_KERNEL_SSP
+#if !defined(ECN_DBG_PUT_ENA) && !defined(ECN_CAP_PUT_ENA)
+#define itron_strerror(errorno) errorno+=0
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_ECHONET_DBG_H */
Index: uKadecot/trunk/ecnl_ssp/echonet_def.csv
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_def.csv	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet_def.csv	(revision 101)
@@ -0,0 +1,21 @@
+EOBJ_NULL,EOBJ_NULL
+EOBJ_LOCAL_NODE,EOBJ_LOCAL_NODE
+EOBJ_SYNC_REMOTE_NODE,EOBJ_SYNC_REMOTE_NODE
+EOBJ_ASYNC_REMOTE_NODE,EOBJ_ASYNC_REMOTE_NODE
+EOBJ_DEVICE,EOBJ_DEVICE
+EPC_NONE,EPC_NONE
+EPC_RULE_SET,EPC_RULE_SET
+EPC_RULE_GET,EPC_RULE_GET
+EPC_RULE_ANNO,EPC_RULE_ANNO
+EPC_ANNOUNCE,EPC_ANNOUNCE
+EPC_VARIABLE,EPC_VARIABLE
+EOJ_X1_SENSOR,EOJ_X1_SENSOR
+EOJ_X1_AIR_CONDITIONER,EOJ_X1_AIR_CONDITIONER
+EOJ_X1_AMENITY,EOJ_X1_AMENITY
+EOJ_X1_HOUSEWORK,EOJ_X1_HOUSEWORK
+EOJ_X1_WELLNESS,EOJ_X1_WELLNESS
+EOJ_X1_CONTROLLER,EOJ_X1_CONTROLLER
+EOJ_X1_AUDIO_VISUAL,EOJ_X1_AUDIO_VISUAL
+EOJ_X1_PROFILE,EOJ_X1_PROFILE
+EOJ_X1_USER_DEFINED,EOJ_X1_USER_DEFINED
+EOJ_X2_NODE_PROFILE,EOJ_X2_NODE_PROFILE
Index: uKadecot/trunk/ecnl_ssp/echonet_fbs.c
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_fbs.c	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet_fbs.c	(revision 101)
@@ -0,0 +1,509 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ * Åè·obt@ÂÏ·Xg[
+ */
+
+#include <kernel.h>
+#include <string.h>
+#include <t_syslog.h>
+#include "echonet_fbs.h"
+
+typedef struct memblk
+{
+	struct memblk *next;
+} memblk_t;
+
+typedef struct mempool
+{
+	int pos;
+	memblk_t *first;
+	uint8_t blockes[NUM_ECHONET_MEMPOOL_BLOCK][ECHONET_MEMPOOL_BLOCK_SIZE];
+} mempool_t;
+
+mempool_t _ECHONET_MEMPOOL;
+mempool_t *ecn_mempoolid = &_ECHONET_MEMPOOL;
+
+#define get_mpf pget_mpf
+
+ER pget_mpf(mempool_t *mpfid, void **buf)
+{
+	ER ret = E_OK;
+
+	loc_cpu();
+
+	if (mpfid->pos < NUM_ECHONET_MEMPOOL_BLOCK) {
+		*buf = mpfid->blockes[mpfid->pos++];
+	}
+	else if (mpfid->first == NULL) {
+		*buf = NULL;
+		ret = E_TMOUT;
+	}
+	else{
+		*buf = mpfid->first;
+		mpfid->first = mpfid->first->next;
+	}
+
+	unl_cpu();
+
+	return ret;
+}
+
+ER rel_mpf(mempool_t *mpfid, void *buf)
+{
+	ER ret = E_OK;
+
+	if ((buf < mpfid->blockes[0]) || (buf >= mpfid->blockes[NUM_ECHONET_MEMPOOL_BLOCK]))
+		return E_PAR;
+
+	if ((((intptr_t)buf - (intptr_t)mpfid->blockes[0]) % ECHONET_MEMPOOL_BLOCK_SIZE) != 0)
+		return E_PAR;
+
+	loc_cpu();
+#ifdef _DEBUG
+	{
+		memblk_t *next;
+		for (next = mpfid->first; next != NULL; next = next->next){
+			if (next == buf)
+				assert(0);
+		}
+	}
+#endif
+	if (mpfid->first == NULL) {
+		mpfid->first = (memblk_t *)buf;
+		mpfid->first->next = NULL;
+	}
+	else {
+		memblk_t *next = mpfid->first;
+		mpfid->first = (memblk_t *)buf;
+		mpfid->first->next = next;
+	}
+
+	unl_cpu();
+
+	return E_OK;
+}
+
+ER get_message(T_ECN_FST_BLK **ppk_msg, int size)
+{
+	void * blk;
+	ER ret;
+
+	*ppk_msg = NULL;
+
+	if ((size <= 0) || (size > DEF_ECN_FBS_BUF_MAXLEN))
+		return E_PAR;
+
+	ret = get_mpf(ecn_mempoolid, &blk);
+	if (ret != E_OK)
+		return ret;
+
+	memset(blk, 0, ECHONET_MEMPOOL_BLOCK_SIZE);
+	*ppk_msg = (T_ECN_FST_BLK *)(blk);
+	(*ppk_msg)->hdr.length = (uint16_t)size;
+
+	return E_OK;
+}
+
+ER iget_message(T_ECN_FST_BLK **ppk_msg, int size)
+{
+	void * blk;
+	ER ret;
+
+	*ppk_msg = NULL;
+
+	if ((size <= 0) || (size > DEF_ECN_FBS_BUF_MAXLEN))
+		return E_PAR;
+
+	ret = pget_mpf(ecn_mempoolid, &blk);
+	if (ret != E_OK)
+		return ret;
+
+	memset(blk, 0, ECHONET_MEMPOOL_BLOCK_SIZE);
+	*ppk_msg = (T_ECN_FST_BLK *)(blk);
+	(*ppk_msg)->hdr.length = (uint16_t)size;
+
+	return E_OK;
+}
+
+void * get_block(T_ECN_FST_BLK *pk_msg, int pos, bool_t exp, int *size)
+{
+	ER ret;
+	void * buf;
+	void * blk;
+	int no;
+	T_ECN_SUB_BLK *mblk;
+	int temp;
+
+	if ((pos < 0) || (!exp && (pos >= pk_msg->hdr.length))) {
+		return NULL;
+	}
+
+	if (pos < DEF_ECN_FBS_FST_DAT_LEN) {
+		buf = (void *)&pk_msg->payload[pos];
+		temp = DEF_ECN_FBS_FST_DAT_LEN - pos;
+		if (temp < *size) {
+			*size = temp;
+		}
+	}
+	else {
+		pos -= DEF_ECN_FBS_FST_DAT_LEN;
+		no = pos / DEF_ECN_FBS_SUB_BUF_LEN;
+
+		mblk = pk_msg->lnk.p_sub[no];
+
+		pos -= no * DEF_ECN_FBS_SUB_BUF_LEN;
+		temp = DEF_ECN_FBS_SUB_BUF_LEN - pos;
+		if (temp < *size) {
+			*size = temp;
+		}
+		if (exp) {
+			if (mblk == NULL) {
+				ret = get_mpf(ecn_mempoolid, &blk);
+				if (ret != E_OK)
+					return NULL;
+
+				mblk = (T_ECN_SUB_BLK *)(blk);
+
+				pk_msg->lnk.p_sub[no] = mblk;
+			}
+
+			temp = pos + *size + no * DEF_ECN_FBS_SUB_BUF_LEN + DEF_ECN_FBS_FST_DAT_LEN;
+			if (pk_msg->hdr.length < temp) {
+				pk_msg->hdr.length = (uint16_t)temp;
+			}
+		}
+
+		buf = &mblk->payload[pos];
+	}
+
+	return buf;
+}
+
+ER release_message(T_ECN_FST_BLK *pk_msg)
+{
+	ER ret;
+	int i;
+
+	for (i = 0; i < 32; i++) {
+		void * blk = pk_msg->lnk.p_sub[i];
+		if (blk == NULL)
+			continue;
+
+		ret = rel_mpf(ecn_mempoolid, blk);
+		if (ret != E_OK)
+			return ret;
+	}
+
+	return rel_mpf(ecn_mempoolid, pk_msg);
+}
+
+int read_message(T_ECN_FST_BLK *pk_msg, int pos, void * dst, int size)
+{
+	int len, rest = size;
+	void * buf;
+
+	if (size <= 0)
+		return 0;
+
+	len = rest;
+	buf = get_block(pk_msg, pos, false, &len);
+	if ((buf == NULL) || (len <= 0))
+		return 0;
+
+	if((pos + len) > pk_msg->hdr.length)
+		len = pk_msg->hdr.length - pos;
+
+	for (; ; ) {
+		memcpy(dst, buf, len);
+		dst = (void *)((intptr_t)dst + len);
+		rest -= len;
+		pos += len;
+
+		if (rest <= 0)
+			break;
+
+		len = rest;
+		buf = get_block(pk_msg, pos, false, &len);
+		if ((buf == NULL) || (len <= 0))
+			return size - rest;
+	}
+
+	return size;
+}
+
+int write_message(const void * src, T_ECN_FST_BLK *pk_msg, int pos, int size)
+{
+	int len, rest = size;
+	void * buf;
+
+	if (size <= 0)
+		return 0;
+
+	len = rest;
+	buf = get_block(pk_msg, pos, true, &len);
+	if ((buf == NULL) || (len <= 0))
+		return 0;
+
+	for (; ; ) {
+		memcpy(buf, src, len);
+		src = (void *)((intptr_t)src +len);
+		rest -= len;
+		pos += len;
+
+		if (rest <= 0)
+			break;
+
+		len = rest;
+		buf = get_block(pk_msg, pos, true, &len);
+		if ((buf == NULL) || (len <= 0))
+			return size - rest;
+	}
+
+	if (pk_msg->hdr.length < pos)
+		pk_msg->hdr.length = (uint16_t)pos;
+
+	return size;
+}
+
+int copy_message(T_ECN_FST_BLK *pk_src, int spos, T_ECN_FST_BLK *pk_dst, int dpos, int size)
+{
+	int dlen, slen, len, rest = size;
+	void * dbuf, *sbuf;
+
+	if (size <= 0)
+		return 0;
+
+	dlen = rest;
+	dbuf = get_block(pk_dst, dpos, true, &dlen);
+	if (dbuf == NULL)
+		return 0;
+
+	slen = rest;
+	sbuf = get_block(pk_src, spos, false, &slen);
+	if (sbuf == NULL)
+		return 0;
+
+	for (; ; ) {
+		len = (dlen < slen) ? dlen : slen;
+
+		if (len == 0)
+			return size - rest;
+
+		memcpy(dbuf, sbuf, len);
+
+		dpos += len;
+		spos += len;
+		rest -= len;
+
+		if (rest <= 0)
+			break;
+
+		dlen = rest;
+		dbuf = get_block(pk_dst, dpos, true, &dlen);
+		if (dbuf == NULL)
+			return size - rest;
+
+		slen = rest;
+		sbuf = get_block(pk_src, spos, false, &slen);
+		if (sbuf == NULL)
+			return size - rest;
+	}
+
+	return size;
+}
+
+/* ubNæ¾ ok:|C^ NG:NULL */
+void *_ecn_fbs_mbx_get(ECN_FBS_SIZE_T fa_req_size)
+{
+	T_ECN_FST_BLK *result = NULL;
+
+	get_message(&result, fa_req_size);
+
+	return result;
+}
+
+/* ubNðú */
+ER _ecn_fbs_mbx_rel(void *p)
+{
+	return release_message((T_ECN_FST_BLK *)p);
+}
+
+/* ÌæmÛ */
+ER _ecn_fbs_cre(ECN_FBS_SIZE_T fa_req_size, ECN_FBS_ID *fp_id)
+{
+	return get_message(&fp_id->ptr, fa_req_size);
+}
+
+/* Ìæðú */
+ER _ecn_fbs_del(ECN_FBS_ID fa_id)
+{
+	return release_message(fa_id.ptr);
+}
+
+/* Ûf[^ÌL³ */
+bool_t _ecn_fbs_exist_data(ECN_FBS_ID fa_id)
+{
+	return fa_id.ptr->hdr.length > fa_id.ptr->hdr.wr;
+}
+
+/* Ûf[^·Ìæ¾ */
+ECN_FBS_SSIZE_T _ecn_fbs_get_datalen(ECN_FBS_ID fa_id)
+{
+	return fa_id.ptr->hdr.length;
+}
+
+/* ÇÝæèJ[\ÌÊuæ¾ */
+ECN_FBS_SSIZE_T _ecn_fbs_get_rpos(ECN_FBS_ID fa_id)
+{
+	return fa_id.ptr->hdr.rd;
+}
+
+/* ÇÝæèJ[\ÌÊuÝè */
+ER _ecn_fbs_set_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_pos)
+{
+	if (fa_id.ptr->hdr.length <= (unsigned int)fa_pos)	/* Êuwèªå«·¬é */
+		return E_PAR;
+
+	fa_id.ptr->hdr.rd = fa_pos;
+
+	return E_OK;
+}
+
+/* ÇÝæèJ[\ÌÊuÚ® */
+ER _ecn_fbs_seek_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek)
+{
+	fa_id.ptr->hdr.rd += fa_seek;
+	if (fa_id.ptr->hdr.rd > fa_id.ptr->hdr.length)
+		fa_id.ptr->hdr.rd = fa_id.ptr->hdr.length;
+
+	return E_OK;
+}
+
+/* CÓwèÊuÌ1byteÇÝæè */
+int _ecn_fbs_peek(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek)
+{
+	uint8_t result = 0;
+	int ret;
+
+	ret = read_message(fa_id.ptr, fa_seek, &result, 1);
+
+	return (ret == 1) ? result : -1;
+}
+
+/* CÓwèÊuÌ1byte«Ý */
+ER _ecn_fbs_poke(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek, int fa_val)
+{
+	uint8_t result = fa_val;
+	int ret;
+
+	ret = write_message(&result, fa_id.ptr, fa_seek, 1);
+
+	return (ret == 1) ? E_OK : E_PAR;
+}
+
+/* f[^ÇÁ */
+ER _ecn_fbs_add_data(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len)
+{
+	if((fa_id.ptr->hdr.wr + fa_len) > fa_id.ptr->hdr.length)
+		return E_PAR;
+
+	fa_id.ptr->hdr.wr += write_message(fa_dat, fa_id.ptr, fa_id.ptr->hdr.wr, fa_len);
+	return E_OK;
+}
+
+/* f[^ÇÁ(Ìæð©®IÉg£·é) */
+ER _ecn_fbs_add_data_ex(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len)
+{
+	fa_id.ptr->hdr.wr += write_message(fa_dat, fa_id.ptr, fa_id.ptr->hdr.wr, fa_len);
+	return E_OK;
+}
+
+/* f[^æ¾ */
+ER _ecn_fbs_get_data(ECN_FBS_ID fa_id, void *fa_buf, ECN_FBS_SSIZE_T fa_maxlen, ECN_FBS_SSIZE_T *p_len)
+{
+	int ret;
+	
+	ret = read_message(fa_id.ptr, fa_id.ptr->hdr.rd, fa_buf, fa_maxlen);
+	fa_id.ptr->hdr.rd += ret;
+	*p_len = ret;
+
+	return E_OK;
+}
+
+ER ecn_fbs_enqueue(T_ECN_FBS_QUEUE *pk_queue, T_ECN_FST_BLK *pk_buf)
+{
+	loc_cpu();
+
+	*((T_ECN_FST_BLK **)pk_buf->_msg) = NULL;
+	if (pk_queue->pk_head != NULL) {
+		*((T_ECN_FST_BLK **)pk_queue->pk_last->_msg) = pk_buf;
+	}
+	else {
+		pk_queue->pk_head = pk_buf;
+	}
+	pk_queue->pk_last = pk_buf;
+
+	unl_cpu();
+
+	return E_OK;
+}
+
+ER ecn_fbs_dequeue(T_ECN_FBS_QUEUE *pk_queue, T_ECN_FST_BLK **ppk_buf)
+{
+	ER ercd;
+
+	loc_cpu();
+
+	if (pk_queue->pk_head != NULL) {
+		*ppk_buf = pk_queue->pk_head;
+		pk_queue->pk_head = *((T_ECN_FST_BLK **)(*ppk_buf)->_msg);
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+
+	unl_cpu();
+
+	return ercd;
+}
Index: uKadecot/trunk/ecnl_ssp/echonet_fbs.h
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_fbs.h	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet_fbs.h	(revision 101)
@@ -0,0 +1,282 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ * Åè·obt@ÂÏ·Xg[
+ */
+
+#ifndef TOPPERS_ECHONET_FBS_H
+#define TOPPERS_ECHONET_FBS_H
+
+#include <t_stddef.h>
+#include "echonet.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef NUM_ECHONET_MEMPOOL_BLOCK
+#define NUM_ECHONET_MEMPOOL_BLOCK (60)		/* d¶pubNÌ */
+#endif /* NUM_ECHONET_MEMPOOL_BLOCK */
+
+#ifndef ECHONET_MEMPOOL_BLOCK_SIZE
+#define ECHONET_MEMPOOL_BLOCK_SIZE (256)	/* d¶pubNÌTCY */
+#endif /* ECHONET_MEMPOOL_BLOCK_SIZE */
+
+typedef unsigned int ECN_FBS_SIZE_T;	/* size_t  */
+typedef int ECN_FBS_SSIZE_T;			/* ssize_t */
+
+/* T_EDATAÇÌæTCY */
+#ifdef TARGET_KERNEL_ASP
+#define DEF_ECN_EDT_HDR_LEN (sizeof(T_MSG))
+#else
+#define DEF_ECN_EDT_HDR_LEN (sizeof(intptr_t))
+#endif
+
+/* ÇÌæTCY(64byte - sizeof(T_MSG)) */
+/* #define DEF_ECN_FBS_LIB_HDR_LEN ((ECHONET_MEMPOOL_BLOCK_SIZE + sizeof(int) - 1)>> 2) // */
+#define DEF_ECN_FBS_LIB_HDR_LEN (64 - DEF_ECN_EDT_HDR_LEN)
+
+/* ÇÌæðÜÞubNÉÛ·éf[^TCY */
+#define DEF_ECN_FBS_FST_DAT_LEN (64)
+
+/* N|C^zñÌTCY(byte) */
+#define DEF_ECN_FBS_LNK_LEN (ECHONET_MEMPOOL_BLOCK_SIZE - DEF_ECN_EDT_HDR_LEN - DEF_ECN_FBS_LIB_HDR_LEN - DEF_ECN_FBS_FST_DAT_LEN)
+
+/* Åè·obt@ÅåTCY */
+#define DEF_ECN_FBS_BUF_MAXLEN ((DEF_ECN_FBS_LNK_LEN / sizeof(void *)) * ECHONET_MEMPOOL_BLOCK_SIZE + DEF_ECN_FBS_FST_DAT_LEN)
+
+/* qvfobt@ÌTCY */
+#define DEF_ECN_FBS_SUB_BUF_LEN ECHONET_MEMPOOL_BLOCK_SIZE
+
+/* d¶ÌíÊ(àeÍ¼) */
+typedef enum
+{
+	ECN_FBS_TYPE_BLANK		=	0,		/* ¢gpXg[ */
+	ECN_FBS_TYPE_INTERNAL	=	1,		/* àbZ[W */
+	ECN_FBS_TYPE_ECHONET	=	2		/* ECHONETd¶ */
+} TA_ECN_MSG_TYPE;
+
+/* N|C^zñÉñ³êéAqvfobt@ */
+typedef struct
+{
+	uint8_t	payload[ECHONET_MEMPOOL_BLOCK_SIZE];
+} T_ECN_SUB_BLK;
+
+/* N|C^zñ */
+typedef union
+{
+	T_ECN_SUB_BLK	*p_sub[DEF_ECN_FBS_LNK_LEN / sizeof(T_ECN_SUB_BLK *)];
+	uint8_t			bin[DEF_ECN_FBS_LNK_LEN];
+} T_ECN_FBS_LNK;
+
+/* ÇÌæ(64byte - sizeof(T_MSG)) */
+typedef struct
+{
+	uint16_t	length;			/* bZ[W· */
+	uint16_t	type;			/* bZ[W^Cv */
+	union{
+		ECN_ENOD_ID sender;		/* M³m[hIDiECHONETd¶j */
+		ID sender_mbxid;		/* M³[{bNXIDiàbZ[Wj */
+	};
+	union{
+		ECN_ENOD_ID target;		/* Mæm[hIDiECHONETd¶j */
+		ID target_mbxid;		/* Mæ[{bNXIDiàbZ[Wj */
+	};
+	union{
+		ECN_ENOD_ID reply;		/* ÔMæm[hIDiECHONETd¶j */
+		ID reply_mbxid;			/* ÔMæ[{bNXIDiàbZ[Wj */
+	};
+
+	int			rd;				/*	ÇÝæèwbhîñ	*/
+	int			wr;				/*	«Ýwbhîñ	*/
+} T_ECN_FBS_HDR;
+
+/* ÇÌæðÜÞubNÌ\¢ */
+typedef struct
+{
+	uint8_t	_msg[DEF_ECN_EDT_HDR_LEN];	/* T_MSG */
+	T_ECN_FBS_HDR	hdr;	/*	ÇÌæ  64byte  - sizeof(T_MSG)	*/
+	uint8_t			_gap[DEF_ECN_FBS_LIB_HDR_LEN - sizeof(T_ECN_FBS_HDR)];
+	T_ECN_FBS_LNK	lnk;	/*	N|C^zñ	128byte			*/
+	uint8_t			payload[DEF_ECN_FBS_FST_DAT_LEN];
+} T_ECN_FST_BLK;
+
+/* FBS-ID */
+typedef struct ecn_fbs_id_strc
+{
+	T_ECN_FST_BLK	*ptr;
+} ECN_FBS_ID;
+
+/* bZ[WL
+[ */
+typedef struct ecn_fbs_queue
+{
+	T_ECN_FST_BLK	*pk_head;		/* æªÌbZ[W */
+	T_ECN_FST_BLK	*pk_last;		/* öÌbZ[W */
+} T_ECN_FBS_QUEUE;
+
+/* ubNæ¾ ok:|C^ NG:NULL */
+void *_ecn_fbs_mbx_get(ECN_FBS_SIZE_T fa_req_size);
+
+/* ubNðú ok:0 NG:ñ0 */
+ER _ecn_fbs_mbx_rel(void *p);
+
+/*
+ * ÌæmÛ
+ *	ø
+ *		ECN_FBS_SIZE_T	fa_req_size		vobt@TCY(byte)
+ *										max: DEF_ECN_FBS_BUF_MAXLEN
+ *		ECN_FBS_ID		*fp_id			mÛµ½FBS-IDÌi[æ
+ *	ßèl
+ *		ER				0:ok ñ0:NG
+ */
+ER _ecn_fbs_cre(ECN_FBS_SIZE_T fa_req_size, ECN_FBS_ID *fp_id);
+
+/*
+ * Ìæðú
+ *	ø
+ *		ecn_fbs_id^	mÛµ½FBS-ID
+ *	ßèl
+ *		ER				0:ok, ñ0:NG
+ */
+ER _ecn_fbs_del(ECN_FBS_ID fa_id);
+
+/*
+ * Ûf[^ÌL³
+ *	ø
+ *		ecn_fbs_id^	mÛµ½FBS-ID
+ *	ßèl
+ *		bool_t			0:³µ, 1: è
+ */
+bool_t _ecn_fbs_exist_data(ECN_FBS_ID fa_id);
+
+/*
+ * Ûf[^·Ìæ¾
+ *	ø
+ *		ecn_fbs_id^	mÛµ½FBS-ID
+ *	ßèl
+ *		ECN_FBS_SSIZE_T	ÛµÄ¢éf[^Ì·³(byte) -1:NG
+ */
+ECN_FBS_SSIZE_T _ecn_fbs_get_datalen(ECN_FBS_ID fa_id);
+
+/*
+ * ÇÝæèJ[\ÌÊuæ¾
+ *	ø
+ *		ecn_fbs_id^	mÛµ½FBS-ID
+ *	ßèl
+ *		ECN_FBS_SIZE_T	æª©çÌâÎÊu -1:NG
+ */
+ECN_FBS_SSIZE_T _ecn_fbs_get_rpos(ECN_FBS_ID fa_id);
+
+/*
+ * ÇÝæèJ[\ÌÊuÝè
+ *	ø
+ *		ecn_fbs_id^	mÛµ½FBS-ID
+ *		ECN_FBS_SIZE_T	fa_pos	Ýè·éÊu(æª©çÌâÎÊu)
+ *	ßèl
+ *		ER				0:ok, ñ0:NG
+ */
+ER _ecn_fbs_set_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_pos);
+
+/*
+ * ÇÝæèJ[\ÌÊuÚ®
+ *	ø
+ *		ecn_fbs_id^	mÛµ½FBS-ID
+ *		ECN_FBS_SIZE_T	fa_seek	Ú®Ê(»óAOiÌÝ)
+ *	ßèl
+ *		ER				0:ok, ñ0:NG
+ */
+ER _ecn_fbs_seek_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek);
+
+/*
+ * CÓwèÊuÌ1byteÇÝæè
+ */
+int _ecn_fbs_peek(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek);
+
+/*
+ * CÓwèÊuÌ1byte«Ý
+ */
+ER _ecn_fbs_poke(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek, int fa_val);
+
+/*
+ * f[^ÇÁ
+ *	ø
+ *		ecn_fbs_id^	mÛµ½FBS-ID
+ *		const void *	fa_dat	ÇÁ·éf[^
+ *		ECN_FBS_SSIZE_T	fa_len	ÇÁ·é·³(byte)
+ *	ßèl
+ *		ER				0:ok, ñ0:NG
+ */
+ER _ecn_fbs_add_data(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len);
+
+/*
+ * f[^ÇÁ(Ìæð©®IÉg£·é)
+ *	ø
+ *		ecn_fbs_id^	mÛµ½FBS-ID
+ *		const void *	fa_dat	ÇÁ·éf[^
+ *		ECN_FBS_SSIZE_T	fa_len	ÇÁ·é·³(byte)
+ *	ßèl
+ *		ER				0:ok, ñ0:NG
+ */
+ER _ecn_fbs_add_data_ex(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len);
+
+/*
+ * f[^æ¾
+ *	ø
+ *		ecn_fbs_id^	mÛµ½FBS-ID
+ *		void *			fa_buf		æ¾·éobt@
+ *		ECN_FBS_SSIZE_T	fa_maxlen	æ¾·é·³(byte)
+ *		ECN_FBS_SSIZE_T	*p_len		æ¾µ½·³(byte)
+ *	ßèl
+ *		ER				0:ok, ñ0:NG
+ */
+ER _ecn_fbs_get_data(ECN_FBS_ID fa_id, void *fa_buf, ECN_FBS_SSIZE_T fa_maxlen,
+	ECN_FBS_SSIZE_T *p_len);
+
+ER ecn_fbs_enqueue(T_ECN_FBS_QUEUE *pk_queue, T_ECN_FST_BLK *pk_buf);
+ER ecn_fbs_dequeue(T_ECN_FBS_QUEUE *pk_queue, T_ECN_FST_BLK **ppk_buf);
+
+#ifdef __cplusplus
+}   /* extern "C" */
+#endif
+
+#endif /* #ifndef TOPPERS_ECHONET_FBS_H */
Index: uKadecot/trunk/ecnl_ssp/echonet_lcl_task.h
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_lcl_task.h	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet_lcl_task.h	(revision 101)
@@ -0,0 +1,82 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		ECHONET Lite ºÊÊMC[^XN
+ */
+
+#ifndef TOPPERS_ECHONET_LCL_TASK_H
+#define TOPPERS_ECHONET_LCL_TASK_H
+
+#ifdef SUPPORT_INET4
+#include "echonet_udp_task.h"
+#endif
+
+#ifdef SUPPORT_INET6
+#include "echonet_udp6_task.h"
+#endif
+
+#ifdef SUPPORT_UIP
+#include "echonet_uip_task.h"
+#endif
+
+typedef struct ecn_udp_msg_get_ipaddr_req
+{
+	unsigned int requestid;
+	ECN_ENOD_ID enodid;
+} ecn_udp_msg_get_ipaddr_req_t;
+
+typedef struct ecn_udp_msg_get_ipaddr_res
+{
+	unsigned int requestid;
+	ECN_ENOD_ID enodid;
+	ENODADRB enodadrb;
+} ecn_udp_msg_get_ipaddr_res_t;
+
+typedef struct ecn_udp_msg_get_ipaddr_error
+{
+	unsigned int requestid;
+	ER error;
+} ecn_udp_msg_get_ipaddr_error_t;
+
+ER ecn_udp_get_ipaddr(ID sender, int requestid, ECN_ENOD_ID enodid, ECN_FBS_ID *pk_req);
+
+#endif /* TOPPERS_ECHONET_LCL_TASK_H */
Index: uKadecot/trunk/ecnl_ssp/echonet_rename.h
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_rename.h	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet_rename.h	(revision 101)
@@ -0,0 +1,60 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#ifndef ECHONET_RENAME_H
+#define ECHONET_RENAME_H
+
+#define tmax_eobjid			_echonet_tmax_eobjid
+#define eobjinib_table		_echonet_eobjinib_table
+#define tnum_enodid			_echonet_tnum_enodid
+#define eobjcb_table		_echonet_eobjcb_table
+#define tnum_enodadr		_echonet_tnum_enodadr
+#define enodadrb_table		_echonet_enodadrb_table
+#define apitid_table		_echonet_apitid_table
+#define ecn_svc_taskid		_echonet_ecn_svc_taskid
+#define ecn_udp_taskid		_echonet_ecn_udp_taskid
+#define ecn_api_mailboxid	_echonet_ecn_api_mailboxid
+#define ecn_svc_mailboxid	_echonet_ecn_svc_mailboxid
+#define ecn_udp_mailboxid	_echonet_ecn_udp_mailboxid
+#define ecn_svc_cychdrid	_echonet_ecn_svc_cychdrid
+#define ecn_udp_cychdrid	_echonet_ecn_udp_cychdrid
+
+#endif	/* of #ifndef ECHONET_RENAME_H */
Index: uKadecot/trunk/ecnl_ssp/echonet_ssp.cfg
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_ssp.cfg	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet_ssp.cfg	(revision 101)
@@ -0,0 +1,89 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *  ECHONET Lite RtBM
+[Vt@C
+ */
+
+#include "itron.h"
+#include "echonet_task.h"
+#include "echonet_lcl_task.h"
+
+/*
+ * ECHONET Lite d¶p
+ */
+/*CRE_MPF(ECHONET_MEMPOOL, { TA_TFIFO, 60, 256, NULL, NULL });*/
+
+/*
+ * ECHONET Lite APIp[{bNX
+ */
+CRE_DTQ(ECHONET_API_MAILBOX, { TA_TFIFO, NUM_ECHONET_API_MAILBOX, NULL });
+
+/*
+ * ECHONET Lite T[rX^XNp[{bNX
+ */
+CRE_DTQ(ECHONET_SVC_MAILBOX, { TA_TFIFO, NUM_ECHONET_MAILBOX, NULL });
+
+/*
+ * ECHONET Lite T[rX^XN
+ */
+CRE_TSK(ECHONET_SVC_TASK, { TA_HLNG, 0, echonet_task, ECHONET_TASK_PRIORITY, ECHONET_TASK_STACK_SIZE, NULL });
+
+/*
+ * ECHONET Lite ^XNN®püúnh[
+ */
+CRE_CYC(ECHONET_SVC_CYCHDR, { TA_NULL, ECHONET_SVC_TASK, echonet_cychdr, 1, 0 });
+
+/*
+ * ECHONET Lite UDPÊMp[{bNX
+ */
+CRE_DTQ(ECHONET_UDP_MAILBOX, { TA_TFIFO, NUM_ECHONET_UDP_MAILBOX, NULL });
+
+/*
+ * ECHONET Lite UDPÊM^XN
+ */
+CRE_TSK(ECHONET_UDP_TASK, { TA_HLNG, 0, echonet_udp_task, ECHONET_UDP_TASK_PRIORITY, ECHONET_UDP_TASK_STACK_SIZE, NULL });
+
+/*
+ * ECHONET Lite ^XNN®püúnh[
+ */
+CRE_CYC(ECHONET_UDP_CYCHDR, { TA_NULL, ECHONET_UDP_TASK, echonet_udp_cychdr, 1, 0 });
Index: uKadecot/trunk/ecnl_ssp/echonet_task.c
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_task.c	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet_task.c	(revision 101)
@@ -0,0 +1,2012 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		ECHONET Lite ^XN
+ */
+
+#include <kernel.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <t_syslog.h>
+
+#include "syssvc/serial.h"
+#include "syssvc/syslog.h"
+
+#include "uip.h"
+
+#include "echonet.h"
+#include "echonet_fbs.h"
+#include "echonet_task.h"
+#include "echonet_dbg.h"
+#ifdef ECHONET_CONTROLLER_EXTENTION
+#include "echonet_agent.h"
+#endif
+
+#ifndef ECHONET_TASK_GET_TIMER
+#define ECHONET_TASK_GET_TIMER	TMO_FEVR
+#endif /* ECHONET_TASK_GET_TIMER */
+
+#ifndef ECHONET_TASK_PROGRESS
+#define ECHONET_TASK_PROGRESS(timer)
+#endif /* ECHONET_TASK_PROGRESS */
+
+#ifndef ECHONET_TASK_TIMEOUT
+#define ECHONET_TASK_TIMEOUT
+#endif /* ECHONET_TASK_TIMEOUT */
+
+static struct ecnl_state s;
+
+/* óMbZ[WðJú·é©Û© */
+static bool_t g_release_esv;
+
+/* óMbZ[Wð]·é©Û© */
+bool_t g_forward_esv;
+
+ER _ecn_tsk_ntf_inl(intptr_t fa_exinf);
+
+ER _ecn_tsk_snd_mbx(ECN_FBS_ID fa_rsp_fbs, bool_t from_app)
+{
+	ER	a_ret;
+	intptr_t msg = (intptr_t)fa_rsp_fbs.ptr;
+	ID mbxid = ecn_udp_mailboxid;
+	ECN_ENOD_ID target = fa_rsp_fbs.ptr->hdr.target;
+#ifdef ECN_DBG_PUT_ENA
+	intptr_t a_fbs_sub1 = (intptr_t)fa_rsp_fbs.ptr->lnk.p_sub[0];
+#endif
+	if (from_app && (((T_EDATA *)fa_rsp_fbs.ptr)->hdr.edata.esv == ESV_INFC)) {
+		if (target < ENOD_MULTICAST_ID || tnum_enodadr <= target)
+			return E_NOEXS;
+		apitid_table[target] = ((T_EDATA *)fa_rsp_fbs.ptr)->hdr.ecn_hdr.tid;
+		mbxid = ecn_svc_mailboxid;
+	}
+	else {
+		switch (target) {
+		case ENOD_MULTICAST_ID:
+			if (from_app)
+				apitid_table[target] = ((T_EDATA *)fa_rsp_fbs.ptr)->hdr.ecn_hdr.tid;
+
+			mbxid = ecn_udp_mailboxid;
+			break;
+		case ENOD_LOCAL_ID:
+			if (from_app)
+				mbxid = ecn_svc_mailboxid;
+			else
+				mbxid = ecn_api_mailboxid;
+			break;
+		case ENOD_API_ID:
+			mbxid = ecn_api_mailboxid;
+			break;
+		default:
+			if (from_app)
+				apitid_table[target] = ((T_EDATA *)fa_rsp_fbs.ptr)->hdr.ecn_hdr.tid;
+
+			if (target < ENOD_REMOTE_ID || tnum_enodadr <= target)
+				return E_NOEXS;
+			target += - ENOD_REMOTE_ID + 1;
+			if (from_app && (target < tnum_enodid)) {
+				/* ñ¯úÌ[gm[hÍT[rX^XNÅ·é */
+				switch (eobjcb_table[target].profile->eobjatr) {
+				case EOBJ_SYNC_REMOTE_NODE:
+					mbxid = ecn_udp_mailboxid;
+					break;
+				case EOBJ_ASYNC_REMOTE_NODE:
+					mbxid = ecn_svc_mailboxid;
+					break;
+				default:
+					return E_SYS;
+				}
+			}
+			else {
+				mbxid = ecn_udp_mailboxid;
+			}
+			break;
+		}
+	}
+#ifdef ECN_DBG_PUT_ENA
+	ECN_DBG_PUT "psnd_dtq(%d, 0x%08X-0x%08X)", mbxid, (intptr_t)msg, a_fbs_sub1 ECN_DBG_END;
+	_ecn_dbg_bindmp((const uint8_t *)msg, 256);
+#endif
+	a_ret = psnd_dtq(mbxid, msg);
+#ifdef ECN_DBG_PUT_ENA
+	ECN_DBG_PUT "psnd_dtq(%d, 0x%08X-0x%08X) result = %d:%s", mbxid, (intptr_t)msg, a_fbs_sub1, a_ret, itron_strerror(a_ret) ECN_DBG_END;
+#endif
+	return a_ret;
+}
+
+static void _ecn_tsk_int_module_init(intptr_t fa_exinf);
+static void _ecn_tsk_int_startup(intptr_t fa_exinf);
+static uint16_t _ecn_tsk_new_tid(void);
+static void _ecn_tsk_int_msg(intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id);
+static void _ecn_tsk_ecn_msg(intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id);
+
+static void _ecn_tsk_eoj_set(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update,
+	ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
+	ECN_FBS_ID *fa_fbs_anno);
+static void _ecn_tsk_eoj_get(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access,
+	ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv);
+static void _ecn_tsk_eoj_res(ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv,
+	ECN_SRV_CODE fa_sna_esv);
+static void _ecn_tsk_eoj_set_get(const EOBJINIB *fp_obj, ATR fa_eobjatr,
+	ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
+	ECN_FBS_ID *fa_fbs_anno);
+static void _ecn_tsk_eoj_set_get_res(const EOBJINIB *fp_obj, ATR fa_eobjatr,
+	ECN_FBS_ID fa_fbs_id, ECN_FBS_ID *fa_fbs_anno);
+
+/* W
+[ú»tO */
+static uint8_t		m_eobjlist_need_init = 1;
+
+/* V[PXÔ */
+static uint16_t		g_current_tid = 1;
+
+/*
+ *  ECHONET Lite ^XNÌú»iRXgN^j
+ */
+void echonet_task_init(intptr_t exinf)
+{
+	if (m_eobjlist_need_init)
+		_ecn_tsk_int_module_init(exinf);
+}
+
+/*
+ * W
+[ú»
+ */
+static void _ecn_tsk_int_module_init(intptr_t exinf)
+{
+	if (!m_eobjlist_need_init)
+		return;
+
+	/* ECN_DBG_PUT "[ECHONET MainTask:%d] started", tskid ECN_DBG_END; */
+	syslog(LOG_NOTICE, "[ECHONET MainTask] started");
+
+	m_eobjlist_need_init = 0;
+
+#ifdef ECHONET_CONTROLLER_EXTENTION
+	ecn_agent_init();
+#endif
+}
+
+/*
+ *  ECHONET Lite ^XNÌ{Ì
+ */
+static
+PT_THREAD(echonet_task_pt(intptr_t fa_exinf))
+{
+	ER a_ret, a_ret2;
+	union
+	{
+		intptr_t	p_msg;
+		ECN_FBS_ID	fbs_id;
+	} a_mdt;
+	static SYSTIM a_prev, a_now;
+	TMO a_timer;
+#ifdef ECHONET_CONTROLLER_EXTENTION
+	TMO a_timera;
+#endif
+
+	PT_BEGIN(&s.pt);
+
+	a_ret = sta_cyc(ecn_svc_cychdrid);
+	if (a_ret != E_OK) {
+		ECN_DBG_PUT "sta_cyc() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		PT_EXIT(&s.pt);
+	}
+
+	_ecn_tsk_int_startup(fa_exinf);
+
+	a_ret2 = get_tim(&a_now);
+	if (a_ret2 != E_OK) {
+		ECN_DBG_PUT "get_tim() result = %d:%s", a_ret2, itron_strerror(a_ret2) ECN_DBG_END;
+		PT_EXIT(&s.pt);
+	}
+
+	/* bZ[W[v */
+	for (;;) {
+		a_prev = a_now;
+
+		a_timer = ECHONET_TASK_GET_TIMER;
+#ifdef ECHONET_CONTROLLER_EXTENTION
+		a_timera = ecn_agent_get_timer();
+		if(a_timer == TMO_FEVR){
+			a_timer =a_timera;
+		}
+		else if((a_timera != TMO_FEVR) && (a_timera < a_timer)){
+			a_timer = a_timera;
+		}
+#endif
+		timer_set(&s.timer, a_timer);
+
+		PT_WAIT_UNTIL(&s.pt, (((a_ret = prcv_dtq(ecn_svc_mailboxid, &a_mdt.p_msg)) == E_OK)
+			|| ((a_ret = timer_expired(&s.timer) ? E_TMOUT : E_WBLK) == E_TMOUT)));
+		if ((a_ret != E_OK) && (a_ret != E_TMOUT)) {
+			ECN_DBG_PUT "trcv_dtq() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+			PT_EXIT(&s.pt);
+		}
+
+		a_ret2 = get_tim(&a_now);
+		if (a_ret2 != E_OK) {
+			ECN_DBG_PUT "get_tim() result = %d:%s", a_ret2, itron_strerror(a_ret2) ECN_DBG_END;
+			PT_EXIT(&s.pt);
+		}
+
+		a_timer = a_now - a_prev;
+		ECHONET_TASK_PROGRESS(a_timer);
+#ifdef ECHONET_CONTROLLER_EXTENTION
+		ecn_agent_progress(a_timer);
+#endif
+
+		if (a_ret == E_OK) {
+			ECN_DBG_PUT "trcv_dtq() mbx recv (%d byte)", _ecn_fbs_get_datalen(a_mdt.fbs_id) ECN_DBG_END;
+			g_release_esv = true;
+
+			switch (a_mdt.fbs_id.ptr->hdr.type) {
+			/* àgpbZ[W */
+			case ECN_MSG_INTERNAL:
+				_ecn_tsk_int_msg(fa_exinf, a_mdt.fbs_id);
+				break;
+
+			/* ECHONETpbZ[W */
+			case ECN_MSG_ECHONET:
+				_ecn_tsk_ecn_msg(fa_exinf, a_mdt.fbs_id);
+				break;
+
+			default:
+				syslog(LOG_WARNING, "echonet_task() a_fbs_id.ptr->k.hdr.k.t_edt.type:0x%02X undefined.", a_mdt.fbs_id.ptr->hdr.type);
+			}
+
+			/* Ìæðú */
+			if (g_release_esv)
+				_ecn_fbs_del(a_mdt.fbs_id);
+		}
+
+		ECHONET_TASK_TIMEOUT;
+#ifdef ECHONET_CONTROLLER_EXTENTION
+		ecn_agent_timeout();
+#endif
+	}
+
+	PT_END(&s.pt);
+}
+
+/*
+ *  ECHONET Lite vgXbhN®^XN
+ */
+void echonet_task(intptr_t fa_exinf)
+{
+	echonet_task_pt(fa_exinf);
+}
+
+/*
+ *  ECHONET Lite ^XNN®püúnh[
+ */
+void echonet_cychdr(intptr_t exinf)
+{
+	(void)iact_tsk((ID)exinf);
+}
+
+/*
+ * V[PXÔ¶¬
+ */
+static uint16_t _ecn_tsk_new_tid(void)
+{
+	return g_current_tid++;
+}
+
+/*
+ * vd¶ì¬
+ * ø
+ * ECN_FBS_ID		*fp_fbs_id		æ¾µ½FBS_IDÌi[æ
+ * ID				fa_seoj			M³ÌECHONETIuWFNgID
+ * ID				fa_deoj			¶æÌECHONETIuWFNgID
+ * uint8_t			fa_epc			vpeBR[h
+ * uint8_t			fa_pdc			vpeBlf[^TCY
+ * const void		*p_edt			vpeBlf[^
+ * ECN_SRV_CODE		fa_esv			ECHONET Light T[rXR[h
+ */
+ER _ecn_tsk_mk_esv(ECN_FBS_ID *fp_fbs_id, ID fa_seoj, ID fa_deoj,
+	uint8_t fa_epc, uint8_t fa_pdc, const void *p_edt, ECN_SRV_CODE fa_esv)
+{
+	ER				a_ret;
+	int				a_size, i;
+	ECN_FBS_ID		a_fbs_id = { 0 };	/* vd¶p				*/
+	T_ECN_EDT_HDR	a_ecn_hdp;			/* ecn_hdr+edata+ecn_prp 14byte	*/
+	ID				a_enodid;
+	const EOBJINIB *a_eobj;
+	const EOBJINIB *a_enod;
+
+	if (!fp_fbs_id)
+		return E_PAR; /* æ¾µ½FBS_IDÌi[æªNULL */
+	if (ECHONET_MEMPOOL_BLOCK_SIZE <= fa_pdc)
+		return E_PAR; /* vpeBlTCYªå«·¬é */
+	if (!p_edt && 0 < fa_pdc)
+		return E_PAR; /* vpeBlTCYª1ÈãÈÌÉf[^|C^ªNULL */
+
+	if (fa_seoj <= EOBJ_NULL || tmax_eobjid < fa_seoj)
+		return E_NOEXS; /* ECHONETIuWFNgIDª¢è` */
+#ifndef ECHONET_CONTROLLER_EXTENTION
+	if (fa_deoj < EOBJ_NULL || tmax_eobjid < fa_deoj)
+		return E_NOEXS; /* ECHONETIuWFNgIDª¢è` */
+#else
+	if (fa_deoj < EOBJ_NULL || (tmax_eobjid + TNUM_AEOBJID) < fa_deoj)
+		return E_NOEXS; /* ECHONETIuWFNgIDª¢è` */
+#endif
+	if (fa_deoj == EOBJ_NULL && fa_esv == ESV_INFC)
+		return E_NOEXS; /* ECHONETIuWFNgIDª¢è` */
+
+	/* vÅ¬TCYÌæ¾ */
+	a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
+
+	/* vd¶pÌæ¾ */
+	a_ret = _ecn_fbs_cre(a_size, &a_fbs_id);
+	if (a_ret != E_OK || !a_fbs_id.ptr) { /* mÛ¸s */
+		ECN_DBG_PUT "_ecn_fbs_cre(%d) result = %d:%s",
+			a_size,
+			a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		return E_NOMEM;
+	}
+
+	/* vd¶Ýè						*/
+	memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
+	a_ecn_hdp.ecn_hdr.ehd1 = ECN_EDH1_ECHONET_LITE;
+	a_ecn_hdp.ecn_hdr.ehd2 = ECN_EDH2_FORMAT_1;
+	a_ecn_hdp.ecn_hdr.tid = _ecn_tsk_new_tid();
+	memcpy(&a_ecn_hdp.edata.seoj, &eobjinib_table[fa_seoj - 1].eojx1, sizeof(a_ecn_hdp.edata.seoj));
+	a_ecn_hdp.edata.esv = fa_esv;
+	a_ecn_hdp.edata.opc = 1;		/* vpeB */
+	a_ecn_hdp.ecn_prp.epc = fa_epc;	/* vpeBR[h */
+	a_ecn_hdp.ecn_prp.pdc = fa_pdc;	/* tf[^TCY */
+
+	/* vd¶pÉf[^ÇÁ */
+	a_ret = _ecn_fbs_add_data_ex(a_fbs_id, &a_ecn_hdp, a_size);
+	if (a_ret) {
+		ECN_DBG_PUT "_ecn_fbs_add_data_ex(*, ecn_hdp{esv:0x%02X,epc:0x%02X}, %d) result = %d:%s",
+			a_ecn_hdp.edata.esv, a_ecn_hdp.ecn_prp.epc, a_size,
+			a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		goto lb_except;
+	}
+	if (0 < fa_pdc) {
+		/* tf[^ÇÁ */
+		a_ret = _ecn_fbs_add_data_ex(a_fbs_id, p_edt, fa_pdc);
+		if (a_ret) {
+			ECN_DBG_PUT "_ecn_fbs_add_data_ex(*, ecn_hdp{esv:0x%02X,epc:0x%02X} edt, %d) result = %d:%s",
+				a_ecn_hdp.edata.esv, a_ecn_hdp.ecn_prp.epc, fa_pdc,
+				a_ret, itron_strerror(a_ret) ECN_DBG_END;
+			goto lb_except;
+		}
+	}
+	if (fa_deoj == 0) {
+		ECN_DBG_PUT "%s", "}`LXg" ECN_DBG_END;
+		/* fa_deoj == 0 : }`LXg */
+		((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx1 = EOJ_X1_PROFILE;
+		((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx2 = EOJ_X2_NODE_PROFILE;
+		((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx3 = 0x01;
+		a_fbs_id.ptr->hdr.target = ENOD_MULTICAST_ID;
+	}
+	else if (fa_deoj <= tmax_eobjid) {
+		ECN_DBG_PUT "fa_deoj = %d", fa_deoj ECN_DBG_END;
+		/* if (fa_deoj < 1 || tmax_eobjid < fa_deoj) cÌÙínÍÖ`ªÅOÏÝÆ·é */
+		a_eobj = &eobjinib_table[fa_deoj - 1];
+		memcpy(&((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj, &a_eobj->eojx1,
+			sizeof(((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj));
+
+		/* e[u©çõ */
+		a_fbs_id.ptr->hdr.target = ENOD_NOT_MATCH_ID;
+		a_enodid = (a_eobj->enodid == 0) ? fa_deoj : a_eobj->enodid;
+		a_enod = &eobjinib_table[a_enodid - 1];
+		if ((a_enod->eobjatr == EOBJ_LOCAL_NODE)
+			|| ((a_enod->eobjatr == EOBJ_ASYNC_REMOTE_NODE) && (fa_esv == ESV_GET))) {
+			a_fbs_id.ptr->hdr.target = ENOD_LOCAL_ID;
+		}
+		else{
+			for (i = 1; i < tnum_enodid; i++) {
+				const EOBJCB *temp = &eobjcb_table[i];
+				if (a_enod != temp->profile)
+					continue;
+
+				a_fbs_id.ptr->hdr.target = (ECN_ENOD_ID)(i + ENOD_REMOTE_ID - 1);
+				break;
+			}
+		}
+		if (a_fbs_id.ptr->hdr.target == ENOD_NOT_MATCH_ID) {
+			goto lb_except;
+			ECN_DBG_PUT "deoj = %02X %02X %02x : enod not match",
+				((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx1,
+				((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx2,
+				((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx3 ECN_DBG_END;
+		}
+#ifdef ECN_DBG_PUT_ENA
+		else {
+			ECN_DBG_PUT "deoj = %02X %02X %02x : %s",
+				((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx1,
+				((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx2,
+				((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx3,
+				_ecn_dbg_enod2str(a_fbs_id.ptr->hdr.target) ECN_DBG_END;
+		}
+#endif
+	}
+#ifdef ECHONET_CONTROLLER_EXTENTION
+	else{
+		T_ECN_EOJ eoj;
+		ECN_ENOD_ID enodid;
+		ECN_DBG_PUT "fa_deoj = %d", fa_deoj ECN_DBG_END;
+		/* IuWFNgID©çEOJÆm[hIDðæ¾ */
+		if(ecn_agent_get_eoj_enodid(fa_deoj, &eoj, &enodid)){
+			memcpy(&((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj, &eoj,
+				sizeof(((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj));
+			a_fbs_id.ptr->hdr.target = enodid;
+		}
+		else {
+			goto lb_except;
+			ECN_DBG_PUT "deoj = %02X %02X %02x : enod not match",
+				((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx1,
+				((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx2,
+				((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx3 ECN_DBG_END;
+		}
+#ifdef ECN_DBG_PUT_ENA
+		else {
+			ECN_DBG_PUT "deoj = %02X %02X %02x : %s",
+				((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx1,
+				((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx2,
+				((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx3,
+				_ecn_dbg_enod2str(a_fbs_id.ptr->hdr.target) ECN_DBG_END;
+		}
+#endif
+	}
+#endif
+	a_fbs_id.ptr->hdr.type = ECN_MSG_ECHONET;
+	a_fbs_id.ptr->hdr.sender = ENOD_API_ID;
+	if (fa_esv == ESV_INFC)
+		a_fbs_id.ptr->hdr.reply = a_fbs_id.ptr->hdr.target;
+	else if (fa_esv == ESV_INF_REQ)
+		a_fbs_id.ptr->hdr.reply = ENOD_MULTICAST_ID;
+	else
+		a_fbs_id.ptr->hdr.reply = ENOD_API_ID;
+
+	/* ³íI¹ */
+	*fp_fbs_id = a_fbs_id;
+	return E_OK;
+
+lb_except:
+	/* f[^ì¬¸sµ½çÌæðú */
+	if (a_fbs_id.ptr)
+		_ecn_fbs_del(a_fbs_id);
+
+	return a_ret;
+}
+
+/*
+ * àgpbZ[W
+ */
+static void _ecn_tsk_int_msg(intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id)
+{
+	T_ECN_INTERNAL_MSG	a_im;
+	ECN_FBS_SSIZE_T		a_len;
+	int					a_ans;
+
+	a_im.command = 0;
+	a_len = 0;
+	a_ans = _ecn_fbs_get_data(fa_fbs_id, &a_im.command, sizeof(a_im.command), &a_len);
+	if (a_ans || !a_len) {
+		return;		/* NG */
+	}
+
+	switch (a_im.command) {
+	case ECN_INM_NOTIFY_INSTANCELIST:
+		ECN_DBG_PUT "do _ecn_tsk_int_startup()" ECN_DBG_END;
+		_ecn_tsk_int_startup(fa_exinf);
+		break;
+	default:
+#ifdef ECHONET_CONTROLLER_EXTENTION
+		if(ecn_agent_proc_int_msg(fa_fbs_id, a_im.command))
+			break;
+#endif
+		ECN_DBG_PUT "recv: unefined internal-msg: %d", a_im.command ECN_DBG_END;
+		break;
+	}
+}
+
+/*
+ * ^XNú»
+ */
+static void _ecn_tsk_int_startup(intptr_t fa_exinf)
+{
+	ER	a_ret;
+
+	if (m_eobjlist_need_init)
+		_ecn_tsk_int_module_init(fa_exinf);
+
+	/* CX^XXgÊmÌM */
+	a_ret = _ecn_tsk_ntf_inl(fa_exinf);
+	if (a_ret) {
+		syslog(LOG_WARNING, "_ecn_tsk_ntf_inl() result = %d:%s", a_ret, itron_strerror(a_ret));
+	}
+}
+
+/*
+ * CX^XXgÊmÌM
+ * ECHONET-Lite_Ver.1.10_02.pdf p.43 }4-1-4
+ */
+ER _ecn_tsk_ntf_inl(intptr_t fa_exinf)
+{
+	const T_ECN_EOJ	a_seoj =	/* 0x01 : êÊm[hA0x02FMêpm[h */
+		{ EOJ_X1_PROFILE, EOJ_X2_NODE_PROFILE, 0x01 };
+	const T_ECN_EOJ	a_deoj =
+		{ EOJ_X1_PROFILE, EOJ_X2_NODE_PROFILE, 0x01 };
+	T_ECN_EDT_HDR a_hdr;
+	ER			a_ret	=	E_OK;
+	ECN_FBS_ID	a_fbs	=	{ 0 };
+	int			a_eoj_ct =	0;
+	int			i;
+	uint8_t		a_count;
+	const EOBJCB	*enod = &eobjcb_table[0];	/* [Jm[h */
+	const EOBJINIB *eobj;
+
+	ECN_DBG_PUT "do _ecn_tsk_ntf_inl()" ECN_DBG_END;
+
+	memset(&a_hdr, 0, sizeof(a_hdr));
+	a_hdr.ecn_hdr.ehd1 = ECN_EDH1_ECHONET_LITE;
+	a_hdr.ecn_hdr.ehd2 = ECN_EDH2_FORMAT_1;
+	a_hdr.edata.seoj = a_seoj;
+	a_hdr.edata.deoj = a_deoj;
+	a_hdr.edata.esv = ESV_INF;
+	a_hdr.edata.opc = 1;
+	a_hdr.ecn_prp.epc = ECN_EPC_INL_BCS;
+
+	for (i = 0; i < enod->eobjcnt; i++) {
+		eobj = enod->eobjs[i];
+
+		if (!a_eoj_ct) {
+			/* mÛEwb_i[ */
+			a_hdr.ecn_hdr.tid = (uint8_t)_ecn_tsk_new_tid(); /* V[PXÔ¶¬ */
+			a_ret = _ecn_fbs_cre(sizeof(a_hdr), &a_fbs);
+			if (a_ret != E_OK) /* mÛ¸s */
+				goto lb_except;
+			a_ret = _ecn_fbs_add_data(a_fbs, &a_hdr, sizeof(a_hdr));
+			if (a_ret != E_OK) /* f[^ÇÁ¸s */
+				goto lb_except;
+
+			a_fbs.ptr->hdr.type = ECN_MSG_ECHONET;
+			a_fbs.ptr->hdr.sender = ENOD_LOCAL_ID;
+			a_fbs.ptr->hdr.target = ENOD_MULTICAST_ID;
+			a_fbs.ptr->hdr.reply = ENOD_LOCAL_ID;
+			((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc = 1;	/*  */
+			/* ði[ */
+			a_count = (uint8_t)(enod->eobjcnt - i);
+			if (a_count >= ECN_IST_LST_EOJ_MAX_CT)
+				a_count = ECN_IST_LST_EOJ_MAX_CT;
+			a_ret = _ecn_fbs_add_data_ex(a_fbs, &a_count, sizeof(a_count));
+			if (a_ret != E_OK) /* f[^ÇÁ¸s */
+				goto lb_except;
+		}
+		/* ECHONETIuWFNgID(3byte)ði[ */
+		a_ret = _ecn_fbs_add_data_ex(a_fbs, &eobj->eojx1, sizeof(T_ECN_EOJ));
+		if (a_ret != E_OK) /* f[^ÇÁ¸s */
+			goto lb_except;
+
+		/* EedtTCYÁZ */
+		((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc += sizeof(T_ECN_EOJ);
+		if (++a_eoj_ct < ECN_IST_LST_EOJ_MAX_CT)
+			continue;
+
+		/* 1AiEXÅÌãÀÉBµ½çAêUM */
+		a_ret = _ecn_tsk_snd_mbx(a_fbs, false);
+		if (a_ret != E_OK) /* f[^M¸s */
+			goto lb_except;
+		a_eoj_ct = 0;
+		a_fbs.ptr = 0;
+	}
+	if (a_eoj_ct) {
+		/* ¢Mf[^ª Á½çAM */
+		a_ret = _ecn_tsk_snd_mbx(a_fbs, false);
+		if (a_ret != E_OK) /* f[^M¸s */
+			goto lb_except;
+		a_fbs.ptr = 0;
+	}
+	goto lb_finally;
+
+lb_except:
+	if (a_fbs.ptr)
+		_ecn_fbs_del(a_fbs);
+
+lb_finally:
+	return a_ret;
+}
+
+const EOBJCB *_ecn_eno_fnd(ECN_ENOD_ID enodid)
+{
+	const EOBJCB *enod = NULL;
+	int i;
+
+	switch (enodid) {
+	case ENOD_MULTICAST_ID:
+	case ENOD_LOCAL_ID:
+	case ENOD_API_ID:
+		enod = &eobjcb_table[0];
+		break;
+	default:
+		i = enodid - ENOD_REMOTE_ID + 1;
+		if ((i >= 1) && (i < tnum_enodid))
+			enod = &eobjcb_table[i];
+#ifdef ECHONET_CONTROLLER_EXTENTION
+		else{
+			ecn_node_t *p_tmp = ecn_agent_find_node(enodid);
+			if (p_tmp == NULL)
+				return NULL;
+			return &p_tmp->eobj;
+		}
+#endif
+		break;
+	}
+
+	return enod;
+}
+
+/*
+ * 3byteÌeobjidÅzñðõ·é
+ */
+const EOBJINIB *_ecn_eoj_fnd(const EOBJCB *fp_nod, const T_ECN_EOJ *fp_eoj)
+{
+	const EOBJINIB	*p_obj;
+	int		i, count = fp_nod->eobjcnt;
+
+#ifdef ECHONET_CONTROLLER_EXTENTION
+	if (fp_nod->eobjs == NULL) {
+		ecn_obj_t *p_tmp = ecn_agent_find_eobj(fp_nod, *fp_eoj);
+		if(p_tmp == NULL)
+			return NULL;
+		return &p_tmp->inib;
+	}
+#endif
+
+	for (i = 0; i < count; i++) {
+		p_obj = fp_nod->eobjs[i];
+
+		if (p_obj->eojx1 != fp_eoj->eojx1)
+			continue;
+		if (p_obj->eojx2 != fp_eoj->eojx2)
+			continue;
+		if (p_obj->eojx3 != fp_eoj->eojx3)
+			continue;
+
+		return p_obj;
+	}
+
+	return 0;
+}
+
+static int _ecn_tsk_ecn_msg_main(ECN_FBS_ID fa_fbs_id, const EOBJINIB *p_obj, ATR eobjatr,
+	const EOBJINIB *p_sobj, ATR sobjatr);
+
+/*
+ * ECHONETpbZ[W
+ */
+static void _ecn_tsk_ecn_msg(intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id)
+{
+	const EOBJCB	*p_nod, *p_snod;
+	const EOBJINIB	*p_obj, *p_sobj = NULL;
+	ATR eobjatr, sobjatr = EPC_NONE;
+	T_ECN_EDT_HDR	*p_esv;
+	ER				a_ret;
+	int				i, count;
+	T_ECN_EOJ		*p_eoj;
+	bool_t			a_prc;
+	bool_t			a_fwd;
+	ECN_ENOD_ID		sender;
+
+#ifdef ECN_DBG_PUT_ENA
+	syslog(LOG_NOTICE, "mbx recv:");
+	_ecn_dbg_bindmp(fa_fbs_id.ptr->bin, sizeof(fa_fbs_id.ptr->bin));
+#endif
+
+	p_esv = &((T_EDATA *)fa_fbs_id.ptr)->hdr;
+
+	if (p_esv->ecn_hdr.ehd1 != ECN_EDH1_ECHONET_LITE
+	||	p_esv->ecn_hdr.ehd2 != ECN_EDH2_FORMAT_1) {
+		syslog(LOG_WARNING, "_ecn_tsk_ecn_msg() format fault: 0x%02X,0x%02X", p_esv->ecn_hdr.ehd1, p_esv->ecn_hdr.ehd2);
+		return;
+	}
+
+	/* M¶©çm[hðõ */
+	p_nod = _ecn_eno_fnd(fa_fbs_id.ptr->hdr.target);
+	/* M³©çm[hðõ */
+	sender = fa_fbs_id.ptr->hdr.sender;
+	p_snod = _ecn_eno_fnd(sender);
+	if (p_snod != NULL) {
+		sobjatr = p_snod->profile->eobjatr;
+		/* m[hvt@CÌê */
+		if ((p_esv->edata.seoj.eojx1 == EOJ_X1_PROFILE)
+			&& (p_esv->edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) {
+			p_sobj = p_snod->profile;
+		}
+		/* @íIuWFNgÌê */
+		else {
+			p_sobj = _ecn_eoj_fnd(p_snod, &p_esv->edata.seoj);
+		}
+	}
+
+#ifdef ECHONET_CONTROLLER_EXTENTION
+	ecn_agent_proc_ecn_msg(&p_snod, &p_sobj, (T_EDATA *)fa_fbs_id.ptr);
+#endif
+
+	/* m[hàÌ@íIuWFNgðõ */
+	a_prc = false;
+	a_fwd = false;
+	g_forward_esv = false;
+	if (p_nod != NULL) {
+		eobjatr = p_nod->profile->eobjatr;
+		p_eoj = &p_esv->edata.deoj;
+		/* m[hvt@CÌê */
+		if ((p_eoj->eojx1 == EOJ_X1_PROFILE)
+			&& (p_eoj->eojx2 == EOJ_X2_NODE_PROFILE)) {
+			/* d¶Às */
+			if (_ecn_tsk_ecn_msg_main(fa_fbs_id, p_nod->profile, eobjatr, p_sobj, sobjatr) == 1)
+				a_fwd = true;
+			a_prc = true;
+		}
+		/* @íIuWFNgÌê */
+		else {
+			count = p_nod->eobjcnt;
+#ifdef ECHONET_CONTROLLER_EXTENTION
+			p_obj = NULL;
+#endif
+			for (i = 0; i < count; i++) {
+#ifdef ECHONET_CONTROLLER_EXTENTION
+				if(p_nod->eobjs == NULL)
+					p_obj = ecn_agent_next_eobj(p_nod, p_obj);
+				else
+					p_obj = p_nod->eobjs[i];
+#else
+				p_obj = p_nod->eobjs[i];
+#endif
+				if (p_obj->eojx1 != p_eoj->eojx1)
+					continue;
+				if (p_obj->eojx2 != p_eoj->eojx2)
+					continue;
+				/* CX^XR[hªOÌêA¯¶NXÌSÄÌCX^X¶ */
+				if ((p_obj->eojx3 != p_eoj->eojx3) && (p_eoj->eojx3 != 0))
+					continue;
+
+				/* d¶Às */
+				if (_ecn_tsk_ecn_msg_main(fa_fbs_id, p_obj, eobjatr, p_sobj, sobjatr) == 1)
+					a_fwd = true;
+				a_prc = true;
+			}
+		}
+	}
+	/* @íIuWFNgª©Â©çÈ¢êÅà */
+	if (!a_prc) {
+		/* d¶ÀsióMpj */
+		if (_ecn_tsk_ecn_msg_main(fa_fbs_id, NULL, EPC_NONE, p_sobj, sobjatr) == 1)
+			a_fwd = true;
+	}
+
+	/* ÌêAvP[VÉ]·é */
+	if (a_fwd && ((p_esv->ecn_hdr.tid == apitid_table[sender])
+		|| g_forward_esv))
+	{
+		g_release_esv = false;
+
+		ECN_CAP_PUT "redirect ecn_svc_mailboxid ¨ ecn_api_mailboxid (esv:0x%02X)",
+			p_esv->edata.esv ECN_CAP_END;
+		fa_fbs_id.ptr->hdr.target = ENOD_API_ID;
+		a_ret = psnd_dtq(ecn_api_mailboxid, (intptr_t)fa_fbs_id.ptr);
+		if (a_ret != E_OK) {
+			syslog(LOG_WARNING, "_ecn_tsk_ecn_msg() : psnd_dtq() result = %d:%s", a_ret, itron_strerror(a_ret));
+			_ecn_fbs_del(fa_fbs_id);
+		}
+	}
+#ifdef ECHONET_CONTROLLER_EXTENTION
+	ecn_agent_proc_ecn_msg_end();
+#endif
+}
+
+static int _ecn_tsk_ecn_msg_main(ECN_FBS_ID fa_fbs_id, const EOBJINIB *p_obj, ATR eobjatr,
+	const EOBJINIB *p_sobj, ATR sobjatr)
+{
+	int result;
+	T_ECN_EDT_HDR	*p_esv;
+	ECN_FBS_ID		a_fbs_anno = { NULL };
+
+	p_esv = &((T_EDATA *)fa_fbs_id.ptr)->hdr;
+
+	switch (p_esv->edata.esv) {
+	/* 0x60 vpeBl«Ývisvj */
+	case ESV_SET_I:
+		if (!p_obj) {
+			ECN_DBG_PUT "_ecn_tsk_ecn_msg_main() eoj %06X not found.",
+				p_esv->edata.deoj.eojx1 << 16 | p_esv->edata.deoj.eojx2 << 8 | p_esv->edata.deoj.eojx3 ECN_DBG_END;
+			result = -1;
+			break;
+		}
+		_ecn_tsk_eoj_set(p_obj, eobjatr, false, fa_fbs_id, ESV_NOP, ESV_SET_I_SNA, &a_fbs_anno);	/* 0; 0x50 */
+		result = 0;
+		break;
+
+	/* 0x61 vpeBl«Ývivj */
+	case ESV_SET_C:
+		if (!p_obj) {
+			ECN_DBG_PUT "_ecn_tsk_ecn_msg_main() eoj %06X not found.",
+				p_esv->edata.deoj.eojx1 << 16 | p_esv->edata.deoj.eojx2 << 8 | p_esv->edata.deoj.eojx3 ECN_DBG_END;
+			result = -1;
+			break;
+		}
+		_ecn_tsk_eoj_set(p_obj, eobjatr, false, fa_fbs_id, ESV_SET_RES, ESV_SET_C_SNA, &a_fbs_anno); /* 0x71; 0x51 */
+		result = 0;
+		break;
+
+	/* 0x62 vpeBlÇÝoµv */
+	case ESV_GET:
+		if (!p_obj) {
+			ECN_DBG_PUT "_ecn_tsk_ecn_msg_main() eoj %06X not found.",
+				p_esv->edata.deoj.eojx1 << 16 | p_esv->edata.deoj.eojx2 << 8 | p_esv->edata.deoj.eojx3 ECN_DBG_END;
+			result = -1;
+			break;
+		}
+		_ecn_tsk_eoj_get(p_obj, eobjatr, false, EPC_RULE_GET, fa_fbs_id, ESV_GET_RES, ESV_GET_SNA); /* 0x72; 0x52 */
+		result = 0;
+		break;
+
+	/* 0x63 vpeBlÊmv */
+	case ESV_INF_REQ:
+		if (!p_obj) {
+			ECN_DBG_PUT "_ecn_tsk_ecn_msg_main() eoj %06X not found.",
+				p_esv->edata.deoj.eojx1 << 16 | p_esv->edata.deoj.eojx2 << 8 | p_esv->edata.deoj.eojx3 ECN_DBG_END;
+			result = -1;
+			break;
+		}
+		fa_fbs_id.ptr->hdr.reply = ENOD_MULTICAST_ID;
+		_ecn_tsk_eoj_get(p_obj, eobjatr, false, (EPC_RULE_GET|EPC_RULE_ANNO), fa_fbs_id, ESV_INF, ESV_INF_SNA); /* 0x73; 0x53 */
+		result = 0;
+		break;
+
+	/* 0x6E vpeBl«ÝEÇÝoµv */
+	case ESV_SET_GET:
+		if (!p_obj) {
+			ECN_DBG_PUT "_ecn_tsk_ecn_msg_main() eoj %06X not found.",
+				p_esv->edata.deoj.eojx1 << 16 | p_esv->edata.deoj.eojx2 << 8 | p_esv->edata.deoj.eojx3 ECN_DBG_END;
+			result = -1;
+			break;
+		}
+		_ecn_tsk_eoj_set_get(p_obj, eobjatr, fa_fbs_id, ESV_SET_GET_RES, ESV_SET_GET_SNA, &a_fbs_anno); /* 0x7E; 0x5E */
+		result = 0;
+		break;
+
+	/* 0x74 vpeBlÊmivj */
+	case ESV_INFC:
+		if (!p_sobj)
+			_ecn_tsk_eoj_res(fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES); /* 0x74; 0 */
+		else if (sobjatr == EOBJ_LOCAL_NODE)
+			_ecn_tsk_eoj_get(p_sobj, sobjatr, true, (EPC_RULE_GET|EPC_RULE_ANNO), fa_fbs_id, ESV_INFC, ESV_NOP); /* 0x74; 0 */
+		else
+			_ecn_tsk_eoj_set(p_sobj, sobjatr, true, fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES, &a_fbs_anno); /* 0x7A; 0 */
+		result = 0;
+		break;
+
+	/* 0x60 vpeBl«Ývisvj */
+	case ESV_SET_I_SNA:		/* 0x50 vpeBl«ÝvsÂ */
+		result = 1;
+		break;
+
+	/* 0x61 vpeBl«Ývivj */
+	case ESV_SET_RES:		/* 0x71 vpeBl«Ý */
+	case ESV_SET_C_SNA:		/* 0x51 vpeBl«ÝvsÂ */
+		result = 1;
+		break;
+
+	/* 0x62 vpeBlÇÝoµv */
+	case ESV_GET_RES:		/* 0x72 vpeBlÇÝoµ */
+	case ESV_GET_SNA:		/* 0x52 vpeBlÇÝoµsÂ */
+		if (!p_sobj) {
+			ECN_DBG_PUT "_ecn_tsk_ecn_msg_main() eoj %06X not found.",
+				p_esv->edata.seoj.eojx1 << 16 | p_esv->edata.seoj.eojx2 << 8 | p_esv->edata.seoj.eojx3 ECN_DBG_END;
+			result = -1;
+			break;
+		}
+		_ecn_tsk_eoj_set(p_sobj, sobjatr, true, fa_fbs_id, ESV_NOP, ESV_NOP, &a_fbs_anno); /* 0; 0 */
+		result = 1;
+		break;
+
+	/* 0x63 vpeBlÊmv */
+	case ESV_INF:			/* 0x73 vpeBlÊm */
+	case ESV_INF_SNA:		/* 0x53 vpeBlÊmsÂ */
+		if (!p_sobj) {
+			ECN_DBG_PUT "_ecn_tsk_ecn_msg_main() eoj %06X not found.",
+				p_esv->edata.seoj.eojx1 << 16 | p_esv->edata.seoj.eojx2 << 8 | p_esv->edata.seoj.eojx3 ECN_DBG_END;
+			result = -1;
+			break;
+		}
+		_ecn_tsk_eoj_set(p_sobj, sobjatr, true, fa_fbs_id, ESV_NOP, ESV_NOP, &a_fbs_anno); /* 0; 0 */
+		result = 1;
+		break;
+
+	/* 0x6E vpeBl«ÝEÇÝoµv */
+	case ESV_SET_GET_RES:	/* 0x7E vpeBl«ÝEÇÝoµ */
+	case ESV_SET_GET_SNA:	/* 0x5E vpeBl«ÝEÇÝoµsÂ */
+		if (!p_sobj) {
+			ECN_DBG_PUT "_ecn_tsk_ecn_msg_main() eoj %06X not found.",
+				p_esv->edata.seoj.eojx1 << 16 | p_esv->edata.seoj.eojx2 << 8 | p_esv->edata.seoj.eojx3 ECN_DBG_END;
+			result = -1;
+			break;
+		}
+		_ecn_tsk_eoj_set_get_res(p_sobj, sobjatr, fa_fbs_id, &a_fbs_anno); /* 0x7A; 0 */
+		result = 1;
+		break;
+
+	/* 0x74 vpeBlÊmivj */
+	case ESV_INFC_RES:		/* 0x7A vpeBlÊm */
+		result = 1;
+		break;
+
+	default:
+		syslog(LOG_WARNING, "_ecn_tsk_ecn_msg_main() esv 0x%02X undefined.", p_esv->edata.esv);
+		result = -1;
+		break;
+	}
+
+	/* vpeBÊmvðM */
+	if (a_fbs_anno.ptr != NULL) {
+		ER a_ret = _ecn_tsk_snd_mbx(a_fbs_anno, true);
+		if (a_ret != E_OK)
+			_ecn_fbs_del(a_fbs_anno);
+	}
+
+	return result;
+}
+
+#ifdef ECN_DBG_PUT_ENA
+static void f_put_fbs_eoj(const char *fp_fncnm, const char *fp_varnm,
+	ECN_FBS_ID fa_fbs_id);
+static void f_put_fbs_eoj(const char *fp_fncnm, const char *fp_varnm,
+	ECN_FBS_ID fa_fbs_id)
+{
+	ECN_DBG_PUT "%s() %s eoj src:%06X dest:%06X",
+		fp_fncnm, fp_varnm,
+		((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.seoj.eojx1 << 16 | ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.seoj.eojx2 << 8 | ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.seoj.eojx3,
+		((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.deoj.eojx1 << 16 | ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.deoj.eojx2 << 8 | ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.deoj.eojx3 ECN_DBG_END;
+}
+#else
+#define f_put_fbs_eoj(f,v,r)
+#endif /* #ifdef ECN_DBG_PUT_ENA */
+
+static const EPRPINIB *_ecn_tsk_eoj_get_property(const EOBJINIB *fp_obj, uint8_t fa_epc);
+static const EPRPINIB *_ecn_tsk_eoj_get_property(const EOBJINIB *fp_obj, uint8_t fa_epc)
+{
+	const EPRPINIB	*p = fp_obj->eprp;
+	uint_t			i;
+#ifdef ECHONET_CONTROLLER_EXTENTION
+	if (fp_obj->eprpcnt == 0) {
+		return ecn_agent_get_property(fp_obj, fa_epc, p);
+	}
+#endif
+	for (i = 0; i < fp_obj->eprpcnt; i++, p++) {
+		if (p->eprpcd != fa_epc)
+			continue;
+
+		return p;
+	}
+	ECN_DBG_PUT "_ecn_tsk_eoj_get_property(0x%02X-0x%02X-0x%02X, epc:0x%02X) not found.",
+		fp_obj->eojx1, fp_obj->eojx2, fp_obj->eojx3,
+		fa_epc ECN_DBG_END;
+
+	return NULL;
+}
+
+static int _ecn_tsk_eoj_set_edt(const EPRPINIB *fp_prp, void *fp_src, int fa_srcsz,
+	bool_t *fa_anno);
+static int _ecn_tsk_eoj_set_edt(const EPRPINIB *fp_prp, void *fp_src, int fa_srcsz,
+	bool_t *fa_anno)
+{
+	if (!fp_prp->eprpset)
+		return -1;
+
+	ECN_DBG_PUT "_ecn_tsk_eoj_set_edt(epc:0x%02X) call eprpset()",
+		fp_prp->eprpcd ECN_DBG_END;
+
+	return fp_prp->eprpset(fp_prp, fp_src, fa_srcsz, fa_anno);
+}
+
+static int _ecn_tsk_eoj_get_edt(const EPRPINIB *fp_prp, void *fp_dst, int fa_dstsz);
+static int _ecn_tsk_eoj_get_edt(const EPRPINIB *fp_prp, void *fp_dst, int fa_dstsz)
+{
+	if (fa_dstsz < fp_prp->eprpsz)
+		return -1;
+	if (!fp_prp->eprpget)
+		return -1;
+
+	ECN_DBG_PUT "_ecn_tsk_eoj_get_edt(epc:0x%02X) call eprpget()",
+		fp_prp->eprpcd ECN_DBG_END;
+
+	return fp_prp->eprpget(fp_prp, fp_dst, fp_prp->eprpsz);
+}
+
+static T_ECN_SUB_BLK *_ecn_tsk_get_prp_pce(ECN_FBS_ID fa_fbs_id, T_ECN_PRP *fp_prp,
+	T_ECN_SUB_BLK *const fp_prev_blk);
+
+/*
+ * ECN_FBS_ID©çT_ECN_PRP1Æ»Ìtf[^(edt)ðoµAedtÌ|C^ðÔ·
+ * ø
+ * ECN_FBS_ID fa_fbs_id					ÇÝæéFBS
+ * T_ECN_PRP *fp_prp					epc+pdcÌi[æ
+ * T_ECN_SUB_BLK * const fp_prev_blk	OñgÁ½Ì|C^(³¯êÎ0)
+ * ³íF|C^ NG:0
+ * |C^Í_ecn_fbs_mbx_rel()Åðú·éKvª é
+ */
+static T_ECN_SUB_BLK *_ecn_tsk_get_prp_pce(ECN_FBS_ID fa_fbs_id, T_ECN_PRP *fp_prp,
+	T_ECN_SUB_BLK *const fp_prev_blk)
+{
+	T_ECN_SUB_BLK	*p_blk = 0;
+	int		a_size;
+	ER		a_ret;
+
+	/* vpeBpÌæ¾ */
+	if (fp_prev_blk) {
+		p_blk = fp_prev_blk; /* OñgÁ½ª éÈçAÄp·é */
+	}
+	else {
+		p_blk = (T_ECN_SUB_BLK *)_ecn_fbs_mbx_get(sizeof(*p_blk));
+		if (!p_blk) {
+			ECN_DBG_PUT "_ecn_fbs_mbx_get() fault." ECN_DBG_END;
+			return 0;	/* s« */
+		}
+	}
+	memset(p_blk, 0, sizeof(*p_blk));
+
+	/* T_ECN_PRPª(epc,pdc)ðÇÝæé */
+	a_size = 0;
+	a_ret = _ecn_fbs_get_data(fa_fbs_id, fp_prp, sizeof(*fp_prp), &a_size);
+	if (a_ret || a_size < (int)sizeof(*fp_prp)) {
+		ECN_DBG_PUT "_ecn_fbs_get_data() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		goto lb_except;
+	}
+
+	if (0 < fp_prp->pdc) {
+		/* tf[^ª(edt)ðÇÝæé */
+		a_size = 0;
+		a_ret = _ecn_fbs_get_data(fa_fbs_id, p_blk, fp_prp->pdc, &a_size);
+		if (a_ret || a_size < (int)fp_prp->pdc) {
+			ECN_DBG_PUT "_ecn_fbs_get_data() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+			goto lb_except;
+		}
+	}
+
+	return p_blk;
+
+lb_except:
+	/* vpeBpðú */
+	if (p_blk && !fp_prev_blk)
+		_ecn_fbs_mbx_rel(p_blk);
+
+	return 0;	/* 0:NG */
+}
+
+static ER _ecn_tsk_eoj_set_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update,
+	ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, ECN_FBS_ID *fa_fbs_anno, int a_count,
+	int *p_sw_ok);
+/* vpeBl«ÝÀs */
+static ER _ecn_tsk_eoj_set_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update,
+	ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, ECN_FBS_ID *fa_fbs_anno, int a_count,
+	int *p_sw_ok)
+{
+	T_ECN_SUB_BLK	*p_edt	=	0;
+	T_ECN_PRP			a_prp;			/* epc+pdc */
+	const EPRPINIB		*a_eprp;
+	int			i, a_ans;
+	ER			a_ret;
+	uint8_t		a_size;
+	bool_t		a_anno = false, a_update;
+
+	((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = 0;
+
+	for (i = 0; i < a_count; i++) {
+		/* ECN_FBS_ID©çT_ECN_PRP1Æ»Ìtf[^ðoµA»Ì|C^ðÔ· */
+		p_edt = _ecn_tsk_get_prp_pce(fa_fbs_id, &a_prp, p_edt);
+		if (!p_edt) {
+			ECN_DBG_PUT "_ecn_tsk_eoj_set_main(): _ecn_tsk_get_prp_pce() fault." ECN_DBG_END;
+			goto lb_except;
+		}
+
+		/* vpeBÌÝè set_prp(obj, reqp, resp) */
+		a_size = a_prp.pdc;
+		/* obj,epcÉÎ·ésetÖðÄÔ */
+		a_eprp = _ecn_tsk_eoj_get_property(fp_obj, a_prp.epc);
+		if ((a_eprp != NULL)
+			&& (fa_update || (((a_eprp->eprpatr & EPC_RULE_SET) != 0) || (fa_eobjatr == EOBJ_LOCAL_NODE)))) {
+			a_anno = (fa_eobjatr == EOBJ_LOCAL_NODE) && ((a_eprp->eprpatr & EPC_ANNOUNCE) != 0);
+			a_update = a_anno;
+			a_ans = _ecn_tsk_eoj_set_edt(a_eprp, p_edt->payload, a_size, &a_update);
+			if (a_anno && (a_ans > 0))
+				a_anno = a_update;
+		}
+		else {
+			a_ans = -1;
+		}
+		if (a_ans == a_size) {
+			ECN_DBG_PUT "_ecn_tsk_eoj_set_edt(0x%06X, 0x%02x, 0x%02X..., %u) ok.",
+				fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3,
+				a_prp.epc, p_edt->payload[0], a_size ECN_DBG_END;
+			a_prp.pdc = 0;
+		} else {
+			ECN_DBG_PUT "_ecn_tsk_eoj_set_edt(0x%06X, 0x%02x, 0x%02X..., %u) fault.",
+				fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3,
+				a_prp.epc, p_edt->payload[0], a_size ECN_DBG_END;
+			*p_sw_ok = 0;	/* vpeBÝè¸s */
+			/* ÌêEDTÍÝèµÈ¢ */
+			if (fa_update)
+				a_prp.pdc = 0;
+		}
+
+		/* d¶pÉf[^ÇÁ(epc,pdcÌ2byte) */
+		a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_prp, sizeof(a_prp));
+		if (a_ret) {
+			ECN_DBG_PUT "_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+			goto lb_except;
+		}
+
+		if (0 < a_prp.pdc) {
+			/* d¶pÉf[^ÇÁ(edt n-byte) */
+			a_ret = _ecn_fbs_add_data_ex(a_fbs_res, p_edt->payload, a_prp.pdc);
+			if (a_ret) {
+				ECN_DBG_PUT "_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+				goto lb_except;
+			}
+		}
+		((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc ++;
+
+		/* vpeBÊm èÌê */
+		if (a_anno && (a_ans == a_size)) {
+			if (fa_fbs_anno->ptr == NULL) {
+				_ecn_tsk_mk_esv(fa_fbs_anno, (ID)1, (((intptr_t)fp_obj - (intptr_t)eobjinib_table) / sizeof(EPRPINIB)) + 1,
+					a_prp.epc, 0, NULL, ESV_INF_REQ);
+			}
+			else{
+				ecn_add_edt((T_EDATA *)fa_fbs_anno->ptr, a_prp.epc, 0, 0);
+			}
+		}
+	}
+	a_ret = E_OK; /* ok */
+	goto lb_finally;
+
+lb_except:
+	a_ret = E_SYS;
+
+lb_finally:
+	/* vpeBpðú */
+	if (p_edt)
+		_ecn_fbs_mbx_rel(p_edt);
+
+	return a_ret;
+}
+
+static ER _ecn_tsk_eoj_get_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access,
+	ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok);
+/* vpeBlÇÝoµÀs */
+static ER _ecn_tsk_eoj_get_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access,
+	ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok)
+{
+	T_ECN_SUB_BLK	*p_edt		=	0;
+	void				*p_prp_buf	=	0;	/* ìÆÌæ */
+	const EPRPINIB		*a_eprp;
+	ER					a_ret		=	E_SYS;
+	T_ECN_PRP			a_prp;			/* epc+pdc */
+	int		i, a_ans;
+
+	((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = 0;
+
+	/* ìÆÌæmÛ */
+	p_prp_buf = _ecn_fbs_mbx_get(ECHONET_MEMPOOL_BLOCK_SIZE);
+	if (!p_prp_buf) {
+		ECN_DBG_PUT "_ecn_fbs_mbx_get() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		goto lb_except;	/* s« */
+	}
+
+	for (i = 0; i < a_count; i++) {
+		/* ECN_FBS_ID©çT_ECN_PRP1Æ»Ìtf[^ðo */
+		p_edt = _ecn_tsk_get_prp_pce(fa_fbs_id, &a_prp, p_edt);
+		if (!p_edt) {
+			ECN_DBG_PUT "_ecn_tsk_eoj_get_main(): _ecn_tsk_get_prp_pce() fault." ECN_DBG_END;
+			goto lb_except;
+		}
+
+		/* vpeBÌæ¾ get_eprp(obj, reqp, resp, size) */
+		memset(p_prp_buf, 0, ECHONET_MEMPOOL_BLOCK_SIZE);
+		/* obj,epcÉÎ·égetÖðÄÔ */
+		a_eprp = _ecn_tsk_eoj_get_property(fp_obj, a_prp.epc);
+		if ((a_eprp != NULL) && (((a_eprp->eprpatr & fa_access) != 0) && (fa_eobjatr == EOBJ_LOCAL_NODE) || fa_forward)) {
+			a_ans = _ecn_tsk_eoj_get_edt(a_eprp, p_prp_buf, ECHONET_MEMPOOL_BLOCK_SIZE - 1);
+		}
+		else {
+			a_ans = -1;
+		}
+		if (0 < a_ans && a_ans <= (int)UINT8_MAX) {
+			a_prp.pdc = (uint8_t)a_ans;
+		} else {
+			*p_sw_ok = 0;	/* vpeBæ¾¸s */
+			a_ans = 0;
+			a_prp.pdc = 0;
+		}
+
+		/* d¶pÉf[^ÇÁ(epc,pdcÌ2byte) */
+		a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_prp, sizeof(a_prp));
+		if (a_ret) {
+			ECN_DBG_PUT "_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+			goto lb_except;
+		}
+		if (0 < a_ans) {
+			/* tf[^ÇÁ */
+			a_ret = _ecn_fbs_add_data_ex(a_fbs_res, p_prp_buf, a_ans);
+			if (a_ret) {
+				ECN_DBG_PUT "_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+				goto lb_except;
+			}
+		}
+		((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc ++;
+	}
+	a_ret = E_OK; /* ok */
+	goto lb_finally;
+
+lb_except:
+	a_ret = E_SYS;
+
+lb_finally:
+	/* ìÆÌæðú */
+	if (p_prp_buf)
+		_ecn_fbs_mbx_rel(p_prp_buf);
+
+	/* vpeBpðú */
+	if (p_edt)
+		_ecn_fbs_mbx_rel(p_edt);
+
+	return a_ret;
+}
+
+static ER _ecn_tsk_eoj_res_main(ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok);
+/* vpeBlÇÝoµÀs */
+static ER _ecn_tsk_eoj_res_main(ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok)
+{
+	T_ECN_SUB_BLK	*p_edt		=	0;
+	void				*p_prp_buf	=	0;	/* ìÆÌæ */
+	ER					a_ret		=	E_SYS;
+	T_ECN_PRP			a_prp;			/* epc+pdc */
+	int		i;
+
+	((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = 0;
+
+	/* ìÆÌæmÛ */
+	p_prp_buf = _ecn_fbs_mbx_get(ECHONET_MEMPOOL_BLOCK_SIZE);
+	if (!p_prp_buf) {
+		ECN_DBG_PUT "_ecn_fbs_mbx_get() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		goto lb_except;	/* s« */
+	}
+
+	for (i = 0; i < a_count; i++) {
+		/* ECN_FBS_ID©çT_ECN_PRP1Æ»Ìtf[^ðo */
+		p_edt = _ecn_tsk_get_prp_pce(fa_fbs_id, &a_prp, p_edt);
+		if (!p_edt) {
+			ECN_DBG_PUT "_ecn_tsk_eoj_get_main(): _ecn_tsk_get_prp_pce() fault." ECN_DBG_END;
+			goto lb_except;
+		}
+
+		a_prp.pdc = 0;
+
+		/* d¶pÉf[^ÇÁ(epc,pdcÌ2byte) */
+		a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_prp, sizeof(a_prp));
+		if (a_ret) {
+			ECN_DBG_PUT "_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+			goto lb_except;
+		}
+		((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc++;
+	}
+	a_ret = E_OK; /* ok */
+	goto lb_finally;
+
+lb_except:
+	a_ret = E_SYS;
+
+lb_finally:
+	/* ìÆÌæðú */
+	if (p_prp_buf)
+		_ecn_fbs_mbx_rel(p_prp_buf);
+
+	/* vpeBpðú */
+	if (p_edt)
+		_ecn_fbs_mbx_rel(p_edt);
+
+	return a_ret;
+}
+
+/* vpeBlÇÝòÎµÀs */
+static ER _ecn_tsk_eoj_skip_main(const EOBJINIB *fp_obj, ECN_FBS_ID fa_fbs_id,
+	int a_count);
+static ER _ecn_tsk_eoj_skip_main(const EOBJINIB *fp_obj, ECN_FBS_ID fa_fbs_id,
+	int a_count)
+{
+	T_ECN_PRP	a_prp;			/* epc+pdc */
+	int			i, a_size;
+	ER			a_ret;
+
+	for (i = 0; i < a_count; i++) {
+		/* T_ECN_PRPª(epc,pdc)ðÇÝæé */
+		a_size = 0;
+		a_ret = _ecn_fbs_get_data(fa_fbs_id, &a_prp, sizeof(a_prp), &a_size);
+		if (a_ret || a_size < (int)sizeof(a_prp)) {
+			ECN_DBG_PUT "_ecn_fbs_get_data() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+			goto lb_except;
+		}
+
+		/* pdcªÇÝòÎµ */
+		a_ret = _ecn_fbs_seek_rpos(fa_fbs_id, a_prp.pdc);
+		if (a_ret) {
+			ECN_DBG_PUT "_ecn_fbs_seek_rpos() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+			goto lb_except;
+		}
+	}
+	a_ret = E_OK; /* ok */
+	goto lb_finally;
+
+lb_except:
+	a_ret = E_SYS;
+
+lb_finally:
+	return a_ret;
+}
+
+static void _ecn_tsk_mk_rsp_hdr(const EOBJINIB *fp_obj, T_ECN_EDT_HDR *fp_rsp_esv,
+	T_ECN_EDT_HDR const *fp_req_esv);
+/* d¶Ýè */
+static void _ecn_tsk_mk_rsp_hdr(const EOBJINIB *fp_obj, T_ECN_EDT_HDR *fp_rsp_esv,
+	T_ECN_EDT_HDR const *fp_req_esv)
+{
+	fp_rsp_esv->ecn_hdr.ehd1 = ECN_EDH1_ECHONET_LITE;
+	fp_rsp_esv->ecn_hdr.ehd2 = ECN_EDH2_FORMAT_1;
+	fp_rsp_esv->ecn_hdr.tid = fp_req_esv->ecn_hdr.tid;
+	fp_rsp_esv->edata.seoj.eojx1 = fp_obj->eojx1;
+	fp_rsp_esv->edata.seoj.eojx2 = fp_obj->eojx2;
+	fp_rsp_esv->edata.seoj.eojx3 = fp_obj->eojx3;
+	fp_rsp_esv->edata.deoj = fp_req_esv->edata.seoj;
+}
+
+static void _ecn_tsk_mk_rsp_hdr_res(T_ECN_EDT_HDR *fp_rsp_esv,
+	T_ECN_EDT_HDR const *fp_req_esv);
+static void _ecn_tsk_mk_rsp_hdr_res(T_ECN_EDT_HDR *fp_rsp_esv,
+	T_ECN_EDT_HDR const *fp_req_esv)
+{
+	fp_rsp_esv->ecn_hdr.ehd1 = ECN_EDH1_ECHONET_LITE;
+	fp_rsp_esv->ecn_hdr.ehd2 = ECN_EDH2_FORMAT_1;
+	fp_rsp_esv->ecn_hdr.tid = fp_req_esv->ecn_hdr.tid;
+	fp_rsp_esv->edata.seoj = fp_req_esv->edata.deoj;
+	fp_rsp_esv->edata.deoj = fp_req_esv->edata.seoj;
+}
+
+/* d¶pfbsÝè */
+static void _ecn_tsk_set_rsp_fbs(ECN_FBS_ID fa_rsp_fbs, T_ECN_FST_BLK const *fp_req_ptr);
+/* d¶pfbsÝè(sender/targetÌÝè) */
+static void _ecn_tsk_set_rsp_fbs(ECN_FBS_ID fa_rsp_fbs, T_ECN_FST_BLK const *fp_req_ptr)
+{
+	fa_rsp_fbs.ptr->hdr.type = ECN_MSG_ECHONET;
+	fa_rsp_fbs.ptr->hdr.sender = ENOD_LOCAL_ID;
+	fa_rsp_fbs.ptr->hdr.target = fp_req_ptr->hdr.reply;
+	fa_rsp_fbs.ptr->hdr.reply = ENOD_LOCAL_ID;
+}
+
+/* vpeBl«Ýv	*/
+static void _ecn_tsk_eoj_set(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update,
+	ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
+	ECN_FBS_ID *fa_fbs_anno)
+{
+	T_ECN_EDT_HDR	const *p_req_esv = &((T_EDATA *)fa_fbs_id.ptr)->hdr;
+	T_ECN_EDT_HDR	a_ecn_hdp;
+	ECN_FBS_ID		a_fbs_res	= { 0 };
+	ER		a_ret;
+	int		a_size;
+	int		a_sw_ok = 1;
+	T_ECN_EOJ	eoj;
+
+	memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
+
+	/* ÅåTCYÌæ¾ */
+	a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
+
+	/* d¶pÌæ¾ */
+	a_ret = _ecn_fbs_cre(a_size, &a_fbs_res);
+	if (a_ret != E_OK || !a_fbs_res.ptr) /* mÛ¸s */
+		return;
+
+	/* d¶Ýè */
+	if(p_req_esv->edata.deoj.eojx3 != 0)
+		_ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
+	else
+		_ecn_tsk_mk_rsp_hdr(fp_obj, &a_ecn_hdp, p_req_esv);
+
+	/* ³íÌd¶ªvpeBlÊmÌê */
+	if (fa_res_esv == ESV_INFC_RES) {
+		/* M³Æ¶æðüêÖ¦ */
+		eoj = a_ecn_hdp.edata.seoj;
+		a_ecn_hdp.edata.seoj = a_ecn_hdp.edata.deoj;
+		a_ecn_hdp.edata.deoj = eoj;
+	}
+
+	f_put_fbs_eoj("_ecn_tsk_eoj_set", "fa_fbs_id", fa_fbs_id); /* s/deoj fobOoÍ */
+
+	/* d¶pÉf[^ÇÁ */
+	a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_ecn_hdp,
+				sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata));
+	if (a_ret)
+		goto lb_except;
+
+	/* payloadæªÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)ðÇÝòÎ· */
+	a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
+	if (a_ret)
+		goto lb_except;
+
+	/* d¶pfbsÝè */
+	_ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr);
+
+	/* vpeBl«ÝÀs */
+	a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, fa_update, fa_fbs_id, a_fbs_res,
+		fa_fbs_anno, p_req_esv->edata.opc, &a_sw_ok);
+	if (a_ret)
+		goto lb_except;
+
+	/* vÌê */
+	if (a_sw_ok) {
+		if (!fa_res_esv) {
+			/* svÌê */
+			_ecn_fbs_del(a_fbs_res);
+			goto lb_finally;
+		}
+		/* Ýè¬÷ */
+		((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv;
+	} else {
+		if (!fa_sna_esv) {
+			/* svÌê */
+			_ecn_fbs_del(a_fbs_res);
+			goto lb_finally;
+		}
+		/* Ýè¸s */
+		((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv;
+	}
+	/* M */
+	a_ret = _ecn_tsk_snd_mbx(a_fbs_res, false);
+	if (a_ret == E_OK)
+		goto lb_finally;
+
+lb_except:
+	/* f[^M¸sµ½çÌæðú */
+	if (a_fbs_res.ptr)
+		_ecn_fbs_del(a_fbs_res);
+
+lb_finally:
+	return;
+}
+
+/* vpeBlÇÝoµv	*/
+static void _ecn_tsk_eoj_get(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access,
+	ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv)
+{
+	T_ECN_EDT_HDR	const *p_req_esv = &((T_EDATA *)fa_fbs_id.ptr)->hdr;
+	T_ECN_EDT_HDR	a_ecn_hdp;
+	ECN_FBS_ID		a_fbs_res	= { 0 };
+	ER		a_ret;
+	int		a_size;
+	int		a_sw_ok = 1;
+
+	memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
+
+	/* úæ¾TCY */
+	a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
+
+	/* d¶pÌæ¾ */
+	a_ret = _ecn_fbs_cre(a_size, &a_fbs_res);
+	if (a_ret != E_OK || !a_fbs_res.ptr) { /* mÛ¸s */
+		ECN_DBG_PUT "_ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		goto lb_finally;
+	}
+
+	/* d¶Ýè */
+	if(p_req_esv->edata.deoj.eojx3 != 0)
+		_ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
+	else
+		_ecn_tsk_mk_rsp_hdr(fp_obj, &a_ecn_hdp, p_req_esv);
+
+	f_put_fbs_eoj("_ecn_tsk_eoj_get", "fa_fbs_id", fa_fbs_id); /* s/deoj fobOoÍ */
+
+	/* d¶pÉf[^ÇÁ */
+	a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_ecn_hdp,
+			sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata));
+	if (a_ret) {
+		ECN_DBG_PUT "_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		goto lb_except;
+	}
+
+	/* payloadæªÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)ðÇÝòÎ· */
+	a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
+	if (a_ret) {
+		ECN_DBG_PUT "_ecn_fbs_set_rpos() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		goto lb_except;
+	}
+
+	/* d¶pfbsÝè */
+	_ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr);
+
+	/* vpeBlÇÝÝÀs */
+	a_ret = _ecn_tsk_eoj_get_main(fp_obj, fa_eobjatr, fa_forward, fa_access, fa_fbs_id, a_fbs_res,
+		((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc, &a_sw_ok);
+	if (a_ret) {
+		ECN_DBG_PUT "_ecn_tsk_eoj_get_main() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		goto lb_except;
+	}
+
+	if (a_sw_ok) {
+		if (!fa_res_esv) {
+			/* svÌê */
+			_ecn_fbs_del(a_fbs_res);
+			goto lb_finally;
+		}
+		/* Ýè¬÷ */
+		((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv;
+	} else {
+		if (!fa_sna_esv) {
+			/* svÌê */
+			_ecn_fbs_del(a_fbs_res);
+			goto lb_finally;
+		}
+		/* Ýè¸s */
+		((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv;
+	}
+	/* M */
+	a_ret = _ecn_tsk_snd_mbx(a_fbs_res, false);
+	if (a_ret != E_OK) {
+		ECN_DBG_PUT "_ecn_tsk_snd_mbx() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		goto lb_except;
+	}
+	goto lb_finally;
+
+lb_except:
+	/* f[^M¸sµ½çÌæðú */
+	if (a_fbs_res.ptr)
+		_ecn_fbs_del(a_fbs_res);
+
+lb_finally:
+	return;
+}
+
+/* vpeBlÇÝoµv	*/
+static void _ecn_tsk_eoj_res(ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv,
+	ECN_SRV_CODE fa_sna_esv)
+{
+	T_ECN_EDT_HDR	const *p_req_esv = &((T_EDATA *)fa_fbs_id.ptr)->hdr;
+	T_ECN_EDT_HDR	a_ecn_hdp;
+	ECN_FBS_ID		a_fbs_res	= { 0 };
+	ER		a_ret;
+	int		a_size;
+	int		a_sw_ok = 1;
+
+	memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
+
+	/* úæ¾TCY */
+	a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
+
+	/* d¶pÌæ¾ */
+	a_ret = _ecn_fbs_cre(a_size, &a_fbs_res);
+	if (a_ret != E_OK || !a_fbs_res.ptr) { /* mÛ¸s */
+		ECN_DBG_PUT "_ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		goto lb_finally;
+	}
+
+	/* d¶Ýè						*/
+	_ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
+
+	f_put_fbs_eoj("_ecn_tsk_eoj_res", "fa_fbs_id", fa_fbs_id); /* s/deoj fobOoÍ */
+
+	/* d¶pÉf[^ÇÁ */
+	a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_ecn_hdp,
+			sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata));
+	if (a_ret) {
+		ECN_DBG_PUT "_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		goto lb_except;
+	}
+
+	/* payloadæªÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)ðÇÝòÎ· */
+	a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
+	if (a_ret) {
+		ECN_DBG_PUT "_ecn_fbs_set_rpos() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		goto lb_except;
+	}
+
+	/* d¶pfbsÝè */
+	_ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr);
+
+	/* vpeBlÇÝÝÀs */
+	a_ret = _ecn_tsk_eoj_res_main(fa_fbs_id, a_fbs_res,
+		((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc, &a_sw_ok);
+	if (a_ret) {
+		ECN_DBG_PUT "_ecn_tsk_eoj_res_main() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		goto lb_except;
+	}
+
+	if (a_sw_ok) {
+		if (!fa_res_esv) {
+			/* svÌê */
+			_ecn_fbs_del(a_fbs_res);
+			goto lb_finally;
+		}
+		/* Ýè¬÷ */
+		((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv;
+	} else {
+		if (!fa_sna_esv) {
+			/* svÌê */
+			_ecn_fbs_del(a_fbs_res);
+			goto lb_finally;
+		}
+		/* Ýè¸s */
+		((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv;
+	}
+	/* M */
+	a_ret = _ecn_tsk_snd_mbx(a_fbs_res, false);
+	if (a_ret != E_OK) {
+		ECN_DBG_PUT "_ecn_tsk_snd_mbx() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		goto lb_except;
+	}
+	goto lb_finally;
+
+lb_except:
+	/* f[^M¸sµ½çÌæðú */
+	if (a_fbs_res.ptr)
+		_ecn_fbs_del(a_fbs_res);
+
+lb_finally:
+	return;
+}
+
+static void _ecn_tsk_eoj_set_get(const EOBJINIB *fp_obj, ATR fa_eobjatr,
+	ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
+	ECN_FBS_ID *fa_fbs_anno)
+{
+	T_ECN_EDT_HDR	const *p_req_esv = &((T_EDATA *)fa_fbs_id.ptr)->hdr;
+	T_ECN_EDT_HDR	a_ecn_hdp;
+	ECN_FBS_ID		a_fbs_res	= { 0 };
+	int				a_rdprp_wrpos;	/*	vpeBÇÝÝ«ÝÌwbhÊu	*/
+	ER		a_ret;
+	int		i, a_size, a_rdlen;
+	int		a_sw_ok = 1;
+	int		a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc;	/* vpeB */
+
+	memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
+
+	ECN_DBG_PUT "_ecn_tsk_eoj_set_get() eoj:%06X",
+		fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3 ECN_DBG_END;
+
+	/* úæ¾TCY */
+	a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
+
+	/* d¶pÌæ¾ */
+	a_ret = _ecn_fbs_cre(a_size, &a_fbs_res);
+	if (a_ret != E_OK || !a_fbs_res.ptr) /* mÛ¸s */
+		goto lb_finally;
+
+	/* d¶Ýè */
+	if(p_req_esv->edata.deoj.eojx3 != 0)
+		_ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
+	else
+		_ecn_tsk_mk_rsp_hdr(fp_obj, &a_ecn_hdp, p_req_esv);
+	a_size -= sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY);
+
+	f_put_fbs_eoj("_ecn_tsk_eoj_set_get", "fa_fbs_id", fa_fbs_id); /* s/deoj fobOoÍ */
+
+	/* d¶pÉf[^ÇÁ */
+	a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_ecn_hdp,
+				sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata));
+	if (a_ret)
+		goto lb_except;
+
+	/* payloadæªÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)ðÇÝòÎ· */
+	a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
+	if (a_ret)
+		goto lb_except;
+
+	/* d¶pfbsÝè */
+	_ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr);
+
+	/* vpeBl«ÝÀs */
+	a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, false, fa_fbs_id, a_fbs_res,
+		fa_fbs_anno, a_count, &a_sw_ok);
+	if (a_ret) {
+		syslog(LOG_WARNING, "_ecn_tsk_eoj_set_get() eoj:%06X _ecn_tsk_eoj_set_main() fault. result = %d",
+			fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3,
+			a_ret);
+		goto lb_except;
+	}
+	ECN_DBG_PUT "_ecn_tsk_eoj_set_get() eoj:%06X _ecn_tsk_eoj_set_main() ok sw_ok:%s",
+		fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3,
+		(a_sw_ok ? "true" : "false") ECN_DBG_END;
+
+	/* ÌðÇÝæé(1byte)						*/
+	/* ¨ ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet]	*/
+	a_rdlen = i = 0;
+	a_ret = _ecn_fbs_get_data(fa_fbs_id, &i, 1, &a_rdlen);
+	if (a_ret < 0 || a_rdlen < 1)
+		goto lb_except;	/* NG */
+	a_count = *(uint8_t *)&i;
+
+	/* vpeBÇÝÝ«ÝÌwbhîñðL^ */
+	a_rdprp_wrpos = _ecn_fbs_get_datalen(a_fbs_res);
+
+	/* d¶pÉf[^ÇÁ (OPCGet 1byte) */
+	a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &i, 1);
+	if (a_ret)
+		goto lb_except;
+
+	/* ±Ì_ÅÌd¶vpeBðL^ */
+	i = ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc;
+	((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = 0;
+
+	/* vpeBlÇÝÝÀs */
+	a_ret = _ecn_tsk_eoj_get_main(fp_obj, fa_eobjatr, false, EPC_RULE_GET, fa_fbs_id, a_fbs_res,
+		a_count, &a_sw_ok);
+	if (a_ret) {
+		syslog(LOG_WARNING, "_ecn_tsk_eoj_set_get() eoj:%06X _ecn_tsk_eoj_get_main() fault. result = %d",
+			fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3,
+			a_ret);
+		goto lb_except;
+	}
+	ECN_DBG_PUT "_ecn_tsk_eoj_set_get() eoj:%06X _ecn_tsk_eoj_get_main() ok sw_ok:%s",
+		fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3,
+		(a_sw_ok ? "true" : "false") ECN_DBG_END;
+
+	/* vpeBÇÝÝ«ÝÌwbhîñÅAÇÝoµðL^ */
+	_ecn_fbs_poke(a_fbs_res, a_rdprp_wrpos, ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc);
+
+	/* L^µÄ¨¢½vpeBi«Ýjð«ß· */
+	((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = (uint8_t)i;
+
+	/* vÌê */
+	if (a_sw_ok) {
+		/* Ýè¬÷ */
+		((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv;
+	} else {
+		/* Ýè¸s */
+		((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv;
+	}
+	/* M */
+	a_ret = _ecn_tsk_snd_mbx(a_fbs_res, false);
+	if (a_ret == E_OK)
+		goto lb_finally;
+
+lb_except:
+	/* f[^M¸sµ½çÌæðú */
+	if (a_fbs_res.ptr)
+		_ecn_fbs_del(a_fbs_res);
+
+lb_finally:
+	return;
+}
+
+static void _ecn_tsk_eoj_set_get_res(const EOBJINIB *fp_obj, ATR fa_eobjatr,
+	ECN_FBS_ID fa_fbs_id, ECN_FBS_ID *fa_fbs_anno)
+{
+	T_ECN_EDT_HDR	const *p_req_esv = &((T_EDATA *)fa_fbs_id.ptr)->hdr;
+	T_ECN_EDT_HDR	a_ecn_hdp;
+	ECN_FBS_ID		a_fbs_dmy = { 0 };
+	ER		a_ret;
+	int		i, a_size, a_rdlen;
+	int		a_sw_ok = 1;
+	int		a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc;	/* vpeB */
+
+	memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp));
+
+	ECN_DBG_PUT "_ecn_tsk_eoj_set_get_res() eoj:%06X",
+		fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3 ECN_DBG_END;
+
+	/* úæ¾TCY */
+	a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP);
+
+	/* d¶pi_~[jÌæ¾ */
+	a_ret = _ecn_fbs_cre(a_size, &a_fbs_dmy);
+	if (a_ret != E_OK || !a_fbs_dmy.ptr) /* mÛ¸s */
+		goto lb_finally;
+
+	/* d¶Ýè						*/
+	_ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv);
+	a_size -= sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY);
+
+	/* payloadæªÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)ðÇÝòÎ· */
+	a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp));
+	if (a_ret)
+		goto lb_except;
+
+	/* vpeBl«ÝÇÝòÎµÀs */
+	a_ret = _ecn_tsk_eoj_skip_main(fp_obj, fa_fbs_id, a_count);
+	if (a_ret) {
+		syslog(LOG_WARNING, "_ecn_tsk_eoj_set_get_res() eoj:%06X _ecn_tsk_eoj_set_main() fault. result = %d",
+			fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3,
+			a_ret);
+		goto lb_except;
+	}
+	ECN_DBG_PUT "_ecn_tsk_eoj_set_get_res() eoj:%06X _ecn_tsk_eoj_set_main() ok sw_ok:%s",
+		fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3,
+		(a_sw_ok ? "true" : "false") ECN_DBG_END;
+
+	/* ÌðÇÝæé(1byte)						*/
+	/* ¨ ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet]	*/
+	a_rdlen = i = 0;
+	a_ret = _ecn_fbs_get_data(fa_fbs_id, &i, 1, &a_rdlen);
+	if (a_ret < 0 || a_rdlen < 1)
+		goto lb_except;	/* NG */
+	a_count = *(uint8_t *)&i;
+
+	/* vpeBlÇÝoµÌ«ÝÀs */
+	a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, true, fa_fbs_id, a_fbs_dmy,
+								  fa_fbs_anno, a_count, &a_sw_ok);
+	if (a_ret) {
+		syslog(LOG_WARNING, "_ecn_tsk_eoj_set_get_res() eoj:%06X _ecn_tsk_eoj_get_main() fault. result = %d",
+			fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3,
+			a_ret);
+		goto lb_except;
+	}
+	ECN_DBG_PUT "_ecn_tsk_eoj_set_get_res() eoj:%06X _ecn_tsk_eoj_get_main() ok sw_ok:%s",
+		fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3,
+		(a_sw_ok ? "true" : "false") ECN_DBG_END;
+
+	goto lb_finally;
+
+lb_except:
+	/* f[^M¸sµ½çÌæðú */
+	if (a_fbs_dmy.ptr)
+		_ecn_fbs_del(a_fbs_dmy);
+
+lb_finally:
+	return;
+}
+
+/*
+ * d¶Ò¿ÌèÝd¶ì¬
+ */
+ER _ecn_mk_brk_wai(ECN_FBS_ID *pk_fbs_id, const void *p_dat, size_t fa_size)
+{
+	ER				a_ret;
+	ECN_FBS_ID		a_fbs_id = { 0 };	/* vd¶p	*/
+
+	if (!pk_fbs_id)
+		return E_PAR;
+	*pk_fbs_id = a_fbs_id;
+	if (sizeof(a_fbs_id.ptr->payload) <= fa_size)
+		return E_PAR; /* tf[^ªå«·¬é */
+	if (!p_dat && 0 < fa_size)
+		return E_PAR; /* tf[^TCYª1ÈãÈÌÉf[^|C^ªNULL */
+
+	/* vd¶pÌæ¾ */
+	a_ret = _ecn_fbs_cre((0 < fa_size ? fa_size : 1), &a_fbs_id);
+	if (a_ret != E_OK || !a_fbs_id.ptr) { /* mÛ¸s */
+		syslog(LOG_WARNING, "_ecn_fbs_cre(%d) result = %d:%s", fa_size, a_ret, itron_strerror(a_ret));
+		return a_ret;
+	}
+
+	/* vd¶Ýè */
+	a_fbs_id.ptr->hdr.type = ECN_MSG_USER_BREAK;
+	a_fbs_id.ptr->hdr.sender = ENOD_API_ID;
+	a_fbs_id.ptr->hdr.target = ENOD_API_ID;
+	a_fbs_id.ptr->hdr.reply = ENOD_API_ID;
+
+	if (0 < fa_size && p_dat) {
+		/* tf[^ÇÁ */
+		a_ret = _ecn_fbs_add_data_ex(a_fbs_id, p_dat, fa_size);
+		if (a_ret) {
+			syslog(LOG_WARNING, "_ecn_fbs_add_data_ex(*, dat, %lu) result = %d:%s",
+				fa_size,
+				a_ret, itron_strerror(a_ret));
+			goto lb_except;
+		}
+	}
+
+	*pk_fbs_id = a_fbs_id;
+
+	/* ³íI¹ */
+	return a_ret;
+
+lb_except:
+	/* f[^ì¬¸sµ½çÌæðú */
+	if (a_fbs_id.ptr)
+		_ecn_fbs_del(a_fbs_id);
+
+	return a_ret;
+}
+
+/* d¶pfbsÝè(sender/targetÌÝè) */
+ER _ecn_tsk_cre_req_fbs(ID sender, uint8_t cmd, ECN_FBS_ID *pk_req)
+{
+	ER ret;
+	ECN_FBS_ID req;
+
+	ret = _ecn_fbs_cre(1, &req);
+	if (ret != E_OK) {
+		ECN_DBG_PUT "_ecn_tsk_cre_req_fbs() : _ecn_fbs_cre() result = %d:%s", ret, itron_strerror(ret) ECN_DBG_END;
+		return ret;
+	}
+
+	ret = _ecn_fbs_add_data(req, &cmd, sizeof(cmd));
+	if (ret != E_OK) {
+		_ecn_fbs_del(req);
+		ECN_DBG_PUT "_ecn_tsk_cre_req_fbs() : _ecn_fbs_add_data() result = %d:%s", ret, itron_strerror(ret) ECN_DBG_END;
+		return ret;
+	}
+
+	req.ptr->hdr.type = ECN_MSG_INTERNAL;
+	req.ptr->hdr.sender_mbxid = sender;
+	req.ptr->hdr.target_mbxid = ecn_svc_mailboxid;
+	req.ptr->hdr.reply_mbxid = sender;
+
+	*pk_req = req;
+
+	return E_OK;
+}
+
+/* d¶pfbsÝè(sender/targetÌÝè) */
+ER _ecn_tsk_cre_res_fbs(ECN_FBS_ID req, uint8_t cmd, ECN_FBS_ID *pk_res)
+{
+	ER ret;
+	ECN_FBS_ID res;
+
+	ret = _ecn_fbs_cre(1, &res);
+	if (ret != E_OK) {
+		ECN_DBG_PUT "_ecn_tsk_cre_res_fbs() : _ecn_fbs_cre() result = %d:%s", ret, itron_strerror(ret) ECN_DBG_END;
+		return ret;
+	}
+
+	ret = _ecn_fbs_add_data(res, &cmd, sizeof(cmd));
+	if (ret != E_OK) {
+		_ecn_fbs_del(res);
+		ECN_DBG_PUT "_ecn_tsk_cre_res_fbs() : _ecn_fbs_add_data() result = %d:%s", ret, itron_strerror(ret) ECN_DBG_END;
+		return ret;
+	}
+
+	res.ptr->hdr.type = ECN_MSG_INTERNAL;
+	res.ptr->hdr.sender_mbxid = ecn_svc_mailboxid;
+	res.ptr->hdr.target_mbxid = req.ptr->hdr.reply_mbxid;
+	res.ptr->hdr.reply_mbxid = ecn_svc_mailboxid;
+
+	*pk_res = res;
+
+	return E_OK;
+}
Index: uKadecot/trunk/ecnl_ssp/echonet_task.h
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_task.h	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet_task.h	(revision 101)
@@ -0,0 +1,155 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		ECHONET Lite ^XN
+ */
+
+#ifndef TOPPERS_ECHONET_TASK_H
+#define TOPPERS_ECHONET_TASK_H
+
+/*#include ".h"*/
+
+#include "echonet_rename.h"
+#include "echonet.h"
+#include "echonet_fbs.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  ECHONET Lite ^XNÖAÌèÌftHglÌè`
+ */ 
+#ifndef ECHONET_TASK_PRIORITY
+#define ECHONET_TASK_PRIORITY	6		/* úDæx */
+#endif /* ECHONET_TASK_PRIORITY */
+
+#ifndef ECHONET_TASK_STACK_SIZE
+#define ECHONET_TASK_STACK_SIZE	1024	/* X^bNÌæÌTCY */
+#endif /* ECHONET_TASK_STACK_SIZE */
+
+#ifndef NUM_ECHONET_MAILBOX
+#define NUM_ECHONET_MAILBOX	10
+#endif /* NUM_ECHONET_MAILBOX */
+
+#ifndef NUM_ECHONET_API_MAILBOX
+#define NUM_ECHONET_API_MAILBOX	10
+#endif /* NUM_ECHONET_API_MAILBOX */
+
+extern const EOBJINIB _echonet_eobjinib_table[];
+extern EOBJCB _echonet_eobjcb_table[];
+extern ENODADRB _echonet_enodadrb_table[];
+extern uint16_t _echonet_apitid_table[];
+
+/*
+ *  ECHONET Lite ^XNÌ{Ì
+ */
+void echonet_task(intptr_t exinf);
+
+/*
+ *  ECHONET Lite ^XNN®p
+ */
+void echonet_cychdr(intptr_t exinf);
+
+/* ECHONET Lite CX^XXgÌ1AiEX½èÅåm[h */
+#define ECN_IST_LST_EOJ_MAX_CT (84)
+
+/* ECHONET LiteIuWFNgR[h x1,x2,x3(T_ECN_EOJ)ð24bit®ÉÏ· */
+#define _ECN_EOJ2VALUE(s) (((s).eojx1 << 16) | ((s).eojx2 << 8) | (s).eojx3)
+
+enum ecn_epc_code
+{
+	ECN_EPC_INL_BCS		=	0xD5	/* CX^XXgÊmvpeB */
+};
+
+typedef enum
+{
+	ECN_MSG_UNDEF		=	0,
+	ECN_MSG_INTERNAL	=	1,
+	ECN_MSG_ECHONET		=	2,
+	ECN_MSG_USER_BREAK	=	3
+} ECN_MSG_TYPE;
+
+typedef enum
+{
+	ECN_INM_NOTIFY_INSTANCELIST = 1,
+	ECN_INM_GET_DEVICE_LIST_REQ,
+	ECN_INM_GET_DEVICE_LIST_RES,
+	ECN_INM_GET_DEVICE_INFO_REQ,
+	ECN_INM_GET_DEVICE_INFO_RES,
+	ECN_UDP_MSG_GET_IPADDR_REQ,
+	ECN_UDP_MSG_GET_IPADDR_RES,
+	ECN_UDP_MSG_GET_IPADDR_ERROR
+} ECN_INT_MSG_COMMAND;
+
+typedef struct
+{
+	uint8_t	command;
+	uint8_t	data[1];
+} T_ECN_INTERNAL_MSG;
+
+/*
+ * vd¶ì¬
+ */
+ER _ecn_tsk_mk_esv(ECN_FBS_ID *fp_fbs_id, ID fa_seoj, ID fa_deoj,
+	uint8_t fa_epc, uint8_t fa_pdc, const void *p_edt, ECN_SRV_CODE fa_esv);
+
+ER _ecn_tsk_snd_mbx(ECN_FBS_ID fa_rsp_fbs, bool_t from_app);
+
+/*
+ * d¶Ò¿ÌèÝd¶ì¬
+ */
+ER _ecn_mk_brk_wai(ECN_FBS_ID *pk_fbs_id, const void *p_dat, size_t fa_size);
+
+const EOBJCB *_ecn_eno_fnd(ECN_ENOD_ID enodid);
+
+const EOBJINIB *_ecn_eoj_fnd(const EOBJCB *fp_nod, const T_ECN_EOJ *fp_eoj);
+
+ER _ecn_tsk_cre_req_fbs(ID sender, uint8_t cmd, ECN_FBS_ID *pk_req);
+
+ER _ecn_tsk_cre_res_fbs(ECN_FBS_ID req, uint8_t cmd, ECN_FBS_ID *pk_res);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_ECHONET_TASK_H */
Index: uKadecot/trunk/ecnl_ssp/echonet_uip_task.c
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_uip_task.c	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet_uip_task.c	(revision 101)
@@ -0,0 +1,766 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		ECHONET Lite UDPÊM^XN
+ */
+#ifdef SUPPORT_UIP
+
+#include <kernel.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <t_syslog.h>
+#include <sil.h>
+#include <uip.h>
+#include "uip_adpt.h"
+
+#include "syssvc/serial.h"
+#include "syssvc/syslog.h"
+#include "echonet.h"
+#include "echonet_task.h"
+#include "echonet_lcl_task.h"
+#include "echonet_dbg.h"
+
+#ifndef ECHONET_UDP_TASK_GET_TIMER
+#define ECHONET_UDP_TASK_GET_TIMER	TMO_FEVR
+#endif /* ECHONET_UDP_TASK_GET_TIMER */
+
+#ifndef ECHONET_UDP_TASK_PROGRESS
+#define ECHONET_UDP_TASK_PROGRESS(timer)
+#endif /* ECHONET_UDP_TASK_PROGRESS */
+
+#ifndef ECHONET_UDP_TASK_TIMEOUT
+#define ECHONET_UDP_TASK_TIMEOUT
+#endif /* ECHONET_UDP_TASK_TIMEOUT */
+
+#ifndef ECHONET_UDP_SEND_TO_MBX
+#define ECHONET_UDP_SEND_TO_MBX
+#endif /* ECHONET_UDP_SEND_TO_MBX */
+
+#ifndef ECHONET_NODE_MATCH
+#define ECHONET_NODE_MATCH(enodcb, edata, ipaddr, portno) is_match(enodcb, edata, ipaddr, portno)
+#endif /* ECHONET_NODE_MATCH */
+
+static T_IN4_ADDR localhost;
+static T_IN4_ADDR multicast;
+static T_IN4_ADDR zeroaddr;
+struct uip_udp_conn *UDP_CEPID;
+
+static ECN_ENOD_ID udp_get_id(T_EDATA *edata, const T_IN4_ADDR ipaddr, uint16_t portno);
+static int udp_get_ip(T_IPV4EP *fp_ipep, ECN_ENOD_ID fa_enodid);
+void _ecn_int_msg(ECN_FBS_ID fbs_id, ECN_FBS_SSIZE_T a_snd_len);
+void _ecn_esv_msg(ECN_FBS_ID fbs_id);
+
+static struct pt pt;
+static struct uip_timer timer;
+
+/*
+ * óMµ½UDPf[^ðMAILBOXÉé
+ */
+ER _ecn_udp2mbx(const uint8_t *buffer, size_t fa_len, const T_IPV4EP *dst);
+ER _ecn_udp2mbx(const uint8_t *buffer, size_t fa_len, const T_IPV4EP *dst)
+{
+	ECN_FBS_ID	a_fbs_id = { 0 };
+	ER			a_ret = E_OK;
+	ECN_ENOD_ID	a_enod_id;
+	union
+	{
+		const uint8_t			*buffer;
+		const T_ECN_EDT_HDR		*t_esv;
+	} a_rcv_pkt;
+
+	a_rcv_pkt.buffer = buffer;
+	if (	a_rcv_pkt.t_esv->ecn_hdr.ehd1 != ECN_EDH1_ECHONET_LITE	/* ECHONET LiteKi	*/
+	||	a_rcv_pkt.t_esv->ecn_hdr.ehd2 != ECN_EDH2_FORMAT_1			/* d¶`®1		*/) {
+		ECN_DBG_PUT "[UDP ECHO SRV] illegal type (0x%02X,0x%02X)", a_rcv_pkt.t_esv->ecn_hdr.ehd1, a_rcv_pkt.t_esv->ecn_hdr.ehd2 ECN_DBG_END;
+		return E_PAR;
+	}
+
+#ifdef ECN_DBG_PUT_ENA
+	_ecn_dbg_bindmp(buffer, fa_len);
+#endif
+
+	a_ret = _ecn_fbs_cre(fa_len, &a_fbs_id);
+	if (a_ret != E_OK) {
+		ECN_DBG_PUT "[UDP ECHO SRV] _ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		return a_ret;
+	}
+	a_ret = _ecn_fbs_add_data_ex(a_fbs_id, buffer, fa_len);
+	if (a_ret) {
+		ECN_DBG_PUT "[UDP ECHO SRV] _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		goto lb_except;
+	}
+	a_fbs_id.ptr->hdr.type = ECN_MSG_ECHONET;
+	a_fbs_id.ptr->hdr.target = ENOD_LOCAL_ID;
+	a_fbs_id.ptr->hdr.sender = ENOD_NOT_MATCH_ID;
+
+	/* IPAhX©ç[gECHONETm[hÖÏ· */
+	a_enod_id = udp_get_id((T_EDATA *)a_fbs_id.ptr, dst->ipaddr, dst->portno);
+	if (a_enod_id < 0 || tnum_enodadr <= a_enod_id) {
+		ECN_DBG_PUT "[UDP ECHO SRV] udp src(%s) echonet-node not found.",
+			ip2str(NULL, dst->ipaddr) ECN_DBG_END;
+	} else {
+		/* M³ECHONETm[hðL^ */
+		a_fbs_id.ptr->hdr.sender = a_enod_id;
+	}
+	a_fbs_id.ptr->hdr.reply = a_fbs_id.ptr->hdr.sender;
+
+	/* echonet_taskÉé */
+	a_ret = psnd_dtq(ecn_svc_mailboxid, (intptr_t)a_fbs_id.ptr);
+	if (a_ret != E_OK) {
+		ECN_DBG_PUT "[UDP ECHO SRV] psnd_dtq(ecn_svc_mailboxid) result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		goto lb_except;
+	}
+	return a_ret;
+lb_except:
+	_ecn_fbs_del(a_fbs_id);
+	return a_ret;
+}
+
+/*
+ *  ECHONET UDPÊM^XN
+ */
+static
+PT_THREAD(echonet_udp_task_pt(void))
+{
+	/* UDPoÍÌæibèj */
+	static uint_t buffer[(UIP_BUFSIZE) / sizeof(uint_t) + 1];
+
+	T_IN4_ADDR	a_src;
+	ER			a_ret, a_ret2;
+	ECN_FBS_SSIZE_T	a_snd_len;
+	union
+	{
+		intptr_t	p_msg;
+		ECN_FBS_ID	fbs_id;
+	} a_mdt;
+	static SYSTIM a_prev, a_now;
+	TMO a_timer;
+	T_UDP_CCEP ccep;
+
+	PT_BEGIN(&pt);
+
+	uip_ipaddr(localhost, 127, 0, 0, 1);
+	uip_ipaddr(multicast, 224, 0, 23, 0);
+	uip_ipaddr(zeroaddr, 0, 0, 0, 0);
+	uip_ipaddr(ccep.ripaddr, 0, 0, 0, 0);
+	ccep.rport = 0;
+	ccep.lport = 3610;
+	ccep.callback = callback_nblk_udp;
+
+	uip_gethostaddr(a_src);
+	ECN_DBG_PUT "[UDP TSK:%d] started, IP Address: %s ether_max_len: %u",
+		ecn_udp_taskid,
+		ip2str(NULL, a_src),
+		UIP_BUFSIZE ECN_DBG_END;
+	uip_ipaddr_copy(enodadrb_table[ENOD_LOCAL_ID].ipaddr, a_src);
+
+	UDP_CEPID = udp_acre_cep(&ccep);
+	if (UDP_CEPID == NULL) {
+		ECN_DBG_PUT "udp_acre_cep()" ECN_DBG_END;
+		PT_EXIT(&pt);
+	}
+
+	/* üúnhÌN® */
+	a_ret = sta_cyc(ecn_udp_cychdrid);
+	if (a_ret != E_OK) {
+		ECN_DBG_PUT "sta_cyc() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		PT_EXIT(&pt);
+	}
+
+	a_ret = act_tsk(ecn_svc_taskid);
+	if (a_ret != E_OK) {
+		ECN_DBG_PUT "act_tsk() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		PT_EXIT(&pt);
+	}
+
+	a_ret = get_tim(&a_now);
+	if (a_ret != E_OK) {
+		ECN_DBG_PUT "get_tim() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		PT_EXIT(&pt);
+	}
+
+	/* bZ[W[v */
+	for (;;) {
+		a_prev = a_now;
+
+		a_timer = ECHONET_UDP_TASK_GET_TIMER;
+		timer_set(&timer, a_timer);
+
+		PT_WAIT_UNTIL(&pt, (((a_ret = prcv_dtq(ecn_udp_mailboxid, &a_mdt.p_msg)) == E_OK)
+			|| ((a_ret = timer_expired(&timer) ? E_TMOUT : E_WBLK) == E_TMOUT)));
+		if ((a_ret != E_OK) && (a_ret != E_TMOUT)) {
+			ECN_DBG_PUT "trcv_dtq() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+			PT_EXIT(&pt);
+		}
+
+		a_ret2 = get_tim(&a_now);
+		if (a_ret2 != E_OK) {
+			ECN_DBG_PUT "get_tim() result = %d:%s", a_ret2, itron_strerror(a_ret2) ECN_DBG_END;
+			PT_EXIT(&pt);
+		}
+
+		a_timer = a_now - a_prev;
+		ECHONET_UDP_TASK_PROGRESS(a_timer);
+
+		if (a_ret == E_OK) {
+			/* Mf[^·ðæ¾ */
+			a_snd_len = _ecn_fbs_get_datalen(a_mdt.fbs_id);
+
+			ECN_DBG_PUT "[UDP TSK] trcv_dtq() mbx recv (%d byte)", a_snd_len ECN_DBG_END;
+
+			if (0 < a_snd_len) {
+				switch(a_mdt.fbs_id.ptr->hdr.type){
+				case ECN_MSG_INTERNAL:
+					_ecn_int_msg(a_mdt.fbs_id, a_snd_len);
+					break;
+				case ECN_MSG_ECHONET:
+					_ecn_esv_msg(a_mdt.fbs_id);
+					break;
+				}
+			}
+
+			_ecn_fbs_del(a_mdt.fbs_id);
+		}
+
+		ECHONET_UDP_TASK_TIMEOUT;
+	}
+
+	PT_END(&pt);
+}
+
+/*
+ *  ECHONET UDPÊMvgXbhN®^XN
+ */
+void echonet_udp_task(intptr_t exinf)
+{
+	echonet_udp_task_pt();
+}
+
+/*
+ *  ECHONET UDPÊM^XNN®püúnh[
+ */
+void echonet_udp_cychdr(intptr_t exinf)
+{
+	(void)iact_tsk((ID)exinf);
+}
+
+/* d¶pfbsÝè(sender/targetÌÝè) */
+static ER _ecn_udp_cre_req_fbs(ID sender, uint8_t cmd, ECN_FBS_ID *pk_req)
+{
+	ER ret;
+	ECN_FBS_ID req;
+
+	ret = _ecn_fbs_cre(1, &req);
+	if (ret != E_OK) {
+		ECN_DBG_PUT "_ecn_udp_cre_req_fbs() : _ecn_fbs_cre() result = %d:%s", ret, itron_strerror(ret) ECN_DBG_END;
+		return ret;
+	}
+
+	ret = _ecn_fbs_add_data(req, &cmd, sizeof(cmd));
+	if (ret != E_OK) {
+		_ecn_fbs_del(req);
+		ECN_DBG_PUT "_ecn_udp_cre_req_fbs() : _ecn_fbs_add_data() result = %d:%s", ret, itron_strerror(ret) ECN_DBG_END;
+		return ret;
+	}
+
+	req.ptr->hdr.type = ECN_MSG_INTERNAL;
+	req.ptr->hdr.sender_mbxid = sender;
+	req.ptr->hdr.target_mbxid = ecn_udp_mailboxid;
+	req.ptr->hdr.reply_mbxid = sender;
+
+	*pk_req = req;
+
+	return E_OK;
+}
+
+/* d¶pfbsÝè(sender/targetÌÝè) */
+static ER _ecn_udp_cre_res_fbs(ECN_FBS_ID req, uint8_t cmd, ECN_FBS_ID *pk_res)
+{
+	ER ret;
+	ECN_FBS_ID res;
+
+	ret = _ecn_fbs_cre(1, &res);
+	if (ret != E_OK) {
+		ECN_DBG_PUT "_ecn_udp_cre_res_fbs() : _ecn_fbs_cre() result = %d:%s", ret, itron_strerror(ret) ECN_DBG_END;
+		return ret;
+	}
+
+	ret = _ecn_fbs_add_data(res, &cmd, sizeof(cmd));
+	if (ret != E_OK) {
+		_ecn_fbs_del(res);
+		ECN_DBG_PUT "_ecn_udp_cre_res_fbs() : _ecn_fbs_add_data() result = %d:%s", ret, itron_strerror(ret) ECN_DBG_END;
+		return ret;
+	}
+
+	res.ptr->hdr.type = ECN_MSG_INTERNAL;
+	res.ptr->hdr.sender_mbxid = ecn_udp_mailboxid;
+	res.ptr->hdr.target_mbxid = req.ptr->hdr.reply_mbxid;
+	res.ptr->hdr.reply_mbxid = ecn_udp_mailboxid;
+
+	*pk_res = res;
+
+	return E_OK;
+}
+
+/*
+ *  àbZ[WóM
+ */
+void _ecn_int_msg(ECN_FBS_ID fbs_id, ECN_FBS_SSIZE_T a_snd_len)
+{
+	ER result = E_OK, a_ret;
+	ecn_udp_msg_get_ipaddr_req_t msg;
+	ecn_udp_msg_get_ipaddr_error_t err;
+	ECN_FBS_SSIZE_T len;
+	ECN_FBS_ID buf;
+	uint8_t cmd;
+
+	a_ret = _ecn_fbs_get_data(fbs_id, &cmd, 1, &len);
+	if (a_ret != E_OK) {
+		ECN_DBG_PUT "[UDP TSK] _ecn_fbs_get_data() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		return;
+	}
+
+	switch(cmd){
+	// IPAhXðÔM
+	case ECN_UDP_MSG_GET_IPADDR_REQ:
+		if (a_snd_len < sizeof(msg)) {
+			result = E_PAR;
+			break;
+		}
+
+		a_snd_len = 0;
+		a_ret = _ecn_fbs_get_data(fbs_id, &msg, sizeof(msg), &a_snd_len);
+		if (a_ret != E_OK) {
+			ECN_DBG_PUT "[UDP TSK] _ecn_fbs_get_data() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		}
+
+		if ((msg.enodid < 0) && (msg.enodid >= tnum_enodadr)) {
+			result = E_PAR;
+			break;
+		}
+		
+		a_ret = _ecn_udp_cre_res_fbs(fbs_id, ECN_UDP_MSG_GET_IPADDR_RES, &buf);
+		if (a_ret != E_OK) {
+			return;
+		}
+
+		a_ret = _ecn_fbs_add_data_ex(buf, &msg.requestid, offsetof(ecn_udp_msg_get_ipaddr_res_t, enodadrb));
+		if (a_ret != E_OK) {
+			_ecn_fbs_del(buf);
+			ECN_DBG_PUT "_ecn_int_msg() : _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+			return;
+		}
+
+		a_ret = _ecn_fbs_add_data_ex(buf, &enodadrb_table[msg.enodid], sizeof(enodadrb_table[msg.enodid]));
+		if (a_ret != E_OK) {
+			_ecn_fbs_del(buf);
+			ECN_DBG_PUT "_ecn_int_msg() : _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+			return;
+		}
+
+		a_ret = psnd_dtq(buf.ptr->hdr.target_mbxid, (intptr_t)buf.ptr);
+		if (a_ret != E_OK) {
+			_ecn_fbs_del(buf);
+			ECN_DBG_PUT "_ecn_int_msg() : psnd_dtq() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+			return;
+		}
+		return;
+	}
+
+	a_ret = _ecn_udp_cre_res_fbs(fbs_id, ECN_UDP_MSG_GET_IPADDR_ERROR, &buf);
+	if (a_ret != E_OK) {
+		return;
+	}
+
+	err.requestid = msg.requestid;
+	err.error = result;
+	a_ret = _ecn_fbs_add_data_ex(buf, &err, sizeof(err));
+	if (a_ret != E_OK) {
+		_ecn_fbs_del(buf);
+		ECN_DBG_PUT "_ecn_int_msg() : _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		return;
+	}
+
+	a_ret = psnd_dtq(buf.ptr->hdr.target_mbxid, (intptr_t)buf.ptr);
+	if (a_ret != E_OK) {
+		_ecn_fbs_del(buf);
+		ECN_DBG_PUT "_ecn_int_msg() : psnd_dtq() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		return;
+	}
+}
+
+/*
+ *  ECHONET d¶óM
+ */
+void _ecn_esv_msg(ECN_FBS_ID fbs_id)
+{
+	/* UDPoÍÌæibèj */
+	static uint_t buffer[(UIP_BUFSIZE) / sizeof(uint_t) + 1];
+	T_IPV4EP a_dst;
+	ER a_ret;
+	ECN_FBS_SSIZE_T a_snd_len;
+	static SYSTIM a_prev, a_now;
+
+	uip_ipaddr(a_dst.ipaddr, 0,0,0,0);
+	a_dst.portno = 0;
+	/* MæIPAhX */
+	a_ret = udp_get_ip(&a_dst, fbs_id.ptr->hdr.target);
+	if (!a_ret) {
+		ECN_DBG_PUT "[UDP TSK] echonet-node 0x%02X-0x%02X-0x%02X ¨ udp dest(%s)",
+			((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx1,
+			((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx2,
+			((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx3,
+			ip2str(NULL, a_dst.ipaddr) ECN_DBG_END;
+
+		/* fbs©çoÍÌæÉf[^ðo */
+		a_snd_len = 0;
+		a_ret = _ecn_fbs_get_data(fbs_id, buffer, sizeof(buffer), &a_snd_len);
+		if (a_ret != E_OK) {
+			ECN_DBG_PUT "[UDP TSK] _ecn_fbs_get_data() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		}
+		else if(uip_ipaddr_cmp(a_dst.ipaddr, localhost)) {
+			/* Mæª127.0.0.1 ¨ mbxÉ] */
+			ECN_DBG_PUT "redirect ecn_udp_mailboxid ¨ ecn_svc_mailboxid (esv:0x%02X)",
+				((T_EDATA *)fbs_id.ptr)->hdr.edata.esv ECN_DBG_END;
+
+			a_ret = _ecn_udp2mbx((const uint8_t *)buffer, a_snd_len, &a_dst);
+			if (a_ret != E_OK) {
+				syslog(LOG_WARNING, "_ecn_esv_msg() : _ecn_udp2mbx() result = %d:%s", a_ret, itron_strerror(a_ret));
+			}
+		}
+		else {
+			ECN_DBG_PUT "[UDP TSK] udp_snd_dat() to:%s %ubyte(s)",
+				ip2str(NULL, a_dst.ipaddr), a_snd_len ECN_DBG_END;
+#ifdef ECN_DBG_PUT_ENA
+			_ecn_dbg_bindmp((const uint8_t *)buffer, a_snd_len);
+#endif
+			/* UDPM */
+			a_ret = udp_snd_dat(UDP_CEPID, &a_dst, buffer, a_snd_len);
+			if (a_ret < 0) {
+				ECN_DBG_PUT "[UDP TSK] send, error: %s", itron_strerror(a_ret) ECN_DBG_END;
+			}
+		}
+
+		/* f[^ª··¬Ä1pPbgÉûÜçÈ©Á½ê */
+		if (_ecn_fbs_exist_data(fbs_id)) {
+			ECN_DBG_PUT "[UDP TSK] send, data so long: %dbyte(s)", _ecn_fbs_get_datalen(fbs_id) ECN_DBG_END;
+		}
+	} else {
+		ECN_DBG_PUT "[UDP TSK] echonet-node 0x%02X-0x%02X-0x%02X not found.",
+			((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx1,
+			((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx2,
+			((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx3 ECN_DBG_END;
+	}
+}
+
+static struct ecnl_state s;
+
+/*
+ *  mubLOR[ÌR[obNÖ
+ */
+static
+PT_THREAD(callback_nblk_udp_pt(void))
+{
+	/* void *p_parblk = uip_buf; */
+	static uint8_t buffer[(UIP_BUFSIZE) / sizeof(uint_t) + 1];
+	T_IPV4EP dst;
+	int a_len;
+
+	PT_BEGIN(&s.pt);
+
+	/* ECN_CAP_PUT "[UDP ECHO SRV] callback_nblk_udp() recv: %u", *(int *)p_parblk ECN_CAP_END; */
+	memset(buffer, 0, sizeof(buffer));
+
+	PT_WAIT_UNTIL(&s.pt, ((a_len = udp_rcv_dat(UDP_CEPID, &dst, buffer, sizeof(buffer) - 1)) != 0));
+	if(a_len < 0) {
+		syslog(LOG_WARNING, "[UDP ECHO SRV] recv, error: %s", itron_strerror(a_len));
+		PT_EXIT(&s.pt);
+	}
+#ifdef _MSC_VER
+	/* (J­p) ECHONETppPbgÈOÍÇÝÌÄé */
+	if (buffer[0] != 0x10 || buffer[1] != 0x81) {
+		PT_EXIT(&s.pt);
+	}
+#endif
+	ECN_CAP_PUT "[UDP ECHO SRV] recv, addr: %s:%d, len: %d, msg: '%s'",
+			ip2str(NULL, dst.ipaddr), dst.portno, a_len, buffer ECN_CAP_END;
+	if ((int)sizeof(buffer) <= a_len)
+		a_len = (int)sizeof(buffer) - 1;
+	if (0 < a_len) {
+		ECHONET_UDP_SEND_TO_MBX;
+
+		_ecn_udp2mbx(buffer, a_len, &dst);
+	}
+
+	PT_END(&s.pt);
+}
+
+ER callback_nblk_udp(struct uip_udp_conn *uip_udp_conn, int fncd, void *p_parblk)
+{
+	callback_nblk_udp_pt();
+
+	return E_OK;
+}
+
+void callback_nblk_tcp(void)
+{
+}
+
+/*
+ *  [gECHONETm[hÌKmF
+ */
+bool_t is_match(const EOBJCB *enodcb, T_EDATA *edata, const void *_ipaddr, uint16_t portno)
+{
+	/*T_IN4_ADDR *ipaddr = (T_IN4_ADDR *)_ipaddr;*/
+	ER			ret;
+	T_ENUM_EPC	enm;
+	uint8_t		epc;
+	uint8_t		pdc;
+	uint8_t		p_edt[256];
+	int			i, j, k;
+	int			count;
+	const EOBJINIB	*p_eobj;
+	bool_t		match;
+
+	if (!edata)
+		return false;
+
+	/* m[hX^[gCX^XXgÊmÈOÍO */
+	if (	edata->hdr.edata.esv != ESV_INF
+		||	edata->hdr.edata.deoj.eojx1 != EOJ_X1_PROFILE
+		||	edata->hdr.edata.deoj.eojx2 != EOJ_X2_NODE_PROFILE
+		||	edata->hdr.edata.deoj.eojx3 != 0x01
+		||	edata->hdr.edata.seoj.eojx1 != EOJ_X1_PROFILE
+		||	edata->hdr.edata.seoj.eojx2 != EOJ_X2_NODE_PROFILE
+		||	(	edata->hdr.edata.seoj.eojx3 != 0x01
+			&&	edata->hdr.edata.seoj.eojx3 != 0x02)) {
+		return false;
+	}
+
+	ret = ecn_itr_ini(&enm, edata);
+	if (ret) {
+		syslog(LOG_WARNING, "is_match(): ecn_itr_ini() result = %d:%s", ret, itron_strerror(ret));
+		return false;
+	}
+	while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
+		if (enm.is_eof) {
+			break;
+		}
+		ECN_DBG_PUT "is_match(): ecn_itr_nxt() result: epc=0x%02X, pdc=%d", epc, pdc ECN_DBG_END;
+		/* CX^XXgÊmÜ½Í©m[hCX^XXgrÈOÍO */
+		if ((epc != 0xD5) && (epc != 0xD6)) {
+			continue;
+		}
+
+		/* QoCgÚÈ~Éeojªñ³êÄ¢é */
+		count = (pdc - 1) / sizeof(T_ECN_EOJ);
+
+		/* m[hàÌ@íIuWFNgðõ */
+		for (k = 0; k < enodcb->eobjcnt; k++) {
+			p_eobj = enodcb->eobjs[k];
+
+			/* CX^XXgðmF */
+			match = false;
+			for (i = 0, j = 1; i < count; i++, j += sizeof(T_ECN_EOJ)) {
+				if (p_eobj->eojx1 != p_edt[j])
+					continue;
+				if (p_eobj->eojx2 != p_edt[j + 1])
+					continue;
+				if (p_eobj->eojx3 != p_edt[j + 2])
+					continue;
+
+				match = true;
+				break;
+			}
+
+			if (!match)
+				return false;
+		}
+
+		/* ·×ÄµÁÄ¢½çKiCX^XXgÌûª½­Äà¢¢±ÆÆ·éj */
+		return true;
+	}
+
+	return false;
+}
+
+/*
+ *  IPAhX©ç[gECHONETm[hÖÏ·
+ */
+ECN_ENOD_ID udp_get_id(T_EDATA *edata, const T_IN4_ADDR ipaddr, uint16_t portno)
+{
+	T_ENOD_ADDR	*ea;
+	int			i;
+
+	if (uip_ipaddr_cmp(ipaddr, localhost))
+		return ENOD_LOCAL_ID;
+	if (uip_ipaddr_cmp(ipaddr, multicast))
+		return ENOD_MULTICAST_ID;
+
+	/* IPAhXÌ¯¶àÌðõ */
+	for (i = 0, ea = enodadrb_table; i < tnum_enodadr; i++, ea++) {
+		if (!ea->inuse)
+			continue;
+		if (!uip_ipaddr_cmp(ea->ipaddr, ipaddr))
+			continue;
+
+		ECN_CAP_PUT "udp_get_id(): ip-found remote(%d) = %s",
+			i - ENOD_REMOTE_ID, ip2str(NULL, ipaddr) ECN_CAP_END;
+		return (ECN_ENOD_ID)i;
+	}
+
+	/* Î·é[gm[hðõ */
+	for (i = ENOD_REMOTE_ID, ea = &enodadrb_table[ENOD_REMOTE_ID]; i < tnum_enodadr; i++, ea++) {
+		if (!ea->inuse)
+			continue;
+		if ((i - ENOD_REMOTE_ID + 1) >= tnum_enodid)
+			break;
+		if (uip_ipaddr_cmp(ea->ipaddr, zeroaddr))
+			continue;
+		if (!ECHONET_NODE_MATCH(&eobjcb_table[i - ENOD_REMOTE_ID + 1], edata, ipaddr, portno))
+			continue;
+
+		/* Î·é[gm[hª êÎIPAhXðÝè */
+		uip_ipaddr_copy(ea->ipaddr, ipaddr);
+
+		ECN_CAP_PUT "udp_get_id(): enod-found remote(%d) = %s",
+			i - ENOD_REMOTE_ID, ip2str(NULL, ipaddr) ECN_CAP_END;
+		return (ECN_ENOD_ID)i;
+	}
+
+	/* ó«ÌæðTµÄ©®o^ */
+	for (i = ENOD_REMOTE_ID, ea = &enodadrb_table[ENOD_REMOTE_ID]; i < tnum_enodadr; i++, ea++) {
+		if (ea->inuse)
+			continue;
+
+		ea->inuse = true;
+		uip_ipaddr_copy(ea->ipaddr, ipaddr);
+
+		ECN_CAP_PUT "udp_get_id(): empty-found remote(%d) = %s",
+			i - ENOD_REMOTE_ID, ip2str(NULL, ipaddr) ECN_CAP_END;
+		return (ECN_ENOD_ID)i;
+	}
+
+	return ENOD_NOT_MATCH_ID;
+}
+
+/*
+ *  [gECHONETm[h©çIPAhXÖÏ·
+ */
+int udp_get_ip(T_IPV4EP *fp_ipep, ECN_ENOD_ID fa_enodid)
+{
+	T_ENOD_ADDR *ea;
+
+	if (!fp_ipep)
+		return -1;	/* NG */
+
+	fp_ipep->portno = 3610;
+
+	if (fa_enodid == ENOD_MULTICAST_ID) {
+		/* targetªENOD_MULTICAST_IDÌêA}`LXgðs¤ */
+		uip_ipaddr_copy(fp_ipep->ipaddr, multicast);
+		return 0;	/* ok */
+	}
+
+	if (fa_enodid < ENOD_REMOTE_ID) {
+		/* targetª¢è`ELOCALEAPIÌêA[Jzðs¤ */
+		uip_ipaddr_copy(fp_ipep->ipaddr, localhost);
+		return 0;	/* ok */
+	}
+
+	if (fa_enodid >= tnum_enodadr)
+		return -1;	/* NG */
+
+	ea = &enodadrb_table[fa_enodid];
+	if (!ea->inuse)
+		return -1;	/* NG */
+
+	if (uip_ipaddr_cmp(ea->ipaddr, zeroaddr))
+		return -1;	/* NG */
+
+	uip_ipaddr_copy(fp_ipep->ipaddr, ea->ipaddr);
+	return 0;	/* ok */
+}
+
+ER ecn_udp_get_ipaddr(ID sender, int requestid, ECN_ENOD_ID enodid, ECN_FBS_ID *pk_req)
+{
+	ER a_ret;
+	ECN_FBS_ID req;
+
+	a_ret = _ecn_udp_cre_req_fbs(sender, ECN_UDP_MSG_GET_IPADDR_REQ, &req);
+	if (a_ret != E_OK) {
+		return a_ret;
+	}
+
+	a_ret = _ecn_fbs_add_data_ex(req, &requestid, sizeof(((ecn_udp_msg_get_ipaddr_res_t *)0)->requestid));
+	if (a_ret != E_OK) {
+		_ecn_fbs_del(req);
+		ECN_DBG_PUT "ecn_udp_get_ipaddr() : _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		return a_ret;
+	}
+
+	a_ret = _ecn_fbs_add_data_ex(req, &enodid, sizeof(((ecn_udp_msg_get_ipaddr_res_t *)0)->enodid));
+	if (a_ret != E_OK) {
+		_ecn_fbs_del(req);
+		ECN_DBG_PUT "ecn_udp_get_ipaddr() : _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		return a_ret;
+	}
+
+	a_ret = _ecn_fbs_add_data_ex(req, &enodadrb_table[enodid], sizeof(((ecn_udp_msg_get_ipaddr_res_t *)0)->enodadrb));
+	if (a_ret != E_OK) {
+		_ecn_fbs_del(req);
+		ECN_DBG_PUT "ecn_udp_get_ipaddr() : _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;
+		return a_ret;
+	}
+
+	*pk_req = req;
+
+	return E_OK;
+}
+
+char *ipaddr2str(char *buf, int bubsz, uint8_t *ipaddr)
+{
+	return ip2str(buf, *(T_IN4_ADDR *)ipaddr);
+}
+
+#endif
Index: uKadecot/trunk/ecnl_ssp/echonet_uip_task.h
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_uip_task.h	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/echonet_uip_task.h	(revision 101)
@@ -0,0 +1,103 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		ECHONET Lite ^XN
+ */
+
+#ifndef TOPPERS_ECHONET_UDP_TASK_H
+#define TOPPERS_ECHONET_UDP_TASK_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <kernel.h>
+#include "echonet.h"
+
+/*
+ *  ECHONET Lite êÄ¯ñAhX
+ */
+#ifdef SIL_ENDIAN_LITTLE
+#define ECHONET_MULTICAST_ADDR {0,224,0,23}
+#else
+#define ECHONET_MULTICAST_ADDR {224,0,23,0}
+#endif
+
+/*
+ *  ECHONET Lite ^XNÖAÌèÌftHglÌè`
+ */
+#ifndef ECHONET_UDP_TASK_PRIORITY
+#define ECHONET_UDP_TASK_PRIORITY	5		/* úDæx */
+#endif /* ECHONET_UDP_TASK_PRIORITY */
+
+#ifndef ECHONET_UDP_TASK_STACK_SIZE
+#define ECHONET_UDP_TASK_STACK_SIZE	1024	/* X^bNÌæÌTCY */
+#endif /* ECHONET_UDP_TASK_STACK_SIZE */
+
+#ifndef NUM_ECHONET_UDP_MAILBOX
+#define NUM_ECHONET_UDP_MAILBOX	10
+#endif /* NUM_ECHONET_UDP_MAILBOX */
+
+/*
+ *  ECHONET Lite ^XNÌ{Ì
+ */
+void echonet_udp_task(intptr_t exinf);
+
+/*  mubLOR[ÌR[obNÖ  */
+ER callback_nblk_udp(struct uip_udp_conn *uip_udp_conn, int fncd, void *p_parblk);
+
+/*  ECHONET Lite ^XNN®püúnh[ */
+void echonet_udp_cychdr(intptr_t exinf);
+
+/*
+ *  [gECHONETm[hÌKmF
+ */
+bool_t is_match(const EOBJCB *eobjcb, T_EDATA *edata, const void *_ipaddr, uint16_t portno);
+
+/* IPAhXð¶ñÉÏ· */
+char *ipaddr2str(char *buf, int bubsz, uint8_t *ipaddr);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_ECHONET_UDP_TASK_H */
Index: uKadecot/trunk/ecnl_ssp/fbs_string.c
===================================================================
--- uKadecot/trunk/ecnl_ssp/fbs_string.c	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/fbs_string.c	(revision 101)
@@ -0,0 +1,215 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2011 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#include <stdint.h>
+#include <limits.h>
+#include <stdarg.h>
+#include "fbs_string.h"
+
+/*
+ *  lð¶ñÉÏ·
+ */
+#define CONVERT_BUFLEN	((sizeof(uintptr_t) * CHAR_BIT + 2) / 3)
+										/* uintptr_t^ÌlÌÅå¶ */
+static ER
+convert(ECN_FBS_ID fbs, ECN_FBS_SSIZE_T *pos, uintptr_t val, uint_t radix, const char *radchar,
+			uint_t width, bool_t minus, bool_t padzero)
+{
+	char	buf[CONVERT_BUFLEN];
+	uint_t	i, j;
+	ER ret;
+
+	i = 0U;
+	do {
+		buf[i++] = radchar[val % radix];
+		val /= radix;
+	} while (i < CONVERT_BUFLEN && val != 0);
+
+	if (minus && width > 0) {
+		width -= 1;
+	}
+	if (minus && padzero) {
+		ret = _ecn_fbs_poke(fbs, *pos, '-');
+		if(ret != E_OK)
+			return ret;
+		(*pos)++;
+	}
+	for (j = i; j < width; j++) {
+		ret = _ecn_fbs_poke(fbs, *pos, padzero ? '0' : ' ');
+		if(ret != E_OK)
+			return ret;
+		(*pos)++;
+	}
+	if (minus && !padzero) {
+		ret = _ecn_fbs_poke(fbs, *pos, '-');
+		if(ret != E_OK)
+			return ret;
+		(*pos)++;
+	}
+	while (i > 0U) {
+		ret = _ecn_fbs_poke(fbs, *pos, buf[--i]);
+		if(ret != E_OK)
+			return ret;
+		(*pos)++;
+	}
+	return E_OK;
+}
+
+/*
+ *  ¶ñ®`oÍ
+ */
+static const char raddec[] = "0123456789";
+static const char radhex[] = "0123456789abcdef";
+static const char radHEX[] = "0123456789ABCDEF";
+
+ECN_FBS_SSIZE_T
+fbs_printf(ECN_FBS_ID fbs, ECN_FBS_SSIZE_T *pos, const char *format, ...)
+{
+	char		c;
+	bool_t		lflag;
+	uint_t		width;
+	bool_t		padzero;
+	intptr_t	val;
+	const char	*str, *head;
+	va_list	ap;
+	ER ret;
+
+	va_start(ap, format);
+
+	while ((c = *format++) != '\0') {
+		if (c != '%') {
+			ret = _ecn_fbs_poke(fbs, *pos, c);
+			if (ret != E_OK)
+				return ret;
+			(*pos)++;
+			continue;
+		}
+
+		lflag = false;
+		width = 0U;
+		padzero = false;
+		if ((c = *format++) == '0') {
+			padzero = true;
+			c = *format++;
+		}
+		while ('0' <= c && c <= '9') {
+			width = width * 10U + c - '0';
+			c = *format++;
+		}
+		if (c == 'l') {
+			lflag = true;
+			c = *format++;
+		}
+		switch (c) {
+		case 'd':
+			val = lflag ? (intptr_t) va_arg(ap, long_t)
+						: (intptr_t) va_arg(ap, int_t);
+			if (val >= 0) {
+				ret = convert(fbs, pos, (uintptr_t) val, 10U, raddec,
+										width, false, padzero);
+				if (ret != E_OK)
+					return ret;
+			}
+			else {
+				ret = convert(fbs, pos, (uintptr_t)(-val), 10U, raddec,
+										width, true, padzero);
+				if (ret != E_OK)
+					return ret;
+			}
+			break;
+		case 'u':
+			val = lflag ? (intptr_t) va_arg(ap, ulong_t)
+						: (intptr_t) va_arg(ap, uint_t);
+			ret = convert(fbs, pos, (uintptr_t) val, 10U, raddec, width, false, padzero);
+			if (ret != E_OK)
+				return ret;
+			break;
+		case 'x':
+		case 'p':
+			val = lflag ? (intptr_t) va_arg(ap, ulong_t)
+						: (intptr_t) va_arg(ap, uint_t);
+			ret = convert(fbs, pos, (uintptr_t) val, 16U, radhex, width, false, padzero);
+			if (ret != E_OK)
+				return ret;
+			break;
+		case 'X':
+			val = (intptr_t)va_arg(ap, void *);
+			ret = convert(fbs, pos, (uintptr_t) val, 16U, radHEX, width, false, padzero);
+			if (ret != E_OK)
+				return ret;
+			break;
+		case 'c':
+			ret = _ecn_fbs_poke(fbs, *pos, (char)(intptr_t)va_arg(ap, int));
+			if (ret != E_OK)
+				return ret;
+			(*pos)++;
+			break;
+		case 's':
+			str = head = (const char *)va_arg(ap, const char *);
+			while ((c = *str++) != '\0') {
+				ret = _ecn_fbs_poke(fbs, *pos, c);
+				if (ret != E_OK)
+					return ret;
+				(*pos)++;
+			}
+			break;
+		case '%':
+			ret = _ecn_fbs_poke(fbs, *pos, '%');
+			if (ret != E_OK)
+				return ret;
+			(*pos)++;
+			break;
+		case '\0':
+			format--;
+			break;
+		default:
+			break;
+		}
+	}
+	va_end(ap);
+
+	return E_OK;
+}
Index: uKadecot/trunk/ecnl_ssp/fbs_string.h
===================================================================
--- uKadecot/trunk/ecnl_ssp/fbs_string.h	(revision 101)
+++ uKadecot/trunk/ecnl_ssp/fbs_string.h	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#ifndef FBS_STRING_H
+#define FBS_STRING_H
+
+#include "echonet_fbs.h"
+
+ECN_FBS_SSIZE_T fbs_printf(ECN_FBS_ID buf, ECN_FBS_SSIZE_T *pos, const char *format, ...);
+
+#endif // FBS_STRING_H
Index: uKadecot/trunk/kadecot/jsonsl.c
===================================================================
--- uKadecot/trunk/kadecot/jsonsl.c	(revision 101)
+++ uKadecot/trunk/kadecot/jsonsl.c	(revision 101)
@@ -0,0 +1,1268 @@
+/* Copyright (C) 2012-2015 Mark Nunberg.
+ *
+ * See included LICENSE file for license details.
+ */
+/* copy from LICENSE file
+Copyright (c) 2012-2015 M. Nunberg, mnunberg@haskalah.org
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+#include "jsonsl.h"
+//#include <assert.h>
+#include <limits.h>
+#include <ctype.h>
+
+#ifdef JSONSL_USE_METRICS
+#define XMETRICS \
+    X(STRINGY_INSIGNIFICANT) \
+    X(STRINGY_SLOWPATH) \
+    X(ALLOWED_WHITESPACE) \
+    X(QUOTE_FASTPATH) \
+    X(SPECIAL_FASTPATH) \
+    X(SPECIAL_WSPOP) \
+    X(SPECIAL_SLOWPATH) \
+    X(GENERIC) \
+    X(STRUCTURAL_TOKEN) \
+    X(SPECIAL_SWITCHFIRST) \
+    X(STRINGY_CATCH) \
+    X(ESCAPES) \
+    X(TOTAL) \
+
+struct jsonsl_metrics_st {
+#define X(m) \
+    unsigned long metric_##m;
+    XMETRICS
+#undef X
+};
+
+static struct jsonsl_metrics_st GlobalMetrics = { 0 };
+static unsigned long GenericCounter[0x100] = { 0 };
+static unsigned long StringyCatchCounter[0x100] = { 0 };
+
+#define INCR_METRIC(m) \
+    GlobalMetrics.metric_##m++;
+
+#define INCR_GENERIC(c) \
+        INCR_METRIC(GENERIC); \
+        GenericCounter[c]++; \
+
+#define INCR_STRINGY_CATCH(c) \
+    INCR_METRIC(STRINGY_CATCH); \
+    StringyCatchCounter[c]++;
+
+JSONSL_API
+void jsonsl_dump_global_metrics(void)
+{
+    int ii;
+    printf("JSONSL Metrics:\n");
+#define X(m) \
+    printf("\t%-30s %20lu (%0.2f%%)\n", #m, GlobalMetrics.metric_##m, \
+           (float)((float)(GlobalMetrics.metric_##m/(float)GlobalMetrics.metric_TOTAL)) * 100);
+    XMETRICS
+#undef X
+    printf("Generic Characters:\n");
+    for (ii = 0; ii < 0xff; ii++) {
+        if (GenericCounter[ii]) {
+            printf("\t[ %c ] %lu\n", ii, GenericCounter[ii]);
+        }
+    }
+    printf("Weird string loop\n");
+    for (ii = 0; ii < 0xff; ii++) {
+        if (StringyCatchCounter[ii]) {
+            printf("\t[ %c ] %lu\n", ii, StringyCatchCounter[ii]);
+        }
+    }
+}
+
+#else
+#define INCR_METRIC(m)
+#define INCR_GENERIC(c)
+#define INCR_STRINGY_CATCH(c)
+JSONSL_API
+void jsonsl_dump_global_metrics(void) { }
+#endif /* JSONSL_USE_METRICS */
+
+#define CASE_DIGITS \
+case '1': \
+case '2': \
+case '3': \
+case '4': \
+case '5': \
+case '6': \
+case '7': \
+case '8': \
+case '9': \
+case '0':
+
+static unsigned extract_special(unsigned);
+static int is_special_end(unsigned);
+static int is_allowed_whitespace(unsigned);
+static int is_allowed_escape(unsigned);
+static char get_escape_equiv(unsigned);
+
+JSONSL_API
+jsonsl_t jsonsl_new(struct jsonsl_st *jsn, int nlevels)
+{
+    jsn->levels_max = nlevels;
+    jsn->max_callback_level = -1;
+    jsonsl_reset(jsn);
+    return jsn;
+}
+
+JSONSL_API
+void jsonsl_reset(jsonsl_t jsn)
+{
+    unsigned int ii;
+    jsn->tok_last = 0;
+    jsn->can_insert = 1;
+    jsn->pos = 0;
+    jsn->level = 0;
+    jsn->stopfl = 0;
+    jsn->in_escape = 0;
+    jsn->expecting = 0;
+
+    memset(jsn->stack, 0, (jsn->levels_max * sizeof (struct jsonsl_state_st)));
+
+    for (ii = 0; ii < jsn->levels_max; ii++) {
+        jsn->stack[ii].level = ii;
+    }
+}
+
+JSONSL_API
+void jsonsl_destroy(jsonsl_t jsn)
+{
+}
+
+JSONSL_API
+void
+jsonsl_feed(jsonsl_t jsn, const jsonsl_char_t *bytes, size_t nbytes)
+{
+
+#define INVOKE_ERROR(eb) \
+    if (jsn->error_callback(jsn, JSONSL_ERROR_##eb, state, (char*)c)) { \
+        goto GT_AGAIN; \
+    } \
+    return;
+
+#define STACK_PUSH \
+    if (jsn->level >= (levels_max-1)) { \
+        jsn->error_callback(jsn, JSONSL_ERROR_LEVELS_EXCEEDED, state, (char*)c); \
+        return; \
+    } \
+    state = jsn->stack + (++jsn->level); \
+    state->ignore_callback = jsn->stack[jsn->level-1].ignore_callback; \
+    state->pos_begin = jsn->pos;
+
+#define STACK_POP_NOPOS \
+    state->pos_cur = jsn->pos; \
+    state = jsn->stack + (--jsn->level);
+
+
+#define STACK_POP \
+    STACK_POP_NOPOS; \
+    state->pos_cur = jsn->pos;
+
+#define CALLBACK_AND_POP_NOPOS(T) \
+        state->pos_cur = jsn->pos; \
+        DO_CALLBACK(T, POP); \
+        state->nescapes = 0; \
+        state = jsn->stack + (--jsn->level);
+
+#define CALLBACK_AND_POP(T) \
+        CALLBACK_AND_POP_NOPOS(T); \
+        state->pos_cur = jsn->pos;
+
+#define SPECIAL_POP \
+    CALLBACK_AND_POP(SPECIAL); \
+    jsn->expecting = 0; \
+    jsn->tok_last = 0; \
+
+#define CUR_CHAR (*(jsonsl_uchar_t*)c)
+
+#define DO_CALLBACK(T, action) \
+    if (jsn->call_##T && \
+            jsn->max_callback_level > state->level && \
+            state->ignore_callback == 0) { \
+        \
+        if (jsn->action_callback_##action) { \
+            jsn->action_callback_##action(jsn, JSONSL_ACTION_##action, state, (jsonsl_char_t*)c); \
+        } else if (jsn->action_callback) { \
+            jsn->action_callback(jsn, JSONSL_ACTION_##action, state, (jsonsl_char_t*)c); \
+        } \
+        if (jsn->stopfl) { return; } \
+    }
+
+    /**
+     * Verifies that we are able to insert the (non-string) item into a hash.
+     */
+#define ENSURE_HVAL \
+    if (state->nelem % 2 == 0 && state->type == JSONSL_T_OBJECT) { \
+        INVOKE_ERROR(HKEY_EXPECTED); \
+    }
+
+#define VERIFY_SPECIAL(lit) \
+        if (CUR_CHAR != (lit)[jsn->pos - state->pos_begin]) { \
+            INVOKE_ERROR(SPECIAL_EXPECTED); \
+        }
+
+    const jsonsl_uchar_t *c = (jsonsl_uchar_t*)bytes;
+    size_t levels_max = jsn->levels_max;
+    struct jsonsl_state_st *state = jsn->stack + jsn->level;
+    static int chrt_string_nopass[0x100] = { JSONSL_CHARTABLE_string_nopass };
+    jsn->base = bytes;
+
+    for (; nbytes; nbytes--, jsn->pos++, c++) {
+        register unsigned state_type;
+        INCR_METRIC(TOTAL);
+        /* Special escape handling for some stuff */
+        if (jsn->in_escape) {
+            jsn->in_escape = 0;
+            if (!is_allowed_escape(CUR_CHAR)) {
+                INVOKE_ERROR(ESCAPE_INVALID);
+            } else if (CUR_CHAR == 'u') {
+                DO_CALLBACK(UESCAPE, UESCAPE);
+                if (jsn->return_UESCAPE) {
+                    return;
+                }
+            }
+            goto GT_NEXT;
+        }
+        GT_AGAIN:
+        /**
+         * Several fast-tracks for common cases:
+         */
+        state_type = state->type;
+        if (state_type & JSONSL_Tf_STRINGY) {
+            /* check if our character cannot ever change our current string state
+             * or throw an error
+             */
+            if (
+#ifdef JSONSL_USE_WCHAR
+                    CUR_CHAR >= 0x100 ||
+#endif /* JSONSL_USE_WCHAR */
+                    (!chrt_string_nopass[CUR_CHAR & 0xff])) {
+                INCR_METRIC(STRINGY_INSIGNIFICANT);
+                goto GT_NEXT;
+            } else if (CUR_CHAR == '"') {
+                goto GT_QUOTE;
+            } else if (CUR_CHAR == '\\') {
+                goto GT_ESCAPE;
+            } else {
+                INVOKE_ERROR(WEIRD_WHITESPACE);
+            }
+            INCR_METRIC(STRINGY_SLOWPATH);
+
+        } else if (state_type == JSONSL_T_SPECIAL) {
+            if (state->special_flags & JSONSL_SPECIALf_NUMERIC) {
+                switch (CUR_CHAR) {
+                CASE_DIGITS
+                    state->nelem = (state->nelem*10) + (CUR_CHAR-0x30);
+                    goto GT_NEXT;
+
+                case 'e':
+                case 'E':
+                case '-':
+                case '+':
+                    state->special_flags |= JSONSL_SPECIALf_EXPONENT;
+                    goto GT_NEXT;
+                case '.':
+                    state->special_flags |= JSONSL_SPECIALf_FLOAT;
+                    goto GT_NEXT;
+                default:
+                    if (is_special_end(CUR_CHAR)) {
+                        goto GT_SPECIAL_POP;
+                    }
+                    INVOKE_ERROR(INVALID_NUMBER);
+                    break;
+                }
+            }
+            /* else if (!NUMERIC) */
+            if (!is_special_end(CUR_CHAR)) {
+                /* Verify TRUE, FALSE, NULL */
+                if (state->special_flags == JSONSL_SPECIALf_TRUE) {
+                    VERIFY_SPECIAL("true");
+                } else if (state->special_flags == JSONSL_SPECIALf_FALSE) {
+                    VERIFY_SPECIAL("false");
+                } else if (state->special_flags == JSONSL_SPECIALf_NULL) {
+                    VERIFY_SPECIAL("null");
+                }
+                INCR_METRIC(SPECIAL_FASTPATH);
+                goto GT_NEXT;
+            }
+
+            GT_SPECIAL_POP:
+            SPECIAL_POP;
+            jsn->expecting = ',';
+            if (is_allowed_whitespace(CUR_CHAR)) {
+                goto GT_NEXT;
+            }
+            /**
+             * This works because we have a non-whitespace token
+             * which is not a special token. If this is a structural
+             * character then it will be gracefully handled by the
+             * switch statement. Otherwise it will default to the 'special'
+             * state again,
+             */
+            goto GT_STRUCTURAL_TOKEN;
+        } else if (is_allowed_whitespace(CUR_CHAR)) {
+            INCR_METRIC(ALLOWED_WHITESPACE);
+            /* So we're not special. Harmless insignificant whitespace
+             * passthrough
+             */
+            goto GT_NEXT;
+        } else if (extract_special(CUR_CHAR)) {
+            /* not a string, whitespace, or structural token. must be special */
+            goto GT_SPECIAL_BEGIN;
+        }
+
+        INCR_GENERIC(CUR_CHAR);
+
+        if (CUR_CHAR == '"') {
+            GT_QUOTE:
+            jsn->can_insert = 0;
+            switch (state_type) {
+
+            /* the end of a string or hash key */
+            case JSONSL_T_STRING:
+                CALLBACK_AND_POP(STRING);
+                goto GT_NEXT;
+            case JSONSL_T_HKEY:
+                CALLBACK_AND_POP(HKEY);
+                goto GT_NEXT;
+
+            case JSONSL_T_OBJECT:
+                state->nelem++;
+                if ( (state->nelem-1) % 2 ) {
+                    /* Odd, this must be a hash value */
+                    if (jsn->tok_last != ':') {
+                        INVOKE_ERROR(MISSING_TOKEN);
+                    }
+                    jsn->expecting = ','; /* Can't figure out what to expect next */
+                    jsn->tok_last = 0;
+
+                    STACK_PUSH;
+                    state->type = JSONSL_T_STRING;
+                    DO_CALLBACK(STRING, PUSH);
+
+                } else {
+                    /* hash key */
+                    if (jsn->expecting != '"') {
+                        INVOKE_ERROR(STRAY_TOKEN);
+                    }
+                    jsn->tok_last = 0;
+                    jsn->expecting = ':';
+
+                    STACK_PUSH;
+                    state->type = JSONSL_T_HKEY;
+                    DO_CALLBACK(HKEY, PUSH);
+                }
+                goto GT_NEXT;
+
+            case JSONSL_T_LIST:
+                state->nelem++;
+                STACK_PUSH;
+                state->type = JSONSL_T_STRING;
+                jsn->expecting = ',';
+                jsn->tok_last = 0;
+                DO_CALLBACK(STRING, PUSH);
+                goto GT_NEXT;
+
+            case JSONSL_T_SPECIAL:
+                INVOKE_ERROR(STRAY_TOKEN);
+                break;
+
+            default:
+                INVOKE_ERROR(STRING_OUTSIDE_CONTAINER);
+                break;
+            } /* switch(state->type) */
+        } else if (CUR_CHAR == '\\') {
+            GT_ESCAPE:
+            INCR_METRIC(ESCAPES);
+        /* Escape */
+            if ( (state->type & JSONSL_Tf_STRINGY) == 0 ) {
+                INVOKE_ERROR(ESCAPE_OUTSIDE_STRING);
+            }
+            state->nescapes++;
+            jsn->in_escape = 1;
+            goto GT_NEXT;
+        } /* " or \ */
+
+        GT_STRUCTURAL_TOKEN:
+        switch (CUR_CHAR) {
+        case ':':
+            INCR_METRIC(STRUCTURAL_TOKEN);
+            if (jsn->expecting != CUR_CHAR) {
+                INVOKE_ERROR(STRAY_TOKEN);
+            }
+            jsn->tok_last = ':';
+            jsn->can_insert = 1;
+            jsn->expecting = '"';
+            goto GT_NEXT;
+
+        case ',':
+            INCR_METRIC(STRUCTURAL_TOKEN);
+            /**
+             * The comma is one of the more generic tokens.
+             * In the context of an OBJECT, the can_insert flag
+             * should never be set, and no other action is
+             * necessary.
+             */
+            if (jsn->expecting != CUR_CHAR) {
+                /* make this branch execute only when we haven't manually
+                 * just placed the ',' in the expecting register.
+                 */
+                INVOKE_ERROR(STRAY_TOKEN);
+            }
+
+            if (state->type == JSONSL_T_OBJECT) {
+                /* end of hash value, expect a string as a hash key */
+                jsn->expecting = '"';
+            } else {
+                jsn->can_insert = 1;
+            }
+
+            jsn->tok_last = ',';
+            jsn->expecting = '"';
+            goto GT_NEXT;
+
+            /* new list or object */
+            /* hashes are more common */
+        case '{':
+        case '[':
+            INCR_METRIC(STRUCTURAL_TOKEN);
+            if (!jsn->can_insert) {
+                INVOKE_ERROR(CANT_INSERT);
+            }
+
+            ENSURE_HVAL;
+            state->nelem++;
+
+            STACK_PUSH;
+            /* because the constants match the opening delimiters, we can do this: */
+            state->type = CUR_CHAR;
+            state->nelem = 0;
+            jsn->can_insert = 1;
+            if (CUR_CHAR == '{') {
+                /* If we're a hash, we expect a key first, which is quouted */
+                jsn->expecting = '"';
+            }
+            if (CUR_CHAR == JSONSL_T_OBJECT) {
+                DO_CALLBACK(OBJECT, PUSH);
+            } else {
+                DO_CALLBACK(LIST, PUSH);
+            }
+            jsn->tok_last = 0;
+            goto GT_NEXT;
+
+            /* closing of list or object */
+        case '}':
+        case ']':
+            INCR_METRIC(STRUCTURAL_TOKEN);
+            if (jsn->tok_last == ',' && jsn->options.allow_trailing_comma == 0) {
+                INVOKE_ERROR(TRAILING_COMMA);
+            }
+
+            jsn->can_insert = 0;
+            jsn->level--;
+            jsn->expecting = ',';
+            jsn->tok_last = 0;
+            if (CUR_CHAR == ']') {
+                if (state->type != '[') {
+                    INVOKE_ERROR(BRACKET_MISMATCH);
+                }
+                DO_CALLBACK(LIST, POP);
+            } else {
+                if (state->type != '{') {
+                    INVOKE_ERROR(BRACKET_MISMATCH);
+                }
+                DO_CALLBACK(OBJECT, POP);
+            }
+            state = jsn->stack + jsn->level;
+            state->pos_cur = jsn->pos;
+            goto GT_NEXT;
+
+        default:
+            GT_SPECIAL_BEGIN:
+            /**
+             * Not a string, not a structural token, and not benign whitespace.
+             * Technically we should iterate over the character always, but since
+             * we are not doing full numerical/value decoding anyway (but only hinting),
+             * we only check upon entry.
+             */
+            if (state->type != JSONSL_T_SPECIAL) {
+                int special_flags = extract_special(CUR_CHAR);
+                if (!special_flags) {
+                    /**
+                     * Try to do some heuristics here anyway to figure out what kind of
+                     * error this is. The 'special' case is a fallback scenario anyway.
+                     */
+                    if (CUR_CHAR == '\0') {
+                        INVOKE_ERROR(FOUND_NULL_BYTE);
+                    } else if (CUR_CHAR < 0x20) {
+                        INVOKE_ERROR(WEIRD_WHITESPACE);
+                    } else {
+                        INVOKE_ERROR(SPECIAL_EXPECTED);
+                    }
+                }
+                ENSURE_HVAL;
+                state->nelem++;
+                if (!jsn->can_insert) {
+                    INVOKE_ERROR(CANT_INSERT);
+                }
+                STACK_PUSH;
+                state->type = JSONSL_T_SPECIAL;
+                state->special_flags = special_flags;
+                if (special_flags == JSONSL_SPECIALf_UNSIGNED) {
+                    state->nelem = CUR_CHAR - 0x30;
+                } else {
+                    state->nelem = 0;
+                }
+                DO_CALLBACK(SPECIAL, PUSH);
+            }
+            goto GT_NEXT;
+        }
+
+        GT_NEXT:
+        continue;
+    }
+}
+
+JSONSL_API
+const char* jsonsl_strerror(jsonsl_error_t err)
+{
+    if (err == JSONSL_ERROR_SUCCESS) {
+        return "SUCCESS";
+    }
+#define X(t) \
+    if (err == JSONSL_ERROR_##t) \
+        return #t;
+    JSONSL_XERR;
+#undef X
+    return "<UNKNOWN_ERROR>";
+}
+
+JSONSL_API
+const char *jsonsl_strtype(jsonsl_type_t type)
+{
+#define X(o,c) \
+    if (type == JSONSL_T_##o) \
+        return #o;
+    JSONSL_XTYPE
+#undef X
+    return "UNKNOWN TYPE";
+
+}
+
+/*
+ *
+ * JPR/JSONPointer functions
+ *
+ *
+ */
+#ifndef JSONSL_NO_JPR
+static
+jsonsl_jpr_type_t
+populate_component(char *in,
+                   struct jsonsl_jpr_component_st *component,
+                   char **next,
+                   jsonsl_error_t *errp)
+{
+    unsigned long pctval;
+    char *c = NULL, *outp = NULL, *end = NULL;
+    size_t input_len;
+    jsonsl_jpr_type_t ret = JSONSL_PATH_NONE;
+
+    if (*next == NULL || *(*next) == '\0') {
+        return JSONSL_PATH_NONE;
+    }
+
+    /* Replace the next / with a NULL */
+    *next = strstr(in, "/");
+    if (*next != NULL) {
+        *(*next) = '\0'; /* drop the forward slash */
+        input_len = *next - in;
+        end = *next;
+        *next += 1; /* next character after the '/' */
+    } else {
+        input_len = strlen(in);
+        end = in + input_len + 1;
+    }
+
+    component->pstr = in;
+
+    /* Check for special components of interest */
+    if (*in == JSONSL_PATH_WILDCARD_CHAR && input_len == 1) {
+        /* Lone wildcard */
+        ret = JSONSL_PATH_WILDCARD;
+        goto GT_RET;
+    } else if (isdigit(*in)) {
+        /* ASCII Numeric */
+        char *endptr;
+        component->idx = strtoul(in, &endptr, 10);
+        if (endptr && *endptr == '\0') {
+            ret = JSONSL_PATH_NUMERIC;
+            goto GT_RET;
+        }
+    }
+
+    /* Default, it's a string */
+    ret = JSONSL_PATH_STRING;
+    for (c = outp = in; c < end; c++, outp++) {
+        char origc;
+        if (*c != '%') {
+            goto GT_ASSIGN;
+        }
+        /*
+         * c = { [+0] = '%', [+1] = 'b', [+2] = 'e', [+3] = '\0' }
+         */
+
+        /* Need %XX */
+        if (c+2 >= end) {
+            *errp = JSONSL_ERROR_PERCENT_BADHEX;
+            return JSONSL_PATH_INVALID;
+        }
+        if (! (isxdigit(*(c+1)) && isxdigit(*(c+2))) ) {
+            *errp = JSONSL_ERROR_PERCENT_BADHEX;
+            return JSONSL_PATH_INVALID;
+        }
+
+        /* Temporarily null-terminate the characters */
+        origc = *(c+3);
+        *(c+3) = '\0';
+        pctval = strtoul(c+1, NULL, 16);
+        *(c+3) = origc;
+
+        *outp = (char) pctval;
+        c += 2;
+        continue;
+
+        GT_ASSIGN:
+        *outp = *c;
+    }
+    /* Null-terminate the string */
+    for (; outp < c; outp++) {
+        *outp = '\0';
+    }
+
+    GT_RET:
+    component->ptype = ret;
+    if (ret != JSONSL_PATH_WILDCARD) {
+        component->len = strlen(component->pstr);
+    }
+    return ret;
+}
+
+JSONSL_API
+jsonsl_jpr_t
+jsonsl_jpr_new(const char *path, jsonsl_error_t *errp)
+{
+    char *my_copy = NULL;
+    int count, curidx, len;
+    struct jsonsl_jpr_st *ret = NULL;
+    struct jsonsl_jpr_component_st *components = NULL;
+    size_t origlen;
+    jsonsl_error_t errstacked;
+
+#define JPR_BAIL(err) *errp = err; goto GT_ERROR;
+
+    if (errp == NULL) {
+        errp = &errstacked;
+    }
+
+    if (path == NULL || *path != '/') {
+        JPR_BAIL(JSONSL_ERROR_JPR_NOROOT);
+        return NULL;
+    }
+
+    count = 1;
+    path++;
+    {
+        const char *c = path;
+        for (; *c; c++) {
+            if (*c == '/') {
+                count++;
+                if (*(c+1) == '/') {
+                    JPR_BAIL(JSONSL_ERROR_JPR_DUPSLASH);
+                }
+            }
+        }
+    }
+    if(*path) {
+        count++;
+    }
+
+    components = (struct jsonsl_jpr_component_st *)
+            malloc(sizeof(*components) * count);
+    if (!components) {
+        JPR_BAIL(JSONSL_ERROR_ENOMEM);
+    }
+
+    len = strlen(path) + 1;
+    my_copy = (char *)malloc(len);
+    if (!my_copy) {
+        JPR_BAIL(JSONSL_ERROR_ENOMEM);
+    }
+
+    strcpy_s(my_copy, len, path);
+
+    components[0].ptype = JSONSL_PATH_ROOT;
+
+    if (*my_copy) {
+        char *cur = my_copy;
+        int pathret = JSONSL_PATH_STRING;
+        curidx = 1;
+        while (pathret > 0 && curidx < count) {
+            pathret = populate_component(cur, components + curidx, &cur, errp);
+            if (pathret > 0) {
+                curidx++;
+            } else {
+                break;
+            }
+        }
+
+        if (pathret == JSONSL_PATH_INVALID) {
+            JPR_BAIL(JSONSL_ERROR_JPR_BADPATH);
+        }
+    } else {
+        curidx = 1;
+    }
+
+    path--; /*revert path to leading '/' */
+    origlen = strlen(path) + 1;
+    ret = (struct jsonsl_jpr_st *)malloc(sizeof(*ret));
+    if (!ret) {
+        JPR_BAIL(JSONSL_ERROR_ENOMEM);
+    }
+    ret->orig = (char *)malloc(origlen);
+    if (!ret->orig) {
+        JPR_BAIL(JSONSL_ERROR_ENOMEM);
+    }
+    ret->components = components;
+    ret->ncomponents = curidx;
+    ret->basestr = my_copy;
+    ret->norig = origlen-1;
+    strcpy_s(ret->orig, origlen, path);
+
+    return ret;
+
+    GT_ERROR:
+    free(my_copy);
+    free(components);
+    if (ret) {
+        free(ret->orig);
+    }
+    free(ret);
+    return NULL;
+#undef JPR_BAIL
+}
+
+void jsonsl_jpr_destroy(jsonsl_jpr_t jpr)
+{
+    free(jpr->components);
+    free(jpr->basestr);
+    free(jpr->orig);
+    free(jpr);
+}
+
+JSONSL_API
+jsonsl_jpr_match_t
+jsonsl_jpr_match(jsonsl_jpr_t jpr,
+                   unsigned int parent_type,
+                   unsigned int parent_level,
+                   const char *key,
+                   size_t nkey)
+{
+    /* find our current component. This is the child level */
+    int cmpret;
+    struct jsonsl_jpr_component_st *p_component;
+    p_component = jpr->components + parent_level;
+
+    if (parent_level >= jpr->ncomponents) {
+        return JSONSL_MATCH_NOMATCH;
+    }
+
+    /* Lone query for 'root' element. Always matches */
+    if (parent_level == 0) {
+        if (jpr->ncomponents == 1) {
+            return JSONSL_MATCH_COMPLETE;
+        } else {
+            return JSONSL_MATCH_POSSIBLE;
+        }
+    }
+
+    /* Wildcard, always matches */
+    if (p_component->ptype == JSONSL_PATH_WILDCARD) {
+        if (parent_level == jpr->ncomponents-1) {
+            return JSONSL_MATCH_COMPLETE;
+        } else {
+            return JSONSL_MATCH_POSSIBLE;
+        }
+    }
+
+    /* Check numeric array index. This gets its special block so we can avoid
+     * string comparisons */
+    if (p_component->ptype == JSONSL_PATH_NUMERIC) {
+        if (parent_type == JSONSL_T_LIST) {
+            if (p_component->idx != nkey) {
+                /* Wrong index */
+                return JSONSL_MATCH_NOMATCH;
+            } else {
+                if (parent_level == jpr->ncomponents-1) {
+                    /* This is the last element of the path */
+                    return JSONSL_MATCH_COMPLETE;
+                } else {
+                    /* Intermediate element */
+                    return JSONSL_MATCH_POSSIBLE;
+                }
+            }
+        } else if (p_component->is_arridx) {
+            /* Numeric and an array index (set explicitly by user). But not
+             * a list for a parent */
+            return JSONSL_MATCH_TYPE_MISMATCH;
+        }
+    }
+
+    /* Check lengths */
+    if (p_component->len != nkey) {
+        return JSONSL_MATCH_NOMATCH;
+    }
+
+    /* Check string comparison */
+    cmpret = strncmp(p_component->pstr, key, nkey);
+    if (cmpret == 0) {
+        if (parent_level == jpr->ncomponents-1) {
+            return JSONSL_MATCH_COMPLETE;
+        } else {
+            return JSONSL_MATCH_POSSIBLE;
+        }
+    }
+
+    return JSONSL_MATCH_NOMATCH;
+}
+
+JSONSL_API
+void jsonsl_jpr_match_state_init(jsonsl_t jsn,
+                                 jsonsl_jpr_t *jprs,
+                                 size_t njprs)
+{
+    size_t ii, *firstjmp;
+    if (njprs == 0) {
+        return;
+    }
+    jsn->jprs = (jsonsl_jpr_t *)malloc(sizeof(jsonsl_jpr_t) * njprs);
+    jsn->jpr_count = njprs;
+    jsn->jpr_root = (size_t*)calloc(1, sizeof(size_t) * njprs * jsn->levels_max);
+    memcpy(jsn->jprs, jprs, sizeof(jsonsl_jpr_t) * njprs);
+    /* Set the initial jump table values */
+
+    firstjmp = jsn->jpr_root;
+    for (ii = 0; ii < njprs; ii++) {
+        firstjmp[ii] = ii+1;
+    }
+}
+
+JSONSL_API
+void jsonsl_jpr_match_state_cleanup(jsonsl_t jsn)
+{
+    if (jsn->jpr_count == 0) {
+        return;
+    }
+
+    free(jsn->jpr_root);
+    free(jsn->jprs);
+    jsn->jprs = NULL;
+    jsn->jpr_root = NULL;
+    jsn->jpr_count = 0;
+}
+
+/**
+ * This function should be called exactly once on each element...
+ * This should also be called in recursive order, since we rely
+ * on the parent having been initalized for a match.
+ *
+ * Since the parent is checked for a match as well, we maintain a 'serial' counter.
+ * Whenever we traverse an element, we expect the serial to be the same as a global
+ * integer. If they do not match, we re-initialize the context, and set the serial.
+ *
+ * This ensures a type of consistency without having a proactive reset by the
+ * main lexer itself.
+ *
+ */
+JSONSL_API
+jsonsl_jpr_t jsonsl_jpr_match_state(jsonsl_t jsn,
+                                    struct jsonsl_state_st *state,
+                                    const char *key,
+                                    size_t nkey,
+                                    jsonsl_jpr_match_t *out)
+{
+    struct jsonsl_state_st *parent_state;
+    jsonsl_jpr_t ret = NULL;
+
+    /* Jump and JPR tables for our own state and the parent state */
+    size_t *jmptable, *pjmptable;
+    size_t jmp_cur, ii, ourjmpidx;
+
+    if (!jsn->jpr_root) {
+        *out = JSONSL_MATCH_NOMATCH;
+        return NULL;
+    }
+
+    pjmptable = jsn->jpr_root + (jsn->jpr_count * (state->level-1));
+    jmptable = pjmptable + jsn->jpr_count;
+
+    /* If the parent cannot match, then invalidate it */
+    if (*pjmptable == 0) {
+        *jmptable = 0;
+        *out = JSONSL_MATCH_NOMATCH;
+        return NULL;
+    }
+
+    parent_state = jsn->stack + state->level - 1;
+
+    if (parent_state->type == JSONSL_T_LIST) {
+        nkey = (size_t) parent_state->nelem;
+    }
+
+    *jmptable = 0;
+    ourjmpidx = 0;
+    memset(jmptable, 0, sizeof(int) * jsn->jpr_count);
+
+    for (ii = 0; ii <  jsn->jpr_count; ii++) {
+        jmp_cur = pjmptable[ii];
+        if (jmp_cur) {
+            jsonsl_jpr_t jpr = jsn->jprs[jmp_cur-1];
+            *out = jsonsl_jpr_match(jpr,
+                                    parent_state->type,
+                                    parent_state->level,
+                                    key, nkey);
+            if (*out == JSONSL_MATCH_COMPLETE) {
+                ret = jpr;
+                *jmptable = 0;
+                return ret;
+            } else if (*out == JSONSL_MATCH_POSSIBLE) {
+                jmptable[ourjmpidx] = ii+1;
+                ourjmpidx++;
+            }
+        } else {
+            break;
+        }
+    }
+    if (!*jmptable) {
+        *out = JSONSL_MATCH_NOMATCH;
+    }
+    return NULL;
+}
+
+JSONSL_API
+const char *jsonsl_strmatchtype(jsonsl_jpr_match_t match)
+{
+#define X(T,v) \
+    if ( match == JSONSL_MATCH_##T ) \
+        return #T;
+    JSONSL_XMATCH
+#undef X
+    return "<UNKNOWN>";
+}
+
+#endif /* JSONSL_WITH_JPR */
+
+/**
+ * Utility function to convert escape sequences
+ */
+JSONSL_API
+size_t jsonsl_util_unescape_ex(const char *in,
+                               char *out,
+                               size_t len,
+                               const int toEscape[128],
+                               unsigned *oflags,
+                               jsonsl_error_t *err,
+                               const char **errat)
+{
+    const unsigned char *c = (const unsigned char*)in;
+    int in_escape = 0;
+    size_t origlen = len;
+    /* difference between the length of the input buffer and the output buffer */
+    size_t ndiff = 0;
+    if (oflags) {
+        *oflags = 0;
+    }
+#define UNESCAPE_BAIL(e,offset) \
+    *err = JSONSL_ERROR_##e; \
+    if (errat) { \
+        *errat = (const char*)(c+ (ptrdiff_t)(offset)); \
+    } \
+    return 0;
+
+    for (; len; len--, c++, out++) {
+        unsigned int uesc_val[2];
+        if (in_escape) {
+            /* inside a previously ignored escape. Ignore */
+            in_escape = 0;
+            goto GT_ASSIGN;
+        }
+
+        if (*c != '\\') {
+            /* Not an escape, so we don't care about this */
+            goto GT_ASSIGN;
+        }
+
+        if (len < 2) {
+            UNESCAPE_BAIL(ESCAPE_INVALID, 0);
+        }
+        if (!is_allowed_escape(c[1])) {
+            UNESCAPE_BAIL(ESCAPE_INVALID, 1)
+        }
+        if ((toEscape[(unsigned char)c[1] & 0x7f] == 0 &&
+                c[1] != '\\' && c[1] != '"')) {
+            /* if we don't want to unescape this string, just continue with
+             * the escape flag set
+             */
+            in_escape = 1;
+            goto GT_ASSIGN;
+        }
+
+        if (c[1] != 'u') {
+            /* simple skip-and-replace using pre-defined maps.
+             * TODO: should the maps actually reflect the desired
+             * replacement character in toEscape?
+             */
+            char esctmp = get_escape_equiv(c[1]);
+            if (esctmp) {
+                /* Check if there is a corresponding replacement */
+                *out = esctmp;
+            } else {
+                /* Just gobble up the 'reverse-solidus' */
+                *out = c[1];
+            }
+            len--;
+            ndiff++;
+            c++;
+            /* do not assign, just continue */
+            continue;
+        }
+
+        /* next == 'u' */
+        if (len < 6) {
+            /* Need at least six characters:
+             * { [0] = '\\', [1] = 'u', [2] = 'f', [3] = 'f', [4] = 'f', [5] = 'f' }
+             */
+            UNESCAPE_BAIL(UESCAPE_TOOSHORT, -1);
+        }
+
+        if (sscanf_s((const char*)(c+2), "%02x%02x", uesc_val, uesc_val+1) != 2) {
+            /* We treat the sequence as two octets */
+            UNESCAPE_BAIL(UESCAPE_TOOSHORT, -1);
+        }
+
+        /* By now, we gobble up all the six bytes (current implied + 5 next
+         * characters), and have at least four missing bytes from the output
+         * buffer.
+         */
+        len -= 5;
+        c += 5;
+
+        ndiff += 4;
+        if (uesc_val[0] == 0) {
+            /* only one byte is extracted from the two
+             * possible octets. Increment the diff counter by one.
+             */
+            *out = uesc_val[1];
+            if (oflags && *(unsigned char*)out > 0x7f) {
+                *oflags |= JSONSL_SPECIALf_NONASCII;
+            }
+            ndiff++;
+        } else {
+            *(out++) = uesc_val[0];
+            *out = uesc_val[1];
+            if (oflags && (uesc_val[0] > 0x7f || uesc_val[1] > 0x7f)) {
+                *oflags |= JSONSL_SPECIALf_NONASCII;
+            }
+        }
+        continue;
+
+        /* Only reached by previous branches */
+        GT_ASSIGN:
+        *out = *c;
+    }
+    *err = JSONSL_ERROR_SUCCESS;
+    return origlen - ndiff;
+}
+
+/**
+ * Character Table definitions.
+ * These were all generated via srcutil/genchartables.pl
+ */
+
+/**
+ * This table contains the beginnings of non-string
+ * allowable (bareword) values.
+ */
+static unsigned short Special_Table[0x100] = {
+        /* 0x00 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x1f */
+        /* 0x20 */ 0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x2c */
+        /* 0x2d */ JSONSL_SPECIALf_SIGNED /* - */, /* 0x2d */
+        /* 0x2e */ 0,0, /* 0x2f */
+        /* 0x30 */ JSONSL_SPECIALf_UNSIGNED /* 0 */, /* 0x30 */
+        /* 0x31 */ JSONSL_SPECIALf_UNSIGNED /* 1 */, /* 0x31 */
+        /* 0x32 */ JSONSL_SPECIALf_UNSIGNED /* 2 */, /* 0x32 */
+        /* 0x33 */ JSONSL_SPECIALf_UNSIGNED /* 3 */, /* 0x33 */
+        /* 0x34 */ JSONSL_SPECIALf_UNSIGNED /* 4 */, /* 0x34 */
+        /* 0x35 */ JSONSL_SPECIALf_UNSIGNED /* 5 */, /* 0x35 */
+        /* 0x36 */ JSONSL_SPECIALf_UNSIGNED /* 6 */, /* 0x36 */
+        /* 0x37 */ JSONSL_SPECIALf_UNSIGNED /* 7 */, /* 0x37 */
+        /* 0x38 */ JSONSL_SPECIALf_UNSIGNED /* 8 */, /* 0x38 */
+        /* 0x39 */ JSONSL_SPECIALf_UNSIGNED /* 9 */, /* 0x39 */
+        /* 0x3a */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x59 */
+        /* 0x5a */ 0,0,0,0,0,0,0,0,0,0,0,0, /* 0x65 */
+        /* 0x66 */ JSONSL_SPECIALf_FALSE /* f */, /* 0x66 */
+        /* 0x67 */ 0,0,0,0,0,0,0, /* 0x6d */
+        /* 0x6e */ JSONSL_SPECIALf_NULL /* n */, /* 0x6e */
+        /* 0x6f */ 0,0,0,0,0, /* 0x73 */
+        /* 0x74 */ JSONSL_SPECIALf_TRUE /* t */, /* 0x74 */
+        /* 0x75 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x94 */
+        /* 0x95 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xb4 */
+        /* 0xb5 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xd4 */
+        /* 0xd5 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xf4 */
+        /* 0xf5 */ 0,0,0,0,0,0,0,0,0,0 /* 0xfe */
+};
+
+/**
+ * Contains characters which signal the termination of any of the 'special' bareword
+ * values.
+ */
+static int Special_Endings[0x100] = {
+        /* 0x00 */ 0,0,0,0,0,0,0,0,0, /* 0x08 */
+        /* 0x09 */ 1 /* <TAB> */, /* 0x09 */
+        /* 0x0a */ 1 /* <LF> */, /* 0x0a */
+        /* 0x0b */ 0,0, /* 0x0c */
+        /* 0x0d */ 1 /* <CR> */, /* 0x0d */
+        /* 0x0e */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x1f */
+        /* 0x20 */ 1 /* <SP> */, /* 0x20 */
+        /* 0x21 */ 0, /* 0x21 */
+        /* 0x22 */ 1 /* " */, /* 0x22 */
+        /* 0x23 */ 0,0,0,0,0,0,0,0,0, /* 0x2b */
+        /* 0x2c */ 1 /* , */, /* 0x2c */
+        /* 0x2d */ 0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x39 */
+        /* 0x3a */ 1 /* : */, /* 0x3a */
+        /* 0x3b */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x5a */
+        /* 0x5b */ 1 /* [ */, /* 0x5b */
+        /* 0x5c */ 1 /* \ */, /* 0x5c */
+        /* 0x5d */ 1 /* ] */, /* 0x5d */
+        /* 0x5e */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x7a */
+        /* 0x7b */ 1 /* { */, /* 0x7b */
+        /* 0x7c */ 0, /* 0x7c */
+        /* 0x7d */ 1 /* } */, /* 0x7d */
+        /* 0x7e */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x9d */
+        /* 0x9e */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xbd */
+        /* 0xbe */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xdd */
+        /* 0xde */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xfd */
+        /* 0xfe */ 0 /* 0xfe */
+};
+
+/**
+ * This table contains entries for the allowed whitespace as per RFC 4627
+ */
+static int Allowed_Whitespace[0x100] = {
+        /* 0x00 */ 0,0,0,0,0,0,0,0,0, /* 0x08 */
+        /* 0x09 */ 1 /* <TAB> */, /* 0x09 */
+        /* 0x0a */ 1 /* <LF> */, /* 0x0a */
+        /* 0x0b */ 0,0, /* 0x0c */
+        /* 0x0d */ 1 /* <CR> */, /* 0x0d */
+        /* 0x0e */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x1f */
+        /* 0x20 */ 1 /* <SP> */, /* 0x20 */
+        /* 0x21 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x40 */
+        /* 0x41 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x60 */
+        /* 0x61 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x80 */
+        /* 0x81 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xa0 */
+        /* 0xa1 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xc0 */
+        /* 0xc1 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xe0 */
+        /* 0xe1 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* 0xfe */
+};
+
+/**
+ * Allowable two-character 'common' escapes:
+ */
+static int Allowed_Escapes[0x100] = {
+        /* 0x00 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x1f */
+        /* 0x20 */ 0,0, /* 0x21 */
+        /* 0x22 */ 1 /* <"> */, /* 0x22 */
+        /* 0x23 */ 0,0,0,0,0,0,0,0,0,0,0,0, /* 0x2e */
+        /* 0x2f */ 1 /* </> */, /* 0x2f */
+        /* 0x30 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x4f */
+        /* 0x50 */ 0,0,0,0,0,0,0,0,0,0,0,0, /* 0x5b */
+        /* 0x5c */ 1 /* <\> */, /* 0x5c */
+        /* 0x5d */ 0,0,0,0,0, /* 0x61 */
+        /* 0x62 */ 1 /* <b> */, /* 0x62 */
+        /* 0x63 */ 0,0,0, /* 0x65 */
+        /* 0x66 */ 1 /* <f> */, /* 0x66 */
+        /* 0x67 */ 0,0,0,0,0,0,0, /* 0x6d */
+        /* 0x6e */ 1 /* <n> */, /* 0x6e */
+        /* 0x6f */ 0,0,0, /* 0x71 */
+        /* 0x72 */ 1 /* <r> */, /* 0x72 */
+        /* 0x73 */ 0, /* 0x73 */
+        /* 0x74 */ 1 /* <t> */, /* 0x74 */
+        /* 0x75 */ 1 /* <u> */, /* 0x75 */
+        /* 0x76 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x95 */
+        /* 0x96 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xb5 */
+        /* 0xb6 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xd5 */
+        /* 0xd6 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xf5 */
+        /* 0xf6 */ 0,0,0,0,0,0,0,0,0, /* 0xfe */
+};
+
+/**
+ * This table contains the _values_ for a given (single) escaped character.
+ */
+static unsigned char Escape_Equivs[0x100] = {
+        /* 0x00 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x1f */
+        /* 0x20 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x3f */
+        /* 0x40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x5f */
+        /* 0x60 */ 0,0, /* 0x61 */
+        /* 0x62 */ 8 /* <b> */, /* 0x62 */
+        /* 0x63 */ 0,0,0, /* 0x65 */
+        /* 0x66 */ 12 /* <f> */, /* 0x66 */
+        /* 0x67 */ 0,0,0,0,0,0,0, /* 0x6d */
+        /* 0x6e */ 10 /* <n> */, /* 0x6e */
+        /* 0x6f */ 0,0,0, /* 0x71 */
+        /* 0x72 */ 13 /* <r> */, /* 0x72 */
+        /* 0x73 */ 0, /* 0x73 */
+        /* 0x74 */ 9 /* <t> */, /* 0x74 */
+        /* 0x75 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x94 */
+        /* 0x95 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xb4 */
+        /* 0xb5 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xd4 */
+        /* 0xd5 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xf4 */
+        /* 0xf5 */ 0,0,0,0,0,0,0,0,0,0 /* 0xfe */
+};
+
+/* Definitions of above-declared static functions */
+static char get_escape_equiv(unsigned c) {
+    return Escape_Equivs[c & 0xff];
+}
+static unsigned extract_special(unsigned c) {
+    return Special_Table[c & 0xff];
+}
+static int is_special_end(unsigned c) {
+    return Special_Endings[c & 0xff];
+}
+static int is_allowed_whitespace(unsigned c) {
+    return c == ' ' || Allowed_Whitespace[c & 0xff];
+}
+static int is_allowed_escape(unsigned c) {
+    return Allowed_Escapes[c & 0xff];
+}
Index: uKadecot/trunk/kadecot/jsonsl.h
===================================================================
--- uKadecot/trunk/kadecot/jsonsl.h	(revision 101)
+++ uKadecot/trunk/kadecot/jsonsl.h	(revision 101)
@@ -0,0 +1,947 @@
+/**
+ * JSON Simple/Stacked/Stateful Lexer.
+ * - Does not buffer data
+ * - Maintains state
+ * - Callback oriented
+ * - Lightweight and fast. One source file and one header file
+ *
+ * Copyright (C) 2012-2015 Mark Nunberg
+ * See included LICENSE file for license details.
+ */
+/* copy from LICENSE file
+Copyright (c) 2012-2015 M. Nunberg, mnunberg@haskalah.org
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+#ifndef JSONSL_H_
+#define JSONSL_H_
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <string.h>
+#include <t_stddef.h>
+#include <t_syslog.h>
+#include <wchar.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#ifdef JSONSL_USE_WCHAR
+typedef jsonsl_char_t wchar_t;
+typedef jsonsl_uchar_t unsigned wchar_t;
+#else
+typedef char jsonsl_char_t;
+typedef unsigned char jsonsl_uchar_t;
+#endif /* JSONSL_USE_WCHAR */
+
+/* Stolen from http-parser.h, and possibly others */
+#if defined(_WIN32) && !defined(__MINGW32__) && (!defined(_MSC_VER) || _MSC_VER<1600)
+typedef __int8 int8_t;
+typedef unsigned __int8 uint8_t;
+typedef __int16 int16_t;
+typedef unsigned __int16 uint16_t;
+typedef __int32 int32_t;
+typedef unsigned __int32 uint32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+#if !defined(_MSC_VER) || _MSC_VER<1400
+typedef unsigned int size_t;
+typedef int ssize_t;
+#endif
+#else
+#include <stdint.h>
+#endif
+
+#ifndef _MSC_VER
+#ifndef sscanf_s
+#define sscanf_s(frm, frmc, ...) sscanf(frm, __VA_ARGS__)
+#endif
+#endif
+
+#if (!defined(JSONSL_STATE_GENERIC)) && (!defined(JSONSL_STATE_USER_FIELDS))
+#define JSONSL_STATE_GENERIC
+#endif /* !defined JSONSL_STATE_GENERIC */
+
+#ifdef JSONSL_STATE_GENERIC
+#define JSONSL_STATE_USER_FIELDS
+#endif /* JSONSL_STATE_GENERIC */
+
+#ifndef JSONSL_API
+/**
+ * We require a /DJSONSL_DLL so that users already using this as a static
+ * or embedded library don't get confused
+ */
+#if defined(_WIN32) && defined(JSONSL_DLL)
+#define JSONSL_API __declspec(dllexport)
+#else
+#define JSONSL_API
+#endif /* _WIN32 */
+
+#endif /* !JSONSL_API */
+
+#ifndef JSONSL_INLINE
+#if defined(_MSC_VER)
+  #define JSONSL_INLINE __inline
+  #elif defined(__GNUC__)
+  #define JSONSL_INLINE __inline__
+  #else
+  #define JSONSL_INLINE inline
+  #endif /* _MSC_VER or __GNUC__ */
+#endif /* JSONSL_INLINE */
+
+#define JSONSL_MAX_LEVELS 512
+
+struct jsonsl_st;
+typedef struct jsonsl_st *jsonsl_t;
+
+typedef struct jsonsl_jpr_st* jsonsl_jpr_t;
+
+/**
+ * This flag is true when AND'd against a type whose value
+ * must be in "quoutes" i.e. T_HKEY and T_STRING
+ */
+#define JSONSL_Tf_STRINGY 0xffff00
+
+/**
+ * Constant representing the special JSON types.
+ * The values are special and aid in speed (the OBJECT and LIST
+ * values are the char literals of their openings).
+ *
+ * Their actual value is a character which attempts to resemble
+ * some mnemonic reference to the actual type.
+ *
+ * If new types are added, they must fit into the ASCII printable
+ * range (so they should be AND'd with 0x7f and yield something
+ * meaningful)
+ */
+#define JSONSL_XTYPE \
+    X(STRING,   '"'|JSONSL_Tf_STRINGY) \
+    X(HKEY,     '#'|JSONSL_Tf_STRINGY) \
+    X(OBJECT,   '{') \
+    X(LIST,     '[') \
+    X(SPECIAL,  '^') \
+    X(UESCAPE,  'u')
+typedef enum {
+#define X(o, c) \
+    JSONSL_T_##o = c,
+    JSONSL_XTYPE
+    JSONSL_T_UNKNOWN = '?',
+    /* Abstract 'root' object */
+    JSONSL_T_ROOT = 0
+#undef X
+} jsonsl_type_t;
+
+/**
+ * Subtypes for T_SPECIAL. We define them as flags
+ * because more than one type can be applied to a
+ * given object.
+ */
+
+#define JSONSL_XSPECIAL \
+    X(NONE, 0) \
+    X(SIGNED,       1<<0) \
+    X(UNSIGNED,     1<<1) \
+    X(TRUE,         1<<2) \
+    X(FALSE,        1<<3) \
+    X(NULL,         1<<4) \
+    X(FLOAT,        1<<5) \
+    X(EXPONENT,     1<<6) \
+    X(NONASCII,     1<<7)
+typedef enum {
+#define X(o,b) \
+    JSONSL_SPECIALf_##o = b,
+    JSONSL_XSPECIAL
+#undef X
+    /* Handy flags for checking */
+    JSONSL_SPECIALf_UNKNOWN = 1 << 8,
+    JSONSL_SPECIALf_NUMERIC = (JSONSL_SPECIALf_SIGNED|JSONSL_SPECIALf_UNSIGNED),
+    JSONSL_SPECIALf_BOOLEAN = (JSONSL_SPECIALf_TRUE|JSONSL_SPECIALf_FALSE),
+    /* For non-simple numeric types */
+    JSONSL_SPECIALf_NUMNOINT = (JSONSL_SPECIALf_FLOAT|JSONSL_SPECIALf_EXPONENT)
+} jsonsl_special_t;
+
+
+/**
+ * These are the various types of stack (or other) events
+ * which will trigger a callback.
+ * Like the type constants, this are also mnemonic
+ */
+#define JSONSL_XACTION \
+    X(PUSH, '+') \
+    X(POP, '-') \
+    X(UESCAPE, 'U') \
+    X(ERROR, '!')
+typedef enum {
+#define X(a,c) \
+    JSONSL_ACTION_##a = c,
+    JSONSL_XACTION
+    JSONSL_ACTION_UNKNOWN = '?'
+#undef X
+} jsonsl_action_t;
+
+
+/**
+ * Various errors which may be thrown while parsing JSON
+ */
+#define JSONSL_XERR \
+/* Trailing garbage characters */ \
+    X(GARBAGE_TRAILING) \
+/* We were expecting a 'special' (numeric, true, false, null) */ \
+    X(SPECIAL_EXPECTED) \
+/* Found a stray token */ \
+    X(STRAY_TOKEN) \
+/* We were expecting a token before this one */ \
+    X(MISSING_TOKEN) \
+/* Cannot insert because the container is not ready */ \
+    X(CANT_INSERT) \
+/* Found a '\' outside a string */ \
+    X(ESCAPE_OUTSIDE_STRING) \
+/* Found a ':' outside of a hash */ \
+    X(KEY_OUTSIDE_OBJECT) \
+/* found a string outside of a container */ \
+    X(STRING_OUTSIDE_CONTAINER) \
+/* Found a null byte in middle of string */ \
+    X(FOUND_NULL_BYTE) \
+/* Current level exceeds limit specified in constructor */ \
+    X(LEVELS_EXCEEDED) \
+/* Got a } as a result of an opening [ or vice versa */ \
+    X(BRACKET_MISMATCH) \
+/* We expected a key, but got something else instead */ \
+    X(HKEY_EXPECTED) \
+/* We got an illegal control character (bad whitespace or something) */ \
+    X(WEIRD_WHITESPACE) \
+/* Found a \u-escape, but there were less than 4 following hex digits */ \
+    X(UESCAPE_TOOSHORT) \
+/* Invalid two-character escape */ \
+    X(ESCAPE_INVALID) \
+/* Trailing comma */ \
+    X(TRAILING_COMMA) \
+/* An invalid number was passed in a numeric field */ \
+    X(INVALID_NUMBER) \
+/* The following are for JPR Stuff */ \
+    \
+/* Found a literal '%' but it was only followed by a single valid hex digit */ \
+    X(PERCENT_BADHEX) \
+/* jsonpointer URI is malformed '/' */ \
+    X(JPR_BADPATH) \
+/* Duplicate slash */ \
+    X(JPR_DUPSLASH) \
+/* No leading root */ \
+    X(JPR_NOROOT) \
+/* Allocation failure */ \
+    X(ENOMEM)
+
+typedef enum {
+    JSONSL_ERROR_SUCCESS = 0,
+#define X(e) \
+    JSONSL_ERROR_##e,
+    JSONSL_XERR
+#undef X
+    JSONSL_ERROR_GENERIC
+} jsonsl_error_t;
+
+
+/**
+ * A state is a single level of the stack.
+ * Non-private data (i.e. the 'data' field, see the STATE_GENERIC section)
+ * will remain in tact until the item is popped.
+ *
+ * As a result, it means a parent state object may be accessed from a child
+ * object, (the parents fields will all be valid). This allows a user to create
+ * an ad-hoc hierarchy on top of the JSON one.
+ *
+ */
+struct jsonsl_state_st {
+    /**
+     * The JSON object type
+     */
+    unsigned type;
+
+    /** If this element is special, then its extended type is here */
+    unsigned special_flags;
+
+    /**
+     * The position (in terms of number of bytes since the first call to
+     * jsonsl_feed()) at which the state was first pushed. This includes
+     * opening tokens, if applicable.
+     *
+     * @note For strings (i.e. type & JSONSL_Tf_STRINGY is nonzero) this will
+     * be the position of the first quote.
+     *
+     * @see jsonsl_st::pos which contains the _current_ position and can be
+     * used during a POP callback to get the length of the element.
+     */
+    size_t pos_begin;
+
+    /**FIXME: This is redundant as the same information can be derived from
+     * jsonsl_st::pos at pop-time */
+    size_t pos_cur;
+
+    /**
+     * Level of recursion into nesting. This is mainly a convenience
+     * variable, as this can technically be deduced from the lexer's
+     * level parameter (though the logic is not that simple)
+     */
+    unsigned int level;
+
+
+    /**
+     * how many elements in the object/list.
+     * For objects (hashes), an element is either
+     * a key or a value. Thus for one complete pair,
+     * nelem will be 2.
+     *
+     * For special types, this will hold the sum of the digits.
+     * This only holds true for values which are simple signed/unsigned
+     * numbers. Otherwise a special flag is set, and extra handling is not
+     * performed.
+     */
+    uint64_t nelem;
+
+
+
+    /*TODO: merge this and special_flags into a union */
+
+
+    /**
+     * Useful for an opening nest, this will prevent a callback from being
+     * invoked on this item or any of its children
+     */
+    int ignore_callback;
+
+    /**
+     * Counter which is incremented each time an escape ('\') is encountered.
+     */
+    unsigned int nescapes;
+
+    /**
+     * Put anything you want here. if JSONSL_STATE_USER_FIELDS is here, then
+     * the macro expansion happens here.
+     *
+     * You can use these fields to store hierarchical or 'tagging' information
+     * for specific objects.
+     *
+     * See the documentation above for the lifetime of the state object (i.e.
+     * if the private data points to allocated memory, it should be freed
+     * when the object is popped, as the state object will be re-used)
+     */
+#ifndef JSONSL_STATE_GENERIC
+    JSONSL_STATE_USER_FIELDS
+#else
+
+    /**
+     * Otherwise, this is a simple void * pointer for anything you want
+     */
+    void *data;
+#endif /* JSONSL_STATE_USER_FIELDS */
+};
+
+/*
+ * So now we need some special structure for keeping the
+ * JPR info in sync. Preferrably all in a single block
+ * of memory (there's no need for separate allocations.
+ * So we will define a 'table' with the following layout
+ *
+ * Level    nPosbl  JPR1_last   JPR2_last   JPR3_last
+ *
+ * 0        1       NOMATCH     POSSIBLE    POSSIBLE
+ * 1        0       NOMATCH     NOMATCH     COMPLETE
+ * [ table ends here because no further path is possible]
+ *
+ * Where the JPR..n corresponds to the number of JPRs
+ * requested, and nPosble is a quick flag to determine
+ *
+ * the number of possibilities. In the future this might
+ * be made into a proper 'jump' table,
+ *
+ * Since we always mark JPRs from the higher levels descending
+ * into the lower ones, a prospective child match would first
+ * look at the parent table to check the possibilities, and then
+ * see which ones were possible..
+ *
+ * Thus, the size of this blob would be (and these are all ints here)
+ * nLevels * nJPR * 2.
+ *
+ * the 'Width' of the table would be nJPR*2, and the 'height' would be
+ * nlevels
+ */
+
+/**
+ * This is called when a stack change ocurs.
+ *
+ * @param jsn The lexer
+ * @param action The type of action, this can be PUSH or POP
+ * @param state A pointer to the stack currently affected by the action
+ * @param at A pointer to the position of the input buffer which triggered
+ * this action.
+ */
+typedef void (*jsonsl_stack_callback)(
+        jsonsl_t jsn,
+        jsonsl_action_t action,
+        struct jsonsl_state_st* state,
+        const jsonsl_char_t *at);
+
+
+/**
+ * This is called when an error is encountered.
+ * Sometimes it's possible to 'erase' characters (by replacing them
+ * with whitespace). If you think you have corrected the error, you
+ * can return a true value, in which case the parser will backtrack
+ * and try again.
+ *
+ * @param jsn The lexer
+ * @param error The error which was thrown
+ * @param state the current state
+ * @param a pointer to the position of the input buffer which triggered
+ * the error. Note that this is not const, this is because you have the
+ * possibility of modifying the character in an attempt to correct the
+ * error
+ *
+ * @return zero to bail, nonzero to try again (this only makes sense if
+ * the input buffer has been modified by this callback)
+ */
+typedef int (*jsonsl_error_callback)(
+        jsonsl_t jsn,
+        jsonsl_error_t error,
+        struct jsonsl_state_st* state,
+        jsonsl_char_t *at);
+
+struct jsonsl_st {
+    /** Public, read-only */
+
+    /** This is the current level of the stack */
+    unsigned int level;
+
+    /** Flag set to indicate we should stop processing */
+    unsigned int stopfl;
+
+    /**
+     * This is the current position, relative to the beginning
+     * of the stream.
+     */
+    size_t pos;
+
+    /** This is the 'bytes' variable passed to feed() */
+    const jsonsl_char_t *base;
+
+    /** Callback invoked for PUSH actions */
+    jsonsl_stack_callback action_callback_PUSH;
+
+    /** Callback invoked for POP actions */
+    jsonsl_stack_callback action_callback_POP;
+
+    /** Default callback for any action, if neither PUSH or POP callbacks are defined */
+    jsonsl_stack_callback action_callback;
+
+    /** Do not invoke callbacks for objects deeper than this level */
+    unsigned int max_callback_level;
+
+    /** The error callback. Invoked when an error happens. Should not be NULL */
+    jsonsl_error_callback error_callback;
+
+    /* these are boolean flags you can modify. You will be called
+     * about notification for each of these types if the corresponding
+     * variable is true.
+     */
+
+    /**
+     * @name Callback Booleans.
+     * These determine whether a callback is to be invoked for certain types of objects
+     * @{*/
+
+    /** Boolean flag to enable or disable the invokcation for events on this type*/
+    int call_SPECIAL;
+    int call_OBJECT;
+    int call_LIST;
+    int call_STRING;
+    int call_HKEY;
+    /*@}*/
+
+    /**
+     * @name u-Escape handling
+     * Special handling for the \\u-f00d type sequences. These are meant
+     * to be translated back into the corresponding octet(s).
+     * A special callback (if set) is invoked with *at=='u'. An application
+     * may wish to temporarily suspend parsing and handle the 'u-' sequence
+     * internally (or not).
+     */
+
+     /*@{*/
+
+    /** Callback to be invoked for a u-escape */
+    jsonsl_stack_callback action_callback_UESCAPE;
+
+    /** Boolean flag, whether to invoke the callback */
+    int call_UESCAPE;
+
+    /** Boolean flag, whether we should return after encountering a u-escape:
+     * the callback is invoked and then we return if this is true
+     */
+    int return_UESCAPE;
+    /*@}*/
+
+    struct {
+        int allow_trailing_comma;
+    } options;
+
+    /** Put anything here */
+    void *data;
+
+    /*@{*/
+    /** Private */
+    int in_escape;
+    char expecting;
+    char tok_last;
+    int can_insert;
+    unsigned int levels_max;
+
+#ifndef JSONSL_NO_JPR
+    size_t jpr_count;
+    jsonsl_jpr_t *jprs;
+
+    /* Root pointer for JPR matching information */
+    size_t *jpr_root;
+#endif /* JSONSL_NO_JPR */
+    /*@}*/
+
+    /**
+     * This is the stack. Its upper bound is levels_max, or the
+     * nlevels argument passed to jsonsl_new. If you modify this structure,
+     * make sure that this member is last.
+     */
+    struct jsonsl_state_st stack[1];
+};
+
+
+/**
+ * Creates a new lexer object, with capacity for recursion up to nlevels
+ *
+ * @param nlevels maximum recursion depth
+ */
+JSONSL_API
+jsonsl_t jsonsl_new(struct jsonsl_st *jsn, int nlevels);
+
+/**
+ * Feeds data into the lexer.
+ *
+ * @param jsn the lexer object
+ * @param bytes new data to be fed
+ * @param nbytes size of new data
+ */
+JSONSL_API
+void jsonsl_feed(jsonsl_t jsn, const jsonsl_char_t *bytes, size_t nbytes);
+
+/**
+ * Resets the internal parser state. This does not free the parser
+ * but does clean it internally, so that the next time feed() is called,
+ * it will be treated as a new stream
+ *
+ * @param jsn the lexer
+ */
+JSONSL_API
+void jsonsl_reset(jsonsl_t jsn);
+
+/**
+ * Frees the lexer, cleaning any allocated memory taken
+ *
+ * @param jsn the lexer
+ */
+JSONSL_API
+void jsonsl_destroy(jsonsl_t jsn);
+
+/**
+ * Gets the 'parent' element, given the current one
+ *
+ * @param jsn the lexer
+ * @param cur the current nest, which should be a struct jsonsl_nest_st
+ */
+static JSONSL_INLINE
+struct jsonsl_state_st *jsonsl_last_state(const jsonsl_t jsn,
+                                          const struct jsonsl_state_st *state)
+{
+    /* Don't complain about overriding array bounds */
+    if (state->level > 1) {
+        return jsn->stack + state->level - 1;
+    } else {
+        return NULL;
+    }
+}
+
+/**
+ * Gets the state of the last fully consumed child of this parent. This is
+ * only valid in the parent's POP callback.
+ *
+ * @param the lexer
+ * @return A pointer to the child.
+ */
+static JSONSL_INLINE
+struct jsonsl_state_st *jsonsl_last_child(const jsonsl_t jsn,
+                                          const struct jsonsl_state_st *parent)
+{
+    return jsn->stack + (parent->level + 1);
+}
+
+/**Call to instruct the parser to stop parsing and return. This is valid
+ * only from within a callback */
+static JSONSL_INLINE
+void jsonsl_stop(jsonsl_t jsn)
+{
+    jsn->stopfl = 1;
+}
+
+/**
+ * This enables receiving callbacks on all events. Doesn't do
+ * anything special but helps avoid some boilerplate.
+ * This does not touch the UESCAPE callbacks or flags.
+ */
+static JSONSL_INLINE
+void jsonsl_enable_all_callbacks(jsonsl_t jsn)
+{
+    jsn->call_HKEY = 1;
+    jsn->call_STRING = 1;
+    jsn->call_OBJECT = 1;
+    jsn->call_SPECIAL = 1;
+    jsn->call_LIST = 1;
+}
+
+/**
+ * A macro which returns true if the current state object can
+ * have children. This means a list type or an object type.
+ */
+#define JSONSL_STATE_IS_CONTAINER(state) \
+        (state->type == JSONSL_T_OBJECT || state->type == JSONSL_T_LIST)
+
+/**
+ * These two functions, dump a string representation
+ * of the error or type, respectively. They will never
+ * return NULL
+ */
+JSONSL_API
+const char* jsonsl_strerror(jsonsl_error_t err);
+JSONSL_API
+const char* jsonsl_strtype(jsonsl_type_t jt);
+
+/**
+ * Dumps global metrics to the screen. This is a noop unless
+ * jsonsl was compiled with JSONSL_USE_METRICS
+ */
+JSONSL_API
+void jsonsl_dump_global_metrics(void);
+
+/* This macro just here for editors to do code folding */
+#ifndef JSONSL_NO_JPR
+
+/**
+ * @name JSON Pointer API
+ *
+ * JSONPointer API. This isn't really related to the lexer (at least not yet)
+ * JSONPointer provides an extremely simple specification for providing
+ * locations within JSON objects. We will extend it a bit and allow for
+ * providing 'wildcard' characters by which to be able to 'query' the stream.
+ *
+ * See http://tools.ietf.org/html/draft-pbryan-zyp-json-pointer-00
+ *
+ * Currently I'm implementing the 'single query' API which can only use a single
+ * query component. In the future I will integrate my yet-to-be-published
+ * Boyer-Moore-esque prefix searching implementation, in order to allow
+ * multiple paths to be merged into one for quick and efficient searching.
+ *
+ *
+ * JPR (as we'll refer to it within the source) can be used by splitting
+ * the components into mutliple sections, and incrementally 'track' each
+ * component. When JSONSL delivers a 'pop' callback for a string, or a 'push'
+ * callback for an object, we will check to see whether the index matching
+ * the component corresponding to the current level contains a match
+ * for our path.
+ *
+ * In order to do this properly, a structure must be maintained within the
+ * parent indicating whether its children are possible matches. This flag
+ * will be 'inherited' by call children which may conform to the match
+ * specification, and discarded by all which do not (thereby eliminating
+ * their children from inheriting it).
+ *
+ * A successful match is a complete one. One can provide multiple paths with
+ * multiple levels of matches e.g.
+ *  /foo/bar/baz/^/blah
+ *
+ *  @{
+ */
+
+/** The wildcard character */
+#ifndef JSONSL_PATH_WILDCARD_CHAR
+#define JSONSL_PATH_WILDCARD_CHAR '^'
+#endif /* WILDCARD_CHAR */
+
+#define JSONSL_XMATCH \
+    X(COMPLETE,1) \
+    X(POSSIBLE,0) \
+    X(NOMATCH,-1) \
+    X(TYPE_MISMATCH, -2)
+
+typedef enum {
+
+#define X(T,v) \
+    JSONSL_MATCH_##T = v,
+    JSONSL_XMATCH
+
+#undef X
+    JSONSL_MATCH_UNKNOWN
+} jsonsl_jpr_match_t;
+
+typedef enum {
+    JSONSL_PATH_STRING = 1,
+    JSONSL_PATH_WILDCARD,
+    JSONSL_PATH_NUMERIC,
+    JSONSL_PATH_ROOT,
+
+    /* Special */
+    JSONSL_PATH_INVALID = -1,
+    JSONSL_PATH_NONE = 0
+} jsonsl_jpr_type_t;
+
+struct jsonsl_jpr_component_st {
+    /** The string the component points to */
+    char *pstr;
+    /** if this is a numeric type, the number is 'cached' here */
+    unsigned long idx;
+    /** The length of the string */
+    size_t len;
+    /** The type of component (NUMERIC or STRING) */
+    jsonsl_jpr_type_t ptype;
+
+    /** Set this to true to enforce type checking between dict keys and array
+     * indices. jsonsl_jpr_match() will return TYPE_MISMATCH if it detects
+     * that an array index is actually a child of a dictionary. */
+    short is_arridx;
+};
+
+struct jsonsl_jpr_st {
+    /** Path components */
+    struct jsonsl_jpr_component_st *components;
+    size_t ncomponents;
+
+    /** Base of allocated string for components */
+    char *basestr;
+
+    /** The original match string. Useful for returning to the user */
+    char *orig;
+    size_t norig;
+};
+
+
+
+/**
+ * Create a new JPR object.
+ *
+ * @param path the JSONPointer path specification.
+ * @param errp a pointer to a jsonsl_error_t. If this function returns NULL,
+ * then more details will be in this variable.
+ *
+ * @return a new jsonsl_jpr_t object, or NULL on error.
+ */
+JSONSL_API
+jsonsl_jpr_t jsonsl_jpr_new(const char *path, jsonsl_error_t *errp);
+
+/**
+ * Destroy a JPR object
+ */
+JSONSL_API
+void jsonsl_jpr_destroy(jsonsl_jpr_t jpr);
+
+/**
+ * Match a JSON object against a type and specific level
+ *
+ * @param jpr the JPR object
+ * @param parent_type the type of the parent (should be T_LIST or T_OBJECT)
+ * @param parent_level the level of the parent
+ * @param key the 'key' of the child. If the parent is an array, this should be
+ * empty.
+ * @param nkey - the length of the key. If the parent is an array (T_LIST), then
+ * this should be the current index.
+ *
+ * NOTE: The key of the child means any kind of associative data related to the
+ * element. Thus: <<< { "foo" : [ >>,
+ * the opening array's key is "foo".
+ *
+ * @return a status constant. This indicates whether a match was excluded, possible,
+ * or successful.
+ */
+JSONSL_API
+jsonsl_jpr_match_t jsonsl_jpr_match(jsonsl_jpr_t jpr,
+                                    unsigned int parent_type,
+                                    unsigned int parent_level,
+                                    const char *key, size_t nkey);
+
+
+/**
+ * Associate a set of JPR objects with a lexer instance.
+ * This should be called before the lexer has been fed any data (and
+ * behavior is undefined if you don't adhere to this).
+ *
+ * After using this function, you may subsequently call match_state() on
+ * given states (presumably from within the callbacks).
+ *
+ * Note that currently the first JPR is the quickest and comes
+ * pre-allocated with the state structure. Further JPR objects
+ * are chained.
+ *
+ * @param jsn The lexer
+ * @param jprs An array of jsonsl_jpr_t objects
+ * @param njprs How many elements in the jprs array.
+ */
+JSONSL_API
+void jsonsl_jpr_match_state_init(jsonsl_t jsn,
+                                 jsonsl_jpr_t *jprs,
+                                 size_t njprs);
+
+/**
+ * This follows the same semantics as the normal match,
+ * except we infer parent and type information from the relevant state objects.
+ * The match status (for all possible JPR objects) is set in the *out parameter.
+ *
+ * If a match has succeeded, then its JPR object will be returned. In all other
+ * instances, NULL is returned;
+ *
+ * @param jpr The jsonsl_jpr_t handle
+ * @param state The jsonsl_state_st which is a candidate
+ * @param key The hash key (if applicable, can be NULL if parent is list)
+ * @param nkey Length of hash key (if applicable, can be zero if parent is list)
+ * @param out A pointer to a jsonsl_jpr_match_t. This will be populated with
+ * the match result
+ *
+ * @return If a match was completed in full, then the JPR object containing
+ * the matching path will be returned. Otherwise, the return is NULL (note, this
+ * does not mean matching has failed, it can still be part of the match: check
+ * the out parameter).
+ */
+JSONSL_API
+jsonsl_jpr_t jsonsl_jpr_match_state(jsonsl_t jsn,
+                                    struct jsonsl_state_st *state,
+                                    const char *key,
+                                    size_t nkey,
+                                    jsonsl_jpr_match_t *out);
+
+
+/**
+ * Cleanup any memory allocated and any states set by
+ * match_state_init() and match_state()
+ * @param jsn The lexer
+ */
+JSONSL_API
+void jsonsl_jpr_match_state_cleanup(jsonsl_t jsn);
+
+/**
+ * Return a string representation of the match result returned by match()
+ */
+JSONSL_API
+const char *jsonsl_strmatchtype(jsonsl_jpr_match_t match);
+
+/* @}*/
+
+/**
+ * Utility function to convert escape sequences into their original form.
+ *
+ * The decoders I've sampled do not seem to specify a standard behavior of what
+ * to escape/unescape.
+ *
+ * RFC 4627 Mandates only that the quoute, backslash, and ASCII control
+ * characters (0x00-0x1f) be escaped. It is often common for applications
+ * to escape a '/' - however this may also be desired behavior. the JSON
+ * spec is not clear on this, and therefore jsonsl leaves it up to you.
+ *
+ * @param in The input string.
+ * @param out An allocated output (should be the same size as in)
+ * @param len the size of the buffer
+ * @param toEscape - A sparse array of characters to unescape. Characters
+ * which are not present in this array, e.g. toEscape['c'] == 0 will be
+ * ignored and passed to the output in their original form.
+ * @param oflags If not null, and a \uXXXX escape expands to a non-ascii byte,
+ * then this variable will have the SPECIALf_NONASCII flag on.
+ *
+ * @param err A pointer to an error variable. If an error ocurrs, it will be
+ * set in this variable
+ * @param errat If not null and an error occurs, this will be set to point
+ * to the position within the string at which the offending character was
+ * encountered.
+ *
+ * @return The effective size of the output buffer.
+ */
+JSONSL_API
+size_t jsonsl_util_unescape_ex(const char *in,
+                               char *out,
+                               size_t len,
+                               const int toEscape[128],
+                               unsigned *oflags,
+                               jsonsl_error_t *err,
+                               const char **errat);
+
+/**
+ * Convenience macro to avoid passing too many parameters
+ */
+#define jsonsl_util_unescape(in, out, len, toEscape, err) \
+    jsonsl_util_unescape_ex(in, out, len, toEscape, NULL, err, NULL)
+
+#endif /* JSONSL_NO_JPR */
+
+/**
+ * HERE BE CHARACTER TABLES!
+ */
+#define JSONSL_CHARTABLE_string_nopass \
+/* 0x00 */ 1 /* <NUL> */, /* 0x00 */  \
+/* 0x01 */ 1 /* <SOH> */, /* 0x01 */  \
+/* 0x02 */ 1 /* <STX> */, /* 0x02 */  \
+/* 0x03 */ 1 /* <ETX> */, /* 0x03 */  \
+/* 0x04 */ 1 /* <EOT> */, /* 0x04 */  \
+/* 0x05 */ 1 /* <ENQ> */, /* 0x05 */  \
+/* 0x06 */ 1 /* <ACK> */, /* 0x06 */  \
+/* 0x07 */ 1 /* <BEL> */, /* 0x07 */  \
+/* 0x08 */ 1 /* <BS> */, /* 0x08 */  \
+/* 0x09 */ 1 /* <HT> */, /* 0x09 */  \
+/* 0x0a */ 1 /* <LF> */, /* 0x0a */  \
+/* 0x0b */ 1 /* <VT> */, /* 0x0b */  \
+/* 0x0c */ 1 /* <FF> */, /* 0x0c */  \
+/* 0x0d */ 1 /* <CR> */, /* 0x0d */  \
+/* 0x0e */ 1 /* <SO> */, /* 0x0e */  \
+/* 0x0f */ 1 /* <SI> */, /* 0x0f */  \
+/* 0x10 */ 1 /* <DLE> */, /* 0x10 */  \
+/* 0x11 */ 1 /* <DC1> */, /* 0x11 */  \
+/* 0x12 */ 1 /* <DC2> */, /* 0x12 */  \
+/* 0x13 */ 1 /* <DC3> */, /* 0x13 */  \
+/* 0x14 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x21 */  \
+/* 0x22 */ 1 /* <"> */, /* 0x22 */  \
+/* 0x23 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x42 */  \
+/* 0x43 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x5b */  \
+/* 0x5c */ 1 /* <\> */, /* 0x5c */  \
+/* 0x5d */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x7c */  \
+/* 0x7d */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x9c */  \
+/* 0x9d */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xbc */  \
+/* 0xbd */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xdc */  \
+/* 0xdd */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0xfc */  \
+/* 0xfd */ 0,0 /* 0xfe */  \
+
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* JSONSL_H_ */
Index: uKadecot/trunk/kadecot/kadecot_names.c
===================================================================
--- uKadecot/trunk/kadecot/kadecot_names.c	(revision 101)
+++ uKadecot/trunk/kadecot/kadecot_names.c	(revision 101)
@@ -0,0 +1,317 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#include <string.h>
+#ifndef _MSC_VER
+#include <t_stddef.h>
+#else
+#include <stdint.h>
+typedef int bool_t;
+#define false ((bool_t)0)
+#define true ((bool_t)1)
+#endif
+#include "kadecot_names.h"
+
+uint16_t kadecot_names_get_device_type(const char *name, int nameLen);
+bool_t kadecot_names_get_device_type_name(uint16_t deviceType, char *buf, int bufLen);
+uint8_t kadecot_names_get_property_code(const char *name, int nameLen,
+	uint16_t devType);
+static uint16_t get_device_type(uint8_t *table, int len,
+	const char *name, int nameLen);
+static bool_t get_device_type_name(uint8_t *table, int len, uint16_t deviceType,
+	uint8_t *strtable, int stablelen, char *buf, int bufLen);
+static uint8_t get_property_code(uint8_t *table, int len,
+	const char *name, int nameLen, uint16_t devType);
+static uint8_t get_prop_code(uint8_t *table, int len, const char *name, int nameLen,
+	uint16_t devType, int pos);
+
+#ifndef _MSC_VER
+#define KADECOT_NAMES_TABLE ((uint8_t *)0xFFFE0000)
+#else
+#undef SIZE
+#include <windows.h>
+#include <tchar.h>
+#include <winioctl.h>
+
+uint8_t KADECOT_NAMES_TABLE[0x5000];
+#endif
+static int devTableLen;
+static uint8_t *devTable;
+static int devCodeTableLen;
+static uint8_t *devCodeTable;
+static int propTableLen;
+static uint8_t *propTable;
+
+void kadecot_names_init()
+{
+	int pos;
+#ifdef _MSC_VER
+	HANDLE h;
+	DWORD br;
+
+	h = CreateFile(_T("..\\..\\..\\..\\kadecot\\kadecot_names.bin"), GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
+	if (h == INVALID_HANDLE_VALUE) {
+		return;
+	}
+
+	ReadFile(h, KADECOT_NAMES_TABLE, sizeof(KADECOT_NAMES_TABLE), &br, 0);
+	CloseHandle(h);
+#endif
+	devTableLen = (KADECOT_NAMES_TABLE[0] << 8) | KADECOT_NAMES_TABLE[1];
+	devTable = &KADECOT_NAMES_TABLE[2];
+	pos = devTableLen + 2;
+	devCodeTableLen = (KADECOT_NAMES_TABLE[pos] << 8) | KADECOT_NAMES_TABLE[pos + 1];
+	devCodeTable = &KADECOT_NAMES_TABLE[pos + 2];
+	pos += devCodeTableLen + 2;
+	propTableLen = (KADECOT_NAMES_TABLE[pos] << 8) | KADECOT_NAMES_TABLE[pos + 1];
+	propTable = &KADECOT_NAMES_TABLE[pos + 2];
+}
+
+uint16_t kadecot_names_get_device_type(const char *name, int nameLen)
+{
+	return get_device_type(devTable, devTableLen, name, nameLen);
+}
+
+bool_t kadecot_names_get_device_type_name(uint16_t deviceType, char *buf, int bufLen)
+{
+	return get_device_type_name(devCodeTable, devCodeTableLen, deviceType,
+		devTable, devTableLen, buf, bufLen);
+}
+
+uint8_t kadecot_names_get_property_code(const char *name, int nameLen,
+	uint16_t devType)
+{
+	return get_property_code(propTable, propTableLen, name, nameLen, devType);
+}
+
+static uint16_t get_device_type(uint8_t *table, int len, const char *name, int nameLen)
+{
+	int pos = 0, nextpos, i = 0;
+	uint8_t count;
+	uint16_t DeviceType;
+
+	while (pos < len) {
+		/* branch count */
+		count = table[pos++];
+
+		/* [Ìm[h */
+		if (count == 0) {
+			/* NULL¶àÜß½TCY */
+			if(i != (nameLen + 1))
+				return 0;
+
+			DeviceType = table[pos++] << 8;
+			DeviceType |= table[pos++];
+
+			return DeviceType;
+		}
+
+		for (;;) {
+			int length, start = pos, j, k;
+			/* string length */
+			length = table[pos++];
+			for (j = 0, k = i; j < length; j++, k++) {
+				/* NULL¶àÜß½`FbN */
+				if((k > nameLen) || (table[pos++] != name[k])){
+					pos = start + 1 + length + 2;
+					goto nextnode;
+				}
+			}
+			i += length;
+
+			/* nextpos */
+			nextpos = table[pos++] << 8;
+			nextpos |= table[pos++];
+
+			pos = nextpos;
+			break;
+		nextnode:
+			count--;
+			if (count == 0)
+				return 0;
+			continue;
+		}
+	}
+
+	return 0;
+}
+
+static bool_t get_device_type_name(uint8_t *table, int len, uint16_t deviceType,
+	uint8_t *strtable, int stablelen, char *buf, int bufLen)
+{
+	int pos = 0, i, unmatchpos;
+
+	while (pos < len) {
+		uint16_t mask, ptrn;
+		/* bit mask */
+		mask = table[pos++] << 8;
+		mask |= table[pos++];
+		/* bit pattarn */
+		ptrn = table[pos++] << 8;
+		ptrn |= table[pos++];
+		/* unmatchpos */
+		unmatchpos = table[pos++] << 8;
+		unmatchpos |= table[pos++];
+
+		if ((mask & deviceType) != ptrn) {
+			if (unmatchpos == 0)
+				return false;
+			pos = unmatchpos;
+			continue;
+		}
+
+		/* [Ìm[h */
+		if ((mask & 0x0001) != 0) {
+			int bufpos = 0;
+			int count = table[pos++];
+			for (i = 0; i < count; i++) {
+				int substr, strlen, end;
+
+				substr = table[pos++] << 8;
+				substr |= table[pos++];
+
+				if (substr > stablelen)
+					return false;
+
+				strlen = strtable[substr++];
+				if ((substr + strlen) > stablelen)
+					return false;
+
+				end = bufpos + strlen;
+				if (end > bufLen)
+					return false;
+
+				for (; bufpos < end; bufpos++) {
+					buf[bufpos] = (char)strtable[substr++];
+				}
+			}
+
+			return true;
+		}
+	}
+
+	return false;
+}
+
+static uint8_t get_property_code(uint8_t *table, int len, const char *name,
+	int nameLen, uint16_t devType)
+{
+	int pos = 0, nextpos, i = 0;
+	uint8_t count;
+	uint8_t epc;
+
+	while (pos < len) {
+		/* branch count */
+		count = table[pos++];
+
+		/* [Ìm[h */
+		if (count == 0) {
+			/* NULL¶àÜß½TCY */
+			if(i != (nameLen + 1))
+				return 0;
+
+			epc = get_prop_code(table, len, name, nameLen, devType, pos);
+			return epc;
+		}
+
+		for (;;) {
+			int length, start = pos, j, k;
+			/* string length */
+			length = table[pos++];
+			for (j = 0, k = i; j < length; j++, k++) {
+				/* NULL¶àÜß½`FbN */
+				if((k > nameLen) || (table[pos++] != name[k])){
+					pos = start + 1 + length + 2;
+					goto nextnode;
+				}
+			}
+			i += length;
+
+			/* nextpos */
+			nextpos = table[pos++] << 8;
+			nextpos |= table[pos++];
+
+			pos = nextpos;
+			break;
+		nextnode:
+			count--;
+			if (count == 0)
+				return 0;
+			continue;
+		}
+	}
+
+	return 0;
+}
+
+static uint8_t get_prop_code(uint8_t *table, int len, const char *name,
+	int nameLen, uint16_t devType, int pos)
+{
+	int i, start;
+	uint8_t count;
+	uint8_t epc;
+	uint16_t type;
+
+	while (pos < len) {
+		/* branch count */
+		count = table[pos++];
+
+		/* [Ìm[h */
+		if (count == 0) {
+			epc = table[pos++];
+			return epc;
+		}
+
+		start = pos;
+		for (i = 0; i < count; i++) {
+			type = table[pos++] << 8;
+			type |= table[pos++];
+			if (type == devType) {
+				epc = table[start + 2 * count];
+				return epc;
+			}
+		}
+		pos++;
+	}
+
+	epc = table[pos];
+	return epc;
+}
Index: uKadecot/trunk/kadecot/kadecot_names.h
===================================================================
--- uKadecot/trunk/kadecot/kadecot_names.h	(revision 101)
+++ uKadecot/trunk/kadecot/kadecot_names.h	(revision 101)
@@ -0,0 +1,51 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#ifndef KADECOT_NAMES_H
+#define KADECOT_NAMES_H
+
+void kadecot_names_init();
+uint16_t kadecot_names_get_device_type(const char *name, int nameLen);
+bool_t kadecot_names_get_device_type_name(uint16_t deviceType, char *buf, int bufLen);
+uint8_t kadecot_names_get_property_code(const char *name, int nameLen,
+	uint16_t devType);
+
+#endif // KADECOT_NAMES_H
Index: uKadecot/trunk/kadecot/wamp.c
===================================================================
--- uKadecot/trunk/kadecot/wamp.c	(revision 101)
+++ uKadecot/trunk/kadecot/wamp.c	(revision 101)
@@ -0,0 +1,1886 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#include <string.h>
+#include "wamp.h"
+#include "kernel_cfg.h"
+#include "fbs_string.h"
+#include "main.h"
+
+/* p[XG[iè`ÌÝj */
+const char parse_error[] = "com.sonycsl.kadecot.plugin.echonetlite.error.parse_error";
+/* ³øÈNGXgiè`ÌÝj */
+const char invalid_request[] = "com.sonycsl.kadecot.plugin.echonetlite.error.invalid_request";
+/* ¶ÝµÈ¢\bhiè`ÌÝj */
+const char method_not_found[] = "com.sonycsl.kadecot.plugin.echonetlite.error.method_not_found";
+/* echo objectª¶ÝµÈ¢,@JSONArray`®ÉÈÁÄ¢È¢ */
+const char invalid_params[] = "com.sonycsl.kadecot.plugin.echonetlite.error.invalid_params";
+/* ^CAEg­¶, R[obNª@null*/
+const char internal_error[] = "com.sonycsl.kadecot.plugin.echonetlite.error.internal_error";
+
+static void wamp_idle_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_code_push_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_code_pop_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_param_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_nomore_param_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_id_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_list_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_dict_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_uri_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_int_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_string_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+
+static void wamp_proc_hello_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_welcome_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_abort_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_challenge_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_authenticate_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_goodbye_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_error_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_publish_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_published_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_subscribe_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_subscribed_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_unsubscribe_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_unsubscribed_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_event_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_call_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_cancel_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_result_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_register_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_registered_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_unregister_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_unregistered_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_invocation_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_interrupt_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_proc_yield_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+
+static void wamp_param_handler(struct wamp_state *s, jsonsl_action_t action,
+	wamp_param_state_t param, const char *value);
+
+void wamp_error(wamp_state_t *s);
+void wamp_error_type(wamp_state_t *s, const char *value);
+void wamp_error_request_id(wamp_state_t *s, const char *value);
+void wamp_error_details(wamp_state_t *s, const char *value);
+void wamp_error_details_param(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_error_uri(wamp_state_t *s, const char *value);
+void wamp_error_arguments(wamp_state_t *s, const char *value);
+void wamp_error_arguments_param(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_error_argumentskw(wamp_state_t *s, const char *value);
+void wamp_error_argumentskw_param(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+static void wamp_error_close(wamp_state_t *s);
+
+void wamp_init(wamp_state_t *s)
+{
+	jsonsl_t jsn;
+
+	memset(s, 0, sizeof(wamp_state_t));
+	s->jsn_buf_pos = -1;
+
+	jsn = jsonsl_new((jsonsl_t)&s->jsn, JSN_NLEVELS);
+	jsn->data = s;
+	jsn->error_callback = wamp_error_callback;
+	jsn->action_callback = wamp_state_callback;
+	jsonsl_enable_all_callbacks(jsn);
+
+	s->router.s = s;
+	s->client.s = s;
+	s->broker.s = s;
+	s->dealer.s = s;
+	s->publisher.s = s;
+	s->subscriber.s = s;
+	s->caller.s = s;
+	s->callee.s = s;
+	s->param_handler = wamp_param_handler;
+
+	wamp_dealer_init(&s->dealer);
+}
+
+void wamp_put_msg(wamp_state_t *s, ECN_FBS_ID msg, ID wbsid)
+{
+	ECN_FBS_SSIZE_T len, pos;
+	uint8_t data;
+
+	s->wbsid = wbsid;
+
+	len = _ecn_fbs_get_datalen(msg);
+
+	for (pos = 0; pos < len; pos++) {
+		data = _ecn_fbs_peek(msg, pos);
+
+		if ((s->jsn_buf_pos >= 0) && (s->jsn_buf_pos < sizeof(s->jsn_buf)))
+			s->jsn_buf[s->jsn_buf_pos++] = data;
+		jsonsl_feed((jsonsl_t)s->jsn, &data, 1);
+	}
+}
+
+void wamp_state_callback(jsonsl_t jsn, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	wamp_state_t *s = (wamp_state_t *)jsn->data;
+	/*syslog(7, "@%5ld '%c' L%d %c%s",
+			jsn->pos,
+			*buf,
+			state->level,
+			action,
+			jsonsl_strtype(state->type));*/
+
+	switch (action) {
+	case JSONSL_ACTION_PUSH:
+		switch (state->type) {
+		case JSONSL_T_SPECIAL:
+			s->jsn_buf[0] = *buf;
+			s->jsn_buf_pos = 1;
+			break;
+		case JSONSL_T_STRING:
+		case JSONSL_T_HKEY:
+			s->jsn_buf_pos = 0;
+			break;
+		default:
+			s->jsn_buf_pos = -1;
+		}
+		break;
+	case JSONSL_ACTION_POP:
+		switch (state->type) {
+		case JSONSL_T_SPECIAL:
+		case JSONSL_T_STRING:
+		case JSONSL_T_HKEY:
+			s->jsn_buf_pos--;
+			if (s->jsn_buf_pos < sizeof(s->jsn_buf)) {
+				s->jsn_buf[s->jsn_buf_pos] = '\0';
+			}
+			break;
+		default:
+			s->jsn_buf[0] = '\0';
+			break;
+		}
+		s->jsn_buf_pos = -1;
+		break;
+	default:
+		s->jsn_buf_pos = -1;
+		break;
+	}
+
+	switch (s->state) {
+	case WAMP_PARSE_STATE_IDLE:
+		wamp_idle_parse_state(s, action, state, buf);
+		break;
+	case WAMP_PARSE_STATE_CODE_PUSH:
+		wamp_code_push_parse_state(s, action, state, buf);
+		break;
+	case WAMP_PARSE_STATE_CODE_POP:
+		wamp_code_pop_parse_state(s, action, state, buf);
+		break;
+	case WAMP_PARSE_STATE_ID_PUSH:
+		wamp_id_parse_state(s, action, state, buf);
+		break;
+	case WAMP_PARSE_STATE_LIST_PUSH:
+		wamp_list_parse_state(s, action, state, buf);
+		break;
+	case WAMP_PARSE_STATE_DICT_PUSH:
+		wamp_dict_parse_state(s, action, state, buf);
+		break;
+	case WAMP_PARSE_STATE_URI_PUSH:
+		wamp_uri_parse_state(s, action, state, buf);
+		break;
+	case WAMP_PARSE_STATE_INT_PUSH:
+		wamp_int_parse_state(s, action, state, buf);
+		break;
+	case WAMP_PARSE_STATE_STRING_PUSH:
+		wamp_string_parse_state(s, action, state, buf);
+		break;
+	case WAMP_PARSE_STATE_PARAM:
+		wamp_param_parse_state(s, action, state, buf);
+		break;
+	case WAMP_PARSE_STATE_NOMORE_PARAM:
+		wamp_nomore_param_parse_state(s, action, state, buf);
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+
+	if (s->state == WAMP_PARSE_STATE_ERROR) {
+		/* WAMPbZ[WÌÅã¾Á½ç */
+		if ((state->level == 1) && (action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_LIST)) {
+			s->message_close_handler(s);
+		}
+		else {
+			s->param_handler(s, JSONSL_ACTION_ERROR, s->prmst, NULL);
+		}
+		jsonsl_reset((jsonsl_t)s->jsn);
+		s->state = WAMP_PARSE_STATE_IDLE;
+	}
+}
+
+int wamp_error_callback(jsonsl_t jsn, jsonsl_error_t err,
+struct jsonsl_state_st *state, char *errat)
+{
+	return 0;
+}
+
+static void wamp_idle_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	/* WAMPbZ[WÌæª¾Á½ç */
+	if ((state->level == 1) && (action == JSONSL_ACTION_PUSH)
+		&& (state->type == JSONSL_T_LIST)) {
+		/* bZ[WR[hæ¾JnóÔÉÚé */
+		s->state = WAMP_PARSE_STATE_CODE_PUSH;
+	}
+}
+
+static void wamp_code_push_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	/* bZ[WR[hÌæ¾Jn */
+	if ((action == JSONSL_ACTION_PUSH)
+		&& (state->type == JSONSL_T_SPECIAL)) {
+		/* bZ[WR[hæ¾óÔÉÚé */
+		s->state = WAMP_PARSE_STATE_CODE_POP;
+	}
+	else
+		/* bZ[WR[hªæ¾Å«È¯êÎG[ */
+		s->state = WAMP_PARSE_STATE_ERROR;
+}
+
+static void wamp_code_pop_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	int code;
+	wamp_parse_state_t prsst = WAMP_PARSE_STATE_ERROR;
+
+	/* bZ[WR[hªæ¾Å« */
+	if ((action == JSONSL_ACTION_POP)
+		&& (state->type == JSONSL_T_SPECIAL)) {
+		/* bZ[WR[hðæ¾ */
+		code = atoi(s->jsn_buf);
+		switch (code) {
+			/* [HELLO, Realm|uri, Details|dict] */
+		case WAMP_CODE_HELLO:
+			wamp_router_hello(&s->router);
+			s->proc_handler = wamp_proc_hello_state;
+			s->message_close_handler = wamp_router_hello_close;
+			s->prmst = WAMP_PARAM_STATE_REALM_URI;
+			prsst = WAMP_PARSE_STATE_URI_PUSH;
+			break;
+			/* [WELCOME, Session|id, Details|dict] */
+		case WAMP_CODE_WELCOME:
+			wamp_client_welcome(&s->client);
+			s->proc_handler = wamp_proc_welcome_state;
+			s->message_close_handler = wamp_client_welcome_close;
+			s->prmst = WAMP_PARAM_STATE_SESSION_ID;
+			prsst = WAMP_PARSE_STATE_ID_PUSH;
+			break;
+			/* [ABORT, Details|dict, Reason|uri] */
+		case WAMP_CODE_ABORT:
+			wamp_client_abort(&s->client);
+			s->proc_handler = wamp_proc_abort_state;
+			s->message_close_handler = wamp_client_abort_close;
+			s->prmst = WAMP_PARAM_STATE_DETAILS_DICT;
+			prsst = WAMP_PARSE_STATE_DICT_PUSH;
+			break;
+			/* [CHALLENGE, AuthMethod|string, Extra|dict] */
+		case WAMP_CODE_CHALLENGE:
+			wamp_client_challenge(&s->client);
+			s->proc_handler = wamp_proc_challenge_state;
+			s->message_close_handler = wamp_client_challenge_close;
+			s->prmst = WAMP_PARAM_STATE_AUTHMETHOD_STRING;
+			prsst = WAMP_PARSE_STATE_STRING_PUSH;
+			break;
+			/* [AUTHENTICATE, Signature|string, Extra|dict] */
+		case WAMP_CODE_AUTHENTICATE:
+			wamp_router_authenticate(&s->router);
+			s->proc_handler = wamp_proc_authenticate_state;
+			s->message_close_handler = wamp_router_authenticate_close;
+			s->prmst = WAMP_PARAM_STATE_SIGNATURE_STRING;
+			prsst = WAMP_PARSE_STATE_STRING_PUSH;
+			break;
+			/* [GOODBYE, Details|dict, Reason|uri] */
+		case WAMP_CODE_GOODBYE:
+			wamp_router_goodbye(&s->router);
+			s->proc_handler = wamp_proc_goodbye_state;
+			s->message_close_handler = wamp_router_goodbye_close;
+			s->prmst = WAMP_PARAM_STATE_DETAILS_DICT;
+			prsst = WAMP_PARSE_STATE_DICT_PUSH;
+			break;
+			/* [ERROR, REQUEST.Type|int, REQUEST.Request|id, Details|dict, Error|uri, Arguments|list, ArgumentsKw|dict] */
+		case WAMP_CODE_ERROR:
+			wamp_error(s);
+			s->proc_handler = wamp_proc_error_state;
+			s->message_close_handler = wamp_error_close;
+			s->prmst = WAMP_PARAM_STATE_TYPE_INT;
+			prsst = WAMP_PARSE_STATE_INT_PUSH;
+			break;
+			/* [PUBLISH, Request|id, Options|dict, Topic|uri, Arguments|list, ArgumentsKw|dict] */
+		case WAMP_CODE_PUBLISH:
+			wamp_broker_publish(&s->broker);
+			s->proc_handler = wamp_proc_publish_state;
+			s->message_close_handler = wamp_broker_publish_close;
+			s->prmst = WAMP_PARAM_STATE_REQUEST_ID;
+			prsst = WAMP_PARSE_STATE_ID_PUSH;
+			break;
+			/* [PUBLISHED, PUBLISH.Request|id, Publication|id] */
+		case WAMP_CODE_PUBLISHED:
+			wamp_publisher_published(&s->publisher);
+			s->proc_handler = wamp_proc_published_state;
+			s->message_close_handler = wamp_publisher_published_close;
+			s->prmst = WAMP_PARAM_STATE_REQUEST_ID;
+			prsst = WAMP_PARSE_STATE_ID_PUSH;
+			break;
+			/* [SUBSCRIBE, Request|id, Options|dict, Topic|uri] */
+		case WAMP_CODE_SUBSCRIBE:
+			wamp_broker_subscribe(&s->broker);
+			s->proc_handler = wamp_proc_subscribe_state;
+			s->message_close_handler = wamp_broker_subscribe_close;
+			s->prmst = WAMP_PARAM_STATE_REQUEST_ID;
+			prsst = WAMP_PARSE_STATE_ID_PUSH;
+			break;
+			/* [SUBSCRIBED, SUBSCRIBE.Request|id, Subscription|id] */
+		case WAMP_CODE_SUBSCRIBED:
+			wamp_subscriber_subscribed(&s->subscriber);
+			s->proc_handler = wamp_proc_subscribed_state;
+			s->message_close_handler = wamp_subscriber_subscribed_close;
+			s->prmst = WAMP_PARAM_STATE_REQUEST_ID;
+			prsst = WAMP_PARSE_STATE_ID_PUSH;
+			break;
+			/* [UNSUBSCRIBE, Request|id, SUBSCRIBED.Subscription|id] */
+		case WAMP_CODE_UNSUBSCRIBE:
+			wamp_broker_unsubscribe(&s->broker);
+			s->proc_handler = wamp_proc_unsubscribe_state;
+			s->message_close_handler = wamp_broker_unsubscribe_close;
+			s->prmst = WAMP_PARAM_STATE_REQUEST_ID;
+			prsst = WAMP_PARSE_STATE_ID_PUSH;
+			break;
+			/* [UNSUBSCRIBED, UNSUBSCRIBE.Request|id] */
+		case WAMP_CODE_UNSUBSCRIBED:
+			wamp_subscriber_unsubscribed(&s->subscriber);
+			s->proc_handler = wamp_proc_unsubscribed_state;
+			s->message_close_handler = wamp_subscriber_unsubscribed_close;
+			s->prmst = WAMP_PARAM_STATE_REQUEST_ID;
+			prsst = WAMP_PARSE_STATE_ID_PUSH;
+			break;
+			/* [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict, PUBLISH.Arguments|list, PUBLISH.ArgumentsKw|dict] */
+		case WAMP_CODE_EVENT:
+			wamp_subscriber_event(&s->subscriber);
+			s->proc_handler = wamp_proc_event_state;
+			s->message_close_handler = wamp_subscriber_event_close;
+			s->prmst = WAMP_PARAM_STATE_SUBSCRIPTION_ID;
+			prsst = WAMP_PARSE_STATE_ID_PUSH;
+			break;
+			/* [CALL, Request|id, Options|dict, Procedure|uri, Arguments|list, ArgumentsKw|dict] */
+		case WAMP_CODE_CALL:
+			wamp_dealer_call(&s->dealer);
+			s->proc_handler = wamp_proc_call_state;
+			s->message_close_handler = wamp_dealer_call_close;
+			s->prmst = WAMP_PARAM_STATE_REQUEST_ID;
+			prsst = WAMP_PARSE_STATE_ID_PUSH;
+			break;
+			/* [CANCEL, CALL.Request|id, Options|dict] */
+		case WAMP_CODE_CANCEL:
+			wamp_dealer_cansel(&s->dealer);
+			s->proc_handler = wamp_proc_cancel_state;
+			s->message_close_handler = wamp_dealer_cansel_close;
+			s->prmst = WAMP_PARAM_STATE_REQUEST_ID;
+			prsst = WAMP_PARSE_STATE_ID_PUSH;
+			break;
+			/* [RESULT, CALL.Request|id, Details|dict, YIELD.Arguments|list, YIELD.ArgumentsKw|dict] */
+		case WAMP_CODE_RESULT:
+			wamp_caller_result(&s->caller);
+			s->proc_handler = wamp_proc_result_state;
+			s->message_close_handler = wamp_caller_result_close;
+			s->prmst = WAMP_PARAM_STATE_REQUEST_ID;
+			prsst = WAMP_PARSE_STATE_ID_PUSH;
+			break;
+			/* [REGISTER, Request|id, Options|dict, Procedure|uri] */
+		case WAMP_CODE_REGISTER:
+			wamp_dealer_register(&s->dealer);
+			s->proc_handler = wamp_proc_register_state;
+			s->message_close_handler = wamp_dealer_register_close;
+			s->prmst = WAMP_PARAM_STATE_REQUEST_ID;
+			prsst = WAMP_PARSE_STATE_ID_PUSH;
+			break;
+			/* [REGISTERED, REGISTER.Request|id, Registration|id] */
+		case WAMP_CODE_REGISTERED:
+			wamp_callee_registered(&s->callee);
+			s->proc_handler = wamp_proc_registered_state;
+			s->message_close_handler = wamp_callee_registered_close;
+			s->prmst = WAMP_PARAM_STATE_REQUEST_ID;
+			prsst = WAMP_PARSE_STATE_ID_PUSH;
+			break;
+			/* [UNREGISTER, Request|id, REGISTERED.Registration|id] */
+		case WAMP_CODE_UNREGISTER:
+			wamp_dealer_unregister(&s->dealer);
+			s->proc_handler = wamp_proc_unregister_state;
+			s->message_close_handler = wamp_dealer_unregister_close;
+			s->prmst = WAMP_PARAM_STATE_REQUEST_ID;
+			prsst = WAMP_PARSE_STATE_ID_PUSH;
+			break;
+			/* [UNREGISTERED, UNREGISTER.Request|id] */
+		case WAMP_CODE_UNREGISTERED:
+			wamp_callee_unregistered(&s->callee);
+			s->proc_handler = wamp_proc_unregistered_state;
+			s->message_close_handler = wamp_callee_unregistered_close;
+			s->prmst = WAMP_PARAM_STATE_REQUEST_ID;
+			prsst = WAMP_PARSE_STATE_ID_PUSH;
+			break;
+			/* [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict, CALL.Arguments|list, CALL.ArgumentsKw|dict] */
+		case WAMP_CODE_INVOCATION:
+			wamp_callee_invocation(&s->callee);
+			s->proc_handler = wamp_proc_invocation_state;
+			s->message_close_handler = wamp_callee_invocation_close;
+			s->prmst = WAMP_PARAM_STATE_REQUEST_ID;
+			prsst = WAMP_PARSE_STATE_ID_PUSH;
+			break;
+			/* [INTERRUPT, INVOCATION.Request|id, Options|dict] */
+		case WAMP_CODE_INTERRUPT:
+			wamp_callee_interrupt(&s->callee);
+			s->proc_handler = wamp_proc_interrupt_state;
+			s->message_close_handler = wamp_callee_interrupt_close;
+			s->prmst = WAMP_PARAM_STATE_REQUEST_ID;
+			prsst = WAMP_PARSE_STATE_ID_PUSH;
+			break;
+			/* [YIELD, INVOCATION.Request|id, Options|dict, Arguments|list, ArgumentsKw|dict] */
+		case WAMP_CODE_YIELD:
+			wamp_dealer_yield(&s->dealer);
+			s->proc_handler = wamp_proc_yield_state;
+			s->message_close_handler = wamp_dealer_yield_close;
+			s->prmst = WAMP_PARAM_STATE_REQUEST_ID;
+			prsst = WAMP_PARSE_STATE_ID_PUSH;
+			break;
+		default:
+			s->proc_handler = NULL;
+			break;
+		}
+
+		/* mÁÄ¢ébZ[WR[h¾Á½ç */
+		if (s->proc_handler != NULL) {
+			/* p[^æ¾óÔÉÚé */
+			s->code = (wamp_code_t)code;
+		}
+	}
+
+	/* bZ[WR[hªæ¾Å«È¯êÎG[ */
+	s->state = prsst;
+}
+
+static void wamp_id_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	/* bZ[WR[hÌæ¾Jn */
+	if ((action == JSONSL_ACTION_PUSH)
+		&& (state->type == JSONSL_T_SPECIAL)) {
+		s->param_handler(s, action, s->prmst, NULL);
+		/* bZ[WR[hæ¾óÔÉÚé */
+		s->state = WAMP_PARSE_STATE_PARAM;
+	}
+	else
+		/* bZ[WR[hªæ¾Å«È¯êÎG[ */
+		s->state = WAMP_PARSE_STATE_ERROR;
+}
+
+static void wamp_list_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	/* bZ[WR[hÌæ¾Jn */
+	if ((action == JSONSL_ACTION_PUSH)
+		&& (state->type == JSONSL_T_LIST)) {
+		s->param_handler(s, action, s->prmst, NULL);
+		/* bZ[WR[hæ¾óÔÉÚé */
+		s->state = WAMP_PARSE_STATE_PARAM;
+	}
+	else
+		/* bZ[WR[hªæ¾Å«È¯êÎG[ */
+		s->state = WAMP_PARSE_STATE_ERROR;
+}
+
+static void wamp_dict_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	/* bZ[WR[hÌæ¾Jn */
+	if ((action == JSONSL_ACTION_PUSH)
+		&& (state->type == JSONSL_T_OBJECT)) {
+		s->param_handler(s, action, s->prmst, NULL);
+		/* bZ[WR[hæ¾óÔÉÚé */
+		s->state = WAMP_PARSE_STATE_PARAM;
+	}
+	else
+		/* bZ[WR[hªæ¾Å«È¯êÎG[ */
+		s->state = WAMP_PARSE_STATE_ERROR;
+}
+
+static void wamp_uri_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	/* bZ[WR[hÌæ¾Jn */
+	if ((action == JSONSL_ACTION_PUSH)
+		&& (state->type == JSONSL_T_STRING)) {
+		s->param_handler(s, action, s->prmst, NULL);
+		/* bZ[WR[hæ¾óÔÉÚé */
+		s->state = WAMP_PARSE_STATE_PARAM;
+	}
+	else
+		/* bZ[WR[hªæ¾Å«È¯êÎG[ */
+		s->state = WAMP_PARSE_STATE_ERROR;
+}
+
+static void wamp_int_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	/* bZ[WR[hÌæ¾Jn */
+	if ((action == JSONSL_ACTION_PUSH)
+		&& (state->type == JSONSL_T_SPECIAL)) {
+		s->param_handler(s, action, s->prmst, NULL);
+		/* bZ[WR[hæ¾óÔÉÚé */
+		s->state = WAMP_PARSE_STATE_PARAM;
+	}
+	else
+		/* bZ[WR[hªæ¾Å«È¯êÎG[ */
+		s->state = WAMP_PARSE_STATE_ERROR;
+}
+
+static void wamp_string_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	/* bZ[WR[hÌæ¾Jn */
+	if ((action == JSONSL_ACTION_PUSH)
+		&& (state->type == JSONSL_T_STRING)) {
+		s->param_handler(s, action, s->prmst, NULL);
+		/* bZ[WR[hæ¾óÔÉÚé */
+		s->state = WAMP_PARSE_STATE_PARAM;
+	}
+	else
+		/* bZ[WR[hªæ¾Å«È¯êÎG[ */
+		s->state = WAMP_PARSE_STATE_ERROR;
+}
+
+static void wamp_param_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	/* R[h²ÆÌðÀs */
+	s->proc_handler(s, action, state, buf);
+
+	/* WAMPbZ[WÌö¾Á½ç */
+	if ((state->level == 1) && (action == JSONSL_ACTION_POP)
+		&& (state->type == JSONSL_T_LIST)) {
+		s->prmst = WAMP_PARAM_STATE_NONE;
+		s->message_close_handler(s);
+		jsonsl_reset((jsonsl_t)s->jsn);
+		/* Ò@óÔÉÚé */
+		s->state = WAMP_PARSE_STATE_IDLE;
+	}
+}
+
+static void wamp_nomore_param_parse_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	/* WAMPbZ[WÌö¾Á½ç */
+	if ((state->level == 1) && (action == JSONSL_ACTION_POP)
+		&& (state->type == JSONSL_T_LIST)) {
+		s->message_close_handler(s);
+		jsonsl_reset((jsonsl_t)s->jsn);
+		/* Ò@óÔÉÚé */
+		s->state = WAMP_PARSE_STATE_IDLE;
+	}
+	else
+		/* bZ[WR[hªæ¾Å«È¯êÎG[ */
+		s->state = WAMP_PARSE_STATE_ERROR;
+}
+
+/*
+ * [HELLO, Realm|uri, Details|dict]
+ */
+static void wamp_proc_hello_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_REALM_URI:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_STRING)) {
+			wamp_router_hello_realm(&s->router, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_DETAILS_DICT;
+			s->state = WAMP_PARSE_STATE_DICT_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_DETAILS_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_router_hello_details(&s->router);
+				s->prmst = WAMP_PARAM_STATE_NONE;
+				s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_router_hello_details_param(&s->router, action, state, buf);
+		}
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [WELCOME, Session|id, Details|dict]
+ */
+static void wamp_proc_welcome_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_SESSION_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_client_welcome_client_id(&s->client, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_DETAILS_DICT;
+			s->state = WAMP_PARSE_STATE_DICT_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_DETAILS_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_client_welcome_details(&s->client, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_NONE;
+				s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_client_welcome_details_param(&s->client, action, state, buf);
+		}
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [ABORT, Details|dict, Reason|uri]
+ */
+static void wamp_proc_abort_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_DETAILS_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_client_abort_details(&s->client, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_REASON_URI;
+				s->state = WAMP_PARSE_STATE_URI_PUSH;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_client_abort_details_param(&s->client, action, state, buf);
+		}
+		break;
+	case WAMP_PARAM_STATE_REASON_URI:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_STRING)) {
+			wamp_client_abort_reason(&s->client, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_NONE;
+			s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [CHALLENGE, AuthMethod|string, Extra|dict]
+ */
+static void wamp_proc_challenge_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_AUTHMETHOD_STRING:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_STRING)) {
+			wamp_client_challenge_authmethod(&s->client, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_EXTRA_DICT;
+			s->state = WAMP_PARSE_STATE_DICT_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_EXTRA_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_client_challenge_extra(&s->client, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_NONE;
+				s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_client_challenge_extra_param(&s->client, action, state, buf);
+		}
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [AUTHENTICATE, Signature|string, Extra|dict]
+ */
+static void wamp_proc_authenticate_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_SIGNATURE_STRING:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_STRING)) {
+			wamp_router_authenticate_signature(&s->router, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_EXTRA_DICT;
+			s->state = WAMP_PARSE_STATE_DICT_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_EXTRA_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_router_authenticate_extra(&s->router, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_NONE;
+				s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_router_authenticate_extra_param(&s->router, action, state, buf);
+		}
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [GOODBYE, Details|dict, Reason|uri]
+ */
+static void wamp_proc_goodbye_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_DETAILS_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_router_goodbye_details(&s->router);
+				s->prmst = WAMP_PARAM_STATE_REASON_URI;
+				s->state = WAMP_PARSE_STATE_URI_PUSH;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_router_goodbye_details_param(&s->router, action, state, buf);
+		}
+		break;
+	case WAMP_PARAM_STATE_REASON_URI:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_STRING)) {
+			wamp_router_goodbye_reason(&s->router, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_NONE;
+			s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [ERROR, REQUEST.Type|int, REQUEST.Request|id, Details|dict, Error|uri, Arguments|list, ArgumentsKw|dict]
+ */
+static void wamp_proc_error_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_TYPE_INT:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_error_type(s, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_REQUEST_ID;
+			s->state = WAMP_PARSE_STATE_ID_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_REQUEST_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_error_request_id(s, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_DETAILS_DICT;
+			s->state = WAMP_PARSE_STATE_DICT_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_DETAILS_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_error_details(s, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_ERROR_URI;
+				s->state = WAMP_PARSE_STATE_URI_PUSH;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_error_details_param(s, action, state, buf);
+		}
+		break;
+	case WAMP_PARAM_STATE_ERROR_URI:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_STRING)) {
+			wamp_error_uri(s, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_ARGUMENTS_LIST;
+			s->state = WAMP_PARSE_STATE_LIST_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_ARGUMENTS_LIST:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_LIST)) {
+				wamp_error_arguments(s, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_ARGUMENTSKW_DICT;
+				s->state = WAMP_PARSE_STATE_DICT_PUSH;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_error_arguments_param(s, action, state, buf);
+		}
+		break;
+	case WAMP_PARAM_STATE_ARGUMENTSKW_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_error_argumentskw(s, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_NONE;
+				s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_error_argumentskw_param(s, action, state, buf);
+		}
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [PUBLISH, Request|id, Options|dict, Topic|uri, Arguments|list, ArgumentsKw|dict]
+ */
+static void wamp_proc_publish_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_REQUEST_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_broker_publish_request_id(&s->broker, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_OPTIONS_DICT;
+			s->state = WAMP_PARSE_STATE_DICT_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_OPTIONS_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_broker_publish_options(&s->broker, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_TOPIC_URI;
+				s->state = WAMP_PARSE_STATE_URI_PUSH;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_broker_publish_options_param(&s->broker, action, state, buf);
+		}
+		break;
+	case WAMP_PARAM_STATE_TOPIC_URI:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_STRING)) {
+			wamp_broker_publish_topic(&s->broker, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_ARGUMENTS_LIST;
+			s->state = WAMP_PARSE_STATE_LIST_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_ARGUMENTS_LIST:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_LIST)) {
+				wamp_broker_publish_arguments(&s->broker, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_ARGUMENTSKW_DICT;
+				s->state = WAMP_PARSE_STATE_DICT_PUSH;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_broker_publish_arguments_param(&s->broker, action, state, buf);
+		}
+		break;
+	case WAMP_PARAM_STATE_ARGUMENTSKW_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_broker_publish_argumentskw(&s->broker, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_NONE;
+				s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_broker_publish_argumentskw_param(&s->broker, action, state, buf);
+		}
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [PUBLISHED, PUBLISH.Request|id, Publication|id]
+ */
+static void wamp_proc_published_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_REQUEST_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_publisher_published_request_id(&s->publisher, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_PUBLICATION_ID;
+			s->state = WAMP_PARSE_STATE_ID_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_PUBLICATION_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_publisher_published_publication_id(&s->publisher, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_NONE;
+			s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [SUBSCRIBE, Request|id, Options|dict, Topic|uri]
+ */
+static void wamp_proc_subscribe_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_REQUEST_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_broker_subscribe_request_id(&s->broker, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_OPTIONS_DICT;
+			s->state = WAMP_PARSE_STATE_DICT_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_OPTIONS_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_broker_subscribe_options(&s->broker);
+				s->prmst = WAMP_PARAM_STATE_TOPIC_URI;
+				s->state = WAMP_PARSE_STATE_URI_PUSH;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_broker_subscribe_options_param(&s->broker, action, state, buf);
+		}
+		break;
+	case WAMP_PARAM_STATE_TOPIC_URI:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_STRING)) {
+			wamp_broker_subscribe_topic(&s->broker, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_NONE;
+			s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [SUBSCRIBED, SUBSCRIBE.Request|id, Subscription|id]
+ */
+static void wamp_proc_subscribed_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_REQUEST_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_subscriber_subscribed_request_id(&s->subscriber, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_SUBSCRIPTION_ID;
+			s->state = WAMP_PARSE_STATE_ID_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_SUBSCRIPTION_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_subscriber_subscribed_subscription_id(&s->subscriber, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_NONE;
+			s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [UNSUBSCRIBE, Request|id, SUBSCRIBED.Subscription|id]
+ */
+static void wamp_proc_unsubscribe_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_REQUEST_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_broker_unsubscribe_request_id(&s->broker, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_SUBSCRIPTION_ID;
+			s->state = WAMP_PARSE_STATE_ID_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_SUBSCRIPTION_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_broker_unsubscribe_subscription_id(&s->broker, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_NONE;
+			s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [UNSUBSCRIBED, UNSUBSCRIBE.Request|id]
+ */
+static void wamp_proc_unsubscribed_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_REQUEST_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_subscriber_unsubscribed_request_id(&s->subscriber, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_NONE;
+			s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict, PUBLISH.Arguments|list, PUBLISH.ArgumentsKw|dict]
+ */
+static void wamp_proc_event_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_SUBSCRIPTION_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_subscriber_event_subscription_id(&s->subscriber, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_PUBLICATION_ID;
+			s->state = WAMP_PARSE_STATE_ID_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_PUBLICATION_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_subscriber_event_publication_id(&s->subscriber, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_DETAILS_DICT;
+			s->state = WAMP_PARSE_STATE_DICT_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_DETAILS_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_subscriber_event_details(&s->subscriber, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_ARGUMENTS_LIST;
+				s->state = WAMP_PARSE_STATE_LIST_PUSH;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_subscriber_event_details_param(&s->subscriber, action, state, buf);
+		}
+		break;
+	case WAMP_PARAM_STATE_ARGUMENTS_LIST:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_LIST)) {
+				wamp_subscriber_event_arguments(&s->subscriber, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_ARGUMENTSKW_DICT;
+				s->state = WAMP_PARSE_STATE_DICT_PUSH;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_subscriber_event_arguments_param(&s->subscriber, action, state, buf);
+		}
+		break;
+	case WAMP_PARAM_STATE_ARGUMENTSKW_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_subscriber_event_argumentskw(&s->subscriber, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_NONE;
+				s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_subscriber_event_argumentskw_param(&s->subscriber, action, state, buf);
+		}
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [CALL, Request|id, Options|dict, Procedure|uri, Arguments|list, ArgumentsKw|dict]
+ */
+static void wamp_proc_call_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_REQUEST_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_dealer_call_request_id(&s->dealer, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_OPTIONS_DICT;
+			s->state = WAMP_PARSE_STATE_DICT_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_OPTIONS_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_dealer_call_options(&s->dealer, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_PROCEDURE_URI;
+				s->state = WAMP_PARSE_STATE_URI_PUSH;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_dealer_call_options_param(&s->dealer, action, state, buf);
+		}
+		break;
+	case WAMP_PARAM_STATE_PROCEDURE_URI:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_STRING)) {
+			wamp_dealer_call_procedure(&s->dealer, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_ARGUMENTS_LIST;
+			s->state = WAMP_PARSE_STATE_LIST_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_ARGUMENTS_LIST:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_LIST)) {
+				wamp_dealer_call_arguments(&s->dealer, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_ARGUMENTSKW_DICT;
+				s->state = WAMP_PARSE_STATE_DICT_PUSH;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_dealer_call_argumentskw_param(&s->dealer, action, state, buf);
+		}
+		break;
+	case WAMP_PARAM_STATE_ARGUMENTSKW_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_dealer_call_argumentskw(&s->dealer, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_NONE;
+				s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_dealer_call_argumentskw_param(&s->dealer, action, state, buf);
+		}
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [CANCEL, CALL.Request|id, Options|dict]
+ */
+static void wamp_proc_cancel_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_REQUEST_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_dealer_cansel_request_id(&s->dealer, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_OPTIONS_DICT;
+			s->state = WAMP_PARSE_STATE_DICT_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_OPTIONS_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_dealer_cansel_options(&s->dealer, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_NONE;
+				s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_dealer_cansel_options_param(&s->dealer, action, state, buf);
+		}
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [RESULT, CALL.Request|id, Details|dict, YIELD.Arguments|list, YIELD.ArgumentsKw|dict]
+ */
+static void wamp_proc_result_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_REQUEST_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_caller_result_request_id(&s->caller, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_DETAILS_DICT;
+			s->state = WAMP_PARSE_STATE_DICT_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_DETAILS_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_caller_result_details(&s->caller, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_ARGUMENTS_LIST;
+				s->state = WAMP_PARSE_STATE_LIST_PUSH;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_caller_result_details_param(&s->caller, action, state, buf);
+		}
+		break;
+	case WAMP_PARAM_STATE_ARGUMENTS_LIST:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_LIST)) {
+				wamp_caller_result_arguments(&s->caller, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_ARGUMENTSKW_DICT;
+				s->state = WAMP_PARSE_STATE_DICT_PUSH;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_caller_result_arguments_param(&s->caller, action, state, buf);
+		}
+		break;
+	case WAMP_PARAM_STATE_ARGUMENTSKW_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_caller_result_argumentskw(&s->caller, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_NONE;
+				s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_caller_result_argumentskw_param(&s->caller, action, state, buf);
+		}
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [REGISTER, Request|id, Options|dict, Procedure|uri]
+ */
+static void wamp_proc_register_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_REQUEST_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_dealer_register_request_id(&s->dealer, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_OPTIONS_DICT;
+			s->state = WAMP_PARSE_STATE_DICT_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_OPTIONS_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_dealer_register_options(&s->dealer, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_PROCEDURE_URI;
+				s->state = WAMP_PARSE_STATE_URI_PUSH;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_dealer_register_options_param(&s->dealer, action, state, buf);
+		}
+		break;
+	case WAMP_PARAM_STATE_PROCEDURE_URI:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_STRING)) {
+			wamp_dealer_register_procedure(&s->dealer, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_NONE;
+			s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [REGISTERED, REGISTER.Request|id, Registration|id]
+ */
+static void wamp_proc_registered_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_REQUEST_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_callee_registered_request_id(&s->callee, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_REGISTRATION_ID;
+			s->state = WAMP_PARSE_STATE_ID_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_REGISTRATION_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_callee_registered_registration_id(&s->callee, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_NONE;
+			s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [UNREGISTER, Request|id, REGISTERED.Registration|id]
+ */
+static void wamp_proc_unregister_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_REQUEST_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_dealer_unregister_request_id(&s->dealer, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_REGISTRATION_ID;
+			s->state = WAMP_PARSE_STATE_ID_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_REGISTRATION_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_dealer_unregister_registration_id(&s->dealer, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_NONE;
+			s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [UNREGISTERED, UNREGISTER.Request|id]
+ */
+static void wamp_proc_unregistered_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_REQUEST_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_callee_unregistered_request_id(&s->callee, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_NONE;
+			s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict, CALL.Arguments|list, CALL.ArgumentsKw|dict]
+ */
+static void wamp_proc_invocation_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_REQUEST_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_callee_invocation_request_id(&s->callee, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_REGISTRATION_ID;
+			s->state = WAMP_PARSE_STATE_ID_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_REGISTRATION_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_callee_invocation_registration_id(&s->callee, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_DETAILS_DICT;
+			s->state = WAMP_PARSE_STATE_DICT_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_DETAILS_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_callee_invocation_details(&s->callee, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_ARGUMENTS_LIST;
+				s->state = WAMP_PARSE_STATE_LIST_PUSH;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_callee_invocation_details_param(&s->callee, action, state, buf);
+		}
+		break;
+	case WAMP_PARAM_STATE_ARGUMENTS_LIST:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_LIST)) {
+				wamp_callee_invocation_arguments(&s->callee, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_ARGUMENTSKW_DICT;
+				s->state = WAMP_PARSE_STATE_DICT_PUSH;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_callee_invocation_arguments_param(&s->callee, action, state, buf);
+		}
+		break;
+	case WAMP_PARAM_STATE_ARGUMENTSKW_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_callee_invocation_argumentskw(&s->callee, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_NONE;
+				s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_callee_invocation_argumentskw_param(&s->callee, action, state, buf);
+		}
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [INTERRUPT, INVOCATION.Request|id, Options|dict]
+ */
+static void wamp_proc_interrupt_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_REQUEST_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_callee_interrupt_request_id(&s->callee, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_OPTIONS_DICT;
+			s->state = WAMP_PARSE_STATE_DICT_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_OPTIONS_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_callee_interrupt_options(&s->callee, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_NONE;
+				s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_callee_interrupt_options_param(&s->callee, action, state, buf);
+		}
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+/*
+ * [YIELD, INVOCATION.Request|id, Options|dict, Arguments|list, ArgumentsKw|dict]
+ */
+static void wamp_proc_yield_state(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	switch (s->prmst) {
+	case WAMP_PARAM_STATE_REQUEST_ID:
+		if ((action == JSONSL_ACTION_POP)
+			&& (state->type == JSONSL_T_SPECIAL)) {
+			wamp_dealer_yield_request_id(&s->dealer, s->jsn_buf);
+			s->prmst = WAMP_PARAM_STATE_OPTIONS_DICT;
+			s->state = WAMP_PARSE_STATE_DICT_PUSH;
+		}
+		else
+			s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	case WAMP_PARAM_STATE_OPTIONS_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_dealer_yield_options(&s->dealer, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_ARGUMENTS_LIST;
+				s->state = WAMP_PARSE_STATE_LIST_PUSH;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_dealer_yield_options_param(&s->dealer, action, state, buf);
+		}
+		break;
+	case WAMP_PARAM_STATE_ARGUMENTS_LIST:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_LIST)) {
+				wamp_dealer_yield_arguments(&s->dealer, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_ARGUMENTSKW_DICT;
+				s->state = WAMP_PARSE_STATE_DICT_PUSH;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_dealer_yield_arguments_param(&s->dealer, action, state, buf);
+		}
+		break;
+	case WAMP_PARAM_STATE_ARGUMENTSKW_DICT:
+		if (state->level == 2) {
+			if ((action == JSONSL_ACTION_POP)
+				&& (state->type == JSONSL_T_OBJECT)) {
+				wamp_dealer_yield_argumentskw(&s->dealer, s->jsn_buf);
+				s->prmst = WAMP_PARAM_STATE_NONE;
+				s->state = WAMP_PARSE_STATE_NOMORE_PARAM;
+			}
+			else
+				s->state = WAMP_PARSE_STATE_ERROR;
+		}
+		else {
+			wamp_dealer_yield_argumentskw_param(&s->dealer, action, state, buf);
+		}
+		break;
+	default:
+		s->state = WAMP_PARSE_STATE_ERROR;
+		break;
+	}
+}
+
+void wamp_error(wamp_state_t *s)
+{
+}
+
+void wamp_error_type(wamp_state_t *s, const char *value)
+{
+}
+
+void wamp_error_request_id(wamp_state_t *s, const char *value)
+{
+}
+
+void wamp_error_details(wamp_state_t *s, const char *value)
+{
+}
+
+void wamp_error_details_param(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_error_uri(wamp_state_t *s, const char *value)
+{
+}
+
+void wamp_error_arguments(wamp_state_t *s, const char *value)
+{
+}
+
+void wamp_error_arguments_param(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_error_argumentskw(wamp_state_t *s, const char *value)
+{
+}
+
+void wamp_error_argumentskw_param(wamp_state_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+static void wamp_error_close(wamp_state_t *s)
+{
+}
+
+static void wamp_param_handler(struct wamp_state *s, jsonsl_action_t action,
+	wamp_param_state_t param, const char *value)
+{
+}
+
+ER wamp_send_error_res(struct wamp_state *s, wamp_code_t code, int requestId, const char *error)
+{
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0;
+	ER ret;
+
+	ret = _ecn_fbs_cre(1, &buf);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+		return ret;
+	}
+
+	ret = fbs_printf(buf, &pos, "[8,%d,%d,{},\"%s\"]", (int)code, requestId, error);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return ret;
+	}
+
+	return main_send_message(buf, s->wbsid);
+}
Index: uKadecot/trunk/kadecot/wamp.h
===================================================================
--- uKadecot/trunk/kadecot/wamp.h	(revision 101)
+++ uKadecot/trunk/kadecot/wamp.h	(revision 101)
@@ -0,0 +1,174 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#ifndef WAMP_H
+#define WAMP_H
+
+#include "jsonsl.h"
+#include "echonet_fbs.h"
+#include "wamp_router.h"
+#include "wamp_client.h"
+#include "wamp_broker.h"
+#include "wamp_publisher.h"
+#include "wamp_subscriber.h"
+#include "wamp_dealer.h"
+#include "wamp_caller.h"
+#include "wamp_callee.h"
+
+#define JSN_NLEVELS 10
+
+/* p[XG[ */
+extern const char parse_error[];
+/* ³øÈNGXg */
+extern const char invalid_request[];
+/* ¶ÝµÈ¢\bh */
+extern const char method_not_found[];
+/* echo objectª¶ÝµÈ¢,@JSONArray`®ÉÈÁÄ¢È¢ */
+extern const char invalid_params[];
+/* ^CAEg­¶, R[obNª@null*/
+extern const char internal_error[];
+
+typedef enum wamp_code{
+	WAMP_CODE_NONE = 0,
+	WAMP_CODE_HELLO = 1,
+	WAMP_CODE_WELCOME = 2,
+	WAMP_CODE_ABORT = 3,
+	WAMP_CODE_CHALLENGE = 4,
+	WAMP_CODE_AUTHENTICATE = 5,
+	WAMP_CODE_GOODBYE = 6,
+	WAMP_CODE_ERROR = 8,
+	WAMP_CODE_PUBLISH = 16,
+	WAMP_CODE_PUBLISHED = 17,
+	WAMP_CODE_SUBSCRIBE = 32,
+	WAMP_CODE_SUBSCRIBED = 33,
+	WAMP_CODE_UNSUBSCRIBE = 34,
+	WAMP_CODE_UNSUBSCRIBED = 35,
+	WAMP_CODE_EVENT = 36,
+	WAMP_CODE_CALL = 48,
+	WAMP_CODE_CANCEL = 49,
+	WAMP_CODE_RESULT = 50,
+	WAMP_CODE_REGISTER = 64,
+	WAMP_CODE_REGISTERED = 65,
+	WAMP_CODE_UNREGISTER = 66,
+	WAMP_CODE_UNREGISTERED = 67,
+	WAMP_CODE_INVOCATION = 68,
+	WAMP_CODE_INTERRUPT = 69,
+	WAMP_CODE_YIELD = 70,
+} wamp_code_t;
+
+typedef enum wamp_parse_state{
+	WAMP_PARSE_STATE_IDLE,
+	WAMP_PARSE_STATE_CODE_PUSH,
+	WAMP_PARSE_STATE_CODE_POP,
+	WAMP_PARSE_STATE_ID_PUSH,
+	WAMP_PARSE_STATE_LIST_PUSH,
+	WAMP_PARSE_STATE_DICT_PUSH,
+	WAMP_PARSE_STATE_URI_PUSH,
+	WAMP_PARSE_STATE_INT_PUSH,
+	WAMP_PARSE_STATE_STRING_PUSH,
+	WAMP_PARSE_STATE_PARAM,
+	WAMP_PARSE_STATE_NOMORE_PARAM,
+	WAMP_PARSE_STATE_ERROR
+} wamp_parse_state_t;
+
+typedef enum wamp_param_state
+{
+	WAMP_PARAM_STATE_NONE,
+	WAMP_PARAM_STATE_SESSION_ID,
+	WAMP_PARAM_STATE_REQUEST_ID,
+	WAMP_PARAM_STATE_REGISTRATION_ID,
+	WAMP_PARAM_STATE_SUBSCRIPTION_ID,
+	WAMP_PARAM_STATE_PUBLICATION_ID,
+	WAMP_PARAM_STATE_ARGUMENTS_LIST,
+	WAMP_PARAM_STATE_OPTIONS_DICT,
+	WAMP_PARAM_STATE_DETAILS_DICT,
+	WAMP_PARAM_STATE_ARGUMENTSKW_DICT,
+	WAMP_PARAM_STATE_EXTRA_DICT,
+	WAMP_PARAM_STATE_REALM_URI,
+	WAMP_PARAM_STATE_PROCEDURE_URI,
+	WAMP_PARAM_STATE_REASON_URI,
+	WAMP_PARAM_STATE_TOPIC_URI,
+	WAMP_PARAM_STATE_ERROR_URI,
+	WAMP_PARAM_STATE_TYPE_INT,
+	WAMP_PARAM_STATE_AUTHMETHOD_STRING,
+	WAMP_PARAM_STATE_SIGNATURE_STRING,
+} wamp_param_state_t;
+
+typedef void (* wamp_proc_handler_t)(struct wamp_state *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+
+typedef void (*wamp_param_handler_t)(struct wamp_state *s, jsonsl_action_t action,
+	wamp_param_state_t param, const char *value);
+
+typedef void (*wamp_message_close_handler_t)(struct wamp_state *s);
+
+typedef struct wamp_state
+{
+	char jsn[sizeof(struct jsonsl_st) + ((JSN_NLEVELS - 1) * sizeof(struct jsonsl_state_st))];
+	wamp_parse_state_t state;
+	wamp_param_state_t prmst;
+	wamp_code_t code;
+	wamp_proc_handler_t proc_handler;
+	wamp_param_handler_t param_handler;
+	wamp_message_close_handler_t message_close_handler;
+	ID wbsid;
+	char jsn_buf[80];
+	int jsn_buf_pos;
+	wamp_router_t router;
+	wamp_client_t client;
+	wamp_broker_t broker;
+	wamp_dealer_t dealer;
+	wamp_publisher_t publisher;
+	wamp_subscriber_t subscriber;
+	wamp_caller_t caller;
+	wamp_callee_t callee;
+} wamp_state_t;
+
+void wamp_init(wamp_state_t *s);
+void wamp_put_msg(wamp_state_t *s, ECN_FBS_ID msg, ID wbsid);
+void wamp_state_callback(jsonsl_t jsn, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+int wamp_error_callback(jsonsl_t jsn, jsonsl_error_t err,
+	struct jsonsl_state_st *state, char *errat);
+ER wamp_send_error_res(struct wamp_state *s, wamp_code_t code,
+	int requestId, const char *error);
+
+#endif  /* WAMP_H */
Index: uKadecot/trunk/kadecot/wamp_broker.c
===================================================================
--- uKadecot/trunk/kadecot/wamp_broker.c	(revision 101)
+++ uKadecot/trunk/kadecot/wamp_broker.c	(revision 101)
@@ -0,0 +1,377 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#include <string.h>
+#include <stdlib.h>
+#include "wamp.h"
+#include "wamp_broker.h"
+#include "main.h"
+#include "fbs_string.h"
+#include "kadecot_names.h"
+#include "kernel_cfg.h"
+
+#ifndef _MSC_VER
+#ifndef strncpy_s
+#define strncpy_s(dst, dsz, src, sz) strncpy(dst, src, sz)
+#endif
+
+#ifndef strcpy_s
+#define strcpy_s(s1, s1m, s2) strcpy(s1, s2)
+#endif
+#endif
+
+static wamp_subscription_t *wamp_broker_new_subscription(wamp_broker_t *broker);
+static void wamp_broker_delete_subscription(wamp_broker_t *broker,
+	wamp_subscription_t *subscription);
+
+void wamp_broker_subscribe(wamp_broker_t *broker)
+{
+	broker->current_subscription = NULL;
+}
+
+void wamp_broker_subscribe_request_id(wamp_broker_t *broker, const char *value)
+{
+	broker->requestId = atoi(value);
+}
+
+void wamp_broker_subscribe_options_param(wamp_broker_t *broker, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_broker_subscribe_options(wamp_broker_t *broker)
+{
+}
+
+void wamp_broker_subscribe_topic(wamp_broker_t *broker, const char *value)
+{
+	static const char topic[] = "com.sonycsl.kadecot.echonetlite.topic.";
+	char *pos, *end;
+	wamp_subscription_t *subscription;
+	uint16_t devType;
+	uint8_t epc;
+
+	if(strncmp(topic, value, sizeof(topic) - 1) != 0)
+		return;
+
+	subscription = wamp_broker_new_subscription(broker);
+
+	subscription->deviceName[0] = '\0';
+	strcpy_s(subscription->deviceName, sizeof(subscription->deviceName), &value[sizeof(topic) - 1]);
+	subscription->deviceName[sizeof(subscription->deviceName) - 1] = '\0';
+
+	end = &subscription->deviceName[sizeof(subscription->deviceName)];
+	for(pos = subscription->deviceName; pos < end; pos++){
+		if(*pos != '.')
+			continue;
+
+		*pos = '\0';
+		subscription->proprtyName = pos + 1;
+		break;
+	}
+
+	devType = kadecot_names_get_device_type(subscription->deviceName,
+		strnlen(subscription->deviceName, sizeof(subscription->deviceName)));
+	if(devType == 0){
+		wamp_broker_delete_subscription(broker, subscription);
+		return;
+	}
+
+	epc = kadecot_names_get_property_code(subscription->proprtyName,
+		strnlen(subscription->proprtyName, subscription->proprtyName - subscription->deviceName), devType);
+	if(epc == 0){
+		wamp_broker_delete_subscription(broker, subscription);
+		return;
+	}
+
+	subscription->devType = devType;
+	subscription->epc = epc;
+
+	broker->current_subscription = subscription;
+}
+
+static void wamp_broker_subscribe_res(wamp_broker_t *broker);
+
+void wamp_broker_subscribe_close(struct wamp_state *s)
+{
+	wamp_broker_t *broker = &s->broker;
+	ER ret;
+
+	broker->error = internal_error;
+
+	// send RESULT
+	wamp_broker_subscribe_res(broker);
+
+	if (broker->error != NULL){
+		ret = wamp_send_error_res(s, WAMP_CODE_SUBSCRIBE, broker->requestId, broker->error);
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "wamp_broker_subscribe_close() : wamp_send_error_res() result = %d", ret);
+		}
+		broker->error = NULL;
+	}
+}
+
+static void wamp_broker_subscribe_res(wamp_broker_t *broker)
+{
+	struct wamp_state *s = broker->s;
+	wamp_subscription_t *subscription = broker->current_subscription;
+	// send SUBSCRIBED or ERROR
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0;
+	ER ret;
+
+	if ((subscription == NULL) || (subscription->devType == 0) || (subscription->epc == 0))
+		return;
+
+	ret = _ecn_fbs_cre(1, &buf);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "[33,%d,%d]", broker->requestId, subscription->subscriptionId);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_send_message(buf, s->wbsid);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_broker_subscribe_close() : main_send_message() result = %d", ret);
+		return;
+	}
+
+	broker->error = NULL;
+}
+
+void wamp_broker_unsubscribe(wamp_broker_t *broker)
+{
+	broker->current_subscription = NULL;
+}
+
+void wamp_broker_unsubscribe_request_id(wamp_broker_t *broker, const char *value)
+{
+	broker->requestId = atoi(value);
+}
+
+void wamp_broker_unsubscribe_subscription_id(wamp_broker_t *broker, const char *value)
+{
+	int subscriptionId = atoi(value);
+	wamp_subscription_t *pos, *end = &broker->subscriptions[sizeof(broker->subscriptions) / sizeof(broker->subscriptions[0])];
+
+	for(pos = broker->subscriptions; pos < end; pos++){
+		if(pos->subscriptionId != subscriptionId)
+			continue;
+
+		broker->current_subscription = pos;
+		break;
+	}
+}
+
+void wamp_broker_unsubscribe_close(struct wamp_state *s)
+{
+	wamp_broker_t *broker = &s->broker;
+	wamp_subscription_t *subscription = broker->current_subscription;
+	// send UNSUBSCRIBED or ERROR
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0;
+	ER ret;
+
+	if(subscription == NULL)
+		return;
+
+	wamp_broker_delete_subscription(broker, subscription);
+
+	ret = _ecn_fbs_cre(1, &buf);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "[35,%d,%d]", broker->requestId, subscription->subscriptionId);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_send_message(buf, s->wbsid);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_broker_unsubscribe_close() : main_send_message() result = %d", ret);
+	}
+}
+
+void wamp_broker_publish(wamp_broker_t *broker)
+{
+}
+
+void wamp_broker_publish_request_id(wamp_broker_t *s, const char *value)
+{
+}
+
+void wamp_broker_publish_options(wamp_broker_t *s, const char *value)
+{
+}
+
+void wamp_broker_publish_options_param(wamp_broker_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_broker_publish_topic(wamp_broker_t *s, const char *value)
+{
+}
+
+void wamp_broker_publish_arguments(wamp_broker_t *s, const char *value)
+{
+}
+
+void wamp_broker_publish_arguments_param(wamp_broker_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_broker_publish_argumentskw(wamp_broker_t *s, const char *value)
+{
+}
+
+void wamp_broker_publish_argumentskw_param(wamp_broker_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_broker_publish_close(struct wamp_state *s)
+{
+}
+
+static wamp_subscription_t *wamp_broker_new_subscription(wamp_broker_t *broker)
+{
+	wamp_subscription_t *pos, *end = &broker->subscriptions[sizeof(broker->subscriptions) / sizeof(broker->subscriptions[0])];
+
+	for(pos = broker->subscriptions; pos < end; pos++){
+		if(pos->subscriptionId != 0)
+			continue;
+
+		broker->subscriptionId++;
+		if(broker->subscriptionId == 0)
+			broker->subscriptionId++;
+
+		pos->subscriptionId = broker->subscriptionId;
+		return pos;
+	}
+
+	return NULL;
+}
+
+static void wamp_broker_delete_subscription(wamp_broker_t *broker,
+	wamp_subscription_t *subscription)
+{
+	memset(subscription, 0, sizeof(*subscription));
+}
+
+void wamp_broker_publish_inf(wamp_broker_t *broker, uint16_t pubId, int deviceId,
+	uint16_t devType, uint8_t epc, uint8_t pdc, uint8_t *p_edt)
+{
+	struct wamp_state *s = broker->s;
+	wamp_subscription_t *subscription, *end = &broker->subscriptions[sizeof(broker->subscriptions) / sizeof(broker->subscriptions[0])];
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0, start;
+	ER ret;
+	int i;
+
+	for(subscription = broker->subscriptions; subscription < end; subscription++){
+		if (subscription->subscriptionId == 0)
+			continue;
+
+		if ((subscription->devType != devType) || (subscription->epc != epc))
+			continue;
+
+		ret = _ecn_fbs_cre(1, &buf);
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+			break;
+		}
+
+		ret = fbs_printf(buf, &pos, "[36,%d,%d,{\"deviceId\":%d},[],",
+			subscription->subscriptionId, pubId, deviceId);
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+			_ecn_fbs_del(buf);
+			break;
+		}
+
+		ret = fbs_printf(buf, &pos, "{\"propertyName\":\"%s\",\"propertyValue\":[",
+			subscription->proprtyName);
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+			_ecn_fbs_del(buf);
+			break;
+		}
+
+		start = pos;
+		for(i = 0; i < pdc; i++){
+			ret = fbs_printf(buf, &pos, "%d,", p_edt[i]);
+			if (ret != E_OK) {
+				syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+				_ecn_fbs_del(buf);
+				break;
+			}
+		}
+
+		/* ÅãÌ","ðÁ· */
+		if(start != pos)
+			pos--;
+
+		ret = fbs_printf(buf, &pos, "]}]");
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+			_ecn_fbs_del(buf);
+			break;
+		}
+
+		ret = main_send_message(buf, s->wbsid);
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "wamp_broker_publish_inf() : main_send_message() result = %d", ret);
+		}
+		break;
+	}
+}
Index: uKadecot/trunk/kadecot/wamp_broker.h
===================================================================
--- uKadecot/trunk/kadecot/wamp_broker.h	(revision 101)
+++ uKadecot/trunk/kadecot/wamp_broker.h	(revision 101)
@@ -0,0 +1,96 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#ifndef WAMP_BROKER_H
+#define WAMP_BROKER_H
+
+typedef struct wamp_subscription
+{
+	struct wamp_state *s;
+	unsigned int requestId;
+	int subscriptionId;
+	char deviceName[40];
+	char *proprtyName;
+	uint16_t devType;
+	uint8_t epc;
+} wamp_subscription_t;
+
+typedef struct wamp_broker
+{
+	struct wamp_state *s;
+	unsigned int requestId;
+	int subscriptionId;
+	wamp_subscription_t subscriptions[10];
+	wamp_subscription_t *current_subscription;
+	const char *error;
+} wamp_broker_t;
+
+void wamp_broker_subscribe(wamp_broker_t *broker);
+void wamp_broker_subscribe_request_id(wamp_broker_t *broker, const char *value);
+void wamp_broker_subscribe_options_param(wamp_broker_t *broker, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_broker_subscribe_options(wamp_broker_t *broker);
+void wamp_broker_subscribe_topic(wamp_broker_t *broker, const char *value);
+void wamp_broker_subscribe_close(struct wamp_state *s);
+
+void wamp_broker_unsubscribe(wamp_broker_t *broker);
+void wamp_broker_unsubscribe_request_id(wamp_broker_t *broker, const char *value);
+void wamp_broker_unsubscribe_subscription_id(wamp_broker_t *broker, const char *value);
+void wamp_broker_unsubscribe_close(struct wamp_state *s);
+
+void wamp_broker_publish(wamp_broker_t *broker);
+void wamp_broker_publish_request_id(wamp_broker_t *s, const char *value);
+void wamp_broker_publish_options(wamp_broker_t *s, const char *value);
+void wamp_broker_publish_options_param(wamp_broker_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_broker_publish_topic(wamp_broker_t *s, const char *value);
+void wamp_broker_publish_arguments(wamp_broker_t *s, const char *value);
+void wamp_broker_publish_arguments_param(wamp_broker_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_broker_publish_argumentskw(wamp_broker_t *s, const char *value);
+void wamp_broker_publish_argumentskw_param(wamp_broker_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_broker_publish_close(struct wamp_state *s);
+
+void wamp_broker_publish_inf(wamp_broker_t *broker, uint16_t pubId, int deviceId,
+	uint16_t devType, uint8_t epc, uint8_t pdc, uint8_t *p_edt);
+
+#endif // WAMP_BROKER_H
Index: uKadecot/trunk/kadecot/wamp_callee.c
===================================================================
--- uKadecot/trunk/kadecot/wamp_callee.c	(revision 101)
+++ uKadecot/trunk/kadecot/wamp_callee.c	(revision 101)
@@ -0,0 +1,142 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#include <string.h>
+#include "wamp.h"
+#include "wamp_callee.h"
+
+#ifndef _MSC_VER
+#ifndef strncpy_s
+#define strncpy_s(dst, dsz, src, sz) strncpy(dst, src, sz)
+#endif
+#endif
+
+void wamp_callee_registered(wamp_callee_t *callee)
+{
+}
+
+void wamp_callee_registered_request_id(wamp_callee_t *s, const char *value)
+{
+}
+
+void wamp_callee_registered_registration_id(wamp_callee_t *s, const char *value)
+{
+}
+
+void wamp_callee_registered_close(struct wamp_state *s)
+{
+}
+
+void wamp_callee_unregistered(wamp_callee_t *callee)
+{
+}
+
+void wamp_callee_unregistered_request_id(wamp_callee_t *s, const char *value)
+{
+}
+
+void wamp_callee_unregistered_close(struct wamp_state *s)
+{
+}
+
+void wamp_callee_invocation(wamp_callee_t *callee)
+{
+}
+
+void wamp_callee_invocation_request_id(wamp_callee_t *s, const char *value)
+{
+}
+
+void wamp_callee_invocation_registration_id(wamp_callee_t *s, const char *value)
+{
+}
+
+void wamp_callee_invocation_details(wamp_callee_t *s, const char *value)
+{
+}
+
+void wamp_callee_invocation_details_param(wamp_callee_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_callee_invocation_arguments(wamp_callee_t *s, const char *value)
+{
+}
+
+void wamp_callee_invocation_arguments_param(wamp_callee_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_callee_invocation_argumentskw(wamp_callee_t *s, const char *value)
+{
+}
+
+void wamp_callee_invocation_argumentskw_param(wamp_callee_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_callee_interrupt(wamp_callee_t *callee)
+{
+}
+
+void wamp_callee_interrupt_request_id(wamp_callee_t *s, const char *value)
+{
+}
+
+void wamp_callee_interrupt_options(wamp_callee_t *s, const char *value)
+{
+}
+
+void wamp_callee_interrupt_options_param(wamp_callee_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_callee_invocation_close(struct wamp_state *s)
+{
+}
+
+void wamp_callee_interrupt_close(struct wamp_state *s)
+{
+}
Index: uKadecot/trunk/kadecot/wamp_callee.h
===================================================================
--- uKadecot/trunk/kadecot/wamp_callee.h	(revision 101)
+++ uKadecot/trunk/kadecot/wamp_callee.h	(revision 101)
@@ -0,0 +1,81 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#ifndef WAMP_CALLEE_H
+#define WAMP_CALLEE_H
+
+typedef struct wamp_callee
+{
+	struct wamp_state *s;
+	int id;
+} wamp_callee_t;
+
+void wamp_callee_registered(wamp_callee_t *callee);
+void wamp_callee_registered_request_id(wamp_callee_t *s, const char *value);
+void wamp_callee_registered_registration_id(wamp_callee_t *s, const char *value);
+void wamp_callee_registered_close(struct wamp_state *s);
+
+void wamp_callee_unregistered(wamp_callee_t *callee);
+void wamp_callee_unregistered_request_id(wamp_callee_t *s, const char *value);
+void wamp_callee_unregistered_close(struct wamp_state *s);
+
+void wamp_callee_invocation(wamp_callee_t *callee);
+void wamp_callee_invocation_request_id(wamp_callee_t *s, const char *value);
+void wamp_callee_invocation_registration_id(wamp_callee_t *s, const char *value);
+void wamp_callee_invocation_details(wamp_callee_t *s, const char *value);
+void wamp_callee_invocation_details_param(wamp_callee_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_callee_invocation_arguments(wamp_callee_t *s, const char *value);
+void wamp_callee_invocation_arguments_param(wamp_callee_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_callee_invocation_argumentskw(wamp_callee_t *s, const char *value);
+void wamp_callee_invocation_argumentskw_param(wamp_callee_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_callee_invocation_close(struct wamp_state *s);
+
+void wamp_callee_interrupt(wamp_callee_t *callee);
+void wamp_callee_interrupt_request_id(wamp_callee_t *s, const char *value);
+void wamp_callee_interrupt_options(wamp_callee_t *s, const char *value);
+void wamp_callee_interrupt_options_param(wamp_callee_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_callee_interrupt_close(struct wamp_state *s);
+
+#endif // WAMP_CALLEE_H
Index: uKadecot/trunk/kadecot/wamp_caller.c
===================================================================
--- uKadecot/trunk/kadecot/wamp_caller.c	(revision 101)
+++ uKadecot/trunk/kadecot/wamp_caller.c	(revision 101)
@@ -0,0 +1,89 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#include <string.h>
+#include "wamp.h"
+#include "wamp_caller.h"
+
+#ifndef _MSC_VER
+#ifndef strncpy_s
+#define strncpy_s(dst, dsz, src, sz) strncpy(dst, src, sz)
+#endif
+#endif
+
+void wamp_caller_result(wamp_caller_t *caller)
+{
+}
+
+void wamp_caller_result_request_id(wamp_caller_t *s, const char *value)
+{
+}
+
+void wamp_caller_result_details(wamp_caller_t *s, const char *value)
+{
+}
+
+void wamp_caller_result_details_param(wamp_caller_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_caller_result_arguments(wamp_caller_t *s, const char *value)
+{
+}
+
+void wamp_caller_result_arguments_param(wamp_caller_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_caller_result_argumentskw(wamp_caller_t *s, const char *value)
+{
+}
+
+void wamp_caller_result_argumentskw_param(wamp_caller_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_caller_result_close(struct wamp_state *s)
+{
+}
Index: uKadecot/trunk/kadecot/wamp_caller.h
===================================================================
--- uKadecot/trunk/kadecot/wamp_caller.h	(revision 101)
+++ uKadecot/trunk/kadecot/wamp_caller.h	(revision 101)
@@ -0,0 +1,64 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#ifndef WAMP_CALLER_H
+#define WAMP_CALLER_H
+
+typedef struct wamp_caller
+{
+	struct wamp_state *s;
+	int id;
+} wamp_caller_t;
+
+void wamp_caller_result(wamp_caller_t *caller);
+void wamp_caller_result_request_id(wamp_caller_t *s, const char *value);
+void wamp_caller_result_details(wamp_caller_t *s, const char *value);
+void wamp_caller_result_details_param(wamp_caller_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_caller_result_arguments(wamp_caller_t *s, const char *value);
+void wamp_caller_result_arguments_param(wamp_caller_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_caller_result_argumentskw(wamp_caller_t *s, const char *value);
+void wamp_caller_result_argumentskw_param(wamp_caller_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_caller_result_close(struct wamp_state *s);
+
+#endif // WAMP_CALLER_H
Index: uKadecot/trunk/kadecot/wamp_client.c
===================================================================
--- uKadecot/trunk/kadecot/wamp_client.c	(revision 101)
+++ uKadecot/trunk/kadecot/wamp_client.c	(revision 101)
@@ -0,0 +1,134 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#include <string.h>
+#include "wamp.h"
+#include "wamp_client.h"
+
+#ifndef _MSC_VER
+#ifndef strncpy_s
+#define strncpy_s(dst, dsz, src, sz) strncpy(dst, src, sz)
+#endif
+#endif
+
+void wamp_client_welcome(wamp_client_t *client)
+{
+}
+
+void wamp_client_welcome_client_id(wamp_client_t *client, const char *value)
+{
+}
+
+void wamp_client_welcome_details(wamp_client_t *client, const char *value)
+{
+}
+
+void wamp_client_welcome_details_param(wamp_client_t *client, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_client_welcome_close(struct wamp_state *s)
+{
+}
+
+void wamp_client_abort(wamp_client_t *client)
+{
+}
+
+void wamp_client_abort_details(wamp_client_t *client, const char *value)
+{
+}
+
+void wamp_client_abort_details_param(wamp_client_t *client, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_client_abort_reason(wamp_client_t *client, const char *value)
+{
+}
+
+void wamp_client_abort_close(struct wamp_state *s)
+{
+}
+
+void wamp_client_challenge(wamp_client_t *client)
+{
+}
+
+void wamp_client_challenge_authmethod(wamp_client_t *client, const char *value)
+{
+}
+
+void wamp_client_challenge_extra(wamp_client_t *client, const char *value)
+{
+}
+
+void wamp_client_challenge_extra_param(wamp_client_t *client, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_client_challenge_close(struct wamp_state *s)
+{
+}
+
+void wamp_client_goodbye(wamp_client_t *client)
+{
+}
+
+void wamp_client_goodbye_details_param(wamp_client_t *client, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_client_goodbye_details(wamp_client_t *client)
+{
+}
+
+void wamp_client_goodbye_reason(wamp_client_t *client, const char *value)
+{
+}
+
+void wamp_client_goodbye_close(struct wamp_state *s)
+{
+}
Index: uKadecot/trunk/kadecot/wamp_client.h
===================================================================
--- uKadecot/trunk/kadecot/wamp_client.h	(revision 101)
+++ uKadecot/trunk/kadecot/wamp_client.h	(revision 101)
@@ -0,0 +1,89 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#ifndef WAMP_CLIENT_H
+#define WAMP_CLIENT_H
+
+typedef enum wamp_client_roles{
+	WAMP_CLIENT_ROLES_PUBLISHER = 1,
+	WAMP_CLIENT_ROLES_SUBSCRIBER = 2,
+	WAMP_CLIENT_ROLES_CALLER = 4,
+	WAMP_CLIENT_ROLES_CALLEE = 8,
+	WAMP_CLIENT_ROLES_IN_GETTING = 0x80,
+} wamp_client_roles_t;
+
+typedef struct wamp_client
+{
+	struct wamp_state *s;
+	int id;
+	char realm[80];
+	wamp_client_roles_t roles;
+} wamp_client_t;
+
+void wamp_client_welcome(wamp_client_t *client);
+void wamp_client_welcome_client_id(wamp_client_t *client, const char *value);
+void wamp_client_welcome_details(wamp_client_t *client, const char *value);
+void wamp_client_welcome_details_param(wamp_client_t *client, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_client_welcome_close(struct wamp_state *s);
+
+void wamp_client_abort(wamp_client_t *client);
+void wamp_client_abort_details(wamp_client_t *client, const char *value);
+void wamp_client_abort_details_param(wamp_client_t *client, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_client_abort_reason(wamp_client_t *client, const char *value);
+void wamp_client_abort_close(struct wamp_state *s);
+
+void wamp_client_challenge(wamp_client_t *client);
+void wamp_client_challenge_authmethod(wamp_client_t *client, const char *value);
+void wamp_client_challenge_extra(wamp_client_t *client, const char *value);
+void wamp_client_challenge_extra_param(wamp_client_t *client, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_client_challenge_close(struct wamp_state *s);
+
+void wamp_client_goodbye(wamp_client_t *client);
+void wamp_client_goodbye_details_param(wamp_client_t *client, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_client_goodbye_details(wamp_client_t *client);
+void wamp_client_goodbye_reason(wamp_client_t *client, const char *value);
+void wamp_client_goodbye_close(struct wamp_state *s);
+
+#endif // WAMP_CLIENT_H
Index: uKadecot/trunk/kadecot/wamp_dealer.c
===================================================================
--- uKadecot/trunk/kadecot/wamp_dealer.c	(revision 101)
+++ uKadecot/trunk/kadecot/wamp_dealer.c	(revision 101)
@@ -0,0 +1,2020 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#include <string.h>
+#include "wamp.h"
+#include "wamp_dealer.h"
+#include "main.h"
+#include "fbs_string.h"
+#include "kadecot_names.h"
+#include "kernel_cfg.h"
+#include "echonet_agent.h"
+#include "arduino.h"
+#include "data_flash.h"
+#include "uip.h"
+#include "uip_adpt.h"
+
+#ifndef _MSC_VER
+#ifndef strcpy_s
+#define strcpy_s(s1, s1m, s2) strcpy(s1, s2)
+#endif
+
+#ifndef strncpy_s
+#define strncpy_s(dst, dsz, src, sz) strncpy(dst, src, sz)
+#endif
+
+size_t strnlen(const char *s, size_t maxlen);
+#endif
+
+static void wamp_dealer_call_dummy_param(wamp_dealer_t *dealer,
+	jsonsl_action_t action, struct jsonsl_state_st *state, const char *buf);
+static void wamp_dealer_call_kadecot_param(wamp_dealer_t *dealer,
+	jsonsl_action_t action, struct jsonsl_state_st *state, const char *buf);
+static void wamp_dealer_call_ecnl_param(wamp_dealer_t *dealer,
+	jsonsl_action_t action, struct jsonsl_state_st *state, const char *buf);
+static void wamp_dealer_call_arduino_param(wamp_dealer_t *dealer,
+	jsonsl_action_t action, struct jsonsl_state_st *state, const char *buf);
+static void wamp_dealer_call_init_params_param(wamp_dealer_t *dealer,
+	jsonsl_action_t action, struct jsonsl_state_st *state, const char *buf);
+
+static void wamp_dealer_none_close(struct wamp_dealer *dealer);
+static void wamp_dealer_get_devicelist_close(struct wamp_dealer *dealer);
+static void wamp_dealer_kadecot_get_close(struct wamp_dealer *dealer);
+static void wamp_dealer_kadecot_set_close(struct wamp_dealer *dealer);
+static void wamp_dealer_get_deviceinfo_close(struct wamp_dealer *dealer);
+static void wamp_dealer_ecnl_set_close(struct wamp_dealer *dealer);
+static void wamp_dealer_ecnl_get_close(struct wamp_dealer *dealer);
+static void wamp_dealer_ecnl_setget_close(struct wamp_dealer *dealer);
+static void wamp_dealer_pin_mode_close(struct wamp_dealer *dealer);
+static void wamp_dealer_digital_write_close(struct wamp_dealer *dealer);
+static void wamp_dealer_digital_read_close(struct wamp_dealer *dealer);
+static void wamp_dealer_analog_read_close(struct wamp_dealer *dealer);
+static void wamp_dealer_analog_write_close(struct wamp_dealer *dealer);
+static void wamp_dealer_set_init_params_close(struct wamp_dealer *dealer);
+static void wamp_dealer_get_init_params_close(struct wamp_dealer *dealer);
+
+static echonetlite_device_t *wamp_dealer_get_device(wamp_dealer_t *dealer, int deviceId);
+
+static bool_t wamp_dealer_get_epc(const char *propName, int nameLen,
+	uint16_t devType, uint8_t *epc, uint8_t *pdc);
+static void wamp_dealer_get_devicelist(struct wamp_dealer *dealer);
+
+int wamp_stob(const char *str, uint8_t *dst, int dstc);
+
+void wamp_dealer_register(wamp_dealer_t *dealer)
+{
+}
+
+void wamp_dealer_register_request_id(wamp_dealer_t *dealer, const char *value)
+{
+}
+
+void wamp_dealer_register_options(wamp_dealer_t *dealer, const char *value)
+{
+}
+
+void wamp_dealer_register_options_param(wamp_dealer_t *dealer, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_dealer_register_procedure(wamp_dealer_t *dealer, const char *value)
+{
+}
+
+void wamp_dealer_register_close(struct wamp_state *s)
+{
+}
+
+void wamp_dealer_unregister(wamp_dealer_t *dealer)
+{
+}
+
+void wamp_dealer_unregister_request_id(wamp_dealer_t *dealer, const char *value)
+{
+}
+
+void wamp_dealer_unregister_registration_id(wamp_dealer_t *dealer, const char *value)
+{
+}
+
+void wamp_dealer_unregister_close(struct wamp_state *s)
+{
+}
+
+void wamp_dealer_call(wamp_dealer_t *dealer)
+{
+	dealer->args_parse = wamp_dealer_call_dummy_param;
+	dealer->call_close = wamp_dealer_none_close;
+
+	memset(&dealer->params, 0, sizeof(dealer->params));
+}
+
+void wamp_dealer_call_request_id(wamp_dealer_t *dealer, const char *value)
+{
+	dealer->requestId = atoi(value);
+}
+
+void wamp_dealer_call_options(wamp_dealer_t *dealer, const char *value)
+{
+}
+
+void wamp_dealer_call_options_param(wamp_dealer_t *dealer, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	static const char deviceId[] = "deviceId";
+
+	switch (state->level) {
+	case 3:
+		switch (action){
+		case JSONSL_ACTION_POP:
+			switch (state->type)
+			{
+			case JSONSL_T_HKEY:
+				if(strcmp(deviceId, dealer->s->jsn_buf) == 0){
+					dealer->state = WAMP_DEALER_STATE_DEVICE_ID;
+				}
+				break;
+			case JSONSL_T_SPECIAL:
+				dealer->current_device = wamp_dealer_get_device(dealer, atoi(dealer->s->jsn_buf));
+				break;
+			default:
+				break;
+			}
+			break;
+		}
+		break;
+	}
+}
+
+void wamp_dealer_call_procedure(wamp_dealer_t *dealer, const char *value)
+{
+	static const char getDeviceList[] = "com.sonycsl.kadecot.provider.procedure.getDeviceList";
+	static const char kadecotGet[] = "com.sonycsl.kadecot.echonetlite.procedure.get";
+	static const char kadecotSet[] = "com.sonycsl.kadecot.echonetlite.procedure.set";
+	static const char getDeviceInfo[] = "jp.toppers.ecnl.procedure.getDeviceInfo";
+	static const char ecnlSet[] = "jp.toppers.ecnl.procedure.set";
+	static const char ecnlGet[] = "jp.toppers.ecnl.procedure.get";
+	static const char ecnlSetGet[] = "jp.toppers.ecnl.procedure.setget";
+	static const char pinMode[] = "com.sonycsl.kadecot.arduino.pinMode";
+	static const char digitalWrite[] = "com.sonycsl.kadecot.arduino.digitalWrite";
+	static const char digitalRead[] = "com.sonycsl.kadecot.arduino.digitalRead";
+	static const char analogRead[] = "com.sonycsl.kadecot.arduino.analogRead";
+	static const char analogWrite[] = "com.sonycsl.kadecot.arduino.analogWrite";
+	static const char setInitParams[] = "jp.toppers.ecnl.procedure.setInitParams";
+	static const char getInitParams[] = "jp.toppers.ecnl.procedure.getInitParams";
+
+	if(strcmp(getDeviceList, value) == 0){
+		dealer->procedure = WAMP_DEALER_PROCEDURE_GET_DEVICELIST;
+		dealer->args_parse = wamp_dealer_call_dummy_param;
+		dealer->call_close = wamp_dealer_get_devicelist_close;
+	}
+	else if(strcmp(kadecotGet, value) == 0){
+		dealer->procedure = WAMP_DEALER_PROCEDURE_KADECOT_GET;
+		dealer->args_parse = wamp_dealer_call_kadecot_param;
+		dealer->call_close = wamp_dealer_kadecot_get_close;
+	}
+	else if(strcmp(kadecotSet, value) == 0){
+		dealer->procedure = WAMP_DEALER_PROCEDURE_KADECOT_SET;
+		dealer->args_parse = wamp_dealer_call_kadecot_param;
+		dealer->call_close = wamp_dealer_kadecot_set_close;
+	}
+	else if(strcmp(getDeviceInfo, value) == 0){
+		dealer->procedure = WAMP_DEALER_PROCEDURE_GET_DEVICEINFO;
+		dealer->args_parse = wamp_dealer_call_dummy_param;
+		dealer->call_close = wamp_dealer_get_deviceinfo_close;
+	}
+	else if(strcmp(ecnlSet, value) == 0){
+		dealer->procedure = WAMP_DEALER_PROCEDURE_ECNL_SET;
+		dealer->args_parse = wamp_dealer_call_ecnl_param;
+		dealer->call_close = wamp_dealer_ecnl_set_close;
+	}
+	else if(strcmp(ecnlGet, value) == 0){
+		dealer->procedure = WAMP_DEALER_PROCEDURE_ECNL_GET;
+		dealer->args_parse = wamp_dealer_call_ecnl_param;
+		dealer->call_close = wamp_dealer_ecnl_get_close;
+	}
+	else if(strcmp(ecnlSetGet, value) == 0){
+		dealer->procedure = WAMP_DEALER_PROCEDURE_ECNL_SETGET;
+		dealer->args_parse = wamp_dealer_call_ecnl_param;
+		dealer->call_close = wamp_dealer_ecnl_setget_close;
+	}
+	else if(strcmp(pinMode, value) == 0){
+		dealer->procedure = WAMP_DEALER_PROCEDURE_PIN_MODE;
+		dealer->args_parse = wamp_dealer_call_arduino_param;
+		dealer->call_close = wamp_dealer_pin_mode_close;
+	}
+	else if(strcmp(digitalWrite, value) == 0){
+		dealer->procedure = WAMP_DEALER_PROCEDURE_DIGITAL_WRITE;
+		dealer->args_parse = wamp_dealer_call_arduino_param;
+		dealer->call_close = wamp_dealer_digital_write_close;
+	}
+	else if(strcmp(digitalRead, value) == 0){
+		dealer->procedure = WAMP_DEALER_PROCEDURE_DIGITAL_READ;
+		dealer->args_parse = wamp_dealer_call_arduino_param;
+		dealer->call_close = wamp_dealer_digital_read_close;
+	}
+	else if(strcmp(analogRead, value) == 0){
+		dealer->procedure = WAMP_DEALER_PROCEDURE_ANALOG_READ;
+		dealer->args_parse = wamp_dealer_call_arduino_param;
+		dealer->call_close = wamp_dealer_analog_read_close;
+	}
+	else if(strcmp(analogWrite, value) == 0){
+		dealer->procedure = WAMP_DEALER_PROCEDURE_ANALOG_WRITE;
+		dealer->args_parse = wamp_dealer_call_arduino_param;
+		dealer->call_close = wamp_dealer_analog_write_close;
+	}
+	else if(strcmp(setInitParams, value) == 0){
+		dealer->procedure = WAMP_DEALER_PROCEDURE_SET_INIT_PARAMS;
+		dealer->args_parse = wamp_dealer_call_init_params_param;
+		dealer->call_close = wamp_dealer_set_init_params_close;
+	}
+	else if (strcmp(getInitParams, value) == 0) {
+		dealer->procedure = WAMP_DEALER_PROCEDURE_GET_INIT_PARAMS;
+		dealer->args_parse = wamp_dealer_call_init_params_param;
+		dealer->call_close = wamp_dealer_get_init_params_close;
+	}
+	else{
+		dealer->procedure = WAMP_DEALER_PROCEDURE_NONE;
+		dealer->args_parse = wamp_dealer_call_dummy_param;
+		dealer->call_close = wamp_dealer_none_close;
+	}
+}
+
+void wamp_dealer_call_arguments(wamp_dealer_t *dealer, const char *value)
+{
+}
+
+void wamp_dealer_call_arguments_param(wamp_dealer_t *dealer, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_dealer_call_argumentskw(wamp_dealer_t *dealer, const char *value)
+{
+}
+
+void wamp_dealer_call_argumentskw_param(wamp_dealer_t *dealer, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	dealer->args_parse(dealer, action, state, buf);
+}
+
+static void wamp_dealer_call_dummy_param(wamp_dealer_t *dealer,
+	jsonsl_action_t action, struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+static void wamp_dealer_call_kadecot_param(wamp_dealer_t *dealer,
+	jsonsl_action_t action, struct jsonsl_state_st *state, const char *buf)
+{
+	static const char propertyName[] = "propertyName";
+	static const char propertyValue[] = "propertyValue";
+
+	switch (state->level) {
+	case 3:
+		switch (action){
+		case JSONSL_ACTION_POP:
+			switch (state->type)
+			{
+			case JSONSL_T_HKEY:
+				if(strcmp(propertyName, dealer->s->jsn_buf) == 0){
+					dealer->state = WAMP_DEALER_STATE_PROPERTY_NAME;
+				}
+				else if(strcmp(propertyValue, dealer->s->jsn_buf) == 0){
+					dealer->state = WAMP_DEALER_STATE_PROPERTY_VALUE;
+					dealer->params.pdc = 0;
+					memset(dealer->params.edt, 0, sizeof(dealer->params.edt));
+				}
+				break;
+			case JSONSL_T_STRING:
+				switch(dealer->state){
+				case WAMP_DEALER_STATE_PROPERTY_NAME:
+					memcpy(dealer->params.prop_name, dealer->s->jsn_buf, sizeof(dealer->params.prop_name));
+					wamp_dealer_get_epc(dealer->params.prop_name, strnlen(dealer->params.prop_name,
+						sizeof(dealer->params.prop_name)),
+						dealer->current_device->deviceType,
+						&dealer->params.epc, &dealer->params.pdc);
+					break;
+				}
+				break;
+			default:
+				break;
+			}
+			break;
+		}
+		break;
+	case 4:
+		switch (action){
+		case JSONSL_ACTION_POP:
+			switch (state->type)
+			{
+			case JSONSL_T_SPECIAL:
+				switch(dealer->state){
+				case WAMP_DEALER_STATE_PROPERTY_VALUE:
+					dealer->params.edt[dealer->params.pdc++] = atoi(dealer->s->jsn_buf);
+					break;
+				}
+				break;
+			}
+			break;
+		}
+		break;
+	}
+}
+
+static void wamp_dealer_call_ecnl_param(wamp_dealer_t *dealer,
+	jsonsl_action_t action, struct jsonsl_state_st *state, const char *buf)
+{
+	static const char deojId[] = "deojid";
+	static const char properties[] = "properties";
+	static const char propertyCode[] = "epc";
+	static const char propertyValue[] = "edt";
+
+	switch (state->level) {
+	case 3:
+		switch (action){
+		case JSONSL_ACTION_POP:
+			switch (state->type)
+			{
+			case JSONSL_T_HKEY:
+				if(strcmp(deojId, dealer->s->jsn_buf) == 0){
+					dealer->state = WAMP_DEALER_STATE_DEOJID;
+				}
+				else if(strcmp(properties, dealer->s->jsn_buf) == 0){
+					dealer->state = WAMP_DEALER_STATE_PROPERTIES;
+				}
+				break;
+			case JSONSL_T_SPECIAL:
+				switch(dealer->state){
+				case WAMP_DEALER_STATE_DEOJID:
+					dealer->params.deojid = atoi(dealer->s->jsn_buf);
+					break;
+				}
+				break;
+			}
+			break;
+		case JSONSL_ACTION_PUSH:
+			switch (state->type)
+			{
+			case JSONSL_T_LIST:
+				switch(dealer->state){
+				case WAMP_DEALER_STATE_PROPERTIES:
+					dealer->state = WAMP_DEALER_STATE_PROPERTY_LIST;
+					break;
+				}
+				break;
+			default:
+				break;
+			}
+			break;
+		}
+		break;
+	case 4:
+		switch (action){
+		case JSONSL_ACTION_POP:
+			switch (state->type)
+			{
+			case JSONSL_T_SPECIAL:
+				switch(dealer->state){
+				}
+				break;
+			default:
+				break;
+			}
+			break;
+		}
+		break;
+	case 5:
+		switch (action){
+		case JSONSL_ACTION_POP:
+			switch (state->type)
+			{
+			case JSONSL_T_HKEY:
+				if(strcmp(propertyCode, dealer->s->jsn_buf) == 0){
+					dealer->state = WAMP_DEALER_STATE_PROPERTY_CODE;
+				}
+				else if(strcmp(propertyValue, dealer->s->jsn_buf) == 0){
+					dealer->state = WAMP_DEALER_STATE_PROPERTY_VALUE;
+					dealer->params.pdc = 0;
+					memset(dealer->params.edt, 0, sizeof(dealer->params.edt));
+				}
+				break;
+			case JSONSL_T_SPECIAL:
+				switch(dealer->state){
+				case WAMP_DEALER_STATE_PROPERTY_CODE:
+					dealer->params.epc = atoi(dealer->s->jsn_buf);
+					switch(dealer->procedure){
+					case WAMP_DEALER_PROCEDURE_ECNL_GET:
+						if (dealer->ecnl_mag == NULL){
+							ecn_esv_get(&dealer->ecnl_mag, dealer->params.deojid, dealer->params.epc);
+						}
+						else{
+							ecn_add_epc(dealer->ecnl_mag, dealer->params.epc);
+						}
+						break;
+					case WAMP_DEALER_PROCEDURE_ECNL_SETGET:
+						ecn_add_epc(dealer->ecnl_mag, dealer->params.epc);
+						break;
+					}
+					break;
+				}
+				break;
+			case JSONSL_T_STRING:
+				switch(dealer->state){
+				case WAMP_DEALER_STATE_PROPERTY_VALUE:
+					dealer->params.pdc = wamp_stob(dealer->s->jsn_buf, dealer->params.edt, sizeof(dealer->params.edt));
+					switch(dealer->procedure){
+					case WAMP_DEALER_PROCEDURE_ECNL_SET:
+						if (dealer->ecnl_mag == NULL){
+							ecn_esv_setc(&dealer->ecnl_mag, dealer->params.deojid, dealer->params.epc,
+								dealer->params.pdc, dealer->params.edt);
+						}
+						else{
+							ecn_add_edt(dealer->ecnl_mag, dealer->params.epc,
+								dealer->params.pdc, dealer->params.edt);
+						}
+						break;
+					case WAMP_DEALER_PROCEDURE_ECNL_SETGET:
+						if (dealer->ecnl_mag == NULL){
+							ecn_esv_set_get(&dealer->ecnl_mag, dealer->params.deojid, dealer->params.epc,
+								dealer->params.pdc, dealer->params.edt);
+						}
+						else{
+							ecn_add_edt(dealer->ecnl_mag, dealer->params.epc,
+								dealer->params.pdc, dealer->params.edt);
+						}
+						break;
+					}
+					break;
+				}
+				break;
+			}
+			break;
+		}
+		break;
+	}
+}
+
+static void wamp_dealer_call_arduino_param(wamp_dealer_t *dealer,
+	jsonsl_action_t action, struct jsonsl_state_st *state, const char *buf)
+{
+	static const char pin[] = "pin";
+	static const char mode[] = "mode";
+	static const char value[] = "value";
+	static const char INPUT[] = "INPUT";
+	static const char OUTPUT[] = "OUTPUT";
+	static const char INPUT_PULLUP[] = "INPUT_PULLUP";
+	static const char HIGH[] = "HIGH";
+	static const char LOW[] = "LOW";
+
+	switch (state->level) {
+	case 3:
+		switch (action){
+		case JSONSL_ACTION_POP:
+			switch (state->type)
+			{
+			case JSONSL_T_HKEY:
+				if(strcmp(pin, dealer->s->jsn_buf) == 0){
+					dealer->state = WAMP_DEALER_STATE_PIN;
+				}
+				else if(strcmp(mode, dealer->s->jsn_buf) == 0){
+					dealer->state = WAMP_DEALER_STATE_MODE;
+				}
+				else if(strcmp(value, dealer->s->jsn_buf) == 0){
+					if(dealer->procedure == WAMP_DEALER_PROCEDURE_DIGITAL_WRITE)
+						dealer->state = WAMP_DEALER_STATE_DIGITAL_VALUE;
+					else if(dealer->procedure == WAMP_DEALER_PROCEDURE_ANALOG_WRITE)
+						dealer->state = WAMP_DEALER_STATE_ANALOG_VALUE;
+				}
+				break;
+			case JSONSL_T_STRING:
+				switch(dealer->state){
+				case WAMP_DEALER_STATE_MODE:
+					if(strcmp(INPUT, dealer->s->jsn_buf) == 0){
+						dealer->arduino_params.mode = WAMP_DEALER_PIN_MODE_INPUT;
+					}
+					else if(strcmp(OUTPUT, dealer->s->jsn_buf) == 0){
+						dealer->arduino_params.mode = WAMP_DEALER_PIN_MODE_OUTPUT;
+					}
+					else if(strcmp(INPUT_PULLUP, dealer->s->jsn_buf) == 0){
+						dealer->arduino_params.mode = WAMP_DEALER_PIN_MODE_INPUT_PULLUP;
+					}
+					break;
+				case WAMP_DEALER_STATE_DIGITAL_VALUE:
+					if(strcmp(HIGH, dealer->s->jsn_buf) == 0){
+						dealer->arduino_params.digval = WAMP_DEALER_DIGITAL_VALUE_HIGH;
+					}
+					else if(strcmp(LOW, dealer->s->jsn_buf) == 0){
+						dealer->arduino_params.digval = WAMP_DEALER_DIGITAL_VALUE_LOW;
+					}
+					break;
+				}
+				break;
+			case JSONSL_T_SPECIAL:
+				switch(dealer->state){
+				case WAMP_DEALER_STATE_PIN:
+					dealer->arduino_params.pin = atoi(dealer->s->jsn_buf);
+					break;
+				case WAMP_DEALER_STATE_ANALOG_VALUE:
+					dealer->arduino_params.anaval = atoi(dealer->s->jsn_buf);
+					break;
+				}
+				break;
+			default:
+				break;
+			}
+			break;
+		}
+		break;
+	}
+}
+
+static void wamp_dealer_call_init_params_param(wamp_dealer_t *dealer,
+	jsonsl_action_t action, struct jsonsl_state_st *state, const char *buf)
+{
+	static const char macAddr[] = "macAddr";
+
+	switch (state->level) {
+	case 3:
+		switch (action){
+		case JSONSL_ACTION_POP:
+			switch (state->type)
+			{
+			case JSONSL_T_HKEY:
+				if(strcmp(macAddr, dealer->s->jsn_buf) == 0){
+					dealer->state = WAMP_DEALER_STATE_MAC_ADDR_VALUE;
+					memset(&dealer->init_params, 0, sizeof(dealer->init_params));
+				}
+				break;
+			default:
+				break;
+			}
+			break;
+		}
+		break;
+	case 4:
+		switch (action){
+		case JSONSL_ACTION_POP:
+			switch (state->type)
+			{
+			case JSONSL_T_SPECIAL:
+				switch(dealer->state){
+				case WAMP_DEALER_STATE_MAC_ADDR_VALUE:
+					dealer->init_params.mac_addr[dealer->init_params.pos++] = atoi(dealer->s->jsn_buf);
+					break;
+				}
+				break;
+			}
+			break;
+		}
+		break;
+	}
+}
+
+void wamp_dealer_call_close(struct wamp_state *s)
+{
+	wamp_dealer_t *dealer = &s->dealer;
+	ER ret;
+
+	dealer->error = internal_error;
+
+	// send RESULT
+	dealer->call_close(dealer);
+
+	if (dealer->error != NULL){
+		ret = wamp_send_error_res(s, WAMP_CODE_CALL, dealer->requestId, dealer->error);
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "wamp_dealer_call_close() : wamp_send_error_res() result = %d", ret);
+		}
+		dealer->error = NULL;
+	}
+}
+
+static void wamp_dealer_none_close(struct wamp_dealer *dealer)
+{
+	wamp_state_t *s = dealer->s;
+	ER ret;
+
+	dealer->error = NULL;
+	ret = wamp_send_error_res(s, WAMP_CODE_CALL, dealer->requestId, invalid_request);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_dealer_none_close() : wamp_send_error_res() result = %d", ret);
+	}
+}
+
+static void wamp_dealer_get_devicelist_close(struct wamp_dealer *dealer)
+{
+	dealer->error = NULL;
+	main_get_device_list(dealer->requestId, dealer);
+}
+
+void wamp_dealer_set_devicelist(struct wamp_dealer *dealer, ECN_FBS_ID msg)
+{
+	wamp_state_t *s = dealer->s;
+	ecn_inm_get_device_item_t device;
+	ECN_FBS_SSIZE_T rlen;
+	echonetlite_device_t *dev, *end = &dealer->devices[sizeof(dealer->devices) / sizeof(dealer->devices[0])];
+	ER ret;
+
+	/* @íîñðNA */
+	for(dev = dealer->devices; dev < end; dev++){
+		dev->deviceId = 0;
+	}
+
+	/* bZ[W©ç@íîñðì¬ */
+	for(dev = dealer->devices; dev < end; ){
+		ret = _ecn_fbs_get_data(msg, &device, sizeof(device), &rlen);
+		if ((ret != E_OK) || (rlen != sizeof(device)))
+			break;
+
+		if (device.enodid == 0)
+			continue;
+
+		dev->deviceId = device.eobjid;
+		dev->nodeId = device.enodid;
+		dev->addrId = device.addrid;
+		dev->deviceType = (device.eojx1 << 8) | device.eojx2;
+		dev->x3 = device.eojx3;
+		dev->status = device.state != 0;
+
+		dev++;
+	}
+
+	dealer->current_device = &dealer->devices[0];
+	dealer->devices_pos = 0;
+	main_get_device_ipaddr(dealer->requestId, dealer, dealer->current_device->addrId);
+}
+
+void wamp_dealer_get_devicelist_timeout(struct wamp_dealer *dealer)
+{
+	wamp_state_t *s = dealer->s;
+	ER ret;
+
+	ret = wamp_send_error_res(s, WAMP_CODE_CALL, dealer->requestId, internal_error);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_dealer_get_devicelist_timeout() : wamp_send_error_res() result = %d", ret);
+	}
+}
+
+void wamp_dealer_set_ipaddr(struct wamp_dealer *dealer, char *ipaddr)
+{
+	echonetlite_device_t *dev, *end = &dealer->devices[sizeof(dealer->devices) / sizeof(dealer->devices[0])];
+	int i, devicePos;
+
+	dev = dealer->current_device;
+	if ((dev != NULL) && (ipaddr != NULL)){
+		strcpy_s(dev->ip_addr, sizeof(dev->ip_addr), ipaddr);
+
+		kadecot_names_get_device_type_name(dev->deviceType, dev->deviceTypeStr, sizeof(dev->deviceTypeStr));
+		strcpy_s(dev->description, sizeof(dev->description), dev->deviceTypeStr);
+		strcpy_s(dev->nickname, sizeof(dev->nickname), dev->deviceTypeStr);
+	}
+
+	devicePos = sizeof(dealer->devices) / sizeof(dealer->devices[0]);
+	for(i = dealer->devices_pos + 1, dev = &dealer->devices[i]; dev < end; i++, dev++){
+		if(dev->deviceId == 0)
+			continue;
+		
+		devicePos = i;
+		break;
+	}
+
+	if (devicePos == sizeof(dealer->devices) / sizeof(dealer->devices[0])){
+		dealer->current_device = NULL;
+		dealer->devices_pos = 0;
+		wamp_dealer_get_devicelist(dealer);
+	}
+	else{
+		dealer->current_device = &dealer->devices[devicePos];
+		dealer->devices_pos = devicePos;
+		main_get_device_ipaddr(dealer->requestId, dealer, dealer->current_device->addrId);
+	}
+}
+
+void wamp_dealer_get_ipaddr_timeout(struct wamp_dealer *dealer)
+{
+	wamp_state_t *s = dealer->s;
+	ER ret;
+
+	ret = wamp_send_error_res(s, WAMP_CODE_CALL, dealer->requestId, internal_error);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_dealer_get_ipaddr_timeout() : wamp_send_error_res() result = %d", ret);
+	}
+}
+
+static void wamp_dealer_get_devicelist(struct wamp_dealer *dealer)
+{
+	wamp_state_t *s = dealer->s;
+	echonetlite_device_t *dev, *end = &dealer->devices[sizeof(dealer->devices) / sizeof(dealer->devices[0])];
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0, start;
+	char ip_addr[16];
+	ER ret;
+
+	ret = _ecn_fbs_cre(1, &buf);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "[50,%d,{},[],", dealer->requestId);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "{\"deviceList\":["
+		"{\"description\":\"GR-SAKURA\",\"deviceId\":1,\"deviceType\":\"GrSakura\",\"ip_addr\":\"%s\",\"nickname\":\"GR-SAKURA\",\"protocol\":\"arduino\",\"status\":true},",
+		ip2str(ip_addr, uip_hostaddr));
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	start = pos;
+	for(dev = dealer->devices; dev < end; dev++){
+		if(dev->deviceId == 0)
+			continue;
+
+		ret = fbs_printf(buf, &pos, "{\"description\":\"%s\",\"deviceId\":%d,\"deviceType\":\"%s\",\"ip_addr\":\"%s\",\"nickname\":\"%s\",\"protocol\":\"echonetlite\",\"status\":%s},",
+			dev->description, dev->deviceId, dev->deviceTypeStr, dev->ip_addr, dev->nickname, dev->status ? "true" : "false");
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+			_ecn_fbs_del(buf);
+			return;
+		}
+	}
+
+	/* ÅãÌ","ðÁ· */
+	if(start != pos)
+		pos--;
+
+	ret = fbs_printf(buf, &pos, "]}]");
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_send_message(buf, s->wbsid);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_dealer_get_devicelist() : main_send_message() result = %d", ret);
+	}
+}
+
+static void wamp_dealer_kadecot_get_close(struct wamp_dealer *dealer)
+{
+	echonetlite_device_t *device = dealer->current_device;
+	uint16_t devType;
+
+	if(device == NULL)
+		return;
+
+	devType = device->deviceType;
+	if(devType == 0)
+		return;
+
+	if (dealer->params.epc == 0) {
+		dealer->error = method_not_found;
+		syslog(7, method_not_found);
+		return;
+	}
+
+	dealer->error = NULL;
+	main_kadecot_get(dealer->requestId, dealer, device->deviceId, dealer->params.epc);
+}
+
+void wamp_dealer_kadecot_get(struct wamp_dealer *dealer, int deviceId, uint8_t epc,
+	uint8_t pdc, uint8_t *edt)
+{
+	wamp_state_t *s = dealer->s;
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0, start;
+	int i;
+	const char *propName;
+	ER ret;
+
+	ret = _ecn_fbs_cre(1, &buf);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "[50,%d,{\"deviceId\":%d},[],",
+		dealer->requestId, deviceId);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	propName = dealer->params.prop_name;
+	if(propName[0] != '\0'){
+		ret = fbs_printf(buf, &pos, "{\"propertyName\":\"%s\",\"propertyValue\":[",
+			propName);
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+			_ecn_fbs_del(buf);
+			return;
+		}
+	}
+	else{
+		ret = fbs_printf(buf, &pos, "{\"propertyName\":\"0x%02x\",\"propertyValue\":[",
+			epc);
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+			_ecn_fbs_del(buf);
+			return;
+		}
+	}
+
+	start = pos;
+	for(i = 0; i < pdc; i++){
+		ret = fbs_printf(buf, &pos, "%d,", edt[i]);
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+			_ecn_fbs_del(buf);
+			return;
+		}
+	}
+
+	/* ÅãÌ","ðÁ· */
+	if(start != pos)
+		pos--;
+
+	ret = fbs_printf(buf, &pos, "]}]");
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_send_message(buf, s->wbsid);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_dealer_kadecot_get() : main_send_message() result = %d", ret);
+	}
+}
+
+void wamp_dealer_kadecot_set_timeout(struct wamp_dealer *dealer)
+{
+	wamp_state_t *s = dealer->s;
+	ER ret;
+
+	ret = wamp_send_error_res(s, WAMP_CODE_CALL, dealer->requestId, internal_error);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_dealer_kadecot_set_timeout() : wamp_send_error_res() result = %d", ret);
+	}
+}
+
+static void wamp_dealer_kadecot_set_close(struct wamp_dealer *dealer)
+{
+	echonetlite_device_t *device = dealer->current_device;
+	uint16_t devType;
+
+	if(device == NULL)
+		return;
+
+	devType = device->deviceType;
+	if(devType == 0)
+		return;
+
+	if(dealer->params.epc == 0){
+		dealer->error = method_not_found;
+		return;
+	}
+
+	dealer->error = NULL;
+	main_kadecot_set(dealer->requestId, dealer, device->deviceId, dealer->params.epc,
+		dealer->params.pdc, dealer->params.edt);
+}
+
+void wamp_dealer_kadecot_set(struct wamp_dealer *dealer, int deviceId, uint8_t epc)
+{
+	wamp_state_t *s = dealer->s;
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0, start;
+	int i;
+	const char *propName;
+	ER ret;
+
+	ret = _ecn_fbs_cre(1, &buf);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "[50,%d,{\"deviceId\":%d},[],",
+		dealer->requestId, deviceId);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	propName = dealer->params.prop_name;
+	if(propName[0] != '\0'){
+		ret = fbs_printf(buf, &pos, "{\"propertyName\":\"%s\",\"propertyValue\":[",
+			propName);
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+			_ecn_fbs_del(buf);
+			return;
+		}
+	}
+	else{
+		ret = fbs_printf(buf, &pos, "{\"propertyName\":\"0x%02x\",\"propertyValue\":[",
+			epc);
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+			_ecn_fbs_del(buf);
+			return;
+		}
+	}
+
+	start = pos;
+	for(i = 0; i < dealer->params.pdc; i++){
+		ret = fbs_printf(buf, &pos, "%d,", dealer->params.edt[i]);
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+			_ecn_fbs_del(buf);
+			return;
+		}
+	}
+
+	/* ÅãÌ","ðÁ· */
+	if(start != pos)
+		pos--;
+
+	ret = fbs_printf(buf, &pos, "]}]");
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_send_message(buf, s->wbsid);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_dealer_kadecot_set() : main_send_message() result = %d", ret);
+	}
+}
+
+void wamp_dealer_kadecot_get_timeout(struct wamp_dealer *dealer)
+{
+	wamp_state_t *s = dealer->s;
+	ER ret;
+
+	ret = wamp_send_error_res(s, WAMP_CODE_CALL, dealer->requestId, internal_error);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_dealer_kadecot_get_timeout() : wamp_send_error_res() result = %d", ret);
+	}
+}
+
+static void wamp_dealer_get_deviceinfo_close(struct wamp_dealer *dealer)
+{
+	echonetlite_device_t *device = dealer->current_device;
+	if(device == NULL)
+		return;
+
+	dealer->error = NULL;
+	main_get_device_info(dealer->requestId, dealer, device->deviceId);
+}
+
+void wamp_dealer_set_deviceinfo(struct wamp_dealer *dealer, int deviceId, uint8_t *pmset,
+	uint8_t *pmget, uint8_t *pmanno)
+{
+	wamp_state_t *s = dealer->s;
+	echonetlite_device_t *device = dealer->current_device;
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0;
+	int i, j, m, prop;
+	ER ret;
+
+	if(device == NULL)
+		return;
+
+	ret = _ecn_fbs_cre(1, &buf);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "[50,%d,{\"deviceId\":%d},[],",
+		dealer->requestId, deviceId);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "{\"x1\":%d,\"x2\":%d,\"x3\":%d,\"enodid\":%d,\"properties\":[",
+		device->deviceType >> 8, device->deviceType & 0xFF, device->x3, device->nodeId);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	prop = pos;
+	for(i = 0; i < 16; i++){
+		uint8_t pms = pmset[i], pmg = pmget[i], pma = pmanno[i], exs = pms | pmg | pma;
+
+		for(j = 0; j < 8; j++){
+			m = 1 << j;
+			if(!(exs & m))
+				continue;
+
+			ret = fbs_printf(buf, &pos, "{\"epc\":%d,\"flag\":\"", 0x80 | (j << 4) | i);
+			if (ret != E_OK) {
+				syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+				_ecn_fbs_del(buf);
+				return;
+			}
+			if (pms & m) {
+				ret = fbs_printf(buf, &pos, "RULE_SET,");
+				if (ret != E_OK) {
+					syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+					_ecn_fbs_del(buf);
+					return;
+				}
+			}
+			if (pmg & m) {
+				ret = fbs_printf(buf, &pos, "RULE_GET,");
+				if (ret != E_OK) {
+					syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+					_ecn_fbs_del(buf);
+					return;
+				}
+			}
+			if (pma & m) {
+				ret = fbs_printf(buf, &pos, "ANNOUNCE,");
+				if (ret != E_OK) {
+					syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+					_ecn_fbs_del(buf);
+					return;
+				}
+			}
+			/* ÅãÌ","ðÁ· */
+			pos--;
+
+			ret = fbs_printf(buf, &pos, "\"},");
+			if (ret != E_OK) {
+				syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+				_ecn_fbs_del(buf);
+				return;
+			}
+		}
+	}
+
+	/* ÅãÌ","ðÁ· */
+	if(prop != pos)
+		pos--;
+
+	ret = fbs_printf(buf, &pos, "]}]");
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_send_message(buf, s->wbsid);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_dealer_set_deviceinfo() : main_send_message() result = %d", ret);
+	}
+}
+
+void wamp_dealer_get_deviceinfo_timeout(struct wamp_dealer *dealer)
+{
+	wamp_state_t *s = dealer->s;
+	ER ret;
+
+	ret = wamp_send_error_res(s, WAMP_CODE_CALL, dealer->requestId, internal_error);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_dealer_get_deviceinfo_timeout() : wamp_send_error_res() result = %d", ret);
+	}
+}
+
+static void wamp_dealer_ecnl_set_close(struct wamp_dealer *dealer)
+{
+	ER ret;
+	echonetlite_device_t *device = dealer->current_device;
+	ECN_FBS_ID buf = { (T_ECN_FST_BLK *)dealer->ecnl_mag };
+
+	if (dealer->ecnl_mag == NULL)
+		return;
+
+	if(device == NULL){
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_ecnl_set(dealer->requestId, dealer, device->deviceId, dealer->ecnl_mag);
+	if (ret == E_OK) {
+		dealer->error = NULL;
+	}
+	else {
+		_ecn_fbs_del(buf);
+	}
+
+	dealer->ecnl_mag = NULL;
+}
+
+void wamp_dealer_ecnl_set_res(struct wamp_dealer *dealer, T_EDATA *esv)
+{
+	wamp_state_t *s = dealer->s;
+	echonetlite_device_t *device = dealer->current_device;
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0, start;
+	uint8_t epc;
+	uint8_t pdc;
+	uint8_t p_edt[256];
+	T_ENUM_EPC enm;
+	int j;
+	ER ret;
+
+	if(device == NULL)
+		return;
+
+	ret = _ecn_fbs_cre(1, &buf);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "[50,%d,{\"deviceId\":%d},[],",
+		dealer->requestId, device->deviceId);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	/* vpeBl«Ý 0x71 */
+	ret = fbs_printf(buf, &pos, "{\"esv\":113,\"sender\":%d,\"seoj\":\"%02x%02x%02x\",\"deoj\":\"%02x%02x%02x\",\"properties\":[",
+		ecn_get_enod(esv), esv->hdr.edata.seoj.eojx1, esv->hdr.edata.seoj.eojx2, esv->hdr.edata.seoj.eojx3,
+		esv->hdr.edata.deoj.eojx1, esv->hdr.edata.deoj.eojx2, esv->hdr.edata.deoj.eojx3);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = ecn_itr_ini(&enm, esv);
+	if (ret != E_OK){
+		syslog(LOG_ERROR, "ecn_itr_ini");
+		return;
+	}
+
+	start = pos;
+	for(;;) {
+		while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
+			if (pdc == 0) {
+				ret = fbs_printf(buf, &pos, "{\"epc\":%d},", epc);
+				if (ret != E_OK) {
+					syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+					_ecn_fbs_del(buf);
+					return;
+				}
+			}
+			else {
+				ret = fbs_printf(buf, &pos, "{\"epc\":%d,\"edt\":\"", epc);
+				if (ret != E_OK) {
+					syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+					_ecn_fbs_del(buf);
+					return;
+				}
+				for(j = 0; j < pdc; j++){
+					ret = fbs_printf(buf, &pos, "%02x", p_edt[j]);
+					if (ret != E_OK) {
+						syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+						_ecn_fbs_del(buf);
+						return;
+					}
+				}
+				ret = fbs_printf(buf, &pos, "\"},");
+				if (ret != E_OK) {
+					syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+					_ecn_fbs_del(buf);
+					return;
+				}
+			}
+		}
+		if(ret != E_BOVR){
+			syslog(LOG_ERROR, "ecn_itr_nxt");
+			break;
+		}
+		if(enm.is_eof)
+			break;
+	}
+
+	/* ÅãÌ","ðÁ· */
+	if(start != pos)
+		pos--;
+
+	ret = fbs_printf(buf, &pos, "]}]");
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_send_message(buf, s->wbsid);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_dealer_ecnl_set_res() : main_send_message() result = %d", ret);
+	}
+}
+
+void wamp_dealer_ecnl_set_timeout(struct wamp_dealer *dealer)
+{
+	wamp_state_t *s = dealer->s;
+	ER ret;
+
+	ret = wamp_send_error_res(s, WAMP_CODE_CALL, dealer->requestId, internal_error);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_dealer_ecnl_set_timeout() : wamp_send_error_res() result = %d", ret);
+	}
+}
+
+static void wamp_dealer_ecnl_get_close(struct wamp_dealer *dealer)
+{
+	ER ret;
+	echonetlite_device_t *device = dealer->current_device;
+	ECN_FBS_ID buf = { (T_ECN_FST_BLK *)dealer->ecnl_mag };
+
+	if (dealer->ecnl_mag == NULL)
+		return;
+
+	if(device == NULL){
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_ecnl_get(dealer->requestId, dealer, device->deviceId, dealer->ecnl_mag);
+	if (ret == E_OK) {
+		dealer->error = NULL;
+	}
+	else {
+		_ecn_fbs_del(buf);
+	}
+
+	dealer->ecnl_mag = NULL;
+}
+
+void wamp_dealer_ecnl_get_res(struct wamp_dealer *dealer, T_EDATA *esv)
+{
+	wamp_state_t *s = dealer->s;
+	echonetlite_device_t *device = dealer->current_device;
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0, start;
+	uint8_t epc;
+	uint8_t pdc;
+	uint8_t p_edt[256];
+	T_ENUM_EPC enm;
+	int j;
+	ER ret;
+
+	if(device == NULL)
+		return;
+
+	ret = _ecn_fbs_cre(1, &buf);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "[50,%d,{\"deviceId\":%d},[],",
+		dealer->requestId, device->deviceId);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	/* vpeBlÇÝÝ 0x72 */
+	ret = fbs_printf(buf, &pos, "{\"esv\":114,\"sender\":%d,\"seoj\":\"%02x%02x%02x\",\"deoj\":\"%02x%02x%02x\",\"properties\":[",
+		ecn_get_enod(esv), esv->hdr.edata.seoj.eojx1, esv->hdr.edata.seoj.eojx2, esv->hdr.edata.seoj.eojx3,
+		esv->hdr.edata.deoj.eojx1, esv->hdr.edata.deoj.eojx2, esv->hdr.edata.deoj.eojx3);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = ecn_itr_ini(&enm, esv);
+	if (ret != E_OK){
+		syslog(LOG_ERROR, "ecn_itr_ini");
+		return;
+	}
+
+	start = pos;
+	for(;;) {
+		while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
+			if (pdc == 0) {
+				ret = fbs_printf(buf, &pos, "{\"epc\":%d},", epc);
+				if (ret != E_OK) {
+					syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+					_ecn_fbs_del(buf);
+					return;
+				}
+			}
+			else {
+				ret = fbs_printf(buf, &pos, "{\"epc\":%d,\"edt\":\"", epc);
+				if (ret != E_OK) {
+					syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+					_ecn_fbs_del(buf);
+					return;
+				}
+				for(j = 0; j < pdc; j++){
+					ret = fbs_printf(buf, &pos, "%02x", p_edt[j]);
+					if (ret != E_OK) {
+						syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+						_ecn_fbs_del(buf);
+						return;
+					}
+				}
+				ret = fbs_printf(buf, &pos, "\"},");
+				if (ret != E_OK) {
+					syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+					_ecn_fbs_del(buf);
+					return;
+				}
+			}
+		}
+		if(ret != E_BOVR){
+			syslog(LOG_ERROR, "ecn_itr_nxt");
+			break;
+		}
+		if(enm.is_eof)
+			break;
+	}
+
+	/* ÅãÌ","ðÁ· */
+	if(start != pos)
+		pos--;
+
+	ret = fbs_printf(buf, &pos, "]}]");
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_send_message(buf, s->wbsid);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_dealer_ecnl_get_res() : main_send_message() result = %d", ret);
+	}
+}
+
+void wamp_dealer_ecnl_get_timeout(struct wamp_dealer *dealer)
+{
+	wamp_state_t *s = dealer->s;
+	ER ret;
+
+	ret = wamp_send_error_res(s, WAMP_CODE_CALL, dealer->requestId, internal_error);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_dealer_ecnl_get_timeout() : wamp_send_error_res() result = %d", ret);
+	}
+}
+
+static void wamp_dealer_ecnl_setget_close(struct wamp_dealer *dealer)
+{
+	ER ret;
+	echonetlite_device_t *device = dealer->current_device;
+	ECN_FBS_ID buf = { (T_ECN_FST_BLK *)dealer->ecnl_mag };
+
+	if (dealer->ecnl_mag == NULL)
+		return;
+
+	if(device == NULL){
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_ecnl_setget(dealer->requestId, dealer, device->deviceId, dealer->ecnl_mag);
+	if (ret == E_OK) {
+		dealer->error = NULL;
+	}
+	else {
+		_ecn_fbs_del(buf);
+	}
+
+	dealer->ecnl_mag = NULL;
+}
+
+void wamp_dealer_ecnl_setget_res(struct wamp_dealer *dealer, T_EDATA *esv)
+{
+	wamp_state_t *s = dealer->s;
+	echonetlite_device_t *device = dealer->current_device;
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0, start;
+	uint8_t epc;
+	uint8_t pdc;
+	uint8_t p_edt[256];
+	T_ENUM_EPC enm;
+	int j;
+	ER ret;
+
+	if(device == NULL)
+		return;
+
+	ret = _ecn_fbs_cre(1, &buf);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "[50,%d,{\"deviceId\":%d},[],",
+		dealer->requestId, device->deviceId);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	/* vpeBl«ÝEÇÝÝ 0x7E */
+	ret = fbs_printf(buf, &pos, "{\"esv\":126,\"sender\":%d,\"seoj\":\"%02x%02x%02x\",\"deoj\":\"%02x%02x%02x\",\"properties\":[",
+		ecn_get_enod(esv), esv->hdr.edata.seoj.eojx1, esv->hdr.edata.seoj.eojx2, esv->hdr.edata.seoj.eojx3,
+		esv->hdr.edata.deoj.eojx1, esv->hdr.edata.deoj.eojx2, esv->hdr.edata.deoj.eojx3);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = ecn_itr_ini(&enm, esv);
+	if (ret != E_OK){
+		syslog(LOG_ERROR, "ecn_itr_ini");
+		return;
+	}
+
+	start = pos;
+	for(;;) {
+		while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
+			if (pdc == 0) {
+				ret = fbs_printf(buf, &pos, "{\"epc\":%d},", epc);
+				if (ret != E_OK) {
+					syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+					_ecn_fbs_del(buf);
+					return;
+				}
+			}
+			else {
+				ret = fbs_printf(buf, &pos, "{\"epc\":%d,\"edt\":\"", epc);
+				if (ret != E_OK) {
+					syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+					_ecn_fbs_del(buf);
+					return;
+				}
+				for(j = 0; j < pdc; j++){
+					ret = fbs_printf(buf, &pos, "%02x", p_edt[j]);
+					if (ret != E_OK) {
+						syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+						_ecn_fbs_del(buf);
+						return;
+					}
+				}
+				ret = fbs_printf(buf, &pos, "\"},");
+				if (ret != E_OK) {
+					syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+					_ecn_fbs_del(buf);
+					return;
+				}
+			}
+		}
+		if(ret != E_BOVR){
+			syslog(LOG_ERROR, "ecn_itr_nxt");
+			break;
+		}
+		if(enm.is_eof)
+			break;
+	}
+
+	/* ÅãÌ","ðÁ· */
+	if(start != pos)
+		pos--;
+
+	ret = fbs_printf(buf, &pos, "]}]");
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_send_message(buf, s->wbsid);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_dealer_ecnl_setget_res() : main_send_message() result = %d", ret);
+	}
+}
+
+void wamp_dealer_ecnl_setget_timeout(struct wamp_dealer *dealer)
+{
+	wamp_state_t *s = dealer->s;
+	ER ret;
+
+	ret = wamp_send_error_res(s, WAMP_CODE_CALL, dealer->requestId, internal_error);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_dealer_ecnl_setget_timeout() : wamp_send_error_res() result = %d", ret);
+	}
+}
+
+static void wamp_dealer_pin_mode_close(struct wamp_dealer *dealer)
+{
+	wamp_state_t *s = dealer->s;
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0;
+	ER ret = E_PAR;
+
+	switch(dealer->arduino_params.mode){
+	case WAMP_DEALER_PIN_MODE_INPUT:
+		ret = arduino_pinMode(dealer->arduino_params.pin, ARDUINO_PIN_MODE_INPUT);
+		break;
+	case WAMP_DEALER_PIN_MODE_OUTPUT:
+		ret = arduino_pinMode(dealer->arduino_params.pin, ARDUINO_PIN_MODE_OUTPUT);
+		break;
+	case WAMP_DEALER_PIN_MODE_INPUT_PULLUP:
+		ret = arduino_pinMode(dealer->arduino_params.pin, ARDUINO_PIN_MODE_INPUT_PULLUP);
+		break;
+	}
+
+	if (ret != E_OK)
+		return;
+
+	ret = _ecn_fbs_cre(1, &buf);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "[50,%d,{\"deviceId\":1},[],{}]", dealer->requestId);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_send_message(buf, s->wbsid);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "main_send_message() result = %d", ret);
+		return;
+	}
+
+	dealer->error = NULL;
+}
+
+static void wamp_dealer_digital_write_close(struct wamp_dealer *dealer)
+{
+	wamp_state_t *s = dealer->s;
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0;
+	ER ret = E_PAR;
+
+	switch(dealer->arduino_params.digval){
+	case WAMP_DEALER_DIGITAL_VALUE_HIGH:
+		ret = arduino_digitalWrite(dealer->arduino_params.pin, ARDUINO_DIGITAL_VALUE_HIGH);
+		break;
+	case WAMP_DEALER_DIGITAL_VALUE_LOW:
+		ret = arduino_digitalWrite(dealer->arduino_params.pin, ARDUINO_DIGITAL_VALUE_LOW);
+		break;
+	}
+
+	if (ret != E_OK)
+		return;
+
+	ret = _ecn_fbs_cre(1, &buf);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "[50,%d,{\"deviceId\":1},[],{}]", dealer->requestId);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_send_message(buf, s->wbsid);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "main_send_message() result = %d", ret);
+		return;
+	}
+
+	dealer->error = NULL;
+}
+
+static void wamp_dealer_digital_read_close(struct wamp_dealer *dealer)
+{
+	const static char *values[] = { "", "HIGH", "LOW" };
+	wamp_state_t *s = dealer->s;
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0;
+	arduino_digital_value_t value;
+	ER ret;
+
+	ret = arduino_digitalRead(dealer->arduino_params.pin, &value);
+	if (ret != E_OK)
+		return;
+
+	ret = _ecn_fbs_cre(1, &buf);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "[50,%d,{\"deviceId\":1},[],{", dealer->requestId);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "\"pin\":%d,\"value\":\"%s\"",
+		dealer->arduino_params.pin, values[value]);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "}]");
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_send_message(buf, s->wbsid);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "main_send_message() result = %d", ret);
+		return;
+	}
+
+	dealer->error = NULL;
+}
+
+static void wamp_dealer_analog_read_close(struct wamp_dealer *dealer)
+{
+	wamp_state_t *s = dealer->s;
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0;
+	int value;
+	ER ret;
+
+	ret = arduino_analogRead(dealer->arduino_params.pin, &value);
+	if (ret != E_OK)
+		return;
+
+	ret = _ecn_fbs_cre(1, &buf);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "[50,%d,{\"deviceId\":1},[],{", dealer->requestId);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "\"pin\":%d,\"value\":%d",
+		dealer->arduino_params.pin, value);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "}]");
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_send_message(buf, s->wbsid);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "main_send_message() result = %d", ret);
+		return;
+	}
+
+	dealer->error = NULL;
+}
+
+static void wamp_dealer_analog_write_close(struct wamp_dealer *dealer)
+{
+	wamp_state_t *s = dealer->s;
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0;
+	ER ret;
+
+	ret = arduino_analogWrite(dealer->arduino_params.pin, dealer->arduino_params.anaval);
+	if (ret != E_OK)
+		return;
+
+	ret = _ecn_fbs_cre(1, &buf);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "[50,%d,{\"deviceId\":1},[],{}]", dealer->requestId);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_send_message(buf, s->wbsid);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "main_send_message() result = %d", ret);
+		return;
+	}
+
+	dealer->error = NULL;
+}
+
+static void wamp_dealer_set_init_params_close(struct wamp_dealer *dealer)
+{
+	wamp_state_t *s = dealer->s;
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0;
+	ER ret;
+
+	ret = data_flash_write(0, dealer->init_params.mac_addr);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "data_flash_write() result = %d", ret);
+		return;
+	}
+
+	ret = _ecn_fbs_cre(1, &buf);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "[50,%d,{\"deviceId\":1},[],{}]", dealer->requestId);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_send_message(buf, s->wbsid);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "main_send_message() result = %d", ret);
+		return;
+	}
+
+	dealer->error = NULL;
+}
+
+static void wamp_dealer_get_init_params_close(struct wamp_dealer *dealer)
+{
+	wamp_state_t *s = dealer->s;
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0;
+	ER ret;
+	int i;
+
+	ret = data_flash_read(0, dealer->init_params.mac_addr);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "data_flash_read() result = %d", ret);
+		return;
+	}
+
+	ret = _ecn_fbs_cre(1, &buf);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "[50,%d,{},[],{\"macAddr\":[", dealer->requestId);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	for (i = 0; i < 6; i++) {
+		ret = fbs_printf(buf, &pos, "%d,", dealer->init_params.mac_addr[i]);
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+			_ecn_fbs_del(buf);
+			return;
+		}
+	}
+
+	/* ÅãÌ","ðÁ· */
+	pos--;
+
+	ret = fbs_printf(buf, &pos, "]}]");
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_send_message(buf, s->wbsid);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "main_send_message() result = %d", ret);
+		return;
+	}
+
+	dealer->error = NULL;
+}
+
+void wamp_dealer_yield(wamp_dealer_t *dealer)
+{
+}
+
+void wamp_dealer_yield_request_id(wamp_dealer_t *dealer, const char *value)
+{
+}
+
+void wamp_dealer_yield_options(wamp_dealer_t *dealer, const char *value)
+{
+}
+
+void wamp_dealer_yield_options_param(wamp_dealer_t *dealer, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_dealer_yield_arguments(wamp_dealer_t *dealer, const char *value)
+{
+}
+
+void wamp_dealer_yield_arguments_param(wamp_dealer_t *dealer, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_dealer_yield_argumentskw(wamp_dealer_t *dealer, const char *value)
+{
+}
+
+void wamp_dealer_yield_argumentskw_param(wamp_dealer_t *dealer, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_dealer_yield_close(struct wamp_state *s)
+{
+}
+
+void wamp_dealer_cansel(wamp_dealer_t *dealer)
+{
+}
+
+void wamp_dealer_cansel_request_id(wamp_dealer_t *dealer, const char *value)
+{
+}
+
+void wamp_dealer_cansel_options(wamp_dealer_t *dealer, const char *value)
+{
+}
+
+void wamp_dealer_cansel_options_param(wamp_dealer_t *dealer, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_dealer_cansel_close(struct wamp_state *s)
+{
+}
+
+static bool_t wamp_dealer_get_epc(const char *propName, int nameLen,
+	uint16_t devType, uint8_t *epc, uint8_t *pdc)
+{
+	if(propName[0] == '0' && propName[1] == 'x'){
+		if((wamp_stob(&propName[2], epc, sizeof(*epc)) != 1)
+			|| (propName[4] != '\0')){
+			*epc = 0;
+			*pdc = 0;
+			return false;
+		}
+
+		*pdc = 1;
+		return true;
+	}
+
+	*epc = kadecot_names_get_property_code(propName, nameLen, devType);
+	if(*epc == 0){
+		*pdc = 0;
+		return false;
+	}
+	*pdc = 1;
+
+	return true;
+}
+
+static echonetlite_device_t *wamp_dealer_get_device(wamp_dealer_t *dealer, int deviceId)
+{
+	echonetlite_device_t *pos, *end = &dealer->devices[sizeof(dealer->devices) / sizeof(dealer->devices[0])];
+
+	if(deviceId <= 0)
+		return NULL;
+
+	for(pos = dealer->devices; pos < end; pos++){
+		if(pos->deviceId != deviceId)
+			continue;
+
+		return pos;
+	}
+
+	return NULL;
+}
+
+int wamp_stob(const char *str, uint8_t *dst, int dstc)
+{
+	uint8_t *start = dst, *end = &dst[dstc];
+	int size = 0, i;
+	char c;
+	uint8_t data;
+
+	for(i = 0; dst < end; dst++){
+		c = str[i];
+		if(c == '\0')
+			break;
+
+		data = 0;
+
+		if(c >= '0' && c <= '9'){
+			data |= (c - '0');
+		}
+		else if(c >= 'A' && c <= 'F'){
+			data |= (0xA + c - 'A');
+		}
+		else if(c >= 'a' && c <= 'f'){
+			data |= (0xA + c - 'a');
+		}
+		else
+			break;
+
+		i++;
+		c = str[i];
+		data <<= 4;
+
+		if(c >= '0' && c <= '9'){
+			data |= (c - '0');
+		}
+		else if(c >= 'A' && c <= 'F'){
+			data |= (0xA + c - 'A');
+		}
+		else if(c >= 'a' && c <= 'f'){
+			data |= (0xA + c - 'a');
+		}
+		else
+			break;
+
+		i++;
+		*dst = data;
+	}
+
+	return dst - start;
+}
+
+void wamp_dealer_init(wamp_dealer_t *dealer)
+{
+}
Index: uKadecot/trunk/kadecot/wamp_dealer.h
===================================================================
--- uKadecot/trunk/kadecot/wamp_dealer.h	(revision 101)
+++ uKadecot/trunk/kadecot/wamp_dealer.h	(revision 101)
@@ -0,0 +1,221 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#ifndef WAMP_DEALER_H
+#define WAMP_DEALER_H
+
+typedef enum wamp_dealer_state
+{
+	WAMP_DEALER_STATE_DEVICE_ID,
+	WAMP_DEALER_STATE_DEOJID,
+	WAMP_DEALER_STATE_PROPERTIES,
+	WAMP_DEALER_STATE_PROPERTY_LIST,
+	WAMP_DEALER_STATE_PROPERTY_NAME,
+	WAMP_DEALER_STATE_PROPERTY_CODE,
+	WAMP_DEALER_STATE_PROPERTY_VALUE,
+	WAMP_DEALER_STATE_PIN,
+	WAMP_DEALER_STATE_MODE,
+	WAMP_DEALER_STATE_DIGITAL_VALUE,
+	WAMP_DEALER_STATE_ANALOG_VALUE,
+	WAMP_DEALER_STATE_MAC_ADDR_VALUE,
+} wamp_dealer_state_t;
+
+typedef enum wamp_dealer_procedure
+{
+	WAMP_DEALER_PROCEDURE_NONE,
+	WAMP_DEALER_PROCEDURE_GET_DEVICELIST,
+	WAMP_DEALER_PROCEDURE_KADECOT_GET,
+	WAMP_DEALER_PROCEDURE_KADECOT_SET,
+	WAMP_DEALER_PROCEDURE_GET_DEVICEINFO,
+	WAMP_DEALER_PROCEDURE_ECNL_SET,
+	WAMP_DEALER_PROCEDURE_ECNL_GET,
+	WAMP_DEALER_PROCEDURE_ECNL_SETGET,
+	WAMP_DEALER_PROCEDURE_PIN_MODE,
+	WAMP_DEALER_PROCEDURE_DIGITAL_WRITE,
+	WAMP_DEALER_PROCEDURE_DIGITAL_READ,
+	WAMP_DEALER_PROCEDURE_ANALOG_READ,
+	WAMP_DEALER_PROCEDURE_ANALOG_WRITE,
+	WAMP_DEALER_PROCEDURE_SET_INIT_PARAMS,
+	WAMP_DEALER_PROCEDURE_GET_INIT_PARAMS,
+} wamp_dealer_procedure_t;
+
+typedef enum wamp_dealer_pin_mode
+{
+	WAMP_DEALER_PIN_MODE_NONE,
+	WAMP_DEALER_PIN_MODE_INPUT,
+	WAMP_DEALER_PIN_MODE_OUTPUT,
+	WAMP_DEALER_PIN_MODE_INPUT_PULLUP
+} wamp_dealer_pin_mode_t;
+
+typedef enum wamp_dealer_digital_value
+{
+	WAMP_DEALER_DIGITAL_VALUE_NONE,
+	WAMP_DEALER_DIGITAL_VALUE_HIGH,
+	WAMP_DEALER_DIGITAL_VALUE_LOW,
+} wamp_dealer_digital_value_t;
+
+typedef void (*wamp_dealer_args_parse_t)(struct wamp_dealer *dealer, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+typedef void (*wamp_dealer_call_close_t)(struct wamp_dealer *dealer);
+
+typedef struct wamp_dealer_params{
+	uint8_t epc;
+	uint8_t pdc;
+	uint8_t edt[256];
+	uint32_t deojid;
+	char prop_name[80];
+} wamp_dealer_params_t;
+
+typedef struct wamp_dealer_arduino_params{
+	int pin;
+	wamp_dealer_pin_mode_t mode;
+	wamp_dealer_digital_value_t digval;
+	int anaval;
+} wamp_dealer_arduino_params_t;
+
+typedef struct wamp_dealer_init_params{
+	int pos;
+	uint8_t mac_addr[32]; /* DATA FLASHÌTCYª */
+} wamp_dealer_init_params_t;
+
+typedef struct echonetlite_device
+{
+	int deviceId;
+	int nodeId;
+	int addrId;
+	uint16_t deviceType;
+	uint8_t x3;
+	char deviceTypeStr[32];
+	char description[32];
+	char ip_addr[16];
+	char nickname[32]; 
+	bool_t status;
+} echonetlite_device_t;
+
+typedef struct wamp_dealer
+{
+	struct wamp_state *s;
+	wamp_dealer_state_t state;
+	wamp_dealer_procedure_t procedure;
+	unsigned int requestId;
+	union{
+		wamp_dealer_params_t params;
+		wamp_dealer_arduino_params_t arduino_params;
+		wamp_dealer_init_params_t init_params;
+	};
+	T_EDATA *ecnl_mag;
+	echonetlite_device_t devices[20];
+	int devices_pos;
+	echonetlite_device_t *current_device;
+	wamp_dealer_args_parse_t args_parse;
+	wamp_dealer_call_close_t call_close;
+	const char *error;
+} wamp_dealer_t;
+
+void wamp_dealer_init(wamp_dealer_t *dealer);
+
+void wamp_dealer_register(wamp_dealer_t *dealer);
+void wamp_dealer_register_request_id(wamp_dealer_t *dealer, const char *value);
+void wamp_dealer_register_options(wamp_dealer_t *dealer, const char *value);
+void wamp_dealer_register_options_param(wamp_dealer_t *dealer, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_dealer_register_procedure(wamp_dealer_t *dealer, const char *value);
+void wamp_dealer_register_close(struct wamp_state *s);
+
+void wamp_dealer_unregister(wamp_dealer_t *dealer);
+void wamp_dealer_unregister_request_id(wamp_dealer_t *dealer, const char *value);
+void wamp_dealer_unregister_registration_id(wamp_dealer_t *dealer, const char *value);
+void wamp_dealer_unregister_close(struct wamp_state *s);
+
+void wamp_dealer_call(wamp_dealer_t *dealer);
+void wamp_dealer_call_request_id(wamp_dealer_t *dealer, const char *value);
+void wamp_dealer_call_options(wamp_dealer_t *dealer, const char *value);
+void wamp_dealer_call_options_param(wamp_dealer_t *dealer, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_dealer_call_procedure(wamp_dealer_t *dealer, const char *value);
+void wamp_dealer_call_arguments(wamp_dealer_t *dealer, const char *value);
+void wamp_dealer_call_arguments_param(wamp_dealer_t *dealer, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_dealer_call_argumentskw(wamp_dealer_t *dealer, const char *value);
+void wamp_dealer_call_argumentskw_param(wamp_dealer_t *dealer, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_dealer_call_close(struct wamp_state *s);
+
+void wamp_dealer_yield(wamp_dealer_t *dealer);
+void wamp_dealer_yield_request_id(wamp_dealer_t *dealer, const char *value);
+void wamp_dealer_yield_options(wamp_dealer_t *dealer, const char *value);
+void wamp_dealer_yield_options_param(wamp_dealer_t *dealer, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_dealer_yield_arguments(wamp_dealer_t *dealer, const char *value);
+void wamp_dealer_yield_arguments_param(wamp_dealer_t *dealer, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_dealer_yield_argumentskw(wamp_dealer_t *dealer, const char *value);
+void wamp_dealer_yield_argumentskw_param(wamp_dealer_t *dealer, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_dealer_yield_close(struct wamp_state *s);
+
+void wamp_dealer_cansel(wamp_dealer_t *dealer);
+void wamp_dealer_cansel_request_id(wamp_dealer_t *dealer, const char *value);
+void wamp_dealer_cansel_options(wamp_dealer_t *dealer, const char *value);
+void wamp_dealer_cansel_options_param(wamp_dealer_t *dealer, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_dealer_cansel_close(struct wamp_state *s);
+
+void wamp_dealer_set_devicelist(struct wamp_dealer *dealer, ECN_FBS_ID msg);
+void wamp_dealer_get_devicelist_timeout(struct wamp_dealer *dealer);
+void wamp_dealer_set_ipaddr(struct wamp_dealer *dealer, char *ipaddr);
+void wamp_dealer_get_ipaddr_timeout(struct wamp_dealer *dealer);
+void wamp_dealer_set_deviceinfo(struct wamp_dealer *dealer, int deviceId,
+	uint8_t *pmapSet, uint8_t *pmapGet, uint8_t *pmapAnno);
+void wamp_dealer_get_deviceinfo_timeout(struct wamp_dealer *dealer);
+void wamp_dealer_kadecot_set(struct wamp_dealer *dealer, int deviceId, uint8_t epc);
+void wamp_dealer_kadecot_set_timeout(struct wamp_dealer *dealer);
+void wamp_dealer_kadecot_get(struct wamp_dealer *dealer, int deviceId, uint8_t epc,
+	uint8_t pdc, uint8_t *edt);
+void wamp_dealer_kadecot_get_timeout(struct wamp_dealer *dealer);
+void wamp_dealer_ecnl_set_res(struct wamp_dealer *dealer, T_EDATA *res);
+void wamp_dealer_ecnl_set_timeout(struct wamp_dealer *dealer);
+void wamp_dealer_ecnl_get_res(struct wamp_dealer *dealer, T_EDATA *res);
+void wamp_dealer_ecnl_get_timeout(struct wamp_dealer *dealer);
+void wamp_dealer_ecnl_setget_res(struct wamp_dealer *dealer, T_EDATA *res);
+void wamp_dealer_ecnl_setget_timeout(struct wamp_dealer *dealer);
+
+#endif // WAMP_DEALER_H
Index: uKadecot/trunk/kadecot/wamp_publisher.c
===================================================================
--- uKadecot/trunk/kadecot/wamp_publisher.c	(revision 101)
+++ uKadecot/trunk/kadecot/wamp_publisher.c	(revision 101)
@@ -0,0 +1,66 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#include <string.h>
+#include "wamp.h"
+#include "wamp_publisher.h"
+
+#ifndef _MSC_VER
+#ifndef strncpy_s
+#define strncpy_s(dst, dsz, src, sz) strncpy(dst, src, sz)
+#endif
+#endif
+
+void wamp_publisher_published(wamp_publisher_t *publisher)
+{
+}
+
+void wamp_publisher_published_request_id(wamp_publisher_t *s, const char *value)
+{
+}
+
+void wamp_publisher_published_publication_id(wamp_publisher_t *s, const char *value)
+{
+}
+
+void wamp_publisher_published_close(struct wamp_state *s)
+{
+}
Index: uKadecot/trunk/kadecot/wamp_publisher.h
===================================================================
--- uKadecot/trunk/kadecot/wamp_publisher.h	(revision 101)
+++ uKadecot/trunk/kadecot/wamp_publisher.h	(revision 101)
@@ -0,0 +1,56 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#ifndef WAMP_PUBLISHER_H
+#define WAMP_PUBLISHER_H
+
+typedef struct wamp_publisher
+{
+	struct wamp_state *s;
+	int id;
+} wamp_publisher_t;
+
+void wamp_publisher_published(wamp_publisher_t *publisher);
+void wamp_publisher_published_request_id(wamp_publisher_t *s, const char *value);
+void wamp_publisher_published_publication_id(wamp_publisher_t *s, const char *value);
+void wamp_publisher_published_close(struct wamp_state *s);
+
+#endif // WAMP_PUBLISHER_H
Index: uKadecot/trunk/kadecot/wamp_router.c
===================================================================
--- uKadecot/trunk/kadecot/wamp_router.c	(revision 101)
+++ uKadecot/trunk/kadecot/wamp_router.c	(revision 101)
@@ -0,0 +1,284 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#include <string.h>
+#include "wamp.h"
+#include "wamp_router.h"
+#include "main.h"
+#include "fbs_string.h"
+#include "kernel_cfg.h"
+
+#ifndef _MSC_VER
+#ifndef strncpy_s
+#define strncpy_s(dst, dsz, src, sz) strncpy(dst, src, sz)
+#endif
+#endif
+
+wamp_session_t *wamp_router_hello(wamp_router_t *router)
+{
+	wamp_session_t *result = NULL, *pos, *end = &router->sessions[sizeof(router->sessions) / sizeof(router->sessions[0])];
+
+	for(pos = router->sessions; pos < end; pos++) {
+		if(pos->router != NULL)
+			continue;
+		
+		result = pos;
+		result->router = router;
+		router->current_session = result;
+	}
+
+	return result;
+}
+
+void wamp_router_hello_realm(wamp_router_t *router, const char *value)
+{
+	wamp_session_t *s = router->current_session;
+	strncpy_s(s->realm, sizeof(s->realm), value, sizeof(s->realm));
+}
+
+void wamp_router_hello_details_param(wamp_router_t *router, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+	static const char roles[] = "roles";
+	static const char publisher[] = "publisher";
+	static const char subscriber[] = "subscriber";
+	static const char caller[] = "caller";
+	static const char callee[] = "callee";
+	wamp_session_t *s = router->current_session;
+
+	switch (state->level) {
+	case 3:
+		switch (action){
+		case JSONSL_ACTION_POP:
+			switch (state->type)
+			{
+			case JSONSL_T_HKEY:
+				if(strncmp(roles, router->s->jsn_buf, sizeof(roles) - 1) == 0){
+					s->roles |= WAMP_ROUTER_ROLES_IN_GETTING;
+				}
+				break;
+			default:
+				break;
+			}
+			break;
+		}
+		break;
+	case 4:
+		switch (action){
+		case JSONSL_ACTION_POP:
+			switch (state->type)
+			{
+			case JSONSL_T_HKEY:
+				if((s->roles & WAMP_ROUTER_ROLES_IN_GETTING) !=0 ){
+					if(strncmp(publisher, router->s->jsn_buf, sizeof(publisher) - 1) == 0){
+						s->roles |= WAMP_ROUTER_ROLES_PUBLISHER;
+					}
+					else if(strncmp(subscriber, router->s->jsn_buf, sizeof(subscriber) - 1) == 0){
+						s->roles |= WAMP_ROUTER_ROLES_SUBSCRIBER;
+					}
+					else if(strncmp(caller, router->s->jsn_buf, sizeof(caller) - 1) == 0){
+						s->roles |= WAMP_ROUTER_ROLES_CALLER;
+					}
+					else if(strncmp(callee, router->s->jsn_buf, sizeof(callee) - 1) == 0){
+						s->roles |= WAMP_ROUTER_ROLES_CALLEE;
+					}
+				}
+				break;
+			default:
+				break;
+			}
+			break;
+		}
+		break;
+	}
+}
+
+void wamp_router_hello_details(wamp_router_t *router)
+{
+	wamp_session_t *s = router->current_session;
+	s->roles &= ~WAMP_ROUTER_ROLES_IN_GETTING;
+}
+
+void wamp_router_hello_close(struct wamp_state *s)
+{
+	wamp_router_t *router = &s->router;
+	wamp_session_t *session = router->current_session;
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0, start;
+	ER ret;
+
+	router->session_id++;
+	if(router->session_id == 0){
+		router->session_id++;
+	}
+	session->id = router->session_id;
+
+	// send WELLCOM or ABORT
+	_ecn_fbs_cre(16, &buf);
+
+	ret = fbs_printf(buf, &pos, "[2,%d,{\"roles\":{", session->id);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	start = pos;
+	if(session->roles & WAMP_ROUTER_ROLES_PUBLISHER){
+		ret = fbs_printf(buf, &pos, "\"publisher\":{},");
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+			_ecn_fbs_del(buf);
+			return;
+		}
+	}
+	if(session->roles & WAMP_ROUTER_ROLES_SUBSCRIBER){
+		ret = fbs_printf(buf, &pos, "\"subscriber\":{},");
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+			_ecn_fbs_del(buf);
+			return;
+		}
+	}
+	if(session->roles & WAMP_ROUTER_ROLES_CALLER){
+		ret = fbs_printf(buf, &pos, "\"caller\":{},");
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+			_ecn_fbs_del(buf);
+			return;
+		}
+	}
+	if(session->roles & WAMP_ROUTER_ROLES_CALLEE){
+		ret = fbs_printf(buf, &pos, "\"callee\":{},");
+		if (ret != E_OK) {
+			syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+			_ecn_fbs_del(buf);
+			return;
+		}
+	}
+
+	/* ÅãÌ","ðÁ· */
+	if(start != pos)
+		pos--;
+
+	ret = fbs_printf(buf, &pos, "}}]");
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_send_message(buf, s->wbsid);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_router_hello_close() : main_send_message() result = %d", ret);
+	}
+}
+
+void wamp_router_authenticate(wamp_router_t *router)
+{
+}
+
+void wamp_router_authenticate_signature(wamp_router_t *router, const char *value)
+{
+}
+
+void wamp_router_authenticate_extra(wamp_router_t *router, const char *value)
+{
+}
+
+void wamp_router_authenticate_extra_param(wamp_router_t *router, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_router_authenticate_close(struct wamp_state *s)
+{
+}
+
+void wamp_router_goodbye(wamp_router_t *router)
+{
+}
+
+void wamp_router_goodbye_details_param(wamp_router_t *router, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_router_goodbye_details(wamp_router_t *router)
+{
+}
+
+void wamp_router_goodbye_reason(wamp_router_t *router, const char *value)
+{
+}
+
+void wamp_router_goodbye_close(struct wamp_state *s)
+{
+	wamp_router_t *router = &s->router;
+	wamp_session_t *session = router->current_session;
+	ECN_FBS_ID buf;
+	ECN_FBS_SSIZE_T pos = 0;
+	ER ret;
+
+	if(session == NULL)
+		return;
+
+	// send GOODBYE
+	ret = _ecn_fbs_cre(1, &buf);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret);
+		return;
+	}
+
+	ret = fbs_printf(buf, &pos, "[6,{},\"wamp.error.goodbye_and_out\"]");
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "fbs_printf() result = %d", ret);
+		_ecn_fbs_del(buf);
+		return;
+	}
+
+	ret = main_send_message(buf, s->wbsid);
+	if (ret != E_OK) {
+		syslog(LOG_WARNING, "wamp_router_goodbye_close() : main_send_message() result = %d", ret);
+	}
+
+	memset(session, 0, sizeof(session));
+}
Index: uKadecot/trunk/kadecot/wamp_router.h
===================================================================
--- uKadecot/trunk/kadecot/wamp_router.h	(revision 101)
+++ uKadecot/trunk/kadecot/wamp_router.h	(revision 101)
@@ -0,0 +1,90 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#ifndef WAMP_ROUTER_H
+#define WAMP_ROUTER_H
+
+typedef enum wamp_router_roles {
+	WAMP_ROUTER_ROLES_PUBLISHER = 1,
+	WAMP_ROUTER_ROLES_SUBSCRIBER = 2,
+	WAMP_ROUTER_ROLES_CALLER = 4,
+	WAMP_ROUTER_ROLES_CALLEE = 8,
+	WAMP_ROUTER_ROLES_IN_GETTING = 0x80,
+} wamp_router_roles_t;
+
+typedef struct wamp_session
+{
+	struct wamp_router *router;
+	int id;
+	char realm[80];
+	wamp_router_roles_t roles;
+} wamp_session_t;
+
+typedef struct wamp_router
+{
+	struct wamp_state *s;
+	wamp_session_t sessions[1];
+	wamp_session_t *current_session;
+	int session_id;
+} wamp_router_t;
+
+wamp_session_t *wamp_router_hello(wamp_router_t *router);
+void wamp_router_hello_realm(wamp_router_t *router, const char *value);
+void wamp_router_hello_details_param(wamp_router_t *router, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_router_hello_details(wamp_router_t *router);
+void wamp_router_hello_close(struct wamp_state *s);
+
+void wamp_router_authenticate(wamp_router_t *router);
+void wamp_router_authenticate_signature(wamp_router_t *router, const char *value);
+void wamp_router_authenticate_extra(wamp_router_t *router, const char *value);
+void wamp_router_authenticate_extra_param(wamp_router_t *router, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_router_authenticate_close(struct wamp_state *s);
+
+void wamp_router_goodbye(wamp_router_t *router);
+void wamp_router_goodbye_details_param(wamp_router_t *router, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_router_goodbye_details(wamp_router_t *router);
+void wamp_router_goodbye_reason(wamp_router_t *router, const char *value);
+void wamp_router_goodbye_close(struct wamp_state *s);
+
+#endif // WAMP_ROUTER_H
Index: uKadecot/trunk/kadecot/wamp_subscriber.c
===================================================================
--- uKadecot/trunk/kadecot/wamp_subscriber.c	(revision 101)
+++ uKadecot/trunk/kadecot/wamp_subscriber.c	(revision 101)
@@ -0,0 +1,121 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#include <string.h>
+#include "wamp.h"
+#include "wamp_subscriber.h"
+
+#ifndef _MSC_VER
+#ifndef strncpy_s
+#define strncpy_s(dst, dsz, src, sz) strncpy(dst, src, sz)
+#endif
+#endif
+
+void wamp_subscriber_subscribed(wamp_subscriber_t *subscriber)
+{
+}
+
+void wamp_subscriber_subscribed_request_id(wamp_subscriber_t *s, const char *value)
+{
+}
+
+void wamp_subscriber_subscribed_subscription_id(wamp_subscriber_t *s, const char *value)
+{
+}
+
+void wamp_subscriber_subscribed_close(struct wamp_state *s)
+{
+}
+
+void wamp_subscriber_unsubscribed(wamp_subscriber_t *subscriber)
+{
+}
+
+void wamp_subscriber_unsubscribed_request_id(wamp_subscriber_t *s, const char *value)
+{
+}
+
+void wamp_subscriber_unsubscribed_close(struct wamp_state *s)
+{
+}
+
+void wamp_subscriber_event(wamp_subscriber_t *subscriber)
+{
+}
+
+void wamp_subscriber_event_subscription_id(wamp_subscriber_t *s, const char *value)
+{
+}
+
+void wamp_subscriber_event_publication_id(wamp_subscriber_t *s, const char *value)
+{
+}
+
+void wamp_subscriber_event_details(wamp_subscriber_t *s, const char *value)
+{
+}
+
+void wamp_subscriber_event_details_param(wamp_subscriber_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_subscriber_event_arguments(wamp_subscriber_t *s, const char *value)
+{
+}
+
+void wamp_subscriber_event_arguments_param(wamp_subscriber_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_subscriber_event_argumentskw(wamp_subscriber_t *s, const char *value)
+{
+}
+
+void wamp_subscriber_event_argumentskw_param(wamp_subscriber_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf)
+{
+}
+
+void wamp_subscriber_event_close(struct wamp_state *s)
+{
+}
Index: uKadecot/trunk/kadecot/wamp_subscriber.h
===================================================================
--- uKadecot/trunk/kadecot/wamp_subscriber.h	(revision 101)
+++ uKadecot/trunk/kadecot/wamp_subscriber.h	(revision 101)
@@ -0,0 +1,74 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ *
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ *
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ *
+ *  @(#) $Id$
+ */
+
+#ifndef WAMP_SUBSCRIBER_H
+#define WAMP_SUBSCRIBER_H
+
+typedef struct wamp_subscriber
+{
+	struct wamp_state *s;
+	int id;
+} wamp_subscriber_t;
+
+void wamp_subscriber_subscribed(wamp_subscriber_t *subscriber);
+void wamp_subscriber_subscribed_request_id(wamp_subscriber_t *s, const char *value);
+void wamp_subscriber_subscribed_subscription_id(wamp_subscriber_t *s, const char *value);
+void wamp_subscriber_subscribed_close(struct wamp_state *s);
+
+void wamp_subscriber_unsubscribed(wamp_subscriber_t *subscriber);
+void wamp_subscriber_unsubscribed_request_id(wamp_subscriber_t *s, const char *value);
+void wamp_subscriber_unsubscribed_close(struct wamp_state *s);
+
+void wamp_subscriber_event(wamp_subscriber_t *subscriber);
+void wamp_subscriber_event_subscription_id(wamp_subscriber_t *s, const char *value);
+void wamp_subscriber_event_publication_id(wamp_subscriber_t *s, const char *value);
+void wamp_subscriber_event_details(wamp_subscriber_t *s, const char *value);
+void wamp_subscriber_event_details_param(wamp_subscriber_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_subscriber_event_arguments(wamp_subscriber_t *s, const char *value);
+void wamp_subscriber_event_arguments_param(wamp_subscriber_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_subscriber_event_argumentskw(wamp_subscriber_t *s, const char *value);
+void wamp_subscriber_event_argumentskw_param(wamp_subscriber_t *s, jsonsl_action_t action,
+	struct jsonsl_state_st *state, const char *buf);
+void wamp_subscriber_event_close(struct wamp_state *s);
+
+#endif // WAMP_SUBSCRIBER_H
Index: uKadecot/trunk/pfatfs/diskio.c
===================================================================
--- uKadecot/trunk/pfatfs/diskio.c	(revision 101)
+++ uKadecot/trunk/pfatfs/diskio.c	(revision 101)
@@ -0,0 +1,157 @@
+/*-----------------------------------------------------------------------*/
+/* PFF - Low level disk control module for Win32        (C)ChaN, 2014    */
+/*-----------------------------------------------------------------------*/
+
+#include <string.h>
+#include "pffconf.h"
+#include "diskio.h"
+
+/*--------------------------------------------------------------------------
+
+   Module Private Functions
+
+---------------------------------------------------------------------------*/
+
+#define MAX_DRIVES	1	/* Max number of physical drives to be used */
+
+#define SZ_RAMDISK	768	/* Size of RAM disk [kB] */
+#define SS_RAMDISK	512	/* Sector size of RAM disk [byte] */
+
+#ifndef _MSC_VER
+#define RamDisk		((unsigned char *)0xfff00000)
+#else
+#include <windows.h>
+#include <tchar.h>
+#include <winioctl.h>
+
+unsigned char RamDisk[SZ_RAMDISK * 1024];
+#endif
+
+typedef struct {
+	DSTATUS	status;
+	WORD sz_sector;
+	DWORD wofs;
+	DWORD wip;
+	DWORD n_sectors;
+} STAT;
+
+static volatile
+STAT Stat[MAX_DRIVES];
+
+static
+BYTE Buffer[SS_RAMDISK];
+
+static
+int get_status(volatile STAT *stat) {
+	stat->sz_sector = SS_RAMDISK;
+	if(stat->sz_sector < _MIN_SS || stat->sz_sector > _MAX_SS) return 0;
+	stat->n_sectors = SZ_RAMDISK * 1024 / SS_RAMDISK;
+	stat->status = 0;
+	return 1;
+}
+
+/*-----------------------------------------------------------------------*/
+/* Initialize Disk Drive                                                 */
+/*-----------------------------------------------------------------------*/
+DSTATUS disk_initialize (void)
+{
+	DSTATUS sta;
+#ifdef _MSC_VER
+	HANDLE h;
+	DWORD br;
+
+	h = CreateFile(_T("..\\..\\..\\..\\uip\\apps\\webserver\\httpd-fs.bin"), GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
+	if (h != INVALID_HANDLE_VALUE) {
+		ReadFile(h, RamDisk, sizeof(RamDisk), &br, 0);
+		CloseHandle(h);
+	}
+#endif
+	get_status(&Stat[0]);
+	sta = Stat[0].status;
+	Stat[0].wip = 0;
+
+	return sta;
+}
+
+/*-----------------------------------------------------------------------*/
+/* Get Disk Status                                                       */
+/*-----------------------------------------------------------------------*/
+DSTATUS disk_get_status (void)
+{
+	return Stat[0].status;
+}
+
+/*-----------------------------------------------------------------------*/
+/* Read Partial Sector                                                   */
+/*-----------------------------------------------------------------------*/
+DRESULT disk_readp (
+	BYTE* buff,		/* Data read buffer */
+	DWORD sector,	/* Sector number (LBA) */
+	UINT offset,	/* Offset in the sector */
+	UINT count		/* Byte count */
+)
+{
+	DRESULT res;
+	int dofs;
+
+
+	if(Stat[0].status & STA_NOINIT) return RES_NOTRDY;
+
+	if(sector >= Stat[0].n_sectors || !count || offset + count > Stat[0].sz_sector/* || Stat[0].wip*/) {
+		res = RES_PARERR;
+	}
+	else {
+		if(buff) {
+			dofs = sector * Stat[0].sz_sector;
+			memcpy(buff, &RamDisk[dofs + offset], count);
+			res = RES_OK;
+		}
+		else {
+			res = RES_OK;
+		}
+	}
+
+	return res;
+}
+
+/*-----------------------------------------------------------------------*/
+/* Write Partial Sector                                                  */
+/*-----------------------------------------------------------------------*/
+DRESULT disk_writep (
+	const BYTE* buff,	/* Pointer to the write data */
+	DWORD sc			/* Sector number (LBA), Number of bytes to send */
+)
+{
+	DRESULT res;
+	int dofs;
+
+	if(Stat[0].status & STA_NOINIT) return RES_NOTRDY;
+
+	if(!buff) {
+		if(sc) {
+			Stat[0].wip = sc;
+			Stat[0].wofs = 0;
+			memset(Buffer, 0, sizeof Buffer);
+			res = RES_OK;
+		}
+		else {
+			if(Stat[0].wip) {
+				dofs = Stat[0].wip * Stat[0].sz_sector;
+				memcpy(RamDisk + dofs, Buffer, Stat[0].sz_sector);
+				Stat[0].wip = 0;
+				res = RES_OK;
+			}
+			else {
+				res = RES_OK;
+			}
+		}
+	}
+	else {
+		if(Stat[0].wofs + sc > Stat[0].sz_sector) sc = Stat[0].sz_sector - Stat[0].wofs;
+		memcpy(&Buffer[Stat[0].wofs], buff, sc);
+		Stat[0].wofs += sc;
+		res = RES_OK;
+	}
+
+	return res;
+}
Index: uKadecot/trunk/pfatfs/diskio.h
===================================================================
--- uKadecot/trunk/pfatfs/diskio.h	(revision 101)
+++ uKadecot/trunk/pfatfs/diskio.h	(revision 101)
@@ -0,0 +1,44 @@
+/*-----------------------------------------------------------------------
+/  PFF - Low level disk interface modlue include file    (C)ChaN, 2014
+/-----------------------------------------------------------------------*/
+
+#ifndef _DISKIO_DEFINED
+#define _DISKIO_DEFINED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "integer.h"
+
+
+/* Status of Disk Functions */
+typedef BYTE	DSTATUS;
+
+
+/* Results of Disk Functions */
+typedef enum {
+	RES_OK = 0,		/* 0: Function succeeded */
+	RES_ERROR,		/* 1: Disk error */
+	RES_NOTRDY,		/* 2: Not ready */
+	RES_PARERR		/* 3: Invalid parameter */
+} DRESULT;
+
+
+/*---------------------------------------*/
+/* Prototypes for disk control functions */
+
+DSTATUS disk_initialize (void);
+DSTATUS disk_get_status (void);
+DRESULT disk_readp (BYTE* buff, DWORD sector, UINT offset, UINT count);
+DRESULT disk_writep (const BYTE* buff, DWORD sc);
+
+#define STA_NOINIT		0x01	/* Drive not initialized */
+#define STA_NODISK		0x02	/* No medium in the drive */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _DISKIO_DEFINED */
Index: uKadecot/trunk/pfatfs/integer.h
===================================================================
--- uKadecot/trunk/pfatfs/integer.h	(revision 101)
+++ uKadecot/trunk/pfatfs/integer.h	(revision 101)
@@ -0,0 +1,33 @@
+/*-------------------------------------------*/
+/* Integer type definitions for FatFs module */
+/*-------------------------------------------*/
+
+#ifndef _FF_INTEGER
+#define _FF_INTEGER
+
+#if 0/*def _WIN32	/* FatFs development platform */
+
+#include <windows.h>
+#include <tchar.h>
+
+#else			/* Embedded platform */
+
+/* This type MUST be 8 bit */
+typedef unsigned char	BYTE;
+
+/* These types MUST be 16 bit */
+typedef short			SHORT;
+typedef unsigned short	WORD;
+typedef unsigned short	WCHAR;
+
+/* These types MUST be 16 bit or 32 bit */
+typedef int				INT;
+typedef unsigned int	UINT;
+
+/* These types MUST be 32 bit */
+typedef long			LONG;
+typedef unsigned long	DWORD;
+
+#endif
+
+#endif
Index: uKadecot/trunk/pfatfs/pff.c
===================================================================
--- uKadecot/trunk/pfatfs/pff.c	(revision 101)
+++ uKadecot/trunk/pfatfs/pff.c	(revision 101)
@@ -0,0 +1,1459 @@
+/*----------------------------------------------------------------------------/
+/  Petit FatFs - FAT file system module  R0.03                (C)ChaN, 2014
+/-----------------------------------------------------------------------------/
+/ Petit FatFs module is a generic FAT file system module for small embedded
+/ systems. This is a free software that opened for education, research and
+/ commercial developments under license policy of following trems.
+/
+/  Copyright (C) 2014, ChaN, all right reserved.
+/
+/ * The Petit FatFs module is a free software and there is NO WARRANTY.
+/ * No restriction on use. You can use, modify and redistribute it for
+/   personal, non-profit or commercial products UNDER YOUR RESPONSIBILITY.
+/ * Redistributions of source code must retain the above copyright notice.
+/
+/-----------------------------------------------------------------------------/
+/ Jun 15,'09  R0.01a  First release.
+/
+/ Dec 14,'09  R0.02   Added multiple code page support.
+/                     Added write funciton.
+/                     Changed stream read mode interface.
+/ Dec 07,'10  R0.02a  Added some configuration options.
+/                     Fixed fails to open objects with DBCS character.
+
+/ Jun 10,'14  R0.03   Separated out configuration options to pffconf.h.
+/                     Added _USE_LCC option.
+/                     Added _FS_FAT16 option.
+/----------------------------------------------------------------------------*/
+
+#include "pff.h"		/* Petit FatFs configurations and declarations */
+#include "diskio.h"		/* Declarations of low level disk I/O functions */
+
+
+
+/*--------------------------------------------------------------------------
+
+   Module Private Definitions
+
+---------------------------------------------------------------------------*/
+
+
+#if _PFATFS != 4004	/* Revision ID */
+#error Wrong include file (pff.h).
+#endif
+
+#if _FS_FAT32
+#if !_FS_FAT16 && !_FS_FAT12
+#define _FS_32ONLY 1
+#else
+#define _FS_32ONLY 0
+#endif
+#else
+#if !_FS_FAT16 && !_FS_FAT12
+#error Wrong _FS_FATxx setting.
+#endif
+#define _FS_32ONLY 0
+#endif
+
+#define ABORT(err)	{fs->flag = 0; return err;}
+
+#if _USE_LFN
+static WCHAR LfnBuf[_MAX_LFN+1];
+#endif
+
+/*--------------------------------------------------------*/
+/* DBCS code ranges and SBCS extend char conversion table */
+/*--------------------------------------------------------*/
+
+#if _CODE_PAGE == 932	/* Japanese Shift-JIS */
+#define _DF1S	0x81	/* DBC 1st byte range 1 start */
+#define _DF1E	0x9F	/* DBC 1st byte range 1 end */
+#define _DF2S	0xE0	/* DBC 1st byte range 2 start */
+#define _DF2E	0xFC	/* DBC 1st byte range 2 end */
+#define _DS1S	0x40	/* DBC 2nd byte range 1 start */
+#define _DS1E	0x7E	/* DBC 2nd byte range 1 end */
+#define _DS2S	0x80	/* DBC 2nd byte range 2 start */
+#define _DS2E	0xFC	/* DBC 2nd byte range 2 end */
+
+#elif _CODE_PAGE == 936	/* Simplified Chinese GBK */
+#define _DF1S	0x81
+#define _DF1E	0xFE
+#define _DS1S	0x40
+#define _DS1E	0x7E
+#define _DS2S	0x80
+#define _DS2E	0xFE
+
+#elif _CODE_PAGE == 949	/* Korean */
+#define _DF1S	0x81
+#define _DF1E	0xFE
+#define _DS1S	0x41
+#define _DS1E	0x5A
+#define _DS2S	0x61
+#define _DS2E	0x7A
+#define _DS3S	0x81
+#define _DS3E	0xFE
+
+#elif _CODE_PAGE == 950	/* Traditional Chinese Big5 */
+#define _DF1S	0x81
+#define _DF1E	0xFE
+#define _DS1S	0x40
+#define _DS1E	0x7E
+#define _DS2S	0xA1
+#define _DS2E	0xFE
+
+#elif _CODE_PAGE == 437	/* U.S. (OEM) */
+#define _EXCVT {0x80,0x9A,0x90,0x41,0x8E,0x41,0x8F,0x80,0x45,0x45,0x45,0x49,0x49,0x49,0x8E,0x8F,0x90,0x92,0x92,0x4F,0x99,0x4F,0x55,0x55,0x59,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
+				0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 720	/* Arabic (OEM) */
+#define _EXCVT {0x80,0x81,0x45,0x41,0x84,0x41,0x86,0x43,0x45,0x45,0x45,0x49,0x49,0x8D,0x8E,0x8F,0x90,0x92,0x92,0x93,0x94,0x95,0x49,0x49,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
+				0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 737	/* Greek (OEM) */
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x92,0x92,0x93,0x94,0x95,0x96,0x97,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, \
+				0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0xAA,0x92,0x93,0x94,0x95,0x96,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0x97,0xEA,0xEB,0xEC,0xE4,0xED,0xEE,0xE7,0xE8,0xF1,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 775	/* Baltic (OEM) */
+#define _EXCVT {0x80,0x9A,0x91,0xA0,0x8E,0x95,0x8F,0x80,0xAD,0xED,0x8A,0x8A,0xA1,0x8D,0x8E,0x8F,0x90,0x92,0x92,0xE2,0x99,0x95,0x96,0x97,0x97,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9F, \
+				0xA0,0xA1,0xE0,0xA3,0xA3,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xB5,0xB6,0xB7,0xB8,0xBD,0xBE,0xC6,0xC7,0xA5,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE3,0xE8,0xE8,0xEA,0xEA,0xEE,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 850	/* Multilingual Latin 1 (OEM) */
+#define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xB7,0x8F,0x80,0xD2,0xD3,0xD4,0xD8,0xD7,0xDE,0x8E,0x8F,0x90,0x92,0x92,0xE2,0x99,0xE3,0xEA,0xEB,0x59,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9F, \
+				0xB5,0xD6,0xE0,0xE9,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE7,0xE7,0xE9,0xEA,0xEB,0xED,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 852	/* Latin 2 (OEM) */
+#define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xDE,0x8F,0x80,0x9D,0xD3,0x8A,0x8A,0xD7,0x8D,0x8E,0x8F,0x90,0x91,0x91,0xE2,0x99,0x95,0x95,0x97,0x97,0x99,0x9A,0x9B,0x9B,0x9D,0x9E,0x9F, \
+				0xB5,0xD6,0xE0,0xE9,0xA4,0xA4,0xA6,0xA6,0xA8,0xA8,0xAA,0x8D,0xAC,0xB8,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBD,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC6,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD1,0xD1,0xD2,0xD3,0xD2,0xD5,0xD6,0xD7,0xB7,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE3,0xD5,0xE6,0xE6,0xE8,0xE9,0xE8,0xEB,0xED,0xED,0xDD,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xEB,0xFC,0xFC,0xFE,0xFF}
+
+#elif _CODE_PAGE == 855	/* Cyrillic (OEM) */
+#define _EXCVT {0x81,0x81,0x83,0x83,0x85,0x85,0x87,0x87,0x89,0x89,0x8B,0x8B,0x8D,0x8D,0x8F,0x8F,0x91,0x91,0x93,0x93,0x95,0x95,0x97,0x97,0x99,0x99,0x9B,0x9B,0x9D,0x9D,0x9F,0x9F, \
+				0xA1,0xA1,0xA3,0xA3,0xA5,0xA5,0xA7,0xA7,0xA9,0xA9,0xAB,0xAB,0xAD,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB6,0xB6,0xB8,0xB8,0xB9,0xBA,0xBB,0xBC,0xBE,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD1,0xD1,0xD3,0xD3,0xD5,0xD5,0xD7,0xD7,0xDD,0xD9,0xDA,0xDB,0xDC,0xDD,0xE0,0xDF, \
+				0xE0,0xE2,0xE2,0xE4,0xE4,0xE6,0xE6,0xE8,0xE8,0xEA,0xEA,0xEC,0xEC,0xEE,0xEE,0xEF,0xF0,0xF2,0xF2,0xF4,0xF4,0xF6,0xF6,0xF8,0xF8,0xFA,0xFA,0xFC,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 857	/* Turkish (OEM) */
+#define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xB7,0x8F,0x80,0xD2,0xD3,0xD4,0xD8,0xD7,0x98,0x8E,0x8F,0x90,0x92,0x92,0xE2,0x99,0xE3,0xEA,0xEB,0x98,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9E, \
+				0xB5,0xD6,0xE0,0xE9,0xA5,0xA5,0xA6,0xA6,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xDE,0x59,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 858	/* Multilingual Latin 1 + Euro (OEM) */
+#define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xB7,0x8F,0x80,0xD2,0xD3,0xD4,0xD8,0xD7,0xDE,0x8E,0x8F,0x90,0x92,0x92,0xE2,0x99,0xE3,0xEA,0xEB,0x59,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9F, \
+				0xB5,0xD6,0xE0,0xE9,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD1,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE7,0xE7,0xE9,0xEA,0xEB,0xED,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 862	/* Hebrew (OEM) */
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
+				0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 866	/* Russian (OEM) */
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
+				0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0x90,0x91,0x92,0x93,0x9d,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xF0,0xF0,0xF2,0xF2,0xF4,0xF4,0xF6,0xF6,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 874	/* Thai (OEM, Windows) */
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
+				0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 1250 /* Central Europe (Windows) */
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x8A,0x9B,0x8C,0x8D,0x8E,0x8F, \
+				0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xA3,0xB4,0xB5,0xB6,0xB7,0xB8,0xA5,0xAA,0xBB,0xBC,0xBD,0xBC,0xAF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xF7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xFF}
+
+#elif _CODE_PAGE == 1251 /* Cyrillic (Windows) */
+#define _EXCVT {0x80,0x81,0x82,0x82,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x80,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x8A,0x9B,0x8C,0x8D,0x8E,0x8F, \
+				0xA0,0xA2,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB2,0xA5,0xB5,0xB6,0xB7,0xA8,0xB9,0xAA,0xBB,0xA3,0xBD,0xBD,0xAF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF}
+
+#elif _CODE_PAGE == 1252 /* Latin 1 (Windows) */
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xAd,0x9B,0x8C,0x9D,0xAE,0x9F, \
+				0xA0,0x21,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xF7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0x9F}
+
+#elif _CODE_PAGE == 1253 /* Greek (Windows) */
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
+				0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xA2,0xB8,0xB9,0xBA, \
+				0xE0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xF2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xFB,0xBC,0xFD,0xBF,0xFF}
+
+#elif _CODE_PAGE == 1254 /* Turkish (Windows) */
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x8A,0x9B,0x8C,0x9D,0x9E,0x9F, \
+				0xA0,0x21,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xF7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0x9F}
+
+#elif _CODE_PAGE == 1255 /* Hebrew (Windows) */
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
+				0xA0,0x21,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 1256 /* Arabic (Windows) */
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x8C,0x9D,0x9E,0x9F, \
+				0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0x41,0xE1,0x41,0xE3,0xE4,0xE5,0xE6,0x43,0x45,0x45,0x45,0x45,0xEC,0xED,0x49,0x49,0xF0,0xF1,0xF2,0xF3,0x4F,0xF5,0xF6,0xF7,0xF8,0x55,0xFA,0x55,0x55,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 1257 /* Baltic (Windows) */
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
+				0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xA8,0xB9,0xAA,0xBB,0xBC,0xBD,0xBE,0xAF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xF7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xFF}
+
+#elif _CODE_PAGE == 1258 /* Vietnam (OEM, Windows) */
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0xAC,0x9D,0x9E,0x9F, \
+				0xA0,0x21,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xEC,0xCD,0xCE,0xCF,0xD0,0xD1,0xF2,0xD3,0xD4,0xD5,0xD6,0xF7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xFE,0x9F}
+
+#else
+#error Unknown code page.
+
+#endif
+
+
+
+/* Character code support macros */
+
+#define IsUpper(c)	(((c)>='A')&&((c)<='Z'))
+#define IsLower(c)	(((c)>='a')&&((c)<='z'))
+
+#ifndef _EXCVT	/* DBCS configuration */
+
+#ifdef _DF2S	/* Two 1st byte areas */
+#define IsDBCS1(c)	(((BYTE)(c) >= _DF1S && (BYTE)(c) <= _DF1E) || ((BYTE)(c) >= _DF2S && (BYTE)(c) <= _DF2E))
+#else			/* One 1st byte area */
+#define IsDBCS1(c)	((BYTE)(c) >= _DF1S && (BYTE)(c) <= _DF1E)
+#endif
+
+#ifdef _DS3S	/* Three 2nd byte areas */
+#define IsDBCS2(c)	(((BYTE)(c) >= _DS1S && (BYTE)(c) <= _DS1E) || ((BYTE)(c) >= _DS2S && (BYTE)(c) <= _DS2E) || ((BYTE)(c) >= _DS3S && (BYTE)(c) <= _DS3E))
+#else			/* Two 2nd byte areas */
+#define IsDBCS2(c)	(((BYTE)(c) >= _DS1S && (BYTE)(c) <= _DS1E) || ((BYTE)(c) >= _DS2S && (BYTE)(c) <= _DS2E))
+#endif
+
+#else			/* SBCS configuration */
+
+#define IsDBCS1(c)	0
+#define IsDBCS2(c)	0
+
+#endif /* _EXCVT */
+
+/* Name status flags */
+#define NSFLAG		11		/* Index of name status byte in fn[] */
+#define NS_LOSS		0x01	/* Out of 8.3 format */
+#define NS_LFN		0x02	/* Force to create LFN entry */
+#define NS_LAST		0x04	/* Last segment */
+#define NS_BODY		0x08	/* Lower case flag (body) */
+#define NS_EXT		0x10	/* Lower case flag (ext) */
+#define NS_DOT		0x20	/* Dot entry */
+
+/* FatFs refers the members in the FAT structures with byte offset instead
+/ of structure member because there are incompatibility of the packing option
+/ between various compilers. */
+
+#define BS_jmpBoot			0
+#define BS_OEMName			3
+#define BPB_BytsPerSec		11
+#define BPB_SecPerClus		13
+#define BPB_RsvdSecCnt		14
+#define BPB_NumFATs			16
+#define BPB_RootEntCnt		17
+#define BPB_TotSec16		19
+#define BPB_Media			21
+#define BPB_FATSz16			22
+#define BPB_SecPerTrk		24
+#define BPB_NumHeads		26
+#define BPB_HiddSec			28
+#define BPB_TotSec32		32
+#define BS_55AA				510
+
+#define BS_DrvNum			36
+#define BS_BootSig			38
+#define BS_VolID			39
+#define BS_VolLab			43
+#define BS_FilSysType		54
+
+#define BPB_FATSz32			36
+#define BPB_ExtFlags		40
+#define BPB_FSVer			42
+#define BPB_RootClus		44
+#define BPB_FSInfo			48
+#define BPB_BkBootSec		50
+#define BS_DrvNum32			64
+#define BS_BootSig32		66
+#define BS_VolID32			67
+#define BS_VolLab32			71
+#define BS_FilSysType32		82
+
+#define MBR_Table			446
+
+#define	DIR_Name			0
+#define	DIR_Attr			11
+#define	DIR_NTres			12
+#define	DIR_CrtTime			14
+#define	DIR_CrtDate			16
+#define	DIR_FstClusHI		20
+#define	DIR_WrtTime			22
+#define	DIR_WrtDate			24
+#define	DIR_FstClusLO		26
+#define	DIR_FileSize		28
+#define	LDIR_Ord			0		/* LFN entry order and LLE flag (1) */
+#define	LDIR_Attr			11		/* LFN attribute (1) */
+#define	LDIR_Type			12		/* LFN type (1) */
+#define	LDIR_Chksum			13		/* Sum of corresponding SFN entry */
+#define	LDIR_FstClusLO		26		/* Filled by zero (0) */
+#define	SZ_DIR				32		/* Size of a directory entry */
+#define	LLE					0x40	/* Last long entry flag in LDIR_Ord */
+#define	DDE					0xE5	/* Deleted directory entry mark in DIR_Name[0] */
+#define	NDDE				0x05	/* Replacement of the character collides with DDE */
+
+/*--------------------------------------------------------------------------
+
+   Private Functions
+
+---------------------------------------------------------------------------*/
+
+
+/* Fill memory */
+static
+void mem_set (void* dst, int val, int cnt) {
+	char *d = (char*)dst;
+	while (cnt--) *d++ = (char)val;
+}
+
+/* Compare memory to memory */
+static
+int mem_cmp (const void* dst, const void* src, int cnt) {
+	const char *d = (const char *)dst, *s = (const char *)src;
+	int r = 0;
+	while (cnt-- && (r = *d++ - *s++) == 0) ;
+	return r;
+}
+
+/* Check if chr is contained in the string */
+static
+int chk_chr (const char* str, int chr) {
+	while (*str && *str != chr) str++;
+	return *str;
+}
+
+static
+const WCHAR uni2sjis[] = {
+	/* dummy... */
+	0, 0
+};
+
+WCHAR ff_convert (	/* Converted code, 0 means conversion error */
+	WCHAR	chr,	/* Character code to be converted */
+	UINT	dir		/* 0: Unicode to OEMCP, 1: OEMCP to Unicode */
+)
+{
+	const WCHAR *p;
+	WCHAR c;
+	int i, n, li, hi;
+
+
+	if (chr <= 0x80) {	/* ASCII */
+		c = chr;
+	} else {
+		if (dir) {		/* OEMCP to unicode (Incremental search)*/
+			p = &uni2sjis[1];
+			do {
+				c = *p;
+				p += 2;
+			} while (c && c != chr);
+			p -= 3;
+			c = *p;
+		} else {		/* Unicode to OEMCP */
+			li = 0; hi = sizeof uni2sjis / 4 - 1;
+			for (n = 16; n; n--) {
+				i = li + (hi - li) / 2;
+				if (chr == uni2sjis[i * 2]) break;
+				if (chr > uni2sjis[i * 2])
+					li = i;
+				else
+					hi = i;
+			}
+			c = n ? uni2sjis[i * 2 + 1] : 0;
+		}
+	}
+
+	return c;
+}
+
+WCHAR ff_wtoupper (	/* Upper converted character */
+	WCHAR chr		/* Input character */
+)
+{
+	static const WCHAR tbl_lower[] = { 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0xA1, 0x00A2, 0x00A3, 0x00A5, 0x00AC, 0x00AF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0x0FF, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x137, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x148, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x17E, 0x192, 0x3B1, 0x3B2, 0x3B3, 0x3B4, 0x3B5, 0x3B6, 0x3B7, 0x3B8, 0x3B9, 0x3BA, 0x3BB, 0x3BC, 0x3BD, 0x3BE, 0x3BF, 0x3C0, 0x3C1, 0x3C3, 0x3C4, 0x3C5, 0x3C6, 0x3C7, 0x3C8, 0x3C9, 0x3CA, 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437, 0x438, 0x439, 0x43A, 0x43B, 0x43C, 0x43D, 0x43E, 0x43F, 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, 0x448, 0x449, 0x44A, 0x44B, 0x44C, 0x44D, 0x44E, 0x44F, 0x451, 0x452, 0x453, 0x454, 0x455, 0x456, 0x457, 0x458, 0x459, 0x45A, 0x45B, 0x45C, 0x45E, 0x45F, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x217A, 0x217B, 0x217C, 0x217D, 0x217E, 0x217F, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0 };
+	static const WCHAR tbl_upper[] = { 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x21, 0xFFE0, 0xFFE1, 0xFFE5, 0xFFE2, 0xFFE3, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0x178, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x179, 0x17B, 0x17D, 0x191, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397, 0x398, 0x399, 0x39A, 0x39B, 0x39C, 0x39D, 0x39E, 0x39F, 0x3A0, 0x3A1, 0x3A3, 0x3A4, 0x3A5, 0x3A6, 0x3A7, 0x3A8, 0x3A9, 0x3AA, 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41A, 0x41B, 0x41C, 0x41D, 0x41E, 0x41F, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42A, 0x42B, 0x42C, 0x42D, 0x42E, 0x42F, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x407, 0x408, 0x409, 0x40A, 0x40B, 0x40C, 0x40E, 0x40F, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216A, 0x216B, 0x216C, 0x216D, 0x216E, 0x216F, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0 };
+	int i;
+
+
+	for (i = 0; tbl_lower[i] && chr != tbl_lower[i]; i++) ;
+
+	return tbl_lower[i] ? tbl_upper[i] : chr;
+}
+
+/*-----------------------------------------------------------------------*/
+/* LFN handling - Test/Pick/Fit an LFN segment from/to directory entry   */
+/*-----------------------------------------------------------------------*/
+#if _USE_LFN
+static
+const BYTE LfnOfs[] = {1,3,5,7,9,14,16,18,20,22,24,28,30};	/* Offset of LFN characters in the directory entry */
+
+
+static
+int cmp_lfn (			/* 1:Matched, 0:Not matched */
+	WCHAR* lfnbuf,		/* Pointer to the LFN to be compared */
+	BYTE* dir			/* Pointer to the directory entry containing a part of LFN */
+)
+{
+	UINT i, s;
+	WCHAR wc, uc;
+
+	i = ((dir[LDIR_Ord] & ~LLE) - 1) * 13;	/* Get offset in the LFN buffer */
+	s = 0; wc = 1;
+	do {
+		uc = LD_WORD(dir+LfnOfs[s]);	/* Pick an LFN character from the entry */
+		if (wc) {	/* Last character has not been processed */
+			wc = ff_wtoupper(uc);		/* Convert it to upper case */
+			if (i >= _MAX_LFN || wc != ff_wtoupper(lfnbuf[i++]))	/* Compare it */
+				return 0;				/* Not matched */
+		} else {
+			if (uc != 0xFFFF) return 0;	/* Check filler */
+		}
+	} while (++s < 13);				/* Repeat until all characters in the entry are checked */
+
+	if ((dir[LDIR_Ord] & LLE) && wc && lfnbuf[i])	/* Last segment matched but different length */
+		return 0;
+
+	return 1;						/* The part of LFN matched */
+}
+
+static
+int pick_lfn (			/* 1:Succeeded, 0:Buffer overflow */
+	WCHAR* lfnbuf,		/* Pointer to the Unicode-LFN buffer */
+	BYTE* dir			/* Pointer to the directory entry */
+)
+{
+	UINT i, s;
+	WCHAR wc, uc;
+
+
+	i = ((dir[LDIR_Ord] & 0x3F) - 1) * 13;	/* Offset in the LFN buffer */
+
+	s = 0; wc = 1;
+	do {
+		uc = LD_WORD(dir+LfnOfs[s]);		/* Pick an LFN character from the entry */
+		if (wc) {	/* Last character has not been processed */
+			if (i >= _MAX_LFN) return 0;	/* Buffer overflow? */
+			lfnbuf[i++] = wc = uc;			/* Store it */
+		} else {
+			if (uc != 0xFFFF) return 0;		/* Check filler */
+		}
+	} while (++s < 13);						/* Read all character in the entry */
+
+	if (dir[LDIR_Ord] & LLE) {				/* Put terminator if it is the last LFN part */
+		if (i >= _MAX_LFN) return 0;		/* Buffer overflow? */
+		lfnbuf[i] = 0;
+	}
+
+	return 1;
+}
+#endif
+
+/*-----------------------------------------------------------------------*/
+/* FAT access - Read value of a FAT entry                                */
+/*-----------------------------------------------------------------------*/
+
+static
+CLUST get_fat (	/* 1:IO error, Else:Cluster status */
+	FATFS *fs,
+	CLUST clst	/* Cluster# to get the link information */
+)
+{
+	BYTE buf[4];
+
+	if (clst < 2 || clst >= fs->n_fatent)	/* Range check */
+		return 1;
+
+	switch (fs->fs_type) {
+#if _FS_FAT12
+	case FS_FAT12 : {
+		UINT wc, bc, ofs;
+
+		bc = (UINT)clst; bc += bc / 2;
+		ofs = bc % 512; bc /= 512;
+		if (ofs != 511) {
+			if (disk_readp(buf, fs->fatbase + bc, ofs, 2)) break;
+		} else {
+			if (disk_readp(buf, fs->fatbase + bc, 511, 1)) break;
+			if (disk_readp(buf+1, fs->fatbase + bc + 1, 0, 1)) break;
+		}
+		wc = LD_WORD(buf);
+		return (clst & 1) ? (wc >> 4) : (wc & 0xFFF);
+	}
+#endif
+#if _FS_FAT16
+	case FS_FAT16 :
+		if (disk_readp(buf, fs->fatbase + clst / 256, ((UINT)clst % 256) * 2, 2)) break;
+		return LD_WORD(buf);
+#endif
+#if _FS_FAT32
+	case FS_FAT32 :
+		if (disk_readp(buf, fs->fatbase + clst / 128, ((UINT)clst % 128) * 4, 4)) break;
+		return LD_DWORD(buf) & 0x0FFFFFFF;
+#endif
+	}
+
+	return 1;	/* An error occured at the disk I/O layer */
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Get sector# from cluster# / Get cluster field from directory entry    */
+/*-----------------------------------------------------------------------*/
+
+static
+DWORD clust2sect (	/* !=0: Sector number, 0: Failed - invalid cluster# */
+	FATFS *fs,
+	CLUST clst		/* Cluster# to be converted */
+)
+{
+	clst -= 2;
+	if (clst >= (fs->n_fatent - 2)) return 0;		/* Invalid cluster# */
+	return (DWORD)clst * fs->csize + fs->database;
+}
+
+
+static
+CLUST get_clust (
+	FATFS *fs,
+	BYTE* dir		/* Pointer to directory entry */
+)
+{
+	CLUST clst = 0;
+
+
+	if (_FS_32ONLY || (_FS_FAT32 && fs->fs_type == FS_FAT32)) {
+		clst = LD_WORD(dir+DIR_FstClusHI);
+		clst <<= 16;
+	}
+	clst |= LD_WORD(dir+DIR_FstClusLO);
+
+	return clst;
+}
+
+
+/*-----------------------------------------------------------------------*/
+/* Directory handling - Rewind directory index                           */
+/*-----------------------------------------------------------------------*/
+
+static
+FRESULT dir_rewind (
+	DIR *dj			/* Pointer to directory object */
+)
+{
+	CLUST clst;
+	FATFS *fs = dj->fs;
+
+
+	dj->index = 0;
+	clst = dj->sclust;
+	if (clst == 1 || clst >= fs->n_fatent)	/* Check start cluster range */
+		return FR_DISK_ERR;
+	if (_FS_FAT32 && !clst && (_FS_32ONLY || fs->fs_type == FS_FAT32))	/* Replace cluster# 0 with root cluster# if in FAT32 */
+		clst = (CLUST)fs->dirbase;
+	dj->clust = clst;						/* Current cluster */
+	dj->sect = (_FS_32ONLY || clst) ? clust2sect(fs, clst) : fs->dirbase;	/* Current sector */
+
+	return FR_OK;	/* Seek succeeded */
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Directory handling - Move directory index next                        */
+/*-----------------------------------------------------------------------*/
+
+static
+FRESULT dir_next (	/* FR_OK:Succeeded, FR_NO_FILE:End of table */
+	DIR *dj			/* Pointer to directory object */
+)
+{
+	CLUST clst;
+	WORD i;
+	FATFS *fs = dj->fs;
+
+
+	i = dj->index + 1;
+	if (!i || !dj->sect)	/* Report EOT when index has reached 65535 */
+		return FR_NO_FILE;
+
+	if (!(i % 16)) {		/* Sector changed? */
+		dj->sect++;					/* Next sector */
+
+		if (dj->clust == 0) {	/* Static table */
+			if (i >= fs->n_rootdir)	/* Report EOT when end of table */
+				return FR_NO_FILE;
+		}
+		else {					/* Dynamic table */
+			if (((i / 16) & (fs->csize - 1)) == 0) {	/* Cluster changed? */
+				clst = get_fat(fs, dj->clust);				/* Get next cluster */
+				if (clst <= 1) return FR_DISK_ERR;
+				if (clst >= fs->n_fatent)		/* When it reached end of dynamic table */
+					return FR_NO_FILE;							/* Report EOT */
+				dj->clust = clst;				/* Initialize data for new cluster */
+				dj->sect = clust2sect(fs, clst);
+			}
+		}
+	}
+
+	dj->index = i;
+
+	return FR_OK;
+}
+
+/*-----------------------------------------------------------------------*/
+/* Calculate sum of an SFN                                               */
+/*-----------------------------------------------------------------------*/
+#if _USE_LFN
+static
+BYTE sum_sfn (
+	const BYTE* dir		/* Pointer to the SFN entry */
+)
+{
+	BYTE sum = 0;
+	UINT n = 11;
+
+	do sum = (sum >> 1) + (sum << 7) + *dir++; while (--n);
+	return sum;
+}
+#endif
+
+/*-----------------------------------------------------------------------*/
+/* Directory handling - Find an object in the directory                  */
+/*-----------------------------------------------------------------------*/
+
+static
+FRESULT dir_find (
+	DIR *dj,		/* Pointer to the directory object linked to the file name */
+	BYTE *dir		/* 32-byte working buffer */
+)
+{
+	FRESULT res;
+	BYTE c;
+#if _USE_LFN
+	BYTE a, ord, sum;
+#endif
+
+	res = dir_rewind(dj);			/* Rewind directory object */
+	if (res != FR_OK) return res;
+
+#if _USE_LFN
+	ord = sum = 0xFF; dj->lfn_idx = 0xFFFF;	/* Reset LFN sequence */
+#endif
+	do {
+		res = disk_readp(dir, dj->sect, (dj->index % 16) * 32, 32)	/* Read an entry */
+			? FR_DISK_ERR : FR_OK;
+		if (res != FR_OK) break;
+		c = dir[DIR_Name];	/* First character */
+		if (c == 0) { res = FR_NO_FILE; break; }	/* Reached to end of table */
+#if _USE_LFN	/* LFN configuration */
+		a = dir[DIR_Attr] & AM_MASK;
+		if (c == DDE || ((a & AM_VOL) && a != AM_LFN)) {	/* An entry without valid data */
+			ord = 0xFF; dj->lfn_idx = 0xFFFF;	/* Reset LFN sequence */
+		} else {
+			if (a == AM_LFN) {			/* An LFN entry is found */
+				if (dj->lfn) {
+					if (c & LLE) {		/* Is it start of LFN sequence? */
+						sum = dir[LDIR_Chksum];
+						c &= ~LLE; ord = c;	/* LFN start order */
+						dj->lfn_idx = dj->index;	/* Start index of LFN */
+					}
+					/* Check validity of the LFN entry and compare it with given name */
+					ord = (c == ord && sum == dir[LDIR_Chksum] && cmp_lfn(dj->lfn, dir)) ? ord - 1 : 0xFF;
+				}
+			} else {					/* An SFN entry is found */
+				if (!ord && sum == sum_sfn(dir)) break;	/* LFN matched? */
+				if (!(dj->fn[NSFLAG] & NS_LOSS) && !mem_cmp(dir, dj->fn, 11)) break;	/* SFN matched? */
+				ord = 0xFF; dj->lfn_idx = 0xFFFF;	/* Reset LFN sequence */
+			}
+		}
+#else		/* Non LFN configuration */
+		if (!(dir[DIR_Attr] & AM_VOL) && !mem_cmp(dir, dj->fn, 11)) /* Is it a valid entry? */
+			break;
+#endif
+		res = dir_next(dj);					/* Next entry */
+	} while (res == FR_OK);
+
+	return res;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Read an object from the directory                                     */
+/*-----------------------------------------------------------------------*/
+#if _USE_DIR
+static
+FRESULT dir_read (
+	DIR *dj,		/* Pointer to the directory object to store read object name */
+	BYTE *dir		/* 32-byte working buffer */
+)
+{
+	FRESULT res;
+	BYTE a, c;
+#if _USE_LFN
+	BYTE ord = 0xFF, sum = 0xFF;
+#endif
+
+	res = FR_NO_FILE;
+	while (dj->sect) {
+		res = disk_readp(dir, dj->sect, (dj->index % 16) * 32, 32)	/* Read an entry */
+			? FR_DISK_ERR : FR_OK;
+		if (res != FR_OK) break;
+		c = dir[DIR_Name];
+		if (c == 0) { res = FR_NO_FILE; break; }	/* Reached to end of table */
+		a = dir[DIR_Attr] & AM_MASK;
+#if _USE_LFN	/* LFN configuration */
+		if (c == DDE || c == '.' || ((a & ~AM_ARC) == AM_VOL)) {	/* An entry without valid data */
+			ord = 0xFF;
+		} else {
+			if (a == AM_LFN) {			/* An LFN entry is found */
+				if (c & LLE) {			/* Is it start of LFN sequence? */
+					sum = dir[LDIR_Chksum];
+					c &= ~LLE; ord = c;
+					dj->lfn_idx = dj->index;
+				}
+				/* Check LFN validity and capture it */
+				ord = (c == ord && sum == dir[LDIR_Chksum] && pick_lfn(dj->lfn, dir)) ? ord - 1 : 0xFF;
+			} else {					/* An SFN entry is found */
+				if (ord || sum != sum_sfn(dir))	/* Is there a valid LFN? */
+					dj->lfn_idx = 0xFFFF;		/* It has no LFN. */
+				break;
+			}
+		}
+#else		/* Non LFN configuration */
+		if (c != DDE && c != '.' && !((a & ~AM_ARC) == AM_VOL))	/* Is it a valid entry? */
+			break;
+#endif
+		res = dir_next(dj);			/* Next entry */
+		if (res != FR_OK) break;
+	}
+
+	if (res != FR_OK) dj->sect = 0;
+
+	return res;
+}
+#endif
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Pick a segment and create the object name in directory form           */
+/*-----------------------------------------------------------------------*/
+
+
+static
+FRESULT create_name (
+	DIR* dj,			/* Pointer to the directory object */
+	const char** path	/* Pointer to pointer to the segment in the path string */
+)
+{
+#if _USE_LFN	/* LFN configuration */
+	BYTE b, cf;
+	WCHAR w, *lfn;
+	UINT i, ni, si, di;
+	const char *p;
+
+	/* Create LFN in Unicode */
+	for (p = *path; *p == '/' || *p == '\\'; p++) ;	/* Strip duplicated separator */
+	lfn = dj->lfn;
+	si = di = 0;
+	for (;;) {
+		w = p[si++];					/* Get a character */
+		if (w < ' ' || w == '/' || w == '\\') break;	/* Break on end of segment */
+		if (di >= _MAX_LFN)				/* Reject too long name */
+			return FR_INVALID_NAME;
+#if !_LFN_UNICODE
+		w &= 0xFF;
+		if (IsDBCS1(w)) {				/* Check if it is a DBC 1st byte (always false on SBCS cfg) */
+			b = (BYTE)p[si++];			/* Get 2nd byte */
+			if (!IsDBCS2(b))
+				return FR_INVALID_NAME;	/* Reject invalid sequence */
+			w = (w << 8) + b;			/* Create a DBC */
+		}
+		w = ff_convert(w, 1);			/* Convert ANSI/OEM to Unicode */
+		if (!w) return FR_INVALID_NAME;	/* Reject invalid code */
+#endif
+		if (w < 0x80 && chk_chr("\"*:<>\?|\x7F", w)) /* Reject illegal characters for LFN */
+			return FR_INVALID_NAME;
+		lfn[di++] = w;					/* Store the Unicode character */
+	}
+	*path = &p[si];						/* Return pointer to the next segment */
+	cf = (w < ' ') ? NS_LAST : 0;		/* Set last segment flag if end of path */
+	while (di) {						/* Strip trailing spaces and dots */
+		w = lfn[di-1];
+		if (w != ' ' && w != '.') break;
+		di--;
+	}
+	if (!di) return FR_INVALID_NAME;	/* Reject nul string */
+
+	lfn[di] = 0;						/* LFN is created */
+
+	/* Create SFN in directory form */
+	mem_set(dj->fn, ' ', 11);
+	for (si = 0; lfn[si] == ' ' || lfn[si] == '.'; si++) ;	/* Strip leading spaces and dots */
+	if (si) cf |= NS_LOSS | NS_LFN;
+	while (di && lfn[di - 1] != '.') di--;	/* Find extension (di<=si: no extension) */
+
+	b = i = 0; ni = 8;
+	for (;;) {
+		w = lfn[si++];					/* Get an LFN character */
+		if (!w) break;					/* Break on end of the LFN */
+		if (w == ' ' || (w == '.' && si != di)) {	/* Remove spaces and dots */
+			cf |= NS_LOSS | NS_LFN; continue;
+		}
+
+		if (i >= ni || si == di) {		/* Extension or end of SFN */
+			if (ni == 11) {				/* Long extension */
+				cf |= NS_LOSS | NS_LFN; break;
+			}
+			if (si != di) cf |= NS_LOSS | NS_LFN;	/* Out of 8.3 format */
+			if (si > di) break;			/* No extension */
+			si = di; i = 8; ni = 11;	/* Enter extension section */
+			b <<= 2; continue;
+		}
+
+		if (w >= 0x80) {				/* Non ASCII character */
+#ifdef _EXCVT
+			w = ff_convert(w, 0);		/* Unicode -> OEM code */
+			if (w) w = ExCvt[w - 0x80];	/* Convert extended character to upper (SBCS) */
+#else
+			w = ff_convert(ff_wtoupper(w), 0);	/* Upper converted Unicode -> OEM code */
+#endif
+			cf |= NS_LFN;				/* Force create LFN entry */
+		}
+
+		if (_DF1S && w >= 0x100) {		/* Double byte character (always false on SBCS cfg) */
+			if (i >= ni - 1) {
+				cf |= NS_LOSS | NS_LFN; i = ni; continue;
+			}
+			dj->fn[i++] = (BYTE)(w >> 8);
+		} else {						/* Single byte character */
+			if (!w || chk_chr("+,;=[]", w)) {	/* Replace illegal characters for SFN */
+				w = '_'; cf |= NS_LOSS | NS_LFN;/* Lossy conversion */
+			} else {
+				if (IsUpper(w)) {		/* ASCII large capital */
+					b |= 2;
+				} else {
+					if (IsLower(w)) {	/* ASCII small capital */
+						b |= 1; w -= 0x20;
+					}
+				}
+			}
+		}
+		dj->fn[i++] = (BYTE)w;
+	}
+
+	if (dj->fn[0] == DDE) dj->fn[0] = NDDE;	/* If the first character collides with deleted mark, replace it with 0x05 */
+
+	if (ni == 8) b <<= 2;
+	if ((b & 0x0C) == 0x0C || (b & 0x03) == 0x03)	/* Create LFN entry when there are composite capitals */
+		cf |= NS_LFN;
+	if (!(cf & NS_LFN)) {						/* When LFN is in 8.3 format without extended character, NT flags are created */
+		if ((b & 0x03) == 0x01) cf |= NS_EXT;	/* NT flag (Extension has only small capital) */
+		if ((b & 0x0C) == 0x04) cf |= NS_BODY;	/* NT flag (Filename has only small capital) */
+	}
+
+	dj->fn[NSFLAG] = cf;	/* SFN is created */
+
+	return FR_OK;
+
+
+#else	/* Non-LFN configuration */
+	BYTE c, ni, si, i, *sfn;
+	const char *p;
+#if _USE_LCC
+#ifdef _EXCVT
+	static const BYTE cvt[] = _EXCVT;
+#endif
+#endif
+
+	/* Create file name in directory form */
+	sfn = dj->fn;
+	mem_set(sfn, ' ', 11);
+	si = i = 0; ni = 8;
+	p = *path;
+	for (;;) {
+		c = p[si++];
+		if (c <= ' ' || c == '/') break;	/* Break on end of segment */
+		if (c == '.' || i >= ni) {
+			if (ni != 8 || c != '.') break;
+			i = 8; ni = 11;
+			continue;
+		}
+#if _USE_LCC
+#ifdef _EXCVT
+		if (c >= 0x80)					/* To upper extended char (SBCS) */
+			c = cvt[c - 0x80];
+#endif
+		if (IsDBCS1(c) && i < ni - 1) {	/* DBC 1st byte? */
+			BYTE d = p[si++];			/* Get 2nd byte */
+			sfn[i++] = c;
+			sfn[i++] = d;
+		} else
+#endif
+		{						/* Single byte code */
+			if (_USE_LCC && IsLower(c)) c -= 0x20;	/* toupper */
+			sfn[i++] = c;
+		}
+	}
+	*path = &p[si];						/* Rerurn pointer to the next segment */
+
+	sfn[11] = (c <= ' ') ? 1 : 0;		/* Set last segment flag if end of path */
+
+	return FR_OK;
+#endif
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Get file information from directory entry                             */
+/*-----------------------------------------------------------------------*/
+#if _USE_DIR
+static
+void get_fileinfo (		/* No return code */
+	DIR *dj,			/* Pointer to the directory object */
+	BYTE *dir,			/* 32-byte working buffer */
+	FILINFO *fno	 	/* Pointer to store the file information */
+)
+{
+	BYTE i, c;
+	char *p;
+
+
+	p = fno->fname;
+	if (dj->sect) {
+		i = 0;
+		while (i < 11) {		/* Copy name body and extension */
+			c = dir[i++];
+			if (c == ' ') continue;			/* Skip padding spaces */
+			if (c == NDDE) c = DDE;			/* Restore replaced DDE character */
+			if (i == 9) *p++ = '.';			/* Insert a . if extension is exist */
+#if _USE_LFN
+			if (IsUpper(c) && (dir[DIR_NTres] & (i >= 9 ? NS_EXT : NS_BODY)))
+				c += 0x20;			/* To lower */
+#endif
+			*p++ = c;
+		}
+		fno->fattrib = dir[DIR_Attr];				/* Attribute */
+		fno->fsize = LD_DWORD(dir+DIR_FileSize);	/* Size */
+		fno->fdate = LD_WORD(dir+DIR_WrtDate);		/* Date */
+		fno->ftime = LD_WORD(dir+DIR_WrtTime);		/* Time */
+	}
+	*p = 0;
+
+#if _USE_LFN
+	if (fno->lfname) {
+		WCHAR w, *lfn;
+
+		i = 0; p = fno->lfname;
+		if (dj->sect && fno->lfsize && dj->lfn_idx != 0xFFFF) {	/* Get LFN if available */
+			lfn = dj->lfn;
+			while ((w = *lfn++) != 0) {		/* Get an LFN character */
+#if !_LFN_UNICODE
+				w = ff_convert(w, 0);		/* Unicode -> OEM */
+				if (!w) { i = 0; break; }	/* No LFN if it could not be converted */
+				if (_DF1S && w >= 0x100)	/* Put 1st byte if it is a DBC (always false on SBCS cfg) */
+					p[i++] = (w >> 8);
+#endif
+				if (i >= fno->lfsize - 1) { i = 0; break; }	/* No LFN if buffer overflow */
+				p[i++] = w;
+			}
+		}
+		p[i] = 0;	/* Terminate LFN string by a \0 */
+	}
+#endif
+}
+#endif /* _USE_DIR */
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Follow a file path                                                    */
+/*-----------------------------------------------------------------------*/
+
+static
+FRESULT follow_path (	/* FR_OK(0): successful, !=0: error code */
+	DIR* dj,			/* Directory object to return last directory and found object */
+	BYTE *dir,			/* 32-byte working buffer */
+	const char* path	/* Full-path string to find a file or directory */
+)
+{
+	FRESULT res;
+	BYTE ns;
+	FATFS *fs = dj->fs;
+
+
+	while (*path == ' ') path++;		/* Strip leading spaces */
+	if (*path == '/') path++;			/* Strip heading separator if exist */
+	dj->sclust = 0;						/* Set start directory (always root dir) */
+
+	if ((BYTE)*path < ' ') {			/* Null path means the root directory */
+		res = dir_rewind(dj);
+		dir[0] = 0;
+
+	} else {								/* Follow path */
+		for (;;) {
+			res = create_name(dj, &path);	/* Get a segment */
+			if (res != FR_OK) break;
+			res = dir_find(dj, dir);		/* Find it */
+			ns = dj->fn[NSFLAG];
+			if (res != FR_OK) {				/* Failed to find the object */
+				if (res == FR_NO_FILE) {	/* Object is not found */
+					if (!(ns & NS_LAST)) res = FR_NO_PATH;	/* Adjust error code if not last segment */
+				}
+				break;
+			}
+			if (ns & NS_LAST) break;			/* Last segment matched. Function completed. */
+			if (!(dir[DIR_Attr] & AM_DIR)) { /* Cannot follow path because it is a file */
+				res = FR_NO_PATH; break;
+			}
+			dj->sclust = get_clust(fs, dir);	/* Follow next */
+		}
+	}
+
+	return res;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Check a sector if it is an FAT boot record                            */
+/*-----------------------------------------------------------------------*/
+
+static
+BYTE check_fs (	/* 0:The FAT boot record, 1:Valid boot record but not an FAT, 2:Not a boot record, 3:Error */
+	FATFS *fs,
+	BYTE *buf,	/* Working buffer */
+	DWORD sect	/* Sector# (lba) to check if it is an FAT boot record or not */
+)
+{
+	if (disk_readp(buf, sect, 510, 2))		/* Read the boot record */
+		return 3;
+	if (LD_WORD(buf) != 0xAA55)				/* Check record signature */
+		return 2;
+
+	if (!_FS_32ONLY && !disk_readp(buf, sect, BS_FilSysType, 2) && LD_WORD(buf) == 0x4146)	/* Check FAT12/16 */
+		return 0;
+	if (_FS_FAT32 && !disk_readp(buf, sect, BS_FilSysType32, 2) && LD_WORD(buf) == 0x4146)	/* Check FAT32 */
+		return 0;
+	return 1;
+}
+
+
+
+
+/*--------------------------------------------------------------------------
+
+   Public Functions
+
+--------------------------------------------------------------------------*/
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Mount/Unmount a Locical Drive                                         */
+/*-----------------------------------------------------------------------*/
+
+FRESULT pf_mount (
+	FATFS *fs		/* Pointer to new file system object */
+)
+{
+	BYTE fmt, buf[36];
+	DWORD bsect, fsize, tsect, mclst;
+
+	if (disk_get_status() & STA_NOINIT)	/* Check if the drive is ready or not */
+		return FR_NOT_READY;
+
+	/* Search FAT partition on the drive */
+	bsect = 0;
+	fmt = check_fs(fs, buf, bsect);			/* Check sector 0 as an SFD format */
+	if (fmt == 1) {						/* Not an FAT boot record, it may be FDISK format */
+		/* Check a partition listed in top of the partition table */
+		if (disk_readp(buf, bsect, MBR_Table, 16)) {	/* 1st partition entry */
+			fmt = 3;
+		} else {
+			if (buf[4]) {					/* Is the partition existing? */
+				bsect = LD_DWORD(&buf[8]);	/* Partition offset in LBA */
+				fmt = check_fs(fs, buf, bsect);	/* Check the partition */
+			}
+		}
+	}
+	if (fmt == 3) return FR_DISK_ERR;
+	if (fmt) return FR_NO_FILESYSTEM;	/* No valid FAT patition is found */
+
+	/* Initialize the file system object */
+	if (disk_readp(buf, bsect, 13, sizeof (buf))) return FR_DISK_ERR;
+
+	fsize = LD_WORD(buf+BPB_FATSz16-13);				/* Number of sectors per FAT */
+	if (!fsize) fsize = LD_DWORD(buf+BPB_FATSz32-13);
+
+	fsize *= buf[BPB_NumFATs-13];						/* Number of sectors in FAT area */
+	fs->fatbase = bsect + LD_WORD(buf+BPB_RsvdSecCnt-13); /* FAT start sector (lba) */
+	fs->csize = buf[BPB_SecPerClus-13];					/* Number of sectors per cluster */
+	fs->n_rootdir = LD_WORD(buf+BPB_RootEntCnt-13);		/* Nmuber of root directory entries */
+	tsect = LD_WORD(buf+BPB_TotSec16-13);				/* Number of sectors on the file system */
+	if (!tsect) tsect = LD_DWORD(buf+BPB_TotSec32-13);
+	mclst = (tsect						/* Last cluster# + 1 */
+		- LD_WORD(buf+BPB_RsvdSecCnt-13) - fsize - fs->n_rootdir / 16
+		) / fs->csize + 2;
+	fs->n_fatent = (CLUST)mclst;
+
+	fmt = 0;							/* Determine the FAT sub type */
+	if (_FS_FAT12 && mclst < 0xFF7)
+		fmt = FS_FAT12;
+	if (_FS_FAT16 && mclst >= 0xFF8 && mclst < 0xFFF7)
+		fmt = FS_FAT16;
+	if (_FS_FAT32 && mclst >= 0xFFF7)
+		fmt = FS_FAT32;
+	if (!fmt) return FR_NO_FILESYSTEM;
+	fs->fs_type = fmt;
+
+	if (_FS_32ONLY || (_FS_FAT32 && fmt == FS_FAT32))
+		fs->dirbase = LD_DWORD(buf+(BPB_RootClus-13));	/* Root directory start cluster */
+	else
+		fs->dirbase = fs->fatbase + fsize;				/* Root directory start sector (lba) */
+	fs->database = fs->fatbase + fsize + fs->n_rootdir / 16;	/* Data start sector (lba) */
+
+	fs->flag = 0;
+
+	return FR_OK;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Open or Create a File                                                 */
+/*-----------------------------------------------------------------------*/
+
+FRESULT pf_open (
+	FATFS *fs,
+	const char *path	/* Pointer to the file name */
+)
+{
+	FRESULT res;
+	DIR dj;
+	BYTE sp[12], dir[32];
+
+
+	if (!fs) return FR_NOT_ENABLED;		/* Check file system */
+
+	fs->flag = 0;
+	dj.fs = fs;
+	dj.fn = sp;
+#if _USE_LFN
+	dj.lfn = LfnBuf;
+#endif
+	res = follow_path(&dj, dir, path);	/* Follow the file path */
+	if (res != FR_OK) return res;		/* Follow failed */
+	if (!dir[0] || (dir[DIR_Attr] & AM_DIR))	/* It is a directory */
+		return FR_NO_FILE;
+
+	fs->org_clust = get_clust(fs, dir);		/* File start cluster */
+	fs->fsize = LD_DWORD(dir+DIR_FileSize);	/* File size */
+	fs->fptr = 0;						/* File pointer */
+	fs->flag = FA_OPENED;
+
+	return FR_OK;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Read File                                                             */
+/*-----------------------------------------------------------------------*/
+#if _USE_READ
+
+FRESULT pf_read (
+	FATFS *fs,
+	void* buff,		/* Pointer to the read buffer (NULL:Forward data to the stream)*/
+	UINT btr,		/* Number of bytes to read */
+	UINT* br		/* Pointer to number of bytes read */
+)
+{
+	DRESULT dr;
+	CLUST clst;
+	DWORD sect, remain;
+	UINT rcnt;
+	BYTE cs, *rbuff = buff;
+
+
+	*br = 0;
+	if (!fs) return FR_NOT_ENABLED;		/* Check file system */
+	if (!(fs->flag & FA_OPENED))		/* Check if opened */
+		return FR_NOT_OPENED;
+
+	remain = fs->fsize - fs->fptr;
+	if (btr > remain) btr = (UINT)remain;			/* Truncate btr by remaining bytes */
+
+	while (btr)	{									/* Repeat until all data transferred */
+		if ((fs->fptr % 512) == 0) {				/* On the sector boundary? */
+			cs = (BYTE)(fs->fptr / 512 & (fs->csize - 1));	/* Sector offset in the cluster */
+			if (!cs) {								/* On the cluster boundary? */
+				if (fs->fptr == 0)					/* On the top of the file? */
+					clst = fs->org_clust;
+				else
+					clst = get_fat(fs, fs->curr_clust);
+				if (clst <= 1) ABORT(FR_DISK_ERR);
+				fs->curr_clust = clst;				/* Update current cluster */
+			}
+			sect = clust2sect(fs, fs->curr_clust);		/* Get current sector */
+			if (!sect) ABORT(FR_DISK_ERR);
+			fs->dsect = sect + cs;
+		}
+		rcnt = 512 - (UINT)fs->fptr % 512;			/* Get partial sector data from sector buffer */
+		if (rcnt > btr) rcnt = btr;
+		dr = disk_readp(!buff ? 0 : rbuff, fs->dsect, (UINT)fs->fptr % 512, rcnt);
+		if (dr) ABORT(FR_DISK_ERR);
+		fs->fptr += rcnt; rbuff += rcnt;			/* Update pointers and counters */
+		btr -= rcnt; *br += rcnt;
+	}
+
+	return FR_OK;
+}
+#endif
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Write File                                                            */
+/*-----------------------------------------------------------------------*/
+#if _USE_WRITE
+
+FRESULT pf_write (
+	FATFS *fs,
+	const void* buff,	/* Pointer to the data to be written */
+	UINT btw,			/* Number of bytes to write (0:Finalize the current write operation) */
+	UINT* bw			/* Pointer to number of bytes written */
+)
+{
+	CLUST clst;
+	DWORD sect, remain;
+	const BYTE *p = buff;
+	BYTE cs;
+	UINT wcnt;
+
+
+	*bw = 0;
+	if (!fs) return FR_NOT_ENABLED;		/* Check file system */
+	if (!(fs->flag & FA_OPENED))		/* Check if opened */
+		return FR_NOT_OPENED;
+
+	if (!btw) {		/* Finalize request */
+		if ((fs->flag & FA__WIP) && disk_writep(0, 0)) ABORT(FR_DISK_ERR);
+		fs->flag &= ~FA__WIP;
+		return FR_OK;
+	} else {		/* Write data request */
+		if (!(fs->flag & FA__WIP))		/* Round-down fptr to the sector boundary */
+			fs->fptr &= 0xFFFFFE00;
+	}
+	remain = fs->fsize - fs->fptr;
+	if (btw > remain) btw = (UINT)remain;			/* Truncate btw by remaining bytes */
+
+	while (btw)	{									/* Repeat until all data transferred */
+		if ((UINT)fs->fptr % 512 == 0) {			/* On the sector boundary? */
+			cs = (BYTE)(fs->fptr / 512 & (fs->csize - 1));	/* Sector offset in the cluster */
+			if (!cs) {								/* On the cluster boundary? */
+				if (fs->fptr == 0)					/* On the top of the file? */
+					clst = fs->org_clust;
+				else
+					clst = get_fat(fs, fs->curr_clust);
+				if (clst <= 1) ABORT(FR_DISK_ERR);
+				fs->curr_clust = clst;				/* Update current cluster */
+			}
+			sect = clust2sect(fs, fs->curr_clust);		/* Get current sector */
+			if (!sect) ABORT(FR_DISK_ERR);
+			fs->dsect = sect + cs;
+			if (disk_writep(0, fs->dsect)) ABORT(FR_DISK_ERR);	/* Initiate a sector write operation */
+			fs->flag |= FA__WIP;
+		}
+		wcnt = 512 - (UINT)fs->fptr % 512;			/* Number of bytes to write to the sector */
+		if (wcnt > btw) wcnt = btw;
+		if (disk_writep(p, wcnt)) ABORT(FR_DISK_ERR);	/* Send data to the sector */
+		fs->fptr += wcnt; p += wcnt;				/* Update pointers and counters */
+		btw -= wcnt; *bw += wcnt;
+		if ((UINT)fs->fptr % 512 == 0) {
+			if (disk_writep(0, 0)) ABORT(FR_DISK_ERR);	/* Finalize the currtent secter write operation */
+			fs->flag &= ~FA__WIP;
+		}
+	}
+
+	return FR_OK;
+}
+#endif
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Seek File R/W Pointer                                                 */
+/*-----------------------------------------------------------------------*/
+#if _USE_LSEEK
+
+FRESULT pf_lseek (
+	FATFS *fs,
+	DWORD ofs		/* File pointer from top of file */
+)
+{
+	CLUST clst;
+	DWORD bcs, sect, ifptr;
+
+
+	if (!fs) return FR_NOT_ENABLED;		/* Check file system */
+	if (!(fs->flag & FA_OPENED))		/* Check if opened */
+			return FR_NOT_OPENED;
+
+	if (ofs > fs->fsize) ofs = fs->fsize;	/* Clip offset with the file size */
+	ifptr = fs->fptr;
+	fs->fptr = 0;
+	if (ofs > 0) {
+		bcs = (DWORD)fs->csize * 512;	/* Cluster size (byte) */
+		if (ifptr > 0 &&
+			(ofs - 1) / bcs >= (ifptr - 1) / bcs) {	/* When seek to same or following cluster, */
+			fs->fptr = (ifptr - 1) & ~(bcs - 1);	/* start from the current cluster */
+			ofs -= fs->fptr;
+			clst = fs->curr_clust;
+		} else {							/* When seek to back cluster, */
+			clst = fs->org_clust;			/* start from the first cluster */
+			fs->curr_clust = clst;
+		}
+		while (ofs > bcs) {				/* Cluster following loop */
+			clst = get_fat(fs, clst);		/* Follow cluster chain */
+			if (clst <= 1 || clst >= fs->n_fatent) ABORT(FR_DISK_ERR);
+			fs->curr_clust = clst;
+			fs->fptr += bcs;
+			ofs -= bcs;
+		}
+		fs->fptr += ofs;
+		sect = clust2sect(fs, clst);		/* Current sector */
+		if (!sect) ABORT(FR_DISK_ERR);
+		fs->dsect = sect + (fs->fptr / 512 & (fs->csize - 1));
+	}
+
+	return FR_OK;
+}
+#endif
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Create a Directroy Object                                             */
+/*-----------------------------------------------------------------------*/
+#if _USE_DIR
+
+FRESULT pf_opendir (
+	DIR *dj,			/* Pointer to directory object to create */
+	const char *path	/* Pointer to the directory path */
+)
+{
+	FRESULT res;
+	BYTE sp[12], dir[32];
+	FATFS *fs = dj->fs;
+
+
+	if (!fs) {				/* Check file system */
+		res = FR_NOT_ENABLED;
+	} else {
+		dj->fn = sp;
+#if _USE_LFN
+		dj->lfn = LfnBuf;
+#endif
+		res = follow_path(dj, dir, path);		/* Follow the path to the directory */
+		if (res == FR_OK) {						/* Follow completed */
+			if (dir[0]) {						/* It is not the root dir */
+				if (dir[DIR_Attr] & AM_DIR)		/* The object is a directory */
+					dj->sclust = get_clust(fs, dir);
+				else							/* The object is not a directory */
+					res = FR_NO_FILE;
+			}
+			if (res == FR_OK)
+				res = dir_rewind(dj);			/* Rewind dir */
+		}
+	}
+
+	return res;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Read Directory Entry in Sequense                                      */
+/*-----------------------------------------------------------------------*/
+
+FRESULT pf_readdir (
+	DIR *dj,			/* Pointer to the open directory object */
+	FILINFO *fno		/* Pointer to file information to return */
+)
+{
+	FRESULT res;
+	BYTE sp[12], dir[32];
+	FATFS *fs = dj->fs;
+
+
+	if (!fs) {				/* Check file system */
+		res = FR_NOT_ENABLED;
+	} else {
+		dj->fn = sp;
+		if (!fno) {
+			res = dir_rewind(dj);
+		} else {
+			res = dir_read(dj, dir);	/* Get current directory item */
+			if (res == FR_NO_FILE) res = FR_OK;
+			if (res == FR_OK) {				/* A valid entry is found */
+				get_fileinfo(dj, dir, fno);	/* Get the object information */
+				res = dir_next(dj);			/* Increment read index for next */
+				if (res == FR_NO_FILE) res = FR_OK;
+			}
+		}
+	}
+
+	return res;
+}
+
+#endif /* _USE_DIR */
+
Index: uKadecot/trunk/pfatfs/pff.h
===================================================================
--- uKadecot/trunk/pfatfs/pff.h	(revision 101)
+++ uKadecot/trunk/pfatfs/pff.h	(revision 101)
@@ -0,0 +1,170 @@
+/*---------------------------------------------------------------------------/
+/  Petit FatFs - FAT file system module include file  R0.03   (C)ChaN, 2014
+/----------------------------------------------------------------------------/
+/ Petit FatFs module is an open source software to implement FAT file system to
+/ small embedded systems. This is a free software and is opened for education,
+/ research and commercial developments under license policy of following trems.
+/
+/  Copyright (C) 2014, ChaN, all right reserved.
+/
+/ * The Petit FatFs module is a free software and there is NO WARRANTY.
+/ * No restriction on use. You can use, modify and redistribute it for
+/   personal, non-profit or commercial use UNDER YOUR RESPONSIBILITY.
+/ * Redistributions of source code must retain the above copyright notice.
+/
+/----------------------------------------------------------------------------*/
+
+#ifndef _PFATFS
+#define _PFATFS	4004	/* Revision ID */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "integer.h"
+#include "pffconf.h"
+
+#if _PFATFS != _PFFCONF
+#error Wrong configuration file (pffconf.h).
+#endif
+
+#if _FS_FAT32
+#define	CLUST	DWORD
+#else
+#define	CLUST	WORD
+#endif
+
+
+/* File system object structure */
+
+typedef struct {
+	BYTE	fs_type;	/* FAT sub type */
+	BYTE	flag;		/* File status flags */
+	BYTE	csize;		/* Number of sectors per cluster */
+	BYTE	pad1;
+	WORD	n_rootdir;	/* Number of root directory entries (0 on FAT32) */
+	CLUST	n_fatent;	/* Number of FAT entries (= number of clusters + 2) */
+	DWORD	fatbase;	/* FAT start sector */
+	DWORD	dirbase;	/* Root directory start sector (Cluster# on FAT32) */
+	DWORD	database;	/* Data start sector */
+	DWORD	fptr;		/* File R/W pointer */
+	DWORD	fsize;		/* File size */
+	CLUST	org_clust;	/* File start cluster */
+	CLUST	curr_clust;	/* File current cluster */
+	DWORD	dsect;		/* File current data sector */
+} FATFS;
+
+
+
+/* Directory object structure */
+
+typedef struct {
+	FATFS*	fs;			/* Pointer to the owner file system object (**do not change order**) */
+	WORD	index;		/* Current read/write index number */
+	BYTE*	fn;			/* Pointer to the SFN (in/out) {file[8],ext[3],status[1]} */
+	CLUST	sclust;		/* Table start cluster (0:Static table) */
+	CLUST	clust;		/* Current cluster */
+	DWORD	sect;		/* Current sector */
+#if _USE_LFN
+	WCHAR*	lfn;		/* Pointer to the LFN working buffer */
+	WORD	lfn_idx;	/* Last matched LFN index number (0xFFFF:No LFN) */
+#endif
+} DIR;
+
+
+
+/* File status structure */
+
+typedef struct {
+	DWORD	fsize;		/* File size */
+	WORD	fdate;		/* Last modified date */
+	WORD	ftime;		/* Last modified time */
+	BYTE	fattrib;	/* Attribute */
+	char	fname[13];	/* File name */
+#if _USE_LFN
+	char*	lfname;		/* Pointer to the LFN buffer */
+	UINT 	lfsize;		/* Size of LFN buffer in TCHAR */
+#endif
+} FILINFO;
+
+
+
+/* File function return code (FRESULT) */
+
+typedef enum {
+	FR_OK = 0,			/* (0) Succeeded */
+	FR_DISK_ERR,		/* (1) A hard error occurred in the low level disk I/O layer */
+	FR_NOT_READY,		/* (2) The physical drive cannot work */
+	FR_NO_FILE,			/* (3) Could not find the file */
+	FR_NO_PATH,			/* (4) Could not find the path */
+	FR_INVALID_NAME,	/* (5) The path name format is invalid */
+	FR_NOT_OPENED,		/* (6) */
+	FR_NOT_ENABLED,		/* (7) */
+	FR_NO_FILESYSTEM,	/* (8) There is no valid FAT volume */
+} FRESULT;
+
+
+
+/*--------------------------------------------------------------*/
+/* Petit FatFs module application interface                     */
+
+FRESULT pf_mount (FATFS* fs);										/* Mount/Unmount a logical drive */
+FRESULT pf_open (FATFS* fs, const char* path);						/* Open a file */
+FRESULT pf_read (FATFS* fs, void* buff, UINT btr, UINT* br);		/* Read data from the open file */
+FRESULT pf_write (FATFS* fs, const void* buff, UINT btw, UINT* bw);	/* Write data to the open file */
+FRESULT pf_lseek (FATFS* fs, DWORD ofs);							/* Move file pointer of the open file */
+FRESULT pf_opendir (DIR* dj, const char* path);			/* Open a directory */
+FRESULT pf_readdir (DIR* dj, FILINFO* fno);				/* Read a directory item from the open directory */
+
+
+
+/*--------------------------------------------------------------*/
+/* Flags and offset address                                     */
+
+/* File status flag (FATFS.flag) */
+
+#define	FA_OPENED	0x01
+#define	FA_WPRT		0x02
+#define	FA__WIP		0x40
+
+
+/* FAT sub type (FATFS.fs_type) */
+
+#define FS_FAT12	1
+#define FS_FAT16	2
+#define FS_FAT32	3
+
+
+/* File attribute bits for directory entry */
+
+#define	AM_RDO	0x01	/* Read only */
+#define	AM_HID	0x02	/* Hidden */
+#define	AM_SYS	0x04	/* System */
+#define	AM_VOL	0x08	/* Volume label */
+#define AM_LFN	0x0F	/* LFN entry */
+#define AM_DIR	0x10	/* Directory */
+#define AM_ARC	0x20	/* Archive */
+#define AM_MASK	0x3F	/* Mask of defined bits */
+
+
+/*--------------------------------*/
+/* Multi-byte word access macros  */
+
+#if _WORD_ACCESS == 1	/* Enable word access to the FAT structure */
+#define	LD_WORD(ptr)		(WORD)(*(WORD*)(BYTE*)(ptr))
+#define	LD_DWORD(ptr)		(DWORD)(*(DWORD*)(BYTE*)(ptr))
+#define	ST_WORD(ptr,val)	*(WORD*)(BYTE*)(ptr)=(WORD)(val)
+#define	ST_DWORD(ptr,val)	*(DWORD*)(BYTE*)(ptr)=(DWORD)(val)
+#else					/* Use byte-by-byte access to the FAT structure */
+#define	LD_WORD(ptr)		(WORD)(((WORD)*((BYTE*)(ptr)+1)<<8)|(WORD)*(BYTE*)(ptr))
+#define	LD_DWORD(ptr)		(DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr))
+#define	ST_WORD(ptr,val)	*(BYTE*)(ptr)=(BYTE)(val); *((BYTE*)(ptr)+1)=(BYTE)((WORD)(val)>>8)
+#define	ST_DWORD(ptr,val)	*(BYTE*)(ptr)=(BYTE)(val); *((BYTE*)(ptr)+1)=(BYTE)((WORD)(val)>>8); *((BYTE*)(ptr)+2)=(BYTE)((DWORD)(val)>>16); *((BYTE*)(ptr)+3)=(BYTE)((DWORD)(val)>>24)
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PFATFS */
Index: uKadecot/trunk/pfatfs/pffconf.h
===================================================================
--- uKadecot/trunk/pfatfs/pffconf.h	(revision 101)
+++ uKadecot/trunk/pfatfs/pffconf.h	(revision 101)
@@ -0,0 +1,102 @@
+/*---------------------------------------------------------------------------/
+/  Petit FatFs - Configuration file  R0.03 (C)ChaN, 2014
+/---------------------------------------------------------------------------*/
+
+#ifndef _PFFCONF
+#define _PFFCONF 4004	/* Revision ID */
+
+/*---------------------------------------------------------------------------/
+/ Function Configurations
+/---------------------------------------------------------------------------*/
+
+#define	_USE_READ	1	/* Enable pf_read() function */
+#define	_USE_DIR	1	/* Enable pf_opendir() and pf_readdir() function */
+#define	_USE_LSEEK	1	/* Enable pf_lseek() function */
+#define	_USE_WRITE	1	/* Enable pf_write() function */
+
+#define _FS_FAT12	1	/* Enable FAT12 */
+#define _FS_FAT16	1	/* Enable FAT16 */
+#define _FS_FAT32	1	/* Enable FAT32 */
+
+
+/*---------------------------------------------------------------------------/
+/ Locale and Namespace Configurations
+/---------------------------------------------------------------------------*/
+
+#define _USE_LCC	1	/* Allow lower case characters for path name */
+
+#define	_CODE_PAGE	932
+/* The _CODE_PAGE specifies the code page to be used on the target system.
+/  SBCS code pages with _USE_LCC == 1 requiers a 128 byte of case conversion
+/  table. This might occupy RAM on some platforms, e.g. avr-gcc.
+/  When _USE_LCC == 0, _CODE_PAGE has no effect.
+/
+/   932  - Japanese Shift_JIS (DBCS, OEM, Windows)
+/   936  - Simplified Chinese GBK (DBCS, OEM, Windows)
+/   949  - Korean (DBCS, OEM, Windows)
+/   950  - Traditional Chinese Big5 (DBCS, OEM, Windows)
+/   1250 - Central Europe (Windows)
+/   1251 - Cyrillic (Windows)
+/   1252 - Latin 1 (Windows)
+/   1253 - Greek (Windows)
+/   1254 - Turkish (Windows)
+/   1255 - Hebrew (Windows)
+/   1256 - Arabic (Windows)
+/   1257 - Baltic (Windows)
+/   1258 - Vietnam (OEM, Windows)
+/   437  - U.S. (OEM)
+/   720  - Arabic (OEM)
+/   737  - Greek (OEM)
+/   775  - Baltic (OEM)
+/   850  - Multilingual Latin 1 (OEM)
+/   858  - Multilingual Latin 1 + Euro (OEM)
+/   852  - Latin 2 (OEM)
+/   855  - Cyrillic (OEM)
+/   866  - Russian (OEM)
+/   857  - Turkish (OEM)
+/   862  - Hebrew (OEM)
+/   874  - Thai (OEM, Windows)
+*/
+
+
+/*---------------------------------------------------------------------------/
+/ System Configurations
+/---------------------------------------------------------------------------*/
+
+#define _WORD_ACCESS	1
+/* The _WORD_ACCESS option is an only platform dependent option. It defines
+/  which access method is used to the word data on the FAT volume.
+/
+/   0: Byte-by-byte access. Always compatible with all platforms.
+/   1: Word access. Do not choose this unless under both the following conditions.
+/
+/  * Address misaligned memory access is always allowed for ALL instructions.
+/  * Byte order on the memory is little-endian.
+/
+/  If it is the case, _WORD_ACCESS can also be set to 1 to improve performance and
+/  reduce code size. Following table shows an example of some processor types.
+/
+/   ARM7TDMI    0           ColdFire    0           V850E       0
+/   Cortex-M3   0           Z80         0/1         V850ES      0/1
+/   Cortex-M0   0           RX600(LE)   0/1         TLCS-870    0/1
+/   AVR         0/1         RX600(BE)   0           TLCS-900    0/1
+/   AVR32       0           RL78        0           R32C        0
+/   PIC18       0/1         SH-2        0           M16C        0/1
+/   PIC24       0           H8S         0           MSP430      0
+/   PIC32       0           H8/300H     0           x86         0/1
+*/
+
+#define	_MIN_SS		512
+#define	_MAX_SS		512
+/* These options configure the range of sector size to be supported. (512, 1024,
+/  2048 or 4096) Always set both 512 for most systems, all type of memory cards and
+/  harddisk. But a larger value may be required for on-board flash memory and some
+/  type of optical media. When _MAX_SS is larger than _MIN_SS, FatFs is configured
+/  to variable sector size and GET_SECTOR_SIZE command must be implemented to the
+/  disk_ioctl() function. */
+
+#define	_USE_LFN	1
+#define	_MAX_LFN	255
+/* The _USE_LFN option switches the LFN feature. */
+
+#endif /* _PFFCONF */
Index: uKadecot/trunk/src/ukadecot/MANIFEST
===================================================================
--- uKadecot/trunk/src/ukadecot/MANIFEST	(revision 101)
+++ uKadecot/trunk/src/ukadecot/MANIFEST	(revision 101)
@@ -0,0 +1,10 @@
+PACKAGE sample_sample1
+
+MANIFEST
+echonet_app_config.h
+main.c
+main.cfg
+main.h
+route_cfg.c
+tinet_app_config.h
+tinet_main.cfg
Index: uKadecot/trunk/src/ukadecot/arduino.c
===================================================================
--- uKadecot/trunk/src/ukadecot/arduino.c	(revision 101)
+++ uKadecot/trunk/src/ukadecot/arduino.c	(revision 101)
@@ -0,0 +1,642 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/* 
+ *  TvvO(1)Ì{Ì
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <sil.h>
+#include "arduino.h"
+#ifdef __RX
+#include "rx630_ccrx/rx630.h"
+#else
+#include "rx630_msvc/rx630.h"
+#endif
+
+/* PWMoÍ(490Hz) */
+#define TPU_BASE_COUNTER	(48000000 / 4 / 490)
+
+void arduino_init()
+{
+	/*
+	 * W
+[Xgbv@\ÌÝè(S12AD)
+	 */
+	sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA502);	/* ÝÂ */
+	sil_wrw_mem((uint32_t *)SYSTEM_MSTPCRA_ADDR,
+		sil_rew_mem((uint32_t *)SYSTEM_MSTPCRA_ADDR) & ~SYSTEM_MSTPCRA_MSTPA17_BIT);
+	sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA500);	/* ÝÖ~ */
+
+	/* 12bitADCú» */
+	sil_wrh_mem((uint16_t *)S12AD_ADEXICR_ADDR, 0x0000);	/* ·xZToÍAàîd³ñIð */
+	sil_wrh_mem((uint16_t *)S12AD_ADANS0_ADDR, 0x00FF);		/* Ï·|[gAN000`AN007IðAAN008`AN015ñIð */
+	sil_wrh_mem((uint16_t *)S12AD_ADANS1_ADDR, 0x0000);		/* Ï·|[gAN016`AN020ñIð */
+
+	/* PWMoÍ(490Hz) */
+	sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA502);	/* ÝÂ */
+	sil_wrw_mem(SYSTEM_MSTPCRA_ADDR,
+		sil_rew_mem(SYSTEM_MSTPCRA_ADDR) & ~SYSTEM_MSTPCRA_MSTPA13_BIT); /* TPU0`TPU5 */
+	sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA500);	/* ÝÖ~ */
+
+	/* JE^NbNÌIðAJE^NAvöÌIð */
+	sil_wrb_mem(TPU0_TCR_ADDR, (1 << TPU_TCR_TPSC_OFFSET) | (1 << TPU_TCR_CKEG_OFFSET)
+		| (1 << TPU_TCR_CCLR_OFFSET));
+	sil_wrb_mem(TPU3_TCR_ADDR, (1 << TPU_TCR_TPSC_OFFSET) | (1 << TPU_TCR_CKEG_OFFSET)
+		| (3 << TPU_TCR_CCLR_OFFSET));
+	sil_wrb_mem(TPU4_TCR_ADDR, (1 << TPU_TCR_TPSC_OFFSET) | (1 << TPU_TCR_CKEG_OFFSET)
+		| (3 << TPU_TCR_CCLR_OFFSET));
+	/* g`oÍxÌIð */
+	sil_wrb_mem(TPU0_TIORL_ADDR, (5 << TPU_TIORL_IOC_OFFSET) | (5 << TPU_TIORL_IOD_OFFSET));
+	sil_wrb_mem(TPU3_TIORH_ADDR, (5 << TPU_TIORL_IOA_OFFSET) | (5 << TPU_TIORL_IOB_OFFSET));
+	sil_wrb_mem(TPU3_TIORL_ADDR, (5 << TPU_TIORL_IOC_OFFSET) | (5 << TPU_TIORL_IOD_OFFSET));
+	sil_wrb_mem(TPU4_TIOR_ADDR, (5 << TPU_TIORL_IOA_OFFSET) | (5 << TPU_TIORL_IOB_OFFSET));
+	/* TGRyÌÝè */
+	sil_wrh_mem(TPU0_TGRA_ADDR, TPU_BASE_COUNTER);
+	sil_wrh_mem(TPU0_TGRC_ADDR, 0);
+	sil_wrh_mem(TPU0_TGRD_ADDR, 0);
+	sil_wrh_mem(TPU3_TGRA_ADDR, 0);
+	sil_wrh_mem(TPU3_TGRB_ADDR, 0);
+	sil_wrh_mem(TPU3_TGRC_ADDR, 0);
+	sil_wrh_mem(TPU3_TGRD_ADDR, 0);
+	sil_wrh_mem(TPU4_TGRA_ADDR, 0);
+	sil_wrh_mem(TPU4_TGRB_ADDR, 0);
+	/* PWM[h2ÌÝè */
+	sil_wrb_mem(TPU0_TMDR_ADDR, 3);
+	sil_wrb_mem(TPU3_TMDR_ADDR, 3);
+	sil_wrb_mem(TPU4_TMDR_ADDR, 3);
+	/* ¯ú®ìÝè */
+	sil_wrb_mem(TPUA_TSYR_ADDR, TPU_TSYR_SYNC0_BIT | TPU_TSYR_SYNC3_BIT | TPU_TSYR_SYNC4_BIT);
+	/* JEg®ìJn */
+	sil_wrb_mem(TPUA_TSTR_ADDR, TPU_TSTR_CST0_BIT | TPU_TSTR_CST3_BIT | TPU_TSTR_CST4_BIT);
+}
+
+static bool_t pin_function_table[8] = {
+	true, true, true, true, true, true, true, true
+};
+
+static ER change_pin_function(int pin, bool_t gpio)
+{
+	ER result = E_PAR;
+
+	if((pin < 0) || (pin >= 8))
+		return E_PAR;
+
+	if(pin_function_table[pin] == gpio)
+		return E_OK;
+
+	/* ÄpüoÍ|[gÉÝè */
+	switch(pin){
+	case 0:
+		/* P21 */
+		sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) & ~PORT_PMR_B1_BIT);
+		break;
+	case 1:
+		/* P20 */
+		sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) & ~PORT_PMR_B0_BIT);
+		break;
+	case 2:
+		/* P22 */
+		sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) & ~PORT_PMR_B2_BIT);
+		break;
+	case 3:
+		/* P23 */
+		sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) & ~PORT_PMR_B3_BIT);
+		break;
+	case 4:
+		/* P24 */
+		sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) & ~PORT_PMR_B4_BIT);
+		break;
+	case 5:
+		/* P25 */
+		sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) & ~PORT_PMR_B5_BIT);
+		break;
+	case 6:
+		/* P32 */
+		sil_wrb_mem(PORT3_PMR_ADDR, sil_reb_mem(PORT3_PMR_ADDR) & ~PORT_PMR_B2_BIT);
+		break;
+	case 7:
+		/* P33 */
+		sil_wrb_mem(PORT3_PMR_ADDR, sil_reb_mem(PORT3_PMR_ADDR) & ~PORT_PMR_B3_BIT);
+		break;
+	}
+
+	/* «ÝveNgWX^ÌÝè PFSWErbgÖÌ«ÝðÂ */
+	sil_wrb_mem((uint8_t *)MPC_PWPR_ADDR, 0x00);
+	/* «ÝveNgWX^ÌÝè PxxFSWX^ÖÌ«ÝðÂ */
+	sil_wrb_mem((uint8_t *)MPC_PWPR_ADDR, 0x40);
+
+	switch(pin){
+	/* P21/TIOCA3 */
+	case 0:
+		if(gpio){
+			/* P21[q@\§äWX^ P21Æ·é */
+			sil_wrb_mem((uint8_t *)MPC_P21PFS_ADDR, 0x00);
+		}
+		else{
+			/* P21[q@\§äWX^ TIOCA3Æ·é */
+			sil_wrb_mem((uint8_t *)MPC_P21PFS_ADDR, 0x03);
+		}
+		result =  E_OK;
+		break;
+	/* P20/TIOCB3 */
+	case 1:
+		if(gpio){
+			/* P20[q@\§äWX^ P20Æ·é */
+			sil_wrb_mem((uint8_t *)MPC_P20PFS_ADDR, 0x00);
+		}
+		else{
+			/* P20[q@\§äWX^ TIOCB3Æ·é */
+			sil_wrb_mem((uint8_t *)MPC_P20PFS_ADDR, 0x03);
+		}
+		result =  E_OK;
+		break;
+	/* P22/TIOCC3 */
+	case 2:
+		if(gpio){
+			/* P22[q@\§äWX^ P22Æ·é */
+			sil_wrb_mem((uint8_t *)MPC_P22PFS_ADDR, 0x00);
+		}
+		else{
+			/* P22[q@\§äWX^ TIOCC3Æ·é */
+			sil_wrb_mem((uint8_t *)MPC_P22PFS_ADDR, 0x03);
+		}
+		result =  E_OK;
+		break;
+	/* P23/TIOCD3 */
+	case 3:
+		if(gpio){
+			/* P23[q@\§äWX^ P23Æ·é */
+			sil_wrb_mem((uint8_t *)MPC_P23PFS_ADDR, 0x00);
+		}
+		else{
+			/* P23[q@\§äWX^ TIOCD3Æ·é */
+			sil_wrb_mem((uint8_t *)MPC_P23PFS_ADDR, 0x03);
+		}
+		result =  E_OK;
+		break;
+	/* P24/TIOCB4 */
+	case 4:
+		if(gpio){
+			/* P24[q@\§äWX^ P24Æ·é */
+			sil_wrb_mem((uint8_t *)MPC_P24PFS_ADDR, 0x00);
+		}
+		else{
+			/* P24[q@\§äWX^ TIOCB4Æ·é */
+			sil_wrb_mem((uint8_t *)MPC_P24PFS_ADDR, 0x03);
+		}
+		result =  E_OK;
+		break;
+	/* P25/TIOCA4 */
+	case 5:
+		if(gpio){
+			/* P25[q@\§äWX^ P25Æ·é */
+			sil_wrb_mem((uint8_t *)MPC_P25PFS_ADDR, 0x00);
+		}
+		else{
+			/* P25[q@\§äWX^ TIOCA4Æ·é */
+			sil_wrb_mem((uint8_t *)MPC_P25PFS_ADDR, 0x03);
+		}
+		result =  E_OK;
+		break;
+	/* P32/TIOCC0 */
+	case 6:
+		if(gpio){
+			/* P32[q@\§äWX^ P32Æ·é */
+			sil_wrb_mem((uint8_t *)MPC_P32PFS_ADDR, 0x00);
+		}
+		else{
+			/* P32[q@\§äWX^ TIOCC0Æ·é */
+			sil_wrb_mem((uint8_t *)MPC_P32PFS_ADDR, 0x03);
+		}
+		result =  E_OK;
+		break;
+	/* P33/TIOCD0 */
+	case 7:
+		if(gpio){
+			/* P33[q@\§äWX^ P33Æ·é */
+			sil_wrb_mem((uint8_t *)MPC_P33PFS_ADDR, 0x00);
+		}
+		else{
+			/* P33[q@\§äWX^ TIOCD0Æ·é */
+			sil_wrb_mem((uint8_t *)MPC_P33PFS_ADDR, 0x03);
+		}
+		result =  E_OK;
+		break;
+	}
+
+	/* «ÝveNgWX^ÌÝè «ÝðÖ~ */
+	sil_wrb_mem((uint8_t *)MPC_PWPR_ADDR, 0x80);
+
+	/* @\|[gÉÝè */
+	if(!gpio){
+		switch(pin){
+		/* P21/TIOCA3 */
+		case 0:
+			sil_wrb_mem(PORT2_PDR_ADDR, sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B1_BIT);
+			sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) | PORT_PMR_B1_BIT);
+			break;
+		/* P20/TIOCB3 */
+		case 1:
+			sil_wrb_mem(PORT2_PDR_ADDR, sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B0_BIT);
+			sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) | PORT_PMR_B0_BIT);
+			break;
+		/* P22/TIOCC3 */
+		case 2:
+			sil_wrb_mem(PORT2_PDR_ADDR, sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B2_BIT);
+			sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) | PORT_PMR_B2_BIT);
+			break;
+		/* P23/TIOCD3 */
+		case 3:
+			sil_wrb_mem(PORT2_PDR_ADDR, sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B3_BIT);
+			sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) | PORT_PMR_B3_BIT);
+			break;
+		/* P24/TIOCB4 */
+		case 4:
+			sil_wrb_mem(PORT2_PDR_ADDR, sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B4_BIT);
+			sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) | PORT_PMR_B4_BIT);
+			break;
+		/* P25/TIOCA4 */
+		case 5:
+			sil_wrb_mem(PORT2_PDR_ADDR, sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B5_BIT);
+			sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) | PORT_PMR_B5_BIT);
+			break;
+		/* P32/TIOCC0 */
+		case 6:
+			sil_wrb_mem(PORT3_PDR_ADDR, sil_reb_mem(PORT3_PDR_ADDR) | PORT_PDR_B2_BIT);
+			sil_wrb_mem(PORT3_PMR_ADDR, sil_reb_mem(PORT3_PMR_ADDR) | PORT_PMR_B2_BIT);
+			break;
+		/* P33/TIOCD0 */
+		case 7:
+			sil_wrb_mem(PORT3_PDR_ADDR, sil_reb_mem(PORT3_PDR_ADDR) | PORT_PDR_B3_BIT);
+			sil_wrb_mem(PORT3_PMR_ADDR, sil_reb_mem(PORT3_PMR_ADDR) | PORT_PMR_B3_BIT);
+			break;
+		}
+	}
+
+	pin_function_table[pin] = gpio;
+
+	return result;
+}
+
+static ER change_pin_mode(arduino_pin_mode_t mode, volatile uint8_t *pdr, int bit)
+{
+	volatile uint8_t *pcr = pdr + (PORT0_PCR_ADDR - PORT0_PDR_ADDR);
+
+	switch(mode){
+	case ARDUINO_PIN_MODE_INPUT:
+		sil_wrb_mem(pdr, sil_reb_mem(pdr) & ~bit);
+		sil_wrb_mem(pcr, sil_reb_mem(pcr) & ~bit);
+		return E_OK;
+	case ARDUINO_PIN_MODE_OUTPUT:
+		sil_wrb_mem(pdr, sil_reb_mem(pdr) | bit);
+		return E_OK;
+	case ARDUINO_PIN_MODE_INPUT_PULLUP:
+		sil_wrb_mem(pdr, sil_reb_mem(pdr) & ~bit);
+		sil_wrb_mem(pcr, sil_reb_mem(pcr) | bit);
+		return E_OK;
+	}
+
+	return E_PAR;
+}
+
+ER arduino_pinMode(int pin, arduino_pin_mode_t mode)
+{
+	/* ÄpüoÍ|[gÉÝè */
+	change_pin_function(pin, true);
+
+	switch(pin){
+	case 0:
+		/* P21 */
+		return change_pin_mode(mode, PORT2_PDR_ADDR, PORT_PDR_B1_BIT);
+	case 1:
+		/* P20 */
+		return change_pin_mode(mode, PORT2_PDR_ADDR, PORT_PDR_B0_BIT);
+	case 2:
+		/* P22 */
+		return change_pin_mode(mode, PORT2_PDR_ADDR, PORT_PDR_B2_BIT);
+	case 3:
+		/* P23 */
+		return change_pin_mode(mode, PORT2_PDR_ADDR, PORT_PDR_B3_BIT);
+	case 4:
+		/* P24 */
+		return change_pin_mode(mode, PORT2_PDR_ADDR, PORT_PDR_B4_BIT);
+	case 5:
+		/* P25 */
+		return change_pin_mode(mode, PORT2_PDR_ADDR, PORT_PDR_B5_BIT);
+	case 6:
+		/* P32 */
+		return change_pin_mode(mode, PORT3_PDR_ADDR, PORT_PDR_B2_BIT);
+	case 7:
+		/* P33 */
+		return change_pin_mode(mode, PORT3_PDR_ADDR, PORT_PDR_B3_BIT);
+	case 8:
+		/* PC2 */
+		return change_pin_mode(mode, PORTC_PDR_ADDR, PORT_PDR_B2_BIT);
+	case 9:
+		/* PC3 */
+		return change_pin_mode(mode, PORTC_PDR_ADDR, PORT_PDR_B3_BIT);
+	case 10:
+		/* PC4 */
+		return change_pin_mode(mode, PORTC_PDR_ADDR, PORT_PDR_B4_BIT);
+	case 11:
+		/* PC6 */
+		return change_pin_mode(mode, PORTC_PDR_ADDR, PORT_PDR_B6_BIT);
+	case 12:
+		/* PC7 */
+		return change_pin_mode(mode, PORTC_PDR_ADDR, PORT_PDR_B7_BIT);
+	case 13:
+		/* PC5 */
+		return change_pin_mode(mode, PORTC_PDR_ADDR, PORT_PDR_B5_BIT);
+	}
+
+	return E_PAR;
+}
+
+static ER write_gpio(arduino_digital_value_t value, volatile uint8_t *podr, int bit)
+{
+	switch(value){
+	case ARDUINO_DIGITAL_VALUE_HIGH:
+		sil_wrb_mem(podr, sil_reb_mem(podr) | bit);
+		return E_OK;
+	case ARDUINO_DIGITAL_VALUE_LOW:
+		sil_wrb_mem(podr, sil_reb_mem(podr) & ~bit);
+		return E_OK;
+	}
+
+	return E_PAR;
+}
+
+ER arduino_digitalWrite(int pin, arduino_digital_value_t value)
+{
+	switch(pin){
+	case 0:
+		/* P21 */
+		return write_gpio(value, PORT2_PODR_ADDR, PORT_PODR_B1_BIT);
+	case 1:
+		/* P20 */
+		return write_gpio(value, PORT2_PODR_ADDR, PORT_PODR_B0_BIT);
+	case 2:
+		/* P22 */
+		return write_gpio(value, PORT2_PODR_ADDR, PORT_PODR_B2_BIT);
+	case 3:
+		/* P23 */
+		return write_gpio(value, PORT2_PODR_ADDR, PORT_PODR_B3_BIT);
+	case 4:
+		/* P24 */
+		return write_gpio(value, PORT2_PODR_ADDR, PORT_PODR_B4_BIT);
+	case 5:
+		/* P25 */
+		return write_gpio(value, PORT2_PODR_ADDR, PORT_PODR_B5_BIT);
+	case 6:
+		/* P32 */
+		return write_gpio(value, PORT3_PODR_ADDR, PORT_PODR_B2_BIT);
+	case 7:
+		/* P33 */
+		return write_gpio(value, PORT3_PODR_ADDR, PORT_PODR_B3_BIT);
+	case 8:
+		/* PC2 */
+		return write_gpio(value, PORTC_PODR_ADDR, PORT_PODR_B2_BIT);
+	case 9:
+		/* PC3 */
+		return write_gpio(value, PORTC_PODR_ADDR, PORT_PODR_B3_BIT);
+	case 10:
+		/* PC4 */
+		return write_gpio(value, PORTC_PODR_ADDR, PORT_PODR_B4_BIT);
+	case 11:
+		/* PC6 */
+		return write_gpio(value, PORTC_PODR_ADDR, PORT_PODR_B6_BIT);
+	case 12:
+		/* PC7 */
+		return write_gpio(value, PORTC_PODR_ADDR, PORT_PODR_B7_BIT);
+	case 13:
+		/* PC5 */
+		return write_gpio(value, PORTC_PODR_ADDR, PORT_PODR_B5_BIT);
+	}
+
+	return E_PAR;
+}
+
+static ER read_gpio(volatile uint8_t *pidr, int bit, arduino_digital_value_t *result)
+{
+	if ((sil_reb_mem(pidr) & bit) != 0) {
+		*result = ARDUINO_DIGITAL_VALUE_HIGH;
+		return E_OK;
+	}
+	else {
+		*result = ARDUINO_DIGITAL_VALUE_LOW;
+		return E_OK;
+	}
+}
+
+ER arduino_digitalRead(int pin, arduino_digital_value_t *result)
+{
+	switch(pin){
+	case 0:
+		/* P21 */
+		return read_gpio(PORT2_PIDR_ADDR, PORT_PIDR_B1_BIT, result);
+	case 1:
+		/* P20 */
+		return read_gpio(PORT2_PIDR_ADDR, PORT_PIDR_B0_BIT, result);
+	case 2:
+		/* P22 */
+		return read_gpio(PORT2_PIDR_ADDR, PORT_PIDR_B2_BIT, result);
+	case 3:
+		/* P23 */
+		return read_gpio(PORT2_PIDR_ADDR, PORT_PIDR_B3_BIT, result);
+	case 4:
+		/* P24 */
+		return read_gpio(PORT2_PIDR_ADDR, PORT_PIDR_B4_BIT, result);
+	case 5:
+		/* P25 */
+		return read_gpio(PORT2_PIDR_ADDR, PORT_PIDR_B5_BIT, result);
+	case 6:
+		/* P32 */
+		return read_gpio(PORT3_PIDR_ADDR, PORT_PIDR_B2_BIT, result);
+	case 7:
+		/* P33 */
+		return read_gpio(PORT3_PIDR_ADDR, PORT_PIDR_B3_BIT, result);
+	case 8:
+		/* PC2 */
+		return read_gpio(PORTC_PIDR_ADDR, PORT_PIDR_B2_BIT, result);
+	case 9:
+		/* PC3 */
+		return read_gpio(PORTC_PIDR_ADDR, PORT_PIDR_B3_BIT, result);
+	case 10:
+		/* PC4 */
+		return read_gpio(PORTC_PIDR_ADDR, PORT_PIDR_B4_BIT, result);
+	case 11:
+		/* PC6 */
+		return read_gpio(PORTC_PIDR_ADDR, PORT_PIDR_B6_BIT, result);
+	case 12:
+		/* PC7 */
+		return read_gpio(PORTC_PIDR_ADDR, PORT_PIDR_B7_BIT, result);
+	case 13:
+		/* PC5 */
+		return read_gpio(PORTC_PIDR_ADDR, PORT_PIDR_B5_BIT, result);
+	}
+
+	return E_PAR;
+}
+
+#define arduino_ad_table_count 64
+static uint16_t arduino_ad_table[8][arduino_ad_table_count];
+static int arduino_ad_pos = 0;
+static uint32_t arduino_ad_avelage[8];
+
+ER arduino_analogRead(int pin, int *value)
+{
+	switch(pin){
+	case 14:
+		/* *value = sil_reh_mem((uint16_t *)S12AD_ADDR0_ADDR); */
+		*value = 1023 - (arduino_ad_avelage[0] / (arduino_ad_table_count * 4/*12bit¨10bit*/));
+		return E_OK;
+	case 15:
+		/* *value = sil_reh_mem((uint16_t *)S12AD_ADDR1_ADDR); */
+		*value = 1023 - (arduino_ad_avelage[1] / (arduino_ad_table_count * 4/*12bit¨10bit*/));
+		return E_OK;
+	case 16:
+		/* *value = sil_reh_mem((uint16_t *)S12AD_ADDR2_ADDR); */
+		*value = 1023 - (arduino_ad_avelage[2] / (arduino_ad_table_count * 4/*12bit¨10bit*/));
+		return E_OK;
+	case 17:
+		/* *value = sil_reh_mem((uint16_t *)S12AD_ADDR3_ADDR); */
+		*value = 1023 - (arduino_ad_avelage[3] / (arduino_ad_table_count * 4/*12bit¨10bit*/));
+		return E_OK;
+	case 18:
+		/* *value = sil_reh_mem((uint16_t *)S12AD_ADDR4_ADDR); */
+		*value = 1023 - (arduino_ad_avelage[4] / (arduino_ad_table_count * 4/*12bit¨10bit*/));
+		return E_OK;
+	case 19:
+		/* *value = sil_reh_mem((uint16_t *)S12AD_ADDR5_ADDR); */
+		*value = 1023 - (arduino_ad_avelage[5] / (arduino_ad_table_count * 4/*12bit¨10bit*/));
+		return E_OK;
+	case 20:
+		/* *value = sil_reh_mem((uint16_t *)S12AD_ADDR6_ADDR); */
+		*value = 1023 - (arduino_ad_avelage[6] / (arduino_ad_table_count * 4/*12bit¨10bit*/));
+		return E_OK;
+	case 21:
+		/* *value = sil_reh_mem((uint16_t *)S12AD_ADDR7_ADDR); */
+		*value = 1023 - (arduino_ad_avelage[7] / (arduino_ad_table_count * 4/*12bit¨10bit*/));
+		return E_OK;
+	}
+
+	return E_PAR;
+}
+
+ER arduino_analogWrite(int pin, int value)
+{
+	change_pin_function(pin, false);
+
+	value = (value * TPU_BASE_COUNTER) / 255;
+
+	switch(pin){
+	case 0:
+		/* P21/TIOCA3 */
+		sil_wrh_mem(TPU3_TGRA_ADDR, value);
+		return E_OK;
+	case 1:
+		/* P20/TIOCB3 */
+		sil_wrh_mem(TPU3_TGRB_ADDR, value);
+		return E_OK;
+	case 2:
+		/* P22/TIOCC3 */
+		sil_wrh_mem(TPU3_TGRC_ADDR, value);
+		return E_OK;
+	case 3:
+		/* P23/TIOCD3 */
+		sil_wrh_mem(TPU3_TGRD_ADDR, value);
+		return E_OK;
+	case 4:
+		/* P24/TIOCB4 */
+		sil_wrh_mem(TPU4_TGRB_ADDR, value);
+		return E_OK;
+	case 5:
+		/* P25/TIOCA4 */
+		sil_wrh_mem(TPU4_TGRA_ADDR, value);
+		return E_OK;
+	case 6:
+		/* P32/TIOCC0 */
+		sil_wrh_mem(TPU0_TGRC_ADDR, value);
+		return E_OK;
+	case 7:
+		/* P33/TIOCD0 */
+		sil_wrh_mem(TPU0_TGRD_ADDR, value);
+		return E_OK;
+	}
+
+	return E_PAR;
+}
+
+void arduino_tick()
+{
+	static volatile uint16_t *const regs[8] = {
+		S12AD_ADDR0_ADDR,
+		S12AD_ADDR1_ADDR,
+		S12AD_ADDR2_ADDR,
+		S12AD_ADDR3_ADDR,
+		S12AD_ADDR4_ADDR,
+		S12AD_ADDR5_ADDR,
+		S12AD_ADDR6_ADDR,
+		S12AD_ADDR7_ADDR
+	};
+	uint16_t ad_value;
+	int i;
+
+	/* ADCÌÏ·Êæ¾ */
+	if((sil_reb_mem((uint8_t *)S12AD_ADCSR_ADDR) & S12AD_ADCSR_ADST_BIT) == 0){
+		for (i = 0; i < 8; i++){
+			arduino_ad_avelage[i] -= arduino_ad_table[i][arduino_ad_pos];
+			ad_value = sil_reh_mem(regs[i]);
+			arduino_ad_table[i][arduino_ad_pos] = ad_value;
+			arduino_ad_avelage[i] += ad_value;
+		}
+
+		arduino_ad_pos++;
+		if(arduino_ad_pos >= arduino_ad_table_count){
+			arduino_ad_pos = 0;
+		}
+
+		/* Ï·JniVOXL[hj */
+		sil_wrb_mem((uint8_t *)S12AD_ADCSR_ADDR, S12AD_ADCSR_ADST_BIT);
+	}
+}
Index: uKadecot/trunk/src/ukadecot/arduino.h
===================================================================
--- uKadecot/trunk/src/ukadecot/arduino.h	(revision 101)
+++ uKadecot/trunk/src/ukadecot/arduino.h	(revision 101)
@@ -0,0 +1,73 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#ifndef _ARDUINO_H_
+#define _ARDUINO_H_
+
+typedef enum arduino_pin_mode
+{
+	ARDUINO_PIN_MODE_INPUT = 1,
+	ARDUINO_PIN_MODE_OUTPUT,
+	ARDUINO_PIN_MODE_INPUT_PULLUP,
+} arduino_pin_mode_t;
+
+typedef enum arduino_digital_value
+{
+	ARDUINO_DIGITAL_VALUE_HIGH = 1,
+	ARDUINO_DIGITAL_VALUE_LOW,
+} arduino_digital_value_t;
+
+/* ú» */
+void arduino_init();
+
+/* fW^üoÍÖ  */
+ER arduino_pinMode(int pin, arduino_pin_mode_t mode);
+ER arduino_digitalWrite(int pin, arduino_digital_value_t value);
+ER arduino_digitalRead(int pin, arduino_digital_value_t *result);
+
+/* AiOüoÍÖ */
+ER arduino_analogRead(int pin, int *result);
+ER arduino_analogWrite(int pin, int value);
+
+/* üú */
+void arduino_tick();
+
+#endif	/* of #ifndef _ARDUINO_H_ */
Index: uKadecot/trunk/src/ukadecot/data_flash.c
===================================================================
--- uKadecot/trunk/src/ukadecot/data_flash.c	(revision 101)
+++ uKadecot/trunk/src/ukadecot/data_flash.c	(revision 101)
@@ -0,0 +1,465 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/* 
+ *  TvvO(1)Ì{Ì
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <sil.h>
+#include "data_flash.h"
+#ifdef __RX
+#include "rx630_ccrx/rx630.h"
+#else
+#include "rx630_msvc/rx630.h"
+#endif
+#include "grsakura.h"
+
+#define FLASH_FWEPROR_ADDR				( ( volatile uint8_t __evenaccess * )0x0008C296 )
+
+#define FLASH_FMODR_ADDR				( ( volatile uint8_t __evenaccess * )0x007FC402 )
+#define FLASH_FMODR_FRDMD_BIT			( 0x01U << 4U )
+
+#define FLASH_DFLRE0_ADDR				( ( volatile uint16_t __evenaccess * )0x007FC440 )
+#define FLASH_DFLRE1_ADDR				( ( volatile uint16_t __evenaccess * )0x007FC442 )
+#define FLASH_DFLWE0_ADDR				( ( volatile uint16_t __evenaccess * )0x007FC450 )
+#define FLASH_DFLWE1_ADDR				( ( volatile uint16_t __evenaccess * )0x007FC452 )
+#define FLASH_FCURAME_ADDR				( ( volatile uint16_t __evenaccess * )0x007FC454 )
+
+#define FLASH_FASTAT_ADDR				( ( volatile uint8_t __evenaccess * )0x007FC410 )
+#define FLASH_FASTAT_DFLWPE_BIT			( 0x01U << 0 )
+#define FLASH_FASTAT_DFLRPE_BIT			( 0x01U << 1 )
+#define FLASH_FASTAT_DFLAE_BIT			( 0x01U << 3 )
+#define FLASH_FASTAT_CMDLK_BIT			( 0x01U << 4 )
+#define FLASH_FASTAT_ROMAE_BIT			( 0x01U << 7 )
+
+#define FLASH_FENTRYR_ADDR				( ( volatile uint16_t __evenaccess * )0x007FFFB2 )
+#define FLASH_FENTRYR_FENRTY0_BIT		( 0x0001U << 0U )
+#define FLASH_FENTRYR_FENRTY1_BIT		( 0x0001U << 1U )
+#define FLASH_FENTRYR_FENRTY2_BIT		( 0x0001U << 2U )
+#define FLASH_FENTRYR_FENRTY3_BIT		( 0x0001U << 3U )
+#define FLASH_FENTRYR_FENTRYD_BIT		( 0x0001U << 7U )
+
+#define FLASH_FRESETR_ADDR				( ( volatile uint16_t __evenaccess * )0x007FFFB6 )
+#define FLASH_FRESETR_FRESET_BIT		( 0x0001U << 0 )
+
+#define FLASH_DFLBCCNT_ADDR				( ( volatile uint16_t __evenaccess * )0x007FFFCA )
+#define FLASH_DFLBCCNT_BCSIZE_BIT		( 0x0001U << 15U )
+#define FLASH_DFLBCCNT_BCADR_OFFSET		( 0U )
+#define FLASH_DFLBCCNT_BCADR_MASK		( 0x7FFU << FLASH_DFLBCCNT_BCADR_OFFSET )
+
+#define FLASH_DFLBCSTAT_ADDR			( ( volatile uint16_t __evenaccess * )0x007FFFCE )
+#define FLASH_DFLBCSTAT_BCST_BIT		( 0x0001U << 0U )
+
+#define FLASH_FSTATR0_ADDR				( ( volatile uint8_t __evenaccess * )0x007FFFB0 )
+#define FLASH_FSTATR0_PRGSPD_BIT		( 0x01U << 0 )
+#define FLASH_FSTATR0_ERSSPD_BIT		( 0x01U << 1 )
+#define FLASH_FSTATR0_SUSRDY_BIT		( 0x01U << 3 )
+#define FLASH_FSTATR0_PRGERR_BIT		( 0x01U << 4 )
+#define FLASH_FSTATR0_ERSERR_BIT		( 0x01U << 5 )
+#define FLASH_FSTATR0_ILGLERR_BIT		( 0x01U << 6 )
+#define FLASH_FSTATR0_FRDY_BIT			( 0x01U << 7 )
+
+#define FLASH_PCKAR_ADDR				( ( volatile uint16_t __evenaccess * )0x007FFFE8 )
+
+#define DATA_FLASH_BLOCK_SIZE 32
+#ifndef _MSC_VER
+#define DATA_FLASH_BASE_ADDR 0x00100000
+#define FCU_FIRMWARE_ADDR 0xFEFFE000
+#define FCU_RAM_ADDR 0x007F8000
+#else
+uint8_t DATA_FLASH_BASE_ADDR[DATA_FLASH_BLOCK_SIZE * 1024];
+uint8_t FCU_FIRMWARE_ADDR[0x2000];
+uint8_t FCU_RAM_ADDR[0x2000];
+#endif
+
+static void fcu_init();
+static void fcu_copy_firm();
+static bool_t fcu_notify_clock();
+static void fcu_read_mode();
+static void fcu_pe_mode();
+static bool_t fcu_write(int blockno, void *data);
+static bool_t fcu_erase(int blockno);
+static bool_t fcu_check_blank(int blockno);
+static bool_t fcu_check_valid(int blockno);
+static bool_t fcu_check_frdy(int tWAIT);
+static bool_t fcu_check_error();
+
+ER data_flash_init()
+{
+	ER ret;
+
+	/* E2f[^tbV
+ÌÇÝÝÂ */
+	sil_wrh_mem(FLASH_DFLRE0_ADDR, 0x2DFF);
+	sil_wrh_mem(FLASH_DFLRE1_ADDR, 0xD2FF);
+	/* E2f[^tbV
+Ì«ÝÂ */
+	sil_wrh_mem(FLASH_DFLWE0_ADDR, 0x1EFF);
+	sil_wrh_mem(FLASH_DFLWE1_ADDR, 0xE1FF);
+
+	/* tE16K = 240ms*/
+	fcu_check_frdy(240000);
+
+	/* G[mF */
+	fcu_check_error();
+
+	/* FCUt@[EFAÌRs[ */
+	fcu_copy_firm();
+
+	/* P/E[hÚs */
+	fcu_pe_mode();
+
+	/* P/E m[}[hÚs */
+	*((uint8_t *)DATA_FLASH_BASE_ADDR) = 0xFF;
+
+	/* G[mF */
+	fcu_check_error();
+
+	/* üÓNbNÊmR}h­s */
+	ret = fcu_notify_clock();
+
+	/* [h[hÚs */
+	fcu_read_mode();
+
+	return ret ? E_OK : E_SYS;
+}
+
+ER data_flash_read(int blockno, void *data)
+{
+	uint16_t *wa, *end;
+	uint16_t *dst = (uint16_t *)data;
+
+	/* P/E[hÚs */
+	fcu_pe_mode();
+
+	/* Løf[^`FbN */
+	if(!fcu_check_valid(blockno)){
+		/* [h[hÚs */
+		fcu_read_mode();
+		return E_OBJ;
+	}
+
+	/* [h[hÚs */
+	fcu_read_mode();
+
+	wa = (uint16_t *)(DATA_FLASH_BLOCK_SIZE * blockno + (intptr_t)DATA_FLASH_BASE_ADDR);
+	end = &wa[DATA_FLASH_BLOCK_SIZE/sizeof(uint16_t)];
+
+	/* ÇÝoµ */
+	for(; wa < end; wa++, dst++){
+		*dst = *wa;
+	}
+
+	return E_OK;
+}
+
+ER data_flash_write(int blockno, void *data)
+{
+	bool_t ret = true;
+
+	/* P/E[hÚs */
+	fcu_pe_mode();
+
+	/* uN`FbN */
+	if(!fcu_check_blank(blockno)){
+		/* uNÅÈ¢ÈçubNÁ */
+		ret = fcu_erase(blockno);
+		if(!ret)
+			syslog(LOG_DEBUG, "fcu_erase() result = %d", ret);
+	}
+
+	if(ret){
+		/* «Ý */
+		ret = fcu_write(blockno, data);
+		if(!ret)
+			syslog(LOG_DEBUG, "fcu_write() result = %d", ret);
+	}
+
+	/* [h[hÚs */
+	fcu_read_mode();
+
+	return ret ? E_OK : E_SYS;
+}
+
+static void fcu_copy_firm()
+{
+	unsigned int *src, *dst, *end;
+
+	/* [h[hÚs */
+	if(sil_reh_mem(FLASH_FENTRYR_ADDR) != 0)
+		sil_wrh_mem(FLASH_FENTRYR_ADDR, 0xAA00);
+
+	/* FCU RAMANZXÂ */
+	sil_wrh_mem(FLASH_FCURAME_ADDR, 0xC401);
+
+	/* FCUt@[EFAðFCU RAMÉRs[ */
+	src = (unsigned int *)FCU_FIRMWARE_ADDR;
+	dst = (unsigned int *)FCU_RAM_ADDR;
+	end = &dst[0x2000 / sizeof(unsigned int)];
+	for(; dst < end; dst++, src++)
+		*dst = *src;
+}
+
+static bool_t fcu_notify_clock()
+{
+	volatile uint8_t *ra;
+	volatile uint16_t *wa;
+
+	ra = (volatile uint8_t *)(DATA_FLASH_BASE_ADDR);
+	wa = (volatile uint16_t *)ra;
+
+	/* ügðÝè */
+	sil_wrh_mem(FLASH_PCKAR_ADDR, 48/*FREQ_PCLK / 1000*/);
+
+	/* üÓNbNÊmR}h­s */
+	*ra = 0xE9;
+	*ra = 0x03;
+	*wa = 0x0F0F;
+	*wa = 0x0F0F;
+	*wa = 0x0F0F;
+	*ra = 0xD0;
+
+	/* 120Ês */
+	fcu_check_frdy(120);
+
+	/* G[mF */
+	return !fcu_check_error();
+}
+
+/*
+ * [h[hÚs
+ */
+static void fcu_read_mode()
+{
+	int i;
+
+	for(;;){
+		for(i = 0; i < 1000; i++){
+			sil_wrh_mem(FLASH_FENTRYR_ADDR, 0xAA00);
+
+			if(sil_reh_mem(FLASH_FENTRYR_ADDR) != 0)
+				continue;
+
+			sil_wrb_mem(FLASH_FWEPROR_ADDR, 0x02);
+			return;
+		}
+
+		syslog(LOG_WARNING, "fcu_read_mode");
+	}
+}
+
+/*
+ * P/E[hÚs
+ */
+static void fcu_pe_mode()
+{
+	sil_wrh_mem(FLASH_FENTRYR_ADDR, 0xAA80);
+	sil_wrb_mem(FLASH_FWEPROR_ADDR, 0x01);
+}
+
+static bool_t fcu_write(int blockno, void *data)
+{
+	volatile uint8_t *ra;
+	volatile uint16_t *wa, *end;
+	uint16_t *src = (uint16_t *)data;
+
+	ra = (volatile uint8_t *)(DATA_FLASH_BLOCK_SIZE * blockno + (intptr_t)DATA_FLASH_BASE_ADDR);
+	end = (volatile uint16_t *)(((intptr_t)ra) + DATA_FLASH_BLOCK_SIZE);
+
+	for(wa = (volatile uint16_t *)ra; wa < end; wa++, src++)
+	{
+		/* vOR}h­s */
+		*ra = 0xE8;
+		*ra = 0x01;
+		*wa = *src;
+		*ra = 0xD0;
+
+		/* 2ms~1.1 */
+		fcu_check_frdy(2200);
+
+		/* G[mF */
+		if(fcu_check_error())
+			return false;
+	}
+
+	return true;
+}
+
+static bool_t fcu_erase(int blockno)
+{
+	volatile uint8_t *ra;
+
+	ra = (volatile uint8_t *)(DATA_FLASH_BLOCK_SIZE * blockno + (intptr_t)DATA_FLASH_BASE_ADDR);
+
+	/* C[XR}h­s */
+	*ra = 0x20;
+	*ra = 0xD0;
+
+	/* 20ms~1.1 */
+	fcu_check_frdy(22000);
+
+	/* G[mF */
+	return !fcu_check_error();
+}
+
+static bool_t fcu_check_blank(int blockno)
+{
+	volatile uint8_t *ra;
+	volatile uint16_t *wa, *end;
+
+	sil_wrb_mem(FLASH_FMODR_ADDR, sil_reb_mem(FLASH_FMODR_ADDR) | FLASH_FMODR_FRDMD_BIT);
+
+	wa = (volatile uint16_t *)(DATA_FLASH_BLOCK_SIZE * blockno + (intptr_t)DATA_FLASH_BASE_ADDR);
+	end = (volatile uint16_t *)(((intptr_t)wa) + DATA_FLASH_BLOCK_SIZE);
+
+	for(; wa < end; wa++)
+	{
+		sil_wrh_mem(FLASH_DFLBCCNT_ADDR, (((intptr_t)wa) & FLASH_DFLBCCNT_BCADR_MASK) << FLASH_DFLBCCNT_BCADR_OFFSET);
+
+		ra = (volatile uint8_t *)wa;
+		*ra = 0x71;
+		*ra = 0xD0;
+
+		/* 30Ês~1.1 */
+		fcu_check_frdy(33);
+
+		/* G[mF */
+		if(fcu_check_error())
+			return false;
+
+		/* uNmF */
+		if((sil_reh_mem(FLASH_DFLBCSTAT_ADDR) & FLASH_DFLBCSTAT_BCST_BIT) != 0)
+			return false;
+	}
+
+	return true;
+}
+
+static bool_t fcu_check_valid(int blockno)
+{
+	volatile uint8_t *ra;
+	volatile uint16_t *wa, *end;
+
+	sil_wrb_mem(FLASH_FMODR_ADDR, sil_reb_mem(FLASH_FMODR_ADDR) | FLASH_FMODR_FRDMD_BIT);
+
+	wa = (volatile uint16_t *)(DATA_FLASH_BLOCK_SIZE * blockno + (intptr_t)DATA_FLASH_BASE_ADDR);
+	end = (volatile uint16_t *)(((intptr_t)wa) + DATA_FLASH_BLOCK_SIZE);
+
+	for(; wa < end; wa++)
+	{
+		sil_wrh_mem(FLASH_DFLBCCNT_ADDR, (((intptr_t)wa) & FLASH_DFLBCCNT_BCADR_MASK) << FLASH_DFLBCCNT_BCADR_OFFSET);
+
+		ra = (volatile uint8_t *)wa;
+		*ra = 0x71;
+		*ra = 0xD0;
+
+		/* 30Ês~1.1 */
+		fcu_check_frdy(33);
+
+		/* G[mF */
+		if(fcu_check_error())
+			return false;
+
+		/* uNmF */
+		if((sil_reh_mem(FLASH_DFLBCSTAT_ADDR) & FLASH_DFLBCSTAT_BCST_BIT) == 0)
+			return false;
+	}
+
+	return true;
+}
+
+static bool_t fcu_check_error()
+{
+	uint8_t status;
+
+	status = sil_reb_mem(FLASH_FSTATR0_ADDR);
+
+	if((status & (FLASH_FSTATR0_ILGLERR_BIT | FLASH_FSTATR0_ERSERR_BIT | FLASH_FSTATR0_PRGERR_BIT)) == 0)
+		return false;
+
+	if((status & FLASH_FSTATR0_ILGLERR_BIT) != 0){
+		if(sil_reb_mem(FLASH_FASTAT_ADDR) != 0x10){
+			sil_wrb_mem(FLASH_FASTAT_ADDR, 0x10);
+		}
+
+		/* Xe[^XNAR}h­s */
+		*((uint8_t *)DATA_FLASH_BASE_ADDR) = 0x50;
+	}
+
+	syslog(LOG_WARNING, "fcu_check_error %02x", status);
+
+	return true;
+}
+
+static bool_t fcu_check_frdy(int tWAIT)
+{
+	int i, j;
+
+	for(i = 0; i < tWAIT; i++){
+		/* õ®¹ÈçI¹ */
+		if((sil_reb_mem(FLASH_FSTATR0_ADDR) & FLASH_FSTATR0_FRDY_BIT) != 0)
+			return true;
+
+		/* 1Ês? */
+		for(j = 0; j < 100; j++);
+	}
+
+	syslog(LOG_WARNING, "fcu_check_frdy timeout");
+
+	/* FCUú» */
+	fcu_init();
+
+	return false;
+}
+
+static void fcu_init()
+{
+	int j;
+
+	sil_wrh_mem(FLASH_FRESETR_ADDR, 0xCC01);
+
+	// 200Ês? */
+	for(j = 0; j < 20000; j++);
+
+	sil_wrh_mem(FLASH_FRESETR_ADDR, 0xCC00);
+}
Index: uKadecot/trunk/src/ukadecot/data_flash.h
===================================================================
--- uKadecot/trunk/src/ukadecot/data_flash.h	(revision 101)
+++ uKadecot/trunk/src/ukadecot/data_flash.h	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#ifndef _DATA_FLASH_H_
+#define _DATA_FLASH_H_
+
+ER data_flash_init();
+ER data_flash_read(int blockno, void *data);
+ER data_flash_write(int blockno, void *data);
+
+#endif	/* of #ifndef _DATA_FLASH_H_ */
Index: uKadecot/trunk/src/ukadecot/echonet_app_config.h
===================================================================
--- uKadecot/trunk/src/ukadecot/echonet_app_config.h	(revision 101)
+++ uKadecot/trunk/src/ukadecot/echonet_app_config.h	(revision 101)
@@ -0,0 +1,94 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#ifndef _ECHONET_APP_CONFIG_H_
+#define _ECHONET_APP_CONFIG_H_
+
+#define ECHONET_CONTROLLER_EXTENTION
+
+/*
+ * T[rX^XNÉÇÁÌð}üµ½¢êÉè`·é
+ *
+ * ^CAEglðÔ·
+ * TMO echonet_task_get_timer();
+ * #define ECHONET_TASK_GET_TIMER echonet_task_get_timer
+ *
+ * ^C}[ÌÔðißé
+ * void echonet_task_progress(TMO interval);
+ * #define ECHONET_TASK_PROGRESS(interval) echonet_task_progress(interval)
+ *
+ * ^CAEgiÌ½ßÌÄÑoµj
+ * void echonet_task_timeout();
+ * #define ECHONET_TASK_TIMEOUT echonet_task_timeout()
+ */
+
+/*
+ * tcoÊM^XNÉÇÁÌð}üµ½¢êÉè`·é
+ *
+ * ^CAEglðÔ·
+ * TMO echonet_udp_task_get_timer();
+ * #define ECHONET_UDP_TASK_GET_TIMER echonet_udp_task_get_timer
+ *
+ * ^C}[ÌÔðißé
+ * void echonet_udp_task_progress(TMO interval);
+ * #define ECHONET_UDP_TASK_PROGRESS(interval) echonet_udp_task_progress(interval)
+ *
+ * ^CAEgiÌ½ßÌÄÑoµj
+ * void echonet_udp_task_timeout();
+ * #define ECHONET_UDP_TASK_TIMEOUT echonet_udp_task_timeout()
+ */
+
+/* fobOoÍLø»Ýè·éÆ«Éè` */
+/* #define ECN_DBG_PUT_ENA */
+
+/* fobOoÍ(CARP)Lø»Ýè·éÆ«Éè` */
+/* #define ECN_CAP_PUT_ENA */
+
+/* syslogó«Ò¿Lø»Ýè·éÆ«Éè` */
+/* #define ECN_DBG_WAI_ENA */
+
+/* WÌecn_data_prop_setðgíÈ¢Æ«Éè` */
+/* #define ECN_USER_DATA_PROP_SET */
+
+/* WÌecn_data_prop_getðgíÈ¢Æ«Éè` */
+/* #define ECN_USER_DATA_PROP_GET */
+
+#endif /* _ECHONET_APP_CONFIG_H_ */
Index: uKadecot/trunk/src/ukadecot/main.c
===================================================================
--- uKadecot/trunk/src/ukadecot/main.c	(revision 101)
+++ uKadecot/trunk/src/ukadecot/main.c	(revision 101)
@@ -0,0 +1,1440 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/* 
+ *  TvvO(1)Ì{Ì
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <sil.h>
+#include "syssvc/serial.h"
+#include "syssvc/syslog.h"
+#include "kernel_cfg.h"
+#include "main.h"
+#include "echonet_cfg.h"
+#ifdef __RX
+#include "rx630_ccrx/rx630.h"
+#else
+#include "rx630_msvc/rx630.h"
+#endif
+#include <uip.h>
+#include <pt.h>
+#include "uip_adpt.h"
+#include "wamp.h"
+// TODO:Rg[ü¯wb_[t@Cðì¬·é
+#include "echonet_task.h"
+#include "echonet_agent.h"
+#include "echonet_lcl_task.h"
+#include "arduino.h"
+#include "data_flash.h"
+
+uint8_t mac_addr[6] = { 0x00, 0x30, 0x13, 0x06, 0x62, 0xC0 };
+
+#define MAKER_CODE	0x00, 0x00, 0xB3	/* TOPPERSvWFNg */
+
+/* m[hvt@CIuWFNg */
+struct node_profile_object_t local_node_data = {
+	0x30,	/* ®ìóÔ */
+	{ 0x01, 0x0A, 0x01, 0x00 },	/* u
+îñ */
+	{
+		0xFE,	/* ºÊÊMwIDtB[h */
+		{ MAKER_CODE },	/* [J[R[h */
+		{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, },	/* j[NID([J[Æ©) */
+	},
+	0x0000,	/* Ùíàe */
+	{ MAKER_CODE },	/* [J[R[h */
+};
+
+/* Rg[[NX */
+struct controller_t controller_class_data = {
+	0x30,	/* ®ìóÔ */
+	0x00,	/* Ýuê */
+	{ 0x00, 0x00, 'C', 0x00 },	/* Kiu
+îñ */
+	0x41,	/* Ùí­¶óÔ */
+	{ MAKER_CODE },	/* [J[R[h */
+};
+
+/*
+ * ®ìóÔON/OFFÝèÖi0x30, 0x31ÌÝó¯t¯j
+ */
+int onoff_prop_set(const EPRPINIB *item, const void *src, int size, bool_t *anno)
+{
+	/* TCYªPÈOÍó¯t¯È¢ */
+	if(size != 1)
+		return 0;
+
+	*anno = *((uint8_t*)item->exinf) != *((uint8_t*)src);
+
+	switch(*(uint8_t *)src){
+	/* ONÌê */
+	case 0x30:
+		*((uint8_t *)item->exinf) = *((uint8_t *)src);
+		/* LEDÌ"."ðON */
+		sil_wrb_mem((uint8_t *)0x0008C02A, sil_reb_mem((uint8_t *)0x0008C02A) | 0x40);
+		break;
+	/* OFFÌê */
+	case 0x31:
+		*((uint8_t *)item->exinf) = *((uint8_t *)src);
+		/* LEDÌ"."ðOFF */
+		sil_wrb_mem((uint8_t *)0x0008C02A, sil_reb_mem((uint8_t *)0x0008C02A) & ~0x40);
+		break;
+	/* 0x30©0x31ÈOÍó¯t¯È¢ */
+	default:
+		return 0;
+	}
+
+	return 1;
+}
+
+/*
+ * ÙíàeÝèÖ
+ */
+int node_profile_object_fault_content_set(const EPRPINIB *item, const void *src, int size, bool_t *anno)
+{
+	/* TCYª2ÈOÍó¯t¯È¢ */
+	if(size != 2)
+		return 0;
+
+	if((*(uint16_t *)src >= 0x0) && (*(uint16_t *)src <= 0x3ec)){
+		*((uint16_t *)item->exinf) = *((uint16_t *)src);
+		/* TODO: ±ÌÌêÌ*/
+	}
+	/* ãLÈOÍó¯t¯È¢ */
+	else{
+		return 0;
+	}
+
+	return 2;
+}
+
+/*
+ * Ùí­¶óÔÝèÖi0x41, 0x42ÌÝó¯t¯j
+ */
+int alarm_prop_set(const EPRPINIB *item, const void *src, int size, bool_t *anno)
+{
+	/* TCYªPÈOÍó¯t¯È¢ */
+	if(size != 1)
+		return 0;
+
+	*anno = *((uint8_t *)item->exinf) != *((uint8_t *)src);
+
+	switch(*(uint8_t *)src){
+	/* Ùí­¶ èÌê */
+	case 0x41:
+	/* Ùí­¶ÈµÌê */
+	case 0x42:
+		*((uint8_t *)item->exinf) = *((uint8_t *)src);
+		break;
+	/* 0x41©0x42ÈOÍó¯t¯È¢ */
+	default:
+		return 0;
+	}
+
+	return 1;
+}
+
+/*
+ * »ÝÝèÖ
+ */
+int time_prop_set(const EPRPINIB *item, const void *src, int size, bool_t *anno)
+{
+	uint8_t *p_src;
+
+	if(size != 2)
+		return 0;
+
+	/* Ýè */
+	p_src = (uint8_t *)src;
+	sil_wrb_mem((uint8_t *)RTC_RHRCNT_ADDR, *p_src++);
+	sil_wrb_mem((uint8_t *)RTC_RMINCNT_ADDR, *p_src++);
+	sil_wrb_mem((uint8_t *)RTC_RSECCNT_ADDR, 0x00);
+
+	return (intptr_t)p_src - (intptr_t)src;
+}
+
+/*
+ * »Ýæ¾Ö
+ */
+int time_prop_get(const EPRPINIB *item, void *dst, int size)
+{
+	uint8_t *p_dst;
+
+	if(size != 2)
+		return 0;
+
+	/* Ýè */
+	p_dst = (uint8_t *)dst;
+	*p_dst++ = sil_reb_mem((uint8_t *)RTC_RHRCNT_ADDR);
+	*p_dst++ = sil_reb_mem((uint8_t *)RTC_RMINCNT_ADDR);
+
+	return (intptr_t)p_dst - (intptr_t)dst;
+}
+
+/*
+ * »ÝNúÝèÖ
+ */
+int date_prop_set(const EPRPINIB *item, const void *src, int size, bool_t *anno)
+{
+	uint8_t *p_src;
+
+	if(size != 4)
+		return 0;
+
+	/* NúÝè */
+	p_src = (uint8_t *)src;
+	p_src++;	/* 20XX */
+	sil_wrb_mem((uint8_t *)RTC_RYRCNT_ADDR, *p_src++);
+	sil_wrb_mem((uint8_t *)RTC_RMONCNT_ADDR, *p_src++);
+	sil_wrb_mem((uint8_t *)RTC_RDAYCNT_ADDR, *p_src++);
+
+	return (intptr_t)p_src - (intptr_t)src;
+}
+
+/*
+ * »ÝNúæ¾Ö
+ */
+int date_prop_get(const EPRPINIB *item, void *dst, int size)
+{
+	uint8_t *p_dst;
+
+	if(size != 4)
+		return 0;
+
+	p_dst = (uint8_t *)dst;
+	*p_dst++ = 0x20;
+	*p_dst++ = sil_reb_mem((uint8_t *)RTC_RYRCNT_ADDR);
+	*p_dst++ = sil_reb_mem((uint8_t *)RTC_RMONCNT_ADDR);
+	*p_dst++ = sil_reb_mem((uint8_t *)RTC_RDAYCNT_ADDR);
+
+	return (intptr_t)p_dst - (intptr_t)dst;
+}
+
+/*
+ *  uIP ^XNú»
+ */
+void uip_task_init(intptr_t exinf)
+{
+	httpd_init();
+}
+
+static void main_initialize();
+static TMO main_get_timer();
+static void main_progress(TMO interval);
+static void main_recv_esv(T_EDATA *esv);
+static bool_t main_wbs_msg(ECN_FBS_ID msg);
+static bool_t main_wbs_que_msg();
+static void main_int_msg(ECN_FBS_ID msg);
+static void main_break_wait(uint8_t *brkdat, int32_t len);
+static void main_timeout();
+static void main_start_service();
+static void main_get_device_list_res(ECN_FBS_ID msg);
+static void main_get_ipaddr_res(ECN_FBS_ID msg);
+static void main_get_device_info_res(ECN_FBS_ID msg);
+static void main_kadecot_set_res(T_EDATA *esv);
+static void main_kadecot_get_res(T_EDATA *esv);
+static void main_ecnl_set_res(T_EDATA *esv);
+static void main_ecnl_get_res(T_EDATA *esv);
+static void main_ecnl_setget_res(T_EDATA *esv);
+static void main_publish(T_EDATA *esv);
+
+struct pt main_pt;
+struct uip_timer main_pt_timer;
+T_ECN_FBS_QUEUE wbs_queue;
+
+/*
+ *  C^XN
+ */
+static
+PT_THREAD(main_task_pt(void))
+{
+	ER ret, ret2;
+	static SYSTIM prev, now;
+	TMO timer;
+	T_EDATA *esv;
+	uint8_t brkdat[64];
+	int32_t len;
+
+	PT_BEGIN(&main_pt);
+
+	/* ú» */
+	main_initialize();
+
+	ret2 = get_tim(&now);
+	if (ret2 != E_OK){
+		syslog(LOG_ERROR, "get_tim");
+		PT_EXIT(&main_pt);
+	}
+
+	for(;;){
+		prev = now;
+
+		/* ^C}[æ¾ */
+		timer = main_get_timer();
+		timer_set(&main_pt_timer, timer);
+
+		/* d¶Ò¿ */
+		PT_WAIT_UNTIL(&main_pt, (((ret = ecn_prcv_esv(&esv)) == E_OK) || (ret == E_BRK)
+			|| ((ret = timer_expired(&main_pt_timer) ? E_TMOUT : E_WBLK) == E_TMOUT)));
+		if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)){
+			syslog(LOG_ERROR, "ecn_trcv_esv");
+			PT_EXIT(&main_pt);
+		}
+
+		ret2 = get_tim(&now);
+		if (ret2 != E_OK){
+			syslog(LOG_ERROR, "get_tim");
+			PT_EXIT(&main_pt);
+		}
+
+		/* Ôoß */
+		main_progress(now - prev);
+
+		/* Echonetd¶óMÌê */
+		if (ret == E_OK) {
+			/* Echonetd¶óM */
+			main_recv_esv(esv);
+
+			/* Ìæðú */
+			ret = ecn_rel_esv(esv);
+			if (ret != E_OK){
+				syslog(LOG_ERROR, "ecn_rel_esv");
+				PT_EXIT(&main_pt);
+			}
+		}
+		/* d¶Ò¿ÌèÝÌê */
+		else if (ret == E_BRK) {
+			ECN_FBS_ID msg = { (T_ECN_FST_BLK	*)esv };
+			bool_t rel_msg = true;
+			switch (msg.ptr->hdr.type) {
+			case 0: 
+				rel_msg = main_wbs_msg(msg);
+				break;
+			case 1/*ECN_MSG_INTERNAL*/:
+				main_int_msg(msg);
+				break;
+			case 3/*ECN_MSG_USER_BREAK*/:
+				/* d¶Ò¿ÌèÝf[^æ¾ */
+				ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len);
+				if (ret != E_OK){
+					syslog(LOG_ERROR, "ecn_get_brk_dat");
+					PT_EXIT(&main_pt);
+				}
+
+				/* d¶Ò¿ÌèÝ */
+				main_break_wait(brkdat, len);
+				break;
+			}
+
+			/* Ìæðú */
+			if (rel_msg) {
+				ret = ecn_rel_esv(esv);
+				if (ret != E_OK){
+					syslog(LOG_ERROR, "ecn_rel_esv");
+					PT_EXIT(&main_pt);
+				}
+			}
+		}
+
+		/* ^CAEg */
+		main_timeout();
+
+		/* L
+[É­ÜÁ½bZ[Wð */
+		while(main_wbs_que_msg());
+	}
+
+	PT_END(&main_pt);
+}
+
+void main_task(intptr_t exinf)
+{
+	main_task_pt();
+}
+
+void main_task_cychdr(intptr_t exinf)
+{
+	(void)iact_tsk((ID)exinf);
+}
+
+enum main_state_t {
+	main_state_start,
+	main_state_idle,
+};
+
+TMO main_timer = TMO_FEVR;
+enum main_state_t main_state = main_state_start;
+bool_t main_btn1_state;
+int main_btn1_count = 0;
+bool_t main_btn2_state;
+int main_btn2_count = 0;
+
+enum request_info_state_t {
+	request_info_state_idle,
+	request_info_state_search_device,
+	request_info_state_get_device_list,
+	request_info_state_get_ipaddr,
+	request_info_state_get_device_info,
+	request_info_state_kadecot_set,
+	request_info_state_kadecot_get,
+	request_info_state_ecnl_set,
+	request_info_state_ecnl_get,
+	request_info_state_ecnl_setget,
+};
+
+typedef struct request_info {
+	enum request_info_state_t state;
+	TMO timer;
+	unsigned int requestId;
+	struct wamp_dealer *dealer;
+	ID eobjid;
+	uint8_t epc;
+} request_info_t;
+
+request_info_t request_infos[1];
+wamp_state_t wamp;
+
+/*
+ * ú»
+ */
+static void main_initialize()
+{
+	uint8_t btn1, btn2;
+	uint8_t data[32], c;
+	int i, j;
+	bool_t dflt_addr = true;
+	ER ret;
+
+	/* LEDð"000"Æ\¦ */
+	sil_wrb_mem((uint8_t *)0x0008C02A, 0x00);
+
+	ret = data_flash_init();
+
+	while(ret == E_OK){
+		ret = data_flash_read(0, data);
+		if(ret != E_OK){
+			break;
+		}
+
+		dflt_addr = false;
+		memcpy(mac_addr, data, sizeof(mac_addr));
+		break;
+	}
+
+	for(i = 0, j = 0; i < sizeof(mac_addr); i++){
+		c = mac_addr[i] >> 4;
+		data[j++] = (c < 10) ? ('0' + c) : ('A' - 10 + c);
+		c = mac_addr[i] & 0xF;
+		data[j++] = (c < 10) ? ('0' + c) : ('A' - 10 + c);
+		data[j++] = ':';
+	}
+	data[--j] = '\0';
+
+	syslog(LOG_INFO, "mac_addr %s %s", data, dflt_addr ? "default" : "flash-rom");
+
+	/* uIPðJn */
+	uip_start();
+
+	wamp_init(&wamp);
+
+	/* 10msãÉ{^óÔðmF */
+	main_state = main_state_start;
+	main_timer = TMO_FEVR;
+
+	/* ArduinoÝ·@\ú» */
+	arduino_init();
+
+	/* {^óÔÇÝÝ */
+	btn1 = sil_reb_mem((uint8_t *)0x0008C04A);
+	/*btn1 = sil_reb_mem((uint8_t *)0x0008C040);*/
+	btn2 = sil_reb_mem((uint8_t *) 0x0008C040);
+	main_btn1_state = (btn1 & 0x80/*0x0x20*/) != 0;
+	main_btn2_state = (btn2 & 0x80) != 0;
+
+	for (i = 0; i< sizeof(request_infos) / sizeof(request_infos[0]); i++) {
+		request_infos[i].timer = TMO_FEVR;
+	}
+}
+
+/*
+ * ^C}[æ¾
+ */
+static TMO main_get_timer()
+{
+	int i;
+	TMO timer = main_timer, temp;
+
+	for (i = 0; i< sizeof(request_infos) / sizeof(request_infos[0]); i++) {
+		temp = request_infos[i].timer;
+		if (temp != TMO_FEVR) {
+			if ((timer == TMO_FEVR) || (temp < timer)) {
+				timer = temp;
+			}
+		}
+	}
+
+	return timer;
+}
+
+/*
+ * Ôoß
+ */
+static void main_progress(TMO interval)
+{
+	int i;
+	TMO temp;
+
+	if (main_timer != TMO_FEVR) {
+		main_timer -= interval;
+		if(main_timer < 0){
+			main_timer = 0;
+		}
+	}
+
+	for (i = 0; i< sizeof(request_infos) / sizeof(request_infos[0]); i++) {
+		temp = request_infos[i].timer;
+		if (temp != TMO_FEVR) {
+			temp -= interval;
+			if(temp < 0){
+				temp = 0;
+			}
+			request_infos[i].timer = temp;
+		}
+	}
+}
+
+static void main_self_msg(T_EDATA *esv);
+
+/*
+ * Echonetd¶óM
+ */
+static void main_recv_esv(T_EDATA *esv)
+{
+	request_info_t *request_info = &request_infos[0];
+
+	switch(esv->hdr.edata.esv){
+	case ESV_SET_RES:
+	case ESV_SET_C_SNA:
+		if (request_info->eobjid != ecn_get_eobj(esv)) {
+			main_self_msg(esv);
+			break;
+		}
+
+		switch(request_info->state){
+		case request_info_state_kadecot_set:
+			main_kadecot_set_res(esv);
+			break;
+		case request_info_state_ecnl_set:
+			main_ecnl_set_res(esv);
+			break;
+		}
+		break;
+	case ESV_GET_RES:
+	case ESV_GET_SNA:
+		if (request_info->eobjid != ecn_get_eobj(esv)) {
+			main_self_msg(esv);
+			break;
+		}
+
+		switch(request_info->state){
+		case request_info_state_kadecot_get:
+			main_kadecot_get_res(esv);
+			break;
+		case request_info_state_ecnl_get:
+			main_ecnl_get_res(esv);
+			break;
+		}
+		break;
+	case ESV_SET_GET_RES:
+	case ESV_SET_GET_SNA:
+		if (request_info->eobjid != ecn_get_eobj(esv)) {
+			main_self_msg(esv);
+			break;
+		}
+
+		switch(request_info->state){
+		case request_info_state_ecnl_setget:
+			main_ecnl_setget_res(esv);
+			break;
+		}
+		break;
+	case ESV_INF:
+		main_self_msg(esv);
+		main_publish(esv);
+		break;
+	default:
+		main_self_msg(esv);
+		break;
+	}
+}
+
+/*
+ * WebSocketbZ[WóM
+ */
+static bool_t main_wbs_msg(ECN_FBS_ID msg)
+{
+	request_info_t *request_info = &request_infos[0];
+
+	if (request_info->state != request_info_state_idle) {
+		ecn_fbs_enqueue(&wbs_queue, msg.ptr);
+		return false;
+	}
+	
+	wamp_put_msg(&wamp, msg, ((ID *)msg.ptr->_gap)[0]);
+	return true;
+}
+
+static bool_t main_wbs_que_msg()
+{
+	request_info_t *request_info = &request_infos[0];
+	ECN_FBS_ID msg;
+	ER ret;
+
+	if (request_info->state != request_info_state_idle)
+		return false;
+
+	ret = ecn_fbs_dequeue(&wbs_queue, &msg.ptr);
+	if (ret == E_TMOUT)
+		return false;
+
+	wamp_put_msg(&wamp, msg, ((ID *)msg.ptr->_gap)[0]);
+
+	_ecn_fbs_del(msg);
+
+	return true;
+}
+
+/*
+ * èÝbZ[WóM
+ */
+static void main_int_msg(ECN_FBS_ID msg)
+{
+	ER ret;
+	uint8_t cmd;
+	ECN_FBS_SSIZE_T len;
+
+	ret = _ecn_fbs_get_data(msg, &cmd, 1, &len);
+	if (ret != E_OK) {
+		return;
+	}
+
+	switch(cmd){
+	case ECN_INM_GET_DEVICE_LIST_RES:
+		main_get_device_list_res(msg);
+		break;
+	case ECN_INM_GET_DEVICE_INFO_RES:
+		main_get_device_info_res(msg);
+		break;
+	case ECN_UDP_MSG_GET_IPADDR_RES:
+		main_get_ipaddr_res(msg);
+		break;
+	}
+}
+
+/*
+ * d¶Ò¿ÌèÝ
+ */
+static void main_break_wait(uint8_t *brkdat, int32_t len)
+{
+	switch(main_state){
+	case main_state_start:
+		main_start_service();
+		main_state = main_state_idle;
+		main_timer = 10;
+		break;
+	case main_state_idle:
+		break;
+	}
+}
+
+/*
+ * d¶Ò¿ÌèÝ
+ */
+void main_set_addr_callback()
+{
+	ER ret;
+	uint8_t data[1];
+
+	/* C^XNÉÊm */
+	data[0] = 0x01;
+	ret = ecn_brk_wai(data, sizeof(data));
+	if(ret != E_OK){
+		syslog(LOG_ERROR, "ecn_brk_wai");
+	}
+}
+
+/*
+ * d¶Ò¿ÌèÝ
+ */
+static void main_start_service()
+{
+	char ip_addr[16], netmask[16], gateway[16];
+	ER ret;
+
+	ip2str(ip_addr, uip_hostaddr);
+	ip2str(netmask, uip_netmask);
+	ip2str(gateway, uip_draddr);
+	syslog(LOG_INFO, "ip_addr %s, netmask %s, gateway %s", ip_addr, netmask, gateway);
+
+	/* ECHONET~hEFAðN® */
+	ret = ecn_sta_svc();
+	if(ret != E_OK)
+		return;
+}
+
+static void main_btn_timeout();
+static void main_request_info_timeout(request_info_t *request_info);
+
+/*
+ * ^CAEg
+ */
+static void main_timeout()
+{
+	int i;
+	TMO temp;
+
+	if (main_timer == 0) {
+		main_btn_timeout();
+	}
+
+	for (i = 0; i< sizeof(request_infos) / sizeof(request_infos[0]); i++) {
+		temp = request_infos[i].timer;
+		if (temp != 0)
+			continue;
+
+		main_request_info_timeout(&request_infos[i]);;
+	}
+}
+
+static void main_btn1_change(bool_t push);
+static void main_btn2_change(bool_t push);
+static ER main_search_device();
+
+static void main_btn_timeout()
+{
+	uint8_t btn1, btn2;
+
+	if(main_timer != 0)
+		return;
+
+	switch(main_state){
+	case main_state_idle:
+		/* 10msãÉ{^óÔðmF */
+		main_timer = 10;
+
+		arduino_tick();
+
+		/* {^óÔÇÝÝ */
+		btn1 = sil_reb_mem((uint8_t *)0x0008C04A);
+		/*btn1 = sil_reb_mem((uint8_t *)0x0008C040);*/
+		btn2 = sil_reb_mem((uint8_t *) 0x0008C040);
+
+		/* {^PÌ */
+		if(((btn1 & 0x80/*0x20*/) != 0) && !main_btn1_state){
+			main_btn1_count++;
+			if(main_btn1_count > 10){
+				main_btn1_count = 0;
+				main_btn1_state = true;
+
+				main_btn1_change(true);
+			}
+		}
+		else if(((btn1 & 0x80/*0x20*/) == 0) && main_btn1_state){
+			main_btn1_count++;
+			if(main_btn1_count > 10){
+				main_btn1_count = 0;
+				main_btn1_state = false;
+
+				main_btn1_change(false);
+			}
+		}
+		else{
+			main_btn1_count = 0;
+		}
+
+		/* {^QÌ */
+		if(((btn2 & 0x80) != 0) && !main_btn2_state){
+			main_btn2_count++;
+			if(main_btn2_count > 10){
+				main_btn2_count = 0;
+				main_btn2_state = true;
+
+				main_btn2_change(true);
+			}
+		}
+		else if(((btn2 & 0x80) == 0) && main_btn2_state){
+			main_btn2_count++;
+			if(main_btn2_count > 10){
+				main_btn2_count = 0;
+				main_btn2_state = false;
+
+				main_btn2_change(false);
+			}
+		}
+		else{
+			main_btn2_count = 0;
+		}
+		break;
+	}
+}
+
+static void main_self_msg(T_EDATA *esv)
+{
+	ER ret;
+	uint8_t epc;
+	uint8_t pdc;
+	uint8_t p_edt[256];
+	T_ENUM_EPC enm;
+
+	ret = ecn_itr_ini(&enm, esv);
+	if(ret != E_OK){
+		syslog(LOG_ERROR, "ecn_itr_ini");
+		return;
+	}
+
+	for(;;) {
+		while((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
+			switch (epc) {
+			case 0x80:
+				break;
+			case 0x81:
+				break;
+			}
+		}
+		if(ret != E_BOVR){
+			syslog(LOG_ERROR, "ecn_itr_nxt");
+			break;
+		}
+		if(enm.is_eof)
+			break;
+	}
+}
+
+/*
+ * {^PóÔÏ»
+ */
+static void main_btn1_change(bool_t push)
+{
+	/* ³êÄßÁ½É·é */
+	if(push)
+		return;
+
+	/* @íÌõ */
+	main_search_device();
+}
+
+/*
+ * {^QóÔÏ»
+ */
+static void main_btn2_change(bool_t push)
+{
+}
+
+/*
+ * @íÌõ
+ */
+static ER main_search_device()
+{
+	ER ret;
+	T_EDATA *esv;
+
+	/* @íÌõ */
+	ret = ecn_esv_inf_req(&esv, EOBJ_NULL, 0xD6);
+	if(ret != E_OK){
+		syslog(LOG_ERROR, "ecn_esv_inf_req");
+		return ret;
+	}
+
+	/* d¶M */
+	ret = ecn_snd_esv(esv);
+	if(ret != E_OK){
+		syslog(LOG_ERROR, "ecn_snd_esv");
+		return ret;
+	}
+
+	return E_OK;
+}
+
+extern int ws_out_req;
+
+ER main_send_message(ECN_FBS_ID msg, ID wbsid)
+{
+	ER ret;
+
+	((ID *)msg.ptr->_gap)[0] = wbsid;
+
+	ret = psnd_dtq(WEBSOCKET_MBXID, (intptr_t)msg.ptr);
+	if(ret != E_OK){
+		syslog(LOG_ERROR, "psnd_dtq(WEBSOCKET_MBXID) : result=%d", ret);
+		_ecn_fbs_del(msg);
+		return ret;
+	}
+
+	ws_out_req++;
+	act_tsk(UIP_TASK);
+
+	return ret;
+}
+
+ER main_get_device_list(unsigned int requestId, struct wamp_dealer *dealer)
+{
+	request_info_t *request_info = &request_infos[0];
+	ER ret;
+
+	if(request_info->requestId != 0)
+		return E_QOVR;
+
+	/* @íÌõ */
+	ret = main_search_device();
+	if(ret != E_OK){
+		return ret;
+	}
+
+	request_info->state = request_info_state_search_device;
+	request_info->timer = (TMO)5000;
+	request_info->requestId = requestId;
+	request_info->dealer = dealer;
+
+	return E_OK;
+}
+
+static void main_search_device_timeout()
+{
+	request_info_t *request_info = &request_infos[0];
+	ER ret;
+	ECN_FBS_ID req;
+
+	for (;;) {
+		ret = ecn_agent_get_device_list(ECHONET_API_MAILBOX, request_info->requestId, &req);
+		if(ret != E_OK){
+			syslog(LOG_ERROR, "ecn_agent_get_device_list");
+			break;
+		}
+
+		ret = psnd_dtq(req.ptr->hdr.target_mbxid, (intptr_t)req.ptr);
+		if (ret != E_OK) {
+			syslog(LOG_ERROR, "psnd_dtq");
+			_ecn_fbs_del(req);
+			break;
+		}
+
+		request_info->state = request_info_state_get_device_list;
+		request_info->timer = (TMO)1000;
+		return;
+	}
+
+	wamp_dealer_get_devicelist_timeout(request_info->dealer);
+
+	request_info->state = request_info_state_idle;
+	request_info->timer = TMO_FEVR;
+	request_info->requestId = 0;
+	request_info->dealer = NULL;
+}
+
+static void main_get_device_list_res(ECN_FBS_ID msg)
+{
+	request_info_t *request_info = &request_infos[0];
+	ER ret;
+	unsigned int requestId;
+	struct wamp_dealer *dealer;
+	ECN_FBS_SSIZE_T len;
+
+	ret = _ecn_fbs_get_data(msg, &requestId, sizeof(requestId), &len);
+	if (ret != E_OK) {
+		syslog(LOG_ERROR, "_ecn_fbs_get_data");
+		return;
+	}
+
+	if (request_info->requestId != requestId)
+		return;
+
+	dealer = request_info->dealer;
+	request_info->state = request_info_state_idle;
+	request_info->timer = TMO_FEVR;
+	request_info->requestId = 0;
+	request_info->dealer = NULL;
+
+	wamp_dealer_set_devicelist(dealer, msg);
+}
+
+ER main_get_device_ipaddr(unsigned int requestId, struct wamp_dealer *dealer, ECN_ENOD_ID addrid)
+{
+	request_info_t *request_info = &request_infos[0];
+	ER ret;
+	ECN_FBS_ID req;
+
+	if(request_info->requestId != 0)
+		return E_QOVR;
+
+	ret = ecn_udp_get_ipaddr(ECHONET_API_MAILBOX, requestId, addrid, &req);
+	if(ret != E_OK){
+		return ret;
+	}
+
+	ret = psnd_dtq(req.ptr->hdr.target_mbxid, (intptr_t)req.ptr);
+	if (ret != E_OK) {
+		syslog(LOG_ERROR, "psnd_dtq");
+		_ecn_fbs_del(req);
+		return ret;
+	}
+
+	request_info->state = request_info_state_get_ipaddr;
+	request_info->timer = (TMO)1000;
+	request_info->requestId = requestId;
+	request_info->dealer = dealer;
+
+	return E_OK;
+}
+
+static void main_get_ipaddr_res(ECN_FBS_ID msg)
+{
+	request_info_t *request_info = &request_infos[0];
+	ER ret;
+	struct wamp_dealer *dealer;
+	ECN_FBS_SSIZE_T len;
+	ecn_udp_msg_get_ipaddr_res_t ipaddr;
+	char str[16];
+
+	ret = _ecn_fbs_get_data(msg, &ipaddr, sizeof(ipaddr), &len);
+	if (ret || (len != sizeof(ipaddr))) {
+		syslog(LOG_ERROR, "_ecn_fbs_get_data");
+		return;
+	}
+
+	if (request_info->requestId != ipaddr.requestid)
+		return;
+
+	dealer = request_info->dealer;
+	request_info->state = request_info_state_idle;
+	request_info->timer = TMO_FEVR;
+	request_info->requestId = 0;
+	request_info->dealer = NULL;
+
+	ipaddr2str(str, sizeof(str), ipaddr.enodadrb.ipaddr);
+
+	wamp_dealer_set_ipaddr(dealer, str);
+}
+
+ER main_get_device_info(unsigned int requestId, struct wamp_dealer *dealer, ID eobjid)
+{
+	request_info_t *request_info = &request_infos[0];
+	ER ret;
+	ECN_FBS_ID req;
+
+	if(request_info->requestId != 0)
+		return E_QOVR;
+
+	ret = ecn_agent_get_device_info(ECHONET_API_MAILBOX, requestId, eobjid, &req);
+	if(ret != E_OK){
+		return ret;
+	}
+
+	ret = psnd_dtq(req.ptr->hdr.target_mbxid, (intptr_t)req.ptr);
+	if (ret != E_OK) {
+		syslog(LOG_ERROR, "psnd_dtq");
+		_ecn_fbs_del(req);
+		return ret;
+	}
+
+	request_info->state = request_info_state_get_device_info;
+	request_info->timer = (TMO)1000;
+	request_info->requestId = requestId;
+	request_info->dealer = dealer;
+
+	return E_OK;
+}
+
+static void main_get_device_info_res(ECN_FBS_ID msg)
+{
+	request_info_t *request_info = &request_infos[0];
+	ER ret;
+	struct wamp_dealer *dealer;
+	ecn_inm_get_device_info_res_t rmsg;
+	ECN_FBS_SSIZE_T len;
+
+	ret = _ecn_fbs_get_data(msg, &rmsg, sizeof(rmsg), &len);
+	if (ret != E_OK) {
+		syslog(LOG_ERROR, "_ecn_fbs_get_data");
+		return;
+	}
+
+	if (request_info->requestId != rmsg.requestid)
+		return;
+
+	dealer = request_info->dealer;
+	request_info->state = request_info_state_idle;
+	request_info->timer = TMO_FEVR;
+	request_info->requestId = 0;
+	request_info->dealer = NULL;
+
+	wamp_dealer_set_deviceinfo(dealer, rmsg.eobjid, rmsg.pmapSet, rmsg.pmapGet, rmsg.pmapAnno);
+}
+
+ER main_kadecot_get(unsigned int requestId, struct wamp_dealer *dealer, ID eobjid, uint8_t epc)
+{
+	request_info_t *request_info = &request_infos[0];
+	ER ret;
+	T_EDATA *esv;
+
+	if(request_info->requestId != 0)
+		return E_QOVR;
+
+	/* vpeBæ¾d¶ì¬ */
+	ret = ecn_esv_get(&esv, eobjid, epc);
+	if(ret != E_OK){
+		syslog(LOG_ERROR, "ecn_esv_get");
+		return ret;
+	}
+
+	/* d¶M */
+	ret = ecn_snd_esv(esv);
+	if(ret != E_OK){
+		syslog(LOG_ERROR, "ecn_snd_esv");
+		return ret;
+	}
+
+	request_info->state = request_info_state_kadecot_get;
+	request_info->timer = (TMO)5000;
+	request_info->requestId = requestId;
+	request_info->dealer = dealer;
+	request_info->eobjid = eobjid;
+	request_info->epc = epc;
+
+	return E_OK;
+}
+
+static void main_kadecot_get_res(T_EDATA *esv)
+{
+	request_info_t *request_info = &request_infos[0];
+	ER ret;
+	ID eobjid = ecn_get_eobj(esv);
+	struct wamp_dealer *dealer = request_info->dealer;
+	uint8_t epc;
+	uint8_t pdc;
+	uint8_t p_edt[256];
+	T_ENUM_EPC enm;
+
+	if(request_info->eobjid != eobjid)
+		return;
+
+	dealer = request_info->dealer;
+	request_info->state = request_info_state_idle;
+	request_info->timer = TMO_FEVR;
+	request_info->requestId = 0;
+	request_info->dealer = NULL;
+
+	ret = ecn_itr_ini(&enm, esv);
+	if(ret != E_OK){
+		syslog(LOG_ERROR, "ecn_itr_ini");
+		return;
+	}
+
+	for(;;) {
+		while((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
+			if (request_info->epc == epc) {
+				wamp_dealer_kadecot_get(dealer, eobjid, epc, pdc, p_edt);
+			}
+		}
+		if(ret != E_BOVR){
+			syslog(LOG_ERROR, "ecn_itr_nxt");
+			break;
+		}
+		if(enm.is_eof)
+			break;
+	}
+}
+
+ER main_kadecot_set(unsigned int requestId, struct wamp_dealer *dealer, ID eobjid, uint8_t epc,
+	uint8_t pdc, uint8_t *edt)
+{
+	request_info_t *request_info = &request_infos[0];
+	ER ret;
+	T_EDATA *esv;
+
+	if(request_info->requestId != 0)
+		return E_QOVR;
+
+	/* vpeBæ¾d¶ì¬ */
+	ret = ecn_esv_setc(&esv, eobjid, epc, pdc, edt);
+	if(ret != E_OK){
+		syslog(LOG_ERROR, "ecn_esv_setc");
+		return ret;
+	}
+
+	/* d¶M */
+	ret = ecn_snd_esv(esv);
+	if(ret != E_OK){
+		syslog(LOG_ERROR, "ecn_snd_esv");
+		return ret;
+	}
+
+	request_info->state = request_info_state_kadecot_set;
+	request_info->timer = (TMO)5000;
+	request_info->requestId = requestId;
+	request_info->dealer = dealer;
+	request_info->eobjid = eobjid;
+	request_info->epc = epc;
+
+	return E_OK;
+}
+
+static void main_kadecot_set_res(T_EDATA *esv)
+{
+	request_info_t *request_info = &request_infos[0];
+	ER ret;
+	ID eobjid = ecn_get_eobj(esv);
+	struct wamp_dealer *dealer = request_info->dealer;
+	uint8_t epc;
+	uint8_t pdc;
+	uint8_t p_edt[256];
+	T_ENUM_EPC enm;
+
+	if (dealer == NULL)
+		return;
+
+	if(request_info->eobjid != eobjid)
+		return;
+
+	request_info->state = request_info_state_idle;
+	request_info->timer = TMO_FEVR;
+	request_info->requestId = 0;
+	request_info->dealer = NULL;
+
+	ret = ecn_itr_ini(&enm, esv);
+	if(ret != E_OK){
+		syslog(LOG_ERROR, "ecn_itr_ini");
+		return;
+	}
+
+	for(;;) {
+		while((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
+			if (request_info->epc == epc) {
+				wamp_dealer_kadecot_set(dealer, eobjid, epc);
+			}
+		}
+		if(ret != E_BOVR){
+			syslog(LOG_ERROR, "ecn_itr_nxt");
+			break;
+		}
+		if(enm.is_eof)
+			break;
+	}
+}
+
+ER main_ecnl_get(unsigned int requestId, struct wamp_dealer *dealer, ID eobjid, T_EDATA *esv)
+{
+	request_info_t *request_info = &request_infos[0];
+	ER ret;
+
+	if(request_info->requestId != 0)
+		return E_QOVR;
+
+	/* d¶M */
+	ret = ecn_snd_esv(esv);
+	if(ret != E_OK){
+		syslog(LOG_ERROR, "ecn_snd_esv");
+		return ret;
+	}
+
+	request_info->state = request_info_state_ecnl_get;
+	request_info->timer = (TMO)5000;
+	request_info->requestId = requestId;
+	request_info->dealer = dealer;
+	request_info->eobjid = eobjid;
+
+	return E_OK;
+}
+
+static void main_ecnl_get_res(T_EDATA *esv)
+{
+	request_info_t *request_info = &request_infos[0];
+
+	wamp_dealer_ecnl_get_res(request_info->dealer, esv);
+
+	request_info->state = request_info_state_idle;
+	request_info->timer = TMO_FEVR;
+	request_info->requestId = 0;
+	request_info->dealer = NULL;
+}
+
+ER main_ecnl_set(unsigned int requestId, struct wamp_dealer *dealer, ID eobjid, T_EDATA *esv)
+{
+	request_info_t *request_info = &request_infos[0];
+	ER ret;
+
+	if(request_info->requestId != 0)
+		return E_QOVR;
+
+	/* d¶M */
+	ret = ecn_snd_esv(esv);
+	if(ret != E_OK){
+		syslog(LOG_ERROR, "ecn_snd_esv");
+		return ret;
+	}
+
+	request_info->state = request_info_state_ecnl_set;
+	request_info->timer = (TMO)5000;
+	request_info->requestId = requestId;
+	request_info->dealer = dealer;
+	request_info->eobjid = eobjid;
+
+	return E_OK;
+}
+
+static void main_ecnl_set_res(T_EDATA *esv)
+{
+	request_info_t *request_info = &request_infos[0];
+
+	wamp_dealer_ecnl_set_res(request_info->dealer, esv);
+
+	request_info->state = request_info_state_idle;
+	request_info->timer = TMO_FEVR;
+	request_info->requestId = 0;
+	request_info->dealer = NULL;
+}
+
+ER main_ecnl_setget(unsigned int requestId, struct wamp_dealer *dealer, ID eobjid, T_EDATA *esv)
+{
+	request_info_t *request_info = &request_infos[0];
+	ER ret;
+
+	if(request_info->requestId != 0)
+		return E_QOVR;
+
+	/* d¶M */
+	ret = ecn_snd_esv(esv);
+	if(ret != E_OK){
+		syslog(LOG_ERROR, "ecn_snd_esv");
+		return ret;
+	}
+
+	request_info->state = request_info_state_ecnl_setget;
+	request_info->timer = (TMO)5000;
+	request_info->requestId = requestId;
+	request_info->dealer = dealer;
+	request_info->eobjid = eobjid;
+
+	return E_OK;
+}
+
+static void main_ecnl_setget_res(T_EDATA *esv)
+{
+	request_info_t *request_info = &request_infos[0];
+
+	wamp_dealer_ecnl_setget_res(request_info->dealer, esv);
+
+	request_info->state = request_info_state_idle;
+	request_info->timer = TMO_FEVR;
+	request_info->requestId = 0;
+	request_info->dealer = NULL;
+}
+
+static void main_request_info_timeout(request_info_t *request_info)
+{
+	struct wamp_dealer *dealer = request_info->dealer;
+
+	switch(request_info->state) {
+	case request_info_state_search_device:
+		main_search_device_timeout();
+		return;
+	case request_info_state_get_device_list:
+		wamp_dealer_get_devicelist_timeout(dealer);
+		break;
+	case request_info_state_get_ipaddr:
+		wamp_dealer_get_ipaddr_timeout(dealer);
+		break;
+	case request_info_state_get_device_info:
+		wamp_dealer_get_deviceinfo_timeout(dealer);
+		break;
+	case request_info_state_kadecot_set:
+		wamp_dealer_kadecot_set_timeout(dealer);
+		break;
+	case request_info_state_kadecot_get:
+		wamp_dealer_kadecot_get_timeout(dealer);
+		break;
+	case request_info_state_ecnl_set:
+		wamp_dealer_ecnl_set_timeout(dealer);
+		break;
+	case request_info_state_ecnl_get:
+		wamp_dealer_ecnl_get_timeout(dealer);
+		break;
+	case request_info_state_ecnl_setget:
+		wamp_dealer_ecnl_setget_timeout(dealer);
+		break;
+	}
+
+	request_info->state = request_info_state_idle;
+	request_info->timer = TMO_FEVR;
+	request_info->requestId = 0;
+	request_info->dealer = NULL;
+}
+
+static void main_publish(T_EDATA *esv)
+{
+	ID eobjid = ecn_get_eobj(esv);
+	uint16_t devType = (esv->hdr.edata.seoj.eojx1 << 8) | esv->hdr.edata.seoj.eojx2;
+	uint8_t epc;
+	uint8_t pdc;
+	uint8_t p_edt[256];
+	T_ENUM_EPC enm;
+	ER ret;
+
+	ret = ecn_itr_ini(&enm, esv);
+	if(ret != E_OK){
+		syslog(LOG_ERROR, "ecn_itr_ini");
+		return;
+	}
+
+	for(;;) {
+		while((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
+			wamp_broker_publish_inf(&wamp.broker, esv->hdr.ecn_hdr.tid, eobjid,
+				devType, epc, pdc, p_edt);
+		}
+		if(ret != E_BOVR){
+			syslog(LOG_ERROR, "ecn_itr_nxt");
+			break;
+		}
+		if(enm.is_eof)
+			break;
+	}
+}
Index: uKadecot/trunk/src/ukadecot/main.cfg
===================================================================
--- uKadecot/trunk/src/ukadecot/main.cfg	(revision 101)
+++ uKadecot/trunk/src/ukadecot/main.cfg	(revision 101)
@@ -0,0 +1,109 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#include "main.h"
+
+/*
+ *  TvvO(1)ÌVXeRtBM
+[Vt@C
+ */
+INCLUDE("target_timer.cfg");
+INCLUDE("syssvc/syslog.cfg");
+INCLUDE("syssvc/banner.cfg");
+INCLUDE("syssvc/serial.cfg");
+INCLUDE("syssvc/logtask.cfg");
+INCLUDE("nic_ssp.cfg");
+INCLUDE("uip_task.cfg");
+INCLUDE("echonet_ssp.cfg");
+
+#include "echonet.h"
+
+CRE_TSK(MAIN_TASK, { TA_ACT, 0, main_task, MAIN_PRIORITY, MAIN_STACK_SIZE, NULL });
+CRE_CYC(MAIN_CYC, { TA_ACT, MAIN_TASK, main_task_cychdr, 1, 0 });
+CRE_DTQ(WEBSOCKET_MBXID, { TA_TFIFO, NUM_WEBSOCKET_MBXID, NULL });
+
+/*
+ *  m[hvt@CIuWFNg
+ */
+ECN_CRE_EOBJ (LOCAL_NODE_EOBJ, { EOBJ_LOCAL_NODE, EOBJ_NULL, 0, EOJ_X1_PROFILE, EOJ_X2_NODE_PROFILE, EOJ_X3_LOCAL_NODE });
+
+/* ®ìóÔ */
+ECN_DEF_EPRP (LOCAL_NODE_EOBJ, { 0x80, EPC_RULE_SET | EPC_RULE_GET, 1, (intptr_t)&local_node_data.operation_status, (EPRP_SETTER *)onoff_prop_set, (EPRP_GETTER *)ecn_data_prop_get });
+
+/* u
+îñ */
+ECN_DEF_EPRP (LOCAL_NODE_EOBJ, { 0x82, EPC_RULE_GET, 4, (intptr_t)&local_node_data.version_information, (EPRP_SETTER *)ecn_data_prop_set, (EPRP_GETTER *)ecn_data_prop_get });
+
+/* ¯ÊÔ */
+ECN_DEF_EPRP (LOCAL_NODE_EOBJ, { 0x83, EPC_RULE_GET, 17, (intptr_t)&local_node_data.identification_number, (EPRP_SETTER *)ecn_data_prop_set, (EPRP_GETTER *)ecn_data_prop_get });
+
+/* Ùíàe */
+ECN_DEF_EPRP (LOCAL_NODE_EOBJ, { 0x89, EPC_RULE_GET, 2, (intptr_t)&local_node_data.fault_content, (EPRP_SETTER *)node_profile_object_fault_content_set, (EPRP_GETTER *)ecn_data_prop_get });
+
+/* [J[R[h */
+ECN_DEF_EPRP (LOCAL_NODE_EOBJ, { 0x8A, EPC_RULE_GET, 3, (intptr_t)&local_node_data.manufacturer_code, (EPRP_SETTER *)ecn_data_prop_set, (EPRP_GETTER *)ecn_data_prop_get });
+
+/*
+ *  Rg[[NX
+ */
+ECN_CRE_EOBJ (CONTROLLER_CLASS_EOBJ, { EOBJ_DEVICE, LOCAL_NODE_EOBJ, 0, EOJ_X1_CONTROLLER, EOJ_X2_CONTROLLER, EOJ_X3_CONTROLLER });
+
+/* ®ìóÔ */
+ECN_DEF_EPRP (CONTROLLER_CLASS_EOBJ, { 0x80, EPC_RULE_SET | EPC_RULE_GET | EPC_ANNOUNCE, 1, (intptr_t)&controller_class_data.operation_status, (EPRP_SETTER *)onoff_prop_set, (EPRP_GETTER *)ecn_data_prop_get });
+
+/* Ýuê */
+ECN_DEF_EPRP (CONTROLLER_CLASS_EOBJ, { 0x81, EPC_RULE_SET | EPC_RULE_GET | EPC_ANNOUNCE, 1, (intptr_t)&controller_class_data.installation_location, (EPRP_SETTER *)ecn_data_prop_set, (EPRP_GETTER *)ecn_data_prop_get });
+
+/* Kiu
+îñ */
+ECN_DEF_EPRP (CONTROLLER_CLASS_EOBJ, { 0x82, EPC_RULE_GET, 4, (intptr_t)&controller_class_data.standard_version_information, (EPRP_SETTER *)ecn_data_prop_set, (EPRP_GETTER *)ecn_data_prop_get });
+
+/* Ùí­¶óÔ */
+ECN_DEF_EPRP (CONTROLLER_CLASS_EOBJ, { 0x88, EPC_RULE_GET | EPC_ANNOUNCE, 1, (intptr_t)&controller_class_data.fault_status, (EPRP_SETTER *)alarm_prop_set, (EPRP_GETTER *)ecn_data_prop_get });
+
+/* [J[R[h */
+ECN_DEF_EPRP (CONTROLLER_CLASS_EOBJ, { 0x8A, EPC_RULE_GET, 3, (intptr_t)&controller_class_data.manufacturer_code, (EPRP_SETTER *)ecn_data_prop_set, (EPRP_GETTER *)ecn_data_prop_get });
+
+/* »ÝÝè */
+ECN_DEF_EPRP (CONTROLLER_CLASS_EOBJ, { 0x97, EPC_RULE_SET | EPC_RULE_GET, 2, (intptr_t)NULL, (EPRP_SETTER *)time_prop_set, (EPRP_GETTER *)time_prop_get });
+
+/* »ÝNúÝè */
+ECN_DEF_EPRP (CONTROLLER_CLASS_EOBJ, { 0x98, EPC_RULE_SET | EPC_RULE_GET, 4, (intptr_t)NULL, (EPRP_SETTER *)date_prop_set, (EPRP_GETTER *)date_prop_get });
Index: uKadecot/trunk/src/ukadecot/main.h
===================================================================
--- uKadecot/trunk/src/ukadecot/main.h	(revision 101)
+++ uKadecot/trunk/src/ukadecot/main.h	(revision 101)
@@ -0,0 +1,204 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#ifndef _MAIN_H_
+#define _MAIN_H_
+
+/*
+ *		TvvO(1)Ìwb_t@C
+ */
+
+/*
+ *  ^[QbgË¶Ìè`
+ */
+#include <kernel.h>
+#include "target_config.h"
+#include "echonet.h"
+#include "echonet_fbs.h"
+
+/*
+ *  e^XNÌDæxÌè`
+ */
+
+#define MAIN_PRIORITY	7		/* C^XNÌDæx */
+#define INIT_PRIORITY		1	/* ú»^XNÌDæx */
+#define LOGTASK_PRIORITY	8	/* O^XNÌDæx */
+
+#define MAIN_STACK_SIZE	1024	/* X^bNÌæÌTCY */
+
+#define EOJ_X3_LOCAL_NODE 1	/* m[hvt@CIuWFNgÌCX^XR[h */
+
+#define EOJ_X3_CONTROLLER 1	/* Rg[[NXÌCX^XR[h */
+
+#define NUM_WEBSOCKET_MBXID 2
+
+/*
+ *  ÖÌvg^Cvé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+extern void main_task(intptr_t exinf);
+extern void main_task_cychdr(intptr_t exinf);
+
+#ifdef __CA850__
+#pragma pack(1)
+#elif __RX
+#pragma pack
+#elif _MSC_VER
+#pragma pack(push, 1)
+#endif
+
+/*
+ *  u
+îñÌ^
+ */
+struct version_information_t {
+	/* W[o[W(¬_Èã) */
+	uint8_t major_version_number;
+	/* }Ci[o[W(¬_Èº) */
+	uint8_t minor_version_number;
+	/* d¶^Cv */
+	uint8_t message_type[2];
+};
+
+/*
+ *  [J[R[hÌ^
+ */
+struct manufacturer_code_t {
+	/* [J[R[h */
+	uint8_t manufacturer_code[3];
+};
+
+/*
+ *  ¯ÊÔÌ^
+ */
+struct node_identification_number_t {
+	/* ºÊÊMwIDtB[h */
+	uint8_t lower_communication_id_field;
+	/* [J[R[h */
+	struct manufacturer_code_t manufacturer_code;
+	/* j[NID([J[Æ©) */
+	uint8_t unique_id_section[13];
+};
+
+/*
+ *  Kiu
+îñÌ^
+ */
+struct standard_version_information_t {
+	/* Åè1(for future reserved) */
+	uint8_t reserved1;
+	/* Åè2(for future reserved) */
+	uint8_t reserved2;
+	/* [XðASCIIÅ¦· */
+	uint8_t order_of_release;
+	/* Åè4(for future reserved) */
+	uint8_t reserved4;
+};
+
+/*
+ *  m[hvt@CIuWFNg
+ */
+struct node_profile_object_t {
+	/* ®ìóÔ */
+	uint8_t operation_status;
+	/* u
+îñ */
+	struct version_information_t version_information;
+	/* ¯ÊÔ */
+	struct node_identification_number_t identification_number;
+	/* Ùíàe */
+	uint16_t fault_content;
+	/* [J[R[h */
+	struct manufacturer_code_t manufacturer_code;
+};
+
+/*
+ *  Rg[[NX
+ */
+struct controller_t {
+	/* ®ìóÔ */
+	uint8_t operation_status;
+	/* Ýuê */
+	uint8_t installation_location;
+	/* Kiu
+îñ */
+	struct standard_version_information_t standard_version_information;
+	/* Ùí­¶óÔ */
+	uint8_t fault_status;
+	/* [J[R[h */
+	struct manufacturer_code_t manufacturer_code;
+};
+
+#ifdef __CA850__
+#pragma pack(8)
+#elif __RX
+#pragma unpack
+#elif _MSC_VER
+#pragma pack(pop)
+#endif
+
+extern struct node_profile_object_t local_node_data;	/* m[hvt@CIuWFNgÌf[^ */
+
+extern struct controller_t controller_class_data;	/* Rg[[NXÌf[^ */
+
+EPRP_SETTER onoff_prop_set;
+EPRP_SETTER node_profile_object_fault_content_set;
+EPRP_SETTER alarm_prop_set;
+EPRP_SETTER time_prop_set;
+EPRP_GETTER time_prop_get;
+EPRP_SETTER date_prop_set;
+EPRP_GETTER date_prop_get;
+
+ER main_send_message(ECN_FBS_ID buf, ID wbsid);
+ER main_get_device_list(unsigned int requestId, struct wamp_dealer *dealer);
+ER main_get_device_ipaddr(unsigned int requestId, struct wamp_dealer *dealer, ECN_ENOD_ID addrid);
+ER main_get_device_info(unsigned int requestId, struct wamp_dealer *dealer, ID eobjid);
+ER main_kadecot_get(unsigned int requestId, struct wamp_dealer *dealer, ID eobjid, uint8_t epc);
+ER main_kadecot_set(unsigned int requestId, struct wamp_dealer *dealer, ID eobjid, uint8_t epc,
+	uint8_t pdc, uint8_t *edt);
+ER main_ecnl_get(unsigned int requestId, struct wamp_dealer *dealer, ID eobjid, T_EDATA *esv);
+ER main_ecnl_set(unsigned int requestId, struct wamp_dealer *dealer, ID eobjid, T_EDATA *esv);
+ER main_ecnl_setget(unsigned int requestId, struct wamp_dealer *dealer, ID eobjid, T_EDATA *esv);
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+#endif	/* of #ifndef _MAIN_H_ */
Index: uKadecot/trunk/src/ukadecot/uip-conf.h
===================================================================
--- uKadecot/trunk/src/ukadecot/uip-conf.h	(revision 101)
+++ uKadecot/trunk/src/ukadecot/uip-conf.h	(revision 101)
@@ -0,0 +1,221 @@
+/**
+ * \addtogroup uipopt
+ * @{
+ */
+
+/**
+ * \name Project-specific configuration options
+ * @{
+ *
+ * uIP has a number of configuration options that can be overridden
+ * for each project. These are kept in a project-specific uip-conf.h
+ * file and all configuration names have the prefix UIP_CONF.
+ */
+
+/*
+ * Copyright (c) 2006, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * $Id$
+ */
+
+/**
+ * \file
+ *         An example uIP configuration file
+ * \author
+ *         Adam Dunkels <adam@sics.se>
+ */
+
+#ifndef __UIP_CONF_H__
+#define __UIP_CONF_H__
+
+/**
+ * 8 bit datatype
+ *
+ * This typedef defines the 8-bit type used throughout uIP.
+ *
+ * \hideinitializer
+ */
+typedef unsigned char u8_t;
+
+/**
+ * 16 bit datatype
+ *
+ * This typedef defines the 16-bit type used throughout uIP.
+ *
+ * \hideinitializer
+ */
+typedef unsigned short u16_t;
+
+/**
+ * Statistics datatype
+ *
+ * This typedef defines the dataype used for keeping statistics in
+ * uIP.
+ *
+ * \hideinitializer
+ */
+typedef unsigned short uip_stats_t;
+
+/**
+ * Maximum number of TCP connections.
+ *
+ * \hideinitializer
+ */
+#define UIP_CONF_MAX_CONNECTIONS 20
+
+/**
+ * Maximum number of listening TCP ports.
+ *
+ * \hideinitializer
+ */
+#define UIP_CONF_MAX_LISTENPORTS 10
+
+/**
+ * uIP buffer size.
+ *
+ * \hideinitializer
+ */
+//#define UIP_CONF_BUFFER_SIZE     420
+#define UIP_CONF_BUFFER_SIZE     1514
+
+/**
+ * Use uIP stack buffer or external driver buffer.
+ *
+ * \hideinitializer
+ */
+#define UIP_CONF_EXTERNAL_BUFFER 1
+
+
+/**
+ * CPU byte order.
+ *
+ * \hideinitializer
+ */
+// #define UIP_CONF_BYTE_ORDER      LITTLE_ENDIAN
+#ifdef __LIT
+#define UIP_CONF_BYTE_ORDER      UIP_LITTLE_ENDIAN
+#else
+#define UIP_CONF_BYTE_ORDER      UIP_BIG_ENDIAN
+#endif
+
+/**
+ * Logging on or off
+ *
+ * \hideinitializer
+ */
+#define UIP_CONF_LOGGING         1
+
+/**
+ * Enable IPv6.
+ *
+ * \hideinitializer
+ */
+#define UIP_CONF_IPV6            0
+
+/**
+ * UDP support on or off
+ *
+ * \hideinitializer
+ */
+#define UIP_CONF_UDP             1
+
+/**
+ * UDP checksums on or off
+ *
+ * \hideinitializer
+ */
+#define UIP_CONF_UDP_CHECKSUMS   1
+
+/**
+ * uIP statistics on or off
+ *
+ * \hideinitializer
+ */
+#define UIP_CONF_STATISTICS      1
+
+/**
+ * uIP UDP Broadcast on or off
+ *
+ * \hideinitializer
+ */
+// Enable UDP Brodcast packet processing
+#define UIP_CONF_BROADCAST       UIP_CONF_UDP
+
+#ifndef printf
+#include <stdio.h>
+
+extern void syslog(unsigned int prio, const char *format, ...);
+#define printf(...) syslog(7/*LOG_DEBUG*/, __VA_ARGS__)
+#endif
+
+/* Here we include the header file for the application(s) we use in
+   our project. */
+/*#include "smtp.h"*/
+/*#include "hello-world.h"*/
+/*#include "telnetd.h"*/
+#include "webserver.h"
+#include "dhcpc.h"
+/*#include "resolv.h"*/
+/*#include "webclient.h"*/
+/*#include "httpd.h"*/
+
+#include "timer.h"
+#include "pt.h"
+
+struct ecnl_state {
+	struct pt pt;
+	struct uip_timer timer;
+};
+
+/*#define uip_tcp_appstate_t \
+struct uip_tcp_adptstate {\
+	void (*tcp_callback)(struct uip_conn *uip_conn, int fncd, void *p_parblk);\
+	union {\
+		struct httpd_state httpd;\
+	} parblk;\
+}
+void uip_appcall(void);
+#define UIP_APPCALL uip_appcall*/
+
+void uip_udp_appcall(void);
+#define uip_udp_appstate_t \
+struct uip_udp_adptstate {\
+	void (*udp_callback)(struct uip_udp_conn *uip_udp_conn, int fncd, void *p_parblk);\
+	union {\
+		struct dhcpc_state dhcpc;\
+		struct ecnl_state ecnl;\
+	} parblk; \
+}
+#define UIP_UDP_APPCALL uip_udp_appcall
+
+#endif /* __UIP_CONF_H__ */
+
+/** @} */
+/** @} */
Index: uKadecot/trunk/src/ukadecot/uip_app_config.h
===================================================================
--- uKadecot/trunk/src/ukadecot/uip_app_config.h	(revision 101)
+++ uKadecot/trunk/src/ukadecot/uip_app_config.h	(revision 101)
@@ -0,0 +1,66 @@
+/*
+ *  TINET (TCP/IP Protocol Stack)
+ * 
+ *  Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering
+ *                   Tomakomai National College of Technology, JAPAN
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#ifndef _UIP_APP_CONF_H_
+#define _UIP_APP_CONF_H_
+
+/*
+ *  RX62N Ethernet Controler ÉÖ·éè`
+ */
+
+#define UIP_TASK_PRIORITY	3
+#define UIP_TASK_STACK_SIZE	256
+
+/* IPv4 ÉÖ·éè` */
+#define IPV4_ADDR_LOCAL				MAKE_IPV4_ADDR(192,168,2,110)
+#define IPV4_ADDR_LOCAL_MASK		MAKE_IPV4_ADDR(255,255,255,0)
+#define IPV4_ADDR_DEFAULT_GW		MAKE_IPV4_ADDR(192,168,2,1)
+
+/*
+ *  DHCP NCAgÉÖ·éè`
+ */
+
+void main_set_addr_callback(); 
+#define DHCP4_CLI_SET_ADDR_CALLBACK main_set_addr_callback
+
+#endif	/* of #ifndef _UIP_APP_CONF_H_ */
Index: uKadecot/trunk/srecord/Readme-Windows.txt
===================================================================
--- uKadecot/trunk/srecord/Readme-Windows.txt	(revision 101)
+++ uKadecot/trunk/srecord/Readme-Windows.txt	(revision 101)
@@ -0,0 +1,73 @@
+If you just want to use the srecord tools, you can stop reading here.
+
+Following are instructions how I (Jens Heilig) built the srecord tools on Windows:
+
+How to build srecord 1.62 tools on Windows:
+
+PREREQUISITES:
+==============
+1) MinGW
+Download and install mingw-get-inst (I used version 20110530) from http://mingw.sourceforge.net/ Select C++ and MinGW Developer Toolkit during installation.
+
+Start MinGW Shell from the Windows Start Menu.
+Install additional packages by entering following commands at the prompt:
+(the "$"-sign indicates the shell-prompt. Do not type it)
+$ mingw-get.exe install msys-groff-ext
+$ mingw-get.exe install gettext
+
+2) Boost Library
+Download and install the Boost library from here: http://ascend4.org/Binary_installer_for_Boost_on_MinGW
+Copy the newly installed files to you MinGW directory:
+$ cp <boost-install-dir>/lib/* /lib/
+$ cp -r <boost-install-dir>/include/boost-1_41/boost /include/
+
+
+3) libgcrpyt library
+Download libgcrypt-1.5.0.tar.bz2 and libgpg-error-1.10.tar.bz2 (newer versions should also work) from http://www.gnupg.org/download/index.en.html
+cd to the directory where the two downloaded files are (make sure the path to this directory does not contain spaces)
+$ tar jxfv libgpg-error-1.10.tar.bz2
+$ cd libgpg-error-1.10
+$ ./configure --disable-shared --enable-static && make && make install
+(the previous step might hang when converting from ISO-8859-2 to UTF-8 late in the build process. Press ctrl-c and proceed)
+$ cd ..
+$ tar libgcrypt-1.5.0.tar.bz2
+$ cd libgcrypt
+$ ./configure --disable-shared --enable-static && make && make install
+
+You now have all the prerequisites required to build the srecord tools. Let's proceed.
+
+
+BUILDING SRECORD TOOLS
+======================
+cd to the directory where you unpacked the srecord source code.
+
+unfortunately, you need to edit the "configure" script. I have not found a way around this:
+Open the file "configure" in a text editor which preserves Unix line endings!
+Change line 4171 from this:
+LIBS="-lgcrypt  $LIBS"
+to this:
+LIBS="-lgcrypt  -lgpg-error $LIBS"
+
+Save the file (preserving Unix line endings!). Now we can start the actual build process:
+
+Start configure for srecord:
+$ CPPFLAGS="-static -I/include -I/usr/local/include" LDFLAGS="-L/lib -L/usr/local/lib" CC='gcc -static-libgcc' CXX='g++ -static-libgcc -static-libstdc++' ./configure
+
+After configure has run successfully, start the build process:
+$ make
+
+After successful build process, run the tests:
+$ make -i sure
+
+All tests should succeed.
+
+Next, reduce the size of the built programs by removing debugging information:
+$ cd bin
+$ strip *.exe
+
+Finally, move srec_cat.exe, srec_info.exe and srec_cmp.exe from the bin directory to where you want them, you can then delete everything else in the bin-directory.
+
+You should now have working srecord tools!
+
+Good Luck!
+Jens Heilig, 2013-06-06
Index: uKadecot/trunk/srecord/Readme.txt
===================================================================
--- uKadecot/trunk/srecord/Readme.txt	(revision 101)
+++ uKadecot/trunk/srecord/Readme.txt	(revision 101)
@@ -0,0 +1,1071 @@
+Read Me(SRecord)                                              Read Me(SRecord)
+
+
+
+NAME
+       SRecord - manipulate EPROM load files
+
+DESCRIPTION
+       The SRecord package is a collection of powerful tools for manipulating
+       EPROM load files.
+
+       I wrote SRecord because when I was looking for programs to manipulate
+       EPROM load files, I could not find very many.  The ones that I could
+       find only did a few of the things I needed.  SRecord is written in C++
+       and polymorphism is used to provide the file format flexibility and
+       arbitrary filter chaining.  Adding more file formats and filters is
+       relatively simple.
+
+   The File Formats
+       The SRecord package understands a number of file formats:
+
+       Ascii-Hex
+               The ascii-hex format is understood for both reading and
+               writing.  (Also known as the ascii-space-hex format.)
+
+       ASM     It is possible, for output only, to produce a serices of DB
+               statements containing the data.  This can be useful for
+               embedding data into assembler programs.  This format cannot be
+               read.
+
+       Atmel Generic
+               This format is produced by the Atmel AVR assembler.  It is
+               understood for both reading and writing.
+
+       BASIC   It is possible, for output only, to produce a serices of DATA
+               statements containing the data.  This can be useful for
+               embedding data into BASIC programs.  This format cannot be
+               read.
+
+       Binary  Binary files can both be read and written.
+
+       B-Record
+               Files in Freescale Dragonball bootstrap b-record format can be
+               read and written.
+
+       C       It is also possible to write a C array declaration which
+               contains the data.  This can be useful when you want to embed
+               download data into C programs.  This format cannot be read.
+
+       COE     The Xilinx Coefficient File Format (.coe) is understood for
+               output only.
+
+       Cosmac  The RCA Cosmac Elf format is understood for both reading and
+               writing.
+
+       DEC Binary
+               The DEC Binary (XXDP) format is understood for both reading and
+               writing.
+
+       Elektor Monitor (EMON52)
+               The EMON52 format is understood for both reading and writing.
+
+       Fairchild Fairbug
+               The Fairchild Fairbug format is understood for both reading and
+               writing.
+
+       Formatted Binary
+               The Formatted Binary format is understood for both reading and
+               writing.
+
+       Four Packed Code (FPC)
+               The FPC format is understood for both reading and writing.
+
+       Hexdump It is possible to get a simple hexdump as output.
+
+       IDT/sim The IDT/sim binary file format is understood for both reading
+               and writing.
+
+       Intel   The Intel hexadecimal format is understood for both reading and
+               writing.  (Also known as the Intel MCS-86 Object format.)
+
+       Intel AOMF
+               The Intel Absolute Object Module Format (AOMF) is understood
+               for both reading and writing.
+
+       Intel 16
+               The Intel hexadecimal 16 format is understood for both reading
+               and writing.  (Also known as the INHX16 file format.)
+
+       LSI Logic Fast Load
+               The LSI Logic Fast Load format is understood for both reading
+               and writing.
+
+       Memory Initialization Format
+               The Memory Initialization Format (.mem) by Lattice
+               Semiconductor is understood for writing only.
+
+       MIF     The Memory Initialization File format by Altera is supported
+               for both reading and writing.
+
+       MOS Technology
+               The MOS Technology hexadecimal format is understood for both
+               reading and writing.
+
+       MIPS-Flash
+               The MIPS Flash file format is supported for both reading and
+               writing.
+
+       Motorola S-Record
+               The Motorola hexadecimal S-Record format is understood for both
+               reading and writing.  (Also known as the Exorciser, Exormacs or
+               Exormax format.)
+
+       MsBin   The Windows CE Binary Image Data Format is supported both for
+               reading and writing.
+
+       Needham The Needham Electronics ASCII file format is understood for
+               both reading and writing.
+
+       OS65V   The Ohio Scientific hexadecimal format is understood for both
+               reading and writing.
+
+       PPB     The Stag Prom Programmer binary format is understood for both
+               reading and writing.
+
+       PPX     The Stag Prom Programmer hexadecimal format is understood for
+               both reading and writing.
+
+       Signetics
+               The Signetics format is understood for both reading and
+               writing.
+
+       SPASM   The SPASM format is used by a variety of PIC programmers; it is
+               understood for both reading and writing.
+
+       Spectrum
+               The Spectrum format is understood for both reading and writing.
+
+       Tektronix (Extended)
+               The Tektronix hexadecimal format and the Tektronix Extended
+               hexadecimal format are both understood for both reading and
+               writing.
+
+       Texas Instruments Tagged
+               The Texas Instruments Tagged format is understood for both
+               reading and writing (both 8 and 16 bit).  Also known as the TI-
+               tagged or TI-SDSMAC format.
+
+       Texas Instruments ti-txt
+               The TI-TXT format is understood for reading and writing.  This
+               format is used with the bootstrap loader of the Texas
+               Instruments MSP430 family of processors.
+
+       TRS-80  The Radio Shack TRS-80 object file format is understood for
+               reading and writing.
+
+       VHDL    It is possible to write VHDL file.  This is only supported for
+               output.
+
+       Verilog VMEM
+               It is possible to write a Verilog VMEM file suitable for
+               loading with $readmemh().  This format is supported for reading
+               and writing.
+
+       Wilson  The Wilson format is understood for both reading and writing.
+               This mystery format was added for a mysterious type of EPROM
+               writer.
+
+   The Tools
+       The primary tools of the package are srec_cat and srec_cmp.  All of the
+       tools understand all of the file formats, and all of the filters.
+
+       srec_cat
+               The srec_cat program may be used to catenate (join) EPROM load
+               files, or portions of EPROM load files, together.  Because it
+               understands all of the input and output formats, it can also be
+               used to convert files from one format to another.
+
+       srec_cmp
+               The srec_cmp program may be use to compare EPROM load files, or
+               portions of EPROM load files, for equality.
+
+       srec_info
+               The srec_info program may be used to print summary information
+               about EPROM load files.
+
+   The Filters
+       The SRecord package is made more powerful by the concept of input
+       filters.  Wherever an input file may be specified, filters may also be
+       applied to that input file.  The following filters are available:
+
+       bit reverse
+               The bit-reverse filter may be used to reverse the order of bits
+               in each data byte.
+
+       byte swap
+               The byte swap filter may be used to swap pairs of add and even
+               bytes.
+
+       CRC     The various crc filters may be used to insert a CRC into the
+               data.
+
+
+       checksum
+               The checksum filters may be used to insert a checksum
+               into the data.  Positive, negative and bit-not checksums
+               are available, as well as big-endian and little-endian
+               byte orders.
+
+       crop    The crop filter may be used to isolate an input address
+               range, or ranges, and discard the rest.
+
+       exclude The exclude filter may be used to exclude an input
+               address range, or ranges, and keep the rest.
+
+       fill    The fill filter may be used to fill any holes in the
+               data with a nominated value.
+
+       length  The length filter may be used to insert the data length
+               into the data.
+
+       maximum The maximum filter may be used to insert the maximum
+               data address into the data.
+
+       minimum The minimum filter may be used to insert the minimum
+               data address into the data.
+
+       offset  The offset filter may be used to offset the address of
+               data records, both forwards and backwards.
+
+       random fill
+               The random fill filter may be used to fill holes in the
+               data with random byte values.
+
+       split   The split filter may be used to split EPROM images for
+               wide data buses or other memory striping schemes.
+
+       unfill  The unfill filter may be used to make holes in the data
+               at bytes with a nominated value.
+
+       unsplit The unsplit filter may be reverse the effects of the
+               split filter.
+
+       More than one filter may be applied to each input file.
+       Different filters may be applied to each input file.  All
+       filters may be applied to all file formats.
+
+ARCHIVE SITE
+       The latest version of SRecord is available on the Web from:
+
+        URL:    http://srecord.sourceforge.net/
+        File:   index.html            # the SRecord page
+        File:   srecord-1.62.README   # Description, from the tar file
+        File:   srecord-1.62.lsm      # Description, LSM format
+        File:   srecord-1.62.spec     # RedHat package specification
+        File:   srecord-1.62.tar.gz   # the complete source
+        File:   srecord-1.62.pdf      # Reference Manual
+
+BUILDING SRECORD
+       Full instructions for building SRecord may be found in the
+       BUILDING file included in this distribution.
+
+       It is also possible to build SRecord on Windows using the Cygwin
+       (www.cygwin.com) or DJGPP (www.delorie.com/djgpp) environments.
+       Instructions are in the BUILDING file, including how to get
+       native Windows binaries.
+
+COPYRIGHT
+       srecord version 1.62
+       Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+       2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Peter Miller
+
+       This program is free software; you can redistribute it and/or
+       modify it under the terms of the GNU General Public License as
+       published by the Free Software Foundation; either version 3 of
+       the License, or (at your option) any later version.
+
+       This program is distributed in the hope that it will be useful,
+       but WITHOUT ANY WARRANTY; without even the implied warranty of
+       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+       GNU General Public License for more details.
+
+       You should have received a copy of the GNU General Public
+       License along with this program. If not, see
+       <http://www.gnu.org/licenses/>.
+
+       It should be in the LICENSE file included with this
+       distribution.
+
+AUTHOR
+       Peter Miller   E-Mail:   pmiller@opensource.org.au
+       /\/\*          WWW:      http://miller.emu.id.au/pmiller/
+
+RELEASE NOTES
+       This section details the various features and bug fixes of the
+       various releases.  For excruciating and complete detail, and
+       also credits for those of you who have generously sent me
+       suggestions and bug reports, see the etc/CHANGES.* files.
+
+   Version 1.62 (2013-Jun-05)
+       * Luc Steynen <LucSteynen@edna.be> discovered that the -hecksum-
+         big-endian opion was a counter-intuitive alias for the the
+         -checksum-bitnot-big-endian option.  The -checksum-big-endian
+         option is now deprecated, in favor of the -checksum-bitnot-
+         big-endian option; the code will warn uers of the old option
+         they will need to change.  Ditto little-endian variants
+
+       * Alin Pilkington <apilkington@moog.com> found that the
+         Tektronics Extended format was calculating the record length
+         incorrectory.  Thanks you for the bug report.  This has been
+         fixed for both reading and writing.
+
+       * Dr. Benedikt Schmitt <Benedikt.Schmitt@safeintrain.de>
+         suggested being able to inject arbitrary data into the file
+         header (such as NUL termination characters). This change set
+         adds URL-style escapes (e.g. %25) to the string on he command
+         line. For example: -header or -generate -string
+
+   Version 1.61 (2013-Jan-04)
+       * Izzet Ozcelik <izzetozcelik@cscope.co.uk> discovered a bug in
+         the Tektronix-Extenden format line checksum calculations. The
+         comparison should have been in 8 bits, not int.
+
+       * Daniel Anselmi <danselmi@gmx.ch> contributed a Memory
+         Initialization Format by Lattice Semiconductor, for output
+         only.
+
+       * Daniel Anselmi <danselmi@gmx.ch> contributed a Xilinx
+         Coefficient File Format (.coe) output class.
+
+   Version 1.60 (2012-May-19)
+       * There are now several additional CRC-16 polynomials, plus the
+       ability to select a polynomial by name, rather than by value.
+       See http://en.wikipedia.org/wiki/Cyclic_redundancy_check for a
+       table of names and values.
+
+   Version 1.59 (2012-Feb-10)
+       * A number of additional CRC-16 polynomials have been added, as
+         well as the ability to select a polynomial by name, rather
+         than by value.  See srec_input(1) for more information.
+
+   Version 1.58 (2011-Dec-18)
+       * The -guess command line option, for guessing the file format,
+         now also tells you the command line option you could have used
+         instead of -guess for the exact format.
+
+       * The Intergated Device Technology (IDT) system integration
+         manager (IDT/sim) binary format is now understood for both
+         reading and writing.
+
+       * The Stag Prom Programmer binary format is now supported for
+         both reading and writing.
+
+       * The Stag Prom Programer hexadecimal format is now understood
+         for both reading and writing.
+
+       * The MIPS-Flash fiel format is now supported for both reading
+         and writing.
+
+       * Bernhard Weirich <Bernhard.Weirich@riedel.net> discovered that
+         a backward compatible option had been omitted when the
+         -INtel_16 option was renamed -INtel_HeX_16 to more closely
+         match the usual abbreviation (INHX16) for this format.  The
+         backwards compatible option name has been reintroduced.
+
+       * The windows build instructions have been greatly imptoved,
+         based on the experiences of Jens Heilig <jens@familie-
+         heilig.net> which he has generously shared.
+
+       * The documentation in the manual about sequence warnings has
+         been improved.  The -disable-sequence-warnings option must
+         come before the input file on the command line.  My thanks to
+         Emil Gracic <emil_kruki@yahoo.com> for reporting this problem.
+
+   Version 1.57 (2011-Jun-09)
+       * The byte order of the fletcher16 output has been reversed.
+
+       * The meaning of the -address-length option has been change for
+         the Intel output format. Previously, 2 meant using i16hex
+         20-bit segmented addressing, and >2 meant using i32hex
+         extended addressing. This has been changed: a value of 2
+         requests i8hex 16-bit addressing, a value of 3 requests i16hex
+         20-bit segment addressing, and a value >=4 requests i32hex
+         32-bit addressing.  My thanks to Stephen R. Phillips
+         <srp@CSECorporation.com> for reporting the absence of i8hex
+         support.
+
+       * The -generate -repeat-string option is now able to take a
+         string that looks like a number as the text to be repeated. My
+         thanks to Stephen R. Phillips <srp@CSECorporation.com> for
+         reporting this problem.
+
+       * Luca Giancristofaro <luca.giancristofaro@prosa.com> discovered
+         a WinAVR linker that is a sandwich short of a picnic: it
+         generated non-conforming Intel hex end-of-file records.  This
+         is no longer an error, but only a warning.
+
+       * There were some problems with the RPM spec file, these have
+         been improved.  My thanks to Galen Seitz
+         <galens@seitzassoc.com> for reporting this problem.
+
+   Version 1.56 (2010-Sep-15)
+       * A bug has been fixed in the MsBin output, it now concatenates
+         records correctly, and calaulate checksums appropriately.
+
+       * It is now possible to ask the Fletcher 16 filter to give you a
+         specific answer, and adjusting the checksum to achieve that
+         result. It is also possible to specify different seed values
+         for the sums.
+
+       * There is a new srec_cat -enable=optional-address option to
+         cause output formats capable of omitting addresses, to omit a
+         leading zero address, as those formats usually default the
+         address to zero, if no address information is seen before the
+         first data record.  Defaults to false (disabled).
+
+       * There is a new srec_cat(1) -output-block-packing option, that
+         may be used to pack output records even when they cross
+         internal SRecord boundaries.
+
+       * There is a new srec_cat(1) -output-block-size so that you can
+         specify the block size exactly, rather than implying it with
+         the line length option.
+
+   Version 1.55 (2010-Feb-10)
+       * The Makefile.in has been improved, it now copes with non-
+         standard --prefix options.
+
+       * The rpm.spec file has been improved, it now separates the
+         commands, shared libraries and development files.
+
+   Version 1.54 (2010-Jan-29)
+       * There is now a shared library installed, including the
+         necessary header files so that you can use all of the file
+         formats and filters in your own projects.
+
+       * The license on the shared library code is GNU Lesser General
+         Public License, version 3.0 or later.
+
+       * The code can cope with older versions of GNU Libgcrypt.  In
+         the case of very old versions, by ignoring it.
+
+       * A number of build problems have been fixed.
+
+   Version 1.53 (2009-Nov-10)
+       * There is a new MsBin (Windows CE Binary Image Data) file
+         format, supported for both reading and writing.
+
+       * The lintian(1) warning about hyphen in the manual pages has
+         been silenced, by careful use of -, - and - as appropriate.
+         Sure makes some of the sources ugly, tho.  The lintian(1)
+         warning about the undefined .XX macro has been silenced, by
+         making it conditional.
+
+       * The code will build without libgcrypt.
+
+   Version 1.52 (2009-Sep-17)
+       * There is a new srec_cat -generator -l-e-constant data
+         generator (and also -b-e-const) that may be used to insert
+         multi-byte constants into your data.  See srec_input(1) for
+         more information.
+
+   Version 1.51 (2009-Sep-13)
+       * A number of gcc 4.4 build problems have been fixed.
+
+       * A bugs has been fixed in the Intel output format. When using
+         the segemented format (address-length=2) records that span the
+         end of segment boundary are tricky. The code now carefully
+         splits such output records, to ensure the two parts are
+         explicitly placed into separate segments.
+
+   Version 1.50 (2009-Jul-09)
+       * The CRC16 code has been enhanced to provide low-to-high bit
+         order, in addition to the previous high-to-low bit order.  It
+         is also possible to specify the polynomial, with the default
+         the CCITT standard polynomial, as was in the previous code.
+         See srec_input(1) for more information.
+
+       * The MD5, RipeMD-160, SHA1, SHA224, SHA256, SHA384, SHA 512 and
+         Whirlpool message digests are now supported.  See
+         srec_input(1) for more information.
+
+       * There is a new srec_cat -bit-reverse filter, that may be used
+         to reverse the bits in each data byte.  See srec_input(1) for
+         more information.
+
+   Version 1.49 (2009-May-17)
+       * A typo in the srec_input(1) man page has been fixed.
+
+   Version 1.48 (2009-Apr-19)
+       * There are new Fletcher Checksum filters, both 32-bits and
+         16-bits, both little-endian and big-endian.
+
+       * There are new Adler Checksum filters, both 32-bits and
+         16-bits, both little-endian and big-endian.
+
+   Version 1.47 (2009-Feb-19)
+       * Memory Initialzation File (MIF) format by Altera is now
+         supported for reading and writing.
+
+   Version 1.46 (2009-Jan-13)
+       * There is a new option for the --x-e-length filters, they can
+         now accept a width, and this is divided into the byte lenght,
+         so that you can insert the length in units of words (2) or
+         longs (4).
+
+       * Some small corrections have been made to the documentation.
+
+       * The -minimum and -maximum options have been renamed -minimum-
+         address and -maximum-address, to avoid a command line grammar
+         syntax problem.
+
+   Version 1.45 (2008-Sep-30)
+       * A bug has been fixed in the srec_cat(1) command.  You are now
+         able to specify several inputs within parentheses, instead of
+         just one.  This allows filters to be applied to the
+         concatenation of several inputs.
+
+       * The srec_cat(1) command is now able to write FORTH output.
+
+   Version 1.44 (2008-Aug-29)
+       * Some compilers issue a warning when const appears before
+         extern.  "warning: storage class is not first".  The C output
+         has been updated to conform to this expectation.
+
+       * The manual page for srec_cat(1) has been enhanced to describe
+         the in-memory data model, and the resulting output data order.
+
+       * The -motorola optional width argument now produces a better
+         error message when it is out of range.
+
+       * The -fill filter now checks the size, and fails for absurdly
+         large fills, with a -big override if they really want >1GB
+         fills.
+
+       * A bug in the .spec file for rpmbuild has been fixed, it now
+         takes notice of $RPM_BUILD_ROOT
+
+       * There is a new -line-termination option, which may be used to
+         select the desired line termination of output text files.
+
+   Version 1.43 (2008-Jul-06)
+       * The srec-cat -data-only option has been broken down into four
+         separate controls.  It is now possible to -enable and -disable
+         individual features, such as "header", "data-count",
+         "execution-start-address" and "footer".  See srec_cat(1) for
+         more information.
+
+       * The srec_cat -start-address option has been renamed
+         -execution-start-address to remove any confusion with the
+         -offset filter.  The documentation now explicitly explains the
+         difference between the two.
+
+       * Examples of converting to and from binary files have been
+         added to the srec_examples(1) man page.
+
+       * A bug has been fixed in the MOS Tech format, it now emits an
+         end record even when there is no execution start address
+         passed in.
+
+   Version 1.42 (2008-Jun-01)
+       * The MOS Technology format was not reading and writing end
+         records correctly, this has been fixed.  The name of the
+         company has been corrected.
+
+       * Some examples of how to insert constant or scripted data into
+         your EPROM load files have been added to the srec_examples(1)
+         man page.
+
+   Version 1.41 (2008-May-12)
+       * False negative being reported by tests on Cygwin have been
+         fixed.
+
+       * There are six new filters (-be-exclusive-length, -le-
+         exclusive-length, -be-exclusive-maximum, -le-exclusive-
+         maximum, -be-exclusive-minimum and -le-exclusive-minimum)
+         which are very similar to their non-exclusive equivalents,
+         except that they do not include the adress range covered by
+         their output in their output.
+
+       * A bug has been fixed in the C word-array output.  It was
+         getting offsets and lengths wrong in some cases.
+
+       * A bug has been fixed in the generated C array header file, it
+         no longer omits the section descriptor arrays.
+
+       * A problem with building RPM packages with the names of the
+         executables in the .spec file has been fixed, and the
+         BuildRequires has been updated.
+
+   Version 1.40 (2008-Mar-13)
+       * An RPM build problem has been fixed.
+
+       * The dependency on the Boost library is now documented in the
+         BUILDING file.
+
+       * Some build problems with g++ 4.3 have been fixed
+
+       * A bug has been fixed in the calculation of ranges on the
+         command line, it no longer goes into an infinite loop for
+         "-fill 0xFF -over { foo.hex -exclude -within foo.hex }"
+         construct, which should have been calculating an empty fill
+         set, but was instead calculating a 4GB fill set.
+
+       * The CRC32 filters now take an -xmodem option, to use an
+         xmodem-like (all bit zero) initial state, rather than the
+         default CCITT (all bits on) initial state.
+
+   Version 1.39 (2008-Feb-04)
+       * A bug has been fixed in the use of parentheses to group
+         filters and override the default precedences.
+
+   Version 1.38 (2008-Jan-14)
+       * The CRC16 filters now support a -Broken option, to perform a
+         common-but-broken CRC16 calculation, in addition to the CCITT
+         and XMODEM calculations.
+
+       * A link has been added to the CRC16 man page section to the
+         www.joegeluso.com/software/articles/ccitt.htm web page, to
+         explain the difficulties in seeding CRC16 calculations.
+
+       * A buglet has been fixed in the srec_motorola(5) man page, it
+         now includes S6 in the list of things that can appear in the
+         type field.
+
+       * The ability to negate expressions is now mentioned in the
+         srec_examples(1) man page.
+
+   Version 1.37 (2007-Oct-29)
+       * It is now possible to have negative expressions on the command
+         line, to facilitate "--offset - -minimum foo" usages.
+
+       * The srec_cat(1) command now has a simple hexadecimal dump
+         output format.
+
+       * The use of uudecode(1) in the tests has been removed, so
+         sharutils is no longer a build dependency.
+
+   Version 1.36 (2007-Aug-07)
+       * A bug has been fixed in the CRC-16 CCITT calculation; the
+         algorithm was correct but the start value was incorrect,
+         leading to incorrect results.
+
+       * The CRC16 filters have a new --no-augment option, to omit the
+         16 zero bits augmenting the message.  This is not CCITT
+         standard conforming, but some implementations do this.
+
+       * A problem has been fixed in the generated Makefile.in file
+         found in the tarball.
+
+       * The license has been changed to GNU GPL version 3.
+
+   Version 1.35 (2007-Jun-23)
+       * A major build problem with the generated makefile has been
+       fixed.
+
+   Version 1.34 (2007-Jun-22)
+       * The C and ASM output formats have been improved in the word
+         mode.
+
+       * Several build problems have been fixed.
+
+   Version 1.33 (2007-May-18)
+       * More examples have been added to the documentation.
+
+       * It is now possible to perform set intersection and set
+         difference on address ranges on the command line.
+
+       * There is a new category of data source: generators.  You can
+         generate constant data, random data and repeating data.
+
+       * The assembler and C-Array outputs now support additional
+         options to facilitate MSP430 systems.  They can also
+         optionally write shorts rather than bytes.
+
+       * You can now round address ranges on the command line to be
+         whole multiples of a number of bytes.
+
+   Version 1.32 (2007-Apr-24)
+       * The TI-TXT format output has been improved; it is less spec
+         conforming but more reality conforming.  It now allows odd
+         alignment without padding.  It also ends with a q instead of a
+         Q.
+
+       * The warning for odd input addresses has been dropped.  The
+         spec didn't like them, but the MSP430 handles them without a
+         hiccup.
+
+   Version 1.31 (2007-Apr-03)
+       * The Verilog format now suppresses comments when you specify
+         the --data-only option.
+
+       * The Texas Instruments ti-txt (MSP430) format is now understood
+         for reading and writing.
+
+   Version 1.30 (2007-Mar-21)
+       * The ascii-hex output format has been improved.
+
+       * The ti-tagged 16-bit format is now understood for reading and
+         writing.
+
+       * The Intel format no longer warns about missing optional
+         records.
+
+       * A bug in the ti-tagged format has been fixed, it now
+         understands the '0' tag.
+
+   Version 1.29 (2007-Mar-13)
+       * A serious bug has been fixed in the generated Makefile.
+
+   Version 1.28 (2007-Mar-08)
+       * It is now possible to read and write files in the Freescale
+         MC68EZ328 Dragonball bootstrap b-record format
+
+   Version 1.27 (2006-Dec-21)
+       * [SourceForge Feature Request 1597637] There is a new warning
+         issued when input data records are not in strictly ascending
+         address order.  There is a new command line option to silence
+         the warning.
+
+       * [SourceForge  Feature Request 1592348] The command line
+         processing of all srecord commands now understands @file
+         command line options, filled with additional space separated
+         strings witch will be treated as of they were command line
+         options.  This gets around absurdly short command line length
+         limits in some operating systems.
+
+   Version 1.26 (2006-May-26)
+       * It is now possible to place parentheses on the command line in
+         more places to clarify your intent.
+
+       * This change prepares SRecord for the next public release.
+
+   Version 1.25 (2006-May-18)
+       * The assembler output has been enhanced to produce ORG
+         directives, if necessary, to change the data address.
+
+       * The srec_cat(1) command now only writes an execution start
+         address into the output if there was an execution start
+         address present in the input.
+
+   Version 1.24 (2006-Mar-08)
+       * Additional information has been added to the lseek error when
+         they try to seek to addresses >= 2**31
+
+       * The CRC 16 filters have been enhanced to accept an argument to
+         specify whether CCITT or XMODEM calculations are to be
+         performed.
+
+   Version 1.23 (2005-Sep-23)
+       * A segfault has been fixed on x86_64 when running the
+         regression test suite.
+
+       * A compile problem with the lib/srec/output/file/c.cc file has
+         been fixed.
+
+   Version 1.22 (2005-Aug-12)
+       * The -byte-swap filter now has an optional width argument, to
+         specify the address width to swap.  The default is two bytes.
+
+       * The motorola file format now accepts an additional 'width'
+         command line argument, so you can have 16-bit and 32-bit
+         address multiples.
+
+       * A bug has been fixed in the VMEM output format. It was failing
+         to correctly set the next address in some cases.  This fixes
+         SourceForge bug 1119786.
+
+       * The -C-Array output format now uses the const keyword by
+         default, you can turn it off with the -no-const option.  The
+         -C-Array output format can now generate an additional include
+         file if you use the -INClude option.  This answers SourceForge
+         feature request 942132.
+
+       * A fix for the "undefined symbols" problem when using g++ 3.x
+         on Cygwin and MacOsX has been added to the ./configure script.
+
+       * There is a new -ignore-checksum command line option.  The
+         -ignore-checksums option may be used to disable checksum
+         validation of input files, for those formats which have
+         checksums at all.  Note that the checksum values are still
+         read in and parsed (so it is still an error if they are
+         missing) but their values are not checked.
+
+   Version 1.21 (2005-Feb-07)
+       * More Doxygen comments have been added to the class header
+         files.
+
+       * There is a new srec_cat --crlf option, which may be used for
+         force CRLF output on operating systems which don't use that
+         style of line termination.
+
+       * A number of problems with GCC, particularly with the early 3.x
+         series.
+
+       * There is a new "Stewie" format, an undocumented format loosely
+         based on the Motorola S-Record format, apparently used in
+         mobile phones.  More information would be most welcome.
+
+       * A number of build problems have been fixed.
+
+   Version 1.20 (2004-Feb-08)
+       * The AOMF format now accepts (and ignores) more record types.
+
+   Version 1.19 (2004-Jan-03)
+       * It is now possible to set the execution start address in the
+         output using the srec_cat -Execution_Start_Address command
+         line option.
+
+       * The Intel Absolute Object Module Format (AOMF) is now
+         supported for reading and writing.
+
+       * There is a new srec_cat -Random_Fill filter, like the srec_cat
+         -Fill filter except that it uses random values.
+
+   Version 1.18 (2004-Jan-01)
+       * The VMEM format is now able to output data for 64 and 128 bits
+         wide memories.
+
+       * A bug in the SRecord reference manuals has been fixed; the
+         CRCxx had a copy-and-paste glitch and always said big-endian
+         where little endian was intended half the time.
+
+   Version 1.17 (2003-Oct-12)
+       * There is now support for Intel Extended Segment addressing
+         output, via the --address-length=2 option.
+
+       * There is now support for output of Verilog VMEM format.  See
+         srec_vmem(5) for more information.
+
+       * There is now support for reading and writing the INHX16
+         format, used in various PIC programmers.  It looks just like
+         the Intel Hex format, except that the bytes counts and the
+         addresses refer to words (hi,lo) rather than bytes.  See
+         srec_intel16(5) for more information.
+
+   Version 1.16 (2003-Jul-28)
+       * Some updates have been made to cope with GCC 3.2
+
+   Version 1.15 (2003-Jun-16)
+       * The ASCII-Hex implementation is now slightly more complete.  I
+         still haven't found a definitive description.
+
+       * The Fairchild Fairbug format has been added for reading and
+         writing.  See srec_fairchild(5) for more information.
+
+       * The Spectrum format has been added for reading and writing.
+         See srec_spectrum(5) for more information.
+
+       * The Formatted Binary format has been added for reading and
+         writing.  See srec_formatted_binary(5) for more information.
+
+       * The RCA Cosmac Elf format has been added for reading and
+         writing.  See srec_cosmac(5) for more information.
+
+       * The Needham EMP programmer format has been added for reading
+         and writing.  See srec_needham(5) for more information.
+
+   Version 1.14 (2003-Mar-11)
+       * Numerous fixes have been made to header handling.  It is now
+         possible to specify an empty header with the -header command
+         line option.
+
+       * Some more GCC 3.2 build problems have been fixed.
+
+   Version 1.13 (2003-Feb-05)
+       * Bugs have been fixed in the Texas Instruments Tagged and VHDL
+         formats, which produced inconsistent output.
+
+       * A couple of build problems have been fixed.
+
+       * There are two new output formats for ASM and BASIC.
+
+   Version 1.12 (2002-Dec-06)
+       * It is now possible to put -minimum input.spec (also -maximum
+         and -length) almost anywhere on the command line that you can
+         put a number.  It allows, for example, the -offset value to be
+         calculated from the maximum of the previous file.  The values
+         calculated by -Minimum, -Maximum and -Length may also be
+         rounded to arbitrary boundaries, using -Round_Down,
+         -Round_Nearest and -Round_Up.
+
+       * The malformed Motorola S5 records output by the Green Hills
+         tool chain are now understood.
+
+   Version 1.11 (2002-Oct-21)
+       * The Ohio Scientific OS65V audio tape format has been added for
+         reading and writing.  See srec_os65v(5) for more information.
+
+       * Some build problems have been fixed.
+
+   Version 1.10 (2002-Jun-14)
+       * The Intel format now emits the redundant extended linear
+         address record at the start of the file; some loaders couldn't
+         cope without it.
+
+       * The Binary format now copes with writing to pipes.
+
+       * The Motorola format now understands the S6 (24-bit data record
+         count) records for reading and writing.
+
+       * The DEC Binary format now works correctly on Windows machines.
+
+       * The LSI Logic Fast Load format is now understood for both
+         reading and writing.  See srec_fastload(5) for more
+         information.
+
+   Version 1.9 (2001-Nov-27)
+       * The DEC Binary (XXDP) format is now understood for both
+         reading and writing.  See srec_dec_binary(5) for more
+         information.
+
+       * The Elektor Monitor (EMON52) format is now understood for both
+         reading and writing.  See srec_emon52(5) for more information.
+
+       * The Signetics format is now understood for both reading and
+         writing.  See srec_signetics(5) for more information.
+
+       * The Four Packed Code (FPC) format is now understood for both
+         reading and writing.  See srec_fpc(5) for more information.
+
+       * Wherever possible, header data is now passed through by
+         srec_cat(1).  There is also a new srec_cat -header option, so
+         that you can set the header comment from the command line.
+
+       * The Atmel Generic format for Atmel AVR programmers is now
+         understood for both reading and writing.  See
+         srec_atmel_generic(5) for more information.
+
+       * The handling of termination records has been improved.  It
+         caused problems for a number of filters, including the -fill
+         filter.
+
+       * A bug has been fixed in the checksum calculations for the
+         Tektronix format.
+
+       * There is a new SPASM format for PIC programmers.  See
+         srec_spasm(5) for more information.
+
+   Version 1.8 (2001-Apr-20)
+       * There is a new "unfill" filter, which may be used to perform
+         the reverse effect of the "fill" filter.
+
+       * There is a new bit-wise NOT filter, which may be used to
+         invert the data.
+
+       * A couple of bugs have been fixed in the CRC filters.
+
+   Version 1.7 (2001-Mar-19)
+       * The documentation is now in PDF format.  This was in order to
+         make it more accessible to a wider range of people.
+
+       * There is a new srec_cat --address-length option, so that you
+         can set the length of the address fields in the output file.
+         For example, if you always want S3 data records in a Motorola
+         hex file, use the --address-length=4 option.  This helps when
+         talking to brain-dead EPROM programmers which do not fully
+         implement the format specification.
+
+       * There is a new --multiple option to the commands, which
+         permits an input file to contain multiple (contradictory)
+         values for some memory locations.  The last value in the file
+         will be used.
+
+       * A problem has been fixed which stopped SRecord from building
+         under Cygwin.
+
+       * A bug has been fixed in the C array output.  It used to
+         generate invalid output when the input had holes in the data.
+
+   Version 1.6 (2000-Dec-03)
+       * A bug has been fixed in the C array output.  (Holes in the
+         input caused an invalid C file to be produced.)
+
+       * There is are new CRC input filters, both 16-bit and 32-bit,
+         both big and little endian.  See srec_cat(1) for more
+         information.
+
+       * There is a new VHDL output format.
+
+       * There are new checksum filters: in addition to the existing
+         one's complement (bit not) checksum filter, there are now
+         negative and positive checksum filters.  See srec_cat(1) for
+         more information.
+
+       * The checksum filters are now able to sum over 16-bit and
+         32-bit values, in addition to the existing byte sums.
+
+       * The srec_cmp program now has a --verbose option, which gives
+         more information about how the two inputs differ.  See
+         srec_cmp(1) for more information.
+
+   Version 1.5 (2000-Mar-06)
+       * There is now a command line option to guess the input file
+         format; all of the tools understand this option.
+
+       * The "MOS Technologies" file format is now understood for
+         reading and writing.  See srec_mos_tech(5) for more
+         information.
+
+       * The "Tektronix Extended" file format is now understood for
+         reading and writing.  See srec_tektronix_extended(5) for more
+         information.
+
+       * The "Texas Instruments Tagged" file format is now understood
+         for reading and writing.  (Also known as the TI-Tagged or
+         SDSMAC format.)  See srec_ti_tagged(5) for more information.
+
+       * The "ascii-hex" file format is now understood for reading and
+         writing.  (Also known as the ascii-space-hex format.)  See
+         srec_ascii_hex(5) for more information.
+
+       * There is a new byte swap input filter, allowing pairs of odd
+         and even input bytes to be swapped.  See srec_cat(1) for more
+         information.
+
+       * The "wilson" file format is now understood for reading and
+         writing.  This mystery format was added for a mysterious type
+         of EPROM writer.  See srec_wilson(5) for more information.
+
+       * The srec_cat program now has a -data-only option, which
+         suppresses all output except for the data records.  This helps
+         when talking to brain-dead EPROM programmers which barf at
+         anything but data.  See srec_cat(1) for more information.
+
+       * There is a new -Line-Length option for the srec_cat program,
+         allowing you to specify the maximum width of output lines.
+         See srec_cat(1) for more information.
+
+   Version 1.4 (2000-Jan-13)
+       * SRecord can now cope with CRLF sequences in Unix files.  This
+         was unfortunately common where the file was generated on a PC,
+         but SRecord was being used on Unix.
+
+   Version 1.3 (1999-May-12)
+       * A bug has been fixed which would cause the crop and exclude
+         filters to dump core sometimes.
+
+       * A bug has been fixed where binary files were handled
+         incorrectly on Windows NT (actually, any system in which text
+         files aren't the same as binary files).
+
+       * There are three new data filters.  The --OR filter, which may
+         be used to bit-wise OR a value to each data byte; the --AND
+         filter, which may be used to bit-wise AND a value to each data
+         byte; and the --eXclusive-OR filter, which may be used to bit-
+         wise XOR a value to each data byte.  See srec_cat(1) for more
+         information.
+
+   Version 1.2 (1998-Nov-04)
+       * This release includes file format man pages.  The web page
+         also includes a PostScript reference manual, containing all of
+         the man pages.
+
+       * The Intel hex format now has full 32-bit support.  See
+         srec_intel(5) for more information.
+
+       * The Tektronix hex format is now supported (only the 16-bit
+         version, Extended Tektronix hex is not yet supported).  See
+         srec_tektronix(5) for more information.
+
+       * There is a new split filter, useful for wide data buses and
+         memory striping, and a complementary unsplit filter to reverse
+         it.  See srec_cat(1) for more information.
+
+   Version 1.1 (1998-Mar-22)
+       First public release.
+
+
+
+Reference Manual                    SRecord                   Read Me(SRecord)
Index: uKadecot/trunk/ssp/MANIFEST
===================================================================
--- uKadecot/trunk/ssp/MANIFEST	(revision 101)
+++ uKadecot/trunk/ssp/MANIFEST	(revision 101)
@@ -0,0 +1,77 @@
+PACKAGE ssp
+VERSION 1.2.1
+
+configure
+MANIFEST
+
+doc/ssp_spec.txt
+doc/extension.txt
+doc/porting.txt
+doc/user.txt
+doc/version.txt
+doc/configurator.txt
+
+include/itron.h
+include/log_output.h
+include/kernel.h
+include/sil.h
+include/t_stddef.h
+include/t_syslog.h
+
+kernel/Makefile.kernel
+kernel/allfunc.h
+kernel/check.h
+kernel/exception.c
+kernel/exception.h
+kernel/interrupt.c
+kernel/interrupt.h
+kernel/kernel.tf
+kernel/kernel_impl.h
+kernel/kernel_int.h
+kernel/kernel_rename.def
+kernel/kernel_rename.h
+kernel/kernel_unrename.h
+kernel/queue.h
+kernel/ssp_kernel_api.csv
+kernel/ssp_kernel_check.tf
+kernel/ssp_kernel_def.csv
+kernel/startup.c
+kernel/sys_manage.c
+kernel/task.c
+kernel/task.h
+kernel/task_manage.c
+
+sample/Makefile
+sample/hello_world.c
+sample/hello_world.cfg
+sample/hello_world.h
+sample/sample1.c
+sample/sample1.cfg
+sample/sample1.h
+
+syssvc/banner.c
+syssvc/banner.cfg
+syssvc/banner.h
+syssvc/banner.tf
+syssvc/log_output.c
+syssvc/logtask.c
+syssvc/logtask.cfg
+syssvc/logtask.h
+syssvc/serial.c
+syssvc/serial.cfg
+syssvc/serial.h
+syssvc/syslog.c
+syssvc/syslog.cfg
+syssvc/syslog.h
+syssvc/vasyslog.c
+syssvc/syssvc_def.csv
+
+utils/applyrename
+utils/genrename
+utils/makedep
+utils/makerelease
+
+INCLUDE arch/arm_m_gcc/MANIFEST
+INCLUDE target/cq_frk_fm3_gcc/MANIFEST
+INCLUDE arch/gcc/MANIFEST
+INCLUDE extension/MANIFEST
Index: uKadecot/trunk/ssp/arch/ccrx/tool_stddef.h
===================================================================
--- uKadecot/trunk/ssp/arch/ccrx/tool_stddef.h	(revision 101)
+++ uKadecot/trunk/ssp/arch/ccrx/tool_stddef.h	(revision 101)
@@ -0,0 +1,129 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2006 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2007-2010 by Witz Corporation, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìð©CFree Software Foundation 
+ *  ÉæÁÄö\³êÄ¢é GNU General Public License Ì Version 2 ÉL
+ *  q³êÄ¢éðð½·êÉÀèC{\tgEFAi{\tgEFA
+ *  ðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏEÄzziÈºC
+ *  pÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄC»ÌKpÂ\«à
+ *  ÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌpÉæè¼
+ *  ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  t_stddef.hÌJ­Â«Ë¶ilTX RXc[`FCpj
+ *
+ *  ±ÌCN[ht@CÍCt_stddef.h ÌæªÅCN[h³êéD
+ *  ¼Ìt@C©çÍ¼ÚCN[h·é±ÆÍÈ¢D¼ÌCN[h
+ *  t@CÉæ§ÁÄ³êé½ßC¼ÌCN[ht@CÉË¶µ
+ *  ÄÍÈçÈ¢D
+ */
+
+#if !defined( TOPPERS_TOOL_STDDEF_H )
+#define TOPPERS_TOOL_STDDEF_H
+
+/*
+ *  RpCÌg£@\Ì½ßÌ}Nè`
+ */
+/*
+ *  inline ¯ÊqÍOè`ð¶¬µÈ¢.
+ */
+#define	Inline		static inline
+
+/*
+ *  CCAZuÍ{RpCÅÍ
+ *  #pragma inline_asmÌÝÌT|[gÆÈé½ß,
+ *  asm/Asmè`ÍsíÈ¢.
+ */
+
+/*
+ *  NoReturn / alignofÍ{RpCÅÍT|[g³êÈ¢.
+ *  offsetofÍstddef.hÌè`ðp·é.
+ */
+#define	NoReturn
+
+
+/*
+ *  J­Â«ÌWCN[ht@CÌp
+ *
+ *  NULLÌè`ðstddef.h©çCINT_MAXCINT_MINCUINT_MAXCLONG_MAXC
+ *  LONG_MINCULONG_MAXCCHAR_BITÌè`ðlimits.h©çæèÞD
+ *
+ *  C++/EC++ÅÍCWdlãÍ±êçÌCN[ht@CªpÓ³êÄ
+ *  ¢éÆÍÀçÈ¢ÌÅÓªKvÅ éiÙÆñÇÌJ­Â«ÅpÓ³ê
+ *  Ä¢éjD
+ */
+#ifndef TOPPERS_MACRO_ONLY
+#include <stddef.h>
+#include <limits.h>
+#endif /* TOPPERS_MACRO_ONLY */
+
+
+/*
+ *  RpCË¶Ìf[^^Ìè`
+ *
+ *  stdint.hðCN[h·é
+ */
+#ifndef TOPPERS_MACRO_ONLY
+#include <stdint.h>
+#endif /* TOPPERS_MACRO_ONLY */
+
+
+/*
+ *  ®¬_^ÉÖ·éè`
+ *
+ *  ºLÌè`Ídbl_size = 8IvVðwèµ½êÌÝLøÆ·é±Æ.
+ */
+#ifndef TOPPERS_MACRO_ONLY
+typedef float		float32_t;			/* IEEE754ÌP¸x®¬_ */
+typedef double		double64_t;			/* IEEE754Ì{¸x®¬_ */
+#endif /* TOPPERS_MACRO_ONLY */
+
+#define FLOAT32_MIN		( 1.4012984643248171e-45F )
+#define FLOAT32_MAX		( 3.4028234663852886e+38F )
+#define DOUBLE64_MIN	( 4.9406564584124654e-324 )
+#define DOUBLE64_MAX	( 1.7976931348623157e+308 )
+
+
+/*
+ *  óxÌè`
+ *
+ *  {RpCÅÍå«³[ÌzñÍRpCG[ÉÈé½ß,
+ *  TCY1ÉÄè`·é.
+ */
+#define TOPPERS_EMPTY_LABEL( type, symbol )		type symbol[ 1 ]
+
+
+#endif /* TOPPERS_TOOL_STDDEF_H */
+
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/makeoffset.c
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/makeoffset.c	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/makeoffset.c	(revision 101)
@@ -0,0 +1,232 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2003-2004 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìð©CFree Software Foundation 
+ *  ÉæÁÄö\³êÄ¢é GNU General Public License Ì Version 2 ÉL
+ *  q³êÄ¢éðð½·êÉÀèC{\tgEFAi{\tgEFA
+ *  ðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏEÄzziÈºC
+ *  pÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄC»ÌKpÂ\«à
+ *  ÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌpÉæè¼
+ *  ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCðíÈ¢D
+ * 
+ */
+
+
+/*
+ *	offset.inc (àµ­Í offset.h) ÉÂ¢Ä
+ *
+ *	  offset.inc Í\¢ÌÌÁèÌvfª\¢ÌÌæª©ç½oCgÚÉ
+ *	¶Ý·é©Æ¢¤±Æâ, ÁèÌrbgtB[hªæª©ç
+ *	½oCgæÌ½rbgÚÉ¶Ý·é©, Æ¢¤îñð
+ *	AZu¾êt@CÉ^¦é½ßÉ¶ÝµÄ¢é.
+ *
+ *	  offset.inc t@CÌgÍ, PÈéV{è`t@CÅ é.
+ *	V{Æ¢ÁÄàè`·éV{Ì¼ÌÉÍp^[ª è,
+ *	å«­ª¯ÄÌ3íÞÉªÞÅ«é.
+ *
+ *	<\¢Ì¼>_<vf¼>	(á) TCB_sp, TCB_pc, TCB_enatex ÈÇ
+ *	<\¢Ì¼>_<vf¼>_bit	(á) TCB_enatex_bit ÈÇ
+ *	<\¢Ì¼>_<vf¼>_mask (á) TCB_enatex_mask ÈÇ
+ *
+ *	(á)
+ *		TCB_texptn		.equ	14
+ *		TCB_sp			.equ	20
+ *		TCB_pc			.equ	24
+ *		TCB_enatex		.equ	13
+ *		TCB_enatex_bit		.equ	 6
+ *		TCB_enatex_mask		.equ	0040H
+ *
+ *	  êÔÍ¶ßÍÁèÌvfª\¢ÌÌæª©ç½oCgæÉ é©
+ *	Æ¢¤±Æð¦·lÉÂ¯éxÌ¼Ì.
+ *	  ñÔÚÍÁèÌrbgtB[hÌrbgª, ºÊ©ç¦Ä
+ *	½rbgÚÉ é©Æ¢¤±Æð¦·lÉÂ¯éxÌ¼Ì. 
+ *	0©çnÜélÅ\»·é. ÅàºÊÌrbgÍæ0rbgÅ é.
+ *	  OÔÚÍæÙÇÌ <\¢Ì¼>_<vf¼>_bit ÆàÖA·éª,
+ *	ÁèÌrbgtB[hÌrbgÌ}XNlÌ¼Ì.
+ *	_bit Æ *_mask ÌlÌÔÉÍÌÖWª é.
+ *		(*_mask) == (1 << *_bit)
+ * *	(á) TCB_enatex_bit ª 6 Ì, TCB_enatex_mask Í 40H
+ *
+ *	  ¿ÈÝÉM32CË¶ÌÀÅÍ, ÁèrbgÌ`FbNÈÇÉ
+ *	rbg½ßAhbVOðgpµÄ¢éÌÅ *_mask Æ¢¤xÍ
+ *	gpµÄ¢È¢.
+ */
+
+/*
+ *	offset.inc Ììèû(M32C^[QbgË¶ü¯)
+ *
+ *	  GNU CRpCðp¢Ä¢é^[QbgË¶ÉÂ¢ÄÍ,
+ *	J[lÌgbvfBNgÌºÉ é util Æ¢¤fBNgÌ
+ *	ºÉ genoffset Æ¢¤ perl XNvgªpÓ³êÄ¢éÌÅ,
+ *	ÁÉè®Å offset.h ðì¬·éKvÍÈ¢.
+ *	  genoffset Í GNU J­Â«ðzèµÄì¬³êÄ¢éÌÅ,
+ *	¶¬³êéAZu¾ê^½ßâ¶¬K¥ÌÙÈé¼Ì
+ *	CRpCÉÍ»ÌÜÜKpÅ«È¢Â\«ª é.
+ *	  »±Å, ±±ÅÍWindowsÂ« ü¯Ì genoffset ðpÓ¹¸,
+ *	ìèûð±±ÉLµ, èìÆÅ offset.inc ðì¬µÄàç¤±ÆÆ
+ *	·é. ÈºÉ»Ìû@ð¦·. È¨, ±Ìû@ÍM32CÌJ­Â«â
+ *	½ßZbgÉË¶µÄ¢é½ß, ¼Ì^[QbgðgpµÄ¢éêÍ
+ *	»ÌÜÜKpÅ«È¢.
+ *
+ *  1.	makeoffset.c Æ¢¤t@C©çCRpCðgpµÄ
+ *	AZu¾êt@C makeoffset.a30 ð¶¬·é.
+ *	RpCIvVÍJ[lR[hÉ^¦éàÌÆ¯¶
+ *	àÌð^¦é. 
+ *	lTX»c[ TM ðgpµÄ¢éêÍ, vWFNgGfB^Ì
+ *	¶¬èr
+[©ç makeoffset.a30 ðIÑ, ENbNj
+[Ì
+ *	¢ªrh£ðIð·é±ÆÅ¶¬Å«é.
+ *	àµ­ÍR}hvvgÅCNt@CÆ¯¶fBNgÉ
+ *	Ú®µ, "make -f CNt@C¼ makeoffset.a30" ð
+ *	ÀsµÄà¯lÌÊª¾çêé. (CNt@CÍTMªgpµÄ
+ *	¢éàÌÆ¯¶t@CðwèÂ\)
+ *
+ *  2.	æÙÇÌ 1. ÌìÆÅ¾çê½, makeoffset.a30 t@C©ç
+ *	"! BEGIN XXXX"  ÅÍ¶Üè "! END" ÅIíÁÄ¢éªðT·.
+ *
+ *	4Ó è, »ê¼ê­µ¸ÂÙÈéÌÅÉà¾·é.
+ *	(Èº, à¾ÅÍAZu¾êt@CÌRgsÍÈ­)
+ *
+ * (1)	\¢ÌÌæª©çoÖÌItZbg
+ *
+ *	! BEGIN TCB_texptn
+ *		bset	00H,0000000eH
+ *	! END
+ *
+ *	ãL"! BEGIN"ÌãëÌ¶ñªoffset.incÅè`·éV{¼ÆÈé.
+ *	»ÌV{ÌlÍ, sÌbset½ßÌæ2IyhÌlÅ é
+ *	0000000eHª»êÉ·é. ±êª\¢ÌÌæª©çtexptnÜÅÌ
+ *	ItZbglÆÈé. µ½ªÁÄ±Ìê, offset.inc ÉÍ
+ *	TCB_texptn	.equ	14
+ *	Æ¢¤sðLq·é.
+ *
+ * (2)	\¢ÌÌoª\¢ÌÅ, »ÌÌoÉÎ·éItZbg
+ *
+ *	TCB_sp ÉÂ¢ÄàÙÚ¯l¾ª, sp ÍTCB\¢ÌÌ¼ÚÌ
+ *	oÅÈ­TCB\¢ÌÌoÅ éTSKCTXB\¢ÌÌoÅ
+ *	 é_ªÙÈé. »êÅàè`·éV{¼ÆµÄÍ
+ *	TCB_sp Ìæ¤É\»·é. AZu¾êt@CÅÍ
+ *
+ *	! BEGIN TCB_sp
+ *		mov.l	00000014H,A0
+ *		extz	[A0],R0
+ *		bset	0,R0L
+ *		mov.l	#00000014H,A0
+ *		mov.b	R0L,[[A0]]
+ *	! END *
+ *
+ *	Ìæ¤ÉÈè,14H(=20) ªßélÈÌÅoffset.inc ÉÍÌæ¤É
+ *	Lq·é.
+ *
+ *	TCB_sp	.equ	20
+ *
+ * (3)	oªÖÖÌ|C^Å Á½ê
+ *
+ *	Í TCB_pc Ìê.
+ *
+ *	! BEGIN TCB_pc
+ *		mov.l	#00000018H,A0
+ *		jsri.a	[A0]
+ *	! END
+ *
+ *	pc à sp Æ¯¶­, TCB\¢ÌÌ¼ÚÌoÅÍÈ¢ª
+ *	TCB_pc Æ\»µÄ¢é. ±êÍÖÌAhXði[·éÏÈÌÅ,
+ *	(((TCB *)0)->tskctxb.pc)();
+ *	ÆµÄÖÄÑoµÌæ¤ÉLq·éÆãLÌæ¤ÈAZu¾ê
+ *	R[hðoÍ·é. V{è`·éÛÌV{¼Í¡ÜÅÆ
+ *	¯¶­, TCB_pc Æ·é. 
+ *	ßélÍ\¢Ì©çÖ|C^ÜÅÌItZbgÅ è, ãÌmov.l
+ *	½ßÌÊ©ç 	00000018H(=24) ÆÈé.
+ *	µ½ªÁÄ, offset.inc ÉÍÌæ¤ÉLq·é.
+ *
+ *	TCB_pc	.equ	24
+ *
+ * (4)	\¢ÌÌoªrbgtB[hÅ»ÌrbgÊuàmè½¢ê
+ *
+ *	! BEGIN TCB_enatex
+ *		bset	6,0000000cH+1
+ *	! END
+ *
+ *	¡ÜÅÆ¯l, BEGIN ÌãÌ¶ñðV{¼Æ·é.
+ *	±±ÅÌTCB_enatexÌlÍ\¢ÌÌæª©çrbgtB[hðÜÞo
+ *	CgÜÅÌItZbgÅ, M32CÌrbg½ßAhbVOÍwèÅ«
+ *	érbgÊuª0©ç7ÌÔÉûÜéæ¤ÉANZX·éAhXÉK
+ *	ªÁ¦çêéÌÅ cH+1(=13) ÆÈÁÄ¢é. Ü½, rbgtB[h
+ *	ÌÅºÊrbg©çÌrbgÊuÍ 6ÆÈé.
+ *	ÈãæèÌæ¤É­±ÆªÅ«é.
+ *
+ *		TCB_enatex	.equ	13
+ *		TCB_enatex_bit	.equ	 6
+ *		TCB_enatex_mask	.equ	40H
+ */
+
+#include "kernel_impl.h"
+#include "task.h"
+#include "sil.h"
+
+const TCB	____BEGIN_OFF_TCB_tstat = {
+		{ NULL, NULL }, NULL , 1, 0,
+		0, 0 , 0 , 0 , NULL , { NULL , NULL }
+	};
+
+const TCB	____BEGIN_OFF_TCB_tinib = {
+		{ NULL, NULL }, (TINIB *)1 , 0 , 0,
+		0, 0 , 0 , 0 , NULL , { NULL , NULL }
+	};
+
+const TCB	____BEGIN_OFF_TCB_pc = {
+		{ NULL, NULL }, NULL, 0, 0,
+		0, 0 , 0 , 0 , NULL , { NULL , (FP)1 }
+	};
+const TCB	____BEGIN_OFF_TCB_sp = {
+		{ NULL, NULL }, NULL, 0, 0,
+		0, 0 , 0 , 0 , NULL , { (void *)1 , NULL }
+	};
+
+const TCB	____BEGIN_BIT_TCB_enatex = {
+		{ NULL, NULL }, NULL, 0, 0,
+		0, 0 , 1 , 0 , NULL , { NULL , NULL }
+	};
+
+const TCB	____BEGIN_OFF_TCB_texptn = {
+		{ NULL, NULL }, NULL, 0, 0,
+		0 , 0 , 0 , 1 , NULL , { NULL , NULL }
+	};
+
+const TINIB	____BEGIN_OFF_TINIB_exinf = {
+		0 , (intptr_t)1 , NULL , 0 , 0 , NULL , 0 , NULL
+	};
+
+const TINIB	____BEGIN_OFF_TINIB_task = {
+		0 , NULL , (TASK)1 , 0 , 0 , NULL , 0 , NULL
+	};
+
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/prc.tf
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/prc.tf	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/prc.tf	(revision 101)
@@ -0,0 +1,361 @@
+$ 
+$  TOPPERS/SSP Kernel
+$      Smallest Set Profile Kernel
+$ 
+$  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+$  Copyright (C) 2013      by Mitsuhiro Matsuura
+$ 
+$  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+$  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+$  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+$       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+$      XR[hÉÜÜêÄ¢é±ÆD
+$  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+$      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+$      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+$      Ì³ÛØKèðfÚ·é±ÆD
+$  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+$      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+$      ÆD
+$    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+$        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+$        ñ·é±ÆD
+$  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+$      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+$      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+$      ÆÓ·é±ÆD
+$ 
+$  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+$  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+$  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+$  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+$  ÌÓCðíÈ¢D
+$ 
+$ 
+
+$ 
+$  A[LeN`Ë¶ev[giRX630pj
+$ 
+
+
+
+$ 
+$  ATT_ISRÅgpÅ«éÝÔÆ»êÉÎ·éÝnhÔ
+$ 
+
+$INTNO_ATTISR_VALID = INTNO_VALID$
+$INHNO_ATTISR_VALID = INHNO_VALID$
+
+
+$ 
+$  DEF_INT^DEF_EXCÅgpÅ«éÝnhÔ^CPUáOnhÔ
+$ 
+
+$INHNO_DEFINH_VALID = INHNO_VALID$
+$EXCNO_DEFEXC_VALID = EXCNO_VALID$
+
+
+$ 
+$  CFG_INTÅgpÅ«éÝÔÆÝDæx
+$ 
+
+$INTNO_CFGINT_VALID = INHNO_VALID$
+$INTPRI_CFGINT_VALID = { -7, -6,...,-1 }$
+
+
+$ 
+$  ^[QbgñË¶ÉÜÜêéWÌÝÇ@\/áOÇ@\Ìú»ðgp·é
+$ 
+
+$OMIT_INITIALIZE_INTERRUPT = 0$
+$OMIT_INITIALIZE_EXCEPTION = 0$
+
+
+$ 
+$  X^bNTCYÌ`FbNû@wè
+$ 
+
+$CHECK_STKSZ_ALIGN = 4$
+
+
+$ 
+$  ^XNX^bNTCYÌÅ¬l
+$ 
+$  ^XNN®É4byte,
+$  ÝüûÉÄ48byte, CPUáOüûÉÄ84byte,
+$  Å é½ß, Å¬lÍ88byteÆ·é.
+$ 
+
+$TARGET_MIN_STKSZ = 88$
+
+
+$ 
+$  èè`
+$ 
+
+$TA_POSEDGE = TA_EDGE$
+
+
+$ 
+$ ^[QbgË¶ÌÝ®«Ìè`
+$ 
+
+$TARGET_INTATR = TA_POSEDGE | TA_NEGEDGE | TA_BOTHEDGE | TA_LOWLEVEL$
+
+
+$ 
+$ ^[QbgË¶ÌÝnh®«Ìè`
+$ 
+
+$TARGET_INHATR = TA_NONKERNEL$
+
+
+$ 
+$ J[lÇOÝnhÍÅè³¹È¢½ß,
+$ INTNO_FIX_KERNEL
+$ INHNO_FIX_KERNEL
+$ INHNO_FIX_NONKERNEL
+$ INHNO_FIX_NONKERNEL
+$ ðè`µÈ¢.
+$ 
+
+
+$ 
+$  Wev[gt@CÌCN[h
+$ 
+$INCLUDE "kernel.tf"$
+
+
+
+$ 
+$  CFG_INTÌ^[QbgË¶ÌG[`FbN
+$ 
+
+$FOREACH intno INT.ORDER_LIST$
+$ IRQÝÔ©Ç¤©ð`FbN
+	$IF ( LENGTH( FIND( INTNO_INT, INT.INTNO[intno] ) ) != 0 )$
+
+$   TA_POSEDGEÆTA_NEGEDGEª¯ÉÝè³êÄ¢éê
+		$IF ((INT.INTATR[intno] & ( TA_POSEDGE | TA_NEGEDGE )) == ( TA_POSEDGE | TA_NEGEDGE ))$
+			$ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
+		$END$
+
+$   TA_POSEDGEÆTA_BOTHEDGEª¯ÉÝè³êÄ¢éê
+		$IF ((INT.INTATR[intno] & ( TA_POSEDGE | TA_BOTHEDGE )) == ( TA_POSEDGE | TA_BOTHEDGE ))$
+			$ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
+		$END$
+
+$   TA_NEGEDGEÆTA_BOTHEDGEª¯ÉÝè³êÄ¢éê
+		$IF ((INT.INTATR[intno] & ( TA_NEGEDGE | TA_BOTHEDGE )) == ( TA_NEGEDGE | TA_BOTHEDGE ))$
+			$ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
+		$END$
+
+$   TA_POSEDGEÆTA_NEGEDGEÆTA_BOTHEDGEª¯ÉÝè³êÄ¢éê
+		$IF ((INT.INTATR[intno] & ( TA_POSEDGE | TA_NEGEDGE | TA_BOTHEDGE )) == ( TA_POSEDGE | TA_NEGEDGE | TA_BOTHEDGE ))$
+			$ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
+		$END$
+
+	$ELSE$
+
+$   IRQÝÈOÌÝÉÎµÄÝ®«ªwè³êÄ¢éê
+		$IF (INT.INTATR[intno] & (~( TA_ENAINT | TA_EDGE ))) != 0$
+			$ERROR$ INT.TEXT_LINE[intno]: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
+		$END$
+
+	$END$
+
+$END$
+
+
+
+$ 
+$ ÝÔ©çÝDæxyÑ®«ðæèo·e[u
+$ 
+
+/*$NL$
+$SPC$*$SPC$$SPC$Interrupt Level and Attribute Table$NL$
+$SPC$*/$NL$
+const CFG_INT_INFO _kernel_cfg_int_table[$LENGTH(INTNO_RANGE)$] = {$NL$
+$FOREACH intno INTNO_RANGE$
+$ ÝDæxðæ¾
+	$IF LENGTH(INT.INTNO[intno])$
+		$intpri = -INT.INTPRI[intno]$
+		$intatr = INT.INTATR[intno]$
+	$ELSE$
+		$intpri = "0"$
+		$intatr = "0xFFFFFFFF"$
+	$END$
+
+$ e[uÌgðoÍ
+	$TAB$$FORMAT("{ %2d, %08x }, /* %02u */", intpri, intatr, +intno)$$NL$
+$END$
+};$NL$$NL$
+
+
+$ 
+$  AZuoÍt@C
+$ 
+
+$FILE "kernel_cfg_asm.src"$
+
+;$NL$
+;  RX630A[LeN`Ë¶oÍt@C$NL$
+;$NL$
+;  ÝxN^yÑÝnhè`$NL$
+;$NL$
+$NL$$NL$
+
+
+$ 
+$  Ýüû
+$ 
+
+$ 
+$  ¤ÊÖÌé¾
+$ 
+
+$TAB$.section P, CODE$NL$
+$TAB$.glb$TAB$_kernel_interrupt$NL$
+$TAB$.glb$TAB$__kernel_default_int_handler$NL$
+$TAB$.glb$TAB$__kernel_default_exc_handler$NL$$NL$$NL$
+
+
+$ 
+$  ÝnhÌoÍ
+$ 
+
+$FOREACH inhno INHNO_RANGE$
+	$IF LENGTH(INH.INHNO[inhno])$
+		$IF ((INH.INHATR[inhno] & TA_NONKERNEL) == 0)$
+			$TAB$.glb	_$INH.INTHDR[inhno]$$NL$
+			$TAB$.glb	__kernel_$INH.INTHDR[inhno]$_$+INH.INHNO[inhno]$_entry$NL$
+			__kernel_$INH.INTHDR[inhno]$_$+INH.INHNO[inhno]$_entry:$NL$
+			$TAB$pushm	r1-r5						; XNb`WX^ð^XNX^bNÖÞð $NL$
+			$TAB$mov.l	#$+INH.INHNO[inhno]$, r1	; ÝnhÔðr1Ö $NL$
+			$TAB$mov.l	#_$INH.INTHDR[inhno]$, r2	; nhÌAhXðr2Ö $NL$
+			$TAB$bra.a	_kernel_interrupt			; ¤Ê[`Ö $NL$$NL$$NL$
+		$END$
+	$END$
+$END$
+
+
+$ ¢o^Ýnhüû
+$TAB$.glb$TAB$__kernel_default_int_handler_entry$NL$
+__kernel_default_int_handler_entry:$NL$
+$TAB$pushm	r1-r5								; XNb`WX^ð^XNX^bNÖÞð $NL$
+$TAB$mov.l	#0FFFFFFFFH, r1						; ÝnhÔðr1Ö $NL$
+$TAB$mov.l	#__kernel_default_int_handler, r2	; nhÌAhXðr2Ö $NL$
+$TAB$bra.a	_kernel_interrupt					; ¤Ê[`Ö $NL$$NL$$NL$
+
+
+$ 
+$  CPUáOnhüû
+$ 
+
+$TAB$.glb	_kernel_exception$NL$$NL$
+
+$FOREACH excno EXCNO_RANGE$
+	$IF LENGTH(EXC.EXCNO[excno])$
+		$TAB$.glb	_$EXC.EXCHDR[excno]$$NL$
+		$TAB$.glb	__kernel_$EXC.EXCHDR[excno]$_$+EXC.EXCNO[excno]$_entry$NL$
+		__kernel_$EXC.EXCHDR[excno]$_$+EXC.EXCNO[excno]$_entry:$NL$
+		$TAB$pushm	r1-r5						; XNb`WX^ð^XNX^bNÖÞð $NL$
+		$TAB$mov.l	#$+EXC.EXCNO[excno]$, r1	; CPUáOnhÔðr1Ö $NL$
+		$TAB$mov.l	#_$EXC.EXCHDR[excno]$, r2	; nhÌAhXðr2Ö $NL$
+		$TAB$bra.a	_kernel_exception			; ¤Ê[`Ö $NL$$NL$$NL$
+	$END$
+$END$
+
+
+$ ¢o^CPUáOnhüû
+$TAB$.glb$TAB$__kernel_default_exc_handler_entry$NL$
+__kernel_default_exc_handler_entry:$NL$
+$TAB$pushm	r1-r5								; XNb`WX^ð^XNX^bNÖÞð $NL$
+$TAB$mov.l	#0FFFFFFFFH, r1						; CPUáOnhÔðr1Ö $NL$
+$TAB$mov.l	#__kernel_default_exc_handler, r2	; nhÌAhXðr2Ö $NL$
+$TAB$bra.a	_kernel_exception					; ¤Ê[`Ö $NL$$NL$$NL$
+
+
+$ 
+$  ÂÏxN^e[u
+$ 
+
+;$NL$
+;  ÂÏxN^e[u$NL$
+;$NL$
+$NL$
+
+$TAB$.glb $TAB$ _start$NL$$NL$
+
+$FOREACH inhno INH.ORDER_LIST$
+	$IF ((INH.INHATR[inhno] & TA_NONKERNEL) != 0)$
+		$TAB$.glb $TAB$ _$INH.INTHDR[inhno]$ $NL$
+	$END$
+$END$
+$NL$
+
+$TAB$.section C$$VECT, ROMDATA$NL$$NL$
+vvector_table:$NL$
+$FOREACH inhno INHNO_RANGE$
+	$IF LENGTH(INH.INHNO[inhno])$
+		$IF ((INH.INHATR[inhno] & TA_NONKERNEL) == 0)$
+			$inhhdr = CONCAT(CONCAT("_kernel_" , CONCAT(INH.INTHDR[inhno] , "_")) , CONCAT(+INH.INHNO[inhno] , "_entry"))$
+		$ELSE$
+			$inhhdr = INH.INTHDR[inhno]$
+		$END$
+	$ELSE$
+		$inhhdr = "_kernel_default_int_handler_entry"$
+	$END$
+
+	$TAB$.lword$TAB$_$inhhdr$ $TAB$ $TAB$ $FORMAT("; %02d" , inhno)$ $NL$
+$END$
+
+
+$ 
+$  ÅèxN^e[u
+$ 
+$FOREACH excno EXCNO_RANGE$
+	$IF LENGTH(EXC.EXCNO[excno])$
+		$EXCHDR[excno] = CONCAT(CONCAT("_kernel_" , CONCAT(EXC.EXCHDR[excno] , "_")) , CONCAT(+EXC.EXCNO[excno] , "_entry"))$
+	$ELSE$
+		$EXCHDR[excno] = "_kernel_default_exc_handler_entry"$
+	$END$
+$END$
+
+$NL$
+;$NL$
+;  ÅèxN^e[u$NL$
+;$NL$
+$NL$
+
+$TAB$ .section FVECT, ROMDATA$NL$
+$NL$
+fvector_table:$NL$$NL$
+
+$TAB$ .offset$TAB$ 020H$NL$
+$TAB$ .lword$TAB$ 00000000 $TAB$ ; §äR[h, IDR[h1 - 3$NL$
+$TAB$ .lword$TAB$ 00000000 $TAB$ ; IDR[h4 - 7$NL$
+$TAB$ .lword$TAB$ 00000000 $TAB$ ; IDR[h8 - 11$NL$
+$TAB$ .lword$TAB$ 00000000 $TAB$ ; IDR[h12 - 15$NL$$NL$
+
+$TAB$ .offset$TAB$ 050H$NL$
+$TAB$ .lword$TAB$ _$EXCHDR[20]$ $TAB$ $TAB$ ;$SPC$ 20:Á ½ßáO $SPC$$NL$
+$TAB$ .offset$TAB$ 05CH$NL$
+$TAB$ .lword$TAB$ _$EXCHDR[23]$ $TAB$ $TAB$ ;$SPC$ 23:¢è`½ßáO $SPC$$NL$
+$TAB$ .offset$TAB$ 064H$NL$
+$TAB$ .lword$TAB$ _$EXCHDR[25]$ $TAB$ $TAB$ ;$SPC$ 25:®¬_áO $SPC$$NL$
+$TAB$ .offset$TAB$ 078H$NL$
+$TAB$ .lword$TAB$ _$EXCHDR[30]$ $TAB$ $TAB$ ;$SPC$ 30:m}XJuáO $SPC$$NL$
+$TAB$ .lword$TAB$ _start $TAB$ $TAB$ $TAB$ $TAB$ ;$SPC$ 31:Zbg $SPC$$NL$
+
+$NL$ $NL$
+
+	$TAB$.end
+$NL$
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/prc_asm_config.tf
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/prc_asm_config.tf	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/prc_asm_config.tf	(revision 101)
@@ -0,0 +1,13 @@
+$ 
+$     asm_config.inc ¶¬p
+$     pX2ÌA[LeN`Ë¶ev[giRX630pj
+$ 
+
+$FILE "asm_config.inc"$
+
+
+TIPM_LOCK $TAB$$TAB$ .equ $TAB$ $+TIPM_LOCK$ $NL$
+IPL_LOCK $TAB$$TAB$ .equ $TAB$ $+IPL_LOCK$ $NL$
+PSW_I_MASK $TAB$$TAB$ .equ $TAB$ $+PSW_I_MASK$ $NL$
+PSW_IPL_MASK $TAB$$TAB$ .equ $TAB$ $+PSW_IPL_MASK$ $NL$
+EXC_GET_PSW_OFFSET $TAB$$TAB$ .equ $TAB$ $+EXC_GET_PSW_OFFSET$ $NL$
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/prc_cfg1_out.h
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/prc_cfg1_out.h	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/prc_cfg1_out.h	(revision 101)
@@ -0,0 +1,19 @@
+/*
+ *		cfg1_out.cÌNÉKvÈX^uÌè`
+ */
+
+void sta_ker( void )
+{
+}
+
+void hardware_init_hook( void )
+{
+}
+
+void software_init_hook( void )
+{
+}
+
+const SIZE		_kernel_istksz = 0;
+
+STK_T *const	_kernel_istk = NULL;
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/prc_check.tf
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/prc_check.tf	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/prc_check.tf	(revision 101)
@@ -0,0 +1,58 @@
+$ 
+$  TOPPERS/SSP Kernel
+$      Smallest Set Profile Kernel
+$ 
+$  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+$ 
+$  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+$  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+$  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+$       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+$      XR[hÉÜÜêÄ¢é±ÆD
+$  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+$      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+$      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+$      Ì³ÛØKèðfÚ·é±ÆD
+$  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+$      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+$      ÆD
+$    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+$        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+$        ñ·é±ÆD
+$  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+$      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+$      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+$      ÆÓ·é±ÆD
+$ 
+$  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+$  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+$  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+$  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+$  ÌÓCðíÈ¢D
+$ 
+
+$ 
+$ 		pX3ÌvZbTË¶ev[giRX630pj
+$ 
+
+$ 
+$  `FbNû@Ìwè
+$ 
+$CHECK_FUNC_ALIGN = 1$
+$CHECK_FUNC_NONNULL = 1$
+$CHECK_STACK_ALIGN = 4$
+$CHECK_STACK_NONNULL = 1$
+$CHECK_MPF_ALIGN = 4$
+$CHECK_MPF_NONNULL = 1$
+
+$ 
+$  Wev[gt@CÌCN[h
+$ 
+$INCLUDE "kernel/kernel_check.tf"$
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/prc_config.c
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/prc_config.c	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/prc_config.c	(revision 101)
@@ -0,0 +1,240 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005,2006 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìð©CFree Software Foundation 
+ *  ÉæÁÄö\³êÄ¢é GNU General Public License Ì Version 2 ÉL
+ *  q³êÄ¢éðð½·êÉÀèC{\tgEFAi{\tgEFA
+ *  ðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏEÄzziÈºC
+ *  pÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄC»ÌKpÂ\«à
+ *  ÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌpÉæè¼
+ *  ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		vZbTË¶W
+[iRX630pj
+ */
+
+#include "kernel_impl.h"
+#include "sil.h"
+
+
+/*
+ *  Ý­¶ñðÛ¶·éÏ
+ */
+uint16_t	intnest;
+
+/*
+ *  CPUbNtOÀ»Ì½ßÌÏ
+ */
+#if TIPM_LOCK != -15
+bool_t		lock_flag;		/* CPUbNtOÌlðÛ·éÏ */
+uint32_t	saved_ipl;		/* ÝDæxxðÛ¶·éÏ */
+#endif	/* TIPM_LOCK != -15	*/
+
+
+/*
+ *  vZbTË¶Ìú»
+ */
+void
+prc_initialize( void )
+{
+	/*
+	 *  Ý­¶ñÌú»
+	 *
+	 *  X^[gAbvÍSÝbNóÔ & ñ^XNReLXg
+	 *  ÉÄ®ì·é½ß, ñ^XNReLXgÉU·é.
+	 */
+	intnest = 1U;
+
+#if TIPM_LOCK != -15
+	/*
+	 *  CPUbNtOÀ»Ì½ßÌÏÌú»
+	 */
+	lock_flag = true;
+	saved_ipl = IPL_ENAALL;
+#endif	/* TIPM_LOCK != -15	*/
+}
+
+
+/*
+ *  vZbTË¶ÌI¹
+ */
+void
+prc_terminate( void )
+{
+	/*
+	 *  ÁÉKvÈÍÈ¢
+	 */
+}
+
+
+/*
+ *  CPUáOÌ­¶óµÌOoÍ
+ *
+ *  CPUáOnhÌ©çCCPUáOîñ|C^ip_excinfjðøÆµ
+ *  ÄÄÑo·±ÆÅCCPUáOÌ­¶óµðVXeOÉoÍ·éD
+ */
+#ifdef SUPPORT_XLOG_SYS
+void
+xlog_sys( void *p_excinf )
+{
+	syslog(LOG_ERROR , "r1 = %u") , *((uint32_t*)((intptr_t)p_excinf + 14));
+	syslog(LOG_ERROR , "r2 = %u") , *((uint32_t*)((intptr_t)p_excinf + 15));
+	syslog(LOG_ERROR , "r3 = %u") , *((uint32_t*)((intptr_t)p_excinf + 16));
+	syslog(LOG_ERROR , "r4 = %u") , *((uint32_t*)((intptr_t)p_excinf + 17));
+	syslog(LOG_ERROR , "r5 = %u") , *((uint32_t*)((intptr_t)p_excinf + 18));
+	syslog(LOG_ERROR , "r6 = %u") , *((uint32_t*)((intptr_t)p_excinf + 1));
+	syslog(LOG_ERROR , "r7 = %u") , *((uint32_t*)((intptr_t)p_excinf + 2));
+	syslog(LOG_ERROR , "r8 = %u") , *((uint32_t*)((intptr_t)p_excinf + 3));
+	syslog(LOG_ERROR , "r9 = %u") , *((uint32_t*)((intptr_t)p_excinf + 4));
+	syslog(LOG_ERROR , "r10 = %u") , *((uint32_t*)((intptr_t)p_excinf + 5));
+	syslog(LOG_ERROR , "r11 = %u") , *((uint32_t*)((intptr_t)p_excinf + 6));
+	syslog(LOG_ERROR , "r12 = %u") , *((uint32_t*)((intptr_t)p_excinf + 7));
+	syslog(LOG_ERROR , "r13 = %u") , *((uint32_t*)((intptr_t)p_excinf + 8));
+	syslog(LOG_ERROR , "r14 = %u") , *((uint32_t*)((intptr_t)p_excinf + 12));
+	syslog(LOG_ERROR , "r15 = %u") , *((uint32_t*)((intptr_t)p_excinf + 13));
+	syslog(LOG_ERROR , "fpsw = %u") , *((uint32_t*)((intptr_t)p_excinf + 11));
+	syslog(LOG_ERROR , "acclo = %u") , *((uint32_t*)((intptr_t)p_excinf + 10));
+	syslog(LOG_ERROR , "acchi = %u") , *((uint32_t*)((intptr_t)p_excinf + 9));
+	syslog(LOG_ERROR , "pc = %x") , *((uint32_t*)((intptr_t)p_excinf + 19));
+	syslog(LOG_ERROR , "psw = %x") , *((uint32_t*)((intptr_t)p_excinf + 20));
+}
+#endif /* SUPPORT_XLOG_SYS */
+
+
+/*
+ *  ÝvCÌ®«ÌÝè
+ *
+ *  ASPJ[lÅÌpðzèµÄCp[^G[ÍAT[VÅ`Fb
+ *  NµÄ¢éDcfg_intT[rXR[ðÝ¯éêÉÍCG[ðÔ·æ¤
+ *  É·×«Å ë¤D
+ */
+void
+x_config_int( INTNO intno, ATR intatr, PRI intpri )
+{
+	uint8_t		irq_offset;
+	uint8_t		irq_val;
+
+	assert( VALID_INTNO_CFGINT(intno) );
+
+	assert( ( -15 <= intpri ) && ( intpri <= TMAX_INTPRI ) );
+#if TIPM_LOCK != -15
+	if( intatr == TA_NONKERNEL ){
+		assert( intpri < TMIN_INTPRI );
+ 	}
+	else{
+		assert( TMIN_INTPRI <= intpri ); 
+	}
+#endif
+
+	/*
+	 *  ÝÌ}XN
+	 *
+	 *  Ýðó¯t¯½ÜÜCxgK^GbWgKÌÝèâC
+	 *  ÝDæxÌÝèðs¤ÌÍë¯È½ßCÝ®«É©©íç¸C
+	 *  êU}XN·éD
+	 */
+	( void )x_disable_int( intno );
+
+	/*
+	 *  xgK/GbWgKÌÝè
+	 *
+	 *  IRQÌÝT|[g·é
+	 */
+	if( INTNO_IRQ( intno ) != 0U ){
+		irq_offset = INTNO_IRQ_OFFSET( intno );
+
+		if( ( intatr & TA_POSEDGE ) != 0U ){
+			irq_val = IRQ_POSEDGE;
+		}
+		else if( ( intatr & TA_NEGEDGE ) != 0U ){
+			irq_val = IRQ_NEGEDGE;
+		}
+		else if( ( intatr & TA_BOTHEDGE ) != 0U ){
+			irq_val = IRQ_BOTHEDGE;
+		}
+		else if( ( intatr & TA_LOWLEVEL ) != 0U ){
+			irq_val = IRQ_LOWLEVEL;
+		}
+		else{
+			/*
+			 *  RtBM
+[^ÉÄ`FbNµÄ¢é½ß,
+			 *  ±±Ö­é±ÆÍ è¦È¢.
+			 */
+			irq_val = 0U;
+		}
+
+		sil_wrb_mem((uint8_t *)irqcr_reg_addr[irq_offset], irq_val);
+	}
+
+	/*
+	 *  ÝxÌÝè
+	 *
+	 *  ÝÔÉÎµ½IPRlðÝè·é.
+	 */
+	sil_wrb_mem((uint8_t *)ipr_reg_addr[intno], cfg_int_table[intno].intpri);
+
+	/*
+	 *  ÝÌ}XNð
+ 	 */
+	if( ( intatr & TA_ENAINT ) != 0U ){
+		( void )x_enable_int( intno );
+	}
+}
+
+
+#ifndef OMIT_DEFAULT_INT_HANDLER
+/*
+ *  ¢o^ÌÝª­¶µ½êÉÄÑo³êé
+ */
+void
+default_int_handler( void )
+{
+	syslog(LOG_EMERG, "Unregistered Interrupt occurs.");
+}
+#endif /* OMIT_DEFAULT_INT_HANDLER */
+
+#ifndef OMIT_DEFAULT_EXC_HANDLER
+/*
+ *  ¢o^ÌáOª­¶µ½êÉÄÑo³êé
+ */
+void
+default_exc_handler( void )
+{
+	syslog(LOG_EMERG, "Unregistered Expevt error occurs.");
+}
+#endif /* OMIT_DEFAULT_EXC_HANDLER */
+
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/prc_config.h
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/prc_config.h	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/prc_config.h	(revision 101)
@@ -0,0 +1,719 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005,2006 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ *  Copyright (C) 2013      by Mitsuhiro Matsuura
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìð©CFree Software Foundation 
+ *  ÉæÁÄö\³êÄ¢é GNU General Public License Ì Version 2 ÉL
+ *  q³êÄ¢éðð½·êÉÀèC{\tgEFAi{\tgEFA
+ *  ðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏEÄzziÈºC
+ *  pÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄC»ÌKpÂ\«à
+ *  ÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌpÉæè¼
+ *  ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		vZbTË¶W
+[iRX630pj
+ *
+ *  ±ÌCN[ht@CÍCtarget_config.hiÜ½ÍC»±©çCN
+ *  [h³êét@CjÌÝ©çCN[h³êéD¼Ìt@C©ç
+ *  ¼ÚCN[hµÄÍÈçÈ¢D
+ */
+
+#ifndef TOPPERS_PRC_CONFIG_H
+#define TOPPERS_PRC_CONFIG_H
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  vZbTÌÁê½ßÌCCÖè`
+ */
+#include "prc_insn.h"
+
+
+/*
+ *  ñ^XNReLXgpÌX^bNúl
+ */
+
+//#define TOPPERS_ISTKPT( istk, istksz ) (( STK_T * )(( char * )( istk ) + ( istksz )))
+#define TOPPERS_ISTKPT( istk, istksz )  __secend("SI")
+
+/*
+ *  ^XNReLXgubNÌè`
+ */
+typedef struct task_context_block {
+	void	*sp;		/* X^bN|C^ */
+	FP		pc;			/* vOJE^ */
+} TSKCTXB;
+
+
+/*
+ *  Ý­¶ñðÛ¶·éÏ
+ */
+extern uint16_t intnest;
+
+
+/*
+ *  CPUbNóÔÅÌÝDæx}XN
+ *
+ *  TIPM_LOCKÍCCPUbNóÔÅÌÝDæx}XNC·Èí¿CJ[l
+ *  ÇOÌàÌð­·×ÄÌÝvð}XN·élÉè`·éD
+ *
+ *  TMIN_INTPRIÏX·é±ÆÅÇOÝÌL³ðè·éD
+ *  á¦ÎTMIN_INTPRIð-14ÉÝè·éÆCx15ÌÝªJ[lÇOÆ
+ *  ÈéDTMIN_INTPRIð-15ÉÝè·éÆCNMIÈOÉJ[lÇOÌÝð
+ *  Ý¯È¢±ÆÉÈéi±ÌêÉÍ-15ÉÝè·é±Æð§·éjD
+ */
+#ifndef TIPM_LOCK
+#define TIPM_LOCK	TMIN_INTPRI
+#endif /* TIPM_LOCK */
+
+
+/*
+ *  TOPPERSWÝfÌÀ»
+ */
+/*
+ *  ReLXgÌQÆ
+ *
+ *  RXÅÍCÝÌßèæª^XN©Ç¤©ð»f·é½ßÉ intnest
+ *  ðgpµÄ¢éD±êðp¢ÄReLXgð»f·éD
+ */
+Inline bool_t
+sense_context( void )
+{
+	/*  lXgJE^0æèåÈçñ^XNReLXg  */
+	return ( intnest > 0U );
+}
+
+
+/*
+ *  CPUbNtOÀ»Ì½ßÌÏ
+ *
+ *  ±êçÌÏÍCCPUbNóÔÌÌÝ«·¦Äæ¢àÌÆ·éD
+ */
+#if TIPM_LOCK != -15
+extern bool_t	lock_flag;		/* CPUbNtOÌlðÛ·éÏ */
+extern uint32_t	saved_ipl;		/* ÝDæxxðÛ¶·éÏ */
+#endif	/* TIPM_LOCK != -15	*/
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+
+/*
+ *  ÝDæx}XNÌO\»Æà\»ÌÏ·
+ *
+ *  RX630ÅÍCvZbTXe[^X[hWX^iPSWjÌº©ç
+ *  24`27rbgÚÌ4rbgÉÝDæxxiIPLjªu©êÄ¢éD
+ *  J[lÇOÝðÀ·éêÉIPLðgpµ½§äðs¤D
+ *  J[lÍÝDæx}XNi-1©çA±µ½ÌljÅÇ³êÄ
+ *  ¢é½ßIPLÆÌÏ·ªKvÆÈéD
+ */
+#define IPL_TO_IPM( ipl )	(-(( PRI )(( ipl ) >> 24U )))		/* IPLðIPMÉ	*/
+#define IPM_TO_IPL( ipm )	((( uint32_t )(-( ipm ))) << 24U )	/* IPMðIPLÉ	*/
+
+
+/*
+ *  CPUbNóÔÅÌÝDæx}XNÌIPL
+ */
+#define IPL_LOCK		( IPM_TO_IPL( TIPM_LOCK ) )
+
+/*
+ *  TIPM_ENAALLiÝDæx}XNSðjÌIPL
+ */
+#define IPL_ENAALL		( IPM_TO_IPL( TIPM_ENAALL ) )
+
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ÝvöÌx & ®«è`e[u
+ *  (ev[gt@CÉæéoÍ)
+ */
+typedef struct cfg_int_info {
+	PRI		intpri;
+	ATR		intatr;
+} CFG_INT_INFO;
+
+extern const CFG_INT_INFO cfg_int_table[];
+
+
+/*
+ *  ÝÔÌÍÍÌ»è
+ *
+ *  ÝÔªLøÈl©µ§É`FbN·é½ß,
+ *  RtBM
+[^oÍe[uðQÆ·é.
+ */
+#define VALID_INTNO( intno )	\
+ 				( cfg_int_table[( intno )].intpri > 0 )
+#define VALID_INTNO_DISINT( intno )	VALID_INTNO( intno )
+#define VALID_INTNO_CFGINT( intno )	VALID_INTNO( intno )
+
+/* cre_intÅLøÈÝÔÌwè  */
+#define VALID_INTNO_CREINT          VALID_INTNO_CFGINT((intno))
+
+/* cre_isrÅLøÈÝÔÌwè  */
+#define	VALID_INTNO_CREISR(intno)	VALID_INTNO_CFGINT((intno))
+
+
+/*
+ *  Ý§äWX^ÖAÌè`
+ */
+#define	IRQ_POSEDGE			( 0x08U )
+#define	IRQ_NEGEDGE			( 0x04U )
+#define	IRQ_BOTHEDGE		( 0x0CU )
+#define	IRQ_LOWLEVEL		( 0x00U )
+
+
+/*
+ *  CPUbNóÔÖÌÚs
+ *
+ *  IPMin[hEFAÌÝDæx}XNjðCsaved_iipmÉÛ¶µCJ[
+ *  lÇOÌàÌð­·×ÄÌÝvð}XN·éliTIPM_LOCKj
+ *  ÉÝè·éDÜ½Clock_flagðTRUEÉ·éD
+ *
+ *  IPMªCÅ©çTIPM_LOCKÆ¯¶©»êæè¢êÉÍC»êð
+ *  saved_iipmÉÛ¶·éÌÝÅCTIPM_LOCKÉÍÝèµÈ¢D±êÍCf
+ *  ãÌÝDæx}XNªCTIPM_LOCKÆ¯¶©»êæè¢xÉÝè
+ *  ³êÄ¢éóÔÉ ½éD
+ *
+ *  ±ÌÖÍCCPUbNóÔilock_flagªTRUEÌóÔjÅÄÎêé±ÆÍ
+ *  È¢àÌÆzèµÄ¢éD
+ */
+Inline void
+x_lock_cpu( void )
+{
+#if TIPM_LOCK == -15
+	disint();
+#else	/* TIPM_LOCK == -15	*/
+	uint32_t	ipl;
+
+	/*
+	 *  current_ipl()ÌÔèlð¼Úsaved_iplÉÛ¶¹¸CêÏipl
+	 *  ðp¢Ä¢éÌÍCcurrent_ipl()ðÄñ¾¼ãÉÝª­¶µC
+	 *  N®³ê½ÝÅsaved_iplªÏX³êéÂ\«ª é½ßÅ
+	 *   éD
+	 */
+	ipl = current_ipl();
+	if( IPL_LOCK > ipl ){
+		set_ipl( IPL_LOCK );
+	}
+
+	saved_ipl = ipl;
+	lock_flag = true;
+#endif	/* TIPM_LOCK == -15	*/
+}
+
+#define t_lock_cpu()	x_lock_cpu()
+#define i_lock_cpu()	x_lock_cpu()
+
+
+/*
+ *  CPUbNóÔÌð
+ *
+ *  lock_flagðFALSEÉµCIPMin[hEFAÌÝDæx}XNjðC
+ *  saved_iipmÉÛ¶µ½lÉß·D
+ *
+ *  ±ÌÖÍCCPUbNóÔilock_flagªtrueÌóÔjÅÌÝÄÎêéà
+ *  ÌÆzèµÄ¢éD
+ */
+Inline void
+x_unlock_cpu( void )
+{
+#if TIPM_LOCK == -15
+	enaint();
+#else	/* TIPM_LOCK == -15	*/
+	lock_flag = false;
+	set_ipl( saved_ipl );
+#endif	/* TIPM_LOCK == -15	*/
+}
+
+#define t_unlock_cpu()	x_unlock_cpu()
+#define i_unlock_cpu()	x_unlock_cpu()
+
+
+/*
+ *  CPUbNóÔÌQÆ
+ */
+Inline bool_t
+x_sense_lock( void )
+{
+#if TIPM_LOCK == -15
+	return (( bool_t )(( current_psw() & PSW_I_MASK) == 0 ));
+#else	/* TIPM_LOCK == -15	*/
+	return lock_flag;
+#endif	/* TIPM_LOCK == -15	*/
+}
+
+#define t_sense_lock()	x_sense_lock()
+#define i_sense_lock()	x_sense_lock()
+
+
+/*
+ * ifãÌjÝDæx}XNÌÝè
+ *
+ *  CPUbNtOªNA³êÄ¢éÍCn[hEFAÌÝDæx}
+ *  XNðÝè·éDCPUbNtOªZbg³êÄ¢éÍCsaved_iipm
+ *  ðÝèµC³çÉCn[hEFAÌÝDæx}XNðCÝèµæ¤Æ
+ *  µ½ifãÌjÝDæx}XNÆTIPM_LOCKÌ¢ûÉÝè·éD
+ */
+Inline void
+x_set_ipm( PRI intpri )
+{
+	uint32_t	ipl = IPM_TO_IPL( intpri );
+#if TIPM_LOCK == -15
+	set_ipl(ipl);
+#else	/* TIPM_LOCK == -15	*/
+	if( !lock_flag ){
+		set_ipl(ipl);
+	}
+	else {
+		saved_ipl = ipl;
+		set_ipl(ipl > IPL_LOCK ? ipl : IPL_LOCK);
+    }
+#endif	/* TIPM_LOCK == -15	*/
+}
+
+#define t_set_ipm( intpri )	x_set_ipm( intpri )
+#define i_set_ipm( intpri )	x_set_ipm( intpri )
+
+
+/*
+ * ifãÌjÝDæx}XNÌQÆ
+ *
+ *  CPUbNtOªNA³êÄ¢éÍn[hEFAÌÝDæx}
+ *  XNðCZbg³êÄ¢éÍsaved_iipmðQÆ·éD
+ */
+Inline PRI
+x_get_ipm( void )
+{
+	uint32_t	ipl;
+#if TIPM_LOCK == -15
+	ipl = current_ipl();
+#else	/* TIPM_LOCK == -15	*/
+	if (!lock_flag) {
+		ipl = current_ipl();
+	}
+	else {
+		ipl = saved_ipl;
+	}
+#endif	/* TIPM_LOCK == -15	*/
+	return IPL_TO_IPM( ipl );
+}
+
+#define t_get_ipm()		x_get_ipm()
+#define i_get_ipm()		x_get_ipm()
+
+
+/*
+ *  ÝvÖ~tOÌZbg
+ *
+ *  Ý®«ªÝè³êÄ¢È¢ÝvCÉÎµÄÝvÖ~
+ *  tOðZbgµæ¤Æµ½êÉÍCFALSEðÔ·D
+ */
+Inline bool_t
+x_disable_int( INTNO intno )
+{
+	/*
+	 *  xè`ª0Å éêÍCFG_INT³êÄ¢È¢
+	 */
+	if( cfg_int_table[intno].intpri == 0 ){
+		return ( false );
+	}
+
+	*ier_reg_addr[intno].addr &= ( ~ier_reg_addr[intno].offset );
+
+	return ( true );
+}
+
+#define t_disable_int( intno )	x_disable_int( intno )
+#define i_disable_int( intno )	x_disable_int( intno )
+
+
+/*
+ *  ÝvÖ~tOÌNA
+ *
+ *  Ý®«ªÝè³êÄ¢È¢ÝvCÉÎµÄÝvÖ~
+ *  tOðNAµæ¤Æµ½êÉÍCFALSEðÔ·D
+ */
+Inline bool_t
+x_enable_int( INTNO intno )
+{
+	/*
+	 *  xè`ª0Å éêÍCFG_INT³êÄ¢È¢
+	 */
+	if( cfg_int_table[intno].intpri == 0 ){
+		return ( false );
+	}
+
+	*ier_reg_addr[intno].addr |= ier_reg_addr[intno].offset;
+
+	return ( true );
+}
+
+#define t_enable_int( intno )	x_enable_int( intno )
+#define i_enable_int( intno )	x_enable_int( intno )
+
+
+/*
+ *  ÝvÌNA
+ */
+Inline void
+x_clear_int( INTNO intno )
+{
+	*IR_REG(intno) = 0U;
+}
+
+#define t_clear_int( intno )	x_clear_int( intno )
+#define i_clear_int( intno )	x_clear_int( intno )
+
+
+/*
+ *  ÝvÌ`FbN
+ */
+Inline bool_t
+x_probe_int( INTNO intno )
+{
+	/*
+	 *  ÝvWX^Í0 or 1Åµ©È¢½ß,
+	 *  »ÌÜÜÌlðÔ·.
+	 */
+	return ( *IR_REG(intno) );
+}
+
+#define t_probe_int( intno )	x_probe_int( intno )
+#define i_probe_int( intno )	x_probe_int( intno )
+
+
+/*
+ *  ÝvCÌ®«ÌÝè
+ */
+extern void	x_config_int( INTNO intno, ATR intatr, PRI intpri );
+
+
+/*
+ *  ÝnhÌüûÅKvÈIRCì
+ *
+ */
+Inline void
+i_begin_int( INTNO intno )
+{
+	volatile uint8_t	reg;
+
+	/*
+	 *  xoÌÝÉÎµÄÍÝXe[^X
+	 *  tOðNA·é.
+	 */
+	if( ( cfg_int_table[intno].intatr & TA_LOWLEVEL ) > 0 ){
+		if( *IR_REG(intno) > 0U ){
+			/*
+			 *  OÝÌê, IRQ[qªHighÉßÁÄ¢é
+			 *  ±ÆðmF·é|ªLÚ³êÄ¢éª, Èª·é.
+			 */
+		//	*ir_reg_addr[intno] = 0U;
+
+			/*
+			 *  n[hEFA}j
+AÉ0ÉÈÁ½±Æð
+			 *  mF·é|ªLÚ é½ß, WX^lðÇÝo·.
+			 */
+		//	reg = *ir_reg_addr[intno];
+		}
+	}
+}
+
+
+/*
+ *  ÝnhÌoûÅKvÈIRCì
+ *
+ */
+Inline void
+i_end_int( INTNO intno )
+{
+	/* ÁÉs¤×«ÍÈ¢ */
+}
+
+
+/*
+ *  ÅDæÊ^XNÖÌfBXpb`iprc_support.a30j
+ *
+ *  dispatchÍC^XNReLXg©çÄÑo³ê½T[rXR[©
+ *  çÄÑo·×«àÌÅC^XNReLXgECPUbNóÔEfBXpb
+ *  `ÂóÔEifãÌjÝDæx}XNSðóÔÅÄÑo³È
+ *  ¯êÎÈçÈ¢D
+ */
+extern void	dispatch( void );
+
+/*
+ *  fBXpb`Ì®ìJniprc_support.a30j
+ *
+ *  start_dispatchÍCJ[lN®ÉÄÑo·×«àÌÅC·×ÄÌ
+ *  ÝðÖ~µ½óÔiSÝbNóÔÆ¯ÌóÔjÅÄÑo³È¯êÎ
+ *  ÈçÈ¢D
+ */
+extern void	start_dispatch( void ) NoReturn;
+
+/*
+ *  »ÝÌReLXgðÌÄÄfBXpb`iprc_support.a30j
+ *
+ *  exit_and_dispatchÍCext_tsk©çÄÑo·×«àÌÅC^XNReL
+ *  XgECPUbNóÔEfBXpb`ÂóÔEifãÌjÝDæ
+ *  x}XNSðóÔÅÄÑo³È¯êÎÈçÈ¢D
+ */
+#define _kernel_exit_and_dispatch();	\
+	_exit_and_dispatch();		\
+	ercd = E_SYS;
+
+extern void	_exit_and_dispatch( void ) NoReturn;
+
+/*
+ *  J[lÌI¹ÌÄoµiprc_support.a30j
+ *
+ *  call_exit_kernelÍCJ[lÌI¹ÉÄÑo·×«àÌÅCñ^XN
+ *  ReLXgÉØè·¦ÄCJ[lÌI¹iexit_kerneljðÄÑo
+ *  ·D
+ */
+extern void call_exit_kernel( void ) NoReturn;
+
+/*
+ *  ^XNReLXgÌú»
+ *
+ *  ^XNªx~óÔ©çÀsÅ«éóÔÉÚs·éÉÄÎêéD±Ì_
+ *  ÅX^bNÌæðgÁÄÍÈçÈ¢D
+ *
+ *  activate_contextðCCCÖÅÍÈ­}Nè`ÆµÄ¢éÌÍC
+ *  ±Ì_ÅÍTCBªè`³êÄ¢È¢½ßÅ éD
+ */
+extern void	start_r( void );
+
+#define activate_context( p_tcb )														\
+{																						\
+	{																					\
+																						\
+		/*  X^bN|C^úlÌÝè  */											\
+		( p_tcb )->tskctxb.sp = ( void * )((( uint32_t ) ( p_tcb )->p_tinib->stk ) + 	\
+								( p_tcb )->p_tinib->stksz );							\
+		/* N®ÔnÌÝè */															\
+		( p_tcb )->tskctxb.pc = ( FP ) start_r;											\
+	}																					\
+}
+
+
+/*
+ *  calltexÍgpµÈ¢
+ */
+#define OMIT_CALLTEX
+
+
+/*
+ *  ÝnhÌÝè
+ *
+ *  RX630ÍROMÉÝxN^ðzu·é½ßC{ÖÍóÖÅÀ·éD
+ */
+Inline void
+x_define_inh( INHNO inhno, FP inthdr )
+{
+}
+
+
+/*
+ *  CPUáOnhÌÝè
+ *
+ *  RX630ÍROMÉáOxN^ðzu·é½ßC{ÖÍóÖÅÀ·éD
+ */
+Inline void
+x_define_exc( EXCNO excno, FP exchdr )
+{
+}
+
+
+/*
+ *  Ý/áOnhÌüûÌ¶¬}N
+ *
+ *  ev[gt@CÉæè¶¬·é½ßó}NÆ·éD
+ */
+#define HDR_ENTRY(hdr, intexc_num , tobejmp)
+
+/*
+ *  ÝnhÌüûÌ¶¬}N
+ */
+#define _INT_ENTRY(inhno, inthdr)				_kernel_##inthdr##_##inhno##_entry
+#define INT_ENTRY(inhno, inthdr)				_INT_ENTRY(inhno , inthdr)
+
+#define _INTHDR_ENTRY(inhno, inhno_num ,inthdr)	\
+		extern _kernel_##inthdr##_##inhno##_entry(void);
+#define INTHDR_ENTRY(inhno, inhno_num ,inthdr)	_INTHDR_ENTRY(inhno, inhno_num ,inthdr)
+
+
+/*
+ *  CPUáOnhÌüûÌ¶¬}N
+ */
+#define _EXC_ENTRY(excno , exchdr)					_kernel_##exchdr##_##excno##_entry
+#define EXC_ENTRY(excno , exchdr)					_EXC_ENTRY(excno , exchdr)
+
+#define _EXCHDR_ENTRY(excno , excno_num , exchdr)	\
+		extern _kernel_##exchdr##_##excno##_entry(void);
+#define EXCHDR_ENTRY(excno , excno_num , exchdr)	_EXCHDR_ENTRY(excno , excno_num , exchdr)
+
+
+/*
+ *  CPUáOÌ­¶µ½ÌReLXgÌQÆ
+ *
+ *  CPUáOÌ­¶µ½ÌReLXgªC^XNReLXgÌÉFALSEC
+ *  »¤ÅÈ¢ÉtrueðÔ·D
+ */
+Inline bool_t
+exc_sense_context( void *p_excinf )
+{
+	/* 
+	 *  lXgJE^ª1æèåÈçñ^XNReLXg
+	 */
+	return( intnest > 1U );
+}
+
+
+/*
+ *  CPUáOîñ p_excinf ©ç PSW Ìlðæ¾·é½ßÌItZbgl
+ *  EXCNO + ACC + FPSW + R1`R15 + PC
+ */
+#define EXC_GET_PSW_OFFSET	(4+8+4+60+4)
+
+/*
+ *  CPUáOÌ­¶µ½ÌIPLÌQÆ
+ */
+Inline uint32_t
+exc_get_ipl(void *p_excinf)
+{
+	return((*((uint32_t *)((uintptr_t)p_excinf+EXC_GET_PSW_OFFSET)))
+			& PSW_IPL_MASK);
+}
+
+Inline bool_t
+exc_sense_i(void *p_excinf)
+{
+	return((*(((uint32_t *)((uintptr_t)p_excinf+EXC_GET_PSW_OFFSET)))
+			 & PSW_I_MASK) != 0u);
+}
+
+
+/*
+ *  CPUáOÌ­¶µ½ÌReLXgÆÝÌ}XNóÔÌQÆ
+ *
+ *  CPUáOÌ­¶µ½ÌVXeóÔªCJ[lÀsÅÈ­C^XNR
+ *  eLXgÅ èCSÝbNóÔÅÈ­CCPUbNóÔÅÈ­Ci
+ *  fãÌjÝDæx}XNSðóÔÅ éÉtrueC»¤ÅÈ¢
+ *  ÉFALSEðÔ·iCPUáOªJ[lÇOÌÝÅ­¶µ½ê
+ *  ÉàFALSEðÔ·jD
+ *  
+ *  J[lÀsÅÈ¢¨ (TIPM_LOCK== -15) ItO == 1
+ *                         (else)           IPL < IPL_LOCK
+ *  ^XNReLXgÅ é¨intnest == 0
+ *  SÝbNÅÈ¢¨ ItO == 1
+ *  ÝDæx}XNªSð¨IPL == 0
+ *  
+ *  
+ */
+Inline bool_t
+exc_sense_intmask(void *p_excinf)
+{
+	return((!exc_sense_context(p_excinf))
+			&& exc_sense_i(p_excinf)
+			&& (exc_get_ipl(p_excinf) == IPL_ENAALL));
+}
+
+/*
+ *  CPUáOÌ­¶µ½ÌReLXgÆÝ^CPUbNóÔÌQÆ
+ *
+ *  CPUáOÌ­¶µ½ÌVXeóÔªCJ[lÀsÅÈ­C^XNR
+ *  eLXgÅ èCSÝbNóÔÅÈ­CCPUbNóÔÅÈ¢É
+ *  trueC»¤ÅÈ¢ÉfalseðÔ·iCPUáOªJ[lÇOÌÝ
+ *  Å­¶µ½êÉàfalseðÔ·jD
+ *  
+ *  J[lÀsÅÈ¢¨ (TIPM_LOCK== -15) ItO == 1
+ *                         (else)           IPL < TIPM_LOCK
+ *  ^XNReLXgÅ é¨intnest < 1 
+ *  SÝbNÅÈ¢¨ ItO == 1
+ *  CPUbNóÔÅÈ¢¨(TIPM_LOCK== -15) ItO == 1
+ *                         (else)           IPL < TIPM_LOCK
+ */
+Inline bool_t
+exc_sense_unlock(void *p_excinf)
+{
+#if TIPM_LOCK == -15
+	return((!exc_sense_context(p_excinf))
+			&& exc_sense_i(p_excinf));
+#else
+	return((!exc_sense_context(p_excinf))
+			&& exc_sense_i(p_excinf)
+			&& exc_get_ipl(p_excinf) < IPL_LOCK);
+#endif
+}
+
+Inline void
+idle_loop(void)
+{
+	t_unlock_cpu();
+	t_lock_cpu();
+}
+
+/*
+ *  vZbTË¶Ìú»
+ */
+extern void	prc_initialize( void );
+
+/*
+ *  vZbTË¶ÌI¹
+ */
+extern void	prc_terminate( void );
+
+
+#ifndef OMIT_DEFAULT_INT_HANDLER
+/*
+ *  ¢o^ÌÝª­¶µ½êÉÄÑo³êé
+ */
+void default_int_handler( void );
+#endif /* OMIT_DEFAULT_INT_HANDLER */
+
+#ifndef OMIT_DEFAULT_EXC_HANDLER
+/*
+ *  ¢o^ÌáOª­¶µ½êÉÄÑo³êé
+ */
+void default_exc_handler( void );
+#endif /* OMIT_DEFAULT_EXC_HANDLER */
+
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+#endif /* TOPPERS_PRC_CONFIG_H */
+
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/prc_def.csv
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/prc_def.csv	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/prc_def.csv	(revision 101)
@@ -0,0 +1,8 @@
+TA_LOWLEVEL,TA_LOWLEVEL
+TA_BOTHEDGE,TA_BOTHEDGE
+TA_NEGEDGE,TA_NEGEDGE
+TIPM_LOCK,TIPM_LOCK,signed
+IPL_LOCK,IPL_LOCK
+PSW_I_MASK,PSW_I_MASK
+PSW_IPL_MASK,PSW_IPL_MASK
+EXC_GET_PSW_OFFSET,EXC_GET_PSW_OFFSET
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/prc_insn.h
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/prc_insn.h	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/prc_insn.h	(revision 101)
@@ -0,0 +1,154 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005,2006 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìð©CFree Software Foundation 
+ *  ÉæÁÄö\³êÄ¢é GNU General Public License Ì Version 2 ÉL
+ *  q³êÄ¢éðð½·êÉÀèC{\tgEFAi{\tgEFA
+ *  ðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏEÄzziÈºC
+ *  pÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄC»ÌKpÂ\«à
+ *  ÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌpÉæè¼
+ *  ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		vZbTÌÁê½ßÌCCÖè`iRX630pj
+ */
+
+#ifndef	TOPPERS_PRC_INSN_H
+#define	TOPPERS_PRC_INSN_H
+
+
+static uint32_t current_psw( void );
+static void set_psw( uint32_t psw );
+Inline uint32_t current_ipl( void );
+Inline void set_ipl( uint32_t ipl );
+static void disint( void );
+static void enaint( void );
+static uint16_t rev_endian_uint16( uint16_t data );
+static uint32_t rev_endian_uint32( uint32_t data );
+
+
+/*
+ *  ItO, IPLðæ¾·é½ßÌ}Nè`
+ */
+#define PSW_I_MASK		( 0x00010000UL )
+#define PSW_IPL_MASK	( 0x0F000000UL )
+
+
+/*
+ *  vZbTXe[^XWX^(PSW)Ì»ÝlÌÇoµ
+ */
+#pragma inline_asm	current_psw
+static uint32_t
+current_psw( void )
+{
+	mvfc	psw, r1
+}
+
+
+/*
+ *  vZbTXe[^XWX^(PSW)ÖÝè
+ */
+#pragma inline_asm	set_psw
+static void
+set_psw( uint32_t psw )
+{
+	mvtc	r1, psw
+}
+
+
+/*
+ *  IPLÌ»ÝlÌÇoµ
+ */
+Inline uint32_t
+current_ipl( void )
+{
+	return ( uint32_t )( current_psw() & PSW_IPL_MASK );
+}
+
+
+/*
+ *  IPLÖÝè
+ */
+Inline void
+set_ipl( uint32_t ipl )
+{
+	set_psw( ( current_psw() & ( ~PSW_IPL_MASK ) ) | ipl );
+}
+
+
+/*
+ *  NMIð­·×ÄÌÝÌÖ~
+ */
+#pragma inline_asm	disint
+static void
+disint( void )
+{
+	clrpsw	i
+}
+
+
+/*
+ *  NMIð­·×ÄÌÝÌÂ
+ */
+#pragma inline_asm	enaint
+static void
+enaint( void )
+{
+	setpsw	i
+}
+
+
+/*
+ *  GfBAÏ· 16bit
+ */
+#pragma inline_asm	rev_endian_uint16
+static uint16_t
+rev_endian_uint16( uint16_t data )
+{
+	revw	r1, r1
+}
+
+/*
+ *  GfBAÏ· 32bit
+ */
+#pragma inline_asm	rev_endian_uint32
+static uint32_t
+rev_endian_uint32( uint32_t data )
+{
+	revl	r1, r1
+}
+
+
+#endif /* TOPPERS_PRC_INSN_H */
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/prc_kernel.h
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/prc_kernel.h	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/prc_kernel.h	(revision 101)
@@ -0,0 +1,103 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		kernel.hÌvZbTË¶iRX630pj
+ *
+ *  ±ÌCN[ht@CÍCtarget_kernel.hiÜ½ÍC»±©çCN
+ *  [h³êét@CjÌÝ©çCN[h³êéD¼Ìt@C©ç
+ *  ¼ÚCN[hµÄÍÈçÈ¢D
+ */
+
+#ifndef TOPPERS_PRC_KERNEL_H
+#define TOPPERS_PRC_KERNEL_H
+
+/*
+ *  J[l{ÌðRpC·é½ßÌ}Nè`
+ *
+ *  {Â«ÅÍ1Öð1IuWFNgt@CÉRpC·é±ÆªÅ«È¢½ßC
+ *  ALLFUNC}Nðè`·éD
+ */
+#define ALLFUNC
+
+
+/*
+ *  T|[g·é@\Ìè`
+ */
+#define TOPPERS_TARGET_SUPPORT_DIS_INT		/* dis_intðT|[g·é */
+#define TOPPERS_TARGET_SUPPORT_ENA_INT		/* ena_intðT|[g·é */
+
+
+/*
+ *  J[lÇÌÝDæxÌÍÍ
+ *
+ *  TMIN_INTPRIÌè`ðÏX·é±ÆÅCÇÌxæèà¢ÝDæx
+ *  ðÂàÌðJ[lÇOÌÝÆ·é©ðÏXÅ«éD
+ *
+ *  TMIN_INTPRIÉÝèÅ«élÍC-15`-1ÌÍÍÅ éDá¦ÎTMIN_INTPRI
+ *  ð-14ÉÝè·éÆCNMIÉÁ¦Äx7ÌÝªJ[lÇOÆÈéD
+ *  TMIN_INTPRIð-15ÉÝè·éÆCNMIÈOÉJ[lÇOÌÝð
+ *  Ý¯È¢±ÆÉÈéD
+ */
+#ifndef TMIN_INTPRI
+#define TMIN_INTPRI		( -15 )		/* ÝDæxÌÅ¬liÅlj*/
+#endif /* TMIN_INTPRI */
+#define TMAX_INTPRI		( -1 )		/* ÝDæxÌÅåliÅálj */
+
+
+/*
+ *  Ý®«Ìè`
+ */
+#define	TA_POSEDGE		TA_EDGE			/* |WeBuGbWgK */
+#define	TA_NEGEDGE		UINT_C( 0x04 )	/* lKeBuGbWgK */
+#define	TA_BOTHEDGE		UINT_C( 0x08 )	/* ¼GbWgK */
+
+#define	TA_LOWLEVEL		UINT_C( 0x10 )	/* Lx */
+
+
+/*
+ *  ftHgÌÝ/áOnhÌL³
+ */
+/*#define	OMIT_DEFAULT_INT_HANDLER*/
+/*#define	OMIT_DEFAULT_EXC_HANDLER*/
+
+
+#endif /* TOPPERS_PRC_KERNEL_H */
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/prc_rename.def
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/prc_rename.def	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/prc_rename.def	(revision 101)
@@ -0,0 +1,27 @@
+# prc_config.c
+intnest
+lock_flag
+saved_ipl
+prc_initialize
+prc_terminate
+x_config_int
+default_int_handler
+default_exc_handler
+
+# prc_support.src
+dispatch
+start_dispatch
+exit_and_dispatch
+call_exit_kernel
+start_r
+interrupt
+exception
+
+# rx610_config.c
+ipr_reg_addr
+ier_reg_addr
+ir_reg_addr
+irqcr_reg_addr
+
+# kernel_cfg.c
+cfg_int_table
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/prc_rename.h
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/prc_rename.h	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/prc_rename.h	(revision 101)
@@ -0,0 +1,84 @@
+/* This file is generated from prc_rename.def by genrename. */
+
+#ifndef TOPPERS_PRC_RENAME_H
+#define TOPPERS_PRC_RENAME_H
+
+/*
+ *  prc_config.c
+ */
+#define intnest						_kernel_intnest
+#define lock_flag					_kernel_lock_flag
+#define saved_ipl					_kernel_saved_ipl
+#define prc_initialize				_kernel_prc_initialize
+#define prc_terminate				_kernel_prc_terminate
+#define x_config_int				_kernel_x_config_int
+#define default_int_handler			_kernel_default_int_handler
+#define default_exc_handler			_kernel_default_exc_handler
+
+/*
+ *  prc_support.src
+ */
+#define dispatch					_kernel_dispatch
+#define start_dispatch				_kernel_start_dispatch
+#define exit_and_dispatch			_kernel_exit_and_dispatch
+#define call_exit_kernel			_kernel_call_exit_kernel
+#define start_r						_kernel_start_r
+#define interrupt					_kernel_interrupt
+#define exception					_kernel_exception
+
+/*
+ *  rx630_config.c
+ */
+#define ipr_reg_addr				_kernel_ipr_reg_addr
+#define ier_reg_addr				_kernel_ier_reg_addr
+#define ir_reg_addr					_kernel_ir_reg_addr
+#define irqcr_reg_addr				_kernel_irqcr_reg_addr
+
+/*
+ *  kernel_cfg.c
+ */
+#define cfg_int_table				_kernel_cfg_int_table
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  prc_config.c
+ */
+#define _intnest					__kernel_intnest
+#define _lock_flag					__kernel_lock_flag
+#define _saved_ipl					__kernel_saved_ipl
+#define _prc_initialize				__kernel_prc_initialize
+#define _prc_terminate				__kernel_prc_terminate
+#define _x_config_int				__kernel_x_config_int
+#define _default_int_handler		__kernel_default_int_handler
+#define _default_exc_handler		__kernel_default_exc_handler
+
+/*
+ *  prc_support.src
+ */
+#define _dispatch					__kernel_dispatch
+#define _start_dispatch				__kernel_start_dispatch
+#define _exit_and_dispatch			__kernel_exit_and_dispatch
+#define _call_exit_kernel			__kernel_call_exit_kernel
+#define _start_r					__kernel_start_r
+#define _interrupt					__kernel_interrupt
+#define _exception					__kernel_exception
+
+
+/*
+ *  rx630_config.c
+ */
+#define _ipr_reg_addr				__kernel_ipr_reg_addr
+#define _ier_reg_addr				__kernel_ier_reg_addr
+#define _ir_reg_addr				__kernel_ir_reg_addr
+#define _irqcr_reg_addr				__kernel_irqcr_reg_addr
+
+/*
+ *  kernel_cfg.c
+ */
+#define _cfg_int_table				__kernel_cfg_int_table
+
+#endif /* TOPPERS_LABEL_ASM */
+
+
+#endif /* TOPPERS_PRC_RENAME_H */
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/prc_sil.h
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/prc_sil.h	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/prc_sil.h	(revision 101)
@@ -0,0 +1,115 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		sil.hÌvZbTË¶iRX630pj
+ */
+
+#ifndef TOPPERS_PRC_SIL_H
+#define TOPPERS_PRC_SIL_H
+
+
+#ifndef TOPPERS_MACRO_ONLY
+#include "prc_insn.h"
+
+
+/*
+ *  SÝÖ~
+ */
+Inline uint32_t
+TOPPERS_disint( void )
+{
+	volatile uint32_t	TOPPERS_psw;
+
+	TOPPERS_psw = current_psw();
+	disint();
+
+	return( TOPPERS_psw );
+}
+
+
+/*
+ *  SÝÂ
+ */
+Inline void
+TOPPERS_enaint( uint32_t TOPPERS_psw )
+{
+	if( TOPPERS_psw & PSW_I_MASK ){
+		enaint();
+	}
+}
+
+
+/*
+ *  SÝbNóÔÌ§ä
+ */
+#define SIL_PRE_LOC		uint32_t TOPPERS_i_psw;
+#define SIL_LOC_INT()	( ( void )( TOPPERS_i_psw = TOPPERS_disint() ) )
+#define SIL_UNL_INT()	( TOPPERS_enaint( TOPPERS_i_psw ) )
+
+
+/*
+ *  GfBAÌ½]
+ *
+ *  {J­Â«ÅÍGfBAÏ·½ßª¶Ý·é½ß,
+ *  A[LeN`Ë¶ÉÄ}Nðã«·é.
+ */
+#define TOPPERS_SIL_REV_ENDIAN_UINT16( data )	\
+ 								rev_endian_uint16( data )
+#define TOPPERS_SIL_REV_ENDIAN_UINT32( data )	\
+ 								rev_endian_uint32( data )
+
+
+/*
+ *  ÷­ÔÒ¿
+ */
+extern void sil_dly_nse( ulong_t dlytim );
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+
+/*
+ *  vZbTÌGfBA
+ */
+#define SIL_ENDIAN_LITTLE			/* gGfBA */
+
+
+#endif /* TOPPERS_PRC_SIL_H */
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/prc_stddef.h
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/prc_stddef.h	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/prc_stddef.h	(revision 101)
@@ -0,0 +1,58 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		t_stddef.hÌvZbTË¶iRX630pj
+ *
+ *  ±ÌCN[ht@CÍCtarget_stddef.hiÜ½ÍC»±©çCN
+ *  [h³êét@CjÌÝ©çCN[h³êéD¼Ìt@C©ç
+ *  ¼ÚCN[hµÄÍÈçÈ¢D
+ */
+
+#ifndef TOPPERS_PRC_STDDEF_H
+#define TOPPERS_PRC_STDDEF_H
+
+/*
+ *  ^[Qbgð¯Ê·é½ßÌ}NÌè`
+ */
+#define TOPPERS_RX630				/* vZbTªÌ */
+
+#endif /* TOPPERS_PRC_STDDEF_H */
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/prc_support.src
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/prc_support.src	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/prc_support.src	(revision 101)
@@ -0,0 +1,568 @@
+; 
+;   TOPPERS/SSP Kernel
+;       Smallest Set Profile Kernel
+;  
+;   Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+;                               Toyohashi Univ. of Technology, JAPAN
+;   Copyright (C) 2007      by Embedded and Real-Time Systems Laboratory
+;               Graduate School of Information Science, Nagoya Univ., JAPAN
+;   Copyright (C) 2010 by Witz Corporation, JAPAN
+;   Copyright (C) 2013      by Mitsuhiro Matsuura
+;
+;   ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+;   Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+;   ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+;   (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+;        \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+;       XR[hÉÜÜêÄ¢é±ÆD
+;   (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+;       pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+;       Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+;       Ì³ÛØKèðfÚ·é±ÆD
+;   (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+;       pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+;       ÆD
+;     (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+;         ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+;     (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+;         ñ·é±ÆD
+;   (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+;       Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+;       Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+;       RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+;       ÆÓ·é±ÆD
+;  
+;   {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+;   æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+;   ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+;   AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+;   ÌÓCðíÈ¢D
+;  
+;
+
+;
+;  vZbTË¶W
+[ AZu¾êiRX630pj
+;
+
+;
+;  fBXpb`¨æÑÝ(CPUáO)oüèûÌ[:
+;	®ì[hðÈºÌæ¤Éè`·é.
+;		fBXpb`[h:
+;			CPUbNóÔ, ÝDæx}XNSðóÔ,
+;			^XNReLXg(intnest = 0), ^XNX^bN
+;		Ý(CPUáO)[h
+;			SÝbNóÔ(PSWWX^Irbg = 0),
+;			ÝDæx}XNSðÅÈ¢óÔ(IPL != 0)
+;			ÝReLXg(intnest != 0), ÝX^bN
+;
+;	J[lÇOÝÌT|[gL³Æ, CPUbNóÔ, ÝDæx
+;	}XNSðóÔÌÖWÍÈºÌÊèÅ é.
+;		J[lÇOÝ¢T|[g:
+;			CPUbNóÔ(PSWWX^Irbg = 0)
+;			ÝDæx}XNSðóÔ(IPL = 0)
+;		J[lÇOÝT|[g:
+;			CPUbNóÔ
+;				(PSWWX^Irbg = 0, IPL = IPL_LOCK, lock_flag = true)
+;			ÝDæx}XNSðóÔ(saved_ipl = 0)
+;
+;	e\¢Ì|C^ðÈºÌæ¤ÉeWX^ÉATC·é.
+;		r15 = p_runtsk	½¾µfBXpb`ÌeoûÅÍ³ø
+;		r14 = *p_runtsk	dispatcher ÌÅÍ p_runtsk mèÉÄæ¾·é
+;	eüèû©çÅÉÏANZX·éÆ«ÉãLWX^ÉÛ¶·é.
+;
+;	\¢ÌACgÖÌÎ
+;		\¢ÌACgª4Byte(ApbN)Ìê:
+;			êÊIÈWX^ÎAhbVOªÂ\
+;				á:	mov.l	#__kernel_p_runtsk, r15
+;					mov.l  	r0, TCB_sp[r15]
+;		\¢ÌACgª4ByteÅÍÈ¢(pbN)Ìê:
+;			mov.lÌæ¤ÉOTCYwèÌêAÎlÍ4Ì{ÌÝLø
+;			±Ì½ß, êxÎÛAhXðßÄ©çANZX·éKvª é
+;				á:	mov.l	#__kernel_p_runtsk, r15
+;					add		#TCB_sp, r15, r5
+;					mov.l  	r0, [r5]
+;		eItZbglð»fµ, ðAZuÉæèR[hðØèÖ¦é
+;
+
+;
+;  eíEQUè`(Ht@CÌ#defineè`)
+;
+	.include	asm_config.inc
+
+	.glb	__kernel_istkpt
+	
+	.glb	__kernel_reqflg
+
+	.glb	__kernel_search_schedtsk
+	.glb	__kernel_run_task
+	.glb	__kernel_dispatcher
+	.glb	_kernel_interrupt
+	.glb	_kernel_exception
+	.glb	__kernel_intnest
+	.glb	__kernel_call_exit_kernel
+	.glb	__kernel_start_dispatch
+
+	.glb	__kernel_exit_kernel
+
+.if	TIPM_LOCK != -15
+	.glb	__kernel_lock_flag
+	.glb	__kernel_saved_ipl
+.endif
+
+	.glb	_sil_dly_nse
+
+.if LOG_INH_ENTER_ENABLE == 1
+	.glb	_kernel_log_inh_enter
+.endif	; LOG_INH_ENTER_ENABLE == 1
+.if LOG_INH_LEAVE_ENABLE == 1
+	.glb	_kernel_log_inh_leave
+.endif	; LOG_INH_LEAVE_ENABLE == 1
+.if LOG_EXC_ENTER_ENABLE == 1
+	.glb	_kernel_log_exc_enter
+.endif	; LOG_EXC_ENTER_ENABLE == 1
+.if LOG_EXC_LEAVE_ENABLE == 1
+	.glb	_kernel_log_exc_leave
+.endif	; LOG_EXC_LEAVE_ENABLE == 1
+.if LOG_DSP_ENTER_ENABLE == 1
+	.glb	_kernel_log_dsp_enter
+.endif	; LOG_DSP_ENTER_ENABLE == 1
+.if LOG_DSP_LEAVE_ENABLE == 1
+	.glb	_kernel_log_dsp_leave
+.endif	; LOG_DSP_LEAVE_ENABLE == 1
+
+	.section	P, CODE
+
+;
+;  J[lN®©çÌ^XNfBXpb`üû
+;
+;  ±Ì[`ÍCJ[lN®ÉC·×ÄÌÝðÖ~µ½óÔ
+; iÝbNóÔÆ¯jÅÄÑo³êéDÜ½CÝ[hiñ
+;  ^XNReLXgÆ¯jÅÄÑo³êé±ÆðzèµÄ¢éD
+;
+;  ÄÑoµð:
+;	EÝ(CPUáO)[h(t@Cwb_QÆ)
+;
+;  ±±ÅÍ, fBXpb`[hÉÏX·é.
+;
+__kernel_start_dispatch:
+	mov.l	#__kernel_intnest, r5
+	mov.w	#0, [r5]					; ^XNReLXgÉØ·¦
+.if	TIPM_LOCK != -15
+	mvtc	#(IPL_LOCK | 00010000H), psw	; SÝbNðóÔ
+										; ÝDæx}XNSðÅÈ¢óÔ
+.endif
+	bra		__kernel_dispatcher
+
+
+;
+; J[lÌI¹ÌÄoµ
+;
+; [hÆX^bNðñ^XNReLXgpÉØèÖ¦D
+;
+	.glb	__kernel_call_exit_kernel
+__kernel_call_exit_kernel:
+.if	TIPM_LOCK != -15
+	clrpsw	i							; SÝÖ~
+	mov.l	#__kernel_lock_flag, r5		; CPUbNðóÔÖ
+	mov.l	#0, [r5]
+.endif
+	mov.l	#__kernel_istkpt, r5
+	mov.l	[r5], r0					; ÝpÌX^bNÖØÖ¦
+	mov.l	#__kernel_intnest, r5
+	mov.w	#1, [r5]					; ñ^XNReLXgÉØ·¦
+	bsr		__kernel_exit_kernel
+	bra		__kernel_call_exit_kernel
+
+
+;
+;  Ý(CPUáO)©çÌ^XNfBXpb`üû
+;
+;	Äoµð:
+;	ESÝbNóÔ(PSWWX^Irbg = 0)
+;	EÝDæx}XNSðÅÈ¢óÔ(IPL != 0)
+;	E^XNReLXg(intnest=0)
+;	EgpX^bNÍ^XNX^bN
+;	Ereqflg = true
+;
+;  ±±ÅÍ, fBXpb`[hÉÏXµ, reqflgðOFFÉµÄ©ç, 
+;  xfBXpb`ÌL³ð»f·é.
+;
+
+;
+;  ret_intæªÅX^bNÉÏÜêÄ¢éPSWWX^ÖÌItZbg
+;  ACC + FPSW + R14--R15 + R1--R5 + PC
+;
+	RET_INT_GET_PSW_OFFSET	.equ	(8+4+28+4)
+
+ret_int:
+.if	TIPM_LOCK == -15
+	mov.l	RET_INT_GET_PSW_OFFSET[r0], r5	; Ý/CPUáO­¶OÌIPLlæ¾
+	and		#PSW_IPL_MASK, r5
+	mvtc	r5, psw						; SÝbN(CPUbN)óÔ
+										; Ý/CPUáO­¶OÌÝDæx
+.else
+	mov.l	#__kernel_lock_flag, r5		; CPUbNóÔÖ
+	mov.l	#1, [r5]
+	mov.l	RET_INT_GET_PSW_OFFSET[r0], r5	; Ý/CPUáO­¶OÌIPLlæ¾
+	and		#PSW_IPL_MASK, r5
+	mov.l	#__kernel_saved_ipl, r4
+	mov.l	r5, [r4]
+	mvtc	#(IPL_LOCK | PSW_I_MASK), psw	; SÝbNðóÔ
+										; ÝDæx}XNSðÅÈ¢óÔ
+.endif
+	mov.l	#__kernel_reqflg, r5
+	mov.l	#0, [r5]					; reqflg <--- FALSE
+	bsr		__kernel_search_schedtsk	; ^XNðÀs
+	bsr		__kernel_run_task			; search_schedtskÌÔèl(R1)ª»ÌÜÜrun_taskÌøÆÈé
+
+;
+;  Ý(CPUáO)ÖÌ^XNfBXpb`oû
+;
+;  ÄÑoµð:
+;	EfBXpb`[h(t@Cwb_QÆ)
+;
+;  ±±ÅÍ, ^XNáOnhÄoµÆ, Ý(CPUáO)[hÖÌ
+;  ÏXÆ, ReLXgÌAðs¢, Ý(CUPáO)­¶³Ößé.
+;
+ret_int_r_rte:
+.if	TIPM_LOCK != -15
+	clrpsw	i							; SÝÖ~
+	mov.l	#__kernel_lock_flag, r5		; CPUbNðóÔÖ
+	mov.l	#0, [r5]
+.endif
+	popm	r4-r5						; AL
+[^A
+	mvtaclo	r5							; ACCÅºÊ16bitÍ0ÅA
+	mvtachi	r4
+	popc	fpsw						; FPUXe[^XWX^A
+	popm	r14-r15						; WX^A
+	popm	r1-r5
+	rte									; ÝOÌÉßé
+
+
+;
+;  ÝÌoüû(AZu¾êLqª)
+;
+;  Äoµð:
+;  EÝ­¶ÌH/WÉæè, PSWWX^ÌIrbg=0, IPLÍót¯
+;    ½ÝÌIPL.
+;  EX^bNÍ½dèÝÈçÝX^bN, »¤ÅÈ¯êÎ
+;    ^XNX^bN
+;  EÝ­¶ÌH/WÉæè,X^bNÉÝ©çÌAPCÆPSWª
+;    Û¶³êÄ¢é.
+;  ExN^e[uÉo^³ê½ÂÊÌüèûÉæè, X^bNÉ
+;    XNb`WX^(R1-R5)ªÛ¶³êÄ¢é.
+;
+;  ø:
+;  Er1:ÝvöÔ
+;  Er2:ÝnhÌAhX
+;
+;  WX^ªX^bNãÉÇÌæ¤ÉÛ¶³êÄ¢é©ðÈºÉ¦·.
+;  ±Ì}ÅÍãªáÊ, ºªÊÌAhXÅ, X^bNÍº©ç
+;  ãûüÉü©ÁÄÏÝã°çêéàÌÆ·é.
+;
+;	-------------------------
+;	|       ACC-HI(4byte)   |
+;	-------------------------(SP + 0)
+;	|       ACC-LO(4byte)   |
+;	-------------------------(SP + 4)
+;	|       FPSW(4byte)     |
+;	-------------------------(SP + 8)
+;	|       R14(4byte)      |
+;	-------------------------(SP + 12)
+;	|       R15(4byte)      |
+;	-------------------------(SP + 16)
+;	|       R1(4byte)       |
+;	-------------------------(SP + 20)
+;	|       R2(4byte)       |
+;	-------------------------(SP + 24)
+;	|       R3(4byte)       |
+;	-------------------------(SP + 28)
+;	|       R4(4byte)       |
+;	-------------------------(SP + 32)
+;	|       R5(4byte)       |
+;	-------------------------(SP + 36)
+;	|       PC(4byte)       |
+;	-------------------------(SP + 40)
+;	|       PSW(4byte)      |
+;	-------------------------(SP + 44)
+;
+;  ±±ÅÍ, Ý[hÉÏXµÄnhðÀs·é.
+;
+;  nh©ç^[µ½ãÍ, ½dÝÅÈ­, ©Â reqflg ª
+;  TRUE ÉÈÁ½ÉCret_int Öªò(xfBXpb`)·éD
+;
+;  ½dÝ©Ç¤©ÍÝlXgJE^ÌlÅ»è·é.
+;  intnest != 0 ÈçÎ½dÝÅ éÆ»è·é.
+;
+;  reqflg ÍCPUbNóÔÅ`FbN·é. »¤ÅÈ¢ÆC
+;  reqflg `FbNãÉN®³ê½ÝnhàÅ
+;  fBXpb`ªv³ê½êÉCfBXpb`³êÈ¢.
+;
+_kernel_interrupt:
+	pushm	r14-r15						; XNb`WX^ðÞð
+	pushc	fpsw						; FPUXe[^XWX^Þð
+	mvfacmi	r5
+	shll	#16, r5						; ACCÅºÊ16bitÍ0Æ·é
+	mvfachi	r4
+	pushm	r4-r5						; AL
+[^Þð
+	mov.l	#__kernel_intnest, r5
+	mov.w	[r5], r4
+	add		#1, r4						; lXgñðCNg
+	mov.w	r4, [r5]
+	setpsw	i							; ÝÂ(CPUbNðóÔ)
+
+.if	LOG_INH_LEAVE == 1
+	push.l	r1							; Og[XÌøðÛ
+.endif
+
+.if	LOG_INH_ENTER == 1
+	push.l	r2
+	bsr		_kernel_log_inh_enter		; Og[XÖÌÄoµ
+							; øÌÝvöÔÍùÉr1ÉüÁÄ¢é
+	pop		r2
+.endif
+
+	jsr  	r2							; C[`ÄÑoµ
+
+.if	LOG_INH_LEAVE == 1
+	pop		r1							; øÉÝvöÔðÝè
+	bsr		_kernel_log_inh_leave		; Og[XÖÌÄoµ
+.endif
+
+	clrpsw	i							; ÝÖ~(CPUbNóÔ)
+	mov.l	#__kernel_intnest, r5
+	mov.w	[r5], r4
+	sub		#1, r4						; lXgñðfNg
+	mov.w	r4, [r5]
+	cmp		#0, r4						; ½dèÝ©Ç¤©
+	bnz		interrupt_return			; ½dèÝÈç^[
+	; iÌÝ
+	mov.l	#__kernel_reqflg, r5		; fBXpb`vªÈ¢©?
+	mov.l	[r5], r5
+	cmp		#1, r5
+	bz		ret_int						;  êÎ ret_int ÖWv
+interrupt_return:
+	popm	r4-r5						; AL
+[^A
+	mvtaclo	r5							; ACCÅºÊ16bitÍ0ÅA
+	mvtachi	r4
+	popc	fpsw						; FPUXe[^XWX^A
+	popm	r14-r15						; WX^A
+	popm	r1-r5
+	rte									; ÝOÌÉßé
+
+
+;
+;  CPUáOÌoüû(AZu¾êLqª)
+;
+;  Äoµð:
+;  ECPUáO­¶ÌH/WÉæè, PSWWX^ÌIrbg=0, IPL=0.
+;  EX^bNÍ½dèÝÈçÝX^bN, »¤ÅÈ¯êÎ
+;    ^XNX^bN
+;  ECPUáO­¶ÌH/WÉæè,X^bNÉCPUáO©çÌAPCÆ
+;    PSWªÛ¶³êÄ¢é.
+;  ExN^e[uÉo^³ê½ÂÊÌüèûÉæè, X^bNÉ
+;    XNb`WX^(R1-R5)ªÛ¶³êÄ¢é.
+;
+;  ø:
+;  Er1:CPUáOvöÔ
+;  Er2:CPUáOnhÌAhX
+;
+;  WX^ªX^bNãÉÇÌæ¤ÉÛ¶³êÄ¢é©ðÈºÉ¦·.
+;  ±Ì}ÅÍãªáÊ, ºªÊÌAhXÅ, X^bNÍº©ç
+;  ãûüÉü©ÁÄÏÝã°çêéàÌÆ·é.
+;  È¨, CPUáOvöÔÆR6-R13ÍCPUáOnhàÅîñðæ¾
+;  ·éÚIÅÞðµÄ¨è, oûÅÍÛ¶àeðjü·êÎæ¢.
+;
+;	-------------------------
+;	|    CPUáOvöÔ    | <----- p_excinf
+;	------------------------- (intptr_t)(p_excinf + 0)
+;	|       R6(4byte)       |
+;	------------------------- (intptr_t)(p_excinf + 4)
+;	|       R7(4byte)       |
+;	------------------------- (intptr_t)(p_excinf + 8)
+;	|       R8(4byte)       |
+;	------------------------- (intptr_t)(p_excinf + 12)
+;	|       R9(4byte)       |
+;	------------------------- (intptr_t)(p_excinf + 16)
+;	|       R10(4byte)      |
+;	------------------------- (intptr_t)(p_excinf + 20)
+;	|       R11(4byte)      |
+;	------------------------- (intptr_t)(p_excinf + 24)
+;	|       R12(4byte)      |
+;	------------------------- (intptr_t)(p_excinf + 28)
+;	|       R13(4byte)      |
+;	------------------------- (intptr_t)(p_excinf + 32)
+;	|       ACC-HI(4byte)   |
+;	------------------------- (intptr_t)(p_excinf + 36)
+;	|       ACC-LO(4byte)   |
+;	------------------------- (intptr_t)(p_excinf + 40)
+;	|       FPSW(4byte)     |
+;	------------------------- (intptr_t)(p_excinf + 44)
+;	|       R14(4byte)      |
+;	------------------------- (intptr_t)(p_excinf + 48)
+;	|       R15(4byte)      |
+;	------------------------- (intptr_t)(p_excinf + 52)
+;	|       R1(4byte)       |
+;	------------------------- (intptr_t)(p_excinf + 56)
+;	|       R2(4byte)       |
+;	------------------------- (intptr_t)(p_excinf + 60)
+;	|       R3(4byte)       |
+;	------------------------- (intptr_t)(p_excinf + 64)
+;	|       R4(4byte)       |
+;	------------------------- (intptr_t)(p_excinf + 68)
+;	|       R5(4byte)       |
+;	------------------------- (intptr_t)(p_excinf + 72)
+;	|       PC(4byte)       |
+;	------------------------- (intptr_t)(p_excinf + 76)
+;	|       PSW(4byte)      |
+;	------------------------- (intptr_t)(p_excinf + 80)
+;
+;  ±±ÅÍ, Ý[hÉÏXµÄnhðÀs·é.
+;  CPUáOnhÉn·VP^ÌÏ p_excinf ÆµÄISPÌln·D
+;
+;  nh©ç^[µ½ãÍ, ½dÝÅÈ­, ©Â reqflg ª
+;  TRUE ÉÈÁ½ÉCret_int Öªò(xfBXpb`)·éD
+;
+;  ½dÝ©Ç¤©ÍÝlXgJE^ÌlÅ»è·é.
+;  intnest != 0 ÈçÎ½dÝÅ éÆ»è·é.
+;
+;  reqflg ÍCPUbNóÔÅ`FbN·é. »¤ÅÈ¢ÆC
+;  reqflg `FbNãÉN®³ê½ÝnhàÅ
+;  fBXpb`ªv³ê½êÉCfBXpb`³êÈ¢.
+;
+;
+;  CPUáOüû
+;
+;  ±±ÅÍ, Ý[hÉÏXµÄnhðÀs·é.
+;
+
+;
+;  CPUáOnhÄoµãÉsvÆÈéX^bNîñÌTCY
+;  EXCNO + R6--R13
+;
+	EXCINF_REG_SIZE	.equ	(4+32)
+
+_kernel_exception:
+	pushm	r14-r15						; XNb`WX^ðÞð
+	pushc	fpsw
+	mvfacmi	r5
+	shll	#16, r5						; ACCÅºÊ16bitÍ0Æ·é
+	mvfachi	r4
+	pushm	r4-r5						; AL
+[^Þð
+	pushm	r6-r13						; ñXNb`WX^Û¶
+	push.l	r1							; CPUáOvöÔðÛ
+	mov.l	r0, r3						; X^bN|C^ðæèoµ
+	mov.l	EXC_GET_PSW_OFFSET[r3], r5
+	and		#PSW_I_MASK, r5
+	bz		exception_nonkernel			; SÝÖ~(CPUbN)óÔÈçÇO
+.if	TIPM_LOCK != -15
+	mov.l	EXC_GET_PSW_OFFSET[r3], r5
+	and		#PSW_IPL_MASK, r5
+	cmp		#IPL_LOCK, r5
+	bgt	exception_nonkernel			; IPLªCPUbNxÈãÈçÇO
+.endif
+	mov.l	#__kernel_intnest, r5
+	mov.w	[r5], r4
+	add		#1, r4						; lXgñðCNg
+	mov.w	r4, [r5]
+	mov.l	EXC_GET_PSW_OFFSET[r3], r5
+	mvtc	r5, psw						; CPUáO­¶OÌóÔÉß·
+.if	LOG_EXC_LEAVE == 1
+	push.l	r1							; Og[XÌøðÛ
+.endif
+
+.if	LOG_EXC_ENTER == 1
+	pushm	r2-r3
+	bsr		_kernel_log_exc_enter		; Og[XÖÌÄoµ
+							; øÌÝvöÔÍùÉr1ÉüÁÄ¢é
+	popm	r2-r3
+.endif
+
+	mov.l	r3, r1						; øÌp_excinfðÝè
+	jsr  	r2							; C[`ÄÑoµ
+
+.if	LOG_EXC_LEAVE == 1
+	pop		r1							; øÉÝvöÔðÝè
+	bsr		_kernel_log_exc_leave		; Og[XÖÌÄoµ
+.endif
+
+	clrpsw	i							; ±±©çÍK¸ÝÖ~
+	mov.l	#__kernel_intnest, r5
+	mov.w	[r5], r4
+	sub		#1, r4						; lXgñðfNg
+	mov.w	r4, [r5]
+	cmp		#0, r4						; ½dèÝ©Ç¤©
+	bnz		exception_return			; ½dèÝÈç^[
+	; iÌÝ
+	mov.l	#__kernel_reqflg, r5		; fBXpb`vªÈ¢©?
+	mov.l	[r5], r5
+	cmp		#1, r5
+	bnz		exception_return			; È¯êÎ^[
+	add		#EXCINF_REG_SIZE, r0		; CPUáOîñÌjü
+	bra		ret_int						;  êÎ ret_int ÖWv
+
+exception_nonkernel:
+	mov.l	#__kernel_intnest, r5
+	mov.w	[r5], r4
+	add		#1, r4						; lXgñðCNg
+	mov.w	r4, [r5]
+	cmp		#1, r4						; ½dèÝ©Ç¤©
+	bnz		exception_from_nonkernelint	; ÁZOª0ÅÈ¯êÎ½dÝ
+						; iÌÝ
+	mov.l	#__kernel_istkpt, r5		; ÝpÌX^bNÖØÖ¦é
+	mov.l	[r5], r0
+	push.l	r3							; ^XNX^bNðÛ
+exception_from_nonkernelint:	; ½dÝ
+	mov.l	EXC_GET_PSW_OFFSET[r3], r5
+	mvtc	r5, psw						; CPUáO­¶OÌóÔÉß·
+
+	mov.l	r3, r1						; øÌp_excinfðÝè
+	jsr  	r2							; C[`ÄÑoµ
+
+	clrpsw	i							; ±±©çÍK¸ÝÖ~
+	mov.l	#__kernel_intnest, r5
+	mov.w	[r5], r4
+	sub		#1, r4						; lXgñðfNg
+	mov.w	r4, [r5]
+	cmp		#0, r4						; ½dèÝ©Ç¤©
+	bnz		exception_return			; ½dèÝÈç^[
+	; iÌÝ
+	pop		r0							; ^XNÌX^bNÉß·
+
+exception_return:
+	add		#EXCINF_REG_SIZE, r0		; CPUáOîñÌjü
+	popm	r4-r5						; AL
+[^A
+	mvtaclo	r5							; ACCÅºÊ16bitÍ0ÅA
+	mvtachi	r4
+	popc	fpsw						; FPUXe[^XWX^A
+	popm	r14-r15						; WX^A
+	popm	r1-r5
+	rte									; ÝOÌÉßé
+
+
+;
+;  ÷­ÔÒ¿
+;
+_sil_dly_nse:
+	mov.l	#SIL_DLY_TIM1, r5
+	sub		r5, r1
+	ble		sil_dly_nse_ret
+sil_dly_nse_loop:
+	mov.l	#SIL_DLY_TIM2, r5
+	sub		r5, r1
+	bgt		sil_dly_nse_loop
+sil_dly_nse_ret:
+	rts
+
+	.end
+
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/prc_syssvc.h
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/prc_syssvc.h	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/prc_syssvc.h	(revision 101)
@@ -0,0 +1,57 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ *  Copyright (C) 2013      by Mitsuhiro Matsuura
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìð©CFree Software Foundation 
+ *  ÉæÁÄö\³êÄ¢é GNU General Public License Ì Version 2 ÉL
+ *  q³êÄ¢éðð½·êÉÀèC{\tgEFAi{\tgEFA
+ *  ðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏEÄzziÈºC
+ *  pÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄC»ÌKpÂ\«à
+ *  ÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌpÉæè¼
+ *  ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		eXgvOÌ^[QbgË¶è`iRX630pj
+ */
+
+#ifndef TOPPERS_PRC_SYSSVC_H
+#define TOPPERS_PRC_SYSSVC_H
+
+/*
+ *  N®bZ[WÉ^[QbgË¶Ìì \¦ð
+ *  ÇÁ·é½ßÌ}ND
+ */
+#define PRC_COPYRIGHT										\
+	"Copyright (C) 2010 by Witz Corporation, JAPAN\n"		\
+	"Copyright (C) 2011 by Meika Sugimoto\n"				\
+	"Copyright (C) 2013 by Mitsuhiro Matsuura\n"
+
+#endif	/* TOPPERS_PRC_SYSSVC_H */
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/prc_test.h
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/prc_test.h	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/prc_test.h	(revision 101)
@@ -0,0 +1,54 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		eXgvOÌ^[QbgË¶è`iRX630pj
+ */
+
+#ifndef TOPPERS_PRC_TEST_H
+#define TOPPERS_PRC_TEST_H
+
+#define CPUEXC1					25		/* ®¬_áO */
+#define RAISE_CPU_EXCEPTION		trigger_cpu_exception()
+
+extern void trigger_cpu_exception( void );
+
+#endif /* TOPPERS_PRC_TEST_H */
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/prc_test.src
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/prc_test.src	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/prc_test.src	(revision 101)
@@ -0,0 +1,56 @@
+;*
+;*  TOPPERS/SSP Kernel
+;*      Smallest Set Profile Kernel
+;* 
+;*  Copyright (C) 2010 by Witz Corporation, JAPAN
+;* 
+;*  ãLì ÒÍCFree Software Foundation ÉæÁÄö\³êÄ¢é 
+;*  GNU General Public License Ì Version 2 ÉLq³êÄ¢éð©CÈ
+;*  ºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEFAi{\tgEF
+;*  AðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏEÄzziÈºC
+;*  pÆÄÔj·é±Æð³Åø·éD
+;*  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+;*       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+;*      XR[hÉÜÜêÄ¢é±ÆD
+;*  (2) {\tgEFAðÄpÂ\ÈoCiR[hiP[^uIu
+;*      WFNgt@CâCuÈÇjÌ`Åp·éêÉÍCp
+;*      Éº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì \¦C
+;*      ±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+;*  (3) {\tgEFAðÄpsÂ\ÈoCiR[hÌ`Ü½Í@íÉg
+;*      Ýñ¾`Åp·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+;*    (a) pÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+;*         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+;*    (b) pÌ`ÔðCÊÉèßéû@ÉæÁÄCãLì ÒÉñ·é
+;*        ±ÆD
+;*  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+;*      Q©çàCãLì ÒðÆÓ·é±ÆD
+;* 
+;*  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì ÒÍC
+;*  {\tgEFAÉÖµÄC»ÌKpÂ\«àÜßÄC¢©ÈéÛØàsí
+;*  È¢DÜ½C{\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢
+;*  ©Èé¹QÉÖµÄàC»ÌÓCðíÈ¢D
+;* 
+
+	.section	P, CODE
+
+	.glb	_trigger_cpu_exception
+
+_trigger_cpu_exception:
+	;
+	;  CPUáOÌ­¶
+	;
+	;  [èZðs¤±ÆÅ, ®¬_áOð
+	;  ­¶³¹é.
+	;
+	mvtc	#00001000H, fpsw
+	mov.l	#1, r5
+	fdiv	#0, r5
+	mvtc	#00000000H, fpsw
+	rts
+
+	.end
+
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/prc_unrename.h
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/prc_unrename.h	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/prc_unrename.h	(revision 101)
@@ -0,0 +1,83 @@
+/* This file is generated from prc_rename.def by genrename. */
+
+#ifndef TOPPERS_PRC_RENAME_H
+#define TOPPERS_PRC_RENAME_H
+
+/*
+ *  prc_config.c
+ */
+#undef intnest
+#undef lock_flag
+#undef saved_ipl
+#undef prc_initialize
+#undef prc_terminate
+#undef x_config_int
+#undef default_int_handler
+#undef default_exc_handler
+
+/*
+ *  prc_support.src
+ */
+#undef dispatch
+#undef start_dispatch
+#undef exit_and_dispatch
+#undef call_exit_kernel
+#undef start_r
+#undef interrupt
+#undef exception
+
+/*
+ *  rx630_config.c
+ */
+#undef ipr_reg_addr
+#undef ier_reg_addr
+#undef ir_reg_addr
+#undef irqcr_reg_addr
+
+/*
+ *  kernel_cfg.c
+ */
+#undef cfg_int_table
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  prc_config.c
+ */
+#undef _intnest
+#undef _lock_flag
+#undef _saved_ipl
+#undef _prc_initialize
+#undef _prc_terminate
+#undef _x_config_int
+#undef _default_int_handler
+#undef _default_exc_handler
+
+/*
+ *  prc_support.src
+ */
+#undef _dispatch
+#undef _start_dispatch
+#undef _exit_and_dispatch
+#undef _call_exit_kernel
+#undef _start_r
+#undef _interrupt
+#undef _exception
+
+/*
+ *  rx630_config.c
+ */
+#undef _ipr_reg_addr
+#undef _ier_reg_addr
+#undef _ir_reg_addr
+#undef _irqcr_reg_addr
+
+/*
+ *  kernel_cfg.c
+ */
+#undef _cfg_int_table
+
+#endif /* TOPPERS_LABEL_ASM */
+
+
+#endif /* TOPPERS_PRC_RENAME_H */
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/rx630.h
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/rx630.h	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/rx630.h	(revision 101)
@@ -0,0 +1,1787 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ *  Copyright (C) 2013      by Mitsuhiro Matsuura
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  RX630ÉË¶·éè`
+ */
+#ifndef TOPPERS_RX630_H
+#define TOPPERS_RX630_H
+
+/*
+ *  CPUáOnhÔÌè`(ÅèxN^e[u)
+ *
+ *  ÔÌÍÍÍ0 - 31
+ */
+#define INT_PRIVILEGED_INSTRUNCTION		20		/* Á ½ßáO */
+#define INT_UNDEF_INSTRUNCTION			23		/* ¢è`½ßáO */
+#define INT_FLOATINGPOINT_INSTRUCTION	25		/* ®¬_áO */
+#define INT_NMI							30		/* m}XJuèÝ */
+#define INT_RESET						31		/* Zbg */
+
+/*
+ *  ÝÔÌè`(ÂÏxN^e[u)
+ */
+#define INT_BUSERR			16
+#define INT_FCU_FCUERR		21
+#define INT_FCU_FRDYI		23
+#define INT_ICU_SWINT		27
+#define INT_CMT0_CMI		28
+#define INT_CMT1_CMI		29
+#define INT_CMT2_CMI		30
+#define INT_CMT3_CMI		31
+#define INT_ETH_EINT		32
+#define INT_USB0_D0FIFO0	33
+#define INT_USB0_D1FIFO0	34
+#define INT_USB0_USBI0		35
+#define INT_USB1_D0FIFO1	36
+#define INT_USB1_D1FIFO1	37
+#define INT_USB1_USBI1		38
+#define INT_RSPI0_SPRI0		39
+#define INT_RSPI0_SPTI0		40
+#define INT_RSPI0_SPII0		41
+#define INT_RSPI1_SPRI1		42
+#define INT_RSPI1_SPTI1		43
+#define INT_RSPI1_SPII1		44
+#define INT_RSPI2_SPRI2		45
+#define INT_RSPI2_SPTI2		46
+#define INT_RSPI2_SPII2		47
+#define INT_CAN0_RXF0		48
+#define INT_CAN0_TXF0		49
+#define INT_CAN0_RXM0		50
+#define INT_CAN0_TXM0		51
+#define INT_CAN1_RXF1		52
+#define INT_CAN1_TXF1		53
+#define INT_CAN1_RXM1		54
+#define INT_CAN1_TXM1		55
+#define INT_CAN2_RXF2		56
+#define INT_CAN2_TXF2		57
+#define INT_CAN2_RXM2		58
+#define INT_CAN2_TXM2		59
+#define INT_RTC_CUP			62
+#define INT_IRQ0			64
+#define INT_IRQ1			65
+#define INT_IRQ2			66
+#define INT_IRQ3			67
+#define INT_IRQ4			68
+#define INT_IRQ5			69
+#define INT_IRQ6			70
+#define INT_IRQ7			71
+#define INT_IRQ8			72
+#define INT_IRQ9			73
+#define INT_IRQ10			74
+#define INT_IRQ11			75
+#define INT_IRQ12			76
+#define INT_IRQ13			77
+#define INT_IRQ14			78
+#define INT_IRQ15			79
+#define INT_USB_USBR0		90
+#define INT_USB_USBR1		91
+#define INT_RTC_ALM			92
+#define INT_RTC_PRD			93
+#define INT_AD0_ADI0		98
+#define INT_S12AD_S12ADI0	102
+#define INT_ICU_GROUP0		106
+#define INT_ICU_GROUP1		107
+#define INT_ICU_GROUP2		108
+#define INT_ICU_GROUP3		109
+#define INT_ICU_GROUP4		110
+#define INT_ICU_GROUP5		111
+#define INT_ICU_GROUP6		112
+#define INT_ICU_GROUP12		114
+#define INT_SCI12_SCIX0		122
+#define INT_SCI12_SCIX1		123
+#define INT_SCI12_SCIX2		124
+#define INT_SCI12_SCIX3		125
+#define INT_TPU0_TGI0A		126
+#define INT_TPU0_TGI0B		127
+#define INT_TPU0_TGI0C		128
+#define INT_TPU0_TGI0D		129
+#define INT_TPU1_TGI0A		130
+#define INT_TPU1_TGI0B		131
+#define INT_TPU2_TGI0A		132
+#define INT_TPU2_TGI0B		133
+#define INT_TPU3_TGI0A		134
+#define INT_TPU3_TGI0B		135
+#define INT_TPU3_TGI0C		136
+#define INT_TPU3_TGI0D		137
+#define INT_TPU4_TGI0A		138
+#define INT_TPU4_TGI0B		139
+#define INT_TPU5_TGI0A		140
+#define INT_TPU5_TGI0B		141
+#define INT_MTU0_TGIA0		142
+#define INT_MTU0_TGIB0		143
+#define INT_MTU0_TGIC0		144
+#define INT_MTU0_TGID0		145
+#define INT_MTU0_TCIE0		146
+#define INT_MTU0_TCIF0		147
+#define INT_MTU1_TGIA1		148
+#define INT_MTU1_TGIB1		149
+#define INT_MTU2_TGIA2		150
+#define INT_MTU2_TGIB2		151
+#define INT_MTU3_TGIA3		152
+#define INT_MTU3_TGIB3		153
+#define INT_MTU3_TGIC3		154
+#define INT_MTU3_TGID3		155
+#define INT_MTU4_TGIA4		156
+#define INT_MTU4_TGIB4		157
+#define INT_MTU4_TGIC4		158
+#define INT_MTU4_TGID4		159
+#define INT_MTU4_TCIV4		160
+#define INT_MTU5_TGIU5		161
+#define INT_MTU5_TGIV5		162
+#define INT_MTU5_TGIW5		163
+#define INT_MTU5_TGI11A		164
+#define INT_MTU5_TGI11B		165
+#define INT_POE_OEI1		166
+#define INT_POE_OEI2		167
+#define INT_TMR0_CMI0A		170
+#define INT_TMR0_CMI0B		171
+#define INT_TMR0_OV0I		172
+#define INT_TMR1_CMI1A		173
+#define INT_TMR1_CMI1B		174
+#define INT_TMR1_OV1I		175
+#define INT_TMR2_CMI2A		176
+#define INT_TMR2_CMI2B		177
+#define INT_TMR2_OV2I		178
+#define INT_TMR3_CMI3A		179
+#define INT_TMR3_CMI3B		180
+#define INT_TMR3_OV3I		181
+#define INT_RIIC0_EEI		182
+#define INT_RIIC0_RXI		183
+#define INT_RIIC0_TXI		184
+#define INT_RIIC0_TEI		185
+#define INT_RIIC1_EEI		186
+#define INT_RIIC1_RXI		187
+#define INT_RIIC1_TXI		188
+#define INT_RIIC1_TEI		189
+#define INT_RIIC2_EEI		190
+#define INT_RIIC2_RXI		191
+#define INT_RIIC2_TXI		192
+#define INT_RIIC2_TEI		193
+#define INT_RIIC3_EEI		194
+#define INT_RIIC3_RXI		195
+#define INT_RIIC3_TXI		196
+#define INT_RIIC3_TEI		197
+#define INT_DMAC_DMAC0I		198
+#define INT_DMAC_DMAC1I		199
+#define INT_DMAC_DMAC2I		200
+#define INT_DMAC_DMAC3I		201
+#define INT_SCI0_RXI		214
+#define INT_SCI0_TXI		215
+#define INT_SCI0_TEI		216
+#define INT_SCI1_RXI		217
+#define INT_SCI1_TXI		218
+#define INT_SCI1_TEI		219
+#define INT_SCI2_RXI		220
+#define INT_SCI2_TXI		221
+#define INT_SCI2_TEI		222
+#define INT_SCI3_RXI		223
+#define INT_SCI3_TXI		224
+#define INT_SCI3_TEI		225
+#define INT_SCI4_RXI		226
+#define INT_SCI4_TXI		227
+#define INT_SCI4_TEI		228
+#define INT_SCI5_RXI		229
+#define INT_SCI5_TXI		230
+#define INT_SCI5_TEI		231
+#define INT_SCI6_RXI		232
+#define INT_SCI6_TXI		233
+#define INT_SCI6_TEI		234
+#define INT_SCI7_RXI		235
+#define INT_SCI7_TXI		236
+#define INT_SCI7_TEI		237
+#define INT_SCI8_RXI		238
+#define INT_SCI8_TXI		239
+#define INT_SCI8_TEI		240
+#define INT_SCI9_RXI		241
+#define INT_SCI9_TXI		242
+#define INT_SCI9_TEI		243
+#define INT_SCI10_RXI		244
+#define INT_SCI10_TXI		245
+#define INT_SCI10_TEI		246
+#define INT_SCI11_RXI		247
+#define INT_SCI11_TXI		248
+#define INT_SCI11_TEI		249
+#define INT_SCI12_RXI		250
+#define INT_SCI12_TXI		251
+#define INT_SCI12_TEI		252
+#define INT_IEB_IEBINT		253
+
+/*
+ *  eW
+[ÌWX^yÑÝèrbgîñ
+ */
+
+#define SYSTEM_SYSCR0_ADDR		( ( volatile uint16_t __evenaccess * )0x00080006 )
+
+/*
+ * W
+[XgbvRg[WX^AiMSTPCRAj
+ */
+#define SYSTEM_MSTPCRA_ADDR			( ( volatile uint32_t __evenaccess * )0x00080010 )
+#define SYSTEM_MSTPCRA_MSTPA0_BIT	( 1UL << 0U )
+#define SYSTEM_MSTPCRA_MSTPA1_BIT	( 1UL << 1U )
+#define SYSTEM_MSTPCRA_MSTPA2_BIT	( 1UL << 2U )
+#define SYSTEM_MSTPCRA_MSTPA3_BIT	( 1UL << 3U )
+#define SYSTEM_MSTPCRA_MSTPA4_BIT	( 1UL << 4U )
+#define SYSTEM_MSTPCRA_MSTPA5_BIT	( 1UL << 5U )
+#define SYSTEM_MSTPCRA_MSTPA6_BIT	( 1UL << 6U )
+#define SYSTEM_MSTPCRA_MSTPA7_BIT	( 1UL << 7U )
+#define SYSTEM_MSTPCRA_MSTPA8_BIT	( 1UL << 8U )
+#define SYSTEM_MSTPCRA_MSTPA9_BIT	( 1UL << 9U )
+#define SYSTEM_MSTPCRA_MSTPA10_BIT	( 1UL << 10U )
+#define SYSTEM_MSTPCRA_MSTPA11_BIT	( 1UL << 11U )
+#define SYSTEM_MSTPCRA_MSTPA12_BIT	( 1UL << 12U )
+#define SYSTEM_MSTPCRA_MSTPA13_BIT	( 1UL << 13U )
+#define SYSTEM_MSTPCRA_MSTPA14_BIT	( 1UL << 14U )
+#define SYSTEM_MSTPCRA_MSTPA15_BIT	( 1UL << 15U )
+#define SYSTEM_MSTPCRA_MSTPA16_BIT	( 1UL << 16U )
+#define SYSTEM_MSTPCRA_MSTPA17_BIT	( 1UL << 17U )
+#define SYSTEM_MSTPCRA_MSTPA18_BIT	( 1UL << 18U )
+#define SYSTEM_MSTPCRA_MSTPA19_BIT	( 1UL << 19U )
+#define SYSTEM_MSTPCRA_MSTPA20_BIT	( 1UL << 20U )
+#define SYSTEM_MSTPCRA_MSTPA21_BIT	( 1UL << 21U )
+#define SYSTEM_MSTPCRA_MSTPA22_BIT	( 1UL << 22U )
+#define SYSTEM_MSTPCRA_MSTPA23_BIT	( 1UL << 23U )
+#define SYSTEM_MSTPCRA_MSTPA24_BIT	( 1UL << 24U )
+#define SYSTEM_MSTPCRA_MSTPA25_BIT	( 1UL << 25U )
+#define SYSTEM_MSTPCRA_MSTPA26_BIT	( 1UL << 26U )
+#define SYSTEM_MSTPCRA_MSTPA27_BIT	( 1UL << 27U )
+#define SYSTEM_MSTPCRA_MSTPA28_BIT	( 1UL << 28U )
+#define SYSTEM_MSTPCRA_MSTPA29_BIT	( 1UL << 29U )
+#define SYSTEM_MSTPCRA_MSTPA30_BIT	( 1UL << 30U )
+#define SYSTEM_MSTPCRA_MSTPA31_BIT	( 1UL << 31U )
+#define SYSTEM_MSTPCRA_ACSE_BIT		( 1UL << 31U)
+
+/*
+ * W
+[XgbvRg[WX^BiMSTPCRBj
+ */
+#define SYSTEM_MSTPCRB_ADDR			( ( volatile uint32_t __evenaccess * )0x00080014 )
+#define SYSTEM_MSTPCRB_MSTPB0_BIT	( 1UL << 0U )
+#define SYSTEM_MSTPCRB_MSTPB1_BIT	( 1UL << 1U )
+#define SYSTEM_MSTPCRB_MSTPB2_BIT	( 1UL << 2U )
+#define SYSTEM_MSTPCRB_MSTPB3_BIT	( 1UL << 3U )
+#define SYSTEM_MSTPCRB_MSTPB4_BIT	( 1UL << 4U )
+#define SYSTEM_MSTPCRB_MSTPB5_BIT	( 1UL << 5U )
+#define SYSTEM_MSTPCRB_MSTPB6_BIT	( 1UL << 6U )
+#define SYSTEM_MSTPCRB_MSTPB7_BIT	( 1UL << 7U )
+#define SYSTEM_MSTPCRB_MSTPB8_BIT	( 1UL << 8U )
+#define SYSTEM_MSTPCRB_MSTPB9_BIT	( 1UL << 9U )
+#define SYSTEM_MSTPCRB_MSTPB10_BIT	( 1UL << 10U )
+#define SYSTEM_MSTPCRB_MSTPB11_BIT	( 1UL << 11U )
+#define SYSTEM_MSTPCRB_MSTPB12_BIT	( 1UL << 12U )
+#define SYSTEM_MSTPCRB_MSTPB13_BIT	( 1UL << 13U )
+#define SYSTEM_MSTPCRB_MSTPB14_BIT	( 1UL << 14U )
+#define SYSTEM_MSTPCRB_MSTPB15_BIT	( 1UL << 15U )
+#define SYSTEM_MSTPCRB_MSTPB16_BIT	( 1UL << 16U )
+#define SYSTEM_MSTPCRB_MSTPB17_BIT	( 1UL << 17U )
+#define SYSTEM_MSTPCRB_MSTPB18_BIT	( 1UL << 18U )
+#define SYSTEM_MSTPCRB_MSTPB19_BIT	( 1UL << 19U )
+#define SYSTEM_MSTPCRB_MSTPB20_BIT	( 1UL << 20U )
+#define SYSTEM_MSTPCRB_MSTPB21_BIT	( 1UL << 21U )
+#define SYSTEM_MSTPCRB_MSTPB22_BIT	( 1UL << 22U )
+#define SYSTEM_MSTPCRB_MSTPB23_BIT	( 1UL << 23U )
+#define SYSTEM_MSTPCRB_MSTPB24_BIT	( 1UL << 24U )
+#define SYSTEM_MSTPCRB_MSTPB25_BIT	( 1UL << 25U )
+#define SYSTEM_MSTPCRB_MSTPB26_BIT	( 1UL << 26U )
+#define SYSTEM_MSTPCRB_MSTPB27_BIT	( 1UL << 27U )
+#define SYSTEM_MSTPCRB_MSTPB28_BIT	( 1UL << 28U )
+#define SYSTEM_MSTPCRB_MSTPB29_BIT	( 1UL << 29U )
+#define SYSTEM_MSTPCRB_MSTPB30_BIT	( 1UL << 30U )
+#define SYSTEM_MSTPCRB_MSTPB31_BIT	( 1UL << 31U )
+
+/*
+ * W
+[XgbvRg[WX^CiMSTPCRCj
+ */
+#define SYSTEM_MSTPCRC_ADDR			( ( volatile uint32_t __evenaccess * )0x00080018 )
+#define SYSTEM_MSTPCRC_MSTPC0_BIT	( 1UL << 0U )
+#define SYSTEM_MSTPCRC_MSTPC1_BIT	( 1UL << 1U )
+#define SYSTEM_MSTPCRC_MSTPC2_BIT	( 1UL << 2U )
+#define SYSTEM_MSTPCRC_MSTPC3_BIT	( 1UL << 3U )
+#define SYSTEM_MSTPCRC_MSTPC4_BIT	( 1UL << 4U )
+#define SYSTEM_MSTPCRC_MSTPC5_BIT	( 1UL << 5U )
+#define SYSTEM_MSTPCRC_MSTPC6_BIT	( 1UL << 6U )
+#define SYSTEM_MSTPCRC_MSTPC7_BIT	( 1UL << 7U )
+#define SYSTEM_MSTPCRC_MSTPC8_BIT	( 1UL << 8U )
+#define SYSTEM_MSTPCRC_MSTPC9_BIT	( 1UL << 9U )
+#define SYSTEM_MSTPCRC_MSTPC10_BIT	( 1UL << 10U )
+#define SYSTEM_MSTPCRC_MSTPC11_BIT	( 1UL << 11U )
+#define SYSTEM_MSTPCRC_MSTPC12_BIT	( 1UL << 12U )
+#define SYSTEM_MSTPCRC_MSTPC13_BIT	( 1UL << 13U )
+#define SYSTEM_MSTPCRC_MSTPC14_BIT	( 1UL << 14U )
+#define SYSTEM_MSTPCRC_MSTPC15_BIT	( 1UL << 15U )
+#define SYSTEM_MSTPCRC_MSTPC16_BIT	( 1UL << 16U )
+#define SYSTEM_MSTPCRC_MSTPC17_BIT	( 1UL << 17U )
+#define SYSTEM_MSTPCRC_MSTPC18_BIT	( 1UL << 18U )
+#define SYSTEM_MSTPCRC_MSTPC19_BIT	( 1UL << 19U )
+#define SYSTEM_MSTPCRC_MSTPC20_BIT	( 1UL << 20U )
+#define SYSTEM_MSTPCRC_MSTPC21_BIT	( 1UL << 21U )
+#define SYSTEM_MSTPCRC_MSTPC22_BIT	( 1UL << 22U )
+#define SYSTEM_MSTPCRC_MSTPC23_BIT	( 1UL << 23U )
+#define SYSTEM_MSTPCRC_MSTPC24_BIT	( 1UL << 24U )
+#define SYSTEM_MSTPCRC_MSTPC25_BIT	( 1UL << 25U )
+#define SYSTEM_MSTPCRC_MSTPC26_BIT	( 1UL << 26U )
+#define SYSTEM_MSTPCRC_MSTPC27_BIT	( 1UL << 27U )
+#define SYSTEM_MSTPCRC_MSTPC28_BIT	( 1UL << 28U )
+#define SYSTEM_MSTPCRC_MSTPC29_BIT	( 1UL << 29U )
+#define SYSTEM_MSTPCRC_MSTPC30_BIT	( 1UL << 30U )
+#define SYSTEM_MSTPCRC_MSTPC31_BIT	( 1UL << 31U )
+
+/*
+ * NbN­¶ñH
+ */
+#define SYSTEM_SCKCR_ADDR			( ( volatile uint32_t __evenaccess * )0x00080020 )
+#define SYSTEM_SCKCR2_ADDR			( ( volatile uint16_t __evenaccess * )0x00080024 )
+#define SYSTEM_SCKCR2_UCK_OFFSET	( 4U )
+#define SYSTEM_SCKCR2_UCK_MASK		( 0xFU << SYSTEM_SCKCR2_UCK_OFFSET )
+#define SYSTEM_SCKCR3_ADDR			( ( volatile uint16_t __evenaccess * )0x00080026 )
+#define SYSTEM_SCKCR3_CKSEL_OFFSET	( 8U )
+#define SYSTEM_SCKCR3_CKSEL_MASK	( 0x7U << SYSTEM_SCKCR3_CKSEL_OFFSET )
+#define SYSTEM_PLLCR_ADDR			( ( volatile uint16_t __evenaccess * )0x00080028 )
+#define SYSTEM_PLLCR_STC_OFFSET		( 8U )
+#define SYSTEM_PLLCR_STC_MASK		( 0x3FU << SYSTEM_PLLCR_STC_OFFSET )
+#define SYSTEM_PLLCR2_ADDR			( ( volatile uint8_t __evenaccess * )0x0008002A )
+#define SYSTEM_PLLCR2_PLLEN			( 1UL << 0U )
+#define SYSTEM_MOFCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C293 )
+#define SYSTEM_MOFCR_MOFXIN			( 1UL << 0U )
+#define SYSTEM_MOSCCR_ADDR			( ( volatile uint8_t __evenaccess * )0x00080032 )
+#define SYSTEM_MOSCCR_MOSTP			( 1UL << 0U )
+
+/*
+ * veNgWX^
+ */
+#define SYSTEM_PRCR_ADDR		( ( volatile uint16_t __evenaccess * )0x000803FE )
+
+/*
+ * èÝvWX^
+ */
+#define ICU_IR000_ADDR			( ( volatile uint8_t __evenaccess * )0x00087000 )
+#define ICU_IR001_ADDR			( ( volatile uint8_t __evenaccess * )0x00087001 )
+#define ICU_IR002_ADDR			( ( volatile uint8_t __evenaccess * )0x00087002 )
+#define ICU_IR003_ADDR			( ( volatile uint8_t __evenaccess * )0x00087003 )
+#define ICU_IR004_ADDR			( ( volatile uint8_t __evenaccess * )0x00087004 )
+#define ICU_IR005_ADDR			( ( volatile uint8_t __evenaccess * )0x00087005 )
+#define ICU_IR006_ADDR			( ( volatile uint8_t __evenaccess * )0x00087006 )
+#define ICU_IR007_ADDR			( ( volatile uint8_t __evenaccess * )0x00087007 )
+#define ICU_IR008_ADDR			( ( volatile uint8_t __evenaccess * )0x00087008 )
+#define ICU_IR009_ADDR			( ( volatile uint8_t __evenaccess * )0x00087009 )
+#define ICU_IR010_ADDR			( ( volatile uint8_t __evenaccess * )0x0008700A )
+#define ICU_IR011_ADDR			( ( volatile uint8_t __evenaccess * )0x0008700B )
+#define ICU_IR012_ADDR			( ( volatile uint8_t __evenaccess * )0x0008700C )
+#define ICU_IR013_ADDR			( ( volatile uint8_t __evenaccess * )0x0008700D )
+#define ICU_IR014_ADDR			( ( volatile uint8_t __evenaccess * )0x0008700E )
+#define ICU_IR015_ADDR			( ( volatile uint8_t __evenaccess * )0x0008700F )
+#define ICU_IR016_ADDR			( ( volatile uint8_t __evenaccess * )0x00087010 )
+#define ICU_IR017_ADDR			( ( volatile uint8_t __evenaccess * )0x00087011 )
+#define ICU_IR018_ADDR			( ( volatile uint8_t __evenaccess * )0x00087012 )
+#define ICU_IR019_ADDR			( ( volatile uint8_t __evenaccess * )0x00087013 )
+#define ICU_IR020_ADDR			( ( volatile uint8_t __evenaccess * )0x00087014 )
+#define ICU_IR021_ADDR			( ( volatile uint8_t __evenaccess * )0x00087015 )
+#define ICU_IR022_ADDR			( ( volatile uint8_t __evenaccess * )0x00087016 )
+#define ICU_IR023_ADDR			( ( volatile uint8_t __evenaccess * )0x00087017 )
+#define ICU_IR024_ADDR			( ( volatile uint8_t __evenaccess * )0x00087018 )
+#define ICU_IR025_ADDR			( ( volatile uint8_t __evenaccess * )0x00087019 )
+#define ICU_IR026_ADDR			( ( volatile uint8_t __evenaccess * )0x0008701A )
+#define ICU_IR027_ADDR			( ( volatile uint8_t __evenaccess * )0x0008701B )
+#define ICU_IR028_ADDR			( ( volatile uint8_t __evenaccess * )0x0008701C )
+#define ICU_IR029_ADDR			( ( volatile uint8_t __evenaccess * )0x0008701D )
+#define ICU_IR030_ADDR			( ( volatile uint8_t __evenaccess * )0x0008701E )
+#define ICU_IR031_ADDR			( ( volatile uint8_t __evenaccess * )0x0008701F )
+#define ICU_IR032_ADDR			( ( volatile uint8_t __evenaccess * )0x00087020 )
+#define ICU_IR033_ADDR			( ( volatile uint8_t __evenaccess * )0x00087021 )
+#define ICU_IR034_ADDR			( ( volatile uint8_t __evenaccess * )0x00087022 )
+#define ICU_IR035_ADDR			( ( volatile uint8_t __evenaccess * )0x00087023 )
+#define ICU_IR036_ADDR			( ( volatile uint8_t __evenaccess * )0x00087024 )
+#define ICU_IR037_ADDR			( ( volatile uint8_t __evenaccess * )0x00087025 )
+#define ICU_IR038_ADDR			( ( volatile uint8_t __evenaccess * )0x00087026 )
+#define ICU_IR039_ADDR			( ( volatile uint8_t __evenaccess * )0x00087027 )
+#define ICU_IR040_ADDR			( ( volatile uint8_t __evenaccess * )0x00087028 )
+#define ICU_IR041_ADDR			( ( volatile uint8_t __evenaccess * )0x00087029 )
+#define ICU_IR042_ADDR			( ( volatile uint8_t __evenaccess * )0x0008702A )
+#define ICU_IR043_ADDR			( ( volatile uint8_t __evenaccess * )0x0008702B )
+#define ICU_IR044_ADDR			( ( volatile uint8_t __evenaccess * )0x0008702C )
+#define ICU_IR045_ADDR			( ( volatile uint8_t __evenaccess * )0x0008702D )
+#define ICU_IR046_ADDR			( ( volatile uint8_t __evenaccess * )0x0008702E )
+#define ICU_IR047_ADDR			( ( volatile uint8_t __evenaccess * )0x0008702F )
+#define ICU_IR048_ADDR			( ( volatile uint8_t __evenaccess * )0x00087030 )
+#define ICU_IR049_ADDR			( ( volatile uint8_t __evenaccess * )0x00087031 )
+#define ICU_IR050_ADDR			( ( volatile uint8_t __evenaccess * )0x00087032 )
+#define ICU_IR051_ADDR			( ( volatile uint8_t __evenaccess * )0x00087033 )
+#define ICU_IR052_ADDR			( ( volatile uint8_t __evenaccess * )0x00087034 )
+#define ICU_IR053_ADDR			( ( volatile uint8_t __evenaccess * )0x00087035 )
+#define ICU_IR054_ADDR			( ( volatile uint8_t __evenaccess * )0x00087036 )
+#define ICU_IR055_ADDR			( ( volatile uint8_t __evenaccess * )0x00087037 )
+#define ICU_IR056_ADDR			( ( volatile uint8_t __evenaccess * )0x00087038 )
+#define ICU_IR057_ADDR			( ( volatile uint8_t __evenaccess * )0x00087039 )
+#define ICU_IR058_ADDR			( ( volatile uint8_t __evenaccess * )0x0008703A )
+#define ICU_IR059_ADDR			( ( volatile uint8_t __evenaccess * )0x0008703B )
+#define ICU_IR060_ADDR			( ( volatile uint8_t __evenaccess * )0x0008703C )
+#define ICU_IR061_ADDR			( ( volatile uint8_t __evenaccess * )0x0008703D )
+#define ICU_IR062_ADDR			( ( volatile uint8_t __evenaccess * )0x0008703E )
+#define ICU_IR063_ADDR			( ( volatile uint8_t __evenaccess * )0x0008703F )
+#define ICU_IR064_ADDR			( ( volatile uint8_t __evenaccess * )0x00087040 )
+#define ICU_IR065_ADDR			( ( volatile uint8_t __evenaccess * )0x00087041 )
+#define ICU_IR066_ADDR			( ( volatile uint8_t __evenaccess * )0x00087042 )
+#define ICU_IR067_ADDR			( ( volatile uint8_t __evenaccess * )0x00087043 )
+#define ICU_IR068_ADDR			( ( volatile uint8_t __evenaccess * )0x00087044 )
+#define ICU_IR069_ADDR			( ( volatile uint8_t __evenaccess * )0x00087045 )
+#define ICU_IR070_ADDR			( ( volatile uint8_t __evenaccess * )0x00087046 )
+#define ICU_IR071_ADDR			( ( volatile uint8_t __evenaccess * )0x00087047 )
+#define ICU_IR072_ADDR			( ( volatile uint8_t __evenaccess * )0x00087048 )
+#define ICU_IR073_ADDR			( ( volatile uint8_t __evenaccess * )0x00087049 )
+#define ICU_IR074_ADDR			( ( volatile uint8_t __evenaccess * )0x0008704A )
+#define ICU_IR075_ADDR			( ( volatile uint8_t __evenaccess * )0x0008704B )
+#define ICU_IR076_ADDR			( ( volatile uint8_t __evenaccess * )0x0008704C )
+#define ICU_IR077_ADDR			( ( volatile uint8_t __evenaccess * )0x0008704D )
+#define ICU_IR078_ADDR			( ( volatile uint8_t __evenaccess * )0x0008704E )
+#define ICU_IR079_ADDR			( ( volatile uint8_t __evenaccess * )0x0008704F )
+#define ICU_IR080_ADDR			( ( volatile uint8_t __evenaccess * )0x00087050 )
+#define ICU_IR081_ADDR			( ( volatile uint8_t __evenaccess * )0x00087051 )
+#define ICU_IR082_ADDR			( ( volatile uint8_t __evenaccess * )0x00087052 )
+#define ICU_IR083_ADDR			( ( volatile uint8_t __evenaccess * )0x00087053 )
+#define ICU_IR084_ADDR			( ( volatile uint8_t __evenaccess * )0x00087054 )
+#define ICU_IR085_ADDR			( ( volatile uint8_t __evenaccess * )0x00087055 )
+#define ICU_IR086_ADDR			( ( volatile uint8_t __evenaccess * )0x00087056 )
+#define ICU_IR087_ADDR			( ( volatile uint8_t __evenaccess * )0x00087057 )
+#define ICU_IR088_ADDR			( ( volatile uint8_t __evenaccess * )0x00087058 )
+#define ICU_IR089_ADDR			( ( volatile uint8_t __evenaccess * )0x00087059 )
+#define ICU_IR090_ADDR			( ( volatile uint8_t __evenaccess * )0x0008705A )
+#define ICU_IR091_ADDR			( ( volatile uint8_t __evenaccess * )0x0008705B )
+#define ICU_IR092_ADDR			( ( volatile uint8_t __evenaccess * )0x0008705C )
+#define ICU_IR093_ADDR			( ( volatile uint8_t __evenaccess * )0x0008705D )
+#define ICU_IR094_ADDR			( ( volatile uint8_t __evenaccess * )0x0008705E )
+#define ICU_IR095_ADDR			( ( volatile uint8_t __evenaccess * )0x0008705F )
+#define ICU_IR096_ADDR			( ( volatile uint8_t __evenaccess * )0x00087060 )
+#define ICU_IR097_ADDR			( ( volatile uint8_t __evenaccess * )0x00087061 )
+#define ICU_IR098_ADDR			( ( volatile uint8_t __evenaccess * )0x00087062 )
+#define ICU_IR099_ADDR			( ( volatile uint8_t __evenaccess * )0x00087063 )
+#define ICU_IR100_ADDR			( ( volatile uint8_t __evenaccess * )0x00087064 )
+#define ICU_IR101_ADDR			( ( volatile uint8_t __evenaccess * )0x00087065 )
+#define ICU_IR102_ADDR			( ( volatile uint8_t __evenaccess * )0x00087066 )
+#define ICU_IR103_ADDR			( ( volatile uint8_t __evenaccess * )0x00087067 )
+#define ICU_IR104_ADDR			( ( volatile uint8_t __evenaccess * )0x00087068 )
+#define ICU_IR105_ADDR			( ( volatile uint8_t __evenaccess * )0x00087069 )
+#define ICU_IR106_ADDR			( ( volatile uint8_t __evenaccess * )0x0008706A )
+#define ICU_IR107_ADDR			( ( volatile uint8_t __evenaccess * )0x0008706B )
+#define ICU_IR108_ADDR			( ( volatile uint8_t __evenaccess * )0x0008706C )
+#define ICU_IR109_ADDR			( ( volatile uint8_t __evenaccess * )0x0008706D )
+#define ICU_IR110_ADDR			( ( volatile uint8_t __evenaccess * )0x0008706E )
+#define ICU_IR111_ADDR			( ( volatile uint8_t __evenaccess * )0x0008706F )
+#define ICU_IR112_ADDR			( ( volatile uint8_t __evenaccess * )0x00087070 )
+#define ICU_IR113_ADDR			( ( volatile uint8_t __evenaccess * )0x00087071 )
+#define ICU_IR114_ADDR			( ( volatile uint8_t __evenaccess * )0x00087072 )
+#define ICU_IR115_ADDR			( ( volatile uint8_t __evenaccess * )0x00087073 )
+#define ICU_IR116_ADDR			( ( volatile uint8_t __evenaccess * )0x00087074 )
+#define ICU_IR117_ADDR			( ( volatile uint8_t __evenaccess * )0x00087075 )
+#define ICU_IR118_ADDR			( ( volatile uint8_t __evenaccess * )0x00087076 )
+#define ICU_IR119_ADDR			( ( volatile uint8_t __evenaccess * )0x00087077 )
+#define ICU_IR120_ADDR			( ( volatile uint8_t __evenaccess * )0x00087078 )
+#define ICU_IR121_ADDR			( ( volatile uint8_t __evenaccess * )0x00087079 )
+#define ICU_IR122_ADDR			( ( volatile uint8_t __evenaccess * )0x0008707A )
+#define ICU_IR123_ADDR			( ( volatile uint8_t __evenaccess * )0x0008707B )
+#define ICU_IR124_ADDR			( ( volatile uint8_t __evenaccess * )0x0008707C )
+#define ICU_IR125_ADDR			( ( volatile uint8_t __evenaccess * )0x0008707D )
+#define ICU_IR126_ADDR			( ( volatile uint8_t __evenaccess * )0x0008707E )
+#define ICU_IR127_ADDR			( ( volatile uint8_t __evenaccess * )0x0008707F )
+#define ICU_IR128_ADDR			( ( volatile uint8_t __evenaccess * )0x00087080 )
+#define ICU_IR129_ADDR			( ( volatile uint8_t __evenaccess * )0x00087081 )
+#define ICU_IR130_ADDR			( ( volatile uint8_t __evenaccess * )0x00087082 )
+#define ICU_IR131_ADDR			( ( volatile uint8_t __evenaccess * )0x00087083 )
+#define ICU_IR132_ADDR			( ( volatile uint8_t __evenaccess * )0x00087084 )
+#define ICU_IR133_ADDR			( ( volatile uint8_t __evenaccess * )0x00087085 )
+#define ICU_IR134_ADDR			( ( volatile uint8_t __evenaccess * )0x00087086 )
+#define ICU_IR135_ADDR			( ( volatile uint8_t __evenaccess * )0x00087087 )
+#define ICU_IR136_ADDR			( ( volatile uint8_t __evenaccess * )0x00087088 )
+#define ICU_IR137_ADDR			( ( volatile uint8_t __evenaccess * )0x00087089 )
+#define ICU_IR138_ADDR			( ( volatile uint8_t __evenaccess * )0x0008708A )
+#define ICU_IR139_ADDR			( ( volatile uint8_t __evenaccess * )0x0008708B )
+#define ICU_IR140_ADDR			( ( volatile uint8_t __evenaccess * )0x0008708C )
+#define ICU_IR141_ADDR			( ( volatile uint8_t __evenaccess * )0x0008708D )
+#define ICU_IR142_ADDR			( ( volatile uint8_t __evenaccess * )0x0008708E )
+#define ICU_IR143_ADDR			( ( volatile uint8_t __evenaccess * )0x0008708F )
+#define ICU_IR144_ADDR			( ( volatile uint8_t __evenaccess * )0x00087090 )
+#define ICU_IR145_ADDR			( ( volatile uint8_t __evenaccess * )0x00087091 )
+#define ICU_IR146_ADDR			( ( volatile uint8_t __evenaccess * )0x00087092 )
+#define ICU_IR147_ADDR			( ( volatile uint8_t __evenaccess * )0x00087093 )
+#define ICU_IR148_ADDR			( ( volatile uint8_t __evenaccess * )0x00087094 )
+#define ICU_IR149_ADDR			( ( volatile uint8_t __evenaccess * )0x00087095 )
+#define ICU_IR150_ADDR			( ( volatile uint8_t __evenaccess * )0x00087096 )
+#define ICU_IR151_ADDR			( ( volatile uint8_t __evenaccess * )0x00087097 )
+#define ICU_IR152_ADDR			( ( volatile uint8_t __evenaccess * )0x00087098 )
+#define ICU_IR153_ADDR			( ( volatile uint8_t __evenaccess * )0x00087099 )
+#define ICU_IR154_ADDR			( ( volatile uint8_t __evenaccess * )0x0008709A )
+#define ICU_IR155_ADDR			( ( volatile uint8_t __evenaccess * )0x0008709B )
+#define ICU_IR156_ADDR			( ( volatile uint8_t __evenaccess * )0x0008709C )
+#define ICU_IR157_ADDR			( ( volatile uint8_t __evenaccess * )0x0008709D )
+#define ICU_IR158_ADDR			( ( volatile uint8_t __evenaccess * )0x0008709E )
+#define ICU_IR159_ADDR			( ( volatile uint8_t __evenaccess * )0x0008709F )
+#define ICU_IR160_ADDR			( ( volatile uint8_t __evenaccess * )0x000870A0 )
+#define ICU_IR161_ADDR			( ( volatile uint8_t __evenaccess * )0x000870A1 )
+#define ICU_IR162_ADDR			( ( volatile uint8_t __evenaccess * )0x000870A2 )
+#define ICU_IR163_ADDR			( ( volatile uint8_t __evenaccess * )0x000870A3 )
+#define ICU_IR164_ADDR			( ( volatile uint8_t __evenaccess * )0x000870A4 )
+#define ICU_IR165_ADDR			( ( volatile uint8_t __evenaccess * )0x000870A5 )
+#define ICU_IR166_ADDR			( ( volatile uint8_t __evenaccess * )0x000870A6 )
+#define ICU_IR167_ADDR			( ( volatile uint8_t __evenaccess * )0x000870A7 )
+#define ICU_IR168_ADDR			( ( volatile uint8_t __evenaccess * )0x000870A8 )
+#define ICU_IR169_ADDR			( ( volatile uint8_t __evenaccess * )0x000870A9 )
+#define ICU_IR170_ADDR			( ( volatile uint8_t __evenaccess * )0x000870AA )
+#define ICU_IR171_ADDR			( ( volatile uint8_t __evenaccess * )0x000870AB )
+#define ICU_IR172_ADDR			( ( volatile uint8_t __evenaccess * )0x000870AC )
+#define ICU_IR173_ADDR			( ( volatile uint8_t __evenaccess * )0x000870AD )
+#define ICU_IR174_ADDR			( ( volatile uint8_t __evenaccess * )0x000870AE )
+#define ICU_IR175_ADDR			( ( volatile uint8_t __evenaccess * )0x000870AF )
+#define ICU_IR176_ADDR			( ( volatile uint8_t __evenaccess * )0x000870B0 )
+#define ICU_IR177_ADDR			( ( volatile uint8_t __evenaccess * )0x000870B1 )
+#define ICU_IR178_ADDR			( ( volatile uint8_t __evenaccess * )0x000870B2 )
+#define ICU_IR179_ADDR			( ( volatile uint8_t __evenaccess * )0x000870B3 )
+#define ICU_IR180_ADDR			( ( volatile uint8_t __evenaccess * )0x000870B4 )
+#define ICU_IR181_ADDR			( ( volatile uint8_t __evenaccess * )0x000870B5 )
+#define ICU_IR182_ADDR			( ( volatile uint8_t __evenaccess * )0x000870B6 )
+#define ICU_IR183_ADDR			( ( volatile uint8_t __evenaccess * )0x000870B7 )
+#define ICU_IR184_ADDR			( ( volatile uint8_t __evenaccess * )0x000870B8 )
+#define ICU_IR185_ADDR			( ( volatile uint8_t __evenaccess * )0x000870B9 )
+#define ICU_IR186_ADDR			( ( volatile uint8_t __evenaccess * )0x000870BA )
+#define ICU_IR187_ADDR			( ( volatile uint8_t __evenaccess * )0x000870BB )
+#define ICU_IR188_ADDR			( ( volatile uint8_t __evenaccess * )0x000870BC )
+#define ICU_IR189_ADDR			( ( volatile uint8_t __evenaccess * )0x000870BD )
+#define ICU_IR190_ADDR			( ( volatile uint8_t __evenaccess * )0x000870BE )
+#define ICU_IR191_ADDR			( ( volatile uint8_t __evenaccess * )0x000870BF )
+#define ICU_IR192_ADDR			( ( volatile uint8_t __evenaccess * )0x000870C0 )
+#define ICU_IR193_ADDR			( ( volatile uint8_t __evenaccess * )0x000870C1 )
+#define ICU_IR194_ADDR			( ( volatile uint8_t __evenaccess * )0x000870C2 )
+#define ICU_IR195_ADDR			( ( volatile uint8_t __evenaccess * )0x000870C3 )
+#define ICU_IR196_ADDR			( ( volatile uint8_t __evenaccess * )0x000870C4 )
+#define ICU_IR197_ADDR			( ( volatile uint8_t __evenaccess * )0x000870C5 )
+#define ICU_IR198_ADDR			( ( volatile uint8_t __evenaccess * )0x000870C6 )
+#define ICU_IR199_ADDR			( ( volatile uint8_t __evenaccess * )0x000870C7 )
+#define ICU_IR200_ADDR			( ( volatile uint8_t __evenaccess * )0x000870C8 )
+#define ICU_IR201_ADDR			( ( volatile uint8_t __evenaccess * )0x000870C9 )
+#define ICU_IR202_ADDR			( ( volatile uint8_t __evenaccess * )0x000870CA )
+#define ICU_IR203_ADDR			( ( volatile uint8_t __evenaccess * )0x000870CB )
+#define ICU_IR204_ADDR			( ( volatile uint8_t __evenaccess * )0x000870CC )
+#define ICU_IR205_ADDR			( ( volatile uint8_t __evenaccess * )0x000870CD )
+#define ICU_IR206_ADDR			( ( volatile uint8_t __evenaccess * )0x000870CE )
+#define ICU_IR207_ADDR			( ( volatile uint8_t __evenaccess * )0x000870CF )
+#define ICU_IR208_ADDR			( ( volatile uint8_t __evenaccess * )0x000870D0 )
+#define ICU_IR209_ADDR			( ( volatile uint8_t __evenaccess * )0x000870D1 )
+#define ICU_IR210_ADDR			( ( volatile uint8_t __evenaccess * )0x000870D2 )
+#define ICU_IR211_ADDR			( ( volatile uint8_t __evenaccess * )0x000870D3 )
+#define ICU_IR212_ADDR			( ( volatile uint8_t __evenaccess * )0x000870D4 )
+#define ICU_IR213_ADDR			( ( volatile uint8_t __evenaccess * )0x000870D5 )
+#define ICU_IR214_ADDR			( ( volatile uint8_t __evenaccess * )0x000870D6 )
+#define ICU_IR215_ADDR			( ( volatile uint8_t __evenaccess * )0x000870D7 )
+#define ICU_IR216_ADDR			( ( volatile uint8_t __evenaccess * )0x000870D8 )
+#define ICU_IR217_ADDR			( ( volatile uint8_t __evenaccess * )0x000870D9 )
+#define ICU_IR218_ADDR			( ( volatile uint8_t __evenaccess * )0x000870DA )
+#define ICU_IR219_ADDR			( ( volatile uint8_t __evenaccess * )0x000870DB )
+#define ICU_IR220_ADDR			( ( volatile uint8_t __evenaccess * )0x000870DC )
+#define ICU_IR221_ADDR			( ( volatile uint8_t __evenaccess * )0x000870DD )
+#define ICU_IR222_ADDR			( ( volatile uint8_t __evenaccess * )0x000870DE )
+#define ICU_IR223_ADDR			( ( volatile uint8_t __evenaccess * )0x000870DF )
+#define ICU_IR224_ADDR			( ( volatile uint8_t __evenaccess * )0x000870E0 )
+#define ICU_IR225_ADDR			( ( volatile uint8_t __evenaccess * )0x000870E1 )
+#define ICU_IR226_ADDR			( ( volatile uint8_t __evenaccess * )0x000870E2 )
+#define ICU_IR227_ADDR			( ( volatile uint8_t __evenaccess * )0x000870E3 )
+#define ICU_IR228_ADDR			( ( volatile uint8_t __evenaccess * )0x000870E4 )
+#define ICU_IR229_ADDR			( ( volatile uint8_t __evenaccess * )0x000870E5 )
+#define ICU_IR230_ADDR			( ( volatile uint8_t __evenaccess * )0x000870E6 )
+#define ICU_IR231_ADDR			( ( volatile uint8_t __evenaccess * )0x000870E7 )
+#define ICU_IR232_ADDR			( ( volatile uint8_t __evenaccess * )0x000870E8 )
+#define ICU_IR233_ADDR			( ( volatile uint8_t __evenaccess * )0x000870E9 )
+#define ICU_IR234_ADDR			( ( volatile uint8_t __evenaccess * )0x000870EA )
+#define ICU_IR235_ADDR			( ( volatile uint8_t __evenaccess * )0x000870EB )
+#define ICU_IR236_ADDR			( ( volatile uint8_t __evenaccess * )0x000870EC )
+#define ICU_IR237_ADDR			( ( volatile uint8_t __evenaccess * )0x000870ED )
+#define ICU_IR238_ADDR			( ( volatile uint8_t __evenaccess * )0x000870EE )
+#define ICU_IR239_ADDR			( ( volatile uint8_t __evenaccess * )0x000870EF )
+#define ICU_IR240_ADDR			( ( volatile uint8_t __evenaccess * )0x000870F0 )
+#define ICU_IR241_ADDR			( ( volatile uint8_t __evenaccess * )0x000870F1 )
+#define ICU_IR242_ADDR			( ( volatile uint8_t __evenaccess * )0x000870F2 )
+#define ICU_IR243_ADDR			( ( volatile uint8_t __evenaccess * )0x000870F3 )
+#define ICU_IR244_ADDR			( ( volatile uint8_t __evenaccess * )0x000870F4 )
+#define ICU_IR245_ADDR			( ( volatile uint8_t __evenaccess * )0x000870F5 )
+#define ICU_IR246_ADDR			( ( volatile uint8_t __evenaccess * )0x000870F6 )
+#define ICU_IR247_ADDR			( ( volatile uint8_t __evenaccess * )0x000870F7 )
+#define ICU_IR248_ADDR			( ( volatile uint8_t __evenaccess * )0x000870F8 )
+#define ICU_IR249_ADDR			( ( volatile uint8_t __evenaccess * )0x000870F9 )
+#define ICU_IR250_ADDR			( ( volatile uint8_t __evenaccess * )0x000870FA )
+#define ICU_IR251_ADDR			( ( volatile uint8_t __evenaccess * )0x000870FB )
+#define ICU_IR252_ADDR			( ( volatile uint8_t __evenaccess * )0x000870FC )
+#define ICU_IR253_ADDR			( ( volatile uint8_t __evenaccess * )0x000870FD )
+#define ICU_IR254_ADDR			( ( volatile uint8_t __evenaccess * )0x000870FE )
+#define ICU_IR255_ADDR			( ( volatile uint8_t __evenaccess * )0x000870FF )
+#define ICU_IR_BIT				( 1U << 0U )
+
+/*
+ * èÝvæÝèWX^
+ */
+#define ICU_ISELR000_ADDR		( ( volatile uint8_t __evenaccess * )0x00087100 )
+#define ICU_ISELR001_ADDR		( ( volatile uint8_t __evenaccess * )0x00087101 )
+#define ICU_ISELR002_ADDR		( ( volatile uint8_t __evenaccess * )0x00087102 )
+#define ICU_ISELR003_ADDR		( ( volatile uint8_t __evenaccess * )0x00087103 )
+#define ICU_ISELR004_ADDR		( ( volatile uint8_t __evenaccess * )0x00087104 )
+#define ICU_ISELR005_ADDR		( ( volatile uint8_t __evenaccess * )0x00087105 )
+#define ICU_ISELR006_ADDR		( ( volatile uint8_t __evenaccess * )0x00087106 )
+#define ICU_ISELR007_ADDR		( ( volatile uint8_t __evenaccess * )0x00087107 )
+#define ICU_ISELR008_ADDR		( ( volatile uint8_t __evenaccess * )0x00087108 )
+#define ICU_ISELR009_ADDR		( ( volatile uint8_t __evenaccess * )0x00087109 )
+#define ICU_ISELR010_ADDR		( ( volatile uint8_t __evenaccess * )0x0008710A )
+#define ICU_ISELR011_ADDR		( ( volatile uint8_t __evenaccess * )0x0008710B )
+#define ICU_ISELR012_ADDR		( ( volatile uint8_t __evenaccess * )0x0008710C )
+#define ICU_ISELR013_ADDR		( ( volatile uint8_t __evenaccess * )0x0008710D )
+#define ICU_ISELR014_ADDR		( ( volatile uint8_t __evenaccess * )0x0008710E )
+#define ICU_ISELR015_ADDR		( ( volatile uint8_t __evenaccess * )0x0008710F )
+#define ICU_ISELR016_ADDR		( ( volatile uint8_t __evenaccess * )0x00087110 )
+#define ICU_ISELR017_ADDR		( ( volatile uint8_t __evenaccess * )0x00087111 )
+#define ICU_ISELR018_ADDR		( ( volatile uint8_t __evenaccess * )0x00087112 )
+#define ICU_ISELR019_ADDR		( ( volatile uint8_t __evenaccess * )0x00087113 )
+#define ICU_ISELR020_ADDR		( ( volatile uint8_t __evenaccess * )0x00087114 )
+#define ICU_ISELR021_ADDR		( ( volatile uint8_t __evenaccess * )0x00087115 )
+#define ICU_ISELR022_ADDR		( ( volatile uint8_t __evenaccess * )0x00087116 )
+#define ICU_ISELR023_ADDR		( ( volatile uint8_t __evenaccess * )0x00087117 )
+#define ICU_ISELR024_ADDR		( ( volatile uint8_t __evenaccess * )0x00087118 )
+#define ICU_ISELR025_ADDR		( ( volatile uint8_t __evenaccess * )0x00087119 )
+#define ICU_ISELR026_ADDR		( ( volatile uint8_t __evenaccess * )0x0008711A )
+#define ICU_ISELR027_ADDR		( ( volatile uint8_t __evenaccess * )0x0008711B )
+#define ICU_ISELR028_ADDR		( ( volatile uint8_t __evenaccess * )0x0008711C )
+#define ICU_ISELR029_ADDR		( ( volatile uint8_t __evenaccess * )0x0008711D )
+#define ICU_ISELR030_ADDR		( ( volatile uint8_t __evenaccess * )0x0008711E )
+#define ICU_ISELR031_ADDR		( ( volatile uint8_t __evenaccess * )0x0008711F )
+#define ICU_ISELR032_ADDR		( ( volatile uint8_t __evenaccess * )0x00087120 )
+#define ICU_ISELR033_ADDR		( ( volatile uint8_t __evenaccess * )0x00087121 )
+#define ICU_ISELR034_ADDR		( ( volatile uint8_t __evenaccess * )0x00087122 )
+#define ICU_ISELR035_ADDR		( ( volatile uint8_t __evenaccess * )0x00087123 )
+#define ICU_ISELR036_ADDR		( ( volatile uint8_t __evenaccess * )0x00087124 )
+#define ICU_ISELR037_ADDR		( ( volatile uint8_t __evenaccess * )0x00087125 )
+#define ICU_ISELR038_ADDR		( ( volatile uint8_t __evenaccess * )0x00087126 )
+#define ICU_ISELR039_ADDR		( ( volatile uint8_t __evenaccess * )0x00087127 )
+#define ICU_ISELR040_ADDR		( ( volatile uint8_t __evenaccess * )0x00087128 )
+#define ICU_ISELR041_ADDR		( ( volatile uint8_t __evenaccess * )0x00087129 )
+#define ICU_ISELR042_ADDR		( ( volatile uint8_t __evenaccess * )0x0008712A )
+#define ICU_ISELR043_ADDR		( ( volatile uint8_t __evenaccess * )0x0008712B )
+#define ICU_ISELR044_ADDR		( ( volatile uint8_t __evenaccess * )0x0008712C )
+#define ICU_ISELR045_ADDR		( ( volatile uint8_t __evenaccess * )0x0008712D )
+#define ICU_ISELR046_ADDR		( ( volatile uint8_t __evenaccess * )0x0008712E )
+#define ICU_ISELR047_ADDR		( ( volatile uint8_t __evenaccess * )0x0008712F )
+#define ICU_ISELR048_ADDR		( ( volatile uint8_t __evenaccess * )0x00087130 )
+#define ICU_ISELR049_ADDR		( ( volatile uint8_t __evenaccess * )0x00087131 )
+#define ICU_ISELR050_ADDR		( ( volatile uint8_t __evenaccess * )0x00087132 )
+#define ICU_ISELR051_ADDR		( ( volatile uint8_t __evenaccess * )0x00087133 )
+#define ICU_ISELR052_ADDR		( ( volatile uint8_t __evenaccess * )0x00087134 )
+#define ICU_ISELR053_ADDR		( ( volatile uint8_t __evenaccess * )0x00087135 )
+#define ICU_ISELR054_ADDR		( ( volatile uint8_t __evenaccess * )0x00087136 )
+#define ICU_ISELR055_ADDR		( ( volatile uint8_t __evenaccess * )0x00087137 )
+#define ICU_ISELR056_ADDR		( ( volatile uint8_t __evenaccess * )0x00087138 )
+#define ICU_ISELR057_ADDR		( ( volatile uint8_t __evenaccess * )0x00087139 )
+#define ICU_ISELR058_ADDR		( ( volatile uint8_t __evenaccess * )0x0008713A )
+#define ICU_ISELR059_ADDR		( ( volatile uint8_t __evenaccess * )0x0008713B )
+#define ICU_ISELR060_ADDR		( ( volatile uint8_t __evenaccess * )0x0008713C )
+#define ICU_ISELR061_ADDR		( ( volatile uint8_t __evenaccess * )0x0008713D )
+#define ICU_ISELR062_ADDR		( ( volatile uint8_t __evenaccess * )0x0008713E )
+#define ICU_ISELR063_ADDR		( ( volatile uint8_t __evenaccess * )0x0008713F )
+#define ICU_ISELR064_ADDR		( ( volatile uint8_t __evenaccess * )0x00087140 )
+#define ICU_ISELR065_ADDR		( ( volatile uint8_t __evenaccess * )0x00087141 )
+#define ICU_ISELR066_ADDR		( ( volatile uint8_t __evenaccess * )0x00087142 )
+#define ICU_ISELR067_ADDR		( ( volatile uint8_t __evenaccess * )0x00087143 )
+#define ICU_ISELR068_ADDR		( ( volatile uint8_t __evenaccess * )0x00087144 )
+#define ICU_ISELR069_ADDR		( ( volatile uint8_t __evenaccess * )0x00087145 )
+#define ICU_ISELR070_ADDR		( ( volatile uint8_t __evenaccess * )0x00087146 )
+#define ICU_ISELR071_ADDR		( ( volatile uint8_t __evenaccess * )0x00087147 )
+#define ICU_ISELR072_ADDR		( ( volatile uint8_t __evenaccess * )0x00087148 )
+#define ICU_ISELR073_ADDR		( ( volatile uint8_t __evenaccess * )0x00087149 )
+#define ICU_ISELR074_ADDR		( ( volatile uint8_t __evenaccess * )0x0008714A )
+#define ICU_ISELR075_ADDR		( ( volatile uint8_t __evenaccess * )0x0008714B )
+#define ICU_ISELR076_ADDR		( ( volatile uint8_t __evenaccess * )0x0008714C )
+#define ICU_ISELR077_ADDR		( ( volatile uint8_t __evenaccess * )0x0008714D )
+#define ICU_ISELR078_ADDR		( ( volatile uint8_t __evenaccess * )0x0008714E )
+#define ICU_ISELR079_ADDR		( ( volatile uint8_t __evenaccess * )0x0008714F )
+#define ICU_ISELR080_ADDR		( ( volatile uint8_t __evenaccess * )0x00087150 )
+#define ICU_ISELR081_ADDR		( ( volatile uint8_t __evenaccess * )0x00087151 )
+#define ICU_ISELR082_ADDR		( ( volatile uint8_t __evenaccess * )0x00087152 )
+#define ICU_ISELR083_ADDR		( ( volatile uint8_t __evenaccess * )0x00087153 )
+#define ICU_ISELR084_ADDR		( ( volatile uint8_t __evenaccess * )0x00087154 )
+#define ICU_ISELR085_ADDR		( ( volatile uint8_t __evenaccess * )0x00087155 )
+#define ICU_ISELR086_ADDR		( ( volatile uint8_t __evenaccess * )0x00087156 )
+#define ICU_ISELR087_ADDR		( ( volatile uint8_t __evenaccess * )0x00087157 )
+#define ICU_ISELR088_ADDR		( ( volatile uint8_t __evenaccess * )0x00087158 )
+#define ICU_ISELR089_ADDR		( ( volatile uint8_t __evenaccess * )0x00087159 )
+#define ICU_ISELR090_ADDR		( ( volatile uint8_t __evenaccess * )0x0008715A )
+#define ICU_ISELR091_ADDR		( ( volatile uint8_t __evenaccess * )0x0008715B )
+#define ICU_ISELR092_ADDR		( ( volatile uint8_t __evenaccess * )0x0008715C )
+#define ICU_ISELR093_ADDR		( ( volatile uint8_t __evenaccess * )0x0008715D )
+#define ICU_ISELR094_ADDR		( ( volatile uint8_t __evenaccess * )0x0008715E )
+#define ICU_ISELR095_ADDR		( ( volatile uint8_t __evenaccess * )0x0008715F )
+#define ICU_ISELR096_ADDR		( ( volatile uint8_t __evenaccess * )0x00087160 )
+#define ICU_ISELR097_ADDR		( ( volatile uint8_t __evenaccess * )0x00087161 )
+#define ICU_ISELR098_ADDR		( ( volatile uint8_t __evenaccess * )0x00087162 )
+#define ICU_ISELR099_ADDR		( ( volatile uint8_t __evenaccess * )0x00087163 )
+#define ICU_ISELR100_ADDR		( ( volatile uint8_t __evenaccess * )0x00087164 )
+#define ICU_ISELR101_ADDR		( ( volatile uint8_t __evenaccess * )0x00087165 )
+#define ICU_ISELR102_ADDR		( ( volatile uint8_t __evenaccess * )0x00087166 )
+#define ICU_ISELR103_ADDR		( ( volatile uint8_t __evenaccess * )0x00087167 )
+#define ICU_ISELR104_ADDR		( ( volatile uint8_t __evenaccess * )0x00087168 )
+#define ICU_ISELR105_ADDR		( ( volatile uint8_t __evenaccess * )0x00087169 )
+#define ICU_ISELR106_ADDR		( ( volatile uint8_t __evenaccess * )0x0008716A )
+#define ICU_ISELR107_ADDR		( ( volatile uint8_t __evenaccess * )0x0008716B )
+#define ICU_ISELR108_ADDR		( ( volatile uint8_t __evenaccess * )0x0008716C )
+#define ICU_ISELR109_ADDR		( ( volatile uint8_t __evenaccess * )0x0008716D )
+#define ICU_ISELR110_ADDR		( ( volatile uint8_t __evenaccess * )0x0008716E )
+#define ICU_ISELR111_ADDR		( ( volatile uint8_t __evenaccess * )0x0008716F )
+#define ICU_ISELR112_ADDR		( ( volatile uint8_t __evenaccess * )0x00087170 )
+#define ICU_ISELR113_ADDR		( ( volatile uint8_t __evenaccess * )0x00087171 )
+#define ICU_ISELR114_ADDR		( ( volatile uint8_t __evenaccess * )0x00087172 )
+#define ICU_ISELR115_ADDR		( ( volatile uint8_t __evenaccess * )0x00087173 )
+#define ICU_ISELR116_ADDR		( ( volatile uint8_t __evenaccess * )0x00087174 )
+#define ICU_ISELR117_ADDR		( ( volatile uint8_t __evenaccess * )0x00087175 )
+#define ICU_ISELR118_ADDR		( ( volatile uint8_t __evenaccess * )0x00087176 )
+#define ICU_ISELR119_ADDR		( ( volatile uint8_t __evenaccess * )0x00087177 )
+#define ICU_ISELR120_ADDR		( ( volatile uint8_t __evenaccess * )0x00087178 )
+#define ICU_ISELR121_ADDR		( ( volatile uint8_t __evenaccess * )0x00087179 )
+#define ICU_ISELR122_ADDR		( ( volatile uint8_t __evenaccess * )0x0008717A )
+#define ICU_ISELR123_ADDR		( ( volatile uint8_t __evenaccess * )0x0008717B )
+#define ICU_ISELR124_ADDR		( ( volatile uint8_t __evenaccess * )0x0008717C )
+#define ICU_ISELR125_ADDR		( ( volatile uint8_t __evenaccess * )0x0008717D )
+#define ICU_ISELR126_ADDR		( ( volatile uint8_t __evenaccess * )0x0008717E )
+#define ICU_ISELR127_ADDR		( ( volatile uint8_t __evenaccess * )0x0008717F )
+#define ICU_ISELR128_ADDR		( ( volatile uint8_t __evenaccess * )0x00087180 )
+#define ICU_ISELR129_ADDR		( ( volatile uint8_t __evenaccess * )0x00087181 )
+#define ICU_ISELR130_ADDR		( ( volatile uint8_t __evenaccess * )0x00087182 )
+#define ICU_ISELR131_ADDR		( ( volatile uint8_t __evenaccess * )0x00087183 )
+#define ICU_ISELR132_ADDR		( ( volatile uint8_t __evenaccess * )0x00087184 )
+#define ICU_ISELR133_ADDR		( ( volatile uint8_t __evenaccess * )0x00087185 )
+#define ICU_ISELR134_ADDR		( ( volatile uint8_t __evenaccess * )0x00087186 )
+#define ICU_ISELR135_ADDR		( ( volatile uint8_t __evenaccess * )0x00087187 )
+#define ICU_ISELR136_ADDR		( ( volatile uint8_t __evenaccess * )0x00087188 )
+#define ICU_ISELR137_ADDR		( ( volatile uint8_t __evenaccess * )0x00087189 )
+#define ICU_ISELR138_ADDR		( ( volatile uint8_t __evenaccess * )0x0008718A )
+#define ICU_ISELR139_ADDR		( ( volatile uint8_t __evenaccess * )0x0008718B )
+#define ICU_ISELR140_ADDR		( ( volatile uint8_t __evenaccess * )0x0008718C )
+#define ICU_ISELR141_ADDR		( ( volatile uint8_t __evenaccess * )0x0008718D )
+#define ICU_ISELR142_ADDR		( ( volatile uint8_t __evenaccess * )0x0008718E )
+#define ICU_ISELR143_ADDR		( ( volatile uint8_t __evenaccess * )0x0008718F )
+#define ICU_ISELR144_ADDR		( ( volatile uint8_t __evenaccess * )0x00087190 )
+#define ICU_ISELR145_ADDR		( ( volatile uint8_t __evenaccess * )0x00087191 )
+#define ICU_ISELR146_ADDR		( ( volatile uint8_t __evenaccess * )0x00087192 )
+#define ICU_ISELR147_ADDR		( ( volatile uint8_t __evenaccess * )0x00087193 )
+#define ICU_ISELR148_ADDR		( ( volatile uint8_t __evenaccess * )0x00087194 )
+#define ICU_ISELR149_ADDR		( ( volatile uint8_t __evenaccess * )0x00087195 )
+#define ICU_ISELR150_ADDR		( ( volatile uint8_t __evenaccess * )0x00087196 )
+#define ICU_ISELR151_ADDR		( ( volatile uint8_t __evenaccess * )0x00087197 )
+#define ICU_ISELR152_ADDR		( ( volatile uint8_t __evenaccess * )0x00087198 )
+#define ICU_ISELR153_ADDR		( ( volatile uint8_t __evenaccess * )0x00087199 )
+#define ICU_ISELR154_ADDR		( ( volatile uint8_t __evenaccess * )0x0008719A )
+#define ICU_ISELR155_ADDR		( ( volatile uint8_t __evenaccess * )0x0008719B )
+#define ICU_ISELR156_ADDR		( ( volatile uint8_t __evenaccess * )0x0008719C )
+#define ICU_ISELR157_ADDR		( ( volatile uint8_t __evenaccess * )0x0008719D )
+#define ICU_ISELR158_ADDR		( ( volatile uint8_t __evenaccess * )0x0008719E )
+#define ICU_ISELR159_ADDR		( ( volatile uint8_t __evenaccess * )0x0008719F )
+#define ICU_ISELR160_ADDR		( ( volatile uint8_t __evenaccess * )0x000871A0 )
+#define ICU_ISELR161_ADDR		( ( volatile uint8_t __evenaccess * )0x000871A1 )
+#define ICU_ISELR162_ADDR		( ( volatile uint8_t __evenaccess * )0x000871A2 )
+#define ICU_ISELR163_ADDR		( ( volatile uint8_t __evenaccess * )0x000871A3 )
+#define ICU_ISELR164_ADDR		( ( volatile uint8_t __evenaccess * )0x000871A4 )
+#define ICU_ISELR165_ADDR		( ( volatile uint8_t __evenaccess * )0x000871A5 )
+#define ICU_ISELR166_ADDR		( ( volatile uint8_t __evenaccess * )0x000871A6 )
+#define ICU_ISELR167_ADDR		( ( volatile uint8_t __evenaccess * )0x000871A7 )
+#define ICU_ISELR168_ADDR		( ( volatile uint8_t __evenaccess * )0x000871A8 )
+#define ICU_ISELR169_ADDR		( ( volatile uint8_t __evenaccess * )0x000871A9 )
+#define ICU_ISELR170_ADDR		( ( volatile uint8_t __evenaccess * )0x000871AA )
+#define ICU_ISELR171_ADDR		( ( volatile uint8_t __evenaccess * )0x000871AB )
+#define ICU_ISELR172_ADDR		( ( volatile uint8_t __evenaccess * )0x000871AC )
+#define ICU_ISELR173_ADDR		( ( volatile uint8_t __evenaccess * )0x000871AD )
+#define ICU_ISELR174_ADDR		( ( volatile uint8_t __evenaccess * )0x000871AE )
+#define ICU_ISELR175_ADDR		( ( volatile uint8_t __evenaccess * )0x000871AF )
+#define ICU_ISELR176_ADDR		( ( volatile uint8_t __evenaccess * )0x000871B0 )
+#define ICU_ISELR177_ADDR		( ( volatile uint8_t __evenaccess * )0x000871B1 )
+#define ICU_ISELR178_ADDR		( ( volatile uint8_t __evenaccess * )0x000871B2 )
+#define ICU_ISELR179_ADDR		( ( volatile uint8_t __evenaccess * )0x000871B3 )
+#define ICU_ISELR180_ADDR		( ( volatile uint8_t __evenaccess * )0x000871B4 )
+#define ICU_ISELR181_ADDR		( ( volatile uint8_t __evenaccess * )0x000871B5 )
+#define ICU_ISELR182_ADDR		( ( volatile uint8_t __evenaccess * )0x000871B6 )
+#define ICU_ISELR183_ADDR		( ( volatile uint8_t __evenaccess * )0x000871B7 )
+#define ICU_ISELR184_ADDR		( ( volatile uint8_t __evenaccess * )0x000871B8 )
+#define ICU_ISELR185_ADDR		( ( volatile uint8_t __evenaccess * )0x000871B9 )
+#define ICU_ISELR186_ADDR		( ( volatile uint8_t __evenaccess * )0x000871BA )
+#define ICU_ISELR187_ADDR		( ( volatile uint8_t __evenaccess * )0x000871BB )
+#define ICU_ISELR188_ADDR		( ( volatile uint8_t __evenaccess * )0x000871BC )
+#define ICU_ISELR189_ADDR		( ( volatile uint8_t __evenaccess * )0x000871BD )
+#define ICU_ISELR190_ADDR		( ( volatile uint8_t __evenaccess * )0x000871BE )
+#define ICU_ISELR191_ADDR		( ( volatile uint8_t __evenaccess * )0x000871BF )
+#define ICU_ISELR192_ADDR		( ( volatile uint8_t __evenaccess * )0x000871C0 )
+#define ICU_ISELR193_ADDR		( ( volatile uint8_t __evenaccess * )0x000871C1 )
+#define ICU_ISELR194_ADDR		( ( volatile uint8_t __evenaccess * )0x000871C2 )
+#define ICU_ISELR195_ADDR		( ( volatile uint8_t __evenaccess * )0x000871C3 )
+#define ICU_ISELR196_ADDR		( ( volatile uint8_t __evenaccess * )0x000871C4 )
+#define ICU_ISELR197_ADDR		( ( volatile uint8_t __evenaccess * )0x000871C5 )
+#define ICU_ISELR198_ADDR		( ( volatile uint8_t __evenaccess * )0x000871C6 )
+#define ICU_ISELR199_ADDR		( ( volatile uint8_t __evenaccess * )0x000871C7 )
+#define ICU_ISELR200_ADDR		( ( volatile uint8_t __evenaccess * )0x000871C8 )
+#define ICU_ISELR201_ADDR		( ( volatile uint8_t __evenaccess * )0x000871C9 )
+#define ICU_ISELR202_ADDR		( ( volatile uint8_t __evenaccess * )0x000871CA )
+#define ICU_ISELR203_ADDR		( ( volatile uint8_t __evenaccess * )0x000871CB )
+#define ICU_ISELR204_ADDR		( ( volatile uint8_t __evenaccess * )0x000871CC )
+#define ICU_ISELR205_ADDR		( ( volatile uint8_t __evenaccess * )0x000871CD )
+#define ICU_ISELR206_ADDR		( ( volatile uint8_t __evenaccess * )0x000871CE )
+#define ICU_ISELR207_ADDR		( ( volatile uint8_t __evenaccess * )0x000871CF )
+#define ICU_ISELR208_ADDR		( ( volatile uint8_t __evenaccess * )0x000871D0 )
+#define ICU_ISELR209_ADDR		( ( volatile uint8_t __evenaccess * )0x000871D1 )
+#define ICU_ISELR210_ADDR		( ( volatile uint8_t __evenaccess * )0x000871D2 )
+#define ICU_ISELR211_ADDR		( ( volatile uint8_t __evenaccess * )0x000871D3 )
+#define ICU_ISELR212_ADDR		( ( volatile uint8_t __evenaccess * )0x000871D4 )
+#define ICU_ISELR213_ADDR		( ( volatile uint8_t __evenaccess * )0x000871D5 )
+#define ICU_ISELR214_ADDR		( ( volatile uint8_t __evenaccess * )0x000871D6 )
+#define ICU_ISELR215_ADDR		( ( volatile uint8_t __evenaccess * )0x000871D7 )
+#define ICU_ISELR216_ADDR		( ( volatile uint8_t __evenaccess * )0x000871D8 )
+#define ICU_ISELR217_ADDR		( ( volatile uint8_t __evenaccess * )0x000871D9 )
+#define ICU_ISELR218_ADDR		( ( volatile uint8_t __evenaccess * )0x000871DA )
+#define ICU_ISELR219_ADDR		( ( volatile uint8_t __evenaccess * )0x000871DB )
+#define ICU_ISELR220_ADDR		( ( volatile uint8_t __evenaccess * )0x000871DC )
+#define ICU_ISELR221_ADDR		( ( volatile uint8_t __evenaccess * )0x000871DD )
+#define ICU_ISELR222_ADDR		( ( volatile uint8_t __evenaccess * )0x000871DE )
+#define ICU_ISELR223_ADDR		( ( volatile uint8_t __evenaccess * )0x000871DF )
+#define ICU_ISELR224_ADDR		( ( volatile uint8_t __evenaccess * )0x000871E0 )
+#define ICU_ISELR225_ADDR		( ( volatile uint8_t __evenaccess * )0x000871E1 )
+#define ICU_ISELR226_ADDR		( ( volatile uint8_t __evenaccess * )0x000871E2 )
+#define ICU_ISELR227_ADDR		( ( volatile uint8_t __evenaccess * )0x000871E3 )
+#define ICU_ISELR228_ADDR		( ( volatile uint8_t __evenaccess * )0x000871E4 )
+#define ICU_ISELR229_ADDR		( ( volatile uint8_t __evenaccess * )0x000871E5 )
+#define ICU_ISELR230_ADDR		( ( volatile uint8_t __evenaccess * )0x000871E6 )
+#define ICU_ISELR231_ADDR		( ( volatile uint8_t __evenaccess * )0x000871E7 )
+#define ICU_ISELR232_ADDR		( ( volatile uint8_t __evenaccess * )0x000871E8 )
+#define ICU_ISELR233_ADDR		( ( volatile uint8_t __evenaccess * )0x000871E9 )
+#define ICU_ISELR234_ADDR		( ( volatile uint8_t __evenaccess * )0x000871EA )
+#define ICU_ISELR235_ADDR		( ( volatile uint8_t __evenaccess * )0x000871EB )
+#define ICU_ISELR236_ADDR		( ( volatile uint8_t __evenaccess * )0x000871EC )
+#define ICU_ISELR237_ADDR		( ( volatile uint8_t __evenaccess * )0x000871ED )
+#define ICU_ISELR238_ADDR		( ( volatile uint8_t __evenaccess * )0x000871EE )
+#define ICU_ISELR239_ADDR		( ( volatile uint8_t __evenaccess * )0x000871EF )
+#define ICU_ISELR240_ADDR		( ( volatile uint8_t __evenaccess * )0x000871F0 )
+#define ICU_ISELR241_ADDR		( ( volatile uint8_t __evenaccess * )0x000871F1 )
+#define ICU_ISELR242_ADDR		( ( volatile uint8_t __evenaccess * )0x000871F2 )
+#define ICU_ISELR243_ADDR		( ( volatile uint8_t __evenaccess * )0x000871F3 )
+#define ICU_ISELR244_ADDR		( ( volatile uint8_t __evenaccess * )0x000871F4 )
+#define ICU_ISELR245_ADDR		( ( volatile uint8_t __evenaccess * )0x000871F5 )
+#define ICU_ISELR246_ADDR		( ( volatile uint8_t __evenaccess * )0x000871F6 )
+#define ICU_ISELR247_ADDR		( ( volatile uint8_t __evenaccess * )0x000871F7 )
+#define ICU_ISELR248_ADDR		( ( volatile uint8_t __evenaccess * )0x000871F8 )
+#define ICU_ISELR249_ADDR		( ( volatile uint8_t __evenaccess * )0x000871F9 )
+#define ICU_ISELR250_ADDR		( ( volatile uint8_t __evenaccess * )0x000871FA )
+#define ICU_ISELR251_ADDR		( ( volatile uint8_t __evenaccess * )0x000871FB )
+#define ICU_ISELR252_ADDR		( ( volatile uint8_t __evenaccess * )0x000871FC )
+#define ICU_ISELR253_ADDR		( ( volatile uint8_t __evenaccess * )0x000871FD )
+#define ICU_ISELR254_ADDR		( ( volatile uint8_t __evenaccess * )0x000871FE )
+#define ICU_ISELR255_ADDR		( ( volatile uint8_t __evenaccess * )0x000871FF )
+#define ICU_ISEL_BIT			( 3U << 0U )
+
+/*
+ * èÝvÂWX^
+ */
+#define ICU_IER02_ADDR			( ( volatile uint8_t __evenaccess * )0x00087202 )
+#define ICU_IER03_ADDR			( ( volatile uint8_t __evenaccess * )0x00087203 )
+#define ICU_IER04_ADDR			( ( volatile uint8_t __evenaccess * )0x00087204 )
+#define ICU_IER05_ADDR			( ( volatile uint8_t __evenaccess * )0x00087205 )
+#define ICU_IER06_ADDR			( ( volatile uint8_t __evenaccess * )0x00087206 )
+#define ICU_IER07_ADDR			( ( volatile uint8_t __evenaccess * )0x00087207 )
+#define ICU_IER08_ADDR			( ( volatile uint8_t __evenaccess * )0x00087208 )
+#define ICU_IER09_ADDR			( ( volatile uint8_t __evenaccess * )0x00087209 )
+#define ICU_IER0B_ADDR			( ( volatile uint8_t __evenaccess * )0x0008720B )
+#define ICU_IER0C_ADDR			( ( volatile uint8_t __evenaccess * )0x0008720C )
+#define ICU_IER0D_ADDR			( ( volatile uint8_t __evenaccess * )0x0008720D )
+#define ICU_IER0E_ADDR			( ( volatile uint8_t __evenaccess * )0x0008720E )
+#define ICU_IER0F_ADDR			( ( volatile uint8_t __evenaccess * )0x0008720F )
+#define ICU_IER10_ADDR			( ( volatile uint8_t __evenaccess * )0x00087210 )
+#define ICU_IER11_ADDR			( ( volatile uint8_t __evenaccess * )0x00087211 )
+#define ICU_IER12_ADDR			( ( volatile uint8_t __evenaccess * )0x00087212 )
+#define ICU_IER13_ADDR			( ( volatile uint8_t __evenaccess * )0x00087213 )
+#define ICU_IER14_ADDR			( ( volatile uint8_t __evenaccess * )0x00087214 )
+#define ICU_IER15_ADDR			( ( volatile uint8_t __evenaccess * )0x00087215 )
+#define ICU_IER16_ADDR			( ( volatile uint8_t __evenaccess * )0x00087216 )
+#define ICU_IER17_ADDR			( ( volatile uint8_t __evenaccess * )0x00087217 )
+#define ICU_IER18_ADDR			( ( volatile uint8_t __evenaccess * )0x00087218 )
+#define ICU_IER19_ADDR			( ( volatile uint8_t __evenaccess * )0x00087219 )
+#define ICU_IER1A_ADDR			( ( volatile uint8_t __evenaccess * )0x0008721A )
+#define ICU_IER1B_ADDR			( ( volatile uint8_t __evenaccess * )0x0008721B )
+#define ICU_IER1C_ADDR			( ( volatile uint8_t __evenaccess * )0x0008721C )
+#define ICU_IER1D_ADDR			( ( volatile uint8_t __evenaccess * )0x0008721D )
+#define ICU_IER1E_ADDR			( ( volatile uint8_t __evenaccess * )0x0008721E )
+#define ICU_IER1F_ADDR			( ( volatile uint8_t __evenaccess * )0x0008721F )
+#define ICU_IEN0_BIT			( 1U << 0U )
+#define ICU_IEN1_BIT			( 1U << 1U )
+#define ICU_IEN2_BIT			( 1U << 2U )
+#define ICU_IEN3_BIT			( 1U << 3U )
+#define ICU_IEN4_BIT			( 1U << 4U )
+#define ICU_IEN5_BIT			( 1U << 5U )
+#define ICU_IEN6_BIT			( 1U << 6U )
+#define ICU_IEN7_BIT			( 1U << 7U )
+
+/* 
+ * èÝvövCIeBWX^i(i=0`253)ÌÝè
+ */
+#define ICU_IPR000_ADDR			( ( volatile uint8_t __evenaccess * )0x00087300 )
+#define ICU_IPR001_ADDR			( ( volatile uint8_t __evenaccess * )0x00087301 )
+#define ICU_IPR002_ADDR			( ( volatile uint8_t __evenaccess * )0x00087302 )
+#define ICU_IPR003_ADDR			( ( volatile uint8_t __evenaccess * )0x00087303 )
+#define ICU_IPR004_ADDR			( ( volatile uint8_t __evenaccess * )0x00087304 )
+#define ICU_IPR005_ADDR			( ( volatile uint8_t __evenaccess * )0x00087305 )
+#define ICU_IPR006_ADDR			( ( volatile uint8_t __evenaccess * )0x00087306 )
+#define ICU_IPR007_ADDR			( ( volatile uint8_t __evenaccess * )0x00087307 )
+#define ICU_IPR008_ADDR			( ( volatile uint8_t __evenaccess * )0x00087308 )
+#define ICU_IPR009_ADDR			( ( volatile uint8_t __evenaccess * )0x00087309 )
+#define ICU_IPR010_ADDR			( ( volatile uint8_t __evenaccess * )0x0008730A )
+#define ICU_IPR011_ADDR			( ( volatile uint8_t __evenaccess * )0x0008730B )
+#define ICU_IPR012_ADDR			( ( volatile uint8_t __evenaccess * )0x0008730C )
+#define ICU_IPR013_ADDR			( ( volatile uint8_t __evenaccess * )0x0008730D )
+#define ICU_IPR014_ADDR			( ( volatile uint8_t __evenaccess * )0x0008730E )
+#define ICU_IPR015_ADDR			( ( volatile uint8_t __evenaccess * )0x0008730F )
+#define ICU_IPR016_ADDR			( ( volatile uint8_t __evenaccess * )0x00087310 )
+#define ICU_IPR017_ADDR			( ( volatile uint8_t __evenaccess * )0x00087311 )
+#define ICU_IPR018_ADDR			( ( volatile uint8_t __evenaccess * )0x00087312 )
+#define ICU_IPR019_ADDR			( ( volatile uint8_t __evenaccess * )0x00087313 )
+#define ICU_IPR020_ADDR			( ( volatile uint8_t __evenaccess * )0x00087314 )
+#define ICU_IPR021_ADDR			( ( volatile uint8_t __evenaccess * )0x00087315 )
+#define ICU_IPR022_ADDR			( ( volatile uint8_t __evenaccess * )0x00087316 )
+#define ICU_IPR023_ADDR			( ( volatile uint8_t __evenaccess * )0x00087317 )
+#define ICU_IPR024_ADDR			( ( volatile uint8_t __evenaccess * )0x00087318 )
+#define ICU_IPR025_ADDR			( ( volatile uint8_t __evenaccess * )0x00087319 )
+#define ICU_IPR026_ADDR			( ( volatile uint8_t __evenaccess * )0x0008731A )
+#define ICU_IPR027_ADDR			( ( volatile uint8_t __evenaccess * )0x0008731B )
+#define ICU_IPR028_ADDR			( ( volatile uint8_t __evenaccess * )0x0008731C )
+#define ICU_IPR029_ADDR			( ( volatile uint8_t __evenaccess * )0x0008731D )
+#define ICU_IPR030_ADDR			( ( volatile uint8_t __evenaccess * )0x0008731E )
+#define ICU_IPR031_ADDR			( ( volatile uint8_t __evenaccess * )0x0008731F )
+#define ICU_IPR032_ADDR			( ( volatile uint8_t __evenaccess * )0x00087320 )
+#define ICU_IPR033_ADDR			( ( volatile uint8_t __evenaccess * )0x00087321 )
+#define ICU_IPR034_ADDR			( ( volatile uint8_t __evenaccess * )0x00087322 )
+#define ICU_IPR035_ADDR			( ( volatile uint8_t __evenaccess * )0x00087323 )
+#define ICU_IPR036_ADDR			( ( volatile uint8_t __evenaccess * )0x00087324 )
+#define ICU_IPR037_ADDR			( ( volatile uint8_t __evenaccess * )0x00087325 )
+#define ICU_IPR038_ADDR			( ( volatile uint8_t __evenaccess * )0x00087326 )
+#define ICU_IPR039_ADDR			( ( volatile uint8_t __evenaccess * )0x00087327 )
+#define ICU_IPR040_ADDR			( ( volatile uint8_t __evenaccess * )0x00087328 )
+#define ICU_IPR041_ADDR			( ( volatile uint8_t __evenaccess * )0x00087329 )
+#define ICU_IPR042_ADDR			( ( volatile uint8_t __evenaccess * )0x0008732A )
+#define ICU_IPR043_ADDR			( ( volatile uint8_t __evenaccess * )0x0008732B )
+#define ICU_IPR044_ADDR			( ( volatile uint8_t __evenaccess * )0x0008732C )
+#define ICU_IPR045_ADDR			( ( volatile uint8_t __evenaccess * )0x0008732D )
+#define ICU_IPR046_ADDR			( ( volatile uint8_t __evenaccess * )0x0008732E )
+#define ICU_IPR047_ADDR			( ( volatile uint8_t __evenaccess * )0x0008732F )
+#define ICU_IPR048_ADDR			( ( volatile uint8_t __evenaccess * )0x00087330 )
+#define ICU_IPR049_ADDR			( ( volatile uint8_t __evenaccess * )0x00087331 )
+#define ICU_IPR050_ADDR			( ( volatile uint8_t __evenaccess * )0x00087332 )
+#define ICU_IPR051_ADDR			( ( volatile uint8_t __evenaccess * )0x00087333 )
+#define ICU_IPR052_ADDR			( ( volatile uint8_t __evenaccess * )0x00087334 )
+#define ICU_IPR053_ADDR			( ( volatile uint8_t __evenaccess * )0x00087335 )
+#define ICU_IPR054_ADDR			( ( volatile uint8_t __evenaccess * )0x00087336 )
+#define ICU_IPR055_ADDR			( ( volatile uint8_t __evenaccess * )0x00087337 )
+#define ICU_IPR056_ADDR			( ( volatile uint8_t __evenaccess * )0x00087338 )
+#define ICU_IPR057_ADDR			( ( volatile uint8_t __evenaccess * )0x00087339 )
+#define ICU_IPR058_ADDR			( ( volatile uint8_t __evenaccess * )0x0008733A )
+#define ICU_IPR059_ADDR			( ( volatile uint8_t __evenaccess * )0x0008733B )
+#define ICU_IPR060_ADDR			( ( volatile uint8_t __evenaccess * )0x0008733C )
+#define ICU_IPR061_ADDR			( ( volatile uint8_t __evenaccess * )0x0008733D )
+#define ICU_IPR062_ADDR			( ( volatile uint8_t __evenaccess * )0x0008733E )
+#define ICU_IPR063_ADDR			( ( volatile uint8_t __evenaccess * )0x0008733F )
+#define ICU_IPR064_ADDR			( ( volatile uint8_t __evenaccess * )0x00087340 )
+#define ICU_IPR065_ADDR			( ( volatile uint8_t __evenaccess * )0x00087341 )
+#define ICU_IPR066_ADDR			( ( volatile uint8_t __evenaccess * )0x00087342 )
+#define ICU_IPR067_ADDR			( ( volatile uint8_t __evenaccess * )0x00087343 )
+#define ICU_IPR068_ADDR			( ( volatile uint8_t __evenaccess * )0x00087344 )
+#define ICU_IPR069_ADDR			( ( volatile uint8_t __evenaccess * )0x00087345 )
+#define ICU_IPR070_ADDR			( ( volatile uint8_t __evenaccess * )0x00087346 )
+#define ICU_IPR071_ADDR			( ( volatile uint8_t __evenaccess * )0x00087347 )
+#define ICU_IPR072_ADDR			( ( volatile uint8_t __evenaccess * )0x00087348 )
+#define ICU_IPR073_ADDR			( ( volatile uint8_t __evenaccess * )0x00087349 )
+#define ICU_IPR074_ADDR			( ( volatile uint8_t __evenaccess * )0x0008734A )
+#define ICU_IPR075_ADDR			( ( volatile uint8_t __evenaccess * )0x0008734B )
+#define ICU_IPR076_ADDR			( ( volatile uint8_t __evenaccess * )0x0008734C )
+#define ICU_IPR077_ADDR			( ( volatile uint8_t __evenaccess * )0x0008734D )
+#define ICU_IPR078_ADDR			( ( volatile uint8_t __evenaccess * )0x0008734E )
+#define ICU_IPR079_ADDR			( ( volatile uint8_t __evenaccess * )0x0008734F )
+#define ICU_IPR080_ADDR			( ( volatile uint8_t __evenaccess * )0x00087350 )
+#define ICU_IPR081_ADDR			( ( volatile uint8_t __evenaccess * )0x00087351 )
+#define ICU_IPR082_ADDR			( ( volatile uint8_t __evenaccess * )0x00087352 )
+#define ICU_IPR083_ADDR			( ( volatile uint8_t __evenaccess * )0x00087353 )
+#define ICU_IPR084_ADDR			( ( volatile uint8_t __evenaccess * )0x00087354 )
+#define ICU_IPR085_ADDR			( ( volatile uint8_t __evenaccess * )0x00087355 )
+#define ICU_IPR086_ADDR			( ( volatile uint8_t __evenaccess * )0x00087356 )
+#define ICU_IPR087_ADDR			( ( volatile uint8_t __evenaccess * )0x00087357 )
+#define ICU_IPR088_ADDR			( ( volatile uint8_t __evenaccess * )0x00087358 )
+#define ICU_IPR089_ADDR			( ( volatile uint8_t __evenaccess * )0x00087359 )
+#define ICU_IPR090_ADDR			( ( volatile uint8_t __evenaccess * )0x0008735A )
+#define ICU_IPR091_ADDR			( ( volatile uint8_t __evenaccess * )0x0008735B )
+#define ICU_IPR092_ADDR			( ( volatile uint8_t __evenaccess * )0x0008735C )
+#define ICU_IPR093_ADDR			( ( volatile uint8_t __evenaccess * )0x0008735D )
+#define ICU_IPR094_ADDR			( ( volatile uint8_t __evenaccess * )0x0008735E )
+#define ICU_IPR095_ADDR			( ( volatile uint8_t __evenaccess * )0x0008735F )
+#define ICU_IPR096_ADDR			( ( volatile uint8_t __evenaccess * )0x00087360 )
+#define ICU_IPR097_ADDR			( ( volatile uint8_t __evenaccess * )0x00087361 )
+#define ICU_IPR098_ADDR			( ( volatile uint8_t __evenaccess * )0x00087362 )
+#define ICU_IPR099_ADDR			( ( volatile uint8_t __evenaccess * )0x00087363 )
+#define ICU_IPR100_ADDR			( ( volatile uint8_t __evenaccess * )0x00087364 )
+#define ICU_IPR101_ADDR			( ( volatile uint8_t __evenaccess * )0x00087365 )
+#define ICU_IPR102_ADDR			( ( volatile uint8_t __evenaccess * )0x00087366 )
+#define ICU_IPR103_ADDR			( ( volatile uint8_t __evenaccess * )0x00087367 )
+#define ICU_IPR104_ADDR			( ( volatile uint8_t __evenaccess * )0x00087368 )
+#define ICU_IPR105_ADDR			( ( volatile uint8_t __evenaccess * )0x00087369 )
+#define ICU_IPR106_ADDR			( ( volatile uint8_t __evenaccess * )0x0008736A )
+#define ICU_IPR107_ADDR			( ( volatile uint8_t __evenaccess * )0x0008736B )
+#define ICU_IPR108_ADDR			( ( volatile uint8_t __evenaccess * )0x0008736C )
+#define ICU_IPR109_ADDR			( ( volatile uint8_t __evenaccess * )0x0008736D )
+#define ICU_IPR110_ADDR			( ( volatile uint8_t __evenaccess * )0x0008736E )
+#define ICU_IPR111_ADDR			( ( volatile uint8_t __evenaccess * )0x0008736F )
+#define ICU_IPR112_ADDR			( ( volatile uint8_t __evenaccess * )0x00087370 )
+#define ICU_IPR113_ADDR			( ( volatile uint8_t __evenaccess * )0x00087371 )
+#define ICU_IPR114_ADDR			( ( volatile uint8_t __evenaccess * )0x00087372 )
+#define ICU_IPR115_ADDR			( ( volatile uint8_t __evenaccess * )0x00087373 )
+#define ICU_IPR116_ADDR			( ( volatile uint8_t __evenaccess * )0x00087374 )
+#define ICU_IPR117_ADDR			( ( volatile uint8_t __evenaccess * )0x00087375 )
+#define ICU_IPR118_ADDR			( ( volatile uint8_t __evenaccess * )0x00087376 )
+#define ICU_IPR119_ADDR			( ( volatile uint8_t __evenaccess * )0x00087377 )
+#define ICU_IPR120_ADDR			( ( volatile uint8_t __evenaccess * )0x00087378 )
+#define ICU_IPR121_ADDR			( ( volatile uint8_t __evenaccess * )0x00087379 )
+#define ICU_IPR122_ADDR			( ( volatile uint8_t __evenaccess * )0x0008737A )
+#define ICU_IPR123_ADDR			( ( volatile uint8_t __evenaccess * )0x0008737B )
+#define ICU_IPR124_ADDR			( ( volatile uint8_t __evenaccess * )0x0008737C )
+#define ICU_IPR125_ADDR			( ( volatile uint8_t __evenaccess * )0x0008737D )
+#define ICU_IPR126_ADDR			( ( volatile uint8_t __evenaccess * )0x0008737E )
+#define ICU_IPR127_ADDR			( ( volatile uint8_t __evenaccess * )0x0008737F )
+#define ICU_IPR128_ADDR			( ( volatile uint8_t __evenaccess * )0x00087380 )
+#define ICU_IPR129_ADDR			( ( volatile uint8_t __evenaccess * )0x00087381 )
+#define ICU_IPR130_ADDR			( ( volatile uint8_t __evenaccess * )0x00087382 )
+#define ICU_IPR131_ADDR			( ( volatile uint8_t __evenaccess * )0x00087383 )
+#define ICU_IPR132_ADDR			( ( volatile uint8_t __evenaccess * )0x00087384 )
+#define ICU_IPR133_ADDR			( ( volatile uint8_t __evenaccess * )0x00087385 )
+#define ICU_IPR134_ADDR			( ( volatile uint8_t __evenaccess * )0x00087386 )
+#define ICU_IPR135_ADDR			( ( volatile uint8_t __evenaccess * )0x00087387 )
+#define ICU_IPR136_ADDR			( ( volatile uint8_t __evenaccess * )0x00087388 )
+#define ICU_IPR137_ADDR			( ( volatile uint8_t __evenaccess * )0x00087389 )
+#define ICU_IPR138_ADDR			( ( volatile uint8_t __evenaccess * )0x0008738A )
+#define ICU_IPR139_ADDR			( ( volatile uint8_t __evenaccess * )0x0008738B )
+#define ICU_IPR140_ADDR			( ( volatile uint8_t __evenaccess * )0x0008738C )
+#define ICU_IPR141_ADDR			( ( volatile uint8_t __evenaccess * )0x0008738D )
+#define ICU_IPR142_ADDR			( ( volatile uint8_t __evenaccess * )0x0008738E )
+#define ICU_IPR143_ADDR			( ( volatile uint8_t __evenaccess * )0x0008738F )
+#define ICU_IPR144_ADDR			( ( volatile uint8_t __evenaccess * )0x00087390 )
+#define ICU_IPR145_ADDR			( ( volatile uint8_t __evenaccess * )0x00087391 )
+#define ICU_IPR146_ADDR			( ( volatile uint8_t __evenaccess * )0x00087392 )
+#define ICU_IPR147_ADDR			( ( volatile uint8_t __evenaccess * )0x00087393 )
+#define ICU_IPR148_ADDR			( ( volatile uint8_t __evenaccess * )0x00087394 )
+#define ICU_IPR149_ADDR			( ( volatile uint8_t __evenaccess * )0x00087395 )
+#define ICU_IPR150_ADDR			( ( volatile uint8_t __evenaccess * )0x00087396 )
+#define ICU_IPR151_ADDR			( ( volatile uint8_t __evenaccess * )0x00087397 )
+#define ICU_IPR152_ADDR			( ( volatile uint8_t __evenaccess * )0x00087398 )
+#define ICU_IPR153_ADDR			( ( volatile uint8_t __evenaccess * )0x00087399 )
+#define ICU_IPR154_ADDR			( ( volatile uint8_t __evenaccess * )0x0008739A )
+#define ICU_IPR155_ADDR			( ( volatile uint8_t __evenaccess * )0x0008739B )
+#define ICU_IPR156_ADDR			( ( volatile uint8_t __evenaccess * )0x0008739C )
+#define ICU_IPR157_ADDR			( ( volatile uint8_t __evenaccess * )0x0008739D )
+#define ICU_IPR158_ADDR			( ( volatile uint8_t __evenaccess * )0x0008739E )
+#define ICU_IPR159_ADDR			( ( volatile uint8_t __evenaccess * )0x0008739F )
+#define ICU_IPR160_ADDR			( ( volatile uint8_t __evenaccess * )0x000873A0 )
+#define ICU_IPR161_ADDR			( ( volatile uint8_t __evenaccess * )0x000873A1 )
+#define ICU_IPR162_ADDR			( ( volatile uint8_t __evenaccess * )0x000873A2 )
+#define ICU_IPR163_ADDR			( ( volatile uint8_t __evenaccess * )0x000873A3 )
+#define ICU_IPR164_ADDR			( ( volatile uint8_t __evenaccess * )0x000873A4 )
+#define ICU_IPR165_ADDR			( ( volatile uint8_t __evenaccess * )0x000873A5 )
+#define ICU_IPR166_ADDR			( ( volatile uint8_t __evenaccess * )0x000873A6 )
+#define ICU_IPR167_ADDR			( ( volatile uint8_t __evenaccess * )0x000873A7 )
+#define ICU_IPR168_ADDR			( ( volatile uint8_t __evenaccess * )0x000873A8 )
+#define ICU_IPR169_ADDR			( ( volatile uint8_t __evenaccess * )0x000873A9 )
+#define ICU_IPR170_ADDR			( ( volatile uint8_t __evenaccess * )0x000873AA )
+#define ICU_IPR171_ADDR			( ( volatile uint8_t __evenaccess * )0x000873AB )
+#define ICU_IPR172_ADDR			( ( volatile uint8_t __evenaccess * )0x000873AC )
+#define ICU_IPR173_ADDR			( ( volatile uint8_t __evenaccess * )0x000873AD )
+#define ICU_IPR174_ADDR			( ( volatile uint8_t __evenaccess * )0x000873AE )
+#define ICU_IPR175_ADDR			( ( volatile uint8_t __evenaccess * )0x000873AF )
+#define ICU_IPR176_ADDR			( ( volatile uint8_t __evenaccess * )0x000873B0 )
+#define ICU_IPR177_ADDR			( ( volatile uint8_t __evenaccess * )0x000873B1 )
+#define ICU_IPR178_ADDR			( ( volatile uint8_t __evenaccess * )0x000873B2 )
+#define ICU_IPR179_ADDR			( ( volatile uint8_t __evenaccess * )0x000873B3 )
+#define ICU_IPR180_ADDR			( ( volatile uint8_t __evenaccess * )0x000873B4 )
+#define ICU_IPR181_ADDR			( ( volatile uint8_t __evenaccess * )0x000873B5 )
+#define ICU_IPR182_ADDR			( ( volatile uint8_t __evenaccess * )0x000873B6 )
+#define ICU_IPR183_ADDR			( ( volatile uint8_t __evenaccess * )0x000873B7 )
+#define ICU_IPR184_ADDR			( ( volatile uint8_t __evenaccess * )0x000873B8 )
+#define ICU_IPR185_ADDR			( ( volatile uint8_t __evenaccess * )0x000873B9 )
+#define ICU_IPR186_ADDR			( ( volatile uint8_t __evenaccess * )0x000873BA )
+#define ICU_IPR187_ADDR			( ( volatile uint8_t __evenaccess * )0x000873BB )
+#define ICU_IPR188_ADDR			( ( volatile uint8_t __evenaccess * )0x000873BC )
+#define ICU_IPR189_ADDR			( ( volatile uint8_t __evenaccess * )0x000873BD )
+#define ICU_IPR190_ADDR			( ( volatile uint8_t __evenaccess * )0x000873BE )
+#define ICU_IPR191_ADDR			( ( volatile uint8_t __evenaccess * )0x000873BF )
+#define ICU_IPR192_ADDR			( ( volatile uint8_t __evenaccess * )0x000873C0 )
+#define ICU_IPR193_ADDR			( ( volatile uint8_t __evenaccess * )0x000873C1 )
+#define ICU_IPR194_ADDR			( ( volatile uint8_t __evenaccess * )0x000873C2 )
+#define ICU_IPR195_ADDR			( ( volatile uint8_t __evenaccess * )0x000873C3 )
+#define ICU_IPR196_ADDR			( ( volatile uint8_t __evenaccess * )0x000873C4 )
+#define ICU_IPR197_ADDR			( ( volatile uint8_t __evenaccess * )0x000873C5 )
+#define ICU_IPR198_ADDR			( ( volatile uint8_t __evenaccess * )0x000873C6 )
+#define ICU_IPR199_ADDR			( ( volatile uint8_t __evenaccess * )0x000873C7 )
+#define ICU_IPR200_ADDR			( ( volatile uint8_t __evenaccess * )0x000873C8 )
+#define ICU_IPR201_ADDR			( ( volatile uint8_t __evenaccess * )0x000873C9 )
+#define ICU_IPR202_ADDR			( ( volatile uint8_t __evenaccess * )0x000873CA )
+#define ICU_IPR203_ADDR			( ( volatile uint8_t __evenaccess * )0x000873CB )
+#define ICU_IPR204_ADDR			( ( volatile uint8_t __evenaccess * )0x000873CC )
+#define ICU_IPR205_ADDR			( ( volatile uint8_t __evenaccess * )0x000873CD )
+#define ICU_IPR206_ADDR			( ( volatile uint8_t __evenaccess * )0x000873CE )
+#define ICU_IPR207_ADDR			( ( volatile uint8_t __evenaccess * )0x000873CF )
+#define ICU_IPR208_ADDR			( ( volatile uint8_t __evenaccess * )0x000873D0 )
+#define ICU_IPR209_ADDR			( ( volatile uint8_t __evenaccess * )0x000873D1 )
+#define ICU_IPR210_ADDR			( ( volatile uint8_t __evenaccess * )0x000873D2 )
+#define ICU_IPR211_ADDR			( ( volatile uint8_t __evenaccess * )0x000873D3 )
+#define ICU_IPR212_ADDR			( ( volatile uint8_t __evenaccess * )0x000873D4 )
+#define ICU_IPR213_ADDR			( ( volatile uint8_t __evenaccess * )0x000873D5 )
+#define ICU_IPR214_ADDR			( ( volatile uint8_t __evenaccess * )0x000873D6 )
+#define ICU_IPR215_ADDR			( ( volatile uint8_t __evenaccess * )0x000873D7 )
+#define ICU_IPR216_ADDR			( ( volatile uint8_t __evenaccess * )0x000873D8 )
+#define ICU_IPR217_ADDR			( ( volatile uint8_t __evenaccess * )0x000873D9 )
+#define ICU_IPR218_ADDR			( ( volatile uint8_t __evenaccess * )0x000873DA )
+#define ICU_IPR219_ADDR			( ( volatile uint8_t __evenaccess * )0x000873DB )
+#define ICU_IPR220_ADDR			( ( volatile uint8_t __evenaccess * )0x000873DC )
+#define ICU_IPR221_ADDR			( ( volatile uint8_t __evenaccess * )0x000873DD )
+#define ICU_IPR222_ADDR			( ( volatile uint8_t __evenaccess * )0x000873DE )
+#define ICU_IPR223_ADDR			( ( volatile uint8_t __evenaccess * )0x000873DF )
+#define ICU_IPR224_ADDR			( ( volatile uint8_t __evenaccess * )0x000873E0 )
+#define ICU_IPR225_ADDR			( ( volatile uint8_t __evenaccess * )0x000873E1 )
+#define ICU_IPR226_ADDR			( ( volatile uint8_t __evenaccess * )0x000873E2 )
+#define ICU_IPR227_ADDR			( ( volatile uint8_t __evenaccess * )0x000873E3 )
+#define ICU_IPR228_ADDR			( ( volatile uint8_t __evenaccess * )0x000873E4 )
+#define ICU_IPR229_ADDR			( ( volatile uint8_t __evenaccess * )0x000873E5 )
+#define ICU_IPR230_ADDR			( ( volatile uint8_t __evenaccess * )0x000873E6 )
+#define ICU_IPR231_ADDR			( ( volatile uint8_t __evenaccess * )0x000873E7 )
+#define ICU_IPR232_ADDR			( ( volatile uint8_t __evenaccess * )0x000873E8 )
+#define ICU_IPR233_ADDR			( ( volatile uint8_t __evenaccess * )0x000873E9 )
+#define ICU_IPR234_ADDR			( ( volatile uint8_t __evenaccess * )0x000873EA )
+#define ICU_IPR235_ADDR			( ( volatile uint8_t __evenaccess * )0x000873EB )
+#define ICU_IPR236_ADDR			( ( volatile uint8_t __evenaccess * )0x000873EC )
+#define ICU_IPR237_ADDR			( ( volatile uint8_t __evenaccess * )0x000873ED )
+#define ICU_IPR238_ADDR			( ( volatile uint8_t __evenaccess * )0x000873EE )
+#define ICU_IPR239_ADDR			( ( volatile uint8_t __evenaccess * )0x000873EF )
+#define ICU_IPR240_ADDR			( ( volatile uint8_t __evenaccess * )0x000873F0 )
+#define ICU_IPR241_ADDR			( ( volatile uint8_t __evenaccess * )0x000873F1 )
+#define ICU_IPR242_ADDR			( ( volatile uint8_t __evenaccess * )0x000873F2 )
+#define ICU_IPR243_ADDR			( ( volatile uint8_t __evenaccess * )0x000873F3 )
+#define ICU_IPR244_ADDR			( ( volatile uint8_t __evenaccess * )0x000873F4 )
+#define ICU_IPR245_ADDR			( ( volatile uint8_t __evenaccess * )0x000873F5 )
+#define ICU_IPR246_ADDR			( ( volatile uint8_t __evenaccess * )0x000873F6 )
+#define ICU_IPR247_ADDR			( ( volatile uint8_t __evenaccess * )0x000873F7 )
+#define ICU_IPR248_ADDR			( ( volatile uint8_t __evenaccess * )0x000873F8 )
+#define ICU_IPR249_ADDR			( ( volatile uint8_t __evenaccess * )0x000873F9 )
+#define ICU_IPR250_ADDR			( ( volatile uint8_t __evenaccess * )0x000873FA )
+#define ICU_IPR251_ADDR			( ( volatile uint8_t __evenaccess * )0x000873FB )
+#define ICU_IPR252_ADDR			( ( volatile uint8_t __evenaccess * )0x000873FC )
+#define ICU_IPR253_ADDR			( ( volatile uint8_t __evenaccess * )0x000873FD )
+#define ICU_IPR254_ADDR			( ( volatile uint8_t __evenaccess * )0x000873FE )
+#define ICU_IPR255_ADDR			( ( volatile uint8_t __evenaccess * )0x000873FF )
+#define ICU_IPR_BIT				( 7U << 0U )
+
+
+/*
+ *  IRQRg[WX^
+ */
+#define ICU_IRQ0_ADDR			( ( volatile uint8_t __evenaccess * )0x00087500 )
+#define ICU_IRQ1_ADDR			( ( volatile uint8_t __evenaccess * )0x00087501 )
+#define ICU_IRQ2_ADDR			( ( volatile uint8_t __evenaccess * )0x00087502 )
+#define ICU_IRQ3_ADDR			( ( volatile uint8_t __evenaccess * )0x00087503 )
+#define ICU_IRQ4_ADDR			( ( volatile uint8_t __evenaccess * )0x00087504 )
+#define ICU_IRQ5_ADDR			( ( volatile uint8_t __evenaccess * )0x00087505 )
+#define ICU_IRQ6_ADDR			( ( volatile uint8_t __evenaccess * )0x00087506 )
+#define ICU_IRQ7_ADDR			( ( volatile uint8_t __evenaccess * )0x00087507 )
+#define ICU_IRQ8_ADDR			( ( volatile uint8_t __evenaccess * )0x00087508 )
+#define ICU_IRQ9_ADDR			( ( volatile uint8_t __evenaccess * )0x00087509 )
+#define ICU_IRQ10_ADDR			( ( volatile uint8_t __evenaccess * )0x0008750A )
+#define ICU_IRQ11_ADDR			( ( volatile uint8_t __evenaccess * )0x0008750B )
+#define ICU_IRQ12_ADDR			( ( volatile uint8_t __evenaccess * )0x0008750C )
+#define ICU_IRQ13_ADDR			( ( volatile uint8_t __evenaccess * )0x0008750D )
+#define ICU_IRQ14_ADDR			( ( volatile uint8_t __evenaccess * )0x0008750E )
+#define ICU_IRQ15_ADDR			( ( volatile uint8_t __evenaccess * )0x0008750F )
+#define ICU_IRQMD_BIT			( 3U << 2U )
+
+
+/*
+ *  e`lÌWX^yÑÝèrbgîñ
+ */
+#define CMT_CMSTR0_ADDR			( ( volatile uint16_t __evenaccess * )0x00088000 )
+#define CMT_CMSTR0_STR0_BIT		( 1U << 0U )
+#define CMT_CMSTR0_STR1_BIT		( 1U << 1U )
+#define CMT_CMSTR1_ADDR			( ( volatile uint16_t __evenaccess * )0x00088010 )
+#define CMT_CMSTR1_STR2_BIT		( 1U << 0U )
+#define CMT_CMSTR1_STR3_BIT		( 1U << 1U )
+#define CMT0_CMCR_ADDR			( ( volatile uint16_t __evenaccess * )0x00088002 )
+#define CMT0_CMCR_CKS_BIT		( 3U )
+#define CMT0_CMCR_CMIE_BIT		( 1U << 6U )
+#define CMT1_CMCR_ADDR			( ( volatile uint16_t __evenaccess * )0x00088008 )
+#define CMT1_CMCR_CKS_BIT		( 3U )
+#define CMT1_CMCR_CMIE_BIT		( 1U << 6U )
+#define CMT2_CMCR_ADDR			( ( volatile uint16_t __evenaccess * )0x00088012 )
+#define CMT2_CMCR_CKS_BIT		( 3U)
+#define CMT2_CMCR_CMIE_BIT		( 1U << 6U )
+#define CMT3_CMCR_ADDR			( ( volatile uint16_t __evenaccess * )0x00088018 )
+#define CMT3_CMCR_CKS_BIT		( 3U )
+#define CMT3_CMCR_CMIE_BIT		( 1U << 6U )
+#define CMT0_CMCNT_ADDR			( ( volatile uint16_t __evenaccess * )0x00088004 )
+#define CMT1_CMCNT_ADDR			( ( volatile uint16_t __evenaccess * )0x0008800A )
+#define CMT2_CMCNT_ADDR			( ( volatile uint16_t __evenaccess * )0x00088014 )
+#define CMT3_CMCNT_ADDR			( ( volatile uint16_t __evenaccess * )0x0008801A )
+#define CMT0_CMCOR_ADDR			( ( volatile uint16_t __evenaccess * )0x00088006 )
+#define CMT1_CMCOR_ADDR			( ( volatile uint16_t __evenaccess * )0x0008800C )
+#define CMT2_CMCOR_ADDR			( ( volatile uint16_t __evenaccess * )0x00088016 )
+#define CMT3_CMCOR_ADDR			( ( volatile uint16_t __evenaccess * )0x0008801C )
+
+#define SCI0_SMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A000 )
+#define SCI0_BRR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A001 )
+#define SCI0_SCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A002 )
+#define SCI0_TDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A003 )
+#define SCI0_SSR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A004 )
+#define SCI0_RDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A005 )
+#define SCI0_SCMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A006 )
+#define SCI0_SEMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A007 )
+#define SCI1_SMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A020 )
+#define SCI1_BRR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A021 )
+#define SCI1_SCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A022 )
+#define SCI1_TDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A023 )
+#define SCI1_SSR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A024 )
+#define SCI1_RDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A025 )
+#define SCI1_SCMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A026 )
+#define SCI1_SEMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A027 )
+#define SCI2_SMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A040 )
+#define SCI2_BRR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A041 )
+#define SCI2_SCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A042 )
+#define SCI2_TDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A043 )
+#define SCI2_SSR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A044 )
+#define SCI2_RDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A045 )
+#define SCI2_SCMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A046 )
+#define SCI2_SEMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A047 )
+#define SCI3_SMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A060 )
+#define SCI3_BRR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A061 )
+#define SCI3_SCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A062 )
+#define SCI3_TDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A063 )
+#define SCI3_SSR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A064 )
+#define SCI3_RDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A065 )
+#define SCI3_SCMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A066 )
+#define SCI3_SEMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A067 )
+#define SCI4_SMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A080 )
+#define SCI4_BRR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A081 )
+#define SCI4_SCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A082 )
+#define SCI4_TDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A083 )
+#define SCI4_SSR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A084 )
+#define SCI4_RDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A085 )
+#define SCI4_SCMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A086 )
+#define SCI4_SEMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A087 )
+#define SCI5_SMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A0A0 )
+#define SCI5_BRR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A0A1 )
+#define SCI5_SCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A0A2 )
+#define SCI5_TDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A0A3 )
+#define SCI5_SSR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A0A4 )
+#define SCI5_RDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A0A5 )
+#define SCI5_SCMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A0A6 )
+#define SCI5_SEMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A0A7 )
+#define SCI6_SMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A0C0 )
+#define SCI6_BRR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A0C1 )
+#define SCI6_SCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A0C2 )
+#define SCI6_TDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A0C3 )
+#define SCI6_SSR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A0C4 )
+#define SCI6_RDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A0C5 )
+#define SCI6_SCMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A0C6 )
+#define SCI6_SEMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008A0C7 )
+#define SCI_SMR_CKS_BIT			( 3U << 0U )
+#define SCI_SMR_STOP_BIT		( 1U << 3U )
+#define SCI_SMR_PM_BIT			( 1U << 4U )
+#define SCI_SMR_PE_BIT			( 1U << 5U )
+#define SCI_SMR_CHR_BIT			( 1U << 6U )
+#define SCI_SMR_CM_BIT			( 1U << 7U )
+#define SCI_SCR_CKE_BIT			( 3U << 0U )
+#define SCI_SCR_TEIE_BIT		( 1U << 2U )
+#define SCI_SCR_RE_BIT			( 1U << 4U )
+#define SCI_SCR_TE_BIT			( 1U << 5U )
+#define SCI_SCR_RIE_BIT			( 1U << 6U )
+#define SCI_SCR_TIE_BIT			( 1U << 7U )
+#define SCI_SSR_TEND_BIT		( 1U << 2U )
+#define SCI_SSR_PER_BIT			( 1U << 3U )
+#define SCI_SSR_FER_BIT			( 1U << 4U )
+#define SCI_SSR_ORER_BIT		( 1U << 5U )
+#define SCI_SCMR_SMIF_BIT		( 1U << 0U )
+#define SCI_SCMR_SINV_BIT		( 1U << 2U )
+#define SCI_SCMR_SDIR_BIT		( 1U << 3U )
+#define SCI_SCMR_BCP2_BIT		( 1U << 7U )
+#define SCI_SEMR_ACS0_BIT		( 1U << 0U )
+#define SCI_SEMR_ABCS_BIT		( 1U << 4U )
+
+/*
+ *  I/O|[gÌWX^yÑÝèrbgîñ
+ */
+#define PORT0_PDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C000 )
+#define PORT1_PDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C001 )
+#define PORT2_PDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C002 )
+#define PORT3_PDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C003 )
+#define PORT4_PDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C004 )
+#define PORT5_PDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C005 )
+#define PORT6_PDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C006 )
+#define PORT7_PDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C007 )
+#define PORT8_PDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C008 )
+#define PORT9_PDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C009 )
+#define PORTA_PDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C00A )
+#define PORTB_PDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C00B )
+#define PORTC_PDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C00C )
+#define PORTD_PDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C00D )
+#define PORTE_PDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C00E )
+#define PORTF_PDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C00F )
+#define PORTG_PDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C010 )
+#define PORTJ_PDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C012 )
+#define PORT_PDR_B0_BIT			( 0x01U << 0U )
+#define PORT_PDR_B1_BIT			( 0x01U << 1U )
+#define PORT_PDR_B2_BIT			( 0x01U << 2U )
+#define PORT_PDR_B3_BIT			( 0x01U << 3U )
+#define PORT_PDR_B4_BIT			( 0x01U << 4U )
+#define PORT_PDR_B5_BIT			( 0x01U << 5U )
+#define PORT_PDR_B6_BIT			( 0x01U << 6U )
+#define PORT_PDR_B7_BIT			( 0x01U << 7U )
+#define PORT0_PODR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C020 )
+#define PORT1_PODR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C021 )
+#define PORT2_PODR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C022 )
+#define PORT3_PODR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C023 )
+#define PORT4_PODR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C024 )
+#define PORT5_PODR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C025 )
+#define PORT6_PODR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C026 )
+#define PORT7_PODR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C027 )
+#define PORT8_PODR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C028 )
+#define PORT9_PODR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C029 )
+#define PORTA_PODR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C02A )
+#define PORTB_PODR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C02B )
+#define PORTC_PODR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C02C )
+#define PORTD_PODR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C02D )
+#define PORTE_PODR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C02E )
+#define PORTF_PODR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C02F )
+#define PORTG_PODR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C030 )
+#define PORTJ_PODR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C032 )
+#define PORT_PODR_B0_BIT		( 0x01U << 0U )
+#define PORT_PODR_B1_BIT		( 0x01U << 1U )
+#define PORT_PODR_B2_BIT		( 0x01U << 2U )
+#define PORT_PODR_B3_BIT		( 0x01U << 3U )
+#define PORT_PODR_B4_BIT		( 0x01U << 4U )
+#define PORT_PODR_B5_BIT		( 0x01U << 5U )
+#define PORT_PODR_B6_BIT		( 0x01U << 6U )
+#define PORT_PODR_B7_BIT		( 0x01U << 7U )
+#define PORT0_PIDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C040 )
+#define PORT1_PIDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C041 )
+#define PORT2_PIDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C042 )
+#define PORT3_PIDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C043 )
+#define PORT4_PIDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C044 )
+#define PORT5_PIDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C045 )
+#define PORT6_PIDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C046 )
+#define PORT7_PIDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C047 )
+#define PORT8_PIDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C048 )
+#define PORT9_PIDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C049 )
+#define PORTA_PIDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C04A )
+#define PORTB_PIDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C04B )
+#define PORTC_PIDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C04C )
+#define PORTD_PIDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C04D )
+#define PORTE_PIDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C04E )
+#define PORTF_PIDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C04F )
+#define PORTG_PIDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C050 )
+#define PORTJ_PIDR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C052 )
+#define PORT_PIDR_B0_BIT		( 0x01U << 0U )
+#define PORT_PIDR_B1_BIT		( 0x01U << 1U )
+#define PORT_PIDR_B2_BIT		( 0x01U << 2U )
+#define PORT_PIDR_B3_BIT		( 0x01U << 3U )
+#define PORT_PIDR_B4_BIT		( 0x01U << 4U )
+#define PORT_PIDR_B5_BIT		( 0x01U << 5U )
+#define PORT_PIDR_B6_BIT		( 0x01U << 6U )
+#define PORT_PIDR_B7_BIT		( 0x01U << 7U )
+#define PORT0_PMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C060 )
+#define PORT1_PMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C061 )
+#define PORT2_PMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C062 )
+#define PORT3_PMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C063 )
+#define PORT4_PMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C064 )
+#define PORT5_PMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C065 )
+#define PORT6_PMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C066 )
+#define PORT7_PMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C067 )
+#define PORT8_PMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C068 )
+#define PORT9_PMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C069 )
+#define PORTA_PMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C06A )
+#define PORTB_PMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C06B )
+#define PORTC_PMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C06C )
+#define PORTD_PMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C06D )
+#define PORTE_PMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C06E )
+#define PORTF_PMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C06F )
+#define PORTG_PMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C070 )
+#define PORTJ_PMR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C072 )
+#define PORT_PMR_B0_BIT			( 0x01U << 0U )
+#define PORT_PMR_B1_BIT			( 0x01U << 1U )
+#define PORT_PMR_B2_BIT			( 0x01U << 2U )
+#define PORT_PMR_B3_BIT			( 0x01U << 3U )
+#define PORT_PMR_B4_BIT			( 0x01U << 4U )
+#define PORT_PMR_B5_BIT			( 0x01U << 5U )
+#define PORT_PMR_B6_BIT			( 0x01U << 6U )
+#define PORT_PMR_B7_BIT			( 0x01U << 7U )
+#define PORT0_PCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C0C0 )
+#define PORT1_PCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C0C1 )
+#define PORT2_PCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C0C2 )
+#define PORT3_PCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C0C3 )
+#define PORT4_PCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C0C4 )
+#define PORT5_PCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C0C5 )
+#define PORT6_PCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C0C6 )
+#define PORT7_PCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C0C7 )
+#define PORT8_PCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C0C8 )
+#define PORT9_PCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C0C9 )
+#define PORTA_PCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C0CA )
+#define PORTB_PCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C0CB )
+#define PORTC_PCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C0CC )
+#define PORTD_PCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C0CD )
+#define PORTE_PCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C0CE )
+#define PORTF_PCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C0CF )
+#define PORTG_PCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C0D0 )
+#define PORTJ_PCR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C0D2 )
+#define PORT_PCR_B0_BIT			( 0x01U << 0U )
+#define PORT_PCR_B1_BIT			( 0x01U << 1U )
+#define PORT_PCR_B2_BIT			( 0x01U << 2U )
+#define PORT_PCR_B3_BIT			( 0x01U << 3U )
+#define PORT_PCR_B4_BIT			( 0x01U << 4U )
+#define PORT_PCR_B5_BIT			( 0x01U << 5U )
+#define PORT_PCR_B6_BIT			( 0x01U << 6U )
+#define PORT_PCR_B7_BIT			( 0x01U << 7U )
+
+/*
+ *  }`t@NVsRg[ÌWX^îñ
+ */
+#define MPC_PFUSB0_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C114 )
+#define MPC_PFUSB0_PDHZS_BIT	( 0x01U << 2U )
+#define MPC_PFUSB0_PUPHZS_BIT	( 0x01U << 3U )
+#define MPC_PWPR_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C11F )
+#define MPC_PWPR_PFSWE			( 0x01U << 6U )
+#define MPC_PWPR_B0WI			( 0x01U << 7U )
+#define MPC_P00PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C140 )
+#define MPC_P01PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C141 )
+#define MPC_P02PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C142 )
+#define MPC_P03PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C143 )
+#define MPC_P04PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C144 )
+#define MPC_P05PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C145 )
+#define MPC_P06PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C146 )
+#define MPC_P07PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C147 )
+#define MPC_P10PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C148 )
+#define MPC_P11PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C149 )
+#define MPC_P12PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C14A )
+#define MPC_P13PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C14B )
+#define MPC_P14PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C14C )
+#define MPC_P15PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C14D )
+#define MPC_P16PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C14E )
+#define MPC_P17PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C14F )
+#define MPC_P20PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C150 )
+#define MPC_P21PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C151 )
+#define MPC_P22PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C152 )
+#define MPC_P23PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C153 )
+#define MPC_P24PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C154 )
+#define MPC_P25PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C155 )
+#define MPC_P26PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C156 )
+#define MPC_P27PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C157 )
+#define MPC_P30PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C158 )
+#define MPC_P31PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C159 )
+#define MPC_P32PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C15A )
+#define MPC_P33PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C15B )
+#define MPC_P34PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C15C )
+#define MPC_P35PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C15D )
+#define MPC_P36PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C15E )
+#define MPC_P37PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C15F )
+#define MPC_P40PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C160 )
+#define MPC_P41PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C161 )
+#define MPC_P42PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C162 )
+#define MPC_P43PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C163 )
+#define MPC_P44PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C164 )
+#define MPC_P45PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C165 )
+#define MPC_P46PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C166 )
+#define MPC_P47PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C167 )
+#define MPC_P50PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C168 )
+#define MPC_P51PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C169 )
+#define MPC_P52PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C16A )
+#define MPC_P53PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C16B )
+#define MPC_P54PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C16C )
+#define MPC_P55PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C16D )
+#define MPC_P56PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C16E )
+#define MPC_P57PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C16F )
+#define MPC_P60PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C170 )
+#define MPC_P61PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C171 )
+#define MPC_P62PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C172 )
+#define MPC_P63PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C173 )
+#define MPC_P64PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C174 )
+#define MPC_P65PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C175 )
+#define MPC_P66PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C176 )
+#define MPC_P67PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C177 )
+#define MPC_P70PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C178 )
+#define MPC_P71PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C179 )
+#define MPC_P72PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C17A )
+#define MPC_P73PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C17B )
+#define MPC_P74PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C17C )
+#define MPC_P75PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C17D )
+#define MPC_P76PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C17E )
+#define MPC_P77PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C17F )
+#define MPC_P80PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C180 )
+#define MPC_P81PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C181 )
+#define MPC_P82PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C182 )
+#define MPC_P83PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C183 )
+#define MPC_P84PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C184 )
+#define MPC_P85PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C185 )
+#define MPC_P86PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C186 )
+#define MPC_P87PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C187 )
+#define MPC_P90PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C188 )
+#define MPC_P91PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C189 )
+#define MPC_P92PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C18A )
+#define MPC_P93PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C18B )
+#define MPC_P94PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C18C )
+#define MPC_P95PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C18D )
+#define MPC_P96PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C18E )
+#define MPC_P97PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C18F )
+#define MPC_PA0PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C190 )
+#define MPC_PA1PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C191 )
+#define MPC_PA2PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C192 )
+#define MPC_PA3PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C193 )
+#define MPC_PA4PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C194 )
+#define MPC_PA5PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C195 )
+#define MPC_PA6PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C196 )
+#define MPC_PA7PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C197 )
+#define MPC_PB0PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C198 )
+#define MPC_PB1PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C199 )
+#define MPC_PB2PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C19A )
+#define MPC_PB3PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C19B )
+#define MPC_PB4PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C19C )
+#define MPC_PB5PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C19D )
+#define MPC_PB6PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C19E )
+#define MPC_PB7PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C19F )
+#define MPC_PC0PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1A0 )
+#define MPC_PC1PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1A1 )
+#define MPC_PC2PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1A2 )
+#define MPC_PC3PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1A3 )
+#define MPC_PC4PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1A4 )
+#define MPC_PC5PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1A5 )
+#define MPC_PC6PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1A6 )
+#define MPC_PC7PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1A7 )
+#define MPC_PD0PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1A8 )
+#define MPC_PD1PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1A9 )
+#define MPC_PD2PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1AA )
+#define MPC_PD3PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1AB )
+#define MPC_PD4PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1AC )
+#define MPC_PD5PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1AD )
+#define MPC_PD6PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1AE )
+#define MPC_PD7PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1AF )
+#define MPC_PE0PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1B0 )
+#define MPC_PE1PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1B1 )
+#define MPC_PE2PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1B2 )
+#define MPC_PE3PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1B3 )
+#define MPC_PE4PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1B4 )
+#define MPC_PE5PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1B5 )
+#define MPC_PE6PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1B6 )
+#define MPC_PE7PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1B7 )
+#define MPC_PF0PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1B8 )
+#define MPC_PF1PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1B9 )
+#define MPC_PF2PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1BA )
+#define MPC_PF3PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1BB )
+#define MPC_PF4PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1BC )
+#define MPC_PF5PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1BD )
+#define MPC_PF6PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1BE )
+#define MPC_PF7PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1BF )
+#define MPC_PJ3PFS_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C1D3 )
+
+/*
+ * A^CNbN
+ */
+#define RTC_R64CNT_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C400 )
+#define RTC_RSECCNT_ADDR		( ( volatile uint8_t __evenaccess * )0x0008C402 )
+#define RTC_RMINCNT_ADDR		( ( volatile uint8_t __evenaccess * )0x0008C404 )
+#define RTC_RHRCNT_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C406 )
+#define RTC_RWKCNT_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C408 )
+#define RTC_RDAYCNT_ADDR		( ( volatile uint8_t __evenaccess * )0x0008C40A )
+#define RTC_RMONCNT_ADDR		( ( volatile uint8_t __evenaccess * )0x0008C40C )
+#define RTC_RYRCNT_ADDR			( ( volatile uint8_t __evenaccess * )0x0008C40E )
+
+/*
+ * 12 rbgA/D Ro[^
+ */
+#define S12AD_ADCSR_ADDR		( ( volatile uint8_t __evenaccess * )0x00089000 )
+#define S12AD_ADCSR_ADST_BIT	0x80
+#define S12AD_ADANS0_ADDR		( ( volatile uint16_t __evenaccess * )0x00089004 )
+#define S12AD_ADANS1_ADDR		( ( volatile uint16_t __evenaccess * )0x00089006 )
+#define S12AD_ADEXICR_ADDR		( ( volatile uint16_t __evenaccess * )0x00089012 )
+#define S12AD_ADDR0_ADDR		( ( volatile uint16_t __evenaccess * )0x00089020 )
+#define S12AD_ADDR1_ADDR		( ( volatile uint16_t __evenaccess * )0x00089022 )
+#define S12AD_ADDR2_ADDR		( ( volatile uint16_t __evenaccess * )0x00089024 )
+#define S12AD_ADDR3_ADDR		( ( volatile uint16_t __evenaccess * )0x00089026 )
+#define S12AD_ADDR4_ADDR		( ( volatile uint16_t __evenaccess * )0x00089028 )
+#define S12AD_ADDR5_ADDR		( ( volatile uint16_t __evenaccess * )0x0008902A )
+#define S12AD_ADDR6_ADDR		( ( volatile uint16_t __evenaccess * )0x0008902C )
+#define S12AD_ADDR7_ADDR		( ( volatile uint16_t __evenaccess * )0x0008902E )
+#define S12AD_ADDR8_ADDR		( ( volatile uint16_t __evenaccess * )0x00089030 )
+#define S12AD_ADDR9_ADDR		( ( volatile uint16_t __evenaccess * )0x00089032 )
+#define S12AD_ADDR10_ADDR		( ( volatile uint16_t __evenaccess * )0x00089034 )
+#define S12AD_ADDR11_ADDR		( ( volatile uint16_t __evenaccess * )0x00089036 )
+#define S12AD_ADDR12_ADDR		( ( volatile uint16_t __evenaccess * )0x00089038 )
+#define S12AD_ADDR13_ADDR		( ( volatile uint16_t __evenaccess * )0x0008903A )
+#define S12AD_ADDR14_ADDR		( ( volatile uint16_t __evenaccess * )0x0008903C )
+#define S12AD_ADDR15_ADDR		( ( volatile uint16_t __evenaccess * )0x0008903E )
+#define S12AD_ADDR16_ADDR		( ( volatile uint16_t __evenaccess * )0x00089040 )
+#define S12AD_ADDR17_ADDR		( ( volatile uint16_t __evenaccess * )0x00089042 )
+#define S12AD_ADDR18_ADDR		( ( volatile uint16_t __evenaccess * )0x00089044 )
+#define S12AD_ADDR19_ADDR		( ( volatile uint16_t __evenaccess * )0x00089046 )
+#define S12AD_ADDR20_ADDR		( ( volatile uint16_t __evenaccess * )0x00089048 )
+
+#define TPU0_TCR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088110 )
+#define TPU1_TCR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088120 )
+#define TPU2_TCR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088130 )
+#define TPU3_TCR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088140 )
+#define TPU4_TCR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088150 )
+#define TPU5_TCR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088160 )
+#define TPU6_TCR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088180 )
+#define TPU7_TCR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088190 )
+#define TPU8_TCR_ADDR			( ( volatile uint8_t __evenaccess * )0x000881A0 )
+#define TPU9_TCR_ADDR			( ( volatile uint8_t __evenaccess * )0x000881B0 )
+#define TPU10_TCR_ADDR			( ( volatile uint8_t __evenaccess * )0x000881C0 )
+#define TPU11_TCR_ADDR			( ( volatile uint8_t __evenaccess * )0x000881D0 )
+#define TPU_TCR_TPSC_OFFSET		( 0U )
+#define TPU_TCR_TPSC_MASK		( 0x7U << TPU_TCR_TPSC_OFFSET )
+#define TPU_TCR_CKEG_OFFSET		( 3U )
+#define TPU_TCR_CKEG_MASK		( 0x3U << TPU_TCR_CKEG_OFFSET )
+#define TPU_TCR_CCLR_OFFSET		( 5U )
+#define TPU_TCR_CCLR_MASK		( 0x7U << TPU_TCR_CCLR_OFFSET )
+
+#define TPU0_TMDR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088111 )
+#define TPU1_TMDR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088121 )
+#define TPU2_TMDR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088131 )
+#define TPU3_TMDR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088141 )
+#define TPU4_TMDR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088151 )
+#define TPU5_TMDR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088161 )
+#define TPU6_TMDR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088181 )
+#define TPU7_TMDR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088191 )
+#define TPU8_TMDR_ADDR			( ( volatile uint8_t __evenaccess * )0x000881A1 )
+#define TPU9_TMDR_ADDR			( ( volatile uint8_t __evenaccess * )0x000881B1 )
+#define TPU10_TMDR_ADDR			( ( volatile uint8_t __evenaccess * )0x000881C1 )
+#define TPU11_TMDR_ADDR			( ( volatile uint8_t __evenaccess * )0x000881D1 )
+
+#define TPU0_TIOR_ADDR			( ( volatile uint8_t __evenaccess * )0x000881C0 )
+#define TPU0_TIORH_ADDR			( ( volatile uint8_t __evenaccess * )0x00088112 )
+#define TPU0_TIORL_ADDR			( ( volatile uint8_t __evenaccess * )0x00088113 )
+#define TPU1_TIOR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088122 )
+#define TPU2_TIOR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088132 )
+#define TPU3_TIORH_ADDR			( ( volatile uint8_t __evenaccess * )0x00088142 )
+#define TPU3_TIORL_ADDR			( ( volatile uint8_t __evenaccess * )0x00088143 )
+#define TPU4_TIOR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088152 )
+#define TPU5_TIOR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088162 )
+#define TPU6_TIORH_ADDR			( ( volatile uint8_t __evenaccess * )0x00088182 )
+#define TPU6_TIORL_ADDR			( ( volatile uint8_t __evenaccess * )0x00088183 )
+#define TPU7_TIOR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088192 )
+#define TPU8_TIOR_ADDR			( ( volatile uint8_t __evenaccess * )0x000881A2 )
+#define TPU9_TIORH_ADDR			( ( volatile uint8_t __evenaccess * )0x000881B2 )
+#define TPU9_TIORL_ADDR			( ( volatile uint8_t __evenaccess * )0x000881B3 )
+#define TPU10_TIOR_ADDR			( ( volatile uint8_t __evenaccess * )0x000881C2 )
+#define TPU11_TIOR_ADDR			( ( volatile uint8_t __evenaccess * )0x000881D2 )
+#define TPU_TIORL_IOA_OFFSET	( 0U )
+#define TPU_TIORL_IOA_MASK		( 0xFU << TPU_TIORL_IOA_OFFSET )
+#define TPU_TIORL_IOB_OFFSET	( 4U )
+#define TPU_TIORL_IOB_MASK		( 0xFU << TPU_TIORL_IOB_OFFSET )
+#define TPU_TIORL_IOC_OFFSET	( 0U )
+#define TPU_TIORL_IOC_MASK		( 0xFU << TPU_TIORL_IOC_OFFSET )
+#define TPU_TIORL_IOD_OFFSET	( 4U )
+#define TPU_TIORL_IOD_MASK		( 0xFU << TPU_TIORL_IOD_OFFSET )
+
+#define TPU0_TGRA_ADDR			( ( volatile uint16_t __evenaccess * )0x00088118 )
+#define TPU0_TGRB_ADDR			( ( volatile uint16_t __evenaccess * )0x0008811A )
+#define TPU0_TGRC_ADDR			( ( volatile uint16_t __evenaccess * )0x0008811C )
+#define TPU0_TGRD_ADDR			( ( volatile uint16_t __evenaccess * )0x0008811E )
+#define TPU1_TGRA_ADDR			( ( volatile uint16_t __evenaccess * )0x00088128 )
+#define TPU1_TGRB_ADDR			( ( volatile uint16_t __evenaccess * )0x0008812A )
+#define TPU2_TGRA_ADDR			( ( volatile uint16_t __evenaccess * )0x00088138 )
+#define TPU2_TGRB_ADDR			( ( volatile uint16_t __evenaccess * )0x0008813A )
+#define TPU3_TGRA_ADDR			( ( volatile uint16_t __evenaccess * )0x00088148 )
+#define TPU3_TGRB_ADDR			( ( volatile uint16_t __evenaccess * )0x0008814A )
+#define TPU3_TGRC_ADDR			( ( volatile uint16_t __evenaccess * )0x0008814C )
+#define TPU3_TGRD_ADDR			( ( volatile uint16_t __evenaccess * )0x0008814E )
+#define TPU4_TGRA_ADDR			( ( volatile uint16_t __evenaccess * )0x00088158 )
+#define TPU4_TGRB_ADDR			( ( volatile uint16_t __evenaccess * )0x0008815A )
+#define TPU5_TGRA_ADDR			( ( volatile uint16_t __evenaccess * )0x00088168 )
+#define TPU5_TGRB_ADDR			( ( volatile uint16_t __evenaccess * )0x0008816A )
+#define TPU6_TGRA_ADDR			( ( volatile uint16_t __evenaccess * )0x00088188 )
+#define TPU6_TGRB_ADDR			( ( volatile uint16_t __evenaccess * )0x0008818A )
+#define TPU6_TGRC_ADDR			( ( volatile uint16_t __evenaccess * )0x0008818C )
+#define TPU6_TGRD_ADDR			( ( volatile uint16_t __evenaccess * )0x0008818E )
+#define TPU7_TGRA_ADDR			( ( volatile uint16_t __evenaccess * )0x00088198 )
+#define TPU7_TGRB_ADDR			( ( volatile uint16_t __evenaccess * )0x0008819A )
+#define TPU8_TGRA_ADDR			( ( volatile uint16_t __evenaccess * )0x000881A8 )
+#define TPU8_TGRB_ADDR			( ( volatile uint16_t __evenaccess * )0x000881AA )
+#define TPU9_TGRA_ADDR			( ( volatile uint16_t __evenaccess * )0x000881B8 )
+#define TPU9_TGRB_ADDR			( ( volatile uint16_t __evenaccess * )0x000881BA )
+#define TPU9_TGRC_ADDR			( ( volatile uint16_t __evenaccess * )0x000881BC )
+#define TPU9_TGRD_ADDR			( ( volatile uint16_t __evenaccess * )0x000881BE )
+#define TPU10_TGRA_ADDR			( ( volatile uint16_t __evenaccess * )0x000881C8 )
+#define TPU10_TGRB_ADDR			( ( volatile uint16_t __evenaccess * )0x000881CA )
+#define TPU11_TGRA_ADDR			( ( volatile uint16_t __evenaccess * )0x000881D8 )
+#define TPU11_TGRB_ADDR			( ( volatile uint16_t __evenaccess * )0x000881DA )
+
+#define TPUA_TSTR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088100 )
+#define TPUB_TSTR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088170 )
+#define TPU_TSTR_CST0_BIT		( 0x01U << 0U )
+#define TPU_TSTR_CST1_BIT		( 0x01U << 1U )
+#define TPU_TSTR_CST2_BIT		( 0x01U << 2U )
+#define TPU_TSTR_CST3_BIT		( 0x01U << 3U )
+#define TPU_TSTR_CST4_BIT		( 0x01U << 4U )
+#define TPU_TSTR_CST5_BIT		( 0x01U << 5U )
+
+#define TPUA_TSYR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088101 )
+#define TPUB_TSYR_ADDR			( ( volatile uint8_t __evenaccess * )0x00088171 )
+#define TPU_TSYR_SYNC0_BIT		( 0x01U << 0U )
+#define TPU_TSYR_SYNC1_BIT		( 0x01U << 1U )
+#define TPU_TSYR_SYNC2_BIT		( 0x01U << 2U )
+#define TPU_TSYR_SYNC3_BIT		( 0x01U << 3U )
+#define TPU_TSYR_SYNC4_BIT		( 0x01U << 4U )
+#define TPU_TSYR_SYNC5_BIT		( 0x01U << 5U )
+
+/*
+ *  UARTÖAÌè`
+ *
+ *  pdicÌrx600/rx630_uart.cÅgp·éD
+ */
+/*
+ *  VAI/OÌÂ
+ */
+#define TNUM_SIOP	( 2 )
+
+#endif	/* TOPPERS_RX630_H */
+
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/rx630.tf
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/rx630.tf	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/rx630.tf	(revision 101)
@@ -0,0 +1,51 @@
+$ 
+$		A[LeN`Ë¶ev[giRX630pj
+$ 
+
+
+
+/*$NL$
+$SPC$*  Architecture-dependent Definitions (RX630)$NL$
+$SPC$*/$NL$
+$NL$
+
+$ 
+$  ÝÔÆÝnhÔÌè`
+$ 
+$  RX630ÅÍÝÔÆÝnhÔª1Î1ÅÎ·éD
+$ 
+
+$INTNO_VALID = { 16, 21, 23 ; 27, 28,...,59 ; 62 ; 64, 65,...,79 ; 90, 91, 92, 93, 98, 102 ; 106, 107,...,112 ; 114 ; 122, 123,...,167 ; 170, 171,...,203 ; 214, 215,...,253 }$
+$INHNO_VALID = INTNO_VALID$
+
+$ 
+$  áOÔÌè`
+$ 
+$  ÅèxN^e[uÌxN^e[uAhXÌ¬³¢ÔÉáOÔðUéD
+$  (\ñÌæàÜÞ)
+$ 
+
+$EXCNO_VALID = { 20, 23, 25, 30 }$
+
+$ 
+$  INTÝÌÔ
+$ 
+
+$INTNO_INT = { 64, 65,...,79 }$
+
+$ 
+$  ÝÔCÝnhÔCáOÔÌÍÍ
+$ 
+$ (\ñÌæàÜÞ)
+$ 
+
+$INTNO_RANGE = { 0, 1,...,255 }$
+$INHNO_RANGE = INTNO_RANGE$
+$EXCNO_RANGE = { 0, 1,...,31 }$
+
+$ 
+$  vZbTË¶Ìev[gt@CÌCN[h
+$ 
+
+$INCLUDE"rx630_ccrx/prc.tf"$
+
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/rx630_config.c
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/rx630_config.c	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/rx630_config.c	(revision 101)
@@ -0,0 +1,598 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2010 by Witz Corporation, JAPAN
+ *  Copyright (C) 2013 by Mitsuhiro Matsuura
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		vZbTË¶W
+[iRX630pj
+ */
+
+#include "kernel_impl.h"
+
+
+/*
+ *  ÝvövCIeBWX^AhXe[u
+ */
+volatile uint8_t __evenaccess * const ipr_reg_addr[ INHNO_MAX ] = {
+	NULL,							/* No.0  \ñ */
+	NULL,							/* No.1  \ñ */
+	NULL,							/* No.2  \ñ */
+	NULL,							/* No.3  \ñ */
+	NULL,							/* No.4  \ñ */
+	NULL,							/* No.5  \ñ */
+	NULL,							/* No.6  \ñ */
+	NULL,							/* No.7  \ñ */
+	NULL,							/* No.8  \ñ */
+	NULL,							/* No.9  \ñ */
+	NULL,							/* No.10  \ñ */
+	NULL,							/* No.11  \ñ */
+	NULL,							/* No.12  \ñ */
+	NULL,							/* No.13  \ñ */
+	NULL,							/* No.14  \ñ */
+	NULL,							/* No.15  \ñ */
+	ICU_IPR000_ADDR,				/* No.16  oXG[ BUSERR */
+	NULL,							/* No.17  \ñ */
+	NULL,							/* No.18  \ñ */
+	NULL,							/* No.19  \ñ */
+	NULL,							/* No.20  \ñ */
+	ICU_IPR001_ADDR,				/* No.21  FCU FIFERR */
+	NULL,							/* No.22  \ñ */
+	ICU_IPR002_ADDR,				/* No.23  FCU FRDYI */
+	NULL,							/* No.24  \ñ */
+	NULL,							/* No.25  \ñ */
+	NULL,							/* No.26  \ñ */
+	ICU_IPR003_ADDR,				/* No.27  SWINT */
+	ICU_IPR004_ADDR,				/* No.28  CMTjbg0 CMT0 */
+	ICU_IPR005_ADDR,				/* No.29  CMTjbg0 CMT1 */
+	ICU_IPR006_ADDR,				/* No.30  CMTjbg1 CMT2 */
+	ICU_IPR007_ADDR,				/* No.31  CMTjbg1 CMT3 */
+	ICU_IPR032_ADDR,				/* No.32  ETHER */
+	ICU_IPR033_ADDR,				/* No.33  USB0 D0FIFO0 */
+	ICU_IPR034_ADDR,				/* No.34  USB0 D1FIFO0 */
+	ICU_IPR035_ADDR,				/* No.35  USB0 USBI0 */
+	ICU_IPR036_ADDR,				/* No.36  USB1 D0FIFO1 */
+	ICU_IPR037_ADDR,				/* No.37  USB1 D1FIFO1 */
+	ICU_IPR038_ADDR,				/* No.38  USB1 USBI1 */
+	ICU_IPR039_ADDR,				/* No.39  SPRI0 */
+	ICU_IPR039_ADDR,				/* No.40  SPTI0 */
+	ICU_IPR039_ADDR,				/* No.41  SPII0 */
+	ICU_IPR042_ADDR,				/* No.42  SPRI1 */
+	ICU_IPR042_ADDR,				/* No.43  SPTI1 */
+	ICU_IPR042_ADDR,				/* No.44  SPII1 */
+	ICU_IPR045_ADDR,				/* No.45  SPRI2 */
+	ICU_IPR045_ADDR,				/* No.46  SPTI2 */
+	ICU_IPR045_ADDR,				/* No.47  SPII2 */
+	ICU_IPR048_ADDR, 				/* No.48  CAN RXF0 */
+	ICU_IPR048_ADDR, 				/* No.49  CAN TXF0 */
+	ICU_IPR048_ADDR, 				/* No.50  CAN RXM0 */
+	ICU_IPR048_ADDR, 				/* No.51  CAN TXM0 */
+	ICU_IPR052_ADDR, 				/* No.52  CAN RXF1 */
+	ICU_IPR052_ADDR, 				/* No.53  CAN TXF1 */
+	ICU_IPR052_ADDR, 				/* No.54  CAN RXM1 */
+	ICU_IPR052_ADDR, 				/* No.55  CAN TXM1 */
+	ICU_IPR056_ADDR, 				/* No.56  CAN RXF2 */
+	ICU_IPR056_ADDR, 				/* No.57  CAN TXF2 */
+	ICU_IPR056_ADDR, 				/* No.58  CAN RXM2 */
+	ICU_IPR056_ADDR, 				/* No.59  CAN TXM2 */
+	NULL,							/* No.60  \ñ */
+	NULL,							/* No.61  \ñ */
+	ICU_IPR062_ADDR,			 	/* No.62  RTC PRD */
+	NULL,							/* No.63  \ñ */
+	ICU_IPR064_ADDR,				/* No.64  O[q IRQ0 */
+	ICU_IPR065_ADDR,				/* No.65  O[q IRQ1 */
+	ICU_IPR066_ADDR,				/* No.66  O[q IRQ2 */
+	ICU_IPR067_ADDR,				/* No.67  O[q IRQ3 */
+	ICU_IPR068_ADDR,				/* No.68  O[q IRQ4 */
+	ICU_IPR069_ADDR,				/* No.69  O[q IRQ5 */
+	ICU_IPR070_ADDR,				/* No.70  O[q IRQ6 */
+	ICU_IPR071_ADDR,				/* No.71  O[q IRQ7 */
+	ICU_IPR072_ADDR,				/* No.72  O[q IRQ8 */
+	ICU_IPR073_ADDR,				/* No.73  O[q IRQ9 */
+	ICU_IPR074_ADDR,				/* No.74  O[q IRQ10 */
+	ICU_IPR075_ADDR,				/* No.75  O[q IRQ11 */
+	ICU_IPR076_ADDR,				/* No.76  O[q IRQ12 */
+	ICU_IPR077_ADDR,				/* No.77  O[q IRQ13 */
+	ICU_IPR078_ADDR,				/* No.78  O[q IRQ14 */
+	ICU_IPR079_ADDR,				/* No.79  O[q IRQ15 */
+	NULL,							/* No.80  \ñ */
+	NULL,							/* No.81  \ñ */
+	NULL,							/* No.82  \ñ */
+	NULL,							/* No.83  \ñ */
+	NULL,							/* No.84  \ñ */
+	NULL,							/* No.85  \ñ */
+	NULL,							/* No.86  \ñ */
+	NULL,							/* No.87  \ñ */
+	NULL,							/* No.88  \ñ */
+	NULL,							/* No.89  \ñ */
+	ICU_IPR090_ADDR, 				/* No.90  USBR0 */
+	ICU_IPR091_ADDR, 				/* No.91  USBR1 */
+	ICU_IPR092_ADDR,				/* No.92  RTC ALM */
+	ICU_IPR093_ADDR,				/* No.93  RTC PRD */
+	NULL,							/* No.94  \ñ */
+	NULL,							/* No.95  \ñ */
+	NULL,							/* No.96  \ñ */
+	NULL,							/* No.97  \ñ */
+	ICU_IPR098_ADDR,				/* No.98  AD ADI0 */
+	NULL,							/* No.99  \ñ */
+	NULL,							/* No.100  \ñ */
+	NULL,							/* No.101  \ñ */
+	ICU_IPR102_ADDR,				/* No.102 S12AD S12ADIO */
+	NULL,							/* No.103  \ñ */
+	NULL,							/* No.104  \ñ */
+	NULL,							/* No.105  \ñ */
+	ICU_IPR106_ADDR,				/* No.106 ICU GROUP0 */
+	ICU_IPR107_ADDR,				/* No.107 ICU GROUP1 */
+	ICU_IPR108_ADDR,				/* No.108 ICU GROUP2 */
+	ICU_IPR109_ADDR,				/* No.109 ICU GROUP3 */
+	ICU_IPR110_ADDR,				/* No.110 ICU GROUP4 */
+	ICU_IPR111_ADDR,				/* No.111 ICU GROUP5 */
+	ICU_IPR112_ADDR,				/* No.112 ICU GROUP6 */
+	NULL,							/* No.113  \ñ */
+	ICU_IPR114_ADDR,				/* No.114 ICU GROUP12 */
+	NULL,							/* No.115  \ñ */
+	NULL,							/* No.116  \ñ */
+	NULL,							/* No.117  \ñ */
+	NULL,							/* No.118  \ñ */
+	NULL,							/* No.119  \ñ */
+	NULL,							/* No.120  \ñ */
+	NULL,							/* No.121  \ñ */
+	ICU_IPR122_ADDR,				/* No.122 SCI12 SCIX0 */
+	ICU_IPR123_ADDR,				/* No.123 SCI12 SCIX1 */
+	ICU_IPR124_ADDR,				/* No.124 SCI12 SCIX2 */
+	ICU_IPR125_ADDR,				/* No.125 SCI12 SCIX3 */
+	ICU_IPR126_ADDR,				/* No.126 TPU0 TGI0A */
+	ICU_IPR126_ADDR,				/* No.127 TPU0 TGI0B */
+	ICU_IPR126_ADDR,				/* No.128 TPU0 TGI0C */
+	ICU_IPR126_ADDR,				/* No.129 TPU0 TGI0D */
+	ICU_IPR130_ADDR,				/* No.130 TPU1 TGI1A */
+	ICU_IPR130_ADDR,				/* No.131 TPU1 TGI1B */
+	ICU_IPR132_ADDR,				/* No.132 TPU2 TGI2A */
+	ICU_IPR132_ADDR,				/* No.133 TPU2 TGI2B */
+	ICU_IPR134_ADDR,				/* No.134 TPU3 TGI3A */
+	ICU_IPR134_ADDR,				/* No.135 TPU3 TGI3B */
+	ICU_IPR134_ADDR,				/* No.136 TPU3 TGI3C */
+	ICU_IPR134_ADDR,				/* No.137 TPU3 TGI3D */
+	ICU_IPR138_ADDR,				/* No.138 TPU4 TGI4A */
+	ICU_IPR138_ADDR,				/* No.139 TPU4 TGI4B */
+	ICU_IPR140_ADDR,				/* No.140 TPU5 TGI5A */
+	ICU_IPR140_ADDR,				/* No.141 TPU5 TGI5B */
+	ICU_IPR142_ADDR,				/* No.142 TPU6 TGI6A */
+	ICU_IPR142_ADDR,				/* No.143 TPU6 TGI6B */
+	ICU_IPR142_ADDR,				/* No.144 TPU6 TGI6C */
+	ICU_IPR142_ADDR,				/* No.145 TPU6 TGI6D */
+	ICU_IPR146_ADDR,				/* No.146 TGIE0 */
+	ICU_IPR146_ADDR,				/* No.147 TGIF0 */
+	ICU_IPR148_ADDR,				/* No.148 TPU7 TGI7A */
+	ICU_IPR148_ADDR,				/* No.149 TPU7 TGI7B */
+	ICU_IPR150_ADDR,				/* No.150 TPU8 TGI8A */
+	ICU_IPR150_ADDR,				/* No.151 TPU8 TGI8B */
+	ICU_IPR152_ADDR,				/* No.152 TPU9 TGI9A */
+	ICU_IPR152_ADDR,				/* No.153 TPU9 TGI9B */
+	ICU_IPR152_ADDR,				/* No.154 TPU9 TGI9C */
+	ICU_IPR152_ADDR,				/* No.155 TPU9 TGI9D */
+	ICU_IPR156_ADDR,				/* No.156 TPU10 TGI10A */
+	ICU_IPR156_ADDR,				/* No.157 TPU10 TGI10B */
+	ICU_IPR156_ADDR,				/* No.158 TGIC4 */
+	ICU_IPR156_ADDR,				/* No.159 TGID4 */
+	ICU_IPR160_ADDR,				/* No.160 TGIV4 */
+	ICU_IPR161_ADDR,				/* No.161 TGIU5 */
+	ICU_IPR162_ADDR,				/* No.162 TGIV5 */
+	ICU_IPR163_ADDR,				/* No.163 TGIW5 */
+	ICU_IPR164_ADDR,				/* No.164 TCI11A */
+	ICU_IPR165_ADDR,				/* No.165 TCI11B */
+	ICU_IPR167_ADDR,				/* No.166 POE OEI1 */
+	ICU_IPR167_ADDR,				/* No.167 POE OEI2 */
+	NULL,							/* No.168  \ñ */
+	NULL,							/* No.169  \ñ */
+	ICU_IPR170_ADDR,				/* No.170 TMR0 CMIA0 */
+	ICU_IPR170_ADDR,				/* No.171 TMR0 CMIB0 */
+	ICU_IPR170_ADDR,				/* No.172 TMR0 OVI0 */
+	ICU_IPR173_ADDR,				/* No.173 TMR1 CMIA1 */
+	ICU_IPR173_ADDR,				/* No.174 TMR1 CMIB1 */
+	ICU_IPR173_ADDR,				/* No.175 TMR1 OVI1 */
+	ICU_IPR176_ADDR,				/* No.176 TMR2 CMIA2 */
+	ICU_IPR176_ADDR,				/* No.177 TMR2 CMIB2 */
+	ICU_IPR176_ADDR,				/* No.178 TMR2 OVI2 */
+	ICU_IPR179_ADDR,				/* No.179 TMR3 CMIA3 */
+	ICU_IPR179_ADDR,				/* No.180 TMR3 CMIB3 */
+	ICU_IPR179_ADDR,				/* No.181 TMR3 OVI3 */
+	ICU_IPR182_ADDR,				/* No.182 RIIC0 EEI0 */
+	ICU_IPR183_ADDR,				/* No.183 RIIC0 RXI0 */
+	ICU_IPR184_ADDR,				/* No.184 RIIC0 TXI0 */
+	ICU_IPR185_ADDR,				/* No.185 RIIC0 TEI0 */
+	ICU_IPR186_ADDR,				/* No.186 RIIC0 EEI1 */
+	ICU_IPR187_ADDR,				/* No.187 RIIC0 RXI1 */
+	ICU_IPR188_ADDR,				/* No.188 RIIC0 TXI1 */
+	ICU_IPR189_ADDR,				/* No.189 RIIC0 TEI1 */
+	ICU_IPR190_ADDR,				/* No.190 RIIC0 EEI2 */
+	ICU_IPR191_ADDR,				/* No.191 RIIC0 RXI2 */
+	ICU_IPR192_ADDR,				/* No.192 RIIC0 TXI2 */
+	ICU_IPR193_ADDR,				/* No.193 RIIC0 TEI2 */
+	ICU_IPR194_ADDR,				/* No.194 RIIC0 EEI3 */
+	ICU_IPR195_ADDR,				/* No.195 RIIC0 RXI3 */
+	ICU_IPR196_ADDR,				/* No.196 RIIC0 TXI3 */
+	ICU_IPR197_ADDR,				/* No.197 RIIC0 TEI3 */
+	ICU_IPR198_ADDR,				/* No.198 DMAC DMTEND0 */
+	ICU_IPR199_ADDR,				/* No.199 DMAC DMTEND1 */
+	ICU_IPR200_ADDR,				/* No.200 DMAC DMTEND2 */
+	ICU_IPR201_ADDR,				/* No.201 DMAC DMTEND3 */
+	ICU_IPR202_ADDR,				/* No.202 EXDMAC EXDMACI0 */
+	ICU_IPR203_ADDR,				/* No.203 EXDMAC EXDMACI1 */
+	NULL,							/* No.204  \ñ */
+	NULL,							/* No.205  \ñ */
+	NULL,							/* No.206  \ñ */
+	NULL,							/* No.207  \ñ */
+	NULL,							/* No.208  \ñ */
+	NULL,							/* No.209  \ñ */
+	NULL,							/* No.210  \ñ */
+	NULL,							/* No.211  \ñ */
+	NULL,							/* No.212  \ñ */
+	NULL,							/* No.213  \ñ */
+	ICU_IPR214_ADDR,				/* No.214 SCI0 RXI0 */
+	ICU_IPR214_ADDR,				/* No.215 SCI0 TXI0 */
+	ICU_IPR214_ADDR,				/* No.216 SCI0 TEI0 */
+	ICU_IPR217_ADDR,				/* No.217 SCI1 RXI1 */
+	ICU_IPR217_ADDR,				/* No.218 SCI1 TXI1 */
+	ICU_IPR217_ADDR,				/* No.219 SCI1 TEI1 */
+	ICU_IPR220_ADDR,				/* No.220 SCI2 RXI2 */
+	ICU_IPR220_ADDR,				/* No.221 SCI2 TXI2 */
+	ICU_IPR220_ADDR,				/* No.222 SCI2 TEI2 */
+	ICU_IPR223_ADDR,				/* No.223 SCI3 RXI3 */
+	ICU_IPR223_ADDR,				/* No.224 SCI3 TXI3 */
+	ICU_IPR223_ADDR,				/* No.225 SCI3 TEI3 */
+	ICU_IPR226_ADDR,				/* No.226 SCI4 RXI4 */
+	ICU_IPR226_ADDR,				/* No.227 SCI4 TXI4 */
+	ICU_IPR226_ADDR,				/* No.228 SCI4 TEI4 */
+	ICU_IPR229_ADDR,				/* No.229 SCI5 RXI5 */
+	ICU_IPR229_ADDR,				/* No.230 SCI5 TXI5 */
+	ICU_IPR229_ADDR,				/* No.231 SCI5 TEI5 */
+	ICU_IPR232_ADDR,				/* No.232 SCI6 RXI6 */
+	ICU_IPR232_ADDR,				/* No.233 SCI6 TXI6 */
+	ICU_IPR232_ADDR,				/* No.234 SCI6 TEI6 */
+	ICU_IPR235_ADDR,				/* No.235 SCI7 RXI7 */
+	ICU_IPR235_ADDR,				/* No.236 SCI7 TXI7 */
+	ICU_IPR235_ADDR,				/* No.237 SCI7 TEI7 */
+	ICU_IPR238_ADDR,				/* No.238 SCI8 RXI8 */
+	ICU_IPR238_ADDR,				/* No.239 SCI8 TXI8 */
+	ICU_IPR238_ADDR,				/* No.240 SCI8 TEI8 */
+	ICU_IPR241_ADDR,				/* No.241 SCI9 RXI9 */
+	ICU_IPR241_ADDR,				/* No.242 SCI9 TXI9 */
+	ICU_IPR241_ADDR,				/* No.243 SCI9 TEI9 */
+	ICU_IPR244_ADDR,				/* No.244 SCI10 RXI10 */
+	ICU_IPR244_ADDR,				/* No.245 SCI10 TXI10 */
+	ICU_IPR244_ADDR,				/* No.246 SCI10 TEI10 */
+	ICU_IPR247_ADDR,				/* No.247 SCI11 RXI11 */
+	ICU_IPR247_ADDR,				/* No.248 SCI11 TXI11 */
+	ICU_IPR247_ADDR,				/* No.249 SCI11 TEI11 */
+	ICU_IPR250_ADDR,				/* No.250 SCI12 RXI12 */
+	ICU_IPR250_ADDR,				/* No.251 SCI12 TXI12 */
+	ICU_IPR250_ADDR,				/* No.252 SCI12 TEI12 */
+	ICU_IPR253_ADDR,				/* No.253 IEB IEBINT */
+	NULL,							/* No.254  \ñ */
+	NULL,							/* No.255  \ñ */
+};
+
+
+/*
+ *  ÝvÂWX^AhXe[u
+ */
+const IER_INFO ier_reg_addr[ INHNO_MAX ] = {
+	{ NULL, INVALID_OFFSET },			/* No.0   \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.1   \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.2   \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.3   \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.4   \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.5   \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.6   \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.7   \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.8   \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.9   \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.10  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.11  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.12  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.13  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.14  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.15  \ñ */
+	{ ICU_IER02_ADDR, ICU_IEN0_BIT },	/* No.16  oXG[ BUSERR */
+	{ NULL, INVALID_OFFSET },			/* No.17  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.18  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.19  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.20  \ñ */
+	{ ICU_IER02_ADDR, ICU_IEN5_BIT },	/* No.21  FCU FIFERR */
+	{ NULL, INVALID_OFFSET },			/* No.22  \ñ */
+	{ ICU_IER02_ADDR, ICU_IEN7_BIT },	/* No.23  FCU FRDYI */
+	{ NULL, INVALID_OFFSET },			/* No.24  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.25  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.26  \ñ */
+	{ ICU_IER03_ADDR, ICU_IEN3_BIT },	/* No.27  SWINT */
+	{ ICU_IER03_ADDR, ICU_IEN4_BIT },	/* No.28  CMTjbg0 CMT0 */
+	{ ICU_IER03_ADDR, ICU_IEN5_BIT },	/* No.29  CMTjbg0 CMT1 */
+	{ ICU_IER03_ADDR, ICU_IEN6_BIT },	/* No.30  CMTjbg1 CMT2 */
+	{ ICU_IER03_ADDR, ICU_IEN7_BIT },	/* No.31  CMTjbg1 CMT3 */
+	{ ICU_IER04_ADDR, ICU_IEN0_BIT },	/* No.32  ETHER */
+	{ ICU_IER04_ADDR, ICU_IEN1_BIT },	/* No.33  USB0 D0FIFO0 */
+	{ ICU_IER04_ADDR, ICU_IEN2_BIT },	/* No.34  USB0 D1FIFO0 */
+	{ ICU_IER04_ADDR, ICU_IEN3_BIT },	/* No.35  USB0 USBI0 */
+	{ ICU_IER04_ADDR, ICU_IEN4_BIT },	/* No.36  USB1 D0FIFO1 */
+	{ ICU_IER04_ADDR, ICU_IEN5_BIT },	/* No.37  USB1 D1FIFO1 */
+	{ ICU_IER04_ADDR, ICU_IEN6_BIT },	/* No.38  USB1 USBI1 */
+	{ ICU_IER04_ADDR, ICU_IEN7_BIT },	/* No.39  RSPI0 SPRI0 */
+	{ ICU_IER05_ADDR, ICU_IEN0_BIT },	/* No.40  RSPI0 SPTI0 */
+	{ ICU_IER05_ADDR, ICU_IEN1_BIT },	/* No.41  RSPI0 SPII0 */
+	{ ICU_IER05_ADDR, ICU_IEN2_BIT },	/* No.42  RSPI1 SPRI1 */
+	{ ICU_IER05_ADDR, ICU_IEN3_BIT },	/* No.43  RSPI1 SPTI1 */
+	{ ICU_IER05_ADDR, ICU_IEN4_BIT },	/* No.44  RSPI1 SPII1 */
+	{ ICU_IER05_ADDR, ICU_IEN5_BIT },	/* No.45  RSPI2 SPRI2 */
+	{ ICU_IER05_ADDR, ICU_IEN6_BIT },	/* No.46  RSPI2 SPTI2 */
+	{ ICU_IER05_ADDR, ICU_IEN7_BIT },	/* No.47  RSPI2 SPII2 */
+	{ ICU_IER06_ADDR, ICU_IEN0_BIT },	/* No.48  CAN0 RXF0 */
+	{ ICU_IER06_ADDR, ICU_IEN1_BIT },	/* No.49  CAN0 TXF0 */
+	{ ICU_IER06_ADDR, ICU_IEN2_BIT },	/* No.50  CAN0 RXM0 */
+	{ ICU_IER06_ADDR, ICU_IEN3_BIT },	/* No.51  CAN0 TXM0 */
+	{ ICU_IER06_ADDR, ICU_IEN4_BIT },	/* No.52  CAN1 RXF1 */
+	{ ICU_IER06_ADDR, ICU_IEN5_BIT },	/* No.53  CAN1 TXF1 */
+	{ ICU_IER06_ADDR, ICU_IEN6_BIT },	/* No.54  CAN1 RXM1 */
+	{ ICU_IER06_ADDR, ICU_IEN7_BIT },	/* No.55  CAN1 TXM1 */
+	{ ICU_IER07_ADDR, ICU_IEN0_BIT },	/* No.56  CAN2 RXF2 */
+	{ ICU_IER07_ADDR, ICU_IEN1_BIT },	/* No.57  CAN2 TXF2 */
+	{ ICU_IER07_ADDR, ICU_IEN2_BIT },	/* No.58  CAN2 RXM2 */
+	{ ICU_IER07_ADDR, ICU_IEN3_BIT },	/* No.59  CAN2 TXM2 */
+	{ NULL, INVALID_OFFSET },			/* No.60  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.61  \ñ */
+	{ ICU_IER07_ADDR, ICU_IEN6_BIT },	/* No.62  RTC PRD */
+	{ NULL, INVALID_OFFSET },			/* No.63  \ñ */
+	{ ICU_IER08_ADDR, ICU_IEN0_BIT },	/* No.64  O[q IRQ0 */
+	{ ICU_IER08_ADDR, ICU_IEN1_BIT },	/* No.65  O[q IRQ1 */
+	{ ICU_IER08_ADDR, ICU_IEN2_BIT },	/* No.66  O[q IRQ2 */
+	{ ICU_IER08_ADDR, ICU_IEN3_BIT },	/* No.67  O[q IRQ3 */
+	{ ICU_IER08_ADDR, ICU_IEN4_BIT },	/* No.68  O[q IRQ4 */
+	{ ICU_IER08_ADDR, ICU_IEN5_BIT },	/* No.69  O[q IRQ5 */
+	{ ICU_IER08_ADDR, ICU_IEN6_BIT },	/* No.70  O[q IRQ6 */
+	{ ICU_IER08_ADDR, ICU_IEN7_BIT },	/* No.71  O[q IRQ7 */
+	{ ICU_IER09_ADDR, ICU_IEN0_BIT },	/* No.72  O[q IRQ8 */
+	{ ICU_IER09_ADDR, ICU_IEN1_BIT },	/* No.73  O[q IRQ9 */
+	{ ICU_IER09_ADDR, ICU_IEN2_BIT },	/* No.74  O[q IRQ10 */
+	{ ICU_IER09_ADDR, ICU_IEN3_BIT },	/* No.75  O[q IRQ11 */
+	{ ICU_IER09_ADDR, ICU_IEN4_BIT },	/* No.76  O[q IRQ12 */
+	{ ICU_IER09_ADDR, ICU_IEN5_BIT },	/* No.77  O[q IRQ13 */
+	{ ICU_IER09_ADDR, ICU_IEN6_BIT },	/* No.78  O[q IRQ14 */
+	{ ICU_IER09_ADDR, ICU_IEN7_BIT },	/* No.79  O[q IRQ15 */
+	{ NULL, INVALID_OFFSET },			/* No.80  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.81  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.82  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.83  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.84  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.85  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.86  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.87  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.88  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.89  \ñ */
+	{ ICU_IER0B_ADDR, ICU_IEN2_BIT },	/* No.90  USBR0 */
+	{ ICU_IER0B_ADDR, ICU_IEN3_BIT },	/* No.91  USBR1 */
+	{ ICU_IER0B_ADDR, ICU_IEN4_BIT },	/* No.92  RTC ALM */
+	{ ICU_IER0B_ADDR, ICU_IEN5_BIT },	/* No.92  RTC PRD */
+	{ NULL, INVALID_OFFSET },			/* No.94  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.95  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.96  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.97  \ñ */
+	{ ICU_IER0C_ADDR, ICU_IEN2_BIT },	/* No.98  AD0 ADI0 */
+	{ NULL, INVALID_OFFSET },			/* No.99  \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.100 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.101 \ñ */
+	{ ICU_IER0C_ADDR, ICU_IEN6_BIT },	/* No.102 S12AD S12ADI00 */
+	{ NULL, INVALID_OFFSET },			/* No.103 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.104 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.105 \ñ */
+	{ ICU_IER0D_ADDR, ICU_IEN2_BIT },	/* No.106 ICU GROUP0 */
+	{ ICU_IER0D_ADDR, ICU_IEN3_BIT },	/* No.107 ICU GROUP1 */
+	{ ICU_IER0D_ADDR, ICU_IEN4_BIT },	/* No.108 ICU GROUP2 */
+	{ ICU_IER0D_ADDR, ICU_IEN5_BIT },	/* No.109 ICU GROUP3 */
+	{ ICU_IER0D_ADDR, ICU_IEN6_BIT },	/* No.110 ICU GROUP4 */
+	{ ICU_IER0D_ADDR, ICU_IEN7_BIT },	/* No.111 ICU GROUP5 */
+	{ ICU_IER0E_ADDR, ICU_IEN0_BIT },	/* No.112 ICU GROUP6 */
+	{ NULL, INVALID_OFFSET },			/* No.113 \ñ */
+	{ ICU_IER0E_ADDR, ICU_IEN1_BIT },	/* No.114 ICU GROUP12 */
+	{ NULL, INVALID_OFFSET },			/* No.115 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.116 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.117 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.118 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.119 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.120 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.121 \ñ */
+	{ ICU_IER0F_ADDR, ICU_IEN2_BIT },	/* No.122 SCI12 SCIX0 */
+	{ ICU_IER0F_ADDR, ICU_IEN3_BIT },	/* No.123 SCI12 SCIX1 */
+	{ ICU_IER0F_ADDR, ICU_IEN4_BIT },	/* No.124 SCI12 SCIX2 */
+	{ ICU_IER0F_ADDR, ICU_IEN5_BIT },	/* No.125 SCI12 SCIX3 */
+	{ ICU_IER0F_ADDR, ICU_IEN6_BIT },	/* No.126 TPU0 TGI0A */
+	{ ICU_IER0F_ADDR, ICU_IEN7_BIT },	/* No.127 TPU0 TGI0B */
+	{ ICU_IER10_ADDR, ICU_IEN0_BIT },	/* No.128 TPU0 TGI0C */
+	{ ICU_IER10_ADDR, ICU_IEN1_BIT },	/* No.129 TPU0 TGI0D */
+	{ ICU_IER10_ADDR, ICU_IEN2_BIT },	/* No.130 TPU1 TGI1A */
+	{ ICU_IER10_ADDR, ICU_IEN3_BIT },	/* No.131 TPU1 TGI1B */
+	{ ICU_IER10_ADDR, ICU_IEN4_BIT },	/* No.132 TPU2 TGI2A */
+	{ ICU_IER10_ADDR, ICU_IEN5_BIT },	/* No.133 TPU2 TGI2B */
+	{ ICU_IER10_ADDR, ICU_IEN6_BIT },	/* No.134 TPU3 TGI3A */
+	{ ICU_IER10_ADDR, ICU_IEN7_BIT },	/* No.135 TPU3 TGI3B */
+	{ ICU_IER11_ADDR, ICU_IEN0_BIT },	/* No.136 TPU3 TGI3C */
+	{ ICU_IER11_ADDR, ICU_IEN1_BIT },	/* No.137 TPU3 TGI3D */
+	{ ICU_IER11_ADDR, ICU_IEN2_BIT },	/* No.138 TPU4 TGI4A */
+	{ ICU_IER11_ADDR, ICU_IEN3_BIT },	/* No.139 TPU4 TGI4B */
+	{ ICU_IER11_ADDR, ICU_IEN4_BIT },	/* No.140 TPU5 TGI5A */
+	{ ICU_IER11_ADDR, ICU_IEN5_BIT },	/* No.141 TPU5 TGI5B */
+	{ ICU_IER11_ADDR, ICU_IEN6_BIT },	/* No.142 TPU6 TGI6A */
+	{ ICU_IER11_ADDR, ICU_IEN7_BIT },	/* No.143 TPU6 TGI6B */
+	{ ICU_IER12_ADDR, ICU_IEN0_BIT },	/* No.144 TPU6 TGI6C */
+	{ ICU_IER12_ADDR, ICU_IEN1_BIT },	/* No.145 TPU6 TGI6D */
+	{ ICU_IER12_ADDR, ICU_IEN2_BIT },	/* No.146 TPU6 TGIE0 */
+	{ ICU_IER12_ADDR, ICU_IEN3_BIT },	/* No.147 TPU6 TGIF0 */
+	{ ICU_IER12_ADDR, ICU_IEN4_BIT },	/* No.148 TPU7 TGI7A */
+	{ ICU_IER12_ADDR, ICU_IEN5_BIT },	/* No.149 TPU7 TGI7B */
+	{ ICU_IER12_ADDR, ICU_IEN6_BIT },	/* No.150 TPU8 TGI8A */
+	{ ICU_IER12_ADDR, ICU_IEN7_BIT },	/* No.151 TPU8 TGI8B */
+	{ ICU_IER13_ADDR, ICU_IEN0_BIT },	/* No.152 TPU9 TGI9A */
+	{ ICU_IER13_ADDR, ICU_IEN1_BIT },	/* No.153 TPU9 TGI9B */
+	{ ICU_IER13_ADDR, ICU_IEN2_BIT },	/* No.154 TPU9 TGI9C */
+	{ ICU_IER13_ADDR, ICU_IEN3_BIT },	/* No.155 TPU9 TGI9D */
+	{ ICU_IER13_ADDR, ICU_IEN4_BIT },	/* No.156 TPU10 TGI10A */
+	{ ICU_IER13_ADDR, ICU_IEN5_BIT },	/* No.157 TPU10 TGI10B */
+	{ ICU_IER13_ADDR, ICU_IEN6_BIT },	/* No.158 TPU10 TGIC4 */
+	{ ICU_IER13_ADDR, ICU_IEN7_BIT },	/* No.159 TPU10 TGID4 */
+	{ ICU_IER14_ADDR, ICU_IEN0_BIT },	/* No.160 TPU10 TGIV4 */
+	{ ICU_IER14_ADDR, ICU_IEN1_BIT },	/* No.161 TPU11 TGIU5 */
+	{ ICU_IER14_ADDR, ICU_IEN2_BIT },	/* No.162 TPU11 TGIV5 */
+	{ ICU_IER14_ADDR, ICU_IEN3_BIT },	/* No.163 TPU11 TGIW5 */
+	{ ICU_IER14_ADDR, ICU_IEN4_BIT },	/* No.164 TPU11 TCI11A */
+	{ ICU_IER14_ADDR, ICU_IEN5_BIT },	/* No.165 TPU11 TCI11B */
+	{ ICU_IER14_ADDR, ICU_IEN6_BIT },	/* No.166 POE OEI1 */
+	{ ICU_IER14_ADDR, ICU_IEN7_BIT },	/* No.167 POE OEI2 */
+	{ NULL, INVALID_OFFSET },			/* No.168 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.169 \ñ */
+	{ ICU_IER15_ADDR, ICU_IEN2_BIT },	/* No.170 TMR0 CMIA0 */
+	{ ICU_IER15_ADDR, ICU_IEN3_BIT },	/* No.171 TMR0 CMIB0 */
+	{ ICU_IER15_ADDR, ICU_IEN4_BIT },	/* No.172 TMR0 OVI0 */
+	{ ICU_IER15_ADDR, ICU_IEN5_BIT },	/* No.173 TMR1 CMIA1 */
+	{ ICU_IER15_ADDR, ICU_IEN6_BIT },	/* No.174 TMR1 CMIB1 */
+	{ ICU_IER15_ADDR, ICU_IEN7_BIT },	/* No.175 TMR1 OVI1 */
+	{ ICU_IER16_ADDR, ICU_IEN0_BIT },	/* No.176 TMR2 CMIA2 */
+	{ ICU_IER16_ADDR, ICU_IEN1_BIT },	/* No.177 TMR2 CMIB2 */
+	{ ICU_IER16_ADDR, ICU_IEN2_BIT },	/* No.178 TMR2 OVI2 */
+	{ ICU_IER16_ADDR, ICU_IEN3_BIT },	/* No.179 TMR3 CMIA3 */
+	{ ICU_IER16_ADDR, ICU_IEN4_BIT },	/* No.180 TMR3 CMIB3 */
+	{ ICU_IER16_ADDR, ICU_IEN5_BIT },	/* No.181 TMR3 OVI3 */
+	{ ICU_IER16_ADDR, ICU_IEN6_BIT },	/* No.182 RIIC0 EEI0 */
+	{ ICU_IER16_ADDR, ICU_IEN7_BIT },	/* No.183 RIIC0 RXI0 */
+	{ ICU_IER17_ADDR, ICU_IEN0_BIT },	/* No.184 RIIC0 TXI0 */
+	{ ICU_IER17_ADDR, ICU_IEN1_BIT },	/* No.185 RIIC0 TEI0 */
+	{ ICU_IER17_ADDR, ICU_IEN2_BIT },	/* No.186 RIIC0 EEI1 */
+	{ ICU_IER17_ADDR, ICU_IEN3_BIT },	/* No.187 RIIC0 RXI1 */
+	{ ICU_IER17_ADDR, ICU_IEN4_BIT },	/* No.188 RIIC0 TXI1 */
+	{ ICU_IER17_ADDR, ICU_IEN5_BIT },	/* No.189 RIIC0 TEI1 */
+	{ ICU_IER17_ADDR, ICU_IEN6_BIT },	/* No.190 RIIC0 EEI2 */
+	{ ICU_IER17_ADDR, ICU_IEN7_BIT },	/* No.191 RIIC0 RXI2 */
+	{ ICU_IER18_ADDR, ICU_IEN0_BIT },	/* No.192 RIIC0 TXI2 */
+	{ ICU_IER18_ADDR, ICU_IEN1_BIT },	/* No.193 RIIC0 TEI2 */
+	{ ICU_IER18_ADDR, ICU_IEN2_BIT },	/* No.194 RIIC0 EEI3 */
+	{ ICU_IER18_ADDR, ICU_IEN3_BIT },	/* No.195 RIIC0 RXI3 */
+	{ ICU_IER18_ADDR, ICU_IEN4_BIT },	/* No.196 RIIC0 TXI3 */
+	{ ICU_IER18_ADDR, ICU_IEN5_BIT },	/* No.197 RIIC0 TEI3 */
+	{ ICU_IER18_ADDR, ICU_IEN6_BIT },	/* No.198 DMAC DMAC0I */
+	{ ICU_IER18_ADDR, ICU_IEN7_BIT },	/* No.199 DMAC DMAC1I */
+	{ ICU_IER19_ADDR, ICU_IEN0_BIT },	/* No.200 DMAC DMAC2I */
+	{ ICU_IER19_ADDR, ICU_IEN1_BIT },	/* No.201 DMAC DMAC3I */
+	{ ICU_IER19_ADDR, ICU_IEN2_BIT },	/* No.202 EXDMAC EXDMAC0I */
+	{ ICU_IER19_ADDR, ICU_IEN3_BIT },	/* No.203 EXDMAC EXDMAC1I */
+	{ NULL, INVALID_OFFSET },			/* No.204 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.205 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.206 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.207 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.208 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.209 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.210 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.211 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.212 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.213 \ñ */
+	{ ICU_IER1A_ADDR, ICU_IEN6_BIT },	/* No.214 SCI0 RXI0 */
+	{ ICU_IER1A_ADDR, ICU_IEN7_BIT },	/* No.215 SCI0 TXI0 */
+	{ ICU_IER1B_ADDR, ICU_IEN0_BIT },	/* No.216 SCI0 TEI0 */
+	{ ICU_IER1B_ADDR, ICU_IEN1_BIT },	/* No.217 SCI1 RXI1 */
+	{ ICU_IER1B_ADDR, ICU_IEN2_BIT },	/* No.228 SCI1 TXI1 */
+	{ ICU_IER1B_ADDR, ICU_IEN3_BIT },	/* No.229 SCI1 TEI1 */
+	{ ICU_IER1B_ADDR, ICU_IEN4_BIT },	/* No.220 SCI2 RXI2 */
+	{ ICU_IER1B_ADDR, ICU_IEN5_BIT },	/* No.221 SCI2 TXI2 */
+	{ ICU_IER1B_ADDR, ICU_IEN6_BIT },	/* No.222 SCI2 TEI2 */
+	{ ICU_IER1B_ADDR, ICU_IEN7_BIT },	/* No.223 SCI3 RXI3 */
+	{ ICU_IER1C_ADDR, ICU_IEN0_BIT },	/* No.224 SCI3 TXI3 */
+	{ ICU_IER1C_ADDR, ICU_IEN1_BIT },	/* No.225 SCI3 TEI3 */
+	{ ICU_IER1C_ADDR, ICU_IEN2_BIT },	/* No.226 SCI4 RXI4 */
+	{ ICU_IER1C_ADDR, ICU_IEN3_BIT },	/* No.227 SCI4 TXI4 */
+	{ ICU_IER1C_ADDR, ICU_IEN4_BIT },	/* No.228 SCI4 TEI4 */
+	{ ICU_IER1C_ADDR, ICU_IEN5_BIT },	/* No.229 SCI5 RXI5 */
+	{ ICU_IER1C_ADDR, ICU_IEN6_BIT },	/* No.230 SCI5 TXI5 */
+	{ ICU_IER1C_ADDR, ICU_IEN7_BIT },	/* No.231 SCI5 TEI5 */
+	{ ICU_IER1D_ADDR, ICU_IEN0_BIT },	/* No.232 SCI6 RXI6 */
+	{ ICU_IER1D_ADDR, ICU_IEN1_BIT },	/* No.233 SCI6 TXI6 */
+	{ ICU_IER1D_ADDR, ICU_IEN2_BIT },	/* No.234 SCI6 TEI6 */
+	{ ICU_IER1D_ADDR, ICU_IEN3_BIT },	/* No.235 SCI7 RXI7 */
+	{ ICU_IER1D_ADDR, ICU_IEN4_BIT },	/* No.236 SCI7 TXI7 */
+	{ ICU_IER1D_ADDR, ICU_IEN5_BIT },	/* No.237 SCI7 TEI7 */
+	{ ICU_IER1D_ADDR, ICU_IEN6_BIT },	/* No.238 SCI8 RXI8 */
+	{ ICU_IER1D_ADDR, ICU_IEN7_BIT },	/* No.239 SCI8 TXI8 */
+	{ ICU_IER1E_ADDR, ICU_IEN0_BIT },	/* No.240 SCI8 TEI8 */
+	{ ICU_IER1E_ADDR, ICU_IEN1_BIT },	/* No.241 SCI9 RXI9 */
+	{ ICU_IER1E_ADDR, ICU_IEN2_BIT },	/* No.242 SCI9 TXI9 */
+	{ ICU_IER1E_ADDR, ICU_IEN3_BIT },	/* No.243 SCI9 TEI9 */
+	{ ICU_IER1E_ADDR, ICU_IEN4_BIT },	/* No.244 SCI10 RXI10 */
+	{ ICU_IER1E_ADDR, ICU_IEN5_BIT },	/* No.245 SCI10 TXI10 */
+	{ ICU_IER1E_ADDR, ICU_IEN6_BIT },	/* No.246 SCI10 TEI10 */
+	{ ICU_IER1E_ADDR, ICU_IEN7_BIT },	/* No.247 SCI11 RXI11 */
+	{ ICU_IER1F_ADDR, ICU_IEN0_BIT },	/* No.248 SCI11 TXI11 */
+	{ ICU_IER1F_ADDR, ICU_IEN1_BIT },	/* No.249 SCI11 TEI11 */
+	{ ICU_IER1F_ADDR, ICU_IEN2_BIT },	/* No.250 SCI12 RXI12 */
+	{ ICU_IER1F_ADDR, ICU_IEN3_BIT },	/* No.251 SCI12 TXI12 */
+	{ ICU_IER1F_ADDR, ICU_IEN4_BIT },	/* No.252 SCI12 TEI12 */
+	{ ICU_IER1F_ADDR, ICU_IEN5_BIT },	/* No.253 IEB IEBINT */
+	{ NULL, INVALID_OFFSET },			/* No.254 \ñ */
+	{ NULL, INVALID_OFFSET },			/* No.255 \ñ */
+};
+
+
+/*
+ *  IRQRg[WX^AhXe[u
+ */
+volatile uint8_t __evenaccess * const irqcr_reg_addr[ IRQ_MAX ] = {
+	ICU_IRQ0_ADDR,
+	ICU_IRQ1_ADDR,
+	ICU_IRQ2_ADDR,
+	ICU_IRQ3_ADDR,
+	ICU_IRQ4_ADDR,
+	ICU_IRQ5_ADDR,
+	ICU_IRQ6_ADDR,
+	ICU_IRQ7_ADDR,
+	ICU_IRQ8_ADDR,
+	ICU_IRQ9_ADDR,
+	ICU_IRQ10_ADDR,
+	ICU_IRQ11_ADDR,
+	ICU_IRQ12_ADDR,
+	ICU_IRQ13_ADDR,
+	ICU_IRQ14_ADDR,
+	ICU_IRQ15_ADDR,
+};
+
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/rx630_config.h
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/rx630_config.h	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/rx630_config.h	(revision 101)
@@ -0,0 +1,104 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ *  Copyright (C) 2013      by Mitsuhiro Matsuura
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		vZbTË¶W
+[iRX630pj
+ *
+ *  ±ÌCN[ht@CÍCtarget_config.hiÜ½ÍC»±©çCN
+ *  [h³êét@CjÌÝ©çCN[h³êéD¼Ìt@C©ç
+ *  ¼ÚCN[hµÄÍÈçÈ¢D
+ */
+
+
+#ifndef TOPPERS_RX630_CONFIG_H
+#define TOPPERS_RX630_CONFIG_H
+
+
+/*
+ *  Ývö
+ */
+#define	INHNO_MAX	UINT_C( 256 )
+
+
+/*
+ *  Ý§äp^è`
+ */
+typedef struct ier_info {
+	volatile uint8_t __evenaccess	*addr;
+			 uint8_t				offset;
+} IER_INFO;
+
+
+/*
+ *  Ý§äpè`
+ */
+#define	INVALID_OFFSET				( 0xFFU )
+#define	INTNO_IRQ( intno )			( ( 64U <= ( intno ) ) && ( ( intno ) <= 79U ) )
+#define	INTNO_IRQ_OFFSET( intno )	( ( intno ) - 64U )
+#define	IRQ_MAX						UINT_C( 16 )
+
+#define IR_TOP						(0x00087010)
+#define IR_REG( intno )				((volatile uint8_t __evenaccess * )(IR_TOP + (intno)))
+
+/*
+ *  Ý§äpe[u
+ */
+
+/* ÝvövCIeBWX^AhX */
+extern volatile uint8_t __evenaccess * const ipr_reg_addr[];
+/* ÝvÂWX^AhX */
+extern const IER_INFO ier_reg_addr[];
+/* ÝvWX^AhX */
+extern volatile uint8_t __evenaccess * const ir_reg_addr[];
+/* IRQRg[WX^AhX */
+extern volatile uint8_t __evenaccess * const irqcr_reg_addr[];
+
+
+/*
+ *  vZbTË¶W
+[iRX630pj
+ */
+#include "rx630_ccrx/prc_config.h"
+
+#endif	/* TOPPERS_RX630_CONFIG_H */
+
Index: uKadecot/trunk/ssp/arch/rx630_ccrx/start.src
===================================================================
--- uKadecot/trunk/ssp/arch/rx630_ccrx/start.src	(revision 101)
+++ uKadecot/trunk/ssp/arch/rx630_ccrx/start.src	(revision 101)
@@ -0,0 +1,170 @@
+;*
+;*  TOPPERS/SSP Kernel
+;*      Smallest Set Profile Kernel
+;* 
+;*  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+;*                              Toyohashi Univ. of Technology, JAPAN
+;*  Copyright (C) 2005,2006 by Embedded and Real-Time Systems Laboratory
+;*              Graduate School of Information Science, Nagoya Univ., JAPAN
+;*  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+;* 
+;*  ãLì ÒÍCFree Software Foundation ÉæÁÄö\³êÄ¢é 
+;*  GNU General Public License Ì Version 2 ÉLq³êÄ¢éð©CÈ
+;*  ºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEFAi{\tgEF
+;*  AðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏEÄzziÈºC
+;*  pÆÄÔj·é±Æð³Åø·éD
+;*  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+;*       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+;*      XR[hÉÜÜêÄ¢é±ÆD
+;*  (2) {\tgEFAðÄpÂ\ÈoCiR[hiP[^uIu
+;*      WFNgt@CâCuÈÇjÌ`Åp·éêÉÍCp
+;*      Éº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì \¦C
+;*      ±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+;*  (3) {\tgEFAðÄpsÂ\ÈoCiR[hÌ`Ü½Í@íÉg
+;*      Ýñ¾`Åp·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+;*    (a) pÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+;*         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+;*    (b) pÌ`ÔðCÊÉèßéû@ÉæÁÄCãLì ÒÉñ·é
+;*        ±ÆD
+;*  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+;*      Q©çàCãLì ÒðÆÓ·é±ÆD
+;* 
+;*  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì ÒÍC
+;*  {\tgEFAÉÖµÄC»ÌKpÂ\«àÜßÄC¢©ÈéÛØàsí
+;*  È¢DÜ½C{\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢
+;*  ©Èé¹QÉÖµÄàC»ÌÓCðíÈ¢D
+;* 
+
+	.include	sectrx.inc
+
+	;
+	;  }bvÌè`(^[QbgË¶)
+	;
+
+DFLRE				.equ	007FC440H		; DFLREWX^
+
+DB_BLOCK_ENABLE		.equ	02D0FH
+
+;
+;  ú»[`
+;
+	.section	P, CODE
+
+	.glb	_start
+	.glb	_sta_ker
+	.glb	_software_init_hook
+	.glb	_hardware_init_hook
+	.glb	__kernel_istkpt
+
+_start:
+	;
+	;  d¹üãÍx0, SÝÖ~óÔÅ é.
+	;  J[lÅÍ¬ÝðgpµÈ¢½ßABPC, BPSWyÑFINTV
+	;  Ìú»ÍsíÈ¢.
+	;
+
+	;
+	;  à ROMif[^tbV
+jÌæÌÝè
+	;
+	;  Zbgã, f[^tbV
+ÌæÍÇÝoµÖ~ÆÈÁÄ¢é
+	;  ½ß, ÇÝoµÂÉÝè·é.
+	;
+	mov.l	#DFLRE, r5
+	mov.w	#DB_BLOCK_ENABLE, [R5]
+	
+	;
+	;  X^bN|C^ÌÝè
+	;
+	;  [UÉÄñ^XNReLXgpX^bNÌæðpÓµ½ê,
+	;  [UÌæðÝè·é.
+	;  kernel_cfg.cÉÄ"_kernel_istkpt"Ìlðè·é.
+	;
+	mov.l	#__kernel_istkpt, r5
+	mov.l	[r5], r0			; ñ^XNReLXgpX^bNÌæðÝè
+
+	;
+	;  ÂÏxN^e[uÌÝè
+	;
+	mvtc	#(topof C$VECT), intb			; xN^e[uÌÝè
+
+	;
+	;  n[hEFAÅLÌú»[`ÌÄoµ
+	;
+	mov.l	#_hardware_init_hook, r5
+	cmp		#0, r5
+	beq.b	init_D
+	jsr		r5
+
+	;
+	;  úl èÏÌæÌú»
+	;
+init_D:
+	mov.l	#(sizeof R), r3
+	cmp		#0, r3
+	beq.b	init_D_2					; TCY0Èçú»KvÈµ
+	mov.l	#(topof R), r1
+	mov.l	#(topof D), r2
+	smovf
+
+init_D_2:
+	mov.l	#(sizeof R_2), r3
+	cmp		#0, r3
+	beq.b	init_D_1					; TCY0Èçú»KvÈµ
+	mov.l	#(topof R_2), r1
+	mov.l	#(topof D_2), r2
+	smovf
+
+init_D_1:
+	mov.l	#(sizeof R_1), r3
+	cmp		#0, r3
+	beq.b	clear_B						; TCY0Èçú»KvÈµ
+	mov.l	#(topof R_1), r1
+	mov.l	#(topof D_1), r2
+	smovf
+
+	;
+	;  úlÈµÏÌæÌú»
+	;
+clear_B:
+	mov.l	#0, r2
+	mov.l	#(topof B), r1
+	mov.l	#(sizeof B) , r3
+	sstr.b
+
+clear_B_2:
+	mov.l	#0, r2
+	mov.l	#(topof B_2), r1
+	mov.l	#(sizeof B_2) , r3
+	sstr.b
+
+clear_B_1:
+	mov.l	#0, r2
+	mov.l	#(topof B_1), r1
+	mov.l	#(sizeof B_1) , r3
+	sstr.b
+
+	;
+	;  software_init_hook ðÄoµi0 ÅÈ¢êj
+	;
+	;  \tgEFAÂ«iÁÉCujÉË¶µÄKvÈú»
+	;  ª éêÍCsoftware_init_hook Æ¢¤ÖðpÓ·êÎæ¢.
+	;
+	mov.l	#_software_init_hook, r5
+	cmp		#0, r5
+	beq.b	kernel_link
+	jsr		r5
+
+	;
+	;  J[lX^[g
+	;
+kernel_link:
+	bra.a	_sta_ker					; --> _sta_ker()
+
+	.end
+
Index: uKadecot/trunk/ssp/configure
===================================================================
--- uKadecot/trunk/ssp/configure	(revision 101)
+++ uKadecot/trunk/ssp/configure	(revision 101)
@@ -0,0 +1,280 @@
+#! /usr/bin/perl
+#
+#  TOPPERS Software
+#      Toyohashi Open Platform for Embedded Real-Time Systems/
+# 
+#  Copyright (C) 2001-2003 by Embedded and Real-Time Systems Laboratory
+#                              Toyohashi Univ. of Technology, JAPAN
+#  Copyright (C) 2006-2009 by Embedded and Real-Time Systems Laboratory
+#              Graduate School of Information Science, Nagoya Univ., JAPAN
+# 
+#  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+#  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+#  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+#  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+#       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+#      XR[hÉÜÜêÄ¢é±ÆD
+#  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+#      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+#      Ì³ÛØKèðfÚ·é±ÆD
+#  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+#      ÆD
+#    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+#        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+#    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+#        ñ·é±ÆD
+#  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+#      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+#      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+#      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+#      ÆÓ·é±ÆD
+# 
+#  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+#  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+#  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+#  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+#  ÌÓCðíÈ¢D
+# 
+#  @(#) $Id: configure 1733 2010-02-03 03:50:52Z ertl-hiro $
+# 
+
+use Getopt::Std;
+
+#  IvVÌè`
+#
+#  -T <target>			^[Qbg¼iK{j
+#  -A <applname>		AvP[VvO¼iftHgÍsample1j
+#  -a <appldir>			AvP[VÌfBNg¼
+#  -U <applobjs>		¼ÌAvP[VvOt@C
+#						i.ot@C¼ÅwèD¡wèÂj
+#  -L <kernel_lib>		J[lCuilibkernel.ajÌfBNg¼
+#						iÈªµ½êCJ[lCuàmake·éj
+#  -f					J[lðÖPÊÅRpC·é©Ç¤©Ìwè
+#  -D <srcdir>			J[lÌ\[XÌu©êÄ¢éfBNg
+#  -l <srclang>			vO~O¾êi»_ÅÍcÆc++ÌÝT|[gj
+#  -t <templatedir>		ev[gfBNgÌwèiftHgÍsamplej
+#  -m <makefile>		ev[gMakefile¼ÌwèiftHgÍMakefilej
+#  -d <dbgenv>			ÀsÂ«Ì¼Ì
+#  -r					g[XOL^ÌTvR[hðgp·é©Ç¤©
+#						Ìwè
+#  -p <perl>			perlÌpX¼i¾¦IÉwè·éêj
+#  -g <cfg>				RtBM
+[^icfgjÌpX¼
+
+#  gpá(1)
+#
+#  % ../configure -T dve68k_gcc -D GDB_STUB -A perf1 -a ../test -U histogram.o
+#
+#  gpá(2)
+#
+#  % ../configure -T macosx_gcc -L .
+#	AvP[VvOÍ sample1 ÉÈéD
+
+#
+#  IvVÌ
+#
+getopt("TAaULDltmdpg");
+
+#
+#  ÏÌú»
+#
+
+$target = $opt_T;
+$applname = $opt_A ? $opt_A : "sample1";
+$appldir = $opt_a ? $opt_a : "";
+$applobjs = $opt_U ? $opt_U : "";
+$kernel_lib = $opt_L ? $opt_L : "";
+$kernel_funcobjs = $opt_f ? "true" : "";
+$srclang = $opt_l ? $opt_l : "c";
+$makefile = $opt_m ? $opt_m : "Makefile";
+$dbgenv = $opt_d ? "TOPPERS_".$opt_d : "";
+$enable_trace = $opt_r ? "true" : "";
+
+#
+#  IuWFNgt@C¼Ìg£qðÔ·
+#
+sub get_objext {
+	local(@uname);
+
+	use POSIX;
+	@uname = uname();
+	if ($uname[0] =~ /^cygwin/i) {
+		return("exe");
+	}
+	else {
+		return("");
+	}
+}
+
+#
+#  vOÌêðõ·é
+#
+sub get_path {
+	local($progname, @pathlist) = @_;
+	local($path);
+
+	foreach $path (@pathlist) {
+		if (-x $path."/".$progname) {
+			return($path."/".$progname);
+		}
+	}
+	return("");
+}
+
+#
+#  t@CðÏ··é
+#
+sub convert {
+	local($infile, $outfile) = @_;
+	local($line, $varname, $varval);
+
+	print STDERR "configure: Generating $outfile from $infile.\n";
+	if (-f $outfile) {
+		print STDERR "configure: $outfile exists.",
+						"  Save as $outfile.bak.\n";
+		rename($outfile, $outfile.".bak");
+	}
+	unless (open(INFILE, $infile)) {
+		print STDERR "configure: can't open $infile\n";
+		exit(1);
+	}
+	unless (open(OUTFILE, "> ".$outfile)) {
+		print STDERR "configure: can't open $outfile\n";
+		exit(1);
+	}
+
+	while ($line = <INFILE>) {
+		chop $line;
+		while ($line =~ /^(.*)\@\(([A-Za-z_]+)\)(.*)$/) {
+			$line = $1.$vartable{$2}.$3;
+		}
+		print OUTFILE $line,"\n";
+	}
+
+	close(INFILE);
+	close(OUTFILE);
+}
+
+#
+#  Tvð©Â¯Ät@Cð¶¬·é
+#
+sub generate {
+	local($file, $mandatory) = @_;
+	local($path);
+
+	if ($sys) {
+		$path = $templatedir."/".$file.".".$cpu."-".$sys;
+		if (-f $path) {
+			convert($path, $file);
+			return;
+		}
+
+		$path = $templatedir."/".$file.".".$sys;
+		if (-f $path) {
+			convert($path, $file);
+			return;
+		}
+	}	
+
+	$path = $templatedir."/".$file.".".$cpu;
+	if (-f $path) {
+		convert($path, $file);
+		return;
+	}	
+
+	$path = $templatedir."/".$file;
+	if ($mandatory || -f $path) {
+		convert($path, $file);
+	}	
+}
+
+#
+#  \[XfBNg¼ðæèo·
+#
+$pwd = `pwd`; chop $pwd;
+if ($opt_D) {
+	$srcabsdir = $srcdir = $opt_D;
+}
+elsif ($0 =~ /(.*)\/configure/) {
+	$srcdir = $1;
+	if ($srcdir =~ /^\//) {
+		$srcabsdir = $srcdir;
+	}
+	else {
+		$srcabsdir = $pwd."/".$srcdir;
+	}
+}
+else {
+	$srcabsdir = $srcdir = $pwd;
+}
+
+$perl = $opt_p ? $opt_p : get_path("perl", ("/usr/local/bin", "/usr/bin"));
+$cfg = $opt_g ? $opt_g : "\$(SRCDIR)/cfg/cfg/cfg";
+$cfgfile = $opt_g ? $opt_g : $srcdir."/cfg/cfg/cfg";
+$templatedir = $opt_t ? $opt_t : $srcdir."/sample";
+
+#
+#  -TIvVÌmF
+#
+unless ($opt_T) {
+	print STDERR "configure: -T option is mandatory\n";
+	print STDERR "Installed targets are:\n";
+	foreach $targetname (<$srcdir/target/[a-zA-Z1-9]*>) {
+		$targetname =~ s|$srcdir/target/||;
+		print STDERR "\t$targetname\n";
+	}
+	exit(1);
+}
+
+#
+#  Ïe[uÌì¬
+#
+%vartable = ();
+$vartable{"TARGET"} = $target;
+$vartable{"APPLNAME"} = $applname;
+$vartable{"APPLDIR"} = $appldir;
+$vartable{"APPLOBJS"} = $applobjs;
+$vartable{"KERNEL_LIB"} = $kernel_lib;
+$vartable{"KERNEL_FUNCOBJS"} = $kernel_funcobjs;
+$vartable{"SRCDIR"} = $srcdir;
+$vartable{"SRCABSDIR"} = $srcabsdir;
+$vartable{"SRCLANG"} = $srclang;
+$vartable{"DBGENV"} = $dbgenv;
+$vartable{"ENABLE_TRACE"} = $enable_trace;
+$vartable{"PERL"} = $perl;
+$vartable{"CFG"} = $cfg;
+$objext = get_objext();
+$vartable{"OBJEXT"} = $objext;
+
+#
+#  ^[QbgfBNgÌ`FbN
+#
+
+if (! -d $srcdir."/target/".$target) {
+	print STDERR "configure: $srcdir/target/$target not exist\n";
+	exit(1);
+}
+
+#
+#  Makefile ÆAvP[Vt@CÌ¶¬
+#
+
+generate($makefile, 1);
+generate($applname.".c", 0);
+generate($applname.".cpp", 0);
+generate($applname.".h", 0);
+generate($applname.".cfg", 0);
+
+#
+#  cfg ªÅ«Ä¢é©Ì`FbN
+#
+
+if (!(-x ($objext == "" ? $cfgfile : $cfgfile.".".$objext))) {
+	print STDERR "Executable file of the configurator (cfg) is not found.\n";
+}
Index: uKadecot/trunk/ssp/extension/MANIFEST
===================================================================
--- uKadecot/trunk/ssp/extension/MANIFEST	(revision 101)
+++ uKadecot/trunk/ssp/extension/MANIFEST	(revision 101)
@@ -0,0 +1,15 @@
+PACKAGE ssp
+
+MANIFEST
+
+alarm.c
+alarm.h
+cyclic.c
+cyclic.h
+time_event.c
+time_event.h
+time_manage.c
+dataqueue.h
+dataqueue.c
+eventflag.h
+eventflag.c
Index: uKadecot/trunk/ssp/extension/alarm.c
===================================================================
--- uKadecot/trunk/ssp/extension/alarm.c	(revision 101)
+++ uKadecot/trunk/ssp/extension/alarm.c	(revision 101)
@@ -0,0 +1,290 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2011 by Meika Sugimoto
+ *  Copyright (C) 2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+
+/*
+ *  A[nh@\
+ */
+
+#include "alarm.h"
+#include "check.h"
+#include "time_event.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+
+#ifndef LOG_ALM_ENTER
+#define LOG_ALM_ENTER(almidx)
+#endif /* LOG_ALM_ENTER */
+
+#ifndef LOG_ALM_LEAVE
+#define LOG_ALM_LEAVE(almidx)
+#endif /* LOG_ALM_LEAVE */
+
+#ifndef LOG_STA_ALM_ENTER
+#define LOG_STA_ALM_ENTER(almid, almtim)
+#endif /* LOG_STA_ALM_ENTER */
+
+#ifndef LOG_STA_ALM_LEAVE
+#define LOG_STA_ALM_LEAVE(ercd)
+#endif /* LOG_STA_ALM_LEAVE */
+
+#ifndef LOG_ISTA_ALM_ENTER
+#define LOG_ISTA_ALM_ENTER(almid, almtim)
+#endif /* LOG_ISTA_ALM_ENTER */
+
+#ifndef LOG_ISTA_ALM_LEAVE
+#define LOG_ISTA_ALM_LEAVE(ercd)
+#endif /* LOG_ISTA_ALM_LEAVE */
+
+#ifndef LOG_STP_ALM_ENTER
+#define LOG_STP_ALM_ENTER(almid)
+#endif /* LOG_STP_ALM_ENTER */
+
+#ifndef LOG_STP_ALM_LEAVE
+#define LOG_STP_ALM_LEAVE(ercd)
+#endif /* LOG_STP_ALM_LEAVE */
+
+#ifndef LOG_ISTP_ALM_ENTER
+#define LOG_ISTP_ALM_ENTER(almid)
+#endif /* LOG_ISTP_ALM_ENTER */
+
+#ifndef LOG_ISTP_ALM_LEAVE
+#define LOG_ISTP_ALM_LEAVE(ercd)
+#endif /* LOG_ISTP_ALM_LEAVE */
+
+
+/* üúnhIDð^CCxgIDÉÏ· */
+#define ALM_EVTID(almid)	((ID)(INDEX_ALM(almid) + almevtid_offset))
+#define INDEX_ALM(almid)	((uint_t)((almid) - TMIN_ALMID))
+
+/* A[nhÌÂ */
+#define tnum_alm			((uint_t)(tmax_almid - TMIN_ALMID + 1))
+
+/* A[Ì®ìóÔð\·rbg}bv */
+#define ALMACT_BIT(index)	(1U << (index))
+
+
+/* A[nhÀs^CCxg */
+void call_almhdr(uintptr_t almidx);
+
+
+/*
+ *  A[nh@\Ìú»
+ */
+
+#ifdef TOPPERS_almcal
+
+void
+initialize_alarm(void)
+{
+	/* SÄÌA[ðâ~óÔÉ·é */
+	almcb_almact = 0U;
+}
+
+#endif /* TOPPERS_almcal */
+
+/*
+ *  A[ÌJn
+ */
+
+#ifdef TOPPERS_sta_alm
+
+ER
+sta_alm(ID almid , RELTIM almtim)
+{
+	ER ercd;
+	uint_t index = INDEX_ALM(almid);
+	
+	LOG_STA_ALM_ENTER(almid, almtim);
+	CHECK_TSKCTX_UNL();
+	CHECK_ALMID(almid);
+	
+	t_lock_cpu();
+	
+	if((almcb_almact & ALMACT_BIT(index)) != 0U) {
+		time_event_dequeue(ALM_EVTID(almid));
+	}
+	else {
+		almcb_almact |= ALMACT_BIT(index);
+	}
+	
+	time_event_enqueue(ALM_EVTID(almid) ,
+		current_time + (EVTTIM)almtim , (CBACK)call_almhdr , index);
+	
+	ercd = E_OK;
+	t_unlock_cpu();
+	
+  error_exit:
+	LOG_STA_ALM_LEAVE(ercd);
+	return ercd;
+}
+
+#endif /* TOPPERS_sta_alm */
+
+/*
+ *  A[ÌJn(ñ^XNReLXgp)
+ */
+
+#ifdef TOPPERS_ista_alm
+
+ER
+ista_alm(ID almid , RELTIM almtim)
+{
+	ER ercd;
+	uint_t index = INDEX_ALM(almid);
+	
+	LOG_ISTA_ALM_ENTER(almid, almtim);
+	CHECK_INTCTX_UNL();
+	CHECK_ALMID(almid);
+	
+	i_lock_cpu();
+	
+	if((almcb_almact & ALMACT_BIT(index)) != 0U) {
+		time_event_dequeue(ALM_EVTID(almid));
+	}
+	else {
+		almcb_almact |= ALMACT_BIT(index);
+	}
+	
+	time_event_enqueue(ALM_EVTID(almid) ,
+		current_time + (EVTTIM)almtim , (CBACK)call_almhdr , index);
+	
+	ercd = E_OK;
+	i_unlock_cpu();
+	
+  error_exit:
+	LOG_ISTA_ALM_LEAVE(ercd);
+	return ercd;
+}
+
+#endif /* TOPPERS_ista_alm */
+
+/*
+ *  A[Ìâ~
+ */
+
+#ifdef TOPPERS_stp_alm
+
+ER
+stp_alm(ID almid)
+{
+	ER ercd;
+	uint_t index = INDEX_ALM(almid);
+	
+	LOG_STP_ALM_ENTER(almid);
+	CHECK_TSKCTX_UNL();
+	CHECK_ALMID(almid);
+	
+	t_lock_cpu();
+	
+	if((almcb_almact & ALMACT_BIT(index)) != 0U) {
+		almcb_almact &= ~ALMACT_BIT(index);
+		time_event_dequeue(ALM_EVTID(almid));
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+	
+  error_exit:
+	LOG_STP_ALM_LEAVE(ercd);
+	return ercd;
+}
+
+#endif /* TOPPERS_stp_alm */
+
+/*
+ *  A[Ìâ~(ñ^XNReLXgp)
+ */
+
+#ifdef TOPPERS_istp_alm
+
+ER
+istp_alm(ID almid)
+{
+	ER ercd;
+	uint_t index = INDEX_ALM(almid);
+	
+	LOG_ISTP_ALM_ENTER(almid);
+	CHECK_INTCTX_UNL();
+	CHECK_ALMID(almid);
+	
+	i_lock_cpu();
+	
+	if((almcb_almact & ALMACT_BIT(index)) != 0U) {
+		almcb_almact &= ~ALMACT_BIT(index);
+		time_event_dequeue(ALM_EVTID(almid));
+	}
+	ercd = E_OK;
+	i_unlock_cpu();
+	
+  error_exit:
+	LOG_ISTP_ALM_LEAVE(ercd);
+	return ercd;
+}
+
+#endif /* TOPPERS_istp_alm */
+
+/*
+ *  A[nhN®[`
+ */
+
+#ifdef TOPPERS_almcal
+
+void
+call_almhdr(uintptr_t almidx)
+{
+	/* A[nhðâ~óÔÉ·é */
+	almcb_almact &= ~ALMACT_BIT(almidx);
+	
+	i_unlock_cpu();
+	
+	/* A[nhÌÀs */
+	LOG_ALM_ENTER(almidx);
+	(*alminib_almhdr[almidx])(alminib_exinf[almidx]);
+	LOG_ALM_LEAVE(almidx);
+	
+	if (!i_sense_lock()) {
+		i_lock_cpu();
+	}
+}
+
+#endif /* TOPPERS_almcal */
+
Index: uKadecot/trunk/ssp/extension/alarm.h
===================================================================
--- uKadecot/trunk/ssp/extension/alarm.h	(revision 101)
+++ uKadecot/trunk/ssp/extension/alarm.h	(revision 101)
@@ -0,0 +1,75 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2011 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+
+#ifndef TOPPERS_ALARM_H
+#define TOPPERS_ALARM_H
+
+#include "kernel_impl.h"
+
+
+/*
+ *  RtBM
+[Vf[^
+ */
+
+/* A[nhÌ^CCxgIDItZbg */
+extern const uint_t almevtid_offset;
+
+/* A[nhÌÅåIDl */
+extern const ID tmax_almid;
+
+/* A[nhæªÔn */
+extern const ALMHDR alminib_almhdr[];
+
+/* A[nhg£îñ */
+extern const intptr_t alminib_exinf[];
+
+/* A[nhóÔ */
+extern uint16_t almcb_almact;
+
+
+/*
+ *  A[nh@\Ìú»
+ */
+extern void
+initialize_alarm(void);
+
+
+
+#endif /* TOPPERS_ALARM_H */
Index: uKadecot/trunk/ssp/extension/cyclic.c
===================================================================
--- uKadecot/trunk/ssp/extension/cyclic.c	(revision 101)
+++ uKadecot/trunk/ssp/extension/cyclic.c	(revision 101)
@@ -0,0 +1,207 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2011 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+
+/*
+ *  üúnh@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "time_event.h"
+#include "cyclic.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_CYC_ENTER
+#define LOG_CYC_ENTER(cycidx)
+#endif /* LOG_CYC_ENTER */
+
+#ifndef LOG_CYC_LEAVE
+#define LOG_CYC_LEAVE(cycidx)
+#endif /* LOG_CYC_LEAVE */
+
+#ifndef LOG_STA_CYC_ENTER
+#define LOG_STA_CYC_ENTER(cycid)
+#endif /* LOG_STA_CYC_ENTER */
+
+#ifndef LOG_STA_CYC_LEAVE
+#define LOG_STA_CYC_LEAVE(ercd)
+#endif /* LOG_STA_CYC_LEAVE */
+
+#ifndef LOG_STP_CYC_ENTER
+#define LOG_STP_CYC_ENTER(cycid)
+#endif /* LOG_STP_CYC_ENTER */
+
+#ifndef LOG_STP_CYC_LEAVE
+#define LOG_STP_CYC_LEAVE(ercd)
+#endif /* LOG_STP_CYC_LEAVE */
+
+
+/* üúnhIDð^CCxgIDÉÏ· */
+#define CYC_EVTID(cycidx)	((ID)((cycidx) + cycevtid_offset))
+#define INDEX_CYC(cycid)	((uint_t)((cycid) - TMIN_CYCID))
+
+
+/* üúnhÌ®ìóÔð\·rbg}bv */
+#define CYCACT_BIT(index)	(1U << (index))
+
+/*
+ *  üúnhN®[`
+ */
+void call_cychdr(uintptr_t cycidx);
+
+/*
+ *  üúnh@\Ìú»
+ */
+
+#ifdef TOPPERS_cycini
+
+void
+initialize_cyclic(void)
+{
+	uint_t i;
+	
+	/* üúnhÌóÔÝè */
+	cyccb_cycact = cycinib_cycact;
+	
+	for(i = 0U ; i < tnum_cyc ; i++) {
+		cyccb_evttim[i] = 0U;
+		
+		/* üúnhÌúN® */
+		if((cycinib_cycact & CYCACT_BIT(i)) != 0U) {
+			time_event_enqueue(CYC_EVTID(i) ,
+				(EVTTIM)cycinib_cycphs[i] , call_cychdr , i);
+			cyccb_evttim[i] = cycinib_cycphs[i];
+		}
+	}
+}
+
+#endif /* TOPPERS_cycini */
+
+#ifdef TOPPERS_sta_cyc
+
+ER
+sta_cyc(ID cycid)
+{
+	ER ercd;
+	uint_t index = INDEX_CYC(cycid);
+	EVTTIM evttim;
+	
+	LOG_STA_CYC_ENTER(cycid);
+	CHECK_TSKCTX_UNL();
+	CHECK_CYCID(cycid);
+	
+	t_lock_cpu();
+	
+	if((cyccb_cycact & CYCACT_BIT(index)) != 0U) {
+		time_event_dequeue(CYC_EVTID(index));
+	}
+	else {
+		cyccb_cycact |= CYCACT_BIT(index);
+	}
+
+	evttim = current_time + cycinib_cycphs[index];
+	time_event_enqueue(CYC_EVTID(index) ,
+		 evttim , call_cychdr , index);
+	cyccb_evttim[index] = evttim;
+	
+	ercd = E_OK;
+	t_unlock_cpu();
+	
+  error_exit:
+	LOG_STA_CYC_LEAVE(ercd);
+	return ercd;
+}
+
+#endif /* TOPPERS_sta_cyc */
+
+
+#ifdef TOPPERS_stp_cyc
+
+ER
+stp_cyc(ID cycid)
+{
+	ER ercd;
+	uint_t index = INDEX_CYC(cycid);
+	
+	LOG_STP_CYC_ENTER(cycid);
+	CHECK_TSKCTX_UNL();
+	CHECK_CYCID(cycid);
+	
+	t_lock_cpu();
+	
+	if((cyccb_cycact & CYCACT_BIT(index)) != 0U) {
+		cyccb_cycact &= ~CYCACT_BIT(index);
+		time_event_dequeue(CYC_EVTID(index));
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+	
+  error_exit:
+	LOG_STA_CYC_LEAVE(ercd);
+	return ercd;
+}
+
+#endif /* TOPPERS_stp_cyc */
+
+#ifdef TOPPERS_cyccal
+
+void
+call_cychdr(uintptr_t cycidx)
+{
+	cyccb_evttim[cycidx] += cycinib_cyctim[cycidx];
+
+	/* üúÌ^CCxgðo^ */
+	time_event_enqueue((ID)cycidx ,
+		cyccb_evttim[cycidx] , call_cychdr , cycidx);
+	
+	i_unlock_cpu();
+	
+	/* üúnhðÀs */
+	LOG_CYC_ENTER(cycidx);
+	(*cycinib_cychdr[cycidx])(cycinib_exinf[cycidx]);
+	LOG_CYC_LEAVE(cycidx);
+	
+	if (!i_sense_lock()) {
+		i_lock_cpu();
+	}
+}
+
+#endif /* TOPPERS_cyccal */
Index: uKadecot/trunk/ssp/extension/cyclic.h
===================================================================
--- uKadecot/trunk/ssp/extension/cyclic.h	(revision 101)
+++ uKadecot/trunk/ssp/extension/cyclic.h	(revision 101)
@@ -0,0 +1,87 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2011 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+
+#ifndef TOPPERS_CYCLIC_H
+#define TOPPERS_CYCLIC_H
+
+/*
+ *  üúnhú»ubN
+ *
+ *  RtBM
+[^ÉæÁÄ¶¬·éD
+ */
+
+/* üúnhIDÌÅål */
+extern const ID tmax_cycid;
+
+/* üúnh®« */
+extern const uint16_t cycinib_cycact;
+
+/* üúnhAhX */
+extern const CYCHDR cycinib_cychdr[];
+
+/* üúnhüú */
+extern const RELTIM cycinib_cyctim[];
+
+/* üúnhÊ */
+extern const RELTIM cycinib_cycphs[];
+
+/* üúnhg£îñ */
+extern const intptr_t cycinib_exinf[];
+
+/* üúnh®ìóÔ */
+extern uint16_t cyccb_cycact;
+
+/* üúnhÌñN® */
+extern EVTTIM cyccb_evttim[];
+
+/* üúnhÌ^CCxgIDItZbg */
+extern const uint_t cycevtid_offset;
+
+#define tnum_cyc	((uint_t)(tmax_cycid - TMIN_CYCID + 1))
+
+
+/*
+ *  üúnh@\Ìú»
+ */
+extern void
+initialize_cyclic(void);
+
+
+#endif /* TOPPERS_CYCLIC_H */
Index: uKadecot/trunk/ssp/extension/dataqueue.c
===================================================================
--- uKadecot/trunk/ssp/extension/dataqueue.c	(revision 101)
+++ uKadecot/trunk/ssp/extension/dataqueue.c	(revision 101)
@@ -0,0 +1,303 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2011 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+ 
+/*
+ *		f[^L
+[@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "dataqueue.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_PSND_DTQ_ENTER
+#define LOG_PSND_DTQ_ENTER(dtqid, data)
+#endif /* LOG_PSND_DTQ_ENTER */
+
+#ifndef LOG_PSND_DTQ_LEAVE
+#define LOG_PSND_DTQ_LEAVE(ercd)
+#endif /* LOG_PSND_DTQ_LEAVE */
+
+#ifndef LOG_IPSND_DTQ_ENTER
+#define LOG_IPSND_DTQ_ENTER(dtqid, data)
+#endif /* LOG_IPSND_DTQ_ENTER */
+
+#ifndef LOG_IPSND_DTQ_LEAVE
+#define LOG_IPSND_DTQ_LEAVE(ercd)
+#endif /* LOG_IPSND_DTQ_LEAVE */
+
+#ifndef LOG_PRCV_DTQ_ENTER
+#define LOG_PRCV_DTQ_ENTER(dtqid, p_data)
+#endif /* LOG_PRCV_DTQ_ENTER */
+
+#ifndef LOG_PRCV_DTQ_LEAVE
+#define LOG_PRCV_DTQ_LEAVE(ercd, data)
+#endif /* LOG_PRCV_DTQ_LEAVE */
+
+/*
+ *  f[^L
+[ÖÌf[^M
+ */
+void
+enqueue_data(intptr_t* const data , uint8_t* const tail , const uint8_t size , const intptr_t sdata);
+
+/*
+ *  f[^L
+[©çÌf[^óM
+ */
+void
+dequeue_data(intptr_t* const data , uint8_t* const head , const uint8_t size , intptr_t* rdata);
+
+
+/*
+ *  f[^L
+[Ì
+ */
+#define tnum_dtq	((uint_t)(tmax_dtqid - TMIN_DTQID + 1))
+
+/*
+ *  f[^L
+[ID©çf[^L
+[ÇubNðæèo·½ßÌ}N
+ */
+#define INDEX_DTQ(dtqid)	((uint_t)((dtqid) - TMIN_DTQID))
+
+/*
+ *  f[^L
+[@\Ìú»
+ */
+#ifdef TOPPERS_dtqini
+
+void
+initialize_dataqueue(void)
+{
+	uint_t	i;
+
+	for (i = 0U ; i < tnum_dtq ; i++) {
+		dtqcb_count[i] = 0U;
+		dtqcb_head[i] = 0U;
+		dtqcb_tail[i] = 0U;
+	}
+}
+
+#endif /* TOPPERS_dtqini */
+
+
+/*
+ *  f[^L
+[ªt©Ì`FbN
+ */
+
+Inline bool_t
+data_full(uint8_t count , uint8_t size)
+{
+	return (count >= size)? true : false;
+}
+
+/*
+ *  f[^L
+[ªó©Ì`FbN
+ */
+
+Inline bool_t
+data_empty(uint8_t count)
+{
+	return (count == 0)? true : false;
+}
+
+
+/*
+ *  f[^L
+[ÖÌf[^M
+ */
+
+
+#ifdef TOPPERS_dtqenq
+
+void
+enqueue_data(intptr_t* const data , uint8_t* const tail , const uint8_t size , const intptr_t sdata)
+{
+	data[*tail] = sdata;
+	(*tail)++;
+	if (*tail >= size) {
+		*tail = 0U;
+	}
+}
+
+#endif /* TOPPERS_dtqenq */
+
+/*
+ *  MÒ¿L
+[Ìæª^XN©çÌf[^óM
+ */
+#ifdef TOPPERS_dtqdeq
+
+void
+dequeue_data(intptr_t* const data , uint8_t* const head , const uint8_t size , intptr_t* rdata)
+{
+	*rdata = data[*head];
+	(*head)++;
+	if (*head >= size) {
+		*head = 0U;
+	}
+	
+}
+
+#endif /* TOPPERS_dtqdeq */
+
+/*
+ *  f[^L
+[ÖÌMi|[Oj
+ */
+#ifdef TOPPERS_psnd_dtq
+
+ER
+psnd_dtq(ID dtqid, intptr_t data)
+{
+	ER		ercd;
+	int_t	index;
+	
+	LOG_PSND_DTQ_ENTER(dtqid, data);
+	CHECK_TSKCTX_UNL();
+	CHECK_DTQID(dtqid);
+	
+	t_lock_cpu();
+	index = INDEX_DTQ(dtqid);
+	
+	if (!data_full(dtqcb_count[index] , dtqinib_size[index]))
+	{
+		enqueue_data(dtqinib_data[index] , &(dtqcb_tail[index]) , 
+					dtqinib_size[index] , data);
+		dtqcb_count[index]++;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+	
+  error_exit:
+	LOG_PSND_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_psnd_dtq */
+
+/*
+ *  f[^L
+[ÖÌMi|[OCñ^XNReLXgpj
+ */
+#ifdef TOPPERS_ipsnd_dtq
+
+ER
+ipsnd_dtq(ID dtqid, intptr_t data)
+{
+	ER		ercd;
+	int_t	index;
+
+	LOG_IPSND_DTQ_ENTER(dtqid, data);
+	CHECK_INTCTX_UNL();
+	CHECK_DTQID(dtqid);
+
+	i_lock_cpu();
+	index = INDEX_DTQ(dtqid);
+	
+	if (!data_full(dtqcb_count[index] , dtqinib_size[index]))
+	{
+		enqueue_data(dtqinib_data[index] , &(dtqcb_tail[index]) , 
+					dtqinib_size[index] , data);
+		dtqcb_count[index]++;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IPSND_DTQ_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ipsnd_dtq */
+
+/*
+ *  f[^L
+[©çÌóMi|[Oj
+ */
+#ifdef TOPPERS_prcv_dtq
+
+ER
+prcv_dtq(ID dtqid, intptr_t *p_data)
+{
+	ER		ercd;
+	int_t	index;
+
+	LOG_PRCV_DTQ_ENTER(dtqid, p_data);
+	CHECK_TSKCTX_UNL();
+	CHECK_DTQID(dtqid);
+
+	t_lock_cpu();
+	index = INDEX_DTQ(dtqid);
+	
+	if (!data_empty(dtqcb_count[index]))
+	{
+		dequeue_data(dtqinib_data[index] , &(dtqcb_head[index]) , 
+					dtqinib_size[index] , p_data);
+		dtqcb_count[index]--;
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_PRCV_DTQ_LEAVE(ercd, *p_data);
+	return(ercd);
+}
+
+#endif /* TOPPERS_prcv_dtq */
Index: uKadecot/trunk/ssp/extension/dataqueue.h
===================================================================
--- uKadecot/trunk/ssp/extension/dataqueue.h	(revision 101)
+++ uKadecot/trunk/ssp/extension/dataqueue.h	(revision 101)
@@ -0,0 +1,95 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		f[^L
+[@\
+ */
+
+#ifndef TOPPERS_DATAQUEUE_H
+#define TOPPERS_DATAQUEUE_H
+
+#include <queue.h>
+
+/*
+ *  f[^L
+[ú»ubN
+ */
+extern const ATR dtqinib_atr[];			/* f[^L
+[®« */
+extern intptr_t* const dtqinib_data[];	/* f[^i[ÌæÌæªÔn */
+extern const uint8_t dtqinib_size[];	/* f[^L
+[ÌeÊ */
+
+/*
+ *  f[^L
+[ÇubN
+ */
+extern uint8_t dtqcb_count[];				/* f[^L
+[Éi[³êÄ¢éf[^Ì */
+extern uint8_t dtqcb_head[];				/* ÅÌf[^Ìi[ê */
+extern uint8_t dtqcb_tail[];				/* ÅãÌf[^Ìi[êÌ */
+
+
+/*
+ *  f[^L
+[IDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_dtqid;
+
+/*
+ *  f[^L
+[ÇubN©çf[^L
+[IDðæèo·½ßÌ}N
+ */
+#define	DTQID(p_dtqcb)	((ID)(((p_dtqcb) - dtqcb_table) + TMIN_DTQID))
+
+/*
+ *  f[^L
+[@\Ìú»
+ */
+extern void	initialize_dataqueue(void);
+
+#endif /* TOPPERS_DATAQUEUE_H */
Index: uKadecot/trunk/ssp/extension/eventflag.c
===================================================================
--- uKadecot/trunk/ssp/extension/eventflag.c	(revision 101)
+++ uKadecot/trunk/ssp/extension/eventflag.c	(revision 101)
@@ -0,0 +1,257 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2011 by Meika Sugimoto
+ *  Copyright (C) 2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+/*
+ *  CxgtO@\
+ */
+
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "eventflag.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_SET_FLG_ENTER
+#define LOG_SET_FLG_ENTER(flgid, setptn)
+#endif /* LOG_SET_FLG_ENTER */
+
+#ifndef LOG_SET_FLG_LEAVE
+#define LOG_SET_FLG_LEAVE(ercd)
+#endif /* LOG_SET_FLG_LEAVE */
+
+#ifndef LOG_ISET_FLG_ENTER
+#define LOG_ISET_FLG_ENTER(flgid, setptn)
+#endif /* LOG_ISET_FLG_ENTER */
+
+#ifndef LOG_ISET_FLG_LEAVE
+#define LOG_ISET_FLG_LEAVE(ercd)
+#endif /* LOG_ISET_FLG_LEAVE */
+
+#ifndef LOG_CLR_FLG_ENTER
+#define LOG_CLR_FLG_ENTER(flgid, clrptn)
+#endif /* LOG_CLR_FLG_ENTER */
+
+#ifndef LOG_CLR_FLG_LEAVE
+#define LOG_CLR_FLG_LEAVE(ercd)
+#endif /* LOG_CLR_FLG_LEAVE */
+
+#ifndef LOG_POL_FLG_ENTER
+#define LOG_POL_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn)
+#endif /* LOG_POL_FLG_ENTER */
+
+#ifndef LOG_POL_FLG_LEAVE
+#define LOG_POL_FLG_LEAVE(ercd, flgptn)
+#endif /* LOG_POL_FLG_LEAVE */
+
+
+
+/* CxgtOIDID©çÌzñItZbgÖÌÏ·}N */
+#define INDEX_FLG(flgid)	((uint_t)((flgid) - TMIN_FLGID))
+
+#ifdef TOPPERS_iniflg
+
+void initialize_eventflag(void)
+{
+	int_t i;
+	
+	for(i = 0 ; i < tmax_flgid ; i++)
+	{
+		/* rbgp^[Ìú» */
+		flgcb_flgptn[i] = flginib_iflgptn[i];
+	}
+}
+
+#endif /* TOPPERS_iniflg */
+
+/*
+ *  CxgtOðª¬§µÄ¢é©Ì`FbN
+ */
+Inline bool_t
+check_flg_cond(FLGPTN curptn , FLGPTN waiptn, MODE wfmode)
+{
+	bool_t flgset = false;
+	
+	if ((wfmode & TWF_ORW) != 0U)
+	{
+		if((curptn & waiptn) != 0U)
+		{
+			flgset = true;
+		}
+	}
+	else	/* (wfmode & TWF_ANDW) != 0U  */
+	{
+		if((curptn & waiptn) == waiptn)
+		{
+			flgset = true;
+		}
+	}
+	
+	return (flgset);
+}
+
+/*
+ *  CxgtOÌZbg
+ */
+#ifdef TOPPERS_set_flg
+
+ER
+set_flg(ID flgid, FLGPTN setptn)
+{
+	ER		ercd;
+	
+	LOG_SET_FLG_ENTER(flgid, setptn);
+	CHECK_TSKCTX_UNL();
+	CHECK_FLGID(flgid);
+	
+	t_lock_cpu();
+	flgcb_flgptn[INDEX_FLG(flgid)] |= setptn;
+	ercd = E_OK;
+	t_unlock_cpu();
+	
+  error_exit:
+	LOG_SET_FLG_LEAVE(ercd);
+	return(ercd);
+}
+
+
+#endif /* TOPPERS_set_flg */
+
+/*
+ *  CxgtOÌZbgiñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iset_flg
+
+ER
+iset_flg(ID flgid, FLGPTN setptn)
+{
+	ER		ercd;
+	
+	LOG_ISET_FLG_ENTER(flgid, setptn);
+	CHECK_INTCTX_UNL();
+	CHECK_FLGID(flgid);
+	
+	i_lock_cpu();
+	flgcb_flgptn[INDEX_FLG(flgid)] |= setptn;
+	ercd = E_OK;
+	i_unlock_cpu();
+	
+  error_exit:
+	LOG_ISET_FLG_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iset_flg */
+
+/*
+ *  CxgtOÌNA
+ */
+#ifdef TOPPERS_clr_flg
+
+ER
+clr_flg(ID flgid, FLGPTN clrptn)
+{
+	ER		ercd;
+	
+	LOG_CLR_FLG_ENTER(flgid, clrptn);
+	CHECK_TSKCTX_UNL();
+	CHECK_FLGID(flgid);
+	
+	t_lock_cpu();
+	flgcb_flgptn[INDEX_FLG(flgid)] &= clrptn; 
+	ercd = E_OK;
+	t_unlock_cpu();
+	
+  error_exit:
+	LOG_CLR_FLG_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_clr_flg */
+
+
+/*
+ *  CxgtOÒ¿i|[Oj
+ */
+#ifdef TOPPERS_pol_flg
+
+ER
+pol_flg(ID flgid, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn)
+{
+	ER		ercd;
+	int_t	index;
+	
+	LOG_POL_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn);
+	CHECK_TSKCTX_UNL();
+	CHECK_FLGID(flgid);
+	CHECK_PAR(waiptn != 0U);
+	CHECK_PAR(wfmode == TWF_ORW || wfmode == TWF_ANDW);
+	
+	t_lock_cpu();
+	
+	index = INDEX_FLG(flgid);
+	
+	if (check_flg_cond(flgcb_flgptn[index], waiptn, wfmode)) {
+		ercd = E_OK;
+		*p_flgptn = flgcb_flgptn[index];
+
+		if((flginib_atr[index] & TA_CLR) != 0U)
+		{
+			flgcb_flgptn[index] = 0U;
+		}
+	}
+	else {
+		ercd = E_TMOUT;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_POL_FLG_LEAVE(ercd, *p_flgptn);
+	return(ercd);
+}
+
+#endif /* TOPPERS_pol_flg */
+
+
Index: uKadecot/trunk/ssp/extension/eventflag.h
===================================================================
--- uKadecot/trunk/ssp/extension/eventflag.h	(revision 101)
+++ uKadecot/trunk/ssp/extension/eventflag.h	(revision 101)
@@ -0,0 +1,78 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2011 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+ 
+#ifndef TOPPERS_EVENTFLAG_H
+#define TOPPERS_EVENTFLAG_H
+
+
+/*
+ *  CxgtOú»ubN
+ */
+
+/* CxgtO®« */
+extern const ATR flginib_atr[];
+
+/* CxgtOúl */
+extern const FLGPTN flginib_iflgptn[];
+
+/*
+ *  CxgtOÇubN
+ */
+
+/* CxgtO»Ýp^[ */
+extern FLGPTN flgcb_flgptn[];
+
+
+/*
+ *  CxgtOIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_flgid;
+
+/*
+ *  CxgtO@\Ìú»
+ */
+extern void	initialize_eventflag(void);
+
+
+#endif /*TOPPERS_EVENTFLAG_H  */
+
Index: uKadecot/trunk/ssp/extension/time_event.c
===================================================================
--- uKadecot/trunk/ssp/extension/time_event.c	(revision 101)
+++ uKadecot/trunk/ssp/extension/time_event.c	(revision 101)
@@ -0,0 +1,173 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2011 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+
+#include "kernel_impl.h"
+
+#include "time_event.h"
+
+
+/*
+ *  »ÝÌVXeiPÊ: 1~bj
+ *
+ *  µ§ÉÍCOÌ^CeBbNÌVXeD
+ */
+EVTTIM	current_time;
+
+/*
+ *  ^CCxgq[vÅLøÈÅ¬ÌVXeiPÊ: 1~bj
+ */
+EVTTIM	min_time;
+
+
+/*
+ *  ^CCxgL
+[ÌL
+[wb_
+ *
+ *  ^CCxgL
+[ubNÌI[ÉmÛ·éD
+ */
+#define TMEVT_HEAD()	(tmevt_queue[tnum_tmevt_queue])
+#define TMEVT_NULL		((QUEIDX)tnum_tmevt_queue)
+
+/*
+ *  Cxg­¶är}N
+ *
+ *  Cxg­¶ÍCmin_time©çÌÎlÅär·éD·Èí¿C
+ *  min_timeðÅ¬liÅàß¢jCmit_time-1ªÅåliÅà¢j
+ *  ÆÝÈµÄär·éD
+ */
+#define	EVTTIM_LT(t1, t2) (((t1) - min_time) < ((t2) - min_time))
+#define	EVTTIM_LE(t1, t2) (((t1) - min_time) <= ((t2) - min_time))
+
+/*
+ *  ^CCxgÌú»
+ */
+
+#ifdef TOPPERS_tmevtini
+
+void
+initialize_time_event(void)
+{
+	/* ÏÌú» */
+	current_time = 0U;
+	min_time = 0U;
+	
+	/* ^CCxgL
+[Ìú» */
+	queue_initialize(&TMEVT_HEAD() , (QUEIDX)tnum_tmevt_queue);
+}
+
+#endif /* TOPPERS_tmevtini */
+
+/*
+ *  ^CCxgÌo^
+ */
+
+#ifdef TOPPERS_tmevtenq
+
+void
+time_event_enqueue(ID tmevtid , EVTTIM evttim , CBACK callback , uintptr_t arg)
+{
+	QUEIDX pos = TMEVT_HEAD().next;
+	
+	/* }üÊuðõ */
+	while((pos != TMEVT_NULL)
+			&& (EVTTIM_LE(tmevt_time[pos] , evttim))) {
+		pos = tmevt_queue[pos].next;
+	}
+	
+	/* L
+[É}ü */
+	queue_insert_prev(&(tmevt_queue[0]) , pos , (QUEIDX)tmevtid);
+	tmevt_callback[tmevtid] = (CBACK)callback;
+	tmevt_arg[tmevtid] = arg;
+	tmevt_time[tmevtid] = evttim;
+}
+
+#endif /* TOPPERS_tmevtenq */
+
+/*
+ *  ^CCxgÌí
+ */
+
+#ifdef TOPPERS_tmevtdeq
+
+void
+time_event_dequeue(ID tmevtid)
+{
+	/* L
+[©çí */
+	(void)queue_delete_next(&(tmevt_queue[0]) , (QUEIDX)tmevtid);
+}
+
+#endif /* TOPPERS_tmevtdeq */
+
+/*
+ *  VXeÌÊm
+ */
+
+#ifdef TOPPERS_sig_tim
+
+void
+signal_time(void)
+{
+	QUEIDX pos = TMEVT_HEAD().next , evtid;
+	
+	i_lock_cpu();
+	
+	/* »ÝÌXV */
+	current_time += (EVTTIM)TIC_NUME;
+	
+	/* R[obNÌÀs */
+	while((pos != TMEVT_NULL)
+			&& EVTTIM_LT(tmevt_time[pos] , current_time)) {
+		(void)queue_delete_next(&(tmevt_queue[0]) , pos);
+		evtid = pos;
+		pos = tmevt_queue[pos].next;
+		(*tmevt_callback[evtid])(tmevt_arg[evtid]);
+	}
+
+	/* min_timeÌXV */
+	min_time = current_time;
+	
+	i_unlock_cpu();
+}
+
+#endif /* TOPPERS_sig_tim */
Index: uKadecot/trunk/ssp/extension/time_event.h
===================================================================
--- uKadecot/trunk/ssp/extension/time_event.h	(revision 101)
+++ uKadecot/trunk/ssp/extension/time_event.h	(revision 101)
@@ -0,0 +1,108 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2011 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+
+#ifndef TOPPERS_TIME_EVENT_H
+#define TOPPERS_TIME_EVENT_H
+
+#include "kernel_impl.h"
+#include "queue.h"
+
+/* Cxg */
+typedef ulong_t	EVTTIM;
+
+/*
+ *  ^CCxgR[obNÖ
+ */
+
+typedef void (*CBACK)(uintptr_t arg);
+
+/*
+ *  ^CCxgubN
+ *
+ *  RtBM
+[^ÉæÁÄ¶¬·éD
+ */
+
+/* ^CCxgubNÌTCY */
+extern const uint_t tnum_tmevt_queue;
+
+/* ^CCxgL
+[ */
+extern QUEUE tmevt_queue[];
+
+/* ^CCxgÔ */
+extern EVTTIM tmevt_time[];
+
+/* ^CCxgÌR[obN */
+extern CBACK tmevt_callback[];
+
+/* ^CCxgR[obNÌø */
+extern uintptr_t tmevt_arg[];
+
+
+/* »ÝÌVXe */
+extern EVTTIM current_time;
+
+
+/*
+ *  ^CCxgÌú»
+ */
+extern void
+initialize_time_event(void);
+
+/*
+ *  ^CCxgÌo^
+ */
+extern void
+time_event_enqueue(ID tmevtid , EVTTIM evttim , CBACK callback , uintptr_t arg);
+
+/*
+ *  ^CCxgÌí
+ */
+extern void
+time_event_dequeue(ID tmevtid);
+
+/*
+ *  ^CeBbNÌ
+ */
+extern void
+signal_time(void);
+
+
+#endif	/* TOPPERS_TIME_EVENT_H */
Index: uKadecot/trunk/ssp/extension/time_manage.c
===================================================================
--- uKadecot/trunk/ssp/extension/time_manage.c	(revision 101)
+++ uKadecot/trunk/ssp/extension/time_manage.c	(revision 101)
@@ -0,0 +1,67 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2011 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+
+/*
+ *		VXeÔÇ
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "time_event.h"
+
+#ifdef TOPPERS_get_tim
+
+ER
+get_tim(SYSTIM *p_systim)
+{
+	ER		ercd;
+	
+	CHECK_TSKCTX_UNL();
+	
+	t_lock_cpu();
+	*p_systim = current_time;
+	ercd = E_OK;
+	t_unlock_cpu();
+	
+  error_exit:
+	return(ercd);
+}
+
+#endif /* TOPPERS_get_tim */
Index: uKadecot/trunk/ssp/include/itron.h
===================================================================
--- uKadecot/trunk/ssp/include/itron.h	(revision 101)
+++ uKadecot/trunk/ssp/include/itron.h	(revision 101)
@@ -0,0 +1,144 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		ITRONdl¤ÊKèÌf[^^EèE}N
+ *
+ *  ±Ìwb_t@CÍCITRONdl¤ÊKèÌf[^^EèE}NÌ
+ *  ÅCTOPPERS¤Êwb_t@CÉÜÜêÈ¢àÌÌè`ðÜÞDITRONd
+ *  lÆÌÝ·«ðKvÆ·éAvP[VªCN[h·é±Æðz
+ *  èµÄ¢éD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­D±êÉæèC}Nè`ÈOð
+ *  ­æ¤ÉÈÁÄ¢éD
+ */
+
+#ifndef TOPPERS_ITRON_H
+#define TOPPERS_ITRON_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  TOPPERS¤Êwb_t@C
+ */
+#include "t_stddef.h"
+
+/*
+ *  ITRONdl¤Êf[^^
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+#ifdef INT8_MAX
+typedef	int8_t			B;			/* t«8rbg® */
+#endif /* INT8_MAX */
+
+#ifdef UINT8_MAX
+typedef	uint8_t			UB;			/* ³µ8rbg® */
+typedef	uint8_t			VB;			/* ^ªèÜçÈ¢8rbgÌl */
+#endif /* UINT8_MAX */
+
+typedef	int16_t			H;			/* t«16rbg® */
+typedef	uint16_t		UH;			/* ³µ16rbg® */
+typedef	uint16_t		VH;			/* ^ªèÜçÈ¢16rbgÌl */
+
+typedef	int32_t			W;			/* t«32rbg® */
+typedef	uint32_t		UW;			/* ³µ32rbg® */
+typedef	uint32_t		VW;			/* ^ªèÜçÈ¢32rbgÌl */
+
+#ifdef INT64_MAX
+typedef	int64_t			D;			/* t«64rbg® */
+#endif /* INT64_MAX */
+
+#ifdef UINT64_MAX
+typedef	uint64_t		UD;			/* ³µ64rbg® */
+typedef	uint64_t		VD;			/* ^ªèÜçÈ¢64rbgÌl */
+#endif /* UINT64_MAX */
+
+typedef	void			*VP;		/* ^ªèÜçÈ¢àÌÖÌ|C^ */
+
+typedef int_t			INT;		/* ©RÈTCYÌt«® */
+typedef uint_t			UINT;		/* ©RÈTCYÌ³µ® */
+
+typedef bool_t			BOOL;		/* ^Ul */
+
+typedef	intptr_t		VP_INT;		/* |C^Ü½Ít«® */
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ITRONdl¤Êè
+ */
+#define	TRUE		true			/* ^ */
+#define	FALSE		false			/* U */
+
+/*
+ *  IuWFNg®«Ìè`
+ */
+#define TA_HLNG			UINT_C(0x00)	/* ¾êpC^tF[X */
+#define TA_TFIFO		UINT_C(0x00)	/* ^XNÌÒ¿sñðFIFOÉ */
+#define TA_MFIFO		UINT_C(0x00)	/* bZ[WL
+[ðFIFOÉ */
+#define TA_WSGL			UINT_C(0x00)	/* Ò¿^XNÍ1ÂÌÝ */
+#define TA_DISINT		UINT_C(0x00)	/* ÝvÖ~tOðZbg */
+#define TA_LEVEL		UINT_C(0x00)	/* xgK */
+
+/*
+ *  lXgñÌÅål
+ */
+#define TMAX_SUSCNT		UINT_C(1)		/* ­§Ò¿vlXgÌÅål */
+
+/*
+ *  ­§Ò¿óÔ©çÌ­§ÄJ
+ */
+#define frsm_tsk(tskid)		rsm_tsk(tskid)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_ITRON_H */
Index: uKadecot/trunk/ssp/include/kernel.h
===================================================================
--- uKadecot/trunk/ssp/include/kernel.h	(revision 101)
+++ uKadecot/trunk/ssp/include/kernel.h	(revision 101)
@@ -0,0 +1,274 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010-2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2010-2012 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+
+/*
+ *		TOPPERS/SSPJ[l Wwb_t@C
+ *
+ *  TOPPERS/SSPJ[lªT|[g·éT[rXR[Ìé¾ÆCKvÈf[
+ *  ^^CèC}NÌè`ðÜÞwb_t@CD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­D±êÉæèC}Nè`ÈOð
+ *  ­æ¤ÉÈÁÄ¢éD
+ *
+ *  ±Ìt@CðCN[h·éOÉCN[hµÄ¨­×«t@C
+ *  ÍÈ¢D
+ */
+
+#ifndef TOPPERS_KERNEL_H
+#define TOPPERS_KERNEL_H
+
+/*
+ *	TOPPERS¤ÊÌf[^^EèE}N
+ */
+#include <t_stddef.h>
+
+/*
+ *  ^[QbgË¶
+ */
+#include "target_kernel.h"
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  f[^^Ìè`
+ */
+
+/*
+ *  rbgp^[âIuWFNgÔÌ^è`
+ */
+typedef	uint_t			INTNO;		/* ÝÔ */
+typedef	uint_t			INHNO;		/* ÝnhÔ */
+typedef	uint_t			EXCNO;		/* CPUáOnhÔ */
+typedef unsigned long	FLGPTN;		/* CxgtOp^[ */
+
+
+/*
+ *  PÊÌ^è`
+ */
+typedef void	(*TASK)(intptr_t exinf);
+typedef void	(*ISR)(intptr_t exinf);
+typedef void	(*INTHDR)(void);
+typedef void	(*EXCHDR)(void *p_excinf);
+typedef void	(*INIRTN)(intptr_t exinf);
+typedef void	(*TERRTN)(intptr_t exinf);
+typedef void	(*CYCHDR)(intptr_t exinf);
+typedef void	(*ALMHDR)(intptr_t exinf);
+
+/*
+ *  ÌæmÛÌ½ßÌ^è`
+ */
+#ifndef TOPPERS_STK_T
+#define TOPPERS_STK_T	intptr_t
+#endif /* TOPPERS_STK_T */
+typedef	TOPPERS_STK_T	STK_T;	/* X^bNÌæðmÛ·é½ßÌ^ */
+
+
+/*
+ *  T[rXR[Ìé¾
+ */
+
+/*
+ *  ^XNÇ@\
+ */
+extern ER		act_tsk(ID tskid);
+extern ER		iact_tsk(ID tskid);
+
+/*
+ *  ¯úEÊM@\
+ */
+
+/* f[^L
+[ */
+extern ER psnd_dtq(ID dtqid, intptr_t data);
+extern ER ipsnd_dtq(ID dtqid, intptr_t data);
+extern ER prcv_dtq(ID dtqid, intptr_t *p_data);
+
+/* CxgtO */
+extern ER set_flg(ID flgid, FLGPTN setptn);
+extern ER iset_flg(ID flgid, FLGPTN setptn);
+extern ER clr_flg(ID flgid, FLGPTN clrptn);
+extern ER pol_flg(ID flgid, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn);
+
+/*
+ *  VXeóÔÇ@\
+ */
+extern ER		loc_cpu(void);
+extern ER		iloc_cpu(void);
+extern ER		unl_cpu(void);
+extern ER		iunl_cpu(void);
+extern ER		dis_dsp(void);
+extern ER		ena_dsp(void);
+extern bool_t	sns_ctx(void);
+extern bool_t	sns_loc(void);
+extern bool_t	sns_dsp(void);
+extern bool_t	sns_dpn(void);
+extern bool_t	sns_ker(void);
+extern ER		ext_ker(void);
+
+/*
+ *  ÝÇ@\
+ */
+extern ER		dis_int(INTNO intno);
+extern ER		ena_int(INTNO intno);
+
+/*
+ *  üúnh@\
+ */
+extern ER		sta_cyc(ID cycid);
+extern ER		stp_cyc(ID cycid);
+
+/*
+ *  A[nh@\
+ */
+extern ER		sta_alm(ID almid , RELTIM almtim);
+extern ER		ista_alm(ID almid , RELTIM almtim);
+extern ER		stp_alm(ID almid);
+extern ER		istp_alm(ID almid);
+
+/*
+ *  VXeÇ@\
+ */
+extern ER		get_tim(SYSTIM *p_systim);
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  IuWFNg®«Ìè`
+ */
+#define TA_RSTR			UINT_C(0x04)	/* §ñ^XN */
+
+#define TA_CLR			UINT_C(0x04)	/* CxgtOÌNAwè */
+
+#define TA_ACT			UINT_C(0x02)	/* ^XNðN®³ê½óÔÅ¶¬ */
+
+#define TA_STA			UINT_C(0x02)	/* üúnhð®ìóÔÅ¶¬ */
+
+#define TA_NONKERNEL	UINT_C(0x02)	/* J[lÇOÌÝ */
+
+#define TA_ENAINT		UINT_C(0x01)	/* ÝvÖ~tOðNA */
+#define TA_EDGE			UINT_C(0x02)	/* GbWgK */
+
+/*
+ *  T[rXR[Ì®ì[hÌè`
+ */
+#define TWF_ORW			UINT_C(0x01)	/* CxgtOÌORÒ¿ */
+#define TWF_ANDW		UINT_C(0x02)	/* CxgtOÌANDÒ¿ */
+
+/*
+ *  »Ì¼ÌèÌè`
+ */
+#define TSK_SELF		0			/* ©^XNwè */
+#define TSK_NONE		0			/* Y·é^XNªÈ¢ */
+
+#define TPRI_INI		0			/* ^XNÌN®Dæx */
+
+#define TIPM_ENAALL		0			/* ÝDæx}XNSð */
+
+/*
+ *  \¬èÆ}N
+ */
+
+/*
+ *  DæxÌÍÍ
+ */
+#define TMIN_TPRI		1			/* ^XNDæxÌÅ¬liÅlj*/
+#ifndef TMAX_TPRI
+	#define TMAX_TPRI		16			/* ^XNDæxÌÅåliÅálj*/
+#elif (TMAX_TPRI != 8) && (TMAX_TPRI != 16)
+	#error "TMAX_TPRI must defined 8 or 16."
+#endif	/* TMAX_TPRI */
+
+#define TMIN_ISRPRI		1			/* ÝT[rX[`DæxÌÅ¬l */
+#ifndef TMAX_ISRPRI
+	#define TMAX_ISRPRI		16			/* ÝT[rX[`DæxÌÅål */
+#elif (TMAX_ISRPRI != 8) && (TMAX_ISRPRI != 16)
+	#error "TMAX_ISRPRI must defined 8 or 16."
+#endif	/* TMAX_ISRPRI */
+
+/*
+ *  o[Wîñ
+ */
+#define TKERNEL_MAKER	UINT_C(0x0118)	/* J[lÌ[J[R[h */
+#define TKERNEL_PRID	UINT_C(0x0007)	/* J[lÌ¯ÊÔ */
+#define TKERNEL_SPVER	UINT_C(0xf511)	/* J[ldlÌo[WÔ */
+#define TKERNEL_PRVER	UINT_C(0x1030)	/* J[lÌo[WÔ */
+
+/*
+ *  L
+[COñÌÅål
+ */
+#define TMAX_ACTCNT		UINT_C(1)		/* N®vL
+[COÌÅål */
+
+/*
+ *  rbgp^[Ìrbg
+ */
+#ifndef TBIT_FLGPTN                     /* CxgtOÌrbg */
+#define TBIT_FLGPTN             (sizeof(FLGPTN) * CHAR_BIT)
+#endif /* TBIT_FLGPTN */
+
+/*
+ *  ÌæmÛÌ½ßÌ}N
+ *
+ *  ÈºÌTOPPERS_COUNT_SZÆTOPPERS_ROUND_SZÌè`ÍCunitª2ÌÐæÅ 
+ *  é±Æð¼èµÄ¢éD
+ */
+#ifndef TOPPERS_COUNT_SZ
+#define TOPPERS_COUNT_SZ(sz, unit)	(((sz) + (unit) - 1) / (unit))
+#endif /* TOPPERS_COUNT_SZ */
+#ifndef TOPPERS_ROUND_SZ
+#define TOPPERS_ROUND_SZ(sz, unit)	(((sz) + (unit) - 1) & ~((unit) - 1))
+#endif /* TOPPERS_ROUND_SZ */
+
+#define COUNT_STK_T(sz)		TOPPERS_COUNT_SZ((sz), sizeof(STK_T))
+#define ROUND_STK_T(sz)		TOPPERS_ROUND_SZ((sz), sizeof(STK_T))
+
+/*
+ *  »Ì¼Ì\¬è
+ */
+#define TMAX_MAXCYC             UINT_C(16)        /* üúnhÌÅå */
+#define TMAX_MAXALM             UINT_C(16)        /* A[nhÌÅå */
+
+#endif /* TOPPERS_KERNEL_H */
Index: uKadecot/trunk/ssp/include/log_output.h
===================================================================
--- uKadecot/trunk/ssp/include/log_output.h	(revision 101)
+++ uKadecot/trunk/ssp/include/log_output.h	(revision 101)
@@ -0,0 +1,90 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2015 by Naoki Saito
+ *              Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		VXeOÌtH[}bgoÍ
+ */
+
+#ifndef TOPPERS_LOG_OUTPUT_H
+#define TOPPERS_LOG_OUTPUT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <t_syslog.h>
+
+/*
+ *  ¶ñ®`oÍ
+ *
+ *  formatÅwè³êétH[}bgLqÆp_argsÅwè³êéøñ©çì
+ *  ¬µ½bZ[WðC1¶oÍÖputcðp¢ÄoÍ·éD
+ */
+extern void	syslog_printf(const char *format, const intptr_t *p_args,
+										void (*putc)(char)) throw();
+
+/*
+ *  OîñÌoÍ
+ *
+ *  p_syslogÅwè³êéOîñð¶ñÉ®`µC1¶oÍÖputcðp
+ *  ¢ÄoÍ·éD
+ */
+extern void	syslog_print(const SYSLOG *p_syslog, void (*putc)(char)) throw();
+
+/*
+ *  Oîñr¸bZ[W¶ñ
+ *
+ *  lostÂÌOîñª¸íê½|ÌbZ[WðC1¶oÍÖputcðp¢
+ *  ÄoÍ·éD
+ */
+extern void	syslog_lostmsg(uint_t lost, void (*putc)(char)) throw();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_LOG_OUTPUT_H */
Index: uKadecot/trunk/ssp/include/queue.h
===================================================================
--- uKadecot/trunk/ssp/include/queue.h	(revision 101)
+++ uKadecot/trunk/ssp/include/queue.h	(revision 101)
@@ -0,0 +1,119 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2011 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+
+/*
+ *  L
+[ìwb_
+ *
+ *  SSPJ[lÅÍßñÌ½ßÉCfbNXðgpµ½L
+[ðp¢é
+ */
+
+#ifndef TOPPERS_QUEUE_H
+#define TOPPERS_QUEUE_H
+
+/* L
+[ÌCfbNX */
+typedef uint8_t QUEIDX;
+
+/* L
+[\¢Ì */
+typedef struct
+{
+	QUEIDX	next;
+	QUEIDX	prev;
+} QUEUE;
+
+
+/* L
+[wb_Ìú» */
+Inline void
+queue_initialize(QUEUE *queue , QUEIDX queue_null)
+{
+	queue->next = queue->prev = queue_null;
+}
+
+/* wèµ½vfÌOÉV½ÈvfðÇÁ */
+Inline void
+queue_insert_prev(QUEUE *top , QUEIDX queue , QUEIDX entry)
+{
+	top[entry].prev = top[queue].prev;
+	top[entry].next = queue;
+	top[top[queue].prev].next = entry;
+	top[queue].prev = entry;
+}
+
+
+/* wèµ½L
+[ÌÌvfðíµC»ÌCfbNXðÔ· */
+Inline QUEIDX
+queue_delete_next(QUEUE *top , QUEIDX queue)
+{
+	top[top[queue].next].prev = top[queue].prev;
+	top[top[queue].prev].next = top[queue].next;
+	
+	return top[queue].next;
+}
+
+
+/*
+ *  L
+[ªó©Ç¤©ÌeXg
+ *
+ *  queueÉÍL
+[wb_ðwè·é±Æ
+ */
+Inline bool_t
+queue_empty(QUEUE *queue , QUEIDX queue_null)
+{
+	bool_t empty;
+	
+	if(queue->next == queue_null)
+	{
+		empty = true;
+	}
+	else
+	{
+		empty = false;
+	}
+	
+	return empty;
+}
+
+#endif /* TOPPERS_QUEUE_H */
Index: uKadecot/trunk/ssp/include/sil.h
===================================================================
--- uKadecot/trunk/ssp/include/sil.h	(revision 101)
+++ uKadecot/trunk/ssp/include/sil.h	(revision 101)
@@ -0,0 +1,287 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		VXeC^tF[XC
+ *
+ *  VXeC^tF[XCÌT[rXR[Ìè`Eé¾Æ}NÈ
+ *  ÇÌè`ðÜÞwb_t@CD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­±ÆÅC}Nè`ÈOÌLqð
+ *  ­±ÆªÅ«éD
+ *
+ *  ±Ìt@CðCN[h·éOÉCN[hµÄ¨­×«t@C
+ *  ÍÈ¢D
+ */
+
+#ifndef TOPPERS_SIL_H
+#define TOPPERS_SIL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *	TOPPERS¤ÊÌf[^^EèE}N
+ */
+#include <t_stddef.h>
+
+/*
+ *  ^[QbgË¶
+ */
+#include "target_sil.h"
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  SÝbNóÔÌ§ä
+ *
+ *  SIL_PRE_LOCCSIL_LOC_INT()CSIL_UNL_INT()ÍC^[QbgË¶Åp
+ *  Ó·éDftHgÌè`ÍpÓµÄ¢È¢D
+ */
+
+/*
+ *  ÷­ÔÒ¿
+ */
+extern void	sil_dly_nse(ulong_t dlytim) throw();
+
+/*
+ *  GfBAÌ½]
+ */
+#ifndef TOPPERS_SIL_REV_ENDIAN_UINT16
+#define	TOPPERS_SIL_REV_ENDIAN_UINT16(data) \
+				((((data) & 0xffU) << 8U) | (((data) >> 8U) & 0xffU))
+#endif /* TOPPERS_SIL_REV_ENDIAN_UINT16 */
+
+#ifndef TOPPERS_SIL_REV_ENDIAN_UINT32
+#define	TOPPERS_SIL_REV_ENDIAN_UINT32(data) \
+				((((data) & 0xffU) << 24U) | (((data) & 0xff00U) << 8U) \
+					| (((data) >> 8U) & 0xff00U) | (((data) >> 24U) & 0xffU))
+#endif /* TOPPERS_SIL_REV_ENDIAN_UINT32 */
+
+/*
+ *  óÔANZXÖ
+ */
+#ifndef TOPPERS_OMIT_SIL_ACCESS
+
+/*
+ *  8rbgPÊÌÇoµ^Ý
+ */
+#ifdef UINT8_MAX
+
+Inline uint8_t
+sil_reb_mem(void *mem)
+{
+	uint8_t	data;
+
+	data = *((volatile uint8_t *) mem);
+	return(data);
+}
+
+Inline void
+sil_wrb_mem(void *mem, uint8_t data)
+{
+	*((volatile uint8_t *) mem) = data;
+}
+
+#endif /* UINT8_MAX */
+
+/*
+ *  16rbgPÊÌÇoµ^Ý
+ */
+
+Inline uint16_t
+sil_reh_mem(void *mem)
+{
+	uint16_t	data;
+
+	data = *((volatile uint16_t *) mem);
+	return(data);
+}
+
+Inline void
+sil_wrh_mem(void *mem, uint16_t data)
+{
+	*((volatile uint16_t *) mem) = data;
+}
+
+#ifdef SIL_ENDIAN_BIG			/* rbOGfBAvZbT */
+
+#define	sil_reh_bem(mem)		sil_reh_mem(mem)
+#define	sil_wrh_bem(mem, data)	sil_wrh_mem(mem, data)
+
+#ifndef TOPPERS_OMIT_SIL_REH_LEM
+
+Inline uint16_t
+sil_reh_lem(void *mem)
+{
+	uint16_t	data;
+
+	data = *((volatile uint16_t *) mem);
+	return(TOPPERS_SIL_REV_ENDIAN_UINT16(data));
+}
+
+#endif /* TOPPERS_OMIT_SIL_REH_LEM */
+#ifndef TOPPERS_OMIT_SIL_WRH_LEM
+
+Inline void
+sil_wrh_lem(void *mem, uint16_t data)
+{
+	*((volatile uint16_t *) mem) = TOPPERS_SIL_REV_ENDIAN_UINT16(data);
+}
+
+#endif /* TOPPERS_OMIT_SIL_WRH_LEM */
+#else /* SIL_ENDIAN_BIG */		/* gGfBAvZbT */
+
+#define	sil_reh_lem(mem)		sil_reh_mem((mem))
+#define	sil_wrh_lem(mem, data)	sil_wrh_mem((mem), (data))
+
+#ifndef TOPPERS_OMIT_SIL_REH_BEM
+
+Inline uint16_t
+sil_reh_bem(void *mem)
+{
+	uint16_t	data;
+
+	data = *((volatile uint16_t *) mem);
+	return(TOPPERS_SIL_REV_ENDIAN_UINT16(data));
+}
+
+#endif /* TOPPERS_OMIT_SIL_REH_BEM */
+#ifndef TOPPERS_OMIT_SIL_WRH_BEM
+
+Inline void
+sil_wrh_bem(void *mem, uint16_t data)
+{
+	*((volatile uint16_t *) mem) = TOPPERS_SIL_REV_ENDIAN_UINT16(data);
+}
+
+#endif /* TOPPERS_OMIT_SIL_WRH_BEM */
+#endif /* SIL_ENDIAN_BIG */
+
+/*
+ *  32rbgPÊÌÇoµ^Ý
+ */
+
+Inline uint32_t
+sil_rew_mem(void *mem)
+{
+	uint32_t	data;
+
+	data = *((volatile uint32_t *) mem);
+	return(data);
+}
+
+Inline void
+sil_wrw_mem(void *mem, uint32_t data)
+{
+	*((volatile uint32_t *) mem) = data;
+}
+
+#ifdef SIL_ENDIAN_BIG			/* rbOGfBAvZbT */
+
+#define	sil_rew_bem(mem)		sil_rew_mem(mem)
+#define	sil_wrw_bem(mem, data)	sil_wrw_mem(mem, data)
+
+#ifndef TOPPERS_OMIT_SIL_REW_LEM
+
+Inline uint32_t
+sil_rew_lem(void *mem)
+{
+	uint32_t	data;
+
+	data = *((volatile uint32_t *) mem);
+	return(TOPPERS_SIL_REV_ENDIAN_UINT32(data));
+}
+
+#endif /* TOPPERS_OMIT_SIL_REW_LEM */
+#ifndef TOPPERS_OMIT_SIL_WRW_LEM
+
+Inline void
+sil_wrw_lem(void *mem, uint32_t data)
+{
+	*((volatile uint32_t *) mem) = TOPPERS_SIL_REV_ENDIAN_UINT32(data);
+}
+
+#endif /* TOPPERS_OMIT_SIL_WRW_LEM */
+#else /* SIL_ENDIAN_BIG */		/* gGfBAvZbT */
+
+#define	sil_rew_lem(mem)		sil_rew_mem((mem))
+#define	sil_wrw_lem(mem, data)	sil_wrw_mem((mem), (data))
+
+#ifndef TOPPERS_OMIT_SIL_REW_BEM
+
+Inline uint32_t
+sil_rew_bem(void *mem)
+{
+	uint32_t	data;
+
+	data = *((volatile uint32_t *) mem);
+	return(TOPPERS_SIL_REV_ENDIAN_UINT32(data));
+}
+
+#endif /* TOPPERS_OMIT_SIL_REW_BEM */
+#ifndef TOPPERS_OMIT_SIL_WRW_BEM
+
+Inline void
+sil_wrw_bem(void *mem, uint32_t data)
+{
+	*((volatile uint32_t *) mem) = TOPPERS_SIL_REV_ENDIAN_UINT32(data);
+}
+
+#endif /* TOPPERS_OMIT_SIL_WRW_BEM */
+#endif /* SIL_ENDIAN_BIG */
+#endif /* TOPPERS_OMIT_SIL_ACCESS */
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_SIL_H */
Index: uKadecot/trunk/ssp/include/t_stddef.h
===================================================================
--- uKadecot/trunk/ssp/include/t_stddef.h	(revision 101)
+++ uKadecot/trunk/ssp/include/t_stddef.h	(revision 101)
@@ -0,0 +1,283 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2015 by Naoki Saito
+ *              Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		TOPPERS¤Êwb_t@C
+ *
+ *  TOPPERSÖAÌ·×ÄÌ\[Xt@CÅCN[h·×«wb_t@C
+ *  DeíÌJ[lâ\tgEFAiÅ¤ÊÉp¢é±ÆðzèµÄ¢
+ *  éDTOPPERSÌeíÌJ[lâ\tgEFAiÅ¤ÊÉp¢éf[^^C
+ *  èC}NÌè`ÈÇðÜÞD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­D±êÉæèC}Nè`ÈOð
+ *  ­æ¤ÉÈÁÄ¢éD
+ *
+ *  ±Ìt@CðCN[h·éOÉCN[hµÄ¨­×«t@C
+ *  ÍÈ¢D
+ */
+
+#ifndef TOPPERS_T_STDDEF_H
+#define TOPPERS_T_STDDEF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  ^[QbgË¶
+ */
+#include "target_stddef.h"
+
+/*
+ *  C¾ê/EC++Åthrow()ÉÎ·é½ßÌè`
+ */
+#if !defined(__cplusplus) || defined(__embedded_cplusplus)
+#define throw()
+#endif
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ^[QbgË¶Ìf[^^Ì}NÌftHgè`
+ */
+#ifndef TOPPERS_bool
+#define TOPPERS_bool	int				/* u[^ */
+#endif /* TOPPERS_bool */
+
+#ifndef TOPPERS_size
+#define TOPPERS_size	uintptr_t		/* TCY^ */
+#endif /* TOPPERS_size */
+
+#ifndef TOPPERS_fp
+struct TOPPERS_dummy_t { int TOPPERS_dummy_field; };
+typedef	void			(*TOPPERS_fp_t)(struct TOPPERS_dummy_t);
+#define TOPPERS_fp		TOPPERS_fp_t	/* vOÌN®Ôn */
+#endif /* TOPPERS_fp */
+
+/*
+ *  ¤Êf[^^
+ */
+typedef TOPPERS_bool	bool_t;		/* ^Ul */
+
+typedef signed int		int_t;		/* ©RÈTCYÌt«® */
+typedef unsigned int	uint_t;		/* ©RÈTCYÌ³µ® */
+
+typedef signed long		long_t;		/* ·ßÌTCYÌt«® */
+typedef unsigned long	ulong_t;	/* ·ßÌTCYÌ³µ® */
+
+typedef int_t			FN;			/* @\R[h */
+typedef	int_t			ER;			/* G[R[h */
+typedef	int_t			ID;			/* IuWFNgÌIDÔ */
+typedef	uint_t			ATR;		/* IuWFNgÌ®« */
+typedef	uint_t			STAT;		/* IuWFNgÌóÔ */
+typedef	uint_t			MODE;		/* T[rXR[Ì®ì[h */
+typedef	int_t			PRI;		/* Dæx */
+typedef	TOPPERS_size	SIZE;		/* ÌæÌTCY */
+
+typedef	int_t			TMO;		/* ^CAEgwè */
+typedef	uint_t			RELTIM;		/* ÎÔ */
+typedef	ulong_t			SYSTIM;		/* VXe */
+typedef	ulong_t			SYSUTM;		/* «\]¿pVXe */
+
+typedef	TOPPERS_fp		FP;			/* vOÌN®Ôn */
+
+typedef	int_t			ER_BOOL;	/* G[R[hÜ½Í^Ul */
+typedef	int_t			ER_ID;		/* G[R[hÜ½ÍIDÔ */
+typedef	int_t			ER_UINT;	/* G[R[hÜ½Í³µ® */
+
+typedef	uint32_t		ACPTN;		/* ANZXÂp^[ */
+typedef	struct acvct {				/* ANZXÂxN^ */
+	ACPTN		acptn1;				/* Êíì1ÌANZXÂp^[ */
+	ACPTN		acptn2;				/* Êíì2ÌANZXÂp^[ */
+	ACPTN		acptn3;				/* ÇìÌANZXÂp^[ */
+	ACPTN		acptn4;				/* QÆìÌANZXÂp^[ */
+} ACVCT;
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+/*
+ *  ®èðìé}N
+ */
+#ifndef UINT_C
+#define UINT_C(val)		(val ## U)		/* uint_t^Ìèðìé}N */
+#endif /* UINT_C */
+
+#ifndef ULONG_C
+#define ULONG_C(val)	(val ## UL)		/* ulong_t^Ìèðìé}N */
+#endif /* ULONG_C */
+
+/*
+ *  êÊè
+ */
+#ifndef NULL
+#define NULL		0			/* ³ø|C^ */
+#endif /* NULL */
+
+#ifndef true
+#define true		1			/* ^ */
+#endif /* true */
+
+#ifndef false
+#define false		0			/* U */
+#endif /* false */
+
+#define E_OK		0			/* ³íI¹ */
+
+/*
+ *  CG[R[h
+ */
+#define E_SYS		(-5)		/* VXeG[ */
+#define E_NOSPT		(-9)		/* ¢T|[g@\ */
+#define E_RSFN		(-10)		/* \ñ@\R[h */
+#define E_RSATR		(-11)		/* \ñ®« */
+#define E_PAR		(-17)		/* p[^G[ */
+#define E_ID		(-18)		/* s³IDÔ */
+#define E_CTX		(-25)		/* ReLXgG[ */
+#define E_MACV		(-26)		/* ANZXá½ */
+#define E_OACV		(-27)		/* IuWFNgANZXá½ */
+#define E_ILUSE		(-28)		/* T[rXR[s³gp */
+#define E_NOMEM		(-33)		/* s« */
+#define E_NOID		(-34)		/* IDÔs« */
+#define E_NORES		(-35)		/* ¹s« */
+#define E_OBJ		(-41)		/* IuWFNgóÔG[ */
+#define E_NOEXS		(-42)		/* IuWFNg¢¶¬ */
+#define E_QOVR		(-43)		/* L
+[COI[o[t[ */
+#define E_RLWAI		(-49)		/* Ò¿óÔÌ­§ð */
+#define E_TMOUT		(-50)		/* |[O¸sÜ½Í^CAEg */
+#define E_DLT		(-51)		/* Ò¿IuWFNgÌí */
+#define E_CLS		(-52)		/* Ò¿IuWFNgÌóÔÏ» */
+#define E_WBLK		(-57)		/* mubLOót¯ */
+#define E_BOVR		(-58)		/* obt@I[o[t[ */
+
+/*
+ *  IuWFNg®«
+ */
+#define TA_NULL		UINT_C(0)	/* IuWFNg®«ðwèµÈ¢ */
+
+/*
+ *  ^CAEgwè
+ */
+#define TMO_POL		0			/* |[O */
+#define TMO_FEVR	(-1)		/* ivÒ¿ */
+#define TMO_NBLK	(-2)		/* mubLO */
+
+/*
+ *  ANZXÂp^[
+ */
+#define TACP_KERNEL		(0U)	/* J[lhC¾¯ÉANZXðÂ */
+#define TACP_SHARED		(~0U)	/* ·×ÄÌhC©çANZXðÂ */
+
+/*
+ *  ^ÉÖ·éîñðæèo·½ßÌ}N
+ */
+#ifndef offsetof
+#define	offsetof(structure, field)	((uintptr_t) &(((structure *) 0)->field))
+#endif /* offsetof */
+
+#ifndef alignof
+#define alignof(type)	offsetof(struct { char field1; type field2; }, field2)
+#endif /* alignof */
+
+#ifndef ALIGN_TYPE				/* ACgÌ`FbN */
+#define ALIGN_TYPE(addr, type) \
+						((((uintptr_t)(addr)) & (alignof(type) - 1)) == 0U)
+#endif /* ALIGN_TYPE */
+
+/*
+ *  assert}N
+ */
+#undef assert
+#ifndef NDEBUG
+#define assert(exp)		((void)((exp) ? 0 : (TOPPERS_assert_fail(#exp, \
+							__FILE__, __LINE__), TOPPERS_assert_abort(), 0)))
+#else /* NDEBUG */
+#define assert(exp)		((void) 0)
+#endif /* NDEBUG */
+
+#ifdef __cplusplus
+}
+#endif
+
+/*
+ *  G[R[h¶¬Eªð}N
+ *
+ *  ÈºÌ}Nè`ÍCt«®ª2ÌâÅ\»³êÄ¨èCEVtg
+ *  Zqi>>jªZpVtg³êé±Æð¼èµÄ¢éD»¤ÅÈ¢J­Â
+ *  «ÅÍCtarget_stddef.hÅ±êçÌè`ðã«µÈ¯êÎÈçÈ¢D
+ *
+ *  MERCD}NÌè`ÍCCG[R[hªÅ é±Æð¼èµÄ¢éD
+ *  »¤ÅÈ¢êC2ÂÌè`ªêvµÈ­ÈéD
+ */
+#ifndef ERCD
+#define ERCD(mercd, sercd) \
+				((ER)(((((uint_t) (sercd))) << 8) | ((((uint_t) (mercd))) & 0xffU)))
+#endif /* ERCD */
+
+#ifndef MERCD
+#ifdef INT8_MAX
+#define MERCD(ercd)		((ER)((int8_t)(ercd)))
+#else /* INT8_MAX */
+#define MERCD(ercd)		((ER)((((uint_t) (ercd))) | ~0xffU))
+#endif /* INT8_MAX */
+#endif /* MERCD */
+
+#ifndef SERCD
+#define SERCD(ercd)		((ER)((ercd) >> 8))
+#endif /* SERCD */
+
+/*
+ *  ÎÔiRELTIMjÉwèÅ«éÅål
+ */
+#if UINT_MAX < LONG_MAX
+#define TMAX_RELTIM		((RELTIM) UINT_MAX)
+#else /* UINT_MAX < LONG_MAX */
+#define TMAX_RELTIM		((RELTIM) LONG_MAX)
+#endif /* UINT_MAX < LONG_MAX */
+
+#endif /* TOPPERS_T_STDDEF_H */
Index: uKadecot/trunk/ssp/include/t_syslog.h
===================================================================
--- uKadecot/trunk/ssp/include/t_syslog.h	(revision 101)
+++ uKadecot/trunk/ssp/include/t_syslog.h	(revision 101)
@@ -0,0 +1,329 @@
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		VXeOoÍðs¤½ßÌè`
+ *
+ *  VXeOT[rXÍCVXeÌOîñðoÍ·é½ßÌT[rX
+ *  Å éDJ[l©çÌOîñÌoÍÉàp¢é½ßCàÅÒ¿óÔ
+ *  ÉÍ¢é±ÆÍÈ¢D
+ *
+ *  OîñÍCJ[làÌOobt@É«Þ©CáxÌ¶o
+ *  ÍÖðp¢ÄoÍ·éDÇ¿çðg¤©ÍCg£T[rXR[ÅØè
+ *  ·¦é±ÆªÅ«éD
+ *
+ *  Oobt@ÌæªI[ot[µ½êÉÍCÃ¢OîñðÁµÄã
+ *  «·éD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­±ÆÅC}Nè`ÈOÌLqð
+ *  ­±ÆªÅ«éD
+ *
+ *  ±Ìt@CðCN[h·éOÉCt_stddef.hðCN[hµÄ¨
+ *  ­±ÆªKvÅ éD
+ */
+
+#ifndef TOPPERS_T_SYSLOG_H
+#define TOPPERS_T_SYSLOG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  OîñÌíÊÌè`
+ */
+#define LOG_TYPE_COMMENT	UINT_C(0x01)	/* Rg */
+#define LOG_TYPE_ASSERT		UINT_C(0x02)	/* AT[VÌ¸s */
+
+#define LOG_TYPE_INH		UINT_C(0x11)	/* Ýnh */
+#define LOG_TYPE_ISR		UINT_C(0x12)	/* ÝT[rX[` */
+#define LOG_TYPE_CYC		UINT_C(0x13)	/* üúnh */
+#define LOG_TYPE_ALM		UINT_C(0x14)	/* A[nh */
+#define LOG_TYPE_OVR		UINT_C(0x15)	/* I[onh */
+#define LOG_TYPE_EXC		UINT_C(0x16)	/* CPUáOnh */
+#define LOG_TYPE_TEX		UINT_C(0x17)	/* ^XNáO[` */
+#define LOG_TYPE_TSKSTAT	UINT_C(0x18)	/* ^XNóÔÏ» */
+#define LOG_TYPE_DSP		UINT_C(0x19)	/* fBXpb` */
+#define LOG_TYPE_SVC		UINT_C(0x1a)	/* T[rXR[ */
+
+#define LOG_ENTER			UINT_C(0x00)	/* üû^Jn */
+#define LOG_LEAVE			UINT_C(0x80)	/* oû^I¹ */
+
+/*
+ *  OîñÌdvxÌè`
+ */
+#define LOG_EMERG			UINT_C(0)		/* Vbg_EÉl·éG[ */
+#define LOG_ALERT			UINT_C(1)
+#define LOG_CRIT			UINT_C(2)
+#define LOG_ERROR			UINT_C(3)		/* VXeG[ */
+#define LOG_WARNING			UINT_C(4)		/* xbZ[W */
+#define LOG_NOTICE			UINT_C(5)
+#define LOG_INFO			UINT_C(6)
+#define LOG_DEBUG			UINT_C(7)		/* fobOpbZ[W */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  OîñÌf[^\¢
+ */
+
+#define TMAX_LOGINFO	6
+
+typedef struct {
+	uint_t		logtype;				/* OîñÌíÊ */
+	SYSTIM		logtim;					/* O */
+	intptr_t	loginfo[TMAX_LOGINFO];	/* »Ì¼ÌOîñ */
+} SYSLOG;
+
+/*
+ *  OîñÌdvxÌrbg}bvðìé½ßÌ}N
+ */
+#define LOG_MASK(prio)		(1U << (prio))
+#define LOG_UPTO(prio)		((1U << ((prio) + 1)) - 1)
+
+/*
+ *  OîñðoÍ·é½ßÌCuÖ
+ */
+
+#ifndef TOPPERS_OMIT_SYSLOG
+
+extern ER	syslog_wri_log(uint_t prio, const SYSLOG *p_syslog) throw();
+
+Inline void
+_syslog_0(uint_t prio, uint_t type)
+{
+	SYSLOG	syslog;
+
+	syslog.logtype = type;
+	(void) syslog_wri_log(prio, &syslog);
+}
+
+Inline void
+_syslog_1(uint_t prio, uint_t type, intptr_t arg1)
+{
+	SYSLOG	syslog;
+
+	syslog.logtype = type;
+	syslog.loginfo[0] = arg1;
+	(void) syslog_wri_log(prio, &syslog);
+}
+
+Inline void
+_syslog_2(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2)
+{
+	SYSLOG	syslog;
+
+	syslog.logtype = type;
+	syslog.loginfo[0] = arg1;
+	syslog.loginfo[1] = arg2;
+	(void) syslog_wri_log(prio, &syslog);
+}
+
+Inline void
+_syslog_3(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
+														intptr_t arg3)
+{
+	SYSLOG	syslog;
+
+	syslog.logtype = type;
+	syslog.loginfo[0] = arg1;
+	syslog.loginfo[1] = arg2;
+	syslog.loginfo[2] = arg3;
+	(void) syslog_wri_log(prio, &syslog);
+}
+
+Inline void
+_syslog_4(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
+										intptr_t arg3, intptr_t arg4)
+{
+	SYSLOG	syslog;
+
+	syslog.logtype = type;
+	syslog.loginfo[0] = arg1;
+	syslog.loginfo[1] = arg2;
+	syslog.loginfo[2] = arg3;
+	syslog.loginfo[3] = arg4;
+	(void) syslog_wri_log(prio, &syslog);
+}
+
+Inline void
+_syslog_5(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
+							intptr_t arg3, intptr_t arg4, intptr_t arg5)
+{
+	SYSLOG	syslog;
+
+	syslog.logtype = type;
+	syslog.loginfo[0] = arg1;
+	syslog.loginfo[1] = arg2;
+	syslog.loginfo[2] = arg3;
+	syslog.loginfo[3] = arg4;
+	syslog.loginfo[4] = arg5;
+	(void) syslog_wri_log(prio, &syslog);
+}
+
+Inline void
+_syslog_6(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
+				intptr_t arg3, intptr_t arg4, intptr_t arg5, intptr_t arg6)
+{
+	SYSLOG	syslog;
+
+	syslog.logtype = type;
+	syslog.loginfo[0] = arg1;
+	syslog.loginfo[1] = arg2;
+	syslog.loginfo[2] = arg3;
+	syslog.loginfo[3] = arg4;
+	syslog.loginfo[4] = arg5;
+	syslog.loginfo[5] = arg6;
+	(void) syslog_wri_log(prio, &syslog);
+}
+
+/*
+ *  OîñiRgjðoÍ·é½ßÌCuÖivasyslog.cj
+ */
+extern void	syslog(uint_t prio, const char *format, ...) throw();
+
+#else /* TOPPERS_OMIT_SYSLOG */
+
+/*
+ *  VXeOoÍð}~·éê
+ */
+
+Inline void
+_syslog_0(uint_t prio, uint_t type)
+{
+}
+
+Inline void
+_syslog_1(uint_t prio, uint_t type, intptr_t arg1)
+{
+}
+
+Inline void
+_syslog_2(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2)
+{
+}
+
+Inline void
+_syslog_3(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
+														intptr_t arg3)
+{
+}
+
+Inline void
+_syslog_4(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
+										intptr_t arg3, intptr_t arg4)
+{
+}
+
+Inline void
+_syslog_5(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
+							intptr_t arg3, intptr_t arg4, intptr_t arg5)
+{
+}
+
+Inline void
+_syslog_6(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
+				intptr_t arg3, intptr_t arg4, intptr_t arg5, intptr_t arg6)
+{
+}
+
+Inline void
+syslog(uint_t prio, const char *format, ...)
+{
+}
+
+#endif /* TOPPERS_OMIT_SYSLOG */
+
+/*
+ *  OîñiRgjðoÍ·é½ßÌ}N
+ *
+ *  format¨æÑã±Ìø©çì¬µ½bZ[WðCdåxprioÅOî
+ *  ñÆµÄoÍ·é½ßÌ}NDarg1`argnÍintptr_t^ÉLXg·é
+ *  ½ßCintptr_t^É^Ï·Å«éCÓÌ^Åæ¢D
+ */
+
+#define syslog_0(prio, format) \
+				_syslog_1(prio, LOG_TYPE_COMMENT, (intptr_t) format)
+
+#define syslog_1(prio, format, arg1) \
+				_syslog_2(prio, LOG_TYPE_COMMENT, (intptr_t) format, \
+														(intptr_t)(arg1))
+
+#define syslog_2(prio, format, arg1, arg2) \
+				_syslog_3(prio, LOG_TYPE_COMMENT, (intptr_t) format, \
+										(intptr_t)(arg1), (intptr_t)(arg2))
+
+#define syslog_3(prio, format, arg1, arg2, arg3) \
+				_syslog_4(prio, LOG_TYPE_COMMENT, (intptr_t) format, \
+						(intptr_t)(arg1), (intptr_t)(arg2), (intptr_t)(arg3))
+
+#define syslog_4(prio, format, arg1, arg2, arg3, arg4) \
+				_syslog_5(prio, LOG_TYPE_COMMENT, (intptr_t) format, \
+						(intptr_t)(arg1), (intptr_t)(arg2), (intptr_t)(arg3), \
+														(intptr_t)(arg4))
+
+#define syslog_5(prio, format, arg1, arg2, arg3, arg4, arg5) \
+				_syslog_6(prio, LOG_TYPE_COMMENT, (intptr_t) format, \
+						(intptr_t)(arg1), (intptr_t)(arg2), (intptr_t)(arg3), \
+										(intptr_t)(arg4), (intptr_t)(arg5))
+
+/*
+ *  OîñiAT[VÌ¸sjðoÍ·é½ßÌ}N
+ */
+#ifndef TOPPERS_assert_fail
+#define TOPPERS_assert_fail(exp, file, line) \
+				_syslog_3(LOG_EMERG, LOG_TYPE_ASSERT, (intptr_t)(file), \
+										(intptr_t)(line), (intptr_t)(exp))
+#endif /* TOPPERS_assert_fail */
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_T_SYSLOG_H */
Index: uKadecot/trunk/ssp/kernel/Makefile.kernel
===================================================================
--- uKadecot/trunk/ssp/kernel/Makefile.kernel	(revision 101)
+++ uKadecot/trunk/ssp/kernel/Makefile.kernel	(revision 101)
@@ -0,0 +1,102 @@
+#
+#  TOPPERS/ASP Kernel
+#      Toyohashi Open Platform for Embedded Real-Time Systems/
+#      Advanced Standard Profile Kernel
+# 
+#  Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
+#                              Toyohashi Univ. of Technology, JAPAN
+#  Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
+#              Graduate School of Information Science, Nagoya Univ., JAPAN
+#  Copyright (C) 2010 by Meika Sugimoto
+# 
+#  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+#  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+#  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+#  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+#       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+#      XR[hÉÜÜêÄ¢é±ÆD
+#  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+#      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+#      Ì³ÛØKèðfÚ·é±ÆD
+#  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+#      ÆD
+#    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+#        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+#    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+#        ñ·é±ÆD
+#  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+#      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+#      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+#      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+#      ÆÓ·é±ÆD
+# 
+#  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+#  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+#  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+#  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+#  ÌÓCðíÈ¢D
+# 
+
+#
+#		J[lÌt@C\¬Ìè`
+#
+
+#
+#  1ÂÌ\[Xt@C©ç¡ÌIuWFNgt@Cð¶¬·éæ¤Éì
+#  ¬³ê½\[Xt@CÌXg
+#
+KERNEL_FCSRCS = startup.c task.c task_manage.c					\
+				interrupt.c exception.c sys_manage.c cyclic.c	\
+				alarm.c time_manage.c time_event.c \
+				eventflag.c dataqueue.c
+
+#
+#  e\[Xt@C©ç¶¬³êéIuWFNgt@CÌXg
+#
+startup = sta_ker.o ext_ker.o
+
+task = tskini.o get_ipri.o get_ipriself.o tsksched.o \
+			tskact.o tskrun.o tskdsp.o tskdmt.o
+
+time_event = tmevtini.o tmevtenq.o tmevtdeq.o sig_tim.o
+
+task_manage = act_tsk.o iact_tsk.o
+
+time_manage = get_tim.o
+
+eventflag = iniflg.o set_flg.o iset_flg.o clr_flg.o pol_flg.o
+
+dataqueue = dtqini.o dtqenq.o dtqdeq.o psnd_dtq.o ipsnd_dtq.o prcv_dtq.o
+
+cyclic = cycini.o sta_cyc.o stp_cyc.o cyccal.o
+
+alarm = almini.o sta_alm.o stp_alm.o almcal.o
+
+sys_manage = loc_cpu.o iloc_cpu.o unl_cpu.o iunl_cpu.o dis_dsp.o ena_dsp.o \
+		sns_ctx.o sns_loc.o sns_dsp.o sns_dpn.o sns_ker.o
+
+interrupt = intini.o dis_int.o ena_int.o
+
+exception = excini.o
+
+#
+#  ¶¬³êéIuWFNgt@CÌË¶ÖWÌè`
+#
+$(startup) $(startup:.o=.s) $(startup:.o=.d): startup.c
+$(task) $(task:.o=.s) $(task:.o=.d): task.c
+$(time_event) $(time_event:.o=.s) $(time_event:.o=.d): time_event.c
+$(task_manage) $(task_manage:.o=.s) $(task_manage:.o=.d): task_manage.c
+$(time_manage) $(time_manage:.o=.s) $(time_manage:.o=.d): time_manage.c
+$(eventflag) $(eventflag:.o=.s) $(eventflag:.o=.d): eventflag.c
+$(dataqueue) $(dataqueue:.o=.s) $(dataqueue:.o=.d): dataqueue.c
+$(cyclic) $(cyclic:.o=.s) $(cyclic:.o=.d): cyclic.c
+$(alarm) $(alarm:.o=.s) $(alarm:.o=.d): alarm.c
+$(sys_manage) $(sys_manage:.o=.s) $(sys_manage:.o=.d): sys_manage.c
+$(interrupt) $(interrupt:.o=.s) $(interrupt:.o=.d): interrupt.c
+$(exception) $(exception:.o=.s) $(exception:.o=.d): exception.c
Index: uKadecot/trunk/ssp/kernel/allfunc.h
===================================================================
--- uKadecot/trunk/ssp/kernel/allfunc.h	(revision 101)
+++ uKadecot/trunk/ssp/kernel/allfunc.h	(revision 101)
@@ -0,0 +1,131 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010-2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2011-2012 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+
+/*
+ *		·×ÄÌÖðRpC·é½ßÌè`
+ */
+
+#ifndef TOPPERS_ALLFUNC_H
+#define TOPPERS_ALLFUNC_H
+
+/* startup.c */
+#define TOPPERS_sta_ker
+#define TOPPERS_ext_ker
+
+/* task.c */
+#define TOPPERS_get_ipriself
+#define TOPPERS_get_ipri
+#define TOPPERS_tskini
+#define TOPPERS_tsksched
+#define TOPPERS_tskrun
+#define TOPPERS_tskdsp
+#define TOPPERS_tskact
+#define TOPPERS_tskdmt
+
+
+/* task_manage.c */
+#define TOPPERS_act_tsk
+#define TOPPERS_iact_tsk
+
+/* sys_manage.c */
+#define TOPPERS_loc_cpu
+#define TOPPERS_iloc_cpu
+#define TOPPERS_unl_cpu
+#define TOPPERS_iunl_cpu
+#define TOPPERS_dis_dsp
+#define TOPPERS_ena_dsp
+#define TOPPERS_sns_ctx
+#define TOPPERS_sns_loc
+#define TOPPERS_sns_dsp
+#define TOPPERS_sns_dpn
+#define TOPPERS_sns_ker
+
+/* interrupt.c */
+#define TOPPERS_intini
+#define TOPPERS_dis_int
+#define TOPPERS_ena_int
+
+/* exception.c */
+#define TOPPERS_excini
+
+/* time_event.c */
+#define TOPPERS_tmevtini
+#define TOPPERS_tmevtenq
+#define TOPPERS_tmevtdeq
+#define TOPPERS_sig_tim
+
+/* cyclic.c */
+#define TOPPERS_cycini
+#define TOPPERS_sta_cyc
+#define TOPPERS_stp_cyc
+#define TOPPERS_cyccal
+
+/* alarm.c */
+#define TOPPERS_almini
+#define TOPPERS_sta_alm
+#define TOPPERS_ista_alm
+#define TOPPERS_stp_alm
+#define TOPPERS_istp_alm
+#define TOPPERS_almcal
+
+/* time_manage.c */
+#define TOPPERS_get_tim
+
+/* eventflag.c */
+#define TOPPERS_iniflg
+#define TOPPERS_flgcnd
+#define TOPPERS_set_flg
+#define TOPPERS_iset_flg
+#define TOPPERS_clr_flg
+#define TOPPERS_pol_flg
+
+/* dataqueue.c */
+#define TOPPERS_dtqini
+#define TOPPERS_dtqenq
+#define TOPPERS_dtqdeq
+#define TOPPERS_psnd_dtq
+#define TOPPERS_ipsnd_dtq
+#define TOPPERS_prcv_dtq
+
+
+#endif /* TOPPERS_ALLFUNC_H */
Index: uKadecot/trunk/ssp/kernel/check.h
===================================================================
--- uKadecot/trunk/ssp/kernel/check.h	(revision 101)
+++ uKadecot/trunk/ssp/kernel/check.h	(revision 101)
@@ -0,0 +1,230 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2011 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+/*
+ *  TOPPERS/ASP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		G[`FbNp}N
+ */
+
+#ifndef TOPPERS_CHECK_H
+#define TOPPERS_CHECK_H
+
+/*
+ *  ^XNDæxÌÍÍÌ»è
+ */
+#define VALID_TPRI(tpri)	(TMIN_TPRI <= (tpri) && (tpri) <= TMAX_TPRI)
+
+/*
+ *  ÝÔÌ`FbNiE_PARj
+ */
+#define CHECK_INTNO_DISINT(intno) {							\
+	if (!VALID_INTNO_DISINT(intno)) {						\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  »Ì¼Ìp[^G[Ì`FbNiE_PARj
+ */
+#define CHECK_PAR(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_PAR;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  IuWFNgIDÌÍÍÌ»è
+ */
+#define VALID_TSKID(tskid)	\
+	(((ID)TMIN_TSKID <= (tskid)) && ((ID)(tskid) <= tmax_tskid))
+#define VALID_FLGID(flgid)	\
+	(((ID)TMIN_FLGID <= (flgid)) && ((ID)(flgid) <= tmax_flgid))
+#define VALID_DTQID(dtqid)	\
+	(((ID)TMIN_DTQID <= (dtqid)) && ((ID)(dtqid) <= tmax_dtqid))
+#define VALID_CYCID(cycid)	\
+	((((ID)TMIN_CYCID) <= (cycid)) && ((ID)(cycid) <= tmax_cycid))
+#define VALID_ALMID(almid)	\
+	(((ID)TMIN_ALMID <= (almid)) && ((ID)(almid) <= tmax_almid))
+
+/*
+ *  IuWFNgIDÌ`FbNiE_IDj
+ */
+#define CHECK_TSKID(tskid) {								\
+	if ((!VALID_TSKID(tskid))) {							\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_TSKID_SELF(tskid) {							\
+	if (!(VALID_TSKID(tskid) || ((tskid) == TSK_SELF))) {	\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+
+#define CHECK_FLGID(flgid) {								\
+	if (!VALID_FLGID(flgid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_DTQID(dtqid) {								\
+	if (!VALID_DTQID(dtqid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_CYCID(cycid) {								\
+	if ((!VALID_CYCID(cycid))) {							\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_ALMID(almid) {								\
+	if (!VALID_ALMID(almid)) {								\
+		ercd = E_ID;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÄoµReLXgÌ`FbNiE_CTXj
+ */
+#define CHECK_TSKCTX() {									\
+	if (sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_INTCTX() {									\
+	if (!sense_context()) {									\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  ÄoµReLXgÆCPUbNóÔÌ`FbNiE_CTXj
+ */
+#define CHECK_TSKCTX_UNL() {								\
+	if ((sense_context()) || (t_sense_lock())) {			\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+#define CHECK_INTCTX_UNL() {								\
+	if ((!sense_context()) || (i_sense_lock())) {			\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+/*
+ *  »Ì¼ÌReLXgG[Ì`FbNiE_CTXj
+ */
+#define CHECK_CTX(exp) {									\
+	if (!(exp)) {											\
+		ercd = E_CTX;										\
+		goto error_exit;									\
+	}														\
+}
+
+#endif /* TOPPERS_CHECK_H */
Index: uKadecot/trunk/ssp/kernel/exception.c
===================================================================
--- uKadecot/trunk/ssp/kernel/exception.c	(revision 101)
+++ uKadecot/trunk/ssp/kernel/exception.c	(revision 101)
@@ -0,0 +1,71 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2010 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+
+/*
+ *		CPUáOÇ@\
+ */
+
+#include "kernel_impl.h"
+#include "exception.h"
+
+/* 
+ *  CPUáOnhÇ@\Ìú»
+ */
+
+#ifdef TOPPERS_excini
+#ifndef OMIT_INITIALIZE_EXCEPTION
+
+void
+initialize_exception(void)
+{
+	uint_t i;
+	
+	for (i = 0U ; i < tnum_excno; i++) {
+		x_define_exc(excinib_excno[i], (FP)(excinib_entry[i]));
+	}
+}
+
+#endif /* OMIT_INITIALIZE_EXCEPTION */
+#endif /* TOPPERS_excini */
Index: uKadecot/trunk/ssp/kernel/exception.h
===================================================================
--- uKadecot/trunk/ssp/kernel/exception.h	(revision 101)
+++ uKadecot/trunk/ssp/kernel/exception.h	(revision 101)
@@ -0,0 +1,76 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2011 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		CPUáOÇ@\
+ */
+
+#ifndef TOPPERS_EXCEPTION_H
+#define TOPPERS_EXCEPTION_H
+
+#ifndef OMIT_INITIALIZE_EXCEPTION
+
+extern const EXCNO	excinib_excno[];	/* CPUáOnhÔ */
+extern const ATR	excinib_excatr[];	/* CPUáOnh®« */
+extern const FP		excinib_entry[];	/* CPUáOnhÌoüûÌÔn */
+
+/*
+ *  CPUáOnhÔÌikernel_cfg.cj
+ */
+extern const uint_t	tnum_excno;
+
+
+#endif /* OMIT_INITIALIZE_EXCEPTION */
+
+/*
+ *  CPUáOnhÇ@\Ìú»
+ */
+extern void
+initialize_exception(void);
+
+
+#endif /* TOPPERS_EXCEPTION_H */
Index: uKadecot/trunk/ssp/kernel/interrupt.c
===================================================================
--- uKadecot/trunk/ssp/kernel/interrupt.c	(revision 101)
+++ uKadecot/trunk/ssp/kernel/interrupt.c	(revision 101)
@@ -0,0 +1,154 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2010-2011 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+
+/*
+ *		ÝÇ@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+#include "interrupt.h"
+
+
+/* 
+ *  ÝÇ@\Ìú»
+ */
+#ifdef TOPPERS_intini
+#ifndef OMIT_INITIALIZE_INTERRUPT
+
+void
+initialize_interrupt(void)
+{
+	uint_t			i;
+	
+	for (i = 0U; i < tnum_inhno; i++) {
+		x_define_inh(inhinib_inhno[i], (FP)(inhinib_entry[i]));
+	}
+	for (i = 0U; i < tnum_intno; i++) {
+		x_config_int(intinib_intno[i], intinib_intatr[i], intinib_intpri[i]);
+	}
+}
+
+#endif /* OMIT_INITIALIZE_INTERRUPT */
+#endif /* TOPPERS_intini */
+
+/*
+ *  ÝÌÖ~
+ */
+#ifdef TOPPERS_dis_int
+#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
+
+ER
+dis_int(INTNO intno)
+{
+	bool_t	locked;
+	ER		ercd;
+	
+	CHECK_TSKCTX();
+	CHECK_INTNO_DISINT(intno);
+	
+	locked = t_sense_lock();
+	
+	if (!locked) {
+		t_lock_cpu();
+	}
+	
+	if (t_disable_int(intno)) {
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_OBJ;
+	}
+	
+	if (!locked) {
+		t_unlock_cpu();
+	}
+
+  error_exit:
+	return(ercd);
+}
+
+#endif /* TOPPERS_SUPPORT_DIS_INT */
+#endif /* TOPPERS_dis_int */
+
+
+/*
+ *  ÝÌÂ
+ */
+#ifdef TOPPERS_ena_int
+#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
+
+ER
+ena_int(INTNO intno)
+{
+	bool_t	locked;
+	ER		ercd;
+
+	CHECK_TSKCTX();
+	CHECK_INTNO_DISINT(intno);
+
+	locked = t_sense_lock();
+	if (!locked) {
+		t_lock_cpu();
+	}
+	
+	if (t_enable_int(intno)) {
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_OBJ;
+	}
+	
+	if (!locked) {
+		t_unlock_cpu();
+	}
+
+  error_exit:
+	return(ercd);
+}
+
+#endif /* TOPPERS_SUPPORT_ENA_INT */
+#endif /* TOPPERS_ena_int */
Index: uKadecot/trunk/ssp/kernel/interrupt.h
===================================================================
--- uKadecot/trunk/ssp/kernel/interrupt.h	(revision 101)
+++ uKadecot/trunk/ssp/kernel/interrupt.h	(revision 101)
@@ -0,0 +1,90 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		ÝÇ@\
+ */
+
+#ifndef TOPPERS_INTERRUPT_H
+#define TOPPERS_INTERRUPT_H
+
+#ifndef OMIT_INITIALIZE_INTERRUPT
+
+/*
+ *  Ýnhú»ubNÌGAikernel_cfg.cj
+ */
+extern const INHNO	inhinib_inhno[];		/* ÝnhÔ */
+extern const ATR	inhinib_inhatr[];		/* Ýnh®« */
+extern const FP		inhinib_entry[];		/* ÝnhÌoüûÌÔn */
+
+/*
+ *  ÝvCú»ubNÌGAikernel_cfg.cj
+ */
+extern const INTNO	intinib_intno[];		/* ÝÔ */
+extern const ATR	intinib_intatr[];		/* Ý®« */
+extern const PRI	intinib_intpri[];		/* ÝDæx */
+
+/*
+ *  ÝnhÔÌikernel_cfg.cj
+ */
+extern const uint_t	tnum_inhno;
+
+/*
+ *  ÝvCÌikernel_cfg.cj
+ */
+extern const uint_t	tnum_intno;
+
+
+#endif /* OMIT_INITIALIZE_INTERRUPT */
+
+/*
+ *  ÝÇ@\Ìú»
+ */
+extern void
+initialize_interrupt(void);
+
+
+#endif /* TOPPERS_INTERRUPT_H */
Index: uKadecot/trunk/ssp/kernel/kernel.tf
===================================================================
--- uKadecot/trunk/ssp/kernel/kernel.tf	(revision 101)
+++ uKadecot/trunk/ssp/kernel/kernel.tf	(revision 101)
@@ -0,0 +1,1434 @@
+$ ======================================================================
+$ 
+$  TOPPERS/SSP Kernel
+$      Smallest Set Profile Kernel
+$ 
+$   Copyright (C) 2007 by TAKAGI Nobuhisa
+$   Copyright (C) 2007-2009 by Embedded and Real-Time Systems Laboratory
+$               Graduate School of Information Science, Nagoya Univ., JAPAN
+$   Copyright (C) 2010-2015 by Naoki Saito
+$               Nagoya Municipal Industrial Research Institute, JAPAN
+$ 
+$  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+$  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+$  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+$      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+$      R[hÉÜÜêÄ¢é±ÆD
+$  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+$      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+$      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+$      ØKèðfÚ·é±ÆD
+$  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+$      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+$    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+$         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+$        ·é±ÆD
+$  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+$      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+$      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+$      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$ 
+$  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+$  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+$  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+$  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+$  íÈ¢D
+$ 
+$ ======================================================================
+
+$ OoÍ
+$   wèµ½¾¯sªÉ^uðÂ¯Ä\¦·éD
+$   R[hyÑoÍÌÂÇ«ð°é½ßÉg¤D
+$     ø : ARGV[1] : sªÉ}ü·é^uÌ
+$     Ôl : ó¶ñ
+$     Ó : RESULTðìµÄ¢é½ßC¼ÌÖÌoÍðÛ¶·éOÉÄÑo·Æã«³êéD
+$ 
+$FUNCTION LOG$
+	$FOREACH i RANGE(1,ARGV[1])$$TAB$$END$
+	$RESULT = {}$
+$END$
+
+$ =====================================================================
+$ OÌ`FbN
+$ =====================================================================
+
+$ ^XNª1ÂÈã¶Ý·é±ÆÌ`FbN
+$IF !LENGTH(TSK.ID_LIST)$
+	$ERROR$$FORMAT("no task is registered")$$END$
+$END$
+
+$ =====================================================================
+$ kernel_cfg.h Ì¶¬
+$ =====================================================================
+
+$FILE "kernel_cfg.h"$
+
+/* kernel_cfg.h */$NL$
+#ifndef TOPPERS_KERNEL_CFG_H$NL$
+#define TOPPERS_KERNEL_CFG_H$NL$
+$NL$
+#define TNUM_TSKID	$LENGTH(TSK.ID_LIST)$$NL$
+#define TNUM_FLGID	$LENGTH(FLG.ID_LIST)$$NL$
+#define TNUM_DTQID	$LENGTH(DTQ.ID_LIST)$$NL$
+#define TNUM_CYCID	$LENGTH(CYC.ORDER_LIST)$$NL$
+#define TNUM_ALMID	$LENGTH(ALM.ORDER_LIST)$$NL$
+$NL$
+
+$ // ^XNIDðN®Dæx(tskapri)Ì¢É reallocate_tskapri ÖèÄC
+$ // è`ð kernel_cfg.h ÖoÍ·éD
+$tsk_apriorder_list={}$
+$tsk_epri_list={}$
+$tsk_index = 1$
+$FOREACH id SORT(TSK.ORDER_LIST, "TSK.ATSKPRI")$
+	$tsk_apriorder_list = APPEND(tsk_apriorder_list, TSK.TSKID[id])$
+	$reallocate_tskapri[TSK.TSKID[id]] = tsk_index$
+	#define $TSK.TSKID[id]$	$tsk_index$$NL$
+
+$	DEF_EPR Åè`³êÄ¢È¢^XNÌÀsDæxªCN®DæxÆ¯¶ÉÈéæ¤É·éD
+	$tsk_epri_list = APPEND(tsk_epri_list, ALT(TSK.EXEPRI[TSK.TSKID[id]], TSK.ATSKPRI[TSK.TSKID[id]]))$
+	$tsk_index = tsk_index + 1$
+$END$
+$FOREACH id FLG.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id DTQ.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id CYC.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+$FOREACH id ALM.ID_LIST$
+	#define $id$	$+id$$NL$
+$END$
+
+#endif /* TOPPERS_KERNEL_CFG_H */$NL$
+
+$ =====================================================================
+$ kernel_cfg.cÌ¶¬
+$ =====================================================================
+
+$FILE "kernel_cfg.c"$
+
+/* kernel_cfg.c */$NL$
+#include "kernel/kernel_int.h"$NL$
+#include "kernel_cfg.h"$NL$
+$NL$
+#ifndef TOPPERS_EMPTY_LABEL$NL$
+#define TOPPERS_EMPTY_LABEL(x,y) x y[0]$NL$
+#endif$NL$
+$NL$
+
+$ ---------------------------------------------------------------------
+$  CN[hfBNeBui#includej
+$ ---------------------------------------------------------------------
+/*$NL$
+$SPC$*  Include Directives (#include)$NL$
+$SPC$*/$NL$
+$NL$
+$INCLUDES$
+$NL$
+
+$ ---------------------------------------------------------------------
+$  IuWFNgÌIDÔðÛ·éÏ
+$ ---------------------------------------------------------------------
+$IF USE_EXTERNAL_ID$
+	/*$NL$
+	$SPC$*  Variables for Object ID$NL$
+	$SPC$*/$NL$
+	$NL$
+	$FOREACH id TSK.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id FLG.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id DTQ.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id CYC.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+	$FOREACH id ALM.ID_LIST$
+		const ID $id$_id$SPC$=$SPC$$+id$;$NL$
+	$END$
+$END$
+
+$ ---------------------------------------------------------------------
+$  g[XO}NÌftHgè`
+$ ---------------------------------------------------------------------
+/*$NL$
+$SPC$*  Default Definitions of Trace Log Macros$NL$
+$SPC$*/$NL$
+$NL$
+#ifndef LOG_ISR_ENTER$NL$
+#define LOG_ISR_ENTER(intno)$NL$
+#endif /* LOG_ISR_ENTER */$NL$
+$NL$
+#ifndef LOG_ISR_LEAVE$NL$
+#define LOG_ISR_LEAVE(intno)$NL$
+#endif /* LOG_ISR_LEAVE */$NL$
+$NL$
+
+
+$ ---------------------------------------------------------------------
+$  ^XNÉÖ·éoÍ
+$ ---------------------------------------------------------------------
+
+$ 
+$ ÀsDæxÌRtBM
+[VÉ¬÷µ½©Ç¤©
+$ 
+$ DEF_EPR ÉG[ª­¶µ½êC±ÌÏª0ÉÈéD
+$ DEF_EPR ÉG[ª­¶µ½©Ç¤©ð»fµÄ
+$ ÁèÌÀsðubN·é½ßÉgp·éD
+$ 
+$configurated_defepr_successfully = 1$
+
+/*$NL$
+$SPC$*  Task Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ ^XNIDÔÌÅål
+const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);$NL$
+$NL$
+
+$ ready_primap Ìúl
+$init_rdypmap = 0$
+$tsk_index = 1$
+
+$ ^XN®«D
+const ATR     	_kernel_tinib_tskatr[TNUM_TSKID]    = {
+$JOINEACH tskid tsk_apriorder_list ","$
+$	// TA_ACT , TA_RSTR Ü½Í TA_NULL Å éiE_RSATRj
+	$IF (TSK.TSKATR[tskid] & ~(TA_ACT | TA_RSTR | ALT(TARGET_TSKATR,0))) != 0$
+		$ERROR TSK.TEXT_LINE[tskid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "tskatr", TSK.TSKATR[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+
+	($TSK.TSKATR[tskid]$)
+	
+	$IF TSK.TSKATR[tskid] & TA_ACT$
+		$init_rdypmap = init_rdypmap + tsk_index$
+	$END$
+	$tsk_index = tsk_index << 1$
+$END$
+};$NL$
+
+const uint_t$TAB$_kernel_init_rdypmap = $init_rdypmap$U;$NL$
+
+$ g£îñ(exinf)D G[ÍRpCÜ½ÍAvÌeXgÅo·é½ßC±±ÅÍµÈ¢D
+const intptr_t	_kernel_tinib_exinf[TNUM_TSKID]     = {
+$JOINEACH tskid tsk_apriorder_list ","$
+	(intptr_t)($TSK.EXINF[tskid]$)
+$END$
+};$NL$
+
+$ N®Ôn(task)DG[ÍRpCÜ½ÍAvÌeXgÅo·é½ßC±±ÅÍµÈ¢D
+const TASK    	_kernel_tinib_task[TNUM_TSKID]      = {
+$JOINEACH tskid tsk_apriorder_list ","$
+	($TSK.TASK[tskid]$)
+$END$
+};$NL$
+
+$ N®Dæx(atskpri)D
+$FOREACH tskid tsk_apriorder_list$
+$	// atskpri Í TMIN_TPRI ÈãCTMAX_TPRI ÈºÅ éDiE_PARj
+ 	$IF !(TMIN_TPRI <= TSK.ATSKPRI[tskid] && TSK.ATSKPRI[tskid] <= TMAX_TPRI)$
+ 		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "atskpri", TSK.ATSKPRI[tskid], tskid, "CRE_TSK")$$END$
+ 	$END$
+
+$	// atskpri Íd¡ªÈ¢DiE_PARj
+	$FOREACH tskid2 tsk_apriorder_list$
+		$IF tskid != tskid2 && TSK.ATSKPRI[tskid] == TSK.ATSKPRI[tskid2] $
+			$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("%1% of %2% (%3%) in %4% is duplicated"), "atskpri", tskid, TSK.ATSKPRI[tskid], "CRE_TSK")$$END$
+		$END$
+	$END$
+$END$
+
+$ ÀsDæx(exepri)D
+const uint_t  	_kernel_tinib_epriority[TNUM_TSKID] = {
+$epri_allocated = 0$
+$tsk_index = 0$
+$JOINEACH tskid tsk_apriorder_list ","$
+	$epri = AT(tsk_epri_list, tsk_index)$
+
+$	// exepri Í TMIN_TPRI Èã©Â TMAX_TPRI ÈºÅ éD(E_PAR)
+	$IF TMIN_TPRI > epri || TMAX_TPRI < epri$
+		$configurated_defepr_successfully = 0$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "exepri", epri, tskid, "DEF_EPR")$$END$
+	$END$
+
+$	// exepri Í atskpri ÈºÌlðàÂ(DæxÆµÄÍ¯¶©»êæè¢)D(E_ILUSE)
+	$IF epri <= TMAX_TPRI && epri > TSK.ATSKPRI[tskid]$
+		$configurated_defepr_successfully = 0$
+		$ERROR TSK.TEXT_LINE[tskid]$E_ILUSE: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "exepri", epri, tskid, "DEF_EPR")$$END$
+	$END$
+
+$	// exepri Ìà\»ðèµ reallocate_tskepri Éi[D
+	$FOREACH tskid2 tsk_apriorder_list $
+	 	$IF epri_allocated != 1 && epri <= TSK.ATSKPRI[tskid2]$
+			INT_PRIORITY($reallocate_tskapri[TSK.TSKID[tskid2]]$)
+				$reallocate_tskepri[tskid] = reallocate_tskapri[TSK.TSKID[tskid2]]$
+			$epri_allocated = 1$
+		$END$
+	$END$
+	$epri_allocated = 0$
+	$tsk_index = tsk_index + 1$
+$END$
+};$NL$$NL$
+
+$ 
+$ // DæxèÄÊðoÍ
+$ 
+/*$NL$
+$SPC$* Task priority configuration result:$NL$
+$FOREACH tskid SORT(TSK.ORDER_LIST, "TSK.ATSKPRI")$
+$SPC$*  $TAB$$TSK.TSKID[tskid]$:$TAB$ IPRI = $reallocate_tskapri[TSK.TSKID[tskid]]$, EXEPRI = $reallocate_tskepri[tskid]$$NL$
+$END$
+$SPC$*/$NL$$NL$
+
+$ 
+$  ^XNÌÅåX^bNgpÊÌvZ
+$ 
+
+$ X^bNTCYÉÖ·éG[`FbN
+$FOREACH tskid TSK.ID_LIST$
+$	// stkszª0©C^[Qbgè`ÌÅ¬liTARGET_MIN_STKSZjæèà¬³¢êiE_PARj
+	$IF TSK.STKSZ[tskid] == 0 || (LENGTH(TARGET_MIN_STKSZ) && 
+										TSK.STKSZ[tskid] < TARGET_MIN_STKSZ)$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("%1% `%2%\' of `%3%\' in %4% is too small"), "stksz", TSK.STKSZ[tskid], tskid, "CRE_TSK")$$END$
+	$END$
+$END$
+
+$  
+$ Öè`
+$ 
+$ 
+$ Ö1: N®DæxÌá¢É\[eBO·é½ßÌärÖ
+$ 
+$FUNCTION compare_tskapri_rev$
+	$RESULT = reallocate_tskapri[ARGV[2]] - reallocate_tskapri[ARGV[1]]$
+$END$
+
+$ 
+$ Ö2: wèµ½^XNÉÎ·éX^bNgpÊÌÅåðvZ·éÖ
+$    ø : ARGV[1] : ^XNID(à\», N®DæxÌà\»Éµ¢)
+$    Ôl : RESULT  : Y^XNÉÎ·éX^bNgpÊÌÅålD
+$                     ±ÌlÍCY^XNÌÀsJn©çI¹ÜÅÌÔÉ
+$                     »Ì^XNÉÎ·évGvgðl¶µÄX^bNgpÊð
+$                     vZµ½êÉCÂ\«Ì égÝí¹ÌÅÅåÆÈélðÔ·D
+$ 
+$nest_level = 0$
+$ 
+$FUNCTION calc_stksz$
+$	// ÏXg
+	$nest_level = nest_level + 1$
+	$arg[nest_level] = ARGV[1]$
+	$calculated_stack_size = 0$
+
+$	// Jn
+$SPC$* $LOG(nest_level-1)$Calculation start (Task ID = $arg[nest_level]$, StackSize[$arg[nest_level]$]=$TSK.STKSZ[arg[nest_level]]$)$NL$
+
+$	// wèµ½^XNID ÌX^bNvZª®¹µÄ¢é©
+	$IF	LENGTH(done[arg[nest_level]]) == 0$
+
+$SPC$* $LOG(nest_level)$Task list with higher priority than $arg[nest_level]$ = $higher_pri_tsklist[arg[nest_level]]$$NL$
+
+$		// (1) ®¹µÄ¢È¢ê
+$		// ÏÌú»
+		$max_stksz[arg[nest_level]] = 0$
+		$higher_pri_maxstksz[arg[nest_level]] = 0$
+
+$		// Y^XNID ÌÀsDæxæè¢N®DæxðÂ^XNª¶Ý·éê
+		$IF LENGTH(higher_pri_tsklist[arg[nest_level]]) > 0$
+$			// »ê¼êÌDæx^XNÉÎµ
+			$FOREACH id higher_pri_tsklist[arg[nest_level]]$
+$				// ÄAÄo·éÆÏªã«³êé½ßCÛ¶µÄ¨­
+				$id_saved[nest_level] = id$
+$				// X^bNvZðÀs·é
+				$calculated_stack_size = calc_stksz(id_saved[nest_level])$
+$				// Û¶µ½ÏðA
+				$id = id_saved[nest_level]$
+
+				$IF higher_pri_maxstksz[arg[nest_level]] < calculated_stack_size$
+$					// L¯µÄ¨­
+					$higher_pri_maxstksz[arg[nest_level]] = calculated_stack_size$
+				$END$
+			$END$
+		$END$
+
+$SPC$* $LOG(nest_level)$higher_pri_maxstksz[$arg[nest_level]$] = $higher_pri_maxstksz[arg[nest_level]]$$NL$
+
+$		// Dæx^XNÌX^bNgpÊÉCY^XNÌgpÊðÁZ·é
+		$max_stksz[arg[nest_level]] = higher_pri_maxstksz[arg[nest_level]] + TSK.STKSZ[arg[nest_level]]$
+
+$SPC$* $LOG(nest_level)$DONE(max_stksz[$arg[nest_level]$] = $max_stksz[arg[nest_level]]$)$NL$
+
+$		// Y^XNIDÉÎµÄÍvZðÏÜ¹½Æ¢¤L^ðcµÄ¨­
+		$done[arg[nest_level]] = 1$
+
+	$ELSE$
+$		// (2) vZªùÉ®¹µÄ¢éêCvZðXLbv·éD
+
+$SPC$* $LOG(nest_level)$SKIP(max_stksz[$arg[nest_level]$] = $max_stksz[arg[nest_level]]$)$NL$
+	$END$
+
+$	// ©ÏàèÌÅålðÔ·
+	$RESULT = max_stksz[arg[nest_level]]$
+	$nest_level = nest_level - 1$
+$END$
+
+$ 
+$ Öè`±±ÜÅC±±©çX^bNvZÌJn
+$ 
+
+$ 
+$ Ü¸ÍØ\¢Ìf[^\¢ì¬
+$ 
+$FOREACH id LSORT(tsk_apriorder_list, "compare_tskapri_rev")$
+
+$	// e^XNÉC»ÌÀsDæxæèà¢N®DæxðÂ^XNÌXgðìéD
+$	// »êÍvGvg³êéÂ\«Ì é^XNÌêÆÈéD
+	$FOREACH id2 LSORT(tsk_apriorder_list, "compare_tskapri_rev")$
+		$IF reallocate_tskepri[id] > reallocate_tskapri[id2]$
+			$higher_pri_tsklist[id] = APPEND(higher_pri_tsklist[id], id2)$
+		$END$
+	$END$
+
+$	// vGvg·éE³êéÖWð¦·Ø\¢Ìª(root)ÆÈé^XNÌTõD
+$	//   ÎÛ^XN(id)ÌN®Dæx(reallocate_tskapri[id])æèá¢
+$	//   (lÆµÄÍå«¢)N®DæxðàÂ^XNÌ higher_pri_tsklist ÉC
+$	//   ÎÛ^XN(id) ªÜÜêÈ¯êÎCªÆÈéD
+	$is_root = 1$
+	$FOREACH id2 LSORT(tsk_apriorder_list, "compare_tskapri_rev")$
+		$IF (is_root == 1) && (reallocate_tskapri[id] < reallocate_tskapri[id2])$
+			$IF LENGTH(FIND(higher_pri_tsklist[id2], id)) > 0$
+				$is_root = 0$
+			$END$
+		$END$
+	$END$
+$	// ª(root)ÆÈé^XNÈçÎCXgÖÇÁ
+	$IF is_root == 1$
+		$root_apri = APPEND(root_apri, id)$
+	$END$
+$END$
+
+$ 
+$ oÍJn
+$ 
+
+/* $NL$
+$SPC$* Task Stack Size Estimation: $NL$
+$SPC$* $NL$
+
+$ // ªÆÈée^XNÉÎµÄC»ÌÅå^XNgpÊðvZµCXgÖÇÁ·éD
+$FOREACH root_id root_apri$
+	$stksz_estimated = APPEND(stksz_estimated, calc_stksz(root_id))$
+$END$
+
+$ // ^XNÌX^bNgpÊÌÅålðè
+$ // XgÌvfÌÅålª^XNÌÅåX^bNgpÊÆÈéD
+$max_tsk_stksz = 0$
+$FOREACH size stksz_estimated$
+	$IF size > max_tsk_stksz$
+		$max_tsk_stksz = size$
+	$END$
+$END$
+
+$ // mF
+$SPC$* List of Estimated Total Stack Sizes of Tasks = $stksz_estimated$$NL$
+$SPC$* Estimated Maximum Total Stack Size of Tasks = $max_tsk_stksz$$NL$
+$SPC$*/ $NL$
+#define TOPPERS_TSTKSZ		($max_tsk_stksz$)$NL$$NL$
+
+
+$ SÄÌPÊÌX^bNÍ¤L³êéD
+$ »Ì½ßCX^bNTCYÉÖ·é`FbNÍ
+$ ¤LX^bNÝèÌÆ±ëÅÜÆßÄs¤D
+
+$ X^bNÌæªÔn(stk)D
+$FOREACH tskid tsk_apriorder_list$
+$	// íÉ NULL Å éD(E_PAR)
+	$IF !EQ(TSK.STK[tskid], "NULL")$
+		$ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(("'%1%' of %2% must be NULL."), "stk", "CRE_TSK")$$END$
+	$END$
+$END$
+
+$ ---------------------------------------------------------------------
+$  CxgtO
+$ ---------------------------------------------------------------------
+/*$NL$
+$SPC$*  Eventflag Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Ggª (UINT8_MAX - TMIN_FLGID)Âæè½¢êÍCG[Æ·é --> »_ÅÍRgAEg
+$ $IF LENGTH(ALM.ORDER_LIST) > (UINT8_MAX - TMIN_FLGID)$
+$ 	$ERROR$$FORMAT("The number of CRE_FLG must be equal to or less than (UINT8_MAX - TMIN_FLGID).")$$END$
+$ $END$
+
+$ CxgtOIDÔÌÅål
+const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);$NL$
+$NL$
+
+$	// iflgptnªFLGPTNÉi[Å«È¢êiE_PARj 
+$FOREACH flgid FLG.ORDER_LIST$
+	$IF (FLG.IFLGPTN[flgid] & ~((1 << TBIT_FLGPTN) - 1)) != 0$ 
+		$ERROR FLG.TEXT_LINE[flgid]$E_PAR: $FORMAT(_("too large %1% `%2%\' of `%3%\' in %4%"), "iflgptn", FLG.IFLGPTN[flgid], flgid, "CRE_FLG")$$END$ 
+	$END$ 
+$END$
+
+$ CxgtOú»ubNÌ¶¬
+$IF LENGTH(FLG.ID_LIST)$
+
+$	CxgtO®«
+	const ATR _kernel_flginib_atr[TNUM_FLGID] = {
+		$JOINEACH flgid FLG.ORDER_LIST ","$
+$			// flgatrªimTA_CLRnjÅÈ¢êiE_RSATRj
+			$IF (FLG.FLGATR[flgid] & ~(TA_CLR)) != 0$
+				$ERROR FLG.TEXT_LINE[flgid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "flgatr", FLG.FLGATR[flgid], flgid, "CRE_FLG")$$END$
+			$END$
+			($FLG.FLGATR[flgid]$)
+		$END$
+	};$NL$
+	
+$	CxgtOp^[Ìúl
+	const FLGPTN _kernel_flginib_iflgptn[TNUM_FLGID] = {
+		$JOINEACH flgid FLG.ORDER_LIST ","$
+			($FLG.IFLGPTN[flgid]$)
+		$END$
+	};$NL$
+
+$       // CxgtOÌ»ÝÌtOp^[ði[·éÏ
+        FLGPTN _kernel_flgcb_flgptn[TNUM_FLGID];$NL$
+$ELSE$
+        TOPPERS_EMPTY_LABEL(const ATR, _kernel_flginib_atr);$NL$
+        TOPPERS_EMPTY_LABEL(const FLGPTN, _kernel_flginib_iflgptn);$NL$
+        TOPPERS_EMPTY_LABEL(FLGPTN, _kernel_flgcb_flgptn);$NL$
+$END$
+$NL$
+
+$ ---------------------------------------------------------------------
+$  f[^L
+[
+$ ---------------------------------------------------------------------
+/*$NL$
+$SPC$*  Dataqueue Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ f[^L
+[IDÔÌÅål
+const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);$NL$
+$NL$
+
+$IF LENGTH(DTQ.ID_LIST)$
+        $FOREACH dtqid DTQ.ORDER_LIST$
+$               // dtqatrª TA_NULL ÅÈ¢êiE_RSATRj
+                $IF (DTQ.DTQATR[dtqid] != TA_NULL) $
+                        $ERROR DTQ.TEXT_LINE[dtqid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqatr", DTQ.DTQATR[dtqid], dtqid, "CRE_DTQ")$$END$
+                $END$
+
+$               // dtqmbªNULLÅÈ¢êiE_NOSPTj
+                $IF !EQ(DTQ.DTQMB[dtqid], "NULL")$
+                        $ERROR DTQ.TEXT_LINE[dtqid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqmb", DTQ.DTQMB[dtqid], dtqid, "CRE_DTQ")$$END$
+                $END$
+
+$               // dtqcntª0Å éê
+                $IF EQ(+DTQ.DTQCNT[dtqid], 0)$
+                        $ERROR DTQ.TEXT_LINE[dtqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqmb", DTQ.DTQCNT[dtqid], dtqid, "CRE_DTQ")$$END$
+                $END$
+				
+
+$               // f[^L
+[Ìæ
+                $IF DTQ.DTQCNT[dtqid]$
+                        static intptr_t _kernel_dtqmb_$dtqid$[$DTQ.DTQCNT[dtqid]$];$NL$
+                $END$
+        $END$
+
+$       // f[^L
+[ú»ubNÌ¶¬(®«)
+        const ATR _kernel_dtqinib_atr[TNUM_DTQID] = {
+        	$JOINEACH dtqid DTQ.ORDER_LIST ",\n"$
+            	$SPC$($DTQ.DTQATR[dtqid]$)
+        	$END$
+        };$NL$
+        $NL$
+
+$       // f[^L
+[ú»ubNÌ¶¬(TCY)
+        const uint8_t _kernel_dtqinib_size[TNUM_DTQID] = {
+        	$JOINEACH dtqid DTQ.ORDER_LIST ",\n"$
+            	$SPC$($DTQ.DTQCNT[dtqid]$)
+        	$END$
+        };$NL$
+        $NL$
+
+$       // f[^L
+[ú»ubNÌ¶¬(ÇÌæ)
+        intptr_t * const _kernel_dtqinib_data[TNUM_DTQID] = {
+        	$JOINEACH dtqid DTQ.ORDER_LIST ",\n"$
+            	$IF DTQ.DTQCNT[dtqid]$(_kernel_dtqmb_$dtqid$)$ELSE$NULL$END$
+        	$END$
+        };$NL$
+        $NL$
+
+$       // f[^L
+[Rg[ubN
+        uint8_t _kernel_dtqcb_count[TNUM_DTQID];$NL$
+        uint8_t _kernel_dtqcb_head[TNUM_DTQID];$NL$
+        uint8_t _kernel_dtqcb_tail[TNUM_DTQID];$NL$
+$ELSE$
+        TOPPERS_EMPTY_LABEL(const ATR, _kernel_dtqinib_atr);$NL$
+        TOPPERS_EMPTY_LABEL(intptr_t * const, _kernel_dtqinib_data);$NL$
+        TOPPERS_EMPTY_LABEL(const uint8_t, _kernel_dtqinib_size);$NL$
+        TOPPERS_EMPTY_LABEL(uint8_t, _kernel_dtqcb_count);$NL$
+        TOPPERS_EMPTY_LABEL(uint8_t, _kernel_dtqcb_head);$NL$
+        TOPPERS_EMPTY_LABEL(uint8_t, _kernel_dtqcb_tail);$NL$
+$END$
+$NL$
+
+
+$ ---------------------------------------------------------------------
+$  ÝÇ@\
+$ ---------------------------------------------------------------------
+/*$NL$
+$SPC$*  Interrupt Management Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ // INTNO_ATTISR_VALID Ìvfªd¡µÄ¢È¢©Ç¤©Ì`FbN
+$i = 0$
+$FOREACH intno INTNO_ATTISR_VALID$
+	$j = 0$
+	$FOREACH intno2 INTNO_ATTISR_VALID$
+		$IF i < j && intno == intno2$
+			$ERROR$ $FORMAT(_("intno (%1%) of INTNO_ATTISR_VALID is duplicated"), intno)$$END$
+		$END$
+		$j = j + 1$
+	$END$
+	$i = i + 1$
+$END$
+
+$ // INHNO_ATTISR_VALID Ìvfªd¡µÄ¢È¢©Ç¤©Ì`FbN
+$i = 0$
+$FOREACH intno INHNO_ATTISR_VALID$
+	$j = 0$
+	$FOREACH intno2 INHNO_ATTISR_VALID$
+		$IF i < j && intno == intno2$
+			$ERROR$ $FORMAT(_("intno (%1%) of INHNO_ATTISR_VALID is duplicated"), intno)$$END$
+		$END$
+		$j = j + 1$
+	$END$
+	$i = i + 1$
+$END$
+
+
+$ // ATT_ISR ÅgpÂ\ÈÝÔÆC»êÉÎ·éÝnhÔÌª¯¶©Ç¤©
+$ // eXgÌvfÍd¡µÄ¢È¢±ÆðOñÆµÄ¢éD
+$IF LENGTH(INTNO_ATTISR_VALID) != LENGTH(INHNO_ATTISR_VALID)$
+	$ERROR$length of `INTNO_ATTISR_VALID' is different from length of `INHNO_ATTISR_VALID'$END$
+$END$
+
+
+$ // ÝÔÆÝnhÔÌÏ·e[uÌì¬
+$ //  ÝÔÌXgÆÝnhÔÌXgÍÎ·évfª¯¶ÔÅ
+$ //  »êéæ¤ÉÀ×çêÄ¢é±ÆðOñÆ·éD
+$i = 0$
+$FOREACH intno INTNO_ATTISR_VALID$
+
+$	// INTNO_ATTISR_VALID ÉÜÜêélÍ INTNO_CFGINT_VALID ÉàÜÜêé×«Å éD
+$	// INTNO_ATTISR_VALID Í INTNO_CFGINT_VALID ÌªWÉÈéÍ¸D
+	$IF LENGTH(FIND(INTNO_CFGINT_VALID, intno)) == 0$
+		$ERROR$all elements of `INTNO_ATTISR_VALID' must be included in `INTNO_CFGINT_VALID'$END$
+	$END$
+
+	$inhno = AT(INHNO_ATTISR_VALID, i)$
+	$INHNO[intno] = inhno$
+	$INTNO[inhno] = intno$
+	$i = i + 1$
+$END$
+
+
+$ // INTNO_CFGINT_VALID Ìvfª INTNO_VALID ÉÜÜêé©Ç¤©Ì`FbN
+$ // INTNO_CFGINT_VALID Í INTNO_VALID ÌªWÉÈéÍ¸D
+$FOREACH intno INTNO_CFGINT_VALID$
+	$IF LENGTH(FIND(INTNO_VALID, intno)) == 0$
+		$ERROR$all elements of `INTNO_CFGINT_VALID' must be included in `INTNO_VALID'$END$
+	$END$
+$END$
+
+
+$ // INHNO_ATTISR_VALID Ìvfª INHNO_VALID ÉÜÜêé©Ç¤©Ì`FbN
+$ // INHNO_ATTISR_VALID Í INHNO_VALID ÌªWÉÈéÍ¸D
+$FOREACH inhno INHNO_ATTISR_VALID$
+	$IF LENGTH(FIND(INHNO_VALID, inhno)) == 0$
+		$ERROR$all elements of `INHNO_ATTISR_VALID' must be included in `INHNO_VALID'$END$
+	$END$
+$END$
+
+
+$ // ÝvCÉÖ·éG[`FbN
+$i = 0$
+$FOREACH intno INT.ORDER_LIST$
+$	// intnoªCFG_INTÉÎ·éÝÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INTNO_CFGINT_VALID, INT.INTNO[intno]))$
+		$ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", INT.INTNO[intno], "CFG_INT")$$END$
+	$END$
+
+$	// intnoªCFG_INTÉæÁÄÝèÏÝÌêiE_OBJj
+	$j = 0$
+	$FOREACH intno2 INT.ORDER_LIST$
+ 		$IF INT.INTNO[intno] == INT.INTNO[intno2] && j < i$
+			$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated"), "intno", INT.INTNO[intno], "CFG_INT")$$END$
+		$END$
+		$j = j + 1$
+	$END$
+
+$	// intatrª TA_ENAINT, TA_EDGE, Ü½Í»Ì¼^[QbgÅpÂ\È®«Ì¢¸êÅàÈ¢êiE_RSATRj
+	$IF (INT.INTATR[intno] & ~(TA_ENAINT|TA_EDGE|ALT(TARGET_INTATR,0))) != 0$
+		$ERROR INT.TEXT_LINE[intno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "intatr", INT.INTATR[intno], "intno", INT.INTNO[intno], "CFG_INT")$$END$
+	$END$
+
+$	// intpriªCFG_INTÉÎ·éÝDæxÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INTPRI_CFGINT_VALID, INT.INTPRI[intno]))$
+		$ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intpri", INT.INTPRI[intno], "CFG_INT")$$END$
+	$END$
+
+$	// J[lÇÌÝÆµÄÅè³êÄ¢éÝÉCTMIN_INTPRI æèà¬³¢lªwè³ê½êiE_OBJj
+	$IF LENGTH(FIND(INTNO_FIX_KERNEL, intno))$
+		$IF INT.INTPRI[intno] < TMIN_INTPRI$
+			$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' must not have higher priority than %3%"), "intno", INT.INTNO[intno], "TMIN_INTPRI")$$END$
+		$END$
+	$END$
+
+$	// J[lÇOÌÝÆµÄÅè³êÄ¢éÝÉCTMIN_INTPRI æèà¬³¢lªwè³êÈ©Á½êiE_OBJj
+	$IF LENGTH(FIND(INTNO_FIX_NONKERNEL, intno))$
+		$IF INT.INTPRI[intno] >= TMIN_INTPRI$
+			$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' must have higher priority than %3%"), "intno", INT.INTNO[intno], "TMIN_INTPRI")$$END$
+		$END$
+	$END$
+	$i = i + 1$
+$END$
+
+
+$ ÝnhÉÖ·éG[`FbN
+$i = 0$
+$FOREACH inhno INH.ORDER_LIST$
+$	// ÝnhÔ(inhno)ª³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INHNO_DEFINH_VALID, INH.INHNO[inhno]))$
+		$ERROR INH.TEXT_LINE[inhno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
+	$END$
+
+$	// ¯¶ÝnhÔÉÎ·éDEF_INHª¡¶Ý·éêiE_OBJj
+	$j = 0$
+	$FOREACH inhno2 INH.ORDER_LIST$
+		$IF INH.INHNO[inhno] == INH.INHNO[inhno2] && j < i$
+			$ERROR INH.TEXT_LINE[inhno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated"), "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
+		$END$
+		$j = j + 1$
+	$END$
+
+$	// Ýnh®«(inhatr) ª TA_NULL, TA_NONKERNEL, yÑ»Ì¼^[QbgË¶ÅpÂ\È®«Ì¢¸êÅàÈ¢iE_RSATRj
+	$IF (INH.INHATR[inhno] & ~(TA_NONKERNEL|ALT(TARGET_INHATR,0))) != 0$
+		$ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "inhatr", INH.INHATR[inhno], "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
+	$END$
+
+$	// J[lÇÉÅè³êÄ¢éÝnhÉCTA_NONKERNEL ®«ªÝè³êÄ¢éiE_RSATRj
+	$IF LENGTH(FIND(INHNO_FIX_KERNEL, inhno))$
+		$IF (INH.INHATR[inhno] & TA_NONKERNEL) != 0$
+			$ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("%1% `%2%\' must not be non-kernel interrupt"), "inhno", INH.INHNO[inhno])$$END$
+		$END$
+	$END$
+
+$	// J[lÇOÉÅè³êÄ¢éÝnhÉCTA_NONKERNEL ®«ªÝè³êÄ¢È¢iE_RSATRj
+	$IF LENGTH(FIND(INHNO_FIX_NONKERNEL, inhno))$
+		$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+			$ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("%1% `%2%\' must be non-kernel interrupt"), "inhno", INH.INHNO[inhno])$$END$
+		$END$
+	$END$
+
+
+$	// ÝÔÆ1Î1Î·éÝnhÔ(ATT_ISRÅwèÂ\ÈÝnhÔ)ÍCÈºÌ`FbNàs¤D
+$	// INHNO_ATTISR_VALID ÉÜÜêÈ¢ÝnhÔÍ`FbN³êÈ¢±ÆÉÈéD
+	$IF LENGTH(INTNO[INH.INHNO[inhno]]) > 0$
+		$intno = INTNO[INH.INHNO[inhno]]$
+
+$		// Ýnho^æÌÝvCª®«Ýè³êÄ¢È¢(CFG_INTªÈ¢)iE_OBJj
+		$IF !LENGTH(INT.INTNO[intno])$
+			$ERROR INH.TEXT_LINE[inhno]$E_OBJ: $FORMAT(_("%1% `%2%\' corresponding to %3% `%4%\' is not configured with %5%"), "intno", INT.INTNO[intno], "inhno", INH.INHNO[inhno], "CFG_INT")$$END$
+		$ELSE$
+			$IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
+$				// inhatrÉTA_NONKERNELªwè³êÄ¨ç¸CinhnoÉÎ
+$				// ·éintnoÉÎµÄCFG_INTÅÝè³ê½ÝDæxª
+$				// TMIN_INTPRIæèà¬³¢êiE_OBJj
+				$IF INT.INTPRI[intno] < TMIN_INTPRI$
+					$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is higher than %5%"), "intpri", INT.INTPRI[intno], "inhno", INH.INHNO[inhno], "TMIN_INTPRI")$$END$
+				$END$
+			$ELSE$
+$				// inhatrÉTA_NONKERNELªwè³êÄ¨èCinhnoÉÎ
+$				// ·éintnoÉÎµÄCFG_INTÅÝè³ê½ÝDæxª
+$				// TMIN_INTPRIÈãÅ éêiE_OBJj
+				$IF INT.INTPRI[intno] >= TMIN_INTPRI$
+					$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is lower than or equal to %5%"), "intpri", INT.INTPRI[intno], "inhno", INH.INHNO[inhno], "TMIN_INTPRI")$$END$
+				$END$
+			$END$
+		$END$
+	$END$
+	$i = i + 1$
+$END$
+
+$ ÝT[rX[`iISRjÉÖ·éG[`FbNÆÝnhÌ¶¬
+$FOREACH order ISR.ORDER_LIST$
+$	// isratrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF (ISR.ISRATR[order] & ~ALT(TARGET_ISRATR,0)) != 0$
+		$ERROR ISR.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "isratr", ISR.ISRATR[order], "isr", ISR.ISR[order], "ATT_ISR")$$END$
+	$END$
+
+$	// intnoªATT_ISRÉÎ·éÝÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(INTNO_ATTISR_VALID, ISR.INTNO[order]))$
+		$ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", ISR.INTNO[order], "ATT_ISR")$$END$
+	$END$
+
+$	// (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)ÅÈ¢êiE_PARj
+	$IF !(TMIN_ISRPRI <= ISR.ISRPRI[order] && ISR.ISRPRI[order] <= TMAX_ISRPRI)$
+		$ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "isrpri", ISR.ISRPRI[order], "ATT_ISR")$$END$
+	$END$
+$END$
+
+
+$FOREACH intno INTNO_ATTISR_VALID$
+	$inhno = INHNO[intno]$
+
+$	// ÝÔintnoÉÎµÄo^³ê½ISRÌXgÌì¬
+	$isr_order_list = {}$
+	$FOREACH order ISR.ORDER_LIST$
+		$IF ISR.INTNO[order] == intno$
+			$isr_order_list = APPEND(isr_order_list, order)$
+			$order_for_error = order$
+		$END$
+	$END$
+
+$	// ÝÔintnoÉÎµÄo^³ê½ISRª¶Ý·éê
+	$IF LENGTH(isr_order_list) > 0$
+$		// intnoÉÎ·éinhnoÉÎµÄDEF_INHª éêiE_OBJj
+		$IF LENGTH(INH.INHNO[inhno])$
+			$ERROR ISR.TEXT_LINE[order_for_error]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated with %4% `%5%\'"), "intno", ISR.INTNO[order_for_error], "ATT_ISR", "inhno", INH.INHNO[inhno])$$END$
+		$END$
+
+$		// intnoÉÎ·éCFG_INTªÈ¢êiE_OBJj
+		$IF !LENGTH(INT.INTNO[intno])$
+			$ERROR ISR.TEXT_LINE[order_for_error]$E_OBJ: $FORMAT(_("%1% `%2%\' is not configured with %3%"), "intno", ISR.INTNO[order_for_error], "CFG_INT")$$END$
+		$ELSE$
+$			// intnoÉÎµÄCFG_INTÅÝè³ê½ÝDæxªTMIN_INTPRI
+$			// æèà¬³¢êiE_OBJj
+			$IF INT.INTPRI[intno] < TMIN_INTPRI$
+				$ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is higher than %5%"), "intpri", INT.INTPRI[intno], "intno", ISR.INTNO[order_for_error], "TMIN_INTPRI")$$END$
+			$END$
+		$END$
+
+$		// DEF_INH(inhno, { TA_NULL, _kernel_inthdr_<intno> } );
+		$INH.INHNO[inhno] = inhno$
+		$INH.INHATR[inhno] = VALUE("TA_NULL", 0)$
+		$INH.INTHDR[inhno] = CONCAT("_kernel_inthdr_", intno)$
+		$INH.ORDER_LIST = APPEND(INH.ORDER_LIST, inhno)$
+
+$		// ISRpÌÝnh
+		void$NL$
+		_kernel_inthdr_$intno$(void)$NL$
+		{$NL$
+		$IF LENGTH(isr_order_list) > 1$
+			$TAB$PRI	saved_ipm;$NL$
+			$NL$
+			$TAB$i_begin_int($intno$);$NL$
+			$TAB$saved_ipm = i_get_ipm();$NL$
+		$ELSE$
+			$TAB$i_begin_int($intno$);$NL$
+		$END$
+$		// ISRðDæxÉÄÑo·
+		$JOINEACH order SORT(isr_order_list, "ISR.ISRPRI") "\tif (i_sense_lock()) {\n\t\ti_unlock_cpu();\n\t}\n\ti_set_ipm(saved_ipm);\n"$
+			$TAB$LOG_ISR_ENTER($intno$);$NL$
+			$TAB$((ISR)($ISR.ISR[order]$))((intptr_t)($ISR.EXINF[order]$));$NL$
+			$TAB$LOG_ISR_LEAVE($intno$);$NL$
+		$END$
+		$TAB$i_end_int($intno$);$NL$
+		}$NL$
+	$END$
+$END$
+$NL$
+
+$ 
+$ ÝÇ@\Ì½ßÌWIÈú»îñÌ¶¬
+$ 
+$ ÝnhÌú»ÉKvÈîñ
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINIB_TABLE,0)$
+
+$ Ýnh
+#define TNUM_INHNO	$LENGTH(INH.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_inhno = TNUM_INHNO;$NL$
+$NL$
+$FOREACH inhno INH.ORDER_LIST$
+	INTHDR_ENTRY($INH.INHNO[inhno]$, $+INH.INHNO[inhno]$, $INH.INTHDR[inhno]$)$NL$$NL$
+$END$
+
+$ Ýnhú»e[u
+$IF LENGTH(INH.ORDER_LIST)$
+	const INHNO _kernel_inhinib_inhno[TNUM_INHNO] = {
+	$JOINEACH inhno INH.ORDER_LIST ","$
+		($INH.INHNO[inhno]$)
+	$END$
+	};$NL$
+
+	const ATR _kernel_inhinib_inhatr[TNUM_INHNO] = {
+	$JOINEACH inhno INH.ORDER_LIST ","$
+		($INH.INHATR[inhno]$)
+	$END$
+	};$NL$
+
+	const FP _kernel_inhinib_entry[TNUM_INHNO] = {
+	$JOINEACH inhno INH.ORDER_LIST ","$
+		(FP)(INT_ENTRY($INH.INHNO[inhno]$, $INH.INTHDR[inhno]$))
+	$END$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const INHNO, _kernel_inhinib_inhno);$NL$
+	TOPPERS_EMPTY_LABEL(const ATR, _kernel_inhinib_inhatr);$NL$
+	TOPPERS_EMPTY_LABEL(const FP, _kernel_inhinib_entry);$NL$
+$END$$NL$
+$END$
+
+$ ÝvCÌú»ÉKvÈîñ
+$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INTINIB_TABLE,0)$ 
+
+$ ÝvC
+#define TNUM_INTNO	$LENGTH(INT.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_intno = TNUM_INTNO;$NL$
+$NL$
+
+$ ÝvCú»e[u
+$IF LENGTH(INT.ORDER_LIST)$
+	const INTNO _kernel_intinib_intno[TNUM_INTNO] = {
+	$JOINEACH intno INT.ORDER_LIST ","$
+		($INT.INTNO[intno]$)
+	$END$
+	};$NL$
+
+	const ATR _kernel_intinib_intatr[TNUM_INTNO] = {
+	$JOINEACH intno INT.ORDER_LIST ","$
+		($INT.INTATR[intno]$)
+	$END$
+	};$NL$
+
+	const PRI _kernel_intinib_intpri[TNUM_INTNO] = {
+	$JOINEACH intno INT.ORDER_LIST ","$
+		($INT.INTPRI[intno]$)
+	$END$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const INTNO, _kernel_intinib_intno);$NL$
+	TOPPERS_EMPTY_LABEL(const ATR, _kernel_intinib_intatr);$NL$
+	TOPPERS_EMPTY_LABEL(const PRI, _kernel_intinib_intpri);$NL$
+$END$
+$NL$
+$END$
+
+$ ---------------------------------------------------------------------
+$  CPUáOnh
+$ ---------------------------------------------------------------------
+/*$NL$
+$SPC$*  CPU Exception Handler$NL$
+$SPC$*/$NL$
+$NL$
+
+$ // EXCNO_DEFEXC_VALID Ìvfª EXCNO_VALID ÉÜÜêé©Ç¤©Ì`FbN
+$ // EXCNO_DEFEXC_VALID Í EXCNO_VALID ÌªWÉÈéÍ¸D
+$FOREACH excno EXCNO_DEFEXC_VALID$
+	$IF LENGTH(FIND(EXCNO_VALID, excno)) == 0$
+		$ERROR$all elements of `EXCNO_DEFEXC_VALID' must be included in `EXCNO_VALID'$END$
+	$END$
+$END$
+
+
+$ CPUáOnhÉÖ·éG[`FbN
+$i = 0$
+$FOREACH excno EXC.ORDER_LIST$
+$	// excnoªDEF_EXCÉÎ·éCPUáOnhÔÆµÄ³µ­È¢êiE_PARj
+	$IF !LENGTH(FIND(EXCNO_DEFEXC_VALID, EXC.EXCNO[excno]))$
+		$ERROR EXC.TEXT_LINE[excno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
+	$END$
+
+$	// excnoªDEF_EXCÉæÁÄÝèÏÝÌêiE_OBJj
+	$j = 0$
+	$FOREACH excno2 EXC.ORDER_LIST$
+		$IF EXC.EXCNO[excno] == EXC.EXCNO[excno2] && j < i$
+			$ERROR EXC.TEXT_LINE[excno]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated"), "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
+		$END$
+		$j = j + 1$
+	$END$
+
+$	// excatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF (EXC.EXCATR[excno] & ~ALT(TARGET_EXCATR,0)) != 0$
+		$ERROR EXC.TEXT_LINE[excno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "excatr", EXC.EXCATR[excno], "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
+	$END$
+	$i = i + 1$
+$END$
+
+$ CPUáOnhÌ½ßÌWIÈú»îñÌ¶¬
+$IF !ALT(OMIT_INITIALIZE_EXCEPTION,0)$
+
+$ CPUáOnh
+#define TNUM_EXCNO	$LENGTH(EXC.ORDER_LIST)$$NL$
+const uint_t _kernel_tnum_excno = TNUM_EXCNO;$NL$
+$NL$
+$FOREACH excno EXC.ORDER_LIST$
+	EXCHDR_ENTRY($EXC.EXCNO[excno]$, $+EXC.EXCNO[excno]$, $EXC.EXCHDR[excno]$)$NL$$NL$
+$END$
+
+$ CPUáOnhú»e[u
+$IF LENGTH(EXC.ORDER_LIST)$
+	const EXCNO _kernel_excinib_excno[TNUM_EXCNO] = {
+	$JOINEACH excno EXC.ORDER_LIST ","$
+		($EXC.EXCNO[excno]$)
+	$END$
+	};$NL$
+
+	const ATR _kernel_excinib_excatr[TNUM_EXCNO] = {
+	$JOINEACH excno EXC.ORDER_LIST ","$
+		($EXC.EXCATR[excno]$)
+	$END$
+	};$NL$
+
+	const FP _kernel_excinib_entry[TNUM_EXCNO] = {
+	$JOINEACH excno EXC.ORDER_LIST ","$
+		(FP)(EXC_ENTRY($EXC.EXCNO[excno]$, $EXC.EXCHDR[excno]$))
+	$END$
+	};$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const EXCNO, _kernel_excinib_excno);$NL$
+	TOPPERS_EMPTY_LABEL(const ATR, _kernel_excinib_excatr);$NL$
+	TOPPERS_EMPTY_LABEL(const FP, _kernel_excinib_entry);$NL$
+$END$
+$NL$
+$END$
+
+
+$ ---------------------------------------------------------------------
+$  üúnh
+$ ---------------------------------------------------------------------
+
+/*$NL$
+$SPC$*  Cyclic Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ üúnhIDÔÌÅål
+const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);$NL$
+
+$ üúnhÌ^CCxgIDItZbg
+$ üúnhÌ^CCxgIDÍ0©çJn
+const uint_t _kernel_cycevtid_offset = 0;$NL$
+$NL$
+
+$ Ggª TMAX_MAXCYC(kernel.h) Âæè½¢êÍCG[Æ·é
+$IF LENGTH(CYC.ORDER_LIST) > TMAX_MAXCYC$
+	$ERROR$$FORMAT(_("The number of CRE_CYC must be equal to or less than %1%."), +VALUE("TMAX_MAXCYC", TMAX_MAXCYC))$$END$
+$END$
+
+$IF LENGTH(CYC.ORDER_LIST)$
+$	üúnh®«
+	$CYCACT = 0$
+	$FOREACH cycid CYC.ORDER_LIST$
+$		// üúnh®«(cycatr) ª TA_NULL, TA_STA Ì¢¸êÅàÈ¢iE_RSATRj
+		$IF (CYC.CYCATR[cycid] & ~TA_STA) != 0$
+			$ERROR CYC.TEXT_LINE[cycid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycatr", CYC.CYCATR[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+
+		$IF(CYC.CYCATR[cycid] & TA_STA)$
+			$CYCACT = CYCACT | (1 << (cycid-1))$
+		$END$
+	$END$
+	const uint16_t _kernel_cycinib_cycact = $CYCACT$;$NL$
+
+$	üúnhg£îñ
+	const intptr_t _kernel_cycinib_exinf[TNUM_CYCID] = {
+	$JOINEACH cycid CYC.ORDER_LIST ","$
+		(intptr_t)($CYC.EXINF[cycid]$)
+	$END$
+	};$NL$
+
+$	üúnhAhX
+	const CYCHDR _kernel_cycinib_cychdr[TNUM_CYCID] = {
+	$JOINEACH cycid CYC.ORDER_LIST ","$
+		($CYC.CYCHDR[cycid]$)
+	$END$
+	};$NL$
+
+$	üúnhüú
+	const RELTIM _kernel_cycinib_cyctim[TNUM_CYCID] = {
+	$JOINEACH cycid CYC.ORDER_LIST ","$
+$		// cyctim Í 0 æèå«­CTMAX_RELTIM ÈºÅ éD(E_PAR)
+		$IF CYC.CYCTIM[cycid] <= 0 || TMAX_RELTIM < CYC.CYCTIM[cycid] $
+			$ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cyctim", CYC.CYCTIM[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+
+		($CYC.CYCTIM[cycid]$)
+	$END$
+	};$NL$
+
+$	üúnhÊ
+	const RELTIM _kernel_cycinib_cycphs[TNUM_CYCID] = {
+	$JOINEACH cycid CYC.ORDER_LIST ","$
+$		// cycphs Í 0 ÈãCTMAX_RELTIM ÈºÅ éD(E_PAR)
+		$IF CYC.CYCPHS[cycid] < 0 || TMAX_RELTIM < CYC.CYCPHS[cycid] $
+			$ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycphs", CYC.CYCPHS[cycid], cycid, "CRE_CYC")$$END$
+		$END$
+
+$		// Êª0©ÂC®«ª TA_STA ÌêÍx
+		$IF CYC.CYCPHS[cycid] == 0 && (CYC.CYCATR[cycid] & TA_STA) != 0$
+			$WARNING CYC.TEXT_LINE[cycid]$$FORMAT(_("%1% is not recommended when %2% is set to %3% in %4%"), "cycphs==0", "TA_STA", "cycatr", "CRE_CYC")$$END$
+		$END$
+
+		($CYC.CYCPHS[cycid]$)
+	$END$
+	};$NL$
+	$NL$
+
+$	üúnhÌñN®
+EVTTIM _kernel_cyccb_evttim[TNUM_CYCID];$NL$
+
+$ELSE$
+	const uint16_t _kernel_cycinib_cycact = 0;$NL$
+	TOPPERS_EMPTY_LABEL(const intptr_t, _kernel_cycinib_exinf);$NL$
+	TOPPERS_EMPTY_LABEL(const CYCHDR, _kernel_cycinib_cychdr);$NL$
+	TOPPERS_EMPTY_LABEL(const RELTIM, _kernel_cycinib_cyctim);$NL$
+	TOPPERS_EMPTY_LABEL(const RELTIM, _kernel_cycinib_cycphs);$NL$
+	TOPPERS_EMPTY_LABEL(EVTTIM, _kernel_cyccb_evttim);$NL$
+$END$
+
+$	üúnh®ìóÔ
+uint16_t _kernel_cyccb_cycact;$NL$
+
+$NL$
+$NL$
+
+$ ---------------------------------------------------------------------
+$  A[nh
+$ ---------------------------------------------------------------------
+
+/*$NL$
+$SPC$*  Alarm Handler Functions$NL$
+$SPC$*/$NL$
+$NL$
+
+$ Ggª TMAX_MAXALM(kernel.h) Âæè½¢êÍCG[Æ·é
+$IF LENGTH(ALM.ORDER_LIST) > TMAX_MAXALM$
+	$ERROR$$FORMAT(_("The number of CRE_ALM must be equal to or less than %1%."), +VALUE("TMAX_MAXALM",TMAX_MAXALM))$$END$
+$END$
+
+$ A[nhÌÅåIDl
+const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);$NL$
+
+$ A[nhÌ^CCxgIDItZbg
+const uint_t _kernel_almevtid_offset = $LENGTH(CYC.ORDER_LIST)$;$NL$
+$NL$
+
+$FOREACH almid ALM.ORDER_LIST$
+$	// almatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF ALM.ALMATR[almid] != 0$
+		$ERROR ALM.TEXT_LINE[almid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "almatr", ALM.ALMATR[almid], almid, "CRE_ALM")$$END$
+	$END$
+$END$
+
+$IF LENGTH(ALM.ORDER_LIST)$
+$	A[nhæªÔn
+	const ALMHDR _kernel_alminib_almhdr[TNUM_ALMID] = {
+	$JOINEACH almid ALM.ORDER_LIST ","$
+		($ALM.ALMHDR[almid]$)
+	$END$
+	};$NL$
+
+$	A[nhg£îñ
+	const intptr_t _kernel_alminib_exinf[TNUM_ALMID] = {
+	$JOINEACH almid ALM.ORDER_LIST ","$
+		(intptr_t)($ALM.EXINF[almid]$)
+	$END$
+	};$NL$
+$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(const ALMHDR, _kernel_alminib_almhdr);$NL$
+	TOPPERS_EMPTY_LABEL(const intptr_t, _kernel_alminib_exinf);$NL$
+$NL$
+$END$
+
+$ A[nhóÔ
+uint16_t _kernel_almcb_almact;$NL$
+$NL$
+
+
+$ ---------------------------------------------------------------------
+$  ^CCxgÇ
+$ ---------------------------------------------------------------------
+
+/*$NL$
+$SPC$*  Time Event Management$NL$
+$SPC$*/$NL$
+$NL$
+
+$TNUM_TMEVT = LENGTH(CYC.ORDER_LIST) + LENGTH(ALM.ORDER_LIST)$
+
+#define TNUM_TMEVT $TNUM_TMEVT$$NL$
+$NL$
+
+$ ^CCxgubNÌTCY
+const uint_t _kernel_tnum_tmevt_queue = TNUM_TMEVT;$NL$$NL$
+
+$IF TNUM_TMEVT != 0$
+$	^CCxgL
+[
+	QUEUE _kernel_tmevt_queue[TNUM_TMEVT+1];$NL$
+$	^CCxgÔ
+	EVTTIM _kernel_tmevt_time[TNUM_TMEVT];$NL$
+$	^CCxgÌR[obN
+	CBACK _kernel_tmevt_callback[TNUM_TMEVT];$NL$
+$	^CCxgR[obNÌø
+	uintptr_t _kernel_tmevt_arg[TNUM_TMEVT];$NL$
+	$NL$$NL$
+$ELSE$
+	TOPPERS_EMPTY_LABEL(QUEUE, _kernel_tmevt_queue);$NL$
+	TOPPERS_EMPTY_LABEL(EVTTIM, _kernel_tmevt_time);$NL$
+	TOPPERS_EMPTY_LABEL(CBACK, _kernel_tmevt_callback);$NL$
+	TOPPERS_EMPTY_LABEL(uintptr_t, _kernel_tmevt_arg);$NL$
+	$NL$$NL$
+$END$
+
+$ ---------------------------------------------------------------------
+$  ñ^XNReLXgpX^bNÌæ
+$ ---------------------------------------------------------------------
+/*$NL$
+$SPC$*  Interrupt Context Stack Size$NL$
+$SPC$*/$NL$$NL$
+
+$ // Ïè`
+$ // ñ^XNReLXgpX^bNÌæÌTCY
+$interrupt_context_stksz = 0$
+
+$ // DEF_ICS ÌGgª¶Ý·é©?
+$IF !LENGTH(ICS.ORDER_LIST)$
+$	// È¢êDTCYÍùèl (DEFAULT_ISTKSZ) ðg¤
+	#define TOPPERS_ISTKSZ		DEFAULT_ISTKSZ$NL$$NL$
+	$interrupt_context_stksz = DEFAULT_ISTKSZ$
+$ELSE$
+$	// DEF_ICS ÌGgª éê
+
+$ 
+$	// G[`FbN
+$ 
+$	// ÃIAPIuDEF_ICSvª¡ éiE_OBJj
+	$IF LENGTH(ICS.ORDER_LIST) > 1$
+		$ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_ICS")$$END$
+	$END$
+$	// DEF_ICS Å0ðwèµ½ê(E_PAR)
+	$IF ICS.ISTKSZ[1] == 0$
+		$ERROR ICS.TEXT_LINE[1]$E_PAR: $FORMAT(_("%1% in %2% is 0"), "istksz", "DEF_ICS")$$END$
+	$END$
+$	// íÉ NULL Å éD(E_PAR)
+	$IF !EQ(ICS.ISTK[1], "NULL")$
+		$ERROR ICS.TEXT_LINE[1]$E_PAR: $FORMAT(("'%1%' of %2% must be NULL."), "istk", "DEF_ICS")$$END$
+	$END$
+
+	#define TOPPERS_ISTKSZ		($ICS.ISTKSZ[1]$)$NL$
+	$interrupt_context_stksz = ICS.ISTKSZ[1]$
+	$NL$
+$END$
+$NL$
+
+$ ---------------------------------------------------------------------
+$  ¤LX^bNÌæ
+$      SSPÅÍ·×ÄÌPÊÌX^bNð¤L·é½ßC
+$      ±±ÅVXeSÌÌX^bNÌæðmÛ·éD
+$ ---------------------------------------------------------------------
+
+$ 
+$ ¤LX^bNÌRtBM
+[VÉ¬÷µ½©Ç¤©
+$ 
+$ DEF_STK ÉG[ª­¶µ½êC±ÌÏª0ÉÈéD
+$ DEF_STK ÉG[ª­¶µ½©Ç¤©ð»fµÄ
+$ ÁèÌÀsðubN·é½ßÉgp·éD
+$ 
+$configurated_defstk_successfully = 1$
+
+/*$NL$
+$SPC$*  Stack Area for System$NL$
+$SPC$*/$NL$
+$NL$
+
+$ // Ïè`
+$ // èÄçê½¤LX^bNÌæÌTCY
+$allocated_stack_size = 0$
+
+$ // DEF_STK ÌGgª¶Ý·é©?
+$IF !LENGTH(STK.ORDER_LIST)$
+$	// (1) DEF_STK ÌGgªÈ¢ê
+	static STK_T          		_kernel_stack[COUNT_STK_T(TOPPERS_TSTKSZ+TOPPERS_ISTKSZ)];$NL$
+	#define TOPPERS_STK   		_kernel_stack$NL$
+	#define TOPPERS_STKSZ		ROUND_STK_T(TOPPERS_TSTKSZ+TOPPERS_ISTKSZ)$NL$
+	$NL$
+
+	$allocated_stack_size = max_tsk_stksz + interrupt_context_stksz$
+$ELSE$
+$	// (2) DEF_STK ÌGgª éê
+
+$	// G[`FbN
+$	// ÃIAPIuDEF_STKvª¡ éiE_OBJj
+	$IF LENGTH(STK.ORDER_LIST) > 1$
+		$configurated_defstk_successfully = 0$
+		$ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_STK")$$END$
+	$END$
+$	// DEF_STK Ì stksz Å 0 ðwèµ½ê(E_PAR)
+	$IF STK.STKSZ[1] == 0$
+		$configurated_defstk_successfully = 0$
+		$ERROR STK.TEXT_LINE[1]$E_PAR: $FORMAT(_("%1% in %2% is 0"), "stksz", "DEF_STK")$$END$
+	$END$
+
+	$IF EQ(STK.STK[1], "NULL")$
+$		// stk ª NULL ÌêCX^bNÌæð©®t¯
+		static STK_T         		_kernel_stack[COUNT_STK_T($STK.STKSZ[1]$)];$NL$
+		#define TOPPERS_STK  		_kernel_stack$NL$
+		#define TOPPERS_STKSZ		ROUND_STK_T($STK.STKSZ[1]$)$NL$
+	$ELSE$
+$		// stk ª NULL ÈOÌêiAv¤ÅX^bNÌæðpÓ·éêj
+
+$ 		// stkszª^[QbgÉèÜéACgTCYÌ{ÉACg³êÄ¢È¢êiE_PARj
+		$IF LENGTH(CHECK_STKSZ_ALIGN) && (STK.STKSZ[1] & (CHECK_STKSZ_ALIGN - 1))$
+			$configurated_defstk_successfully = 0$
+			$ERROR STK.TEXT_LINE[1]$E_PAR: $FORMAT(_("%1% `%2%\' in %3% is not aligned"), "stksz", STK.STKSZ[1], "DEF_STK")$$END$
+		$END$
+
+		#define TOPPERS_STK   		($STK.STK[1]$)$NL$
+		#define TOPPERS_STKSZ		($STK.STKSZ[1]$)$NL$
+	$END$
+
+	$allocated_stack_size = STK.STKSZ[1]$
+$END$
+$NL$
+
+$ ¤LX^bNpÌX^bNÌæ
+const SIZE		_kernel_stksz = TOPPERS_STKSZ;$NL$
+STK_T *const	_kernel_stk = TOPPERS_STK;$NL$
+$NL$
+#ifdef TOPPERS_ISTKPT$NL$
+STK_T *const	_kernel_istkpt = TOPPERS_ISTKPT(TOPPERS_STK, TOPPERS_STKSZ);$NL$
+#endif /* TOPPERS_ISTKPT */$NL$
+$NL$
+
+$ 
+$ // DæxèÄ¨æÑX^bNÝèÉÖ·éÊðWoÍÖ\¦
+$ 
+$IF configurated_defepr_successfully == 1 && configurated_defstk_successfully == 1$
+	$FILE "stdout"$
+	=====================================$NL$
+	Task priority configuration result:$NL$
+	$FOREACH tskid SORT(TSK.ORDER_LIST, "TSK.ATSKPRI")$
+		$TAB$$TSK.TSKID[tskid]$:$TAB$ IPRI = $reallocate_tskapri[TSK.TSKID[tskid]]$, EXEPRI = $reallocate_tskepri[tskid]$$NL$
+	$END$
+	=====================================$NL$
+
+	=====================================$NL$
+	Stack size configuration result:$NL$
+	$TAB$Estimated task stack size = $max_tsk_stksz$$NL$
+	$TAB$Specified interrupt stack size = $interrupt_context_stksz$(value=$FORMAT("%d",+interrupt_context_stksz)$)$NL$
+	$TAB$Allocated total stack size = $allocated_stack_size$(value=$FORMAT("%d",+allocated_stack_size)$)$NL$
+$ 	// TCYÌ`FbNDX^bNTCYÌèlªÀÛÉÄçê½TCYæèå«¢êCx·éD
+	$IF (max_tsk_stksz+interrupt_context_stksz) > allocated_stack_size$
+		$TAB$!!!WARNING!!!: Estimated stack size is more than the allocated stack size.$NL$
+		$WARNING STK.TEXT_LINE[1]$ $FORMAT("Estimated stack size is more than the allocated stack size.")$$END$
+	$END$
+	=====================================$NL$
+$END$
+$ 
+$ // oÍæð³ÉßµÄ¨­
+$ 
+$FILE "kernel_cfg.c"$
+
+
+$ ---------------------------------------------------------------------
+$  eW
+[Ìú»Ö
+$ ---------------------------------------------------------------------
+/*$NL$
+$SPC$*  Module Initialization Function$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_initialize_object(void)$NL$
+{$NL$
+$IF TNUM_TMEVT > 0$
+$TAB$_kernel_initialize_time_event();$NL$
+$END$
+$TAB$_kernel_initialize_task();$NL$
+$TAB$_kernel_initialize_interrupt();$NL$
+$TAB$_kernel_initialize_exception();$NL$
+$IF LENGTH(CYC.ID_LIST)$
+	$TAB$_kernel_initialize_cyclic();$NL$
+$END$
+$IF LENGTH(ALM.ID_LIST)$
+	$TAB$_kernel_initialize_alarm();$NL$
+$END$
+$IF LENGTH(FLG.ID_LIST)$
+	$TAB$_kernel_initialize_eventflag();$NL$
+$END$
+$IF LENGTH(DTQ.ID_LIST)$
+	$TAB$_kernel_initialize_dataqueue();$NL$
+$END$
+}$NL$
+$NL$
+
+$ ---------------------------------------------------------------------
+$  ú»[`ÌÀsÖ
+$ ---------------------------------------------------------------------
+/*$NL$
+$SPC$*  Initialization Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_inirtn(void)$NL$
+{$NL$
+$FOREACH order INI.ORDER_LIST$
+$ 	// iniatrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF INI.INIATR[order] != 0$
+		$ERROR INI.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "iniatr", INI.INIATR[order], "inirtn", INI.INIRTN[order], "ATT_INI")$$END$
+	$END$
+	$TAB$((INIRTN)($INI.INIRTN[order]$))((intptr_t)($INI.EXINF[order]$));$NL$
+$END$
+}$NL$
+$NL$
+
+$ ---------------------------------------------------------------------
+$  I¹[`ÌÀsÖ
+$ ---------------------------------------------------------------------
+/*$NL$
+$SPC$*  Termination Routine$NL$
+$SPC$*/$NL$
+$NL$
+void$NL$
+_kernel_call_terrtn(void)$NL$
+{$NL$
+$FOREACH rorder TER.RORDER_LIST$
+$ 	// teratrªiTA_NULLjÅÈ¢êiE_RSATRj
+	$IF TER.TERATR[rorder] != 0$
+		$ERROR TER.TEXT_LINE[rorder]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "teratr", TER.TERATR[rorder], "terrtn", TER.TERRTN[rorder], "ATT_TER")$$END$
+	$END$
+	$TAB$((TERRTN)($TER.TERRTN[rorder]$))((intptr_t)($TER.EXINF[rorder]$));$NL$
+$END$
+}$NL$
+$NL$
+
+
Index: uKadecot/trunk/ssp/kernel/kernel_impl.h
===================================================================
--- uKadecot/trunk/ssp/kernel/kernel_impl.h	(revision 101)
+++ uKadecot/trunk/ssp/kernel/kernel_impl.h	(revision 101)
@@ -0,0 +1,180 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+
+/*
+ *		TOPPERS/SSPJ[làü¯Wwb_t@C
+ *
+ *  ±Ìwb_t@CÍCJ[lð\¬·évOÌ\[Xt@C
+ *  ÅK¸CN[h·é×«Wwb_t@CÅ éD
+ *
+ *  AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
+ *  ÍCTOPPERS_MACRO_ONLYðè`µÄ¨­D±êÉæèC}Nè`ÈOð
+ *  ­æ¤ÉÈÁÄ¢éD
+ */
+
+#ifndef TOPPERS_KERNEL_IMPL_H
+#define TOPPERS_KERNEL_IMPL_H
+
+/*
+ *  J[lÌà¯Ê¼Ìl[
+ */
+#include "kernel_rename.h"
+
+/*
+ *  AvP[VÆ¤ÊÌwb_t@C
+ */
+#include <kernel.h>
+
+/*
+ *  VXeO@\Ì½ßÌè`
+ */
+#include <t_syslog.h>
+
+/*
+ *  ^LXgðs¤}NÌè`
+ */
+#ifndef CAST
+#define CAST(type, val)		((type)(val))
+#endif /* CAST */
+
+/*
+ *  ^[QbgË¶îñÌè`
+ */
+#include "target_config.h"
+
+/*
+ *  ·×ÄÌÖðRpC·é½ßÌè`
+ */
+#ifdef ALLFUNC
+#include "allfunc.h"
+#endif /* ALLFUNC */
+
+/*
+ *  rbgtB[hÅÌ³µ®^
+ *
+ *  8rbgÈºÌÌrbgtB[hÅC³µ®lðÛµ½¢ê
+ *  Ép¢é×«f[^^DANSI CÅÍCrbgtB[hÌf[^^ÉÍ
+ *  intÆunsigned intµ©³êÈ¢½ßCftHgÌè`Íunsigned
+ *  intÆµÄ¢éªC^[Qbg¨æÑc[Ë¶ÅCunsigned charÜ½Í
+ *  unsigned shortÉè`µ½ûªø¦ªÇ¢êª éD
+ */
+#ifndef BIT_FIELD_UINT
+#define BIT_FIELD_UINT		unsigned int
+#endif /* BIT_FIELD_UINT */
+
+/*
+ *  rbgtB[hÅÌu[^
+ *
+ *  1rbgÌrbgtB[hÅCu[lðÛµ½¢êÉp¢é×«
+ *  f[^^DftHgÅÍBIT_FIELD_UINTÆ¯êÉè`µÄ¢éªCu[
+ *  lðÛ·é±Æð¾¦·é½ßÉÊÌ¼ÌÆµÄ¢éD
+ */
+#ifndef BIT_FIELD_BOOL
+#define BIT_FIELD_BOOL		BIT_FIELD_UINT
+#endif /* BIT_FIELD_BOOL */
+
+/*
+ *  IuWFNgIDÌÅ¬lÌè`
+ */
+#define TMIN_TSKID		1		/* ^XNIDÌÅ¬l */
+#define TMIN_FLGID		1		/* CxgtOIDÌÅ¬l */
+#define TMIN_DTQID		1		/* f[^L
+[IDÌÅ¬l */
+#define TMIN_CYCID		1		/* üúnhIDÌÅ¬l */
+#define TMIN_ALMID		1		/* A[nhIDÌÅ¬l */
+
+/*
+ *  DæxÌiKÌè`
+ */
+#define TNUM_TPRI		(TMAX_TPRI - TMIN_TPRI + 1)
+#define TNUM_INTPRI		(TMAX_INTPRI - TMIN_INTPRI + 1)
+
+/*
+ *  wb_t@Cð½È¢W
+[ÌÖEÏÌé¾
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  eW
+[Ìú»ikernel_cfg.cj
+ */
+extern void	initialize_object(void);
+
+/*
+ *  ú»[`ÌÀsikernel_cfg.cj
+ */
+extern void	call_inirtn(void);
+
+/*
+ *  I¹[`ÌÀsikernel_cfg.cj
+ */
+extern void	call_terrtn(void);
+
+/*
+ *  ñ^XNReLXgpÌX^bNÌæikernel_cfg.cj
+ */
+extern const SIZE	istksz;		/* X^bNÌæÌTCYiÛß½lj */
+extern STK_T *const	istk;		/* X^bNÌæÌæªÔn */
+#ifdef TOPPRES_ISTKPT
+extern STK_T *const	istkpt;		/* X^bN|C^Ìúl */
+#endif /* TOPPERS_ISTKPT */
+
+/*
+ *  J[l®ìóÔtOistartup.cj
+ */
+extern bool_t	kerflg;
+
+/*
+ *  J[lÌN®istartup.cj
+ */
+extern void	sta_ker(void);
+
+/*
+ *  J[lÌI¹istartup.cj
+ */
+extern void	exit_kernel(void);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_KERNEL_IMPL_H */
Index: uKadecot/trunk/ssp/kernel/kernel_int.h
===================================================================
--- uKadecot/trunk/ssp/kernel/kernel_int.h	(revision 101)
+++ uKadecot/trunk/ssp/kernel/kernel_int.h	(revision 101)
@@ -0,0 +1,80 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2011 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+
+/*
+ *		kernel_cfg.ci¨æÑcfg1_out.cjpwb_t@C
+ */
+
+#ifndef TOPPERS_KERNEL_INT_H
+#define TOPPERS_KERNEL_INT_H
+
+/*
+ *  J[lWwb_t@C
+ */
+#include "kernel_impl.h"
+
+/*
+ *  J[lÌewb_t@C
+ */
+#include "task.h"
+#include "interrupt.h"
+#include "exception.h"
+
+/*
+ *  g£pbP[WÌwb_t@C
+ */
+#include "extension/time_event.h"
+#include "extension/cyclic.h"
+#include "extension/alarm.h"
+#include "extension/eventflag.h"
+#include "extension/dataqueue.h"
+
+/*
+ *  l[µ½V{ð³Éß·½ßÌwb_t@C
+ */
+#include "kernel_unrename.h"
+
+
+#endif /* TOPPERS_KERNEL_INT_H */
Index: uKadecot/trunk/ssp/kernel/kernel_rename.def
===================================================================
--- uKadecot/trunk/ssp/kernel/kernel_rename.def	(revision 101)
+++ uKadecot/trunk/ssp/kernel/kernel_rename.def	(revision 101)
@@ -0,0 +1,130 @@
+# startup.c
+kerflg
+exit_kernel
+
+# task.c
+runtsk_curpri
+runtsk_ipri
+ready_primap
+actque_bitmap
+reqflg
+disdsp
+get_ipri_self
+get_ipri
+bitmap_search_table
+bitmap_search
+primap_empty
+primap_test
+primap_search
+primap_set
+primap_clear
+search_schedtsk
+test_dormant
+initialize_task
+make_active
+run_task
+dispatcher
+
+# interrupt.c
+initialize_interrupt
+
+# exception.c
+initialize_exception
+
+
+# alarm.c
+initialize_alarm
+call_almhdr
+
+# cyclic.c
+initialize_cyclic
+call_cychdr
+
+# dataqueue.c
+initialize_dataqueue
+send_data
+receive_data
+
+# eventflag.c
+initialize_eventflag
+
+# time_event.c
+current_time
+min_time
+initialize_time_event
+time_event_enqueue
+time_event_dequeue
+signal_time
+
+
+# kernel_cfg.c
+tmax_tskid
+tinib_tskatr
+init_rdypmap
+tinib_exinf
+tinib_task
+tinib_epriority
+
+tmax_flgid
+flginib_atr
+flginib_iflgptn
+flgcb_flgptn
+
+tmax_dtqid
+dtqinib_atr
+dtqinib_size
+dtqinib_data
+dtqcb_count
+dtqcb_head
+dtqcb_tail
+
+tnum_inhno
+inhinib_inhno
+inhinib_inhatr
+inhinib_entry
+
+tnum_intno
+intinib_intno
+intinib_intatr
+intinib_intpri
+
+tnum_excno
+excinib_excno
+excinib_excatr
+excinib_entry
+
+tmax_cycid
+cycevtid_offset
+cycinib_cycact
+cycinib_exinf
+cycinib_cychdr
+cycinib_cyctim
+cycinib_cycphs
+cyccb_evttim
+cyccb_cycact
+
+tmax_almid
+almevtid_offset
+alminib_almhdr
+alminib_exinf
+almcb_almact
+
+tnum_tmevt_queue
+tmevt_queue
+tmevt_time
+tmevt_callback
+tmevt_arg
+
+stksz
+stk
+istkpt
+
+initialize_object
+call_inirtn
+call_terrtn
+
+# target_config.c
+target_initialize
+target_exit
+
+INCLUDE "target"
Index: uKadecot/trunk/ssp/kernel/kernel_rename.h
===================================================================
--- uKadecot/trunk/ssp/kernel/kernel_rename.h	(revision 101)
+++ uKadecot/trunk/ssp/kernel/kernel_rename.h	(revision 101)
@@ -0,0 +1,316 @@
+/* This file is generated from kernel_rename.def by genrename. */
+
+#ifndef TOPPERS_KERNEL_RENAME_H
+#define TOPPERS_KERNEL_RENAME_H
+
+/*
+ *  startup.c
+ */
+#define kerflg						_kernel_kerflg
+#define exit_kernel					_kernel_exit_kernel
+
+/*
+ *  task.c
+ */
+#define runtsk_curpri				_kernel_runtsk_curpri
+#define runtsk_ipri					_kernel_runtsk_ipri
+#define ready_primap				_kernel_ready_primap
+#define actque_bitmap				_kernel_actque_bitmap
+#define reqflg						_kernel_reqflg
+#define disdsp						_kernel_disdsp
+#define get_ipri_self				_kernel_get_ipri_self
+#define get_ipri					_kernel_get_ipri
+#define bitmap_search_table			_kernel_bitmap_search_table
+#define bitmap_search				_kernel_bitmap_search
+#define primap_empty				_kernel_primap_empty
+#define primap_test					_kernel_primap_test
+#define primap_search				_kernel_primap_search
+#define primap_set					_kernel_primap_set
+#define primap_clear				_kernel_primap_clear
+#define search_schedtsk				_kernel_search_schedtsk
+#define test_dormant				_kernel_test_dormant
+#define initialize_task				_kernel_initialize_task
+#define make_active					_kernel_make_active
+#define run_task					_kernel_run_task
+#define dispatcher					_kernel_dispatcher
+
+/*
+ *  interrupt.c
+ */
+#define initialize_interrupt		_kernel_initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#define initialize_exception		_kernel_initialize_exception
+
+
+/*
+ *  alarm.c
+ */
+#define initialize_alarm			_kernel_initialize_alarm
+#define call_almhdr					_kernel_call_almhdr
+
+/*
+ *  cyclic.c
+ */
+#define initialize_cyclic			_kernel_initialize_cyclic
+#define call_cychdr					_kernel_call_cychdr
+
+/*
+ *  dataqueue.c
+ */
+#define initialize_dataqueue		_kernel_initialize_dataqueue
+#define send_data					_kernel_send_data
+#define receive_data				_kernel_receive_data
+
+/*
+ *  eventflag.c
+ */
+#define initialize_eventflag		_kernel_initialize_eventflag
+
+/*
+ *  time_event.c
+ */
+#define current_time				_kernel_current_time
+#define min_time					_kernel_min_time
+#define initialize_time_event		_kernel_initialize_time_event
+#define time_event_enqueue			_kernel_time_event_enqueue
+#define time_event_dequeue			_kernel_time_event_dequeue
+#define signal_time					_kernel_signal_time
+
+
+/*
+ *  kernel_cfg.c
+ */
+#define tmax_tskid					_kernel_tmax_tskid
+#define tinib_tskatr				_kernel_tinib_tskatr
+#define init_rdypmap				_kernel_init_rdypmap
+#define tinib_exinf					_kernel_tinib_exinf
+#define tinib_task					_kernel_tinib_task
+#define tinib_epriority				_kernel_tinib_epriority
+
+#define tmax_flgid					_kernel_tmax_flgid
+#define flginib_atr					_kernel_flginib_atr
+#define flginib_iflgptn				_kernel_flginib_iflgptn
+#define flgcb_flgptn				_kernel_flgcb_flgptn
+
+#define tmax_dtqid					_kernel_tmax_dtqid
+#define dtqinib_atr					_kernel_dtqinib_atr
+#define dtqinib_size				_kernel_dtqinib_size
+#define dtqinib_data				_kernel_dtqinib_data
+#define dtqcb_count					_kernel_dtqcb_count
+#define dtqcb_head					_kernel_dtqcb_head
+#define dtqcb_tail					_kernel_dtqcb_tail
+
+#define tnum_inhno					_kernel_tnum_inhno
+#define inhinib_inhno				_kernel_inhinib_inhno
+#define inhinib_inhatr				_kernel_inhinib_inhatr
+#define inhinib_entry				_kernel_inhinib_entry
+
+#define tnum_intno					_kernel_tnum_intno
+#define intinib_intno				_kernel_intinib_intno
+#define intinib_intatr				_kernel_intinib_intatr
+#define intinib_intpri				_kernel_intinib_intpri
+
+#define tnum_excno					_kernel_tnum_excno
+#define excinib_excno				_kernel_excinib_excno
+#define excinib_excatr				_kernel_excinib_excatr
+#define excinib_entry				_kernel_excinib_entry
+
+#define tmax_cycid					_kernel_tmax_cycid
+#define cycevtid_offset				_kernel_cycevtid_offset
+#define cycinib_cycact				_kernel_cycinib_cycact
+#define cycinib_exinf				_kernel_cycinib_exinf
+#define cycinib_cychdr				_kernel_cycinib_cychdr
+#define cycinib_cyctim				_kernel_cycinib_cyctim
+#define cycinib_cycphs				_kernel_cycinib_cycphs
+#define cyccb_evttim				_kernel_cyccb_evttim
+#define cyccb_cycact				_kernel_cyccb_cycact
+
+#define tmax_almid					_kernel_tmax_almid
+#define almevtid_offset				_kernel_almevtid_offset
+#define alminib_almhdr				_kernel_alminib_almhdr
+#define alminib_exinf				_kernel_alminib_exinf
+#define almcb_almact				_kernel_almcb_almact
+
+#define tnum_tmevt_queue			_kernel_tnum_tmevt_queue
+#define tmevt_queue					_kernel_tmevt_queue
+#define tmevt_time					_kernel_tmevt_time
+#define tmevt_callback				_kernel_tmevt_callback
+#define tmevt_arg					_kernel_tmevt_arg
+
+#define stksz						_kernel_stksz
+#define stk							_kernel_stk
+#define istkpt						_kernel_istkpt
+
+#define initialize_object			_kernel_initialize_object
+#define call_inirtn					_kernel_call_inirtn
+#define call_terrtn					_kernel_call_terrtn
+
+/*
+ *  target_config.c
+ */
+#define target_initialize			_kernel_target_initialize
+#define target_exit					_kernel_target_exit
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  startup.c
+ */
+#define _kerflg						__kernel_kerflg
+#define _exit_kernel				__kernel_exit_kernel
+
+/*
+ *  task.c
+ */
+#define _runtsk_curpri				__kernel_runtsk_curpri
+#define _runtsk_ipri				__kernel_runtsk_ipri
+#define _ready_primap				__kernel_ready_primap
+#define _actque_bitmap				__kernel_actque_bitmap
+#define _reqflg						__kernel_reqflg
+#define _disdsp						__kernel_disdsp
+#define _get_ipri_self				__kernel_get_ipri_self
+#define _get_ipri					__kernel_get_ipri
+#define _bitmap_search_table		__kernel_bitmap_search_table
+#define _bitmap_search				__kernel_bitmap_search
+#define _primap_empty				__kernel_primap_empty
+#define _primap_test				__kernel_primap_test
+#define _primap_search				__kernel_primap_search
+#define _primap_set					__kernel_primap_set
+#define _primap_clear				__kernel_primap_clear
+#define _search_schedtsk			__kernel_search_schedtsk
+#define _test_dormant				__kernel_test_dormant
+#define _initialize_task			__kernel_initialize_task
+#define _make_active				__kernel_make_active
+#define _run_task					__kernel_run_task
+#define _dispatcher					__kernel_dispatcher
+
+/*
+ *  interrupt.c
+ */
+#define _initialize_interrupt		__kernel_initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#define _initialize_exception		__kernel_initialize_exception
+
+
+/*
+ *  alarm.c
+ */
+#define _initialize_alarm			__kernel_initialize_alarm
+#define _call_almhdr				__kernel_call_almhdr
+
+/*
+ *  cyclic.c
+ */
+#define _initialize_cyclic			__kernel_initialize_cyclic
+#define _call_cychdr				__kernel_call_cychdr
+
+/*
+ *  dataqueue.c
+ */
+#define _initialize_dataqueue		__kernel_initialize_dataqueue
+#define _send_data					__kernel_send_data
+#define _receive_data				__kernel_receive_data
+
+/*
+ *  eventflag.c
+ */
+#define _initialize_eventflag		__kernel_initialize_eventflag
+
+/*
+ *  time_event.c
+ */
+#define _current_time				__kernel_current_time
+#define _min_time					__kernel_min_time
+#define _initialize_time_event		__kernel_initialize_time_event
+#define _time_event_enqueue			__kernel_time_event_enqueue
+#define _time_event_dequeue			__kernel_time_event_dequeue
+#define _signal_time				__kernel_signal_time
+
+
+/*
+ *  kernel_cfg.c
+ */
+#define _tmax_tskid					__kernel_tmax_tskid
+#define _tinib_tskatr				__kernel_tinib_tskatr
+#define _init_rdypmap				__kernel_init_rdypmap
+#define _tinib_exinf				__kernel_tinib_exinf
+#define _tinib_task					__kernel_tinib_task
+#define _tinib_epriority			__kernel_tinib_epriority
+
+#define _tmax_flgid					__kernel_tmax_flgid
+#define _flginib_atr				__kernel_flginib_atr
+#define _flginib_iflgptn			__kernel_flginib_iflgptn
+#define _flgcb_flgptn				__kernel_flgcb_flgptn
+
+#define _tmax_dtqid					__kernel_tmax_dtqid
+#define _dtqinib_atr				__kernel_dtqinib_atr
+#define _dtqinib_size				__kernel_dtqinib_size
+#define _dtqinib_data				__kernel_dtqinib_data
+#define _dtqcb_count				__kernel_dtqcb_count
+#define _dtqcb_head					__kernel_dtqcb_head
+#define _dtqcb_tail					__kernel_dtqcb_tail
+
+#define _tnum_inhno					__kernel_tnum_inhno
+#define _inhinib_inhno				__kernel_inhinib_inhno
+#define _inhinib_inhatr				__kernel_inhinib_inhatr
+#define _inhinib_entry				__kernel_inhinib_entry
+
+#define _tnum_intno					__kernel_tnum_intno
+#define _intinib_intno				__kernel_intinib_intno
+#define _intinib_intatr				__kernel_intinib_intatr
+#define _intinib_intpri				__kernel_intinib_intpri
+
+#define _tnum_excno					__kernel_tnum_excno
+#define _excinib_excno				__kernel_excinib_excno
+#define _excinib_excatr				__kernel_excinib_excatr
+#define _excinib_entry				__kernel_excinib_entry
+
+#define _tmax_cycid					__kernel_tmax_cycid
+#define _cycevtid_offset			__kernel_cycevtid_offset
+#define _cycinib_cycact				__kernel_cycinib_cycact
+#define _cycinib_exinf				__kernel_cycinib_exinf
+#define _cycinib_cychdr				__kernel_cycinib_cychdr
+#define _cycinib_cyctim				__kernel_cycinib_cyctim
+#define _cycinib_cycphs				__kernel_cycinib_cycphs
+#define _cyccb_evttim				__kernel_cyccb_evttim
+#define _cyccb_cycact				__kernel_cyccb_cycact
+
+#define _tmax_almid					__kernel_tmax_almid
+#define _almevtid_offset			__kernel_almevtid_offset
+#define _alminib_almhdr				__kernel_alminib_almhdr
+#define _alminib_exinf				__kernel_alminib_exinf
+#define _almcb_almact				__kernel_almcb_almact
+
+#define _tnum_tmevt_queue			__kernel_tnum_tmevt_queue
+#define _tmevt_queue				__kernel_tmevt_queue
+#define _tmevt_time					__kernel_tmevt_time
+#define _tmevt_callback				__kernel_tmevt_callback
+#define _tmevt_arg					__kernel_tmevt_arg
+
+#define _stksz						__kernel_stksz
+#define _stk						__kernel_stk
+#define _istkpt						__kernel_istkpt
+
+#define _initialize_object			__kernel_initialize_object
+#define _call_inirtn				__kernel_call_inirtn
+#define _call_terrtn				__kernel_call_terrtn
+
+/*
+ *  target_config.c
+ */
+#define _target_initialize			__kernel_target_initialize
+#define _target_exit				__kernel_target_exit
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "target_rename.h"
+
+#endif /* TOPPERS_KERNEL_RENAME_H */
Index: uKadecot/trunk/ssp/kernel/kernel_unrename.h
===================================================================
--- uKadecot/trunk/ssp/kernel/kernel_unrename.h	(revision 101)
+++ uKadecot/trunk/ssp/kernel/kernel_unrename.h	(revision 101)
@@ -0,0 +1,317 @@
+/* This file is generated from kernel_rename.def by genrename. */
+
+/* This file is included only when kernel_rename.h has been included. */
+#ifdef TOPPERS_KERNEL_RENAME_H
+#undef TOPPERS_KERNEL_RENAME_H
+
+/*
+ *  startup.c
+ */
+#undef kerflg
+#undef exit_kernel
+
+/*
+ *  task.c
+ */
+#undef runtsk_curpri
+#undef runtsk_ipri
+#undef ready_primap
+#undef actque_bitmap
+#undef reqflg
+#undef disdsp
+#undef get_ipri_self
+#undef get_ipri
+#undef bitmap_search_table
+#undef bitmap_search
+#undef primap_empty
+#undef primap_test
+#undef primap_search
+#undef primap_set
+#undef primap_clear
+#undef search_schedtsk
+#undef test_dormant
+#undef initialize_task
+#undef make_active
+#undef run_task
+#undef dispatcher
+
+/*
+ *  interrupt.c
+ */
+#undef initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#undef initialize_exception
+
+
+/*
+ *  alarm.c
+ */
+#undef initialize_alarm
+#undef call_almhdr
+
+/*
+ *  cyclic.c
+ */
+#undef initialize_cyclic
+#undef call_cychdr
+
+/*
+ *  dataqueue.c
+ */
+#undef initialize_dataqueue
+#undef send_data
+#undef receive_data
+
+/*
+ *  eventflag.c
+ */
+#undef initialize_eventflag
+
+/*
+ *  time_event.c
+ */
+#undef current_time
+#undef min_time
+#undef initialize_time_event
+#undef time_event_enqueue
+#undef time_event_dequeue
+#undef signal_time
+
+
+/*
+ *  kernel_cfg.c
+ */
+#undef tmax_tskid
+#undef tinib_tskatr
+#undef init_rdypmap
+#undef tinib_exinf
+#undef tinib_task
+#undef tinib_epriority
+
+#undef tmax_flgid
+#undef flginib_atr
+#undef flginib_iflgptn
+#undef flgcb_flgptn
+
+#undef tmax_dtqid
+#undef dtqinib_atr
+#undef dtqinib_size
+#undef dtqinib_data
+#undef dtqcb_count
+#undef dtqcb_head
+#undef dtqcb_tail
+
+#undef tnum_inhno
+#undef inhinib_inhno
+#undef inhinib_inhatr
+#undef inhinib_entry
+
+#undef tnum_intno
+#undef intinib_intno
+#undef intinib_intatr
+#undef intinib_intpri
+
+#undef tnum_excno
+#undef excinib_excno
+#undef excinib_excatr
+#undef excinib_entry
+
+#undef tmax_cycid
+#undef cycevtid_offset
+#undef cycinib_cycact
+#undef cycinib_exinf
+#undef cycinib_cychdr
+#undef cycinib_cyctim
+#undef cycinib_cycphs
+#undef cyccb_evttim
+#undef cyccb_cycact
+
+#undef tmax_almid
+#undef almevtid_offset
+#undef alminib_almhdr
+#undef alminib_exinf
+#undef almcb_almact
+
+#undef tnum_tmevt_queue
+#undef tmevt_queue
+#undef tmevt_time
+#undef tmevt_callback
+#undef tmevt_arg
+
+#undef stksz
+#undef stk
+#undef istkpt
+
+#undef initialize_object
+#undef call_inirtn
+#undef call_terrtn
+
+/*
+ *  target_config.c
+ */
+#undef target_initialize
+#undef target_exit
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  startup.c
+ */
+#undef _kerflg
+#undef _exit_kernel
+
+/*
+ *  task.c
+ */
+#undef _runtsk_curpri
+#undef _runtsk_ipri
+#undef _ready_primap
+#undef _actque_bitmap
+#undef _reqflg
+#undef _disdsp
+#undef _get_ipri_self
+#undef _get_ipri
+#undef _bitmap_search_table
+#undef _bitmap_search
+#undef _primap_empty
+#undef _primap_test
+#undef _primap_search
+#undef _primap_set
+#undef _primap_clear
+#undef _search_schedtsk
+#undef _test_dormant
+#undef _initialize_task
+#undef _make_active
+#undef _run_task
+#undef _dispatcher
+
+/*
+ *  interrupt.c
+ */
+#undef _initialize_interrupt
+
+/*
+ *  exception.c
+ */
+#undef _initialize_exception
+
+
+/*
+ *  alarm.c
+ */
+#undef _initialize_alarm
+#undef _call_almhdr
+
+/*
+ *  cyclic.c
+ */
+#undef _initialize_cyclic
+#undef _call_cychdr
+
+/*
+ *  dataqueue.c
+ */
+#undef _initialize_dataqueue
+#undef _send_data
+#undef _receive_data
+
+/*
+ *  eventflag.c
+ */
+#undef _initialize_eventflag
+
+/*
+ *  time_event.c
+ */
+#undef _current_time
+#undef _min_time
+#undef _initialize_time_event
+#undef _time_event_enqueue
+#undef _time_event_dequeue
+#undef _signal_time
+
+
+/*
+ *  kernel_cfg.c
+ */
+#undef _tmax_tskid
+#undef _tinib_tskatr
+#undef _init_rdypmap
+#undef _tinib_exinf
+#undef _tinib_task
+#undef _tinib_epriority
+
+#undef _tmax_flgid
+#undef _flginib_atr
+#undef _flginib_iflgptn
+#undef _flgcb_flgptn
+
+#undef _tmax_dtqid
+#undef _dtqinib_atr
+#undef _dtqinib_size
+#undef _dtqinib_data
+#undef _dtqcb_count
+#undef _dtqcb_head
+#undef _dtqcb_tail
+
+#undef _tnum_inhno
+#undef _inhinib_inhno
+#undef _inhinib_inhatr
+#undef _inhinib_entry
+
+#undef _tnum_intno
+#undef _intinib_intno
+#undef _intinib_intatr
+#undef _intinib_intpri
+
+#undef _tnum_excno
+#undef _excinib_excno
+#undef _excinib_excatr
+#undef _excinib_entry
+
+#undef _tmax_cycid
+#undef _cycevtid_offset
+#undef _cycinib_cycact
+#undef _cycinib_exinf
+#undef _cycinib_cychdr
+#undef _cycinib_cyctim
+#undef _cycinib_cycphs
+#undef _cyccb_evttim
+#undef _cyccb_cycact
+
+#undef _tmax_almid
+#undef _almevtid_offset
+#undef _alminib_almhdr
+#undef _alminib_exinf
+#undef _almcb_almact
+
+#undef _tnum_tmevt_queue
+#undef _tmevt_queue
+#undef _tmevt_time
+#undef _tmevt_callback
+#undef _tmevt_arg
+
+#undef _stksz
+#undef _stk
+#undef _istkpt
+
+#undef _initialize_object
+#undef _call_inirtn
+#undef _call_terrtn
+
+/*
+ *  target_config.c
+ */
+#undef _target_initialize
+#undef _target_exit
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#include "target_unrename.h"
+
+#endif /* TOPPERS_KERNEL_RENAME_H */
Index: uKadecot/trunk/ssp/kernel/ssp_kernel_api.csv
===================================================================
--- uKadecot/trunk/ssp/kernel/ssp_kernel_api.csv	(revision 101)
+++ uKadecot/trunk/ssp/kernel/ssp_kernel_api.csv	(revision 101)
@@ -0,0 +1,14 @@
+tsk,CRE_TSK,#tskid { .tskatr &exinf &task +atskpri .stksz &stk },
+tsk,DEF_EPR,%tskid { +exepri },0,1,
+flg,CRE_FLG,#flgid { .flgatr .iflgptn },,
+dtq,CRE_DTQ,#dtqid { .dtqatr .dtqcnt &dtqmb },,
+int,CFG_INT,.intno { .intatr +intpri },
+isr,ATT_ISR,{ .isratr &exinf .intno &isr +isrpri },-1
+inh,DEF_INH,.inhno { .inhatr &inthdr },
+ics,DEF_ICS,{ .istksz &istk },-1
+stk,DEF_STK,{ .stksz &stk },-1
+exc,DEF_EXC,.excno { .excatr &exchdr },
+ini,ATT_INI,{ .iniatr &exinf &inirtn },-1
+ter,ATT_TER,{ .teratr &exinf &terrtn },-1
+cyc,CRE_CYC,#cycid { .cycatr &exinf &cychdr .cyctim .cycphs },,
+alm,CRE_ALM,#almid { .almatr &exinf &almhdr },,
Index: uKadecot/trunk/ssp/kernel/ssp_kernel_check.tf
===================================================================
--- uKadecot/trunk/ssp/kernel/ssp_kernel_check.tf	(revision 101)
+++ uKadecot/trunk/ssp/kernel/ssp_kernel_check.tf	(revision 101)
@@ -0,0 +1,89 @@
+$ ======================================================================
+$ 
+$  TOPPERS/SSP Kernel
+$      Smallest Set Profile Kernel
+$ 
+$   Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+$               Graduate School of Information Science, Nagoya Univ., JAPAN
+$   Copyright (C) 2010 by Naoki Saito
+$              Nagoya Municipal Industrial Research Institute, JAPAN
+$ 
+$  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+$  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+$  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+$      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+$      R[hÉÜÜêÄ¢é±ÆD
+$  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+$      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+$      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+$      ØKèðfÚ·é±ÆD
+$  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+$      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+$    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+$         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+$        ·é±ÆD
+$  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+$      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+$      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+$      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$ 
+$  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+$  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+$  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+$  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+$  íÈ¢D
+$ 
+$ ======================================================================
+
+$ 
+$  ÖÌæªÔnÌ`FbN
+$ 
+$IF LENGTH(CHECK_FUNC_ALIGN) || LENGTH(CHECK_FUNC_NONNULL)$
+$	// ^XNÆ^XNáO[`ÌæªÔnÌ`FbN
+	$tinib = SYMBOL("_kernel_tinib_table")$
+	$FOREACH tskid TSK.ID_LIST$
+		$task = PEEK(tinib + offsetof_TINIB_task, sizeof_FP)$
+		$IF LENGTH(CHECK_FUNC_ALIGN) && (task & (CHECK_FUNC_ALIGN - 1))$
+			$ERROR TSK.TEXT_LINE[tskid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
+				"task", TSK.TASK[tskid], tskid, "CRE_TSK")$$END$
+		$END$
+		$IF LENGTH(CHECK_FUNC_NONNULL) && (task == 0)$
+			$ERROR TSK.TEXT_LINE[tskid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is null"),
+				"task", TSK.TASK[tskid], tskid, "CRE_TSK")$$END$
+		$END$
+		$texrtn = PEEK(tinib + offsetof_TINIB_texrtn, sizeof_FP)$
+		$IF LENGTH(CHECK_FUNC_ALIGN) && (texrtn & (CHECK_FUNC_ALIGN - 1))$
+			$ERROR DEF_TEX.TEXT_LINE[tskid]$E_PAR: 
+				$FORMAT(_("%1% `%2%\' of `%3%\' in %4% is not aligned"),
+				"texrtn", TSK.TEXRTN[tskid], tskid, "DEF_TEX")$$END$
+		$END$
+		$tinib = tinib + sizeof_TINIB$
+	$END$
+
+$END$
+
+$ 
+$  X^bNÌæÌæªÔnÌ`FbN
+$ 
+$IF LENGTH(CHECK_STACK_ALIGN) || LENGTH(CHECK_STACK_NONNULL)$
+$	// ñ^XNReLXgpÌX^bNÌæÌæªÔnÌ`FbN
+	$istk = PEEK(SYMBOL("_kernel_istk"), sizeof_void_ptr)$
+	$IF LENGTH(CHECK_STACK_ALIGN) && (istk & (CHECK_STACK_ALIGN - 1))$
+		$ERROR ICE.TEXT_LINE[1]$E_PAR: 
+			$FORMAT(_("%1% `%2%\' in %3% is not aligned"),
+			"istk", ICS.ISTK[1], "DEF_ICS")$$END$
+	$END$
+	$IF LENGTH(CHECK_STACK_NONNULL) && (istk == 0)$
+		$ERROR ICE.TEXT_LINE[1]$E_PAR: 
+			$FORMAT(_("%1% `%2%\' in %3% is null"),
+			"istk", ICS.ISTK[1], "DEF_ICS")$$END$
+	$END$
+$END$
Index: uKadecot/trunk/ssp/kernel/ssp_kernel_def.csv
===================================================================
--- uKadecot/trunk/ssp/kernel/ssp_kernel_def.csv	(revision 101)
+++ uKadecot/trunk/ssp/kernel/ssp_kernel_def.csv	(revision 101)
@@ -0,0 +1,34 @@
+SIL_ENDIAN_BIG,#defined(SIL_ENDIAN_BIG)
+SIL_ENDIAN_LITTLE,#defined(SIL_ENDIAN_LITTLE)
+TA_NULL,TA_NULL,
+TA_ACT,TA_ACT,
+TA_RSTR,TA_RSTR
+TA_STA,TA_STA
+TA_CLR,TA_CLR
+TA_NONKERNEL,TA_NONKERNEL,
+TA_ENAINT,TA_ENAINT,
+TA_EDGE,TA_EDGE,
+DEFAULT_ISTKSZ,DEFAULT_ISTKSZ
+TMIN_TPRI,TMIN_TPRI,signed
+TMAX_TPRI,TMAX_TPRI,signed
+TMIN_ISRPRI,TMIN_ISRPRI,signed
+TMAX_ISRPRI,TMAX_ISRPRI,signed
+TBIT_FLGPTN,TBIT_FLGPTN
+TMAX_MAXCYC,TMAX_MAXCYC
+TMAX_MAXALM,TMAX_MAXALM
+TMAX_RELTIM,TMAX_RELTIM
+TMIN_INTPRI,TMIN_INTPRI,signed
+OMIT_INITIALIZE_INTERRUPT,#defined(OMIT_INITIALIZE_INTERRUPT),
+OMIT_INITIALIZE_EXCEPTION,#defined(OMIT_INITIALIZE_EXCEPTION),
+sizeof_ID,sizeof(ID),
+sizeof_uint_t,sizeof(uint_t),
+sizeof_SIZE,sizeof(SIZE),
+sizeof_ATR,sizeof(ATR),
+sizeof_PRI,sizeof(PRI),
+sizeof_void_ptr,sizeof(void*),
+sizeof_VP,sizeof(void*),
+sizeof_intptr_t,sizeof(intptr_t),
+sizeof_FP,sizeof(FP),
+sizeof_INHNO,sizeof(INHNO),
+sizeof_INTNO,sizeof(INTNO),
+sizeof_EXCNO,sizeof(EXCNO),
Index: uKadecot/trunk/ssp/kernel/startup.c
===================================================================
--- uKadecot/trunk/ssp/kernel/startup.c	(revision 101)
+++ uKadecot/trunk/ssp/kernel/startup.c	(revision 101)
@@ -0,0 +1,171 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2010-2011 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+
+/*
+ *		J[lÌú»ÆI¹
+ */
+
+#include "task.h"
+#include "t_stddef.h"
+#include "kernel_impl.h"
+#include <sil.h>
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_KER_ENTER
+#define LOG_KER_ENTER()
+#endif /* LOG_KER_ENTER */
+
+#ifndef LOG_KER_LEAVE
+#define LOG_KER_LEAVE()
+#endif /* LOG_KER_LEAVE */
+
+#ifndef LOG_EXT_KER_ENTER
+#define LOG_EXT_KER_ENTER()
+#endif /* LOG_EXT_KER_ENTER */
+
+#ifndef LOG_EXT_KER_LEAVE
+#define LOG_EXT_KER_LEAVE(ercd)
+#endif /* LOG_EXT_KER_LEAVE */
+
+
+#ifdef TOPPERS_sta_ker
+
+/*
+ *  J[l®ìóÔtO
+ *
+ *  X^[gAbv[`ÅCfalsei0jÉú»³êé±ÆðúÒµÄ
+ *  ¢éD
+ */
+bool_t	kerflg = false;
+
+/*
+ *  J[lÌN®
+ *    NMIð­SÄÌÝª}XN³ê½óÔ(SÝbNóÔÉ)ÅÄÑo³êéD
+ */
+void
+sta_ker(void)
+{
+	target_initialize();
+	
+	initialize_object();
+	
+	call_inirtn();
+	
+	/*
+	 *  J[lÌ®ìðJn·éD
+	 */	
+	kerflg = true;
+	
+	/* fBXpb`ðN®µC^XNÌ®ìðJn·é */
+	LOG_KER_ENTER();
+	start_dispatch();
+	assert(false);
+}
+
+#endif /* TOPPERS_sta_ker */
+
+#ifdef TOPPERS_ext_ker
+
+/*
+ *  J[lÌI¹
+ */
+ER
+ext_ker(void)
+{
+	SIL_PRE_LOC;
+	
+	LOG_EXT_KER_ENTER();
+	
+	/*
+	 *  ÝbNóÔÉÚs
+	 */
+	SIL_LOC_INT();
+	
+	/*
+	 *  J[l®ìÌI¹
+	 */
+	LOG_KER_LEAVE();
+	kerflg = false;
+	
+	/*
+	 *  J[lÌI¹ÌÄoµ
+	 *
+	 *  ñ^XNReLXgÉØè·¦ÄCexit_kernelðÄÑo·D
+	 */
+	call_exit_kernel();
+	
+	/*
+	 *  SIL_UNL_INTðÄÑo·ªC±±ÉB·é±ÆÍÈ¢D
+	 *  Lq·éÌÍSIL_PRE_LOCÅé¾³êéÏª éêÉC
+	 *  RpCªoÍ·éxð}§·é½ßÅ éD
+	 */
+	SIL_UNL_INT();
+	LOG_EXT_KER_LEAVE(E_SYS)
+	
+	return E_SYS;
+}
+
+
+/*
+ *  J[lÌI¹
+ */
+void
+exit_kernel(void)
+{
+	/*
+	 *  I¹[`ÌÀs
+	 */
+	call_terrtn();
+	
+	/*
+	 *  ^[QbgË¶ÌI¹
+	 */
+	target_exit();
+	assert(false);
+}
+
+#endif /* TOPPERS_ext_ker */
Index: uKadecot/trunk/ssp/kernel/sys_manage.c
===================================================================
--- uKadecot/trunk/ssp/kernel/sys_manage.c	(revision 101)
+++ uKadecot/trunk/ssp/kernel/sys_manage.c	(revision 101)
@@ -0,0 +1,404 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		VXeóÔÇ@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+
+#ifndef LOG_LOC_CPU_ENTER
+#define LOG_LOC_CPU_ENTER()
+#endif /* LOG_LOC_CPU_ENTER */
+
+#ifndef LOG_LOC_CPU_LEAVE
+#define LOG_LOC_CPU_LEAVE(ercd)
+#endif /* LOG_LOC_CPU_LEAVE */
+
+#ifndef LOG_ILOC_CPU_ENTER
+#define LOG_ILOC_CPU_ENTER()
+#endif /* LOG_ILOC_CPU_ENTER */
+
+#ifndef LOG_ILOC_CPU_LEAVE
+#define LOG_ILOC_CPU_LEAVE(ercd)
+#endif /* LOG_ILOC_CPU_LEAVE */
+
+#ifndef LOG_UNL_CPU_ENTER
+#define LOG_UNL_CPU_ENTER()
+#endif /* LOG_UNL_CPU_ENTER */
+
+#ifndef LOG_UNL_CPU_LEAVE
+#define LOG_UNL_CPU_LEAVE(ercd)
+#endif /* LOG_UNL_CPU_LEAVE */
+
+#ifndef LOG_IUNL_CPU_ENTER
+#define LOG_IUNL_CPU_ENTER()
+#endif /* LOG_IUNL_CPU_ENTER */
+
+#ifndef LOG_IUNL_CPU_LEAVE
+#define LOG_IUNL_CPU_LEAVE(ercd)
+#endif /* LOG_IUNL_CPU_LEAVE */
+
+#ifndef LOG_DIS_DSP_ENTER
+#define LOG_DIS_DSP_ENTER()
+#endif /* LOG_DIS_DSP_ENTER */
+
+#ifndef LOG_DIS_DSP_LEAVE
+#define LOG_DIS_DSP_LEAVE(ercd)
+#endif /* LOG_DIS_DSP_LEAVE */
+
+#ifndef LOG_ENA_DSP_ENTER
+#define LOG_ENA_DSP_ENTER()
+#endif /* LOG_ENA_DSP_ENTER */
+
+#ifndef LOG_ENA_DSP_LEAVE
+#define LOG_ENA_DSP_LEAVE(ercd)
+#endif /* LOG_ENA_DSP_LEAVE */
+
+#ifndef LOG_SNS_CTX_ENTER
+#define LOG_SNS_CTX_ENTER()
+#endif /* LOG_SNS_CTX_ENTER */
+
+#ifndef LOG_SNS_CTX_LEAVE
+#define LOG_SNS_CTX_LEAVE(state)
+#endif /* LOG_SNS_CTX_LEAVE */
+
+#ifndef LOG_SNS_LOC_ENTER
+#define LOG_SNS_LOC_ENTER()
+#endif /* LOG_SNS_LOC_ENTER */
+
+#ifndef LOG_SNS_LOC_LEAVE
+#define LOG_SNS_LOC_LEAVE(state)
+#endif /* LOG_SNS_LOC_LEAVE */
+
+#ifndef LOG_SNS_DSP_ENTER
+#define LOG_SNS_DSP_ENTER()
+#endif /* LOG_SNS_DSP_ENTER */
+
+#ifndef LOG_SNS_DSP_LEAVE
+#define LOG_SNS_DSP_LEAVE(state)
+#endif /* LOG_SNS_DSP_LEAVE */
+
+#ifndef LOG_SNS_DPN_ENTER
+#define LOG_SNS_DPN_ENTER()
+#endif /* LOG_SNS_DPN_ENTER */
+
+#ifndef LOG_SNS_DPN_LEAVE
+#define LOG_SNS_DPN_LEAVE(state)
+#endif /* LOG_SNS_DPN_LEAVE */
+
+#ifndef LOG_SNS_KER_ENTER
+#define LOG_SNS_KER_ENTER()
+#endif /* LOG_SNS_KER_ENTER */
+
+#ifndef LOG_SNS_KER_LEAVE
+#define LOG_SNS_KER_LEAVE(state)
+#endif /* LOG_SNS_KER_LEAVE */
+
+/*
+ *  CPUbNóÔÖÌÚs
+ */
+#ifdef TOPPERS_loc_cpu
+
+ER
+loc_cpu(void)
+{
+	ER		ercd;
+	
+	LOG_LOC_CPU_ENTER();
+	CHECK_TSKCTX();
+	
+	if (!t_sense_lock()) {
+		t_lock_cpu();
+	}
+	ercd = E_OK;
+	
+  error_exit:
+	LOG_LOC_CPU_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_loc_cpu */
+
+/*
+ *  CPUbNóÔÖÌÚsiñ^XNReLXgpj
+ */
+#ifdef TOPPERS_iloc_cpu
+
+ER
+iloc_cpu(void)
+{
+	ER		ercd;
+	
+	LOG_ILOC_CPU_ENTER();
+	CHECK_INTCTX();
+	
+	if (!i_sense_lock()) {
+		i_lock_cpu();
+	}
+	ercd = E_OK;
+	
+  error_exit:
+	LOG_ILOC_CPU_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iloc_cpu */
+
+/*
+ *  CPUbNóÔÌð
+ *
+ *  CPUbNÍCfBXpb`ªKvÆÈéT[rXR[ðÄÑo·±
+ *  ÆÍÅ«È¢½ßCCPUbNóÔÌðÉfBXpb`ðN®·é
+ *  KvÍÈ¢D
+ */
+#ifdef TOPPERS_unl_cpu
+
+ER
+unl_cpu(void)
+{
+	ER		ercd;
+	
+	LOG_UNL_CPU_ENTER();
+	CHECK_TSKCTX();
+	
+	if (t_sense_lock()) {
+		t_unlock_cpu();
+	}
+	ercd = E_OK;
+	
+  error_exit:
+	LOG_UNL_CPU_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_unl_cpu */
+
+/*
+ *  CPUbNóÔÌðiñ^XNReLXgpj
+ *
+ *  CPUbNÍCfBXpb`ªKvÆÈéT[rXR[ðÄÑo·±
+ *  ÆÍÅ«È¢½ßCCPUbNóÔÌðÉfBXpb`ÌN®ðv
+ *  ·éKvÍÈ¢D
+ */
+#ifdef TOPPERS_iunl_cpu
+
+ER
+iunl_cpu(void)
+{
+	ER		ercd;
+	
+	LOG_IUNL_CPU_ENTER();
+	CHECK_INTCTX();
+	
+	if (i_sense_lock()) {
+		i_unlock_cpu();
+	}
+	ercd = E_OK;
+	
+  error_exit:
+	LOG_IUNL_CPU_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iunl_cpu */
+
+/*
+ *  fBXpb`ÌÖ~
+ */
+#ifdef TOPPERS_dis_dsp
+
+ER
+dis_dsp(void)
+{
+	ER		ercd;
+	
+	LOG_DIS_DSP_ENTER();
+	CHECK_TSKCTX_UNL();
+	
+	t_lock_cpu();
+	disdsp = true;
+	ercd = E_OK;
+	t_unlock_cpu();
+	
+  error_exit:
+	LOG_DIS_DSP_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_dis_dsp */
+
+/*
+ *  fBXpb`ÌÂ
+ */
+#ifdef TOPPERS_ena_dsp
+
+ER
+ena_dsp(void)
+{
+	ER		ercd;
+	uint_t	tskipri;
+	
+	LOG_ENA_DSP_ENTER();
+	CHECK_TSKCTX_UNL();
+	
+	t_lock_cpu();
+	disdsp = false;
+	
+	tskipri = search_schedtsk();
+	if (tskipri < runtsk_curpri) {
+		run_task(tskipri);
+	}
+	ercd = E_OK;
+	t_unlock_cpu();
+	
+  error_exit:
+	LOG_ENA_DSP_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_ena_dsp */
+
+/*
+ *  ReLXgÌQÆ
+ */
+#ifdef TOPPERS_sns_ctx
+
+bool_t
+sns_ctx(void)
+{
+	bool_t	state;
+	
+	LOG_SNS_CTX_ENTER();
+	state = sense_context() ? true : false;
+	LOG_SNS_CTX_LEAVE(state);
+	
+	return(state);
+}
+
+#endif /* TOPPERS_sns_ctx */
+
+/*
+ *  CPUbNóÔÌQÆ
+ */
+#ifdef TOPPERS_sns_loc
+
+bool_t
+sns_loc(void)
+{
+	bool_t	state;
+	
+	LOG_SNS_LOC_ENTER();
+	state = x_sense_lock() ? true : false;
+	LOG_SNS_LOC_LEAVE(state);
+	
+	return(state);
+}
+
+#endif /* TOPPERS_sns_loc */
+
+/*
+ *  fBXpb`Ö~óÔÌQÆ
+ */
+#ifdef TOPPERS_sns_dsp
+
+bool_t
+sns_dsp(void)
+{
+	bool_t	state;
+	
+	LOG_SNS_DSP_ENTER();
+	state = disdsp;
+	LOG_SNS_DSP_LEAVE(state);
+	
+	return(state);
+}
+
+#endif /* TOPPERS_sns_dsp */
+
+/*
+ *  fBXpb`Û¯óÔÌQÆ
+ */
+#ifdef TOPPERS_sns_dpn
+
+bool_t
+sns_dpn(void)
+{
+	bool_t	state;
+	
+	LOG_SNS_DPN_ENTER();
+	state = ((sense_context()) || (t_sense_lock()) || disdsp) ?
+		true : false;
+	LOG_SNS_DPN_LEAVE(state);
+	
+	return(state);
+}
+
+#endif /* TOPPERS_sns_dpn */
+
+/*
+ *  J[lñ®ìóÔÌQÆ
+ */
+#ifdef TOPPERS_sns_ker
+
+bool_t
+sns_ker(void)
+{
+	bool_t	state;
+	
+	LOG_SNS_KER_ENTER();
+	state = kerflg ? false : true;
+	LOG_SNS_KER_LEAVE(state);
+	
+	return(state);
+}
+
+#endif /* TOPPERS_sns_ker */
Index: uKadecot/trunk/ssp/kernel/task.c
===================================================================
--- uKadecot/trunk/ssp/kernel/task.c	(revision 101)
+++ uKadecot/trunk/ssp/kernel/task.c	(revision 101)
@@ -0,0 +1,447 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010-2015 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2010 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+
+#include "kernel_impl.h"
+#include "task.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+
+#ifndef LOG_DSP_ENTER
+	#define LOG_DSP_ENTER(tskidx)
+#endif /* LOG_DSP_ENTER */
+
+#ifndef LOG_DSP_LEAVE
+	#define LOG_DSP_LEAVE(tskidx)
+#endif /* LOG_DSP_ENTER */
+
+
+extern const intptr_t	tinib_exinf[];			/* ^XNÌg£îñ */
+extern const TASK    	tinib_task[];			/* ^XNÌN®Ôn */
+extern const uint_t  	tinib_epriority[];		/* ^XNÌÀsDæxià\»j */
+
+/* àÖÌvg^Cvé¾ */
+Inline bool_t primap_empty(void);
+Inline bool_t primap_test(uint_t pri);
+Inline uint_t primap_search(void);
+Inline void primap_set(uint_t pri);
+Inline void primap_clear(uint_t pri);
+Inline uint_t bitmap_search(uint_t bitmap);
+
+
+#ifdef TOPPERS_tskini
+
+/*
+ *  ÀsóÔ^XNÌ»ÝDæx
+ */
+uint_t runtsk_curpri;
+
+/*
+ *  ÀsóÔ^XNÌN®Dæx
+ */
+uint_t runtsk_ipri;
+
+/*
+ *  fBL
+[T[`Ì½ßÌrbg}bv
+ */
+volatile uint_t	ready_primap;
+
+/*
+ *  N®vL
+[COÌrbg}bv
+ */
+uint_t	actque_bitmap;
+
+/*
+ *  ^XNfBXpb`N®vtO
+ */
+bool_t	reqflg;
+
+/*
+ *  fBXpb`Ö~óÔ
+ */
+bool_t	disdsp;
+
+/*
+ *  read_primapÌúl
+ */
+extern const uint_t init_rdypmap;
+
+#endif /* TOPPERS_tskini */
+
+#ifdef TOPPERS_get_ipriself
+
+/*
+ *  ^XNID©çÌN®Dæxæ¾(^XNReLXgp)
+ */
+uint_t
+get_ipri_self(ID tskid)
+{
+	uint_t ipri;
+	
+	if(tskid != TSK_SELF)
+	{
+		ipri = (uint_t)((tskid) - TMIN_TSKID);
+	}
+	else
+	{
+		ipri = runtsk_ipri;
+	}
+	return ipri;
+}
+
+#endif /* TOPPERS_get_ipriself */
+
+/*
+ *  ^XNID©çÌN®Dæxæ¾(ñ^XNReLXgp)
+ */
+#ifdef TOPPERS_get_ipri
+
+uint_t
+get_ipri(ID tskid)
+{
+	return (uint_t)(tskid - TMIN_TSKID);
+}
+
+#endif /* TOPPERS_get_ipri */
+
+/*
+ *  rbg}bvT[`Ö
+ *
+ *  bitmapàÌ1ÌrbgÌàCÅàºÊiEjÌàÌðT[`µC»Ìrb
+ *  gÔðÔ·DrbgÔÍCÅºÊrbgð0Æ·éDbitmapÉ0ðwè
+ *  µÄÍÈçÈ¢D±ÌÖÅÍCbitmapª8rbgÅ é±Æð¼èµC
+ *  uint8_t^ÆµÄ¢éD
+ *
+ *  rbgT[`½ßðÂvZbTÅÍCrbgT[`½ßðg¤æ¤É
+ *  «¼µ½ûªø¦ªÇ¢êª éD±Ìæ¤ÈêÉÍC^[Qbg
+ *  Ë¶ÅrbgT[`½ßðgÁ½bitmap_searchðè`µC
+ *  OMIT_BITMAP_SEARCHð}Nè`·êÎæ¢DÜ½CrbgT[`½ßÌ
+ *  T[`ûüªtÈÇÌRÅDæxÆrbgÆÌÎðÏXµ½¢êÉ
+ *  ÍCPRIMAP_BITð}Nè`·êÎæ¢D
+ *
+ *  Ü½CWCuÉffsª éÈçCÌæ¤Éè`µÄWCu
+ *  ðgÁ½ûªø¦ªÇ¢Â\«à éD
+ *		#define	bitmap_search(bitmap) (ffs(bitmap) - 1)
+ */
+#ifndef PRIMAP_BIT
+#define	PRIMAP_BIT(pri)		(1U << (pri))
+#endif /* PRIMAP_BIT */
+
+#ifndef OMIT_BITMAP_SEARCH
+
+static const uint8_t bitmap_search_table[] = { 0U, 1U, 0U, 2U, 0U, 1U, 0U,
+												3U, 0U, 1U, 0U, 2U, 0U, 1U, 0U };
+
+Inline uint_t
+bitmap_search(uint_t bitmap)
+{
+	uint_t	n = 0U;
+
+#if TMAX_TPRI != 8
+	if ((bitmap & 0x00ffU) == 0U) {
+		bitmap >>= 8U;
+		n += 8U;
+	}
+#endif
+	
+	if ((bitmap & 0x0fU) == 0U) {
+		bitmap >>= 4U;
+		n += 4U;
+	}
+	return (n + bitmap_search_table[(bitmap & 0x0fU) - 1U]);
+}
+
+#endif /* OMIT_BITMAP_SEARCH */
+
+
+/*
+ *  N®Dæxrbg}bvªó©Ì`FbN
+ */
+Inline bool_t
+primap_empty(void)
+{
+	return (ready_primap == 0U);
+}
+
+/*
+ *  wèµ½N®DæxÌN®Dæxrbg}bvªZbg³êÄ¢é©Ç¤©Ì`FbN
+ */
+Inline bool_t
+primap_test(uint_t pri)
+{
+	return ((ready_primap & PRIMAP_BIT(pri)) != 0U);
+}
+
+/*
+ *  N®Dæxrbg}bvÌT[`
+ */
+Inline uint_t
+primap_search(void)
+{
+	return bitmap_search(ready_primap);
+}
+
+/*
+ *  N®Dæxrbg}bvÌZbg
+ */
+Inline void
+primap_set(uint_t pri)
+{
+	ready_primap |= PRIMAP_BIT(pri);
+}
+
+/*
+ *  N®Dæxrbg}bvÌNA
+ */
+Inline void
+primap_clear(uint_t pri)
+{
+	ready_primap &= ~PRIMAP_BIT(pri);
+}
+
+/*
+ *  ÅDæÊ^XNÌT[`
+ */
+
+#ifdef TOPPERS_tsksched
+
+uint_t
+search_schedtsk(void)
+{
+	return primap_search();
+}
+
+#endif /* TOPPERS_tsksched */
+
+#ifdef TOPPERS_tskdmt
+/*
+ *  wèµ½N®DæxÌ^XNªÀsÅ«éóÔ©Ç¤©ÌeXg
+ *
+ */
+bool_t
+test_dormant(uint_t ipri)
+{
+	return !primap_test(ipri);
+}
+
+#endif /* TOPPERS_tskdmt */
+
+/*
+ *  ^XNÇW
+[Ìú»
+ */
+
+
+#ifdef TOPPERS_tskini
+
+void
+initialize_task(void)
+{
+	/* N®Dæxrbg}bvÌú» */
+	ready_primap = init_rdypmap;
+	
+	/* ^XNDæxÌú» */
+	runtsk_curpri = TSKPRI_NULL;
+	runtsk_ipri = TSKPRI_NULL;
+	
+	/* N®vL
+[COÌú» */
+	actque_bitmap = 0U;
+	
+	/* ÝÖ~tOÌú» */
+	disdsp = false;
+}
+
+#endif /* TOPPERS_tskini */
+
+/*
+ *  ^XNÌN®
+ */
+
+#ifdef TOPPERS_tskact
+
+bool_t
+make_active(uint_t ipri)
+{
+	bool_t dsp;
+	
+	primap_set(ipri);
+	
+	/* 
+	 *  ÀsóÔ^XNÌ»ÝDæxÆøÅwè³ê½
+	 *  N®ÎÛ^XNÌúDæxðärµCÀsóÔ^XNð
+	 *  ÏX·é©»è·éD
+	 *
+	 *  ½¾µÀsóÔ^XNðÏX·éêÍfBXpb`Ö~óÔàQÆ·éD
+	 */
+	if(ipri < runtsk_curpri) {
+		dsp = !disdsp;
+	}
+	else {
+		dsp = false;
+	}
+	
+	return dsp;
+}
+
+#endif /* TOPPERS_tskact */
+
+
+/*
+ *  ^XNÌÀs
+ */
+
+#ifdef TOPPERS_tskrun
+
+void
+run_task(uint_t ipri)
+{
+	uint_t next_pri;		/* ÉÀsJn·é^XNÌN®Dæx */
+	uint_t saved_ipri;		/* ÄÑoµ³^XNÌúDæx */
+	uint_t saved_curpri;	/* ÄÑoµ³^XNÌ»ÝDæx */
+	bool_t cont;
+	
+	/* ÅDæÊ^XNðÀs·éOÉC»ÝÀsÌ^XNÌ»ÝDæxÆúDæxðÛ¶·é */
+	next_pri = ipri;
+	saved_ipri = runtsk_ipri;
+	saved_curpri = runtsk_curpri;
+	
+	do {
+		/* Às·é^XNÌ»ÝDæxðÀsDæxÉÝè·é */
+		runtsk_curpri = tinib_epriority[next_pri];
+		runtsk_ipri = next_pri;
+#ifndef _MSC_VER
+		/* CPUbNð */
+		t_unlock_cpu();
+		
+		/* ^XNÀsJn */
+		(*((TASK)(tinib_task[next_pri])))(tinib_exinf[next_pri]);
+#else
+		dispatch_task(next_pri);
+#endif
+		if (t_sense_lock()) {
+			/*
+			 *  CPUbNóÔÅext_tskªÄÎê½êÍCCPUbNððµ
+			 *  Ä©ç^XNðI¹·éDÀãÍCT[rXR[àÅÌCPU
+			 *  bNðÈª·êÎæ¢¾¯D
+			 */
+		}
+		else {
+			/*
+			 *  ±Ìt_lock_cpuð±ÌºÌdisdspÌÝèÌæ¤ÉµÈ¢ÌÍC
+			 *  CPUbNÉÄxt_lock_cpuðÄÎÈ¢½ßÅ éD
+			 */
+			t_lock_cpu();
+		}
+		
+		/* ÝDæx}XNÍSðóÔÌÍ¸ÈÌÅC½àµÈ¢ */
+		
+		/*
+		 *  fBXpb`Ö~óÔÅext_tskªÄÎê½êÍCfBXpb
+		 *  `ÂóÔÉµÄ©ç^XNðI¹·éD
+		 *
+		 *	{ÍÈºÌæ¤ÉLq·×«Å éªC¢¸êÉ¹ædisdspð
+		 *	falseÉ·êÎ¢¢½ßCPÉfalseÉÝè·éD
+		 *
+		 *		if (disdsp) {
+		 *			disdsp = false;
+		 *		}
+		 */
+		disdsp = false;
+		
+		/* rbg}bvNAD */
+		primap_clear(next_pri);
+		
+		cont = false;
+		
+		/* ^XNN®vL
+[COÌ`FbN */
+		if (actque_test(next_pri)) {
+			actque_clear(next_pri);
+			(void) make_active(next_pri);
+		}
+		
+		/* ¢¸ê©Ì^XNªÀsÂ\óÔÉÈÁÄ¢é© */
+		if(!primap_empty())
+		{
+			/* ßèæ^XNÌ»ÝDæxæè¢N®DæxðàÂ^XNªN®³ê½© */
+			next_pri = search_schedtsk();
+			if(saved_curpri > next_pri)
+			{
+				cont = true;
+			}
+		}
+	} while(cont);
+	
+	runtsk_curpri = saved_curpri;
+	runtsk_ipri = saved_ipri;
+}
+
+#endif /* TOPPERS_tskrun */
+
+/*
+ *  ^XNfBXpb`
+ */
+
+#ifdef TOPPERS_tskdsp
+
+void
+dispatcher(void)
+{
+	do {
+		if(!primap_empty()) {
+			/* ^XNÌJn */
+			run_task(search_schedtsk());
+		}
+		else {
+			idle_loop();
+		}
+	} while(true);
+}
+
+#endif /* TOPPERS_tsk_dsp */
Index: uKadecot/trunk/ssp/kernel/task.h
===================================================================
--- uKadecot/trunk/ssp/kernel/task.h	(revision 101)
+++ uKadecot/trunk/ssp/kernel/task.h	(revision 101)
@@ -0,0 +1,232 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2009 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2011 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+
+#ifndef TOPPERS_TASK_H
+#define TOPPERS_TASK_H
+
+#include "kernel_impl.h"
+
+
+/*
+ *  ^XNDæxÌà\»EO\»Ï·}N
+ */
+#define INT_PRIORITY(x)		((uint_t)((x) - TMIN_TPRI))
+
+/*
+ *  ^XNIDÌÅålikernel_cfg.cj
+ */
+extern const ID	tmax_tskid;
+
+/*
+ *  ^XNÌ
+ */
+#define tnum_tsk	((uint_t)(tmax_tskid - TMIN_TSKID + 1))
+
+/*
+ *  ÀsÂ\óÔÌ^XNªÈ¢ÉÀs^XNÌ»ÝDæxÉÝè·él
+ */
+#define TSKPRI_NULL		(UINT_MAX)
+
+
+/*
+ *  fBL
+[T[`Ì½ßÌrbg}bv
+ */
+extern volatile uint_t	ready_primap;
+
+/*
+ *  N®vL
+[COÌrbg}bv
+ */
+extern uint_t	actque_bitmap;
+
+/*
+ *  fBXpb`^^XNáO[`N®vtO
+ *
+ *  Ýnh^CPUáOnhÌoûÉCfBXpb`Ü½Í
+ *  ^XNáO[`ÌN®ðv·é±Æð¦·tOD
+ */
+extern bool_t	reqflg;
+
+/*
+ *  fBXpb`Ö~óÔ
+ *
+ *  fBXpb`Ö~óÔÅ é±Æð¦·tOD
+ */
+extern bool_t	disdsp;
+
+/*
+ *  ÀsóÔ^XNÌ»ÝDæx
+ *
+ *  ÀsÌ^XNÉÀsDæxªÝè³êÄ¢êÎÀsDæxªC
+ *  Ýè³êÄ¢È¯êÎN®DæxªÝè³êéD
+ */
+extern uint_t runtsk_curpri;
+
+/*
+ *  ÀsóÔ^XNÌN®Dæx
+ */
+extern uint_t runtsk_ipri;
+
+/*
+ *  ^XNÇW
+[Ìú»
+ *
+ *  SÄÌ^XNðú»·éDe^XNÍ^XN®«ÉTA_ACTªÝè³êÄ¢êÎ
+ *  ÀsÂ\óÔC»¤ÅÈ¢êÍx~óÔÆÈéD
+ *  
+ *  Ü½AfBXpb`ÂtOðfBXpb`ÂóÔÉÝè·éD
+ *  
+ *  {ÖÍRtBM
+[^ª¶¬·éobject_initializeÈOÅÄñÅÍÈçÈ¢D
+ */
+extern void initialize_task(void);
+
+/*
+ *  ^XNÌN®
+ *
+ *  ipriÅwèµ½N®DæxðÂ^XNðÀsÂ\óÔÉJÚ³¹éD
+ *  {ÖðÀs·é±ÆÉæèvGvgª­¶·éêÍtrueðC
+ *  »¤ÅÈ¢êÍfalseðÔ·D
+ *
+ *  {ÖÍCPUbNóÔCSÝbNðóÔCÝDæx}XNSðóÔÅ
+ *  ÄÑo·±ÆD
+ */
+extern bool_t make_active(uint_t ipri);
+
+/*
+ *  wèµ½N®DæxÌ^XNªx~óÔ©Ç¤©ÌeXg
+ *
+ *  ipriÅwèµ½N®DæxðÂ^XNªx~óÔÅ êÎ
+ *  trueð»êÈOiÀsÂ\óÔCÀsÂ\óÔjÅ êÎfalseðÔ·D
+ *
+ *  {ÖÍCPUbNóÔCSÝbNðóÔCÝDæx}XNSðóÔÅ
+ *  ÄÑo·±ÆD
+ */
+extern bool_t test_dormant(uint_t ipri);
+
+/*
+ *  ÅDæÊ^XNÌT[`
+ *
+ *  ÀsÂ\óÔÌ^XNÌ©çÅàDæÊª¢^XNÌúDæxð
+ *  Ô·D
+ *
+ *  {ÖÍCPUbNóÔCSÝbNðóÔCÝDæx}XNSðóÔÅ
+ *  ÄÑo·±ÆD
+ */
+extern uint_t search_schedtsk(void);
+
+/*
+ *  ^XNÌÀs
+ *
+ *  ipriÅwèµ½N®DæxðÂ^XNðÀs·éD
+ *  {Ö©çÀsµ½^XN©çT[rXR[ðoRµÄ
+ *  ÄAIÉÄÎêé±Æà éD
+ *
+ *  {ÖÍCPUbNóÔCSÝbNðóÔCÝDæx}XNSðóÔÅ
+ *  ÄÑo·±ÆD
+ */
+extern void run_task(uint_t ipri);
+
+/*
+ *  ^XNfBXpb`
+ *
+ *  J[lú»®¹ãÉÄÑo³êCÅDæÊÆÈÁ½^XNðÀs·éD
+ *
+ *  {ÖÍCPUbNóÔCSÝbNðóÔCÝDæx}XNSðóÔÅ
+ *  ÄÑo·±ÆD
+ *  È¨C{Ö©çÍ^[µÈ¢D
+ *  
+ */
+extern void dispatcher(void) NoReturn;
+
+/*
+ *  ^XNÌN®Dæxæ¾(^XNReLXgp)
+ *
+ *  tskidÅwèµ½^XNÌN®Dæxðæ¾·éD
+ *  tskidÍTMIN_TSKIDÈãCtmax_tskidÈºÌlCàµ­ÍTSK_SELFÅ
+ *  wèµÈ¯êÎÈçÈ¢D
+ */
+extern uint_t get_ipri_self(ID tskid);
+
+/*
+ *  ^XNÌN®Dæxæ¾(ñ^XNReLXgp)
+ *
+ *  tskidÅwèµ½^XNÌN®Dæxðæ¾·éD
+ *  tskidÍTMIN_TSKIDÈãCtmax_tskidÈºÌlÅwèµÈ¯êÎÈçÈ¢D
+ */
+extern uint_t get_ipri(ID tskid);
+
+
+/* N®vL
+[COrbg}bvÌì */
+#define ACTQUE_BIT(ipri)			(1U << (ipri))
+
+/* N®vL
+[COÌZbg */
+Inline
+void actque_set(uint_t ipri)
+{
+	actque_bitmap |= ACTQUE_BIT(ipri);
+}
+
+/* N®vL
+[COÌNA */
+Inline
+void actque_clear(uint_t ipri)
+{
+	actque_bitmap &= ~ACTQUE_BIT(ipri);
+}
+
+/* N®vL
+[COÌ`FbN */
+Inline
+bool_t actque_test(uint_t ipri)
+{
+	return ((actque_bitmap & ACTQUE_BIT(ipri)) != 0U);
+}
+
+
+#endif /* TOPPERS_TASK_H */
Index: uKadecot/trunk/ssp/kernel/task_manage.c
===================================================================
--- uKadecot/trunk/ssp/kernel/task_manage.c	(revision 101)
+++ uKadecot/trunk/ssp/kernel/task_manage.c	(revision 101)
@@ -0,0 +1,152 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ *
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2011 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏE
+ *  ÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 
+ *      \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[X
+ *      R[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gipÒ}
+ *      j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºLÌ³Û
+ *      ØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Égp
+ *      Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ
+ *        ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹Q
+ *      ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDÜ½C
+ *      {\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©ÈéRÉîÃ
+ *      ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ
+ *  ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉÎ·
+ *  éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌp
+ *  Éæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCð
+ *  íÈ¢D
+ * 
+ */
+
+/*
+ *		^XNÇ@\
+ */
+
+#include "kernel_impl.h"
+#include "check.h"
+#include "task.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_ACT_TSK_ENTER
+#define LOG_ACT_TSK_ENTER(tskid)
+#endif /* LOG_ACT_TSK_ENTER */
+
+#ifndef LOG_ACT_TSK_LEAVE
+#define LOG_ACT_TSK_LEAVE(ercd)
+#endif /* LOG_ACT_TSK_LEAVE */
+
+#ifndef LOG_IACT_TSK_ENTER
+#define LOG_IACT_TSK_ENTER(tskid)
+#endif /* LOG_IACT_TSK_ENTER */
+
+#ifndef LOG_IACT_TSK_LEAVE
+#define LOG_IACT_TSK_LEAVE(ercd)
+#endif /* LOG_IACT_TSK_LEAVE */
+
+
+/*
+ *  ^XNÌN®
+ */
+#ifdef TOPPERS_act_tsk
+
+ER
+act_tsk(ID tskid)
+{
+	ER		ercd;
+	uint_t	itskpri;
+	
+	LOG_ACT_TSK_ENTER(tskid);
+	CHECK_TSKCTX_UNL();
+	CHECK_TSKID_SELF(tskid);
+	
+	itskpri = get_ipri_self(tskid);
+	
+	t_lock_cpu();
+	if (test_dormant(itskpri)) {
+		if(make_active(itskpri)) {
+			run_task(itskpri);
+		}
+		ercd = E_OK;
+	}
+	else if(!actque_test(itskpri)) {
+		actque_set(itskpri);
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	t_unlock_cpu();
+
+  error_exit:
+	LOG_ACT_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_act_tsk */
+
+/*
+ *  ^XNÌN®iñ^XNReLXgpj
+ */
+
+#ifdef TOPPERS_iact_tsk
+
+ER
+iact_tsk(ID tskid)
+{
+	ER		ercd;
+	uint_t	itskpri;
+	
+	LOG_IACT_TSK_ENTER(tskid);
+	CHECK_INTCTX_UNL();
+	CHECK_TSKID(tskid);
+	itskpri = get_ipri(tskid);
+
+	i_lock_cpu();
+	if (test_dormant(itskpri)) {
+		if(make_active(itskpri)) {
+			reqflg = true;
+		}
+		ercd = E_OK;
+	}
+	else if(!actque_test(itskpri)) {
+		actque_set(itskpri);
+		ercd = E_OK;
+	}
+	else {
+		ercd = E_QOVR;
+	}
+	i_unlock_cpu();
+
+  error_exit:
+	LOG_IACT_TSK_LEAVE(ercd);
+	return(ercd);
+}
+
+#endif /* TOPPERS_iact_tsk */
Index: uKadecot/trunk/ssp/pdic/rx600/rx630_uart.c
===================================================================
--- uKadecot/trunk/ssp/pdic/rx600/rx630_uart.c	(revision 101)
+++ uKadecot/trunk/ssp/pdic/rx600/rx630_uart.c	(revision 101)
@@ -0,0 +1,464 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ *  Copyright (C) 2013      by Mitsuhiro Matsuura
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+
+/*
+ * UARTp ÈÕSIOhCo
+ */
+
+#include <sil.h>
+#include <kernel.h>
+#include <t_syslog.h>
+#include "target_syssvc.h"
+#include "rx630_uart.h"
+
+/* VA[hWX^iSMR) */
+#define CKS			UINT_C(0x03)
+#define STOP		UINT_C(0x08)
+#define PM			UINT_C(0x10)
+#define PE			UINT_C(0x20)
+#define CHR			UINT_C(0x40)
+#define CM			UINT_C(0x80)
+#define ASYNC_7BIT	UINT_C(0x00)
+#define ASYNC_8BIT	UINT_C(0x40)
+
+/* VARg[WX^iSCR) */
+#define CKE			UINT_C(0x03)
+#define TEIE		UINT_C(0x04)
+#define RE			UINT_C(0x10)
+#define TE			UINT_C(0x20)
+#define RIE			UINT_C(0x40)
+#define TIE			UINT_C(0x80)
+
+/* VAXe[^XWX^iSSRj */
+#define TEND		UINT_C(0x04)
+#define PER			UINT_C(0x08)
+#define FER			UINT_C(0x10)
+#define ORER		UINT_C(0x20)
+
+/* VAg£[hWX^iSEMR) */
+#define ACS0		UINT_C(0x01)
+#define ABCS		UINT_C(0x10)
+
+#define SCI_SCR_FLG_ENABLE	(RE | TE)
+#define SCI_SMR_FLG_ENABLE	(STOP | PM | PE | CHR | CM)
+
+/*
+ *  VAI/O|[gú»ubNÌè`
+ */
+typedef struct sio_port_initialization_block {
+	volatile uint8_t	*ctlreg;		/* VARg[WX^iSCR) */
+	volatile uint8_t	*modereg;		/* VA[hWX^iSMR) */
+	volatile uint8_t	*extmodereg;	/* VAg£[hWX^iSEMR) */	
+	volatile uint8_t	*statusreg;		/* VAXe[^XWX^iSSRj */
+	volatile uint8_t	*tdreg;			/* gX~bgf[^WX^iTDR)*/
+	volatile uint8_t	*rdreg;			/* V[uf[^WX^iRDR) */
+	volatile uint8_t	*bitratereg;	/* rbg[gWX^iBRR) */
+	volatile uint32_t	*mstpcrreg;		/* W
+[XgbvRg[WX^iMSTPCRj */
+	volatile uint8_t	*ssrreg;		/* Xe[^XWX^ */
+	volatile uint8_t	*rxiirreg;		/* RXIpÝvWX^ */
+	uint8_t				tx_intno;		/* Mif[^GveBjèÝÔ */
+	uint8_t				rx_intno;		/* óMif[^tjèÝÔ */
+	uint8_t				te_intno;		/* MiI¹jèÝÔ */
+	uint8_t				sci_no;			/* SCIÌÔ(SCI0`SCI6) */
+	uint32_t			mstpcr_offset;	/* MSTPCRÌÎ·érbgItZbg */
+} SIOPINIB;
+
+/*
+ *  VAI/O|[gÇubNÌè`
+ */
+struct sio_port_control_block {
+	const SIOPINIB	*p_siopinib; 				/* VAI/O|[gú»ubN */
+	intptr_t 	exinf;			 				/* g£îñ */
+	bool_t		openflag;						/* I[vÏÝtO */
+	bool_t		sendflag;						/* MÝCl[utO */
+	bool_t		getready;						/* ¶ðóMµ½óÔ */
+	bool_t		putready;						/* ¶ðMÅ«éóÔ */
+	bool_t		is_initialized; 				/* foCXú»ÏÝtO */
+};
+
+/*
+ *  VAI/O|[gÇubNÌGA
+ */
+static SIOPCB	siopcb_table[TNUM_SIOP];
+
+/* WX^e[u */
+static const SIOPINIB siopinib_table[TNUM_SIOP] =
+{
+	{
+		(volatile uint8_t *)SCI0_SCR_ADDR,
+		(volatile uint8_t *)SCI0_SMR_ADDR,
+		(volatile uint8_t *)SCI0_SEMR_ADDR,
+		(volatile uint8_t *)SCI0_SSR_ADDR,
+		(volatile uint8_t *)SCI0_TDR_ADDR,
+		(volatile uint8_t *)SCI0_RDR_ADDR,
+		(volatile uint8_t *)SCI0_BRR_ADDR,
+		(volatile uint32_t *)SYSTEM_MSTPCRB_ADDR,
+		(volatile uint8_t *)SCI0_SSR_ADDR,
+		(volatile uint8_t *)ICU_IR215_ADDR,
+		INT_SCI0_TXI,
+		INT_SCI0_RXI,
+		INT_SCI0_TEI,
+		0,
+		SYSTEM_MSTPCRB_MSTPB31_BIT,
+	} ,			/* UART0 */
+#if TNUM_SIOP > 1
+	{
+		(volatile uint8_t *)SCI2_SCR_ADDR,
+		(volatile uint8_t *)SCI2_SMR_ADDR,
+		(volatile uint8_t *)SCI2_SEMR_ADDR,
+		(volatile uint8_t *)SCI2_SSR_ADDR,
+		(volatile uint8_t *)SCI2_TDR_ADDR,
+		(volatile uint8_t *)SCI2_RDR_ADDR,
+		(volatile uint8_t *)SCI2_BRR_ADDR,
+		(volatile uint32_t *)SYSTEM_MSTPCRB_ADDR,
+		(volatile uint8_t *)SCI2_SSR_ADDR,
+		(volatile uint8_t *)ICU_IR223_ADDR,
+		INT_SCI2_TXI,
+		INT_SCI2_RXI,
+		INT_SCI2_TEI,
+		2,
+		SYSTEM_MSTPCRB_MSTPB29_BIT,
+	} ,			/* UART2 */
+#endif
+};
+
+/*
+ *  VAI/O|[gID©çÇubNðæèo·½ßÌ}N
+ */
+#define INDEX_SIOP(siopid)	 ((uint_t)((siopid) - 1))
+#define get_siopcb(siopid)	 (&(siopcb_table[INDEX_SIOP(siopid)]))
+#define get_siopinib(siopid) (&(siopinib_table[INDEX_SIOP(siopid)]))
+
+
+/*
+ *  SIOhCoÌVA[hWX^(SMR)
+ */
+static void
+rx630_uart_setmode(const SIOPINIB *p_siopinib, uint8_t bitrate, uint8_t clksrc)
+{
+	volatile uint8_t i;
+
+	/*
+	 *  SCIhCoÌú»[`
+	 */
+
+	/*
+	 *  èÝvæWX^ÌÝè(ISELRi)
+	 *
+	 *  ZbglÆ¯¶lðÝè·é±ÆÉÈé½ß,
+	 *  ÍÈª·é.
+	 */
+
+	/*
+	 *  W
+[Xgbv@\ÌÝè
+	 */
+	sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA502);	/* ÝÂ */
+	sil_wrw_mem(p_siopinib->mstpcrreg,
+		sil_rew_mem(p_siopinib->mstpcrreg) & ~p_siopinib->mstpcr_offset);
+	sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA500);	/* ÝÖ~ */
+
+	/* óMÖ~, SCKn[qÍüoÍ|[gÆµÄgp */
+	sil_wrb_mem(p_siopinib->ctlreg, 0x00U);
+
+	/* NbNIðrbg(SMR.CKS[1:0]rbgðÝè) */
+	sil_wrb_mem(p_siopinib->modereg, 
+					sil_reb_mem(p_siopinib->modereg) | clksrc);
+
+	/* SMRÉM^ óMtH[}bgðÝè) */
+	sil_wrb_mem(p_siopinib->modereg, 
+			sil_reb_mem(p_siopinib->modereg) & (~SCI_SMR_FLG_ENABLE));
+
+	/* rbg[gðÝè */
+	sil_wrb_mem(p_siopinib->bitratereg, bitrate);
+
+	/* rbgúÔ(î{NbN16TCNÌúÔª1rbgúÔÆÈé) */
+	for(i = 0; i < 16; i++) { }
+
+	/* óMÂ */
+	sil_wrb_mem(p_siopinib->ctlreg, 
+		(sil_reb_mem(p_siopinib->ctlreg) | SCI_SCR_FLG_ENABLE));
+}
+
+
+/*
+ *  SIOhCoÌú»[`
+ */
+void
+rx630_uart_initialize(void)
+{
+	SIOPCB	*p_siopcb;
+	uint_t	i;
+
+	/*
+	 *  VAI/O|[gÇubNÌú»
+	 */
+	for (p_siopcb = siopcb_table, i = 0; i < TNUM_SIOP; p_siopcb++, i++){
+		p_siopcb->p_siopinib = &(siopinib_table[i]);
+		p_siopcb->openflag = false;
+		p_siopcb->sendflag = false;
+	}
+}
+
+/*
+ *  J[lN®Ìoi[oÍpÌú»
+ */
+void
+rx630_uart_init(ID siopid, uint8_t bitrate, uint8_t clksrc)
+{
+	SIOPCB          *p_siopcb   = get_siopcb(siopid);
+	const SIOPINIB  *p_siopinib = get_siopinib(siopid);
+	/*  ±Ì_ÅÍAp_siopcb->p_siopinibÍú»³êÄ¢È¢  */
+
+	/*  ñdú»Ìh~  */
+	p_siopcb->is_initialized = true;
+
+	/*  n[hEFAÌú»ÆMÂ  */
+	rx630_uart_setmode(p_siopinib , bitrate, clksrc);
+	sil_wrb_mem(p_siopinib->ctlreg, 
+		(uint8_t)(sil_reb_mem(p_siopinib->ctlreg) | TE));
+}
+
+/*
+ *  VAI/O|[gÖÌ|[OÅÌoÍ
+ */
+void
+rx630_uart_pol_putc(char c, ID siopid)
+{
+	const SIOPINIB *p_siopinib;
+
+	p_siopinib = get_siopinib(siopid);
+
+	/*
+	 *  MWX^ªóÉÈéÜÅÒÂ
+	 */
+	while((sil_reb_mem(p_siopinib->ssrreg) & SCI_SSR_TEND_BIT) == 0U);
+
+	sil_wrb_mem(p_siopinib->tdreg, (uint8_t)c);
+}
+
+/*
+ *  VAI/O|[gÌI[v
+ */
+SIOPCB *
+rx630_uart_opn_por
+	(ID siopid, intptr_t exinf, uint8_t bitrate, uint8_t clksrc)
+{
+	SIOPCB          *p_siopcb;
+	const SIOPINIB  *p_siopinib;
+
+	p_siopcb = get_siopcb(siopid);
+	p_siopinib = p_siopcb->p_siopinib;
+
+	/*
+	 *  n[hEFAÌú»
+	 *
+	 *  ùÉú»µÄ¢éêÍ, ñdÉú»µÈ¢.
+	 */
+	if(!(p_siopcb->is_initialized)){
+		rx630_uart_setmode(p_siopinib, bitrate, clksrc);
+		p_siopcb->is_initialized = true;
+	}
+
+	p_siopcb->exinf = exinf;
+	p_siopcb->getready = p_siopcb->putready = false;
+	p_siopcb->openflag = true;
+
+	return (p_siopcb);
+}
+
+/*
+ *  VAI/O|[gÌN[Y
+ */
+void
+rx630_uart_cls_por(SIOPCB *p_siopcb)
+{
+	/*
+	 *  UARTâ~
+	 */
+	sil_wrh_mem(p_siopcb->p_siopinib->ctlreg, 0x00U);
+	p_siopcb->openflag = false;
+	p_siopcb->is_initialized = false;
+}
+
+/*
+ *  VAI/O|[gÖÌ¶M
+ */
+bool_t
+rx630_uart_snd_chr(SIOPCB *p_siopcb, char c)
+{
+	bool_t ercd = false;
+
+	if((sil_reb_mem(
+		(uint8_t *)p_siopcb->p_siopinib->ssrreg) & SCI_SSR_TEND_BIT) != 0){
+		sil_wrb_mem(p_siopcb->p_siopinib->tdreg, (uint8_t)c);
+		ercd = true;
+	}
+
+	return ercd;
+}
+
+/*
+ *  VAI/O|[g©çÌ¶óM
+ */
+int_t
+rx630_uart_rcv_chr(SIOPCB *p_siopcb)
+{
+	int_t c = -1;
+
+	/*
+	 *  óMtOªONÌÆ«ÌÝóMobt@©ç¶ðæ¾·é.
+	 *  ±êÍ, |[OóMÉÎ·é½ßÅ é.
+	 *  µ©µ, RX600V[YÅÍóMtOªÈ¢±Æ, VXeT[rX
+	 *  ÅÍóMÝÌ©çµ©f[^ðóMµÉÈ¢±Æ©ç, íÉ
+	 *  óMobt@©ç¶ðæ¾·é.
+	 */
+	c = (int)(sil_reb_mem(p_siopcb->p_siopinib->rdreg));
+
+	return c;
+}
+
+/*
+ *  VAI/O|[g©çÌR[obNÌÂ
+ */
+void
+rx630_uart_ena_cbr(SIOPCB *p_siopcb, uint_t cbrtn)
+{
+	switch (cbrtn) {
+		case SIO_RDY_SND:
+			sil_wrb_mem(p_siopcb->p_siopinib->ctlreg, 
+				(sil_reb_mem(p_siopcb->p_siopinib->ctlreg) | SCI_SCR_TEIE_BIT));
+			break;
+		case SIO_RDY_RCV:
+			sil_wrb_mem(p_siopcb->p_siopinib->ctlreg, 
+				(sil_reb_mem(p_siopcb->p_siopinib->ctlreg) | SCI_SCR_RIE_BIT));
+			break;
+		default:
+			assert(1);
+			break;
+	}
+}
+
+/*
+ *  VAI/O|[g©çÌR[obNÌÖ~
+ */
+void
+rx630_uart_dis_cbr(SIOPCB *p_siopcb, uint_t cbrtn)
+{
+	switch (cbrtn) {
+		case SIO_RDY_SND:
+			sil_wrb_mem(p_siopcb->p_siopinib->ctlreg, 
+				(sil_reb_mem(p_siopcb->p_siopinib->ctlreg) & (~SCI_SCR_TEIE_BIT)));
+			break;
+		case SIO_RDY_RCV:
+			sil_wrb_mem(p_siopcb->p_siopinib->ctlreg, 
+				(sil_reb_mem(p_siopcb->p_siopinib->ctlreg) & (~SCI_SCR_RIE_BIT)));
+			break;
+		default:
+			assert(1);
+			break;
+	}
+}
+
+/*
+ *  SIOÌÝT[rX[`
+ */
+void
+rx630_uart_tx_isr(ID siopid)
+{
+	SIOPCB	*p_siopcb = get_siopcb(siopid);
+
+	if((sil_reb_mem(
+		(void *)p_siopcb->p_siopinib->ssrreg) & SCI_SSR_TEND_BIT) != 0U){
+		/*
+		 *  MÂ\R[obN[`ðÄÑo·D
+		 */
+		rx630_uart_irdy_snd(p_siopcb->exinf);
+	}
+}
+
+void
+rx630_uart_rx_isr(ID siopid)
+{
+	SIOPCB	*p_siopcb = get_siopcb(siopid);
+
+	/*
+	 *  óMtOªONÌÆ«ÌÝóMÊmR[obN[`ðÄÑo·.
+	 *  µ©µ, RX600V[YÅÍóMtOªÈ¢½ß, íÉóMÊm
+	 *  R[obN[`ðÄÑo·.
+	 *  ±±ÅÍóMÝÌ­¶ðM¶é.
+	 */
+	/*
+	 *  óMÊmR[obN[`ðÄÑo·D
+	 */
+	rx630_uart_irdy_rcv(p_siopcb->exinf);
+}
+
+
+/*
+ *  |[gÔ©çÇubNÌæªÔnÖÌÏ·
+ */
+SIOPCB *
+rx630_uart_get_siopcb(ID siopid) {
+	SIOPCB *p_siopcb = get_siopcb(siopid);
+	return(p_siopcb);
+}
+
+/*
+ * ÇubNÌæªÔn©çóMÝÔÖÌÏ·
+ */
+INTNO 
+rx630_uart_intno_rx(SIOPCB *p_siopcb) {
+	INTNO intno = p_siopcb->p_siopinib->rx_intno;
+	return(intno);
+}
+
+/*
+ * ÇubNÌæªÔn©çMÝÔÖÌÏ·
+ */
+INTNO 
+rx630_uart_intno_tx(SIOPCB *p_siopcb) {
+	INTNO intno = p_siopcb->p_siopinib->te_intno;
+	return(intno);
+}
Index: uKadecot/trunk/ssp/pdic/rx600/rx630_uart.h
===================================================================
--- uKadecot/trunk/ssp/pdic/rx600/rx630_uart.h	(revision 101)
+++ uKadecot/trunk/ssp/pdic/rx600/rx630_uart.h	(revision 101)
@@ -0,0 +1,149 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ *  Copyright (C) 2013      by Mitsuhiro Matsuura
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  UARTp ÈÕSIOhCo
+ */
+
+#ifndef TOPPERS_RX630_UART_H
+#define TOPPERS_RX630_UART_H
+
+/* wèÂ\ÈNbN\[X */
+#define CLK_F1	UINT_C(0x00)
+#define CLK_F4	UINT_C(0x01)
+#define CLK_F16	UINT_C(0x02)
+#define CLK_F64	UINT_C(0x03)
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  VAI/O|[gÇubNÌè`
+ */
+typedef struct sio_port_control_block	SIOPCB;
+
+/*
+ *  R[obN[`Ì¯ÊÔ
+ */
+#define SIO_RDY_SND    (1U)        /* MÂ\R[obN */
+#define SIO_RDY_RCV    (2U)        /* óMÊmR[obN */
+
+/*
+ *  SIOhCoÌú»[`
+ */
+extern void rx630_uart_initialize(void);
+
+/*
+ * J[lN®Ìoi[oÍpÌú»
+ */
+extern void rx630_uart_init(ID siopid , uint8_t baud , uint8_t clksrc);
+
+/*
+ *  VAI/O|[gÖÌ|[OÅÌoÍ
+ */
+extern void rx630_uart_pol_putc(char c, ID siopid);
+
+/*
+ *  VAI/O|[gÌI[v
+ */
+extern SIOPCB *rx630_uart_opn_por
+	(ID siopid, intptr_t exinf , uint8_t baud , uint8_t clksrc);
+
+/*
+ *  VAI/O|[gÌN[Y
+ */
+extern void rx630_uart_cls_por(SIOPCB *p_siopcb);
+
+/*
+ *  VAI/O|[gÖÌ¶M
+ */
+extern bool_t rx630_uart_snd_chr(SIOPCB *p_siopcb, char c);
+
+/*
+ *  VAI/O|[g©çÌ¶óM
+ */
+extern int_t rx630_uart_rcv_chr(SIOPCB *p_siopcb);
+
+/*
+ *  VAI/O|[g©çÌR[obNÌÂ
+ */
+extern void  rx630_uart_ena_cbr(SIOPCB *p_siopcb, uint_t cbrtn);
+
+/*
+ *  VAI/O|[g©çÌR[obNÌÖ~
+ */
+extern void rx630_uart_dis_cbr(SIOPCB *p_siopcb, uint_t cbrtn);
+
+/*
+ *  SIOÌÝT[rX[`
+ */
+extern void rx630_uart_tx_isr(ID siopid);
+extern void rx630_uart_rx_isr(ID siopid);
+
+/*
+ *  VAI/O|[g©çÌMÂ\R[obN
+ */
+extern void rx630_uart_irdy_snd(intptr_t exinf);
+
+/*
+ *  VAI/O|[g©çÌóMÊmR[obN
+ */
+extern void rx630_uart_irdy_rcv(intptr_t exinf);
+
+
+/*
+ *  |[gÔ©çÇubNÌæªÔnÖÌÏ·
+ */
+extern SIOPCB *rx630_uart_get_siopcb(ID siopid);
+
+/*
+ * ÇubNÌæªÔn©çóMÝÔÖÌÏ·
+ */
+extern INTNO rx630_uart_intno_rx(SIOPCB *p_siopcb);
+
+/*
+ * ÇubNÌæªÔn©çMÝÔÖÌÏ·
+ */
+extern INTNO rx630_uart_intno_tx(SIOPCB *p_siopcb);
+
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_RX630_UART_H */
Index: uKadecot/trunk/ssp/syssvc/banner.c
===================================================================
--- uKadecot/trunk/ssp/syssvc/banner.c	(revision 101)
+++ uKadecot/trunk/ssp/syssvc/banner.c	(revision 101)
@@ -0,0 +1,69 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010-2012 by Meika Sugimoto
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		J[lN®bZ[WÌoÍ
+ */
+
+#include <kernel.h>
+#include "target_syssvc.h"
+
+#ifndef TARGET_COPYRIGHT
+#define TARGET_COPYRIGHT
+#endif /* TARGET_COPYRIGHT */
+
+extern const char banner[];
+extern const int32_t banner_size;
+
+void
+print_banner(intptr_t exinf)
+{
+	int_t i;
+	
+	for(i = 0 ; i < banner_size - 1 ; i++)
+	{
+		target_fput_log(banner[i]);
+	}
+}
Index: uKadecot/trunk/ssp/syssvc/banner.cfg
===================================================================
--- uKadecot/trunk/ssp/syssvc/banner.cfg	(revision 101)
+++ uKadecot/trunk/ssp/syssvc/banner.cfg	(revision 101)
@@ -0,0 +1,11 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *		J[lN®bZ[WÌoÍÌRtBM
+[Vt@C
+ */
+
+#include "syssvc/banner.h"
+ATT_INI({ TA_NULL, 0, print_banner });
Index: uKadecot/trunk/ssp/syssvc/banner.h
===================================================================
--- uKadecot/trunk/ssp/syssvc/banner.h	(revision 101)
+++ uKadecot/trunk/ssp/syssvc/banner.h	(revision 101)
@@ -0,0 +1,57 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		J[lN®bZ[WÌoÍ
+ */
+
+#ifndef TOPPERS_BANNER_H
+#define TOPPERS_BANNER_H
+
+/*
+ *  J[lN®bZ[WÌoÍ
+ */
+extern void	print_banner(intptr_t exinf) throw();
+
+#endif /* TOPPERS_BANNER_H */
Index: uKadecot/trunk/ssp/syssvc/banner.tf
===================================================================
--- uKadecot/trunk/ssp/syssvc/banner.tf	(revision 101)
+++ uKadecot/trunk/ssp/syssvc/banner.tf	(revision 101)
@@ -0,0 +1,42 @@
+$ 
+$ oi[oÍpÌev[gt@C
+$ 
+$FILE "kernel_cfg.c"$
+
+$ J[l¼Ì
+$KERNEL_NAME = "\"TOPPERS/SSP Kernel \""$
+
+$ o[WÌæèoµ
+
+$MAJOR_VERSION = ((TKERNEL_PRVER >> 12) & 0x0f)$
+$MINOR_VERSION = ((TKERNEL_PRVER >> 4) & 0xff)$
+$PATCH_VERSION = ((TKERNEL_PRVER & 0x0f) & 0x0f)$
+
+$ J­Ò
+$AUTHOR = "\t\t\"Copyright (C) 2010 by Meika Sugimoto\\n\"\t\\\n"$
+$AUTHOR	= CONCAT(AUTHOR , "\t\t\"Copyright (C) 2010 by Naoki Saito\\n\"\t\\\n")$
+$AUTHOR	= CONCAT(AUTHOR , "\t\t\"            Nagoya Municipal Industrial Research Institute, JAPAN\\n\"\t\\\n")$
+
+$BANNER = CONCAT("\"\\n\" " , KERNEL_NAME)$
+$BANNER = CONCAT(BANNER , FORMAT(" \"%d.%X.%d \" \t\\\n" , MAJOR_VERSION , MINOR_VERSION , PATCH_VERSION))$
+$BANNER = CONCAT(BANNER , "\t\t\" for \" TARGET_NAME ")$
+$BANNER = CONCAT(BANNER , "\" (\" __DATE__ \" , \" __TIME__ \")\\n\"\t\\\n")$
+$BANNER = CONCAT(BANNER , CONCAT(AUTHOR , "\t\tTARGET_COPYRIGHT \"\\n\""))$
+
+$NL$
+$NL$
+
+#ifndef TARGET_COPYRIGHT$NL$
+#define TARGET_COPYRIGHT$NL$
+#endif /* TARGET_COPYRIGHT */$NL$
+$NL$
+$NL$
+#ifndef TARGET_NAME$NL$
+#define TARGET_NAME$NL$
+#endif /* TARGET_NAME */$NL$
+$NL$
+$NL$
+const char banner[] = $BANNER$;$NL$
+const int32_t banner_size = sizeof(banner) / sizeof(banner[0]);
+$NL$
+$NL$
Index: uKadecot/trunk/ssp/syssvc/log_output.c
===================================================================
--- uKadecot/trunk/ssp/syssvc/log_output.c	(revision 101)
+++ uKadecot/trunk/ssp/syssvc/log_output.c	(revision 101)
@@ -0,0 +1,203 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2015 by Naoki Saito
+ *              Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		VXeOÌtH[}bgoÍ
+ */
+
+#include <t_stddef.h>
+#include <t_syslog.h>
+
+/*
+ *  lð¶ñÉÏ·
+ */
+#define CONVERT_BUFLEN	((sizeof(uintptr_t) * CHAR_BIT + 2) / 3)
+										/* uintptr_t^ÌlÌÅå¶ */
+static void
+convert(uintptr_t val, uint_t radix, const char *radchar,
+			uint_t width, bool_t minus, bool_t padzero, void (*putc)(char))
+{
+	char	buf[CONVERT_BUFLEN];
+	uint_t	i, j;
+
+	i = 0U;
+	do {
+		buf[i++] = radchar[val % radix];
+		val /= radix;
+	} while (i < CONVERT_BUFLEN && val != 0);
+
+	if (minus && width > 0U) {
+		width -= 1U;
+	}
+	if (minus && padzero) {
+		(*putc)('-');
+	}
+	for (j = i; j < width; j++) {
+		(*putc)((char)(padzero ? '0' : ' '));
+	}
+	if (minus && !padzero) {
+		(*putc)('-');
+	}
+	while (i > 0U) {
+		(*putc)(buf[--i]);
+	}
+}
+
+/*
+ *  ¶ñ®`oÍ
+ */
+static const char raddec[] = "0123456789";
+static const char radhex[] = "0123456789abcdef";
+static const char radHEX[] = "0123456789ABCDEF";
+
+void
+syslog_printf(const char *format, const intptr_t *p_args, void (*putc)(char))
+{
+	char		c;
+	uint_t		width;
+	bool_t		padzero;
+	intptr_t	val;
+	const char	*str;
+
+	while ((c = *format++) != '\0') {
+		if (c != '%') {
+			(*putc)(c);
+			continue;
+		}
+
+		width = 0U;
+		padzero = false;
+		if ((c = *format++) == '0') {
+			padzero = true;
+			c = *format++;
+		}
+		while ('0' <= c && c <= '9') {
+			width = width * 10U + c - '0';
+			c = *format++;
+		}
+		if (c == 'l') {
+			c = *format++;
+		}
+		switch (c) {
+		case 'd':
+			val = (intptr_t)(*p_args++);
+			if (val >= 0) {
+				convert((uintptr_t) val, 10U, raddec,
+										width, false, padzero, putc);
+			}
+			else {
+				convert((uintptr_t)(-val), 10U, raddec,
+										width, true, padzero, putc);
+			}
+			break;
+		case 'u':
+			val = (intptr_t)(*p_args++);
+			convert((uintptr_t) val, 10U, raddec, width, false, padzero, putc);
+			break;
+		case 'x':
+		case 'p':
+			val = (intptr_t)(*p_args++);
+			convert((uintptr_t) val, 16U, radhex, width, false, padzero, putc);
+			break;
+		case 'X':
+			val = (intptr_t)(*p_args++);
+			convert((uintptr_t) val, 16U, radHEX, width, false, padzero, putc);
+			break;
+		case 'c':
+			(*putc)((char)(intptr_t)(*p_args++));
+			break;
+		case 's':
+			str = (const char *)(*p_args++);
+			while ((c = *str++) != '\0') {
+				(*putc)(c);
+			}
+			break;
+		case '%':
+			(*putc)('%');
+			break;
+		case '\0':
+			format--;
+			break;
+		default:
+			break;
+		}
+	}
+}
+
+/*
+ *  OîñÌoÍ
+ */
+void
+syslog_print(const SYSLOG *p_syslog, void (*putc)(char))
+{
+	switch (p_syslog->logtype) {
+	case LOG_TYPE_COMMENT:
+		syslog_printf((const char *)(p_syslog->loginfo[0]),
+								&(p_syslog->loginfo[1]), putc);
+		break;
+	case LOG_TYPE_ASSERT:
+		syslog_printf("%s:%u: Assertion `%s' failed.",
+								&(p_syslog->loginfo[0]), putc);
+		break;
+	default:
+		// s¾ÈíÊÌêÍC½àµÈ¢
+		break;
+	}
+}
+
+/*
+ *  Oîñr¸bZ[WÌoÍ
+ */
+void
+syslog_lostmsg(uint_t lost, void (*putc)(char))
+{
+	intptr_t	lostinfo[1];
+
+	lostinfo[0] = (intptr_t) lost;
+	syslog_printf("%d messages are lost.", lostinfo, putc);
+	(*putc)('\n');
+}
Index: uKadecot/trunk/ssp/syssvc/logtask.c
===================================================================
--- uKadecot/trunk/ssp/syssvc/logtask.c	(revision 101)
+++ uKadecot/trunk/ssp/syssvc/logtask.c	(revision 101)
@@ -0,0 +1,157 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010-2012 by Meika Sugimoto
+ *  Copyright (C) 2015 by Naoki Saito
+ *              Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		VXeO^XN
+ */
+
+#include <kernel.h>
+#include <t_syslog.h>
+#include <log_output.h>
+#include "syssvc/serial.h"
+#include "syssvc/syslog.h"
+#include "logtask.h"
+
+/*
+ *  VXeO^XNÌoÍæÌ|[gID
+ */
+static ID	logtask_portid;
+
+/*
+ *  VAC^tF[XÖÌ1¶oÍ
+ */
+static void
+logtask_putc(char c)
+{
+	serial_wri_dat(logtask_portid, &c, 1);
+}
+
+/*
+ *  O^XNÌú»
+ */
+
+void logtask_initialize(ID log_portid)
+{
+	logtask_portid = log_portid;
+	serial_opn_por(logtask_portid);
+	syslog_msk_log(LOG_UPTO(LOG_INFO), LOG_UPTO(LOG_EMERG));
+	syslog_1(LOG_NOTICE, "System logging task is started on port %d.",
+													logtask_portid);
+}
+/*
+ *  VXeO^XNÌ{Ì
+ */
+void
+logtask_main(intptr_t exinf)
+{
+	SYSLOG	syslog;
+	static uint_t	lost = 0;
+	ER_UINT	rercd;
+	
+	while ((rercd = syslog_rea_log(&syslog)) >= 0) {
+		lost += (uint_t) rercd;
+		if (syslog.logtype >= LOG_TYPE_COMMENT) {
+			if (lost > 0U) {
+				syslog_lostmsg(lost, logtask_putc);
+				lost = 0U;
+			}
+			syslog_print(&syslog, logtask_putc);
+			logtask_putc('\n');
+		}
+	}
+	if (lost > 0U) {
+		syslog_lostmsg(lost, logtask_putc);
+	}
+}
+
+void cychdr_act_logtsk(intptr_t exinf)
+{
+	iact_tsk((ID)exinf);
+}
+
+/*
+ *  VXeO^XNÌI¹
+ */
+void
+logtask_terminate(intptr_t exinf)
+{
+	char	c;
+	SYSLOG	syslog;
+	bool_t	msgflg = false;
+	ER_UINT	rercd;
+
+	/*
+	 *  VAC^tF[XhCoÌMobt@É~Ï³ê½f[^
+	 *  ðCáxoÍ@\ðp¢ÄoÍ·éD
+	 */
+	while (serial_get_chr(logtask_portid, &c)) {
+		target_fput_log(c);
+	}
+
+	/*
+	 *  Oobt@ÉL^³ê½OîñðCáxoÍ@\ðp¢Äo
+	 *  Í·éD
+	 */
+	while ((rercd = syslog_rea_log(&syslog)) >= 0) {
+		if (!msgflg) {
+			/*
+			 *  Oobt@ÉcÁ½OîñÅ é±Æð¦·¶ñðo
+			 *  Í·éD
+			 */
+			syslog_printf("-- buffered messages --\n", NULL, target_fput_log);
+			msgflg = true;
+		}
+		if (rercd > 0) {
+			syslog_lostmsg((uint_t) rercd, target_fput_log);
+		}
+		if (syslog.logtype >= LOG_TYPE_COMMENT) {
+			syslog_print(&syslog, target_fput_log);
+			target_fput_log('\n');
+		}
+	}
+}
Index: uKadecot/trunk/ssp/syssvc/logtask.cfg
===================================================================
--- uKadecot/trunk/ssp/syssvc/logtask.cfg	(revision 101)
+++ uKadecot/trunk/ssp/syssvc/logtask.cfg	(revision 101)
@@ -0,0 +1,16 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *		VXeO^XNÌRtBM
+[Vt@C
+ */
+
+#include "syssvc/logtask.h"
+CRE_TSK(LOGTASK, { TA_ACT, LOGTASK_PORTID, logtask_main,
+						LOGTASK_PRIORITY, LOGTASK_STACK_SIZE, NULL });
+CRE_CYC(LOCCYC , { TA_ACT , 
+	LOGTASK , cychdr_act_logtsk , LOGTASK_INTERVAL , LOGTASK_INTERVAL });
+
+ATT_TER({ TA_NULL, 0, logtask_terminate });
Index: uKadecot/trunk/ssp/syssvc/logtask.h
===================================================================
--- uKadecot/trunk/ssp/syssvc/logtask.h	(revision 101)
+++ uKadecot/trunk/ssp/syssvc/logtask.h	(revision 101)
@@ -0,0 +1,115 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		VXeO^XN
+ */
+
+#ifndef TOPPERS_LOGTASK_H
+#define TOPPERS_LOGTASK_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "target_syssvc.h"
+
+/*
+ *  VXeO^XNÖAÌèÌftHglÌè`
+ */ 
+#ifndef LOGTASK_PRIORITY
+#define LOGTASK_PRIORITY	3		/* úDæx */
+#endif /* LOGTASK_PRIORITY */
+
+#ifndef LOGTASK_STACK_SIZE
+#define LOGTASK_STACK_SIZE	256	/* X^bNÌæÌTCY */
+#endif /* LOGTASK_STACK_SIZE */
+
+#ifndef LOGTASK_PORTID
+#define LOGTASK_PORTID		1		/* VXeOpÌVA|[gÔ */
+#endif /* LOGTASK_PORTID */
+
+#ifndef LOGTASK_INTERVAL
+#define LOGTASK_INTERVAL	10U		/* VXeO^XNÌ®ìÔui~bj*/
+#endif /* LOGTASK_INTERVAL */
+
+#ifndef LOGTASK_FLUSH_WAIT
+#define LOGTASK_FLUSH_WAIT	1U		/* tbV
+Ò¿ÌPÊÔi~bj*/
+#endif /* LOGTASK_FLUSH_WAIT */
+
+/*
+ *  VXeOoÍÌÒ¿í¹
+ *
+ *  Oobt@ÌOÌªcountÈºÉÈéÜÅÒÂDcountª0ÌêÉ
+ *  ÍCVAobt@ªóÉÈéÌàÒÂD
+ */
+extern ER	logtask_flush(uint_t count) throw();
+
+/*
+ *  VXeO^XNÌú»
+ */
+extern void logtask_initialize(ID log_portid) throw();
+
+/*
+ *  VXeO^XNÌ{Ì
+ */
+extern void	logtask_main(intptr_t exinf) throw();
+
+/*
+ *  VXeO^XNðN®·éüúnh
+ */
+extern void	cychdr_act_logtsk(intptr_t exinf) throw();
+
+/*
+ *  VXeO^XNÌI¹
+ */
+extern void	logtask_terminate(intptr_t exinf) throw();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_LOGTASK_H */
Index: uKadecot/trunk/ssp/syssvc/serial.c
===================================================================
--- uKadecot/trunk/ssp/syssvc/serial.c	(revision 101)
+++ uKadecot/trunk/ssp/syssvc/serial.c	(revision 101)
@@ -0,0 +1,655 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2006-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2010-2012 by Meika Sugimoto
+ *  Copyright (C) 2015 by Naoki Saito
+ *              Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ */
+
+/*
+ *		VAC^tF[XhCo
+ */
+
+#include <kernel.h>
+#include "target_syssvc.h"
+#include "target_serial.h"
+#include "serial.h"
+#include "kernel_cfg.h"
+
+/*
+ *  obt@TCYÌftHglÆobt@Ìè`
+ */
+#ifndef SERIAL_RCV_BUFSZ1
+#define	SERIAL_RCV_BUFSZ1	64			/* |[g1ÌóMobt@TCY */
+#endif /* SERIAL_RCV_BUFSZ1 */
+
+#ifndef SERIAL_SND_BUFSZ1
+#define	SERIAL_SND_BUFSZ1	256			/* |[g1ÌMobt@TCY */
+#endif /* SERIAL_SND_BUFSZ1 */
+
+static char	rcv_buffer1[SERIAL_RCV_BUFSZ1];
+static char	snd_buffer1[SERIAL_SND_BUFSZ1];
+
+#if TNUM_PORT >= 2						/* |[g2ÉÖ·éè` */
+
+#ifndef SERIAL_RCV_BUFSZ2
+#define	SERIAL_RCV_BUFSZ2	64			/* |[g2ÌóMobt@TCY */
+#endif /* SERIAL_RCV_BUFSZ2 */
+
+#ifndef SERIAL_SND_BUFSZ2
+#define	SERIAL_SND_BUFSZ2	64			/* |[g2ÌMobt@TCY */
+#endif /* SERIAL_SND_BUFSZ2 */
+
+static char	rcv_buffer2[SERIAL_RCV_BUFSZ2];
+static char	snd_buffer2[SERIAL_SND_BUFSZ2];
+
+#endif /* TNUM_PORT >= 2 */
+
+#if TNUM_PORT >= 3						/* |[g3ÉÖ·éè` */
+
+#ifndef SERIAL_RCV_BUFSZ3
+#define	SERIAL_RCV_BUFSZ3	64			/* |[g3ÌóMobt@TCY */
+#endif /* SERIAL_RCV_BUFSZ3 */
+
+#ifndef SERIAL_SND_BUFSZ3
+#define	SERIAL_SND_BUFSZ3	64			/* |[g3ÌMobt@TCY */
+#endif /* SERIAL_SND_BUFSZ3 */
+
+static char	rcv_buffer3[SERIAL_RCV_BUFSZ3];
+static char	snd_buffer3[SERIAL_SND_BUFSZ3];
+
+#endif /* TNUM_PORT >= 3 */
+
+/*
+ *  VA|[gú»ubN
+ */
+typedef struct serial_port_initialization_block {
+	uint_t	rcv_bufsz;		/* óMobt@TCY */
+	char	*rcv_buffer;	/* óMobt@ */
+	uint_t	snd_bufsz;		/* Mobt@TCY */
+	char	*snd_buffer;	/* Mobt@ */
+} SPINIB;
+
+static const SPINIB spinib_table[TNUM_PORT] = {
+	{ SERIAL_RCV_BUFSZ1, rcv_buffer1,
+	  SERIAL_SND_BUFSZ1, snd_buffer1 },
+#if TNUM_PORT >= 2
+	{ SERIAL_RCV_BUFSZ2, rcv_buffer2,
+	  SERIAL_SND_BUFSZ2, snd_buffer2 },
+#endif /* TNUM_PORT >= 2 */
+#if TNUM_PORT >= 3
+	{ SERIAL_RCV_BUFSZ3, rcv_buffer3,
+	  SERIAL_SND_BUFSZ3, snd_buffer3 },
+#endif /* TNUM_PORT >= 3 */
+};
+
+/*
+ *  VA|[gÇubN
+ */
+typedef struct serial_port_control_block {
+	const SPINIB *p_spinib;		/* VA|[gú»ubN */
+	SIOPCB	*p_siopcb;			/* VAI/O|[gÇubN */
+	bool_t	openflag;			/* I[vÏÝtO */
+	bool_t	errorflag;			/* G[tO */
+	uint_t	ioctl;				/* ®ì§äÌÝèl */
+
+	uint_t	rcv_read_ptr;		/* óMobt@Çoµ|C^ */
+	uint_t	rcv_write_ptr;		/* óMobt@Ý|C^ */
+	uint_t	rcv_count;			/* óMobt@Ì¶ */
+
+	uint_t	snd_read_ptr;		/* Mobt@Çoµ|C^ */
+	uint_t	snd_write_ptr;		/* Mobt@Ý|C^ */
+	uint_t	snd_count;			/* Mobt@Ì¶ */
+} SPCB;
+
+static SPCB	spcb_table[TNUM_PORT];
+
+/*
+ *  VA|[gID©çVA|[gÇubNðæèo·½ßÌ}N
+ */
+#define INDEX_PORT(portid)	((uint_t)((portid) - 1))
+#define get_spcb(portid)	(&(spcb_table[INDEX_PORT(portid)]))
+
+/*
+ *  |C^ÌCNg
+ */
+#define INC_PTR(ptr, bufsz)		{ if (++(ptr) == (bufsz)) { (ptr) = 0; }}
+
+/*
+ *  T[rXR[Äoµ}N
+ *
+ *  T[rXR[ÄoµðÜÞ®expð]¿µCÔlªG[iÌljÌê
+ *  ÉÍCercÉercd_expð]¿µ½lðãüµCerror_exitÉgoto·éD
+ */
+#define SVC(exp, ercd_exp) \
+				{ if ((exp) < 0) { ercd = (ercd_exp); goto error_exit; }}
+
+/*
+ *  E_SYSG[Ì¶¬
+ */
+static ER
+gen_ercd_sys(SPCB *p_spcb)
+{
+	p_spcb->errorflag = true;
+	return(E_SYS);
+}
+
+
+/*
+ *  VAC^tF[XhCoÌú»[`
+ */
+void
+serial_initialize(intptr_t exinf)
+{
+	uint_t	i;
+	SPCB	*p_spcb;
+
+	for (i = 0; i < TNUM_PORT; i++) {
+		p_spcb = &(spcb_table[i]);
+		p_spcb->p_spinib = &(spinib_table[i]);
+		p_spcb->openflag = false;
+	}
+}
+
+/*
+ *  VAC^[tF[XhCoÌI¹[`
+ */
+
+void
+serial_terminate(intptr_t exinf)
+{
+	uint_t	i;
+	SPCB	*p_spcb;
+	
+	/* obt@ÉcÁÄ¢éSÄÌ¶ðoÍ·é */
+	for (i = 0; i < TNUM_PORT; i++) {
+		p_spcb = &(spcb_table[i]);
+
+		while(p_spcb->snd_count != 0U)
+		{
+			if(sio_snd_chr(p_spcb->p_siopcb,
+					p_spcb->p_spinib->snd_buffer[p_spcb->snd_read_ptr]) == true)
+			{
+				INC_PTR(p_spcb->snd_read_ptr, p_spcb->p_spinib->snd_bufsz);
+				p_spcb->snd_count--;
+			}
+		}
+	}
+
+}
+
+/*
+ *  VA|[gÌI[viT[rXR[j
+ */
+ER
+serial_opn_por(ID portid)
+{
+	SPCB	*p_spcb;
+	ER		ercd;
+
+	if (sns_dpn()) {				/* ReLXgÌ`FbN */
+		return(E_CTX);
+	}
+	if (!(1 <= portid && portid <= TNUM_PORT)) {
+		return(E_ID);				/* |[gÔÌ`FbN */
+	}
+	p_spcb = get_spcb(portid);
+
+	SVC(dis_dsp(), gen_ercd_sys(p_spcb));
+	if (p_spcb->openflag) {			/* I[vÏÝ©Ì`FbN */
+		ercd = E_OBJ;
+	}
+	else {
+		/*
+		 *  ÏÌú»
+		 */
+		p_spcb->ioctl = (IOCTL_ECHO | IOCTL_CRLF);
+
+		p_spcb->rcv_read_ptr = p_spcb->rcv_write_ptr = 0U;
+		p_spcb->rcv_count = 0U;
+
+		p_spcb->snd_read_ptr = p_spcb->snd_write_ptr = 0U;
+		p_spcb->snd_count = 0U;
+
+		/*
+		 *  ±êÈ~CÝðÖ~·éD
+		 */
+		if (loc_cpu() < 0) {
+			ercd = E_SYS;
+			goto error_exit_enadsp;
+		}
+
+		/*
+		 *  n[hEFAË¶ÌI[v
+		 */
+		p_spcb->p_siopcb = sio_opn_por(portid, (intptr_t) p_spcb);
+
+		/*
+		 *  óMÊmR[obNðÂ·éD
+		 */
+		sio_ena_cbr(p_spcb->p_siopcb, SIO_RDY_RCV);
+		p_spcb->openflag = true;
+		p_spcb->errorflag = false;
+
+		if (unl_cpu() < 0) {
+			p_spcb->errorflag = true;
+			ercd = E_SYS;
+			goto error_exit_enadsp;
+		}
+		ercd = E_OK;
+	}
+
+  error_exit_enadsp:
+	SVC(ena_dsp(), gen_ercd_sys(p_spcb));
+
+  error_exit:
+	return(ercd);
+}
+
+/*
+ *  VA|[gÌN[YiT[rXR[j
+ */
+ER
+serial_cls_por(ID portid)
+{
+	SPCB	*p_spcb;
+	ER		ercd;
+	bool_t	eflag = false;
+
+	if (sns_dpn()) {				/* ReLXgÌ`FbN */
+		return(E_CTX);
+	}
+	if (!(1 <= portid && portid <= TNUM_PORT)) {
+		return(E_ID);				/* |[gÔÌ`FbN */
+	}
+	p_spcb = get_spcb(portid);
+
+	SVC(dis_dsp(), gen_ercd_sys(p_spcb));
+	if (!(p_spcb->openflag)) {		/* I[vÏÝ©Ì`FbN */
+		ercd = E_OBJ;
+	}
+	else {
+		/*
+		 *  n[hEFAË¶ÌN[Y
+		 */
+		if (loc_cpu() < 0) {
+			eflag = true;
+		}
+		sio_cls_por(p_spcb->p_siopcb);
+		p_spcb->openflag = false;
+		if (unl_cpu() < 0) {
+			eflag = true;
+		}
+		
+		/*
+		 *  G[R[hÌÝè
+		 */
+		if (eflag) {
+			ercd = gen_ercd_sys(p_spcb);
+		}
+		else {
+			ercd = E_OK;
+		}
+	}
+	SVC(ena_dsp(), gen_ercd_sys(p_spcb));
+
+  error_exit:
+	return(ercd);
+}
+
+/*
+ *  VA|[gÖÌ¶M
+ *
+ *  p_spcbÅwè³êéVAI/O|[gÉÎµÄC¶cðM·éD¶
+ *  ðMWX^É¢ê½êÉÍtrueðÔ·D»¤ÅÈ¢êÉÍCM
+ *  WX^ªó¢½±ÆðÊm·éR[obNÖðÂµCfalseðÔ·D
+ *  ±ÌÖÍCCPUbNóÔÅÄÑo³êéD
+ */
+Inline bool_t
+serial_snd_chr(SPCB *p_spcb, char c)
+{
+	if (sio_snd_chr(p_spcb->p_siopcb, c)) {
+		return(true);
+	}
+	else {
+		sio_ena_cbr(p_spcb->p_siopcb, SIO_RDY_SND);
+		return(false);
+	}
+}
+
+/*
+ *  VA|[gÖÌ1¶M
+ *  wè³ê½¶ÌMðÝé.
+ *  foCXÖÌMª¬÷µ½êÜ½Íobt@Éó«ª èi[Å«½êÍ false, 
+ *  obt@ªtÅi[Å«È©Á½êÍ true ðÔ·D
+ *  »êÈOÌG[ª­¶µ½êÍ ER ^ÌG[R[hðÔ·D
+ */
+static ER_BOOL
+serial_wri_chr(SPCB *p_spcb, char c)
+{
+	bool_t	buffer_full;
+	ER		ercd, rercd;
+
+	/*
+	 *  LFÌOÉCRðM·éD
+	 *  ½¾µC1¶ÈºÌó«µ©È¢êÍobt@tÆÝÈµCMµÈ¢D
+	 */
+	if (c == '\n' && (p_spcb->ioctl & IOCTL_CRLF) != 0U) {
+		if(p_spcb->snd_count + 1U < p_spcb->p_spinib->snd_bufsz) {
+			SVC(rercd = serial_wri_chr(p_spcb, '\r'), rercd);
+		}
+		else {
+			return (ER_BOOL) true;
+		}
+	}
+
+	SVC(loc_cpu(), gen_ercd_sys(p_spcb));
+	if ((p_spcb->snd_count == 0U) && serial_snd_chr(p_spcb, c)) {
+		/*
+		 *  VAI/OfoCXÌMWX^É¶ðüêé±ÆÉ¬÷µ
+		 *  ½êD
+		 */
+		buffer_full = false;
+	}
+	else {
+		/*
+		 *  ó«ª êÎCMobt@É¶ðüêéD
+		 *  ó«ªÈ¢êCMµÈ¢D
+		 */
+		if(p_spcb->snd_count < p_spcb->p_spinib->snd_bufsz) {
+			p_spcb->p_spinib->snd_buffer[p_spcb->snd_write_ptr] = c;
+			INC_PTR(p_spcb->snd_write_ptr, p_spcb->p_spinib->snd_bufsz);
+			p_spcb->snd_count++;
+			buffer_full = false;
+		}
+		else {
+			buffer_full = true;
+		}
+	}
+
+	SVC(unl_cpu(), gen_ercd_sys(p_spcb));
+	ercd = (ER_BOOL) buffer_full;
+
+  error_exit:
+	return(ercd);
+}
+
+bool_t
+serial_rcvbuf_empty(SPCB *p_spcb)
+{
+	return (p_spcb->rcv_count == 0u);
+}
+
+/*
+ *  VA|[gÖÌ¶ñMiT[rXR[j
+ */
+ER_UINT
+serial_wri_dat(ID portid, const char *buf, uint_t len)
+{
+	SPCB	*p_spcb;
+	bool_t	buffer_full;
+	uint_t	wricnt = 0U;
+	ER		ercd, rercd;
+
+	if (sns_dpn()) {				/* ReLXgÌ`FbN */
+		return(E_CTX);
+	}
+	if (!(1 <= portid && portid <= TNUM_PORT)) {
+		return(E_ID);				/* |[gÔÌ`FbN */
+	}
+
+	p_spcb = get_spcb(portid);
+	if (!(p_spcb->openflag)) {		/* I[vÏÝ©Ì`FbN */
+		return(E_OBJ);
+	}
+	if (p_spcb->errorflag) {		/* G[óÔ©Ì`FbN */
+		return(E_SYS);
+	}
+	
+	/*
+	 *  len ÜÅ1¶¸ÂMðÝéD
+	 *  rÅobt@tÉÈÁ½çf·éD
+	 */
+	SVC((rercd = dis_dsp()) , rercd);
+	for(wricnt = 0U; wricnt < len; wricnt++) {
+		SVC(rercd = serial_wri_chr(p_spcb, *buf++), rercd);
+		buffer_full = (bool_t)rercd;
+		if(buffer_full) {
+			break;
+		}
+	}
+	SVC((rercd = ena_dsp()) , rercd);
+	
+	ercd = E_OK;
+  error_exit:
+	return(wricnt > 0U ? (ER_UINT) wricnt : ercd);
+}
+
+/*
+ *  VA|[g©çÌ1¶óM
+ *  ¶ÌóMðÝé.
+ *  obt@Éf[^ª¶ÝµCæ¾Å«½êÍ false, 
+ *  obt@ªóÅæ¾Å«È©Á½êÍ true ðÔ·D
+ *  »êÈOÌG[ª­¶µ½êÍ ER ^ÌG[R[hðÔ·D
+ */
+static ER_BOOL
+serial_rea_chr(SPCB *p_spcb, char *p_c)
+{
+	bool_t	buffer_empty;
+	ER		ercd;
+
+	SVC(loc_cpu(), gen_ercd_sys(p_spcb));
+
+	/*
+	 *  f[^ª¶Ý·êÎCóMobt@©ç¶ðæèo·D
+	 *  È¯êÎæèo³È¢D
+	 */
+	if(p_spcb->rcv_count > 0U) {
+		*p_c = p_spcb->p_spinib->rcv_buffer[p_spcb->rcv_read_ptr];
+		INC_PTR(p_spcb->rcv_read_ptr, p_spcb->p_spinib->rcv_bufsz);
+		p_spcb->rcv_count--;
+		buffer_empty = false;
+	}
+	else {
+		buffer_empty = true;
+	}
+	
+	SVC(unl_cpu(), gen_ercd_sys(p_spcb));
+	ercd = (ER_BOOL) buffer_empty;
+
+  error_exit:
+	return(ercd);
+}
+
+/*
+ *  VA|[g©çÌ¶ñóMiT[rXR[j
+ */
+ER_UINT
+serial_rea_dat(ID portid, char *buf, uint_t len)
+{
+	SPCB	*p_spcb;
+	bool_t	buffer_empty;
+	uint_t	reacnt = 0U;
+	char	c = '\0';		/* RpCÌxð}~·é½ßÉú»·é */
+	ER		ercd, rercd;
+
+	if (sns_dpn()) {				/* ReLXgÌ`FbN */
+		return(E_CTX);
+	}
+	if (!(1 <= portid && portid <= TNUM_PORT)) {
+		return(E_ID);				/* |[gÔÌ`FbN */
+	}
+
+	p_spcb = get_spcb(portid);
+	if (!(p_spcb->openflag)) {		/* I[vÏÝ©Ì`FbN */
+		return(E_OBJ);
+	}
+	if (p_spcb->errorflag) {		/* G[óÔ©Ì`FbN */
+		return(E_SYS);
+	}
+	
+	/*
+	 *  len ÜÅóMðÝéD
+	 *  obt@ªóÅÇÝo¹È©Á½êÍf·é
+	 */
+	SVC((rercd = dis_dsp()) , rercd);
+	for(reacnt = 0U; reacnt < len; reacnt++) {
+		SVC(rercd = serial_rea_chr(p_spcb, &c), rercd);
+		buffer_empty = (bool_t)rercd;
+
+		if(buffer_empty) {
+			break;
+		}
+		else {
+			/*
+			 *  GR[obND
+			 */
+			if ((p_spcb->ioctl & IOCTL_ECHO) != 0U) {
+				SVC(rercd = serial_wri_chr(p_spcb, c), rercd);
+			}
+			*buf++ = c;
+		}
+	}
+	SVC((rercd = ena_dsp()) , rercd);
+	
+	ercd = E_OK;
+  error_exit:
+	return(reacnt > 0U ? (ER_UINT) reacnt : ercd);
+}
+
+/*
+ *  VA|[gÌ§äiT[rXR[j
+ */
+ER
+serial_ctl_por(ID portid, uint_t ioctl)
+{
+	SPCB	*p_spcb;
+
+	if (sns_dpn()) {				/* ReLXgÌ`FbN */
+		return(E_CTX);
+	}
+	if (!(1 <= portid && portid <= TNUM_PORT)) {
+		return(E_ID);				/* |[gÔÌ`FbN */
+	}
+
+	p_spcb = get_spcb(portid);
+	if (!(p_spcb->openflag)) {		/* I[vÏÝ©Ì`FbN */
+		return(E_OBJ);
+	}
+	if (p_spcb->errorflag) {		/* G[óÔ©Ì`FbN */
+		return(E_SYS);
+	}
+
+	p_spcb->ioctl = ioctl;
+	return(E_OK);
+}
+
+/*
+ *  VA|[g©çÌMÂ\R[obN
+ */
+void
+sio_irdy_snd(intptr_t exinf)
+{
+	SPCB	*p_spcb;
+
+	p_spcb = (SPCB *) exinf;
+
+	if (p_spcb->snd_count > 0U) {
+		/*
+		 *  Mobt@©ç¶ðæèoµÄM·éD
+		 */
+		(void) sio_snd_chr(p_spcb->p_siopcb,
+					p_spcb->p_spinib->snd_buffer[p_spcb->snd_read_ptr]);
+		INC_PTR(p_spcb->snd_read_ptr, p_spcb->p_spinib->snd_bufsz);
+		p_spcb->snd_count--;
+	}
+	else {
+		/*
+		 *  M·×«¶ªÈ¢êÍCMÂ\R[obNðÖ~·éD
+		 */
+		sio_dis_cbr(p_spcb->p_siopcb, SIO_RDY_SND);
+	}
+}
+
+/*
+ *  VA|[g©çÌóMÊmR[obN
+ */
+void
+sio_irdy_rcv(intptr_t exinf)
+{
+	SPCB	*p_spcb;
+	char	c;
+	
+	p_spcb = (SPCB *) exinf;
+	c = (char) sio_rcv_chr(p_spcb->p_siopcb);
+	
+	if (p_spcb->rcv_count != p_spcb->p_spinib->rcv_bufsz) {
+		/*
+		 *  óMµ½¶ðóMobt@ÉüêéD
+		 *  obt@tÌêCóMµ½¶ðÌÄéD
+		 */
+		p_spcb->p_spinib->rcv_buffer[p_spcb->rcv_write_ptr] = c;
+		INC_PTR(p_spcb->rcv_write_ptr, p_spcb->p_spinib->rcv_bufsz);
+		p_spcb->rcv_count++;
+	}
+}
+
+/*
+ *  VAC^tF[XhCo©çÌ¢M¶Ìæoµ
+ */
+bool_t
+serial_get_chr(ID portid, char *p_c)
+{
+	SPCB	*p_spcb;
+
+	if (1 <= portid && portid <= TNUM_PORT) {	/* |[gÔÌ`FbN */
+		p_spcb = get_spcb(portid);
+		if (p_spcb->openflag) {					/* I[vÏÝ©Ì`FbN */
+			if (p_spcb->snd_count > 0U) {
+				*p_c = p_spcb->p_spinib->snd_buffer[p_spcb->snd_read_ptr];
+				INC_PTR(p_spcb->snd_read_ptr, p_spcb->p_spinib->snd_bufsz);
+				p_spcb->snd_count--;
+				return(true);
+			}
+		}
+	}
+	return(false);
+}
Index: uKadecot/trunk/ssp/syssvc/serial.cfg
===================================================================
--- uKadecot/trunk/ssp/syssvc/serial.cfg	(revision 101)
+++ uKadecot/trunk/ssp/syssvc/serial.cfg	(revision 101)
@@ -0,0 +1,15 @@
+/*
+ *  @(#) $Id$
+ */
+
+/*
+ *  VAC^tF[XhCoÌRtBM
+[Vt@C
+ */
+
+#include "target_syssvc.h"
+INCLUDE("target_serial.cfg");
+
+#include "syssvc/serial.h"
+ATT_INI({ TA_NULL, 0, serial_initialize });
+ATT_TER({ TA_NULL, 0, serial_terminate });
Index: uKadecot/trunk/ssp/syssvc/serial.h
===================================================================
--- uKadecot/trunk/ssp/syssvc/serial.h	(revision 101)
+++ uKadecot/trunk/ssp/syssvc/serial.h	(revision 101)
@@ -0,0 +1,105 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Toyohashi Open Platform for Embedded Real-Time Systems/
+ *      Advanced Standard Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2015 by Naoki Saito
+ *              Nagoya Municipal Industrial Research Institute, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		VAC^tF[XhCo
+ */
+
+#ifndef TOPPERS_SERIAL_H
+#define TOPPERS_SERIAL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  VAC^tF[XhCoÌp¢épPbg
+ */
+typedef struct {
+	uint_t		reacnt;			/* óMobt@Ì¶ */
+	uint_t		wricnt;			/* Mobt@Ì¶ */
+} T_SERIAL_RPOR;
+
+/*
+ *  VAC^tF[XhCoÌú»[`
+ */
+extern void		serial_initialize(intptr_t exinf);
+
+/*
+ *  VAC^tF[XhCoÌI¹[`
+ */
+extern void		serial_terminate(intptr_t exinf);
+
+/*
+ *  VAC^tF[XhCo©çÌ¢M¶Ìæoµ
+ */
+extern bool_t	serial_get_chr(ID portid, char *p_c);
+
+/*
+ *  VAC^tF[XhCoÌT[rXR[
+ */
+extern ER		serial_opn_por(ID portid);
+extern ER		serial_cls_por(ID portid);
+extern ER_UINT	serial_rea_dat(ID portid, char *buf, uint_t len);
+extern ER_UINT	serial_wri_dat(ID portid, const char *buf, uint_t len);
+extern ER		serial_ctl_por(ID portid, uint_t ioctl);
+
+/*
+ *  VAC^tF[XhCoÌ®ì§äpÌ½ßÌè
+ *
+ *  ÈºÌèÍCrbgÉ_aðÆÁÄp¢éD
+ */
+#define	IOCTL_NULL	0U			/* wèÈµ */
+#define	IOCTL_ECHO	0x0001U		/* óMµ½¶ðGR[obN */
+#define	IOCTL_CRLF	0x0010U		/* LFðM·éOÉCRðtÁ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_SERIAL_H */
Index: uKadecot/trunk/ssp/syssvc/syslog.c
===================================================================
--- uKadecot/trunk/ssp/syssvc/syslog.c	(revision 101)
+++ uKadecot/trunk/ssp/syssvc/syslog.c	(revision 101)
@@ -0,0 +1,224 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2010 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id$
+ */
+
+/*
+ *		VXeO@\
+ */
+
+#include <sil.h>
+#undef TOPPERS_OMIT_SYSLOG
+#include <t_syslog.h>
+#include <log_output.h>
+#include "target_syssvc.h"
+#include "syslog.h"
+
+/*
+ *  g[XO}NÌftHgè`
+ */
+#ifndef LOG_SYSLOG_WRI_LOG_ENTER
+#define LOG_SYSLOG_WRI_LOG_ENTER(prio, p_syslog)
+#endif /* LOG_SYSLOG_WRI_LOG_ENTER */
+
+#ifndef LOG_SYSLOG_WRI_LOG_LEAVE
+#define LOG_SYSLOG_WRI_LOG_LEAVE(ercd)
+#endif /* LOG_SYSLOG_WRI_LOG_LEAVE */
+
+#ifndef LOG_SYSLOG_REA_LOG_ENTER
+#define LOG_SYSLOG_REA_LOG_ENTER(p_syslog)
+#endif /* LOG_SYSLOG_REA_LOG_ENTER */
+
+#ifndef LOG_SYSLOG_REA_LOG_LEAVE
+#define LOG_SYSLOG_REA_LOG_LEAVE(ercd, p_syslog)
+#endif /* LOG_SYSLOG_REA_LOG_LEAVE */
+
+#ifndef LOG_SYSLOG_MSK_LOG_ENTER
+#define LOG_SYSLOG_MSK_LOG_ENTER(logmask, lowmask)
+#endif /* LOG_SYSLOG_MSK_LOG_ENTER */
+
+#ifndef LOG_SYSLOG_MSK_LOG_LEAVE
+#define LOG_SYSLOG_MSK_LOG_LEAVE(ercd)
+#endif /* LOG_SYSLOG_MSK_LOG_LEAVE */
+
+#ifndef LOG_SYSLOG_REF_LOG_ENTER
+#define LOG_SYSLOG_REF_LOG_ENTER(pk_rlog)
+#endif /* LOG_SYSLOG_REF_LOG_ENTER */
+
+#ifndef LOG_SYSLOG_REF_LOG_LEAVE
+#define LOG_SYSLOG_REF_LOG_LEAVE(pk_rlog)
+#endif /* LOG_SYSLOG_REF_LOG_LEAVE */
+
+/*
+ *  »ÝÌVXe
+ *
+ *  Oðæèo·½ßÉCâÞÈ­CJ[lÌàÏðQÆµÄ¢
+ *  éD
+ */
+extern ulong_t	_kernel_current_time;
+
+/*
+ *  Oobt@Æ»êÉANZX·é½ßÌ|C^
+ */
+static SYSLOG	syslog_buffer[TCNT_SYSLOG_BUFFER];	/* Oobt@ */
+static uint_t	syslog_count;			/* Oobt@ÌOÌ */
+static uint_t	syslog_head;			/* æªÌOÌi[Êu */
+static uint_t	syslog_tail;			/* ÌOÌi[Êu */
+static uint_t	syslog_lost;			/* ¸íê½OÌ */
+
+/*
+ *  oÍ·×«OîñÌdvxirbg}bvj
+ */
+static uint_t	syslog_logmask;			/* Oobt@ÉL^·×«dvx */
+static uint_t	syslog_lowmask_not;		/* áxoÍ·×«dvxi½]j*/
+
+/*
+ *  VXeO@\Ìú»
+ */
+void
+syslog_initialize(intptr_t exinf)
+{
+	syslog_count = 0U;
+	syslog_head = syslog_tail = 0U;
+	syslog_lost = 0U;
+	syslog_logmask = 0U;
+	syslog_lowmask_not = 0U;
+}     
+
+/* 
+ *  OîñÌoÍ
+ *
+ *  CPUbNóÔâÀsReLXgÉæç¸®ìÅ«éæ¤ÉÀµÄ éD
+ */
+ER
+syslog_wri_log(uint_t prio, const SYSLOG *p_syslog)
+{
+	SIL_PRE_LOC;
+
+	LOG_SYSLOG_WRI_LOG_ENTER(prio, p_syslog);
+	SIL_LOC_INT();
+
+	/*
+	 *  OÌÝè
+	 */
+	((SYSLOG *) p_syslog)->logtim = _kernel_current_time;
+
+	/*
+	 *  Oobt@ÉL^
+	 */
+	if ((syslog_logmask & LOG_MASK(prio)) != 0U) {
+		syslog_buffer[syslog_tail] = *p_syslog;
+		syslog_tail++;
+		if (syslog_tail >= TCNT_SYSLOG_BUFFER) {
+			syslog_tail = 0U;
+		}
+		if (syslog_count < TCNT_SYSLOG_BUFFER) {
+			syslog_count++;
+		}
+		else {
+			syslog_head = syslog_tail;
+			syslog_lost++;
+		}
+	}
+
+	/*
+	 *  áxoÍ
+	 */
+	if (((~syslog_lowmask_not) & LOG_MASK(prio)) != 0U) {
+		syslog_print(p_syslog, target_fput_log);
+		(*target_fput_log)('\n');
+	}
+
+	SIL_UNL_INT();
+	LOG_SYSLOG_WRI_LOG_LEAVE(E_OK);
+	return(E_OK);
+}
+
+/*
+ *  Oobt@©çÌÇoµ
+ *
+ *  CPUbNóÔâÀsReLXgÉæç¸®ìÅ«éæ¤ÉÀµÄ éD
+ */
+ER_UINT
+syslog_rea_log(SYSLOG *p_syslog)
+{
+	ER_UINT	ercd;
+	SIL_PRE_LOC;
+
+	LOG_SYSLOG_REA_LOG_ENTER(p_syslog);
+	SIL_LOC_INT();
+
+	/*
+	 *  Oobt@©çÌæoµ
+	 */
+	if (syslog_count > 0U) {
+		*p_syslog = syslog_buffer[syslog_head];
+		syslog_count--;
+		syslog_head++;
+		if (syslog_head >= TCNT_SYSLOG_BUFFER) {
+			syslog_head = 0U;
+		}
+		ercd = (ER_UINT) syslog_lost;
+		syslog_lost = 0U;
+	}
+	else {
+		ercd = E_OBJ;
+	}
+
+	SIL_UNL_INT();
+	LOG_SYSLOG_REA_LOG_LEAVE(ercd, p_syslog);
+	return(ercd);
+}
+
+/* 
+ *  oÍ·×«OîñÌdvxÌÝè
+ */
+ER
+syslog_msk_log(uint_t logmask, uint_t lowmask)
+{
+	LOG_SYSLOG_MSK_LOG_ENTER(logmask, lowmask);
+	syslog_logmask = logmask;
+	syslog_lowmask_not = ~lowmask;
+	LOG_SYSLOG_MSK_LOG_LEAVE(E_OK);
+	return(E_OK);
+}
Index: uKadecot/trunk/ssp/syssvc/syslog.cfg
===================================================================
--- uKadecot/trunk/ssp/syssvc/syslog.cfg	(revision 101)
+++ uKadecot/trunk/ssp/syssvc/syslog.cfg	(revision 101)
@@ -0,0 +1,11 @@
+/*
+ *  $Id$
+ */
+
+/*
+ *		VXeO@\ÌRtBM
+[Vt@C
+ */
+
+#include "syssvc/syslog.h"
+ATT_INI({ TA_NULL, 0, syslog_initialize });
Index: uKadecot/trunk/ssp/syssvc/syslog.h
===================================================================
--- uKadecot/trunk/ssp/syssvc/syslog.h	(revision 101)
+++ uKadecot/trunk/ssp/syssvc/syslog.h	(revision 101)
@@ -0,0 +1,93 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  $Id$
+ */
+
+/*
+ *		VXeO@\
+ */
+
+#ifndef TOPPERS_SYSLOG_H
+#define TOPPERS_SYSLOG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  VXeOoÍðs¤½ßÌè`
+ */
+#include <t_syslog.h>
+
+/*
+ *  Oobt@Æ»êÉANZX·é½ßÌ|C^
+ */
+#ifndef TCNT_SYSLOG_BUFFER
+#define TCNT_SYSLOG_BUFFER	16		/* Oobt@ÌTCY */
+#endif /* TCNT_SYSLOG_BUFFER */
+
+/*
+ *  VXeO@\Ìú»
+ */
+extern void	syslog_initialize(intptr_t exinf) throw();
+
+/*
+ *  OîñÌoÍ
+ */
+extern ER	syslog_wri_log(uint_t prio, const SYSLOG *p_syslog) throw();
+
+/*
+ *  Oobt@©çÌOîñÌÇoµ
+ */
+extern ER_UINT	syslog_rea_log(SYSLOG *p_syslog) throw();
+
+/* 
+ *  oÍ·×«OîñÌdvxÌÝè
+ */
+extern ER	syslog_msk_log(uint_t logmask, uint_t lowmask) throw();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TOPPERS_SYSLOG_H */
Index: uKadecot/trunk/ssp/syssvc/syssvc_def.csv
===================================================================
--- uKadecot/trunk/ssp/syssvc/syssvc_def.csv	(revision 101)
+++ uKadecot/trunk/ssp/syssvc/syssvc_def.csv	(revision 101)
@@ -0,0 +1,1 @@
+TKERNEL_PRVER,TKERNEL_PRVER,
Index: uKadecot/trunk/ssp/syssvc/vasyslog.c
===================================================================
--- uKadecot/trunk/ssp/syssvc/vasyslog.c	(revision 101)
+++ uKadecot/trunk/ssp/syssvc/vasyslog.c	(revision 101)
@@ -0,0 +1,111 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2004-2008 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *		ÂÏøÌVXeOCu
+ */
+
+#include <t_stddef.h>
+#include <t_syslog.h>
+#include <stdarg.h>
+
+void
+syslog(uint_t prio, const char *format, ...)
+{
+	SYSLOG	syslog;
+	va_list	ap;
+	uint_t	i;
+	char	c;
+	bool_t	lflag;
+
+	syslog.logtype = LOG_TYPE_COMMENT;
+	syslog.loginfo[0] = (intptr_t) format;
+	i = 1U;
+	va_start(ap, format);
+
+	while ((c = *format++) != '\0' && i < TMAX_LOGINFO) {
+		if (c != '%') {
+			continue;
+		}
+
+		lflag = false;
+		c = *format++;
+		while ('0' <= c && c <= '9') {
+			c = *format++;
+		}
+		if (c == 'l') {
+			lflag = true;
+			c = *format++;
+		}
+		switch (c) {
+		case 'd':
+			syslog.loginfo[i++] = lflag ? (intptr_t) va_arg(ap, long_t)
+										: (intptr_t) va_arg(ap, int_t);
+			break;
+		case 'u':
+		case 'x':
+		case 'X':
+			syslog.loginfo[i++] = lflag ? (intptr_t) va_arg(ap, ulong_t)
+										: (intptr_t) va_arg(ap, uint_t);
+			break;
+		case 'p':
+			syslog.loginfo[i++] = (intptr_t) va_arg(ap, void *);
+			break;
+		case 'c':
+			syslog.loginfo[i++] = (intptr_t) va_arg(ap, int);
+			break;
+		case 's':
+			syslog.loginfo[i++] = (intptr_t) va_arg(ap, const char *);
+			break;
+		case '\0':
+			format--;
+			break;
+		default:
+			break;
+		}
+	}
+	va_end(ap);
+	(void) syslog_wri_log(prio, &syslog);
+}
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/E_PACKAGE
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/E_PACKAGE	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/E_PACKAGE	(revision 101)
@@ -0,0 +1,6 @@
+E_PACKAGE asp_rsk_rx_hew
+VERSION %date
+
+INCLUDE ../../MANIFEST
+INCLUDE ../../arch/rx_rxc/MANIFEST
+INCLUDE ../../cfg/MANIFEST
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/MANIFEST
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/MANIFEST	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/MANIFEST	(revision 101)
@@ -0,0 +1,34 @@
+PACKAGE asp_target_rsk_rx_hew
+VERSION 1.6.0
+
+sample_workspace
+E_PACKAGE
+MANIFEST
+asm_config.cfg
+asm_config_pass1.bat
+asm_config_pass2.bat
+sectrx.inc
+starter_kit.h
+target.tf
+target_asm_config.tf
+target_cfg1_out.h
+target_check.tf
+target_config.c
+target_config.h
+target_def.csv
+target_kernel.h
+target_rename.def
+target_rename.h
+target_serial.c
+target_serial.cfg
+target_serial.h
+target_sil.h
+target_stddef.h
+target_support.src
+target_syssvc.h
+target_test.h
+target_timer.c
+target_timer.cfg
+target_timer.h
+target_unrename.h
+target_user.txt
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/asm_config.cfg
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/asm_config.cfg	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/asm_config.cfg	(revision 101)
@@ -0,0 +1,8 @@
+/*
+ *  asm_config.inc ¶¬vWFNgpRtBM
+[Vt@C
+ *
+ *  RtBM
+[VÍsÈíÈ¢½ßót@CÆ·é.
+ */
+
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/grsakura.h
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/grsakura.h	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/grsakura.h	(revision 101)
@@ -0,0 +1,94 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2010 by Witz Corporation, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ (1)`(4) Ìð©CFree Software Foundation 
+ *  ÉæÁÄö\³êÄ¢é GNU General Public License Ì Version 2 ÉL
+ *  q³êÄ¢éðð½·êÉÀèC{\tgEFAi{\tgEFA
+ *  ðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏEÄzziÈºC
+ *  pÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄC»ÌKpÂ\«à
+ *  ÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEFAÌpÉæè¼
+ *  ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»ÌÓCðíÈ¢D
+ * 
+ */
+
+/* GR-SAKURApwb_t@ */
+
+#ifndef	TOPPERS_GRSAKURA_H
+#define	TOPPERS_GRSAKURA_H
+
+
+/*
+ *  MCUË¶îñÌÇÝÝ
+ */
+#ifdef __RX
+#include "rx630_ccrx/rx630.h"
+#else
+#include "rx630_msvc/rx630.h"
+#endif
+
+/*
+ *  NbNÝè
+ */
+
+/*
+ *  VXeNbNICLK(kHz)
+ *
+ *  CPUCDTCCDMACACETHERCCEDMACCROMCRAMp
+ *  
+ */
+#define FREQ_ICLK  (96000U)
+
+/*
+ *  NbNPCLK(kHz)
+ *
+ *  ^C}CVAÈÇüÓW
+[p
+ */
+#define FREQ_PCLK  (48000U)
+
+
+/*
+ *  {[[gÝè
+ */
+#define BAUD_19200BPS		UINT_C( 78 )
+#define BAUD_38400BPS		UINT_C( 39 )
+#define BAUD_57600BPS		UINT_C( 25 )
+#define BAUD_115200BPS		UINT_C( 12 )
+
+#define UART_BAUDRATE		BAUD_38400BPS
+
+
+/*
+ *  NbN\[X
+ */
+#define UART_CLKSRC			CLK_F1
+
+#endif	/* TOPPERS_GRSAKURA_H */
+
+ 
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/sectrx.inc
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/sectrx.inc	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/sectrx.inc	(revision 101)
@@ -0,0 +1,129 @@
+;*
+;*  TOPPERS/SSP Kernel
+;*      Smallest Set Profile Kernel
+;* 
+;*  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+;* 
+;*  ãLì ÒÍCFree Software Foundation ÉæÁÄö\³êÄ¢é 
+;*  GNU General Public License Ì Version 2 ÉLq³êÄ¢éð©CÈ
+;*  ºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEFAi{\tgEF
+;*  AðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏEÄzziÈºC
+;*  pÆÄÔj·é±Æð³Åø·éD
+;*  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+;*       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+;*      XR[hÉÜÜêÄ¢é±ÆD
+;*  (2) {\tgEFAðÄpÂ\ÈoCiR[hiP[^uIu
+;*      WFNgt@CâCuÈÇjÌ`Åp·éêÉÍCp
+;*      Éº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì \¦C
+;*      ±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+;*  (3) {\tgEFAðÄpsÂ\ÈoCiR[hÌ`Ü½Í@íÉg
+;*      Ýñ¾`Åp·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+;*    (a) pÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+;*         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+;*    (b) pÌ`ÔðCÊÉèßéû@ÉæÁÄCãLì ÒÉñ·é
+;*        ±ÆD
+;*  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+;*      Q©çàCãLì ÒðÆÓ·é±ÆD
+;* 
+;*  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì ÒÍC
+;*  {\tgEFAÉÖµÄC»ÌKpÂ\«àÜßÄC¢©ÈéÛØàsí
+;*  È¢DÜ½C{\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢
+;*  ©Èé¹QÉÖµÄàC»ÌÓCðíÈ¢D
+;*
+
+
+;
+;  ^[QbgVXeË¶ZNVè`t@C(GR-SAKURAp)
+;
+
+;
+;  ZNVÌè`
+;
+;  ZNVÌAhXè`ÍHEWãÌÅK»JÌ
+;  IvVÉÄÀ{·é.
+;
+
+	;
+	;  úlLèf[^ÌæÌZNV
+	;
+	;  00000000h - 00020000h
+	;
+	.section	D, ROMDATA
+	.section	D_2, ROMDATA, ALIGN = 2
+	.section	D_1, ROMDATA
+
+
+	;
+	;  úl³µf[^ÌæÌZNV
+	;
+	;  00000000h - 00020000h
+	;
+	.section	B, DATA, ALIGN = 4
+	.section	B_2, DATA, ALIGN = 2
+	.section	B_1, DATA
+	.section	W, ROMDATA,ALIGN = 4
+	.section	W_1, ROMDATA
+	.section	W_2, ROMDATA, ALIGN = 2
+
+
+	;
+	;  J[lX^bNÌæÌZNV
+	;
+	;  00000000h - 00020000h
+	;
+	;  Èº.blkb½ßÅmÛµÄ¢éJ[lX^bNÌæÌTCYð
+	;  ÏX·éêÍ, target_config.hÌDEFAULT_ISTKSZÌlð, ¯¶
+	;  lÉÏX·é±Æ.
+	;
+	.section	SI, DATA, ALIGN = 4
+	.glb _DEFAULT_ISTACK
+_DEFAULT_ISTACK:
+	.blkb		0800H
+	.glb DEFAULT_ISTACK_TOP
+DEFAULT_ISTACK_TOP:
+
+	;
+	;  èÌæÌZNV
+	;
+	;  00100000h - 00107FFFh
+	;
+	.section	C, ROMDATA, ALIGN = 4
+	.section	C_2, ROMDATA, ALIGN = 2
+	.section	C_1, ROMDATA
+
+	;
+	;  úlLèf[^ÌæÌúl
+	;
+	;  00100000h - 00107FFFh
+	;
+	.section	R, DATA, ALIGN = 4
+	.section	R_2, DATA, ALIGN = 2
+	.section	R_1, DATA
+
+	;
+	;  ÂÏxN^e[uÌæÌZNV
+	;
+	;  00100000h - 00107FFFh
+	;
+	.section	C$VECT, ROMDATA, ALIGN = 4
+	.glb VVECTOR_TOP
+VVECTOR_TOP:
+
+	;
+	;  vOÌæÌZNV
+	;
+	;  FFE80000h - FFFFFF7Fh
+	;
+	.section	P, CODE
+
+	;
+	;  ÅèxN^e[uÌæÌZNV
+	;
+	;  FFFFFF80h - FFFFFFFFh
+	;
+	.section	FVECT, ROMDATA, ALIGN = 4
+
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target.tf
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target.tf	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target.tf	(revision 101)
@@ -0,0 +1,65 @@
+$ 
+$  TOPPERS/SSP Kernel
+$      Smallest Set Profile Kernel
+$ 
+$  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+$ 
+$  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+$  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+$  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+$       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+$      XR[hÉÜÜêÄ¢é±ÆD
+$  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+$      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+$      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+$      Ì³ÛØKèðfÚ·é±ÆD
+$  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+$      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+$      ÆD
+$    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+$        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+$        ñ·é±ÆD
+$  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+$      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+$      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+$      ÆÓ·é±ÆD
+$ 
+$  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+$  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+$  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+$  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+$  ÌÓCðíÈ¢D
+$ 
+$ 
+
+$ 
+$  ^[QbgË¶ev[giGR-SAKURApj
+$ 
+
+
+/*$NL$
+$SPC$*  Target-dependent Definitions (GR-SAKURA)$NL$
+$SPC$*/$NL$
+$NL$
+
+$ 
+$  RX630Ë¶ÌÇÝÝ
+$ 
+$INCLUDE "rx630_ccrx/rx630.tf"$
+
+$ 
+$  oi[oÍpÌTFt@C
+$ 
+$INCLUDE "syssvc/banner.tf"$
+
+$ 
+$  AZut@CpÌwb_t@CÌ¶¬
+$ 
+$INCLUDE "target_asm_config.tf"$
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_asm_config.tf
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_asm_config.tf	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_asm_config.tf	(revision 101)
@@ -0,0 +1,23 @@
+$ 
+$     asm_config.inc ¶¬p
+$     pX2Ì^[QbgË¶ev[giGR-SAKURApj
+$ 
+$     Copyright (C) 2010 by Witz Corporation, JAPAN
+
+$ 
+
+$ 
+$  vZbTË¶Ìev[gt@CÌCN[h
+$ 
+$INCLUDE"rx630_ccrx/prc_asm_config.tf"$
+
+$FILE "asm_config.inc"$
+
+$NL$
+
+LOG_INH_ENTER_ENABLE $TAB$ .equ $TAB$ $+LOG_INH_ENTER_ENABLE$ $NL$
+LOG_INH_LEAVE_ENABLE $TAB$ .equ $TAB$ $+LOG_INH_LEAVE_ENABLE$ $NL$
+LOG_EXC_ENTER_ENABLE $TAB$ .equ $TAB$ $+LOG_EXC_ENTER_ENABLE$ $NL$
+LOG_EXC_LEAVE_ENABLE $TAB$ .equ $TAB$ $+LOG_EXC_LEAVE_ENABLE$ $NL$
+SIL_DLY_TIM1 $TAB$ .equ $TAB$ $+SIL_DLY_TIM1$ $NL$
+SIL_DLY_TIM2 $TAB$ .equ $TAB$ $+SIL_DLY_TIM2$ $NL$
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_cfg1_out.h
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_cfg1_out.h	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_cfg1_out.h	(revision 101)
@@ -0,0 +1,10 @@
+/*
+ *		cfg1_out.cÌNÉKvÈX^uÌè`
+ */
+
+#ifdef __RX
+#include "rx630_ccrx/prc_cfg1_out.h"
+#else
+#include "rx630_msvc/prc_cfg1_out.h"
+#endif
+#include "sil.h"
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_check.tf
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_check.tf	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_check.tf	(revision 101)
@@ -0,0 +1,48 @@
+$ 
+$  TOPPERS/SSP Kernel
+$      Smallest Set Profile Kernel
+$ 
+$  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+$ 
+$  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+$  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+$  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+$       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+$      XR[hÉÜÜêÄ¢é±ÆD
+$  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+$      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+$      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+$      Ì³ÛØKèðfÚ·é±ÆD
+$  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+$      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+$      ÆD
+$    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+$        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+$        ñ·é±ÆD
+$  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+$      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+$      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+$      ÆÓ·é±ÆD
+$ 
+$  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+$  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+$  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+$  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+$  ÌÓCðíÈ¢D
+$ 
+
+$ 
+$     pX3Ì^[QbgË¶ev[giGR-SAKURApj
+$ 
+
+$ 
+$  pX3ÌvZbTË¶Ìev[gÌCN[h
+$ 
+$INCLUDE"rx630_ccrx/prc_check.tf"$
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_config.c
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_config.c	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_config.c	(revision 101)
@@ -0,0 +1,156 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ *  Copyright (C) 2013      by Mitsuhiro Matsuura
+ * 
+ *  ãLì ÒÍCFree Software Foundation ÉæÁÄö\³êÄ¢é 
+ *  GNU General Public License Ì Version 2 ÉLq³êÄ¢éð©CÈ
+ *  ºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEFAi{\tgEF
+ *  AðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»EüÏEÄzziÈºC
+ *  pÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðÄpÂ\ÈoCiR[hiP[^uIu
+ *      WFNgt@CâCuÈÇjÌ`Åp·éêÉÍCp
+ *      Éº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì \¦C
+ *      ±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðÄpsÂ\ÈoCiR[hÌ`Ü½Í@íÉg
+ *      Ýñ¾`Åp·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD
+ *    (a) pÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌì
+ *         \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) pÌ`ÔðCÊÉèßéû@ÉæÁÄCãLì ÒÉñ·é
+ *        ±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì ÒðÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì ÒÍC
+ *  {\tgEFAÉÖµÄC»ÌKpÂ\«àÜßÄC¢©ÈéÛØàsí
+ *  È¢DÜ½C{\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢
+ *  ©Èé¹QÉÖµÄàC»ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *	^[QbgVXeË¶W
+[iGR-SAKURApj
+ */
+
+#include "kernel_impl.h"
+#include <sil.h>
+#include "grsakura.h"
+#include "rx600/rx630_uart.h"
+
+/*
+ *  ^[QbgVXeË¶ ú»[`
+ */
+void
+target_initialize( void )
+{
+	/*
+	 *  vZbTË¶Ìú»
+	 */
+	prc_initialize();
+
+	/* IO|[gú» */
+	/* P25ðoÍ|[gÉ·é */
+	sil_wrb_mem(PORT2_PDR_ADDR, 
+		sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B5_BIT);
+	/* PA0, PA1, PA2, PA6ðoÍ|[gÉ·é */
+	sil_wrb_mem(PORTA_PDR_ADDR,
+		sil_reb_mem(PORTA_PDR_ADDR) | PORT_PDR_B0_BIT | PORT_PDR_B1_BIT | PORT_PDR_B2_BIT | PORT_PDR_B6_BIT);
+	/* PA7ðüÍ|[gÉ·é */
+	sil_wrb_mem(PORTA_PDR_ADDR,
+		sil_reb_mem(PORTA_PDR_ADDR) & ~PORT_PDR_B7_BIT);
+
+	/*
+	 *  VA|[gÌÝè
+	 */
+	rx630_uart_init(TARGET_PUTC_PORTID, UART_BAUDRATE, UART_CLKSRC);
+
+	/* |[gP20ðTxD0, |[gP21ðRxD0É */
+	sil_wrb_mem(PORT2_PMR_ADDR, 0x03);
+
+	/* f[^fBNVWX^(PDR)ÌÝè P21(RxD0)ðüÍ|[gÉ·é */
+	sil_wrb_mem(PORT2_PDR_ADDR, 
+		sil_reb_mem(PORT2_PDR_ADDR) & ~PORT_PDR_B1_BIT);
+
+	/* f[^fBNVWX^(PDR)ÌÝè P20(TxD0)ðoÍ|[gÉ·é */
+	sil_wrb_mem(PORT2_PDR_ADDR, 
+		sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B0_BIT);
+
+	/* |[gP40`P47ðüÓ@íÉ */
+	sil_wrb_mem(PORT4_PMR_ADDR, 0xFF);
+
+	/* |[gP40`P47ðüÍ|[gÉ·é */
+	sil_wrb_mem(PORT4_PDR_ADDR, 0x00);
+
+	/* «ÝveNgWX^ÌÝè PFSWErbgÖÌ«ÝðÂ */
+	sil_wrb_mem(MPC_PWPR_ADDR, 0x00);
+	/* «ÝveNgWX^ÌÝè PxxFSWX^ÖÌ«ÝðÂ */
+	sil_wrb_mem(MPC_PWPR_ADDR, 0x40);
+
+	/* P21[q@\§äWX^ RXD0Æ·é */
+	sil_wrb_mem(MPC_P21PFS_ADDR, 0x0a);
+	/* P20[q@\§äWX^ TXD0Æ·é */
+	sil_wrb_mem(MPC_P20PFS_ADDR, 0x0a);
+
+	/* P40[q@\§äWX^ AiOüÍAN000Æ·é */
+	sil_wrb_mem(MPC_P40PFS_ADDR, 0x80);
+	/* P41[q@\§äWX^ AiOüÍAN001Æ·é */
+	sil_wrb_mem(MPC_P41PFS_ADDR, 0x80);
+	/* P42[q@\§äWX^ AiOüÍAN002Æ·é */
+	sil_wrb_mem(MPC_P42PFS_ADDR, 0x80);
+	/* P43[q@\§äWX^ AiOüÍAN003Æ·é */
+	sil_wrb_mem(MPC_P43PFS_ADDR, 0x80);
+	/* P44[q@\§äWX^ AiOüÍAN004Æ·é */
+	sil_wrb_mem(MPC_P44PFS_ADDR, 0x80);
+	/* P45[q@\§äWX^ AiOüÍAN005Æ·é */
+	sil_wrb_mem(MPC_P45PFS_ADDR, 0x80);
+	/* P46[q@\§äWX^ AiOüÍAN006Æ·é */
+	sil_wrb_mem(MPC_P46PFS_ADDR, 0x80);
+	/* P47[q@\§äWX^ AiOüÍAN007Æ·é */
+	sil_wrb_mem(MPC_P47PFS_ADDR, 0x80);
+
+	/* «ÝveNgWX^ÌÝè «ÝðÖ~ */
+	sil_wrb_mem(MPC_PWPR_ADDR, 0x80);
+}
+
+
+/*
+ *  ^[QbgVXeÌI¹[`
+ */
+void
+target_exit( void )
+{
+	/*
+	 *	vZbTË¶ÌI¹
+	 */
+	prc_terminate();
+
+	while ( 1 );
+}
+
+
+/*
+ *  VXeOÌáxoÍÌ½ßÌ¶oÍ
+ */
+void
+target_fput_log( char c )
+{
+	if( c == '\n' ){
+		rx630_uart_pol_putc( '\r' , TARGET_PUTC_PORTID );
+	}
+
+	rx630_uart_pol_putc( c , TARGET_PUTC_PORTID );
+}
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_config.h
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_config.h	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_config.h	(revision 101)
@@ -0,0 +1,133 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
+ *              Graduate School of Information Science, Nagoya Univ., JAPAN
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		^[QbgË¶W
+[iGR-SAKURApj
+ *
+ *  J[lÌ^[QbgË¶ÌCN[ht@CDkernel_impl.hÌ^[
+ *  QbgË¶ÌÊut¯ÆÈéD
+ */
+
+#ifndef TOPPERS_TARGET_CONFIG_H
+#define TOPPERS_TARGET_CONFIG_H
+
+/*
+ *  ^[QbgVXeÌn[hEFA¹Ìè`
+ */
+#include "grsakura.h"
+
+
+/*
+ *  ftHgÌñ^XNReLXgpÌX^bNÌæÌè`
+ *
+ *  X^bNTCYðÏX·éêÍ, sectrx.incÌ_DEFAULT_ISTACK
+ *  xÌÊuÉ é.blkb½ßÌTCYÆ, ÈºDEFAULT_ISTKSZÌ
+ *  TCYðí¹Ä¯¶lÉÏX·é±Æ.
+ */
+#define DEFAULT_ISTKSZ		( 0x2000U )
+#define DEFAULT_ISTK		(STK_T *)(0x18000 - DEFAULT_ISTKSZ)
+
+
+/*
+ *  ^[QbgË¶Ì¶oÍÉgp·é|[gÌè`  
+ */
+#define TARGET_PUTC_PORTID	( 1 )
+
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ^[QbgVXeË¶Ìú»
+ */
+extern void	target_initialize( void );
+
+/*
+ *  ^[QbgVXeÌI¹
+ *
+ *  VXeðI¹·éÉg¤D
+ */
+extern void	target_exit( void )	NoReturn;
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+
+/*
+ *  vZbTË¶W
+[iRX630pj
+ */
+#ifdef __RX
+#include "rx630_ccrx/rx630_config.h"
+#else
+#include "rx630_msvc/rx630_config.h"
+#endif
+
+/*
+ *  g[XOÉÖ·éÝè
+ */
+#define TCNT_TRACE_BUFFER	( 32 )
+
+/*
+ *  g[XOoÍ·éÓÌIð
+ *    OoÍ·éÓð1Åè`
+ *    OoÍµÈ¢Óð0Åè`
+ */
+#ifdef TOPPERS_ENABLE_TRACE
+#define LOG_INH_ENTER_ENABLE	( 1 )
+#define LOG_INH_LEAVE_ENABLE	( 1 )
+#define LOG_EXC_ENTER_ENABLE	( 1 )
+#define LOG_EXC_LEAVE_ENABLE	( 1 )
+#else
+#define LOG_INH_ENTER_ENABLE	( 0 )
+#define LOG_INH_LEAVE_ENABLE	( 0 )
+#define LOG_EXC_ENTER_ENABLE	( 0 )
+#define LOG_EXC_LEAVE_ENABLE	( 0 )
+#endif
+
+#ifdef TOPPERS_ENABLE_TRACE
+#include "logtrace/trace_config.h"
+#endif /* TOPPERS_ENABLE_TRACE */
+
+#endif /* TOPPERS_TARGET_CONFIG_H */
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_def.csv
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_def.csv	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_def.csv	(revision 101)
@@ -0,0 +1,6 @@
+LOG_INH_ENTER_ENABLE,LOG_INH_ENTER_ENABLE
+LOG_INH_LEAVE_ENABLE,LOG_INH_LEAVE_ENABLE
+LOG_EXC_ENTER_ENABLE,LOG_EXC_ENTER_ENABLE
+LOG_EXC_LEAVE_ENABLE,LOG_EXC_LEAVE_ENABLE
+SIL_DLY_TIM1,SIL_DLY_TIM1
+SIL_DLY_TIM2,SIL_DLY_TIM2
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_echonet.tf
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_echonet.tf	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_echonet.tf	(revision 101)
@@ -0,0 +1,68 @@
+$ 
+$  TOPPERS/SSP Kernel
+$      Smallest Set Profile Kernel
+$ 
+$  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+$ 
+$  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+$  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+$  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+$       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+$      XR[hÉÜÜêÄ¢é±ÆD
+$  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+$      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+$      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+$      Ì³ÛØKèðfÚ·é±ÆD
+$  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+$      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+$      ÆD
+$    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+$        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+$        ñ·é±ÆD
+$  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+$      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+$      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+$      ÆÓ·é±ÆD
+$ 
+$  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+$  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+$  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+$  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+$  ÌÓCðíÈ¢D
+$ 
+$ 
+
+$ 
+$  ^[QbgË¶ev[giGR-SAKURApj
+$ 
+
+
+/*$NL$
+$SPC$*  Target-dependent Definitions (GR-SAKURA)$NL$
+$SPC$*/$NL$
+$NL$
+
+$ 
+$  RX630Ë¶ÌÇÝÝ
+$ 
+$INCLUDE "rx630_ccrx/rx630.tf"$
+
+$ 
+$  oi[oÍpÌTFt@C
+$ 
+$INCLUDE "syssvc/banner.tf"$
+
+$ 
+$  AZut@CpÌwb_t@CÌ¶¬
+$ 
+$INCLUDE "target_asm_config.tf"$
+
+$ ECHONET Lite~hEFATFt@CÌCN[h
+$INCLUDE "../../ecnl_ssp/echonet.tf"$
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_kernel.h
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_kernel.h	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_kernel.h	(revision 101)
@@ -0,0 +1,84 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2003-2004 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2003-2004 by Platform Development Center
+ *                                          RICOH COMPANY,LTD. JAPAN
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  J[lÌ^[QbgË¶è`iGR-SAKURApj
+ */
+
+/*
+ *  ±ÌCN[ht@CÍCkernel.hÅCN[h³êéD¼Ìt@
+ *  C©ç¼ÚCN[h·é±ÆÍÈ¢D±Ìt@CðCN[h
+ *  ·éOÉCt_stddef.hªCN[h³êéÌÅC»êçÉË¶µÄàæ
+ *  ¢D
+ */
+
+#ifndef TOPPERS_TARGET_KERNEL_H
+#define TOPPERS_TARGET_KERNEL_H
+
+
+/*
+ *  vZbTÅ¤ÊÈè`
+ */
+#ifdef __RX
+#include "rx630_ccrx/prc_kernel.h"
+#else
+#include "rx630_msvc/prc_kernel.h"
+#endif
+
+/*
+ *  T|[g·é@\Ìè`
+ */
+#define	TOPPERS_TARGET_SUPPORT_GET_UTM		/* get_utmðT|[g·é */
+
+
+/*
+ *  ^CeBbNÌè`
+ */
+#define	TIC_NUME		( 1U )		/* ^CeBbNÌüúÌªq */
+#define	TIC_DENO		( 1U )		/* ^CeBbNÌüúÌªê */
+
+#endif /* TOPPERS_TARGET_KERNEL_H */
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_msvc.tf
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_msvc.tf	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_msvc.tf	(revision 101)
@@ -0,0 +1,60 @@
+$ 
+$  TOPPERS/SSP Kernel
+$      Smallest Set Profile Kernel
+$ 
+$  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+$ 
+$  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+$  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+$  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+$       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+$      XR[hÉÜÜêÄ¢é±ÆD
+$  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+$      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+$      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+$      Ì³ÛØKèðfÚ·é±ÆD
+$  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+$      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+$      ÆD
+$    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+$        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+$        ñ·é±ÆD
+$  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+$      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+$      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+$      ÆÓ·é±ÆD
+$ 
+$  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+$  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+$  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+$  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+$  ÌÓCðíÈ¢D
+$ 
+$ 
+
+$ 
+$  ^[QbgË¶ev[giGR-SAKURApj
+$ 
+
+
+/*$NL$
+$SPC$*  Target-dependent Definitions (GR-SAKURA)$NL$
+$SPC$*/$NL$
+$NL$
+
+$ 
+$  RX630Ë¶ÌÇÝÝ
+$ 
+$INCLUDE "rx630_msvc/rx630.tf"$
+
+$ 
+$  oi[oÍpÌTFt@C
+$ 
+$INCLUDE "syssvc/banner.tf"$
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_msvc_echonet.tf
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_msvc_echonet.tf	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_msvc_echonet.tf	(revision 101)
@@ -0,0 +1,63 @@
+$ 
+$  TOPPERS/SSP Kernel
+$      Smallest Set Profile Kernel
+$ 
+$  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+$ 
+$  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+$  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+$  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+$  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+$       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+$      XR[hÉÜÜêÄ¢é±ÆD
+$  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+$      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+$      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+$      Ì³ÛØKèðfÚ·é±ÆD
+$  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+$      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+$      ÆD
+$    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+$        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+$    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+$        ñ·é±ÆD
+$  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+$      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+$      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+$      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+$      ÆÓ·é±ÆD
+$ 
+$  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+$  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+$  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+$  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+$  ÌÓCðíÈ¢D
+$ 
+$ 
+
+$ 
+$  ^[QbgË¶ev[giGR-SAKURApj
+$ 
+
+
+/*$NL$
+$SPC$*  Target-dependent Definitions (GR-SAKURA)$NL$
+$SPC$*/$NL$
+$NL$
+
+$ 
+$  RX630Ë¶ÌÇÝÝ
+$ 
+$INCLUDE "rx630_msvc/rx630.tf"$
+
+$ 
+$  oi[oÍpÌTFt@C
+$ 
+$INCLUDE "syssvc/banner.tf"$
+
+$ ECHONET Lite~hEFATFt@CÌCN[h
+$INCLUDE "../../ecnl_ssp/echonet.tf"$
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_offset.tf
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_offset.tf	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_offset.tf	(revision 101)
@@ -0,0 +1,13 @@
+$ 
+$       ItZbgt@C¶¬pev[gt@CiGR-SAKURApj
+$
+
+$
+$  Wev[gt@CÌCN[h
+$
+$INCLUDE "kernel/genoffset.tf"$
+
+$ 
+$  RAË¶ev[gÌCN[hiRX630pj
+$ 
+$INCLUDE"../../arch/rx630_ccrx/prc_offset.tf"$
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_rename.def
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_rename.def	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_rename.def	(revision 101)
@@ -0,0 +1,13 @@
+# target_config.c
+target_initialize
+target_exit
+
+#trace_config.c
+log_dsp_enter
+log_dsp_leave
+log_inh_enter
+log_inh_leave
+log_exc_enter
+log_exc_leave
+
+INCLUDE "rx_rxc/prc"
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_rename.h
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_rename.h	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_rename.h	(revision 101)
@@ -0,0 +1,53 @@
+/* This file is generated from target_rename.def by genrename. */
+
+#ifndef TOPPERS_TARGET_RENAME_H
+#define TOPPERS_TARGET_RENAME_H
+
+/*
+ *  target_config.c
+ */
+#define target_initialize			_kernel_target_initialize
+#define target_exit					_kernel_target_exit
+
+/*
+ *  trace_config.c
+ */
+#define log_dsp_enter				_kernel_log_dsp_enter
+#define log_dsp_leave				_kernel_log_dsp_leave
+#define log_inh_enter				_kernel_log_inh_enter
+#define log_inh_leave				_kernel_log_inh_leave
+#define log_exc_enter				_kernel_log_exc_enter
+#define log_exc_leave				_kernel_log_exc_leave
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  target_config.c
+ */
+#define _board_id					__kernel_board_id
+#define _board_addr					__kernel_board_addr
+#define _target_initialize			__kernel_target_initialize
+#define _target_exit				__kernel_target_exit
+#define _x_config_int				__kernel_x_config_int
+
+/*
+ *  trace_config.c
+ */
+#define _log_dsp_enter				__kernel_log_dsp_enter
+#define _log_dsp_leave				__kernel_log_dsp_leave
+#define _log_inh_enter				__kernel_log_inh_enter
+#define _log_inh_leave				__kernel_log_inh_leave
+#define _log_exc_enter				__kernel_log_exc_enter
+#define _log_exc_leave				__kernel_log_exc_leave
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#ifdef __RX
+#include "rx630_ccrx/prc_rename.h"
+#else
+#include "rx630_msvc/prc_rename.h"
+#endif
+
+#endif /* TOPPERS_TARGET_RENAME_H */
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_serial.c
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_serial.c	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_serial.c	(revision 101)
@@ -0,0 +1,199 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2003-2004 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2003-2004 by Platform Development Center
+ *                                          RICOH COMPANY,LTD. JAPAN
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ *  Copyright (C) 2013      by Mitsuhiro Matsuura
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *	RX630 UARTpVAI/OW
+[
+ */
+#include "kernel_impl.h"
+#include <sil.h>
+#include "target_serial.h"
+
+/*
+ *  SIOhCoÌú»
+ */
+void
+sio_initialize(intptr_t exinf)
+{
+	rx630_uart_initialize();
+}
+
+/*
+ *  VAI/O|[gÌI[v
+ */
+SIOPCB *
+sio_opn_por(ID siopid, intptr_t exinf)
+{
+	SIOPCB  *p_siopcb = NULL;
+	ER      ercd;
+	INTNO	intno_sio_tx, intno_sio_rx;
+	
+	/*
+	 *  VAI/OÝð}XN·éD
+	 *  (dis_intÖÍA"\kernel\interrupt.c"ÉLq)
+	 */
+	p_siopcb = rx630_uart_get_siopcb(siopid);
+	intno_sio_tx = rx630_uart_intno_tx(p_siopcb);
+	intno_sio_rx = rx630_uart_intno_rx(p_siopcb);
+	ercd = dis_int(intno_sio_tx);
+	assert(ercd == E_OK);
+	ercd = dis_int(intno_sio_rx);
+	assert(ercd == E_OK);
+	
+	p_siopcb = 
+		rx630_uart_opn_por(siopid , exinf , UART_BAUDRATE , UART_CLKSRC);
+
+	/*
+	 *  VAI/OÝð}XNð·éD
+	 *  (ena_intÖÍA"\kernel\interrupt.c"ÉLq)
+	 */
+	ercd = ena_int(intno_sio_tx);
+	assert(ercd == E_OK);
+	ercd = ena_int(intno_sio_rx);
+	assert(ercd == E_OK);
+
+	return(p_siopcb);
+}
+
+/*
+ *  VAI/O|[gÌN[Y
+ */
+void
+sio_cls_por(SIOPCB *p_siopcb)
+{
+	ER        ercd;
+	INTNO	intno_sio_tx, intno_sio_rx;
+
+	/*
+	 *  foCXË¶ÌN[YD
+	 */
+	rx630_uart_cls_por(p_siopcb);
+	
+	/*
+	 *  VAI/OÝð}XN·éD
+	 */
+	intno_sio_tx = rx630_uart_intno_tx(p_siopcb);
+	intno_sio_rx = rx630_uart_intno_rx(p_siopcb);
+	ercd = dis_int(intno_sio_tx);
+	assert(ercd == E_OK);
+	ercd = dis_int(intno_sio_rx);
+	assert(ercd == E_OK);
+}
+
+/*
+ *  SIOÌÝnh
+ */
+void sio_tx_isr(intptr_t exinf)
+{
+	rx630_uart_tx_isr(exinf);
+}
+
+/*
+ *  SIOÌÝnh
+ */
+void sio_rx_isr(intptr_t exinf)
+{
+	rx630_uart_rx_isr(exinf);
+}
+
+/*
+ *  VAI/O|[gÖÌ¶M
+ */
+bool_t
+sio_snd_chr(SIOPCB *siopcb, char c)
+{
+	return(rx630_uart_snd_chr(siopcb, c));
+}
+
+/*
+ *  VAI/O|[g©çÌ¶óM
+ */
+int_t
+sio_rcv_chr(SIOPCB *siopcb)
+{
+	return(rx630_uart_rcv_chr(siopcb));
+}
+
+/*
+ *  VAI/O|[g©çÌR[obNÌÂ
+ */
+void
+sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn)
+{
+	rx630_uart_ena_cbr(siopcb, cbrtn);
+}
+
+/*
+ *  VAI/O|[g©çÌR[obNÌÖ~
+ */
+void
+sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn)
+{
+	rx630_uart_dis_cbr(siopcb, cbrtn);
+}
+
+/*
+ *  VAI/O|[g©çÌMÂ\R[obN
+ */
+void
+rx630_uart_irdy_snd(intptr_t exinf)
+{
+	/* ¤Êisyssvc\serial.cjÉ ésio_irdy_sndÖðÄÑoµ*/
+	sio_irdy_snd(exinf);
+}
+
+/*
+ *  VAI/O|[g©çÌóMÊmR[obN
+ */
+void
+rx630_uart_irdy_rcv(intptr_t exinf)
+{
+	/* ¤Êisyssvc\serial.cjÉ ésio_irdy_rcvÖðÄÑoµ*/
+	sio_irdy_rcv(exinf);
+}
+
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_serial.cfg
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_serial.cfg	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_serial.cfg	(revision 101)
@@ -0,0 +1,12 @@
+/*
+ *	SIOhCoiGR-SAKURApjÌRtBM
+[Vt@C
+ */
+
+#include <target_serial.h>
+ATT_INI({ TA_NULL, 0, sio_initialize });
+CFG_INT(INTNO_SIO_TX, { INTATR_SIO, INTPRI_SIO });
+CFG_INT(INTNO_SIO_RX, { INTATR_SIO, INTPRI_SIO });
+
+ATT_ISR({TA_NULL, SIO_PORTID, INTNO_SIO_TX, sio_tx_isr, 1});
+ATT_ISR({TA_NULL, SIO_PORTID, INTNO_SIO_RX, sio_rx_isr, 1});
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_serial.h
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_serial.h	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_serial.h	(revision 101)
@@ -0,0 +1,125 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2003-2004 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2003-2004 by Platform Development Center
+ *                                          RICOH COMPANY,LTD. JAPAN
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ *  Copyright (C) 2013      by Mitsuhiro Matsuura
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		VAI/OfoCXiSIOjhCoiGR-SAKURApj
+ */
+
+#ifndef TOPPERS_TARGET_SERIAL_H
+#define TOPPERS_TARGET_SERIAL_H
+
+#include "grsakura.h"
+#include "rx600/rx630_uart.h"
+
+/*
+ *  SIOÌÝnhÌxN^Ô
+ */
+#define INHNO_SIO_TX	INT_SCI0_TEI			/* ÝnhÔ */
+#define INTNO_SIO_TX	INT_SCI0_TEI			/* ÝÔ */
+#define INHNO_SIO_RX	INT_SCI0_RXI			/* ÝnhÔ */
+#define INTNO_SIO_RX	INT_SCI0_RXI			/* ÝÔ */
+#define INTPRI_SIO		-4						/* ÝDæx */
+#define INTATR_SIO		(TA_NULL)				/* Ý®« */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+
+/*
+ *  SIOhCoÌú»
+ */
+extern void		sio_initialize(intptr_t exinf);
+
+/*
+ *  VAI/O|[gÌI[v
+ */
+extern SIOPCB	*sio_opn_por(ID siopid, intptr_t exinf);
+
+/*
+ *  VAI/O|[gÌN[Y
+ */
+extern void		sio_cls_por(SIOPCB *p_siopcb);
+
+/*
+ *  SIOÌÝnh
+ */
+extern void 	sio_tx_isr(intptr_t exinf);
+extern void 	sio_rx_isr(intptr_t exinf);
+
+/*
+ *  VAI/O|[gÖÌ¶M
+ */
+extern bool_t	sio_snd_chr(SIOPCB *siopcb, char c);
+
+/*
+ *  VAI/O|[g©çÌ¶óM
+ */
+extern int_t	sio_rcv_chr(SIOPCB *siopcb);
+
+/*
+ *  VAI/O|[g©çÌR[obNÌÂ
+ */
+extern void		sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn);
+
+/*
+ *  VAI/O|[g©çÌR[obNÌÖ~
+ */
+extern void		sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn);
+
+/*
+ *  VAI/O|[g©çÌMÂ\R[obN
+ */
+extern void		sio_irdy_snd(intptr_t exinf);
+
+/*
+ *  VAI/O|[g©çÌóMÊmR[obN
+ */
+extern void		sio_irdy_rcv(intptr_t exinf);
+
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_SERIAL_H */
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_sil.h
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_sil.h	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_sil.h	(revision 101)
@@ -0,0 +1,69 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		sil.hÌ^[QbgË¶iGR-SAKURApj
+ *
+ *  ±ÌCN[ht@CÍCsil.hÌæªÅCN[h³êéD¼Ìt@
+ *  C©çÍ¼ÚCN[h·é±ÆÍÈ¢D±Ìt@CðCN[
+ *  h·éOÉCt_stddef.hªCN[h³êéÌÅC»êçÉË¶µÄà
+ *  æ¢D
+ */
+
+#ifndef TOPPERS_TARGET_SIL_H
+#define TOPPERS_TARGET_SIL_H
+
+/*
+ *  ÷­ÔÒ¿Ì½ßÌè`
+ */
+#define SIL_DLY_TIM1     69
+#define SIL_DLY_TIM2     50
+
+/*
+ *  vZbTÅ¤ÊÈè`
+ */
+#ifdef __RX
+#include "rx630_ccrx/prc_sil.h"
+#else
+#include "rx630_msvc/prc_sil.h"
+#endif
+
+#endif /* TOPPERS_TARGET_SIL_H */
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_stddef.h
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_stddef.h	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_stddef.h	(revision 101)
@@ -0,0 +1,109 @@
+/*
+ *  TOPPERS Software
+ *      Toyohashi Open Platform for Embedded Real-Time Systems
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2003-2004 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2003-2004 by Platform Development Center
+ *                                          RICOH COMPANY,LTD. JAPAN
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *  t_stddef.hÌ^[QbgË¶iGR-SAKURApj
+ *
+ *  ±ÌCN[ht@CÍCt_stddef.hÌæªÅCN[h³êéD
+ *  ¼Ìt@C©çÍ¼ÚCN[h·é±ÆÍÈ¢D¼ÌCN[h
+ *  t@CÉæ§ÁÄ³êé½ßC¼ÌCN[ht@CÉË¶µ
+ *  ÄÍÈçÈ¢D
+ */
+
+#ifndef TOPPERS_TARGET_STDDEF_H
+#define TOPPERS_TARGET_STDDEF_H
+
+/*
+ *  ^[Qbgð¯Ê·é½ßÌ}NÌè`
+ */
+#define TOPPERS_GRSAKURA			/* VXeªÌ */
+
+
+#ifdef __RX
+/*
+ *  J­Â«Å¤ÊÈè`
+ */
+/*#define TOPPERS_STDINT_TYPE1*/
+#include "ccrx/tool_stddef.h"
+
+
+/*
+ *  vZbTÅ¤ÊÈè`
+ */
+#include "rx630_ccrx/prc_stddef.h"
+#else /* __RX */
+/*
+ *  J­Â«Å¤ÊÈè`
+ */
+#include <stdint.h>
+#include "msvc/tool_stddef.h"
+
+/*
+ *  vZbTÅ¤ÊÈè`
+ */
+#include "rx630_msvc/prc_stddef.h"
+
+#define __evenaccess
+#endif /* __RX */
+
+/*
+ *  AT[VÌ¸sÌÀsf
+ */
+#ifndef TOPPERS_MACRO_ONLY
+
+#ifdef __RX
+Inline void
+TOPPERS_assert_abort( void )
+{
+}
+#else /* __RX */
+extern void TOPPERS_assert_abort( void );
+#endif /* __RX */
+
+#endif /* TOPPERS_MACRO_ONLY */
+
+#endif /* TOPPERS_TARGET_STDDEF_H */
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_support.c
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_support.c	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_support.c	(revision 101)
@@ -0,0 +1,96 @@
+/*-----------------------------------------------------------------------------
+ *  TOPPERS/SSP Windows Debug Environment
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ *-----------------------------------------------------------------------------
+ * $Id$
+ */
+
+/*
+ *	^[QbgVXeË¶W
+[iAP-RX62N-0Apj
+ */
+
+#include "kernel_impl.h"
+#include <sil.h>
+
+void hardware_init_hook()
+{
+	/*
+	 * ®ì[hÝè
+	 *
+	 * ®ì[hÍ{[hãÌ[qÉæÁÄè³êé½ß,
+	 * ±±ÅÍÁÊÝèµÈ¢.
+	 * ½¾µ, gGfBA/VO`bv[h
+	 * Å é±ÆðOñÆ·é.
+	 *
+	 * Ü½Zbgã, à ROMFLø, à RAMFLø, OoXF³ø
+	 * Å é.
+	 */
+
+	/*
+	 * NbNÝè
+	 *
+	 * üÍF12MHz
+	 * PLLñHF12 x 8 = 96MHz
+	 * VXeNbNF96MHz
+	 * üÓW
+[NbNF48MHz
+	 * OoXNbNF96MHz
+	 * Æ·é.
+	 */
+	sil_wrb_mem(PORT3_PDR_ADDR,
+		sil_reb_mem(PORT3_PDR_ADDR) & ~PORT_PDR_B6_BIT);
+	sil_wrb_mem(PORT3_PDR_ADDR,
+		sil_reb_mem(PORT3_PDR_ADDR) & ~PORT_PDR_B7_BIT);
+	sil_wrb_mem(PORT3_PMR_ADDR,
+		sil_reb_mem(PORT3_PMR_ADDR) & ~PORT_PDR_B6_BIT);
+	sil_wrb_mem(PORT3_PMR_ADDR,
+		sil_reb_mem(PORT3_PMR_ADDR) & ~PORT_PDR_B7_BIT);
+
+	sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xa503);
+
+	/* CNbN­Uí­§­U */
+	while((sil_reb_mem(SYSTEM_MOFCR_ADDR) & SYSTEM_MOFCR_MOFXIN) == 0)
+		sil_wrb_mem(SYSTEM_MOFCR_ADDR,
+			sil_reb_mem(SYSTEM_MOFCR_ADDR) | SYSTEM_MOFCR_MOFXIN);
+
+	/* CNbN­Uí®ì */
+	while((sil_reb_mem(SYSTEM_MOSCCR_ADDR) & SYSTEM_MOSCCR_MOSTP) != 0)
+		sil_wrb_mem(SYSTEM_MOSCCR_ADDR,
+			sil_reb_mem(SYSTEM_MOSCCR_ADDR) & ~SYSTEM_MOSCCR_MOSTP);
+
+	sil_wrh_mem(SYSTEM_PLLCR_ADDR,
+		(sil_reh_mem(SYSTEM_PLLCR_ADDR) & ~SYSTEM_PLLCR_STC_MASK)
+		| (0x0f << SYSTEM_PLLCR_STC_OFFSET));
+
+	sil_wrb_mem(SYSTEM_PLLCR2_ADDR,
+		sil_reb_mem(SYSTEM_PLLCR2_ADDR) & ~SYSTEM_PLLCR2_PLLEN);
+
+	sil_wrw_mem(SYSTEM_SCKCR_ADDR, 0x21021211);
+
+	/* PLLñHIð */
+	sil_wrh_mem(SYSTEM_SCKCR3_ADDR,
+		(sil_reh_mem(SYSTEM_SCKCR3_ADDR) & ~SYSTEM_SCKCR3_CKSEL_MASK)
+		| (4 << SYSTEM_SCKCR3_CKSEL_OFFSET));
+
+	/*
+	 * W
+[Xgbv
+	 *
+	 * Zbgã, ®ìµÄ¢éà üÓW
+[ÍDMAC, DTC,
+	 * à RAMÌÝÅ é.
+	 * »êÈOÌà üÓW
+[ÉÖµÄÍgp·é¤Å
+	 * Ýè·é±Æ.
+	 */
+	sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xa500);
+}
+
+void software_init_hook()
+{
+	/*
+	 * {RpCÅÍweak definitionÌ@\ª³¢½ß,
+	 * ÁÉKvÈÍÈ¢ª, K¸ÄÑo·±ÆÆ·é.
+	 */
+}
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_syssvc.h
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_syssvc.h	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_syssvc.h	(revision 101)
@@ -0,0 +1,126 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2003-2004 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2003-2004 by Platform Development Center
+ *                                          RICOH COMPANY,LTD. JAPAN
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		VXeT[rXÌ^[QbgË¶iGR-SAKURApj
+ *
+ *  VXeT[rXÌ^[QbgË¶ÌCN[ht@CD±Ìt@
+ *  CÌàeÍCR|[lgLqt@CÉLq³êC±Ìt@CÍ
+ *  ³­Èé©ÝD
+ */
+
+#ifndef TOPPERS_TARGET_SYSSVC_H
+#define TOPPERS_TARGET_SYSSVC_H
+
+
+/*
+ *  vZbTË¶Ìè`
+ */
+#ifdef __RX
+#include "rx630_ccrx/prc_syssvc.h"
+#else
+#include "rx630_msvc/prc_syssvc.h"
+#endif
+
+/*
+ *  g[XOÉÖ·éÝè
+ */
+#ifdef TOPPERS_ENABLE_TRACE
+#include "logtrace/trace_config.h"
+#endif /* TOPPERS_ENABLE_TRACE */
+
+
+/*
+ *  {[hË¶îñÌÇÝÝ
+ */
+#include "grsakura.h"
+
+
+/*
+ *  N®bZ[WÌ^[QbgVXe¼
+ */
+#define	TARGET_NAME	"GR-SAKURA"
+
+
+/*
+ *  VXeOÌáxoÍÌ½ßÌ¶oÍ
+ *
+ *  ^[QbgË¶Ìû@ÅC¶cð\¦/oÍ/Û¶·éD
+ */
+extern void	target_fput_log( char c );
+
+
+/*
+ *  N®bZ[WÉ^[QbgË¶Ìì \¦ð
+ *  ÇÁ·é½ßÌ}ND
+ */
+#ifdef PRC_COPYRIGHT
+#define	TARGET_COPYRIGHT	PRC_COPYRIGHT
+#endif /* PRC_COPYRIGHT */
+
+
+/*
+ *  VA|[gÌè`
+ */
+#define	TNUM_PORT			UINT_C( 2 )
+
+/*
+ *  gp·éVA|[gID
+ */
+#define	SIO_PORTID			UINT_C( 1 )
+
+#define LOGTASK_PORTID		SIO_PORTID
+
+#define STACK_SIZE			(512)
+
+/*
+ *  VXeO^XNÖAÌèÌè`
+ *
+ *  ftHglÌÊèD
+ */
+
+#endif /* TOPPERS_TARGET_SYSSVC_H */
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_test.h
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_test.h	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_test.h	(revision 101)
@@ -0,0 +1,70 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2003-2004 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2003-2004 by Platform Development Center
+ *                                          RICOH COMPANY,LTD. JAPAN
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		eXgvOÌ^[QbgË¶è`iGR-SAKURApj
+ */
+
+#ifndef TOPPERS_TARGET_TEST_H
+#define TOPPERS_TARGET_TEST_H
+
+/*
+ *  vZbTÅ¤ÊÈè`
+ */
+#ifdef __RX
+#include "rx630_ccrx/prc_test.h"
+#else
+#include "rx630_msvc/prc_test.h"
+#endif
+
+/*
+ *  ^XNÅgp·éVA|[gID
+ */
+#define	TASK_PORTID		( 1 )
+
+
+#endif /* TOPPERS_TARGET_TEST_H */
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_timer.c
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_timer.c	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_timer.c	(revision 101)
@@ -0,0 +1,141 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2003-2004 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2003-2004 by Platform Development Center
+ *                                          RICOH COMPANY,LTD. JAPAN
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ *  Copyright (C) 2013      by Mitsuhiro Matsuura
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		^C}hCoiGR-SAKURApj
+ */
+
+#include "kernel_impl.h"
+#include <sil.h>
+#include "target_timer.h"
+#include "time_event.h"
+
+/*
+ *  ^C}Ìú»
+ */
+void
+target_timer_initialize(intptr_t exinf)
+{
+	/*
+	 * W
+[Xgbv@\ÌÝè
+	 */
+	sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA502);	/* ÝÂ */
+	sil_wrw_mem(SYSTEM_MSTPCRA_ADDR,
+		sil_rew_mem(SYSTEM_MSTPCRA_ADDR) & ~SYSTEM_MSTPCRA_MSTPA15_BIT); /* CMT0 */
+	sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA500);	/* ÝÖ~ */
+
+	/* 
+	 * ^C}â~ 
+	 */
+	sil_wrh_mem(CMT_CMSTR0_ADDR,
+		sil_reh_mem(CMT_CMSTR0_ADDR) & ~CMT_CMSTR0_STR0_BIT);
+	
+	/*
+ 	 * JEgAbvÉp¢çêéNbNÝè
+	 * PCLK/32ðIð
+	 */
+	sil_wrh_mem(CMT0_CMCR_ADDR, CMT_PCLK_DIV_8);
+
+	/* 
+	 * RyA}b`^C}JE^Ýè
+	 */
+	sil_wrh_mem(CMT0_CMCNT_ADDR, 0U);
+
+	/* 
+	 * RyA}b`^C}üúÝè
+	 */
+	sil_wrh_mem(CMT0_CMCOR_ADDR, CMCOR_PERIOD);
+
+	/*
+	 * RyA}b`^C}èÝvæÝèWX^iISELR28j
+	 */
+	sil_wrb_mem(ICU_ISELR028_ADDR, ICU_ISEL_CPU);
+
+	/*
+	 *  ^C}®ìJnOÌÝvðNA
+	 */
+	x_clear_int(INTNO_TIMER);
+
+	/* 
+	 * RyA}b`^C}èÝðÂ
+	 */
+	sil_wrh_mem(CMT0_CMCR_ADDR,
+		sil_reh_mem(CMT0_CMCR_ADDR) | CMT0_CMCR_CMIE_BIT);
+	
+	/* 
+	 * ^C}®ìJn
+	 */
+	sil_wrh_mem(CMT_CMSTR0_ADDR,
+		sil_reh_mem(CMT_CMSTR0_ADDR) | CMT_CMSTR0_STR0_BIT);
+}
+
+/*
+ *  ^C}Ìâ~
+ */
+void
+target_timer_terminate(intptr_t exinf)
+{
+	/* 
+	 * ^C}â~ 
+	 */
+	sil_wrh_mem(CMT_CMSTR0_ADDR,
+		sil_reh_mem(CMT_CMSTR0_ADDR) & ~CMT_CMSTR0_STR0_BIT);
+}
+
+/*
+ *  ^C}Ýnh
+ */
+void target_timer_handler(void)
+{
+	i_begin_int(INTNO_TIMER);
+
+	signal_time();				/* ^CeBbNÌ */
+
+	i_end_int(INTNO_TIMER);
+}
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_timer.cfg
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_timer.cfg	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_timer.cfg	(revision 101)
@@ -0,0 +1,10 @@
+/*
+ *  ^C}hCoiRX630pjÌRtBM
+[Vt@C
+ */
+
+#include "target_timer.h"
+ATT_INI({ TA_NULL, 0, target_timer_initialize });
+ATT_TER({ TA_NULL, 0, target_timer_terminate });
+DEF_INH(INHNO_TIMER, { TA_NULL, target_timer_handler });
+CFG_INT(INTNO_TIMER, { INTATR_TIMER, INTPRI_TIMER });
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_timer.h
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_timer.h	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_timer.h	(revision 101)
@@ -0,0 +1,183 @@
+/*
+ *  TOPPERS/SSP Kernel
+ *      Smallest Set Profile Kernel
+ * 
+ *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+ *                              Toyohashi Univ. of Technology, JAPAN
+ *  Copyright (C) 2003-2004 by Naoki Saito
+ *             Nagoya Municipal Industrial Research Institute, JAPAN
+ *  Copyright (C) 2003-2004 by Platform Development Center
+ *                                          RICOH COMPANY,LTD. JAPAN
+ *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
+ *  Copyright (C) 2013      by Mitsuhiro Matsuura
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ */
+
+/*
+ *		^C}hCoiGR-SAKURApj
+ */
+ 
+#ifndef TOPPERS_TARGET_TIMER_H
+#define TOPPERS_TARGET_TIMER_H
+
+#include <sil.h>
+#include "target_config.h"
+#include "grsakura.h"
+#include "target_syssvc.h"
+
+/*
+ *  ^C}Ýnho^Ì½ßÌè
+ */
+#define INHNO_TIMER		INT_CMT0_CMI				/* ÝnhÔ */
+#define INTNO_TIMER		INT_CMT0_CMI				/* ÝÔ */
+#define INTPRI_TIMER	-5							/* ÝDæx */
+#define INTATR_TIMER	(TA_ENAINT | TA_EDGE)		/* Ý®« */
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  ^C}lÌà\»Ì^
+ */
+typedef uint16_t	CLOCK;
+
+/*
+ *  ^C}lÌà\»Æ~bPÊÆÌÏ·
+ *
+ *  1msÌ^C}[èÝðgp·éÌÅ»ÌNbNðè`·éD
+ */
+#define TIMER_CLOCK				(FREQ_PCLK / 8U)		/* PCLK/Åáªüä8 = 6MHz */
+#define TO_CLOCK(nume, deno)	((CLOCK)(TIMER_CLOCK * (nume) / (deno)))
+#define	TO_USEC(clock)			((SYSUTM)((clock) * 1000U / TIMER_CLOCK))
+
+/*
+ *  ÝèÅ«éÅåÌ^C}üúiPÊÍà\»j
+ */
+#define	MAX_CLOCK	((CLOCK) 0xFFFFU)
+
+/*
+ *  «\]¿pVXeðæèo·ÛÌÔÌ©ÏèliPÊÍà\»j
+ */
+#define	GET_TOLERANCE	(100U)	/* xêÌ©ÏèliPÊÍà\»j*/
+#define	BEFORE_IREQ(clock) \
+		((clock) >= (TO_CLOCK(TIC_NUME, TIC_DENO) - GET_TOLERANCE))
+
+/*
+ *  RyA}b`^C}Rg[WX^ÌÝèl
+ */
+/*
+ *  NbNIðrbg
+ *
+ *  bit7Í\ñÌæÅ è, ÝÍ1Åè
+ */
+#define CMT_PCLK_DIV_8			(0x0080U)
+#define CMT_PCLK_DIV_32			(0x0081U)
+#define CMT_PCLK_DIV_128		(0x0082U)
+#define CMT_PCLK_DIV_512		(0x0083U)
+
+/*
+ *  RyA}b`^C}RX^gWX^iCMCORj
+ *
+ *  RyA}b`üúð1msÆ·éD
+ *  üÓW
+[NbNiPCLKj48MHzð8ªü·éÌÅC
+ *  1üú ½è166.7nsecÆÈèC6000üúÅ1msi^CeBbNÌüújÆ·éD
+ */
+#define CMCOR_PERIOD			(TIMER_CLOCK)
+
+/*
+ * RyA}b`^C}èÝvæÝèWX^iiISELRijii= èÝxN^Ôj
+ */
+#define ICU_ISEL_CPU			(0x00U)
+
+
+
+
+/*
+ *  ^C}ÌN®
+ *
+ *  ^C}ðú»µCüúIÈ^C}Ývð­¶³¹éD
+ */
+extern void	target_timer_initialize(intptr_t exinf);
+
+/*
+ *  ^C}Ìâ~
+ *
+ *  ^C}Ì®ìðâ~³¹éD
+ */
+extern void	target_timer_terminate(intptr_t exinf);
+
+/*
+ *  ^C}WX^lÌÇÝoµ
+ */
+Inline uint16_t rx630_cmt_getcount(void)
+{
+	return sil_reh_mem(CMT0_CMCNT_ADDR);
+}
+
+/*
+ *  ^C}WX^lÌ«Ý
+ */
+Inline void rx630_cmt_setcount(uint16_t count)
+{
+	sil_wrh_mem(CMT0_CMCNT_ADDR, count);
+}
+
+/*
+ *  ^C}Ì»ÝlÌÇoµ
+ */
+Inline CLOCK
+target_timer_get_current(void)
+{
+	/* AbvJEgÌ½ß^C}WX^lð»ÌÜÜÔ·	*/
+	return (rx630_cmt_getcount());
+}
+
+/*
+ *  ^C}ÝvÌ`FbN
+ */
+Inline bool_t
+target_timer_probe_int(void)
+{
+	return(x_probe_int(INTNO_TIMER));
+}
+
+/*
+ *  ^C}Ýnh
+ */
+extern void	target_timer_handler(void);
+
+#endif /* TOPPERS_MACRO_ONLY */
+#endif /* TOPPERS_TARGET_TIMER_H */
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/target_unrename.h
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/target_unrename.h	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/target_unrename.h	(revision 101)
@@ -0,0 +1,50 @@
+/* This file is generated from target_rename.def by genrename. */
+
+#ifndef TOPPERS_TARGET_RENAME_H
+#define TOPPERS_TARGET_RENAME_H
+
+/*
+ *  target_config.c
+ */
+#undef target_initialize
+#undef target_exit
+
+/*
+ *  trace_config.c
+ */
+#undef log_dsp_enter
+#undef log_dsp_leave
+#undef log_inh_enter
+#undef log_inh_leave
+#undef log_exc_enter
+#undef log_exc_leave
+
+
+#ifdef TOPPERS_LABEL_ASM
+
+/*
+ *  target_config.c
+ */
+#undef _target_initialize
+#undef _target_exit
+
+/*
+ *  trace_config.c
+ */
+#undef _log_dsp_enter
+#undef _log_dsp_leave
+#undef _log_inh_enter
+#undef _log_inh_leave
+#undef _log_exc_enter
+#undef _log_exc_leave
+
+
+#endif /* TOPPERS_LABEL_ASM */
+
+#ifdef __RX
+#include "rx630_ccrx/prc_unrename.h"
+#else
+#include "rx630_msvc/prc_unrename.h"
+#endif
+
+#endif /* TOPPERS_TARGET_RENAME_H */
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/uip_target_config.c
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/uip_target_config.c	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/uip_target_config.c	(revision 101)
@@ -0,0 +1,118 @@
+/*
+ *  TINET (TCP/IP Protocol Stack)
+ * 
+ *  Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering
+ *                   Tomakomai National College of Technology, JAPAN
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *  ^[QbgË¶W
+[iRX63Npj
+ */
+
+#include <sil.h>
+
+#include <uip-conf.h>
+#ifdef __RX
+#include <rx630_ccrx/rx630.h>
+#else
+#include <rx630_msvc/rx630.h>
+#endif
+
+/*
+ *  rx62n_bus_init -- ^[QbgË¶ÌoXÌú»
+ */
+
+void
+rx62n_bus_init (void)
+{
+	/* C[TlbgERg[Ì®ìðÂ */
+	sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA502);	/* ÝÂ */
+	sil_wrw_mem((uint32_t *)SYSTEM_MSTPCRB_ADDR,
+		sil_rew_mem((uint32_t *)SYSTEM_MSTPCRB_ADDR) & ~SYSTEM_MSTPCRB_MSTPB15_BIT);
+	sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA500);	/* ÝÖ~ */
+
+	/* EtherNETLø */
+	/* PA3`5 RMII_MDIO, RMII_MDC, RMII_LINKSTA */
+	sil_wrb_mem((uint8_t *)PORTA_PMR_ADDR,
+		sil_reb_mem((uint8_t *)PORTA_PMR_ADDR) | (1 << 3) | (1 << 4) | (1 << 5));
+	/* PB0`7 RXD1, RXD0, REF50CK, RX-ER, TXD-EN, TXD0, TXD1, CRS */
+	sil_wrb_mem((uint8_t *)PORTB_PMR_ADDR,
+		sil_reb_mem((uint8_t *)PORTB_PMR_ADDR) | 0xFF);
+
+	/* «ÝveNgWX^ÌÝè PFSWErbgÖÌ«ÝðÂ */
+	sil_wrb_mem((uint8_t *)(MPC_PWPR_ADDR) , 0x00);
+	/* «ÝveNgWX^ÌÝè PxxFSWX^ÖÌ«ÝðÂ */
+	sil_wrb_mem((uint8_t *)(MPC_PWPR_ADDR) , 0x40);
+
+	/* PA3ðET_MDIOÆ·é */
+	sil_wrb_mem((uint8_t *)MPC_PA3PFS_ADDR, 0x11); 
+	/* PA4ðET_MDCÆ·é */
+	sil_wrb_mem((uint8_t *)MPC_PA4PFS_ADDR, 0x11); 
+	/* PA5ðET_LINKSTAÆ·é */
+	sil_wrb_mem((uint8_t *)MPC_PA5PFS_ADDR, 0x11); 
+
+	/* PB0ðRXD1Æ·é */
+	sil_wrb_mem((uint8_t *)MPC_PB0PFS_ADDR, 0x12);
+	/* PB1ðRXD0Æ·é */
+	sil_wrb_mem((uint8_t *)MPC_PB1PFS_ADDR, 0x12);
+	/* PB2ðREF50CKÆ·é */
+	sil_wrb_mem((uint8_t *)MPC_PB2PFS_ADDR, 0x12);
+	/* PB3ðRX-ERÆ·é */
+	sil_wrb_mem((uint8_t *)MPC_PB3PFS_ADDR, 0x12);
+	/* PB4ðTXD-ENÆ·é */
+	sil_wrb_mem((uint8_t *)MPC_PB4PFS_ADDR, 0x12);
+	/* PB5ðTXD0Æ·é */
+	sil_wrb_mem((uint8_t *)MPC_PB5PFS_ADDR, 0x12);
+	/* PB6ðTXD1Æ·é */
+	sil_wrb_mem((uint8_t *)MPC_PB6PFS_ADDR, 0x12);
+	/* PB7ðCRSÆ·é */
+	sil_wrb_mem((uint8_t *)MPC_PB7PFS_ADDR, 0x12);
+
+	/* «ÝveNgWX^ÌÝè «ÝðÖ~ */
+	sil_wrb_mem((uint8_t *)(MPC_PWPR_ADDR) , 0x80);
+}
+
+/*
+ *  rx62n_inter_init -- ^[QbgË¶ÌÝÌú»
+ */
+
+void
+rx62n_inter_init (void)
+{
+}
Index: uKadecot/trunk/ssp/target/grsakura_ccrx/uip_target_config.h
===================================================================
--- uKadecot/trunk/ssp/target/grsakura_ccrx/uip_target_config.h	(revision 101)
+++ uKadecot/trunk/ssp/target/grsakura_ccrx/uip_target_config.h	(revision 101)
@@ -0,0 +1,69 @@
+/*
+ *  TINET (TCP/IP Protocol Stack)
+ * 
+ *  Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering
+ *                   Tomakomai National College of Technology, JAPAN
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#ifndef _UIP_TARGET_CONF_H_
+#define _UIP_TARGET_CONF_H_
+
+#include "uip_app_config.h"
+
+/*
+ *  RX62N Ethernet Controler ÉÖ·éè`
+ */
+
+#define INHNO_IF_RX62N_TRX	INT_ETH_EINT	/* pPbgóM */
+#define INTNO_IF_RX62N_TRX	INT_ETH_EINT	/* pPbgóM */
+#define INTATR_IF_RX62N_TRX	(TA_NULL)	/* Ý®«	*/
+#define INTPRI_IF_RX62N_TRX	(-1)		/* ÝDæx	*/
+
+#ifndef TOPPERS_MACRO_ONLY
+
+/*
+ *  Ö
+ */
+
+extern void rx62n_bus_init (void);
+extern void rx62n_inter_init (void);
+
+#endif	/* of #ifndef TOPPERS_MACRO_ONLY */
+
+#endif	/* of #ifndef _UIP_TARGET_CONF_H_ */
Index: uKadecot/trunk/ssp/utils/applyrename
===================================================================
--- uKadecot/trunk/ssp/utils/applyrename	(revision 101)
+++ uKadecot/trunk/ssp/utils/applyrename	(revision 101)
@@ -0,0 +1,123 @@
+#! /usr/bin/perl
+#
+#  TOPPERS Software
+#      Toyohashi Open Platform for Embedded Real-Time Systems
+# 
+#  Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
+#                              Toyohashi Univ. of Technology, JAPAN
+#  Copyright (C) 2004-2007 by Embedded and Real-Time Systems Laboratory
+#              Graduate School of Information Science, Nagoya Univ., JAPAN
+# 
+#  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+#  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+#  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+#  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+#       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+#      XR[hÉÜÜêÄ¢é±ÆD
+#  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+#      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+#      Ì³ÛØKèðfÚ·é±ÆD
+#  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+#      ÆD
+#    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+#        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+#    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+#        ñ·é±ÆD
+#  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+#      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+#      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+#      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+#      ÆÓ·é±ÆD
+# 
+#  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+#  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+#  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+#  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+#  ÌÓCðíÈ¢D
+# 
+#  @(#) $Id: applyrename 332 2007-07-17 12:15:37Z hiro $
+# 
+
+#
+#  t@CÉl[ðKp·é
+#
+sub applyrename
+{
+	local($infile) = @_;
+	local($outfile) = $infile.".new";
+	local($line);
+
+	open(INFILE, "< ".$infile) || die;
+	open(OUTFILE, "> ".$outfile) || die;
+
+	while ($line = <INFILE>) {
+		$line =~ s/\b(_?)($syms)\b/$1_kernel_$2/gc;
+		print OUTFILE $line;
+	}
+
+	close(INFILE);
+	close(OUTFILE);
+
+	if (`cmp $infile $outfile`) {
+		rename($infile, $infile.".bak");
+		rename($outfile, $infile);
+		print STDERR "Modified: ",$infile,"\n";
+	}
+	else {
+		unlink($outfile);
+	}
+}
+
+#
+#  G[`FbN
+#
+if ($#ARGV < 1) {
+	die "Usage: appyrename <prefix> <filelist>\n";
+}
+
+#
+#  ú»
+#
+@syms = ();
+$name = $ARGV[0];
+
+#
+#  V{XgðÇÝÞ
+#
+$deffile = $name."_rename.def";
+open(INFILE, $deffile) || die "Cannot open $deffile";
+while ($line = <INFILE>) {
+	chomp $line;
+	if ($line =~ /^#(.*)$/) {
+		# do nothing
+	}
+	elsif ($line =~ /^INCLUDE[ \t]+(.*)$/) {
+		# do nothing
+	}
+	elsif ($line ne "") {
+		@syms = (@syms, $line)
+	}
+}
+close(INFILE);
+
+#
+#  ³K\»ðìé
+#
+$syms = join("|", @syms);
+
+#
+#  t@CÉl[ðKp·é
+#
+shift @ARGV;
+foreach $infile (@ARGV) {
+	# t@CÅÈ¯êÎXLbv
+	next unless (-f $infile);
+
+	applyrename($infile) if ($infile ne $deffile);
+}
Index: uKadecot/trunk/ssp/utils/genrename
===================================================================
--- uKadecot/trunk/ssp/utils/genrename	(revision 101)
+++ uKadecot/trunk/ssp/utils/genrename	(revision 101)
@@ -0,0 +1,253 @@
+#! /usr/bin/perl
+#
+#  TOPPERS Software
+#      Toyohashi Open Platform for Embedded Real-Time Systems
+# 
+#  Copyright (C) 2003 by Embedded and Real-Time Systems Laboratory
+#                              Toyohashi Univ. of Technology, JAPAN
+#  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
+#              Graduate School of Information Science, Nagoya Univ., JAPAN
+# 
+#  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+#  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+#  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+#  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+#       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+#      XR[hÉÜÜêÄ¢é±ÆD
+#  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+#      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+#      Ì³ÛØKèðfÚ·é±ÆD
+#  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+#      ÆD
+#    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+#        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+#    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+#        ñ·é±ÆD
+#  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+#      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+#      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+#      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+#      ÆÓ·é±ÆD
+# 
+#  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+#  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+#  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+#  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+#  ÌÓCðíÈ¢D
+# 
+#  @(#) $Id: genrename 509 2007-08-22 23:09:56Z hiro $
+# 
+
+#
+#  æªÉÂ¯é¶ñ
+#
+sub prefix_string {
+	local($sym) = @_;
+
+	if ($sym =~ /[a-z]/) {
+		return("_kernel_");
+	}
+	else {
+		return("_KERNEL_");
+	}
+}
+
+#
+#  l[è`ð¶¬·é
+#
+sub generate_define
+{
+	local($sym, $prefix) = @_;
+
+	print FILE "#define ",$prefix,$sym;
+	print FILE "\t" if (length($prefix.$sym) < 4);
+	print FILE "\t" if (length($prefix.$sym) < 8);
+	print FILE "\t" if (length($prefix.$sym) < 12);
+	print FILE "\t" if (length($prefix.$sym) < 16);
+	print FILE "\t" if (length($prefix.$sym) < 20);
+	print FILE "\t" if (length($prefix.$sym) < 24);
+	print FILE "\t",$prefix, prefix_string($sym),$sym,"\n";
+}
+
+#
+#  l[ðð¶¬·é
+#
+sub generate_undef
+{
+	local($sym, $prefix) = @_;
+
+	print FILE "#undef ",$prefix,$sym,"\n";
+}
+
+#
+#  CN[hfBNeBuð¶¬·é
+#
+sub generate_include
+{
+	local($file, $prefix) = @_;
+
+	$file =~ s/([>"])$/_$prefix.h$1/;
+	$includes .= "#include ".$file."\n";
+}
+
+#
+#  G[`FbN
+#
+if ($#ARGV != 0) {
+	die "Usage: genrename <prefix>\n";
+}
+
+#
+#  ú»
+#
+@syms = ();
+$name = $ARGV[0];
+$NAME = $name; $NAME =~ y/a-z/A-Z/;
+
+$infile = $name."_rename.def";
+$header_defsym = "TOPPERS_".$NAME."_RENAME_H";
+
+#
+#  V{XgðÇÝÞ
+#
+open(INFILE, $infile) || die "Cannot open $infile";
+while ($line = <INFILE>) {
+	chomp $line;
+	@syms = (@syms, $line);
+}
+close(INFILE);
+
+#
+#  ???_rename.h ð¶¬·é
+#
+$includes = "";
+$file = $name."_rename.h";
+open(FILE, "> ".$file);
+
+print FILE <<END;
+/* This file is generated from $infile by genrename. */
+
+#ifndef $header_defsym
+#define $header_defsym
+
+END
+
+foreach $sym (@syms) {
+	if ($sym =~ /^#(.*)$/) {
+		print FILE "/*\n";
+		print FILE " * ",$1,"\n";
+		print FILE " */\n";
+	}
+	elsif ($sym =~ /^INCLUDE[ \t]+(.*)$/) {
+		generate_include($1, "rename");
+	}
+	elsif ($sym ne "") {
+		generate_define($sym, "");
+	}
+	else {
+		print FILE "\n";
+	}
+}
+
+print FILE <<END;
+
+#ifdef TOPPERS_LABEL_ASM
+
+END
+
+foreach $sym (@syms) {
+	if ($sym =~ /^#(.*)$/) {
+		print FILE "/*\n";
+		print FILE " * ",$1,"\n";
+		print FILE " */\n";
+	}
+	elsif ($sym =~ /^INCLUDE[ \t]+(.*)$/) {
+		# do nothing
+	}
+	elsif ($sym ne "") {
+		generate_define($sym, "_");
+	}
+	else {
+		print FILE "\n";
+	}
+}
+
+print FILE <<END;
+
+#endif /* TOPPERS_LABEL_ASM */
+
+$includes
+#endif /* $header_defsym */
+END
+
+#
+#  ???_unrename.h ð¶¬·é
+#
+$includes = "";
+$file = $name."_unrename.h";
+open(FILE, "> ".$file);
+
+print FILE <<END;
+/* This file is generated from $infile by genrename. */
+
+/* This file is included only when $name\_rename.h has been included. */
+#ifdef $header_defsym
+#undef $header_defsym
+
+END
+
+foreach $sym (@syms) {
+	if ($sym =~ /^#(.*)$/) {
+		print FILE "/*\n";
+		print FILE " * ",$1,"\n";
+		print FILE " */\n";
+	}
+	elsif ($sym =~ /^INCLUDE[ \t]+(.*)$/) {
+		generate_include($1, "unrename");
+	}
+	elsif ($sym ne "") {
+		generate_undef($sym, "");
+	}
+	else {
+		print FILE "\n";
+	}
+}
+
+print FILE <<END;
+
+#ifdef TOPPERS_LABEL_ASM
+
+END
+
+foreach $sym (@syms) {
+	if ($sym =~ /^#(.*)$/) {
+		print FILE "/*\n";
+		print FILE " * ",$1,"\n";
+		print FILE " */\n";
+	}
+	elsif ($sym =~ /^INCLUDE[ \t]+(.*)$/) {
+		# do nothing
+	}
+	elsif ($sym ne "") {
+		generate_undef($sym, "_");
+	}
+	else {
+		print FILE "\n";
+	}
+}
+
+print FILE <<END;
+
+#endif /* TOPPERS_LABEL_ASM */
+
+$includes
+#endif /* $header_defsym */
+END
+
+close(FILE);
Index: uKadecot/trunk/ssp/utils/makedep
===================================================================
--- uKadecot/trunk/ssp/utils/makedep	(revision 101)
+++ uKadecot/trunk/ssp/utils/makedep	(revision 101)
@@ -0,0 +1,183 @@
+#! /usr/bin/perl
+#
+#  TOPPERS Software
+#      Toyohashi Open Platform for Embedded Real-Time Systems
+# 
+#  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+#                              Toyohashi Univ. of Technology, JAPAN
+#  Copyright (C) 2004-2011 by Embedded and Real-Time Systems Laboratory
+#              Graduate School of Information Science, Nagoya Univ., JAPAN
+# 
+#  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+#  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+#  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+#  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+#       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+#      XR[hÉÜÜêÄ¢é±ÆD
+#  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+#      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+#      Ì³ÛØKèðfÚ·é±ÆD
+#  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+#      ÆD
+#    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+#        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+#    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+#        ñ·é±ÆD
+#  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+#      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+#      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+#      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+#      ÆÓ·é±ÆD
+# 
+#  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+#  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+#  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+#  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+#  ÌÓCðíÈ¢D
+# 
+#  @(#) $Id: makedep 2264 2011-10-27 04:22:01Z ertl-hiro $
+# 
+
+use Getopt::Std;
+
+#  IvVÌè`
+#
+#  -C <cc_path>		CRpCÌR}h¼
+#  -O <cc_opts>		CRpC/CPPÉn·IvV
+#  -X				\[Xt@Cð­§IÉCwb_t@CÆ©È·
+#
+#  -T <target>		^[Qbg¼iÌXgj
+#  -D <t_dir>		^[QbgÌfBNg¼ðwè·éi-Tðp¢½ê
+#					Í³øj
+#  -d				^[QbgÌfBNgðÛ·éi-Tðp¢½ê
+#					Í³øj
+#  -S				¡Ì^[Qbgª éË¶[ðC^[QbgÉ
+#					ª·éi±¤µÈ¢ÆÎÅ«È¢makeª éçµ¢j
+#
+#  -R <dirname>		CygwinÂ«É¨¯é[gfBNg¼ðwè·é
+#					iftHgÍcygdrivej
+
+#
+#  IvVÌ
+#
+getopt("COTDR");
+
+$cc_path = $opt_C;
+$cc_opts = $opt_O;
+
+if ($opt_T) {
+	$target_name = $opt_T;
+}
+elsif ($opt_D) {
+	$target_dir = $opt_D;
+}
+elsif (!$opt_d) {
+	$target_dir = "";
+}
+
+if ($opt_R) {
+	$cygwin_root = $opt_R;
+}
+else {
+	$cygwin_root = "cygdrive";
+}
+
+#
+#  CygwinÂ«Ì»Ê
+#
+if ($^O eq 'cygwin') {
+	$cygwin = 1;
+}
+
+#
+#  %dependlist Éìçê½Ë¶ÖWðoÍ·é
+#
+sub output_dependlist {
+	local($target) = @_;
+	local($column, $len, $file);
+
+	print $target, ": ";
+	$column = length($target) + 2;
+
+	foreach $file (keys(%dependlist)) {
+		$len = length($file) + 1;
+		if ($column > 8 && $column + $len >= 70) {
+			print "\\\n\t";
+			$column = 8;
+		}
+		$column += $len;
+		print "$file ";
+	}
+	print "\n";
+}
+
+#
+#  $file ÌË¶ÖWð %dependlist Éìé
+#
+sub makedepend_one {
+	local($file) = @_;
+	local($command, $input, $dir, $filename);
+
+	$command = "$cc_path -E $cc_opts";
+	if ($opt_X) {
+		$command .= " -x c-header";
+	}
+	unless (open(INPUT, "$command $file |")) {
+		print STDERR "makedep: can't open $file\n";
+		exit(1);
+	}
+	while ($line = <INPUT>) {
+		if ($line =~ /^\#\s*([0-9]+)\s*\"([^\"]+)\"/) {
+			$filename = $2;
+			$filename =~ s/ /\\ /g;
+			if ($filename !~ /^\<.*\>$/ && $filename !~ /\/$/) {
+				if ($cygwin) {
+					$filename =~ s/\\\\/\//g;
+					$filename =~ s/^([a-zA-Z]):/\/$cygwin_root\/$1/;
+				}
+				$dependlist{$filename} = 1;
+			}
+		}
+	}
+	unless (close(INPUT)) {
+		print STDERR "makedep: can't execute $command\n";
+		exit(1);
+	}
+}
+
+#
+#  C[`
+#
+foreach $file (@ARGV) {
+	%dependlist = ();
+	makedepend_one($file);
+	if (%dependlist) {
+		if ($target_name) {
+			if ($opt_S) {
+				foreach $target (split(/[ \t]+/, $target_name)) {
+					output_dependlist($target);
+				}
+			}
+			else {
+				output_dependlist($target_name);
+			}
+		}
+		else {
+			$target = $file;
+			$target =~ s/(.*)\.(.*)/$1.o/;
+			if (defined($target_dir)) {
+				$target =~ s/^.*\/([^\/]+)$/$1/;
+				if ($target_dir) {
+					$target = $target_dir."/".$target;
+				}
+			}
+			output_dependlist($target);
+		}
+	}
+}
Index: uKadecot/trunk/ssp/utils/makerelease
===================================================================
--- uKadecot/trunk/ssp/utils/makerelease	(revision 101)
+++ uKadecot/trunk/ssp/utils/makerelease	(revision 101)
@@ -0,0 +1,161 @@
+#! /usr/bin/perl
+#
+#  TOPPERS Software
+#      Toyohashi Open Platform for Embedded Real-Time Systems
+# 
+#  Copyright (C) 2006-2010 by Embedded and Real-Time Systems Laboratory
+#              Graduate School of Information Science, Nagoya Univ., JAPAN
+# 
+#  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+#  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+#  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+#  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+#       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+#      XR[hÉÜÜêÄ¢é±ÆD
+#  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+#      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+#      Ì³ÛØKèðfÚ·é±ÆD
+#  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+#      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+#      ÆD
+#    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+#        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+#    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+#        ñ·é±ÆD
+#  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+#      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+#      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+#      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+#      ÆÓ·é±ÆD
+# 
+#  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+#  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+#  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+#  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+#  ÌÓCðíÈ¢D
+# 
+#  @(#) $Id: makerelease 1866 2010-07-25 13:19:17Z ertl-hiro $
+# 
+
+use Cwd;
+
+
+$cwd = getcwd();
+$cwd =~ s/^.*[\/\\]([^\/\\]+)$/$1/;
+$prefix = "./".$cwd;
+
+@file_list = ();
+%file_list = ();
+
+if ($#ARGV >= 0) {
+	$arg1 = $ARGV[0];
+	$arg1 =~ s/\.\///;
+}
+else {
+	$arg1 = "MANIFEST";
+}
+
+sub gen_path
+{
+	local($base, $path) = @_;
+
+	while ($path =~ /^..\/(.*)$/) {
+		$path = $1;
+		$base =~ s/(\/?)[^\/]*\/$/$1/;
+	}
+	return($base.$path);
+}
+
+sub read_file {
+	local($filename) = @_;
+	local($fh, $dirname);
+
+	if ($filename =~ /^(.*\/)[^\/]*$/) {
+		$dirname = $1;
+	}
+	else {
+		$dirname = "";
+	}
+
+	open($fh, $filename) || die "Cannot open $filename";
+	while ($line = <$fh>) {
+		chomp $line;
+		$line =~ s/\r$//;
+		$line =~ s/[ \t]*\#.*$//;
+		next if ($line =~ /^[ \t]*$/);
+
+		if ($line =~ /^E_PACKAGE[ \t]+(.*)$/) {
+			if ($package) {
+				die "Duplicated E_PACKAGE directive.";
+			}
+			else {
+				$package = $1;
+				$e_package = 1;
+			}
+		}
+		elsif ($line =~ /^PACKAGE[ \t]+(.*)$/) {
+			if ($package) {
+				if (!$e_package && $package != $1) {
+					die "Inconsistent PACKAGE directive.";
+				}
+			}
+			else {
+				$package = $1;
+			}
+		}
+		elsif ($line =~ /^VERSION[ \t]+(.*)$/) {
+			if ($version) {
+				if (!$e_package && $version != $1) {
+					die "Inconsistent VERSION directive.";
+				}
+			}
+			else {
+				$version = $1;
+				if ($version =~ /%date/) {
+					@current_time = localtime();
+					$vdate = sprintf("%04d%02d%02d", $current_time[5]+1900,
+										$current_time[4]+1, $current_time[3]);
+					$version =~ s/%date/$vdate/;
+				}
+			}
+		}
+		elsif ($line =~ /^INCLUDE[ \t]+(.*)$/) {
+			read_file(gen_path($dirname, $1));
+		}
+		else {
+			$filename = $prefix."/".$dirname.$line;
+			while ($filename =~ s|/[^/]+/\.\./|/|) {}
+			if ($file_list{$filename}) {
+				die "$filename is duplicated.";
+			}
+			else {
+				push(@file_list, $filename);
+				$file_list{$filename} = $filename;
+			}
+		}
+	}
+	close($fh);
+}
+
+read_file($arg1);
+unless ($package) {
+	die "PACKAGE/E_PACKAGE directive not found.";
+}
+unless ($version) {
+	die "VERSION directive not found.";
+}
+
+if (! -d "RELEASE") {
+	mkdir("RELEASE");
+}
+
+$archive_name = $package."-".$version.".tar.gz";
+$file_list = join(" ", @file_list);
+$command = "tar cvfz RELEASE/$archive_name -C .. $file_list\n";
+die if (system($command));
+print STDERR "== RELEASE/$archive_name is generated. ==\n";
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI.sln
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI.sln	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI.sln	(revision 101)
@@ -0,0 +1,35 @@
+﻿
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EcnlCtrlUI", "EcnlCtrlUI\EcnlCtrlUI.csproj", "{ACA3FB91-5853-4770-B531-CC7A6B647752}"
+	ProjectSection(ProjectDependencies) = postProject
+		{06453FBD-10A6-412F-9DE6-504981D9E38B} = {06453FBD-10A6-412F-9DE6-504981D9E38B}
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EcnlControllerUI", "EcnlControllerUI\EcnlControllerUI.csproj", "{06453FBD-10A6-412F-9DE6-504981D9E38B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NiseWebSocket", "NiseWebSocket\NiseWebSocket.csproj", "{81B67899-0985-4AEA-B520-54FC639844B4}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{ACA3FB91-5853-4770-B531-CC7A6B647752}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{ACA3FB91-5853-4770-B531-CC7A6B647752}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{ACA3FB91-5853-4770-B531-CC7A6B647752}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{ACA3FB91-5853-4770-B531-CC7A6B647752}.Release|Any CPU.Build.0 = Release|Any CPU
+		{06453FBD-10A6-412F-9DE6-504981D9E38B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{06453FBD-10A6-412F-9DE6-504981D9E38B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{06453FBD-10A6-412F-9DE6-504981D9E38B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{06453FBD-10A6-412F-9DE6-504981D9E38B}.Release|Any CPU.Build.0 = Release|Any CPU
+		{81B67899-0985-4AEA-B520-54FC639844B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{81B67899-0985-4AEA-B520-54FC639844B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{81B67899-0985-4AEA-B520-54FC639844B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{81B67899-0985-4AEA-B520-54FC639844B4}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/Control.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/Control.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/Control.cs	(revision 101)
@@ -0,0 +1,2130 @@
+﻿/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ * 
+ *  上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id$
+ */
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Html;
+using System.Linq;
+using System.Net.WebSockets;
+using System.Serialization;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Web;
+using System.Xml;
+using control;
+using ctrlui;
+using jQueryApi;
+using Kadecot;
+
+namespace control
+{
+	public static class UI
+	{
+		public static DeviceController.DeviceInfo GetDeviceInfo(this JsonClassInfo dc, WebApiObjectInfo dev, WampApiKadecotDevice device)
+		{
+			DeviceController.DeviceInfo di = new DeviceController.DeviceInfo(dc, dev);
+			di.Data = device;
+			if (dc != null) {
+				foreach (WebApiPropertyInfo prop in dev.properties) {
+					JsonPropertyInfo epi = dc.properties.FirstOrDefault(p => p.propertyCode == prop.epc);
+					if (epi == null)
+						continue;
+					di.Properties.Add(new DeviceController.DevicePropertyInfo(epi, prop));
+				}
+			}
+			return di;
+		}
+
+		public static List<WampApiKadecotDevice> GetAllDevices(this object args)
+		{
+			dynamic[] devs = (dynamic[])(((dynamic[])args)[4]).deviceList;
+			List<WampApiKadecotDevice> alldevs = new List<WampApiKadecotDevice>();
+			var nodes = new Dictionary<string, List<WampApiKadecotDevice>>();
+
+			foreach (dynamic dev in devs) {
+				WampApiKadecotDevice device = new WampApiKadecotDevice(dev);
+				List<WampApiKadecotDevice> devices;
+
+				if (nodes.TryGetValue(device.ip_addr, out devices)) {
+					devices.Add(device);
+				}
+				else {
+					devices = new List<WampApiKadecotDevice>();
+					devices.Add(device);
+					nodes[device.ip_addr] = devices;
+				}
+
+				alldevs.Add(device);
+			}
+
+			return alldevs;
+		}
+
+		/// <summary>
+		/// jsonファイルをリストに変換します
+		/// </summary>
+		/// <param name="data"></param>
+		/// <returns></returns>
+		public static List<JsonClassGroupInfo> ToJSClassGroupInfoList(this object data)
+		{
+			dynamic[] _classGroups = (dynamic[])((data.GetType() == typeof(string)) ? jQuery.ParseJson((string)data) : data);
+			List<JsonClassGroupInfo> classGroups = new List<JsonClassGroupInfo>();
+			foreach (var _item in _classGroups) {
+				var item = new JsonClassGroupInfo(_item);
+				classGroups.Add(item);
+			}
+			return classGroups;
+		}
+
+		/// <summary>
+		/// jsonファイルをリストに変換します
+		/// </summary>
+		/// <param name="data"></param>
+		/// <param name="classGroup">クラス</param>
+		/// <returns></returns>
+		public static List<JsonClassInfo> ToJSClassInfoList(this object data, JsonClassGroupInfo classGroup)
+		{
+			dynamic[] _classes = (dynamic[])((data.GetType() == typeof(string)) ? jQuery.ParseJson((string)data) : data);
+			List<JsonClassInfo> classes = new List<JsonClassInfo>();
+			JsonClassInfo eclass;
+			foreach (var _item in _classes) {
+				eclass = new JsonClassInfo(_item);
+				eclass.classGroup = classGroup;
+				classes.Add(eclass);
+			}
+			return classes;
+		}
+
+		/// <summary>
+		/// jsonファイルをプロパティリストに変換します
+		/// </summary>
+		/// <param name="data"></param>
+		/// <returns></returns>
+		public static List<JsonPropertyInfo> ToJSPropertyInfoList(this object data)
+		{
+			var _properties = (dynamic[])((data.GetType() == typeof(string)) ? jQuery.ParseJson((string)data) : data);
+			var properties = new List<JsonPropertyInfo>();
+			foreach (var _item in _properties) {
+				var item = new JsonPropertyInfo(_item);
+				properties.Add(item);
+			}
+			return properties;
+		}
+
+		/// <summary>
+		/// disabledをタグに追加します
+		/// </summary>
+		/// <param name="obj"></param>
+		/// <param name="flag">true: disabledをタグに追加　false: disabledをタグから削除</param>
+		/// <returns></returns>
+		public static jQueryObject Disable(this jQueryObject obj, bool flag)
+		{
+			if (flag) {
+				obj.Attribute("disabled", "disabled");
+			}
+			else {
+				obj.RemoveAttr("disabled");
+			}
+
+			return obj;
+		}
+
+		/// <summary>
+		/// クラスを入れ替えます
+		/// </summary>
+		/// <param name="obj"></param>
+		/// <param name="deleteClass">削除するクラス</param>
+		/// <param name="addClass">追加するクラス</param>
+		/// <returns></returns>
+		public static jQueryObject ToggleClass(this jQueryObject obj, string deleteClass, string addClass)
+		{
+			obj.ToggleClass(deleteClass, false);
+			obj.ToggleClass(addClass, true);
+			return obj;
+		}
+
+		public static jQueryObject GetDeviceBtn(this DeviceController.DeviceInfo di)
+		{
+			return di.GetDeviceLi().Children("a");
+		}
+
+		public static jQueryObject GetDeviceLi(this DeviceController.DeviceInfo di)
+		{
+			return jQuery.Select("#li_device_" + di.GetObjectID());
+		}
+
+		/// <summary>
+		/// 書き込み可であるかどうかしらべます
+		/// </summary>
+		/// <returns>true:書き込み可,false:書き込み不可</returns>
+		public static bool IsRULE_SET(this DeviceController.DevicePropertyInfo dpi)
+		{
+			return (dpi.PropertyInfo == null) ? false : dpi.PropertyInfo.access.Contains("RULE_SET");
+		}
+	}
+
+	public class UIObject
+	{
+		public jQueryObject Object;
+		public Element Element { get { return Object.GetElement(0); } }
+
+		public UIObject()
+		{
+		}
+
+		public UIObject(UIObject uiobject)
+		{
+			this.Object = uiobject.Object;
+		}
+
+		public UIObject(jQueryObject @object)
+		{
+			this.Object = @object;
+		}
+
+		public UIObject(string html)
+		{
+			this.Object = jQuery.FromHtml(html);
+		}
+
+		public UIObject Change()
+		{
+			this.Object.Change();
+			return this;
+		}
+
+		public void Change(jQueryEventHandlerWithContext eventHandler)
+		{
+			Object.Change(eventHandler);
+		}
+
+		public void Keypress(jQueryEventHandlerWithContext eventHandler)
+		{
+			Object.Keypress(eventHandler);
+		}
+
+		public jQueryObject Toggle(bool showOrHide)
+		{
+			return this.Object.Toggle(showOrHide);
+		}
+
+		public void Attribute(string attributeName, string value)
+		{
+			this.Object.Attribute(attributeName, value);
+		}
+
+		public void RemoveAttr(string attributeName)
+		{
+			this.Object.RemoveAttr(attributeName);
+		}
+
+		public string GetAttribute(string attributeName)
+		{
+			return Object.GetAttribute(attributeName);
+		}
+
+		public jQueryObject Find(string selector)
+		{
+			return this.Object.Find(selector);
+		}
+
+		public UIObject RemoveClass(string className)
+		{
+			this.Object.RemoveClass(className);
+			return this;
+		}
+
+		public UIObject ToggleClass(string className, bool add)
+		{
+			this.Object.ToggleClass(className, add);
+			return this;
+		}
+
+		public UIObject ToggleClass(string deleteClass, string addClass)
+		{
+			this.Object.ToggleClass(deleteClass, addClass);
+			return this;
+		}
+
+		public UIObject One(string eventName, jQueryEventHandlerWithContext eventHandler)
+		{
+			this.Object.One(eventName, eventHandler);
+			return this;
+		}
+
+		public UIObject Attribute(JsDictionary nameValueMap)
+		{
+			this.Object.Attribute(nameValueMap);
+			return this;
+		}
+
+		public UIObject Click(jQueryEventHandlerWithContext eventHandler)
+		{
+			this.Object.Click(eventHandler);
+			return this;
+		}
+
+		public UIObject Click(jQueryEventHandler eventHandler)
+		{
+			this.Object.Click(eventHandler);
+			return this;
+		}
+
+		public string Text { get { return Object.GetText(); } set { Object.Text(value); } }
+		public string Id { get { return Object.GetAttribute("id"); } set { Object.Attribute("id", value); } }
+		public string For { get { return Object.GetAttribute("for"); } set { Object.Attribute("for", value); } }
+		public string Name { get { return Object.GetAttribute("name"); } set { Object.Attribute("name", value); } }
+		public string DataRole { get { return Object.GetAttribute("data-role"); } set { Object.Attribute("data-role", value); } }
+		public string DataType { get { return Object.GetAttribute("data-type"); } set { Object.Attribute("data-type", value); } }
+		public string Title { get { return Object.GetAttribute("title"); } set { Object.Attribute("title", value); } }
+		public string Value
+		{
+			get
+			{
+				if (Object.Is("fieldset"))
+					return Object.Find("input[type='radio']:checked").GetValue();
+				return Object.GetValue();
+			}
+			set
+			{
+				if (Object.Is("fieldset")) {
+					Object.Find("input[type=\"radio\"]").Each((j, elem) => {
+						if (jQuery.Select(elem).GetValue() == value) {
+							jQuery.Select(elem).Prop("checked", true);
+						}
+						else {
+							jQuery.Select(elem).Prop("checked", false);
+						}
+					});
+					Object.Find("input[type=\"radio\"]").CheckboxRadio().CheckboxRadio("refresh");
+				}
+				else {
+					Object.Value(value);
+					if (DataRole == "flipswitch")
+						Object.Value(value).FlipSwitch("refresh");
+				}
+			}
+		}
+
+		public int Maxlength { get { return int.Parse(GetAttribute("maxlength")); } set { Attribute("maxlength", value.ToString()); } }
+		public int Min { get { return int.Parse(Object.GetAttribute("min")); } set { Object.Attribute("min", value.ToString()); } }
+		public int Max { get { return int.Parse(Object.GetAttribute("max")); } set { Object.Attribute("max", value.ToString()); } }
+		public int TabIndex { get { return int.Parse(Object.GetAttribute("tabindex")); } set { Object.Attribute("tabindex", value.ToString()); } }
+		public string Type { get { return Object.GetAttribute("type"); } set { Object.Attribute("type", value); } }
+
+		public void Append(UIObject uiobject)
+		{
+			this.Object.Append(uiobject.Object);
+		}
+
+		public jQueryObject Append(jQueryObject @object)
+		{
+			return this.Object.Append(@object);
+		}
+
+		public UIObject Disable(bool flag)
+		{
+			if (flag) {
+				this.Attribute("disabled", "disabled");
+			}
+			else {
+				this.RemoveAttr("disabled");
+			}
+			return this;
+		}
+
+		public jQueryObject Children()
+		{
+			return this.Object.Children();
+		}
+
+		public UIObject AddClass(string className)
+		{
+			this.Object.AddClass(className);
+			return this;
+		}
+
+		/// <summary>
+		/// 
+		/// </summary>
+		/// <param name="flag">false:イベント不可</param>
+		/// <returns></returns>
+		public UIObject PointerEvents(bool flag)
+		{
+			if (!flag) {
+				this.Object.CSS("pointer-events", "none");
+			}
+			return this;
+		}
+
+		public UIObject Hide()
+		{
+			this.Object.Hide();
+			return this;
+		}
+
+		public UIObject Show()
+		{
+			this.Object.Show();
+			return this;
+		}
+
+		private EcnlClass ecnlclass;
+		public EcnlClass Class
+		{
+			get { return ecnlclass; }
+			set
+			{
+				ecnlclass = value;
+				this.AddClass(EcnlClassString(value));
+			}
+		}
+
+		public enum EcnlClass
+		{
+			ecnl_pink,
+			ecnl_violet,
+			ecnl_light_green,
+			ecnl_light_blue,
+		}
+
+		private string EcnlClassString(EcnlClass @class)
+		{
+			if (@class == EcnlClass.ecnl_pink) {
+				return "ecnl_pink";
+			}
+			else if (@class == EcnlClass.ecnl_violet) {
+				return "ecnl_violet";
+			}
+			else if (@class == EcnlClass.ecnl_light_green) {
+				return "ecnl_light_green";
+			}
+			else if (@class == EcnlClass.ecnl_light_blue) {
+				return "ecnl_light_blue";
+			}
+			else {
+				return "";
+			}
+		}
+	}
+
+	public class UIGrpBox : UIListviewItem
+	{
+		UILabel Label;
+
+		public UIGrpBox()
+			: base()
+		{
+			LiAside = new UIP("", "ui-li-aside");
+			base.Append(LiAside);
+			base.Change(GrpBoxChange);
+		}
+
+		public UIGrpBox(DeviceController.DevicePropertyInfo dpi)
+			: this()
+		{
+			this.dpi = dpi;
+			Label = new UILabel(dpi);
+			this.dpi.PrepareInputInfo();
+
+			if (dpi.PropertyCode == 0x00) {
+
+			}
+			else if (dpi.PropertyCode == 0x97) {
+				SetTimebox();
+			}
+			else if (dpi.PropertyCode == 0x98) {
+				SetCalBox();
+			}
+			else if (this.dpi.InputTypes.Count == 0) {
+				SetTextInput();
+			}
+			else if (dpi.PropertyCode == 0x80 && dpi.InputTypes.Count == 1 && dpi.InputTypes[0].Mode == PropertyInputMode.Select) {
+				SetFlipSwitch();
+			}
+			else {
+				foreach (PropertyInputInfo pii in dpi.InputTypes) {
+
+					switch (pii.Mode) {
+					case PropertyInputMode.Select: {
+							SetFieldSet(pii);
+						}
+						break;
+					case PropertyInputMode.Range: {
+							SetRange(pii);
+						}
+						break;
+					default: {
+							SetDefault();
+						}
+						break;
+					}
+				}
+			}
+		}
+
+		public void SetFlipSwitch()
+		{
+			PropertySelectInput psi = (PropertySelectInput)dpi.InputTypes[0];
+
+			// OFF
+			var off = psi.Option.First((kvp) => { return kvp.Key == 0x31; });
+
+			// ON
+			var on = psi.Option.First((kvp) => { return kvp.Key == 0x30; });
+
+			UIOption OFF = new UIOption(off.Value, off.Key.ToString("X2"));
+			UIOption ON = new UIOption(on.Value, on.Key.ToString("X2"));
+
+			UIFlipSwitch Flipswitch = new UIFlipSwitch(OFF, ON);
+			Flipswitch.Change(this.flip_Change);
+
+			Flipswitch.Disable(!dpi.IsRULE_SET());
+
+			FieldContain = new UIFieldContain(Label, Flipswitch);
+
+			//FieldContain.Object.Trigger("create");
+			Append(FieldContain);
+		}
+
+		public void SetDefault()
+		{
+			UITextInput Textbox = new UITextInput();
+			Textbox.Change(text_Change);
+			var value = ""/*.ToString("X")*/;
+			Textbox.Value = value;
+			FieldContain = new UIFieldContain(Label, Textbox);
+			Append(FieldContain);
+		}
+
+		public void SetRange(PropertyInputInfo pii)
+		{
+			UIRangeInput range = new UIRangeInput();
+			range.Change(range_Change);
+			FieldContain = new UIFieldContain(Label, range);
+			var value = ((PropertyRangeInput)pii).Minimum;
+
+			range.Value = value;
+			range.Min = ((PropertyRangeInput)pii).Minimum;
+			range.Max = ((PropertyRangeInput)pii).Maximum;
+
+			Append(FieldContain.Object).Trigger("create");
+		}
+
+		private void range_Change(Element elem, jQueryEvent ev)
+		{
+			if (!CheckValiable()) { return; };
+			if (!CheckHex()) { return; };
+			byte[] data = ByteValue;
+			dpi.InputData = data;
+			KadecotSet(dpi, data);
+		}
+
+		private void SetCalBox()
+		{
+			UICalBox Textbox = new UICalBox();
+			Textbox.Change(calbox_Change);
+
+			JsonPropertyInfo epi = dpi.PropertyInfo;
+
+			FieldContain = new UIFieldContain(Label, Textbox);
+
+			int len = dpi.GetMaxLength();
+
+			string valueDescription = "";
+			foreach (JsonFieldInfo jfi in epi.fields) {
+				valueDescription += "【" + jfi.description + ":" + jfi.valueDescription + "】";
+			}
+			Textbox.Placeholder = dpi.GetText();
+			Textbox.Value = "";
+			//Textbox.Disable(!dpi.IsRULE_SET());
+			Textbox.ReadOnly = !dpi.IsRULE_SET();
+			Textbox.Title = valueDescription;
+			One("dateboxcreate", calbox_Create);
+			Append(FieldContain.Object);
+		}
+
+		private void calbox_Create(Element ele, jQueryEvent ev)
+		{
+			var textinput = jQuery.Select(ev.Target).Parent(".ui-input-datebox");
+			textinput.Append(BackButton.Object);
+			BackButton.Click(BackButtonClick);
+		}
+
+		private void calbox_Change(Element elem, jQueryEvent ev)
+		{
+			UICalBox Calbox = (UICalBox)FieldContain.Input;
+			byte[] data = new byte[4];
+			RemoveClass();
+
+			if (!((Calbox.dY >= 1 && Calbox.dY < 9999) && ((Calbox.dM >= 1 && Calbox.dM <= 12) && (Calbox.dD >= 1 && Calbox.dD <= 31)))) {
+				ToggleClass(true ? "ecnl_pink" : "ecnl_violet", true);
+			}
+			else {
+				data[0] = Byte.Parse(Calbox.xY.Substring(0, 2), 16);
+				data[1] = Byte.Parse(Calbox.xY.Substring(2, 2), 16);
+				data[2] = Byte.Parse(Calbox.xM, 16);
+				data[3] = Byte.Parse(Calbox.xD, 16);
+
+				dpi.InputData = data;
+				dpi.IsWaitRes = true;
+
+				this.Class = EcnlClass.ecnl_light_green;
+			}
+		}
+
+		private void flip_Change(Element elem, jQueryEvent ev)
+		{
+			byte[] data = ByteValue;
+			dpi.InputData = data;
+			KadecotSet(dpi, data);
+		}
+
+		private void SetTextInput()
+		{
+			UITextInput Textbox = new UITextInput();
+			Textbox.Change(text_Change);
+			Textbox.Keypress(text_KeyPress);
+			Textbox.Keyup(text_Keyup);
+			Textbox.On("textinputcreate", this.text_Create);
+			JsonPropertyInfo epi = dpi.PropertyInfo;
+
+			string valueDescription = "";
+			foreach (JsonFieldInfo jfi in epi.fields) {
+				valueDescription += "【" + jfi.description + ":" + jfi.valueDescription + "】";
+			}
+			Textbox.Value = "";
+			//Textbox.Disable(!dpi.IsRULE_SET());
+			Textbox.ReadOnly = !dpi.IsRULE_SET();
+			Textbox.Maxlength = dpi.GetMaxLength();
+			Textbox.Title = valueDescription;
+			FieldContain = new UIFieldContain(Label, Textbox);
+			base.Append(FieldContain.Object);
+		}
+
+		private void SetTimebox()
+		{
+			UITimeBox Textbox = new UITimeBox();
+			Textbox.Change(timebox_Change);
+			JsonPropertyInfo epi = dpi.PropertyInfo;
+			FieldContain = new UIFieldContain(Label, Textbox);
+			int len = dpi.GetMaxLength();
+			string valueDescription = "";
+
+			foreach (JsonFieldInfo jfi in epi.fields) {
+				valueDescription += "【" + jfi.description + ":" + jfi.valueDescription + "】";
+			}
+
+			Textbox.Placeholder = dpi.GetText();
+			Textbox.Value = "";
+			Textbox.Title = valueDescription;
+			//Textbox.Disable(!dpi.IsRULE_SET());
+			Textbox.ReadOnly = !dpi.IsRULE_SET();
+			this.Append(FieldContain);
+			this.One("dateboxcreate", timebox_Create);
+		}
+
+		private void SetFieldSet(PropertyInputInfo pii)
+		{
+			UIFieldSet FieldSet = new UIFieldSet();
+			UILabel Label = new UILabel();
+			Label.Text = dpi.GetText();
+			FieldSet.Horizontal = true;
+			FieldSet.Change(select_Change);
+			FieldContain = new UIFieldContain(Label, FieldSet);
+
+			foreach (KeyValuePair<long, string> opt in ((PropertySelectInput)pii).Option) {
+				UIRadioInput Radio = new UIRadioInput(opt.Key.ToString("X"));
+				FieldSet.Append(new UIFieldSet.RadioInput(new UILabel(opt.Value), Radio));
+			}
+
+			Append(FieldContain.Object);
+		}
+
+		private void select_Change(Element elem, jQueryEvent ev)
+		{
+			byte[] data = ByteValue;
+			dpi.InputData = data;
+			KadecotSet(dpi, data);
+		}
+
+		/// <summary>
+		/// 時刻入力フォームの入力値が変更された場合
+		/// </summary>
+		/// <param name="ele"></param>
+		/// <param name="ev"></param>
+		private void timebox_Change(Element ele, jQueryEvent ev)
+		{
+			RemoveClass();
+			if (Changed) {
+				timebox_Change();
+			}
+		}
+
+		private void timebox_Change()
+		{
+			string value = FieldContain.Input.Value;
+			string[] val = value.Split(":");
+
+			Byte[] data = new Byte[2];
+			data[0] = byte.Parse(val[0], 10);
+			data[1] = byte.Parse(val[1], 10);
+
+			string hex = data[0].ToString("X2") + data[1].ToString("X2");
+
+			RemoveClass();
+
+			dpi.InputData = data;
+			dpi.IsWaitRes = true;
+			ToggleClass(true ? "ecnl_light_green" : "ecnl_light_blue", true);
+		}
+
+		private void timebox_Create(Element ele, jQueryEvent ev)
+		{
+			var textinput = jQuery.Select(ev.Target).Parent(".ui-input-datebox");
+			textinput.Append(BackButton.Object);
+			BackButton.Click(BackButtonClick);
+		}
+
+		private void text_Keyup(Element elem, jQueryEvent ev)
+		{
+			jQuery.Select(elem).Change();
+		}
+
+		private void text_Create(Element elem, jQueryEvent ev)
+		{
+			var textinput = jQuery.Select(ev.Target).Parent(".ui-input-text");
+			textinput.Append(BackButton.Object);
+			BackButton.Click(BackButtonClick);
+		}
+
+		private void text_KeyPress(Element elem, jQueryEvent ev)
+		{
+			bool number = (ev.Which >= (int)KeyPress._0 && ev.Which <= (int)KeyPress._9);
+			bool lower = (ev.Which >= (int)KeyPress.a && ev.Which <= (int)KeyPress.f);
+			bool upper = (ev.Which >= (int)KeyPress.A && ev.Which <= (int)KeyPress.F);
+			bool BackSpace = (ev.Which == (int)KeyPress.BackSpace);
+			bool Delete = (ev.Which == (int)KeyPress.Delete);
+
+			bool flag = (!number && !lower) && (!BackSpace && !Delete) && !upper;
+			if (flag) ev.PreventDefault();
+		}
+
+		private void BackButtonClick(Element elem, jQueryEvent ev)
+		{
+			FieldContain.Input.Value = ToText(GetValue);
+			FieldContain.Input.Object.Change();
+		}
+
+		private void text_Change(Element elem, jQueryEvent ev)
+		{
+			if (Changed) {
+				RemoveClass();
+				if (!CheckValiable()) { return; };
+				if (!CheckHex()) { return; };
+				SetDpi();
+			}
+		}
+
+		private Type InputType { get { return FieldContain.Input.GetType(); } }
+		private byte[] ToByteValue()
+		{
+			string Value = FieldContain.Input.Value;
+			byte[] data = new byte[Value.Length / 2];
+			for (int i = 0, j = 0; j < Value.Length; j += 2) {
+				data[i++] = Byte.Parse(Value.Substring(j, 2), 16);
+			}
+			return data;
+		}
+
+		private void SetDpi()
+		{
+			dpi.InputData = ByteValue;
+			dpi.IsWaitRes = true;
+			ErrorText = "";
+			ToggleClass(user ? "ecnl_light_green" : "ecnl_light_blue", true);
+		}
+
+		bool user = true;
+		private byte[] ByteValue { get { return ToByteValue(); } }
+		private DeviceController.DevicePropertyInfo dpi;
+		private UIP LiAside;
+		public string ErrorText { get { return LiAside.Text; } set { LiAside.Text = value; } }
+		public byte[] GetValue;
+		public UIFieldContain FieldContain;
+
+		public void RemoveClass()
+		{
+			ErrorText = "";
+			BackButton.Hide();
+			RemoveClass("ecnl_pink");
+			RemoveClass("ecnl_violet");
+			RemoveClass("ecnl_light_green");
+			RemoveClass("ecnl_light_blue");
+		}
+
+		public void SetName(string nameid)
+		{
+			string name = nameid;
+			if (InputType == typeof(UICalBox)) {
+				name = "cal_" + nameid;
+			}
+			else if (InputType == typeof(UITimeBox)) {
+				name = "tmb_" + nameid;
+			}
+			else if (InputType == typeof(UITextInput)) {
+				name = "txt_" + nameid;
+			}
+			else if (InputType == typeof(UIRadioInput)) {
+				name = "rng_" + nameid;
+			}
+			else if (InputType == typeof(UIFlipSwitch)) {
+				name = "flp_" + nameid;
+				UIFlipSwitch Flipswitch = (UIFlipSwitch)FieldContain.Input;
+
+				string val0 = Flipswitch.OFF.Value;
+				string val1 = Flipswitch.ON.Value;
+				Flipswitch.OFF.Id = name + val0;
+				Flipswitch.ON.Id = name + val1;
+			}
+			else if (InputType == typeof(UIFieldSet)) {
+				name = "sel_" + nameid;
+				UIFieldSet FieldSet = (UIFieldSet)FieldContain.Input;
+				FieldSet.Id = name;
+
+				for (int i = 0; i < FieldSet.RadioList.Count; i++) {
+					var id = name + FieldSet.RadioList[i].Radio.Value;
+					FieldSet.RadioList[i].Radio.Name = name;
+					FieldSet.RadioList[i].Radio.Id = id;
+					FieldSet.RadioList[i].Label.For = id;
+				}
+			}
+
+			FieldContain.Label.For = name;
+			FieldContain.Input.Id = name;
+			FieldContain.Input.Name = name;
+		}
+
+		public bool CheckHex()
+		{
+			string Value = FieldContain.Input.Value;
+			if (!new Regex("^([0-9A-Fa-f][0-9A-Fa-f])+$").Test(Value)) {
+				ErrorText = "16進数で入力してください";
+				ToggleClass(true ? "ecnl_pink" : "ecnl_violet", true);
+				return false;
+			}
+			return true;
+		}
+
+		public bool CheckValiable()
+		{
+			JsonPropertyInfo epi = dpi.PropertyInfo;
+			//可変長データの場合
+			bool valiable = dpi.IsValiable();
+			int len = dpi.GetMaxLength();
+			string Value = FieldContain.Input.Value;
+			bool length = (Value.Length != len) && (!valiable || (Value.Length > len));
+
+			if ((Value.Length != len) && (!valiable || (Value.Length > len))) {
+				ErrorText = len.ToString() + "文字で入力してください";
+				ToggleClass(user ? "ecnl_pink" : "ecnl_violet", true);
+
+				return false;
+			}
+			return true;
+		}
+
+		public string ToTextDefault(byte[] data)
+		{
+			string value = "";
+			if (data == null) {
+				return "";
+			}
+			for (int i = 0; i < data.Length; i++) {
+				value += data[i].ToString("X2");
+			}
+			return value;
+		}
+
+		public string ToTextTimeBox(byte[] data)
+		{
+
+			string str = ToTextDefault(data);
+			if (str.Length == 4) {
+				int h = int.Parse("0x" + str.Substr(0, 2));
+				int m = int.Parse("0x" + str.Substr(2, 2));
+				return h.ToString("D2") + ":" + m.ToString("D2");
+			}
+			else {
+				return "";
+			}
+		}
+
+		public string ToTextCal(byte[] data)
+		{
+			string str = ToText(data);
+			if (str.Length == 8) {
+				int y = int.Parse("0x" + str.Substr(0, 4));
+				int m = int.Parse("0x" + str.Substr(4, 2));
+				int d = int.Parse("0x" + str.Substr(6, 2));
+				if ((y < 1 || m < 1) || d < 1) {
+					return y.ToString("D4") + "/" + m.ToString("D2") + "/" + m.ToString("D2");
+				}
+				DateTime date = new DateTime(y, m, d);
+				return date.ToString("yyyy/MM/dd");
+			}
+			else {
+				return "";
+			}
+		}
+
+		public string ToText(byte[] data)
+		{
+			if (data == null) {
+				return "";
+			}
+			if (FieldContain.Input.GetType().Equals(typeof(UITimeBox))) {
+				return ToTextTimeBox(data);
+			}
+			else if (FieldContain.Input.GetType().Equals(typeof(UICalBox))) {
+				return ToTextCal(data);
+			}
+			else {
+				return ToTextDefault(data);
+			}
+		}
+
+		/// <summary>
+		/// 値が変わった時true
+		/// </summary>
+		public bool Changed { get { return !FieldContain.Input.Value.Equals(ToText(GetValue)); } }
+		public void GrpBoxChange(Element ele, jQueryEvent ev)
+		{
+			BackButton.Toggle(Changed);
+			if (!Changed) {
+				dpi.IsWaitRes = false;
+				dpi.InputData = null;
+				RemoveClass();
+			}
+		}
+
+		public EventHandlerDevicePropertyInfo KadecotSet;
+		public void SetGetValue(byte[] data)
+		{
+			RemoveClass();
+			GetValue = data;
+			FieldContain.Input.Value = ToText(data);
+			FieldContain.Input.Change();
+		}
+
+		public UIBackButton BackButton = new UIBackButton();
+	}
+
+	public class UIBackButton : UIButton
+	{
+		public UIBackButton()
+			: base()
+		{
+			base.ButtonIcon = Icon.back;
+			base.Title = "元に戻す";
+			base.TabIndex = -1;
+			base.AddClass("text_backButton");
+			base.Object.Hide();
+		}
+	}
+
+	public class UIDiv : UIObject
+	{
+		public UIDiv()
+			: base("<div>")
+		{
+
+		}
+	}
+
+	public class UILabel : UIObject
+	{
+		public UILabel()
+			: base("<label>")
+		{
+		}
+
+		public UILabel(string text)
+			: this()
+		{
+			base.Text = text;
+		}
+
+		public UILabel(string text, string @for)
+			: this(text)
+		{
+			base.For = @for;
+		}
+
+		public UILabel(string text, string @for, string name)
+			: this(text, @for)
+		{
+			base.Name = name;
+		}
+
+		public UILabel(DeviceController.DevicePropertyInfo dpi)
+			: this(dpi.GetText())
+		{
+			base.Title = dpi.PropertyInfo.valueDescription;
+		}
+	}
+
+	public class UIFieldContain : UIObject
+	{
+		public UIFieldContain()
+			: base("<div>")
+		{
+			base.DataRole = "fieldcontain";
+		}
+
+		public UIFieldContain(UIObject uiobject)
+			: this()
+		{
+			base.Append(uiobject);
+		}
+
+		public UIFieldContain(UILabel label, UIObject uiobject)
+			: this()
+		{
+			this.Label = label;
+			this.Input = uiobject;
+			base.Append(this.Label);
+			base.Append(this.Input);
+		}
+
+		public UILabel Label;
+		public UIObject Input;
+	}
+
+	public class UIGridA : UIObject
+	{
+		public UIGridA()
+			: base("<div>")
+		{
+			this.Object.AddClass("ui-grid-a");
+			this.Append(BlockA);
+			this.Append(BlockB);
+		}
+
+		public UIBlockA BlockA = new UIBlockA();
+		public UIBlockB BlockB = new UIBlockB();
+
+		public class UIBlockA : UIObject
+		{
+			public UIBlockA()
+				: base("<div>")
+			{
+				this.Object.AddClass("ui-block-a");
+			}
+		}
+
+		public class UIBlockB : UIObject
+		{
+			public UIBlockB()
+				: base("<div>")
+			{
+				this.Object.AddClass("ui-block-b");
+			}
+		}
+	}
+
+	public class UIFlipSwitch : UIObject
+	{
+		public UIFlipSwitch()
+			: base("<select>")
+		{
+			base.DataRole = "flipswitch";
+			//base.Append(new UIOption());
+			//base.Append(new UIOption());
+		}
+
+		public UIFlipSwitch(UIOption off, UIOption on)
+			: this()
+		{
+			this.OFF = off;
+			this.ON = on;
+			base.Append(this.OFF);
+			base.Append(this.ON);
+		}
+
+		public UIOption ON;//{ get { return new UIOption(base.Object.Find("option").Eq(1)); } set { base.Object.Find("option").Eq(1).ReplaceWith(value.Object); } }
+		public UIOption OFF;// { get { return new UIOption(base.Object.Find("option").Eq(0)); } set { base.Object.Find("option").Eq(0).ReplaceWith(value.Object); } }
+	}
+
+	public class UIButton : UIObject
+	{
+		public UIButton()
+			: base("<a>")
+		{
+			this.Button = true;
+			this.NoText = true;
+
+			this.Href = "#";
+			this.CornerAll = true;
+		}
+
+		public bool Button { get { return base.Object.HasClass("ui-btn"); } set { base.Object.ToggleClass("ui-btn", value); } }
+		public bool NoText { get { return base.Object.HasClass("ui-btn-icon-notext"); } set { base.Object.ToggleClass("ui-btn-icon-notext", value); } }
+		public bool CornerAll { get { return base.Object.HasClass("ui-corner-all"); } set { base.Object.ToggleClass("ui-corner-all", value); } }
+		public Icon ButtonIcon { get { return getIcon(); } set { base.Object.ToggleClass(getClass(value), true); } }
+		public string Href { get { return base.Object.GetAttribute("href"); } set { base.Object.Attribute("href", value); } }
+		public enum Icon
+		{
+			delete,
+			refresh,
+			back,
+		}
+
+		private string getClass(Icon icon)
+		{
+			string text = "";
+			if (icon == Icon.delete) {
+				text = "delete";
+			}
+			else if (icon == Icon.refresh) {
+				text = "refresh";
+			}
+			else if (icon == Icon.back) {
+				text = "back";
+			}
+			return "ui-icon-" + text;
+		}
+
+		private Icon getIcon()
+		{
+			if (base.Object.HasClass("ui-icon-delete")) {
+				return Icon.delete;
+			}
+			else if (base.Object.HasClass("ui-icon-refresh")) {
+				return Icon.refresh;
+			}
+			else if (base.Object.HasClass("ui-icon-back")) {
+				return Icon.back;
+			}
+			return Icon.delete;
+		}
+	}
+
+	public class UIOption : UIObject
+	{
+		public UIOption()
+			: base("<option>")
+		{
+
+		}
+
+		public UIOption(string text, string value)
+			: this()
+		{
+			base.Text = text;
+			base.Value = value;
+		}
+
+		public UIOption(jQueryObject @object)
+			: base(@object)
+		{
+
+		}
+	}
+
+	public class UIRadioInput : UIObject
+	{
+		public UIRadioInput()
+			: base("<input>")
+		{
+			base.Object.Attribute("type", "radio");
+		}
+
+		public UIRadioInput(string id, string name)
+			: this()
+		{
+			base.Id = id;
+			base.Name = name;
+		}
+
+		public UIRadioInput(string id, string name, string value)
+			: this(id, name)
+		{
+			base.Value = value;
+		}
+
+		public UIRadioInput(string value)
+			: this()
+		{
+			base.Value = value;
+		}
+	}
+
+	public class UILi : UIObject
+	{
+		public UILi()
+			: base("<li>")
+		{
+		}
+	}
+
+	public class UIFieldSet : UIObject
+	{
+		public UIFieldSet()
+			: base("<fieldset>")
+		{
+			this.ControlGroup = true;
+		}
+
+		public UIFieldSet(bool horizontal)
+			: this()
+		{
+			this.Horizontal = horizontal;
+		}
+
+		public string CheckdValue()
+		{
+			return jQuery.Select("input[type='radio']:checked", base.Object).GetValue();
+		}
+
+		public void Append(RadioInput radio)
+		{
+			if (RadioList == null) {
+				RadioList = new List<RadioInput>();
+			}
+			RadioList.Add(new RadioInput(radio.Label, radio.Radio));
+			RadioInput last = RadioList.Last<RadioInput>();
+			base.Append(last.Label);
+			base.Append(last.Radio);
+		}
+
+		public List<RadioInput> RadioList;
+		private bool _ControlGroup;
+		public bool ControlGroup
+		{
+			get
+			{
+				return _ControlGroup;
+			}
+			set
+			{
+				if (value) {
+					base.DataRole = "controlgroup";
+				}
+				else {
+					base.DataRole = "";
+				}
+				_ControlGroup = value;
+			}
+		}
+
+		private bool _Horizontal;
+		public bool Horizontal
+		{
+			get { return _Horizontal; }
+			set
+			{
+				if (value) {
+					base.DataType = "horizontal";
+				}
+				else {
+					base.DataType = "";
+				}
+				_Horizontal = value;
+			}
+		}
+
+		public class RadioInput
+		{
+			public UIRadioInput Radio;
+			public UILabel Label;
+			public RadioInput(UILabel Label, UIRadioInput Radio)
+			{
+				this.Radio = Radio;
+				this.Label = Label;
+			}
+		}
+	}
+
+	public class UIRangeInput : UIObject
+	{
+		public UIRangeInput()
+			: base("<input>")
+		{
+			base.Type = "number";
+			base.DataType = "range";
+			this.DataHighlight = true;
+			base.Keypress(SliderKeypress);
+			this.Handle = true;
+			base.One("slidecreate", SliderCreate);
+		}
+
+		public UIRangeInput(int min, int max)
+			: this()
+		{
+			base.Min = min;
+			base.Max = max;
+			base.Maxlength = GetMaxLength();
+		}
+
+		private int GetMaxLength()
+		{
+			int min = 0;
+			int j;
+			if (Min < 0) {
+				min = 1;
+				j = -10;
+				while (Max / j > 1) {
+					min++;
+					j *= 10;
+				}
+				min++;
+
+			}
+			int i = 1;
+			j = 10;
+			while (Max / j >= 1) {
+				i++;
+				j *= 10;
+			}
+
+			return (i > min) ? i : min;
+		}
+
+		bool DataHighlight
+		{
+			get { return bool.Parse(base.GetAttribute("data-highlight")); }
+			set { base.Attribute("data-highlight", value.ToString()); }
+		}
+
+		public new int Value
+		{
+			get
+			{
+				if (base.Value == "") {
+					this.Value = base.Min;
+				}
+				return int.Parse(base.Value);
+			}
+			set { base.Value = value.ToString(); }
+		}
+
+		private void SliderKeypress(Element ele, jQueryEvent ev)
+		{
+			bool number = (ev.Which >= (int)KeyPress._0 && ev.Which <= (int)KeyPress._9);
+
+			bool BackSpace = (ev.Which == (int)KeyPress.BackSpace);
+			bool Delete = (ev.Which == (int)KeyPress.Delete);
+			bool minus = (ev.Which == (int)KeyPress.minus);
+			bool flag = (!number && !minus) && (!BackSpace && !Delete);
+			if (flag) ev.PreventDefault();
+		}
+
+		public bool Handle;
+		public UIHandle SliderHandle;
+
+		private void SliderCreate(Element ele, jQueryEvent ev)
+		{
+			SliderHandle = new UIHandle(ev);
+			SliderHandle.Toggle(this.Handle);
+
+			UISliderTrack SliderTrack = new UISliderTrack(ev);
+			SliderTrack.PointerEvents(this.Handle);
+			base.PointerEvents(this.Handle);
+		}
+
+		public class UIHandle : UIObject
+		{
+			public UIHandle(jQueryEvent ev)
+			{
+				base.Object = jQuery.Select(ev.Target).Parent().Find(".ui-slider-handle");
+			}
+		}
+
+		public class UISliderTrack : UIObject
+		{
+			public UISliderTrack(jQueryEvent ev)
+			{
+				base.Object = jQuery.Select(ev.Target).Parent().Find(".ui-slider-track");
+			}
+		}
+	}
+
+	public class UITextInput : UIObject
+	{
+		public UITextInput()
+			: base("<input>")
+		{
+			base.Type = "text";
+			this.DataClearBtn = true;
+		}
+
+		public UITextInput(JsDictionary dic)
+			: this()
+		{
+			base.Attribute(dic);
+		}
+
+		public bool DataClearBtn
+		{
+			get { return bool.Parse(base.GetAttribute("data-clear-btn")); }
+			set
+			{
+				if (value) { base.Attribute("data-clear-btn", value.ToString()); }
+				else { base.RemoveAttr("data-clear-btn"); };
+			}
+		}
+
+		public string Placeholder { get { return base.GetAttribute("placeholder"); } set { base.Attribute("placeholder", value); } }
+		public JsDictionary DataOptions
+		{
+			get
+			{
+				return Json.Parse<JsDictionary>(base.GetAttribute("data-options"));
+			}
+			set
+			{
+				base.Attribute("data-options", Json.Stringify(value));
+			}
+		}
+
+		public jQueryObject Keyup(jQueryEventHandlerWithContext eventHandler)
+		{
+			base.Object.Keyup(eventHandler);
+			return base.Object;
+		}
+
+		public jQueryObject On(string eventName, jQueryEventHandlerWithContext eventHandler)
+		{
+			base.Object.On(eventName, eventHandler);
+			return base.Object;
+		}
+
+		public bool ReadOnly
+		{
+			get { return base.GetAttribute("readonly") == "readonly"; }
+			set
+			{
+				if (value) {
+					this.Attribute("readonly", "readonly");
+				}
+				else {
+					this.RemoveAttr("readonly");
+				}
+			}
+		}
+	}
+
+	public class UITimeBox : UITextInput
+	{
+		public UITimeBox()
+			: base()
+		{
+			base.DataRole = "datebox";
+			base.DataOptions = new JsDictionary("mode", "timebox");
+			base.DataClearBtn = false;
+			base.On("dateboxcreate", DateBoxCreate);
+		}
+
+		private void DateBoxCreate(Element ele, jQueryEvent ev)
+		{
+			jQuery.Select(ele).Parents().Find(".ui-icon-grid").ToggleClass("ui-icon-grid", "ui-icon-clock");
+		}
+	}
+
+	public class UICalBox : UITextInput
+	{
+		/// <summary>年</summary>
+		public int dY { get { return GetCal(0); } }
+
+		/// <summary>月</summary>
+		public int dM { get { return GetCal(1); } }
+
+		/// <summary>日</summary>
+		public int dD { get { return GetCal(2); } }
+
+		/// <summary>年（16進4桁）</summary>
+		public string xY { get { return dY.ToString("X4"); } }
+
+		/// <summary>月(16進2桁)</summary>
+		public string xM { get { return dM.ToString("X2"); } }
+
+		/// <summary>日(16進2桁)</summary>
+		public string xD { get { return dD.ToString("X2"); } }
+
+		/// <summary>年月日（16進8桁）</summary>
+		public string YYYYMMDD { get { return xY + xM + xD; } }
+
+		/// <summary>年（10進4桁）/月(10進4桁)/日(10進4桁)</summary>
+		public string yyyymmdd { get { return dY.ToString("D4") + "/" + dM.ToString("D2") + "/" + dD.ToString("D2"); } }
+
+		public UICalBox()
+			: base()
+		{
+			base.DataRole = "datebox";
+			base.DataOptions = new JsDictionary("mode", "calbox");
+			base.DataClearBtn = false;
+			base.On("dateboxcreate", DateBoxCreate);
+		}
+
+		private void DateBoxCreate(Element ele, jQueryEvent ev)
+		{
+			jQuery.Select(ele).Parents().Find(".ui-icon-grid").ToggleClass("ui-icon-grid", "ui-icon-calendar");
+		}
+
+		private int GetCal(int i)
+		{
+			int x = 0;
+			if (Value.Contains("/")) {
+				string[] value = Value.Split("/");
+				x = int.Parse(value[i]);
+			}
+			return x;
+		}
+
+		public class UIInputDate : UIObject
+		{
+			public UIInputDate(jQueryEvent ev)
+			{
+				base.Object = jQuery.Select(ev.Target).Parent(".ui-input-datebox");
+			}
+		}
+	}
+
+	public class UICollapsibleset : UIObject
+	{
+		public UICollapsibleset()
+			: base("<div>")
+		{
+			base.DataRole = "collapsible";
+		}
+
+		public UICollapsibleset(JsDictionary attr, string h2)
+			: this()
+		{
+			base.Attribute(attr);
+			base.Append(new UIH(2, h2));
+		}
+
+		public UICollapsibleset(string h2)
+			: this()
+		{
+			base.Append(new UIH(2, h2));
+		}
+
+		public bool DataInset { get { return bool.Parse(base.Object.GetAttribute("data-inset")); } set { base.Object.Attribute("data-inset", value.ToString()); } }
+	}
+
+	public class UIListview : UIObject
+	{
+		public UIListview()
+			: base("<ul>")
+		{
+			base.DataRole = "listview";
+		}
+
+		public UIListview(params object[] nameValuePairs)
+			: this()
+		{
+			base.Attribute(new JsDictionary(nameValuePairs));
+		}
+	}
+
+	public class UIListviewItem : UIObject
+	{
+		public UIListviewItem()
+			: base("<li>")
+		{
+
+		}
+
+		public UIListviewItem(UIObject uiobject)
+			: this()
+		{
+			base.Append(uiobject);
+		}
+	}
+
+	public class UIListDivider : UIListviewItem
+	{
+		public UIListDivider()
+			: base()
+		{
+			base.DataRole = "list-divider";
+		}
+
+		public UIListDivider(string text)
+			: this()
+		{
+			base.Text = text;
+		}
+
+		public UIListDivider(UIObject uiobject)
+			: this()
+		{
+			base.Append(uiobject);
+		}
+
+		public UIListDivider(jQueryObject @object)
+			: this()
+		{
+			base.Append(@object);
+		}
+	}
+
+	public class UIP : UIObject
+	{
+		public UIP()
+			: base("<p>")
+		{
+		}
+
+		public UIP(string text)
+			: this()
+		{
+			base.Text = text;
+		}
+
+		public UIP(string text, string @class)
+			: this(text)
+		{
+			base.AddClass(@class);
+		}
+	}
+
+	public class UIAnchor : UIObject
+	{
+		public UIAnchor()
+			: base("<a>")
+		{
+
+		}
+
+		public UIAnchor(string text)
+			: this()
+		{
+			base.Text = text;
+		}
+
+		public UIAnchor(UIObject uiobject)
+			: this()
+		{
+			base.Append(uiobject);
+		}
+
+		public string Href { get { return base.GetAttribute("href"); } set { base.Attribute("href", value); } }
+		public string Target { get { return base.GetAttribute("target"); } set { base.Attribute("target", value); } }
+	}
+
+	public class UIH : UIObject
+	{
+		public UIH()
+			: base("<h1>")
+		{
+		}
+
+		public UIH(int i)
+			: base("<h" + i.ToString() + ">")
+		{
+
+		}
+
+		public UIH(int i, string text)
+			: this(i)
+		{
+			base.Text = text;
+		}
+	}
+
+	public class UIImg : UIObject
+	{
+		public UIImg()
+			: base("<img>")
+		{
+
+		}
+
+		public UIImg(JsDictionary attr)
+			: this()
+		{
+			base.Attribute(attr);
+		}
+
+		public UIImg(params object[] nameValuePairs)
+			: this()
+		{
+			base.Attribute(new JsDictionary(nameValuePairs));
+		}
+	}
+
+	public class UIPin : UILi
+	{
+		public UIButton ReadButton;
+		public UIFieldSet UIPinMode;
+		public UIRangeInput Range;
+		public UIRangeInput AnalogRead;
+		public UIFlipSwitch FlipSwitch;
+		public int Pin;
+		public UIListDivider ListDivider;
+		private UIFieldSet SetUIPinMode(int i)
+		{
+			UIPinMode.Append(new UILabel("INPUT", "input" + i.ToString(), "pin" + i.ToString()));
+			UIPinMode.Append(new UIRadioInput("input" + i.ToString(), "pin" + i.ToString(), "INPUT"));
+			UIPinMode.Append(new UILabel("OUTPUT", "output" + i.ToString(), "pin" + i.ToString()));
+			UIPinMode.Append(new UIRadioInput("output" + i.ToString(), "pin" + i.ToString(), "OUTPUT"));
+			UIPinMode.Append(new UILabel("INPUT_PULLUP", "input_pullup" + i.ToString(), "pin" + i.ToString()));
+			UIPinMode.Append(new UIRadioInput("input_pullup" + i.ToString(), "pin" + i.ToString(), "INPUT_PULLUP"));
+			return UIPinMode;
+		}
+
+		private void SetUIDigital(int i)
+		{
+		}
+
+		private void SetUIRange(int i)
+		{
+			Range = new UIRangeInput(-1, 255);
+			Range.Value = 123;
+		}
+
+		private void SetAnalogRead(int i)
+		{
+			AnalogRead = new UIRangeInput(0, 1023);
+			AnalogRead.Handle = false;
+		}
+
+		public UIPin()
+			: base()
+		{
+			base.AddClass("pin");
+			ListDivider = new UIListDivider();
+			UIPinMode = new UIFieldSet(true);
+
+			Range = new UIRangeInput();
+
+			ReadButton = new UIButton();
+			ReadButton.Title = "取得";
+			ReadButton.ButtonIcon = UIButton.Icon.refresh;
+		}
+
+		public UIPin(int pin)
+			: this()
+		{
+			this.Pin = pin;
+			UIDiv Div = new UIDiv();
+
+			Div.Append(new UIH(1, "pin" + pin.ToString()));
+			Div.Append(ReadButton);
+			ListDivider.Append(Div);
+			SetUIPinMode(pin);
+			SetUIDigital(pin);
+			SetUIRange(pin);
+
+			if (pin >= 0 && pin <= 7) {
+				FlipSwitch = new UIFlipSwitch(new UIOption("LOW", "LOW"), new UIOption("HIGH", "HIGH"));
+				base.Append(new UIFieldContain(UIPinMode));
+				base.Append(new UIFieldContain(FlipSwitch));
+				base.Append(new UIFieldContain(Range));
+			}
+			else if (pin >= 8 && pin <= 13) {
+				FlipSwitch = new UIFlipSwitch(new UIOption("LOW", "LOW"), new UIOption("HIGH", "HIGH"));
+				base.Append(new UIFieldContain(UIPinMode));
+				base.Append(new UIFieldContain(FlipSwitch));
+			}
+			else if (pin >= 14 && pin <= 19) {
+				SetAnalogRead(pin);
+				base.Append(new UIFieldContain(AnalogRead));
+			}
+		}
+
+		public Element[] GetElements()
+		{
+			Element[] elements = new Element[2];
+			elements[0] = ListDivider.Element;
+			elements[1] = base.Element;
+			return elements;
+		}
+
+		public void SetPinModeChange(EventHandlerFieldSet eventhandler)
+		{
+			if (UIPinMode != null) {
+				UIPinMode.Change((elem, ev) => { eventhandler(UIPinMode, Pin); });
+			}
+		}
+
+		public void SetDigitalChange(EventHandlerFlipSwitch eventhandler)
+		{
+			if (FlipSwitch != null) {
+				FlipSwitch.Change((elem, ev) => { eventhandler(ReadButton, FlipSwitch, Pin); });
+			}
+		}
+
+		public void SetReadButtonClick(EventHandlerFlipSwitch eventhandler)
+		{
+			if (FlipSwitch != null) {
+				ReadButton.Click((elem, ev) => { eventhandler(ReadButton, FlipSwitch, Pin); });
+			}
+		}
+
+		public void SetAnalogWriteChange(EventHandlerRange eventhandler)
+		{
+			if (Range != null) {
+				Range.Change((elem, ev) => { eventhandler(Range, Pin); });
+			}
+		}
+
+		public void SetAnalogReadChange(EventHandlerRange eventhandler)
+		{
+			if (AnalogRead != null) {
+				ReadButton.Click((elem, ev) => { eventhandler(AnalogRead, Pin); });
+			}
+		}
+	}
+
+	public delegate void EventHandlerFieldSet(UIFieldSet fieldcontain, int pin);
+	public delegate void EventHandlerFlipSwitch(UIButton button, UIFlipSwitch fieldcontain, int pin);
+	public delegate void EventHandlerDevicePropertyInfo(DeviceController.DevicePropertyInfo dpi, byte[] data);
+	public delegate void EventHandlerRange(UIRangeInput fieldcontain, int pin);
+
+	public class UIDeviceController
+	{
+		public DeviceController DeviceController;
+		public class UIDeviceInfo
+		{
+			protected CtrlUI Page;
+			public DeviceController.DeviceInfo di = null;
+			Element[] Elements;
+
+			protected void UIDeviceSet(DeviceController.DeviceInfo di, CtrlUI Page)
+			{
+				this.di = di;
+				this.Page = Page;
+				if (((WampApiKadecotDevice)di.Data).protocol == "arduino") {
+					Elements = di.SetPin(Page);
+				}
+				else {
+					Elements = di.SetEchonetlite(Page);
+				}
+			}
+
+			public jQueryObject GetPropertys()
+			{
+				return jQuery.FromElements(Elements);
+			}
+
+			public void GetData()
+			{
+				foreach (DeviceController.DevicePropertyInfo dpi in di.Properties) {
+					if (dpi.Data != null) {
+						dpi.GetValue(dpi.Data);
+					}
+				}
+			}
+
+			public bool IsWait()
+			{
+				bool flag = false;
+
+				if (di != null && di.Properties != null) {
+					foreach (DeviceController.DevicePropertyInfo dpi in di.Properties) {
+						if (dpi != null && dpi.IsWaitRes) {
+							flag = true;
+						}
+					}
+				}
+
+				return flag;
+			}
+
+			public Element[] SetEchonetlite(CtrlUI ctrlui)
+			{
+				Element[] ele = new Element[di.Properties.Count];
+				int i = 0;
+				foreach (DeviceController.DevicePropertyInfo dpi in di.Properties) {
+					dpi.SetProperty(dpi);
+					dpi.SetName(di);
+					dpi.SetKadecotGet(Page.KadecotGet);
+					dpi.SetKadecotSet(Page.KadecotSet);
+					ele[i++] = dpi.GetElement();
+				}
+				return ele;
+			}
+
+			public Element[] SetPin(CtrlUI ctrlui)
+			{
+				Page = ctrlui;
+				Element[] ele = new Element[20];
+				Element[] element;
+				int j = 0;
+				for (int i = 0; i <= 19; i++) {
+					element = SetPin(i, Page);
+					ele[j++] = element[0];
+					ele[j++] = element[1];
+				}
+				return ele;
+			}
+
+			public Element[] SetPin(int i, CtrlUI Page)
+			{
+				UIPin uiPin = new UIPin(i);
+				uiPin.SetPinModeChange(Page.pinMode_Change);
+				uiPin.SetDigitalChange(Page.digital_Change);
+				uiPin.SetReadButtonClick(Page.DigitalRead);
+				uiPin.SetAnalogWriteChange(Page.analogWrite_Change);
+				uiPin.SetAnalogReadChange(Page.analogRead);
+				return uiPin.GetElements();
+			}
+		}
+
+		public jQueryObject GetUINodeList(jQueryEventHandlerWithContextDi listitem_click)
+		{
+			UINodeList nodelist = new UINodeList(DeviceController.NodeList, listitem_click);
+
+			return nodelist.GetNodeList();
+		}
+
+		public delegate void jQueryEventHandlerWithContextDi(Element elem, jQueryEvent e, DeviceController.DeviceInfo node);
+
+		public class UIDevicePropertyInfo
+		{
+			private UIGrpBox Grpbox;
+
+			public Element GetElement()
+			{
+				return Grpbox.Object.GetElement(0);
+			}
+
+			public void SetName(DeviceController.DeviceInfo di)
+			{
+				string nameid = di.GetObjectID() + dpi.GetPropertyCode("X2");
+				Grpbox.SetName(nameid);
+			}
+
+			public string ErrorText { get { return Grpbox.ErrorText; } set { Grpbox.ErrorText = value; } }
+
+			public int GetMaxLength()
+			{
+				int len = 2 * ((dpi.PropertyInfo == null) ? dpi.Size : (((dpi.PropertyInfo.arrayCount == 0) ? 1 : dpi.PropertyInfo.arrayCount) * dpi.PropertyInfo.size));
+				return len;
+			}
+
+			public void SetProperty(DeviceController.DevicePropertyInfo dpi)
+			{
+				this.dpi = dpi;
+				Grpbox = new UIGrpBox(dpi);
+			}
+
+			public void SetKadecotGet(EventHandlerPropertyInfo KadecotGet)
+			{
+				DeviceController.DevicePropertyInfo opeSt = null;
+
+				//現在時刻設定
+				if (dpi.PropertyCode == 0x97) {
+				}
+				else if (dpi.PropertyCode == 0x98) {
+
+				}
+				else if (this.dpi.InputTypes.Count == 0) {
+
+				}
+				else if (dpi.PropertyCode == 0x80 && dpi.InputTypes.Count == 1 && dpi.InputTypes[0].Mode == PropertyInputMode.Select) {
+
+				}
+
+				else {
+					foreach (PropertyInputInfo pii in dpi.InputTypes) {
+						if (dpi.PropertyCode == 0x80)
+							opeSt = dpi;
+					}
+					if (opeSt != null)
+						KadecotGet(opeSt);
+				}
+			}
+
+			public void SetKadecotSet(EventHandlerDevicePropertyInfo KadecotSet)
+			{
+				Grpbox.KadecotSet = KadecotSet;
+			}
+
+			private DeviceController.DevicePropertyInfo dpi;
+
+			public delegate void EventHandlerPropertyInfo(DeviceController.DevicePropertyInfo dpi);
+
+			public void GetValue(byte[] data)
+			{
+				Grpbox.SetGetValue(data);
+			}
+		}
+	}
+
+	public class UINodeList
+	{
+		public UINodeList(IEnumerable<DeviceController.NodeInfo> NodeList, UIDeviceController.jQueryEventHandlerWithContextDi listitem_click)
+		{
+			info = new UIDiv();
+			string identifer = "";
+			foreach (var node in NodeList) {
+
+				var profile = node.Profile;
+
+				if (jQuery.Select("#" + "cl_node_" + identifer).Length > 0)
+					continue;
+				UICollapsibleset col = new UICollapsibleset(node.Data.ToString());
+				col.Id = "cl_node_" + identifer;
+				col.DataInset = true;
+				info.Append(col);
+				UIListview listview = new UIListview("id", "lv_node_" + identifer);
+
+				col.Append(listview);
+				foreach (var item in node.Devices) {
+
+					if (item.Profile)
+						continue;
+
+					identifer = item.GetObjectID();
+					if (jQuery.Select("#" + "li_device_" + identifer).Length > 0)
+						continue;
+					UIListviewItem listitem = new UIListviewItem();
+					listitem.Id = "li_device_" + identifer;
+					listitem.Click((ele, ev) => { listitem_click(ele, ev, item); });
+					listview.Append(listitem);
+
+
+					UIAnchor anchor = new UIAnchor();
+					anchor.Href = "#";
+					anchor.Title = ((WampApiKadecotDevice)item.Data).description;
+					anchor.Text = ((WampApiKadecotDevice)item.Data).nickname;
+					anchor.Click((ele, ev) => { listitem_Click(listitem, item); });
+
+					listitem.Append(anchor);
+				}
+			}
+		}
+
+		private UIDiv info;
+
+		public jQueryObject GetNodeList()
+		{
+			return info.Children();
+		}
+
+		/// <summary>
+		/// "#li_device_XXXXXX"をクリック
+		/// </summary>
+		/// <param name="elem"></param>
+		/// <param name="ev"></param>
+		private void listitem_Click(UIListviewItem listitem, DeviceController.DeviceInfo item)
+		{
+			//選択中クラスの追加
+			jQuery.Select(".li-select").RemoveClass("li-select");
+			listitem.AddClass("li-select");
+		}
+	}
+
+	public static class UIEventNames
+	{
+		public static string CurrentNodeChange = "currentnode.change";
+		public static string LoadingShow = "loading.show";
+		public static string LoadingHide = "loading.hide";
+		/// <summary>
+		/// 機器検索開始
+		/// </summary>
+		public static string SearchStart = "search.start";
+		/// <summary>
+		/// 機器検索終了
+		/// </summary>
+		public static string SearchEnd = "search.end";
+		/// <summary>
+		/// 機器検索エラー
+		/// </summary>
+		public static string SearchError = "search.error";
+		/// <summary>
+		/// 入力画面作成開始
+		/// </summary>
+		public static string PropertyWriteStart = "propertywrite.start";
+		/// <summary>
+		/// 入力画面作成終了
+		/// </summary>
+		public static string PropertyWriteEnd = "propertywrite.end";
+	}
+
+	public static class UIEventHandler
+	{
+		public static void LoadingShow(jQueryEvent ev)
+		{
+			jQueryMobile.Loading("show");
+		}
+
+		public static void LoadingHide(jQueryEvent ev)
+		{
+			jQueryMobile.Loading("hide");
+		}
+	}
+
+	public enum KeyPress
+	{
+		Delete = 0,
+		BackSpace = 8,
+		minus = 45,
+		dot = 46,
+		slash = 47,
+		_0 = 48,
+		_1 = 49,
+		_2 = 50,
+		_3 = 51,
+		_4 = 52,
+		_5 = 53,
+		_6 = 54,
+		_7 = 55,
+		_8 = 56,
+		_9 = 57,
+		A = 65,
+		B = 66,
+		C = 67,
+		D = 68,
+		E = 69,
+		F = 70,
+		a = 97,
+		b = 98,
+		c = 99,
+		d = 100,
+		e = 101,
+		f = 102,
+	}
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/CtrlUI.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/CtrlUI.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/CtrlUI.cs	(revision 101)
@@ -0,0 +1,1170 @@
+﻿/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ * 
+ *  上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id$
+ */
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Html;
+using System.Linq;
+using System.Net.WebSockets;
+using System.Serialization;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Web;
+using System.Xml;
+using control;
+using ctrlui;
+using jQueryApi;
+using Kadecot;
+
+public class CtrlUI
+{
+	public static CtrlUI Page;
+	public static Information Info;
+
+	public static void Main()
+	{
+		if (Page == null) {
+			Page = new CtrlUI();
+			Info = new Information();
+		}
+
+		jQuery.Document.On("pageinit", "#index", Page.InitClassGroups);
+	}
+
+	private static Element page;
+	private Dictionary<DeviceController.DeviceInfo, DeviceController.DeviceInfo> Read = new Dictionary<DeviceController.DeviceInfo, DeviceController.DeviceInfo>();
+
+	public static Element GetPage(Element ele)
+	{
+		var page = ele;
+		if (jQuery.Select(page).Is("[data-role=\"page\"]")) {
+			return page;
+		}
+		if (jQuery.Select(page).Parents("[data-role=\"page\"]").Length == 1) {
+			return jQuery.Select(page).Parents("[data-role=\"page\"]").GetElement(0);
+		}
+		return null;
+	}
+
+	/// <summary>クラスグループ（ClassGroupList.json）</summary>
+	static JsonClassGroupInfo[] m_ClassGroups;
+
+	/// <summary>クラス</summary>
+	static JsonClassInfo m_ProfileClassInfo;
+	static List<JsonClassInfo> m_Classes;
+
+	WampClient m_WampClient;
+	/// <summary>現在接続中の機器</summary>
+	DeviceController m_DeviceController;
+
+	private DeviceController.DeviceInfo _m_CurrentNode;
+
+	/// <summary>現在選択中のノード</summary>
+	DeviceController.DeviceInfo m_CurrentNode
+	{
+		get		{			return _m_CurrentNode;		}
+		set
+		{
+			bool flag = (_m_CurrentNode != value) || (_m_CurrentNode == null && value == null);
+			_m_CurrentNode = value;
+
+			if (flag)
+				jQuery.Document.Trigger(UIEventNames.CurrentNodeChange);
+		}
+	}
+
+	/// <summary>
+	/// コンストラクタ
+	/// </summary>
+	public CtrlUI()
+	{
+		m_WampClient = new WampClient();
+		m_WampClient.addOpenCallback(WampClientConnected);
+		m_WampClient.addCloseCallback(WampClientDisconnected);
+		m_WampClient.connect("ws://" + Window.Location.Host + "/webapi.ashx");
+	}
+
+	/// <summary>
+	/// #indexページ読み込み時に実行
+	/// </summary>
+	/// <param name="ele"></param>
+	/// <param name="ev"></param>
+	private void InitClassGroups(jQueryEvent eve)
+	{
+		page = eve.Target;
+		SetEvent();
+
+		if (m_ClassGroups != null)
+			return;
+
+		DeviceController.GetClassInfo = GetClassInfoHandler;
+		m_CurrentNode = null;
+		string ClassGroupListUrl = "devices/ClassGroupList.json";
+		jQuery.Ajax(ClassGroupListUrl).Success(InitClassGroups).Error(
+			(request, textStatus, error) => {
+				AjaxError(request, textStatus, error, ClassGroupListUrl);
+			});
+	}
+
+	private void SetEvent()
+	{
+		jQuery.Document.On(UIEventNames.LoadingShow, UIEventHandler.LoadingShow);
+		jQuery.Document.On(UIEventNames.LoadingHide, UIEventHandler.LoadingHide);
+		jQuery.Document.On(UIEventNames.CurrentNodeChange, this.CurrentNodeChange);
+		jQuery.Document.On(UIEventNames.SearchStart, this.SearchStart);
+		jQuery.Document.On(UIEventNames.SearchEnd, this.SearchEnd);
+		jQuery.Document.On(UIEventNames.SearchError, this.SearchError);
+		jQuery.Document.On(UIEventNames.PropertyWriteStart, this.PropertyWriteStart);
+		jQuery.Document.On(UIEventNames.PropertyWriteEnd, this.PropertyWriteEnd);
+		ConnectionSwt.Change(Connect);
+		SetPropertyBtn.Click(SetProperty);
+		GetPropertyBtn.Click(GetProperty);
+		SetGetPropertyBtn.Click(SetGetProperty);
+		KadecotBtn.Click(KadecotClick);
+		PropertyList.Change(PropertyChange);
+		SetInitParamsBtn.Click(SetInitParams);
+	}
+
+	/// <summary>
+	/// "devices/ClassGroupList.json"ファイルの読み込みに成功したとき実行します
+	/// </summary>
+	/// <param name="data">ファイルのデータ</param>
+	private void InitClassGroups(object data)
+	{
+		List<JsonClassGroupInfo> classGroups = data.ToJSClassGroupInfoList();
+		//初期化
+		m_Classes = new List<JsonClassInfo>();
+		m_ClassGroups = classGroups.ToArray();
+		GetClassInfoHandler(T_ECN_EOJ.X1_PROFILE, T_ECN_EOJ.X2_NODE_PROFILE, GetClassInfoCallback);
+	}
+
+	/// <summary>
+	/// コールバック関数
+	/// </summary>
+	/// <param name="di"></param>
+	private void GetClassInfoCallback(JsonClassInfo di)
+	{
+		m_ProfileClassInfo = di;
+	}
+
+	/// <summary>
+	/// devices/ClassListxx.jsonファイルの読み込み
+	/// </summary>
+	/// <param name="x1">クラスグループコード</param>
+	/// <param name="x2">クラスコード</param>
+	/// <param name="cb">コールバック関数</param>
+	private void GetClassInfoHandler(byte x1, byte x2, DeviceController.GetClassInfoCallback cb)
+	{
+		JsonClassInfo eclass = m_Classes.FirstOrDefault(p => (p.classGroup.classGroupCode == x1) && (p.classCode == x2));
+
+		//すでにjsonファイルが読み込まれているので、ファイルを読み込まない。
+		if (eclass != null) {
+			if (eclass.properties == null)
+				GetPropertyList(eclass, cb);
+			else
+				cb(eclass);
+			return;
+		}
+		//eclass==nullの場合
+		JsonClassGroupInfo classGroup = m_ClassGroups.FirstOrDefault(p => (p.classGroupCode == x1));
+
+		string classListUrl = "devices/ClassList" + x1.ToString("X2").ToUpper() + ".json";
+
+		jQuery.Ajax(classListUrl).Success((data) => {
+			Debug.WriteLine(classListUrl + "読み込み成功");
+			GetClassInfoSuccess(data, x1, x2, classGroup, cb);
+		}).Error((request, textStatus, error) => {
+			Debug.WriteLine(classListUrl + "読み込み失敗");
+			GetClassInfoError(request, textStatus, error, eclass, cb, classListUrl);
+		});
+	}
+
+	/// <summary>
+	/// devices/ClassListxx.jsonファイルの取得に成功した時実行します。
+	/// </summary>
+	/// <param name="data"></param>
+	private void GetClassInfoSuccess(object data, byte x1, byte x2, JsonClassGroupInfo classGroup, DeviceController.GetClassInfoCallback cb)
+	{
+		List<JsonClassInfo> classes = data.ToJSClassInfoList(classGroup);
+		m_Classes.AddRange(classes);
+		JsonClassInfo eclass = m_Classes.FirstOrDefault(p => (p.classGroup.classGroupCode == x1) && (p.classCode == x2));
+		GetPropertyList(eclass, cb);
+	}
+
+	/// <summary>
+	/// devices/PropertyListxxxx.jsonファイルの取得
+	/// </summary>
+	/// <param name="data"></param>
+	private void GetPropertyList(JsonClassInfo eclass, DeviceController.GetClassInfoCallback cb)
+	{
+		string PropertyListUrl = "devices/PropertyList" + eclass.classGroup.classGroupCode.ToString("X2").ToUpper() + eclass.classCode.ToString("X2").ToUpper() + ".json";
+		Debug.WriteLine(PropertyListUrl + "読み込み");
+
+		jQuery.Ajax(PropertyListUrl).Success((data1) => {
+			Debug.WriteLine(PropertyListUrl + "読み込み成功");
+			GetPropertyListSuccess(data1, eclass);
+		}).Error((request, textStatus, error) => {
+			Debug.WriteLine(PropertyListUrl + "読み込み失敗");
+			PropertyListAjaxError(request, textStatus, error, eclass, cb, PropertyListUrl);
+		}).Complete((request, textStatus) => {
+			GetPropertyListComplete(request, textStatus, eclass, cb);
+		});
+	}
+
+	/// <summary>
+	/// devices/PropertyListxxxx.jsonファイルの取得に成功
+	/// </summary>
+	/// <param name="data"></param>
+	private void GetPropertyListSuccess(object data, JsonClassInfo eclass)
+	{
+		List<JsonPropertyInfo> properties = data.ToJSPropertyInfoList();
+		eclass.properties = properties.ToArray();
+	}
+
+	/// <summary>
+	/// devices/PropertyListxxxx.jsonファイルの取得後の処理
+	/// </summary>
+	/// <param name="request"></param>
+	/// <param name="textStatus"></param>
+	private void GetPropertyListComplete(jQueryXmlHttpRequest request, string textStatus, JsonClassInfo eclass, DeviceController.GetClassInfoCallback cb)
+	{
+		if (request.StatusText.Equals("OK")) {
+			cb(eclass);
+		}
+	}
+
+	/// <summary>
+	/// devices/ClassListxx.jsonファイルがなかった場合
+	/// </summary>
+	/// <param name="request"></param>
+	/// <param name="textStatus"></param>
+	/// <param name="error"></param>
+	private void GetClassInfoError(jQueryXmlHttpRequest request, string textStatus, Exception error,
+		JsonClassInfo eclass, DeviceController.GetClassInfoCallback cb, string url)
+	{
+		AjaxError(request, textStatus, error, url);
+		cb(eclass);
+	}
+
+	/// <summary>
+	/// PropertyListxxxx.jsonファイル読み込みエラー
+	/// </summary>
+	/// <param name="request"></param>
+	/// <param name="textStatus"></param>
+	/// <param name="error"></param>
+	private void PropertyListAjaxError(jQueryXmlHttpRequest request, string textStatus, dynamic error, JsonClassInfo eclass, DeviceController.GetClassInfoCallback cb, string url)
+	{
+		string PropertyListBaseUrl = "devices/PropertyListBase.json";
+		jQuery.Ajax(PropertyListBaseUrl).Success((data1) => {
+			Debug.WriteLine(PropertyListBaseUrl + "読み込み成功");
+			GetPropertyListSuccess(data1, eclass);
+		}).Error((request1, textStatus1, error1) => {
+			Debug.WriteLine(PropertyListBaseUrl + "読み込み失敗");
+			AjaxError(request1, textStatus1, error1, url);
+		}).Complete((request1, textStatus1) => {
+			GetPropertyListComplete(request1, textStatus1, eclass, cb);
+		});
+	}
+
+	/// <summary>
+	/// 
+	/// </summary>
+	private void sendHello()
+	{
+		m_WampClient.sendHello("default", "{\"roles\":{\"caller\":{},\"subscriber\":{}}}", OnWelcom);
+	}
+
+	private void OnWelcom(object args)
+	{
+		m_WampClient.sendSubscribe("{}", "com.sonycsl.kadecot.echonetlite.topic.GeneralLighting.OperationStatus", OnSubscribed, OnSubscribed);
+	}
+
+	private void OnSubscribed(object args)
+	{
+	}
+
+	/// <summary>
+	/// 機器検索ボタンを押下したとき実行
+	/// </summary>
+	/// <param name="args"></param>
+	private void OnDevListed(object args)
+	{
+		int cmd = (int)((dynamic[])args)[0];
+		if (cmd != (int)WAMP_MSG_TYPE.RESULT) {
+			jQuery.Document.Trigger(UIEventNames.SearchError);
+			return;
+		}
+
+		//初期化
+		List<WampApiKadecotDevice> alldevs = args.GetAllDevices();
+		GetDeviceInfo(alldevs, 0, new List<DeviceController.NodeInfo>());
+	}
+
+	/// <summary>
+	/// 接続されている機器の設定値を取得
+	/// </summary>
+	/// <param name="alldevs"></param>
+	/// <param name="pos"></param>
+	private void GetDeviceInfo(List<WampApiKadecotDevice> alldevs, int pos, List<DeviceController.NodeInfo> m_NodeList)
+	{
+		WampApiKadecotDevice device = alldevs[pos];
+
+		WampClientCore.WampCallbackArgs callback = (args) => {
+			int cmd = (int)((dynamic[])args)[0];
+			if (cmd != (int)WAMP_MSG_TYPE.RESULT) {
+				jQuery.Document.Trigger(UIEventNames.SearchError);
+				return;
+			}
+
+			WebApiObjectInfo dev = new WebApiObjectInfo(device.deviceId, ((dynamic[])args)[4], false);
+
+			GetClassInfoHandler(dev.x1, dev.x2, (dc) => {
+				DeviceController.DeviceInfo di = dc.GetDeviceInfo(dev, device);
+				DeviceController.NodeInfo node = m_NodeList.FirstOrDefault((ni) => { return (string)ni.Data == device.ip_addr; });
+				if (node == null) {
+					var profile = new DeviceController.DeviceInfo(m_ProfileClassInfo, true, T_ECN_EOJ.X1_PROFILE, T_ECN_EOJ.X2_NODE_PROFILE, 1, dev.enodid);
+					node = new DeviceController.NodeInfo((ENOD_ID)dev.enodid, profile);
+					node.Data = device.ip_addr;
+					m_NodeList.Add(node);
+				}
+				node.Devices.Add(di);
+
+				pos++;
+				if (pos < alldevs.Count) {
+					GetDeviceInfo(alldevs, pos, m_NodeList);
+				}
+				else {
+					jQuery.Document.Trigger(UIEventNames.SearchEnd);
+					m_DeviceController = new DeviceController(m_NodeList);
+					UpdateUI();
+				}
+			});
+		};
+
+		if (device.protocol == "arduino") {
+			var arg = new
+			{
+				x1 = 0x0E,
+				x2 = 0xF0,
+				x3 = 0x01,
+				enodid = 0x01,
+				properties = new[] {
+					new{epc = 0x00, flag = "RULE_SET,RULE_GET", size = 0x01},
+					new{epc = 0x01, flag = "RULE_SET,RULE_GET", size = 0x01},
+					new{epc = 0x02, flag = "RULE_SET,RULE_GET", size = 0x01},
+					new{epc = 0x03, flag = "RULE_SET,RULE_GET", size = 0x01},
+					new{epc = 0x04, flag = "RULE_SET,RULE_GET", size = 0x01},
+					new{epc = 0x05, flag = "RULE_SET,RULE_GET", size = 0x01},
+					new{epc = 0x06, flag = "RULE_SET,RULE_GET", size = 0x01},
+					new{epc = 0x07, flag = "RULE_SET,RULE_GET", size = 0x01},
+					new{epc = 0x08, flag = "RULE_SET,RULE_GET", size = 0x01},
+					new{epc = 0x09, flag = "RULE_SET,RULE_GET", size = 0x01},
+					new{epc = 0x0A, flag = "RULE_SET,RULE_GET", size = 0x01},
+					new{epc = 0x0B, flag = "RULE_SET,RULE_GET", size = 0x01},
+					new{epc = 0x0C, flag = "RULE_SET,RULE_GET", size = 0x01},
+					new{epc = 0x0D, flag = "RULE_SET,RULE_GET", size = 0x01},
+					new{epc = 0x0E, flag = "RULE_GET", size = 0x01},
+					new{epc = 0x0F, flag = "RULE_GET", size = 0x01},
+					new{epc = 0x10, flag = "RULE_GET", size = 0x01},
+					new{epc = 0x11, flag = "RULE_GET", size = 0x01},
+					new{epc = 0x12, flag = "RULE_GET", size = 0x01},
+					new{epc = 0x13, flag = "RULE_GET", size = 0x01},
+				}
+			};
+			callback(new object[] { 50, 0, new { deviceId = 1 }, new object[0], arg });
+		}
+		else {
+			m_WampClient.sendCall("{\"deviceId\":" + device.deviceId + "}", "jp.toppers.ecnl.procedure.getDeviceInfo", null, null, callback);
+		}
+	}
+
+	/// <summary>
+	/// ノードリストを更新
+	/// </summary>
+	private void UpdateUI()
+	{
+		if (NodeList == null)
+			return;
+		NodeList.Html("");
+		NodeList.Append(m_DeviceController.GetUINodeList(listitem_Click));
+		NodeList.CollapsibleSet().CollapsibleSet("refresh");
+		jQuery.Select("ul[data-role='listview']", NodeList).ListView().ListView("refresh");
+	}
+
+	/// <summary>
+	///　コールバック関数
+	/// </summary>
+	/// <param name="args"></param>
+	private void OnResponse(object args)
+	{
+		int switchData = (int)((dynamic[])args)[0];
+		if (switchData != (int)WAMP_MSG_TYPE.RESULT) {
+			return;
+		}
+
+		dynamic doc = ((dynamic[])args)[4];
+		if (m_DeviceController != null) {
+			m_DeviceController.RecvResponse(new WebApiEchonetMessage(doc));
+			if (PropertyList == null)
+				return;
+
+			m_CurrentNode.GetData();
+		}
+		SetPropertyBtn.Disable(true);
+	}
+
+	private void OnSetResponse(object args)
+	{
+		dynamic doc = ((dynamic[])args)[4];
+		if (m_DeviceController != null) {
+			if (PropertyList == null)
+				return;
+			m_DeviceController.RecvResponse(new WebApiEchonetMessage(doc));
+		}
+		SetPropertyBtn.Disable(true);
+	}
+
+	/// <summary>
+	/// #li_device_XXXXXXをクリックしたとき
+	/// </summary>
+	/// <param name="elem"></param>
+	/// <param name="ev"></param>
+	private void listitem_Click(Element elem, jQueryEvent ev, DeviceController.DeviceInfo di)
+	{
+		if (PropertyList == null)
+			return;
+		m_CurrentNode = di;
+	}
+
+	/// <summary>
+	/// webapiと接続された時、機器検索のアイコンを切り替える
+	/// </summary>
+	private void WampClientConnected()
+	{
+		//接続スイッチがOFFの時、スイッチを切り替える
+		bool flag = ConnectionSwt.Prop("checked");
+		if (!flag) {
+			ConnectionSwt.Prop("checked", true).FlipSwitch("refresh");
+		}
+		SearchBtn.ToggleClass("ui-icon-alert", "ui-icon-refresh");
+		sendHello();
+	}
+
+	/// <summary>
+	/// webapiと切断されたとき、機器検索のアイコンを切り替える
+	/// </summary>
+	private void WampClientDisconnected()
+	{
+		SearchBtn.ToggleClass("ui-icon-refresh", "ui-icon-alert");
+	}
+
+	/// <summary>
+	/// 接続スイッチを変更
+	/// </summary>
+	/// <param name="ele"></param>
+	public void Connect(Element ele, jQueryEvent eve)
+	{
+		bool connect = jQuery.Select(ele).Prop("checked");
+
+		//接続スイッチがOn && m_WampClient.isConnecting() == false
+		if (connect && !m_WampClient.isConnecting()) {
+			Debug.WriteLine("m_WampClient.isConnecting():" + m_WampClient.isConnecting().ToString());
+			m_WampClient.connect("ws://" + Window.Location.Host + "/webapi.ashx");
+		}
+		//接続スイッチがOff && m_WampClient.isConnecting() ==true
+		else if (!connect && m_WampClient.isConnecting()) {
+			m_WampClient.disconnect();
+			//  m_WampClient.sendGoodbye("{}", "wamp.error.system_shutdown",Disconnect);
+		}
+	}
+
+	/// <summary>
+	/// 切断
+	/// </summary>
+	/// <param name="args"></param>
+	public void Disconnect(object args)
+	{
+		m_WampClient.disconnect();
+	}
+
+	int TimerId = 0;
+
+	/// <summary>
+	/// 機器検索ボタンを押下
+	/// </summary>
+	/// <param name="ele"></param>
+	public void Search(Element ele, jQueryEvent ev)
+	{
+		jQuery.Document.Trigger(UIEventNames.SearchStart);
+		string data = m_WampClient.sendCall("{}", "com.sonycsl.kadecot.provider.procedure.getDeviceList",
+			null, null, OnDevListed);
+		if (data == null) {
+			jQuery.Document.Trigger(UIEventNames.SearchError);
+			return;
+		}
+		this.TimerId = Window.SetInterval(() => {
+			jQuery.Document.Trigger(UIEventNames.SearchError);
+		}, 20000);
+	}
+
+	public void SearchStart(jQueryEvent ev)
+	{
+		jQueryMobile.Loading("show", new LoadingOption("機器検索中...", true));
+		SearchBtn.Disable(true);
+		Debug.WriteLine("機器検索開始");
+	}
+
+	/// <summary>
+	/// 機器が見つかった時実行
+	/// </summary>
+	/// <param name="ev"></param>
+	public void SearchEnd(jQueryEvent ev)
+	{
+		if (this.TimerId != 0) {
+			Window.ClearInterval(this.TimerId);
+			this.TimerId = 0;
+		}
+
+		jQueryMobile.Loading("hide");
+		SearchBtn.Disable(false);
+		NodeList.Find("li .ui-icon-alert").ToggleClass("ui-icon-alert", "ui-icon-carat-r");
+
+		Debug.WriteLine("機器検索終了");
+	}
+
+	/// <summary>
+	/// 機器が見つからなかったとき実行
+	/// </summary>
+	/// <param name="ev"></param>
+	public void SearchError(jQueryEvent ev)
+	{
+		if (this.TimerId != 0) {
+			Window.ClearInterval(this.TimerId);
+			this.TimerId = 0;
+		}
+
+		jQueryMobile.Loading("hide");
+		jQuery.Select("#bt_search").RemoveAttr("disabled");
+		Debug.WriteLine("機器検索エラー");
+		Window.Alert("機器が見つかりませんでした");
+		NodeList.Find("li .ui-icon-carat-r").ToggleClass("ui-icon-carat-r", "ui-icon-alert");
+	}
+
+	public void PropertyWriteStart(jQueryEvent ev)
+	{
+		jQueryMobile.Loading("show");
+	}
+
+	public void PropertyWriteEnd(jQueryEvent ev)
+	{
+		//PropertyList.Find("li").Find(".ui-field-contain").Children(".ui-input-text").Each((i, ele) => {
+		//	if (jQuery.Select(ele).Children(".ui-input-text").Length > 0) {
+		//		jQuery.Select(ele).Children("a").Remove();
+		//		jQuery.Select(ele).Children(".ui-input-text").Unwrap();
+		//	}
+		//});
+		jQueryMobile.Loading("hide");
+	}
+
+	/// <summary>
+	/// 設定ボタンを押下
+	/// </summary>
+	/// <param name="ele"></param>
+	public void SetProperty(Element ele, jQueryEvent eve)
+	{
+		WebApiSet esv = new WebApiSet();
+		jQueryObject ctrls = PropertyList;
+
+		esv.deojid = (ENOD_ID)m_CurrentNode.EObjId;
+		bool enable = false;
+
+		foreach (var dpi in m_CurrentNode.Properties) {
+			if (dpi.InputData == null) {
+				continue;
+			}
+			else if (dpi.IsWaitRes) {
+				esv.AddEdt(dpi.PropertyCode, dpi.InputData);
+				enable = true;
+			}
+		}
+
+		if (!enable) {
+			return;
+		}
+		string call = m_WampClient.sendCall(esv.GetOption(), "jp.toppers.ecnl.procedure.set", "[]", esv.GetArguments(),
+			   OnSetResponse);
+		if (call == null) {
+			Window.Alert("機器が接続されていません");
+		}
+	}
+
+	/// <summary>
+	/// 取得ボタンを押下
+	/// </summary>
+	/// <param name="ele"></param>
+	public void GetProperty(jQueryEvent eve)
+	{
+		string protocol = ((WampApiKadecotDevice)m_CurrentNode.Data).protocol;
+		if (protocol == "arduino") {
+			return;
+		}
+
+		WebApiGet esv = new WebApiGet();
+		//現在選択中のノードからEObjIDを取得
+		esv.deojid = (ENOD_ID)m_CurrentNode.EObjId;
+
+		//取得フラグ
+		bool enable = false;
+
+		foreach (var dpi in m_CurrentNode.Properties) {
+
+			if (dpi == null) {
+				continue;
+			}
+			dpi.IsWaitRes = false;
+
+			bool target = (dpi.Flag & EPC_FLAG.RULE_GET) != 0;
+
+			//読み込み禁止の場合
+			if (!target) {
+				dpi.ErrorText = "読み込み禁止です";
+				continue;
+			}
+			dpi.IsWaitRes = true;
+			esv.AddEpc(dpi.PropertyCode);
+			//読み込み可なのでtrue
+			enable = true;
+		}
+
+		if (!enable)
+			return;
+
+		string call = m_WampClient.sendCall(esv.GetOption(), "jp.toppers.ecnl.procedure.get", "[]", esv.GetArguments(),
+			   OnResponse);
+		if (call == null) {
+			m_CurrentNode.GetDeviceBtn().ToggleClass("ui-icon-carat-r", "ui-icon-alert");
+		}
+		else {
+			m_CurrentNode.GetDeviceBtn().ToggleClass("ui-icon-alert", "ui-icon-carat-r");
+		}
+	}
+
+	/// <summary>
+	/// 設定と取得ボタンを押下
+	/// </summary>
+	/// <param name="ele"></param>
+	public void SetGetProperty(Element ele, jQueryEvent ev)
+	{
+		WebApiSet esv = new WebApiSet();
+
+		esv.deojid = (ENOD_ID)m_CurrentNode.EObjId;
+		bool enable = false;
+
+		foreach (var dpi in m_CurrentNode.Properties) {
+			if (dpi.InputData == null) {
+				continue;
+			}
+			else if (dpi.IsWaitRes) {
+				esv.AddEdt(dpi.PropertyCode, dpi.InputData);
+				enable = true;
+			}
+		}
+		if (!enable) {
+			return;
+		}
+		string call = m_WampClient.sendCall(esv.GetOption(), "jp.toppers.ecnl.procedure.setget", "[]", esv.GetArguments(),
+			   OnResponse);
+		if (call == null) {
+			Window.Alert("機器が接続されていません");
+		}
+	}
+
+	/// <summary>
+	/// プロパティの値が変わった時
+	/// </summary>
+	/// <param name="ele"></param>
+	/// <param name="ev"></param>
+	public void PropertyChange(Element ele, jQueryEvent ev)
+	{
+		bool flag = m_CurrentNode.IsWait();
+		SetPropertyBtn.Disable(!flag);
+		SetGetPropertyBtn.Disable(!flag);
+	}
+
+	/// <summary>
+	/// Kadecotボタンをクリックした時に実行します
+	/// </summary>
+	/// <param name="ele"></param>
+	/// <param name="ev"></param>
+	public void KadecotClick(Element ele, jQueryEvent ev)
+	{
+		Window.Open("http://app.kadecot.net/index.html?kip=" + Window.Location.Hostname, "Kadecot");
+	}
+
+	DeviceController.DevicePropertyInfo dpi;
+
+	/// <summary>
+	/// 書き込み
+	/// </summary>
+	/// <param name="dpi"></param>
+	/// <param name="data"></param>
+	public void KadecotSet(DeviceController.DevicePropertyInfo dpi, byte[] data)
+	{
+		string propName;
+		if (dpi.PropertyCode == 0x80) {
+			propName = "OperationStatus";
+		}
+		else {
+			propName = "0x" + dpi.PropertyCode.ToString(16);
+		}
+
+		var di = m_CurrentNode;
+		if (di == null)
+			return;
+
+		this.dpi = dpi;
+		WampApiKadecotSet msg = new WampApiKadecotSet(di.EObjId, propName, data);
+
+		m_WampClient.sendCall(msg.GetOption(), "com.sonycsl.kadecot.echonetlite.procedure.set", "[]", msg.GetArguments(), KadecotSet);
+	}
+
+	/// <summary>
+	/// 書き込み
+	/// </summary>
+	/// <param name="args"></param>
+	private void KadecotSet(object args)
+	{
+		var di = m_CurrentNode;
+		dynamic doc = ((dynamic[])args)[4];
+
+		var res = new WampApiKadecotRes(doc);
+
+		if (m_DeviceController != null) {
+			m_DeviceController.RecvResponse(di, /*ESV_SET_RES*/0x71, this.dpi.PropertyCode, res.propertyValue);
+		}
+	}
+
+	public void KadecotGet(DeviceController.DevicePropertyInfo dpi)
+	{
+		string propName;
+		if (dpi.PropertyCode == 0x80) {
+			propName = "OperationStatus";
+		}
+		else {
+			propName = "0x" + dpi.PropertyCode.ToString(16);
+		}
+
+		var di = m_CurrentNode;
+		if (di == null)
+			return;
+
+		WampApiKadecotGet msg = new WampApiKadecotGet(di.EObjId, propName);
+		this.dpi = dpi;
+		m_WampClient.sendCall(msg.GetOption(), "com.sonycsl.kadecot.echonetlite.procedure.get", "[]", msg.GetArguments(), KadecotGet);
+	}
+
+	public void KadecotGet(object args)
+	{
+		var di = m_CurrentNode;
+		dynamic doc = ((dynamic[])args)[4];
+
+		var res = new WampApiKadecotRes(doc);
+
+		if (m_DeviceController != null) {
+			m_DeviceController.RecvResponse(di, /*ESV_GET_RES*/0x72, dpi.PropertyCode, res.propertyValue);
+		}
+	}
+
+	/// <summary>
+	/// 通信エラー発生時処理
+	/// </summary>
+	/// <param name="request"></param>
+	/// <param name="textStatus"></param>
+	/// <param name="error"></param>
+	private static void AjaxError(jQueryXmlHttpRequest request, string textStatus, dynamic error, string url)
+	{
+		var sep = new Regex("(\r\n|\r|\n)");
+		var lines = new List<string>();
+
+		lines.Add(textStatus);
+		if (error is string) {
+			lines.Add((string)error);
+		}
+		else {
+			lines.Add(error.message);
+
+			string stack = error.stack;
+			lines.AddRange(stack.Split(sep));
+		}
+
+		var html = jQuery.FromHtml("<p>");
+		foreach (var line in lines) {
+			if (sep.Exec(line) != null)
+				continue;
+			html.Append(Document.CreateTextNode(line).WholeText);
+			html.Append(jQuery.FromHtml("<br/>"));
+		}
+		html.Append(url + "の読み込みに失敗しました");
+		jQuery.Select("#popup_dialog_caption").Text("通信エラー");
+		jQuery.Select("#popup_dialog_title").Text("通信エラーが発生しました");
+		jQuery.Select("#popup_dialog_text").Html(html);
+		jQuery.Select("#popup_dialog").Popup("open", new { transition = "slidedown" });
+	}
+
+	/// <summary>
+	/// 設定・取得ボタンの有効・無効設定
+	/// </summary>
+	private void CurrentNodeChange(Element elem, jQueryEvent ev)
+	{
+		ButtonDisabled(m_CurrentNode);
+
+		if (m_CurrentNode == null) {
+			return;
+		}
+		PropertyCreate(m_CurrentNode);
+		GetProperty(ev);
+		return;
+	}
+
+	/// <summary>
+	/// 設定・取得ボタンを設定します
+	/// </summary>
+	/// <param name="di"></param>
+	private void ButtonDisabled(DeviceController.DeviceInfo di)
+	{
+		if (di == null) {
+			SetGetPropertyBtn.Disable(true);
+			GetPropertyBtn.Disable(true);
+			SetPropertyBtn.Disable(true);
+			return;
+		}
+
+		var ctrls = PropertyList;
+
+		SetGetPropertyBtn.Disable(ctrls == null);
+		GetPropertyBtn.Disable(ctrls == null);
+		SetPropertyBtn.Disable(ctrls == null);
+	}
+
+	/// <summary>
+	/// 入力画面を作成
+	/// </summary>
+	/// <param name="di"></param>
+	private void PropertyCreate(DeviceController.DeviceInfo di)
+	{
+		if (di == null) {
+			return;
+		}
+		jQuery.Document.Trigger(UIEventNames.PropertyWriteStart);
+		di.SetUIDevice(this);
+
+		PropertyList.Html("");
+		PropertyList.Append(di.GetPropertys());
+		PropertyList.ListView().ListView("refresh");
+		PropertyList.ListView().Trigger("create");
+
+		jQuery.Document.Trigger(UIEventNames.PropertyWriteEnd);
+	}
+
+	/// <summary>
+	/// 初期値設定ボタン
+	/// </summary>
+	/// <param name="elem"></param>
+	/// <param name="e"></param>
+	private void SetInitParams(Element elem, jQueryEvent e)
+	{
+		var macaddrfrm = new Regex("([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2})");
+
+		var m = macaddrfrm.Exec(MacAddrTxt.GetValue());
+		if (m == null)
+			return;
+
+		var ma1 = Byte.Parse(m[1], 16);
+		var ma2 = Byte.Parse(m[2], 16);
+		var ma3 = Byte.Parse(m[3], 16);
+		var ma4 = Byte.Parse(m[4], 16);
+		var ma5 = Byte.Parse(m[5], 16);
+		var ma6 = Byte.Parse(m[6], 16);
+
+		m_WampClient.sendCall("{}", "jp.toppers.ecnl.procedure.setInitParams", "[]",
+			"{\"macAddr\":[" + ma1 + "," + ma2 + "," + ma3 + "," + ma4 + "," + ma5 + "," + ma6 + "]}", SetInitParamsRes);
+	}
+
+	public void SetInitParamsRes(object args)
+	{
+		int cmd = (int)((dynamic[])args)[0];
+		if (cmd != (int)WAMP_MSG_TYPE.RESULT) {
+			jQuery.Select("#popup_dialog_caption").Text("エラー");
+			jQuery.Select("#popup_dialog_title").Text("エラーが発生しました");
+			jQuery.Select("#popup_dialog_text").Text("初期データの書き込みに失敗しました。");
+			jQuery.Select("#popup_dialog").Popup("open", new { transition = "slidedown" });
+			return;
+		}
+
+		jQuery.Select("#popup_dialog_caption").Text("初期データ");
+		jQuery.Select("#popup_dialog_title").Text("初期データを書き込みました");
+		jQuery.Select("#popup_dialog_text").Text("初期データの書き込みに成功しました。");
+		jQuery.Select("#popup_dialog").Popup("open", new { transition = "slidedown" });
+	}
+
+	/// <summary>
+	/// 初期値設定ボタン
+	/// </summary>
+	/// <param name="elem"></param>
+	/// <param name="e"></param>
+	private void GetInitParams(Element elem, jQueryEvent e)
+	{
+		m_WampClient.sendCall("{}", "jp.toppers.ecnl.procedure.getInitParams", "[]", "{}", GetInitParamsRes);
+	}
+
+	public void GetInitParamsRes(object args)
+	{
+		int cmd = (int)((dynamic[])args)[0];
+		if (cmd != (int)WAMP_MSG_TYPE.RESULT) {
+			jQuery.Select("#popup_dialog_caption").Text("エラー");
+			jQuery.Select("#popup_dialog_title").Text("エラーが発生しました");
+			jQuery.Select("#popup_dialog_text").Text("初期データの読み込みに失敗しました。");
+			jQuery.Select("#popup_dialog").Popup("open", new { transition = "slidedown" });
+			return;
+		}
+
+		var macaddr = (byte[])(((dynamic[])args)[4].macAddr);
+		MacAddrTxt.Value(String.Format("{0:X02}:{1:X02}:{2:X02}:{3:X02}:{4:X02}:{5:X02}",
+			macaddr[0], macaddr[1], macaddr[2], macaddr[3], macaddr[4], macaddr[5]));
+	}
+
+	/// <summary>設定ボタン</summary>
+	public jQueryObject SetPropertyBtn { get { return jQuery.Select("#bt_set_property", page); } }
+
+	/// <summary>取得ボタン</summary>
+	public jQueryObject GetPropertyBtn { get { return jQuery.Select("#bt_get_property", page); } }
+
+	/// <summary>設定と取得ボタン</summary>
+	public jQueryObject SetGetPropertyBtn { get { return jQuery.Select("#bt_set_get_property", page); } }
+
+	/// <summary>Kadecotボタン</summary>
+	public jQueryObject KadecotBtn { get { return jQuery.Select("#bt_kadecot", page); } }
+
+	/// <summary>接続スイッチ</summary>
+	public jQueryObject ConnectionSwt { get { return jQuery.Select("#fs_connection", page); } }
+
+	/// <summary>プロパティリスト</summary>
+	public jQueryObject PropertyList { get { return jQuery.Select("#lv_property_list", page); } }
+
+	/// <summary>機器検索ボタン</summary>
+	public jQueryObject SearchBtn { get { return jQuery.Select("#bt_search", page); } }
+
+	/// <summary>ノードリスト</summary>
+	public jQueryObject NodeList { get { return jQuery.Select("#node_list", page); } }
+
+	/// <summary>groupBox</summary>
+	public jQueryObject PropertyGroupBox { get { return jQuery.Select("#lv_property_list", page).Find("li"); } }
+
+	/// <summary>初期値設定ボタン</summary>
+	public jQueryObject SetInitParamsBtn { get { return jQuery.Select("#bt_set_init_params", page); } }
+
+	/// <summary>初期値取得ボタン</summary>
+	public jQueryObject GetInitParamsBtn { get { return jQuery.Select("#bt_get_init_params", page); } }
+
+	/// <summary>MACアドレス入力</summary>
+	public jQueryObject MacAddrTxt { get { return jQuery.Select("#txt_mac_addr", page); } }
+
+	public void pinMode_Change(UIFieldSet fieldset, int pin)
+	{
+		string value = fieldset.CheckdValue();
+		JsDictionary dic = new JsDictionary("pin", pin, "mode", value);
+		m_WampClient.sendCall("{\"deviceId\":" + 1 + "}", "com.sonycsl.kadecot.arduino.pinMode", "[]", Json.Stringify(dic), pinMode);
+	}
+
+	public void digital_Change(UIButton button, UIFlipSwitch flipswitch, int pin)
+	{
+		WampApiKadecotSet msg = new WampApiKadecotSet(1, "2", new byte[2]);
+		JsDictionary dic = new JsDictionary("pin", pin, "value", flipswitch.Value);
+		m_WampClient.sendCall("{\"deviceId\":" + 1 + "}", "com.sonycsl.kadecot.arduino.digitalWrite", "[]", Json.Stringify(dic), digitalWrite);
+	}
+
+	public void analogWrite_Change(UIRangeInput range, int pin)
+	{
+		WampApiKadecotSet msg = new WampApiKadecotSet(1, "2", new byte[2]);
+		JsDictionary dic = new JsDictionary("pin", pin, "value", range.Value);
+		m_WampClient.sendCall("{\"deviceId\":" + 1 + "}", "com.sonycsl.kadecot.arduino.analogWrite", "[]", Json.Stringify(dic), pinMode);
+	}
+
+	public void analogRead(UIRangeInput range, int pin)
+	{
+		JsDictionary dic = new JsDictionary("pin", pin);
+		m_WampClient.sendCall("{\"deviceId\":" + 1 + "}", "com.sonycsl.kadecot.arduino.analogRead", "[]", Json.Stringify(dic), (args) => { digitalRead(args, range); });
+	}
+
+	public void pinMode(object args)
+	{
+		int switchData = (int)((dynamic[])args)[0];
+		if (switchData != (int)WAMP_MSG_TYPE.RESULT) {
+			return;
+		}
+		dynamic doc = ((dynamic[])args)[4];
+		if (m_DeviceController != null) {
+			if (PropertyList == null)
+				return;
+		}
+	}
+
+	public void digitalWrite(object args)
+	{
+		int switchData = (int)((dynamic[])args)[0];
+		if (switchData != (int)WAMP_MSG_TYPE.RESULT) {
+			return;
+		}
+		dynamic doc = ((dynamic[])args)[4];
+		if (m_DeviceController != null) {
+			if (PropertyList == null)
+				return;
+		}
+	}
+
+	public void DigitalRead(UIButton button, UIFlipSwitch flip, int i)
+	{
+		JsDictionary dic = new JsDictionary("pin", i);
+		string str = m_WampClient.sendCall("{\"deviceId\":" + 1 + "}", "com.sonycsl.kadecot.arduino.digitalRead", "[]", Json.Stringify(dic), (arg) => { digitalRead(arg, flip); });
+		if (str == null) {
+			button.ToggleClass("ui-icon-refresh", "ui-icon-alert");
+		}
+		else {
+			button.ToggleClass("ui-icon-alert", "ui-icon-refresh");
+		}
+	}
+
+	public void digitalRead(object args, UIObject uiobject)
+	{
+		int switchData = (int)((dynamic[])args)[0];
+		if (switchData != (int)WAMP_MSG_TYPE.RESULT) {
+			return;
+		}
+		dynamic doc = ((dynamic[])args)[4];
+		if (m_DeviceController != null) {
+
+			WebApiGrsaguraMessage msg = new WebApiGrsaguraMessage(doc);
+			if (uiobject.GetType() == typeof(UIFlipSwitch)) {
+				UIFlipSwitch flip = (UIFlipSwitch)uiobject;
+				flip.Value = msg.value;
+			}
+			else if (uiobject.GetType() == typeof(UIRangeInput)) {
+				UIRangeInput range = (UIRangeInput)uiobject;
+				range.Value = int.Parse(msg.value);
+				range.Object.Slider("refresh");
+			}
+		}
+	}
+}
+
+namespace ctrlui
+{
+	public class Information
+	{
+		private jQueryObject info;
+
+		public Information()
+		{
+		}
+
+		public void Update(Element ele, string id)
+		{
+			var page = CtrlUI.GetPage(ele);
+
+			this.info = jQuery.Select("#" + id, page);
+			if (this.info == null)
+				return;
+			jQuery.Ajax("./" + id + ".json").Success(this.Success).Error(this.Error);
+		}
+
+		private void Success(object data, string textStatus, jQueryXmlHttpRequest request)
+		{
+			var items = (dynamic[])((data.GetType() == typeof(string)) ? jQuery.ParseJson((string)data) : data);
+
+			var listview = new UIListview("data-inset", true, "data-theme", "b").Object;
+			listview.Append(new UIListDivider("ソフトウェア情報").Object);
+
+			foreach (var item in items) {
+				string title = item.title;
+				string version = item.version;
+				string link = item.link;
+				string note = item.note;
+
+				UIAnchor a;
+				if (String.IsNullOrEmpty(link)) {
+					a = new UIAnchor(new UIH(2, title));
+					a.Href = "#";
+				}
+				else {
+					a = new UIAnchor(new UIH(2, title));
+					a.Href = link;
+					a.Target = "_blank";
+				}
+				a.Append(new UIP("Version " + version));
+				if (!String.IsNullOrEmpty(note))
+					a.Append(new UIP(note));
+				listview.Append(new UIListviewItem(a).Object);
+			}
+			UIAnchor anchor = new UIAnchor();
+			anchor.Target = "_blank";
+			anchor.Href = "http://www.core-s.co.jp";
+			anchor.Append(new UIImg("src", "imgs/core-s.svg").Object).Append("コアーズ株式会社");
+
+			var listitem = new UIListDivider(anchor).Object;
+
+			listview.Append(listitem);
+			this.info.Html("");
+			this.info.Append(listview);
+
+			jQuery.Select("ul", this.info).ListView().ListView("refresh");
+			this.info.Popup("reposition", new { positionTo = "origin" });
+		}
+
+		private void Error(jQueryXmlHttpRequest request, string textStatus, Exception error)
+		{
+			jQueryObject listview = new UIListview("data-inset", "true", "data-theme", "b").Object;
+			listview.Append(new UIListDivider("ソフトウェア情報").Object);
+			listview.Append(new UIListviewItem(new UIP("通信エラー")).Object);
+
+			this.info.Append(listview);
+			jQuery.Select("ul", this.info).ListView().ListView("refresh");
+			this.info.Popup("reposition", new { positionTo = "origin" });
+		}
+	}
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/DeviceController.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/DeviceController.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/DeviceController.cs	(revision 101)
@@ -0,0 +1,458 @@
+﻿/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ * 
+ *  上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id$
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using System.Xml;
+using control;
+
+namespace ctrlui
+{
+	public enum PropertyInputMode
+	{
+		Unknown,
+		Select,
+		Range,
+	}
+
+	public class PropertyInputInfo
+	{
+		public PropertyInputMode Mode;
+	}
+
+	public class PropertySelectInput : PropertyInputInfo
+	{
+		public Dictionary<long, string> Option = new Dictionary<long, string>();
+
+		public PropertySelectInput()
+		{
+			Mode = PropertyInputMode.Select;
+		}
+	}
+
+	public class PropertyRangeInput : PropertyInputInfo
+	{
+		public int Maximum;
+		public int Minimum;
+		public string MinDescrption;
+		public string MaxDescrption;
+
+		public PropertyRangeInput()
+		{
+			Mode = PropertyInputMode.Range;
+		}
+	}
+
+	public class DeviceController : UIDeviceController
+	{
+
+		public class NodeInfo
+		{
+			private ENOD_ID m_NodeId;
+			private DeviceInfo m_Profile;
+			private List<DeviceInfo> m_Devices = new List<DeviceInfo>();
+
+			public NodeInfo(ENOD_ID nodeId, DeviceInfo profile)
+			{
+				m_NodeId = nodeId;
+				m_Profile = profile;
+			}
+
+			public ENOD_ID NodeId { get { return m_NodeId; } }
+
+			public DeviceInfo Profile { get { return m_Profile; } }
+
+			public List<DeviceInfo> Devices { get { return m_Devices; } }
+
+			public object Data { get; set; }
+
+		}
+		public class DeviceInfo : UIDeviceInfo
+		{
+			private JsonClassInfo m_ClassInfo;
+			private bool m_Profile;
+			private byte m_ClassGroupCode;
+			private byte m_ClassCode;
+			private byte m_InstanceCode;
+			private List<DevicePropertyInfo> m_Properties = new List<DevicePropertyInfo>();
+			private int m_EObjId;
+
+			public DeviceInfo(JsonClassInfo eci, bool profile, byte x1, byte x2, byte x3, int eobjid)
+			{
+				m_ClassInfo = eci;
+				m_Profile = profile;
+				m_ClassGroupCode = x1;
+				m_ClassCode = x2;
+				m_InstanceCode = x3;
+				m_EObjId = eobjid;
+			}
+
+			public DeviceInfo(JsonClassInfo eci, WebApiObjectInfo dev)
+				: this(eci, dev.profile, dev.x1, dev.x2, dev.x3, dev.eobjid)
+			{
+			}
+
+			public DeviceInfo(JsonClassInfo eci, DevicePropertyInfo[] prps)
+			{
+				m_ClassInfo = eci;
+				m_Properties.AddRange(prps);
+			}
+
+			public JsonClassInfo ClassInfo { get { return m_ClassInfo; } }
+
+			public bool Profile { get { return m_Profile; } }
+
+			public byte ClassGroupCode { get { return m_ClassGroupCode; } }
+
+			public byte ClassCode { get { return m_ClassCode; } }
+
+			public byte InstanceCode { get { return m_InstanceCode; } }
+
+			public List<DevicePropertyInfo> Properties { get { return m_Properties; } }
+
+			public int EObjId { get { return m_EObjId; } }
+
+			public object Data { get; set; }
+
+			public string GetText()
+			{
+				if (m_ClassInfo != null)
+					return m_ClassInfo.description;
+				else
+					return String.Format("{0:X2}{1:X2}{2:X2}", m_ClassGroupCode, m_ClassCode, m_InstanceCode);
+			}
+			/// <summary>
+			/// プロパティ値を採用
+			/// </summary>
+			/// <param name="epc">番号</param>
+			/// <param name="edt">入力値</param>
+			internal void SetPropertyData(byte epc, byte[] edt)
+			{
+				DevicePropertyInfo dpi = m_Properties.FirstOrDefault(p => p.PropertyCode == epc);
+				if (dpi == null)
+					return;
+
+				dpi.SetPropertyData(edt);
+			}
+			internal void AdoptInputData(byte epc)
+			{
+				DevicePropertyInfo dpi = m_Properties.FirstOrDefault(p => p.PropertyCode == epc);
+				if (dpi == null)
+					return;
+
+				dpi.AdoptInputData();
+			}
+			public string GetObjectID()
+			{
+				string text = ClassGroupCode.ToString("X2")
+				 + ClassCode.ToString("X2")
+				 + InstanceCode.ToString("X2");
+				return text;
+			}
+			public void SetUIDevice(CtrlUI page)
+			{
+				base.UIDeviceSet(this, page);
+			}
+		}
+
+		public delegate void GetClassInfoCallback(JsonClassInfo eclass);
+		public delegate void GetClassInfoHandler(byte x1, byte x2, GetClassInfoCallback cb);
+		public delegate void CreateCallback(DeviceController dc);
+
+		public class DevicePropertyInfo : UIDevicePropertyInfo
+		{
+			private JsonPropertyInfo m_PropertyInfo;
+			private byte m_PropertyCode;
+			private EPC_FLAG m_Flag;
+			private byte m_Size;
+			private byte[] m_Data;
+			List<PropertyInputInfo> m_InputTypes;
+			/// <summary>
+			/// コンストラクタ
+			/// </summary>
+			/// <param name="epi"></param>
+			/// <param name="epc"></param>
+			/// <param name="flag"></param>
+			/// <param name="size"></param>
+			public DevicePropertyInfo(JsonPropertyInfo epi, byte epc, EPC_FLAG flag, byte size)
+			{
+				m_PropertyInfo = epi;
+				m_PropertyCode = epc;
+				m_Flag = flag;
+				m_Size = size;
+				//base.SetProperty(this);
+			}
+			/// <summary>
+			/// コンストラクタ
+			/// </summary>
+			/// <param name="epi"></param>
+			/// <param name="prop"></param>
+			public DevicePropertyInfo(JsonPropertyInfo epi, WebApiPropertyInfo prop)
+				: this(epi, prop.epc, prop.flag, (byte)epi.size)
+			{
+
+			}
+			public JsonPropertyInfo PropertyInfo
+			{
+				get { return m_PropertyInfo; }
+			}
+			public byte PropertyCode
+			{
+				get { return m_PropertyCode; }
+			}
+			public string GetPropertyCode(string format)
+			{
+				return PropertyCode.ToString(format);
+			}
+			/// <summary>
+			/// 可変長データ
+			/// </summary>
+			/// <returns>true:可変長データ</returns>
+			public bool IsValiable()
+			{
+				return (PropertyInfo == null) ? true : PropertyInfo.access.Contains("VARIABLE");
+			}
+			/// <summary>
+			/// アクセスルール
+			/// </summary>
+			public EPC_FLAG Flag
+			{
+				get { return m_Flag; }
+			}
+			public byte Size
+			{
+				get { return m_Size; }
+			}
+			/// <summary>
+			/// 表示名称を返します
+			/// </summary>
+			/// <returns></returns>
+			public string GetText()
+			{
+				if (m_PropertyInfo != null)
+					return m_PropertyInfo.description;
+				else
+					return String.Format("{0:X2}", m_PropertyCode);
+			}
+			/// <summary>
+			/// 入力値
+			/// </summary>
+			public byte[] InputData { get; set; }
+			/// <summary>
+			/// プロパティのデータ
+			/// </summary>
+			public byte[] Data { get { return m_Data; } }
+			/// <summary>
+			/// 書き込み待ち状態
+			/// </summary>
+			public bool IsWaitRes { get; set; }
+			public List<PropertyInputInfo> InputTypes { get { return m_InputTypes; } }
+			/// <summary>
+			/// プロパティ値を採用したとき、値をDataに入れる。
+			/// </summary>
+			/// <param name="edt"></param>
+			public void SetPropertyData(byte[] edt)
+			{
+				m_Data = edt;
+			}
+			public void AdoptInputData()
+			{
+				m_Data = InputData;
+				InputData = null;
+			}
+			/// <summary>
+			/// InputTypesを設定
+			/// </summary>
+			public void PrepareInputInfo()
+			{
+				if (m_InputTypes != null)
+					return;
+
+				m_InputTypes = new List<PropertyInputInfo>();
+
+				JsonPropertyInfo epi = m_PropertyInfo;
+				if ((epi == null) || !epi.primitive)
+					return;
+
+				ValueRange valueRange = ValueRange.Parse(epi.valueDescription, epi);
+				if (!String.IsNullOrEmpty(epi.initialValue))
+					valueRange.InitailValue = epi.initialValue;
+
+				if (valueRange.Values.Count > 0) {
+					PropertySelectInput pii;
+					pii = new PropertySelectInput();
+					foreach (var option in valueRange.Values)
+						pii.Option.Add(option.Val, option.Disp);
+					m_InputTypes.Add(pii);
+				}
+				foreach (var range in valueRange.Ranges) {
+					PropertyRangeInput pii;
+					pii = new PropertyRangeInput();
+					pii.Minimum = (int)range.Min;
+					pii.Maximum = (int)range.Max;
+					pii.MinDescrption = range.MinDisp;
+					pii.MaxDescrption = range.MaxDisp;
+					m_InputTypes.Add(pii);
+				}
+			}
+
+		}
+
+		public static GetClassInfoHandler GetClassInfo;
+		private List<NodeInfo> m_NodeList = new List<NodeInfo>();
+
+		public DeviceController(List<NodeInfo> nodeList)
+		{
+			m_NodeList = nodeList;
+			base.DeviceController = this;
+		}
+
+		public IEnumerable<NodeInfo> NodeList { get { return m_NodeList; } }
+		/// <summary>
+		/// プロパティ値を設定
+		/// </summary>
+		/// <param name="response"></param>
+		/// <returns></returns>
+		public bool RecvResponse(WebApiEchonetMessage response)
+		{
+			NodeInfo ni;
+			DeviceInfo di;
+
+			GetDevice(response.sender, response.seoj, out ni, out di);
+			if (ni == null) {
+				Debug.WriteLine("ni == null");
+				return false;
+			}
+			if (di == null) {
+				Debug.WriteLine("di == null");
+				return false;
+			}
+			foreach (var prop in response.properties) {
+				if (prop.edt.Length > 0) {
+					//プロパティ値を採用
+					di.SetPropertyData(prop.epc, prop.GetEdt());
+				}
+				else {
+					// プロパティ値書き込み応答の場合
+					if (response.esv == /*ESV_SET_RES*/0x71) {
+						// 入力値を採用
+						di.AdoptInputData(prop.epc);
+					}
+				}
+			}
+
+			return true;
+		}
+
+		public void RecvResponse(DeviceInfo di, byte esv, byte epc, byte[] edt)
+		{
+			if (edt.Length > 0) {
+				// プロパティ値を設定
+				di.SetPropertyData(epc, edt);
+			}
+			else {
+				// プロパティ値書き込み応答の場合
+				if (esv == /*ESV_SET_RES*/0x71) {
+					// 入力値を採用
+					di.AdoptInputData(epc);
+				}
+			}
+		}
+		/// <summary>
+		/// 機器を取得
+		/// </summary>
+		/// <param name="nodid"></param>
+		/// <param name="eoj"></param>
+		/// <param name="nod"></param>
+		/// <param name="obj"></param>
+		private void GetDevice(ENOD_ID nodid, T_ECN_EOJ eoj, out NodeInfo nod, out DeviceInfo obj)
+		{
+			obj = null;
+			nod = FindNode(nodid);
+
+			if (nod != null) {
+				// ノードプロファイルの場合
+				if ((eoj.x1 == T_ECN_EOJ.X1_PROFILE)
+					&& (eoj.x2 == T_ECN_EOJ.X2_NODE_PROFILE)) {
+					obj = nod.Profile;
+				}
+				// 機器オブジェクトの場合
+				else {
+					obj = FindDevice(nod, eoj);
+				}
+			}
+		}
+		/// <summary>
+		///ノードを取得
+		/// </summary>
+		/// <param name="enodid"></param>
+		/// <returns></returns>
+		private NodeInfo FindNode(ENOD_ID enodid)
+		{
+			NodeInfo ni = null;
+
+			switch (enodid) {
+			case ENOD_ID.MULTICAST_ID:
+			case ENOD_ID.LOCAL_ID:
+				ni = m_NodeList[0];
+				break;
+			default:
+				ni = m_NodeList.FirstOrDefault(p => p.NodeId == enodid);
+				break;
+			}
+
+			return ni;
+		}
+
+		private DeviceInfo FindDevice(NodeInfo ni, T_ECN_EOJ eoj)
+		{
+			foreach (DeviceInfo di in ni.Devices) {
+				if ((di.ClassGroupCode == eoj.x1)
+					&& (di.ClassCode == eoj.x2)
+					&& (di.InstanceCode == eoj.x3))
+					return di;
+			}
+
+			return null;
+		}
+	}
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/EchonetLite.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/EchonetLite.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/EchonetLite.cs	(revision 101)
@@ -0,0 +1,113 @@
+﻿/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ * 
+ *  上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id$
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Web;
+
+namespace ctrlui
+{
+	public enum ENOD_ID
+	{
+		/// <summary>
+		/// NOT_MATCH_ID
+		/// </summary>
+		NOT_MATCH_ID = -1,
+		/// <summary>
+		/// MULTICAST_ID
+		/// </summary>
+		MULTICAST_ID = 0,
+		/// <summary>
+		/// LOCAL_ID
+		/// </summary>
+		LOCAL_ID = 1,
+		/// <summary>
+		/// API_ID 
+		/// </summary>
+		API_ID = 2,
+		/// <summary>
+		/// REMOTE_ID
+		/// </summary>
+		REMOTE_ID = 3,
+		/// <summary>
+		/// TABLE_NUM 
+		/// </summary>
+		TABLE_NUM = 100,
+	}
+
+	[Flags]
+	public enum EPC_FLAG
+	{
+		/// <summary>なし</summary>
+		NONE = 0x00,
+		/// <summary>アクセスルール Get</summary>
+		RULE_SET = 0x01,
+		/// <summary>アクセスルール Set</summary>
+		RULE_GET = 0x02,
+		/// <summary>アクセスルール Anno</summary>
+		RULE_ANNO = 0x04,
+		/// <summary>状態変化時通知</summary>
+		ANNOUNCE = 0x40,
+		/// <summary>可変長データ</summary>
+		VARIABLE = 0x80,
+	}
+
+	public class T_ECN_EOJ
+	{
+		private byte[] _eoj = new byte[3];
+
+		public T_ECN_EOJ(byte[] src, int offset)
+		{
+			_eoj[0] = src[offset];
+			_eoj[1] = src[offset + 1];
+			_eoj[2] = src[offset + 2];
+		}
+
+		public byte x1 { get { return _eoj[0]; } set { _eoj[0] = value; } }
+
+		public byte x2 { get { return _eoj[1]; } set { _eoj[1] = value; } }
+
+		public byte x3 { get { return _eoj[2]; } set { _eoj[2] = value; } }
+
+		/// <summary>プロファイル</summary>
+		public const byte X1_PROFILE = 0x0E;
+
+		// プロファイルクラスグループ
+		/// <summary>ノードプロファイル</summary>
+		public const byte X2_NODE_PROFILE = 0xF0;
+	}
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/EcnlControllerUI.csproj
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/EcnlControllerUI.csproj	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/EcnlControllerUI.csproj	(revision 101)
@@ -0,0 +1,119 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>
+    </ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{06453FBD-10A6-412F-9DE6-504981D9E38B}</ProjectGuid>
+    <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>ctrlui</RootNamespace>
+    <AssemblyName>EcnlControllerUI</AssemblyName>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <UseIISExpress>true</UseIISExpress>
+    <IISExpressSSLPort />
+    <IISExpressAnonymousAuthentication />
+    <IISExpressWindowsAuthentication />
+    <IISExpressUseClassicPipelineMode />
+    <NoStdLib>True</NoStdLib>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Content Include="Web.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Control.cs" />
+    <Compile Include="CtrlUI.cs" />
+    <Compile Include="DeviceController.cs" />
+    <Compile Include="EchonetLite.cs" />
+    <Compile Include="jQueryMobile.cs" />
+    <Compile Include="JsonData.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="ValueRange.cs" />
+    <Compile Include="WampClient.cs" />
+    <Compile Include="WampClientCore.cs" />
+    <Compile Include="WampDeserializer.cs" />
+    <Compile Include="WampSerializer.cs" />
+    <Compile Include="WAMP_MSG_TYPE.cs" />
+    <Compile Include="WebApiData.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Web.Debug.config">
+      <DependentUpon>Web.config</DependentUpon>
+    </None>
+    <None Include="Web.Release.config">
+      <DependentUpon>Web.config</DependentUpon>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Reference Include="mscorlib">
+      <HintPath>$(SolutionDir)packages\Saltarelle.Runtime.2.6.2\tools\Assemblies\mscorlib.dll</HintPath>
+    </Reference>
+    <Reference Include="Saltarelle.jQuery">
+      <HintPath>..\packages\Saltarelle.jQuery.1.10.1\lib\Saltarelle.jQuery.dll</HintPath>
+    </Reference>
+    <Reference Include="Saltarelle.Web">
+      <HintPath>..\packages\Saltarelle.Web.3.1.0\lib\Saltarelle.Web.dll</HintPath>
+    </Reference>
+    <Reference Include="Saltarelle.Linq">
+      <HintPath>..\packages\Saltarelle.Linq.2.4.0\lib\Saltarelle.Linq.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <PropertyGroup>
+    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
+    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
+  </PropertyGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" Condition="!Exists('$(SolutionDir)packages\Saltarelle.Compiler.2.6.2\tools\Saltarelle.Compiler.targets')" />
+  <Import Project="$(SolutionDir)packages\Saltarelle.Compiler.2.6.2\tools\Saltarelle.Compiler.targets" Condition="Exists('$(SolutionDir)packages\Saltarelle.Compiler.2.6.2\tools\Saltarelle.Compiler.targets')" />
+  <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
+  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
+        <WebProjectProperties>
+          <UseIIS>True</UseIIS>
+          <AutoAssignPort>True</AutoAssignPort>
+          <DevelopmentServerPort>0</DevelopmentServerPort>
+          <DevelopmentServerVPath>/</DevelopmentServerVPath>
+          <IISUrl>http://localhost:50230/</IISUrl>
+          <NTLMAuthentication>False</NTLMAuthentication>
+          <UseCustomServer>False</UseCustomServer>
+          <CustomServerUrl>
+          </CustomServerUrl>
+          <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
+        </WebProjectProperties>
+      </FlavorProperties>
+    </VisualStudio>
+  </ProjectExtensions>
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(ProjectDir)$(OutDir)$(TargetName).js" "$(SolutionDir)EcnlCtrlUI\js\ctrlui.js"
+$(SolutionDir)tools\jsmin &lt; "$(ProjectDir)$(OutDir)$(TargetName).js" &gt; "$(SolutionDir)EcnlCtrlUI\js\ctrlui.min.js" "Copyright (C) 2015 by TOPPERS Project, Inc., JAPAN"</PostBuildEvent>
+  </PropertyGroup>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/JsonData.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/JsonData.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/JsonData.cs	(revision 101)
@@ -0,0 +1,202 @@
+﻿/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ * 
+ *  上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id$
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace ctrlui
+{
+	public class JsonClassGroupInfo
+	{
+		public byte classGroupCode;
+		public string description;
+		public string define;
+		public JsonClassInfo[] classes;
+
+		public JsonClassGroupInfo(dynamic p)
+		{
+			classGroupCode = p.classGroupCode;
+			description = p.description;
+			define = p.define;
+		}
+	}
+
+	/// <summary>
+	/// クラスの情報
+	/// </summary>
+	public class JsonClassInfo
+	{
+		/// <summary>
+		/// クラスの番号
+		/// </summary>
+		public byte classCode;
+		/// <summary>
+		/// 説明
+		/// </summary>
+		public string description;
+		/// <summary>
+		/// 定義名
+		/// </summary>
+		public string name;
+		/// <summary>
+		/// 定義名
+		/// </summary>
+		public string define;
+		/// <summary>
+		/// タイプ
+		/// </summary>
+		public string type;
+		/// <summary>
+		/// クラスグループ
+		/// </summary>
+		public JsonClassGroupInfo classGroup;
+		/// <summary>
+		/// プロパティの配列
+		/// </summary>
+		public JsonPropertyInfo[] properties;
+
+		public JsonClassInfo(dynamic p)
+		{
+			classCode = p.classCode;
+			description = p.description;
+			name = p.name;
+			define = p.define;
+			type = p.type;
+			classGroup = p.classGroup;
+			properties = p.properties;
+		}
+	}
+
+	public class JsonNodeInfo : JsonObjectInfo
+	{
+		public List<JsonObjectInfo> objects;
+
+		public JsonNodeInfo(JsonClassInfo type, string identifer, string attribute)
+			: base(type, identifer)
+		{
+			this.attribute = attribute;
+			this.objects = new List<JsonObjectInfo>();
+		}
+	}
+
+	public class JsonObjectInfo
+	{
+		public JsonClassInfo type;
+		public JsonNodeInfo parent;
+		public string identifer;
+		public byte instatceCode;
+		public string attribute;
+		public List<JsonPropertyInfo> properties;
+
+		public JsonObjectInfo(JsonClassInfo type, string identifer)
+		{
+			this.type = type;
+			this.identifer = identifer;
+			this.instatceCode = 1;
+			this.attribute = "device";
+			this.properties = new List<JsonPropertyInfo>();
+		}
+
+		public JsonPropertyInfo FindProperty(byte epc)
+		{
+			foreach (var item in this.properties) {
+				if (item.propertyCode == epc)
+					return item;
+			}
+			return null;
+		}
+	}
+
+	public class JsonFieldInfo
+	{
+		public string description;
+		public string valueDescription;
+		public string unitDescription;
+		public string initialValue;
+		public string type;
+		public string identifer;
+		public bool primitive;
+		public bool isArray;
+		public int arrayCount;
+		public int size;
+		public List<JsonFieldInfo> fields;
+	}
+
+	public class JsonPropertyInfo : JsonFieldInfo
+	{
+		public JsonObjectInfo classInfo;
+		public byte propertyCode;
+		public List<string> access;
+		public List<string> required;
+
+		public JsonPropertyInfo()
+		{
+		}
+
+		public JsonPropertyInfo(dynamic p)
+		{
+			classInfo = p.classInfo;
+			propertyCode = p.propertyCode;
+			access = p.access;
+			required = p.required;
+			description = p.description;
+			valueDescription = p.valueDescription;
+			unitDescription = p.unitDescription;
+			initialValue = p.initialValue;
+			type = p.type;
+			identifer = p.identifer;
+			primitive = p.primitive;
+			isArray = p.isArray;
+			arrayCount = p.arrayCount;
+			size = p.size;
+			fields = p.fields;
+		}
+	}
+
+	public class JsonSkeltonResult
+	{
+		public string macro;
+		public string declare;
+		public string predefine;
+		public string types;
+		public string funcs;
+		public string instance;
+		public string define;
+		public string config;
+	}
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/Properties/AssemblyInfo.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/Properties/AssemblyInfo.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/Properties/AssemblyInfo.cs	(revision 101)
@@ -0,0 +1,35 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// アセンブリに関する一般情報は、以下の属性セットによって 
+// 制御されます。アセンブリに関連付けられている情報を変更するには、
+// これらの属性値を変更します。
+[assembly: AssemblyTitle("EcnlControllerUI")]
+[assembly: AssemblyDescription("TOPPERS/ECNL コントローラー")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("TOPPERSプロジェクト")]
+[assembly: AssemblyProduct("TOPPERS/ECNL コントローラー")]
+[assembly: AssemblyCopyright("Copyright © 2015 by TOPPERS Project, Inc., JAPAN")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// ComVisible を false に設定すると、 
+// COM コンポーネントがこのアセンブリ内のその型を認識できなくなります。
+// COM からこのアセンブリ内の型にアクセスする必要がある場合は、その型の ComVisible 属性を true に設定してください。
+//[assembly: ComVisible(false)]
+
+// このプロジェクトが COM に公開される場合、次の GUID がタイプ ライブラリの ID になります。
+//[assembly: Guid("773a6d33-dcaa-478d-942a-0657f8e068f6")]
+
+// アセンブリのバージョン情報は、以下の 4 つの値で構成されています:
+//
+//      メジャー バージョン
+//      マイナー バージョン 
+//      ビルド番号
+//      リビジョン
+//
+// すべての値を指定するか、下のように "*" を使ってリビジョンおよびビルド番号を 
+// 既定値にすることができます:
+[assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyFileVersion("1.0.1.0")]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/ValueRange.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/ValueRange.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/ValueRange.cs	(revision 101)
@@ -0,0 +1,796 @@
+﻿/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ * 
+ *  上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id$
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text.RegularExpressions;
+
+namespace ctrlui
+{
+	enum TokenType
+	{
+		Separetor,
+		HexValue,
+		Numeric,
+		String,
+		End,
+	};
+
+	class TokenInfo
+	{
+		public string Token;
+		public TokenType Type;
+		public static string Separetor = @"[=,:\(\)\[\]～]";
+		public static string HexValue = "^0x[0-9A-Fa-f]+";
+		public static string Numeric = @"^[\-\+]?[\.]?[0-9]+[0-9,\.]*";
+
+		public TokenInfo(string token, TokenType type)
+		{
+			Token = token;
+			Type = type;
+		}
+
+		public override string ToString()
+		{
+			return Token;
+		}
+
+		public int ToInt32()
+		{
+			switch (Type) {
+			case TokenType.HexValue:
+				return Int32.Parse(Token.Substring(2)/*0xの削除*/, 16);
+			case TokenType.Numeric:
+				return Int32.Parse(Token);
+			default:
+				return 0;
+			}
+		}
+
+		public long ToInt64(string typeName)
+		{
+			string temp;
+
+			switch (Type) {
+			case TokenType.HexValue:
+				temp = Token.Substring(2)/*0xの削除*/;
+				return Int32.Parse(temp, 16);
+			case TokenType.Numeric:
+				return Int32.Parse(Token);
+			default:
+				return 0;
+			}
+		}
+	}
+
+	enum State
+	{
+		Value,
+		EqualOrRange,
+		Description,
+		UnitOrCommaOrEnd,
+		RengeMax,
+		StartParenthesis,
+		RangeDescription,
+		MinDescription,
+		RangeSeparetor,
+		MaxDescription,
+		EndParenthesis,
+		CommaOrEnd,
+		BitFieldLSB,
+		BitRange,
+		BitFieldMSB,
+		BitFieldDescription,
+		BitRangeEnd,
+		Colon,
+	}
+
+	public abstract class Value
+	{
+		public abstract string Disp { get; }
+		public abstract string GetInitialValue();
+	}
+
+	public class Option : Value
+	{
+		private long _Val;
+		private string _Disp;
+
+		public Option(long val, string disp)
+		{
+			_Val = val;
+			_Disp = disp;
+		}
+
+		public long Val { get { return _Val; } }
+		public override string Disp { get { return _Disp; } }
+
+		public override string GetInitialValue()
+		{
+			return _Val.ToString(16).ToUpper();
+		}
+	}
+
+	public class Range : Value
+	{
+		private long _Min;
+		private long _Max;
+		private string _Disp;
+		private string _MinDisp;
+		private string _MaxDisp;
+		private string _Unit;
+		private long _InitialValue;
+
+		public Range(long min, long max, string disp)
+		{
+			_Min = min;
+			_Max = max;
+			_Disp = disp;
+			_MinDisp = "";
+			_MaxDisp = "";
+			_Unit = "";
+			_InitialValue = min;
+		}
+
+		public Range(long min, long max, string disp, string minDisp, string maxDisp, string unit)
+		{
+			_Min = min;
+			_Max = max;
+			_Disp = disp;
+			_MinDisp = minDisp;
+			_MaxDisp = maxDisp;
+			_Unit = unit;
+			_InitialValue = min;
+		}
+
+		public long Min { get { return _Min; } }
+		public long Max { get { return _Max; } }
+		public override string Disp { get { return _Disp; } }
+		public string MinDisp { get { return _MinDisp; } }
+		public string MaxDisp { get { return _MaxDisp; } }
+		public string Unit { get { return _Unit; } }
+		public long InitialValue
+		{
+			get { return _InitialValue; }
+			set { _InitialValue = value; }
+		}
+
+		public override string GetInitialValue()
+		{
+			return _InitialValue.ToString(16).ToUpper();
+		}
+
+		public string GetDisp(long value)
+		{
+			return _Disp + value.ToString() + _Unit;
+		}
+	}
+
+	public class InRangeValue : Value
+	{
+		private Range _Range;
+		private long _Value;
+
+		public InRangeValue(Range range, long value)
+		{
+			_Range = range;
+			_Value = value;
+		}
+
+		public Range Range { get { return _Range; } }
+		public long Value { get { return _Value; } }
+		public override string Disp { get { return _Range.GetDisp(_Value); } }
+
+		public override string GetInitialValue()
+		{
+			return _Value.ToString(16).ToUpper();
+		}
+	}
+
+	public class BitField : Value
+	{
+		private int _Least;
+		private int _Most;
+		private string _Disp;
+		private List<Option> _Values = new List<Option>();
+		private List<Range> _Ranges = new List<Range>();
+		private Value _InitailValue;
+
+		public BitField(int least, int most, string disp)
+		{
+			_Least = least;
+			_Most = most;
+			_Disp = disp;
+		}
+
+		public int Least { get { return _Least; } }
+		public int Most { get { return _Most; } }
+		public override string Disp { get { return _Disp; } }
+		public List<Option> Values { get { return _Values; } }
+		public List<Range> Ranges { get { return _Ranges; } }
+		public Value InitailValue { get { return _InitailValue; } }
+
+		public override string GetInitialValue()
+		{
+			if (_InitailValue == null)
+				return "";
+			return _InitailValue.GetInitialValue();
+		}
+
+		internal void AddValue(Option option)
+		{
+			if (_InitailValue == null)
+				_InitailValue = option;
+			_Values.Add(option);
+		}
+
+		internal void AddRange(Range range)
+		{
+			if (_InitailValue == null)
+				_InitailValue = range;
+			_Ranges.Add(range);
+		}
+
+		internal bool IsInRange(long val64)
+		{
+			foreach (var val in _Values) {
+				if (val.Val != val64)
+					continue;
+
+				return true;
+			}
+
+			foreach (var rng in _Ranges) {
+				if ((rng.Min > val64) || (rng.Max < val64))
+					continue;
+
+				return true;
+			}
+
+			return false;
+		}
+
+		internal Value GetInRangeValue(long val64)
+		{
+			foreach (var val in _Values) {
+				if (val.Val != val64)
+					continue;
+
+				return val;
+			}
+
+			foreach (var rng in _Ranges) {
+				if ((rng.Min > val64) || (rng.Max < val64))
+					continue;
+
+				return new InRangeValue(rng, val64);
+			}
+
+			return null;
+		}
+	}
+
+	public class BitFiledsValue : Value
+	{
+		private BitField[] _BitFields;
+		private Value[] _BitFieldValues;
+		private long _Value;
+
+		public BitFiledsValue(BitField[] bitFlds, Value[] bitFldVals, long value)
+		{
+			_BitFields = bitFlds;
+			_BitFieldValues = bitFldVals;
+			_Value = value;
+		}
+
+		public override string Disp
+		{
+			get { return ""; }
+		}
+
+		public override string GetInitialValue()
+		{
+			return _Value.ToString(16).ToUpper();
+		}
+	}
+
+	class ValueSet
+	{
+		public List<Option> values;
+		public List<Range> ranges;
+		public BitField bitField;
+		public Value initialValue;
+
+		public ValueSet(List<Option> values, List<Range> ranges, BitField bitField, Value initialValue)
+		{
+			this.values = values;
+			this.ranges = ranges;
+			this.bitField = bitField;
+			this.initialValue = initialValue;
+		}
+	}
+
+	public class ValueRange
+	{
+		private List<Option> _Values = new List<Option>();
+		private List<Range> _Ranges = new List<Range>();
+		private List<BitField> _BitFields = new List<BitField>();
+		private List<ValueRange> _MemberFields = new List<ValueRange>();
+		private Value _InitailValue;
+		static Dictionary<string, ValueSet> _ParsedText = new Dictionary<string, ValueSet>();
+
+		public List<Option> Values { get { return _Values; } }
+		public List<Range> Ranges { get { return _Ranges; } }
+		public List<BitField> BitFields { get { return _BitFields; } }
+		public List<ValueRange> MemberFields { get { return _MemberFields; } }
+
+		public string InitailValue
+		{
+			get
+			{
+				if (_InitailValue == null)
+					return "";
+				return _InitailValue.GetInitialValue();
+			}
+			set
+			{
+				int val64 = Int32.Parse(value);
+				foreach (var val in _Values) {
+					if (val.Val != val64)
+						continue;
+
+					_InitailValue = val;
+					return;
+				}
+
+				foreach (var rng in _Ranges) {
+					if ((rng.Min > val64) || (rng.Max < val64))
+						continue;
+
+					_InitailValue = new InRangeValue(rng, val64);
+					return;
+				}
+
+				if (_BitFields.Count > 0) {
+					bool ok = true;
+					List<Value> bitFlds = new List<Value>();
+					foreach (var bit in _BitFields) {
+						if (!bit.IsInRange(val64)) {
+							ok = false;
+							break;
+						}
+
+						bitFlds.Add(bit.GetInRangeValue(val64));
+					}
+
+					if (ok) {
+						_InitailValue = new BitFiledsValue(_BitFields.ToArray(), bitFlds.ToArray(), val64);
+						return;
+					}
+				}
+			}
+		}
+
+		private static bool ParseValueRange(string input, string type, List<Option> values, List<Range> ranges,
+			out BitField bitFeild, out Value initialValue)
+		{
+			bitFeild = null;
+			initialValue = null;
+
+			List<TokenInfo> tokens = new List<TokenInfo>();
+			int pos = 0;
+			while (pos < input.Length) {
+				Regex ms;
+				RegexMatch m;
+				if ((m = (ms = new Regex(TokenInfo.HexValue)).Exec(input.Substring(pos))) != null) {
+					tokens.Add(new TokenInfo(m[0], TokenType.HexValue));
+					pos += m[0].Length;
+				}
+				else if ((m = (ms = new Regex(TokenInfo.Numeric)).Exec(input.Substring(pos))) != null) {
+					tokens.Add(new TokenInfo(m[0], TokenType.Numeric));
+					pos += m[0].Length;
+				}
+				else {
+					if ((m = (ms = new Regex(TokenInfo.Separetor)).Exec(input.Substring(pos))) == null) {
+						tokens.Add(new TokenInfo(input.Substring(pos), TokenType.String));
+						break;
+					}
+					int index = pos + m.Index;
+					if (index == pos) {
+						tokens.Add(new TokenInfo(m[0], TokenType.Separetor));
+						pos += 1;
+					}
+					else {
+						tokens.Add(new TokenInfo(input.Substring(pos, index - pos), TokenType.String));
+						tokens.Add(new TokenInfo(m[0], TokenType.Separetor));
+						pos = index + 1;
+					}
+				}
+			}
+			tokens.Add(new TokenInfo("", TokenType.End));
+
+			bool OK = false;
+			List<TokenInfo> sentence = new List<TokenInfo>();
+			State state = State.Value;
+			foreach (TokenInfo token in tokens) {
+				switch (state) {
+				case State.Value:
+					if ((token.Type == TokenType.HexValue)
+						|| (token.Type == TokenType.Numeric)) {
+						sentence.Add(token);
+						state = State.EqualOrRange;
+						continue;
+					}
+					else if ((token.Type == TokenType.Separetor)
+						&& (token.Token == "[")) {
+						if (bitFeild != null)
+							break;
+						state = State.BitFieldLSB;
+						continue;
+					}
+					break;
+				case State.EqualOrRange:
+					if (token.Type == TokenType.Separetor) {
+						switch (token.Token) {
+						case "=":
+							state = State.Description;
+							continue;
+						case "～":
+							state = State.RengeMax;
+							continue;
+						}
+					}
+					else if (token.Type == TokenType.End) {
+						Option option = new Option(sentence[0].ToInt64(type), "固定");
+						if (bitFeild != null)
+							bitFeild.AddValue(option);
+						else {
+							if (initialValue == null)
+								initialValue = option;
+							values.Add(option);
+						}
+						sentence.Clear();
+						state = State.CommaOrEnd;
+						continue;
+					}
+					break;
+				case State.Description:
+					if (token.Type == TokenType.String) {
+						Option option = new Option(sentence[0].ToInt64(type), token.Token);
+						if (bitFeild != null)
+							bitFeild.AddValue(option);
+						else {
+							if (initialValue == null)
+								initialValue = option;
+							values.Add(option);
+						}
+						sentence.Clear();
+						state = State.CommaOrEnd;
+						continue;
+					}
+					else if (token.Type == TokenType.Numeric) {
+						sentence.Add(token);
+						state = State.UnitOrCommaOrEnd;
+						continue;
+					}
+					break;
+				case State.UnitOrCommaOrEnd:
+					if (token.Type == TokenType.String) {
+						Option option = new Option(sentence[0].ToInt64(type), sentence[1].Token + token.Token);
+						if (bitFeild != null)
+							bitFeild.AddValue(option);
+						else {
+							if (initialValue == null)
+								initialValue = option;
+							values.Add(option);
+						}
+						sentence.Clear();
+						state = State.CommaOrEnd;
+						continue;
+					}
+					else if ((token.Type == TokenType.Separetor)
+						&& (token.Token == ",")) {
+						Option option = new Option(sentence[0].ToInt64(type), sentence[1].Token);
+						if (bitFeild != null)
+							bitFeild.AddValue(option);
+						else {
+							if (initialValue == null)
+								initialValue = option;
+							values.Add(option);
+						}
+						sentence.Clear();
+						state = State.Value;
+						continue;
+					}
+					else if (token.Type == TokenType.End) {
+						Option option = new Option(sentence[0].ToInt64(type), sentence[1].Token);
+						if (bitFeild != null)
+							bitFeild.AddValue(option);
+						else {
+							if (initialValue == null)
+								initialValue = option;
+							values.Add(option);
+						}
+						sentence.Clear();
+						OK = true;
+					}
+					break;
+				case State.RengeMax:
+					if ((token.Type == TokenType.HexValue)
+						|| (token.Type == TokenType.Numeric)) {
+						sentence.Add(token);
+						state = State.StartParenthesis;
+						continue;
+					}
+					else if ((token.Type == TokenType.Separetor)
+						&& (token.Token == "=")) {
+						string max = "0x";
+						for (int i = sentence[0].Token.Length - 2; i > 0; i--) {
+							max += "F";
+						}
+						sentence.Add(new TokenInfo(max, TokenType.HexValue));
+						state = State.RangeDescription;
+						continue;
+					}
+					break;
+				case State.StartParenthesis:
+					if (token.Type == TokenType.Separetor) {
+						switch (token.Token) {
+						case "=":
+							if (sentence.Count == 2) {
+								state = State.RangeDescription;
+								continue;
+							}
+							break;
+						case "(":
+							sentence.Add(new TokenInfo("", TokenType.String));
+							state = State.MinDescription;
+							continue;
+						case ",":
+							Range range = new Range(sentence[0].ToInt64(type), sentence[1].ToInt64(type), (sentence.Count > 2) ? sentence[2].Token : "");
+							if (bitFeild != null) {
+								bitFeild.AddRange(range);
+							}
+							else {
+								if (initialValue == null)
+									initialValue = range;
+								ranges.Add(range);
+							}
+							sentence.Clear();
+							state = State.Value;
+							continue;
+						}
+					}
+					else if (token.Type == TokenType.End) {
+						Range range = new Range(sentence[0].ToInt64(type), sentence[1].ToInt64(type), (sentence.Count > 2) ? sentence[2].Token : "");
+						if (bitFeild != null) {
+							bitFeild.AddRange(range);
+						}
+						else {
+							if (initialValue == null)
+								initialValue = range;
+							ranges.Add(range);
+						}
+						sentence.Clear();
+						OK = true;
+					}
+					break;
+				case State.RangeDescription:
+					if (token.Type == TokenType.String) {
+						sentence.Add(token);
+						state = State.StartParenthesis;
+						continue;
+					}
+					break;
+				case State.MinDescription:
+					if ((token.Type == TokenType.Numeric)
+						|| (token.Type == TokenType.String)) {
+						sentence.Add(token);
+						state = State.RangeSeparetor;
+						continue;
+					}
+					break;
+				case State.RangeSeparetor:
+					if ((token.Type == TokenType.Separetor)
+						&& (token.Token == "～")) {
+						state = State.MaxDescription;
+						continue;
+					}
+					break;
+				case State.MaxDescription:
+					if ((token.Type == TokenType.Numeric)
+						|| (token.Type == TokenType.String)) {
+						sentence.Add(token);
+						state = State.EndParenthesis;
+						continue;
+					}
+					break;
+				case State.EndParenthesis:
+					if ((token.Type == TokenType.Separetor)
+						&& (token.Token == ")")) {
+						Range range = new Range(
+							sentence[0].ToInt64(type),
+							sentence[1].ToInt64(type),
+							sentence[2].Token,
+							sentence[3].Token,
+							sentence[4].Token,
+							(sentence.Count > 5) ? sentence[5].Token : "");
+						if (bitFeild != null) {
+							bitFeild.AddRange(range);
+						}
+						else {
+							if (initialValue == null)
+								initialValue = range;
+							ranges.Add(range);
+						}
+						sentence.Clear();
+						state = State.CommaOrEnd;
+						continue;
+					}
+					else if (token.Type == TokenType.String) {
+						sentence.Add(token);
+						state = State.EndParenthesis;
+						continue;
+					}
+					break;
+				case State.BitFieldLSB:
+					if (token.Type == TokenType.Numeric) {
+						sentence.Add(token);
+						state = State.BitRange;
+						continue;
+					}
+					break;
+				case State.BitRange:
+					if (token.Type == TokenType.Separetor) {
+						switch (token.Token) {
+						case "～":
+							state = State.BitFieldMSB;
+							continue;
+						case "]":
+							sentence.Add(sentence[0]);
+							state = State.BitFieldDescription;
+							continue;
+						}
+					}
+					break;
+				case State.BitFieldMSB:
+					if (token.Type == TokenType.Numeric) {
+						sentence.Add(token);
+						state = State.BitRangeEnd;
+						continue;
+					}
+					break;
+				case State.BitRangeEnd:
+					if ((token.Type == TokenType.Separetor)
+						&& (token.Token == "]")) {
+						state = State.BitFieldDescription;
+						continue;
+					}
+					break;
+				case State.BitFieldDescription:
+					if (token.Type == TokenType.String) {
+						sentence.Add(token);
+						state = State.Colon;
+						continue;
+					}
+					break;
+				case State.Colon:
+					if ((token.Type == TokenType.Separetor)
+						&& (token.Token == ":")) {
+						bitFeild = new BitField(sentence[0].ToInt32(), sentence[1].ToInt32(), sentence[2].Token);
+						if (initialValue == null)
+							initialValue = bitFeild;
+						sentence.Clear();
+						state = State.Value;
+						continue;
+					}
+					else if (token.Type == TokenType.End) {
+						bitFeild = new BitField(sentence[0].ToInt32(), sentence[1].ToInt32(), sentence[2].Token);
+						if (initialValue == null)
+							initialValue = bitFeild;
+						sentence.Clear();
+						OK = true;
+						break;
+					}
+					break;
+				case State.CommaOrEnd:
+					if (token.Type == TokenType.End) {
+						OK = true;
+					}
+					else if ((token.Type == TokenType.Separetor)
+						&& (token.Token == ",")) {
+						state = State.Value;
+						continue;
+					}
+					break;
+				}
+				break;
+			}
+
+			return OK;
+		}
+
+		public static ValueRange Parse(string valrng, JsonFieldInfo emti)
+		{
+			ValueRange valueRange = new ValueRange();
+
+			if (emti.primitive) {
+				string[] lines = valrng.Split(new Regex("\r\n"));
+				foreach (string line in lines) {
+					if (new Regex("^<(.+)>$").Test(line))
+						continue;
+
+					List<Option> values;
+					List<Range> ranges;
+					BitField bitField;
+					Value initialValue;
+
+					ValueSet pair;
+					if (_ParsedText.TryGetValue(line, out pair)) {
+						values = pair.values;
+						ranges = pair.ranges;
+						bitField = pair.bitField;
+						initialValue = pair.initialValue;
+					}
+					else {
+						values = new List<Option>();
+						ranges = new List<Range>();
+
+						ParseValueRange(line, emti.type, values, ranges, out bitField, out initialValue);
+
+						_ParsedText.Add(line, new ValueSet(values, ranges, bitField, initialValue));
+					}
+
+					valueRange._Values.AddRange(values);
+					valueRange._Ranges.AddRange(ranges);
+					if (bitField != null)
+						valueRange._BitFields.Add(bitField);
+					if (valueRange._InitailValue == null)
+						valueRange._InitailValue = initialValue;
+				}
+			}
+			else {
+				foreach (JsonFieldInfo efi in emti.fields) {
+					ValueRange member = Parse(efi.valueDescription, efi);
+					valueRange._MemberFields.Add(member);
+				}
+			}
+
+			return valueRange;
+		}
+	}
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WAMP_MSG_TYPE.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WAMP_MSG_TYPE.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WAMP_MSG_TYPE.cs	(revision 101)
@@ -0,0 +1,43 @@
+// ------------------------------------------------------------------------------
+//  <autogenerated>
+//      This code was generated by a tool.
+//      Mono Runtime Version = 4.0.30319.1
+// 
+//      Changes to this file may cause incorrect behavior and will be lost if 
+//      the code is regenerated.
+//  </autogenerated>
+// ------------------------------------------------------------------------------
+using System;
+
+namespace Kadecot
+{
+	public enum WAMP_MSG_TYPE
+	{
+		HELLO = 1,
+		WELCOME = 2,
+		ABORT = 3,
+		CHALLENGE = 4,
+		AUTHENTICATE = 5,
+		GOODBYE = 6,
+		HEARTBEAT = 7,
+		ERROR = 8,
+		PUBLISH = 16,
+		PUBLISHED = 17,
+		SUBSCRIBE = 32,
+		SUBSCRIBED = 33,
+		UNSUBSCRIBE = 34,
+		UNSUBSCRIBED = 35,
+		EVENT = 36,
+		CALL = 48,
+		CANCEL = 49,
+		RESULT = 50,
+		REGISTER = 64,
+		REGISTERED = 65,
+		UNREGISTER = 66,
+		UNREGISTERED = 67,
+		INVOCATION = 68,
+		INTERRUPT = 69,
+		YIELD = 70
+	}
+}
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WampClient.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WampClient.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WampClient.cs	(revision 101)
@@ -0,0 +1,780 @@
+﻿using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Html;
+using System.Net.WebSockets;
+using System.Diagnostics;
+
+namespace Kadecot
+{
+	public class WampClient
+	{
+		//delegate
+		public delegate void errCallback(string err);
+
+		//WebSocket
+		private WebSocket webSocket;
+
+		private bool challnge_flag;
+		private string url;
+		//		private List<string> plotocols;
+		private string[] plotocols = { "wamp.2.json" };
+		private bool on_open_flag;
+		private int request_id;
+		private errCallback errorCallback;
+		private Dictionary<int, int> subscription_id_list;
+		//public string origin{ get; private set;}
+
+		//WAMP SubPlotocol
+		private WampClientCore wampClientCore;
+
+		// Use this for initialization
+		//public void Awake () {
+		public WampClient()
+		{
+			challnge_flag = false;
+			url = null;
+			webSocket = null;
+			on_open_flag = false;
+			errorCallback = null;
+			request_id = 1;
+			subscription_id_list = new Dictionary<int, int>();
+			//origin = "http://UnityKadecotPlugin/";
+
+			wampClientCore = new WampClientCore();
+		}
+
+		// WebSocket Connectioon
+		public void connect(string serverIp)
+		{
+			System.Diagnostics.Debug.WriteLine("[WAMP Client] websocket connecting");
+			if (on_open_flag) {
+				System.Diagnostics.Debug.WriteLine("[WAMP Client] websocket already connected.");
+				return;
+			}
+			if (!String.IsNullOrEmpty(serverIp)) {
+				url = serverIp;//port : 41314
+			}
+			else {
+				url = "ws://localhost:8080/";
+			}
+			webSocket = new WebSocket(url, plotocols);
+			//webSocket.Origin 	 = origin;
+			webSocket.OnOpen += OnOpen;
+			webSocket.OnMessage += OnMessage;
+			webSocket.OnClose += OnClose;
+			webSocket.OnError += OnError;
+
+			//webSocket.Connect();
+		}
+
+		public void disconnect()
+		{
+			System.Diagnostics.Debug.WriteLine("[WAMP Client] websocket disconnecting");
+			webSocket.Close();
+		}
+
+		public void addOpenCallback(WampClientCore.WampCallback callback)
+		{
+			wampClientCore.openCallback = callback;
+		}
+		public void deleteOpenCallback()
+		{
+			wampClientCore.deleteOpenCallback();
+		}
+
+		public void addCloseCallback(WampClientCore.WampCallback callback)
+		{
+			wampClientCore.closeCallback = callback;
+		}
+		public void deleteCloseCallback()
+		{
+			wampClientCore.deleteCloseCallback();
+		}
+
+		public void addGoodbyeCallback(WampClientCore.WampCallbackArgs callback)
+		{
+			wampClientCore.goodbyeCallback = callback;
+		}
+		public void deleteGoodbyeCallback()
+		{
+			wampClientCore.deleteGoodbyeCallback();
+		}
+
+		public void addHeartbeatCallback(WampClientCore.WampCallbackArgs callback)
+		{
+			wampClientCore.heartbeatCallback = callback;
+		}
+		public void deleteHeartbeatCallback()
+		{
+			wampClientCore.deleteHeartbeatCallback();
+		}
+
+		public void addInvocationCallback(int request, WampClientCore.WampCallbackArgs callback)
+		{
+			wampClientCore.invocationCallback[request] = callback;
+		}
+
+		public void deleteInvocationCallback(int request)
+		{
+			wampClientCore.deleteInvocationCallback(request);
+		}
+
+
+		public string sendHello(string realm, string details, WampClientCore.WampCallbackArgs callback)
+		{
+
+			//serialize
+			string data;
+			data = WampSerializer.createHello(realm, details);
+
+			//encrypt data
+
+			//set callback
+			wampClientCore.helloCallback = callback;
+
+			//send data
+			if (on_open_flag == true) {
+				webSocket.Send(data);
+			}
+			else {
+				return null;
+			}
+
+			return data;
+		}
+
+		public string sendAuthenticate(string signature, string extra, WampClientCore.WampCallbackArgs callback)
+		{
+
+			//serialize
+			string data;
+			data = WampSerializer.createAuthenticate(signature, extra);
+
+			//encrypt data
+
+			//set callback
+			wampClientCore.authenticateCallback = callback;
+
+			//send data
+			if (this.on_open_flag) {
+				webSocket.Send(data);
+			}
+			else {
+				return null;
+			}
+
+			return data;
+		}
+
+		public string sendGoodbye(string details, string reason, WampClientCore.WampCallbackArgs callback)
+		{
+
+			//serialize
+			string data;
+			data = WampSerializer.createGoodbye(details, reason);
+
+			//encrypt data
+
+			//set callback
+			wampClientCore.goodbyeCallback = callback;
+
+			//send data
+			if (this.on_open_flag) {
+				webSocket.Send(data);
+			}
+			else {
+				return null;
+			}
+
+			return data;
+		}
+
+		public string sendHeartbeat(int incomingSeq, int outgoingSeq, string discard)
+		{
+
+			//serialize
+			string data;
+			data = WampSerializer.createHeartbeat(incomingSeq, outgoingSeq, discard);
+
+			//encrypt data
+
+			//send data
+			if (this.on_open_flag) {
+				webSocket.Send(data);
+			}
+			else {
+				return null;
+			}
+
+			return data;
+		}
+
+		public string sendError(int type, int request, string details, string error, string arguments, string argumentsKw)
+		{
+
+			//serialize
+			string data;
+			data = WampSerializer.createError(type, request, details, error, arguments, argumentsKw);
+
+			//encrypt data
+
+			//send data
+			if (this.on_open_flag) {
+				webSocket.Send(data);
+			}
+			else {
+				return null;
+			}
+
+			return data;
+		}
+
+
+		public string sendPublish(string options, string topic, string arguments, string argumentsKw, WampClientCore.WampCallbackArgs callback)
+		{
+
+			//serialize
+			string data;
+			int request;
+			request = this.request_id;
+			this.request_id++;
+			data = WampSerializer.createPublish(request, options, topic, arguments, argumentsKw);
+
+			//encrypt data
+
+			//set callback
+			wampClientCore.publishCallback[request] = callback;
+
+			//send data
+			if (this.on_open_flag) {
+				webSocket.Send(data);
+			}
+			else {
+				return null;
+			}
+
+			return data;
+		}
+
+		public string sendSubscribe(string options, string topic, WampClientCore.WampCallbackArgs eventfunc, WampClientCore.WampCallbackArgs callback)
+		{
+
+			//serialize
+			string data;
+			int request;
+			request = this.request_id;
+			this.request_id++;
+			data = WampSerializer.createSubscribe(request, options, topic);
+
+			//encrypt data
+
+			//set callback
+			wampClientCore.subscribeCallback[request] = callback;
+
+			//set event callback
+			wampClientCore.eventCallback[request] = eventfunc;
+
+			//send data
+			if (this.on_open_flag) {
+				webSocket.Send(data);
+			}
+			else {
+				return null;
+			}
+
+			return data;
+		}
+
+		public string sendUnsubscribe(int subscription, WampClientCore.WampCallbackArgs callback)
+		{
+
+			//serialize
+			string data;
+			int request;
+			request = this.request_id;
+			this.request_id++;
+			data = WampSerializer.createUnsubscribe(request, subscription);
+
+			//encrypt data
+
+			//set callback
+			wampClientCore.unsubscribeCallback[request] = callback;
+
+			//set Unsubscribe request id - subscription id
+			this.subscription_id_list[request] = subscription;
+
+			//send data
+			if (this.on_open_flag) {
+				webSocket.Send(data);
+			}
+			else {
+				return null;
+			}
+
+			return data;
+		}
+		/// <summary>
+		/// クライアントからメッセージを送ります
+		/// </summary>
+		/// <param name="options">deviceId</param>
+		/// <param name="procedure"></param>
+		/// <param name="arguments"></param>
+		/// <param name="argumentsKw">入力するデータ</param>
+		/// <param name="callback">コールバック</param>
+		/// <returns>データ</returns>
+		public string sendCall(string options, string procedure, string arguments, string argumentsKw, WampClientCore.WampCallbackArgs callback)
+		{
+
+			//serialize
+			string data;
+			int request;
+			request = this.request_id;
+			this.request_id++;
+			data = WampSerializer.createCall(request, options, procedure, arguments, argumentsKw);
+
+			//encrypt data
+
+			//set callback
+			wampClientCore.callCallback[request] = callback;
+
+			//send data
+			if (on_open_flag == true) {
+				webSocket.Send(data);
+			}
+			else {
+				return null;
+			}
+
+			return data;
+		}
+
+		public string sendCancel(int request, string options, WampClientCore.WampCallbackArgs callback)
+		{
+
+			//serialize
+			string data;
+			data = WampSerializer.createCancel(request, options);
+
+			//encrypt data
+
+			//set callback
+			wampClientCore.cancelCallback[request] = callback;
+
+			//send data
+			if (this.on_open_flag) {
+				webSocket.Send(data);
+			}
+			else {
+				return null;
+			}
+
+			return data;
+		}
+
+		public string sendRegister(string options, string procedure, WampClientCore.WampCallbackArgs callback)
+		{
+
+			//serialize
+			string data;
+			int request;
+			request = this.request_id;
+			this.request_id++;
+			data = WampSerializer.createRegister(request, options, procedure);
+
+			//encrypt data
+
+			//set callback
+			wampClientCore.registerCallback[request] = callback;
+
+			//send data
+			if (this.on_open_flag) {
+				webSocket.Send(data);
+			}
+			else {
+				return null;
+			}
+
+			return data;
+		}
+
+		public string sendUnregister(int registration, WampClientCore.WampCallbackArgs callback)
+		{
+
+			//serialize
+			string data;
+			int request;
+			request = this.request_id;
+			this.request_id++;
+			data = WampSerializer.createUnregister(request, registration);
+
+			//encrypt data
+
+			//set callback
+			wampClientCore.unregisterCallback[request] = callback;
+
+			//send data
+			if (this.on_open_flag) {
+				webSocket.Send(data);
+			}
+			else {
+				return null;
+			}
+
+			return data;
+		}
+
+		public string sendYield(int request, string options, string arguments, string argumentsKw)
+		{
+
+			//serialize
+			string data;
+			data = WampSerializer.createYield(request, options, arguments, argumentsKw);
+
+			//encrypt data
+
+			//send data
+			if (this.on_open_flag) {
+				webSocket.Send(data);
+			}
+
+			return data;
+		}
+
+		public void OnOpen(Event e)
+		{
+			System.Diagnostics.Debug.WriteLine("[WAMP Client] websocket connected");
+			on_open_flag = true;
+
+			WampClientCore.WampCallback callback = wampClientCore.openCallback;
+
+			if (callback != null) {
+				callback();
+			}
+		}
+
+		public void OnClose(Event e)
+		{
+			on_open_flag = false;
+			System.Diagnostics.Debug.WriteLine("[WAMP Client] websocket disconnected");
+			//			webSocket = null;
+
+			WampClientCore.WampCallback callback = wampClientCore.closeCallback;
+
+			if (callback != null) {
+				callback();
+			}
+		}
+
+		public void OnError(Event e)
+		{
+			System.Diagnostics.Debug.WriteLine("[WAMP Client] websocket error");
+
+			dynamic/*ErrorEventArgs*/eea = (dynamic/*ErrorEventArgs*/)e;
+
+			System.Diagnostics.Debug.WriteLine("[wamp OnError] msg :" + (string)eea.message);
+			if (errorCallback != null) {
+				errorCallback(eea.message);
+			}
+		}
+
+
+		public void OnMessage(Event e)
+		{
+			dynamic/*MessageEventArgs*/ msg = (dynamic/*MessageEventArgs*/)e;
+
+			//System.Diagnostics.Debug.WriteLine("[wamp perser] msg :" + msg.ToString());
+			object data;
+			WampClientCore.WampCallbackArgs callback = null;
+
+			//decrypt data
+
+			//deserialize
+			if (msg.data != null) {
+				data = WampDeserializer.Parse(msg.data);
+			}
+			else {
+				data = WampDeserializer.Parse((string)msg);
+			}
+			if (data == null) {
+				System.Diagnostics.Debug.WriteLine("[wamp perser] Syntax error");
+				return;
+			}
+
+			List<object> list = (List<object>)data;
+			Int64 switchData = (Int64)list[0];
+			switch (switchData) {
+			case (Int64)WAMP_MSG_TYPE.WELCOME:
+				// WAMP SPEC: [WELCOME, Session|id, Details|dict]
+				if (this.challnge_flag) {
+					this.challnge_flag = false;
+					callback = wampClientCore.authenticateCallback;
+					if (callback != null) {
+						callback(data);
+					}
+					else {
+						System.Diagnostics.Debug.WriteLine("[wamp perser] WELCOME Callback does not exist.");
+					}
+				}
+				else {
+					callback = wampClientCore.helloCallback;
+					if (callback != null) {
+						callback(data);
+					}
+					else {
+						System.Diagnostics.Debug.WriteLine("[wamp perser] WELCOME Callback does not exist.");
+					}
+				}
+				break;
+			case (Int64)WAMP_MSG_TYPE.ABORT:
+				// WAMP SPEC: [ABORT, Details|dict, Reason|uri]
+				if (this.challnge_flag) {
+					this.challnge_flag = false;
+					callback = wampClientCore.authenticateCallback;
+					if (callback != null) {
+						callback(data);
+					}
+					else {
+						System.Diagnostics.Debug.WriteLine("[wamp perser] ABORT Callback does not exist.");
+					}
+				}
+				else {
+					callback = wampClientCore.helloCallback;
+					if (callback != null) {
+						callback(data);
+					}
+					else {
+						System.Diagnostics.Debug.WriteLine("[wamp perser] ABORT Callback does not exist.");
+					}
+				}
+				break;
+			case (Int64)WAMP_MSG_TYPE.CHALLENGE:
+				// advanced WAMP SPEC: [CHALLENGE, AuthMethod|string, Extra|dict]
+				this.challnge_flag = true;
+				callback = wampClientCore.helloCallback;
+				if (callback != null) {
+					callback(data);
+				}
+				else {
+					System.Diagnostics.Debug.WriteLine("[wamp perser] CHALLENGE Callback does not exist.");
+				}
+				break;
+
+			case (Int64)WAMP_MSG_TYPE.GOODBYE:
+				// WAMP SPEC: [GOODBYE, Details|dict, Reason|uri]
+				callback = wampClientCore.goodbyeCallback;
+				if (callback != null) {
+					callback(data);
+				}
+				else {
+					System.Diagnostics.Debug.WriteLine("[wamp perser] GOODBYE Callback does not exist.");
+				}
+				break;
+			case (Int64)WAMP_MSG_TYPE.HEARTBEAT:
+				// advanced WAMP SPEC: [AUTHENTICATE, Signature|string, Extra|dict]
+				callback = wampClientCore.heartbeatCallback;
+				if (callback != null) {
+					callback(data);
+				}
+				else {
+					System.Diagnostics.Debug.WriteLine("[wamp perser] HEARTBEAT Callback does not exist.");
+				}
+				break;
+			case (Int64)WAMP_MSG_TYPE.ERROR: {
+					// WAMP SPEC: [ERROR, REQUEST.Type|int, REQUEST.Request|id, Details|dict, Error|uri, (Arguments|list, ArgumentsKw|dict)]
+					Int64 switchDataSec = (Int64)list[1];
+					int request = (int)((Int64)list[2]);
+					switch (switchDataSec) {
+					case (Int64)WAMP_MSG_TYPE.SUBSCRIBE:
+						// WAMP SPEC: [ERROR, SUBSCRIBE, SUBSCRIBE.Request|id, Details|dict, Error|uri]
+						callback = wampClientCore.subscribeCallback[request];
+						if (callback != null) {
+							callback(data);
+						}
+						else {
+							System.Diagnostics.Debug.WriteLine("[wamp perser] SUBSCRIBE Callback does not exist.");
+						}
+						break;
+					case (Int64)WAMP_MSG_TYPE.UNSUBSCRIBE:
+						// WAMP SPEC: [ERROR, UNSUBSCRIBE, UNSUBSCRIBE.Request|id, Details|dict, Error|uri]
+						callback = wampClientCore.unsubscribeCallback[request];
+						if (callback != null) {
+							callback(data);
+						}
+						else {
+							System.Diagnostics.Debug.WriteLine("[wamp perser] UNSUBSCRIBE Callback does not exist.");
+						}
+						break;
+					case (Int64)WAMP_MSG_TYPE.PUBLISH:
+						// WAMP SPEC: [ERROR, PUBLISH, PUBLISH.Request|id, Details|dict, Error|uri]
+						callback = wampClientCore.publishCallback[request];
+						if (callback != null) {
+							callback(data);
+						}
+						else {
+							System.Diagnostics.Debug.WriteLine("[wamp perser] PUBLISH Callback does not exist.");
+						}
+						break;
+					case (Int64)WAMP_MSG_TYPE.INVOCATION:
+						// WAMP SPEC: [ERROR, INVOCATION, INVOCATION.Request|id, Details|dict, Error|uri]
+						// WAMP SPEC: [ERROR, INVOCATION, INVOCATION.Request|id, Details|dict, Error|uri, Arguments|list]
+						// WAMP SPEC: [ERROR, INVOCATION, INVOCATION.Request|id, Details|dict, Error|uri, Arguments|list, ArgumentsKw|dict]
+						callback = wampClientCore.invocationCallback[request];
+						if (callback != null) {
+							callback(data);
+						}
+						else {
+							System.Diagnostics.Debug.WriteLine("[wamp perser] INVOCATION Callback does not exist.");
+						}
+						break;
+					case (Int64)WAMP_MSG_TYPE.CALL:
+						// WAMP SPEC: [ERROR, CALL, CALL.Request|id, Details|dict, Error|uri]
+						// WAMP SPEC: [ERROR, CALL, CALL.Request|id, Details|dict, Error|uri, Arguments|list]
+						// WAMP SPEC: [ERROR, CALL, CALL.Request|id, Details|dict, Error|uri, Arguments|list, ArgumentsKw|dict]
+						callback = wampClientCore.callCallback[request];
+						if (callback != null) {
+							callback(data);
+						}
+						else {
+							System.Diagnostics.Debug.WriteLine("[wamp perser] CALL Callback does not exist.");
+						}
+						break;
+					case (Int64)WAMP_MSG_TYPE.REGISTER:
+						// WAMP SPEC: [ERROR, REGISTER, REGISTER.Request|id, Details|dict, Error|uri]
+						callback = wampClientCore.registerCallback[request];
+						if (callback != null) {
+							callback(data);
+						}
+						else {
+							System.Diagnostics.Debug.WriteLine("[wamp perser] REGISTER Callback does not exist.");
+						}
+						break;
+					case (Int64)WAMP_MSG_TYPE.UNREGISTER:
+						// WAMP SPEC: [ERROR, UNREGISTER, UNREGISTER.Request|id, Details|dict, Error|uri]
+						callback = wampClientCore.unregisterCallback[request];
+						if (callback != null) {
+							callback(data);
+						}
+						else {
+							System.Diagnostics.Debug.WriteLine("[wamp perser] UNREGISTER Callback does not exist.");
+						}
+						break;
+					default:
+						return;
+					}
+					break;
+				}
+
+			case (Int64)WAMP_MSG_TYPE.PUBLISHED:
+				// WAMP SPEC: [PUBLISHED, PUBLISH.Request|id, Publication|id]
+				callback = wampClientCore.publishCallback[(int)((Int64)(list[1]))];
+				if (callback != null) {
+					callback(data);
+				}
+				else {
+					System.Diagnostics.Debug.WriteLine("[wamp perser] Callback does not exist.");
+				}
+				break;
+			case (Int64)WAMP_MSG_TYPE.SUBSCRIBED:
+				// WAMP SPEC: [SUBSCRIBED, SUBSCRIBE.Request|id, Subscription|id]
+				int reqId = (int)((Int64)(list[1]));
+				int subId = (int)((Int64)(list[2]));
+				callback = wampClientCore.subscribeCallback[reqId];
+				if (callback != null) {
+					wampClientCore.eventCallback[subId] = wampClientCore.eventCallback[reqId];
+					wampClientCore.deleteEventCallback(reqId);
+					callback(data);
+				}
+				else {
+					System.Diagnostics.Debug.WriteLine("[wamp perser] Callback does not exist.");
+				}
+				break;
+			case (Int64)WAMP_MSG_TYPE.UNSUBSCRIBED:
+				// WAMP SPEC: [UNSUBSCRIBED, UNSUBSCRIBE.Request|id]
+				callback = wampClientCore.unsubscribeCallback[(int)((Int64)(list[1]))];
+				if (callback != null) {
+					wampClientCore.deleteEventCallback(this.subscription_id_list[(int)((Int64)(list[1]))]);
+					callback(data);
+				}
+				else {
+					System.Diagnostics.Debug.WriteLine("[wamp perser] Callback does not exist.");
+				}
+				break;
+			case (Int64)WAMP_MSG_TYPE.EVENT:
+				// WAMP SPEC: [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict]
+				// WAMP SPEC: [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict, PUBLISH.Arguments|list]
+				// WAMP SPEC: [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict, PUBLISH.Arguments|list, PUBLISH.ArgumentKw|dict]
+				callback = wampClientCore.eventCallback[(int)((Int64)(list[1]))];
+				if (callback != null) {
+					callback(data);
+				}
+				else {
+					System.Diagnostics.Debug.WriteLine("[wamp perser] Callback does not exist.");
+				}
+				break;
+			case (Int64)WAMP_MSG_TYPE.RESULT:
+				// WAMP SPEC: [RESULT, CALL.Request|id, Details|dict]
+				// WAMP SPEC: [RESULT, CALL.Request|id, Details|dict, YIELD.Arguments|list]
+				// WAMP SPEC: [RESULT, CALL.Request|id, Details|dict, YIELD.Arguments|list, YIELD.ArgumentsKw|dict]
+				callback = wampClientCore.callCallback[(int)((Int64)(list[1]))];
+				if (callback != null) {
+					callback(data);
+				}
+				else {
+					System.Diagnostics.Debug.WriteLine("[wamp perser] RESULT Callback does not exist.");
+				}
+				break;
+
+			case (Int64)WAMP_MSG_TYPE.REGISTERED:
+				// WAMP SPEC: [REGISTERED, REGISTER.Request|id, Registration|id]
+				callback = wampClientCore.registerCallback[(int)((Int64)(list[1]))];
+				if (callback != null) {
+					callback(data);
+				}
+				else {
+					System.Diagnostics.Debug.WriteLine("[wamp perser] Callback does not exist.");
+				}
+				break;
+			case (Int64)WAMP_MSG_TYPE.UNREGISTERED:
+				// WAMP SPEC: [UNREGISTERED, UNREGISTER.Request|id]
+				callback = wampClientCore.unregisterCallback[(int)((Int64)(list[1]))];
+				if (callback != null) {
+					callback(data);
+				}
+				else {
+					System.Diagnostics.Debug.WriteLine("[wamp perser] Callback does not exist.");
+				}
+				break;
+			case (Int64)WAMP_MSG_TYPE.INVOCATION:
+				// WAMP SPEC: [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict]
+				// WAMP SPEC: [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict, CALL.Arguments|list]
+				// WAMP SPEC: [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict, CALL.Arguments|list, CALL.ArgumentsKw|dict]
+				callback = wampClientCore.invocationCallback[(int)((Int64)(list[1]))];
+				if (callback != null) {
+					callback(data);
+				}
+				else {
+					System.Diagnostics.Debug.WriteLine("[wamp perser] Callback does not exist.");
+				}
+				break;
+			case (Int64)WAMP_MSG_TYPE.INTERRUPT:
+				// advanced WAMP SPEC: [INTERRUPT, INVOCATION.Request|id, Options|dict]
+				callback = wampClientCore.interruptCallback[(int)((Int64)(list[1]))];
+				if (callback != null) {
+					callback(data);
+				}
+				else {
+					System.Diagnostics.Debug.WriteLine("[wamp perser] Callback does not exist.");
+				}
+				break;
+			default:
+				System.Diagnostics.Debug.WriteLine("[wamp perser] Unknown Message Type.\n" + list.ToString());
+				break;
+			}
+		}
+		public bool isConnecting()
+		{
+			return on_open_flag;
+		}
+	}
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WampClientCore.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WampClientCore.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WampClientCore.cs	(revision 101)
@@ -0,0 +1,119 @@
+﻿using System.Collections;
+using System.Collections.Generic;
+
+namespace Kadecot
+{
+	public class WampClientCore
+	{
+
+		public delegate void WampCallback();
+		public delegate void WampCallbackArgs(object args);
+
+		public WampCallback openCallback { get; set; }
+		public WampCallback closeCallback { get; set; }
+
+		//onMessage
+		public WampCallbackArgs heartbeatCallback { get; set; }
+		public WampCallbackArgs helloCallback { get; set; }
+		public WampCallbackArgs authenticateCallback { get; set; }
+		public WampCallbackArgs goodbyeCallback { get; set; }
+
+		public Dictionary<int, WampCallbackArgs> publishCallback { get; set; }
+		public Dictionary<int, WampCallbackArgs> subscribeCallback { get; set; }
+		public Dictionary<int, WampCallbackArgs> unsubscribeCallback { get; set; }
+		public Dictionary<int, WampCallbackArgs> callCallback { get; set; }
+		public Dictionary<int, WampCallbackArgs> cancelCallback { get; set; }
+		public Dictionary<int, WampCallbackArgs> registerCallback { get; set; }
+		public Dictionary<int, WampCallbackArgs> unregisterCallback { get; set; }
+		public Dictionary<int, WampCallbackArgs> eventCallback { get; set; }
+		public Dictionary<int, WampCallbackArgs> invocationCallback { get; set; }
+		public Dictionary<int, WampCallbackArgs> interruptCallback { get; set; }
+
+		//delete
+		public void deleteOpenCallback()
+		{
+			openCallback = null;
+		}
+		public void deleteCloseCallback()
+		{
+			closeCallback = null;
+		}
+		public void deleteHeartbeatCallback()
+		{
+			heartbeatCallback = null;
+		}
+		public void deleteHelloCallback()
+		{
+			helloCallback = null;
+		}
+		public void deleteAuthenticateCallback()
+		{
+			authenticateCallback = null;
+		}
+		public void deleteGoodbyeCallback()
+		{
+			goodbyeCallback = null;
+		}
+		public void deletePublishCallback(int request)
+		{
+			publishCallback[request] = null;
+		}
+		public void deleteSubscribeCallback(int request)
+		{
+			subscribeCallback[request] = null;
+		}
+		public void deleteUnsubscribeCallback(int request)
+		{
+			unsubscribeCallback[request] = null;
+		}
+		public void deleteCallCallback(int request)
+		{
+			callCallback[request] = null;
+		}
+		public void deleteCancelCallback(int request)
+		{
+			cancelCallback[request] = null;
+		}
+		public void deleteRegisterCallback(int request)
+		{
+			registerCallback[request] = null;
+		}
+		public void deleteUnregisterCallback(int request)
+		{
+			unregisterCallback[request] = null;
+		}
+		public void deleteEventCallback(int request)
+		{
+			eventCallback[request] = null;
+		}
+		public void deleteInvocationCallback(int request)
+		{
+			invocationCallback[request] = null;
+		}
+		public void deleteInterruptCallback(int request)
+		{
+			interruptCallback[request] = null;
+		}
+
+		//
+		public WampClientCore()
+		{
+			openCallback = null;
+			closeCallback = null;
+			heartbeatCallback = null;
+			helloCallback = null;
+			authenticateCallback = null;
+			goodbyeCallback = null;
+			publishCallback = new Dictionary<int, WampCallbackArgs>();
+			subscribeCallback = new Dictionary<int, WampCallbackArgs>();
+			unsubscribeCallback = new Dictionary<int, WampCallbackArgs>();
+			callCallback = new Dictionary<int, WampCallbackArgs>();
+			cancelCallback = new Dictionary<int, WampCallbackArgs>();
+			registerCallback = new Dictionary<int, WampCallbackArgs>();
+			unregisterCallback = new Dictionary<int, WampCallbackArgs>();
+			eventCallback = new Dictionary<int, WampCallbackArgs>();
+			invocationCallback = new Dictionary<int, WampCallbackArgs>();
+			interruptCallback = new Dictionary<int, WampCallbackArgs>();
+		}
+	}
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WampDeserializer.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WampDeserializer.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WampDeserializer.cs	(revision 101)
@@ -0,0 +1,220 @@
+// ------------------------------------------------------------------------------
+//  <autogenerated>
+//      This code was generated by a tool.
+//      Mono Runtime Version: 4.0.30319.1
+// 
+//      Changes to this file may cause incorrect behavior and will be lost if 
+//      the code is regenerated.
+//  </autogenerated>
+// ------------------------------------------------------------------------------
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Serialization;
+using System.Diagnostics;
+
+namespace Kadecot
+{
+	public class WampDeserializer
+	{
+		public WampDeserializer()
+		{
+		}
+
+		public static object Parse(string msg)
+		{
+			object data;
+			if (msg == null || msg.Equals("")) throw new ArgumentNullException();
+
+			Debug.WriteLine("[wamp perser] message received" + msg);
+			data = Json.Parse(msg);
+			if (!(data is IList<object>) ||
+				((data is IList<object>) && ((List<object>)data).Count < 2)) {
+				return null;
+			}
+			List<object> list = (List<object>)data;
+			switch ((Int64)(list[0])) {
+			case (Int64)WAMP_MSG_TYPE.HELLO:
+				// WAMP SPEC: [HELLO, Realm|uri, Details|dict]
+				if (((List<object>)data).Count < 3) {
+					return null;
+				}
+				break;
+			case (Int64)WAMP_MSG_TYPE.WELCOME:
+				// WAMP SPEC: [WELCOME, Session|id, Details|dict]
+				if (((List<object>)data).Count < 3) {
+					return null;
+				}
+				break;
+			case (Int64)WAMP_MSG_TYPE.ABORT:
+				// WAMP SPEC: [ABORT, Details|dict, Reason|uri]
+				if (((List<object>)data).Count < 3) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.CHALLENGE:
+				// advanced WAMP SPEC: [CHALLENGE, AuthMethod|string, Extra|dict]
+				if (((List<object>)data).Count < 3) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.AUTHENTICATE:
+				// advanced WAMP SPEC: [CHALLENGE, AuthMethod|string, Extra|dict]
+				if (((List<object>)data).Count < 3) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.GOODBYE:
+				// WAMP SPEC: [GOODBYE, Details|dict, Reason|uri]
+				if (((List<object>)data).Count < 3) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.HEARTBEAT:
+				// advanced WAMP SPEC: [AUTHENTICATE, Signature|string, Extra|dict]
+				if (((List<object>)data).Count < 3) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.ERROR:
+				// WAMP SPEC: [ERROR, REQUEST.Type|int, REQUEST.Request|id, Details|dict, Error|uri, (Arguments|list, ArgumentsKw|dict)]
+				if (((List<object>)data).Count < 5) {
+					return null;
+				}
+				switch ((int)((List<object>)data)[1]) {
+				case (int)WAMP_MSG_TYPE.GOODBYE:// add QUnit test
+				case (int)WAMP_MSG_TYPE.YIELD:// add QUnit test
+				case (int)WAMP_MSG_TYPE.ERROR:// add QUnit test
+				case (int)WAMP_MSG_TYPE.SUBSCRIBE:
+				case (int)WAMP_MSG_TYPE.UNSUBSCRIBE:
+				case (int)WAMP_MSG_TYPE.PUBLISH:
+				case (int)WAMP_MSG_TYPE.INVOCATION:
+				case (int)WAMP_MSG_TYPE.CALL:
+					break;
+				case (int)WAMP_MSG_TYPE.REGISTER:
+				case (int)WAMP_MSG_TYPE.UNREGISTER:
+					// WAMP SPEC: [ERROR, REGISTER, REGISTER.Request|id, Details|dict, Error|uri]
+					break;
+				default:
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.PUBLISH:
+				// WAMP SPEC: [PUBLISH, Request|id, Options|dict, Topic|uri]
+				// WAMP SPEC: [PUBLISH, Request|id, Options|dict, Topic|uri, Arguments|list]
+				// WAMP SPEC: [PUBLISH, Request|id, Options|dict, Topic|uri, Arguments|list, ArgumentsKw|dict]
+				if (((List<object>)data).Count < 4) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.PUBLISHED:
+				// WAMP SPEC: [PUBLISHED, PUBLISH.Request|id, Publication|id]
+				if (((List<object>)data).Count < 3) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.SUBSCRIBE:
+				// WAMP SPEC: [SUBSCRIBE, Request|id, Options|dict, Topic|uri]
+				if (((List<object>)data).Count < 4) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.SUBSCRIBED:
+				// WAMP SPEC: [SUBSCRIBED, SUBSCRIBE.Request|id, Subscription|id]
+				if (((List<object>)data).Count < 3) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.UNSUBSCRIBE:
+				// WAMP SPEC: [UNSUBSCRIBE, Request|id, SUBSCRIBED.Subscription|id]
+				if (((List<object>)data).Count < 3) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.UNSUBSCRIBED:
+				// WAMP SPEC: [UNSUBSCRIBED, UNSUBSCRIBE.Request|id]
+				if (((List<object>)data).Count < 2) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.EVENT:
+				// WAMP SPEC: [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict]
+				// WAMP SPEC: [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict, PUBLISH.Arguments|list]
+				// WAMP SPEC: [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict, PUBLISH.Arguments|list, PUBLISH.ArgumentKw|dict]
+				if (((List<object>)data).Count < 4) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.CALL:
+				// WAMP SPEC: [CALL, Request|id, Options|dict, Procedure|uri]
+				// WAMP SPEC: [CALL, Request|id, Options|dict, Procedure|uri, Arguments|list]
+				// WAMP SPEC: [CALL, Request|id, Options|dict, Procedure|uri, Arguments|list, ArgumentsKw|dict]
+				if (((List<object>)data).Count < 4) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.CANCEL:
+				// advanced WAMP SPEC: [CANCEL, CALL.Request|id, Options|dict]
+				if (((List<object>)data).Count < 3) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.RESULT:
+				// WAMP SPEC: [RESULT, CALL.Request|id, Details|dict]
+				// WAMP SPEC: [RESULT, CALL.Request|id, Details|dict, YIELD.Arguments|list]
+				// WAMP SPEC: [RESULT, CALL.Request|id, Details|dict, YIELD.Arguments|list, YIELD.ArgumentsKw|dict]
+				if (((List<object>)data).Count < 3) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.REGISTER:
+				// WAMP SPEC: [REGISTER, Request|id, Options|dict, Procedure|uri]
+				if (((List<object>)data).Count < 4) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.REGISTERED:
+				// WAMP SPEC: [REGISTERED, REGISTER.Request|id, Registration|id]
+				if (((List<object>)data).Count < 3) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.UNREGISTER:
+				// WAMP SPEC: [UNREGISTER, Request|id, REGISTERED.Registration|id]
+				if (((List<object>)data).Count < 3) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.UNREGISTERED:
+				// WAMP SPEC: [UNREGISTERED, UNREGISTER.Request|id]
+				if (((List<object>)data).Count < 2) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.INVOCATION:
+				// WAMP SPEC: [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict]
+				// WAMP SPEC: [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict, CALL.Arguments|list]
+				// WAMP SPEC: [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict, CALL.Arguments|list, CALL.ArgumentsKw|dict]
+				if (((List<object>)data).Count < 4) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.INTERRUPT:
+				// advanced WAMP SPEC: [INTERRUPT, INVOCATION.Request|id, Options|dict]
+				if (((List<object>)data).Count < 3) {
+					return null;
+				}
+				break;
+			case (int)WAMP_MSG_TYPE.YIELD:
+				// WAMP SPEC: [YIELD, INVOCATION.Request|id, Options|dict, (Arguments|list, ArgumentsKw|dict)]
+				if (((List<object>)data).Count < 3) {
+					return null;
+				}
+				break;
+			default:
+				return null;
+			}
+			return data;
+		}
+	}
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WampSerializer.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WampSerializer.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WampSerializer.cs	(revision 101)
@@ -0,0 +1,550 @@
+// ------------------------------------------------------------------------------
+//  <autogenerated>
+//      This code was generated by a tool.
+//      Mono Runtime Version: 4.0.30319.1
+// 
+//      Changes to this file may cause incorrect behavior and will be lost if 
+//      the code is regenerated.
+//  </autogenerated>
+// ------------------------------------------------------------------------------
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Serialization;
+
+namespace Kadecot
+{
+	public class WampSerializer
+	{
+		public static string createHello(string realm, string details)
+		{
+			string data;
+
+			if (realm == null || realm.Equals("")) {
+				throw new ArgumentNullException();
+			}
+			if (details == null || details.Equals("")) {
+				throw new ArgumentNullException();
+			}
+			object detailJson = Json.Parse(details);
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.HELLO);
+			list.Add(realm);
+			list.Add(detailJson);
+			data = Json.Stringify(list);
+			System.Diagnostics.Debug.WriteLine("[wamp][HELLO] " + data);
+			return data;
+		}
+
+
+		public static string createWelcome(int session, string details)
+		{
+			string data;
+
+			object detailJson = Json.Parse(details);
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.WELCOME);
+			list.Add(session);
+			list.Add(detailJson);
+			data = Json.Stringify(list);
+			System.Diagnostics.Debug.WriteLine("[wamp][WELCOME] " + data);
+			return data;
+		}
+
+		public static string createAbort(string details, string reason)
+		{
+			string data;
+			if (details == null || details.Equals("")) {
+				throw new ArgumentNullException();
+			}
+			if (reason == null || reason.Equals("")) {
+				throw new ArgumentNullException();
+			}
+
+			object detailJson = Json.Parse(details);
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.ABORT);
+			list.Add(detailJson);
+			list.Add(reason);
+			data = Json.Stringify(list);
+			System.Diagnostics.Debug.WriteLine("[wamp][ABORT] " + data);
+			return data;
+		}
+
+		public static string createChallenge(string authMethod, string extra)
+		{
+			string data;
+			if (authMethod == null || authMethod.Equals("")) {
+				throw new ArgumentNullException();
+			}
+			if (extra == null || extra.Equals("")) {
+				throw new ArgumentNullException();
+			}
+
+			object extraJson = Json.Parse(extra);
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.CHALLENGE);
+			list.Add(authMethod);
+			list.Add(extraJson);
+			data = Json.Stringify(list);
+			System.Diagnostics.Debug.WriteLine("[wamp][CHALLENGE] " + data);
+			return data;
+		}
+
+		public static string createAuthenticate(string signature, string extra)
+		{
+			string data;
+			if (signature == null || signature.Equals("")) {
+				throw new ArgumentNullException();
+			}
+			if (extra == null || extra.Equals("")) {
+				throw new ArgumentNullException();
+			}
+
+			object extraJson = Json.Parse(extra);
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.AUTHENTICATE);
+			list.Add(signature);
+			list.Add(extraJson);
+			data = Json.Stringify(list);
+			System.Diagnostics.Debug.WriteLine("[wamp][AUTHENTICATE] " + data);
+			return data;
+		}
+
+		public static string createGoodbye(string details, string reason)
+		{
+			string data;
+			if (details == null || details.Equals("")) {
+				throw new ArgumentNullException();
+			}
+			if (reason == null) {
+				throw new ArgumentNullException();
+			}
+
+			object detailJson = Json.Parse(details);
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.GOODBYE);
+			list.Add(detailJson);
+			list.Add(reason);
+			data = Json.Stringify(list);
+			System.Diagnostics.Debug.WriteLine("[wamp][GOODBYE] " + data);
+			return data;
+		}
+
+		public static string createHeartbeat(int incomingSeq, int outgoingSeq, string discard)
+		{
+			string data;
+
+			IList<object> list = new List<object>();
+			if (discard == null || discard.Equals("")) {
+				list.Add((int)WAMP_MSG_TYPE.HEARTBEAT);
+				list.Add(incomingSeq);
+				list.Add(outgoingSeq);
+				data = Json.Stringify(list);
+			}
+			else {
+				list.Add((int)WAMP_MSG_TYPE.HEARTBEAT);
+				list.Add(incomingSeq);
+				list.Add(outgoingSeq);
+				list.Add(discard);
+				data = Json.Stringify(list);
+			}
+
+			System.Diagnostics.Debug.WriteLine("[wamp][HEARTBEAT] " + data);
+			return data;
+		}
+
+		public static string createError(int type, int request, string details, string error, string arguments, string argumentsKw)
+		{
+			string data;
+			if (details == null || details.Equals("")) {
+				throw new ArgumentNullException();
+			}
+			if (error == null || error.Equals("")) {
+				throw new ArgumentNullException();
+			}
+
+			object detailJson = Json.Parse(details);
+			object argsJson = Json.Parse(arguments);
+			object argsKwJson = Json.Parse(argumentsKw);
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.ERROR);
+			list.Add(type);
+			list.Add(request);
+			list.Add(detailJson);
+			list.Add(error);
+			if (arguments != null && argumentsKw == null) {
+				list.Add(argsJson);
+			}
+			else if (arguments != null && argumentsKw != null) {
+				list.Add(argsJson);
+				list.Add(argsKwJson);
+			}
+			data = Json.Stringify(list);
+
+			System.Diagnostics.Debug.WriteLine("[wamp][ERROR] " + data);
+			return data;
+		}
+
+		public static string createPublish(int request, string options, string topic, string arguments, string argumentsKw)
+		{
+			string data;
+			if (options == null || options.Equals("")) {
+				throw new ArgumentNullException();
+			}
+			if (topic == null || topic.Equals("")) {
+				throw new ArgumentNullException();
+			}
+
+			object optJson = Json.Parse(options);
+			object argsJson = Json.Parse(arguments);
+			object argsKwJson = Json.Parse(argumentsKw);
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.PUBLISH);
+			list.Add(request);
+			list.Add(optJson);
+			list.Add(topic);
+			if (arguments != null && argumentsKw == null) {
+				list.Add(argsJson);
+			}
+			else if (arguments != null && argumentsKw != null) {
+				list.Add(argsJson);
+				list.Add(argsKwJson);
+			}
+			data = Json.Stringify(list);
+
+			System.Diagnostics.Debug.WriteLine("[wamp][PUBLISH] " + data);
+			return data;
+		}
+
+		public static string createPublished(int request, int publication)
+		{
+			string data;
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.PUBLISHED);
+			list.Add(request);
+			list.Add(publication);
+			data = Json.Stringify(list);
+			System.Diagnostics.Debug.WriteLine("[wamp][PUBLISHED] " + data);
+			return data;
+		}
+
+		public static string createSubscribe(int request, string options, string topic)
+		{
+			string data;
+			if (options == null || options.Equals("")) {
+				throw new ArgumentNullException();
+			}
+			if (topic == null || topic.Equals("")) {
+				throw new ArgumentNullException();
+			}
+
+			object optJson = Json.Parse(options);
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.SUBSCRIBE);
+			list.Add(request);
+			list.Add(optJson);
+			list.Add(topic);
+			data = Json.Stringify(list);
+			System.Diagnostics.Debug.WriteLine("[wamp][SUBSCRIBE] " + data);
+			return data;
+		}
+
+		public static string createSubscribed(int request, int subscription)
+		{
+			string data;
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.SUBSCRIBED);
+			list.Add(request);
+			list.Add(subscription);
+			data = Json.Stringify(list);
+			System.Diagnostics.Debug.WriteLine("[wamp][SUBSCRIBED] " + data);
+			return data;
+		}
+
+		public static string createUnsubscribe(int request, int subscription)
+		{
+			string data;
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.UNSUBSCRIBE);
+			list.Add(request);
+			list.Add(subscription);
+			//			list.Add ("com.sonycsl.kadecot.echonetlite.procedure.set.topic.HomeAirConditioner.OperationStatus");
+			data = Json.Stringify(list);
+			System.Diagnostics.Debug.WriteLine("[wamp][UNSUBSCRIBE] " + data);
+			return data;
+		}
+
+		public static string createUnsubscribed(int request)
+		{
+			string data;
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.UNSUBSCRIBED);
+			list.Add(request);
+			data = Json.Stringify(list);
+			System.Diagnostics.Debug.WriteLine("[wamp][UNSUBSCRIBED] " + data);
+			return data;
+		}
+
+		public static string createEvent(int subscription, int publication, string details, string arguments, string argumentsKw)
+		{
+			string data;
+			if (details == null || details.Equals("")) {
+				throw new ArgumentNullException();
+			}
+
+			object detailJson = Json.Parse(details);
+			object argsJson = Json.Parse(arguments);
+			object argsKwJson = Json.Parse(argumentsKw);
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.EVENT);
+			list.Add(subscription);
+			list.Add(publication);
+			list.Add(detailJson);
+			if (arguments != null && argumentsKw == null) {
+				list.Add(argsJson);
+			}
+			else if (arguments != null && argumentsKw != null) {
+				list.Add(argsJson);
+				list.Add(argsKwJson);
+			}
+			data = Json.Stringify(list);
+
+			System.Diagnostics.Debug.WriteLine("[wamp][EVENT] " + data);
+			return data;
+		}
+        /// <summary>
+        /// NCAg©çébZ[Wðì¬µÜ·
+        /// </summary>
+        /// <param name="request">NGXgÔ</param>
+        /// <param name="options">IvV</param>
+        /// <param name="procedure"></param>
+        /// <param name="arguments"></param>
+        /// <param name="argumentsKw"></param>
+        /// <returns></returns>
+		public static string createCall(int request, string options, string procedure, string arguments, string argumentsKw)
+		{
+			string data;
+			if (options == null || options.Equals("")) {
+				throw new ArgumentNullException();
+			}
+			if (procedure == null || procedure.Equals("")) {
+				throw new ArgumentNullException();
+			}
+
+			object optionJson = Json.Parse(options);
+			object argsJson = Json.Parse(arguments);
+			object argsKwJson = Json.Parse(argumentsKw);
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.CALL);
+			list.Add(request);
+			list.Add(optionJson);
+			list.Add(procedure);
+			if (arguments != null && argumentsKw == null) {
+				list.Add(argsJson);
+			}
+			else if (arguments != null && argumentsKw != null) {
+				list.Add(argsJson);
+				list.Add(argsKwJson);
+			}
+			data = Json.Stringify(list);
+
+			System.Diagnostics.Debug.WriteLine("[wamp][CALL] " + data);
+			return data;
+		}
+
+		public static string createCancel(int request, string options)
+		{
+			string data;
+			if (options == null || options.Equals("")) {
+				throw new ArgumentNullException();
+			}
+
+			object optionJson = Json.Parse(options);
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.CANCEL);
+			list.Add(request);
+			list.Add(optionJson);
+			data = Json.Stringify(list);
+			System.Diagnostics.Debug.WriteLine("[wamp][CANCEL] " + data);
+			return data;
+		}
+
+		public static string createResult(int request, string details, string arguments, string argumentsKw)
+		{
+			string data;
+			if (details == null || details.Equals("")) {
+				throw new ArgumentNullException();
+			}
+
+			object detailJson = Json.Parse(details);
+			object argsJson = Json.Parse(arguments);
+			object argsKwJson = Json.Parse(argumentsKw);
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.RESULT);
+			list.Add(request);
+			list.Add(detailJson);
+			if (arguments != null && argumentsKw == null) {
+				list.Add(argsJson);
+			}
+			else if (arguments != null && argumentsKw != null) {
+				list.Add(argsJson);
+				list.Add(argsKwJson);
+			}
+			data = Json.Stringify(list);
+
+			System.Diagnostics.Debug.WriteLine("[wamp][RESULT] " + data);
+			return data;
+		}
+
+		public static string createRegister(int request, string options, string procedure)
+		{
+			string data;
+			if (options == null || options.Equals("")) {
+				throw new ArgumentNullException();
+			}
+			if (procedure == null || procedure.Equals("")) {
+				throw new ArgumentNullException();
+			}
+
+			object optJson = Json.Parse(options);
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.REGISTER);
+			list.Add(request);
+			list.Add(optJson);
+			list.Add(procedure);
+			data = Json.Stringify(list);
+			System.Diagnostics.Debug.WriteLine("[wamp][REGISTER] " + data);
+			return data;
+		}
+
+		public static string createRegistered(int request, int registration)
+		{
+			string data;
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.REGISTERED);
+			list.Add(request);
+			list.Add(registration);
+			data = Json.Stringify(list);
+			System.Diagnostics.Debug.WriteLine("[wamp][REGISTERED] " + data);
+			return data;
+		}
+
+		public static string createUnregister(int request, int registration)
+		{
+			string data;
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.UNREGISTER);
+			list.Add(request);
+			list.Add(registration);
+			data = Json.Stringify(list);
+			System.Diagnostics.Debug.WriteLine("[wamp][UNREGISTER] " + data);
+			return data;
+		}
+
+		public static string createUnregistered(int request)
+		{
+			string data;
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.UNREGISTERED);
+			list.Add(request);
+			data = Json.Stringify(list);
+			System.Diagnostics.Debug.WriteLine("[wamp][UNREGISTERED] " + data);
+			return data;
+		}
+
+		public static string createInvocation(int request, int registration, string details, string arguments, string argumentsKw)
+		{
+			string data;
+			if (details == null || details.Equals("")) {
+				throw new ArgumentNullException();
+			}
+
+			object detailJson = Json.Parse(details);
+			object argsJson = Json.Parse(arguments);
+			object argsKwJson = Json.Parse(argumentsKw);
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.INVOCATION);
+			list.Add(request);
+			list.Add(registration);
+			list.Add(detailJson);
+			if (arguments != null && argumentsKw == null) {
+				list.Add(argsJson);
+			}
+			else if (arguments != null && argumentsKw != null) {
+				list.Add(argsJson);
+				list.Add(argsKwJson);
+			}
+			data = Json.Stringify(list);
+
+			System.Diagnostics.Debug.WriteLine("[wamp][INVOCATION] " + data);
+			return data;
+		}
+
+		public static string createInterrupt(int request, string options)
+		{
+			string data;
+			if (options == null || options.Equals("")) {
+				throw new ArgumentNullException();
+			}
+
+			object optJson = Json.Parse(options);
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.INTERRUPT);
+			list.Add(request);
+			list.Add(optJson);
+			data = Json.Stringify(list);
+			System.Diagnostics.Debug.WriteLine("[wamp][INTERRUPT] " + data);
+			return data;
+		}
+
+		public static string createYield(int request, string options, string arguments, string argumentsKw)
+		{
+			string data;
+			if (options == null || options.Equals("")) {
+				throw new ArgumentNullException();
+			}
+
+			object optJson = Json.Parse(options);
+			object argsJson = Json.Parse(arguments);
+			object argsKwJson = Json.Parse(argumentsKw);
+
+			IList<object> list = new List<object>();
+			list.Add((int)WAMP_MSG_TYPE.YIELD);
+			list.Add(request);
+			list.Add(optJson);
+			if (arguments != null && argumentsKw == null) {
+				list.Add(argsJson);
+			}
+			else if (arguments != null && argumentsKw != null) {
+				list.Add(argsJson);
+				list.Add(argsKwJson);
+			}
+			data = Json.Stringify(list);
+			System.Diagnostics.Debug.WriteLine("[wamp][YIELD] " + data);
+			return data;
+		}
+
+	}
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/Web.Debug.config
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/Web.Debug.config	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/Web.Debug.config	(revision 101)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- web.config å¤æã®è©³ç´°ã«ã¤ãã¦ã¯ãhttp://go.microsoft.com/fwlink/?LinkId=125889 ãåç
+§ãã¦ãã ããã -->
+
+<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
+  <!--
+    æ¬¡ã®ä¾ã§ã¯ã"MyDB" ã¨ããå¤ãæã¤ "name" å±æ§ã "Match" ã­ã±ã¼ã¿ã¼ã§
+    è¦ã¤ãã£ãå ´åã«ã®ã¿ã"SetAttributes" å¤æã«ãã£ã¦ "connectionString" ã®
+    å¤ã "ReleaseSQLServer" ãä½¿ç¨ããããã«å¤æ´ããã¾ãã
+    
+    <connectionStrings>
+      <add name="MyDB" 
+        connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" 
+        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
+    </connectionStrings>
+  -->
+  <system.web>
+    <!--
+      
+      æ¬¡ã®ä¾ã§ã¯ãweb.config ãã¡ã¤ã«ã® <customErrors> ã»ã¯ã·ã§ã³å
+¨ä½ã 
+      "Replace" å¤æã«ãã£ã¦ç½®ãæãããã¾ãã
+      <system.web> ãã¼ãã«ã¯ customErrors ã»ã¯ã·ã§ã³ã 1 ã¤ãããªãããã
+      "xdt:Locator" å±æ§ãä½¿ç¨ããå¿
+è¦ã¯ããã¾ããã
+      
+      <customErrors defaultRedirect="GenericError.htm"
+        mode="RemoteOnly" xdt:Transform="Replace">
+        <error statusCode="500" redirect="InternalError.htm"/>
+      </customErrors>
+    >
+    -->
+  </system.web>
+</configuration>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/Web.Release.config
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/Web.Release.config	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/Web.Release.config	(revision 101)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- web.config å¤æã®è©³ç´°ã«ã¤ãã¦ã¯ãhttp://go.microsoft.com/fwlink/?LinkId=125889 ãåç
+§ãã¦ãã ããã -->
+
+<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
+  <!--
+    æ¬¡ã®ä¾ã§ã¯ã"MyDB" ã¨ããå¤ãæã¤ "name" å±æ§ã "Match" ã­ã±ã¼ã¿ã¼ã§
+    è¦ã¤ãã£ãå ´åã«ã®ã¿ã"SetAttributes" å¤æã«ãã£ã¦ "connectionString" ã®
+    å¤ã "ReleaseSQLServer" ãä½¿ç¨ããããã«å¤æ´ããã¾ãã
+    
+    <connectionStrings>
+      <add name="MyDB" 
+        connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" 
+        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
+    </connectionStrings>
+  -->
+  <system.web>
+    <compilation xdt:Transform="RemoveAttributes(debug)" />
+    <!--
+      
+      æ¬¡ã®ä¾ã§ã¯ãweb.config ãã¡ã¤ã«ã® <customErrors> ã»ã¯ã·ã§ã³å
+¨ä½ã 
+      "Replace" å¤æã«ãã£ã¦ç½®ãæãããã¾ãã
+      <system.web> ãã¼ãã«ã¯ customErrors ã»ã¯ã·ã§ã³ã 1 ã¤ãããªãããã
+      "xdt:Locator" å±æ§ãä½¿ç¨ããå¿
+è¦ã¯ããã¾ããã
+      
+      <customErrors defaultRedirect="GenericError.htm"
+        mode="RemoteOnly" xdt:Transform="Replace">
+        <error statusCode="500" redirect="InternalError.htm"/>
+      </customErrors>
+    >
+    -->
+  </system.web>
+</configuration>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/Web.config
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/Web.config	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/Web.config	(revision 101)
@@ -0,0 +1,14 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  ASP.NET アプリケーションの構成方法の詳細については、
+  http://go.microsoft.com/fwlink/?LinkId=169433 を参照してください
+  -->
+
+<configuration>
+    <system.web>
+      <compilation debug="true" targetFramework="4.5" />
+      <httpRuntime targetFramework="4.5" />
+    </system.web>
+
+</configuration>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WebApiData.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WebApiData.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WebApiData.cs	(revision 101)
@@ -0,0 +1,445 @@
+﻿/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ * 
+ *  上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id$
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Serialization;
+using System.Text;
+using System.Web;
+
+namespace ctrlui
+{
+	public class WebApiPropertyInfo
+	{
+		public byte epc;
+		public EPC_FLAG flag;
+
+		public WebApiPropertyInfo(dynamic prop)
+		{
+			epc = prop.epc;
+			flag = EPC_FLAG.NONE;
+			string temp = prop.flag;
+			if (temp.Contains("RULE_ANNO"))
+				flag |= EPC_FLAG.RULE_ANNO;
+			if (temp.Contains("RULE_SET"))
+				flag |= EPC_FLAG.RULE_SET;
+			if (temp.Contains("RULE_GET"))
+				flag |= EPC_FLAG.RULE_GET;
+			if (temp.Contains("ANNOUNCE"))
+				flag |= EPC_FLAG.ANNOUNCE;
+			if (temp.Contains("VARIABLE"))
+				flag |= EPC_FLAG.VARIABLE;
+		}
+	}
+
+	public class WebApiObjectInfo
+	{
+		public bool profile;
+		public byte x1;
+		public byte x2;
+		public byte x3;
+		public int eobjid;
+		public int enodid;
+		public List<WebApiPropertyInfo> properties = new List<WebApiPropertyInfo>();
+
+		public WebApiObjectInfo(int eobjid, dynamic obj, bool profile)
+		{
+			this.eobjid = eobjid;
+			this.profile = profile;
+			x1 = obj.x1;
+			x2 = obj.x2;
+			x3 = obj.x3;
+			enodid = obj.enodid;
+
+			foreach (var prop in (dynamic[])obj.properties) {
+				properties.Add(new WebApiPropertyInfo(prop));
+			}
+		}
+	}
+
+	public class WebApiPropertyCode
+	{
+		public byte epc;
+
+		public WebApiPropertyCode(dynamic prop, bool dummy)
+		{
+			epc = prop.epc;
+		}
+		/// <summary>
+		/// コンストラクタ
+		/// </summary>
+		/// <param name="epc">PropertyCode</param>
+		public WebApiPropertyCode(byte epc)
+		{
+			this.epc = epc;
+		}
+	}
+
+	public class WebApiPropertyData
+	{
+		public byte epc;
+		public string edt;
+
+		public WebApiPropertyData(dynamic prop)
+		{
+			byte[] _edt;
+
+			epc = prop.epc;
+
+			string text = prop.edt;
+
+			if (text.Length > 0) {
+				_edt = new byte[text.Length / 2];
+
+				for (int i = 0, j = 0; j < text.Length; j += 2) {
+
+					_edt[i++] = Byte.Parse(text.Substring(j, 2), 16);
+				}
+			}
+			else {
+				_edt = new byte[0];
+			}
+
+			edt = SetEdt(_edt);
+		}
+
+		public WebApiPropertyData(byte epc, byte[] edt)
+		{
+			this.epc = epc;
+			this.edt = SetEdt(edt);
+		}
+
+		private string SetEdt(byte[] _edt)
+		{
+			var sb = new StringBuilder();
+
+			foreach (var b in _edt) {
+				sb.Append(b.ToString("X2"));
+			}
+
+			return sb.ToString();
+		}
+
+		internal byte[] GetEdt()
+		{
+			byte[] result = new byte[edt.Length / 2];
+
+			for (int i = 0, j = 0; j < edt.Length; i++, j += 2) {
+				result[i] = Byte.Parse(edt.Substring(j, 2), 16);
+			}
+			return result;
+		}
+	}
+
+	public class WebApiEchonetMessage
+	{
+		public byte esv;
+		public ENOD_ID sender;
+		public T_ECN_EOJ seoj = new T_ECN_EOJ(new byte[3], 0);
+		public T_ECN_EOJ deoj = new T_ECN_EOJ(new byte[3], 0);
+		public List<WebApiPropertyData> properties = new List<WebApiPropertyData>();
+
+		public WebApiEchonetMessage(dynamic esv)
+		{
+			this.esv = esv.esv;
+			sender = (ENOD_ID)esv.sender;
+			string sseoj = esv.seoj;
+			seoj.x1 = Byte.Parse(sseoj.Substring(0, 2), 16);
+			seoj.x2 = Byte.Parse(sseoj.Substring(2, 2), 16);
+			seoj.x3 = Byte.Parse(sseoj.Substring(4, 2), 16);
+
+			foreach (var prop in (dynamic[])esv.properties) {
+				properties.Add(new WebApiPropertyData(prop));
+			}
+		}
+	}
+
+	public class WebApiGrsaguraMessage
+	{
+		public int pin;
+		public string value;
+		public WebApiGrsaguraMessage(dynamic esv)
+		{
+			this.pin = esv.pin;
+			if (((object)esv.value).GetType() == typeof(double)) {
+				this.value = ((double)esv.value).ToString();
+			}
+			else {
+				this.value = esv.value;
+			}
+		}
+	}
+
+	public class WebApiSet
+	{
+		public ENOD_ID deojid;
+		public List<WebApiPropertyData> properties = new List<WebApiPropertyData>();
+
+		public WebApiSet()
+		{
+		}
+
+		public WebApiSet(dynamic esv)
+		{
+			deojid = (ENOD_ID)esv.deojid;
+
+			foreach (var prop in (dynamic[])esv.properties) {
+				properties.Add(new WebApiPropertyData(prop));
+			}
+		}
+
+		public void AddEdt(byte epc, byte[] edt)
+		{
+			properties.Add(new WebApiPropertyData(epc, edt));
+		}
+
+		public string GetJson()
+		{
+			return "{\"esv_set\":" + Json.Stringify(this) + "}";
+		}
+		/// <summary>
+		/// "{deviceId: }"を返します。
+		/// </summary>
+		/// <returns></returns>
+		public string GetOption()
+		{
+			return "{\"deviceId\":" + ((int)deojid).ToString() + "}";
+		}
+		/// <summary>
+		/// json形式にしたオブジェクト文字をかえします
+		/// </summary>
+		/// <returns></returns>
+		public string GetArguments()
+		{
+			return Json.Stringify(this);
+		}
+	}
+
+	/// <summary>
+	/// WebApiから値を取得するクラス
+	/// </summary>
+	public class WebApiGet
+	{
+		/// <summary>
+		/// deojid
+		/// </summary>
+		public ENOD_ID deojid;
+		public List<WebApiPropertyCode> properties = new List<WebApiPropertyCode>();
+
+		/// <summary>
+		/// コンストラクタ
+		/// </summary>
+		public WebApiGet()
+		{
+		}
+
+		public WebApiGet(dynamic esv)
+		{
+			deojid = (ENOD_ID)esv.deojid;
+
+			foreach (var prop in (dynamic[])esv.properties) {
+				properties.Add(new WebApiPropertyCode(prop, true));
+			}
+		}
+
+		/// <summary>
+		/// WebApiGet.propertiesに追加
+		/// </summary>
+		/// <param name="epc"></param>
+		public void AddEpc(byte epc)
+		{
+			properties.Add(new WebApiPropertyCode(epc));
+		}
+
+		public string GetJson()
+		{
+			return "{\"esv_get\":" + Json.Stringify(this) + "}";
+		}
+
+		/// <summary>
+		/// deviceIdを返します。
+		/// </summary>
+		/// <returns></returns>
+		public string GetOption()
+		{
+			return "{\"deviceId\":" + ((int)deojid).ToString() + "}";
+		}
+
+		/// <summary>
+		/// Json形式の文字列を返します
+		/// </summary>
+		/// <returns></returns>
+		public string GetArguments()
+		{
+			return Json.Stringify(this);
+		}
+	}
+
+	public class WebApiSetGet
+	{
+		public ENOD_ID deojid;
+		public List<WebApiPropertyData> setProperties = new List<WebApiPropertyData>();
+		public List<WebApiPropertyCode> getProperties = new List<WebApiPropertyCode>();
+
+		public WebApiSetGet()
+		{
+		}
+
+		public WebApiSetGet(dynamic esv)
+		{
+			deojid = (ENOD_ID)esv.deojid;
+
+			foreach (var prop in (dynamic[])esv.properties) {
+				getProperties.Add(new WebApiPropertyCode(prop, true));
+			}
+		}
+
+		public void AddEdt(byte epc, byte[] edt)
+		{
+			setProperties.Add(new WebApiPropertyData(epc, edt));
+		}
+
+		public void AddEpc(byte epc)
+		{
+			getProperties.Add(new WebApiPropertyCode(epc));
+		}
+
+		public string GetJson()
+		{
+			return "{\"esv_set_get\":" + Json.Stringify(this) + "}";
+		}
+
+		public string GetOption()
+		{
+			return "{\"deviceId\":" + ((int)deojid).ToString() + "}";
+		}
+
+		public string GetArguments()
+		{
+			return Json.Stringify(this);
+		}
+	}
+
+	public class WampApiKadecotDevice
+	{
+		public string description;
+		public int deviceId;
+		public string deviceType;
+		/// <summary>
+		/// ipアドレス
+		/// </summary>
+		public string ip_addr;
+		public string nickname;
+		public string protocol;
+		public bool status;
+
+		public WampApiKadecotDevice(dynamic doc)
+		{
+			description = (string)doc.description;
+			deviceId = (int)doc.deviceId;
+			deviceType = (string)doc.deviceType;
+			ip_addr = (string)doc.ip_addr;
+			nickname = (string)doc.nickname;
+			protocol = (string)doc.protocol;
+			status = (bool)doc.status;
+		}
+	}
+
+	public class WampApiKadecotSet
+	{
+		public int deviceId;
+		public string propertyName;
+		public byte[] propertyValue;
+
+		public WampApiKadecotSet(int deviceId, string propertyName, byte[] propertyValue)
+		{
+			this.deviceId = deviceId;
+			this.propertyName = propertyName;
+			this.propertyValue = propertyValue;
+		}
+
+		internal string GetOption()
+		{
+			return "{\"deviceId\":" + ((int)deviceId).ToString() + "}";
+		}
+
+		internal string GetArguments()
+		{
+			return "{\"propertyName\":\"" + propertyName + "\",\"propertyValue\":" + Json.Stringify(propertyValue) + "}";
+		}
+	}
+
+	public class WampApiKadecotGet
+	{
+		public int deviceId;
+		public string propertyName;
+
+		public WampApiKadecotGet(int deviceId, string propertyName)
+		{
+			this.deviceId = deviceId;
+			this.propertyName = propertyName;
+		}
+
+		internal string GetOption()
+		{
+			return "{\"deviceId\":" + ((int)deviceId).ToString() + "}";
+		}
+
+		internal string GetArguments()
+		{
+			return "{\"propertyName\":\"" + propertyName + "\"}";
+		}
+	}
+
+	public class WampApiKadecotRes
+	{
+		public string propertyName;
+		public byte[] propertyValue;
+
+		public WampApiKadecotRes(dynamic item)
+		{
+			this.propertyName = (string)item.propertyName;
+			if (((object)item).GetType().GetProperty("propertyValue") != null) {
+				this.propertyValue = (byte[])item.propertyValue;
+			}
+			else {
+				this.propertyValue = new byte[0];
+			}
+		}
+	}
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/jQueryMobile.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/jQueryMobile.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/jQueryMobile.cs	(revision 101)
@@ -0,0 +1,243 @@
+﻿/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ * 
+ *  上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id$
+ */
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Html;
+using System.Text;
+using jQueryApi;
+
+public static class jQueryMobile
+{
+    [System.Runtime.CompilerServices.InlineCode("{obj}.collapsibleset({})")]
+    public static jQueryObject CollapsibleSet(this jQueryObject obj)
+    {
+        return ((dynamic)obj).collapsibleset();
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.collapsibleset({p})")]
+    public static void CollapsibleSet(this jQueryObject obj, string p)
+    {
+        ((dynamic)obj).collapsibleset(p);
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.popup({p1}, {p2})")]
+    public static void Popup(this jQueryObject obj, string p1, object p2)
+    {
+        ((dynamic)obj).popup(p1, p2);
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.listview()")]
+    public static jQueryObject ListView(this jQueryObject obj)
+    {
+        return ((dynamic)obj).listview();
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.listview({p})")]
+    public static void ListView(this jQueryObject obj, string p)
+    {
+        ((dynamic)obj).listview(p);
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.tabs({p1}, {p2})")]
+    public static void Tabs(this jQueryObject obj, string p1, int p2)
+    {
+        ((dynamic)obj).tabs(p1, p2);
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.tabs({p1}, {p2}, {p3})")]
+    public static void Tabs(this jQueryObject obj, string p1, string p2, int p3)
+    {
+        ((dynamic)obj).tabs(p1, p2, p3);
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.checkboxradio()")]
+    public static jQueryObject CheckboxRadio(this jQueryObject obj)
+    {
+        return ((dynamic)obj).checkboxradio();
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.checkboxradio({p})")]
+    public static void CheckboxRadio(this jQueryObject obj, string p)
+    {
+        ((dynamic)obj).checkboxradio(p);
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.collapsible({p})")]
+    public static void Collapsible(this jQueryObject obj, string p)
+    {
+        ((dynamic)obj).collapsible(p);
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.button({p1}, {p2}, {p3})")]
+    public static void Button(this jQueryObject obj, string p1, string p2, object p3)
+    {
+        ((dynamic)obj).button(p1, p2, p3);
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.controlgroup()")]
+    public static jQueryObject ControlGroup(this jQueryObject obj)
+    {
+        return ((dynamic)obj).controlgroup();
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.controlgroup({p})")]
+    public static void ControlGroup(this jQueryObject obj, string p)
+    {
+        ((dynamic)obj).controlgroup(p);
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.textinput()")]
+    public static jQueryObject TextInput(this jQueryObject obj)
+    {
+        return ((dynamic)obj).textinput();
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.textinput({p})")]
+    public static void TextInput(this jQueryObject obj, string p)
+    {
+        ((dynamic)obj).textinput(p);
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.slider()")]
+    public static jQueryObject Slider(this jQueryObject obj)
+    {
+        return ((dynamic)obj).slider();
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.slider({p})")]
+    public static void Slider(this jQueryObject obj, string p)
+    {
+        ((dynamic)obj).slider(p);
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.flipswitch()")]
+    public static jQueryObject FlipSwitch(this jQueryObject obj)
+    {
+        return ((dynamic)obj).flipswitch();
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.flipswitch({p})")]
+    public static void FlipSwitch(this jQueryObject obj, string p)
+    {
+        ((dynamic)obj).flipswitch(p);
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.flipswitch({p1},{p2},{p3})")]
+    public static void FlipSwitch(this jQueryObject obj, string p1, string p2, string p3)
+    {
+        ((dynamic)obj).flipswitch(p1, p2, p3);
+    }
+    [System.Runtime.CompilerServices.InlineCode("$.mobile.loading({p1})")]
+    public static void Loading(string p1)
+    {
+
+    }
+    [System.Runtime.CompilerServices.InlineCode("$.mobile.loading({p1},{p2})")]
+    public static void Loading(string p1, JsDictionary p2)
+    {
+
+    }
+    [System.Runtime.CompilerServices.InlineCode("$.mobile.loading({p1},{p2})")]
+    public static void Loading(string p1, LoadingOption p2)
+    {
+
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.prop({p1},{p2})")]
+    public static jQueryObject Prop(this jQueryObject obj, string p1, bool p2)
+    {
+        return ((dynamic)obj).prop(p1, p2);
+    }
+    [System.Runtime.CompilerServices.InlineCode("{obj}.prop({p})")]
+    public static bool Prop(this jQueryObject obj, string p)
+    {
+        return ((dynamic)obj).prop(p);
+    }
+}
+
+public static class ElementExtensions
+{
+    [System.Runtime.CompilerServices.InlineCode("{obj}.value")]
+    public static string GetValue(this Element obj)
+    {
+        return ((dynamic)obj).value;
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.value = {value}")]
+    public static void SetValue(this Element obj, string value)
+    {
+        ((dynamic)obj).value = value;
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.checked")]
+    public static bool GetChecked(this Element obj)
+    {
+        return ((dynamic)obj).@checked;
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.checked = {checked}")]
+    public static void SetChecked(this Element obj, bool @checked)
+    {
+        ((dynamic)obj).@checked = @checked;
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.disabled")]
+    public static bool GetDisabled(this Element obj)
+    {
+        return ((dynamic)obj).disabled;
+    }
+
+    [System.Runtime.CompilerServices.InlineCode("{obj}.disabled = {disabled}")]
+    public static void SetDisabled(this Element obj, bool disabled)
+    {
+        ((dynamic)obj).disabled = disabled;
+    }
+}
+public class LoadingOption
+{
+    public LoadingOption()
+    { }
+    public LoadingOption(string text , bool textVisible)
+    {
+        this.text = text;
+        this.textVisible = textVisible;
+    }
+    public string text;
+    public bool textVisible;
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/packages.config
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/packages.config	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/packages.config	(revision 101)
@@ -0,0 +1,8 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Saltarelle.Compiler" version="2.6.2" targetFramework="net45" />
+  <package id="Saltarelle.jQuery" version="1.10.1" targetFramework="net45" />
+  <package id="Saltarelle.Linq" version="2.4.0" targetFramework="net20" />
+  <package id="Saltarelle.Runtime" version="2.6.2" targetFramework="net45" />
+  <package id="Saltarelle.Web" version="3.1.0" targetFramework="net45" />
+</packages>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/DynamicJson.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/DynamicJson.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/DynamicJson.cs	(revision 101)
@@ -0,0 +1,431 @@
+﻿/*--------------------------------------------------------------------------
+* DynamicJson
+* ver 1.2.0.0 (May. 21th, 2010)
+*
+* created and maintained by neuecc <ils@neue.cc>
+* licensed under Microsoft Public License(Ms-PL)
+* http://neue.cc/
+* http://dynamicjson.codeplex.com/
+*--------------------------------------------------------------------------*/
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Dynamic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.Serialization.Json;
+using System.Text;
+using System.Xml;
+using System.Xml.Linq;
+
+namespace Codeplex.Data
+{
+    public class DynamicJson : DynamicObject
+    {
+        private enum JsonType
+        {
+            @string, number, boolean, @object, array, @null
+        }
+
+        // public static methods
+
+        /// <summary>from JsonSring to DynamicJson</summary>
+        public static dynamic Parse(string json)
+        {
+            return Parse(json, Encoding.Unicode);
+        }
+
+        /// <summary>from JsonSring to DynamicJson</summary>
+        public static dynamic Parse(string json, Encoding encoding)
+        {
+            using (var reader = JsonReaderWriterFactory.CreateJsonReader(encoding.GetBytes(json), XmlDictionaryReaderQuotas.Max))
+            {
+                return ToValue(XElement.Load(reader));
+            }
+        }
+
+        /// <summary>from JsonSringStream to DynamicJson</summary>
+        public static dynamic Parse(Stream stream)
+        {
+            using (var reader = JsonReaderWriterFactory.CreateJsonReader(stream, XmlDictionaryReaderQuotas.Max))
+            {
+                return ToValue(XElement.Load(reader));
+            }
+        }
+
+        /// <summary>from JsonSringStream to DynamicJson</summary>
+        public static dynamic Parse(Stream stream, Encoding encoding)
+        {
+            using (var reader = JsonReaderWriterFactory.CreateJsonReader(stream, encoding, XmlDictionaryReaderQuotas.Max, _ => { }))
+            {
+                return ToValue(XElement.Load(reader));
+            }
+        }
+
+        /// <summary>create JsonSring from primitive or IEnumerable or Object({public property name:property value})</summary>
+        public static string Serialize(object obj)
+        {
+            return CreateJsonString(new XStreamingElement("root", CreateTypeAttr(GetJsonType(obj)), CreateJsonNode(obj)));
+        }
+
+        // private static methods
+
+        private static dynamic ToValue(XElement element)
+        {
+            var type = (JsonType)Enum.Parse(typeof(JsonType), element.Attribute("type").Value);
+            switch (type)
+            {
+                case JsonType.boolean:
+                    return (bool)element;
+                case JsonType.number:
+                    return (double)element;
+                case JsonType.@string:
+                    return (string)element;
+                case JsonType.@object:
+                case JsonType.array:
+                    return new DynamicJson(element, type);
+                case JsonType.@null:
+                default:
+                    return null;
+            }
+        }
+
+        private static JsonType GetJsonType(object obj)
+        {
+            if (obj == null) return JsonType.@null;
+
+            switch (Type.GetTypeCode(obj.GetType()))
+            {
+                case TypeCode.Boolean:
+                    return JsonType.boolean;
+                case TypeCode.String:
+                case TypeCode.Char:
+                case TypeCode.DateTime:
+                    return JsonType.@string;
+                case TypeCode.Int16:
+                case TypeCode.Int32:
+                case TypeCode.Int64:
+                case TypeCode.UInt16:
+                case TypeCode.UInt32:
+                case TypeCode.UInt64:
+                case TypeCode.Single:
+                case TypeCode.Double:
+                case TypeCode.Decimal:
+                case TypeCode.SByte:
+                case TypeCode.Byte:
+                    return JsonType.number;
+                case TypeCode.Object:
+                    return (obj is IEnumerable) ? JsonType.array : JsonType.@object;
+                case TypeCode.DBNull:
+                case TypeCode.Empty:
+                default:
+                    return JsonType.@null;
+            }
+        }
+
+        private static XAttribute CreateTypeAttr(JsonType type)
+        {
+            return new XAttribute("type", type.ToString());
+        }
+
+        private static object CreateJsonNode(object obj)
+        {
+            var type = GetJsonType(obj);
+            switch (type)
+            {
+                case JsonType.@string:
+                case JsonType.number:
+                    return obj;
+                case JsonType.boolean:
+                    return obj.ToString().ToLower();
+                case JsonType.@object:
+                    return CreateXObject(obj);
+                case JsonType.array:
+                    return CreateXArray(obj as IEnumerable);
+                case JsonType.@null:
+                default:
+                    return null;
+            }
+        }
+
+        private static IEnumerable<XStreamingElement> CreateXArray<T>(T obj) where T : IEnumerable
+        {
+            return obj.Cast<object>()
+                .Select(o => new XStreamingElement("item", CreateTypeAttr(GetJsonType(o)), CreateJsonNode(o)));
+        }
+
+        private static IEnumerable<XStreamingElement> CreateXObject(object obj)
+        {
+            return obj.GetType()
+                .GetProperties(BindingFlags.Public | BindingFlags.Instance)
+                .Select(pi => new { Name = pi.Name, Value = pi.GetValue(obj, null) })
+                .Select(a => new XStreamingElement(a.Name, CreateTypeAttr(GetJsonType(a.Value)), CreateJsonNode(a.Value)));
+        }
+
+        private static string CreateJsonString(XStreamingElement element)
+        {
+            using (var ms = new MemoryStream())
+            using (var writer = JsonReaderWriterFactory.CreateJsonWriter(ms, Encoding.Unicode))
+            {
+                element.WriteTo(writer);
+                writer.Flush();
+                return Encoding.Unicode.GetString(ms.ToArray());
+            }
+        }
+
+        // dynamic structure represents JavaScript Object/Array
+
+        readonly XElement xml;
+        readonly JsonType jsonType;
+
+        /// <summary>create blank JSObject</summary>
+        public DynamicJson()
+        {
+            xml = new XElement("root", CreateTypeAttr(JsonType.@object));
+            jsonType = JsonType.@object;
+        }
+
+        private DynamicJson(XElement element, JsonType type)
+        {
+            Debug.Assert(type == JsonType.array || type == JsonType.@object);
+
+            xml = element;
+            jsonType = type;
+        }
+
+        public bool IsObject { get { return jsonType == JsonType.@object; } }
+
+        public bool IsArray { get { return jsonType == JsonType.array; } }
+
+        /// <summary>has property or not</summary>
+        public bool IsDefined(string name)
+        {
+            return IsObject && (xml.Element(name) != null);
+        }
+
+        /// <summary>has property or not</summary>
+        public bool IsDefined(int index)
+        {
+            return IsArray && (xml.Elements().ElementAtOrDefault(index) != null);
+        }
+
+        /// <summary>delete property</summary>
+        public bool Delete(string name)
+        {
+            var elem = xml.Element(name);
+            if (elem != null)
+            {
+                elem.Remove();
+                return true;
+            }
+            else return false;
+        }
+
+        /// <summary>delete property</summary>
+        public bool Delete(int index)
+        {
+            var elem = xml.Elements().ElementAtOrDefault(index);
+            if (elem != null)
+            {
+                elem.Remove();
+                return true;
+            }
+            else return false;
+        }
+
+        /// <summary>mapping to Array or Class by Public PropertyName</summary>
+        public T Deserialize<T>()
+        {
+            return (T)Deserialize(typeof(T));
+        }
+
+        private object Deserialize(Type type)
+        {
+            return (IsArray) ? DeserializeArray(type) : DeserializeObject(type);
+        }
+
+        private dynamic DeserializeValue(XElement element, Type elementType)
+        {
+            var value = ToValue(element);
+            if (value is DynamicJson)
+            {
+                value = ((DynamicJson)value).Deserialize(elementType);
+            }
+            return Convert.ChangeType(value, elementType);
+        }
+
+        private object DeserializeObject(Type targetType)
+        {
+            var result = Activator.CreateInstance(targetType);
+            var dict = targetType.GetProperties(BindingFlags.Public | BindingFlags.Instance)
+                .Where(p => p.CanWrite)
+                .ToDictionary(pi => pi.Name, pi => pi);
+            foreach (var item in xml.Elements())
+            {
+                PropertyInfo propertyInfo;
+                if (!dict.TryGetValue(item.Name.LocalName, out propertyInfo)) continue;
+                var value = DeserializeValue(item, propertyInfo.PropertyType);
+                propertyInfo.SetValue(result, value, null);
+            }
+            return result;
+        }
+
+        private object DeserializeArray(Type targetType)
+        {
+            if (targetType.IsArray) // Foo[]
+            {
+                var elemType = targetType.GetElementType();
+                dynamic array = Array.CreateInstance(elemType, xml.Elements().Count());
+                var index = 0;
+                foreach (var item in xml.Elements())
+                {
+                    array[index++] = DeserializeValue(item, elemType);
+                }
+                return array;
+            }
+            else // List<Foo>
+            {
+                var elemType = targetType.GetGenericArguments()[0];
+                dynamic list = Activator.CreateInstance(targetType);
+                foreach (var item in xml.Elements())
+                {
+                    list.Add(DeserializeValue(item, elemType));
+                }
+                return list;
+            }
+        }
+
+        // Delete
+        public override bool TryInvoke(InvokeBinder binder, object[] args, out object result)
+        {
+            result = (IsArray)
+                ? Delete((int)args[0])
+                : Delete((string)args[0]);
+            return true;
+        }
+
+        // IsDefined, if has args then TryGetMember
+        public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
+        {
+            if (args.Length > 0)
+            {
+                result = null;
+                return false;
+            }
+
+            result = IsDefined(binder.Name);
+            return true;
+        }
+
+        // Deserialize or foreach(IEnumerable)
+        public override bool TryConvert(ConvertBinder binder, out object result)
+        {
+            if (binder.Type == typeof(IEnumerable) || binder.Type == typeof(object[]))
+            {
+                var ie = (IsArray)
+                    ? xml.Elements().Select(x => ToValue(x))
+                    : xml.Elements().Select(x => (dynamic)new KeyValuePair<string, object>(x.Name.LocalName, ToValue(x)));
+                result = (binder.Type == typeof(object[])) ? ie.ToArray() : ie;
+            }
+            else
+            {
+                result = Deserialize(binder.Type);
+            }
+            return true;
+        }
+
+        private bool TryGet(XElement element, out object result)
+        {
+            if (element == null)
+            {
+                result = null;
+                return false;
+            }
+
+            result = ToValue(element);
+            return true;
+        }
+
+        public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result)
+        {
+            return (IsArray)
+                ? TryGet(xml.Elements().ElementAtOrDefault((int)indexes[0]), out result)
+                : TryGet(xml.Element((string)indexes[0]), out result);
+        }
+
+        public override bool TryGetMember(GetMemberBinder binder, out object result)
+        {
+            return (IsArray)
+                ? TryGet(xml.Elements().ElementAtOrDefault(int.Parse(binder.Name)), out result)
+                : TryGet(xml.Element(binder.Name), out result);
+        }
+
+        private bool TrySet(string name, object value)
+        {
+            var type = GetJsonType(value);
+            var element = xml.Element(name);
+            if (element == null)
+            {
+                xml.Add(new XElement(name, CreateTypeAttr(type), CreateJsonNode(value)));
+            }
+            else
+            {
+                element.Attribute("type").Value = type.ToString();
+                element.ReplaceNodes(CreateJsonNode(value));
+            }
+
+            return true;
+        }
+
+        private bool TrySet(int index, object value)
+        {
+            var type = GetJsonType(value);
+            var e = xml.Elements().ElementAtOrDefault(index);
+            if (e == null)
+            {
+                xml.Add(new XElement("item", CreateTypeAttr(type), CreateJsonNode(value)));
+            }
+            else
+            {
+                e.Attribute("type").Value = type.ToString();
+                e.ReplaceNodes(CreateJsonNode(value));
+            }
+
+            return true;
+        }
+
+        public override bool TrySetIndex(SetIndexBinder binder, object[] indexes, object value)
+        {
+            return (IsArray)
+                ? TrySet((int)indexes[0], value)
+                : TrySet((string)indexes[0], value);
+        }
+
+        public override bool TrySetMember(SetMemberBinder binder, object value)
+        {
+            return (IsArray)
+                ? TrySet(int.Parse(binder.Name), value)
+                : TrySet(binder.Name, value);
+        }
+
+        public override IEnumerable<string> GetDynamicMemberNames()
+        {
+            return (IsArray)
+                ? xml.Elements().Select((x, i) => i.ToString())
+                : xml.Elements().Select(x => x.Name.LocalName);
+        }
+
+        /// <summary>Serialize to JsonString</summary>
+        public override string ToString()
+        {
+            // <foo type="null"></foo> is can't serialize. replace to <foo type="null" />
+            foreach (var elem in xml.Descendants().Where(x => x.Attribute("type").Value == "null"))
+            {
+                elem.RemoveNodes();
+            }
+            return CreateJsonString(new XStreamingElement("root", CreateTypeAttr(jsonType), xml.Elements()));
+        }
+    }
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/EcnlCtrlUI.csproj
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/EcnlCtrlUI.csproj	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/EcnlCtrlUI.csproj	(revision 101)
@@ -0,0 +1,538 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>
+    </ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{ACA3FB91-5853-4770-B531-CC7A6B647752}</ProjectGuid>
+    <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>EcnlCtrlUI</RootNamespace>
+    <AssemblyName>EcnlCtrlUI</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <UseIISExpress>true</UseIISExpress>
+    <IISExpressSSLPort />
+    <IISExpressAnonymousAuthentication />
+    <IISExpressWindowsAuthentication />
+    <IISExpressUseClassicPipelineMode />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Runtime.Serialization" />
+    <Reference Include="System.Web.DynamicData" />
+    <Reference Include="System.Web.Entity" />
+    <Reference Include="System.Web.ApplicationServices" />
+    <Reference Include="System.ComponentModel.DataAnnotations" />
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="System.Web.Extensions" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Web" />
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Configuration" />
+    <Reference Include="System.Web.Services" />
+    <Reference Include="System.EnterpriseServices" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="css\ecn_gen.css" />
+    <Content Include="imgs\core-s.svg" />
+    <Content Include="imgs\logo.gif" />
+    <Content Include="js\ctrlui.js" />
+    <Content Include="js\ctrlui.min.js" />
+    <Content Include="js\images\ajax-loader.gif" />
+    <Content Include="js\images\icons-png\action-black.png" />
+    <Content Include="js\images\icons-png\action-white.png" />
+    <Content Include="js\images\icons-png\alert-black.png" />
+    <Content Include="js\images\icons-png\alert-white.png" />
+    <Content Include="js\images\icons-png\arrow-d-black.png" />
+    <Content Include="js\images\icons-png\arrow-d-l-black.png" />
+    <Content Include="js\images\icons-png\arrow-d-l-white.png" />
+    <Content Include="js\images\icons-png\arrow-d-r-black.png" />
+    <Content Include="js\images\icons-png\arrow-d-r-white.png" />
+    <Content Include="js\images\icons-png\arrow-d-white.png" />
+    <Content Include="js\images\icons-png\arrow-l-black.png" />
+    <Content Include="js\images\icons-png\arrow-l-white.png" />
+    <Content Include="js\images\icons-png\arrow-r-black.png" />
+    <Content Include="js\images\icons-png\arrow-r-white.png" />
+    <Content Include="js\images\icons-png\arrow-u-black.png" />
+    <Content Include="js\images\icons-png\arrow-u-l-black.png" />
+    <Content Include="js\images\icons-png\arrow-u-l-white.png" />
+    <Content Include="js\images\icons-png\arrow-u-r-black.png" />
+    <Content Include="js\images\icons-png\arrow-u-r-white.png" />
+    <Content Include="js\images\icons-png\arrow-u-white.png" />
+    <Content Include="js\images\icons-png\audio-black.png" />
+    <Content Include="js\images\icons-png\audio-white.png" />
+    <Content Include="js\images\icons-png\back-black.png" />
+    <Content Include="js\images\icons-png\back-white.png" />
+    <Content Include="js\images\icons-png\bars-black.png" />
+    <Content Include="js\images\icons-png\bars-white.png" />
+    <Content Include="js\images\icons-png\bullets-black.png" />
+    <Content Include="js\images\icons-png\bullets-white.png" />
+    <Content Include="js\images\icons-png\calendar-black.png" />
+    <Content Include="js\images\icons-png\calendar-white.png" />
+    <Content Include="js\images\icons-png\camera-black.png" />
+    <Content Include="js\images\icons-png\camera-white.png" />
+    <Content Include="js\images\icons-png\carat-d-black.png" />
+    <Content Include="js\images\icons-png\carat-d-white.png" />
+    <Content Include="js\images\icons-png\carat-l-black.png" />
+    <Content Include="js\images\icons-png\carat-l-white.png" />
+    <Content Include="js\images\icons-png\carat-r-black.png" />
+    <Content Include="js\images\icons-png\carat-r-white.png" />
+    <Content Include="js\images\icons-png\carat-u-black.png" />
+    <Content Include="js\images\icons-png\carat-u-white.png" />
+    <Content Include="js\images\icons-png\check-black.png" />
+    <Content Include="js\images\icons-png\check-white.png" />
+    <Content Include="js\images\icons-png\clock-black.png" />
+    <Content Include="js\images\icons-png\clock-white.png" />
+    <Content Include="js\images\icons-png\cloud-black.png" />
+    <Content Include="js\images\icons-png\cloud-white.png" />
+    <Content Include="js\images\icons-png\comment-black.png" />
+    <Content Include="js\images\icons-png\comment-white.png" />
+    <Content Include="js\images\icons-png\delete-black.png" />
+    <Content Include="js\images\icons-png\delete-white.png" />
+    <Content Include="js\images\icons-png\edit-black.png" />
+    <Content Include="js\images\icons-png\edit-white.png" />
+    <Content Include="js\images\icons-png\eye-black.png" />
+    <Content Include="js\images\icons-png\eye-white.png" />
+    <Content Include="js\images\icons-png\forbidden-black.png" />
+    <Content Include="js\images\icons-png\forbidden-white.png" />
+    <Content Include="js\images\icons-png\forward-black.png" />
+    <Content Include="js\images\icons-png\forward-white.png" />
+    <Content Include="js\images\icons-png\gear-black.png" />
+    <Content Include="js\images\icons-png\gear-white.png" />
+    <Content Include="js\images\icons-png\grid-black.png" />
+    <Content Include="js\images\icons-png\grid-white.png" />
+    <Content Include="js\images\icons-png\heart-black.png" />
+    <Content Include="js\images\icons-png\heart-white.png" />
+    <Content Include="js\images\icons-png\home-black.png" />
+    <Content Include="js\images\icons-png\home-white.png" />
+    <Content Include="js\images\icons-png\info-black.png" />
+    <Content Include="js\images\icons-png\info-white.png" />
+    <Content Include="js\images\icons-png\location-black.png" />
+    <Content Include="js\images\icons-png\location-white.png" />
+    <Content Include="js\images\icons-png\lock-black.png" />
+    <Content Include="js\images\icons-png\lock-white.png" />
+    <Content Include="js\images\icons-png\mail-black.png" />
+    <Content Include="js\images\icons-png\mail-white.png" />
+    <Content Include="js\images\icons-png\minus-black.png" />
+    <Content Include="js\images\icons-png\minus-white.png" />
+    <Content Include="js\images\icons-png\navigation-black.png" />
+    <Content Include="js\images\icons-png\navigation-white.png" />
+    <Content Include="js\images\icons-png\phone-black.png" />
+    <Content Include="js\images\icons-png\phone-white.png" />
+    <Content Include="js\images\icons-png\plus-black.png" />
+    <Content Include="js\images\icons-png\plus-white.png" />
+    <Content Include="js\images\icons-png\power-black.png" />
+    <Content Include="js\images\icons-png\power-white.png" />
+    <Content Include="js\images\icons-png\recycle-black.png" />
+    <Content Include="js\images\icons-png\recycle-white.png" />
+    <Content Include="js\images\icons-png\refresh-black.png" />
+    <Content Include="js\images\icons-png\refresh-white.png" />
+    <Content Include="js\images\icons-png\search-black.png" />
+    <Content Include="js\images\icons-png\search-white.png" />
+    <Content Include="js\images\icons-png\shop-black.png" />
+    <Content Include="js\images\icons-png\shop-white.png" />
+    <Content Include="js\images\icons-png\star-black.png" />
+    <Content Include="js\images\icons-png\star-white.png" />
+    <Content Include="js\images\icons-png\tag-black.png" />
+    <Content Include="js\images\icons-png\tag-white.png" />
+    <Content Include="js\images\icons-png\user-black.png" />
+    <Content Include="js\images\icons-png\user-white.png" />
+    <Content Include="js\images\icons-png\video-black.png" />
+    <Content Include="js\images\icons-png\video-white.png" />
+    <Content Include="js\images\icons-svg\action-black.svg" />
+    <Content Include="js\images\icons-svg\action-white.svg" />
+    <Content Include="js\images\icons-svg\alert-black.svg" />
+    <Content Include="js\images\icons-svg\alert-white.svg" />
+    <Content Include="js\images\icons-svg\arrow-d-black.svg" />
+    <Content Include="js\images\icons-svg\arrow-d-l-black.svg" />
+    <Content Include="js\images\icons-svg\arrow-d-l-white.svg" />
+    <Content Include="js\images\icons-svg\arrow-d-r-black.svg" />
+    <Content Include="js\images\icons-svg\arrow-d-r-white.svg" />
+    <Content Include="js\images\icons-svg\arrow-d-white.svg" />
+    <Content Include="js\images\icons-svg\arrow-l-black.svg" />
+    <Content Include="js\images\icons-svg\arrow-l-white.svg" />
+    <Content Include="js\images\icons-svg\arrow-r-black.svg" />
+    <Content Include="js\images\icons-svg\arrow-r-white.svg" />
+    <Content Include="js\images\icons-svg\arrow-u-black.svg" />
+    <Content Include="js\images\icons-svg\arrow-u-l-black.svg" />
+    <Content Include="js\images\icons-svg\arrow-u-l-white.svg" />
+    <Content Include="js\images\icons-svg\arrow-u-r-black.svg" />
+    <Content Include="js\images\icons-svg\arrow-u-r-white.svg" />
+    <Content Include="js\images\icons-svg\arrow-u-white.svg" />
+    <Content Include="js\images\icons-svg\audio-black.svg" />
+    <Content Include="js\images\icons-svg\audio-white.svg" />
+    <Content Include="js\images\icons-svg\back-black.svg" />
+    <Content Include="js\images\icons-svg\back-white.svg" />
+    <Content Include="js\images\icons-svg\bars-black.svg" />
+    <Content Include="js\images\icons-svg\bars-white.svg" />
+    <Content Include="js\images\icons-svg\bullets-black.svg" />
+    <Content Include="js\images\icons-svg\bullets-white.svg" />
+    <Content Include="js\images\icons-svg\calendar-black.svg" />
+    <Content Include="js\images\icons-svg\calendar-white.svg" />
+    <Content Include="js\images\icons-svg\camera-black.svg" />
+    <Content Include="js\images\icons-svg\camera-white.svg" />
+    <Content Include="js\images\icons-svg\carat-d-black.svg" />
+    <Content Include="js\images\icons-svg\carat-d-white.svg" />
+    <Content Include="js\images\icons-svg\carat-l-black.svg" />
+    <Content Include="js\images\icons-svg\carat-l-white.svg" />
+    <Content Include="js\images\icons-svg\carat-r-black.svg" />
+    <Content Include="js\images\icons-svg\carat-r-white.svg" />
+    <Content Include="js\images\icons-svg\carat-u-black.svg" />
+    <Content Include="js\images\icons-svg\carat-u-white.svg" />
+    <Content Include="js\images\icons-svg\check-black.svg" />
+    <Content Include="js\images\icons-svg\check-white.svg" />
+    <Content Include="js\images\icons-svg\clock-black.svg" />
+    <Content Include="js\images\icons-svg\clock-white.svg" />
+    <Content Include="js\images\icons-svg\cloud-black.svg" />
+    <Content Include="js\images\icons-svg\cloud-white.svg" />
+    <Content Include="js\images\icons-svg\comment-black.svg" />
+    <Content Include="js\images\icons-svg\comment-white.svg" />
+    <Content Include="js\images\icons-svg\delete-black.svg" />
+    <Content Include="js\images\icons-svg\delete-white.svg" />
+    <Content Include="js\images\icons-svg\edit-black.svg" />
+    <Content Include="js\images\icons-svg\edit-white.svg" />
+    <Content Include="js\images\icons-svg\eye-black.svg" />
+    <Content Include="js\images\icons-svg\eye-white.svg" />
+    <Content Include="js\images\icons-svg\forbidden-black.svg" />
+    <Content Include="js\images\icons-svg\forbidden-white.svg" />
+    <Content Include="js\images\icons-svg\forward-black.svg" />
+    <Content Include="js\images\icons-svg\forward-white.svg" />
+    <Content Include="js\images\icons-svg\gear-black.svg" />
+    <Content Include="js\images\icons-svg\gear-white.svg" />
+    <Content Include="js\images\icons-svg\grid-black.svg" />
+    <Content Include="js\images\icons-svg\grid-white.svg" />
+    <Content Include="js\images\icons-svg\heart-black.svg" />
+    <Content Include="js\images\icons-svg\heart-white.svg" />
+    <Content Include="js\images\icons-svg\home-black.svg" />
+    <Content Include="js\images\icons-svg\home-white.svg" />
+    <Content Include="js\images\icons-svg\info-black.svg" />
+    <Content Include="js\images\icons-svg\info-white.svg" />
+    <Content Include="js\images\icons-svg\location-black.svg" />
+    <Content Include="js\images\icons-svg\location-white.svg" />
+    <Content Include="js\images\icons-svg\lock-black.svg" />
+    <Content Include="js\images\icons-svg\lock-white.svg" />
+    <Content Include="js\images\icons-svg\mail-black.svg" />
+    <Content Include="js\images\icons-svg\mail-white.svg" />
+    <Content Include="js\images\icons-svg\minus-black.svg" />
+    <Content Include="js\images\icons-svg\minus-white.svg" />
+    <Content Include="js\images\icons-svg\navigation-black.svg" />
+    <Content Include="js\images\icons-svg\navigation-white.svg" />
+    <Content Include="js\images\icons-svg\phone-black.svg" />
+    <Content Include="js\images\icons-svg\phone-white.svg" />
+    <Content Include="js\images\icons-svg\plus-black.svg" />
+    <Content Include="js\images\icons-svg\plus-white.svg" />
+    <Content Include="js\images\icons-svg\power-black.svg" />
+    <Content Include="js\images\icons-svg\power-white.svg" />
+    <Content Include="js\images\icons-svg\recycle-black.svg" />
+    <Content Include="js\images\icons-svg\recycle-white.svg" />
+    <Content Include="js\images\icons-svg\refresh-black.svg" />
+    <Content Include="js\images\icons-svg\refresh-white.svg" />
+    <Content Include="js\images\icons-svg\search-black.svg" />
+    <Content Include="js\images\icons-svg\search-white.svg" />
+    <Content Include="js\images\icons-svg\shop-black.svg" />
+    <Content Include="js\images\icons-svg\shop-white.svg" />
+    <Content Include="js\images\icons-svg\star-black.svg" />
+    <Content Include="js\images\icons-svg\star-white.svg" />
+    <Content Include="js\images\icons-svg\tag-black.svg" />
+    <Content Include="js\images\icons-svg\tag-white.svg" />
+    <Content Include="js\images\icons-svg\user-black.svg" />
+    <Content Include="js\images\icons-svg\user-white.svg" />
+    <Content Include="js\images\icons-svg\video-black.svg" />
+    <Content Include="js\images\icons-svg\video-white.svg" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.af.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.af.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.ar.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.ar.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.bg.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.bg.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.ca.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.ca.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.cs.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.cs.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.da.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.da.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.de.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.de.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.el.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.el.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.en.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.en.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.es-ES.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.es-ES.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.fi.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.fi.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.fr.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.fr.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.he.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.he.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.hr.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.hr.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.hu.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.hu.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.id.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.id.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.it.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.it.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.ja.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.ja.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.ko.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.ko.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.lt.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.lt.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.nl-BE.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.nl-BE.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.nl.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.nl.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.no.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.no.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.pl.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.pl.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.pt-BR.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.pt-BR.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.pt-PT.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.pt-PT.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.ro.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.ro.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.ru.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.ru.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.sr.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.sr.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.sv-SE.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.sv-SE.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.th.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.th.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.tr.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.tr.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.uk.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.uk.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.vi.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.vi.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.zh-CN.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.zh-CN.utf8.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.zh-TW.asc.js" />
+    <Content Include="js\jqm-datebox\i18n\jquery.mobile.datebox.i18n.zh-TW.utf8.js" />
+    <Content Include="js\jqm-datebox\jqm-datebox-1.4.5.css" />
+    <Content Include="js\jqm-datebox\jqm-datebox.core.js" />
+    <Content Include="js\jqm-datebox\jqm-datebox.custom.tires.js" />
+    <Content Include="js\jqm-datebox\jqm-datebox.fulloptlist.js" />
+    <Content Include="js\jqm-datebox\jqm-datebox.mode.calbox.js" />
+    <Content Include="js\jqm-datebox\jqm-datebox.mode.custombox.js" />
+    <Content Include="js\jqm-datebox\jqm-datebox.mode.customflip.js" />
+    <Content Include="js\jqm-datebox\jqm-datebox.mode.datebox.js" />
+    <Content Include="js\jqm-datebox\jqm-datebox.mode.durationbox.js" />
+    <Content Include="js\jqm-datebox\jqm-datebox.mode.durationflipbox.js" />
+    <Content Include="js\jqm-datebox\jqm-datebox.mode.flipbox.js" />
+    <Content Include="js\jqm-datebox\jqm-datebox.mode.slidebox.js" />
+    <Content Include="js\jqm-datebox\jquery.mobile.datebox.js" />
+    <Content Include="js\jquery-1.10.2.js" />
+    <Content Include="js\jquery-1.10.2.min.js" />
+    <Content Include="js\jquery.mobile-1.4.5.css" />
+    <Content Include="js\jquery.mobile-1.4.5.js" />
+    <Content Include="js\jquery.mobile-1.4.5.min.css" />
+    <Content Include="js\jquery.mobile-1.4.5.min.js" />
+    <Content Include="js\jquery.mobile.external-png-1.4.5.css" />
+    <Content Include="js\jquery.mobile.external-png-1.4.5.min.css" />
+    <Content Include="js\jquery.mobile.icons-1.4.5.css" />
+    <Content Include="js\jquery.mobile.icons-1.4.5.min.css" />
+    <Content Include="js\jquery.mobile.inline-png-1.4.5.css" />
+    <Content Include="js\jquery.mobile.inline-png-1.4.5.min.css" />
+    <Content Include="js\jquery.mobile.inline-svg-1.4.5.css" />
+    <Content Include="js\jquery.mobile.inline-svg-1.4.5.min.css" />
+    <Content Include="js\jquery.mobile.structure-1.4.5.css" />
+    <Content Include="js\jquery.mobile.structure-1.4.5.min.css" />
+    <Content Include="js\jquery.mobile.theme-1.4.5.css" />
+    <Content Include="js\jquery.mobile.theme-1.4.5.min.css" />
+    <Content Include="js\linq.js" />
+    <Content Include="js\linq.min.js" />
+    <Content Include="js\mscorlib.js" />
+    <Content Include="js\mscorlib.min.js" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="index.html" />
+    <Content Include="packages.config" />
+    <Content Include="themes\ecn-theme.css" />
+    <Content Include="themes\ecn-theme.min.css" />
+    <Content Include="Web.config">
+      <SubType>Designer</SubType>
+    </Content>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="devices\ClassGroupList.json" />
+    <Content Include="devices\ClassList00.json" />
+    <Content Include="devices\ClassList01.json" />
+    <Content Include="devices\ClassList02.json" />
+    <Content Include="devices\ClassList03.json" />
+    <Content Include="devices\ClassList04.json" />
+    <Content Include="devices\ClassList05.json" />
+    <Content Include="devices\ClassList06.json" />
+    <Content Include="devices\ClassList0E.json" />
+    <Content Include="devices\ClassList0F.json" />
+    <Content Include="devices\jsmin.bat" />
+    <Content Include="devices\PropertyList0001.json" />
+    <Content Include="devices\PropertyList0002.json" />
+    <Content Include="devices\PropertyList0003.json" />
+    <Content Include="devices\PropertyList0004.json" />
+    <Content Include="devices\PropertyList0005.json" />
+    <Content Include="devices\PropertyList0006.json" />
+    <Content Include="devices\PropertyList0007.json" />
+    <Content Include="devices\PropertyList0008.json" />
+    <Content Include="devices\PropertyList0009.json" />
+    <Content Include="devices\PropertyList000A.json" />
+    <Content Include="devices\PropertyList000B.json" />
+    <Content Include="devices\PropertyList000C.json" />
+    <Content Include="devices\PropertyList000D.json" />
+    <Content Include="devices\PropertyList000E.json" />
+    <Content Include="devices\PropertyList000F.json" />
+    <Content Include="devices\PropertyList0010.json" />
+    <Content Include="devices\PropertyList0011.json" />
+    <Content Include="devices\PropertyList0012.json" />
+    <Content Include="devices\PropertyList0013.json" />
+    <Content Include="devices\PropertyList0014.json" />
+    <Content Include="devices\PropertyList0015.json" />
+    <Content Include="devices\PropertyList0016.json" />
+    <Content Include="devices\PropertyList0017.json" />
+    <Content Include="devices\PropertyList0018.json" />
+    <Content Include="devices\PropertyList0019.json" />
+    <Content Include="devices\PropertyList001A.json" />
+    <Content Include="devices\PropertyList001B.json" />
+    <Content Include="devices\PropertyList001C.json" />
+    <Content Include="devices\PropertyList001D.json" />
+    <Content Include="devices\PropertyList001E.json" />
+    <Content Include="devices\PropertyList001F.json" />
+    <Content Include="devices\PropertyList0020.json" />
+    <Content Include="devices\PropertyList0021.json" />
+    <Content Include="devices\PropertyList0022.json" />
+    <Content Include="devices\PropertyList0023.json" />
+    <Content Include="devices\PropertyList0025.json" />
+    <Content Include="devices\PropertyList0026.json" />
+    <Content Include="devices\PropertyList0027.json" />
+    <Content Include="devices\PropertyList0028.json" />
+    <Content Include="devices\PropertyList0029.json" />
+    <Content Include="devices\PropertyList002A.json" />
+    <Content Include="devices\PropertyList002B.json" />
+    <Content Include="devices\PropertyList002C.json" />
+    <Content Include="devices\PropertyList0130.json" />
+    <Content Include="devices\PropertyList0133.json" />
+    <Content Include="devices\PropertyList0134.json" />
+    <Content Include="devices\PropertyList0135.json" />
+    <Content Include="devices\PropertyList0139.json" />
+    <Content Include="devices\PropertyList0142.json" />
+    <Content Include="devices\PropertyList0143.json" />
+    <Content Include="devices\PropertyList0145.json" />
+    <Content Include="devices\PropertyList0146.json" />
+    <Content Include="devices\PropertyList0260.json" />
+    <Content Include="devices\PropertyList0261.json" />
+    <Content Include="devices\PropertyList0263.json" />
+    <Content Include="devices\PropertyList0267.json" />
+    <Content Include="devices\PropertyList026B.json" />
+    <Content Include="devices\PropertyList026E.json" />
+    <Content Include="devices\PropertyList026F.json" />
+    <Content Include="devices\PropertyList0272.json" />
+    <Content Include="devices\PropertyList0273.json" />
+    <Content Include="devices\PropertyList0279.json" />
+    <Content Include="devices\PropertyList027A.json" />
+    <Content Include="devices\PropertyList027B.json" />
+    <Content Include="devices\PropertyList027C.json" />
+    <Content Include="devices\PropertyList027D.json" />
+    <Content Include="devices\PropertyList027E.json" />
+    <Content Include="devices\PropertyList027F.json" />
+    <Content Include="devices\PropertyList0280.json" />
+    <Content Include="devices\PropertyList0281.json" />
+    <Content Include="devices\PropertyList0282.json" />
+    <Content Include="devices\PropertyList0283.json" />
+    <Content Include="devices\PropertyList0287.json" />
+    <Content Include="devices\PropertyList0288.json" />
+    <Content Include="devices\PropertyList0289.json" />
+    <Content Include="devices\PropertyList0290.json" />
+    <Content Include="devices\PropertyList02A0.json" />
+    <Content Include="devices\PropertyList03B2.json" />
+    <Content Include="devices\PropertyList03B7.json" />
+    <Content Include="devices\PropertyList03B8.json" />
+    <Content Include="devices\PropertyList03B9.json" />
+    <Content Include="devices\PropertyList03BB.json" />
+    <Content Include="devices\PropertyList03C5.json" />
+    <Content Include="devices\PropertyList03C6.json" />
+    <Content Include="devices\PropertyList03D3.json" />
+    <Content Include="devices\PropertyList0405.json" />
+    <Content Include="devices\PropertyList05FD.json" />
+    <Content Include="devices\PropertyList0601.json" />
+    <Content Include="devices\PropertyList0602.json" />
+    <Content Include="devices\PropertyList0EF0.json" />
+    <Content Include="devices\PropertyListBase.json" />
+    <Content Include="information.json" />
+    <Content Include="js\jquery.mobile-1.4.5.min.map" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="DynamicJson.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="webapi.ashx.cs">
+      <DependentUpon>webapi.ashx</DependentUpon>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Web.Debug.config">
+      <DependentUpon>Web.config</DependentUpon>
+    </None>
+    <None Include="Web.Release.config">
+      <DependentUpon>Web.config</DependentUpon>
+    </None>
+    <Content Include="webapi.ashx" />
+  </ItemGroup>
+  <PropertyGroup>
+    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
+    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
+  </PropertyGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
+  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
+        <WebProjectProperties>
+          <UseIIS>True</UseIIS>
+          <AutoAssignPort>True</AutoAssignPort>
+          <DevelopmentServerPort>0</DevelopmentServerPort>
+          <DevelopmentServerVPath>/</DevelopmentServerVPath>
+          <IISUrl>http://localhost:41314/</IISUrl>
+          <NTLMAuthentication>False</NTLMAuthentication>
+          <UseCustomServer>False</UseCustomServer>
+          <CustomServerUrl>
+          </CustomServerUrl>
+          <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
+        </WebProjectProperties>
+      </FlavorProperties>
+    </VisualStudio>
+  </ProjectExtensions>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/Properties/AssemblyInfo.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/Properties/AssemblyInfo.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/Properties/AssemblyInfo.cs	(revision 101)
@@ -0,0 +1,35 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// アセンブリに関する一般情報は、以下の属性セットによって 
+// 制御されます。アセンブリに関連付けられている情報を変更するには、
+// これらの属性値を変更します。
+[assembly: AssemblyTitle("EcnlCtrlUI")]
+[assembly: AssemblyDescription("TOPPERS/ECNLコントローラWebアプリケーション JavaScript生成")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("TOPPERSプロジェクト")]
+[assembly: AssemblyProduct("TOPPERS/ECNLコントローラWebアプリケーション")]
+[assembly: AssemblyCopyright("Copyright © 2015 by TOPPERS Project, Inc., JAPAN")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// ComVisible を false に設定すると、 
+// COM コンポーネントがこのアセンブリ内のその型を認識できなくなります。
+// COM からこのアセンブリ内の型にアクセスする必要がある場合は、その型の ComVisible 属性を true に設定してください。
+//[assembly: ComVisible(false)]
+
+// このプロジェクトが COM に公開される場合、次の GUID がタイプ ライブラリの ID になります。
+//[assembly: Guid("9d1465ca-71cf-4d73-a2b6-cc3e80737984")]
+
+// アセンブリのバージョン情報は、以下の 4 つの値で構成されています:
+//
+//      メジャー バージョン
+//      マイナー バージョン 
+//      ビルド番号
+//      リビジョン
+//
+// すべての値を指定するか、下のように "*" を使ってリビジョンおよびビルド番号を 
+// 既定値にすることができます:
+[assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyFileVersion("1.0.1.0")]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/Web.Debug.config
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/Web.Debug.config	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/Web.Debug.config	(revision 101)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- web.config å¤æã®è©³ç´°ã«ã¤ãã¦ã¯ãhttp://go.microsoft.com/fwlink/?LinkId=125889 ãåç
+§ãã¦ãã ããã -->
+
+<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
+  <!--
+    æ¬¡ã®ä¾ã§ã¯ã"MyDB" ã¨ããå¤ãæã¤ "name" å±æ§ã "Match" ã­ã±ã¼ã¿ã¼ã§
+    è¦ã¤ãã£ãå ´åã«ã®ã¿ã"SetAttributes" å¤æã«ãã£ã¦ "connectionString" ã®
+    å¤ã "ReleaseSQLServer" ãä½¿ç¨ããããã«å¤æ´ããã¾ãã
+    
+    <connectionStrings>
+      <add name="MyDB" 
+        connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" 
+        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
+    </connectionStrings>
+  -->
+  <system.web>
+    <!--
+      
+      æ¬¡ã®ä¾ã§ã¯ãweb.config ãã¡ã¤ã«ã® <customErrors> ã»ã¯ã·ã§ã³å
+¨ä½ã 
+      "Replace" å¤æã«ãã£ã¦ç½®ãæãããã¾ãã
+      <system.web> ãã¼ãã«ã¯ customErrors ã»ã¯ã·ã§ã³ã 1 ã¤ãããªãããã
+      "xdt:Locator" å±æ§ãä½¿ç¨ããå¿
+è¦ã¯ããã¾ããã
+      
+      <customErrors defaultRedirect="GenericError.htm"
+        mode="RemoteOnly" xdt:Transform="Replace">
+        <error statusCode="500" redirect="InternalError.htm"/>
+      </customErrors>
+    >
+    -->
+  </system.web>
+</configuration>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/Web.Release.config
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/Web.Release.config	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/Web.Release.config	(revision 101)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- web.config å¤æã®è©³ç´°ã«ã¤ãã¦ã¯ãhttp://go.microsoft.com/fwlink/?LinkId=125889 ãåç
+§ãã¦ãã ããã -->
+
+<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
+  <!--
+    æ¬¡ã®ä¾ã§ã¯ã"MyDB" ã¨ããå¤ãæã¤ "name" å±æ§ã "Match" ã­ã±ã¼ã¿ã¼ã§
+    è¦ã¤ãã£ãå ´åã«ã®ã¿ã"SetAttributes" å¤æã«ãã£ã¦ "connectionString" ã®
+    å¤ã "ReleaseSQLServer" ãä½¿ç¨ããããã«å¤æ´ããã¾ãã
+    
+    <connectionStrings>
+      <add name="MyDB" 
+        connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" 
+        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
+    </connectionStrings>
+  -->
+  <system.web>
+    <compilation xdt:Transform="RemoveAttributes(debug)" />
+    <!--
+      
+      æ¬¡ã®ä¾ã§ã¯ãweb.config ãã¡ã¤ã«ã® <customErrors> ã»ã¯ã·ã§ã³å
+¨ä½ã 
+      "Replace" å¤æã«ãã£ã¦ç½®ãæãããã¾ãã
+      <system.web> ãã¼ãã«ã¯ customErrors ã»ã¯ã·ã§ã³ã 1 ã¤ãããªãããã
+      "xdt:Locator" å±æ§ãä½¿ç¨ããå¿
+è¦ã¯ããã¾ããã
+      
+      <customErrors defaultRedirect="GenericError.htm"
+        mode="RemoteOnly" xdt:Transform="Replace">
+        <error statusCode="500" redirect="InternalError.htm"/>
+      </customErrors>
+    >
+    -->
+  </system.web>
+</configuration>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/Web.config
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/Web.config	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/Web.config	(revision 101)
@@ -0,0 +1,23 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ASP.NET アプリケーションの構成方法の詳細については、
+  http://go.microsoft.com/fwlink/?LinkId=169433 を参照してください
+  -->
+<configuration>
+  <system.web>
+    <compilation debug="true" targetFramework="4.5" />
+    <httpRuntime targetFramework="4.5" />
+  </system.web>
+  <system.webServer>
+    <defaultDocument enabled="true">
+       <files>
+           <clear/>
+           <add value="controller.html"/>
+       </files>
+    </defaultDocument>
+    <staticContent>
+      <mimeMap fileExtension=".json" mimeType="application/json"/>
+      <mimeMap fileExtension=".cfg" mimeType="text/plain"/>
+    </staticContent>
+  </system.webServer>
+</configuration>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/copy_httpd-fs.bat
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/copy_httpd-fs.bat	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/copy_httpd-fs.bat	(revision 101)
@@ -0,0 +1,130 @@
+copy /Y favicon.ico ..\..\..\uip\apps\webserver\httpd-fs\favicon.ico
+copy /Y information.json ..\..\..\uip\apps\webserver\httpd-fs\information.json
+
+mkdir ..\..\..\uip\apps\webserver\httpd-fs\css
+copy /Y css\ecn_gen.css ..\..\..\uip\apps\webserver\httpd-fs\css\ecn_gen.css
+
+mkdir ..\..\..\uip\apps\webserver\httpd-fs\devices
+..\tools\jsmin < devices\ClassGroupList.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\ClassGroupList.json
+..\tools\jsmin < devices\ClassList00.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\ClassList00.json
+..\tools\jsmin < devices\ClassList0E.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\ClassList0E.json
+..\tools\jsmin < devices\ClassList0F.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\ClassList0F.json
+..\tools\jsmin < devices\ClassList01.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\ClassList01.json
+..\tools\jsmin < devices\ClassList02.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\ClassList02.json
+..\tools\jsmin < devices\ClassList03.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\ClassList03.json
+..\tools\jsmin < devices\ClassList04.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\ClassList04.json
+..\tools\jsmin < devices\ClassList05.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\ClassList05.json
+..\tools\jsmin < devices\ClassList06.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\ClassList06.json
+..\tools\jsmin < devices\PropertyList000A.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList000A.json
+..\tools\jsmin < devices\PropertyList000B.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList000B.json
+..\tools\jsmin < devices\PropertyList000C.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList000C.json
+..\tools\jsmin < devices\PropertyList000D.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList000D.json
+..\tools\jsmin < devices\PropertyList000E.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList000E.json
+..\tools\jsmin < devices\PropertyList000F.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList000F.json
+..\tools\jsmin < devices\PropertyList0EF0.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0EF0.json
+..\tools\jsmin < devices\PropertyList0001.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0001.json
+..\tools\jsmin < devices\PropertyList001A.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList001A.json
+..\tools\jsmin < devices\PropertyList001B.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList001B.json
+..\tools\jsmin < devices\PropertyList001C.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList001C.json
+..\tools\jsmin < devices\PropertyList001D.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList001D.json
+..\tools\jsmin < devices\PropertyList001E.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList001E.json
+..\tools\jsmin < devices\PropertyList001F.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList001F.json
+..\tools\jsmin < devices\PropertyList0002.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0002.json
+..\tools\jsmin < devices\PropertyList002A.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList002A.json
+..\tools\jsmin < devices\PropertyList002B.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList002B.json
+..\tools\jsmin < devices\PropertyList002C.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList002C.json
+..\tools\jsmin < devices\PropertyList02A0.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList02A0.json
+..\tools\jsmin < devices\PropertyList0003.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0003.json
+..\tools\jsmin < devices\PropertyList03B2.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList03B2.json
+..\tools\jsmin < devices\PropertyList03B7.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList03B7.json
+..\tools\jsmin < devices\PropertyList03B8.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList03B8.json
+..\tools\jsmin < devices\PropertyList03B9.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList03B9.json
+..\tools\jsmin < devices\PropertyList03BB.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList03BB.json
+..\tools\jsmin < devices\PropertyList03C5.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList03C5.json
+..\tools\jsmin < devices\PropertyList03C6.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList03C6.json
+..\tools\jsmin < devices\PropertyList03D3.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList03D3.json
+..\tools\jsmin < devices\PropertyList0004.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0004.json
+..\tools\jsmin < devices\PropertyList0005.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0005.json
+..\tools\jsmin < devices\PropertyList05FD.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList05FD.json
+..\tools\jsmin < devices\PropertyList0006.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0006.json
+..\tools\jsmin < devices\PropertyList0007.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0007.json
+..\tools\jsmin < devices\PropertyList0008.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0008.json
+..\tools\jsmin < devices\PropertyList0009.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0009.json
+..\tools\jsmin < devices\PropertyList0010.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0010.json
+..\tools\jsmin < devices\PropertyList0011.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0011.json
+..\tools\jsmin < devices\PropertyList0012.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0012.json
+..\tools\jsmin < devices\PropertyList0013.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0013.json
+..\tools\jsmin < devices\PropertyList0014.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0014.json
+..\tools\jsmin < devices\PropertyList0015.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0015.json
+..\tools\jsmin < devices\PropertyList0016.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0016.json
+..\tools\jsmin < devices\PropertyList0017.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0017.json
+..\tools\jsmin < devices\PropertyList0018.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0018.json
+..\tools\jsmin < devices\PropertyList0019.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0019.json
+..\tools\jsmin < devices\PropertyList0020.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0020.json
+..\tools\jsmin < devices\PropertyList0021.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0021.json
+..\tools\jsmin < devices\PropertyList0022.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0022.json
+..\tools\jsmin < devices\PropertyList0023.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0023.json
+..\tools\jsmin < devices\PropertyList0025.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0025.json
+..\tools\jsmin < devices\PropertyList0026.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0026.json
+..\tools\jsmin < devices\PropertyList026B.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList026B.json
+..\tools\jsmin < devices\PropertyList026E.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList026E.json
+..\tools\jsmin < devices\PropertyList026F.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList026F.json
+..\tools\jsmin < devices\PropertyList0027.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0027.json
+..\tools\jsmin < devices\PropertyList027A.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList027A.json
+..\tools\jsmin < devices\PropertyList027B.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList027B.json
+..\tools\jsmin < devices\PropertyList027C.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList027C.json
+..\tools\jsmin < devices\PropertyList027D.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList027D.json
+..\tools\jsmin < devices\PropertyList027E.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList027E.json
+..\tools\jsmin < devices\PropertyList027F.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList027F.json
+..\tools\jsmin < devices\PropertyList0028.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0028.json
+..\tools\jsmin < devices\PropertyList0029.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0029.json
+..\tools\jsmin < devices\PropertyList0130.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0130.json
+..\tools\jsmin < devices\PropertyList0133.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0133.json
+..\tools\jsmin < devices\PropertyList0134.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0134.json
+..\tools\jsmin < devices\PropertyList0135.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0135.json
+..\tools\jsmin < devices\PropertyList0139.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0139.json
+..\tools\jsmin < devices\PropertyList0142.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0142.json
+..\tools\jsmin < devices\PropertyList0143.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0143.json
+..\tools\jsmin < devices\PropertyList0145.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0145.json
+..\tools\jsmin < devices\PropertyList0146.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0146.json
+..\tools\jsmin < devices\PropertyList0260.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0260.json
+..\tools\jsmin < devices\PropertyList0261.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0261.json
+..\tools\jsmin < devices\PropertyList0263.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0263.json
+..\tools\jsmin < devices\PropertyList0267.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0267.json
+..\tools\jsmin < devices\PropertyList0272.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0272.json
+..\tools\jsmin < devices\PropertyList0273.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0273.json
+..\tools\jsmin < devices\PropertyList0279.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0279.json
+..\tools\jsmin < devices\PropertyList0280.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0280.json
+..\tools\jsmin < devices\PropertyList0281.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0281.json
+..\tools\jsmin < devices\PropertyList0282.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0282.json
+..\tools\jsmin < devices\PropertyList0283.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0283.json
+..\tools\jsmin < devices\PropertyList0287.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0287.json
+..\tools\jsmin < devices\PropertyList0288.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0288.json
+..\tools\jsmin < devices\PropertyList0289.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0289.json
+..\tools\jsmin < devices\PropertyList0290.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0290.json
+..\tools\jsmin < devices\PropertyList0405.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0405.json
+..\tools\jsmin < devices\PropertyList0601.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0601.json
+..\tools\jsmin < devices\PropertyList0602.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyList0602.json
+..\tools\jsmin < devices\PropertyListBase.json > ..\..\..\uip\apps\webserver\httpd-fs\devices\PropertyListBase.json
+
+mkdir ..\..\..\uip\apps\webserver\httpd-fs\imgs
+copy /Y imgs\core-s.svg ..\..\..\uip\apps\webserver\httpd-fs\imgs\core-s.svg
+copy /Y imgs\logo.gif ..\..\..\uip\apps\webserver\httpd-fs\imgs\logo.gif
+
+mkdir ..\..\..\uip\apps\webserver\httpd-fs\js
+copy /Y js\ctrlui.min.js ..\..\..\uip\apps\webserver\httpd-fs\js\ctrlui.min.js
+copy /Y js\FileSaver.min.js ..\..\..\uip\apps\webserver\httpd-fs\js\FileSaver.min.js
+copy /Y js\jszip.min.js ..\..\..\uip\apps\webserver\httpd-fs\js\jszip.min.js
+copy /Y js\linq.min.js ..\..\..\uip\apps\webserver\httpd-fs\js\linq.min.js
+copy /Y js\mscorlib.min.js ..\..\..\uip\apps\webserver\httpd-fs\js\mscorlib.min.js
+
+mkdir ..\..\..\uip\apps\webserver\httpd-fs\js\images
+copy /Y js\images\ajax-loader.gif ..\..\..\uip\apps\webserver\httpd-fs\js\images\ajax-loader.gif
+
+mkdir ..\..\..\uip\apps\webserver\httpd-fs\templates
+copy /Y templates\main.c ..\..\..\uip\apps\webserver\httpd-fs\templates\main.c
+copy /Y templates\main.cfg ..\..\..\uip\apps\webserver\httpd-fs\templates\main.cfg
+copy /Y templates\main.h ..\..\..\uip\apps\webserver\httpd-fs\templates\main.h
+
+mkdir ..\..\..\uip\apps\webserver\httpd-fs\themes
+copy /Y themes\ecn-theme.min.css ..\..\..\uip\apps\webserver\httpd-fs\themes\ecn-theme.min.css
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/css/ecn_gen.css
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/css/ecn_gen.css	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/css/ecn_gen.css	(revision 101)
@@ -0,0 +1,228 @@
+﻿.ecn-navmenu-panel {
+    visibility: visible;
+    position: relative;
+    width: auto;
+    transition: none !important;
+    transform: none !important;
+    -webkit-transform: none !important;
+}
+
+    .ecn-navmenu-panel .ui-collapsible-set {
+        margin: 0.5em 0px;
+    }
+
+.ecn-content .ui-collapsible-set {
+    margin: 0.5em 0px;
+}
+
+.ecn-code {
+    width: auto;
+    height: 25em;
+    overflow: scroll;
+    font-size: small;
+    letter-spacing: 0px;
+    line-height: 100%;
+}
+
+@media (min-width: 50em) {
+    .ecn-navmenu-panel {
+        display: block;
+        float: left;
+        width: 28%;
+        z-index: 0;
+    }
+
+        .ecn-navmenu-panel .ui-panel-inner {
+            padding-top: 0px;
+            padding-bottom: 0px;
+            background-color: #f9f9f9;
+        }
+
+    .ecn-content {
+        width: 67%;
+        float: right;
+    }
+}
+
+@media (min-width: 60em) {
+    .ecn-code {
+        width: 50em;
+    }
+}
+
+.ecnl_light_blue {
+    background-color: #7f7fff;
+}
+
+.ecnl_light_gray {
+    background-color: #7f7f7f;
+}
+
+.ecnl_light_green {
+    background-color: #7fff7f;
+}
+
+.ecnl_pink {
+    background-color: #ffff7f;
+}
+
+.ecnl_violet {
+    background-color: #ff7fff;
+}
+
+.ecnl_window {
+    background-color: #ffffff;
+}
+
+.ecnl_pink .ui-input-text {
+    -webkit-box-shadow: 0 0 12px #ffff7f;
+    -moz-box-shadow: 0 0 12px #ffff7f;
+    box-shadow: 0 0 12px #ffff7f;
+}
+
+.ecnl_violet .ui-input-text:not(:focus) {
+    -webkit-box-shadow: 0 0 12px #ff7fff;
+    -moz-box-shadow: 0 0 12px #ff7fff;
+    box-shadow: 0 0 12px #ff7fff;
+}
+
+.ecnl_light_green .ui-slider-input,
+.ecnl_light_green .ui-radio,
+.ecnl_light_green .ui-input-text:not(:focus) {
+    -webkit-box-shadow: 0 0 12px #7fff7f;
+    -moz-box-shadow: 0 0 12px #7fff7f;
+    box-shadow: 0 0 12px #7fff7f;
+}
+
+.ecnl_light_blue .ui-slider-input,
+.ecnl_light_blue .ui-radio,
+.ecnl_light_blue .ui-input-text:not(:focus) {
+    -webkit-box-shadow: 0 0 12px #7f7fff;
+    -moz-box-shadow: 0 0 12px #7f7fff;
+    box-shadow: 0 0 12px #7f7fff;
+}
+
+.ui-input-text .ui-icon-back {
+    position: absolute;
+    right: 2.375em;
+    top: 50%;
+    margin: -14px .3125em 0;
+    border: 0;
+    background-color: transparent;
+    z-index: 3;
+}
+
+.ui-li-divider div .ui-btn {
+    position: absolute;
+    right: 0;
+    top: 50%;
+    margin: -14px .3125em 0;
+    border: 0;
+    background-color: transparent;
+    z-index: 3;
+}
+
+.ui-input-datebox .ui-icon-calendar,
+.ui-input-datebox .ui-icon-grid,
+.ui-input-datebox .ui-icon-clock {
+    position: absolute;
+    right: 0;
+    top: 50%;
+    margin: -14px .3125em 0;
+    border: 0;
+    background-color: transparent;
+    z-index: 3;
+}
+
+.ui-panel-inner ul.ui-listview li.li-select a.ui-btn,
+.ui-panel-inner ul.ui-listview li.li-select a.ui-btn:hover {
+    background-color: #3388cc /*{a-active-background-color}*/;
+    border-color: #3388cc /*{a-active-border}*/;
+    color: #fff /*{a-active-color}*/;
+    text-shadow: 0 /*{a-active-shadow-x}*/ 1px /*{a-active-shadow-y}*/ 0 /*{a-active-shadow-radius}*/ #005599 /*{a-active-shadow-color}*/;
+}
+
+@media (max-width:40em) {
+}
+
+@media (min-width:28em) {
+    .ui-field-contain, .ui-mobile fieldset.ui-field-contain {
+        padding: 0;
+        margin: 1em 0;
+        border-bottom-width: 0;
+    }
+
+        .ui-field-contain:before, .ui-field-contain:after {
+            content: "";
+            display: table;
+        }
+
+        .ui-field-contain:after {
+            clear: both;
+        }
+
+        .ui-field-contain > label, .ui-field-contain .ui-controlgroup-label, .ui-field-contain > .ui-rangeslider > label {
+            float: left;
+            width: 20%;
+            margin: .5em 2% 0 0;
+            overflow: hidden;
+            text-overflow: ellipsis;
+        }
+
+    .ui-popup .ui-field-contain > label, .ui-popup .ui-field-contain .ui-controlgroup-label, .ui-popup .ui-field-contain > .ui-rangeslider > label {
+        float: none;
+        width: auto;
+        margin: 0 0 .4em;
+    }
+
+    .ui-field-contain > label ~ [class*=ui-], .ui-field-contain .ui-controlgroup-controls {
+        float: left;
+        width: 78%;
+        -webkit-box-sizing: border-box;
+        -moz-box-sizing: border-box;
+        box-sizing: border-box;
+    }
+
+    .ui-hide-label > label ~ [class*=ui-], .ui-hide-label .ui-controlgroup-controls, .ui-popup .ui-field-contain > label ~ [class*=ui-], .ui-popup .ui-field-contain .ui-controlgroup-controls {
+        float: none;
+        width: 100%;
+    }
+
+    .ui-field-contain > label ~ .ui-btn-inline {
+        width: auto;
+        margin-right: .625em;
+    }
+
+        .ui-field-contain > label ~ .ui-btn-inline.ui-btn-icon-notext {
+            width: 1.75em;
+        }
+}
+
+.ui-mobile label, div.ui-controlgroup-label {
+    overflow: hidden;
+    text-overflow: ellipsis;
+}
+
+.ui-input-search .ui-input-clear-hidden, .ui-input-text .ui-input-clear-hidden {
+    display: none;
+}
+
+.ui-listview .ui-li-divider.ui-last-child a {
+    color: #000;
+}
+
+.ui-datebox-dboxin div input  {
+    width: 100%;
+}
+
+.ui-slider-track {
+    margin: 0 15px 0 100px;
+}
+
+input.ui-slider-input {
+    width: 70px;
+}
+
+.pin .ui-field-contain {
+    margin: 0.3em 0;
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassGroupList.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassGroupList.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassGroupList.json	(revision 101)
@@ -0,0 +1,48 @@
+[
+	{
+		"classGroupCode":0,
+		"description":"ã»ã³ãµã¼é¢é£æ©å¨",
+		"define":"EOJ_X1_SENSOR"
+	},
+	{
+		"classGroupCode":1,
+		"description":"ç©ºèª¿é¢é£æ©å¨",
+		"define":"EOJ_X1_AIR_CONDITIONER"
+	},
+	{
+		"classGroupCode":2,
+		"description":"ä½å®
+ã»è¨­åé¢é£æ©å¨",
+		"define":"EOJ_X1_AMENITY"
+	},
+	{
+		"classGroupCode":3,
+		"description":"èª¿çã»å®¶äºé¢é£æ©å¨",
+		"define":"EOJ_X1_HOUSEWORK"
+	},
+	{
+		"classGroupCode":4,
+		"description":"å¥åº·é¢é£æ©å¨",
+		"define":"EOJ_X1_WELLNESS"
+	},
+	{
+		"classGroupCode":5,
+		"description":"ç®¡çã»æä½é¢é£æ©å¨",
+		"define":"EOJ_X1_CONTROLLER"
+	},
+	{
+		"classGroupCode":6,
+		"description":"AVé¢é£æ©å¨",
+		"define":"EOJ_X1_AUDIO_VISUAL"
+	},
+	{
+		"classGroupCode":14,
+		"description":"ãã­ãã¡ã¤ã«",
+		"define":"EOJ_X1_PROFILE"
+	},
+	{
+		"classGroupCode":15,
+		"description":"ã¦ã¼ã¶ã¼å®ç¾©",
+		"define":"EOJ_X1_USER_DEFINED"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList00.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList00.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList00.json	(revision 101)
@@ -0,0 +1,314 @@
+[
+	{
+		"classCode":1,
+		"description":"ã¬ã¹æ¼ãã»ã³ãµ",
+		"name":"GAS_LEAK_SENSOR_EOBJ",
+		"define":"EOJ_X2_GAS_LEAK_SENSOR",
+		"type":"gas_leak_sensor_t"
+	},
+	{
+		"classCode":2,
+		"description":"é²ç¯ã»ã³ãµ",
+		"name":"CRIME_PREVENTION_SENSOR_EOBJ",
+		"define":"EOJ_X2_CRIME_PREVENTION_SENSOR",
+		"type":"crime_prevention_sensor_t"
+	},
+	{
+		"classCode":3,
+		"description":"éå¸¸ãã¿ã³",
+		"name":"EMERGENCY_BUTTON_EOBJ",
+		"define":"EOJ_X2_EMERGENCY_BUTTON",
+		"type":"emergency_button_t"
+	},
+	{
+		"classCode":4,
+		"description":"ææ¥ç¨ã»ã³ãµ",
+		"name":"FIRST_AID_SENSOR_EOBJ",
+		"define":"EOJ_X2_FIRST_AID_SENSOR",
+		"type":"first_aid_sensor_t"
+	},
+	{
+		"classCode":5,
+		"description":"å°éã»ã³ãµ",
+		"name":"EARTHQUAKE_SENSOR_EOBJ",
+		"define":"EOJ_X2_EARTHQUAKE_SENSOR",
+		"type":"earthquake_sensor_t"
+	},
+	{
+		"classCode":6,
+		"description":"æ¼é»ã»ã³ãµ",
+		"name":"ELECTRIC_LEAK_SENSOR_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_LEAK_SENSOR",
+		"type":"electric_leak_sensor_t"
+	},
+	{
+		"classCode":7,
+		"description":"äººä½æ¤ç¥ã»ã³ãµ",
+		"name":"HUMAN_DETECTION_SENSOR_EOBJ",
+		"define":"EOJ_X2_HUMAN_DETECTION_SENSOR",
+		"type":"human_detection_sensor_t"
+	},
+	{
+		"classCode":8,
+		"description":"æ¥å®¢ã»ã³ãµ",
+		"name":"VISITOR_SENSOR_EOBJ",
+		"define":"EOJ_X2_VISITOR_SENSOR",
+		"type":"visitor_sensor_t"
+	},
+	{
+		"classCode":9,
+		"description":"å¼ã³åºãã»ã³ãµ",
+		"name":"CALL_SENSOR_EOBJ",
+		"define":"EOJ_X2_CALL_SENSOR",
+		"type":"call_sensor_t"
+	},
+	{
+		"classCode":10,
+		"description":"çµé²ã»ã³ãµ",
+		"name":"CONDENSATION_SENSOR_EOBJ",
+		"define":"EOJ_X2_CONDENSATION_SENSOR",
+		"type":"condensation_sensor_t"
+	},
+	{
+		"classCode":11,
+		"description":"ç©ºæ°æ±æã»ã³ãµ",
+		"name":"AIR_POLLUTION_SENSOR_EOBJ",
+		"define":"EOJ_X2_AIR_POLLUTION_SENSOR",
+		"type":"air_pollution_sensor_t"
+	},
+	{
+		"classCode":12,
+		"description":"é
+¸ç´ ã»ã³ãµ",
+		"name":"OXYGEN_SENSOR_EOBJ",
+		"define":"EOJ_X2_OXYGEN_SENSOR",
+		"type":"oxygen_sensor_t"
+	},
+	{
+		"classCode":13,
+		"description":"ç
+§åº¦ã»ã³ãµ",
+		"name":"ILLUMINANCE_SENSOR_EOBJ",
+		"define":"EOJ_X2_ILLUMINANCE_SENSOR",
+		"type":"illuminance_sensor_t"
+	},
+	{
+		"classCode":14,
+		"description":"é³ã»ã³ãµ",
+		"name":"SOUND_SENSOR_EOBJ",
+		"define":"EOJ_X2_SOUND_SENSOR",
+		"type":"sound_sensor_t"
+	},
+	{
+		"classCode":15,
+		"description":"æå½ã»ã³ãµ",
+		"name":"MAILING_SENSOR_EOBJ",
+		"define":"EOJ_X2_MAILING_SENSOR",
+		"type":"mailing_sensor_t"
+	},
+	{
+		"classCode":16,
+		"description":"éè·ã»ã³ãµ",
+		"name":"WEIGHT_SENSOR_EOBJ",
+		"define":"EOJ_X2_WEIGHT_SENSOR",
+		"type":"weight_sensor_t"
+	},
+	{
+		"classCode":17,
+		"description":"æ¸©åº¦ã»ã³ãµ",
+		"name":"TEMPERATURE_SENSOR_EOBJ",
+		"define":"EOJ_X2_TEMPERATURE_SENSOR",
+		"type":"temperature_sensor_t"
+	},
+	{
+		"classCode":18,
+		"description":"æ¹¿åº¦ã»ã³ãµ",
+		"name":"HUMIDITY_SENSOR_EOBJ",
+		"define":"EOJ_X2_HUMIDITY_SENSOR",
+		"type":"humidity_sensor_t"
+	},
+	{
+		"classCode":19,
+		"description":"é¨ã»ã³ãµ",
+		"name":"RAIN_SENSOR_EOBJ",
+		"define":"EOJ_X2_RAIN_SENSOR",
+		"type":"rain_sensor_t"
+	},
+	{
+		"classCode":20,
+		"description":"æ°´ä½ã»ã³ãµ",
+		"name":"WATER_LEVEL_SENSOR_EOBJ",
+		"define":"EOJ_X2_WATER_LEVEL_SENSOR",
+		"type":"water_level_sensor_t"
+	},
+	{
+		"classCode":21,
+		"description":"é¢¨åæ°´ä½ã»ã³ãµ",
+		"name":"BATH_WATER_LEVEL_SENSOR_EOBJ",
+		"define":"EOJ_X2_BATH_WATER_LEVEL_SENSOR",
+		"type":"bath_water_level_sensor_t"
+	},
+	{
+		"classCode":22,
+		"description":"é¢¨åæ²¸ãä¸ããã»ã³ãµ",
+		"name":"BATH_HEATING_STATUS_SENSOR_EOBJ",
+		"define":"EOJ_X2_BATH_HEATING_STATUS_SENSOR",
+		"type":"bath_heating_status_sensor_t"
+	},
+	{
+		"classCode":23,
+		"description":"æ°´æ¼ãã»ã³ãµ",
+		"name":"WATER_LEAK_SENSOR_EOBJ",
+		"define":"EOJ_X2_WATER_LEAK_SENSOR",
+		"type":"water_leak_sensor_t"
+	},
+	{
+		"classCode":24,
+		"description":"æ°´ããµãã»ã³ãµ",
+		"name":"WATER_OVERFLOW_SENSOR_EOBJ",
+		"define":"EOJ_X2_WATER_OVERFLOW_SENSOR",
+		"type":"water_overflow_sensor_t"
+	},
+	{
+		"classCode":25,
+		"description":"ç«ç½ã»ã³ãµ",
+		"name":"FIRE_SENSOR_EOBJ",
+		"define":"EOJ_X2_FIRE_SENSOR",
+		"type":"fire_sensor_t"
+	},
+	{
+		"classCode":26,
+		"description":"ã¿ãã³ç
+ã»ã³ãµ",
+		"name":"CIGARETTE_SMOKE_SENSOR_EOBJ",
+		"define":"EOJ_X2_CIGARETTE_SMOKE_SENSOR",
+		"type":"cigarette_smoke_sensor_t"
+	},
+	{
+		"classCode":27,
+		"description":"CO2ã»ã³ãµ",
+		"name":"CO2_SENSOR_EOBJ",
+		"define":"EOJ_X2_CO2_SENSOR",
+		"type":"co2sensor_t"
+	},
+	{
+		"classCode":28,
+		"description":"ã¬ã¹ã»ã³ãµ",
+		"name":"GAS_SENSOR_EOBJ",
+		"define":"EOJ_X2_GAS_SENSOR",
+		"type":"gas_sensor_t"
+	},
+	{
+		"classCode":29,
+		"description":"VOCã»ã³ãµ",
+		"name":"VOC_SENSOR_EOBJ",
+		"define":"EOJ_X2_VOC_SENSOR",
+		"type":"vocsensor_t"
+	},
+	{
+		"classCode":30,
+		"description":"å·®å§ã»ã³ãµ",
+		"name":"DIFFERENTIAL_PRESSURE_SENSOR_EOBJ",
+		"define":"EOJ_X2_DIFFERENTIAL_PRESSURE_SENSOR",
+		"type":"differential_pressure_sensor_t"
+	},
+	{
+		"classCode":31,
+		"description":"é¢¨éã»ã³ãµ",
+		"name":"AIR_SPEED_SENSOR_EOBJ",
+		"define":"EOJ_X2_AIR_SPEED_SENSOR",
+		"type":"air_speed_sensor_t"
+	},
+	{
+		"classCode":32,
+		"description":"è­ãã»ã³ãµ",
+		"name":"ODOR_SENSOR_EOBJ",
+		"define":"EOJ_X2_ODOR_SENSOR",
+		"type":"odor_sensor_t"
+	},
+	{
+		"classCode":33,
+		"description":"çã»ã³ãµ",
+		"name":"FLAME_SENSOR_EOBJ",
+		"define":"EOJ_X2_FLAME_SENSOR",
+		"type":"flame_sensor_t"
+	},
+	{
+		"classCode":34,
+		"description":"é»åéã»ã³ãµ",
+		"name":"ELECTRIC_ENERGY_SENSOR_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_ENERGY_SENSOR",
+		"type":"electric_energy_sensor_t"
+	},
+	{
+		"classCode":35,
+		"description":"é»æµå¤ã»ã³ãµ",
+		"name":"CURRENT_VALUE_SENSOR_EOBJ",
+		"define":"EOJ_X2_CURRENT_VALUE_SENSOR",
+		"type":"current_value_sensor_t"
+	},
+	{
+		"classCode":36,
+		"description":"æ¼å
+ã»ã³ãµ",
+		"name":"DAYLIGHT_SENSOR_EOBJ",
+		"define":"EOJ_X2_DAYLIGHT_SENSOR",
+		"type":"daylight_sensor_t"
+	},
+	{
+		"classCode":37,
+		"description":"æ°´æµéã»ã³ãµ",
+		"name":"WATER_FLOW_RATE_SENSOR_EOBJ",
+		"define":"EOJ_X2_WATER_FLOW_RATE_SENSOR",
+		"type":"water_flow_rate_sensor_t"
+	},
+	{
+		"classCode":38,
+		"description":"å¾®åã»ã³ãµ",
+		"name":"MICROMOTION_SENSOR_EOBJ",
+		"define":"EOJ_X2_MICROMOTION_SENSOR",
+		"type":"micromotion_sensor_t"
+	},
+	{
+		"classCode":39,
+		"description":"ééã»ã³ãµ",
+		"name":"PASSAGE_SENSOR_EOBJ",
+		"define":"EOJ_X2_PASSAGE_SENSOR",
+		"type":"passage_sensor_t"
+	},
+	{
+		"classCode":40,
+		"description":"å¨åºã»ã³ãµ",
+		"name":"BED_PRESENCE_SENSOR_EOBJ",
+		"define":"EOJ_X2_BED_PRESENCE_SENSOR",
+		"type":"bed_presence_sensor_t"
+	},
+	{
+		"classCode":41,
+		"description":"ééã»ã³ãµ",
+		"name":"OPEN_CLOSE_SENSOR_EOBJ",
+		"define":"EOJ_X2_OPEN_CLOSE_SENSOR",
+		"type":"open_close_sensor_t"
+	},
+	{
+		"classCode":42,
+		"description":"æ´»åéã»ã³ãµ",
+		"name":"ACTIVITY_AMOUNT_SENSOR_EOBJ",
+		"define":"EOJ_X2_ACTIVITY_AMOUNT_SENSOR",
+		"type":"activity_amount_sensor_t"
+	},
+	{
+		"classCode":43,
+		"description":"äººä½ä½ç½®ã»ã³ãµ",
+		"name":"HUMAN_BODY_LOCATION_SENSOR_EOBJ",
+		"define":"EOJ_X2_HUMAN_BODY_LOCATION_SENSOR",
+		"type":"human_body_location_sensor_t"
+	},
+	{
+		"classCode":44,
+		"description":"éªã»ã³ãµ",
+		"name":"SNOW_SENSOR_EOBJ",
+		"define":"EOJ_X2_SNOW_SENSOR",
+		"type":"snow_sensor_t"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList01.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList01.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList01.json	(revision 101)
@@ -0,0 +1,223 @@
+[
+	{
+		"classCode":48,
+		"description":"å®¶åº­ç¨ã¨ã¢ã³ã³",
+		"name":"HOME_AIR_CONDITIONER_EOBJ",
+		"define":"EOJ_X2_HOME_AIR_CONDITIONER",
+		"type":"home_air_conditioner_t"
+	},
+	{
+		"classCode":49,
+		"description":"å·é¢¨æ©",
+		"name":"COLD_BLASTER_EOBJ",
+		"define":"EOJ_X2_COLD_BLASTER",
+		"type":"cold_blaster_t"
+	},
+	{
+		"classCode":50,
+		"description":"æé¢¨æ©",
+		"name":"ELECTRIC_FAN_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_FAN",
+		"type":"electric_fan_t"
+	},
+	{
+		"classCode":51,
+		"description":"ææ°æ",
+		"name":"VENTILATION_FAN_EOBJ",
+		"define":"EOJ_X2_VENTILATION_FAN",
+		"type":"ventilation_fan_t"
+	},
+	{
+		"classCode":52,
+		"description":"ç©ºèª¿ææ°æ",
+		"name":"AIR_CONDITIONING_VENTILATION_FAN_EOBJ",
+		"define":"EOJ_X2_AIR_CONDITIONING_VENTILATION_FAN",
+		"type":"air_conditioner_ventilation_fan_t"
+	},
+	{
+		"classCode":53,
+		"description":"ç©ºæ°æ¸
+æµå¨",
+		"name":"AIR_CLEANER_EOBJ",
+		"define":"EOJ_X2_AIR_CLEANER",
+		"type":"air_cleaner_t"
+	},
+	{
+		"classCode":54,
+		"description":"å·é¢¨æ",
+		"name":"COLD_BLAST_FAN_EOBJ",
+		"define":"EOJ_X2_COLD_BLAST_FAN",
+		"type":"cold_blast_fan_t"
+	},
+	{
+		"classCode":55,
+		"description":"ãµã¼ã­ã¥ã¬ã¼ã¿",
+		"name":"CIRCULATOR_EOBJ",
+		"define":"EOJ_X2_CIRCULATOR",
+		"type":"circulator_t"
+	},
+	{
+		"classCode":56,
+		"description":"é¤æ¹¿æ©",
+		"name":"DEHUMIDIFIER_EOBJ",
+		"define":"EOJ_X2_DEHUMIDIFIER",
+		"type":"dehumidifier_t"
+	},
+	{
+		"classCode":57,
+		"description":"å æ¹¿å¨",
+		"name":"HUMIDIFIER_EOBJ",
+		"define":"EOJ_X2_HUMIDIFIER",
+		"type":"humidifier_t"
+	},
+	{
+		"classCode":58,
+		"description":"å¤©äºæ",
+		"name":"CEILING_FAN_EOBJ",
+		"define":"EOJ_X2_CEILING_FAN",
+		"type":"ceiling_fan_t"
+	},
+	{
+		"classCode":59,
+		"description":"é»æ°ããã¤",
+		"name":"ELECTRIC_KOTATSU_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_KOTATSU",
+		"type":"electric_kotatsu_t"
+	},
+	{
+		"classCode":60,
+		"description":"é»æ°ããã",
+		"name":"ELECTRIC_HEATING_PAD_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_HEATING_PAD",
+		"type":"electric_heating_pad_t"
+	},
+	{
+		"classCode":61,
+		"description":"é»æ°æ¯å¸",
+		"name":"ELECTRIC_BLANKET_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_BLANKET",
+		"type":"electric_blanket_t"
+	},
+	{
+		"classCode":62,
+		"description":"ã¹ãã¼ã",
+		"name":"SPACE_HEATER_EOBJ",
+		"define":"EOJ_X2_SPACE_HEATER",
+		"type":"space_heater_t"
+	},
+	{
+		"classCode":63,
+		"description":"ããã«ãã¼ã¿",
+		"name":"PANEL_HEATER_EOBJ",
+		"define":"EOJ_X2_PANEL_HEATER",
+		"type":"panel_heater_t"
+	},
+	{
+		"classCode":64,
+		"description":"é»æ°ã«ã¼ããã",
+		"name":"ELECTRIC_CARPET_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_CARPET",
+		"type":"electric_carpet_t"
+	},
+	{
+		"classCode":65,
+		"description":"ãã­ã¢ãã¼ã¿",
+		"name":"FLOOR_HEATER_EOBJ",
+		"define":"EOJ_X2_FLOOR_HEATER",
+		"type":"floor_heater_t"
+	},
+	{
+		"classCode":66,
+		"description":"é»æ°ææ¿æ©",
+		"name":"ELECTRIC_HEATER_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_HEATER",
+		"type":"electric_heater_t"
+	},
+	{
+		"classCode":67,
+		"description":"ãã¡ã³ãã¼ã¿",
+		"name":"FAN_HEATER_EOBJ",
+		"define":"EOJ_X2_FAN_HEATER",
+		"type":"fan_heater_t"
+	},
+	{
+		"classCode":68,
+		"description":"å
+
+é»å¨",
+		"name":"BATTERY_CHARGER_EOBJ",
+		"define":"EOJ_X2_BATTERY_CHARGER",
+		"type":"battery_charger_t"
+	},
+	{
+		"classCode":69,
+		"description":"æ¥­åç¨ããã±ã¼ã¸ã¨ã¢ã³ã³å®¤å
+æ©",
+		"name":"PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_INDOOR_UNIT_EOBJ",
+		"define":"EOJ_X2_PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_INDOOR_UNIT",
+		"type":"package_type_commercial_air_conditioner_indoor_unit_t"
+	},
+	{
+		"classCode":70,
+		"description":"æ¥­åç¨ããã±ã¼ã¸ã¨ã¢ã³ã³å®¤å¤æ©",
+		"name":"PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_OUTDOOR_UNIT_EOBJ",
+		"define":"EOJ_X2_PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_OUTDOOR_UNIT",
+		"type":"package_type_commercial_air_conditioner_outdoor_unit_t"
+	},
+	{
+		"classCode":71,
+		"description":"æ¥­åç¨ããã±ã¼ã¸ã¨ã¢ã³ã³èç±ã¦ããã",
+		"name":"PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_THERMAL_STORAGE_UNIT_EOBJ",
+		"define":"EOJ_X2_PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_THERMAL_STORAGE_UNIT",
+		"type":"package_type_commercial_air_conditioner_thermal_storage_unit_t"
+	},
+	{
+		"classCode":72,
+		"description":"æ¥­åç¨ãã¡ã³ã³ã¤ã«ã¦ããã",
+		"name":"COMMERCIAL_FAN_COIL_UNIT_EOBJ",
+		"define":"EOJ_X2_COMMERCIAL_FAN_COIL_UNIT",
+		"type":"commercial_fan_coil_unit_t"
+	},
+	{
+		"classCode":73,
+		"description":"æ¥­åç¨ç©ºèª¿å·ç±æº(ãã©ã¼)",
+		"name":"COMMERCIAL_AIR_CONDITIONING_COLD_SOURCE_CHILLER_EOBJ",
+		"define":"EOJ_X2_COMMERCIAL_AIR_CONDITIONING_COLD_SOURCE_CHILLER",
+		"type":"commercial_air_conditioning_cold_source_chiller_t"
+	},
+	{
+		"classCode":74,
+		"description":"æ¥­åç¨ç©ºèª¿æ¸©ç±æº(ãã¤ã©ã¼)",
+		"name":"COMMERCIAL_AIR_CONDITIONING_HOT_SOURCE_BOILER_EOBJ",
+		"define":"EOJ_X2_COMMERCIAL_AIR_CONDITIONING_HOT_SOURCE_BOILER",
+		"type":"commercial_air_conditioning_hot_source_boiler_t"
+	},
+	{
+		"classCode":75,
+		"description":"æ¥­åç¨ç©ºèª¿VAV",
+		"name":"AIR_CONDITIONING_VAV_FOR_COMMERCIAL_APPLICATIONS_EOBJ",
+		"define":"EOJ_X2_AIR_CONDITIONING_VAV_FOR_COMMERCIAL_APPLICATIONS",
+		"type":"air_conditioning_vav_for_commercial_applications_t"
+	},
+	{
+		"classCode":76,
+		"description":"æ¥­åç¨ç©ºèª¿ã¨ã¢ãã³ããªã³ã°ã¦ããã",
+		"name":"AIR_HANDLING_UNIT_AIR_CONDITIONING_FOR_COMMERCIAL_APPLICATIONS_EOBJ",
+		"define":"EOJ_X2_AIR_HANDLING_UNIT_AIR_CONDITIONING_FOR_COMMERCIAL_APPLICATIONS",
+		"type":"air_handling_unit_air_conditioning_for_commercial_applications_t"
+	},
+	{
+		"classCode":77,
+		"description":"ã¦ãããã¯ã¼ã©ã¼",
+		"name":"UNIT_COOLER_EOBJ",
+		"define":"EOJ_X2_UNIT_COOLER",
+		"type":"unit_cooler_t"
+	},
+	{
+		"classCode":78,
+		"description":"æ¥­åç¨ã³ã³ãã³ã·ã³ã°ã¦ããã",
+		"name":"CONDENSING_UNIT_FOR_COMMERCIAL_APPLICATIONS_EOBJ",
+		"define":"EOJ_X2_CONDENSING_UNIT_FOR_COMMERCIAL_APPLICATIONS",
+		"type":"condensing_unit_for_commercial_applications_t"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList02.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList02.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList02.json	(revision 101)
@@ -0,0 +1,332 @@
+[
+	{
+		"classCode":96,
+		"description":"é»åãã©ã¤ã³ã",
+		"name":"ELECTRICALLY_OPERATED_SHADE_EOBJ",
+		"define":"EOJ_X2_ELECTRICALLY_OPERATED_SHADE",
+		"type":"electrically_operated_shade_t"
+	},
+	{
+		"classCode":97,
+		"description":"é»åã·ã£ãã¿ã¼",
+		"name":"ELECTRICALLY_OPERATED_SHUTTER_EOBJ",
+		"define":"EOJ_X2_ELECTRICALLY_OPERATED_SHUTTER",
+		"type":"electric_shutter_t"
+	},
+	{
+		"classCode":98,
+		"description":"é»åã«ã¼ãã³",
+		"name":"ELECTRICALLY_OPERATED_CURTAIN_EOBJ",
+		"define":"EOJ_X2_ELECTRICALLY_OPERATED_CURTAIN",
+		"type":"electrically_operated_curtain_t"
+	},
+	{
+		"classCode":99,
+		"description":"é»åé¨æ¸",
+		"name":"ELECTRICALLY_OPERATED_STORM_WINDOW_EOBJ",
+		"define":"EOJ_X2_ELECTRICALLY_OPERATED_STORM_WINDOW",
+		"type":"electrically_operated_curtain_t"
+	},
+	{
+		"classCode":100,
+		"description":"é»åã¬ã¬ã¼ã¸",
+		"name":"ELECTRICALLY_OPERATED_DOOR_EOBJ",
+		"define":"EOJ_X2_ELECTRICALLY_OPERATED_DOOR",
+		"type":"electrically_operated_door_t"
+	},
+	{
+		"classCode":101,
+		"description":"é»åå¤©çª",
+		"name":"ELECTRICALLY_OPERATED_SKYLIGHT_EOBJ",
+		"define":"EOJ_X2_ELECTRICALLY_OPERATED_SKYLIGHT",
+		"type":"electrically_operated_skylight_t"
+	},
+	{
+		"classCode":102,
+		"description":"ãªã¼ãã³ã°ï¼æ¥ããï¼",
+		"name":"AWNING_EOBJ",
+		"define":"EOJ_X2_AWNING",
+		"type":"awning_t"
+	},
+	{
+		"classCode":103,
+		"description":"æ£æ°´å¨ï¼åº­ç¨ï¼",
+		"name":"GARDEN_SPRINKLER_EOBJ",
+		"define":"EOJ_X2_GARDEN_SPRINKLER",
+		"type":"garden_sprinkler_t"
+	},
+	{
+		"classCode":104,
+		"description":"æ£æ°´å¨ï¼ç«ç½ç¨ï¼",
+		"name":"FIRE_SPRINKLER_EOBJ",
+		"define":"EOJ_X2_FIRE_SPRINKLER",
+		"type":"fire_sprinkler_t"
+	},
+	{
+		"classCode":105,
+		"description":"å´æ°´",
+		"name":"FOUNTAIN_EOBJ",
+		"define":"EOJ_X2_FOUNTAIN",
+		"type":"fountain_t"
+	},
+	{
+		"classCode":106,
+		"description":"ç¬éæ¹¯æ²¸å¨",
+		"name":"INSTANTANEOUS_WATER_HEATER_EOBJ",
+		"define":"EOJ_X2_INSTANTANEOUS_WATER_HEATER",
+		"type":"instantaneous_water_heater_t"
+	},
+	{
+		"classCode":107,
+		"description":"é»æ°æ¸©æ°´å¨",
+		"name":"ELECTRIC_WATER_HEATER_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_WATER_HEATER",
+		"type":"electric_water_heater_t"
+	},
+	{
+		"classCode":108,
+		"description":"å¤ªé½ç±æ¸©æ°´å¨",
+		"name":"SOLAR_WATER_HEATER_EOBJ",
+		"define":"EOJ_X2_SOLAR_WATER_HEATER",
+		"type":"solar_water_heater_t"
+	},
+	{
+		"classCode":109,
+		"description":"å¾ªç°ãã³ã",
+		"name":"CIRCULATION_PUMP_EOBJ",
+		"define":"EOJ_X2_CIRCULATION_PUMP",
+		"type":"circulation_pump_t"
+	},
+	{
+		"classCode":110,
+		"description":"é»æ°ä¾¿åº§ï¼æ¸©æ°´æ´æµä¾¿åº§ã»ææ¿ä¾¿åº§ãªã©ï¼",
+		"name":"BIDET_EQUIPPED_TOILET_EOBJ",
+		"define":"EOJ_X2_BIDET_EQUIPPED_TOILET",
+		"type":"electric_toilet_seat_t"
+	},
+	{
+		"classCode":111,
+		"description":"é»æ°é ",
+		"name":"ELECTRIC_KEY_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_KEY",
+		"type":"electric_lock_t"
+	},
+	{
+		"classCode":112,
+		"description":"ã¬ã¹å
+å¼",
+		"name":"GAS_LINE_VALVE_EOBJ",
+		"define":"EOJ_X2_GAS_LINE_VALVE",
+		"type":"gas_line_valve_t"
+	},
+	{
+		"classCode":113,
+		"description":"ãã¼ã ãµã¦ã",
+		"name":"HOME_SAUNA_EOBJ",
+		"define":"EOJ_X2_HOME_SAUNA",
+		"type":"home_sauna_t"
+	},
+	{
+		"classCode":114,
+		"description":"ç¬éå¼çµ¦æ¹¯å¨",
+		"name":"HOT_WATER_GENERATOR_EOBJ",
+		"define":"EOJ_X2_HOT_WATER_GENERATOR",
+		"type":"instantaneous_water_heater_t"
+	},
+	{
+		"classCode":115,
+		"description":"æµ´å®¤ææ¿ä¹¾ç¥æ©",
+		"name":"BATHROOM_DRYER_EOBJ",
+		"define":"EOJ_X2_BATHROOM_DRYER",
+		"type":"bathroom_heater_and_dryer_t"
+	},
+	{
+		"classCode":116,
+		"description":"ãã¼ã ã¨ã¬ãã¼ã¿",
+		"name":"HOME_ELEVATOR_EOBJ",
+		"define":"EOJ_X2_HOME_ELEVATOR",
+		"type":"home_elevator_t"
+	},
+	{
+		"classCode":117,
+		"description":"é»åéä»åã",
+		"name":"ELECTRICALLY_OPERATED_ROOM_DIVIDER_EOBJ",
+		"define":"EOJ_X2_ELECTRICALLY_OPERATED_ROOM_DIVIDER",
+		"type":"electrically_operated_room_divider_t"
+	},
+	{
+		"classCode":118,
+		"description":"æ°´å¹³ãã©ã³ã¹ãã¡",
+		"name":"HORIZONTAL_TRANSFER_EOBJ",
+		"define":"EOJ_X2_HORIZONTAL_TRANSFER",
+		"type":"horizontal_transfer_t"
+	},
+	{
+		"classCode":119,
+		"description":"é»åç©å¹²ã",
+		"name":"ELECTRICALLY_OPERATED_CLOTHES_DRYING_POLE_EOBJ",
+		"define":"EOJ_X2_ELECTRICALLY_OPERATED_CLOTHES_DRYING_POLE",
+		"type":"electrically_operated_clothes_drying_pole_t"
+	},
+	{
+		"classCode":120,
+		"description":"æµåæ§½",
+		"name":"SEPTIC_TANK_EOBJ",
+		"define":"EOJ_X2_SEPTIC_TANK",
+		"type":"septic_tank_t"
+	},
+	{
+		"classCode":121,
+		"description":"ä½å®
+ç¨å¤ªé½å
+çºé»",
+		"name":"HOME_SOLAR_POWER_GENERATION_EOBJ",
+		"define":"EOJ_X2_HOME_SOLAR_POWER_GENERATION",
+		"type":"household_solar_power_generation_t"
+	},
+	{
+		"classCode":122,
+		"description":"å·æ¸©æ°´ç±æºæ©",
+		"name":"COLD_AND_HOT_WATER_HEAT_SOURCE_EQUIPMENT_EOBJ",
+		"define":"EOJ_X2_COLD_AND_HOT_WATER_HEAT_SOURCE_EQUIPMENT",
+		"type":"cold_or_hot_water_heat_source_equipment_t"
+	},
+	{
+		"classCode":123,
+		"description":"åºææ¿",
+		"name":"FLOOR_HEATING_EOBJ",
+		"define":"EOJ_X2_FLOOR_HEATING",
+		"type":"floor_heater_t"
+	},
+	{
+		"classCode":124,
+		"description":"çæé»æ± ",
+		"name":"FUEL_CELL_EOBJ",
+		"define":"EOJ_X2_FUEL_CELL",
+		"type":"fuel_cell_t"
+	},
+	{
+		"classCode":125,
+		"description":"èé»æ± ",
+		"name":"STORAGE_BATTERY_EOBJ",
+		"define":"EOJ_X2_STORAGE_BATTERY",
+		"type":"storage_battery_t"
+	},
+	{
+		"classCode":126,
+		"description":"é»æ°èªåè»å
+
+æ¾é»ã·ã¹ãã ",
+		"name":"ELECTRIC_VEHICLE_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_VEHICLE",
+		"type":"electric_vehicle_charger_discharger_t"
+	},
+	{
+		"classCode":127,
+		"description":"ã¨ã³ã¸ã³ã³ã¼ã¸ã§ãã¬ã¼ã·ã§ã³",
+		"name":"ENGINE_COGENERATION_EOBJ",
+		"define":"EOJ_X2_ENGINE_COGENERATION",
+		"type":"engine_cogeneration_t"
+	},
+	{
+		"classCode":128,
+		"description":"é»åéã¡ã¼ã¿",
+		"name":"ELECTRIC_ENERGY_METER_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_ENERGY_METER",
+		"type":"watt_hour_meter_t"
+	},
+	{
+		"classCode":129,
+		"description":"æ°´æµéã¡ã¼ã¿",
+		"name":"WATER_FLOW_METER_EOBJ",
+		"define":"EOJ_X2_WATER_FLOW_METER",
+		"type":"water_flowmeter_t"
+	},
+	{
+		"classCode":130,
+		"description":"ã¬ã¹ã¡ã¼ã¿",
+		"name":"GAS_METER_EOBJ",
+		"define":"EOJ_X2_GAS_METER",
+		"type":"gas_meter_t"
+	},
+	{
+		"classCode":131,
+		"description":"ï¼¬ï¼°ã¬ã¹ã¡ã¼ã¿",
+		"name":"LP_GAS_METERS_EOBJ",
+		"define":"EOJ_X2_LP_GAS_METERS",
+		"type":"lpgas_meter_t"
+	},
+	{
+		"classCode":132,
+		"description":"æè¨",
+		"name":"CLOCK_EOBJ",
+		"define":"EOJ_X2_CLOCK",
+		"type":"clock_t"
+	},
+	{
+		"classCode":133,
+		"description":"èªåãã¢",
+		"name":"AUTOMATIC_DOOR_EOBJ",
+		"define":"EOJ_X2_AUTOMATIC_DOOR",
+		"type":"automatic_door_t"
+	},
+	{
+		"classCode":134,
+		"description":"æ¥­åç¨ã¨ã¬ãã¼ã¿",
+		"name":"COMMERCIAL_ELEVATOR_EOBJ",
+		"define":"EOJ_X2_COMMERCIAL_ELEVATOR",
+		"type":"commercial_elevator_t"
+	},
+	{
+		"classCode":135,
+		"description":"åé»ç¤ã¡ã¼ã¿ãªã³ã°",
+		"name":"DISTRIBUTION_PANEL_METERING_EOBJ",
+		"define":"EOJ_X2_DISTRIBUTION_PANEL_METERING",
+		"type":"power_distribution_board_metering_t"
+	},
+	{
+		"classCode":136,
+		"description":"ã¹ãã¼ãé»åéã¡ã¼ã¿",
+		"name":"SMART_ELECTRIC_ENERGY_METER_EOBJ",
+		"define":"EOJ_X2_SMART_ELECTRIC_ENERGY_METER",
+		"type":"smart_electric_energy_meter_t"
+	},
+	{
+		"classCode":137,
+		"description":"ã¹ãã¼ãã¬ã¹ã¡ã¼ã¿",
+		"name":"SMART_GAS_METER_EOBJ",
+		"define":"EOJ_X2_SMART_GAS_METER",
+		"type":"smart_gas_meter_t"
+	},
+	{
+		"classCode":144,
+		"description":"ä¸è¬ç
+§æ",
+		"name":"GENERAL_LIGHTING_CLASS_EOBJ",
+		"define":"EOJ_X2_GENERAL_LIGHTING_CLASS",
+		"type":"general_lighting_t"
+	},
+	{
+		"classCode":153,
+		"description":"éå¸¸ç
+§æ",
+		"name":"EMERGENCY_LIGHTING_EOBJ",
+		"define":"EOJ_X2_EMERGENCY_LIGHTING",
+		"type":"emergency_lighting_t"
+	},
+	{
+		"classCode":157,
+		"description":"è¨­åç
+§æ",
+		"name":"EQUIPMENT_LIGHT_EOBJ",
+		"define":"EOJ_X2_EQUIPMENT_LIGHT",
+		"type":"equipment_light_t"
+	},
+	{
+		"classCode":160,
+		"description":"ãã¶ã¼",
+		"name":"BUZZER_EOBJ",
+		"define":"EOJ_X2_BUZZER",
+		"type":"buzzer_t"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList03.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList03.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList03.json	(revision 101)
@@ -0,0 +1,254 @@
+[
+	{
+		"classCode":176,
+		"description":"ã³ã¼ãã¼ã¡ã¼ã«",
+		"name":"COFFEE_MACHINE_EOBJ",
+		"define":"EOJ_X2_COFFEE_MACHINE",
+		"type":"coffee_machine_t"
+	},
+	{
+		"classCode":177,
+		"description":"ã³ã¼ãã¼ãã«",
+		"name":"COFFEE_MILL_EOBJ",
+		"define":"EOJ_X2_COFFEE_MILL",
+		"type":"coffee_mill_t"
+	},
+	{
+		"classCode":178,
+		"description":"é»æ°ããã",
+		"name":"ELECTRIC_HOT_WATER_POT_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_HOT_WATER_POT",
+		"type":"electric_hot_water_pot_t"
+	},
+	{
+		"classCode":179,
+		"description":"é»æ°ããã",
+		"name":"ELECTRIC_STOVE_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_STOVE",
+		"type":"electric_stove_t"
+	},
+	{
+		"classCode":180,
+		"description":"ãã¼ã¹ã¿",
+		"name":"TOASTER_EOBJ",
+		"define":"EOJ_X2_TOASTER",
+		"type":"toaster_t"
+	},
+	{
+		"classCode":181,
+		"description":"ã¸ã¥ã¼ãµã»ãã­ãµ",
+		"name":"JUICER_FOOD_MIXER_EOBJ",
+		"define":"EOJ_X2_JUICER_FOOD_MIXER",
+		"type":"juicer_food_mixer_t"
+	},
+	{
+		"classCode":182,
+		"description":"ãã¼ããã­ã»ããµ",
+		"name":"FOOD_PROCESSOR_EOBJ",
+		"define":"EOJ_X2_FOOD_PROCESSOR",
+		"type":"food_processor_t"
+	},
+	{
+		"classCode":183,
+		"description":"å·åå·èµåº«",
+		"name":"REFRIGERATOR_FREEZER_EOBJ",
+		"define":"EOJ_X2_REFRIGERATOR_FREEZER",
+		"type":"refrigerator_t"
+	},
+	{
+		"classCode":184,
+		"description":"ãªã¼ãã³ã¬ã³ã¸",
+		"name":"COMBINATION_MICROWAVE_OVEN_EOBJ",
+		"define":"EOJ_X2_COMBINATION_MICROWAVE_OVEN",
+		"type":"combination_microwave_oven_t"
+	},
+	{
+		"classCode":185,
+		"description":"ã¯ãã­ã³ã°ãã¼ã¿",
+		"name":"COOKING_HEATER_EOBJ",
+		"define":"EOJ_X2_COOKING_HEATER",
+		"type":"cooking_heater_t"
+	},
+	{
+		"classCode":186,
+		"description":"ãªã¼ãã³",
+		"name":"OVEN_EOBJ",
+		"define":"EOJ_X2_OVEN",
+		"type":"oven_t"
+	},
+	{
+		"classCode":187,
+		"description":"çé£¯å¨",
+		"name":"RICE_COOKER_EOBJ",
+		"define":"EOJ_X2_RICE_COOKER",
+		"type":"rice_cooker_t"
+	},
+	{
+		"classCode":188,
+		"description":"é»å­ã¸ã£ã¼",
+		"name":"ELECTRONIC_JAR_EOBJ",
+		"define":"EOJ_X2_ELECTRONIC_JAR",
+		"type":"electronic_jar_t"
+	},
+	{
+		"classCode":189,
+		"description":"é£å¨æ´ãæ©",
+		"name":"DISH_WASHER_EOBJ",
+		"define":"EOJ_X2_DISH_WASHER",
+		"type":"dish_washer_t"
+	},
+	{
+		"classCode":190,
+		"description":"é£å¨ä¹¾ç¥æ©",
+		"name":"DISH_DRYER_EOBJ",
+		"define":"EOJ_X2_DISH_DRYER",
+		"type":"dish_dryer_t"
+	},
+	{
+		"classCode":191,
+		"description":"é»æ°ãã¡ã¤ãæ©",
+		"name":"ELECTRIC_RICE_CARD_COOKER_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_RICE_CARD_COOKER",
+		"type":"electric_rice_card_cooker_t"
+	},
+	{
+		"classCode":192,
+		"description":"ä¿æ¸©æ©",
+		"name":"KEEP_WARM_MACHINE_EOBJ",
+		"define":"EOJ_X2_KEEP_WARM_MACHINE",
+		"type":"keep_warm_machine_t"
+	},
+	{
+		"classCode":193,
+		"description":"ç²¾ç±³æ©",
+		"name":"RICE_MILL_EOBJ",
+		"define":"EOJ_X2_RICE_MILL",
+		"type":"rice_mill_t"
+	},
+	{
+		"classCode":194,
+		"description":"èªåè£½ãã³æ©",
+		"name":"AUTOMATIC_BREAD_COOKER_EOBJ",
+		"define":"EOJ_X2_AUTOMATIC_BREAD_COOKER",
+		"type":"automatic_bread_cooker_t"
+	},
+	{
+		"classCode":195,
+		"description":"ã¹ã­ã¼ã¯ãã«",
+		"name":"SLOW_COOKER_EOBJ",
+		"define":"EOJ_X2_SLOW_COOKER",
+		"type":"slow_cooker_t"
+	},
+	{
+		"classCode":196,
+		"description":"é»æ°æ¼¬ç©æ©",
+		"name":"ELECTRIC_PICKLES_COOKER_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_PICKLES_COOKER",
+		"type":"electric_pickles_cooker_t"
+	},
+	{
+		"classCode":197,
+		"description":"æ´æ¿¯æ©",
+		"name":"WASHING_MACHINE_EOBJ",
+		"define":"EOJ_X2_WASHING_MACHINE",
+		"type":"washing_machine_t"
+	},
+	{
+		"classCode":198,
+		"description":"è¡£é¡ä¹¾ç¥æ©",
+		"name":"CLOTH_DRYER_EOBJ",
+		"define":"EOJ_X2_CLOTH_DRYER",
+		"type":"clothes_dryer_t"
+	},
+	{
+		"classCode":199,
+		"description":"é»æ°ã¢ã¤ã­ã³",
+		"name":"ELECTRIC_IRON_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_IRON",
+		"type":"electric_iron_t"
+	},
+	{
+		"classCode":200,
+		"description":"ãºãã³ãã¬ããµ",
+		"name":"TROUSER_PRESS_EOBJ",
+		"define":"EOJ_X2_TROUSER_PRESS",
+		"type":"trouser_press_t"
+	},
+	{
+		"classCode":201,
+		"description":"ãµã¨ãä¹¾ç¥æ©",
+		"name":"FUTON_DRYER_EOBJ",
+		"define":"EOJ_X2_FUTON_DRYER",
+		"type":"futon_dryer_t"
+	},
+	{
+		"classCode":202,
+		"description":"å°ç©ã»ãã¤ä¹¾ç¥æ©",
+		"name":"SMALL_ARTICLE,_SHOES_DRYER_EOBJ",
+		"define":"EOJ_X2_SMALL_ARTICLE,_SHOES_DRYER",
+		"type":"small_article,_shoes_dryer_t"
+	},
+	{
+		"classCode":203,
+		"description":"é»æ°æé¤æ©ï¼ã»ã³ãã©ã«ã¯ãªã¼ãå«ãï¼",
+		"name":"ELECTRIC_VACUUM_CLEANER_INCLUDING_CENTRAL_VACUUM_CLEANER_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_VACUUM_CLEANER_INCLUDING_CENTRAL_VACUUM_CLEANER",
+		"type":"electric_vacuum_cleaner_including_central_vacuum_cleaner_t"
+	},
+	{
+		"classCode":204,
+		"description":"ãã£ã¹ãã¼ã¶",
+		"name":"DISPOSER_EOBJ",
+		"define":"EOJ_X2_DISPOSER",
+		"type":"disposer_t"
+	},
+	{
+		"classCode":205,
+		"description":"é»æ°èåãæ©",
+		"name":"ELECTRIC_MOSQUITO_CATCHER_EOBJ",
+		"define":"EOJ_X2_ELECTRIC_MOSQUITO_CATCHER",
+		"type":"electric_mosquito_catcher_t"
+	},
+	{
+		"classCode":206,
+		"description":"æ¥­åç¨ã·ã§ã¼ã±ã¼ã¹",
+		"name":"COMMERCIAL_SHOW_CASE_EOBJ",
+		"define":"EOJ_X2_COMMERCIAL_SHOW_CASE",
+		"type":"commercial_show_case_t"
+	},
+	{
+		"classCode":207,
+		"description":"æ¥­åç¨å·èµåº«",
+		"name":"COMMERCIAL_REFRIGERATOR_EOBJ",
+		"define":"EOJ_X2_COMMERCIAL_REFRIGERATOR",
+		"type":"commercial_refrigerator_t"
+	},
+	{
+		"classCode":208,
+		"description":"æ¥­åç¨ãããã±ã¼ã¹",
+		"name":"COMMERCIAL_HOT_CASE_EOBJ",
+		"define":"EOJ_X2_COMMERCIAL_HOT_CASE",
+		"type":"commercial_hot_case_t"
+	},
+	{
+		"classCode":209,
+		"description":"æ¥­åç¨ãã©ã¤ã¤ã¼",
+		"name":"COMMERCIAL_FRYER_EOBJ",
+		"define":"EOJ_X2_COMMERCIAL_FRYER",
+		"type":"commercial_fryer_t"
+	},
+	{
+		"classCode":210,
+		"description":"æ¥­åç¨é»å­ã¬ã³ã¸",
+		"name":"COMMERCIAL_MICROWAVE_OVEN_EOBJ",
+		"define":"EOJ_X2_COMMERCIAL_MICROWAVE_OVEN",
+		"type":"commercial_microwave_oven_t"
+	},
+	{
+		"classCode":211,
+		"description":"æ´æ¿¯ä¹¾ç¥æ©",
+		"name":"WASHER_AND_DRYER_EOBJ",
+		"define":"EOJ_X2_WASHER_AND_DRYER",
+		"type":"washer_and_dryer_t"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList04.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList04.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList04.json	(revision 101)
@@ -0,0 +1,37 @@
+[
+	{
+		"classCode":1,
+		"description":"ä½éè¨",
+		"name":"WEIGHING_MACHINE_EOBJ",
+		"define":"EOJ_X2_WEIGHING_MACHINE",
+		"type":"weighing_machine_t"
+	},
+	{
+		"classCode":2,
+		"description":"ä½æ¸©è¨",
+		"name":"CLINICAL_THERMOMETER_EOBJ",
+		"define":"EOJ_X2_CLINICAL_THERMOMETER",
+		"type":"clinical_thermometer_t"
+	},
+	{
+		"classCode":3,
+		"description":"è¡å§è¨",
+		"name":"BLOOD_PRESSURE_METER_EOBJ",
+		"define":"EOJ_X2_BLOOD_PRESSURE_METER",
+		"type":"blood_pressure_meter_t"
+	},
+	{
+		"classCode":4,
+		"description":"è¡ç³å¤è¨",
+		"name":"BLOOD_SUGAR_METER_EOBJ",
+		"define":"EOJ_X2_BLOOD_SUGAR_METER",
+		"type":"blood_sugar_meter_t"
+	},
+	{
+		"classCode":5,
+		"description":"ä½èèªè¨",
+		"name":"BODY_FAT_METER_EOBJ",
+		"define":"EOJ_X2_BODY_FAT_METER",
+		"type":"body_fat_meter_t"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList05.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList05.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList05.json	(revision 101)
@@ -0,0 +1,31 @@
+[
+	{
+		"classCode": 252,
+		"description": "ã»ã­ã¥ã¢éä¿¡ç¨å
+±æéµè¨­å®ãã¼ã",
+		"name": "SECURE_COMMUNICATION_SHARED_KEY_SETUP_NODE_EOBJ",
+		"define": "EOJ_X2_SECURE_COMMUNICATION_SHARED_KEY_SETUP_NODE",
+		"type": "secure_communication_shared_key_setup_mode_t"
+	},
+	{
+		"classCode": 253,
+		"description": "ã¹ã¤ããï¼JEMA/HAç«¯å­å¯¾å¿ï¼",
+		"name": "SWITCH_EOBJ",
+		"define": "EOJ_X2_SWITCH",
+		"type": "switch_t"
+	},
+	{
+		"classCode": 254,
+		"description": "æºå¸¯ç«¯æ«",
+		"name": "PORTABLE_TERMINAL_EOBJ",
+		"define": "EOJ_X2_PORTABLE_TERMINAL",
+		"type": "portable_terminal_t"
+	},
+	{
+		"classCode": 255,
+		"description": "ã³ã³ãã­ã¼ã©",
+		"name": "CONTROLLER_EOBJ",
+		"define": "EOJ_X2_CONTROLLER",
+		"type": "controller_t"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList06.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList06.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList06.json	(revision 101)
@@ -0,0 +1,16 @@
+[
+	{
+		"classCode":1,
+		"description":"ãã£ã¹ãã¬ã¼",
+		"name":"DISPLAY_EOBJ",
+		"define":"EOJ_X2_DISPLAY",
+		"type":"display_t"
+	},
+	{
+		"classCode":2,
+		"description":"ãã¬ã",
+		"name":"TELEVISION_EOBJ",
+		"define":"EOJ_X2_TELEVISION",
+		"type":"television_t"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList0E.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList0E.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList0E.json	(revision 101)
@@ -0,0 +1,9 @@
+[
+	{
+		"classCode":240,
+		"description":"ãã¼ããã­ãã¡ã¤ã«ãªãã¸ã§ã¯ã",
+		"name":"NODE_PROFILE_EOBJ",
+		"define":"EOJ_X2_NODE_PROFILE",
+		"type":"node_profile_object_t"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList0F.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList0F.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/ClassList0F.json	(revision 101)
@@ -0,0 +1,3 @@
+[
+	
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0001.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0001.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0001.json	(revision 101)
@@ -0,0 +1,989 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ã¬ã¹æ¼ãçºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"GasLeakOccurrenceStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ã¬ã¹æ¼ãçºçæ,0x42=ã¬ã¹æ¼ãçºçç¡"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"ã¬ã¹æ¼ãçºçç¶æ
+ãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"GasLeakOccurrenceStatusResetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":191,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0002.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0002.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0002.json	(revision 101)
@@ -0,0 +1,993 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ä¾µå
+¥çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"InvasionOccurrenceStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ä¾µå
+¥çºçæ,0x42=ä¾µå
+¥çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"ä¾µå
+¥çºçç¶æ
+ãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"InvasionOccurrenceStatusResetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":191,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0003.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0003.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0003.json	(revision 101)
@@ -0,0 +1,966 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"éå¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"EmergencyOccurrenceStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=éå¸¸çºçæ,0x42=éå¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"éå¸¸çºçç¶æ
+ãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"EmergencyOccurrenceStatusResetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":191,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0004.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0004.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0004.json	(revision 101)
@@ -0,0 +1,989 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ææ¥çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FirstAidOccurrenceStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ææ¥çºçæ,0x42=ææ¥çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"ææ¥çºçç¶æ
+ãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"FirstAidOccurrenceStatusResetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":191,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0005.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0005.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0005.json	(revision 101)
@@ -0,0 +1,989 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"å°éçºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"EarthquakeOccurrenceStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å°éçºçæ,0x42=å°éçºçç¡"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"å°éçºçç¶æ
+ãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"EarthquakeOccurrenceStatusResetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":191,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0006.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0006.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0006.json	(revision 101)
@@ -0,0 +1,989 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"æ¼é»çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"ElectricLeakOccurrenceStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ¼é»çºçæ,0x42=æ¼é»çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"æ¼é»çºçç¶æ
+ãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"ElectricLeakOccurrenceStatusResetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":191,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0007.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0007.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0007.json	(revision 101)
@@ -0,0 +1,966 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"äººä½æ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"HumanDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äººä½æ¤ç¥æ,0x42=äººä½æ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0008.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0008.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0008.json	(revision 101)
@@ -0,0 +1,989 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"æ¥å®¢æ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"VisitorDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ¥å®¢æ¤ç¥æ,0x42=æ¥å®¢æ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¥å®¢æ¤ç¥ãã¼ã«ãæéè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"VisitorDetectionHoldingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":190,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"10sec",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½655,330ç§)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0009.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0009.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0009.json	(revision 101)
@@ -0,0 +1,989 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"å¼ã³åºãç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"CallStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å¼ã³åºãæ,0x42=å¼ã³åºãç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¼ã³åºããã¼ã«ãæéè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"CallHoldingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":190,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"10sec",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½655,330ç§)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList000A.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList000A.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList000A.json	(revision 101)
@@ -0,0 +1,966 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"çµé²æ¤åºç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"CondensationDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=çµé²æ¤åºæ,0x42=çµé²æ¤åºç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList000B.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList000B.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList000B.json	(revision 101)
@@ -0,0 +1,966 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç©ºæ°æ±ææ¤åºç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"AirPollutionDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç©ºæ°æ±ææ¤åºæ,0x42=ç©ºæ°æ±ææ¤åºç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList000C.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList000C.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList000C.json	(revision 101)
@@ -0,0 +1,943 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é
+¸ç´ æ¿åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredValueOfOxygenConcentration",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.01ï¼
+",
+		"valueDescription":"0x0000ï½0x2710(0.00ï½100.00%)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList000D.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList000D.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList000D.json	(revision 101)
@@ -0,0 +1,965 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç
+§åº¦è¨æ¸¬å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredIlluminanceValue1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"ã«ã¯ã¹",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533ã«ã¯ã¹)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç
+§åº¦è¨æ¸¬å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredIlluminanceValue2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"kã«ã¯ã¹",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533kã«ã¯ã¹)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList000E.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList000E.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList000E.json	(revision 101)
@@ -0,0 +1,989 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"é³æ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"SoundDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é³æ¤ç¥æ,0x42=é³æ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é³æ¤ç¥ãã¼ã«ãæéè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"SoundDetectionHoldingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":190,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"10sec",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½655,330ç§)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList000F.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList000F.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList000F.json	(revision 101)
@@ -0,0 +1,966 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"æå½æ¤åºç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"MailingDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æå½æ¤åºæ,0x42=æå½æ¤åºç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0010.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0010.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0010.json	(revision 101)
@@ -0,0 +1,966 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"éè·æ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"WeightDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=éè·æ¤ç¥æ,0x42=éè·æ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0011.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0011.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0011.json	(revision 101)
@@ -0,0 +1,941 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¸©åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredTemperatureValue",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"int16_t",
+		"unitDescription":"0.1â",
+		"valueDescription":"0xF554ï½0x7FFE(-273.2ï½3276.6â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0012.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0012.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0012.json	(revision 101)
@@ -0,0 +1,942 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¸å¯¾æ¹¿åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredValueOfRelativeHumidity",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0013.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0013.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0013.json	(revision 101)
@@ -0,0 +1,966 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"é¨æ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"RainDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é¨æ¤ç¥æ,0x42=é¨æ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0014.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0014.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0014.json	(revision 101)
@@ -0,0 +1,991 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ°´ä½è¶
+éæ¤ç¥é¾å¤è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"WaterLevelOverDetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"cm",
+		"valueDescription":"0x00ï½0xFD(0ï½253)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"æ°´ä½è¶
+éæ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"WaterLevelOverDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ°´ä½è¶
+éæ,0x42=æ°´ä½è¶
+éç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ°´ä½è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredValueOfWaterLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"cm",
+		"valueDescription":"0x00ï½0xFD(0ï½253)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0015.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0015.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0015.json	(revision 101)
@@ -0,0 +1,991 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åæ°´ä½è¶
+éæ¤ç¥é¾å¤è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"BathWaterLevelOverDetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"cm",
+		"valueDescription":"0x00ï½0xFD(0ï½253)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åæ°´ä½è¶
+éæ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"BathWaterLevelOverDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ°´ä½è¶
+éæ,0x42=æ°´ä½è¶
+éç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åæ°´ä½è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredValueOfBathWaterLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"cm",
+		"valueDescription":"0x00ï½0xFD(0ï½253)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0016.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0016.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0016.json	(revision 101)
@@ -0,0 +1,966 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åæ²¸ãä¸ããæ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"BathHeatingDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é¢¨åæ²¸ãä¸ããæ,0x42=é¢¨åæ²¸ãä¸ããç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0017.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0017.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0017.json	(revision 101)
@@ -0,0 +1,966 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"æ°´æ¼ãæ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"WaterLeakDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ°´æ¼ãæ¤ç¥æ,0x42=æ°´æ¼ãæ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0018.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0018.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0018.json	(revision 101)
@@ -0,0 +1,966 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"æ°´ããµãæ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"WaterOverflowDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ°´ããµãæ¤ç¥æ,0x42=æ°´ããµãæ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0019.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0019.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0019.json	(revision 101)
@@ -0,0 +1,989 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38(ã¬ãã«1ï½ã¬ãã«8)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç«ç½çºçæ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FireOccurrenceDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç«ç½çºçæ¤ç¥æ,0x42=ç«ç½çºçæ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"ç«ç½çºçæ¤ç¥ç¶æ
+ãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"FireOccurrenceDetectionStatusResetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":191,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList001A.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList001A.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList001A.json	(revision 101)
@@ -0,0 +1,969 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38(ã¬ãã«1ï½ã¬ãã«8)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç
+ï¼ã¿ãã³ï¼æ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"SmokeCigaretteDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç
+ï¼ã¿ãã³ï¼æ¤ç¥æ,0x42=ç
+ï¼ã¿ãã³ï¼æ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList001B.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList001B.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList001B.json	(revision 101)
@@ -0,0 +1,941 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼£ï¼¯ï¼æ¿åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredValueOfCo2Concentration",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"ppm",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList001C.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList001C.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList001C.json	(revision 101)
@@ -0,0 +1,988 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38(ã¬ãã«1ï½ã¬ãã«8)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ã¬ã¹æ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"GasDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ã¬ã¹æ¤ç¥æ,0x42=ã¬ã¹æ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¬ã¹æ¿åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredValueOfGasConcentration",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"ppm",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList001D.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList001D.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList001D.json	(revision 101)
@@ -0,0 +1,988 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38(ã¬ãã«1ï½ã¬ãã«8)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ï¼¶ï¼¯ï¼£æ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"VocDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=VOCæ¤ç¥æ,0x42=VOCæ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¶ï¼¯ï¼£æ¿åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredValueOfVocConcentration",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"ppm",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList001E.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList001E.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList001E.json	(revision 101)
@@ -0,0 +1,941 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å·®å§è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredValueOfDifferentialPressure",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"int16_t",
+		"unitDescription":"Pa",
+		"valueDescription":"0x8001ï½0x7FFE(-32767ï½32766)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList001F.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList001F.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList001F.json	(revision 101)
@@ -0,0 +1,963 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨éè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredValueOfAirSpeed",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.01m\/sec",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½655.33m\/sec)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨å",
+		"fields":[
+			
+		],
+		"identifer":"AirFlowDirection",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"degree",
+		"valueDescription":"0x0000ï½0x0168(0ï½360degree)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0020.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0020.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0020.json	(revision 101)
@@ -0,0 +1,987 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38(ã¬ãã«1ï½ã¬ãã«8)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­ãæ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OdorDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=è­ãæ¤ç¥æ,0x42=è­ãæ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­ãè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredOdorValue",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00ï½0xFD(0ï½253)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0021.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0021.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0021.json	(revision 101)
@@ -0,0 +1,989 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38(ã¬ãã«1ï½ã¬ãã«8)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"çæ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FlameDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=çæ¤ç¥æ,0x42=çæ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"çæ¤ç¥ç¶æ
+ãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"FlameDetectionStatusResetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":191,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0022.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0022.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0022.json	(revision 101)
@@ -0,0 +1,1052 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®é»åéè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"IntegralElectricEnergy",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¸­å®¹éã»ã³ãµç¬æé»åå¤è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MediumCapacitySensorInstantaneousElectricEnergy",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"int32_t",
+		"unitDescription":"W",
+		"valueDescription":"0xC4653601ï½0x3B9AC9FF(-999,999,999ï½999,999,999)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å°å®¹éã»ã³ãµç¬æé»åå¤è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"SmallCapacitySensorInstantaneousElectricEnergy",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"int16_t",
+		"unitDescription":"0.1W",
+		"valueDescription":"0x8001ï½0x7FFE(-3276.7ï½3276.6)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¤§å®¹éã»ã³ãµç¬æé»åå¤è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"LargeCapacitySensorInstantaneousElectricEnergy",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"int16_t",
+		"unitDescription":"0.1kW",
+		"valueDescription":"0x8001ï½0x7FFE(-3276.7ï½3276.6)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":48,
+		"description":"ç©ç®é»åéè¨æ¸¬å±¥æ­´æ
+å ±",
+		"fields":[
+			
+		],
+		"identifer":"IntegralElectricEnergyMeasurementLog",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®å¹é»å§å¤è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"EffectiveVoltageValue",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"V",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533V)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0023.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0023.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0023.json	(revision 101)
@@ -0,0 +1,985 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¤è¨æ¸¬å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCurrentValue1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"mA",
+		"valueDescription":"0x00000000ï½0xFFFFFFFD(0ï½4,294,967,293mA)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬å¯¾è±¡å®æ ¼é»å§å¤",
+		"fields":[
+			
+		],
+		"identifer":"RatedVoltageToBeMeasured",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"V",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533V)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¤è¨æ¸¬å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCurrentValue2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"int32_t",
+		"unitDescription":"mA",
+		"valueDescription":"0x80000001ï½0x7FFFFFFE(-2,147,483,647ï½2,147,483,646mA)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0025.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0025.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0025.json	(revision 101)
@@ -0,0 +1,963 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æµéè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"IntegralFlowRate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"cã¥",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æµéè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"FlowRate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"cã¥\/min",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0026.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0026.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0026.json	(revision 101)
@@ -0,0 +1,1035 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38(ã¬ãã«1ï½ã¬ãã«8)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"å¾®åæ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"MicromotionDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å¾®åæ¤ç¥æ,0x42=å¾®åæ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¾®åæ¤ç¥ã«ã¦ã³ãæ°è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionCounter",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":178,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFE(0ï½65534)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãµã³ããªã³ã°åæ°è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"SamplingCount",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":188,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFE(0ï½65534)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãµã³ããªã³ã°æéè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"SamplingCycle",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":189,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"msec",
+		"valueDescription":"0x0000ï½0xFFFE(0ï½65534)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0027.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0027.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0027.json	(revision 101)
@@ -0,0 +1,989 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38(ã¬ãã«1ï½ã¬ãã«8)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ééæ¤ç¥ãã¼ã«ãæéè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"PassageDetectionHoldTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":190,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"ms",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533ms)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ééæ¤ç¥æ¹åç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"PassageDetectionDirection",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ééç¡ã,0x31ï½0x38=ééæ¹å,0x39=ééãæ¤ç¥ãããå ´æãç¹å®ã§ããªãå ´åããããã¯ãééæ¹åãæ¤ç¥ã§ããªãã»ã³ãµã«ãããééããã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0028.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0028.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0028.json	(revision 101)
@@ -0,0 +1,966 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38(ã¬ãã«1ï½ã¬ãã«8)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"å¨åºæ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"BedPresenceDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å¨åºæ¤ç¥æ,0x42=å¨åºæ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0029.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0029.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0029.json	(revision 101)
@@ -0,0 +1,989 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éåº¦æ¤ç¥ç¶æ
+ï¼",
+		"fields":[
+			
+		],
+		"identifer":"DegreeOfOpeniNgDetectionStatus1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=éæ¤ç¥æã,0x31ï½0x38=éåº¦ã¬ãã«,0x39=éæ¤ç¥æãéåº¦ä¸æ"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38(ã¬ãã«1ï½ã¬ãã«8)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"éåº¦æ¤ç¥ç¶æ
+ï¼",
+		"fields":[
+			
+		],
+		"identifer":"DegreeOfOpeniNgDetectionStatus2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=éæ¤ç¥æ,0x42=éæ¤ç¥æ"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList002A.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList002A.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList002A.json	(revision 101)
@@ -0,0 +1,1009 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"VARIABLE"
+		],
+		"arrayCount":128,
+		"description":"æ´»åéã¬ãã«ï¼",
+		"fields":[
+			
+		],
+		"identifer":"ActivityAmountLevel1",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38(ã¬ãã«1ï½ã¬ãã«8)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"äººä½ï¼©ï¼¤æ°æå¤§å¤",
+		"fields":[
+			
+		],
+		"identifer":"MaximumNumberOfHumanBodyIdFs",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0001ï½0x0080(1ï½128)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ´»åéã¬ãã«ï¼",
+		"fields":[
+			
+		],
+		"identifer":"ActivityAmountLevel2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38(ã¬ãã«1ï½ã¬ãã«8)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":16,
+		"description":"å­å¨äººä½æ
+å ±",
+		"fields":[
+			
+		],
+		"identifer":"HumanBodyExistenceInformation",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(è©³ç´°ã¯ãèª¬æ(5)åç
+§)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList002B.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList002B.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList002B.json	(revision 101)
@@ -0,0 +1,1053 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"VARIABLE"
+		],
+		"arrayCount":128,
+		"description":"äººä½æ¤ç¥ä½ç½®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"HumanBodyDetectionLocation1",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":false,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":0,
+		"type":"location_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"äººä½ï¼©ï¼¤æ°æå¤§å¤",
+		"fields":[
+			
+		],
+		"identifer":"MaximumNumberOfHumanBodyIdFs",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0001ï½0x0080(1ï½128)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"äººä½æ¤ç¥ä½ç½®ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"Xåº§æ¨",
+				"fields":[
+					
+				],
+				"identifer":"XCoordinate",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"Yåº§æ¨",
+				"fields":[
+					
+				],
+				"identifer":"YCoordinate",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"Zåº§æ¨",
+				"fields":[
+					
+				],
+				"identifer":"ZCoordinate",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"HumanBodyDetectionLocation2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":3,
+		"type":"location_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":16,
+		"description":"å­å¨äººä½æ
+å ±",
+		"fields":[
+			
+		],
+		"identifer":"HumanBodyExistenceInformation",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(è©³ç´°ã¯ãèª¬æ(5)åç
+§)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList002C.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList002C.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList002C.json	(revision 101)
@@ -0,0 +1,966 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤ç¥é¾å¤ã¬ãã«",
+		"fields":[
+			
+		],
+		"identifer":"DetectionThresholdLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38(ã¬ãã«1ï½ã¬ãã«8)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"éªæ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"SnowDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=éªæ¤ç¥æ,0x42=éªæ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0130.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0130.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0130.json	(revision 101)
@@ -0,0 +1,2191 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"éè»¢ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OperationModeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=èªå,0x42=å·æ¿,0x43=ææ¿,0x44=é¤æ¹¿,0x45=éé¢¨,0x40=ãã®ä»"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¸©åº¦èªåè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AutomaticTemperatureControlSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=AUTO,0x42=éAUTO"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¥éåä½ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"NormalHighSpeedSilentOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":178,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=éå¸¸éè»¢,0x42=æ¥é,0x43=éé³"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"SetTemperatureValue",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":179,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x32(0ï½50â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¤æ¹¿ã¢ã¼ãæç¸å¯¾æ¹¿åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"SetValueOfRelativeHumidityInDehumidifyingMode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":180,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å·æ¿ã¢ã¼ãææ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"SetTemperatureValueInCoolingMode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":181,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x32(0ï½50â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ææ¿ã¢ã¼ãææ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"SetTemperatureValueInHeatingMode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":182,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x32(0ï½50â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¤æ¹¿ã¢ã¼ãææ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"SetTemperatureValueInDehumidifyingMode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":183,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x32(0ï½50â)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":4,
+		"description":"å®æ ¼æ¶è²»é»åå¤",
+		"fields":[
+			
+		],
+		"identifer":"RatedPowerConsumption",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":184,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å·æ¿ï¼ææ¿ï¼é¤æ¹¿ï¼éé¢¨æ¶è²»é»æµè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredValueOfCurrentConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":185,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1A",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½6553.3A)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®¤å
+ç¸å¯¾æ¹¿åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredValueOfRoomRelativeHumidity",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":186,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®¤å
+æ¸©åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredValueOfRoomTemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":187,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x81ï½0x7D(-127ï½125â)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¦ã¼ã¶ãªã¢ã³ã³æ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"SetTemperatureValueOfUserRemoteControl",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":188,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x32(0ï½50â)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¹ãåºãæ¸©åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCooledAirTemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":189,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x81ï½0x7D(-127ï½125â)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¤æ°æ¸©åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredOutdoorAirTemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":190,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x81ï½0x7D(-127ï½125â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¸å¯¾æ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"RelativeTemperatureSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":191,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"0.1â",
+		"valueDescription":"0x81ï½0x7D(-12.7ï½12.5â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AirFlowRateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":160,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é¢¨éèªåè¨­å®,0x31ï½0x38=é¢¨éã¬ãã«"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åèªåè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AutomaticControlOfAirFlowDirectionSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":161,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=AUTO,0x42=éAUTO,0x43=ä¸ä¸AUTO,0x44=å·¦å³AUTO"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åã¹ã¤ã³ã°è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AutomaticSwingOfAirFlowSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":163,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31=é¢¨åã¹ã¤ã³ã°OFF,0x41=ä¸ä¸,0x42=å·¦å³,0x43=ä¸ä¸å·¦å³"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åä¸ä¸è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AirFlowDirectionVerticalSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":164,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ä¸,0x42=ä¸,0x43=ä¸­å¤®,0x44=ä¸ä¸­,0x45=ä¸ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åå·¦å³è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AirFlowDirectionHorizontalSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":165,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å³,0x42=å·¦,0x43=ä¸­å¤®,0x44=å·¦å³,ä»ããã­ããã£è©³ç´°èª¬æã®è¡¨ã«è¨è¼ã®ã³ã¼ãã§ç¤ºãã"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¹æ®ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"SpecialState",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":170,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=éå¸¸ç¶æ
+,0x41=é¤éç¶æ
+,0x42=äºç±ç¶æ
+,0x43=æç±ç¶æ
+"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éåªå
+ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"NonPriorityState",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":171,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=éå¸¸ç¶æ
+,0x41=éåªå
+ç¶æ
+"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ææ°ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"VentilationFunctionSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":192,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ææ°ONï¼ææ°æ¹åï¼,0x42=ææ°OFF,0x43=ææ°ONï¼å¸æ°æ¹åï¼"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å æ¹¿ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"HumidifierFunctionSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":193,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å æ¹¿ON,0x42=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ææ°é¢¨éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"VentilationAirFlowRateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":194,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ææ°é¢¨éèªå,0x31ï½0x38=ææ°é¢¨éã¬ãã«"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å æ¹¿éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DegreeOfHumidificationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":196,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å æ¹¿éèªå,0x31ï½0x38=å æ¹¿éã¬ãã«"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ­è¼ç©ºæ°æ¸
+æµæ¹æ³",
+		"fields":[
+			
+		],
+		"identifer":"MountedAirCleaningMethod",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":198,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"[0]é»æ°éå¡µæ¹å¼æ­è¼æ
+å ±:0=éæ­è¼,1=æ­è¼\u000d\u000a[1]ã¯ã©ã¹ã¿ã¤ãªã³æ¹å¼æ­è¼æ
+å ±:0=éæ­è¼,1=æ­è¼"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ºæ°æ¸
+æµæ©è½ã¢ã¼ãè¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»æ°éå¡µæ¹å¼ã«ããç©ºæ°æ¸
+æµæ©è½ã®è¨­å®ç¶æ
+",
+				"fields":[
+					
+				],
+				"identifer":"WhetherOrNotToUseTheElectricalDustCollectionBasedAirPurifierFunction",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¯ã©ã¹ã¿ã¤ãªã³æ¹å¼ã«ããç©ºæ°æ¸
+æµæ©è½ã®è¨­å®ç¶æ
+",
+				"fields":[
+					
+				],
+				"identifer":"WhetherOrNotToUseTheClusterIonBasedAirPurifierFunction",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":6,
+				"description":"for future reserved",
+				"fields":[
+					
+				],
+				"identifer":"Reserved",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"AirPurifierFunctionSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":199,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"air_purifier_function_setting_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ­è¼ãªãã¬ãã·ã¥æ¹æ³",
+		"fields":[
+			
+		],
+		"identifer":"MountedAirRefreshMethod",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":200,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"[0]ãã¤ãã¹ã¤ãªã³æ¹å¼æ­è¼æ
+å ±:0=éæ­è¼,1=æ­è¼\u000d\u000a[1]ã¯ã©ã¹ã¿ã¤ãªã³æ¹å¼æ­è¼æ
+å ±:0=éæ­è¼,1=æ­è¼"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãªãã¬ãã·ã¥æ©è½ã¢ã¼ãè¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ãã¤ãã¹ã¤ãªã³æ¹å¼ã«ãããªãã¬ãã·ã¥æ©è½ã®è¨­å®ç¶æ
+",
+				"fields":[
+					
+				],
+				"identifer":"WhetherOrNotToUseTheMinusIonBasedAirRefresherFunction",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¯ã©ã¹ã¿ã¤ãªã³æ¹å¼ã«ãããªãã¬ãã·ã¥æ©è½ã®è¨­å®ç¶æ
+",
+				"fields":[
+					
+				],
+				"identifer":"WhetherOrNotToUseTheClusterIonBasedAirRefresherFunction",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":6,
+				"description":"for future reserved",
+				"fields":[
+					
+				],
+				"identifer":"Reserved",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"AirRefresherFunctionSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":201,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"air_refresher_function_setting_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ­è¼èªå·±æ´æµæ¹æ³",
+		"fields":[
+			
+		],
+		"identifer":"MountedSelfCleaningMethod",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":202,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"[0]ãªã¾ã³æ´æµæ¹å¼æ­è¼æ
+å ±:0=éæ­è¼,1=æ­è¼\u000d\u000a[1]ä¹¾ç¥æ¹å¼æ­è¼æ
+å ±:0=éæ­è¼,1=æ­è¼"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"èªå·±æ´æµæ©è½ã¢ã¼ãè¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ãªã¾ã³æ´æµæ¹å¼ã«ããèªå·±æ´æµæ©è½ã®è¨­å®ç¶æ
+",
+				"fields":[
+					
+				],
+				"identifer":"WhetherOrNotToUseTheOzoneBasedSelfCleaningFunction",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ä¹¾ç¥æ¹å¼ã«ããèªå·±æ´æµæ©è½ã®è¨­å®ç¶æ
+",
+				"fields":[
+					
+				],
+				"identifer":"WhetherOrNotToUseTheDryingBasedSelfCleaningFunction",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":6,
+				"description":"for future reserved",
+				"fields":[
+					
+				],
+				"identifer":"Reserved",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"SelfCleaningFunctionSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":203,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"self_cleaning_function_setting_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¹å¥éè»¢ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"SpecialFunctionSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":204,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=è¨­å®ãªã,0x41=è¡£é¡ä¹¾ç¥,0x42=çµé²æå¶,0x43=ããã«ãæå¶,0x44=å¼·å¶é¤é,0x45ï½=for future reserved"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å
+é¨åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatusOfComponents",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":205,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"[0]ã³ã³ãã¬ããµåä½ç¶æ
+:0=åæ­¢ä¸­,1=åä½ä¸­\u000d\u000a[1]ãµã¼ã¢ON\/OFFç¶æ
+:0=ãµã¼ã¢OFFç¶æ
+,1=ãµã¼ã¢ONç¶æ
+\u000d\u000a[2ï½7]for future reserved"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"å¼·å¶ãµã¼ã¢ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"ThermostatSettingOverrideFunction",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":206,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=éå¸¸è¨­å®,0x41=å¼·å¶ãµã¼ã¢ON,0x42=å¼·å¶ãµã¼ã¢OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ºæ°æ¸
+æµã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AirPurificationModeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":207,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç©ºæ°æ¸
+æµON,0x42=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OnTimerBasedReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":144,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æå»äºç´ãç¸å¯¾æéäºç´å
+±ã«å
+¥,0x42=äºç´å,0x43=æå»äºç´ã®ã¿å
+¥ã,0x44=ç¸å¯¾æå»äºç´ã®ã¿å
+¥ã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OnTimerSettingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":145,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æé",
+				"valueDescription":"0x00ï½0xFF(0ï½255)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OnTimerSettingRelativeTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":146,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hours_minutes_2type_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OffTimerBasedReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":148,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æå»äºç´ãç¸å¯¾æéäºç´å
+±ã«å
+¥,0x42=äºç´å,0x43=æå»äºç´ã®ã¿å
+¥ã,0x44=ç¸å¯¾æå»äºç´ã®ã¿å
+¥ã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OffTimerSettingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":149,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æé",
+				"valueDescription":"0x00ï½0xFF(0ï½255)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OffTimerSettingRelativeTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":150,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hours_minutes_2type_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0133.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0133.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0133.json	(revision 101)
@@ -0,0 +1,966 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ææ°èªåè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"VentilationAutoSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":191,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=AUTO,0x42=éAUTO"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ææ°é¢¨éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"SetValueOfVentilationAirFlowRate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":160,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ææ°é¢¨éèªåç¶æ
+,0x31ï½0x38=ææ°é¢¨éã¬ãã«"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0134.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0134.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0134.json	(revision 101)
@@ -0,0 +1,1109 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®¤å
+ç¸å¯¾æ¹¿åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"SetValueOfRoomRelativeHumidity",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":180,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ææ°èªåè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"VentilationAutoSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":191,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=AUTO,0x42=éAUTO"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®¤å
+ç¸å¯¾æ¹¿åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredValueOfRoomRelativeHumidity",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":186,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ææ°é¢¨éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"SetValueOfVentilationAirFlowRate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":160,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ææ°é¢¨éèªåç¶æ
+,0x31ï½0x38=ææ°é¢¨éã¬ãã«"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç±äº¤ææ©åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"HeatExchangerOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç±äº¤ææ©ON,0x42=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼£ï¼¯ï¼æ¿åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredValueOfCo2Concentration",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":192,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"ppm",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533ppm)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç
+ï¼ã¿ãã³ï¼æ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"SmokeCigaretteDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":193,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç
+ï¼ã¿ãã³ï¼æ¤ç¥æ,0x42=ç
+ï¼ã¿ãã³ï¼æ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ±ãæ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"PollutionDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":194,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ±ãæ¤ç¥æ,0x42=æ±ãæ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0135.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0135.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0135.json	(revision 101)
@@ -0,0 +1,1041 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã£ã«ã¿ã¼äº¤æéç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FilterChangeNotice",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ,0x42=ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AirFlowRateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":160,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ææ°é¢¨éèªåç¶æ
+,0x31ï½0x38=ææ°é¢¨éã¬ãã«"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç
+ï¼ã¿ãã³ï¼æ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"SmokeCigaretteDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":193,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç
+ï¼ã¿ãã³ï¼æ¤ç¥æ,0x42=ç
+ï¼ã¿ãã³ï¼æ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å
+è§¦åªåä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OpticalCatalystOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":194,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+è§¦åªON,0x42=å
+è§¦åªOFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ºæ°æ±ãæ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"AirPollutionDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":192,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç©ºæ°æ±ãæ¤ç¥æ,0x42=ç©ºæ°æ±ãæ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0139.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0139.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0139.json	(revision 101)
@@ -0,0 +1,1157 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å æ¹¿è¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"HumidifyingSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":192,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00ï½0x64(0ï½100%),0x70=èªåè¨­å®,0x71=é£ç¶éè»¢,0x72=éæ¬ éè»¢"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å æ¹¿è¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"HumidifyingSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":193,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x33=å æ¹¿ã¬ãã«,0x70=èªåè¨­å®,0x71=é£ç¶éè»¢,0x72=éæ¬ éè»¢"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¸å¯¾æ¹¿åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredValueOfRelativeHumidity",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":180,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"ReservationSetOfOffTimer",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":148,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç´å
+¥,0x42=äºç´å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"RelativeTimeValueSetOfOffTimer",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":150,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¤ãªã³æ¾åºè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"IonEmissionSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":194,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ¾åºå
+¥,0x42=æ¾åºå"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ­è¼ã¤ãªã³æ¾åºæ¹æ³",
+		"fields":[
+			
+		],
+		"identifer":"ImplementedIonEmissionMethod",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":195,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"[0]ãã¤ãã¹ã¤ãªã³æ¹å¼\u000d\u000a[1]ã¯ã©ã¹ã¿ã¤ãªã³æ¹å¼"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¹å¥éè»¢ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"SpecialOperationModeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":196,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"è¨­å®æå¹ã®å ´åã1ã¨ãã\u000d\u000a[0]ã®ã©ä¹¾ç¥æå¶\u000d\u000a[1]éé³éè»¢\u000d\u000a[2ï½7]for future reserved"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ°´éã¬ãã«",
+		"fields":[
+			
+		],
+		"identifer":"WaterAmountLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":197,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=ç©ºç¶æ
+,0x41ï½0x45(æä½ï½æé«ã¬ãã«)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0142.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0142.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0142.json	(revision 101)
@@ -0,0 +1,1291 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¸©åº¦èªåè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AutomaticTemperatureControlSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=AUTO,0x42=éAUTO"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"TemperatureSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":179,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x32(0ï½50)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®¤å
+æ¸©åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredRoomTemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":187,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x81ï½0x7E(-128ï½127)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¦ã¼ã¶ãªã¢ã³ã³æ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"RemotelySetTemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":188,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x32(0ï½50)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AirFlowRateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":160,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é¢¨éèªåç¶æ
+,0x31ï½0x38=é¢¨éã¬ãã«"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OnTimerBasedReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":144,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç´å
+¥,0x42=äºç´å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OnTimerSettingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":145,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OnTimerSettingRelativeTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":146,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OffTimerBasedReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":148,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç´å
+¥,0x42=äºç´å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OffTimerSettingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":149,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"SetValueOfOffTimerRelativeTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":150,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0143.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0143.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0143.json	(revision 101)
@@ -0,0 +1,1395 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"TemperatureSettingValue",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":179,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x32(0ï½50)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¸©åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredTemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":187,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x81ï½0x7D(-128ï½125)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¸©åº¦èªåè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AutomaticTemperatureControlSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=AUTO,0x42=éAUTO"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OnTimerReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":144,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æå»äºç´ãç¸å¯¾æéäºç´å
+±ã«å
+¥,0x42=äºç´å,0x43=æå»äºç´ã®ã¿å
+¥,0x44=ç¸å¯¾æéäºç´ã®ã¿å
+¥"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OnTimerSettingValueTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":145,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OnTimerSettingValueRelativeTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":146,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OffTimerReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":148,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æå»äºç´ãç¸å¯¾æéäºç´å
+±ã«å
+¥,0x42=äºç´å,0x43=æå»äºç´ã®ã¿å
+¥,0x44=ç¸å¯¾æéäºç´ã®ã¿å
+¥"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OffTimerSettingValueTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":149,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OffTimerValueRelativeTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":150,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å»¶é·éè»¢è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"ExtentionalOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":192,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å»¶é·å
+¥,0x42=å»¶é·å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å»¶é·ã¿ã¤ãæéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"ExtentionalOperationTimerTimeSettingValue",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":193,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¤ãªã³æ¾åºè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"IonEmissionSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":194,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ¾åºå
+¥,0x42=æ¾åºå"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ­è¼ã¤ãªã³æ¾åºæ¹æ³",
+		"fields":[
+			
+		],
+		"identifer":"ImplementedIonEmissionMethod",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":195,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"[0]ãã¤ãã¹ã¤ãªã³æ¹å¼\u000d\u000a[1]ã¯ã©ã¹ã¿ã¤ãªã³æ¹å¼"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ²¹éã¬ãã«",
+		"fields":[
+			
+		],
+		"identifer":"OilAmountLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":196,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=ç©ºç¶æ
+,0x41ï½0x45(æä½ï½æé«ã¬ãã«)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0145.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0145.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0145.json	(revision 101)
@@ -0,0 +1,1938 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"éè»¢ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OperationModeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=èªå,0x42=å·æ¿,0x43=ææ¿,0x44=é¤æ¹¿,0x45=éé¢¨"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"æ¸©åº¦è¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"TemperatureSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":179,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"1â",
+		"valueDescription":"0x00ï½0x32(0ï½50â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¤æ¹¿ã¢ã¼ãæç¸å¯¾æ¹¿åº¦è¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"RelativeHumiditySettingForDehumidificationMode1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":180,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"1ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å·æ¿ã¢ã¼ãææ¸©åº¦è¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"TemperatureSettingForCoolingMode1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":181,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"1â",
+		"valueDescription":"0x00ï½0x32(0ï½50â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ææ¿ã¢ã¼ãææ¸©åº¦è¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"TemperatureSettingForHeatingMode1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":182,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"1â",
+		"valueDescription":"0x00ï½0x32(0ï½50â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¤æ¹¿ã¢ã¼ãææ¸©åº¦è¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"TemperatureSettingForDehumidificationMode1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":183,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"1â",
+		"valueDescription":"0x00ï½0x32(0ï½50â)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":4,
+		"description":"å®¤å
+å®æ ¼æ¶è²»é»åå¤",
+		"fields":[
+			
+		],
+		"identifer":"RatedPowerConsumptionOfIndoorUnit",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":184,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å·æ¿ï¼ææ¿ï¼é¤æ¹¿ï¼éé¢¨å®¤å
+æ¶è²»é»æµè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredElectricCurrentConsumptionOfIndoorUnit",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":185,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1A",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½6553.3A)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®¤å
+ç¸å¯¾æ¹¿åº¦è¨æ¸¬å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredIndoorRelativeHumidity1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":186,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"1ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®¤å
+æ¸©åº¦è¨æ¸¬å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredIndoorTemperature1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":187,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"1â",
+		"valueDescription":"0x81ï½0x7D(-127ï½125â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¸å¯¾æ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"RelativeTemperatureSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":191,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"0.1â",
+		"valueDescription":"0x81ï½0x7D(-12.7ï½12.5â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AirFlowRateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":160,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é¢¨éèªåç¶æ
+,0x31ï½0x38=é¢¨éã¬ãã«"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åä¸ä¸è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AirFlowDirectionVerticalSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":164,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31=èªå,0x32=ã¹ã¤ã³ã°,0x41ï½0x49=é¢¨åä¸ä¸è¨­å®(æä¸ï½æä¸)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åå·¦å³è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AirFlowDirectionHorizontalSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":165,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31=èªå,0x32=ã¹ã¤ã³ã°,0x41=å³,0x42=å·¦,0x43=ä¸­å¤®,0x44=å·¦å³"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¹æ®ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"SpecialState",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":170,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=éå¸¸ç¶æ
+,0x42=äºç±ç¶æ
+,0x43=æç±ç¶æ
+"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãµã¼ã¢ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"ThermostatState",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":172,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ãµã¼ã¢on,0x42=ãµã¼ã¢off"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"èªåéè»¢æéè»¢ã¢ã¼ãç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"CurrentFunctionAutomaticOperationMode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":174,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x42=å·æ¿,0x43=ææ¿,0x44=é¤æ¹¿,0x45=éé¢¨,0x40=ãã®ä»"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ææ°ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"VentilationModeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":192,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ®éææ°,0x42=å
+¨ç±äº¤ææ°,0x43=èªåææ°"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å
+¨ç±äº¤æå¨é£åè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CombinedOperationOfIndoorUnitAndTotalHeatExchanger",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":193,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¨ç±äº¤æå¨é£å,0x42=å
+¨ç±äº¤æå¨éé£å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ææ°é¢¨éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"VentilationAirFlowRateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":194,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ææ°é¢¨éèªå,0x31ï½0x38=ææ°é¢¨éã¬ãã«"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¼·å¶åæ­¢è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DisablingOfAirConditionerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":205,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å¼·å¶åæ­¢,0x42=è§£é¤"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¼·å¶ãµã¼ã¢ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"ThermostatSettingOverrideFunction",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":206,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=éå¸¸è¨­å®,0x41=å¼·å¶ãµã¼ã¢ON,0x42=å¼·å¶ãµã¼ã¢OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã£ã«ã¿ã¼ãµã¤ã³è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"FilterCleaningReminderLampSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":207,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¹ç¯,0x42=æ¶ç¯"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®¤å
+æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredPowerConsumptionOfIndoorUnit",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":219,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨å¼µå¼éåº¦ã¬ãã«",
+		"fields":[
+			
+		],
+		"identifer":"ApertureOfExpansionValve",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":220,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"æ¸©åº¦è¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"TemperatureSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"int16_t",
+		"unitDescription":"0.1â",
+		"valueDescription":"0xFE0Cï½0x3E8(-50.0ï½100.0â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¤æ¹¿ã¢ã¼ãæç¸å¯¾æ¹¿åº¦è¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"RelativeHumiditySettingForDehumidificationMode2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":228,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.10ï¼
+",
+		"valueDescription":"0x0000ï½0x3E8(0.0ï½100.0%)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å·æ¿ã¢ã¼ãææ¸©åº¦è¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"TemperatureSettingForCoolingMode2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"int16_t",
+		"unitDescription":"0.1â",
+		"valueDescription":"0xFE0Cï½0x3E8(-50.0ï½100.0â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ææ¿ã¢ã¼ãææ¸©åº¦è¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"TemperatureSettingForHeatingMode2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":230,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"int16_t",
+		"unitDescription":"0.1â",
+		"valueDescription":"0xFE0Cï½0x3E8(-50.0ï½100.0â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¤æ¹¿ã¢ã¼ãææ¸©åº¦è¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"TemperatureSettingForDehumidificationMode2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":231,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"int16_t",
+		"unitDescription":"0.1â",
+		"valueDescription":"0xFE0Cï½0x3E8(-50.0ï½100.0â)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®¤å
+ç¸å¯¾æ¹¿åº¦è¨æ¸¬å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredIndoorRelativeHumidity2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":234,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.10ï¼
+",
+		"valueDescription":"0x0000ï½0x3E8(0.0ï½100.0%)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®¤å
+æ¸©åº¦è¨æ¸¬å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredIndoorTemperature2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":235,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"int16_t",
+		"unitDescription":"0.1â",
+		"valueDescription":"0xF554ï½0x7FFD(-273.2ï½3276.5â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OnTimerBasedReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":144,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æå»äºç´ãç¸å¯¾æéäºç´å
+±ã«å
+¥,0x42=äºç´å,0x43=æå»äºç´ã®ã¿å
+¥,0x44=ç¸å¯¾æéäºç´ã®ã¿å
+¥"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OnTimerSettingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":145,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æé",
+				"valueDescription":"0x00ï½0xFF(0ï½255)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OnTimerSettingRelativeTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":146,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hours_minutes_2type_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OffTimerBasedReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":148,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æå»äºç´ãç¸å¯¾æéäºç´å
+±ã«å
+¥,0x42=äºç´å,0x43=æå»äºç´ã®ã¿å
+¥,0x44=ç¸å¯¾æéäºç´ã®ã¿å
+¥"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OffTimerSettingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":149,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æé",
+				"valueDescription":"0x00ï½0xFF(0ï½255)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OffTimerSettingRelativeTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":150,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hours_minutes_2type_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0146.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0146.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0146.json	(revision 101)
@@ -0,0 +1,1147 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éè»¢ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OperationModeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=èªå,0x42=å·æ¿,0x43=ææ¿,0x44=é¤æ¹¿,0x45=éé¢¨"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"å®¤å¤å®æ ¼æ¶è²»é»åå¤",
+		"fields":[
+			
+		],
+		"identifer":"RatedPowerConsumptionOfOutdoorUnit",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":184,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å·æ¿ï¼ææ¿ï¼é¤æ¹¿å®¤å¤æ¶è²»é»æµè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredElectricCurrentConsumptionOfOutdoorUnit",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":185,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1A",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½6553.3A)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¤æ°æ¸©åº¦è¨æ¸¬å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredOutdoorAirTemperature1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":190,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"1â",
+		"valueDescription":"0x81ï½0x7D(-127ï½125â)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¹æ®ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"SpecialState",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":170,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=éå¸¸ç¶æ
+,0x41=é¤éç¶æ
+"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å§ç¸®æ©åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatusOfCompressor",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":208,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å§ç¸®æ©ON,0x42=å§ç¸®æ©OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éè»¢ã¢ã¼ãç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationModeInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":209,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x42=å·æ¿,0x43=ææ¿,0x44=é¤æ¹¿,0x40=ãã®ä»"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã¡ã³åè»¢ã¬ãã«",
+		"fields":[
+			
+		],
+		"identifer":"FanRotationSpeed",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":210,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®¤å¤æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredPowerConsumptionOfOutdoorUnit",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":219,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¤æ°æ¸©åº¦è¨æ¸¬å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredOutdoorAirTemperature2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":238,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"int16_t",
+		"unitDescription":"0.1â",
+		"valueDescription":"0xF554ï½0x7FFD(-273.2ï½3276.5â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0260.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0260.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0260.json	(revision 101)
@@ -0,0 +1,1015 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ééè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OpenCloseSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é,0x42=é"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"éåº¦ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DegreeOfOpeningLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã©ã¤ã³ãè§åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"SetValueOfShadeAngle",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"degree",
+		"valueDescription":"0x00ï½0xB4(0ï½180degree)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã©ã¤ã³ãéééåº¦è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"ShadeOpenCloseSpeed",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ä½,0x42=ä¸­,0x43=é«"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0261.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0261.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0261.json	(revision 101)
@@ -0,0 +1,1084 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ééè¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"OpenCloseSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é,0x42=é,0x43=åæ­¢"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éåº¦ã¬ãã«è¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"ExtentOfOpening1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã©ã¤ã³ãè§åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"BlindAngleSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"degree",
+		"valueDescription":"0x00ï½0xB4(0ï½180degree)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã·ã£ãã¿ã¼éééåº¦è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"ShutterSpeed",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ä½,0x42=ä¸­,0x43=é«"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éåº¦ã¬ãã«è¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"ExtentOfOpening2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00ï½0xFF(0ï½255)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æ°é è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"ElectricLockSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ½é ,0x42=éé ,0x41=è¨±å¯,0x42=ç¦æ­¢"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ééè¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"OpenCloseSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":231,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é,0x42=é"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0263.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0263.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0263.json	(revision 101)
@@ -0,0 +1,1084 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ééè¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"OpenCloseSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é,0x42=é,0x43=åæ­¢"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éåº¦ã¬ãã«è¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"ExtentOfOpening1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã©ã¤ã³ãè§åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"BlindAngleSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"degree",
+		"valueDescription":"0x00ï½0xB4(0ï½180degree)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã·ã£ãã¿ã¼éééåº¦ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"ShutterSpeed",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ä½,0x42=ä¸­,0x43=é«"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éåº¦ã¬ãã«è¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"ExtentOfOpening2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00ï½0xFF(0ï½255)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æ°é è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"ElectricLockSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ½é ,0x42=éé ,0x41=è¨±å¯,0x42=ç¦æ­¢"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ééè¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"OpenCloseSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":231,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é,0x42=é"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0267.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0267.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0267.json	(revision 101)
@@ -0,0 +1,1116 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ£æ°´å¼ééè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"SprinkleValveOpenCloseSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=èªåON,0x41=æåON,0x42=æåOFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ°´ããééè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"SprinkleIntervalSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=å,0x41=æ¯æ¥,0x42=ï¼æ¥ãã,0x43=ï¼æ¥ãã,0x44=é±ï¼å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ°´ããåæ°è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"NumberOfSprinklesSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ï¼çªç®ON,0x42=ï¼çªç®ON,0x43=ä¸¡æ¹ON"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ°´ããæå»è¨­å®ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"SprinkleTimeSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ°´ããæå»è¨­å®ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"SprinkleTimeSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ°´ããæéè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"SprinkleDurationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00ï½0x3B(0ï½59)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList026B.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList026B.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList026B.json	(revision 101)
@@ -0,0 +1,1552 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ²¸ãä¸ãèªåè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AutomaticWaterHeatingSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=èªåæ²¸ãä¸ã,0x43=æåæ²¸ãä¸ãåæ­¢,0x42=æåæ²¸ãä¸ã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ²¸ãä¸ãæ¹¯æ¸©èªåè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AutomaticWaterTemperatureControlSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=AUTO,0x42=éAUTO"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ²¸ãä¸ãä¸­ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"WaterHeaterStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":178,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ²¸ãä¸ãä¸­,0x42=éæ²¸ãä¸ãä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ²¸ãä¸ãæ¹¯æ¸©è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"WaterHeatingTemperatureSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":179,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x64(0ï½100â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¼éæ²¸ãå¢ãè¨±å¯è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DaytimeReheatingPermissionSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":192,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ¼éæ²¸ãå¢ãè¨±å¯,0x42=æ¼éæ²¸ãå¢ãç¦æ­¢"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¸©æ°´å¨æ¹¯æ¸©è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredTemperatureOfWaterInWaterHeater",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":193,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x64(0ï½100â)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­¦å ±çºçç¶æ
+",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"è­¦å ±",
+				"fields":[
+					
+				],
+				"identifer":"Alarm",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]æ¹¯åãè­¦å ±:0=æ­£å¸¸,1=çºç\u000d\u000a[1]æ¼æ°´è­¦å ±:0=æ­£å¸¸,1=çºç\u000d\u000a[2]åçµè­¦å ±:0=æ­£å¸¸,1=çºç\u000d\u000a[3ï½7]for future reserved"
+			},
+			{
+				"arrayCount":3,
+				"description":"for future reserved",
+				"fields":[
+					
+				],
+				"identifer":"Reserved",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"AlarmStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":194,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"alarm_status_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"çµ¦æ¹¯æ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"TemperatureOfSuppliedWaterSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":209,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x64(0ï½100â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åæ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"BathWaterTemperatureSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":211,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x64(0ï½100â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ²¸ãä¸ãæ¹¯éè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"BathWaterVolumeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ®æ¹¯éè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredAmountOfWaterRemainingInTank",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"ã",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¿ã³ã¯å®¹éå¤",
+		"fields":[
+			
+		],
+		"identifer":"TankCapacity",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"ã",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533ã)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åèªåã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AutomaticBathWaterHeatingModeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=èªåå
+¥,0x42=èªåè§£é¤"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åè¶³ãæ¹¯åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AdditionOfHotWaterFunctionSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=è¶³ãæ¹¯å
+¥,0x42=è¶³ãæ¹¯å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åã¬ããåä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"SlightBathWaterTemperatureLoweringFunctionSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":230,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ã¬ããå
+¥,0x42=ã¬ããå"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åæ¹¯éè¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"BathWaterVolumeSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":231,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ã",
+		"valueDescription":"0x00ï½0xFD(0ï½253ã)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åæ¹¯éè¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"BathWaterVolumeSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":232,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åæ¹¯éè¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"BathWaterVolumeSetting3",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":238,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"ã",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533ã)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åæ¹¯éè¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"BathWaterVolumeSetting4",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":212,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x01ï½0xFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åæ¹¯éè¨­å®ï¼è¨­å®å¯è½æå¤§ã¬ãã«",
+		"fields":[
+			
+		],
+		"identifer":"BathWaterVolumeSetting4MaximumSettableLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":213,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x01ï½0xFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OnTimerReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":144,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç´å
+¥,0x42=äºç´å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OnTimerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":145,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¬å­£ï¼¨ï¼ï¼°ã¦ãããå®æ ¼æ¶è²»é»å",
+		"fields":[
+			
+		],
+		"identifer":"RatedPowerConsumptionOfHPUnitInWintertime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":219,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¸­éæï¼¨ï¼ï¼°ã¦ãããå®æ ¼æ¶è²»é»å",
+		"fields":[
+			
+		],
+		"identifer":"RatedPowerConsumptionOfHPUnitInInBetweenSeasons",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":220,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¤å­£ï¼¨ï¼ï¼°ã¦ãããå®æ ¼æ¶è²»é»å",
+		"fields":[
+			
+		],
+		"identifer":"RatedPowerConsumptionOfHPUnitInSummertime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":221,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList026E.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList026E.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList026E.json	(revision 101)
@@ -0,0 +1,1335 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¾¿åº§æ¸©åº¦ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"TemperatureLevelOfToiletSeat",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x3A"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¾¿åº§ãã¼ã¿è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"HeaterSettingOfToiletSeat",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ON,0x42=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¾¿åº§ãã¼ã¿ä¸æåæ­¢è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"TemporalHaltSettingOfToiletSeat",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é£ç¶è¨­å®,0x42=ä¸åè¨­å®,0x43=è¨­å®ãªã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¾¿åº§ãã¼ã¿ä¸æåæ­¢éå§æå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"TemporalHaltStartTimeOfToiletSeat",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¾¿åº§ãã¼ã¿ä¸æåæ­¢æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"TemporalHaltTimeDurationOfToiletSeat",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¨å±ææ¿æ¸©åº¦ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"TemperatureLevelSettingOfRoomHeating",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31=ä½,0x32=ä¸­,0x33=é«"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¨å±ææ¿è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"RoomHeatingSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":230,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é¨å±ææ¿ON,0x42=é¨å±ææ¿OFF,0x43=ã¿ã¤ãã¢ã¼ãè¨­å®"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¨å±ææ¿ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"RoomHeatingStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":231,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ON,0x42=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¨å±ææ¿éå§æå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"StartTimeOfRoomHeating",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":232,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¨å±ææ¿éè»¢æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"DurationTimeOfRoomHreating",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":233,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¹å¥éè»¢ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"SpecialOperationModeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":234,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=è¨­å®ãªã,0x41=å·ãè¾¼ã¿é²æ­¢,0x42ï½=for future reserved"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"äººä½æ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"HumanDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":235,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äººä½æ¤ç¥æ,0x42=äººä½æ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"çåº§æ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"SeatingDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":236,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=çåº§æ¤ç¥æ,0x42=çåº§æ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList026F.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList026F.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList026F.json	(revision 101)
@@ -0,0 +1,1084 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"æ½é è¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"LockSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ½é ,0x42=è§£é "
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ½é è¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"LockSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ½é ,0x42=è§£é "
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã¢ã¬ã¼ãæ½é ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"LockStatusOfDoorGuard",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ½é ,0x42=è§£é "
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æééç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"DoorOpenCloseStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é,0x42=é"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¨å®¤ã»ä¸å¨ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OccupantNonOccupantStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å¨å®¤,0x42=ä¸å¨"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­¦å ±ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"AlarmStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=éå¸¸ç¶æ
+ï¼è­¦å ±ãªãï¼,0x41=ããéã,0x42=æéæ¾,0x43=æåè§£é ,0x44=ã¿ã³ã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"èªåæ½é ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AutoLockModeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":230,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¥,0x42=å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0272.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0272.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0272.json	(revision 101)
@@ -0,0 +1,1631 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"çµ¦æ¹¯å¨çç¼ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"HotWaterHeatingStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":208,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=çµ¦æ¹¯çç¼ç¶æ
+æ,0x42=ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"çµ¦æ¹¯æ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"SetValueOfHotWaterTemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":209,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x64(0ï½100)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"çµ¦æ¹¯ä¿æ¸©è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"HotWaterWarmerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":210,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=çµ¦æ¹¯ä¿æ¸©åä½,0x42=çµ¦æ¹¯ä¿æ¸©åä½è§£é¤"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"èªåéè»¢æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"DurationOfAutomaticOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":218,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":"0xFFFF=ç¡é"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"èªåéè»¢æ®æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"RemainingAutomaticOperationTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":219,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":"0xFFFF=ç¡é"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åæ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"SetValueOfBathTemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x64(0ï½100)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åçµ¦æ¹¯å¨çç¼ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"BathWaterHeaterStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=çç¼ç¶æ
+æ,0x42=ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åèªåã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"BathAutoModeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=èªåå
+¥,0x42=èªåè§£é¤"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åè¿½ãçãåä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"BathAdditionalBoilUpOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=è¿½ãçãå
+¥,0x42=è¿½ãçãå"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åè¶³ãæ¹¯åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"BathHotWaterAddingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=è¶³ãæ¹¯å
+¥,0x42=è¶³ãæ¹¯å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åã¬ããåä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"BathWaterTemperatureLoweringOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":230,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ã¬ããå
+¥,0x42=ã¬ããå"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åæ¹¯éè¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"BathHotWaterVolumeSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":231,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ã",
+		"valueDescription":"0x00ï½0xFD(0ï½253ã)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åæ¹¯éè¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"BathHotWaterVolumeSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":232,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åæ¹¯éè¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"BathHotWaterVolumeSetting3",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":238,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"ã",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533ã)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åæ¹¯éè¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"BathHotWaterVolumeSetting4",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":212,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x01ï½0xFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åæ¹¯éè¨­å®ï¼è¨­å®å¯è½æå¤§ã¬ãã«",
+		"fields":[
+			
+		],
+		"identifer":"BathHotWaterVolumeSetting4MaximumSettableLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":213,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x01ï½0xFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æµ´å®¤åªå
+è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"BathroomPrioritySetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":233,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æµ´å®¤åªå
+å
+¥,0x42=æµ´å®¤åªå
+å"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã·ã£ã¯ã¼çµ¦æ¹¯ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"ShowerHotWaterSupplyStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":234,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ã·ã£ã¯ã¼çµ¦æ¹¯ç¶æ
+æ,0x42=ã·ã£ã¯ã¼çµ¦æ¹¯ç¶æ
+ç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å°æçµ¦æ¹¯ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"KitchenHotWaterSupplyStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":235,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å°æçµ¦æ¹¯ç¶æ
+æ,0x42=å°æçµ¦æ¹¯ç¶æ
+ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"çµ¦æ¹¯ä¿æ¸©ï¼¯ï¼®ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"HotWaterWarmerOnTimerReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":236,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç´å
+¥,0x42=äºç´å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"çµ¦æ¹¯ä¿æ¸©ï¼¯ï¼®ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"SetValueOfHotWaterWarmerOnTimerTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":237,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åèªåï¼¯ï¼®ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OnTimerReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":144,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç´å
+¥,0x42=äºç´å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åèªåï¼¯ï¼®ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"SetValueOfOnTimerTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":145,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åèªåï¼¯ï¼®ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"SetValueOfOnTimerRelativeTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":146,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0273.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0273.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0273.json	(revision 101)
@@ -0,0 +1,1461 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éè»¢è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x10=ææ°éè»¢,0x20=å
+¥æµ´åäºåææ¿éè»¢,0x30=å
+¥æµ´ä¸­ææ¿éè»¢,0x40=ä¹¾ç¥éè»¢,0x50=æ¶¼é¢¨éè»¢,0x00=åæ­¢"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ææ°éè»¢è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"VentilationOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=èªå,0x42=æ¨æº,0x31ï½0x38=é¢¨éã¬ãã«"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å
+¥æµ´åäºåææ¿éè»¢è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"BathroomPreWarmerOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":178,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=èªå,0x42=æ¨æº,0x31ï½0x38=è½åã¬ãã«"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å
+¥æµ´ä¸­ææ¿éè»¢è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"BathroomHeaterOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":179,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=èªå,0x42=æ¨æº,0x31ï½0x38=è½åã¬ãã«"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¹¾ç¥éè»¢è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"BathroomDryerOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":180,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=èªå,0x42=æ¨æº,0x31ï½0x38=è½åã¬ãã«"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¶¼é¢¨éè»¢è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CoolAirCirculatorOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":181,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=èªå,0x42=æ¨æº,0x31ï½0x38=è½åã¬ãã«"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®¤å
+ç¸å¯¾æ¹¿åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredRelativeBathroomHumidity",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":186,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®¤å
+æ¸©åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredBathroomTemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":187,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x81ï½0x7D(-127ï½125â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ææ°é¢¨éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"VentilationAirFlowRateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":194,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=èªå,0x31ï½0x38=é¢¨éã¬ãã«"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã£ã«ã¿ãµã¤ã³è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"FilterCleaningReminderSignSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":207,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¹ç¯,0x42=æ¶ç¯"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"äººä½æ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"HumanBodyDetectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äººä½æ¤ç¥ãã,0x42=äººä½æ¤ç¥ãªã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãäºç´è¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"OnTimerBasedReservationSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":144,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç´å
+¥,0x42=äºç´å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãäºç´è¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"OnTimerBasedReservationSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x10=ææ°éè»¢äºç´,0x20=å
+¥æµ´åäºåææ¿éè»¢äºç´,0x30=å
+¥æµ´ä¸­ææ¿éè»¢äºç´,0x40=ä¹¾ç¥éè»¢äºç´,0x50=æ¶¼é¢¨éè»¢äºç´,0x00=äºç´å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OnTimerSettingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":145,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OnTimerSettingRelativeTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":146,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OffTimerBasedReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":148,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç´å
+¥,0x42=äºç´å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OffTimerSettingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":149,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OffTimerSettingRelativeTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":150,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0279.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0279.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0279.json	(revision 101)
@@ -0,0 +1,1168 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç³»çµ±é£ç³»ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"SystemInterconnectionStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":208,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ç³»çµ±é£ç³»ï¼éæ½®æµå¯ï¼,0x01=ç¬ç«,0x02=ç³»çµ±é£ç³»ï¼éæ½®æµä¸å¯ï¼"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬æçºé»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousAmountOfElectricityGenerated",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®çºé»é»åéè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativeAmountOfElectricityGenerated",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®çºé»é»åéãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"ResettingCumulativeAmountOfElectricityGenerated",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®å£²é»é»åéè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativeAmountOfElectricitySold",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®å£²é»é»åéãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"ResettingCumulativeAmountOfElectricitySold",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"çºé»é»åå¶éè¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"PowerGenerationOutputLimitSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"çºé»é»åå¶éè¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"PowerGenerationOutputLimitSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":230,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å£²é»é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"LimitSettingForTheAmountOfElectricitySold",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":231,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®æ ¼çºé»é»åå¤ï¼ç³»çµ±é£ç³»æï¼",
+		"fields":[
+			
+		],
+		"identifer":"RatedPowerGenerationOutputSystemInterconnected",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":232,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®æ ¼çºé»é»åå¤ï¼ç¬ç«æï¼",
+		"fields":[
+			
+		],
+		"identifer":"RatedPowerGenerationOutputIndependent",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":233,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList027A.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList027A.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList027A.json	(revision 101)
@@ -0,0 +1,1561 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éè»¢ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OperationModeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ææ¿,0x42=å·æ¿"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ°´æ¸©è¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"WaterTemperatureSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x64(0ï½100â),0x71=AUTO"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ°´æ¸©è¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"WaterTemperatureSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x21ï½0x2F=å·æ¿ï¼å·æ°´ï¼(æä½ã¬ãã«ï½æé«ã¬ãã«),0x31ï½0x3F=ææ¿ï¼æ¸©æ°´ï¼(æä½ã¬ãã«ï½æé«ã¬ãã«),0x41=AUTO"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¾ãæ°´æ¸©è¨æ¸¬å¤ï¼åºå£æ°´æ¸©ï¼",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredTemperatureOfOutwardWaterExitWaterTemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x64(0ï½100â)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ»ãæ°´æ¸©è¨æ¸¬å¤ï¼å
+¥å£æ°´æ¸©ï¼",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredTemperatureOfInwardWaterEntranceWaterTemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x64(0ï½100â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¹æ®éè»¢è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"SpecialOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=éå¸¸éè»¢,0x42=ã²ãããéè»¢,0x43=ãã¤ãã¯ã¼éè»¢"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã¤ãªã¼ã¿ã¤ãã¼è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DailyTimerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":230,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=ã¿ã¤ãã¼å,0x41=ã¿ã¤ãã¼1,0x42=ã¿ã¤ãã¼2"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã¤ãªã¼ã¿ã¤ãã¼ï¼è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ï¼æããï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromZeroToThreeOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼æããï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromFourToSevenOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼æããï¼ï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromEightToElevenOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼ï¼æããï¼ï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromTwelveToFifteenOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼ï¼æããï¼ï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromSixteenToNineteenOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼ï¼æããï¼ï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromTwentyToTwentyThreeOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			}
+		],
+		"identifer":"DailyTimerSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":231,
+		"required":[
+			"NONE"
+		],
+		"size":6,
+		"type":"daily_timer_setting_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã¤ãªã¼ã¿ã¤ãã¼ï¼è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ï¼æããï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromZeroToThreeOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼æããï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromFourToSevenOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼æããï¼ï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromEightToElevenOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼ï¼æããï¼ï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromTwelveToFifteenOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼ï¼æããï¼ï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromSixteenToNineteenOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼ï¼æããï¼ï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromTwentyToTwentyThreeOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			}
+		],
+		"identifer":"DailyTimerSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":232,
+		"required":[
+			"NONE"
+		],
+		"size":6,
+		"type":"daily_timer_setting_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OnTimerReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":144,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç´å
+¥,0x42=äºç´å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OnTimerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":145,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"RelativeOnTimerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":146,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OffTimerReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":148,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç´å
+¥,0x42=äºç´å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"TimeSetByOffTimer",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":149,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"RelativeOffTimerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":150,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList027B.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList027B.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList027B.json	(revision 101)
@@ -0,0 +1,1561 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¸©åº¦è¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"TemperatureSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x32(0ï½50â),0x41=AUTO"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¸©åº¦è¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"TemperatureSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x3F(æä½ï½æé«ã¬ãã«),0x41=AUTO"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®¤å
+æ¸©åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredRoomTeemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x81ï½0x7D(-127ï½125â)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"åºæ¸©åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredFloorTemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x81ï½0x7D(-127ï½125â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¾ã¼ã³åæ¿ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"ZoneChangeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"[0]ã¾ã¼ã³0:1=å¶å¾¡æã,0=å¶å¾¡ç¡ã\u000d\u000a[1]ã¾ã¼ã³1:1=å¶å¾¡æã,0=å¶å¾¡ç¡ã\u000d\u000a[2]ã¾ã¼ã³2:1=å¶å¾¡æã,0=å¶å¾¡ç¡ã\u000d\u000a[3]ã¾ã¼ã³3:1=å¶å¾¡æã,0=å¶å¾¡ç¡ã\u000d\u000a[4]ã¾ã¼ã³4:1=å¶å¾¡æã,0=å¶å¾¡ç¡ã\u000d\u000a[5]ã¾ã¼ã³5:1=å¶å¾¡æã,0=å¶å¾¡ç¡ã\u000d\u000a[6]ã¾ã¼ã³6:1=å¶å¾¡æã,0=å¶å¾¡ç¡ã\u000d\u000a[7]ã¾ã¼ã³7:1=å¶å¾¡æã,0=å¶å¾¡ç¡ã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¹æ®éè»¢è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"SpecialOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=éå¸¸éè»¢,0x42=ã²ãããéè»¢,0x43=ãã¤ãã¯ã¼éè»¢"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã¤ãªã¼ã¿ã¤ãã¼è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DailyTimerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":230,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=ã¿ã¤ãã¼å,0x41=ã¿ã¤ãã¼1,0x42=ã¿ã¤ãã¼2"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã¤ãªã¼ã¿ã¤ãã¼ï¼è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ï¼æããï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromZeroToThreeOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼æããï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromFourToSevenOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼æããï¼ï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromEightToElevenOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼ï¼æããï¼ï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromTwelveToFifteenOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼ï¼æããï¼ï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromSixteenToNineteenOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼ï¼æããï¼ï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromTwentyToTwentyThreeOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			}
+		],
+		"identifer":"DailyTimerSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":231,
+		"required":[
+			"NONE"
+		],
+		"size":6,
+		"type":"daily_timer_setting_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã¤ãªã¼ã¿ã¤ãã¼ï¼è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ï¼æããï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromZeroToThreeOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼æããï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromFourToSevenOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼æããï¼ï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromEightToElevenOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼ï¼æããï¼ï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromTwelveToFifteenOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼ï¼æããï¼ï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromSixteenToNineteenOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼ï¼æããï¼ï¼æ",
+				"fields":[
+					
+				],
+				"identifer":"FromTwentyToTwentyThreeOClock",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"[0]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[1]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[2]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[3]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[4]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[5]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[6]ï¼ï¼æï¼å:1=éè»¢,0=åæ­¢\u000d\u000a[7]ï¼ï¼æï¼ï¼å:1=éè»¢,0=åæ­¢"
+			}
+		],
+		"identifer":"DailyTimerSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":232,
+		"required":[
+			"NONE"
+		],
+		"size":6,
+		"type":"daily_timer_setting_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OnTimerReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":144,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç´å
+¥,0x42=äºç´å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"TimeSetByOnTimer",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":145,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"RelativeOnTimerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":146,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OffTimerReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":148,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç´å
+¥,0x42=äºç´å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"TimeSetByOffTimer",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":149,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"RelativeOffTimerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":150,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList027C.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList027C.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList027C.json	(revision 101)
@@ -0,0 +1,1301 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¸©æ°´å¨æ¹¯æ¸©è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredTemperatureOfWaterInWaterHeater",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":193,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x64(0ï½100â)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®æ ¼çºé»é",
+		"fields":[
+			
+		],
+		"identifer":"RatedPowerGenerationOutput",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":194,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65,533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è²¯æ¹¯æ§½ç±é",
+		"fields":[
+			
+		],
+		"identifer":"HeatingValueOfHotWaterStorageTank",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":195,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"MJ",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65,533MJ)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬æçºé»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerGenerationOutput",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":196,
+		"required":[
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65,533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®çºé»é»åéè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerGenerationOutput",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":197,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®çºé»é»åéãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CumulativePowerGenerationOutputResetSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":198,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬æã¬ã¹æ¶è²»éè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousGasConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":199,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.001ã¥\/h",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65.533ã¥\/h)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®ã¬ã¹æ¶è²»éè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativeGasConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":200,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001ã¥",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999ã¥)"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®ã¬ã¹æ¶è²»éãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CumulativeGasConsumptionResetSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":201,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"çºé»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerGenerationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":202,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=çºé»åä½,0x42=çºé»åæ­¢"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"çºé»åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"PowerGenerationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":203,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=çºé»ä¸­,0x42=åæ­¢ä¸­,0x43=èµ·åä¸­,0x44=åæ­¢åä½ä¸­,0x45=ã¢ã¤ãã«ä¸­"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®
+å
+ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInHouseInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":204,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65,533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®
+å
+ç©ç®æ¶è²»é»åéè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInHouseCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":205,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"å®
+å
+ç©ç®æ¶è²»é»åéãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"InHouseCumulativePowerConsumptionReset",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":206,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç³»çµ±é£ç³»ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"SystemInterconnectedType",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":208,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ç³»çµ±é£ç³»ï¼éæ½®æµå¯ï¼,0x01=ç¬ç«,0x02=ç³»çµ±é£ç³»ï¼éæ½®æµä¸å¯ï¼"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ®æ¹¯éè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredRemainingHotWaterAmount",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"ã",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65,533ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¿ã³ã¯å®¹éå¤",
+		"fields":[
+			
+		],
+		"identifer":"TankCapacity",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"ã",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65,533ã)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList027D.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList027D.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList027D.json	(revision 101)
@@ -0,0 +1,2021 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æå°æå¤§å
+
+é»é»åå¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æå°å
+
+é»é»åå¤",
+				"fields":[
+					
+				],
+				"identifer":"MinimumChargingElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"W",
+				"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999W)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æå¤§å
+
+é»é»åå¤",
+				"fields":[
+					
+				],
+				"identifer":"MaximumChargingElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"W",
+				"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999W)"
+			}
+		],
+		"identifer":"MinimumMaximumChargingElectricEnergy",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":200,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"minimum_maximum_charging_electric_energy_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æå°æå¤§æ¾é»é»åå¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æå°æ¾é»é»åå¤",
+				"fields":[
+					
+				],
+				"identifer":"MinimumDischargingElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"W",
+				"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999W)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æå¤§æ¾é»é»åå¤",
+				"fields":[
+					
+				],
+				"identifer":"MaximumDischargingElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"W",
+				"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999W)"
+			}
+		],
+		"identifer":"MinimumMaximumDischargingElectricEnergy",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":201,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"minimum_maximum_discharging_electric_energy_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æå°æå¤§å
+
+é»é»æµå¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æå°å
+
+é»é»æµå¤",
+				"fields":[
+					
+				],
+				"identifer":"MinimumChargingCurrent",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6A)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æå¤§å
+
+é»é»æµå¤",
+				"fields":[
+					
+				],
+				"identifer":"MaximumChargingCurrent",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6A)"
+			}
+		],
+		"identifer":"MinimumMaximumChargingCurrent",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":202,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"minimum_maximum_charging_current_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æå°æå¤§æ¾é»é»æµå¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æå°æ¾é»é»æµå¤",
+				"fields":[
+					
+				],
+				"identifer":"MinimumDischargingCurrent",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6A)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æå¤§æ¾é»é»æµå¤",
+				"fields":[
+					
+				],
+				"identifer":"MaximumDischargingCurrent",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6A)"
+			}
+		],
+		"identifer":"MinimumMaximumDischargingCurrent",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":203,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"minimum_maximum_discharging_current_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®æ ¼é»åé",
+		"fields":[
+			
+		],
+		"identifer":"RatedElectricEnergy",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":208,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"Wh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999Wh)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®æ ¼å®¹é",
+		"fields":[
+			
+		],
+		"identifer":"RatedCapacity",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":209,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1Ah",
+		"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6Ah)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®æ ¼é»å§",
+		"fields":[
+			
+		],
+		"identifer":"RatedVoltage",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":210,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"V",
+		"valueDescription":"0x0000ï½0x7FFE(0ï½32,766V)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬æå
+
+æ¾é»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousChargeDischargElectricEnergy",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":211,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"int32_t",
+		"unitDescription":"W",
+		"valueDescription":"0x00000001ï½0x3B9AC9FF=å
+
+é»æï¼ãã©ã¹å¤ï¼(1ï½999,999,999W),0xFFFFFFFFï½0xC4653601=æ¾é»æï¼ãã¤ãã¹å¤ï¼(-1ï½-999,999,999W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬æå
+
+æ¾é»é»æµè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousChargeDischargCurrent",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":212,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"int16_t",
+		"unitDescription":"0.1A",
+		"valueDescription":"0x0001ï½0x7FFE=å
+
+é»æï¼ãã©ã¹å¤ï¼(0.1ï½3,276.6A),0xFFFFï½0x8001=æ¾é»æï¼ãã¤ãã¹å¤ï¼(-0.1ï½-3,276.7A)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬æå
+
+æ¾é»é»å§è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousChargeDischargVoltage",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":213,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"int16_t",
+		"unitDescription":"V",
+		"valueDescription":"0x0001ï½0x7FFE=å
+
+é»æï¼ãã©ã¹å¤ï¼(1ï½32,766V),0xFFFFï½0x8001=æ¾é»æï¼ãã¤ãã¹å¤ï¼(-1ï½-32,767V)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¾é»é»åéè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativeDischargeElectricEnergy",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":214,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¾é»é»åéãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativeDischargeElectricEnergyResetSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":215,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®å
+
+é»é»åéè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativeChargeElectricEnergy",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":216,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®å
+
+é»é»åéãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativeChargeElectricEnergyResetSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":217,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"éè»¢ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OperationModeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":218,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ¥éå
+
+é»,0x42=å
+
+é»,0x43=æ¾é»,0x44=å¾
+æ©,0x45=ãã¹ã,0x40=ãã®ä»"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç³»çµ±é£ç³»ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"SystemInterconnectedType",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":219,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ç³»çµ±é£ç³»ï¼éæ½®æµå¯ï¼,0x01=ç¬ç«,0x02=ç³»çµ±é£ç³»ï¼éæ½®æµä¸å¯ï¼"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æå°æå¤§å
+
+é»é»åå¤ï¼ç¬ç«æï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æå°å
+
+é»é»åå¤",
+				"fields":[
+					
+				],
+				"identifer":"MinimumChargingElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"W",
+				"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999W)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æå¤§å
+
+é»é»åå¤",
+				"fields":[
+					
+				],
+				"identifer":"MaximumChargingElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"W",
+				"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999W)"
+			}
+		],
+		"identifer":"MinimumMaximumChargingPowerIndependent",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":220,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"minimum_maximum_charging_electric_energy_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æå°æå¤§æ¾é»é»åå¤ï¼ç¬ç«æï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æå°æ¾é»é»åå¤",
+				"fields":[
+					
+				],
+				"identifer":"MinimumDischargingElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"W",
+				"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999W)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æå¤§æ¾é»é»åå¤",
+				"fields":[
+					
+				],
+				"identifer":"MaximumDischargingElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"W",
+				"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999W)"
+			}
+		],
+		"identifer":"MinimumMaximumDischargingPowerIndependent",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":221,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"minimum_maximum_discharging_electric_energy_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æå°æå¤§å
+
+é»é»æµå¤ï¼ç¬ç«æï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æå°å
+
+é»é»æµå¤",
+				"fields":[
+					
+				],
+				"identifer":"MinimumChargingCurrent",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6A)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æå¤§å
+
+é»é»æµå¤",
+				"fields":[
+					
+				],
+				"identifer":"MaximumChargingCurrent",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6A)"
+			}
+		],
+		"identifer":"MinimumMaximumChargingCurrentIndependent",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":222,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"minimum_maximum_charging_current_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æå°æå¤§æ¾é»é»æµå¤ï¼ç¬ç«æï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æå°æ¾é»é»æµå¤",
+				"fields":[
+					
+				],
+				"identifer":"MinimumDischargingCurrent",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6A)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æå¤§æ¾é»é»æµå¤",
+				"fields":[
+					
+				],
+				"identifer":"MaximumDischargingCurrent",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6A)"
+			}
+		],
+		"identifer":"MinimumMaximumDischargingCurrentIndependent",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":223,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"minimum_maximum_discharging_current_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å
+
+æ¾é»éè¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"ChargingDischaRgingAmountSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"int32_t",
+		"unitDescription":"Wh",
+		"valueDescription":"0x00000001ï½0x3B9AC9FF=å
+
+é»æï¼ãã©ã¹å¤ï¼(1ï½999,999,999Wh),0xFFFFFFFFï½0xC4653601=æ¾é»æï¼ãã¤ãã¹å¤ï¼(-1ï½-999,999,999Wh)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å
+
+æ¾é»éè¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"ChargingDischaRgingAmountSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"int16_t",
+		"unitDescription":"0.1Ah",
+		"valueDescription":"0x0001ï½0x7FFE=å
+
+é»æï¼ãã©ã¹å¤ï¼(0.1ï½3,276.6Ah),0xFFFFï½0x8001=æ¾é»æï¼ãã¤ãã¹å¤ï¼(-0.1ï½-3,276.7Ah)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"èé»æ®éï¼",
+		"fields":[
+			
+		],
+		"identifer":"RemainingStoredElectricity1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"Wh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999Wh)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"èé»æ®éï¼",
+		"fields":[
+			
+		],
+		"identifer":"RemainingStoredElectricity2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1Ah",
+		"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6Ah)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"èé»æ®éï¼",
+		"fields":[
+			
+		],
+		"identifer":"RemainingStoredElectricity3",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":228,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å£åç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"BatteryStateOfHealth",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"èé»æ± ã¿ã¤ã",
+		"fields":[
+			
+		],
+		"identifer":"BatteryType",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":230,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00ï½0xFF=ã¿ã¤ã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å
+
+é»éè¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"ChargingAmountSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":231,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"Wh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999Wh)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¾é»éè¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"DischargingAmountSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":232,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"Wh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999Wh)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å
+
+é»éè¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"ChargingAmountSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":233,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1Ah",
+		"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6Ah)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¾é»éè¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"DischargingAmountSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":234,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1Ah",
+		"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6Ah)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å
+
+é»é»åè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"ChargingElectricEnergySetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":235,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"W",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999W)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¾é»é»åè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"DischargingElectricEnergySetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":236,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"W",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999W)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å
+
+é»é»æµè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"ChargingCurrentSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":237,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1A",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½6,553.3A)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¾é»é»æµè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"DischargingCurrentSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":238,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1A",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½6,553.3A)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®æ ¼é»å§ï¼ç¬ç«æï¼",
+		"fields":[
+			
+		],
+		"identifer":"RatedVoltageIndependent",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":239,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"V",
+		"valueDescription":"0x0000ï½0x7FFE(0ï½32,766V)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList027E.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList027E.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList027E.json	(revision 101)
@@ -0,0 +1,1900 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¶ï¼ï¼¨ä½¿ç¨å¯è½å®¹éå¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"DischargeableCapacityOfVehicleMountedBattery1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":192,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"Wh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999Wh)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¶ï¼ï¼¨ä½¿ç¨å¯è½å®¹éå¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"DischargeableCapacityOfVehicleMountedBattery2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":193,
+		"required":[
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1Ah",
+		"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6Ah)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¶ï¼ï¼¨ä½¿ç¨å¯è½æ®å®¹éï¼",
+		"fields":[
+			
+		],
+		"identifer":"RemainingDischargeableCapacityOfVehicleMountedBattery1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":194,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"Wh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999Wh)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¶ï¼ï¼¨ä½¿ç¨å¯è½æ®å®¹éï¼",
+		"fields":[
+			
+		],
+		"identifer":"RemainingDischargeableCapacityOfVehicleMountedBattery2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":195,
+		"required":[
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1Ah",
+		"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6Ah)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¶ï¼ï¼¨ä½¿ç¨å¯è½æ®å®¹éï¼",
+		"fields":[
+			
+		],
+		"identifer":"RemainingDischargeableCapacityOfVehicleMountedBattery3",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":196,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®æ ¼å
+
+é»è½å",
+		"fields":[
+			
+		],
+		"identifer":"RatedChargeCapacity",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":197,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"W",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®æ ¼æ¾é»è½å",
+		"fields":[
+			
+		],
+		"identifer":"RatedDischargeCapacity",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":198,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"W",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999W)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"å
+
+æ¾é»å¯å¦ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"VehicleConnectionAndChargeableDischarge",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":199,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=å
+
+é»ä¸å¯ã»æ¾é»ä¸å¯,0x41=å
+
+é»å¯ã»æ¾é»ä¸å¯,0x42=å
+
+é»ä¸å¯ã»æ¾é»å¯,0x043=å
+
+é»å¯ã»æ¾é»å¯"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æå°æå¤§å
+
+é»é»åå¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æå°å
+
+é»é»åå¤",
+				"fields":[
+					
+				],
+				"identifer":"MinimumChargingElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"W",
+				"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999W)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æå¤§å
+
+é»é»åå¤",
+				"fields":[
+					
+				],
+				"identifer":"MaximumChargingElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"W",
+				"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999W)"
+			}
+		],
+		"identifer":"MinimumMaximumChargingElectricEnergy",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":200,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"minimum_maximum_charging_electric_energy_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æå°æå¤§æ¾é»é»åå¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æå°æ¾é»é»åå¤",
+				"fields":[
+					
+				],
+				"identifer":"MinimumDischargingElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"W",
+				"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999W)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æå¤§æ¾é»é»åå¤",
+				"fields":[
+					
+				],
+				"identifer":"MaximumDischargingElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"W",
+				"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999W)"
+			}
+		],
+		"identifer":"MinimumMaximumDischargingElectricEnergy",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":201,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"minimum_maximum_discharging_electric_energy_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æå°æå¤§å
+
+é»é»æµå¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æå°å
+
+é»é»æµå¤",
+				"fields":[
+					
+				],
+				"identifer":"MinimumChargingCurrent",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6A)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æå¤§å
+
+é»é»æµå¤",
+				"fields":[
+					
+				],
+				"identifer":"MaximumChargingCurrent",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6A)"
+			}
+		],
+		"identifer":"MinimumMaximumChargingCurrent",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":202,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"minimum_maximum_charging_current_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æå°æå¤§æ¾é»é»æµå¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æå°æ¾é»é»æµå¤",
+				"fields":[
+					
+				],
+				"identifer":"MinimumDischargingCurrent",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6A)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æå¤§æ¾é»é»æµå¤",
+				"fields":[
+					
+				],
+				"identifer":"MaximumDischargingCurrent",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6A)"
+			}
+		],
+		"identifer":"MinimumMaximumDischargingCurrent",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":203,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"minimum_maximum_discharging_current_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä½¿ç¨å®¹éå¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"UsedCapacityOfVehicleMountedBattery1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":208,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"Wh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999Wh)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä½¿ç¨å®¹éå¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"UsedCapacityOfVehicleMountedBattery2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":209,
+		"required":[
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1Ah",
+		"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6Ah)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®æ ¼é»å§",
+		"fields":[
+			
+		],
+		"identifer":"RatedVoltage",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":210,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"V",
+		"valueDescription":"0x0000ï½0x7FFE(0ï½32,766V)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬æå
+
+æ¾é»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousChargingDischargingElectricEnergy",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":211,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"int32_t",
+		"unitDescription":"W",
+		"valueDescription":"0x00000001ï½0x3B9AC9FF=å
+
+é»æï¼ãã©ã¹å¤ï¼(1ï½999,999,999W),0xFFFFFFFFï½0xC4653601=æ¾é»æï¼ãã¤ãã¹å¤ï¼(-1ï½-999,999,999W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬æå
+
+æ¾é»é»æµè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousChargingDischargingCurrent",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":212,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"int16_t",
+		"unitDescription":"0.1A",
+		"valueDescription":"0x0001ï½0x7FFE=å
+
+é»æï¼ãã©ã¹å¤ï¼(0.1ï½3,276.6A),0xFFFFï½0x8001=æ¾é»æï¼ãã¤ãã¹å¤ï¼(-0.1ï½-3,276.7A)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬æå
+
+æ¾é»é»å§è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousChargingDischargingVoltage",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":213,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"int16_t",
+		"unitDescription":"V",
+		"valueDescription":"0x0001ï½0x7FFE=å
+
+é»æï¼ãã©ã¹å¤ï¼(1ï½32,766V),0xFFFFï½0x8001=æ¾é»æï¼ãã¤ãã¹å¤ï¼(-1ï½-32,767V)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¾é»é»åéè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredIntegralDischargingElectricEnergy",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":214,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¾é»é»åéãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"IntegralDischargingElectricEnergyResetSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":215,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®å
+
+é»é»åéè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredIntegralChargingElectricEnergy",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":216,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®å
+
+é»é»åéãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"IntegralChargingElectricEnergyResetSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":217,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"éè»¢ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OperationModeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":218,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ¥éå
+
+é»,0x42=å
+
+é»,0x43=æ¾é»,0x44=å¾
+æ©,0x45=ãã¹ã,0x40=ãã®ä»"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç³»çµ±é£ç³»ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"SystemInterconnectedType",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":219,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ç³»çµ±é£ç³»ï¼éæ½®æµå¯ï¼,0x01=ç¬ç«,0x02=ç³»çµ±é£ç³»ï¼éæ½®æµä¸å¯ï¼"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æ± æ®å®¹éï¼",
+		"fields":[
+			
+		],
+		"identifer":"RemainingStoredElectricityOfVehicleMountedBattery1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"Wh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999Wh)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æ± æ®å®¹éï¼",
+		"fields":[
+			
+		],
+		"identifer":"RemainingStoredElectricityOfVehicleMountedBattery2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1Ah",
+		"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6Ah)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æ± æ®å®¹éï¼",
+		"fields":[
+			
+		],
+		"identifer":"RemainingStoredElectricityOfVehicleMountedBattery3",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":228,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å£åç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"BatteryStateOfHealth",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å
+
+é»éè¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"ChargingAmountSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":231,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"Wh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999Wh)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¾é»éè¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"DischargingAmountSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":232,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"Wh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999Wh)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å
+
+é»éè¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"ChargingAmountSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":233,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1Ah",
+		"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6Ah)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¾é»éè¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"DischargingAmountSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":234,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1Ah",
+		"valueDescription":"0x0000ï½0x7FFE(0ï½3,276.6Ah)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å
+
+é»é»åè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"ChargingElectricEnergySetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":235,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"W",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999W)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¾é»é»åè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"DischargingElectricEnergySetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":236,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"W",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999W)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å
+
+é»é»æµè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"ChargingCurrentSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":237,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1A",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½6,553.3A)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¾é»é»æµè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"DischargingCurrentSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":238,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1A",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½6,553.3A)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList027F.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList027F.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList027F.json	(revision 101)
@@ -0,0 +1,1301 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31= OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¸©æ°´å¨æ¹¯æ¸©è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredTemperatureOfWaterInWaterHeater",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":193,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x64(0ï½100â)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®æ ¼çºé»é",
+		"fields":[
+			
+		],
+		"identifer":"RatedPowerGenerationOutput",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":194,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65,533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è²¯æ¹¯æ§½ç±é",
+		"fields":[
+			
+		],
+		"identifer":"HeatingValueOfHotWaterStorageTank",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":195,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"MJ",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65,533MJ)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬æçºé»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerGenerationOutput",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":196,
+		"required":[
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65,533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®çºé»é»åéè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerGenerationOutput",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":197,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®çºé»é»åéãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CumulativePowerGenerationOutputResetSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":198,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬æã¬ã¹æ¶è²»éè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousGasConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":199,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.001ã¥\/h",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65.533ã¥\/h)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®ã¬ã¹æ¶è²»éè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativeGasConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":200,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001ã¥",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999ã¥)"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®ã¬ã¹æ¶è²»éãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CumulativeGasConsumptionResetSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":201,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"çºé»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerGenerationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":202,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=çºé»åä½,0x42=çºé»åæ­¢"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"çºé»åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"PowerGenerationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":203,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=çºé»ä¸­,0x42=åæ­¢ä¸­,0x45=ã¢ã¤ãã«ä¸­"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®
+å
+ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInHouseInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":204,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65,533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®
+å
+ç©ç®æ¶è²»é»åéè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInHouseCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":205,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"å®
+å
+ç©ç®æ¶è²»é»åéãªã»ããè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"InHouseCumulativePowerConsumptionReset",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":206,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ãªã»ãã"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç³»çµ±é£ç³»ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"SystemInterconnectedType",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":208,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=ç³»çµ±é£ç³»ï¼éæ½®æµå¯ï¼,0x01=ç¬ç«,0x02=ç³»çµ±é£ç³»ï¼éæ½®æµä¸å¯ï¼"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ®æ¹¯éè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredRemainingHotWaterAmount",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"ã",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65,533ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¿ã³ã¯å®¹éå¤",
+		"fields":[
+			
+		],
+		"identifer":"TankCapacity",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"ã",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65,533ã)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0280.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0280.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0280.json	(revision 101)
@@ -0,0 +1,1007 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®é»åéè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"IntegralElectricEnergyMeasurementValue",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.1kWh|0.01kWh",
+		"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®é»åéåä½",
+		"fields":[
+			
+		],
+		"identifer":"IntegralElectricEnergyUnit",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x01=0.1kWh,0x02=0.01kWh"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":48,
+		"description":"ç©ç®é»åéè¨æ¸¬å¤å±¥æ­´ï¼",
+		"fields":[
+			
+		],
+		"identifer":"IntegralElectricEnergyMeasurementLog1",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.1kWh|0.01kWh",
+		"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+	},
+	{
+		"access":[
+			"NONE"
+		],
+		"arrayCount":2160,
+		"description":"ç©ç®é»åéè¨æ¸¬å¤å±¥æ­´ï¼",
+		"fields":[
+			
+		],
+		"identifer":"IntegralElectricEnergyMeasurementLog2",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.1kWh|0.01kWh",
+		"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0281.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0281.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0281.json	(revision 101)
@@ -0,0 +1,1125 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ°´æµåºå",
+		"fields":[
+			
+		],
+		"identifer":"FlowingWaterClassification",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":208,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ä¸æ°´,0x31=ä¸­æ°´,0x32=æ¸©æ°´,0x33=ãã®ä»"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ææè
+åºå",
+		"fields":[
+			
+		],
+		"identifer":"OwnerClassification",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":209,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=æå®ãªã,0x31=äºæ¥­ä½,0x32=æ°éä¼ç¤¾,0x33=åäºº"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ°´æµéè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativeAmountOfFlowingWater",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"ã¥",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ°´æµéè¨æ¸¬å¤åä½",
+		"fields":[
+			
+		],
+		"identifer":"UnitForMeasuredCumulativeAmountsOfFlowingWater",
+		"initialValue":"0x04",
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=1ã¥,0x01=0.1ã¥,0x02=0.01ã¥,0x03=0.001ã¥,0x04=0.0001ã¥,0x05=0.00001ã¥,0x06=0.000001ã¥"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":48,
+		"description":"ç©ç®æ°´æµéè¨æ¸¬å¤å±¥æ­´",
+		"fields":[
+			
+		],
+		"identifer":"HistoricalDataOfMeasuredCumulativeAmountsOfFlowingWater",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001ã¥",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999ã¥)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤éãã¼ã¿ç°å¸¸æ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"DetectionOfAbnormalValueInMeteringData",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸æ¤ç¥æ,0x42=ç°å¸¸æ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã»ã­ã¥ãªãã£ãã¼ã¿æ
+å ±",
+		"fields":[
+			
+		],
+		"identifer":"SecurityDataInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":null,
+		"valueDescription":"0x00000000ï½0xFFFFFFFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼©ï¼¤çªå·è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"IdNumberSetting",
+		"initialValue":"'000000'",
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ASCIIã³ã¼ãã§æå®ã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤å®æºææ
+å ±",
+		"fields":[
+			
+		],
+		"identifer":"VerificationExpirationInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":230,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ASCIIã³ã¼ãã§æå®ãxxxxå¹´xxæ"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0282.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0282.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0282.json	(revision 101)
@@ -0,0 +1,963 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®ã¬ã¹æ¶è²»éè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"IntegralGasConsumptionMeasurementValue",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001ã¥",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999ã¥)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":48,
+		"description":"ç©ç®ã¬ã¹æ¶è²»éè¨æ¸¬å¤å±¥æ­´",
+		"fields":[
+			
+		],
+		"identifer":"IntegralGasConsumptionMeasurementLog",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001ã¥",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999ã¥)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0283.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0283.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0283.json	(revision 101)
@@ -0,0 +1,1521 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤éãã¼ã¿ç©ç®ã¬ã¹æ¶è²»éè¨æ¸¬å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"IntegralGasConsumptionOfMeteringData1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.0001ã¥",
+		"valueDescription":"0x00000000ï½0x005F5E0FF(0ï½9,999.9999ã¥)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤éãã¼ã¿ç©ç®ã¬ã¹æ¶è²»éè¨æ¸¬å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"IntegralGasConsumptionOfMeteringData2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001ã¥",
+		"valueDescription":"0x00000000ï½0x005F5E0FF(0ï½99,999.999ã¥)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤éãã¼ã¿ç°å¸¸æ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"ErrorDetectionStatusofMeteringData",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸æ¤ç¥æ,0x42=ç°å¸¸æ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã»ã­ã¥ãªãã£ãã¼ã¿æ
+å ±ï¼",
+		"fields":[
+			
+		],
+		"identifer":"SecurityData1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":null,
+		"valueDescription":"0x00000000ï½0xFFFFFFFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã»ã­ã¥ãªãã£ãã¼ã¿æ
+å ±ï¼",
+		"fields":[
+			
+		],
+		"identifer":"SecurityData2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":null,
+		"valueDescription":"0x00000000ï½0xFFFFFFFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã»ã³ã¿ã¼å¼é®æ­ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"CenterValveShutOffStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ã»ã³ã¿ã¼å¼é®æ­æã,0x42=ã»ã³ã¿ã¼å¼é®æ­ç¡ã"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã»ã³ã¿ã¼å¼é®æ­å¾©å¸°è¨±å¯ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"CenterValveShutOffRecoveryPermissionSettingStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":230,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ã»ã³ã¿ã¼å¼é®æ­å¾©å¸°è¨±å¯,0x42=ã»ã³ã¿ã¼å¼é®æ­å¾©å¸°éè¨±å¯"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç·æ¥å¼é®æ­ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"EmergencyValveShutOffStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":231,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç·æ¥å¼é®æ­æã,0x42=ç·æ¥å¼é®æ­ç¡ã"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é®æ­å¼ééç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"ShutOffValveOpenCloseStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":232,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é®æ­å¼éç¶æ
+,0x42=é®æ­å¼éç¶æ
+"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ®éç®¡çè­¦åã¬ãã«",
+		"fields":[
+			
+		],
+		"identifer":"ResidualVolumeControlWarning",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":233,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31=æ®éç®¡çè­¦åã¬ãã«1,0x32=æ®éç®¡çè­¦åã¬ãã«2,0x33=æ®éç®¡çè­¦åã¬ãã«3,0x42=æ®éç®¡çè­¦åç¡ã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"æ®éç®¡çè­¦åã¬ãã«è¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"SetValueOfResidualVolumeControlWarningLevel1",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":234,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ã",
+		"valueDescription":"0x000000ï½0xFFFFFF(0ï½16,777,215)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"æ®éç®¡çè­¦åã¬ãã«è¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"SetValueOfResidualVolumeControlWarningLevel2",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":235,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ã",
+		"valueDescription":"0x000000ï½0xFFFFFF(0ï½16,777,215)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"æ®éç®¡çè­¦åã¬ãã«è¨­å®å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"SetValueOfResidualVolumeControlWarningLevel3",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":236,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ã",
+		"valueDescription":"0x000000ï½0xFFFFFF(0ï½16,777,215)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¾®å°æ¼æ´©ã¿ã¤ãå¤ï¼ã¬ã¹æµéç¶ç¶ï¼",
+		"fields":[
+			
+		],
+		"identifer":"SlightLeakTimerValueGasFlowRateContinuation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":237,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"æ¥",
+		"valueDescription":"0x00ï½0xFD(0ï½253æ¥)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¾®å°æ¼æ´©ã¿ã¤ãå¤ï¼å§åä¸æç¡ãï¼",
+		"fields":[
+			
+		],
+		"identifer":"SlightLeakTimerValueWithoutPressureIncrease",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":238,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"æ¥",
+		"valueDescription":"0x00ï½0xFD(0ï½253æ¥)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"é®æ­çç±å±¥æ­´æ
+å ±",
+		"fields":[
+			
+		],
+		"identifer":"ShutOffReasonLog",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":239,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0xFF:0xFF:0xFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¾çµ¦å§åãã¼ã¿æå¤§å¤",
+		"fields":[
+			
+		],
+		"identifer":"MaximumValueOfSupplyPressureData",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":208,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.01kPa",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½655.33kPa)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¾çµ¦å§åãã¼ã¿æå°å¤",
+		"fields":[
+			
+		],
+		"identifer":"MinimumValueOfSupplyPressureData",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":209,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.01kPa",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½655.33kPa)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¾çµ¦å§åãã¼ã¿ç¾å¨å¤",
+		"fields":[
+			
+		],
+		"identifer":"CurrentValueOfSupplyPressureData",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":210,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.01kPa",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½655.33kPa)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éå¡å§åãã¼ã¿æå¤§å¤",
+		"fields":[
+			
+		],
+		"identifer":"MaximumValueOfBlockPressureData",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":211,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.01kPa",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½655.33kPa)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éå¡å§åãã¼ã¿æå°å¤",
+		"fields":[
+			
+		],
+		"identifer":"MinimumValueOfBlockPressureData",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":212,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.01kPa",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½655.33kPa)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éå¡å§åãã¼ã¿ç¾å¨å¤",
+		"fields":[
+			
+		],
+		"identifer":"CurrentValueOfBlockPressureData",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":213,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.01kPa",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½655.33kPa)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éå¡å§åã»ä¾çµ¦å§åç°å¸¸æ¥åæ°æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"éå¡å§åç°å¸¸æ¥æ°",
+				"fields":[
+					
+				],
+				"identifer":"NumberOfBlockPressureErrorDays",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00ï½0xFF(0ï½255æ¥)"
+			},
+			{
+				"arrayCount":0,
+				"description":"ä¾çµ¦å§åç°å¸¸æ¥æ°",
+				"fields":[
+					
+				],
+				"identifer":"NumberOfSupplyPressureErrorDays",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00ï½0xFF(0ï½255æ¥)"
+			},
+			{
+				"arrayCount":0,
+				"description":"éå¡å§åç°å¸¸åæ°",
+				"fields":[
+					
+				],
+				"identifer":"NumberOfBlockPressureErrorTimes",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00ï½0xFF(0ï½255å)"
+			},
+			{
+				"arrayCount":0,
+				"description":"ä¾çµ¦å§åç°å¸¸åæ°",
+				"fields":[
+					
+				],
+				"identifer":"NumberOfSupplyPressureErrorTimes",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00ï½0xFF(0ï½255å)"
+			}
+		],
+		"identifer":"NumberOfBlockPressureSupplyPressureErrorDaysTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":214,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"number_of_block_pressure_supply_pressure_error_days_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã¹ãçºå¼è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"TestCallSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":215,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ãã¹ãçºå¼åä½ãã,0x42=ãã¹ãçºå¼åä½ãªã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0287.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0287.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0287.json	(revision 101)
@@ -0,0 +1,3346 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®é»åéè¨æ¸¬å¤ï¼æ­£æ¹åï¼",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativeAmountOfElectricEnergyNormalDirection",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":192,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®é»åéè¨æ¸¬å¤ï¼éæ¹åï¼",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativeAmountOfElectricEnergyReverseDirection",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":193,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®é»åéåä½",
+		"fields":[
+			
+		],
+		"identifer":"UnitForCumulativeAmountsOfElectricEnergy",
+		"initialValue":"0x03",
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":194,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=1kWh,0x01=0.1kWh,0x02=0.01kWh,0x03=0.001kWh,0x04=0.0001kWh,0x0A=10kWh,0x0B=100kWh,0x0C=1000kWh,0x0D=10000kWh"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®é»åéè¨æ¸¬å¤å±¥æ­´ï¼æ­£æ¹åï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç©ç®å±¥æ­´åéæ¥",
+				"fields":[
+					
+				],
+				"identifer":"DayForWhichTheHistoricalDataOfMeasuredCumulativeAmountsOfElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x0000ï½0x0063(0ï½99)"
+			},
+			{
+				"arrayCount":48,
+				"description":"ç©ç®é»åé",
+				"fields":[
+					
+				],
+				"identifer":"HistoricalDataOfMeasuredCumulativeAmountsOfElectricEnergy",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			}
+		],
+		"identifer":"HistoricalDataOfMeasuredCumulativeAmountsOfElectricEnergyNormalDirectioHistoricalDataOfMeasuredCumulativeAmountsOfElectricEnergyNormalDirection",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":195,
+		"required":[
+			"NONE"
+		],
+		"size":194,
+		"type":"historical_data_of_measured_cumulative_amounts_of_electric_energy_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x0000ï½0x0063:0x00000000ï½0x05F5E0FF(0ï½99):(0ï½99,999,999)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®é»åéè¨æ¸¬å¤å±¥æ­´ï¼éæ¹åï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç©ç®å±¥æ­´åéæ¥",
+				"fields":[
+					
+				],
+				"identifer":"DayForWhichTheHistoricalDataOfMeasuredCumulativeAmountsOfElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x0000ï½0x0063(0ï½99)"
+			},
+			{
+				"arrayCount":48,
+				"description":"ç©ç®é»åé",
+				"fields":[
+					
+				],
+				"identifer":"HistoricalDataOfMeasuredCumulativeAmountsOfElectricEnergy",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			}
+		],
+		"identifer":"HistoricalDataOfMeasuredCumulativeAmountsOfElectricEnergyReverseDirection",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":196,
+		"required":[
+			"NONE"
+		],
+		"size":194,
+		"type":"historical_data_of_measured_cumulative_amounts_of_electric_energy_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x0000ï½0x0063:0x00000000ï½0x05F5E0FF(0ï½99):(0ï½99,999,999)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®å±¥æ­´åéæ¥",
+		"fields":[
+			
+		],
+		"identifer":"DayForWhichTheHistoricalDataOfMeasuredCumulativeAmountsOfElectricEnergyIsToBeRetrieved",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":197,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"æ¥",
+		"valueDescription":"0x00=å½æ¥,0x01ï½0x63=åæ¥ã®æ¥æ°(0ï½99)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬æé»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneoUsAmountOfElectricEnergy",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":198,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"int32_t",
+		"unitDescription":"W",
+		"valueDescription":"0x80000001ï½0x7FFFFFFD(-2,147,483,647ï½2,147,483,645)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬æé»æµè¨æ¸¬å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"RPhase",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"TPhase",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasuredInstantaneousCurrents",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":199,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"measured_instantaneous_currents_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬æé»å§è¨æ¸¬å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"R-S(N)é",
+				"fields":[
+					
+				],
+				"identifer":"BetweenRAndSN",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"0.1V",
+				"valueDescription":"0x0000ï½0xFFFD(0ï½6,553.3)"
+			},
+			{
+				"arrayCount":0,
+				"description":"S(N)-Té",
+				"fields":[
+					
+				],
+				"identifer":"BetweenSNAndT",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"0.1V",
+				"valueDescription":"0x0000ï½0xFFFD(0ï½6,553.3)"
+			}
+		],
+		"identifer":"MeasuredInstantaneousVoltages",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":200,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"measured_instantaneous_voltages_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":208,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":209,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel3",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":210,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel4",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":211,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel5",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":212,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel6",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":213,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel7",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":214,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel8",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":215,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel9",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":216,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel10",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":217,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel11",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":218,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel12",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":219,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel13",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":220,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel14",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":221,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel15",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":222,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel16",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":223,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel17",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel18",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel19",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel20",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel21",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel22",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel23",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":230,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel24",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":231,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel25",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":232,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel26",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":233,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel27",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":234,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel28",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":235,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel29",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":236,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel30",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":237,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel31",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":238,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨æ¸¬ãã£ã³ãã«ï¼ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"é»åé",
+				"fields":[
+					
+				],
+				"identifer":"ElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousRPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å®å¹é»æµå¤Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"EffectiveInstantaneousTPhaseCurrents",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasurementChannel32",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":239,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"measurement_data_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0288.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0288.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0288.json	(revision 101)
@@ -0,0 +1,1724 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»ååºå",
+		"fields":[
+			
+		],
+		"identifer":"ElectricEnergyMeterClassification",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":208,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=é»åä¼ç¤¾,0x31=å¤ªé½å
+,0x32=çæé»æ± ,0x33=èé»æ± ,0x34=EV,0x35=ãã®ä»"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ææè
+åºå",
+		"fields":[
+			
+		],
+		"identifer":"OwnerClassification",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":209,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=æå®ãªã,0x31=é»åä¼ç¤¾,0x32=é»åä¼ç¤¾ä»¥å¤,0x33=åäºº"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¸ç·å¼è¨­å®ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"ConfigurationInformationOfPhasesAndWiresOfTheSystems",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":210,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=åç¸2ç·,0x31=åç¸3ç·,0x32=ä¸ç¸3ç·,0x33=ä¸ç¸4ç·"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"åæå¤ææ¯",
+		"fields":[
+			
+		],
+		"identifer":"CompositeTransformationRatio",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":211,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":null,
+		"valueDescription":"0x00000000ï½0x000F423F(000000ï½999999)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"åæå¤ææ¯ã®åç",
+		"fields":[
+			
+		],
+		"identifer":"MultiplyingFactorForCompositeTransformationRatio",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":212,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=Ã1,0x01=Ã0.1,0x02=Ã0.01,0x03=Ã0.001"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":10,
+		"description":"è¨å¨èªå®çªå·",
+		"fields":[
+			
+		],
+		"identifer":"MeterTypeCertificationNumberTypeApprovalNumberInJapan",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":213,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åå¼èªå®è¨å¨çªå·è¨è¼æ¹æ³ã«å¾ã)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":6,
+		"description":"æ¤å®æºäºå¹´æ",
+		"fields":[
+			
+		],
+		"identifer":"VerificationExpirationDate",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":214,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"YYYYMM:YYYY(è¥¿æ¦),MM(æ)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®é»åéæå¹æ¡æ°",
+		"fields":[
+			
+		],
+		"identifer":"NumberOfEffectiveDigitsForCumulativeAmountsOfElectricEnergy",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":215,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"æ¡",
+		"valueDescription":"0x01ï½0x08(1ï½8)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®é»åéè¨æ¸¬å¤ï¼æ­£æ¹åè¨æ¸¬å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativeAmountOfElectricEnergyNormalDirection",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®é»åéåä½ï¼æ­£æ¹åãéæ¹åè¨æ¸¬å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"UnitForCumulativeAmountsOfElectricEnergyNormalAndReverseDirections",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=1kWh,0x01=0.1kWh,0x02=0.01kWh,0x03=0.001kWh,0x04=0.0001kWh,0x0A=10kWh,0x0B=100kWh,0x0C=1000kWh,0x0D=10000kWh"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®é»åéè¨æ¸¬å¤å±¥æ­´ï¼æ­£æ¹åè¨æ¸¬å¤ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç©ç®å±¥æ­´åéæ¥",
+				"fields":[
+					
+				],
+				"identifer":"DayForWhichTheHistoricalDataOfMeasuredCumulativeAmountsOfElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x0000ï½0x0063(0ï½99)"
+			},
+			{
+				"arrayCount":48,
+				"description":"ç©ç®é»åé",
+				"fields":[
+					
+				],
+				"identifer":"HistoricalDataOfMeasuredCumulativeAmountsOfElectricEnergy",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			}
+		],
+		"identifer":"HistoricalDataOfMeasuredCumulativeAmountsOfElectricEnergyNormalDirection",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":194,
+		"type":"historical_data_of_measured_cumulative_amounts_of_electric_energy_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x0000ï½0x0063:0x00000000ï½0x05F5E0FF(0ï½99):(0ï½99,999,999)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®é»åéè¨æ¸¬å¤ï¼éæ¹åè¨æ¸¬å¤ï¼",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativeAmountOfElectricEnergyReverseDirection",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®é»åéè¨æ¸¬å¤å±¥æ­´ï¼éæ¹åè¨æ¸¬å¤ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç©ç®å±¥æ­´åéæ¥",
+				"fields":[
+					
+				],
+				"identifer":"DayForWhichTheHistoricalDataOfMeasuredCumulativeAmountsOfElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x0000ï½0x0063(0ï½99)"
+			},
+			{
+				"arrayCount":48,
+				"description":"ç©ç®é»åé",
+				"fields":[
+					
+				],
+				"identifer":"HistoricalDataOfMeasuredCumulativeAmountsOfElectricEnergy",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			}
+		],
+		"identifer":"HistoricalDataOfMeasuredCumulativeAmountsOfElectricEnergyReverseDirection",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":194,
+		"type":"historical_data_of_measured_cumulative_amounts_of_electric_energy_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x0000ï½0x0063:0x00000000ï½0x05F5E0FF(0ï½99):(0ï½99,999,999)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®å±¥æ­´åéæ¥",
+		"fields":[
+			
+		],
+		"identifer":"DayForWhichTheHistoricalDataOfMeasuredCumulativeAmountsOfElectricEnergyIsToBeRetrieved",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=å½æ¥,0x01ï½0x63=åæ¥ã®æ¥æ°(0ï½99)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬æé»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousAmountOfElectricEnergy",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":231,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"int32_t",
+		"unitDescription":"W",
+		"valueDescription":"0x80000001ï½0x7FFFFFFD(-2,147,483,647ï½2,147,483,645)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬æé»æµè¨æ¸¬å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"Rç¸",
+				"fields":[
+					
+				],
+				"identifer":"RPhase",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			},
+			{
+				"arrayCount":0,
+				"description":"Tç¸",
+				"fields":[
+					
+				],
+				"identifer":"TPhase",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"int16_t",
+				"unitDescription":"0.1A",
+				"valueDescription":"0x8001ï½0x7FFD(-3,276.7ï½3,276.5)"
+			}
+		],
+		"identifer":"MeasuredInstantaneousCurrents",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":232,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"measured_instantaneous_currents_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬æé»å§è¨æ¸¬å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"R-S(N)é",
+				"fields":[
+					
+				],
+				"identifer":"BetweenRAndSN",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"0.1V",
+				"valueDescription":"0x0000ï½0xFFFD(0ï½6,553.3)"
+			},
+			{
+				"arrayCount":0,
+				"description":"S(N)-Té",
+				"fields":[
+					
+				],
+				"identifer":"BetweenSNAndT",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"0.1V",
+				"valueDescription":"0x0000ï½0xFFFD(0ï½6,553.3)"
+			}
+		],
+		"identifer":"MeasuredInstantaneousVoltages",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":233,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"measured_instantaneous_voltages_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®æç©ç®é»åéè¨æ¸¬å¤ï¼æ­£æ¹åè¨æ¸¬å¤ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"è¨æ¸¬å¹´ææ¥",
+				"fields":[
+					{
+						"arrayCount":0,
+						"description":"å¹´",
+						"fields":[
+							
+						],
+						"identifer":"Year",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":2,
+						"type":"uint16_t",
+						"unitDescription":"å¹´",
+						"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+					},
+					{
+						"arrayCount":0,
+						"description":"æ",
+						"fields":[
+							
+						],
+						"identifer":"Mounth",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"æ",
+						"valueDescription":"0x01ï½0x0C(1ï½12)"
+					},
+					{
+						"arrayCount":0,
+						"description":"æ¥",
+						"fields":[
+							
+						],
+						"identifer":"Day",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"æ¥",
+						"valueDescription":"0x01ï½0x1F(1ï½31)"
+					}
+				],
+				"identifer":"DateOfMeasurement",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":4,
+				"type":"year_mounth_day_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"è¨æ¸¬æå»",
+				"fields":[
+					{
+						"arrayCount":0,
+						"description":"æ",
+						"fields":[
+							
+						],
+						"identifer":"Hour",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"æ",
+						"valueDescription":"0x00ï½0x17(0ï½23)"
+					},
+					{
+						"arrayCount":0,
+						"description":"å",
+						"fields":[
+							
+						],
+						"identifer":"Minute",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"å",
+						"valueDescription":"0x00ï½0x3B(0ï½59)"
+					},
+					{
+						"arrayCount":0,
+						"description":"ç§",
+						"fields":[
+							
+						],
+						"identifer":"Second",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"ç§",
+						"valueDescription":"0x00ï½0x3B(0ï½59)"
+					}
+				],
+				"identifer":"TimeOfMeasurement",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"hour_minute_second_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ç©ç®é»åé",
+				"fields":[
+					
+				],
+				"identifer":"CumulativeElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			}
+		],
+		"identifer":"CumulativeAmountsOfElectricEnergyMeasuredAtFixedTimeNormalDirection",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":234,
+		"required":[
+			"RULE_GET"
+		],
+		"size":11,
+		"type":"cumulative_amounts_of_electric_energy_measured_at_fixed_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®æç©ç®é»åéè¨æ¸¬å¤ï¼éæ¹åè¨æ¸¬å¤ï¼",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"è¨æ¸¬å¹´ææ¥",
+				"fields":[
+					{
+						"arrayCount":0,
+						"description":"å¹´",
+						"fields":[
+							
+						],
+						"identifer":"Year",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":2,
+						"type":"uint16_t",
+						"unitDescription":"å¹´",
+						"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+					},
+					{
+						"arrayCount":0,
+						"description":"æ",
+						"fields":[
+							
+						],
+						"identifer":"Mounth",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"æ",
+						"valueDescription":"0x01ï½0x0C(1ï½12)"
+					},
+					{
+						"arrayCount":0,
+						"description":"æ¥",
+						"fields":[
+							
+						],
+						"identifer":"Day",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"æ¥",
+						"valueDescription":"0x01ï½0x1F(1ï½31)"
+					}
+				],
+				"identifer":"DateOfMeasurement",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":4,
+				"type":"year_mounth_day_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"è¨æ¸¬æå»",
+				"fields":[
+					{
+						"arrayCount":0,
+						"description":"æ",
+						"fields":[
+							
+						],
+						"identifer":"Hour",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"æ",
+						"valueDescription":"0x00ï½0x17(0ï½23)"
+					},
+					{
+						"arrayCount":0,
+						"description":"å",
+						"fields":[
+							
+						],
+						"identifer":"Minute",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"å",
+						"valueDescription":"0x00ï½0x3B(0ï½59)"
+					},
+					{
+						"arrayCount":0,
+						"description":"ç§",
+						"fields":[
+							
+						],
+						"identifer":"Second",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"ç§",
+						"valueDescription":"0x00ï½0x3B(0ï½59)"
+					}
+				],
+				"identifer":"TimeOfMeasurement",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"hour_minute_second_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ç©ç®é»åé",
+				"fields":[
+					
+				],
+				"identifer":"CumulativeElectricEnergy",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"kWh",
+				"valueDescription":"0x00000000ï½0x05F5E0FF(0ï½99,999,999)"
+			}
+		],
+		"identifer":"CumulativeAmountsOfElectricEnergyMeasuredAtFixedTimeReverseDirection",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":235,
+		"required":[
+			"NONE"
+		],
+		"size":11,
+		"type":"cumulative_amounts_of_electric_energy_measured_at_fixed_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0289.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0289.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0289.json	(revision 101)
@@ -0,0 +1,1635 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¬ã¹åºåè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"GasMeterClassification",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=é½å¸ã¬ã¹,0x31=LPã¬ã¹,0x32=å¤©ç¶,0x33=ãã®ä»"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ææè
+åºåè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OwnerClassification",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=æå®ãªã,0x31=é½å¸ã¬ã¹,0x32=LPã¬ã¹,0x33=æ°éä¼ç¤¾,0x34=åäºº"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®ã¬ã¹æ¶è²»éè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativeGasConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"0.001ã¥",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999ã¥)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®ã¬ã¹æ¶è²»éè¨æ¸¬å¤åä½",
+		"fields":[
+			
+		],
+		"identifer":"UnitForMeasuredCumulativeGasConsumptions",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=1ã¥,0x01=0.1ã¥,0x02=0.01ã¥,0x03=0.001ã¥,0x04=0.0001ã¥,0x05=0.00001ã¥,0x06=0.000001ã¥"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®ã¬ã¹æ¶è²»éå±¥æ­´æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç©ç®å±¥æ­´åéæ¥",
+				"fields":[
+					
+				],
+				"identifer":"DayForWhichTheHistoricalDataOfMeasuredCumulativeGasConsumption",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x0000ï½0x0063(0ï½99)"
+			},
+			{
+				"arrayCount":48,
+				"description":"ç©ç®ã¬ã¹æ¶è²»é",
+				"fields":[
+					
+				],
+				"identifer":"CumulativeGasConsumption",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"0.001ã¥",
+				"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999ã¥)"
+			}
+		],
+		"identifer":"HistoricalDataOfMeasuredCumulativeGasConsumptions",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":194,
+		"type":"historical_data_of_measured_cumulative_gas_consumptions_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®ã¬ã¹æ¶è²»éå±¥æ­´åéæ¥è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DayForWhichTheHistoricalDataOfMeasuredCumulativeGasConsumptionsIsToBeRetrieved",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00=å½æ¥,0x01ï½0x63=åæ¥ã®æ¥æ°(0ï½99)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¤éãã¼ã¿ç°å¸¸æ¤ç¥ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"DetectionOfAbnormalValueInMeteringData",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":230,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸æ¤ç¥æ,0x42=ç°å¸¸æ¤ç¥ç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":10,
+		"description":"ã»ã­ã¥ãªãã£ãã¼ã¿æ
+å ±",
+		"fields":[
+			
+		],
+		"identifer":"SecurityDataInformation",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":231,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"è©³ç´°ã¯èª¬æ(9)åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã»ã³ã¿ã¼å¼é®æ­ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"ValveClosureByTheCenter",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":232,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ã»ã³ã¿ã¼å¼é®æ­æã,0x42=ã»ã³ã¿ã¼å¼é®æ­ç¡ã"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã»ã³ã¿ã¼å¼é®æ­å¾©å¸°è¨±å¯ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"PermissionFromTheCenterToReopenTheValveClosedByTheCenter",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":233,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ã»ã³ã¿ã¼å¼é®æ­å¾©å¸°è¨±å¯,0x42=ã»ã³ã¿ã¼å¼é®æ­å¾©å¸°éè¨±å¯"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç·æ¥å¼é®æ­ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"EmergencyClosureOfShutoffValve",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":234,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç·æ¥å¼é®æ­æã,0x42=ç·æ¥å¼é®æ­ç¡ã"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é®æ­å¼ééç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"ShutoffValveStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":235,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é®æ­å¼éç¶æ
+,0x42=é®æ­å¼éç¶æ
+"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"é®æ­çç±å±¥æ­´æ
+å ±",
+		"fields":[
+			
+		],
+		"identifer":"HistoricalDataOfShutoffReasons",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":236,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0xFF:0xFF:0xFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":6,
+		"description":"ï¼©ï¼¤çªå·è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"IdNumberSetting",
+		"initialValue":"'000000'",
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":237,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"'000000'ï½'FFFFFF'"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":6,
+		"description":"æ¤å®æºæè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"VerificationExpirationInformation",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":238,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"YYYYMM:YYYY(è¥¿æ¦),MM(æ)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¥æä»ç©ç®ã¬ã¹æ¶è²»éè¨æ¸¬å¤æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"è¨æ¸¬å¹´ææ¥",
+				"fields":[
+					{
+						"arrayCount":0,
+						"description":"å¹´",
+						"fields":[
+							
+						],
+						"identifer":"Year",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":2,
+						"type":"uint16_t",
+						"unitDescription":"å¹´",
+						"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+					},
+					{
+						"arrayCount":0,
+						"description":"æ",
+						"fields":[
+							
+						],
+						"identifer":"Mounth",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"æ",
+						"valueDescription":"0x01ï½0x0C(1ï½12)"
+					},
+					{
+						"arrayCount":0,
+						"description":"æ¥",
+						"fields":[
+							
+						],
+						"identifer":"Day",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"æ¥",
+						"valueDescription":"0x01ï½0x1F(1ï½31)"
+					}
+				],
+				"identifer":"DateOfMeasurement",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":4,
+				"type":"year_mounth_day_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"è¨æ¸¬æå»",
+				"fields":[
+					{
+						"arrayCount":0,
+						"description":"æ",
+						"fields":[
+							
+						],
+						"identifer":"Hour",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"æ",
+						"valueDescription":"0x00ï½0x17(0ï½23)"
+					},
+					{
+						"arrayCount":0,
+						"description":"å",
+						"fields":[
+							
+						],
+						"identifer":"Minute",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"å",
+						"valueDescription":"0x00ï½0x3B(0ï½59)"
+					},
+					{
+						"arrayCount":0,
+						"description":"ç§",
+						"fields":[
+							
+						],
+						"identifer":"Second",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"ç§",
+						"valueDescription":"0x00ï½0x3B(0ï½59)"
+					}
+				],
+				"identifer":"TimeOfMeasurement",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"hour_minute_second_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ç©ç®ã¬ã¹æ¶è²»é",
+				"fields":[
+					
+				],
+				"identifer":"CumulativeGasConsumption",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"0.001ã¥",
+				"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999ã¥)"
+			}
+		],
+		"identifer":"MeasuredCumulativeGasConsumptionInformationWithDateAndTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":208,
+		"required":[
+			"RULE_GET"
+		],
+		"size":11,
+		"type":"measured_cumulative_gas_consumption_information_with_date_and_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¬ã¹æ¶è²»éå±¥æ­´æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å±¥æ­´ã¹ã¿ã¼ãå¹´ææ¥",
+				"fields":[
+					{
+						"arrayCount":0,
+						"description":"å¹´",
+						"fields":[
+							
+						],
+						"identifer":"Year",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":2,
+						"type":"uint16_t",
+						"unitDescription":"å¹´",
+						"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+					},
+					{
+						"arrayCount":0,
+						"description":"æ",
+						"fields":[
+							
+						],
+						"identifer":"Mounth",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"æ",
+						"valueDescription":"0x01ï½0x0C(1ï½12)"
+					},
+					{
+						"arrayCount":0,
+						"description":"æ¥",
+						"fields":[
+							
+						],
+						"identifer":"Day",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"æ¥",
+						"valueDescription":"0x01ï½0x1F(1ï½31)"
+					}
+				],
+				"identifer":"Date",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":4,
+				"type":"year_mounth_day_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"å±¥æ­´ã¹ã¿ã¼ãæå»",
+				"fields":[
+					{
+						"arrayCount":0,
+						"description":"æ",
+						"fields":[
+							
+						],
+						"identifer":"Hour",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"æ",
+						"valueDescription":"0x00ï½0x17(0ï½23)"
+					},
+					{
+						"arrayCount":0,
+						"description":"å",
+						"fields":[
+							
+						],
+						"identifer":"Minute",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"å",
+						"valueDescription":"0x00ï½0x3B(0ï½59)"
+					},
+					{
+						"arrayCount":0,
+						"description":"ç§",
+						"fields":[
+							
+						],
+						"identifer":"Second",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"ç§",
+						"valueDescription":"0x00ï½0x3B(0ï½59)"
+					}
+				],
+				"identifer":"Time",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"hour_minute_second_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":24,
+				"description":"ã¬ã¹æ¶è²»éå±¥æ­´ãã¼ã¿",
+				"fields":[
+					
+				],
+				"identifer":"HistoricalInformationOfGasConsumption",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"0.001ã¥",
+				"valueDescription":"0x00000000ï½0x0001869F(0ï½99.999ã¥)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å±¥æ­´ã¹ã¿ã¼ãæç©ç®ã¬ã¹æ¶è²»é",
+				"fields":[
+					
+				],
+				"identifer":"CumulativeGasConsumptionAtHistoryStart",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":"0.001ã¥",
+				"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999,999ã¥)"
+			},
+			{
+				"arrayCount":0,
+				"description":"ç©ç®æééé",
+				"fields":[
+					
+				],
+				"identifer":"CumulativeTimeInterval",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å",
+				"valueDescription":"0x0001ï½0xFFFF(1ï½65535)"
+			}
+		],
+		"identifer":"HistoricalInformationOfCumulativeGasConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":209,
+		"required":[
+			"NONE"
+		],
+		"size":109,
+		"type":"historical_information_of_cumulative_gas_consumption_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0290.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0290.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0290.json	(revision 101)
@@ -0,0 +1,1591 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç
+§åº¦ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"IlluminanceLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å
+è²è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"LightColorSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é»çè²,0x42=ç½è²,0x43=æ¼ç½è²,0x44=æ¼å
+è²,0x40=ãã®ä»"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç
+§åº¦ã¬ãã«æ®µæ°è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"IlluminanceLevelStepSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":178,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x01ï½è¨­å®å¯è½ç
+§åº¦ã¬ãã«æå¤§å¤(æï½æ)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å
+è²ã¬ãã«æ®µæ°è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"LightColorStepSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":179,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x01ï½è¨­å®å¯è½å
+è²ã¬ãã«æå¤§å¤(é»çè²ï½ç½è²)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨­å®å¯è½ã¬ãã«æå¤§å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç
+§åº¦",
+				"fields":[
+					
+				],
+				"identifer":"Illuminance",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFF(1ï½255æ®µé),0x00=æ©è½ãæ­è¼ãã¦ããªã"
+			},
+			{
+				"arrayCount":0,
+				"description":"å
+è²",
+				"fields":[
+					
+				],
+				"identifer":"LightColor",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFF(1ï½255æ®µé),0x00=æ©è½ãæ­è¼ãã¦ããªã"
+			}
+		],
+		"identifer":"MaximumSpecifiableValues",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":180,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"maximum_specifiable_values_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¸¸å¤ç¯è¨­å®å¯è½ã¬ãã«æå¤§å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç
+§åº¦",
+				"fields":[
+					
+				],
+				"identifer":"Illuminance",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFF(1ï½255æ®µé),0x00=æ©è½ãæ­è¼ãã¦ããªã"
+			},
+			{
+				"arrayCount":0,
+				"description":"å
+è²",
+				"fields":[
+					
+				],
+				"identifer":"LightColor",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFF(1ï½255æ®µé),0x00=æ©è½ãæ­è¼ãã¦ããªã"
+			}
+		],
+		"identifer":"MaximumValueOfSettableLevelForNightLighting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":181,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"maximum_specifiable_values_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¹ç¯ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"LightingModeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":182,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=èªå,0x42=éå¸¸ç¯,0x43=å¸¸å¤ç¯,0x45=ã«ã©ã¼ç¯"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éå¸¸ç¯ã¢ã¼ãæç
+§åº¦ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"IlluminanceLevelSettingForMainLighting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":183,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éå¸¸ç¯ã¢ã¼ãæç
+§åº¦ã¬ãã«æ®µæ°è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"IlluminanceLevelStepSettingForMainLighting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":184,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x01ï½è¨­å®å¯è½ç
+§åº¦ã¬ãã«æå¤§å¤(æï½æ)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¸¸å¤ç¯ã¢ã¼ãæç
+§åº¦ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"IlluminanceLevelSettingForNightLighting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":185,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¸¸å¤ç¯ã¢ã¼ãæç
+§åº¦ã¬ãã«æ®µæ°è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"IlluminanceLevelStepSettingForNightLighting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":186,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x01ï½è¨­å®å¯è½ç
+§åº¦ã¬ãã«æå¤§å¤(æï½æ)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éå¸¸ç¯ã¢ã¼ãæå
+è²è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"LightColorSettingForMainLighting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":187,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é»çè²,0x42=ç½è²,0x43=æ¼ç½è²,0x44=æ¼å
+è²,0x40=ãã®ä»"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éå¸¸ç¯ã¢ã¼ãæå
+è²ã¬ãã«æ®µæ°è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"LightColorLevelStepSettingForMainLighting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":188,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x01ï½è¨­å®å¯è½å
+è²ã¬ãã«æå¤§å¤(é»çè²ï½ç½è²)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¸¸å¤ç¯ã¢ã¼ãæå
+è²è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"LightColorSettingForNightLighting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":189,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é»çè²,0x42=ç½è²,0x43=æ¼ç½è²,0x44=æ¼å
+è²,0x40=ãã®ä»"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å¸¸å¤ç¯ã¢ã¼ãæå
+è²ã¬ãã«æ®µæ°è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"LightColorLevelStepSettingForNightLighting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":190,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x01ï½è¨­å®å¯è½å
+è²ã¬ãã«æå¤§å¤(é»çè²ï½ç½è²)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"èªåã¢ã¼ãæç¹ç¯ã¢ã¼ãç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"LightingModeStatusInAutoMode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":191,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x42=éå¸¸ç¯,0x43=å¸¸å¤ç¯,0x44=æ¶ç¯,0x45=ã«ã©ã¼ç¯"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã«ã©ã¼ç¯ã¢ã¼ãæï¼²ï¼§ï¼¢è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ï¼²",
+				"fields":[
+					
+				],
+				"identifer":"ï¼²",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00ï½0xFF(æä½è¼åº¦ï½æé«è¼åº¦)"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼§",
+				"fields":[
+					
+				],
+				"identifer":"ï¼§",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00ï½0xFF(æä½è¼åº¦ï½æé«è¼åº¦)"
+			},
+			{
+				"arrayCount":0,
+				"description":"ï¼¢",
+				"fields":[
+					
+				],
+				"identifer":"ï¼¢",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00ï½0xFF(æä½è¼åº¦ï½æé«è¼åº¦)"
+			}
+		],
+		"identifer":"RGBSettingForColorLighting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":192,
+		"required":[
+			"NONE"
+		],
+		"size":3,
+		"type":"rgbsetting_for_color_lighting_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OnTimerReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":144,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç´å
+¥,0x42=äºç´å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OnTimerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":145,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OffTimerReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":148,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç´å
+¥,0x42=äºç´å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼¦ï¼¦ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OffTimerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":149,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList02A0.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList02A0.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList02A0.json	(revision 101)
@@ -0,0 +1,965 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é³çºçè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"SoundGenerationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é³çºçæ,0x42=é³çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã¶ã¼é³ç¨®å¥è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"BuzzerSoundType",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x38"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03B2.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03B2.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03B2.json	(revision 101)
@@ -0,0 +1,1083 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"èééç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"CoverOpenCloseStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=èé,0x42=èé"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"æ¹¯åãè­¦åç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"NoWaterWarning",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ¹¯åãæã,0x40=æ¹¯åããªã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ²¸é¨°è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"BoilUpSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":178,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ²¸é¨°éå§,0x42=æ²¸é¨°åæ­¢\/ä¿æ¸©"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ²¸é¨°ï¼ä¿æ¸©ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"BoilUpWarmerModeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ã¯ã¨ã³é
+¸æ´æµ,0x42=éå¸¸ä¿æ¸©,0x43=çã¨ãä¿æ¸©"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¿æ¸©æ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"SetValueOfWarmerTemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x64(0ï½100)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åºæ¹¯ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"HotWaterDischargeStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=åºæ¹¯æ,0x42=åºæ¹¯ç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã­ãã¯ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"LockStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ã­ãã¯æ,0x42=ã­ãã¯ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03B7.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03B7.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03B7.json	(revision 101)
@@ -0,0 +1,1842 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã¢ééç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"DoorOpenCloseStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ãã¢é,0x42=ãã¢é"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã¢éæ¾è­¦åç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"DoorOpenWarning",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ãã¢éæ¾è­¦åæ,0x42=ãã¢éæ¾è­¦åç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å·èµå®¤ãã¢ééç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"RefrigeratorCompartmentDoorStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":178,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ãã¢é,0x42=ãã¢é"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å·åå®¤ãã¢ééç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FreezerCompartmentDoorStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":179,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ãã¢é,0x42=ãã¢é"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ°·æ¸©å®¤ãã¢ééç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"IceCompartmentDoorStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":180,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ãã¢é,0x42=ãã¢é"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éèå®¤ãã¢ééç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"VegetableCompartmentDoorStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":181,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ãã¢é,0x42=ãã¢é"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"åæå®¤ãã¢ééç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"MultiRefrigeratingModeCompartmentDoor",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":182,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ãã¢é,0x42=ãã¢é"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¨­å®å¯è½æ¸©åº¦ã¬ãã«æå¤§å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å·èµå®¤",
+				"fields":[
+					
+				],
+				"identifer":"RefrigeratorCompartment",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFF(1ï½255æ®µé),0x00=å®¤ãæ­è¼ãã¦ããªã"
+			},
+			{
+				"arrayCount":0,
+				"description":"å·åå®¤",
+				"fields":[
+					
+				],
+				"identifer":"FreezerCompartment",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFF(1ï½255æ®µé),0x00=å®¤ãæ­è¼ãã¦ããªã"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ°·æ¸©å®¤",
+				"fields":[
+					
+				],
+				"identifer":"SubzeroFreshCompartment",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFF(1ï½255æ®µé),0x00=å®¤ãæ­è¼ãã¦ããªã"
+			},
+			{
+				"arrayCount":0,
+				"description":"éèå®¤",
+				"fields":[
+					
+				],
+				"identifer":"VegetableCompartment",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFF(1ï½255æ®µé),0x00=å®¤ãæ­è¼ãã¦ããªã"
+			},
+			{
+				"arrayCount":0,
+				"description":"åæå®¤",
+				"fields":[
+					
+				],
+				"identifer":"MultiRefrigeratingModeCompartment",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFF(1ï½255æ®µé),0x00=å®¤ãæ­è¼ãã¦ããªã"
+			},
+			{
+				"arrayCount":0,
+				"description":"for future reserved 1",
+				"fields":[
+					
+				],
+				"identifer":"Reserved6",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFF(1ï½255æ®µé),0x00=å®¤ãæ­è¼ãã¦ããªã"
+			},
+			{
+				"arrayCount":0,
+				"description":"for future reserved 2",
+				"fields":[
+					
+				],
+				"identifer":"Reserved7",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFF(1ï½255æ®µé),0x00=å®¤ãæ­è¼ãã¦ããªã"
+			},
+			{
+				"arrayCount":0,
+				"description":"for future reserved 3",
+				"fields":[
+					
+				],
+				"identifer":"Reserved8",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFF(1ï½255æ®µé),0x00=å®¤ãæ­è¼ãã¦ããªã"
+			}
+		],
+		"identifer":"MaximumAllowableTemperatureSettingLevel",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":8,
+		"type":"maximum_allowable_temperature_setting_level_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å·èµå®¤æ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"RefrigeratorCompartmentTemperatureSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x81ï½0x7E(-127ï½126â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å·åå®¤æ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"FreezerCompartmentTemperatureSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x81ï½0x7E(-127ï½126â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ°·æ¸©å®¤æ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"IceTemperatureSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x81ï½0x7E(-127ï½126â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éèå®¤æ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"VegetableCompartmentTemperatureSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x81ï½0x7E(-127ï½126â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"åæå®¤æ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"MultiRefrigeratingModeCompartmentTemperatureSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":230,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x81ï½0x7E(-127ï½126â)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å·èµå®¤æ¸©åº¦ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"RefrigeratorCompartmentTemperatureLevelSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":233,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x01ï½è¨­å®å¯è½æ¸©åº¦ã¬ãã«æå¤§å¤(å¼±ï½å¼·)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å·åå®¤æ¸©åº¦ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"FreezerCompartmentTemperatureLevelSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":234,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x01ï½è¨­å®å¯è½æ¸©åº¦ã¬ãã«æå¤§å¤(å¼±ï½å¼·)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ°·æ¸©å®¤æ¸©åº¦ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"IceCompartmentTemperatureLevelSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":235,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x01ï½è¨­å®å¯è½æ¸©åº¦ã¬ãã«æå¤§å¤(å¼±ï½å¼·)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éèå®¤æ¸©åº¦ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"VegetableCompartmentTemperatureLevelSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":236,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x01ï½è¨­å®å¯è½æ¸©åº¦ã¬ãã«æå¤§å¤(å¼±ï½å¼·)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"åæå®¤æ¸©åº¦ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"MultiRefrigeratingModeCompartmentTemperatureLevelSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":237,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x01ï½è¨­å®å¯è½æ¸©åº¦ã¬ãã«æå¤§å¤(å¼±ï½å¼·)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å·èµå®¤æ¸©åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredRefrigeratorCompartmentTemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":209,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x81ï½0x7E(-127ï½126â)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å·åå®¤æ¸©åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredFreezerCompartmentTemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":210,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x81ï½0x7E(-127ï½126â)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ°·æ¸©å®¤æ¸©åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredSubzeroFreshCompartmentTemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":211,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x81ï½0x7E(-127ï½126â)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éèå®¤æ¸©åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredVegetableCompartmentTemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":212,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x81ï½0x7E(-127ï½126â)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"åæå®¤æ¸©åº¦è¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredMultiRefrigeratingModeCompartmentTemperature",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":213,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"int8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x81ï½0x7E(-127ï½126â)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å§ç¸®æ©åè»¢æ°ã¬ãã«",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æå¤§åè»¢æ°ã¬ãã«",
+				"fields":[
+					
+				],
+				"identifer":"MaximumRotationSpeedLevel",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFF(1ï½255)"
+			},
+			{
+				"arrayCount":0,
+				"description":"åè»¢æ°ã¬ãã«",
+				"fields":[
+					
+				],
+				"identifer":"RotationSpeedLevel",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00=åæ­¢,0x01ï½0xFF(å¼±ï½å¼·)"
+			}
+		],
+		"identifer":"CompressorRotationSpeed",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":216,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"compressor_rotation_speed_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¶è²»é»æµè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredElectricCurrentConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":218,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1A",
+		"valueDescription":"0x81ï½0x7E(-127ï½126â)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å®æ ¼æ¶è²»é»åå¤",
+		"fields":[
+			
+		],
+		"identifer":"RatedPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":220,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¥éå·ååä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"QuickFreezeFunctionSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":160,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=éå¸¸å·å,0x42=æ¥éå·å,0x43=æ¥éå·åå¾
+æ©"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ¥éå·èµåä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"QuickRefrigerationFunctionSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":161,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=éå¸¸å·èµ,0x42=æ¥éå·èµ,0x43=æ¥éå·èµå¾
+æ©"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½æ°·è¨±å¯è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"IcemakerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":164,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=è£½æ°·è¨±å¯,0x42=è£½æ°·ç¦æ­¢,0x43=è£½æ°·ä¸å®æéç¦æ­¢"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½æ°·åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"IcemakerOperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":165,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=éè»¢ä¸­,0x42=åæ­¢ä¸­"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½æ°·ç¨çµ¦æ°´ã¿ã³ã¯ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"IcemakerTankStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":166,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ã¿ã³ã¯æ°´ãã,0x42=ã¿ã³ã¯ãªãoræ°´ãªã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å·èµå®¤å æ¹¿åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"RefrigeratorCompartmentHumidificationFunctionSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":168,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å æ¹¿ON,0x42=å æ¹¿OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éèå®¤å æ¹¿åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"VegetableCompartmentHumidificationFunctionSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":169,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å æ¹¿ON,0x42=å æ¹¿OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è±è­åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DeodorizationFunctionSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":173,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=è±è­ON,0x42=è±è­OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03B8.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03B8.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03B8.json	(revision 101)
@@ -0,0 +1,1621 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã¢ééç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"DoorOpenCloseStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ãã¢é,0x42=ãã¢é"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å ç±ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"HeatingStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=åæç¶æ
+,0x41=éè»¢ä¸­,0x42=ä¸æåæ­¢ä¸­,0x43=å®äºå ±ç¥ä¸­,0x44=è¨­å®ä¸­,0x45=äºç±ä¸­,0x46=äºç±å®äºä¿æ¸©ä¸­,0x47=å ç±éä¸­å ±ç¥ä¸æåæ­¢ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å ç±è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"HeatingSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":178,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å ç±éå§ã»åé,0x42=å ç±ä¸æåæ­¢,0x43=å ç±åæ­¢"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å ç±ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"HeatingModeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=é»å­ã¬ã³ã¸å ç±,0x42=è§£å,0x43=ãªã¼ãã³,0x44=ã°ãªã«,0x45=ãã¼ã¹ã,0x46=çºé
+µ,0x47=ç
+®è¾¼ã¿,0x48=ã¹ãã¼ã å ç±,0x51=é»å­ã¬ã³ã¸2æ®µå ç±,0xFF=æªè¨­å®"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"èªåå ç±è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AutomaticHeatingSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=èªå,0x42=ããã¥ã¢ã«,0xFF=æªè¨­å®"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"èªåå ç±ã¬ãã«è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AutomaticHeatingLevelSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x31ï½0x35(å¼±ï½å¼·),0xFF=æªè¨­å®"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"èªåã¡ãã¥ã¼ã³ã¼ã¹è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AutomaticHeatingMenuSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":208,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00ï½0xFE=èªåã¡ãã¥ã¼ã³ã¼ã¹ã³ã¼ããã­ããã£ã®è©³ç´°èª¬æã«ãå®ç¾©ãããã³ã¼ããç¤ºãã,0xFF=æªè¨­å®"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãªã¼ãã³ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OvenModeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":209,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=èªåé¸æã¢ã¼ã,0x41=å¯¾æµãªã¼ãã³ã¢ã¼ã,0x42=ç±é¢¨ãªã¼ãã³ã¢ã¼ã,0x43=è¤åãªã¼ãã³ã¢ã¼ã,0xFF=æªè¨­å®"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãªã¼ãã³äºç±è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OvenPreheatingSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":213,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç±ãã,0x42=äºç±ãªã,0xFF=æªè¨­å®"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"çºé
+µã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"FermentingModeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":214,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=èªåé¸æã¢ã¼ã,0x41=å¯¾æµçºé
+µã¢ã¼ã,0x42=ç±é¢¨çºé
+µã¢ã¼ã,0x43=è¤åçºé
+µã¢ã¼ã,0x51=é»å­ã¬ã³ã¸çºé
+µã¢ã¼ã,0xFF=æªè¨­å®"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"åº«å
+æ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"ChamberTemperatureSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"int16_t",
+		"unitDescription":"â",
+		"valueDescription":"0xF554ï½0x7FFE(-273.2ï½3276.6â),0x8001=èªåè¨­å®,0x8002=æªè¨­å®"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä»ä¸ããæ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"FoodTemperatureSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"int16_t",
+		"unitDescription":"â",
+		"valueDescription":"0xF554ï½0x7FFE(-273.2ï½3276.6â),0x8002=æªè¨­å®"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å ç±æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			},
+			{
+				"arrayCount":0,
+				"description":"ç§",
+				"fields":[
+					
+				],
+				"identifer":"Second",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"ç§",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"HeatingTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":3,
+		"type":"hour_minute_second_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å ç±æ®æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			},
+			{
+				"arrayCount":0,
+				"description":"ç§",
+				"fields":[
+					
+				],
+				"identifer":"Second",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"ç§",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"RemainingHeatingTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":230,
+		"required":[
+			"NONE"
+		],
+		"size":3,
+		"type":"hour_minute_second_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»å­ã¬ã³ã¸å ç±åºåè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"MicrowaveHeatingPowerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":231,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":4,
+		"description":"éä¸­å ±ç¥ãã¿ã¼ã³è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PromptMessageSetting",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":false,
+		"propertyCode":232,
+		"required":[
+			"NONE"
+		],
+		"size":0,
+		"type":"prompt_message_setting_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä»å±åè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AccessoriesToCombinationMicrowaveOvenSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":233,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"ä½¿ç¨ããä»å±åã®çµã¿åããã2ãã¤ãã®ããããããã§ç¤ºããä½¿ç¨ããä»å±åã«å¯¾å¿ããããããã¿ã¼ã³ã1ã¨ããããã­ããã£ã®è©³ç´°èª¬æã«åä»å±åã«å¯¾å¿ãããããããããã¿ã¼ã³ãç¤ºãã"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":20,
+		"description":"è¡¨ç¤ºæå­åè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DisplayCharacterStringSetting",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":234,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"ShiftJISã³ã¼ãÃ20"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»å­ã¬ã³ã¸ï¼æ®µå ç±æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"1æ®µç®ã®å ç±æé",
+				"fields":[
+					{
+						"arrayCount":0,
+						"description":"æ",
+						"fields":[
+							
+						],
+						"identifer":"Hour",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"æ",
+						"valueDescription":"0x00ï½0x17(0ï½23)"
+					},
+					{
+						"arrayCount":0,
+						"description":"å",
+						"fields":[
+							
+						],
+						"identifer":"Minute",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"å",
+						"valueDescription":"0x00ï½0x3B(0ï½59)"
+					},
+					{
+						"arrayCount":0,
+						"description":"ç§",
+						"fields":[
+							
+						],
+						"identifer":"Second",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"ç§",
+						"valueDescription":"0x00ï½0x3B(0ï½59)"
+					}
+				],
+				"identifer":"DurationOfFirstMicrowaveHeatingCycle",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"hour_minute_second_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"2æ®µç®ã®å ç±æé",
+				"fields":[
+					{
+						"arrayCount":0,
+						"description":"æ",
+						"fields":[
+							
+						],
+						"identifer":"Hour",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"æ",
+						"valueDescription":"0x00ï½0x17(0ï½23)"
+					},
+					{
+						"arrayCount":0,
+						"description":"å",
+						"fields":[
+							
+						],
+						"identifer":"Minute",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"å",
+						"valueDescription":"0x00ï½0x3B(0ï½59)"
+					},
+					{
+						"arrayCount":0,
+						"description":"ç§",
+						"fields":[
+							
+						],
+						"identifer":"Second",
+						"initialValue":null,
+						"isArray":false,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":"ç§",
+						"valueDescription":"0x00ï½0x3B(0ï½59)"
+					}
+				],
+				"identifer":"DurationOfSecondMicrowaveHeatingCycle",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"hour_minute_second_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"TwoStageMicrowaveHeatingSettingDuration",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":235,
+		"required":[
+			"NONE"
+		],
+		"size":6,
+		"type":"two_stage_microwave_heating_setting_duration_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»å­ã¬ã³ã¸ï¼æ®µå ç±åºåè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"1æ®µç®ã®å ç±åºå",
+				"fields":[
+					
+				],
+				"identifer":"HeatingPowerForFirstMicrowaveHeatingCycle",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"W",
+				"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+			},
+			{
+				"arrayCount":0,
+				"description":"2æ®µç®ã®å ç±åºå",
+				"fields":[
+					
+				],
+				"identifer":"HeatingPowerForSecondMicrowaveHeatingCycle",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"W",
+				"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+			}
+		],
+		"identifer":"TwoStageMicrowaveHeatingSettingHeatingPower",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":236,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"two_stage_microwave_heating_setting_heating_power_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03B9.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03B9.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03B9.json	(revision 101)
@@ -0,0 +1,1127 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":4,
+		"description":"å ç±ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"HeatingStatus",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=å¾
+æ©ä¸­,0x41=éè»¢ä¸­,0x42=ä¸æåæ­¢ä¸­,0x50=å ç±ç¦æ­¢ç¶æ
+,0xFF=ä¸æ"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":4,
+		"description":"å ç±è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"HeatingSetting",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":178,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=å ç±åæ­¢,0x41=å ç±éå§ã»åé,0x42=å ç±ä¸æåæ­¢,0xFF=è¨­å®ãªã"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"ä¸æ¬åæ­¢è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"AllStopSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":179,
+		"required":[
+			"RULE_SET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=ä¸æ¬å ç±åæ­¢"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":4,
+		"description":"å ç±åºåè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"HeatingPowerSetting",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":231,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W|æ®µé|ï¼",
+		"valueDescription":"0x0000ï½0x2710=åºåè¨­å®å½¢å¼(0ï½10000W),0x3000ï½0x3010=ã¬ãã«è¨­å®å½¢å¼ï¼17æ®µéï¼,0x4002=ã¨ãç«,0x4004=å¼±ç«,0x4006=ä¸­ç«,0x4008=å¼·ç«,0x400A=ãã¤ãã¯ã¼,0xFFFF=æªè¨­å®"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"å ç±æ¸©åº¦è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"HeatingTemperatureSetting",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x32ï½0xFA=è¨­å®æ¸©åº¦(50ï½250â),0xFF=è¨­å®ãªã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"ã³ã³ã­å ç±ã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"HeatingModesOfStovesSetting",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å ç±åºåå¶å¾¡ã¢ã¼ã,0x42=å¤©ã·ãï¼æãç©ï¼,0x43=æ¹¯æ²¸ã,0x44=çé£¯,0x45=çãç©,0xFF=è¨­å®ãªã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"åã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"RelativeTimeSettingsOfOffTimers",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":false,
+		"propertyCode":150,
+		"required":[
+			"NONE"
+		],
+		"size":0,
+		"type":"hour_minute_second_t",
+		"unitDescription":null,
+		"valueDescription":"0xFFFFFF=è¨­å®ãªã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãã£ã¤ã«ãã­ãã¯è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"ChildLockSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":161,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=ãã£ã¤ã«ãã­ãã¯OFF,0x41=ãã£ã¤ã«ãã­ãã¯ON"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã©ã¸ã¨ã³ããã¼ã¿ã­ãã¯è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"RadiantHeaterLockSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":162,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=ã©ã¸ã¨ã³ããã¼ã¿ã­ãã¯OFF,0x41=ã©ã¸ã¨ã³ããã¼ã¿ã­ãã¯ON"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03BB.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03BB.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03BB.json	(revision 101)
@@ -0,0 +1,1186 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"èééç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"CoverOpenCloseStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=èé,0x42=èé"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"çé£¯ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"RiceCookingStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=åæ­¢,0x42=äºç±,0x43=çé£¯,0x44=è¸ãã,0x45=çé£¯å®äº"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"çé£¯å¶å¾¡è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"RiceCookingControlSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":178,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=çé£¯éå§ã»çé£¯åé,0x42=çé£¯ä¸æåæ­¢"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¿æ¸©è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"WarmerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ä¿æ¸©æ,0x42=ä¿æ¸©ç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"å
+ãªã¹åãå¤ãç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"InnerPotRemovalStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=åãå¤ãæ,0x42=åãå¤ãç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"èåãå¤ãç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"CoverRemovalStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":230,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=åãå¤ãæ,0x42=åãå¤ãç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"çé£¯äºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"RiceCookingReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":144,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç´æ,0x42=äºç´ç¡"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"çé£¯äºç´è¨­å®æå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"SetValueOfRiceCookingReservationSettingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":145,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"çé£¯äºç´è¨­å®ç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"SetValueOfRiceCookingReservationSettingRelativeTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":146,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03C5.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03C5.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03C5.json	(revision 101)
@@ -0,0 +1,1182 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æã»èééç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"DoorCoverOpenCloseStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æã»èé,0x42=æã»èé"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ´æ¿¯è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"WashingMachineSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":178,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ´æ¿¯éå§ã»åé,0x42=æ´æ¿¯ä¸æåæ­¢,0x43=æ´æ¿¯åæ­¢"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ´æ¿¯é·ç§»ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"CurrentStageOfWashingCycle",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ´ã,0x42=ããã,0x43=è±æ°´,0x44=ä¸æåæ­¢,0x45=æ´æ¿¯å®äºã»åæ­¢"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ´æ¿¯æ®ãæé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			},
+			{
+				"arrayCount":0,
+				"description":"ç§",
+				"fields":[
+					
+				],
+				"identifer":"Second",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"ç§",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"TimeRemainingToCompleteWashingCycle",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":230,
+		"required":[
+			"NONE"
+		],
+		"size":3,
+		"type":"hour_minute_second_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OnTimerReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":144,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç´å
+¥,0x42=äºç´å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OnTimerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":145,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"RelativeTimeBasedOnTimerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":146,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03C6.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03C6.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03C6.json	(revision 101)
@@ -0,0 +1,1182 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æã»èééç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"DoorCoverOpenCloseStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æã»èé,0x42=æã»èé"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¹¾ç¥è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DryingSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":178,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ä¹¾ç¥éå§ã»åé,0x42=ä¹¾ç¥ä¸æåæ­¢,0x43=ä¹¾ç¥åæ­¢"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¹¾ç¥é·ç§»ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"DryingStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ä¹¾ç¥,0x42=ä¸æåæ­¢,0x43=ä¹¾ç¥å®äºã»åæ­¢"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¹¾ç¥æ®ãæé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			},
+			{
+				"arrayCount":0,
+				"description":"ç§",
+				"fields":[
+					
+				],
+				"identifer":"Second",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"ç§",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"RemainingDryingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":230,
+		"required":[
+			"NONE"
+		],
+		"size":3,
+		"type":"hour_minute_second_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OnTimerReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":144,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç´å
+¥,0x42=äºç´å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OnTimerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":145,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"RelativeTimeBasedOnTimerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":146,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03D3.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03D3.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList03D3.json	(revision 101)
@@ -0,0 +1,2092 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æã»èééç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"DoorCoverOpenCloseStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æã»èé,0x42=æã»èé"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ´æ¿¯ã»ä¹¾ç¥è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"WasherAndDryerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":178,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ´æ¿¯ä¹¾ç¥éå§ã»åé\/æ´æ¿¯ä¹¾ç¥éè»¢ä¸­,0x42=æ´æ¿¯ä¹¾ç¥ä¸æåæ­¢,0x43=æ´æ¿¯ä¹¾ç¥åæ­¢"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ´æ¿¯ä¹¾ç¥ã³ã¼ã¹è¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"WasherAndDryerCycleSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":208,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"<æ´æ¿¯ä¹¾ç¥ã³ã¼ã¹>\u000d\u000a0x21=æ¨æº,0x22=éé³,0x23=æ±ãå¤§,0x24=ãã¤ããæ±ã,0x25=ã¤ããã,0x26=æ¯å¸,0x27=ã½ãã,0x28=ãã©ã¤,0x29=æ¸
+æ½ããã,0x2A=ã¢ã¤ã­ã³\/Yã·ã£ã,0x2B=åãå¹²ã,0x2C=åç©,0x2D=é¤è,0x2E=æ²¹æ±ã,0x2F=ã¡ã¢ãªã¼,0x30=çæ´å¤,0x31=æ±ãå°,0x32=å°éç­æé,0x40ï½0x4F=æ´æ¿¯ä¹¾ç¥ã³ã¼ã¹\/ã¡ã¼ã«ãªãªã¸ãã«ã³ã¼ã¹\u000d\u000a<æ´æ¿¯ã³ã¼ã¹>\u000d\u000a0x61=æ¨æº,0x62=éé³,0x63=æ±ãå¤§,0x64=ãã¤ããæ±ã,0x65=ã¤ããã,0x66=æ¯å¸,0x67=ã½ãã,0x68=ãã©ã¤,0x69=æ¸
+æ½ããã,0x6A=é¤è,0x6B=æ²¹æ±ã,0x6C=ã¡ã¢ãª,0x6D=çæ´å¤,0x6E=æ±ãå°,0x6F=å°éç­æé,0x7F=æ§½æ´æµ,0x80ï½0x8F=æ´æ¿¯ã³ã¼ã¹\/ã¡ã¼ã«ãªãªã¸ãã«ã³ã¼ã¹\u000d\u000a<ä¹¾ç¥ã³ã¼ã¹>\u000d\u000a0xA1=æ¨æº,0xA2=æ¯å¸,0xA3=ã½ãã,0xA4=ãã©ã¤,0xA5=ã¢ã¤ã­ã³\/Yã·ã£ã,0xA6=åãå¹²ã,0xA7=åç©,0xA8=é¤è,0xA9=ç¸®ã¿ä½æ¸,0xAA=ä»ä¸ã,0xAB=éæ­¢ä¹¾ç¥,0xAC=æéæå®,0xAD=è¡£é¡ãããã,0xBF=æ§½ä¹¾ç¥,0xC0ï½0xCF=ä¹¾ç¥ã³ã¼ã¹\/ã¡ã¼ã«ãªãªã¸ãã«ã³ã¼ã¹"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ´æ¿¯ä¹¾ç¥ã³ã¼ã¹è¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"WasherAndDryerCycleSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":209,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x20=æ´æ¿¯ãªã,0x21=æ¨æº,0x22=éé³,0x23=æ±ãå¤§,0x24=ãã¤ããæ±ã,0x25=ã¤ããã,0x26=æ¯å¸,0x27=ã½ãã,0x28=ãã©ã¤,0x29=æ¸
+æ½ããã,0x2D=é¤è,0x2E=æ²¹æ±ã,0x2F=ã¡ã¢ãªã¼,0x30=çæ´å¤,0x31=æ±ãå°,0x32=å°éç­æé,0x3F=æ§½æ´æµ,0xE0ï½0xEF=ã¡ã¼ã«ãªãªã¸ãã«ã³ã¼ã¹"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¹¾ç¥æ¹æ³è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DryingCycleSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":210,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0xA0=ä¹¾ç¥ãªã,0xA1=æ¨æº,0xA2=æ¯å¸,0xA3=ã½ãã,0xA4=ãã©ã¤,0xA5=ã¢ã¤ã­ã³\/Yã·ã£ã,0xA6=åãå¹²ã,0xA7=åç©,0xA8=é¤è,0xA9=ç¸®ã¿ä½æ¸,0xAA=ä»ä¸ã,0xAB=éæ­¢ä¹¾ç¥,0xAC=æéæå®,0xAD=è¡£é¡ãããã,0xAE=ãã¼ã¿å
+¥åå¶é,0xBF=æ§½ä¹¾ç¥,0xE0ï½0xEF=ã¡ã¼ã«ãªãªã¸ãã«ã³ã¼ã¹"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è¨­å®å¯è½ã³ã¼ã¹æ
+å ±ï¼",
+		"fields":[
+			
+		],
+		"identifer":"WasherAndDryerCycleOptionList1",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":211,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ãããã1ã®å ´åãå¯¾å¿ããã³ã¼ã¹ã®è¨­å®ãå¯è½ãªãã¨ãã0ã®å ´åã¯ä¸å¯è½ãªãã¨ãç¤ºãããããã¨ã³ã¼ã¹ã®é¢ä¿ã¯è©³ç´°ãåç
+§ã®ãã¨ã"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":4,
+		"description":"è¨­å®å¯è½ã³ã¼ã¹æ
+å ±ï¼",
+		"fields":[
+			
+		],
+		"identifer":"WasherAndDryerCycleOptionList2",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":212,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ãããã1ã®å ´åãå¯¾å¿ããã³ã¼ã¹ã®è¨­å®ãå¯è½ãªãã¨ãã0ã®å ´åã¯ä¸å¯è½ãªãã¨ãç¤ºãããããã¨ã³ã¼ã¹ã®é¢ä¿ã¯è©³ç´°ãåç
+§ã®ãã¨ã"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":4,
+		"description":"è¨­å®å¯è½ã³ã¼ã¹æ
+å ±ï¼",
+		"fields":[
+			
+		],
+		"identifer":"WasherAndDryerCycleOptionList3",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":213,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ãããã1ã®å ´åãå¯¾å¿ããã³ã¼ã¹ã®è¨­å®ãå¯è½ãªãã¨ãã0ã®å ´åã¯ä¸å¯è½ãªãã¨ãç¤ºãããããã¨ã³ã¼ã¹ã®é¢ä¿ã¯è©³ç´°ãåç
+§ã®ãã¨ã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ°´æµè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"WaterFlowRateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":214,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"<çµ¶å¯¾å¤æå®>\u000d\u000a0x31ï½0x40(æãå¼±ãæ°´æµï½æãå¼·ãæ°´æµ)\u000d\u000a<èªåããã®ç¸å¯¾æå®>\u000d\u000a0xFF=èªåè¨­å®,0xA0ï½0xA7=ãã©ã¹ç¸å¯¾æå®(1ï½8æ®µé),0xC0ï½0xC7=ãã¤ãã¹ç¸å¯¾æå®(1ï½8æ®µé)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ®µéè±æ°´åè»¢æ°è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"RotationSpeedForSpinDryingSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":215,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"<çµ¶å¯¾å¤æå®>\u000d\u000a0x0000ï½0x0FFF(0ï½4095 r\/min)\u000d\u000a<èªåããã®ç¸å¯¾æå®>\u000d\u000a0xFFFF=èªåè¨­å®,0xA000ï½0xA7FF=ãã©ã¹ç¸å¯¾æå®(1ï½2048r\/min),0xC000ï½0xC7FF=ãã¤ãã¹ç¸å¯¾æå®(1ï½2048r\/min)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¹¾ç¥åº¦è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DegreeOfDryingSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":216,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"<çµ¶å¯¾å¤æå®>\u000d\u000a0x31ï½0x40(æãä½ãä¹¾ç¥åº¦ï½æãé«ãä¹¾ç¥åº¦)\u000d\u000a<èªåããã®ç¸å¯¾æå®>\u000d\u000a0xFF=èªåè¨­å®,0xA0ï½0xA7=ãã©ã¹ç¸å¯¾æå®(1ï½8æ®µé),0xC0ï½0xC7=ãã¤ãã¹ç¸å¯¾æå®(1ï½8æ®µé)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ´æ¿¯æ®ãæé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æé",
+				"valueDescription":"0x00ï½0xFE(0ï½254)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"RemainingWashingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":219,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hours_minutes_t",
+		"unitDescription":null,
+		"valueDescription":"0xFFFF=æ®ãæéä¸æ"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä¹¾ç¥æ®ãæé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æé",
+				"valueDescription":"0x00ï½0xFE(0ï½254)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"RemainingDryingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":220,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hours_minutes_t",
+		"unitDescription":null,
+		"valueDescription":"0xFFFF=æ®ãæéä¸æ"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãçµéæé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æé",
+				"valueDescription":"0x00ï½0xFF(0ï½255)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"ElapsedTimeOnTheOnTimer",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":223,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hours_minutes_2type_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":2,
+		"description":"ã¤ãããè¡ç¨æéè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"PresoakingTimeSetting",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"æéå",
+		"valueDescription":"<çµ¶å¯¾å¤æå®>\u000d\u000a0x00ï½0x17:0x00ï½0x3B(0ï½23):(0ï½59)\u000d\u000a<èªåããã®ç¸å¯¾æå®>\u000d\u000a0xFFFF=èªåè¨­å®,0xA000ï½0xA03B=ãã©ã¹ç¸å¯¾æå®(1ï½60å),0xC000ï½0xC03B=ãã¤ãã¹ç¸å¯¾æå®(1ï½60å)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ´æ¿¯ä¹¾ç¥é·ç§»ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"CurrentStageOfWasherAndDryerCycle",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":226,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=æ´ã,0x42=ããã,0x43=è±æ°´,0x44=ä¸æåæ­¢,0x45=æ´æ¿¯å®äº,0x51=æ´æ¿¯\/ä¹¾ç¥ï¼ã½ããã­ã¼ããªãï¼å®äº,0x52=ä¹¾ç¥,0x53=ã½ããã­ã¼ã,0x54=ä¹¾ç¥ï¼ã½ããã­ã¼ãããï¼å®äº,0x61=éè»¢åå¾
+æ©ä¸­,0x71=ç¬¬1ããã,0x72=ç¬¬2ããã,0x73=ç¬¬3ããã,0x74=ç¬¬4ããã,0x75=ç¬¬5ããã,0x76=ç¬¬6ããã,0x77=ç¬¬7ããã,0x78=ç¬¬8ããã,0x81=ç¬¬1è±æ°´,0x82=ç¬¬2è±æ°´,0x83=ç¬¬3è±æ°´,0x84=ç¬¬4è±æ°´,0x85=ç¬¬5è±æ°´,0x86=ç¬¬6è±æ°´,0x87=ç¬¬7è±æ°´,0x88=ç¬¬8è±æ°´,0x91=ããªãã¼ãè±æ°´,0xE0ï½0xEF=ã¡ã¼ã«ãªãªã¸ãã«ã³ã¼ã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ°´éè¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"WaterVolumeSetting1",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":227,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ã",
+		"valueDescription":"<çµ¶å¯¾å¤æå®>\u000d\u000a0x00ï½0x7F(0ï½127ã)\u000d\u000a<èªåããã®ç¸å¯¾æå®>\u000d\u000a0xFF=èªåè¨­å®,0xA0ï½0xBF=ãã©ã¹ç¸å¯¾æå®(1ï½32ã),0xC0ï½0xDF=ãã¤ãã¹ç¸å¯¾æå®(1ï½32ã)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ°´éè¨­å®ï¼",
+		"fields":[
+			
+		],
+		"identifer":"WaterVolumeSetting2",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":228,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"<çµ¶å¯¾å¤æå®>\u000d\u000a0x31ï½0x40(æãä½ãæ°´ä½ï½æãé«ãæ°´ä½)\u000d\u000a<èªåããã®ç¸å¯¾æå®>\u000d\u000a0xFF=èªåè¨­å®,0xA0ï½0xA7=ãã©ã¹ç¸å¯¾æå®(1ï½8æ®µé),0xC0ï½0xC7=ãã¤ãã¹ç¸å¯¾æå®(1ï½8æ®µé)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":2,
+		"description":"æ´ãæéè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"WashingTimeSetting",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":229,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"æéå",
+		"valueDescription":"<çµ¶å¯¾å¤æå®>\u000d\u000a0x00ï½0x17:0x00ï½0x3B(0ï½23):(0ï½59)\u000d\u000a<èªåããã®ç¸å¯¾æå®>\u000d\u000a0xFF=èªåè¨­å®,0xA000ï½0xA03B=ãã©ã¹ç¸å¯¾æå®(1ï½60å),0xC000ï½0xC03B=ãã¤ãã¹ç¸å¯¾æå®(1ï½60å)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ãããåæ°è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"NumberOfTimesOfRinsingSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":230,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x00ï½0x08(0ï½8å),0xFF=èªå"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":4,
+		"description":"ãããã¢ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"RinsingProcessSetting",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":231,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0000=ã¢ã¼ãèªåè¨­å®,0001=æºãããã,0010=æµæ°´ããã,0011=ã·ã£ã¯ã¼ããã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è±æ°´æéè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"SpinDryingTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":232,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"å",
+		"valueDescription":"<çµ¶å¯¾å¤æå®>\u000d\u000a0x00ï½0x3B(0ï½59å)\u000d\u000a<èªåããã®ç¸å¯¾æå®>\u000d\u000a0xFF=èªåè¨­å®,0xA0ï½0xBF=ãã©ã¹ç¸å¯¾æå®(1ï½32å),0xC0ï½0xDF=ãã¤ãã¹ç¸å¯¾æå®(1ï½32å)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":2,
+		"description":"ä¹¾ç¥æéè¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"DryingTimeSetting",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":233,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"æéå",
+		"valueDescription":"<çµ¶å¯¾å¤æå®>\u000d\u000a0x00ï½0x17:0x00ï½0x3B(0ï½23):(0ï½59)\u000d\u000a<èªåããã®ç¸å¯¾æå®>\u000d\u000a0xFFFF=èªåè¨­å®,0xA000ï½0xA03B=ãã©ã¹ç¸å¯¾æå®(1ï½60å),0xC000ï½0xC03B=ãã¤ãã¹ç¸å¯¾æå®(1ï½60å)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ´ãæ¸©æ°´è¨­å®å¤",
+		"fields":[
+			
+		],
+		"identifer":"WarmWaterSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":234,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"â",
+		"valueDescription":"0x00ï½0x64(0ï½100â),0xFE=æ¸©æ°´ä¸ä½¿ç¨,0xFF=æ¸©åº¦èªåè¨­å®"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é¢¨åæ°´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"BathtubWaterRecycleSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":235,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x40=é¢¨åæ°´çµ¦æ°´ãªã,0x41=æ´ãã®ã¿,0x42=ãããã®ã¿ï¼é¤ãæçµãããï¼,0x43=å
+¨ããã,0x44=æ´ãï¼ãããï¼é¤ãæçµãããï¼,0x45=æ´ãï¼å
+¨ããã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã½ããã­ã¼ãè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"WrinklingMinimizationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":236,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ã½ããã­ã¼ãå
+¥ã,0x42=ã½ããã­ã¼ãåã"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ´æ¿¯ä¹¾ç¥æ®ãæé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æé",
+				"valueDescription":"0x00ï½0xFE(0ï½254)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"TimeRemainingToCompleteWasherAndDryerCycle",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":237,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hours_minutes_t",
+		"unitDescription":null,
+		"valueDescription":"0xFFFF=æ®ãæéä¸æ"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"éè»¢ä¸­æã»èã­ãã¯è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DoorCoverLockSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":238,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ã­ãã¯,0x42=ã¢ã³ã­ãã¯"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"æ´æ¿¯ä¹¾ç¥è¡ç¨æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":2,
+				"description":"æå¹ãªè¡¨ç¤ºé 
+ç®",
+				"fields":[
+					
+				],
+				"identifer":"AvailableItems",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"æå¹ãªè¡¨ç¤ºé 
+ç®ãããããããã§ç¤ºãã"
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¤ãããè¡ç¨",
+				"fields":[
+					
+				],
+				"identifer":"Presoaking",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ã¤ãããè¡ç¨ãã,0x42=ã¤ãããè¡ç¨ãªã"
+			},
+			{
+				"arrayCount":2,
+				"description":"æ´ãæé",
+				"fields":[
+					
+				],
+				"identifer":"WashingTime",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"å¤ã¯æ´ãæéè¨­å®å¤ãåç
+§"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãããåæ°",
+				"fields":[
+					
+				],
+				"identifer":"NumberOfTimesOfRinsing",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"å¤ã¯ãããåæ°è¨­å®å¤ãåç
+§"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãããã¢ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"RinsingProcess",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"å¤ã¯ãããã¢ã¼ãè¨­å®ãåç
+§"
+			},
+			{
+				"arrayCount":0,
+				"description":"è±æ°´æé",
+				"fields":[
+					
+				],
+				"identifer":"SpinDryingTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"å¤ã¯è±æ°´æéè¨­å®å¤ãåç
+§"
+			},
+			{
+				"arrayCount":2,
+				"description":"ä¹¾ç¥æé",
+				"fields":[
+					
+				],
+				"identifer":"DryingTime",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"å¤ã¯ä¹¾ç¥æéè¨­å®å¤ãåç
+§"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¸©æ°´è¨­å®",
+				"fields":[
+					
+				],
+				"identifer":"WarmWaterSetting",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"å¤ã¯æ¸©æ°´è¨­å®ãåç
+§"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ°´éè¨­å®1",
+				"fields":[
+					
+				],
+				"identifer":"WaterVolumeSetting1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"å¤ã¯æ°´éè¨­å®1ãåç
+§"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ°´éè¨­å®2",
+				"fields":[
+					
+				],
+				"identifer":"WaterVolumeSetting2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"å¤ã¯æ°´éè¨­å®2ãåç
+§"
+			},
+			{
+				"arrayCount":0,
+				"description":"é¢¨åæ°´è¨­å®",
+				"fields":[
+					
+				],
+				"identifer":"BathtubWaterRecycleSetting",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"å¤ã¯é¢¨åæ°´è¨­å®ãåç
+§"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ°´æµè¨­å®",
+				"fields":[
+					
+				],
+				"identifer":"WaterFlowRateSetting",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"å¤ã¯æ°´æµè¨­å®ãåç
+§"
+			},
+			{
+				"arrayCount":2,
+				"description":"è±æ°´åè»¢æ°è¨­å®",
+				"fields":[
+					
+				],
+				"identifer":"RotationSpeedForSpinDryingSetting",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"å¤ã¯è±æ°´åè»¢æ°è¨­å®å¤ãåç
+§"
+			},
+			{
+				"arrayCount":0,
+				"description":"ä¹¾ç¥åº¦è¨­å®",
+				"fields":[
+					
+				],
+				"identifer":"DegreeOfDryingSetting",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"å¤ã¯ä¹¾ç¥åº¦è¨­å®ãåç
+§"
+			},
+			{
+				"arrayCount":2,
+				"description":"ã¤ãããè¡ç¨æéè¨­å®",
+				"fields":[
+					
+				],
+				"identifer":"PresoakingTimeSetting",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"å¤ã¯ã¤ãããè¡ç¨æéè¨­å®ãåç
+§"
+			},
+			{
+				"arrayCount":0,
+				"description":"ã½ããã­ã¼ãè¨­å®",
+				"fields":[
+					
+				],
+				"identifer":"WrinklingMinimizationSetting",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"å¤ã¯ã½ããã­ã¼ãè¨­å®ãåç
+§"
+			}
+		],
+		"identifer":"WasherAndDryerCycle",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":239,
+		"required":[
+			"NONE"
+		],
+		"size":24,
+		"type":"washer_and_dryer_cycle_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãäºç´è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"OnTimerReservationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":144,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=äºç´å
+¥,0x42=äºç´å"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãæå»è¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"OnTimerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":145,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¯ï¼®ã¿ã¤ãç¸å¯¾æéè¨­å®å¤",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æé",
+				"valueDescription":"0x00ï½0xFF(0ï½255)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"RelativeTimeBasedOnTimerSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":146,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hours_minutes_2type_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0405.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0405.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0405.json	(revision 101)
@@ -0,0 +1,964 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä½éè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredValueOfBodyWeight",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.1kg",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½6553.3kg)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ä½èèªè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredValueOfBodyFat",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":225,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"0.10ï¼
+",
+		"valueDescription":"0x0000ï½0x03E8(0ï½100.0%)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList05FD.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList05FD.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList05FD.json	(revision 101)
@@ -0,0 +1,941 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET"
+		],
+		"arrayCount":0,
+		"description":"æ¥ç¶æ©å¨",
+		"fields":[
+			
+		],
+		"identifer":"ConnectedDevice",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":224,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"æ©å¨ã®å½¢åãä¿æãã"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0601.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0601.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0601.json	(revision 101)
@@ -0,0 +1,1124 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31= OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¡¨ç¤ºå¶å¾¡è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DisplayControlSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=è¡¨ç¤º,0x31=éè¡¨ç¤º"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"æå­åè¨­å®åä»å¯è½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"CharacterStringSettingAcceptanceStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ã¬ãã£,0x31=ãã¸ã¼"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":2,
+		"description":"è¡¨ç¤ºå¯è½æå­ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"SupportedCharacterCodes",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":178,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"[0]ANSI X3.4:1=æ­è¼,0=éæ­è¼\u000d\u000a[1]Shift-JIS:1=æ­è¼,0=éæ­è¼\u000d\u000a[2]JIS:1=æ­è¼,0=éæ­è¼\u000d\u000a[3]æ¥æ¬èªEUC:1=æ­è¼,0=éæ­è¼\u000d\u000a[4]UCS-4:1=æ­è¼,0=éæ­è¼\u000d\u000a[5]UCS-2:1=æ­è¼,0=éæ­è¼\u000d\u000a[6]Latin-1:1=æ­è¼,0=éæ­è¼\u000d\u000a[7]UTF-8:1=æ­è¼,0=éæ­è¼\u000d\u000a[8ï½15]for future reserved:0"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ä¼éæå­åè¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¼éæå­ãã¤ãã³ã¼ãåãã¼ã¿é·",
+				"fields":[
+					
+				],
+				"identifer":"ByteCodeSequenceDataLength",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ä¼éæå­ãã¤ãã³ã¼ãåãã¼ã¿é·ã®16é²æç®å¤"
+			},
+			{
+				"arrayCount":0,
+				"description":"ä½¿ç¨æå­ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"CharacterCodeToUse",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01=ANSI X3.4,0x02=Shift-JIS,0x03=JIS,0x04=æ¥æ¬èªEUC,0x05=UCS-4,0x06=UCS-2,0x07=Latin-1,0x08=UTF-8,0x09ï½=for future reserved"
+			},
+			{
+				"arrayCount":0,
+				"description":"for future reserved",
+				"fields":[
+					
+				],
+				"identifer":"Reserved",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":244,
+				"description":"ä¼éæå­åãã¤ãã³ã¼ãå",
+				"fields":[
+					
+				],
+				"identifer":"ByteCodeSequenceOfTheCharacterStringToPresentToTheUser",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"CharacterStringToPresentToTheUser",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":179,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":247,
+		"type":"character_string_to_present_to_the_user_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"åä»ãä¼éæå­åé·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"for future reserved",
+				"fields":[
+					
+				],
+				"identifer":"TotalNumberOfBytesOfTheNewestCharacterString",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00ï½0xF4"
+			},
+			{
+				"arrayCount":0,
+				"description":"for future reserved",
+				"fields":[
+					
+				],
+				"identifer":"Reserved",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"LengthOfCharacterStringAccepted",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":180,
+		"required":[
+			"RULE_GET"
+		],
+		"size":2,
+		"type":"length_of_character_string_accepted_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0602.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0602.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0602.json	(revision 101)
@@ -0,0 +1,1038 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¡¨ç¤ºå¶å¾¡è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"DisplayControlSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":176,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"æå­åè¨­å®åä»å¯è½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"CharacterStringSettingAcceptanceStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":177,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":2,
+		"description":"è¡¨ç¤ºå¯è½æå­ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"SupportedCharacterCodes",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":178,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":247,
+		"description":"ä¼éæå­åè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CharacterStringToPresentToTheUser",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":179,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä»ãä¼éæå­åé·",
+		"fields":[
+			
+		],
+		"identifer":"LengthOfCharacterStringAccepted",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":180,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0EF0.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0EF0.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyList0EF0.json	(revision 101)
@@ -0,0 +1,597 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=èµ·åä¸­,0x31=æªèµ·åä¸­"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¸ã£ã¼ãã¼ã¸ã§ã³(å°æ°ç¹ä»¥ä¸)",
+				"fields":[
+					
+				],
+				"identifer":"MajorVersionNumber",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"Binary"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãã¤ãã¼ãã¼ã¸ã§ã³(å°æ°ç¹ä»¥ä¸)",
+				"fields":[
+					
+				],
+				"identifer":"MinorVersionNumber",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"Binary"
+			},
+			{
+				"arrayCount":2,
+				"description":"é»æã¿ã¤ã",
+				"fields":[
+					
+				],
+				"identifer":"MessageType",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"Bitmap"
+			}
+		],
+		"identifer":"VersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®å½¢å¼ã«ããè¨­å®,ãã®ä»=future reserved"
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":13,
+				"description":"ã¦ãã¼ã¯IDé¨(ã¡ã¼ã«ã¼ç¬èª)",
+				"fields":[
+					
+				],
+				"identifer":"UniqueIdSection",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"RULE_GET"
+		],
+		"size":17,
+		"type":"node_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultContent",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0x03EC(0ï½1004)"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"åä½è­å¥æ
+å ±",
+		"fields":[
+			
+		],
+		"identifer":"UniqueIdentifierData",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":191,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"ä¸è¨(3)åç
+§ã"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"èªãã¼ãã¤ã³ã¹ã¿ã³ã¹æ°",
+		"fields":[
+			
+		],
+		"identifer":"NumberOfSelfNodeInstances",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":211,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"1ï½3ãã¤ãç®ï¼ã¤ã³ã¹ã¿ã³ã¹ç·æ°"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":2,
+		"description":"èªãã¼ãã¯ã©ã¹æ°",
+		"fields":[
+			
+		],
+		"identifer":"NumberOfSelfNodeClasses",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":212,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"1ï½2ãã¤ãç®ï¼ã¯ã©ã¹ç·æ°"
+	},
+	{
+		"access":[
+			"RULE_ANNO",
+			"VARIABLE"
+		],
+		"arrayCount":253,
+		"description":"ã¤ã³ã¹ã¿ã³ã¹ãªã¹ãéç¥",
+		"fields":[
+			
+		],
+		"identifer":"InstanceListNotification",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":213,
+		"required":[
+			"RULE_ANNO"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"1ãã¤ãç®ï¼éå ±ã¤ã³ã¹ã¿ã³ã¹æ°\u000d\u000a2ï½253ãã¤ãç®ï¼ECHONETãªãã¸ã§ã¯ãã³ã¼ã(EOJ3ãã¤ã)ãåæã"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":253,
+		"description":"èªãã¼ãã¤ã³ã¹ã¿ã³ã¹ãªã¹ãï¼³",
+		"fields":[
+			
+		],
+		"identifer":"SelfNodeInstanceListS",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":214,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"1ãã¤ãç®ï¼ã¤ã³ã¹ã¿ã³ã¹ç·æ°\u000d\u000a2ï½253ãã¤ãç®ï¼ECHONETãªãã¸ã§ã¯ãã³ã¼ã(EOJ3ãã¤ã)ãåæã"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"èªãã¼ãã¯ã©ã¹ãªã¹ãï¼³",
+		"fields":[
+			
+		],
+		"identifer":"SelfNodeClassListS",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":215,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"1ãã¤ãç®ï¼ã¯ã©ã¹ç·æ°\u000d\u000a2ï½17ãã¤ãç®ï¼ã¯ã©ã¹ã³ã¼ã(EOJã®ä¸ä½2ãã¤ã)ãåæã"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"PlaceOfBusinessCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"SerialNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"DateOfManufacture",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":""
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyListBase.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyListBase.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/devices/PropertyListBase.json	(revision 101)
@@ -0,0 +1,919 @@
+[
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"åä½ç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"OperationStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":128,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x30=ON,0x31=OFF"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"è¨­ç½®å ´æ",
+		"fields":[
+			
+		],
+		"identifer":"InstallationLocation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":129,
+		"required":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"2.2è¨­ç½®å ´æãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è¦æ ¼ï¼¶ï½
+ï½ï½ï½ï½ï½æ
+å ±",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åºå®1(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved1",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®2(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved2",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			},
+			{
+				"arrayCount":0,
+				"description":"ãªãªã¼ã¹é ãASCIIã§ç¤ºã",
+				"fields":[
+					
+				],
+				"identifer":"OrderOfRelease",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"åºå®4(for future reserved)",
+				"fields":[
+					
+				],
+				"identifer":"Reserved4",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x00"
+			}
+		],
+		"identifer":"StandardVersionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":130,
+		"required":[
+			"RULE_GET"
+		],
+		"size":4,
+		"type":"standard_version_information_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è­å¥çªå·",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ä¸ä½éä¿¡å±¤IDãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"LowerLayerCommunicationIdField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x01ï½0xFD=ä¸ä½éä¿¡å±¤ã§ä½¿ç¨ãããéä¿¡ãã­ãã³ã«ã§åºæã®çªå·ãæ¯ããã¦ããå ´åããã­ãã³ã«å¥ã«å¿ãã¦ãä»»æã«è¨­å®ï¼ECHONET Liteã§ã¯ä½¿ç¨ããªãï¼,0x11ï½0x1F=é»ç¯ç·a\/dæ¹å¼,0x31ï½0x3F=ç¹å®å°é»åç¡ç·,0x41ï½0x4F=æ¡å¼µHBS,0x51ï½0x5F=IrDA,0x61ï½0x6F=LonTalk,0x71ï½0x7F=Bluetooth,0x81ï½0x8F=ã¤ã¼ãµããã,0x91ï½0x9F=IEEE802.11\/11b,0xA1=é»ç¯ç·cæ¹å¼,0xB1=IPv6\/Ethernet,0xB2=IPv6\/6LoWPAN,0xFE=2ãã17ãã¤ããã¡ã¼ã«è¦å®ãå½¢å¼ã«ããè¨­å®ï¼è©³ç´°èª¬æåç
+§ï¼,0xFF=2ãã9ãã¤ããä¹±æ°ã«ããçæãããã­ãã³ã«ãä¸ä½éä¿¡å±¤ã§ä½¿ç¨ããå ´åã«è¨­å®,0x00=è­å¥çªå·æªè¨­å®"
+			},
+			{
+				"arrayCount":16,
+				"description":"åºæçªå·ãã£ã¼ã«ã",
+				"fields":[
+					
+				],
+				"identifer":"UniqueNumberField",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"IdentificationNumber",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":131,
+		"required":[
+			"NONE"
+		],
+		"size":17,
+		"type":"device_identification_number_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¬ææ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredInstantaneousPowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":132,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":"W",
+		"valueDescription":"0x0000ï½0xFFFD(0ï½65533W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®æ¶è²»é»åè¨æ¸¬å¤",
+		"fields":[
+			
+		],
+		"identifer":"MeasuredCumulativePowerConsumption",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":133,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"uint32_t",
+		"unitDescription":"kWh",
+		"valueDescription":"0x00000000ï½0x3B9AC9FF(0ï½999,999.999kWh)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ç°å¸¸ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"ç°å¸¸ã³ã¼ãé¨ã®ãã¼ã¿ãµã¤ãº",
+				"fields":[
+					
+				],
+				"identifer":"DataSizeOfTheFaultCodeField",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":0,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					{
+						"arrayCount":3,
+						"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+						"fields":[
+							
+						],
+						"identifer":"ManufacturerCode",
+						"initialValue":null,
+						"isArray":true,
+						"primitive":true,
+						"size":1,
+						"type":"uint8_t",
+						"unitDescription":null,
+						"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+					}
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":false,
+				"size":3,
+				"type":"manufacturer_code_t",
+				"unitDescription":null,
+				"valueDescription":""
+			},
+			{
+				"arrayCount":221,
+				"description":"åã¡ã¼ã«ç¬èªã®ç°å¸¸ã³ã¼ãé¨",
+				"fields":[
+					
+				],
+				"identifer":"FieldForManufacturerDefinedFaultCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":""
+			}
+		],
+		"identifer":"ManufacturersFaultCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":134,
+		"required":[
+			"NONE"
+		],
+		"size":225,
+		"type":"manufacturers_fault_code_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»æµå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"CurrentLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":135,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":"ï¼
+",
+		"valueDescription":"0x00ï½0x64(0ï½100%)"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"ANNOUNCE"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸çºçç¶æ
+",
+		"fields":[
+			
+		],
+		"identifer":"FaultStatus",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":136,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç°å¸¸çºçæ,0x42=ç°å¸¸çºçç¡"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç°å¸¸å
+å®¹",
+		"fields":[
+			
+		],
+		"identifer":"FaultDescription",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":137,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"2.5ç°å¸¸å
+å®¹ãã­ããã£åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+		"fields":[
+			{
+				"arrayCount":3,
+				"description":"ã¡ã¼ã«ã¼ã³ã¼ã",
+				"fields":[
+					
+				],
+				"identifer":"ManufacturerCode",
+				"initialValue":null,
+				"isArray":true,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã"
+			}
+		],
+		"identifer":"ManufacturerCode",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":138,
+		"required":[
+			"RULE_GET"
+		],
+		"size":3,
+		"type":"manufacturer_code_t",
+		"unitDescription":null,
+		"valueDescription":"(ECHONETã³ã³ã½ã¼ã·ã¢ã ã§è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":3,
+		"description":"äºæ¥­å ´ã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"BusinessFacilityCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":139,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"ååã³ã¼ã",
+		"fields":[
+			
+		],
+		"identifer":"ProductCode",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":140,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":12,
+		"description":"è£½é çªå·",
+		"fields":[
+			
+		],
+		"identifer":"ProductionNumber",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":141,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"(åã¡ã¼ã«æ¯ã«è¦å®ã)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"è£½é å¹´ææ¥",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"ProductionDate",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":142,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¯é»åä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerSavingOperationSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":143,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=ç¯é»åä½ä¸­,0x42=éå¸¸åä½ä¸­"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é éæä½è¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PositionInformation",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":147,
+		"required":[
+			"NONE"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"0x41=å
+¬è¡åç·æªçµç±æä½,0x42=å
+¬è¡åç·çµç±æä½"
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨æå»è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Hour",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x00ï½0x17(0ï½23)"
+			},
+			{
+				"arrayCount":0,
+				"description":"å",
+				"fields":[
+					
+				],
+				"identifer":"Minute",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"å",
+				"valueDescription":"0x00ï½0x3B(0ï½59)"
+			}
+		],
+		"identifer":"CurrentTimeSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":151,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"hour_minute_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç¾å¨å¹´ææ¥è¨­å®",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"å¹´",
+				"fields":[
+					
+				],
+				"identifer":"Year",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":2,
+				"type":"uint16_t",
+				"unitDescription":"å¹´",
+				"valueDescription":"0x0001ï½0x270F(1ï½9999)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ",
+				"fields":[
+					
+				],
+				"identifer":"Mounth",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ",
+				"valueDescription":"0x01ï½0x0C(1ï½12)"
+			},
+			{
+				"arrayCount":0,
+				"description":"æ¥",
+				"fields":[
+					
+				],
+				"identifer":"Day",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":"æ¥",
+				"valueDescription":"0x01ï½0x1F(1ï½31)"
+			}
+		],
+		"identifer":"CurrentDateSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":152,
+		"required":[
+			"NONE"
+		],
+		"size":4,
+		"type":"year_mounth_day_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_SET",
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"é»åå¶éè¨­å®",
+		"fields":[
+			
+		],
+		"identifer":"PowerLimitSetting",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":true,
+		"propertyCode":153,
+		"required":[
+			"NONE"
+		],
+		"size":2,
+		"type":"uint16_t",
+		"unitDescription":null,
+		"valueDescription":"0x0000ï½0xFFFF(0ï½65535W)"
+	},
+	{
+		"access":[
+			"RULE_GET"
+		],
+		"arrayCount":0,
+		"description":"ç©ç®éè»¢æé",
+		"fields":[
+			{
+				"arrayCount":0,
+				"description":"åä½",
+				"fields":[
+					
+				],
+				"identifer":"Unit",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":1,
+				"type":"uint8_t",
+				"unitDescription":null,
+				"valueDescription":"0x41=ç§,0x42=å,0x43=æ,0x44=æ¥"
+			},
+			{
+				"arrayCount":0,
+				"description":"çµéæé",
+				"fields":[
+					
+				],
+				"identifer":"ElapsedTime",
+				"initialValue":null,
+				"isArray":false,
+				"primitive":true,
+				"size":4,
+				"type":"uint32_t",
+				"unitDescription":null,
+				"valueDescription":"0x00000000ï½0xFFFFFFFF(0ï½4294967295)"
+			}
+		],
+		"identifer":"CumulativeOperatingTime",
+		"initialValue":null,
+		"isArray":false,
+		"primitive":false,
+		"propertyCode":154,
+		"required":[
+			"NONE"
+		],
+		"size":5,
+		"type":"cumulative_operating_time_t",
+		"unitDescription":null,
+		"valueDescription":""
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":155,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ï¼­ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetMPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":156,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ç¶å¤ã¢ãã¦ã³ã¹ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"StatusChangeAnnouncementPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":157,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼³ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"SetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":158,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	},
+	{
+		"access":[
+			"RULE_GET",
+			"VARIABLE"
+		],
+		"arrayCount":17,
+		"description":"ï¼§ï½
+ï½ãã­ããã£ããã",
+		"fields":[
+			
+		],
+		"identifer":"GetPropertyMap",
+		"initialValue":null,
+		"isArray":true,
+		"primitive":true,
+		"propertyCode":159,
+		"required":[
+			"RULE_GET"
+		],
+		"size":1,
+		"type":"uint8_t",
+		"unitDescription":null,
+		"valueDescription":"ä»é²1.åç
+§"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/imgs/core-s.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/imgs/core-s.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/imgs/core-s.svg	(revision 101)
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Microsoft Visio 11.0ãSVG Export v1.0 ã«ããçæ core-s_.svg Page-1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
+		xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="0.678893in" height="0.19685in"
+		viewBox="0 0 48.8803 14.1732" xml:space="preserve" color-interpolation-filters="sRGB" class="st2">
+	<v:documentProperties v:langID="1041" v:metric="true" v:viewMarkup="false"/>
+
+	<style type="text/css">
+	<![CDATA[
+		.st1 {fill:#000000;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+		.st2 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
+	]]>
+	</style>
+
+	<g v:mID="0" v:index="1" v:groupContext="foregroundPage">
+		<title>Page-1</title>
+		<v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394"
+				v:shadowOffsetY="-8.50394"/>
+		<g id="group2-1" v:mID="2" v:groupContext="group">
+			<title>ã·ã¼ã.2</title>
+			<g id="shape9-2" v:mID="9" v:groupContext="shape" transform="translate(-2.9976E-015,-0.475439)">
+				<title>ã·ã¼ã.9</title>
+				<path d="M11.65 1.94 L10.74 6.54 L10.01 6.53 C10.02 6.3 10.01 6.01 10.01 5.65 C10.01 3.38 8.52 2.29 7.2 2.29 C4.07
+							 2.29 2.69 7 2.69 9.89 C2.69 10.29 2.75 13.21 5.81 13.21 C7.93 13.21 8.93 11.56 9.53 10.04 L10.27 10.41
+							 C9.44 12.59 7.81 14.17 5.1 14.17 C2.38 14.17 -0 12.67 0 9.39 C0 4.15 3.62 1.43 6.55 1.43 C8.72 1.43
+							 9.56 2.34 10.18 2.89 C10.54 2.63 10.76 2.33 10.95 1.94 L11.65 1.94 Z" class="st1"/>
+			</g>
+			<g id="shape10-4" v:mID="10" v:groupContext="shape" transform="translate(11.6161,-0.616786)">
+				<title>ã·ã¼ã.10</title>
+				<path d="M4.82 5.8 C6.17 5.8 8.44 6.82 8.44 9.33 C8.44 11.58 6.84 14.17 3.6 14.17 C0.77 14.17 0 12.12 0 10.74 C-0
+							 6.44 3.92 5.8 4.82 5.8 ZM4.82 6.53 C3.03 6.53 2.18 11 2.18 11.8 C2.18 13.07 2.89 13.59 3.53 13.59 C4.95
+							 13.59 6.23 10.74 6.23 8.26 C6.23 6.57 5.27 6.53 4.82 6.53 Z" class="st1"/>
+			</g>
+			<g id="shape11-6" v:mID="11" v:groupContext="shape" transform="translate(21.7674,-0.770983)">
+				<title>ã·ã¼ã.11</title>
+				<path d="M0.55 6.44 L3.66 6.28 L2.96 9.69 C3.5 8.49 4.39 6.12 6.33 6.12 C7.68 6.12 8.03 7.03 8.03 7.52 C8.03 8.26
+							 7.62 8.84 6.87 8.84 C6.63 8.84 5.85 8.62 5.85 7.98 C5.85 7.65 5.99 7.66 5.99 7.26 C5.99 7.12 5.72 7.12
+							 5.69 7.12 C3.94 7.12 2.54 12.54 2.21 14.17 L0 14.17 C0 14.17 1.57 8.71 1.57 8.03 C1.57 7.21 0.66 7.08
+							 0.33 7.08 L0.55 6.44 Z" class="st1"/>
+			</g>
+			<g id="shape12-8" v:mID="12" v:groupContext="shape" transform="translate(30.184,-0.668185)">
+				<title>ã·ã¼ã.12</title>
+				<path d="M2.42 10.96 C2.42 11.56 2.2 13.3 3.94 13.3 C5.11 13.3 5.94 12.5 6.49 11.92 L7.04 12.28 C5.91 13.45 4.92
+							 14.17 3.35 14.17 C2.08 14.17 -0 13.61 0 11.18 C-0 7.84 2.69 5.81 5.29 5.81 C7.07 5.81 7.54 6.9 7.54
+							 7.8 C7.54 9.95 3.39 10.79 2.42 10.96 ZM2.45 10.29 C5.05 9.71 5.4 8.13 5.4 7.74 C5.4 7.31 5.38 6.51 4.65
+							 6.51 C3.43 6.51 2.92 8.38 2.45 10.29 Z" class="st1"/>
+			</g>
+			<g id="shape13-10" v:mID="13" v:groupContext="shape" transform="translate(37.1485,2.84217E-014)">
+				<title>ã·ã¼ã.13</title>
+				<path d="M1.26 11.38 C1.26 13.42 4.12 13.51 4.38 13.51 C7.5 13.48 8.28 11.68 8.28 10.61 C8.28 9.53 7.79 8.98 6.24
+							 8.46 C5.5 8.2 4.25 7.94 4.25 7.12 C4.25 6.18 5.67 5.76 6.08 5.76 C6.72 5.76 7.08 5.9 7.08 6.22 C7.08
+							 6.46 6.78 6.5 6.78 7.23 C6.78 7.81 7.38 8.01 7.75 8.01 C8.11 8.01 8.79 7.75 8.79 6.98 C8.79 5.82 7.57
+							 5.11 6.12 5.11 C4.24 5.11 2.29 5.83 2.29 7.95 C2.29 9.39 3.33 9.68 4.61 10.14 C5.15 10.33 6.24 10.59
+							 6.24 11.47 C6.24 12.35 5.23 12.76 4.32 12.77 C3.47 12.79 2.75 12.31 3.01 11.99 C3.25 11.68 3.35 11.49
+							 3.37 11.19 C3.38 10.72 3.16 10.16 2.42 10.16 C1.53 10.16 1.26 10.77 1.26 11.38 ZM7.9 14.17 L0 14.17
+							 L3.83 -0 L11.73 -0 L7.9 14.17 Z" class="st1"/>
+			</g>
+		</g>
+	</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/index.html
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/index.html	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/index.html	(revision 101)
@@ -0,0 +1,145 @@
+﻿<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <title>コントローラWebアプリケーション</title>
+    <link rel="shortcut icon" href="favicon.ico">
+	<link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile.icons-1.4.5.min.css">
+    <link rel="stylesheet" href="themes/ecn-theme.min.css">
+	<link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile.structure-1.4.5.min.css">
+	<link rel="stylesheet" href="http://cdn.jtsage.com/datebox/1.4.5/jqm-datebox-1.4.5.css" />
+    <link rel="stylesheet" href="css/ecn_gen.css">
+	<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
+	<script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
+    <script src="js/mscorlib.min.js"></script>
+    <script src="js/linq.min.js"></script>
+	<script src="http://cdn.jtsage.com/datebox/1.4.5/jqm-datebox-1.4.5.core.min.js"></script>
+	<script src="http://cdn.jtsage.com/datebox/1.4.5/jqm-datebox-1.4.5.mode.calbox.min.js"></script>
+	<script src="http://cdn.jtsage.com/datebox/1.4.5/jqm-datebox-1.4.5.mode.datebox.min.js"></script>
+	<script src="http://cdn.jtsage.com/datebox/i18n/jqm-datebox.lang.utf8.js"></script>
+    <script src="js/nisews.js"></script>
+    <script src="js/ctrlui.js"></script>
+    <script type="text/javascript">
+        if (typeof window.external.CreateXMLHttpRequest != "undefined") {
+            window.XMLHttpRequest = function () {
+                return window.external.CreateXMLHttpRequest();
+            }
+            global.WebSocket = function (url, protocol) {
+                return window.external.CreateWebSocket(url, protocol);
+            }
+            window.onerror = function (msg, src, line, column, _exc) {
+                var exc = window.external.new_object();
+                for (m in _exc) {
+                    window.external.object_add(exc, m, _exc[m]);
+                }
+                window.external.onerror(msg, src, line, column, exc);
+            }
+            window.external.Error = window.Error;
+            window.Error = function () {
+                var nullPtr = null;
+                nullPtr(); // スタックトレースを表示するためnull参照
+                return window.external.new_error();
+            }
+            ss.Debug.writeln = function (text) {
+                window.external.output_debug_string(text);
+            }
+            console.log = function (text) {
+                window.external.output_debug_string(text);
+            }
+        }
+        else {
+            global.WebSocket = function (url, protocol) {
+                return new NiseWebSocket(url, protocol);
+            }
+        }
+        CtrlUI.main();
+    </script>
+</head>
+<body>
+    <div data-role="page" id="index">
+        <div data-role="header">
+            <h1 id="header_logo" style="margin: 0px; text-align: left; background-color: white;">
+                <a target='_blank' href="http://www.toppers.jp/index.html">
+                    <img src="./imgs/logo.gif" width="353" height="74" border="0" alt="TOPPERS LOGO">
+                </a>
+            </h1>
+            <a data-role="button" href="#information" data-rel="popup" data-icon="info" class="ui-btn-right"
+               style="-webkit-border-radius: 6em; border-radius: 6em;"
+               onclick="CtrlUI.info.update(this, 'information');">情報
+            </a>
+        </div>
+        <h2><strong>TOPPERS/ECNL</strong>コントローラWebアプリケーション</h2>
+        <div data-role="panel" class="ecn-navmenu-panel" data-position="left" data-display="overlay" style="background-color: #f9f9f9;">
+            <div class="ui-field-contain" id="fs_connection_ctn">
+                <label for="fs_connection">接続</label>
+                <input type="checkbox" name="fs_connection" id="fs_connection" data-role="flipswitch" data-on-text="On" data-off-text="Off">
+            </div>
+            <button id="bt_search" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-alert ui-btn-c"
+                    onclick="CtrlUI.page.search(this);">
+                機器検索
+            </button>
+            <h2>インスタンス</h2>
+            <div id="node_list" data-role="collapsibleset" data-inset="true" data-collapsed-icon="carat-r" data-expanded-icon="carat-d">
+            </div>
+            <button id="bt_set_property" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-star ui-btn-c">
+                設定
+            </button>
+            <button id="bt_get_property" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-eye ui-btn-c">
+                取得
+            </button>
+            <button id="bt_set_get_property" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-recycle ui-btn-c">
+                設定と取得
+            </button>
+            <button id="bt_kadecot" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-action ui-btn-b">
+                Kadecot App list
+            </button>
+        </div>
+        <div role="main" class="ui-content ecn-content">
+            <ul id="lv_property_list" data-role="listview" data-inset="true"></ul>
+        </div>
+        <div data-role="footer" data-position="fixed">
+            <p style="padding-left: 1em">
+                Copyright &copy; 2015 by TOPPERS Project, Inc. All Rights Reserved.
+            </p>
+            <a data-role="button" href="#setting_panel" data-icon="gear" class="ui-btn-right"
+               style="-webkit-border-radius: 6em; border-radius: 6em;">設定
+            </a>
+        </div>
+        <div data-role="popup" id="popup_dialog" data-overlay-theme="b" data-theme="b" data-dismissible="false" style="max-width: 400px;">
+            <div data-role="header" data-theme="a">
+                <h1 id="popup_dialog_caption">エラー</h1>
+            </div>
+            <div role="main" class="ui-content">
+                <h3 id="popup_dialog_title" class="ui-title">エラー</h3>
+                <p id="popup_dialog_text">エラー</p>
+                <a href="#" class="ui-btn ui-corner-all ui-shadow ui-btn-b" data-rel="back">OK</a>
+            </div>
+        </div>
+        <div id="information-screen"></div>
+        <div id="information-popup">
+            <div data-role="popup" id="information" data-theme="b">
+                <img src="js/images/ajax-loader.gif" />
+            </div>
+        </div>
+        <div data-role="panel" id="setting_panel" data-position="right" data-display="overlay" data-theme="b">
+            <h3>設定</h3>
+			<label for="txt_mac_addr">MACアドレス</label>
+            <input name="txt_mac_addr" id="txt_mac_addr" value="12:34:56:78:9A:BC" type="text">
+            <button id="bt_set_init_params" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-check ui-btn-c">
+                設定
+            </button>
+			<button id="bt_get_init_params" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-check ui-btn-c">
+				取得
+			</button>
+            <h3>ライセンス</h3>
+            <p>
+                このサイトは<a target='_blank' href="http://www.toppers.jp/license.html">TOPPERSライセンス</a>で公開しています。<br>
+                このサイトは、いくつかのJavaScriptライブラリを使用しています。サイト右上のソフトウェア情報をご覧ください。
+            </p>
+            <a href="#" data-rel="close" class="ui-btn ui-shadow ui-corner-all ui-btn-a ui-icon-delete ui-btn-icon-left ui-btn-inline">閉じる</a>
+        </div>
+    </div>
+</body>
+</html>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/information.json
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/information.json	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/information.json	(revision 101)
@@ -0,0 +1,28 @@
+[
+	{
+		"title": "TOPPERS/ECNL ã³ã³ãã­ã¼ã©ã¼",
+		"version": "1.A.0 Î±ç",
+		"note": "APPENDIX ECHONETæ©å¨ãªãã¸ã§ã¯ãè©³ç´°è¦å® Release C"
+	},
+	{
+		"title": "jQuery",
+		"version": "1.10.2",
+		"link": "http://jquery.com"
+	},
+	{
+		"title": "jQuery Mobile",
+		"version": "1.4.5",
+		"link": "http://jquerymobile.com"
+	},
+	{
+		"title": "Saltarelle C# to JavaScript Compiler",
+		"version": "2.6.2",
+		"link": "http://www.saltarelle-compiler.com"
+	},
+	{
+		"title": "Unityç¨Kadecot WAMPã©ã¤ãã©ãª",
+		"version": "2014/11/28ç",
+		"link": "http://kadecot.net/blog/2842/",
+		"note": "ãKadecotãã¯æ ªå¼ä¼ç¤¾ã½ãã¼ã³ã³ãã¥ã¼ã¿ãµã¤ã¨ã³ã¹ç ç©¶æã®åæ¨ã§ãã"
+	}
+]
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/ctrlui.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/ctrlui.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/ctrlui.js	(revision 101)
@@ -0,0 +1,5744 @@
+﻿(function() {
+	'use strict';
+	var $asm = {};
+	global.control = global.control || {};
+	global.ctrlui = global.ctrlui || {};
+	global.Kadecot = global.Kadecot || {};
+	ss.initAssembly($asm, 'EcnlControllerUI');
+	////////////////////////////////////////////////////////////////////////////////
+	// CtrlUI
+	var $CtrlUI = function() {
+		this.$read = new (ss.makeGenericType(ss.Dictionary$2, [$ctrlui_DeviceController$DeviceInfo, $ctrlui_DeviceController$DeviceInfo]))();
+		this.$m_WampClient = null;
+		this.$m_DeviceController = null;
+		this.$_m_CurrentNode = null;
+		this.$timerId = 0;
+		this.$dpi = null;
+		this.$m_WampClient = new $Kadecot_WampClient();
+		this.$m_WampClient.addOpenCallback(ss.mkdel(this, this.$wampClientConnected));
+		this.$m_WampClient.addCloseCallback(ss.mkdel(this, this.$wampClientDisconnected));
+		this.$m_WampClient.connect('ws://' + window.location.host + '/webapi.ashx');
+	};
+	$CtrlUI.__typeName = 'CtrlUI';
+	$CtrlUI.main = function() {
+		if (ss.isNullOrUndefined($CtrlUI.page)) {
+			$CtrlUI.page = new $CtrlUI();
+			$CtrlUI.info = new $ctrlui_Information();
+		}
+		$(document).on('pageinit', '#index', ss.mkdel($CtrlUI.page, $CtrlUI.page.$initClassGroups$1));
+	};
+	$CtrlUI.getPage = function(ele) {
+		var page = ele;
+		if ($(page).is('[data-role="page"]')) {
+			return page;
+		}
+		if ($(page).parents('[data-role="page"]').length === 1) {
+			return $(page).parents('[data-role="page"]').get(0);
+		}
+		return null;
+	};
+	$CtrlUI.$ajaxError = function(request, textStatus, error, url) {
+		var sep = new RegExp('(\r\n|\r|\n)');
+		var lines = [];
+		lines.push(textStatus);
+		if (ss.isInstanceOfType(error, String)) {
+			lines.push(ss.cast(error, String));
+		}
+		else {
+			lines.push(ss.cast(error.message, String));
+			var stack = ss.cast(error.stack, String);
+			ss.arrayAddRange(lines, stack.split(sep));
+		}
+		var html = $('<p>');
+		for (var $t1 = 0; $t1 < lines.length; $t1++) {
+			var line = lines[$t1];
+			if (ss.isValue(sep.exec(line))) {
+				continue;
+			}
+			html.append(document.createTextNode(line).wholeText);
+			html.append($('<br/>'));
+		}
+		html.append(url + 'の読み込みに失敗しました');
+		$('#popup_dialog_caption').text('通信エラー');
+		$('#popup_dialog_title').text('通信エラーが発生しました');
+		$('#popup_dialog_text').html(html);
+		$('#popup_dialog').popup('open', { transition: 'slidedown' });
+	};
+	global.CtrlUI = $CtrlUI;
+	////////////////////////////////////////////////////////////////////////////////
+	// ElementExtensions
+	var $ElementExtensions = function() {
+	};
+	$ElementExtensions.__typeName = 'ElementExtensions';
+	global.ElementExtensions = $ElementExtensions;
+	////////////////////////////////////////////////////////////////////////////////
+	// jQueryMobile
+	var $jQueryMobile = function() {
+	};
+	$jQueryMobile.__typeName = 'jQueryMobile';
+	global.jQueryMobile = $jQueryMobile;
+	////////////////////////////////////////////////////////////////////////////////
+	// LoadingOption
+	var $LoadingOption = function() {
+		this.text = null;
+		this.textVisible = false;
+	};
+	$LoadingOption.__typeName = 'LoadingOption';
+	$LoadingOption.$ctor1 = function(text, textVisible) {
+		this.text = null;
+		this.textVisible = false;
+		this.text = text;
+		this.textVisible = textVisible;
+	};
+	global.LoadingOption = $LoadingOption;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.KeyPress
+	var $control_KeyPress = function() {
+	};
+	$control_KeyPress.__typeName = 'control.KeyPress';
+	global.control.KeyPress = $control_KeyPress;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UI
+	var $control_UI = function() {
+	};
+	$control_UI.__typeName = 'control.UI';
+	$control_UI.getDeviceInfo = function(dc, dev, device) {
+		var di = new $ctrlui_DeviceController$DeviceInfo.$ctor1(dc, dev);
+		di.set_data(device);
+		if (ss.isValue(dc)) {
+			for (var $t1 = 0; $t1 < dev.properties.length; $t1++) {
+				var prop = { $: dev.properties[$t1] };
+				var epi = Enumerable.from(dc.properties).firstOrDefault(ss.mkdel({ prop: prop }, function(p) {
+					return p.propertyCode === this.prop.$.epc;
+				}), ss.getDefaultValue($ctrlui_JsonPropertyInfo));
+				if (ss.isNullOrUndefined(epi)) {
+					continue;
+				}
+				di.get_properties().push(new $ctrlui_DeviceController$DevicePropertyInfo(epi, prop.$));
+			}
+		}
+		return di;
+	};
+	$control_UI.getAllDevices = function(args) {
+		var devs = ss.cast(ss.cast(args, Array)[4].deviceList, Array);
+		var alldevs = [];
+		var nodes = new (ss.makeGenericType(ss.Dictionary$2, [String, Array]))();
+		for (var $t1 = 0; $t1 < devs.length; $t1++) {
+			var dev = devs[$t1];
+			var device = new $ctrlui_WampApiKadecotDevice(dev);
+			var devices = {};
+			if (nodes.tryGetValue(device.ip_addr, devices)) {
+				devices.$.push(device);
+			}
+			else {
+				devices.$ = [];
+				devices.$.push(device);
+				nodes.set_item(device.ip_addr, devices.$);
+			}
+			alldevs.push(device);
+		}
+		return alldevs;
+	};
+	$control_UI.toJSClassGroupInfoList = function(data) {
+		var _classGroups = ss.cast((ss.referenceEquals(ss.getInstanceType(data), String) ? $.parseJSON(ss.cast(data, String)) : data), Array);
+		var classGroups = [];
+		for (var $t1 = 0; $t1 < _classGroups.length; $t1++) {
+			var _item = _classGroups[$t1];
+			var item = new $ctrlui_JsonClassGroupInfo(_item);
+			classGroups.push(item);
+		}
+		return classGroups;
+	};
+	$control_UI.toJSClassInfoList = function(data, classGroup) {
+		var _classes = ss.cast((ss.referenceEquals(ss.getInstanceType(data), String) ? $.parseJSON(ss.cast(data, String)) : data), Array);
+		var classes = [];
+		var eclass;
+		for (var $t1 = 0; $t1 < _classes.length; $t1++) {
+			var _item = _classes[$t1];
+			eclass = new $ctrlui_JsonClassInfo(_item);
+			eclass.classGroup = classGroup;
+			classes.push(eclass);
+		}
+		return classes;
+	};
+	$control_UI.toJSPropertyInfoList = function(data) {
+		var _properties = ss.cast((ss.referenceEquals(ss.getInstanceType(data), String) ? $.parseJSON(ss.cast(data, String)) : data), Array);
+		var properties = [];
+		for (var $t1 = 0; $t1 < _properties.length; $t1++) {
+			var _item = _properties[$t1];
+			var item = new $ctrlui_JsonPropertyInfo.$ctor1(_item);
+			properties.push(item);
+		}
+		return properties;
+	};
+	$control_UI.disable = function(obj, flag) {
+		if (flag) {
+			obj.attr('disabled', 'disabled');
+		}
+		else {
+			obj.removeAttr('disabled');
+		}
+		return obj;
+	};
+	$control_UI.toggleClass = function(obj, deleteClass, addClass) {
+		obj.toggleClass(deleteClass, false);
+		obj.toggleClass(addClass, true);
+		return obj;
+	};
+	$control_UI.getDeviceBtn = function(di) {
+		return $control_UI.getDeviceLi(di).children('a');
+	};
+	$control_UI.getDeviceLi = function(di) {
+		return $('#li_device_' + di.getObjectID());
+	};
+	$control_UI.isRULE_SET = function(dpi) {
+		return (ss.isNullOrUndefined(dpi.get_propertyInfo()) ? false : ss.contains(dpi.get_propertyInfo().access, 'RULE_SET'));
+	};
+	global.control.UI = $control_UI;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIAnchor
+	var $control_UIAnchor = function() {
+		$control_UIObject.$ctor1.call(this, '<a>');
+	};
+	$control_UIAnchor.__typeName = 'control.UIAnchor';
+	$control_UIAnchor.$ctor1 = function(text) {
+		$control_UIAnchor.call(this);
+		this.set_text(text);
+	};
+	$control_UIAnchor.$ctor2 = function(uiobject) {
+		$control_UIAnchor.call(this);
+		this.append(uiobject);
+	};
+	global.control.UIAnchor = $control_UIAnchor;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIBackButton
+	var $control_UIBackButton = function() {
+		$control_UIButton.call(this);
+		this.set_buttonIcon(2);
+		this.set_title('元に戻す');
+		this.set_tabIndex(-1);
+		this.addClass('text_backButton');
+		this.object.hide();
+	};
+	$control_UIBackButton.__typeName = 'control.UIBackButton';
+	global.control.UIBackButton = $control_UIBackButton;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIButton
+	var $control_UIButton = function() {
+		$control_UIObject.$ctor1.call(this, '<a>');
+		this.set_button(true);
+		this.set_noText(true);
+		this.set_href('#');
+		this.set_cornerAll(true);
+	};
+	$control_UIButton.__typeName = 'control.UIButton';
+	global.control.UIButton = $control_UIButton;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIButton.Icon
+	var $control_UIButton$Icon = function() {
+	};
+	$control_UIButton$Icon.__typeName = 'control.UIButton$Icon';
+	global.control.UIButton$Icon = $control_UIButton$Icon;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UICalBox
+	var $control_UICalBox = function() {
+		$control_UITextInput.call(this);
+		this.set_dataRole('datebox');
+		this.set_dataOptions(ss.mkdict(['mode', 'calbox']));
+		this.set_dataClearBtn(false);
+		this.on('dateboxcreate', ss.thisFix(ss.mkdel(this, this.$dateBoxCreate)));
+	};
+	$control_UICalBox.__typeName = 'control.UICalBox';
+	global.control.UICalBox = $control_UICalBox;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UICalBox.UIInputDate
+	var $control_UICalBox$UIInputDate = function(ev) {
+		$control_UIObject.call(this);
+		this.object = $(ev.target).parent('.ui-input-datebox');
+	};
+	$control_UICalBox$UIInputDate.__typeName = 'control.UICalBox$UIInputDate';
+	global.control.UICalBox$UIInputDate = $control_UICalBox$UIInputDate;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UICollapsibleset
+	var $control_UICollapsibleset = function() {
+		$control_UIObject.$ctor1.call(this, '<div>');
+		this.set_dataRole('collapsible');
+	};
+	$control_UICollapsibleset.__typeName = 'control.UICollapsibleset';
+	$control_UICollapsibleset.$ctor2 = function(attr, h2) {
+		$control_UICollapsibleset.call(this);
+		this.attribute(attr);
+		this.append(new $control_UIH.$ctor2(2, h2));
+	};
+	$control_UICollapsibleset.$ctor1 = function(h2) {
+		$control_UICollapsibleset.call(this);
+		this.append(new $control_UIH.$ctor2(2, h2));
+	};
+	global.control.UICollapsibleset = $control_UICollapsibleset;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIDeviceController
+	var $control_UIDeviceController = function() {
+		this.deviceController = null;
+	};
+	$control_UIDeviceController.__typeName = 'control.UIDeviceController';
+	global.control.UIDeviceController = $control_UIDeviceController;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIDeviceController.UIDeviceInfo
+	var $control_UIDeviceController$UIDeviceInfo = function() {
+		this.page = null;
+		this.di = null;
+		this.$elements = null;
+	};
+	$control_UIDeviceController$UIDeviceInfo.__typeName = 'control.UIDeviceController$UIDeviceInfo';
+	global.control.UIDeviceController$UIDeviceInfo = $control_UIDeviceController$UIDeviceInfo;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIDeviceController.UIDevicePropertyInfo
+	var $control_UIDeviceController$UIDevicePropertyInfo = function() {
+		this.$grpbox = null;
+		this.$dpi = null;
+	};
+	$control_UIDeviceController$UIDevicePropertyInfo.__typeName = 'control.UIDeviceController$UIDevicePropertyInfo';
+	global.control.UIDeviceController$UIDevicePropertyInfo = $control_UIDeviceController$UIDevicePropertyInfo;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIDiv
+	var $control_UIDiv = function() {
+		$control_UIObject.$ctor1.call(this, '<div>');
+	};
+	$control_UIDiv.__typeName = 'control.UIDiv';
+	global.control.UIDiv = $control_UIDiv;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIEventHandler
+	var $control_UIEventHandler = function() {
+	};
+	$control_UIEventHandler.__typeName = 'control.UIEventHandler';
+	$control_UIEventHandler.loadingShow = function(ev) {
+		$.mobile.loading('show');
+	};
+	$control_UIEventHandler.loadingHide = function(ev) {
+		$.mobile.loading('hide');
+	};
+	global.control.UIEventHandler = $control_UIEventHandler;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIEventNames
+	var $control_UIEventNames = function() {
+	};
+	$control_UIEventNames.__typeName = 'control.UIEventNames';
+	global.control.UIEventNames = $control_UIEventNames;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIFieldContain
+	var $control_UIFieldContain = function() {
+		this.label = null;
+		this.input = null;
+		$control_UIObject.$ctor1.call(this, '<div>');
+		this.set_dataRole('fieldcontain');
+	};
+	$control_UIFieldContain.__typeName = 'control.UIFieldContain';
+	$control_UIFieldContain.$ctor1 = function(uiobject) {
+		$control_UIFieldContain.call(this);
+		this.append(uiobject);
+	};
+	$control_UIFieldContain.$ctor2 = function(label, uiobject) {
+		$control_UIFieldContain.call(this);
+		this.label = label;
+		this.input = uiobject;
+		this.append(this.label);
+		this.append(this.input);
+	};
+	global.control.UIFieldContain = $control_UIFieldContain;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIFieldSet
+	var $control_UIFieldSet = function() {
+		this.radioList = null;
+		this.$_ControlGroup = false;
+		this.$_Horizontal = false;
+		$control_UIObject.$ctor1.call(this, '<fieldset>');
+		this.set_controlGroup(true);
+	};
+	$control_UIFieldSet.__typeName = 'control.UIFieldSet';
+	$control_UIFieldSet.$ctor1 = function(horizontal) {
+		$control_UIFieldSet.call(this);
+		this.set_horizontal(horizontal);
+	};
+	global.control.UIFieldSet = $control_UIFieldSet;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIFieldSet.RadioInput
+	var $control_UIFieldSet$RadioInput = function(Label, Radio) {
+		this.radio = null;
+		this.label = null;
+		this.radio = Radio;
+		this.label = Label;
+	};
+	$control_UIFieldSet$RadioInput.__typeName = 'control.UIFieldSet$RadioInput';
+	global.control.UIFieldSet$RadioInput = $control_UIFieldSet$RadioInput;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIFlipSwitch
+	var $control_UIFlipSwitch = function() {
+		this.ON = null;
+		this.OFF = null;
+		$control_UIObject.$ctor1.call(this, '<select>');
+		this.set_dataRole('flipswitch');
+		//base.Append(new UIOption());
+		//base.Append(new UIOption());
+	};
+	$control_UIFlipSwitch.__typeName = 'control.UIFlipSwitch';
+	$control_UIFlipSwitch.$ctor1 = function(off, on) {
+		$control_UIFlipSwitch.call(this);
+		this.OFF = off;
+		this.ON = on;
+		this.append(this.OFF);
+		this.append(this.ON);
+	};
+	global.control.UIFlipSwitch = $control_UIFlipSwitch;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIGridA
+	var $control_UIGridA = function() {
+		this.blockA = new $control_UIGridA$UIBlockA();
+		this.blockB = new $control_UIGridA$UIBlockB();
+		$control_UIObject.$ctor1.call(this, '<div>');
+		this.object.addClass('ui-grid-a');
+		this.append(this.blockA);
+		this.append(this.blockB);
+	};
+	$control_UIGridA.__typeName = 'control.UIGridA';
+	global.control.UIGridA = $control_UIGridA;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIGridA.UIBlockA
+	var $control_UIGridA$UIBlockA = function() {
+		$control_UIObject.$ctor1.call(this, '<div>');
+		this.object.addClass('ui-block-a');
+	};
+	$control_UIGridA$UIBlockA.__typeName = 'control.UIGridA$UIBlockA';
+	global.control.UIGridA$UIBlockA = $control_UIGridA$UIBlockA;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIGridA.UIBlockB
+	var $control_UIGridA$UIBlockB = function() {
+		$control_UIObject.$ctor1.call(this, '<div>');
+		this.object.addClass('ui-block-b');
+	};
+	$control_UIGridA$UIBlockB.__typeName = 'control.UIGridA$UIBlockB';
+	global.control.UIGridA$UIBlockB = $control_UIGridA$UIBlockB;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIGrpBox
+	var $control_UIGrpBox = function() {
+		this.$label = null;
+		this.$user = true;
+		this.$dpi = null;
+		this.$liAside = null;
+		this.getValue = null;
+		this.fieldContain = null;
+		this.kadecotSet = null;
+		this.backButton = new $control_UIBackButton();
+		$control_UIListviewItem.call(this);
+		this.$liAside = new $control_UIP.$ctor2('', 'ui-li-aside');
+		this.append(this.$liAside);
+		this.change$1(ss.thisFix(ss.mkdel(this, this.grpBoxChange)));
+	};
+	$control_UIGrpBox.__typeName = 'control.UIGrpBox';
+	$control_UIGrpBox.$ctor1 = function(dpi) {
+		$control_UIGrpBox.call(this);
+		this.$dpi = dpi;
+		this.$label = new $control_UILabel.$ctor2(dpi);
+		this.$dpi.prepareInputInfo();
+		if (dpi.get_propertyCode() === 0) {
+		}
+		else if (dpi.get_propertyCode() === 151) {
+			this.$setTimebox();
+		}
+		else if (dpi.get_propertyCode() === 152) {
+			this.$setCalBox();
+		}
+		else if (this.$dpi.get_inputTypes().length === 0) {
+			this.$setTextInput();
+		}
+		else if (dpi.get_propertyCode() === 128 && dpi.get_inputTypes().length === 1 && dpi.get_inputTypes()[0].mode === 1) {
+			this.setFlipSwitch();
+		}
+		else {
+			var $t1 = dpi.get_inputTypes();
+			for (var $t2 = 0; $t2 < $t1.length; $t2++) {
+				var pii = $t1[$t2];
+				switch (pii.mode) {
+					case 1: {
+						{
+							this.$setFieldSet(pii);
+						}
+						break;
+					}
+					case 2: {
+						{
+							this.setRange(pii);
+						}
+						break;
+					}
+					default: {
+						{
+							this.setDefault();
+						}
+						break;
+					}
+				}
+			}
+		}
+	};
+	global.control.UIGrpBox = $control_UIGrpBox;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIH
+	var $control_UIH = function() {
+		$control_UIObject.$ctor1.call(this, '<h1>');
+	};
+	$control_UIH.__typeName = 'control.UIH';
+	$control_UIH.$ctor1 = function(i) {
+		$control_UIObject.$ctor1.call(this, '<h' + i.toString() + '>');
+	};
+	$control_UIH.$ctor2 = function(i, text) {
+		$control_UIH.$ctor1.call(this, i);
+		this.set_text(text);
+	};
+	global.control.UIH = $control_UIH;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIImg
+	var $control_UIImg = function() {
+		$control_UIObject.$ctor1.call(this, '<img>');
+	};
+	$control_UIImg.__typeName = 'control.UIImg';
+	$control_UIImg.$ctor1 = function(attr) {
+		$control_UIImg.call(this);
+		this.attribute(attr);
+	};
+	$control_UIImg.$ctor2 = function(nameValuePairs) {
+		$control_UIImg.call(this);
+		this.attribute(ss.mkdict(nameValuePairs));
+	};
+	global.control.UIImg = $control_UIImg;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UILabel
+	var $control_UILabel = function() {
+		$control_UIObject.$ctor1.call(this, '<label>');
+	};
+	$control_UILabel.__typeName = 'control.UILabel';
+	$control_UILabel.$ctor1 = function(text) {
+		$control_UILabel.call(this);
+		this.set_text(text);
+	};
+	$control_UILabel.$ctor3 = function(text, for1) {
+		$control_UILabel.$ctor1.call(this, text);
+		this.set_for(for1);
+	};
+	$control_UILabel.$ctor4 = function(text, for1, name) {
+		$control_UILabel.$ctor3.call(this, text, for1);
+		this.set_name(name);
+	};
+	$control_UILabel.$ctor2 = function(dpi) {
+		$control_UILabel.$ctor1.call(this, dpi.getText());
+		this.set_title(dpi.get_propertyInfo().valueDescription);
+	};
+	global.control.UILabel = $control_UILabel;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UILi
+	var $control_UILi = function() {
+		$control_UIObject.$ctor1.call(this, '<li>');
+	};
+	$control_UILi.__typeName = 'control.UILi';
+	global.control.UILi = $control_UILi;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIListDivider
+	var $control_UIListDivider = function() {
+		$control_UIListviewItem.call(this);
+		this.set_dataRole('list-divider');
+	};
+	$control_UIListDivider.__typeName = 'control.UIListDivider';
+	$control_UIListDivider.$ctor1 = function(text) {
+		$control_UIListDivider.call(this);
+		this.set_text(text);
+	};
+	$control_UIListDivider.$ctor2 = function(uiobject) {
+		$control_UIListDivider.call(this);
+		this.append(uiobject);
+	};
+	$control_UIListDivider.$ctor3 = function(object) {
+		$control_UIListDivider.call(this);
+		this.append$1(object);
+	};
+	global.control.UIListDivider = $control_UIListDivider;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIListview
+	var $control_UIListview = function() {
+		$control_UIObject.$ctor1.call(this, '<ul>');
+		this.set_dataRole('listview');
+	};
+	$control_UIListview.__typeName = 'control.UIListview';
+	$control_UIListview.$ctor1 = function(nameValuePairs) {
+		$control_UIListview.call(this);
+		this.attribute(ss.mkdict(nameValuePairs));
+	};
+	global.control.UIListview = $control_UIListview;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIListviewItem
+	var $control_UIListviewItem = function() {
+		$control_UIObject.$ctor1.call(this, '<li>');
+	};
+	$control_UIListviewItem.__typeName = 'control.UIListviewItem';
+	$control_UIListviewItem.$ctor1 = function(uiobject) {
+		$control_UIListviewItem.call(this);
+		this.append(uiobject);
+	};
+	global.control.UIListviewItem = $control_UIListviewItem;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UINodeList
+	var $control_UINodeList = function(NodeList, listitem_click) {
+		this.$info = null;
+		this.$info = new $control_UIDiv();
+		var identifer = '';
+		var $t1 = ss.getEnumerator(NodeList);
+		try {
+			while ($t1.moveNext()) {
+				var node = $t1.current();
+				var profile = node.get_profile();
+				if ($('#cl_node_' + identifer).length > 0) {
+					continue;
+				}
+				var col = new $control_UICollapsibleset.$ctor1(node.get_data().toString());
+				col.set_id('cl_node_' + identifer);
+				col.set_dataInset(true);
+				this.$info.append(col);
+				var listview = new $control_UIListview.$ctor1(['id', 'lv_node_' + identifer]);
+				col.append(listview);
+				var $t2 = node.get_devices();
+				for (var $t3 = 0; $t3 < $t2.length; $t3++) {
+					var item = { $: $t2[$t3] };
+					if (item.$.get_profile()) {
+						continue;
+					}
+					identifer = item.$.getObjectID();
+					if ($('#li_device_' + identifer).length > 0) {
+						continue;
+					}
+					var listitem = { $: new $control_UIListviewItem() };
+					listitem.$.set_id('li_device_' + identifer);
+					listitem.$.click$1(ss.thisFix(ss.mkdel({ item: item }, function(ele, ev) {
+						listitem_click(ele, ev, this.item.$);
+					})));
+					listview.append(listitem.$);
+					var anchor = new $control_UIAnchor();
+					anchor.set_href('#');
+					anchor.set_title(ss.cast(item.$.get_data(), $ctrlui_WampApiKadecotDevice).description);
+					anchor.set_text(ss.cast(item.$.get_data(), $ctrlui_WampApiKadecotDevice).nickname);
+					anchor.click$1(ss.thisFix(ss.mkdel({ listitem: listitem, item: item, $this: this }, function(ele1, ev1) {
+						this.$this.$listitem_Click(this.listitem.$, this.item.$);
+					})));
+					listitem.$.append(anchor);
+				}
+			}
+		}
+		finally {
+			$t1.dispose();
+		}
+	};
+	$control_UINodeList.__typeName = 'control.UINodeList';
+	global.control.UINodeList = $control_UINodeList;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIObject
+	var $control_UIObject = function() {
+		this.object = null;
+		this.$ecnlclass = 0;
+	};
+	$control_UIObject.__typeName = 'control.UIObject';
+	$control_UIObject.$ctor2 = function(uiobject) {
+		this.object = null;
+		this.$ecnlclass = 0;
+		this.object = uiobject.object;
+	};
+	$control_UIObject.$ctor3 = function(object) {
+		this.object = null;
+		this.$ecnlclass = 0;
+		this.object = object;
+	};
+	$control_UIObject.$ctor1 = function(html) {
+		this.object = null;
+		this.$ecnlclass = 0;
+		this.object = $(html);
+	};
+	global.control.UIObject = $control_UIObject;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIObject.EcnlClass
+	var $control_UIObject$EcnlClass = function() {
+	};
+	$control_UIObject$EcnlClass.__typeName = 'control.UIObject$EcnlClass';
+	global.control.UIObject$EcnlClass = $control_UIObject$EcnlClass;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIOption
+	var $control_UIOption = function() {
+		$control_UIObject.$ctor1.call(this, '<option>');
+	};
+	$control_UIOption.__typeName = 'control.UIOption';
+	$control_UIOption.$ctor2 = function(text, value) {
+		$control_UIOption.call(this);
+		this.set_text(text);
+		this.set_value(value);
+	};
+	$control_UIOption.$ctor1 = function(object) {
+		$control_UIObject.$ctor3.call(this, object);
+	};
+	global.control.UIOption = $control_UIOption;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIP
+	var $control_UIP = function() {
+		$control_UIObject.$ctor1.call(this, '<p>');
+	};
+	$control_UIP.__typeName = 'control.UIP';
+	$control_UIP.$ctor1 = function(text) {
+		$control_UIP.call(this);
+		this.set_text(text);
+	};
+	$control_UIP.$ctor2 = function(text, class1) {
+		$control_UIP.$ctor1.call(this, text);
+		this.addClass(class1);
+	};
+	global.control.UIP = $control_UIP;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIPin
+	var $control_UIPin = function() {
+		this.readButton = null;
+		this.uiPinMode = null;
+		this.range = null;
+		this.analogRead = null;
+		this.flipSwitch = null;
+		this.pin = 0;
+		this.listDivider = null;
+		$control_UILi.call(this);
+		this.addClass('pin');
+		this.listDivider = new $control_UIListDivider();
+		this.uiPinMode = new $control_UIFieldSet.$ctor1(true);
+		this.range = new $control_UIRangeInput();
+		this.readButton = new $control_UIButton();
+		this.readButton.set_title('取得');
+		this.readButton.set_buttonIcon(1);
+	};
+	$control_UIPin.__typeName = 'control.UIPin';
+	$control_UIPin.$ctor1 = function(pin) {
+		$control_UIPin.call(this);
+		this.pin = pin;
+		var Div = new $control_UIDiv();
+		Div.append(new $control_UIH.$ctor2(1, 'pin' + pin.toString()));
+		Div.append(this.readButton);
+		this.listDivider.append(Div);
+		this.$setUIPinMode(pin);
+		this.$setUIDigital(pin);
+		this.$setUIRange(pin);
+		if (pin >= 0 && pin <= 7) {
+			this.flipSwitch = new $control_UIFlipSwitch.$ctor1(new $control_UIOption.$ctor2('LOW', 'LOW'), new $control_UIOption.$ctor2('HIGH', 'HIGH'));
+			this.append(new $control_UIFieldContain.$ctor1(this.uiPinMode));
+			this.append(new $control_UIFieldContain.$ctor1(this.flipSwitch));
+			this.append(new $control_UIFieldContain.$ctor1(this.range));
+		}
+		else if (pin >= 8 && pin <= 13) {
+			this.flipSwitch = new $control_UIFlipSwitch.$ctor1(new $control_UIOption.$ctor2('LOW', 'LOW'), new $control_UIOption.$ctor2('HIGH', 'HIGH'));
+			this.append(new $control_UIFieldContain.$ctor1(this.uiPinMode));
+			this.append(new $control_UIFieldContain.$ctor1(this.flipSwitch));
+		}
+		else if (pin >= 14 && pin <= 19) {
+			this.$setAnalogRead(pin);
+			this.append(new $control_UIFieldContain.$ctor1(this.analogRead));
+		}
+	};
+	global.control.UIPin = $control_UIPin;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIRadioInput
+	var $control_UIRadioInput = function() {
+		$control_UIObject.$ctor1.call(this, '<input>');
+		this.object.attr('type', 'radio');
+	};
+	$control_UIRadioInput.__typeName = 'control.UIRadioInput';
+	$control_UIRadioInput.$ctor2 = function(id, name) {
+		$control_UIRadioInput.call(this);
+		this.set_id(id);
+		this.set_name(name);
+	};
+	$control_UIRadioInput.$ctor3 = function(id, name, value) {
+		$control_UIRadioInput.$ctor2.call(this, id, name);
+		this.set_value(value);
+	};
+	$control_UIRadioInput.$ctor1 = function(value) {
+		$control_UIRadioInput.call(this);
+		this.set_value(value);
+	};
+	global.control.UIRadioInput = $control_UIRadioInput;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIRangeInput
+	var $control_UIRangeInput = function() {
+		this.handle = false;
+		this.sliderHandle = null;
+		$control_UIObject.$ctor1.call(this, '<input>');
+		this.set_type('number');
+		this.set_dataType('range');
+		this.set_$dataHighlight(true);
+		this.keypress(ss.thisFix(ss.mkdel(this, this.$sliderKeypress)));
+		this.handle = true;
+		this.one('slidecreate', ss.thisFix(ss.mkdel(this, this.$sliderCreate)));
+	};
+	$control_UIRangeInput.__typeName = 'control.UIRangeInput';
+	$control_UIRangeInput.$ctor1 = function(min, max) {
+		$control_UIRangeInput.call(this);
+		this.set_min(min);
+		this.set_max(max);
+		this.set_maxlength(this.$getMaxLength());
+	};
+	global.control.UIRangeInput = $control_UIRangeInput;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIRangeInput.UIHandle
+	var $control_UIRangeInput$UIHandle = function(ev) {
+		$control_UIObject.call(this);
+		this.object = $(ev.target).parent().find('.ui-slider-handle');
+	};
+	$control_UIRangeInput$UIHandle.__typeName = 'control.UIRangeInput$UIHandle';
+	global.control.UIRangeInput$UIHandle = $control_UIRangeInput$UIHandle;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UIRangeInput.UISliderTrack
+	var $control_UIRangeInput$UISliderTrack = function(ev) {
+		$control_UIObject.call(this);
+		this.object = $(ev.target).parent().find('.ui-slider-track');
+	};
+	$control_UIRangeInput$UISliderTrack.__typeName = 'control.UIRangeInput$UISliderTrack';
+	global.control.UIRangeInput$UISliderTrack = $control_UIRangeInput$UISliderTrack;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UITextInput
+	var $control_UITextInput = function() {
+		$control_UIObject.$ctor1.call(this, '<input>');
+		this.set_type('text');
+		this.set_dataClearBtn(true);
+	};
+	$control_UITextInput.__typeName = 'control.UITextInput';
+	$control_UITextInput.$ctor1 = function(dic) {
+		$control_UITextInput.call(this);
+		this.attribute(dic);
+	};
+	global.control.UITextInput = $control_UITextInput;
+	////////////////////////////////////////////////////////////////////////////////
+	// control.UITimeBox
+	var $control_UITimeBox = function() {
+		$control_UITextInput.call(this);
+		this.set_dataRole('datebox');
+		this.set_dataOptions(ss.mkdict(['mode', 'timebox']));
+		this.set_dataClearBtn(false);
+		this.on('dateboxcreate', ss.thisFix(ss.mkdel(this, this.$dateBoxCreate)));
+	};
+	$control_UITimeBox.__typeName = 'control.UITimeBox';
+	global.control.UITimeBox = $control_UITimeBox;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.State
+	var $ctrlui_$State = function() {
+	};
+	$ctrlui_$State.__typeName = 'ctrlui.$State';
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.TokenInfo
+	var $ctrlui_$TokenInfo = function(token, type) {
+		this.$token = null;
+		this.$type = 0;
+		this.$token = token;
+		this.$type = type;
+	};
+	$ctrlui_$TokenInfo.__typeName = 'ctrlui.$TokenInfo';
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.TokenType
+	var $ctrlui_$TokenType = function() {
+	};
+	$ctrlui_$TokenType.__typeName = 'ctrlui.$TokenType';
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.ValueSet
+	var $ctrlui_$ValueSet = function(values, ranges, bitField, initialValue) {
+		this.$values = null;
+		this.$ranges = null;
+		this.$bitField = null;
+		this.$initialValue = null;
+		this.$values = values;
+		this.$ranges = ranges;
+		this.$bitField = bitField;
+		this.$initialValue = initialValue;
+	};
+	$ctrlui_$ValueSet.__typeName = 'ctrlui.$ValueSet';
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.BitField
+	var $ctrlui_BitField = function(least, most, disp) {
+		this.$_Least = 0;
+		this.$_Most = 0;
+		this.$_Disp = null;
+		this.$_Values = [];
+		this.$_Ranges = [];
+		this.$_InitailValue = null;
+		$ctrlui_Value.call(this);
+		this.$_Least = least;
+		this.$_Most = most;
+		this.$_Disp = disp;
+	};
+	$ctrlui_BitField.__typeName = 'ctrlui.BitField';
+	global.ctrlui.BitField = $ctrlui_BitField;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.BitFiledsValue
+	var $ctrlui_BitFiledsValue = function(bitFlds, bitFldVals, value) {
+		this.$_BitFields = null;
+		this.$_BitFieldValues = null;
+		this.$_Value = 0;
+		$ctrlui_Value.call(this);
+		this.$_BitFields = bitFlds;
+		this.$_BitFieldValues = bitFldVals;
+		this.$_Value = value;
+	};
+	$ctrlui_BitFiledsValue.__typeName = 'ctrlui.BitFiledsValue';
+	global.ctrlui.BitFiledsValue = $ctrlui_BitFiledsValue;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.DeviceController
+	var $ctrlui_DeviceController = function(nodeList) {
+		this.$m_NodeList = [];
+		$control_UIDeviceController.call(this);
+		this.$m_NodeList = nodeList;
+		this.deviceController = this;
+	};
+	$ctrlui_DeviceController.__typeName = 'ctrlui.DeviceController';
+	global.ctrlui.DeviceController = $ctrlui_DeviceController;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.DeviceController.DeviceInfo
+	var $ctrlui_DeviceController$DeviceInfo = function(eci, prps) {
+		this.$m_ClassInfo = null;
+		this.$m_Profile = false;
+		this.$m_ClassGroupCode = 0;
+		this.$m_ClassCode = 0;
+		this.$m_InstanceCode = 0;
+		this.$m_Properties = [];
+		this.$m_EObjId = 0;
+		this.$2$DataField = null;
+		$control_UIDeviceController$UIDeviceInfo.call(this);
+		this.$m_ClassInfo = eci;
+		ss.arrayAddRange(this.$m_Properties, prps);
+	};
+	$ctrlui_DeviceController$DeviceInfo.__typeName = 'ctrlui.DeviceController$DeviceInfo';
+	$ctrlui_DeviceController$DeviceInfo.$ctor2 = function(eci, profile, x1, x2, x3, eobjid) {
+		this.$m_ClassInfo = null;
+		this.$m_Profile = false;
+		this.$m_ClassGroupCode = 0;
+		this.$m_ClassCode = 0;
+		this.$m_InstanceCode = 0;
+		this.$m_Properties = [];
+		this.$m_EObjId = 0;
+		this.$2$DataField = null;
+		$control_UIDeviceController$UIDeviceInfo.call(this);
+		this.$m_ClassInfo = eci;
+		this.$m_Profile = profile;
+		this.$m_ClassGroupCode = x1;
+		this.$m_ClassCode = x2;
+		this.$m_InstanceCode = x3;
+		this.$m_EObjId = eobjid;
+	};
+	$ctrlui_DeviceController$DeviceInfo.$ctor1 = function(eci, dev) {
+		$ctrlui_DeviceController$DeviceInfo.$ctor2.call(this, eci, dev.profile, dev.x1, dev.x2, dev.x3, dev.eobjid);
+	};
+	global.ctrlui.DeviceController$DeviceInfo = $ctrlui_DeviceController$DeviceInfo;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.DeviceController.DevicePropertyInfo
+	var $ctrlui_DeviceController$DevicePropertyInfo = function(epi, prop) {
+		$ctrlui_DeviceController$DevicePropertyInfo.$ctor1.call(this, epi, prop.epc, prop.flag, epi.size);
+	};
+	$ctrlui_DeviceController$DevicePropertyInfo.__typeName = 'ctrlui.DeviceController$DevicePropertyInfo';
+	$ctrlui_DeviceController$DevicePropertyInfo.$ctor1 = function(epi, epc, flag, size) {
+		this.$m_PropertyInfo = null;
+		this.$m_PropertyCode = 0;
+		this.$m_Flag = 0;
+		this.$m_Size = 0;
+		this.$m_Data = null;
+		this.$m_InputTypes = null;
+		this.$2$InputDataField = null;
+		this.$2$IsWaitResField = false;
+		$control_UIDeviceController$UIDevicePropertyInfo.call(this);
+		this.$m_PropertyInfo = epi;
+		this.$m_PropertyCode = epc;
+		this.$m_Flag = flag;
+		this.$m_Size = size;
+		//base.SetProperty(this);
+	};
+	global.ctrlui.DeviceController$DevicePropertyInfo = $ctrlui_DeviceController$DevicePropertyInfo;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.DeviceController.NodeInfo
+	var $ctrlui_DeviceController$NodeInfo = function(nodeId, profile) {
+		this.$m_NodeId = 0;
+		this.$m_Profile = null;
+		this.$m_Devices = [];
+		this.$1$DataField = null;
+		this.$m_NodeId = nodeId;
+		this.$m_Profile = profile;
+	};
+	$ctrlui_DeviceController$NodeInfo.__typeName = 'ctrlui.DeviceController$NodeInfo';
+	global.ctrlui.DeviceController$NodeInfo = $ctrlui_DeviceController$NodeInfo;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.ENOD_ID
+	var $ctrlui_ENOD_ID = function() {
+	};
+	$ctrlui_ENOD_ID.__typeName = 'ctrlui.ENOD_ID';
+	global.ctrlui.ENOD_ID = $ctrlui_ENOD_ID;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.EPC_FLAG
+	var $ctrlui_EPC_FLAG = function() {
+	};
+	$ctrlui_EPC_FLAG.__typeName = 'ctrlui.EPC_FLAG';
+	global.ctrlui.EPC_FLAG = $ctrlui_EPC_FLAG;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.Information
+	var $ctrlui_Information = function() {
+		this.$info = null;
+	};
+	$ctrlui_Information.__typeName = 'ctrlui.Information';
+	global.ctrlui.Information = $ctrlui_Information;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.InRangeValue
+	var $ctrlui_InRangeValue = function(range, value) {
+		this.$_Range = null;
+		this.$_Value = 0;
+		$ctrlui_Value.call(this);
+		this.$_Range = range;
+		this.$_Value = value;
+	};
+	$ctrlui_InRangeValue.__typeName = 'ctrlui.InRangeValue';
+	global.ctrlui.InRangeValue = $ctrlui_InRangeValue;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.JsonClassGroupInfo
+	var $ctrlui_JsonClassGroupInfo = function(p) {
+		this.classGroupCode = 0;
+		this.description = null;
+		this.define = null;
+		this.classes = null;
+		this.classGroupCode = ss.unbox(ss.cast(p.classGroupCode, ss.Int32));
+		this.description = ss.cast(p.description, String);
+		this.define = ss.cast(p.define, String);
+	};
+	$ctrlui_JsonClassGroupInfo.__typeName = 'ctrlui.JsonClassGroupInfo';
+	global.ctrlui.JsonClassGroupInfo = $ctrlui_JsonClassGroupInfo;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.JsonClassInfo
+	var $ctrlui_JsonClassInfo = function(p) {
+		this.classCode = 0;
+		this.description = null;
+		this.name = null;
+		this.define = null;
+		this.type = null;
+		this.classGroup = null;
+		this.properties = null;
+		this.classCode = ss.unbox(ss.cast(p.classCode, ss.Int32));
+		this.description = ss.cast(p.description, String);
+		this.name = ss.cast(p.name, String);
+		this.define = ss.cast(p.define, String);
+		this.type = ss.cast(p.type, String);
+		this.classGroup = ss.cast(p.classGroup, $ctrlui_JsonClassGroupInfo);
+		this.properties = ss.cast(p.properties, Array);
+	};
+	$ctrlui_JsonClassInfo.__typeName = 'ctrlui.JsonClassInfo';
+	global.ctrlui.JsonClassInfo = $ctrlui_JsonClassInfo;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.JsonFieldInfo
+	var $ctrlui_JsonFieldInfo = function() {
+		this.description = null;
+		this.valueDescription = null;
+		this.unitDescription = null;
+		this.initialValue = null;
+		this.type = null;
+		this.identifer = null;
+		this.primitive = false;
+		this.isArray = false;
+		this.arrayCount = 0;
+		this.size = 0;
+		this.fields = null;
+	};
+	$ctrlui_JsonFieldInfo.__typeName = 'ctrlui.JsonFieldInfo';
+	global.ctrlui.JsonFieldInfo = $ctrlui_JsonFieldInfo;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.JsonNodeInfo
+	var $ctrlui_JsonNodeInfo = function(type, identifer, attribute) {
+		this.objects = null;
+		$ctrlui_JsonObjectInfo.call(this, type, identifer);
+		this.attribute = attribute;
+		this.objects = [];
+	};
+	$ctrlui_JsonNodeInfo.__typeName = 'ctrlui.JsonNodeInfo';
+	global.ctrlui.JsonNodeInfo = $ctrlui_JsonNodeInfo;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.JsonObjectInfo
+	var $ctrlui_JsonObjectInfo = function(type, identifer) {
+		this.type = null;
+		this.parent = null;
+		this.identifer = null;
+		this.instatceCode = 0;
+		this.attribute = null;
+		this.properties = null;
+		this.type = type;
+		this.identifer = identifer;
+		this.instatceCode = 1;
+		this.attribute = 'device';
+		this.properties = [];
+	};
+	$ctrlui_JsonObjectInfo.__typeName = 'ctrlui.JsonObjectInfo';
+	global.ctrlui.JsonObjectInfo = $ctrlui_JsonObjectInfo;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.JsonPropertyInfo
+	var $ctrlui_JsonPropertyInfo = function() {
+		this.classInfo = null;
+		this.propertyCode = 0;
+		this.access = null;
+		this.required = null;
+		$ctrlui_JsonFieldInfo.call(this);
+	};
+	$ctrlui_JsonPropertyInfo.__typeName = 'ctrlui.JsonPropertyInfo';
+	$ctrlui_JsonPropertyInfo.$ctor1 = function(p) {
+		this.classInfo = null;
+		this.propertyCode = 0;
+		this.access = null;
+		this.required = null;
+		$ctrlui_JsonFieldInfo.call(this);
+		this.classInfo = ss.cast(p.classInfo, $ctrlui_JsonObjectInfo);
+		this.propertyCode = ss.unbox(ss.cast(p.propertyCode, ss.Int32));
+		this.access = ss.cast(p.access, Array);
+		this.required = ss.cast(p.required, Array);
+		this.description = ss.cast(p.description, String);
+		this.valueDescription = ss.cast(p.valueDescription, String);
+		this.unitDescription = ss.cast(p.unitDescription, String);
+		this.initialValue = ss.cast(p.initialValue, String);
+		this.type = ss.cast(p.type, String);
+		this.identifer = ss.cast(p.identifer, String);
+		this.primitive = !!p.primitive;
+		this.isArray = !!p.isArray;
+		this.arrayCount = ss.unbox(ss.cast(p.arrayCount, ss.Int32));
+		this.size = ss.unbox(ss.cast(p.size, ss.Int32));
+		this.fields = ss.cast(p.fields, Array);
+	};
+	global.ctrlui.JsonPropertyInfo = $ctrlui_JsonPropertyInfo;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.JsonSkeltonResult
+	var $ctrlui_JsonSkeltonResult = function() {
+		this.macro = null;
+		this.declare = null;
+		this.predefine = null;
+		this.types = null;
+		this.funcs = null;
+		this.instance = null;
+		this.define = null;
+		this.config = null;
+	};
+	$ctrlui_JsonSkeltonResult.__typeName = 'ctrlui.JsonSkeltonResult';
+	global.ctrlui.JsonSkeltonResult = $ctrlui_JsonSkeltonResult;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.Option
+	var $ctrlui_Option = function(val, disp) {
+		this.$_Val = 0;
+		this.$_Disp = null;
+		$ctrlui_Value.call(this);
+		this.$_Val = val;
+		this.$_Disp = disp;
+	};
+	$ctrlui_Option.__typeName = 'ctrlui.Option';
+	global.ctrlui.Option = $ctrlui_Option;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.PropertyInputInfo
+	var $ctrlui_PropertyInputInfo = function() {
+		this.mode = 0;
+	};
+	$ctrlui_PropertyInputInfo.__typeName = 'ctrlui.PropertyInputInfo';
+	global.ctrlui.PropertyInputInfo = $ctrlui_PropertyInputInfo;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.PropertyInputMode
+	var $ctrlui_PropertyInputMode = function() {
+	};
+	$ctrlui_PropertyInputMode.__typeName = 'ctrlui.PropertyInputMode';
+	global.ctrlui.PropertyInputMode = $ctrlui_PropertyInputMode;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.PropertyRangeInput
+	var $ctrlui_PropertyRangeInput = function() {
+		this.maximum = 0;
+		this.minimum = 0;
+		this.minDescrption = null;
+		this.maxDescrption = null;
+		$ctrlui_PropertyInputInfo.call(this);
+		this.mode = 2;
+	};
+	$ctrlui_PropertyRangeInput.__typeName = 'ctrlui.PropertyRangeInput';
+	global.ctrlui.PropertyRangeInput = $ctrlui_PropertyRangeInput;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.PropertySelectInput
+	var $ctrlui_PropertySelectInput = function() {
+		this.option = new (ss.makeGenericType(ss.Dictionary$2, [ss.Int32, String]))();
+		$ctrlui_PropertyInputInfo.call(this);
+		this.mode = 1;
+	};
+	$ctrlui_PropertySelectInput.__typeName = 'ctrlui.PropertySelectInput';
+	global.ctrlui.PropertySelectInput = $ctrlui_PropertySelectInput;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.Range
+	var $ctrlui_Range = function(min, max, disp) {
+		this.$_Min = 0;
+		this.$_Max = 0;
+		this.$_Disp = null;
+		this.$_MinDisp = null;
+		this.$_MaxDisp = null;
+		this.$_Unit = null;
+		this.$_InitialValue = 0;
+		$ctrlui_Value.call(this);
+		this.$_Min = min;
+		this.$_Max = max;
+		this.$_Disp = disp;
+		this.$_MinDisp = '';
+		this.$_MaxDisp = '';
+		this.$_Unit = '';
+		this.$_InitialValue = min;
+	};
+	$ctrlui_Range.__typeName = 'ctrlui.Range';
+	$ctrlui_Range.$ctor1 = function(min, max, disp, minDisp, maxDisp, unit) {
+		this.$_Min = 0;
+		this.$_Max = 0;
+		this.$_Disp = null;
+		this.$_MinDisp = null;
+		this.$_MaxDisp = null;
+		this.$_Unit = null;
+		this.$_InitialValue = 0;
+		$ctrlui_Value.call(this);
+		this.$_Min = min;
+		this.$_Max = max;
+		this.$_Disp = disp;
+		this.$_MinDisp = minDisp;
+		this.$_MaxDisp = maxDisp;
+		this.$_Unit = unit;
+		this.$_InitialValue = min;
+	};
+	global.ctrlui.Range = $ctrlui_Range;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.T_ECN_EOJ
+	var $ctrlui_T_ECN_EOJ = function(src, offset) {
+		this.$_eoj = new Array(3);
+		this.$_eoj[0] = src[offset];
+		this.$_eoj[1] = src[offset + 1];
+		this.$_eoj[2] = src[offset + 2];
+	};
+	$ctrlui_T_ECN_EOJ.__typeName = 'ctrlui.T_ECN_EOJ';
+	global.ctrlui.T_ECN_EOJ = $ctrlui_T_ECN_EOJ;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.Value
+	var $ctrlui_Value = function() {
+	};
+	$ctrlui_Value.__typeName = 'ctrlui.Value';
+	global.ctrlui.Value = $ctrlui_Value;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.ValueRange
+	var $ctrlui_ValueRange = function() {
+		this.$_Values = [];
+		this.$_Ranges = [];
+		this.$_BitFields = [];
+		this.$_MemberFields = [];
+		this.$_InitailValue = null;
+	};
+	$ctrlui_ValueRange.__typeName = 'ctrlui.ValueRange';
+	$ctrlui_ValueRange.$parseValueRange = function(input, type, values, ranges, bitFeild, initialValue) {
+		bitFeild.$ = null;
+		initialValue.$ = null;
+		var tokens = [];
+		var pos = 0;
+		while (pos < input.length) {
+			var ms;
+			var m;
+			if (ss.isValue(m = (ms = new RegExp($ctrlui_$TokenInfo.$hexValue)).exec(input.substring(pos)))) {
+				tokens.push(new $ctrlui_$TokenInfo(m[0], 1));
+				pos += m[0].length;
+			}
+			else if (ss.isValue(m = (ms = new RegExp($ctrlui_$TokenInfo.$numeric)).exec(input.substring(pos)))) {
+				tokens.push(new $ctrlui_$TokenInfo(m[0], 2));
+				pos += m[0].length;
+			}
+			else {
+				if (ss.isNullOrUndefined(m = (ms = new RegExp($ctrlui_$TokenInfo.$separetor)).exec(input.substring(pos)))) {
+					tokens.push(new $ctrlui_$TokenInfo(input.substring(pos), 3));
+					break;
+				}
+				var index = pos + m.index;
+				if (index === pos) {
+					tokens.push(new $ctrlui_$TokenInfo(m[0], 0));
+					pos += 1;
+				}
+				else {
+					tokens.push(new $ctrlui_$TokenInfo(input.substr(pos, index - pos), 3));
+					tokens.push(new $ctrlui_$TokenInfo(m[0], 0));
+					pos = index + 1;
+				}
+			}
+		}
+		tokens.push(new $ctrlui_$TokenInfo('', 4));
+		var OK = false;
+		var sentence = [];
+		var state = 0;
+		for (var $t1 = 0; $t1 < tokens.length; $t1++) {
+			var token = tokens[$t1];
+			switch (state) {
+				case 0: {
+					if (token.$type === 1 || token.$type === 2) {
+						sentence.push(token);
+						state = 1;
+						continue;
+					}
+					else if (token.$type === 0 && token.$token === '[') {
+						if (ss.isValue(bitFeild.$)) {
+							break;
+						}
+						state = 12;
+						continue;
+					}
+					break;
+				}
+				case 1: {
+					if (token.$type === 0) {
+						switch (token.$token) {
+							case '=': {
+								state = 2;
+								continue;
+							}
+							case '～': {
+								state = 4;
+								continue;
+							}
+						}
+					}
+					else if (token.$type === 4) {
+						var option = new $ctrlui_Option(sentence[0].$toInt64(type), '固定');
+						if (ss.isValue(bitFeild.$)) {
+							bitFeild.$.$addValue(option);
+						}
+						else {
+							if (ss.isNullOrUndefined(initialValue.$)) {
+								initialValue.$ = option;
+							}
+							values.push(option);
+						}
+						ss.clear(sentence);
+						state = 11;
+						continue;
+					}
+					break;
+				}
+				case 2: {
+					if (token.$type === 3) {
+						var option1 = new $ctrlui_Option(sentence[0].$toInt64(type), token.$token);
+						if (ss.isValue(bitFeild.$)) {
+							bitFeild.$.$addValue(option1);
+						}
+						else {
+							if (ss.isNullOrUndefined(initialValue.$)) {
+								initialValue.$ = option1;
+							}
+							values.push(option1);
+						}
+						ss.clear(sentence);
+						state = 11;
+						continue;
+					}
+					else if (token.$type === 2) {
+						sentence.push(token);
+						state = 3;
+						continue;
+					}
+					break;
+				}
+				case 3: {
+					if (token.$type === 3) {
+						var option2 = new $ctrlui_Option(sentence[0].$toInt64(type), sentence[1].$token + token.$token);
+						if (ss.isValue(bitFeild.$)) {
+							bitFeild.$.$addValue(option2);
+						}
+						else {
+							if (ss.isNullOrUndefined(initialValue.$)) {
+								initialValue.$ = option2;
+							}
+							values.push(option2);
+						}
+						ss.clear(sentence);
+						state = 11;
+						continue;
+					}
+					else if (token.$type === 0 && token.$token === ',') {
+						var option3 = new $ctrlui_Option(sentence[0].$toInt64(type), sentence[1].$token);
+						if (ss.isValue(bitFeild.$)) {
+							bitFeild.$.$addValue(option3);
+						}
+						else {
+							if (ss.isNullOrUndefined(initialValue.$)) {
+								initialValue.$ = option3;
+							}
+							values.push(option3);
+						}
+						ss.clear(sentence);
+						state = 0;
+						continue;
+					}
+					else if (token.$type === 4) {
+						var option4 = new $ctrlui_Option(sentence[0].$toInt64(type), sentence[1].$token);
+						if (ss.isValue(bitFeild.$)) {
+							bitFeild.$.$addValue(option4);
+						}
+						else {
+							if (ss.isNullOrUndefined(initialValue.$)) {
+								initialValue.$ = option4;
+							}
+							values.push(option4);
+						}
+						ss.clear(sentence);
+						OK = true;
+					}
+					break;
+				}
+				case 4: {
+					if (token.$type === 1 || token.$type === 2) {
+						sentence.push(token);
+						state = 5;
+						continue;
+					}
+					else if (token.$type === 0 && token.$token === '=') {
+						var max = '0x';
+						for (var i = sentence[0].$token.length - 2; i > 0; i--) {
+							max += 'F';
+						}
+						sentence.push(new $ctrlui_$TokenInfo(max, 1));
+						state = 6;
+						continue;
+					}
+					break;
+				}
+				case 5: {
+					if (token.$type === 0) {
+						switch (token.$token) {
+							case '=': {
+								if (sentence.length === 2) {
+									state = 6;
+									continue;
+								}
+								break;
+							}
+							case '(': {
+								sentence.push(new $ctrlui_$TokenInfo('', 3));
+								state = 7;
+								continue;
+							}
+							case ',': {
+								var range = new $ctrlui_Range(sentence[0].$toInt64(type), sentence[1].$toInt64(type), ((sentence.length > 2) ? sentence[2].$token : ''));
+								if (ss.isValue(bitFeild.$)) {
+									bitFeild.$.$addRange(range);
+								}
+								else {
+									if (ss.isNullOrUndefined(initialValue.$)) {
+										initialValue.$ = range;
+									}
+									ranges.push(range);
+								}
+								ss.clear(sentence);
+								state = 0;
+								continue;
+							}
+						}
+					}
+					else if (token.$type === 4) {
+						var range1 = new $ctrlui_Range(sentence[0].$toInt64(type), sentence[1].$toInt64(type), ((sentence.length > 2) ? sentence[2].$token : ''));
+						if (ss.isValue(bitFeild.$)) {
+							bitFeild.$.$addRange(range1);
+						}
+						else {
+							if (ss.isNullOrUndefined(initialValue.$)) {
+								initialValue.$ = range1;
+							}
+							ranges.push(range1);
+						}
+						ss.clear(sentence);
+						OK = true;
+					}
+					break;
+				}
+				case 6: {
+					if (token.$type === 3) {
+						sentence.push(token);
+						state = 5;
+						continue;
+					}
+					break;
+				}
+				case 7: {
+					if (token.$type === 2 || token.$type === 3) {
+						sentence.push(token);
+						state = 8;
+						continue;
+					}
+					break;
+				}
+				case 8: {
+					if (token.$type === 0 && token.$token === '～') {
+						state = 9;
+						continue;
+					}
+					break;
+				}
+				case 9: {
+					if (token.$type === 2 || token.$type === 3) {
+						sentence.push(token);
+						state = 10;
+						continue;
+					}
+					break;
+				}
+				case 10: {
+					if (token.$type === 0 && token.$token === ')') {
+						var range2 = new $ctrlui_Range.$ctor1(sentence[0].$toInt64(type), sentence[1].$toInt64(type), sentence[2].$token, sentence[3].$token, sentence[4].$token, ((sentence.length > 5) ? sentence[5].$token : ''));
+						if (ss.isValue(bitFeild.$)) {
+							bitFeild.$.$addRange(range2);
+						}
+						else {
+							if (ss.isNullOrUndefined(initialValue.$)) {
+								initialValue.$ = range2;
+							}
+							ranges.push(range2);
+						}
+						ss.clear(sentence);
+						state = 11;
+						continue;
+					}
+					else if (token.$type === 3) {
+						sentence.push(token);
+						state = 10;
+						continue;
+					}
+					break;
+				}
+				case 12: {
+					if (token.$type === 2) {
+						sentence.push(token);
+						state = 13;
+						continue;
+					}
+					break;
+				}
+				case 13: {
+					if (token.$type === 0) {
+						switch (token.$token) {
+							case '～': {
+								state = 14;
+								continue;
+							}
+							case ']': {
+								sentence.push(sentence[0]);
+								state = 15;
+								continue;
+							}
+						}
+					}
+					break;
+				}
+				case 14: {
+					if (token.$type === 2) {
+						sentence.push(token);
+						state = 16;
+						continue;
+					}
+					break;
+				}
+				case 16: {
+					if (token.$type === 0 && token.$token === ']') {
+						state = 15;
+						continue;
+					}
+					break;
+				}
+				case 15: {
+					if (token.$type === 3) {
+						sentence.push(token);
+						state = 17;
+						continue;
+					}
+					break;
+				}
+				case 17: {
+					if (token.$type === 0 && token.$token === ':') {
+						bitFeild.$ = new $ctrlui_BitField(sentence[0].$toInt32(), sentence[1].$toInt32(), sentence[2].$token);
+						if (ss.isNullOrUndefined(initialValue.$)) {
+							initialValue.$ = bitFeild.$;
+						}
+						ss.clear(sentence);
+						state = 0;
+						continue;
+					}
+					else if (token.$type === 4) {
+						bitFeild.$ = new $ctrlui_BitField(sentence[0].$toInt32(), sentence[1].$toInt32(), sentence[2].$token);
+						if (ss.isNullOrUndefined(initialValue.$)) {
+							initialValue.$ = bitFeild.$;
+						}
+						ss.clear(sentence);
+						OK = true;
+						break;
+					}
+					break;
+				}
+				case 11: {
+					if (token.$type === 4) {
+						OK = true;
+					}
+					else if (token.$type === 0 && token.$token === ',') {
+						state = 0;
+						continue;
+					}
+					break;
+				}
+			}
+			break;
+		}
+		return OK;
+	};
+	$ctrlui_ValueRange.parse = function(valrng, emti) {
+		var valueRange = new $ctrlui_ValueRange();
+		if (emti.primitive) {
+			var lines = valrng.split(new RegExp('\r\n'));
+			for (var $t1 = 0; $t1 < lines.length; $t1++) {
+				var line = lines[$t1];
+				if ((new RegExp('^<(.+)>$')).test(line)) {
+					continue;
+				}
+				var values;
+				var ranges;
+				var bitField = {};
+				var initialValue = {};
+				var pair = {};
+				if ($ctrlui_ValueRange.$_ParsedText.tryGetValue(line, pair)) {
+					values = pair.$.$values;
+					ranges = pair.$.$ranges;
+					bitField.$ = pair.$.$bitField;
+					initialValue.$ = pair.$.$initialValue;
+				}
+				else {
+					values = [];
+					ranges = [];
+					$ctrlui_ValueRange.$parseValueRange(line, emti.type, values, ranges, bitField, initialValue);
+					$ctrlui_ValueRange.$_ParsedText.add(line, new $ctrlui_$ValueSet(values, ranges, bitField.$, initialValue.$));
+				}
+				ss.arrayAddRange(valueRange.$_Values, values);
+				ss.arrayAddRange(valueRange.$_Ranges, ranges);
+				if (ss.isValue(bitField.$)) {
+					valueRange.$_BitFields.push(bitField.$);
+				}
+				if (ss.isNullOrUndefined(valueRange.$_InitailValue)) {
+					valueRange.$_InitailValue = initialValue.$;
+				}
+			}
+		}
+		else {
+			for (var $t2 = 0; $t2 < emti.fields.length; $t2++) {
+				var efi = emti.fields[$t2];
+				var member = $ctrlui_ValueRange.parse(efi.valueDescription, efi);
+				valueRange.$_MemberFields.push(member);
+			}
+		}
+		return valueRange;
+	};
+	global.ctrlui.ValueRange = $ctrlui_ValueRange;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.WampApiKadecotDevice
+	var $ctrlui_WampApiKadecotDevice = function(doc) {
+		this.description = null;
+		this.deviceId = 0;
+		this.deviceType = null;
+		this.ip_addr = null;
+		this.nickname = null;
+		this.protocol = null;
+		this.status = false;
+		this.description = ss.cast(doc.description, String);
+		this.deviceId = ss.unbox(ss.cast(doc.deviceId, ss.Int32));
+		this.deviceType = ss.cast(doc.deviceType, String);
+		this.ip_addr = ss.cast(doc.ip_addr, String);
+		this.nickname = ss.cast(doc.nickname, String);
+		this.protocol = ss.cast(doc.protocol, String);
+		this.status = !!doc.status;
+	};
+	$ctrlui_WampApiKadecotDevice.__typeName = 'ctrlui.WampApiKadecotDevice';
+	global.ctrlui.WampApiKadecotDevice = $ctrlui_WampApiKadecotDevice;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.WampApiKadecotGet
+	var $ctrlui_WampApiKadecotGet = function(deviceId, propertyName) {
+		this.deviceId = 0;
+		this.propertyName = null;
+		this.deviceId = deviceId;
+		this.propertyName = propertyName;
+	};
+	$ctrlui_WampApiKadecotGet.__typeName = 'ctrlui.WampApiKadecotGet';
+	global.ctrlui.WampApiKadecotGet = $ctrlui_WampApiKadecotGet;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.WampApiKadecotRes
+	var $ctrlui_WampApiKadecotRes = function(item) {
+		this.propertyName = null;
+		this.propertyValue = null;
+		this.propertyName = ss.cast(item.propertyName, String);
+		if (ss.isValue(ss.getMembers(ss.getInstanceType(item), 16, 284, 'propertyValue'))) {
+			this.propertyValue = ss.cast(item.propertyValue, Array);
+		}
+		else {
+			this.propertyValue = [];
+		}
+	};
+	$ctrlui_WampApiKadecotRes.__typeName = 'ctrlui.WampApiKadecotRes';
+	global.ctrlui.WampApiKadecotRes = $ctrlui_WampApiKadecotRes;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.WampApiKadecotSet
+	var $ctrlui_WampApiKadecotSet = function(deviceId, propertyName, propertyValue) {
+		this.deviceId = 0;
+		this.propertyName = null;
+		this.propertyValue = null;
+		this.deviceId = deviceId;
+		this.propertyName = propertyName;
+		this.propertyValue = propertyValue;
+	};
+	$ctrlui_WampApiKadecotSet.__typeName = 'ctrlui.WampApiKadecotSet';
+	global.ctrlui.WampApiKadecotSet = $ctrlui_WampApiKadecotSet;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.WebApiEchonetMessage
+	var $ctrlui_WebApiEchonetMessage = function(esv) {
+		this.esv = 0;
+		this.sender = 0;
+		this.seoj = new $ctrlui_T_ECN_EOJ(new Array(3), 0);
+		this.deoj = new $ctrlui_T_ECN_EOJ(new Array(3), 0);
+		this.properties = [];
+		this.esv = ss.unbox(ss.cast(esv.esv, ss.Int32));
+		this.sender = ss.cast(esv.sender, ss.Int32);
+		var sseoj = ss.cast(esv.seoj, String);
+		this.seoj.set_x1(parseInt(sseoj.substr(0, 2), 16));
+		this.seoj.set_x2(parseInt(sseoj.substr(2, 2), 16));
+		this.seoj.set_x3(parseInt(sseoj.substr(4, 2), 16));
+		var $t1 = ss.cast(esv.properties, Array);
+		for (var $t2 = 0; $t2 < $t1.length; $t2++) {
+			var prop = $t1[$t2];
+			this.properties.push(new $ctrlui_WebApiPropertyData(prop));
+		}
+	};
+	$ctrlui_WebApiEchonetMessage.__typeName = 'ctrlui.WebApiEchonetMessage';
+	global.ctrlui.WebApiEchonetMessage = $ctrlui_WebApiEchonetMessage;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.WebApiGet
+	var $ctrlui_WebApiGet = function() {
+		this.deojid = 0;
+		this.properties = [];
+	};
+	$ctrlui_WebApiGet.__typeName = 'ctrlui.WebApiGet';
+	$ctrlui_WebApiGet.$ctor1 = function(esv) {
+		this.deojid = 0;
+		this.properties = [];
+		this.deojid = ss.cast(esv.deojid, ss.Int32);
+		var $t1 = ss.cast(esv.properties, Array);
+		for (var $t2 = 0; $t2 < $t1.length; $t2++) {
+			var prop = $t1[$t2];
+			this.properties.push(new $ctrlui_WebApiPropertyCode.$ctor1(prop, true));
+		}
+	};
+	global.ctrlui.WebApiGet = $ctrlui_WebApiGet;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.WebApiGrsaguraMessage
+	var $ctrlui_WebApiGrsaguraMessage = function(esv) {
+		this.pin = 0;
+		this.value = null;
+		this.pin = ss.unbox(ss.cast(esv.pin, ss.Int32));
+		if (ss.referenceEquals(ss.getInstanceType(esv.value), Number)) {
+			this.value = ss.unbox(ss.cast(esv.value, Number)).toString();
+		}
+		else {
+			this.value = ss.cast(esv.value, String);
+		}
+	};
+	$ctrlui_WebApiGrsaguraMessage.__typeName = 'ctrlui.WebApiGrsaguraMessage';
+	global.ctrlui.WebApiGrsaguraMessage = $ctrlui_WebApiGrsaguraMessage;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.WebApiObjectInfo
+	var $ctrlui_WebApiObjectInfo = function(eobjid, obj, profile) {
+		this.profile = false;
+		this.x1 = 0;
+		this.x2 = 0;
+		this.x3 = 0;
+		this.eobjid = 0;
+		this.enodid = 0;
+		this.properties = [];
+		this.eobjid = eobjid;
+		this.profile = profile;
+		this.x1 = ss.unbox(ss.cast(obj.x1, ss.Int32));
+		this.x2 = ss.unbox(ss.cast(obj.x2, ss.Int32));
+		this.x3 = ss.unbox(ss.cast(obj.x3, ss.Int32));
+		this.enodid = ss.unbox(ss.cast(obj.enodid, ss.Int32));
+		var $t1 = ss.cast(obj.properties, Array);
+		for (var $t2 = 0; $t2 < $t1.length; $t2++) {
+			var prop = $t1[$t2];
+			this.properties.push(new $ctrlui_WebApiPropertyInfo(prop));
+		}
+	};
+	$ctrlui_WebApiObjectInfo.__typeName = 'ctrlui.WebApiObjectInfo';
+	global.ctrlui.WebApiObjectInfo = $ctrlui_WebApiObjectInfo;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.WebApiPropertyCode
+	var $ctrlui_WebApiPropertyCode = function(epc) {
+		this.epc = 0;
+		this.epc = epc;
+	};
+	$ctrlui_WebApiPropertyCode.__typeName = 'ctrlui.WebApiPropertyCode';
+	$ctrlui_WebApiPropertyCode.$ctor1 = function(prop, dummy) {
+		this.epc = 0;
+		this.epc = ss.unbox(ss.cast(prop.epc, ss.Int32));
+	};
+	global.ctrlui.WebApiPropertyCode = $ctrlui_WebApiPropertyCode;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.WebApiPropertyData
+	var $ctrlui_WebApiPropertyData = function(prop) {
+		this.epc = 0;
+		this.edt = null;
+		var _edt;
+		this.epc = ss.unbox(ss.cast(prop.epc, ss.Int32));
+		var text = ss.cast(prop.edt, String);
+		if (text.length > 0) {
+			_edt = new Array(ss.Int32.div(text.length, 2));
+			for (var i = 0, j = 0; j < text.length; j += 2) {
+				_edt[i++] = parseInt(text.substr(j, 2), 16);
+			}
+		}
+		else {
+			_edt = [];
+		}
+		this.edt = this.$setEdt(_edt);
+	};
+	$ctrlui_WebApiPropertyData.__typeName = 'ctrlui.WebApiPropertyData';
+	$ctrlui_WebApiPropertyData.$ctor1 = function(epc, edt) {
+		this.epc = 0;
+		this.edt = null;
+		this.epc = epc;
+		this.edt = this.$setEdt(edt);
+	};
+	global.ctrlui.WebApiPropertyData = $ctrlui_WebApiPropertyData;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.WebApiPropertyInfo
+	var $ctrlui_WebApiPropertyInfo = function(prop) {
+		this.epc = 0;
+		this.flag = 0;
+		this.epc = ss.unbox(ss.cast(prop.epc, ss.Int32));
+		this.flag = 0;
+		var temp = ss.cast(prop.flag, String);
+		if (temp.indexOf('RULE_ANNO') !== -1) {
+			this.flag |= 4;
+		}
+		if (temp.indexOf('RULE_SET') !== -1) {
+			this.flag |= 1;
+		}
+		if (temp.indexOf('RULE_GET') !== -1) {
+			this.flag |= 2;
+		}
+		if (temp.indexOf('ANNOUNCE') !== -1) {
+			this.flag |= 64;
+		}
+		if (temp.indexOf('VARIABLE') !== -1) {
+			this.flag |= 128;
+		}
+	};
+	$ctrlui_WebApiPropertyInfo.__typeName = 'ctrlui.WebApiPropertyInfo';
+	global.ctrlui.WebApiPropertyInfo = $ctrlui_WebApiPropertyInfo;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.WebApiSet
+	var $ctrlui_WebApiSet = function() {
+		this.deojid = 0;
+		this.properties = [];
+	};
+	$ctrlui_WebApiSet.__typeName = 'ctrlui.WebApiSet';
+	$ctrlui_WebApiSet.$ctor1 = function(esv) {
+		this.deojid = 0;
+		this.properties = [];
+		this.deojid = ss.cast(esv.deojid, ss.Int32);
+		var $t1 = ss.cast(esv.properties, Array);
+		for (var $t2 = 0; $t2 < $t1.length; $t2++) {
+			var prop = $t1[$t2];
+			this.properties.push(new $ctrlui_WebApiPropertyData(prop));
+		}
+	};
+	global.ctrlui.WebApiSet = $ctrlui_WebApiSet;
+	////////////////////////////////////////////////////////////////////////////////
+	// ctrlui.WebApiSetGet
+	var $ctrlui_WebApiSetGet = function() {
+		this.deojid = 0;
+		this.setProperties = [];
+		this.getProperties = [];
+	};
+	$ctrlui_WebApiSetGet.__typeName = 'ctrlui.WebApiSetGet';
+	$ctrlui_WebApiSetGet.$ctor1 = function(esv) {
+		this.deojid = 0;
+		this.setProperties = [];
+		this.getProperties = [];
+		this.deojid = ss.cast(esv.deojid, ss.Int32);
+		var $t1 = ss.cast(esv.properties, Array);
+		for (var $t2 = 0; $t2 < $t1.length; $t2++) {
+			var prop = $t1[$t2];
+			this.getProperties.push(new $ctrlui_WebApiPropertyCode.$ctor1(prop, true));
+		}
+	};
+	global.ctrlui.WebApiSetGet = $ctrlui_WebApiSetGet;
+	////////////////////////////////////////////////////////////////////////////////
+	// Kadecot.WAMP_MSG_TYPE
+	var $Kadecot_WAMP_MSG_TYPE = function() {
+	};
+	$Kadecot_WAMP_MSG_TYPE.__typeName = 'Kadecot.WAMP_MSG_TYPE';
+	global.Kadecot.WAMP_MSG_TYPE = $Kadecot_WAMP_MSG_TYPE;
+	////////////////////////////////////////////////////////////////////////////////
+	// Kadecot.WampClient
+	var $Kadecot_WampClient = function() {
+		this.$webSocket = null;
+		this.$challnge_flag = false;
+		this.$url = null;
+		this.$plotocols = ['wamp.2.json'];
+		this.$on_open_flag = false;
+		this.$request_id = 0;
+		this.$errorCallback = null;
+		this.$subscription_id_list = null;
+		this.$wampClientCore = null;
+		this.$challnge_flag = false;
+		this.$url = null;
+		this.$webSocket = null;
+		this.$on_open_flag = false;
+		this.$errorCallback = null;
+		this.$request_id = 1;
+		this.$subscription_id_list = new (ss.makeGenericType(ss.Dictionary$2, [ss.Int32, ss.Int32]))();
+		//origin = "http://UnityKadecotPlugin/";
+		this.$wampClientCore = new $Kadecot_WampClientCore();
+	};
+	$Kadecot_WampClient.__typeName = 'Kadecot.WampClient';
+	global.Kadecot.WampClient = $Kadecot_WampClient;
+	////////////////////////////////////////////////////////////////////////////////
+	// Kadecot.WampClientCore
+	var $Kadecot_WampClientCore = function() {
+		this.$1$openCallbackField = null;
+		this.$1$closeCallbackField = null;
+		this.$1$heartbeatCallbackField = null;
+		this.$1$helloCallbackField = null;
+		this.$1$authenticateCallbackField = null;
+		this.$1$goodbyeCallbackField = null;
+		this.$1$publishCallbackField = null;
+		this.$1$subscribeCallbackField = null;
+		this.$1$unsubscribeCallbackField = null;
+		this.$1$callCallbackField = null;
+		this.$1$cancelCallbackField = null;
+		this.$1$registerCallbackField = null;
+		this.$1$unregisterCallbackField = null;
+		this.$1$eventCallbackField = null;
+		this.$1$invocationCallbackField = null;
+		this.$1$interruptCallbackField = null;
+		this.set_openCallback(null);
+		this.set_closeCallback(null);
+		this.set_heartbeatCallback(null);
+		this.set_helloCallback(null);
+		this.set_authenticateCallback(null);
+		this.set_goodbyeCallback(null);
+		this.set_publishCallback(new (ss.makeGenericType(ss.Dictionary$2, [ss.Int32, Function]))());
+		this.set_subscribeCallback(new (ss.makeGenericType(ss.Dictionary$2, [ss.Int32, Function]))());
+		this.set_unsubscribeCallback(new (ss.makeGenericType(ss.Dictionary$2, [ss.Int32, Function]))());
+		this.set_callCallback(new (ss.makeGenericType(ss.Dictionary$2, [ss.Int32, Function]))());
+		this.set_cancelCallback(new (ss.makeGenericType(ss.Dictionary$2, [ss.Int32, Function]))());
+		this.set_registerCallback(new (ss.makeGenericType(ss.Dictionary$2, [ss.Int32, Function]))());
+		this.set_unregisterCallback(new (ss.makeGenericType(ss.Dictionary$2, [ss.Int32, Function]))());
+		this.set_eventCallback(new (ss.makeGenericType(ss.Dictionary$2, [ss.Int32, Function]))());
+		this.set_invocationCallback(new (ss.makeGenericType(ss.Dictionary$2, [ss.Int32, Function]))());
+		this.set_interruptCallback(new (ss.makeGenericType(ss.Dictionary$2, [ss.Int32, Function]))());
+	};
+	$Kadecot_WampClientCore.__typeName = 'Kadecot.WampClientCore';
+	global.Kadecot.WampClientCore = $Kadecot_WampClientCore;
+	////////////////////////////////////////////////////////////////////////////////
+	// Kadecot.WampDeserializer
+	var $Kadecot_WampDeserializer = function() {
+	};
+	$Kadecot_WampDeserializer.__typeName = 'Kadecot.WampDeserializer';
+	$Kadecot_WampDeserializer.parse = function(msg) {
+		var data;
+		if (ss.isNullOrUndefined(msg) || ss.equalsT(msg, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		data = JSON.parse(msg);
+		if (!ss.isInstanceOfType(data, ss.IList) || ss.isInstanceOfType(data, ss.IList) && ss.cast(data, Array).length < 2) {
+			return null;
+		}
+		var list = ss.cast(data, Array);
+		switch (ss.unbox(ss.cast(list[0], ss.Int32))) {
+			case 1: {
+				// WAMP SPEC: [HELLO, Realm|uri, Details|dict]
+				if (ss.cast(data, Array).length < 3) {
+					return null;
+				}
+				break;
+			}
+			case 2: {
+				// WAMP SPEC: [WELCOME, Session|id, Details|dict]
+				if (ss.cast(data, Array).length < 3) {
+					return null;
+				}
+				break;
+			}
+			case 3: {
+				// WAMP SPEC: [ABORT, Details|dict, Reason|uri]
+				if (ss.cast(data, Array).length < 3) {
+					return null;
+				}
+				break;
+			}
+			case 4: {
+				// advanced WAMP SPEC: [CHALLENGE, AuthMethod|string, Extra|dict]
+				if (ss.cast(data, Array).length < 3) {
+					return null;
+				}
+				break;
+			}
+			case 5: {
+				// advanced WAMP SPEC: [CHALLENGE, AuthMethod|string, Extra|dict]
+				if (ss.cast(data, Array).length < 3) {
+					return null;
+				}
+				break;
+			}
+			case 6: {
+				// WAMP SPEC: [GOODBYE, Details|dict, Reason|uri]
+				if (ss.cast(data, Array).length < 3) {
+					return null;
+				}
+				break;
+			}
+			case 7: {
+				// advanced WAMP SPEC: [AUTHENTICATE, Signature|string, Extra|dict]
+				if (ss.cast(data, Array).length < 3) {
+					return null;
+				}
+				break;
+			}
+			case 8: {
+				// WAMP SPEC: [ERROR, REQUEST.Type|int, REQUEST.Request|id, Details|dict, Error|uri, (Arguments|list, ArgumentsKw|dict)]
+				if (ss.cast(data, Array).length < 5) {
+					return null;
+				}
+				switch (ss.unbox(ss.cast(ss.cast(data, Array)[1], ss.Int32))) {
+					case 6:
+					case 70:
+					case 8:
+					case 32:
+					case 34:
+					case 16:
+					case 68:
+					case 48: {
+						// add QUnit test
+						// add QUnit test
+						// add QUnit test
+						break;
+					}
+					case 64:
+					case 66: {
+						// WAMP SPEC: [ERROR, REGISTER, REGISTER.Request|id, Details|dict, Error|uri]
+						break;
+					}
+					default: {
+						return null;
+					}
+				}
+				break;
+			}
+			case 16: {
+				// WAMP SPEC: [PUBLISH, Request|id, Options|dict, Topic|uri]
+				// WAMP SPEC: [PUBLISH, Request|id, Options|dict, Topic|uri, Arguments|list]
+				// WAMP SPEC: [PUBLISH, Request|id, Options|dict, Topic|uri, Arguments|list, ArgumentsKw|dict]
+				if (ss.cast(data, Array).length < 4) {
+					return null;
+				}
+				break;
+			}
+			case 17: {
+				// WAMP SPEC: [PUBLISHED, PUBLISH.Request|id, Publication|id]
+				if (ss.cast(data, Array).length < 3) {
+					return null;
+				}
+				break;
+			}
+			case 32: {
+				// WAMP SPEC: [SUBSCRIBE, Request|id, Options|dict, Topic|uri]
+				if (ss.cast(data, Array).length < 4) {
+					return null;
+				}
+				break;
+			}
+			case 33: {
+				// WAMP SPEC: [SUBSCRIBED, SUBSCRIBE.Request|id, Subscription|id]
+				if (ss.cast(data, Array).length < 3) {
+					return null;
+				}
+				break;
+			}
+			case 34: {
+				// WAMP SPEC: [UNSUBSCRIBE, Request|id, SUBSCRIBED.Subscription|id]
+				if (ss.cast(data, Array).length < 3) {
+					return null;
+				}
+				break;
+			}
+			case 35: {
+				// WAMP SPEC: [UNSUBSCRIBED, UNSUBSCRIBE.Request|id]
+				if (ss.cast(data, Array).length < 2) {
+					return null;
+				}
+				break;
+			}
+			case 36: {
+				// WAMP SPEC: [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict]
+				// WAMP SPEC: [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict, PUBLISH.Arguments|list]
+				// WAMP SPEC: [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict, PUBLISH.Arguments|list, PUBLISH.ArgumentKw|dict]
+				if (ss.cast(data, Array).length < 4) {
+					return null;
+				}
+				break;
+			}
+			case 48: {
+				// WAMP SPEC: [CALL, Request|id, Options|dict, Procedure|uri]
+				// WAMP SPEC: [CALL, Request|id, Options|dict, Procedure|uri, Arguments|list]
+				// WAMP SPEC: [CALL, Request|id, Options|dict, Procedure|uri, Arguments|list, ArgumentsKw|dict]
+				if (ss.cast(data, Array).length < 4) {
+					return null;
+				}
+				break;
+			}
+			case 49: {
+				// advanced WAMP SPEC: [CANCEL, CALL.Request|id, Options|dict]
+				if (ss.cast(data, Array).length < 3) {
+					return null;
+				}
+				break;
+			}
+			case 50: {
+				// WAMP SPEC: [RESULT, CALL.Request|id, Details|dict]
+				// WAMP SPEC: [RESULT, CALL.Request|id, Details|dict, YIELD.Arguments|list]
+				// WAMP SPEC: [RESULT, CALL.Request|id, Details|dict, YIELD.Arguments|list, YIELD.ArgumentsKw|dict]
+				if (ss.cast(data, Array).length < 3) {
+					return null;
+				}
+				break;
+			}
+			case 64: {
+				// WAMP SPEC: [REGISTER, Request|id, Options|dict, Procedure|uri]
+				if (ss.cast(data, Array).length < 4) {
+					return null;
+				}
+				break;
+			}
+			case 65: {
+				// WAMP SPEC: [REGISTERED, REGISTER.Request|id, Registration|id]
+				if (ss.cast(data, Array).length < 3) {
+					return null;
+				}
+				break;
+			}
+			case 66: {
+				// WAMP SPEC: [UNREGISTER, Request|id, REGISTERED.Registration|id]
+				if (ss.cast(data, Array).length < 3) {
+					return null;
+				}
+				break;
+			}
+			case 67: {
+				// WAMP SPEC: [UNREGISTERED, UNREGISTER.Request|id]
+				if (ss.cast(data, Array).length < 2) {
+					return null;
+				}
+				break;
+			}
+			case 68: {
+				// WAMP SPEC: [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict]
+				// WAMP SPEC: [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict, CALL.Arguments|list]
+				// WAMP SPEC: [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict, CALL.Arguments|list, CALL.ArgumentsKw|dict]
+				if (ss.cast(data, Array).length < 4) {
+					return null;
+				}
+				break;
+			}
+			case 69: {
+				// advanced WAMP SPEC: [INTERRUPT, INVOCATION.Request|id, Options|dict]
+				if (ss.cast(data, Array).length < 3) {
+					return null;
+				}
+				break;
+			}
+			case 70: {
+				// WAMP SPEC: [YIELD, INVOCATION.Request|id, Options|dict, (Arguments|list, ArgumentsKw|dict)]
+				if (ss.cast(data, Array).length < 3) {
+					return null;
+				}
+				break;
+			}
+			default: {
+				return null;
+			}
+		}
+		return data;
+	};
+	global.Kadecot.WampDeserializer = $Kadecot_WampDeserializer;
+	////////////////////////////////////////////////////////////////////////////////
+	// Kadecot.WampSerializer
+	var $Kadecot_WampSerializer = function() {
+	};
+	$Kadecot_WampSerializer.__typeName = 'Kadecot.WampSerializer';
+	$Kadecot_WampSerializer.createHello = function(realm, details) {
+		var data;
+		if (ss.isNullOrUndefined(realm) || ss.equalsT(realm, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		if (ss.isNullOrUndefined(details) || ss.equalsT(details, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		var detailJson = JSON.parse(details);
+		var list = [];
+		ss.add(list, 1);
+		ss.add(list, realm);
+		ss.add(list, detailJson);
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createWelcome = function(session, details) {
+		var data;
+		var detailJson = JSON.parse(details);
+		var list = [];
+		ss.add(list, 2);
+		ss.add(list, session);
+		ss.add(list, detailJson);
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createAbort = function(details, reason) {
+		var data;
+		if (ss.isNullOrUndefined(details) || ss.equalsT(details, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		if (ss.isNullOrUndefined(reason) || ss.equalsT(reason, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		var detailJson = JSON.parse(details);
+		var list = [];
+		ss.add(list, 3);
+		ss.add(list, detailJson);
+		ss.add(list, reason);
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createChallenge = function(authMethod, extra) {
+		var data;
+		if (ss.isNullOrUndefined(authMethod) || ss.equalsT(authMethod, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		if (ss.isNullOrUndefined(extra) || ss.equalsT(extra, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		var extraJson = JSON.parse(extra);
+		var list = [];
+		ss.add(list, 4);
+		ss.add(list, authMethod);
+		ss.add(list, extraJson);
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createAuthenticate = function(signature, extra) {
+		var data;
+		if (ss.isNullOrUndefined(signature) || ss.equalsT(signature, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		if (ss.isNullOrUndefined(extra) || ss.equalsT(extra, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		var extraJson = JSON.parse(extra);
+		var list = [];
+		ss.add(list, 5);
+		ss.add(list, signature);
+		ss.add(list, extraJson);
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createGoodbye = function(details, reason) {
+		var data;
+		if (ss.isNullOrUndefined(details) || ss.equalsT(details, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		if (ss.isNullOrUndefined(reason)) {
+			throw new ss.ArgumentNullException();
+		}
+		var detailJson = JSON.parse(details);
+		var list = [];
+		ss.add(list, 6);
+		ss.add(list, detailJson);
+		ss.add(list, reason);
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createHeartbeat = function(incomingSeq, outgoingSeq, discard) {
+		var data;
+		var list = [];
+		if (ss.isNullOrUndefined(discard) || ss.equalsT(discard, '')) {
+			ss.add(list, 7);
+			ss.add(list, incomingSeq);
+			ss.add(list, outgoingSeq);
+			data = JSON.stringify(list);
+		}
+		else {
+			ss.add(list, 7);
+			ss.add(list, incomingSeq);
+			ss.add(list, outgoingSeq);
+			ss.add(list, discard);
+			data = JSON.stringify(list);
+		}
+		return data;
+	};
+	$Kadecot_WampSerializer.createError = function(type, request, details, error, arguments1, argumentsKw) {
+		var data;
+		if (ss.isNullOrUndefined(details) || ss.equalsT(details, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		if (ss.isNullOrUndefined(error) || ss.equalsT(error, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		var detailJson = JSON.parse(details);
+		var argsJson = JSON.parse(arguments1);
+		var argsKwJson = JSON.parse(argumentsKw);
+		var list = [];
+		ss.add(list, 8);
+		ss.add(list, type);
+		ss.add(list, request);
+		ss.add(list, detailJson);
+		ss.add(list, error);
+		if (ss.isValue(arguments1) && ss.isNullOrUndefined(argumentsKw)) {
+			ss.add(list, argsJson);
+		}
+		else if (ss.isValue(arguments1) && ss.isValue(argumentsKw)) {
+			ss.add(list, argsJson);
+			ss.add(list, argsKwJson);
+		}
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createPublish = function(request, options, topic, arguments1, argumentsKw) {
+		var data;
+		if (ss.isNullOrUndefined(options) || ss.equalsT(options, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		if (ss.isNullOrUndefined(topic) || ss.equalsT(topic, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		var optJson = JSON.parse(options);
+		var argsJson = JSON.parse(arguments1);
+		var argsKwJson = JSON.parse(argumentsKw);
+		var list = [];
+		ss.add(list, 16);
+		ss.add(list, request);
+		ss.add(list, optJson);
+		ss.add(list, topic);
+		if (ss.isValue(arguments1) && ss.isNullOrUndefined(argumentsKw)) {
+			ss.add(list, argsJson);
+		}
+		else if (ss.isValue(arguments1) && ss.isValue(argumentsKw)) {
+			ss.add(list, argsJson);
+			ss.add(list, argsKwJson);
+		}
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createPublished = function(request, publication) {
+		var data;
+		var list = [];
+		ss.add(list, 17);
+		ss.add(list, request);
+		ss.add(list, publication);
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createSubscribe = function(request, options, topic) {
+		var data;
+		if (ss.isNullOrUndefined(options) || ss.equalsT(options, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		if (ss.isNullOrUndefined(topic) || ss.equalsT(topic, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		var optJson = JSON.parse(options);
+		var list = [];
+		ss.add(list, 32);
+		ss.add(list, request);
+		ss.add(list, optJson);
+		ss.add(list, topic);
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createSubscribed = function(request, subscription) {
+		var data;
+		var list = [];
+		ss.add(list, 33);
+		ss.add(list, request);
+		ss.add(list, subscription);
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createUnsubscribe = function(request, subscription) {
+		var data;
+		var list = [];
+		ss.add(list, 34);
+		ss.add(list, request);
+		ss.add(list, subscription);
+		//			list.Add ("com.sonycsl.kadecot.echonetlite.procedure.set.topic.HomeAirConditioner.OperationStatus");
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createUnsubscribed = function(request) {
+		var data;
+		var list = [];
+		ss.add(list, 35);
+		ss.add(list, request);
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createEvent = function(subscription, publication, details, arguments1, argumentsKw) {
+		var data;
+		if (ss.isNullOrUndefined(details) || ss.equalsT(details, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		var detailJson = JSON.parse(details);
+		var argsJson = JSON.parse(arguments1);
+		var argsKwJson = JSON.parse(argumentsKw);
+		var list = [];
+		ss.add(list, 36);
+		ss.add(list, subscription);
+		ss.add(list, publication);
+		ss.add(list, detailJson);
+		if (ss.isValue(arguments1) && ss.isNullOrUndefined(argumentsKw)) {
+			ss.add(list, argsJson);
+		}
+		else if (ss.isValue(arguments1) && ss.isValue(argumentsKw)) {
+			ss.add(list, argsJson);
+			ss.add(list, argsKwJson);
+		}
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createCall = function(request, options, procedure, arguments1, argumentsKw) {
+		var data;
+		if (ss.isNullOrUndefined(options) || ss.equalsT(options, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		if (ss.isNullOrUndefined(procedure) || ss.equalsT(procedure, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		var optionJson = JSON.parse(options);
+		var argsJson = JSON.parse(arguments1);
+		var argsKwJson = JSON.parse(argumentsKw);
+		var list = [];
+		ss.add(list, 48);
+		ss.add(list, request);
+		ss.add(list, optionJson);
+		ss.add(list, procedure);
+		if (ss.isValue(arguments1) && ss.isNullOrUndefined(argumentsKw)) {
+			ss.add(list, argsJson);
+		}
+		else if (ss.isValue(arguments1) && ss.isValue(argumentsKw)) {
+			ss.add(list, argsJson);
+			ss.add(list, argsKwJson);
+		}
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createCancel = function(request, options) {
+		var data;
+		if (ss.isNullOrUndefined(options) || ss.equalsT(options, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		var optionJson = JSON.parse(options);
+		var list = [];
+		ss.add(list, 49);
+		ss.add(list, request);
+		ss.add(list, optionJson);
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createResult = function(request, details, arguments1, argumentsKw) {
+		var data;
+		if (ss.isNullOrUndefined(details) || ss.equalsT(details, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		var detailJson = JSON.parse(details);
+		var argsJson = JSON.parse(arguments1);
+		var argsKwJson = JSON.parse(argumentsKw);
+		var list = [];
+		ss.add(list, 50);
+		ss.add(list, request);
+		ss.add(list, detailJson);
+		if (ss.isValue(arguments1) && ss.isNullOrUndefined(argumentsKw)) {
+			ss.add(list, argsJson);
+		}
+		else if (ss.isValue(arguments1) && ss.isValue(argumentsKw)) {
+			ss.add(list, argsJson);
+			ss.add(list, argsKwJson);
+		}
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createRegister = function(request, options, procedure) {
+		var data;
+		if (ss.isNullOrUndefined(options) || ss.equalsT(options, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		if (ss.isNullOrUndefined(procedure) || ss.equalsT(procedure, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		var optJson = JSON.parse(options);
+		var list = [];
+		ss.add(list, 64);
+		ss.add(list, request);
+		ss.add(list, optJson);
+		ss.add(list, procedure);
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createRegistered = function(request, registration) {
+		var data;
+		var list = [];
+		ss.add(list, 65);
+		ss.add(list, request);
+		ss.add(list, registration);
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createUnregister = function(request, registration) {
+		var data;
+		var list = [];
+		ss.add(list, 66);
+		ss.add(list, request);
+		ss.add(list, registration);
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createUnregistered = function(request) {
+		var data;
+		var list = [];
+		ss.add(list, 67);
+		ss.add(list, request);
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createInvocation = function(request, registration, details, arguments1, argumentsKw) {
+		var data;
+		if (ss.isNullOrUndefined(details) || ss.equalsT(details, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		var detailJson = JSON.parse(details);
+		var argsJson = JSON.parse(arguments1);
+		var argsKwJson = JSON.parse(argumentsKw);
+		var list = [];
+		ss.add(list, 68);
+		ss.add(list, request);
+		ss.add(list, registration);
+		ss.add(list, detailJson);
+		if (ss.isValue(arguments1) && ss.isNullOrUndefined(argumentsKw)) {
+			ss.add(list, argsJson);
+		}
+		else if (ss.isValue(arguments1) && ss.isValue(argumentsKw)) {
+			ss.add(list, argsJson);
+			ss.add(list, argsKwJson);
+		}
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createInterrupt = function(request, options) {
+		var data;
+		if (ss.isNullOrUndefined(options) || ss.equalsT(options, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		var optJson = JSON.parse(options);
+		var list = [];
+		ss.add(list, 69);
+		ss.add(list, request);
+		ss.add(list, optJson);
+		data = JSON.stringify(list);
+		return data;
+	};
+	$Kadecot_WampSerializer.createYield = function(request, options, arguments1, argumentsKw) {
+		var data;
+		if (ss.isNullOrUndefined(options) || ss.equalsT(options, '')) {
+			throw new ss.ArgumentNullException();
+		}
+		var optJson = JSON.parse(options);
+		var argsJson = JSON.parse(arguments1);
+		var argsKwJson = JSON.parse(argumentsKw);
+		var list = [];
+		ss.add(list, 70);
+		ss.add(list, request);
+		ss.add(list, optJson);
+		if (ss.isValue(arguments1) && ss.isNullOrUndefined(argumentsKw)) {
+			ss.add(list, argsJson);
+		}
+		else if (ss.isValue(arguments1) && ss.isValue(argumentsKw)) {
+			ss.add(list, argsJson);
+			ss.add(list, argsKwJson);
+		}
+		data = JSON.stringify(list);
+		return data;
+	};
+	global.Kadecot.WampSerializer = $Kadecot_WampSerializer;
+	ss.initClass($CtrlUI, $asm, {
+		get_$m_CurrentNode: function() {
+			return this.$_m_CurrentNode;
+		},
+		set_$m_CurrentNode: function(value) {
+			var flag = !ss.referenceEquals(this.$_m_CurrentNode, value) || ss.isNullOrUndefined(this.$_m_CurrentNode) && ss.isNullOrUndefined(value);
+			this.$_m_CurrentNode = value;
+			if (flag) {
+				$(document).trigger($control_UIEventNames.currentNodeChange);
+			}
+		},
+		$initClassGroups$1: function(eve) {
+			$CtrlUI.$page = eve.target;
+			this.$setEvent();
+			if (ss.isValue($CtrlUI.$m_ClassGroups)) {
+				return;
+			}
+			$ctrlui_DeviceController.getClassInfo = ss.mkdel(this, this.$getClassInfoHandler);
+			this.set_$m_CurrentNode(null);
+			var ClassGroupListUrl = 'devices/ClassGroupList.json';
+			$.ajax(ClassGroupListUrl).success(ss.mkdel(this, this.$initClassGroups)).error(function(request, textStatus, error) {
+				$CtrlUI.$ajaxError(request, textStatus, error, ClassGroupListUrl);
+			});
+		},
+		$setEvent: function() {
+			$(document).on($control_UIEventNames.loadingShow, $control_UIEventHandler.loadingShow);
+			$(document).on($control_UIEventNames.loadingHide, $control_UIEventHandler.loadingHide);
+			$(document).on($control_UIEventNames.currentNodeChange, ss.thisFix(ss.mkdel(this, this.$currentNodeChange)));
+			$(document).on($control_UIEventNames.searchStart, ss.mkdel(this, this.searchStart));
+			$(document).on($control_UIEventNames.searchEnd, ss.mkdel(this, this.searchEnd));
+			$(document).on($control_UIEventNames.searchError, ss.mkdel(this, this.searchError));
+			$(document).on($control_UIEventNames.propertyWriteStart, ss.mkdel(this, this.propertyWriteStart));
+			$(document).on($control_UIEventNames.propertyWriteEnd, ss.mkdel(this, this.propertyWriteEnd));
+			this.get_connectionSwt().change(ss.thisFix(ss.mkdel(this, this.connect)));
+			this.get_setPropertyBtn().click(ss.thisFix(ss.mkdel(this, this.setProperty)));
+			this.get_getPropertyBtn().click(ss.mkdel(this, this.getProperty));
+			this.get_setGetPropertyBtn().click(ss.thisFix(ss.mkdel(this, this.setGetProperty)));
+			this.get_kadecotBtn().click(ss.thisFix(ss.mkdel(this, this.kadecotClick)));
+			this.get_propertyList().change(ss.thisFix(ss.mkdel(this, this.propertyChange)));
+			this.get_setInitParamsBtn().click(ss.thisFix(ss.mkdel(this, this.$setInitParams)));
+		},
+		$initClassGroups: function(data) {
+			var classGroups = $control_UI.toJSClassGroupInfoList(data);
+			//初期化
+			$CtrlUI.$m_Classes = [];
+			$CtrlUI.$m_ClassGroups = Array.prototype.slice.call(classGroups);
+			this.$getClassInfoHandler($ctrlui_T_ECN_EOJ.x1_PROFILE, $ctrlui_T_ECN_EOJ.x2_NODE_PROFILE, ss.mkdel(this, this.$getClassInfoCallback));
+		},
+		$getClassInfoCallback: function(di) {
+			$CtrlUI.$m_ProfileClassInfo = di;
+		},
+		$getClassInfoHandler: function(x1, x2, cb) {
+			var eclass = Enumerable.from($CtrlUI.$m_Classes).firstOrDefault(function(p) {
+				return p.classGroup.classGroupCode === x1 && p.classCode === x2;
+			}, ss.getDefaultValue($ctrlui_JsonClassInfo));
+			//すでにjsonファイルが読み込まれているので、ファイルを読み込まない。
+			if (ss.isValue(eclass)) {
+				if (ss.isNullOrUndefined(eclass.properties)) {
+					this.$getPropertyList(eclass, cb);
+				}
+				else {
+					cb(eclass);
+				}
+				return;
+			}
+			//eclass==nullの場合
+			var classGroup = Enumerable.from($CtrlUI.$m_ClassGroups).firstOrDefault(function(p1) {
+				return p1.classGroupCode === x1;
+			}, ss.getDefaultValue($ctrlui_JsonClassGroupInfo));
+			var classListUrl = 'devices/ClassList' + ss.formatNumber(x1, 'X2').toUpperCase() + '.json';
+			$.ajax(classListUrl).success(ss.mkdel(this, function(data) {
+				this.$getClassInfoSuccess(data, x1, x2, classGroup, cb);
+			})).error(ss.mkdel(this, function(request, textStatus, error) {
+				this.$getClassInfoError(request, textStatus, error, eclass, cb, classListUrl);
+			}));
+		},
+		$getClassInfoSuccess: function(data, x1, x2, classGroup, cb) {
+			var classes = $control_UI.toJSClassInfoList(data, classGroup);
+			ss.arrayAddRange($CtrlUI.$m_Classes, classes);
+			var eclass = Enumerable.from($CtrlUI.$m_Classes).firstOrDefault(function(p) {
+				return p.classGroup.classGroupCode === x1 && p.classCode === x2;
+			}, ss.getDefaultValue($ctrlui_JsonClassInfo));
+			this.$getPropertyList(eclass, cb);
+		},
+		$getPropertyList: function(eclass, cb) {
+			var PropertyListUrl = 'devices/PropertyList' + ss.formatNumber(eclass.classGroup.classGroupCode, 'X2').toUpperCase() + ss.formatNumber(eclass.classCode, 'X2').toUpperCase() + '.json';
+			$.ajax(PropertyListUrl).success(ss.mkdel(this, function(data1) {
+				this.$getPropertyListSuccess(data1, eclass);
+			})).error(ss.mkdel(this, function(request, textStatus, error) {
+				this.$propertyListAjaxError(request, textStatus, error, eclass, cb, PropertyListUrl);
+			})).complete(ss.mkdel(this, function(request1, textStatus1) {
+				this.$getPropertyListComplete(request1, textStatus1, eclass, cb);
+			}));
+		},
+		$getPropertyListSuccess: function(data, eclass) {
+			var properties = $control_UI.toJSPropertyInfoList(data);
+			eclass.properties = Array.prototype.slice.call(properties);
+		},
+		$getPropertyListComplete: function(request, textStatus, eclass, cb) {
+			if (ss.equalsT(request.statusText, 'OK')) {
+				cb(eclass);
+			}
+		},
+		$getClassInfoError: function(request, textStatus, error, eclass, cb, url) {
+			$CtrlUI.$ajaxError(request, textStatus, error, url);
+			cb(eclass);
+		},
+		$propertyListAjaxError: function(request, textStatus, error, eclass, cb, url) {
+			var PropertyListBaseUrl = 'devices/PropertyListBase.json';
+			$.ajax(PropertyListBaseUrl).success(ss.mkdel(this, function(data1) {
+				this.$getPropertyListSuccess(data1, eclass);
+			})).error(function(request1, textStatus1, error1) {
+				$CtrlUI.$ajaxError(request1, textStatus1, error1, url);
+			}).complete(ss.mkdel(this, function(request11, textStatus11) {
+				this.$getPropertyListComplete(request11, textStatus11, eclass, cb);
+			}));
+		},
+		$sendHello: function() {
+			this.$m_WampClient.sendHello('default', '{"roles":{"caller":{},"subscriber":{}}}', ss.mkdel(this, this.$onWelcom));
+		},
+		$onWelcom: function(args) {
+			this.$m_WampClient.sendSubscribe('{}', 'com.sonycsl.kadecot.echonetlite.topic.GeneralLighting.OperationStatus', ss.mkdel(this, this.$onSubscribed), ss.mkdel(this, this.$onSubscribed));
+		},
+		$onSubscribed: function(args) {
+		},
+		$onDevListed: function(args) {
+			var cmd = ss.unbox(ss.cast(ss.cast(args, Array)[0], ss.Int32));
+			if (cmd !== 50) {
+				$(document).trigger($control_UIEventNames.searchError);
+				return;
+			}
+			//初期化
+			var alldevs = $control_UI.getAllDevices(args);
+			this.$getDeviceInfo(alldevs, 0, []);
+		},
+		$getDeviceInfo: function(alldevs, pos, m_NodeList) {
+			var device = alldevs[pos];
+			var callback = ss.mkdel(this, function(args) {
+				var cmd = ss.unbox(ss.cast(ss.cast(args, Array)[0], ss.Int32));
+				if (cmd !== 50) {
+					$(document).trigger($control_UIEventNames.searchError);
+					return;
+				}
+				var dev = new $ctrlui_WebApiObjectInfo(device.deviceId, ss.cast(args, Array)[4], false);
+				this.$getClassInfoHandler(dev.x1, dev.x2, ss.mkdel(this, function(dc) {
+					var di = $control_UI.getDeviceInfo(dc, dev, device);
+					var node = Enumerable.from(m_NodeList).firstOrDefault(function(ni) {
+						return ss.referenceEquals(ss.cast(ni.get_data(), String), device.ip_addr);
+					}, ss.getDefaultValue($ctrlui_DeviceController$NodeInfo));
+					if (ss.isNullOrUndefined(node)) {
+						var profile = new $ctrlui_DeviceController$DeviceInfo.$ctor2($CtrlUI.$m_ProfileClassInfo, true, $ctrlui_T_ECN_EOJ.x1_PROFILE, $ctrlui_T_ECN_EOJ.x2_NODE_PROFILE, 1, dev.enodid);
+						node = new $ctrlui_DeviceController$NodeInfo(dev.enodid, profile);
+						node.set_data(device.ip_addr);
+						m_NodeList.push(node);
+					}
+					node.get_devices().push(di);
+					pos++;
+					if (pos < alldevs.length) {
+						this.$getDeviceInfo(alldevs, pos, m_NodeList);
+					}
+					else {
+						$(document).trigger($control_UIEventNames.searchEnd);
+						this.$m_DeviceController = new $ctrlui_DeviceController(m_NodeList);
+						this.$updateUI();
+					}
+				}));
+			});
+			if (device.protocol === 'arduino') {
+				var arg = { x1: 14, x2: 240, x3: 1, enodid: 1, properties: [{ epc: 0, flag: 'RULE_SET,RULE_GET', size: 1 }, { epc: 1, flag: 'RULE_SET,RULE_GET', size: 1 }, { epc: 2, flag: 'RULE_SET,RULE_GET', size: 1 }, { epc: 3, flag: 'RULE_SET,RULE_GET', size: 1 }, { epc: 4, flag: 'RULE_SET,RULE_GET', size: 1 }, { epc: 5, flag: 'RULE_SET,RULE_GET', size: 1 }, { epc: 6, flag: 'RULE_SET,RULE_GET', size: 1 }, { epc: 7, flag: 'RULE_SET,RULE_GET', size: 1 }, { epc: 8, flag: 'RULE_SET,RULE_GET', size: 1 }, { epc: 9, flag: 'RULE_SET,RULE_GET', size: 1 }, { epc: 10, flag: 'RULE_SET,RULE_GET', size: 1 }, { epc: 11, flag: 'RULE_SET,RULE_GET', size: 1 }, { epc: 12, flag: 'RULE_SET,RULE_GET', size: 1 }, { epc: 13, flag: 'RULE_SET,RULE_GET', size: 1 }, { epc: 14, flag: 'RULE_GET', size: 1 }, { epc: 15, flag: 'RULE_GET', size: 1 }, { epc: 16, flag: 'RULE_GET', size: 1 }, { epc: 17, flag: 'RULE_GET', size: 1 }, { epc: 18, flag: 'RULE_GET', size: 1 }, { epc: 19, flag: 'RULE_GET', size: 1 }] };
+				callback([50, 0, { deviceId: 1 }, [], arg]);
+			}
+			else {
+				this.$m_WampClient.sendCall('{"deviceId":' + device.deviceId + '}', 'jp.toppers.ecnl.procedure.getDeviceInfo', null, null, callback);
+			}
+		},
+		$updateUI: function() {
+			if (ss.isNullOrUndefined(this.get_nodeList())) {
+				return;
+			}
+			this.get_nodeList().html('');
+			this.get_nodeList().append(this.$m_DeviceController.getUINodeList(ss.mkdel(this, this.$listitem_Click)));
+			this.get_nodeList().collapsibleset({}).collapsibleset('refresh');
+			$("ul[data-role='listview']", this.get_nodeList()).listview().listview('refresh');
+		},
+		$onResponse: function(args) {
+			var switchData = ss.unbox(ss.cast(ss.cast(args, Array)[0], ss.Int32));
+			if (switchData !== 50) {
+				return;
+			}
+			var doc = ss.cast(args, Array)[4];
+			if (ss.isValue(this.$m_DeviceController)) {
+				this.$m_DeviceController.recvResponse(new $ctrlui_WebApiEchonetMessage(doc));
+				if (ss.isNullOrUndefined(this.get_propertyList())) {
+					return;
+				}
+				this.get_$m_CurrentNode().getData();
+			}
+			$control_UI.disable(this.get_setPropertyBtn(), true);
+		},
+		$onSetResponse: function(args) {
+			var doc = ss.cast(args, Array)[4];
+			if (ss.isValue(this.$m_DeviceController)) {
+				if (ss.isNullOrUndefined(this.get_propertyList())) {
+					return;
+				}
+				this.$m_DeviceController.recvResponse(new $ctrlui_WebApiEchonetMessage(doc));
+			}
+			$control_UI.disable(this.get_setPropertyBtn(), true);
+		},
+		$listitem_Click: function(elem, ev, di) {
+			if (ss.isNullOrUndefined(this.get_propertyList())) {
+				return;
+			}
+			this.set_$m_CurrentNode(di);
+		},
+		$wampClientConnected: function() {
+			//接続スイッチがOFFの時、スイッチを切り替える
+			var flag = this.get_connectionSwt().prop('checked');
+			if (!flag) {
+				this.get_connectionSwt().prop('checked', true).flipswitch('refresh');
+			}
+			$control_UI.toggleClass(this.get_searchBtn(), 'ui-icon-alert', 'ui-icon-refresh');
+			this.$sendHello();
+		},
+		$wampClientDisconnected: function() {
+			$control_UI.toggleClass(this.get_searchBtn(), 'ui-icon-refresh', 'ui-icon-alert');
+		},
+		connect: function(ele, eve) {
+			var connect = $(ele).prop('checked');
+			//接続スイッチがOn && m_WampClient.isConnecting() == false
+			if (connect && !this.$m_WampClient.isConnecting()) {
+				this.$m_WampClient.connect('ws://' + window.location.host + '/webapi.ashx');
+			}
+			else if (!connect && this.$m_WampClient.isConnecting()) {
+				this.$m_WampClient.disconnect();
+				//  m_WampClient.sendGoodbye("{}", "wamp.error.system_shutdown",Disconnect);
+			}
+		},
+		disconnect: function(args) {
+			this.$m_WampClient.disconnect();
+		},
+		search: function(ele, ev) {
+			$(document).trigger($control_UIEventNames.searchStart);
+			var data = this.$m_WampClient.sendCall('{}', 'com.sonycsl.kadecot.provider.procedure.getDeviceList', null, null, ss.mkdel(this, this.$onDevListed));
+			if (ss.isNullOrUndefined(data)) {
+				$(document).trigger($control_UIEventNames.searchError);
+				return;
+			}
+			this.$timerId = window.setInterval(function() {
+				$(document).trigger($control_UIEventNames.searchError);
+			}, 20000);
+		},
+		searchStart: function(ev) {
+			$.mobile.loading('show', new $LoadingOption.$ctor1('機器検索中...', true));
+			$control_UI.disable(this.get_searchBtn(), true);
+		},
+		searchEnd: function(ev) {
+			if (this.$timerId !== 0) {
+				window.clearInterval(this.$timerId);
+				this.$timerId = 0;
+			}
+			$.mobile.loading('hide');
+			$control_UI.disable(this.get_searchBtn(), false);
+			$control_UI.toggleClass(this.get_nodeList().find('li .ui-icon-alert'), 'ui-icon-alert', 'ui-icon-carat-r');
+		},
+		searchError: function(ev) {
+			if (this.$timerId !== 0) {
+				window.clearInterval(this.$timerId);
+				this.$timerId = 0;
+			}
+			$.mobile.loading('hide');
+			$('#bt_search').removeAttr('disabled');
+			window.alert('機器が見つかりませんでした');
+			$control_UI.toggleClass(this.get_nodeList().find('li .ui-icon-carat-r'), 'ui-icon-carat-r', 'ui-icon-alert');
+		},
+		propertyWriteStart: function(ev) {
+			$.mobile.loading('show');
+		},
+		propertyWriteEnd: function(ev) {
+			//PropertyList.Find("li").Find(".ui-field-contain").Children(".ui-input-text").Each((i, ele) => {
+			//	if (jQuery.Select(ele).Children(".ui-input-text").Length > 0) {
+			//		jQuery.Select(ele).Children("a").Remove();
+			//		jQuery.Select(ele).Children(".ui-input-text").Unwrap();
+			//	}
+			//});
+			$.mobile.loading('hide');
+		},
+		setProperty: function(ele, eve) {
+			var esv = new $ctrlui_WebApiSet();
+			var ctrls = this.get_propertyList();
+			esv.deojid = this.get_$m_CurrentNode().get_eObjId();
+			var enable = false;
+			var $t1 = this.get_$m_CurrentNode().get_properties();
+			for (var $t2 = 0; $t2 < $t1.length; $t2++) {
+				var dpi = $t1[$t2];
+				if (ss.isNullOrUndefined(dpi.get_inputData())) {
+					continue;
+				}
+				else if (dpi.get_isWaitRes()) {
+					esv.addEdt(dpi.get_propertyCode(), dpi.get_inputData());
+					enable = true;
+				}
+			}
+			if (!enable) {
+				return;
+			}
+			var call = this.$m_WampClient.sendCall(esv.getOption(), 'jp.toppers.ecnl.procedure.set', '[]', esv.getArguments(), ss.mkdel(this, this.$onSetResponse));
+			if (ss.isNullOrUndefined(call)) {
+				window.alert('機器が接続されていません');
+			}
+		},
+		getProperty: function(eve) {
+			var protocol = ss.cast(this.get_$m_CurrentNode().get_data(), $ctrlui_WampApiKadecotDevice).protocol;
+			if (protocol === 'arduino') {
+				return;
+			}
+			var esv = new $ctrlui_WebApiGet();
+			//現在選択中のノードからEObjIDを取得
+			esv.deojid = this.get_$m_CurrentNode().get_eObjId();
+			//取得フラグ
+			var enable = false;
+			var $t1 = this.get_$m_CurrentNode().get_properties();
+			for (var $t2 = 0; $t2 < $t1.length; $t2++) {
+				var dpi = $t1[$t2];
+				if (ss.isNullOrUndefined(dpi)) {
+					continue;
+				}
+				dpi.set_isWaitRes(false);
+				var target = (dpi.get_flag() & 2) !== 0;
+				//読み込み禁止の場合
+				if (!target) {
+					dpi.set_errorText('読み込み禁止です');
+					continue;
+				}
+				dpi.set_isWaitRes(true);
+				esv.addEpc(dpi.get_propertyCode());
+				//読み込み可なのでtrue
+				enable = true;
+			}
+			if (!enable) {
+				return;
+			}
+			var call = this.$m_WampClient.sendCall(esv.getOption(), 'jp.toppers.ecnl.procedure.get', '[]', esv.getArguments(), ss.mkdel(this, this.$onResponse));
+			if (ss.isNullOrUndefined(call)) {
+				$control_UI.toggleClass($control_UI.getDeviceBtn(this.get_$m_CurrentNode()), 'ui-icon-carat-r', 'ui-icon-alert');
+			}
+			else {
+				$control_UI.toggleClass($control_UI.getDeviceBtn(this.get_$m_CurrentNode()), 'ui-icon-alert', 'ui-icon-carat-r');
+			}
+		},
+		setGetProperty: function(ele, ev) {
+			var esv = new $ctrlui_WebApiSet();
+			esv.deojid = this.get_$m_CurrentNode().get_eObjId();
+			var enable = false;
+			var $t1 = this.get_$m_CurrentNode().get_properties();
+			for (var $t2 = 0; $t2 < $t1.length; $t2++) {
+				var dpi = $t1[$t2];
+				if (ss.isNullOrUndefined(dpi.get_inputData())) {
+					continue;
+				}
+				else if (dpi.get_isWaitRes()) {
+					esv.addEdt(dpi.get_propertyCode(), dpi.get_inputData());
+					enable = true;
+				}
+			}
+			if (!enable) {
+				return;
+			}
+			var call = this.$m_WampClient.sendCall(esv.getOption(), 'jp.toppers.ecnl.procedure.setget', '[]', esv.getArguments(), ss.mkdel(this, this.$onResponse));
+			if (ss.isNullOrUndefined(call)) {
+				window.alert('機器が接続されていません');
+			}
+		},
+		propertyChange: function(ele, ev) {
+			var flag = this.get_$m_CurrentNode().isWait();
+			$control_UI.disable(this.get_setPropertyBtn(), !flag);
+			$control_UI.disable(this.get_setGetPropertyBtn(), !flag);
+		},
+		kadecotClick: function(ele, ev) {
+			window.open('http://app.kadecot.net/index.html?kip=' + window.location.hostname, 'Kadecot');
+		},
+		kadecotSet: function(dpi, data) {
+			var propName;
+			if (dpi.get_propertyCode() === 128) {
+				propName = 'OperationStatus';
+			}
+			else {
+				propName = '0x' + dpi.get_propertyCode().toString(16);
+			}
+			var di = this.get_$m_CurrentNode();
+			if (ss.isNullOrUndefined(di)) {
+				return;
+			}
+			this.$dpi = dpi;
+			var msg = new $ctrlui_WampApiKadecotSet(di.get_eObjId(), propName, data);
+			this.$m_WampClient.sendCall(msg.$getOption(), 'com.sonycsl.kadecot.echonetlite.procedure.set', '[]', msg.$getArguments(), ss.mkdel(this, this.$kadecotSet));
+		},
+		$kadecotSet: function(args) {
+			var di = this.get_$m_CurrentNode();
+			var doc = ss.cast(args, Array)[4];
+			var res = new $ctrlui_WampApiKadecotRes(doc);
+			if (ss.isValue(this.$m_DeviceController)) {
+				this.$m_DeviceController.recvResponse$1(di, 113, this.$dpi.get_propertyCode(), res.propertyValue);
+			}
+		},
+		kadecotGet$1: function(dpi) {
+			var propName;
+			if (dpi.get_propertyCode() === 128) {
+				propName = 'OperationStatus';
+			}
+			else {
+				propName = '0x' + dpi.get_propertyCode().toString(16);
+			}
+			var di = this.get_$m_CurrentNode();
+			if (ss.isNullOrUndefined(di)) {
+				return;
+			}
+			var msg = new $ctrlui_WampApiKadecotGet(di.get_eObjId(), propName);
+			this.$dpi = dpi;
+			this.$m_WampClient.sendCall(msg.$getOption(), 'com.sonycsl.kadecot.echonetlite.procedure.get', '[]', msg.$getArguments(), ss.mkdel(this, this.kadecotGet));
+		},
+		kadecotGet: function(args) {
+			var di = this.get_$m_CurrentNode();
+			var doc = ss.cast(args, Array)[4];
+			var res = new $ctrlui_WampApiKadecotRes(doc);
+			if (ss.isValue(this.$m_DeviceController)) {
+				this.$m_DeviceController.recvResponse$1(di, 114, this.$dpi.get_propertyCode(), res.propertyValue);
+			}
+		},
+		$currentNodeChange: function(elem, ev) {
+			this.$buttonDisabled(this.get_$m_CurrentNode());
+			if (ss.isNullOrUndefined(this.get_$m_CurrentNode())) {
+				return;
+			}
+			this.$propertyCreate(this.get_$m_CurrentNode());
+			this.getProperty(ev);
+			return;
+		},
+		$buttonDisabled: function(di) {
+			if (ss.isNullOrUndefined(di)) {
+				$control_UI.disable(this.get_setGetPropertyBtn(), true);
+				$control_UI.disable(this.get_getPropertyBtn(), true);
+				$control_UI.disable(this.get_setPropertyBtn(), true);
+				return;
+			}
+			var ctrls = this.get_propertyList();
+			$control_UI.disable(this.get_setGetPropertyBtn(), ss.isNullOrUndefined(ctrls));
+			$control_UI.disable(this.get_getPropertyBtn(), ss.isNullOrUndefined(ctrls));
+			$control_UI.disable(this.get_setPropertyBtn(), ss.isNullOrUndefined(ctrls));
+		},
+		$propertyCreate: function(di) {
+			if (ss.isNullOrUndefined(di)) {
+				return;
+			}
+			$(document).trigger($control_UIEventNames.propertyWriteStart);
+			di.setUIDevice(this);
+			this.get_propertyList().html('');
+			this.get_propertyList().append(di.getPropertys());
+			this.get_propertyList().listview().listview('refresh');
+			this.get_propertyList().listview().trigger('create');
+			$(document).trigger($control_UIEventNames.propertyWriteEnd);
+		},
+		$setInitParams: function(elem, e) {
+			var macaddrfrm = new RegExp('([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2})');
+			var m = macaddrfrm.exec(this.get_macAddrTxt().val());
+			if (ss.isNullOrUndefined(m)) {
+				return;
+			}
+			var ma1 = parseInt(m[1], 16);
+			var ma2 = parseInt(m[2], 16);
+			var ma3 = parseInt(m[3], 16);
+			var ma4 = parseInt(m[4], 16);
+			var ma5 = parseInt(m[5], 16);
+			var ma6 = parseInt(m[6], 16);
+			this.$m_WampClient.sendCall('{}', 'jp.toppers.ecnl.procedure.setInitParams', '[]', '{"macAddr":[' + ma1 + ',' + ma2 + ',' + ma3 + ',' + ma4 + ',' + ma5 + ',' + ma6 + ']}', ss.mkdel(this, this.setInitParamsRes));
+		},
+		setInitParamsRes: function(args) {
+			var cmd = ss.unbox(ss.cast(ss.cast(args, Array)[0], ss.Int32));
+			if (cmd !== 50) {
+				$('#popup_dialog_caption').text('エラー');
+				$('#popup_dialog_title').text('エラーが発生しました');
+				$('#popup_dialog_text').text('初期データの書き込みに失敗しました。');
+				$('#popup_dialog').popup('open', { transition: 'slidedown' });
+				return;
+			}
+			$('#popup_dialog_caption').text('初期データ');
+			$('#popup_dialog_title').text('初期データを書き込みました');
+			$('#popup_dialog_text').text('初期データの書き込みに成功しました。');
+			$('#popup_dialog').popup('open', { transition: 'slidedown' });
+		},
+		$getInitParams: function(elem, e) {
+			this.$m_WampClient.sendCall('{}', 'jp.toppers.ecnl.procedure.getInitParams', '[]', '{}', ss.mkdel(this, this.getInitParamsRes));
+		},
+		getInitParamsRes: function(args) {
+			var cmd = ss.unbox(ss.cast(ss.cast(args, Array)[0], ss.Int32));
+			if (cmd !== 50) {
+				$('#popup_dialog_caption').text('エラー');
+				$('#popup_dialog_title').text('エラーが発生しました');
+				$('#popup_dialog_text').text('初期データの読み込みに失敗しました。');
+				$('#popup_dialog').popup('open', { transition: 'slidedown' });
+				return;
+			}
+			var macaddr = ss.cast(ss.cast(args, Array)[4].macAddr, Array);
+			this.get_macAddrTxt().val(ss.formatString('{0:X02}:{1:X02}:{2:X02}:{3:X02}:{4:X02}:{5:X02}', macaddr[0], macaddr[1], macaddr[2], macaddr[3], macaddr[4], macaddr[5]));
+		},
+		get_setPropertyBtn: function() {
+			return $('#bt_set_property', $CtrlUI.$page);
+		},
+		get_getPropertyBtn: function() {
+			return $('#bt_get_property', $CtrlUI.$page);
+		},
+		get_setGetPropertyBtn: function() {
+			return $('#bt_set_get_property', $CtrlUI.$page);
+		},
+		get_kadecotBtn: function() {
+			return $('#bt_kadecot', $CtrlUI.$page);
+		},
+		get_connectionSwt: function() {
+			return $('#fs_connection', $CtrlUI.$page);
+		},
+		get_propertyList: function() {
+			return $('#lv_property_list', $CtrlUI.$page);
+		},
+		get_searchBtn: function() {
+			return $('#bt_search', $CtrlUI.$page);
+		},
+		get_nodeList: function() {
+			return $('#node_list', $CtrlUI.$page);
+		},
+		get_propertyGroupBox: function() {
+			return $('#lv_property_list', $CtrlUI.$page).find('li');
+		},
+		get_setInitParamsBtn: function() {
+			return $('#bt_set_init_params', $CtrlUI.$page);
+		},
+		get_getInitParamsBtn: function() {
+			return $('#bt_get_init_params', $CtrlUI.$page);
+		},
+		get_macAddrTxt: function() {
+			return $('#txt_mac_addr', $CtrlUI.$page);
+		},
+		pinMode_Change: function(fieldset, pin) {
+			var value = fieldset.checkdValue();
+			var dic = ss.mkdict(['pin', pin, 'mode', value]);
+			this.$m_WampClient.sendCall('{"deviceId":' + 1 + '}', 'com.sonycsl.kadecot.arduino.pinMode', '[]', JSON.stringify(dic), ss.mkdel(this, this.pinMode));
+		},
+		digital_Change: function(button, flipswitch, pin) {
+			var msg = new $ctrlui_WampApiKadecotSet(1, '2', new Array(2));
+			var dic = ss.mkdict(['pin', pin, 'value', flipswitch.get_value()]);
+			this.$m_WampClient.sendCall('{"deviceId":' + 1 + '}', 'com.sonycsl.kadecot.arduino.digitalWrite', '[]', JSON.stringify(dic), ss.mkdel(this, this.digitalWrite));
+		},
+		analogWrite_Change: function(range, pin) {
+			var msg = new $ctrlui_WampApiKadecotSet(1, '2', new Array(2));
+			var dic = ss.mkdict(['pin', pin, 'value', range.get_value$1()]);
+			this.$m_WampClient.sendCall('{"deviceId":' + 1 + '}', 'com.sonycsl.kadecot.arduino.analogWrite', '[]', JSON.stringify(dic), ss.mkdel(this, this.pinMode));
+		},
+		analogRead: function(range, pin) {
+			var dic = ss.mkdict(['pin', pin]);
+			this.$m_WampClient.sendCall('{"deviceId":' + 1 + '}', 'com.sonycsl.kadecot.arduino.analogRead', '[]', JSON.stringify(dic), ss.mkdel(this, function(args) {
+				this.digitalRead$1(args, range);
+			}));
+		},
+		pinMode: function(args) {
+			var switchData = ss.unbox(ss.cast(ss.cast(args, Array)[0], ss.Int32));
+			if (switchData !== 50) {
+				return;
+			}
+			var doc = ss.cast(args, Array)[4];
+			if (ss.isValue(this.$m_DeviceController)) {
+				if (ss.isNullOrUndefined(this.get_propertyList())) {
+					return;
+				}
+			}
+		},
+		digitalWrite: function(args) {
+			var switchData = ss.unbox(ss.cast(ss.cast(args, Array)[0], ss.Int32));
+			if (switchData !== 50) {
+				return;
+			}
+			var doc = ss.cast(args, Array)[4];
+			if (ss.isValue(this.$m_DeviceController)) {
+				if (ss.isNullOrUndefined(this.get_propertyList())) {
+					return;
+				}
+			}
+		},
+		digitalRead: function(button, flip, i) {
+			var dic = ss.mkdict(['pin', i]);
+			var str = this.$m_WampClient.sendCall('{"deviceId":' + 1 + '}', 'com.sonycsl.kadecot.arduino.digitalRead', '[]', JSON.stringify(dic), ss.mkdel(this, function(arg) {
+				this.digitalRead$1(arg, flip);
+			}));
+			if (ss.isNullOrUndefined(str)) {
+				button.toggleClass$1('ui-icon-refresh', 'ui-icon-alert');
+			}
+			else {
+				button.toggleClass$1('ui-icon-alert', 'ui-icon-refresh');
+			}
+		},
+		digitalRead$1: function(args, uiobject) {
+			var switchData = ss.unbox(ss.cast(ss.cast(args, Array)[0], ss.Int32));
+			if (switchData !== 50) {
+				return;
+			}
+			var doc = ss.cast(args, Array)[4];
+			if (ss.isValue(this.$m_DeviceController)) {
+				var msg = new $ctrlui_WebApiGrsaguraMessage(doc);
+				if (ss.referenceEquals(ss.getInstanceType(uiobject), $control_UIFlipSwitch)) {
+					var flip = ss.cast(uiobject, $control_UIFlipSwitch);
+					flip.set_value(msg.value);
+				}
+				else if (ss.referenceEquals(ss.getInstanceType(uiobject), $control_UIRangeInput)) {
+					var range = ss.cast(uiobject, $control_UIRangeInput);
+					range.set_value$1(parseInt(msg.value));
+					range.object.slider('refresh');
+				}
+			}
+		}
+	});
+	ss.initClass($ElementExtensions, $asm, {});
+	ss.initClass($jQueryMobile, $asm, {});
+	ss.initClass($LoadingOption, $asm, {});
+	$LoadingOption.$ctor1.prototype = $LoadingOption.prototype;
+	ss.initEnum($control_KeyPress, $asm, { delete$1: 0, backSpace: 8, minus: 45, dot: 46, slash: 47, _0: 48, _1: 49, _2: 50, _3: 51, _4: 52, _5: 53, _6: 54, _7: 55, _8: 56, _9: 57, a: 65, b: 66, c: 67, d: 68, e: 69, f: 70, a$1: 97, b$1: 98, c$1: 99, d$1: 100, e$1: 101, f$1: 102 });
+	ss.initClass($control_UI, $asm, {});
+	ss.initClass($control_UIObject, $asm, {
+		get_element: function() {
+			return this.object.get(0);
+		},
+		change: function() {
+			this.object.change();
+			return this;
+		},
+		change$1: function(eventHandler) {
+			this.object.change(eventHandler);
+		},
+		keypress: function(eventHandler) {
+			this.object.keypress(eventHandler);
+		},
+		toggle: function(showOrHide) {
+			return this.object.toggle(showOrHide);
+		},
+		attribute$1: function(attributeName, value) {
+			this.object.attr(attributeName, value);
+		},
+		removeAttr: function(attributeName) {
+			this.object.removeAttr(attributeName);
+		},
+		getAttribute: function(attributeName) {
+			return this.object.attr(attributeName);
+		},
+		find: function(selector) {
+			return this.object.find(selector);
+		},
+		removeClass: function(className) {
+			this.object.removeClass(className);
+			return this;
+		},
+		toggleClass: function(className, add) {
+			this.object.toggleClass(className, add);
+			return this;
+		},
+		toggleClass$1: function(deleteClass, addClass) {
+			$control_UI.toggleClass(this.object, deleteClass, addClass);
+			return this;
+		},
+		one: function(eventName, eventHandler) {
+			this.object.one(eventName, eventHandler);
+			return this;
+		},
+		attribute: function(nameValueMap) {
+			this.object.attr(nameValueMap);
+			return this;
+		},
+		click$1: function(eventHandler) {
+			this.object.click(eventHandler);
+			return this;
+		},
+		click: function(eventHandler) {
+			this.object.click(eventHandler);
+			return this;
+		},
+		get_text: function() {
+			return this.object.text();
+		},
+		set_text: function(value) {
+			this.object.text(value);
+		},
+		get_id: function() {
+			return this.object.attr('id');
+		},
+		set_id: function(value) {
+			this.object.attr('id', value);
+		},
+		get_for: function() {
+			return this.object.attr('for');
+		},
+		set_for: function(value) {
+			this.object.attr('for', value);
+		},
+		get_name: function() {
+			return this.object.attr('name');
+		},
+		set_name: function(value) {
+			this.object.attr('name', value);
+		},
+		get_dataRole: function() {
+			return this.object.attr('data-role');
+		},
+		set_dataRole: function(value) {
+			this.object.attr('data-role', value);
+		},
+		get_dataType: function() {
+			return this.object.attr('data-type');
+		},
+		set_dataType: function(value) {
+			this.object.attr('data-type', value);
+		},
+		get_title: function() {
+			return this.object.attr('title');
+		},
+		set_title: function(value) {
+			this.object.attr('title', value);
+		},
+		get_value: function() {
+			if (this.object.is('fieldset')) {
+				return this.object.find("input[type='radio']:checked").val();
+			}
+			return this.object.val();
+		},
+		set_value: function(value) {
+			if (this.object.is('fieldset')) {
+				this.object.find('input[type="radio"]').each(function(j, elem) {
+					if (ss.referenceEquals($(elem).val(), value)) {
+						$(elem).prop('checked', true);
+					}
+					else {
+						$(elem).prop('checked', false);
+					}
+				});
+				this.object.find('input[type="radio"]').checkboxradio().checkboxradio('refresh');
+			}
+			else {
+				this.object.val(value);
+				if (this.get_dataRole() === 'flipswitch') {
+					this.object.val(value).flipswitch('refresh');
+				}
+			}
+		},
+		get_maxlength: function() {
+			return parseInt(this.getAttribute('maxlength'));
+		},
+		set_maxlength: function(value) {
+			this.attribute$1('maxlength', value.toString());
+		},
+		get_min: function() {
+			return parseInt(this.object.attr('min'));
+		},
+		set_min: function(value) {
+			this.object.attr('min', value.toString());
+		},
+		get_max: function() {
+			return parseInt(this.object.attr('max'));
+		},
+		set_max: function(value) {
+			this.object.attr('max', value.toString());
+		},
+		get_tabIndex: function() {
+			return parseInt(this.object.attr('tabindex'));
+		},
+		set_tabIndex: function(value) {
+			this.object.attr('tabindex', value.toString());
+		},
+		get_type: function() {
+			return this.object.attr('type');
+		},
+		set_type: function(value) {
+			this.object.attr('type', value);
+		},
+		append: function(uiobject) {
+			this.object.append(uiobject.object);
+		},
+		append$1: function(object) {
+			return this.object.append(object);
+		},
+		disable: function(flag) {
+			if (flag) {
+				this.attribute$1('disabled', 'disabled');
+			}
+			else {
+				this.removeAttr('disabled');
+			}
+			return this;
+		},
+		children: function() {
+			return this.object.children();
+		},
+		addClass: function(className) {
+			this.object.addClass(className);
+			return this;
+		},
+		pointerEvents: function(flag) {
+			if (!flag) {
+				this.object.css('pointer-events', 'none');
+			}
+			return this;
+		},
+		hide: function() {
+			this.object.hide();
+			return this;
+		},
+		show: function() {
+			this.object.show();
+			return this;
+		},
+		get_class: function() {
+			return this.$ecnlclass;
+		},
+		set_class: function(value) {
+			this.$ecnlclass = value;
+			this.addClass(this.$ecnlClassString(value));
+		},
+		$ecnlClassString: function(class1) {
+			if (class1 === 0) {
+				return 'ecnl_pink';
+			}
+			else if (class1 === 1) {
+				return 'ecnl_violet';
+			}
+			else if (class1 === 2) {
+				return 'ecnl_light_green';
+			}
+			else if (class1 === 3) {
+				return 'ecnl_light_blue';
+			}
+			else {
+				return '';
+			}
+		}
+	});
+	$control_UIObject.$ctor2.prototype = $control_UIObject.$ctor3.prototype = $control_UIObject.$ctor1.prototype = $control_UIObject.prototype;
+	ss.initClass($control_UIAnchor, $asm, {
+		get_href: function() {
+			return this.getAttribute('href');
+		},
+		set_href: function(value) {
+			this.attribute$1('href', value);
+		},
+		get_target: function() {
+			return this.getAttribute('target');
+		},
+		set_target: function(value) {
+			this.attribute$1('target', value);
+		}
+	}, $control_UIObject);
+	$control_UIAnchor.$ctor1.prototype = $control_UIAnchor.$ctor2.prototype = $control_UIAnchor.prototype;
+	ss.initClass($control_UIButton, $asm, {
+		get_button: function() {
+			return this.object.hasClass('ui-btn');
+		},
+		set_button: function(value) {
+			this.object.toggleClass('ui-btn', value);
+		},
+		get_noText: function() {
+			return this.object.hasClass('ui-btn-icon-notext');
+		},
+		set_noText: function(value) {
+			this.object.toggleClass('ui-btn-icon-notext', value);
+		},
+		get_cornerAll: function() {
+			return this.object.hasClass('ui-corner-all');
+		},
+		set_cornerAll: function(value) {
+			this.object.toggleClass('ui-corner-all', value);
+		},
+		get_buttonIcon: function() {
+			return this.$getIcon();
+		},
+		set_buttonIcon: function(value) {
+			this.object.toggleClass(this.$getClass(value), true);
+		},
+		get_href: function() {
+			return this.object.attr('href');
+		},
+		set_href: function(value) {
+			this.object.attr('href', value);
+		},
+		$getClass: function(icon) {
+			var text = '';
+			if (icon === 0) {
+				text = 'delete';
+			}
+			else if (icon === 1) {
+				text = 'refresh';
+			}
+			else if (icon === 2) {
+				text = 'back';
+			}
+			return 'ui-icon-' + text;
+		},
+		$getIcon: function() {
+			if (this.object.hasClass('ui-icon-delete')) {
+				return 0;
+			}
+			else if (this.object.hasClass('ui-icon-refresh')) {
+				return 1;
+			}
+			else if (this.object.hasClass('ui-icon-back')) {
+				return 2;
+			}
+			return 0;
+		}
+	}, $control_UIObject);
+	ss.initClass($control_UIBackButton, $asm, {}, $control_UIButton);
+	ss.initEnum($control_UIButton$Icon, $asm, { delete$1: 0, refresh: 1, back: 2 });
+	ss.initClass($control_UITextInput, $asm, {
+		get_dataClearBtn: function() {
+			return /^\s*true\s*$/i.test(this.getAttribute('data-clear-btn'));
+		},
+		set_dataClearBtn: function(value) {
+			if (value) {
+				this.attribute$1('data-clear-btn', value.toString());
+			}
+			else {
+				this.removeAttr('data-clear-btn');
+			}
+			;
+		},
+		get_placeholder: function() {
+			return this.getAttribute('placeholder');
+		},
+		set_placeholder: function(value) {
+			this.attribute$1('placeholder', value);
+		},
+		get_dataOptions: function() {
+			return JSON.parse(this.getAttribute('data-options'));
+		},
+		set_dataOptions: function(value) {
+			this.attribute$1('data-options', JSON.stringify(value));
+		},
+		keyup: function(eventHandler) {
+			this.object.keyup(eventHandler);
+			return this.object;
+		},
+		on: function(eventName, eventHandler) {
+			this.object.on(eventName, eventHandler);
+			return this.object;
+		},
+		get_readOnly: function() {
+			return this.getAttribute('readonly') === 'readonly';
+		},
+		set_readOnly: function(value) {
+			if (value) {
+				this.attribute$1('readonly', 'readonly');
+			}
+			else {
+				this.removeAttr('readonly');
+			}
+		}
+	}, $control_UIObject);
+	$control_UITextInput.$ctor1.prototype = $control_UITextInput.prototype;
+	ss.initClass($control_UICalBox, $asm, {
+		get_dY: function() {
+			return this.$getCal(0);
+		},
+		get_dM: function() {
+			return this.$getCal(1);
+		},
+		get_dD: function() {
+			return this.$getCal(2);
+		},
+		get_xY: function() {
+			return ss.formatNumber(this.get_dY(), 'X4');
+		},
+		get_xM: function() {
+			return ss.formatNumber(this.get_dM(), 'X2');
+		},
+		get_xD: function() {
+			return ss.formatNumber(this.get_dD(), 'X2');
+		},
+		get_YYYYMMDD: function() {
+			return this.get_xY() + this.get_xM() + this.get_xD();
+		},
+		get_yyyymmdd: function() {
+			return ss.formatNumber(this.get_dY(), 'D4') + '/' + ss.formatNumber(this.get_dM(), 'D2') + '/' + ss.formatNumber(this.get_dD(), 'D2');
+		},
+		$dateBoxCreate: function(ele, ev) {
+			$control_UI.toggleClass($(ele).parents().find('.ui-icon-grid'), 'ui-icon-grid', 'ui-icon-calendar');
+		},
+		$getCal: function(i) {
+			var x = 0;
+			if (this.get_value().indexOf('/') !== -1) {
+				var value = this.get_value().split('/');
+				x = parseInt(value[i]);
+			}
+			return x;
+		}
+	}, $control_UITextInput);
+	ss.initClass($control_UICalBox$UIInputDate, $asm, {}, $control_UIObject);
+	ss.initClass($control_UICollapsibleset, $asm, {
+		get_dataInset: function() {
+			return /^\s*true\s*$/i.test(this.object.attr('data-inset'));
+		},
+		set_dataInset: function(value) {
+			this.object.attr('data-inset', value.toString());
+		}
+	}, $control_UIObject);
+	$control_UICollapsibleset.$ctor2.prototype = $control_UICollapsibleset.$ctor1.prototype = $control_UICollapsibleset.prototype;
+	ss.initClass($control_UIDeviceController, $asm, {
+		getUINodeList: function(listitem_click) {
+			var nodelist = new $control_UINodeList(this.deviceController.get_nodeList(), listitem_click);
+			return nodelist.getNodeList();
+		}
+	});
+	ss.initClass($control_UIDeviceController$UIDeviceInfo, $asm, {
+		uiDeviceSet: function(di, Page) {
+			this.di = di;
+			this.page = Page;
+			if (ss.cast(di.get_data(), $ctrlui_WampApiKadecotDevice).protocol === 'arduino') {
+				this.$elements = di.setPin(Page);
+			}
+			else {
+				this.$elements = di.setEchonetlite(Page);
+			}
+		},
+		getPropertys: function() {
+			return $(this.$elements);
+		},
+		getData: function() {
+			var $t1 = this.di.get_properties();
+			for (var $t2 = 0; $t2 < $t1.length; $t2++) {
+				var dpi = $t1[$t2];
+				if (ss.isValue(dpi.get_data())) {
+					dpi.getValue(dpi.get_data());
+				}
+			}
+		},
+		isWait: function() {
+			var flag = false;
+			if (ss.isValue(this.di) && ss.isValue(this.di.get_properties())) {
+				var $t1 = this.di.get_properties();
+				for (var $t2 = 0; $t2 < $t1.length; $t2++) {
+					var dpi = $t1[$t2];
+					if (ss.isValue(dpi) && dpi.get_isWaitRes()) {
+						flag = true;
+					}
+				}
+			}
+			return flag;
+		},
+		setEchonetlite: function(ctrlui) {
+			var ele = new Array(this.di.get_properties().length);
+			var i = 0;
+			var $t1 = this.di.get_properties();
+			for (var $t2 = 0; $t2 < $t1.length; $t2++) {
+				var dpi = $t1[$t2];
+				dpi.setProperty(dpi);
+				dpi.setName(this.di);
+				dpi.setKadecotGet(ss.mkdel(this.page, this.page.kadecotGet$1));
+				dpi.setKadecotSet(ss.mkdel(this.page, this.page.kadecotSet));
+				ele[i++] = dpi.getElement();
+			}
+			return ele;
+		},
+		setPin: function(ctrlui) {
+			this.page = ctrlui;
+			var ele = new Array(20);
+			var element;
+			var j = 0;
+			for (var i = 0; i <= 19; i++) {
+				element = this.setPin$1(i, this.page);
+				ele[j++] = element[0];
+				ele[j++] = element[1];
+			}
+			return ele;
+		},
+		setPin$1: function(i, Page) {
+			var uiPin = new $control_UIPin.$ctor1(i);
+			uiPin.setPinModeChange(ss.mkdel(Page, Page.pinMode_Change));
+			uiPin.setDigitalChange(ss.mkdel(Page, Page.digital_Change));
+			uiPin.setReadButtonClick(ss.mkdel(Page, Page.digitalRead));
+			uiPin.setAnalogWriteChange(ss.mkdel(Page, Page.analogWrite_Change));
+			uiPin.setAnalogReadChange(ss.mkdel(Page, Page.analogRead));
+			return uiPin.getElements();
+		}
+	});
+	ss.initClass($control_UIDeviceController$UIDevicePropertyInfo, $asm, {
+		getElement: function() {
+			return this.$grpbox.object.get(0);
+		},
+		setName: function(di) {
+			var nameid = di.getObjectID() + this.$dpi.getPropertyCode('X2');
+			this.$grpbox.setName(nameid);
+		},
+		get_errorText: function() {
+			return this.$grpbox.get_errorText();
+		},
+		set_errorText: function(value) {
+			this.$grpbox.set_errorText(value);
+		},
+		getMaxLength: function() {
+			var len = 2 * (ss.isNullOrUndefined(this.$dpi.get_propertyInfo()) ? this.$dpi.get_size() : (((this.$dpi.get_propertyInfo().arrayCount === 0) ? 1 : this.$dpi.get_propertyInfo().arrayCount) * this.$dpi.get_propertyInfo().size));
+			return len;
+		},
+		setProperty: function(dpi) {
+			this.$dpi = dpi;
+			this.$grpbox = new $control_UIGrpBox.$ctor1(dpi);
+		},
+		setKadecotGet: function(KadecotGet) {
+			var opeSt = null;
+			//現在時刻設定
+			if (this.$dpi.get_propertyCode() === 151) {
+			}
+			else if (this.$dpi.get_propertyCode() === 152) {
+			}
+			else if (this.$dpi.get_inputTypes().length === 0) {
+			}
+			else if (this.$dpi.get_propertyCode() === 128 && this.$dpi.get_inputTypes().length === 1 && this.$dpi.get_inputTypes()[0].mode === 1) {
+			}
+			else {
+				var $t1 = this.$dpi.get_inputTypes();
+				for (var $t2 = 0; $t2 < $t1.length; $t2++) {
+					var pii = $t1[$t2];
+					if (this.$dpi.get_propertyCode() === 128) {
+						opeSt = this.$dpi;
+					}
+				}
+				if (ss.isValue(opeSt)) {
+					KadecotGet(opeSt);
+				}
+			}
+		},
+		setKadecotSet: function(KadecotSet) {
+			this.$grpbox.kadecotSet = KadecotSet;
+		},
+		getValue: function(data) {
+			this.$grpbox.setGetValue(data);
+		}
+	});
+	ss.initClass($control_UIDiv, $asm, {}, $control_UIObject);
+	ss.initClass($control_UIEventHandler, $asm, {});
+	ss.initClass($control_UIEventNames, $asm, {});
+	ss.initClass($control_UIFieldContain, $asm, {}, $control_UIObject);
+	$control_UIFieldContain.$ctor1.prototype = $control_UIFieldContain.$ctor2.prototype = $control_UIFieldContain.prototype;
+	ss.initClass($control_UIFieldSet, $asm, {
+		checkdValue: function() {
+			return $("input[type='radio']:checked", this.object).val();
+		},
+		append$2: function(radio) {
+			if (ss.isNullOrUndefined(this.radioList)) {
+				this.radioList = [];
+			}
+			this.radioList.push(new $control_UIFieldSet$RadioInput(radio.label, radio.radio));
+			var last = Enumerable.from(this.radioList).last();
+			this.append(last.label);
+			this.append(last.radio);
+		},
+		get_controlGroup: function() {
+			return this.$_ControlGroup;
+		},
+		set_controlGroup: function(value) {
+			if (value) {
+				this.set_dataRole('controlgroup');
+			}
+			else {
+				this.set_dataRole('');
+			}
+			this.$_ControlGroup = value;
+		},
+		get_horizontal: function() {
+			return this.$_Horizontal;
+		},
+		set_horizontal: function(value) {
+			if (value) {
+				this.set_dataType('horizontal');
+			}
+			else {
+				this.set_dataType('');
+			}
+			this.$_Horizontal = value;
+		}
+	}, $control_UIObject);
+	$control_UIFieldSet.$ctor1.prototype = $control_UIFieldSet.prototype;
+	ss.initClass($control_UIFieldSet$RadioInput, $asm, {});
+	ss.initClass($control_UIFlipSwitch, $asm, {}, $control_UIObject);
+	$control_UIFlipSwitch.$ctor1.prototype = $control_UIFlipSwitch.prototype;
+	ss.initClass($control_UIGridA, $asm, {}, $control_UIObject);
+	ss.initClass($control_UIGridA$UIBlockA, $asm, {}, $control_UIObject);
+	ss.initClass($control_UIGridA$UIBlockB, $asm, {}, $control_UIObject);
+	ss.initClass($control_UIListviewItem, $asm, {}, $control_UIObject);
+	$control_UIListviewItem.$ctor1.prototype = $control_UIListviewItem.prototype;
+	ss.initClass($control_UIGrpBox, $asm, {
+		setFlipSwitch: function() {
+			var psi = ss.cast(this.$dpi.get_inputTypes()[0], $ctrlui_PropertySelectInput);
+			// OFF
+			var off = Enumerable.from(psi.option).first(function(kvp) {
+				return kvp.key === 49;
+			});
+			// ON
+			var on = Enumerable.from(psi.option).first(function(kvp1) {
+				return kvp1.key === 48;
+			});
+			var OFF = new $control_UIOption.$ctor2(off.value, ss.formatNumber(off.key, 'X2'));
+			var ON = new $control_UIOption.$ctor2(on.value, ss.formatNumber(on.key, 'X2'));
+			var Flipswitch = new $control_UIFlipSwitch.$ctor1(OFF, ON);
+			Flipswitch.change$1(ss.thisFix(ss.mkdel(this, this.$flip_Change)));
+			Flipswitch.disable(!$control_UI.isRULE_SET(this.$dpi));
+			this.fieldContain = new $control_UIFieldContain.$ctor2(this.$label, Flipswitch);
+			//FieldContain.Object.Trigger("create");
+			this.append(this.fieldContain);
+		},
+		setDefault: function() {
+			var Textbox = new $control_UITextInput();
+			Textbox.change$1(ss.thisFix(ss.mkdel(this, this.$text_Change)));
+			var value = '';
+			Textbox.set_value(value);
+			this.fieldContain = new $control_UIFieldContain.$ctor2(this.$label, Textbox);
+			this.append(this.fieldContain);
+		},
+		setRange: function(pii) {
+			var range = new $control_UIRangeInput();
+			range.change$1(ss.thisFix(ss.mkdel(this, this.$range_Change)));
+			this.fieldContain = new $control_UIFieldContain.$ctor2(this.$label, range);
+			var value = ss.cast(pii, $ctrlui_PropertyRangeInput).minimum;
+			range.set_value$1(value);
+			range.set_min(ss.cast(pii, $ctrlui_PropertyRangeInput).minimum);
+			range.set_max(ss.cast(pii, $ctrlui_PropertyRangeInput).maximum);
+			this.append$1(this.fieldContain.object).trigger('create');
+		},
+		$range_Change: function(elem, ev) {
+			if (!this.checkValiable()) {
+				return;
+			}
+			;
+			if (!this.checkHex()) {
+				return;
+			}
+			;
+			var data = this.get_$byteValue();
+			this.$dpi.set_inputData(data);
+			this.kadecotSet(this.$dpi, data);
+		},
+		$setCalBox: function() {
+			var Textbox = new $control_UICalBox();
+			Textbox.change$1(ss.thisFix(ss.mkdel(this, this.$calbox_Change)));
+			var epi = this.$dpi.get_propertyInfo();
+			this.fieldContain = new $control_UIFieldContain.$ctor2(this.$label, Textbox);
+			var len = this.$dpi.getMaxLength();
+			var valueDescription = '';
+			for (var $t1 = 0; $t1 < epi.fields.length; $t1++) {
+				var jfi = epi.fields[$t1];
+				valueDescription += '【' + jfi.description + ':' + jfi.valueDescription + '】';
+			}
+			Textbox.set_placeholder(this.$dpi.getText());
+			Textbox.set_value('');
+			//Textbox.Disable(!dpi.IsRULE_SET());
+			Textbox.set_readOnly(!$control_UI.isRULE_SET(this.$dpi));
+			Textbox.set_title(valueDescription);
+			this.one('dateboxcreate', ss.thisFix(ss.mkdel(this, this.$calbox_Create)));
+			this.append$1(this.fieldContain.object);
+		},
+		$calbox_Create: function(ele, ev) {
+			var textinput = $(ev.target).parent('.ui-input-datebox');
+			textinput.append(this.backButton.object);
+			this.backButton.click$1(ss.thisFix(ss.mkdel(this, this.$backButtonClick)));
+		},
+		$calbox_Change: function(elem, ev) {
+			var Calbox = ss.cast(this.fieldContain.input, $control_UICalBox);
+			var data = new Array(4);
+			this.removeClass$1();
+			if (!(Calbox.get_dY() >= 1 && Calbox.get_dY() < 9999 && (Calbox.get_dM() >= 1 && Calbox.get_dM() <= 12 && (Calbox.get_dD() >= 1 && Calbox.get_dD() <= 31)))) {
+				this.toggleClass('ecnl_pink', true);
+			}
+			else {
+				data[0] = parseInt(Calbox.get_xY().substr(0, 2), 16);
+				data[1] = parseInt(Calbox.get_xY().substr(2, 2), 16);
+				data[2] = parseInt(Calbox.get_xM(), 16);
+				data[3] = parseInt(Calbox.get_xD(), 16);
+				this.$dpi.set_inputData(data);
+				this.$dpi.set_isWaitRes(true);
+				this.set_class(2);
+			}
+		},
+		$flip_Change: function(elem, ev) {
+			var data = this.get_$byteValue();
+			this.$dpi.set_inputData(data);
+			this.kadecotSet(this.$dpi, data);
+		},
+		$setTextInput: function() {
+			var Textbox = new $control_UITextInput();
+			Textbox.change$1(ss.thisFix(ss.mkdel(this, this.$text_Change)));
+			Textbox.keypress(ss.thisFix(ss.mkdel(this, this.$text_KeyPress)));
+			Textbox.keyup(ss.thisFix(ss.mkdel(this, this.$text_Keyup)));
+			Textbox.on('textinputcreate', ss.thisFix(ss.mkdel(this, this.$text_Create)));
+			var epi = this.$dpi.get_propertyInfo();
+			var valueDescription = '';
+			for (var $t1 = 0; $t1 < epi.fields.length; $t1++) {
+				var jfi = epi.fields[$t1];
+				valueDescription += '【' + jfi.description + ':' + jfi.valueDescription + '】';
+			}
+			Textbox.set_value('');
+			//Textbox.Disable(!dpi.IsRULE_SET());
+			Textbox.set_readOnly(!$control_UI.isRULE_SET(this.$dpi));
+			Textbox.set_maxlength(this.$dpi.getMaxLength());
+			Textbox.set_title(valueDescription);
+			this.fieldContain = new $control_UIFieldContain.$ctor2(this.$label, Textbox);
+			this.append$1(this.fieldContain.object);
+		},
+		$setTimebox: function() {
+			var Textbox = new $control_UITimeBox();
+			Textbox.change$1(ss.thisFix(ss.mkdel(this, this.$timebox_Change$1)));
+			var epi = this.$dpi.get_propertyInfo();
+			this.fieldContain = new $control_UIFieldContain.$ctor2(this.$label, Textbox);
+			var len = this.$dpi.getMaxLength();
+			var valueDescription = '';
+			for (var $t1 = 0; $t1 < epi.fields.length; $t1++) {
+				var jfi = epi.fields[$t1];
+				valueDescription += '【' + jfi.description + ':' + jfi.valueDescription + '】';
+			}
+			Textbox.set_placeholder(this.$dpi.getText());
+			Textbox.set_value('');
+			Textbox.set_title(valueDescription);
+			//Textbox.Disable(!dpi.IsRULE_SET());
+			Textbox.set_readOnly(!$control_UI.isRULE_SET(this.$dpi));
+			this.append(this.fieldContain);
+			this.one('dateboxcreate', ss.thisFix(ss.mkdel(this, this.$timebox_Create)));
+		},
+		$setFieldSet: function(pii) {
+			var FieldSet = new $control_UIFieldSet();
+			var Label = new $control_UILabel();
+			Label.set_text(this.$dpi.getText());
+			FieldSet.set_horizontal(true);
+			FieldSet.change$1(ss.thisFix(ss.mkdel(this, this.$select_Change)));
+			this.fieldContain = new $control_UIFieldContain.$ctor2(Label, FieldSet);
+			var $t1 = ss.cast(pii, $ctrlui_PropertySelectInput).option.getEnumerator();
+			try {
+				while ($t1.moveNext()) {
+					var opt = $t1.current();
+					var Radio = new $control_UIRadioInput.$ctor1(ss.formatNumber(opt.key, 'X'));
+					FieldSet.append$2(new $control_UIFieldSet$RadioInput(new $control_UILabel.$ctor1(opt.value), Radio));
+				}
+			}
+			finally {
+				$t1.dispose();
+			}
+			this.append$1(this.fieldContain.object);
+		},
+		$select_Change: function(elem, ev) {
+			var data = this.get_$byteValue();
+			this.$dpi.set_inputData(data);
+			this.kadecotSet(this.$dpi, data);
+		},
+		$timebox_Change$1: function(ele, ev) {
+			this.removeClass$1();
+			if (this.get_changed()) {
+				this.$timebox_Change();
+			}
+		},
+		$timebox_Change: function() {
+			var value = this.fieldContain.input.get_value();
+			var val = value.split(':');
+			var data = new Array(2);
+			data[0] = parseInt(val[0], 10);
+			data[1] = parseInt(val[1], 10);
+			var hex = ss.formatNumber(data[0], 'X2') + ss.formatNumber(data[1], 'X2');
+			this.removeClass$1();
+			this.$dpi.set_inputData(data);
+			this.$dpi.set_isWaitRes(true);
+			this.toggleClass('ecnl_light_green', true);
+		},
+		$timebox_Create: function(ele, ev) {
+			var textinput = $(ev.target).parent('.ui-input-datebox');
+			textinput.append(this.backButton.object);
+			this.backButton.click$1(ss.thisFix(ss.mkdel(this, this.$backButtonClick)));
+		},
+		$text_Keyup: function(elem, ev) {
+			$(elem).change();
+		},
+		$text_Create: function(elem, ev) {
+			var textinput = $(ev.target).parent('.ui-input-text');
+			textinput.append(this.backButton.object);
+			this.backButton.click$1(ss.thisFix(ss.mkdel(this, this.$backButtonClick)));
+		},
+		$text_KeyPress: function(elem, ev) {
+			var number = ev.which >= 48 && ev.which <= 57;
+			var lower = ev.which >= 97 && ev.which <= 102;
+			var upper = ev.which >= 65 && ev.which <= 70;
+			var BackSpace = ev.which === 8;
+			var Delete = ev.which === 0;
+			var flag = !number && !lower && (!BackSpace && !Delete) && !upper;
+			if (flag) {
+				ev.preventDefault();
+			}
+		},
+		$backButtonClick: function(elem, ev) {
+			this.fieldContain.input.set_value(this.toText(this.getValue));
+			this.fieldContain.input.object.change();
+		},
+		$text_Change: function(elem, ev) {
+			if (this.get_changed()) {
+				this.removeClass$1();
+				if (!this.checkValiable()) {
+					return;
+				}
+				;
+				if (!this.checkHex()) {
+					return;
+				}
+				;
+				this.$setDpi();
+			}
+		},
+		get_$inputType: function() {
+			return ss.getInstanceType(this.fieldContain.input);
+		},
+		$toByteValue: function() {
+			var Value = this.fieldContain.input.get_value();
+			var data = new Array(ss.Int32.div(Value.length, 2));
+			for (var i = 0, j = 0; j < Value.length; j += 2) {
+				data[i++] = parseInt(Value.substr(j, 2), 16);
+			}
+			return data;
+		},
+		$setDpi: function() {
+			this.$dpi.set_inputData(this.get_$byteValue());
+			this.$dpi.set_isWaitRes(true);
+			this.set_errorText('');
+			this.toggleClass((this.$user ? 'ecnl_light_green' : 'ecnl_light_blue'), true);
+		},
+		get_$byteValue: function() {
+			return this.$toByteValue();
+		},
+		get_errorText: function() {
+			return this.$liAside.get_text();
+		},
+		set_errorText: function(value) {
+			this.$liAside.set_text(value);
+		},
+		removeClass$1: function() {
+			this.set_errorText('');
+			this.backButton.hide();
+			this.removeClass('ecnl_pink');
+			this.removeClass('ecnl_violet');
+			this.removeClass('ecnl_light_green');
+			this.removeClass('ecnl_light_blue');
+		},
+		setName: function(nameid) {
+			var name = nameid;
+			if (ss.referenceEquals(this.get_$inputType(), $control_UICalBox)) {
+				name = 'cal_' + nameid;
+			}
+			else if (ss.referenceEquals(this.get_$inputType(), $control_UITimeBox)) {
+				name = 'tmb_' + nameid;
+			}
+			else if (ss.referenceEquals(this.get_$inputType(), $control_UITextInput)) {
+				name = 'txt_' + nameid;
+			}
+			else if (ss.referenceEquals(this.get_$inputType(), $control_UIRadioInput)) {
+				name = 'rng_' + nameid;
+			}
+			else if (ss.referenceEquals(this.get_$inputType(), $control_UIFlipSwitch)) {
+				name = 'flp_' + nameid;
+				var Flipswitch = ss.cast(this.fieldContain.input, $control_UIFlipSwitch);
+				var val0 = Flipswitch.OFF.get_value();
+				var val1 = Flipswitch.ON.get_value();
+				Flipswitch.OFF.set_id(name + val0);
+				Flipswitch.ON.set_id(name + val1);
+			}
+			else if (ss.referenceEquals(this.get_$inputType(), $control_UIFieldSet)) {
+				name = 'sel_' + nameid;
+				var FieldSet = ss.cast(this.fieldContain.input, $control_UIFieldSet);
+				FieldSet.set_id(name);
+				for (var i = 0; i < FieldSet.radioList.length; i++) {
+					var id = name + FieldSet.radioList[i].radio.get_value();
+					FieldSet.radioList[i].radio.set_name(name);
+					FieldSet.radioList[i].radio.set_id(id);
+					FieldSet.radioList[i].label.set_for(id);
+				}
+			}
+			this.fieldContain.label.set_for(name);
+			this.fieldContain.input.set_id(name);
+			this.fieldContain.input.set_name(name);
+		},
+		checkHex: function() {
+			var Value = this.fieldContain.input.get_value();
+			if (!(new RegExp('^([0-9A-Fa-f][0-9A-Fa-f])+$')).test(Value)) {
+				this.set_errorText('16進数で入力してください');
+				this.toggleClass('ecnl_pink', true);
+				return false;
+			}
+			return true;
+		},
+		checkValiable: function() {
+			var epi = this.$dpi.get_propertyInfo();
+			//可変長データの場合
+			var valiable = this.$dpi.isValiable();
+			var len = this.$dpi.getMaxLength();
+			var Value = this.fieldContain.input.get_value();
+			var length = Value.length !== len && (!valiable || Value.length > len);
+			if (Value.length !== len && (!valiable || Value.length > len)) {
+				this.set_errorText(len.toString() + '文字で入力してください');
+				this.toggleClass((this.$user ? 'ecnl_pink' : 'ecnl_violet'), true);
+				return false;
+			}
+			return true;
+		},
+		toTextDefault: function(data) {
+			var value = '';
+			if (ss.isNullOrUndefined(data)) {
+				return '';
+			}
+			for (var i = 0; i < data.length; i++) {
+				value += ss.formatNumber(data[i], 'X2');
+			}
+			return value;
+		},
+		toTextTimeBox: function(data) {
+			var str = this.toTextDefault(data);
+			if (str.length === 4) {
+				var h = parseInt('0x' + str.substr(0, 2));
+				var m = parseInt('0x' + str.substr(2, 2));
+				return ss.formatNumber(h, 'D2') + ':' + ss.formatNumber(m, 'D2');
+			}
+			else {
+				return '';
+			}
+		},
+		toTextCal: function(data) {
+			var str = this.toText(data);
+			if (str.length === 8) {
+				var y = parseInt('0x' + str.substr(0, 4));
+				var m = parseInt('0x' + str.substr(4, 2));
+				var d = parseInt('0x' + str.substr(6, 2));
+				if (y < 1 || m < 1 || d < 1) {
+					return ss.formatNumber(y, 'D4') + '/' + ss.formatNumber(m, 'D2') + '/' + ss.formatNumber(m, 'D2');
+				}
+				var date = new Date(y, m - 1, d);
+				return ss.formatDate(date, 'yyyy/MM/dd');
+			}
+			else {
+				return '';
+			}
+		},
+		toText: function(data) {
+			if (ss.isNullOrUndefined(data)) {
+				return '';
+			}
+			if (ss.equals(ss.getInstanceType(this.fieldContain.input), $control_UITimeBox)) {
+				return this.toTextTimeBox(data);
+			}
+			else if (ss.equals(ss.getInstanceType(this.fieldContain.input), $control_UICalBox)) {
+				return this.toTextCal(data);
+			}
+			else {
+				return this.toTextDefault(data);
+			}
+		},
+		get_changed: function() {
+			return !ss.equalsT(this.fieldContain.input.get_value(), this.toText(this.getValue));
+		},
+		grpBoxChange: function(ele, ev) {
+			this.backButton.toggle(this.get_changed());
+			if (!this.get_changed()) {
+				this.$dpi.set_isWaitRes(false);
+				this.$dpi.set_inputData(null);
+				this.removeClass$1();
+			}
+		},
+		setGetValue: function(data) {
+			this.removeClass$1();
+			this.getValue = data;
+			this.fieldContain.input.set_value(this.toText(data));
+			this.fieldContain.input.change();
+		}
+	}, $control_UIListviewItem);
+	$control_UIGrpBox.$ctor1.prototype = $control_UIGrpBox.prototype;
+	ss.initClass($control_UIH, $asm, {}, $control_UIObject);
+	$control_UIH.$ctor1.prototype = $control_UIH.$ctor2.prototype = $control_UIH.prototype;
+	ss.initClass($control_UIImg, $asm, {}, $control_UIObject);
+	$control_UIImg.$ctor1.prototype = $control_UIImg.$ctor2.prototype = $control_UIImg.prototype;
+	ss.initClass($control_UILabel, $asm, {}, $control_UIObject);
+	$control_UILabel.$ctor1.prototype = $control_UILabel.$ctor3.prototype = $control_UILabel.$ctor4.prototype = $control_UILabel.$ctor2.prototype = $control_UILabel.prototype;
+	ss.initClass($control_UILi, $asm, {}, $control_UIObject);
+	ss.initClass($control_UIListDivider, $asm, {}, $control_UIListviewItem);
+	$control_UIListDivider.$ctor1.prototype = $control_UIListDivider.$ctor2.prototype = $control_UIListDivider.$ctor3.prototype = $control_UIListDivider.prototype;
+	ss.initClass($control_UIListview, $asm, {}, $control_UIObject);
+	$control_UIListview.$ctor1.prototype = $control_UIListview.prototype;
+	ss.initClass($control_UINodeList, $asm, {
+		getNodeList: function() {
+			return this.$info.children();
+		},
+		$listitem_Click: function(listitem, item) {
+			//選択中クラスの追加
+			$('.li-select').removeClass('li-select');
+			listitem.addClass('li-select');
+		}
+	});
+	ss.initEnum($control_UIObject$EcnlClass, $asm, { ecnl_pink: 0, ecnl_violet: 1, ecnl_light_green: 2, ecnl_light_blue: 3 });
+	ss.initClass($control_UIOption, $asm, {}, $control_UIObject);
+	$control_UIOption.$ctor2.prototype = $control_UIOption.$ctor1.prototype = $control_UIOption.prototype;
+	ss.initClass($control_UIP, $asm, {}, $control_UIObject);
+	$control_UIP.$ctor1.prototype = $control_UIP.$ctor2.prototype = $control_UIP.prototype;
+	ss.initClass($control_UIPin, $asm, {
+		$setUIPinMode: function(i) {
+			this.uiPinMode.append(new $control_UILabel.$ctor4('INPUT', 'input' + i.toString(), 'pin' + i.toString()));
+			this.uiPinMode.append(new $control_UIRadioInput.$ctor3('input' + i.toString(), 'pin' + i.toString(), 'INPUT'));
+			this.uiPinMode.append(new $control_UILabel.$ctor4('OUTPUT', 'output' + i.toString(), 'pin' + i.toString()));
+			this.uiPinMode.append(new $control_UIRadioInput.$ctor3('output' + i.toString(), 'pin' + i.toString(), 'OUTPUT'));
+			this.uiPinMode.append(new $control_UILabel.$ctor4('INPUT_PULLUP', 'input_pullup' + i.toString(), 'pin' + i.toString()));
+			this.uiPinMode.append(new $control_UIRadioInput.$ctor3('input_pullup' + i.toString(), 'pin' + i.toString(), 'INPUT_PULLUP'));
+			return this.uiPinMode;
+		},
+		$setUIDigital: function(i) {
+		},
+		$setUIRange: function(i) {
+			this.range = new $control_UIRangeInput.$ctor1(-1, 255);
+			this.range.set_value$1(123);
+		},
+		$setAnalogRead: function(i) {
+			this.analogRead = new $control_UIRangeInput.$ctor1(0, 1023);
+			this.analogRead.handle = false;
+		},
+		getElements: function() {
+			var elements = new Array(2);
+			elements[0] = this.listDivider.get_element();
+			elements[1] = this.get_element();
+			return elements;
+		},
+		setPinModeChange: function(eventhandler) {
+			if (ss.isValue(this.uiPinMode)) {
+				this.uiPinMode.change$1(ss.thisFix(ss.mkdel(this, function(elem, ev) {
+					eventhandler(this.uiPinMode, this.pin);
+				})));
+			}
+		},
+		setDigitalChange: function(eventhandler) {
+			if (ss.isValue(this.flipSwitch)) {
+				this.flipSwitch.change$1(ss.thisFix(ss.mkdel(this, function(elem, ev) {
+					eventhandler(this.readButton, this.flipSwitch, this.pin);
+				})));
+			}
+		},
+		setReadButtonClick: function(eventhandler) {
+			if (ss.isValue(this.flipSwitch)) {
+				this.readButton.click$1(ss.thisFix(ss.mkdel(this, function(elem, ev) {
+					eventhandler(this.readButton, this.flipSwitch, this.pin);
+				})));
+			}
+		},
+		setAnalogWriteChange: function(eventhandler) {
+			if (ss.isValue(this.range)) {
+				this.range.change$1(ss.thisFix(ss.mkdel(this, function(elem, ev) {
+					eventhandler(this.range, this.pin);
+				})));
+			}
+		},
+		setAnalogReadChange: function(eventhandler) {
+			if (ss.isValue(this.analogRead)) {
+				this.readButton.click$1(ss.thisFix(ss.mkdel(this, function(elem, ev) {
+					eventhandler(this.analogRead, this.pin);
+				})));
+			}
+		}
+	}, $control_UILi);
+	$control_UIPin.$ctor1.prototype = $control_UIPin.prototype;
+	ss.initClass($control_UIRadioInput, $asm, {}, $control_UIObject);
+	$control_UIRadioInput.$ctor2.prototype = $control_UIRadioInput.$ctor3.prototype = $control_UIRadioInput.$ctor1.prototype = $control_UIRadioInput.prototype;
+	ss.initClass($control_UIRangeInput, $asm, {
+		$getMaxLength: function() {
+			var min = 0;
+			var j;
+			if (this.get_min() < 0) {
+				min = 1;
+				j = -10;
+				while (ss.Int32.div(this.get_max(), j) > 1) {
+					min++;
+					j *= 10;
+				}
+				min++;
+			}
+			var i = 1;
+			j = 10;
+			while (ss.Int32.div(this.get_max(), j) >= 1) {
+				i++;
+				j *= 10;
+			}
+			return ((i > min) ? i : min);
+		},
+		get_$dataHighlight: function() {
+			return /^\s*true\s*$/i.test(this.getAttribute('data-highlight'));
+		},
+		set_$dataHighlight: function(value) {
+			this.attribute$1('data-highlight', value.toString());
+		},
+		get_value$1: function() {
+			if (this.get_value() === '') {
+				this.set_value$1(this.get_min());
+			}
+			return parseInt(this.get_value());
+		},
+		set_value$1: function(value) {
+			this.set_value(value.toString());
+		},
+		$sliderKeypress: function(ele, ev) {
+			var number = ev.which >= 48 && ev.which <= 57;
+			var BackSpace = ev.which === 8;
+			var Delete = ev.which === 0;
+			var minus = ev.which === 45;
+			var flag = !number && !minus && (!BackSpace && !Delete);
+			if (flag) {
+				ev.preventDefault();
+			}
+		},
+		$sliderCreate: function(ele, ev) {
+			this.sliderHandle = new $control_UIRangeInput$UIHandle(ev);
+			this.sliderHandle.toggle(this.handle);
+			var SliderTrack = new $control_UIRangeInput$UISliderTrack(ev);
+			SliderTrack.pointerEvents(this.handle);
+			this.pointerEvents(this.handle);
+		}
+	}, $control_UIObject);
+	$control_UIRangeInput.$ctor1.prototype = $control_UIRangeInput.prototype;
+	ss.initClass($control_UIRangeInput$UIHandle, $asm, {}, $control_UIObject);
+	ss.initClass($control_UIRangeInput$UISliderTrack, $asm, {}, $control_UIObject);
+	ss.initClass($control_UITimeBox, $asm, {
+		$dateBoxCreate: function(ele, ev) {
+			$control_UI.toggleClass($(ele).parents().find('.ui-icon-grid'), 'ui-icon-grid', 'ui-icon-clock');
+		}
+	}, $control_UITextInput);
+	ss.initEnum($ctrlui_$State, $asm, { $value: 0, $equalOrRange: 1, $description: 2, $unitOrCommaOrEnd: 3, $rengeMax: 4, $startParenthesis: 5, $rangeDescription: 6, $minDescription: 7, $rangeSeparetor: 8, $maxDescription: 9, $endParenthesis: 10, $commaOrEnd: 11, $bitFieldLSB: 12, $bitRange: 13, $bitFieldMSB: 14, $bitFieldDescription: 15, $bitRangeEnd: 16, $colon: 17 });
+	ss.initClass($ctrlui_$TokenInfo, $asm, {
+		toString: function() {
+			return this.$token;
+		},
+		$toInt32: function() {
+			switch (this.$type) {
+				case 1: {
+					return parseInt(this.$token.substring(2), 16);
+				}
+				case 2: {
+					return parseInt(this.$token);
+				}
+				default: {
+					return 0;
+				}
+			}
+		},
+		$toInt64: function(typeName) {
+			var temp;
+			switch (this.$type) {
+				case 1: {
+					temp = this.$token.substring(2);
+					return parseInt(temp, 16);
+				}
+				case 2: {
+					return parseInt(this.$token);
+				}
+				default: {
+					return 0;
+				}
+			}
+		}
+	});
+	ss.initEnum($ctrlui_$TokenType, $asm, { $separetor: 0, $hexValue: 1, $numeric: 2, $string: 3, $end: 4 });
+	ss.initClass($ctrlui_$ValueSet, $asm, {});
+	ss.initClass($ctrlui_Value, $asm, { get_disp: null, getInitialValue: null });
+	ss.initClass($ctrlui_BitField, $asm, {
+		get_least: function() {
+			return this.$_Least;
+		},
+		get_most: function() {
+			return this.$_Most;
+		},
+		get_disp: function() {
+			return this.$_Disp;
+		},
+		get_values: function() {
+			return this.$_Values;
+		},
+		get_ranges: function() {
+			return this.$_Ranges;
+		},
+		get_initailValue: function() {
+			return this.$_InitailValue;
+		},
+		getInitialValue: function() {
+			if (ss.isNullOrUndefined(this.$_InitailValue)) {
+				return '';
+			}
+			return this.$_InitailValue.getInitialValue();
+		},
+		$addValue: function(option) {
+			if (ss.isNullOrUndefined(this.$_InitailValue)) {
+				this.$_InitailValue = option;
+			}
+			this.$_Values.push(option);
+		},
+		$addRange: function(range) {
+			if (ss.isNullOrUndefined(this.$_InitailValue)) {
+				this.$_InitailValue = range;
+			}
+			this.$_Ranges.push(range);
+		},
+		$isInRange: function(val64) {
+			for (var $t1 = 0; $t1 < this.$_Values.length; $t1++) {
+				var val = this.$_Values[$t1];
+				if (val.get_val() !== val64) {
+					continue;
+				}
+				return true;
+			}
+			for (var $t2 = 0; $t2 < this.$_Ranges.length; $t2++) {
+				var rng = this.$_Ranges[$t2];
+				if (rng.get_min() > val64 || rng.get_max() < val64) {
+					continue;
+				}
+				return true;
+			}
+			return false;
+		},
+		$getInRangeValue: function(val64) {
+			for (var $t1 = 0; $t1 < this.$_Values.length; $t1++) {
+				var val = this.$_Values[$t1];
+				if (val.get_val() !== val64) {
+					continue;
+				}
+				return val;
+			}
+			for (var $t2 = 0; $t2 < this.$_Ranges.length; $t2++) {
+				var rng = this.$_Ranges[$t2];
+				if (rng.get_min() > val64 || rng.get_max() < val64) {
+					continue;
+				}
+				return new $ctrlui_InRangeValue(rng, val64);
+			}
+			return null;
+		}
+	}, $ctrlui_Value);
+	ss.initClass($ctrlui_BitFiledsValue, $asm, {
+		get_disp: function() {
+			return '';
+		},
+		getInitialValue: function() {
+			return this.$_Value.toString(16).toUpperCase();
+		}
+	}, $ctrlui_Value);
+	ss.initClass($ctrlui_DeviceController, $asm, {
+		get_nodeList: function() {
+			return this.$m_NodeList;
+		},
+		recvResponse: function(response) {
+			var ni = {};
+			var di = {};
+			this.$getDevice(response.sender, response.seoj, ni, di);
+			if (ss.isNullOrUndefined(ni.$)) {
+				return false;
+			}
+			if (ss.isNullOrUndefined(di.$)) {
+				return false;
+			}
+			for (var $t1 = 0; $t1 < response.properties.length; $t1++) {
+				var prop = response.properties[$t1];
+				if (prop.edt.length > 0) {
+					//プロパティ値を採用
+					di.$.$setPropertyData(prop.epc, prop.$getEdt());
+				}
+				else {
+					// プロパティ値書き込み応答の場合
+					if (response.esv === 113) {
+						// 入力値を採用
+						di.$.$adoptInputData(prop.epc);
+					}
+				}
+			}
+			return true;
+		},
+		recvResponse$1: function(di, esv, epc, edt) {
+			if (edt.length > 0) {
+				// プロパティ値を設定
+				di.$setPropertyData(epc, edt);
+			}
+			else {
+				// プロパティ値書き込み応答の場合
+				if (esv === 113) {
+					// 入力値を採用
+					di.$adoptInputData(epc);
+				}
+			}
+		},
+		$getDevice: function(nodid, eoj, nod, obj) {
+			obj.$ = null;
+			nod.$ = this.$findNode(nodid);
+			if (ss.isValue(nod.$)) {
+				// ノードプロファイルの場合
+				if (eoj.get_x1() === 14 && eoj.get_x2() === 240) {
+					obj.$ = nod.$.get_profile();
+				}
+				else {
+					obj.$ = this.$findDevice(nod.$, eoj);
+				}
+			}
+		},
+		$findNode: function(enodid) {
+			var ni = null;
+			switch (enodid) {
+				case 0:
+				case 1: {
+					ni = this.$m_NodeList[0];
+					break;
+				}
+				default: {
+					ni = Enumerable.from(this.$m_NodeList).firstOrDefault(function(p) {
+						return p.get_nodeId() === enodid;
+					}, ss.getDefaultValue($ctrlui_DeviceController$NodeInfo));
+					break;
+				}
+			}
+			return ni;
+		},
+		$findDevice: function(ni, eoj) {
+			var $t1 = ni.get_devices();
+			for (var $t2 = 0; $t2 < $t1.length; $t2++) {
+				var di = $t1[$t2];
+				if (di.get_classGroupCode() === eoj.get_x1() && di.get_classCode() === eoj.get_x2() && di.get_instanceCode() === eoj.get_x3()) {
+					return di;
+				}
+			}
+			return null;
+		}
+	}, $control_UIDeviceController);
+	ss.initClass($ctrlui_DeviceController$DeviceInfo, $asm, {
+		get_classInfo: function() {
+			return this.$m_ClassInfo;
+		},
+		get_profile: function() {
+			return this.$m_Profile;
+		},
+		get_classGroupCode: function() {
+			return this.$m_ClassGroupCode;
+		},
+		get_classCode: function() {
+			return this.$m_ClassCode;
+		},
+		get_instanceCode: function() {
+			return this.$m_InstanceCode;
+		},
+		get_properties: function() {
+			return this.$m_Properties;
+		},
+		get_eObjId: function() {
+			return this.$m_EObjId;
+		},
+		get_data: function() {
+			return this.$2$DataField;
+		},
+		set_data: function(value) {
+			this.$2$DataField = value;
+		},
+		getText: function() {
+			if (ss.isValue(this.$m_ClassInfo)) {
+				return this.$m_ClassInfo.description;
+			}
+			else {
+				return ss.formatString('{0:X2}{1:X2}{2:X2}', this.$m_ClassGroupCode, this.$m_ClassCode, this.$m_InstanceCode);
+			}
+		},
+		$setPropertyData: function(epc, edt) {
+			var dpi = Enumerable.from(this.$m_Properties).firstOrDefault(function(p) {
+				return p.get_propertyCode() === epc;
+			}, ss.getDefaultValue($ctrlui_DeviceController$DevicePropertyInfo));
+			if (ss.isNullOrUndefined(dpi)) {
+				return;
+			}
+			dpi.setPropertyData(edt);
+		},
+		$adoptInputData: function(epc) {
+			var dpi = Enumerable.from(this.$m_Properties).firstOrDefault(function(p) {
+				return p.get_propertyCode() === epc;
+			}, ss.getDefaultValue($ctrlui_DeviceController$DevicePropertyInfo));
+			if (ss.isNullOrUndefined(dpi)) {
+				return;
+			}
+			dpi.adoptInputData();
+		},
+		getObjectID: function() {
+			var text = ss.formatNumber(this.get_classGroupCode(), 'X2') + ss.formatNumber(this.get_classCode(), 'X2') + ss.formatNumber(this.get_instanceCode(), 'X2');
+			return text;
+		},
+		setUIDevice: function(page) {
+			this.uiDeviceSet(this, page);
+		}
+	}, $control_UIDeviceController$UIDeviceInfo);
+	$ctrlui_DeviceController$DeviceInfo.$ctor2.prototype = $ctrlui_DeviceController$DeviceInfo.$ctor1.prototype = $ctrlui_DeviceController$DeviceInfo.prototype;
+	ss.initClass($ctrlui_DeviceController$DevicePropertyInfo, $asm, {
+		get_propertyInfo: function() {
+			return this.$m_PropertyInfo;
+		},
+		get_propertyCode: function() {
+			return this.$m_PropertyCode;
+		},
+		getPropertyCode: function(format) {
+			return ss.formatNumber(this.get_propertyCode(), format);
+		},
+		isValiable: function() {
+			return (ss.isNullOrUndefined(this.get_propertyInfo()) ? true : ss.contains(this.get_propertyInfo().access, 'VARIABLE'));
+		},
+		get_flag: function() {
+			return this.$m_Flag;
+		},
+		get_size: function() {
+			return this.$m_Size;
+		},
+		getText: function() {
+			if (ss.isValue(this.$m_PropertyInfo)) {
+				return this.$m_PropertyInfo.description;
+			}
+			else {
+				return ss.formatString('{0:X2}', this.$m_PropertyCode);
+			}
+		},
+		get_inputData: function() {
+			return this.$2$InputDataField;
+		},
+		set_inputData: function(value) {
+			this.$2$InputDataField = value;
+		},
+		get_data: function() {
+			return this.$m_Data;
+		},
+		get_isWaitRes: function() {
+			return this.$2$IsWaitResField;
+		},
+		set_isWaitRes: function(value) {
+			this.$2$IsWaitResField = value;
+		},
+		get_inputTypes: function() {
+			return this.$m_InputTypes;
+		},
+		setPropertyData: function(edt) {
+			this.$m_Data = edt;
+		},
+		adoptInputData: function() {
+			this.$m_Data = this.get_inputData();
+			this.set_inputData(null);
+		},
+		prepareInputInfo: function() {
+			if (ss.isValue(this.$m_InputTypes)) {
+				return;
+			}
+			this.$m_InputTypes = [];
+			var epi = this.$m_PropertyInfo;
+			if (ss.isNullOrUndefined(epi) || !epi.primitive) {
+				return;
+			}
+			var valueRange = $ctrlui_ValueRange.parse(epi.valueDescription, epi);
+			if (!ss.isNullOrEmptyString(epi.initialValue)) {
+				valueRange.set_initailValue(epi.initialValue);
+			}
+			if (valueRange.get_values().length > 0) {
+				var pii;
+				pii = new $ctrlui_PropertySelectInput();
+				var $t1 = valueRange.get_values();
+				for (var $t2 = 0; $t2 < $t1.length; $t2++) {
+					var option = $t1[$t2];
+					pii.option.add(option.get_val(), option.get_disp());
+				}
+				this.$m_InputTypes.push(pii);
+			}
+			var $t3 = valueRange.get_ranges();
+			for (var $t4 = 0; $t4 < $t3.length; $t4++) {
+				var range = $t3[$t4];
+				var pii1;
+				pii1 = new $ctrlui_PropertyRangeInput();
+				pii1.minimum = range.get_min();
+				pii1.maximum = range.get_max();
+				pii1.minDescrption = range.get_minDisp();
+				pii1.maxDescrption = range.get_maxDisp();
+				this.$m_InputTypes.push(pii1);
+			}
+		}
+	}, $control_UIDeviceController$UIDevicePropertyInfo);
+	$ctrlui_DeviceController$DevicePropertyInfo.$ctor1.prototype = $ctrlui_DeviceController$DevicePropertyInfo.prototype;
+	ss.initClass($ctrlui_DeviceController$NodeInfo, $asm, {
+		get_nodeId: function() {
+			return this.$m_NodeId;
+		},
+		get_profile: function() {
+			return this.$m_Profile;
+		},
+		get_devices: function() {
+			return this.$m_Devices;
+		},
+		get_data: function() {
+			return this.$1$DataField;
+		},
+		set_data: function(value) {
+			this.$1$DataField = value;
+		}
+	});
+	ss.initEnum($ctrlui_ENOD_ID, $asm, { noT_MATCH_ID: -1, multicasT_ID: 0, locaL_ID: 1, apI_ID: 2, remotE_ID: 3, tablE_NUM: 100 });
+	ss.initEnum($ctrlui_EPC_FLAG, $asm, { NONE: 0, rulE_SET: 1, rulE_GET: 2, rulE_ANNO: 4, ANNOUNCE: 64, VARIABLE: 128 });
+	ss.initClass($ctrlui_Information, $asm, {
+		update: function(ele, id) {
+			var page = $CtrlUI.getPage(ele);
+			this.$info = $('#' + id, page);
+			if (ss.isNullOrUndefined(this.$info)) {
+				return;
+			}
+			$.ajax('./' + id + '.json').success(ss.mkdel(this, this.$success)).error(ss.mkdel(this, this.$error));
+		},
+		$success: function(data, textStatus, request) {
+			var items = ss.cast((ss.referenceEquals(ss.getInstanceType(data), String) ? $.parseJSON(ss.cast(data, String)) : data), Array);
+			var listview = (new $control_UIListview.$ctor1(['data-inset', true, 'data-theme', 'b'])).object;
+			listview.append((new $control_UIListDivider.$ctor1('ソフトウェア情報')).object);
+			for (var $t1 = 0; $t1 < items.length; $t1++) {
+				var item = items[$t1];
+				var title = ss.cast(item.title, String);
+				var version = ss.cast(item.version, String);
+				var link = ss.cast(item.link, String);
+				var note = ss.cast(item.note, String);
+				var a;
+				if (ss.isNullOrEmptyString(link)) {
+					a = new $control_UIAnchor.$ctor2(new $control_UIH.$ctor2(2, title));
+					a.set_href('#');
+				}
+				else {
+					a = new $control_UIAnchor.$ctor2(new $control_UIH.$ctor2(2, title));
+					a.set_href(link);
+					a.set_target('_blank');
+				}
+				a.append(new $control_UIP.$ctor1('Version ' + version));
+				if (!ss.isNullOrEmptyString(note)) {
+					a.append(new $control_UIP.$ctor1(note));
+				}
+				listview.append((new $control_UIListviewItem.$ctor1(a)).object);
+			}
+			var anchor = new $control_UIAnchor();
+			anchor.set_target('_blank');
+			anchor.set_href('http://www.core-s.co.jp');
+			anchor.append$1((new $control_UIImg.$ctor2(['src', 'imgs/core-s.svg'])).object).append('コアーズ株式会社');
+			var listitem = (new $control_UIListDivider.$ctor2(anchor)).object;
+			listview.append(listitem);
+			this.$info.html('');
+			this.$info.append(listview);
+			$('ul', this.$info).listview().listview('refresh');
+			this.$info.popup('reposition', { positionTo: 'origin' });
+		},
+		$error: function(request, textStatus, error) {
+			var listview = (new $control_UIListview.$ctor1(['data-inset', 'true', 'data-theme', 'b'])).object;
+			listview.append((new $control_UIListDivider.$ctor1('ソフトウェア情報')).object);
+			listview.append((new $control_UIListviewItem.$ctor1(new $control_UIP.$ctor1('通信エラー'))).object);
+			this.$info.append(listview);
+			$('ul', this.$info).listview().listview('refresh');
+			this.$info.popup('reposition', { positionTo: 'origin' });
+		}
+	});
+	ss.initClass($ctrlui_InRangeValue, $asm, {
+		get_range: function() {
+			return this.$_Range;
+		},
+		get_value: function() {
+			return this.$_Value;
+		},
+		get_disp: function() {
+			return this.$_Range.getDisp(this.$_Value);
+		},
+		getInitialValue: function() {
+			return this.$_Value.toString(16).toUpperCase();
+		}
+	}, $ctrlui_Value);
+	ss.initClass($ctrlui_JsonClassGroupInfo, $asm, {});
+	ss.initClass($ctrlui_JsonClassInfo, $asm, {});
+	ss.initClass($ctrlui_JsonFieldInfo, $asm, {});
+	ss.initClass($ctrlui_JsonObjectInfo, $asm, {
+		findProperty: function(epc) {
+			for (var $t1 = 0; $t1 < this.properties.length; $t1++) {
+				var item = this.properties[$t1];
+				if (item.propertyCode === epc) {
+					return item;
+				}
+			}
+			return null;
+		}
+	});
+	ss.initClass($ctrlui_JsonNodeInfo, $asm, {}, $ctrlui_JsonObjectInfo);
+	ss.initClass($ctrlui_JsonPropertyInfo, $asm, {}, $ctrlui_JsonFieldInfo);
+	$ctrlui_JsonPropertyInfo.$ctor1.prototype = $ctrlui_JsonPropertyInfo.prototype;
+	ss.initClass($ctrlui_JsonSkeltonResult, $asm, {});
+	ss.initClass($ctrlui_Option, $asm, {
+		get_val: function() {
+			return this.$_Val;
+		},
+		get_disp: function() {
+			return this.$_Disp;
+		},
+		getInitialValue: function() {
+			return this.$_Val.toString(16).toUpperCase();
+		}
+	}, $ctrlui_Value);
+	ss.initClass($ctrlui_PropertyInputInfo, $asm, {});
+	ss.initEnum($ctrlui_PropertyInputMode, $asm, { unknown: 0, select: 1, range: 2 });
+	ss.initClass($ctrlui_PropertyRangeInput, $asm, {}, $ctrlui_PropertyInputInfo);
+	ss.initClass($ctrlui_PropertySelectInput, $asm, {}, $ctrlui_PropertyInputInfo);
+	ss.initClass($ctrlui_Range, $asm, {
+		get_min: function() {
+			return this.$_Min;
+		},
+		get_max: function() {
+			return this.$_Max;
+		},
+		get_disp: function() {
+			return this.$_Disp;
+		},
+		get_minDisp: function() {
+			return this.$_MinDisp;
+		},
+		get_maxDisp: function() {
+			return this.$_MaxDisp;
+		},
+		get_unit: function() {
+			return this.$_Unit;
+		},
+		get_initialValue: function() {
+			return this.$_InitialValue;
+		},
+		set_initialValue: function(value) {
+			this.$_InitialValue = value;
+		},
+		getInitialValue: function() {
+			return this.$_InitialValue.toString(16).toUpperCase();
+		},
+		getDisp: function(value) {
+			return this.$_Disp + value.toString() + this.$_Unit;
+		}
+	}, $ctrlui_Value);
+	$ctrlui_Range.$ctor1.prototype = $ctrlui_Range.prototype;
+	ss.initClass($ctrlui_T_ECN_EOJ, $asm, {
+		get_x1: function() {
+			return this.$_eoj[0];
+		},
+		set_x1: function(value) {
+			this.$_eoj[0] = value;
+		},
+		get_x2: function() {
+			return this.$_eoj[1];
+		},
+		set_x2: function(value) {
+			this.$_eoj[1] = value;
+		},
+		get_x3: function() {
+			return this.$_eoj[2];
+		},
+		set_x3: function(value) {
+			this.$_eoj[2] = value;
+		}
+	});
+	ss.initClass($ctrlui_ValueRange, $asm, {
+		get_values: function() {
+			return this.$_Values;
+		},
+		get_ranges: function() {
+			return this.$_Ranges;
+		},
+		get_bitFields: function() {
+			return this.$_BitFields;
+		},
+		get_memberFields: function() {
+			return this.$_MemberFields;
+		},
+		get_initailValue: function() {
+			if (ss.isNullOrUndefined(this.$_InitailValue)) {
+				return '';
+			}
+			return this.$_InitailValue.getInitialValue();
+		},
+		set_initailValue: function(value) {
+			var val64 = parseInt(value);
+			for (var $t1 = 0; $t1 < this.$_Values.length; $t1++) {
+				var val = this.$_Values[$t1];
+				if (val.get_val() !== val64) {
+					continue;
+				}
+				this.$_InitailValue = val;
+				return;
+			}
+			for (var $t2 = 0; $t2 < this.$_Ranges.length; $t2++) {
+				var rng = this.$_Ranges[$t2];
+				if (rng.get_min() > val64 || rng.get_max() < val64) {
+					continue;
+				}
+				this.$_InitailValue = new $ctrlui_InRangeValue(rng, val64);
+				return;
+			}
+			if (this.$_BitFields.length > 0) {
+				var ok = true;
+				var bitFlds = [];
+				for (var $t3 = 0; $t3 < this.$_BitFields.length; $t3++) {
+					var bit = this.$_BitFields[$t3];
+					if (!bit.$isInRange(val64)) {
+						ok = false;
+						break;
+					}
+					bitFlds.push(bit.$getInRangeValue(val64));
+				}
+				if (ok) {
+					this.$_InitailValue = new $ctrlui_BitFiledsValue(Array.prototype.slice.call(this.$_BitFields), Array.prototype.slice.call(bitFlds), val64);
+					return;
+				}
+			}
+		}
+	});
+	ss.initClass($ctrlui_WampApiKadecotDevice, $asm, {});
+	ss.initClass($ctrlui_WampApiKadecotGet, $asm, {
+		$getOption: function() {
+			return '{"deviceId":' + this.deviceId.toString() + '}';
+		},
+		$getArguments: function() {
+			return '{"propertyName":"' + this.propertyName + '"}';
+		}
+	});
+	ss.initClass($ctrlui_WampApiKadecotRes, $asm, {});
+	ss.initClass($ctrlui_WampApiKadecotSet, $asm, {
+		$getOption: function() {
+			return '{"deviceId":' + this.deviceId.toString() + '}';
+		},
+		$getArguments: function() {
+			return '{"propertyName":"' + this.propertyName + '","propertyValue":' + JSON.stringify(this.propertyValue) + '}';
+		}
+	});
+	ss.initClass($ctrlui_WebApiEchonetMessage, $asm, {});
+	ss.initClass($ctrlui_WebApiGet, $asm, {
+		addEpc: function(epc) {
+			this.properties.push(new $ctrlui_WebApiPropertyCode(epc));
+		},
+		getJson: function() {
+			return '{"esv_get":' + JSON.stringify(this) + '}';
+		},
+		getOption: function() {
+			return '{"deviceId":' + this.deojid.toString() + '}';
+		},
+		getArguments: function() {
+			return JSON.stringify(this);
+		}
+	});
+	$ctrlui_WebApiGet.$ctor1.prototype = $ctrlui_WebApiGet.prototype;
+	ss.initClass($ctrlui_WebApiGrsaguraMessage, $asm, {});
+	ss.initClass($ctrlui_WebApiObjectInfo, $asm, {});
+	ss.initClass($ctrlui_WebApiPropertyCode, $asm, {});
+	$ctrlui_WebApiPropertyCode.$ctor1.prototype = $ctrlui_WebApiPropertyCode.prototype;
+	ss.initClass($ctrlui_WebApiPropertyData, $asm, {
+		$setEdt: function(_edt) {
+			var sb = new ss.StringBuilder();
+			for (var $t1 = 0; $t1 < _edt.length; $t1++) {
+				var b = _edt[$t1];
+				sb.append(ss.formatNumber(b, 'X2'));
+			}
+			return sb.toString();
+		},
+		$getEdt: function() {
+			var result = new Array(ss.Int32.div(this.edt.length, 2));
+			for (var i = 0, j = 0; j < this.edt.length; i++, j += 2) {
+				result[i] = parseInt(this.edt.substr(j, 2), 16);
+			}
+			return result;
+		}
+	});
+	$ctrlui_WebApiPropertyData.$ctor1.prototype = $ctrlui_WebApiPropertyData.prototype;
+	ss.initClass($ctrlui_WebApiPropertyInfo, $asm, {});
+	ss.initClass($ctrlui_WebApiSet, $asm, {
+		addEdt: function(epc, edt) {
+			this.properties.push(new $ctrlui_WebApiPropertyData.$ctor1(epc, edt));
+		},
+		getJson: function() {
+			return '{"esv_set":' + JSON.stringify(this) + '}';
+		},
+		getOption: function() {
+			return '{"deviceId":' + this.deojid.toString() + '}';
+		},
+		getArguments: function() {
+			return JSON.stringify(this);
+		}
+	});
+	$ctrlui_WebApiSet.$ctor1.prototype = $ctrlui_WebApiSet.prototype;
+	ss.initClass($ctrlui_WebApiSetGet, $asm, {
+		addEdt: function(epc, edt) {
+			this.setProperties.push(new $ctrlui_WebApiPropertyData.$ctor1(epc, edt));
+		},
+		addEpc: function(epc) {
+			this.getProperties.push(new $ctrlui_WebApiPropertyCode(epc));
+		},
+		getJson: function() {
+			return '{"esv_set_get":' + JSON.stringify(this) + '}';
+		},
+		getOption: function() {
+			return '{"deviceId":' + this.deojid.toString() + '}';
+		},
+		getArguments: function() {
+			return JSON.stringify(this);
+		}
+	});
+	$ctrlui_WebApiSetGet.$ctor1.prototype = $ctrlui_WebApiSetGet.prototype;
+	ss.initEnum($Kadecot_WAMP_MSG_TYPE, $asm, { HELLO: 1, WELCOME: 2, ABORT: 3, CHALLENGE: 4, AUTHENTICATE: 5, GOODBYE: 6, HEARTBEAT: 7, ERROR: 8, PUBLISH: 16, PUBLISHED: 17, SUBSCRIBE: 32, SUBSCRIBED: 33, UNSUBSCRIBE: 34, UNSUBSCRIBED: 35, EVENT: 36, CALL: 48, CANCEL: 49, RESULT: 50, REGISTER: 64, REGISTERED: 65, UNREGISTER: 66, UNREGISTERED: 67, INVOCATION: 68, INTERRUPT: 69, YIELD: 70 });
+	ss.initClass($Kadecot_WampClient, $asm, {
+		connect: function(serverIp) {
+			if (this.$on_open_flag) {
+				return;
+			}
+			if (!ss.isNullOrEmptyString(serverIp)) {
+				this.$url = serverIp;
+				//port : 41314
+			}
+			else {
+				this.$url = 'ws://localhost:8080/';
+			}
+			this.$webSocket = new WebSocket(this.$url, this.$plotocols);
+			//webSocket.Origin 	 = origin;
+			this.$webSocket.onopen = ss.delegateCombine(this.$webSocket.onopen, ss.mkdel(this, this.onOpen));
+			this.$webSocket.onmessage = ss.delegateCombine(this.$webSocket.onmessage, ss.mkdel(this, this.onMessage));
+			this.$webSocket.onclose = ss.delegateCombine(this.$webSocket.onclose, ss.mkdel(this, this.onClose));
+			this.$webSocket.onerror = ss.delegateCombine(this.$webSocket.onerror, ss.mkdel(this, this.onError));
+			//webSocket.Connect();
+		},
+		disconnect: function() {
+			this.$webSocket.close();
+		},
+		addOpenCallback: function(callback) {
+			this.$wampClientCore.set_openCallback(callback);
+		},
+		deleteOpenCallback: function() {
+			this.$wampClientCore.deleteOpenCallback();
+		},
+		addCloseCallback: function(callback) {
+			this.$wampClientCore.set_closeCallback(callback);
+		},
+		deleteCloseCallback: function() {
+			this.$wampClientCore.deleteCloseCallback();
+		},
+		addGoodbyeCallback: function(callback) {
+			this.$wampClientCore.set_goodbyeCallback(callback);
+		},
+		deleteGoodbyeCallback: function() {
+			this.$wampClientCore.deleteGoodbyeCallback();
+		},
+		addHeartbeatCallback: function(callback) {
+			this.$wampClientCore.set_heartbeatCallback(callback);
+		},
+		deleteHeartbeatCallback: function() {
+			this.$wampClientCore.deleteHeartbeatCallback();
+		},
+		addInvocationCallback: function(request, callback) {
+			this.$wampClientCore.get_invocationCallback().set_item(request, callback);
+		},
+		deleteInvocationCallback: function(request) {
+			this.$wampClientCore.deleteInvocationCallback(request);
+		},
+		sendHello: function(realm, details, callback) {
+			//serialize
+			var data;
+			data = $Kadecot_WampSerializer.createHello(realm, details);
+			//encrypt data
+			//set callback
+			this.$wampClientCore.set_helloCallback(callback);
+			//send data
+			if (this.$on_open_flag === true) {
+				this.$webSocket.send(data);
+			}
+			else {
+				return null;
+			}
+			return data;
+		},
+		sendAuthenticate: function(signature, extra, callback) {
+			//serialize
+			var data;
+			data = $Kadecot_WampSerializer.createAuthenticate(signature, extra);
+			//encrypt data
+			//set callback
+			this.$wampClientCore.set_authenticateCallback(callback);
+			//send data
+			if (this.$on_open_flag) {
+				this.$webSocket.send(data);
+			}
+			else {
+				return null;
+			}
+			return data;
+		},
+		sendGoodbye: function(details, reason, callback) {
+			//serialize
+			var data;
+			data = $Kadecot_WampSerializer.createGoodbye(details, reason);
+			//encrypt data
+			//set callback
+			this.$wampClientCore.set_goodbyeCallback(callback);
+			//send data
+			if (this.$on_open_flag) {
+				this.$webSocket.send(data);
+			}
+			else {
+				return null;
+			}
+			return data;
+		},
+		sendHeartbeat: function(incomingSeq, outgoingSeq, discard) {
+			//serialize
+			var data;
+			data = $Kadecot_WampSerializer.createHeartbeat(incomingSeq, outgoingSeq, discard);
+			//encrypt data
+			//send data
+			if (this.$on_open_flag) {
+				this.$webSocket.send(data);
+			}
+			else {
+				return null;
+			}
+			return data;
+		},
+		sendError: function(type, request, details, error, arguments1, argumentsKw) {
+			//serialize
+			var data;
+			data = $Kadecot_WampSerializer.createError(type, request, details, error, arguments1, argumentsKw);
+			//encrypt data
+			//send data
+			if (this.$on_open_flag) {
+				this.$webSocket.send(data);
+			}
+			else {
+				return null;
+			}
+			return data;
+		},
+		sendPublish: function(options, topic, arguments1, argumentsKw, callback) {
+			//serialize
+			var data;
+			var request;
+			request = this.$request_id;
+			this.$request_id++;
+			data = $Kadecot_WampSerializer.createPublish(request, options, topic, arguments1, argumentsKw);
+			//encrypt data
+			//set callback
+			this.$wampClientCore.get_publishCallback().set_item(request, callback);
+			//send data
+			if (this.$on_open_flag) {
+				this.$webSocket.send(data);
+			}
+			else {
+				return null;
+			}
+			return data;
+		},
+		sendSubscribe: function(options, topic, eventfunc, callback) {
+			//serialize
+			var data;
+			var request;
+			request = this.$request_id;
+			this.$request_id++;
+			data = $Kadecot_WampSerializer.createSubscribe(request, options, topic);
+			//encrypt data
+			//set callback
+			this.$wampClientCore.get_subscribeCallback().set_item(request, callback);
+			//set event callback
+			this.$wampClientCore.get_eventCallback().set_item(request, eventfunc);
+			//send data
+			if (this.$on_open_flag) {
+				this.$webSocket.send(data);
+			}
+			else {
+				return null;
+			}
+			return data;
+		},
+		sendUnsubscribe: function(subscription, callback) {
+			//serialize
+			var data;
+			var request;
+			request = this.$request_id;
+			this.$request_id++;
+			data = $Kadecot_WampSerializer.createUnsubscribe(request, subscription);
+			//encrypt data
+			//set callback
+			this.$wampClientCore.get_unsubscribeCallback().set_item(request, callback);
+			//set Unsubscribe request id - subscription id
+			this.$subscription_id_list.set_item(request, subscription);
+			//send data
+			if (this.$on_open_flag) {
+				this.$webSocket.send(data);
+			}
+			else {
+				return null;
+			}
+			return data;
+		},
+		sendCall: function(options, procedure, arguments1, argumentsKw, callback) {
+			//serialize
+			var data;
+			var request;
+			request = this.$request_id;
+			this.$request_id++;
+			data = $Kadecot_WampSerializer.createCall(request, options, procedure, arguments1, argumentsKw);
+			//encrypt data
+			//set callback
+			this.$wampClientCore.get_callCallback().set_item(request, callback);
+			//send data
+			if (this.$on_open_flag === true) {
+				this.$webSocket.send(data);
+			}
+			else {
+				return null;
+			}
+			return data;
+		},
+		sendCancel: function(request, options, callback) {
+			//serialize
+			var data;
+			data = $Kadecot_WampSerializer.createCancel(request, options);
+			//encrypt data
+			//set callback
+			this.$wampClientCore.get_cancelCallback().set_item(request, callback);
+			//send data
+			if (this.$on_open_flag) {
+				this.$webSocket.send(data);
+			}
+			else {
+				return null;
+			}
+			return data;
+		},
+		sendRegister: function(options, procedure, callback) {
+			//serialize
+			var data;
+			var request;
+			request = this.$request_id;
+			this.$request_id++;
+			data = $Kadecot_WampSerializer.createRegister(request, options, procedure);
+			//encrypt data
+			//set callback
+			this.$wampClientCore.get_registerCallback().set_item(request, callback);
+			//send data
+			if (this.$on_open_flag) {
+				this.$webSocket.send(data);
+			}
+			else {
+				return null;
+			}
+			return data;
+		},
+		sendUnregister: function(registration, callback) {
+			//serialize
+			var data;
+			var request;
+			request = this.$request_id;
+			this.$request_id++;
+			data = $Kadecot_WampSerializer.createUnregister(request, registration);
+			//encrypt data
+			//set callback
+			this.$wampClientCore.get_unregisterCallback().set_item(request, callback);
+			//send data
+			if (this.$on_open_flag) {
+				this.$webSocket.send(data);
+			}
+			else {
+				return null;
+			}
+			return data;
+		},
+		sendYield: function(request, options, arguments1, argumentsKw) {
+			//serialize
+			var data;
+			data = $Kadecot_WampSerializer.createYield(request, options, arguments1, argumentsKw);
+			//encrypt data
+			//send data
+			if (this.$on_open_flag) {
+				this.$webSocket.send(data);
+			}
+			return data;
+		},
+		onOpen: function(e) {
+			this.$on_open_flag = true;
+			var callback = this.$wampClientCore.get_openCallback();
+			if (!ss.staticEquals(callback, null)) {
+				callback();
+			}
+		},
+		onClose: function(e) {
+			this.$on_open_flag = false;
+			//			webSocket = null;
+			var callback = this.$wampClientCore.get_closeCallback();
+			if (!ss.staticEquals(callback, null)) {
+				callback();
+			}
+		},
+		onError: function(e) {
+			var eea = e;
+			if (!ss.staticEquals(this.$errorCallback, null)) {
+				this.$errorCallback(ss.cast(eea.message, String));
+			}
+		},
+		onMessage: function(e) {
+			var msg = e;
+			//System.Diagnostics.Debug.WriteLine("[wamp perser] msg :" + msg.ToString());
+			var data;
+			var callback = null;
+			//decrypt data
+			//deserialize
+			if (!!ss.isValue(msg.data)) {
+				data = $Kadecot_WampDeserializer.parse(ss.cast(msg.data, String));
+			}
+			else {
+				data = $Kadecot_WampDeserializer.parse(ss.cast(msg, String));
+			}
+			if (ss.isNullOrUndefined(data)) {
+				return;
+			}
+			var list = ss.cast(data, Array);
+			var switchData = ss.unbox(ss.cast(list[0], ss.Int32));
+			switch (switchData) {
+				case 2: {
+					// WAMP SPEC: [WELCOME, Session|id, Details|dict]
+					if (this.$challnge_flag) {
+						this.$challnge_flag = false;
+						callback = this.$wampClientCore.get_authenticateCallback();
+						if (!ss.staticEquals(callback, null)) {
+							callback(data);
+						}
+						else {
+						}
+					}
+					else {
+						callback = this.$wampClientCore.get_helloCallback();
+						if (!ss.staticEquals(callback, null)) {
+							callback(data);
+						}
+						else {
+						}
+					}
+					break;
+				}
+				case 3: {
+					// WAMP SPEC: [ABORT, Details|dict, Reason|uri]
+					if (this.$challnge_flag) {
+						this.$challnge_flag = false;
+						callback = this.$wampClientCore.get_authenticateCallback();
+						if (!ss.staticEquals(callback, null)) {
+							callback(data);
+						}
+						else {
+						}
+					}
+					else {
+						callback = this.$wampClientCore.get_helloCallback();
+						if (!ss.staticEquals(callback, null)) {
+							callback(data);
+						}
+						else {
+						}
+					}
+					break;
+				}
+				case 4: {
+					// advanced WAMP SPEC: [CHALLENGE, AuthMethod|string, Extra|dict]
+					this.$challnge_flag = true;
+					callback = this.$wampClientCore.get_helloCallback();
+					if (!ss.staticEquals(callback, null)) {
+						callback(data);
+					}
+					else {
+					}
+					break;
+				}
+				case 6: {
+					// WAMP SPEC: [GOODBYE, Details|dict, Reason|uri]
+					callback = this.$wampClientCore.get_goodbyeCallback();
+					if (!ss.staticEquals(callback, null)) {
+						callback(data);
+					}
+					else {
+					}
+					break;
+				}
+				case 7: {
+					// advanced WAMP SPEC: [AUTHENTICATE, Signature|string, Extra|dict]
+					callback = this.$wampClientCore.get_heartbeatCallback();
+					if (!ss.staticEquals(callback, null)) {
+						callback(data);
+					}
+					else {
+					}
+					break;
+				}
+				case 8: {
+					// WAMP SPEC: [ERROR, REQUEST.Type|int, REQUEST.Request|id, Details|dict, Error|uri, (Arguments|list, ArgumentsKw|dict)]
+					var switchDataSec = ss.unbox(ss.cast(list[1], ss.Int32));
+					var request = ss.unbox(ss.cast(list[2], ss.Int32));
+					switch (switchDataSec) {
+						case 32: {
+							// WAMP SPEC: [ERROR, SUBSCRIBE, SUBSCRIBE.Request|id, Details|dict, Error|uri]
+							callback = this.$wampClientCore.get_subscribeCallback().get_item(request);
+							if (!ss.staticEquals(callback, null)) {
+								callback(data);
+							}
+							else {
+							}
+							break;
+						}
+						case 34: {
+							// WAMP SPEC: [ERROR, UNSUBSCRIBE, UNSUBSCRIBE.Request|id, Details|dict, Error|uri]
+							callback = this.$wampClientCore.get_unsubscribeCallback().get_item(request);
+							if (!ss.staticEquals(callback, null)) {
+								callback(data);
+							}
+							else {
+							}
+							break;
+						}
+						case 16: {
+							// WAMP SPEC: [ERROR, PUBLISH, PUBLISH.Request|id, Details|dict, Error|uri]
+							callback = this.$wampClientCore.get_publishCallback().get_item(request);
+							if (!ss.staticEquals(callback, null)) {
+								callback(data);
+							}
+							else {
+							}
+							break;
+						}
+						case 68: {
+							// WAMP SPEC: [ERROR, INVOCATION, INVOCATION.Request|id, Details|dict, Error|uri]
+							// WAMP SPEC: [ERROR, INVOCATION, INVOCATION.Request|id, Details|dict, Error|uri, Arguments|list]
+							// WAMP SPEC: [ERROR, INVOCATION, INVOCATION.Request|id, Details|dict, Error|uri, Arguments|list, ArgumentsKw|dict]
+							callback = this.$wampClientCore.get_invocationCallback().get_item(request);
+							if (!ss.staticEquals(callback, null)) {
+								callback(data);
+							}
+							else {
+							}
+							break;
+						}
+						case 48: {
+							// WAMP SPEC: [ERROR, CALL, CALL.Request|id, Details|dict, Error|uri]
+							// WAMP SPEC: [ERROR, CALL, CALL.Request|id, Details|dict, Error|uri, Arguments|list]
+							// WAMP SPEC: [ERROR, CALL, CALL.Request|id, Details|dict, Error|uri, Arguments|list, ArgumentsKw|dict]
+							callback = this.$wampClientCore.get_callCallback().get_item(request);
+							if (!ss.staticEquals(callback, null)) {
+								callback(data);
+							}
+							else {
+							}
+							break;
+						}
+						case 64: {
+							// WAMP SPEC: [ERROR, REGISTER, REGISTER.Request|id, Details|dict, Error|uri]
+							callback = this.$wampClientCore.get_registerCallback().get_item(request);
+							if (!ss.staticEquals(callback, null)) {
+								callback(data);
+							}
+							else {
+							}
+							break;
+						}
+						case 66: {
+							// WAMP SPEC: [ERROR, UNREGISTER, UNREGISTER.Request|id, Details|dict, Error|uri]
+							callback = this.$wampClientCore.get_unregisterCallback().get_item(request);
+							if (!ss.staticEquals(callback, null)) {
+								callback(data);
+							}
+							else {
+							}
+							break;
+						}
+						default: {
+							return;
+						}
+					}
+					break;
+				}
+				case 17: {
+					// WAMP SPEC: [PUBLISHED, PUBLISH.Request|id, Publication|id]
+					callback = this.$wampClientCore.get_publishCallback().get_item(ss.unbox(ss.cast(list[1], ss.Int32)));
+					if (!ss.staticEquals(callback, null)) {
+						callback(data);
+					}
+					else {
+					}
+					break;
+				}
+				case 33: {
+					// WAMP SPEC: [SUBSCRIBED, SUBSCRIBE.Request|id, Subscription|id]
+					var reqId = ss.unbox(ss.cast(list[1], ss.Int32));
+					var subId = ss.unbox(ss.cast(list[2], ss.Int32));
+					callback = this.$wampClientCore.get_subscribeCallback().get_item(reqId);
+					if (!ss.staticEquals(callback, null)) {
+						this.$wampClientCore.get_eventCallback().set_item(subId, this.$wampClientCore.get_eventCallback().get_item(reqId));
+						this.$wampClientCore.deleteEventCallback(reqId);
+						callback(data);
+					}
+					else {
+					}
+					break;
+				}
+				case 35: {
+					// WAMP SPEC: [UNSUBSCRIBED, UNSUBSCRIBE.Request|id]
+					callback = this.$wampClientCore.get_unsubscribeCallback().get_item(ss.unbox(ss.cast(list[1], ss.Int32)));
+					if (!ss.staticEquals(callback, null)) {
+						this.$wampClientCore.deleteEventCallback(this.$subscription_id_list.get_item(ss.unbox(ss.cast(list[1], ss.Int32))));
+						callback(data);
+					}
+					else {
+					}
+					break;
+				}
+				case 36: {
+					// WAMP SPEC: [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict]
+					// WAMP SPEC: [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict, PUBLISH.Arguments|list]
+					// WAMP SPEC: [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict, PUBLISH.Arguments|list, PUBLISH.ArgumentKw|dict]
+					callback = this.$wampClientCore.get_eventCallback().get_item(ss.unbox(ss.cast(list[1], ss.Int32)));
+					if (!ss.staticEquals(callback, null)) {
+						callback(data);
+					}
+					else {
+					}
+					break;
+				}
+				case 50: {
+					// WAMP SPEC: [RESULT, CALL.Request|id, Details|dict]
+					// WAMP SPEC: [RESULT, CALL.Request|id, Details|dict, YIELD.Arguments|list]
+					// WAMP SPEC: [RESULT, CALL.Request|id, Details|dict, YIELD.Arguments|list, YIELD.ArgumentsKw|dict]
+					callback = this.$wampClientCore.get_callCallback().get_item(ss.unbox(ss.cast(list[1], ss.Int32)));
+					if (!ss.staticEquals(callback, null)) {
+						callback(data);
+					}
+					else {
+					}
+					break;
+				}
+				case 65: {
+					// WAMP SPEC: [REGISTERED, REGISTER.Request|id, Registration|id]
+					callback = this.$wampClientCore.get_registerCallback().get_item(ss.unbox(ss.cast(list[1], ss.Int32)));
+					if (!ss.staticEquals(callback, null)) {
+						callback(data);
+					}
+					else {
+					}
+					break;
+				}
+				case 67: {
+					// WAMP SPEC: [UNREGISTERED, UNREGISTER.Request|id]
+					callback = this.$wampClientCore.get_unregisterCallback().get_item(ss.unbox(ss.cast(list[1], ss.Int32)));
+					if (!ss.staticEquals(callback, null)) {
+						callback(data);
+					}
+					else {
+					}
+					break;
+				}
+				case 68: {
+					// WAMP SPEC: [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict]
+					// WAMP SPEC: [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict, CALL.Arguments|list]
+					// WAMP SPEC: [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict, CALL.Arguments|list, CALL.ArgumentsKw|dict]
+					callback = this.$wampClientCore.get_invocationCallback().get_item(ss.unbox(ss.cast(list[1], ss.Int32)));
+					if (!ss.staticEquals(callback, null)) {
+						callback(data);
+					}
+					else {
+					}
+					break;
+				}
+				case 69: {
+					// advanced WAMP SPEC: [INTERRUPT, INVOCATION.Request|id, Options|dict]
+					callback = this.$wampClientCore.get_interruptCallback().get_item(ss.unbox(ss.cast(list[1], ss.Int32)));
+					if (!ss.staticEquals(callback, null)) {
+						callback(data);
+					}
+					else {
+					}
+					break;
+				}
+				default: {
+					break;
+				}
+			}
+		},
+		isConnecting: function() {
+			return this.$on_open_flag;
+		}
+	});
+	ss.initClass($Kadecot_WampClientCore, $asm, {
+		get_openCallback: function() {
+			return this.$1$openCallbackField;
+		},
+		set_openCallback: function(value) {
+			this.$1$openCallbackField = value;
+		},
+		get_closeCallback: function() {
+			return this.$1$closeCallbackField;
+		},
+		set_closeCallback: function(value) {
+			this.$1$closeCallbackField = value;
+		},
+		get_heartbeatCallback: function() {
+			return this.$1$heartbeatCallbackField;
+		},
+		set_heartbeatCallback: function(value) {
+			this.$1$heartbeatCallbackField = value;
+		},
+		get_helloCallback: function() {
+			return this.$1$helloCallbackField;
+		},
+		set_helloCallback: function(value) {
+			this.$1$helloCallbackField = value;
+		},
+		get_authenticateCallback: function() {
+			return this.$1$authenticateCallbackField;
+		},
+		set_authenticateCallback: function(value) {
+			this.$1$authenticateCallbackField = value;
+		},
+		get_goodbyeCallback: function() {
+			return this.$1$goodbyeCallbackField;
+		},
+		set_goodbyeCallback: function(value) {
+			this.$1$goodbyeCallbackField = value;
+		},
+		get_publishCallback: function() {
+			return this.$1$publishCallbackField;
+		},
+		set_publishCallback: function(value) {
+			this.$1$publishCallbackField = value;
+		},
+		get_subscribeCallback: function() {
+			return this.$1$subscribeCallbackField;
+		},
+		set_subscribeCallback: function(value) {
+			this.$1$subscribeCallbackField = value;
+		},
+		get_unsubscribeCallback: function() {
+			return this.$1$unsubscribeCallbackField;
+		},
+		set_unsubscribeCallback: function(value) {
+			this.$1$unsubscribeCallbackField = value;
+		},
+		get_callCallback: function() {
+			return this.$1$callCallbackField;
+		},
+		set_callCallback: function(value) {
+			this.$1$callCallbackField = value;
+		},
+		get_cancelCallback: function() {
+			return this.$1$cancelCallbackField;
+		},
+		set_cancelCallback: function(value) {
+			this.$1$cancelCallbackField = value;
+		},
+		get_registerCallback: function() {
+			return this.$1$registerCallbackField;
+		},
+		set_registerCallback: function(value) {
+			this.$1$registerCallbackField = value;
+		},
+		get_unregisterCallback: function() {
+			return this.$1$unregisterCallbackField;
+		},
+		set_unregisterCallback: function(value) {
+			this.$1$unregisterCallbackField = value;
+		},
+		get_eventCallback: function() {
+			return this.$1$eventCallbackField;
+		},
+		set_eventCallback: function(value) {
+			this.$1$eventCallbackField = value;
+		},
+		get_invocationCallback: function() {
+			return this.$1$invocationCallbackField;
+		},
+		set_invocationCallback: function(value) {
+			this.$1$invocationCallbackField = value;
+		},
+		get_interruptCallback: function() {
+			return this.$1$interruptCallbackField;
+		},
+		set_interruptCallback: function(value) {
+			this.$1$interruptCallbackField = value;
+		},
+		deleteOpenCallback: function() {
+			this.set_openCallback(null);
+		},
+		deleteCloseCallback: function() {
+			this.set_closeCallback(null);
+		},
+		deleteHeartbeatCallback: function() {
+			this.set_heartbeatCallback(null);
+		},
+		deleteHelloCallback: function() {
+			this.set_helloCallback(null);
+		},
+		deleteAuthenticateCallback: function() {
+			this.set_authenticateCallback(null);
+		},
+		deleteGoodbyeCallback: function() {
+			this.set_goodbyeCallback(null);
+		},
+		deletePublishCallback: function(request) {
+			this.get_publishCallback().set_item(request, null);
+		},
+		deleteSubscribeCallback: function(request) {
+			this.get_subscribeCallback().set_item(request, null);
+		},
+		deleteUnsubscribeCallback: function(request) {
+			this.get_unsubscribeCallback().set_item(request, null);
+		},
+		deleteCallCallback: function(request) {
+			this.get_callCallback().set_item(request, null);
+		},
+		deleteCancelCallback: function(request) {
+			this.get_cancelCallback().set_item(request, null);
+		},
+		deleteRegisterCallback: function(request) {
+			this.get_registerCallback().set_item(request, null);
+		},
+		deleteUnregisterCallback: function(request) {
+			this.get_unregisterCallback().set_item(request, null);
+		},
+		deleteEventCallback: function(request) {
+			this.get_eventCallback().set_item(request, null);
+		},
+		deleteInvocationCallback: function(request) {
+			this.get_invocationCallback().set_item(request, null);
+		},
+		deleteInterruptCallback: function(request) {
+			this.get_interruptCallback().set_item(request, null);
+		}
+	});
+	ss.initClass($Kadecot_WampDeserializer, $asm, {});
+	ss.initClass($Kadecot_WampSerializer, $asm, {});
+	ss.setMetadata($ctrlui_EPC_FLAG, { enumFlags: true });
+	(function() {
+		$control_UIEventNames.currentNodeChange = 'currentnode.change';
+		$control_UIEventNames.loadingShow = 'loading.show';
+		$control_UIEventNames.loadingHide = 'loading.hide';
+		$control_UIEventNames.searchStart = 'search.start';
+		$control_UIEventNames.searchEnd = 'search.end';
+		$control_UIEventNames.searchError = 'search.error';
+		$control_UIEventNames.propertyWriteStart = 'propertywrite.start';
+		$control_UIEventNames.propertyWriteEnd = 'propertywrite.end';
+	})();
+	(function() {
+		$ctrlui_$TokenInfo.$separetor = '[=,:\\(\\)\\[\\]～]';
+		$ctrlui_$TokenInfo.$hexValue = '^0x[0-9A-Fa-f]+';
+		$ctrlui_$TokenInfo.$numeric = '^[\\-\\+]?[\\.]?[0-9]+[0-9,\\.]*';
+	})();
+	(function() {
+		$ctrlui_ValueRange.$_ParsedText = new (ss.makeGenericType(ss.Dictionary$2, [String, $ctrlui_$ValueSet]))();
+	})();
+	(function() {
+		$ctrlui_DeviceController.getClassInfo = null;
+	})();
+	(function() {
+		$ctrlui_T_ECN_EOJ.x1_PROFILE = 14;
+		$ctrlui_T_ECN_EOJ.x2_NODE_PROFILE = 240;
+	})();
+	(function() {
+		$CtrlUI.page = null;
+		$CtrlUI.info = null;
+		$CtrlUI.$page = null;
+		$CtrlUI.$m_ClassGroups = null;
+		$CtrlUI.$m_ProfileClassInfo = null;
+		$CtrlUI.$m_Classes = null;
+	})();
+})();
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/ctrlui.min.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/ctrlui.min.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/ctrlui.min.js	(revision 101)
@@ -0,0 +1,496 @@
+// Copyright (C) 2015 by TOPPERS Project, Inc., JAPAN
+
+ï»¿(function(){'use strict';var $asm={};global.control=global.control||{};global.ctrlui=global.ctrlui||{};global.Kadecot=global.Kadecot||{};ss.initAssembly($asm,'EcnlControllerUI');var $CtrlUI=function(){this.$read=new(ss.makeGenericType(ss.Dictionary$2,[$ctrlui_DeviceController$DeviceInfo,$ctrlui_DeviceController$DeviceInfo]))();this.$m_WampClient=null;this.$m_DeviceController=null;this.$_m_CurrentNode=null;this.$timerId=0;this.$dpi=null;this.$m_WampClient=new $Kadecot_WampClient();this.$m_WampClient.addOpenCallback(ss.mkdel(this,this.$wampClientConnected));this.$m_WampClient.addCloseCallback(ss.mkdel(this,this.$wampClientDisconnected));this.$m_WampClient.connect('ws://'+window.location.host+'/webapi.ashx');};$CtrlUI.__typeName='CtrlUI';$CtrlUI.main=function(){if(ss.isNullOrUndefined($CtrlUI.page)){$CtrlUI.page=new $CtrlUI();$CtrlUI.info=new $ctrlui_Information();}
+$(document).on('pageinit','#index',ss.mkdel($CtrlUI.page,$CtrlUI.page.$initClassGroups$1));};$CtrlUI.getPage=function(ele){var page=ele;if($(page).is('[data-role="page"]')){return page;}
+if($(page).parents('[data-role="page"]').length===1){return $(page).parents('[data-role="page"]').get(0);}
+return null;};$CtrlUI.$ajaxError=function(request,textStatus,error,url){var sep=new RegExp('(\r\n|\r|\n)');var lines=[];lines.push(textStatus);if(ss.isInstanceOfType(error,String)){lines.push(ss.cast(error,String));}
+else{lines.push(ss.cast(error.message,String));var stack=ss.cast(error.stack,String);ss.arrayAddRange(lines,stack.split(sep));}
+var html=$('<p>');for(var $t1=0;$t1<lines.length;$t1++){var line=lines[$t1];if(ss.isValue(sep.exec(line))){continue;}
+html.append(document.createTextNode(line).wholeText);html.append($('<br/>'));}
+html.append(url+'ã®èª­ã¿è¾¼ã¿ã«å¤±æãã¾ãã');$('#popup_dialog_caption').text('éä¿¡ã¨ã©ã¼');$('#popup_dialog_title').text('éä¿¡ã¨ã©ã¼ãçºçãã¾ãã');$('#popup_dialog_text').html(html);$('#popup_dialog').popup('open',{transition:'slidedown'});};global.CtrlUI=$CtrlUI;var $ElementExtensions=function(){};$ElementExtensions.__typeName='ElementExtensions';global.ElementExtensions=$ElementExtensions;var $jQueryMobile=function(){};$jQueryMobile.__typeName='jQueryMobile';global.jQueryMobile=$jQueryMobile;var $LoadingOption=function(){this.text=null;this.textVisible=false;};$LoadingOption.__typeName='LoadingOption';$LoadingOption.$ctor1=function(text,textVisible){this.text=null;this.textVisible=false;this.text=text;this.textVisible=textVisible;};global.LoadingOption=$LoadingOption;var $control_KeyPress=function(){};$control_KeyPress.__typeName='control.KeyPress';global.control.KeyPress=$control_KeyPress;var $control_UI=function(){};$control_UI.__typeName='control.UI';$control_UI.getDeviceInfo=function(dc,dev,device){var di=new $ctrlui_DeviceController$DeviceInfo.$ctor1(dc,dev);di.set_data(device);if(ss.isValue(dc)){for(var $t1=0;$t1<dev.properties.length;$t1++){var prop={$:dev.properties[$t1]};var epi=Enumerable.from(dc.properties).firstOrDefault(ss.mkdel({prop:prop},function(p){return p.propertyCode===this.prop.$.epc;}),ss.getDefaultValue($ctrlui_JsonPropertyInfo));if(ss.isNullOrUndefined(epi)){continue;}
+di.get_properties().push(new $ctrlui_DeviceController$DevicePropertyInfo(epi,prop.$));}}
+return di;};$control_UI.getAllDevices=function(args){var devs=ss.cast(ss.cast(args,Array)[4].deviceList,Array);var alldevs=[];var nodes=new(ss.makeGenericType(ss.Dictionary$2,[String,Array]))();for(var $t1=0;$t1<devs.length;$t1++){var dev=devs[$t1];var device=new $ctrlui_WampApiKadecotDevice(dev);var devices={};if(nodes.tryGetValue(device.ip_addr,devices)){devices.$.push(device);}
+else{devices.$=[];devices.$.push(device);nodes.set_item(device.ip_addr,devices.$);}
+alldevs.push(device);}
+return alldevs;};$control_UI.toJSClassGroupInfoList=function(data){var _classGroups=ss.cast((ss.referenceEquals(ss.getInstanceType(data),String)?$.parseJSON(ss.cast(data,String)):data),Array);var classGroups=[];for(var $t1=0;$t1<_classGroups.length;$t1++){var _item=_classGroups[$t1];var item=new $ctrlui_JsonClassGroupInfo(_item);classGroups.push(item);}
+return classGroups;};$control_UI.toJSClassInfoList=function(data,classGroup){var _classes=ss.cast((ss.referenceEquals(ss.getInstanceType(data),String)?$.parseJSON(ss.cast(data,String)):data),Array);var classes=[];var eclass;for(var $t1=0;$t1<_classes.length;$t1++){var _item=_classes[$t1];eclass=new $ctrlui_JsonClassInfo(_item);eclass.classGroup=classGroup;classes.push(eclass);}
+return classes;};$control_UI.toJSPropertyInfoList=function(data){var _properties=ss.cast((ss.referenceEquals(ss.getInstanceType(data),String)?$.parseJSON(ss.cast(data,String)):data),Array);var properties=[];for(var $t1=0;$t1<_properties.length;$t1++){var _item=_properties[$t1];var item=new $ctrlui_JsonPropertyInfo.$ctor1(_item);properties.push(item);}
+return properties;};$control_UI.disable=function(obj,flag){if(flag){obj.attr('disabled','disabled');}
+else{obj.removeAttr('disabled');}
+return obj;};$control_UI.toggleClass=function(obj,deleteClass,addClass){obj.toggleClass(deleteClass,false);obj.toggleClass(addClass,true);return obj;};$control_UI.getDeviceBtn=function(di){return $control_UI.getDeviceLi(di).children('a');};$control_UI.getDeviceLi=function(di){return $('#li_device_'+di.getObjectID());};$control_UI.isRULE_SET=function(dpi){return(ss.isNullOrUndefined(dpi.get_propertyInfo())?false:ss.contains(dpi.get_propertyInfo().access,'RULE_SET'));};global.control.UI=$control_UI;var $control_UIAnchor=function(){$control_UIObject.$ctor1.call(this,'<a>');};$control_UIAnchor.__typeName='control.UIAnchor';$control_UIAnchor.$ctor1=function(text){$control_UIAnchor.call(this);this.set_text(text);};$control_UIAnchor.$ctor2=function(uiobject){$control_UIAnchor.call(this);this.append(uiobject);};global.control.UIAnchor=$control_UIAnchor;var $control_UIBackButton=function(){$control_UIButton.call(this);this.set_buttonIcon(2);this.set_title('å
+ã«æ»ã');this.set_tabIndex(-1);this.addClass('text_backButton');this.object.hide();};$control_UIBackButton.__typeName='control.UIBackButton';global.control.UIBackButton=$control_UIBackButton;var $control_UIButton=function(){$control_UIObject.$ctor1.call(this,'<a>');this.set_button(true);this.set_noText(true);this.set_href('#');this.set_cornerAll(true);};$control_UIButton.__typeName='control.UIButton';global.control.UIButton=$control_UIButton;var $control_UIButton$Icon=function(){};$control_UIButton$Icon.__typeName='control.UIButton$Icon';global.control.UIButton$Icon=$control_UIButton$Icon;var $control_UICalBox=function(){$control_UITextInput.call(this);this.set_dataRole('datebox');this.set_dataOptions(ss.mkdict(['mode','calbox']));this.set_dataClearBtn(false);this.on('dateboxcreate',ss.thisFix(ss.mkdel(this,this.$dateBoxCreate)));};$control_UICalBox.__typeName='control.UICalBox';global.control.UICalBox=$control_UICalBox;var $control_UICalBox$UIInputDate=function(ev){$control_UIObject.call(this);this.object=$(ev.target).parent('.ui-input-datebox');};$control_UICalBox$UIInputDate.__typeName='control.UICalBox$UIInputDate';global.control.UICalBox$UIInputDate=$control_UICalBox$UIInputDate;var $control_UICollapsibleset=function(){$control_UIObject.$ctor1.call(this,'<div>');this.set_dataRole('collapsible');};$control_UICollapsibleset.__typeName='control.UICollapsibleset';$control_UICollapsibleset.$ctor2=function(attr,h2){$control_UICollapsibleset.call(this);this.attribute(attr);this.append(new $control_UIH.$ctor2(2,h2));};$control_UICollapsibleset.$ctor1=function(h2){$control_UICollapsibleset.call(this);this.append(new $control_UIH.$ctor2(2,h2));};global.control.UICollapsibleset=$control_UICollapsibleset;var $control_UIDeviceController=function(){this.deviceController=null;};$control_UIDeviceController.__typeName='control.UIDeviceController';global.control.UIDeviceController=$control_UIDeviceController;var $control_UIDeviceController$UIDeviceInfo=function(){this.page=null;this.di=null;this.$elements=null;};$control_UIDeviceController$UIDeviceInfo.__typeName='control.UIDeviceController$UIDeviceInfo';global.control.UIDeviceController$UIDeviceInfo=$control_UIDeviceController$UIDeviceInfo;var $control_UIDeviceController$UIDevicePropertyInfo=function(){this.$grpbox=null;this.$dpi=null;};$control_UIDeviceController$UIDevicePropertyInfo.__typeName='control.UIDeviceController$UIDevicePropertyInfo';global.control.UIDeviceController$UIDevicePropertyInfo=$control_UIDeviceController$UIDevicePropertyInfo;var $control_UIDiv=function(){$control_UIObject.$ctor1.call(this,'<div>');};$control_UIDiv.__typeName='control.UIDiv';global.control.UIDiv=$control_UIDiv;var $control_UIEventHandler=function(){};$control_UIEventHandler.__typeName='control.UIEventHandler';$control_UIEventHandler.loadingShow=function(ev){$.mobile.loading('show');};$control_UIEventHandler.loadingHide=function(ev){$.mobile.loading('hide');};global.control.UIEventHandler=$control_UIEventHandler;var $control_UIEventNames=function(){};$control_UIEventNames.__typeName='control.UIEventNames';global.control.UIEventNames=$control_UIEventNames;var $control_UIFieldContain=function(){this.label=null;this.input=null;$control_UIObject.$ctor1.call(this,'<div>');this.set_dataRole('fieldcontain');};$control_UIFieldContain.__typeName='control.UIFieldContain';$control_UIFieldContain.$ctor1=function(uiobject){$control_UIFieldContain.call(this);this.append(uiobject);};$control_UIFieldContain.$ctor2=function(label,uiobject){$control_UIFieldContain.call(this);this.label=label;this.input=uiobject;this.append(this.label);this.append(this.input);};global.control.UIFieldContain=$control_UIFieldContain;var $control_UIFieldSet=function(){this.radioList=null;this.$_ControlGroup=false;this.$_Horizontal=false;$control_UIObject.$ctor1.call(this,'<fieldset>');this.set_controlGroup(true);};$control_UIFieldSet.__typeName='control.UIFieldSet';$control_UIFieldSet.$ctor1=function(horizontal){$control_UIFieldSet.call(this);this.set_horizontal(horizontal);};global.control.UIFieldSet=$control_UIFieldSet;var $control_UIFieldSet$RadioInput=function(Label,Radio){this.radio=null;this.label=null;this.radio=Radio;this.label=Label;};$control_UIFieldSet$RadioInput.__typeName='control.UIFieldSet$RadioInput';global.control.UIFieldSet$RadioInput=$control_UIFieldSet$RadioInput;var $control_UIFlipSwitch=function(){this.ON=null;this.OFF=null;$control_UIObject.$ctor1.call(this,'<select>');this.set_dataRole('flipswitch');};$control_UIFlipSwitch.__typeName='control.UIFlipSwitch';$control_UIFlipSwitch.$ctor1=function(off,on){$control_UIFlipSwitch.call(this);this.OFF=off;this.ON=on;this.append(this.OFF);this.append(this.ON);};global.control.UIFlipSwitch=$control_UIFlipSwitch;var $control_UIGridA=function(){this.blockA=new $control_UIGridA$UIBlockA();this.blockB=new $control_UIGridA$UIBlockB();$control_UIObject.$ctor1.call(this,'<div>');this.object.addClass('ui-grid-a');this.append(this.blockA);this.append(this.blockB);};$control_UIGridA.__typeName='control.UIGridA';global.control.UIGridA=$control_UIGridA;var $control_UIGridA$UIBlockA=function(){$control_UIObject.$ctor1.call(this,'<div>');this.object.addClass('ui-block-a');};$control_UIGridA$UIBlockA.__typeName='control.UIGridA$UIBlockA';global.control.UIGridA$UIBlockA=$control_UIGridA$UIBlockA;var $control_UIGridA$UIBlockB=function(){$control_UIObject.$ctor1.call(this,'<div>');this.object.addClass('ui-block-b');};$control_UIGridA$UIBlockB.__typeName='control.UIGridA$UIBlockB';global.control.UIGridA$UIBlockB=$control_UIGridA$UIBlockB;var $control_UIGrpBox=function(){this.$label=null;this.$user=true;this.$dpi=null;this.$liAside=null;this.getValue=null;this.fieldContain=null;this.kadecotSet=null;this.backButton=new $control_UIBackButton();$control_UIListviewItem.call(this);this.$liAside=new $control_UIP.$ctor2('','ui-li-aside');this.append(this.$liAside);this.change$1(ss.thisFix(ss.mkdel(this,this.grpBoxChange)));};$control_UIGrpBox.__typeName='control.UIGrpBox';$control_UIGrpBox.$ctor1=function(dpi){$control_UIGrpBox.call(this);this.$dpi=dpi;this.$label=new $control_UILabel.$ctor2(dpi);this.$dpi.prepareInputInfo();if(dpi.get_propertyCode()===0){}
+else if(dpi.get_propertyCode()===151){this.$setTimebox();}
+else if(dpi.get_propertyCode()===152){this.$setCalBox();}
+else if(this.$dpi.get_inputTypes().length===0){this.$setTextInput();}
+else if(dpi.get_propertyCode()===128&&dpi.get_inputTypes().length===1&&dpi.get_inputTypes()[0].mode===1){this.setFlipSwitch();}
+else{var $t1=dpi.get_inputTypes();for(var $t2=0;$t2<$t1.length;$t2++){var pii=$t1[$t2];switch(pii.mode){case 1:{{this.$setFieldSet(pii);}
+break;}
+case 2:{{this.setRange(pii);}
+break;}
+default:{{this.setDefault();}
+break;}}}}};global.control.UIGrpBox=$control_UIGrpBox;var $control_UIH=function(){$control_UIObject.$ctor1.call(this,'<h1>');};$control_UIH.__typeName='control.UIH';$control_UIH.$ctor1=function(i){$control_UIObject.$ctor1.call(this,'<h'+i.toString()+'>');};$control_UIH.$ctor2=function(i,text){$control_UIH.$ctor1.call(this,i);this.set_text(text);};global.control.UIH=$control_UIH;var $control_UIImg=function(){$control_UIObject.$ctor1.call(this,'<img>');};$control_UIImg.__typeName='control.UIImg';$control_UIImg.$ctor1=function(attr){$control_UIImg.call(this);this.attribute(attr);};$control_UIImg.$ctor2=function(nameValuePairs){$control_UIImg.call(this);this.attribute(ss.mkdict(nameValuePairs));};global.control.UIImg=$control_UIImg;var $control_UILabel=function(){$control_UIObject.$ctor1.call(this,'<label>');};$control_UILabel.__typeName='control.UILabel';$control_UILabel.$ctor1=function(text){$control_UILabel.call(this);this.set_text(text);};$control_UILabel.$ctor3=function(text,for1){$control_UILabel.$ctor1.call(this,text);this.set_for(for1);};$control_UILabel.$ctor4=function(text,for1,name){$control_UILabel.$ctor3.call(this,text,for1);this.set_name(name);};$control_UILabel.$ctor2=function(dpi){$control_UILabel.$ctor1.call(this,dpi.getText());this.set_title(dpi.get_propertyInfo().valueDescription);};global.control.UILabel=$control_UILabel;var $control_UILi=function(){$control_UIObject.$ctor1.call(this,'<li>');};$control_UILi.__typeName='control.UILi';global.control.UILi=$control_UILi;var $control_UIListDivider=function(){$control_UIListviewItem.call(this);this.set_dataRole('list-divider');};$control_UIListDivider.__typeName='control.UIListDivider';$control_UIListDivider.$ctor1=function(text){$control_UIListDivider.call(this);this.set_text(text);};$control_UIListDivider.$ctor2=function(uiobject){$control_UIListDivider.call(this);this.append(uiobject);};$control_UIListDivider.$ctor3=function(object){$control_UIListDivider.call(this);this.append$1(object);};global.control.UIListDivider=$control_UIListDivider;var $control_UIListview=function(){$control_UIObject.$ctor1.call(this,'<ul>');this.set_dataRole('listview');};$control_UIListview.__typeName='control.UIListview';$control_UIListview.$ctor1=function(nameValuePairs){$control_UIListview.call(this);this.attribute(ss.mkdict(nameValuePairs));};global.control.UIListview=$control_UIListview;var $control_UIListviewItem=function(){$control_UIObject.$ctor1.call(this,'<li>');};$control_UIListviewItem.__typeName='control.UIListviewItem';$control_UIListviewItem.$ctor1=function(uiobject){$control_UIListviewItem.call(this);this.append(uiobject);};global.control.UIListviewItem=$control_UIListviewItem;var $control_UINodeList=function(NodeList,listitem_click){this.$info=null;this.$info=new $control_UIDiv();var identifer='';var $t1=ss.getEnumerator(NodeList);try{while($t1.moveNext()){var node=$t1.current();var profile=node.get_profile();if($('#cl_node_'+identifer).length>0){continue;}
+var col=new $control_UICollapsibleset.$ctor1(node.get_data().toString());col.set_id('cl_node_'+identifer);col.set_dataInset(true);this.$info.append(col);var listview=new $control_UIListview.$ctor1(['id','lv_node_'+identifer]);col.append(listview);var $t2=node.get_devices();for(var $t3=0;$t3<$t2.length;$t3++){var item={$:$t2[$t3]};if(item.$.get_profile()){continue;}
+identifer=item.$.getObjectID();if($('#li_device_'+identifer).length>0){continue;}
+var listitem={$:new $control_UIListviewItem()};listitem.$.set_id('li_device_'+identifer);listitem.$.click$1(ss.thisFix(ss.mkdel({item:item},function(ele,ev){listitem_click(ele,ev,this.item.$);})));listview.append(listitem.$);var anchor=new $control_UIAnchor();anchor.set_href('#');anchor.set_title(ss.cast(item.$.get_data(),$ctrlui_WampApiKadecotDevice).description);anchor.set_text(ss.cast(item.$.get_data(),$ctrlui_WampApiKadecotDevice).nickname);anchor.click$1(ss.thisFix(ss.mkdel({listitem:listitem,item:item,$this:this},function(ele1,ev1){this.$this.$listitem_Click(this.listitem.$,this.item.$);})));listitem.$.append(anchor);}}}
+finally{$t1.dispose();}};$control_UINodeList.__typeName='control.UINodeList';global.control.UINodeList=$control_UINodeList;var $control_UIObject=function(){this.object=null;this.$ecnlclass=0;};$control_UIObject.__typeName='control.UIObject';$control_UIObject.$ctor2=function(uiobject){this.object=null;this.$ecnlclass=0;this.object=uiobject.object;};$control_UIObject.$ctor3=function(object){this.object=null;this.$ecnlclass=0;this.object=object;};$control_UIObject.$ctor1=function(html){this.object=null;this.$ecnlclass=0;this.object=$(html);};global.control.UIObject=$control_UIObject;var $control_UIObject$EcnlClass=function(){};$control_UIObject$EcnlClass.__typeName='control.UIObject$EcnlClass';global.control.UIObject$EcnlClass=$control_UIObject$EcnlClass;var $control_UIOption=function(){$control_UIObject.$ctor1.call(this,'<option>');};$control_UIOption.__typeName='control.UIOption';$control_UIOption.$ctor2=function(text,value){$control_UIOption.call(this);this.set_text(text);this.set_value(value);};$control_UIOption.$ctor1=function(object){$control_UIObject.$ctor3.call(this,object);};global.control.UIOption=$control_UIOption;var $control_UIP=function(){$control_UIObject.$ctor1.call(this,'<p>');};$control_UIP.__typeName='control.UIP';$control_UIP.$ctor1=function(text){$control_UIP.call(this);this.set_text(text);};$control_UIP.$ctor2=function(text,class1){$control_UIP.$ctor1.call(this,text);this.addClass(class1);};global.control.UIP=$control_UIP;var $control_UIPin=function(){this.readButton=null;this.uiPinMode=null;this.range=null;this.analogRead=null;this.flipSwitch=null;this.pin=0;this.listDivider=null;$control_UILi.call(this);this.addClass('pin');this.listDivider=new $control_UIListDivider();this.uiPinMode=new $control_UIFieldSet.$ctor1(true);this.range=new $control_UIRangeInput();this.readButton=new $control_UIButton();this.readButton.set_title('åå¾');this.readButton.set_buttonIcon(1);};$control_UIPin.__typeName='control.UIPin';$control_UIPin.$ctor1=function(pin){$control_UIPin.call(this);this.pin=pin;var Div=new $control_UIDiv();Div.append(new $control_UIH.$ctor2(1,'pin'+pin.toString()));Div.append(this.readButton);this.listDivider.append(Div);this.$setUIPinMode(pin);this.$setUIDigital(pin);this.$setUIRange(pin);if(pin>=0&&pin<=7){this.flipSwitch=new $control_UIFlipSwitch.$ctor1(new $control_UIOption.$ctor2('LOW','LOW'),new $control_UIOption.$ctor2('HIGH','HIGH'));this.append(new $control_UIFieldContain.$ctor1(this.uiPinMode));this.append(new $control_UIFieldContain.$ctor1(this.flipSwitch));this.append(new $control_UIFieldContain.$ctor1(this.range));}
+else if(pin>=8&&pin<=13){this.flipSwitch=new $control_UIFlipSwitch.$ctor1(new $control_UIOption.$ctor2('LOW','LOW'),new $control_UIOption.$ctor2('HIGH','HIGH'));this.append(new $control_UIFieldContain.$ctor1(this.uiPinMode));this.append(new $control_UIFieldContain.$ctor1(this.flipSwitch));}
+else if(pin>=14&&pin<=19){this.$setAnalogRead(pin);this.append(new $control_UIFieldContain.$ctor1(this.analogRead));}};global.control.UIPin=$control_UIPin;var $control_UIRadioInput=function(){$control_UIObject.$ctor1.call(this,'<input>');this.object.attr('type','radio');};$control_UIRadioInput.__typeName='control.UIRadioInput';$control_UIRadioInput.$ctor2=function(id,name){$control_UIRadioInput.call(this);this.set_id(id);this.set_name(name);};$control_UIRadioInput.$ctor3=function(id,name,value){$control_UIRadioInput.$ctor2.call(this,id,name);this.set_value(value);};$control_UIRadioInput.$ctor1=function(value){$control_UIRadioInput.call(this);this.set_value(value);};global.control.UIRadioInput=$control_UIRadioInput;var $control_UIRangeInput=function(){this.handle=false;this.sliderHandle=null;$control_UIObject.$ctor1.call(this,'<input>');this.set_type('number');this.set_dataType('range');this.set_$dataHighlight(true);this.keypress(ss.thisFix(ss.mkdel(this,this.$sliderKeypress)));this.handle=true;this.one('slidecreate',ss.thisFix(ss.mkdel(this,this.$sliderCreate)));};$control_UIRangeInput.__typeName='control.UIRangeInput';$control_UIRangeInput.$ctor1=function(min,max){$control_UIRangeInput.call(this);this.set_min(min);this.set_max(max);this.set_maxlength(this.$getMaxLength());};global.control.UIRangeInput=$control_UIRangeInput;var $control_UIRangeInput$UIHandle=function(ev){$control_UIObject.call(this);this.object=$(ev.target).parent().find('.ui-slider-handle');};$control_UIRangeInput$UIHandle.__typeName='control.UIRangeInput$UIHandle';global.control.UIRangeInput$UIHandle=$control_UIRangeInput$UIHandle;var $control_UIRangeInput$UISliderTrack=function(ev){$control_UIObject.call(this);this.object=$(ev.target).parent().find('.ui-slider-track');};$control_UIRangeInput$UISliderTrack.__typeName='control.UIRangeInput$UISliderTrack';global.control.UIRangeInput$UISliderTrack=$control_UIRangeInput$UISliderTrack;var $control_UITextInput=function(){$control_UIObject.$ctor1.call(this,'<input>');this.set_type('text');this.set_dataClearBtn(true);};$control_UITextInput.__typeName='control.UITextInput';$control_UITextInput.$ctor1=function(dic){$control_UITextInput.call(this);this.attribute(dic);};global.control.UITextInput=$control_UITextInput;var $control_UITimeBox=function(){$control_UITextInput.call(this);this.set_dataRole('datebox');this.set_dataOptions(ss.mkdict(['mode','timebox']));this.set_dataClearBtn(false);this.on('dateboxcreate',ss.thisFix(ss.mkdel(this,this.$dateBoxCreate)));};$control_UITimeBox.__typeName='control.UITimeBox';global.control.UITimeBox=$control_UITimeBox;var $ctrlui_$State=function(){};$ctrlui_$State.__typeName='ctrlui.$State';var $ctrlui_$TokenInfo=function(token,type){this.$token=null;this.$type=0;this.$token=token;this.$type=type;};$ctrlui_$TokenInfo.__typeName='ctrlui.$TokenInfo';var $ctrlui_$TokenType=function(){};$ctrlui_$TokenType.__typeName='ctrlui.$TokenType';var $ctrlui_$ValueSet=function(values,ranges,bitField,initialValue){this.$values=null;this.$ranges=null;this.$bitField=null;this.$initialValue=null;this.$values=values;this.$ranges=ranges;this.$bitField=bitField;this.$initialValue=initialValue;};$ctrlui_$ValueSet.__typeName='ctrlui.$ValueSet';var $ctrlui_BitField=function(least,most,disp){this.$_Least=0;this.$_Most=0;this.$_Disp=null;this.$_Values=[];this.$_Ranges=[];this.$_InitailValue=null;$ctrlui_Value.call(this);this.$_Least=least;this.$_Most=most;this.$_Disp=disp;};$ctrlui_BitField.__typeName='ctrlui.BitField';global.ctrlui.BitField=$ctrlui_BitField;var $ctrlui_BitFiledsValue=function(bitFlds,bitFldVals,value){this.$_BitFields=null;this.$_BitFieldValues=null;this.$_Value=0;$ctrlui_Value.call(this);this.$_BitFields=bitFlds;this.$_BitFieldValues=bitFldVals;this.$_Value=value;};$ctrlui_BitFiledsValue.__typeName='ctrlui.BitFiledsValue';global.ctrlui.BitFiledsValue=$ctrlui_BitFiledsValue;var $ctrlui_DeviceController=function(nodeList){this.$m_NodeList=[];$control_UIDeviceController.call(this);this.$m_NodeList=nodeList;this.deviceController=this;};$ctrlui_DeviceController.__typeName='ctrlui.DeviceController';global.ctrlui.DeviceController=$ctrlui_DeviceController;var $ctrlui_DeviceController$DeviceInfo=function(eci,prps){this.$m_ClassInfo=null;this.$m_Profile=false;this.$m_ClassGroupCode=0;this.$m_ClassCode=0;this.$m_InstanceCode=0;this.$m_Properties=[];this.$m_EObjId=0;this.$2$DataField=null;$control_UIDeviceController$UIDeviceInfo.call(this);this.$m_ClassInfo=eci;ss.arrayAddRange(this.$m_Properties,prps);};$ctrlui_DeviceController$DeviceInfo.__typeName='ctrlui.DeviceController$DeviceInfo';$ctrlui_DeviceController$DeviceInfo.$ctor2=function(eci,profile,x1,x2,x3,eobjid){this.$m_ClassInfo=null;this.$m_Profile=false;this.$m_ClassGroupCode=0;this.$m_ClassCode=0;this.$m_InstanceCode=0;this.$m_Properties=[];this.$m_EObjId=0;this.$2$DataField=null;$control_UIDeviceController$UIDeviceInfo.call(this);this.$m_ClassInfo=eci;this.$m_Profile=profile;this.$m_ClassGroupCode=x1;this.$m_ClassCode=x2;this.$m_InstanceCode=x3;this.$m_EObjId=eobjid;};$ctrlui_DeviceController$DeviceInfo.$ctor1=function(eci,dev){$ctrlui_DeviceController$DeviceInfo.$ctor2.call(this,eci,dev.profile,dev.x1,dev.x2,dev.x3,dev.eobjid);};global.ctrlui.DeviceController$DeviceInfo=$ctrlui_DeviceController$DeviceInfo;var $ctrlui_DeviceController$DevicePropertyInfo=function(epi,prop){$ctrlui_DeviceController$DevicePropertyInfo.$ctor1.call(this,epi,prop.epc,prop.flag,epi.size);};$ctrlui_DeviceController$DevicePropertyInfo.__typeName='ctrlui.DeviceController$DevicePropertyInfo';$ctrlui_DeviceController$DevicePropertyInfo.$ctor1=function(epi,epc,flag,size){this.$m_PropertyInfo=null;this.$m_PropertyCode=0;this.$m_Flag=0;this.$m_Size=0;this.$m_Data=null;this.$m_InputTypes=null;this.$2$InputDataField=null;this.$2$IsWaitResField=false;$control_UIDeviceController$UIDevicePropertyInfo.call(this);this.$m_PropertyInfo=epi;this.$m_PropertyCode=epc;this.$m_Flag=flag;this.$m_Size=size;};global.ctrlui.DeviceController$DevicePropertyInfo=$ctrlui_DeviceController$DevicePropertyInfo;var $ctrlui_DeviceController$NodeInfo=function(nodeId,profile){this.$m_NodeId=0;this.$m_Profile=null;this.$m_Devices=[];this.$1$DataField=null;this.$m_NodeId=nodeId;this.$m_Profile=profile;};$ctrlui_DeviceController$NodeInfo.__typeName='ctrlui.DeviceController$NodeInfo';global.ctrlui.DeviceController$NodeInfo=$ctrlui_DeviceController$NodeInfo;var $ctrlui_ENOD_ID=function(){};$ctrlui_ENOD_ID.__typeName='ctrlui.ENOD_ID';global.ctrlui.ENOD_ID=$ctrlui_ENOD_ID;var $ctrlui_EPC_FLAG=function(){};$ctrlui_EPC_FLAG.__typeName='ctrlui.EPC_FLAG';global.ctrlui.EPC_FLAG=$ctrlui_EPC_FLAG;var $ctrlui_Information=function(){this.$info=null;};$ctrlui_Information.__typeName='ctrlui.Information';global.ctrlui.Information=$ctrlui_Information;var $ctrlui_InRangeValue=function(range,value){this.$_Range=null;this.$_Value=0;$ctrlui_Value.call(this);this.$_Range=range;this.$_Value=value;};$ctrlui_InRangeValue.__typeName='ctrlui.InRangeValue';global.ctrlui.InRangeValue=$ctrlui_InRangeValue;var $ctrlui_JsonClassGroupInfo=function(p){this.classGroupCode=0;this.description=null;this.define=null;this.classes=null;this.classGroupCode=ss.unbox(ss.cast(p.classGroupCode,ss.Int32));this.description=ss.cast(p.description,String);this.define=ss.cast(p.define,String);};$ctrlui_JsonClassGroupInfo.__typeName='ctrlui.JsonClassGroupInfo';global.ctrlui.JsonClassGroupInfo=$ctrlui_JsonClassGroupInfo;var $ctrlui_JsonClassInfo=function(p){this.classCode=0;this.description=null;this.name=null;this.define=null;this.type=null;this.classGroup=null;this.properties=null;this.classCode=ss.unbox(ss.cast(p.classCode,ss.Int32));this.description=ss.cast(p.description,String);this.name=ss.cast(p.name,String);this.define=ss.cast(p.define,String);this.type=ss.cast(p.type,String);this.classGroup=ss.cast(p.classGroup,$ctrlui_JsonClassGroupInfo);this.properties=ss.cast(p.properties,Array);};$ctrlui_JsonClassInfo.__typeName='ctrlui.JsonClassInfo';global.ctrlui.JsonClassInfo=$ctrlui_JsonClassInfo;var $ctrlui_JsonFieldInfo=function(){this.description=null;this.valueDescription=null;this.unitDescription=null;this.initialValue=null;this.type=null;this.identifer=null;this.primitive=false;this.isArray=false;this.arrayCount=0;this.size=0;this.fields=null;};$ctrlui_JsonFieldInfo.__typeName='ctrlui.JsonFieldInfo';global.ctrlui.JsonFieldInfo=$ctrlui_JsonFieldInfo;var $ctrlui_JsonNodeInfo=function(type,identifer,attribute){this.objects=null;$ctrlui_JsonObjectInfo.call(this,type,identifer);this.attribute=attribute;this.objects=[];};$ctrlui_JsonNodeInfo.__typeName='ctrlui.JsonNodeInfo';global.ctrlui.JsonNodeInfo=$ctrlui_JsonNodeInfo;var $ctrlui_JsonObjectInfo=function(type,identifer){this.type=null;this.parent=null;this.identifer=null;this.instatceCode=0;this.attribute=null;this.properties=null;this.type=type;this.identifer=identifer;this.instatceCode=1;this.attribute='device';this.properties=[];};$ctrlui_JsonObjectInfo.__typeName='ctrlui.JsonObjectInfo';global.ctrlui.JsonObjectInfo=$ctrlui_JsonObjectInfo;var $ctrlui_JsonPropertyInfo=function(){this.classInfo=null;this.propertyCode=0;this.access=null;this.required=null;$ctrlui_JsonFieldInfo.call(this);};$ctrlui_JsonPropertyInfo.__typeName='ctrlui.JsonPropertyInfo';$ctrlui_JsonPropertyInfo.$ctor1=function(p){this.classInfo=null;this.propertyCode=0;this.access=null;this.required=null;$ctrlui_JsonFieldInfo.call(this);this.classInfo=ss.cast(p.classInfo,$ctrlui_JsonObjectInfo);this.propertyCode=ss.unbox(ss.cast(p.propertyCode,ss.Int32));this.access=ss.cast(p.access,Array);this.required=ss.cast(p.required,Array);this.description=ss.cast(p.description,String);this.valueDescription=ss.cast(p.valueDescription,String);this.unitDescription=ss.cast(p.unitDescription,String);this.initialValue=ss.cast(p.initialValue,String);this.type=ss.cast(p.type,String);this.identifer=ss.cast(p.identifer,String);this.primitive=!!p.primitive;this.isArray=!!p.isArray;this.arrayCount=ss.unbox(ss.cast(p.arrayCount,ss.Int32));this.size=ss.unbox(ss.cast(p.size,ss.Int32));this.fields=ss.cast(p.fields,Array);};global.ctrlui.JsonPropertyInfo=$ctrlui_JsonPropertyInfo;var $ctrlui_JsonSkeltonResult=function(){this.macro=null;this.declare=null;this.predefine=null;this.types=null;this.funcs=null;this.instance=null;this.define=null;this.config=null;};$ctrlui_JsonSkeltonResult.__typeName='ctrlui.JsonSkeltonResult';global.ctrlui.JsonSkeltonResult=$ctrlui_JsonSkeltonResult;var $ctrlui_Option=function(val,disp){this.$_Val=0;this.$_Disp=null;$ctrlui_Value.call(this);this.$_Val=val;this.$_Disp=disp;};$ctrlui_Option.__typeName='ctrlui.Option';global.ctrlui.Option=$ctrlui_Option;var $ctrlui_PropertyInputInfo=function(){this.mode=0;};$ctrlui_PropertyInputInfo.__typeName='ctrlui.PropertyInputInfo';global.ctrlui.PropertyInputInfo=$ctrlui_PropertyInputInfo;var $ctrlui_PropertyInputMode=function(){};$ctrlui_PropertyInputMode.__typeName='ctrlui.PropertyInputMode';global.ctrlui.PropertyInputMode=$ctrlui_PropertyInputMode;var $ctrlui_PropertyRangeInput=function(){this.maximum=0;this.minimum=0;this.minDescrption=null;this.maxDescrption=null;$ctrlui_PropertyInputInfo.call(this);this.mode=2;};$ctrlui_PropertyRangeInput.__typeName='ctrlui.PropertyRangeInput';global.ctrlui.PropertyRangeInput=$ctrlui_PropertyRangeInput;var $ctrlui_PropertySelectInput=function(){this.option=new(ss.makeGenericType(ss.Dictionary$2,[ss.Int32,String]))();$ctrlui_PropertyInputInfo.call(this);this.mode=1;};$ctrlui_PropertySelectInput.__typeName='ctrlui.PropertySelectInput';global.ctrlui.PropertySelectInput=$ctrlui_PropertySelectInput;var $ctrlui_Range=function(min,max,disp){this.$_Min=0;this.$_Max=0;this.$_Disp=null;this.$_MinDisp=null;this.$_MaxDisp=null;this.$_Unit=null;this.$_InitialValue=0;$ctrlui_Value.call(this);this.$_Min=min;this.$_Max=max;this.$_Disp=disp;this.$_MinDisp='';this.$_MaxDisp='';this.$_Unit='';this.$_InitialValue=min;};$ctrlui_Range.__typeName='ctrlui.Range';$ctrlui_Range.$ctor1=function(min,max,disp,minDisp,maxDisp,unit){this.$_Min=0;this.$_Max=0;this.$_Disp=null;this.$_MinDisp=null;this.$_MaxDisp=null;this.$_Unit=null;this.$_InitialValue=0;$ctrlui_Value.call(this);this.$_Min=min;this.$_Max=max;this.$_Disp=disp;this.$_MinDisp=minDisp;this.$_MaxDisp=maxDisp;this.$_Unit=unit;this.$_InitialValue=min;};global.ctrlui.Range=$ctrlui_Range;var $ctrlui_T_ECN_EOJ=function(src,offset){this.$_eoj=new Array(3);this.$_eoj[0]=src[offset];this.$_eoj[1]=src[offset+1];this.$_eoj[2]=src[offset+2];};$ctrlui_T_ECN_EOJ.__typeName='ctrlui.T_ECN_EOJ';global.ctrlui.T_ECN_EOJ=$ctrlui_T_ECN_EOJ;var $ctrlui_Value=function(){};$ctrlui_Value.__typeName='ctrlui.Value';global.ctrlui.Value=$ctrlui_Value;var $ctrlui_ValueRange=function(){this.$_Values=[];this.$_Ranges=[];this.$_BitFields=[];this.$_MemberFields=[];this.$_InitailValue=null;};$ctrlui_ValueRange.__typeName='ctrlui.ValueRange';$ctrlui_ValueRange.$parseValueRange=function(input,type,values,ranges,bitFeild,initialValue){bitFeild.$=null;initialValue.$=null;var tokens=[];var pos=0;while(pos<input.length){var ms;var m;if(ss.isValue(m=(ms=new RegExp($ctrlui_$TokenInfo.$hexValue)).exec(input.substring(pos)))){tokens.push(new $ctrlui_$TokenInfo(m[0],1));pos+=m[0].length;}
+else if(ss.isValue(m=(ms=new RegExp($ctrlui_$TokenInfo.$numeric)).exec(input.substring(pos)))){tokens.push(new $ctrlui_$TokenInfo(m[0],2));pos+=m[0].length;}
+else{if(ss.isNullOrUndefined(m=(ms=new RegExp($ctrlui_$TokenInfo.$separetor)).exec(input.substring(pos)))){tokens.push(new $ctrlui_$TokenInfo(input.substring(pos),3));break;}
+var index=pos+m.index;if(index===pos){tokens.push(new $ctrlui_$TokenInfo(m[0],0));pos+=1;}
+else{tokens.push(new $ctrlui_$TokenInfo(input.substr(pos,index-pos),3));tokens.push(new $ctrlui_$TokenInfo(m[0],0));pos=index+1;}}}
+tokens.push(new $ctrlui_$TokenInfo('',4));var OK=false;var sentence=[];var state=0;for(var $t1=0;$t1<tokens.length;$t1++){var token=tokens[$t1];switch(state){case 0:{if(token.$type===1||token.$type===2){sentence.push(token);state=1;continue;}
+else if(token.$type===0&&token.$token==='['){if(ss.isValue(bitFeild.$)){break;}
+state=12;continue;}
+break;}
+case 1:{if(token.$type===0){switch(token.$token){case'=':{state=2;continue;}
+case'ï½':{state=4;continue;}}}
+else if(token.$type===4){var option=new $ctrlui_Option(sentence[0].$toInt64(type),'åºå®');if(ss.isValue(bitFeild.$)){bitFeild.$.$addValue(option);}
+else{if(ss.isNullOrUndefined(initialValue.$)){initialValue.$=option;}
+values.push(option);}
+ss.clear(sentence);state=11;continue;}
+break;}
+case 2:{if(token.$type===3){var option1=new $ctrlui_Option(sentence[0].$toInt64(type),token.$token);if(ss.isValue(bitFeild.$)){bitFeild.$.$addValue(option1);}
+else{if(ss.isNullOrUndefined(initialValue.$)){initialValue.$=option1;}
+values.push(option1);}
+ss.clear(sentence);state=11;continue;}
+else if(token.$type===2){sentence.push(token);state=3;continue;}
+break;}
+case 3:{if(token.$type===3){var option2=new $ctrlui_Option(sentence[0].$toInt64(type),sentence[1].$token+token.$token);if(ss.isValue(bitFeild.$)){bitFeild.$.$addValue(option2);}
+else{if(ss.isNullOrUndefined(initialValue.$)){initialValue.$=option2;}
+values.push(option2);}
+ss.clear(sentence);state=11;continue;}
+else if(token.$type===0&&token.$token===','){var option3=new $ctrlui_Option(sentence[0].$toInt64(type),sentence[1].$token);if(ss.isValue(bitFeild.$)){bitFeild.$.$addValue(option3);}
+else{if(ss.isNullOrUndefined(initialValue.$)){initialValue.$=option3;}
+values.push(option3);}
+ss.clear(sentence);state=0;continue;}
+else if(token.$type===4){var option4=new $ctrlui_Option(sentence[0].$toInt64(type),sentence[1].$token);if(ss.isValue(bitFeild.$)){bitFeild.$.$addValue(option4);}
+else{if(ss.isNullOrUndefined(initialValue.$)){initialValue.$=option4;}
+values.push(option4);}
+ss.clear(sentence);OK=true;}
+break;}
+case 4:{if(token.$type===1||token.$type===2){sentence.push(token);state=5;continue;}
+else if(token.$type===0&&token.$token==='='){var max='0x';for(var i=sentence[0].$token.length-2;i>0;i--){max+='F';}
+sentence.push(new $ctrlui_$TokenInfo(max,1));state=6;continue;}
+break;}
+case 5:{if(token.$type===0){switch(token.$token){case'=':{if(sentence.length===2){state=6;continue;}
+break;}
+case'(':{sentence.push(new $ctrlui_$TokenInfo('',3));state=7;continue;}
+case',':{var range=new $ctrlui_Range(sentence[0].$toInt64(type),sentence[1].$toInt64(type),((sentence.length>2)?sentence[2].$token:''));if(ss.isValue(bitFeild.$)){bitFeild.$.$addRange(range);}
+else{if(ss.isNullOrUndefined(initialValue.$)){initialValue.$=range;}
+ranges.push(range);}
+ss.clear(sentence);state=0;continue;}}}
+else if(token.$type===4){var range1=new $ctrlui_Range(sentence[0].$toInt64(type),sentence[1].$toInt64(type),((sentence.length>2)?sentence[2].$token:''));if(ss.isValue(bitFeild.$)){bitFeild.$.$addRange(range1);}
+else{if(ss.isNullOrUndefined(initialValue.$)){initialValue.$=range1;}
+ranges.push(range1);}
+ss.clear(sentence);OK=true;}
+break;}
+case 6:{if(token.$type===3){sentence.push(token);state=5;continue;}
+break;}
+case 7:{if(token.$type===2||token.$type===3){sentence.push(token);state=8;continue;}
+break;}
+case 8:{if(token.$type===0&&token.$token==='ï½'){state=9;continue;}
+break;}
+case 9:{if(token.$type===2||token.$type===3){sentence.push(token);state=10;continue;}
+break;}
+case 10:{if(token.$type===0&&token.$token===')'){var range2=new $ctrlui_Range.$ctor1(sentence[0].$toInt64(type),sentence[1].$toInt64(type),sentence[2].$token,sentence[3].$token,sentence[4].$token,((sentence.length>5)?sentence[5].$token:''));if(ss.isValue(bitFeild.$)){bitFeild.$.$addRange(range2);}
+else{if(ss.isNullOrUndefined(initialValue.$)){initialValue.$=range2;}
+ranges.push(range2);}
+ss.clear(sentence);state=11;continue;}
+else if(token.$type===3){sentence.push(token);state=10;continue;}
+break;}
+case 12:{if(token.$type===2){sentence.push(token);state=13;continue;}
+break;}
+case 13:{if(token.$type===0){switch(token.$token){case'ï½':{state=14;continue;}
+case']':{sentence.push(sentence[0]);state=15;continue;}}}
+break;}
+case 14:{if(token.$type===2){sentence.push(token);state=16;continue;}
+break;}
+case 16:{if(token.$type===0&&token.$token===']'){state=15;continue;}
+break;}
+case 15:{if(token.$type===3){sentence.push(token);state=17;continue;}
+break;}
+case 17:{if(token.$type===0&&token.$token===':'){bitFeild.$=new $ctrlui_BitField(sentence[0].$toInt32(),sentence[1].$toInt32(),sentence[2].$token);if(ss.isNullOrUndefined(initialValue.$)){initialValue.$=bitFeild.$;}
+ss.clear(sentence);state=0;continue;}
+else if(token.$type===4){bitFeild.$=new $ctrlui_BitField(sentence[0].$toInt32(),sentence[1].$toInt32(),sentence[2].$token);if(ss.isNullOrUndefined(initialValue.$)){initialValue.$=bitFeild.$;}
+ss.clear(sentence);OK=true;break;}
+break;}
+case 11:{if(token.$type===4){OK=true;}
+else if(token.$type===0&&token.$token===','){state=0;continue;}
+break;}}
+break;}
+return OK;};$ctrlui_ValueRange.parse=function(valrng,emti){var valueRange=new $ctrlui_ValueRange();if(emti.primitive){var lines=valrng.split(new RegExp('\r\n'));for(var $t1=0;$t1<lines.length;$t1++){var line=lines[$t1];if((new RegExp('^<(.+)>$')).test(line)){continue;}
+var values;var ranges;var bitField={};var initialValue={};var pair={};if($ctrlui_ValueRange.$_ParsedText.tryGetValue(line,pair)){values=pair.$.$values;ranges=pair.$.$ranges;bitField.$=pair.$.$bitField;initialValue.$=pair.$.$initialValue;}
+else{values=[];ranges=[];$ctrlui_ValueRange.$parseValueRange(line,emti.type,values,ranges,bitField,initialValue);$ctrlui_ValueRange.$_ParsedText.add(line,new $ctrlui_$ValueSet(values,ranges,bitField.$,initialValue.$));}
+ss.arrayAddRange(valueRange.$_Values,values);ss.arrayAddRange(valueRange.$_Ranges,ranges);if(ss.isValue(bitField.$)){valueRange.$_BitFields.push(bitField.$);}
+if(ss.isNullOrUndefined(valueRange.$_InitailValue)){valueRange.$_InitailValue=initialValue.$;}}}
+else{for(var $t2=0;$t2<emti.fields.length;$t2++){var efi=emti.fields[$t2];var member=$ctrlui_ValueRange.parse(efi.valueDescription,efi);valueRange.$_MemberFields.push(member);}}
+return valueRange;};global.ctrlui.ValueRange=$ctrlui_ValueRange;var $ctrlui_WampApiKadecotDevice=function(doc){this.description=null;this.deviceId=0;this.deviceType=null;this.ip_addr=null;this.nickname=null;this.protocol=null;this.status=false;this.description=ss.cast(doc.description,String);this.deviceId=ss.unbox(ss.cast(doc.deviceId,ss.Int32));this.deviceType=ss.cast(doc.deviceType,String);this.ip_addr=ss.cast(doc.ip_addr,String);this.nickname=ss.cast(doc.nickname,String);this.protocol=ss.cast(doc.protocol,String);this.status=!!doc.status;};$ctrlui_WampApiKadecotDevice.__typeName='ctrlui.WampApiKadecotDevice';global.ctrlui.WampApiKadecotDevice=$ctrlui_WampApiKadecotDevice;var $ctrlui_WampApiKadecotGet=function(deviceId,propertyName){this.deviceId=0;this.propertyName=null;this.deviceId=deviceId;this.propertyName=propertyName;};$ctrlui_WampApiKadecotGet.__typeName='ctrlui.WampApiKadecotGet';global.ctrlui.WampApiKadecotGet=$ctrlui_WampApiKadecotGet;var $ctrlui_WampApiKadecotRes=function(item){this.propertyName=null;this.propertyValue=null;this.propertyName=ss.cast(item.propertyName,String);if(ss.isValue(ss.getMembers(ss.getInstanceType(item),16,284,'propertyValue'))){this.propertyValue=ss.cast(item.propertyValue,Array);}
+else{this.propertyValue=[];}};$ctrlui_WampApiKadecotRes.__typeName='ctrlui.WampApiKadecotRes';global.ctrlui.WampApiKadecotRes=$ctrlui_WampApiKadecotRes;var $ctrlui_WampApiKadecotSet=function(deviceId,propertyName,propertyValue){this.deviceId=0;this.propertyName=null;this.propertyValue=null;this.deviceId=deviceId;this.propertyName=propertyName;this.propertyValue=propertyValue;};$ctrlui_WampApiKadecotSet.__typeName='ctrlui.WampApiKadecotSet';global.ctrlui.WampApiKadecotSet=$ctrlui_WampApiKadecotSet;var $ctrlui_WebApiEchonetMessage=function(esv){this.esv=0;this.sender=0;this.seoj=new $ctrlui_T_ECN_EOJ(new Array(3),0);this.deoj=new $ctrlui_T_ECN_EOJ(new Array(3),0);this.properties=[];this.esv=ss.unbox(ss.cast(esv.esv,ss.Int32));this.sender=ss.cast(esv.sender,ss.Int32);var sseoj=ss.cast(esv.seoj,String);this.seoj.set_x1(parseInt(sseoj.substr(0,2),16));this.seoj.set_x2(parseInt(sseoj.substr(2,2),16));this.seoj.set_x3(parseInt(sseoj.substr(4,2),16));var $t1=ss.cast(esv.properties,Array);for(var $t2=0;$t2<$t1.length;$t2++){var prop=$t1[$t2];this.properties.push(new $ctrlui_WebApiPropertyData(prop));}};$ctrlui_WebApiEchonetMessage.__typeName='ctrlui.WebApiEchonetMessage';global.ctrlui.WebApiEchonetMessage=$ctrlui_WebApiEchonetMessage;var $ctrlui_WebApiGet=function(){this.deojid=0;this.properties=[];};$ctrlui_WebApiGet.__typeName='ctrlui.WebApiGet';$ctrlui_WebApiGet.$ctor1=function(esv){this.deojid=0;this.properties=[];this.deojid=ss.cast(esv.deojid,ss.Int32);var $t1=ss.cast(esv.properties,Array);for(var $t2=0;$t2<$t1.length;$t2++){var prop=$t1[$t2];this.properties.push(new $ctrlui_WebApiPropertyCode.$ctor1(prop,true));}};global.ctrlui.WebApiGet=$ctrlui_WebApiGet;var $ctrlui_WebApiGrsaguraMessage=function(esv){this.pin=0;this.value=null;this.pin=ss.unbox(ss.cast(esv.pin,ss.Int32));if(ss.referenceEquals(ss.getInstanceType(esv.value),Number)){this.value=ss.unbox(ss.cast(esv.value,Number)).toString();}
+else{this.value=ss.cast(esv.value,String);}};$ctrlui_WebApiGrsaguraMessage.__typeName='ctrlui.WebApiGrsaguraMessage';global.ctrlui.WebApiGrsaguraMessage=$ctrlui_WebApiGrsaguraMessage;var $ctrlui_WebApiObjectInfo=function(eobjid,obj,profile){this.profile=false;this.x1=0;this.x2=0;this.x3=0;this.eobjid=0;this.enodid=0;this.properties=[];this.eobjid=eobjid;this.profile=profile;this.x1=ss.unbox(ss.cast(obj.x1,ss.Int32));this.x2=ss.unbox(ss.cast(obj.x2,ss.Int32));this.x3=ss.unbox(ss.cast(obj.x3,ss.Int32));this.enodid=ss.unbox(ss.cast(obj.enodid,ss.Int32));var $t1=ss.cast(obj.properties,Array);for(var $t2=0;$t2<$t1.length;$t2++){var prop=$t1[$t2];this.properties.push(new $ctrlui_WebApiPropertyInfo(prop));}};$ctrlui_WebApiObjectInfo.__typeName='ctrlui.WebApiObjectInfo';global.ctrlui.WebApiObjectInfo=$ctrlui_WebApiObjectInfo;var $ctrlui_WebApiPropertyCode=function(epc){this.epc=0;this.epc=epc;};$ctrlui_WebApiPropertyCode.__typeName='ctrlui.WebApiPropertyCode';$ctrlui_WebApiPropertyCode.$ctor1=function(prop,dummy){this.epc=0;this.epc=ss.unbox(ss.cast(prop.epc,ss.Int32));};global.ctrlui.WebApiPropertyCode=$ctrlui_WebApiPropertyCode;var $ctrlui_WebApiPropertyData=function(prop){this.epc=0;this.edt=null;var _edt;this.epc=ss.unbox(ss.cast(prop.epc,ss.Int32));var text=ss.cast(prop.edt,String);if(text.length>0){_edt=new Array(ss.Int32.div(text.length,2));for(var i=0,j=0;j<text.length;j+=2){_edt[i++]=parseInt(text.substr(j,2),16);}}
+else{_edt=[];}
+this.edt=this.$setEdt(_edt);};$ctrlui_WebApiPropertyData.__typeName='ctrlui.WebApiPropertyData';$ctrlui_WebApiPropertyData.$ctor1=function(epc,edt){this.epc=0;this.edt=null;this.epc=epc;this.edt=this.$setEdt(edt);};global.ctrlui.WebApiPropertyData=$ctrlui_WebApiPropertyData;var $ctrlui_WebApiPropertyInfo=function(prop){this.epc=0;this.flag=0;this.epc=ss.unbox(ss.cast(prop.epc,ss.Int32));this.flag=0;var temp=ss.cast(prop.flag,String);if(temp.indexOf('RULE_ANNO')!==-1){this.flag|=4;}
+if(temp.indexOf('RULE_SET')!==-1){this.flag|=1;}
+if(temp.indexOf('RULE_GET')!==-1){this.flag|=2;}
+if(temp.indexOf('ANNOUNCE')!==-1){this.flag|=64;}
+if(temp.indexOf('VARIABLE')!==-1){this.flag|=128;}};$ctrlui_WebApiPropertyInfo.__typeName='ctrlui.WebApiPropertyInfo';global.ctrlui.WebApiPropertyInfo=$ctrlui_WebApiPropertyInfo;var $ctrlui_WebApiSet=function(){this.deojid=0;this.properties=[];};$ctrlui_WebApiSet.__typeName='ctrlui.WebApiSet';$ctrlui_WebApiSet.$ctor1=function(esv){this.deojid=0;this.properties=[];this.deojid=ss.cast(esv.deojid,ss.Int32);var $t1=ss.cast(esv.properties,Array);for(var $t2=0;$t2<$t1.length;$t2++){var prop=$t1[$t2];this.properties.push(new $ctrlui_WebApiPropertyData(prop));}};global.ctrlui.WebApiSet=$ctrlui_WebApiSet;var $ctrlui_WebApiSetGet=function(){this.deojid=0;this.setProperties=[];this.getProperties=[];};$ctrlui_WebApiSetGet.__typeName='ctrlui.WebApiSetGet';$ctrlui_WebApiSetGet.$ctor1=function(esv){this.deojid=0;this.setProperties=[];this.getProperties=[];this.deojid=ss.cast(esv.deojid,ss.Int32);var $t1=ss.cast(esv.properties,Array);for(var $t2=0;$t2<$t1.length;$t2++){var prop=$t1[$t2];this.getProperties.push(new $ctrlui_WebApiPropertyCode.$ctor1(prop,true));}};global.ctrlui.WebApiSetGet=$ctrlui_WebApiSetGet;var $Kadecot_WAMP_MSG_TYPE=function(){};$Kadecot_WAMP_MSG_TYPE.__typeName='Kadecot.WAMP_MSG_TYPE';global.Kadecot.WAMP_MSG_TYPE=$Kadecot_WAMP_MSG_TYPE;var $Kadecot_WampClient=function(){this.$webSocket=null;this.$challnge_flag=false;this.$url=null;this.$plotocols=['wamp.2.json'];this.$on_open_flag=false;this.$request_id=0;this.$errorCallback=null;this.$subscription_id_list=null;this.$wampClientCore=null;this.$challnge_flag=false;this.$url=null;this.$webSocket=null;this.$on_open_flag=false;this.$errorCallback=null;this.$request_id=1;this.$subscription_id_list=new(ss.makeGenericType(ss.Dictionary$2,[ss.Int32,ss.Int32]))();this.$wampClientCore=new $Kadecot_WampClientCore();};$Kadecot_WampClient.__typeName='Kadecot.WampClient';global.Kadecot.WampClient=$Kadecot_WampClient;var $Kadecot_WampClientCore=function(){this.$1$openCallbackField=null;this.$1$closeCallbackField=null;this.$1$heartbeatCallbackField=null;this.$1$helloCallbackField=null;this.$1$authenticateCallbackField=null;this.$1$goodbyeCallbackField=null;this.$1$publishCallbackField=null;this.$1$subscribeCallbackField=null;this.$1$unsubscribeCallbackField=null;this.$1$callCallbackField=null;this.$1$cancelCallbackField=null;this.$1$registerCallbackField=null;this.$1$unregisterCallbackField=null;this.$1$eventCallbackField=null;this.$1$invocationCallbackField=null;this.$1$interruptCallbackField=null;this.set_openCallback(null);this.set_closeCallback(null);this.set_heartbeatCallback(null);this.set_helloCallback(null);this.set_authenticateCallback(null);this.set_goodbyeCallback(null);this.set_publishCallback(new(ss.makeGenericType(ss.Dictionary$2,[ss.Int32,Function]))());this.set_subscribeCallback(new(ss.makeGenericType(ss.Dictionary$2,[ss.Int32,Function]))());this.set_unsubscribeCallback(new(ss.makeGenericType(ss.Dictionary$2,[ss.Int32,Function]))());this.set_callCallback(new(ss.makeGenericType(ss.Dictionary$2,[ss.Int32,Function]))());this.set_cancelCallback(new(ss.makeGenericType(ss.Dictionary$2,[ss.Int32,Function]))());this.set_registerCallback(new(ss.makeGenericType(ss.Dictionary$2,[ss.Int32,Function]))());this.set_unregisterCallback(new(ss.makeGenericType(ss.Dictionary$2,[ss.Int32,Function]))());this.set_eventCallback(new(ss.makeGenericType(ss.Dictionary$2,[ss.Int32,Function]))());this.set_invocationCallback(new(ss.makeGenericType(ss.Dictionary$2,[ss.Int32,Function]))());this.set_interruptCallback(new(ss.makeGenericType(ss.Dictionary$2,[ss.Int32,Function]))());};$Kadecot_WampClientCore.__typeName='Kadecot.WampClientCore';global.Kadecot.WampClientCore=$Kadecot_WampClientCore;var $Kadecot_WampDeserializer=function(){};$Kadecot_WampDeserializer.__typeName='Kadecot.WampDeserializer';$Kadecot_WampDeserializer.parse=function(msg){var data;if(ss.isNullOrUndefined(msg)||ss.equalsT(msg,'')){throw new ss.ArgumentNullException();}
+data=JSON.parse(msg);if(!ss.isInstanceOfType(data,ss.IList)||ss.isInstanceOfType(data,ss.IList)&&ss.cast(data,Array).length<2){return null;}
+var list=ss.cast(data,Array);switch(ss.unbox(ss.cast(list[0],ss.Int32))){case 1:{if(ss.cast(data,Array).length<3){return null;}
+break;}
+case 2:{if(ss.cast(data,Array).length<3){return null;}
+break;}
+case 3:{if(ss.cast(data,Array).length<3){return null;}
+break;}
+case 4:{if(ss.cast(data,Array).length<3){return null;}
+break;}
+case 5:{if(ss.cast(data,Array).length<3){return null;}
+break;}
+case 6:{if(ss.cast(data,Array).length<3){return null;}
+break;}
+case 7:{if(ss.cast(data,Array).length<3){return null;}
+break;}
+case 8:{if(ss.cast(data,Array).length<5){return null;}
+switch(ss.unbox(ss.cast(ss.cast(data,Array)[1],ss.Int32))){case 6:case 70:case 8:case 32:case 34:case 16:case 68:case 48:{break;}
+case 64:case 66:{break;}
+default:{return null;}}
+break;}
+case 16:{if(ss.cast(data,Array).length<4){return null;}
+break;}
+case 17:{if(ss.cast(data,Array).length<3){return null;}
+break;}
+case 32:{if(ss.cast(data,Array).length<4){return null;}
+break;}
+case 33:{if(ss.cast(data,Array).length<3){return null;}
+break;}
+case 34:{if(ss.cast(data,Array).length<3){return null;}
+break;}
+case 35:{if(ss.cast(data,Array).length<2){return null;}
+break;}
+case 36:{if(ss.cast(data,Array).length<4){return null;}
+break;}
+case 48:{if(ss.cast(data,Array).length<4){return null;}
+break;}
+case 49:{if(ss.cast(data,Array).length<3){return null;}
+break;}
+case 50:{if(ss.cast(data,Array).length<3){return null;}
+break;}
+case 64:{if(ss.cast(data,Array).length<4){return null;}
+break;}
+case 65:{if(ss.cast(data,Array).length<3){return null;}
+break;}
+case 66:{if(ss.cast(data,Array).length<3){return null;}
+break;}
+case 67:{if(ss.cast(data,Array).length<2){return null;}
+break;}
+case 68:{if(ss.cast(data,Array).length<4){return null;}
+break;}
+case 69:{if(ss.cast(data,Array).length<3){return null;}
+break;}
+case 70:{if(ss.cast(data,Array).length<3){return null;}
+break;}
+default:{return null;}}
+return data;};global.Kadecot.WampDeserializer=$Kadecot_WampDeserializer;var $Kadecot_WampSerializer=function(){};$Kadecot_WampSerializer.__typeName='Kadecot.WampSerializer';$Kadecot_WampSerializer.createHello=function(realm,details){var data;if(ss.isNullOrUndefined(realm)||ss.equalsT(realm,'')){throw new ss.ArgumentNullException();}
+if(ss.isNullOrUndefined(details)||ss.equalsT(details,'')){throw new ss.ArgumentNullException();}
+var detailJson=JSON.parse(details);var list=[];ss.add(list,1);ss.add(list,realm);ss.add(list,detailJson);data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createWelcome=function(session,details){var data;var detailJson=JSON.parse(details);var list=[];ss.add(list,2);ss.add(list,session);ss.add(list,detailJson);data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createAbort=function(details,reason){var data;if(ss.isNullOrUndefined(details)||ss.equalsT(details,'')){throw new ss.ArgumentNullException();}
+if(ss.isNullOrUndefined(reason)||ss.equalsT(reason,'')){throw new ss.ArgumentNullException();}
+var detailJson=JSON.parse(details);var list=[];ss.add(list,3);ss.add(list,detailJson);ss.add(list,reason);data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createChallenge=function(authMethod,extra){var data;if(ss.isNullOrUndefined(authMethod)||ss.equalsT(authMethod,'')){throw new ss.ArgumentNullException();}
+if(ss.isNullOrUndefined(extra)||ss.equalsT(extra,'')){throw new ss.ArgumentNullException();}
+var extraJson=JSON.parse(extra);var list=[];ss.add(list,4);ss.add(list,authMethod);ss.add(list,extraJson);data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createAuthenticate=function(signature,extra){var data;if(ss.isNullOrUndefined(signature)||ss.equalsT(signature,'')){throw new ss.ArgumentNullException();}
+if(ss.isNullOrUndefined(extra)||ss.equalsT(extra,'')){throw new ss.ArgumentNullException();}
+var extraJson=JSON.parse(extra);var list=[];ss.add(list,5);ss.add(list,signature);ss.add(list,extraJson);data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createGoodbye=function(details,reason){var data;if(ss.isNullOrUndefined(details)||ss.equalsT(details,'')){throw new ss.ArgumentNullException();}
+if(ss.isNullOrUndefined(reason)){throw new ss.ArgumentNullException();}
+var detailJson=JSON.parse(details);var list=[];ss.add(list,6);ss.add(list,detailJson);ss.add(list,reason);data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createHeartbeat=function(incomingSeq,outgoingSeq,discard){var data;var list=[];if(ss.isNullOrUndefined(discard)||ss.equalsT(discard,'')){ss.add(list,7);ss.add(list,incomingSeq);ss.add(list,outgoingSeq);data=JSON.stringify(list);}
+else{ss.add(list,7);ss.add(list,incomingSeq);ss.add(list,outgoingSeq);ss.add(list,discard);data=JSON.stringify(list);}
+return data;};$Kadecot_WampSerializer.createError=function(type,request,details,error,arguments1,argumentsKw){var data;if(ss.isNullOrUndefined(details)||ss.equalsT(details,'')){throw new ss.ArgumentNullException();}
+if(ss.isNullOrUndefined(error)||ss.equalsT(error,'')){throw new ss.ArgumentNullException();}
+var detailJson=JSON.parse(details);var argsJson=JSON.parse(arguments1);var argsKwJson=JSON.parse(argumentsKw);var list=[];ss.add(list,8);ss.add(list,type);ss.add(list,request);ss.add(list,detailJson);ss.add(list,error);if(ss.isValue(arguments1)&&ss.isNullOrUndefined(argumentsKw)){ss.add(list,argsJson);}
+else if(ss.isValue(arguments1)&&ss.isValue(argumentsKw)){ss.add(list,argsJson);ss.add(list,argsKwJson);}
+data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createPublish=function(request,options,topic,arguments1,argumentsKw){var data;if(ss.isNullOrUndefined(options)||ss.equalsT(options,'')){throw new ss.ArgumentNullException();}
+if(ss.isNullOrUndefined(topic)||ss.equalsT(topic,'')){throw new ss.ArgumentNullException();}
+var optJson=JSON.parse(options);var argsJson=JSON.parse(arguments1);var argsKwJson=JSON.parse(argumentsKw);var list=[];ss.add(list,16);ss.add(list,request);ss.add(list,optJson);ss.add(list,topic);if(ss.isValue(arguments1)&&ss.isNullOrUndefined(argumentsKw)){ss.add(list,argsJson);}
+else if(ss.isValue(arguments1)&&ss.isValue(argumentsKw)){ss.add(list,argsJson);ss.add(list,argsKwJson);}
+data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createPublished=function(request,publication){var data;var list=[];ss.add(list,17);ss.add(list,request);ss.add(list,publication);data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createSubscribe=function(request,options,topic){var data;if(ss.isNullOrUndefined(options)||ss.equalsT(options,'')){throw new ss.ArgumentNullException();}
+if(ss.isNullOrUndefined(topic)||ss.equalsT(topic,'')){throw new ss.ArgumentNullException();}
+var optJson=JSON.parse(options);var list=[];ss.add(list,32);ss.add(list,request);ss.add(list,optJson);ss.add(list,topic);data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createSubscribed=function(request,subscription){var data;var list=[];ss.add(list,33);ss.add(list,request);ss.add(list,subscription);data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createUnsubscribe=function(request,subscription){var data;var list=[];ss.add(list,34);ss.add(list,request);ss.add(list,subscription);data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createUnsubscribed=function(request){var data;var list=[];ss.add(list,35);ss.add(list,request);data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createEvent=function(subscription,publication,details,arguments1,argumentsKw){var data;if(ss.isNullOrUndefined(details)||ss.equalsT(details,'')){throw new ss.ArgumentNullException();}
+var detailJson=JSON.parse(details);var argsJson=JSON.parse(arguments1);var argsKwJson=JSON.parse(argumentsKw);var list=[];ss.add(list,36);ss.add(list,subscription);ss.add(list,publication);ss.add(list,detailJson);if(ss.isValue(arguments1)&&ss.isNullOrUndefined(argumentsKw)){ss.add(list,argsJson);}
+else if(ss.isValue(arguments1)&&ss.isValue(argumentsKw)){ss.add(list,argsJson);ss.add(list,argsKwJson);}
+data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createCall=function(request,options,procedure,arguments1,argumentsKw){var data;if(ss.isNullOrUndefined(options)||ss.equalsT(options,'')){throw new ss.ArgumentNullException();}
+if(ss.isNullOrUndefined(procedure)||ss.equalsT(procedure,'')){throw new ss.ArgumentNullException();}
+var optionJson=JSON.parse(options);var argsJson=JSON.parse(arguments1);var argsKwJson=JSON.parse(argumentsKw);var list=[];ss.add(list,48);ss.add(list,request);ss.add(list,optionJson);ss.add(list,procedure);if(ss.isValue(arguments1)&&ss.isNullOrUndefined(argumentsKw)){ss.add(list,argsJson);}
+else if(ss.isValue(arguments1)&&ss.isValue(argumentsKw)){ss.add(list,argsJson);ss.add(list,argsKwJson);}
+data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createCancel=function(request,options){var data;if(ss.isNullOrUndefined(options)||ss.equalsT(options,'')){throw new ss.ArgumentNullException();}
+var optionJson=JSON.parse(options);var list=[];ss.add(list,49);ss.add(list,request);ss.add(list,optionJson);data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createResult=function(request,details,arguments1,argumentsKw){var data;if(ss.isNullOrUndefined(details)||ss.equalsT(details,'')){throw new ss.ArgumentNullException();}
+var detailJson=JSON.parse(details);var argsJson=JSON.parse(arguments1);var argsKwJson=JSON.parse(argumentsKw);var list=[];ss.add(list,50);ss.add(list,request);ss.add(list,detailJson);if(ss.isValue(arguments1)&&ss.isNullOrUndefined(argumentsKw)){ss.add(list,argsJson);}
+else if(ss.isValue(arguments1)&&ss.isValue(argumentsKw)){ss.add(list,argsJson);ss.add(list,argsKwJson);}
+data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createRegister=function(request,options,procedure){var data;if(ss.isNullOrUndefined(options)||ss.equalsT(options,'')){throw new ss.ArgumentNullException();}
+if(ss.isNullOrUndefined(procedure)||ss.equalsT(procedure,'')){throw new ss.ArgumentNullException();}
+var optJson=JSON.parse(options);var list=[];ss.add(list,64);ss.add(list,request);ss.add(list,optJson);ss.add(list,procedure);data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createRegistered=function(request,registration){var data;var list=[];ss.add(list,65);ss.add(list,request);ss.add(list,registration);data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createUnregister=function(request,registration){var data;var list=[];ss.add(list,66);ss.add(list,request);ss.add(list,registration);data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createUnregistered=function(request){var data;var list=[];ss.add(list,67);ss.add(list,request);data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createInvocation=function(request,registration,details,arguments1,argumentsKw){var data;if(ss.isNullOrUndefined(details)||ss.equalsT(details,'')){throw new ss.ArgumentNullException();}
+var detailJson=JSON.parse(details);var argsJson=JSON.parse(arguments1);var argsKwJson=JSON.parse(argumentsKw);var list=[];ss.add(list,68);ss.add(list,request);ss.add(list,registration);ss.add(list,detailJson);if(ss.isValue(arguments1)&&ss.isNullOrUndefined(argumentsKw)){ss.add(list,argsJson);}
+else if(ss.isValue(arguments1)&&ss.isValue(argumentsKw)){ss.add(list,argsJson);ss.add(list,argsKwJson);}
+data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createInterrupt=function(request,options){var data;if(ss.isNullOrUndefined(options)||ss.equalsT(options,'')){throw new ss.ArgumentNullException();}
+var optJson=JSON.parse(options);var list=[];ss.add(list,69);ss.add(list,request);ss.add(list,optJson);data=JSON.stringify(list);return data;};$Kadecot_WampSerializer.createYield=function(request,options,arguments1,argumentsKw){var data;if(ss.isNullOrUndefined(options)||ss.equalsT(options,'')){throw new ss.ArgumentNullException();}
+var optJson=JSON.parse(options);var argsJson=JSON.parse(arguments1);var argsKwJson=JSON.parse(argumentsKw);var list=[];ss.add(list,70);ss.add(list,request);ss.add(list,optJson);if(ss.isValue(arguments1)&&ss.isNullOrUndefined(argumentsKw)){ss.add(list,argsJson);}
+else if(ss.isValue(arguments1)&&ss.isValue(argumentsKw)){ss.add(list,argsJson);ss.add(list,argsKwJson);}
+data=JSON.stringify(list);return data;};global.Kadecot.WampSerializer=$Kadecot_WampSerializer;ss.initClass($CtrlUI,$asm,{get_$m_CurrentNode:function(){return this.$_m_CurrentNode;},set_$m_CurrentNode:function(value){var flag=!ss.referenceEquals(this.$_m_CurrentNode,value)||ss.isNullOrUndefined(this.$_m_CurrentNode)&&ss.isNullOrUndefined(value);this.$_m_CurrentNode=value;if(flag){$(document).trigger($control_UIEventNames.currentNodeChange);}},$initClassGroups$1:function(eve){$CtrlUI.$page=eve.target;this.$setEvent();if(ss.isValue($CtrlUI.$m_ClassGroups)){return;}
+$ctrlui_DeviceController.getClassInfo=ss.mkdel(this,this.$getClassInfoHandler);this.set_$m_CurrentNode(null);var ClassGroupListUrl='devices/ClassGroupList.json';$.ajax(ClassGroupListUrl).success(ss.mkdel(this,this.$initClassGroups)).error(function(request,textStatus,error){$CtrlUI.$ajaxError(request,textStatus,error,ClassGroupListUrl);});},$setEvent:function(){$(document).on($control_UIEventNames.loadingShow,$control_UIEventHandler.loadingShow);$(document).on($control_UIEventNames.loadingHide,$control_UIEventHandler.loadingHide);$(document).on($control_UIEventNames.currentNodeChange,ss.thisFix(ss.mkdel(this,this.$currentNodeChange)));$(document).on($control_UIEventNames.searchStart,ss.mkdel(this,this.searchStart));$(document).on($control_UIEventNames.searchEnd,ss.mkdel(this,this.searchEnd));$(document).on($control_UIEventNames.searchError,ss.mkdel(this,this.searchError));$(document).on($control_UIEventNames.propertyWriteStart,ss.mkdel(this,this.propertyWriteStart));$(document).on($control_UIEventNames.propertyWriteEnd,ss.mkdel(this,this.propertyWriteEnd));this.get_connectionSwt().change(ss.thisFix(ss.mkdel(this,this.connect)));this.get_setPropertyBtn().click(ss.thisFix(ss.mkdel(this,this.setProperty)));this.get_getPropertyBtn().click(ss.mkdel(this,this.getProperty));this.get_setGetPropertyBtn().click(ss.thisFix(ss.mkdel(this,this.setGetProperty)));this.get_kadecotBtn().click(ss.thisFix(ss.mkdel(this,this.kadecotClick)));this.get_propertyList().change(ss.thisFix(ss.mkdel(this,this.propertyChange)));this.get_setInitParamsBtn().click(ss.thisFix(ss.mkdel(this,this.$setInitParams)));},$initClassGroups:function(data){var classGroups=$control_UI.toJSClassGroupInfoList(data);$CtrlUI.$m_Classes=[];$CtrlUI.$m_ClassGroups=Array.prototype.slice.call(classGroups);this.$getClassInfoHandler($ctrlui_T_ECN_EOJ.x1_PROFILE,$ctrlui_T_ECN_EOJ.x2_NODE_PROFILE,ss.mkdel(this,this.$getClassInfoCallback));},$getClassInfoCallback:function(di){$CtrlUI.$m_ProfileClassInfo=di;},$getClassInfoHandler:function(x1,x2,cb){var eclass=Enumerable.from($CtrlUI.$m_Classes).firstOrDefault(function(p){return p.classGroup.classGroupCode===x1&&p.classCode===x2;},ss.getDefaultValue($ctrlui_JsonClassInfo));if(ss.isValue(eclass)){if(ss.isNullOrUndefined(eclass.properties)){this.$getPropertyList(eclass,cb);}
+else{cb(eclass);}
+return;}
+var classGroup=Enumerable.from($CtrlUI.$m_ClassGroups).firstOrDefault(function(p1){return p1.classGroupCode===x1;},ss.getDefaultValue($ctrlui_JsonClassGroupInfo));var classListUrl='devices/ClassList'+ss.formatNumber(x1,'X2').toUpperCase()+'.json';$.ajax(classListUrl).success(ss.mkdel(this,function(data){this.$getClassInfoSuccess(data,x1,x2,classGroup,cb);})).error(ss.mkdel(this,function(request,textStatus,error){this.$getClassInfoError(request,textStatus,error,eclass,cb,classListUrl);}));},$getClassInfoSuccess:function(data,x1,x2,classGroup,cb){var classes=$control_UI.toJSClassInfoList(data,classGroup);ss.arrayAddRange($CtrlUI.$m_Classes,classes);var eclass=Enumerable.from($CtrlUI.$m_Classes).firstOrDefault(function(p){return p.classGroup.classGroupCode===x1&&p.classCode===x2;},ss.getDefaultValue($ctrlui_JsonClassInfo));this.$getPropertyList(eclass,cb);},$getPropertyList:function(eclass,cb){var PropertyListUrl='devices/PropertyList'+ss.formatNumber(eclass.classGroup.classGroupCode,'X2').toUpperCase()+ss.formatNumber(eclass.classCode,'X2').toUpperCase()+'.json';$.ajax(PropertyListUrl).success(ss.mkdel(this,function(data1){this.$getPropertyListSuccess(data1,eclass);})).error(ss.mkdel(this,function(request,textStatus,error){this.$propertyListAjaxError(request,textStatus,error,eclass,cb,PropertyListUrl);})).complete(ss.mkdel(this,function(request1,textStatus1){this.$getPropertyListComplete(request1,textStatus1,eclass,cb);}));},$getPropertyListSuccess:function(data,eclass){var properties=$control_UI.toJSPropertyInfoList(data);eclass.properties=Array.prototype.slice.call(properties);},$getPropertyListComplete:function(request,textStatus,eclass,cb){if(ss.equalsT(request.statusText,'OK')){cb(eclass);}},$getClassInfoError:function(request,textStatus,error,eclass,cb,url){$CtrlUI.$ajaxError(request,textStatus,error,url);cb(eclass);},$propertyListAjaxError:function(request,textStatus,error,eclass,cb,url){var PropertyListBaseUrl='devices/PropertyListBase.json';$.ajax(PropertyListBaseUrl).success(ss.mkdel(this,function(data1){this.$getPropertyListSuccess(data1,eclass);})).error(function(request1,textStatus1,error1){$CtrlUI.$ajaxError(request1,textStatus1,error1,url);}).complete(ss.mkdel(this,function(request11,textStatus11){this.$getPropertyListComplete(request11,textStatus11,eclass,cb);}));},$sendHello:function(){this.$m_WampClient.sendHello('default','{"roles":{"caller":{},"subscriber":{}}}',ss.mkdel(this,this.$onWelcom));},$onWelcom:function(args){this.$m_WampClient.sendSubscribe('{}','com.sonycsl.kadecot.echonetlite.topic.GeneralLighting.OperationStatus',ss.mkdel(this,this.$onSubscribed),ss.mkdel(this,this.$onSubscribed));},$onSubscribed:function(args){},$onDevListed:function(args){var cmd=ss.unbox(ss.cast(ss.cast(args,Array)[0],ss.Int32));if(cmd!==50){$(document).trigger($control_UIEventNames.searchError);return;}
+var alldevs=$control_UI.getAllDevices(args);this.$getDeviceInfo(alldevs,0,[]);},$getDeviceInfo:function(alldevs,pos,m_NodeList){var device=alldevs[pos];var callback=ss.mkdel(this,function(args){var cmd=ss.unbox(ss.cast(ss.cast(args,Array)[0],ss.Int32));if(cmd!==50){$(document).trigger($control_UIEventNames.searchError);return;}
+var dev=new $ctrlui_WebApiObjectInfo(device.deviceId,ss.cast(args,Array)[4],false);this.$getClassInfoHandler(dev.x1,dev.x2,ss.mkdel(this,function(dc){var di=$control_UI.getDeviceInfo(dc,dev,device);var node=Enumerable.from(m_NodeList).firstOrDefault(function(ni){return ss.referenceEquals(ss.cast(ni.get_data(),String),device.ip_addr);},ss.getDefaultValue($ctrlui_DeviceController$NodeInfo));if(ss.isNullOrUndefined(node)){var profile=new $ctrlui_DeviceController$DeviceInfo.$ctor2($CtrlUI.$m_ProfileClassInfo,true,$ctrlui_T_ECN_EOJ.x1_PROFILE,$ctrlui_T_ECN_EOJ.x2_NODE_PROFILE,1,dev.enodid);node=new $ctrlui_DeviceController$NodeInfo(dev.enodid,profile);node.set_data(device.ip_addr);m_NodeList.push(node);}
+node.get_devices().push(di);pos++;if(pos<alldevs.length){this.$getDeviceInfo(alldevs,pos,m_NodeList);}
+else{$(document).trigger($control_UIEventNames.searchEnd);this.$m_DeviceController=new $ctrlui_DeviceController(m_NodeList);this.$updateUI();}}));});if(device.protocol==='arduino'){var arg={x1:14,x2:240,x3:1,enodid:1,properties:[{epc:0,flag:'RULE_SET,RULE_GET',size:1},{epc:1,flag:'RULE_SET,RULE_GET',size:1},{epc:2,flag:'RULE_SET,RULE_GET',size:1},{epc:3,flag:'RULE_SET,RULE_GET',size:1},{epc:4,flag:'RULE_SET,RULE_GET',size:1},{epc:5,flag:'RULE_SET,RULE_GET',size:1},{epc:6,flag:'RULE_SET,RULE_GET',size:1},{epc:7,flag:'RULE_SET,RULE_GET',size:1},{epc:8,flag:'RULE_SET,RULE_GET',size:1},{epc:9,flag:'RULE_SET,RULE_GET',size:1},{epc:10,flag:'RULE_SET,RULE_GET',size:1},{epc:11,flag:'RULE_SET,RULE_GET',size:1},{epc:12,flag:'RULE_SET,RULE_GET',size:1},{epc:13,flag:'RULE_SET,RULE_GET',size:1},{epc:14,flag:'RULE_GET',size:1},{epc:15,flag:'RULE_GET',size:1},{epc:16,flag:'RULE_GET',size:1},{epc:17,flag:'RULE_GET',size:1},{epc:18,flag:'RULE_GET',size:1},{epc:19,flag:'RULE_GET',size:1}]};callback([50,0,{deviceId:1},[],arg]);}
+else{this.$m_WampClient.sendCall('{"deviceId":'+device.deviceId+'}','jp.toppers.ecnl.procedure.getDeviceInfo',null,null,callback);}},$updateUI:function(){if(ss.isNullOrUndefined(this.get_nodeList())){return;}
+this.get_nodeList().html('');this.get_nodeList().append(this.$m_DeviceController.getUINodeList(ss.mkdel(this,this.$listitem_Click)));this.get_nodeList().collapsibleset({}).collapsibleset('refresh');$("ul[data-role='listview']",this.get_nodeList()).listview().listview('refresh');},$onResponse:function(args){var switchData=ss.unbox(ss.cast(ss.cast(args,Array)[0],ss.Int32));if(switchData!==50){return;}
+var doc=ss.cast(args,Array)[4];if(ss.isValue(this.$m_DeviceController)){this.$m_DeviceController.recvResponse(new $ctrlui_WebApiEchonetMessage(doc));if(ss.isNullOrUndefined(this.get_propertyList())){return;}
+this.get_$m_CurrentNode().getData();}
+$control_UI.disable(this.get_setPropertyBtn(),true);},$onSetResponse:function(args){var doc=ss.cast(args,Array)[4];if(ss.isValue(this.$m_DeviceController)){if(ss.isNullOrUndefined(this.get_propertyList())){return;}
+this.$m_DeviceController.recvResponse(new $ctrlui_WebApiEchonetMessage(doc));}
+$control_UI.disable(this.get_setPropertyBtn(),true);},$listitem_Click:function(elem,ev,di){if(ss.isNullOrUndefined(this.get_propertyList())){return;}
+this.set_$m_CurrentNode(di);},$wampClientConnected:function(){var flag=this.get_connectionSwt().prop('checked');if(!flag){this.get_connectionSwt().prop('checked',true).flipswitch('refresh');}
+$control_UI.toggleClass(this.get_searchBtn(),'ui-icon-alert','ui-icon-refresh');this.$sendHello();},$wampClientDisconnected:function(){$control_UI.toggleClass(this.get_searchBtn(),'ui-icon-refresh','ui-icon-alert');},connect:function(ele,eve){var connect=$(ele).prop('checked');if(connect&&!this.$m_WampClient.isConnecting()){this.$m_WampClient.connect('ws://'+window.location.host+'/webapi.ashx');}
+else if(!connect&&this.$m_WampClient.isConnecting()){this.$m_WampClient.disconnect();}},disconnect:function(args){this.$m_WampClient.disconnect();},search:function(ele,ev){$(document).trigger($control_UIEventNames.searchStart);var data=this.$m_WampClient.sendCall('{}','com.sonycsl.kadecot.provider.procedure.getDeviceList',null,null,ss.mkdel(this,this.$onDevListed));if(ss.isNullOrUndefined(data)){$(document).trigger($control_UIEventNames.searchError);return;}
+this.$timerId=window.setInterval(function(){$(document).trigger($control_UIEventNames.searchError);},20000);},searchStart:function(ev){$.mobile.loading('show',new $LoadingOption.$ctor1('æ©å¨æ¤ç´¢ä¸­...',true));$control_UI.disable(this.get_searchBtn(),true);},searchEnd:function(ev){if(this.$timerId!==0){window.clearInterval(this.$timerId);this.$timerId=0;}
+$.mobile.loading('hide');$control_UI.disable(this.get_searchBtn(),false);$control_UI.toggleClass(this.get_nodeList().find('li .ui-icon-alert'),'ui-icon-alert','ui-icon-carat-r');},searchError:function(ev){if(this.$timerId!==0){window.clearInterval(this.$timerId);this.$timerId=0;}
+$.mobile.loading('hide');$('#bt_search').removeAttr('disabled');window.alert('æ©å¨ãè¦ã¤ããã¾ããã§ãã');$control_UI.toggleClass(this.get_nodeList().find('li .ui-icon-carat-r'),'ui-icon-carat-r','ui-icon-alert');},propertyWriteStart:function(ev){$.mobile.loading('show');},propertyWriteEnd:function(ev){$.mobile.loading('hide');},setProperty:function(ele,eve){var esv=new $ctrlui_WebApiSet();var ctrls=this.get_propertyList();esv.deojid=this.get_$m_CurrentNode().get_eObjId();var enable=false;var $t1=this.get_$m_CurrentNode().get_properties();for(var $t2=0;$t2<$t1.length;$t2++){var dpi=$t1[$t2];if(ss.isNullOrUndefined(dpi.get_inputData())){continue;}
+else if(dpi.get_isWaitRes()){esv.addEdt(dpi.get_propertyCode(),dpi.get_inputData());enable=true;}}
+if(!enable){return;}
+var call=this.$m_WampClient.sendCall(esv.getOption(),'jp.toppers.ecnl.procedure.set','[]',esv.getArguments(),ss.mkdel(this,this.$onSetResponse));if(ss.isNullOrUndefined(call)){window.alert('æ©å¨ãæ¥ç¶ããã¦ãã¾ãã');}},getProperty:function(eve){var protocol=ss.cast(this.get_$m_CurrentNode().get_data(),$ctrlui_WampApiKadecotDevice).protocol;if(protocol==='arduino'){return;}
+var esv=new $ctrlui_WebApiGet();esv.deojid=this.get_$m_CurrentNode().get_eObjId();var enable=false;var $t1=this.get_$m_CurrentNode().get_properties();for(var $t2=0;$t2<$t1.length;$t2++){var dpi=$t1[$t2];if(ss.isNullOrUndefined(dpi)){continue;}
+dpi.set_isWaitRes(false);var target=(dpi.get_flag()&2)!==0;if(!target){dpi.set_errorText('èª­ã¿è¾¼ã¿ç¦æ­¢ã§ã');continue;}
+dpi.set_isWaitRes(true);esv.addEpc(dpi.get_propertyCode());enable=true;}
+if(!enable){return;}
+var call=this.$m_WampClient.sendCall(esv.getOption(),'jp.toppers.ecnl.procedure.get','[]',esv.getArguments(),ss.mkdel(this,this.$onResponse));if(ss.isNullOrUndefined(call)){$control_UI.toggleClass($control_UI.getDeviceBtn(this.get_$m_CurrentNode()),'ui-icon-carat-r','ui-icon-alert');}
+else{$control_UI.toggleClass($control_UI.getDeviceBtn(this.get_$m_CurrentNode()),'ui-icon-alert','ui-icon-carat-r');}},setGetProperty:function(ele,ev){var esv=new $ctrlui_WebApiSet();esv.deojid=this.get_$m_CurrentNode().get_eObjId();var enable=false;var $t1=this.get_$m_CurrentNode().get_properties();for(var $t2=0;$t2<$t1.length;$t2++){var dpi=$t1[$t2];if(ss.isNullOrUndefined(dpi.get_inputData())){continue;}
+else if(dpi.get_isWaitRes()){esv.addEdt(dpi.get_propertyCode(),dpi.get_inputData());enable=true;}}
+if(!enable){return;}
+var call=this.$m_WampClient.sendCall(esv.getOption(),'jp.toppers.ecnl.procedure.setget','[]',esv.getArguments(),ss.mkdel(this,this.$onResponse));if(ss.isNullOrUndefined(call)){window.alert('æ©å¨ãæ¥ç¶ããã¦ãã¾ãã');}},propertyChange:function(ele,ev){var flag=this.get_$m_CurrentNode().isWait();$control_UI.disable(this.get_setPropertyBtn(),!flag);$control_UI.disable(this.get_setGetPropertyBtn(),!flag);},kadecotClick:function(ele,ev){window.open('http://app.kadecot.net/index.html?kip='+window.location.hostname,'Kadecot');},kadecotSet:function(dpi,data){var propName;if(dpi.get_propertyCode()===128){propName='OperationStatus';}
+else{propName='0x'+dpi.get_propertyCode().toString(16);}
+var di=this.get_$m_CurrentNode();if(ss.isNullOrUndefined(di)){return;}
+this.$dpi=dpi;var msg=new $ctrlui_WampApiKadecotSet(di.get_eObjId(),propName,data);this.$m_WampClient.sendCall(msg.$getOption(),'com.sonycsl.kadecot.echonetlite.procedure.set','[]',msg.$getArguments(),ss.mkdel(this,this.$kadecotSet));},$kadecotSet:function(args){var di=this.get_$m_CurrentNode();var doc=ss.cast(args,Array)[4];var res=new $ctrlui_WampApiKadecotRes(doc);if(ss.isValue(this.$m_DeviceController)){this.$m_DeviceController.recvResponse$1(di,113,this.$dpi.get_propertyCode(),res.propertyValue);}},kadecotGet$1:function(dpi){var propName;if(dpi.get_propertyCode()===128){propName='OperationStatus';}
+else{propName='0x'+dpi.get_propertyCode().toString(16);}
+var di=this.get_$m_CurrentNode();if(ss.isNullOrUndefined(di)){return;}
+var msg=new $ctrlui_WampApiKadecotGet(di.get_eObjId(),propName);this.$dpi=dpi;this.$m_WampClient.sendCall(msg.$getOption(),'com.sonycsl.kadecot.echonetlite.procedure.get','[]',msg.$getArguments(),ss.mkdel(this,this.kadecotGet));},kadecotGet:function(args){var di=this.get_$m_CurrentNode();var doc=ss.cast(args,Array)[4];var res=new $ctrlui_WampApiKadecotRes(doc);if(ss.isValue(this.$m_DeviceController)){this.$m_DeviceController.recvResponse$1(di,114,this.$dpi.get_propertyCode(),res.propertyValue);}},$currentNodeChange:function(elem,ev){this.$buttonDisabled(this.get_$m_CurrentNode());if(ss.isNullOrUndefined(this.get_$m_CurrentNode())){return;}
+this.$propertyCreate(this.get_$m_CurrentNode());this.getProperty(ev);return;},$buttonDisabled:function(di){if(ss.isNullOrUndefined(di)){$control_UI.disable(this.get_setGetPropertyBtn(),true);$control_UI.disable(this.get_getPropertyBtn(),true);$control_UI.disable(this.get_setPropertyBtn(),true);return;}
+var ctrls=this.get_propertyList();$control_UI.disable(this.get_setGetPropertyBtn(),ss.isNullOrUndefined(ctrls));$control_UI.disable(this.get_getPropertyBtn(),ss.isNullOrUndefined(ctrls));$control_UI.disable(this.get_setPropertyBtn(),ss.isNullOrUndefined(ctrls));},$propertyCreate:function(di){if(ss.isNullOrUndefined(di)){return;}
+$(document).trigger($control_UIEventNames.propertyWriteStart);di.setUIDevice(this);this.get_propertyList().html('');this.get_propertyList().append(di.getPropertys());this.get_propertyList().listview().listview('refresh');this.get_propertyList().listview().trigger('create');$(document).trigger($control_UIEventNames.propertyWriteEnd);},$setInitParams:function(elem,e){var macaddrfrm=new RegExp('([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2}):([0-9A-Fa-f]{2})');var m=macaddrfrm.exec(this.get_macAddrTxt().val());if(ss.isNullOrUndefined(m)){return;}
+var ma1=parseInt(m[1],16);var ma2=parseInt(m[2],16);var ma3=parseInt(m[3],16);var ma4=parseInt(m[4],16);var ma5=parseInt(m[5],16);var ma6=parseInt(m[6],16);this.$m_WampClient.sendCall('{}','jp.toppers.ecnl.procedure.setInitParams','[]','{"macAddr":['+ma1+','+ma2+','+ma3+','+ma4+','+ma5+','+ma6+']}',ss.mkdel(this,this.setInitParamsRes));},setInitParamsRes:function(args){var cmd=ss.unbox(ss.cast(ss.cast(args,Array)[0],ss.Int32));if(cmd!==50){$('#popup_dialog_caption').text('ã¨ã©ã¼');$('#popup_dialog_title').text('ã¨ã©ã¼ãçºçãã¾ãã');$('#popup_dialog_text').text('åæãã¼ã¿ã®æ¸ãè¾¼ã¿ã«å¤±æãã¾ããã');$('#popup_dialog').popup('open',{transition:'slidedown'});return;}
+$('#popup_dialog_caption').text('åæãã¼ã¿');$('#popup_dialog_title').text('åæãã¼ã¿ãæ¸ãè¾¼ã¿ã¾ãã');$('#popup_dialog_text').text('åæãã¼ã¿ã®æ¸ãè¾¼ã¿ã«æåãã¾ããã');$('#popup_dialog').popup('open',{transition:'slidedown'});},$getInitParams:function(elem,e){this.$m_WampClient.sendCall('{}','jp.toppers.ecnl.procedure.getInitParams','[]','{}',ss.mkdel(this,this.getInitParamsRes));},getInitParamsRes:function(args){var cmd=ss.unbox(ss.cast(ss.cast(args,Array)[0],ss.Int32));if(cmd!==50){$('#popup_dialog_caption').text('ã¨ã©ã¼');$('#popup_dialog_title').text('ã¨ã©ã¼ãçºçãã¾ãã');$('#popup_dialog_text').text('åæãã¼ã¿ã®èª­ã¿è¾¼ã¿ã«å¤±æãã¾ããã');$('#popup_dialog').popup('open',{transition:'slidedown'});return;}
+var macaddr=ss.cast(ss.cast(args,Array)[4].macAddr,Array);this.get_macAddrTxt().val(ss.formatString('{0:X02}:{1:X02}:{2:X02}:{3:X02}:{4:X02}:{5:X02}',macaddr[0],macaddr[1],macaddr[2],macaddr[3],macaddr[4],macaddr[5]));},get_setPropertyBtn:function(){return $('#bt_set_property',$CtrlUI.$page);},get_getPropertyBtn:function(){return $('#bt_get_property',$CtrlUI.$page);},get_setGetPropertyBtn:function(){return $('#bt_set_get_property',$CtrlUI.$page);},get_kadecotBtn:function(){return $('#bt_kadecot',$CtrlUI.$page);},get_connectionSwt:function(){return $('#fs_connection',$CtrlUI.$page);},get_propertyList:function(){return $('#lv_property_list',$CtrlUI.$page);},get_searchBtn:function(){return $('#bt_search',$CtrlUI.$page);},get_nodeList:function(){return $('#node_list',$CtrlUI.$page);},get_propertyGroupBox:function(){return $('#lv_property_list',$CtrlUI.$page).find('li');},get_setInitParamsBtn:function(){return $('#bt_set_init_params',$CtrlUI.$page);},get_getInitParamsBtn:function(){return $('#bt_get_init_params',$CtrlUI.$page);},get_macAddrTxt:function(){return $('#txt_mac_addr',$CtrlUI.$page);},pinMode_Change:function(fieldset,pin){var value=fieldset.checkdValue();var dic=ss.mkdict(['pin',pin,'mode',value]);this.$m_WampClient.sendCall('{"deviceId":'+1+'}','com.sonycsl.kadecot.arduino.pinMode','[]',JSON.stringify(dic),ss.mkdel(this,this.pinMode));},digital_Change:function(button,flipswitch,pin){var msg=new $ctrlui_WampApiKadecotSet(1,'2',new Array(2));var dic=ss.mkdict(['pin',pin,'value',flipswitch.get_value()]);this.$m_WampClient.sendCall('{"deviceId":'+1+'}','com.sonycsl.kadecot.arduino.digitalWrite','[]',JSON.stringify(dic),ss.mkdel(this,this.digitalWrite));},analogWrite_Change:function(range,pin){var msg=new $ctrlui_WampApiKadecotSet(1,'2',new Array(2));var dic=ss.mkdict(['pin',pin,'value',range.get_value$1()]);this.$m_WampClient.sendCall('{"deviceId":'+1+'}','com.sonycsl.kadecot.arduino.analogWrite','[]',JSON.stringify(dic),ss.mkdel(this,this.pinMode));},analogRead:function(range,pin){var dic=ss.mkdict(['pin',pin]);this.$m_WampClient.sendCall('{"deviceId":'+1+'}','com.sonycsl.kadecot.arduino.analogRead','[]',JSON.stringify(dic),ss.mkdel(this,function(args){this.digitalRead$1(args,range);}));},pinMode:function(args){var switchData=ss.unbox(ss.cast(ss.cast(args,Array)[0],ss.Int32));if(switchData!==50){return;}
+var doc=ss.cast(args,Array)[4];if(ss.isValue(this.$m_DeviceController)){if(ss.isNullOrUndefined(this.get_propertyList())){return;}}},digitalWrite:function(args){var switchData=ss.unbox(ss.cast(ss.cast(args,Array)[0],ss.Int32));if(switchData!==50){return;}
+var doc=ss.cast(args,Array)[4];if(ss.isValue(this.$m_DeviceController)){if(ss.isNullOrUndefined(this.get_propertyList())){return;}}},digitalRead:function(button,flip,i){var dic=ss.mkdict(['pin',i]);var str=this.$m_WampClient.sendCall('{"deviceId":'+1+'}','com.sonycsl.kadecot.arduino.digitalRead','[]',JSON.stringify(dic),ss.mkdel(this,function(arg){this.digitalRead$1(arg,flip);}));if(ss.isNullOrUndefined(str)){button.toggleClass$1('ui-icon-refresh','ui-icon-alert');}
+else{button.toggleClass$1('ui-icon-alert','ui-icon-refresh');}},digitalRead$1:function(args,uiobject){var switchData=ss.unbox(ss.cast(ss.cast(args,Array)[0],ss.Int32));if(switchData!==50){return;}
+var doc=ss.cast(args,Array)[4];if(ss.isValue(this.$m_DeviceController)){var msg=new $ctrlui_WebApiGrsaguraMessage(doc);if(ss.referenceEquals(ss.getInstanceType(uiobject),$control_UIFlipSwitch)){var flip=ss.cast(uiobject,$control_UIFlipSwitch);flip.set_value(msg.value);}
+else if(ss.referenceEquals(ss.getInstanceType(uiobject),$control_UIRangeInput)){var range=ss.cast(uiobject,$control_UIRangeInput);range.set_value$1(parseInt(msg.value));range.object.slider('refresh');}}}});ss.initClass($ElementExtensions,$asm,{});ss.initClass($jQueryMobile,$asm,{});ss.initClass($LoadingOption,$asm,{});$LoadingOption.$ctor1.prototype=$LoadingOption.prototype;ss.initEnum($control_KeyPress,$asm,{delete$1:0,backSpace:8,minus:45,dot:46,slash:47,_0:48,_1:49,_2:50,_3:51,_4:52,_5:53,_6:54,_7:55,_8:56,_9:57,a:65,b:66,c:67,d:68,e:69,f:70,a$1:97,b$1:98,c$1:99,d$1:100,e$1:101,f$1:102});ss.initClass($control_UI,$asm,{});ss.initClass($control_UIObject,$asm,{get_element:function(){return this.object.get(0);},change:function(){this.object.change();return this;},change$1:function(eventHandler){this.object.change(eventHandler);},keypress:function(eventHandler){this.object.keypress(eventHandler);},toggle:function(showOrHide){return this.object.toggle(showOrHide);},attribute$1:function(attributeName,value){this.object.attr(attributeName,value);},removeAttr:function(attributeName){this.object.removeAttr(attributeName);},getAttribute:function(attributeName){return this.object.attr(attributeName);},find:function(selector){return this.object.find(selector);},removeClass:function(className){this.object.removeClass(className);return this;},toggleClass:function(className,add){this.object.toggleClass(className,add);return this;},toggleClass$1:function(deleteClass,addClass){$control_UI.toggleClass(this.object,deleteClass,addClass);return this;},one:function(eventName,eventHandler){this.object.one(eventName,eventHandler);return this;},attribute:function(nameValueMap){this.object.attr(nameValueMap);return this;},click$1:function(eventHandler){this.object.click(eventHandler);return this;},click:function(eventHandler){this.object.click(eventHandler);return this;},get_text:function(){return this.object.text();},set_text:function(value){this.object.text(value);},get_id:function(){return this.object.attr('id');},set_id:function(value){this.object.attr('id',value);},get_for:function(){return this.object.attr('for');},set_for:function(value){this.object.attr('for',value);},get_name:function(){return this.object.attr('name');},set_name:function(value){this.object.attr('name',value);},get_dataRole:function(){return this.object.attr('data-role');},set_dataRole:function(value){this.object.attr('data-role',value);},get_dataType:function(){return this.object.attr('data-type');},set_dataType:function(value){this.object.attr('data-type',value);},get_title:function(){return this.object.attr('title');},set_title:function(value){this.object.attr('title',value);},get_value:function(){if(this.object.is('fieldset')){return this.object.find("input[type='radio']:checked").val();}
+return this.object.val();},set_value:function(value){if(this.object.is('fieldset')){this.object.find('input[type="radio"]').each(function(j,elem){if(ss.referenceEquals($(elem).val(),value)){$(elem).prop('checked',true);}
+else{$(elem).prop('checked',false);}});this.object.find('input[type="radio"]').checkboxradio().checkboxradio('refresh');}
+else{this.object.val(value);if(this.get_dataRole()==='flipswitch'){this.object.val(value).flipswitch('refresh');}}},get_maxlength:function(){return parseInt(this.getAttribute('maxlength'));},set_maxlength:function(value){this.attribute$1('maxlength',value.toString());},get_min:function(){return parseInt(this.object.attr('min'));},set_min:function(value){this.object.attr('min',value.toString());},get_max:function(){return parseInt(this.object.attr('max'));},set_max:function(value){this.object.attr('max',value.toString());},get_tabIndex:function(){return parseInt(this.object.attr('tabindex'));},set_tabIndex:function(value){this.object.attr('tabindex',value.toString());},get_type:function(){return this.object.attr('type');},set_type:function(value){this.object.attr('type',value);},append:function(uiobject){this.object.append(uiobject.object);},append$1:function(object){return this.object.append(object);},disable:function(flag){if(flag){this.attribute$1('disabled','disabled');}
+else{this.removeAttr('disabled');}
+return this;},children:function(){return this.object.children();},addClass:function(className){this.object.addClass(className);return this;},pointerEvents:function(flag){if(!flag){this.object.css('pointer-events','none');}
+return this;},hide:function(){this.object.hide();return this;},show:function(){this.object.show();return this;},get_class:function(){return this.$ecnlclass;},set_class:function(value){this.$ecnlclass=value;this.addClass(this.$ecnlClassString(value));},$ecnlClassString:function(class1){if(class1===0){return'ecnl_pink';}
+else if(class1===1){return'ecnl_violet';}
+else if(class1===2){return'ecnl_light_green';}
+else if(class1===3){return'ecnl_light_blue';}
+else{return'';}}});$control_UIObject.$ctor2.prototype=$control_UIObject.$ctor3.prototype=$control_UIObject.$ctor1.prototype=$control_UIObject.prototype;ss.initClass($control_UIAnchor,$asm,{get_href:function(){return this.getAttribute('href');},set_href:function(value){this.attribute$1('href',value);},get_target:function(){return this.getAttribute('target');},set_target:function(value){this.attribute$1('target',value);}},$control_UIObject);$control_UIAnchor.$ctor1.prototype=$control_UIAnchor.$ctor2.prototype=$control_UIAnchor.prototype;ss.initClass($control_UIButton,$asm,{get_button:function(){return this.object.hasClass('ui-btn');},set_button:function(value){this.object.toggleClass('ui-btn',value);},get_noText:function(){return this.object.hasClass('ui-btn-icon-notext');},set_noText:function(value){this.object.toggleClass('ui-btn-icon-notext',value);},get_cornerAll:function(){return this.object.hasClass('ui-corner-all');},set_cornerAll:function(value){this.object.toggleClass('ui-corner-all',value);},get_buttonIcon:function(){return this.$getIcon();},set_buttonIcon:function(value){this.object.toggleClass(this.$getClass(value),true);},get_href:function(){return this.object.attr('href');},set_href:function(value){this.object.attr('href',value);},$getClass:function(icon){var text='';if(icon===0){text='delete';}
+else if(icon===1){text='refresh';}
+else if(icon===2){text='back';}
+return'ui-icon-'+text;},$getIcon:function(){if(this.object.hasClass('ui-icon-delete')){return 0;}
+else if(this.object.hasClass('ui-icon-refresh')){return 1;}
+else if(this.object.hasClass('ui-icon-back')){return 2;}
+return 0;}},$control_UIObject);ss.initClass($control_UIBackButton,$asm,{},$control_UIButton);ss.initEnum($control_UIButton$Icon,$asm,{delete$1:0,refresh:1,back:2});ss.initClass($control_UITextInput,$asm,{get_dataClearBtn:function(){return/^\s*true\s*$/i.test(this.getAttribute('data-clear-btn'));},set_dataClearBtn:function(value){if(value){this.attribute$1('data-clear-btn',value.toString());}
+else{this.removeAttr('data-clear-btn');};},get_placeholder:function(){return this.getAttribute('placeholder');},set_placeholder:function(value){this.attribute$1('placeholder',value);},get_dataOptions:function(){return JSON.parse(this.getAttribute('data-options'));},set_dataOptions:function(value){this.attribute$1('data-options',JSON.stringify(value));},keyup:function(eventHandler){this.object.keyup(eventHandler);return this.object;},on:function(eventName,eventHandler){this.object.on(eventName,eventHandler);return this.object;},get_readOnly:function(){return this.getAttribute('readonly')==='readonly';},set_readOnly:function(value){if(value){this.attribute$1('readonly','readonly');}
+else{this.removeAttr('readonly');}}},$control_UIObject);$control_UITextInput.$ctor1.prototype=$control_UITextInput.prototype;ss.initClass($control_UICalBox,$asm,{get_dY:function(){return this.$getCal(0);},get_dM:function(){return this.$getCal(1);},get_dD:function(){return this.$getCal(2);},get_xY:function(){return ss.formatNumber(this.get_dY(),'X4');},get_xM:function(){return ss.formatNumber(this.get_dM(),'X2');},get_xD:function(){return ss.formatNumber(this.get_dD(),'X2');},get_YYYYMMDD:function(){return this.get_xY()+this.get_xM()+this.get_xD();},get_yyyymmdd:function(){return ss.formatNumber(this.get_dY(),'D4')+'/'+ss.formatNumber(this.get_dM(),'D2')+'/'+ss.formatNumber(this.get_dD(),'D2');},$dateBoxCreate:function(ele,ev){$control_UI.toggleClass($(ele).parents().find('.ui-icon-grid'),'ui-icon-grid','ui-icon-calendar');},$getCal:function(i){var x=0;if(this.get_value().indexOf('/')!==-1){var value=this.get_value().split('/');x=parseInt(value[i]);}
+return x;}},$control_UITextInput);ss.initClass($control_UICalBox$UIInputDate,$asm,{},$control_UIObject);ss.initClass($control_UICollapsibleset,$asm,{get_dataInset:function(){return/^\s*true\s*$/i.test(this.object.attr('data-inset'));},set_dataInset:function(value){this.object.attr('data-inset',value.toString());}},$control_UIObject);$control_UICollapsibleset.$ctor2.prototype=$control_UICollapsibleset.$ctor1.prototype=$control_UICollapsibleset.prototype;ss.initClass($control_UIDeviceController,$asm,{getUINodeList:function(listitem_click){var nodelist=new $control_UINodeList(this.deviceController.get_nodeList(),listitem_click);return nodelist.getNodeList();}});ss.initClass($control_UIDeviceController$UIDeviceInfo,$asm,{uiDeviceSet:function(di,Page){this.di=di;this.page=Page;if(ss.cast(di.get_data(),$ctrlui_WampApiKadecotDevice).protocol==='arduino'){this.$elements=di.setPin(Page);}
+else{this.$elements=di.setEchonetlite(Page);}},getPropertys:function(){return $(this.$elements);},getData:function(){var $t1=this.di.get_properties();for(var $t2=0;$t2<$t1.length;$t2++){var dpi=$t1[$t2];if(ss.isValue(dpi.get_data())){dpi.getValue(dpi.get_data());}}},isWait:function(){var flag=false;if(ss.isValue(this.di)&&ss.isValue(this.di.get_properties())){var $t1=this.di.get_properties();for(var $t2=0;$t2<$t1.length;$t2++){var dpi=$t1[$t2];if(ss.isValue(dpi)&&dpi.get_isWaitRes()){flag=true;}}}
+return flag;},setEchonetlite:function(ctrlui){var ele=new Array(this.di.get_properties().length);var i=0;var $t1=this.di.get_properties();for(var $t2=0;$t2<$t1.length;$t2++){var dpi=$t1[$t2];dpi.setProperty(dpi);dpi.setName(this.di);dpi.setKadecotGet(ss.mkdel(this.page,this.page.kadecotGet$1));dpi.setKadecotSet(ss.mkdel(this.page,this.page.kadecotSet));ele[i++]=dpi.getElement();}
+return ele;},setPin:function(ctrlui){this.page=ctrlui;var ele=new Array(20);var element;var j=0;for(var i=0;i<=19;i++){element=this.setPin$1(i,this.page);ele[j++]=element[0];ele[j++]=element[1];}
+return ele;},setPin$1:function(i,Page){var uiPin=new $control_UIPin.$ctor1(i);uiPin.setPinModeChange(ss.mkdel(Page,Page.pinMode_Change));uiPin.setDigitalChange(ss.mkdel(Page,Page.digital_Change));uiPin.setReadButtonClick(ss.mkdel(Page,Page.digitalRead));uiPin.setAnalogWriteChange(ss.mkdel(Page,Page.analogWrite_Change));uiPin.setAnalogReadChange(ss.mkdel(Page,Page.analogRead));return uiPin.getElements();}});ss.initClass($control_UIDeviceController$UIDevicePropertyInfo,$asm,{getElement:function(){return this.$grpbox.object.get(0);},setName:function(di){var nameid=di.getObjectID()+this.$dpi.getPropertyCode('X2');this.$grpbox.setName(nameid);},get_errorText:function(){return this.$grpbox.get_errorText();},set_errorText:function(value){this.$grpbox.set_errorText(value);},getMaxLength:function(){var len=2*(ss.isNullOrUndefined(this.$dpi.get_propertyInfo())?this.$dpi.get_size():(((this.$dpi.get_propertyInfo().arrayCount===0)?1:this.$dpi.get_propertyInfo().arrayCount)*this.$dpi.get_propertyInfo().size));return len;},setProperty:function(dpi){this.$dpi=dpi;this.$grpbox=new $control_UIGrpBox.$ctor1(dpi);},setKadecotGet:function(KadecotGet){var opeSt=null;if(this.$dpi.get_propertyCode()===151){}
+else if(this.$dpi.get_propertyCode()===152){}
+else if(this.$dpi.get_inputTypes().length===0){}
+else if(this.$dpi.get_propertyCode()===128&&this.$dpi.get_inputTypes().length===1&&this.$dpi.get_inputTypes()[0].mode===1){}
+else{var $t1=this.$dpi.get_inputTypes();for(var $t2=0;$t2<$t1.length;$t2++){var pii=$t1[$t2];if(this.$dpi.get_propertyCode()===128){opeSt=this.$dpi;}}
+if(ss.isValue(opeSt)){KadecotGet(opeSt);}}},setKadecotSet:function(KadecotSet){this.$grpbox.kadecotSet=KadecotSet;},getValue:function(data){this.$grpbox.setGetValue(data);}});ss.initClass($control_UIDiv,$asm,{},$control_UIObject);ss.initClass($control_UIEventHandler,$asm,{});ss.initClass($control_UIEventNames,$asm,{});ss.initClass($control_UIFieldContain,$asm,{},$control_UIObject);$control_UIFieldContain.$ctor1.prototype=$control_UIFieldContain.$ctor2.prototype=$control_UIFieldContain.prototype;ss.initClass($control_UIFieldSet,$asm,{checkdValue:function(){return $("input[type='radio']:checked",this.object).val();},append$2:function(radio){if(ss.isNullOrUndefined(this.radioList)){this.radioList=[];}
+this.radioList.push(new $control_UIFieldSet$RadioInput(radio.label,radio.radio));var last=Enumerable.from(this.radioList).last();this.append(last.label);this.append(last.radio);},get_controlGroup:function(){return this.$_ControlGroup;},set_controlGroup:function(value){if(value){this.set_dataRole('controlgroup');}
+else{this.set_dataRole('');}
+this.$_ControlGroup=value;},get_horizontal:function(){return this.$_Horizontal;},set_horizontal:function(value){if(value){this.set_dataType('horizontal');}
+else{this.set_dataType('');}
+this.$_Horizontal=value;}},$control_UIObject);$control_UIFieldSet.$ctor1.prototype=$control_UIFieldSet.prototype;ss.initClass($control_UIFieldSet$RadioInput,$asm,{});ss.initClass($control_UIFlipSwitch,$asm,{},$control_UIObject);$control_UIFlipSwitch.$ctor1.prototype=$control_UIFlipSwitch.prototype;ss.initClass($control_UIGridA,$asm,{},$control_UIObject);ss.initClass($control_UIGridA$UIBlockA,$asm,{},$control_UIObject);ss.initClass($control_UIGridA$UIBlockB,$asm,{},$control_UIObject);ss.initClass($control_UIListviewItem,$asm,{},$control_UIObject);$control_UIListviewItem.$ctor1.prototype=$control_UIListviewItem.prototype;ss.initClass($control_UIGrpBox,$asm,{setFlipSwitch:function(){var psi=ss.cast(this.$dpi.get_inputTypes()[0],$ctrlui_PropertySelectInput);var off=Enumerable.from(psi.option).first(function(kvp){return kvp.key===49;});var on=Enumerable.from(psi.option).first(function(kvp1){return kvp1.key===48;});var OFF=new $control_UIOption.$ctor2(off.value,ss.formatNumber(off.key,'X2'));var ON=new $control_UIOption.$ctor2(on.value,ss.formatNumber(on.key,'X2'));var Flipswitch=new $control_UIFlipSwitch.$ctor1(OFF,ON);Flipswitch.change$1(ss.thisFix(ss.mkdel(this,this.$flip_Change)));Flipswitch.disable(!$control_UI.isRULE_SET(this.$dpi));this.fieldContain=new $control_UIFieldContain.$ctor2(this.$label,Flipswitch);this.append(this.fieldContain);},setDefault:function(){var Textbox=new $control_UITextInput();Textbox.change$1(ss.thisFix(ss.mkdel(this,this.$text_Change)));var value='';Textbox.set_value(value);this.fieldContain=new $control_UIFieldContain.$ctor2(this.$label,Textbox);this.append(this.fieldContain);},setRange:function(pii){var range=new $control_UIRangeInput();range.change$1(ss.thisFix(ss.mkdel(this,this.$range_Change)));this.fieldContain=new $control_UIFieldContain.$ctor2(this.$label,range);var value=ss.cast(pii,$ctrlui_PropertyRangeInput).minimum;range.set_value$1(value);range.set_min(ss.cast(pii,$ctrlui_PropertyRangeInput).minimum);range.set_max(ss.cast(pii,$ctrlui_PropertyRangeInput).maximum);this.append$1(this.fieldContain.object).trigger('create');},$range_Change:function(elem,ev){if(!this.checkValiable()){return;};if(!this.checkHex()){return;};var data=this.get_$byteValue();this.$dpi.set_inputData(data);this.kadecotSet(this.$dpi,data);},$setCalBox:function(){var Textbox=new $control_UICalBox();Textbox.change$1(ss.thisFix(ss.mkdel(this,this.$calbox_Change)));var epi=this.$dpi.get_propertyInfo();this.fieldContain=new $control_UIFieldContain.$ctor2(this.$label,Textbox);var len=this.$dpi.getMaxLength();var valueDescription='';for(var $t1=0;$t1<epi.fields.length;$t1++){var jfi=epi.fields[$t1];valueDescription+='ã'+jfi.description+':'+jfi.valueDescription+'ã';}
+Textbox.set_placeholder(this.$dpi.getText());Textbox.set_value('');Textbox.set_readOnly(!$control_UI.isRULE_SET(this.$dpi));Textbox.set_title(valueDescription);this.one('dateboxcreate',ss.thisFix(ss.mkdel(this,this.$calbox_Create)));this.append$1(this.fieldContain.object);},$calbox_Create:function(ele,ev){var textinput=$(ev.target).parent('.ui-input-datebox');textinput.append(this.backButton.object);this.backButton.click$1(ss.thisFix(ss.mkdel(this,this.$backButtonClick)));},$calbox_Change:function(elem,ev){var Calbox=ss.cast(this.fieldContain.input,$control_UICalBox);var data=new Array(4);this.removeClass$1();if(!(Calbox.get_dY()>=1&&Calbox.get_dY()<9999&&(Calbox.get_dM()>=1&&Calbox.get_dM()<=12&&(Calbox.get_dD()>=1&&Calbox.get_dD()<=31)))){this.toggleClass('ecnl_pink',true);}
+else{data[0]=parseInt(Calbox.get_xY().substr(0,2),16);data[1]=parseInt(Calbox.get_xY().substr(2,2),16);data[2]=parseInt(Calbox.get_xM(),16);data[3]=parseInt(Calbox.get_xD(),16);this.$dpi.set_inputData(data);this.$dpi.set_isWaitRes(true);this.set_class(2);}},$flip_Change:function(elem,ev){var data=this.get_$byteValue();this.$dpi.set_inputData(data);this.kadecotSet(this.$dpi,data);},$setTextInput:function(){var Textbox=new $control_UITextInput();Textbox.change$1(ss.thisFix(ss.mkdel(this,this.$text_Change)));Textbox.keypress(ss.thisFix(ss.mkdel(this,this.$text_KeyPress)));Textbox.keyup(ss.thisFix(ss.mkdel(this,this.$text_Keyup)));Textbox.on('textinputcreate',ss.thisFix(ss.mkdel(this,this.$text_Create)));var epi=this.$dpi.get_propertyInfo();var valueDescription='';for(var $t1=0;$t1<epi.fields.length;$t1++){var jfi=epi.fields[$t1];valueDescription+='ã'+jfi.description+':'+jfi.valueDescription+'ã';}
+Textbox.set_value('');Textbox.set_readOnly(!$control_UI.isRULE_SET(this.$dpi));Textbox.set_maxlength(this.$dpi.getMaxLength());Textbox.set_title(valueDescription);this.fieldContain=new $control_UIFieldContain.$ctor2(this.$label,Textbox);this.append$1(this.fieldContain.object);},$setTimebox:function(){var Textbox=new $control_UITimeBox();Textbox.change$1(ss.thisFix(ss.mkdel(this,this.$timebox_Change$1)));var epi=this.$dpi.get_propertyInfo();this.fieldContain=new $control_UIFieldContain.$ctor2(this.$label,Textbox);var len=this.$dpi.getMaxLength();var valueDescription='';for(var $t1=0;$t1<epi.fields.length;$t1++){var jfi=epi.fields[$t1];valueDescription+='ã'+jfi.description+':'+jfi.valueDescription+'ã';}
+Textbox.set_placeholder(this.$dpi.getText());Textbox.set_value('');Textbox.set_title(valueDescription);Textbox.set_readOnly(!$control_UI.isRULE_SET(this.$dpi));this.append(this.fieldContain);this.one('dateboxcreate',ss.thisFix(ss.mkdel(this,this.$timebox_Create)));},$setFieldSet:function(pii){var FieldSet=new $control_UIFieldSet();var Label=new $control_UILabel();Label.set_text(this.$dpi.getText());FieldSet.set_horizontal(true);FieldSet.change$1(ss.thisFix(ss.mkdel(this,this.$select_Change)));this.fieldContain=new $control_UIFieldContain.$ctor2(Label,FieldSet);var $t1=ss.cast(pii,$ctrlui_PropertySelectInput).option.getEnumerator();try{while($t1.moveNext()){var opt=$t1.current();var Radio=new $control_UIRadioInput.$ctor1(ss.formatNumber(opt.key,'X'));FieldSet.append$2(new $control_UIFieldSet$RadioInput(new $control_UILabel.$ctor1(opt.value),Radio));}}
+finally{$t1.dispose();}
+this.append$1(this.fieldContain.object);},$select_Change:function(elem,ev){var data=this.get_$byteValue();this.$dpi.set_inputData(data);this.kadecotSet(this.$dpi,data);},$timebox_Change$1:function(ele,ev){this.removeClass$1();if(this.get_changed()){this.$timebox_Change();}},$timebox_Change:function(){var value=this.fieldContain.input.get_value();var val=value.split(':');var data=new Array(2);data[0]=parseInt(val[0],10);data[1]=parseInt(val[1],10);var hex=ss.formatNumber(data[0],'X2')+ss.formatNumber(data[1],'X2');this.removeClass$1();this.$dpi.set_inputData(data);this.$dpi.set_isWaitRes(true);this.toggleClass('ecnl_light_green',true);},$timebox_Create:function(ele,ev){var textinput=$(ev.target).parent('.ui-input-datebox');textinput.append(this.backButton.object);this.backButton.click$1(ss.thisFix(ss.mkdel(this,this.$backButtonClick)));},$text_Keyup:function(elem,ev){$(elem).change();},$text_Create:function(elem,ev){var textinput=$(ev.target).parent('.ui-input-text');textinput.append(this.backButton.object);this.backButton.click$1(ss.thisFix(ss.mkdel(this,this.$backButtonClick)));},$text_KeyPress:function(elem,ev){var number=ev.which>=48&&ev.which<=57;var lower=ev.which>=97&&ev.which<=102;var upper=ev.which>=65&&ev.which<=70;var BackSpace=ev.which===8;var Delete=ev.which===0;var flag=!number&&!lower&&(!BackSpace&&!Delete)&&!upper;if(flag){ev.preventDefault();}},$backButtonClick:function(elem,ev){this.fieldContain.input.set_value(this.toText(this.getValue));this.fieldContain.input.object.change();},$text_Change:function(elem,ev){if(this.get_changed()){this.removeClass$1();if(!this.checkValiable()){return;};if(!this.checkHex()){return;};this.$setDpi();}},get_$inputType:function(){return ss.getInstanceType(this.fieldContain.input);},$toByteValue:function(){var Value=this.fieldContain.input.get_value();var data=new Array(ss.Int32.div(Value.length,2));for(var i=0,j=0;j<Value.length;j+=2){data[i++]=parseInt(Value.substr(j,2),16);}
+return data;},$setDpi:function(){this.$dpi.set_inputData(this.get_$byteValue());this.$dpi.set_isWaitRes(true);this.set_errorText('');this.toggleClass((this.$user?'ecnl_light_green':'ecnl_light_blue'),true);},get_$byteValue:function(){return this.$toByteValue();},get_errorText:function(){return this.$liAside.get_text();},set_errorText:function(value){this.$liAside.set_text(value);},removeClass$1:function(){this.set_errorText('');this.backButton.hide();this.removeClass('ecnl_pink');this.removeClass('ecnl_violet');this.removeClass('ecnl_light_green');this.removeClass('ecnl_light_blue');},setName:function(nameid){var name=nameid;if(ss.referenceEquals(this.get_$inputType(),$control_UICalBox)){name='cal_'+nameid;}
+else if(ss.referenceEquals(this.get_$inputType(),$control_UITimeBox)){name='tmb_'+nameid;}
+else if(ss.referenceEquals(this.get_$inputType(),$control_UITextInput)){name='txt_'+nameid;}
+else if(ss.referenceEquals(this.get_$inputType(),$control_UIRadioInput)){name='rng_'+nameid;}
+else if(ss.referenceEquals(this.get_$inputType(),$control_UIFlipSwitch)){name='flp_'+nameid;var Flipswitch=ss.cast(this.fieldContain.input,$control_UIFlipSwitch);var val0=Flipswitch.OFF.get_value();var val1=Flipswitch.ON.get_value();Flipswitch.OFF.set_id(name+val0);Flipswitch.ON.set_id(name+val1);}
+else if(ss.referenceEquals(this.get_$inputType(),$control_UIFieldSet)){name='sel_'+nameid;var FieldSet=ss.cast(this.fieldContain.input,$control_UIFieldSet);FieldSet.set_id(name);for(var i=0;i<FieldSet.radioList.length;i++){var id=name+FieldSet.radioList[i].radio.get_value();FieldSet.radioList[i].radio.set_name(name);FieldSet.radioList[i].radio.set_id(id);FieldSet.radioList[i].label.set_for(id);}}
+this.fieldContain.label.set_for(name);this.fieldContain.input.set_id(name);this.fieldContain.input.set_name(name);},checkHex:function(){var Value=this.fieldContain.input.get_value();if(!(new RegExp('^([0-9A-Fa-f][0-9A-Fa-f])+$')).test(Value)){this.set_errorText('16é²æ°ã§å
+¥åãã¦ãã ãã');this.toggleClass('ecnl_pink',true);return false;}
+return true;},checkValiable:function(){var epi=this.$dpi.get_propertyInfo();var valiable=this.$dpi.isValiable();var len=this.$dpi.getMaxLength();var Value=this.fieldContain.input.get_value();var length=Value.length!==len&&(!valiable||Value.length>len);if(Value.length!==len&&(!valiable||Value.length>len)){this.set_errorText(len.toString()+'æå­ã§å
+¥åãã¦ãã ãã');this.toggleClass((this.$user?'ecnl_pink':'ecnl_violet'),true);return false;}
+return true;},toTextDefault:function(data){var value='';if(ss.isNullOrUndefined(data)){return'';}
+for(var i=0;i<data.length;i++){value+=ss.formatNumber(data[i],'X2');}
+return value;},toTextTimeBox:function(data){var str=this.toTextDefault(data);if(str.length===4){var h=parseInt('0x'+str.substr(0,2));var m=parseInt('0x'+str.substr(2,2));return ss.formatNumber(h,'D2')+':'+ss.formatNumber(m,'D2');}
+else{return'';}},toTextCal:function(data){var str=this.toText(data);if(str.length===8){var y=parseInt('0x'+str.substr(0,4));var m=parseInt('0x'+str.substr(4,2));var d=parseInt('0x'+str.substr(6,2));if(y<1||m<1||d<1){return ss.formatNumber(y,'D4')+'/'+ss.formatNumber(m,'D2')+'/'+ss.formatNumber(m,'D2');}
+var date=new Date(y,m-1,d);return ss.formatDate(date,'yyyy/MM/dd');}
+else{return'';}},toText:function(data){if(ss.isNullOrUndefined(data)){return'';}
+if(ss.equals(ss.getInstanceType(this.fieldContain.input),$control_UITimeBox)){return this.toTextTimeBox(data);}
+else if(ss.equals(ss.getInstanceType(this.fieldContain.input),$control_UICalBox)){return this.toTextCal(data);}
+else{return this.toTextDefault(data);}},get_changed:function(){return!ss.equalsT(this.fieldContain.input.get_value(),this.toText(this.getValue));},grpBoxChange:function(ele,ev){this.backButton.toggle(this.get_changed());if(!this.get_changed()){this.$dpi.set_isWaitRes(false);this.$dpi.set_inputData(null);this.removeClass$1();}},setGetValue:function(data){this.removeClass$1();this.getValue=data;this.fieldContain.input.set_value(this.toText(data));this.fieldContain.input.change();}},$control_UIListviewItem);$control_UIGrpBox.$ctor1.prototype=$control_UIGrpBox.prototype;ss.initClass($control_UIH,$asm,{},$control_UIObject);$control_UIH.$ctor1.prototype=$control_UIH.$ctor2.prototype=$control_UIH.prototype;ss.initClass($control_UIImg,$asm,{},$control_UIObject);$control_UIImg.$ctor1.prototype=$control_UIImg.$ctor2.prototype=$control_UIImg.prototype;ss.initClass($control_UILabel,$asm,{},$control_UIObject);$control_UILabel.$ctor1.prototype=$control_UILabel.$ctor3.prototype=$control_UILabel.$ctor4.prototype=$control_UILabel.$ctor2.prototype=$control_UILabel.prototype;ss.initClass($control_UILi,$asm,{},$control_UIObject);ss.initClass($control_UIListDivider,$asm,{},$control_UIListviewItem);$control_UIListDivider.$ctor1.prototype=$control_UIListDivider.$ctor2.prototype=$control_UIListDivider.$ctor3.prototype=$control_UIListDivider.prototype;ss.initClass($control_UIListview,$asm,{},$control_UIObject);$control_UIListview.$ctor1.prototype=$control_UIListview.prototype;ss.initClass($control_UINodeList,$asm,{getNodeList:function(){return this.$info.children();},$listitem_Click:function(listitem,item){$('.li-select').removeClass('li-select');listitem.addClass('li-select');}});ss.initEnum($control_UIObject$EcnlClass,$asm,{ecnl_pink:0,ecnl_violet:1,ecnl_light_green:2,ecnl_light_blue:3});ss.initClass($control_UIOption,$asm,{},$control_UIObject);$control_UIOption.$ctor2.prototype=$control_UIOption.$ctor1.prototype=$control_UIOption.prototype;ss.initClass($control_UIP,$asm,{},$control_UIObject);$control_UIP.$ctor1.prototype=$control_UIP.$ctor2.prototype=$control_UIP.prototype;ss.initClass($control_UIPin,$asm,{$setUIPinMode:function(i){this.uiPinMode.append(new $control_UILabel.$ctor4('INPUT','input'+i.toString(),'pin'+i.toString()));this.uiPinMode.append(new $control_UIRadioInput.$ctor3('input'+i.toString(),'pin'+i.toString(),'INPUT'));this.uiPinMode.append(new $control_UILabel.$ctor4('OUTPUT','output'+i.toString(),'pin'+i.toString()));this.uiPinMode.append(new $control_UIRadioInput.$ctor3('output'+i.toString(),'pin'+i.toString(),'OUTPUT'));this.uiPinMode.append(new $control_UILabel.$ctor4('INPUT_PULLUP','input_pullup'+i.toString(),'pin'+i.toString()));this.uiPinMode.append(new $control_UIRadioInput.$ctor3('input_pullup'+i.toString(),'pin'+i.toString(),'INPUT_PULLUP'));return this.uiPinMode;},$setUIDigital:function(i){},$setUIRange:function(i){this.range=new $control_UIRangeInput.$ctor1(-1,255);this.range.set_value$1(123);},$setAnalogRead:function(i){this.analogRead=new $control_UIRangeInput.$ctor1(0,1023);this.analogRead.handle=false;},getElements:function(){var elements=new Array(2);elements[0]=this.listDivider.get_element();elements[1]=this.get_element();return elements;},setPinModeChange:function(eventhandler){if(ss.isValue(this.uiPinMode)){this.uiPinMode.change$1(ss.thisFix(ss.mkdel(this,function(elem,ev){eventhandler(this.uiPinMode,this.pin);})));}},setDigitalChange:function(eventhandler){if(ss.isValue(this.flipSwitch)){this.flipSwitch.change$1(ss.thisFix(ss.mkdel(this,function(elem,ev){eventhandler(this.readButton,this.flipSwitch,this.pin);})));}},setReadButtonClick:function(eventhandler){if(ss.isValue(this.flipSwitch)){this.readButton.click$1(ss.thisFix(ss.mkdel(this,function(elem,ev){eventhandler(this.readButton,this.flipSwitch,this.pin);})));}},setAnalogWriteChange:function(eventhandler){if(ss.isValue(this.range)){this.range.change$1(ss.thisFix(ss.mkdel(this,function(elem,ev){eventhandler(this.range,this.pin);})));}},setAnalogReadChange:function(eventhandler){if(ss.isValue(this.analogRead)){this.readButton.click$1(ss.thisFix(ss.mkdel(this,function(elem,ev){eventhandler(this.analogRead,this.pin);})));}}},$control_UILi);$control_UIPin.$ctor1.prototype=$control_UIPin.prototype;ss.initClass($control_UIRadioInput,$asm,{},$control_UIObject);$control_UIRadioInput.$ctor2.prototype=$control_UIRadioInput.$ctor3.prototype=$control_UIRadioInput.$ctor1.prototype=$control_UIRadioInput.prototype;ss.initClass($control_UIRangeInput,$asm,{$getMaxLength:function(){var min=0;var j;if(this.get_min()<0){min=1;j=-10;while(ss.Int32.div(this.get_max(),j)>1){min++;j*=10;}
+min++;}
+var i=1;j=10;while(ss.Int32.div(this.get_max(),j)>=1){i++;j*=10;}
+return((i>min)?i:min);},get_$dataHighlight:function(){return/^\s*true\s*$/i.test(this.getAttribute('data-highlight'));},set_$dataHighlight:function(value){this.attribute$1('data-highlight',value.toString());},get_value$1:function(){if(this.get_value()===''){this.set_value$1(this.get_min());}
+return parseInt(this.get_value());},set_value$1:function(value){this.set_value(value.toString());},$sliderKeypress:function(ele,ev){var number=ev.which>=48&&ev.which<=57;var BackSpace=ev.which===8;var Delete=ev.which===0;var minus=ev.which===45;var flag=!number&&!minus&&(!BackSpace&&!Delete);if(flag){ev.preventDefault();}},$sliderCreate:function(ele,ev){this.sliderHandle=new $control_UIRangeInput$UIHandle(ev);this.sliderHandle.toggle(this.handle);var SliderTrack=new $control_UIRangeInput$UISliderTrack(ev);SliderTrack.pointerEvents(this.handle);this.pointerEvents(this.handle);}},$control_UIObject);$control_UIRangeInput.$ctor1.prototype=$control_UIRangeInput.prototype;ss.initClass($control_UIRangeInput$UIHandle,$asm,{},$control_UIObject);ss.initClass($control_UIRangeInput$UISliderTrack,$asm,{},$control_UIObject);ss.initClass($control_UITimeBox,$asm,{$dateBoxCreate:function(ele,ev){$control_UI.toggleClass($(ele).parents().find('.ui-icon-grid'),'ui-icon-grid','ui-icon-clock');}},$control_UITextInput);ss.initEnum($ctrlui_$State,$asm,{$value:0,$equalOrRange:1,$description:2,$unitOrCommaOrEnd:3,$rengeMax:4,$startParenthesis:5,$rangeDescription:6,$minDescription:7,$rangeSeparetor:8,$maxDescription:9,$endParenthesis:10,$commaOrEnd:11,$bitFieldLSB:12,$bitRange:13,$bitFieldMSB:14,$bitFieldDescription:15,$bitRangeEnd:16,$colon:17});ss.initClass($ctrlui_$TokenInfo,$asm,{toString:function(){return this.$token;},$toInt32:function(){switch(this.$type){case 1:{return parseInt(this.$token.substring(2),16);}
+case 2:{return parseInt(this.$token);}
+default:{return 0;}}},$toInt64:function(typeName){var temp;switch(this.$type){case 1:{temp=this.$token.substring(2);return parseInt(temp,16);}
+case 2:{return parseInt(this.$token);}
+default:{return 0;}}}});ss.initEnum($ctrlui_$TokenType,$asm,{$separetor:0,$hexValue:1,$numeric:2,$string:3,$end:4});ss.initClass($ctrlui_$ValueSet,$asm,{});ss.initClass($ctrlui_Value,$asm,{get_disp:null,getInitialValue:null});ss.initClass($ctrlui_BitField,$asm,{get_least:function(){return this.$_Least;},get_most:function(){return this.$_Most;},get_disp:function(){return this.$_Disp;},get_values:function(){return this.$_Values;},get_ranges:function(){return this.$_Ranges;},get_initailValue:function(){return this.$_InitailValue;},getInitialValue:function(){if(ss.isNullOrUndefined(this.$_InitailValue)){return'';}
+return this.$_InitailValue.getInitialValue();},$addValue:function(option){if(ss.isNullOrUndefined(this.$_InitailValue)){this.$_InitailValue=option;}
+this.$_Values.push(option);},$addRange:function(range){if(ss.isNullOrUndefined(this.$_InitailValue)){this.$_InitailValue=range;}
+this.$_Ranges.push(range);},$isInRange:function(val64){for(var $t1=0;$t1<this.$_Values.length;$t1++){var val=this.$_Values[$t1];if(val.get_val()!==val64){continue;}
+return true;}
+for(var $t2=0;$t2<this.$_Ranges.length;$t2++){var rng=this.$_Ranges[$t2];if(rng.get_min()>val64||rng.get_max()<val64){continue;}
+return true;}
+return false;},$getInRangeValue:function(val64){for(var $t1=0;$t1<this.$_Values.length;$t1++){var val=this.$_Values[$t1];if(val.get_val()!==val64){continue;}
+return val;}
+for(var $t2=0;$t2<this.$_Ranges.length;$t2++){var rng=this.$_Ranges[$t2];if(rng.get_min()>val64||rng.get_max()<val64){continue;}
+return new $ctrlui_InRangeValue(rng,val64);}
+return null;}},$ctrlui_Value);ss.initClass($ctrlui_BitFiledsValue,$asm,{get_disp:function(){return'';},getInitialValue:function(){return this.$_Value.toString(16).toUpperCase();}},$ctrlui_Value);ss.initClass($ctrlui_DeviceController,$asm,{get_nodeList:function(){return this.$m_NodeList;},recvResponse:function(response){var ni={};var di={};this.$getDevice(response.sender,response.seoj,ni,di);if(ss.isNullOrUndefined(ni.$)){return false;}
+if(ss.isNullOrUndefined(di.$)){return false;}
+for(var $t1=0;$t1<response.properties.length;$t1++){var prop=response.properties[$t1];if(prop.edt.length>0){di.$.$setPropertyData(prop.epc,prop.$getEdt());}
+else{if(response.esv===113){di.$.$adoptInputData(prop.epc);}}}
+return true;},recvResponse$1:function(di,esv,epc,edt){if(edt.length>0){di.$setPropertyData(epc,edt);}
+else{if(esv===113){di.$adoptInputData(epc);}}},$getDevice:function(nodid,eoj,nod,obj){obj.$=null;nod.$=this.$findNode(nodid);if(ss.isValue(nod.$)){if(eoj.get_x1()===14&&eoj.get_x2()===240){obj.$=nod.$.get_profile();}
+else{obj.$=this.$findDevice(nod.$,eoj);}}},$findNode:function(enodid){var ni=null;switch(enodid){case 0:case 1:{ni=this.$m_NodeList[0];break;}
+default:{ni=Enumerable.from(this.$m_NodeList).firstOrDefault(function(p){return p.get_nodeId()===enodid;},ss.getDefaultValue($ctrlui_DeviceController$NodeInfo));break;}}
+return ni;},$findDevice:function(ni,eoj){var $t1=ni.get_devices();for(var $t2=0;$t2<$t1.length;$t2++){var di=$t1[$t2];if(di.get_classGroupCode()===eoj.get_x1()&&di.get_classCode()===eoj.get_x2()&&di.get_instanceCode()===eoj.get_x3()){return di;}}
+return null;}},$control_UIDeviceController);ss.initClass($ctrlui_DeviceController$DeviceInfo,$asm,{get_classInfo:function(){return this.$m_ClassInfo;},get_profile:function(){return this.$m_Profile;},get_classGroupCode:function(){return this.$m_ClassGroupCode;},get_classCode:function(){return this.$m_ClassCode;},get_instanceCode:function(){return this.$m_InstanceCode;},get_properties:function(){return this.$m_Properties;},get_eObjId:function(){return this.$m_EObjId;},get_data:function(){return this.$2$DataField;},set_data:function(value){this.$2$DataField=value;},getText:function(){if(ss.isValue(this.$m_ClassInfo)){return this.$m_ClassInfo.description;}
+else{return ss.formatString('{0:X2}{1:X2}{2:X2}',this.$m_ClassGroupCode,this.$m_ClassCode,this.$m_InstanceCode);}},$setPropertyData:function(epc,edt){var dpi=Enumerable.from(this.$m_Properties).firstOrDefault(function(p){return p.get_propertyCode()===epc;},ss.getDefaultValue($ctrlui_DeviceController$DevicePropertyInfo));if(ss.isNullOrUndefined(dpi)){return;}
+dpi.setPropertyData(edt);},$adoptInputData:function(epc){var dpi=Enumerable.from(this.$m_Properties).firstOrDefault(function(p){return p.get_propertyCode()===epc;},ss.getDefaultValue($ctrlui_DeviceController$DevicePropertyInfo));if(ss.isNullOrUndefined(dpi)){return;}
+dpi.adoptInputData();},getObjectID:function(){var text=ss.formatNumber(this.get_classGroupCode(),'X2')+ss.formatNumber(this.get_classCode(),'X2')+ss.formatNumber(this.get_instanceCode(),'X2');return text;},setUIDevice:function(page){this.uiDeviceSet(this,page);}},$control_UIDeviceController$UIDeviceInfo);$ctrlui_DeviceController$DeviceInfo.$ctor2.prototype=$ctrlui_DeviceController$DeviceInfo.$ctor1.prototype=$ctrlui_DeviceController$DeviceInfo.prototype;ss.initClass($ctrlui_DeviceController$DevicePropertyInfo,$asm,{get_propertyInfo:function(){return this.$m_PropertyInfo;},get_propertyCode:function(){return this.$m_PropertyCode;},getPropertyCode:function(format){return ss.formatNumber(this.get_propertyCode(),format);},isValiable:function(){return(ss.isNullOrUndefined(this.get_propertyInfo())?true:ss.contains(this.get_propertyInfo().access,'VARIABLE'));},get_flag:function(){return this.$m_Flag;},get_size:function(){return this.$m_Size;},getText:function(){if(ss.isValue(this.$m_PropertyInfo)){return this.$m_PropertyInfo.description;}
+else{return ss.formatString('{0:X2}',this.$m_PropertyCode);}},get_inputData:function(){return this.$2$InputDataField;},set_inputData:function(value){this.$2$InputDataField=value;},get_data:function(){return this.$m_Data;},get_isWaitRes:function(){return this.$2$IsWaitResField;},set_isWaitRes:function(value){this.$2$IsWaitResField=value;},get_inputTypes:function(){return this.$m_InputTypes;},setPropertyData:function(edt){this.$m_Data=edt;},adoptInputData:function(){this.$m_Data=this.get_inputData();this.set_inputData(null);},prepareInputInfo:function(){if(ss.isValue(this.$m_InputTypes)){return;}
+this.$m_InputTypes=[];var epi=this.$m_PropertyInfo;if(ss.isNullOrUndefined(epi)||!epi.primitive){return;}
+var valueRange=$ctrlui_ValueRange.parse(epi.valueDescription,epi);if(!ss.isNullOrEmptyString(epi.initialValue)){valueRange.set_initailValue(epi.initialValue);}
+if(valueRange.get_values().length>0){var pii;pii=new $ctrlui_PropertySelectInput();var $t1=valueRange.get_values();for(var $t2=0;$t2<$t1.length;$t2++){var option=$t1[$t2];pii.option.add(option.get_val(),option.get_disp());}
+this.$m_InputTypes.push(pii);}
+var $t3=valueRange.get_ranges();for(var $t4=0;$t4<$t3.length;$t4++){var range=$t3[$t4];var pii1;pii1=new $ctrlui_PropertyRangeInput();pii1.minimum=range.get_min();pii1.maximum=range.get_max();pii1.minDescrption=range.get_minDisp();pii1.maxDescrption=range.get_maxDisp();this.$m_InputTypes.push(pii1);}}},$control_UIDeviceController$UIDevicePropertyInfo);$ctrlui_DeviceController$DevicePropertyInfo.$ctor1.prototype=$ctrlui_DeviceController$DevicePropertyInfo.prototype;ss.initClass($ctrlui_DeviceController$NodeInfo,$asm,{get_nodeId:function(){return this.$m_NodeId;},get_profile:function(){return this.$m_Profile;},get_devices:function(){return this.$m_Devices;},get_data:function(){return this.$1$DataField;},set_data:function(value){this.$1$DataField=value;}});ss.initEnum($ctrlui_ENOD_ID,$asm,{noT_MATCH_ID:-1,multicasT_ID:0,locaL_ID:1,apI_ID:2,remotE_ID:3,tablE_NUM:100});ss.initEnum($ctrlui_EPC_FLAG,$asm,{NONE:0,rulE_SET:1,rulE_GET:2,rulE_ANNO:4,ANNOUNCE:64,VARIABLE:128});ss.initClass($ctrlui_Information,$asm,{update:function(ele,id){var page=$CtrlUI.getPage(ele);this.$info=$('#'+id,page);if(ss.isNullOrUndefined(this.$info)){return;}
+$.ajax('./'+id+'.json').success(ss.mkdel(this,this.$success)).error(ss.mkdel(this,this.$error));},$success:function(data,textStatus,request){var items=ss.cast((ss.referenceEquals(ss.getInstanceType(data),String)?$.parseJSON(ss.cast(data,String)):data),Array);var listview=(new $control_UIListview.$ctor1(['data-inset',true,'data-theme','b'])).object;listview.append((new $control_UIListDivider.$ctor1('ã½ããã¦ã§ã¢æ
+å ±')).object);for(var $t1=0;$t1<items.length;$t1++){var item=items[$t1];var title=ss.cast(item.title,String);var version=ss.cast(item.version,String);var link=ss.cast(item.link,String);var note=ss.cast(item.note,String);var a;if(ss.isNullOrEmptyString(link)){a=new $control_UIAnchor.$ctor2(new $control_UIH.$ctor2(2,title));a.set_href('#');}
+else{a=new $control_UIAnchor.$ctor2(new $control_UIH.$ctor2(2,title));a.set_href(link);a.set_target('_blank');}
+a.append(new $control_UIP.$ctor1('Version '+version));if(!ss.isNullOrEmptyString(note)){a.append(new $control_UIP.$ctor1(note));}
+listview.append((new $control_UIListviewItem.$ctor1(a)).object);}
+var anchor=new $control_UIAnchor();anchor.set_target('_blank');anchor.set_href('http://www.core-s.co.jp');anchor.append$1((new $control_UIImg.$ctor2(['src','imgs/core-s.svg'])).object).append('ã³ã¢ã¼ãºæ ªå¼ä¼ç¤¾');var listitem=(new $control_UIListDivider.$ctor2(anchor)).object;listview.append(listitem);this.$info.html('');this.$info.append(listview);$('ul',this.$info).listview().listview('refresh');this.$info.popup('reposition',{positionTo:'origin'});},$error:function(request,textStatus,error){var listview=(new $control_UIListview.$ctor1(['data-inset','true','data-theme','b'])).object;listview.append((new $control_UIListDivider.$ctor1('ã½ããã¦ã§ã¢æ
+å ±')).object);listview.append((new $control_UIListviewItem.$ctor1(new $control_UIP.$ctor1('éä¿¡ã¨ã©ã¼'))).object);this.$info.append(listview);$('ul',this.$info).listview().listview('refresh');this.$info.popup('reposition',{positionTo:'origin'});}});ss.initClass($ctrlui_InRangeValue,$asm,{get_range:function(){return this.$_Range;},get_value:function(){return this.$_Value;},get_disp:function(){return this.$_Range.getDisp(this.$_Value);},getInitialValue:function(){return this.$_Value.toString(16).toUpperCase();}},$ctrlui_Value);ss.initClass($ctrlui_JsonClassGroupInfo,$asm,{});ss.initClass($ctrlui_JsonClassInfo,$asm,{});ss.initClass($ctrlui_JsonFieldInfo,$asm,{});ss.initClass($ctrlui_JsonObjectInfo,$asm,{findProperty:function(epc){for(var $t1=0;$t1<this.properties.length;$t1++){var item=this.properties[$t1];if(item.propertyCode===epc){return item;}}
+return null;}});ss.initClass($ctrlui_JsonNodeInfo,$asm,{},$ctrlui_JsonObjectInfo);ss.initClass($ctrlui_JsonPropertyInfo,$asm,{},$ctrlui_JsonFieldInfo);$ctrlui_JsonPropertyInfo.$ctor1.prototype=$ctrlui_JsonPropertyInfo.prototype;ss.initClass($ctrlui_JsonSkeltonResult,$asm,{});ss.initClass($ctrlui_Option,$asm,{get_val:function(){return this.$_Val;},get_disp:function(){return this.$_Disp;},getInitialValue:function(){return this.$_Val.toString(16).toUpperCase();}},$ctrlui_Value);ss.initClass($ctrlui_PropertyInputInfo,$asm,{});ss.initEnum($ctrlui_PropertyInputMode,$asm,{unknown:0,select:1,range:2});ss.initClass($ctrlui_PropertyRangeInput,$asm,{},$ctrlui_PropertyInputInfo);ss.initClass($ctrlui_PropertySelectInput,$asm,{},$ctrlui_PropertyInputInfo);ss.initClass($ctrlui_Range,$asm,{get_min:function(){return this.$_Min;},get_max:function(){return this.$_Max;},get_disp:function(){return this.$_Disp;},get_minDisp:function(){return this.$_MinDisp;},get_maxDisp:function(){return this.$_MaxDisp;},get_unit:function(){return this.$_Unit;},get_initialValue:function(){return this.$_InitialValue;},set_initialValue:function(value){this.$_InitialValue=value;},getInitialValue:function(){return this.$_InitialValue.toString(16).toUpperCase();},getDisp:function(value){return this.$_Disp+value.toString()+this.$_Unit;}},$ctrlui_Value);$ctrlui_Range.$ctor1.prototype=$ctrlui_Range.prototype;ss.initClass($ctrlui_T_ECN_EOJ,$asm,{get_x1:function(){return this.$_eoj[0];},set_x1:function(value){this.$_eoj[0]=value;},get_x2:function(){return this.$_eoj[1];},set_x2:function(value){this.$_eoj[1]=value;},get_x3:function(){return this.$_eoj[2];},set_x3:function(value){this.$_eoj[2]=value;}});ss.initClass($ctrlui_ValueRange,$asm,{get_values:function(){return this.$_Values;},get_ranges:function(){return this.$_Ranges;},get_bitFields:function(){return this.$_BitFields;},get_memberFields:function(){return this.$_MemberFields;},get_initailValue:function(){if(ss.isNullOrUndefined(this.$_InitailValue)){return'';}
+return this.$_InitailValue.getInitialValue();},set_initailValue:function(value){var val64=parseInt(value);for(var $t1=0;$t1<this.$_Values.length;$t1++){var val=this.$_Values[$t1];if(val.get_val()!==val64){continue;}
+this.$_InitailValue=val;return;}
+for(var $t2=0;$t2<this.$_Ranges.length;$t2++){var rng=this.$_Ranges[$t2];if(rng.get_min()>val64||rng.get_max()<val64){continue;}
+this.$_InitailValue=new $ctrlui_InRangeValue(rng,val64);return;}
+if(this.$_BitFields.length>0){var ok=true;var bitFlds=[];for(var $t3=0;$t3<this.$_BitFields.length;$t3++){var bit=this.$_BitFields[$t3];if(!bit.$isInRange(val64)){ok=false;break;}
+bitFlds.push(bit.$getInRangeValue(val64));}
+if(ok){this.$_InitailValue=new $ctrlui_BitFiledsValue(Array.prototype.slice.call(this.$_BitFields),Array.prototype.slice.call(bitFlds),val64);return;}}}});ss.initClass($ctrlui_WampApiKadecotDevice,$asm,{});ss.initClass($ctrlui_WampApiKadecotGet,$asm,{$getOption:function(){return'{"deviceId":'+this.deviceId.toString()+'}';},$getArguments:function(){return'{"propertyName":"'+this.propertyName+'"}';}});ss.initClass($ctrlui_WampApiKadecotRes,$asm,{});ss.initClass($ctrlui_WampApiKadecotSet,$asm,{$getOption:function(){return'{"deviceId":'+this.deviceId.toString()+'}';},$getArguments:function(){return'{"propertyName":"'+this.propertyName+'","propertyValue":'+JSON.stringify(this.propertyValue)+'}';}});ss.initClass($ctrlui_WebApiEchonetMessage,$asm,{});ss.initClass($ctrlui_WebApiGet,$asm,{addEpc:function(epc){this.properties.push(new $ctrlui_WebApiPropertyCode(epc));},getJson:function(){return'{"esv_get":'+JSON.stringify(this)+'}';},getOption:function(){return'{"deviceId":'+this.deojid.toString()+'}';},getArguments:function(){return JSON.stringify(this);}});$ctrlui_WebApiGet.$ctor1.prototype=$ctrlui_WebApiGet.prototype;ss.initClass($ctrlui_WebApiGrsaguraMessage,$asm,{});ss.initClass($ctrlui_WebApiObjectInfo,$asm,{});ss.initClass($ctrlui_WebApiPropertyCode,$asm,{});$ctrlui_WebApiPropertyCode.$ctor1.prototype=$ctrlui_WebApiPropertyCode.prototype;ss.initClass($ctrlui_WebApiPropertyData,$asm,{$setEdt:function(_edt){var sb=new ss.StringBuilder();for(var $t1=0;$t1<_edt.length;$t1++){var b=_edt[$t1];sb.append(ss.formatNumber(b,'X2'));}
+return sb.toString();},$getEdt:function(){var result=new Array(ss.Int32.div(this.edt.length,2));for(var i=0,j=0;j<this.edt.length;i++,j+=2){result[i]=parseInt(this.edt.substr(j,2),16);}
+return result;}});$ctrlui_WebApiPropertyData.$ctor1.prototype=$ctrlui_WebApiPropertyData.prototype;ss.initClass($ctrlui_WebApiPropertyInfo,$asm,{});ss.initClass($ctrlui_WebApiSet,$asm,{addEdt:function(epc,edt){this.properties.push(new $ctrlui_WebApiPropertyData.$ctor1(epc,edt));},getJson:function(){return'{"esv_set":'+JSON.stringify(this)+'}';},getOption:function(){return'{"deviceId":'+this.deojid.toString()+'}';},getArguments:function(){return JSON.stringify(this);}});$ctrlui_WebApiSet.$ctor1.prototype=$ctrlui_WebApiSet.prototype;ss.initClass($ctrlui_WebApiSetGet,$asm,{addEdt:function(epc,edt){this.setProperties.push(new $ctrlui_WebApiPropertyData.$ctor1(epc,edt));},addEpc:function(epc){this.getProperties.push(new $ctrlui_WebApiPropertyCode(epc));},getJson:function(){return'{"esv_set_get":'+JSON.stringify(this)+'}';},getOption:function(){return'{"deviceId":'+this.deojid.toString()+'}';},getArguments:function(){return JSON.stringify(this);}});$ctrlui_WebApiSetGet.$ctor1.prototype=$ctrlui_WebApiSetGet.prototype;ss.initEnum($Kadecot_WAMP_MSG_TYPE,$asm,{HELLO:1,WELCOME:2,ABORT:3,CHALLENGE:4,AUTHENTICATE:5,GOODBYE:6,HEARTBEAT:7,ERROR:8,PUBLISH:16,PUBLISHED:17,SUBSCRIBE:32,SUBSCRIBED:33,UNSUBSCRIBE:34,UNSUBSCRIBED:35,EVENT:36,CALL:48,CANCEL:49,RESULT:50,REGISTER:64,REGISTERED:65,UNREGISTER:66,UNREGISTERED:67,INVOCATION:68,INTERRUPT:69,YIELD:70});ss.initClass($Kadecot_WampClient,$asm,{connect:function(serverIp){if(this.$on_open_flag){return;}
+if(!ss.isNullOrEmptyString(serverIp)){this.$url=serverIp;}
+else{this.$url='ws://localhost:8080/';}
+this.$webSocket=new WebSocket(this.$url,this.$plotocols);this.$webSocket.onopen=ss.delegateCombine(this.$webSocket.onopen,ss.mkdel(this,this.onOpen));this.$webSocket.onmessage=ss.delegateCombine(this.$webSocket.onmessage,ss.mkdel(this,this.onMessage));this.$webSocket.onclose=ss.delegateCombine(this.$webSocket.onclose,ss.mkdel(this,this.onClose));this.$webSocket.onerror=ss.delegateCombine(this.$webSocket.onerror,ss.mkdel(this,this.onError));},disconnect:function(){this.$webSocket.close();},addOpenCallback:function(callback){this.$wampClientCore.set_openCallback(callback);},deleteOpenCallback:function(){this.$wampClientCore.deleteOpenCallback();},addCloseCallback:function(callback){this.$wampClientCore.set_closeCallback(callback);},deleteCloseCallback:function(){this.$wampClientCore.deleteCloseCallback();},addGoodbyeCallback:function(callback){this.$wampClientCore.set_goodbyeCallback(callback);},deleteGoodbyeCallback:function(){this.$wampClientCore.deleteGoodbyeCallback();},addHeartbeatCallback:function(callback){this.$wampClientCore.set_heartbeatCallback(callback);},deleteHeartbeatCallback:function(){this.$wampClientCore.deleteHeartbeatCallback();},addInvocationCallback:function(request,callback){this.$wampClientCore.get_invocationCallback().set_item(request,callback);},deleteInvocationCallback:function(request){this.$wampClientCore.deleteInvocationCallback(request);},sendHello:function(realm,details,callback){var data;data=$Kadecot_WampSerializer.createHello(realm,details);this.$wampClientCore.set_helloCallback(callback);if(this.$on_open_flag===true){this.$webSocket.send(data);}
+else{return null;}
+return data;},sendAuthenticate:function(signature,extra,callback){var data;data=$Kadecot_WampSerializer.createAuthenticate(signature,extra);this.$wampClientCore.set_authenticateCallback(callback);if(this.$on_open_flag){this.$webSocket.send(data);}
+else{return null;}
+return data;},sendGoodbye:function(details,reason,callback){var data;data=$Kadecot_WampSerializer.createGoodbye(details,reason);this.$wampClientCore.set_goodbyeCallback(callback);if(this.$on_open_flag){this.$webSocket.send(data);}
+else{return null;}
+return data;},sendHeartbeat:function(incomingSeq,outgoingSeq,discard){var data;data=$Kadecot_WampSerializer.createHeartbeat(incomingSeq,outgoingSeq,discard);if(this.$on_open_flag){this.$webSocket.send(data);}
+else{return null;}
+return data;},sendError:function(type,request,details,error,arguments1,argumentsKw){var data;data=$Kadecot_WampSerializer.createError(type,request,details,error,arguments1,argumentsKw);if(this.$on_open_flag){this.$webSocket.send(data);}
+else{return null;}
+return data;},sendPublish:function(options,topic,arguments1,argumentsKw,callback){var data;var request;request=this.$request_id;this.$request_id++;data=$Kadecot_WampSerializer.createPublish(request,options,topic,arguments1,argumentsKw);this.$wampClientCore.get_publishCallback().set_item(request,callback);if(this.$on_open_flag){this.$webSocket.send(data);}
+else{return null;}
+return data;},sendSubscribe:function(options,topic,eventfunc,callback){var data;var request;request=this.$request_id;this.$request_id++;data=$Kadecot_WampSerializer.createSubscribe(request,options,topic);this.$wampClientCore.get_subscribeCallback().set_item(request,callback);this.$wampClientCore.get_eventCallback().set_item(request,eventfunc);if(this.$on_open_flag){this.$webSocket.send(data);}
+else{return null;}
+return data;},sendUnsubscribe:function(subscription,callback){var data;var request;request=this.$request_id;this.$request_id++;data=$Kadecot_WampSerializer.createUnsubscribe(request,subscription);this.$wampClientCore.get_unsubscribeCallback().set_item(request,callback);this.$subscription_id_list.set_item(request,subscription);if(this.$on_open_flag){this.$webSocket.send(data);}
+else{return null;}
+return data;},sendCall:function(options,procedure,arguments1,argumentsKw,callback){var data;var request;request=this.$request_id;this.$request_id++;data=$Kadecot_WampSerializer.createCall(request,options,procedure,arguments1,argumentsKw);this.$wampClientCore.get_callCallback().set_item(request,callback);if(this.$on_open_flag===true){this.$webSocket.send(data);}
+else{return null;}
+return data;},sendCancel:function(request,options,callback){var data;data=$Kadecot_WampSerializer.createCancel(request,options);this.$wampClientCore.get_cancelCallback().set_item(request,callback);if(this.$on_open_flag){this.$webSocket.send(data);}
+else{return null;}
+return data;},sendRegister:function(options,procedure,callback){var data;var request;request=this.$request_id;this.$request_id++;data=$Kadecot_WampSerializer.createRegister(request,options,procedure);this.$wampClientCore.get_registerCallback().set_item(request,callback);if(this.$on_open_flag){this.$webSocket.send(data);}
+else{return null;}
+return data;},sendUnregister:function(registration,callback){var data;var request;request=this.$request_id;this.$request_id++;data=$Kadecot_WampSerializer.createUnregister(request,registration);this.$wampClientCore.get_unregisterCallback().set_item(request,callback);if(this.$on_open_flag){this.$webSocket.send(data);}
+else{return null;}
+return data;},sendYield:function(request,options,arguments1,argumentsKw){var data;data=$Kadecot_WampSerializer.createYield(request,options,arguments1,argumentsKw);if(this.$on_open_flag){this.$webSocket.send(data);}
+return data;},onOpen:function(e){this.$on_open_flag=true;var callback=this.$wampClientCore.get_openCallback();if(!ss.staticEquals(callback,null)){callback();}},onClose:function(e){this.$on_open_flag=false;var callback=this.$wampClientCore.get_closeCallback();if(!ss.staticEquals(callback,null)){callback();}},onError:function(e){var eea=e;if(!ss.staticEquals(this.$errorCallback,null)){this.$errorCallback(ss.cast(eea.message,String));}},onMessage:function(e){var msg=e;var data;var callback=null;if(!!ss.isValue(msg.data)){data=$Kadecot_WampDeserializer.parse(ss.cast(msg.data,String));}
+else{data=$Kadecot_WampDeserializer.parse(ss.cast(msg,String));}
+if(ss.isNullOrUndefined(data)){return;}
+var list=ss.cast(data,Array);var switchData=ss.unbox(ss.cast(list[0],ss.Int32));switch(switchData){case 2:{if(this.$challnge_flag){this.$challnge_flag=false;callback=this.$wampClientCore.get_authenticateCallback();if(!ss.staticEquals(callback,null)){callback(data);}
+else{}}
+else{callback=this.$wampClientCore.get_helloCallback();if(!ss.staticEquals(callback,null)){callback(data);}
+else{}}
+break;}
+case 3:{if(this.$challnge_flag){this.$challnge_flag=false;callback=this.$wampClientCore.get_authenticateCallback();if(!ss.staticEquals(callback,null)){callback(data);}
+else{}}
+else{callback=this.$wampClientCore.get_helloCallback();if(!ss.staticEquals(callback,null)){callback(data);}
+else{}}
+break;}
+case 4:{this.$challnge_flag=true;callback=this.$wampClientCore.get_helloCallback();if(!ss.staticEquals(callback,null)){callback(data);}
+else{}
+break;}
+case 6:{callback=this.$wampClientCore.get_goodbyeCallback();if(!ss.staticEquals(callback,null)){callback(data);}
+else{}
+break;}
+case 7:{callback=this.$wampClientCore.get_heartbeatCallback();if(!ss.staticEquals(callback,null)){callback(data);}
+else{}
+break;}
+case 8:{var switchDataSec=ss.unbox(ss.cast(list[1],ss.Int32));var request=ss.unbox(ss.cast(list[2],ss.Int32));switch(switchDataSec){case 32:{callback=this.$wampClientCore.get_subscribeCallback().get_item(request);if(!ss.staticEquals(callback,null)){callback(data);}
+else{}
+break;}
+case 34:{callback=this.$wampClientCore.get_unsubscribeCallback().get_item(request);if(!ss.staticEquals(callback,null)){callback(data);}
+else{}
+break;}
+case 16:{callback=this.$wampClientCore.get_publishCallback().get_item(request);if(!ss.staticEquals(callback,null)){callback(data);}
+else{}
+break;}
+case 68:{callback=this.$wampClientCore.get_invocationCallback().get_item(request);if(!ss.staticEquals(callback,null)){callback(data);}
+else{}
+break;}
+case 48:{callback=this.$wampClientCore.get_callCallback().get_item(request);if(!ss.staticEquals(callback,null)){callback(data);}
+else{}
+break;}
+case 64:{callback=this.$wampClientCore.get_registerCallback().get_item(request);if(!ss.staticEquals(callback,null)){callback(data);}
+else{}
+break;}
+case 66:{callback=this.$wampClientCore.get_unregisterCallback().get_item(request);if(!ss.staticEquals(callback,null)){callback(data);}
+else{}
+break;}
+default:{return;}}
+break;}
+case 17:{callback=this.$wampClientCore.get_publishCallback().get_item(ss.unbox(ss.cast(list[1],ss.Int32)));if(!ss.staticEquals(callback,null)){callback(data);}
+else{}
+break;}
+case 33:{var reqId=ss.unbox(ss.cast(list[1],ss.Int32));var subId=ss.unbox(ss.cast(list[2],ss.Int32));callback=this.$wampClientCore.get_subscribeCallback().get_item(reqId);if(!ss.staticEquals(callback,null)){this.$wampClientCore.get_eventCallback().set_item(subId,this.$wampClientCore.get_eventCallback().get_item(reqId));this.$wampClientCore.deleteEventCallback(reqId);callback(data);}
+else{}
+break;}
+case 35:{callback=this.$wampClientCore.get_unsubscribeCallback().get_item(ss.unbox(ss.cast(list[1],ss.Int32)));if(!ss.staticEquals(callback,null)){this.$wampClientCore.deleteEventCallback(this.$subscription_id_list.get_item(ss.unbox(ss.cast(list[1],ss.Int32))));callback(data);}
+else{}
+break;}
+case 36:{callback=this.$wampClientCore.get_eventCallback().get_item(ss.unbox(ss.cast(list[1],ss.Int32)));if(!ss.staticEquals(callback,null)){callback(data);}
+else{}
+break;}
+case 50:{callback=this.$wampClientCore.get_callCallback().get_item(ss.unbox(ss.cast(list[1],ss.Int32)));if(!ss.staticEquals(callback,null)){callback(data);}
+else{}
+break;}
+case 65:{callback=this.$wampClientCore.get_registerCallback().get_item(ss.unbox(ss.cast(list[1],ss.Int32)));if(!ss.staticEquals(callback,null)){callback(data);}
+else{}
+break;}
+case 67:{callback=this.$wampClientCore.get_unregisterCallback().get_item(ss.unbox(ss.cast(list[1],ss.Int32)));if(!ss.staticEquals(callback,null)){callback(data);}
+else{}
+break;}
+case 68:{callback=this.$wampClientCore.get_invocationCallback().get_item(ss.unbox(ss.cast(list[1],ss.Int32)));if(!ss.staticEquals(callback,null)){callback(data);}
+else{}
+break;}
+case 69:{callback=this.$wampClientCore.get_interruptCallback().get_item(ss.unbox(ss.cast(list[1],ss.Int32)));if(!ss.staticEquals(callback,null)){callback(data);}
+else{}
+break;}
+default:{break;}}},isConnecting:function(){return this.$on_open_flag;}});ss.initClass($Kadecot_WampClientCore,$asm,{get_openCallback:function(){return this.$1$openCallbackField;},set_openCallback:function(value){this.$1$openCallbackField=value;},get_closeCallback:function(){return this.$1$closeCallbackField;},set_closeCallback:function(value){this.$1$closeCallbackField=value;},get_heartbeatCallback:function(){return this.$1$heartbeatCallbackField;},set_heartbeatCallback:function(value){this.$1$heartbeatCallbackField=value;},get_helloCallback:function(){return this.$1$helloCallbackField;},set_helloCallback:function(value){this.$1$helloCallbackField=value;},get_authenticateCallback:function(){return this.$1$authenticateCallbackField;},set_authenticateCallback:function(value){this.$1$authenticateCallbackField=value;},get_goodbyeCallback:function(){return this.$1$goodbyeCallbackField;},set_goodbyeCallback:function(value){this.$1$goodbyeCallbackField=value;},get_publishCallback:function(){return this.$1$publishCallbackField;},set_publishCallback:function(value){this.$1$publishCallbackField=value;},get_subscribeCallback:function(){return this.$1$subscribeCallbackField;},set_subscribeCallback:function(value){this.$1$subscribeCallbackField=value;},get_unsubscribeCallback:function(){return this.$1$unsubscribeCallbackField;},set_unsubscribeCallback:function(value){this.$1$unsubscribeCallbackField=value;},get_callCallback:function(){return this.$1$callCallbackField;},set_callCallback:function(value){this.$1$callCallbackField=value;},get_cancelCallback:function(){return this.$1$cancelCallbackField;},set_cancelCallback:function(value){this.$1$cancelCallbackField=value;},get_registerCallback:function(){return this.$1$registerCallbackField;},set_registerCallback:function(value){this.$1$registerCallbackField=value;},get_unregisterCallback:function(){return this.$1$unregisterCallbackField;},set_unregisterCallback:function(value){this.$1$unregisterCallbackField=value;},get_eventCallback:function(){return this.$1$eventCallbackField;},set_eventCallback:function(value){this.$1$eventCallbackField=value;},get_invocationCallback:function(){return this.$1$invocationCallbackField;},set_invocationCallback:function(value){this.$1$invocationCallbackField=value;},get_interruptCallback:function(){return this.$1$interruptCallbackField;},set_interruptCallback:function(value){this.$1$interruptCallbackField=value;},deleteOpenCallback:function(){this.set_openCallback(null);},deleteCloseCallback:function(){this.set_closeCallback(null);},deleteHeartbeatCallback:function(){this.set_heartbeatCallback(null);},deleteHelloCallback:function(){this.set_helloCallback(null);},deleteAuthenticateCallback:function(){this.set_authenticateCallback(null);},deleteGoodbyeCallback:function(){this.set_goodbyeCallback(null);},deletePublishCallback:function(request){this.get_publishCallback().set_item(request,null);},deleteSubscribeCallback:function(request){this.get_subscribeCallback().set_item(request,null);},deleteUnsubscribeCallback:function(request){this.get_unsubscribeCallback().set_item(request,null);},deleteCallCallback:function(request){this.get_callCallback().set_item(request,null);},deleteCancelCallback:function(request){this.get_cancelCallback().set_item(request,null);},deleteRegisterCallback:function(request){this.get_registerCallback().set_item(request,null);},deleteUnregisterCallback:function(request){this.get_unregisterCallback().set_item(request,null);},deleteEventCallback:function(request){this.get_eventCallback().set_item(request,null);},deleteInvocationCallback:function(request){this.get_invocationCallback().set_item(request,null);},deleteInterruptCallback:function(request){this.get_interruptCallback().set_item(request,null);}});ss.initClass($Kadecot_WampDeserializer,$asm,{});ss.initClass($Kadecot_WampSerializer,$asm,{});ss.setMetadata($ctrlui_EPC_FLAG,{enumFlags:true});(function(){$control_UIEventNames.currentNodeChange='currentnode.change';$control_UIEventNames.loadingShow='loading.show';$control_UIEventNames.loadingHide='loading.hide';$control_UIEventNames.searchStart='search.start';$control_UIEventNames.searchEnd='search.end';$control_UIEventNames.searchError='search.error';$control_UIEventNames.propertyWriteStart='propertywrite.start';$control_UIEventNames.propertyWriteEnd='propertywrite.end';})();(function(){$ctrlui_$TokenInfo.$separetor='[=,:\\(\\)\\[\\]ï½]';$ctrlui_$TokenInfo.$hexValue='^0x[0-9A-Fa-f]+';$ctrlui_$TokenInfo.$numeric='^[\\-\\+]?[\\.]?[0-9]+[0-9,\\.]*';})();(function(){$ctrlui_ValueRange.$_ParsedText=new(ss.makeGenericType(ss.Dictionary$2,[String,$ctrlui_$ValueSet]))();})();(function(){$ctrlui_DeviceController.getClassInfo=null;})();(function(){$ctrlui_T_ECN_EOJ.x1_PROFILE=14;$ctrlui_T_ECN_EOJ.x2_NODE_PROFILE=240;})();(function(){$CtrlUI.page=null;$CtrlUI.info=null;$CtrlUI.$page=null;$CtrlUI.$m_ClassGroups=null;$CtrlUI.$m_ProfileClassInfo=null;$CtrlUI.$m_Classes=null;})();})();
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/action-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/action-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/action-black.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M9,5v3l5-4L9,0v3c0,0-5,0-5,7C6,5,9,5,9,5z M11,12H2V5h1l2-2H0v11h13V7l-2,2V12z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/action-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/action-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/action-white.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M9,5v3l5-4L9,0v3c0,0-5,0-5,7C6,5,9,5,9,5z M11,12H2V5h1l2-2H0v11h13V7l-2,2V12z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/alert-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/alert-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/alert-black.svg	(revision 101)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M7,0L0,12h14L7,0z M7,11c-0.553,0-1-0.447-1-1s0.447-1,1-1c0.553,0,1,0.447,1,1S7.553,11,7,11z M7,8C6.447,8,6,7.553,6,7V5
+	c0-0.553,0.447-1,1-1c0.553,0,1,0.447,1,1v2C8,7.553,7.553,8,7,8z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/alert-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/alert-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/alert-white.svg	(revision 101)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M7,0L0,12h14L7,0z M7,11c-0.553,0-1-0.447-1-1s0.447-1,1-1c0.553,0,1,0.447,1,1S7.553,11,7,11z M7,8
+	C6.447,8,6,7.553,6,7V5c0-0.553,0.447-1,1-1c0.553,0,1,0.447,1,1v2C8,7.553,7.553,8,7,8z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-d-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-d-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-d-black.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="9,7 9,0 5,0 5,7 0,7 7,14 14,7 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-d-l-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-d-l-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-d-l-black.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="14,3 11,0 3.5,7.5 0,4 0,14 10,14 6.5,10.5 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-d-l-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-d-l-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-d-l-white.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="14,3 11,0 3.5,7.5 0,4 0,14 10,14 6.5,10.5 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-d-r-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-d-r-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-d-r-black.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="10.5,7.5 3,0 0,3 7.5,10.5 4,14 14,14 14,4 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-d-r-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-d-r-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-d-r-white.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="10.5,7.5 3,0 0,3 7.5,10.5 4,14 14,14 14,4 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-d-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-d-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-d-white.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="9,7 9,0 5,0 5,7 0,7 7,14 14,7 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-l-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-l-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-l-black.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="7,5 7,0 0,7 7,14 7,9 14,9 14,5 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-l-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-l-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-l-white.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="7,5 7,0 0,7 7,14 7,9 14,9 14,5 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-r-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-r-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-r-black.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="14,7 7,0 7,5 0,5 0,9 7,9 7,14 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-r-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-r-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-r-white.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="14,7 7,0 7,5 0,5 0,9 7,9 7,14 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-u-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-u-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-u-black.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="7,0 0,7 5,7 5,14 9,14 9,7 14,7 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-u-l-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-u-l-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-u-l-black.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="14,11 6.5,3.5 10,0 0,0 0,10 3.5,6.5 11,14 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-u-l-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-u-l-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-u-l-white.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="14,11 6.5,3.5 10,0 0,0 0,10 3.5,6.5 11,14 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-u-r-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-u-r-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-u-r-black.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="14,0 4,0 7.5,3.5 0,11 3,14 10.5,6.5 14,10 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-u-r-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-u-r-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-u-r-white.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="14,0 4,0 7.5,3.5 0,11 3,14 10.5,6.5 14,10 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-u-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-u-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/arrow-u-white.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="7,0 0,7 5,7 5,14 9,14 9,7 14,7 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/audio-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/audio-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/audio-black.svg	(revision 101)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14.018px" height="14px" viewBox="0 0 14.018 14" style="enable-background:new 0 0 14.018 14;" xml:space="preserve">
+<path d="M1,4C0.447,4,0,4.447,0,5v4c0,0.553,0.447,1,1,1h1l4,4V0L2,4H1z M10.346,7c0-1.699-1.042-3.154-2.546-3.867L6.982,4.68
+	C7.885,5.107,8.51,5.98,8.51,7S7.885,8.893,6.982,9.32L7.8,10.867C9.304,10.154,10.346,8.699,10.346,7z M9.447,0.017L8.618,1.586
+	C10.723,2.584,12.182,4.621,12.182,7s-1.459,4.416-3.563,5.414l0.829,1.569c2.707-1.283,4.57-3.925,4.57-6.983
+	S12.154,1.3,9.447,0.017z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/audio-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/audio-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/audio-white.svg	(revision 101)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14.018px" height="14px" viewBox="0 0 14.018 14" style="enable-background:new 0 0 14.018 14;" xml:space="preserve">
+<path fill="#FFF" d="M1,4C0.447,4,0,4.447,0,5v4c0,0.553,0.447,1,1,1h1l4,4V0L2,4H1z M10.346,7c0-1.699-1.042-3.154-2.546-3.867L6.982,4.68
+	C7.885,5.107,8.51,5.98,8.51,7S7.885,8.893,6.982,9.32L7.8,10.867C9.304,10.154,10.346,8.699,10.346,7z M9.447,0.017L8.618,1.586
+	C10.723,2.584,12.182,4.621,12.182,7s-1.459,4.416-3.563,5.414l0.829,1.569c2.707-1.283,4.57-3.925,4.57-6.983
+	S12.154,1.3,9.447,0.017z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/back-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/back-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/back-black.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M5,3V0L1,4l4,4V5c0,0,6,0,6,3s-5,4-5,4v2c0,0,7-1,7-6C13,4,8,3,5,3z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/back-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/back-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/back-white.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M5,3V0L1,4l4,4V5c0,0,6,0,6,3s-5,4-5,4v2c0,0,7-1,7-6C13,4,8,3,5,3z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/bars-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/bars-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/bars-black.svg	(revision 101)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M1,4h12c0.553,0,1-0.447,1-1s-0.447-1-1-1H1C0.447,2,0,2.447,0,3S0.447,4,1,4z M13,6H1C0.447,6,0,6.447,0,7
+	c0,0.553,0.447,1,1,1h12c0.553,0,1-0.447,1-1C14,6.447,13.553,6,13,6z M13,10H1c-0.553,0-1,0.447-1,1s0.447,1,1,1h12
+	c0.553,0,1-0.447,1-1S13.553,10,13,10z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/bars-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/bars-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/bars-white.svg	(revision 101)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M1,4h12c0.553,0,1-0.447,1-1s-0.447-1-1-1H1C0.447,2,0,2.447,0,3S0.447,4,1,4z M13,6H1
+	C0.447,6,0,6.447,0,7c0,0.553,0.447,1,1,1h12c0.553,0,1-0.447,1-1C14,6.447,13.553,6,13,6z M13,10H1c-0.553,0-1,0.447-1,1
+	s0.447,1,1,1h12c0.553,0,1-0.447,1-1S13.553,10,13,10z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/bullets-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/bullets-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/bullets-black.svg	(revision 101)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M5,4h8c0.553,0,1-0.447,1-1s-0.447-1-1-1H5C4.447,2,4,2.447,4,3S4.447,4,5,4z M13,6H5C4.447,6,4,6.447,4,7
+	c0,0.553,0.447,1,1,1h8c0.553,0,1-0.447,1-1C14,6.447,13.553,6,13,6z M13,10H5c-0.553,0-1,0.447-1,1s0.447,1,1,1h8
+	c0.553,0,1-0.447,1-1S13.553,10,13,10z M1,2C0.447,2,0,2.447,0,3s0.447,1,1,1s1-0.447,1-1S1.553,2,1,2z M1,6C0.447,6,0,6.447,0,7
+	c0,0.553,0.447,1,1,1s1-0.447,1-1C2,6.447,1.553,6,1,6z M1,10c-0.553,0-1,0.447-1,1s0.447,1,1,1s1-0.447,1-1S1.553,10,1,10z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/bullets-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/bullets-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/bullets-white.svg	(revision 101)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M5,4h8c0.553,0,1-0.447,1-1s-0.447-1-1-1H5C4.447,2,4,2.447,4,3S4.447,4,5,4z M13,6H5
+	C4.447,6,4,6.447,4,7c0,0.553,0.447,1,1,1h8c0.553,0,1-0.447,1-1C14,6.447,13.553,6,13,6z M13,10H5c-0.553,0-1,0.447-1,1
+	s0.447,1,1,1h8c0.553,0,1-0.447,1-1S13.553,10,13,10z M1,2C0.447,2,0,2.447,0,3s0.447,1,1,1s1-0.447,1-1S1.553,2,1,2z M1,6
+	C0.447,6,0,6.447,0,7c0,0.553,0.447,1,1,1s1-0.447,1-1C2,6.447,1.553,6,1,6z M1,10c-0.553,0-1,0.447-1,1s0.447,1,1,1s1-0.447,1-1
+	S1.553,10,1,10z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/calendar-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/calendar-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/calendar-black.svg	(revision 101)
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M0,8h2V6H0V8z M3,8h2V6H3V8z M6,8h2V6H6V8z M9,8h2V6H9V8z M12,8h2V6h-2V8z M0,11h2V9H0V11z M3,11h2V9H3V11z M6,11h2V9H6V11z
+	 M9,11h2V9H9V11z M12,11h2V9h-2V11z M0,14h2v-2H0V14z M3,14h2v-2H3V14z M6,14h2v-2H6V14z M9,14h2v-2H9V14z M12,1
+	c0-0.553-0.447-1-1-1s-1,0.447-1,1H4c0-0.553-0.447-1-1-1S2,0.447,2,1H0v4h14V1H12z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/calendar-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/calendar-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/calendar-white.svg	(revision 101)
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M0,8h2V6H0V8z M3,8h2V6H3V8z M6,8h2V6H6V8z M9,8h2V6H9V8z M12,8h2V6h-2V8z M0,11h2V9H0V11z M3,11h2V9H3V11z M6,11h2V9H6V11z
+	 M9,11h2V9H9V11z M12,11h2V9h-2V11z M0,14h2v-2H0V14z M3,14h2v-2H3V14z M6,14h2v-2H6V14z M9,14h2v-2H9V14z M12,1
+	c0-0.553-0.447-1-1-1s-1,0.447-1,1H4c0-0.553-0.447-1-1-1S2,0.447,2,1H0v4h14V1H12z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/camera-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/camera-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/camera-black.svg	(revision 101)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M12,2.5H9.908c-0.206-0.581-0.756-1-1.408-1h-3c-0.652,0-1.202,0.419-1.408,1H2c-1.104,0-2,0.896-2,2v6c0,1.104,0.896,2,2,2
+	h10c1.104,0,2-0.896,2-2v-6C14,3.396,13.104,2.5,12,2.5z M7,10.5c-1.657,0-3-1.344-3-3c0-1.657,1.343-3,3-3s3,1.343,3,3
+	C10,9.156,8.657,10.5,7,10.5z M7,5.5c-1.104,0-2,0.896-2,2c0,1.104,0.896,2,2,2c1.104,0,2-0.896,2-2C9,6.396,8.104,5.5,7,5.5z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/camera-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/camera-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/camera-white.svg	(revision 101)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M12,2.5H9.908c-0.206-0.581-0.756-1-1.408-1h-3c-0.652,0-1.202,0.419-1.408,1H2c-1.104,0-2,0.896-2,2
+	v6c0,1.104,0.896,2,2,2h10c1.104,0,2-0.896,2-2v-6C14,3.396,13.104,2.5,12,2.5z M7,10.5c-1.657,0-3-1.344-3-3c0-1.657,1.343-3,3-3
+	s3,1.343,3,3C10,9.156,8.657,10.5,7,10.5z M7,5.5c-1.104,0-2,0.896-2,2c0,1.104,0.896,2,2,2c1.104,0,2-0.896,2-2
+	C9,6.396,8.104,5.5,7,5.5z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-d-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-d-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-d-black.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="11.949,3.404 7,8.354 2.05,3.404 -0.071,5.525 7,12.596 14.07,5.525 "/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-d-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-d-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-d-white.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon style="fill:#FFFFFF;" points="11.949,3.404 7,8.354 2.05,3.404 -0.071,5.525 7,12.596 14.07,5.525 "/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-l-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-l-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-l-black.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="10.596,11.949 5.646,7 10.596,2.05 8.475,-0.071 1.404,7 8.475,14.07 "/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-l-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-l-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-l-white.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon style="fill:#FFFFFF;" points="10.596,11.949 5.646,7 10.596,2.05 8.475,-0.071 1.404,7 8.475,14.07 "/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-r-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-r-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-r-black.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="3.404,2.051 8.354,7 3.404,11.95 5.525,14.07 12.596,7 5.525,-0.071 "/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-r-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-r-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-r-white.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon style="fill:#FFFFFF;" points="3.404,2.051 8.354,7 3.404,11.95 5.525,14.07 12.596,7 5.525,-0.071 "/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-u-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-u-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-u-black.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="2.051,10.596 7,5.646 11.95,10.596 14.07,8.475 7,1.404 -0.071,8.475 "/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-u-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-u-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/carat-u-white.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon style="fill:#FFFFFF;" points="2.051,10.596 7,5.646 11.95,10.596 14.07,8.475 7,1.404 -0.071,8.475 "/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/check-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/check-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/check-black.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="14,4 11,1 5.003,6.997 3,5 0,8 4.966,13 4.983,12.982 5,13 "/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/check-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/check-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/check-white.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon style="fill:#FFFFFF;" points="14,4 11,1 5.003,6.997 3,5 0,8 4.966,13 4.983,12.982 5,13 "/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/clock-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/clock-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/clock-black.svg	(revision 101)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M7,0C3.134,0,0,3.134,0,7s3.134,7,7,7s7-3.134,7-7S10.866,0,7,0z M7,12c-2.762,0-5-2.238-5-5s2.238-5,5-5s5,2.238,5,5
+	S9.762,12,7,12z M9,6H8V4c0-0.553-0.447-1-1-1S6,3.447,6,4v3c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1S9.553,6,9,6z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/clock-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/clock-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/clock-white.svg	(revision 101)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M7,0C3.134,0,0,3.134,0,7s3.134,7,7,7s7-3.134,7-7S10.866,0,7,0z M7,12c-2.762,0-5-2.238-5-5s2.238-5,5-5s5,2.238,5,5
+	S9.762,12,7,12z M9,6H8V4c0-0.553-0.447-1-1-1S6,3.447,6,4v3c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1S9.553,6,9,6z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/cloud-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/cloud-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/cloud-black.svg	(revision 101)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M14,9.5c0-0.793-0.465-1.473-1.134-1.795C12.949,7.484,13,7.249,13,7c0-1.104-0.896-2-2-2c-0.158,0-0.311,0.023-0.457,0.058
+	C9.816,3.549,8.286,2.5,6.5,2.5c-2.33,0-4.224,1.777-4.454,4.046C0.883,6.76,0,7.773,0,9c0,1.381,1.119,2.5,2.5,2.5h10v-0.07
+	C13.361,11.206,14,10.432,14,9.5z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/cloud-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/cloud-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/cloud-white.svg	(revision 101)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M14,9.5c0-0.793-0.465-1.473-1.134-1.795C12.949,7.484,13,7.249,13,7c0-1.104-0.896-2-2-2
+	c-0.158,0-0.311,0.023-0.457,0.058C9.816,3.549,8.286,2.5,6.5,2.5c-2.33,0-4.224,1.777-4.454,4.046C0.883,6.76,0,7.773,0,9
+	c0,1.381,1.119,2.5,2.5,2.5h10v-0.07C13.361,11.206,14,10.432,14,9.5z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/comment-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/comment-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/comment-black.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M12,0H2C0.896,0,0,0.896,0,2v7c0,1.104,0.896,2,2,2h1v3l3-3h6c1.104,0,2-0.896,2-2V2C14,0.896,13.104,0,12,0z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/comment-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/comment-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/comment-white.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M12,0H2C0.896,0,0,0.896,0,2v7c0,1.104,0.896,2,2,2h1v3l3-3h6c1.104,0,2-0.896,2-2V2C14,0.896,13.104,0,12,0z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/delete-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/delete-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/delete-black.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="14,3 11,0 7,4 3,0 0,3 4,7 0,11 3,14 7,10 11,14 14,11 10,7 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/delete-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/delete-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/delete-white.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="14,3 11,0 7,4 3,0 0,3 4,7 0,11 3,14 7,10 11,14 14,11 10,7 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/edit-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/edit-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/edit-black.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M1,10l-1,4l4-1l7-7L8,3L1,10z M11,0L9,2l3,3l2-2L11,0z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/edit-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/edit-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/edit-white.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M1,10l-1,4l4-1l7-7L8,3L1,10z M11,0L9,2l3,3l2-2L11,0z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/eye-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/eye-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/eye-black.svg	(revision 101)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M7,2C3,2,0,7,0,7s3,5,7,5s7-5,7-5S11,2,7,2z M7,10c-1.657,0-3-1.344-3-3c0-1.657,1.343-3,3-3s3,1.343,3,3
+	C10,8.656,8.657,10,7,10z M7,6C6.448,6,6,6.447,6,7c0,0.553,0.448,1,1,1s1-0.447,1-1C8,6.447,7.552,6,7,6z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/eye-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/eye-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/eye-white.svg	(revision 101)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M7,2C3,2,0,7,0,7s3,5,7,5s7-5,7-5S11,2,7,2z M7,10c-1.657,0-3-1.344-3-3c0-1.657,1.343-3,3-3
+	s3,1.343,3,3C10,8.656,8.657,10,7,10z M7,6C6.448,6,6,6.447,6,7c0,0.553,0.448,1,1,1s1-0.447,1-1C8,6.447,7.552,6,7,6z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/forbidden-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/forbidden-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/forbidden-black.svg	(revision 101)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M12.601,11.187C13.476,10.018,14,8.572,14,7c0-3.866-3.134-7-7-7C5.428,0,3.982,0.524,2.813,1.399L2.757,1.343L2.053,2.048
+	L2.048,2.053L1.343,2.758l0.056,0.056C0.524,3.982,0,5.428,0,7c0,3.866,3.134,7,7,7c1.572,0,3.018-0.524,4.187-1.399l0.056,0.057
+	l0.705-0.705l0.005-0.005l0.705-0.705L12.601,11.187z M7,2c2.761,0,5,2.238,5,5c0,1.019-0.308,1.964-0.832,2.754L4.246,2.832
+	C5.036,2.308,5.981,2,7,2z M7,12c-2.761,0-5-2.238-5-5c0-1.019,0.308-1.964,0.832-2.754l6.922,6.922C8.964,11.692,8.019,12,7,12z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/forbidden-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/forbidden-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/forbidden-white.svg	(revision 101)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M12.601,11.187C13.476,10.018,14,8.572,14,7c0-3.866-3.134-7-7-7C5.428,0,3.982,0.524,2.813,1.399L2.757,1.343L2.053,2.048
+	L2.048,2.053L1.343,2.758l0.056,0.056C0.524,3.982,0,5.428,0,7c0,3.866,3.134,7,7,7c1.572,0,3.018-0.524,4.187-1.399l0.056,0.057
+	l0.705-0.705l0.005-0.005l0.705-0.705L12.601,11.187z M7,2c2.761,0,5,2.238,5,5c0,1.019-0.308,1.964-0.832,2.754L4.246,2.832
+	C5.036,2.308,5.981,2,7,2z M7,12c-2.761,0-5-2.238-5-5c0-1.019,0.308-1.964,0.832-2.754l6.922,6.922C8.964,11.692,8.019,12,7,12z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/forward-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/forward-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/forward-black.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M13,4L9,0v3C6,3,1,4,1,8c0,5,7,6,7,6v-2c0,0-5-1-5-4s6-3,6-3v3L13,4z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/forward-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/forward-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/forward-white.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M13,4L9,0v3C6,3,1,4,1,8c0,5,7,6,7,6v-2c0,0-5-1-5-4s6-3,6-3v3L13,4z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/gear-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/gear-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/gear-black.svg	(revision 101)
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M13.621,5.904l-1.036-0.259c-0.168-0.042-0.303-0.168-0.355-0.332c-0.092-0.284-0.205-0.559-0.339-0.82
+	c-0.079-0.153-0.073-0.337,0.017-0.486l0.549-0.915c0.118-0.196,0.088-0.448-0.075-0.61l-0.862-0.863
+	c-0.162-0.163-0.414-0.193-0.611-0.075l-0.916,0.55C9.844,2.182,9.659,2.188,9.506,2.109C9.244,1.975,8.97,1.861,8.686,1.77
+	c-0.165-0.052-0.29-0.187-0.332-0.354L8.095,0.379C8.039,0.156,7.839,0,7.609,0H6.391c-0.229,0-0.43,0.156-0.485,0.379L5.646,1.415
+	C5.604,1.582,5.479,1.718,5.313,1.77c-0.284,0.092-0.559,0.206-0.82,0.34C4.339,2.188,4.155,2.182,4.007,2.093L3.092,1.544
+	c-0.196-0.118-0.448-0.087-0.61,0.075L1.619,2.481C1.457,2.644,1.426,2.896,1.544,3.093l0.549,0.914
+	c0.089,0.148,0.095,0.332,0.017,0.486C1.975,4.755,1.861,5.029,1.77,5.314c-0.053,0.164-0.188,0.29-0.354,0.332L0.379,5.905
+	C0.156,5.961,0,6.161,0,6.391v1.219c0,0.229,0.156,0.43,0.379,0.485l1.036,0.26C1.582,8.396,1.717,8.521,1.77,8.687
+	c0.092,0.284,0.205,0.559,0.34,0.82C2.188,9.66,2.182,9.844,2.093,9.993l-0.549,0.915c-0.118,0.195-0.087,0.448,0.075,0.61
+	l0.862,0.862c0.162,0.163,0.414,0.193,0.61,0.075l0.915-0.549c0.148-0.089,0.332-0.095,0.486-0.017
+	c0.262,0.135,0.536,0.248,0.82,0.34c0.165,0.053,0.291,0.187,0.332,0.354l0.259,1.036C5.96,13.844,6.16,14,6.39,14h1.22
+	c0.229,0,0.43-0.156,0.485-0.379l0.259-1.036c0.042-0.167,0.168-0.302,0.333-0.354c0.284-0.092,0.559-0.205,0.82-0.34
+	c0.154-0.078,0.338-0.072,0.486,0.017l0.914,0.549c0.197,0.118,0.449,0.088,0.611-0.074l0.862-0.863
+	c0.163-0.162,0.193-0.415,0.075-0.611l-0.549-0.915c-0.089-0.148-0.096-0.332-0.017-0.485c0.134-0.263,0.248-0.536,0.339-0.82
+	c0.053-0.165,0.188-0.291,0.355-0.333l1.036-0.259C13.844,8.039,14,7.839,14,7.609V6.39C14,6.16,13.844,5.96,13.621,5.904z M7,10
+	c-1.657,0-3-1.343-3-3s1.343-3,3-3s3,1.343,3,3S8.657,10,7,10z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/gear-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/gear-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/gear-white.svg	(revision 101)
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M13.621,5.904l-1.036-0.259c-0.168-0.042-0.303-0.168-0.355-0.332c-0.092-0.284-0.205-0.559-0.339-0.82
+	c-0.079-0.153-0.073-0.337,0.017-0.486l0.549-0.915c0.118-0.196,0.088-0.448-0.075-0.61l-0.862-0.863
+	c-0.162-0.163-0.414-0.193-0.611-0.075l-0.916,0.55C9.844,2.182,9.659,2.188,9.506,2.109C9.244,1.975,8.97,1.861,8.686,1.77
+	c-0.165-0.052-0.29-0.187-0.332-0.354L8.095,0.379C8.039,0.156,7.839,0,7.609,0H6.391c-0.229,0-0.43,0.156-0.485,0.379L5.646,1.415
+	C5.604,1.582,5.479,1.718,5.313,1.77c-0.284,0.092-0.559,0.206-0.82,0.34C4.339,2.188,4.155,2.182,4.007,2.093L3.092,1.544
+	c-0.196-0.118-0.448-0.087-0.61,0.075L1.619,2.481C1.457,2.644,1.426,2.896,1.544,3.093l0.549,0.914
+	c0.089,0.148,0.095,0.332,0.017,0.486C1.975,4.755,1.861,5.029,1.77,5.314c-0.053,0.164-0.188,0.29-0.354,0.332L0.379,5.905
+	C0.156,5.961,0,6.161,0,6.391v1.219c0,0.229,0.156,0.43,0.379,0.485l1.036,0.26C1.582,8.396,1.717,8.521,1.77,8.687
+	c0.092,0.284,0.205,0.559,0.34,0.82C2.188,9.66,2.182,9.844,2.093,9.993l-0.549,0.915c-0.118,0.195-0.087,0.448,0.075,0.61
+	l0.862,0.862c0.162,0.163,0.414,0.193,0.61,0.075l0.915-0.549c0.148-0.089,0.332-0.095,0.486-0.017
+	c0.262,0.135,0.536,0.248,0.82,0.34c0.165,0.053,0.291,0.187,0.332,0.354l0.259,1.036C5.96,13.844,6.16,14,6.39,14h1.22
+	c0.229,0,0.43-0.156,0.485-0.379l0.259-1.036c0.042-0.167,0.168-0.302,0.333-0.354c0.284-0.092,0.559-0.205,0.82-0.34
+	c0.154-0.078,0.338-0.072,0.486,0.017l0.914,0.549c0.197,0.118,0.449,0.088,0.611-0.074l0.862-0.863
+	c0.163-0.162,0.193-0.415,0.075-0.611l-0.549-0.915c-0.089-0.148-0.096-0.332-0.017-0.485c0.134-0.263,0.248-0.536,0.339-0.82
+	c0.053-0.165,0.188-0.291,0.355-0.333l1.036-0.259C13.844,8.039,14,7.839,14,7.609V6.39C14,6.16,13.844,5.96,13.621,5.904z M7,10
+	c-1.657,0-3-1.343-3-3s1.343-3,3-3s3,1.343,3,3S8.657,10,7,10z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/grid-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/grid-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/grid-black.svg	(revision 101)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M3,0H1C0.447,0,0,0.447,0,1v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V1C4,0.447,3.553,0,3,0z M8,0H6
+	C5.447,0,5,0.447,5,1v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V1C9,0.447,8.553,0,8,0z M13,0h-2c-0.553,0-1,0.447-1,1v2
+	c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V1C14,0.447,13.553,0,13,0z M3,5H1C0.447,5,0,5.447,0,6v2c0,0.553,0.447,1,1,1h2
+	c0.553,0,1-0.447,1-1V6C4,5.447,3.553,5,3,5z M8,5H6C5.447,5,5,5.447,5,6v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V6
+	C9,5.447,8.553,5,8,5z M13,5h-2c-0.553,0-1,0.447-1,1v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V6C14,5.447,13.553,5,13,5z M3,10
+	H1c-0.553,0-1,0.447-1,1v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1v-2C4,10.447,3.553,10,3,10z M8,10H6c-0.553,0-1,0.447-1,1v2
+	c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1v-2C9,10.447,8.553,10,8,10z M13,10h-2c-0.553,0-1,0.447-1,1v2c0,0.553,0.447,1,1,1h2
+	c0.553,0,1-0.447,1-1v-2C14,10.447,13.553,10,13,10z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/grid-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/grid-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/grid-white.svg	(revision 101)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M3,0H1C0.447,0,0,0.447,0,1v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V1C4,0.447,3.553,0,3,0z M8,0H6
+	C5.447,0,5,0.447,5,1v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V1C9,0.447,8.553,0,8,0z M13,0h-2c-0.553,0-1,0.447-1,1v2
+	c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V1C14,0.447,13.553,0,13,0z M3,5H1C0.447,5,0,5.447,0,6v2c0,0.553,0.447,1,1,1h2
+	c0.553,0,1-0.447,1-1V6C4,5.447,3.553,5,3,5z M8,5H6C5.447,5,5,5.447,5,6v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V6
+	C9,5.447,8.553,5,8,5z M13,5h-2c-0.553,0-1,0.447-1,1v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V6C14,5.447,13.553,5,13,5z M3,10
+	H1c-0.553,0-1,0.447-1,1v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1v-2C4,10.447,3.553,10,3,10z M8,10H6c-0.553,0-1,0.447-1,1v2
+	c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1v-2C9,10.447,8.553,10,8,10z M13,10h-2c-0.553,0-1,0.447-1,1v2c0,0.553,0.447,1,1,1h2
+	c0.553,0,1-0.447,1-1v-2C14,10.447,13.553,10,13,10z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/heart-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/heart-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/heart-black.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M7,1.958c-2-3-7-2.128-7,1.872c0,3,4,7,4,7s2.417,2.48,3,3c0.583-0.52,3-3,3-3s4-4,4-7C14-0.169,9-1.042,7,1.958z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/heart-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/heart-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/heart-white.svg	(revision 101)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M7,1.872c-2-3-7-2-7,2c0,3,4,7,4,7s2.417,2.479,3,3c0.583-0.521,3-3,3-3s4-4,4-7
+	C14-0.128,9-1.128,7,1.872z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/home-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/home-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/home-black.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="7,0 0,7 2,7 2,14 5,14 5,9 9,9 9,14 12,14 12,7 14,7 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/home-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/home-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/home-white.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="7,0 0,7 2,7 2,14 5,14 5,9 9,9 9,14 12,14 12,7 14,7 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/info-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/info-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/info-black.svg	(revision 101)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M7,0C3.134,0,0,3.134,0,7s3.134,7,7,7s7-3.134,7-7S10.866,0,7,0z M7,2c0.552,0,1,0.447,1,1S7.552,4,7,4S6,3.553,6,3
+	S6.448,2,7,2z M9,11H5v-1h1V6H5V5h3v5h1V11z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/info-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/info-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/info-white.svg	(revision 101)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M7,0C3.134,0,0,3.134,0,7s3.134,7,7,7s7-3.134,7-7S10.866,0,7,0z M7,2c0.552,0,1,0.447,1,1S7.552,4,7,4S6,3.553,6,3
+	S6.448,2,7,2z M9,11H5v-1h1V6H5V5h3v5h1V11z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/location-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/location-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/location-black.svg	(revision 101)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M7,0C4.791,0,3,1.791,3,4c0,2,4,10,4,10s4-8,4-10C11,1.791,9.209,0,7,0z M7,6C5.896,6,5,5.104,5,4s0.896-2,2-2
+	c1.104,0,2,0.896,2,2S8.104,6,7,6z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/location-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/location-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/location-white.svg	(revision 101)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M7,0C4.791,0,3,1.791,3,4c0,2,4,10,4,10s4-8,4-10C11,1.791,9.209,0,7,0z M7,6C5.896,6,5,5.104,5,4
+	s0.896-2,2-2c1.104,0,2,0.896,2,2S8.104,6,7,6z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/lock-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/lock-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/lock-black.svg	(revision 101)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M12,6V5c0-2.762-2.238-5-5-5C4.239,0,2,2.238,2,5v1H1v8h12V6H12z M7.5,9.848V12h-1V9.848C6.207,9.673,6,9.366,6,9
+	c0-0.553,0.448-1,1-1s1,0.447,1,1C8,9.366,7.793,9.673,7.5,9.848z M10,6H4V5c0-1.657,1.343-3,3-3s3,1.343,3,3V6z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/lock-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/lock-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/lock-white.svg	(revision 101)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M12,6V5c0-2.762-2.238-5-5-5C4.239,0,2,2.238,2,5v1H1v8h12V6H12z M7.5,9.848V12h-1V9.848
+	C6.207,9.673,6,9.366,6,9c0-0.553,0.448-1,1-1s1,0.447,1,1C8,9.366,7.793,9.673,7.5,9.848z M10,6H4V5c0-1.657,1.343-3,3-3
+	s3,1.343,3,3V6z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/mail-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/mail-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/mail-black.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M0,3.75V12h14V3.75L7,9L0,3.75z M14,2H0l7,5L14,2z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/mail-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/mail-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/mail-white.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M0,3.75V12h14V3.75L7,9L0,3.75z M14,2H0l7,5L14,2z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/minus-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/minus-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/minus-black.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<rect y="5" width="14" height="4"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/minus-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/minus-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/minus-white.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<rect y="5" style="fill:#FFFFFF;" width="14" height="4"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/navigation-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/navigation-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/navigation-black.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="13,1 0,6 7,7 8,14 "/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/navigation-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/navigation-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/navigation-white.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon style="fill:#FFFFFF;" points="13,1 0,6 7,7 8,14 "/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/phone-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/phone-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/phone-black.svg	(revision 101)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M6.949,9.182C6.175,8.549,5.281,7.697,4.507,6.736C3.963,6.063,3.483,5.355,3.979,4.858l-3.482-3.48
+	c-0.508,0.634-1.633,3.654,3.188,8.598c5.08,5.211,8.356,4.097,8.92,3.511l-3.396-3.399C8.734,10.561,8.123,10.139,6.949,9.182z
+	 M13.83,11.512v-0.004c0,0-2.648-2.646-2.649-2.647c-0.21-0.212-0.546-0.205-0.754,0.002L9.465,9.823l3.402,3.407
+	c0,0,0.963-0.961,0.961-0.961l0.002-0.002C14.053,12.049,14.031,11.713,13.83,11.512z M5.202,3.636V3.634
+	c0.222-0.222,0.2-0.557,0-0.758V2.873c0,0-2.726-2.725-2.727-2.726c-0.21-0.21-0.545-0.205-0.753,0.001L0.761,1.113L4.24,4.595
+	C4.241,4.596,5.202,3.637,5.202,3.636z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/phone-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/phone-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/phone-white.svg	(revision 101)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="-0.01 0.008 14 14" style="enable-background:new -0.01 0.008 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M6.939,9.189C6.165,8.557,5.271,7.705,4.497,6.744C3.953,6.071,3.473,5.363,3.969,4.866l-3.482-3.48
+	C-0.021,2.02-1.146,5.04,3.675,9.984c5.08,5.211,8.356,4.097,8.92,3.511l-3.396-3.4C8.725,10.568,8.113,10.146,6.939,9.189z
+	 M13.82,11.519v-0.004c0,0-2.648-2.646-2.649-2.647c-0.21-0.211-0.546-0.205-0.754,0.002L9.455,9.831l3.403,3.407
+	c0,0,0.962-0.96,0.961-0.961l0.002-0.001C14.043,12.056,14.021,11.721,13.82,11.519z M5.192,3.644V3.642
+	c0.222-0.222,0.2-0.557,0-0.758V2.881c0,0-2.726-2.725-2.727-2.726C2.255-0.055,1.92-0.05,1.712,0.156L0.751,1.121l3.479,3.482
+	C4.231,4.604,5.192,3.645,5.192,3.644z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/plus-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/plus-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/plus-black.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="14,5 9,5 9,0 5,0 5,5 0,5 0,9 5,9 5,14 9,14 9,9 14,9 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/plus-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/plus-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/plus-white.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="14,5 9,5 9,0 5,0 5,5 0,5 0,9 5,9 5,14 9,14 9,9 14,9 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/power-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/power-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/power-black.svg	(revision 101)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M11.243,2.408c-0.392-0.401-1.024-0.401-1.415,0c-0.391,0.401-0.391,1.054,0,1.455C10.584,4.642,11,5.675,11,6.773
+	s-0.416,2.133-1.172,2.91c-1.512,1.558-4.145,1.558-5.656,0C3.416,8.904,3,7.872,3,6.773C3,5.673,3.416,4.64,4.172,3.863
+	c0.39-0.401,0.39-1.054,0-1.455c-0.391-0.401-1.024-0.401-1.415,0C1.624,3.574,1,5.125,1,6.773c0,1.647,0.624,3.199,1.757,4.365
+	c1.134,1.166,2.64,1.809,4.243,1.809c1.604,0,3.109-0.645,4.243-1.811C12.376,9.975,13,8.423,13,6.773
+	C13,5.125,12.376,3.574,11.243,2.408z M7,8.053c0.553,0,1-0.445,1-1v-6c0-0.553-0.447-1-1-1c-0.553,0-1,0.447-1,1v6
+	C6,7.604,6.447,8.053,7,8.053z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/power-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/power-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/power-white.svg	(revision 101)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M11.243,2.408c-0.392-0.401-1.024-0.401-1.415,0c-0.391,0.401-0.391,1.054,0,1.455
+	C10.584,4.642,11,5.675,11,6.773s-0.416,2.133-1.172,2.91c-1.512,1.558-4.145,1.558-5.656,0C3.416,8.904,3,7.872,3,6.773
+	C3,5.673,3.416,4.64,4.172,3.863c0.39-0.401,0.39-1.054,0-1.455c-0.391-0.401-1.024-0.401-1.415,0C1.624,3.574,1,5.125,1,6.773
+	c0,1.647,0.624,3.199,1.757,4.365c1.134,1.166,2.64,1.809,4.243,1.809c1.604,0,3.109-0.645,4.243-1.811
+	C12.376,9.975,13,8.423,13,6.773C13,5.125,12.376,3.574,11.243,2.408z M7,8.053c0.553,0,1-0.445,1-1v-6c0-0.553-0.447-1-1-1
+	c-0.553,0-1,0.447-1,1v6C6,7.604,6.447,8.053,7,8.053z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/recycle-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/recycle-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/recycle-black.svg	(revision 101)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M3,7h1L2,4L0,7h1c0,3.313,2.687,6,6,6c0.702,0,1.374-0.127,2-0.35v-2.205C8.41,10.789,7.732,11,7,11C4.791,11,3,9.209,3,7z
+	 M13,7c0-3.313-2.688-6-6-6C6.298,1,5.626,1.127,5,1.349v2.206C5.59,3.211,6.268,3,7,3c2.209,0,4,1.791,4,4h-1l2,3l2-3H13z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/recycle-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/recycle-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/recycle-white.svg	(revision 101)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M3,7h1L2,4L0,7h1c0,3.313,2.687,6,6,6c0.702,0,1.374-0.127,2-0.35v-2.205C8.41,10.789,7.732,11,7,11
+	C4.791,11,3,9.209,3,7z M13,7c0-3.313-2.688-6-6-6C6.298,1,5.626,1.127,5,1.349v2.206C5.59,3.211,6.268,3,7,3c2.209,0,4,1.791,4,4
+	h-1l2,3l2-3H13z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/refresh-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/refresh-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/refresh-black.svg	(revision 101)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14.001px" height="14.002px" viewBox="0 0 14.001 14.002" style="enable-background:new 0 0 14.001 14.002;"
+	 xml:space="preserve">
+<path d="M14.001,6.001v-6l-2.06,2.06c-0.423-0.424-0.897-0.809-1.44-1.122C7.153-0.994,2.872,0.153,0.939,3.501
+	c-1.933,3.348-0.786,7.629,2.562,9.562c3.348,1.933,7.629,0.785,9.562-2.562l-1.732-1c-1.381,2.392-4.438,3.211-6.83,1.83
+	s-3.211-4.438-1.83-6.83s4.438-3.211,6.83-1.83c0.389,0.225,0.718,0.506,1.02,0.81l-2.52,2.52H14.001z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/refresh-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/refresh-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/refresh-white.svg	(revision 101)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14.001px" height="14.002px" viewBox="0 0 14.001 14.002" style="enable-background:new 0 0 14.001 14.002;"
+	 xml:space="preserve">
+<path fill="#FFF" d="M14.001,6.001v-6l-2.06,2.06c-0.423-0.424-0.897-0.809-1.44-1.122C7.153-0.994,2.872,0.153,0.939,3.501
+	c-1.933,3.348-0.786,7.629,2.562,9.562c3.348,1.933,7.629,0.785,9.562-2.562l-1.732-1c-1.381,2.392-4.438,3.211-6.83,1.83
+	s-3.211-4.438-1.83-6.83s4.438-3.211,6.83-1.83c0.389,0.225,0.718,0.506,1.02,0.81l-2.52,2.52H14.001z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/search-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/search-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/search-black.svg	(revision 101)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M10.171,8.766c0.617-0.888,0.979-1.964,0.979-3.126c0-3.037-2.463-5.5-5.5-5.5s-5.5,2.463-5.5,5.5s2.463,5.5,5.5,5.5
+	c1.152,0,2.223-0.355,3.104-0.962l3.684,3.683l1.414-1.414L10.171,8.766z M5.649,9.14c-1.933,0-3.5-1.567-3.5-3.5
+	c0-1.933,1.567-3.5,3.5-3.5c1.933,0,3.5,1.567,3.5,3.5C9.149,7.572,7.582,9.14,5.649,9.14z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/search-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/search-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/search-white.svg	(revision 101)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M10.171,8.766c0.617-0.888,0.979-1.964,0.979-3.126c0-3.037-2.463-5.5-5.5-5.5s-5.5,2.463-5.5,5.5
+	s2.463,5.5,5.5,5.5c1.152,0,2.223-0.355,3.104-0.962l3.684,3.683l1.414-1.414L10.171,8.766z M5.649,9.14c-1.933,0-3.5-1.567-3.5-3.5
+	c0-1.933,1.567-3.5,3.5-3.5c1.933,0,3.5,1.567,3.5,3.5C9.149,7.572,7.582,9.14,5.649,9.14z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/shop-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/shop-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/shop-black.svg	(revision 101)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M10,4V3c0-1.657-1.343-3-3-3S4,1.343,4,3v1H1v10h12V4H10z M4.5,6C4.224,6,4,5.776,4,5.5S4.224,5,4.5,5S5,5.224,5,5.5
+	S4.776,6,4.5,6z M5,3c0-1.104,0.896-2,2-2c1.104,0,2,0.896,2,2v1H5V3z M9.5,6C9.225,6,9,5.776,9,5.5S9.225,5,9.5,5S10,5.224,10,5.5
+	S9.775,6,9.5,6z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/shop-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/shop-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/shop-white.svg	(revision 101)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M10,4V3c0-1.657-1.343-3-3-3S4,1.343,4,3v1H1v10h12V4H10z M4.5,6C4.224,6,4,5.776,4,5.5
+	S4.224,5,4.5,5S5,5.224,5,5.5S4.776,6,4.5,6z M5,3c0-1.104,0.896-2,2-2c1.104,0,2,0.896,2,2v1H5V3z M9.5,6C9.225,6,9,5.776,9,5.5
+	S9.225,5,9.5,5S10,5.224,10,5.5S9.775,6,9.5,6z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/star-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/star-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/star-black.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="14,5 9,5 7,0 5,5 0,5 4,8 2.625,13 7,10 11.375,13 10,8 "/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/star-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/star-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/star-white.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon style="fill:#FFFFFF;" points="14,5 9,5 7,0 5,5 0,5 4,8 2.625,13 7,10 11.375,13 10,8 "/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/tag-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/tag-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/tag-black.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M5,0H0v5l9,9l5-5L5,0z M3,4C2.447,4,2,3.553,2,3s0.447-1,1-1s1,0.447,1,1S3.553,4,3,4z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/tag-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/tag-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/tag-white.svg	(revision 101)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M5,0H0v5l9,9l5-5L5,0z M3,4C2.447,4,2,3.553,2,3s0.447-1,1-1s1,0.447,1,1S3.553,4,3,4z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/user-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/user-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/user-black.svg	(revision 101)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M8.851,10.101c-0.18-0.399-0.2-0.763-0.153-1.104C9.383,8.49,9.738,7.621,9.891,6.465C10.493,6.355,10.5,5.967,10.5,5.5
+	c0-0.437-0.008-0.804-0.502-0.94C9.999,4.539,10,4.521,10,4.5c0-2.103-1-4-2-4C8,0.5,7.5,0,6.5,0C5,0,4,1.877,4,4.5
+	c0,0.021,0.001,0.039,0.002,0.06C3.508,4.696,3.5,5.063,3.5,5.5c0,0.467,0.007,0.855,0.609,0.965
+	C4.262,7.621,4.617,8.49,5.303,8.997c0.047,0.341,0.026,0.704-0.153,1.104C1.503,10.503,0,12,0,12v2h14v-2
+	C14,12,12.497,10.503,8.851,10.101z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/user-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/user-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/user-white.svg	(revision 101)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M8.851,10.101c-0.18-0.399-0.2-0.763-0.153-1.104C9.383,8.49,9.738,7.621,9.891,6.465C10.493,6.355,10.5,5.967,10.5,5.5
+	c0-0.437-0.008-0.804-0.502-0.94C9.999,4.539,10,4.521,10,4.5c0-2.103-1-4-2-4C8,0.5,7.5,0,6.5,0C5,0,4,1.877,4,4.5
+	c0,0.021,0.001,0.039,0.002,0.06C3.508,4.696,3.5,5.063,3.5,5.5c0,0.467,0.007,0.855,0.609,0.965
+	C4.262,7.621,4.617,8.49,5.303,8.997c0.047,0.341,0.026,0.704-0.153,1.104C1.503,10.503,0,12,0,12v2h14v-2
+	C14,12,12.497,10.503,8.851,10.101z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/video-black.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/video-black.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/video-black.svg	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 -2 14 14" style="enable-background:new 0 -2 14 14;" xml:space="preserve">
+<path d="M8,0H2C0.896,0,0,0.896,0,2v6c0,1.104,0.896,2,2,2h6c1.104,0,2-0.896,2-2V5V2C10,0.896,9.104,0,8,0z M10,5l4,4V1L10,5z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/video-white.svg
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/video-white.svg	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/images/icons-svg/video-white.svg	(revision 101)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="14px" height="14px" viewBox="0 -2 14 14" style="enable-background:new 0 -2 14 14;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M8,0H2C0.896,0,0,0.896,0,2v6c0,1.104,0.896,2,2,2h6c1.104,0,2-0.896,2-2V5V2C10,0.896,9.104,0,8,0z
+	 M10,5l4,4V1L10,5z"/>
+</svg>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.af.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.af.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.af.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'af': {
+		setDateButtonLabel: "Selekteer",
+		setTimeButtonLabel: "Selekteer",
+		setDurationButtonLabel: "Selekteer",
+		calTodayButtonLabel: "Vandag",
+		titleDateDialogLabel: "Kies Datum",
+		titleTimeDialogLabel: "Kies Tyd",
+		daysOfWeek: ["Sondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrydag", "Saterdag"],
+		daysOfWeekShort: ["Son", "Maa", "Din", "Woe", "Don", "Vry", "Sat"],
+		monthsOfYear: ["Januarie", "Februarie", "Maart", "April", "Mei", "Junie", "Julie", "Augustus", "September", "Oktober", "November", "Desember"],
+		monthsOfYearShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"],
+		durationLabel: ["Dae", "Ure", "Minute", "Sekondes"],
+		durationDays: ["Dag", "Dae"],
+		tooltip: "Maak Datumselekteerder",
+		nextMonth: "Volgende",
+		prevMonth: "Vorige",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Duidelik",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Ander Datums",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'af'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.af.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.af.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.af.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'af': {
+		setDateButtonLabel: "Selekteer",
+		setTimeButtonLabel: "Selekteer",
+		setDurationButtonLabel: "Selekteer",
+		calTodayButtonLabel: "Vandag",
+		titleDateDialogLabel: "Kies Datum",
+		titleTimeDialogLabel: "Kies Tyd",
+		daysOfWeek: ["Sondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrydag", "Saterdag"],
+		daysOfWeekShort: ["Son", "Maa", "Din", "Woe", "Don", "Vry", "Sat"],
+		monthsOfYear: ["Januarie", "Februarie", "Maart", "April", "Mei", "Junie", "Julie", "Augustus", "September", "Oktober", "November", "Desember"],
+		monthsOfYearShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"],
+		durationLabel: ["Dae", "Ure", "Minute", "Sekondes"],
+		durationDays: ["Dag", "Dae"],
+		tooltip: "Maak Datumselekteerder",
+		nextMonth: "Volgende",
+		prevMonth: "Vorige",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Duidelik",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Ander Datums",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'af'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ar.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ar.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ar.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Michael de Lara <mykel1829@yahoo.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'ar': {
+		setDateButtonLabel: "&#1578;&#1593;&#1610;&#1610;&#1606; &#1578;&#1575;&#1585;&#1610;&#1582;",
+		setTimeButtonLabel: "&#1590;&#1576;&#1591; &#1575;&#1604;&#1608;&#1602;&#1578;",
+		setDurationButtonLabel: "&#1578;&#1593;&#1610;&#1610;&#1606; &#1575;&#1604;&#1605;&#1583;&#1577;",
+		calTodayButtonLabel: "&#1575;&#1604;&#1602;&#1601;&#1586; &#1573;&#1604;&#1609; &#1575;&#1604;&#1610;&#1608;&#1605;",
+		titleDateDialogLabel: "&#1575;&#1582;&#1578;&#1585; &#1575;&#1604;&#1578;&#1575;&#1585;&#1610;&#1582;",
+		titleTimeDialogLabel: "&#1575;&#1582;&#1578;&#1585; &#1575;&#1604;&#1608;&#1602;&#1578;",
+		daysOfWeek: ["&#1575;&#1604;&#1571;&#1581;&#1583;", "&#1575;&#1604;&#1575;&#1579;&#1606;&#1610;&#1606;", "&#1575;&#1604;&#1579;&#1604;&#1575;&#1579;&#1575;&#1569;", "&#1575;&#1604;&#1575;&#1585;&#1576;&#1593;&#1575;&#1569;", "&#1575;&#1604;&#1582;&#1605;&#1610;&#1587;", "&#1575;&#1604;&#1580;&#1605;&#1593;&#1577;", "&#1575;&#1604;&#1587;&#1576;&#1578;"],
+		daysOfWeekShort: ["&#1575;&#1604;&#1571;&#1581;&#1583;", "&#1575;&#1604;&#1575;&#1579;&#1606;&#1610;&#1606;", "&#1575;&#1604;&#1579;&#1604;&#1575;&#1579;&#1575;&#1569;", "&#1575;&#1604;&#1575;&#1585;&#1576;&#1593;&#1575;&#1569;", "&#1575;&#1604;&#1582;&#1605;&#1610;&#1587;", "&#1575;&#1604;&#1580;&#1605;&#1593;&#1577;", "&#1575;&#1604;&#1587;&#1576;&#1578;"],
+		monthsOfYear: ["&#1610;&#1606;&#1575;&#1610;&#1585;", "&#1601;&#1576;&#1585;&#1575;&#1610;&#1585;", "&#1605;&#1575;&#1585;&#1587;", "&#1573;&#1576;&#1585;&#1610;&#1604;", "&#1605;&#1575;&#1610;&#1608;", "&#1610;&#1608;&#1606;&#1610;&#1577;", "&#1610;&#1608;&#1604;&#1610;&#1577;", "&#1571;&#1594;&#1587;&#1591;&#1587;", "&#1587;&#1576;&#1578;&#1605;&#1576;&#1585;", "&#1571;&#1603;&#1578;&#1608;&#1576;&#1585;", "&#1606;&#1608;&#1601;&#1605;&#1576;&#1585;", "&#1583;&#1610;&#1587;&#1605;&#1576;&#1585;"],
+		monthsOfYearShort: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"],
+		durationLabel: ["&#1571;&#1610;&#1575;&#1605;", "&#1587;&#1575;&#1593;&#1577;", "&#1583;&#1602;&#1610;&#1602;&#1577;", "&#1579;&#1575;&#1606;&#1610;&#1577;"],
+		durationDays: ["&#1610;&#1608;&#1605;", "&#1571;&#1610;&#1575;&#1605;"],
+		tooltip: "&#1601;&#1578;&#1581; &#1605;&#1606;&#1578;&#1602;&#1610; &#1575;&#1604;&#1578;&#1575;&#1585;&#1610;&#1582;",
+		nextMonth: "&#1575;&#1604;&#1578;&#1575;&#1604;&#1610;",
+		prevMonth: "&#1575;&#1604;&#1587;&#1575;&#1576;&#1602;",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%Y",
+		useArabicIndic: true,
+		isRTL: true,
+		calStartDay: 0,
+		clearButton: "&#1608;&#1575;&#1590;&#1581;&#1577;",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "&#1578;&#1608;&#1575;&#1585;&#1610;&#1582; &#1571;&#1582;&#1585;&#1609;",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'ar'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ar.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ar.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ar.utf8.js	(revision 101)
@@ -0,0 +1,64 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Michael de Lara <mykel1829@yahoo.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'ar': {
+		setDateButtonLabel: "ØªØ¹ÙÙÙ ØªØ§Ø±ÙØ®",
+		setTimeButtonLabel: "Ø¶Ø¨Ø· Ø§ÙÙÙØª",
+		setDurationButtonLabel: "ØªØ¹ÙÙÙ Ø§ÙÙ
+Ø¯Ø©",
+		calTodayButtonLabel: "Ø§ÙÙÙØ² Ø¥ÙÙ Ø§ÙÙÙÙ
+",
+		titleDateDialogLabel: "Ø§Ø®ØªØ± Ø§ÙØªØ§Ø±ÙØ®",
+		titleTimeDialogLabel: "Ø§Ø®ØªØ± Ø§ÙÙÙØª",
+		daysOfWeek: ["Ø§ÙØ£Ø­Ø¯", "Ø§ÙØ§Ø«ÙÙÙ", "Ø§ÙØ«ÙØ§Ø«Ø§Ø¡", "Ø§ÙØ§Ø±Ø¨Ø¹Ø§Ø¡", "Ø§ÙØ®Ù
+ÙØ³", "Ø§ÙØ¬Ù
+Ø¹Ø©", "Ø§ÙØ³Ø¨Øª"],
+		daysOfWeekShort: ["Ø§ÙØ£Ø­Ø¯", "Ø§ÙØ§Ø«ÙÙÙ", "Ø§ÙØ«ÙØ§Ø«Ø§Ø¡", "Ø§ÙØ§Ø±Ø¨Ø¹Ø§Ø¡", "Ø§ÙØ®Ù
+ÙØ³", "Ø§ÙØ¬Ù
+Ø¹Ø©", "Ø§ÙØ³Ø¨Øª"],
+		monthsOfYear: ["ÙÙØ§ÙØ±", "ÙØ¨Ø±Ø§ÙØ±", "Ù
+Ø§Ø±Ø³", "Ø¥Ø¨Ø±ÙÙ", "Ù
+Ø§ÙÙ", "ÙÙÙÙØ©", "ÙÙÙÙØ©", "Ø£ØºØ³Ø·Ø³", "Ø³Ø¨ØªÙ
+Ø¨Ø±", "Ø£ÙØªÙØ¨Ø±", "ÙÙÙÙ
+Ø¨Ø±", "Ø¯ÙØ³Ù
+Ø¨Ø±"],
+		monthsOfYearShort: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"],
+		durationLabel: ["Ø£ÙØ§Ù
+", "Ø³Ø§Ø¹Ø©", "Ø¯ÙÙÙØ©", "Ø«Ø§ÙÙØ©"],
+		durationDays: ["ÙÙÙ
+", "Ø£ÙØ§Ù
+"],
+		tooltip: "ÙØªØ­ Ù
+ÙØªÙÙ Ø§ÙØªØ§Ø±ÙØ®",
+		nextMonth: "Ø§ÙØªØ§ÙÙ",
+		prevMonth: "Ø§ÙØ³Ø§Ø¨Ù",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%Y",
+		useArabicIndic: true,
+		isRTL: true,
+		calStartDay: 0,
+		clearButton: "ÙØ§Ø¶Ø­Ø©",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "ØªÙØ§Ø±ÙØ® Ø£Ø®Ø±Ù",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'ar'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.bg.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.bg.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.bg.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: How Bizarre <how@errazib.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'bg': {
+		setDateButtonLabel: "&#1047;&#1072;&#1087;&#1072;&#1079;&#1080; &#1044;&#1072;&#1090;&#1072;&#1090;&#1072;",
+		setTimeButtonLabel: "&#1047;&#1072;&#1087;&#1072;&#1079;&#1080; &#1063;&#1072;&#1089;&#1098;&#1090;",
+		setDurationButtonLabel: "&#1047;&#1072;&#1087;&#1072;&#1079;&#1080; &#1042;&#1088;&#1077;&#1084;&#1077;&#1090;&#1086;",
+		calTodayButtonLabel: "&#1054;&#1073;&#1088;&#1072;&#1090;&#1085;&#1086; &#1076;&#1086; &#1044;&#1085;&#1077;&#1089;",
+		titleDateDialogLabel: "&#1048;&#1079;&#1073;&#1077;&#1088;&#1080; &#1044;&#1072;&#1090;&#1072;",
+		titleTimeDialogLabel: "&#1048;&#1079;&#1073;&#1077;&#1088;&#1080; &#1063;&#1072;&#1089;",
+		daysOfWeek: ["&#1053;&#1077;&#1076;&#1077;&#1083;&#1103;", "&#1055;&#1086;&#1085;&#1077;&#1076;&#1077;&#1083;&#1085;&#1080;&#1082;", "&#1042;&#1090;&#1086;&#1088;&#1085;&#1080;&#1082;", "&#1057;&#1088;&#1103;&#1076;&#1072;", "&#1063;&#1077;&#1090;&#1074;&#1098;&#1088;&#1090;&#1098;&#1082;", "&#1055;&#1077;&#1090;&#1098;&#1082;", "&#1057;&#1098;&#1073;&#1086;&#1090;&#1072;"],
+		daysOfWeekShort: ["&#1053;&#1076;", "&#1055;&#1085;", "&#1042;&#1090;", "&#1057;&#1088;", "&#1063;&#1090;", "&#1055;&#1090;", "&#1057;&#1073;"],
+		monthsOfYear: ["&#1071;&#1085;&#1091;&#1072;&#1088;&#1080;", "&#1060;&#1077;&#1074;&#1088;&#1091;&#1072;&#1088;&#1080;", "&#1052;&#1072;&#1088;&#1090;", "&#1040;&#1087;&#1088;&#1080;&#1083;", "&#1052;&#1072;&#1081;", "&#1070;&#1085;&#1080;", "&#1070;&#1083;&#1080;", "&#1040;&#1074;&#1075;&#1091;&#1089;&#1090;", "&#1057;&#1077;&#1087;&#1090;&#1077;&#1084;&#1074;&#1088;&#1080;", "&#1054;&#1082;&#1090;&#1086;&#1084;&#1074;&#1088;&#1080;", "&#1053;&#1086;&#1077;&#1084;&#1074;&#1088;&#1080;", "&#1044;&#1077;&#1082;&#1077;&#1084;&#1074;&#1088;&#1080;"],
+		monthsOfYearShort: ["&#1071;&#1085;&#1091;", "&#1060;&#1077;&#1074;", "&#1052;&#1072;&#1088;", "&#1040;&#1087;&#1088;", "&#1052;&#1072;&#1081;", "&#1070;&#1085;&#1080;", "&#1070;&#1083;&#1080;", "&#1040;&#1074;&#1075;", "&#1057;&#1077;&#1087;", "&#1054;&#1082;&#1090;", "&#1053;&#1086;&#1077;", "&#1044;&#1077;&#1082;"],
+		durationLabel: ["&#1044;&#1085;&#1080;", "&#1063;&#1072;&#1089;&#1086;&#1074;&#1077;", "&#1052;&#1080;&#1085;&#1091;&#1090;&#1080;", "&#1057;&#1077;&#1082;&#1091;&#1085;&#1076;&#1080;"],
+		durationDays: ["&#1044;&#1077;&#1085;", "&#1044;&#1085;&#1080;"],
+		tooltip: "&#1047;&#1072;&#1088;&#1077;&#1076;&#1077;&#1090;&#1077; &#1055;&#1088;&#1086;&#1079;&#1086;&#1088;&#1077;&#1094;&#1072; &#1079;&#1072; &#1044;&#1072;&#1090;&#1072;",
+		nextMonth: "&#1057;&#1083;&#1077;&#1076;&#1074;&#1072;&#1097; &#1052;&#1077;&#1089;&#1077;&#1094;",
+		prevMonth: "&#1055;&#1088;&#1077;&#1076;&#1080;&#1096;&#1077;&#1085; &#1052;&#1077;&#1089;&#1077;&#1094;",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d.%-m.%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 1,
+		clearButton: "&#1048;&#1079;&#1095;&#1080;&#1089;&#1090;&#1080;",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%l:%M %p",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "&#1044;&#1088;&#1091;&#1075;&#1080; &#1076;&#1072;&#1090;&#1080;",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'bg'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.bg.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.bg.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.bg.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: How Bizarre <how@errazib.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'bg': {
+		setDateButtonLabel: "ÐÐ°Ð¿Ð°Ð·Ð¸ ÐÐ°ÑÐ°ÑÐ°",
+		setTimeButtonLabel: "ÐÐ°Ð¿Ð°Ð·Ð¸ Ð§Ð°ÑÑÑ",
+		setDurationButtonLabel: "ÐÐ°Ð¿Ð°Ð·Ð¸ ÐÑÐµÐ¼ÐµÑÐ¾",
+		calTodayButtonLabel: "ÐÐ±ÑÐ°ÑÐ½Ð¾ Ð´Ð¾ ÐÐ½ÐµÑ",
+		titleDateDialogLabel: "ÐÐ·Ð±ÐµÑÐ¸ ÐÐ°ÑÐ°",
+		titleTimeDialogLabel: "ÐÐ·Ð±ÐµÑÐ¸ Ð§Ð°Ñ",
+		daysOfWeek: ["ÐÐµÐ´ÐµÐ»Ñ", "ÐÐ¾Ð½ÐµÐ´ÐµÐ»Ð½Ð¸Ðº", "ÐÑÐ¾ÑÐ½Ð¸Ðº", "Ð¡ÑÑÐ´Ð°", "Ð§ÐµÑÐ²ÑÑÑÑÐº", "ÐÐµÑÑÐº", "Ð¡ÑÐ±Ð¾ÑÐ°"],
+		daysOfWeekShort: ["ÐÐ´", "ÐÐ½", "ÐÑ", "Ð¡Ñ", "Ð§Ñ", "ÐÑ", "Ð¡Ð±"],
+		monthsOfYear: ["Ð¯Ð½ÑÐ°ÑÐ¸", "Ð¤ÐµÐ²ÑÑÐ°ÑÐ¸", "ÐÐ°ÑÑ", "ÐÐ¿ÑÐ¸Ð»", "ÐÐ°Ð¹", "Ð®Ð½Ð¸", "Ð®Ð»Ð¸", "ÐÐ²Ð³ÑÑÑ", "Ð¡ÐµÐ¿ÑÐµÐ¼Ð²ÑÐ¸", "ÐÐºÑÐ¾Ð¼Ð²ÑÐ¸", "ÐÐ¾ÐµÐ¼Ð²ÑÐ¸", "ÐÐµÐºÐµÐ¼Ð²ÑÐ¸"],
+		monthsOfYearShort: ["Ð¯Ð½Ñ", "Ð¤ÐµÐ²", "ÐÐ°Ñ", "ÐÐ¿Ñ", "ÐÐ°Ð¹", "Ð®Ð½Ð¸", "Ð®Ð»Ð¸", "ÐÐ²Ð³", "Ð¡ÐµÐ¿", "ÐÐºÑ", "ÐÐ¾Ðµ", "ÐÐµÐº"],
+		durationLabel: ["ÐÐ½Ð¸", "Ð§Ð°ÑÐ¾Ð²Ðµ", "ÐÐ¸Ð½ÑÑÐ¸", "Ð¡ÐµÐºÑÐ½Ð´Ð¸"],
+		durationDays: ["ÐÐµÐ½", "ÐÐ½Ð¸"],
+		tooltip: "ÐÐ°ÑÐµÐ´ÐµÑÐµ ÐÑÐ¾Ð·Ð¾ÑÐµÑÐ° Ð·Ð° ÐÐ°ÑÐ°",
+		nextMonth: "Ð¡Ð»ÐµÐ´Ð²Ð°Ñ ÐÐµÑÐµÑ",
+		prevMonth: "ÐÑÐµÐ´Ð¸ÑÐµÐ½ ÐÐµÑÐµÑ",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d.%-m.%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 1,
+		clearButton: "ÐÐ·ÑÐ¸ÑÑÐ¸",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%l:%M %p",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "ÐÑÑÐ³Ð¸ Ð´Ð°ÑÐ¸",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'bg'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ca.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ca.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ca.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'ca': {
+		setDateButtonLabel: "Tanca",
+		setTimeButtonLabel: "Tanca",
+		setDurationButtonLabel: "Tanca",
+		calTodayButtonLabel: "V&#233;s a avui",
+		titleDateDialogLabel: "Tria la data",
+		titleTimeDialogLabel: "Esculli temps",
+		daysOfWeek: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"],
+		daysOfWeekShort: ["Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds"],
+		monthsOfYear: ["Gener", "Febrer", "Mar&#231;", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"],
+		monthsOfYearShort: ["Gen", "Feb", "Mar&#231;", "Abr", "Maig", "Juny", "Jul", "Ag", "Set", "Oct", "Nov", "Des"],
+		durationLabel: ["Dies", "Hores", "Minuts", "Segons"],
+		durationDays: ["Dia", "Dies"],
+		tooltip: "Selector de la data obert",
+		nextMonth: "Seg&#252;ent",
+		prevMonth: "Anterior",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Clar",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Altres Dates",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'ca'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ca.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ca.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ca.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'ca': {
+		setDateButtonLabel: "Tanca",
+		setTimeButtonLabel: "Tanca",
+		setDurationButtonLabel: "Tanca",
+		calTodayButtonLabel: "V辿s a avui",
+		titleDateDialogLabel: "Tria la data",
+		titleTimeDialogLabel: "Esculli temps",
+		daysOfWeek: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"],
+		daysOfWeekShort: ["Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds"],
+		monthsOfYear: ["Gener", "Febrer", "Mar巽", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"],
+		monthsOfYearShort: ["Gen", "Feb", "Mar巽", "Abr", "Maig", "Juny", "Jul", "Ag", "Set", "Oct", "Nov", "Des"],
+		durationLabel: ["Dies", "Hores", "Minuts", "Segons"],
+		durationDays: ["Dia", "Dies"],
+		tooltip: "Selector de la data obert",
+		nextMonth: "Seg端ent",
+		prevMonth: "Anterior",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Clar",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Altres Dates",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'ca'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.cs.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.cs.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.cs.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'cs': {
+		setDateButtonLabel: "Nastavit datum",
+		setTimeButtonLabel: "Nastavit &#269;as",
+		setDurationButtonLabel: "Nastavit dobu trv&#225;n&#237;",
+		calTodayButtonLabel: "Nyn&#237;",
+		titleDateDialogLabel: "Zvolte datum",
+		titleTimeDialogLabel: "Zvolit &#269;as",
+		daysOfWeek: ["Ned&#283;le", "Pond&#283;l&#237;", "&#218;ter&#253;", "St&#345;eda", "&#268;tvrtek", "P&#225;tek", "Sobota"],
+		daysOfWeekShort: ["Ne", "Po", "&#218;t", "St", "&#268;t", "P&#225;", "So"],
+		monthsOfYear: ["Leden", "&#218;nor", "B&#345;ezen", "Duben", "Kv&#283;ten", "&#268;erven", "&#268;ervenec", "Srpen", "Z&#225;&#345;&#237;", "&#344;&#237;jen", "Listopad", "Prosinec"],
+		monthsOfYearShort: ["Led", "&#218;no", "B&#345;e", "Dub", "Kv&#283;", "&#268;er", "&#268;vc", "Srp", "Z&#225;&#345;", "&#344;&#237;j", "Lis", "Pro"],
+		durationLabel: ["Dny", "Hodin", "Minut", "Sekundy"],
+		durationDays: ["Den", "Dny"],
+		tooltip: "Otev&#345;&#237;t v&#253;b&#283;r data",
+		nextMonth: "Pozd&#283;ji",
+		prevMonth: "D&#345;&#237;ve",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d.%m.%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Vymazat",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Dal&#353;&#237; term&#237;ny",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'cs'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.cs.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.cs.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.cs.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'cs': {
+		setDateButtonLabel: "Nastavit datum",
+		setTimeButtonLabel: "Nastavit Äas",
+		setDurationButtonLabel: "Nastavit dobu trvÃ¡nÃ­",
+		calTodayButtonLabel: "NynÃ­",
+		titleDateDialogLabel: "Zvolte datum",
+		titleTimeDialogLabel: "Zvolit Äas",
+		daysOfWeek: ["NedÄle", "PondÄlÃ­", "ÃterÃ½", "StÅeda", "Ätvrtek", "PÃ¡tek", "Sobota"],
+		daysOfWeekShort: ["Ne", "Po", "Ãt", "St", "Ät", "PÃ¡", "So"],
+		monthsOfYear: ["Leden", "Ãnor", "BÅezen", "Duben", "KvÄten", "Äerven", "Äervenec", "Srpen", "ZÃ¡ÅÃ­", "ÅÃ­jen", "Listopad", "Prosinec"],
+		monthsOfYearShort: ["Led", "Ãno", "BÅe", "Dub", "KvÄ", "Äer", "Ävc", "Srp", "ZÃ¡Å", "ÅÃ­j", "Lis", "Pro"],
+		durationLabel: ["Dny", "Hodin", "Minut", "Sekundy"],
+		durationDays: ["Den", "Dny"],
+		tooltip: "OtevÅÃ­t vÃ½bÄr data",
+		nextMonth: "PozdÄji",
+		prevMonth: "DÅÃ­ve",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d.%m.%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Vymazat",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "DalÅ¡Ã­ termÃ­ny",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'cs'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.da.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.da.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.da.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Jnyrup <crowdin>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'da': {
+		setDateButtonLabel: "Angiv dato",
+		setTimeButtonLabel: "Angiv tid",
+		setDurationButtonLabel: "Angiv varighed",
+		calTodayButtonLabel: "G&#229; til i dag",
+		titleDateDialogLabel: "V&#230;lg dato",
+		titleTimeDialogLabel: "V&#230;lg tid",
+		daysOfWeek: ["S&#248;ndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "L&#248;rdag"],
+		daysOfWeekShort: ["S&#248;n", "Man", "Tir", "Ons", "Tor", "Fre", "L&#248;r"],
+		monthsOfYear: ["Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"],
+		monthsOfYearShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+		durationLabel: ["Dage", "Timer", "Minutter", "Sekund"],
+		durationDays: ["Dag", "Dage"],
+		tooltip: "&#65279;&#197;bn datov&#230;lger",
+		nextMonth: "N&#230;ste m&#229;ned",
+		prevMonth: "Forrige m&#229;ned",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d-%m-%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Nulstil",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Andre datoer",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'da'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.da.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.da.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.da.utf8.js	(revision 101)
@@ -0,0 +1,50 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Jnyrup <crowdin>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'da': {
+		setDateButtonLabel: "Angiv dato",
+		setTimeButtonLabel: "Angiv tid",
+		setDurationButtonLabel: "Angiv varighed",
+		calTodayButtonLabel: "GÃ¥ til i dag",
+		titleDateDialogLabel: "VÃ¦lg dato",
+		titleTimeDialogLabel: "VÃ¦lg tid",
+		daysOfWeek: ["SÃ¸ndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "LÃ¸rdag"],
+		daysOfWeekShort: ["SÃ¸n", "Man", "Tir", "Ons", "Tor", "Fre", "LÃ¸r"],
+		monthsOfYear: ["Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"],
+		monthsOfYearShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+		durationLabel: ["Dage", "Timer", "Minutter", "Sekund"],
+		durationDays: ["Dag", "Dage"],
+		tooltip: "ï»¿Ã
+bn datovÃ¦lger",
+		nextMonth: "NÃ¦ste mÃ¥ned",
+		prevMonth: "Forrige mÃ¥ned",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d-%m-%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Nulstil",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Andre datoer",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'da'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.de.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.de.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.de.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Chris P. Vigelius <me@cv.gd>, Pascal Hofmann <crowdin>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'de': {
+		setDateButtonLabel: "Datum einstellen",
+		setTimeButtonLabel: "Zeit einstellen",
+		setDurationButtonLabel: "Dauer einstellen",
+		calTodayButtonLabel: "heute",
+		titleDateDialogLabel: "Datum w&#228;hlen",
+		titleTimeDialogLabel: "Zeit w&#228;hlen",
+		daysOfWeek: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"],
+		daysOfWeekShort: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
+		monthsOfYear: ["Januar", "Februar", "M&#228;rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
+		monthsOfYearShort: ["Jan", "Feb", "M&#228;r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dez"],
+		durationLabel: ["Tage", "Stunden", "Minuten", "Sekunden"],
+		durationDays: ["Tag", "Tage"],
+		tooltip: "&#214;ffne Datumsauswahl",
+		nextMonth: "N&#228;chster Monat",
+		prevMonth: "Vorheriger Monat",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d.%m.%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "l&#246;schen",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Weitere Termine",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'de'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.de.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.de.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.de.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Chris P. Vigelius <me@cv.gd>, Pascal Hofmann <crowdin>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'de': {
+		setDateButtonLabel: "Datum einstellen",
+		setTimeButtonLabel: "Zeit einstellen",
+		setDurationButtonLabel: "Dauer einstellen",
+		calTodayButtonLabel: "heute",
+		titleDateDialogLabel: "Datum wÃ¤hlen",
+		titleTimeDialogLabel: "Zeit wÃ¤hlen",
+		daysOfWeek: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"],
+		daysOfWeekShort: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
+		monthsOfYear: ["Januar", "Februar", "MÃ¤rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
+		monthsOfYearShort: ["Jan", "Feb", "MÃ¤r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dez"],
+		durationLabel: ["Tage", "Stunden", "Minuten", "Sekunden"],
+		durationDays: ["Tag", "Tage"],
+		tooltip: "Ãffne Datumsauswahl",
+		nextMonth: "NÃ¤chster Monat",
+		prevMonth: "Vorheriger Monat",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d.%m.%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "lÃ¶schen",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Weitere Termine",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'de'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.el.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.el.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.el.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Giannis Kosmas <kosmasgiannis@gmail.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'el': {
+		setDateButtonLabel: "&#922;&#945;&#952;&#959;&#961;&#953;&#963;&#956;&#972;&#962; &#919;&#956;&#949;&#961;&#959;&#956;&#951;&#957;&#943;&#945;&#962;",
+		setTimeButtonLabel: "&#922;&#945;&#952;&#959;&#961;&#953;&#963;&#956;&#972;&#962; &#911;&#961;&#945;&#962;",
+		setDurationButtonLabel: "&#922;&#945;&#952;&#959;&#961;&#953;&#963;&#956;&#972;&#962; &#916;&#953;&#940;&#961;&#954;&#949;&#953;&#945;&#962;",
+		calTodayButtonLabel: "&#924;&#949;&#964;&#940;&#946;&#945;&#963;&#951; &#963;&#964;&#951; &#963;&#951;&#956;&#949;&#961;&#953;&#957;&#942;",
+		titleDateDialogLabel: "&#917;&#960;&#953;&#955;&#941;&#958;&#964;&#949; &#951;&#956;&#949;&#961;&#959;&#956;&#951;&#957;&#943;&#945;",
+		titleTimeDialogLabel: "&#917;&#960;&#953;&#955;&#941;&#958;&#964;&#949; &#964;&#951;&#957; &#974;&#961;&#945;",
+		daysOfWeek: ["&#922;&#965;&#961;&#953;&#945;&#954;&#942;", "&#916;&#949;&#965;&#964;&#941;&#961;&#945;", "&#932;&#961;&#943;&#964;&#951;", "&#932;&#949;&#964;&#940;&#961;&#964;&#951;", "&#928;&#941;&#956;&#960;&#964;&#951;", "&#928;&#945;&#961;&#945;&#963;&#954;&#949;&#965;&#942;", "&#931;&#940;&#946;&#946;&#945;&#964;&#959;"],
+		daysOfWeekShort: ["&#922;&#965;", "&#916;&#949;", "&#932;&#961;", "&#932;&#949;", "&#928;&#949;", "&#928;&#945;", "&#931;&#945;"],
+		monthsOfYear: ["&#921;&#945;&#957;&#959;&#965;&#940;&#961;&#953;&#959;&#962;", "&#934;&#949;&#946;&#961;&#959;&#965;&#940;&#961;&#953;&#959;&#962;", "&#924;&#940;&#961;&#964;&#953;&#959;&#962;", "&#913;&#960;&#961;&#943;&#955;&#953;&#959;&#962;", "&#924;&#940;&#953;&#959;&#962;", "&#921;&#959;&#973;&#957;&#953;&#959;&#962;", "&#921;&#959;&#973;&#955;&#953;&#959;&#962;", "&#913;&#973;&#947;&#959;&#965;&#963;&#964;&#959;&#962;", "&#931;&#949;&#960;&#964;&#941;&#956;&#946;&#961;&#953;&#959;&#962;", "&#927;&#954;&#964;&#974;&#946;&#961;&#953;&#959;&#962;", "&#925;&#959;&#941;&#956;&#946;&#961;&#953;&#959;&#962;", "&#916;&#949;&#954;&#941;&#956;&#946;&#961;&#953;&#959;&#962;"],
+		monthsOfYearShort: ["&#921;&#945;&#957;", "&#934;&#949;&#946;", "&#924;&#945;&#961;", "&#913;&#960;&#961;", "&#924;&#940;&#953;", "&#921;&#959;&#973;&#957;", "&#921;&#959;&#973;&#955;", "&#913;&#973;&#947;", "&#931;&#949;&#960;", "&#927;&#954;&#964;", "&#925;&#959;&#941;", "&#916;&#949;&#954;"],
+		durationLabel: ["&#919;&#956;&#941;&#961;&#949;&#962;", "&#911;&#961;&#949;&#962;", "&#923;&#949;&#960;&#964;&#940;", "&#916;&#949;&#965;&#964;&#949;&#961;&#972;&#955;&#949;&#960;&#964;&#945;"],
+		durationDays: ["&#919;&#956;&#941;&#961;&#945;", "&#919;&#956;&#941;&#961;&#949;&#962;"],
+		tooltip: "&#902;&#957;&#959;&#953;&#947;&#956;&#945; &#949;&#960;&#953;&#955;&#959;&#947;&#942; &#951;&#956;&#949;&#961;&#959;&#956;&#951;&#957;&#943;&#945;&#962;",
+		nextMonth: "&#917;&#960;&#972;&#956;&#949;&#957;&#959;&#962; &#956;&#942;&#957;&#945;&#962;",
+		prevMonth: "&#928;&#961;&#959;&#951;&#947;&#959;&#973;&#956;&#949;&#957;&#959; &#956;&#942;&#957;&#945;",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "&#931;&#945;&#966;&#942;&#962;",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "&#902;&#955;&#955;&#949;&#962; &#951;&#956;&#949;&#961;&#959;&#956;&#951;&#957;&#943;&#949;&#962;",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'el'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.el.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.el.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.el.utf8.js	(revision 101)
@@ -0,0 +1,57 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Giannis Kosmas <kosmasgiannis@gmail.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'el': {
+		setDateButtonLabel: "ÎÎ±Î¸Î¿ÏÎ¹ÏÎ¼ÏÏ ÎÎ¼ÎµÏÎ¿Î¼Î·Î½Î¯Î±Ï",
+		setTimeButtonLabel: "ÎÎ±Î¸Î¿ÏÎ¹ÏÎ¼ÏÏ ÎÏÎ±Ï",
+		setDurationButtonLabel: "ÎÎ±Î¸Î¿ÏÎ¹ÏÎ¼ÏÏ ÎÎ¹Î¬ÏÎºÎµÎ¹Î±Ï",
+		calTodayButtonLabel: "ÎÎµÏÎ¬Î²Î±ÏÎ· ÏÏÎ· ÏÎ·Î¼ÎµÏÎ¹Î½Î®",
+		titleDateDialogLabel: "ÎÏÎ¹Î»Î­Î¾ÏÎµ Î·Î¼ÎµÏÎ¿Î¼Î·Î½Î¯Î±",
+		titleTimeDialogLabel: "ÎÏÎ¹Î»Î­Î¾ÏÎµ ÏÎ·Î½ ÏÏÎ±",
+		daysOfWeek: ["ÎÏ
+ÏÎ¹Î±ÎºÎ®", "ÎÎµÏ
+ÏÎ­ÏÎ±", "Î¤ÏÎ¯ÏÎ·", "Î¤ÎµÏÎ¬ÏÏÎ·", "Î Î­Î¼ÏÏÎ·", "Î Î±ÏÎ±ÏÎºÎµÏ
+Î®", "Î£Î¬Î²Î²Î±ÏÎ¿"],
+		daysOfWeekShort: ["ÎÏ
+", "ÎÎµ", "Î¤Ï", "Î¤Îµ", "Î Îµ", "Î Î±", "Î£Î±"],
+		monthsOfYear: ["ÎÎ±Î½Î¿Ï
+Î¬ÏÎ¹Î¿Ï", "Î¦ÎµÎ²ÏÎ¿Ï
+Î¬ÏÎ¹Î¿Ï", "ÎÎ¬ÏÏÎ¹Î¿Ï", "ÎÏÏÎ¯Î»Î¹Î¿Ï", "ÎÎ¬Î¹Î¿Ï", "ÎÎ¿ÏÎ½Î¹Î¿Ï", "ÎÎ¿ÏÎ»Î¹Î¿Ï", "ÎÏÎ³Î¿Ï
+ÏÏÎ¿Ï", "Î£ÎµÏÏÎ­Î¼Î²ÏÎ¹Î¿Ï", "ÎÎºÏÏÎ²ÏÎ¹Î¿Ï", "ÎÎ¿Î­Î¼Î²ÏÎ¹Î¿Ï", "ÎÎµÎºÎ­Î¼Î²ÏÎ¹Î¿Ï"],
+		monthsOfYearShort: ["ÎÎ±Î½", "Î¦ÎµÎ²", "ÎÎ±Ï", "ÎÏÏ", "ÎÎ¬Î¹", "ÎÎ¿ÏÎ½", "ÎÎ¿ÏÎ»", "ÎÏÎ³", "Î£ÎµÏ", "ÎÎºÏ", "ÎÎ¿Î­", "ÎÎµÎº"],
+		durationLabel: ["ÎÎ¼Î­ÏÎµÏ", "ÎÏÎµÏ", "ÎÎµÏÏÎ¬", "ÎÎµÏ
+ÏÎµÏÏÎ»ÎµÏÏÎ±"],
+		durationDays: ["ÎÎ¼Î­ÏÎ±", "ÎÎ¼Î­ÏÎµÏ"],
+		tooltip: "ÎÎ½Î¿Î¹Î³Î¼Î± ÎµÏÎ¹Î»Î¿Î³Î® Î·Î¼ÎµÏÎ¿Î¼Î·Î½Î¯Î±Ï",
+		nextMonth: "ÎÏÏÎ¼ÎµÎ½Î¿Ï Î¼Î®Î½Î±Ï",
+		prevMonth: "Î ÏÎ¿Î·Î³Î¿ÏÎ¼ÎµÎ½Î¿ Î¼Î®Î½Î±",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Î£Î±ÏÎ®Ï",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "ÎÎ»Î»ÎµÏ Î·Î¼ÎµÏÎ¿Î¼Î·Î½Î¯ÎµÏ",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'el'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.en.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.en.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.en.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: J.T.Sage <jtsage@gmail.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'en': {
+		setDateButtonLabel: "Set Date",
+		setTimeButtonLabel: "Set Time",
+		setDurationButtonLabel: "Set Duration",
+		calTodayButtonLabel: "Jump to Today",
+		titleDateDialogLabel: "Choose Date",
+		titleTimeDialogLabel: "Choose Time",
+		daysOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+		daysOfWeekShort: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
+		monthsOfYear: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+		monthsOfYearShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+		durationLabel: ["Days", "Hours", "Minutes", "Seconds"],
+		durationDays: ["Day", "Days"],
+		tooltip: "Open Date Picker",
+		nextMonth: "Next Month",
+		prevMonth: "Previous Month",
+		timeFormat: 12,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['m', 'd', 'y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%-m/%-d/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Clear",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%l:%M %p",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Other Dates",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'en'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.en.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.en.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.en.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: J.T.Sage <jtsage@gmail.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'en': {
+		setDateButtonLabel: "Set Date",
+		setTimeButtonLabel: "Set Time",
+		setDurationButtonLabel: "Set Duration",
+		calTodayButtonLabel: "Jump to Today",
+		titleDateDialogLabel: "Choose Date",
+		titleTimeDialogLabel: "Choose Time",
+		daysOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+		daysOfWeekShort: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
+		monthsOfYear: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+		monthsOfYearShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+		durationLabel: ["Days", "Hours", "Minutes", "Seconds"],
+		durationDays: ["Day", "Days"],
+		tooltip: "Open Date Picker",
+		nextMonth: "Next Month",
+		prevMonth: "Previous Month",
+		timeFormat: 12,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['m', 'd', 'y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%-m/%-d/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Clear",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%l:%M %p",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Other Dates",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'en'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.es-ES.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.es-ES.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.es-ES.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Rafael Carballo Cerqueira
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'es-ES': {
+		setDateButtonLabel: "Guardar Fecha",
+		setTimeButtonLabel: "Guardar Hora",
+		setDurationButtonLabel: "Guardar Duraci&#243;n",
+		calTodayButtonLabel: "Hoy",
+		titleDateDialogLabel: "Elija fecha",
+		titleTimeDialogLabel: "Elegir Hora",
+		daysOfWeek: ["Domingo", "Lunes", "Martes", "Mi&#233;rcoles", "Jueves", "Viernes", "S&#225;bado"],
+		daysOfWeekShort: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa"],
+		monthsOfYear: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
+		monthsOfYearShort: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"],
+		durationLabel: ["D&#237;as", "Horas", "Minutos", "Segundos"],
+		durationDays: ["D&#237;a", "D&#237;as"],
+		tooltip: "Abrir El Calendario",
+		nextMonth: "Mes Pr&#243;ximo",
+		prevMonth: "Mes Anterior",
+		timeFormat: 24,
+		headerFormat: '%A, %-d %B, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Borrar",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%l:%M %p",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Otras fechas",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'es-ES'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.es-ES.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.es-ES.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.es-ES.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Rafael Carballo Cerqueira
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'es-ES': {
+		setDateButtonLabel: "Guardar Fecha",
+		setTimeButtonLabel: "Guardar Hora",
+		setDurationButtonLabel: "Guardar Duraci坦n",
+		calTodayButtonLabel: "Hoy",
+		titleDateDialogLabel: "Elija fecha",
+		titleTimeDialogLabel: "Elegir Hora",
+		daysOfWeek: ["Domingo", "Lunes", "Martes", "Mi辿rcoles", "Jueves", "Viernes", "S叩bado"],
+		daysOfWeekShort: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa"],
+		monthsOfYear: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
+		monthsOfYearShort: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"],
+		durationLabel: ["D鱈as", "Horas", "Minutos", "Segundos"],
+		durationDays: ["D鱈a", "D鱈as"],
+		tooltip: "Abrir El Calendario",
+		nextMonth: "Mes Pr坦ximo",
+		prevMonth: "Mes Anterior",
+		timeFormat: 24,
+		headerFormat: '%A, %-d %B, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Borrar",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%l:%M %p",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Otras fechas",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'es-ES'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.fi.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.fi.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.fi.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Ville Salonen <ville.salonen@iki.fi>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'fi': {
+		setDateButtonLabel: "Valitse p&#228;iv&#228;",
+		setTimeButtonLabel: "Valitse aika",
+		setDurationButtonLabel: "Valitse kesto",
+		calTodayButtonLabel: "T&#228;n&#228;&#228;n",
+		titleDateDialogLabel: "Valitse p&#228;iv&#228;m&#228;&#228;r&#228;",
+		titleTimeDialogLabel: "Valitse aika",
+		daysOfWeek: ["Sunnuntai", "Maanantai", "Tiistai", "Keskiviikko", "Torstai", "Perjantai", "Lauantai"],
+		daysOfWeekShort: ["Su", "Ma", "Ti", "Ke", "To", "Pe", "La"],
+		monthsOfYear: ["Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kes&#228;kuu", "Hein&#228;kuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu"],
+		monthsOfYearShort: ["Tammi", "Helmi", "Maali", "Huhti", "Touko", "Kes&#228;", "Hein&#228;", "Elo", "Syys", "Loka", "Marras", "Joulu"],
+		durationLabel: ["P&#228;iv&#228;&#228;", "Tuntia", "Minuuttia", "Sekuntia"],
+		durationDays: ["P&#228;iv&#228;", "P&#228;iv&#228;&#228;"],
+		tooltip: "Avaa p&#228;iv&#228;m&#228;&#228;r&#228;valitsin",
+		nextMonth: "Seuraava kuukausi",
+		prevMonth: "Edellinen kuukausi",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d.%m.%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Selke&#228;&#228;",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Muut p&#228;iv&#228;m&#228;&#228;r&#228;t",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'fi'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.fi.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.fi.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.fi.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Ville Salonen <ville.salonen@iki.fi>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'fi': {
+		setDateButtonLabel: "Valitse p辰iv辰",
+		setTimeButtonLabel: "Valitse aika",
+		setDurationButtonLabel: "Valitse kesto",
+		calTodayButtonLabel: "T辰n辰辰n",
+		titleDateDialogLabel: "Valitse p辰iv辰m辰辰r辰",
+		titleTimeDialogLabel: "Valitse aika",
+		daysOfWeek: ["Sunnuntai", "Maanantai", "Tiistai", "Keskiviikko", "Torstai", "Perjantai", "Lauantai"],
+		daysOfWeekShort: ["Su", "Ma", "Ti", "Ke", "To", "Pe", "La"],
+		monthsOfYear: ["Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kes辰kuu", "Hein辰kuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu"],
+		monthsOfYearShort: ["Tammi", "Helmi", "Maali", "Huhti", "Touko", "Kes辰", "Hein辰", "Elo", "Syys", "Loka", "Marras", "Joulu"],
+		durationLabel: ["P辰iv辰辰", "Tuntia", "Minuuttia", "Sekuntia"],
+		durationDays: ["P辰iv辰", "P辰iv辰辰"],
+		tooltip: "Avaa p辰iv辰m辰辰r辰valitsin",
+		nextMonth: "Seuraava kuukausi",
+		prevMonth: "Edellinen kuukausi",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d.%m.%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Selke辰辰",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Muut p辰iv辰m辰辰r辰t",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'fi'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.fr.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.fr.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.fr.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'fr': {
+		setDateButtonLabel: "Date Fix&#233;e",
+		setTimeButtonLabel: "R&#233;gler l'heure",
+		setDurationButtonLabel: "R&#233;gler la dur&#233;e",
+		calTodayButtonLabel: "Aller &#224; aujourd'hui",
+		titleDateDialogLabel: "Choisir la Date",
+		titleTimeDialogLabel: "Choisir le temps",
+		daysOfWeek: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"],
+		daysOfWeekShort: ["D", "L", "M", "M", "J", "V", "S"],
+		monthsOfYear: ["Janvier", "F&#233;vrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Ao&#251;t", "Septembre", "Octobre", "Novembre", "D&#233;cembre"],
+		monthsOfYearShort: ["Janv", "F&#233;vr", "Mars", "Avr", "Mai", "Juin", "Juil", "Ao&#251;t", "Sept", "Oct", "Nov", "D&#233;c"],
+		durationLabel: ["Jours", "Heures", "Minutes", "Secondes"],
+		durationDays: ["Jour", "Jours"],
+		tooltip: "Ouvrir le s&#233;lecteur de date",
+		nextMonth: "Mois Suiv.",
+		prevMonth: "Mois Prec.",
+		timeFormat: 24,
+		headerFormat: '%A, %-d %B, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 1,
+		clearButton: "Effacer",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Autres Dates",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'fr'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.fr.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.fr.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.fr.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'fr': {
+		setDateButtonLabel: "Date FixÃ©e",
+		setTimeButtonLabel: "RÃ©gler l'heure",
+		setDurationButtonLabel: "RÃ©gler la durÃ©e",
+		calTodayButtonLabel: "Aller Ã  aujourd'hui",
+		titleDateDialogLabel: "Choisir la Date",
+		titleTimeDialogLabel: "Choisir le temps",
+		daysOfWeek: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"],
+		daysOfWeekShort: ["D", "L", "M", "M", "J", "V", "S"],
+		monthsOfYear: ["Janvier", "FÃ©vrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "AoÃ»t", "Septembre", "Octobre", "Novembre", "DÃ©cembre"],
+		monthsOfYearShort: ["Janv", "FÃ©vr", "Mars", "Avr", "Mai", "Juin", "Juil", "AoÃ»t", "Sept", "Oct", "Nov", "DÃ©c"],
+		durationLabel: ["Jours", "Heures", "Minutes", "Secondes"],
+		durationDays: ["Jour", "Jours"],
+		tooltip: "Ouvrir le sÃ©lecteur de date",
+		nextMonth: "Mois Suiv.",
+		prevMonth: "Mois Prec.",
+		timeFormat: 24,
+		headerFormat: '%A, %-d %B, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 1,
+		clearButton: "Effacer",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Autres Dates",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'fr'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.he.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.he.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.he.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Kobi Hikri <kobi.hikri@gmail.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'he': {
+		setDateButtonLabel: "&#1511;&#1489;&#1506; &#1514;&#1488;&#1512;&#1497;&#1498;",
+		setTimeButtonLabel: "&#1511;&#1489;&#1506; &#1494;&#1502;&#1503;",
+		setDurationButtonLabel: "&#1511;&#1489;&#1506; &#1502;&#1513;&#1498; &#1494;&#1502;&#1503;",
+		calTodayButtonLabel: "&#65279;&#1511;&#1508;&#1497;&#1510;&#1492; &#1488;&#1500; &#1492;&#1497;&#1493;&#1501;",
+		titleDateDialogLabel: "&#1489;&#1495;&#1512; &#1514;&#1488;&#1512;&#1497;&#1498;",
+		titleTimeDialogLabel: "&#1489;&#1495;&#1512; &#1494;&#1502;&#1503;",
+		daysOfWeek: ["&#1512;&#1488;&#1513;&#1493;&#1503;", "&#1513;&#1504;&#1497;", "&#1513;&#1500;&#1497;&#1513;&#1497;", "&#1512;&#1489;&#1497;&#1506;&#1497;", "&#1495;&#1502;&#1497;&#1513;&#1497;", "&#1513;&#1497;&#1513;&#1497;", "&#1513;&#1489;&#1514;"],
+		daysOfWeekShort: ["&#1512;&#1488;&#1513;", "&#1513;&#1504;&#1497;", "&#1513;&#1500;&#1497;", "&#1512;&#1489;&#1497;", "&#1495;&#1502;&#1497;", "&#1513;", "&#1513;&#1489;"],
+		monthsOfYear: ["&#1497;&#1504;&#1493;&#1488;&#1512;", "&#1508;&#1489;&#1512;&#1493;&#1488;&#1512;", "&#1502;&#1512;&#1509;", "&#1488;&#1508;&#1512;&#1497;&#1500;", "&#1502;&#1488;&#1497;", "&#1497;&#1493;&#1504;&#1497;", "&#1497;&#1493;&#1500;&#1497;", "&#1488;&#1493;&#1490;&#1493;&#1505;&#1496;", "&#1505;&#1508;&#1496;&#1502;&#1489;&#1512;", "&#1488;&#1493;&#1511;&#1496;&#1493;&#1489;&#1512;", "&#1504;&#1493;&#1489;&#1502;&#1489;&#1512;", "&#1491;&#1510;&#1502;&#1489;&#1512;"],
+		monthsOfYearShort: ["&#1497;&#1504;&#1493;", "&#1508;&#1489;&#1512;", "&#1502;&#1512;&#1509;", "&#1488;&#1508;&#1512;", "&#1502;&#1488;&#1497;", "&#1497;&#1493;&#1504;", "&#1497;&#1493;&#1500;", "&#1488;&#1493;&#1490;", "&#1505;&#1508;&#1496;", "&#1488;&#1493;&#1511;", "&#1504;&#1493;&#1489;", "&#1491;&#1510;&#1502;"],
+		durationLabel: ["&#1497;&#1502;&#1497;&#1501;", "&#1513;&#1506;&#1493;&#1514;", "&#1491;&#1511;&#1493;&#1514;", "&#1513;&#1504;&#1497;&#1493;&#1514;"],
+		durationDays: ["&#1497;&#1493;&#1501;", "&#1497;&#1502;&#1497;&#1501;"],
+		tooltip: "&#1508;&#1514;&#1495; &#1514;&#1488;&#1512;&#1497;&#1499;&#1493;&#1503;",
+		nextMonth: "&#1492;&#1495;&#1493;&#1491;&#1513; &#1492;&#1489;&#1488;",
+		prevMonth: "&#1492;&#1495;&#1493;&#1491;&#1513; &#1492;&#1511;&#1493;&#1491;&#1501;",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['m', 'd', 'y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d-%m-%Y",
+		useArabicIndic: false,
+		isRTL: true,
+		calStartDay: 0,
+		clearButton: "&#1504;&#1511;&#1492;",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "&#1514;&#1488;&#1512;&#1497;&#1499;&#1497;&#1501; &#1488;&#1495;&#1512;&#1497;&#1501;",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'he'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.he.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.he.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.he.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Kobi Hikri <kobi.hikri@gmail.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'he': {
+		setDateButtonLabel: "×§××¢ ×ª××¨××",
+		setTimeButtonLabel: "×§××¢ ×××",
+		setDurationButtonLabel: "×§××¢ ××©× ×××",
+		calTodayButtonLabel: "ï»¿×§×¤××¦× ×× ××××",
+		titleDateDialogLabel: "×××¨ ×ª××¨××",
+		titleTimeDialogLabel: "×××¨ ×××",
+		daysOfWeek: ["×¨××©××", "×©× ×", "×©×××©×", "×¨×××¢×", "××××©×", "×©××©×", "×©××ª"],
+		daysOfWeekShort: ["×¨××©", "×©× ×", "×©××", "×¨××", "×××", "×©", "×©×"],
+		monthsOfYear: ["×× ×××¨", "×¤××¨×××¨", "××¨×¥", "××¤×¨××", "×××", "××× ×", "××××", "×××××¡×", "×¡×¤××××¨", "×××§××××¨", "× ×××××¨", "××¦×××¨"],
+		monthsOfYearShort: ["×× ×", "×¤××¨", "××¨×¥", "××¤×¨", "×××", "××× ", "×××", "×××", "×¡×¤×", "×××§", "× ××", "××¦×"],
+		durationLabel: ["××××", "×©×¢××ª", "××§××ª", "×©× ×××ª"],
+		durationDays: ["×××", "××××"],
+		tooltip: "×¤×ª× ×ª××¨××××",
+		nextMonth: "×××××© ×××",
+		prevMonth: "×××××© ××§×××",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['m', 'd', 'y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d-%m-%Y",
+		useArabicIndic: false,
+		isRTL: true,
+		calStartDay: 0,
+		clearButton: "× ×§×",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "×ª××¨×××× ×××¨××",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'he'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.hr.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.hr.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.hr.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Marko <ma3ko0@gmail.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'hr': {
+		setDateButtonLabel: "Postavi Datum",
+		setTimeButtonLabel: "Postavi Vrijeme",
+		setDurationButtonLabel: "Postavi Trajanje",
+		calTodayButtonLabel: "Dana&#353;nji Datum",
+		titleDateDialogLabel: "Odaberite datum",
+		titleTimeDialogLabel: "Odaberite vrijeme",
+		daysOfWeek: ["Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "&#268;etvrtak", "Petak", "Subota"],
+		daysOfWeekShort: ["Ne", "Po", "Ut", "Sr", "&#268;e", "Pe", "Su"],
+		monthsOfYear: ["Sije&#269;anj", "Velja&#269;a", "O&#382;ujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac"],
+		monthsOfYearShort: ["Sij", "Vel", "O&#382;u", "Tra", "Svi", "Lip", "Srp", "Kol", "Ruj", "Lis", "Stu", "Pro"],
+		durationLabel: ["Dani", "Sati", "Minute", "Sekunde"],
+		durationDays: ["Dan", "Dani"],
+		tooltip: "Otvorite kontrolu",
+		nextMonth: "Sljede&#263;i",
+		prevMonth: "Prethodna",
+		timeFormat: 12,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d.%m.%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Izbri&#353;i",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%l:%M %p",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Ostali datumi",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'hr'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.hr.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.hr.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.hr.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Marko <ma3ko0@gmail.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'hr': {
+		setDateButtonLabel: "Postavi Datum",
+		setTimeButtonLabel: "Postavi Vrijeme",
+		setDurationButtonLabel: "Postavi Trajanje",
+		calTodayButtonLabel: "DanaÅ¡nji Datum",
+		titleDateDialogLabel: "Odaberite datum",
+		titleTimeDialogLabel: "Odaberite vrijeme",
+		daysOfWeek: ["Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Äetvrtak", "Petak", "Subota"],
+		daysOfWeekShort: ["Ne", "Po", "Ut", "Sr", "Äe", "Pe", "Su"],
+		monthsOfYear: ["SijeÄanj", "VeljaÄa", "OÅ¾ujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac"],
+		monthsOfYearShort: ["Sij", "Vel", "OÅ¾u", "Tra", "Svi", "Lip", "Srp", "Kol", "Ruj", "Lis", "Stu", "Pro"],
+		durationLabel: ["Dani", "Sati", "Minute", "Sekunde"],
+		durationDays: ["Dan", "Dani"],
+		tooltip: "Otvorite kontrolu",
+		nextMonth: "SljedeÄi",
+		prevMonth: "Prethodna",
+		timeFormat: 12,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d.%m.%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "IzbriÅ¡i",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%l:%M %p",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Ostali datumi",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'hr'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.hu.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.hu.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.hu.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: titititatatatititi <crowdin>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'hu': {
+		setDateButtonLabel: "D&#225;tum v&#225;laszt&#225;sa",
+		setTimeButtonLabel: "Id&#337; v&#225;laszt&#225;sa",
+		setDurationButtonLabel: "Id&#337;tartam be&#225;ll&#237;t&#225;sa",
+		calTodayButtonLabel: "Ugr&#225;s a mai napra",
+		titleDateDialogLabel: "D&#225;tum kiv&#225;laszt&#225;sa",
+		titleTimeDialogLabel: "Id&#337; kiv&#225;laszt&#225;sa",
+		daysOfWeek: ["Vas&#225;rnap", "H&#233;tf&#337;", "Kedd", "Szerda", "Cs&#252;t&#246;rt&#246;k", "P&#233;ntek", "Szombat"],
+		daysOfWeekShort: ["V", "H", "K", "Sze", "Cs", "P", "Szo"],
+		monthsOfYear: ["Janu&#225;r", "Febru&#225;r", "M&#225;rcius", "&#193;prilis", "M&#225;jus", "J&#250;nius", "J&#250;lius", "Augusztus", "Szeptember", "Okt&#243;ber", "November", "December"],
+		monthsOfYearShort: ["Jan.", "Febr.", "M&#225;rc.", "&#193;pr.", "M&#225;j.", "J&#250;n.", "J&#250;l.", "Aug.", "Szept.", "Okt.", "Nov.", "Dec."],
+		durationLabel: ["Napok", "&#211;ra", "Perc", "M&#225;sodperc"],
+		durationDays: ["Nap", "Napok"],
+		tooltip: "D&#225;tumv&#225;laszt&#243; megnyit&#225;sa",
+		nextMonth: "K&#246;v. h&#243;nap",
+		prevMonth: "El&#337;z&#337; h&#243;nap",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['y','m','d'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%Y.%m.%d.",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 1,
+		clearButton: "T&#246;rl&#233;s",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["de.", "du."],
+		timeOutput: "%k.%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "M&#225;s id&#337;pontok",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'hu'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.hu.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.hu.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.hu.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: titititatatatititi <crowdin>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'hu': {
+		setDateButtonLabel: "DÃ¡tum vÃ¡lasztÃ¡sa",
+		setTimeButtonLabel: "IdÅ vÃ¡lasztÃ¡sa",
+		setDurationButtonLabel: "IdÅtartam beÃ¡llÃ­tÃ¡sa",
+		calTodayButtonLabel: "UgrÃ¡s a mai napra",
+		titleDateDialogLabel: "DÃ¡tum kivÃ¡lasztÃ¡sa",
+		titleTimeDialogLabel: "IdÅ kivÃ¡lasztÃ¡sa",
+		daysOfWeek: ["VasÃ¡rnap", "HÃ©tfÅ", "Kedd", "Szerda", "CsÃ¼tÃ¶rtÃ¶k", "PÃ©ntek", "Szombat"],
+		daysOfWeekShort: ["V", "H", "K", "Sze", "Cs", "P", "Szo"],
+		monthsOfYear: ["JanuÃ¡r", "FebruÃ¡r", "MÃ¡rcius", "Ãprilis", "MÃ¡jus", "JÃºnius", "JÃºlius", "Augusztus", "Szeptember", "OktÃ³ber", "November", "December"],
+		monthsOfYearShort: ["Jan.", "Febr.", "MÃ¡rc.", "Ãpr.", "MÃ¡j.", "JÃºn.", "JÃºl.", "Aug.", "Szept.", "Okt.", "Nov.", "Dec."],
+		durationLabel: ["Napok", "Ãra", "Perc", "MÃ¡sodperc"],
+		durationDays: ["Nap", "Napok"],
+		tooltip: "DÃ¡tumvÃ¡lasztÃ³ megnyitÃ¡sa",
+		nextMonth: "KÃ¶v. hÃ³nap",
+		prevMonth: "ElÅzÅ hÃ³nap",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['y','m','d'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%Y.%m.%d.",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 1,
+		clearButton: "TÃ¶rlÃ©s",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["de.", "du."],
+		timeOutput: "%k.%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "MÃ¡s idÅpontok",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'hu'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.id.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.id.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.id.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'id': {
+		setDateButtonLabel: "Atur Tanggal",
+		setTimeButtonLabel: "Atur Waktu",
+		setDurationButtonLabel: "Atur Durasi",
+		calTodayButtonLabel: "Lompat ke hari ini",
+		titleDateDialogLabel: "Pilih Tanggal",
+		titleTimeDialogLabel: "Pilih Waktu",
+		daysOfWeek: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"],
+		daysOfWeekShort: ["Mi", "Se", "Se", "Ra", "Ka", "Jum", "Sab"],
+		monthsOfYear: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"],
+		monthsOfYearShort: ["Jan", "Feb", "Mar", "Apr", "Me", "Jun", "Jul", "Agu", "Sep", "Okt", "Nov", "Des"],
+		durationLabel: ["Hari", "Jam", "Menit", "Detik"],
+		durationDays: ["Hari", "Hari"],
+		tooltip: "Buka Date Picker",
+		nextMonth: "Bulan Berikutnya",
+		prevMonth: "Bulan Sebelumnya",
+		timeFormat: 12,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h','i'],
+		slideFieldOrder: ['d','m','y'],
+		dateFormat: "%d-%m-%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 1,
+		clearButton: "Bersihkan",
+		durationOrder: ['d','h','i','s'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%l:%M %p",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Tanggal lainnya",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'id'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.id.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.id.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.id.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'id': {
+		setDateButtonLabel: "Atur Tanggal",
+		setTimeButtonLabel: "Atur Waktu",
+		setDurationButtonLabel: "Atur Durasi",
+		calTodayButtonLabel: "Lompat ke hari ini",
+		titleDateDialogLabel: "Pilih Tanggal",
+		titleTimeDialogLabel: "Pilih Waktu",
+		daysOfWeek: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"],
+		daysOfWeekShort: ["Mi", "Se", "Se", "Ra", "Ka", "Jum", "Sab"],
+		monthsOfYear: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"],
+		monthsOfYearShort: ["Jan", "Feb", "Mar", "Apr", "Me", "Jun", "Jul", "Agu", "Sep", "Okt", "Nov", "Des"],
+		durationLabel: ["Hari", "Jam", "Menit", "Detik"],
+		durationDays: ["Hari", "Hari"],
+		tooltip: "Buka Date Picker",
+		nextMonth: "Bulan Berikutnya",
+		prevMonth: "Bulan Sebelumnya",
+		timeFormat: 12,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h','i'],
+		slideFieldOrder: ['d','m','y'],
+		dateFormat: "%d-%m-%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 1,
+		clearButton: "Bersihkan",
+		durationOrder: ['d','h','i','s'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%l:%M %p",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Tanggal lainnya",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'id'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.it.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.it.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.it.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Giuseppe Petagine <giuseppe.petagine@virgilio.it>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'it': {
+		setDateButtonLabel: "Imposta data",
+		setTimeButtonLabel: "Imposta ora",
+		setDurationButtonLabel: "Setta Durata",
+		calTodayButtonLabel: "Vai ad oggi",
+		titleDateDialogLabel: "Scegli data",
+		titleTimeDialogLabel: "Scegli ora",
+		daysOfWeek: ["Domenica", "Luned&#236;", "Marted&#236;", "Mercoled&#236;", "Gioved&#236;", "Venerd&#236;", "Sabato"],
+		daysOfWeekShort: ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa"],
+		monthsOfYear: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"],
+		monthsOfYearShort: ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"],
+		durationLabel: ["Giorni", "Ore", "Minuti", "Secondi"],
+		durationDays: ["Giorno", "Giorni"],
+		tooltip: "Apri Selettore Data",
+		nextMonth: "Mese successivo",
+		prevMonth: "Mese precedente",
+		timeFormat: 12,
+		headerFormat: '%A %-d %B %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d-%m-%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Pulisci",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%l:%M %p",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Altre date",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'it'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.it.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.it.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.it.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Giuseppe Petagine <giuseppe.petagine@virgilio.it>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'it': {
+		setDateButtonLabel: "Imposta data",
+		setTimeButtonLabel: "Imposta ora",
+		setDurationButtonLabel: "Setta Durata",
+		calTodayButtonLabel: "Vai ad oggi",
+		titleDateDialogLabel: "Scegli data",
+		titleTimeDialogLabel: "Scegli ora",
+		daysOfWeek: ["Domenica", "Luned狸", "Marted狸", "Mercoled狸", "Gioved狸", "Venerd狸", "Sabato"],
+		daysOfWeekShort: ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa"],
+		monthsOfYear: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"],
+		monthsOfYearShort: ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"],
+		durationLabel: ["Giorni", "Ore", "Minuti", "Secondi"],
+		durationDays: ["Giorno", "Giorni"],
+		tooltip: "Apri Selettore Data",
+		nextMonth: "Mese successivo",
+		prevMonth: "Mese precedente",
+		timeFormat: 12,
+		headerFormat: '%A %-d %B %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d-%m-%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Pulisci",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%l:%M %p",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Altre date",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'it'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ja.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ja.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ja.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Moon Dial
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'ja': {
+		setDateButtonLabel: "&#26085;&#20184;&#12434;&#35373;&#23450;",
+		setTimeButtonLabel: "&#26178;&#21051;&#12434;&#35373;&#23450;",
+		setDurationButtonLabel: "&#26399;&#38291;&#12434;&#35373;&#23450;",
+		calTodayButtonLabel: "&#20170;&#26085;&#12408;&#12472;&#12515;&#12531;&#12503;",
+		titleDateDialogLabel: "&#26085;&#20184;&#12434;&#36984;&#25246;&#12375;&#12414;&#12377;&#12290;",
+		titleTimeDialogLabel: "&#26178;&#38291;&#12434;&#36984;&#25246;&#12375;&#12414;&#12377;&#12290;",
+		daysOfWeek: ["&#26085;&#26332;", "&#26376;&#26332;", "&#28779;&#26332;", "&#27700;&#26332;", "&#26408;&#26332;", "&#37329;&#26332;", "&#22303;&#26332;"],
+		daysOfWeekShort: ["&#26085;", "&#26376;", "&#28779;", "&#27700;", "&#26408;", "&#37329;", "&#22303;"],
+		monthsOfYear: ["1&#26376;", "2&#26376;", "3&#26376;", "4&#26376;", "5&#26376;", "6&#26376;", "7&#26376;", "8&#26376;", "9&#26376;", "10&#26376;", "11&#26376;", "12&#26376;"],
+		monthsOfYearShort: ["1&#26376;", "2&#26376;", "3&#26376;", "4&#26376;", "5&#26376;", "6&#26376;", "7&#26376;", "8&#26376;", "9&#26376;", "10&#26376;", "11&#26376;", "12&#26376;"],
+		durationLabel: ["&#26085;", "&#26178;&#38291;", "&#20998;", "&#31186;"],
+		durationDays: ["&#26085;", "&#26085;"],
+		tooltip: "&#26085;&#20184;&#12434;&#36984;&#25246;&#12377;&#12427;",
+		nextMonth: "&#65279;&#27425;&#12398;&#26376;",
+		prevMonth: "&#65279;&#21069;&#26376;",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['m', 'd', 'y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%Y/%m/%d",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "&#12463;&#12522;&#12450;",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "&#12381;&#12398;&#20182;&#12398;&#26085;&#20184;",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'ja'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ja.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ja.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ja.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Moon Dial
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'ja': {
+		setDateButtonLabel: "æ¥ä»ãè¨­å®",
+		setTimeButtonLabel: "æå»ãè¨­å®",
+		setDurationButtonLabel: "æéãè¨­å®",
+		calTodayButtonLabel: "ä»æ¥ã¸ã¸ã£ã³ã",
+		titleDateDialogLabel: "æ¥ä»ãé¸æãã¾ãã",
+		titleTimeDialogLabel: "æéãé¸æãã¾ãã",
+		daysOfWeek: ["æ¥æ", "ææ", "ç«æ", "æ°´æ", "æ¨æ", "éæ", "åæ"],
+		daysOfWeekShort: ["æ¥", "æ", "ç«", "æ°´", "æ¨", "é", "å"],
+		monthsOfYear: ["1æ", "2æ", "3æ", "4æ", "5æ", "6æ", "7æ", "8æ", "9æ", "10æ", "11æ", "12æ"],
+		monthsOfYearShort: ["1æ", "2æ", "3æ", "4æ", "5æ", "6æ", "7æ", "8æ", "9æ", "10æ", "11æ", "12æ"],
+		durationLabel: ["æ¥", "æé", "å", "ç§"],
+		durationDays: ["æ¥", "æ¥"],
+		tooltip: "æ¥ä»ãé¸æãã",
+		nextMonth: "ï»¿æ¬¡ã®æ",
+		prevMonth: "ï»¿åæ",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['m', 'd', 'y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%Y/%m/%d",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "ã¯ãªã¢",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "ãã®ä»ã®æ¥ä»",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'ja'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ko.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ko.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ko.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'ko': {
+		setDateButtonLabel: "&#45803;&#44592;",
+		setTimeButtonLabel: "&#45803;&#44592;",
+		setDurationButtonLabel: "&#45803;&#44592;",
+		calTodayButtonLabel: "&#65279;&#50724;&#45720; &#51060;&#46041;",
+		titleDateDialogLabel: "&#45216;&#51676; &#49440;&#53469;",
+		titleTimeDialogLabel: "&#49884;&#44036; &#49440;&#53469;",
+		daysOfWeek: ["&#51068;&#50836;&#51068;", "&#50900;&#50836;&#51068;", "&#54868;&#50836;&#51068;", "&#49688;&#50836;&#51068;", "&#47785;&#50836;&#51068;", "&#44552;&#50836;&#51068;", "&#53664;&#50836;&#51068;"],
+		daysOfWeekShort: ["&#51068;", "&#50900;", "&#54868;", "&#49688;", "&#47785;", "&#44552;", "&#53664;"],
+		monthsOfYear: ["1&#50900;", "2&#50900;", "3&#50900;", "4&#50900;", "5&#50900;", "6&#50900;", "7&#50900;", "8&#50900;", "9&#50900;", "10&#50900;", "11&#50900;", "12&#50900;"],
+		monthsOfYearShort: ["1&#50900;", "2&#50900;", "3&#50900;", "4&#50900;", "5&#50900;", "6&#50900;", "7&#50900;", "8&#50900;", "9&#50900;", "10&#50900;", "11&#50900;", "12&#50900;"],
+		durationLabel: ["&#45216;&#51676;", "&#49884;&#44036;", "&#48516;", "&#52488;"],
+		durationDays: ["&#54616;&#47336;", "&#45216;&#51676;"],
+		tooltip: "&#65279;&#50724;&#54536; &#45216;&#51676; &#49440;&#53469;",
+		nextMonth: "&#65279;&#45796;&#51020; &#45804;",
+		prevMonth: "&#65279;&#51060;&#51204; &#45804;",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['y','m','d'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%Y-%m-%d",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "&#51648;&#50864;&#44592;",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "&#45796;&#47480; &#45216;&#51676;",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'ko'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ko.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ko.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ko.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'ko': {
+		setDateButtonLabel: "ë«ê¸°",
+		setTimeButtonLabel: "ë«ê¸°",
+		setDurationButtonLabel: "ë«ê¸°",
+		calTodayButtonLabel: "ï»¿ì¤ë ì´ë",
+		titleDateDialogLabel: "ë ì§ ì í",
+		titleTimeDialogLabel: "ìê° ì í",
+		daysOfWeek: ["ì¼ìì¼", "ììì¼", "íìì¼", "ììì¼", "ëª©ìì¼", "ê¸ìì¼", "í ìì¼"],
+		daysOfWeekShort: ["ì¼", "ì", "í", "ì", "ëª©", "ê¸", "í "],
+		monthsOfYear: ["1ì", "2ì", "3ì", "4ì", "5ì", "6ì", "7ì", "8ì", "9ì", "10ì", "11ì", "12ì"],
+		monthsOfYearShort: ["1ì", "2ì", "3ì", "4ì", "5ì", "6ì", "7ì", "8ì", "9ì", "10ì", "11ì", "12ì"],
+		durationLabel: ["ë ì§", "ìê°", "ë¶", "ì´"],
+		durationDays: ["íë£¨", "ë ì§"],
+		tooltip: "ï»¿ì¤í ë ì§ ì í",
+		nextMonth: "ï»¿ë¤ì ë¬",
+		prevMonth: "ï»¿ì´ì  ë¬",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['y','m','d'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%Y-%m-%d",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "ì§ì°ê¸°",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "ë¤ë¥¸ ë ì§",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'ko'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.lt.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.lt.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.lt.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Tadas Subonis <tadas.subonis@affecto.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'lt': {
+		setDateButtonLabel: "Data",
+		setTimeButtonLabel: "Laikas",
+		setDurationButtonLabel: "Trukm&#279;",
+		calTodayButtonLabel: "&#352;iandiena",
+		titleDateDialogLabel: "Pasirinkti dat&#261;",
+		titleTimeDialogLabel: "Pasirinkite laiko",
+		daysOfWeek: ["Sekmadienis", "Pirmadienis", "Antradienis", "Tre&#269;iadienis", "Ketvirtadienis", "Penktadienis", "&#352;e&#353;tadienis"],
+		daysOfWeekShort: ["Sk", "Pr", "An", "Tr", "Kt", "Pn", "Ss"],
+		monthsOfYear: ["Sausis", "Vasaris", "Kovas", "Balandis", "Gegu&#382;&#279;", "Bir&#382;elis", "Liepa", "Rugpj&#363;tis", "Rugs&#279;jis", "Spalis", "Lapkritis", "Gruodis"],
+		monthsOfYearShort: ["Sau", "Vas", "Kov", "Bal", "Geg", "Bir", "Lie", "Rug", "Rgs", "Spa", "Lap", "Gru"],
+		durationLabel: ["Dienos", "Valandos", "Minut&#279;s", "Sekunde&#279;s"],
+		durationDays: ["Diena", "Dienos"],
+		tooltip: "Atidaryti datos parinkiklis",
+		nextMonth: "Atgal",
+		prevMonth: "Pirmyn",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['y', 'm', 'd'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%Y-%m-%d",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Ai&#353;kus",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Kitas datas",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'lt'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.lt.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.lt.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.lt.utf8.js	(revision 101)
@@ -0,0 +1,50 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Tadas Subonis <tadas.subonis@affecto.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'lt': {
+		setDateButtonLabel: "Data",
+		setTimeButtonLabel: "Laikas",
+		setDurationButtonLabel: "TrukmÄ",
+		calTodayButtonLabel: "Å iandiena",
+		titleDateDialogLabel: "Pasirinkti datÄ
+",
+		titleTimeDialogLabel: "Pasirinkite laiko",
+		daysOfWeek: ["Sekmadienis", "Pirmadienis", "Antradienis", "TreÄiadienis", "Ketvirtadienis", "Penktadienis", "Å eÅ¡tadienis"],
+		daysOfWeekShort: ["Sk", "Pr", "An", "Tr", "Kt", "Pn", "Ss"],
+		monthsOfYear: ["Sausis", "Vasaris", "Kovas", "Balandis", "GeguÅ¾Ä", "BirÅ¾elis", "Liepa", "RugpjÅ«tis", "RugsÄjis", "Spalis", "Lapkritis", "Gruodis"],
+		monthsOfYearShort: ["Sau", "Vas", "Kov", "Bal", "Geg", "Bir", "Lie", "Rug", "Rgs", "Spa", "Lap", "Gru"],
+		durationLabel: ["Dienos", "Valandos", "MinutÄs", "SekundeÄs"],
+		durationDays: ["Diena", "Dienos"],
+		tooltip: "Atidaryti datos parinkiklis",
+		nextMonth: "Atgal",
+		prevMonth: "Pirmyn",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['y', 'm', 'd'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%Y-%m-%d",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "AiÅ¡kus",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Kitas datas",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'lt'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.nl-BE.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.nl-BE.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.nl-BE.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'nl-BE': {
+		setDateButtonLabel: "Datum instellen",
+		setTimeButtonLabel: "Tijd instellen",
+		setDurationButtonLabel: "Duur instellen",
+		calTodayButtonLabel: "Spring naar vandaag",
+		titleDateDialogLabel: "Kies datum",
+		titleTimeDialogLabel: "Kies tijd",
+		daysOfWeek: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag"],
+		daysOfWeekShort: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za"],
+		monthsOfYear: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
+		monthsOfYearShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+		durationLabel: ["Dagen", "Uren", "Minuten", "Seconden"],
+		durationDays: ["Dag", "Dagen"],
+		tooltip: "Open de controle",
+		nextMonth: "Volgende maand",
+		prevMonth: "Vorige maand",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['d','m','y'],
+		dateFormat: "%d-%m-%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Wissen",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Andere datums",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'nl-BE'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.nl-BE.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.nl-BE.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.nl-BE.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'nl-BE': {
+		setDateButtonLabel: "Datum instellen",
+		setTimeButtonLabel: "Tijd instellen",
+		setDurationButtonLabel: "Duur instellen",
+		calTodayButtonLabel: "Spring naar vandaag",
+		titleDateDialogLabel: "Kies datum",
+		titleTimeDialogLabel: "Kies tijd",
+		daysOfWeek: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag"],
+		daysOfWeekShort: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za"],
+		monthsOfYear: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
+		monthsOfYearShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+		durationLabel: ["Dagen", "Uren", "Minuten", "Seconden"],
+		durationDays: ["Dag", "Dagen"],
+		tooltip: "Open de controle",
+		nextMonth: "Volgende maand",
+		prevMonth: "Vorige maand",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['d','m','y'],
+		dateFormat: "%d-%m-%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Wissen",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Andere datums",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'nl-BE'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.nl.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.nl.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.nl.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: G. Hengeveld <info@ghengeveld.nl>, Arjan ven Bentem <crowdin>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'nl': {
+		setDateButtonLabel: "Datum instellen",
+		setTimeButtonLabel: "Tijd instellen",
+		setDurationButtonLabel: "Duur instellen",
+		calTodayButtonLabel: "Spring naar vandaag",
+		titleDateDialogLabel: "Kies datum",
+		titleTimeDialogLabel: "Kies tijd",
+		daysOfWeek: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag"],
+		daysOfWeekShort: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za"],
+		monthsOfYear: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
+		monthsOfYearShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+		durationLabel: ["Dagen", "Uren", "Minuten", "Seconden"],
+		durationDays: ["Dag", "Dagen"],
+		tooltip: "Open de controle",
+		nextMonth: "Volgende maand",
+		prevMonth: "Vorige maand",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['d','m','y'],
+		dateFormat: "%d-%m-%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Wissen",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Andere datums",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'nl'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.nl.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.nl.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.nl.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: G. Hengeveld <info@ghengeveld.nl>, Arjan ven Bentem <crowdin>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'nl': {
+		setDateButtonLabel: "Datum instellen",
+		setTimeButtonLabel: "Tijd instellen",
+		setDurationButtonLabel: "Duur instellen",
+		calTodayButtonLabel: "Spring naar vandaag",
+		titleDateDialogLabel: "Kies datum",
+		titleTimeDialogLabel: "Kies tijd",
+		daysOfWeek: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag"],
+		daysOfWeekShort: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za"],
+		monthsOfYear: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
+		monthsOfYearShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+		durationLabel: ["Dagen", "Uren", "Minuten", "Seconden"],
+		durationDays: ["Dag", "Dagen"],
+		tooltip: "Open de controle",
+		nextMonth: "Volgende maand",
+		prevMonth: "Vorige maand",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['d','m','y'],
+		dateFormat: "%d-%m-%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Wissen",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Andere datums",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'nl'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.no.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.no.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.no.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'no': {
+		setDateButtonLabel: "Velg dato",
+		setTimeButtonLabel: "Velg tidspunkt",
+		setDurationButtonLabel: "Velg varighet",
+		calTodayButtonLabel: "G&#229; til dagens dato",
+		titleDateDialogLabel: "Velg dato",
+		titleTimeDialogLabel: "Velg tidspunkt",
+		daysOfWeek: ["S&#248;ndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "L&#248;rdag"],
+		daysOfWeekShort: ["S&#248;n", "Man", "Tirs", "Ons", "Tors", "Fre", "L&#248;r"],
+		monthsOfYear: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"],
+		monthsOfYearShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"],
+		durationLabel: ["Dager", "Timer", "Minutter", "Sekunder"],
+		durationDays: ["Dag", "Dager"],
+		tooltip: "&#197;pne datovelger",
+		nextMonth: "Neste m&#229;ned",
+		prevMonth: "Forrige m&#229;ned",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%m/%d/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Klart",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Andre datoer",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'no'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.no.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.no.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.no.utf8.js	(revision 101)
@@ -0,0 +1,50 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'no': {
+		setDateButtonLabel: "Velg dato",
+		setTimeButtonLabel: "Velg tidspunkt",
+		setDurationButtonLabel: "Velg varighet",
+		calTodayButtonLabel: "GÃ¥ til dagens dato",
+		titleDateDialogLabel: "Velg dato",
+		titleTimeDialogLabel: "Velg tidspunkt",
+		daysOfWeek: ["SÃ¸ndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "LÃ¸rdag"],
+		daysOfWeekShort: ["SÃ¸n", "Man", "Tirs", "Ons", "Tors", "Fre", "LÃ¸r"],
+		monthsOfYear: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"],
+		monthsOfYearShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"],
+		durationLabel: ["Dager", "Timer", "Minutter", "Sekunder"],
+		durationDays: ["Dag", "Dager"],
+		tooltip: "Ã
+pne datovelger",
+		nextMonth: "Neste mÃ¥ned",
+		prevMonth: "Forrige mÃ¥ned",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%m/%d/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Klart",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Andre datoer",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'no'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.pl.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.pl.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.pl.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Zbigniew Motyka <zbigniew@motyka.net.pl>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'pl': {
+		setDateButtonLabel: "Ustaw dat&#281;",
+		setTimeButtonLabel: "Ustaw godzin&#281;",
+		setDurationButtonLabel: "Ustaw okres",
+		calTodayButtonLabel: "Dzisiaj",
+		titleDateDialogLabel: "Wybierz dat&#281;",
+		titleTimeDialogLabel: "Wybierz czas",
+		daysOfWeek: ["Niedziela", "Poniedzia&#322;ek", "Wtorek", "&#346;roda", "Czwartek", "Pi&#261;tek", "Sobota"],
+		daysOfWeekShort: ["Nd", "Pn", "Wt", "&#346;r", "Cz", "Pt", "Sb"],
+		monthsOfYear: ["Stycze&#324;", "Luty", "Marzec", "Kwiecie&#324;", "Maj", "Czerwiec", "Lipiec", "Sierpie&#324;", "Wrzesie&#324;", "Pa&#378;dziernik", "Listopad", "Grudzie&#324;"],
+		monthsOfYearShort: ["Sty", "Lut", "Mar", "Kwi", "Maj", "Cze", "Lip", "Sie", "Wrz", "Pa&#378;", "Lis", "Gru"],
+		durationLabel: ["Dni", "Godziny", "Minuty", "Sekundy"],
+		durationDays: ["Dzie&#324;", "Dni"],
+		tooltip: "Otw&#243;rz wyb&#243;r daty",
+		nextMonth: "Nast&#281;pny miesi&#261;c",
+		prevMonth: "Poprzedni miesi&#261;c",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%Y-%m-%d",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Wyczy&#347;&#263;",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Inne daty",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'pl'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.pl.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.pl.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.pl.utf8.js	(revision 101)
@@ -0,0 +1,52 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Zbigniew Motyka <zbigniew@motyka.net.pl>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'pl': {
+		setDateButtonLabel: "Ustaw datÄ",
+		setTimeButtonLabel: "Ustaw godzinÄ",
+		setDurationButtonLabel: "Ustaw okres",
+		calTodayButtonLabel: "Dzisiaj",
+		titleDateDialogLabel: "Wybierz datÄ",
+		titleTimeDialogLabel: "Wybierz czas",
+		daysOfWeek: ["Niedziela", "PoniedziaÅek", "Wtorek", "Åroda", "Czwartek", "PiÄ
+tek", "Sobota"],
+		daysOfWeekShort: ["Nd", "Pn", "Wt", "År", "Cz", "Pt", "Sb"],
+		monthsOfYear: ["StyczeÅ", "Luty", "Marzec", "KwiecieÅ", "Maj", "Czerwiec", "Lipiec", "SierpieÅ", "WrzesieÅ", "PaÅºdziernik", "Listopad", "GrudzieÅ"],
+		monthsOfYearShort: ["Sty", "Lut", "Mar", "Kwi", "Maj", "Cze", "Lip", "Sie", "Wrz", "PaÅº", "Lis", "Gru"],
+		durationLabel: ["Dni", "Godziny", "Minuty", "Sekundy"],
+		durationDays: ["DzieÅ", "Dni"],
+		tooltip: "OtwÃ³rz wybÃ³r daty",
+		nextMonth: "NastÄpny miesiÄ
+c",
+		prevMonth: "Poprzedni miesiÄ
+c",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%Y-%m-%d",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "WyczyÅÄ",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Inne daty",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'pl'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.pt-BR.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.pt-BR.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.pt-BR.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Rodrigo Vieira <rodrigovieira1994@gmail.com>, Marcelo Dezem <crowdin>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'pt-BR': {
+		setDateButtonLabel: "Informar data",
+		setTimeButtonLabel: "Informar hora",
+		setDurationButtonLabel: "Informar dura&#231;&#227;o",
+		calTodayButtonLabel: "Ir para hoje",
+		titleDateDialogLabel: "Escolher data",
+		titleTimeDialogLabel: "Escolha a hora",
+		daysOfWeek: ["Domingo", "Segunda", "Ter&#231;a", "Quarta", "Quinta", "Sexta", "S&#225;bado"],
+		daysOfWeekShort: ["D", "S", "T", "Q", "Q", "S", "S"],
+		monthsOfYear: ["Janeiro", "Fevereiro", "Mar&#231;o", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
+		monthsOfYearShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
+		durationLabel: ["Dias", "Horas", "Minutos", "Segundos"],
+		durationDays: ["Dia", "Dias"],
+		tooltip: "Selecionador de data aberta",
+		nextMonth: "Pr&#243;ximo m&#234;s",
+		prevMonth: "M&#234;s anterior",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Limpar",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Outras datas",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'pt-BR'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.pt-BR.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.pt-BR.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.pt-BR.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Rodrigo Vieira <rodrigovieira1994@gmail.com>, Marcelo Dezem <crowdin>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'pt-BR': {
+		setDateButtonLabel: "Informar data",
+		setTimeButtonLabel: "Informar hora",
+		setDurationButtonLabel: "Informar dura巽達o",
+		calTodayButtonLabel: "Ir para hoje",
+		titleDateDialogLabel: "Escolher data",
+		titleTimeDialogLabel: "Escolha a hora",
+		daysOfWeek: ["Domingo", "Segunda", "Ter巽a", "Quarta", "Quinta", "Sexta", "S叩bado"],
+		daysOfWeekShort: ["D", "S", "T", "Q", "Q", "S", "S"],
+		monthsOfYear: ["Janeiro", "Fevereiro", "Mar巽o", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
+		monthsOfYearShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
+		durationLabel: ["Dias", "Horas", "Minutos", "Segundos"],
+		durationDays: ["Dia", "Dias"],
+		tooltip: "Selecionador de data aberta",
+		nextMonth: "Pr坦ximo m棚s",
+		prevMonth: "M棚s anterior",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Limpar",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Outras datas",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'pt-BR'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.pt-PT.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.pt-PT.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.pt-PT.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'pt-PT': {
+		setDateButtonLabel: "Fechar",
+		setTimeButtonLabel: "Fechar",
+		setDurationButtonLabel: "Fechar",
+		calTodayButtonLabel: "Ir para hoje",
+		titleDateDialogLabel: "Escolher data",
+		titleTimeDialogLabel: "Escolha a hora",
+		daysOfWeek: ["Domingo", "Segunda-feira", "Ter&#231;a-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "S&#225;bado"],
+		daysOfWeekShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "S&#225;b"],
+		monthsOfYear: ["Janeiro", "Fevereiro", "Mar&#231;o", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
+		monthsOfYearShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
+		durationLabel: ["Dias", "Horas", "Minutos", "Segundos"],
+		durationDays: ["Dia", "Dias"],
+		tooltip: "Abrir selecionador de data",
+		nextMonth: "M&#234;s Seguinte",
+		prevMonth: "M&#234;s anterior",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Limpar",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Outras datas",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'pt-PT'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.pt-PT.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.pt-PT.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.pt-PT.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'pt-PT': {
+		setDateButtonLabel: "Fechar",
+		setTimeButtonLabel: "Fechar",
+		setDurationButtonLabel: "Fechar",
+		calTodayButtonLabel: "Ir para hoje",
+		titleDateDialogLabel: "Escolher data",
+		titleTimeDialogLabel: "Escolha a hora",
+		daysOfWeek: ["Domingo", "Segunda-feira", "Ter巽a-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "S叩bado"],
+		daysOfWeekShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "S叩b"],
+		monthsOfYear: ["Janeiro", "Fevereiro", "Mar巽o", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
+		monthsOfYearShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
+		durationLabel: ["Dias", "Horas", "Minutos", "Segundos"],
+		durationDays: ["Dia", "Dias"],
+		tooltip: "Abrir selecionador de data",
+		nextMonth: "M棚s Seguinte",
+		prevMonth: "M棚s anterior",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Limpar",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Outras datas",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'pt-PT'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ro.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ro.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ro.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'ro': {
+		setDateButtonLabel: "Seta&#355;i data",
+		setTimeButtonLabel: "Seta&#355;i timp",
+		setDurationButtonLabel: "Seta&#355;i durata",
+		calTodayButtonLabel: "Salt la azi",
+		titleDateDialogLabel: "Alege&#355;i data",
+		titleTimeDialogLabel: "Alege timp",
+		daysOfWeek: ["Duminic&#259;", "Luni", "Mar&#355;i", "Miercuri", "Joi", "Vineri", "S&#226;mb&#259;t&#259;"],
+		daysOfWeekShort: ["Dum", "Lun", "Mar", "Mie", "Joi", "Vin", "S&#226;m"],
+		monthsOfYear: ["Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"],
+		monthsOfYearShort: ["Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+		durationLabel: ["Zi", "Ore", "Minute", "Secunde"],
+		durationDays: ["Ziua", "Zi"],
+		tooltip: "Deschide selectorul de dat&#259;",
+		nextMonth: "Luna urm&#259;toare",
+		prevMonth: "Luna precedent&#259;",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d.%m.%y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Clar",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Alte date",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'ro'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ro.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ro.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ro.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'ro': {
+		setDateButtonLabel: "SetaÅ£i data",
+		setTimeButtonLabel: "SetaÅ£i timp",
+		setDurationButtonLabel: "SetaÅ£i durata",
+		calTodayButtonLabel: "Salt la azi",
+		titleDateDialogLabel: "AlegeÅ£i data",
+		titleTimeDialogLabel: "Alege timp",
+		daysOfWeek: ["DuminicÄ", "Luni", "MarÅ£i", "Miercuri", "Joi", "Vineri", "SÃ¢mbÄtÄ"],
+		daysOfWeekShort: ["Dum", "Lun", "Mar", "Mie", "Joi", "Vin", "SÃ¢m"],
+		monthsOfYear: ["Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"],
+		monthsOfYearShort: ["Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+		durationLabel: ["Zi", "Ore", "Minute", "Secunde"],
+		durationDays: ["Ziua", "Zi"],
+		tooltip: "Deschide selectorul de datÄ",
+		nextMonth: "Luna urmÄtoare",
+		prevMonth: "Luna precedentÄ",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d.%m.%y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Clar",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Alte date",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'ro'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ru.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ru.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ru.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Alexander Zolotko <azolotko@gmail.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'ru': {
+		setDateButtonLabel: "&#1059;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1080;&#1090;&#1100; &#1044;&#1072;&#1090;&#1091;",
+		setTimeButtonLabel: "&#1059;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1080;&#1090;&#1100; &#1042;&#1088;&#1077;&#1084;&#1103;",
+		setDurationButtonLabel: "&#1059;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1080;&#1090;&#1100; &#1055;&#1088;&#1086;&#1076;&#1086;&#1083;&#1078;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1086;&#1089;&#1090;&#1100;",
+		calTodayButtonLabel: "&#1057;&#1077;&#1075;&#1086;&#1076;&#1085;&#1103;",
+		titleDateDialogLabel: "&#1042;&#1099;&#1073;&#1088;&#1072;&#1090;&#1100; &#1076;&#1072;&#1090;&#1091;",
+		titleTimeDialogLabel: "&#1042;&#1099;&#1073;&#1088;&#1072;&#1090;&#1100; &#1074;&#1088;&#1077;&#1084;&#1103;",
+		daysOfWeek: ["&#1042;&#1086;&#1089;&#1082;&#1088;&#1077;&#1089;&#1077;&#1085;&#1100;&#1077;", "&#1055;&#1086;&#1085;&#1077;&#1076;&#1077;&#1083;&#1100;&#1085;&#1080;&#1082;", "&#1042;&#1090;&#1086;&#1088;&#1085;&#1080;&#1082;", "&#1057;&#1088;&#1077;&#1076;&#1072;", "&#1063;&#1077;&#1090;&#1074;&#1077;&#1088;&#1075;", "&#1055;&#1103;&#1090;&#1085;&#1080;&#1094;&#1072;", "&#1057;&#1091;&#1073;&#1073;&#1086;&#1090;&#1072;"],
+		daysOfWeekShort: ["&#1042;&#1089;", "&#1055;&#1085;", "&#1042;&#1090;", "&#1057;&#1088;", "&#1063;&#1090;", "&#1055;&#1090;", "&#1057;&#1073;"],
+		monthsOfYear: ["&#1071;&#1085;&#1074;&#1072;&#1088;&#1100;", "&#1060;&#1077;&#1074;&#1088;&#1072;&#1083;&#1100;", "&#1052;&#1072;&#1088;&#1090;", "&#1040;&#1087;&#1088;&#1077;&#1083;&#1100;", "&#1052;&#1072;&#1081;", "&#1048;&#1102;&#1085;&#1100;", "&#1048;&#1102;&#1083;&#1100;", "&#1040;&#1074;&#1075;&#1091;&#1089;&#1090;", "&#1057;&#1077;&#1085;&#1090;&#1103;&#1073;&#1088;&#1100;", "&#1054;&#1082;&#1090;&#1103;&#1073;&#1088;&#1100;", "&#1053;&#1086;&#1103;&#1073;&#1088;&#1100;", "&#1044;&#1077;&#1082;&#1072;&#1073;&#1088;&#1100;"],
+		monthsOfYearShort: ["&#1071;&#1085;&#1074;", "&#1060;&#1077;&#1074;", "&#1052;&#1072;&#1088;", "&#1040;&#1087;&#1088;", "&#1052;&#1072;&#1081;", "&#1048;&#1102;&#1085;", "&#1048;&#1102;&#1083;", "&#1040;&#1074;&#1075;", "&#1057;&#1077;&#1085;", "&#1054;&#1082;&#1090;", "&#1053;&#1086;&#1103;", "&#1044;&#1077;&#1082;"],
+		durationLabel: ["&#1044;&#1085;&#1080;", "&#1063;&#1072;&#1089;&#1099;", "&#1052;&#1080;&#1085;&#1091;&#1090;&#1099;", "&#1057;&#1077;&#1082;&#1091;&#1085;&#1076;&#1099;"],
+		durationDays: ["&#1044;&#1077;&#1085;&#1100;", "&#1044;&#1085;&#1080;"],
+		tooltip: "&#1054;&#1090;&#1082;&#1088;&#1099;&#1090;&#1099;&#1081; &#1074;&#1099;&#1073;&#1086;&#1088; &#1076;&#1072;&#1090;&#1099;",
+		nextMonth: "&#1057;&#1083;&#1077;&#1076;",
+		prevMonth: "&#1055;&#1088;&#1077;&#1076;",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d.%m.%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "&#1071;&#1089;&#1085;&#1086;",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "&#1044;&#1088;&#1091;&#1075;&#1080;&#1077; &#1076;&#1072;&#1090;&#1099;",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'ru'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ru.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ru.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.ru.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Alexander Zolotko <azolotko@gmail.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'ru': {
+		setDateButtonLabel: "Ð£ÑÑÐ°Ð½Ð¾Ð²Ð¸ÑÑ ÐÐ°ÑÑ",
+		setTimeButtonLabel: "Ð£ÑÑÐ°Ð½Ð¾Ð²Ð¸ÑÑ ÐÑÐµÐ¼Ñ",
+		setDurationButtonLabel: "Ð£ÑÑÐ°Ð½Ð¾Ð²Ð¸ÑÑ ÐÑÐ¾Ð´Ð¾Ð»Ð¶Ð¸ÑÐµÐ»ÑÐ½Ð¾ÑÑÑ",
+		calTodayButtonLabel: "Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ",
+		titleDateDialogLabel: "ÐÑÐ±ÑÐ°ÑÑ Ð´Ð°ÑÑ",
+		titleTimeDialogLabel: "ÐÑÐ±ÑÐ°ÑÑ Ð²ÑÐµÐ¼Ñ",
+		daysOfWeek: ["ÐÐ¾ÑÐºÑÐµÑÐµÐ½ÑÐµ", "ÐÐ¾Ð½ÐµÐ´ÐµÐ»ÑÐ½Ð¸Ðº", "ÐÑÐ¾ÑÐ½Ð¸Ðº", "Ð¡ÑÐµÐ´Ð°", "Ð§ÐµÑÐ²ÐµÑÐ³", "ÐÑÑÐ½Ð¸ÑÐ°", "Ð¡ÑÐ±Ð±Ð¾ÑÐ°"],
+		daysOfWeekShort: ["ÐÑ", "ÐÐ½", "ÐÑ", "Ð¡Ñ", "Ð§Ñ", "ÐÑ", "Ð¡Ð±"],
+		monthsOfYear: ["Ð¯Ð½Ð²Ð°ÑÑ", "Ð¤ÐµÐ²ÑÐ°Ð»Ñ", "ÐÐ°ÑÑ", "ÐÐ¿ÑÐµÐ»Ñ", "ÐÐ°Ð¹", "ÐÑÐ½Ñ", "ÐÑÐ»Ñ", "ÐÐ²Ð³ÑÑÑ", "Ð¡ÐµÐ½ÑÑÐ±ÑÑ", "ÐÐºÑÑÐ±ÑÑ", "ÐÐ¾ÑÐ±ÑÑ", "ÐÐµÐºÐ°Ð±ÑÑ"],
+		monthsOfYearShort: ["Ð¯Ð½Ð²", "Ð¤ÐµÐ²", "ÐÐ°Ñ", "ÐÐ¿Ñ", "ÐÐ°Ð¹", "ÐÑÐ½", "ÐÑÐ»", "ÐÐ²Ð³", "Ð¡ÐµÐ½", "ÐÐºÑ", "ÐÐ¾Ñ", "ÐÐµÐº"],
+		durationLabel: ["ÐÐ½Ð¸", "Ð§Ð°ÑÑ", "ÐÐ¸Ð½ÑÑÑ", "Ð¡ÐµÐºÑÐ½Ð´Ñ"],
+		durationDays: ["ÐÐµÐ½Ñ", "ÐÐ½Ð¸"],
+		tooltip: "ÐÑÐºÑÑÑÑÐ¹ Ð²ÑÐ±Ð¾Ñ Ð´Ð°ÑÑ",
+		nextMonth: "Ð¡Ð»ÐµÐ´",
+		prevMonth: "ÐÑÐµÐ´",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d.%m.%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Ð¯ÑÐ½Ð¾",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "ÐÑÑÐ³Ð¸Ðµ Ð´Ð°ÑÑ",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'ru'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.sr.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.sr.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.sr.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'sr': {
+		setDateButtonLabel: "&#1047;&#1072;&#1090;&#1074;&#1086;&#1088;&#1080;",
+		setTimeButtonLabel: "&#1047;&#1072;&#1090;&#1074;&#1086;&#1088;&#1080;",
+		setDurationButtonLabel: "&#1047;&#1072;&#1090;&#1074;&#1086;&#1088;&#1080;",
+		calTodayButtonLabel: "&#1044;&#1072;&#1085;&#1072;&#1089;",
+		titleDateDialogLabel: "&#1048;&#1079;&#1072;&#1073;&#1077;&#1088;&#1080;&#1090;&#1077; &#1076;&#1072;&#1090;&#1091;&#1084;",
+		titleTimeDialogLabel: "&#1054;&#1076;&#1072;&#1073;&#1077;&#1088;&#1080;&#1090;&#1077; &#1074;&#1088;&#1077;&#1084;&#1077;",
+		daysOfWeek: ["&#1053;&#1077;&#1076;&#1077;&#1113;&#1072;", "&#1055;&#1086;&#1085;&#1077;&#1076;&#1077;&#1113;&#1072;&#1082;", "&#1059;&#1090;&#1086;&#1088;&#1072;&#1082;", "&#1057;&#1088;&#1077;&#1076;&#1072;", "&#1063;&#1077;&#1090;&#1074;&#1088;&#1090;&#1072;&#1082;", "&#1055;&#1077;&#1090;&#1072;&#1082;", "&#1057;&#1091;&#1073;&#1086;&#1090;&#1072;"],
+		daysOfWeekShort: ["&#1053;&#1077;&#1076;", "&#1055;&#1086;&#1085;", "&#1059;&#1090;&#1086;", "&#1057;&#1088;&#1077;", "&#1063;&#1077;&#1090;", "&#1055;&#1077;&#1090;", "&#1057;&#1091;&#1073;"],
+		monthsOfYear: ["&#1032;&#1072;&#1085;&#1091;&#1072;&#1088;", "&#1060;&#1077;&#1073;&#1088;&#1091;&#1072;&#1088;", "&#1052;&#1072;&#1088;&#1090;", "&#1040;&#1087;&#1088;&#1080;&#1083;", "&#1052;&#1072;&#1112;", "&#1032;&#1091;&#1085;", "&#1032;&#1091;&#1083;", "&#1040;&#1074;&#1075;&#1091;&#1089;&#1090;", "&#1057;&#1077;&#1087;&#1090;&#1077;&#1084;&#1073;&#1072;&#1088;", "&#1054;&#1082;&#1090;&#1086;&#1073;&#1072;&#1088;", "&#1053;&#1086;&#1074;&#1077;&#1084;&#1073;&#1072;&#1088;", "&#1044;&#1077;&#1094;&#1077;&#1084;&#1073;&#1072;&#1088;"],
+		monthsOfYearShort: ["&#1032;&#1072;&#1085;", "&#1060;&#1077;&#1073;", "&#1052;&#1072;&#1088;", "&#1040;&#1087;&#1088;", "&#1052;&#1072;&#1112;", "&#1032;&#1091;&#1085;", "&#1032;&#1091;&#1083;", "&#1040;&#1074;&#1075;", "&#1057;&#1077;&#1087;", "&#1054;&#1082;&#1090;", "&#1053;&#1086;&#1074;", "&#1044;&#1077;&#1094;"],
+		durationLabel: ["&#1076;&#1072;&#1085;&#1072;", "&#1089;&#1072;&#1090;", "&#1084;&#1080;&#1085;&#1091;&#1090;&#1072;", "&#1089;&#1077;&#1082;&#1091;&#1085;&#1076;&#1080;"],
+		durationDays: ["&#1076;&#1072;&#1085;", "&#1076;&#1072;&#1085;&#1072;"],
+		tooltip: "&#1054;&#1090;&#1074;&#1086;&#1088;&#1080;&#1090;&#1077; &#1062;&#1086;&#1085;&#1090;&#1088;&#1086;&#1083;",
+		nextMonth: "&#1089;&#1083;&#1077;&#1076;&#1077;&#1115;&#1080;",
+		prevMonth: "&#1055;&#1088;&#1077;&#1090;&#1093;&#1086;&#1076;&#1085;&#1072;",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "&#1054;&#1073;&#1088;&#1080;&#1096;&#1080;",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "&#1054;&#1089;&#1090;&#1072;&#1083;&#1080; &#1076;&#1072;&#1090;&#1091;&#1084;&#1080;",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'sr'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.sr.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.sr.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.sr.utf8.js	(revision 101)
@@ -0,0 +1,50 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'sr': {
+		setDateButtonLabel: "ÐÐ°ÑÐ²Ð¾ÑÐ¸",
+		setTimeButtonLabel: "ÐÐ°ÑÐ²Ð¾ÑÐ¸",
+		setDurationButtonLabel: "ÐÐ°ÑÐ²Ð¾ÑÐ¸",
+		calTodayButtonLabel: "ÐÐ°Ð½Ð°Ñ",
+		titleDateDialogLabel: "ÐÐ·Ð°Ð±ÐµÑÐ¸ÑÐµ Ð´Ð°ÑÑÐ¼",
+		titleTimeDialogLabel: "ÐÐ´Ð°Ð±ÐµÑÐ¸ÑÐµ Ð²ÑÐµÐ¼Ðµ",
+		daysOfWeek: ["ÐÐµÐ´ÐµÑÐ°", "ÐÐ¾Ð½ÐµÐ´ÐµÑÐ°Ðº", "Ð£ÑÐ¾ÑÐ°Ðº", "Ð¡ÑÐµÐ´Ð°", "Ð§ÐµÑÐ²ÑÑÐ°Ðº", "ÐÐµÑÐ°Ðº", "Ð¡ÑÐ±Ð¾ÑÐ°"],
+		daysOfWeekShort: ["ÐÐµÐ´", "ÐÐ¾Ð½", "Ð£ÑÐ¾", "Ð¡ÑÐµ", "Ð§ÐµÑ", "ÐÐµÑ", "Ð¡ÑÐ±"],
+		monthsOfYear: ["ÐÐ°Ð½ÑÐ°Ñ", "Ð¤ÐµÐ±ÑÑÐ°Ñ", "ÐÐ°ÑÑ", "ÐÐ¿ÑÐ¸Ð»", "ÐÐ°Ñ", "ÐÑÐ½", "ÐÑÐ»", "ÐÐ²Ð³ÑÑÑ", "Ð¡ÐµÐ¿ÑÐµÐ¼Ð±Ð°Ñ", "ÐÐºÑÐ¾Ð±Ð°Ñ", "ÐÐ¾Ð²ÐµÐ¼Ð±Ð°Ñ", "ÐÐµÑÐµÐ¼Ð±Ð°Ñ"],
+		monthsOfYearShort: ["ÐÐ°Ð½", "Ð¤ÐµÐ±", "ÐÐ°Ñ", "ÐÐ¿Ñ", "ÐÐ°Ñ", "ÐÑÐ½", "ÐÑÐ»", "ÐÐ²Ð³", "Ð¡ÐµÐ¿", "ÐÐºÑ", "ÐÐ¾Ð²", "ÐÐµÑ"],
+		durationLabel: ["Ð´Ð°Ð½Ð°", "ÑÐ°Ñ", "Ð¼Ð¸Ð½ÑÑÐ°", "ÑÐµÐºÑÐ½Ð´Ð¸"],
+		durationDays: ["Ð´Ð°Ð½", "Ð´Ð°Ð½Ð°"],
+		tooltip: "ÐÑÐ²Ð¾ÑÐ¸ÑÐµ Ð¦Ð¾Ð½ÑÑÐ¾Ð»",
+		nextMonth: "ÑÐ»ÐµÐ´ÐµÑÐ¸",
+		prevMonth: "ÐÑÐµÑÑ
+Ð¾Ð´Ð½Ð°",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "ÐÐ±ÑÐ¸ÑÐ¸",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "ÐÑÑÐ°Ð»Ð¸ Ð´Ð°ÑÑÐ¼Ð¸",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'sr'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.sv-SE.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.sv-SE.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.sv-SE.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'sv-SE': {
+		setDateButtonLabel: "V&#228;lj datum",
+		setTimeButtonLabel: "V&#228;lj tid",
+		setDurationButtonLabel: "V&#228;lj varaktighet",
+		calTodayButtonLabel: "G&#229; till idag",
+		titleDateDialogLabel: "V&#228;lj datum",
+		titleTimeDialogLabel: "V&#228;lj tid",
+		daysOfWeek: ["S&#246;ndag", "M&#229;ndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "L&#246;rdag"],
+		daysOfWeekShort: ["S&#246;", "M&#229;", "Ti", "On", "To", "Fr", "L&#246;"],
+		monthsOfYear: ["Januari", "Februari", "Mars", "April", "Maj", "Juni", "July", "Augusti", "September", "Oktober", "November", "December"],
+		monthsOfYearShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+		durationLabel: ["Dagar", "Timmar", "Minuter", "Sekunder"],
+		durationDays: ["Dag", "Dagar"],
+		tooltip: "&#214;ppna datumv&#228;ljare",
+		nextMonth: "N&#228;sta m&#229;nad",
+		prevMonth: "F&#246;reg&#229;ende m&#229;nad",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['y','m','d'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%Y-%m-%d",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Klart",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Andra datum",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'sv-SE'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.sv-SE.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.sv-SE.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.sv-SE.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'sv-SE': {
+		setDateButtonLabel: "VÃ¤lj datum",
+		setTimeButtonLabel: "VÃ¤lj tid",
+		setDurationButtonLabel: "VÃ¤lj varaktighet",
+		calTodayButtonLabel: "GÃ¥ till idag",
+		titleDateDialogLabel: "VÃ¤lj datum",
+		titleTimeDialogLabel: "VÃ¤lj tid",
+		daysOfWeek: ["SÃ¶ndag", "MÃ¥ndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "LÃ¶rdag"],
+		daysOfWeekShort: ["SÃ¶", "MÃ¥", "Ti", "On", "To", "Fr", "LÃ¶"],
+		monthsOfYear: ["Januari", "Februari", "Mars", "April", "Maj", "Juni", "July", "Augusti", "September", "Oktober", "November", "December"],
+		monthsOfYearShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+		durationLabel: ["Dagar", "Timmar", "Minuter", "Sekunder"],
+		durationDays: ["Dag", "Dagar"],
+		tooltip: "Ãppna datumvÃ¤ljare",
+		nextMonth: "NÃ¤sta mÃ¥nad",
+		prevMonth: "FÃ¶regÃ¥ende mÃ¥nad",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['y','m','d'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%Y-%m-%d",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Klart",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Andra datum",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'sv-SE'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.th.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.th.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.th.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: tiratat.patana-anake <tiratat.patana-anake@accenture.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'th': {
+		setDateButtonLabel: "&#3648;&#3621;&#3639;&#3629;&#3585;&#3623;&#3633;&#3609;",
+		setTimeButtonLabel: "&#3648;&#3621;&#3639;&#3629;&#3585;&#3648;&#3623;&#3621;&#3634;",
+		setDurationButtonLabel: "&#3648;&#3621;&#3639;&#3629;&#3585;&#3619;&#3632;&#3618;&#3632;&#3648;&#3623;&#3621;&#3634;",
+		calTodayButtonLabel: "&#3585;&#3621;&#3633;&#3610;&#3652;&#3611;&#3623;&#3633;&#3609;&#3609;&#3637;&#3657;",
+		titleDateDialogLabel: "&#3648;&#3621;&#3639;&#3629;&#3585;&#3623;&#3633;&#3609;",
+		titleTimeDialogLabel: "&#3648;&#3621;&#3639;&#3629;&#3585;&#3648;&#3623;&#3621;&#3634;",
+		daysOfWeek: ["&#3629;&#3634;&#3607;&#3636;&#3605;&#3618;&#3660;", "&#3592;&#3633;&#3609;&#3607;&#3619;&#3660;", "&#3629;&#3633;&#3591;&#3588;&#3634;&#3619;", "&#3614;&#3640;&#3608;", "&#3614;&#3620;&#3627;&#3633;&#3626;", "&#3624;&#3640;&#3585;&#3619;&#3660;", "&#3648;&#3626;&#3634;&#3619;&#3660;"],
+		daysOfWeekShort: ["&#3629;&#3634;", "&#3592;", "&#3629;", "&#3614;", "&#3614;&#3620;", "&#3624;", "&#3626;"],
+		monthsOfYear: ["&#3617;&#3585;&#3619;&#3634;&#3588;&#3617;", "&#3585;&#3640;&#3617;&#3616;&#3634;&#3614;&#3633;&#3609;&#3608;&#3660;", "&#3617;&#3637;&#3609;&#3634;&#3588;&#3617;", "&#3648;&#3617;&#3625;&#3634;&#3618;&#3609;", "&#3614;&#3620;&#3625;&#3616;&#3634;&#3588;&#3617;", "&#3617;&#3636;&#3606;&#3640;&#3609;&#3634;&#3618;&#3609;", "&#3585;&#3619;&#3585;&#3598;&#3634;&#3588;&#3617;", "&#3626;&#3636;&#3591;&#3627;&#3634;&#3588;&#3617;", "&#3585;&#3633;&#3609;&#3618;&#3634;&#3618;&#3609;", "&#3605;&#3640;&#3621;&#3634;&#3588;&#3617;", "&#3614;&#3620;&#3624;&#3592;&#3636;&#3585;&#3634;&#3618;&#3609;", "&#3608;&#3633;&#3609;&#3623;&#3634;&#3588;&#3617;"],
+		monthsOfYearShort: ["&#3617;.&#3588;.", "&#3585;.&#3614;.", "&#3617;&#3637;.&#3588;.", "&#3617;.&#3618;.", "&#3614;.&#3588;.", "&#3617;&#3636;.&#3618;.", "&#3585;.&#3588;.", "&#3626;.&#3588;.", "&#3585;.&#3618;.", "&#3605;.&#3588;.", "&#3614;.&#3618;.", "&#3608;.&#3588;."],
+		durationLabel: ["&#3623;&#3633;&#3609;", "&#3594;&#3633;&#3656;&#3623;&#3650;&#3617;&#3591;", "&#3609;&#3634;&#3607;&#3637;", "&#3623;&#3636;&#3609;&#3634;&#3607;&#3637;"],
+		durationDays: ["&#3623;&#3633;&#3609;", "&#3623;&#3633;&#3609;"],
+		tooltip: "&#3648;&#3611;&#3636;&#3604;&#3605;&#3633;&#3623;&#3648;&#3621;&#3639;&#3629;&#3585;&#3623;&#3633;&#3609;",
+		nextMonth: "&#3648;&#3604;&#3639;&#3629;&#3609;&#3605;&#3656;&#3629;&#3652;&#3611;",
+		prevMonth: "&#3648;&#3604;&#3639;&#3629;&#3609;&#3585;&#3656;&#3629;&#3609;",
+		timeFormat: 24,
+		headerFormat: '&#3623;&#3633;&#3609;%A&#3607;&#3637;&#3656; %-d %B %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "&#3621;&#3610;",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "&#3623;&#3633;&#3609;&#3629;&#3639;&#3656;&#3609; &#3654;",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'th'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.th.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.th.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.th.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: tiratat.patana-anake <tiratat.patana-anake@accenture.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'th': {
+		setDateButtonLabel: "à¹à¸¥à¸·à¸­à¸à¸§à¸±à¸",
+		setTimeButtonLabel: "à¹à¸¥à¸·à¸­à¸à¹à¸§à¸¥à¸²",
+		setDurationButtonLabel: "à¹à¸¥à¸·à¸­à¸à¸£à¸°à¸¢à¸°à¹à¸§à¸¥à¸²",
+		calTodayButtonLabel: "à¸à¸¥à¸±à¸à¹à¸à¸§à¸±à¸à¸à¸µà¹",
+		titleDateDialogLabel: "à¹à¸¥à¸·à¸­à¸à¸§à¸±à¸",
+		titleTimeDialogLabel: "à¹à¸¥à¸·à¸­à¸à¹à¸§à¸¥à¸²",
+		daysOfWeek: ["à¸­à¸²à¸à¸´à¸à¸¢à¹", "à¸à¸±à¸à¸à¸£à¹", "à¸­à¸±à¸à¸à¸²à¸£", "à¸à¸¸à¸", "à¸à¸¤à¸«à¸±à¸ª", "à¸¨à¸¸à¸à¸£à¹", "à¹à¸ªà¸²à¸£à¹"],
+		daysOfWeekShort: ["à¸­à¸²", "à¸", "à¸­", "à¸", "à¸à¸¤", "à¸¨", "à¸ª"],
+		monthsOfYear: ["à¸¡à¸à¸£à¸²à¸à¸¡", "à¸à¸¸à¸¡à¸ à¸²à¸à¸±à¸à¸à¹", "à¸¡à¸µà¸à¸²à¸à¸¡", "à¹à¸¡à¸©à¸²à¸¢à¸", "à¸à¸¤à¸©à¸ à¸²à¸à¸¡", "à¸¡à¸´à¸à¸¸à¸à¸²à¸¢à¸", "à¸à¸£à¸à¸à¸²à¸à¸¡", "à¸ªà¸´à¸à¸«à¸²à¸à¸¡", "à¸à¸±à¸à¸¢à¸²à¸¢à¸", "à¸à¸¸à¸¥à¸²à¸à¸¡", "à¸à¸¤à¸¨à¸à¸´à¸à¸²à¸¢à¸", "à¸à¸±à¸à¸§à¸²à¸à¸¡"],
+		monthsOfYearShort: ["à¸¡.à¸.", "à¸.à¸.", "à¸¡à¸µ.à¸.", "à¸¡.à¸¢.", "à¸.à¸.", "à¸¡à¸´.à¸¢.", "à¸.à¸.", "à¸ª.à¸.", "à¸.à¸¢.", "à¸.à¸.", "à¸.à¸¢.", "à¸.à¸."],
+		durationLabel: ["à¸§à¸±à¸", "à¸à¸±à¹à¸§à¹à¸¡à¸", "à¸à¸²à¸à¸µ", "à¸§à¸´à¸à¸²à¸à¸µ"],
+		durationDays: ["à¸§à¸±à¸", "à¸§à¸±à¸"],
+		tooltip: "à¹à¸à¸´à¸à¸à¸±à¸§à¹à¸¥à¸·à¸­à¸à¸§à¸±à¸",
+		nextMonth: "à¹à¸à¸·à¸­à¸à¸à¹à¸­à¹à¸",
+		prevMonth: "à¹à¸à¸·à¸­à¸à¸à¹à¸­à¸",
+		timeFormat: 24,
+		headerFormat: 'à¸§à¸±à¸%Aà¸à¸µà¹ %-d %B %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "à¸¥à¸",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "à¸§à¸±à¸à¸­à¸·à¹à¸ à¹",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'th'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.tr.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.tr.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.tr.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'tr': {
+		setDateButtonLabel: "Kapat",
+		setTimeButtonLabel: "Kapat",
+		setDurationButtonLabel: "Kapat",
+		calTodayButtonLabel: "Bug&#252;n",
+		titleDateDialogLabel: "Tarih se&#231;in",
+		titleTimeDialogLabel: "Se&#231;in",
+		daysOfWeek: ["Pazar", "Pazartesi", "Sal&#305;", "&#199;ar&#351;amba", "Per&#351;embe", "Cuma", "Cumartesi"],
+		daysOfWeekShort: ["Pz", "Pt", "Sa", "&#199;a", "Pe", "Cu", "Ct"],
+		monthsOfYear: ["Ocak", "&#350;ubat", "Mart", "Nisan", "May&#305;s", "Haziran", "Temmuz", "A&#287;ustos", "Eyl&#252;l", "Ekim", "Kas&#305;m", "Aral&#305;k"],
+		monthsOfYearShort: ["Oca", "&#350;ub", "Mar", "Nis", "May", "Haz", "Tem", "A&#287;u", "Eyl", "Eki", "Kas", "Ara"],
+		durationLabel: ["G&#252;n", "Saat", "Dakika", "Saniye"],
+		durationDays: ["G&#252;n", "G&#252;n"],
+		tooltip: "A&#231;&#305;k tarih se&#231;ici",
+		nextMonth: "Ileri",
+		prevMonth: "Geri",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d.%m.%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "A&#231;&#305;k",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Di&#287;er tarihler",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'tr'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.tr.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.tr.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.tr.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'tr': {
+		setDateButtonLabel: "Kapat",
+		setTimeButtonLabel: "Kapat",
+		setDurationButtonLabel: "Kapat",
+		calTodayButtonLabel: "BugÃ¼n",
+		titleDateDialogLabel: "Tarih seÃ§in",
+		titleTimeDialogLabel: "SeÃ§in",
+		daysOfWeek: ["Pazar", "Pazartesi", "SalÄ±", "ÃarÅamba", "PerÅembe", "Cuma", "Cumartesi"],
+		daysOfWeekShort: ["Pz", "Pt", "Sa", "Ãa", "Pe", "Cu", "Ct"],
+		monthsOfYear: ["Ocak", "Åubat", "Mart", "Nisan", "MayÄ±s", "Haziran", "Temmuz", "AÄustos", "EylÃ¼l", "Ekim", "KasÄ±m", "AralÄ±k"],
+		monthsOfYearShort: ["Oca", "Åub", "Mar", "Nis", "May", "Haz", "Tem", "AÄu", "Eyl", "Eki", "Kas", "Ara"],
+		durationLabel: ["GÃ¼n", "Saat", "Dakika", "Saniye"],
+		durationDays: ["GÃ¼n", "GÃ¼n"],
+		tooltip: "AÃ§Ä±k tarih seÃ§ici",
+		nextMonth: "Ileri",
+		prevMonth: "Geri",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d.%m.%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "AÃ§Ä±k",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "DiÄer tarihler",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'tr'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.uk.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.uk.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.uk.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Alexander Zolotko <azolotko@gmail.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'uk': {
+		setDateButtonLabel: "&#1042;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1080;&#1090;&#1080; &#1044;&#1072;&#1090;&#1091;",
+		setTimeButtonLabel: "&#1042;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1080;&#1090;&#1080; &#1063;&#1072;&#1089;",
+		setDurationButtonLabel: "&#1042;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1080;&#1090;&#1080; &#1058;&#1088;&#1080;&#1074;&#1072;&#1083;&#1110;&#1089;&#1090;&#1100;",
+		calTodayButtonLabel: "&#1057;&#1100;&#1086;&#1075;&#1086;&#1076;&#1085;&#1110;",
+		titleDateDialogLabel: "&#1042;&#1080;&#1073;&#1088;&#1072;&#1090;&#1080; &#1076;&#1072;&#1090;&#1091;",
+		titleTimeDialogLabel: "&#1042;&#1080;&#1073;&#1088;&#1072;&#1090;&#1080; &#1095;&#1072;&#1089;",
+		daysOfWeek: ["&#1053;&#1077;&#1076;&#1110;&#1083;&#1103;", "&#1055;&#1086;&#1085;&#1077;&#1076;&#1110;&#1083;&#1086;&#1082;", "&#1042;&#1110;&#1074;&#1090;&#1086;&#1088;&#1086;&#1082;", "&#1057;&#1077;&#1088;&#1077;&#1076;&#1072;", "&#1063;&#1077;&#1090;&#1074;&#1077;&#1088;", "&#1055;\'&#1103;&#1090;&#1085;&#1080;&#1094;&#1103;", "&#1057;&#1091;&#1073;&#1086;&#1090;&#1072;"],
+		daysOfWeekShort: ["&#1053;&#1076;", "&#1055;&#1085;", "&#1042;&#1090;", "&#1057;&#1088;", "&#1063;&#1090;", "&#1055;&#1090;", "&#1057;&#1073;"],
+		monthsOfYear: ["&#1057;&#1110;&#1095;&#1077;&#1085;&#1100;", "&#1051;&#1102;&#1090;&#1080;&#1081;", "&#1041;&#1077;&#1088;&#1077;&#1079;&#1077;&#1085;&#1100;", "&#1050;&#1074;&#1110;&#1090;&#1077;&#1085;&#1100;", "&#1058;&#1088;&#1072;&#1074;&#1077;&#1085;&#1100;", "&#1063;&#1077;&#1088;&#1074;&#1077;&#1085;&#1100;", "&#1051;&#1080;&#1087;&#1077;&#1085;&#1100;", "&#1057;&#1077;&#1088;&#1087;&#1077;&#1085;&#1100;", "&#1042;&#1077;&#1088;&#1077;&#1089;&#1077;&#1085;&#1100;", "&#1046;&#1086;&#1074;&#1090;&#1077;&#1085;&#1100;", "&#1051;&#1080;&#1089;&#1090;&#1086;&#1087;&#1072;&#1076;", "&#1043;&#1088;&#1091;&#1076;&#1077;&#1085;&#1100;"],
+		monthsOfYearShort: ["&#1057;&#1110;&#1095;", "&#1051;&#1102;&#1090;", "&#1041;&#1077;&#1088;", "&#1050;&#1074;&#1110;", "&#1058;&#1088;&#1072;", "&#1063;&#1077;&#1088;", "&#1051;&#1080;&#1087;", "&#1057;&#1077;&#1088;", "&#1042;&#1077;&#1087;", "&#1046;&#1086;&#1074;", "&#1051;&#1080;&#1089;", "&#1043;&#1088;&#1091;"],
+		durationLabel: ["&#1044;&#1085;&#1110;", "&#1043;&#1086;&#1076;&#1080;&#1085;&#1080;", "&#1061;&#1074;&#1080;&#1083;&#1080;&#1085;&#1080;", "&#1057;&#1077;&#1082;&#1091;&#1085;&#1076;&#1080;"],
+		durationDays: ["&#1044;&#1077;&#1085;&#1100;", "&#1044;&#1085;&#1110;"],
+		tooltip: "&#1042;&#1110;&#1076;&#1082;&#1088;&#1080;&#1090;&#1080; &#1077;&#1083;&#1077;&#1084;&#1077;&#1085;&#1090; &#1074;&#1080;&#1073;&#1086;&#1088;&#1091; &#1076;&#1072;&#1090;&#1080;",
+		nextMonth: "&#1053;&#1072;&#1089;&#1090;&#1091;&#1087;&#1085;&#1086;&#1075;&#1086; &#1084;&#1110;&#1089;&#1103;&#1094;&#1103;",
+		prevMonth: "&#1052;&#1080;&#1085;&#1091;&#1083;&#1080;&#1081; &#1084;&#1110;&#1089;&#1103;&#1094;&#1100;",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d.%m.%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "&#1071;&#1089;&#1085;&#1086;",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "&#1030;&#1085;&#1096;&#1110; &#1076;&#1072;&#1090;&#1080;",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'uk'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.uk.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.uk.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.uk.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Alexander Zolotko <azolotko@gmail.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'uk': {
+		setDateButtonLabel: "ÐÑÑÐ°Ð½Ð¾Ð²Ð¸ÑÐ¸ ÐÐ°ÑÑ",
+		setTimeButtonLabel: "ÐÑÑÐ°Ð½Ð¾Ð²Ð¸ÑÐ¸ Ð§Ð°Ñ",
+		setDurationButtonLabel: "ÐÑÑÐ°Ð½Ð¾Ð²Ð¸ÑÐ¸ Ð¢ÑÐ¸Ð²Ð°Ð»ÑÑÑÑ",
+		calTodayButtonLabel: "Ð¡ÑÐ¾Ð³Ð¾Ð´Ð½Ñ",
+		titleDateDialogLabel: "ÐÐ¸Ð±ÑÐ°ÑÐ¸ Ð´Ð°ÑÑ",
+		titleTimeDialogLabel: "ÐÐ¸Ð±ÑÐ°ÑÐ¸ ÑÐ°Ñ",
+		daysOfWeek: ["ÐÐµÐ´ÑÐ»Ñ", "ÐÐ¾Ð½ÐµÐ´ÑÐ»Ð¾Ðº", "ÐÑÐ²ÑÐ¾ÑÐ¾Ðº", "Ð¡ÐµÑÐµÐ´Ð°", "Ð§ÐµÑÐ²ÐµÑ", "Ð\'ÑÑÐ½Ð¸ÑÑ", "Ð¡ÑÐ±Ð¾ÑÐ°"],
+		daysOfWeekShort: ["ÐÐ´", "ÐÐ½", "ÐÑ", "Ð¡Ñ", "Ð§Ñ", "ÐÑ", "Ð¡Ð±"],
+		monthsOfYear: ["Ð¡ÑÑÐµÐ½Ñ", "ÐÑÑÐ¸Ð¹", "ÐÐµÑÐµÐ·ÐµÐ½Ñ", "ÐÐ²ÑÑÐµÐ½Ñ", "Ð¢ÑÐ°Ð²ÐµÐ½Ñ", "Ð§ÐµÑÐ²ÐµÐ½Ñ", "ÐÐ¸Ð¿ÐµÐ½Ñ", "Ð¡ÐµÑÐ¿ÐµÐ½Ñ", "ÐÐµÑÐµÑÐµÐ½Ñ", "ÐÐ¾Ð²ÑÐµÐ½Ñ", "ÐÐ¸ÑÑÐ¾Ð¿Ð°Ð´", "ÐÑÑÐ´ÐµÐ½Ñ"],
+		monthsOfYearShort: ["Ð¡ÑÑ", "ÐÑÑ", "ÐÐµÑ", "ÐÐ²Ñ", "Ð¢ÑÐ°", "Ð§ÐµÑ", "ÐÐ¸Ð¿", "Ð¡ÐµÑ", "ÐÐµÐ¿", "ÐÐ¾Ð²", "ÐÐ¸Ñ", "ÐÑÑ"],
+		durationLabel: ["ÐÐ½Ñ", "ÐÐ¾Ð´Ð¸Ð½Ð¸", "Ð¥Ð²Ð¸Ð»Ð¸Ð½Ð¸", "Ð¡ÐµÐºÑÐ½Ð´Ð¸"],
+		durationDays: ["ÐÐµÐ½Ñ", "ÐÐ½Ñ"],
+		tooltip: "ÐÑÐ´ÐºÑÐ¸ÑÐ¸ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ Ð²Ð¸Ð±Ð¾ÑÑ Ð´Ð°ÑÐ¸",
+		nextMonth: "ÐÐ°ÑÑÑÐ¿Ð½Ð¾Ð³Ð¾ Ð¼ÑÑÑÑÑ",
+		prevMonth: "ÐÐ¸Ð½ÑÐ»Ð¸Ð¹ Ð¼ÑÑÑÑÑ",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d.%m.%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "Ð¯ÑÐ½Ð¾",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "ÐÐ½ÑÑ Ð´Ð°ÑÐ¸",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'uk'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.vi.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.vi.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.vi.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'vi': {
+		setDateButtonLabel: "&#272;&#243;ng",
+		setTimeButtonLabel: "&#272;&#243;ng",
+		setDurationButtonLabel: "&#272;&#243;ng",
+		calTodayButtonLabel: "H&#244;m nay",
+		titleDateDialogLabel: "Ch&#7885;n ng&#224;y",
+		titleTimeDialogLabel: "Ch&#7885;n th&#7901;i gian",
+		daysOfWeek: ["Ch&#7911; Nh&#7853;t", "Th&#7913; hai", "Th&#7913; Ba", "Th&#7913; T&#432;", "Th&#7913; N&#259;m", "Th&#7913; s&#225;u", "Th&#7913; B&#7843;y"],
+		daysOfWeekShort: ["CN", "T2", "T3", "T4", "T5", "T6", "T7"],
+		monthsOfYear: ["Th&#225;ng m&#7897;t", "Th&#225;ng hai", "Th&#225;ng ba", "Th&#225;ng t&#432;", "Th&#225;ng n&#259;m", "Th&#225;ng S&#225;u", "Th&#225;ng B&#7843;y", "Th&#225;ng T&#225;m", "Th&#225;ng Ch&#237;n", "Th&#225;ng M&#432;&#7901;i", "Th&#225;ng m&#432;&#7901;i m&#7897;t", "Th&#225;ng m&#432;&#7901;i hai"],
+		monthsOfYearShort: ["Th&#225;ng m&#7897;t", "Th&#225;ng hai", "Th&#225;ng ba", "Th&#225;ng t&#432;", "Th&#225;ng n&#259;m", "Th&#225;ng S&#225;u", "Th&#225;ng B&#7843;y", "Th&#225;ng T&#225;m", "Th&#225;ng Ch&#237;n", "Th&#225;ng M&#432;&#7901;i", "Th&#225;ng m&#432;&#7901;i m&#7897;t", "Th&#225;ng m&#432;&#7901;i hai"],
+		durationLabel: ["Ng&#224;y", "Gi&#7901;", "Ph&#250;t", "Gi&#226;y"],
+		durationDays: ["Ng&#224;y", "Ng&#224;y"],
+		tooltip: "M&#7903; b&#7843;ng ch&#7885;n ng&#224;y",
+		nextMonth: "Ti&#7871;p",
+		prevMonth: "Tr&#432;&#7899;c",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "R&#245; r&#224;ng",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "Ng&#224;y kh&#225;c",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'vi'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.vi.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.vi.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.vi.utf8.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Unknown
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'vi': {
+		setDateButtonLabel: "ÄÃ³ng",
+		setTimeButtonLabel: "ÄÃ³ng",
+		setDurationButtonLabel: "ÄÃ³ng",
+		calTodayButtonLabel: "HÃ´m nay",
+		titleDateDialogLabel: "Chá»n ngÃ y",
+		titleTimeDialogLabel: "Chá»n thá»i gian",
+		daysOfWeek: ["Chá»§ Nháº­t", "Thá»© hai", "Thá»© Ba", "Thá»© TÆ°", "Thá»© NÄm", "Thá»© sÃ¡u", "Thá»© Báº£y"],
+		daysOfWeekShort: ["CN", "T2", "T3", "T4", "T5", "T6", "T7"],
+		monthsOfYear: ["ThÃ¡ng má»t", "ThÃ¡ng hai", "ThÃ¡ng ba", "ThÃ¡ng tÆ°", "ThÃ¡ng nÄm", "ThÃ¡ng SÃ¡u", "ThÃ¡ng Báº£y", "ThÃ¡ng TÃ¡m", "ThÃ¡ng ChÃ­n", "ThÃ¡ng MÆ°á»i", "ThÃ¡ng mÆ°á»i má»t", "ThÃ¡ng mÆ°á»i hai"],
+		monthsOfYearShort: ["ThÃ¡ng má»t", "ThÃ¡ng hai", "ThÃ¡ng ba", "ThÃ¡ng tÆ°", "ThÃ¡ng nÄm", "ThÃ¡ng SÃ¡u", "ThÃ¡ng Báº£y", "ThÃ¡ng TÃ¡m", "ThÃ¡ng ChÃ­n", "ThÃ¡ng MÆ°á»i", "ThÃ¡ng mÆ°á»i má»t", "ThÃ¡ng mÆ°á»i hai"],
+		durationLabel: ["NgÃ y", "Giá»", "PhÃºt", "GiÃ¢y"],
+		durationDays: ["NgÃ y", "NgÃ y"],
+		tooltip: "Má» báº£ng chá»n ngÃ y",
+		nextMonth: "Tiáº¿p",
+		prevMonth: "TrÆ°á»c",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['d','m','y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%d/%m/%Y",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "RÃµ rÃ ng",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["AM", "PM"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "NgÃ y khÃ¡c",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'vi'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.zh-CN.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.zh-CN.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.zh-CN.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: ChiElvis <elvis311@msn.com>, josher19 <crowdin>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'zh-CN': {
+		setDateButtonLabel: "&#35774;&#32622;&#26085;&#26399;",
+		setTimeButtonLabel: "&#35774;&#32622;&#26102;&#38388;",
+		setDurationButtonLabel: "&#35774;&#32622;&#25345;&#32493;&#26102;&#38388;",
+		calTodayButtonLabel: "&#36873;&#25321;&#20170;&#22825;&#26085;&#26399;",
+		titleDateDialogLabel: "&#36873;&#25321;&#26085;&#26399;",
+		titleTimeDialogLabel: "&#36873;&#25321;&#26102;&#38388;",
+		daysOfWeek: ["&#26143;&#26399;&#26085;", "&#26143;&#26399;&#19968;", "&#26143;&#26399;&#20108;", "&#26143;&#26399;&#19977;", "&#26143;&#26399;&#22235;", "&#26143;&#26399;&#20116;", "&#26143;&#26399;&#20845;"],
+		daysOfWeekShort: ["&#26085;", "&#19968;", "&#20108;", "&#19977;", "&#22235;", "&#20116;", "&#20845;"],
+		monthsOfYear: ["&#19968;&#26376;", "&#20108;&#26376;", "&#19977;&#26376;", "&#22235;&#26376;", "&#20116;&#26376;", "&#20845;&#26376;", "&#19971;&#26376;", "&#20843;&#26376;", "&#20061;&#26376;", "&#21313;&#26376;", "&#21313;&#19968;&#26376;", "&#21313;&#20108;&#26376;"],
+		monthsOfYearShort: ["&#19968;", "&#20108;", "&#19977;", "&#22235;", "&#20116;", "&#20845;", "&#19971;", "&#20843;", "&#20061;", "&#21313;", "&#21313;&#19968;", "&#21313;&#20108;"],
+		durationLabel: ["&#22825;", "&#23567;&#26102;", "&#20998;&#38047;", "&#31186;"],
+		durationDays: ["&#22825;", "&#22825;"],
+		tooltip: "&#24320;&#21551;&#26085;&#26399;&#36873;&#21462;&#22120;",
+		nextMonth: "&#19979;&#20010;&#26376;",
+		prevMonth: "&#19978;&#20010;&#26376;",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['m', 'd', 'y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%Y-%m-%d",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "&#28165;&#38500;",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["&#19978;&#21320;", "&#19979;&#21320;"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "&#20854;&#20182;&#26085;&#26399;",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'zh-CN'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.zh-CN.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.zh-CN.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.zh-CN.utf8.js	(revision 101)
@@ -0,0 +1,57 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: ChiElvis <elvis311@msn.com>, josher19 <crowdin>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'zh-CN': {
+		setDateButtonLabel: "è®¾ç½®æ¥æ",
+		setTimeButtonLabel: "è®¾ç½®æ¶é´",
+		setDurationButtonLabel: "è®¾ç½®æç»­æ¶é´",
+		calTodayButtonLabel: "éæ©ä»å¤©æ¥æ",
+		titleDateDialogLabel: "éæ©æ¥æ",
+		titleTimeDialogLabel: "éæ©æ¶é´",
+		daysOfWeek: ["æææ¥", "ææä¸", "ææäº", "ææä¸", "ææå", "ææäº", "ææå
+­"],
+		daysOfWeekShort: ["æ¥", "ä¸", "äº", "ä¸", "å", "äº", "å
+­"],
+		monthsOfYear: ["ä¸æ", "äºæ", "ä¸æ", "åæ", "äºæ", "å
+­æ", "ä¸æ", "å
+«æ", "ä¹æ", "åæ", "åä¸æ", "åäºæ"],
+		monthsOfYearShort: ["ä¸", "äº", "ä¸", "å", "äº", "å
+­", "ä¸", "å
+«", "ä¹", "å", "åä¸", "åäº"],
+		durationLabel: ["å¤©", "å°æ¶", "åé", "ç§"],
+		durationDays: ["å¤©", "å¤©"],
+		tooltip: "å¼å¯æ¥æéåå¨",
+		nextMonth: "ä¸ä¸ªæ",
+		prevMonth: "ä¸ä¸ªæ",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['m', 'd', 'y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%Y-%m-%d",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "æ¸
+é¤",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["ä¸å", "ä¸å"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "å
+¶ä»æ¥æ",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'zh-CN'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.zh-TW.asc.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.zh-TW.asc.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.zh-TW.asc.js	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Ethan Chen <ethan42411@gmail.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'zh-TW': {
+		setDateButtonLabel: "&#35373;&#23450;&#26085;&#26399;",
+		setTimeButtonLabel: "&#35373;&#23450;&#26178;&#38291;",
+		setDurationButtonLabel: "&#35373;&#23450;&#25345;&#32396;&#26085;&#26399;",
+		calTodayButtonLabel: "&#36984;&#25799;&#20170;&#22825;&#26085;&#26399;",
+		titleDateDialogLabel: "&#36984;&#25799;&#26085;&#26399;",
+		titleTimeDialogLabel: "&#36984;&#25799;&#26178;&#38291;",
+		daysOfWeek: ["&#26143;&#26399;&#26085;", "&#26143;&#26399;&#19968;", "&#26143;&#26399;&#20108;", "&#26143;&#26399;&#19977;", "&#26143;&#26399;&#22235;", "&#26143;&#26399;&#20116;", "&#26143;&#26399;&#20845;"],
+		daysOfWeekShort: ["&#26085;", "&#19968;", "&#20108;", "&#19977;", "&#22235;", "&#20116;", "&#20845;"],
+		monthsOfYear: ["&#19968;&#26376;", "&#20108;&#26376;", "&#19977;&#26376;", "&#22235;&#26376;", "&#20116;&#26376;", "&#20845;&#26376;", "&#19971;&#26376;", "&#20843;&#26376;", "&#20061;&#26376;", "&#21313;&#26376;", "&#21313;&#19968;&#26376;", "&#21313;&#20108;&#26376;"],
+		monthsOfYearShort: ["&#19968;", "&#20108;", "&#19977;", "&#22235;", "&#20116;", "&#20845;", "&#19971;", "&#20843;", "&#20061;", "&#21313;", "&#21313;&#19968;", "&#21313;&#20108;"],
+		durationLabel: ["&#22825;", "&#23567;&#26178;", "&#20998;&#37912;", "&#31186;"],
+		durationDays: ["&#22825;", "&#22825;"],
+		tooltip: "&#38283;&#21855;&#26085;&#26399;&#36984;&#25799;",
+		nextMonth: "&#19979;&#20491;&#26376;",
+		prevMonth: "&#19978;&#20491;&#26376;",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['m', 'd', 'y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%Y-%m-%d",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "&#28165;&#38500;",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["&#19978;&#21320;", "&#19979;&#21320;"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "&#20854;&#20182;&#26085;&#26399;",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'zh-TW'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.zh-TW.utf8.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.zh-TW.utf8.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/i18n/jquery.mobile.datebox.i18n.zh-TW.utf8.js	(revision 101)
@@ -0,0 +1,57 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notifcation.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ *
+ * Translation by: Ethan Chen <ethan42411@gmail.com>
+ *
+ */
+
+jQuery.extend(jQuery.mobile.datebox.prototype.options.lang, {
+	'zh-TW': {
+		setDateButtonLabel: "è¨­å®æ¥æ",
+		setTimeButtonLabel: "è¨­å®æé",
+		setDurationButtonLabel: "è¨­å®æçºæ¥æ",
+		calTodayButtonLabel: "é¸æä»å¤©æ¥æ",
+		titleDateDialogLabel: "é¸ææ¥æ",
+		titleTimeDialogLabel: "é¸ææé",
+		daysOfWeek: ["æææ¥", "ææä¸", "ææäº", "ææä¸", "ææå", "ææäº", "ææå
+­"],
+		daysOfWeekShort: ["æ¥", "ä¸", "äº", "ä¸", "å", "äº", "å
+­"],
+		monthsOfYear: ["ä¸æ", "äºæ", "ä¸æ", "åæ", "äºæ", "å
+­æ", "ä¸æ", "å
+«æ", "ä¹æ", "åæ", "åä¸æ", "åäºæ"],
+		monthsOfYearShort: ["ä¸", "äº", "ä¸", "å", "äº", "å
+­", "ä¸", "å
+«", "ä¹", "å", "åä¸", "åäº"],
+		durationLabel: ["å¤©", "å°æ", "åé", "ç§"],
+		durationDays: ["å¤©", "å¤©"],
+		tooltip: "éåæ¥æé¸æ",
+		nextMonth: "ä¸åæ",
+		prevMonth: "ä¸åæ",
+		timeFormat: 24,
+		headerFormat: '%A, %B %-d, %Y',
+		dateFieldOrder: ['m', 'd', 'y'],
+		timeFieldOrder: ['h', 'i', 'a'],
+		slideFieldOrder: ['y', 'm', 'd'],
+		dateFormat: "%Y-%m-%d",
+		useArabicIndic: false,
+		isRTL: false,
+		calStartDay: 0,
+		clearButton: "æ¸
+é¤",
+		durationOrder: ['d', 'h', 'i', 's'],
+		meridiem: ["ä¸å", "ä¸å"],
+		timeOutput: "%k:%M",
+		durationFormat: "%Dd %DA, %Dl:%DM:%DS",
+		calDateListLabel: "å
+¶ä»æ¥æ",
+		calHeaderFormat: "%B %Y"
+	}
+});
+jQuery.extend(jQuery.mobile.datebox.prototype.options, {
+	useLang: 'zh-TW'
+});
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox-1.4.5.css
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox-1.4.5.css	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox-1.4.5.css	(revision 101)
@@ -0,0 +1,323 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notification.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ * Generated: 2014-11-10T14:32:36-05:00 (from theme builder)
+ */
+ 
+/* 
+ * Shared Styles 
+ * 
+ * These styles are used for the basic control,
+ * and are not specific to any one mode.
+ */
+
+.ui-datebox-container { 
+	width: 290px;
+	-webkit-transform:translate3d(0,0,0);
+}
+.ui-popup-container .ui-datebox-gridrow { 
+	display: table;
+	margin-left: auto; 
+	margin-right: auto;
+}
+.ui-datebox-collapse { 
+	text-align: center;
+}
+.ui-datebox-collapse .ui-controlgroup-controls a { 
+	max-width: 40%;
+}
+
+.ui-datebox-controls.ui-controlgroup-vertical {
+	margin-bottom: 5px;
+	margin-top: 5px;
+}
+
+div.ui-datebox-inline.ui-datebox-inline-has-input {
+	float: none;
+	clear: both;
+	position: relative;
+	top: 5px;
+}
+.ui-field-contain div.ui-datebox-container.ui-datebox-inline {
+	margin-right: auto;
+	margin-left: auto;
+}
+div.ui-datebox-container.ui-datebox-inline {
+	width: 290px;
+
+}
+.ui-datebox-inline .ui-controlgroup-controls {
+	float: none;
+	margin-left: auto;
+	margin-right: auto;
+}
+
+/* 
+ * Calendar Mode Styles
+ * 
+ * These are specific to CalBox
+ */
+
+.ui-datebox-pickicon {
+	display: inline-block; width: 216px;
+}
+.ui-datebox-gridheader { 
+	text-align: center;
+}
+.ui-datebox-gridheader .ui-btn-inline { 
+	margin-right: 0;
+}
+.ui-datebox-gridheader h4 { 
+	text-align: center;
+	display: inline-block;
+	margin-top: 10px;
+	margin-bottom: 10px;
+	zoom: 1;
+	*display: inline;
+}
+.ui-datebox-grid { 
+	clear: both; 
+	margin-bottom: 5px; 
+}
+.ui-datebox-inline .ui-datebox-gridrow .ui-controlgroup-controls {
+	width: 100%;
+	text-align: center;
+}
+.ui-datebox-inline .ui-datebox-gridrow .ui-controlgroup-controls .ui-btn {
+	float: none;
+	clear: both;
+}
+.ui-datebox-gridrow { 
+	margin-left: auto; 
+	margin-right: auto;
+	display: table;
+	margin-bottom: -7px;
+}
+.ui-datebox-gridrow-last {
+	margin-bottom: 0;
+}
+.ui-datebox-inline .ui-controlgroup.ui-datebox-gridrow-last {
+	margin-bottom: 5px;
+}
+.ui-datebox-griddate { 
+	width: 36px;
+	height: 30px;
+	line-height: 30px;
+	padding: 0;
+	display: inline-block;
+	vertical-align: middle;
+	text-align: center;
+	font-weight: bold;
+	font-size: 12px;
+	zoom: 1;
+	*display: inline;
+}
+.ui-datebox-griddate-week { 
+	width: 31px;
+	height: 30px;
+	line-height: 30px; 
+	display: inline-block;
+	vertical-align: middle;
+	text-align: center;
+	font-weight: bold;
+	font-size: 12px;
+	zoom: 1;
+	*display: inline;
+}
+.ui-datebox-gridrow div.ui-datebox-griddate-empty { 
+	border: 1px solid transparent;
+	color: #888888;
+}
+.ui-datebox-griddate.ui-datebox-griddate-label {
+	border: 1px solid transparent;
+	height: 15px;
+	line-height: 15px;
+}
+.ui-datebox-gridplus 		{ float: right; }
+.ui-datebox-gridminus 		{ float: left; }
+.ui-datebox-gridplus-rtl 	{ float: left; }
+.ui-datebox-gridminus-rtl 	{ float: right; }
+
+/* 
+ * Android Mode Styles
+ * 
+ * These are specific to datebox, timebox, and durationbox
+ */
+
+.ui-datebox-dboxin div input {
+	text-align: center;
+}
+.ui-datebox-dboxin div {
+	margin: 0 inherit 0;
+}
+.ui-datebox-dboxlab div label {
+	text-align: center;
+}
+div.ui-datebox-cbut.ui-btn.ui-corner-all.ui-icon-plus {
+	border-bottom-right-radius: 0;
+	border-bottom-left-radius: 0;
+	-webkit-border-bottom-right-radius: 0;
+	-webkit-border-bottom-left-radius: 0;
+	height: 40px;
+}
+div.ui-datebox-cbut.ui-btn.ui-corner-all.ui-icon-minus {
+	border-top-right-radius: 0;
+	border-top-left-radius: 0;
+	-webkit-border-top-right-radius: 0;
+	-webkit-border-top-left-radius: 0;
+	height: 40px;
+}
+.ui-datebox-header h4 {
+	text-align: center;
+}
+
+/* 
+ * Flip Mode Styles
+ * 
+ * These are specific to flipbox, timeflipbox, durationflipbox, and 
+ * customflip
+ */
+
+.ui-datebox-fliplab {
+	text-align: center;
+}
+.ui-datebox-flipcenter {
+	width: 260px;
+	height: 40px;
+	border: 1px solid #EEEEEE;
+	margin-right: auto;
+	margin-left: auto;
+	position: relative;
+}
+.ui-datebox-flipcontent {
+	text-align: center;
+	height: 125px;
+	margin-bottom: -40px;
+}
+.ui-datebox-flipcontent div {
+	margin-left: 3px;
+	margin-right: 3px;
+	width: 77px;
+	height: 120px;
+	display: inline-block;
+	text-align: center;
+	zoom: 1;
+	*display: inline;
+	overflow: hidden;
+}
+.ui-datebox-flipcontentd div {
+	width: 60px;
+}
+.ui-datebox-flipcontent ul {
+	list-style-type: none;
+	display: inline;
+	border:1px solid rgba(0,0,0,0);
+}
+.ui-datebox-flipcontent li {
+	height: 30px;
+}
+.ui-datebox-flipcontent li span {
+	margin-top: 7px;
+	display: block;
+}
+
+/* 
+ * Slide Mode Styles
+ * 
+ * Used solely for SlideBox.  Damn this is a lot of extra CSS.
+ */
+
+.ui-datebox-slide { 
+	width: 290px;
+	margin-left: auto;
+	margin-right: auto;
+}
+.ui-datebox-sliderow-int {
+	display: inline-block;
+	white-space: nowrap;
+}
+
+.ui-datebox-sliderow {
+	margin-bottom: 5px;
+	text-align: center;
+	overflow: hidden;
+	width: 290px;
+}
+.ui-datebox-slide .ui-btn {
+	margin: 0;
+	padding: 0px 1em;
+}
+
+.ui-datebox-slidebox {
+	text-align: center;
+	display: inline-block;
+	zoom:1;
+	*display:inline;
+	vertical-align: middle;
+	font-weight: bold;
+}
+.ui-datebox-slideyear {
+	width: 84px;
+	line-height: 30px;
+	height: 30px;
+	font-size: 14px;
+}
+.ui-datebox-slidemonth {
+	width: 51px;
+	line-height: 30px;
+	height: 30px;
+	font-size: 12px;
+}
+.ui-datebox-slideday {
+	width: 32px;
+	line-height: 20px;
+	height: 38px;
+	font-size: 14px;
+}
+.ui-datebox-slidehour {
+	width: 32px;
+	line-height: 22px;
+	height: 24px;
+	font-size: 14px;
+}
+.ui-datebox-slidemins {
+	width: 32px;
+	line-height: 22px;
+	height: 24px;
+	font-size: 14px;
+}
+.ui-datebox-slidewday {
+	font-size: 10px;
+	font-weight: normal;
+}
+
+span.ui-datebox-nopad { margin: 0 }
+.ui-datebox-repad { margin: .5em .4375em }
+
+/*
+ * 6 Element Grid - Used for datebox w/ time only.
+ */
+
+.ui-grid-e > .ui-block-a,
+.ui-grid-e > .ui-block-b,
+.ui-grid-e > .ui-block-c,
+.ui-grid-e > .ui-block-d,
+.ui-grid-e > .ui-block-e,
+.ui-grid-e > .ui-block-f {
+	width: 16.65%;
+}
+.ui-grid-e { 
+	overflow: hidden;
+}
+.ui-block-f {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	float: left;
+	min-height: 1px;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.core.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.core.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.core.js	(revision 101)
@@ -0,0 +1,1365 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notification.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ */
+/* CORE Functions */
+
+(function($) {
+	$.widget( "mobile.datebox", $.mobile.widget, {
+		options: {
+			// All widget options, including some internal runtime details
+			version: '2-1.4.0-2013070300', // jQMMajor.jQMMinor.DBoxMinor-YrMoDaySerial
+			mobVer: parseInt($.mobile.version.replace(/\./g,'')),
+			theme: false,
+			themeDefault: 'a',
+			themeHeader: 'a',
+			mode: false,
+			
+			centerHoriz: false,
+			centerVert: false,
+			transition: 'pop',
+			useAnimation: true,
+			hideInput: false,
+			hideFixedToolbars: false,
+			
+			lockInput: true,
+			enhanceInput: true,
+			
+			zindex: '500',
+			clickEvent: 'vclick',
+			clickEventAlt: 'click',
+			resizeListener: true,
+			
+			defaultValue: false,
+			showInitialValue: false,
+			
+			dialogEnable: false,
+			dialogForce: false,
+			enablePopup: false,
+			
+			popupPosition: false,
+			popupForceX: false,
+			popupForceY: false,
+			
+			useModal: false,
+			useInline: false,
+			useInlineBlind: false,
+			useHeader: true,
+			useImmediate: false,
+			useNewStyle: false,
+			useAltIcon: false,
+			overrideStyleClass: false,
+			
+			useButton: true,
+			useFocus: false,
+			useClearButton: false,
+			useCollapsedBut: false,
+			usePlaceholder: false,
+			
+			openCallback: false,
+			openCallbackArgs: [],
+			closeCallback: false,
+			closeCallbackArgs: [],
+			
+			startOffsetYears: false,
+			startOffsetMonths: false,
+			startOffsetDays: false,
+			afterToday: false,
+			beforeToday: false,
+			notToday: false,
+			maxDays: false,
+			minDays: false,
+			maxYear: false,
+			minYear: false,
+			blackDates: false,
+			blackDatesRec: false,
+			blackDays: false,
+			minHour: false,
+			maxHour: false,
+			minuteStep: 1,
+			minuteStepRound: 0,
+			
+			rolloverMode: { 'm': true, 'd': true, 'h': true, 'i': true, 's': true },
+			
+			useLang: 'default',
+			lang: {
+				'default' : {
+					setDateButtonLabel: 'Set Date',
+					setTimeButtonLabel: 'Set Time',
+					setDurationButtonLabel: 'Set Duration',
+					calTodayButtonLabel: 'Jump to Today',
+					titleDateDialogLabel: 'Set Date',
+					titleTimeDialogLabel: 'Set Time',
+					daysOfWeek: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
+					daysOfWeekShort: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
+					monthsOfYear: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
+					monthsOfYearShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+					durationLabel: ['Days', 'Hours', 'Minutes', 'Seconds'],
+					durationDays: ['Day', 'Days'],
+					timeFormat: 24,
+					headerFormat: '%A, %B %-d, %Y',
+					tooltip: 'Open Date Picker',
+					nextMonth: 'Next Month',
+					prevMonth: 'Previous Month',
+					dateFieldOrder: ['m', 'd', 'y'],
+					timeFieldOrder: ['h', 'i', 'a'],
+					slideFieldOrder: ['y', 'm', 'd'],
+					dateFormat: '%Y-%m-%d',
+					useArabicIndic: false,
+					isRTL: false,
+					calStartDay: 0,
+					clearButton: 'Clear',
+					durationOrder: ['d', 'h', 'i', 's'],
+					meridiem: ['AM', 'PM'],
+					timeOutput: '%k:%M', //{ '12': '%l:%M %p', '24': '%k:%M' },
+					durationFormat: '%Dd %DA, %Dl:%DM:%DS',
+					calDateListLabel: 'Other Dates',
+					calHeaderFormat: '%B %Y'
+				}
+			}
+		},
+		_enhanceDate: function() {
+			$.extend(this._date.prototype, {
+				copy: function(adjust, override) {
+					/* Get a modified copy of the date.
+					 * First array - Offset the new date by #  (position determines date part)
+					 * Second array - If non-zero, force the new date by # (position determines date part)
+					 */
+					if ( typeof adjust === 'undefined' ) { adjust = [0,0,0,0,0,0,0]; }
+					if ( typeof override === 'undefined' ) { override = [0,0,0,0,0,0,0]; }
+					while ( adjust.length < 7 ) { adjust.push(0); }
+					while ( override.length < 7 ) { override.push(0); }
+					return new Date(
+						((override[0] > 0 ) ? override[0] : this.getFullYear() + adjust[0]),
+						((override[1] > 0 ) ? override[1] : this.getMonth() + adjust[1]),
+						((override[2] > 0 ) ? override[2] : this.getDate() + adjust[2]),
+						((override[3] > 0 ) ? override[3] : this.getHours() + adjust[3]),
+						((override[4] > 0 ) ? override[4] : this.getMinutes() + adjust[4]),
+						((override[5] > 0 ) ? override[5] : this.getSeconds() + adjust[5]),
+						((override[6] > 0 ) ? override[5] : this.getMilliseconds() + adjust[6]));
+				},
+				adj: function (type, amount) {
+					/* Adjust the date.  Yes, this is chainable */
+					if ( typeof amount !== 'number' ) {
+						throw new Error("Adjustment value not specified");
+					}
+					if ( typeof type !== 'number' ) {
+						throw new Error("Adjustment type not specified");
+					}
+					switch ( type ) {
+						case 0: this.setFullYear(this.getFullYear() + amount); break;
+						case 1: this.setMonth(this.getMonth() + amount); break;
+						case 2: this.setDate(this.getDate() + amount); break;
+						case 3: this.setHours(this.getHours() + amount); break;
+						case 4: this.setMinutes(this.getMinutes() + amount); break;
+						case 5: this.setSeconds(this.getSeconds() + amount); break;
+						case 6: this.setMilliseconds(this.getMilliseconds() + amount); break;
+					}
+					return this;
+				},
+				setD: function(type, amount) {
+					/* A chainable version of setWhatever() */
+					switch ( type ) {
+						case 0: this.setFullYear(amount); break;
+						case 1: this.setMonth(amount); break;
+						case 2: this.setDate(amount); break;
+						case 3: this.setHours(amount); break;
+						case 4: this.setMinutes(amount); break;
+						case 5: this.setSeconds(amount); break;
+						case 6: this.setMilliseconds(amount); break;
+					}
+					return this;
+				},
+				get: function(type) {
+					switch ( type ) {
+						case 0: return this.getFullYear();
+						case 1: return this.getMonth();
+						case 2: return this.getDate();
+						case 3: return this.getHours();
+						case 4: return this.getMinutes();
+						case 5: return this.getSeconds();
+					}
+					return false;
+				},
+				iso: function() {
+					return String(this.getFullYear()) + '-' + (( this.getMonth() < 9 ) ? "0" : "") + String(this.getMonth()+1) + '-' + ((this.getDate() < 10 ) ? "0" : "") + String(this.getDate());
+				},
+				comp: function () { 
+					return parseInt(this.iso().replace(/-/g,''),10); 
+				},
+				getEpoch: function() { 
+					return (this.getTime() - this.getMilliseconds()) / 1000; 
+				},
+				getArray: function() {
+					return [this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()];
+				},
+				setFirstDay: function (day) {
+					this.setD(2,1).adj(2, (day - this.getDay()));
+					if ( this.get(2) > 10 ) { this.adj(2,7); }
+					return this; 
+				},
+				setDWeek: function (type,num) {
+					if ( type === 4 ) {
+						return this.setD(1,0).setD(2,1).setFirstDay(4).adj(2,-3).adj(2,(num-1)*7);
+					}
+					return this.setD(1,0).setD(2,1).setFirstDay(type).adj(2,(num-1)*7);
+				},
+				getDWeek: function (type) {
+					var t1, t2;
+					
+					switch ( type ) {
+						case 0:
+							t1 = this.copy([0,-1*this.getMonth()]).setFirstDay(0);
+							return Math.floor((this.getTime() - ( t1.getTime() + (( this.getTimezoneOffset() - t1.getTimezoneOffset()) * 60000))) / 6048e5) + 1;
+							//return Math.floor((this.getTime() - t1.getTime()) / 6048e5) + 1;
+						case 1:
+							t1 = this.copy([0,-1*this.getMonth()]).setFirstDay(1);
+							return Math.floor((this.getTime() - ( t1.getTime() + (( this.getTimezoneOffset() - t1.getTimezoneOffset()) * 60000))) / 6048e5) + 1;
+							//return Math.floor((this.getTime() - t1.getTime()) / 6048e5) + 1;
+						case 4:
+							// this line is some bullshit.  but it does work.
+							// (trap for dec 29, 30, or 31st being in the new year's week - these are the
+							//  only 3 that can possibly fall like this)
+							if ( this.getMonth() === 11 && this.getDate() > 28 ) { return 1; } 
+							
+							t1 = this.copy([0,-1*this.getMonth()],true).setFirstDay(4).adj(2,-3);
+							t2 = Math.floor((this.getTime() - ( t1.getTime() + (( this.getTimezoneOffset() - t1.getTimezoneOffset()) * 60000))) / 6048e5) + 1;
+							
+							if ( t2 < 1 ) {
+								t1 = this.copy([-1,-1*this.getMonth()]).setFirstDay(4).adj(2,-3);
+								return Math.floor((this.getTime() - t1.getTime()) / 6048e5) + 1;
+							}
+							return t2;
+						default:
+							return 0;
+					}
+				}
+			});
+		},
+		_event: function(e, p) {
+			var w = $(this).data(parseInt($.mobile.version.replace(/\./g,''),10) > 110 ? 'mobile-datebox' : 'datebox');
+			if ( ! e.isPropagationStopped() ) {
+				switch (p.method) {
+					case 'close':
+						w.close(); break;
+					case 'open':
+						w.open(); break;
+					case 'set':
+						$(this).val(p.value);
+						$(this).trigger('change');
+						break;
+					case 'doset':
+						if ( $.isFunction(w['_'+w.options.mode+'DoSet']) ) {
+							w['_'+w.options.mode+'DoSet'].apply(w,[]);
+						} else {
+							$(this).trigger('datebox', {'method':'set', 'value':w._formatter(w.__fmt(), w.theDate), 'date':w.theDate});
+						}
+						break;
+					case 'dooffset':
+						if (p.type) { w._offset(p.type, p.amount, true); } break; 
+					case 'dorefresh':
+						w.refresh(); break;
+					case 'doreset':
+						w.hardreset(); break;
+					case 'doclear':
+						$(this).val('').trigger('change'); break;
+					case 'clear':
+						$(this).trigger('change');
+				}
+			}
+		},
+		_hoover: function(item) {
+			// Hover toggle class, for calendar
+			$(item).toggleClass('ui-btn-up-'+$(item).jqmData('theme')+' ui-btn-down-'+$(item).jqmData('theme'));
+		},
+		_ord: {
+			'default': function (num) {
+				// Return an ordinal suffix (1st, 2nd, 3rd, etc)
+				var ending = num % 10;
+				if ( num > 9 && num < 21 ) { return 'th'; }
+				if ( ending > 3 ) { return 'th'; }
+				return ['th','st','nd','rd'][ending];
+			}
+		},
+		__ : function(val) {
+			var o = this.options,
+				oride = 'override' + val.charAt(0).toUpperCase() + val.slice(1);
+				
+			if ( typeof o[oride] !== 'undefined' ) { return o[oride]; }
+			if ( typeof o.lang[o.useLang][val] !== 'undefined' ) { return o.lang[o.useLang][val]; }
+			if ( typeof o[o.mode+'lang'] !== 'undefined' && typeof o[o.mode+'lang'][val] !== 'undefined' ) { return o[o.mode+'lang'][val]; }
+			return o.lang['default'][val];
+		},
+		__fmt: function() {
+			var w = this,
+				o = this.options;
+			
+			switch ( o.mode ) {
+				case 'timebox':
+				case 'timeflipbox':
+					return w.__('timeOutput');
+				case 'durationbox':
+				case 'durationflipbox':
+					return w.__('durationFormat');
+				default:
+					return w.__('dateFormat');
+			}
+		},
+		_zPad: function(number) {
+			return (( number < 10 ) ? '0' + String(number) : String(number));
+		},
+		_dRep: function(oper, direction) {
+			var start = 48,
+				end = 57,
+				adder = 1584,
+				i = null, 
+				ch = null,
+				newd = '';
+				
+			if ( direction === -1 ) {
+				start += adder;
+				end += adder;
+				adder = -1584;
+			}
+			
+			for ( i=0; i<oper.length; i++ ) {
+				ch = oper.charCodeAt(i);
+				if ( ch >= start && ch <= end ) {
+					newd = newd + String.fromCharCode(ch+adder);
+				} else {
+					newd = newd + String.fromCharCode(ch);
+				}
+			}
+			
+			return newd;
+		},
+		_doIndic: function() {
+			var w = this;
+				
+			w.d.intHTML.find('*').each(function() {
+				if ( $(this).children().length < 1 ) {
+					$(this).text(w._dRep($(this).text()));
+				} else if ( $(this).hasClass('ui-datebox-slideday') ) {
+					$(this).html(w._dRep($(this).html()));
+				}
+			});
+			w.d.intHTML.find('input').each(function() {
+				$(this).val(w._dRep($(this).val()));
+			});
+		},
+		_parser: {
+			'default': function (str) { return false; }
+		},
+		_n: function (val,def) {
+			return ( val < 0 ) ? def : val;
+		},
+		_pa: function (arr,date) {
+			if ( typeof date === 'boolean' ) { return new this._date(arr[0],arr[1],arr[2],0,0,0,0); }
+			return new this._date(date.getFullYear(), date.getMonth(), date.getDate(), arr[0], arr[1], arr[2], 0);
+		},
+		_makeDate: function (str) {
+			// Date Parser
+			str = $.trim(((this.__('useArabicIndic') === true)?this._dRep(str, -1):str));
+			var w = this,
+				o = this.options,
+				adv = w.__fmt(),
+				exp_input = null,
+				exp_names = [],
+				exp_format = null,
+				exp_temp = null,
+				date = new w._date(),
+				d = { year: -1, mont: -1, date: -1, hour: -1, mins: -1, secs: -1, week: false, wtyp: 4, wday: false, yday: false, meri: 0 },
+				i;
+			
+			if ( typeof o.mode === 'undefined' ) { return date; }
+			if ( typeof w._parser[o.mode] !== 'undefined' ) { return w._parser[o.mode].apply(w,[str]); }
+			
+			if ( o.mode === 'durationbox' || o.mode === 'durationflipbox' ) {
+				adv = adv.replace(/%D([a-z])/gi, function(match, oper) {
+					switch (oper) {
+						case 'd':
+						case 'l':
+						case 'M':
+						case 'S': return '(' + match + '|' +'[0-9]+' + ')';
+						default: return '.+?';
+					}
+				});
+				
+				adv = new RegExp('^' + adv + '$');
+				exp_input = adv.exec(str);
+				exp_format = adv.exec(w.__fmt());
+				
+				if ( exp_input === null || exp_input.length !== exp_format.length ) {
+					if ( typeof o.defaultValue === "number" && o.defaultValue > 0 ) {
+						return new w._date((w.initDate.getEpoch() + parseInt(o.defaultValue,10))*1000);
+					} 
+					return new w._date(w.initDate.getTime());
+				} 
+				
+				exp_temp = w.initDate.getEpoch();
+				for ( i=0; i<exp_input.length; i++ ) { //0y 1m 2d 3h 4i 5s
+					if ( exp_format[i].match(/^%Dd$/i) )   { exp_temp = exp_temp + (parseInt(exp_input[i],10)*60*60*24); }
+					if ( exp_format[i].match(/^%Dl$/i) )   { exp_temp = exp_temp + (parseInt(exp_input[i],10)*60*60); }
+					if ( exp_format[i].match(/^%DM$/i) )   { exp_temp = exp_temp + (parseInt(exp_input[i],10)*60); }
+					if ( exp_format[i].match(/^%DS$/i) )   { exp_temp = exp_temp + (parseInt(exp_input[i],10)); }
+				}
+				return new w._date((exp_temp*1000));
+			}
+			
+			adv = adv.replace(/%(0|-)*([a-z])/gi, function(match, pad, oper) {
+				exp_names.push(oper);
+				switch (oper) {
+					case 'p':
+					case 'P':
+					case 'b':
+					case 'B': return '(' + match + '|' +'.+?' + ')';
+					case 'H':
+					case 'k':
+					case 'I':
+					case 'l':
+					case 'm':
+					case 'M':
+					case 'S':
+					case 'V':
+					case 'U':
+					case 'u':
+					case 'W':
+					case 'd': return '(' + match + '|' + (( pad === '-' ) ? '[0-9]{1,2}' : '[0-9]{2}') + ')';
+					case 'j': return '(' + match + '|' + '[0-9]{3}' + ')';
+					case 's': return '(' + match + '|' + '[0-9]+' + ')';
+					case 'g':
+					case 'y': return '(' + match + '|' + '[0-9]{2}' + ')';
+					case 'E':
+					case 'G':
+					case 'Y': return '(' + match + '|' + '[0-9]{1,4}' + ')';
+					default: exp_names.pop(); return '.+?';	
+				}
+			});
+			
+			adv = new RegExp('^' + adv + '$');
+			exp_input = adv.exec(str);
+			exp_format = adv.exec(w.__fmt());
+			
+			if ( exp_input === null || exp_input.length !== exp_format.length ) {
+				if ( o.defaultValue !== false ) {
+					switch ( typeof o.defaultValue ) {
+						case 'object':
+							if ( o.defaultValue.length === 3 ) {
+								date =  w._pa(o.defaultValue,((o.mode === 'timebox' || o.mode === 'timeflipbox') ? date : false));
+							} break;
+						case 'number':
+							date =  new w._date(o.defaultValue * 1000); break;
+						case 'string':
+							if ( o.mode === 'timebox' || o.mode === 'timeflipbox' ) {
+								exp_temp = o.defaultValue.split(':');
+								if ( exp_temp.length === 3 ) { date = w._pa([exp_temp[0],exp_temp[1],exp_temp[2]], date); }
+								else if ( exp_temp.length === 2 ) { date = w._pa([exp_temp[0],exp_temp[1],0], date); }
+							} else {
+								exp_temp = o.defaultValue.split('-');
+								if ( exp_temp.length === 3 ) { date = w._pa([exp_temp[0],exp_temp[1]-1,exp_temp[2]], false); }
+							} break;
+					}
+				}
+				if ( isNaN(date.getDate()) ) { date = new w._date(); }
+			} else {
+				for ( i=1; i<exp_input.length; i++ ) {
+					switch ( exp_names[i-1] ) {
+						case 's': return new w._date(parseInt(exp_input[i],10) * 1000);
+						case 'Y':
+						case 'G': d.year = parseInt(exp_input[i],10); break;
+						case 'E': d.year = parseInt(exp_input[i],10) - 543; break;
+						case 'y':
+						case 'g':
+							if ( o.afterToday === true || parseInt(exp_input[i],10) < 38 ) {
+								d.year = parseInt('20' + exp_input[i],10);
+							} else {
+								d.year = parseInt('19' + exp_input[i],10);
+							} break;
+						case 'm': d.mont = parseInt(exp_input[i],10)-1; break;
+						case 'd': d.date = parseInt(exp_input[i],10); break;
+						case 'H':
+						case 'k':
+						case 'I':
+						case 'l': d.hour = parseInt(exp_input[i],10); break;
+						case 'M': d.mins = parseInt(exp_input[i],10); break;
+						case 'S': d.secs = parseInt(exp_input[i],10); break;
+						case 'u': d.wday = parseInt(exp_input[i],10)-1; break;
+						case 'w': d.wday = parseInt(exp_input[i],10); break;
+						case 'j': d.yday = parseInt(exp_input[i],10); break;
+						case 'V': d.week = parseInt(exp_input[i],10); d.wtyp = 4; break;
+						case 'U': d.week = parseInt(exp_input[i],10); d.wtyp = 0; break;
+						case 'W': d.week = parseInt(exp_input[i],10); d.wtyp = 1; break;
+						case 'p':
+						case 'P': d.meri = (( exp_input[i].toLowerCase() === w.__('meridiem')[0].toLowerCase() )? -1:1); break;
+						case 'b':
+							exp_temp = $.inArray(exp_input[i], w.__('monthsOfYearShort'));
+							if ( exp_temp > -1 ) { d.mont = exp_temp; }
+							break;
+						case 'B':
+							exp_temp = $.inArray(exp_input[i], w.__('monthsOfYear'));
+							if ( exp_temp > -1 ) { d.mont = exp_temp; }
+							break;
+					}
+				}
+				if ( d.meri !== 0 ) {
+					if ( d.meri === -1 && d.hour === 12 ) { d.hour = 0; }
+					if ( d.meri === 1 && d.hour !== 12 ) { d.hour = d.hour + 12; }
+				}
+				
+				date = new w._date(w._n(d.year,0),w._n(d.mont,0),w._n(d.date,1),w._n(d.hour,0),w._n(d.mins,0),w._n(d.secs,0),0);
+				
+				if ( d.year < 100 && d.year !== -1 ) { date.setFullYear(d.year); }
+				
+				if ( ( d.mont > -1 && d.date > -1 ) || ( d.hour > -1 && d.mins > -1 && d.secs > -1 ) ) { return date; }
+				
+				if ( d.week !== false ) {
+					date.setDWeek(d.wtyp, d.week);
+					if ( d.date > -1 ) { date.setDate(d.date); } 
+				}
+				if ( d.yday !== false ) { date.setD(1,0).setD(2,1).adj(2,(d.yday-1)); }
+				if ( d.wday !== false ) { date.adj(2,(d.wday - date.getDay())); }
+			}
+			return date;
+		},
+		_customformat: {
+			'default': function(oper, date) { return false; }
+		},
+		_formatter: function(format, date) {
+			var w = this,
+				o = this.options, tmp,
+				dur = {
+					part: [0,0,0,0], tp: 0
+				};
+				
+				if ( o.mode === 'durationbox' || o.mode === 'durationflipbox' ) {
+					dur.tp = this.theDate.getEpoch() - this.initDate.getEpoch();
+					dur.part[0] = parseInt( dur.tp / (60*60*24),10); dur.tp -=(dur.part[0]*60*60*24); // Days
+					dur.part[1] = parseInt( dur.tp / (60*60),10); dur.tp -= (dur.part[1]*60*60); // Hours
+					dur.part[2] = parseInt( dur.tp / (60),10); dur.tp -= (dur.part[2]*60); // Minutes
+					dur.part[3] = dur.tp; // Seconds
+			
+					if ( ! format.match(/%Dd/) ) { dur.part[1] += (dur.part[0]*24);}
+					if ( ! format.match(/%Dl/) ) { dur.part[2] += (dur.part[1]*60);}
+					if ( ! format.match(/%DM/) ) { dur.part[3] += (dur.part[2]*60);}
+				}
+				
+			format = format.replace(/%(D|X|0|-)*([1-9a-zA-Z])/g, function(match, pad, oper) {
+				if ( pad === 'X' ) {
+					if ( typeof w._customformat[o.mode] !== 'undefined' ) { return w._customformat[o.mode](oper, date, o); }
+					return match;
+				}
+				if ( pad === 'D' ) {
+					switch ( oper ) {
+						case 'd': return dur.part[0];
+						case 'l': return w._zPad(dur.part[1]);
+						case 'M': return w._zPad(dur.part[2]);
+						case 'S': return w._zPad(dur.part[3]);
+						case 'A': return ((dur.part[0] > 1)?w.__('durationDays')[1]:w.__('durationDays')[0]);
+						default: return match;
+					}
+				}
+				switch ( oper ) {
+					case '%': // Literal %
+						return '%';
+					case 'a': // Short Day
+						return w.__('daysOfWeekShort')[date.getDay()];
+					case 'A': // Full Day of week
+						return w.__('daysOfWeek')[date.getDay()];
+					case 'b': // Short month
+						return w.__('monthsOfYearShort')[date.getMonth()];
+					case 'B': // Full month
+						return w.__('monthsOfYear')[date.getMonth()];
+					case 'C': // Century
+						return date.getFullYear().toString().substr(0,2);
+					case 'd': // Day of month
+						return (( pad === '-' ) ? date.getDate() : w._zPad(date.getDate()));
+					case 'H': // Hour (01..23)
+					case 'k':
+						return (( pad === '-' ) ? date.getHours() : w._zPad(date.getHours()));
+					case 'I': // Hour (01..12)
+					case 'l':
+						return (( pad === '-' ) ? ((date.getHours() === 0 || date.getHours() === 12)?12:((date.getHours()<12)?date.getHours():(date.getHours()-12))) : w._zPad(((date.getHours() === 0 || date.getHours() === 12)?12:((date.getHours()<12)?date.getHours():date.getHours()-12))));
+					case 'm': // Month
+						return (( pad === '-' ) ? date.getMonth()+1 : w._zPad(date.getMonth()+1));
+					case 'M': // Minutes
+						return (( pad === '-' ) ? date.getMinutes() : w._zPad(date.getMinutes()));
+					case 'p': // AM/PM (ucase)
+						return ((date.getHours() < 12)?w.__('meridiem')[0].toUpperCase():w.__('meridiem')[1].toUpperCase());
+					case 'P': // AM/PM (lcase)
+						return ((date.getHours() < 12)?w.__('meridiem')[0].toLowerCase():w.__('meridiem')[1].toLowerCase());
+					case 's': // Unix Seconds
+						return date.getEpoch();
+					case 'S': // Seconds
+						return (( pad === '-' ) ? date.getSeconds() : w._zPad(date.getSeconds()));
+					case 'u': // Day of week (1-7)
+						return (( pad === '-' ) ? date.getDay() + 1 : w._zPad(date.getDay() + 1));
+					case 'w': // Day of week
+						return date.getDay();
+					case 'y': // Year (2 digit)
+						return date.getFullYear().toString().substr(2,2);
+					case 'Y': // Year (4 digit)
+						return date.getFullYear();
+					case 'E': // BE (Buddist Era, 4 Digit)
+						return date.getFullYear() + 543;
+					case 'V':
+						return (( pad === '-' ) ? date.getDWeek(4) : w._zPad(date.getDWeek(4)));
+					case 'U':
+						return (( pad === '-' ) ? date.getDWeek(0) : w._zPad(date.getDWeek(0)));
+					case 'W':
+						return (( pad === '-' ) ? date.getDWeek(1) : w._zPad(date.getDWeek(1)));
+					case 'o': // Ordinals
+						if ( typeof w._ord[o.useLang] !== 'undefined' ) { return w._ord[o.useLang](date.getDate()); }
+						return w._ord['default'](date.getDate());
+					case 'j':
+						tmp = new Date(date.getFullYear(),0,1);
+						tmp = Math.ceil((date - tmp) / 86400000)+1;
+						return (( tmp < 100 ) ? (( tmp < 10 )? '00' : '0') : '' ) + String(tmp);
+					case 'G':
+						if ( date.getDWeek(4) === 1 && date.getMonth() > 0 ) { return date.getFullYear() + 1; } 
+						if ( date.getDWeek(4) > 51 && date.getMonth() < 11 ) { return date.getFullYear() - 1; }
+						return date.getFullYear();
+					case 'g':
+						if ( date.getDWeek(4) === 1 && date.getMonth() > 0 ) { return parseInt(date.getFullYear().toString().substr(2,2),10) + 1; }
+						if ( date.getDWeek(4) > 51 && date.getMonth() < 11 ) { return parseInt(date.getFullYear().toString().substr(2,2),10) - 1; }
+						return date.getFullYear().toString().substr(2,2);
+					default:
+						return match;
+				}
+			});
+		
+			if ( w.__('useArabicIndic') === true ) {
+				format = w._dRep(format);
+			}
+		
+			return format;
+		},
+		_btwn: function(value, low, high) {
+			return ( value > low && value < high );
+		},
+		_minStepFix: function() {
+			var tempMin = this.theDate.get(4), tmp,
+				w = this,
+				o = this.options;
+				
+			if ( o.minuteStep > 1 && tempMin % o.minuteStep > 0 ) {
+				if ( o.minuteStepRound < 0 ) {
+					tempMin = tempMin - (tempMin % o.minuteStep);
+				} else if ( o.minStepRound > 0 ) {
+					tempMin = tempMin + ( o.minuteStep - ( tempMin % o.minuteStep ) );
+				} else {
+					if ( tempMin % o.minuteStep < o.minuteStep / 2 ) {
+						tempMin = tempMin - (tempMin % o.minuteStep);
+					} else {
+						tempMin = tempMin + ( o.minuteStep - ( tempMin % o.minuteStep ) );
+					}
+				}
+			w.theDate.setMinutes(tempMin);
+			}
+		},
+		_offset: function(mode, amount, update) {
+			// Compute a date/time offset.
+			//   update = false to prevent controls refresh
+			var w = this,
+				o = this.options,
+				ok = false;
+				
+			mode = (mode || "").toLowerCase();
+				
+			if ( typeof(update) === "undefined" ) { update = true; }
+			w.d.input.trigger('datebox', {'method':'offset', 'type':mode, 'amount':amount});
+			
+			if ( mode !== 'a' && ( typeof o.rolloverMode[mode] === 'undefined' || o.rolloverMode[mode] === true )) {
+				ok = $.inArray(mode, ['y','m','d','h','i','s']);
+			} else {
+				switch(mode) {
+					case 'y': ok = 0; break;
+					case 'm':
+						if ( w._btwn(w.theDate.getMonth()+amount,-1,12) ) { ok = 1; }
+						break;
+					case 'd':
+						if ( w._btwn(w.theDate.getDate() + amount,0,(32 - w.theDate.copy([0],[0,0,32,13]).getDate() + 1) )) { ok = 2; }
+						break;
+					case 'h':
+						if ( w._btwn(w.theDate.getHours() + amount,-1,24) ) { ok = 3; }
+						break;
+					case 'i':
+						if ( w._btwn(w.theDate.getMinutes() + amount,-1,60) ) { ok = 4; }
+						break;
+					case 's':
+						if ( w._btwn(w.theDate.getSeconds() + amount,-1,60) ) { ok = 5; }
+						break;
+					case 'a':
+						w._offset('h',((amount>0)?1:-1)*12,false);
+						break;
+				}
+			}
+			if ( ok !== false ) { w.theDate.adj(ok,amount); }
+			if ( update === true ) { w.refresh(); }
+			if ( o.useImmediate ) { w.d.input.trigger('datebox', {'method':'doset'}); }
+		},
+		_startOffset: function(date) {
+			var o = this.options;
+			
+			if ( o.startOffsetYears !== false ) {
+				date.adj(0, o.startOffsetYears);
+			}
+			if ( o.startOffsetMonths !== false ) {
+				date.adj(1, o.startOffsetMonths);
+			}
+			if ( o.startOffsetDays !== false ) {
+				date.adj(2, o.startOffsetDays);
+			}
+			return date;
+		},
+		_create: function() {
+			// Create the widget, called automatically by widget system
+			$( document ).trigger( "dateboxcreate" );
+		
+			var w = this,
+				o = $.extend(this.options, (typeof this.element.jqmData('options') !== 'undefined') ? this.element.jqmData('options') : this._getLongOptions(this.element) ),
+				thisTheme = ( o.theme === false && typeof($(this).jqmData('theme')) === 'undefined' ) ?
+					( ( typeof(this.element.parentsUntil(':jqmData(theme)').parent().jqmData('theme')) === 'undefined' ) ?
+						o.themeDefault : this.element.parentsUntil(':jqmData(theme)').parent().jqmData('theme') )
+					: o.theme,
+				trans = o.useAnimation ? o.transition : 'none',
+				d = o.useNewStyle === false ? {
+					input: this.element,
+					wrap: this.element.wrap('<div class="ui-input-datebox ui-shadow-inset ui-corner-all '+ (this.element.jqmData("mini") === true ? 'ui-mini ':'') +'ui-body-'+ thisTheme +'"></div>').parent(),
+					mainWrap: $("<div>", { "class": 'ui-datebox-container ui-overlay-shadow ui-corner-all ui-datebox-hidden '+trans+' ui-body-'+thisTheme} ).css('zIndex', o.zindex),
+					intHTML: false
+				} : {
+					input: this.element,
+					wrap: this.element,
+					mainWrap: $("<div>", { "class": 'ui-datebox-container ui-overlay-shadow ui-corner-all ui-datebox-hidden '+trans+' ui-body-'+thisTheme} ).css('zIndex', o.zindex),
+					intHTML: false
+				},
+				touch = ( typeof window.ontouchstart !== 'undefined' ),
+				drag = {
+					eStart : (touch ? 'touchstart' : 'mousedown')+'.datebox',
+					eMove  : (touch ? 'touchmove' : 'mousemove')+'.datebox',
+					eEnd   : (touch ? 'touchend' : 'mouseup')+'.datebox',
+					eEndA  : (touch ? 'mouseup.datebox touchend.datebox touchcancel.datebox touchmove.datebox' : 'mouseup.datebox'),
+					move   : false,
+					start  : false,
+					end    : false,
+					pos    : false,
+					target : false,
+					delta  : false,
+					tmp    : false
+				},
+				calc = { },
+				ns = (typeof $.mobile.ns !== 'undefined')?$.mobile.ns:'';
+				
+			$.extend(w, {d: d, ns: ns, drag: drag, touch:touch});
+			
+			if ( o.usePlaceholder !== false ) {
+				if ( o.usePlaceholder === true && w._grabLabel() !== false ) { w.d.input.attr('placeholder', w._grabLabel()); }
+				if ( typeof o.usePlaceholder === 'string' ) { w.d.input.attr('placeholder', o.usePlaceholder); }
+			}
+			
+			o.theme = thisTheme;
+			
+			w.clearFunc = false;
+			w.disabled = false;
+			w.runButton = false;
+			w._date = window.Date;
+			w._enhanceDate();
+			w.baseID = w.d.input.attr('id');
+			
+			w.initDate = new w._date();
+			w.theDate = (o.defaultValue) ? w._makeDate(o.defaultValue) : ( (w.d.input.val() !== "") ? w._makeDate(w.d.input.val()) : new w._date() );
+			w.initDone = false;
+
+			if ( o.showInitialValue === true ) {
+				w.d.input.val(w._formatter(w.__fmt(), w.theDate));
+			}
+			
+			if ( o.useButton === true && o.useInline === false && o.useNewStyle === false ) {
+				w.d.open = $('<a href="#" class="ui-input-clear" title="'+this.__('tooltip')+'">'+this.__('tooltip')+'</a>')
+					.on(o.clickEvent, function(e) {
+						e.preventDefault();
+						if ( !w.disabled ) { w.d.input.trigger('datebox', {'method': 'open'}); w.d.wrap.parent().addClass('ui-focus'); w.d.input.parent().removeClass('ui-focus'); }
+						setTimeout( function() { $(e.target).closest('a').removeClass($.mobile.activeBtnClass); }, 300);
+					}).appendTo(w.d.wrap).buttonMarkup({icon: 'grid', iconpos: 'notext', corners:true, shadow:true})
+					.css({'vertical-align': 'middle', 'display': 'inline-block'});
+			}
+			
+			w.d.screen = $("<div>", {'class':'ui-datebox-screen ui-datebox-hidden'+((o.useModal)?' ui-datebox-screen-modal':'')})
+				.css({'z-index': o.zindex-1})
+				.on(o.clickEventAlt, function(e) {
+					e.preventDefault();
+					w.d.input.trigger('datebox', {'method':'close'});
+				});
+			
+			if ( o.enhanceInput === true && navigator.userAgent.match(/Android/i) ){
+				w.inputType = 'number';
+			} else {
+				w.inputType = 'text';
+			}
+			
+			if ( o.hideInput ) { w.d.wrap.parent().hide(); }
+		
+			if ( o.mobVer < 140 ) {
+				$('label[for=\''+w.d.input.attr('id')+'\']').addClass('ui-input-text').css('verticalAlign', 'middle');
+			}
+
+			w.d.wrap.on(o.clickEvent, function() {
+				if ( !w.disabled && ( o.noButtonFocusMode || o.focusMode ) ) { 
+					w.d.input.trigger('datebox', {'method': 'open'});
+					w.d.wrap.addClass('ui-focus');
+					w.d.input.removeClass('ui-focus');
+				}
+			});
+
+			w.d.input
+				.removeClass('ui-corner-all ui-shadow-inset')
+				.bind(w.touch?'touchend':'click', function(e){
+					if ( w.disabled === false && o.useNewStyle === true && o.useFocus === false ) {
+						if ( ((w.touch ? e.originalEvent.changedTouches[0].pageX : e.pageX) - e.target.offsetLeft) > (e.target.offsetWidth - 20) ) {
+							w.d.input.trigger('datebox', {'method': 'open'}); w.d.wrap.parent().addClass('ui-focus'); w.d.input.removeClass('ui-focus');
+							//setTimeout(function(){w.d.wrap.addClass('ui-focus');}, 200);
+						}
+					}
+				})
+				.focus(function(){
+					if ( w.disabled === false && o.useFocus === true ) {
+						w.d.input.trigger('datebox', {'method': 'open'}); w.d.wrap.addClass('ui-focus'); w.d.input.removeClass('ui-focus');
+						if ( o.useNewStyle === false ) { w.d.input.parent().removeClass('ui-focus'); w.d.wrap.parent().addClass('ui-focus'); }
+					} 
+					if ( o.useNewStyle === false ) { w.d.input.removeClass('ui-focus'); }
+				})
+				.blur(function(){
+					w.d.wrap.removeClass('ui-focus');
+					w.d.input.removeClass('ui-focus');
+				})
+				.change(function() {
+					w.theDate = w._makeDate(w.d.input.val());
+					w.refresh();
+				})
+				.attr("readonly", o.lockInput)
+				.on('datebox', w._event);
+			
+			if ( o.useNewStyle === true ) {
+				w.d.input.addClass('ui-corner-all '+((o.useAltIcon===true)?'ui-icon-datebox-alt':'ui-icon-datebox'));
+				if ( o.overrideStyleClass !== false ) { w.d.input.addClass(o.overrideStyleClass); }
+			} else {
+				w.d.input.parent().css('border', 'none').removeClass('ui-shadow-inset');
+			}
+			
+			w.d.wrap.parent().on(o.clickEvent, function() {
+				if ( !w.disabled && o.useFocus === true && o.useNewStyle === false ) {
+					w.d.input.trigger('datebox', {'method': 'open'}); w.d.wrap.addClass('ui-focus'); w.d.input.removeClass('ui-focus');
+					setTimeout(function(){
+						w.d.wrap.removeClass('ui-focus');
+						w.d.wrap.parent().addClass('ui-focus');
+					}, 500);
+				}
+			});
+
+			// Check if mousewheel plugin is loaded
+			if ( typeof $.event.special.mousewheel !== 'undefined' ) { w.wheelExists = true; }
+		
+			// Disable when done if element attribute disabled is true.
+			if ( w.d.input.is(':disabled') ) {
+				w.disable();
+			}
+			
+			if ( o.useInline === true || o.useInlineBlind ) { w.open(); }
+			
+			w.applyMinMax(false, false);
+			
+			//Throw dateboxinit event
+			$( document ).trigger( "dateboxaftercreate" );
+		},
+		applyMinMax: function(refresh, override) {
+			var w = this,
+					o = this.options,
+					calc = {};
+					
+			if ( typeof refresh === 'undefined' ) { refresh = false; }
+			if ( typeof override === 'undefined' ) { override = true; }
+			
+			if ( ( override === true || o.minDays === false ) && typeof(w.d.input.attr('min')) !== 'undefined' ) {
+				calc.today  = new w._date();
+				calc.lod    = 24 * 60 * 60 * 1000;
+				calc.todayc = new w._date(calc.today.getFullYear(), calc.today.getMonth(), calc.today.getDate(), 0,0,0,0);
+				calc.fromel = w.d.input.attr('min').split('-');
+				calc.compdt  = new w._date(calc.fromel[0],calc.fromel[1]-1,calc.fromel[2],0,0,0,0);
+				o.minDays = parseInt((((calc.compdt.getTime() - calc.todayc.getTime()) / calc.lod))*-1,10);
+			}
+			if ( ( override === true || o.maxDays === false ) && typeof(w.d.input.attr('max')) !== 'undefined' ) {
+				calc.today  = new w._date();
+				calc.lod    = 24 * 60 * 60 * 1000;
+				calc.todayc = new w._date(calc.today.getFullYear(), calc.today.getMonth(), calc.today.getDate(), 0,0,0,0);
+				calc.fromel = w.d.input.attr('max').split('-');
+				calc.compdt  = new w._date(calc.fromel[0],calc.fromel[1]-1,calc.fromel[2],0,0,0,0);
+				o.maxDays = parseInt((((calc.compdt.getTime() - calc.todayc.getTime()) / calc.lod)),10);
+			}
+			
+			if ( refresh === true ) { w.refresh(); }
+		},
+		_build: {
+			'default': function () {
+				this.d.headerText = "Error";
+				this.d.intHTML = $("<div class='ui-body-b'><h2 style='text-align:center'>There is no mode by that name loaded / mode not given</h2></div>");
+			}
+		},
+		_applyCoords: function(e) {
+			var w = e.widget,
+				o = e.widget.options,
+				fixd = {
+					h: $.mobile.activePage.find('.ui-header').jqmData('position'),
+					f: $.mobile.activePage.find('.ui-footer').jqmData('position'),
+					fh: $.mobile.activePage.find('.ui-footer').outerHeight(),
+					hh: $.mobile.activePage.find('.ui-header').outerHeight()
+				},
+				iput = {
+					x: w.d.wrap.offset().left + (w.d.wrap.outerWidth() / 2),
+					y: w.d.wrap.offset().top + (w.d.wrap.outerHeight() / 2)
+				},
+				size = {
+					w: w.d.mainWrap.outerWidth(),
+					h: w.d.mainWrap.outerHeight()
+				},
+				doc = {
+					t: $(window).scrollTop(),
+					h: $(window).height(),
+					w: $.mobile.activePage.width(),
+					ah: $(document).height()
+				},
+				pos = {
+					y: (o.centerVert) ? doc.t + ((doc.h / 2) - (size.h / 2)) : iput.y  - ( size.h / 2 ),
+					x: (doc.w < 400 || o.centerHoriz ) ? (doc.w / 2) - (size.w /2) : iput.x  - (size.w / 2)
+				};
+				
+			if ( o.centerVert === false ) {
+				if ( o.hideFixedToolbars === true && ( typeof fixd.f !== 'undefined' || typeof fixd.h !== 'undefined' )) {
+					$.mobile.activePage.find(":jqmData(position='fixed')").fixedtoolbar('hide');
+					fixd.f = undefined;
+					fixd.h = undefined;
+				}
+				
+				if ( typeof fixd.f !== 'undefined' ) {
+					if ( ( pos.y + size.h ) > ( doc.h - fixd.fh - 2 ) ) {
+						pos.y = doc.h - fixd.fh - 2 - size.h;
+					}
+				} else {
+					if ( ( pos.y + size.h ) > ( doc.ah - fixd.fh - 2 ) ) {
+						pos.y = doc.ah - fixd.fh - 2 - size.h;
+					}
+					if ( ( doc.h + doc.t ) < ( size.h + pos.y + 2 ) ) {
+						pos.y = doc.h + doc.t - size.h - 2;
+					}
+				}
+				
+				if ( typeof fixd.h !== 'undefined' ) {
+					if ( ( doc.t + fixd.hh + 2 ) > pos.y ) {
+						pos.y = doc.t + fixd.hh + 2;
+					}
+				} else {
+					if ( fixd.hh + 2 > pos.y ) {
+						pos.y = fixd.hh + 2;
+					}
+					if ( pos.y < doc.t + 2 ) {
+						pos.y = doc.t + 2;
+					}
+				}
+			}
+			w.d.mainWrap.css({'position': 'absolute', 'top': pos.y, 'left': pos.x});
+		},
+		_drag: {
+			'default': function () { return false; }
+		},
+		open: function () {
+			var w = this,
+				o = this.options, 
+				popopts = {},
+				basepop = {'history':false},
+				qns = 'data-'+this.ns,
+				trans = o.useAnimation ? o.transition : 'none';
+			
+			if ( o.useFocus === true && w.fastReopen === true ) { w.d.input.blur(); return false; }
+			if ( w.clearFunc !== false ) {
+				clearTimeout(w.clearFunc); w.clearFunc = false;
+			}
+			
+			// Call the open callback if provided. Additionally, if this
+			// returns false then the open/update will stop.
+			if ( o.openCallback !== false ) {
+				if ( ! $.isFunction(o.openCallback) ) {
+					if ( typeof window[o.openCallback] !== 'undefined' ) {
+						o.openCallback = window[o.openCallback];
+					} else {
+						o.openCallback = new Function(o.openCallback);
+					}
+				}
+				if ( o.openCallback.apply(w, $.merge([w.theDate],o.openCallbackArgs)) === false ) { return false; }
+			}
+				
+			w.theDate = w._makeDate(w.d.input.val());
+			if ( w.d.input.val() === "" ) { w._startOffset(w.theDate); }
+			w.d.input.blur();
+			
+			if ( typeof w._build[o.mode] === 'undefined' ) {
+				w._build['default'].apply(w,[]);
+			} else {
+				w._build[o.mode].apply(w,[]);
+			}
+			if ( typeof w._drag[o.mode] !== 'undefined' ) {
+				w._drag[o.mode].apply(w, []);
+			}
+			w.d.input.trigger('datebox', {'method':'refresh'});
+			if ( w.__('useArabicIndic') === true ) { w._doIndic(); }
+			
+			if ( ( o.useInline === true || o.useInlineBlind === true ) && w.initDone === false ) {
+				w.d.mainWrap.append(w.d.intHTML);
+				w.d.input.parent().parent().append(w.d.mainWrap);
+				w.d.mainWrap.removeClass('ui-datebox-hidden');
+				if ( o.useInline === true ) {
+					w.d.mainWrap.addClass('ui-datebox-inline');
+				} else {
+					w.d.mainWrap.addClass('ui-datebox-inlineblind');
+					w.d.mainWrap.hide();
+				}
+				w.initDone = false;
+				w.d.input.trigger('datebox',{'method':'postrefresh'});
+			}
+			
+			if ( o.useImmediate ) { w.d.input.trigger('datebox', {'method':'doset'}); }
+			if ( o.useInline ) { return true; }
+			if ( o.useInlineBlind ) { 
+				if ( w.initDone ) { w.d.mainWrap.slideDown();  }
+				else { w.initDone = true; }
+				return true;
+			}
+			if ( w.d.intHTML.is(':visible') ) { return false; } // Ignore if already open
+				
+			if ( o.enablePopup === true ) {
+				w.d.dialogPage = false;
+				w.d.mainWrap.empty();
+				if ( o.useHeader === true ) {
+					w.d.headHTML = $('<div class="ui-header ui-bar-'+o.themeHeader+'"></div>');
+					$("<a class='ui-btn-left' href='#'>Close</a>").appendTo(w.d.headHTML)
+						.buttonMarkup({ theme  : o.themeHeader, icon   : 'delete', iconpos: 'notext', corners: true, shadow : true })
+						.on(o.clickEventAlt, function(e) { e.preventDefault(); w.d.input.trigger('datebox', {'method':'close'}); });
+					$('<h1 class="ui-title">'+w.d.headerText+'</h1>').appendTo(w.d.headHTML);
+					w.d.mainWrap.append(w.d.headHTML);
+				}
+				w.d.mainWrap.append(w.d.intHTML).css('zIndex', o.zindex);
+				w.d.input.trigger('datebox',{'method':'postrefresh'});
+				
+				if ( o.useAnimation === true ) {
+					popopts.transition = o.transition;
+				} else {
+					popopts.transition = "none";
+				}
+				
+				if ( o.popupForceX !== false && o.popupForceY !== false ) {
+					popopts.x = o.popupForceX;
+					popopts.y = o.popupForceY;
+				}
+				
+				if ( o.popupPosition !== false ) {
+					popopts.positionTo = o.popupPosition;
+				} else {
+					if ( typeof w.baseID !== undefined ) {
+						popopts.positionTo = '#' + w.baseID;
+					} else {
+						popopts.positionTo = 'window';
+					}
+				}
+				
+				if ( o.useModal === true ) { basepop.overlayTheme = "a"; }
+				
+				w.d.mainWrap.removeClass('ui-datebox-hidden').popup(basepop).popup("open", popopts);
+				w.refresh();
+			} else {
+				if ( o.dialogForce || ( o.dialogEnable && window.width() < 400 ) ) {
+					w.d.dialogPage = $("<div "+qns+"role='dialog' "+qns+"theme='"+o.theme+"' >" +
+						"<div "+qns+"role='header' "+qns+"theme='"+o.themeHeader+"'>" +
+						"<h1>"+w.d.headerText+"</h1></div><div "+qns+"role='content'></div>")
+						.appendTo( $.mobile.pageContainer )
+						.page().css('minHeight', '0px').addClass(trans);
+					w.d.dialogPage.find('.ui-header').find('a').off('click vclick').on(o.clickEventAlt, function(e) { e.preventDefault(); w.d.input.trigger('datebox', {'method':'close'}); });
+					w.d.mainWrap.append(w.d.intHTML).css({'marginLeft':'auto', 'marginRight':'auto'}).removeClass('ui-datebox-hidden');
+					w.d.dialogPage.find('.ui-content').append(w.d.mainWrap);
+					w.d.input.trigger('datebox',{'method':'postrefresh'});
+					$.mobile.activePage.off( "pagehide.remove" );
+					$.mobile.changePage(w.d.dialogPage, {'transition': trans});
+				} else {
+					w.d.dialogPage = false;
+					w.d.mainWrap.empty();
+					if ( o.useHeader === true ) {
+						w.d.headHTML = $('<div class="ui-header ui-bar-'+o.themeHeader+'"></div>');
+						$("<a class='ui-btn-left' href='#'>Close</a>").appendTo(w.d.headHTML)
+							.buttonMarkup({ theme  : o.themeHeader, icon   : 'delete', iconpos: 'notext', corners: true, shadow : true })
+							.on(o.clickEventAlt, function(e) { e.preventDefault(); w.d.input.trigger('datebox', {'method':'close'}); });
+						$('<h1 class="ui-title">'+w.d.headerText+'</h1>').appendTo(w.d.headHTML);
+						w.d.mainWrap.append(w.d.headHTML);
+					}
+					w.d.mainWrap.append(w.d.intHTML).css('zIndex', o.zindex);
+					w.d.mainWrap.appendTo($.mobile.activePage);
+					w.d.screen.appendTo($.mobile.activePage);
+					w.d.input.trigger('datebox',{'method':'postrefresh'});
+					w._applyCoords({widget:w});
+					
+					if ( o.useModal === true ) { 
+						if(o.useAnimation) {
+							w.d.screen.fadeIn('slow');
+						} else {
+							w.d.screen.show();
+						}
+					} else {
+						setTimeout(function () { w.d.screen.removeClass('ui-datebox-hidden');}, 500);
+					}
+					
+					w.d.mainWrap.addClass('ui-overlay-shadow in').removeClass('ui-datebox-hidden');
+					
+					$(document).on('orientationchange.datebox', {widget:w}, function(e) { w._applyCoords(e.data); });
+					if ( o.resizeListener === true ) {
+						$(window).on('resize.datebox', {widget:w}, function (e) { w._applyCoords(e.data); });
+					}
+				}
+			}
+		},
+		close: function() {
+			var w = this,
+				o = this.options;
+			
+			if ( o.useInlineBlind === true ) { w.d.mainWrap.slideUp(); return true;}
+			if ( o.useInline === true || w.d.intHTML === false ) { return true; }
+
+			if ( w.d.dialogPage !== false ) {
+				$(w.d.dialogPage).dialog('close');
+				
+				if ( ! $.mobile.activePage.jqmData('mobile-page').options.domCache ) {
+					$.mobile.activePage.on('pagehide.remove', function () { $(this).remove(); });
+				}
+				
+				w.d.intHTML.detach().empty();
+				w.d.mainWrap.detach().empty();
+				w.d.wrap.removeClass('ui-focus');
+				w.clearFunc = setTimeout(function () { w.d.dialogPage.empty().remove(); w.clearFunc = false; }, 1500);
+			} else {
+				if ( o.enablePopup === true ) {
+					w.d.mainWrap.popup('close');
+					w.d.wrap.removeClass('ui-focus');
+				} else {
+					if ( o.useModal ) {
+						if(o.useAnimation) {
+							w.d.screen.fadeOut('slow');
+						} else {
+							w.d.screen.hide();
+						}
+					} else {
+						w.d.screen.addClass('ui-datebox-hidden');
+					}
+					w.d.screen.detach();
+					w.d.mainWrap.addClass('ui-datebox-hidden').removeAttr('style').removeClass('in ui-overlay-shadow').empty().detach();
+					w.d.intHTML.detach();
+					w.d.wrap.removeClass('ui-focus');
+					
+					$(document).off('orientationchange.datebox');
+					if ( o.resizeListener === true ) {
+						$(window).off('resize.datebox');
+					}
+				}
+			}
+			w.d.wrap.parent().removeClass('ui-focus');
+					
+			$(document).off(w.drag.eMove);
+			$(document).off(w.drag.eEnd);
+			$(document).off(w.drag.eEndA);
+			
+			if ( o.useFocus ) { 
+				w.fastReopen = true;
+				setTimeout(function(t) { return function () { t.fastReopen = false; };}(w), 300);
+			}
+			
+			if ( o.closeCallback !== false ) {
+				if ( ! $.isFunction(o.closeCallback) ) {
+					if ( typeof window[o.closeCallback] !== 'undefined' ) {
+						o.closeCallback = window[o.closeCallback];
+					} else {
+						o.closeCallback = new Function(o.closeCallback);
+					}
+				}
+				o.closeCallback.apply(w, $.merge([w.theDate], o.closeCallbackArgs));
+			}
+		},
+		refresh: function() {
+			if ( typeof this._build[this.options.mode] === 'undefined' ) {
+				this._build['default'].apply(this,[]);
+			} else {
+				this._build[this.options.mode].apply(this,[]);
+			}
+			if ( this.__('useArabicIndic') === true ) { this._doIndic(); }
+			this.d.mainWrap.append(this.d.intHTML);
+			this.d.input.trigger('datebox',{'method':'postrefresh'});
+		},
+		_check: function() {
+			var w = this,
+				td = null, 
+				o = this.options;
+			
+			w.dateOK = true;
+			
+			if ( o.afterToday !== false ) {
+				td = new w._date();
+				if ( w.theDate < td ) { w.theDate = td; }
+			}
+			if ( o.beforeToday !== false ) {
+				td = new w._date();
+				if ( w.theDate > td ) { w.theDate = td; }
+			}
+			if ( o.maxDays !== false ) {
+				td = new w._date();
+				td.adj(2, o.maxDays);
+				if ( w.theDate > td ) { w.theDate = td; }
+			}
+			if ( o.minDays !== false ) {
+				td = new w._date();
+				td.adj(2, -1*o.minDays);
+				if ( w.theDate < td ) { w.theDate = td; }
+			}
+			if ( o.minHour !== false ) {
+				if ( w.theDate.getHours() < o.minHour ) {
+					w.theDate.setHours(o.minHour);
+				}
+			}
+			if ( o.maxHour !== false ) {
+				if ( w.theDate.getHours() > o.maxHour ) {
+					w.theDate.setHours(o.maxHour);
+				}
+			}
+			if ( o.maxYear !== false ) {
+				td = new w._date(o.maxYear, 0, 1);
+				td.adj(2, -1);
+				if ( w.theDate > td ) { w.theDate = td; }
+			}
+			if ( o.minYear !== false ) {
+				td = new w._date(o.minYear, 0, 1);
+				if ( w.theDate < td ) { w.theDate = td; }
+			}
+			
+			if ( $.inArray(o.mode, ['timebox','durationbox','durationflipbox','timeflipbox']) > -1 ) { 
+				if ( o.mode === 'timeflipbox' && o.validHours !== false ) {
+					if ( $.inArray(w.theDate.getHours(), o.validHours) < 0 ) { w.dateOK = false; }
+				}
+			} else {
+				if ( o.blackDatesRec !== false ) {
+					for ( i=0; i<o.blackDatesRec.length; i++ ) {
+						if ( 
+							( o.blackDatesRec[i][0] === -1 || o.blackDatesRec[i][0] === year ) &&
+							( o.blackDatesRec[i][1] === -1 || o.blackDatesRec[i][1] === month ) &&
+							( o.blackDatesRec[i][2] === -1 || o.blackDatesRec[i][2] === date )
+						) { w.dateOK = false; } 
+					}
+				}	
+				if ( o.blackDates !== false ) {
+					if ( $.inArray(w.theDate.iso(), o.blackDates) > -1 ) { w.dateOK = false; }
+				}
+				if ( o.blackDays !== false ) {
+					if ( $.inArray(w.theDate.getDay(), o.blackDays) > -1 ) { w.dateOK = false; }
+				}
+			}
+		},
+		_grabLabel: function() {
+			var w = this,
+				o = this.options;
+				
+			if ( typeof o.overrideDialogLabel === 'undefined' ) {
+				if ( typeof w.d.input.attr('placeholder') !== 'undefined' ) { return w.d.input.attr('placeholder'); }
+				if ( typeof w.d.input.attr('title') !== 'undefined' ) { return w.d.input.attr('title'); }
+				if ( w.d.wrap.parent().find('label[for=\''+w.d.input.attr('id')+'\']').text() !== '' ) {
+					return w.d.wrap.parent().find('label[for=\''+w.d.input.attr('id')+'\']').text();
+				}
+				return false;
+			}
+			return o.overrideDialogLabel;
+		},
+		_makeEl: function(source, parts) {
+			var part = false,
+				retty = false;
+			
+			retty = source.clone();
+			
+			if ( typeof parts.attr !== 'undefined' ) {
+				for ( part in parts.attr ) {
+					if ( parts.attr.hasOwnProperty(part) ) {
+						retty.jqmData(part, parts.attr[part]);
+					}
+				}
+			}
+			return retty;
+		},
+		_getLongOptions: function(element) {
+			var key, retty = {}, prefix, temp;
+			
+			if ( $.mobile.ns === "" ) { 
+				prefix = "datebox";
+			} else { 
+				prefix = $.mobile.ns.substr(0, $.mobile.ns.length - 1) + 'Datebox';
+			}
+			
+			for ( key in element.data() ) {
+				if ( key.substr(0, prefix.length) === prefix && key.length > prefix.length ) {
+					temp = key.substr(prefix.length);
+					temp = temp.charAt(0).toLowerCase() + temp.slice(1);
+					retty[temp] = element.data(key);
+				}
+			}
+			return retty;
+		},
+		disable: function(){
+			// Disable the element
+			this.d.input.attr("disabled",true);
+			this.d.wrap.addClass("ui-disabled").blur();
+			this.disabled = true;
+			this.d.input.trigger('datebox', {'method':'disable'});
+		},
+		enable: function(){
+			// Enable the element
+			this.d.input.attr("disabled", false);
+			this.d.wrap.removeClass("ui-disabled");
+			this.disabled = false;
+			this.d.input.trigger('datebox', {'method':'enable'});
+		},
+		_setOption: function() {
+			$.Widget.prototype._setOption.apply( this, arguments );
+			this.refresh();
+		},
+		getTheDate: function() {
+			return this.theDate;
+		},
+		getLastDur: function() {
+			return this.lastDuration;
+		},
+		setTheDate: function(newDate) {
+			this.theDate = newDate;
+			this.refresh();
+		},
+		callFormat: function(format, date) {
+			return this._formatter(format, date);
+		}
+	});
+	  
+	// Degrade date inputs to text inputs, suppress standard UI functions.
+	$( document ).on( "pagebeforecreate", function( e ) {
+		$( ":jqmData(role='datebox')", e.target ).each(function() {
+			$(this).prop('type', 'text');
+		});
+	});
+	// Automatically bind to data-role='datebox' items.
+	$( document ).on( "pagecreate create", function( e ){
+		$( document ).trigger( "dateboxbeforecreate" );
+		$( ":jqmData(role='datebox')", e.target ).each(function() {
+			var defed = typeof ($(this).data(parseInt($.mobile.version.replace(/\./g,''),10) > 111 ? 'mobile-datebox' : 'datebox'));
+			if ( defed === "undefined" ) {
+				$(this).datebox();
+			}
+		});
+	});
+})( jQuery );
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.custom.tires.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.custom.tires.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.custom.tires.js	(revision 101)
@@ -0,0 +1,313 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notification.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ */
+/* FLIPBOX Mode */
+
+(function($) {
+	$.extend( $.mobile.datebox.prototype.options, {
+		themeTireHigh: 'e',
+		themeTirePick: 'a',
+		themeTire: 'd',
+		useSetButton: true,
+		tireField: {
+			'Tr': [ 15, 16, 17, 18 ],
+			'Tw': [ 7, 8, 9, 10 ],
+			'TW': [ 2, 3, 4, 5 ]
+		},
+		tireFieldOrder: ['Tr', 'Tw', 'TW'],
+		tireOutput: '%Xrr x %Xww, %XWyrs',
+		tireDefault: [17,8,5],
+		tireboxlang: {
+			// This structure interfaces with __() -> if it exists, strings are looked up here after i8n fails,
+			// and before going to 'default' - the name syntax is <mode>lang
+			'tireTitleString': 'Tire Radius, Width, and Warrenty',
+			'tireYears':'years',
+			'tireSet':'Looks Good'
+		}
+	});
+	$.extend( $.mobile.datebox.prototype, {
+		'_tireboxDoSet': function () {
+			// If this function exists, it overrides the 'doset' method of the 'datebox' event.
+			// The name syntax is _<mode>DoSet
+			var w = this, o = this.options;
+			if ( typeof w.tireChoice === 'undefined' ) { w.tireChoice = this._makeDate(this.d.input.val()); }
+			w.d.input.trigger('datebox', {'method':'set', 'value':w._formatter(o.tireOutput,w.tireChoice), 'date':w.tireChoice});
+		},
+		'_tbox_offset': function (fld, amount) {
+			// This is *not* an automatic override, used below specificly.
+			var w = this, x,
+				o = this.options,
+				witch = $.inArray(fld, ['Tr', 'Tw', 'TW']),
+				base = o.tireField[fld].slice();
+				
+			if ( amount > 0 ) {
+				for ( x = 0; x < 5; x++ ) {
+					$.merge(base, o.tireField[fld]);
+				}
+			} else {
+				base.reverse();
+				amount = amount * -1;
+				for ( x = 0; x < 5; x++ ) {
+					$.merge(base, o.tireField[fld].slice().reverse());
+				}
+			}
+			w.tireChoice[witch] = base[$.inArray(w.tireChoice[witch], base) + amount];
+			if ( o.useImmediate ) { w.d.input.trigger('datebox', {'method':'set', 'value':w._formatter(o.tireOutput,w.tireChoice), 'date':w.tireChoice}); }
+			w.refresh();
+		},
+		'_tbox_arr': function (type, choice) {
+			var base = this.options.tireField[type], x,
+				before = [],
+				after = [],
+				found = false;
+				
+			for ( x in base ) {
+				if ( found === false && base[x] !== choice ) { 
+					before.push(base[x]); 
+				} else if ( base[x] === choice ) {
+					found = true;
+				} else {
+					after.push(base[x]);
+				}
+			}
+			
+			while ( before.length < 10 ) {
+				for ( x = base.length; x > 0; x-- ) {
+					before.unshift(base[x-1]);
+				}
+			}
+			while ( before.length > 10 ) {
+				before.shift();
+			}
+			
+			while ( after.length < 10 ) {
+				for ( x = 0; x < base.length; x++ ) {
+					after.push(base[x]);
+				}
+			}
+			after.length = 10;
+			
+			before.push(choice);
+			
+			return $.merge($.merge([], before), after);
+		},
+		'_tbox_pos': function () {
+			var w = this,
+				ech = null,
+				top = null,
+				par = this.d.intHTML.find('.ui-datebox-flipcontent').innerHeight(),
+				tot = null;
+				
+			w.d.intHTML.find('.ui-datebox-flipcenter').each(function() {
+				ech = $(this);
+				top = ech.innerHeight();
+				ech.css('top', ((par/2)-(top/2)+4)*-1);
+			});
+			w.d.intHTML.find('ul').each(function () {
+				ech = $(this);
+				par = ech.parent().innerHeight();
+				top = ech.find('li').first();
+				tot = ech.find('li').size() * top.outerHeight();
+				top.css('marginTop', ((tot/2)-(par/2)+(top.outerHeight()/2))*-1);
+			});
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._parser, {
+		// If this stucture exists, it is called instead of the usual date input parser.
+		// The name of the structure is the same as the mode name - it recieves a string
+		// as the input, which is the current value of the input element, pre-sanitized
+		'tirebox' : function ( str ) { 
+			var o = this.options, i,
+				adv = o.tireOutput,
+				found = o.tireDefault,
+				exp_input = null,
+				exp_format = null;
+			
+			adv = adv.replace(/%(X|0|-)*([a-z])/gi, function(match, pad, oper) {
+				switch (oper) {
+					case 'r':
+					case 'w':
+					case 'W': return '(' + match + '|' +'[0-9]+' + ')';
+					default: return '.+?';
+				}
+			});
+			
+			adv = new RegExp('^' + adv + '$');
+			exp_input = adv.exec(str);
+			exp_format = adv.exec(o.tireOutput);
+			
+			if ( exp_input === null || exp_input.length !== exp_format.length ) {
+				return o.tireDefault;
+			} 
+			
+			for ( i=0; i<exp_input.length; i++ ) { //0rad 1wid 2yrs
+				if ( exp_format[i].match(/^%.*r$/) )         { found[0] = parseInt(exp_input[i],10); }
+				if ( exp_format[i].match(/^%.*w$/) )         { found[1] = parseInt(exp_input[i],10); }
+				if ( exp_format[i].match(/^%.*W$/) )         { found[2] = parseInt(exp_input[i],10); }
+			}
+			return found;
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._customformat, {
+		// If this stucture exists, the formatter will call it when it encounters a special string
+		// %X<whatever> - it recieves the single letter operater, and the current "date" value
+		'tirebox' : function ( oper, val ) { 
+			switch ( oper ) {
+				case 'r': return val[0]; 
+				case 'w': return val[1];
+				case 'W': return val[2];
+			}
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._build, {
+		// This builds the actual interface, and is called on *every* refresh. (after each "movement")
+		'tirebox': function () {
+			var w = this,
+				o = this.options, i, y, hRow, tmp, lineArr,
+				uid = 'ui-datebox-',
+				currentChoice = this._makeDate(this.d.input.val()),
+				flipBase = $("<div class='ui-overlay-shadow'><ul></ul></div>"),
+				ctrl = $("<div>", {"class":uid+'flipcontent'});
+			
+			if ( typeof w.tireChoice === 'undefined' ) { w.tireChoice = currentChoice.slice(); }
+			
+			if ( typeof w.d.intHTML !== 'boolean' ) {
+				w.d.intHTML.empty().remove();
+			}
+			
+			w.d.input.on('datebox', function (e,p) {
+				if ( p.method === 'postrefresh' ) {
+					w._tbox_pos();
+				}
+			});
+			
+			w.d.headerText = ((w._grabLabel() !== false)?w._grabLabel():w.__('tireTitleString'));
+			w.d.intHTML = $('<span>');
+			
+			w.fldOrder = o.tireFieldOrder;
+			
+			$('<div class="'+uid+'header"><table style="width:250px; margin-left:15px; text-align:center"><tr><td>Radius</td><td>Width</td><td>Warrenty</td></tr></table></div>').appendTo(w.d.intHTML).find('td').css('width', '33%');
+			
+			w.d.intHTML.append(ctrl);
+			
+			for ( y=0; y<w.fldOrder.length; y++ ) {
+				switch (w.fldOrder[y]) {
+					case 'Tr':
+						lineArr = w._tbox_arr('Tr', w.tireChoice[0]);
+						hRow = w._makeEl(flipBase, {'attr': {'field':'Tr','amount':1} });
+						for ( i in lineArr ) {
+							tmp = (i!=10)?((lineArr[i]===currentChoice[0])?o.themeTireHigh:o.themeTire):o.themeTirePick;
+							$('<li>', {'class':'ui-body-'+tmp})
+								.html('<span>'+lineArr[i]+'</span>').appendTo(hRow.find('ul'));
+							
+						} 
+						hRow.appendTo(ctrl);
+						break;
+					case 'Tw':
+						lineArr = w._tbox_arr('Tw', w.tireChoice[1]);
+						hRow = w._makeEl(flipBase, {'attr': {'field':'Tw','amount':1} });
+						for ( i in lineArr ) {
+							tmp = (i!=10)?((lineArr[i]===currentChoice[1])?o.themeTireHigh:o.themeTire):o.themeTirePick;
+							$('<li>', {'class':'ui-body-'+tmp})
+								.html('<span>'+lineArr[i]+'</span>').appendTo(hRow.find('ul'));
+							
+						} 
+						hRow.appendTo(ctrl);
+						break;
+					case 'TW':
+						lineArr = w._tbox_arr('TW', w.tireChoice[2]);
+						hRow = w._makeEl(flipBase, {'attr': {'field':'TW','amount':1} });
+						for ( i in lineArr ) {
+							tmp = (i!=10)?((lineArr[i]===currentChoice[2])?o.themeTireHigh:o.themeTire):o.themeTirePick;
+							$('<li>', {'class':'ui-body-'+tmp})
+								.html('<span>'+lineArr[i]+' '+w.__('tireYears')+'</span>').appendTo(hRow.find('ul'));
+							
+						} 
+						hRow.appendTo(ctrl);
+						break;
+					
+				}
+			}
+			
+			$("<div>", {"class":uid+'flipcenter ui-overlay-shadow'}).css('pointerEvents', 'none').appendTo(w.d.intHTML);
+			
+			if ( o.useSetButton ) {
+				y = $('<div>', {'class':uid+'controls'});
+				
+				if ( o.useSetButton ) {
+					$('<a href="#">'+w.__('tireSet')+'</a>')
+						.appendTo(y).buttonMarkup({theme: o.theme, icon: 'check', iconpos: 'left', corners:true, shadow:true})
+						.on(o.clickEvent, function(e) {
+							e.preventDefault();
+							w.d.input.trigger('datebox', {'method':'set', 'value':w._formatter(o.tireOutput,w.tireChoice), 'date':w.tireChoice});
+							w.d.input.trigger('datebox', {'method':'close'});
+						});
+				}
+				y.appendTo(w.d.intHTML);
+			}
+			
+			if ( w.wheelExists ) { // Mousewheel operation, if plugin is loaded
+				w.d.intHTML.on('mousewheel', '.ui-overlay-shadow', function(e,d) {
+					e.preventDefault();
+					w._tbox_offset($(this).jqmData('field'), ((d<0)?1:-1)*$(this).jqmData('amount'));
+				});
+			}
+			
+			w.d.intHTML.on(w.drag.eStart, 'ul', function(e,f) {
+				if ( !w.drag.move ) {
+					if ( typeof f !== "undefined" ) { e = f; }
+					w.drag.move = true;
+					w.drag.target = $(this).find('li').first();
+					w.drag.pos = parseInt(w.drag.target.css('marginTop').replace(/px/i, ''),10);
+					w.drag.start = w.touch ? e.originalEvent.changedTouches[0].pageY : e.pageY;
+					w.drag.end = false;
+					e.stopPropagation();
+					e.preventDefault();
+				}
+			});
+			
+			w.d.intHTML.on(w.drag.eStart, '.'+uid+'flipcenter', function(e) { // Used only on old browsers and IE.
+				if ( !w.drag.move ) {
+					w.drag.target = w.touch ? e.originalEvent.changedTouches[0].pageX - $(e.currentTarget).offset().left : e.pageX - $(e.currentTarget).offset().left;
+					w.drag.tmp = w.d.intHTML.find('.'+uid+'flipcenter').innerWidth() / (( $.inArray('a', w.fldOrder) > -1 && w.__('timeFormat') !== 12 )?w.fldOrder.length-1:w.fldOrder.length);
+					$(w.d.intHTML.find('ul').get(parseInt(w.drag.target / w.drag.tmp,10))).trigger(w.drag.eStart,e);
+				}
+			});
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._drag, {
+		// This contains the code that the drag and drop (or touch move) code uses
+		'tirebox': function() {
+			var w = this,
+				o = this.options,
+				g = this.drag;
+			
+			$(document).on(g.eMove, function(e) {
+				if ( g.move && o.mode === 'tirebox' ) {
+					g.end = w.touch ? e.originalEvent.changedTouches[0].pageY : e.pageY;
+					g.target.css('marginTop', (g.pos + g.end - g.start) + 'px');
+					e.preventDefault();
+					e.stopPropagation();
+					return false;
+				}
+			});
+			
+			$(document).on(g.eEnd, function(e) {
+				if ( g.move && o.mode === 'tirebox' ) {
+					g.move = false;
+					if ( g.end !== false ) {
+						e.preventDefault();
+						e.stopPropagation();
+						g.tmp = g.target.parent().parent();
+						w._tbox_offset(g.tmp.jqmData('field'), (parseInt((g.start - g.end) / g.target.innerHeight(),10) * g.tmp.jqmData('amount')));
+					}
+					g.start = false;
+					g.end = false;
+				}
+			});
+		}
+	});
+})( jQuery );
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.fulloptlist.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.fulloptlist.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.fulloptlist.js	(revision 101)
@@ -0,0 +1,184 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notification.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ */
+/* Options Documentation */
+
+//all = ['Date','Cal','Flip','Slide','Time','TimeFlip','Dur'];  (mode list)
+
+var stuff = { // name: ['default','desc','type','mode list']
+	common: {
+		XXname: 'Common Options',
+		mode: ['', 'Mode of operations', 'String', true],
+		lockInput: [true, 'Lock the Input Element from manual input', 'Boolean', true],
+		enhanceInput: [true, 'Enhance Numeric Inputs on Mobile', 'Boolean', [1,0,0,0,1,0,0]],
+		defaultValue: [false, 'Default value for the date - e.g. [2001,1,1] or 13:42', 'Array/String', true],
+		showInitialValue: [false, 'Auto-fill Input field on initialization', 'Boolean', true],
+		startOffsetYears: [false, 'Offset the start year by # - pile on to defaultVale', 'Integer', [1,1,1,1,0,0,0]],
+		startOffsetMonths: [false, 'Offset the start month by # - pile on to defaultVale', 'Integer', [1,1,1,1,0,0,0]],
+		startOffsetDays: [false, 'Offset the start day by # - pile on to defaultVale', 'Integer', [1,1,1,1,0,0,0]],
+	},
+	display: {
+		XXname: 'Display Options',
+		centerHoriz: [false, 'Center Horizonitally', 'Boolean', true],
+		centerVert: [false, 'Center Verticlly', 'Boolean', true],
+		transition: ['pop', 'Transition for display', 'String', true],
+		useAnimation: [true, 'Use Animations', 'Boolean', true],
+		hideInput: [false, 'Hide the Input Element', 'Boolean', true],
+		hideFixedToolbars: [false, 'Hide Fixed toolbars on open', 'Boolean', true],
+		zindex: [500, 'Z-Index of controls', 'Integer', true],
+		clickEvent: ['vclick', 'Listener event for all non-closing buttons in control', 'String', true],
+		clickEventAlt: ['click', 'Listener event for all closing buttons in control', 'String', true],
+		resizeListener: [true, 'Re-Position the control on window resize', 'Boolean', true],
+		dialogEnable: [false, 'Enable the jQM Dialog mode', 'Boolean', true],
+		dialogForce: [false, 'Force use of the jQM Dialog mode', 'Boolean', true],
+		enablePopup: [false, 'Use jQM builtin popups', 'Boolean', true],
+		popupForceX: [false, 'Force the X/Y position of the opened control', 'Number', true],
+		popupForceY: [false, 'Force the X/Y position of the opened control', 'Number', true],
+		popupPosition: [false, 'When set to "window", center control in window', 'String', true],
+		useModal: [false, 'Use faded modal background for control', 'Boolean', true],
+		useInline: [false, 'Show control inline in the page (always visible)', 'Boolean', true],
+		useInlineBlind: [false, 'Show the control inline in the page when clicked (rolldown)', 'Boolean', true],
+		useButton: [true, 'Show a button in the Input Element to open the control', 'Boolean', true],
+		useFocus: [false, 'Open the control when the Input Element is focused', 'Boolean', true],
+		usePlaceholder: [false, 'Attempt to auto fill the placeholder text (or use the supplied custom text)', 'Boolean', true],
+		useNewStyle: [false, 'Use the new input display style (cleaner, less inconsistency)', 'Boolean', true],
+		useAltIcon: [false, 'When using useNewStyle, use a light icon rather than a dark one', 'Boolean', true],
+		overrideStyleClass: [false, 'When using useNewStyle, add a custom icon class', 'String', true]
+	},
+	control: {
+		XXname: 'Control Options',
+		useHeader: [true, 'Use a toolbar header for the control', 'Boolean', true],
+		useImmediate: [false, 'Update the Input Element on every control change', 'Boolean', true],
+		useClearButton: [false, 'Show a button to clear the Input Element in the control', 'Boolean', true],
+		useSetButton: [true, 'Show button to set the date', 'Boolean', [1,0,1,1,1,1,1]],
+		useTodayButton: [false, 'Show button to jump to today', 'Boolean', [0,1,0,0,0,0,0]],
+		useCollapsedBut: [false, 'When 2 buttons would show, collapse them into a single line', 'Boolean', true],
+		rolloverMode: ["{ 'm': true, 'd': true, 'h': true, 'i': true, 's': true }", 'Allow rollover of each date element', 'Object', [1,0,1,1,1,1,0]],
+		slen: ["{'y': 5, 'm':6, 'd':15, 'h':12, 'i':30}", 'Length of sliders (1/2 of slider)', 'Object', [0,0,0,1,0,0,0]],
+		flen: ["{'y': 15, 'm':12, 'd':15, 'h':12, 'i':15, 'a':3}", 'Height of rollers (1/2 of roller)', 'Object', [0,0,1,0,0,1,0]],
+		calShowDays: [true, 'Show Day Labels in calendar', 'Boolean', [0,1,0,0,0,0,0]],
+		calShowWeek: [false, 'Show ISO Week number in calendar', 'Boolean', [0,1,0,0,0,0,0]],
+		calOnlyMonth: [false, 'Do not show next/previous months in calendar', 'Boolean', [0,1,0,0,0,0,0]],
+		calWeekMode: [false, 'Select by single week day in calendar', 'Boolean', [0,1,0,0,0,0,0]],
+		calWeekModeDay: [1, 'Weekday to select when in calWeekMode', 'Integer', [0,1,0,0,0,0,0]]
+	},
+	callback: {
+		XXname: 'Callback options',
+		openCallback: [false, 'Callback function to run on control open', 'Function', true],
+		openCallbackArgs: ["[]", 'Extra arguments to pass to open callback. Note that "this" refers to the widget', 'Array', true],
+		closeCallback: [false, 'Callback function to run on control close', 'Function', true],
+		closeCallbackArgs: ["[]", 'Extra arguments to pass to close callback.  Note that "this" refers to the widget and arguments[0] is the date that was just set', 'Array', true]
+	},
+	limiting: {
+		XXname: 'Date Limiting Options',
+		afterToday: [false, 'Limit all dates selected to *after* today\'s date', 'Boolean', [1,1,1,1,0,0,0]],
+		beforeToday: [false, 'Limit all dates selected to *before* today\'s date', 'Boolean', [1,1,1,1,0,0,0]],
+		notToday: [false, 'Limit all dates selected to *not* today\'s date', 'Boolean', [1,1,1,1,0,0,0]],
+		maxDays: [false, 'Limit all dates selected to before today + ## days', 'Integer', [1,1,1,1,0,0,0]],
+		minDays: [false, 'Limit all dates selected to after today - ## days', 'Integer', [1,1,1,1,0,0,0]],
+		maxYear: [false, 'Limit all dates selected to before this year', 'Integer', [1,0,1,1,0,0,0]],
+		minYear: [false, 'Limit all dates selected to after this year', 'Integer', [1,0,1,1,0,0,0]],
+		blackDatesRec: [false, 'Do not allow these recurring dates to be selected (array of arrays)', 'Array', [1,1,1,1,0,0,0]],
+		blackDates: [false, 'Do not allow these ISO dates to be selected (array of dates)', 'Array', [1,1,1,1,0,0,0]],
+		blackDays: [false, 'Do not allow these days to be selected (array of day indexes)', 'Array', [1,1,1,1,0,0,0]],
+		enableDates: [false, 'Allow *only* these ISO dates to be sleected (array of dates)', 'Array', [0,1,0,0,0,0,0]],
+		minHour: [false, 'Limit times to hours *after* this hour', 'Integer', [0,0,0,0,1,1,0]],
+		maxHour: [false, 'Limit times to hours *before* this hour', 'Integer', [0,0,0,0,1,1,0]],
+		validHours: [false, 'Limit times to *only* these hours (array of hours)', 'Array', [0,0,0,0,1,1,0]],
+		minuteStep: [1, 'Stepper for minutes', 'Integer', [0,0,0,1,1,1,0]],
+		minuteStepRound: [0, 'Direction to round :: -1 = Down, 1 = Up, 0 = "Standard Rounding"', 'Integer', [0,0,0,1,1,1,0]],
+		highDays: [false, 'Highlight these days (array of day indexes)', 'Array', [0,1,0,0,0,0,0]],
+		highDates: [false, 'Highlight these ISO dates (array of dates)', 'Array', [0,1,0,0,0,0,0]],
+		highDatesRec: [false, 'Highlight these recurring dates (array of arrays)', 'Array', [0,1,0,0,0,0,0]],
+		highDatesAlt: [false, 'Highlight these ISO dates (array of dates) (alternate)', 'Array', [0,1,0,0,0,0,0]],
+		calShowDateList: [false, 'Show Special Date List Picker', 'Boolean', [0,1,0,0,0,0,0]],
+		calDateList: [false, 'Array of 2 Element Arrays (each w/ an ISO date and a desc)', 'Array', [0,1,0,0,0,0,0]],
+		durationSteppers: ["{'d': 1, 'h': 1, 'i': 1, 's': 1}", 'Steppers for the duration elements', 'Object', [0,0,0,0,0,0,1]]
+	},
+	themes: {
+		XXname: 'Theme Options - Shared',
+		theme: [false, 'Base theme for control', 'Boolean', true],
+		themeHeader: ['a', 'Theme for header', 'String', true],
+	},
+	themesf: {
+		XXname: 'Theme Options - FlipBox / TimeFlipBox',	
+		themeDateHigh: ['e', 'Theme swatch for today\'s date', 'String', [0,0,1,0,0,1,0]],
+		themeDatePick: ['a', 'Theme swatch for choosen (centered) date', 'String', [0,0,1,0,0,1,0]],
+		themeDate: ['d', 'Theme swatch for other dates', 'String', [0,0,1,0,0,1,0]],
+	},
+	themess: {
+		XXname: 'Theme Options - SlideBox',
+		themeDateHigh: ['e', 'Theme swatch for today\'s date', 'String', [0,0,0,1,0,0,0]],
+		themeDatePick: ['a', 'Theme swatch for choosen (centered) date', 'String', [0,0,0,1,0,0,0]],
+		themeDate: ['d', 'Theme swatch for other dates', 'String', [0,0,0,1,0,0,0]],
+	},
+	themesd: {
+		XXname: 'Theme Options - DateBox/TimeBox/DurationBox',
+		themeButton: ['a', 'Theme swatch for +/- Buttons', 'String', [1,0,0,0,1,0,1]],
+		themeInput: ['e', 'Theme swatch for input elements', 'String', [1,0,0,0,1,0,1]],
+	},
+	themesc: {
+		XXname: 'Theme Options - CalBox',
+		themeDateToday: ['a', 'Theme swatch for today\'s date', 'String', [0,1,0,0,0,0,0]],
+		themeDayHigh: ['e', 'Theme swatch for highDays', 'String', [0,1,0,0,0,0,0]],
+		themeDatePick: ['a', 'Theme swatch for choosen date', 'String', [0,1,0,0,0,0,0]],
+		themeDateHigh: ['e', 'Theme swatch for highDates', 'String', [0,1,0,0,0,0,0]],
+		themeDateHighAlt: ['e', 'Theme swatch for highDatesAlt', 'String', [0,1,0,0,0,0,0]],
+		themeDateHighRec: ['e', 'Theme swatch for highDatesRec', 'String', [0,1,0,0,0,0,0]],
+		themeDate: ['d', 'Theme swatch for other dates (inherited)', 'String', [0,1,0,0,0,0,0]],
+		calUsePickers: [false, 'Use Month/Year Pickers', 'Boolean', [0,1,0,0,0,0,0]],
+		calNoHeader: [false, 'Suppress Standard Header', 'Boolean', [0,1,0,0,0,0,0]],
+		calHighToday: [true, 'Highlight today\'s date', 'Boolean', [0,1,0,0,0,0,0]],
+		calHighPick: [true, 'Highlight choosen date', 'Boolean', [0,1,0,0,0,0,0]],
+		calWeekHigh: [false, 'Highlight full week on mouseover', 'Boolean', [0,1,0,0,0,0,0]],
+		calControlGroup: [false, 'Use control group buttons in calendar', 'Boolean', [0,1,0,0,0,0,0]]
+	},
+	custom: {
+		XXname: 'Custom Modes',
+		customData: ['N/A', 'Data structure for custom modes', 'Array', false],
+		themeOptPick: ['a', 'Theme for highlighted option (customflip)', 'String', false],
+		themeOpt: ['d', 'Theme for other options (customflip)', 'String', false],
+		overrideCustomSet: ['Looks Good', 'Set button for custom modes (i18n aware)', 'String', false],
+		customDefault: ['[0,0,0]', 'Array of default indexs for custom modes', 'Array', false]
+	},
+	i18n: { //Mode List: [dbox,calbox,flipbox,slidebox,timebox,timeflipbox,durationbox] or true
+		XXname: 'Internationalization / Localization',
+		'NOTE:: To override, use overrideNameOfOption - e.g. overrideTimeFormat': true,
+		setDateButtonLabel: ['Set Date', 'Set Date Button Label', 'String', [1,1,1,1,0,0,0]],
+		setTimeButtonLabel: ['Set Time', 'Set Time Button Label', 'String', [0,0,0,0,1,1,0]],
+		setDurationButtonLabel: ['Set Duration', 'Set Duration Button Label', 'String', [0,0,0,0,0,0,1]],
+		calTodayButtonLabel: ['Jump to Today', 'Jump to today button Label', 'String', [0,1,0,0,0,0,0]],
+		titleDateDialogLabel: ['Set Date', 'Date modes fallback header label', 'String', [1,1,1,1,0,0,0]],
+		titleTimeDialogLabel: ['Set Time', 'Time modes fallback header label', 'String', [0,0,0,0,1,1,1]],
+		daysOfWeek: ["['Sunday' ... 'Saturday']", 'Days of the week', 'Array', true],
+		daysOfWeekShort: ["['Su' ... 'Sa']", 'Abbreviated days of the week', 'Array', true],
+		monthsOfYear: ["['January' ... 'December']", 'Months of the year', 'Array', true],
+		monthsOfYearShort: ["['Jan' ... 'Dec']", 'Abbreviated months of the year', 'Array', true],
+		durationLabel: ["['Days', 'Hours', 'Minutes', 'Seconds']", 'Labels for duration elements', 'Array', [0,0,0,0,0,0,1]],
+		durationDays: ["['Day', 'Days']", 'Name of day/days for duration', 'Array', [0,0,0,0,0,0,1]],
+		timeFormat: [24, 'Format for clock', 'Integer', [0,0,0,0,1,1,0]],
+		headerFormat: ['%A, %B %-d, %Y', 'Format for header if used', 'String', true],
+		tooltip: ['Open Date Picker', 'Mouseover tooltip for open button', 'String', true],
+		nextMonth: ['Next Month', 'Mouseover tooltip for next month button', 'String', [0,1,0,0,0,0,0]],
+		prevMonth: ['Previous Month', 'Mouseover tooltip for prev month button', 'String', [0,1,0,0,0,0,0]],
+		dateFieldOrder: ["['m', 'd', 'y']", 'Field order for date entry', 'Array', [1,0,1,0,0,0,0]],
+		timeFieldOrder: ["['h', 'i', 'a']", 'Field order for time entry', 'Array', [0,0,0,0,1,1,0]],
+		slideFieldOrder: ["['y', 'm', 'd']", 'Field order for slide mode', 'Array', [0,0,0,1,0,0,0]],
+		dateFormat: ['%Y-%m-%d', 'Format for returned date', 'Array', [1,1,1,1,0,0,0]],
+		useArabicIndic: [false, 'Use Arabic/Indic numerals', 'Boolean', true],
+		isRTL: [false, 'Language runs Right-to-Left', 'Boolean', true],
+		calStartDay: [0, 'Day of week to start calendar on', 'Integer', [0,1,0,0,0,0,0]],
+		clearButton: ['Clear', 'Clear Input Element button label', 'String', true],
+		durationOrder: ["['d', 'h', 'i', 's']", 'Field order for duration entry', 'Array', [0,0,0,0,0,0,1]],
+		meridiem: ["['AM', 'PM']", 'Name of meridiems, if used', 'Array', true],
+		timeOutput: ['%k:%M', 'Format for returned time', 'String', [0,0,0,0,1,1,0]],
+		durationFormat: ['%Dd %DA, %Dl:%DM:%DS', 'Format for returned duration', 'String', [0,0,0,0,0,0,1]],
+		calDateListLabel: ['Other Dates', 'Text for other dates dropdown', 'String', [0,1,0,0,0,0,0]],
+		calHeaderFormat: ['%B %Y', 'Header format for calendar mode', 'String', [0,1,0,0,0,0,0]]
+	}
+};
+
+
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.calbox.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.calbox.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.calbox.js	(revision 101)
@@ -0,0 +1,375 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notification.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ */
+/* CALBOX Mode */
+// Version Notes: <140 :: New button theme method, still use _hoover
+
+(function($) {
+	$.extend( $.mobile.datebox.prototype.options, {
+		themeDateToday: 'b',
+		themeDayHigh: 'b',
+		themeDatePick: 'b',
+		themeDateHigh: 'b',
+		themeDateHighAlt: 'b',
+		themeDateHighRec: 'b',
+		themeDate: 'a',
+		
+		calHighToday: true,
+		calHighPick: true,
+		
+		calShowDays: true,
+		calOnlyMonth: false,
+		calWeekMode: false,
+		calWeekModeDay: 1,
+		calWeekHigh: false,
+		calControlGroup: false,
+		calShowWeek: false,
+		calUsePickers: false,
+		calNoHeader: false,
+		
+		useTodayButton: false,
+		useCollapsedBut: false,
+		
+		highDays: false,
+		highDates: false,
+		highDatesRec: false,
+		highDatesAlt: false,
+		enableDates: false,
+		calDateList: false,
+		calShowDateList: false,
+	});
+	$.extend( $.mobile.datebox.prototype, {
+		_cal_gen: function (start,prev,last,other,month) {
+			var rc = 0, cc = 0, day = 1, 
+				next = 1, cal = [], row = [], stop = false;
+				
+			for ( rc = 0; rc <= 5; rc++ ) {
+				if ( stop === false ) {
+					row = [];
+					for ( cc = 0; cc <= 6; cc++ ) {
+						if ( rc === 0 && cc < start ) {
+							if ( other === true ) {
+								row.push([prev + (cc - start) + 1,month-1]);
+							} else {
+								row.push(false);
+							}
+						} else if ( rc > 3 && day > last ) {
+							if ( other === true ) {
+								row.push([next,month+1]); next++;
+							} else {
+								row.push(false);
+							}
+							stop = true;
+						} else {
+							row.push([day,month]); day++;
+							if ( day > last ) { stop = true; }
+						}
+					}
+					cal.push(row);
+				}
+			}
+			return cal;
+		},
+		_cal_check : function (cal, year, month, date) {
+			var w = this, i,
+				o = this.options,
+				ret = {},
+				day = new this._date(year,month,date,0,0,0,0).getDay();
+				
+			ret.ok = true;
+			ret.iso = year + '-' + w._zPad(month+1) + '-' + w._zPad(date);
+			ret.comp = parseInt(ret.iso.replace(/-/g, ''),10);
+			ret.theme = o.themeDate;
+			ret.recok = true;
+			ret.rectheme = false;
+			
+			if ( o.blackDatesRec !== false ) {
+				for ( i=0; i<o.blackDatesRec.length; i++ ) {
+					if ( 
+						( o.blackDatesRec[i][0] === -1 || o.blackDatesRec[i][0] === year ) &&
+						( o.blackDatesRec[i][1] === -1 || o.blackDatesRec[i][1] === month ) &&
+						( o.blackDatesRec[i][2] === -1 || o.blackDatesRec[i][2] === date )
+					) { ret.recok = false; } 
+				}
+			}
+			
+			if ( $.isArray(o.enableDates) && $.inArray(ret.iso, o.enableDates) < 0 ) {
+				ret.ok = false;
+			} else if ( cal.checkDates ) {
+				if (
+					( ret.recok !== true ) ||
+					( o.afterToday === true && cal.thisDate.comp() > ret.comp ) ||
+					( o.beforeToday === true && cal.thisDate.comp() < ret.comp ) ||
+					( o.notToday === true && cal.thisDate.comp() === ret.comp ) ||
+					( o.maxDays !== false && cal.maxDate.comp() < ret.comp ) ||
+					( o.minDays !== false && cal.minDate.comp() > ret.comp ) ||
+					( $.isArray(o.blackDays) && $.inArray(day, o.blackDays) > -1 ) ||
+					( $.isArray(o.blackDates) && $.inArray(ret.iso, o.blackDates) > -1 ) 
+				) {
+					ret.ok = false;
+				}
+			}
+			if ( ret.ok ) {
+				if ( o.highDatesRec !== false ) {
+					for ( i=0; i<o.highDatesRec.length; i++ ) {
+						if ( 
+							( o.highDatesRec[i][0] === -1 || o.highDatesRec[i][0] === year ) &&
+							( o.highDatesRec[i][1] === -1 || o.highDatesRec[i][1] === month ) &&
+							( o.highDatesRec[i][2] === -1 || o.highDatesRec[i][2] === date )
+						) { ret.rectheme = true; } 
+					}
+				}
+				
+				if ( o.calHighPick && date === cal.presetDay && ( w.d.input.val() !== "" | o.defaultValue !== false )) {
+					ret.theme = o.themeDatePick;
+				} else if ( o.calHighToday && ret.comp === cal.thisDate.comp() ) {
+					ret.theme = o.themeDateToday;
+				} else if ( $.isArray(o.highDatesAlt) && ($.inArray(ret.iso, o.highDatesAlt) > -1) ) {
+					ret.theme = o.themeDateHighAlt;
+				} else if ( $.isArray(o.highDates) && ($.inArray(ret.iso, o.highDates) > -1) ) {
+					ret.theme = o.themeDateHigh;
+				} else if ( $.isArray(o.highDays) && ($.inArray(day, o.highDays) > -1) ) {
+					ret.theme = o.themeDayHigh;
+				} else if ( $.isArray(o.highDatesRec) && ret.rectheme === true ) {
+					ret.theme = o.themeDateHighRec;
+				}
+			}
+			return ret;
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._build, {
+		'calbox': function () {
+			var w = this,
+				o = this.options, i,
+				cal = false,
+				uid = 'ui-datebox-',
+				temp = false, row = false, col = false, hRow = false, checked = false;
+				
+			if ( typeof w.d.intHTML !== 'boolean' ) {
+				w.d.intHTML.remove();
+			}
+			
+			w.d.headerText = ((w._grabLabel() !== false)?w._grabLabel():w.__('titleDateDialogLabel'));
+			w.d.intHTML = $('<span>');
+
+			$('<div class="'+uid+'gridheader"><div class="'+uid+'gridlabel"><h4>' +
+				w._formatter(w.__('calHeaderFormat'), w.theDate) +
+				'</h4></div></div>').appendTo(w.d.intHTML);
+				
+			// Previous and next month buttons, define booleans to decide if they should do anything
+			$("<div class='"+uid+"gridplus"+(w.__('isRTL')?'-rtl':'')+"'><a href='#'>"+w.__('nextMonth')+"</a></div>")
+				.prependTo(w.d.intHTML.find('.'+uid+'gridheader'))
+				.buttonMarkup({theme: o.themeDate, icon: 'arrow-r', inline: true, iconpos: 'notext', corners:true, shadow:true})
+				.on(o.clickEventAlt, function(e) {
+					e.preventDefault();
+					if ( w.calNext ) {
+						if ( w.theDate.getDate() > 28 ) { w.theDate.setDate(1); }
+						w._offset('m',1);
+					}
+				});
+			$("<div class='"+uid+"gridminus"+(w.__('isRTL')?'-rtl':'')+"'><a href='#'>"+w.__('prevMonth')+"</a></div>")
+				.prependTo(w.d.intHTML.find('.'+uid+'gridheader'))
+				.buttonMarkup({theme: o.themeDate, icon: 'arrow-l', inline: true, iconpos: 'notext', corners:true, shadow:true})
+				.on(o.clickEventAlt, function(e) {
+					e.preventDefault();
+					if ( w.calPrev ) {
+						if ( w.theDate.getDate() > 28 ) { w.theDate.setDate(1); }
+						w._offset('m',-1);
+					}
+				});
+				
+			if ( o.calNoHeader === true ) { w.d.intHTML.find('.'+uid+'gridheader').remove(); }
+			
+			cal = {'today': -1, 'highlightDay': -1, 'presetDay': -1, 'startDay': w.__('calStartDay'),
+				'thisDate': new w._date(), 'maxDate': w.initDate.copy(), 'minDate': w.initDate.copy(),
+				'currentMonth': false, 'weekMode': 0, 'weekDays': null };
+			cal.start = (w.theDate.copy([0],[0,0,1]).getDay() - w.__('calStartDay') + 7) % 7;
+			cal.thisMonth = w.theDate.getMonth();
+			cal.thisYear = w.theDate.getFullYear();
+			cal.wk = w.theDate.copy([0],[0,0,1]).adj(2,(-1*cal.start)+(w.__('calStartDay')===0?1:0)).getDWeek(4);
+			cal.end = 32 - w.theDate.copy([0],[0,0,32,13]).getDate();
+			cal.lastend = 32 - w.theDate.copy([0,-1],[0,0,32,13]).getDate();
+			cal.presetDate = (w.d.input.val() === "") ? w._startOffset(w._makeDate(w.d.input.val())) : w._makeDate(w.d.input.val());
+			cal.thisDateArr = cal.thisDate.getArray();
+			cal.theDateArr = w.theDate.getArray();
+			cal.checkDates = ( $.inArray(false, [o.afterToday, o.beforeToday, o.notToday, o.maxDays, o.minDays, o.blackDates, o.blackDays]) > -1 );
+
+			w.calNext = true;
+			w.calPrev = true;
+			
+			if ( cal.thisDateArr[0] === cal.theDateArr[0] && cal.thisDateArr[1] === cal.theDateArr[1] ) { cal.currentMonth = true; } 
+			if ( cal.presetDate.comp() === w.theDate.comp() ) { cal.presetDay = cal.presetDate.getDate(); }
+			
+			if ( o.afterToday === true && 
+				( cal.currentMonth === true || ( cal.thisDateArr[1] >= cal.theDateArr[1] && cal.theDateArr[0] === cal.thisDateArr[0] ) ) ) { 
+				w.calPrev = false; }
+			if ( o.beforeToday === true &&
+				( cal.currentMonth === true || ( cal.thisDateArr[1] <= cal.theDateArr[1] && cal.theDateArr[0] === cal.thisDateArr[0] ) ) ) {
+				w.calNext = false; }
+			
+			if ( o.minDays !== false ) {
+				cal.minDate.adj(2, -1*o.minDays);
+				if ( cal.theDateArr[0] === cal.minDate.getFullYear() && cal.theDateArr[1] <= cal.minDate.getMonth() ) { w.calPrev = false;}
+			}
+			if ( o.maxDays !== false ) {
+				cal.maxDate.adj(2, o.maxDays);
+				if ( cal.theDateArr[0] === cal.maxDate.getFullYear() && cal.theDateArr[1] >= cal.maxDate.getMonth() ) { w.calNext = false;}
+			}
+			
+			if ( o.calUsePickers === true ) {
+				cal.picker = $('<div>', {'class': 'ui-grid-a ui-datebox-grid','style':'padding-top: 5px; padding-bottom: 5px;'});
+				
+				cal.picker1 = $('<div class="ui-block-a"><select name="pickmon"></select></div>').appendTo(cal.picker).find('select');
+				cal.picker2 = $('<div class="ui-block-b"><select name="pickyar"></select></div>').appendTo(cal.picker).find('select');
+				
+				for ( i=0; i<=11; i++ ) {
+					cal.picker1.append($('<option value="'+i+'"'+((cal.thisMonth===i)?' selected="selected"':'')+'>'+w.__('monthsOfYear')[i]+'</option>'));
+				}
+				for ( i=(cal.thisYear-6); i<=cal.thisYear+6; i++ ) {
+					cal.picker2.append($('<option value="'+i+'"'+((cal.thisYear===i)?' selected="selected"':'')+'>'+i+'</option>'));
+				}
+				
+				cal.picker1.on('change', function () { w.theDate.setMonth($(this).val()); w.refresh(); });
+				cal.picker2.on('change', function () { w.theDate.setFullYear($(this).val()); w.refresh(); });
+				
+				cal.picker.find('select').selectmenu({mini:true, nativeMenu: true});
+				cal.picker.appendTo(w.d.intHTML);
+			}
+			
+			temp = $('<div class="'+uid+'grid">').appendTo(w.d.intHTML);
+			
+			if ( o.calShowDays ) {
+				w._cal_days = w.__('daysOfWeekShort').concat(w.__('daysOfWeekShort'));
+				cal.weekDays = $("<div>", {'class':uid+'gridrow'}).appendTo(temp);
+				if ( w.__('isRTL') === true ) { cal.weekDays.css('direction', 'rtl'); }
+				if ( o.calShowWeek ) { 
+					$("<div>").addClass(uid+'griddate '+uid+'griddate-empty '+uid+'griddate-label').appendTo(cal.weekDays);
+				}
+				for ( i=0; i<=6;i++ ) {
+					$("<div>"+w._cal_days[(i+cal.startDay)%7]+"</div>").addClass(uid+'griddate '+uid+'griddate-empty '+uid+'griddate-label').appendTo(cal.weekDays);
+				}
+			}
+			
+			cal.gen = w._cal_gen(cal.start, cal.lastend, cal.end, !o.calOnlyMonth, w.theDate.getMonth());
+			for ( var row=0, rows=cal.gen.length; row < rows; row++ ) {
+				hRow = $('<div>', {'class': uid+'gridrow'});
+				if ( w.__('isRTL') ) { hRow.css('direction', 'rtl'); }
+				if ( o.calShowWeek ) {
+						$('<div>', {'class':uid+'griddate '+uid+'griddate-empty'}).text('W'+cal.wk).appendTo(hRow);
+						cal.wk++;
+						if ( cal.wk > 52 && typeof cal.gen[parseInt(row,10)+1] !== 'undefined' ) { cal.wk = new Date(cal.theDateArr[0],cal.theDateArr[1],((w.__('calStartDay')===0)?cal.gen[parseInt(row,10)+1][1][0]:cal.gen[parseInt(row,10)+1][0][0])).getDWeek(4); }
+					} 
+				for ( var col=0, cols=cal.gen[row].length; col<cols; col++ ) {
+					if ( o.calWeekMode ) { cal.weekMode = cal.gen[row][o.calWeekModeDay][0]; }
+					if ( typeof cal.gen[row][col] === 'boolean' ) {
+						$('<div>', {'class':uid+'griddate '+uid+'griddate-empty'}).appendTo(hRow);
+					} else {
+						checked = w._cal_check(cal, cal.theDateArr[0], cal.gen[row][col][1], cal.gen[row][col][0]);
+						if (cal.gen[row][col][0]) {
+							$("<div>"+String(cal.gen[row][col][0])+"</div>")
+								.addClass( cal.thisMonth === cal.gen[row][col][1] ?
+									(uid+'griddate ui-corner-all ui-btn ui-btn-'+(o.mobVer<140?'up-':'')+checked.theme + (checked.ok?'':' '+uid+'griddate-disable')):
+									(uid+'griddate '+uid+'griddate-empty')
+								)
+								.jqmData('date', ((o.calWeekMode)?cal.weekMode:cal.gen[row][col][0]))
+								.jqmData('theme', cal.thisMonth === cal.gen[row][col][1] ? checked.theme : '-')
+								.jqmData('enabled', checked.ok)
+								.jqmData('month', cal.gen[row][((o.calWeekMode)?o.calWeekModeDay:col)][1])
+								.appendTo(hRow);
+						}
+					}
+				}
+				if ( o.calControlGroup === true ) {
+					hRow.find('.ui-corner-all').removeClass('ui-corner-all').eq(0).addClass('ui-corner-left').end().last().addClass('ui-corner-right').addClass('ui-controlgroup-last');
+				}
+				hRow.appendTo(temp);
+			}
+			if ( o.calShowWeek ) { temp.find('.'+uid+'griddate').addClass(uid+'griddate-week'); }
+			
+			if ( o.calShowDateList === true && o.calDateList !== false ) {
+				cal.datelist = $('<div>');
+				cal.datelistpick = $('<select name="pickdate"></select>').appendTo(cal.datelist);
+				
+				cal.datelistpick.append('<option value="false" selected="selected">'+w.__('calDateListLabel')+'</option>');
+				for ( i=0; i<o.calDateList.length; i++ ) {
+					cal.datelistpick.append($('<option value="'+o.calDateList[i][0]+'">'+o.calDateList[i][1]+'</option>'));
+				}
+				
+				cal.datelistpick.on('change', function() {
+					cal.datelistdate = $(this).val().split('-');
+					w.theDate = new w._date(cal.datelistdate[0], cal.datelistdate[1]-1, cal.datelistdate[2], 0,0,0,0);
+					w.d.input.trigger('datebox',{'method':'doset'});
+				});
+				
+				cal.datelist.find('select').selectmenu({mini:true, nativeMenu:true});
+				cal.datelist.appendTo(w.d.intHTML);
+			}
+			
+			if ( o.useTodayButton || o.useClearButton ) {
+				hRow = $('<div>', {'class':uid+'controls'});
+				
+				if ( o.useTodayButton ) {
+					$('<a href="#">'+w.__('calTodayButtonLabel')+'</a>')
+						.appendTo(hRow).buttonMarkup({theme: o.theme, icon: 'check', iconpos: 'left', corners:true, shadow:true})
+						.on(o.clickEvent, function(e) {
+							e.preventDefault();
+							w.theDate = new w._date();
+							w.theDate = new w._date(w.theDate.getFullYear(), w.theDate.getMonth(), w.theDate.getDate(),0,0,0,0);
+							w.d.input.trigger('datebox',{'method':'doset'});
+						});
+				}
+				if ( o.useClearButton ) {
+					$('<a href="#">'+w.__('clearButton')+'</a>')
+						.appendTo(hRow).buttonMarkup({theme: o.theme, icon: 'delete', iconpos: 'left', corners:true, shadow:true})
+						.on(o.clickEventAlt, function(e) {
+							e.preventDefault();
+							w.d.input.val('');
+							w.d.input.trigger('datebox',{'method':'clear'});
+							w.d.input.trigger('datebox',{'method':'close'});
+						});
+				}
+				if ( o.useCollapsedBut ) {
+					hRow.addClass('ui-datebox-collapse');
+				}
+				hRow.appendTo(temp);
+			}
+			
+			w.d.intHTML.on(o.clickEventAlt+' vmouseover vmouseout', 'div.'+uid+'griddate', function(e) {
+				if ( e.type === o.clickEventAlt ) {
+					e.preventDefault();
+					if ( $(this).jqmData('enabled') ) {
+						w.theDate.setD(2,1).setD(1,$(this).jqmData('month')).setD(2,$(this).jqmData('date'));
+						w.d.input.trigger('datebox', {'method':'set', 'value':w._formatter(w.__fmt(),w.theDate), 'date':w.theDate});
+						w.d.input.trigger('datebox', {'method':'close'});
+					}
+				} else {
+					if ( $(this).jqmData('enabled') && typeof $(this).jqmData('theme') !== 'undefined' && o.mobVer < 140 ) {
+						if ( o.calWeekMode !== false && o.calWeekHigh === true ) {
+							$(this).parent().find('div').each(function() { w._hoover(this); });
+						} else { w._hoover(this); }
+					}
+				}
+			});
+			w.d.intHTML
+				.on('swipeleft', function() { if ( w.calNext ) { w._offset('m', 1); } })
+				.on('swiperight', function() { if ( w.calPrev ) { w._offset('m', -1); } });
+			
+			if ( w.wheelExists) { // Mousewheel operations, if plugin is loaded
+				w.d.intHTML.on('mousewheel', function(e,d) {
+					e.preventDefault();
+					if ( d > 0 && w.calNext ) { 
+						w.theDate.setD(2,1);
+						w._offset('m', 1);
+					}
+					if ( d < 0 && w.calPrev ) {
+						w.theDate.setD(2,1);
+						w._offset('m', -1);
+					}
+				});
+			}
+		}
+	});
+})( jQuery );
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.custombox.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.custombox.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.custombox.js	(revision 101)
@@ -0,0 +1,157 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notification.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ */
+
+(function($) {
+	$.extend( $.mobile.datebox.prototype.options, {
+		themeButton: 'a',
+		themeInput: 'a',
+		useSetButton: true,
+		customData: [
+			{'input': true, 'name':'Letter', 'data':['a','b','c','d','e']},
+			{'input': true, 'name':'Text', 'data':['some','bull','shtuff','here']},
+			{'input': false, 'name':'Image', 'data':['<img src="img/slot1.png" />','<img src="img/slot2.png" />','<img src="img/slot3.png" />','<img src="img/slot4.png" />']}
+		],
+		customDefault: [0,0,0],
+		customFormat: false,
+		customboxlang: {
+			// This structure interfaces with __() -> if it exists, strings are looked up here after i8n fails,
+			// and before going to 'default' - the name syntax is <mode>lang
+			'customSet':'Looks Good'
+		}
+		
+	});
+	$.extend( $.mobile.datebox.prototype, {
+		_cbox_offset: function (fld,amount) {
+			// This is *not* an automatic override, used below specificly.
+			var w = this, x,
+				o = this.options;
+				
+			tmp = (w.customCurrent[fld] + amount) % o.customData[fld]['data'].length;
+			if ( tmp < 0 ) { tmp = o.customData[fld]['data'].length + tmp; }
+			
+			w.customCurrent[fld] = tmp;
+			if ( o.useImmediate ) { w.d.input.trigger('datebox', {'method':'set', 'value':w._formatter(o.customFormat,w.customCurrent), 'date':w.customCurrent}); }
+			w.refresh();
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._parser, {
+		// If this stucture exists, it is called instead of the usual date input parser.
+		// The name of the structure is the same as the mode name - it recieves a string
+		// as the input, which is the current value of the input element, pre-sanitized
+		'custombox' : function ( str ) { 
+			return ( str.length < 1 || ! str.match(/,/) ) ? this.options.customDefault : str.split(",");
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._customformat, {
+		// If this stucture exists, the formatter will call it when it encounters a special string
+		// %X<whatever> - it recieves the single letter operater, and the current "date" value
+		'custombox' : function ( oper, val ) { 
+			return val[oper-1];
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._build, {
+		'custombox': function () {
+			var w = this,
+				o = this.options, i, y, tmp, cnt = -2,
+				uid = 'ui-datebox-',
+				divBase = $("<div>"),
+				divPlus = $('<fieldset>'),
+				divIn = divBase.clone(),
+				divMinus = divPlus.clone(),
+				customCurrent = this._makeDate(this.d.input.val()),
+				inBase = $("<input type='text' />").addClass('ui-input-text ui-corner-all ui-shadow-inset ui-body-'+o.themeInput),
+				inDiv = $("<div>").addClass('ui-input-text ui-corner-all ui-shadow-inset ui-body-'+o.themeInput).css({'padding':'.4em','margin':'.5em 0','text-align':'center'}),
+				butBase = $("<div>"),
+				butPTheme = {theme: o.themeButton, icon: 'plus', iconpos: 'bottom', corners:true, shadow:true},
+				butMTheme = $.extend({}, butPTheme, {icon: 'minus', iconpos: 'top'});
+			
+			if ( typeof w.customCurrent === "undefined" ) { w.customCurrent = customCurrent; }
+			
+			if ( o.customFormat === false ) {
+				tmp = [];
+				for ( i = 0; i<o.customData.length; i++ ) {
+					tmp.push('%X'+(i+1));
+				} 
+				o.customFormat = tmp.join(',');
+			}
+			
+			if ( typeof w.d.intHTML !== 'boolean' ) {
+				w.d.intHTML.empty().remove();
+			}
+			
+			w.d.headerText = ((w._grabLabel() !== false)?w._grabLabel():((o.mode==='datebox')?w.__('titleDateDialogLabel'):w.__('titleTimeDialogLabel')));
+			w.d.intHTML = $('<span>');
+			
+			
+			for(i=0; i<o.customData.length; i++) {
+				tmp = ['a','b','c','d','e','f'][i];
+				if ( o.customData[i]['input'] === true ) {
+					$('<div>').append(inBase.clone().attr('value', o.customData[i]['data'][w.customCurrent[i]])).addClass('ui-block-'+tmp).appendTo(divIn);
+				} else {
+					$('<div>').append(inDiv.clone().html(o.customData[i]['data'][w.customCurrent[i]])).addClass('ui-block-'+tmp).appendTo(divIn);
+				}
+				w._makeEl(butBase, {'attr': {'field':i, 'amount':1}}).addClass('ui-block-'+tmp).buttonMarkup(butPTheme).appendTo(divPlus);
+				w._makeEl(butBase, {'attr': {'field':i, 'amount':1}}).addClass('ui-block-'+tmp).buttonMarkup(butMTheme).appendTo(divMinus);
+				cnt++;
+			}
+			
+			divPlus.addClass('ui-grid-'+['a','b','c','d','e'][cnt]).appendTo(w.d.intHTML);
+			divIn.addClass('ui-datebox-dboxin').addClass('ui-grid-'+['a','b','c','d','e'][cnt]).appendTo(w.d.intHTML);
+			divMinus.addClass('ui-grid-'+['a','b','c','d','e'][cnt]).appendTo(w.d.intHTML);
+
+			if (o.mobVer >= 140) {
+				divMinus.find('div').css({'min-height': '2.3em'});
+				divPlus.find('div').css({'min-height': '2.3em'});
+			}
+
+			if (o.mobVer >= 140) {
+				divMinus.find('div').css({'min-height': '2.3em'});
+				divPlus.find('div').css({'min-height': '2.3em'});
+			}
+			
+			if ( o.useSetButton || o.useClearButton ) {
+				y = $('<div>', {'class':uid+'controls'});
+				
+				if ( o.useSetButton ) {
+					$('<a href="#">'+w.__('customSet')+'</a>')
+						.appendTo(y).buttonMarkup({theme: o.theme, icon: 'check', iconpos: 'left', corners:true, shadow:true})
+						.on(o.clickEventAlt, function(e) {
+							e.preventDefault();
+							w.d.input.trigger('datebox', {'method':'set', 'value':w._formatter(o.customFormat,w.customCurrent), 'date':w.customCurrent});
+							w.d.input.trigger('datebox', {'method':'close'});
+						});
+				}
+				if ( o.useClearButton ) {
+					$('<a href="#">'+w.__('clearButton')+'</a>')
+						.appendTo(y).buttonMarkup({theme: o.theme, icon: 'delete', iconpos: 'left', corners:true, shadow:true})
+						.on(o.clickEventAlt, function(e) {
+							e.preventDefault();
+							w.d.input.val('');
+							w.d.input.trigger('datebox',{'method':'clear'});
+							w.d.input.trigger('datebox',{'method':'close'});
+						});
+				}
+				if ( o.useCollapsedBut ) {
+					y.addClass('ui-datebox-collapse');
+				}
+				y.appendTo(w.d.intHTML);
+			}
+			
+			divIn.on('change', 'input', function() { w.refresh(); });
+			
+			divPlus.on(o.clickEvent, 'div', function(e) {
+				e.preventDefault();
+				w._cbox_offset($(this).jqmData('field'), $(this).jqmData('amount'));
+			});
+			divMinus.on(o.clickEvent, 'div', function(e) {
+				e.preventDefault();
+				w._cbox_offset($(this).jqmData('field'), $(this).jqmData('amount')*-1);
+			});
+			
+		}
+	});
+})( jQuery );
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.customflip.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.customflip.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.customflip.js	(revision 101)
@@ -0,0 +1,294 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notification.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ */
+/* CUSTOMFLIP Mode */
+
+(function($) {
+	$.extend( $.mobile.datebox.prototype.options, {
+		themeOptPick: 'b',
+		themeOpt: 'a',
+		useSetButton: true,
+		customData: [
+			{'input': true, 'name':'Letter', 'data':['a','b','c','d','e']},
+			{'input': true, 'name':'Text', 'data':['some','bull','shtuff','here']},
+			{'input': false, 'name':'Image', 'data':['<img src="img/slot1.png" />','<img src="img/slot2.png" />','<img src="img/slot3.png" />','<img src="img/slot4.png" />']}
+		],
+		customDefault: [0,0,0],
+		customFormat: false,
+		customfliplang: {
+			// This structure interfaces with __() -> if it exists, strings are looked up here after i8n fails,
+			// and before going to 'default' - the name syntax is <mode>lang
+			'customSet':'Looks Good'
+		}
+	});
+	$.extend( $.mobile.datebox.prototype, {
+		'_customflipDoSet': function () {
+			// If this function exists, it overrides the 'doset' method of the 'datebox' event.
+			// The name syntax is _<mode>DoSet
+			var w = this, o = this.options;
+			if ( typeof w.customCurrent === 'undefined' ) { w.customCurrent = this._makeDate(this.d.input.val()); }
+			w.d.input.trigger('datebox', {'method':'set', 'value':w._formatter(o.customFormat,w.customCurrent), 'date':w.customCurrent});
+		},
+		'_cubox_offset': function (fld, amount) {
+			// This is *not* an automatic override, used below specificly.
+			var w = this, x,
+				o = this.options;
+				
+			tmp = (w.customCurrent[fld] + amount) % o.customData[fld]['data'].length;
+			if ( tmp < 0 ) { tmp = o.customData[fld]['data'].length + tmp; }
+			
+			w.customCurrent[fld] = tmp;
+			if ( o.useImmediate ) { w.d.input.trigger('datebox', {'method':'set', 'value':w._formatter(o.customFormat,w.customCurrent), 'date':w.customCurrent}); }
+			w.refresh();
+		},
+		'_cubox_arr': function (data, choice) {
+			var base = data, x,
+				before = data.slice(0,choice),
+				after = data.slice(choice+1);
+			
+			while ( before.length < 10 ) {
+				for ( x = base.length; x > 0; x-- ) {
+					before.unshift(base[x-1]);
+				}
+			}
+			while ( before.length > 10 ) {
+				before.shift();
+			}
+			
+			while ( after.length < 10 ) {
+				for ( x = 0; x < base.length; x++ ) {
+					after.push(base[x]);
+				}
+			}
+			after.length = 10;
+			
+			before.push(data[choice]);
+			
+			return $.merge($.merge([], before), after);
+		},
+		'_cubox_pos': function () {
+			var w = this,
+				ech = null,
+				top = null,
+				par = this.d.intHTML.find('.ui-datebox-flipcontent').innerHeight(),
+				tot = null;
+				
+			w.d.intHTML.find('.ui-datebox-flipcenter').each(function() {
+				ech = $(this);
+				top = ech.innerHeight();
+				ech.css('top', ((par/2)-(top/2)+4)*-1);
+			});
+			w.d.intHTML.find('ul').each(function () {
+				ech = $(this);
+				par = ech.parent().innerHeight();
+				top = ech.find('li').first();
+				tot = ech.find('li').size() * top.outerHeight();
+				top.css('marginTop', ((tot/2)-(par/2)+(top.outerHeight()/2))*-1);
+			});
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._parser, {
+		// If this stucture exists, it is called instead of the usual date input parser.
+		// The name of the structure is the same as the mode name - it recieves a string
+		// as the input, which is the current value of the input element, pre-sanitized
+		'customflip' : function ( str ) { 
+			var w = this,
+				o = this.options,
+				adv = o.customFormat,
+				exp_input, exp_format, tmp, tmp2, retty_val=[0,0,0,0,0,0];
+
+			if ( typeof(adv) !== 'string' ) { adv = ''; }
+
+			adv = adv.replace(/%X([0-9a-f])/gi, function(match, oper) {
+	          	switch (oper) {
+    		    	case 'a':
+					case 'b':
+					case 'c':
+					case 'd':
+					case 'e':
+					case 'f':
+						return '(' + match + '|' + '.+?' + ')'; break;
+					case '0':
+					case '1':
+					case '2':
+					case '3':
+					case '4':
+					case '5':
+						return '(' + match + '|' + '[0-9]+' + ')'; break;
+          			default:
+						return '.+?';
+          		}
+        	});
+
+			adv = new RegExp('^' + adv + '$');
+			exp_input = adv.exec(str);
+			exp_format = adv.exec(o.customFormat);
+
+			if ( exp_input !== null ) {
+				for ( var x = 1; x<exp_input.length; x++ ) {
+					tmp = exp_format[x].charAt(2);
+					console.log(tmp);
+					if ( isNaN(parseInt(tmp)) ) {
+						tmp2 = $.inArray(tmp, ['a','b','c','d','e','f']);
+						retty_val[tmp2] = $.inArray(exp_input[x], o.customData[tmp2].data);
+					} else {
+						retty_val[parseInt(tmp)-1] = parseInt(exp_input[x]);
+					}
+				}
+			}
+
+			//outputty = { 'in': exp_input, 'fmt': o.customFormat, 'str': str, 'format': exp_format, 'retty': retty_val };
+			return ( str.length < 1 || retty_val.length < 1 ) ? this.options.customDefault : retty_val;
+
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._customformat, {
+		// If this stucture exists, the formatter will call it when it encounters a special string
+		// %X<whatever> - it recieves the single letter operater, and the current "date" value
+		'customflip' : function ( oper, val, o ) {
+			var per = parseInt(oper), tmp;
+
+			if ( typeof(per) === 'number' && !isNaN(per) ) {
+				return val[oper-1];
+			} else {
+				tmp = $.inArray(oper, ['a','b','c','d','e','f']);
+				return o.customData[tmp].data[val[tmp]];
+			}
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._build, {
+		// This builds the actual interface, and is called on *every* refresh. (after each "movement")
+		'customflip': function () {
+			var w = this,
+				o = this.options, i, y, hRow, tmp, lineArr,
+				uid = 'ui-datebox-',
+				customCurrent = this._makeDate(this.d.input.val()),
+				flipBase = $("<div class='ui-overlay-shadow'><ul></ul></div>"),
+				ctrl = $("<div>", {"class":uid+'flipcontent'});
+			
+			if ( typeof w.customCurrent === "undefined" ) { w.customCurrent = customCurrent; }
+			
+			if ( o.customFormat === false ) {
+				tmp = [];
+				for ( i = 0; i<o.customData.length; i++ ) {
+					tmp.push('%X'+(i+1));
+				} 
+				o.customFormat = tmp.join(',');
+			}
+				
+			if ( typeof w.d.intHTML !== 'boolean' ) {
+				w.d.intHTML.empty().remove();
+			}
+			
+			w.d.input.on('datebox', function (e,p) {
+				if ( p.method === 'postrefresh' ) {
+					w._cubox_pos();
+				}
+			});
+			
+			w.d.headerText = ((w._grabLabel() !== false)?w._grabLabel():w.__('tireTitleString'));
+			w.d.intHTML = $('<span>');
+			
+			w.fldOrder = o.tireFieldOrder;
+			
+			tmp = $('<div class="'+uid+'header ui-grid-'+[0,0,'a','b','c'][o.customData.length]+'"></div>');
+			for ( y=0; y<o.customData.length; y++ ) {
+				$('<div class="ui-block-'+['a','b','c','d'][y]+'">'+o.customData[y]['name']+'</div>').css('textAlign','center').appendTo(tmp);
+			}
+			tmp.appendTo(w.d.intHTML);
+			
+			w.d.intHTML.append(ctrl);
+			
+			for ( y=0; y<o.customData.length; y++ ) {
+				lineArr = w._cubox_arr(o.customData[y]['data'], w.customCurrent[y]);
+				hRow = w._makeEl(flipBase, {'attr': {'field':y,'amount':1} });
+				for ( i in lineArr ) {
+					tmp = (i!=10)?o.themeOpt:o.themeOptPick;
+					$('<li>', {'class':'ui-body-'+tmp})
+						.html('<span>'+lineArr[i]+'</span>').appendTo(hRow.find('ul'));
+					} 
+					hRow.appendTo(ctrl);
+			}
+			
+			$("<div>", {"class":uid+'flipcenter ui-overlay-shadow'}).css('pointerEvents', 'none').appendTo(w.d.intHTML);
+			
+			if ( o.useSetButton ) {
+				y = $('<div>', {'class':uid+'controls'});
+				
+				if ( o.useSetButton ) {
+					$('<a href="#">'+w.__('customSet')+'</a>')
+						.appendTo(y).buttonMarkup({theme: o.theme, icon: 'check', iconpos: 'left', corners:true, shadow:true})
+						.on(o.clickEventAlt, function(e) {
+							e.preventDefault();
+							w.d.input.trigger('datebox', {'method':'set', 'value':w._formatter(o.customFormat,w.customCurrent), 'date':w.tireChoice});
+							w.d.input.trigger('datebox', {'method':'close'});
+						});
+				}
+				y.appendTo(w.d.intHTML);
+			}
+			
+			if ( w.wheelExists ) { // Mousewheel operation, if plugin is loaded
+				w.d.intHTML.on('mousewheel', '.ui-overlay-shadow', function(e,d) {
+					e.preventDefault();
+					w._cubox_offset($(this).jqmData('field'), ((d<0)?1:-1)*$(this).jqmData('amount'));
+				});
+			}
+			
+			w.d.intHTML.on(w.drag.eStart, 'ul', function(e,f) {
+				if ( !w.drag.move ) {
+					if ( typeof f !== "undefined" ) { e = f; }
+					w.drag.move = true;
+					w.drag.target = $(this).find('li').first();
+					w.drag.pos = parseInt(w.drag.target.css('marginTop').replace(/px/i, ''),10);
+					w.drag.start = w.touch ? e.originalEvent.changedTouches[0].pageY : e.pageY;
+					w.drag.end = false;
+					e.stopPropagation();
+					e.preventDefault();
+				}
+			});
+			
+			w.d.intHTML.on(w.drag.eStart, '.'+uid+'flipcenter', function(e) { // Used only on old browsers and IE.
+				if ( !w.drag.move ) {
+					w.drag.target = w.touch ? e.originalEvent.changedTouches[0].pageX - $(e.currentTarget).offset().left : e.pageX - $(e.currentTarget).offset().left;
+					w.drag.tmp = w.d.intHTML.find('.'+uid+'flipcenter').innerWidth() / (( $.inArray('a', w.fldOrder) > -1 && w.__('timeFormat') !== 12 )?w.fldOrder.length-1:w.fldOrder.length);
+					$(w.d.intHTML.find('ul').get(parseInt(w.drag.target / w.drag.tmp,10))).trigger(w.drag.eStart,e);
+				}
+			});
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._drag, {
+		// This contains the code that the drag and drop (or touch move) code uses
+		'customflip': function() {
+			var w = this,
+				o = this.options,
+				g = this.drag;
+			
+			$(document).on(g.eMove, function(e) {
+				if ( g.move && o.mode === 'customflip' ) {
+					g.end = w.touch ? e.originalEvent.changedTouches[0].pageY : e.pageY;
+					g.target.css('marginTop', (g.pos + g.end - g.start) + 'px');
+					e.preventDefault();
+					e.stopPropagation();
+					return false;
+				}
+			});
+			
+			$(document).on(g.eEnd, function(e) {
+				if ( g.move && o.mode === 'customflip' ) {
+					g.move = false;
+					if ( g.end !== false ) {
+						e.preventDefault();
+						e.stopPropagation();
+						g.tmp = g.target.parent().parent();
+						w._cubox_offset(g.tmp.jqmData('field'), (parseInt((g.start - g.end) / g.target.innerHeight(),10) * g.tmp.jqmData('amount')));
+					}
+					g.start = false;
+					g.end = false;
+				}
+			});
+		}
+	});
+})( jQuery );
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.datebox.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.datebox.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.datebox.js	(revision 101)
@@ -0,0 +1,319 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notification.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ */
+
+(function($) {
+	$.extend( $.mobile.datebox.prototype.options, {
+		themeButton: 'a',
+		themeInput: 'a',
+		useSetButton: true,
+		validHours: false,
+		repButton: true
+		
+	});
+	$.extend( $.mobile.datebox.prototype, {
+		_dbox_run: function() {
+			var w = this;
+			w.drag.didRun = true;
+			w._offset(w.drag.target[0], w.drag.target[1], false);
+			w._dbox_run_update();
+			w.runButton = setTimeout(function() {w._dbox_run();}, 150);
+		},
+		_dbox_run_update: function() {
+			var w = this,
+				o = this.options;
+			
+			if ( o.mode === 'datebox' ) {
+				w.d.intHTML.find('.ui-datebox-header').find('h4').text(w._formatter(w.__('headerFormat'), w.theDate));
+			}
+			
+			w.d.divIn.find('input').each(function () {
+				switch ( $(this).jqmData('field') ) {
+					case 'y':
+						$(this).val(w.theDate.getFullYear()); break;
+					case 'm':
+						$(this).val(w.theDate.getMonth() + 1); break;
+					case 'd':
+						$(this).val(w.theDate.getDate()); break;
+					case 'h':
+						if ( w.__('timeFormat') === 12 ) {
+							if ( w.theDate.getHours() > 12 ) {
+								$(this).val(w.theDate.getHours()-12); break;
+							} else if ( w.theDate.getHours() === 0 ) {
+								$(this).val(12); break;
+							}
+						}		
+						$(this).val(w.theDate.getHours()); break;
+					case 'i':
+						$(this).val(w._zPad(w.theDate.getMinutes())); break;
+					case 'M':
+						$(this).val(w.__('monthsOfYearShort')[w.theDate.getMonth()]); break;
+					case 'a':
+						$(this).val((w.theDate.getHours() > 11)?w.__('meridiem')[1]:w.__('meridiem')[0]);
+						break;
+				}
+			});
+		},
+		_dbox_vhour: function (delta) {
+			var w = this,
+				o = this.options, tmp, 
+				closeya = [25,0],
+				closenay = [25,0];
+				
+			if ( o.validHours === false ) { return true; }
+			if ( $.inArray(w.theDate.getHours(), o.validHours) > -1 ) { return true; }
+			
+			tmp = w.theDate.getHours();
+			$.each(o.validHours, function(){
+				if ( ((tmp < this)?1:-1) === delta ) {
+					if ( closeya[0] > Math.abs(this-tmp) ) {
+						closeya = [Math.abs(this-tmp),parseInt(this,10)];
+					}
+				} else {
+					if ( closenay[0] > Math.abs(this-tmp) ) {
+						closenay = [Math.abs(this-tmp),parseInt(this,10)];
+					}
+				}
+			});
+			if ( closeya[1] !== 0 ) { w.theDate.setHours(closeya[1]); }
+			else { w.theDate.setHours(closenay[1]); }
+		},
+		_dbox_enter: function (item) {
+			var w = this;
+			
+			if ( item.jqmData('field') === 'M' && $.inArray(item.val(), w.__('monthsOfYearShort')) > -1 ) {
+				w.theDate.setMonth($.inArray(item.val(), w.__('monthsOfYearShort')));
+			}
+			
+			if ( item.val() !== '' && item.val().toString().search(/^[0-9]+$/) === 0 ) {
+				switch ( item.jqmData('field') ) {
+					case 'y':
+						w.theDate.setFullYear(parseInt(item.val(),10)); break;
+					case 'm':
+						w.theDate.setMonth(parseInt(item.val(),10)-1); break;
+					case 'd':
+						w.theDate.setDate(parseInt(item.val(),10)); break;
+					case 'h':
+						w.theDate.setHours(parseInt(item.val(),10)); break;
+					case 'i':
+						w.theDate.setMinutes(parseInt(item.val(),10)); break;
+				}
+			}
+			w.refresh();
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._build, {
+		'timebox': function () {
+			this._build.datebox.apply(this,[]);
+		},
+		'datebox': function () {
+			var w = this,
+				g = this.drag,
+				o = this.options, i, y, tmp, cnt = -2,
+				uid = 'ui-datebox-',
+				divBase = $("<div>"),
+				divPlus = $('<fieldset>'),
+				divIn = divBase.clone(),
+				divMinus = divPlus.clone(),
+				inBase = $("<input type='"+w.inputType+"' />").addClass('ui-input-text ui-corner-all ui-shadow-inset ui-body-'+o.themeInput),
+				inBaseT = $("<input type='text' />").addClass('ui-input-text ui-corner-all ui-shadow-inset ui-body-'+o.themeInput),
+				butBase = $("<div></div>"),
+				butPTheme = {theme: o.themeButton, icon: 'plus', iconpos: 'bottom', corners:true, shadow:true, inline:true},
+				butMTheme = $.extend({}, butPTheme, {icon: 'minus', iconpos: 'top'});
+			
+			if ( typeof w.d.intHTML !== 'boolean' ) {
+				w.d.intHTML.empty().remove();
+			}
+			
+			w.d.headerText = ((w._grabLabel() !== false)?w._grabLabel():((o.mode==='datebox')?w.__('titleDateDialogLabel'):w.__('titleTimeDialogLabel')));
+			w.d.intHTML = $('<span>');
+
+			if ( w.inputType !== 'number' ) { inBase.attr('pattern', '[0-9]*'); }
+			
+			w.fldOrder = ((o.mode==='datebox')?w.__('dateFieldOrder'):w.__('timeFieldOrder'));
+			w._check();
+			w._minStepFix();
+			w._dbox_vhour(typeof w._dbox_delta !== 'undefined'?w._dbox_delta:1);
+			
+			if ( o.mode === 'datebox' ) { $('<div class="'+uid+'header"><h4>'+w._formatter(w.__('headerFormat'), w.theDate)+'</h4></div>').appendTo(w.d.intHTML); }
+			
+			for(i=0; i<=w.fldOrder.length; i++) {
+				tmp = ['a','b','c','d','e','f'][i];
+				switch (w.fldOrder[i]) {
+					case 'y':
+					case 'm':
+					case 'd':
+					case 'h':
+						$('<div>').append(w._makeEl(inBase, {'attr': {'field':w.fldOrder[i], 'amount':1}})).addClass('ui-block-'+tmp).appendTo(divIn);
+						w._makeEl(butBase, {'attr': {'field':w.fldOrder[i], 'amount':1}}).addClass('ui-block-'+tmp).buttonMarkup(butPTheme).appendTo(divPlus);
+						w._makeEl(butBase, {'attr': {'field':w.fldOrder[i], 'amount':1}}).addClass('ui-block-'+tmp).buttonMarkup(butMTheme).appendTo(divMinus);
+						cnt++;
+						break;
+					case 'a':
+						if ( w.__('timeFormat') === 12 ) {
+							$('<div>').append(w._makeEl(inBaseT, {'attr': {'field':w.fldOrder[i], 'amount':1}})).addClass('ui-block-'+tmp).appendTo(divIn);
+							w._makeEl(butBase, {'attr': {'field':w.fldOrder[i], 'amount':1}}).addClass('ui-block-'+tmp).buttonMarkup(butPTheme).appendTo(divPlus);
+							w._makeEl(butBase, {'attr': {'field':w.fldOrder[i], 'amount':1}}).addClass('ui-block-'+tmp).buttonMarkup(butMTheme).appendTo(divMinus);
+							cnt++;
+						} 
+						break;
+					case 'M':
+						$('<div>').append(w._makeEl(inBaseT, {'attr': {'field':w.fldOrder[i], 'amount':1}})).addClass('ui-block-'+tmp).appendTo(divIn);
+						w._makeEl(butBase, {'attr': {'field':w.fldOrder[i], 'amount':1}}).addClass('ui-block-'+tmp).buttonMarkup(butPTheme).appendTo(divPlus);
+						w._makeEl(butBase, {'attr': {'field':w.fldOrder[i], 'amount':1}}).addClass('ui-block-'+tmp).buttonMarkup(butMTheme).appendTo(divMinus);
+						cnt++;
+						break;
+					case 'i':
+						$('<div>').append(w._makeEl(inBase, {'attr': {'field':w.fldOrder[i], 'amount':o.minuteStep}})).addClass('ui-block-'+tmp).appendTo(divIn);
+						w._makeEl(butBase, {'attr': {'field':w.fldOrder[i], 'amount':o.minuteStep}}).addClass('ui-block-'+tmp).buttonMarkup(butPTheme).appendTo(divPlus);
+						w._makeEl(butBase, {'attr': {'field':w.fldOrder[i], 'amount':o.minuteStep}}).addClass('ui-block-'+tmp).buttonMarkup(butMTheme).appendTo(divMinus);
+						cnt++;
+						break;
+				}
+			}
+			
+			divPlus.addClass('ui-grid-'+['a','b','c','d','e'][cnt]).appendTo(w.d.intHTML);
+			divIn.addClass('ui-datebox-dboxin').addClass('ui-grid-'+['a','b','c','d','e'][cnt]).appendTo(w.d.intHTML);
+			divMinus.addClass('ui-grid-'+['a','b','c','d','e'][cnt]).appendTo(w.d.intHTML);
+
+			if ( o.mobVer >= 140 ) {
+				divMinus.find('div').css({'min-height':'2.3em'});
+				divPlus.find('div').css({'min-height':'2.3em'});
+			}
+			
+			divIn.find('input').each(function () {
+				switch ( $(this).jqmData('field') ) {
+					case 'y':
+						$(this).val(w.theDate.getFullYear()); break;
+					case 'm':
+						$(this).val(w.theDate.getMonth() + 1); break;
+					case 'd':
+						$(this).val(w.theDate.getDate()); break;
+					case 'h':
+						if ( w.__('timeFormat') === 12 ) {
+							if ( w.theDate.getHours() > 12 ) {
+								$(this).val(w.theDate.getHours()-12); break;
+							} else if ( w.theDate.getHours() === 0 ) {
+								$(this).val(12); break;
+							}
+						}		
+						$(this).val(w.theDate.getHours()); break;
+					case 'i':
+						$(this).val(w._zPad(w.theDate.getMinutes())); break;
+					case 'M':
+						$(this).val(w.__('monthsOfYearShort')[w.theDate.getMonth()]); break;
+					case 'a':
+						$(this).val((w.theDate.getHours() > 11)?w.__('meridiem')[1]:w.__('meridiem')[0]);
+						break;
+				}
+			});
+
+			w.d.divIn = divIn;
+			
+			if ( w.dateOK !== true ) {
+				divIn.find('input').addClass(uid+'griddate-disable');
+			} else {
+				divIn.find('.'+uid+'griddate-disable').removeClass(uid+'griddate-disable');
+			}
+			
+			if ( o.useSetButton || o.useClearButton ) {
+				y = $('<div>', {'class':uid+'controls'});
+				
+				if ( o.useSetButton ) {
+					$('<a href="#">'+((o.mode==='datebox')?w.__('setDateButtonLabel'):w.__('setTimeButtonLabel'))+'</a>')
+						.appendTo(y).buttonMarkup({theme: o.theme, icon: 'check', iconpos: 'left', corners:true, shadow:true})
+						.on(o.clickEventAlt, function(e) {
+							e.preventDefault();
+							if ( w.dateOK === true ) {
+								w.d.input.trigger('datebox', {'method':'set', 'value':w._formatter(w.__fmt(),w.theDate), 'date':w.theDate});
+								w.d.input.trigger('datebox', {'method':'close'});
+							}
+						});
+				}
+				if ( o.useClearButton ) {
+					$('<a href="#">'+w.__('clearButton')+'</a>')
+						.appendTo(y).buttonMarkup({theme: o.theme, icon: 'delete', iconpos: 'left', corners:true, shadow:true})
+						.on(o.clickEventAlt, function(e) {
+							e.preventDefault();
+							w.d.input.val('');
+							w.d.input.trigger('datebox',{'method':'clear'});
+							w.d.input.trigger('datebox',{'method':'close'});
+						});
+				}
+				if ( o.useCollapsedBut ) {
+					y.addClass('ui-datebox-collapse');
+				}
+				y.appendTo(w.d.intHTML);
+			}
+			
+			if ( o.repButton === false ) {
+				divPlus.on(o.clickEvent, 'div', function(e) {
+					e.preventDefault();
+					w._dbox_delta = 1;
+					w._offset($(this).jqmData('field'), $(this).jqmData('amount'));
+				});
+				divMinus.on(o.clickEvent, 'div', function(e) {
+					e.preventDefault();
+					w._dbox_delta = -1;
+					w._offset($(this).jqmData('field'), $(this).jqmData('amount')*-1);
+				});
+			}
+			
+			divIn.on('change', 'input', function() { w._dbox_enter($(this)); });
+					
+			if ( w.wheelExists ) { // Mousewheel operation, if plugin is loaded
+				divIn.on('mousewheel', 'input', function(e,d) {
+					e.preventDefault();
+					w._dbox_delta = d<0?-1:1;
+					w._offset($(this).jqmData('field'), ((d<0)?-1:1)*$(this).jqmData('amount'));
+				});
+			}
+			
+			if ( o.repButton === true ) {
+				divPlus.on(w.drag.eStart, 'div', function(e) {
+					tmp = [$(this).jqmData('field'), $(this).jqmData('amount')];
+					w.drag.move = true;
+					w._dbox_delta = 1;
+					w._offset(tmp[0], tmp[1], false);
+					w._dbox_run_update();
+					if ( !w.runButton ) {
+						w.drag.target = tmp;
+						w.runButton = setTimeout(function() {w._dbox_run();}, 500);
+					}
+				});
+				
+				divMinus.on(w.drag.eStart, 'div', function(e) {
+					tmp = [$(this).jqmData('field'), $(this).jqmData('amount')*-1];
+					w.drag.move = true;
+					w._dbox_delta = -1;
+					w._offset(tmp[0], tmp[1], false);
+					w._dbox_run_update();
+					if ( !w.runButton ) {
+						w.drag.target = tmp;
+						w.runButton = setTimeout(function() {w._dbox_run();}, 500);
+					}
+				});
+
+				divPlus.on(g.eEndA, function(e) {
+					if ( g.move ) {
+						e.preventDefault();
+						clearTimeout(w.runButton);
+						w.runButton = false;
+						g.move = false;
+					}
+				});
+				divMinus.on(g.eEndA, function(e) {
+					if ( g.move ) {
+						e.preventDefault();
+						clearTimeout(w.runButton);
+						w.runButton = false;
+						g.move = false;
+					}
+				});
+			}
+		}
+	});
+})( jQuery );
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.durationbox.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.durationbox.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.durationbox.js	(revision 101)
@@ -0,0 +1,247 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notification.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ */
+ /* DurationBox Mode */
+
+(function($) {
+	$.extend( $.mobile.datebox.prototype.options, {
+		themeButton: 'a',
+		themeInput: 'a',
+		useSetButton: true,
+		repButton: true,
+		durationSteppers: {'d': 1, 'h': 1, 'i': 1, 's': 1}
+	});
+	$.extend( $.mobile.datebox.prototype, {
+		_durbox_run: function() {
+			var w = this;
+			w.drag.didRun = true;
+			w._offset(w.drag.target[0], w.drag.target[1], false);
+			w._durbox_run_update();
+			w.runButton = setTimeout(function() {w._durbox_run();}, 100);
+		},
+		_durbox_run_update: function () {
+			var w = this, i, cDur = [],
+				ival = {'d': 60*60*24, 'h': 60*60, 'i': 60};
+
+			i = w.theDate.getEpoch() - w.initDate.getEpoch();
+			if ( i<0 ) { i = 0; w.theDate.setTime(w.initDate.getTime()); }
+			w.lastDuration = i; // Let the number of seconds be sort of public.
+			
+			// DAYS 
+			cDur[0] = parseInt( i / ival.d,10); i = i % ival.d;
+			// HOURS 
+			cDur[1] = parseInt( i / ival.h, 10); i = i % ival.h;
+			// MINS AND SECS 
+			cDur[2] = parseInt( i / ival.i, 10);
+			cDur[3] = i % ival.i;
+
+			w.d.divIn.find('input').each(function () {
+				switch ( $(this).parent().jqmData('field') ) {
+					case 'd':
+						$(this).val(cDur[0]); break;
+					case 'h':
+						$(this).val(cDur[1]); break;
+					case 'i':
+						$(this).val(cDur[2]); break;
+					case 's':
+						$(this).val(cDur[3]); break;
+				}
+			});
+		},
+		_durbox_valid: function (num) {
+			if ( num.toString().search(/^[0-9]+$/) === 0 ) { return parseInt(num,10); }
+			return 0;
+		},
+		_durbox_enter: function (item) {
+			var w = this,
+				t = w.initDate.getEpoch();
+				
+			w.d.intHTML.find('input').each( function() {
+				switch ( $(this).parent().jqmData('field') ) {
+					case 'd':
+						t += (60*60*24) * w._durbox_valid($(this).val()); break;
+					case 'h':
+						t += (60*60) * w._durbox_valid($(this).val()); break;
+					case 'i':
+						t += (60) * w._durbox_valid($(this).val()); break;
+					case 's':
+						t += w._durbox_valid($(this).val()); break;
+				}
+			});
+			w.theDate.setTime( t * 1000 );
+			w.refresh();
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._build, {
+		'durationbox': function () {
+			var w = this,
+				g = this.drag,
+				o = this.options, i, y, cDur = [0,0,0,0], tmp,
+				ival = {'d': 60*60*24, 'h': 60*60, 'i': 60},
+				uid = 'ui-datebox-',
+				divBase = $("<div>"),
+				divPlus = $('<fieldset>'),
+				divIn = divBase.clone().addClass('ui-datebox-dboxin'),
+				divMinus = divPlus.clone(),
+				inBase = $("<input type='"+w.inputType+"' />").addClass('ui-input-text ui-corner-all ui-shadow-inset ui-body-'+o.themeInput),
+				butBase = $("<div><a href='#'> </a></div>"),
+				butPTheme = {theme: o.themeButton, icon: 'plus', iconpos: 'bottom', corners:true, shadow:true},
+				butMTheme = $.extend({}, butPTheme, {icon: 'minus', iconpos: 'top'});
+			
+			if ( typeof w.d.intHTML !== 'boolean' ) {
+				w.d.intHTML.empty().remove();
+			}
+			
+			w.d.headerText = ((w._grabLabel() !== false)?w._grabLabel():w.__('titleDateDialogLabel'));
+			w.d.intHTML = $('<span>');
+			
+			if ( w.inputType !== 'number' ) { inBase.attr('pattern', '[0-9]*'); }
+			
+			w.fldOrder = w.__('durationOrder');
+			
+			for(i=0; i<=w.fldOrder.length; i++) {
+				switch (w.fldOrder[i]) {
+					case 'd':
+					case 'h':
+					case 'i':
+					case 's':
+						y = $.inArray(w.fldOrder[i], ['d','h','i','s']);
+						$('<div>').jqmData('field', w.fldOrder[i]).addClass('ui-block-'+['a','b','c','d'][i]).append(inBase.clone()).appendTo(divIn).prepend('<label>'+w.__('durationLabel')[y]+'</label>');
+						w._makeEl(butBase, {'attr': {'field':w.fldOrder[i]}}).addClass('ui-block-'+['a','b','c','d'][i]).buttonMarkup(butPTheme).appendTo(divPlus);
+						w._makeEl(butBase, {'attr': {'field':w.fldOrder[i]}}).addClass('ui-block-'+['a','b','c','d'][i]).buttonMarkup(butMTheme).appendTo(divMinus);
+						break;
+				}
+			}
+			
+			i = w.theDate.getEpoch() - w.initDate.getEpoch();
+			if ( i<0 ) { i = 0; w.theDate.setTime(w.initDate.getTime()); }
+			w.lastDuration = i; // Let the number of seconds be sort of public.
+			
+			// DAYS 
+			cDur[0] = parseInt( i / ival.d,10); i = i % ival.d;
+			// HOURS 
+			cDur[1] = parseInt( i / ival.h, 10); i = i % ival.h;
+			// MINS AND SECS 
+			cDur[2] = parseInt( i / ival.i, 10);
+			cDur[3] = i % ival.i;
+			
+			divIn.find('input').each(function () {
+				switch ( $(this).parent().jqmData('field') ) {
+					case 'd':
+						$(this).val(cDur[0]); break;
+					case 'h':
+						$(this).val(cDur[1]); break;
+					case 'i':
+						$(this).val(cDur[2]); break;
+					case 's':
+						$(this).val(cDur[3]); break;
+				}
+			});
+
+			w.d.divIn = divIn;
+			
+			divPlus.addClass('ui-grid-'+['a','b','c'][w.fldOrder.length-2]).appendTo(w.d.intHTML);
+			divIn.addClass('ui-grid-'+['a','b','c'][w.fldOrder.length-2]).appendTo(w.d.intHTML);
+			divMinus.addClass('ui-grid-'+['a','b','c'][w.fldOrder.length-2]).appendTo(w.d.intHTML);
+
+			if (o.mobVer >= 140) {
+				divMinus.find('div').css({'min-height': '2.3em'});
+				divPlus.find('div').css({'min-height': '2.3em'});
+			}
+			
+			if ( o.useSetButton || o.useClearButton ) {
+				y = $('<div>', {'class':uid+'controls'});
+				
+				if ( o.useSetButton ) {
+					$('<a href="#">'+w.__('setDurationButtonLabel')+'</a>')
+						.appendTo(y).buttonMarkup({theme: o.theme, icon: 'check', iconpos: 'left', corners:true, shadow:true})
+						.on(o.clickEventAlt, function(e) {
+							e.preventDefault();
+							w.d.input.trigger('datebox', {'method':'set', 'value':w._formatter(w.__fmt(),w.theDate), 'date':w.theDate});
+							w.d.input.trigger('datebox', {'method':'close'});
+						});
+				}
+				if ( o.useClearButton ) {
+					$('<a href="#">'+w.__('clearButton')+'</a>')
+						.appendTo(y).buttonMarkup({theme: o.theme, icon: 'delete', iconpos: 'left', corners:true, shadow:true})
+						.on(o.clickEventAlt, function(e) {
+							e.preventDefault();
+							w.d.input.val('');
+							w.d.input.trigger('datebox',{'method':'clear'});
+							w.d.input.trigger('datebox',{'method':'close'});
+						});
+				}
+				if ( o.useCollapsedBut ) {
+					y.addClass('ui-datebox-collapse');
+				}
+				y.appendTo(w.d.intHTML);
+			}
+			
+			if ( o.repButton === false ) {
+				divPlus.on(o.clickEvent, 'div', function(e) {
+					e.preventDefault();
+					w._offset($(this).jqmData('field'), o.durationSteppers[$(this).jqmData('field')]);
+				});
+				divMinus.on(o.clickEvent, 'div', function(e) {
+					e.preventDefault();
+					w._offset($(this).jqmData('field'), o.durationSteppers[$(this).jqmData('field')]*-1);
+				});
+			}
+			
+			divIn.on('change', 'input', function() { w._durbox_enter($(this)); });
+					
+			if ( w.wheelExists ) { // Mousewheel operation, if plugin is loaded
+				divIn.on('mousewheel', 'input', function(e,d) {
+					e.preventDefault();
+					w._offset($(this).parent().jqmData('field'), ((d<0)?-1:1)*o.durationSteppers[$(this).parent().jqmData('field')]);
+				});
+			}
+			
+			if ( o.repButton === true ) {
+				divPlus.on(w.drag.eStart, 'div', function(e) {
+					tmp = [$(this).jqmData('field'), o.durationSteppers[$(this).jqmData('field')]];
+					w.drag.move = true;
+					w._dbox_delta = 1;
+					w._offset(tmp[0], tmp[1], false);
+					w._durbox_run_update();
+					if ( !w.runButton ) {
+						w.drag.target = tmp;
+						w.runButton = setTimeout(function() {w._durbox_run();}, 500);
+					}
+				});
+				
+				divMinus.on(w.drag.eStart, 'div', function(e) {
+					tmp = [$(this).jqmData('field'), o.durationSteppers[$(this).jqmData('field')]*-1];
+					w.drag.move = true;
+					w._dbox_delta = -1;
+					w._offset(tmp[0], tmp[1], false);
+					w._durbox_run_update();
+					if ( !w.runButton ) {
+						w.drag.target = tmp;
+						w.runButton = setTimeout(function() {w._durbox_run();}, 500);
+					}
+				});
+				
+				divPlus.on(g.eEndA, function(e) {
+					if ( g.move ) {
+						e.preventDefault();
+						clearTimeout(w.runButton);
+						w.runButton = false;
+						g.move = false;
+					}
+				});
+				divMinus.on(g.eEndA, function(e) {
+					if ( g.move ) {
+						e.preventDefault();
+						clearTimeout(w.runButton);
+						w.runButton = false;
+						g.move = false;
+					}
+				});
+			}
+		}
+	});
+})( jQuery );
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.durationflipbox.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.durationflipbox.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.durationflipbox.js	(revision 101)
@@ -0,0 +1,206 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notification.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ */
+ /* DurationFlipBox Mode */
+
+(function($) {
+	$.extend( $.mobile.datebox.prototype.options, {
+		themeDatePick: 'b',
+		themeDate: 'a',
+		useSetButton: true,
+		durationSteppers: {'d': 1, 'h': 1, 'i': 1, 's': 1}
+	});
+	$.extend( $.mobile.datebox.prototype, {
+		'_durfbox_pos': function () {
+			var w = this,
+				ech = null,
+				top = null,
+				par = this.d.intHTML.find('.ui-datebox-flipcontent').innerHeight(),
+				tot = null;
+				
+			w.d.intHTML.find('.ui-datebox-flipcenter').each(function() {
+				ech = $(this);
+				top = ech.innerHeight();
+				ech.css('top', ((par/2)-(top/2)+4)*-1);
+			});
+			w.d.intHTML.find('ul').each(function () {
+				ech = $(this);
+				par = ech.parent().innerHeight();
+				top = ech.find('li').first();
+				tot = ech.find('li').size() * top.outerHeight();
+				top.css('marginTop', ((tot/2)-(par/2)+(top.outerHeight()/2))*-1);
+			});
+		},
+		'_durfbox_series': function (middle, side, type) {
+			var w = this, 
+				o = this.options,
+				ret = [[middle.toString(), middle]], nxt, prv;
+			 
+			for ( var i = 1; i <= side; i++ ) {
+				nxt = middle + ( i * o.durationSteppers[type] );
+				prv = middle - ( i * o.durationSteppers[type] );
+				ret.unshift([nxt.toString(), nxt]);
+				if ( prv > -1 ) {
+					ret.push([prv.toString(), prv]);
+				} else {
+					ret.push(['',-1]);
+				}
+			}
+			return ret;
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._build, {
+		'durationflipbox': function () {
+			var w = this,
+				o = this.options, i, y, tt, hRow, tmp, testDate,
+				sel = ['d','h','i','s'],
+				cDur = [0,0,0,0],
+				cDurS = {},
+				ival = {'d': 60*60*24, 'h': 60*60, 'i': 60},
+				uid = 'ui-datebox-',
+				flipBase = $("<div class='ui-overlay-shadow'><ul></ul></div>"),
+				ctrl = $("<div>", {"class":uid+'flipcontent'+' '+uid+'flipcontentd'});
+			
+			if ( typeof w.d.intHTML !== 'boolean' ) {
+				w.d.intHTML.empty().remove();
+			}
+			
+			w.d.input.on('datebox', function (e,p) {
+				if ( p.method === 'postrefresh' ) { w._durfbox_pos(); }
+			});
+			
+			w.d.headerText = ((w._grabLabel() !== false)?w._grabLabel():w.__('titleDateDialogLabel'));
+			w.d.intHTML = $('<span>');
+			
+			w.fldOrder = w.__('durationOrder');
+			
+			tmp = $('<div class="'+uid+'header ui-grid-'+[0,0,'a','b','c'][w.fldOrder.length]+'"></div>');
+			for ( y=0; y<w.fldOrder.length; y++ ) {
+				$('<div class="ui-block-'+['a','b','c','d'][y]+'">'+w.__('durationLabel')[jQuery.inArray(w.fldOrder[y],['d','h','i','s'])]+'</div>').css('textAlign','center').appendTo(tmp);
+			}
+			tmp.appendTo(w.d.intHTML);
+			
+			w.d.intHTML.append(ctrl);
+			
+			i = w.theDate.getEpoch() - w.initDate.getEpoch();
+			if ( i<0 ) { i = 0; w.theDate.setTime(w.initDate.getTime()); }
+			w.lastDuration = i; // Let the number of seconds be sort of public.
+			
+			// SPLIT TIME INTO DAYS, HRS, MIN, SEC
+			cDur[0] = parseInt( i / ival.d, 10); i = i % ival.d;
+			cDur[1] = parseInt( i / ival.h, 10); i = i % ival.h;
+			cDur[2] = parseInt( i / ival.i, 10);
+			cDur[3] = i % ival.i;
+			
+			cDurS.d = w._durfbox_series(cDur[0],16,'d');
+			cDurS.h = w._durfbox_series(cDur[1],16,'h');
+			cDurS.i = w._durfbox_series(cDur[2],20,'i');
+			cDurS.s = w._durfbox_series(cDur[3],20,'s');
+			
+			for ( y=0; y<w.fldOrder.length; y++ ) {
+				tt = w.fldOrder[y];
+				sel = cDur[jQuery.inArray(tt,['d','h','i','s'])];
+				hRow = w._makeEl(flipBase, {'attr': {'field':tt,'amount':o.durationSteppers[tt]} });
+				for ( i in cDurS[tt] ) {
+					tmp = (cDurS[tt][i][1]!==sel)?o.themeDate:o.themeDatePick;
+					$("<li>", { 'class' : 'ui-body-'+tmp})
+						.html("<span>"+cDurS[tt][i][0] +"</span>").appendTo(hRow.find('ul'));
+				}
+				hRow.appendTo(ctrl);
+			}
+			
+			$("<div>", {"class":uid+'flipcenter ui-overlay-shadow'}).css('pointerEvents', 'none').appendTo(w.d.intHTML);
+			
+			if ( o.useSetButton || o.useClearButton ) {
+				y = $('<div>', {'class':uid+'controls'});
+				
+				if ( o.useSetButton ) {
+					$('<a href="#">'+w.__('setDurationButtonLabel')+'</a>')
+						.appendTo(y).buttonMarkup({theme: o.theme, icon: 'check', iconpos: 'left', corners:true, shadow:true})
+						.on(o.clickEventAlt, function(e) {
+							e.preventDefault();
+							w.d.input.trigger('datebox', {'method':'set', 'value':w._formatter(w.__fmt(),w.theDate), 'date':w.theDate});
+							w.d.input.trigger('datebox', {'method':'close'});
+						});
+				}
+				if ( o.useClearButton ) {
+					$('<a href="#">'+w.__('clearButton')+'</a>')
+						.appendTo(y).buttonMarkup({theme: o.theme, icon: 'delete', iconpos: 'left', corners:true, shadow:true})
+						.on(o.clickEventAlt, function(e) {
+							e.preventDefault();
+							w.d.input.val('');
+							w.d.input.trigger('datebox',{'method':'clear'});
+							w.d.input.trigger('datebox',{'method':'close'});
+						});
+				}
+				if ( o.useCollapsedBut ) {
+					y.addClass('ui-datebox-collapse');
+				}
+				y.appendTo(w.d.intHTML);
+			}
+			
+			if ( w.wheelExists ) { // Mousewheel operation, if plugin is loaded
+				w.d.intHTML.on('mousewheel', '.ui-overlay-shadow', function(e,d) {
+					e.preventDefault();
+					w._offset($(this).jqmData('field'), ((d<0)?-1:1)*$(this).jqmData('amount'));
+				});
+			}
+			
+			w.d.intHTML.on(w.drag.eStart, 'ul', function(e,f) {
+				if ( !w.drag.move ) {
+					if ( typeof f !== "undefined" ) { e = f; }
+					w.drag.move = true;
+					w.drag.target = $(this).find('li').first();
+					w.drag.pos = parseInt(w.drag.target.css('marginTop').replace(/px/i, ''),10);
+					w.drag.start = w.touch ? e.originalEvent.changedTouches[0].pageY : e.pageY;
+					w.drag.end = false;
+					e.stopPropagation();
+					e.preventDefault();
+				}
+			});
+			
+			w.d.intHTML.on(w.drag.eStart, '.'+uid+'flipcenter', function(e) { // Used only on old browsers and IE.
+				if ( !w.drag.move ) {
+					w.drag.target = w.touch ? e.originalEvent.changedTouches[0].pageX - $(e.currentTarget).offset().left : e.pageX - $(e.currentTarget).offset().left;
+					w.drag.tmp = w.d.intHTML.find('.'+uid+'flipcenter').innerWidth() / (( $.inArray('a', w.fldOrder) > -1 && w.__('timeFormat') !== 12 )?w.fldOrder.length-1:w.fldOrder.length);
+					$(w.d.intHTML.find('ul').get(parseInt(w.drag.target / w.drag.tmp,10))).trigger(w.drag.eStart,e);
+				}
+			});
+			
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._drag, {
+		'durationflipbox': function() {
+			var w = this,
+				o = this.options,
+				g = this.drag;
+			
+			$(document).on(g.eMove, function(e) {
+				if ( g.move && o.mode === 'durationflipbox' ) {
+					g.end = w.touch ? e.originalEvent.changedTouches[0].pageY : e.pageY;
+					g.target.css('marginTop', (g.pos + g.end - g.start) + 'px');
+					e.preventDefault();
+					e.stopPropagation();
+					return false;
+				}
+			});
+			
+			$(document).on(g.eEnd, function(e) {
+				if ( g.move && o.mode === 'durationflipbox' ) {
+					g.move = false;
+					if ( g.end !== false ) {
+						e.preventDefault();
+						e.stopPropagation();
+						g.tmp = g.target.parent().parent();
+						w._offset(g.tmp.jqmData('field'), (parseInt((g.start - g.end) / g.target.innerHeight(),10) * g.tmp.jqmData('amount') *-1 ));
+					}
+					g.start = false;
+					g.end = false;
+				}
+			});
+		}
+	});
+})( jQuery );
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.flipbox.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.flipbox.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.flipbox.js	(revision 101)
@@ -0,0 +1,251 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notification.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ */
+/* FLIPBOX Mode */
+
+(function($) {
+	$.extend( $.mobile.datebox.prototype.options, {
+		themeDateHigh: 'b',
+		themeDatePick: 'b',
+		themeDate: 'a',
+		useSetButton: true,
+		validHours: false,
+		flen: {'y': 15, 'm':12, 'd':15, 'h':12, 'i':15, 'a':3}
+	});
+	$.extend( $.mobile.datebox.prototype, {
+		'_fbox_pos': function () {
+			var w = this,
+				ech = null,
+				top = null,
+				par = this.d.intHTML.find('.ui-datebox-flipcontent').innerHeight(),
+				tot = null;
+				
+			w.d.intHTML.find('.ui-datebox-flipcenter').each(function() {
+				ech = $(this);
+				top = ech.innerHeight();
+				ech.css('top', ((par/2)-(top/2)+4)*-1);
+			});
+			w.d.intHTML.find('ul').each(function () {
+				ech = $(this);
+				par = ech.parent().innerHeight();
+				top = ech.find('li').first();
+				tot = ech.find('li').size() * top.outerHeight();
+				top.css('marginTop', ((tot/2)-(par/2)+(top.outerHeight()/2))*-1);
+			});
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._build, {
+		'timeflipbox': function() {
+			this._build.flipbox.apply(this);
+		},
+		'flipbox': function () {
+			var w = this,
+				o = this.options, i, y, hRow, tmp, testDate,
+				iDate = (w.d.input.val() === "") ? w._startOffset(w._makeDate(w.d.input.val())) : w._makeDate(w.d.input.val()),
+				uid = 'ui-datebox-',
+				flipBase = $("<div class='ui-overlay-shadow'><ul></ul></div>"),
+				ctrl = $("<div>", {"class":uid+'flipcontent'});
+			
+			if ( typeof w.d.intHTML !== 'boolean' ) {
+				w.d.intHTML.empty();
+			}
+			
+			w.d.input.on('datebox', function (e,p) {
+				if ( p.method === 'postrefresh' ) {
+					w._fbox_pos();
+				}
+			});
+			
+			w.d.headerText = ((w._grabLabel() !== false)?w._grabLabel():((o.mode==='flipbox')?w.__('titleDateDialogLabel'):w.__('titleTimeDialogLabel')));
+			w.d.intHTML = $('<span>')
+			
+			w.fldOrder = ((o.mode==='flipbox')?w.__('dateFieldOrder'):w.__('timeFieldOrder'));
+			w._check();
+			w._minStepFix();
+			
+			if ( o.mode === 'flipbox' ) { $('<div class="'+uid+'header"><h4>'+w._formatter(w.__('headerFormat'), w.theDate)+'</h4></div>').appendTo(w.d.intHTML); }
+			
+			w.d.intHTML.append(ctrl);
+			
+			for ( y=0; y<w.fldOrder.length; y++ ) {
+				switch (w.fldOrder[y]) {
+					case 'y':
+						hRow = w._makeEl(flipBase, {'attr': {'field':'y','amount':1} });
+						for ( i=o.flen.y*-1; i<(o.flen.y+1); i++ ) {
+							tmp = (i!==0)?((iDate.get(0) === (w.theDate.get(0) + i))?o.themeDateHigh:o.themeDate):o.themeDatePick;
+							$('<li>', {'class':'ui-body-'+tmp})
+								.html('<span>'+(w.theDate.get(0)+i)+'</span>').appendTo(hRow.find('ul'));
+						}
+						hRow.appendTo(ctrl);
+						break;
+					case 'm':
+						hRow = w._makeEl(flipBase, {'attr': {'field':'m','amount':1} });
+						for ( i=o.flen.m*-1; i<(o.flen.m+1); i++ ) {
+							testDate = w.theDate.copy([0],[0,0,1]);
+							testDate.adj(1,i);
+							tmp = (i!==0)?((iDate.get(1) === testDate.get(1) && iDate.get(0) === testDate.get(0))?o.themeDateHigh:o.themeDate):o.themeDatePick;
+							$("<li>", { 'class' : 'ui-body-'+tmp})
+								.html("<span>"+w.__('monthsOfYearShort')[testDate.getMonth()]+"</span>").appendTo(hRow.find('ul'));
+						}
+						hRow.appendTo(ctrl);
+						break;
+					case 'd':
+						hRow = w._makeEl(flipBase, {'attr': {'field':'d','amount':1} });
+						for ( i=o.flen.d*-1; i<(o.flen.d+1); i++ ) {
+							testDate = w.theDate.copy();
+							testDate.adj(2,i);
+							tmp = (i!==0)?((iDate.comp() === testDate.comp())?o.themeDateHigh:o.themeDate):o.themeDatePick;
+							if ( ( o.blackDates !== false && $.inArray(testDate.iso(), o.blackDates) > -1 ) ||
+								( o.blackDays !== false && $.inArray(testDate.getDay(), o.blackDays) > -1 ) ) {
+								tmp += ' '+uid+'griddate-disable';
+							}
+							$("<li>", { 'class' : 'ui-body-'+tmp})
+								.html("<span>"+testDate.getDate()+"</span>").appendTo(hRow.find('ul'));
+						}
+						hRow.appendTo(ctrl);
+						break;
+					case 'h':
+						hRow = w._makeEl(flipBase, {'attr': {'field':'h','amount':1} });
+						for ( i=o.flen.h*-1; i<(o.flen.h+1); i++ ) {
+							testDate = w.theDate.copy();
+							testDate.adj(3,i);
+							tmp = (i!==0)?o.themeDate:o.themeDatePick;
+							if ( o.validHours !== false && $.inArray(testDate.get(3), o.validHours) < 0 ) {
+								tmp += ' '+uid+'griddate-disable';
+							}
+							$("<li>", { 'class' : 'ui-body-'+tmp})
+								.html("<span>"+((w.__('timeFormat')===12) ? (( testDate.get(3) === 0 ) ? '12' : (( testDate.get(3) < 13 ) ? testDate.get(3) : (testDate.get(3)-12))) : testDate.get(3))+"</span>").appendTo(hRow.find('ul'));
+						}
+						hRow.appendTo(ctrl);
+						break;
+					case 'i':
+						hRow = w._makeEl(flipBase, {'attr': {'field':'i','amount':o.minuteStep} });
+						for ( i=o.flen.i*-1; i<(o.flen.i+1); i++ ) {
+							testDate = w.theDate.copy();
+							testDate.adj(4,(i*o.minuteStep));
+							tmp = (i!==0)?o.themeDate:o.themeDatePick;
+							$("<li>", { 'class' : 'ui-body-'+tmp})
+								.html("<span>"+w._zPad(testDate.get(4))+"</span>").appendTo(hRow.find('ul'));
+						}
+						hRow.appendTo(ctrl);
+						break;
+					case 'a':
+						if ( w.__('timeFormat') !== 12 ) { break; }
+						hRow = w._makeEl(flipBase, {'attr': {'field':'a','amount':1} });
+						testDate = $("<li class='ui-body-"+o.themeDate+"'><span> </span></li>");
+						
+						for ( i=0; i<o.flen.a; i++ ) { testDate.clone().appendTo(hRow.find('ul')); }
+						if ( w.theDate.get(3) < 12 ) { testDate.clone().appendTo(hRow.find('ul')); }
+						
+						tmp = (w.theDate.get(3) > 11) ? [o.themeDate,o.themeDatePick] : [o.themeDatePick,o.themeDate];
+						
+						$("<li>", { 'class' : 'ui-body-'+tmp[0]}).html('<span>'+w.__('meridiem')[0]+'</span>').appendTo(hRow.find('ul'));
+						$("<li>", { 'class' : 'ui-body-'+tmp[1]}).html('<span>'+w.__('meridiem')[1]+'</span>').appendTo(hRow.find('ul'));
+						
+						if ( w.theDate.get(3) > 11 ) { testDate.clone().appendTo(hRow.find('ul')); }
+						for ( i=0; i<o.flen.a; i++ ) { testDate.clone().appendTo(hRow.find('ul')); }
+						
+						hRow.appendTo(ctrl);
+						break;
+				}
+			}
+			
+			$("<div>", {"class":uid+'flipcenter ui-overlay-shadow'}).css('pointerEvents', 'none').appendTo(w.d.intHTML);
+			
+			if ( o.useSetButton || o.useClearButton ) {
+				y = $('<div>', {'class':uid+'controls'});
+				
+				if ( o.useSetButton ) {
+					$('<a href="#">'+((o.mode==='flipbox')?w.__('setDateButtonLabel'):w.__('setTimeButtonLabel'))+'</a>')
+						.appendTo(y).buttonMarkup({theme: o.theme, icon: 'check', iconpos: 'left', corners:true, shadow:true})
+						.on(o.clickEventAlt, function(e) {
+							e.preventDefault();
+							if ( w.dateOK === true ) {
+								w.d.input.trigger('datebox', {'method':'set', 'value':w._formatter(w.__fmt(),w.theDate), 'date':w.theDate});
+								w.d.input.trigger('datebox', {'method':'close'});
+							}
+						});
+				}
+				if ( o.useClearButton ) {
+					$('<a href="#">'+w.__('clearButton')+'</a>')
+						.appendTo(y).buttonMarkup({theme: o.theme, icon: 'delete', iconpos: 'left', corners:true, shadow:true})
+						.on(o.clickEventAlt, function(e) {
+							e.preventDefault();
+							w.d.input.val('');
+							w.d.input.trigger('datebox',{'method':'clear'});
+							w.d.input.trigger('datebox',{'method':'close'});
+						});
+				}
+				if ( o.useCollapsedBut ) {
+					y.addClass('ui-datebox-collapse');
+				}
+				y.appendTo(w.d.intHTML);
+			}
+			
+			if ( w.wheelExists ) { // Mousewheel operation, if plugin is loaded
+				w.d.intHTML.on('mousewheel', '.ui-overlay-shadow', function(e,d) {
+					e.preventDefault();
+					w._offset($(this).jqmData('field'), ((d<0)?-1:1)*$(this).jqmData('amount'));
+				});
+			}
+			
+			w.d.intHTML.on(w.drag.eStart, 'ul', function(e,f) {
+				if ( !w.drag.move ) {
+					if ( typeof f !== "undefined" ) { e = f; }
+					w.drag.move = true;
+					w.drag.target = $(this).find('li').first();
+					w.drag.pos = parseInt(w.drag.target.css('marginTop').replace(/px/i, ''),10);
+					w.drag.start = w.touch ? e.originalEvent.changedTouches[0].pageY : e.pageY;
+					w.drag.end = false;
+					e.stopPropagation();
+					e.preventDefault();
+				}
+			});
+			
+			w.d.intHTML.on(w.drag.eStart, '.'+uid+'flipcenter', function(e) { // Used only on old browsers and IE.
+				if ( !w.drag.move ) {
+					w.drag.target = w.touch ? e.originalEvent.changedTouches[0].pageX - $(e.currentTarget).offset().left : e.pageX - $(e.currentTarget).offset().left;
+					w.drag.tmp = w.d.intHTML.find('.'+uid+'flipcenter').innerWidth() / (( $.inArray('a', w.fldOrder) > -1 && w.__('timeFormat') !== 12 )?w.fldOrder.length-1:w.fldOrder.length);
+					$(w.d.intHTML.find('ul').get(parseInt(w.drag.target / w.drag.tmp,10))).trigger(w.drag.eStart,e);
+				}
+			});
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._drag, {
+		'timeflipbox': function() {
+			this._drag.flipbox.apply(this);
+		},
+		'flipbox': function() {
+			var w = this,
+				o = this.options,
+				g = this.drag;
+			
+			$(document).on(g.eMove, function(e) {
+				if ( g.move && ( o.mode === 'flipbox' || o.mode === 'timeflipbox' )) {
+					g.end = w.touch ? e.originalEvent.changedTouches[0].pageY : e.pageY;
+					g.target.css('marginTop', (g.pos + g.end - g.start) + 'px');
+					e.preventDefault();
+					e.stopPropagation();
+					return false;
+				}
+			});
+			
+			$(document).on(g.eEnd, function(e) {
+				if ( g.move && (o.mode === 'flipbox' || o.mode === 'timeflipbox' )) {
+					g.move = false;
+					if ( g.end !== false ) {
+						e.preventDefault();
+						e.stopPropagation();
+						g.tmp = g.target.parent().parent();
+						w._offset(g.tmp.jqmData('field'), (parseInt((g.start - g.end) / g.target.innerHeight(),10) * g.tmp.jqmData('amount')));
+					}
+					g.start = false;
+					g.end = false;
+				}
+			});
+		}
+	});
+})( jQuery );
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.slidebox.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.slidebox.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jqm-datebox.mode.slidebox.js	(revision 101)
@@ -0,0 +1,225 @@
+/* 
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notification.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ */
+/* SLIDEBOX Mode */
+
+(function($) {
+	$.extend( $.mobile.datebox.prototype.options, {
+		themeDateHigh: 'b',
+		themeDatePick: 'b',
+		themeDate: 'a',
+		useSetButton: true,
+		validHours: false,
+		slen: {'y': 5, 'm':6, 'd':15, 'h':12, 'i':30}
+	});
+	$.extend( $.mobile.datebox.prototype, {
+		'_sbox_pos': function () {
+			var w = this, 
+				ech, top, par, tot;
+			
+			w.d.intHTML.find('div.ui-datebox-sliderow-int').each(function () {
+				ech = $(this);
+				par = ech.parent().innerWidth();
+				if ( w.__('isRTL') ) { 
+					top = ech.find('div').last(); 
+				} else {
+					top = ech.find('div').first();
+				}
+				tot = ech.find('div').size() * top.outerWidth();
+				top.css('marginLeft', ((tot/2)-(par/2))*-1);
+			});
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._build, {
+		'slidebox': function () {
+			var w = this,
+				o = this.options, i, y, hRow, phRow, tmp, testDate,
+				iDate = (w.d.input.val() === "") ? w._startOffset(w._makeDate(w.d.input.val())) : w._makeDate(w.d.input.val()),
+				uid = 'ui-datebox-',
+				thMod = (( this.options.mobVer < 140 ) ? 'up-' : ''),
+				slideBase = $("<div class='"+uid+"sliderow-int'></div>"),
+				phBase = $('<div>'),
+				ctrl = $("<div>", {"class":uid+'slide'});
+			
+			if ( typeof w.d.intHTML !== 'boolean' ) {
+				w.d.intHTML.empty().remove()
+			}
+			
+			w.d.input.on('datebox', function (e,p) {
+				if ( p.method === 'postrefresh' ) { w._sbox_pos(); }
+			});
+			
+			w.d.headerText = ((w._grabLabel() !== false)?w._grabLabel():w.__('titleDateDialogLabel'));
+			w.d.intHTML = $('<span>')
+			
+			w.fldOrder = w.__('slideFieldOrder');
+			w._check();
+			w._minStepFix();
+			
+			$('<div class="'+uid+'header"><h4>'+w._formatter(w.__('headerFormat'), w.theDate)+'</h4></div>').appendTo(w.d.intHTML);
+			
+			w.d.intHTML.append(ctrl);
+			
+			for ( y=0; y<w.fldOrder.length; y++ ) {
+				phRow = phBase.clone().jqmData('rowtype', w.fldOrder[y]);
+				hRow = slideBase.clone().jqmData('rowtype', w.fldOrder[y]).appendTo(phRow);
+				if ( w.__('isRTL') === true ) { hRow.css('direction', 'rtl'); }
+				
+				switch (w.fldOrder[y]) {
+					case 'y':
+						phRow.addClass(uid+'sliderow-ym');
+						for ( i=o.slen.y*-1; i<(o.slen.y+1); i++ ) {
+							tmp = (i!==0)?((iDate.get(0) === (w.theDate.get(0) + i))?o.themeDateHigh:o.themeDate):o.themeDatePick;
+							$('<div>', {'class':uid+'slideyear ui-corner-all ui-btn ui-btn-'+thMod+tmp})
+								.html(w.theDate.get(0)+i).jqmData('offset', i).jqmData('theme', tmp).appendTo(hRow);
+						}
+						break;
+					case 'm':
+						phRow.addClass(uid+'sliderow-ym');
+						for ( i=o.slen.m*-1; i<(o.slen.m+1); i++ ) {
+							testDate = w.theDate.copy([0],[0,0,1]);
+							testDate.adj(1,i);
+							tmp = (i!==0)?((iDate.get(1) === testDate.get(1) && iDate.get(0) === testDate.get(0))?o.themeDateHigh:o.themeDate):o.themeDatePick;
+							$('<div>', {'class':uid+'slidemonth ui-corner-all ui-btn ui-btn-'+thMod+tmp})
+								.html(String(w.__('monthsOfYearShort')[testDate.get(1)]))
+								.jqmData('offset', i)
+								.jqmData('theme', tmp).appendTo(hRow);
+						}
+						break;
+						
+					case 'd':
+						phRow.addClass(uid+'sliderow-d');
+						for ( i=o.slen.d*-1; i<(o.slen.d+1); i++ ) {
+							testDate = w.theDate.copy();
+							testDate.adj(2,i);
+							tmp = (i!==0)?((iDate.comp() === testDate.comp())?o.themeDateHigh:o.themeDate):o.themeDatePick;
+							if ( ( o.blackDates !== false && $.inArray(testDate.iso(), o.blackDates) > -1 ) ||
+								( o.blackDays !== false && $.inArray(testDate.getDay(), o.blackDays) > -1 ) ) {
+								tmp += ' '+uid+'griddate-disable';
+							}
+							$('<div>', {'class':uid+'slideday ui-corner-all ui-btn ui-btn-'+thMod+tmp})
+								.html(testDate.get(2) + '<br /><span class="'+uid+'slidewday">' + w.__('daysOfWeekShort')[testDate.getDay()] + '</span>')
+								.jqmData('offset', i).jqmData('theme', tmp).appendTo(hRow);
+						}
+						break;
+					case 'h':
+						phRow.addClass(uid+'sliderow-hi');
+						for ( i=o.slen.h*-1; i<(o.slen.h+1); i++ ) {
+							testDate = w.theDate.copy();
+							testDate.adj(3,i);
+							tmp = (i!==0)?o.themeDate:o.themeDatePick;
+							if ( o.validHours !== false && $.inArray(testDate.get(3), o.validHours) < 0 ) {
+								tmp += ' '+uid+'griddate-disable';
+							}
+							$('<div>', {'class':uid+'slidehour ui-corner-all ui-btn ui-btn-'+thMod+tmp})
+								.html( w.__('timeFormat') === 12 ? w._formatter('%I<span class="'+uid+'slidewday">%p</span>', testDate) : testDate.get(3) )
+								.jqmData('offset', i).jqmData('theme', tmp).appendTo(hRow);
+						}
+						break;
+					case 'i':
+						phRow.addClass(uid+'sliderow-hi');
+						for ( i=o.slen.i*-1; i<(o.slen.i+1); i++ ) {
+							testDate = w.theDate.copy();
+							testDate.adj(4,(i*o.minuteStep));
+							tmp = (i!==0)?o.themeDate:o.themeDatePick;
+							$('<div>', {'class':uid+'slidemins ui-corner-all ui-btn ui-btn-'+thMod+tmp})
+								.html(w._zPad(testDate.get(4))).jqmData('offset', i*o.minuteStep).jqmData('theme', tmp).appendTo(hRow);
+						}
+						break;
+				}
+				phRow.appendTo(ctrl);
+			}
+			
+			if ( o.useSetButton || o.useClearButton ) {
+				y = $('<div>', {'class':uid+'controls'});
+				
+				if ( o.useSetButton ) {
+					$('<a href="#">'+w.__('setDateButtonLabel')+'</a>')
+						.appendTo(y).buttonMarkup({theme: o.theme, icon: 'check', iconpos: 'left', corners:true, shadow:true})
+						.on(o.clickEventAlt, function(e) {
+							e.preventDefault();
+							if ( w.dateOK === true ) {
+								w.d.input.trigger('datebox', {'method':'set', 'value':w._formatter(w.__fmt(),w.theDate), 'date':w.theDate});
+								w.d.input.trigger('datebox', {'method':'close'});
+							}
+						});
+				}
+				if ( o.useClearButton ) {
+					$('<a href="#">'+w.__('clearButton')+'</a>')
+						.appendTo(y).buttonMarkup({theme: o.theme, icon: 'delete', iconpos: 'left', corners:true, shadow:true})
+						.on(o.clickEventAlt, function(e) {
+							e.preventDefault();
+							w.d.input.val('');
+							w.d.input.trigger('datebox',{'method':'clear'});
+							w.d.input.trigger('datebox',{'method':'close'});
+						});
+				}
+				if ( o.useCollapsedBut ) {
+					y.addClass('ui-datebox-collapse');
+				}
+				y.appendTo(w.d.intHTML);
+			}
+			
+			if ( w.wheelExists ) { // Mousewheel operation, if plugin is loaded
+				w.d.intHTML.on('mousewheel', '.ui-datebox-sliderow-int', function(e,d) {
+					e.preventDefault();
+					w._offset($(this).jqmData('rowtype'), ((d<0)?-1:1)*($(this).jqmData('rowtype')==='i'?o.minuteStep:1));
+				});
+			}
+			
+			w.d.intHTML.on(o.clickEvent, '.ui-datebox-sliderow-int>div', function(e) {
+				e.preventDefault();
+				w._offset($(this).parent().jqmData('rowtype'), parseInt($(this).jqmData('offset'),10));
+			});
+			w.d.intHTML.on('vmouseover vmouseout', '.ui-datebox-sliderow-int>div', function() {
+				w._hoover(this);
+			});
+			
+			w.d.intHTML.on(w.drag.eStart, '.ui-datebox-sliderow-int', function(e) {
+				if ( !w.drag.move ) {
+					w.drag.move = true;
+					w.drag.target = $(this);
+					w.drag.pos = parseInt(w.drag.target.css('marginLeft').replace(/px/i, ''),10);
+					w.drag.start = w.touch ? e.originalEvent.changedTouches[0].pageX : e.pageX;
+					w.drag.end = false;
+					e.stopPropagation();
+					e.preventDefault();
+				}
+			});
+		}
+	});
+	$.extend( $.mobile.datebox.prototype._drag, {
+		'slidebox': function() {
+			var w = this,
+				o = this.options,
+				g = this.drag;
+			
+			$(document).on(g.eMove, function(e) {
+				if ( g.move && o.mode === 'slidebox') {
+					g.end = w.touch ? e.originalEvent.changedTouches[0].pageX : e.pageX;
+					g.target.css('marginLeft', (g.pos + g.end - g.start) + 'px');
+					e.preventDefault();
+					e.stopPropagation();
+					return false;
+				}
+			});
+			
+			$(document).on(g.eEnd, function(e) {
+				if ( g.move && o.mode === 'slidebox' ) {
+					g.move = false;
+					if ( g.end !== false ) {
+						e.preventDefault();
+						e.stopPropagation();
+						g.tmp = g.target.find('div').first();
+						w._offset(g.target.jqmData('rowtype'), ( w.__('isRTL') ? -1 : 1 )*(parseInt((g.start - g.end) / g.tmp.innerWidth(),10))*(g.target.jqmData('rowtype')==='i'?o.minuteStep:1));
+					}
+					g.start = false;
+					g.end = false;
+				}
+			});
+		}
+	});
+})( jQuery );
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jquery.mobile.datebox.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jquery.mobile.datebox.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jqm-datebox/jquery.mobile.datebox.js	(revision 101)
@@ -0,0 +1,2394 @@
+/*
+ * jQuery Mobile Framework : plugin to provide a date and time picker.
+ * Copyright (c) JTSage
+ * CC 3.0 Attribution.  May be relicensed without permission/notification.
+ * https://github.com/jtsage/jquery-mobile-datebox
+ */
+
+(function($, undefined ) {
+	// We can greatly reduce some operations by adding to the date object.
+	Date.prototype.getISO = function () { return String(this.getFullYear()) + '-' + (( this.getMonth() < 9 ) ? "0" : "") + String(this.getMonth()+1) + '-' + ((this.getDate() < 10 ) ? "0" : "") + String(this.getDate()); };
+	Date.prototype.getComp = function () { return parseInt(this.getISO().replace(/-/g,''),10); }
+	Date.prototype.copy = function() { return this.copymod(); }
+	Date.prototype.copymod = function(adj,over) { 
+		if ( typeof adj === 'undefined' ) { adj = [0,0,0,0,0,0]; }
+		if ( typeof over === 'undefined' ) { over = [0,0,0,0,0,0]; }
+		while ( adj.length < 6 ) { adj.push(0); }
+		while ( over.length < 6 ) { over.push(0); }
+		return new Date(((over[0] > 0 ) ? over[0] : this.getFullYear() + adj[0]),((over[1] > 0 ) ? over[1] : this.getMonth() + adj[1]),((over[2] > 0 ) ? over[2] : this.getDate() + adj[2]),((over[3] > 0 ) ? over[3] : this.getHours() + adj[3]),((over[4] > 0 ) ? over[4] : this.getMinutes() + adj[4]),((over[5] > 0 ) ? over[5] : this.getSeconds() + adj[5]),0);
+	}
+	Date.prototype.getEpoch = function() { return (this.getTime() - this.getMilliseconds()) / 1000; }
+	Date.prototype.adjust = function (type, amount) {
+		switch (type) {
+			case 'y': this.setFullYear(this.getFullYear() + amount); break;
+			case 'm': this.setMonth(this.getMonth() + amount); break;
+			case 'd': this.setDate(this.getDate() + amount); break;
+			case 'h': this.setHours(this.getHours() + amount); break;
+			case 'i': this.setMinutes(this.getMinutes() + amount); break;
+			case 's': this.setSeconds(this.getSeconds() + amount); break;
+		}
+		return this.getTime();
+	}
+	
+  $.widget( "mobile.datebox", $.mobile.widget, {
+	options: {
+		// All widget options, including some internal runtime details
+		version: '1.0.1-2012022700', // jQMMajor.jQMMinor.DBoxMinor-YrMoDaySerial
+		theme: false,
+		defaultTheme: 'c',
+		pickPageTheme: 'b',
+		pickPageInputTheme: 'e',
+		pickPageButtonTheme: 'a',
+		pickPageHighButtonTheme: 'e',
+		pickPageOHighButtonTheme: 'e',
+		pickPageOAHighButtonTheme: 'e',
+		pickPageODHighButtonTheme: 'e',
+		pickPageTodayButtonTheme: 'e',
+		pickPageSlideButtonTheme: 'd',
+		pickPageFlipButtonTheme: 'b',
+		forceInheritTheme: false,
+		centerWindow: false,
+		calHighToday: true,
+		calHighPicked: true,
+		transition: 'pop',
+		noAnimation: false,
+		disableManualInput: false,
+		
+		disabled: false,
+		wheelExists: false,
+		swipeEnabled: true,
+		zindex: '500',
+		debug: false,
+		clickEvent: 'vclick',
+		numberInputEnhance: true,
+		internalInputType: 'text',
+		resizeListener: true,
+		
+		titleDialogLabel: false,
+		meridiemLetters: ['AM', 'PM'],
+		timeOutputOverride: false,
+		timeFormats: { '12': '%l:%M %p', '24': '%k:%M' },
+		durationFormat: 'DD ddd, hh:ii:ss',
+		timeOutput: false,
+		rolloverMode: { 'm': true, 'd': true, 'h': true, 'i': true, 's': true },
+		
+		mode: 'datebox',
+		calShowDays: true,
+		calShowOnlyMonth: false,
+		useDialogForceTrue: false,
+		useDialogForceFalse: true,
+		fullScreen: false,
+		fullScreenAlways: false,
+		useDialog: false,
+		useModal: false,
+		useInline: false,
+		useInlineBlind: false,
+		useClearButton: false,
+		collapseButtons: false,
+		noButtonFocusMode: false,
+		focusMode: false,
+		noButton: false,
+		noSetButton: false,
+		openCallback: false,
+		openCallbackArgs: [],
+		closeCallback: false,
+		closeCallbackArgs: [],
+		open: false,
+		nestedBox: false,
+		lastDuration: false,
+		
+		fieldsOrder: false,
+		fieldsOrderOverride: false,
+		durationOrder: ['d', 'h', 'i', 's'],
+		defaultDateFormat: '%Y-%m-%d',
+		dateFormat: false,
+		timeFormatOverride: false,
+		headerFormat: false,
+		dateOutput: false,
+		minuteStep: 1,
+		calTodayButton: false,
+		calWeekMode: false,
+		calWeekModeFirstDay: 1,
+		calWeekModeHighlight: true,
+		calStartDay: false,
+		defaultPickerValue: false,
+		defaultDate : false,    //this is deprecated and will be removed in the future versions (ok, may be not)
+		minYear: false,
+		maxYear: false,
+		afterToday: false,
+		beforeToday: false,
+		maxDays: false,
+		minDays: false,
+		highDays: false,
+		highDates: false,
+		highDatesAlt: false,
+		blackDays: false,
+		blackDates: false,
+		enableDates: false,
+		fixDateArrays: false,
+		durationSteppers: {'d': 1, 'h': 1, 'i': 1, 's': 1},
+		useLang: 'en',
+		lang: {
+			'en' : {
+				setDateButtonLabel: 'Set Date',
+				setTimeButtonLabel: 'Set Time',
+				setDurationButtonLabel: 'Set Duration',
+				calTodayButtonLabel: 'Jump to Today',
+				titleDateDialogLabel: 'Set Date',
+				titleTimeDialogLabel: 'Set Time',
+				daysOfWeek: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
+				daysOfWeekShort: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
+				monthsOfYear: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
+				monthsOfYearShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+				durationLabel: ['Days', 'Hours', 'Minutes', 'Seconds'],
+				durationDays: ['Day', 'Days'],
+				timeFormat: 24,
+				headerFormat: '%A, %B %-d, %Y',
+				tooltip: 'Open Date Picker',
+				nextMonth: 'Next Month',
+				prevMonth: 'Previous Month',
+				dateFieldOrder: ['m', 'd', 'y'],
+				timeFieldOrder: ['h', 'i', 'a'],
+				slideFieldOrder: ['y', 'm', 'd'],
+				dateFormat: '%Y-%m-%d',
+				useArabicIndic: false,
+				isRTL: false,
+				calStartDay: 0,
+				clearButton: 'Clear'
+			}
+		}
+	},
+	destroy: function () {
+		$(this.pickPage).remove();
+		$.Widget.prototype.destroy.call(this);
+	},
+	_dateboxHandler: function(event, payload) {
+		var widget = $(this).data('datebox');
+		// Handle all event triggers that have an internal effect
+		if ( ! event.isPropagationStopped() ) {
+			switch (payload.method) {
+				case 'close':
+					widget.close(payload.fromCloseButton);
+					break;
+				case 'open':
+					widget.open();
+					break;
+				case 'set':
+					$(this).val(payload.value);
+					$(this).trigger('change');
+					break;
+				case 'doset':
+					if ( $.inArray(widget.options.mode, ['timebox', 'durationbox', 'timeflipbox']) > -1 ) {
+						$(this).trigger('datebox', {'method':'set', 'value':widget._formatTime(widget.theDate), 'date':widget.theDate});
+					} else {
+						$(this).trigger('datebox', {'method':'set', 'value':widget._formatDate(widget.theDate), 'date':widget.theDate});
+					}
+					break;
+				case 'dooffset':
+					widget._offset(payload.type, payload.amount, true);
+					break;
+				case 'dorefresh':
+					widget._update();
+					break;
+				case 'doreset':
+					widget.hardreset();
+					break;
+				case 'doclear':
+					$(this).val('');
+					break;
+			}
+		} 
+	},
+	_getCoords: function(widget) {
+		var self = widget,
+			inputOffset   = widget.focusedEl.offset(),
+			inputHigh     = widget.focusedEl.outerHeight(),
+			inputWidth    = widget.focusedEl.outerWidth(),
+			docWinWidth   = $.mobile.activePage.width(),
+			docWinHighOff = $(window).scrollTop(),
+			docWinHigh    = $(window).height(),
+			diaWinWidth   = widget.pickerContent.innerWidth(),
+			diaWinHigh    = widget.pickerContent.outerHeight(),
+			pageitem      = false,
+			minTop        = 0, // Minimum TOP measurment (absolute)
+			padTop        = 0, // Padding for TOP measurment (fixed header)
+			unPadBottom   = 0, // Padding for BOTTOM measurement (fixed header)
+			maxBottom     = $(document).height(), // Max BOTTOM measurement (absolute)
+			
+			coords        = {
+				'high'    : $(window).height(),
+				'width'   : $.mobile.activePage.width(),
+				'fullTop' : $(window).scrollTop(),
+				'fullLeft': $(window).scrollLeft()
+			};
+			
+		if ( widget.options.centerWindow ) { // If it's centered, no need for lots of checks.
+			coords.winTop = docWinHighOff + (( docWinHigh / 2 ) - ( diaWinHigh / 2 ) );
+			coords.winLeft = (( docWinWidth / 2 ) - ( diaWinWidth / 2 ) );
+		} else {
+			pageitem = $('.ui-header', $.mobile.activePage);
+			if ( pageitem.length > 0 ) {
+				if ( pageitem.is('.ui-header-fixed')) {
+					padTop = ( pageitem.outerHeight() + 2 );
+				} else {
+					minTop += ( pageitem.outerHeight() + 2 );
+				}
+			}
+			pageitem = $('.ui-footer', $.mobile.activePage);
+			if ( pageitem.length > 0 ) {
+				if ( pageitem.is('.ui-footer-fixed')) {
+					unPadBottom = ( pageitem.outerHeight() + 2 );
+				} else {
+					maxBottom -= ( pageitem.outerHeight() + 2 );
+				}
+			}
+			coords.winLeft = (inputOffset.left + ( inputWidth / 2 )) - ( diaWinWidth / 2 );
+			
+			// Trap for small screens (center horizontally instead)
+			if ( docWinWidth < 450 ) {
+				coords.winLeft = (( docWinWidth / 2 ) - ( diaWinWidth / 2 ) );
+			}
+			
+			coords.winTop = (inputOffset.top + ( inputHigh / 2)) - ( diaWinHigh / 2 );
+			
+			// Not beyond bottom of page or on footer (not fixed)
+			if ( (coords.winTop + diaWinHigh) > maxBottom ) {
+				coords.winTop += ( maxBottom - ( coords.winTop + diaWinHigh ) );
+			}
+			
+			// Not on the footer either (but only if it floats)
+			if ( unPadBottom > 0 && (( coords.winTop + diaWinHigh - docWinHighOff ) > (docWinHigh - unPadBottom)) ) {
+				coords.winTop = (( docWinHigh - unPadBottom + docWinHighOff - diaWinHigh ));
+			}
+			// Not on the header (not fixed)
+			if ( coords.winTop < minTop ) { coords.winTop = minTop; }
+			
+			// Not on the floating header either (fixed)
+			if ( padTop > 0 && ( coords.winTop < ( docWinHighOff + padTop ) ) )  {
+				coords.winTop = docWinHighOff + padTop;
+			} else if ( docWinHighOff > minTop && docWinHighOff > coords.winTop ) {
+				// This one for non fixed scroll?
+				coords.winTop = docWinHighOff + 2;
+			}
+				
+		}
+		return coords;
+	},
+	_fixArray: function(arr) {
+		var x = 0,
+			self = this,
+			exp = new RegExp('^([0-9]+)-([0-9]+)-([0-9]+)$'),
+			matches = null;
+		
+		if ( $.isArray(arr) ) {
+			for ( x=0; x<arr.length; x++) {
+				matches = [0];
+				matches = exp.exec(arr[x]);
+				if ( matches.length === 4 ) {
+					arr[x] = matches[1] + '-' + self._zPad(parseInt(matches[2],10)) + '-' + self._zPad(parseInt(matches[3],10));
+				}
+			}
+		}
+		return arr;
+	},
+	_digitReplace: function(oper, direction) {
+		var start = 48,
+			end = 57,
+			adder = 1584,
+			i = null, 
+			ch = null,
+			newd = '';
+			
+		if ( direction === -1 ) {
+			start += adder;
+			end += adder;
+			adder = -1584;
+		}
+		
+		for ( i=0; i<oper.length; i++ ) {
+			ch = oper.charCodeAt(i);
+			if ( ch >= start && ch <= end ) {
+				newd = newd + String.fromCharCode(ch+adder);
+			} else {
+				newd = newd + String.fromCharCode(ch);
+			}
+		}
+		
+		return newd;
+	},
+	_makeDisplayIndic: function() {
+		var self = this,
+			o = this.options;
+			
+		self.pickerContent.find('*').each(function() {
+			if ( $(this).children().length < 1 ) {
+				$(this).text(self._digitReplace($(this).text()));
+			} else if ( $(this).hasClass('ui-datebox-slideday') ) {
+				$(this).html(self._digitReplace($(this).html()));
+			}
+		});
+		self.pickerContent.find('input').each(function() {
+			$(this).val(self._digitReplace($(this).val()));
+		});
+	},
+	_zPad: function(number) {
+		// Pad a number with a zero, to make it 2 digits
+		return ( ( number < 10 ) ? "0" : "" ) + String(number);
+	},
+	_makeOrd: function (num) {
+		// Return an ordinal suffix (1st, 2nd, 3rd, etc)
+		var ending = num % 10;
+		if ( num > 9 && num < 21 ) { return 'th'; }
+		if ( ending > 3 ) { return 'th'; }
+		return ['th','st','nd','rd'][ending];
+	},
+	_isInt: function (s) {
+		// Bool, return is a number is an integer
+		return (s.toString().search(/^[0-9]+$/) === 0);
+	},
+	_getFirstDay: function(date) {
+		// Get the first DAY of the month (0-6)
+		return date.copymod([0],[0,0,1]).getDay();
+	},
+	_getRecDays: function(year, month, day) {
+		// Get the recurring Days of a week for 'year'-'month'
+		// (pass nulls for whatever the internal year and month are)
+		if ( month === null ) { month = this.theDate.getMonth()+1; }
+		if ( year === null ) { year = this.theDate.getFullYear(); }
+		
+		var self = this,
+			tempDate = new Date(year, month-1, 1, 0, 0, 0, 0),
+			dates = [], i;
+		
+		if ( tempDate.getDay() > day ) {
+			tempDate.setDate(8 - (tempDate.getDay() - day));
+		} else if ( tempDate.getDay() < day ) {
+			tempDate.setDate(1 + (day - tempDate.getDay()));
+		}
+		
+		dates[0] = tempDate.getISO();
+		
+		for ( i = 1; i<6; i++ ) {
+			tempDate.setDate(tempDate.getDate() + 7);
+			if ( (tempDate.getMonth()+1) === month ) {
+				dates[i] = tempDate.getISO();
+			}
+		}
+		
+		return dates;
+	},
+	_getLastDate: function(date) {
+		// Get the last DATE of the month (28,29,30,31)
+		return 32 - date.copymod([0],[0,0,32,13]).getDate();
+	},
+	_getLastDateBefore: function(date) {
+		// Get the last DATE of the PREVIOUS month (28,29,30,31)
+		return 32 - date.copymod([0,-1],[0,0,32,13]).getDate();
+	},
+	_formatter: function(format, date) {
+		var self = this,
+			o = this.options;
+		// Format the output date or time (not duration)
+		if ( ! format.match(/%/) ) {
+			format = format.replace('HH',   this._zPad(date.getHours()));
+			format = format.replace('GG',   date.getHours());
+			
+			format = format.replace('hh',   this._zPad(((date.getHours() === 0 || date.getHours() === 12)?12:((date.getHours()<12)?date.getHours():date.getHours()-12))));
+			format = format.replace('gg',   ((date.getHours() === 0 || date.getHours() === 12)?12:((date.getHours()<12)?date.getHours():(date.getHours()-12))));
+	
+			format = format.replace('ii',   this._zPad(date.getMinutes()));
+			format = format.replace('ss',   this._zPad(date.getSeconds()));
+			format = format.replace('AA',   ((date.getHours() < 12)?this.options.meridiemLetters[0].toUpperCase():this.options.meridiemLetters[1].toUpperCase()));
+			format = format.replace('aa',   ((date.getHours() < 12)?this.options.meridiemLetters[0].toLowerCase():this.options.meridiemLetters[1].toLowerCase()));
+			
+			format = format.replace('SS',   this._makeOrd(date.getDate()));
+			format = format.replace('YYYY', date.getFullYear());
+			format = format.replace('mmmm', this.options.lang[this.options.useLang].monthsOfYearShort[date.getMonth()] );
+			format = format.replace('mmm',  this.options.lang[this.options.useLang].monthsOfYear[date.getMonth()] );
+			format = format.replace('MM',   this._zPad(date.getMonth() + 1));
+			format = format.replace('mm',   date.getMonth() + 1);
+			format = format.replace('dddd', this.options.lang[this.options.useLang].daysOfWeekShort[date.getDay()] );
+			format = format.replace('ddd',  this.options.lang[this.options.useLang].daysOfWeek[date.getDay()] );
+			format = format.replace('DD',   this._zPad(date.getDate()));
+			format = format.replace('dd',   date.getDate());
+			format = format.replace('UU',   date.getEpoch());
+		} else {
+			format = format.replace(/%(0|-)*([a-z])/gi, function(match, pad, oper, offset, s) {
+				switch ( oper ) {
+					case '%': // Literal %
+						return '%';
+					case 'a': // Short Day
+						return o.lang[o.useLang].daysOfWeekShort[date.getDay()];
+					case 'A': // Full Day of week
+						return o.lang[o.useLang].daysOfWeek[date.getDay()];
+					case 'b': // Short month
+						return o.lang[o.useLang].monthsOfYearShort[date.getMonth()];
+					case 'B': // Full month
+						return o.lang[o.useLang].monthsOfYear[date.getMonth()];
+					case 'C': // Century
+						return date.getFullYear().toString().substr(0,2);
+					case 'd': // Day of month
+						return (( pad === '-' ) ? date.getDate() : self._zPad(date.getDate()));
+					case 'H': // Hour (01..23)
+					case 'k':
+						return (( pad === '-' ) ? date.getHours() : self._zPad(date.getHours()));
+					case 'I': // Hour (01..12)
+					case 'l':
+						return (( pad === '-' ) ? ((date.getHours() === 0 || date.getHours() === 12)?12:((date.getHours()<12)?date.getHours():(date.getHours()-12))) : self._zPad(((date.getHours() === 0 || date.getHours() === 12)?12:((date.getHours()<12)?date.getHours():date.getHours()-12))));
+					case 'm': // Month
+						return (( pad === '-' ) ? date.getMonth()+1 : self._zPad(date.getMonth()+1));
+					case 'M': // Minutes
+						return (( pad === '-' ) ? date.getMinutes() : self._zPad(date.getMinutes()));
+					case 'p': // AM/PM (ucase)
+						return ((date.getHours() < 12)?o.meridiemLetters[0].toUpperCase():o.meridiemLetters[1].toUpperCase());
+					case 'P': // AM/PM (lcase)
+						return ((date.getHours() < 12)?o.meridiemLetters[0].toLowerCase():o.meridiemLetters[1].toLowerCase());
+					case 's': // Unix Seconds
+						return date.getEpoch;
+					case 'S': // Seconds
+						return (( pad === '-' ) ? date.getSeconds() : self._zPad(date.getSeconds()));
+					case 'w': // Day of week
+						return date.getDay();
+					case 'y': // Year (2 digit)
+						return date.getFullYear().toString().substr(2,2);
+					case 'Y': // Year (4 digit)
+						return date.getFullYear();
+					case 'o': // Ordinals
+						return self._makeOrd(date.getDate());
+					default:
+						return match;
+				}
+			});
+		}
+		
+		if ( this.options.lang[this.options.useLang].useArabicIndic === true ) {
+			format = this._digitReplace(format);
+		}
+		
+		return format;
+	},
+	_formatHeader: function(date) {
+		// Shortcut function to return headerFormat date/time format
+		if ( this.options.headerFormat !== false ) {
+			return this._formatter(this.options.headerFormat, date);
+		} else {
+			return this._formatter(this.options.lang[this.options.useLang].headerFormat, date);
+		}
+	},
+	_formatDate: function(date) {
+		// Shortcut function to return dateFormat date/time format
+		return this._formatter(this.options.dateOutput, date);
+	},
+	_formatTime: function(date) {
+		// Shortcut to return formatted time, also handles duration
+		var self = this,
+			dur_collapse = [false,false,false], adv, exp_format, i, j,
+			format = this.options.durationFormat,
+			dur_comps = [0,0,0,0];
+			
+		if ( this.options.mode === 'durationbox' ) {
+			adv = this.options.durationFormat;
+			adv = adv.replace(/ddd/g, '.+?');
+			adv = adv.replace(/DD|ss|hh|ii/g, '([0-9Dhis]+)');
+			adv = new RegExp('^' + adv + '$');
+			exp_format = adv.exec(this.options.durationFormat);
+			
+			i = self.theDate.getEpoch() - self.initDate.getEpoch(); j = i;
+			
+			dur_comps[0] = parseInt( i / (60*60*24),10); i = i - (dur_comps[0]*60*60*24); // Days
+			dur_comps[1] = parseInt( i / (60*60),10); i = i - (dur_comps[1]*60*60); // Hours
+			dur_comps[2] = parseInt( i / (60),10); i = i - (dur_comps[2]*60); // Minutes
+			dur_comps[3] = i; // Seconds
+			
+			if ( ! exp_format[0].match(/DD/) ) { dur_collapse[0] = true; dur_comps[1] = dur_comps[1] + (dur_comps[0]*24);}
+			if ( ! exp_format[0].match(/hh/) ) { dur_collapse[1] = true; dur_comps[2] = dur_comps[2] + (dur_comps[1]*60);}
+			if ( ! exp_format[0].match(/ii/) ) { dur_collapse[2] = true; dur_comps[3] = dur_comps[3] + (dur_comps[2]*60);}
+			
+			format = format.replace('DD', dur_comps[0]);
+			format = format.replace('ddd', ((dur_comps[0] > 1)?this.options.lang[this.options.useLang].durationDays[1]:this.options.lang[this.options.useLang].durationDays[0]));
+			format = format.replace('hh', self._zPad(dur_comps[1]));
+			format = format.replace('ii', self._zPad(dur_comps[2]));
+			format = format.replace('ss', self._zPad(dur_comps[3]));
+			
+			if ( this.options.lang[this.options.useLang].useArabicIndic === true ) {
+				return this._digitReplace(format);
+			} else {
+				return format;
+			}
+		} else {
+			return this._formatter(self.options.timeOutput, date);
+		}
+	},
+	_makeDate: function (str) {
+		// Date Parser
+		str = $.trim(str);
+		var o = this.options,
+			self = this,
+			adv = null,
+			exp_input = null,
+			exp_format = null,
+			exp_temp = null,
+			date = new Date(),
+			dur_collapse = [false,false,false],
+			found_date = [date.getFullYear(),date.getMonth(),date.getDate(),date.getHours(),date.getMinutes(),date.getSeconds(),0],
+			i;
+			
+		if ( o.lang[this.options.useLang].useArabicIndic === true ) {
+			str = this._digitReplace(str, -1);
+		}
+
+		if ( o.mode === 'durationbox' ) {
+			adv = o.durationFormat;
+			adv = adv.replace(/ddd/g, '.+?');
+			adv = adv.replace(/DD|ss|hh|ii/g, '([0-9Dhis]+)');
+			adv = new RegExp('^' + adv + '$');
+			exp_input = adv.exec(str);
+			exp_format = adv.exec(o.durationFormat);
+			
+			if ( exp_input === null || exp_input.length !== exp_format.length ) {
+				if ( typeof o.defaultPickerValue === "number" && o.defaultPickerValue > 0 ) {
+					return new Date((self.initDate.getEpoch() + parseInt(o.defaultPickerValue,10))*1000);
+				} else {
+					return new Date(self.initDate.getTime());
+				}
+			} else {
+				exp_temp = self.initDate.getEpoch();
+				for ( i=0; i<exp_input.length; i++ ) { //0y 1m 2d 3h 4i 5s
+					if ( exp_format[i].match(/^DD$/i) )   { exp_temp = exp_temp + (parseInt(exp_input[i],10)*60*60*24); }
+					if ( exp_format[i].match(/^hh$/i) )   { exp_temp = exp_temp + (parseInt(exp_input[i],10)*60*60); }
+					if ( exp_format[i].match(/^ii$/i) )   { exp_temp = exp_temp + (parseInt(exp_input[i],10)*60); }
+					if ( exp_format[i].match(/^ss$/i) )   { exp_temp = exp_temp + (parseInt(exp_input[i],10)); }
+				}
+				return new Date((exp_temp*1000));
+			}
+		} else {
+			if ( o.mode === 'timebox' || o.mode === 'timeflipbox' ) { adv = o.timeOutput; } else { adv = o.dateOutput; }
+			if ( adv.match(/%/) ) {
+				adv = adv.replace(/%(0|-)*([a-z])/gi, function(match, pad, oper, offset, s) {
+					switch (oper) {
+						case 'p':
+						case 'P':
+						case 'b':
+						case 'B': return '(' + match + '|' +'.+?' + ')';
+						case 'H':
+						case 'k':
+						case 'I':
+						case 'l':
+						case 'm':
+						case 'M':
+						case 'S':
+						case 'd': return '(' + match + '|' + (( pad === '-' ) ? '[0-9]{1,2}' : '[0-9]{2}') + ')';
+						case 's': return '(' + match + '|' +'[0-9]+' + ')';
+						case 'y': return '(' + match + '|' +'[0-9]{2}' + ')';
+						case 'Y': return '(' + match + '|' +'[0-9]{1,4}' + ')';
+						default: return '.+?';
+					}
+				});
+				adv = new RegExp('^' + adv + '$');
+				exp_input = adv.exec(str);
+				if ( o.mode === 'timebox' || o.mode === 'timeflipbox' ) {
+					exp_format = adv.exec(o.timeOutput); // If time, use timeOutput as expected format
+				} else {
+					exp_format = adv.exec(o.dateOutput); // If date, use dateFormat as expected format
+				}
+				
+				if ( exp_input === null || exp_input.length !== exp_format.length ) {
+					if ( o.defaultPickerValue !== false ) {
+						if ( $.isArray(o.defaultPickerValue) && o.defaultPickerValue.length === 3 ) {
+							if ( o.mode === 'timebox' || o.mode === 'timeflipbox' ) {
+								return new Date(found_date[0], found_date[1], found_date[2], o.defaultPickerValue[0], o.defaultPickerValue[1], o.defaultPickerValue[2], 0);
+							}
+							else {
+								return new Date(o.defaultPickerValue[0], o.defaultPickerValue[1], o.defaultPickerValue[2], 0, 0, 0, 0);
+							}
+						}
+						else if ( typeof o.defaultPickerValue === "number" ) {
+							return new Date(o.defaultPickerValue * 1000);
+						}
+						else {
+							if ( o.mode === 'timebox' || o.mode === 'timeflipbox' ) {
+								exp_temp = o.defaultPickerValue.split(':');
+								if ( exp_temp.length === 3 ) {
+									date = new Date(found_date[0], found_date[1], found_date[2], parseInt(exp_temp[0],10),parseInt(exp_temp[1],10),parseInt(exp_temp[2],10),0);
+									if ( isNaN(date.getDate()) ) { date = new Date(); }
+								}
+							}
+							else {
+								exp_temp = o.defaultPickerValue.split('-');
+								if ( exp_temp.length === 3 ) {
+									date = new Date(parseInt(exp_temp[0],10),parseInt(exp_temp[1],10)-1,parseInt(exp_temp[2],10),0,0,0,0);
+									if ( isNaN(date.getDate()) ) { date = new Date(); }
+								}
+							}
+						}
+					}
+				} else {
+					for ( i=0; i<exp_input.length; i++ ) { //0y 1m 2d 3h 4i 5a 6epoch
+						if ( exp_format[i] === '%s' )                { found_date[6] = parseInt(exp_input[i],10); }
+						if ( exp_format[i].match(/^%.*S$/) )         { found_date[5] = parseInt(exp_input[i],10); }
+						if ( exp_format[i].match(/^%.*M$/) )         { found_date[4] = parseInt(exp_input[i],10); }
+						if ( exp_format[i].match(/^%.*(H|k|I|l)$/) ) { found_date[3] = parseInt(exp_input[i],10); }
+						if ( exp_format[i].match(/^%.*d$/) )         { found_date[2] = parseInt(exp_input[i],10); }
+						if ( exp_format[i].match(/^%.*m$/) )         { found_date[1] = parseInt(exp_input[i],10)-1; }
+						if ( exp_format[i].match(/^%.*Y$/) )         { found_date[0] = parseInt(exp_input[i],10); }
+						if ( exp_format[i].match(/^%.*y$/) ) { 
+							if ( o.afterToday === true ) {
+								found_date[0] = parseInt('20' + exp_input[i],10);
+							} else {
+								if ( parseInt(exp_input[i],10) < 38 ) {
+									found_date[0] = parseInt('20' + exp_input[i],10);
+								} else {
+									found_date[0] = parseInt('19' + exp_input[i],10);
+								}
+							}
+						}
+						if ( exp_format[i].match(/^%(0|-)*(p|P)$/) ) {
+							if ( exp_input[i].toLowerCase().charAt(0) === 'a' && found_date[3] === 12 ) {
+								found_date[3] = 0;
+							} else if ( exp_input[i].toLowerCase().charAt(0) === 'p' && found_date[3] !== 12 ) {
+								found_date[3] = found_date[3] + 12;
+							}
+						}
+						if ( exp_format[i] === '%B' ) {
+							exp_temp = $.inArray(exp_input[i], o.lang[o.useLang].monthsOfYear);
+							if ( exp_temp > -1 ) { found_date[1] = exp_temp; }
+						}
+						if ( exp_format[i] === '%b' ) {
+							exp_temp = $.inArray(exp_input[i], o.lang[o.useLang].monthsOfYearShort);
+							if ( exp_temp > -1 ) { found_date[1] = exp_temp; }
+						}
+					}
+				}
+				if ( exp_format[0].match(/%s/) ) {
+					date = new Date(found_date[6] * 1000);
+				}
+				else if ( exp_format[0].match(/%(.)*(I|l|H|k|s|M)/) ) { 
+					date = new Date(found_date[0], found_date[1], found_date[2], found_date[3], found_date[4], found_date[5], 0);
+					if ( found_date[0] < 100 ) { date.setFullYear(found_date[0]); }
+				} else {
+					date = new Date(found_date[0], found_date[1], found_date[2], 0, 0, 0, 0); // Normalize time for raw dates
+					if ( found_date[0] < 100 ) { date.setFullYear(found_date[0]); }
+				}
+				return date;
+			} else {
+				adv = adv.replace(/dddd|mmmm/g, '(.+?)');
+				adv = adv.replace(/ddd|SS/g, '.+?');
+				adv = adv.replace(/mmm/g, '(.+?)');
+				adv = adv.replace(/ *AA/ig, ' *(.*?)');
+				adv = adv.replace(/yyyy|dd|mm|gg|hh|ii/ig, '([0-9yYdDmMgGhHi]+)');
+				adv = adv.replace(/ss|UU/g, '([0-9sU]+)');
+				adv = new RegExp('^' + adv + '$');
+				exp_input = adv.exec(str);
+				if ( o.mode === 'timebox' || o.mode === 'timeflipbox' ) {
+					exp_format = adv.exec(o.timeOutput); // If time, use timeOutput as expected format
+				} else {
+					exp_format = adv.exec(o.dateOutput); // If date, use dateFormat as expected format
+				}
+				
+				if ( exp_input === null || exp_input.length !== exp_format.length ) {
+					if ( o.defaultPickerValue !== false ) {
+						if ( $.isArray(o.defaultPickerValue) && o.defaultPickerValue.length === 3 ) {
+							if ( o.mode === 'timebox' || o.mode === 'timeflipbox' ) {
+								return new Date(found_date[0], found_date[1], found_date[2], o.defaultPickerValue[0], o.defaultPickerValue[1], o.defaultPickerValue[2], 0);
+							}
+							else {
+								return new Date(o.defaultPickerValue[0], o.defaultPickerValue[1], o.defaultPickerValue[2], 0, 0, 0, 0);
+							}
+						}
+						else if ( typeof o.defaultPickerValue === "number" ) {
+							return new Date(o.defaultPickerValue * 1000);
+						}
+						else {
+							if ( o.mode === 'timebox' || o.mode === 'timeflipbox' ) {
+								exp_temp = o.defaultPickerValue.split(':');
+								if ( exp_temp.length === 3 ) {
+									date = new Date(found_date[0], found_date[1], found_date[2], parseInt(exp_temp[0],10),parseInt(exp_temp[1],10),parseInt(exp_temp[2],10),0);
+									if ( isNaN(date.getDate()) ) { date = new Date(); }
+								}
+							}
+							else {
+								exp_temp = o.defaultPickerValue.split('-');
+								if ( exp_temp.length === 3 ) {
+									date = new Date(parseInt(exp_temp[0],10),parseInt(exp_temp[1],10)-1,parseInt(exp_temp[2],10),0,0,0,0);
+									if ( isNaN(date.getDate()) ) { date = new Date(); }
+								}
+							}
+						}
+					}
+				} else {
+					for ( i=0; i<exp_input.length; i++ ) { //0y 1m 2d 3h 4i 5a 6epoch
+						if ( exp_format[i].match(/^UU$/ ) )   { found_date[6] = parseInt(exp_input[i],10); }
+						if ( exp_format[i].match(/^gg$/i) )   { found_date[3] = parseInt(exp_input[i],10); }
+						if ( exp_format[i].match(/^hh$/i) )   { found_date[3] = parseInt(exp_input[i],10); }
+						if ( exp_format[i].match(/^ii$/i) )   { found_date[4] = parseInt(exp_input[i],10); }
+						if ( exp_format[i].match(/^ss$/ ) )   { found_date[5] = parseInt(exp_input[i],10); }
+						if ( exp_format[i].match(/^dd$/i) )   { found_date[2] = parseInt(exp_input[i],10); }
+						if ( exp_format[i].match(/^mm$/i) )   { found_date[1] = parseInt(exp_input[i],10)-1; }
+						if ( exp_format[i].match(/^yyyy$/i) ) { found_date[0] = parseInt(exp_input[i],10); }
+						if ( exp_format[i].match(/^AA$/i) )   { 
+							if ( exp_input[i].toLowerCase().charAt(0) === 'a' && found_date[3] === 12 ) {
+								found_date[3] = 0;
+							} else if ( exp_input[i].toLowerCase().charAt(0) === 'p' && found_date[3] !== 12 ) {
+								found_date[3] = found_date[3] + 12;
+							}
+						}
+						if ( exp_format[i].match(/^mmm$/i) )  { 
+							exp_temp = $.inArray(exp_input[i], o.lang[o.useLang].monthsOfYear);
+							if ( exp_temp > -1 ) { found_date[1] = exp_temp; }
+						}
+						if ( exp_format[i].match(/^mmmm$/i) )  { 
+							exp_temp = $.inArray(exp_input[i], o.lang[o.useLang].monthsOfYearShort);
+							if ( exp_temp > -1 ) { found_date[1] = exp_temp; }
+						}
+					}
+				}
+				if ( exp_format[0].match(/UU/) ) {
+					return new Date(found_date[6] * 1000);
+				}
+				else if ( exp_format[0].match(/G|g|i|s|H|h|A/) ) { 
+					return new Date(found_date[0], found_date[1], found_date[2], found_date[3], found_date[4], found_date[5], 0);
+				} else {
+					return new Date(found_date[0], found_date[1], found_date[2], 0, 0, 0, 0); // Normalize time for raw dates
+				}
+			}
+		}
+	},
+	_hoover: function(item) {
+		// Hover toggle class, for calendar
+		$(item).toggleClass('ui-btn-up-'+$(item).jqmData('theme')+' ui-btn-down-'+$(item).jqmData('theme'));
+	},
+	_offset: function(mode, amount, update) {
+		// Compute a date/time offset.
+		//   update = false to prevent controls refresh
+		var self = this,
+			o = this.options,
+			ok = false;
+			
+		if ( typeof(update) === "undefined" ) { update = true; }
+		self.input.trigger('datebox', {'method':'offset', 'type':mode, 'amount':amount});
+		switch(mode) {
+			case 'y': ok = true; break;
+			case 'm':
+				if ( o.rolloverMode.m || ( self.theDate.getMonth() + amount < 12 && self.theDate.getMonth() + amount > -1 ) ) {
+					ok = true;
+				}
+				break;
+			case 'd':
+				if ( o.rolloverMode.d || (
+					self.theDate.getDate() + amount > 0 &&
+					self.theDate.getDate() + amount < (self._getLastDate(self.theDate) + 1) ) ) {
+						ok = true;
+				}
+				break;
+			case 'h':
+				if ( o.rolloverMode.h || (
+					self.theDate.getHours() + amount > -1 &&
+					self.theDate.getHours() + amount < 24 ) ) {
+						ok = true;
+				}
+				break;
+			case 'i':
+				if ( o.rolloverMode.i || (
+					self.theDate.getMinutes() + amount > -1 &&
+					self.theDate.getMinutes() + amount < 60 ) ) {
+						ok = true;
+				}
+				break;
+			case 's':
+				if ( o.rolloverMode.s || (
+					self.theDate.getSeconds() + amount > -1 &&
+					self.theDate.getSeconds() + amount < 60 ) ) {
+						ok = true;
+				}
+				break;
+			case 'a':
+				if ( self.pickerMeri.val() === o.meridiemLetters[0] ) { 
+					self._offset('h',12,false);
+				} else {
+					self._offset('h',-12,false);
+				}
+				break;
+		}
+		if ( ok === true ) { self.theDate.adjust(mode,amount); }
+		if ( update === true ) { self._update(); }
+	},
+	_updateduration: function() {
+		// Update the duration contols when inputs are directly edited.
+		var self = this,
+			secs = self.initDate.getEpoch();
+		
+		if ( !self._isInt(self.pickerDay.val())  ) { self.pickerDay.val(0); }
+		if ( !self._isInt(self.pickerHour.val()) ) { self.pickerHour.val(0); }
+		if ( !self._isInt(self.pickerMins.val()) ) { self.pickerMins.val(0); }
+		if ( !self._isInt(self.pickerSecs.val()) ) { self.pickerSecs.val(0); }
+		
+		secs = secs + (parseInt(self.pickerDay.val(),10) * 60 * 60 * 24);
+		secs = secs + (parseInt(self.pickerHour.val(),10) * 60 * 60);
+		secs = secs + (parseInt(self.pickerMins.val(),10) * 60);
+		secs = secs + (parseInt(self.pickerSecs.val(),10));
+		self.theDate.setTime( secs * 1000 );
+		self._update();
+	},
+	_checkConstraints: function() {
+		var self = this,
+			testDate = null,
+			o = this.options;
+		
+		self.dateOK = true;
+		
+		if ( o.afterToday !== false ) {
+			testDate = new Date();
+			if ( self.theDate < testDate ) { self.theDate = testDate; }
+		}
+		if ( o.beforeToday !== false ) {
+			testDate = new Date();
+			if ( self.theDate > testDate ) { self.theDate = testDate; }
+		}
+		if ( o.maxDays !== false ) {
+			testDate = new Date();
+			testDate.adjust('d', o.maxDays);
+			if ( self.theDate > testDate ) { self.theDate = testDate; }
+		}
+		if ( o.minDays !== false ) {
+			testDate = new Date();
+			testDate.adjust('d', -1*o.minDays);
+			if ( self.theDate < testDate ) { self.theDate = testDate; }
+		}
+		if ( o.maxYear !== false ) {
+			testDate = new Date(o.maxYear, 0, 1);
+			testDate.adjust('d', -1);
+			if ( self.theDate > testDate ) { self.theDate = testDate; }
+		}
+		if ( o.minYear !== false ) {
+			testDate = new Date(o.minYear, 0, 1);
+			if ( self.theDate < testDate ) { self.theDate = testDate; }
+		}
+		if ( o.blackDates !== false ) {
+			if ( $.inArray(self.theDate.getISO(), o.blackDates) > -1 ) { self.dateOK = false; }
+		}
+		if ( o.blackDays !== false ) {
+			if ( $.inArray(self.theDate.getDay(), o.blackDays) > -1 ) { self.dateOK = false; }
+		}
+		if ( $.inArray(o.mode, ['timebox','durationbox','timeflipbox']) > -1 ) { self.dateOK = true; }
+	},
+	_orientChange: function(e) {
+		var self = e.data.widget,
+			o = e.data.widget.options,
+			coords = e.data.widget._getCoords(e.data.widget); // Get the coords now, since we need em.
+		
+		e.stopPropagation();
+		if ( ! self.pickerContent.is(':visible') || o.useDialog === true ) { 
+			return false;  // Not open, or in a dialog (let jQM do it)
+		} else {
+			if ( o.fullScreen == true && ( coords.width < 400 || o.fullScreenForce === true ) ) {
+				self.pickerContent.css({'top': coords.fullTop, 'left': coords.fullLeft, 'height': coords.high, 'width': coords.width, 'maxWidth': coords.width });
+			} else {
+				self.pickerContent.css({'top': coords.winTop, 'left': coords.winLeft});
+			}
+		}
+	},
+	_update: function() {
+		// Update the display on date change
+		var self = this,
+			o = self.options, 
+			testDate = null,
+			i, gridWeek, gridDay, skipThis, thisRow, y, cTheme, inheritDate, thisPRow, tmpVal, disVal,
+			interval = {'d': 60*60*24, 'h': 60*60, 'i': 60, 's':1},
+			calmode = {};
+			
+		self.input.trigger('datebox', {'method':'refresh'});
+		/* BEGIN:DURATIONBOX */
+		if ( o.mode === 'durationbox' ) {
+			i = self.theDate.getEpoch() - self.initDate.getEpoch();
+			if ( i<0 ) { i = 0; self.theDate.setTime(self.initDate.getTime()); }
+			o.lastDuration = i; // Let the number of seconds be sort of public.
+			
+			/* DAYS */
+			y = parseInt( i / interval.d,10); 
+			i = i - ( y * interval.d ); 
+			self.pickerDay.val(y);
+			
+			/* HOURS */
+			y = parseInt( i / interval.h, 10);
+			i = i - ( y * interval.h );
+			self.pickerHour.val(y);
+			
+			/* MINS AND SECS */
+			y = parseInt( i / interval.i, 10);
+			i = i - ( y * interval.i); 
+			self.pickerMins.val(y);
+			self.pickerSecs.val(parseInt(i,10));
+		}
+		/* END:DURATIONBOX */
+		/* BEGIN:TIMEBOX */
+		if ( o.mode === 'timebox' ) {
+			if ( o.minuteStep !== 1 ) {
+				i = self.theDate.getMinutes() % o.minuteStep;
+				if ( i !== 0 ) { self.theDate.adjust('m', -1*i); }
+			}
+			self.pickerMins.val(self._zPad(self.theDate.getMinutes()));
+			if ( o.lang[o.useLang].timeFormat === 12 || o.timeFormatOverride === 12 ) { // Handle meridiems
+				if ( self.theDate.getHours() > 11 ) {
+					self.pickerMeri.val(o.meridiemLetters[1]);
+					if ( self.theDate.getHours() === 12 ) {
+						self.pickerHour.val(12);
+					} else {
+						self.pickerHour.val(self.theDate.getHours() - 12);
+					}
+				} else {
+					self.pickerMeri.val(o.meridiemLetters[0]);
+					if ( self.theDate.getHours() === 0 ) {
+						self.pickerHour.val(12);
+					} else {
+						self.pickerHour.val(self.theDate.getHours());
+					}
+				}
+			} else {
+				self.pickerHour.val(self.theDate.getHours());
+			}
+		}
+		/* END:TIMEBOX */
+		/* BEGIN:FLIPBOX */
+		if ( o.mode === 'flipbox' || o.mode === 'timeflipbox' ) {
+			self._checkConstraints();
+			
+			inheritDate = self._makeDate(self.input.val());
+			
+			self.controlsHeader.empty().html( self._formatHeader(self.theDate) );
+			
+			for ( y=0; y<o.fieldsOrder.length; y++ ) {
+				tmpVal = true;
+				switch (o.fieldsOrder[y]) {
+					case 'y':
+						thisRow = self.pickerYar.find('ul');
+						thisRow.empty();
+						for ( i=-15; i<16; i++ ) {
+							cTheme = ((inheritDate.getFullYear()===(self.theDate.getFullYear() + i))?o.pickPageHighButtonTheme:o.pickPageFlipButtonTheme);
+							if ( i === 0 ) { cTheme = o.pickPageButtonTheme; }
+							$("<li>", { 'class' : 'ui-body-'+cTheme, 'style':((tmpVal===true)?'margin-top: -453px':'') })
+								.html("<span>"+(self.theDate.getFullYear() + i)+"</span>")
+								.appendTo(thisRow);
+							tmpVal = false;
+						}
+						break;
+					case 'm':
+						thisRow = self.pickerMon.find('ul');
+						thisRow.empty();
+						for ( i=-12; i<13; i++ ) {
+							testDate = new Date(self.theDate.getFullYear(), self.theDate.getMonth(), 1);
+							testDate.adjust('m',i);
+							cTheme = ( inheritDate.getMonth() === testDate.getMonth() && inheritDate.getYear() === testDate.getYear() ) ? o.pickPageHighButtonTheme : o.pickPageFlipButtonTheme;
+							if ( i === 0 ) { cTheme = o.pickPageButtonTheme; }
+							$("<li>", { 'class' : 'ui-body-'+cTheme, 'style':((tmpVal===true)?'margin-top: -357px':'') })
+								.html("<span>"+o.lang[o.useLang].monthsOfYearShort[testDate.getMonth()]+"</span>")
+								.appendTo(thisRow);
+							tmpVal = false;
+						}
+						break;
+					case 'd':
+						thisRow = self.pickerDay.find('ul');
+						thisRow.empty();
+						for ( i=-15; i<16; i++ ) {
+							testDate = self.theDate.copy();
+							testDate.adjust('d',i);
+							disVal = "";
+							if ( ( o.blackDates !== false && $.inArray(testDate.getISO(), o.blackDates) > -1 ) ||
+								( o.blackDays !== false && $.inArray(testDate.getDay(), o.blackDays) > -1 ) ) {
+								disVal = " ui-datebox-griddate-disable";
+							}
+							cTheme = ( inheritDate.getDate() === testDate.getDate() && inheritDate.getMonth() === testDate.getMonth() && inheritDate.getYear() === testDate.getYear() ) ? o.pickPageHighButtonTheme : o.pickPageFlipButtonTheme;
+							if ( i === 0 ) { cTheme = o.pickPageButtonTheme; }
+							$("<li>", { 'class' : 'ui-body-'+cTheme+disVal, 'style':((tmpVal===true)?'margin-top: -453px':'') })
+								.html("<span>"+testDate.getDate()+"</span>")
+								.appendTo(thisRow);
+							tmpVal = false;
+						}
+						break;
+					case 'h':
+						thisRow = self.pickerHour.find('ul');
+						thisRow.empty();
+						for ( i=-12; i<13; i++ ) {
+							testDate = self.theDate.copy();
+							testDate.adjust('h',i);
+							cTheme = ( i === 0 ) ?  o.pickPageButtonTheme : o.pickPageFlipButtonTheme;
+							$("<li>", { 'class' : 'ui-body-'+cTheme, 'style':((tmpVal===true)?'margin-top: -357px':'') })
+								.html("<span>"+( ( o.lang[o.useLang].timeFormat === 12 || o.timeFormatOverride === 12  ) ? ( ( testDate.getHours() === 0 ) ? '12' : ( ( testDate.getHours() < 12 ) ? testDate.getHours() : ( ( testDate.getHours() === 12 ) ? '12' : (testDate.getHours()-12) ) ) ) : testDate.getHours() )+"</span>")
+								.appendTo(thisRow);
+							tmpVal = false;
+						}
+						break;
+					case 'i':
+						thisRow = self.pickerMins.find('ul');
+						thisRow.empty();
+						for ( i=-30; i<31; i++ ) {
+							if ( o.minuteStep > 1 ) { self.theDate.setMinutes(self.theDate.getMinutes() - (self.theDate.getMinutes() % o.minuteStep)); }
+							testDate = self.theDate.copy();
+							testDate.adjust('i',(i*o.minuteStep));
+							cTheme = ( i === 0 ) ?  o.pickPageButtonTheme : o.pickPageFlipButtonTheme;
+							$("<li>", { 'class' : 'ui-body-'+cTheme, 'style':((tmpVal===true)?'margin-top: -933px':'') })
+								.html("<span>"+self._zPad(testDate.getMinutes())+"</span>")
+								.appendTo(thisRow);
+							tmpVal = false; 
+						}
+						break;
+					case 'a':
+						thisRow = self.pickerMeri.find('ul');
+						thisRow.empty();
+						if ( self.theDate.getHours() > 11 ) { 
+							tmpVal = '-65';
+							cTheme = [o.pickPageFlipButtonTheme, o.pickPageButtonTheme];
+						} else {
+							tmpVal = '-33';
+							cTheme = [o.pickPageButtonTheme, o.pickPageFlipButtonTheme];
+						}
+						$("<li>").appendTo(thisRow).clone().appendTo(thisRow);
+						$("<li>", { 'class' : 'ui-body-'+cTheme[0], 'style':'margin-top: '+tmpVal+'px' })
+							.html("<span>"+o.meridiemLetters[0]+"</span>")
+							.appendTo(thisRow);
+						$("<li>", { 'class' : 'ui-body-'+cTheme[1] })
+							.html("<span>"+o.meridiemLetters[1]+"</span>")
+							.appendTo(thisRow);
+						$("<li>").appendTo(thisRow).clone().appendTo(thisRow);
+						break;
+				}
+			}
+		}
+		/* END:FLIPBOX */
+		/* BEGIN:SLIDEBOX */
+		if ( o.mode === 'slidebox' ) {
+			self._checkConstraints();
+			
+			inheritDate = self._makeDate(self.input.val());
+			
+			self.controlsHeader.empty().html( self._formatHeader(self.theDate) );
+			self.controlsInput.empty();
+			
+			self.controlsInput.delegate('.ui-datebox-sliderow-int>div', o.clickEvent, function(e) {
+				e.preventDefault();
+				self._offset($(this).parent().jqmData('rowtype'), parseInt($(this).jqmData('offset'),10));
+			});
+			self.controlsInput.delegate('.ui-datebox-sliderow-int>div', 'vmouseover vmouseout', function() {
+				self._hoover(this);
+			});
+			
+			if ( o.wheelExists ) {
+				self.controlsInput.delegate('.ui-datebox-sliderow-int', 'mousewheel', function(e,d) {
+					e.preventDefault();
+					self._offset($(this).jqmData('rowtype'), ((d>0)?1:-1));
+				});
+			}
+			
+			if ( o.swipeEnabled ) {
+				self.controlsInput.delegate('.ui-datebox-sliderow-int', self.START_DRAG, function(e) {
+					if ( !self.dragMove ) {
+						self.dragMove = true;
+						self.dragTarget = $(this);
+						self.dragPos = parseInt(self.dragTarget.css('marginLeft').replace(/px/i, ''),10);
+						self.dragStart = self.touch ? e.originalEvent.changedTouches[0].pageX : e.pageX;
+						self.dragEnd = false;
+						e.stopPropagation();
+						e.preventDefault();
+					}
+				});
+			}
+			
+			for ( y=0; y<o.fieldsOrder.length; y++ ) {
+				thisPRow = $("<div>").jqmData('rowtype', o.fieldsOrder[y]);
+				thisRow = $("<div>", {'class': 'ui-datebox-sliderow-int'}).jqmData('rowtype',o.fieldsOrder[y]).appendTo(thisPRow);
+				
+				if ( o.lang[o.useLang].isRTL === true ) { thisRow.css('direction', 'rtl'); }
+				
+				switch (o.fieldsOrder[y]) {
+					case 'y':
+						thisPRow.addClass('ui-datebox-sliderow-ym');
+						thisRow.css('marginLeft', '-333px');
+						for ( i=-5; i<6; i++ ) {
+							cTheme = ((inheritDate.getFullYear()===(self.theDate.getFullYear() + i))?o.pickPageHighButtonTheme:o.pickPageSlideButtonTheme);
+							if ( i === 0 ) { cTheme = o.pickPageButtonTheme; }
+							$("<div>", { 'class' : 'ui-datebox-slideyear ui-corner-all ui-btn-up-'+cTheme })
+								.html(self.theDate.getFullYear() + i)
+								.jqmData('offset', i)
+								.jqmData('theme', cTheme)
+								.appendTo(thisRow);
+						}
+						break;
+					case 'm':
+						thisPRow.addClass('ui-datebox-sliderow-ym');
+						thisRow.css('marginLeft', '-204px');
+						for ( i=-6; i<7; i++ ) {
+							testDate = new Date(self.theDate.getFullYear(), self.theDate.getMonth(), 1);
+							testDate.adjust('m',i);
+							cTheme = ( inheritDate.getMonth() === testDate.getMonth() && inheritDate.getYear() === testDate.getYear() ) ? o.pickPageHighButtonTheme : o.pickPageSlideButtonTheme;
+							if ( i === 0 ) { cTheme = o.pickPageButtonTheme; }
+							$("<div>", { 'class' : 'ui-datebox-slidemonth ui-corner-all ui-btn-up-'+cTheme })
+								.jqmData('offset', i)
+								.jqmData('theme', cTheme)
+								.html(o.lang[o.useLang].monthsOfYearShort[testDate.getMonth()])
+								.appendTo(thisRow);
+						}
+						break;
+					case 'd':
+						thisPRow.addClass('ui-datebox-sliderow-d');
+						thisRow.css('marginLeft', '-386px');
+						for ( i=-15; i<16; i++ ) {
+							testDate = self.theDate.copy();
+							testDate.adjust('d',i);
+							disVal = "";
+							if ( ( o.blackDates !== false && $.inArray(testDate.getISO(), o.blackDates) > -1 ) ||
+								( o.blackDays !== false && $.inArray(testDate.getDay(), o.blackDays) > -1 ) ) {
+								disVal = " ui-datebox-griddate-disable";
+							}
+							cTheme = ( inheritDate.getDate() === testDate.getDate() && inheritDate.getMonth() === testDate.getMonth() && inheritDate.getYear() === testDate.getYear() ) ? o.pickPageHighButtonTheme : o.pickPageSlideButtonTheme;
+							if ( i === 0 ) { cTheme = o.pickPageButtonTheme; }
+							
+							$("<div>", { 'class' : 'ui-datebox-slideday ui-corner-all ui-btn-up-'+cTheme+disVal })
+								.jqmData('offset', i)
+								.jqmData('theme', cTheme)
+								.html(testDate.getDate() + '<br /><span class="ui-datebox-slidewday">' + o.lang[o.useLang].daysOfWeekShort[testDate.getDay()] + '</span>')
+								.appendTo(thisRow);
+						}
+						break;
+					case 'h':
+						thisPRow.addClass('ui-datebox-sliderow-hi');
+						thisRow.css('marginLeft', '-284px');
+						for ( i=-12; i<13; i++ ) {
+							testDate = self.theDate.copy();
+							testDate.adjust('h',i);
+							cTheme = ( i === 0 ) ?  o.pickPageButtonTheme : o.pickPageSlideButtonTheme;
+							$("<div>", { 'class' : 'ui-datebox-slidehour ui-corner-all ui-btn-up-'+cTheme })
+								.jqmData('offset', i)
+								.jqmData('theme', cTheme)
+								.html(( ( o.lang[o.useLang].timeFormat === 12 || o.timeFormatOverride === 12 ) ? ( ( testDate.getHours() === 0 ) ? '12<span class="ui-datebox-slidewday">AM</span>' : ( ( testDate.getHours() < 12 ) ? testDate.getHours() + '<span class="ui-datebox-slidewday">AM</span>' : ( ( testDate.getHours() === 12 ) ? '12<span class="ui-datebox-slidewday">PM</span>' : (testDate.getHours()-12) + '<span class="ui-datebox-slidewday">PM</span>') ) ) : testDate.getHours() ))
+								.appendTo(thisRow);
+						}
+						break;
+					case 'i':
+						thisPRow.addClass('ui-datebox-sliderow-hi');
+						thisRow.css('marginLeft', '-896px');
+						for ( i=-30; i<31; i++ ) {
+							testDate = self.theDate.copy();
+							testDate.adjust('i',i);
+							cTheme = ( i === 0 ) ?  o.pickPageButtonTheme : o.pickPageSlideButtonTheme;
+							$("<div>", { 'class' : 'ui-datebox-slidemins ui-corner-all ui-btn-up-'+cTheme })
+								.jqmData('offset', i)
+								.jqmData('theme', cTheme)
+								.html(self._zPad(testDate.getMinutes()))
+								.appendTo(thisRow);
+						}
+						break;
+				}
+				thisPRow.appendTo(self.controlsInput);
+			}
+		}
+		/* END:SLIDEBOX */
+		/* BEGIN:DATEBOX */
+		if ( o.mode === 'datebox' ) {
+			self._checkConstraints();
+			
+			self.controlsHeader.empty().html( self._formatHeader(self.theDate) );
+			self.pickerMon.val(self.theDate.getMonth() + 1);
+			self.pickerDay.val(self.theDate.getDate());
+			self.pickerYar.val(self.theDate.getFullYear());
+			
+			if ( self.dateOK !== true ) {
+				self.controlsInput.find('input').addClass('ui-datebox-griddate-disable');
+			} else {
+				self.controlsInput.find('.ui-datebox-griddate-disable').removeClass('ui-datebox-griddate-disable');
+			}
+		}
+		/* END:DATEBOX */
+		/* BEGIN:CALBOX */
+		if ( o.mode === 'calbox' ) { // Meat and potatos - make the calendar grid.
+			self.controlsInput.empty().html( o.lang[o.useLang].monthsOfYear[self.theDate.getMonth()] + " " + self.theDate.getFullYear() );
+			self.controlsPlus.empty();
+			
+			calmode = {'today': -1, 'highlightDay': -1, 'presetDay': -1, 'nexttoday': 1,
+				'thisDate': new Date(), 'maxDate': new Date(), 'minDate': new Date(), 'startDay': false,
+				'currentMonth': false, 'weekMode': 0, 'weekDays': null, 'thisTheme': o.pickPageButtonTheme };
+			calmode.start = self._getFirstDay(self.theDate);
+			calmode.end = self._getLastDate(self.theDate);
+			calmode.lastend = self._getLastDateBefore(self.theDate);
+			calmode.presetDate = self._makeDate(self.input.val());	
+						
+			if ( o.calStartDay !== false || typeof o.lang[o.useLang].calStartDay === "number" ) {
+				if ( o.calStartDay !== false ) {
+					calmode.start = calmode.start - o.calStartDay;
+					calmode.startDay = o.calStartDay;
+				} else {
+					calmode.start = calmode.start - o.lang[o.useLang].calStartDay;
+					calmode.startDay = o.lang[o.useLang].calStartDay;
+				}
+				if ( calmode.start < 0 ) { calmode.start = calmode.start + 7; }
+			}
+			
+			calmode.prevtoday = calmode.lastend - (calmode.start - 1);
+			calmode.checkDates = ( o.enableDates === false && ( o.afterToday !== false || o.beforeToday !== false || o.notToday !== false || o.maxDays !== false || o.minDays !== false || o.blackDates !== false || o.blackDays !== false ) );
+				
+			if ( calmode.thisDate.getMonth() === self.theDate.getMonth() && calmode.thisDate.getFullYear() === self.theDate.getFullYear() ) { calmode.currentMonth = true; calmode.highlightDay = calmode.thisDate.getDate(); } 
+			if ( calmode.presetDate.getComp() === self.theDate.getComp() ) { calmode.presetDay = calmode.presetDate.getDate(); }
+			
+			self.calNoPrev = false; self.calNoNext = false;
+			
+			if ( o.afterToday === true && 
+				( calmode.currentMonth === true || ( calmode.thisDate.getMonth() >= self.theDate.getMonth() && self.theDate.getFullYear() === calmode.thisDate.getFullYear() ) ) ) { 
+				self.calNoPrev = true; }
+			if ( o.beforeToday === true &&
+				( calmode.currentMonth === true || ( calmode.thisDate.getMonth() <= self.theDate.getMonth() && self.theDate.getFullYear() === calmode.thisDate.getFullYear() ) ) ) {
+				self.calNoNext = true; }
+			
+			if ( o.minDays !== false ) {
+				calmode.minDate.adjust('d', -1*o.minDays);
+				if ( self.theDate.getFullYear() === calmode.minDate.getFullYear() && self.theDate.getMonth() <= calmode.minDate.getMonth() ) { self.calNoPrev = true;}
+			}
+			if ( o.maxDays !== false ) {
+				calmode.maxDate.adjust('d', o.maxDays);
+				if ( self.theDate.getFullYear() === calmode.maxDate.getFullYear() && self.theDate.getMonth() >= calmode.maxDate.getMonth() ) { self.calNoNext = true;}
+			}
+			
+			if ( o.calShowDays ) {
+				if ( o.lang[o.useLang].daysOfWeekShort.length < 8 ) { o.daysOfWeekShort = o.lang[o.useLang].daysOfWeekShort.concat(o.lang[o.useLang].daysOfWeekShort); }
+				calmode.weekDays = $("<div>", {'class':'ui-datebox-gridrow'}).appendTo(self.controlsPlus);
+				if ( o.lang[o.useLang].isRTL === true ) { calmode.weekDays.css('direction', 'rtl'); }
+				for ( i=0; i<=6;i++ ) {
+					$("<div>"+o.lang[o.useLang].daysOfWeekShort[(i+calmode.startDay)%7]+"</div>").addClass('ui-datebox-griddate ui-datebox-griddate-empty ui-datebox-griddate-label').appendTo(calmode.weekDays);
+				}
+			}
+			
+			if ( o.fixDateArrays === true ) {
+				o.blackDates   = self._fixArray(o.blackDates);
+				o.highDates    = self._fixArray(o.highDates);
+				o.highDatesAlt = self._fixArray(o.highDatesAlt);
+				o.enableDates  = self._fixArray(o.enableDates);
+			}
+				
+			for ( gridWeek=0; gridWeek<=5; gridWeek++ ) {
+				if ( gridWeek === 0 || ( gridWeek > 0 && (calmode.today > 0 && calmode.today <= calmode.end) ) ) {
+					thisRow = $("<div>", {'class': 'ui-datebox-gridrow'});
+					if ( o.lang[o.useLang].isRTL === true ) { thisRow.css('direction', 'rtl'); }
+					for ( gridDay=0; gridDay<=6; gridDay++) {
+						if ( gridDay === 0 ) { calmode.weekMode = ( calmode.today < 1 ) ? (calmode.prevtoday - calmode.lastend + o.calWeekModeFirstDay) : (calmode.today + o.calWeekModeFirstDay); }
+						if ( gridDay === calmode.start && gridWeek === 0 ) { calmode.today = 1; }
+						if ( calmode.today > calmode.end ) { calmode.today = -1; }
+						if ( calmode.today < 1 ) {
+							if ( o.calShowOnlyMonth ) {
+								$("<div>", {'class': 'ui-datebox-griddate ui-datebox-griddate-empty'}).appendTo(thisRow);
+							} else {
+								if ( o.enableDates !== false ) {
+									if ( 
+										( $.inArray(self.theDate.copymod([0,-1],[0,0,calmode.prevtoday]).getISO(), o.enableDates) > -1 ) ||
+										( $.inArray(self.theDate.copymod([0,1],[0,0,calmode.nexttoday]).getISO(), o.enableDates) > -1 ) ) {
+											skipThis = false;
+									} else { skipThis = true; }
+								} else {
+									if (
+										( o.afterToday !== false && gridWeek === 0 && calmode.thisDate.getMonth() >= self.theDate.getMonth()-1 && self.theDate.getFullYear() === calmode.thisDate.getFullYear() && calmode.thisDate.getDate() > calmode.prevtoday ) ||
+										( o.beforeToday !== false && gridWeek !== 0 && calmode.thisDate.getMonth() <= self.theDate.getMonth()+1 && self.theDate.getFullYear() === calmode.thisDate.getFullYear() && calmode.thisDate.getDate() < calmode.nexttoday ) ||
+										( o.blackDays !== false && $.inArray(gridDay, o.blackDays) > -1 ) ||
+										( o.blackDates !== false && $.inArray(self.theDate.copymod([0,-1],[0,0,calmode.prevtoday]).getISO(), o.blackDates) > -1 ) ||
+										( o.blackDates !== false && $.inArray(self.theDate.copymod([0,1],[0,0,calmode.nexttoday]).getISO(), o.blackDates) > -1 ) ) {
+											skipThis = true;
+									} else { skipThis = false; }
+								}
+									
+								if ( gridWeek === 0 ) {
+									$("<div>"+String(calmode.prevtoday)+"</div>")
+										.addClass('ui-datebox-griddate ui-datebox-griddate-empty').appendTo(thisRow)
+										.jqmData('date', ((o.calWeekMode)?(calmode.weekMode+calmode.lastend):calmode.prevtoday))
+										.jqmData('enabled', (!skipThis && !self.calNoPrev))
+										.jqmData('month', -1);
+									calmode.prevtoday++;
+								} else {
+									$("<div>"+String(calmode.nexttoday)+"</div>")
+										.addClass('ui-datebox-griddate ui-datebox-griddate-empty').appendTo(thisRow)
+										.jqmData('date', ((o.calWeekMode)?calmode.weekMode:calmode.nexttoday))
+										.jqmData('enabled', (!skipThis && !self.calNoNext))
+										.jqmData('month', 1);
+									calmode.nexttoday++;
+								}
+							}
+						} else {
+							skipThis = false;
+							if ( o.enableDates ) {
+								if ( $.inArray(self.theDate.copymod([0],[0,0,calmode.today]).getISO(), o.enableDates) < 0 ) {
+									skipThis = true;
+								}
+							}
+							if ( calmode.checkDates ) {
+								if ( o.afterToday && calmode.thisDate.getComp() > (self.theDate.getComp()+calmode.today-self.theDate.getDate()) ) {
+									skipThis = true;
+								} 
+								if ( !skipThis && o.beforeToday && calmode.thisDate.getComp() < (self.theDate.getComp()+calmode.today-self.theDate.getDate()) ) {
+									skipThis = true;
+								}
+								if ( !skipThis && o.notToday && calmode.today === calmode.highlightDay ) {
+									skipThis = true;
+								}
+								if ( !skipThis && o.maxDays !== false && calmode.maxDate.getComp() < (self.theDate.getComp()+calmode.today-self.theDate.getDate()) ) {
+									skipThis = true;
+								} 
+								if ( !skipThis && o.minDays !== false && calmode.minDate.getComp() > (self.theDate.getComp()+calmode.today-self.theDate.getDate()) ) {
+									skipThis = true;
+								} 
+								if ( !skipThis && ( o.blackDays !== false || o.blackDates !== false ) ) { // Blacklists
+									if ( 
+										( $.inArray(gridDay, o.blackDays) > -1 ) ||
+										( $.inArray(self.theDate.copymod([0],[0,0,calmode.today]).getISO(), o.blackDates) > -1 ) ) { 
+											skipThis = true;
+									}
+								}
+							}
+							
+							if ( o.calHighPicked && calmode.today === calmode.presetDay ) { 
+								calmode.thisTheme = o.pickPageHighButtonTheme;
+							} else if ( o.calHighToday && calmode.today === calmode.highlightDay ) {
+								calmode.thisTheme = o.pickPageTodayButtonTheme;
+							} else if ( $.isArray(o.highDatesAlt) && ($.inArray(self.theDate.copymod([0],[0,0,calmode.today]).getISO(), o.highDatesAlt) > -1 ) ) {
+								calmode.thisTheme = o.pickPageOAHighButtonTheme;
+							} else if ( $.isArray(o.highDates) && ($.inArray(self.theDate.copymod([0],[0,0,calmode.today]).getISO(), o.highDates) > -1 ) ) {
+								calmode.thisTheme = o.pickPageOHighButtonTheme;
+							} else if ( $.isArray(o.highDays) && $.inArray(gridDay, o.highDays) > -1 ) {
+								calmode.thisTheme = o.pickPageODHighButtonTheme;
+							} else {
+								calmode.thisTheme = o.pickPageButtonTheme;
+							}
+							
+							$("<div>"+String(calmode.today)+"</div>")
+								.addClass('ui-datebox-griddate ui-corner-all ui-btn-up-' + calmode.thisTheme + ((skipThis)?' ui-datebox-griddate-disable':''))
+								.jqmData('date', ((o.calWeekMode)?calmode.weekMode:calmode.today))
+								.jqmData('theme', calmode.thisTheme)
+								.jqmData('enabled', !skipThis)
+								.jqmData('month', 0)
+								.appendTo(thisRow);
+							calmode.today++;
+						}
+					}
+				}
+				thisRow.appendTo(self.controlsPlus);
+			}
+			self.controlsPlus.delegate('div.ui-datebox-griddate', o.clickEvent +  ' vmouseover vmouseout', function(e) {
+				if ( e.type === o.clickEvent ) {
+					e.preventDefault();
+					if ( $(this).jqmData('enabled') ) {
+						
+						if ( $(this).jqmData('month') < 0 ) {
+							self.theDate.adjust('m', -1);
+							self.theDate.setDate($(this).jqmData('date'));
+						} else if ( $(this).jqmData('month') > 0 ) {
+							self.theDate.setDate($(this).jqmData('date'));
+							if ( !o.calWeekMode ) { self.theDate.adjust('m',1); }
+						} else {
+							self.theDate.setDate($(this).jqmData('date'));
+						}
+						self.input.trigger('datebox', {'method':'set', 'value':self._formatDate(self.theDate), 'date':self.theDate});
+						self.input.trigger('datebox', {'method':'close'});
+					}
+				} else {
+					if ( $(this).jqmData('enabled') && typeof $(this).jqmData('theme') !== 'undefined' ) {
+						if ( o.calWeekMode !== false && o.calWeekModeHighlight === true ) {
+							$(this).parent().find('div').each(function() { self._hoover(this); });
+						} else { self._hoover(this); }
+					}
+				}
+			});
+		}
+		/* END:CALBOX */
+		
+		if ( o.lang[this.options.useLang].useArabicIndic === true ) {
+			self._makeDisplayIndic();
+		}
+	},
+	_getLongOptions: function(element) {
+		var key, retty = {}, prefix, temp;
+		
+		if ( $.mobile.ns == "" ) { 
+			prefix = "datebox";
+		} else { 
+			prefix = $.mobile.ns.substr(0, $.mobile.ns.length - 1) + 'Datebox';
+		}
+		
+		for ( key in element.data() ) {
+			if ( key.substr(0, prefix.length) === prefix && key.length > prefix.length ) {
+				temp = key.substr(prefix.length);
+				temp = temp.charAt(0).toLowerCase() + temp.slice(1);
+				retty[temp] = element.data(key);
+			}
+		}
+		return retty;
+	},
+	_create: function() {
+		// Create the widget, called automatically by widget system
+		
+		// Trigger dateboxcreate
+		$( document ).trigger( "dateboxcreate" );
+		
+		var self = this,
+			o = $.extend(this.options, this.element.jqmData('options')),
+			o = ((typeof this.element.jqmData('options') === 'undefined') ? $.extend(o, this._getLongOptions(this.element)) : o);
+			input = this.element,
+			thisTheme = ( o.theme === false && typeof($(self).jqmData('theme')) === 'undefined' ) ?
+				( ( typeof(input.parentsUntil(':jqmData(theme)').parent().jqmData('theme')) === 'undefined' ) ?
+					o.defaultTheme : input.parentsUntil(':jqmData(theme)').parent().jqmData('theme') )
+				: o.theme,
+			focusedEl = input.wrap('<div class="ui-input-datebox ui-shadow-inset ui-corner-all ui-body-'+ thisTheme +'"></div>').parent(),
+			theDate = new Date(), // Internal date object, used for all operations
+			initDate = new Date(theDate.getTime()), // Initilization time - used for duration
+			
+			// This is the button that is added to the original input
+			openbutton = $('<a href="#" class="ui-input-clear" title="'+((typeof o.lang[o.useLang].tooltip !== 'undefined')?o.lang[o.useLang].tooltip:o.lang.en.tooltip)+'">'+((typeof o.lang[o.useLang].tooltip !== 'undefined')?o.lang[o.useLang].tooltip:o.lang.en.tooltip)+'</a>')
+				.bind(o.clickEvent, function (e) {
+					e.preventDefault();
+					if ( !o.disabled ) { self.input.trigger('datebox', {'method': 'open'}); self.focusedEl.addClass('ui-focus'); }
+					setTimeout( function() { $(e.target).closest("a").removeClass($.mobile.activeBtnClass); }, 300);
+				})
+				.appendTo(focusedEl).buttonMarkup({icon: 'grid', iconpos: 'notext', corners:true, shadow:true})
+				.css({'vertical-align': 'middle', 'display': 'inline-block'}),
+			thisPage = input.closest('.ui-page'),
+			ns = (typeof $.mobile.ns !== 'undefined')?$.mobile.ns:'',
+			pickPage = $("<div data-"+ns+"role='dialog' class='ui-dialog-datebox' data-"+ns+"theme='" + ((o.forceInheritTheme === false ) ? o.pickPageTheme : thisTheme ) + "' >" +
+						"<div data-"+ns+"role='header' data-"+ns+"backbtn='false' data-"+ns+"theme='a'>" +
+							"<div class='ui-title'>PlaceHolder</div>"+
+						"</div>"+
+						"<div data-"+ns+"role='content'></div>"+
+					"</div>")
+					.appendTo( $.mobile.pageContainer )
+					.page().css('minHeight', '0px').css('zIndex', o.zindex).addClass(o.transition),
+			pickPageTitle = pickPage.find('.ui-title'),
+			pickPageContent = pickPage.find( ".ui-content" ),
+			touch = ( typeof window.ontouchstart !== 'undefined' ),
+			START_EVENT = touch ? 'touchstart' : 'mousedown',
+			MOVE_EVENT = touch ? 'touchmove' : 'mousemove',
+			END_EVENT = touch ? 'touchend' : 'mouseup',
+			dragMove = false,
+			dragStart = false,
+			dragEnd = false,
+			dragPos = false,
+			dragTarget = false,
+			dragThisDelta = 0;
+		
+		o.theme = thisTheme;
+		
+		$.extend(self, {
+			input: input,
+			focusedEl: focusedEl });
+		
+		if ( o.forceInheritTheme ) {
+			o.pickPageTheme = thisTheme;
+			o.pickPageInputTheme = thisTheme;
+			o.pickPageButtonTheme = thisTheme;
+		}
+		
+		if ( o.defaultPickerValue===false && o.defaultDate!==false ) {
+			o.defaultPickerValue = o.defaultDate;
+		}
+		
+		if ( o.numberInputEnhance === true ) {
+			if( navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i) ){
+				o.internalInputType = 'number';
+			}
+		}
+		
+		$('label[for=\''+input.attr('id')+'\']').addClass('ui-input-text').css('verticalAlign', 'middle');
+
+		/* BUILD:MODE */
+		
+		if ( o.mode === "timeflipbox" ) { // No header in time flipbox.
+			o.lang[o.useLang].headerFormat = ' ';
+		}
+		
+		// For focus mode, disable button, and bind click of input element and it's parent	
+		if ( o.noButtonFocusMode || o.useInline || o.noButton ) { openbutton.hide(); }
+		
+		self.focusedEl.bind(o.clickEvent, function() {
+			if ( !o.disabled && ( o.noButtonFocusMode || o.focusMode ) ) { 
+				self.input.trigger('datebox', {'method': 'open'});
+				self.focusedEl.addClass('ui-focus');
+				self.input.removeClass('ui-focus');
+			}
+		});
+		
+		
+		self.input
+			.removeClass('ui-corner-all ui-shadow-inset')
+			.focus(function(){
+				if ( ! o.disabled ) {
+					self.focusedEl.addClass('ui-focus');
+				}
+				self.input.removeClass('ui-focus');
+			})
+			.blur(function(){
+				self.focusedEl.removeClass('ui-focus');
+				self.input.removeClass('ui-focus');
+			})
+			.change(function() {
+				self.theDate = self._makeDate(self.input.val());
+				self._update();
+			});
+			
+		// Bind the master handler.
+		self.input.bind('datebox', self._dateboxHandler);
+		
+		// Bind the close button on the DIALOG mode. (after unbinding the default)
+		pickPage.find( ".ui-header a").unbind('click vclick').bind(o.clickEvent, function(e) {
+			e.preventDefault();
+			e.stopImmediatePropagation();
+			self.input.trigger('datebox', {'method':'close', 'fromCloseButton':false});
+		});
+
+		$.extend(self, {
+			pickPage: pickPage,
+			thisPage: thisPage,
+			pickPageContent: pickPageContent,
+			pickPageTitle: pickPageTitle,
+			theDate: theDate,
+			initDate: initDate,
+			touch: touch,
+			START_DRAG: START_EVENT,
+			MOVE_DRAG: MOVE_EVENT,
+			END_DRAG: END_EVENT,
+			dragMove: dragMove,
+			dragStart: dragStart,
+			dragEnd: dragEnd,
+			dragPos: dragPos
+		});
+		
+		// Check if mousewheel plugin is loaded
+		if ( typeof $.event.special.mousewheel !== 'undefined' ) { o.wheelExists = true; }
+		
+		self._buildPage();
+		
+		// drag and drop support, all ending and moving events are defined here, start events are handled in _buildPage or update
+		if ( o.swipeEnabled ) {
+			$(document).bind(self.MOVE_DRAG, function(e) {
+				if ( self.dragMove ) {
+					if ( o.mode === 'slidebox' ) {
+						self.dragEnd = self.touch ? e.originalEvent.changedTouches[0].pageX : e.pageX;
+						self.dragTarget.css('marginLeft', (self.dragPos + self.dragEnd - self.dragStart) + 'px');
+						e.preventDefault();
+						e.stopPropagation();
+						return false;
+					} else if ( o.mode === 'flipbox' || o.mode === 'timeflipbox' ) {
+						self.dragEnd = self.touch ? e.originalEvent.changedTouches[0].pageY : e.pageY;
+						self.dragTarget.css('marginTop', (self.dragPos + self.dragEnd - self.dragStart) + 'px');
+						e.preventDefault();
+						e.stopPropagation();
+						return false;
+					} else if ( o.mode === 'durationbox' || o.mode === 'timebox' || o.mode === 'datebox' ) {
+						self.dragEnd = self.touch ? e.originalEvent.changedTouches[0].pageY : e.pageY;
+						if ( (self.dragEnd - self.dragStart) % 2 === 0 ) {
+							dragThisDelta = (self.dragEnd - self.dragStart) / -2;
+							if ( dragThisDelta < self.dragPos ) {
+								self._offset(self.dragTarget, -1*(self.dragTarget==='i'?o.minuteStep:1));
+							} else if ( dragThisDelta > self.dragPos ) {
+								self._offset(self.dragTarget, (self.dragTarget==='i'?o.minuteStep:1));
+							} 
+							self.dragPos = dragThisDelta;
+						}
+						e.preventDefault();
+						e.stopPropagation();
+						return false;
+					}
+				} 
+			});
+			$(document).bind(self.END_DRAG, function(e) {
+				if ( self.dragMove ) {
+					self.dragMove = false;
+					if ( o.mode === 'slidebox' ) {
+						if ( self.dragEnd !== false && Math.abs(self.dragStart - self.dragEnd) > 25 ) {
+							e.preventDefault();
+							e.stopPropagation();
+							switch(self.dragTarget.parent().jqmData('rowtype')) {
+								case 'y':
+									self._offset('y', parseInt(( self.dragStart - self.dragEnd ) / 84, 10));
+									break;
+								case 'm':
+									self._offset('m', parseInt(( self.dragStart - self.dragEnd ) / 51, 10));
+									break;
+								case 'd':
+									self._offset('d', parseInt(( self.dragStart - self.dragEnd ) / 32, 10));
+									break;
+								case 'h':
+									self._offset('h', parseInt(( self.dragStart - self.dragEnd ) / 32, 10));
+									break;
+								case 'i':
+									self._offset('i', parseInt(( self.dragStart - self.dragEnd ) / 32, 10));
+									break;
+							}
+						}
+					} else if ( o.mode === 'flipbox' || o.mode === 'timeflipbox' ) {
+						if ( self.dragEnd !== false ) {
+							e.preventDefault();
+							e.stopPropagation();
+							var fld = self.dragTarget.parent().parent().jqmData('field'),
+								amount = parseInt(( self.dragStart - self.dragEnd ) / 30,10);
+							self._offset(fld, amount * ( (fld === "i") ? o.minuteStep : 1 ));
+						}
+					}
+					self.dragStart = false;
+					self.dragEnd = false;
+				}
+			});
+		}
+		
+		// Disable when done if element attribute disabled is true.
+		if ( self.input.is(':disabled') ) {
+			self.disable();
+		}
+		// Turn input readonly if requested (on by default)
+		if ( o.disableManualInput === true ) {
+			self.input.attr("readonly", true);
+		}
+		
+		//Throw dateboxinit event
+		$( document ).trigger( "dateboxaftercreate" );
+	},
+	_makeElement: function(source, parts) {
+		var self = this,
+			part = false,
+			retty = false;
+		
+		retty = source.clone();
+		
+		if ( typeof parts.attr !== 'undefined' ) {
+			for ( part in parts.attr ) {
+				if ( parts.attr.hasOwnProperty(part) ) {
+					retty.jqmData(part, parts.attr[part]);
+				}
+			}
+		}
+		return retty;
+	},
+	_eventEnterValue: function (item) {
+		var self = this,
+			o = self.options,
+			newHour = false;
+		
+		if ( item.val() !== '' && self._isInt(item.val()) ) {
+			switch(item.jqmData('field')) {
+				case 'm':
+					self.theDate.setMonth(parseInt(item.val(),10)-1); break;
+				case 'd':
+					self.theDate.setDate(parseInt(item.val(),10)); break;
+				case 'y':
+					self.theDate.setFullYear(parseInt(item.val(),10)); break;
+				case 'i':
+					self.theDate.setMinutes(parseInt(item.val(),10)); break;
+				case 'h':
+					newHour = parseInt(item.val(),10);
+					if ( newHour === 12 ) {
+						if ( ( o.lang[o.useLang].timeFormat === 12 || o.timeFormatOverride === 12 ) && self.pickerMeri.val() === o.meridiemLetters[0] ) { newHour = 0; }
+					}
+					self.theDate.setHours(newHour);
+					break;
+			}
+			self._update();
+		}
+	},
+	_buildInternals: function () {
+		// Build the POSSIBLY VARIABLE controls (these might change)
+		var self = this,
+			o = self.options, x, y, newHour, fld,
+			linkdiv =$("<div><a href='#'></a></div>"),
+			pickerContent = $("<div>", { "class": 'ui-datebox-container ui-overlay-shadow ui-corner-all ui-datebox-hidden pop ui-body-'+o.pickPageTheme} ).css('zIndex', o.zindex),
+			templInput = $("<input type='"+o.internalInputType+"' />").addClass('ui-input-text ui-corner-all ui-shadow-inset ui-datebox-input ui-body-'+o.pickPageInputTheme),
+			templInputT = $("<input type='text' />").addClass('ui-input-text ui-corner-all ui-shadow-inset ui-datebox-input ui-body-'+o.pickPageInputTheme),
+			templControls = $("<div>", { "class":'ui-datebox-controls' }),
+			templFlip = $("<div class='ui-overlay-shadow'><ul></ul></div>"),
+			controlsPlus, controlsInput, controlsMinus, controlsSet, controlsHeader,
+			pickerHour, pickerMins, pickerMeri, pickerMon, pickerDay, pickerYar, pickerSecs;
+			
+		self.calNoNext = false;
+		self.calNoPrev = false;
+		self.setButton = false;
+		self.clearButton = false;
+		self.dateOK = true;
+		
+		if ( o.fieldsOrderOverride === false ) {
+			switch (o.mode) {
+				case 'timebox':
+				case 'timeflipbox':
+					o.fieldsOrder = o.lang[o.useLang].timeFieldOrder; 
+					break;
+				case 'slidebox':
+					o.fieldsOrder = o.lang[o.useLang].slideFieldOrder; 
+					break;
+				default:
+					o.fieldsOrder = o.lang[o.useLang].dateFieldOrder; 
+			}
+		} else {
+			o.fieldsOrder = o.fieldsOrderOverride;
+		}
+		
+		/* Do the Date / Time Format */
+		if ( o.timeOutputOverride !== false  ) {
+			o.timeOutput = o.timeOutputOverride;
+		} else if ( o.timeFormatOverride === false ) {
+			o.timeOutput = o.timeFormats[o.lang[o.useLang].timeFormat];
+		} else {
+			o.timeOutput = o.timeFormats[o.timeFormatOverride];
+		}
+		
+		if ( o.dateFormat !== false ) {
+			o.dateOutput = o.dateFormat;
+		} else {
+			if ( typeof o.lang[o.useLang].dateFormat !== 'undefined' ) {
+				o.dateOutput = o.lang[o.useLang].dateFormat;
+			} else {
+				o.dateOutput = o.defaultDateFormat;
+			}
+		}
+		
+		self.pickerContent.empty();
+			
+		/* BEGIN:DATETIME */
+		if ( o.mode === 'datebox' || o.mode === 'timebox' ) {
+			controlsHeader = $("<div class='ui-datebox-header'><h4>Uninitialized</h4></div>").appendTo(self.pickerContent).find("h4");
+			controlsPlus = templControls.clone().appendTo(self.pickerContent);
+			controlsInput = templControls.clone().appendTo(self.pickerContent);
+			controlsMinus = templControls.clone().appendTo(self.pickerContent);
+			controlsSet = templControls.clone().appendTo(self.pickerContent);
+			
+			if ( o.mode === 'timebox' ) { controlsHeader.parent().empty(); } // Time mode has no header
+			
+			pickerMon = self._makeElement(templInput, {'attr': {'field':'m', 'amount':1} });
+			pickerDay = self._makeElement(templInput, {'attr': {'field':'d', 'amount':1} });
+			pickerYar = self._makeElement(templInput, {'attr': {'field':'y', 'amount':1} });
+			pickerHour = self._makeElement(templInput, {'attr': {'field':'h', 'amount':1} });
+			pickerMins = self._makeElement(templInput, {'attr': {'field':'i', 'amount':1} });
+			pickerMeri = self._makeElement(templInputT, {'attr': {'field':'a', 'amount':o.minuteStep} });
+				
+			controlsInput.delegate('input', 'keyup', function() {
+				self._eventEnterValue($(this));
+			});
+					
+			if ( o.wheelExists ) { // Mousewheel operation, if plugin is loaded
+				controlsInput.delegate('input', 'mousewheel', function(e,d) {
+					e.preventDefault();
+					self._offset($(this).jqmData('field'), ((d<0)?-1:1)*$(this).jqmData('amount'));
+				});
+			}
+		
+			for(x=0; x<=o.fieldsOrder.length; x++) { // Use fieldsOrder to decide what goes where
+				if (o.fieldsOrder[x] === 'y') { pickerYar.appendTo(controlsInput); }
+				if (o.fieldsOrder[x] === 'm') { pickerMon.appendTo(controlsInput); }
+				if (o.fieldsOrder[x] === 'd') { pickerDay.appendTo(controlsInput); }
+				if (o.fieldsOrder[x] === 'h') { pickerHour.appendTo(controlsInput); }
+				if (o.fieldsOrder[x] === 'i') { pickerMins.appendTo(controlsInput); }
+				if (o.fieldsOrder[x] === 'a' && ( o.lang[o.useLang].timeFormat === 12 || o.timeFormatOverride === 12 ) ) { pickerMeri.appendTo(controlsInput); }
+			}
+			
+			if ( o.swipeEnabled ) { // Drag and drop support
+				controlsInput.delegate('input', self.START_DRAG, function(e) {
+					if ( !self.dragMove ) {
+						self.dragMove = true;
+						self.dragTarget = $(this).jqmData('field');
+						self.dragPos = 0;
+						self.dragStart = self.touch ? e.originalEvent.changedTouches[0].pageY : e.pageY;
+						self.dragEnd = false;
+						e.stopPropagation();
+					}
+				});
+			}
+			
+			if ( o.noSetButton === false ) { // Set button at bottom
+				self.setButton = $("<a href='#'>PlaceHolder</a>")
+					.appendTo(controlsSet).buttonMarkup({theme: o.pickPageTheme, icon: 'check', iconpos: 'left', corners:true, shadow:true})
+					.bind(o.clickEvent, function(e) {
+						e.preventDefault();
+						if ( self.dateOK === true ) {
+							if ( o.mode === 'timebox' ) { self.input.trigger('datebox', {'method':'set', 'value':self._formatTime(self.theDate), 'date':self.theDate}); }
+							else { self.input.trigger('datebox', {'method':'set', 'value':self._formatDate(self.theDate), 'date':self.theDate}); }
+							self.input.trigger('datebox', {'method':'close'});
+						}
+					});
+			}
+			
+			for( x=0; x<self.options.fieldsOrder.length; x++ ) { // Generate the plus and minus buttons, use fieldsOrder again
+				if ( o.fieldsOrder[x] !== 'a' || o.lang[o.useLang].timeFormat === 12 || o.timeFormatOverride === 12 ) {
+					for ( y=0; y<2; y++ ) {
+						linkdiv.clone()
+							.appendTo(((y===0)?controlsPlus:controlsMinus))
+							.buttonMarkup({theme: o.pickPageButtonTheme, icon: ((y===0)?'plus':'minus'), iconpos: 'bottom', corners:true, shadow:true})
+							.jqmData('field', o.fieldsOrder[x])
+							.jqmData('amount', ((o.fieldsOrder[x]==='i')?o.minuteStep:1));
+					}
+				}
+			}
+			
+			controlsPlus.delegate('div', o.clickEvent, function(e) {
+				e.preventDefault();
+				self._offset($(this).jqmData('field'), $(this).jqmData('amount'));
+			});
+			controlsMinus.delegate('div', o.clickEvent, function(e) {
+				e.preventDefault();
+				self._offset($(this).jqmData('field'), $(this).jqmData('amount')*-1);
+			});
+				
+			$.extend(self, {
+				controlsHeader: controlsHeader,
+				pickerDay: pickerDay,
+				pickerMon: pickerMon,
+				pickerYar: pickerYar,
+				pickerHour: pickerHour,
+				pickerMins: pickerMins,
+				pickerMeri: pickerMeri,
+				controlsInput: controlsInput
+			});
+			
+			self.pickerContent.appendTo(self.thisPage);
+		}
+		/* END:DATETIME */
+		
+		/* BEGIN:DURATIONBOX */
+		if ( o.mode === 'durationbox' ) {
+			controlsPlus = templControls.clone().removeClass('ui-datebox-controls').addClass('ui-datebox-scontrols').appendTo(self.pickerContent);
+			controlsInput = controlsPlus.clone().appendTo(self.pickerContent);
+			controlsMinus = controlsPlus.clone().appendTo(self.pickerContent);
+			controlsSet = templControls.clone().appendTo(self.pickerContent);
+			
+			pickerDay = templInput.removeClass('ui-datebox-input');
+			pickerHour = pickerDay.clone();
+			pickerMins = pickerDay.clone();
+			pickerSecs = pickerDay.clone();
+			
+			controlsInput.delegate('input', 'keyup', function() {
+				if ( $(this).val() !== '' ) { self._updateduration(); }
+			});
+			
+			if ( o.wheelExists ) { // Mousewheel operation, if the plgin is loaded
+				controlsInput.delegate('input', 'mousewheel', function(e,d) {
+					e.preventDefault();
+					self._offset($(this).parent().jqmData('field'), ((d<0)?-1:1));
+				});
+			}
+			
+			for ( x=0; x<o.durationOrder.length; x++ ) { // Use durationOrder to decide what goes where
+				switch ( o.durationOrder[x] ) {
+					case 'd':
+						$('<div>', {'class': 'ui-datebox-sinput'}).jqmData('field', 'd').append(pickerDay).appendTo(controlsInput).prepend('<label>'+o.lang[o.useLang].durationLabel[0]+'</label>');
+						break;
+					case 'h':
+						$('<div>', {'class': 'ui-datebox-sinput'}).jqmData('field', 'h').append(pickerHour).appendTo(controlsInput).prepend('<label>'+o.lang[o.useLang].durationLabel[1]+'</label>');
+						break;
+					case 'i':
+						$('<div>', {'class': 'ui-datebox-sinput'}).jqmData('field', 'i').append(pickerMins).appendTo(controlsInput).prepend('<label>'+o.lang[o.useLang].durationLabel[2]+'</label>');
+						break;
+					case 's':
+						$('<div>', {'class': 'ui-datebox-sinput'}).jqmData('field', 's').append(pickerSecs).appendTo(controlsInput).prepend('<label>'+o.lang[o.useLang].durationLabel[3]+'</label>');
+						break;
+				}
+			}
+			
+			if ( o.swipeEnabled ) { // Drag and drop operation
+				controlsInput.delegate('input', self.START_DRAG, function(e) {
+					if ( !self.dragMove ) {
+						self.dragMove = true;
+						self.dragTarget = $(this).parent().jqmData('field');
+						self.dragPos = 0;
+						self.dragStart = self.touch ? e.originalEvent.changedTouches[0].pageY : e.pageY;
+						self.dragEnd = false;
+						e.stopPropagation();
+					}
+				});
+			}
+			
+			if ( o.noSetButton === false ) { // Bottom set button
+				self.setButton = $("<a href='#'>PlaceHolder</a>")
+					.appendTo(controlsSet).buttonMarkup({theme: o.pickPageTheme, icon: 'check', iconpos: 'left', corners:true, shadow:true})
+					.bind(o.clickEvent, function(e) {
+						e.preventDefault();
+						self.input.trigger('datebox', {'method':'set', 'value':self._formatTime(self.theDate), 'date':self.theDate});
+						self.input.trigger('datebox', {'method':'close'});
+					});
+			}
+				
+			for ( x=0; x<o.durationOrder.length; x++ ) {
+				for ( y=0; y<2; y++ ) {
+					linkdiv.clone()
+						.appendTo(((y===0)?controlsPlus:controlsMinus))
+						.buttonMarkup({theme: o.pickPageButtonTheme, icon: ((y===0)?'plus':'minus'), iconpos: 'bottom', corners:true, shadow:true})
+						.jqmData('field', o.durationOrder[x]);
+				}
+			}
+			
+			controlsPlus.delegate('div', o.clickEvent, function(e) {
+				e.preventDefault();
+				self._offset($(this).jqmData('field'), o.durationSteppers[$(this).jqmData('field')]);
+			});
+			controlsMinus.delegate('div', o.clickEvent, function(e) {
+				e.preventDefault();
+				self._offset($(this).jqmData('field'), o.durationSteppers[$(this).jqmData('field')]*-1);
+			});
+			
+			$.extend(self, {
+				pickerHour: pickerHour,
+				pickerMins: pickerMins,
+				pickerDay: pickerDay,
+				pickerSecs: pickerSecs
+			});
+			
+			self.pickerContent.appendTo(self.thisPage);
+		}
+		/* END:DURATIONBOX */
+		
+		/* BEGIN:SLIDEBOX */
+		if ( o.mode === 'slidebox' ) {
+			controlsHeader = $("<div class='ui-datebox-header'><h4>Uninitialized</h4></div>").appendTo(self.pickerContent).find("h4");
+			controlsInput = $('<div>').addClass('ui-datebox-slide').appendTo(self.pickerContent);
+			controlsSet = $("<div>", { "class":'ui-datebox-controls'}).appendTo(self.pickerContent);
+				
+			if ( o.noSetButton === false ) { // Show set button at bottom
+				self.setButton = $("<a href='#'>PlaceHolder</a>")
+					.appendTo(controlsSet).buttonMarkup({theme: o.pickPageTheme, icon: 'check', iconpos: 'left', corners:true, shadow:true})
+					.bind(o.clickEvent, function(e) {
+						e.preventDefault();
+						if ( self.dateOK === true ) {
+							self.input.trigger('datebox', {'method':'set', 'value':self._formatDate(self.theDate), 'date':self.theDate});
+							self.input.trigger('datebox', {'method':'close'});
+						}
+					});
+			}
+			
+			$.extend(self, {
+				controlsHeader: controlsHeader,
+				controlsInput: controlsInput
+			});
+			
+			self.pickerContent.appendTo(self.thisPage);
+		}
+		/* END:SLIDEBOX */
+		
+		/* BEGIN:FLIPBOX */
+		if ( o.mode === 'flipbox' || o.mode === 'timeflipbox' ) {
+			controlsHeader = $("<div class='ui-datebox-header'><h4>Uninitialized</h4></div>").appendTo(self.pickerContent).find("h4");
+			controlsInput = $("<div>", {"class":'ui-datebox-flipcontent'}).appendTo(self.pickerContent);
+			controlsPlus = $("<div>", {"class":'ui-datebox-flipcenter ui-overlay-shadow'}).css('pointerEvents', 'none').appendTo(self.pickerContent);
+			controlsSet = templControls.clone().appendTo(self.pickerContent);
+			
+			pickerDay = self._makeElement(templFlip, {'attr': {'field':'d','amount':1} });
+			pickerMon = self._makeElement(templFlip, {'attr': {'field':'m','amount':1} });
+			pickerYar = self._makeElement(templFlip, {'attr': {'field':'y','amount':1} });
+			pickerHour = self._makeElement(templFlip, {'attr': {'field':'h','amount':1} });
+			pickerMins = self._makeElement(templFlip, {'attr': {'field':'i','amount':o.minuteStep} });
+			pickerMeri = self._makeElement(templFlip, {'attr': {'field':'a','amount':1} });
+			
+			if ( o.wheelExists ) { // Mousewheel operation, if the plugin is loaded.
+				controlsInput.delegate('div', 'mousewheel', function(e,d) {
+					e.preventDefault();
+					self._offset($(this).jqmData('field'), ((d<0)?-1:1)*$(this).jqmData('amount'));
+				});
+			}
+			
+			for(x=0; x<=o.fieldsOrder.length; x++) { // Use fieldsOrder to decide which to show.
+				if (o.fieldsOrder[x] === 'y') { pickerYar.appendTo(controlsInput); }
+				if (o.fieldsOrder[x] === 'm') { pickerMon.appendTo(controlsInput); }
+				if (o.fieldsOrder[x] === 'd') { pickerDay.appendTo(controlsInput); }
+				if (o.fieldsOrder[x] === 'h') { pickerHour.appendTo(controlsInput); }
+				if (o.fieldsOrder[x] === 'i') { pickerMins.appendTo(controlsInput); }
+				if (o.fieldsOrder[x] === 'a' && ( o.lang[o.useLang].timeFormat === 12 || o.timeFormatOverride === 12 ) ) { pickerMeri.appendTo(controlsInput); }
+			}
+			
+			if ( o.swipeEnabled ) { // Drag and drop support
+				controlsInput.delegate('ul', self.START_DRAG, function(e,f) {
+					if ( !self.dragMove ) {
+						if ( typeof f !== "undefined" ) { e = f; }
+						self.dragMove = true;
+						self.dragTarget = $(this).find('li').first();
+						self.dragPos = parseInt(self.dragTarget.css('marginTop').replace(/px/i, ''),10);
+						self.dragStart = self.touch ? e.originalEvent.changedTouches[0].pageY : e.pageY;
+						self.dragEnd = false;
+						e.stopPropagation();
+						e.preventDefault();
+					}
+				});
+				controlsPlus.bind(self.START_DRAG, function(e) { // ONLY USED ON OLD BROWSERS & IE
+					if ( !self.dragMove ) {
+						self.dragTarget = self.touch ? e.originalEvent.changedTouches[0].pageX - $(e.currentTarget).offset().left : e.pageX - $(e.currentTarget).offset().left;
+						if ( o.fieldsOrder.length === 3 ) {
+							$(self.controlsInput.find('ul').get(parseInt(self.dragTarget / 87, 10))).trigger(self.START_DRAG, e);
+						} else if ( o.fieldsOrder.length === 2 ) {
+							$(self.controlsInput.find('ul').get(parseInt(self.dragTarget / 130, 10))).trigger(self.START_DRAG, e);
+						}
+					}
+				});
+			}
+			
+			if ( o.noSetButton === false ) { // Set button at bottom
+				self.setButton = $("<a href='#'>PlaceHolder</a>")
+					.appendTo(controlsSet).buttonMarkup({theme: o.pickPageTheme, icon: 'check', iconpos: 'left', corners:true, shadow:true})
+					.bind(o.clickEvent, function(e) {
+						e.preventDefault();
+						if ( self.dateOK === true ) {
+							if ( o.mode === 'timeflipbox' ) { self.input.trigger('datebox', {'method':'set', 'value':self._formatTime(self.theDate), 'date':self.theDate}); }
+							else { self.input.trigger('datebox', {'method':'set', 'value':self._formatDate(self.theDate), 'date':self.theDate}); }
+							self.input.trigger('datebox', {'method':'close'});
+						}
+					});
+			}
+			
+			$.extend(self, {
+				controlsHeader: controlsHeader,
+				controlsInput: controlsInput,
+				pickerDay: pickerDay,
+				pickerMon: pickerMon,
+				pickerYar: pickerYar,
+				pickerHour: pickerHour,
+				pickerMins: pickerMins,
+				pickerMeri: pickerMeri
+			});
+			
+			self.pickerContent.appendTo(self.thisPage);
+			
+		}
+		/* END:FLIPBOX */
+		
+		/* BEGIN:CALBOX */
+		if ( o.mode === 'calbox' ) {
+			controlsHeader = $("<div>", {"class": 'ui-datebox-gridheader'}).appendTo(self.pickerContent);
+			controlsPlus = $("<div>", {"class": 'ui-datebox-grid'}).appendTo(self.pickerContent);
+			controlsSet = templControls.clone().appendTo(self.pickerContent);
+			controlsInput = $("<div class='ui-datebox-gridlabel'><h4>Uninitialized</h4></div>").appendTo(controlsHeader).find('h4');
+			
+			if ( o.swipeEnabled ) { // Calendar swipe left and right
+				self.pickerContent
+					.bind('swipeleft', function() { if ( !self.calNoNext ) { self._offset('m', 1); } })
+					.bind('swiperight', function() { if ( !self.calNoPrev ) { self._offset('m', -1); } });
+			}
+			
+			if ( o.wheelExists) { // Mousewheel operations, if plugin is loaded
+				self.pickerContent.bind('mousewheel', function(e,d) {
+					e.preventDefault();
+					if ( d > 0 && !self.calNoNext ) { 
+						if ( self.theDate.getDate() > 28 ) { self.theDate.setDate(1); }
+						self._offset('m', 1);
+					}
+					if ( d < 0 && !self.calNoPrev ) {
+						if ( self.theDate.getDate() > 28 ) { self.theDate.setDate(1); }
+						self._offset('m', -1);
+					}
+				});
+			}
+						
+			// Previous and next month buttons, define booleans to decide if they should do anything
+			$("<div class='ui-datebox-gridplus"+((o.lang[o.useLang].isRTL===true)?'-rtl':'')+"'><a href='#'>"+((typeof o.lang[o.useLang].nextMonth !== 'undefined')?o.lang[o.useLang].nextMonth:o.lang.en.nextMonth)+"</a></div>")
+				.prependTo(controlsHeader).buttonMarkup({theme: o.pickPageButtonTheme, icon: 'plus', inline: true, iconpos: 'notext', corners:true, shadow:true})
+				.bind(o.clickEvent, function(e) {
+					e.preventDefault();
+					if ( ! self.calNoNext ) {
+						if ( self.theDate.getDate() > 28 ) { self.theDate.setDate(1); }
+						self._offset('m',1);
+					}
+				});
+			$("<div class='ui-datebox-gridminus"+((o.lang[o.useLang].isRTL===true)?'-rtl':'')+"'><a href='#'>"+((typeof o.lang[o.useLang].prevMonth !== 'undefined')?o.lang[o.useLang].prevMonth:o.lang.en.prevMonth)+"</a></div>")
+				.prependTo(controlsHeader).buttonMarkup({theme: o.pickPageButtonTheme, icon: 'minus', inline: true, iconpos: 'notext', corners:true, shadow:true})
+				.bind(o.clickEvent, function(e) {
+					e.preventDefault();
+					if ( ! self.calNoPrev ) {
+						if ( self.theDate.getDate() > 28 ) { self.theDate.setDate(1); }
+						self._offset('m',-1);
+					}
+				});
+				
+			if ( o.calTodayButton === true ) { // Show today button at bottom
+				self.setButton = $("<a href='#'>PlaceHolder</a>")
+					.appendTo(controlsSet).buttonMarkup({theme: o.pickPageTheme, icon: 'check', iconpos: 'left', corners:true, shadow:true})
+					.bind(o.clickEvent, function(e) {
+						e.preventDefault();
+						self.theDate = new Date();
+						self.theDate = new Date(self.theDate.getFullYear(), self.theDate.getMonth(), self.theDate.getDate(), 0,0,0,0);
+						self.input.trigger('datebox', {'method':'doset'});
+					});
+			}
+					
+			$.extend(self, {
+				controlsInput: controlsInput,
+				controlsPlus: controlsPlus
+			});
+			
+			self.pickerContent.appendTo(self.thisPage);
+		}
+		/* END:CALBOX */
+		
+		if ( o.useClearButton === true ) { // Clear button at very bottom
+			self.clearButton = $("<a href='#'>PlaceHolder</a>")
+				.appendTo(controlsSet).buttonMarkup({theme: o.pickPageTheme, icon: 'delete', iconpos: 'left', corners:true, shadow:true})
+				.bind(o.clickEvent, function(e) {
+					e.preventDefault();
+					self.input.val('');
+					self.input.trigger('datebox', {'method':'clear'});
+					self.input.trigger('datebox', {'method':'close'});
+				});
+		}
+		if ( o.collapseButtons && ( self.clearButton !== false && self.setButton !== false ) ) {
+			controlsSet.addClass('ui-datebox-collapse');
+		}
+			
+	},
+	_buttonsTitle: function () {
+		var self = this,
+			o = this.options;
+			
+		// FIX THE DIALOG TITLE LABEL
+		if ( o.titleDialogLabel === false ) {
+			if ( typeof this.element.attr('title') !== 'undefined' ) {
+				self.pickPageTitle.html(this.element.attr('title'));
+			} else if ( this.focusedEl.parent().find('label').text() !== '' ) {
+				self.pickPageTitle.html(this.focusedEl.parent().find('label').text());
+			} else {
+				switch (o.mode) {
+					case "timebox":
+					case "timeflipbox":
+						self.pickPageTitle.html(o.lang[o.useLang].titleTimeDialogLabel);
+						break;
+					default:
+						self.pickPageTitle.html(o.lang[o.useLang].titleDateDialogLabel);
+						break;
+				}
+			}
+		} else {
+			self.pickPageTitle.html(o.titleDialogLabel);
+		}
+		
+		// FIX THE CLEAR BUTTON
+		if ( self.clearButton !== false ) {
+			self.clearButton.find('.ui-btn-text').html(o.lang[o.useLang].clearButton);
+		}
+		
+		// FIX THE SET BUTTON
+		if ( self.setButton !== false ) {
+			switch (o.mode) {
+				case "timebox":
+				case "timeflipbox":
+					self.setButton.find('.ui-btn-text').html(o.lang[o.useLang].setTimeButtonLabel);
+					break;
+				case "durationbox":
+					self.setButton.find('.ui-btn-text').html(o.lang[o.useLang].setDurationButtonLabel);
+					break;
+				case "calbox":
+					self.setButton.find('.ui-btn-text').html(o.lang[o.useLang].calTodayButtonLabel);
+					break;
+				default:
+					self.setButton.find('.ui-btn-text').html(o.lang[o.useLang].setDateButtonLabel);
+					break;
+			}
+		}
+	},
+	_buildPage: function () {
+		// Build the CONSTANT controls (these never change)
+		var self = this,
+			o = self.options, 
+			pickerContent = $("<div>", { "class": 'ui-datebox-container ui-overlay-shadow ui-corner-all ui-datebox-hidden '+o.transition+' ui-body-'+o.pickPageTheme} ).css('zIndex', o.zindex),
+			screen = $("<div>", {'class':'ui-datebox-screen ui-datebox-hidden'+((o.useModal)?' ui-datebox-screen-modal':'')})
+				.css({'z-index': o.zindex-1})
+				.appendTo(self.thisPage)
+				.bind(o.clickEvent, function(event) {
+					event.preventDefault();
+					self.input.trigger('datebox', {'method':'close'});
+				});
+		
+		if ( o.noAnimation ) { pickerContent.removeClass(o.transition); }
+		
+		$.extend(self, {
+			pickerContent: pickerContent,
+			screen: screen
+		});
+		
+		self._buildInternals();
+		
+		// If useInline mode, drop it into the document, and stop a few events from working (or just hide the trigger)
+		if ( o.useInline || o.useInlineBlind ) { 
+			self.input.parent().parent().append(self.pickerContent);
+			if ( o.useInlineHideInput ) { self.input.parent().hide(); }
+			self.input.trigger('change');
+			self.pickerContent.removeClass('ui-datebox-hidden');
+		} else if ( o.centerWindow && o.useInlineHideInput ) {
+			self.input.parent().hide();
+		}
+		if ( o.useInline ) {
+			self.pickerContent.addClass('ui-datebox-inline');
+			self.open();
+		}
+		if ( o.useInlineBlind ) {
+			self.pickerContent.addClass('ui-datebox-inlineblind');
+			self.pickerContent.hide();
+		}
+			
+	},
+	hardreset: function() {
+		// Public shortcut to rebuild all internals
+		this._buildInternals();
+		this.refresh();
+		this._buttonsTitle();
+	},
+	refresh: function() {
+		// Pulic shortcut to _update, with an extra hook for inline mode.
+		if ( this.options.useInline === true ) {
+			this.input.trigger('change');
+		}
+		this._update();
+	},
+	open: function() {
+		var self = this,
+			o = this.options,
+			coords = false, // Later, if need be
+			transition = o.noAnimation ? 'none' : o.transition,
+			callback, activePage;
+			
+		// Call the open callback if provided. Additionally, if this
+		// returns falsy then the open of the dialog will be canceled
+		if ( o.openCallback !== false ) {
+			if ( ! $.isFunction(this.options.openCallback) ) {
+				if ( typeof window[o.openCallback] !== 'undefined' ) {
+					o.openCallback = window[o.openCallback];
+				} else {
+					o.openCallback = new Function(o.openCallback);
+				}
+			}
+			callback = o.openCallback.apply(self, $.merge([self.theDate],o.openCallbackArgs));
+			if ( callback == false ) { return false; }
+		}
+		
+		
+		self._buttonsTitle();
+		
+		// Open the controls
+		if ( this.options.useInlineBlind ) { this.pickerContent.slideDown(); return false; } // Just slide if blinds mode
+		if ( this.options.useInline ) { return true; } // Ignore if inline
+		if ( this.pickPage.is(':visible') ) { return false; } // Ignore if already open
+		
+		this.theDate = this._makeDate(this.input.val());
+		this._update();
+		this.input.blur(); // Grab latest value of input, in case it changed
+		
+		// If the window is less than 400px wide, use the jQM dialog method unless otherwise forced
+		if ( ( $(document).width() > 400 && !o.useDialogForceTrue ) || o.useDialogForceFalse || o.fullScreen ) {
+			coords = this._getCoords(this); // Get the coords now, since we need em.
+			o.useDialog = false;
+			if ( o.nestedBox === true && o.fullScreen === false ) { 
+				activePage = $('.ui-page-active').first(); 
+				$(activePage).append(self.pickerContent);
+				$(activePage).append(self.screen);
+			}
+			if ( o.fullScreenAlways === false || coords.width > 399 ) {
+				if ( o.useModal === true ) { // If model, fade the background screen
+					self.screen.fadeIn('slow');
+				} else { // Else just unhide it since it's transparent (with a delay to prevent insta-close)
+					setTimeout(function() {self.screen.removeClass('ui-datebox-hidden');}, 500);
+				}
+			}
+			
+			if ( o.fullScreenAlways === true || ( o.fullScreen === true && coords.width < 400 ) ) {
+				self.pickerContent.addClass('in').css({'position': 'absolute', 'text-align': 'center', 'top': coords.fullTop-5, 'left': coords.fullLeft-5, 'height': coords.high, 'width': coords.width}).removeClass('ui-datebox-hidden');
+			} else {
+				self.pickerContent.addClass('ui-overlay-shadow in').css({'position': 'absolute', 'top': coords.winTop, 'left': coords.winLeft}).removeClass('ui-datebox-hidden');
+				$(document).bind('orientationchange.datebox', {widget:self}, function(e) { self._orientChange(e); });
+				if ( o.resizeListener === true ) {
+					$(window).bind('resize.datebox', {widget:self}, function (e) { self._orientChange(e); });
+				}
+			}
+		} else {
+			// prevent the parent page from being removed from the DOM,
+			self.thisPage.unbind( "pagehide.remove" );
+			o.useDialog = true;
+			self.pickPageContent.append(self.pickerContent);
+			self.pickerContent.css({'top': 'auto', 'left': 'auto', 'marginLeft': 'auto', 'marginRight': 'auto'}).removeClass('ui-overlay-shadow ui-datebox-hidden');
+			$.mobile.changePage(self.pickPage, {'transition': transition});
+		}
+	},
+	close: function(fromCloseButton) {
+		// Close the controls
+		var self = this,
+			o = this.options,
+			callback;
+
+		if ( o.useInlineBlind ) {
+			self.pickerContent.slideUp();
+			return false; // No More!
+		}
+		if ( o.useInline ) {
+			return true;
+		}
+		
+		// Check options to see if we are closing a dialog, or removing a popup
+		if ( o.useDialog ) {
+			if (!fromCloseButton) {
+				$(self.pickPage).dialog('close');
+			}
+			if( !self.thisPage.jqmData("page").options.domCache ){
+				self.thisPage.bind( "pagehide.remove", function() {
+					$(self).remove();
+				});
+			}
+			self.pickerContent.addClass('ui-datebox-hidden').removeAttr('style').css('zIndex', self.options.zindex);
+			self.thisPage.append(self.pickerContent);
+		} else {
+			if ( o.useModal ) {
+				self.screen.fadeOut('slow');
+			} else {
+				self.screen.addClass('ui-datebox-hidden');
+			}
+			self.pickerContent.addClass('ui-datebox-hidden').removeAttr('style').css('zIndex', self.options.zindex).removeClass('in');
+		}
+		self.focusedEl.removeClass('ui-focus');
+		
+		$(document).unbind('orientationchange.datebox');
+		if ( o.resizeListener === true ) {
+			$(window).unbind('resize.datebox');
+		}
+		
+		
+		if ( o.closeCallback !== false ) {
+			if ( ! $.isFunction(o.closeCallback) ) {
+				if ( typeof window[o.closeCallback] !== 'undefined' ) {
+					o.closeCallback = window[o.closeCallback];
+				} else {
+					o.closeCallback = new Function(o.closeCallback);
+				}
+			}
+			o.closeCallback.apply(self, $.merge([self.theDate], o.closeCallbackArgs));
+			
+		}
+	},
+	disable: function(){
+		// Disable the element
+		this.element.attr("disabled",true);
+		this.element.parent().addClass("ui-disabled");
+		this.options.disabled = true;
+		this.element.blur();
+		this.input.trigger('datebox', {'method':'disable'});
+	},
+	enable: function(){
+		// Enable the element
+		this.element.attr("disabled", false);
+		this.element.parent().removeClass("ui-disabled");
+		this.options.disabled = false;
+		this.input.trigger('datebox', {'method':'enable'});
+	},
+	_setOption: function( key, value ) {
+		var noReset = ['minYear','maxYear','afterToday','beforeToday','maxDays','minDays','highDays','highDates','blackDays','blackDates','enableDates'];
+		$.Widget.prototype._setOption.apply( this, arguments );
+		if ( $.inArray(key, noReset) > -1 ) {
+			this.refresh();
+		} else {
+			this.hardreset();
+		}
+	}
+	
+  });
+	  
+  // Degrade date inputs to text inputs, suppress standard UI functions.
+  $( document ).bind( "pagebeforecreate", function( e ) {
+	$( ":jqmData(role='datebox')", e.target ).each(function() {
+		$(this).prop('type', 'text');
+	});
+  });
+  // Automatically bind to data-role='datebox' items.
+  $( document ).bind( "pagecreate create", function( e ){
+	$( document ).trigger( "dateboxbeforecreate" );
+	$( ":jqmData(role='datebox')", e.target ).each(function() {
+		if ( typeof($(this).data('datebox')) === "undefined" ) {
+			$(this).datebox();
+		}
+	});
+  });
+	
+})( jQuery );
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery-1.10.2.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery-1.10.2.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery-1.10.2.js	(revision 101)
@@ -0,0 +1,9789 @@
+/*!
+ * jQuery JavaScript Library v1.10.2
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2013-07-03T13:48Z
+ */
+(function( window, undefined ) {
+
+// Can't do this because several apps including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+// Support: Firefox 18+
+//"use strict";
+var
+	// The deferred used on DOM ready
+	readyList,
+
+	// A central reference to the root jQuery(document)
+	rootjQuery,
+
+	// Support: IE<10
+	// For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`
+	core_strundefined = typeof undefined,
+
+	// Use the correct document accordingly with window argument (sandbox)
+	location = window.location,
+	document = window.document,
+	docElem = document.documentElement,
+
+	// Map over jQuery in case of overwrite
+	_jQuery = window.jQuery,
+
+	// Map over the $ in case of overwrite
+	_$ = window.$,
+
+	// [[Class]] -> type pairs
+	class2type = {},
+
+	// List of deleted data cache ids, so we can reuse them
+	core_deletedIds = [],
+
+	core_version = "1.10.2",
+
+	// Save a reference to some core methods
+	core_concat = core_deletedIds.concat,
+	core_push = core_deletedIds.push,
+	core_slice = core_deletedIds.slice,
+	core_indexOf = core_deletedIds.indexOf,
+	core_toString = class2type.toString,
+	core_hasOwn = class2type.hasOwnProperty,
+	core_trim = core_version.trim,
+
+	// Define a local copy of jQuery
+	jQuery = function( selector, context ) {
+		// The jQuery object is actually just the init constructor 'enhanced'
+		return new jQuery.fn.init( selector, context, rootjQuery );
+	},
+
+	// Used for matching numbers
+	core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
+
+	// Used for splitting on whitespace
+	core_rnotwhite = /\S+/g,
+
+	// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
+	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+	// A simple way to check for HTML strings
+	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+	// Strict HTML recognition (#11290: must start with <)
+	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+	// Match a standalone tag
+	rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
+
+	// JSON RegExp
+	rvalidchars = /^[\],:{}\s]*$/,
+	rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+	rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
+	rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
+
+	// Matches dashed string for camelizing
+	rmsPrefix = /^-ms-/,
+	rdashAlpha = /-([\da-z])/gi,
+
+	// Used by jQuery.camelCase as callback to replace()
+	fcamelCase = function( all, letter ) {
+		return letter.toUpperCase();
+	},
+
+	// The ready event handler
+	completed = function( event ) {
+
+		// readyState === "complete" is good enough for us to call the dom ready in oldIE
+		if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
+			detach();
+			jQuery.ready();
+		}
+	},
+	// Clean-up method for dom ready events
+	detach = function() {
+		if ( document.addEventListener ) {
+			document.removeEventListener( "DOMContentLoaded", completed, false );
+			window.removeEventListener( "load", completed, false );
+
+		} else {
+			document.detachEvent( "onreadystatechange", completed );
+			window.detachEvent( "onload", completed );
+		}
+	};
+
+jQuery.fn = jQuery.prototype = {
+	// The current version of jQuery being used
+	jquery: core_version,
+
+	constructor: jQuery,
+	init: function( selector, context, rootjQuery ) {
+		var match, elem;
+
+		// HANDLE: $(""), $(null), $(undefined), $(false)
+		if ( !selector ) {
+			return this;
+		}
+
+		// Handle HTML strings
+		if ( typeof selector === "string" ) {
+			if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
+				// Assume that strings that start and end with <> are HTML and skip the regex check
+				match = [ null, selector, null ];
+
+			} else {
+				match = rquickExpr.exec( selector );
+			}
+
+			// Match html or make sure no context is specified for #id
+			if ( match && (match[1] || !context) ) {
+
+				// HANDLE: $(html) -> $(array)
+				if ( match[1] ) {
+					context = context instanceof jQuery ? context[0] : context;
+
+					// scripts is true for back-compat
+					jQuery.merge( this, jQuery.parseHTML(
+						match[1],
+						context && context.nodeType ? context.ownerDocument || context : document,
+						true
+					) );
+
+					// HANDLE: $(html, props)
+					if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
+						for ( match in context ) {
+							// Properties of context are called as methods if possible
+							if ( jQuery.isFunction( this[ match ] ) ) {
+								this[ match ]( context[ match ] );
+
+							// ...and otherwise set as attributes
+							} else {
+								this.attr( match, context[ match ] );
+							}
+						}
+					}
+
+					return this;
+
+				// HANDLE: $(#id)
+				} else {
+					elem = document.getElementById( match[2] );
+
+					// Check parentNode to catch when Blackberry 4.6 returns
+					// nodes that are no longer in the document #6963
+					if ( elem && elem.parentNode ) {
+						// Handle the case where IE and Opera return items
+						// by name instead of ID
+						if ( elem.id !== match[2] ) {
+							return rootjQuery.find( selector );
+						}
+
+						// Otherwise, we inject the element directly into the jQuery object
+						this.length = 1;
+						this[0] = elem;
+					}
+
+					this.context = document;
+					this.selector = selector;
+					return this;
+				}
+
+			// HANDLE: $(expr, $(...))
+			} else if ( !context || context.jquery ) {
+				return ( context || rootjQuery ).find( selector );
+
+			// HANDLE: $(expr, context)
+			// (which is just equivalent to: $(context).find(expr)
+			} else {
+				return this.constructor( context ).find( selector );
+			}
+
+		// HANDLE: $(DOMElement)
+		} else if ( selector.nodeType ) {
+			this.context = this[0] = selector;
+			this.length = 1;
+			return this;
+
+		// HANDLE: $(function)
+		// Shortcut for document ready
+		} else if ( jQuery.isFunction( selector ) ) {
+			return rootjQuery.ready( selector );
+		}
+
+		if ( selector.selector !== undefined ) {
+			this.selector = selector.selector;
+			this.context = selector.context;
+		}
+
+		return jQuery.makeArray( selector, this );
+	},
+
+	// Start with an empty selector
+	selector: "",
+
+	// The default length of a jQuery object is 0
+	length: 0,
+
+	toArray: function() {
+		return core_slice.call( this );
+	},
+
+	// Get the Nth element in the matched element set OR
+	// Get the whole matched element set as a clean array
+	get: function( num ) {
+		return num == null ?
+
+			// Return a 'clean' array
+			this.toArray() :
+
+			// Return just the object
+			( num < 0 ? this[ this.length + num ] : this[ num ] );
+	},
+
+	// Take an array of elements and push it onto the stack
+	// (returning the new matched element set)
+	pushStack: function( elems ) {
+
+		// Build a new jQuery matched element set
+		var ret = jQuery.merge( this.constructor(), elems );
+
+		// Add the old object onto the stack (as a reference)
+		ret.prevObject = this;
+		ret.context = this.context;
+
+		// Return the newly-formed element set
+		return ret;
+	},
+
+	// Execute a callback for every element in the matched set.
+	// (You can seed the arguments with an array of args, but this is
+	// only used internally.)
+	each: function( callback, args ) {
+		return jQuery.each( this, callback, args );
+	},
+
+	ready: function( fn ) {
+		// Add the callback
+		jQuery.ready.promise().done( fn );
+
+		return this;
+	},
+
+	slice: function() {
+		return this.pushStack( core_slice.apply( this, arguments ) );
+	},
+
+	first: function() {
+		return this.eq( 0 );
+	},
+
+	last: function() {
+		return this.eq( -1 );
+	},
+
+	eq: function( i ) {
+		var len = this.length,
+			j = +i + ( i < 0 ? len : 0 );
+		return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
+	},
+
+	map: function( callback ) {
+		return this.pushStack( jQuery.map(this, function( elem, i ) {
+			return callback.call( elem, i, elem );
+		}));
+	},
+
+	end: function() {
+		return this.prevObject || this.constructor(null);
+	},
+
+	// For internal use only.
+	// Behaves like an Array's method, not like a jQuery method.
+	push: core_push,
+	sort: [].sort,
+	splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+	var src, copyIsArray, copy, name, options, clone,
+		target = arguments[0] || {},
+		i = 1,
+		length = arguments.length,
+		deep = false;
+
+	// Handle a deep copy situation
+	if ( typeof target === "boolean" ) {
+		deep = target;
+		target = arguments[1] || {};
+		// skip the boolean and the target
+		i = 2;
+	}
+
+	// Handle case when target is a string or something (possible in deep copy)
+	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+		target = {};
+	}
+
+	// extend jQuery itself if only one argument is passed
+	if ( length === i ) {
+		target = this;
+		--i;
+	}
+
+	for ( ; i < length; i++ ) {
+		// Only deal with non-null/undefined values
+		if ( (options = arguments[ i ]) != null ) {
+			// Extend the base object
+			for ( name in options ) {
+				src = target[ name ];
+				copy = options[ name ];
+
+				// Prevent never-ending loop
+				if ( target === copy ) {
+					continue;
+				}
+
+				// Recurse if we're merging plain objects or arrays
+				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+					if ( copyIsArray ) {
+						copyIsArray = false;
+						clone = src && jQuery.isArray(src) ? src : [];
+
+					} else {
+						clone = src && jQuery.isPlainObject(src) ? src : {};
+					}
+
+					// Never move original objects, clone them
+					target[ name ] = jQuery.extend( deep, clone, copy );
+
+				// Don't bring in undefined values
+				} else if ( copy !== undefined ) {
+					target[ name ] = copy;
+				}
+			}
+		}
+	}
+
+	// Return the modified object
+	return target;
+};
+
+jQuery.extend({
+	// Unique for each copy of jQuery on the page
+	// Non-digits removed to match rinlinejQuery
+	expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ),
+
+	noConflict: function( deep ) {
+		if ( window.$ === jQuery ) {
+			window.$ = _$;
+		}
+
+		if ( deep && window.jQuery === jQuery ) {
+			window.jQuery = _jQuery;
+		}
+
+		return jQuery;
+	},
+
+	// Is the DOM ready to be used? Set to true once it occurs.
+	isReady: false,
+
+	// A counter to track how many items to wait for before
+	// the ready event fires. See #6781
+	readyWait: 1,
+
+	// Hold (or release) the ready event
+	holdReady: function( hold ) {
+		if ( hold ) {
+			jQuery.readyWait++;
+		} else {
+			jQuery.ready( true );
+		}
+	},
+
+	// Handle when the DOM is ready
+	ready: function( wait ) {
+
+		// Abort if there are pending holds or we're already ready
+		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+			return;
+		}
+
+		// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+		if ( !document.body ) {
+			return setTimeout( jQuery.ready );
+		}
+
+		// Remember that the DOM is ready
+		jQuery.isReady = true;
+
+		// If a normal DOM Ready event fired, decrement, and wait if need be
+		if ( wait !== true && --jQuery.readyWait > 0 ) {
+			return;
+		}
+
+		// If there are functions bound, to execute
+		readyList.resolveWith( document, [ jQuery ] );
+
+		// Trigger any bound ready events
+		if ( jQuery.fn.trigger ) {
+			jQuery( document ).trigger("ready").off("ready");
+		}
+	},
+
+	// See test/unit/core.js for details concerning isFunction.
+	// Since version 1.3, DOM methods and functions like alert
+	// aren't supported. They return false on IE (#2968).
+	isFunction: function( obj ) {
+		return jQuery.type(obj) === "function";
+	},
+
+	isArray: Array.isArray || function( obj ) {
+		return jQuery.type(obj) === "array";
+	},
+
+	isWindow: function( obj ) {
+		/* jshint eqeqeq: false */
+		return obj != null && obj == obj.window;
+	},
+
+	isNumeric: function( obj ) {
+		return !isNaN( parseFloat(obj) ) && isFinite( obj );
+	},
+
+	type: function( obj ) {
+		if ( obj == null ) {
+			return String( obj );
+		}
+		return typeof obj === "object" || typeof obj === "function" ?
+			class2type[ core_toString.call(obj) ] || "object" :
+			typeof obj;
+	},
+
+	isPlainObject: function( obj ) {
+		var key;
+
+		// Must be an Object.
+		// Because of IE, we also have to check the presence of the constructor property.
+		// Make sure that DOM nodes and window objects don't pass through, as well
+		if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+			return false;
+		}
+
+		try {
+			// Not own constructor property must be Object
+			if ( obj.constructor &&
+				!core_hasOwn.call(obj, "constructor") &&
+				!core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+				return false;
+			}
+		} catch ( e ) {
+			// IE8,9 Will throw exceptions on certain host objects #9897
+			return false;
+		}
+
+		// Support: IE<9
+		// Handle iteration over inherited properties before own properties.
+		if ( jQuery.support.ownLast ) {
+			for ( key in obj ) {
+				return core_hasOwn.call( obj, key );
+			}
+		}
+
+		// Own properties are enumerated firstly, so to speed up,
+		// if last one is own, then all properties are own.
+		for ( key in obj ) {}
+
+		return key === undefined || core_hasOwn.call( obj, key );
+	},
+
+	isEmptyObject: function( obj ) {
+		var name;
+		for ( name in obj ) {
+			return false;
+		}
+		return true;
+	},
+
+	error: function( msg ) {
+		throw new Error( msg );
+	},
+
+	// data: string of html
+	// context (optional): If specified, the fragment will be created in this context, defaults to document
+	// keepScripts (optional): If true, will include scripts passed in the html string
+	parseHTML: function( data, context, keepScripts ) {
+		if ( !data || typeof data !== "string" ) {
+			return null;
+		}
+		if ( typeof context === "boolean" ) {
+			keepScripts = context;
+			context = false;
+		}
+		context = context || document;
+
+		var parsed = rsingleTag.exec( data ),
+			scripts = !keepScripts && [];
+
+		// Single tag
+		if ( parsed ) {
+			return [ context.createElement( parsed[1] ) ];
+		}
+
+		parsed = jQuery.buildFragment( [ data ], context, scripts );
+		if ( scripts ) {
+			jQuery( scripts ).remove();
+		}
+		return jQuery.merge( [], parsed.childNodes );
+	},
+
+	parseJSON: function( data ) {
+		// Attempt to parse using the native JSON parser first
+		if ( window.JSON && window.JSON.parse ) {
+			return window.JSON.parse( data );
+		}
+
+		if ( data === null ) {
+			return data;
+		}
+
+		if ( typeof data === "string" ) {
+
+			// Make sure leading/trailing whitespace is removed (IE can't handle it)
+			data = jQuery.trim( data );
+
+			if ( data ) {
+				// Make sure the incoming data is actual JSON
+				// Logic borrowed from http://json.org/json2.js
+				if ( rvalidchars.test( data.replace( rvalidescape, "@" )
+					.replace( rvalidtokens, "]" )
+					.replace( rvalidbraces, "")) ) {
+
+					return ( new Function( "return " + data ) )();
+				}
+			}
+		}
+
+		jQuery.error( "Invalid JSON: " + data );
+	},
+
+	// Cross-browser xml parsing
+	parseXML: function( data ) {
+		var xml, tmp;
+		if ( !data || typeof data !== "string" ) {
+			return null;
+		}
+		try {
+			if ( window.DOMParser ) { // Standard
+				tmp = new DOMParser();
+				xml = tmp.parseFromString( data , "text/xml" );
+			} else { // IE
+				xml = new ActiveXObject( "Microsoft.XMLDOM" );
+				xml.async = "false";
+				xml.loadXML( data );
+			}
+		} catch( e ) {
+			xml = undefined;
+		}
+		if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
+			jQuery.error( "Invalid XML: " + data );
+		}
+		return xml;
+	},
+
+	noop: function() {},
+
+	// Evaluates a script in a global context
+	// Workarounds based on findings by Jim Driscoll
+	// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
+	globalEval: function( data ) {
+		if ( data && jQuery.trim( data ) ) {
+			// We use execScript on Internet Explorer
+			// We use an anonymous function so that context is window
+			// rather than jQuery in Firefox
+			( window.execScript || function( data ) {
+				window[ "eval" ].call( window, data );
+			} )( data );
+		}
+	},
+
+	// Convert dashed to camelCase; used by the css and data modules
+	// Microsoft forgot to hump their vendor prefix (#9572)
+	camelCase: function( string ) {
+		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+	},
+
+	nodeName: function( elem, name ) {
+		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+	},
+
+	// args is for internal usage only
+	each: function( obj, callback, args ) {
+		var value,
+			i = 0,
+			length = obj.length,
+			isArray = isArraylike( obj );
+
+		if ( args ) {
+			if ( isArray ) {
+				for ( ; i < length; i++ ) {
+					value = callback.apply( obj[ i ], args );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			} else {
+				for ( i in obj ) {
+					value = callback.apply( obj[ i ], args );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			}
+
+		// A special, fast, case for the most common use of each
+		} else {
+			if ( isArray ) {
+				for ( ; i < length; i++ ) {
+					value = callback.call( obj[ i ], i, obj[ i ] );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			} else {
+				for ( i in obj ) {
+					value = callback.call( obj[ i ], i, obj[ i ] );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			}
+		}
+
+		return obj;
+	},
+
+	// Use native String.trim function wherever possible
+	trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
+		function( text ) {
+			return text == null ?
+				"" :
+				core_trim.call( text );
+		} :
+
+		// Otherwise use our own trimming functionality
+		function( text ) {
+			return text == null ?
+				"" :
+				( text + "" ).replace( rtrim, "" );
+		},
+
+	// results is for internal usage only
+	makeArray: function( arr, results ) {
+		var ret = results || [];
+
+		if ( arr != null ) {
+			if ( isArraylike( Object(arr) ) ) {
+				jQuery.merge( ret,
+					typeof arr === "string" ?
+					[ arr ] : arr
+				);
+			} else {
+				core_push.call( ret, arr );
+			}
+		}
+
+		return ret;
+	},
+
+	inArray: function( elem, arr, i ) {
+		var len;
+
+		if ( arr ) {
+			if ( core_indexOf ) {
+				return core_indexOf.call( arr, elem, i );
+			}
+
+			len = arr.length;
+			i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
+
+			for ( ; i < len; i++ ) {
+				// Skip accessing in sparse arrays
+				if ( i in arr && arr[ i ] === elem ) {
+					return i;
+				}
+			}
+		}
+
+		return -1;
+	},
+
+	merge: function( first, second ) {
+		var l = second.length,
+			i = first.length,
+			j = 0;
+
+		if ( typeof l === "number" ) {
+			for ( ; j < l; j++ ) {
+				first[ i++ ] = second[ j ];
+			}
+		} else {
+			while ( second[j] !== undefined ) {
+				first[ i++ ] = second[ j++ ];
+			}
+		}
+
+		first.length = i;
+
+		return first;
+	},
+
+	grep: function( elems, callback, inv ) {
+		var retVal,
+			ret = [],
+			i = 0,
+			length = elems.length;
+		inv = !!inv;
+
+		// Go through the array, only saving the items
+		// that pass the validator function
+		for ( ; i < length; i++ ) {
+			retVal = !!callback( elems[ i ], i );
+			if ( inv !== retVal ) {
+				ret.push( elems[ i ] );
+			}
+		}
+
+		return ret;
+	},
+
+	// arg is for internal usage only
+	map: function( elems, callback, arg ) {
+		var value,
+			i = 0,
+			length = elems.length,
+			isArray = isArraylike( elems ),
+			ret = [];
+
+		// Go through the array, translating each of the items to their
+		if ( isArray ) {
+			for ( ; i < length; i++ ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret[ ret.length ] = value;
+				}
+			}
+
+		// Go through every key on the object,
+		} else {
+			for ( i in elems ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret[ ret.length ] = value;
+				}
+			}
+		}
+
+		// Flatten any nested arrays
+		return core_concat.apply( [], ret );
+	},
+
+	// A global GUID counter for objects
+	guid: 1,
+
+	// Bind a function to a context, optionally partially applying any
+	// arguments.
+	proxy: function( fn, context ) {
+		var args, proxy, tmp;
+
+		if ( typeof context === "string" ) {
+			tmp = fn[ context ];
+			context = fn;
+			fn = tmp;
+		}
+
+		// Quick check to determine if target is callable, in the spec
+		// this throws a TypeError, but we will just return undefined.
+		if ( !jQuery.isFunction( fn ) ) {
+			return undefined;
+		}
+
+		// Simulated bind
+		args = core_slice.call( arguments, 2 );
+		proxy = function() {
+			return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );
+		};
+
+		// Set the guid of unique handler to the same of original handler, so it can be removed
+		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+		return proxy;
+	},
+
+	// Multifunctional method to get and set values of a collection
+	// The value/s can optionally be executed if it's a function
+	access: function( elems, fn, key, value, chainable, emptyGet, raw ) {
+		var i = 0,
+			length = elems.length,
+			bulk = key == null;
+
+		// Sets many values
+		if ( jQuery.type( key ) === "object" ) {
+			chainable = true;
+			for ( i in key ) {
+				jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
+			}
+
+		// Sets one value
+		} else if ( value !== undefined ) {
+			chainable = true;
+
+			if ( !jQuery.isFunction( value ) ) {
+				raw = true;
+			}
+
+			if ( bulk ) {
+				// Bulk operations run against the entire set
+				if ( raw ) {
+					fn.call( elems, value );
+					fn = null;
+
+				// ...except when executing function values
+				} else {
+					bulk = fn;
+					fn = function( elem, key, value ) {
+						return bulk.call( jQuery( elem ), value );
+					};
+				}
+			}
+
+			if ( fn ) {
+				for ( ; i < length; i++ ) {
+					fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
+				}
+			}
+		}
+
+		return chainable ?
+			elems :
+
+			// Gets
+			bulk ?
+				fn.call( elems ) :
+				length ? fn( elems[0], key ) : emptyGet;
+	},
+
+	now: function() {
+		return ( new Date() ).getTime();
+	},
+
+	// A method for quickly swapping in/out CSS properties to get correct calculations.
+	// Note: this method belongs to the css module but it's needed here for the support module.
+	// If support gets modularized, this method should be moved back to the css module.
+	swap: function( elem, options, callback, args ) {
+		var ret, name,
+			old = {};
+
+		// Remember the old values, and insert the new ones
+		for ( name in options ) {
+			old[ name ] = elem.style[ name ];
+			elem.style[ name ] = options[ name ];
+		}
+
+		ret = callback.apply( elem, args || [] );
+
+		// Revert the old values
+		for ( name in options ) {
+			elem.style[ name ] = old[ name ];
+		}
+
+		return ret;
+	}
+});
+
+jQuery.ready.promise = function( obj ) {
+	if ( !readyList ) {
+
+		readyList = jQuery.Deferred();
+
+		// Catch cases where $(document).ready() is called after the browser event has already occurred.
+		// we once tried to use readyState "interactive" here, but it caused issues like the one
+		// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
+		if ( document.readyState === "complete" ) {
+			// Handle it asynchronously to allow scripts the opportunity to delay ready
+			setTimeout( jQuery.ready );
+
+		// Standards-based browsers support DOMContentLoaded
+		} else if ( document.addEventListener ) {
+			// Use the handy event callback
+			document.addEventListener( "DOMContentLoaded", completed, false );
+
+			// A fallback to window.onload, that will always work
+			window.addEventListener( "load", completed, false );
+
+		// If IE event model is used
+		} else {
+			// Ensure firing before onload, maybe late but safe also for iframes
+			document.attachEvent( "onreadystatechange", completed );
+
+			// A fallback to window.onload, that will always work
+			window.attachEvent( "onload", completed );
+
+			// If IE and not a frame
+			// continually check to see if the document is ready
+			var top = false;
+
+			try {
+				top = window.frameElement == null && document.documentElement;
+			} catch(e) {}
+
+			if ( top && top.doScroll ) {
+				(function doScrollCheck() {
+					if ( !jQuery.isReady ) {
+
+						try {
+							// Use the trick by Diego Perini
+							// http://javascript.nwbox.com/IEContentLoaded/
+							top.doScroll("left");
+						} catch(e) {
+							return setTimeout( doScrollCheck, 50 );
+						}
+
+						// detach all dom ready events
+						detach();
+
+						// and execute any waiting functions
+						jQuery.ready();
+					}
+				})();
+			}
+		}
+	}
+	return readyList.promise( obj );
+};
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+	class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+function isArraylike( obj ) {
+	var length = obj.length,
+		type = jQuery.type( obj );
+
+	if ( jQuery.isWindow( obj ) ) {
+		return false;
+	}
+
+	if ( obj.nodeType === 1 && length ) {
+		return true;
+	}
+
+	return type === "array" || type !== "function" &&
+		( length === 0 ||
+		typeof length === "number" && length > 0 && ( length - 1 ) in obj );
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+/*!
+ * Sizzle CSS Selector Engine v1.10.2
+ * http://sizzlejs.com/
+ *
+ * Copyright 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2013-07-03
+ */
+(function( window, undefined ) {
+
+var i,
+	support,
+	cachedruns,
+	Expr,
+	getText,
+	isXML,
+	compile,
+	outermostContext,
+	sortInput,
+
+	// Local document vars
+	setDocument,
+	document,
+	docElem,
+	documentIsHTML,
+	rbuggyQSA,
+	rbuggyMatches,
+	matches,
+	contains,
+
+	// Instance-specific data
+	expando = "sizzle" + -(new Date()),
+	preferredDoc = window.document,
+	dirruns = 0,
+	done = 0,
+	classCache = createCache(),
+	tokenCache = createCache(),
+	compilerCache = createCache(),
+	hasDuplicate = false,
+	sortOrder = function( a, b ) {
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+		return 0;
+	},
+
+	// General-purpose constants
+	strundefined = typeof undefined,
+	MAX_NEGATIVE = 1 << 31,
+
+	// Instance methods
+	hasOwn = ({}).hasOwnProperty,
+	arr = [],
+	pop = arr.pop,
+	push_native = arr.push,
+	push = arr.push,
+	slice = arr.slice,
+	// Use a stripped-down indexOf if we can't use a native one
+	indexOf = arr.indexOf || function( elem ) {
+		var i = 0,
+			len = this.length;
+		for ( ; i < len; i++ ) {
+			if ( this[i] === elem ) {
+				return i;
+			}
+		}
+		return -1;
+	},
+
+	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+	// Regular expressions
+
+	// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+	whitespace = "[\\x20\\t\\r\\n\\f]",
+	// http://www.w3.org/TR/css3-syntax/#characters
+	characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+	// Loosely modeled on CSS identifier characters
+	// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+	// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+	identifier = characterEncoding.replace( "w", "w#" ),
+
+	// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
+	attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
+		"*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
+
+	// Prefer arguments quoted,
+	//   then not containing pseudos/brackets,
+	//   then attribute selectors/non-parenthetical expressions,
+	//   then anything else
+	// These preferences are here to reduce the number of selectors
+	//   needing tokenize in the PSEUDO preFilter
+	pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
+
+	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+	rsibling = new RegExp( whitespace + "*[+~]" ),
+	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ),
+
+	rpseudo = new RegExp( pseudos ),
+	ridentifier = new RegExp( "^" + identifier + "$" ),
+
+	matchExpr = {
+		"ID": new RegExp( "^#(" + characterEncoding + ")" ),
+		"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+		"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+		"ATTR": new RegExp( "^" + attributes ),
+		"PSEUDO": new RegExp( "^" + pseudos ),
+		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+		// For use in libraries implementing .is()
+		// We use this for POS matching in `select`
+		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+	},
+
+	rnative = /^[^{]+\{\s*\[native \w/,
+
+	// Easily-parseable/retrievable ID or TAG or CLASS selectors
+	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+	rinputs = /^(?:input|select|textarea|button)$/i,
+	rheader = /^h\d$/i,
+
+	rescape = /'|\\/g,
+
+	// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+	funescape = function( _, escaped, escapedWhitespace ) {
+		var high = "0x" + escaped - 0x10000;
+		// NaN means non-codepoint
+		// Support: Firefox
+		// Workaround erroneous numeric interpretation of +"0x"
+		return high !== high || escapedWhitespace ?
+			escaped :
+			// BMP codepoint
+			high < 0 ?
+				String.fromCharCode( high + 0x10000 ) :
+				// Supplemental Plane codepoint (surrogate pair)
+				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+	};
+
+// Optimize for push.apply( _, NodeList )
+try {
+	push.apply(
+		(arr = slice.call( preferredDoc.childNodes )),
+		preferredDoc.childNodes
+	);
+	// Support: Android<4.0
+	// Detect silently failing push.apply
+	arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+	push = { apply: arr.length ?
+
+		// Leverage slice if possible
+		function( target, els ) {
+			push_native.apply( target, slice.call(els) );
+		} :
+
+		// Support: IE<9
+		// Otherwise append directly
+		function( target, els ) {
+			var j = target.length,
+				i = 0;
+			// Can't trust NodeList.length
+			while ( (target[j++] = els[i++]) ) {}
+			target.length = j - 1;
+		}
+	};
+}
+
+function Sizzle( selector, context, results, seed ) {
+	var match, elem, m, nodeType,
+		// QSA vars
+		i, groups, old, nid, newContext, newSelector;
+
+	if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+		setDocument( context );
+	}
+
+	context = context || document;
+	results = results || [];
+
+	if ( !selector || typeof selector !== "string" ) {
+		return results;
+	}
+
+	if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
+		return [];
+	}
+
+	if ( documentIsHTML && !seed ) {
+
+		// Shortcuts
+		if ( (match = rquickExpr.exec( selector )) ) {
+			// Speed-up: Sizzle("#ID")
+			if ( (m = match[1]) ) {
+				if ( nodeType === 9 ) {
+					elem = context.getElementById( m );
+					// Check parentNode to catch when Blackberry 4.6 returns
+					// nodes that are no longer in the document #6963
+					if ( elem && elem.parentNode ) {
+						// Handle the case where IE, Opera, and Webkit return items
+						// by name instead of ID
+						if ( elem.id === m ) {
+							results.push( elem );
+							return results;
+						}
+					} else {
+						return results;
+					}
+				} else {
+					// Context is not a document
+					if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+						contains( context, elem ) && elem.id === m ) {
+						results.push( elem );
+						return results;
+					}
+				}
+
+			// Speed-up: Sizzle("TAG")
+			} else if ( match[2] ) {
+				push.apply( results, context.getElementsByTagName( selector ) );
+				return results;
+
+			// Speed-up: Sizzle(".CLASS")
+			} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
+				push.apply( results, context.getElementsByClassName( m ) );
+				return results;
+			}
+		}
+
+		// QSA path
+		if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+			nid = old = expando;
+			newContext = context;
+			newSelector = nodeType === 9 && selector;
+
+			// qSA works strangely on Element-rooted queries
+			// We can work around this by specifying an extra ID on the root
+			// and working up from there (Thanks to Andrew Dupont for the technique)
+			// IE 8 doesn't work on object elements
+			if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+				groups = tokenize( selector );
+
+				if ( (old = context.getAttribute("id")) ) {
+					nid = old.replace( rescape, "\\$&" );
+				} else {
+					context.setAttribute( "id", nid );
+				}
+				nid = "[id='" + nid + "'] ";
+
+				i = groups.length;
+				while ( i-- ) {
+					groups[i] = nid + toSelector( groups[i] );
+				}
+				newContext = rsibling.test( selector ) && context.parentNode || context;
+				newSelector = groups.join(",");
+			}
+
+			if ( newSelector ) {
+				try {
+					push.apply( results,
+						newContext.querySelectorAll( newSelector )
+					);
+					return results;
+				} catch(qsaError) {
+				} finally {
+					if ( !old ) {
+						context.removeAttribute("id");
+					}
+				}
+			}
+		}
+	}
+
+	// All others
+	return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *	deleting the oldest entry
+ */
+function createCache() {
+	var keys = [];
+
+	function cache( key, value ) {
+		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+		if ( keys.push( key += " " ) > Expr.cacheLength ) {
+			// Only keep the most recent entries
+			delete cache[ keys.shift() ];
+		}
+		return (cache[ key ] = value);
+	}
+	return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+	fn[ expando ] = true;
+	return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+	var div = document.createElement("div");
+
+	try {
+		return !!fn( div );
+	} catch (e) {
+		return false;
+	} finally {
+		// Remove from its parent by default
+		if ( div.parentNode ) {
+			div.parentNode.removeChild( div );
+		}
+		// release memory in IE
+		div = null;
+	}
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+	var arr = attrs.split("|"),
+		i = attrs.length;
+
+	while ( i-- ) {
+		Expr.attrHandle[ arr[i] ] = handler;
+	}
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+	var cur = b && a,
+		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+			( ~b.sourceIndex || MAX_NEGATIVE ) -
+			( ~a.sourceIndex || MAX_NEGATIVE );
+
+	// Use IE sourceIndex if available on both nodes
+	if ( diff ) {
+		return diff;
+	}
+
+	// Check if b follows a
+	if ( cur ) {
+		while ( (cur = cur.nextSibling) ) {
+			if ( cur === b ) {
+				return -1;
+			}
+		}
+	}
+
+	return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return name === "input" && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return (name === "input" || name === "button") && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+	return markFunction(function( argument ) {
+		argument = +argument;
+		return markFunction(function( seed, matches ) {
+			var j,
+				matchIndexes = fn( [], seed.length, argument ),
+				i = matchIndexes.length;
+
+			// Match elements found at the specified indexes
+			while ( i-- ) {
+				if ( seed[ (j = matchIndexes[i]) ] ) {
+					seed[j] = !(matches[j] = seed[j]);
+				}
+			}
+		});
+	});
+}
+
+/**
+ * Detect xml
+ * @param {Element|Object} elem An element or a document
+ */
+isXML = Sizzle.isXML = function( elem ) {
+	// documentElement is verified for cases where it doesn't yet exist
+	// (such as loading iframes in IE - #4833)
+	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+	return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+	var doc = node ? node.ownerDocument || node : preferredDoc,
+		parent = doc.defaultView;
+
+	// If no document and documentElement is available, return
+	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+		return document;
+	}
+
+	// Set our document
+	document = doc;
+	docElem = doc.documentElement;
+
+	// Support tests
+	documentIsHTML = !isXML( doc );
+
+	// Support: IE>8
+	// If iframe document is assigned to "document" variable and if iframe has been reloaded,
+	// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
+	// IE6-8 do not support the defaultView property so parent will be undefined
+	if ( parent && parent.attachEvent && parent !== parent.top ) {
+		parent.attachEvent( "onbeforeunload", function() {
+			setDocument();
+		});
+	}
+
+	/* Attributes
+	---------------------------------------------------------------------- */
+
+	// Support: IE<8
+	// Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
+	support.attributes = assert(function( div ) {
+		div.className = "i";
+		return !div.getAttribute("className");
+	});
+
+	/* getElement(s)By*
+	---------------------------------------------------------------------- */
+
+	// Check if getElementsByTagName("*") returns only elements
+	support.getElementsByTagName = assert(function( div ) {
+		div.appendChild( doc.createComment("") );
+		return !div.getElementsByTagName("*").length;
+	});
+
+	// Check if getElementsByClassName can be trusted
+	support.getElementsByClassName = assert(function( div ) {
+		div.innerHTML = "<div class='a'></div><div class='a i'></div>";
+
+		// Support: Safari<4
+		// Catch class over-caching
+		div.firstChild.className = "i";
+		// Support: Opera<10
+		// Catch gEBCN failure to find non-leading classes
+		return div.getElementsByClassName("i").length === 2;
+	});
+
+	// Support: IE<10
+	// Check if getElementById returns elements by name
+	// The broken getElementById methods don't pick up programatically-set names,
+	// so use a roundabout getElementsByName test
+	support.getById = assert(function( div ) {
+		docElem.appendChild( div ).id = expando;
+		return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
+	});
+
+	// ID find and filter
+	if ( support.getById ) {
+		Expr.find["ID"] = function( id, context ) {
+			if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
+				var m = context.getElementById( id );
+				// Check parentNode to catch when Blackberry 4.6 returns
+				// nodes that are no longer in the document #6963
+				return m && m.parentNode ? [m] : [];
+			}
+		};
+		Expr.filter["ID"] = function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				return elem.getAttribute("id") === attrId;
+			};
+		};
+	} else {
+		// Support: IE6/7
+		// getElementById is not reliable as a find shortcut
+		delete Expr.find["ID"];
+
+		Expr.filter["ID"] =  function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
+				return node && node.value === attrId;
+			};
+		};
+	}
+
+	// Tag
+	Expr.find["TAG"] = support.getElementsByTagName ?
+		function( tag, context ) {
+			if ( typeof context.getElementsByTagName !== strundefined ) {
+				return context.getElementsByTagName( tag );
+			}
+		} :
+		function( tag, context ) {
+			var elem,
+				tmp = [],
+				i = 0,
+				results = context.getElementsByTagName( tag );
+
+			// Filter out possible comments
+			if ( tag === "*" ) {
+				while ( (elem = results[i++]) ) {
+					if ( elem.nodeType === 1 ) {
+						tmp.push( elem );
+					}
+				}
+
+				return tmp;
+			}
+			return results;
+		};
+
+	// Class
+	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+		if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
+			return context.getElementsByClassName( className );
+		}
+	};
+
+	/* QSA/matchesSelector
+	---------------------------------------------------------------------- */
+
+	// QSA and matchesSelector support
+
+	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+	rbuggyMatches = [];
+
+	// qSa(:focus) reports false when true (Chrome 21)
+	// We allow this because of a bug in IE8/9 that throws an error
+	// whenever `document.activeElement` is accessed on an iframe
+	// So, we allow :focus to pass through QSA all the time to avoid the IE error
+	// See http://bugs.jquery.com/ticket/13378
+	rbuggyQSA = [];
+
+	if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
+		// Build QSA regex
+		// Regex strategy adopted from Diego Perini
+		assert(function( div ) {
+			// Select is set to empty string on purpose
+			// This is to test IE's treatment of not explicitly
+			// setting a boolean content attribute,
+			// since its presence should be enough
+			// http://bugs.jquery.com/ticket/12359
+			div.innerHTML = "<select><option selected=''></option></select>";
+
+			// Support: IE8
+			// Boolean attributes and "value" are not treated correctly
+			if ( !div.querySelectorAll("[selected]").length ) {
+				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+			}
+
+			// Webkit/Opera - :checked should return selected option elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			// IE8 throws error here and will not see later tests
+			if ( !div.querySelectorAll(":checked").length ) {
+				rbuggyQSA.push(":checked");
+			}
+		});
+
+		assert(function( div ) {
+
+			// Support: Opera 10-12/IE8
+			// ^= $= *= and empty values
+			// Should not select anything
+			// Support: Windows 8 Native Apps
+			// The type attribute is restricted during .innerHTML assignment
+			var input = doc.createElement("input");
+			input.setAttribute( "type", "hidden" );
+			div.appendChild( input ).setAttribute( "t", "" );
+
+			if ( div.querySelectorAll("[t^='']").length ) {
+				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+			}
+
+			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+			// IE8 throws error here and will not see later tests
+			if ( !div.querySelectorAll(":enabled").length ) {
+				rbuggyQSA.push( ":enabled", ":disabled" );
+			}
+
+			// Opera 10-11 does not throw on post-comma invalid pseudos
+			div.querySelectorAll("*,:x");
+			rbuggyQSA.push(",.*:");
+		});
+	}
+
+	if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||
+		docElem.mozMatchesSelector ||
+		docElem.oMatchesSelector ||
+		docElem.msMatchesSelector) )) ) {
+
+		assert(function( div ) {
+			// Check to see if it's possible to do matchesSelector
+			// on a disconnected node (IE 9)
+			support.disconnectedMatch = matches.call( div, "div" );
+
+			// This should fail with an exception
+			// Gecko does not error, returns false instead
+			matches.call( div, "[s!='']:x" );
+			rbuggyMatches.push( "!=", pseudos );
+		});
+	}
+
+	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+	/* Contains
+	---------------------------------------------------------------------- */
+
+	// Element contains another
+	// Purposefully does not implement inclusive descendent
+	// As in, an element does not contain itself
+	contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ?
+		function( a, b ) {
+			var adown = a.nodeType === 9 ? a.documentElement : a,
+				bup = b && b.parentNode;
+			return a === bup || !!( bup && bup.nodeType === 1 && (
+				adown.contains ?
+					adown.contains( bup ) :
+					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+			));
+		} :
+		function( a, b ) {
+			if ( b ) {
+				while ( (b = b.parentNode) ) {
+					if ( b === a ) {
+						return true;
+					}
+				}
+			}
+			return false;
+		};
+
+	/* Sorting
+	---------------------------------------------------------------------- */
+
+	// Document order sorting
+	sortOrder = docElem.compareDocumentPosition ?
+	function( a, b ) {
+
+		// Flag for duplicate removal
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b );
+
+		if ( compare ) {
+			// Disconnected nodes
+			if ( compare & 1 ||
+				(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+				// Choose the first element that is related to our preferred document
+				if ( a === doc || contains(preferredDoc, a) ) {
+					return -1;
+				}
+				if ( b === doc || contains(preferredDoc, b) ) {
+					return 1;
+				}
+
+				// Maintain original order
+				return sortInput ?
+					( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+					0;
+			}
+
+			return compare & 4 ? -1 : 1;
+		}
+
+		// Not directly comparable, sort on existence of method
+		return a.compareDocumentPosition ? -1 : 1;
+	} :
+	function( a, b ) {
+		var cur,
+			i = 0,
+			aup = a.parentNode,
+			bup = b.parentNode,
+			ap = [ a ],
+			bp = [ b ];
+
+		// Exit early if the nodes are identical
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+
+		// Parentless nodes are either documents or disconnected
+		} else if ( !aup || !bup ) {
+			return a === doc ? -1 :
+				b === doc ? 1 :
+				aup ? -1 :
+				bup ? 1 :
+				sortInput ?
+				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+				0;
+
+		// If the nodes are siblings, we can do a quick check
+		} else if ( aup === bup ) {
+			return siblingCheck( a, b );
+		}
+
+		// Otherwise we need full lists of their ancestors for comparison
+		cur = a;
+		while ( (cur = cur.parentNode) ) {
+			ap.unshift( cur );
+		}
+		cur = b;
+		while ( (cur = cur.parentNode) ) {
+			bp.unshift( cur );
+		}
+
+		// Walk down the tree looking for a discrepancy
+		while ( ap[i] === bp[i] ) {
+			i++;
+		}
+
+		return i ?
+			// Do a sibling check if the nodes have a common ancestor
+			siblingCheck( ap[i], bp[i] ) :
+
+			// Otherwise nodes in our document sort first
+			ap[i] === preferredDoc ? -1 :
+			bp[i] === preferredDoc ? 1 :
+			0;
+	};
+
+	return doc;
+};
+
+Sizzle.matches = function( expr, elements ) {
+	return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	// Make sure that attribute selectors are quoted
+	expr = expr.replace( rattributeQuotes, "='$1']" );
+
+	if ( support.matchesSelector && documentIsHTML &&
+		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
+
+		try {
+			var ret = matches.call( elem, expr );
+
+			// IE 9's matchesSelector returns false on disconnected nodes
+			if ( ret || support.disconnectedMatch ||
+					// As well, disconnected nodes are said to be in a document
+					// fragment in IE 9
+					elem.document && elem.document.nodeType !== 11 ) {
+				return ret;
+			}
+		} catch(e) {}
+	}
+
+	return Sizzle( expr, document, null, [elem] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+	// Set document vars if needed
+	if ( ( context.ownerDocument || context ) !== document ) {
+		setDocument( context );
+	}
+	return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	var fn = Expr.attrHandle[ name.toLowerCase() ],
+		// Don't get fooled by Object.prototype properties (jQuery #13807)
+		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+			fn( elem, name, !documentIsHTML ) :
+			undefined;
+
+	return val === undefined ?
+		support.attributes || !documentIsHTML ?
+			elem.getAttribute( name ) :
+			(val = elem.getAttributeNode(name)) && val.specified ?
+				val.value :
+				null :
+		val;
+};
+
+Sizzle.error = function( msg ) {
+	throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+	var elem,
+		duplicates = [],
+		j = 0,
+		i = 0;
+
+	// Unless we *know* we can detect duplicates, assume their presence
+	hasDuplicate = !support.detectDuplicates;
+	sortInput = !support.sortStable && results.slice( 0 );
+	results.sort( sortOrder );
+
+	if ( hasDuplicate ) {
+		while ( (elem = results[i++]) ) {
+			if ( elem === results[ i ] ) {
+				j = duplicates.push( i );
+			}
+		}
+		while ( j-- ) {
+			results.splice( duplicates[ j ], 1 );
+		}
+	}
+
+	return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+	var node,
+		ret = "",
+		i = 0,
+		nodeType = elem.nodeType;
+
+	if ( !nodeType ) {
+		// If no nodeType, this is expected to be an array
+		for ( ; (node = elem[i]); i++ ) {
+			// Do not traverse comment nodes
+			ret += getText( node );
+		}
+	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+		// Use textContent for elements
+		// innerText usage removed for consistency of new lines (see #11153)
+		if ( typeof elem.textContent === "string" ) {
+			return elem.textContent;
+		} else {
+			// Traverse its children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				ret += getText( elem );
+			}
+		}
+	} else if ( nodeType === 3 || nodeType === 4 ) {
+		return elem.nodeValue;
+	}
+	// Do not include comment or processing instruction nodes
+
+	return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+	// Can be adjusted by the user
+	cacheLength: 50,
+
+	createPseudo: markFunction,
+
+	match: matchExpr,
+
+	attrHandle: {},
+
+	find: {},
+
+	relative: {
+		">": { dir: "parentNode", first: true },
+		" ": { dir: "parentNode" },
+		"+": { dir: "previousSibling", first: true },
+		"~": { dir: "previousSibling" }
+	},
+
+	preFilter: {
+		"ATTR": function( match ) {
+			match[1] = match[1].replace( runescape, funescape );
+
+			// Move the given value to match[3] whether quoted or unquoted
+			match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );
+
+			if ( match[2] === "~=" ) {
+				match[3] = " " + match[3] + " ";
+			}
+
+			return match.slice( 0, 4 );
+		},
+
+		"CHILD": function( match ) {
+			/* matches from matchExpr["CHILD"]
+				1 type (only|nth|...)
+				2 what (child|of-type)
+				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+				4 xn-component of xn+y argument ([+-]?\d*n|)
+				5 sign of xn-component
+				6 x of xn-component
+				7 sign of y-component
+				8 y of y-component
+			*/
+			match[1] = match[1].toLowerCase();
+
+			if ( match[1].slice( 0, 3 ) === "nth" ) {
+				// nth-* requires argument
+				if ( !match[3] ) {
+					Sizzle.error( match[0] );
+				}
+
+				// numeric x and y parameters for Expr.filter.CHILD
+				// remember that false/true cast respectively to 0/1
+				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+			// other types prohibit arguments
+			} else if ( match[3] ) {
+				Sizzle.error( match[0] );
+			}
+
+			return match;
+		},
+
+		"PSEUDO": function( match ) {
+			var excess,
+				unquoted = !match[5] && match[2];
+
+			if ( matchExpr["CHILD"].test( match[0] ) ) {
+				return null;
+			}
+
+			// Accept quoted arguments as-is
+			if ( match[3] && match[4] !== undefined ) {
+				match[2] = match[4];
+
+			// Strip excess characters from unquoted arguments
+			} else if ( unquoted && rpseudo.test( unquoted ) &&
+				// Get excess from tokenize (recursively)
+				(excess = tokenize( unquoted, true )) &&
+				// advance to the next closing parenthesis
+				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+				// excess is a negative index
+				match[0] = match[0].slice( 0, excess );
+				match[2] = unquoted.slice( 0, excess );
+			}
+
+			// Return only captures needed by the pseudo filter method (type and argument)
+			return match.slice( 0, 3 );
+		}
+	},
+
+	filter: {
+
+		"TAG": function( nodeNameSelector ) {
+			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+			return nodeNameSelector === "*" ?
+				function() { return true; } :
+				function( elem ) {
+					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+				};
+		},
+
+		"CLASS": function( className ) {
+			var pattern = classCache[ className + " " ];
+
+			return pattern ||
+				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+				classCache( className, function( elem ) {
+					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
+				});
+		},
+
+		"ATTR": function( name, operator, check ) {
+			return function( elem ) {
+				var result = Sizzle.attr( elem, name );
+
+				if ( result == null ) {
+					return operator === "!=";
+				}
+				if ( !operator ) {
+					return true;
+				}
+
+				result += "";
+
+				return operator === "=" ? result === check :
+					operator === "!=" ? result !== check :
+					operator === "^=" ? check && result.indexOf( check ) === 0 :
+					operator === "*=" ? check && result.indexOf( check ) > -1 :
+					operator === "$=" ? check && result.slice( -check.length ) === check :
+					operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
+					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+					false;
+			};
+		},
+
+		"CHILD": function( type, what, argument, first, last ) {
+			var simple = type.slice( 0, 3 ) !== "nth",
+				forward = type.slice( -4 ) !== "last",
+				ofType = what === "of-type";
+
+			return first === 1 && last === 0 ?
+
+				// Shortcut for :nth-*(n)
+				function( elem ) {
+					return !!elem.parentNode;
+				} :
+
+				function( elem, context, xml ) {
+					var cache, outerCache, node, diff, nodeIndex, start,
+						dir = simple !== forward ? "nextSibling" : "previousSibling",
+						parent = elem.parentNode,
+						name = ofType && elem.nodeName.toLowerCase(),
+						useCache = !xml && !ofType;
+
+					if ( parent ) {
+
+						// :(first|last|only)-(child|of-type)
+						if ( simple ) {
+							while ( dir ) {
+								node = elem;
+								while ( (node = node[ dir ]) ) {
+									if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
+										return false;
+									}
+								}
+								// Reverse direction for :only-* (if we haven't yet done so)
+								start = dir = type === "only" && !start && "nextSibling";
+							}
+							return true;
+						}
+
+						start = [ forward ? parent.firstChild : parent.lastChild ];
+
+						// non-xml :nth-child(...) stores cache data on `parent`
+						if ( forward && useCache ) {
+							// Seek `elem` from a previously-cached index
+							outerCache = parent[ expando ] || (parent[ expando ] = {});
+							cache = outerCache[ type ] || [];
+							nodeIndex = cache[0] === dirruns && cache[1];
+							diff = cache[0] === dirruns && cache[2];
+							node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+							while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+								// Fallback to seeking `elem` from the start
+								(diff = nodeIndex = 0) || start.pop()) ) {
+
+								// When found, cache indexes on `parent` and break
+								if ( node.nodeType === 1 && ++diff && node === elem ) {
+									outerCache[ type ] = [ dirruns, nodeIndex, diff ];
+									break;
+								}
+							}
+
+						// Use previously-cached element index if available
+						} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
+							diff = cache[1];
+
+						// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
+						} else {
+							// Use the same loop as above to seek `elem` from the start
+							while ( (node = ++nodeIndex && node && node[ dir ] ||
+								(diff = nodeIndex = 0) || start.pop()) ) {
+
+								if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
+									// Cache the index of each encountered element
+									if ( useCache ) {
+										(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
+									}
+
+									if ( node === elem ) {
+										break;
+									}
+								}
+							}
+						}
+
+						// Incorporate the offset, then check against cycle size
+						diff -= last;
+						return diff === first || ( diff % first === 0 && diff / first >= 0 );
+					}
+				};
+		},
+
+		"PSEUDO": function( pseudo, argument ) {
+			// pseudo-class names are case-insensitive
+			// http://www.w3.org/TR/selectors/#pseudo-classes
+			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+			// Remember that setFilters inherits from pseudos
+			var args,
+				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+					Sizzle.error( "unsupported pseudo: " + pseudo );
+
+			// The user may use createPseudo to indicate that
+			// arguments are needed to create the filter function
+			// just as Sizzle does
+			if ( fn[ expando ] ) {
+				return fn( argument );
+			}
+
+			// But maintain support for old signatures
+			if ( fn.length > 1 ) {
+				args = [ pseudo, pseudo, "", argument ];
+				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+					markFunction(function( seed, matches ) {
+						var idx,
+							matched = fn( seed, argument ),
+							i = matched.length;
+						while ( i-- ) {
+							idx = indexOf.call( seed, matched[i] );
+							seed[ idx ] = !( matches[ idx ] = matched[i] );
+						}
+					}) :
+					function( elem ) {
+						return fn( elem, 0, args );
+					};
+			}
+
+			return fn;
+		}
+	},
+
+	pseudos: {
+		// Potentially complex pseudos
+		"not": markFunction(function( selector ) {
+			// Trim the selector passed to compile
+			// to avoid treating leading and trailing
+			// spaces as combinators
+			var input = [],
+				results = [],
+				matcher = compile( selector.replace( rtrim, "$1" ) );
+
+			return matcher[ expando ] ?
+				markFunction(function( seed, matches, context, xml ) {
+					var elem,
+						unmatched = matcher( seed, null, xml, [] ),
+						i = seed.length;
+
+					// Match elements unmatched by `matcher`
+					while ( i-- ) {
+						if ( (elem = unmatched[i]) ) {
+							seed[i] = !(matches[i] = elem);
+						}
+					}
+				}) :
+				function( elem, context, xml ) {
+					input[0] = elem;
+					matcher( input, null, xml, results );
+					return !results.pop();
+				};
+		}),
+
+		"has": markFunction(function( selector ) {
+			return function( elem ) {
+				return Sizzle( selector, elem ).length > 0;
+			};
+		}),
+
+		"contains": markFunction(function( text ) {
+			return function( elem ) {
+				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+			};
+		}),
+
+		// "Whether an element is represented by a :lang() selector
+		// is based solely on the element's language value
+		// being equal to the identifier C,
+		// or beginning with the identifier C immediately followed by "-".
+		// The matching of C against the element's language value is performed case-insensitively.
+		// The identifier C does not have to be a valid language name."
+		// http://www.w3.org/TR/selectors/#lang-pseudo
+		"lang": markFunction( function( lang ) {
+			// lang value must be a valid identifier
+			if ( !ridentifier.test(lang || "") ) {
+				Sizzle.error( "unsupported lang: " + lang );
+			}
+			lang = lang.replace( runescape, funescape ).toLowerCase();
+			return function( elem ) {
+				var elemLang;
+				do {
+					if ( (elemLang = documentIsHTML ?
+						elem.lang :
+						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+						elemLang = elemLang.toLowerCase();
+						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+					}
+				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+				return false;
+			};
+		}),
+
+		// Miscellaneous
+		"target": function( elem ) {
+			var hash = window.location && window.location.hash;
+			return hash && hash.slice( 1 ) === elem.id;
+		},
+
+		"root": function( elem ) {
+			return elem === docElem;
+		},
+
+		"focus": function( elem ) {
+			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+		},
+
+		// Boolean properties
+		"enabled": function( elem ) {
+			return elem.disabled === false;
+		},
+
+		"disabled": function( elem ) {
+			return elem.disabled === true;
+		},
+
+		"checked": function( elem ) {
+			// In CSS3, :checked should return both checked and selected elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			var nodeName = elem.nodeName.toLowerCase();
+			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+		},
+
+		"selected": function( elem ) {
+			// Accessing this property makes selected-by-default
+			// options in Safari work properly
+			if ( elem.parentNode ) {
+				elem.parentNode.selectedIndex;
+			}
+
+			return elem.selected === true;
+		},
+
+		// Contents
+		"empty": function( elem ) {
+			// http://www.w3.org/TR/selectors/#empty-pseudo
+			// :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
+			//   not comment, processing instructions, or others
+			// Thanks to Diego Perini for the nodeName shortcut
+			//   Greater than "@" means alpha characters (specifically not starting with "#" or "?")
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) {
+					return false;
+				}
+			}
+			return true;
+		},
+
+		"parent": function( elem ) {
+			return !Expr.pseudos["empty"]( elem );
+		},
+
+		// Element/input types
+		"header": function( elem ) {
+			return rheader.test( elem.nodeName );
+		},
+
+		"input": function( elem ) {
+			return rinputs.test( elem.nodeName );
+		},
+
+		"button": function( elem ) {
+			var name = elem.nodeName.toLowerCase();
+			return name === "input" && elem.type === "button" || name === "button";
+		},
+
+		"text": function( elem ) {
+			var attr;
+			// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+			// use getAttribute instead to test this case
+			return elem.nodeName.toLowerCase() === "input" &&
+				elem.type === "text" &&
+				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type );
+		},
+
+		// Position-in-collection
+		"first": createPositionalPseudo(function() {
+			return [ 0 ];
+		}),
+
+		"last": createPositionalPseudo(function( matchIndexes, length ) {
+			return [ length - 1 ];
+		}),
+
+		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			return [ argument < 0 ? argument + length : argument ];
+		}),
+
+		"even": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 0;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"odd": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 1;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; --i >= 0; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; ++i < length; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		})
+	}
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+	Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+	Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+function tokenize( selector, parseOnly ) {
+	var matched, match, tokens, type,
+		soFar, groups, preFilters,
+		cached = tokenCache[ selector + " " ];
+
+	if ( cached ) {
+		return parseOnly ? 0 : cached.slice( 0 );
+	}
+
+	soFar = selector;
+	groups = [];
+	preFilters = Expr.preFilter;
+
+	while ( soFar ) {
+
+		// Comma and first run
+		if ( !matched || (match = rcomma.exec( soFar )) ) {
+			if ( match ) {
+				// Don't consume trailing commas as valid
+				soFar = soFar.slice( match[0].length ) || soFar;
+			}
+			groups.push( tokens = [] );
+		}
+
+		matched = false;
+
+		// Combinators
+		if ( (match = rcombinators.exec( soFar )) ) {
+			matched = match.shift();
+			tokens.push({
+				value: matched,
+				// Cast descendant combinators to space
+				type: match[0].replace( rtrim, " " )
+			});
+			soFar = soFar.slice( matched.length );
+		}
+
+		// Filters
+		for ( type in Expr.filter ) {
+			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+				(match = preFilters[ type ]( match ))) ) {
+				matched = match.shift();
+				tokens.push({
+					value: matched,
+					type: type,
+					matches: match
+				});
+				soFar = soFar.slice( matched.length );
+			}
+		}
+
+		if ( !matched ) {
+			break;
+		}
+	}
+
+	// Return the length of the invalid excess
+	// if we're just parsing
+	// Otherwise, throw an error or return tokens
+	return parseOnly ?
+		soFar.length :
+		soFar ?
+			Sizzle.error( selector ) :
+			// Cache the tokens
+			tokenCache( selector, groups ).slice( 0 );
+}
+
+function toSelector( tokens ) {
+	var i = 0,
+		len = tokens.length,
+		selector = "";
+	for ( ; i < len; i++ ) {
+		selector += tokens[i].value;
+	}
+	return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+	var dir = combinator.dir,
+		checkNonElements = base && dir === "parentNode",
+		doneName = done++;
+
+	return combinator.first ?
+		// Check against closest ancestor/preceding element
+		function( elem, context, xml ) {
+			while ( (elem = elem[ dir ]) ) {
+				if ( elem.nodeType === 1 || checkNonElements ) {
+					return matcher( elem, context, xml );
+				}
+			}
+		} :
+
+		// Check against all ancestor/preceding elements
+		function( elem, context, xml ) {
+			var data, cache, outerCache,
+				dirkey = dirruns + " " + doneName;
+
+			// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+			if ( xml ) {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						if ( matcher( elem, context, xml ) ) {
+							return true;
+						}
+					}
+				}
+			} else {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						outerCache = elem[ expando ] || (elem[ expando ] = {});
+						if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {
+							if ( (data = cache[1]) === true || data === cachedruns ) {
+								return data === true;
+							}
+						} else {
+							cache = outerCache[ dir ] = [ dirkey ];
+							cache[1] = matcher( elem, context, xml ) || cachedruns;
+							if ( cache[1] === true ) {
+								return true;
+							}
+						}
+					}
+				}
+			}
+		};
+}
+
+function elementMatcher( matchers ) {
+	return matchers.length > 1 ?
+		function( elem, context, xml ) {
+			var i = matchers.length;
+			while ( i-- ) {
+				if ( !matchers[i]( elem, context, xml ) ) {
+					return false;
+				}
+			}
+			return true;
+		} :
+		matchers[0];
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+	var elem,
+		newUnmatched = [],
+		i = 0,
+		len = unmatched.length,
+		mapped = map != null;
+
+	for ( ; i < len; i++ ) {
+		if ( (elem = unmatched[i]) ) {
+			if ( !filter || filter( elem, context, xml ) ) {
+				newUnmatched.push( elem );
+				if ( mapped ) {
+					map.push( i );
+				}
+			}
+		}
+	}
+
+	return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+	if ( postFilter && !postFilter[ expando ] ) {
+		postFilter = setMatcher( postFilter );
+	}
+	if ( postFinder && !postFinder[ expando ] ) {
+		postFinder = setMatcher( postFinder, postSelector );
+	}
+	return markFunction(function( seed, results, context, xml ) {
+		var temp, i, elem,
+			preMap = [],
+			postMap = [],
+			preexisting = results.length,
+
+			// Get initial elements from seed or context
+			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+			// Prefilter to get matcher input, preserving a map for seed-results synchronization
+			matcherIn = preFilter && ( seed || !selector ) ?
+				condense( elems, preMap, preFilter, context, xml ) :
+				elems,
+
+			matcherOut = matcher ?
+				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+					// ...intermediate processing is necessary
+					[] :
+
+					// ...otherwise use results directly
+					results :
+				matcherIn;
+
+		// Find primary matches
+		if ( matcher ) {
+			matcher( matcherIn, matcherOut, context, xml );
+		}
+
+		// Apply postFilter
+		if ( postFilter ) {
+			temp = condense( matcherOut, postMap );
+			postFilter( temp, [], context, xml );
+
+			// Un-match failing elements by moving them back to matcherIn
+			i = temp.length;
+			while ( i-- ) {
+				if ( (elem = temp[i]) ) {
+					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+				}
+			}
+		}
+
+		if ( seed ) {
+			if ( postFinder || preFilter ) {
+				if ( postFinder ) {
+					// Get the final matcherOut by condensing this intermediate into postFinder contexts
+					temp = [];
+					i = matcherOut.length;
+					while ( i-- ) {
+						if ( (elem = matcherOut[i]) ) {
+							// Restore matcherIn since elem is not yet a final match
+							temp.push( (matcherIn[i] = elem) );
+						}
+					}
+					postFinder( null, (matcherOut = []), temp, xml );
+				}
+
+				// Move matched elements from seed to results to keep them synchronized
+				i = matcherOut.length;
+				while ( i-- ) {
+					if ( (elem = matcherOut[i]) &&
+						(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
+
+						seed[temp] = !(results[temp] = elem);
+					}
+				}
+			}
+
+		// Add elements to results, through postFinder if defined
+		} else {
+			matcherOut = condense(
+				matcherOut === results ?
+					matcherOut.splice( preexisting, matcherOut.length ) :
+					matcherOut
+			);
+			if ( postFinder ) {
+				postFinder( null, results, matcherOut, xml );
+			} else {
+				push.apply( results, matcherOut );
+			}
+		}
+	});
+}
+
+function matcherFromTokens( tokens ) {
+	var checkContext, matcher, j,
+		len = tokens.length,
+		leadingRelative = Expr.relative[ tokens[0].type ],
+		implicitRelative = leadingRelative || Expr.relative[" "],
+		i = leadingRelative ? 1 : 0,
+
+		// The foundational matcher ensures that elements are reachable from top-level context(s)
+		matchContext = addCombinator( function( elem ) {
+			return elem === checkContext;
+		}, implicitRelative, true ),
+		matchAnyContext = addCombinator( function( elem ) {
+			return indexOf.call( checkContext, elem ) > -1;
+		}, implicitRelative, true ),
+		matchers = [ function( elem, context, xml ) {
+			return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+				(checkContext = context).nodeType ?
+					matchContext( elem, context, xml ) :
+					matchAnyContext( elem, context, xml ) );
+		} ];
+
+	for ( ; i < len; i++ ) {
+		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+		} else {
+			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+			// Return special upon seeing a positional matcher
+			if ( matcher[ expando ] ) {
+				// Find the next relative operator (if any) for proper handling
+				j = ++i;
+				for ( ; j < len; j++ ) {
+					if ( Expr.relative[ tokens[j].type ] ) {
+						break;
+					}
+				}
+				return setMatcher(
+					i > 1 && elementMatcher( matchers ),
+					i > 1 && toSelector(
+						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
+						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+					).replace( rtrim, "$1" ),
+					matcher,
+					i < j && matcherFromTokens( tokens.slice( i, j ) ),
+					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+					j < len && toSelector( tokens )
+				);
+			}
+			matchers.push( matcher );
+		}
+	}
+
+	return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+	// A counter to specify which element is currently being matched
+	var matcherCachedRuns = 0,
+		bySet = setMatchers.length > 0,
+		byElement = elementMatchers.length > 0,
+		superMatcher = function( seed, context, xml, results, expandContext ) {
+			var elem, j, matcher,
+				setMatched = [],
+				matchedCount = 0,
+				i = "0",
+				unmatched = seed && [],
+				outermost = expandContext != null,
+				contextBackup = outermostContext,
+				// We must always have either seed elements or context
+				elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
+				// Use integer dirruns iff this is the outermost matcher
+				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);
+
+			if ( outermost ) {
+				outermostContext = context !== document && context;
+				cachedruns = matcherCachedRuns;
+			}
+
+			// Add elements passing elementMatchers directly to results
+			// Keep `i` a string if there are no elements so `matchedCount` will be "00" below
+			for ( ; (elem = elems[i]) != null; i++ ) {
+				if ( byElement && elem ) {
+					j = 0;
+					while ( (matcher = elementMatchers[j++]) ) {
+						if ( matcher( elem, context, xml ) ) {
+							results.push( elem );
+							break;
+						}
+					}
+					if ( outermost ) {
+						dirruns = dirrunsUnique;
+						cachedruns = ++matcherCachedRuns;
+					}
+				}
+
+				// Track unmatched elements for set filters
+				if ( bySet ) {
+					// They will have gone through all possible matchers
+					if ( (elem = !matcher && elem) ) {
+						matchedCount--;
+					}
+
+					// Lengthen the array for every element, matched or not
+					if ( seed ) {
+						unmatched.push( elem );
+					}
+				}
+			}
+
+			// Apply set filters to unmatched elements
+			matchedCount += i;
+			if ( bySet && i !== matchedCount ) {
+				j = 0;
+				while ( (matcher = setMatchers[j++]) ) {
+					matcher( unmatched, setMatched, context, xml );
+				}
+
+				if ( seed ) {
+					// Reintegrate element matches to eliminate the need for sorting
+					if ( matchedCount > 0 ) {
+						while ( i-- ) {
+							if ( !(unmatched[i] || setMatched[i]) ) {
+								setMatched[i] = pop.call( results );
+							}
+						}
+					}
+
+					// Discard index placeholder values to get only actual matches
+					setMatched = condense( setMatched );
+				}
+
+				// Add matches to results
+				push.apply( results, setMatched );
+
+				// Seedless set matches succeeding multiple successful matchers stipulate sorting
+				if ( outermost && !seed && setMatched.length > 0 &&
+					( matchedCount + setMatchers.length ) > 1 ) {
+
+					Sizzle.uniqueSort( results );
+				}
+			}
+
+			// Override manipulation of globals by nested matchers
+			if ( outermost ) {
+				dirruns = dirrunsUnique;
+				outermostContext = contextBackup;
+			}
+
+			return unmatched;
+		};
+
+	return bySet ?
+		markFunction( superMatcher ) :
+		superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
+	var i,
+		setMatchers = [],
+		elementMatchers = [],
+		cached = compilerCache[ selector + " " ];
+
+	if ( !cached ) {
+		// Generate a function of recursive functions that can be used to check each element
+		if ( !group ) {
+			group = tokenize( selector );
+		}
+		i = group.length;
+		while ( i-- ) {
+			cached = matcherFromTokens( group[i] );
+			if ( cached[ expando ] ) {
+				setMatchers.push( cached );
+			} else {
+				elementMatchers.push( cached );
+			}
+		}
+
+		// Cache the compiled function
+		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+	}
+	return cached;
+};
+
+function multipleContexts( selector, contexts, results ) {
+	var i = 0,
+		len = contexts.length;
+	for ( ; i < len; i++ ) {
+		Sizzle( selector, contexts[i], results );
+	}
+	return results;
+}
+
+function select( selector, context, results, seed ) {
+	var i, tokens, token, type, find,
+		match = tokenize( selector );
+
+	if ( !seed ) {
+		// Try to minimize operations if there is only one group
+		if ( match.length === 1 ) {
+
+			// Take a shortcut and set the context if the root selector is an ID
+			tokens = match[0] = match[0].slice( 0 );
+			if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+					support.getById && context.nodeType === 9 && documentIsHTML &&
+					Expr.relative[ tokens[1].type ] ) {
+
+				context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+				if ( !context ) {
+					return results;
+				}
+				selector = selector.slice( tokens.shift().value.length );
+			}
+
+			// Fetch a seed set for right-to-left matching
+			i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+			while ( i-- ) {
+				token = tokens[i];
+
+				// Abort if we hit a combinator
+				if ( Expr.relative[ (type = token.type) ] ) {
+					break;
+				}
+				if ( (find = Expr.find[ type ]) ) {
+					// Search, expanding context for leading sibling combinators
+					if ( (seed = find(
+						token.matches[0].replace( runescape, funescape ),
+						rsibling.test( tokens[0].type ) && context.parentNode || context
+					)) ) {
+
+						// If seed is empty or no tokens remain, we can return early
+						tokens.splice( i, 1 );
+						selector = seed.length && toSelector( tokens );
+						if ( !selector ) {
+							push.apply( results, seed );
+							return results;
+						}
+
+						break;
+					}
+				}
+			}
+		}
+	}
+
+	// Compile and execute a filtering function
+	// Provide `match` to avoid retokenization if we modified the selector above
+	compile( selector, match )(
+		seed,
+		context,
+		!documentIsHTML,
+		results,
+		rsibling.test( selector )
+	);
+	return results;
+}
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome<14
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+	// Should return 1, but returns 4 (following)
+	return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+	div.innerHTML = "<a href='#'></a>";
+	return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+	addHandle( "type|href|height|width", function( elem, name, isXML ) {
+		if ( !isXML ) {
+			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+		}
+	});
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+	div.innerHTML = "<input/>";
+	div.firstChild.setAttribute( "value", "" );
+	return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+	addHandle( "value", function( elem, name, isXML ) {
+		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+			return elem.defaultValue;
+		}
+	});
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+	return div.getAttribute("disabled") == null;
+}) ) {
+	addHandle( booleans, function( elem, name, isXML ) {
+		var val;
+		if ( !isXML ) {
+			return (val = elem.getAttributeNode( name )) && val.specified ?
+				val.value :
+				elem[ name ] === true ? name.toLowerCase() : null;
+		}
+	});
+}
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.pseudos;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})( window );
+// String to Object options format cache
+var optionsCache = {};
+
+// Convert String-formatted options into Object-formatted ones and store in cache
+function createOptions( options ) {
+	var object = optionsCache[ options ] = {};
+	jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {
+		object[ flag ] = true;
+	});
+	return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *	options: an optional list of space-separated options that will change how
+ *			the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ *	once:			will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *	memory:			will keep track of previous values and will call any callback added
+ *					after the list has been fired right away with the latest "memorized"
+ *					values (like a Deferred)
+ *
+ *	unique:			will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *	stopOnFalse:	interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+	// Convert options from String-formatted to Object-formatted if needed
+	// (we check in cache first)
+	options = typeof options === "string" ?
+		( optionsCache[ options ] || createOptions( options ) ) :
+		jQuery.extend( {}, options );
+
+	var // Flag to know if list is currently firing
+		firing,
+		// Last fire value (for non-forgettable lists)
+		memory,
+		// Flag to know if list was already fired
+		fired,
+		// End of the loop when firing
+		firingLength,
+		// Index of currently firing callback (modified by remove if needed)
+		firingIndex,
+		// First callback to fire (used internally by add and fireWith)
+		firingStart,
+		// Actual callback list
+		list = [],
+		// Stack of fire calls for repeatable lists
+		stack = !options.once && [],
+		// Fire callbacks
+		fire = function( data ) {
+			memory = options.memory && data;
+			fired = true;
+			firingIndex = firingStart || 0;
+			firingStart = 0;
+			firingLength = list.length;
+			firing = true;
+			for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+				if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
+					memory = false; // To prevent further calls using add
+					break;
+				}
+			}
+			firing = false;
+			if ( list ) {
+				if ( stack ) {
+					if ( stack.length ) {
+						fire( stack.shift() );
+					}
+				} else if ( memory ) {
+					list = [];
+				} else {
+					self.disable();
+				}
+			}
+		},
+		// Actual Callbacks object
+		self = {
+			// Add a callback or a collection of callbacks to the list
+			add: function() {
+				if ( list ) {
+					// First, we save the current length
+					var start = list.length;
+					(function add( args ) {
+						jQuery.each( args, function( _, arg ) {
+							var type = jQuery.type( arg );
+							if ( type === "function" ) {
+								if ( !options.unique || !self.has( arg ) ) {
+									list.push( arg );
+								}
+							} else if ( arg && arg.length && type !== "string" ) {
+								// Inspect recursively
+								add( arg );
+							}
+						});
+					})( arguments );
+					// Do we need to add the callbacks to the
+					// current firing batch?
+					if ( firing ) {
+						firingLength = list.length;
+					// With memory, if we're not firing then
+					// we should call right away
+					} else if ( memory ) {
+						firingStart = start;
+						fire( memory );
+					}
+				}
+				return this;
+			},
+			// Remove a callback from the list
+			remove: function() {
+				if ( list ) {
+					jQuery.each( arguments, function( _, arg ) {
+						var index;
+						while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+							list.splice( index, 1 );
+							// Handle firing indexes
+							if ( firing ) {
+								if ( index <= firingLength ) {
+									firingLength--;
+								}
+								if ( index <= firingIndex ) {
+									firingIndex--;
+								}
+							}
+						}
+					});
+				}
+				return this;
+			},
+			// Check if a given callback is in the list.
+			// If no argument is given, return whether or not list has callbacks attached.
+			has: function( fn ) {
+				return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
+			},
+			// Remove all callbacks from the list
+			empty: function() {
+				list = [];
+				firingLength = 0;
+				return this;
+			},
+			// Have the list do nothing anymore
+			disable: function() {
+				list = stack = memory = undefined;
+				return this;
+			},
+			// Is it disabled?
+			disabled: function() {
+				return !list;
+			},
+			// Lock the list in its current state
+			lock: function() {
+				stack = undefined;
+				if ( !memory ) {
+					self.disable();
+				}
+				return this;
+			},
+			// Is it locked?
+			locked: function() {
+				return !stack;
+			},
+			// Call all callbacks with the given context and arguments
+			fireWith: function( context, args ) {
+				if ( list && ( !fired || stack ) ) {
+					args = args || [];
+					args = [ context, args.slice ? args.slice() : args ];
+					if ( firing ) {
+						stack.push( args );
+					} else {
+						fire( args );
+					}
+				}
+				return this;
+			},
+			// Call all the callbacks with the given arguments
+			fire: function() {
+				self.fireWith( this, arguments );
+				return this;
+			},
+			// To know if the callbacks have already been called at least once
+			fired: function() {
+				return !!fired;
+			}
+		};
+
+	return self;
+};
+jQuery.extend({
+
+	Deferred: function( func ) {
+		var tuples = [
+				// action, add listener, listener list, final state
+				[ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
+				[ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
+				[ "notify", "progress", jQuery.Callbacks("memory") ]
+			],
+			state = "pending",
+			promise = {
+				state: function() {
+					return state;
+				},
+				always: function() {
+					deferred.done( arguments ).fail( arguments );
+					return this;
+				},
+				then: function( /* fnDone, fnFail, fnProgress */ ) {
+					var fns = arguments;
+					return jQuery.Deferred(function( newDefer ) {
+						jQuery.each( tuples, function( i, tuple ) {
+							var action = tuple[ 0 ],
+								fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
+							// deferred[ done | fail | progress ] for forwarding actions to newDefer
+							deferred[ tuple[1] ](function() {
+								var returned = fn && fn.apply( this, arguments );
+								if ( returned && jQuery.isFunction( returned.promise ) ) {
+									returned.promise()
+										.done( newDefer.resolve )
+										.fail( newDefer.reject )
+										.progress( newDefer.notify );
+								} else {
+									newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
+								}
+							});
+						});
+						fns = null;
+					}).promise();
+				},
+				// Get a promise for this deferred
+				// If obj is provided, the promise aspect is added to the object
+				promise: function( obj ) {
+					return obj != null ? jQuery.extend( obj, promise ) : promise;
+				}
+			},
+			deferred = {};
+
+		// Keep pipe for back-compat
+		promise.pipe = promise.then;
+
+		// Add list-specific methods
+		jQuery.each( tuples, function( i, tuple ) {
+			var list = tuple[ 2 ],
+				stateString = tuple[ 3 ];
+
+			// promise[ done | fail | progress ] = list.add
+			promise[ tuple[1] ] = list.add;
+
+			// Handle state
+			if ( stateString ) {
+				list.add(function() {
+					// state = [ resolved | rejected ]
+					state = stateString;
+
+				// [ reject_list | resolve_list ].disable; progress_list.lock
+				}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
+			}
+
+			// deferred[ resolve | reject | notify ]
+			deferred[ tuple[0] ] = function() {
+				deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
+				return this;
+			};
+			deferred[ tuple[0] + "With" ] = list.fireWith;
+		});
+
+		// Make the deferred a promise
+		promise.promise( deferred );
+
+		// Call given func if any
+		if ( func ) {
+			func.call( deferred, deferred );
+		}
+
+		// All done!
+		return deferred;
+	},
+
+	// Deferred helper
+	when: function( subordinate /* , ..., subordinateN */ ) {
+		var i = 0,
+			resolveValues = core_slice.call( arguments ),
+			length = resolveValues.length,
+
+			// the count of uncompleted subordinates
+			remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+			// the master Deferred. If resolveValues consist of only a single Deferred, just use that.
+			deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+			// Update function for both resolve and progress values
+			updateFunc = function( i, contexts, values ) {
+				return function( value ) {
+					contexts[ i ] = this;
+					values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
+					if( values === progressValues ) {
+						deferred.notifyWith( contexts, values );
+					} else if ( !( --remaining ) ) {
+						deferred.resolveWith( contexts, values );
+					}
+				};
+			},
+
+			progressValues, progressContexts, resolveContexts;
+
+		// add listeners to Deferred subordinates; treat others as resolved
+		if ( length > 1 ) {
+			progressValues = new Array( length );
+			progressContexts = new Array( length );
+			resolveContexts = new Array( length );
+			for ( ; i < length; i++ ) {
+				if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+					resolveValues[ i ].promise()
+						.done( updateFunc( i, resolveContexts, resolveValues ) )
+						.fail( deferred.reject )
+						.progress( updateFunc( i, progressContexts, progressValues ) );
+				} else {
+					--remaining;
+				}
+			}
+		}
+
+		// if we're not waiting on anything, resolve the master
+		if ( !remaining ) {
+			deferred.resolveWith( resolveContexts, resolveValues );
+		}
+
+		return deferred.promise();
+	}
+});
+jQuery.support = (function( support ) {
+
+	var all, a, input, select, fragment, opt, eventName, isSupported, i,
+		div = document.createElement("div");
+
+	// Setup
+	div.setAttribute( "className", "t" );
+	div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
+
+	// Finish early in limited (non-browser) environments
+	all = div.getElementsByTagName("*") || [];
+	a = div.getElementsByTagName("a")[ 0 ];
+	if ( !a || !a.style || !all.length ) {
+		return support;
+	}
+
+	// First batch of tests
+	select = document.createElement("select");
+	opt = select.appendChild( document.createElement("option") );
+	input = div.getElementsByTagName("input")[ 0 ];
+
+	a.style.cssText = "top:1px;float:left;opacity:.5";
+
+	// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
+	support.getSetAttribute = div.className !== "t";
+
+	// IE strips leading whitespace when .innerHTML is used
+	support.leadingWhitespace = div.firstChild.nodeType === 3;
+
+	// Make sure that tbody elements aren't automatically inserted
+	// IE will insert them into empty tables
+	support.tbody = !div.getElementsByTagName("tbody").length;
+
+	// Make sure that link elements get serialized correctly by innerHTML
+	// This requires a wrapper element in IE
+	support.htmlSerialize = !!div.getElementsByTagName("link").length;
+
+	// Get the style information from getAttribute
+	// (IE uses .cssText instead)
+	support.style = /top/.test( a.getAttribute("style") );
+
+	// Make sure that URLs aren't manipulated
+	// (IE normalizes it by default)
+	support.hrefNormalized = a.getAttribute("href") === "/a";
+
+	// Make sure that element opacity exists
+	// (IE uses filter instead)
+	// Use a regex to work around a WebKit issue. See #5145
+	support.opacity = /^0.5/.test( a.style.opacity );
+
+	// Verify style float existence
+	// (IE uses styleFloat instead of cssFloat)
+	support.cssFloat = !!a.style.cssFloat;
+
+	// Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
+	support.checkOn = !!input.value;
+
+	// Make sure that a selected-by-default option has a working selected property.
+	// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+	support.optSelected = opt.selected;
+
+	// Tests for enctype support on a form (#6743)
+	support.enctype = !!document.createElement("form").enctype;
+
+	// Makes sure cloning an html5 element does not cause problems
+	// Where outerHTML is undefined, this still works
+	support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>";
+
+	// Will be defined later
+	support.inlineBlockNeedsLayout = false;
+	support.shrinkWrapBlocks = false;
+	support.pixelPosition = false;
+	support.deleteExpando = true;
+	support.noCloneEvent = true;
+	support.reliableMarginRight = true;
+	support.boxSizingReliable = true;
+
+	// Make sure checked status is properly cloned
+	input.checked = true;
+	support.noCloneChecked = input.cloneNode( true ).checked;
+
+	// Make sure that the options inside disabled selects aren't marked as disabled
+	// (WebKit marks them as disabled)
+	select.disabled = true;
+	support.optDisabled = !opt.disabled;
+
+	// Support: IE<9
+	try {
+		delete div.test;
+	} catch( e ) {
+		support.deleteExpando = false;
+	}
+
+	// Check if we can trust getAttribute("value")
+	input = document.createElement("input");
+	input.setAttribute( "value", "" );
+	support.input = input.getAttribute( "value" ) === "";
+
+	// Check if an input maintains its value after becoming a radio
+	input.value = "t";
+	input.setAttribute( "type", "radio" );
+	support.radioValue = input.value === "t";
+
+	// #11217 - WebKit loses check when the name is after the checked attribute
+	input.setAttribute( "checked", "t" );
+	input.setAttribute( "name", "t" );
+
+	fragment = document.createDocumentFragment();
+	fragment.appendChild( input );
+
+	// Check if a disconnected checkbox will retain its checked
+	// value of true after appended to the DOM (IE6/7)
+	support.appendChecked = input.checked;
+
+	// WebKit doesn't clone checked state correctly in fragments
+	support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+	// Support: IE<9
+	// Opera does not clone events (and typeof div.attachEvent === undefined).
+	// IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
+	if ( div.attachEvent ) {
+		div.attachEvent( "onclick", function() {
+			support.noCloneEvent = false;
+		});
+
+		div.cloneNode( true ).click();
+	}
+
+	// Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)
+	// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)
+	for ( i in { submit: true, change: true, focusin: true }) {
+		div.setAttribute( eventName = "on" + i, "t" );
+
+		support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false;
+	}
+
+	div.style.backgroundClip = "content-box";
+	div.cloneNode( true ).style.backgroundClip = "";
+	support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+	// Support: IE<9
+	// Iteration over object's inherited properties before its own.
+	for ( i in jQuery( support ) ) {
+		break;
+	}
+	support.ownLast = i !== "0";
+
+	// Run tests that need a body at doc ready
+	jQuery(function() {
+		var container, marginDiv, tds,
+			divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
+			body = document.getElementsByTagName("body")[0];
+
+		if ( !body ) {
+			// Return for frameset docs that don't have a body
+			return;
+		}
+
+		container = document.createElement("div");
+		container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
+
+		body.appendChild( container ).appendChild( div );
+
+		// Support: IE8
+		// Check if table cells still have offsetWidth/Height when they are set
+		// to display:none and there are still other visible table cells in a
+		// table row; if so, offsetWidth/Height are not reliable for use when
+		// determining if an element has been hidden directly using
+		// display:none (it is still safe to use offsets if a parent element is
+		// hidden; don safety goggles and see bug #4512 for more information).
+		div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
+		tds = div.getElementsByTagName("td");
+		tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
+		isSupported = ( tds[ 0 ].offsetHeight === 0 );
+
+		tds[ 0 ].style.display = "";
+		tds[ 1 ].style.display = "none";
+
+		// Support: IE8
+		// Check if empty table cells still have offsetWidth/Height
+		support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
+
+		// Check box-sizing and margin behavior.
+		div.innerHTML = "";
+		div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
+
+		// Workaround failing boxSizing test due to offsetWidth returning wrong value
+		// with some non-1 values of body zoom, ticket #13543
+		jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() {
+			support.boxSizing = div.offsetWidth === 4;
+		});
+
+		// Use window.getComputedStyle because jsdom on node.js will break without it.
+		if ( window.getComputedStyle ) {
+			support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
+			support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
+
+			// Check if div with explicit width and no margin-right incorrectly
+			// gets computed margin-right based on width of container. (#3333)
+			// Fails in WebKit before Feb 2011 nightlies
+			// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+			marginDiv = div.appendChild( document.createElement("div") );
+			marginDiv.style.cssText = div.style.cssText = divReset;
+			marginDiv.style.marginRight = marginDiv.style.width = "0";
+			div.style.width = "1px";
+
+			support.reliableMarginRight =
+				!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
+		}
+
+		if ( typeof div.style.zoom !== core_strundefined ) {
+			// Support: IE<8
+			// Check if natively block-level elements act like inline-block
+			// elements when setting their display to 'inline' and giving
+			// them layout
+			div.innerHTML = "";
+			div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
+			support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
+
+			// Support: IE6
+			// Check if elements with layout shrink-wrap their children
+			div.style.display = "block";
+			div.innerHTML = "<div></div>";
+			div.firstChild.style.width = "5px";
+			support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
+
+			if ( support.inlineBlockNeedsLayout ) {
+				// Prevent IE 6 from affecting layout for positioned elements #11048
+				// Prevent IE from shrinking the body in IE 7 mode #12869
+				// Support: IE<8
+				body.style.zoom = 1;
+			}
+		}
+
+		body.removeChild( container );
+
+		// Null elements to avoid leaks in IE
+		container = div = tds = marginDiv = null;
+	});
+
+	// Null elements to avoid leaks in IE
+	all = select = fragment = opt = a = input = null;
+
+	return support;
+})({});
+
+var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
+	rmultiDash = /([A-Z])/g;
+
+function internalData( elem, name, data, pvt /* Internal Use Only */ ){
+	if ( !jQuery.acceptData( elem ) ) {
+		return;
+	}
+
+	var ret, thisCache,
+		internalKey = jQuery.expando,
+
+		// We have to handle DOM nodes and JS objects differently because IE6-7
+		// can't GC object references properly across the DOM-JS boundary
+		isNode = elem.nodeType,
+
+		// Only DOM nodes need the global jQuery cache; JS object data is
+		// attached directly to the object so GC can occur automatically
+		cache = isNode ? jQuery.cache : elem,
+
+		// Only defining an ID for JS objects if its cache already exists allows
+		// the code to shortcut on the same path as a DOM node with no cache
+		id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
+
+	// Avoid doing any more work than we need to when trying to get data on an
+	// object that has no data at all
+	if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) {
+		return;
+	}
+
+	if ( !id ) {
+		// Only DOM nodes need a new unique ID for each element since their data
+		// ends up in the global cache
+		if ( isNode ) {
+			id = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++;
+		} else {
+			id = internalKey;
+		}
+	}
+
+	if ( !cache[ id ] ) {
+		// Avoid exposing jQuery metadata on plain JS objects when the object
+		// is serialized using JSON.stringify
+		cache[ id ] = isNode ? {} : { toJSON: jQuery.noop };
+	}
+
+	// An object can be passed to jQuery.data instead of a key/value pair; this gets
+	// shallow copied over onto the existing cache
+	if ( typeof name === "object" || typeof name === "function" ) {
+		if ( pvt ) {
+			cache[ id ] = jQuery.extend( cache[ id ], name );
+		} else {
+			cache[ id ].data = jQuery.extend( cache[ id ].data, name );
+		}
+	}
+
+	thisCache = cache[ id ];
+
+	// jQuery data() is stored in a separate object inside the object's internal data
+	// cache in order to avoid key collisions between internal data and user-defined
+	// data.
+	if ( !pvt ) {
+		if ( !thisCache.data ) {
+			thisCache.data = {};
+		}
+
+		thisCache = thisCache.data;
+	}
+
+	if ( data !== undefined ) {
+		thisCache[ jQuery.camelCase( name ) ] = data;
+	}
+
+	// Check for both converted-to-camel and non-converted data property names
+	// If a data property was specified
+	if ( typeof name === "string" ) {
+
+		// First Try to find as-is property data
+		ret = thisCache[ name ];
+
+		// Test for null|undefined property data
+		if ( ret == null ) {
+
+			// Try to find the camelCased property
+			ret = thisCache[ jQuery.camelCase( name ) ];
+		}
+	} else {
+		ret = thisCache;
+	}
+
+	return ret;
+}
+
+function internalRemoveData( elem, name, pvt ) {
+	if ( !jQuery.acceptData( elem ) ) {
+		return;
+	}
+
+	var thisCache, i,
+		isNode = elem.nodeType,
+
+		// See jQuery.data for more information
+		cache = isNode ? jQuery.cache : elem,
+		id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
+
+	// If there is already no cache entry for this object, there is no
+	// purpose in continuing
+	if ( !cache[ id ] ) {
+		return;
+	}
+
+	if ( name ) {
+
+		thisCache = pvt ? cache[ id ] : cache[ id ].data;
+
+		if ( thisCache ) {
+
+			// Support array or space separated string names for data keys
+			if ( !jQuery.isArray( name ) ) {
+
+				// try the string as a key before any manipulation
+				if ( name in thisCache ) {
+					name = [ name ];
+				} else {
+
+					// split the camel cased version by spaces unless a key with the spaces exists
+					name = jQuery.camelCase( name );
+					if ( name in thisCache ) {
+						name = [ name ];
+					} else {
+						name = name.split(" ");
+					}
+				}
+			} else {
+				// If "name" is an array of keys...
+				// When data is initially created, via ("key", "val") signature,
+				// keys will be converted to camelCase.
+				// Since there is no way to tell _how_ a key was added, remove
+				// both plain key and camelCase key. #12786
+				// This will only penalize the array argument path.
+				name = name.concat( jQuery.map( name, jQuery.camelCase ) );
+			}
+
+			i = name.length;
+			while ( i-- ) {
+				delete thisCache[ name[i] ];
+			}
+
+			// If there is no data left in the cache, we want to continue
+			// and let the cache object itself get destroyed
+			if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {
+				return;
+			}
+		}
+	}
+
+	// See jQuery.data for more information
+	if ( !pvt ) {
+		delete cache[ id ].data;
+
+		// Don't destroy the parent cache unless the internal data object
+		// had been the only thing left in it
+		if ( !isEmptyDataObject( cache[ id ] ) ) {
+			return;
+		}
+	}
+
+	// Destroy the cache
+	if ( isNode ) {
+		jQuery.cleanData( [ elem ], true );
+
+	// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
+	/* jshint eqeqeq: false */
+	} else if ( jQuery.support.deleteExpando || cache != cache.window ) {
+		/* jshint eqeqeq: true */
+		delete cache[ id ];
+
+	// When all else fails, null
+	} else {
+		cache[ id ] = null;
+	}
+}
+
+jQuery.extend({
+	cache: {},
+
+	// The following elements throw uncatchable exceptions if you
+	// attempt to add expando properties to them.
+	noData: {
+		"applet": true,
+		"embed": true,
+		// Ban all objects except for Flash (which handle expandos)
+		"object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
+	},
+
+	hasData: function( elem ) {
+		elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
+		return !!elem && !isEmptyDataObject( elem );
+	},
+
+	data: function( elem, name, data ) {
+		return internalData( elem, name, data );
+	},
+
+	removeData: function( elem, name ) {
+		return internalRemoveData( elem, name );
+	},
+
+	// For internal use only.
+	_data: function( elem, name, data ) {
+		return internalData( elem, name, data, true );
+	},
+
+	_removeData: function( elem, name ) {
+		return internalRemoveData( elem, name, true );
+	},
+
+	// A method for determining if a DOM node can handle the data expando
+	acceptData: function( elem ) {
+		// Do not set data on non-element because it will not be cleared (#8335).
+		if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {
+			return false;
+		}
+
+		var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+		// nodes accept data unless otherwise specified; rejection can be conditional
+		return !noData || noData !== true && elem.getAttribute("classid") === noData;
+	}
+});
+
+jQuery.fn.extend({
+	data: function( key, value ) {
+		var attrs, name,
+			data = null,
+			i = 0,
+			elem = this[0];
+
+		// Special expections of .data basically thwart jQuery.access,
+		// so implement the relevant behavior ourselves
+
+		// Gets all values
+		if ( key === undefined ) {
+			if ( this.length ) {
+				data = jQuery.data( elem );
+
+				if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
+					attrs = elem.attributes;
+					for ( ; i < attrs.length; i++ ) {
+						name = attrs[i].name;
+
+						if ( name.indexOf("data-") === 0 ) {
+							name = jQuery.camelCase( name.slice(5) );
+
+							dataAttr( elem, name, data[ name ] );
+						}
+					}
+					jQuery._data( elem, "parsedAttrs", true );
+				}
+			}
+
+			return data;
+		}
+
+		// Sets multiple values
+		if ( typeof key === "object" ) {
+			return this.each(function() {
+				jQuery.data( this, key );
+			});
+		}
+
+		return arguments.length > 1 ?
+
+			// Sets one value
+			this.each(function() {
+				jQuery.data( this, key, value );
+			}) :
+
+			// Gets one value
+			// Try to fetch any internally stored data first
+			elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;
+	},
+
+	removeData: function( key ) {
+		return this.each(function() {
+			jQuery.removeData( this, key );
+		});
+	}
+});
+
+function dataAttr( elem, key, data ) {
+	// If nothing was found internally, try to fetch any
+	// data from the HTML5 data-* attribute
+	if ( data === undefined && elem.nodeType === 1 ) {
+
+		var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+
+		data = elem.getAttribute( name );
+
+		if ( typeof data === "string" ) {
+			try {
+				data = data === "true" ? true :
+					data === "false" ? false :
+					data === "null" ? null :
+					// Only convert to a number if it doesn't change the string
+					+data + "" === data ? +data :
+					rbrace.test( data ) ? jQuery.parseJSON( data ) :
+						data;
+			} catch( e ) {}
+
+			// Make sure we set the data so it isn't changed later
+			jQuery.data( elem, key, data );
+
+		} else {
+			data = undefined;
+		}
+	}
+
+	return data;
+}
+
+// checks a cache object for emptiness
+function isEmptyDataObject( obj ) {
+	var name;
+	for ( name in obj ) {
+
+		// if the public data object is empty, the private is still empty
+		if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
+			continue;
+		}
+		if ( name !== "toJSON" ) {
+			return false;
+		}
+	}
+
+	return true;
+}
+jQuery.extend({
+	queue: function( elem, type, data ) {
+		var queue;
+
+		if ( elem ) {
+			type = ( type || "fx" ) + "queue";
+			queue = jQuery._data( elem, type );
+
+			// Speed up dequeue by getting out quickly if this is just a lookup
+			if ( data ) {
+				if ( !queue || jQuery.isArray(data) ) {
+					queue = jQuery._data( elem, type, jQuery.makeArray(data) );
+				} else {
+					queue.push( data );
+				}
+			}
+			return queue || [];
+		}
+	},
+
+	dequeue: function( elem, type ) {
+		type = type || "fx";
+
+		var queue = jQuery.queue( elem, type ),
+			startLength = queue.length,
+			fn = queue.shift(),
+			hooks = jQuery._queueHooks( elem, type ),
+			next = function() {
+				jQuery.dequeue( elem, type );
+			};
+
+		// If the fx queue is dequeued, always remove the progress sentinel
+		if ( fn === "inprogress" ) {
+			fn = queue.shift();
+			startLength--;
+		}
+
+		if ( fn ) {
+
+			// Add a progress sentinel to prevent the fx queue from being
+			// automatically dequeued
+			if ( type === "fx" ) {
+				queue.unshift( "inprogress" );
+			}
+
+			// clear up the last queue stop function
+			delete hooks.stop;
+			fn.call( elem, next, hooks );
+		}
+
+		if ( !startLength && hooks ) {
+			hooks.empty.fire();
+		}
+	},
+
+	// not intended for public consumption - generates a queueHooks object, or returns the current one
+	_queueHooks: function( elem, type ) {
+		var key = type + "queueHooks";
+		return jQuery._data( elem, key ) || jQuery._data( elem, key, {
+			empty: jQuery.Callbacks("once memory").add(function() {
+				jQuery._removeData( elem, type + "queue" );
+				jQuery._removeData( elem, key );
+			})
+		});
+	}
+});
+
+jQuery.fn.extend({
+	queue: function( type, data ) {
+		var setter = 2;
+
+		if ( typeof type !== "string" ) {
+			data = type;
+			type = "fx";
+			setter--;
+		}
+
+		if ( arguments.length < setter ) {
+			return jQuery.queue( this[0], type );
+		}
+
+		return data === undefined ?
+			this :
+			this.each(function() {
+				var queue = jQuery.queue( this, type, data );
+
+				// ensure a hooks for this queue
+				jQuery._queueHooks( this, type );
+
+				if ( type === "fx" && queue[0] !== "inprogress" ) {
+					jQuery.dequeue( this, type );
+				}
+			});
+	},
+	dequeue: function( type ) {
+		return this.each(function() {
+			jQuery.dequeue( this, type );
+		});
+	},
+	// Based off of the plugin by Clint Helfers, with permission.
+	// http://blindsignals.com/index.php/2009/07/jquery-delay/
+	delay: function( time, type ) {
+		time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+		type = type || "fx";
+
+		return this.queue( type, function( next, hooks ) {
+			var timeout = setTimeout( next, time );
+			hooks.stop = function() {
+				clearTimeout( timeout );
+			};
+		});
+	},
+	clearQueue: function( type ) {
+		return this.queue( type || "fx", [] );
+	},
+	// Get a promise resolved when queues of a certain type
+	// are emptied (fx is the type by default)
+	promise: function( type, obj ) {
+		var tmp,
+			count = 1,
+			defer = jQuery.Deferred(),
+			elements = this,
+			i = this.length,
+			resolve = function() {
+				if ( !( --count ) ) {
+					defer.resolveWith( elements, [ elements ] );
+				}
+			};
+
+		if ( typeof type !== "string" ) {
+			obj = type;
+			type = undefined;
+		}
+		type = type || "fx";
+
+		while( i-- ) {
+			tmp = jQuery._data( elements[ i ], type + "queueHooks" );
+			if ( tmp && tmp.empty ) {
+				count++;
+				tmp.empty.add( resolve );
+			}
+		}
+		resolve();
+		return defer.promise( obj );
+	}
+});
+var nodeHook, boolHook,
+	rclass = /[\t\r\n\f]/g,
+	rreturn = /\r/g,
+	rfocusable = /^(?:input|select|textarea|button|object)$/i,
+	rclickable = /^(?:a|area)$/i,
+	ruseDefault = /^(?:checked|selected)$/i,
+	getSetAttribute = jQuery.support.getSetAttribute,
+	getSetInput = jQuery.support.input;
+
+jQuery.fn.extend({
+	attr: function( name, value ) {
+		return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
+	},
+
+	removeAttr: function( name ) {
+		return this.each(function() {
+			jQuery.removeAttr( this, name );
+		});
+	},
+
+	prop: function( name, value ) {
+		return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
+	},
+
+	removeProp: function( name ) {
+		name = jQuery.propFix[ name ] || name;
+		return this.each(function() {
+			// try/catch handles cases where IE balks (such as removing a property on window)
+			try {
+				this[ name ] = undefined;
+				delete this[ name ];
+			} catch( e ) {}
+		});
+	},
+
+	addClass: function( value ) {
+		var classes, elem, cur, clazz, j,
+			i = 0,
+			len = this.length,
+			proceed = typeof value === "string" && value;
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each(function( j ) {
+				jQuery( this ).addClass( value.call( this, j, this.className ) );
+			});
+		}
+
+		if ( proceed ) {
+			// The disjunction here is for better compressibility (see removeClass)
+			classes = ( value || "" ).match( core_rnotwhite ) || [];
+
+			for ( ; i < len; i++ ) {
+				elem = this[ i ];
+				cur = elem.nodeType === 1 && ( elem.className ?
+					( " " + elem.className + " " ).replace( rclass, " " ) :
+					" "
+				);
+
+				if ( cur ) {
+					j = 0;
+					while ( (clazz = classes[j++]) ) {
+						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+							cur += clazz + " ";
+						}
+					}
+					elem.className = jQuery.trim( cur );
+
+				}
+			}
+		}
+
+		return this;
+	},
+
+	removeClass: function( value ) {
+		var classes, elem, cur, clazz, j,
+			i = 0,
+			len = this.length,
+			proceed = arguments.length === 0 || typeof value === "string" && value;
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each(function( j ) {
+				jQuery( this ).removeClass( value.call( this, j, this.className ) );
+			});
+		}
+		if ( proceed ) {
+			classes = ( value || "" ).match( core_rnotwhite ) || [];
+
+			for ( ; i < len; i++ ) {
+				elem = this[ i ];
+				// This expression is here for better compressibility (see addClass)
+				cur = elem.nodeType === 1 && ( elem.className ?
+					( " " + elem.className + " " ).replace( rclass, " " ) :
+					""
+				);
+
+				if ( cur ) {
+					j = 0;
+					while ( (clazz = classes[j++]) ) {
+						// Remove *all* instances
+						while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
+							cur = cur.replace( " " + clazz + " ", " " );
+						}
+					}
+					elem.className = value ? jQuery.trim( cur ) : "";
+				}
+			}
+		}
+
+		return this;
+	},
+
+	toggleClass: function( value, stateVal ) {
+		var type = typeof value;
+
+		if ( typeof stateVal === "boolean" && type === "string" ) {
+			return stateVal ? this.addClass( value ) : this.removeClass( value );
+		}
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each(function( i ) {
+				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+			});
+		}
+
+		return this.each(function() {
+			if ( type === "string" ) {
+				// toggle individual class names
+				var className,
+					i = 0,
+					self = jQuery( this ),
+					classNames = value.match( core_rnotwhite ) || [];
+
+				while ( (className = classNames[ i++ ]) ) {
+					// check each className given, space separated list
+					if ( self.hasClass( className ) ) {
+						self.removeClass( className );
+					} else {
+						self.addClass( className );
+					}
+				}
+
+			// Toggle whole class name
+			} else if ( type === core_strundefined || type === "boolean" ) {
+				if ( this.className ) {
+					// store className if set
+					jQuery._data( this, "__className__", this.className );
+				}
+
+				// If the element has a class name or if we're passed "false",
+				// then remove the whole classname (if there was one, the above saved it).
+				// Otherwise bring back whatever was previously saved (if anything),
+				// falling back to the empty string if nothing was stored.
+				this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
+			}
+		});
+	},
+
+	hasClass: function( selector ) {
+		var className = " " + selector + " ",
+			i = 0,
+			l = this.length;
+		for ( ; i < l; i++ ) {
+			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
+				return true;
+			}
+		}
+
+		return false;
+	},
+
+	val: function( value ) {
+		var ret, hooks, isFunction,
+			elem = this[0];
+
+		if ( !arguments.length ) {
+			if ( elem ) {
+				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+					return ret;
+				}
+
+				ret = elem.value;
+
+				return typeof ret === "string" ?
+					// handle most common string cases
+					ret.replace(rreturn, "") :
+					// handle cases where value is null/undef or number
+					ret == null ? "" : ret;
+			}
+
+			return;
+		}
+
+		isFunction = jQuery.isFunction( value );
+
+		return this.each(function( i ) {
+			var val;
+
+			if ( this.nodeType !== 1 ) {
+				return;
+			}
+
+			if ( isFunction ) {
+				val = value.call( this, i, jQuery( this ).val() );
+			} else {
+				val = value;
+			}
+
+			// Treat null/undefined as ""; convert numbers to string
+			if ( val == null ) {
+				val = "";
+			} else if ( typeof val === "number" ) {
+				val += "";
+			} else if ( jQuery.isArray( val ) ) {
+				val = jQuery.map(val, function ( value ) {
+					return value == null ? "" : value + "";
+				});
+			}
+
+			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+			// If set returns undefined, fall back to normal setting
+			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+				this.value = val;
+			}
+		});
+	}
+});
+
+jQuery.extend({
+	valHooks: {
+		option: {
+			get: function( elem ) {
+				// Use proper attribute retrieval(#6932, #12072)
+				var val = jQuery.find.attr( elem, "value" );
+				return val != null ?
+					val :
+					elem.text;
+			}
+		},
+		select: {
+			get: function( elem ) {
+				var value, option,
+					options = elem.options,
+					index = elem.selectedIndex,
+					one = elem.type === "select-one" || index < 0,
+					values = one ? null : [],
+					max = one ? index + 1 : options.length,
+					i = index < 0 ?
+						max :
+						one ? index : 0;
+
+				// Loop through all the selected options
+				for ( ; i < max; i++ ) {
+					option = options[ i ];
+
+					// oldIE doesn't update selected after form reset (#2551)
+					if ( ( option.selected || i === index ) &&
+							// Don't return options that are disabled or in a disabled optgroup
+							( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
+							( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+						// Get the specific value for the option
+						value = jQuery( option ).val();
+
+						// We don't need an array for one selects
+						if ( one ) {
+							return value;
+						}
+
+						// Multi-Selects return an array
+						values.push( value );
+					}
+				}
+
+				return values;
+			},
+
+			set: function( elem, value ) {
+				var optionSet, option,
+					options = elem.options,
+					values = jQuery.makeArray( value ),
+					i = options.length;
+
+				while ( i-- ) {
+					option = options[ i ];
+					if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) {
+						optionSet = true;
+					}
+				}
+
+				// force browsers to behave consistently when non-matching value is set
+				if ( !optionSet ) {
+					elem.selectedIndex = -1;
+				}
+				return values;
+			}
+		}
+	},
+
+	attr: function( elem, name, value ) {
+		var hooks, ret,
+			nType = elem.nodeType;
+
+		// don't get/set attributes on text, comment and attribute nodes
+		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		// Fallback to prop when attributes are not supported
+		if ( typeof elem.getAttribute === core_strundefined ) {
+			return jQuery.prop( elem, name, value );
+		}
+
+		// All attributes are lowercase
+		// Grab necessary hook if one is defined
+		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+			name = name.toLowerCase();
+			hooks = jQuery.attrHooks[ name ] ||
+				( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
+		}
+
+		if ( value !== undefined ) {
+
+			if ( value === null ) {
+				jQuery.removeAttr( elem, name );
+
+			} else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+				return ret;
+
+			} else {
+				elem.setAttribute( name, value + "" );
+				return value;
+			}
+
+		} else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+			return ret;
+
+		} else {
+			ret = jQuery.find.attr( elem, name );
+
+			// Non-existent attributes return null, we normalize to undefined
+			return ret == null ?
+				undefined :
+				ret;
+		}
+	},
+
+	removeAttr: function( elem, value ) {
+		var name, propName,
+			i = 0,
+			attrNames = value && value.match( core_rnotwhite );
+
+		if ( attrNames && elem.nodeType === 1 ) {
+			while ( (name = attrNames[i++]) ) {
+				propName = jQuery.propFix[ name ] || name;
+
+				// Boolean attributes get special treatment (#10870)
+				if ( jQuery.expr.match.bool.test( name ) ) {
+					// Set corresponding property to false
+					if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
+						elem[ propName ] = false;
+					// Support: IE<9
+					// Also clear defaultChecked/defaultSelected (if appropriate)
+					} else {
+						elem[ jQuery.camelCase( "default-" + name ) ] =
+							elem[ propName ] = false;
+					}
+
+				// See #9699 for explanation of this approach (setting first, then removal)
+				} else {
+					jQuery.attr( elem, name, "" );
+				}
+
+				elem.removeAttribute( getSetAttribute ? name : propName );
+			}
+		}
+	},
+
+	attrHooks: {
+		type: {
+			set: function( elem, value ) {
+				if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
+					// Setting the type on a radio button after the value resets the value in IE6-9
+					// Reset value to default in case type is set after value during creation
+					var val = elem.value;
+					elem.setAttribute( "type", value );
+					if ( val ) {
+						elem.value = val;
+					}
+					return value;
+				}
+			}
+		}
+	},
+
+	propFix: {
+		"for": "htmlFor",
+		"class": "className"
+	},
+
+	prop: function( elem, name, value ) {
+		var ret, hooks, notxml,
+			nType = elem.nodeType;
+
+		// don't get/set properties on text, comment and attribute nodes
+		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+		if ( notxml ) {
+			// Fix name and attach hooks
+			name = jQuery.propFix[ name ] || name;
+			hooks = jQuery.propHooks[ name ];
+		}
+
+		if ( value !== undefined ) {
+			return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
+				ret :
+				( elem[ name ] = value );
+
+		} else {
+			return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
+				ret :
+				elem[ name ];
+		}
+	},
+
+	propHooks: {
+		tabIndex: {
+			get: function( elem ) {
+				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+				// Use proper attribute retrieval(#12072)
+				var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+				return tabindex ?
+					parseInt( tabindex, 10 ) :
+					rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+						0 :
+						-1;
+			}
+		}
+	}
+});
+
+// Hooks for boolean attributes
+boolHook = {
+	set: function( elem, value, name ) {
+		if ( value === false ) {
+			// Remove boolean attributes when set to false
+			jQuery.removeAttr( elem, name );
+		} else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
+			// IE<8 needs the *property* name
+			elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );
+
+		// Use defaultChecked and defaultSelected for oldIE
+		} else {
+			elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;
+		}
+
+		return name;
+	}
+};
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+	var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr;
+
+	jQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?
+		function( elem, name, isXML ) {
+			var fn = jQuery.expr.attrHandle[ name ],
+				ret = isXML ?
+					undefined :
+					/* jshint eqeqeq: false */
+					(jQuery.expr.attrHandle[ name ] = undefined) !=
+						getter( elem, name, isXML ) ?
+
+						name.toLowerCase() :
+						null;
+			jQuery.expr.attrHandle[ name ] = fn;
+			return ret;
+		} :
+		function( elem, name, isXML ) {
+			return isXML ?
+				undefined :
+				elem[ jQuery.camelCase( "default-" + name ) ] ?
+					name.toLowerCase() :
+					null;
+		};
+});
+
+// fix oldIE attroperties
+if ( !getSetInput || !getSetAttribute ) {
+	jQuery.attrHooks.value = {
+		set: function( elem, value, name ) {
+			if ( jQuery.nodeName( elem, "input" ) ) {
+				// Does not return so that setAttribute is also used
+				elem.defaultValue = value;
+			} else {
+				// Use nodeHook if defined (#1954); otherwise setAttribute is fine
+				return nodeHook && nodeHook.set( elem, value, name );
+			}
+		}
+	};
+}
+
+// IE6/7 do not support getting/setting some attributes with get/setAttribute
+if ( !getSetAttribute ) {
+
+	// Use this for any attribute in IE6/7
+	// This fixes almost every IE6/7 issue
+	nodeHook = {
+		set: function( elem, value, name ) {
+			// Set the existing or create a new attribute node
+			var ret = elem.getAttributeNode( name );
+			if ( !ret ) {
+				elem.setAttributeNode(
+					(ret = elem.ownerDocument.createAttribute( name ))
+				);
+			}
+
+			ret.value = value += "";
+
+			// Break association with cloned elements by also using setAttribute (#9646)
+			return name === "value" || value === elem.getAttribute( name ) ?
+				value :
+				undefined;
+		}
+	};
+	jQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords =
+		// Some attributes are constructed with empty-string values when not defined
+		function( elem, name, isXML ) {
+			var ret;
+			return isXML ?
+				undefined :
+				(ret = elem.getAttributeNode( name )) && ret.value !== "" ?
+					ret.value :
+					null;
+		};
+	jQuery.valHooks.button = {
+		get: function( elem, name ) {
+			var ret = elem.getAttributeNode( name );
+			return ret && ret.specified ?
+				ret.value :
+				undefined;
+		},
+		set: nodeHook.set
+	};
+
+	// Set contenteditable to false on removals(#10429)
+	// Setting to empty string throws an error as an invalid value
+	jQuery.attrHooks.contenteditable = {
+		set: function( elem, value, name ) {
+			nodeHook.set( elem, value === "" ? false : value, name );
+		}
+	};
+
+	// Set width and height to auto instead of 0 on empty string( Bug #8150 )
+	// This is for removals
+	jQuery.each([ "width", "height" ], function( i, name ) {
+		jQuery.attrHooks[ name ] = {
+			set: function( elem, value ) {
+				if ( value === "" ) {
+					elem.setAttribute( name, "auto" );
+					return value;
+				}
+			}
+		};
+	});
+}
+
+
+// Some attributes require a special call on IE
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !jQuery.support.hrefNormalized ) {
+	// href/src property should get the full normalized URL (#10299/#12915)
+	jQuery.each([ "href", "src" ], function( i, name ) {
+		jQuery.propHooks[ name ] = {
+			get: function( elem ) {
+				return elem.getAttribute( name, 4 );
+			}
+		};
+	});
+}
+
+if ( !jQuery.support.style ) {
+	jQuery.attrHooks.style = {
+		get: function( elem ) {
+			// Return undefined in the case of empty string
+			// Note: IE uppercases css property names, but if we were to .toLowerCase()
+			// .cssText, that would destroy case senstitivity in URL's, like in "background"
+			return elem.style.cssText || undefined;
+		},
+		set: function( elem, value ) {
+			return ( elem.style.cssText = value + "" );
+		}
+	};
+}
+
+// Safari mis-reports the default selected property of an option
+// Accessing the parent's selectedIndex property fixes it
+if ( !jQuery.support.optSelected ) {
+	jQuery.propHooks.selected = {
+		get: function( elem ) {
+			var parent = elem.parentNode;
+
+			if ( parent ) {
+				parent.selectedIndex;
+
+				// Make sure that it also works with optgroups, see #5701
+				if ( parent.parentNode ) {
+					parent.parentNode.selectedIndex;
+				}
+			}
+			return null;
+		}
+	};
+}
+
+jQuery.each([
+	"tabIndex",
+	"readOnly",
+	"maxLength",
+	"cellSpacing",
+	"cellPadding",
+	"rowSpan",
+	"colSpan",
+	"useMap",
+	"frameBorder",
+	"contentEditable"
+], function() {
+	jQuery.propFix[ this.toLowerCase() ] = this;
+});
+
+// IE6/7 call enctype encoding
+if ( !jQuery.support.enctype ) {
+	jQuery.propFix.enctype = "encoding";
+}
+
+// Radios and checkboxes getter/setter
+jQuery.each([ "radio", "checkbox" ], function() {
+	jQuery.valHooks[ this ] = {
+		set: function( elem, value ) {
+			if ( jQuery.isArray( value ) ) {
+				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+			}
+		}
+	};
+	if ( !jQuery.support.checkOn ) {
+		jQuery.valHooks[ this ].get = function( elem ) {
+			// Support: Webkit
+			// "" is returned instead of "on" if a value isn't specified
+			return elem.getAttribute("value") === null ? "on" : elem.value;
+		};
+	}
+});
+var rformElems = /^(?:input|select|textarea)$/i,
+	rkeyEvent = /^key/,
+	rmouseEvent = /^(?:mouse|contextmenu)|click/,
+	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+	rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
+
+function returnTrue() {
+	return true;
+}
+
+function returnFalse() {
+	return false;
+}
+
+function safeActiveElement() {
+	try {
+		return document.activeElement;
+	} catch ( err ) { }
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+	global: {},
+
+	add: function( elem, types, handler, data, selector ) {
+		var tmp, events, t, handleObjIn,
+			special, eventHandle, handleObj,
+			handlers, type, namespaces, origType,
+			elemData = jQuery._data( elem );
+
+		// Don't attach events to noData or text/comment nodes (but allow plain objects)
+		if ( !elemData ) {
+			return;
+		}
+
+		// Caller can pass in an object of custom data in lieu of the handler
+		if ( handler.handler ) {
+			handleObjIn = handler;
+			handler = handleObjIn.handler;
+			selector = handleObjIn.selector;
+		}
+
+		// Make sure that the handler has a unique ID, used to find/remove it later
+		if ( !handler.guid ) {
+			handler.guid = jQuery.guid++;
+		}
+
+		// Init the element's event structure and main handler, if this is the first
+		if ( !(events = elemData.events) ) {
+			events = elemData.events = {};
+		}
+		if ( !(eventHandle = elemData.handle) ) {
+			eventHandle = elemData.handle = function( e ) {
+				// Discard the second event of a jQuery.event.trigger() and
+				// when an event is called after a page has unloaded
+				return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?
+					jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
+					undefined;
+			};
+			// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
+			eventHandle.elem = elem;
+		}
+
+		// Handle multiple events separated by a space
+		types = ( types || "" ).match( core_rnotwhite ) || [""];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[t] ) || [];
+			type = origType = tmp[1];
+			namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+			// There *must* be a type, no attaching namespace-only handlers
+			if ( !type ) {
+				continue;
+			}
+
+			// If event changes its type, use the special event handlers for the changed type
+			special = jQuery.event.special[ type ] || {};
+
+			// If selector defined, determine special event api type, otherwise given type
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+
+			// Update special based on newly reset type
+			special = jQuery.event.special[ type ] || {};
+
+			// handleObj is passed to all event handlers
+			handleObj = jQuery.extend({
+				type: type,
+				origType: origType,
+				data: data,
+				handler: handler,
+				guid: handler.guid,
+				selector: selector,
+				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+				namespace: namespaces.join(".")
+			}, handleObjIn );
+
+			// Init the event handler queue if we're the first
+			if ( !(handlers = events[ type ]) ) {
+				handlers = events[ type ] = [];
+				handlers.delegateCount = 0;
+
+				// Only use addEventListener/attachEvent if the special events handler returns false
+				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+					// Bind the global event handler to the element
+					if ( elem.addEventListener ) {
+						elem.addEventListener( type, eventHandle, false );
+
+					} else if ( elem.attachEvent ) {
+						elem.attachEvent( "on" + type, eventHandle );
+					}
+				}
+			}
+
+			if ( special.add ) {
+				special.add.call( elem, handleObj );
+
+				if ( !handleObj.handler.guid ) {
+					handleObj.handler.guid = handler.guid;
+				}
+			}
+
+			// Add to the element's handler list, delegates in front
+			if ( selector ) {
+				handlers.splice( handlers.delegateCount++, 0, handleObj );
+			} else {
+				handlers.push( handleObj );
+			}
+
+			// Keep track of which events have ever been used, for event optimization
+			jQuery.event.global[ type ] = true;
+		}
+
+		// Nullify elem to prevent memory leaks in IE
+		elem = null;
+	},
+
+	// Detach an event or set of events from an element
+	remove: function( elem, types, handler, selector, mappedTypes ) {
+		var j, handleObj, tmp,
+			origCount, t, events,
+			special, handlers, type,
+			namespaces, origType,
+			elemData = jQuery.hasData( elem ) && jQuery._data( elem );
+
+		if ( !elemData || !(events = elemData.events) ) {
+			return;
+		}
+
+		// Once for each type.namespace in types; type may be omitted
+		types = ( types || "" ).match( core_rnotwhite ) || [""];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[t] ) || [];
+			type = origType = tmp[1];
+			namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+			// Unbind all events (on this namespace, if provided) for the element
+			if ( !type ) {
+				for ( type in events ) {
+					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+				}
+				continue;
+			}
+
+			special = jQuery.event.special[ type ] || {};
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+			handlers = events[ type ] || [];
+			tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
+
+			// Remove matching events
+			origCount = j = handlers.length;
+			while ( j-- ) {
+				handleObj = handlers[ j ];
+
+				if ( ( mappedTypes || origType === handleObj.origType ) &&
+					( !handler || handler.guid === handleObj.guid ) &&
+					( !tmp || tmp.test( handleObj.namespace ) ) &&
+					( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+					handlers.splice( j, 1 );
+
+					if ( handleObj.selector ) {
+						handlers.delegateCount--;
+					}
+					if ( special.remove ) {
+						special.remove.call( elem, handleObj );
+					}
+				}
+			}
+
+			// Remove generic event handler if we removed something and no more handlers exist
+			// (avoids potential for endless recursion during removal of special event handlers)
+			if ( origCount && !handlers.length ) {
+				if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+					jQuery.removeEvent( elem, type, elemData.handle );
+				}
+
+				delete events[ type ];
+			}
+		}
+
+		// Remove the expando if it's no longer used
+		if ( jQuery.isEmptyObject( events ) ) {
+			delete elemData.handle;
+
+			// removeData also checks for emptiness and clears the expando if empty
+			// so use it instead of delete
+			jQuery._removeData( elem, "events" );
+		}
+	},
+
+	trigger: function( event, data, elem, onlyHandlers ) {
+		var handle, ontype, cur,
+			bubbleType, special, tmp, i,
+			eventPath = [ elem || document ],
+			type = core_hasOwn.call( event, "type" ) ? event.type : event,
+			namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
+
+		cur = tmp = elem = elem || document;
+
+		// Don't do events on text and comment nodes
+		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+			return;
+		}
+
+		// focus/blur morphs to focusin/out; ensure we're not firing them right now
+		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+			return;
+		}
+
+		if ( type.indexOf(".") >= 0 ) {
+			// Namespaced trigger; create a regexp to match event type in handle()
+			namespaces = type.split(".");
+			type = namespaces.shift();
+			namespaces.sort();
+		}
+		ontype = type.indexOf(":") < 0 && "on" + type;
+
+		// Caller can pass in a jQuery.Event object, Object, or just an event type string
+		event = event[ jQuery.expando ] ?
+			event :
+			new jQuery.Event( type, typeof event === "object" && event );
+
+		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+		event.isTrigger = onlyHandlers ? 2 : 3;
+		event.namespace = namespaces.join(".");
+		event.namespace_re = event.namespace ?
+			new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
+			null;
+
+		// Clean up the event in case it is being reused
+		event.result = undefined;
+		if ( !event.target ) {
+			event.target = elem;
+		}
+
+		// Clone any incoming data and prepend the event, creating the handler arg list
+		data = data == null ?
+			[ event ] :
+			jQuery.makeArray( data, [ event ] );
+
+		// Allow special events to draw outside the lines
+		special = jQuery.event.special[ type ] || {};
+		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+			return;
+		}
+
+		// Determine event propagation path in advance, per W3C events spec (#9951)
+		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+			bubbleType = special.delegateType || type;
+			if ( !rfocusMorph.test( bubbleType + type ) ) {
+				cur = cur.parentNode;
+			}
+			for ( ; cur; cur = cur.parentNode ) {
+				eventPath.push( cur );
+				tmp = cur;
+			}
+
+			// Only add window if we got to document (e.g., not plain obj or detached DOM)
+			if ( tmp === (elem.ownerDocument || document) ) {
+				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+			}
+		}
+
+		// Fire handlers on the event path
+		i = 0;
+		while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
+
+			event.type = i > 1 ?
+				bubbleType :
+				special.bindType || type;
+
+			// jQuery handler
+			handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
+			if ( handle ) {
+				handle.apply( cur, data );
+			}
+
+			// Native handler
+			handle = ontype && cur[ ontype ];
+			if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {
+				event.preventDefault();
+			}
+		}
+		event.type = type;
+
+		// If nobody prevented the default action, do it now
+		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+			if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
+				jQuery.acceptData( elem ) ) {
+
+				// Call a native DOM method on the target with the same name name as the event.
+				// Can't use an .isFunction() check here because IE6/7 fails that test.
+				// Don't do default actions on window, that's where global variables be (#6170)
+				if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
+
+					// Don't re-trigger an onFOO event when we call its FOO() method
+					tmp = elem[ ontype ];
+
+					if ( tmp ) {
+						elem[ ontype ] = null;
+					}
+
+					// Prevent re-triggering of the same event, since we already bubbled it above
+					jQuery.event.triggered = type;
+					try {
+						elem[ type ]();
+					} catch ( e ) {
+						// IE<9 dies on focus/blur to hidden element (#1486,#12518)
+						// only reproducible on winXP IE8 native, not IE9 in IE8 mode
+					}
+					jQuery.event.triggered = undefined;
+
+					if ( tmp ) {
+						elem[ ontype ] = tmp;
+					}
+				}
+			}
+		}
+
+		return event.result;
+	},
+
+	dispatch: function( event ) {
+
+		// Make a writable jQuery.Event from the native event object
+		event = jQuery.event.fix( event );
+
+		var i, ret, handleObj, matched, j,
+			handlerQueue = [],
+			args = core_slice.call( arguments ),
+			handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
+			special = jQuery.event.special[ event.type ] || {};
+
+		// Use the fix-ed jQuery.Event rather than the (read-only) native event
+		args[0] = event;
+		event.delegateTarget = this;
+
+		// Call the preDispatch hook for the mapped type, and let it bail if desired
+		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+			return;
+		}
+
+		// Determine handlers
+		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+		// Run delegates first; they may want to stop propagation beneath us
+		i = 0;
+		while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
+			event.currentTarget = matched.elem;
+
+			j = 0;
+			while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
+
+				// Triggered event must either 1) have no namespace, or
+				// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
+				if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
+
+					event.handleObj = handleObj;
+					event.data = handleObj.data;
+
+					ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+							.apply( matched.elem, args );
+
+					if ( ret !== undefined ) {
+						if ( (event.result = ret) === false ) {
+							event.preventDefault();
+							event.stopPropagation();
+						}
+					}
+				}
+			}
+		}
+
+		// Call the postDispatch hook for the mapped type
+		if ( special.postDispatch ) {
+			special.postDispatch.call( this, event );
+		}
+
+		return event.result;
+	},
+
+	handlers: function( event, handlers ) {
+		var sel, handleObj, matches, i,
+			handlerQueue = [],
+			delegateCount = handlers.delegateCount,
+			cur = event.target;
+
+		// Find delegate handlers
+		// Black-hole SVG <use> instance trees (#13180)
+		// Avoid non-left-click bubbling in Firefox (#3861)
+		if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
+
+			/* jshint eqeqeq: false */
+			for ( ; cur != this; cur = cur.parentNode || this ) {
+				/* jshint eqeqeq: true */
+
+				// Don't check non-elements (#13208)
+				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+				if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {
+					matches = [];
+					for ( i = 0; i < delegateCount; i++ ) {
+						handleObj = handlers[ i ];
+
+						// Don't conflict with Object.prototype properties (#13203)
+						sel = handleObj.selector + " ";
+
+						if ( matches[ sel ] === undefined ) {
+							matches[ sel ] = handleObj.needsContext ?
+								jQuery( sel, this ).index( cur ) >= 0 :
+								jQuery.find( sel, this, null, [ cur ] ).length;
+						}
+						if ( matches[ sel ] ) {
+							matches.push( handleObj );
+						}
+					}
+					if ( matches.length ) {
+						handlerQueue.push({ elem: cur, handlers: matches });
+					}
+				}
+			}
+		}
+
+		// Add the remaining (directly-bound) handlers
+		if ( delegateCount < handlers.length ) {
+			handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
+		}
+
+		return handlerQueue;
+	},
+
+	fix: function( event ) {
+		if ( event[ jQuery.expando ] ) {
+			return event;
+		}
+
+		// Create a writable copy of the event object and normalize some properties
+		var i, prop, copy,
+			type = event.type,
+			originalEvent = event,
+			fixHook = this.fixHooks[ type ];
+
+		if ( !fixHook ) {
+			this.fixHooks[ type ] = fixHook =
+				rmouseEvent.test( type ) ? this.mouseHooks :
+				rkeyEvent.test( type ) ? this.keyHooks :
+				{};
+		}
+		copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+		event = new jQuery.Event( originalEvent );
+
+		i = copy.length;
+		while ( i-- ) {
+			prop = copy[ i ];
+			event[ prop ] = originalEvent[ prop ];
+		}
+
+		// Support: IE<9
+		// Fix target property (#1925)
+		if ( !event.target ) {
+			event.target = originalEvent.srcElement || document;
+		}
+
+		// Support: Chrome 23+, Safari?
+		// Target should not be a text node (#504, #13143)
+		if ( event.target.nodeType === 3 ) {
+			event.target = event.target.parentNode;
+		}
+
+		// Support: IE<9
+		// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)
+		event.metaKey = !!event.metaKey;
+
+		return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
+	},
+
+	// Includes some event props shared by KeyEvent and MouseEvent
+	props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+	fixHooks: {},
+
+	keyHooks: {
+		props: "char charCode key keyCode".split(" "),
+		filter: function( event, original ) {
+
+			// Add which for key events
+			if ( event.which == null ) {
+				event.which = original.charCode != null ? original.charCode : original.keyCode;
+			}
+
+			return event;
+		}
+	},
+
+	mouseHooks: {
+		props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+		filter: function( event, original ) {
+			var body, eventDoc, doc,
+				button = original.button,
+				fromElement = original.fromElement;
+
+			// Calculate pageX/Y if missing and clientX/Y available
+			if ( event.pageX == null && original.clientX != null ) {
+				eventDoc = event.target.ownerDocument || document;
+				doc = eventDoc.documentElement;
+				body = eventDoc.body;
+
+				event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+				event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
+			}
+
+			// Add relatedTarget, if necessary
+			if ( !event.relatedTarget && fromElement ) {
+				event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
+			}
+
+			// Add which for click: 1 === left; 2 === middle; 3 === right
+			// Note: button is not normalized, so don't use it
+			if ( !event.which && button !== undefined ) {
+				event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+			}
+
+			return event;
+		}
+	},
+
+	special: {
+		load: {
+			// Prevent triggered image.load events from bubbling to window.load
+			noBubble: true
+		},
+		focus: {
+			// Fire native event if possible so blur/focus sequence is correct
+			trigger: function() {
+				if ( this !== safeActiveElement() && this.focus ) {
+					try {
+						this.focus();
+						return false;
+					} catch ( e ) {
+						// Support: IE<9
+						// If we error on focus to hidden element (#1486, #12518),
+						// let .trigger() run the handlers
+					}
+				}
+			},
+			delegateType: "focusin"
+		},
+		blur: {
+			trigger: function() {
+				if ( this === safeActiveElement() && this.blur ) {
+					this.blur();
+					return false;
+				}
+			},
+			delegateType: "focusout"
+		},
+		click: {
+			// For checkbox, fire native event so checked state will be right
+			trigger: function() {
+				if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
+					this.click();
+					return false;
+				}
+			},
+
+			// For cross-browser consistency, don't fire native .click() on links
+			_default: function( event ) {
+				return jQuery.nodeName( event.target, "a" );
+			}
+		},
+
+		beforeunload: {
+			postDispatch: function( event ) {
+
+				// Even when returnValue equals to undefined Firefox will still show alert
+				if ( event.result !== undefined ) {
+					event.originalEvent.returnValue = event.result;
+				}
+			}
+		}
+	},
+
+	simulate: function( type, elem, event, bubble ) {
+		// Piggyback on a donor event to simulate a different one.
+		// Fake originalEvent to avoid donor's stopPropagation, but if the
+		// simulated event prevents default then we do the same on the donor.
+		var e = jQuery.extend(
+			new jQuery.Event(),
+			event,
+			{
+				type: type,
+				isSimulated: true,
+				originalEvent: {}
+			}
+		);
+		if ( bubble ) {
+			jQuery.event.trigger( e, null, elem );
+		} else {
+			jQuery.event.dispatch.call( elem, e );
+		}
+		if ( e.isDefaultPrevented() ) {
+			event.preventDefault();
+		}
+	}
+};
+
+jQuery.removeEvent = document.removeEventListener ?
+	function( elem, type, handle ) {
+		if ( elem.removeEventListener ) {
+			elem.removeEventListener( type, handle, false );
+		}
+	} :
+	function( elem, type, handle ) {
+		var name = "on" + type;
+
+		if ( elem.detachEvent ) {
+
+			// #8545, #7054, preventing memory leaks for custom events in IE6-8
+			// detachEvent needed property on element, by name of that event, to properly expose it to GC
+			if ( typeof elem[ name ] === core_strundefined ) {
+				elem[ name ] = null;
+			}
+
+			elem.detachEvent( name, handle );
+		}
+	};
+
+jQuery.Event = function( src, props ) {
+	// Allow instantiation without the 'new' keyword
+	if ( !(this instanceof jQuery.Event) ) {
+		return new jQuery.Event( src, props );
+	}
+
+	// Event object
+	if ( src && src.type ) {
+		this.originalEvent = src;
+		this.type = src.type;
+
+		// Events bubbling up the document may have been marked as prevented
+		// by a handler lower down the tree; reflect the correct value.
+		this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
+			src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
+
+	// Event type
+	} else {
+		this.type = src;
+	}
+
+	// Put explicitly provided properties onto the event object
+	if ( props ) {
+		jQuery.extend( this, props );
+	}
+
+	// Create a timestamp if incoming event doesn't have one
+	this.timeStamp = src && src.timeStamp || jQuery.now();
+
+	// Mark it as fixed
+	this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+	isDefaultPrevented: returnFalse,
+	isPropagationStopped: returnFalse,
+	isImmediatePropagationStopped: returnFalse,
+
+	preventDefault: function() {
+		var e = this.originalEvent;
+
+		this.isDefaultPrevented = returnTrue;
+		if ( !e ) {
+			return;
+		}
+
+		// If preventDefault exists, run it on the original event
+		if ( e.preventDefault ) {
+			e.preventDefault();
+
+		// Support: IE
+		// Otherwise set the returnValue property of the original event to false
+		} else {
+			e.returnValue = false;
+		}
+	},
+	stopPropagation: function() {
+		var e = this.originalEvent;
+
+		this.isPropagationStopped = returnTrue;
+		if ( !e ) {
+			return;
+		}
+		// If stopPropagation exists, run it on the original event
+		if ( e.stopPropagation ) {
+			e.stopPropagation();
+		}
+
+		// Support: IE
+		// Set the cancelBubble property of the original event to true
+		e.cancelBubble = true;
+	},
+	stopImmediatePropagation: function() {
+		this.isImmediatePropagationStopped = returnTrue;
+		this.stopPropagation();
+	}
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+jQuery.each({
+	mouseenter: "mouseover",
+	mouseleave: "mouseout"
+}, function( orig, fix ) {
+	jQuery.event.special[ orig ] = {
+		delegateType: fix,
+		bindType: fix,
+
+		handle: function( event ) {
+			var ret,
+				target = this,
+				related = event.relatedTarget,
+				handleObj = event.handleObj;
+
+			// For mousenter/leave call the handler if related is outside the target.
+			// NB: No relatedTarget if the mouse left/entered the browser window
+			if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+				event.type = handleObj.origType;
+				ret = handleObj.handler.apply( this, arguments );
+				event.type = fix;
+			}
+			return ret;
+		}
+	};
+});
+
+// IE submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+	jQuery.event.special.submit = {
+		setup: function() {
+			// Only need this for delegated form submit events
+			if ( jQuery.nodeName( this, "form" ) ) {
+				return false;
+			}
+
+			// Lazy-add a submit handler when a descendant form may potentially be submitted
+			jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
+				// Node name check avoids a VML-related crash in IE (#9807)
+				var elem = e.target,
+					form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
+				if ( form && !jQuery._data( form, "submitBubbles" ) ) {
+					jQuery.event.add( form, "submit._submit", function( event ) {
+						event._submit_bubble = true;
+					});
+					jQuery._data( form, "submitBubbles", true );
+				}
+			});
+			// return undefined since we don't need an event listener
+		},
+
+		postDispatch: function( event ) {
+			// If form was submitted by the user, bubble the event up the tree
+			if ( event._submit_bubble ) {
+				delete event._submit_bubble;
+				if ( this.parentNode && !event.isTrigger ) {
+					jQuery.event.simulate( "submit", this.parentNode, event, true );
+				}
+			}
+		},
+
+		teardown: function() {
+			// Only need this for delegated form submit events
+			if ( jQuery.nodeName( this, "form" ) ) {
+				return false;
+			}
+
+			// Remove delegated handlers; cleanData eventually reaps submit handlers attached above
+			jQuery.event.remove( this, "._submit" );
+		}
+	};
+}
+
+// IE change delegation and checkbox/radio fix
+if ( !jQuery.support.changeBubbles ) {
+
+	jQuery.event.special.change = {
+
+		setup: function() {
+
+			if ( rformElems.test( this.nodeName ) ) {
+				// IE doesn't fire change on a check/radio until blur; trigger it on click
+				// after a propertychange. Eat the blur-change in special.change.handle.
+				// This still fires onchange a second time for check/radio after blur.
+				if ( this.type === "checkbox" || this.type === "radio" ) {
+					jQuery.event.add( this, "propertychange._change", function( event ) {
+						if ( event.originalEvent.propertyName === "checked" ) {
+							this._just_changed = true;
+						}
+					});
+					jQuery.event.add( this, "click._change", function( event ) {
+						if ( this._just_changed && !event.isTrigger ) {
+							this._just_changed = false;
+						}
+						// Allow triggered, simulated change events (#11500)
+						jQuery.event.simulate( "change", this, event, true );
+					});
+				}
+				return false;
+			}
+			// Delegated event; lazy-add a change handler on descendant inputs
+			jQuery.event.add( this, "beforeactivate._change", function( e ) {
+				var elem = e.target;
+
+				if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {
+					jQuery.event.add( elem, "change._change", function( event ) {
+						if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
+							jQuery.event.simulate( "change", this.parentNode, event, true );
+						}
+					});
+					jQuery._data( elem, "changeBubbles", true );
+				}
+			});
+		},
+
+		handle: function( event ) {
+			var elem = event.target;
+
+			// Swallow native change events from checkbox/radio, we already triggered them above
+			if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
+				return event.handleObj.handler.apply( this, arguments );
+			}
+		},
+
+		teardown: function() {
+			jQuery.event.remove( this, "._change" );
+
+			return !rformElems.test( this.nodeName );
+		}
+	};
+}
+
+// Create "bubbling" focus and blur events
+if ( !jQuery.support.focusinBubbles ) {
+	jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+		// Attach a single capturing handler while someone wants focusin/focusout
+		var attaches = 0,
+			handler = function( event ) {
+				jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+			};
+
+		jQuery.event.special[ fix ] = {
+			setup: function() {
+				if ( attaches++ === 0 ) {
+					document.addEventListener( orig, handler, true );
+				}
+			},
+			teardown: function() {
+				if ( --attaches === 0 ) {
+					document.removeEventListener( orig, handler, true );
+				}
+			}
+		};
+	});
+}
+
+jQuery.fn.extend({
+
+	on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+		var type, origFn;
+
+		// Types can be a map of types/handlers
+		if ( typeof types === "object" ) {
+			// ( types-Object, selector, data )
+			if ( typeof selector !== "string" ) {
+				// ( types-Object, data )
+				data = data || selector;
+				selector = undefined;
+			}
+			for ( type in types ) {
+				this.on( type, selector, data, types[ type ], one );
+			}
+			return this;
+		}
+
+		if ( data == null && fn == null ) {
+			// ( types, fn )
+			fn = selector;
+			data = selector = undefined;
+		} else if ( fn == null ) {
+			if ( typeof selector === "string" ) {
+				// ( types, selector, fn )
+				fn = data;
+				data = undefined;
+			} else {
+				// ( types, data, fn )
+				fn = data;
+				data = selector;
+				selector = undefined;
+			}
+		}
+		if ( fn === false ) {
+			fn = returnFalse;
+		} else if ( !fn ) {
+			return this;
+		}
+
+		if ( one === 1 ) {
+			origFn = fn;
+			fn = function( event ) {
+				// Can use an empty set, since event contains the info
+				jQuery().off( event );
+				return origFn.apply( this, arguments );
+			};
+			// Use same guid so caller can remove using origFn
+			fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+		}
+		return this.each( function() {
+			jQuery.event.add( this, types, fn, data, selector );
+		});
+	},
+	one: function( types, selector, data, fn ) {
+		return this.on( types, selector, data, fn, 1 );
+	},
+	off: function( types, selector, fn ) {
+		var handleObj, type;
+		if ( types && types.preventDefault && types.handleObj ) {
+			// ( event )  dispatched jQuery.Event
+			handleObj = types.handleObj;
+			jQuery( types.delegateTarget ).off(
+				handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+				handleObj.selector,
+				handleObj.handler
+			);
+			return this;
+		}
+		if ( typeof types === "object" ) {
+			// ( types-object [, selector] )
+			for ( type in types ) {
+				this.off( type, selector, types[ type ] );
+			}
+			return this;
+		}
+		if ( selector === false || typeof selector === "function" ) {
+			// ( types [, fn] )
+			fn = selector;
+			selector = undefined;
+		}
+		if ( fn === false ) {
+			fn = returnFalse;
+		}
+		return this.each(function() {
+			jQuery.event.remove( this, types, fn, selector );
+		});
+	},
+
+	trigger: function( type, data ) {
+		return this.each(function() {
+			jQuery.event.trigger( type, data, this );
+		});
+	},
+	triggerHandler: function( type, data ) {
+		var elem = this[0];
+		if ( elem ) {
+			return jQuery.event.trigger( type, data, elem, true );
+		}
+	}
+});
+var isSimple = /^.[^:#\[\.,]*$/,
+	rparentsprev = /^(?:parents|prev(?:Until|All))/,
+	rneedsContext = jQuery.expr.match.needsContext,
+	// methods guaranteed to produce a unique set when starting from a unique set
+	guaranteedUnique = {
+		children: true,
+		contents: true,
+		next: true,
+		prev: true
+	};
+
+jQuery.fn.extend({
+	find: function( selector ) {
+		var i,
+			ret = [],
+			self = this,
+			len = self.length;
+
+		if ( typeof selector !== "string" ) {
+			return this.pushStack( jQuery( selector ).filter(function() {
+				for ( i = 0; i < len; i++ ) {
+					if ( jQuery.contains( self[ i ], this ) ) {
+						return true;
+					}
+				}
+			}) );
+		}
+
+		for ( i = 0; i < len; i++ ) {
+			jQuery.find( selector, self[ i ], ret );
+		}
+
+		// Needed because $( selector, context ) becomes $( context ).find( selector )
+		ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+		ret.selector = this.selector ? this.selector + " " + selector : selector;
+		return ret;
+	},
+
+	has: function( target ) {
+		var i,
+			targets = jQuery( target, this ),
+			len = targets.length;
+
+		return this.filter(function() {
+			for ( i = 0; i < len; i++ ) {
+				if ( jQuery.contains( this, targets[i] ) ) {
+					return true;
+				}
+			}
+		});
+	},
+
+	not: function( selector ) {
+		return this.pushStack( winnow(this, selector || [], true) );
+	},
+
+	filter: function( selector ) {
+		return this.pushStack( winnow(this, selector || [], false) );
+	},
+
+	is: function( selector ) {
+		return !!winnow(
+			this,
+
+			// If this is a positional/relative selector, check membership in the returned set
+			// so $("p:first").is("p:last") won't return true for a doc with two "p".
+			typeof selector === "string" && rneedsContext.test( selector ) ?
+				jQuery( selector ) :
+				selector || [],
+			false
+		).length;
+	},
+
+	closest: function( selectors, context ) {
+		var cur,
+			i = 0,
+			l = this.length,
+			ret = [],
+			pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+				jQuery( selectors, context || this.context ) :
+				0;
+
+		for ( ; i < l; i++ ) {
+			for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
+				// Always skip document fragments
+				if ( cur.nodeType < 11 && (pos ?
+					pos.index(cur) > -1 :
+
+					// Don't pass non-elements to Sizzle
+					cur.nodeType === 1 &&
+						jQuery.find.matchesSelector(cur, selectors)) ) {
+
+					cur = ret.push( cur );
+					break;
+				}
+			}
+		}
+
+		return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );
+	},
+
+	// Determine the position of an element within
+	// the matched set of elements
+	index: function( elem ) {
+
+		// No argument, return index in parent
+		if ( !elem ) {
+			return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;
+		}
+
+		// index in selector
+		if ( typeof elem === "string" ) {
+			return jQuery.inArray( this[0], jQuery( elem ) );
+		}
+
+		// Locate the position of the desired element
+		return jQuery.inArray(
+			// If it receives a jQuery object, the first element is used
+			elem.jquery ? elem[0] : elem, this );
+	},
+
+	add: function( selector, context ) {
+		var set = typeof selector === "string" ?
+				jQuery( selector, context ) :
+				jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
+			all = jQuery.merge( this.get(), set );
+
+		return this.pushStack( jQuery.unique(all) );
+	},
+
+	addBack: function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter(selector)
+		);
+	}
+});
+
+function sibling( cur, dir ) {
+	do {
+		cur = cur[ dir ];
+	} while ( cur && cur.nodeType !== 1 );
+
+	return cur;
+}
+
+jQuery.each({
+	parent: function( elem ) {
+		var parent = elem.parentNode;
+		return parent && parent.nodeType !== 11 ? parent : null;
+	},
+	parents: function( elem ) {
+		return jQuery.dir( elem, "parentNode" );
+	},
+	parentsUntil: function( elem, i, until ) {
+		return jQuery.dir( elem, "parentNode", until );
+	},
+	next: function( elem ) {
+		return sibling( elem, "nextSibling" );
+	},
+	prev: function( elem ) {
+		return sibling( elem, "previousSibling" );
+	},
+	nextAll: function( elem ) {
+		return jQuery.dir( elem, "nextSibling" );
+	},
+	prevAll: function( elem ) {
+		return jQuery.dir( elem, "previousSibling" );
+	},
+	nextUntil: function( elem, i, until ) {
+		return jQuery.dir( elem, "nextSibling", until );
+	},
+	prevUntil: function( elem, i, until ) {
+		return jQuery.dir( elem, "previousSibling", until );
+	},
+	siblings: function( elem ) {
+		return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
+	},
+	children: function( elem ) {
+		return jQuery.sibling( elem.firstChild );
+	},
+	contents: function( elem ) {
+		return jQuery.nodeName( elem, "iframe" ) ?
+			elem.contentDocument || elem.contentWindow.document :
+			jQuery.merge( [], elem.childNodes );
+	}
+}, function( name, fn ) {
+	jQuery.fn[ name ] = function( until, selector ) {
+		var ret = jQuery.map( this, fn, until );
+
+		if ( name.slice( -5 ) !== "Until" ) {
+			selector = until;
+		}
+
+		if ( selector && typeof selector === "string" ) {
+			ret = jQuery.filter( selector, ret );
+		}
+
+		if ( this.length > 1 ) {
+			// Remove duplicates
+			if ( !guaranteedUnique[ name ] ) {
+				ret = jQuery.unique( ret );
+			}
+
+			// Reverse order for parents* and prev-derivatives
+			if ( rparentsprev.test( name ) ) {
+				ret = ret.reverse();
+			}
+		}
+
+		return this.pushStack( ret );
+	};
+});
+
+jQuery.extend({
+	filter: function( expr, elems, not ) {
+		var elem = elems[ 0 ];
+
+		if ( not ) {
+			expr = ":not(" + expr + ")";
+		}
+
+		return elems.length === 1 && elem.nodeType === 1 ?
+			jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+			jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+				return elem.nodeType === 1;
+			}));
+	},
+
+	dir: function( elem, dir, until ) {
+		var matched = [],
+			cur = elem[ dir ];
+
+		while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+			if ( cur.nodeType === 1 ) {
+				matched.push( cur );
+			}
+			cur = cur[dir];
+		}
+		return matched;
+	},
+
+	sibling: function( n, elem ) {
+		var r = [];
+
+		for ( ; n; n = n.nextSibling ) {
+			if ( n.nodeType === 1 && n !== elem ) {
+				r.push( n );
+			}
+		}
+
+		return r;
+	}
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+	if ( jQuery.isFunction( qualifier ) ) {
+		return jQuery.grep( elements, function( elem, i ) {
+			/* jshint -W018 */
+			return !!qualifier.call( elem, i, elem ) !== not;
+		});
+
+	}
+
+	if ( qualifier.nodeType ) {
+		return jQuery.grep( elements, function( elem ) {
+			return ( elem === qualifier ) !== not;
+		});
+
+	}
+
+	if ( typeof qualifier === "string" ) {
+		if ( isSimple.test( qualifier ) ) {
+			return jQuery.filter( qualifier, elements, not );
+		}
+
+		qualifier = jQuery.filter( qualifier, elements );
+	}
+
+	return jQuery.grep( elements, function( elem ) {
+		return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;
+	});
+}
+function createSafeFragment( document ) {
+	var list = nodeNames.split( "|" ),
+		safeFrag = document.createDocumentFragment();
+
+	if ( safeFrag.createElement ) {
+		while ( list.length ) {
+			safeFrag.createElement(
+				list.pop()
+			);
+		}
+	}
+	return safeFrag;
+}
+
+var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
+		"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
+	rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
+	rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
+	rleadingWhitespace = /^\s+/,
+	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+	rtagName = /<([\w:]+)/,
+	rtbody = /<tbody/i,
+	rhtml = /<|&#?\w+;/,
+	rnoInnerhtml = /<(?:script|style|link)/i,
+	manipulation_rcheckableType = /^(?:checkbox|radio)$/i,
+	// checked="checked" or checked
+	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+	rscriptType = /^$|\/(?:java|ecma)script/i,
+	rscriptTypeMasked = /^true\/(.*)/,
+	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
+
+	// We have to close these tags to support XHTML (#13200)
+	wrapMap = {
+		option: [ 1, "<select multiple='multiple'>", "</select>" ],
+		legend: [ 1, "<fieldset>", "</fieldset>" ],
+		area: [ 1, "<map>", "</map>" ],
+		param: [ 1, "<object>", "</object>" ],
+		thead: [ 1, "<table>", "</table>" ],
+		tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+		col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
+		td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+		// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
+		// unless wrapped in a div with non-breaking characters in front of it.
+		_default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>"  ]
+	},
+	safeFragment = createSafeFragment( document ),
+	fragmentDiv = safeFragment.appendChild( document.createElement("div") );
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+jQuery.fn.extend({
+	text: function( value ) {
+		return jQuery.access( this, function( value ) {
+			return value === undefined ?
+				jQuery.text( this ) :
+				this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
+		}, null, value, arguments.length );
+	},
+
+	append: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.appendChild( elem );
+			}
+		});
+	},
+
+	prepend: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.insertBefore( elem, target.firstChild );
+			}
+		});
+	},
+
+	before: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this );
+			}
+		});
+	},
+
+	after: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this.nextSibling );
+			}
+		});
+	},
+
+	// keepData is for internal use only--do not document
+	remove: function( selector, keepData ) {
+		var elem,
+			elems = selector ? jQuery.filter( selector, this ) : this,
+			i = 0;
+
+		for ( ; (elem = elems[i]) != null; i++ ) {
+
+			if ( !keepData && elem.nodeType === 1 ) {
+				jQuery.cleanData( getAll( elem ) );
+			}
+
+			if ( elem.parentNode ) {
+				if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
+					setGlobalEval( getAll( elem, "script" ) );
+				}
+				elem.parentNode.removeChild( elem );
+			}
+		}
+
+		return this;
+	},
+
+	empty: function() {
+		var elem,
+			i = 0;
+
+		for ( ; (elem = this[i]) != null; i++ ) {
+			// Remove element nodes and prevent memory leaks
+			if ( elem.nodeType === 1 ) {
+				jQuery.cleanData( getAll( elem, false ) );
+			}
+
+			// Remove any remaining nodes
+			while ( elem.firstChild ) {
+				elem.removeChild( elem.firstChild );
+			}
+
+			// If this is a select, ensure that it displays empty (#12336)
+			// Support: IE<9
+			if ( elem.options && jQuery.nodeName( elem, "select" ) ) {
+				elem.options.length = 0;
+			}
+		}
+
+		return this;
+	},
+
+	clone: function( dataAndEvents, deepDataAndEvents ) {
+		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+		return this.map( function () {
+			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+		});
+	},
+
+	html: function( value ) {
+		return jQuery.access( this, function( value ) {
+			var elem = this[0] || {},
+				i = 0,
+				l = this.length;
+
+			if ( value === undefined ) {
+				return elem.nodeType === 1 ?
+					elem.innerHTML.replace( rinlinejQuery, "" ) :
+					undefined;
+			}
+
+			// See if we can take a shortcut and just use innerHTML
+			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+				( jQuery.support.htmlSerialize || !rnoshimcache.test( value )  ) &&
+				( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
+				!wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
+
+				value = value.replace( rxhtmlTag, "<$1></$2>" );
+
+				try {
+					for (; i < l; i++ ) {
+						// Remove element nodes and prevent memory leaks
+						elem = this[i] || {};
+						if ( elem.nodeType === 1 ) {
+							jQuery.cleanData( getAll( elem, false ) );
+							elem.innerHTML = value;
+						}
+					}
+
+					elem = 0;
+
+				// If using innerHTML throws an exception, use the fallback method
+				} catch(e) {}
+			}
+
+			if ( elem ) {
+				this.empty().append( value );
+			}
+		}, null, value, arguments.length );
+	},
+
+	replaceWith: function() {
+		var
+			// Snapshot the DOM in case .domManip sweeps something relevant into its fragment
+			args = jQuery.map( this, function( elem ) {
+				return [ elem.nextSibling, elem.parentNode ];
+			}),
+			i = 0;
+
+		// Make the changes, replacing each context element with the new content
+		this.domManip( arguments, function( elem ) {
+			var next = args[ i++ ],
+				parent = args[ i++ ];
+
+			if ( parent ) {
+				// Don't use the snapshot next if it has moved (#13810)
+				if ( next && next.parentNode !== parent ) {
+					next = this.nextSibling;
+				}
+				jQuery( this ).remove();
+				parent.insertBefore( elem, next );
+			}
+		// Allow new content to include elements from the context set
+		}, true );
+
+		// Force removal if there was no new content (e.g., from empty arguments)
+		return i ? this : this.remove();
+	},
+
+	detach: function( selector ) {
+		return this.remove( selector, true );
+	},
+
+	domManip: function( args, callback, allowIntersection ) {
+
+		// Flatten any nested arrays
+		args = core_concat.apply( [], args );
+
+		var first, node, hasScripts,
+			scripts, doc, fragment,
+			i = 0,
+			l = this.length,
+			set = this,
+			iNoClone = l - 1,
+			value = args[0],
+			isFunction = jQuery.isFunction( value );
+
+		// We can't cloneNode fragments that contain checked, in WebKit
+		if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {
+			return this.each(function( index ) {
+				var self = set.eq( index );
+				if ( isFunction ) {
+					args[0] = value.call( this, index, self.html() );
+				}
+				self.domManip( args, callback, allowIntersection );
+			});
+		}
+
+		if ( l ) {
+			fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this );
+			first = fragment.firstChild;
+
+			if ( fragment.childNodes.length === 1 ) {
+				fragment = first;
+			}
+
+			if ( first ) {
+				scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+				hasScripts = scripts.length;
+
+				// Use the original fragment for the last item instead of the first because it can end up
+				// being emptied incorrectly in certain situations (#8070).
+				for ( ; i < l; i++ ) {
+					node = fragment;
+
+					if ( i !== iNoClone ) {
+						node = jQuery.clone( node, true, true );
+
+						// Keep references to cloned scripts for later restoration
+						if ( hasScripts ) {
+							jQuery.merge( scripts, getAll( node, "script" ) );
+						}
+					}
+
+					callback.call( this[i], node, i );
+				}
+
+				if ( hasScripts ) {
+					doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+					// Reenable scripts
+					jQuery.map( scripts, restoreScript );
+
+					// Evaluate executable scripts on first document insertion
+					for ( i = 0; i < hasScripts; i++ ) {
+						node = scripts[ i ];
+						if ( rscriptType.test( node.type || "" ) &&
+							!jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
+
+							if ( node.src ) {
+								// Hope ajax is available...
+								jQuery._evalUrl( node.src );
+							} else {
+								jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );
+							}
+						}
+					}
+				}
+
+				// Fix #11809: Avoid leaking memory
+				fragment = first = null;
+			}
+		}
+
+		return this;
+	}
+});
+
+// Support: IE<8
+// Manipulating tables requires a tbody
+function manipulationTarget( elem, content ) {
+	return jQuery.nodeName( elem, "table" ) &&
+		jQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, "tr" ) ?
+
+		elem.getElementsByTagName("tbody")[0] ||
+			elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
+		elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+	elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type;
+	return elem;
+}
+function restoreScript( elem ) {
+	var match = rscriptTypeMasked.exec( elem.type );
+	if ( match ) {
+		elem.type = match[1];
+	} else {
+		elem.removeAttribute("type");
+	}
+	return elem;
+}
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+	var elem,
+		i = 0;
+	for ( ; (elem = elems[i]) != null; i++ ) {
+		jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );
+	}
+}
+
+function cloneCopyEvent( src, dest ) {
+
+	if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
+		return;
+	}
+
+	var type, i, l,
+		oldData = jQuery._data( src ),
+		curData = jQuery._data( dest, oldData ),
+		events = oldData.events;
+
+	if ( events ) {
+		delete curData.handle;
+		curData.events = {};
+
+		for ( type in events ) {
+			for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+				jQuery.event.add( dest, type, events[ type ][ i ] );
+			}
+		}
+	}
+
+	// make the cloned public data object a copy from the original
+	if ( curData.data ) {
+		curData.data = jQuery.extend( {}, curData.data );
+	}
+}
+
+function fixCloneNodeIssues( src, dest ) {
+	var nodeName, e, data;
+
+	// We do not need to do anything for non-Elements
+	if ( dest.nodeType !== 1 ) {
+		return;
+	}
+
+	nodeName = dest.nodeName.toLowerCase();
+
+	// IE6-8 copies events bound via attachEvent when using cloneNode.
+	if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) {
+		data = jQuery._data( dest );
+
+		for ( e in data.events ) {
+			jQuery.removeEvent( dest, e, data.handle );
+		}
+
+		// Event data gets referenced instead of copied if the expando gets copied too
+		dest.removeAttribute( jQuery.expando );
+	}
+
+	// IE blanks contents when cloning scripts, and tries to evaluate newly-set text
+	if ( nodeName === "script" && dest.text !== src.text ) {
+		disableScript( dest ).text = src.text;
+		restoreScript( dest );
+
+	// IE6-10 improperly clones children of object elements using classid.
+	// IE10 throws NoModificationAllowedError if parent is null, #12132.
+	} else if ( nodeName === "object" ) {
+		if ( dest.parentNode ) {
+			dest.outerHTML = src.outerHTML;
+		}
+
+		// This path appears unavoidable for IE9. When cloning an object
+		// element in IE9, the outerHTML strategy above is not sufficient.
+		// If the src has innerHTML and the destination does not,
+		// copy the src.innerHTML into the dest.innerHTML. #10324
+		if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {
+			dest.innerHTML = src.innerHTML;
+		}
+
+	} else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) {
+		// IE6-8 fails to persist the checked state of a cloned checkbox
+		// or radio button. Worse, IE6-7 fail to give the cloned element
+		// a checked appearance if the defaultChecked value isn't also set
+
+		dest.defaultChecked = dest.checked = src.checked;
+
+		// IE6-7 get confused and end up setting the value of a cloned
+		// checkbox/radio button to an empty string instead of "on"
+		if ( dest.value !== src.value ) {
+			dest.value = src.value;
+		}
+
+	// IE6-8 fails to return the selected option to the default selected
+	// state when cloning options
+	} else if ( nodeName === "option" ) {
+		dest.defaultSelected = dest.selected = src.defaultSelected;
+
+	// IE6-8 fails to set the defaultValue to the correct value when
+	// cloning other types of input fields
+	} else if ( nodeName === "input" || nodeName === "textarea" ) {
+		dest.defaultValue = src.defaultValue;
+	}
+}
+
+jQuery.each({
+	appendTo: "append",
+	prependTo: "prepend",
+	insertBefore: "before",
+	insertAfter: "after",
+	replaceAll: "replaceWith"
+}, function( name, original ) {
+	jQuery.fn[ name ] = function( selector ) {
+		var elems,
+			i = 0,
+			ret = [],
+			insert = jQuery( selector ),
+			last = insert.length - 1;
+
+		for ( ; i <= last; i++ ) {
+			elems = i === last ? this : this.clone(true);
+			jQuery( insert[i] )[ original ]( elems );
+
+			// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()
+			core_push.apply( ret, elems.get() );
+		}
+
+		return this.pushStack( ret );
+	};
+});
+
+function getAll( context, tag ) {
+	var elems, elem,
+		i = 0,
+		found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) :
+			typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) :
+			undefined;
+
+	if ( !found ) {
+		for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {
+			if ( !tag || jQuery.nodeName( elem, tag ) ) {
+				found.push( elem );
+			} else {
+				jQuery.merge( found, getAll( elem, tag ) );
+			}
+		}
+	}
+
+	return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+		jQuery.merge( [ context ], found ) :
+		found;
+}
+
+// Used in buildFragment, fixes the defaultChecked property
+function fixDefaultChecked( elem ) {
+	if ( manipulation_rcheckableType.test( elem.type ) ) {
+		elem.defaultChecked = elem.checked;
+	}
+}
+
+jQuery.extend({
+	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+		var destElements, node, clone, i, srcElements,
+			inPage = jQuery.contains( elem.ownerDocument, elem );
+
+		if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
+			clone = elem.cloneNode( true );
+
+		// IE<=8 does not properly clone detached, unknown element nodes
+		} else {
+			fragmentDiv.innerHTML = elem.outerHTML;
+			fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
+		}
+
+		if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
+				(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
+
+			// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
+			destElements = getAll( clone );
+			srcElements = getAll( elem );
+
+			// Fix all IE cloning issues
+			for ( i = 0; (node = srcElements[i]) != null; ++i ) {
+				// Ensure that the destination node is not null; Fixes #9587
+				if ( destElements[i] ) {
+					fixCloneNodeIssues( node, destElements[i] );
+				}
+			}
+		}
+
+		// Copy the events from the original to the clone
+		if ( dataAndEvents ) {
+			if ( deepDataAndEvents ) {
+				srcElements = srcElements || getAll( elem );
+				destElements = destElements || getAll( clone );
+
+				for ( i = 0; (node = srcElements[i]) != null; i++ ) {
+					cloneCopyEvent( node, destElements[i] );
+				}
+			} else {
+				cloneCopyEvent( elem, clone );
+			}
+		}
+
+		// Preserve script evaluation history
+		destElements = getAll( clone, "script" );
+		if ( destElements.length > 0 ) {
+			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+		}
+
+		destElements = srcElements = node = null;
+
+		// Return the cloned set
+		return clone;
+	},
+
+	buildFragment: function( elems, context, scripts, selection ) {
+		var j, elem, contains,
+			tmp, tag, tbody, wrap,
+			l = elems.length,
+
+			// Ensure a safe fragment
+			safe = createSafeFragment( context ),
+
+			nodes = [],
+			i = 0;
+
+		for ( ; i < l; i++ ) {
+			elem = elems[ i ];
+
+			if ( elem || elem === 0 ) {
+
+				// Add nodes directly
+				if ( jQuery.type( elem ) === "object" ) {
+					jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+				// Convert non-html into a text node
+				} else if ( !rhtml.test( elem ) ) {
+					nodes.push( context.createTextNode( elem ) );
+
+				// Convert html into DOM nodes
+				} else {
+					tmp = tmp || safe.appendChild( context.createElement("div") );
+
+					// Deserialize a standard representation
+					tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();
+					wrap = wrapMap[ tag ] || wrapMap._default;
+
+					tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2];
+
+					// Descend through wrappers to the right content
+					j = wrap[0];
+					while ( j-- ) {
+						tmp = tmp.lastChild;
+					}
+
+					// Manually add leading whitespace removed by IE
+					if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+						nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );
+					}
+
+					// Remove IE's autoinserted <tbody> from table fragments
+					if ( !jQuery.support.tbody ) {
+
+						// String was a <table>, *may* have spurious <tbody>
+						elem = tag === "table" && !rtbody.test( elem ) ?
+							tmp.firstChild :
+
+							// String was a bare <thead> or <tfoot>
+							wrap[1] === "<table>" && !rtbody.test( elem ) ?
+								tmp :
+								0;
+
+						j = elem && elem.childNodes.length;
+						while ( j-- ) {
+							if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) {
+								elem.removeChild( tbody );
+							}
+						}
+					}
+
+					jQuery.merge( nodes, tmp.childNodes );
+
+					// Fix #12392 for WebKit and IE > 9
+					tmp.textContent = "";
+
+					// Fix #12392 for oldIE
+					while ( tmp.firstChild ) {
+						tmp.removeChild( tmp.firstChild );
+					}
+
+					// Remember the top-level container for proper cleanup
+					tmp = safe.lastChild;
+				}
+			}
+		}
+
+		// Fix #11356: Clear elements from fragment
+		if ( tmp ) {
+			safe.removeChild( tmp );
+		}
+
+		// Reset defaultChecked for any radios and checkboxes
+		// about to be appended to the DOM in IE 6/7 (#8060)
+		if ( !jQuery.support.appendChecked ) {
+			jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );
+		}
+
+		i = 0;
+		while ( (elem = nodes[ i++ ]) ) {
+
+			// #4087 - If origin and destination elements are the same, and this is
+			// that element, do not do anything
+			if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
+				continue;
+			}
+
+			contains = jQuery.contains( elem.ownerDocument, elem );
+
+			// Append to fragment
+			tmp = getAll( safe.appendChild( elem ), "script" );
+
+			// Preserve script evaluation history
+			if ( contains ) {
+				setGlobalEval( tmp );
+			}
+
+			// Capture executables
+			if ( scripts ) {
+				j = 0;
+				while ( (elem = tmp[ j++ ]) ) {
+					if ( rscriptType.test( elem.type || "" ) ) {
+						scripts.push( elem );
+					}
+				}
+			}
+		}
+
+		tmp = null;
+
+		return safe;
+	},
+
+	cleanData: function( elems, /* internal */ acceptData ) {
+		var elem, type, id, data,
+			i = 0,
+			internalKey = jQuery.expando,
+			cache = jQuery.cache,
+			deleteExpando = jQuery.support.deleteExpando,
+			special = jQuery.event.special;
+
+		for ( ; (elem = elems[i]) != null; i++ ) {
+
+			if ( acceptData || jQuery.acceptData( elem ) ) {
+
+				id = elem[ internalKey ];
+				data = id && cache[ id ];
+
+				if ( data ) {
+					if ( data.events ) {
+						for ( type in data.events ) {
+							if ( special[ type ] ) {
+								jQuery.event.remove( elem, type );
+
+							// This is a shortcut to avoid jQuery.event.remove's overhead
+							} else {
+								jQuery.removeEvent( elem, type, data.handle );
+							}
+						}
+					}
+
+					// Remove cache only if it was not already removed by jQuery.event.remove
+					if ( cache[ id ] ) {
+
+						delete cache[ id ];
+
+						// IE does not allow us to delete expando properties from nodes,
+						// nor does it have a removeAttribute function on Document nodes;
+						// we must handle all of these cases
+						if ( deleteExpando ) {
+							delete elem[ internalKey ];
+
+						} else if ( typeof elem.removeAttribute !== core_strundefined ) {
+							elem.removeAttribute( internalKey );
+
+						} else {
+							elem[ internalKey ] = null;
+						}
+
+						core_deletedIds.push( id );
+					}
+				}
+			}
+		}
+	},
+
+	_evalUrl: function( url ) {
+		return jQuery.ajax({
+			url: url,
+			type: "GET",
+			dataType: "script",
+			async: false,
+			global: false,
+			"throws": true
+		});
+	}
+});
+jQuery.fn.extend({
+	wrapAll: function( html ) {
+		if ( jQuery.isFunction( html ) ) {
+			return this.each(function(i) {
+				jQuery(this).wrapAll( html.call(this, i) );
+			});
+		}
+
+		if ( this[0] ) {
+			// The elements to wrap the target around
+			var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+			if ( this[0].parentNode ) {
+				wrap.insertBefore( this[0] );
+			}
+
+			wrap.map(function() {
+				var elem = this;
+
+				while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+					elem = elem.firstChild;
+				}
+
+				return elem;
+			}).append( this );
+		}
+
+		return this;
+	},
+
+	wrapInner: function( html ) {
+		if ( jQuery.isFunction( html ) ) {
+			return this.each(function(i) {
+				jQuery(this).wrapInner( html.call(this, i) );
+			});
+		}
+
+		return this.each(function() {
+			var self = jQuery( this ),
+				contents = self.contents();
+
+			if ( contents.length ) {
+				contents.wrapAll( html );
+
+			} else {
+				self.append( html );
+			}
+		});
+	},
+
+	wrap: function( html ) {
+		var isFunction = jQuery.isFunction( html );
+
+		return this.each(function(i) {
+			jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+		});
+	},
+
+	unwrap: function() {
+		return this.parent().each(function() {
+			if ( !jQuery.nodeName( this, "body" ) ) {
+				jQuery( this ).replaceWith( this.childNodes );
+			}
+		}).end();
+	}
+});
+var iframe, getStyles, curCSS,
+	ralpha = /alpha\([^)]*\)/i,
+	ropacity = /opacity\s*=\s*([^)]*)/,
+	rposition = /^(top|right|bottom|left)$/,
+	// swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
+	// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+	rmargin = /^margin/,
+	rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ),
+	rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ),
+	rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ),
+	elemdisplay = { BODY: "block" },
+
+	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+	cssNormalTransform = {
+		letterSpacing: 0,
+		fontWeight: 400
+	},
+
+	cssExpand = [ "Top", "Right", "Bottom", "Left" ],
+	cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
+
+// return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( style, name ) {
+
+	// shortcut for names that are not vendor prefixed
+	if ( name in style ) {
+		return name;
+	}
+
+	// check for vendor prefixed names
+	var capName = name.charAt(0).toUpperCase() + name.slice(1),
+		origName = name,
+		i = cssPrefixes.length;
+
+	while ( i-- ) {
+		name = cssPrefixes[ i ] + capName;
+		if ( name in style ) {
+			return name;
+		}
+	}
+
+	return origName;
+}
+
+function isHidden( elem, el ) {
+	// isHidden might be called from jQuery#filter function;
+	// in that case, element will be second argument
+	elem = el || elem;
+	return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
+}
+
+function showHide( elements, show ) {
+	var display, elem, hidden,
+		values = [],
+		index = 0,
+		length = elements.length;
+
+	for ( ; index < length; index++ ) {
+		elem = elements[ index ];
+		if ( !elem.style ) {
+			continue;
+		}
+
+		values[ index ] = jQuery._data( elem, "olddisplay" );
+		display = elem.style.display;
+		if ( show ) {
+			// Reset the inline display of this element to learn if it is
+			// being hidden by cascaded rules or not
+			if ( !values[ index ] && display === "none" ) {
+				elem.style.display = "";
+			}
+
+			// Set elements which have been overridden with display: none
+			// in a stylesheet to whatever the default browser style is
+			// for such an element
+			if ( elem.style.display === "" && isHidden( elem ) ) {
+				values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );
+			}
+		} else {
+
+			if ( !values[ index ] ) {
+				hidden = isHidden( elem );
+
+				if ( display && display !== "none" || !hidden ) {
+					jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
+				}
+			}
+		}
+	}
+
+	// Set the display of most of the elements in a second loop
+	// to avoid the constant reflow
+	for ( index = 0; index < length; index++ ) {
+		elem = elements[ index ];
+		if ( !elem.style ) {
+			continue;
+		}
+		if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
+			elem.style.display = show ? values[ index ] || "" : "none";
+		}
+	}
+
+	return elements;
+}
+
+jQuery.fn.extend({
+	css: function( name, value ) {
+		return jQuery.access( this, function( elem, name, value ) {
+			var len, styles,
+				map = {},
+				i = 0;
+
+			if ( jQuery.isArray( name ) ) {
+				styles = getStyles( elem );
+				len = name.length;
+
+				for ( ; i < len; i++ ) {
+					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+				}
+
+				return map;
+			}
+
+			return value !== undefined ?
+				jQuery.style( elem, name, value ) :
+				jQuery.css( elem, name );
+		}, name, value, arguments.length > 1 );
+	},
+	show: function() {
+		return showHide( this, true );
+	},
+	hide: function() {
+		return showHide( this );
+	},
+	toggle: function( state ) {
+		if ( typeof state === "boolean" ) {
+			return state ? this.show() : this.hide();
+		}
+
+		return this.each(function() {
+			if ( isHidden( this ) ) {
+				jQuery( this ).show();
+			} else {
+				jQuery( this ).hide();
+			}
+		});
+	}
+});
+
+jQuery.extend({
+	// Add in style property hooks for overriding the default
+	// behavior of getting and setting a style property
+	cssHooks: {
+		opacity: {
+			get: function( elem, computed ) {
+				if ( computed ) {
+					// We should always get a number back from opacity
+					var ret = curCSS( elem, "opacity" );
+					return ret === "" ? "1" : ret;
+				}
+			}
+		}
+	},
+
+	// Don't automatically add "px" to these possibly-unitless properties
+	cssNumber: {
+		"columnCount": true,
+		"fillOpacity": true,
+		"fontWeight": true,
+		"lineHeight": true,
+		"opacity": true,
+		"order": true,
+		"orphans": true,
+		"widows": true,
+		"zIndex": true,
+		"zoom": true
+	},
+
+	// Add in properties whose names you wish to fix before
+	// setting or getting the value
+	cssProps: {
+		// normalize float css property
+		"float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+	},
+
+	// Get and set the style property on a DOM Node
+	style: function( elem, name, value, extra ) {
+		// Don't set styles on text and comment nodes
+		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+			return;
+		}
+
+		// Make sure that we're working with the right name
+		var ret, type, hooks,
+			origName = jQuery.camelCase( name ),
+			style = elem.style;
+
+		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
+
+		// gets hook for the prefixed version
+		// followed by the unprefixed version
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// Check if we're setting a value
+		if ( value !== undefined ) {
+			type = typeof value;
+
+			// convert relative number strings (+= or -=) to relative numbers. #7345
+			if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+				value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
+				// Fixes bug #9237
+				type = "number";
+			}
+
+			// Make sure that NaN and null values aren't set. See: #7116
+			if ( value == null || type === "number" && isNaN( value ) ) {
+				return;
+			}
+
+			// If a number was passed in, add 'px' to the (except for certain CSS properties)
+			if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+				value += "px";
+			}
+
+			// Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
+			// but it would mean to define eight (for every problematic property) identical functions
+			if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
+				style[ name ] = "inherit";
+			}
+
+			// If a hook was provided, use that value, otherwise just set the specified value
+			if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
+
+				// Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+				// Fixes bug #5509
+				try {
+					style[ name ] = value;
+				} catch(e) {}
+			}
+
+		} else {
+			// If a hook was provided get the non-computed value from there
+			if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+				return ret;
+			}
+
+			// Otherwise just get the value from the style object
+			return style[ name ];
+		}
+	},
+
+	css: function( elem, name, extra, styles ) {
+		var num, val, hooks,
+			origName = jQuery.camelCase( name );
+
+		// Make sure that we're working with the right name
+		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
+
+		// gets hook for the prefixed version
+		// followed by the unprefixed version
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// If a hook was provided get the computed value from there
+		if ( hooks && "get" in hooks ) {
+			val = hooks.get( elem, true, extra );
+		}
+
+		// Otherwise, if a way to get the computed value exists, use that
+		if ( val === undefined ) {
+			val = curCSS( elem, name, styles );
+		}
+
+		//convert "normal" to computed value
+		if ( val === "normal" && name in cssNormalTransform ) {
+			val = cssNormalTransform[ name ];
+		}
+
+		// Return, converting to number if forced or a qualifier was provided and val looks numeric
+		if ( extra === "" || extra ) {
+			num = parseFloat( val );
+			return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
+		}
+		return val;
+	}
+});
+
+// NOTE: we've included the "window" in window.getComputedStyle
+// because jsdom on node.js will break without it.
+if ( window.getComputedStyle ) {
+	getStyles = function( elem ) {
+		return window.getComputedStyle( elem, null );
+	};
+
+	curCSS = function( elem, name, _computed ) {
+		var width, minWidth, maxWidth,
+			computed = _computed || getStyles( elem ),
+
+			// getPropertyValue is only needed for .css('filter') in IE9, see #12537
+			ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined,
+			style = elem.style;
+
+		if ( computed ) {
+
+			if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+				ret = jQuery.style( elem, name );
+			}
+
+			// A tribute to the "awesome hack by Dean Edwards"
+			// Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right
+			// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
+			// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
+			if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+				// Remember the original values
+				width = style.width;
+				minWidth = style.minWidth;
+				maxWidth = style.maxWidth;
+
+				// Put in the new values to get a computed value out
+				style.minWidth = style.maxWidth = style.width = ret;
+				ret = computed.width;
+
+				// Revert the changed values
+				style.width = width;
+				style.minWidth = minWidth;
+				style.maxWidth = maxWidth;
+			}
+		}
+
+		return ret;
+	};
+} else if ( document.documentElement.currentStyle ) {
+	getStyles = function( elem ) {
+		return elem.currentStyle;
+	};
+
+	curCSS = function( elem, name, _computed ) {
+		var left, rs, rsLeft,
+			computed = _computed || getStyles( elem ),
+			ret = computed ? computed[ name ] : undefined,
+			style = elem.style;
+
+		// Avoid setting ret to empty string here
+		// so we don't default to auto
+		if ( ret == null && style && style[ name ] ) {
+			ret = style[ name ];
+		}
+
+		// From the awesome hack by Dean Edwards
+		// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+		// If we're not dealing with a regular pixel number
+		// but a number that has a weird ending, we need to convert it to pixels
+		// but not position css attributes, as those are proportional to the parent element instead
+		// and we can't measure the parent instead because it might trigger a "stacking dolls" problem
+		if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {
+
+			// Remember the original values
+			left = style.left;
+			rs = elem.runtimeStyle;
+			rsLeft = rs && rs.left;
+
+			// Put in the new values to get a computed value out
+			if ( rsLeft ) {
+				rs.left = elem.currentStyle.left;
+			}
+			style.left = name === "fontSize" ? "1em" : ret;
+			ret = style.pixelLeft + "px";
+
+			// Revert the changed values
+			style.left = left;
+			if ( rsLeft ) {
+				rs.left = rsLeft;
+			}
+		}
+
+		return ret === "" ? "auto" : ret;
+	};
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+	var matches = rnumsplit.exec( value );
+	return matches ?
+		// Guard against undefined "subtract", e.g., when used as in cssHooks
+		Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
+		value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+	var i = extra === ( isBorderBox ? "border" : "content" ) ?
+		// If we already have the right measurement, avoid augmentation
+		4 :
+		// Otherwise initialize for horizontal or vertical properties
+		name === "width" ? 1 : 0,
+
+		val = 0;
+
+	for ( ; i < 4; i += 2 ) {
+		// both box models exclude margin, so add it if we want it
+		if ( extra === "margin" ) {
+			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+		}
+
+		if ( isBorderBox ) {
+			// border-box includes padding, so remove it if we want content
+			if ( extra === "content" ) {
+				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+			}
+
+			// at this point, extra isn't border nor margin, so remove border
+			if ( extra !== "margin" ) {
+				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+		} else {
+			// at this point, extra isn't content, so add padding
+			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+			// at this point, extra isn't content nor padding, so add border
+			if ( extra !== "padding" ) {
+				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+		}
+	}
+
+	return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+	// Start with offset property, which is equivalent to the border-box value
+	var valueIsBorderBox = true,
+		val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+		styles = getStyles( elem ),
+		isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+	// some non-html elements return undefined for offsetWidth, so check for null/undefined
+	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+	if ( val <= 0 || val == null ) {
+		// Fall back to computed then uncomputed css if necessary
+		val = curCSS( elem, name, styles );
+		if ( val < 0 || val == null ) {
+			val = elem.style[ name ];
+		}
+
+		// Computed unit is not pixels. Stop here and return.
+		if ( rnumnonpx.test(val) ) {
+			return val;
+		}
+
+		// we need the check for style in case a browser which returns unreliable values
+		// for getComputedStyle silently falls back to the reliable elem.style
+		valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );
+
+		// Normalize "", auto, and prepare for extra
+		val = parseFloat( val ) || 0;
+	}
+
+	// use the active box-sizing model to add/subtract irrelevant styles
+	return ( val +
+		augmentWidthOrHeight(
+			elem,
+			name,
+			extra || ( isBorderBox ? "border" : "content" ),
+			valueIsBorderBox,
+			styles
+		)
+	) + "px";
+}
+
+// Try to determine the default display value of an element
+function css_defaultDisplay( nodeName ) {
+	var doc = document,
+		display = elemdisplay[ nodeName ];
+
+	if ( !display ) {
+		display = actualDisplay( nodeName, doc );
+
+		// If the simple way fails, read from inside an iframe
+		if ( display === "none" || !display ) {
+			// Use the already-created iframe if possible
+			iframe = ( iframe ||
+				jQuery("<iframe frameborder='0' width='0' height='0'/>")
+				.css( "cssText", "display:block !important" )
+			).appendTo( doc.documentElement );
+
+			// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
+			doc = ( iframe[0].contentWindow || iframe[0].contentDocument ).document;
+			doc.write("<!doctype html><html><body>");
+			doc.close();
+
+			display = actualDisplay( nodeName, doc );
+			iframe.detach();
+		}
+
+		// Store the correct default display
+		elemdisplay[ nodeName ] = display;
+	}
+
+	return display;
+}
+
+// Called ONLY from within css_defaultDisplay
+function actualDisplay( name, doc ) {
+	var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
+		display = jQuery.css( elem[0], "display" );
+	elem.remove();
+	return display;
+}
+
+jQuery.each([ "height", "width" ], function( i, name ) {
+	jQuery.cssHooks[ name ] = {
+		get: function( elem, computed, extra ) {
+			if ( computed ) {
+				// certain elements can have dimension info if we invisibly show them
+				// however, it must have a current display style that would benefit from this
+				return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
+					jQuery.swap( elem, cssShow, function() {
+						return getWidthOrHeight( elem, name, extra );
+					}) :
+					getWidthOrHeight( elem, name, extra );
+			}
+		},
+
+		set: function( elem, value, extra ) {
+			var styles = extra && getStyles( elem );
+			return setPositiveNumber( elem, value, extra ?
+				augmentWidthOrHeight(
+					elem,
+					name,
+					extra,
+					jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+					styles
+				) : 0
+			);
+		}
+	};
+});
+
+if ( !jQuery.support.opacity ) {
+	jQuery.cssHooks.opacity = {
+		get: function( elem, computed ) {
+			// IE uses filters for opacity
+			return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
+				( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
+				computed ? "1" : "";
+		},
+
+		set: function( elem, value ) {
+			var style = elem.style,
+				currentStyle = elem.currentStyle,
+				opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
+				filter = currentStyle && currentStyle.filter || style.filter || "";
+
+			// IE has trouble with opacity if it does not have layout
+			// Force it by setting the zoom level
+			style.zoom = 1;
+
+			// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
+			// if value === "", then remove inline opacity #12685
+			if ( ( value >= 1 || value === "" ) &&
+					jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
+					style.removeAttribute ) {
+
+				// Setting style.filter to null, "" & " " still leave "filter:" in the cssText
+				// if "filter:" is present at all, clearType is disabled, we want to avoid this
+				// style.removeAttribute is IE Only, but so apparently is this code path...
+				style.removeAttribute( "filter" );
+
+				// if there is no filter style applied in a css rule or unset inline opacity, we are done
+				if ( value === "" || currentStyle && !currentStyle.filter ) {
+					return;
+				}
+			}
+
+			// otherwise, set new filter values
+			style.filter = ralpha.test( filter ) ?
+				filter.replace( ralpha, opacity ) :
+				filter + " " + opacity;
+		}
+	};
+}
+
+// These hooks cannot be added until DOM ready because the support test
+// for it is not run until after DOM ready
+jQuery(function() {
+	if ( !jQuery.support.reliableMarginRight ) {
+		jQuery.cssHooks.marginRight = {
+			get: function( elem, computed ) {
+				if ( computed ) {
+					// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+					// Work around by temporarily setting element display to inline-block
+					return jQuery.swap( elem, { "display": "inline-block" },
+						curCSS, [ elem, "marginRight" ] );
+				}
+			}
+		};
+	}
+
+	// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+	// getComputedStyle returns percent when specified for top/left/bottom/right
+	// rather than make the css module depend on the offset module, we just check for it here
+	if ( !jQuery.support.pixelPosition && jQuery.fn.position ) {
+		jQuery.each( [ "top", "left" ], function( i, prop ) {
+			jQuery.cssHooks[ prop ] = {
+				get: function( elem, computed ) {
+					if ( computed ) {
+						computed = curCSS( elem, prop );
+						// if curCSS returns percentage, fallback to offset
+						return rnumnonpx.test( computed ) ?
+							jQuery( elem ).position()[ prop ] + "px" :
+							computed;
+					}
+				}
+			};
+		});
+	}
+
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+	jQuery.expr.filters.hidden = function( elem ) {
+		// Support: Opera <= 12.12
+		// Opera reports offsetWidths and offsetHeights less than zero on some elements
+		return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||
+			(!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
+	};
+
+	jQuery.expr.filters.visible = function( elem ) {
+		return !jQuery.expr.filters.hidden( elem );
+	};
+}
+
+// These hooks are used by animate to expand properties
+jQuery.each({
+	margin: "",
+	padding: "",
+	border: "Width"
+}, function( prefix, suffix ) {
+	jQuery.cssHooks[ prefix + suffix ] = {
+		expand: function( value ) {
+			var i = 0,
+				expanded = {},
+
+				// assumes a single number if not a string
+				parts = typeof value === "string" ? value.split(" ") : [ value ];
+
+			for ( ; i < 4; i++ ) {
+				expanded[ prefix + cssExpand[ i ] + suffix ] =
+					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+			}
+
+			return expanded;
+		}
+	};
+
+	if ( !rmargin.test( prefix ) ) {
+		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+	}
+});
+var r20 = /%20/g,
+	rbracket = /\[\]$/,
+	rCRLF = /\r?\n/g,
+	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+	rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+jQuery.fn.extend({
+	serialize: function() {
+		return jQuery.param( this.serializeArray() );
+	},
+	serializeArray: function() {
+		return this.map(function(){
+			// Can add propHook for "elements" to filter or add form elements
+			var elements = jQuery.prop( this, "elements" );
+			return elements ? jQuery.makeArray( elements ) : this;
+		})
+		.filter(function(){
+			var type = this.type;
+			// Use .is(":disabled") so that fieldset[disabled] works
+			return this.name && !jQuery( this ).is( ":disabled" ) &&
+				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+				( this.checked || !manipulation_rcheckableType.test( type ) );
+		})
+		.map(function( i, elem ){
+			var val = jQuery( this ).val();
+
+			return val == null ?
+				null :
+				jQuery.isArray( val ) ?
+					jQuery.map( val, function( val ){
+						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+					}) :
+					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+		}).get();
+	}
+});
+
+//Serialize an array of form elements or a set of
+//key/values into a query string
+jQuery.param = function( a, traditional ) {
+	var prefix,
+		s = [],
+		add = function( key, value ) {
+			// If value is a function, invoke it and return its value
+			value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
+			s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+		};
+
+	// Set traditional to true for jQuery <= 1.3.2 behavior.
+	if ( traditional === undefined ) {
+		traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
+	}
+
+	// If an array was passed in, assume that it is an array of form elements.
+	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+		// Serialize the form elements
+		jQuery.each( a, function() {
+			add( this.name, this.value );
+		});
+
+	} else {
+		// If traditional, encode the "old" way (the way 1.3.2 or older
+		// did it), otherwise encode params recursively.
+		for ( prefix in a ) {
+			buildParams( prefix, a[ prefix ], traditional, add );
+		}
+	}
+
+	// Return the resulting serialization
+	return s.join( "&" ).replace( r20, "+" );
+};
+
+function buildParams( prefix, obj, traditional, add ) {
+	var name;
+
+	if ( jQuery.isArray( obj ) ) {
+		// Serialize array item.
+		jQuery.each( obj, function( i, v ) {
+			if ( traditional || rbracket.test( prefix ) ) {
+				// Treat each array item as a scalar.
+				add( prefix, v );
+
+			} else {
+				// Item is non-scalar (array or object), encode its numeric index.
+				buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
+			}
+		});
+
+	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
+		// Serialize object item.
+		for ( name in obj ) {
+			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+		}
+
+	} else {
+		// Serialize scalar item.
+		add( prefix, obj );
+	}
+}
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+	"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+	// Handle event binding
+	jQuery.fn[ name ] = function( data, fn ) {
+		return arguments.length > 0 ?
+			this.on( name, null, data, fn ) :
+			this.trigger( name );
+	};
+});
+
+jQuery.fn.extend({
+	hover: function( fnOver, fnOut ) {
+		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+	},
+
+	bind: function( types, data, fn ) {
+		return this.on( types, null, data, fn );
+	},
+	unbind: function( types, fn ) {
+		return this.off( types, null, fn );
+	},
+
+	delegate: function( selector, types, data, fn ) {
+		return this.on( types, selector, data, fn );
+	},
+	undelegate: function( selector, types, fn ) {
+		// ( namespace ) or ( selector, types [, fn] )
+		return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
+	}
+});
+var
+	// Document location
+	ajaxLocParts,
+	ajaxLocation,
+	ajax_nonce = jQuery.now(),
+
+	ajax_rquery = /\?/,
+	rhash = /#.*$/,
+	rts = /([?&])_=[^&]*/,
+	rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
+	// #7653, #8125, #8152: local protocol detection
+	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+	rnoContent = /^(?:GET|HEAD)$/,
+	rprotocol = /^\/\//,
+	rurl = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
+
+	// Keep a copy of the old load method
+	_load = jQuery.fn.load,
+
+	/* Prefilters
+	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+	 * 2) These are called:
+	 *    - BEFORE asking for a transport
+	 *    - AFTER param serialization (s.data is a string if s.processData is true)
+	 * 3) key is the dataType
+	 * 4) the catchall symbol "*" can be used
+	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+	 */
+	prefilters = {},
+
+	/* Transports bindings
+	 * 1) key is the dataType
+	 * 2) the catchall symbol "*" can be used
+	 * 3) selection will start with transport dataType and THEN go to "*" if needed
+	 */
+	transports = {},
+
+	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+	allTypes = "*/".concat("*");
+
+// #8138, IE may throw an exception when accessing
+// a field from window.location if document.domain has been set
+try {
+	ajaxLocation = location.href;
+} catch( e ) {
+	// Use the href attribute of an A element
+	// since IE will modify it given document.location
+	ajaxLocation = document.createElement( "a" );
+	ajaxLocation.href = "";
+	ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+	// dataTypeExpression is optional and defaults to "*"
+	return function( dataTypeExpression, func ) {
+
+		if ( typeof dataTypeExpression !== "string" ) {
+			func = dataTypeExpression;
+			dataTypeExpression = "*";
+		}
+
+		var dataType,
+			i = 0,
+			dataTypes = dataTypeExpression.toLowerCase().match( core_rnotwhite ) || [];
+
+		if ( jQuery.isFunction( func ) ) {
+			// For each dataType in the dataTypeExpression
+			while ( (dataType = dataTypes[i++]) ) {
+				// Prepend if requested
+				if ( dataType[0] === "+" ) {
+					dataType = dataType.slice( 1 ) || "*";
+					(structure[ dataType ] = structure[ dataType ] || []).unshift( func );
+
+				// Otherwise append
+				} else {
+					(structure[ dataType ] = structure[ dataType ] || []).push( func );
+				}
+			}
+		}
+	};
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+	var inspected = {},
+		seekingTransport = ( structure === transports );
+
+	function inspect( dataType ) {
+		var selected;
+		inspected[ dataType ] = true;
+		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+			if( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+				options.dataTypes.unshift( dataTypeOrTransport );
+				inspect( dataTypeOrTransport );
+				return false;
+			} else if ( seekingTransport ) {
+				return !( selected = dataTypeOrTransport );
+			}
+		});
+		return selected;
+	}
+
+	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+	var deep, key,
+		flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+	for ( key in src ) {
+		if ( src[ key ] !== undefined ) {
+			( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
+		}
+	}
+	if ( deep ) {
+		jQuery.extend( true, target, deep );
+	}
+
+	return target;
+}
+
+jQuery.fn.load = function( url, params, callback ) {
+	if ( typeof url !== "string" && _load ) {
+		return _load.apply( this, arguments );
+	}
+
+	var selector, response, type,
+		self = this,
+		off = url.indexOf(" ");
+
+	if ( off >= 0 ) {
+		selector = url.slice( off, url.length );
+		url = url.slice( 0, off );
+	}
+
+	// If it's a function
+	if ( jQuery.isFunction( params ) ) {
+
+		// We assume that it's the callback
+		callback = params;
+		params = undefined;
+
+	// Otherwise, build a param string
+	} else if ( params && typeof params === "object" ) {
+		type = "POST";
+	}
+
+	// If we have elements to modify, make the request
+	if ( self.length > 0 ) {
+		jQuery.ajax({
+			url: url,
+
+			// if "type" variable is undefined, then "GET" method will be used
+			type: type,
+			dataType: "html",
+			data: params
+		}).done(function( responseText ) {
+
+			// Save response for use in complete callback
+			response = arguments;
+
+			self.html( selector ?
+
+				// If a selector was specified, locate the right elements in a dummy div
+				// Exclude scripts to avoid IE 'Permission Denied' errors
+				jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+				// Otherwise use the full result
+				responseText );
+
+		}).complete( callback && function( jqXHR, status ) {
+			self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
+		});
+	}
+
+	return this;
+};
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ){
+	jQuery.fn[ type ] = function( fn ){
+		return this.on( type, fn );
+	};
+});
+
+jQuery.extend({
+
+	// Counter for holding the number of active queries
+	active: 0,
+
+	// Last-Modified header cache for next request
+	lastModified: {},
+	etag: {},
+
+	ajaxSettings: {
+		url: ajaxLocation,
+		type: "GET",
+		isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+		global: true,
+		processData: true,
+		async: true,
+		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+		/*
+		timeout: 0,
+		data: null,
+		dataType: null,
+		username: null,
+		password: null,
+		cache: null,
+		throws: false,
+		traditional: false,
+		headers: {},
+		*/
+
+		accepts: {
+			"*": allTypes,
+			text: "text/plain",
+			html: "text/html",
+			xml: "application/xml, text/xml",
+			json: "application/json, text/javascript"
+		},
+
+		contents: {
+			xml: /xml/,
+			html: /html/,
+			json: /json/
+		},
+
+		responseFields: {
+			xml: "responseXML",
+			text: "responseText",
+			json: "responseJSON"
+		},
+
+		// Data converters
+		// Keys separate source (or catchall "*") and destination types with a single space
+		converters: {
+
+			// Convert anything to text
+			"* text": String,
+
+			// Text to html (true = no transformation)
+			"text html": true,
+
+			// Evaluate text as a json expression
+			"text json": jQuery.parseJSON,
+
+			// Parse text as xml
+			"text xml": jQuery.parseXML
+		},
+
+		// For options that shouldn't be deep extended:
+		// you can add your own custom options here if
+		// and when you create one that shouldn't be
+		// deep extended (see ajaxExtend)
+		flatOptions: {
+			url: true,
+			context: true
+		}
+	},
+
+	// Creates a full fledged settings object into target
+	// with both ajaxSettings and settings fields.
+	// If target is omitted, writes into ajaxSettings.
+	ajaxSetup: function( target, settings ) {
+		return settings ?
+
+			// Building a settings object
+			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+			// Extending ajaxSettings
+			ajaxExtend( jQuery.ajaxSettings, target );
+	},
+
+	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+	ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+	// Main method
+	ajax: function( url, options ) {
+
+		// If url is an object, simulate pre-1.5 signature
+		if ( typeof url === "object" ) {
+			options = url;
+			url = undefined;
+		}
+
+		// Force options to be an object
+		options = options || {};
+
+		var // Cross-domain detection vars
+			parts,
+			// Loop variable
+			i,
+			// URL without anti-cache param
+			cacheURL,
+			// Response headers as string
+			responseHeadersString,
+			// timeout handle
+			timeoutTimer,
+
+			// To know if global events are to be dispatched
+			fireGlobals,
+
+			transport,
+			// Response headers
+			responseHeaders,
+			// Create the final options object
+			s = jQuery.ajaxSetup( {}, options ),
+			// Callbacks context
+			callbackContext = s.context || s,
+			// Context for global events is callbackContext if it is a DOM node or jQuery collection
+			globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
+				jQuery( callbackContext ) :
+				jQuery.event,
+			// Deferreds
+			deferred = jQuery.Deferred(),
+			completeDeferred = jQuery.Callbacks("once memory"),
+			// Status-dependent callbacks
+			statusCode = s.statusCode || {},
+			// Headers (they are sent all at once)
+			requestHeaders = {},
+			requestHeadersNames = {},
+			// The jqXHR state
+			state = 0,
+			// Default abort message
+			strAbort = "canceled",
+			// Fake xhr
+			jqXHR = {
+				readyState: 0,
+
+				// Builds headers hashtable if needed
+				getResponseHeader: function( key ) {
+					var match;
+					if ( state === 2 ) {
+						if ( !responseHeaders ) {
+							responseHeaders = {};
+							while ( (match = rheaders.exec( responseHeadersString )) ) {
+								responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+							}
+						}
+						match = responseHeaders[ key.toLowerCase() ];
+					}
+					return match == null ? null : match;
+				},
+
+				// Raw string
+				getAllResponseHeaders: function() {
+					return state === 2 ? responseHeadersString : null;
+				},
+
+				// Caches the header
+				setRequestHeader: function( name, value ) {
+					var lname = name.toLowerCase();
+					if ( !state ) {
+						name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+						requestHeaders[ name ] = value;
+					}
+					return this;
+				},
+
+				// Overrides response content-type header
+				overrideMimeType: function( type ) {
+					if ( !state ) {
+						s.mimeType = type;
+					}
+					return this;
+				},
+
+				// Status-dependent callbacks
+				statusCode: function( map ) {
+					var code;
+					if ( map ) {
+						if ( state < 2 ) {
+							for ( code in map ) {
+								// Lazy-add the new callback in a way that preserves old ones
+								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+							}
+						} else {
+							// Execute the appropriate callbacks
+							jqXHR.always( map[ jqXHR.status ] );
+						}
+					}
+					return this;
+				},
+
+				// Cancel the request
+				abort: function( statusText ) {
+					var finalText = statusText || strAbort;
+					if ( transport ) {
+						transport.abort( finalText );
+					}
+					done( 0, finalText );
+					return this;
+				}
+			};
+
+		// Attach deferreds
+		deferred.promise( jqXHR ).complete = completeDeferred.add;
+		jqXHR.success = jqXHR.done;
+		jqXHR.error = jqXHR.fail;
+
+		// Remove hash character (#7531: and string promotion)
+		// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+		// Handle falsy url in the settings object (#10093: consistency with old signature)
+		// We also use the url parameter if available
+		s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+		// Alias method option to type as per ticket #12004
+		s.type = options.method || options.type || s.method || s.type;
+
+		// Extract dataTypes list
+		s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( core_rnotwhite ) || [""];
+
+		// A cross-domain request is in order when we have a protocol:host:port mismatch
+		if ( s.crossDomain == null ) {
+			parts = rurl.exec( s.url.toLowerCase() );
+			s.crossDomain = !!( parts &&
+				( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
+					( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
+						( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
+			);
+		}
+
+		// Convert data if not already a string
+		if ( s.data && s.processData && typeof s.data !== "string" ) {
+			s.data = jQuery.param( s.data, s.traditional );
+		}
+
+		// Apply prefilters
+		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+		// If request was aborted inside a prefilter, stop there
+		if ( state === 2 ) {
+			return jqXHR;
+		}
+
+		// We can fire global events as of now if asked to
+		fireGlobals = s.global;
+
+		// Watch for a new set of requests
+		if ( fireGlobals && jQuery.active++ === 0 ) {
+			jQuery.event.trigger("ajaxStart");
+		}
+
+		// Uppercase the type
+		s.type = s.type.toUpperCase();
+
+		// Determine if request has content
+		s.hasContent = !rnoContent.test( s.type );
+
+		// Save the URL in case we're toying with the If-Modified-Since
+		// and/or If-None-Match header later on
+		cacheURL = s.url;
+
+		// More options handling for requests with no content
+		if ( !s.hasContent ) {
+
+			// If data is available, append data to url
+			if ( s.data ) {
+				cacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
+				// #9682: remove data so that it's not used in an eventual retry
+				delete s.data;
+			}
+
+			// Add anti-cache in url if needed
+			if ( s.cache === false ) {
+				s.url = rts.test( cacheURL ) ?
+
+					// If there is already a '_' parameter, set its value
+					cacheURL.replace( rts, "$1_=" + ajax_nonce++ ) :
+
+					// Otherwise add one to the end
+					cacheURL + ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ajax_nonce++;
+			}
+		}
+
+		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+		if ( s.ifModified ) {
+			if ( jQuery.lastModified[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+			}
+			if ( jQuery.etag[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+			}
+		}
+
+		// Set the correct header, if data is being sent
+		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+			jqXHR.setRequestHeader( "Content-Type", s.contentType );
+		}
+
+		// Set the Accepts header for the server, depending on the dataType
+		jqXHR.setRequestHeader(
+			"Accept",
+			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+				s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+				s.accepts[ "*" ]
+		);
+
+		// Check for headers option
+		for ( i in s.headers ) {
+			jqXHR.setRequestHeader( i, s.headers[ i ] );
+		}
+
+		// Allow custom headers/mimetypes and early abort
+		if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+			// Abort if not done already and return
+			return jqXHR.abort();
+		}
+
+		// aborting is no longer a cancellation
+		strAbort = "abort";
+
+		// Install callbacks on deferreds
+		for ( i in { success: 1, error: 1, complete: 1 } ) {
+			jqXHR[ i ]( s[ i ] );
+		}
+
+		// Get transport
+		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+		// If no transport, we auto-abort
+		if ( !transport ) {
+			done( -1, "No Transport" );
+		} else {
+			jqXHR.readyState = 1;
+
+			// Send global event
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+			}
+			// Timeout
+			if ( s.async && s.timeout > 0 ) {
+				timeoutTimer = setTimeout(function() {
+					jqXHR.abort("timeout");
+				}, s.timeout );
+			}
+
+			try {
+				state = 1;
+				transport.send( requestHeaders, done );
+			} catch ( e ) {
+				// Propagate exception as error if not done
+				if ( state < 2 ) {
+					done( -1, e );
+				// Simply rethrow otherwise
+				} else {
+					throw e;
+				}
+			}
+		}
+
+		// Callback for when everything is done
+		function done( status, nativeStatusText, responses, headers ) {
+			var isSuccess, success, error, response, modified,
+				statusText = nativeStatusText;
+
+			// Called once
+			if ( state === 2 ) {
+				return;
+			}
+
+			// State is "done" now
+			state = 2;
+
+			// Clear timeout if it exists
+			if ( timeoutTimer ) {
+				clearTimeout( timeoutTimer );
+			}
+
+			// Dereference transport for early garbage collection
+			// (no matter how long the jqXHR object will be used)
+			transport = undefined;
+
+			// Cache response headers
+			responseHeadersString = headers || "";
+
+			// Set readyState
+			jqXHR.readyState = status > 0 ? 4 : 0;
+
+			// Determine if successful
+			isSuccess = status >= 200 && status < 300 || status === 304;
+
+			// Get response data
+			if ( responses ) {
+				response = ajaxHandleResponses( s, jqXHR, responses );
+			}
+
+			// Convert no matter what (that way responseXXX fields are always set)
+			response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+			// If successful, handle type chaining
+			if ( isSuccess ) {
+
+				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+				if ( s.ifModified ) {
+					modified = jqXHR.getResponseHeader("Last-Modified");
+					if ( modified ) {
+						jQuery.lastModified[ cacheURL ] = modified;
+					}
+					modified = jqXHR.getResponseHeader("etag");
+					if ( modified ) {
+						jQuery.etag[ cacheURL ] = modified;
+					}
+				}
+
+				// if no content
+				if ( status === 204 || s.type === "HEAD" ) {
+					statusText = "nocontent";
+
+				// if not modified
+				} else if ( status === 304 ) {
+					statusText = "notmodified";
+
+				// If we have data, let's convert it
+				} else {
+					statusText = response.state;
+					success = response.data;
+					error = response.error;
+					isSuccess = !error;
+				}
+			} else {
+				// We extract error from statusText
+				// then normalize statusText and status for non-aborts
+				error = statusText;
+				if ( status || !statusText ) {
+					statusText = "error";
+					if ( status < 0 ) {
+						status = 0;
+					}
+				}
+			}
+
+			// Set data for the fake xhr object
+			jqXHR.status = status;
+			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+			// Success/Error
+			if ( isSuccess ) {
+				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+			} else {
+				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+			}
+
+			// Status-dependent callbacks
+			jqXHR.statusCode( statusCode );
+			statusCode = undefined;
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+					[ jqXHR, s, isSuccess ? success : error ] );
+			}
+
+			// Complete
+			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+				// Handle the global AJAX counter
+				if ( !( --jQuery.active ) ) {
+					jQuery.event.trigger("ajaxStop");
+				}
+			}
+		}
+
+		return jqXHR;
+	},
+
+	getJSON: function( url, data, callback ) {
+		return jQuery.get( url, data, callback, "json" );
+	},
+
+	getScript: function( url, callback ) {
+		return jQuery.get( url, undefined, callback, "script" );
+	}
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+	jQuery[ method ] = function( url, data, callback, type ) {
+		// shift arguments if data argument was omitted
+		if ( jQuery.isFunction( data ) ) {
+			type = type || callback;
+			callback = data;
+			data = undefined;
+		}
+
+		return jQuery.ajax({
+			url: url,
+			type: method,
+			dataType: type,
+			data: data,
+			success: callback
+		});
+	};
+});
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+	var firstDataType, ct, finalDataType, type,
+		contents = s.contents,
+		dataTypes = s.dataTypes;
+
+	// Remove auto dataType and get content-type in the process
+	while( dataTypes[ 0 ] === "*" ) {
+		dataTypes.shift();
+		if ( ct === undefined ) {
+			ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
+		}
+	}
+
+	// Check if we're dealing with a known content-type
+	if ( ct ) {
+		for ( type in contents ) {
+			if ( contents[ type ] && contents[ type ].test( ct ) ) {
+				dataTypes.unshift( type );
+				break;
+			}
+		}
+	}
+
+	// Check to see if we have a response for the expected dataType
+	if ( dataTypes[ 0 ] in responses ) {
+		finalDataType = dataTypes[ 0 ];
+	} else {
+		// Try convertible dataTypes
+		for ( type in responses ) {
+			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+				finalDataType = type;
+				break;
+			}
+			if ( !firstDataType ) {
+				firstDataType = type;
+			}
+		}
+		// Or just use first one
+		finalDataType = finalDataType || firstDataType;
+	}
+
+	// If we found a dataType
+	// We add the dataType to the list if needed
+	// and return the corresponding response
+	if ( finalDataType ) {
+		if ( finalDataType !== dataTypes[ 0 ] ) {
+			dataTypes.unshift( finalDataType );
+		}
+		return responses[ finalDataType ];
+	}
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+	var conv2, current, conv, tmp, prev,
+		converters = {},
+		// Work with a copy of dataTypes in case we need to modify it for conversion
+		dataTypes = s.dataTypes.slice();
+
+	// Create converters map with lowercased keys
+	if ( dataTypes[ 1 ] ) {
+		for ( conv in s.converters ) {
+			converters[ conv.toLowerCase() ] = s.converters[ conv ];
+		}
+	}
+
+	current = dataTypes.shift();
+
+	// Convert to each sequential dataType
+	while ( current ) {
+
+		if ( s.responseFields[ current ] ) {
+			jqXHR[ s.responseFields[ current ] ] = response;
+		}
+
+		// Apply the dataFilter if provided
+		if ( !prev && isSuccess && s.dataFilter ) {
+			response = s.dataFilter( response, s.dataType );
+		}
+
+		prev = current;
+		current = dataTypes.shift();
+
+		if ( current ) {
+
+			// There's only work to do if current dataType is non-auto
+			if ( current === "*" ) {
+
+				current = prev;
+
+			// Convert response if prev dataType is non-auto and differs from current
+			} else if ( prev !== "*" && prev !== current ) {
+
+				// Seek a direct converter
+				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+				// If none found, seek a pair
+				if ( !conv ) {
+					for ( conv2 in converters ) {
+
+						// If conv2 outputs current
+						tmp = conv2.split( " " );
+						if ( tmp[ 1 ] === current ) {
+
+							// If prev can be converted to accepted input
+							conv = converters[ prev + " " + tmp[ 0 ] ] ||
+								converters[ "* " + tmp[ 0 ] ];
+							if ( conv ) {
+								// Condense equivalence converters
+								if ( conv === true ) {
+									conv = converters[ conv2 ];
+
+								// Otherwise, insert the intermediate dataType
+								} else if ( converters[ conv2 ] !== true ) {
+									current = tmp[ 0 ];
+									dataTypes.unshift( tmp[ 1 ] );
+								}
+								break;
+							}
+						}
+					}
+				}
+
+				// Apply converter (if not an equivalence)
+				if ( conv !== true ) {
+
+					// Unless errors are allowed to bubble, catch and return them
+					if ( conv && s[ "throws" ] ) {
+						response = conv( response );
+					} else {
+						try {
+							response = conv( response );
+						} catch ( e ) {
+							return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
+						}
+					}
+				}
+			}
+		}
+	}
+
+	return { state: "success", data: response };
+}
+// Install script dataType
+jQuery.ajaxSetup({
+	accepts: {
+		script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+	},
+	contents: {
+		script: /(?:java|ecma)script/
+	},
+	converters: {
+		"text script": function( text ) {
+			jQuery.globalEval( text );
+			return text;
+		}
+	}
+});
+
+// Handle cache's special case and global
+jQuery.ajaxPrefilter( "script", function( s ) {
+	if ( s.cache === undefined ) {
+		s.cache = false;
+	}
+	if ( s.crossDomain ) {
+		s.type = "GET";
+		s.global = false;
+	}
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function(s) {
+
+	// This transport only deals with cross domain requests
+	if ( s.crossDomain ) {
+
+		var script,
+			head = document.head || jQuery("head")[0] || document.documentElement;
+
+		return {
+
+			send: function( _, callback ) {
+
+				script = document.createElement("script");
+
+				script.async = true;
+
+				if ( s.scriptCharset ) {
+					script.charset = s.scriptCharset;
+				}
+
+				script.src = s.url;
+
+				// Attach handlers for all browsers
+				script.onload = script.onreadystatechange = function( _, isAbort ) {
+
+					if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+
+						// Handle memory leak in IE
+						script.onload = script.onreadystatechange = null;
+
+						// Remove the script
+						if ( script.parentNode ) {
+							script.parentNode.removeChild( script );
+						}
+
+						// Dereference the script
+						script = null;
+
+						// Callback if not abort
+						if ( !isAbort ) {
+							callback( 200, "success" );
+						}
+					}
+				};
+
+				// Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
+				// Use native DOM manipulation to avoid our domManip AJAX trickery
+				head.insertBefore( script, head.firstChild );
+			},
+
+			abort: function() {
+				if ( script ) {
+					script.onload( undefined, true );
+				}
+			}
+		};
+	}
+});
+var oldCallbacks = [],
+	rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+	jsonp: "callback",
+	jsonpCallback: function() {
+		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( ajax_nonce++ ) );
+		this[ callback ] = true;
+		return callback;
+	}
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+	var callbackName, overwritten, responseContainer,
+		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+			"url" :
+			typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
+		);
+
+	// Handle iff the expected data type is "jsonp" or we have a parameter to set
+	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+		// Get callback name, remembering preexisting value associated with it
+		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+			s.jsonpCallback() :
+			s.jsonpCallback;
+
+		// Insert callback into url or form data
+		if ( jsonProp ) {
+			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+		} else if ( s.jsonp !== false ) {
+			s.url += ( ajax_rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+		}
+
+		// Use data converter to retrieve json after script execution
+		s.converters["script json"] = function() {
+			if ( !responseContainer ) {
+				jQuery.error( callbackName + " was not called" );
+			}
+			return responseContainer[ 0 ];
+		};
+
+		// force json dataType
+		s.dataTypes[ 0 ] = "json";
+
+		// Install callback
+		overwritten = window[ callbackName ];
+		window[ callbackName ] = function() {
+			responseContainer = arguments;
+		};
+
+		// Clean-up function (fires after converters)
+		jqXHR.always(function() {
+			// Restore preexisting value
+			window[ callbackName ] = overwritten;
+
+			// Save back as free
+			if ( s[ callbackName ] ) {
+				// make sure that re-using the options doesn't screw things around
+				s.jsonpCallback = originalSettings.jsonpCallback;
+
+				// save the callback name for future use
+				oldCallbacks.push( callbackName );
+			}
+
+			// Call if it was a function and we have a response
+			if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+				overwritten( responseContainer[ 0 ] );
+			}
+
+			responseContainer = overwritten = undefined;
+		});
+
+		// Delegate to script
+		return "script";
+	}
+});
+var xhrCallbacks, xhrSupported,
+	xhrId = 0,
+	// #5280: Internet Explorer will keep connections alive if we don't abort on unload
+	xhrOnUnloadAbort = window.ActiveXObject && function() {
+		// Abort all pending requests
+		var key;
+		for ( key in xhrCallbacks ) {
+			xhrCallbacks[ key ]( undefined, true );
+		}
+	};
+
+// Functions to create xhrs
+function createStandardXHR() {
+	try {
+		return new window.XMLHttpRequest();
+	} catch( e ) {}
+}
+
+function createActiveXHR() {
+	try {
+		return new window.ActiveXObject("Microsoft.XMLHTTP");
+	} catch( e ) {}
+}
+
+// Create the request object
+// (This is still attached to ajaxSettings for backward compatibility)
+jQuery.ajaxSettings.xhr = window.ActiveXObject ?
+	/* Microsoft failed to properly
+	 * implement the XMLHttpRequest in IE7 (can't request local files),
+	 * so we use the ActiveXObject when it is available
+	 * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+	 * we need a fallback.
+	 */
+	function() {
+		return !this.isLocal && createStandardXHR() || createActiveXHR();
+	} :
+	// For all other browsers, use the standard XMLHttpRequest object
+	createStandardXHR;
+
+// Determine support properties
+xhrSupported = jQuery.ajaxSettings.xhr();
+jQuery.support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+xhrSupported = jQuery.support.ajax = !!xhrSupported;
+
+// Create transport if the browser can provide an xhr
+if ( xhrSupported ) {
+
+	jQuery.ajaxTransport(function( s ) {
+		// Cross domain only allowed if supported through XMLHttpRequest
+		if ( !s.crossDomain || jQuery.support.cors ) {
+
+			var callback;
+
+			return {
+				send: function( headers, complete ) {
+
+					// Get a new xhr
+					var handle, i,
+						xhr = s.xhr();
+
+					// Open the socket
+					// Passing null username, generates a login popup on Opera (#2865)
+					if ( s.username ) {
+						xhr.open( s.type, s.url, s.async, s.username, s.password );
+					} else {
+						xhr.open( s.type, s.url, s.async );
+					}
+
+					// Apply custom fields if provided
+					if ( s.xhrFields ) {
+						for ( i in s.xhrFields ) {
+							xhr[ i ] = s.xhrFields[ i ];
+						}
+					}
+
+					// Override mime type if needed
+					if ( s.mimeType && xhr.overrideMimeType ) {
+						xhr.overrideMimeType( s.mimeType );
+					}
+
+					// X-Requested-With header
+					// For cross-domain requests, seeing as conditions for a preflight are
+					// akin to a jigsaw puzzle, we simply never set it to be sure.
+					// (it can always be set on a per-request basis or even using ajaxSetup)
+					// For same-domain requests, won't change header if already provided.
+					if ( !s.crossDomain && !headers["X-Requested-With"] ) {
+						headers["X-Requested-With"] = "XMLHttpRequest";
+					}
+
+					// Need an extra try/catch for cross domain requests in Firefox 3
+					try {
+						for ( i in headers ) {
+							xhr.setRequestHeader( i, headers[ i ] );
+						}
+					} catch( err ) {}
+
+					// Do send the request
+					// This may raise an exception which is actually
+					// handled in jQuery.ajax (so no try/catch here)
+					xhr.send( ( s.hasContent && s.data ) || null );
+
+					// Listener
+					callback = function( _, isAbort ) {
+						var status, responseHeaders, statusText, responses;
+
+						// Firefox throws exceptions when accessing properties
+						// of an xhr when a network error occurred
+						// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
+						try {
+
+							// Was never called and is aborted or complete
+							if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
+
+								// Only called once
+								callback = undefined;
+
+								// Do not keep as active anymore
+								if ( handle ) {
+									xhr.onreadystatechange = jQuery.noop;
+									if ( xhrOnUnloadAbort ) {
+										delete xhrCallbacks[ handle ];
+									}
+								}
+
+								// If it's an abort
+								if ( isAbort ) {
+									// Abort it manually if needed
+									if ( xhr.readyState !== 4 ) {
+										xhr.abort();
+									}
+								} else {
+									responses = {};
+									status = xhr.status;
+									responseHeaders = xhr.getAllResponseHeaders();
+
+									// When requesting binary data, IE6-9 will throw an exception
+									// on any attempt to access responseText (#11426)
+									if ( typeof xhr.responseText === "string" ) {
+										responses.text = xhr.responseText;
+									}
+
+									// Firefox throws an exception when accessing
+									// statusText for faulty cross-domain requests
+									try {
+										statusText = xhr.statusText;
+									} catch( e ) {
+										// We normalize with Webkit giving an empty statusText
+										statusText = "";
+									}
+
+									// Filter status for non standard behaviors
+
+									// If the request is local and we have data: assume a success
+									// (success with no data won't get notified, that's the best we
+									// can do given current implementations)
+									if ( !status && s.isLocal && !s.crossDomain ) {
+										status = responses.text ? 200 : 404;
+									// IE - #1450: sometimes returns 1223 when it should be 204
+									} else if ( status === 1223 ) {
+										status = 204;
+									}
+								}
+							}
+						} catch( firefoxAccessException ) {
+							if ( !isAbort ) {
+								complete( -1, firefoxAccessException );
+							}
+						}
+
+						// Call complete if needed
+						if ( responses ) {
+							complete( status, statusText, responses, responseHeaders );
+						}
+					};
+
+					if ( !s.async ) {
+						// if we're in sync mode we fire the callback
+						callback();
+					} else if ( xhr.readyState === 4 ) {
+						// (IE6 & IE7) if it's in cache and has been
+						// retrieved directly we need to fire the callback
+						setTimeout( callback );
+					} else {
+						handle = ++xhrId;
+						if ( xhrOnUnloadAbort ) {
+							// Create the active xhrs callbacks list if needed
+							// and attach the unload handler
+							if ( !xhrCallbacks ) {
+								xhrCallbacks = {};
+								jQuery( window ).unload( xhrOnUnloadAbort );
+							}
+							// Add to list of active xhrs callbacks
+							xhrCallbacks[ handle ] = callback;
+						}
+						xhr.onreadystatechange = callback;
+					}
+				},
+
+				abort: function() {
+					if ( callback ) {
+						callback( undefined, true );
+					}
+				}
+			};
+		}
+	});
+}
+var fxNow, timerId,
+	rfxtypes = /^(?:toggle|show|hide)$/,
+	rfxnum = new RegExp( "^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i" ),
+	rrun = /queueHooks$/,
+	animationPrefilters = [ defaultPrefilter ],
+	tweeners = {
+		"*": [function( prop, value ) {
+			var tween = this.createTween( prop, value ),
+				target = tween.cur(),
+				parts = rfxnum.exec( value ),
+				unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+				// Starting value computation is required for potential unit mismatches
+				start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
+					rfxnum.exec( jQuery.css( tween.elem, prop ) ),
+				scale = 1,
+				maxIterations = 20;
+
+			if ( start && start[ 3 ] !== unit ) {
+				// Trust units reported by jQuery.css
+				unit = unit || start[ 3 ];
+
+				// Make sure we update the tween properties later on
+				parts = parts || [];
+
+				// Iteratively approximate from a nonzero starting point
+				start = +target || 1;
+
+				do {
+					// If previous iteration zeroed out, double until we get *something*
+					// Use a string for doubling factor so we don't accidentally see scale as unchanged below
+					scale = scale || ".5";
+
+					// Adjust and apply
+					start = start / scale;
+					jQuery.style( tween.elem, prop, start + unit );
+
+				// Update scale, tolerating zero or NaN from tween.cur()
+				// And breaking the loop if scale is unchanged or perfect, or if we've just had enough
+				} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
+			}
+
+			// Update tween properties
+			if ( parts ) {
+				start = tween.start = +start || +target || 0;
+				tween.unit = unit;
+				// If a +=/-= token was provided, we're doing a relative animation
+				tween.end = parts[ 1 ] ?
+					start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
+					+parts[ 2 ];
+			}
+
+			return tween;
+		}]
+	};
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+	setTimeout(function() {
+		fxNow = undefined;
+	});
+	return ( fxNow = jQuery.now() );
+}
+
+function createTween( value, prop, animation ) {
+	var tween,
+		collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
+		index = 0,
+		length = collection.length;
+	for ( ; index < length; index++ ) {
+		if ( (tween = collection[ index ].call( animation, prop, value )) ) {
+
+			// we're done with this property
+			return tween;
+		}
+	}
+}
+
+function Animation( elem, properties, options ) {
+	var result,
+		stopped,
+		index = 0,
+		length = animationPrefilters.length,
+		deferred = jQuery.Deferred().always( function() {
+			// don't match elem in the :animated selector
+			delete tick.elem;
+		}),
+		tick = function() {
+			if ( stopped ) {
+				return false;
+			}
+			var currentTime = fxNow || createFxNow(),
+				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+				// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
+				temp = remaining / animation.duration || 0,
+				percent = 1 - temp,
+				index = 0,
+				length = animation.tweens.length;
+
+			for ( ; index < length ; index++ ) {
+				animation.tweens[ index ].run( percent );
+			}
+
+			deferred.notifyWith( elem, [ animation, percent, remaining ]);
+
+			if ( percent < 1 && length ) {
+				return remaining;
+			} else {
+				deferred.resolveWith( elem, [ animation ] );
+				return false;
+			}
+		},
+		animation = deferred.promise({
+			elem: elem,
+			props: jQuery.extend( {}, properties ),
+			opts: jQuery.extend( true, { specialEasing: {} }, options ),
+			originalProperties: properties,
+			originalOptions: options,
+			startTime: fxNow || createFxNow(),
+			duration: options.duration,
+			tweens: [],
+			createTween: function( prop, end ) {
+				var tween = jQuery.Tween( elem, animation.opts, prop, end,
+						animation.opts.specialEasing[ prop ] || animation.opts.easing );
+				animation.tweens.push( tween );
+				return tween;
+			},
+			stop: function( gotoEnd ) {
+				var index = 0,
+					// if we are going to the end, we want to run all the tweens
+					// otherwise we skip this part
+					length = gotoEnd ? animation.tweens.length : 0;
+				if ( stopped ) {
+					return this;
+				}
+				stopped = true;
+				for ( ; index < length ; index++ ) {
+					animation.tweens[ index ].run( 1 );
+				}
+
+				// resolve when we played the last frame
+				// otherwise, reject
+				if ( gotoEnd ) {
+					deferred.resolveWith( elem, [ animation, gotoEnd ] );
+				} else {
+					deferred.rejectWith( elem, [ animation, gotoEnd ] );
+				}
+				return this;
+			}
+		}),
+		props = animation.props;
+
+	propFilter( props, animation.opts.specialEasing );
+
+	for ( ; index < length ; index++ ) {
+		result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
+		if ( result ) {
+			return result;
+		}
+	}
+
+	jQuery.map( props, createTween, animation );
+
+	if ( jQuery.isFunction( animation.opts.start ) ) {
+		animation.opts.start.call( elem, animation );
+	}
+
+	jQuery.fx.timer(
+		jQuery.extend( tick, {
+			elem: elem,
+			anim: animation,
+			queue: animation.opts.queue
+		})
+	);
+
+	// attach callbacks from options
+	return animation.progress( animation.opts.progress )
+		.done( animation.opts.done, animation.opts.complete )
+		.fail( animation.opts.fail )
+		.always( animation.opts.always );
+}
+
+function propFilter( props, specialEasing ) {
+	var index, name, easing, value, hooks;
+
+	// camelCase, specialEasing and expand cssHook pass
+	for ( index in props ) {
+		name = jQuery.camelCase( index );
+		easing = specialEasing[ name ];
+		value = props[ index ];
+		if ( jQuery.isArray( value ) ) {
+			easing = value[ 1 ];
+			value = props[ index ] = value[ 0 ];
+		}
+
+		if ( index !== name ) {
+			props[ name ] = value;
+			delete props[ index ];
+		}
+
+		hooks = jQuery.cssHooks[ name ];
+		if ( hooks && "expand" in hooks ) {
+			value = hooks.expand( value );
+			delete props[ name ];
+
+			// not quite $.extend, this wont overwrite keys already present.
+			// also - reusing 'index' from above because we have the correct "name"
+			for ( index in value ) {
+				if ( !( index in props ) ) {
+					props[ index ] = value[ index ];
+					specialEasing[ index ] = easing;
+				}
+			}
+		} else {
+			specialEasing[ name ] = easing;
+		}
+	}
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+	tweener: function( props, callback ) {
+		if ( jQuery.isFunction( props ) ) {
+			callback = props;
+			props = [ "*" ];
+		} else {
+			props = props.split(" ");
+		}
+
+		var prop,
+			index = 0,
+			length = props.length;
+
+		for ( ; index < length ; index++ ) {
+			prop = props[ index ];
+			tweeners[ prop ] = tweeners[ prop ] || [];
+			tweeners[ prop ].unshift( callback );
+		}
+	},
+
+	prefilter: function( callback, prepend ) {
+		if ( prepend ) {
+			animationPrefilters.unshift( callback );
+		} else {
+			animationPrefilters.push( callback );
+		}
+	}
+});
+
+function defaultPrefilter( elem, props, opts ) {
+	/* jshint validthis: true */
+	var prop, value, toggle, tween, hooks, oldfire,
+		anim = this,
+		orig = {},
+		style = elem.style,
+		hidden = elem.nodeType && isHidden( elem ),
+		dataShow = jQuery._data( elem, "fxshow" );
+
+	// handle queue: false promises
+	if ( !opts.queue ) {
+		hooks = jQuery._queueHooks( elem, "fx" );
+		if ( hooks.unqueued == null ) {
+			hooks.unqueued = 0;
+			oldfire = hooks.empty.fire;
+			hooks.empty.fire = function() {
+				if ( !hooks.unqueued ) {
+					oldfire();
+				}
+			};
+		}
+		hooks.unqueued++;
+
+		anim.always(function() {
+			// doing this makes sure that the complete handler will be called
+			// before this completes
+			anim.always(function() {
+				hooks.unqueued--;
+				if ( !jQuery.queue( elem, "fx" ).length ) {
+					hooks.empty.fire();
+				}
+			});
+		});
+	}
+
+	// height/width overflow pass
+	if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
+		// Make sure that nothing sneaks out
+		// Record all 3 overflow attributes because IE does not
+		// change the overflow attribute when overflowX and
+		// overflowY are set to the same value
+		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+		// Set display property to inline-block for height/width
+		// animations on inline elements that are having width/height animated
+		if ( jQuery.css( elem, "display" ) === "inline" &&
+				jQuery.css( elem, "float" ) === "none" ) {
+
+			// inline-level elements accept inline-block;
+			// block-level elements need to be inline with layout
+			if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) {
+				style.display = "inline-block";
+
+			} else {
+				style.zoom = 1;
+			}
+		}
+	}
+
+	if ( opts.overflow ) {
+		style.overflow = "hidden";
+		if ( !jQuery.support.shrinkWrapBlocks ) {
+			anim.always(function() {
+				style.overflow = opts.overflow[ 0 ];
+				style.overflowX = opts.overflow[ 1 ];
+				style.overflowY = opts.overflow[ 2 ];
+			});
+		}
+	}
+
+
+	// show/hide pass
+	for ( prop in props ) {
+		value = props[ prop ];
+		if ( rfxtypes.exec( value ) ) {
+			delete props[ prop ];
+			toggle = toggle || value === "toggle";
+			if ( value === ( hidden ? "hide" : "show" ) ) {
+				continue;
+			}
+			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+		}
+	}
+
+	if ( !jQuery.isEmptyObject( orig ) ) {
+		if ( dataShow ) {
+			if ( "hidden" in dataShow ) {
+				hidden = dataShow.hidden;
+			}
+		} else {
+			dataShow = jQuery._data( elem, "fxshow", {} );
+		}
+
+		// store state if its toggle - enables .stop().toggle() to "reverse"
+		if ( toggle ) {
+			dataShow.hidden = !hidden;
+		}
+		if ( hidden ) {
+			jQuery( elem ).show();
+		} else {
+			anim.done(function() {
+				jQuery( elem ).hide();
+			});
+		}
+		anim.done(function() {
+			var prop;
+			jQuery._removeData( elem, "fxshow" );
+			for ( prop in orig ) {
+				jQuery.style( elem, prop, orig[ prop ] );
+			}
+		});
+		for ( prop in orig ) {
+			tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+
+			if ( !( prop in dataShow ) ) {
+				dataShow[ prop ] = tween.start;
+				if ( hidden ) {
+					tween.end = tween.start;
+					tween.start = prop === "width" || prop === "height" ? 1 : 0;
+				}
+			}
+		}
+	}
+}
+
+function Tween( elem, options, prop, end, easing ) {
+	return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+	constructor: Tween,
+	init: function( elem, options, prop, end, easing, unit ) {
+		this.elem = elem;
+		this.prop = prop;
+		this.easing = easing || "swing";
+		this.options = options;
+		this.start = this.now = this.cur();
+		this.end = end;
+		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+	},
+	cur: function() {
+		var hooks = Tween.propHooks[ this.prop ];
+
+		return hooks && hooks.get ?
+			hooks.get( this ) :
+			Tween.propHooks._default.get( this );
+	},
+	run: function( percent ) {
+		var eased,
+			hooks = Tween.propHooks[ this.prop ];
+
+		if ( this.options.duration ) {
+			this.pos = eased = jQuery.easing[ this.easing ](
+				percent, this.options.duration * percent, 0, 1, this.options.duration
+			);
+		} else {
+			this.pos = eased = percent;
+		}
+		this.now = ( this.end - this.start ) * eased + this.start;
+
+		if ( this.options.step ) {
+			this.options.step.call( this.elem, this.now, this );
+		}
+
+		if ( hooks && hooks.set ) {
+			hooks.set( this );
+		} else {
+			Tween.propHooks._default.set( this );
+		}
+		return this;
+	}
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+	_default: {
+		get: function( tween ) {
+			var result;
+
+			if ( tween.elem[ tween.prop ] != null &&
+				(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
+				return tween.elem[ tween.prop ];
+			}
+
+			// passing an empty string as a 3rd parameter to .css will automatically
+			// attempt a parseFloat and fallback to a string if the parse fails
+			// so, simple values such as "10px" are parsed to Float.
+			// complex values such as "rotate(1rad)" are returned as is.
+			result = jQuery.css( tween.elem, tween.prop, "" );
+			// Empty strings, null, undefined and "auto" are converted to 0.
+			return !result || result === "auto" ? 0 : result;
+		},
+		set: function( tween ) {
+			// use step hook for back compat - use cssHook if its there - use .style if its
+			// available and use plain properties where available
+			if ( jQuery.fx.step[ tween.prop ] ) {
+				jQuery.fx.step[ tween.prop ]( tween );
+			} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
+				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+			} else {
+				tween.elem[ tween.prop ] = tween.now;
+			}
+		}
+	}
+};
+
+// Support: IE <=9
+// Panic based approach to setting things on disconnected nodes
+
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+	set: function( tween ) {
+		if ( tween.elem.nodeType && tween.elem.parentNode ) {
+			tween.elem[ tween.prop ] = tween.now;
+		}
+	}
+};
+
+jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
+	var cssFn = jQuery.fn[ name ];
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return speed == null || typeof speed === "boolean" ?
+			cssFn.apply( this, arguments ) :
+			this.animate( genFx( name, true ), speed, easing, callback );
+	};
+});
+
+jQuery.fn.extend({
+	fadeTo: function( speed, to, easing, callback ) {
+
+		// show any hidden elements after setting opacity to 0
+		return this.filter( isHidden ).css( "opacity", 0 ).show()
+
+			// animate to the value specified
+			.end().animate({ opacity: to }, speed, easing, callback );
+	},
+	animate: function( prop, speed, easing, callback ) {
+		var empty = jQuery.isEmptyObject( prop ),
+			optall = jQuery.speed( speed, easing, callback ),
+			doAnimation = function() {
+				// Operate on a copy of prop so per-property easing won't be lost
+				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+				// Empty animations, or finishing resolves immediately
+				if ( empty || jQuery._data( this, "finish" ) ) {
+					anim.stop( true );
+				}
+			};
+			doAnimation.finish = doAnimation;
+
+		return empty || optall.queue === false ?
+			this.each( doAnimation ) :
+			this.queue( optall.queue, doAnimation );
+	},
+	stop: function( type, clearQueue, gotoEnd ) {
+		var stopQueue = function( hooks ) {
+			var stop = hooks.stop;
+			delete hooks.stop;
+			stop( gotoEnd );
+		};
+
+		if ( typeof type !== "string" ) {
+			gotoEnd = clearQueue;
+			clearQueue = type;
+			type = undefined;
+		}
+		if ( clearQueue && type !== false ) {
+			this.queue( type || "fx", [] );
+		}
+
+		return this.each(function() {
+			var dequeue = true,
+				index = type != null && type + "queueHooks",
+				timers = jQuery.timers,
+				data = jQuery._data( this );
+
+			if ( index ) {
+				if ( data[ index ] && data[ index ].stop ) {
+					stopQueue( data[ index ] );
+				}
+			} else {
+				for ( index in data ) {
+					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+						stopQueue( data[ index ] );
+					}
+				}
+			}
+
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+					timers[ index ].anim.stop( gotoEnd );
+					dequeue = false;
+					timers.splice( index, 1 );
+				}
+			}
+
+			// start the next in the queue if the last step wasn't forced
+			// timers currently will call their complete callbacks, which will dequeue
+			// but only if they were gotoEnd
+			if ( dequeue || !gotoEnd ) {
+				jQuery.dequeue( this, type );
+			}
+		});
+	},
+	finish: function( type ) {
+		if ( type !== false ) {
+			type = type || "fx";
+		}
+		return this.each(function() {
+			var index,
+				data = jQuery._data( this ),
+				queue = data[ type + "queue" ],
+				hooks = data[ type + "queueHooks" ],
+				timers = jQuery.timers,
+				length = queue ? queue.length : 0;
+
+			// enable finishing flag on private data
+			data.finish = true;
+
+			// empty the queue first
+			jQuery.queue( this, type, [] );
+
+			if ( hooks && hooks.stop ) {
+				hooks.stop.call( this, true );
+			}
+
+			// look for any active animations, and finish them
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+					timers[ index ].anim.stop( true );
+					timers.splice( index, 1 );
+				}
+			}
+
+			// look for any animations in the old queue and finish them
+			for ( index = 0; index < length; index++ ) {
+				if ( queue[ index ] && queue[ index ].finish ) {
+					queue[ index ].finish.call( this );
+				}
+			}
+
+			// turn off finishing flag
+			delete data.finish;
+		});
+	}
+});
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+	var which,
+		attrs = { height: type },
+		i = 0;
+
+	// if we include width, step value is 1 to do all cssExpand values,
+	// if we don't include width, step value is 2 to skip over Left and Right
+	includeWidth = includeWidth? 1 : 0;
+	for( ; i < 4 ; i += 2 - includeWidth ) {
+		which = cssExpand[ i ];
+		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+	}
+
+	if ( includeWidth ) {
+		attrs.opacity = attrs.width = type;
+	}
+
+	return attrs;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+	slideDown: genFx("show"),
+	slideUp: genFx("hide"),
+	slideToggle: genFx("toggle"),
+	fadeIn: { opacity: "show" },
+	fadeOut: { opacity: "hide" },
+	fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return this.animate( props, speed, easing, callback );
+	};
+});
+
+jQuery.speed = function( speed, easing, fn ) {
+	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+		complete: fn || !fn && easing ||
+			jQuery.isFunction( speed ) && speed,
+		duration: speed,
+		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+	};
+
+	opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+		opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+	// normalize opt.queue - true/undefined/null -> "fx"
+	if ( opt.queue == null || opt.queue === true ) {
+		opt.queue = "fx";
+	}
+
+	// Queueing
+	opt.old = opt.complete;
+
+	opt.complete = function() {
+		if ( jQuery.isFunction( opt.old ) ) {
+			opt.old.call( this );
+		}
+
+		if ( opt.queue ) {
+			jQuery.dequeue( this, opt.queue );
+		}
+	};
+
+	return opt;
+};
+
+jQuery.easing = {
+	linear: function( p ) {
+		return p;
+	},
+	swing: function( p ) {
+		return 0.5 - Math.cos( p*Math.PI ) / 2;
+	}
+};
+
+jQuery.timers = [];
+jQuery.fx = Tween.prototype.init;
+jQuery.fx.tick = function() {
+	var timer,
+		timers = jQuery.timers,
+		i = 0;
+
+	fxNow = jQuery.now();
+
+	for ( ; i < timers.length; i++ ) {
+		timer = timers[ i ];
+		// Checks the timer has not already been removed
+		if ( !timer() && timers[ i ] === timer ) {
+			timers.splice( i--, 1 );
+		}
+	}
+
+	if ( !timers.length ) {
+		jQuery.fx.stop();
+	}
+	fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+	if ( timer() && jQuery.timers.push( timer ) ) {
+		jQuery.fx.start();
+	}
+};
+
+jQuery.fx.interval = 13;
+
+jQuery.fx.start = function() {
+	if ( !timerId ) {
+		timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
+	}
+};
+
+jQuery.fx.stop = function() {
+	clearInterval( timerId );
+	timerId = null;
+};
+
+jQuery.fx.speeds = {
+	slow: 600,
+	fast: 200,
+	// Default speed
+	_default: 400
+};
+
+// Back Compat <1.8 extension point
+jQuery.fx.step = {};
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+	jQuery.expr.filters.animated = function( elem ) {
+		return jQuery.grep(jQuery.timers, function( fn ) {
+			return elem === fn.elem;
+		}).length;
+	};
+}
+jQuery.fn.offset = function( options ) {
+	if ( arguments.length ) {
+		return options === undefined ?
+			this :
+			this.each(function( i ) {
+				jQuery.offset.setOffset( this, options, i );
+			});
+	}
+
+	var docElem, win,
+		box = { top: 0, left: 0 },
+		elem = this[ 0 ],
+		doc = elem && elem.ownerDocument;
+
+	if ( !doc ) {
+		return;
+	}
+
+	docElem = doc.documentElement;
+
+	// Make sure it's not a disconnected DOM node
+	if ( !jQuery.contains( docElem, elem ) ) {
+		return box;
+	}
+
+	// If we don't have gBCR, just use 0,0 rather than error
+	// BlackBerry 5, iOS 3 (original iPhone)
+	if ( typeof elem.getBoundingClientRect !== core_strundefined ) {
+		box = elem.getBoundingClientRect();
+	}
+	win = getWindow( doc );
+	return {
+		top: box.top  + ( win.pageYOffset || docElem.scrollTop )  - ( docElem.clientTop  || 0 ),
+		left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )
+	};
+};
+
+jQuery.offset = {
+
+	setOffset: function( elem, options, i ) {
+		var position = jQuery.css( elem, "position" );
+
+		// set position first, in-case top/left are set even on static elem
+		if ( position === "static" ) {
+			elem.style.position = "relative";
+		}
+
+		var curElem = jQuery( elem ),
+			curOffset = curElem.offset(),
+			curCSSTop = jQuery.css( elem, "top" ),
+			curCSSLeft = jQuery.css( elem, "left" ),
+			calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
+			props = {}, curPosition = {}, curTop, curLeft;
+
+		// need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+		if ( calculatePosition ) {
+			curPosition = curElem.position();
+			curTop = curPosition.top;
+			curLeft = curPosition.left;
+		} else {
+			curTop = parseFloat( curCSSTop ) || 0;
+			curLeft = parseFloat( curCSSLeft ) || 0;
+		}
+
+		if ( jQuery.isFunction( options ) ) {
+			options = options.call( elem, i, curOffset );
+		}
+
+		if ( options.top != null ) {
+			props.top = ( options.top - curOffset.top ) + curTop;
+		}
+		if ( options.left != null ) {
+			props.left = ( options.left - curOffset.left ) + curLeft;
+		}
+
+		if ( "using" in options ) {
+			options.using.call( elem, props );
+		} else {
+			curElem.css( props );
+		}
+	}
+};
+
+
+jQuery.fn.extend({
+
+	position: function() {
+		if ( !this[ 0 ] ) {
+			return;
+		}
+
+		var offsetParent, offset,
+			parentOffset = { top: 0, left: 0 },
+			elem = this[ 0 ];
+
+		// fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent
+		if ( jQuery.css( elem, "position" ) === "fixed" ) {
+			// we assume that getBoundingClientRect is available when computed position is fixed
+			offset = elem.getBoundingClientRect();
+		} else {
+			// Get *real* offsetParent
+			offsetParent = this.offsetParent();
+
+			// Get correct offsets
+			offset = this.offset();
+			if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+				parentOffset = offsetParent.offset();
+			}
+
+			// Add offsetParent borders
+			parentOffset.top  += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
+			parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
+		}
+
+		// Subtract parent offsets and element margins
+		// note: when an element has margin: auto the offsetLeft and marginLeft
+		// are the same in Safari causing offset.left to incorrectly be 0
+		return {
+			top:  offset.top  - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)
+		};
+	},
+
+	offsetParent: function() {
+		return this.map(function() {
+			var offsetParent = this.offsetParent || docElem;
+			while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) {
+				offsetParent = offsetParent.offsetParent;
+			}
+			return offsetParent || docElem;
+		});
+	}
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
+	var top = /Y/.test( prop );
+
+	jQuery.fn[ method ] = function( val ) {
+		return jQuery.access( this, function( elem, method, val ) {
+			var win = getWindow( elem );
+
+			if ( val === undefined ) {
+				return win ? (prop in win) ? win[ prop ] :
+					win.document.documentElement[ method ] :
+					elem[ method ];
+			}
+
+			if ( win ) {
+				win.scrollTo(
+					!top ? val : jQuery( win ).scrollLeft(),
+					top ? val : jQuery( win ).scrollTop()
+				);
+
+			} else {
+				elem[ method ] = val;
+			}
+		}, method, val, arguments.length, null );
+	};
+});
+
+function getWindow( elem ) {
+	return jQuery.isWindow( elem ) ?
+		elem :
+		elem.nodeType === 9 ?
+			elem.defaultView || elem.parentWindow :
+			false;
+}
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
+		// margin is only for outerHeight, outerWidth
+		jQuery.fn[ funcName ] = function( margin, value ) {
+			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+			return jQuery.access( this, function( elem, type, value ) {
+				var doc;
+
+				if ( jQuery.isWindow( elem ) ) {
+					// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
+					// isn't a whole lot we can do. See pull request at this URL for discussion:
+					// https://github.com/jquery/jquery/pull/764
+					return elem.document.documentElement[ "client" + name ];
+				}
+
+				// Get document width or height
+				if ( elem.nodeType === 9 ) {
+					doc = elem.documentElement;
+
+					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
+					// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
+					return Math.max(
+						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+						elem.body[ "offset" + name ], doc[ "offset" + name ],
+						doc[ "client" + name ]
+					);
+				}
+
+				return value === undefined ?
+					// Get width or height on the element, requesting but not forcing parseFloat
+					jQuery.css( elem, type, extra ) :
+
+					// Set width or height on the element
+					jQuery.style( elem, type, value, extra );
+			}, type, chainable ? margin : undefined, chainable, null );
+		};
+	});
+});
+// Limit scope pollution from any deprecated API
+// (function() {
+
+// The number of elements contained in the matched element set
+jQuery.fn.size = function() {
+	return this.length;
+};
+
+jQuery.fn.andSelf = jQuery.fn.addBack;
+
+// })();
+if ( typeof module === "object" && module && typeof module.exports === "object" ) {
+	// Expose jQuery as module.exports in loaders that implement the Node
+	// module pattern (including browserify). Do not create the global, since
+	// the user will be storing it themselves locally, and globals are frowned
+	// upon in the Node module world.
+	module.exports = jQuery;
+} else {
+	// Otherwise expose jQuery to the global object as usual
+	window.jQuery = window.$ = jQuery;
+
+	// Register as a named AMD module, since jQuery can be concatenated with other
+	// files that may use define, but not via a proper concatenation script that
+	// understands anonymous AMD modules. A named AMD is safest and most robust
+	// way to register. Lowercase jquery is used because AMD module names are
+	// derived from file names, and jQuery is normally delivered in a lowercase
+	// file name. Do this after creating the global so that if an AMD module wants
+	// to call noConflict to hide this version of jQuery, it will work.
+	if ( typeof define === "function" && define.amd ) {
+		define( "jquery", [], function () { return jQuery; } );
+	}
+}
+
+})( window );
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery-1.10.2.min.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery-1.10.2.min.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery-1.10.2.min.js	(revision 101)
@@ -0,0 +1,6 @@
+/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery-1.10.2.min.map
+*/
+(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
+}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
+u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery-2.1.1.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery-2.1.1.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery-2.1.1.js	(revision 101)
@@ -0,0 +1,9190 @@
+/*!
+ * jQuery JavaScript Library v2.1.1
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2014-05-01T17:11Z
+ */
+
+(function( global, factory ) {
+
+	if ( typeof module === "object" && typeof module.exports === "object" ) {
+		// For CommonJS and CommonJS-like environments where a proper window is present,
+		// execute the factory and get jQuery
+		// For environments that do not inherently posses a window with a document
+		// (such as Node.js), expose a jQuery-making factory as module.exports
+		// This accentuates the need for the creation of a real window
+		// e.g. var jQuery = require("jquery")(window);
+		// See ticket #14549 for more info
+		module.exports = global.document ?
+			factory( global, true ) :
+			function( w ) {
+				if ( !w.document ) {
+					throw new Error( "jQuery requires a window with a document" );
+				}
+				return factory( w );
+			};
+	} else {
+		factory( global );
+	}
+
+// Pass this if window is not defined yet
+}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Can't do this because several apps including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+// Support: Firefox 18+
+//
+
+var arr = [];
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var support = {};
+
+
+
+var
+	// Use the correct document accordingly with window argument (sandbox)
+	document = window.document,
+
+	version = "2.1.1",
+
+	// Define a local copy of jQuery
+	jQuery = function( selector, context ) {
+		// The jQuery object is actually just the init constructor 'enhanced'
+		// Need init if jQuery is called (just allow error to be thrown if not included)
+		return new jQuery.fn.init( selector, context );
+	},
+
+	// Support: Android<4.1
+	// Make sure we trim BOM and NBSP
+	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+	// Matches dashed string for camelizing
+	rmsPrefix = /^-ms-/,
+	rdashAlpha = /-([\da-z])/gi,
+
+	// Used by jQuery.camelCase as callback to replace()
+	fcamelCase = function( all, letter ) {
+		return letter.toUpperCase();
+	};
+
+jQuery.fn = jQuery.prototype = {
+	// The current version of jQuery being used
+	jquery: version,
+
+	constructor: jQuery,
+
+	// Start with an empty selector
+	selector: "",
+
+	// The default length of a jQuery object is 0
+	length: 0,
+
+	toArray: function() {
+		return slice.call( this );
+	},
+
+	// Get the Nth element in the matched element set OR
+	// Get the whole matched element set as a clean array
+	get: function( num ) {
+		return num != null ?
+
+			// Return just the one element from the set
+			( num < 0 ? this[ num + this.length ] : this[ num ] ) :
+
+			// Return all the elements in a clean array
+			slice.call( this );
+	},
+
+	// Take an array of elements and push it onto the stack
+	// (returning the new matched element set)
+	pushStack: function( elems ) {
+
+		// Build a new jQuery matched element set
+		var ret = jQuery.merge( this.constructor(), elems );
+
+		// Add the old object onto the stack (as a reference)
+		ret.prevObject = this;
+		ret.context = this.context;
+
+		// Return the newly-formed element set
+		return ret;
+	},
+
+	// Execute a callback for every element in the matched set.
+	// (You can seed the arguments with an array of args, but this is
+	// only used internally.)
+	each: function( callback, args ) {
+		return jQuery.each( this, callback, args );
+	},
+
+	map: function( callback ) {
+		return this.pushStack( jQuery.map(this, function( elem, i ) {
+			return callback.call( elem, i, elem );
+		}));
+	},
+
+	slice: function() {
+		return this.pushStack( slice.apply( this, arguments ) );
+	},
+
+	first: function() {
+		return this.eq( 0 );
+	},
+
+	last: function() {
+		return this.eq( -1 );
+	},
+
+	eq: function( i ) {
+		var len = this.length,
+			j = +i + ( i < 0 ? len : 0 );
+		return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
+	},
+
+	end: function() {
+		return this.prevObject || this.constructor(null);
+	},
+
+	// For internal use only.
+	// Behaves like an Array's method, not like a jQuery method.
+	push: push,
+	sort: arr.sort,
+	splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+	var options, name, src, copy, copyIsArray, clone,
+		target = arguments[0] || {},
+		i = 1,
+		length = arguments.length,
+		deep = false;
+
+	// Handle a deep copy situation
+	if ( typeof target === "boolean" ) {
+		deep = target;
+
+		// skip the boolean and the target
+		target = arguments[ i ] || {};
+		i++;
+	}
+
+	// Handle case when target is a string or something (possible in deep copy)
+	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+		target = {};
+	}
+
+	// extend jQuery itself if only one argument is passed
+	if ( i === length ) {
+		target = this;
+		i--;
+	}
+
+	for ( ; i < length; i++ ) {
+		// Only deal with non-null/undefined values
+		if ( (options = arguments[ i ]) != null ) {
+			// Extend the base object
+			for ( name in options ) {
+				src = target[ name ];
+				copy = options[ name ];
+
+				// Prevent never-ending loop
+				if ( target === copy ) {
+					continue;
+				}
+
+				// Recurse if we're merging plain objects or arrays
+				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+					if ( copyIsArray ) {
+						copyIsArray = false;
+						clone = src && jQuery.isArray(src) ? src : [];
+
+					} else {
+						clone = src && jQuery.isPlainObject(src) ? src : {};
+					}
+
+					// Never move original objects, clone them
+					target[ name ] = jQuery.extend( deep, clone, copy );
+
+				// Don't bring in undefined values
+				} else if ( copy !== undefined ) {
+					target[ name ] = copy;
+				}
+			}
+		}
+	}
+
+	// Return the modified object
+	return target;
+};
+
+jQuery.extend({
+	// Unique for each copy of jQuery on the page
+	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+	// Assume jQuery is ready without the ready module
+	isReady: true,
+
+	error: function( msg ) {
+		throw new Error( msg );
+	},
+
+	noop: function() {},
+
+	// See test/unit/core.js for details concerning isFunction.
+	// Since version 1.3, DOM methods and functions like alert
+	// aren't supported. They return false on IE (#2968).
+	isFunction: function( obj ) {
+		return jQuery.type(obj) === "function";
+	},
+
+	isArray: Array.isArray,
+
+	isWindow: function( obj ) {
+		return obj != null && obj === obj.window;
+	},
+
+	isNumeric: function( obj ) {
+		// parseFloat NaNs numeric-cast false positives (null|true|false|"")
+		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+		// subtraction forces infinities to NaN
+		return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0;
+	},
+
+	isPlainObject: function( obj ) {
+		// Not plain objects:
+		// - Any object or value whose internal [[Class]] property is not "[object Object]"
+		// - DOM nodes
+		// - window
+		if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+			return false;
+		}
+
+		if ( obj.constructor &&
+				!hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
+			return false;
+		}
+
+		// If the function hasn't returned already, we're confident that
+		// |obj| is a plain object, created by {} or constructed with new Object
+		return true;
+	},
+
+	isEmptyObject: function( obj ) {
+		var name;
+		for ( name in obj ) {
+			return false;
+		}
+		return true;
+	},
+
+	type: function( obj ) {
+		if ( obj == null ) {
+			return obj + "";
+		}
+		// Support: Android < 4.0, iOS < 6 (functionish RegExp)
+		return typeof obj === "object" || typeof obj === "function" ?
+			class2type[ toString.call(obj) ] || "object" :
+			typeof obj;
+	},
+
+	// Evaluates a script in a global context
+	globalEval: function( code ) {
+		var script,
+			indirect = eval;
+
+		code = jQuery.trim( code );
+
+		if ( code ) {
+			// If the code includes a valid, prologue position
+			// strict mode pragma, execute code by injecting a
+			// script tag into the document.
+			if ( code.indexOf("use strict") === 1 ) {
+				script = document.createElement("script");
+				script.text = code;
+				document.head.appendChild( script ).parentNode.removeChild( script );
+			} else {
+			// Otherwise, avoid the DOM node creation, insertion
+			// and removal by using an indirect global eval
+				indirect( code );
+			}
+		}
+	},
+
+	// Convert dashed to camelCase; used by the css and data modules
+	// Microsoft forgot to hump their vendor prefix (#9572)
+	camelCase: function( string ) {
+		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+	},
+
+	nodeName: function( elem, name ) {
+		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+	},
+
+	// args is for internal usage only
+	each: function( obj, callback, args ) {
+		var value,
+			i = 0,
+			length = obj.length,
+			isArray = isArraylike( obj );
+
+		if ( args ) {
+			if ( isArray ) {
+				for ( ; i < length; i++ ) {
+					value = callback.apply( obj[ i ], args );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			} else {
+				for ( i in obj ) {
+					value = callback.apply( obj[ i ], args );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			}
+
+		// A special, fast, case for the most common use of each
+		} else {
+			if ( isArray ) {
+				for ( ; i < length; i++ ) {
+					value = callback.call( obj[ i ], i, obj[ i ] );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			} else {
+				for ( i in obj ) {
+					value = callback.call( obj[ i ], i, obj[ i ] );
+
+					if ( value === false ) {
+						break;
+					}
+				}
+			}
+		}
+
+		return obj;
+	},
+
+	// Support: Android<4.1
+	trim: function( text ) {
+		return text == null ?
+			"" :
+			( text + "" ).replace( rtrim, "" );
+	},
+
+	// results is for internal usage only
+	makeArray: function( arr, results ) {
+		var ret = results || [];
+
+		if ( arr != null ) {
+			if ( isArraylike( Object(arr) ) ) {
+				jQuery.merge( ret,
+					typeof arr === "string" ?
+					[ arr ] : arr
+				);
+			} else {
+				push.call( ret, arr );
+			}
+		}
+
+		return ret;
+	},
+
+	inArray: function( elem, arr, i ) {
+		return arr == null ? -1 : indexOf.call( arr, elem, i );
+	},
+
+	merge: function( first, second ) {
+		var len = +second.length,
+			j = 0,
+			i = first.length;
+
+		for ( ; j < len; j++ ) {
+			first[ i++ ] = second[ j ];
+		}
+
+		first.length = i;
+
+		return first;
+	},
+
+	grep: function( elems, callback, invert ) {
+		var callbackInverse,
+			matches = [],
+			i = 0,
+			length = elems.length,
+			callbackExpect = !invert;
+
+		// Go through the array, only saving the items
+		// that pass the validator function
+		for ( ; i < length; i++ ) {
+			callbackInverse = !callback( elems[ i ], i );
+			if ( callbackInverse !== callbackExpect ) {
+				matches.push( elems[ i ] );
+			}
+		}
+
+		return matches;
+	},
+
+	// arg is for internal usage only
+	map: function( elems, callback, arg ) {
+		var value,
+			i = 0,
+			length = elems.length,
+			isArray = isArraylike( elems ),
+			ret = [];
+
+		// Go through the array, translating each of the items to their new values
+		if ( isArray ) {
+			for ( ; i < length; i++ ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+
+		// Go through every key on the object,
+		} else {
+			for ( i in elems ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+		}
+
+		// Flatten any nested arrays
+		return concat.apply( [], ret );
+	},
+
+	// A global GUID counter for objects
+	guid: 1,
+
+	// Bind a function to a context, optionally partially applying any
+	// arguments.
+	proxy: function( fn, context ) {
+		var tmp, args, proxy;
+
+		if ( typeof context === "string" ) {
+			tmp = fn[ context ];
+			context = fn;
+			fn = tmp;
+		}
+
+		// Quick check to determine if target is callable, in the spec
+		// this throws a TypeError, but we will just return undefined.
+		if ( !jQuery.isFunction( fn ) ) {
+			return undefined;
+		}
+
+		// Simulated bind
+		args = slice.call( arguments, 2 );
+		proxy = function() {
+			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+		};
+
+		// Set the guid of unique handler to the same of original handler, so it can be removed
+		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+		return proxy;
+	},
+
+	now: Date.now,
+
+	// jQuery.support is not used in Core but other projects attach their
+	// properties to it so it needs to exist.
+	support: support
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+	class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+function isArraylike( obj ) {
+	var length = obj.length,
+		type = jQuery.type( obj );
+
+	if ( type === "function" || jQuery.isWindow( obj ) ) {
+		return false;
+	}
+
+	if ( obj.nodeType === 1 && length ) {
+		return true;
+	}
+
+	return type === "array" || length === 0 ||
+		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v1.10.19
+ * http://sizzlejs.com/
+ *
+ * Copyright 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2014-04-18
+ */
+(function( window ) {
+
+var i,
+	support,
+	Expr,
+	getText,
+	isXML,
+	tokenize,
+	compile,
+	select,
+	outermostContext,
+	sortInput,
+	hasDuplicate,
+
+	// Local document vars
+	setDocument,
+	document,
+	docElem,
+	documentIsHTML,
+	rbuggyQSA,
+	rbuggyMatches,
+	matches,
+	contains,
+
+	// Instance-specific data
+	expando = "sizzle" + -(new Date()),
+	preferredDoc = window.document,
+	dirruns = 0,
+	done = 0,
+	classCache = createCache(),
+	tokenCache = createCache(),
+	compilerCache = createCache(),
+	sortOrder = function( a, b ) {
+		if ( a === b ) {
+			hasDuplicate = true;
+		}
+		return 0;
+	},
+
+	// General-purpose constants
+	strundefined = typeof undefined,
+	MAX_NEGATIVE = 1 << 31,
+
+	// Instance methods
+	hasOwn = ({}).hasOwnProperty,
+	arr = [],
+	pop = arr.pop,
+	push_native = arr.push,
+	push = arr.push,
+	slice = arr.slice,
+	// Use a stripped-down indexOf if we can't use a native one
+	indexOf = arr.indexOf || function( elem ) {
+		var i = 0,
+			len = this.length;
+		for ( ; i < len; i++ ) {
+			if ( this[i] === elem ) {
+				return i;
+			}
+		}
+		return -1;
+	},
+
+	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+	// Regular expressions
+
+	// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+	whitespace = "[\\x20\\t\\r\\n\\f]",
+	// http://www.w3.org/TR/css3-syntax/#characters
+	characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+	// Loosely modeled on CSS identifier characters
+	// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+	// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+	identifier = characterEncoding.replace( "w", "w#" ),
+
+	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+	attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
+		// Operator (capture 2)
+		"*([*^$|!~]?=)" + whitespace +
+		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+		"*\\]",
+
+	pseudos = ":(" + characterEncoding + ")(?:\\((" +
+		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+		// 1. quoted (capture 3; capture 4 or capture 5)
+		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+		// 2. simple (capture 6)
+		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+		// 3. anything else (capture 2)
+		".*" +
+		")\\)|)",
+
+	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+	rpseudo = new RegExp( pseudos ),
+	ridentifier = new RegExp( "^" + identifier + "$" ),
+
+	matchExpr = {
+		"ID": new RegExp( "^#(" + characterEncoding + ")" ),
+		"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+		"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+		"ATTR": new RegExp( "^" + attributes ),
+		"PSEUDO": new RegExp( "^" + pseudos ),
+		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+		// For use in libraries implementing .is()
+		// We use this for POS matching in `select`
+		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+	},
+
+	rinputs = /^(?:input|select|textarea|button)$/i,
+	rheader = /^h\d$/i,
+
+	rnative = /^[^{]+\{\s*\[native \w/,
+
+	// Easily-parseable/retrievable ID or TAG or CLASS selectors
+	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+	rsibling = /[+~]/,
+	rescape = /'|\\/g,
+
+	// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+	funescape = function( _, escaped, escapedWhitespace ) {
+		var high = "0x" + escaped - 0x10000;
+		// NaN means non-codepoint
+		// Support: Firefox<24
+		// Workaround erroneous numeric interpretation of +"0x"
+		return high !== high || escapedWhitespace ?
+			escaped :
+			high < 0 ?
+				// BMP codepoint
+				String.fromCharCode( high + 0x10000 ) :
+				// Supplemental Plane codepoint (surrogate pair)
+				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+	};
+
+// Optimize for push.apply( _, NodeList )
+try {
+	push.apply(
+		(arr = slice.call( preferredDoc.childNodes )),
+		preferredDoc.childNodes
+	);
+	// Support: Android<4.0
+	// Detect silently failing push.apply
+	arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+	push = { apply: arr.length ?
+
+		// Leverage slice if possible
+		function( target, els ) {
+			push_native.apply( target, slice.call(els) );
+		} :
+
+		// Support: IE<9
+		// Otherwise append directly
+		function( target, els ) {
+			var j = target.length,
+				i = 0;
+			// Can't trust NodeList.length
+			while ( (target[j++] = els[i++]) ) {}
+			target.length = j - 1;
+		}
+	};
+}
+
+function Sizzle( selector, context, results, seed ) {
+	var match, elem, m, nodeType,
+		// QSA vars
+		i, groups, old, nid, newContext, newSelector;
+
+	if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+		setDocument( context );
+	}
+
+	context = context || document;
+	results = results || [];
+
+	if ( !selector || typeof selector !== "string" ) {
+		return results;
+	}
+
+	if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
+		return [];
+	}
+
+	if ( documentIsHTML && !seed ) {
+
+		// Shortcuts
+		if ( (match = rquickExpr.exec( selector )) ) {
+			// Speed-up: Sizzle("#ID")
+			if ( (m = match[1]) ) {
+				if ( nodeType === 9 ) {
+					elem = context.getElementById( m );
+					// Check parentNode to catch when Blackberry 4.6 returns
+					// nodes that are no longer in the document (jQuery #6963)
+					if ( elem && elem.parentNode ) {
+						// Handle the case where IE, Opera, and Webkit return items
+						// by name instead of ID
+						if ( elem.id === m ) {
+							results.push( elem );
+							return results;
+						}
+					} else {
+						return results;
+					}
+				} else {
+					// Context is not a document
+					if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+						contains( context, elem ) && elem.id === m ) {
+						results.push( elem );
+						return results;
+					}
+				}
+
+			// Speed-up: Sizzle("TAG")
+			} else if ( match[2] ) {
+				push.apply( results, context.getElementsByTagName( selector ) );
+				return results;
+
+			// Speed-up: Sizzle(".CLASS")
+			} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
+				push.apply( results, context.getElementsByClassName( m ) );
+				return results;
+			}
+		}
+
+		// QSA path
+		if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+			nid = old = expando;
+			newContext = context;
+			newSelector = nodeType === 9 && selector;
+
+			// qSA works strangely on Element-rooted queries
+			// We can work around this by specifying an extra ID on the root
+			// and working up from there (Thanks to Andrew Dupont for the technique)
+			// IE 8 doesn't work on object elements
+			if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+				groups = tokenize( selector );
+
+				if ( (old = context.getAttribute("id")) ) {
+					nid = old.replace( rescape, "\\$&" );
+				} else {
+					context.setAttribute( "id", nid );
+				}
+				nid = "[id='" + nid + "'] ";
+
+				i = groups.length;
+				while ( i-- ) {
+					groups[i] = nid + toSelector( groups[i] );
+				}
+				newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
+				newSelector = groups.join(",");
+			}
+
+			if ( newSelector ) {
+				try {
+					push.apply( results,
+						newContext.querySelectorAll( newSelector )
+					);
+					return results;
+				} catch(qsaError) {
+				} finally {
+					if ( !old ) {
+						context.removeAttribute("id");
+					}
+				}
+			}
+		}
+	}
+
+	// All others
+	return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *	deleting the oldest entry
+ */
+function createCache() {
+	var keys = [];
+
+	function cache( key, value ) {
+		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+		if ( keys.push( key + " " ) > Expr.cacheLength ) {
+			// Only keep the most recent entries
+			delete cache[ keys.shift() ];
+		}
+		return (cache[ key + " " ] = value);
+	}
+	return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+	fn[ expando ] = true;
+	return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+	var div = document.createElement("div");
+
+	try {
+		return !!fn( div );
+	} catch (e) {
+		return false;
+	} finally {
+		// Remove from its parent by default
+		if ( div.parentNode ) {
+			div.parentNode.removeChild( div );
+		}
+		// release memory in IE
+		div = null;
+	}
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+	var arr = attrs.split("|"),
+		i = attrs.length;
+
+	while ( i-- ) {
+		Expr.attrHandle[ arr[i] ] = handler;
+	}
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+	var cur = b && a,
+		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+			( ~b.sourceIndex || MAX_NEGATIVE ) -
+			( ~a.sourceIndex || MAX_NEGATIVE );
+
+	// Use IE sourceIndex if available on both nodes
+	if ( diff ) {
+		return diff;
+	}
+
+	// Check if b follows a
+	if ( cur ) {
+		while ( (cur = cur.nextSibling) ) {
+			if ( cur === b ) {
+				return -1;
+			}
+		}
+	}
+
+	return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return name === "input" && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return (name === "input" || name === "button") && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+	return markFunction(function( argument ) {
+		argument = +argument;
+		return markFunction(function( seed, matches ) {
+			var j,
+				matchIndexes = fn( [], seed.length, argument ),
+				i = matchIndexes.length;
+
+			// Match elements found at the specified indexes
+			while ( i-- ) {
+				if ( seed[ (j = matchIndexes[i]) ] ) {
+					seed[j] = !(matches[j] = seed[j]);
+				}
+			}
+		});
+	});
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+	return context && typeof context.getElementsByTagName !== strundefined && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+	// documentElement is verified for cases where it doesn't yet exist
+	// (such as loading iframes in IE - #4833)
+	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+	return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+	var hasCompare,
+		doc = node ? node.ownerDocument || node : preferredDoc,
+		parent = doc.defaultView;
+
+	// If no document and documentElement is available, return
+	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+		return document;
+	}
+
+	// Set our document
+	document = doc;
+	docElem = doc.documentElement;
+
+	// Support tests
+	documentIsHTML = !isXML( doc );
+
+	// Support: IE>8
+	// If iframe document is assigned to "document" variable and if iframe has been reloaded,
+	// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
+	// IE6-8 do not support the defaultView property so parent will be undefined
+	if ( parent && parent !== parent.top ) {
+		// IE11 does not have attachEvent, so all must suffer
+		if ( parent.addEventListener ) {
+			parent.addEventListener( "unload", function() {
+				setDocument();
+			}, false );
+		} else if ( parent.attachEvent ) {
+			parent.attachEvent( "onunload", function() {
+				setDocument();
+			});
+		}
+	}
+
+	/* Attributes
+	---------------------------------------------------------------------- */
+
+	// Support: IE<8
+	// Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
+	support.attributes = assert(function( div ) {
+		div.className = "i";
+		return !div.getAttribute("className");
+	});
+
+	/* getElement(s)By*
+	---------------------------------------------------------------------- */
+
+	// Check if getElementsByTagName("*") returns only elements
+	support.getElementsByTagName = assert(function( div ) {
+		div.appendChild( doc.createComment("") );
+		return !div.getElementsByTagName("*").length;
+	});
+
+	// Check if getElementsByClassName can be trusted
+	support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) {
+		div.innerHTML = "<div class='a'></div><div class='a i'></div>";
+
+		// Support: Safari<4
+		// Catch class over-caching
+		div.firstChild.className = "i";
+		// Support: Opera<10
+		// Catch gEBCN failure to find non-leading classes
+		return div.getElementsByClassName("i").length === 2;
+	});
+
+	// Support: IE<10
+	// Check if getElementById returns elements by name
+	// The broken getElementById methods don't pick up programatically-set names,
+	// so use a roundabout getElementsByName test
+	support.getById = assert(function( div ) {
+		docElem.appendChild( div ).id = expando;
+		return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
+	});
+
+	// ID find and filter
+	if ( support.getById ) {
+		Expr.find["ID"] = function( id, context ) {
+			if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
+				var m = context.getElementById( id );
+				// Check parentNode to catch when Blackberry 4.6 returns
+				// nodes that are no longer in the document #6963
+				return m && m.parentNode ? [ m ] : [];
+			}
+		};
+		Expr.filter["ID"] = function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				return elem.getAttribute("id") === attrId;
+			};
+		};
+	} else {
+		// Support: IE6/7
+		// getElementById is not reliable as a find shortcut
+		delete Expr.find["ID"];
+
+		Expr.filter["ID"] =  function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
+				return node && node.value === attrId;
+			};
+		};
+	}
+
+	// Tag
+	Expr.find["TAG"] = support.getElementsByTagName ?
+		function( tag, context ) {
+			if ( typeof context.getElementsByTagName !== strundefined ) {
+				return context.getElementsByTagName( tag );
+			}
+		} :
+		function( tag, context ) {
+			var elem,
+				tmp = [],
+				i = 0,
+				results = context.getElementsByTagName( tag );
+
+			// Filter out possible comments
+			if ( tag === "*" ) {
+				while ( (elem = results[i++]) ) {
+					if ( elem.nodeType === 1 ) {
+						tmp.push( elem );
+					}
+				}
+
+				return tmp;
+			}
+			return results;
+		};
+
+	// Class
+	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+		if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
+			return context.getElementsByClassName( className );
+		}
+	};
+
+	/* QSA/matchesSelector
+	---------------------------------------------------------------------- */
+
+	// QSA and matchesSelector support
+
+	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+	rbuggyMatches = [];
+
+	// qSa(:focus) reports false when true (Chrome 21)
+	// We allow this because of a bug in IE8/9 that throws an error
+	// whenever `document.activeElement` is accessed on an iframe
+	// So, we allow :focus to pass through QSA all the time to avoid the IE error
+	// See http://bugs.jquery.com/ticket/13378
+	rbuggyQSA = [];
+
+	if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
+		// Build QSA regex
+		// Regex strategy adopted from Diego Perini
+		assert(function( div ) {
+			// Select is set to empty string on purpose
+			// This is to test IE's treatment of not explicitly
+			// setting a boolean content attribute,
+			// since its presence should be enough
+			// http://bugs.jquery.com/ticket/12359
+			div.innerHTML = "<select msallowclip=''><option selected=''></option></select>";
+
+			// Support: IE8, Opera 11-12.16
+			// Nothing should be selected when empty strings follow ^= or $= or *=
+			// The test attribute must be unknown in Opera but "safe" for WinRT
+			// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+			if ( div.querySelectorAll("[msallowclip^='']").length ) {
+				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+			}
+
+			// Support: IE8
+			// Boolean attributes and "value" are not treated correctly
+			if ( !div.querySelectorAll("[selected]").length ) {
+				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+			}
+
+			// Webkit/Opera - :checked should return selected option elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			// IE8 throws error here and will not see later tests
+			if ( !div.querySelectorAll(":checked").length ) {
+				rbuggyQSA.push(":checked");
+			}
+		});
+
+		assert(function( div ) {
+			// Support: Windows 8 Native Apps
+			// The type and name attributes are restricted during .innerHTML assignment
+			var input = doc.createElement("input");
+			input.setAttribute( "type", "hidden" );
+			div.appendChild( input ).setAttribute( "name", "D" );
+
+			// Support: IE8
+			// Enforce case-sensitivity of name attribute
+			if ( div.querySelectorAll("[name=d]").length ) {
+				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+			}
+
+			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+			// IE8 throws error here and will not see later tests
+			if ( !div.querySelectorAll(":enabled").length ) {
+				rbuggyQSA.push( ":enabled", ":disabled" );
+			}
+
+			// Opera 10-11 does not throw on post-comma invalid pseudos
+			div.querySelectorAll("*,:x");
+			rbuggyQSA.push(",.*:");
+		});
+	}
+
+	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+		docElem.webkitMatchesSelector ||
+		docElem.mozMatchesSelector ||
+		docElem.oMatchesSelector ||
+		docElem.msMatchesSelector) )) ) {
+
+		assert(function( div ) {
+			// Check to see if it's possible to do matchesSelector
+			// on a disconnected node (IE 9)
+			support.disconnectedMatch = matches.call( div, "div" );
+
+			// This should fail with an exception
+			// Gecko does not error, returns false instead
+			matches.call( div, "[s!='']:x" );
+			rbuggyMatches.push( "!=", pseudos );
+		});
+	}
+
+	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+	/* Contains
+	---------------------------------------------------------------------- */
+	hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+	// Element contains another
+	// Purposefully does not implement inclusive descendent
+	// As in, an element does not contain itself
+	contains = hasCompare || rnative.test( docElem.contains ) ?
+		function( a, b ) {
+			var adown = a.nodeType === 9 ? a.documentElement : a,
+				bup = b && b.parentNode;
+			return a === bup || !!( bup && bup.nodeType === 1 && (
+				adown.contains ?
+					adown.contains( bup ) :
+					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+			));
+		} :
+		function( a, b ) {
+			if ( b ) {
+				while ( (b = b.parentNode) ) {
+					if ( b === a ) {
+						return true;
+					}
+				}
+			}
+			return false;
+		};
+
+	/* Sorting
+	---------------------------------------------------------------------- */
+
+	// Document order sorting
+	sortOrder = hasCompare ?
+	function( a, b ) {
+
+		// Flag for duplicate removal
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		// Sort on method existence if only one input has compareDocumentPosition
+		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+		if ( compare ) {
+			return compare;
+		}
+
+		// Calculate position if both inputs belong to the same document
+		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+			a.compareDocumentPosition( b ) :
+
+			// Otherwise we know they are disconnected
+			1;
+
+		// Disconnected nodes
+		if ( compare & 1 ||
+			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+			// Choose the first element that is related to our preferred document
+			if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+				return -1;
+			}
+			if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+				return 1;
+			}
+
+			// Maintain original order
+			return sortInput ?
+				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+				0;
+		}
+
+		return compare & 4 ? -1 : 1;
+	} :
+	function( a, b ) {
+		// Exit early if the nodes are identical
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		var cur,
+			i = 0,
+			aup = a.parentNode,
+			bup = b.parentNode,
+			ap = [ a ],
+			bp = [ b ];
+
+		// Parentless nodes are either documents or disconnected
+		if ( !aup || !bup ) {
+			return a === doc ? -1 :
+				b === doc ? 1 :
+				aup ? -1 :
+				bup ? 1 :
+				sortInput ?
+				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+				0;
+
+		// If the nodes are siblings, we can do a quick check
+		} else if ( aup === bup ) {
+			return siblingCheck( a, b );
+		}
+
+		// Otherwise we need full lists of their ancestors for comparison
+		cur = a;
+		while ( (cur = cur.parentNode) ) {
+			ap.unshift( cur );
+		}
+		cur = b;
+		while ( (cur = cur.parentNode) ) {
+			bp.unshift( cur );
+		}
+
+		// Walk down the tree looking for a discrepancy
+		while ( ap[i] === bp[i] ) {
+			i++;
+		}
+
+		return i ?
+			// Do a sibling check if the nodes have a common ancestor
+			siblingCheck( ap[i], bp[i] ) :
+
+			// Otherwise nodes in our document sort first
+			ap[i] === preferredDoc ? -1 :
+			bp[i] === preferredDoc ? 1 :
+			0;
+	};
+
+	return doc;
+};
+
+Sizzle.matches = function( expr, elements ) {
+	return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	// Make sure that attribute selectors are quoted
+	expr = expr.replace( rattributeQuotes, "='$1']" );
+
+	if ( support.matchesSelector && documentIsHTML &&
+		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
+
+		try {
+			var ret = matches.call( elem, expr );
+
+			// IE 9's matchesSelector returns false on disconnected nodes
+			if ( ret || support.disconnectedMatch ||
+					// As well, disconnected nodes are said to be in a document
+					// fragment in IE 9
+					elem.document && elem.document.nodeType !== 11 ) {
+				return ret;
+			}
+		} catch(e) {}
+	}
+
+	return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+	// Set document vars if needed
+	if ( ( context.ownerDocument || context ) !== document ) {
+		setDocument( context );
+	}
+	return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	var fn = Expr.attrHandle[ name.toLowerCase() ],
+		// Don't get fooled by Object.prototype properties (jQuery #13807)
+		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+			fn( elem, name, !documentIsHTML ) :
+			undefined;
+
+	return val !== undefined ?
+		val :
+		support.attributes || !documentIsHTML ?
+			elem.getAttribute( name ) :
+			(val = elem.getAttributeNode(name)) && val.specified ?
+				val.value :
+				null;
+};
+
+Sizzle.error = function( msg ) {
+	throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+	var elem,
+		duplicates = [],
+		j = 0,
+		i = 0;
+
+	// Unless we *know* we can detect duplicates, assume their presence
+	hasDuplicate = !support.detectDuplicates;
+	sortInput = !support.sortStable && results.slice( 0 );
+	results.sort( sortOrder );
+
+	if ( hasDuplicate ) {
+		while ( (elem = results[i++]) ) {
+			if ( elem === results[ i ] ) {
+				j = duplicates.push( i );
+			}
+		}
+		while ( j-- ) {
+			results.splice( duplicates[ j ], 1 );
+		}
+	}
+
+	// Clear input after sorting to release objects
+	// See https://github.com/jquery/sizzle/pull/225
+	sortInput = null;
+
+	return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+	var node,
+		ret = "",
+		i = 0,
+		nodeType = elem.nodeType;
+
+	if ( !nodeType ) {
+		// If no nodeType, this is expected to be an array
+		while ( (node = elem[i++]) ) {
+			// Do not traverse comment nodes
+			ret += getText( node );
+		}
+	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+		// Use textContent for elements
+		// innerText usage removed for consistency of new lines (jQuery #11153)
+		if ( typeof elem.textContent === "string" ) {
+			return elem.textContent;
+		} else {
+			// Traverse its children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				ret += getText( elem );
+			}
+		}
+	} else if ( nodeType === 3 || nodeType === 4 ) {
+		return elem.nodeValue;
+	}
+	// Do not include comment or processing instruction nodes
+
+	return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+	// Can be adjusted by the user
+	cacheLength: 50,
+
+	createPseudo: markFunction,
+
+	match: matchExpr,
+
+	attrHandle: {},
+
+	find: {},
+
+	relative: {
+		">": { dir: "parentNode", first: true },
+		" ": { dir: "parentNode" },
+		"+": { dir: "previousSibling", first: true },
+		"~": { dir: "previousSibling" }
+	},
+
+	preFilter: {
+		"ATTR": function( match ) {
+			match[1] = match[1].replace( runescape, funescape );
+
+			// Move the given value to match[3] whether quoted or unquoted
+			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+			if ( match[2] === "~=" ) {
+				match[3] = " " + match[3] + " ";
+			}
+
+			return match.slice( 0, 4 );
+		},
+
+		"CHILD": function( match ) {
+			/* matches from matchExpr["CHILD"]
+				1 type (only|nth|...)
+				2 what (child|of-type)
+				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+				4 xn-component of xn+y argument ([+-]?\d*n|)
+				5 sign of xn-component
+				6 x of xn-component
+				7 sign of y-component
+				8 y of y-component
+			*/
+			match[1] = match[1].toLowerCase();
+
+			if ( match[1].slice( 0, 3 ) === "nth" ) {
+				// nth-* requires argument
+				if ( !match[3] ) {
+					Sizzle.error( match[0] );
+				}
+
+				// numeric x and y parameters for Expr.filter.CHILD
+				// remember that false/true cast respectively to 0/1
+				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+			// other types prohibit arguments
+			} else if ( match[3] ) {
+				Sizzle.error( match[0] );
+			}
+
+			return match;
+		},
+
+		"PSEUDO": function( match ) {
+			var excess,
+				unquoted = !match[6] && match[2];
+
+			if ( matchExpr["CHILD"].test( match[0] ) ) {
+				return null;
+			}
+
+			// Accept quoted arguments as-is
+			if ( match[3] ) {
+				match[2] = match[4] || match[5] || "";
+
+			// Strip excess characters from unquoted arguments
+			} else if ( unquoted && rpseudo.test( unquoted ) &&
+				// Get excess from tokenize (recursively)
+				(excess = tokenize( unquoted, true )) &&
+				// advance to the next closing parenthesis
+				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+				// excess is a negative index
+				match[0] = match[0].slice( 0, excess );
+				match[2] = unquoted.slice( 0, excess );
+			}
+
+			// Return only captures needed by the pseudo filter method (type and argument)
+			return match.slice( 0, 3 );
+		}
+	},
+
+	filter: {
+
+		"TAG": function( nodeNameSelector ) {
+			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+			return nodeNameSelector === "*" ?
+				function() { return true; } :
+				function( elem ) {
+					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+				};
+		},
+
+		"CLASS": function( className ) {
+			var pattern = classCache[ className + " " ];
+
+			return pattern ||
+				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+				classCache( className, function( elem ) {
+					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
+				});
+		},
+
+		"ATTR": function( name, operator, check ) {
+			return function( elem ) {
+				var result = Sizzle.attr( elem, name );
+
+				if ( result == null ) {
+					return operator === "!=";
+				}
+				if ( !operator ) {
+					return true;
+				}
+
+				result += "";
+
+				return operator === "=" ? result === check :
+					operator === "!=" ? result !== check :
+					operator === "^=" ? check && result.indexOf( check ) === 0 :
+					operator === "*=" ? check && result.indexOf( check ) > -1 :
+					operator === "$=" ? check && result.slice( -check.length ) === check :
+					operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
+					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+					false;
+			};
+		},
+
+		"CHILD": function( type, what, argument, first, last ) {
+			var simple = type.slice( 0, 3 ) !== "nth",
+				forward = type.slice( -4 ) !== "last",
+				ofType = what === "of-type";
+
+			return first === 1 && last === 0 ?
+
+				// Shortcut for :nth-*(n)
+				function( elem ) {
+					return !!elem.parentNode;
+				} :
+
+				function( elem, context, xml ) {
+					var cache, outerCache, node, diff, nodeIndex, start,
+						dir = simple !== forward ? "nextSibling" : "previousSibling",
+						parent = elem.parentNode,
+						name = ofType && elem.nodeName.toLowerCase(),
+						useCache = !xml && !ofType;
+
+					if ( parent ) {
+
+						// :(first|last|only)-(child|of-type)
+						if ( simple ) {
+							while ( dir ) {
+								node = elem;
+								while ( (node = node[ dir ]) ) {
+									if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
+										return false;
+									}
+								}
+								// Reverse direction for :only-* (if we haven't yet done so)
+								start = dir = type === "only" && !start && "nextSibling";
+							}
+							return true;
+						}
+
+						start = [ forward ? parent.firstChild : parent.lastChild ];
+
+						// non-xml :nth-child(...) stores cache data on `parent`
+						if ( forward && useCache ) {
+							// Seek `elem` from a previously-cached index
+							outerCache = parent[ expando ] || (parent[ expando ] = {});
+							cache = outerCache[ type ] || [];
+							nodeIndex = cache[0] === dirruns && cache[1];
+							diff = cache[0] === dirruns && cache[2];
+							node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+							while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+								// Fallback to seeking `elem` from the start
+								(diff = nodeIndex = 0) || start.pop()) ) {
+
+								// When found, cache indexes on `parent` and break
+								if ( node.nodeType === 1 && ++diff && node === elem ) {
+									outerCache[ type ] = [ dirruns, nodeIndex, diff ];
+									break;
+								}
+							}
+
+						// Use previously-cached element index if available
+						} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
+							diff = cache[1];
+
+						// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
+						} else {
+							// Use the same loop as above to seek `elem` from the start
+							while ( (node = ++nodeIndex && node && node[ dir ] ||
+								(diff = nodeIndex = 0) || start.pop()) ) {
+
+								if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
+									// Cache the index of each encountered element
+									if ( useCache ) {
+										(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
+									}
+
+									if ( node === elem ) {
+										break;
+									}
+								}
+							}
+						}
+
+						// Incorporate the offset, then check against cycle size
+						diff -= last;
+						return diff === first || ( diff % first === 0 && diff / first >= 0 );
+					}
+				};
+		},
+
+		"PSEUDO": function( pseudo, argument ) {
+			// pseudo-class names are case-insensitive
+			// http://www.w3.org/TR/selectors/#pseudo-classes
+			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+			// Remember that setFilters inherits from pseudos
+			var args,
+				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+					Sizzle.error( "unsupported pseudo: " + pseudo );
+
+			// The user may use createPseudo to indicate that
+			// arguments are needed to create the filter function
+			// just as Sizzle does
+			if ( fn[ expando ] ) {
+				return fn( argument );
+			}
+
+			// But maintain support for old signatures
+			if ( fn.length > 1 ) {
+				args = [ pseudo, pseudo, "", argument ];
+				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+					markFunction(function( seed, matches ) {
+						var idx,
+							matched = fn( seed, argument ),
+							i = matched.length;
+						while ( i-- ) {
+							idx = indexOf.call( seed, matched[i] );
+							seed[ idx ] = !( matches[ idx ] = matched[i] );
+						}
+					}) :
+					function( elem ) {
+						return fn( elem, 0, args );
+					};
+			}
+
+			return fn;
+		}
+	},
+
+	pseudos: {
+		// Potentially complex pseudos
+		"not": markFunction(function( selector ) {
+			// Trim the selector passed to compile
+			// to avoid treating leading and trailing
+			// spaces as combinators
+			var input = [],
+				results = [],
+				matcher = compile( selector.replace( rtrim, "$1" ) );
+
+			return matcher[ expando ] ?
+				markFunction(function( seed, matches, context, xml ) {
+					var elem,
+						unmatched = matcher( seed, null, xml, [] ),
+						i = seed.length;
+
+					// Match elements unmatched by `matcher`
+					while ( i-- ) {
+						if ( (elem = unmatched[i]) ) {
+							seed[i] = !(matches[i] = elem);
+						}
+					}
+				}) :
+				function( elem, context, xml ) {
+					input[0] = elem;
+					matcher( input, null, xml, results );
+					return !results.pop();
+				};
+		}),
+
+		"has": markFunction(function( selector ) {
+			return function( elem ) {
+				return Sizzle( selector, elem ).length > 0;
+			};
+		}),
+
+		"contains": markFunction(function( text ) {
+			return function( elem ) {
+				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+			};
+		}),
+
+		// "Whether an element is represented by a :lang() selector
+		// is based solely on the element's language value
+		// being equal to the identifier C,
+		// or beginning with the identifier C immediately followed by "-".
+		// The matching of C against the element's language value is performed case-insensitively.
+		// The identifier C does not have to be a valid language name."
+		// http://www.w3.org/TR/selectors/#lang-pseudo
+		"lang": markFunction( function( lang ) {
+			// lang value must be a valid identifier
+			if ( !ridentifier.test(lang || "") ) {
+				Sizzle.error( "unsupported lang: " + lang );
+			}
+			lang = lang.replace( runescape, funescape ).toLowerCase();
+			return function( elem ) {
+				var elemLang;
+				do {
+					if ( (elemLang = documentIsHTML ?
+						elem.lang :
+						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+						elemLang = elemLang.toLowerCase();
+						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+					}
+				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+				return false;
+			};
+		}),
+
+		// Miscellaneous
+		"target": function( elem ) {
+			var hash = window.location && window.location.hash;
+			return hash && hash.slice( 1 ) === elem.id;
+		},
+
+		"root": function( elem ) {
+			return elem === docElem;
+		},
+
+		"focus": function( elem ) {
+			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+		},
+
+		// Boolean properties
+		"enabled": function( elem ) {
+			return elem.disabled === false;
+		},
+
+		"disabled": function( elem ) {
+			return elem.disabled === true;
+		},
+
+		"checked": function( elem ) {
+			// In CSS3, :checked should return both checked and selected elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			var nodeName = elem.nodeName.toLowerCase();
+			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+		},
+
+		"selected": function( elem ) {
+			// Accessing this property makes selected-by-default
+			// options in Safari work properly
+			if ( elem.parentNode ) {
+				elem.parentNode.selectedIndex;
+			}
+
+			return elem.selected === true;
+		},
+
+		// Contents
+		"empty": function( elem ) {
+			// http://www.w3.org/TR/selectors/#empty-pseudo
+			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+			//   but not by others (comment: 8; processing instruction: 7; etc.)
+			// nodeType < 6 works because attributes (2) do not appear as children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				if ( elem.nodeType < 6 ) {
+					return false;
+				}
+			}
+			return true;
+		},
+
+		"parent": function( elem ) {
+			return !Expr.pseudos["empty"]( elem );
+		},
+
+		// Element/input types
+		"header": function( elem ) {
+			return rheader.test( elem.nodeName );
+		},
+
+		"input": function( elem ) {
+			return rinputs.test( elem.nodeName );
+		},
+
+		"button": function( elem ) {
+			var name = elem.nodeName.toLowerCase();
+			return name === "input" && elem.type === "button" || name === "button";
+		},
+
+		"text": function( elem ) {
+			var attr;
+			return elem.nodeName.toLowerCase() === "input" &&
+				elem.type === "text" &&
+
+				// Support: IE<8
+				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+		},
+
+		// Position-in-collection
+		"first": createPositionalPseudo(function() {
+			return [ 0 ];
+		}),
+
+		"last": createPositionalPseudo(function( matchIndexes, length ) {
+			return [ length - 1 ];
+		}),
+
+		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			return [ argument < 0 ? argument + length : argument ];
+		}),
+
+		"even": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 0;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"odd": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 1;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; --i >= 0; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; ++i < length; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		})
+	}
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+	Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+	Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+	var matched, match, tokens, type,
+		soFar, groups, preFilters,
+		cached = tokenCache[ selector + " " ];
+
+	if ( cached ) {
+		return parseOnly ? 0 : cached.slice( 0 );
+	}
+
+	soFar = selector;
+	groups = [];
+	preFilters = Expr.preFilter;
+
+	while ( soFar ) {
+
+		// Comma and first run
+		if ( !matched || (match = rcomma.exec( soFar )) ) {
+			if ( match ) {
+				// Don't consume trailing commas as valid
+				soFar = soFar.slice( match[0].length ) || soFar;
+			}
+			groups.push( (tokens = []) );
+		}
+
+		matched = false;
+
+		// Combinators
+		if ( (match = rcombinators.exec( soFar )) ) {
+			matched = match.shift();
+			tokens.push({
+				value: matched,
+				// Cast descendant combinators to space
+				type: match[0].replace( rtrim, " " )
+			});
+			soFar = soFar.slice( matched.length );
+		}
+
+		// Filters
+		for ( type in Expr.filter ) {
+			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+				(match = preFilters[ type ]( match ))) ) {
+				matched = match.shift();
+				tokens.push({
+					value: matched,
+					type: type,
+					matches: match
+				});
+				soFar = soFar.slice( matched.length );
+			}
+		}
+
+		if ( !matched ) {
+			break;
+		}
+	}
+
+	// Return the length of the invalid excess
+	// if we're just parsing
+	// Otherwise, throw an error or return tokens
+	return parseOnly ?
+		soFar.length :
+		soFar ?
+			Sizzle.error( selector ) :
+			// Cache the tokens
+			tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+	var i = 0,
+		len = tokens.length,
+		selector = "";
+	for ( ; i < len; i++ ) {
+		selector += tokens[i].value;
+	}
+	return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+	var dir = combinator.dir,
+		checkNonElements = base && dir === "parentNode",
+		doneName = done++;
+
+	return combinator.first ?
+		// Check against closest ancestor/preceding element
+		function( elem, context, xml ) {
+			while ( (elem = elem[ dir ]) ) {
+				if ( elem.nodeType === 1 || checkNonElements ) {
+					return matcher( elem, context, xml );
+				}
+			}
+		} :
+
+		// Check against all ancestor/preceding elements
+		function( elem, context, xml ) {
+			var oldCache, outerCache,
+				newCache = [ dirruns, doneName ];
+
+			// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+			if ( xml ) {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						if ( matcher( elem, context, xml ) ) {
+							return true;
+						}
+					}
+				}
+			} else {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						outerCache = elem[ expando ] || (elem[ expando ] = {});
+						if ( (oldCache = outerCache[ dir ]) &&
+							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+							// Assign to newCache so results back-propagate to previous elements
+							return (newCache[ 2 ] = oldCache[ 2 ]);
+						} else {
+							// Reuse newcache so results back-propagate to previous elements
+							outerCache[ dir ] = newCache;
+
+							// A match means we're done; a fail means we have to keep checking
+							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+								return true;
+							}
+						}
+					}
+				}
+			}
+		};
+}
+
+function elementMatcher( matchers ) {
+	return matchers.length > 1 ?
+		function( elem, context, xml ) {
+			var i = matchers.length;
+			while ( i-- ) {
+				if ( !matchers[i]( elem, context, xml ) ) {
+					return false;
+				}
+			}
+			return true;
+		} :
+		matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+	var i = 0,
+		len = contexts.length;
+	for ( ; i < len; i++ ) {
+		Sizzle( selector, contexts[i], results );
+	}
+	return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+	var elem,
+		newUnmatched = [],
+		i = 0,
+		len = unmatched.length,
+		mapped = map != null;
+
+	for ( ; i < len; i++ ) {
+		if ( (elem = unmatched[i]) ) {
+			if ( !filter || filter( elem, context, xml ) ) {
+				newUnmatched.push( elem );
+				if ( mapped ) {
+					map.push( i );
+				}
+			}
+		}
+	}
+
+	return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+	if ( postFilter && !postFilter[ expando ] ) {
+		postFilter = setMatcher( postFilter );
+	}
+	if ( postFinder && !postFinder[ expando ] ) {
+		postFinder = setMatcher( postFinder, postSelector );
+	}
+	return markFunction(function( seed, results, context, xml ) {
+		var temp, i, elem,
+			preMap = [],
+			postMap = [],
+			preexisting = results.length,
+
+			// Get initial elements from seed or context
+			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+			// Prefilter to get matcher input, preserving a map for seed-results synchronization
+			matcherIn = preFilter && ( seed || !selector ) ?
+				condense( elems, preMap, preFilter, context, xml ) :
+				elems,
+
+			matcherOut = matcher ?
+				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+					// ...intermediate processing is necessary
+					[] :
+
+					// ...otherwise use results directly
+					results :
+				matcherIn;
+
+		// Find primary matches
+		if ( matcher ) {
+			matcher( matcherIn, matcherOut, context, xml );
+		}
+
+		// Apply postFilter
+		if ( postFilter ) {
+			temp = condense( matcherOut, postMap );
+			postFilter( temp, [], context, xml );
+
+			// Un-match failing elements by moving them back to matcherIn
+			i = temp.length;
+			while ( i-- ) {
+				if ( (elem = temp[i]) ) {
+					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+				}
+			}
+		}
+
+		if ( seed ) {
+			if ( postFinder || preFilter ) {
+				if ( postFinder ) {
+					// Get the final matcherOut by condensing this intermediate into postFinder contexts
+					temp = [];
+					i = matcherOut.length;
+					while ( i-- ) {
+						if ( (elem = matcherOut[i]) ) {
+							// Restore matcherIn since elem is not yet a final match
+							temp.push( (matcherIn[i] = elem) );
+						}
+					}
+					postFinder( null, (matcherOut = []), temp, xml );
+				}
+
+				// Move matched elements from seed to results to keep them synchronized
+				i = matcherOut.length;
+				while ( i-- ) {
+					if ( (elem = matcherOut[i]) &&
+						(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
+
+						seed[temp] = !(results[temp] = elem);
+					}
+				}
+			}
+
+		// Add elements to results, through postFinder if defined
+		} else {
+			matcherOut = condense(
+				matcherOut === results ?
+					matcherOut.splice( preexisting, matcherOut.length ) :
+					matcherOut
+			);
+			if ( postFinder ) {
+				postFinder( null, results, matcherOut, xml );
+			} else {
+				push.apply( results, matcherOut );
+			}
+		}
+	});
+}
+
+function matcherFromTokens( tokens ) {
+	var checkContext, matcher, j,
+		len = tokens.length,
+		leadingRelative = Expr.relative[ tokens[0].type ],
+		implicitRelative = leadingRelative || Expr.relative[" "],
+		i = leadingRelative ? 1 : 0,
+
+		// The foundational matcher ensures that elements are reachable from top-level context(s)
+		matchContext = addCombinator( function( elem ) {
+			return elem === checkContext;
+		}, implicitRelative, true ),
+		matchAnyContext = addCombinator( function( elem ) {
+			return indexOf.call( checkContext, elem ) > -1;
+		}, implicitRelative, true ),
+		matchers = [ function( elem, context, xml ) {
+			return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+				(checkContext = context).nodeType ?
+					matchContext( elem, context, xml ) :
+					matchAnyContext( elem, context, xml ) );
+		} ];
+
+	for ( ; i < len; i++ ) {
+		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+		} else {
+			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+			// Return special upon seeing a positional matcher
+			if ( matcher[ expando ] ) {
+				// Find the next relative operator (if any) for proper handling
+				j = ++i;
+				for ( ; j < len; j++ ) {
+					if ( Expr.relative[ tokens[j].type ] ) {
+						break;
+					}
+				}
+				return setMatcher(
+					i > 1 && elementMatcher( matchers ),
+					i > 1 && toSelector(
+						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
+						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+					).replace( rtrim, "$1" ),
+					matcher,
+					i < j && matcherFromTokens( tokens.slice( i, j ) ),
+					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+					j < len && toSelector( tokens )
+				);
+			}
+			matchers.push( matcher );
+		}
+	}
+
+	return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+	var bySet = setMatchers.length > 0,
+		byElement = elementMatchers.length > 0,
+		superMatcher = function( seed, context, xml, results, outermost ) {
+			var elem, j, matcher,
+				matchedCount = 0,
+				i = "0",
+				unmatched = seed && [],
+				setMatched = [],
+				contextBackup = outermostContext,
+				// We must always have either seed elements or outermost context
+				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+				// Use integer dirruns iff this is the outermost matcher
+				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+				len = elems.length;
+
+			if ( outermost ) {
+				outermostContext = context !== document && context;
+			}
+
+			// Add elements passing elementMatchers directly to results
+			// Keep `i` a string if there are no elements so `matchedCount` will be "00" below
+			// Support: IE<9, Safari
+			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+				if ( byElement && elem ) {
+					j = 0;
+					while ( (matcher = elementMatchers[j++]) ) {
+						if ( matcher( elem, context, xml ) ) {
+							results.push( elem );
+							break;
+						}
+					}
+					if ( outermost ) {
+						dirruns = dirrunsUnique;
+					}
+				}
+
+				// Track unmatched elements for set filters
+				if ( bySet ) {
+					// They will have gone through all possible matchers
+					if ( (elem = !matcher && elem) ) {
+						matchedCount--;
+					}
+
+					// Lengthen the array for every element, matched or not
+					if ( seed ) {
+						unmatched.push( elem );
+					}
+				}
+			}
+
+			// Apply set filters to unmatched elements
+			matchedCount += i;
+			if ( bySet && i !== matchedCount ) {
+				j = 0;
+				while ( (matcher = setMatchers[j++]) ) {
+					matcher( unmatched, setMatched, context, xml );
+				}
+
+				if ( seed ) {
+					// Reintegrate element matches to eliminate the need for sorting
+					if ( matchedCount > 0 ) {
+						while ( i-- ) {
+							if ( !(unmatched[i] || setMatched[i]) ) {
+								setMatched[i] = pop.call( results );
+							}
+						}
+					}
+
+					// Discard index placeholder values to get only actual matches
+					setMatched = condense( setMatched );
+				}
+
+				// Add matches to results
+				push.apply( results, setMatched );
+
+				// Seedless set matches succeeding multiple successful matchers stipulate sorting
+				if ( outermost && !seed && setMatched.length > 0 &&
+					( matchedCount + setMatchers.length ) > 1 ) {
+
+					Sizzle.uniqueSort( results );
+				}
+			}
+
+			// Override manipulation of globals by nested matchers
+			if ( outermost ) {
+				dirruns = dirrunsUnique;
+				outermostContext = contextBackup;
+			}
+
+			return unmatched;
+		};
+
+	return bySet ?
+		markFunction( superMatcher ) :
+		superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+	var i,
+		setMatchers = [],
+		elementMatchers = [],
+		cached = compilerCache[ selector + " " ];
+
+	if ( !cached ) {
+		// Generate a function of recursive functions that can be used to check each element
+		if ( !match ) {
+			match = tokenize( selector );
+		}
+		i = match.length;
+		while ( i-- ) {
+			cached = matcherFromTokens( match[i] );
+			if ( cached[ expando ] ) {
+				setMatchers.push( cached );
+			} else {
+				elementMatchers.push( cached );
+			}
+		}
+
+		// Cache the compiled function
+		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+		// Save selector and tokenization
+		cached.selector = selector;
+	}
+	return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ *  selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ *  selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+	var i, tokens, token, type, find,
+		compiled = typeof selector === "function" && selector,
+		match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+	results = results || [];
+
+	// Try to minimize operations if there is no seed and only one group
+	if ( match.length === 1 ) {
+
+		// Take a shortcut and set the context if the root selector is an ID
+		tokens = match[0] = match[0].slice( 0 );
+		if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+				support.getById && context.nodeType === 9 && documentIsHTML &&
+				Expr.relative[ tokens[1].type ] ) {
+
+			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+			if ( !context ) {
+				return results;
+
+			// Precompiled matchers will still verify ancestry, so step up a level
+			} else if ( compiled ) {
+				context = context.parentNode;
+			}
+
+			selector = selector.slice( tokens.shift().value.length );
+		}
+
+		// Fetch a seed set for right-to-left matching
+		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+		while ( i-- ) {
+			token = tokens[i];
+
+			// Abort if we hit a combinator
+			if ( Expr.relative[ (type = token.type) ] ) {
+				break;
+			}
+			if ( (find = Expr.find[ type ]) ) {
+				// Search, expanding context for leading sibling combinators
+				if ( (seed = find(
+					token.matches[0].replace( runescape, funescape ),
+					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+				)) ) {
+
+					// If seed is empty or no tokens remain, we can return early
+					tokens.splice( i, 1 );
+					selector = seed.length && toSelector( tokens );
+					if ( !selector ) {
+						push.apply( results, seed );
+						return results;
+					}
+
+					break;
+				}
+			}
+		}
+	}
+
+	// Compile and execute a filtering function if one is not provided
+	// Provide `match` to avoid retokenization if we modified the selector above
+	( compiled || compile( selector, match ) )(
+		seed,
+		context,
+		!documentIsHTML,
+		results,
+		rsibling.test( selector ) && testContext( context.parentNode ) || context
+	);
+	return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome<14
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+	// Should return 1, but returns 4 (following)
+	return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+	div.innerHTML = "<a href='#'></a>";
+	return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+	addHandle( "type|href|height|width", function( elem, name, isXML ) {
+		if ( !isXML ) {
+			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+		}
+	});
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+	div.innerHTML = "<input/>";
+	div.firstChild.setAttribute( "value", "" );
+	return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+	addHandle( "value", function( elem, name, isXML ) {
+		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+			return elem.defaultValue;
+		}
+	});
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+	return div.getAttribute("disabled") == null;
+}) ) {
+	addHandle( booleans, function( elem, name, isXML ) {
+		var val;
+		if ( !isXML ) {
+			return elem[ name ] === true ? name.toLowerCase() :
+					(val = elem.getAttributeNode( name )) && val.specified ?
+					val.value :
+				null;
+		}
+	});
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.pseudos;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
+
+
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+	if ( jQuery.isFunction( qualifier ) ) {
+		return jQuery.grep( elements, function( elem, i ) {
+			/* jshint -W018 */
+			return !!qualifier.call( elem, i, elem ) !== not;
+		});
+
+	}
+
+	if ( qualifier.nodeType ) {
+		return jQuery.grep( elements, function( elem ) {
+			return ( elem === qualifier ) !== not;
+		});
+
+	}
+
+	if ( typeof qualifier === "string" ) {
+		if ( risSimple.test( qualifier ) ) {
+			return jQuery.filter( qualifier, elements, not );
+		}
+
+		qualifier = jQuery.filter( qualifier, elements );
+	}
+
+	return jQuery.grep( elements, function( elem ) {
+		return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
+	});
+}
+
+jQuery.filter = function( expr, elems, not ) {
+	var elem = elems[ 0 ];
+
+	if ( not ) {
+		expr = ":not(" + expr + ")";
+	}
+
+	return elems.length === 1 && elem.nodeType === 1 ?
+		jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+		jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+			return elem.nodeType === 1;
+		}));
+};
+
+jQuery.fn.extend({
+	find: function( selector ) {
+		var i,
+			len = this.length,
+			ret = [],
+			self = this;
+
+		if ( typeof selector !== "string" ) {
+			return this.pushStack( jQuery( selector ).filter(function() {
+				for ( i = 0; i < len; i++ ) {
+					if ( jQuery.contains( self[ i ], this ) ) {
+						return true;
+					}
+				}
+			}) );
+		}
+
+		for ( i = 0; i < len; i++ ) {
+			jQuery.find( selector, self[ i ], ret );
+		}
+
+		// Needed because $( selector, context ) becomes $( context ).find( selector )
+		ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+		ret.selector = this.selector ? this.selector + " " + selector : selector;
+		return ret;
+	},
+	filter: function( selector ) {
+		return this.pushStack( winnow(this, selector || [], false) );
+	},
+	not: function( selector ) {
+		return this.pushStack( winnow(this, selector || [], true) );
+	},
+	is: function( selector ) {
+		return !!winnow(
+			this,
+
+			// If this is a positional/relative selector, check membership in the returned set
+			// so $("p:first").is("p:last") won't return true for a doc with two "p".
+			typeof selector === "string" && rneedsContext.test( selector ) ?
+				jQuery( selector ) :
+				selector || [],
+			false
+		).length;
+	}
+});
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+	// A simple way to check for HTML strings
+	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+	// Strict HTML recognition (#11290: must start with <)
+	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+	init = jQuery.fn.init = function( selector, context ) {
+		var match, elem;
+
+		// HANDLE: $(""), $(null), $(undefined), $(false)
+		if ( !selector ) {
+			return this;
+		}
+
+		// Handle HTML strings
+		if ( typeof selector === "string" ) {
+			if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
+				// Assume that strings that start and end with <> are HTML and skip the regex check
+				match = [ null, selector, null ];
+
+			} else {
+				match = rquickExpr.exec( selector );
+			}
+
+			// Match html or make sure no context is specified for #id
+			if ( match && (match[1] || !context) ) {
+
+				// HANDLE: $(html) -> $(array)
+				if ( match[1] ) {
+					context = context instanceof jQuery ? context[0] : context;
+
+					// scripts is true for back-compat
+					// Intentionally let the error be thrown if parseHTML is not present
+					jQuery.merge( this, jQuery.parseHTML(
+						match[1],
+						context && context.nodeType ? context.ownerDocument || context : document,
+						true
+					) );
+
+					// HANDLE: $(html, props)
+					if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
+						for ( match in context ) {
+							// Properties of context are called as methods if possible
+							if ( jQuery.isFunction( this[ match ] ) ) {
+								this[ match ]( context[ match ] );
+
+							// ...and otherwise set as attributes
+							} else {
+								this.attr( match, context[ match ] );
+							}
+						}
+					}
+
+					return this;
+
+				// HANDLE: $(#id)
+				} else {
+					elem = document.getElementById( match[2] );
+
+					// Check parentNode to catch when Blackberry 4.6 returns
+					// nodes that are no longer in the document #6963
+					if ( elem && elem.parentNode ) {
+						// Inject the element directly into the jQuery object
+						this.length = 1;
+						this[0] = elem;
+					}
+
+					this.context = document;
+					this.selector = selector;
+					return this;
+				}
+
+			// HANDLE: $(expr, $(...))
+			} else if ( !context || context.jquery ) {
+				return ( context || rootjQuery ).find( selector );
+
+			// HANDLE: $(expr, context)
+			// (which is just equivalent to: $(context).find(expr)
+			} else {
+				return this.constructor( context ).find( selector );
+			}
+
+		// HANDLE: $(DOMElement)
+		} else if ( selector.nodeType ) {
+			this.context = this[0] = selector;
+			this.length = 1;
+			return this;
+
+		// HANDLE: $(function)
+		// Shortcut for document ready
+		} else if ( jQuery.isFunction( selector ) ) {
+			return typeof rootjQuery.ready !== "undefined" ?
+				rootjQuery.ready( selector ) :
+				// Execute immediately if ready is not present
+				selector( jQuery );
+		}
+
+		if ( selector.selector !== undefined ) {
+			this.selector = selector.selector;
+			this.context = selector.context;
+		}
+
+		return jQuery.makeArray( selector, this );
+	};
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+	// methods guaranteed to produce a unique set when starting from a unique set
+	guaranteedUnique = {
+		children: true,
+		contents: true,
+		next: true,
+		prev: true
+	};
+
+jQuery.extend({
+	dir: function( elem, dir, until ) {
+		var matched = [],
+			truncate = until !== undefined;
+
+		while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
+			if ( elem.nodeType === 1 ) {
+				if ( truncate && jQuery( elem ).is( until ) ) {
+					break;
+				}
+				matched.push( elem );
+			}
+		}
+		return matched;
+	},
+
+	sibling: function( n, elem ) {
+		var matched = [];
+
+		for ( ; n; n = n.nextSibling ) {
+			if ( n.nodeType === 1 && n !== elem ) {
+				matched.push( n );
+			}
+		}
+
+		return matched;
+	}
+});
+
+jQuery.fn.extend({
+	has: function( target ) {
+		var targets = jQuery( target, this ),
+			l = targets.length;
+
+		return this.filter(function() {
+			var i = 0;
+			for ( ; i < l; i++ ) {
+				if ( jQuery.contains( this, targets[i] ) ) {
+					return true;
+				}
+			}
+		});
+	},
+
+	closest: function( selectors, context ) {
+		var cur,
+			i = 0,
+			l = this.length,
+			matched = [],
+			pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+				jQuery( selectors, context || this.context ) :
+				0;
+
+		for ( ; i < l; i++ ) {
+			for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
+				// Always skip document fragments
+				if ( cur.nodeType < 11 && (pos ?
+					pos.index(cur) > -1 :
+
+					// Don't pass non-elements to Sizzle
+					cur.nodeType === 1 &&
+						jQuery.find.matchesSelector(cur, selectors)) ) {
+
+					matched.push( cur );
+					break;
+				}
+			}
+		}
+
+		return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
+	},
+
+	// Determine the position of an element within
+	// the matched set of elements
+	index: function( elem ) {
+
+		// No argument, return index in parent
+		if ( !elem ) {
+			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+		}
+
+		// index in selector
+		if ( typeof elem === "string" ) {
+			return indexOf.call( jQuery( elem ), this[ 0 ] );
+		}
+
+		// Locate the position of the desired element
+		return indexOf.call( this,
+
+			// If it receives a jQuery object, the first element is used
+			elem.jquery ? elem[ 0 ] : elem
+		);
+	},
+
+	add: function( selector, context ) {
+		return this.pushStack(
+			jQuery.unique(
+				jQuery.merge( this.get(), jQuery( selector, context ) )
+			)
+		);
+	},
+
+	addBack: function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter(selector)
+		);
+	}
+});
+
+function sibling( cur, dir ) {
+	while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}
+	return cur;
+}
+
+jQuery.each({
+	parent: function( elem ) {
+		var parent = elem.parentNode;
+		return parent && parent.nodeType !== 11 ? parent : null;
+	},
+	parents: function( elem ) {
+		return jQuery.dir( elem, "parentNode" );
+	},
+	parentsUntil: function( elem, i, until ) {
+		return jQuery.dir( elem, "parentNode", until );
+	},
+	next: function( elem ) {
+		return sibling( elem, "nextSibling" );
+	},
+	prev: function( elem ) {
+		return sibling( elem, "previousSibling" );
+	},
+	nextAll: function( elem ) {
+		return jQuery.dir( elem, "nextSibling" );
+	},
+	prevAll: function( elem ) {
+		return jQuery.dir( elem, "previousSibling" );
+	},
+	nextUntil: function( elem, i, until ) {
+		return jQuery.dir( elem, "nextSibling", until );
+	},
+	prevUntil: function( elem, i, until ) {
+		return jQuery.dir( elem, "previousSibling", until );
+	},
+	siblings: function( elem ) {
+		return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
+	},
+	children: function( elem ) {
+		return jQuery.sibling( elem.firstChild );
+	},
+	contents: function( elem ) {
+		return elem.contentDocument || jQuery.merge( [], elem.childNodes );
+	}
+}, function( name, fn ) {
+	jQuery.fn[ name ] = function( until, selector ) {
+		var matched = jQuery.map( this, fn, until );
+
+		if ( name.slice( -5 ) !== "Until" ) {
+			selector = until;
+		}
+
+		if ( selector && typeof selector === "string" ) {
+			matched = jQuery.filter( selector, matched );
+		}
+
+		if ( this.length > 1 ) {
+			// Remove duplicates
+			if ( !guaranteedUnique[ name ] ) {
+				jQuery.unique( matched );
+			}
+
+			// Reverse order for parents* and prev-derivatives
+			if ( rparentsprev.test( name ) ) {
+				matched.reverse();
+			}
+		}
+
+		return this.pushStack( matched );
+	};
+});
+var rnotwhite = (/\S+/g);
+
+
+
+// String to Object options format cache
+var optionsCache = {};
+
+// Convert String-formatted options into Object-formatted ones and store in cache
+function createOptions( options ) {
+	var object = optionsCache[ options ] = {};
+	jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
+		object[ flag ] = true;
+	});
+	return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *	options: an optional list of space-separated options that will change how
+ *			the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ *	once:			will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *	memory:			will keep track of previous values and will call any callback added
+ *					after the list has been fired right away with the latest "memorized"
+ *					values (like a Deferred)
+ *
+ *	unique:			will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *	stopOnFalse:	interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+	// Convert options from String-formatted to Object-formatted if needed
+	// (we check in cache first)
+	options = typeof options === "string" ?
+		( optionsCache[ options ] || createOptions( options ) ) :
+		jQuery.extend( {}, options );
+
+	var // Last fire value (for non-forgettable lists)
+		memory,
+		// Flag to know if list was already fired
+		fired,
+		// Flag to know if list is currently firing
+		firing,
+		// First callback to fire (used internally by add and fireWith)
+		firingStart,
+		// End of the loop when firing
+		firingLength,
+		// Index of currently firing callback (modified by remove if needed)
+		firingIndex,
+		// Actual callback list
+		list = [],
+		// Stack of fire calls for repeatable lists
+		stack = !options.once && [],
+		// Fire callbacks
+		fire = function( data ) {
+			memory = options.memory && data;
+			fired = true;
+			firingIndex = firingStart || 0;
+			firingStart = 0;
+			firingLength = list.length;
+			firing = true;
+			for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+				if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
+					memory = false; // To prevent further calls using add
+					break;
+				}
+			}
+			firing = false;
+			if ( list ) {
+				if ( stack ) {
+					if ( stack.length ) {
+						fire( stack.shift() );
+					}
+				} else if ( memory ) {
+					list = [];
+				} else {
+					self.disable();
+				}
+			}
+		},
+		// Actual Callbacks object
+		self = {
+			// Add a callback or a collection of callbacks to the list
+			add: function() {
+				if ( list ) {
+					// First, we save the current length
+					var start = list.length;
+					(function add( args ) {
+						jQuery.each( args, function( _, arg ) {
+							var type = jQuery.type( arg );
+							if ( type === "function" ) {
+								if ( !options.unique || !self.has( arg ) ) {
+									list.push( arg );
+								}
+							} else if ( arg && arg.length && type !== "string" ) {
+								// Inspect recursively
+								add( arg );
+							}
+						});
+					})( arguments );
+					// Do we need to add the callbacks to the
+					// current firing batch?
+					if ( firing ) {
+						firingLength = list.length;
+					// With memory, if we're not firing then
+					// we should call right away
+					} else if ( memory ) {
+						firingStart = start;
+						fire( memory );
+					}
+				}
+				return this;
+			},
+			// Remove a callback from the list
+			remove: function() {
+				if ( list ) {
+					jQuery.each( arguments, function( _, arg ) {
+						var index;
+						while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+							list.splice( index, 1 );
+							// Handle firing indexes
+							if ( firing ) {
+								if ( index <= firingLength ) {
+									firingLength--;
+								}
+								if ( index <= firingIndex ) {
+									firingIndex--;
+								}
+							}
+						}
+					});
+				}
+				return this;
+			},
+			// Check if a given callback is in the list.
+			// If no argument is given, return whether or not list has callbacks attached.
+			has: function( fn ) {
+				return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
+			},
+			// Remove all callbacks from the list
+			empty: function() {
+				list = [];
+				firingLength = 0;
+				return this;
+			},
+			// Have the list do nothing anymore
+			disable: function() {
+				list = stack = memory = undefined;
+				return this;
+			},
+			// Is it disabled?
+			disabled: function() {
+				return !list;
+			},
+			// Lock the list in its current state
+			lock: function() {
+				stack = undefined;
+				if ( !memory ) {
+					self.disable();
+				}
+				return this;
+			},
+			// Is it locked?
+			locked: function() {
+				return !stack;
+			},
+			// Call all callbacks with the given context and arguments
+			fireWith: function( context, args ) {
+				if ( list && ( !fired || stack ) ) {
+					args = args || [];
+					args = [ context, args.slice ? args.slice() : args ];
+					if ( firing ) {
+						stack.push( args );
+					} else {
+						fire( args );
+					}
+				}
+				return this;
+			},
+			// Call all the callbacks with the given arguments
+			fire: function() {
+				self.fireWith( this, arguments );
+				return this;
+			},
+			// To know if the callbacks have already been called at least once
+			fired: function() {
+				return !!fired;
+			}
+		};
+
+	return self;
+};
+
+
+jQuery.extend({
+
+	Deferred: function( func ) {
+		var tuples = [
+				// action, add listener, listener list, final state
+				[ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
+				[ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
+				[ "notify", "progress", jQuery.Callbacks("memory") ]
+			],
+			state = "pending",
+			promise = {
+				state: function() {
+					return state;
+				},
+				always: function() {
+					deferred.done( arguments ).fail( arguments );
+					return this;
+				},
+				then: function( /* fnDone, fnFail, fnProgress */ ) {
+					var fns = arguments;
+					return jQuery.Deferred(function( newDefer ) {
+						jQuery.each( tuples, function( i, tuple ) {
+							var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
+							// deferred[ done | fail | progress ] for forwarding actions to newDefer
+							deferred[ tuple[1] ](function() {
+								var returned = fn && fn.apply( this, arguments );
+								if ( returned && jQuery.isFunction( returned.promise ) ) {
+									returned.promise()
+										.done( newDefer.resolve )
+										.fail( newDefer.reject )
+										.progress( newDefer.notify );
+								} else {
+									newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
+								}
+							});
+						});
+						fns = null;
+					}).promise();
+				},
+				// Get a promise for this deferred
+				// If obj is provided, the promise aspect is added to the object
+				promise: function( obj ) {
+					return obj != null ? jQuery.extend( obj, promise ) : promise;
+				}
+			},
+			deferred = {};
+
+		// Keep pipe for back-compat
+		promise.pipe = promise.then;
+
+		// Add list-specific methods
+		jQuery.each( tuples, function( i, tuple ) {
+			var list = tuple[ 2 ],
+				stateString = tuple[ 3 ];
+
+			// promise[ done | fail | progress ] = list.add
+			promise[ tuple[1] ] = list.add;
+
+			// Handle state
+			if ( stateString ) {
+				list.add(function() {
+					// state = [ resolved | rejected ]
+					state = stateString;
+
+				// [ reject_list | resolve_list ].disable; progress_list.lock
+				}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
+			}
+
+			// deferred[ resolve | reject | notify ]
+			deferred[ tuple[0] ] = function() {
+				deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
+				return this;
+			};
+			deferred[ tuple[0] + "With" ] = list.fireWith;
+		});
+
+		// Make the deferred a promise
+		promise.promise( deferred );
+
+		// Call given func if any
+		if ( func ) {
+			func.call( deferred, deferred );
+		}
+
+		// All done!
+		return deferred;
+	},
+
+	// Deferred helper
+	when: function( subordinate /* , ..., subordinateN */ ) {
+		var i = 0,
+			resolveValues = slice.call( arguments ),
+			length = resolveValues.length,
+
+			// the count of uncompleted subordinates
+			remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+			// the master Deferred. If resolveValues consist of only a single Deferred, just use that.
+			deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+			// Update function for both resolve and progress values
+			updateFunc = function( i, contexts, values ) {
+				return function( value ) {
+					contexts[ i ] = this;
+					values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+					if ( values === progressValues ) {
+						deferred.notifyWith( contexts, values );
+					} else if ( !( --remaining ) ) {
+						deferred.resolveWith( contexts, values );
+					}
+				};
+			},
+
+			progressValues, progressContexts, resolveContexts;
+
+		// add listeners to Deferred subordinates; treat others as resolved
+		if ( length > 1 ) {
+			progressValues = new Array( length );
+			progressContexts = new Array( length );
+			resolveContexts = new Array( length );
+			for ( ; i < length; i++ ) {
+				if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+					resolveValues[ i ].promise()
+						.done( updateFunc( i, resolveContexts, resolveValues ) )
+						.fail( deferred.reject )
+						.progress( updateFunc( i, progressContexts, progressValues ) );
+				} else {
+					--remaining;
+				}
+			}
+		}
+
+		// if we're not waiting on anything, resolve the master
+		if ( !remaining ) {
+			deferred.resolveWith( resolveContexts, resolveValues );
+		}
+
+		return deferred.promise();
+	}
+});
+
+
+// The deferred used on DOM ready
+var readyList;
+
+jQuery.fn.ready = function( fn ) {
+	// Add the callback
+	jQuery.ready.promise().done( fn );
+
+	return this;
+};
+
+jQuery.extend({
+	// Is the DOM ready to be used? Set to true once it occurs.
+	isReady: false,
+
+	// A counter to track how many items to wait for before
+	// the ready event fires. See #6781
+	readyWait: 1,
+
+	// Hold (or release) the ready event
+	holdReady: function( hold ) {
+		if ( hold ) {
+			jQuery.readyWait++;
+		} else {
+			jQuery.ready( true );
+		}
+	},
+
+	// Handle when the DOM is ready
+	ready: function( wait ) {
+
+		// Abort if there are pending holds or we're already ready
+		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+			return;
+		}
+
+		// Remember that the DOM is ready
+		jQuery.isReady = true;
+
+		// If a normal DOM Ready event fired, decrement, and wait if need be
+		if ( wait !== true && --jQuery.readyWait > 0 ) {
+			return;
+		}
+
+		// If there are functions bound, to execute
+		readyList.resolveWith( document, [ jQuery ] );
+
+		// Trigger any bound ready events
+		if ( jQuery.fn.triggerHandler ) {
+			jQuery( document ).triggerHandler( "ready" );
+			jQuery( document ).off( "ready" );
+		}
+	}
+});
+
+/**
+ * The ready event handler and self cleanup method
+ */
+function completed() {
+	document.removeEventListener( "DOMContentLoaded", completed, false );
+	window.removeEventListener( "load", completed, false );
+	jQuery.ready();
+}
+
+jQuery.ready.promise = function( obj ) {
+	if ( !readyList ) {
+
+		readyList = jQuery.Deferred();
+
+		// Catch cases where $(document).ready() is called after the browser event has already occurred.
+		// we once tried to use readyState "interactive" here, but it caused issues like the one
+		// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
+		if ( document.readyState === "complete" ) {
+			// Handle it asynchronously to allow scripts the opportunity to delay ready
+			setTimeout( jQuery.ready );
+
+		} else {
+
+			// Use the handy event callback
+			document.addEventListener( "DOMContentLoaded", completed, false );
+
+			// A fallback to window.onload, that will always work
+			window.addEventListener( "load", completed, false );
+		}
+	}
+	return readyList.promise( obj );
+};
+
+// Kick off the DOM ready check even if the user does not
+jQuery.ready.promise();
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+	var i = 0,
+		len = elems.length,
+		bulk = key == null;
+
+	// Sets many values
+	if ( jQuery.type( key ) === "object" ) {
+		chainable = true;
+		for ( i in key ) {
+			jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
+		}
+
+	// Sets one value
+	} else if ( value !== undefined ) {
+		chainable = true;
+
+		if ( !jQuery.isFunction( value ) ) {
+			raw = true;
+		}
+
+		if ( bulk ) {
+			// Bulk operations run against the entire set
+			if ( raw ) {
+				fn.call( elems, value );
+				fn = null;
+
+			// ...except when executing function values
+			} else {
+				bulk = fn;
+				fn = function( elem, key, value ) {
+					return bulk.call( jQuery( elem ), value );
+				};
+			}
+		}
+
+		if ( fn ) {
+			for ( ; i < len; i++ ) {
+				fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
+			}
+		}
+	}
+
+	return chainable ?
+		elems :
+
+		// Gets
+		bulk ?
+			fn.call( elems ) :
+			len ? fn( elems[0], key ) : emptyGet;
+};
+
+
+/**
+ * Determines whether an object can have data
+ */
+jQuery.acceptData = function( owner ) {
+	// Accepts only:
+	//  - Node
+	//    - Node.ELEMENT_NODE
+	//    - Node.DOCUMENT_NODE
+	//  - Object
+	//    - Any
+	/* jshint -W018 */
+	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+function Data() {
+	// Support: Android < 4,
+	// Old WebKit does not have Object.preventExtensions/freeze method,
+	// return new empty object instead with no [[set]] accessor
+	Object.defineProperty( this.cache = {}, 0, {
+		get: function() {
+			return {};
+		}
+	});
+
+	this.expando = jQuery.expando + Math.random();
+}
+
+Data.uid = 1;
+Data.accepts = jQuery.acceptData;
+
+Data.prototype = {
+	key: function( owner ) {
+		// We can accept data for non-element nodes in modern browsers,
+		// but we should not, see #8335.
+		// Always return the key for a frozen object.
+		if ( !Data.accepts( owner ) ) {
+			return 0;
+		}
+
+		var descriptor = {},
+			// Check if the owner object already has a cache key
+			unlock = owner[ this.expando ];
+
+		// If not, create one
+		if ( !unlock ) {
+			unlock = Data.uid++;
+
+			// Secure it in a non-enumerable, non-writable property
+			try {
+				descriptor[ this.expando ] = { value: unlock };
+				Object.defineProperties( owner, descriptor );
+
+			// Support: Android < 4
+			// Fallback to a less secure definition
+			} catch ( e ) {
+				descriptor[ this.expando ] = unlock;
+				jQuery.extend( owner, descriptor );
+			}
+		}
+
+		// Ensure the cache object
+		if ( !this.cache[ unlock ] ) {
+			this.cache[ unlock ] = {};
+		}
+
+		return unlock;
+	},
+	set: function( owner, data, value ) {
+		var prop,
+			// There may be an unlock assigned to this node,
+			// if there is no entry for this "owner", create one inline
+			// and set the unlock as though an owner entry had always existed
+			unlock = this.key( owner ),
+			cache = this.cache[ unlock ];
+
+		// Handle: [ owner, key, value ] args
+		if ( typeof data === "string" ) {
+			cache[ data ] = value;
+
+		// Handle: [ owner, { properties } ] args
+		} else {
+			// Fresh assignments by object are shallow copied
+			if ( jQuery.isEmptyObject( cache ) ) {
+				jQuery.extend( this.cache[ unlock ], data );
+			// Otherwise, copy the properties one-by-one to the cache object
+			} else {
+				for ( prop in data ) {
+					cache[ prop ] = data[ prop ];
+				}
+			}
+		}
+		return cache;
+	},
+	get: function( owner, key ) {
+		// Either a valid cache is found, or will be created.
+		// New caches will be created and the unlock returned,
+		// allowing direct access to the newly created
+		// empty data object. A valid owner object must be provided.
+		var cache = this.cache[ this.key( owner ) ];
+
+		return key === undefined ?
+			cache : cache[ key ];
+	},
+	access: function( owner, key, value ) {
+		var stored;
+		// In cases where either:
+		//
+		//   1. No key was specified
+		//   2. A string key was specified, but no value provided
+		//
+		// Take the "read" path and allow the get method to determine
+		// which value to return, respectively either:
+		//
+		//   1. The entire cache object
+		//   2. The data stored at the key
+		//
+		if ( key === undefined ||
+				((key && typeof key === "string") && value === undefined) ) {
+
+			stored = this.get( owner, key );
+
+			return stored !== undefined ?
+				stored : this.get( owner, jQuery.camelCase(key) );
+		}
+
+		// [*]When the key is not a string, or both a key and value
+		// are specified, set or extend (existing objects) with either:
+		//
+		//   1. An object of properties
+		//   2. A key and value
+		//
+		this.set( owner, key, value );
+
+		// Since the "set" path can have two possible entry points
+		// return the expected data based on which path was taken[*]
+		return value !== undefined ? value : key;
+	},
+	remove: function( owner, key ) {
+		var i, name, camel,
+			unlock = this.key( owner ),
+			cache = this.cache[ unlock ];
+
+		if ( key === undefined ) {
+			this.cache[ unlock ] = {};
+
+		} else {
+			// Support array or space separated string of keys
+			if ( jQuery.isArray( key ) ) {
+				// If "name" is an array of keys...
+				// When data is initially created, via ("key", "val") signature,
+				// keys will be converted to camelCase.
+				// Since there is no way to tell _how_ a key was added, remove
+				// both plain key and camelCase key. #12786
+				// This will only penalize the array argument path.
+				name = key.concat( key.map( jQuery.camelCase ) );
+			} else {
+				camel = jQuery.camelCase( key );
+				// Try the string as a key before any manipulation
+				if ( key in cache ) {
+					name = [ key, camel ];
+				} else {
+					// If a key with the spaces exists, use it.
+					// Otherwise, create an array by matching non-whitespace
+					name = camel;
+					name = name in cache ?
+						[ name ] : ( name.match( rnotwhite ) || [] );
+				}
+			}
+
+			i = name.length;
+			while ( i-- ) {
+				delete cache[ name[ i ] ];
+			}
+		}
+	},
+	hasData: function( owner ) {
+		return !jQuery.isEmptyObject(
+			this.cache[ owner[ this.expando ] ] || {}
+		);
+	},
+	discard: function( owner ) {
+		if ( owner[ this.expando ] ) {
+			delete this.cache[ owner[ this.expando ] ];
+		}
+	}
+};
+var data_priv = new Data();
+
+var data_user = new Data();
+
+
+
+/*
+	Implementation Summary
+
+	1. Enforce API surface and semantic compatibility with 1.9.x branch
+	2. Improve the module's maintainability by reducing the storage
+		paths to a single mechanism.
+	3. Use the same single mechanism to support "private" and "user" data.
+	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+	5. Avoid exposing implementation details on user objects (eg. expando properties)
+	6. Provide a clear path for implementation upgrade to WeakMap in 2014
+*/
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+	rmultiDash = /([A-Z])/g;
+
+function dataAttr( elem, key, data ) {
+	var name;
+
+	// If nothing was found internally, try to fetch any
+	// data from the HTML5 data-* attribute
+	if ( data === undefined && elem.nodeType === 1 ) {
+		name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+		data = elem.getAttribute( name );
+
+		if ( typeof data === "string" ) {
+			try {
+				data = data === "true" ? true :
+					data === "false" ? false :
+					data === "null" ? null :
+					// Only convert to a number if it doesn't change the string
+					+data + "" === data ? +data :
+					rbrace.test( data ) ? jQuery.parseJSON( data ) :
+					data;
+			} catch( e ) {}
+
+			// Make sure we set the data so it isn't changed later
+			data_user.set( elem, key, data );
+		} else {
+			data = undefined;
+		}
+	}
+	return data;
+}
+
+jQuery.extend({
+	hasData: function( elem ) {
+		return data_user.hasData( elem ) || data_priv.hasData( elem );
+	},
+
+	data: function( elem, name, data ) {
+		return data_user.access( elem, name, data );
+	},
+
+	removeData: function( elem, name ) {
+		data_user.remove( elem, name );
+	},
+
+	// TODO: Now that all calls to _data and _removeData have been replaced
+	// with direct calls to data_priv methods, these can be deprecated.
+	_data: function( elem, name, data ) {
+		return data_priv.access( elem, name, data );
+	},
+
+	_removeData: function( elem, name ) {
+		data_priv.remove( elem, name );
+	}
+});
+
+jQuery.fn.extend({
+	data: function( key, value ) {
+		var i, name, data,
+			elem = this[ 0 ],
+			attrs = elem && elem.attributes;
+
+		// Gets all values
+		if ( key === undefined ) {
+			if ( this.length ) {
+				data = data_user.get( elem );
+
+				if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
+					i = attrs.length;
+					while ( i-- ) {
+
+						// Support: IE11+
+						// The attrs elements can be null (#14894)
+						if ( attrs[ i ] ) {
+							name = attrs[ i ].name;
+							if ( name.indexOf( "data-" ) === 0 ) {
+								name = jQuery.camelCase( name.slice(5) );
+								dataAttr( elem, name, data[ name ] );
+							}
+						}
+					}
+					data_priv.set( elem, "hasDataAttrs", true );
+				}
+			}
+
+			return data;
+		}
+
+		// Sets multiple values
+		if ( typeof key === "object" ) {
+			return this.each(function() {
+				data_user.set( this, key );
+			});
+		}
+
+		return access( this, function( value ) {
+			var data,
+				camelKey = jQuery.camelCase( key );
+
+			// The calling jQuery object (element matches) is not empty
+			// (and therefore has an element appears at this[ 0 ]) and the
+			// `value` parameter was not undefined. An empty jQuery object
+			// will result in `undefined` for elem = this[ 0 ] which will
+			// throw an exception if an attempt to read a data cache is made.
+			if ( elem && value === undefined ) {
+				// Attempt to get data from the cache
+				// with the key as-is
+				data = data_user.get( elem, key );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// Attempt to get data from the cache
+				// with the key camelized
+				data = data_user.get( elem, camelKey );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// Attempt to "discover" the data in
+				// HTML5 custom data-* attrs
+				data = dataAttr( elem, camelKey, undefined );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// We tried really hard, but the data doesn't exist.
+				return;
+			}
+
+			// Set the data...
+			this.each(function() {
+				// First, attempt to store a copy or reference of any
+				// data that might've been store with a camelCased key.
+				var data = data_user.get( this, camelKey );
+
+				// For HTML5 data-* attribute interop, we have to
+				// store property names with dashes in a camelCase form.
+				// This might not apply to all properties...*
+				data_user.set( this, camelKey, value );
+
+				// *... In the case of properties that might _actually_
+				// have dashes, we need to also store a copy of that
+				// unchanged property.
+				if ( key.indexOf("-") !== -1 && data !== undefined ) {
+					data_user.set( this, key, value );
+				}
+			});
+		}, null, value, arguments.length > 1, null, true );
+	},
+
+	removeData: function( key ) {
+		return this.each(function() {
+			data_user.remove( this, key );
+		});
+	}
+});
+
+
+jQuery.extend({
+	queue: function( elem, type, data ) {
+		var queue;
+
+		if ( elem ) {
+			type = ( type || "fx" ) + "queue";
+			queue = data_priv.get( elem, type );
+
+			// Speed up dequeue by getting out quickly if this is just a lookup
+			if ( data ) {
+				if ( !queue || jQuery.isArray( data ) ) {
+					queue = data_priv.access( elem, type, jQuery.makeArray(data) );
+				} else {
+					queue.push( data );
+				}
+			}
+			return queue || [];
+		}
+	},
+
+	dequeue: function( elem, type ) {
+		type = type || "fx";
+
+		var queue = jQuery.queue( elem, type ),
+			startLength = queue.length,
+			fn = queue.shift(),
+			hooks = jQuery._queueHooks( elem, type ),
+			next = function() {
+				jQuery.dequeue( elem, type );
+			};
+
+		// If the fx queue is dequeued, always remove the progress sentinel
+		if ( fn === "inprogress" ) {
+			fn = queue.shift();
+			startLength--;
+		}
+
+		if ( fn ) {
+
+			// Add a progress sentinel to prevent the fx queue from being
+			// automatically dequeued
+			if ( type === "fx" ) {
+				queue.unshift( "inprogress" );
+			}
+
+			// clear up the last queue stop function
+			delete hooks.stop;
+			fn.call( elem, next, hooks );
+		}
+
+		if ( !startLength && hooks ) {
+			hooks.empty.fire();
+		}
+	},
+
+	// not intended for public consumption - generates a queueHooks object, or returns the current one
+	_queueHooks: function( elem, type ) {
+		var key = type + "queueHooks";
+		return data_priv.get( elem, key ) || data_priv.access( elem, key, {
+			empty: jQuery.Callbacks("once memory").add(function() {
+				data_priv.remove( elem, [ type + "queue", key ] );
+			})
+		});
+	}
+});
+
+jQuery.fn.extend({
+	queue: function( type, data ) {
+		var setter = 2;
+
+		if ( typeof type !== "string" ) {
+			data = type;
+			type = "fx";
+			setter--;
+		}
+
+		if ( arguments.length < setter ) {
+			return jQuery.queue( this[0], type );
+		}
+
+		return data === undefined ?
+			this :
+			this.each(function() {
+				var queue = jQuery.queue( this, type, data );
+
+				// ensure a hooks for this queue
+				jQuery._queueHooks( this, type );
+
+				if ( type === "fx" && queue[0] !== "inprogress" ) {
+					jQuery.dequeue( this, type );
+				}
+			});
+	},
+	dequeue: function( type ) {
+		return this.each(function() {
+			jQuery.dequeue( this, type );
+		});
+	},
+	clearQueue: function( type ) {
+		return this.queue( type || "fx", [] );
+	},
+	// Get a promise resolved when queues of a certain type
+	// are emptied (fx is the type by default)
+	promise: function( type, obj ) {
+		var tmp,
+			count = 1,
+			defer = jQuery.Deferred(),
+			elements = this,
+			i = this.length,
+			resolve = function() {
+				if ( !( --count ) ) {
+					defer.resolveWith( elements, [ elements ] );
+				}
+			};
+
+		if ( typeof type !== "string" ) {
+			obj = type;
+			type = undefined;
+		}
+		type = type || "fx";
+
+		while ( i-- ) {
+			tmp = data_priv.get( elements[ i ], type + "queueHooks" );
+			if ( tmp && tmp.empty ) {
+				count++;
+				tmp.empty.add( resolve );
+			}
+		}
+		resolve();
+		return defer.promise( obj );
+	}
+});
+var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var isHidden = function( elem, el ) {
+		// isHidden might be called from jQuery#filter function;
+		// in that case, element will be second argument
+		elem = el || elem;
+		return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
+	};
+
+var rcheckableType = (/^(?:checkbox|radio)$/i);
+
+
+
+(function() {
+	var fragment = document.createDocumentFragment(),
+		div = fragment.appendChild( document.createElement( "div" ) ),
+		input = document.createElement( "input" );
+
+	// #11217 - WebKit loses check when the name is after the checked attribute
+	// Support: Windows Web Apps (WWA)
+	// `name` and `type` need .setAttribute for WWA
+	input.setAttribute( "type", "radio" );
+	input.setAttribute( "checked", "checked" );
+	input.setAttribute( "name", "t" );
+
+	div.appendChild( input );
+
+	// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3
+	// old WebKit doesn't clone checked state correctly in fragments
+	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+	// Make sure textarea (and checkbox) defaultValue is properly cloned
+	// Support: IE9-IE11+
+	div.innerHTML = "<textarea>x</textarea>";
+	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+})();
+var strundefined = typeof undefined;
+
+
+
+support.focusinBubbles = "onfocusin" in window;
+
+
+var
+	rkeyEvent = /^key/,
+	rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
+	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+	rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
+
+function returnTrue() {
+	return true;
+}
+
+function returnFalse() {
+	return false;
+}
+
+function safeActiveElement() {
+	try {
+		return document.activeElement;
+	} catch ( err ) { }
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+	global: {},
+
+	add: function( elem, types, handler, data, selector ) {
+
+		var handleObjIn, eventHandle, tmp,
+			events, t, handleObj,
+			special, handlers, type, namespaces, origType,
+			elemData = data_priv.get( elem );
+
+		// Don't attach events to noData or text/comment nodes (but allow plain objects)
+		if ( !elemData ) {
+			return;
+		}
+
+		// Caller can pass in an object of custom data in lieu of the handler
+		if ( handler.handler ) {
+			handleObjIn = handler;
+			handler = handleObjIn.handler;
+			selector = handleObjIn.selector;
+		}
+
+		// Make sure that the handler has a unique ID, used to find/remove it later
+		if ( !handler.guid ) {
+			handler.guid = jQuery.guid++;
+		}
+
+		// Init the element's event structure and main handler, if this is the first
+		if ( !(events = elemData.events) ) {
+			events = elemData.events = {};
+		}
+		if ( !(eventHandle = elemData.handle) ) {
+			eventHandle = elemData.handle = function( e ) {
+				// Discard the second event of a jQuery.event.trigger() and
+				// when an event is called after a page has unloaded
+				return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
+					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+			};
+		}
+
+		// Handle multiple events separated by a space
+		types = ( types || "" ).match( rnotwhite ) || [ "" ];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[t] ) || [];
+			type = origType = tmp[1];
+			namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+			// There *must* be a type, no attaching namespace-only handlers
+			if ( !type ) {
+				continue;
+			}
+
+			// If event changes its type, use the special event handlers for the changed type
+			special = jQuery.event.special[ type ] || {};
+
+			// If selector defined, determine special event api type, otherwise given type
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+
+			// Update special based on newly reset type
+			special = jQuery.event.special[ type ] || {};
+
+			// handleObj is passed to all event handlers
+			handleObj = jQuery.extend({
+				type: type,
+				origType: origType,
+				data: data,
+				handler: handler,
+				guid: handler.guid,
+				selector: selector,
+				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+				namespace: namespaces.join(".")
+			}, handleObjIn );
+
+			// Init the event handler queue if we're the first
+			if ( !(handlers = events[ type ]) ) {
+				handlers = events[ type ] = [];
+				handlers.delegateCount = 0;
+
+				// Only use addEventListener if the special events handler returns false
+				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+					if ( elem.addEventListener ) {
+						elem.addEventListener( type, eventHandle, false );
+					}
+				}
+			}
+
+			if ( special.add ) {
+				special.add.call( elem, handleObj );
+
+				if ( !handleObj.handler.guid ) {
+					handleObj.handler.guid = handler.guid;
+				}
+			}
+
+			// Add to the element's handler list, delegates in front
+			if ( selector ) {
+				handlers.splice( handlers.delegateCount++, 0, handleObj );
+			} else {
+				handlers.push( handleObj );
+			}
+
+			// Keep track of which events have ever been used, for event optimization
+			jQuery.event.global[ type ] = true;
+		}
+
+	},
+
+	// Detach an event or set of events from an element
+	remove: function( elem, types, handler, selector, mappedTypes ) {
+
+		var j, origCount, tmp,
+			events, t, handleObj,
+			special, handlers, type, namespaces, origType,
+			elemData = data_priv.hasData( elem ) && data_priv.get( elem );
+
+		if ( !elemData || !(events = elemData.events) ) {
+			return;
+		}
+
+		// Once for each type.namespace in types; type may be omitted
+		types = ( types || "" ).match( rnotwhite ) || [ "" ];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[t] ) || [];
+			type = origType = tmp[1];
+			namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+			// Unbind all events (on this namespace, if provided) for the element
+			if ( !type ) {
+				for ( type in events ) {
+					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+				}
+				continue;
+			}
+
+			special = jQuery.event.special[ type ] || {};
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+			handlers = events[ type ] || [];
+			tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
+
+			// Remove matching events
+			origCount = j = handlers.length;
+			while ( j-- ) {
+				handleObj = handlers[ j ];
+
+				if ( ( mappedTypes || origType === handleObj.origType ) &&
+					( !handler || handler.guid === handleObj.guid ) &&
+					( !tmp || tmp.test( handleObj.namespace ) ) &&
+					( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+					handlers.splice( j, 1 );
+
+					if ( handleObj.selector ) {
+						handlers.delegateCount--;
+					}
+					if ( special.remove ) {
+						special.remove.call( elem, handleObj );
+					}
+				}
+			}
+
+			// Remove generic event handler if we removed something and no more handlers exist
+			// (avoids potential for endless recursion during removal of special event handlers)
+			if ( origCount && !handlers.length ) {
+				if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+					jQuery.removeEvent( elem, type, elemData.handle );
+				}
+
+				delete events[ type ];
+			}
+		}
+
+		// Remove the expando if it's no longer used
+		if ( jQuery.isEmptyObject( events ) ) {
+			delete elemData.handle;
+			data_priv.remove( elem, "events" );
+		}
+	},
+
+	trigger: function( event, data, elem, onlyHandlers ) {
+
+		var i, cur, tmp, bubbleType, ontype, handle, special,
+			eventPath = [ elem || document ],
+			type = hasOwn.call( event, "type" ) ? event.type : event,
+			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
+
+		cur = tmp = elem = elem || document;
+
+		// Don't do events on text and comment nodes
+		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+			return;
+		}
+
+		// focus/blur morphs to focusin/out; ensure we're not firing them right now
+		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+			return;
+		}
+
+		if ( type.indexOf(".") >= 0 ) {
+			// Namespaced trigger; create a regexp to match event type in handle()
+			namespaces = type.split(".");
+			type = namespaces.shift();
+			namespaces.sort();
+		}
+		ontype = type.indexOf(":") < 0 && "on" + type;
+
+		// Caller can pass in a jQuery.Event object, Object, or just an event type string
+		event = event[ jQuery.expando ] ?
+			event :
+			new jQuery.Event( type, typeof event === "object" && event );
+
+		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+		event.isTrigger = onlyHandlers ? 2 : 3;
+		event.namespace = namespaces.join(".");
+		event.namespace_re = event.namespace ?
+			new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
+			null;
+
+		// Clean up the event in case it is being reused
+		event.result = undefined;
+		if ( !event.target ) {
+			event.target = elem;
+		}
+
+		// Clone any incoming data and prepend the event, creating the handler arg list
+		data = data == null ?
+			[ event ] :
+			jQuery.makeArray( data, [ event ] );
+
+		// Allow special events to draw outside the lines
+		special = jQuery.event.special[ type ] || {};
+		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+			return;
+		}
+
+		// Determine event propagation path in advance, per W3C events spec (#9951)
+		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+			bubbleType = special.delegateType || type;
+			if ( !rfocusMorph.test( bubbleType + type ) ) {
+				cur = cur.parentNode;
+			}
+			for ( ; cur; cur = cur.parentNode ) {
+				eventPath.push( cur );
+				tmp = cur;
+			}
+
+			// Only add window if we got to document (e.g., not plain obj or detached DOM)
+			if ( tmp === (elem.ownerDocument || document) ) {
+				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+			}
+		}
+
+		// Fire handlers on the event path
+		i = 0;
+		while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
+
+			event.type = i > 1 ?
+				bubbleType :
+				special.bindType || type;
+
+			// jQuery handler
+			handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
+			if ( handle ) {
+				handle.apply( cur, data );
+			}
+
+			// Native handler
+			handle = ontype && cur[ ontype ];
+			if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
+				event.result = handle.apply( cur, data );
+				if ( event.result === false ) {
+					event.preventDefault();
+				}
+			}
+		}
+		event.type = type;
+
+		// If nobody prevented the default action, do it now
+		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+			if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
+				jQuery.acceptData( elem ) ) {
+
+				// Call a native DOM method on the target with the same name name as the event.
+				// Don't do default actions on window, that's where global variables be (#6170)
+				if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+					// Don't re-trigger an onFOO event when we call its FOO() method
+					tmp = elem[ ontype ];
+
+					if ( tmp ) {
+						elem[ ontype ] = null;
+					}
+
+					// Prevent re-triggering of the same event, since we already bubbled it above
+					jQuery.event.triggered = type;
+					elem[ type ]();
+					jQuery.event.triggered = undefined;
+
+					if ( tmp ) {
+						elem[ ontype ] = tmp;
+					}
+				}
+			}
+		}
+
+		return event.result;
+	},
+
+	dispatch: function( event ) {
+
+		// Make a writable jQuery.Event from the native event object
+		event = jQuery.event.fix( event );
+
+		var i, j, ret, matched, handleObj,
+			handlerQueue = [],
+			args = slice.call( arguments ),
+			handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
+			special = jQuery.event.special[ event.type ] || {};
+
+		// Use the fix-ed jQuery.Event rather than the (read-only) native event
+		args[0] = event;
+		event.delegateTarget = this;
+
+		// Call the preDispatch hook for the mapped type, and let it bail if desired
+		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+			return;
+		}
+
+		// Determine handlers
+		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+		// Run delegates first; they may want to stop propagation beneath us
+		i = 0;
+		while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
+			event.currentTarget = matched.elem;
+
+			j = 0;
+			while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
+
+				// Triggered event must either 1) have no namespace, or
+				// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
+				if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
+
+					event.handleObj = handleObj;
+					event.data = handleObj.data;
+
+					ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+							.apply( matched.elem, args );
+
+					if ( ret !== undefined ) {
+						if ( (event.result = ret) === false ) {
+							event.preventDefault();
+							event.stopPropagation();
+						}
+					}
+				}
+			}
+		}
+
+		// Call the postDispatch hook for the mapped type
+		if ( special.postDispatch ) {
+			special.postDispatch.call( this, event );
+		}
+
+		return event.result;
+	},
+
+	handlers: function( event, handlers ) {
+		var i, matches, sel, handleObj,
+			handlerQueue = [],
+			delegateCount = handlers.delegateCount,
+			cur = event.target;
+
+		// Find delegate handlers
+		// Black-hole SVG <use> instance trees (#13180)
+		// Avoid non-left-click bubbling in Firefox (#3861)
+		if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
+
+			for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+				if ( cur.disabled !== true || event.type !== "click" ) {
+					matches = [];
+					for ( i = 0; i < delegateCount; i++ ) {
+						handleObj = handlers[ i ];
+
+						// Don't conflict with Object.prototype properties (#13203)
+						sel = handleObj.selector + " ";
+
+						if ( matches[ sel ] === undefined ) {
+							matches[ sel ] = handleObj.needsContext ?
+								jQuery( sel, this ).index( cur ) >= 0 :
+								jQuery.find( sel, this, null, [ cur ] ).length;
+						}
+						if ( matches[ sel ] ) {
+							matches.push( handleObj );
+						}
+					}
+					if ( matches.length ) {
+						handlerQueue.push({ elem: cur, handlers: matches });
+					}
+				}
+			}
+		}
+
+		// Add the remaining (directly-bound) handlers
+		if ( delegateCount < handlers.length ) {
+			handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
+		}
+
+		return handlerQueue;
+	},
+
+	// Includes some event props shared by KeyEvent and MouseEvent
+	props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+
+	fixHooks: {},
+
+	keyHooks: {
+		props: "char charCode key keyCode".split(" "),
+		filter: function( event, original ) {
+
+			// Add which for key events
+			if ( event.which == null ) {
+				event.which = original.charCode != null ? original.charCode : original.keyCode;
+			}
+
+			return event;
+		}
+	},
+
+	mouseHooks: {
+		props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+		filter: function( event, original ) {
+			var eventDoc, doc, body,
+				button = original.button;
+
+			// Calculate pageX/Y if missing and clientX/Y available
+			if ( event.pageX == null && original.clientX != null ) {
+				eventDoc = event.target.ownerDocument || document;
+				doc = eventDoc.documentElement;
+				body = eventDoc.body;
+
+				event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+				event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
+			}
+
+			// Add which for click: 1 === left; 2 === middle; 3 === right
+			// Note: button is not normalized, so don't use it
+			if ( !event.which && button !== undefined ) {
+				event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+			}
+
+			return event;
+		}
+	},
+
+	fix: function( event ) {
+		if ( event[ jQuery.expando ] ) {
+			return event;
+		}
+
+		// Create a writable copy of the event object and normalize some properties
+		var i, prop, copy,
+			type = event.type,
+			originalEvent = event,
+			fixHook = this.fixHooks[ type ];
+
+		if ( !fixHook ) {
+			this.fixHooks[ type ] = fixHook =
+				rmouseEvent.test( type ) ? this.mouseHooks :
+				rkeyEvent.test( type ) ? this.keyHooks :
+				{};
+		}
+		copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+		event = new jQuery.Event( originalEvent );
+
+		i = copy.length;
+		while ( i-- ) {
+			prop = copy[ i ];
+			event[ prop ] = originalEvent[ prop ];
+		}
+
+		// Support: Cordova 2.5 (WebKit) (#13255)
+		// All events should have a target; Cordova deviceready doesn't
+		if ( !event.target ) {
+			event.target = document;
+		}
+
+		// Support: Safari 6.0+, Chrome < 28
+		// Target should not be a text node (#504, #13143)
+		if ( event.target.nodeType === 3 ) {
+			event.target = event.target.parentNode;
+		}
+
+		return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
+	},
+
+	special: {
+		load: {
+			// Prevent triggered image.load events from bubbling to window.load
+			noBubble: true
+		},
+		focus: {
+			// Fire native event if possible so blur/focus sequence is correct
+			trigger: function() {
+				if ( this !== safeActiveElement() && this.focus ) {
+					this.focus();
+					return false;
+				}
+			},
+			delegateType: "focusin"
+		},
+		blur: {
+			trigger: function() {
+				if ( this === safeActiveElement() && this.blur ) {
+					this.blur();
+					return false;
+				}
+			},
+			delegateType: "focusout"
+		},
+		click: {
+			// For checkbox, fire native event so checked state will be right
+			trigger: function() {
+				if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
+					this.click();
+					return false;
+				}
+			},
+
+			// For cross-browser consistency, don't fire native .click() on links
+			_default: function( event ) {
+				return jQuery.nodeName( event.target, "a" );
+			}
+		},
+
+		beforeunload: {
+			postDispatch: function( event ) {
+
+				// Support: Firefox 20+
+				// Firefox doesn't alert if the returnValue field is not set.
+				if ( event.result !== undefined && event.originalEvent ) {
+					event.originalEvent.returnValue = event.result;
+				}
+			}
+		}
+	},
+
+	simulate: function( type, elem, event, bubble ) {
+		// Piggyback on a donor event to simulate a different one.
+		// Fake originalEvent to avoid donor's stopPropagation, but if the
+		// simulated event prevents default then we do the same on the donor.
+		var e = jQuery.extend(
+			new jQuery.Event(),
+			event,
+			{
+				type: type,
+				isSimulated: true,
+				originalEvent: {}
+			}
+		);
+		if ( bubble ) {
+			jQuery.event.trigger( e, null, elem );
+		} else {
+			jQuery.event.dispatch.call( elem, e );
+		}
+		if ( e.isDefaultPrevented() ) {
+			event.preventDefault();
+		}
+	}
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+	if ( elem.removeEventListener ) {
+		elem.removeEventListener( type, handle, false );
+	}
+};
+
+jQuery.Event = function( src, props ) {
+	// Allow instantiation without the 'new' keyword
+	if ( !(this instanceof jQuery.Event) ) {
+		return new jQuery.Event( src, props );
+	}
+
+	// Event object
+	if ( src && src.type ) {
+		this.originalEvent = src;
+		this.type = src.type;
+
+		// Events bubbling up the document may have been marked as prevented
+		// by a handler lower down the tree; reflect the correct value.
+		this.isDefaultPrevented = src.defaultPrevented ||
+				src.defaultPrevented === undefined &&
+				// Support: Android < 4.0
+				src.returnValue === false ?
+			returnTrue :
+			returnFalse;
+
+	// Event type
+	} else {
+		this.type = src;
+	}
+
+	// Put explicitly provided properties onto the event object
+	if ( props ) {
+		jQuery.extend( this, props );
+	}
+
+	// Create a timestamp if incoming event doesn't have one
+	this.timeStamp = src && src.timeStamp || jQuery.now();
+
+	// Mark it as fixed
+	this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+	isDefaultPrevented: returnFalse,
+	isPropagationStopped: returnFalse,
+	isImmediatePropagationStopped: returnFalse,
+
+	preventDefault: function() {
+		var e = this.originalEvent;
+
+		this.isDefaultPrevented = returnTrue;
+
+		if ( e && e.preventDefault ) {
+			e.preventDefault();
+		}
+	},
+	stopPropagation: function() {
+		var e = this.originalEvent;
+
+		this.isPropagationStopped = returnTrue;
+
+		if ( e && e.stopPropagation ) {
+			e.stopPropagation();
+		}
+	},
+	stopImmediatePropagation: function() {
+		var e = this.originalEvent;
+
+		this.isImmediatePropagationStopped = returnTrue;
+
+		if ( e && e.stopImmediatePropagation ) {
+			e.stopImmediatePropagation();
+		}
+
+		this.stopPropagation();
+	}
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// Support: Chrome 15+
+jQuery.each({
+	mouseenter: "mouseover",
+	mouseleave: "mouseout",
+	pointerenter: "pointerover",
+	pointerleave: "pointerout"
+}, function( orig, fix ) {
+	jQuery.event.special[ orig ] = {
+		delegateType: fix,
+		bindType: fix,
+
+		handle: function( event ) {
+			var ret,
+				target = this,
+				related = event.relatedTarget,
+				handleObj = event.handleObj;
+
+			// For mousenter/leave call the handler if related is outside the target.
+			// NB: No relatedTarget if the mouse left/entered the browser window
+			if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+				event.type = handleObj.origType;
+				ret = handleObj.handler.apply( this, arguments );
+				event.type = fix;
+			}
+			return ret;
+		}
+	};
+});
+
+// Create "bubbling" focus and blur events
+// Support: Firefox, Chrome, Safari
+if ( !support.focusinBubbles ) {
+	jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+		// Attach a single capturing handler on the document while someone wants focusin/focusout
+		var handler = function( event ) {
+				jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+			};
+
+		jQuery.event.special[ fix ] = {
+			setup: function() {
+				var doc = this.ownerDocument || this,
+					attaches = data_priv.access( doc, fix );
+
+				if ( !attaches ) {
+					doc.addEventListener( orig, handler, true );
+				}
+				data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
+			},
+			teardown: function() {
+				var doc = this.ownerDocument || this,
+					attaches = data_priv.access( doc, fix ) - 1;
+
+				if ( !attaches ) {
+					doc.removeEventListener( orig, handler, true );
+					data_priv.remove( doc, fix );
+
+				} else {
+					data_priv.access( doc, fix, attaches );
+				}
+			}
+		};
+	});
+}
+
+jQuery.fn.extend({
+
+	on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+		var origFn, type;
+
+		// Types can be a map of types/handlers
+		if ( typeof types === "object" ) {
+			// ( types-Object, selector, data )
+			if ( typeof selector !== "string" ) {
+				// ( types-Object, data )
+				data = data || selector;
+				selector = undefined;
+			}
+			for ( type in types ) {
+				this.on( type, selector, data, types[ type ], one );
+			}
+			return this;
+		}
+
+		if ( data == null && fn == null ) {
+			// ( types, fn )
+			fn = selector;
+			data = selector = undefined;
+		} else if ( fn == null ) {
+			if ( typeof selector === "string" ) {
+				// ( types, selector, fn )
+				fn = data;
+				data = undefined;
+			} else {
+				// ( types, data, fn )
+				fn = data;
+				data = selector;
+				selector = undefined;
+			}
+		}
+		if ( fn === false ) {
+			fn = returnFalse;
+		} else if ( !fn ) {
+			return this;
+		}
+
+		if ( one === 1 ) {
+			origFn = fn;
+			fn = function( event ) {
+				// Can use an empty set, since event contains the info
+				jQuery().off( event );
+				return origFn.apply( this, arguments );
+			};
+			// Use same guid so caller can remove using origFn
+			fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+		}
+		return this.each( function() {
+			jQuery.event.add( this, types, fn, data, selector );
+		});
+	},
+	one: function( types, selector, data, fn ) {
+		return this.on( types, selector, data, fn, 1 );
+	},
+	off: function( types, selector, fn ) {
+		var handleObj, type;
+		if ( types && types.preventDefault && types.handleObj ) {
+			// ( event )  dispatched jQuery.Event
+			handleObj = types.handleObj;
+			jQuery( types.delegateTarget ).off(
+				handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+				handleObj.selector,
+				handleObj.handler
+			);
+			return this;
+		}
+		if ( typeof types === "object" ) {
+			// ( types-object [, selector] )
+			for ( type in types ) {
+				this.off( type, selector, types[ type ] );
+			}
+			return this;
+		}
+		if ( selector === false || typeof selector === "function" ) {
+			// ( types [, fn] )
+			fn = selector;
+			selector = undefined;
+		}
+		if ( fn === false ) {
+			fn = returnFalse;
+		}
+		return this.each(function() {
+			jQuery.event.remove( this, types, fn, selector );
+		});
+	},
+
+	trigger: function( type, data ) {
+		return this.each(function() {
+			jQuery.event.trigger( type, data, this );
+		});
+	},
+	triggerHandler: function( type, data ) {
+		var elem = this[0];
+		if ( elem ) {
+			return jQuery.event.trigger( type, data, elem, true );
+		}
+	}
+});
+
+
+var
+	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+	rtagName = /<([\w:]+)/,
+	rhtml = /<|&#?\w+;/,
+	rnoInnerhtml = /<(?:script|style|link)/i,
+	// checked="checked" or checked
+	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+	rscriptType = /^$|\/(?:java|ecma)script/i,
+	rscriptTypeMasked = /^true\/(.*)/,
+	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
+
+	// We have to close these tags to support XHTML (#13200)
+	wrapMap = {
+
+		// Support: IE 9
+		option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+		thead: [ 1, "<table>", "</table>" ],
+		col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+		tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+		td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+		_default: [ 0, "", "" ]
+	};
+
+// Support: IE 9
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// Support: 1.x compatibility
+// Manipulating tables requires a tbody
+function manipulationTarget( elem, content ) {
+	return jQuery.nodeName( elem, "table" ) &&
+		jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
+
+		elem.getElementsByTagName("tbody")[0] ||
+			elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
+		elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+	elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
+	return elem;
+}
+function restoreScript( elem ) {
+	var match = rscriptTypeMasked.exec( elem.type );
+
+	if ( match ) {
+		elem.type = match[ 1 ];
+	} else {
+		elem.removeAttribute("type");
+	}
+
+	return elem;
+}
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+	var i = 0,
+		l = elems.length;
+
+	for ( ; i < l; i++ ) {
+		data_priv.set(
+			elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" )
+		);
+	}
+}
+
+function cloneCopyEvent( src, dest ) {
+	var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+	if ( dest.nodeType !== 1 ) {
+		return;
+	}
+
+	// 1. Copy private data: events, handlers, etc.
+	if ( data_priv.hasData( src ) ) {
+		pdataOld = data_priv.access( src );
+		pdataCur = data_priv.set( dest, pdataOld );
+		events = pdataOld.events;
+
+		if ( events ) {
+			delete pdataCur.handle;
+			pdataCur.events = {};
+
+			for ( type in events ) {
+				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+					jQuery.event.add( dest, type, events[ type ][ i ] );
+				}
+			}
+		}
+	}
+
+	// 2. Copy user data
+	if ( data_user.hasData( src ) ) {
+		udataOld = data_user.access( src );
+		udataCur = jQuery.extend( {}, udataOld );
+
+		data_user.set( dest, udataCur );
+	}
+}
+
+function getAll( context, tag ) {
+	var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) :
+			context.querySelectorAll ? context.querySelectorAll( tag || "*" ) :
+			[];
+
+	return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+		jQuery.merge( [ context ], ret ) :
+		ret;
+}
+
+// Support: IE >= 9
+function fixInput( src, dest ) {
+	var nodeName = dest.nodeName.toLowerCase();
+
+	// Fails to persist the checked state of a cloned checkbox or radio button.
+	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+		dest.checked = src.checked;
+
+	// Fails to return the selected option to the default selected state when cloning options
+	} else if ( nodeName === "input" || nodeName === "textarea" ) {
+		dest.defaultValue = src.defaultValue;
+	}
+}
+
+jQuery.extend({
+	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+		var i, l, srcElements, destElements,
+			clone = elem.cloneNode( true ),
+			inPage = jQuery.contains( elem.ownerDocument, elem );
+
+		// Support: IE >= 9
+		// Fix Cloning issues
+		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+				!jQuery.isXMLDoc( elem ) ) {
+
+			// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
+			destElements = getAll( clone );
+			srcElements = getAll( elem );
+
+			for ( i = 0, l = srcElements.length; i < l; i++ ) {
+				fixInput( srcElements[ i ], destElements[ i ] );
+			}
+		}
+
+		// Copy the events from the original to the clone
+		if ( dataAndEvents ) {
+			if ( deepDataAndEvents ) {
+				srcElements = srcElements || getAll( elem );
+				destElements = destElements || getAll( clone );
+
+				for ( i = 0, l = srcElements.length; i < l; i++ ) {
+					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+				}
+			} else {
+				cloneCopyEvent( elem, clone );
+			}
+		}
+
+		// Preserve script evaluation history
+		destElements = getAll( clone, "script" );
+		if ( destElements.length > 0 ) {
+			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+		}
+
+		// Return the cloned set
+		return clone;
+	},
+
+	buildFragment: function( elems, context, scripts, selection ) {
+		var elem, tmp, tag, wrap, contains, j,
+			fragment = context.createDocumentFragment(),
+			nodes = [],
+			i = 0,
+			l = elems.length;
+
+		for ( ; i < l; i++ ) {
+			elem = elems[ i ];
+
+			if ( elem || elem === 0 ) {
+
+				// Add nodes directly
+				if ( jQuery.type( elem ) === "object" ) {
+					// Support: QtWebKit
+					// jQuery.merge because push.apply(_, arraylike) throws
+					jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+				// Convert non-html into a text node
+				} else if ( !rhtml.test( elem ) ) {
+					nodes.push( context.createTextNode( elem ) );
+
+				// Convert html into DOM nodes
+				} else {
+					tmp = tmp || fragment.appendChild( context.createElement("div") );
+
+					// Deserialize a standard representation
+					tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+					wrap = wrapMap[ tag ] || wrapMap._default;
+					tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ];
+
+					// Descend through wrappers to the right content
+					j = wrap[ 0 ];
+					while ( j-- ) {
+						tmp = tmp.lastChild;
+					}
+
+					// Support: QtWebKit
+					// jQuery.merge because push.apply(_, arraylike) throws
+					jQuery.merge( nodes, tmp.childNodes );
+
+					// Remember the top-level container
+					tmp = fragment.firstChild;
+
+					// Fixes #12346
+					// Support: Webkit, IE
+					tmp.textContent = "";
+				}
+			}
+		}
+
+		// Remove wrapper from fragment
+		fragment.textContent = "";
+
+		i = 0;
+		while ( (elem = nodes[ i++ ]) ) {
+
+			// #4087 - If origin and destination elements are the same, and this is
+			// that element, do not do anything
+			if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
+				continue;
+			}
+
+			contains = jQuery.contains( elem.ownerDocument, elem );
+
+			// Append to fragment
+			tmp = getAll( fragment.appendChild( elem ), "script" );
+
+			// Preserve script evaluation history
+			if ( contains ) {
+				setGlobalEval( tmp );
+			}
+
+			// Capture executables
+			if ( scripts ) {
+				j = 0;
+				while ( (elem = tmp[ j++ ]) ) {
+					if ( rscriptType.test( elem.type || "" ) ) {
+						scripts.push( elem );
+					}
+				}
+			}
+		}
+
+		return fragment;
+	},
+
+	cleanData: function( elems ) {
+		var data, elem, type, key,
+			special = jQuery.event.special,
+			i = 0;
+
+		for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
+			if ( jQuery.acceptData( elem ) ) {
+				key = elem[ data_priv.expando ];
+
+				if ( key && (data = data_priv.cache[ key ]) ) {
+					if ( data.events ) {
+						for ( type in data.events ) {
+							if ( special[ type ] ) {
+								jQuery.event.remove( elem, type );
+
+							// This is a shortcut to avoid jQuery.event.remove's overhead
+							} else {
+								jQuery.removeEvent( elem, type, data.handle );
+							}
+						}
+					}
+					if ( data_priv.cache[ key ] ) {
+						// Discard any remaining `private` data
+						delete data_priv.cache[ key ];
+					}
+				}
+			}
+			// Discard any remaining `user` data
+			delete data_user.cache[ elem[ data_user.expando ] ];
+		}
+	}
+});
+
+jQuery.fn.extend({
+	text: function( value ) {
+		return access( this, function( value ) {
+			return value === undefined ?
+				jQuery.text( this ) :
+				this.empty().each(function() {
+					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+						this.textContent = value;
+					}
+				});
+		}, null, value, arguments.length );
+	},
+
+	append: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.appendChild( elem );
+			}
+		});
+	},
+
+	prepend: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.insertBefore( elem, target.firstChild );
+			}
+		});
+	},
+
+	before: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this );
+			}
+		});
+	},
+
+	after: function() {
+		return this.domManip( arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this.nextSibling );
+			}
+		});
+	},
+
+	remove: function( selector, keepData /* Internal Use Only */ ) {
+		var elem,
+			elems = selector ? jQuery.filter( selector, this ) : this,
+			i = 0;
+
+		for ( ; (elem = elems[i]) != null; i++ ) {
+			if ( !keepData && elem.nodeType === 1 ) {
+				jQuery.cleanData( getAll( elem ) );
+			}
+
+			if ( elem.parentNode ) {
+				if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
+					setGlobalEval( getAll( elem, "script" ) );
+				}
+				elem.parentNode.removeChild( elem );
+			}
+		}
+
+		return this;
+	},
+
+	empty: function() {
+		var elem,
+			i = 0;
+
+		for ( ; (elem = this[i]) != null; i++ ) {
+			if ( elem.nodeType === 1 ) {
+
+				// Prevent memory leaks
+				jQuery.cleanData( getAll( elem, false ) );
+
+				// Remove any remaining nodes
+				elem.textContent = "";
+			}
+		}
+
+		return this;
+	},
+
+	clone: function( dataAndEvents, deepDataAndEvents ) {
+		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+		return this.map(function() {
+			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+		});
+	},
+
+	html: function( value ) {
+		return access( this, function( value ) {
+			var elem = this[ 0 ] || {},
+				i = 0,
+				l = this.length;
+
+			if ( value === undefined && elem.nodeType === 1 ) {
+				return elem.innerHTML;
+			}
+
+			// See if we can take a shortcut and just use innerHTML
+			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+				value = value.replace( rxhtmlTag, "<$1></$2>" );
+
+				try {
+					for ( ; i < l; i++ ) {
+						elem = this[ i ] || {};
+
+						// Remove element nodes and prevent memory leaks
+						if ( elem.nodeType === 1 ) {
+							jQuery.cleanData( getAll( elem, false ) );
+							elem.innerHTML = value;
+						}
+					}
+
+					elem = 0;
+
+				// If using innerHTML throws an exception, use the fallback method
+				} catch( e ) {}
+			}
+
+			if ( elem ) {
+				this.empty().append( value );
+			}
+		}, null, value, arguments.length );
+	},
+
+	replaceWith: function() {
+		var arg = arguments[ 0 ];
+
+		// Make the changes, replacing each context element with the new content
+		this.domManip( arguments, function( elem ) {
+			arg = this.parentNode;
+
+			jQuery.cleanData( getAll( this ) );
+
+			if ( arg ) {
+				arg.replaceChild( elem, this );
+			}
+		});
+
+		// Force removal if there was no new content (e.g., from empty arguments)
+		return arg && (arg.length || arg.nodeType) ? this : this.remove();
+	},
+
+	detach: function( selector ) {
+		return this.remove( selector, true );
+	},
+
+	domManip: function( args, callback ) {
+
+		// Flatten any nested arrays
+		args = concat.apply( [], args );
+
+		var fragment, first, scripts, hasScripts, node, doc,
+			i = 0,
+			l = this.length,
+			set = this,
+			iNoClone = l - 1,
+			value = args[ 0 ],
+			isFunction = jQuery.isFunction( value );
+
+		// We can't cloneNode fragments that contain checked, in WebKit
+		if ( isFunction ||
+				( l > 1 && typeof value === "string" &&
+					!support.checkClone && rchecked.test( value ) ) ) {
+			return this.each(function( index ) {
+				var self = set.eq( index );
+				if ( isFunction ) {
+					args[ 0 ] = value.call( this, index, self.html() );
+				}
+				self.domManip( args, callback );
+			});
+		}
+
+		if ( l ) {
+			fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
+			first = fragment.firstChild;
+
+			if ( fragment.childNodes.length === 1 ) {
+				fragment = first;
+			}
+
+			if ( first ) {
+				scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+				hasScripts = scripts.length;
+
+				// Use the original fragment for the last item instead of the first because it can end up
+				// being emptied incorrectly in certain situations (#8070).
+				for ( ; i < l; i++ ) {
+					node = fragment;
+
+					if ( i !== iNoClone ) {
+						node = jQuery.clone( node, true, true );
+
+						// Keep references to cloned scripts for later restoration
+						if ( hasScripts ) {
+							// Support: QtWebKit
+							// jQuery.merge because push.apply(_, arraylike) throws
+							jQuery.merge( scripts, getAll( node, "script" ) );
+						}
+					}
+
+					callback.call( this[ i ], node, i );
+				}
+
+				if ( hasScripts ) {
+					doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+					// Reenable scripts
+					jQuery.map( scripts, restoreScript );
+
+					// Evaluate executable scripts on first document insertion
+					for ( i = 0; i < hasScripts; i++ ) {
+						node = scripts[ i ];
+						if ( rscriptType.test( node.type || "" ) &&
+							!data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
+
+							if ( node.src ) {
+								// Optional AJAX dependency, but won't run scripts if not present
+								if ( jQuery._evalUrl ) {
+									jQuery._evalUrl( node.src );
+								}
+							} else {
+								jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
+							}
+						}
+					}
+				}
+			}
+		}
+
+		return this;
+	}
+});
+
+jQuery.each({
+	appendTo: "append",
+	prependTo: "prepend",
+	insertBefore: "before",
+	insertAfter: "after",
+	replaceAll: "replaceWith"
+}, function( name, original ) {
+	jQuery.fn[ name ] = function( selector ) {
+		var elems,
+			ret = [],
+			insert = jQuery( selector ),
+			last = insert.length - 1,
+			i = 0;
+
+		for ( ; i <= last; i++ ) {
+			elems = i === last ? this : this.clone( true );
+			jQuery( insert[ i ] )[ original ]( elems );
+
+			// Support: QtWebKit
+			// .get() because push.apply(_, arraylike) throws
+			push.apply( ret, elems.get() );
+		}
+
+		return this.pushStack( ret );
+	};
+});
+
+
+var iframe,
+	elemdisplay = {};
+
+/**
+ * Retrieve the actual display of a element
+ * @param {String} name nodeName of the element
+ * @param {Object} doc Document object
+ */
+// Called only from within defaultDisplay
+function actualDisplay( name, doc ) {
+	var style,
+		elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
+
+		// getDefaultComputedStyle might be reliably used only on attached element
+		display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
+
+			// Use of this method is a temporary fix (more like optmization) until something better comes along,
+			// since it was removed from specification and supported only in FF
+			style.display : jQuery.css( elem[ 0 ], "display" );
+
+	// We don't have any data stored on the element,
+	// so use "detach" method as fast way to get rid of the element
+	elem.detach();
+
+	return display;
+}
+
+/**
+ * Try to determine the default display value of an element
+ * @param {String} nodeName
+ */
+function defaultDisplay( nodeName ) {
+	var doc = document,
+		display = elemdisplay[ nodeName ];
+
+	if ( !display ) {
+		display = actualDisplay( nodeName, doc );
+
+		// If the simple way fails, read from inside an iframe
+		if ( display === "none" || !display ) {
+
+			// Use the already-created iframe if possible
+			iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
+
+			// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
+			doc = iframe[ 0 ].contentDocument;
+
+			// Support: IE
+			doc.write();
+			doc.close();
+
+			display = actualDisplay( nodeName, doc );
+			iframe.detach();
+		}
+
+		// Store the correct default display
+		elemdisplay[ nodeName ] = display;
+	}
+
+	return display;
+}
+var rmargin = (/^margin/);
+
+var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+
+var getStyles = function( elem ) {
+		return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
+	};
+
+
+
+function curCSS( elem, name, computed ) {
+	var width, minWidth, maxWidth, ret,
+		style = elem.style;
+
+	computed = computed || getStyles( elem );
+
+	// Support: IE9
+	// getPropertyValue is only needed for .css('filter') in IE9, see #12537
+	if ( computed ) {
+		ret = computed.getPropertyValue( name ) || computed[ name ];
+	}
+
+	if ( computed ) {
+
+		if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+			ret = jQuery.style( elem, name );
+		}
+
+		// Support: iOS < 6
+		// A tribute to the "awesome hack by Dean Edwards"
+		// iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
+		// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
+		if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+			// Remember the original values
+			width = style.width;
+			minWidth = style.minWidth;
+			maxWidth = style.maxWidth;
+
+			// Put in the new values to get a computed value out
+			style.minWidth = style.maxWidth = style.width = ret;
+			ret = computed.width;
+
+			// Revert the changed values
+			style.width = width;
+			style.minWidth = minWidth;
+			style.maxWidth = maxWidth;
+		}
+	}
+
+	return ret !== undefined ?
+		// Support: IE
+		// IE returns zIndex value as an integer.
+		ret + "" :
+		ret;
+}
+
+
+function addGetHookIf( conditionFn, hookFn ) {
+	// Define the hook, we'll check on the first run if it's really needed.
+	return {
+		get: function() {
+			if ( conditionFn() ) {
+				// Hook not needed (or it's not possible to use it due to missing dependency),
+				// remove it.
+				// Since there are no other hooks for marginRight, remove the whole object.
+				delete this.get;
+				return;
+			}
+
+			// Hook needed; redefine it so that the support test is not executed again.
+
+			return (this.get = hookFn).apply( this, arguments );
+		}
+	};
+}
+
+
+(function() {
+	var pixelPositionVal, boxSizingReliableVal,
+		docElem = document.documentElement,
+		container = document.createElement( "div" ),
+		div = document.createElement( "div" );
+
+	if ( !div.style ) {
+		return;
+	}
+
+	div.style.backgroundClip = "content-box";
+	div.cloneNode( true ).style.backgroundClip = "";
+	support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+	container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" +
+		"position:absolute";
+	container.appendChild( div );
+
+	// Executing both pixelPosition & boxSizingReliable tests require only one layout
+	// so they're executed at the same time to save the second computation.
+	function computePixelPositionAndBoxSizingReliable() {
+		div.style.cssText =
+			// Support: Firefox<29, Android 2.3
+			// Vendor-prefix box-sizing
+			"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
+			"box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
+			"border:1px;padding:1px;width:4px;position:absolute";
+		div.innerHTML = "";
+		docElem.appendChild( container );
+
+		var divStyle = window.getComputedStyle( div, null );
+		pixelPositionVal = divStyle.top !== "1%";
+		boxSizingReliableVal = divStyle.width === "4px";
+
+		docElem.removeChild( container );
+	}
+
+	// Support: node.js jsdom
+	// Don't assume that getComputedStyle is a property of the global object
+	if ( window.getComputedStyle ) {
+		jQuery.extend( support, {
+			pixelPosition: function() {
+				// This test is executed only once but we still do memoizing
+				// since we can use the boxSizingReliable pre-computing.
+				// No need to check if the test was already performed, though.
+				computePixelPositionAndBoxSizingReliable();
+				return pixelPositionVal;
+			},
+			boxSizingReliable: function() {
+				if ( boxSizingReliableVal == null ) {
+					computePixelPositionAndBoxSizingReliable();
+				}
+				return boxSizingReliableVal;
+			},
+			reliableMarginRight: function() {
+				// Support: Android 2.3
+				// Check if div with explicit width and no margin-right incorrectly
+				// gets computed margin-right based on width of container. (#3333)
+				// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+				// This support function is only executed once so no memoizing is needed.
+				var ret,
+					marginDiv = div.appendChild( document.createElement( "div" ) );
+
+				// Reset CSS: box-sizing; display; margin; border; padding
+				marginDiv.style.cssText = div.style.cssText =
+					// Support: Firefox<29, Android 2.3
+					// Vendor-prefix box-sizing
+					"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
+					"box-sizing:content-box;display:block;margin:0;border:0;padding:0";
+				marginDiv.style.marginRight = marginDiv.style.width = "0";
+				div.style.width = "1px";
+				docElem.appendChild( container );
+
+				ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );
+
+				docElem.removeChild( container );
+
+				return ret;
+			}
+		});
+	}
+})();
+
+
+// A method for quickly swapping in/out CSS properties to get correct calculations.
+jQuery.swap = function( elem, options, callback, args ) {
+	var ret, name,
+		old = {};
+
+	// Remember the old values, and insert the new ones
+	for ( name in options ) {
+		old[ name ] = elem.style[ name ];
+		elem.style[ name ] = options[ name ];
+	}
+
+	ret = callback.apply( elem, args || [] );
+
+	// Revert the old values
+	for ( name in options ) {
+		elem.style[ name ] = old[ name ];
+	}
+
+	return ret;
+};
+
+
+var
+	// swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
+	// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+	rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
+	rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
+
+	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+	cssNormalTransform = {
+		letterSpacing: "0",
+		fontWeight: "400"
+	},
+
+	cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
+
+// return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( style, name ) {
+
+	// shortcut for names that are not vendor prefixed
+	if ( name in style ) {
+		return name;
+	}
+
+	// check for vendor prefixed names
+	var capName = name[0].toUpperCase() + name.slice(1),
+		origName = name,
+		i = cssPrefixes.length;
+
+	while ( i-- ) {
+		name = cssPrefixes[ i ] + capName;
+		if ( name in style ) {
+			return name;
+		}
+	}
+
+	return origName;
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+	var matches = rnumsplit.exec( value );
+	return matches ?
+		// Guard against undefined "subtract", e.g., when used as in cssHooks
+		Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
+		value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+	var i = extra === ( isBorderBox ? "border" : "content" ) ?
+		// If we already have the right measurement, avoid augmentation
+		4 :
+		// Otherwise initialize for horizontal or vertical properties
+		name === "width" ? 1 : 0,
+
+		val = 0;
+
+	for ( ; i < 4; i += 2 ) {
+		// both box models exclude margin, so add it if we want it
+		if ( extra === "margin" ) {
+			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+		}
+
+		if ( isBorderBox ) {
+			// border-box includes padding, so remove it if we want content
+			if ( extra === "content" ) {
+				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+			}
+
+			// at this point, extra isn't border nor margin, so remove border
+			if ( extra !== "margin" ) {
+				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+		} else {
+			// at this point, extra isn't content, so add padding
+			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+			// at this point, extra isn't content nor padding, so add border
+			if ( extra !== "padding" ) {
+				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+		}
+	}
+
+	return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+	// Start with offset property, which is equivalent to the border-box value
+	var valueIsBorderBox = true,
+		val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+		styles = getStyles( elem ),
+		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+	// some non-html elements return undefined for offsetWidth, so check for null/undefined
+	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+	if ( val <= 0 || val == null ) {
+		// Fall back to computed then uncomputed css if necessary
+		val = curCSS( elem, name, styles );
+		if ( val < 0 || val == null ) {
+			val = elem.style[ name ];
+		}
+
+		// Computed unit is not pixels. Stop here and return.
+		if ( rnumnonpx.test(val) ) {
+			return val;
+		}
+
+		// we need the check for style in case a browser which returns unreliable values
+		// for getComputedStyle silently falls back to the reliable elem.style
+		valueIsBorderBox = isBorderBox &&
+			( support.boxSizingReliable() || val === elem.style[ name ] );
+
+		// Normalize "", auto, and prepare for extra
+		val = parseFloat( val ) || 0;
+	}
+
+	// use the active box-sizing model to add/subtract irrelevant styles
+	return ( val +
+		augmentWidthOrHeight(
+			elem,
+			name,
+			extra || ( isBorderBox ? "border" : "content" ),
+			valueIsBorderBox,
+			styles
+		)
+	) + "px";
+}
+
+function showHide( elements, show ) {
+	var display, elem, hidden,
+		values = [],
+		index = 0,
+		length = elements.length;
+
+	for ( ; index < length; index++ ) {
+		elem = elements[ index ];
+		if ( !elem.style ) {
+			continue;
+		}
+
+		values[ index ] = data_priv.get( elem, "olddisplay" );
+		display = elem.style.display;
+		if ( show ) {
+			// Reset the inline display of this element to learn if it is
+			// being hidden by cascaded rules or not
+			if ( !values[ index ] && display === "none" ) {
+				elem.style.display = "";
+			}
+
+			// Set elements which have been overridden with display: none
+			// in a stylesheet to whatever the default browser style is
+			// for such an element
+			if ( elem.style.display === "" && isHidden( elem ) ) {
+				values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
+			}
+		} else {
+			hidden = isHidden( elem );
+
+			if ( display !== "none" || !hidden ) {
+				data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
+			}
+		}
+	}
+
+	// Set the display of most of the elements in a second loop
+	// to avoid the constant reflow
+	for ( index = 0; index < length; index++ ) {
+		elem = elements[ index ];
+		if ( !elem.style ) {
+			continue;
+		}
+		if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
+			elem.style.display = show ? values[ index ] || "" : "none";
+		}
+	}
+
+	return elements;
+}
+
+jQuery.extend({
+	// Add in style property hooks for overriding the default
+	// behavior of getting and setting a style property
+	cssHooks: {
+		opacity: {
+			get: function( elem, computed ) {
+				if ( computed ) {
+					// We should always get a number back from opacity
+					var ret = curCSS( elem, "opacity" );
+					return ret === "" ? "1" : ret;
+				}
+			}
+		}
+	},
+
+	// Don't automatically add "px" to these possibly-unitless properties
+	cssNumber: {
+		"columnCount": true,
+		"fillOpacity": true,
+		"flexGrow": true,
+		"flexShrink": true,
+		"fontWeight": true,
+		"lineHeight": true,
+		"opacity": true,
+		"order": true,
+		"orphans": true,
+		"widows": true,
+		"zIndex": true,
+		"zoom": true
+	},
+
+	// Add in properties whose names you wish to fix before
+	// setting or getting the value
+	cssProps: {
+		// normalize float css property
+		"float": "cssFloat"
+	},
+
+	// Get and set the style property on a DOM Node
+	style: function( elem, name, value, extra ) {
+		// Don't set styles on text and comment nodes
+		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+			return;
+		}
+
+		// Make sure that we're working with the right name
+		var ret, type, hooks,
+			origName = jQuery.camelCase( name ),
+			style = elem.style;
+
+		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
+
+		// gets hook for the prefixed version
+		// followed by the unprefixed version
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// Check if we're setting a value
+		if ( value !== undefined ) {
+			type = typeof value;
+
+			// convert relative number strings (+= or -=) to relative numbers. #7345
+			if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+				value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
+				// Fixes bug #9237
+				type = "number";
+			}
+
+			// Make sure that null and NaN values aren't set. See: #7116
+			if ( value == null || value !== value ) {
+				return;
+			}
+
+			// If a number was passed in, add 'px' to the (except for certain CSS properties)
+			if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+				value += "px";
+			}
+
+			// Fixes #8908, it can be done more correctly by specifying setters in cssHooks,
+			// but it would mean to define eight (for every problematic property) identical functions
+			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+				style[ name ] = "inherit";
+			}
+
+			// If a hook was provided, use that value, otherwise just set the specified value
+			if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
+				style[ name ] = value;
+			}
+
+		} else {
+			// If a hook was provided get the non-computed value from there
+			if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+				return ret;
+			}
+
+			// Otherwise just get the value from the style object
+			return style[ name ];
+		}
+	},
+
+	css: function( elem, name, extra, styles ) {
+		var val, num, hooks,
+			origName = jQuery.camelCase( name );
+
+		// Make sure that we're working with the right name
+		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
+
+		// gets hook for the prefixed version
+		// followed by the unprefixed version
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// If a hook was provided get the computed value from there
+		if ( hooks && "get" in hooks ) {
+			val = hooks.get( elem, true, extra );
+		}
+
+		// Otherwise, if a way to get the computed value exists, use that
+		if ( val === undefined ) {
+			val = curCSS( elem, name, styles );
+		}
+
+		//convert "normal" to computed value
+		if ( val === "normal" && name in cssNormalTransform ) {
+			val = cssNormalTransform[ name ];
+		}
+
+		// Return, converting to number if forced or a qualifier was provided and val looks numeric
+		if ( extra === "" || extra ) {
+			num = parseFloat( val );
+			return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
+		}
+		return val;
+	}
+});
+
+jQuery.each([ "height", "width" ], function( i, name ) {
+	jQuery.cssHooks[ name ] = {
+		get: function( elem, computed, extra ) {
+			if ( computed ) {
+				// certain elements can have dimension info if we invisibly show them
+				// however, it must have a current display style that would benefit from this
+				return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ?
+					jQuery.swap( elem, cssShow, function() {
+						return getWidthOrHeight( elem, name, extra );
+					}) :
+					getWidthOrHeight( elem, name, extra );
+			}
+		},
+
+		set: function( elem, value, extra ) {
+			var styles = extra && getStyles( elem );
+			return setPositiveNumber( elem, value, extra ?
+				augmentWidthOrHeight(
+					elem,
+					name,
+					extra,
+					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+					styles
+				) : 0
+			);
+		}
+	};
+});
+
+// Support: Android 2.3
+jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
+	function( elem, computed ) {
+		if ( computed ) {
+			// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+			// Work around by temporarily setting element display to inline-block
+			return jQuery.swap( elem, { "display": "inline-block" },
+				curCSS, [ elem, "marginRight" ] );
+		}
+	}
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each({
+	margin: "",
+	padding: "",
+	border: "Width"
+}, function( prefix, suffix ) {
+	jQuery.cssHooks[ prefix + suffix ] = {
+		expand: function( value ) {
+			var i = 0,
+				expanded = {},
+
+				// assumes a single number if not a string
+				parts = typeof value === "string" ? value.split(" ") : [ value ];
+
+			for ( ; i < 4; i++ ) {
+				expanded[ prefix + cssExpand[ i ] + suffix ] =
+					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+			}
+
+			return expanded;
+		}
+	};
+
+	if ( !rmargin.test( prefix ) ) {
+		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+	}
+});
+
+jQuery.fn.extend({
+	css: function( name, value ) {
+		return access( this, function( elem, name, value ) {
+			var styles, len,
+				map = {},
+				i = 0;
+
+			if ( jQuery.isArray( name ) ) {
+				styles = getStyles( elem );
+				len = name.length;
+
+				for ( ; i < len; i++ ) {
+					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+				}
+
+				return map;
+			}
+
+			return value !== undefined ?
+				jQuery.style( elem, name, value ) :
+				jQuery.css( elem, name );
+		}, name, value, arguments.length > 1 );
+	},
+	show: function() {
+		return showHide( this, true );
+	},
+	hide: function() {
+		return showHide( this );
+	},
+	toggle: function( state ) {
+		if ( typeof state === "boolean" ) {
+			return state ? this.show() : this.hide();
+		}
+
+		return this.each(function() {
+			if ( isHidden( this ) ) {
+				jQuery( this ).show();
+			} else {
+				jQuery( this ).hide();
+			}
+		});
+	}
+});
+
+
+function Tween( elem, options, prop, end, easing ) {
+	return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+	constructor: Tween,
+	init: function( elem, options, prop, end, easing, unit ) {
+		this.elem = elem;
+		this.prop = prop;
+		this.easing = easing || "swing";
+		this.options = options;
+		this.start = this.now = this.cur();
+		this.end = end;
+		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+	},
+	cur: function() {
+		var hooks = Tween.propHooks[ this.prop ];
+
+		return hooks && hooks.get ?
+			hooks.get( this ) :
+			Tween.propHooks._default.get( this );
+	},
+	run: function( percent ) {
+		var eased,
+			hooks = Tween.propHooks[ this.prop ];
+
+		if ( this.options.duration ) {
+			this.pos = eased = jQuery.easing[ this.easing ](
+				percent, this.options.duration * percent, 0, 1, this.options.duration
+			);
+		} else {
+			this.pos = eased = percent;
+		}
+		this.now = ( this.end - this.start ) * eased + this.start;
+
+		if ( this.options.step ) {
+			this.options.step.call( this.elem, this.now, this );
+		}
+
+		if ( hooks && hooks.set ) {
+			hooks.set( this );
+		} else {
+			Tween.propHooks._default.set( this );
+		}
+		return this;
+	}
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+	_default: {
+		get: function( tween ) {
+			var result;
+
+			if ( tween.elem[ tween.prop ] != null &&
+				(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
+				return tween.elem[ tween.prop ];
+			}
+
+			// passing an empty string as a 3rd parameter to .css will automatically
+			// attempt a parseFloat and fallback to a string if the parse fails
+			// so, simple values such as "10px" are parsed to Float.
+			// complex values such as "rotate(1rad)" are returned as is.
+			result = jQuery.css( tween.elem, tween.prop, "" );
+			// Empty strings, null, undefined and "auto" are converted to 0.
+			return !result || result === "auto" ? 0 : result;
+		},
+		set: function( tween ) {
+			// use step hook for back compat - use cssHook if its there - use .style if its
+			// available and use plain properties where available
+			if ( jQuery.fx.step[ tween.prop ] ) {
+				jQuery.fx.step[ tween.prop ]( tween );
+			} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
+				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+			} else {
+				tween.elem[ tween.prop ] = tween.now;
+			}
+		}
+	}
+};
+
+// Support: IE9
+// Panic based approach to setting things on disconnected nodes
+
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+	set: function( tween ) {
+		if ( tween.elem.nodeType && tween.elem.parentNode ) {
+			tween.elem[ tween.prop ] = tween.now;
+		}
+	}
+};
+
+jQuery.easing = {
+	linear: function( p ) {
+		return p;
+	},
+	swing: function( p ) {
+		return 0.5 - Math.cos( p * Math.PI ) / 2;
+	}
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back Compat <1.8 extension point
+jQuery.fx.step = {};
+
+
+
+
+var
+	fxNow, timerId,
+	rfxtypes = /^(?:toggle|show|hide)$/,
+	rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
+	rrun = /queueHooks$/,
+	animationPrefilters = [ defaultPrefilter ],
+	tweeners = {
+		"*": [ function( prop, value ) {
+			var tween = this.createTween( prop, value ),
+				target = tween.cur(),
+				parts = rfxnum.exec( value ),
+				unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+				// Starting value computation is required for potential unit mismatches
+				start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
+					rfxnum.exec( jQuery.css( tween.elem, prop ) ),
+				scale = 1,
+				maxIterations = 20;
+
+			if ( start && start[ 3 ] !== unit ) {
+				// Trust units reported by jQuery.css
+				unit = unit || start[ 3 ];
+
+				// Make sure we update the tween properties later on
+				parts = parts || [];
+
+				// Iteratively approximate from a nonzero starting point
+				start = +target || 1;
+
+				do {
+					// If previous iteration zeroed out, double until we get *something*
+					// Use a string for doubling factor so we don't accidentally see scale as unchanged below
+					scale = scale || ".5";
+
+					// Adjust and apply
+					start = start / scale;
+					jQuery.style( tween.elem, prop, start + unit );
+
+				// Update scale, tolerating zero or NaN from tween.cur()
+				// And breaking the loop if scale is unchanged or perfect, or if we've just had enough
+				} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
+			}
+
+			// Update tween properties
+			if ( parts ) {
+				start = tween.start = +start || +target || 0;
+				tween.unit = unit;
+				// If a +=/-= token was provided, we're doing a relative animation
+				tween.end = parts[ 1 ] ?
+					start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
+					+parts[ 2 ];
+			}
+
+			return tween;
+		} ]
+	};
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+	setTimeout(function() {
+		fxNow = undefined;
+	});
+	return ( fxNow = jQuery.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+	var which,
+		i = 0,
+		attrs = { height: type };
+
+	// if we include width, step value is 1 to do all cssExpand values,
+	// if we don't include width, step value is 2 to skip over Left and Right
+	includeWidth = includeWidth ? 1 : 0;
+	for ( ; i < 4 ; i += 2 - includeWidth ) {
+		which = cssExpand[ i ];
+		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+	}
+
+	if ( includeWidth ) {
+		attrs.opacity = attrs.width = type;
+	}
+
+	return attrs;
+}
+
+function createTween( value, prop, animation ) {
+	var tween,
+		collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
+		index = 0,
+		length = collection.length;
+	for ( ; index < length; index++ ) {
+		if ( (tween = collection[ index ].call( animation, prop, value )) ) {
+
+			// we're done with this property
+			return tween;
+		}
+	}
+}
+
+function defaultPrefilter( elem, props, opts ) {
+	/* jshint validthis: true */
+	var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
+		anim = this,
+		orig = {},
+		style = elem.style,
+		hidden = elem.nodeType && isHidden( elem ),
+		dataShow = data_priv.get( elem, "fxshow" );
+
+	// handle queue: false promises
+	if ( !opts.queue ) {
+		hooks = jQuery._queueHooks( elem, "fx" );
+		if ( hooks.unqueued == null ) {
+			hooks.unqueued = 0;
+			oldfire = hooks.empty.fire;
+			hooks.empty.fire = function() {
+				if ( !hooks.unqueued ) {
+					oldfire();
+				}
+			};
+		}
+		hooks.unqueued++;
+
+		anim.always(function() {
+			// doing this makes sure that the complete handler will be called
+			// before this completes
+			anim.always(function() {
+				hooks.unqueued--;
+				if ( !jQuery.queue( elem, "fx" ).length ) {
+					hooks.empty.fire();
+				}
+			});
+		});
+	}
+
+	// height/width overflow pass
+	if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
+		// Make sure that nothing sneaks out
+		// Record all 3 overflow attributes because IE9-10 do not
+		// change the overflow attribute when overflowX and
+		// overflowY are set to the same value
+		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+		// Set display property to inline-block for height/width
+		// animations on inline elements that are having width/height animated
+		display = jQuery.css( elem, "display" );
+
+		// Test default display if display is currently "none"
+		checkDisplay = display === "none" ?
+			data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
+
+		if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
+			style.display = "inline-block";
+		}
+	}
+
+	if ( opts.overflow ) {
+		style.overflow = "hidden";
+		anim.always(function() {
+			style.overflow = opts.overflow[ 0 ];
+			style.overflowX = opts.overflow[ 1 ];
+			style.overflowY = opts.overflow[ 2 ];
+		});
+	}
+
+	// show/hide pass
+	for ( prop in props ) {
+		value = props[ prop ];
+		if ( rfxtypes.exec( value ) ) {
+			delete props[ prop ];
+			toggle = toggle || value === "toggle";
+			if ( value === ( hidden ? "hide" : "show" ) ) {
+
+				// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
+				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+					hidden = true;
+				} else {
+					continue;
+				}
+			}
+			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+
+		// Any non-fx value stops us from restoring the original display value
+		} else {
+			display = undefined;
+		}
+	}
+
+	if ( !jQuery.isEmptyObject( orig ) ) {
+		if ( dataShow ) {
+			if ( "hidden" in dataShow ) {
+				hidden = dataShow.hidden;
+			}
+		} else {
+			dataShow = data_priv.access( elem, "fxshow", {} );
+		}
+
+		// store state if its toggle - enables .stop().toggle() to "reverse"
+		if ( toggle ) {
+			dataShow.hidden = !hidden;
+		}
+		if ( hidden ) {
+			jQuery( elem ).show();
+		} else {
+			anim.done(function() {
+				jQuery( elem ).hide();
+			});
+		}
+		anim.done(function() {
+			var prop;
+
+			data_priv.remove( elem, "fxshow" );
+			for ( prop in orig ) {
+				jQuery.style( elem, prop, orig[ prop ] );
+			}
+		});
+		for ( prop in orig ) {
+			tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+
+			if ( !( prop in dataShow ) ) {
+				dataShow[ prop ] = tween.start;
+				if ( hidden ) {
+					tween.end = tween.start;
+					tween.start = prop === "width" || prop === "height" ? 1 : 0;
+				}
+			}
+		}
+
+	// If this is a noop like .hide().hide(), restore an overwritten display value
+	} else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
+		style.display = display;
+	}
+}
+
+function propFilter( props, specialEasing ) {
+	var index, name, easing, value, hooks;
+
+	// camelCase, specialEasing and expand cssHook pass
+	for ( index in props ) {
+		name = jQuery.camelCase( index );
+		easing = specialEasing[ name ];
+		value = props[ index ];
+		if ( jQuery.isArray( value ) ) {
+			easing = value[ 1 ];
+			value = props[ index ] = value[ 0 ];
+		}
+
+		if ( index !== name ) {
+			props[ name ] = value;
+			delete props[ index ];
+		}
+
+		hooks = jQuery.cssHooks[ name ];
+		if ( hooks && "expand" in hooks ) {
+			value = hooks.expand( value );
+			delete props[ name ];
+
+			// not quite $.extend, this wont overwrite keys already present.
+			// also - reusing 'index' from above because we have the correct "name"
+			for ( index in value ) {
+				if ( !( index in props ) ) {
+					props[ index ] = value[ index ];
+					specialEasing[ index ] = easing;
+				}
+			}
+		} else {
+			specialEasing[ name ] = easing;
+		}
+	}
+}
+
+function Animation( elem, properties, options ) {
+	var result,
+		stopped,
+		index = 0,
+		length = animationPrefilters.length,
+		deferred = jQuery.Deferred().always( function() {
+			// don't match elem in the :animated selector
+			delete tick.elem;
+		}),
+		tick = function() {
+			if ( stopped ) {
+				return false;
+			}
+			var currentTime = fxNow || createFxNow(),
+				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+				// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
+				temp = remaining / animation.duration || 0,
+				percent = 1 - temp,
+				index = 0,
+				length = animation.tweens.length;
+
+			for ( ; index < length ; index++ ) {
+				animation.tweens[ index ].run( percent );
+			}
+
+			deferred.notifyWith( elem, [ animation, percent, remaining ]);
+
+			if ( percent < 1 && length ) {
+				return remaining;
+			} else {
+				deferred.resolveWith( elem, [ animation ] );
+				return false;
+			}
+		},
+		animation = deferred.promise({
+			elem: elem,
+			props: jQuery.extend( {}, properties ),
+			opts: jQuery.extend( true, { specialEasing: {} }, options ),
+			originalProperties: properties,
+			originalOptions: options,
+			startTime: fxNow || createFxNow(),
+			duration: options.duration,
+			tweens: [],
+			createTween: function( prop, end ) {
+				var tween = jQuery.Tween( elem, animation.opts, prop, end,
+						animation.opts.specialEasing[ prop ] || animation.opts.easing );
+				animation.tweens.push( tween );
+				return tween;
+			},
+			stop: function( gotoEnd ) {
+				var index = 0,
+					// if we are going to the end, we want to run all the tweens
+					// otherwise we skip this part
+					length = gotoEnd ? animation.tweens.length : 0;
+				if ( stopped ) {
+					return this;
+				}
+				stopped = true;
+				for ( ; index < length ; index++ ) {
+					animation.tweens[ index ].run( 1 );
+				}
+
+				// resolve when we played the last frame
+				// otherwise, reject
+				if ( gotoEnd ) {
+					deferred.resolveWith( elem, [ animation, gotoEnd ] );
+				} else {
+					deferred.rejectWith( elem, [ animation, gotoEnd ] );
+				}
+				return this;
+			}
+		}),
+		props = animation.props;
+
+	propFilter( props, animation.opts.specialEasing );
+
+	for ( ; index < length ; index++ ) {
+		result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
+		if ( result ) {
+			return result;
+		}
+	}
+
+	jQuery.map( props, createTween, animation );
+
+	if ( jQuery.isFunction( animation.opts.start ) ) {
+		animation.opts.start.call( elem, animation );
+	}
+
+	jQuery.fx.timer(
+		jQuery.extend( tick, {
+			elem: elem,
+			anim: animation,
+			queue: animation.opts.queue
+		})
+	);
+
+	// attach callbacks from options
+	return animation.progress( animation.opts.progress )
+		.done( animation.opts.done, animation.opts.complete )
+		.fail( animation.opts.fail )
+		.always( animation.opts.always );
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+	tweener: function( props, callback ) {
+		if ( jQuery.isFunction( props ) ) {
+			callback = props;
+			props = [ "*" ];
+		} else {
+			props = props.split(" ");
+		}
+
+		var prop,
+			index = 0,
+			length = props.length;
+
+		for ( ; index < length ; index++ ) {
+			prop = props[ index ];
+			tweeners[ prop ] = tweeners[ prop ] || [];
+			tweeners[ prop ].unshift( callback );
+		}
+	},
+
+	prefilter: function( callback, prepend ) {
+		if ( prepend ) {
+			animationPrefilters.unshift( callback );
+		} else {
+			animationPrefilters.push( callback );
+		}
+	}
+});
+
+jQuery.speed = function( speed, easing, fn ) {
+	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+		complete: fn || !fn && easing ||
+			jQuery.isFunction( speed ) && speed,
+		duration: speed,
+		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+	};
+
+	opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+		opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+	// normalize opt.queue - true/undefined/null -> "fx"
+	if ( opt.queue == null || opt.queue === true ) {
+		opt.queue = "fx";
+	}
+
+	// Queueing
+	opt.old = opt.complete;
+
+	opt.complete = function() {
+		if ( jQuery.isFunction( opt.old ) ) {
+			opt.old.call( this );
+		}
+
+		if ( opt.queue ) {
+			jQuery.dequeue( this, opt.queue );
+		}
+	};
+
+	return opt;
+};
+
+jQuery.fn.extend({
+	fadeTo: function( speed, to, easing, callback ) {
+
+		// show any hidden elements after setting opacity to 0
+		return this.filter( isHidden ).css( "opacity", 0 ).show()
+
+			// animate to the value specified
+			.end().animate({ opacity: to }, speed, easing, callback );
+	},
+	animate: function( prop, speed, easing, callback ) {
+		var empty = jQuery.isEmptyObject( prop ),
+			optall = jQuery.speed( speed, easing, callback ),
+			doAnimation = function() {
+				// Operate on a copy of prop so per-property easing won't be lost
+				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+				// Empty animations, or finishing resolves immediately
+				if ( empty || data_priv.get( this, "finish" ) ) {
+					anim.stop( true );
+				}
+			};
+			doAnimation.finish = doAnimation;
+
+		return empty || optall.queue === false ?
+			this.each( doAnimation ) :
+			this.queue( optall.queue, doAnimation );
+	},
+	stop: function( type, clearQueue, gotoEnd ) {
+		var stopQueue = function( hooks ) {
+			var stop = hooks.stop;
+			delete hooks.stop;
+			stop( gotoEnd );
+		};
+
+		if ( typeof type !== "string" ) {
+			gotoEnd = clearQueue;
+			clearQueue = type;
+			type = undefined;
+		}
+		if ( clearQueue && type !== false ) {
+			this.queue( type || "fx", [] );
+		}
+
+		return this.each(function() {
+			var dequeue = true,
+				index = type != null && type + "queueHooks",
+				timers = jQuery.timers,
+				data = data_priv.get( this );
+
+			if ( index ) {
+				if ( data[ index ] && data[ index ].stop ) {
+					stopQueue( data[ index ] );
+				}
+			} else {
+				for ( index in data ) {
+					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+						stopQueue( data[ index ] );
+					}
+				}
+			}
+
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
+					timers[ index ].anim.stop( gotoEnd );
+					dequeue = false;
+					timers.splice( index, 1 );
+				}
+			}
+
+			// start the next in the queue if the last step wasn't forced
+			// timers currently will call their complete callbacks, which will dequeue
+			// but only if they were gotoEnd
+			if ( dequeue || !gotoEnd ) {
+				jQuery.dequeue( this, type );
+			}
+		});
+	},
+	finish: function( type ) {
+		if ( type !== false ) {
+			type = type || "fx";
+		}
+		return this.each(function() {
+			var index,
+				data = data_priv.get( this ),
+				queue = data[ type + "queue" ],
+				hooks = data[ type + "queueHooks" ],
+				timers = jQuery.timers,
+				length = queue ? queue.length : 0;
+
+			// enable finishing flag on private data
+			data.finish = true;
+
+			// empty the queue first
+			jQuery.queue( this, type, [] );
+
+			if ( hooks && hooks.stop ) {
+				hooks.stop.call( this, true );
+			}
+
+			// look for any active animations, and finish them
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+					timers[ index ].anim.stop( true );
+					timers.splice( index, 1 );
+				}
+			}
+
+			// look for any animations in the old queue and finish them
+			for ( index = 0; index < length; index++ ) {
+				if ( queue[ index ] && queue[ index ].finish ) {
+					queue[ index ].finish.call( this );
+				}
+			}
+
+			// turn off finishing flag
+			delete data.finish;
+		});
+	}
+});
+
+jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
+	var cssFn = jQuery.fn[ name ];
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return speed == null || typeof speed === "boolean" ?
+			cssFn.apply( this, arguments ) :
+			this.animate( genFx( name, true ), speed, easing, callback );
+	};
+});
+
+// Generate shortcuts for custom animations
+jQuery.each({
+	slideDown: genFx("show"),
+	slideUp: genFx("hide"),
+	slideToggle: genFx("toggle"),
+	fadeIn: { opacity: "show" },
+	fadeOut: { opacity: "hide" },
+	fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return this.animate( props, speed, easing, callback );
+	};
+});
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+	var timer,
+		i = 0,
+		timers = jQuery.timers;
+
+	fxNow = jQuery.now();
+
+	for ( ; i < timers.length; i++ ) {
+		timer = timers[ i ];
+		// Checks the timer has not already been removed
+		if ( !timer() && timers[ i ] === timer ) {
+			timers.splice( i--, 1 );
+		}
+	}
+
+	if ( !timers.length ) {
+		jQuery.fx.stop();
+	}
+	fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+	jQuery.timers.push( timer );
+	if ( timer() ) {
+		jQuery.fx.start();
+	} else {
+		jQuery.timers.pop();
+	}
+};
+
+jQuery.fx.interval = 13;
+
+jQuery.fx.start = function() {
+	if ( !timerId ) {
+		timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
+	}
+};
+
+jQuery.fx.stop = function() {
+	clearInterval( timerId );
+	timerId = null;
+};
+
+jQuery.fx.speeds = {
+	slow: 600,
+	fast: 200,
+	// Default speed
+	_default: 400
+};
+
+
+// Based off of the plugin by Clint Helfers, with permission.
+// http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+	type = type || "fx";
+
+	return this.queue( type, function( next, hooks ) {
+		var timeout = setTimeout( next, time );
+		hooks.stop = function() {
+			clearTimeout( timeout );
+		};
+	});
+};
+
+
+(function() {
+	var input = document.createElement( "input" ),
+		select = document.createElement( "select" ),
+		opt = select.appendChild( document.createElement( "option" ) );
+
+	input.type = "checkbox";
+
+	// Support: iOS 5.1, Android 4.x, Android 2.3
+	// Check the default checkbox/radio value ("" on old WebKit; "on" elsewhere)
+	support.checkOn = input.value !== "";
+
+	// Must access the parent to make an option select properly
+	// Support: IE9, IE10
+	support.optSelected = opt.selected;
+
+	// Make sure that the options inside disabled selects aren't marked as disabled
+	// (WebKit marks them as disabled)
+	select.disabled = true;
+	support.optDisabled = !opt.disabled;
+
+	// Check if an input maintains its value after becoming a radio
+	// Support: IE9, IE10
+	input = document.createElement( "input" );
+	input.value = "t";
+	input.type = "radio";
+	support.radioValue = input.value === "t";
+})();
+
+
+var nodeHook, boolHook,
+	attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend({
+	attr: function( name, value ) {
+		return access( this, jQuery.attr, name, value, arguments.length > 1 );
+	},
+
+	removeAttr: function( name ) {
+		return this.each(function() {
+			jQuery.removeAttr( this, name );
+		});
+	}
+});
+
+jQuery.extend({
+	attr: function( elem, name, value ) {
+		var hooks, ret,
+			nType = elem.nodeType;
+
+		// don't get/set attributes on text, comment and attribute nodes
+		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		// Fallback to prop when attributes are not supported
+		if ( typeof elem.getAttribute === strundefined ) {
+			return jQuery.prop( elem, name, value );
+		}
+
+		// All attributes are lowercase
+		// Grab necessary hook if one is defined
+		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+			name = name.toLowerCase();
+			hooks = jQuery.attrHooks[ name ] ||
+				( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
+		}
+
+		if ( value !== undefined ) {
+
+			if ( value === null ) {
+				jQuery.removeAttr( elem, name );
+
+			} else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+				return ret;
+
+			} else {
+				elem.setAttribute( name, value + "" );
+				return value;
+			}
+
+		} else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+			return ret;
+
+		} else {
+			ret = jQuery.find.attr( elem, name );
+
+			// Non-existent attributes return null, we normalize to undefined
+			return ret == null ?
+				undefined :
+				ret;
+		}
+	},
+
+	removeAttr: function( elem, value ) {
+		var name, propName,
+			i = 0,
+			attrNames = value && value.match( rnotwhite );
+
+		if ( attrNames && elem.nodeType === 1 ) {
+			while ( (name = attrNames[i++]) ) {
+				propName = jQuery.propFix[ name ] || name;
+
+				// Boolean attributes get special treatment (#10870)
+				if ( jQuery.expr.match.bool.test( name ) ) {
+					// Set corresponding property to false
+					elem[ propName ] = false;
+				}
+
+				elem.removeAttribute( name );
+			}
+		}
+	},
+
+	attrHooks: {
+		type: {
+			set: function( elem, value ) {
+				if ( !support.radioValue && value === "radio" &&
+					jQuery.nodeName( elem, "input" ) ) {
+					// Setting the type on a radio button after the value resets the value in IE6-9
+					// Reset value to default in case type is set after value during creation
+					var val = elem.value;
+					elem.setAttribute( "type", value );
+					if ( val ) {
+						elem.value = val;
+					}
+					return value;
+				}
+			}
+		}
+	}
+});
+
+// Hooks for boolean attributes
+boolHook = {
+	set: function( elem, value, name ) {
+		if ( value === false ) {
+			// Remove boolean attributes when set to false
+			jQuery.removeAttr( elem, name );
+		} else {
+			elem.setAttribute( name, name );
+		}
+		return name;
+	}
+};
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+	var getter = attrHandle[ name ] || jQuery.find.attr;
+
+	attrHandle[ name ] = function( elem, name, isXML ) {
+		var ret, handle;
+		if ( !isXML ) {
+			// Avoid an infinite loop by temporarily removing this function from the getter
+			handle = attrHandle[ name ];
+			attrHandle[ name ] = ret;
+			ret = getter( elem, name, isXML ) != null ?
+				name.toLowerCase() :
+				null;
+			attrHandle[ name ] = handle;
+		}
+		return ret;
+	};
+});
+
+
+
+
+var rfocusable = /^(?:input|select|textarea|button)$/i;
+
+jQuery.fn.extend({
+	prop: function( name, value ) {
+		return access( this, jQuery.prop, name, value, arguments.length > 1 );
+	},
+
+	removeProp: function( name ) {
+		return this.each(function() {
+			delete this[ jQuery.propFix[ name ] || name ];
+		});
+	}
+});
+
+jQuery.extend({
+	propFix: {
+		"for": "htmlFor",
+		"class": "className"
+	},
+
+	prop: function( elem, name, value ) {
+		var ret, hooks, notxml,
+			nType = elem.nodeType;
+
+		// don't get/set properties on text, comment and attribute nodes
+		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+		if ( notxml ) {
+			// Fix name and attach hooks
+			name = jQuery.propFix[ name ] || name;
+			hooks = jQuery.propHooks[ name ];
+		}
+
+		if ( value !== undefined ) {
+			return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
+				ret :
+				( elem[ name ] = value );
+
+		} else {
+			return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
+				ret :
+				elem[ name ];
+		}
+	},
+
+	propHooks: {
+		tabIndex: {
+			get: function( elem ) {
+				return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
+					elem.tabIndex :
+					-1;
+			}
+		}
+	}
+});
+
+// Support: IE9+
+// Selectedness for an option in an optgroup can be inaccurate
+if ( !support.optSelected ) {
+	jQuery.propHooks.selected = {
+		get: function( elem ) {
+			var parent = elem.parentNode;
+			if ( parent && parent.parentNode ) {
+				parent.parentNode.selectedIndex;
+			}
+			return null;
+		}
+	};
+}
+
+jQuery.each([
+	"tabIndex",
+	"readOnly",
+	"maxLength",
+	"cellSpacing",
+	"cellPadding",
+	"rowSpan",
+	"colSpan",
+	"useMap",
+	"frameBorder",
+	"contentEditable"
+], function() {
+	jQuery.propFix[ this.toLowerCase() ] = this;
+});
+
+
+
+
+var rclass = /[\t\r\n\f]/g;
+
+jQuery.fn.extend({
+	addClass: function( value ) {
+		var classes, elem, cur, clazz, j, finalValue,
+			proceed = typeof value === "string" && value,
+			i = 0,
+			len = this.length;
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each(function( j ) {
+				jQuery( this ).addClass( value.call( this, j, this.className ) );
+			});
+		}
+
+		if ( proceed ) {
+			// The disjunction here is for better compressibility (see removeClass)
+			classes = ( value || "" ).match( rnotwhite ) || [];
+
+			for ( ; i < len; i++ ) {
+				elem = this[ i ];
+				cur = elem.nodeType === 1 && ( elem.className ?
+					( " " + elem.className + " " ).replace( rclass, " " ) :
+					" "
+				);
+
+				if ( cur ) {
+					j = 0;
+					while ( (clazz = classes[j++]) ) {
+						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+							cur += clazz + " ";
+						}
+					}
+
+					// only assign if different to avoid unneeded rendering.
+					finalValue = jQuery.trim( cur );
+					if ( elem.className !== finalValue ) {
+						elem.className = finalValue;
+					}
+				}
+			}
+		}
+
+		return this;
+	},
+
+	removeClass: function( value ) {
+		var classes, elem, cur, clazz, j, finalValue,
+			proceed = arguments.length === 0 || typeof value === "string" && value,
+			i = 0,
+			len = this.length;
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each(function( j ) {
+				jQuery( this ).removeClass( value.call( this, j, this.className ) );
+			});
+		}
+		if ( proceed ) {
+			classes = ( value || "" ).match( rnotwhite ) || [];
+
+			for ( ; i < len; i++ ) {
+				elem = this[ i ];
+				// This expression is here for better compressibility (see addClass)
+				cur = elem.nodeType === 1 && ( elem.className ?
+					( " " + elem.className + " " ).replace( rclass, " " ) :
+					""
+				);
+
+				if ( cur ) {
+					j = 0;
+					while ( (clazz = classes[j++]) ) {
+						// Remove *all* instances
+						while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
+							cur = cur.replace( " " + clazz + " ", " " );
+						}
+					}
+
+					// only assign if different to avoid unneeded rendering.
+					finalValue = value ? jQuery.trim( cur ) : "";
+					if ( elem.className !== finalValue ) {
+						elem.className = finalValue;
+					}
+				}
+			}
+		}
+
+		return this;
+	},
+
+	toggleClass: function( value, stateVal ) {
+		var type = typeof value;
+
+		if ( typeof stateVal === "boolean" && type === "string" ) {
+			return stateVal ? this.addClass( value ) : this.removeClass( value );
+		}
+
+		if ( jQuery.isFunction( value ) ) {
+			return this.each(function( i ) {
+				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+			});
+		}
+
+		return this.each(function() {
+			if ( type === "string" ) {
+				// toggle individual class names
+				var className,
+					i = 0,
+					self = jQuery( this ),
+					classNames = value.match( rnotwhite ) || [];
+
+				while ( (className = classNames[ i++ ]) ) {
+					// check each className given, space separated list
+					if ( self.hasClass( className ) ) {
+						self.removeClass( className );
+					} else {
+						self.addClass( className );
+					}
+				}
+
+			// Toggle whole class name
+			} else if ( type === strundefined || type === "boolean" ) {
+				if ( this.className ) {
+					// store className if set
+					data_priv.set( this, "__className__", this.className );
+				}
+
+				// If the element has a class name or if we're passed "false",
+				// then remove the whole classname (if there was one, the above saved it).
+				// Otherwise bring back whatever was previously saved (if anything),
+				// falling back to the empty string if nothing was stored.
+				this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || "";
+			}
+		});
+	},
+
+	hasClass: function( selector ) {
+		var className = " " + selector + " ",
+			i = 0,
+			l = this.length;
+		for ( ; i < l; i++ ) {
+			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
+				return true;
+			}
+		}
+
+		return false;
+	}
+});
+
+
+
+
+var rreturn = /\r/g;
+
+jQuery.fn.extend({
+	val: function( value ) {
+		var hooks, ret, isFunction,
+			elem = this[0];
+
+		if ( !arguments.length ) {
+			if ( elem ) {
+				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+					return ret;
+				}
+
+				ret = elem.value;
+
+				return typeof ret === "string" ?
+					// handle most common string cases
+					ret.replace(rreturn, "") :
+					// handle cases where value is null/undef or number
+					ret == null ? "" : ret;
+			}
+
+			return;
+		}
+
+		isFunction = jQuery.isFunction( value );
+
+		return this.each(function( i ) {
+			var val;
+
+			if ( this.nodeType !== 1 ) {
+				return;
+			}
+
+			if ( isFunction ) {
+				val = value.call( this, i, jQuery( this ).val() );
+			} else {
+				val = value;
+			}
+
+			// Treat null/undefined as ""; convert numbers to string
+			if ( val == null ) {
+				val = "";
+
+			} else if ( typeof val === "number" ) {
+				val += "";
+
+			} else if ( jQuery.isArray( val ) ) {
+				val = jQuery.map( val, function( value ) {
+					return value == null ? "" : value + "";
+				});
+			}
+
+			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+			// If set returns undefined, fall back to normal setting
+			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+				this.value = val;
+			}
+		});
+	}
+});
+
+jQuery.extend({
+	valHooks: {
+		option: {
+			get: function( elem ) {
+				var val = jQuery.find.attr( elem, "value" );
+				return val != null ?
+					val :
+					// Support: IE10-11+
+					// option.text throws exceptions (#14686, #14858)
+					jQuery.trim( jQuery.text( elem ) );
+			}
+		},
+		select: {
+			get: function( elem ) {
+				var value, option,
+					options = elem.options,
+					index = elem.selectedIndex,
+					one = elem.type === "select-one" || index < 0,
+					values = one ? null : [],
+					max = one ? index + 1 : options.length,
+					i = index < 0 ?
+						max :
+						one ? index : 0;
+
+				// Loop through all the selected options
+				for ( ; i < max; i++ ) {
+					option = options[ i ];
+
+					// IE6-9 doesn't update selected after form reset (#2551)
+					if ( ( option.selected || i === index ) &&
+							// Don't return options that are disabled or in a disabled optgroup
+							( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
+							( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+						// Get the specific value for the option
+						value = jQuery( option ).val();
+
+						// We don't need an array for one selects
+						if ( one ) {
+							return value;
+						}
+
+						// Multi-Selects return an array
+						values.push( value );
+					}
+				}
+
+				return values;
+			},
+
+			set: function( elem, value ) {
+				var optionSet, option,
+					options = elem.options,
+					values = jQuery.makeArray( value ),
+					i = options.length;
+
+				while ( i-- ) {
+					option = options[ i ];
+					if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) {
+						optionSet = true;
+					}
+				}
+
+				// force browsers to behave consistently when non-matching value is set
+				if ( !optionSet ) {
+					elem.selectedIndex = -1;
+				}
+				return values;
+			}
+		}
+	}
+});
+
+// Radios and checkboxes getter/setter
+jQuery.each([ "radio", "checkbox" ], function() {
+	jQuery.valHooks[ this ] = {
+		set: function( elem, value ) {
+			if ( jQuery.isArray( value ) ) {
+				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
+			}
+		}
+	};
+	if ( !support.checkOn ) {
+		jQuery.valHooks[ this ].get = function( elem ) {
+			// Support: Webkit
+			// "" is returned instead of "on" if a value isn't specified
+			return elem.getAttribute("value") === null ? "on" : elem.value;
+		};
+	}
+});
+
+
+
+
+// Return jQuery for attributes-only inclusion
+
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+	"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
+
+	// Handle event binding
+	jQuery.fn[ name ] = function( data, fn ) {
+		return arguments.length > 0 ?
+			this.on( name, null, data, fn ) :
+			this.trigger( name );
+	};
+});
+
+jQuery.fn.extend({
+	hover: function( fnOver, fnOut ) {
+		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+	},
+
+	bind: function( types, data, fn ) {
+		return this.on( types, null, data, fn );
+	},
+	unbind: function( types, fn ) {
+		return this.off( types, null, fn );
+	},
+
+	delegate: function( selector, types, data, fn ) {
+		return this.on( types, selector, data, fn );
+	},
+	undelegate: function( selector, types, fn ) {
+		// ( namespace ) or ( selector, types [, fn] )
+		return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
+	}
+});
+
+
+var nonce = jQuery.now();
+
+var rquery = (/\?/);
+
+
+
+// Support: Android 2.3
+// Workaround failure to string-cast null input
+jQuery.parseJSON = function( data ) {
+	return JSON.parse( data + "" );
+};
+
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+	var xml, tmp;
+	if ( !data || typeof data !== "string" ) {
+		return null;
+	}
+
+	// Support: IE9
+	try {
+		tmp = new DOMParser();
+		xml = tmp.parseFromString( data, "text/xml" );
+	} catch ( e ) {
+		xml = undefined;
+	}
+
+	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+		jQuery.error( "Invalid XML: " + data );
+	}
+	return xml;
+};
+
+
+var
+	// Document location
+	ajaxLocParts,
+	ajaxLocation,
+
+	rhash = /#.*$/,
+	rts = /([?&])_=[^&]*/,
+	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+	// #7653, #8125, #8152: local protocol detection
+	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+	rnoContent = /^(?:GET|HEAD)$/,
+	rprotocol = /^\/\//,
+	rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
+
+	/* Prefilters
+	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+	 * 2) These are called:
+	 *    - BEFORE asking for a transport
+	 *    - AFTER param serialization (s.data is a string if s.processData is true)
+	 * 3) key is the dataType
+	 * 4) the catchall symbol "*" can be used
+	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+	 */
+	prefilters = {},
+
+	/* Transports bindings
+	 * 1) key is the dataType
+	 * 2) the catchall symbol "*" can be used
+	 * 3) selection will start with transport dataType and THEN go to "*" if needed
+	 */
+	transports = {},
+
+	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+	allTypes = "*/".concat("*");
+
+// #8138, IE may throw an exception when accessing
+// a field from window.location if document.domain has been set
+try {
+	ajaxLocation = location.href;
+} catch( e ) {
+	// Use the href attribute of an A element
+	// since IE will modify it given document.location
+	ajaxLocation = document.createElement( "a" );
+	ajaxLocation.href = "";
+	ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+	// dataTypeExpression is optional and defaults to "*"
+	return function( dataTypeExpression, func ) {
+
+		if ( typeof dataTypeExpression !== "string" ) {
+			func = dataTypeExpression;
+			dataTypeExpression = "*";
+		}
+
+		var dataType,
+			i = 0,
+			dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
+
+		if ( jQuery.isFunction( func ) ) {
+			// For each dataType in the dataTypeExpression
+			while ( (dataType = dataTypes[i++]) ) {
+				// Prepend if requested
+				if ( dataType[0] === "+" ) {
+					dataType = dataType.slice( 1 ) || "*";
+					(structure[ dataType ] = structure[ dataType ] || []).unshift( func );
+
+				// Otherwise append
+				} else {
+					(structure[ dataType ] = structure[ dataType ] || []).push( func );
+				}
+			}
+		}
+	};
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+	var inspected = {},
+		seekingTransport = ( structure === transports );
+
+	function inspect( dataType ) {
+		var selected;
+		inspected[ dataType ] = true;
+		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+			if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+				options.dataTypes.unshift( dataTypeOrTransport );
+				inspect( dataTypeOrTransport );
+				return false;
+			} else if ( seekingTransport ) {
+				return !( selected = dataTypeOrTransport );
+			}
+		});
+		return selected;
+	}
+
+	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+	var key, deep,
+		flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+	for ( key in src ) {
+		if ( src[ key ] !== undefined ) {
+			( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
+		}
+	}
+	if ( deep ) {
+		jQuery.extend( true, target, deep );
+	}
+
+	return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+	var ct, type, finalDataType, firstDataType,
+		contents = s.contents,
+		dataTypes = s.dataTypes;
+
+	// Remove auto dataType and get content-type in the process
+	while ( dataTypes[ 0 ] === "*" ) {
+		dataTypes.shift();
+		if ( ct === undefined ) {
+			ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
+		}
+	}
+
+	// Check if we're dealing with a known content-type
+	if ( ct ) {
+		for ( type in contents ) {
+			if ( contents[ type ] && contents[ type ].test( ct ) ) {
+				dataTypes.unshift( type );
+				break;
+			}
+		}
+	}
+
+	// Check to see if we have a response for the expected dataType
+	if ( dataTypes[ 0 ] in responses ) {
+		finalDataType = dataTypes[ 0 ];
+	} else {
+		// Try convertible dataTypes
+		for ( type in responses ) {
+			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+				finalDataType = type;
+				break;
+			}
+			if ( !firstDataType ) {
+				firstDataType = type;
+			}
+		}
+		// Or just use first one
+		finalDataType = finalDataType || firstDataType;
+	}
+
+	// If we found a dataType
+	// We add the dataType to the list if needed
+	// and return the corresponding response
+	if ( finalDataType ) {
+		if ( finalDataType !== dataTypes[ 0 ] ) {
+			dataTypes.unshift( finalDataType );
+		}
+		return responses[ finalDataType ];
+	}
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+	var conv2, current, conv, tmp, prev,
+		converters = {},
+		// Work with a copy of dataTypes in case we need to modify it for conversion
+		dataTypes = s.dataTypes.slice();
+
+	// Create converters map with lowercased keys
+	if ( dataTypes[ 1 ] ) {
+		for ( conv in s.converters ) {
+			converters[ conv.toLowerCase() ] = s.converters[ conv ];
+		}
+	}
+
+	current = dataTypes.shift();
+
+	// Convert to each sequential dataType
+	while ( current ) {
+
+		if ( s.responseFields[ current ] ) {
+			jqXHR[ s.responseFields[ current ] ] = response;
+		}
+
+		// Apply the dataFilter if provided
+		if ( !prev && isSuccess && s.dataFilter ) {
+			response = s.dataFilter( response, s.dataType );
+		}
+
+		prev = current;
+		current = dataTypes.shift();
+
+		if ( current ) {
+
+		// There's only work to do if current dataType is non-auto
+			if ( current === "*" ) {
+
+				current = prev;
+
+			// Convert response if prev dataType is non-auto and differs from current
+			} else if ( prev !== "*" && prev !== current ) {
+
+				// Seek a direct converter
+				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+				// If none found, seek a pair
+				if ( !conv ) {
+					for ( conv2 in converters ) {
+
+						// If conv2 outputs current
+						tmp = conv2.split( " " );
+						if ( tmp[ 1 ] === current ) {
+
+							// If prev can be converted to accepted input
+							conv = converters[ prev + " " + tmp[ 0 ] ] ||
+								converters[ "* " + tmp[ 0 ] ];
+							if ( conv ) {
+								// Condense equivalence converters
+								if ( conv === true ) {
+									conv = converters[ conv2 ];
+
+								// Otherwise, insert the intermediate dataType
+								} else if ( converters[ conv2 ] !== true ) {
+									current = tmp[ 0 ];
+									dataTypes.unshift( tmp[ 1 ] );
+								}
+								break;
+							}
+						}
+					}
+				}
+
+				// Apply converter (if not an equivalence)
+				if ( conv !== true ) {
+
+					// Unless errors are allowed to bubble, catch and return them
+					if ( conv && s[ "throws" ] ) {
+						response = conv( response );
+					} else {
+						try {
+							response = conv( response );
+						} catch ( e ) {
+							return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
+						}
+					}
+				}
+			}
+		}
+	}
+
+	return { state: "success", data: response };
+}
+
+jQuery.extend({
+
+	// Counter for holding the number of active queries
+	active: 0,
+
+	// Last-Modified header cache for next request
+	lastModified: {},
+	etag: {},
+
+	ajaxSettings: {
+		url: ajaxLocation,
+		type: "GET",
+		isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+		global: true,
+		processData: true,
+		async: true,
+		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+		/*
+		timeout: 0,
+		data: null,
+		dataType: null,
+		username: null,
+		password: null,
+		cache: null,
+		throws: false,
+		traditional: false,
+		headers: {},
+		*/
+
+		accepts: {
+			"*": allTypes,
+			text: "text/plain",
+			html: "text/html",
+			xml: "application/xml, text/xml",
+			json: "application/json, text/javascript"
+		},
+
+		contents: {
+			xml: /xml/,
+			html: /html/,
+			json: /json/
+		},
+
+		responseFields: {
+			xml: "responseXML",
+			text: "responseText",
+			json: "responseJSON"
+		},
+
+		// Data converters
+		// Keys separate source (or catchall "*") and destination types with a single space
+		converters: {
+
+			// Convert anything to text
+			"* text": String,
+
+			// Text to html (true = no transformation)
+			"text html": true,
+
+			// Evaluate text as a json expression
+			"text json": jQuery.parseJSON,
+
+			// Parse text as xml
+			"text xml": jQuery.parseXML
+		},
+
+		// For options that shouldn't be deep extended:
+		// you can add your own custom options here if
+		// and when you create one that shouldn't be
+		// deep extended (see ajaxExtend)
+		flatOptions: {
+			url: true,
+			context: true
+		}
+	},
+
+	// Creates a full fledged settings object into target
+	// with both ajaxSettings and settings fields.
+	// If target is omitted, writes into ajaxSettings.
+	ajaxSetup: function( target, settings ) {
+		return settings ?
+
+			// Building a settings object
+			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+			// Extending ajaxSettings
+			ajaxExtend( jQuery.ajaxSettings, target );
+	},
+
+	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+	ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+	// Main method
+	ajax: function( url, options ) {
+
+		// If url is an object, simulate pre-1.5 signature
+		if ( typeof url === "object" ) {
+			options = url;
+			url = undefined;
+		}
+
+		// Force options to be an object
+		options = options || {};
+
+		var transport,
+			// URL without anti-cache param
+			cacheURL,
+			// Response headers
+			responseHeadersString,
+			responseHeaders,
+			// timeout handle
+			timeoutTimer,
+			// Cross-domain detection vars
+			parts,
+			// To know if global events are to be dispatched
+			fireGlobals,
+			// Loop variable
+			i,
+			// Create the final options object
+			s = jQuery.ajaxSetup( {}, options ),
+			// Callbacks context
+			callbackContext = s.context || s,
+			// Context for global events is callbackContext if it is a DOM node or jQuery collection
+			globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
+				jQuery( callbackContext ) :
+				jQuery.event,
+			// Deferreds
+			deferred = jQuery.Deferred(),
+			completeDeferred = jQuery.Callbacks("once memory"),
+			// Status-dependent callbacks
+			statusCode = s.statusCode || {},
+			// Headers (they are sent all at once)
+			requestHeaders = {},
+			requestHeadersNames = {},
+			// The jqXHR state
+			state = 0,
+			// Default abort message
+			strAbort = "canceled",
+			// Fake xhr
+			jqXHR = {
+				readyState: 0,
+
+				// Builds headers hashtable if needed
+				getResponseHeader: function( key ) {
+					var match;
+					if ( state === 2 ) {
+						if ( !responseHeaders ) {
+							responseHeaders = {};
+							while ( (match = rheaders.exec( responseHeadersString )) ) {
+								responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+							}
+						}
+						match = responseHeaders[ key.toLowerCase() ];
+					}
+					return match == null ? null : match;
+				},
+
+				// Raw string
+				getAllResponseHeaders: function() {
+					return state === 2 ? responseHeadersString : null;
+				},
+
+				// Caches the header
+				setRequestHeader: function( name, value ) {
+					var lname = name.toLowerCase();
+					if ( !state ) {
+						name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+						requestHeaders[ name ] = value;
+					}
+					return this;
+				},
+
+				// Overrides response content-type header
+				overrideMimeType: function( type ) {
+					if ( !state ) {
+						s.mimeType = type;
+					}
+					return this;
+				},
+
+				// Status-dependent callbacks
+				statusCode: function( map ) {
+					var code;
+					if ( map ) {
+						if ( state < 2 ) {
+							for ( code in map ) {
+								// Lazy-add the new callback in a way that preserves old ones
+								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+							}
+						} else {
+							// Execute the appropriate callbacks
+							jqXHR.always( map[ jqXHR.status ] );
+						}
+					}
+					return this;
+				},
+
+				// Cancel the request
+				abort: function( statusText ) {
+					var finalText = statusText || strAbort;
+					if ( transport ) {
+						transport.abort( finalText );
+					}
+					done( 0, finalText );
+					return this;
+				}
+			};
+
+		// Attach deferreds
+		deferred.promise( jqXHR ).complete = completeDeferred.add;
+		jqXHR.success = jqXHR.done;
+		jqXHR.error = jqXHR.fail;
+
+		// Remove hash character (#7531: and string promotion)
+		// Add protocol if not provided (prefilters might expect it)
+		// Handle falsy url in the settings object (#10093: consistency with old signature)
+		// We also use the url parameter if available
+		s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" )
+			.replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+		// Alias method option to type as per ticket #12004
+		s.type = options.method || options.type || s.method || s.type;
+
+		// Extract dataTypes list
+		s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
+
+		// A cross-domain request is in order when we have a protocol:host:port mismatch
+		if ( s.crossDomain == null ) {
+			parts = rurl.exec( s.url.toLowerCase() );
+			s.crossDomain = !!( parts &&
+				( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
+					( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
+						( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
+			);
+		}
+
+		// Convert data if not already a string
+		if ( s.data && s.processData && typeof s.data !== "string" ) {
+			s.data = jQuery.param( s.data, s.traditional );
+		}
+
+		// Apply prefilters
+		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+		// If request was aborted inside a prefilter, stop there
+		if ( state === 2 ) {
+			return jqXHR;
+		}
+
+		// We can fire global events as of now if asked to
+		fireGlobals = s.global;
+
+		// Watch for a new set of requests
+		if ( fireGlobals && jQuery.active++ === 0 ) {
+			jQuery.event.trigger("ajaxStart");
+		}
+
+		// Uppercase the type
+		s.type = s.type.toUpperCase();
+
+		// Determine if request has content
+		s.hasContent = !rnoContent.test( s.type );
+
+		// Save the URL in case we're toying with the If-Modified-Since
+		// and/or If-None-Match header later on
+		cacheURL = s.url;
+
+		// More options handling for requests with no content
+		if ( !s.hasContent ) {
+
+			// If data is available, append data to url
+			if ( s.data ) {
+				cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
+				// #9682: remove data so that it's not used in an eventual retry
+				delete s.data;
+			}
+
+			// Add anti-cache in url if needed
+			if ( s.cache === false ) {
+				s.url = rts.test( cacheURL ) ?
+
+					// If there is already a '_' parameter, set its value
+					cacheURL.replace( rts, "$1_=" + nonce++ ) :
+
+					// Otherwise add one to the end
+					cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
+			}
+		}
+
+		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+		if ( s.ifModified ) {
+			if ( jQuery.lastModified[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+			}
+			if ( jQuery.etag[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+			}
+		}
+
+		// Set the correct header, if data is being sent
+		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+			jqXHR.setRequestHeader( "Content-Type", s.contentType );
+		}
+
+		// Set the Accepts header for the server, depending on the dataType
+		jqXHR.setRequestHeader(
+			"Accept",
+			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+				s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+				s.accepts[ "*" ]
+		);
+
+		// Check for headers option
+		for ( i in s.headers ) {
+			jqXHR.setRequestHeader( i, s.headers[ i ] );
+		}
+
+		// Allow custom headers/mimetypes and early abort
+		if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+			// Abort if not done already and return
+			return jqXHR.abort();
+		}
+
+		// aborting is no longer a cancellation
+		strAbort = "abort";
+
+		// Install callbacks on deferreds
+		for ( i in { success: 1, error: 1, complete: 1 } ) {
+			jqXHR[ i ]( s[ i ] );
+		}
+
+		// Get transport
+		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+		// If no transport, we auto-abort
+		if ( !transport ) {
+			done( -1, "No Transport" );
+		} else {
+			jqXHR.readyState = 1;
+
+			// Send global event
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+			}
+			// Timeout
+			if ( s.async && s.timeout > 0 ) {
+				timeoutTimer = setTimeout(function() {
+					jqXHR.abort("timeout");
+				}, s.timeout );
+			}
+
+			try {
+				state = 1;
+				transport.send( requestHeaders, done );
+			} catch ( e ) {
+				// Propagate exception as error if not done
+				if ( state < 2 ) {
+					done( -1, e );
+				// Simply rethrow otherwise
+				} else {
+					throw e;
+				}
+			}
+		}
+
+		// Callback for when everything is done
+		function done( status, nativeStatusText, responses, headers ) {
+			var isSuccess, success, error, response, modified,
+				statusText = nativeStatusText;
+
+			// Called once
+			if ( state === 2 ) {
+				return;
+			}
+
+			// State is "done" now
+			state = 2;
+
+			// Clear timeout if it exists
+			if ( timeoutTimer ) {
+				clearTimeout( timeoutTimer );
+			}
+
+			// Dereference transport for early garbage collection
+			// (no matter how long the jqXHR object will be used)
+			transport = undefined;
+
+			// Cache response headers
+			responseHeadersString = headers || "";
+
+			// Set readyState
+			jqXHR.readyState = status > 0 ? 4 : 0;
+
+			// Determine if successful
+			isSuccess = status >= 200 && status < 300 || status === 304;
+
+			// Get response data
+			if ( responses ) {
+				response = ajaxHandleResponses( s, jqXHR, responses );
+			}
+
+			// Convert no matter what (that way responseXXX fields are always set)
+			response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+			// If successful, handle type chaining
+			if ( isSuccess ) {
+
+				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+				if ( s.ifModified ) {
+					modified = jqXHR.getResponseHeader("Last-Modified");
+					if ( modified ) {
+						jQuery.lastModified[ cacheURL ] = modified;
+					}
+					modified = jqXHR.getResponseHeader("etag");
+					if ( modified ) {
+						jQuery.etag[ cacheURL ] = modified;
+					}
+				}
+
+				// if no content
+				if ( status === 204 || s.type === "HEAD" ) {
+					statusText = "nocontent";
+
+				// if not modified
+				} else if ( status === 304 ) {
+					statusText = "notmodified";
+
+				// If we have data, let's convert it
+				} else {
+					statusText = response.state;
+					success = response.data;
+					error = response.error;
+					isSuccess = !error;
+				}
+			} else {
+				// We extract error from statusText
+				// then normalize statusText and status for non-aborts
+				error = statusText;
+				if ( status || !statusText ) {
+					statusText = "error";
+					if ( status < 0 ) {
+						status = 0;
+					}
+				}
+			}
+
+			// Set data for the fake xhr object
+			jqXHR.status = status;
+			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+			// Success/Error
+			if ( isSuccess ) {
+				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+			} else {
+				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+			}
+
+			// Status-dependent callbacks
+			jqXHR.statusCode( statusCode );
+			statusCode = undefined;
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+					[ jqXHR, s, isSuccess ? success : error ] );
+			}
+
+			// Complete
+			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+				// Handle the global AJAX counter
+				if ( !( --jQuery.active ) ) {
+					jQuery.event.trigger("ajaxStop");
+				}
+			}
+		}
+
+		return jqXHR;
+	},
+
+	getJSON: function( url, data, callback ) {
+		return jQuery.get( url, data, callback, "json" );
+	},
+
+	getScript: function( url, callback ) {
+		return jQuery.get( url, undefined, callback, "script" );
+	}
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+	jQuery[ method ] = function( url, data, callback, type ) {
+		// shift arguments if data argument was omitted
+		if ( jQuery.isFunction( data ) ) {
+			type = type || callback;
+			callback = data;
+			data = undefined;
+		}
+
+		return jQuery.ajax({
+			url: url,
+			type: method,
+			dataType: type,
+			data: data,
+			success: callback
+		});
+	};
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
+	jQuery.fn[ type ] = function( fn ) {
+		return this.on( type, fn );
+	};
+});
+
+
+jQuery._evalUrl = function( url ) {
+	return jQuery.ajax({
+		url: url,
+		type: "GET",
+		dataType: "script",
+		async: false,
+		global: false,
+		"throws": true
+	});
+};
+
+
+jQuery.fn.extend({
+	wrapAll: function( html ) {
+		var wrap;
+
+		if ( jQuery.isFunction( html ) ) {
+			return this.each(function( i ) {
+				jQuery( this ).wrapAll( html.call(this, i) );
+			});
+		}
+
+		if ( this[ 0 ] ) {
+
+			// The elements to wrap the target around
+			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+			if ( this[ 0 ].parentNode ) {
+				wrap.insertBefore( this[ 0 ] );
+			}
+
+			wrap.map(function() {
+				var elem = this;
+
+				while ( elem.firstElementChild ) {
+					elem = elem.firstElementChild;
+				}
+
+				return elem;
+			}).append( this );
+		}
+
+		return this;
+	},
+
+	wrapInner: function( html ) {
+		if ( jQuery.isFunction( html ) ) {
+			return this.each(function( i ) {
+				jQuery( this ).wrapInner( html.call(this, i) );
+			});
+		}
+
+		return this.each(function() {
+			var self = jQuery( this ),
+				contents = self.contents();
+
+			if ( contents.length ) {
+				contents.wrapAll( html );
+
+			} else {
+				self.append( html );
+			}
+		});
+	},
+
+	wrap: function( html ) {
+		var isFunction = jQuery.isFunction( html );
+
+		return this.each(function( i ) {
+			jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
+		});
+	},
+
+	unwrap: function() {
+		return this.parent().each(function() {
+			if ( !jQuery.nodeName( this, "body" ) ) {
+				jQuery( this ).replaceWith( this.childNodes );
+			}
+		}).end();
+	}
+});
+
+
+jQuery.expr.filters.hidden = function( elem ) {
+	// Support: Opera <= 12.12
+	// Opera reports offsetWidths and offsetHeights less than zero on some elements
+	return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
+};
+jQuery.expr.filters.visible = function( elem ) {
+	return !jQuery.expr.filters.hidden( elem );
+};
+
+
+
+
+var r20 = /%20/g,
+	rbracket = /\[\]$/,
+	rCRLF = /\r?\n/g,
+	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+	rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+	var name;
+
+	if ( jQuery.isArray( obj ) ) {
+		// Serialize array item.
+		jQuery.each( obj, function( i, v ) {
+			if ( traditional || rbracket.test( prefix ) ) {
+				// Treat each array item as a scalar.
+				add( prefix, v );
+
+			} else {
+				// Item is non-scalar (array or object), encode its numeric index.
+				buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
+			}
+		});
+
+	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
+		// Serialize object item.
+		for ( name in obj ) {
+			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+		}
+
+	} else {
+		// Serialize scalar item.
+		add( prefix, obj );
+	}
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+	var prefix,
+		s = [],
+		add = function( key, value ) {
+			// If value is a function, invoke it and return its value
+			value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
+			s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+		};
+
+	// Set traditional to true for jQuery <= 1.3.2 behavior.
+	if ( traditional === undefined ) {
+		traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
+	}
+
+	// If an array was passed in, assume that it is an array of form elements.
+	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+		// Serialize the form elements
+		jQuery.each( a, function() {
+			add( this.name, this.value );
+		});
+
+	} else {
+		// If traditional, encode the "old" way (the way 1.3.2 or older
+		// did it), otherwise encode params recursively.
+		for ( prefix in a ) {
+			buildParams( prefix, a[ prefix ], traditional, add );
+		}
+	}
+
+	// Return the resulting serialization
+	return s.join( "&" ).replace( r20, "+" );
+};
+
+jQuery.fn.extend({
+	serialize: function() {
+		return jQuery.param( this.serializeArray() );
+	},
+	serializeArray: function() {
+		return this.map(function() {
+			// Can add propHook for "elements" to filter or add form elements
+			var elements = jQuery.prop( this, "elements" );
+			return elements ? jQuery.makeArray( elements ) : this;
+		})
+		.filter(function() {
+			var type = this.type;
+
+			// Use .is( ":disabled" ) so that fieldset[disabled] works
+			return this.name && !jQuery( this ).is( ":disabled" ) &&
+				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+				( this.checked || !rcheckableType.test( type ) );
+		})
+		.map(function( i, elem ) {
+			var val = jQuery( this ).val();
+
+			return val == null ?
+				null :
+				jQuery.isArray( val ) ?
+					jQuery.map( val, function( val ) {
+						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+					}) :
+					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+		}).get();
+	}
+});
+
+
+jQuery.ajaxSettings.xhr = function() {
+	try {
+		return new XMLHttpRequest();
+	} catch( e ) {}
+};
+
+var xhrId = 0,
+	xhrCallbacks = {},
+	xhrSuccessStatus = {
+		// file protocol always yields status code 0, assume 200
+		0: 200,
+		// Support: IE9
+		// #1450: sometimes IE returns 1223 when it should be 204
+		1223: 204
+	},
+	xhrSupported = jQuery.ajaxSettings.xhr();
+
+// Support: IE9
+// Open requests must be manually aborted on unload (#5280)
+if ( window.ActiveXObject ) {
+	jQuery( window ).on( "unload", function() {
+		for ( var key in xhrCallbacks ) {
+			xhrCallbacks[ key ]();
+		}
+	});
+}
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport(function( options ) {
+	var callback;
+
+	// Cross domain only allowed if supported through XMLHttpRequest
+	if ( support.cors || xhrSupported && !options.crossDomain ) {
+		return {
+			send: function( headers, complete ) {
+				var i,
+					xhr = options.xhr(),
+					id = ++xhrId;
+
+				xhr.open( options.type, options.url, options.async, options.username, options.password );
+
+				// Apply custom fields if provided
+				if ( options.xhrFields ) {
+					for ( i in options.xhrFields ) {
+						xhr[ i ] = options.xhrFields[ i ];
+					}
+				}
+
+				// Override mime type if needed
+				if ( options.mimeType && xhr.overrideMimeType ) {
+					xhr.overrideMimeType( options.mimeType );
+				}
+
+				// X-Requested-With header
+				// For cross-domain requests, seeing as conditions for a preflight are
+				// akin to a jigsaw puzzle, we simply never set it to be sure.
+				// (it can always be set on a per-request basis or even using ajaxSetup)
+				// For same-domain requests, won't change header if already provided.
+				if ( !options.crossDomain && !headers["X-Requested-With"] ) {
+					headers["X-Requested-With"] = "XMLHttpRequest";
+				}
+
+				// Set headers
+				for ( i in headers ) {
+					xhr.setRequestHeader( i, headers[ i ] );
+				}
+
+				// Callback
+				callback = function( type ) {
+					return function() {
+						if ( callback ) {
+							delete xhrCallbacks[ id ];
+							callback = xhr.onload = xhr.onerror = null;
+
+							if ( type === "abort" ) {
+								xhr.abort();
+							} else if ( type === "error" ) {
+								complete(
+									// file: protocol always yields status 0; see #8605, #14207
+									xhr.status,
+									xhr.statusText
+								);
+							} else {
+								complete(
+									xhrSuccessStatus[ xhr.status ] || xhr.status,
+									xhr.statusText,
+									// Support: IE9
+									// Accessing binary-data responseText throws an exception
+									// (#11426)
+									typeof xhr.responseText === "string" ? {
+										text: xhr.responseText
+									} : undefined,
+									xhr.getAllResponseHeaders()
+								);
+							}
+						}
+					};
+				};
+
+				// Listen to events
+				xhr.onload = callback();
+				xhr.onerror = callback("error");
+
+				// Create the abort callback
+				callback = xhrCallbacks[ id ] = callback("abort");
+
+				try {
+					// Do send the request (this may raise an exception)
+					xhr.send( options.hasContent && options.data || null );
+				} catch ( e ) {
+					// #14683: Only rethrow if this hasn't been notified as an error yet
+					if ( callback ) {
+						throw e;
+					}
+				}
+			},
+
+			abort: function() {
+				if ( callback ) {
+					callback();
+				}
+			}
+		};
+	}
+});
+
+
+
+
+// Install script dataType
+jQuery.ajaxSetup({
+	accepts: {
+		script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+	},
+	contents: {
+		script: /(?:java|ecma)script/
+	},
+	converters: {
+		"text script": function( text ) {
+			jQuery.globalEval( text );
+			return text;
+		}
+	}
+});
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+	if ( s.cache === undefined ) {
+		s.cache = false;
+	}
+	if ( s.crossDomain ) {
+		s.type = "GET";
+	}
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+	// This transport only deals with cross domain requests
+	if ( s.crossDomain ) {
+		var script, callback;
+		return {
+			send: function( _, complete ) {
+				script = jQuery("<script>").prop({
+					async: true,
+					charset: s.scriptCharset,
+					src: s.url
+				}).on(
+					"load error",
+					callback = function( evt ) {
+						script.remove();
+						callback = null;
+						if ( evt ) {
+							complete( evt.type === "error" ? 404 : 200, evt.type );
+						}
+					}
+				);
+				document.head.appendChild( script[ 0 ] );
+			},
+			abort: function() {
+				if ( callback ) {
+					callback();
+				}
+			}
+		};
+	}
+});
+
+
+
+
+var oldCallbacks = [],
+	rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+	jsonp: "callback",
+	jsonpCallback: function() {
+		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+		this[ callback ] = true;
+		return callback;
+	}
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+	var callbackName, overwritten, responseContainer,
+		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+			"url" :
+			typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
+		);
+
+	// Handle iff the expected data type is "jsonp" or we have a parameter to set
+	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+		// Get callback name, remembering preexisting value associated with it
+		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+			s.jsonpCallback() :
+			s.jsonpCallback;
+
+		// Insert callback into url or form data
+		if ( jsonProp ) {
+			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+		} else if ( s.jsonp !== false ) {
+			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+		}
+
+		// Use data converter to retrieve json after script execution
+		s.converters["script json"] = function() {
+			if ( !responseContainer ) {
+				jQuery.error( callbackName + " was not called" );
+			}
+			return responseContainer[ 0 ];
+		};
+
+		// force json dataType
+		s.dataTypes[ 0 ] = "json";
+
+		// Install callback
+		overwritten = window[ callbackName ];
+		window[ callbackName ] = function() {
+			responseContainer = arguments;
+		};
+
+		// Clean-up function (fires after converters)
+		jqXHR.always(function() {
+			// Restore preexisting value
+			window[ callbackName ] = overwritten;
+
+			// Save back as free
+			if ( s[ callbackName ] ) {
+				// make sure that re-using the options doesn't screw things around
+				s.jsonpCallback = originalSettings.jsonpCallback;
+
+				// save the callback name for future use
+				oldCallbacks.push( callbackName );
+			}
+
+			// Call if it was a function and we have a response
+			if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+				overwritten( responseContainer[ 0 ] );
+			}
+
+			responseContainer = overwritten = undefined;
+		});
+
+		// Delegate to script
+		return "script";
+	}
+});
+
+
+
+
+// data: string of html
+// context (optional): If specified, the fragment will be created in this context, defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+	if ( !data || typeof data !== "string" ) {
+		return null;
+	}
+	if ( typeof context === "boolean" ) {
+		keepScripts = context;
+		context = false;
+	}
+	context = context || document;
+
+	var parsed = rsingleTag.exec( data ),
+		scripts = !keepScripts && [];
+
+	// Single tag
+	if ( parsed ) {
+		return [ context.createElement( parsed[1] ) ];
+	}
+
+	parsed = jQuery.buildFragment( [ data ], context, scripts );
+
+	if ( scripts && scripts.length ) {
+		jQuery( scripts ).remove();
+	}
+
+	return jQuery.merge( [], parsed.childNodes );
+};
+
+
+// Keep a copy of the old load method
+var _load = jQuery.fn.load;
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+	if ( typeof url !== "string" && _load ) {
+		return _load.apply( this, arguments );
+	}
+
+	var selector, type, response,
+		self = this,
+		off = url.indexOf(" ");
+
+	if ( off >= 0 ) {
+		selector = jQuery.trim( url.slice( off ) );
+		url = url.slice( 0, off );
+	}
+
+	// If it's a function
+	if ( jQuery.isFunction( params ) ) {
+
+		// We assume that it's the callback
+		callback = params;
+		params = undefined;
+
+	// Otherwise, build a param string
+	} else if ( params && typeof params === "object" ) {
+		type = "POST";
+	}
+
+	// If we have elements to modify, make the request
+	if ( self.length > 0 ) {
+		jQuery.ajax({
+			url: url,
+
+			// if "type" variable is undefined, then "GET" method will be used
+			type: type,
+			dataType: "html",
+			data: params
+		}).done(function( responseText ) {
+
+			// Save response for use in complete callback
+			response = arguments;
+
+			self.html( selector ?
+
+				// If a selector was specified, locate the right elements in a dummy div
+				// Exclude scripts to avoid IE 'Permission Denied' errors
+				jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+				// Otherwise use the full result
+				responseText );
+
+		}).complete( callback && function( jqXHR, status ) {
+			self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
+		});
+	}
+
+	return this;
+};
+
+
+
+
+jQuery.expr.filters.animated = function( elem ) {
+	return jQuery.grep(jQuery.timers, function( fn ) {
+		return elem === fn.elem;
+	}).length;
+};
+
+
+
+
+var docElem = window.document.documentElement;
+
+/**
+ * Gets a window from an element
+ */
+function getWindow( elem ) {
+	return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
+}
+
+jQuery.offset = {
+	setOffset: function( elem, options, i ) {
+		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+			position = jQuery.css( elem, "position" ),
+			curElem = jQuery( elem ),
+			props = {};
+
+		// Set position first, in-case top/left are set even on static elem
+		if ( position === "static" ) {
+			elem.style.position = "relative";
+		}
+
+		curOffset = curElem.offset();
+		curCSSTop = jQuery.css( elem, "top" );
+		curCSSLeft = jQuery.css( elem, "left" );
+		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+			( curCSSTop + curCSSLeft ).indexOf("auto") > -1;
+
+		// Need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+		if ( calculatePosition ) {
+			curPosition = curElem.position();
+			curTop = curPosition.top;
+			curLeft = curPosition.left;
+
+		} else {
+			curTop = parseFloat( curCSSTop ) || 0;
+			curLeft = parseFloat( curCSSLeft ) || 0;
+		}
+
+		if ( jQuery.isFunction( options ) ) {
+			options = options.call( elem, i, curOffset );
+		}
+
+		if ( options.top != null ) {
+			props.top = ( options.top - curOffset.top ) + curTop;
+		}
+		if ( options.left != null ) {
+			props.left = ( options.left - curOffset.left ) + curLeft;
+		}
+
+		if ( "using" in options ) {
+			options.using.call( elem, props );
+
+		} else {
+			curElem.css( props );
+		}
+	}
+};
+
+jQuery.fn.extend({
+	offset: function( options ) {
+		if ( arguments.length ) {
+			return options === undefined ?
+				this :
+				this.each(function( i ) {
+					jQuery.offset.setOffset( this, options, i );
+				});
+		}
+
+		var docElem, win,
+			elem = this[ 0 ],
+			box = { top: 0, left: 0 },
+			doc = elem && elem.ownerDocument;
+
+		if ( !doc ) {
+			return;
+		}
+
+		docElem = doc.documentElement;
+
+		// Make sure it's not a disconnected DOM node
+		if ( !jQuery.contains( docElem, elem ) ) {
+			return box;
+		}
+
+		// If we don't have gBCR, just use 0,0 rather than error
+		// BlackBerry 5, iOS 3 (original iPhone)
+		if ( typeof elem.getBoundingClientRect !== strundefined ) {
+			box = elem.getBoundingClientRect();
+		}
+		win = getWindow( doc );
+		return {
+			top: box.top + win.pageYOffset - docElem.clientTop,
+			left: box.left + win.pageXOffset - docElem.clientLeft
+		};
+	},
+
+	position: function() {
+		if ( !this[ 0 ] ) {
+			return;
+		}
+
+		var offsetParent, offset,
+			elem = this[ 0 ],
+			parentOffset = { top: 0, left: 0 };
+
+		// Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
+		if ( jQuery.css( elem, "position" ) === "fixed" ) {
+			// We assume that getBoundingClientRect is available when computed position is fixed
+			offset = elem.getBoundingClientRect();
+
+		} else {
+			// Get *real* offsetParent
+			offsetParent = this.offsetParent();
+
+			// Get correct offsets
+			offset = this.offset();
+			if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+				parentOffset = offsetParent.offset();
+			}
+
+			// Add offsetParent borders
+			parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
+			parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
+		}
+
+		// Subtract parent offsets and element margins
+		return {
+			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+		};
+	},
+
+	offsetParent: function() {
+		return this.map(function() {
+			var offsetParent = this.offsetParent || docElem;
+
+			while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
+				offsetParent = offsetParent.offsetParent;
+			}
+
+			return offsetParent || docElem;
+		});
+	}
+});
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+	var top = "pageYOffset" === prop;
+
+	jQuery.fn[ method ] = function( val ) {
+		return access( this, function( elem, method, val ) {
+			var win = getWindow( elem );
+
+			if ( val === undefined ) {
+				return win ? win[ prop ] : elem[ method ];
+			}
+
+			if ( win ) {
+				win.scrollTo(
+					!top ? val : window.pageXOffset,
+					top ? val : window.pageYOffset
+				);
+
+			} else {
+				elem[ method ] = val;
+			}
+		}, method, val, arguments.length, null );
+	};
+});
+
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// getComputedStyle returns percent when specified for top/left/bottom/right
+// rather than make the css module depend on the offset module, we just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+		function( elem, computed ) {
+			if ( computed ) {
+				computed = curCSS( elem, prop );
+				// if curCSS returns percentage, fallback to offset
+				return rnumnonpx.test( computed ) ?
+					jQuery( elem ).position()[ prop ] + "px" :
+					computed;
+			}
+		}
+	);
+});
+
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
+		// margin is only for outerHeight, outerWidth
+		jQuery.fn[ funcName ] = function( margin, value ) {
+			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+			return access( this, function( elem, type, value ) {
+				var doc;
+
+				if ( jQuery.isWindow( elem ) ) {
+					// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
+					// isn't a whole lot we can do. See pull request at this URL for discussion:
+					// https://github.com/jquery/jquery/pull/764
+					return elem.document.documentElement[ "client" + name ];
+				}
+
+				// Get document width or height
+				if ( elem.nodeType === 9 ) {
+					doc = elem.documentElement;
+
+					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+					// whichever is greatest
+					return Math.max(
+						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+						elem.body[ "offset" + name ], doc[ "offset" + name ],
+						doc[ "client" + name ]
+					);
+				}
+
+				return value === undefined ?
+					// Get width or height on the element, requesting but not forcing parseFloat
+					jQuery.css( elem, type, extra ) :
+
+					// Set width or height on the element
+					jQuery.style( elem, type, value, extra );
+			}, type, chainable ? margin : undefined, chainable, null );
+		};
+	});
+});
+
+
+// The number of elements contained in the matched element set
+jQuery.fn.size = function() {
+	return this.length;
+};
+
+jQuery.fn.andSelf = jQuery.fn.addBack;
+
+
+
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+	define( "jquery", [], function() {
+		return jQuery;
+	});
+}
+
+
+
+
+var
+	// Map over jQuery in case of overwrite
+	_jQuery = window.jQuery,
+
+	// Map over the $ in case of overwrite
+	_$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+	if ( window.$ === jQuery ) {
+		window.$ = _$;
+	}
+
+	if ( deep && window.jQuery === jQuery ) {
+		window.jQuery = _jQuery;
+	}
+
+	return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in
+// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( typeof noGlobal === strundefined ) {
+	window.jQuery = window.$ = jQuery;
+}
+
+
+
+
+return jQuery;
+
+}));
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile-1.4.5.css
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile-1.4.5.css	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile-1.4.5.css	(revision 101)
@@ -0,0 +1,4716 @@
+/*!
+* jQuery Mobile 1.4.5
+* Git HEAD hash: 68e55e78b292634d3991c795f06f5e37a512decc <> Date: Fri Oct 31 2014 17:33:30 UTC
+* http://jquerymobile.com
+*
+* Copyright 2010, 2014 jQuery Foundation, Inc. and othercontributors
+* Released under the MIT license.
+* http://jquery.org/license
+*
+*/
+
+
+/* SVG icons */
+.ui-icon-action:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M9%2C5v3l5-4L9%2C0v3c0%2C0-5%2C0-5%2C7C6%2C5%2C9%2C5%2C9%2C5z%20M11%2C12H2V5h1l2-2H0v11h13V7l-2%2C2V12z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-alert:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C0L0%2C12h14L7%2C0z%20M7%2C11c-0.553%2C0-1-0.447-1-1s0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1S7.553%2C11%2C7%2C11z%20M7%2C8%20C6.447%2C8%2C6%2C7.553%2C6%2C7V5c0-0.553%2C0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1v2C8%2C7.553%2C7.553%2C8%2C7%2C8z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-d-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C3%2011%2C0%203.5%2C7.5%200%2C4%200%2C14%2010%2C14%206.5%2C10.5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-d-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2210.5%2C7.5%203%2C0%200%2C3%207.5%2C10.5%204%2C14%2014%2C14%2014%2C4%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-d:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%229%2C7%209%2C0%205%2C0%205%2C7%200%2C7%207%2C14%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C5%207%2C0%200%2C7%207%2C14%207%2C9%2014%2C9%2014%2C5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C7%207%2C0%207%2C5%200%2C5%200%2C9%207%2C9%207%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-u-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C11%206.5%2C3.5%2010%2C0%200%2C0%200%2C10%203.5%2C6.5%2011%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-u-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C0%204%2C0%207.5%2C3.5%200%2C11%203%2C14%2010.5%2C6.5%2014%2C10%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-u:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C0%200%2C7%205%2C7%205%2C14%209%2C14%209%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-audio:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.018px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014.018%2014%22%20style%3D%22enable-background%3Anew%200%200%2014.018%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M1%2C4C0.447%2C4%2C0%2C4.447%2C0%2C5v4c0%2C0.553%2C0.447%2C1%2C1%2C1h1l4%2C4V0L2%2C4H1z%20M10.346%2C7c0-1.699-1.042-3.154-2.546-3.867L6.982%2C4.68%20C7.885%2C5.107%2C8.51%2C5.98%2C8.51%2C7S7.885%2C8.893%2C6.982%2C9.32L7.8%2C10.867C9.304%2C10.154%2C10.346%2C8.699%2C10.346%2C7z%20M9.447%2C0.017L8.618%2C1.586%20C10.723%2C2.584%2C12.182%2C4.621%2C12.182%2C7s-1.459%2C4.416-3.563%2C5.414l0.829%2C1.569c2.707-1.283%2C4.57-3.925%2C4.57-6.983%20S12.154%2C1.3%2C9.447%2C0.017z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-back:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M5%2C3V0L1%2C4l4%2C4V5c0%2C0%2C6%2C0%2C6%2C3s-5%2C4-5%2C4v2c0%2C0%2C7-1%2C7-6C13%2C4%2C8%2C3%2C5%2C3z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-bars:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M1%2C4h12c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H1C0.447%2C2%2C0%2C2.447%2C0%2C3S0.447%2C4%2C1%2C4z%20M13%2C6H1%20C0.447%2C6%2C0%2C6.447%2C0%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H1c-0.553%2C0-1%2C0.447-1%2C1%20s0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-bullets:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M5%2C4h8c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H5C4.447%2C2%2C4%2C2.447%2C4%2C3S4.447%2C4%2C5%2C4z%20M13%2C6H5%20C4.447%2C6%2C4%2C6.447%2C4%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H5c-0.553%2C0-1%2C0.447-1%2C1%20s0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%20M1%2C2C0.447%2C2%2C0%2C2.447%2C0%2C3s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C2%2C1%2C2z%20M1%2C6%20C0.447%2C6%2C0%2C6.447%2C0%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1s1-0.447%2C1-1C2%2C6.447%2C1.553%2C6%2C1%2C6z%20M1%2C10c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1s1-0.447%2C1-1%20S1.553%2C10%2C1%2C10z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-calendar:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M0%2C8h2V6H0V8z%20M3%2C8h2V6H3V8z%20M6%2C8h2V6H6V8z%20M9%2C8h2V6H9V8z%20M12%2C8h2V6h-2V8z%20M0%2C11h2V9H0V11z%20M3%2C11h2V9H3V11z%20M6%2C11h2V9H6V11z%20%20M9%2C11h2V9H9V11z%20M12%2C11h2V9h-2V11z%20M0%2C14h2v-2H0V14z%20M3%2C14h2v-2H3V14z%20M6%2C14h2v-2H6V14z%20M9%2C14h2v-2H9V14z%20M12%2C1%20c0-0.553-0.447-1-1-1s-1%2C0.447-1%2C1H4c0-0.553-0.447-1-1-1S2%2C0.447%2C2%2C1H0v4h14V1H12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-camera:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M12%2C2.5H9.908c-0.206-0.581-0.756-1-1.408-1h-3c-0.652%2C0-1.202%2C0.419-1.408%2C1H2c-1.104%2C0-2%2C0.896-2%2C2%20v6c0%2C1.104%2C0.896%2C2%2C2%2C2h10c1.104%2C0%2C2-0.896%2C2-2v-6C14%2C3.396%2C13.104%2C2.5%2C12%2C2.5z%20M7%2C10.5c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3C10%2C9.156%2C8.657%2C10.5%2C7%2C10.5z%20M7%2C5.5c-1.104%2C0-2%2C0.896-2%2C2c0%2C1.104%2C0.896%2C2%2C2%2C2c1.104%2C0%2C2-0.896%2C2-2%20C9%2C6.396%2C8.104%2C5.5%2C7%2C5.5z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-carat-d:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2211.949%2C3.404%207%2C8.354%202.05%2C3.404%20-0.071%2C5.525%207%2C12.596%2014.07%2C5.525%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-carat-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2210.596%2C11.949%205.646%2C7%2010.596%2C2.05%208.475%2C-0.071%201.404%2C7%208.475%2C14.07%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-carat-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%223.404%2C2.051%208.354%2C7%203.404%2C11.95%205.525%2C14.07%2012.596%2C7%205.525%2C-0.071%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-carat-u:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%222.051%2C10.596%207%2C5.646%2011.95%2C10.596%2014.07%2C8.475%207%2C1.404%20-0.071%2C8.475%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-check:after,
+/* Used ui-checkbox-on twice to increase specificity. If active state has background-image for gradient this rule overrides. */
+html .ui-btn.ui-checkbox-on.ui-checkbox-on:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2214%2C4%2011%2C1%205.003%2C6.997%203%2C5%200%2C8%204.966%2C13%204.983%2C12.982%205%2C13%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-clock:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C12c-2.762%2C0-5-2.238-5-5s2.238-5%2C5-5s5%2C2.238%2C5%2C5%20S9.762%2C12%2C7%2C12z%20M9%2C6H8V4c0-0.553-0.447-1-1-1S6%2C3.447%2C6%2C4v3c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1S9.553%2C6%2C9%2C6z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-cloud:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M14%2C9.5c0-0.793-0.465-1.473-1.134-1.795C12.949%2C7.484%2C13%2C7.249%2C13%2C7c0-1.104-0.896-2-2-2%20c-0.158%2C0-0.311%2C0.023-0.457%2C0.058C9.816%2C3.549%2C8.286%2C2.5%2C6.5%2C2.5c-2.33%2C0-4.224%2C1.777-4.454%2C4.046C0.883%2C6.76%2C0%2C7.773%2C0%2C9%20c0%2C1.381%2C1.119%2C2.5%2C2.5%2C2.5h10v-0.07C13.361%2C11.206%2C14%2C10.432%2C14%2C9.5z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-comment:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M12%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v7c0%2C1.104%2C0.896%2C2%2C2%2C2h1v3l3-3h6c1.104%2C0%2C2-0.896%2C2-2V2C14%2C0.896%2C13.104%2C0%2C12%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-delete:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C3%2011%2C0%207%2C4%203%2C0%200%2C3%204%2C7%200%2C11%203%2C14%207%2C10%2011%2C14%2014%2C11%2010%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-edit:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M1%2C10l-1%2C4l4-1l7-7L8%2C3L1%2C10z%20M11%2C0L9%2C2l3%2C3l2-2L11%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-eye:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C2C3%2C2%2C0%2C7%2C0%2C7s3%2C5%2C7%2C5s7-5%2C7-5S11%2C2%2C7%2C2z%20M7%2C10c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3C10%2C8.656%2C8.657%2C10%2C7%2C10z%20M7%2C6C6.448%2C6%2C6%2C6.447%2C6%2C7c0%2C0.553%2C0.448%2C1%2C1%2C1s1-0.447%2C1-1C8%2C6.447%2C7.552%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-forbidden:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M12.601%2C11.187C13.476%2C10.018%2C14%2C8.572%2C14%2C7c0-3.866-3.134-7-7-7C5.428%2C0%2C3.982%2C0.524%2C2.813%2C1.399L2.757%2C1.343L2.053%2C2.048%20L2.048%2C2.053L1.343%2C2.758l0.056%2C0.056C0.524%2C3.982%2C0%2C5.428%2C0%2C7c0%2C3.866%2C3.134%2C7%2C7%2C7c1.572%2C0%2C3.018-0.524%2C4.187-1.399l0.056%2C0.057%20l0.705-0.705l0.005-0.005l0.705-0.705L12.601%2C11.187z%20M7%2C2c2.761%2C0%2C5%2C2.238%2C5%2C5c0%2C1.019-0.308%2C1.964-0.832%2C2.754L4.246%2C2.832%20C5.036%2C2.308%2C5.981%2C2%2C7%2C2z%20M7%2C12c-2.761%2C0-5-2.238-5-5c0-1.019%2C0.308-1.964%2C0.832-2.754l6.922%2C6.922C8.964%2C11.692%2C8.019%2C12%2C7%2C12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-forward:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M13%2C4L9%2C0v3C6%2C3%2C1%2C4%2C1%2C8c0%2C5%2C7%2C6%2C7%2C6v-2c0%2C0-5-1-5-4s6-3%2C6-3v3L13%2C4z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-gear:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M13.621%2C5.904l-1.036-0.259c-0.168-0.042-0.303-0.168-0.355-0.332c-0.092-0.284-0.205-0.559-0.339-0.82%20c-0.079-0.153-0.073-0.337%2C0.017-0.486l0.549-0.915c0.118-0.196%2C0.088-0.448-0.075-0.61l-0.862-0.863%20c-0.162-0.163-0.414-0.193-0.611-0.075l-0.916%2C0.55C9.844%2C2.182%2C9.659%2C2.188%2C9.506%2C2.109C9.244%2C1.975%2C8.97%2C1.861%2C8.686%2C1.77%20c-0.165-0.052-0.29-0.187-0.332-0.354L8.095%2C0.379C8.039%2C0.156%2C7.839%2C0%2C7.609%2C0H6.391c-0.229%2C0-0.43%2C0.156-0.485%2C0.379L5.646%2C1.415%20C5.604%2C1.582%2C5.479%2C1.718%2C5.313%2C1.77c-0.284%2C0.092-0.559%2C0.206-0.82%2C0.34C4.339%2C2.188%2C4.155%2C2.182%2C4.007%2C2.093L3.092%2C1.544%20c-0.196-0.118-0.448-0.087-0.61%2C0.075L1.619%2C2.481C1.457%2C2.644%2C1.426%2C2.896%2C1.544%2C3.093l0.549%2C0.914%20c0.089%2C0.148%2C0.095%2C0.332%2C0.017%2C0.486C1.975%2C4.755%2C1.861%2C5.029%2C1.77%2C5.314c-0.053%2C0.164-0.188%2C0.29-0.354%2C0.332L0.379%2C5.905%20C0.156%2C5.961%2C0%2C6.161%2C0%2C6.391v1.219c0%2C0.229%2C0.156%2C0.43%2C0.379%2C0.485l1.036%2C0.26C1.582%2C8.396%2C1.717%2C8.521%2C1.77%2C8.687%20c0.092%2C0.284%2C0.205%2C0.559%2C0.34%2C0.82C2.188%2C9.66%2C2.182%2C9.844%2C2.093%2C9.993l-0.549%2C0.915c-0.118%2C0.195-0.087%2C0.448%2C0.075%2C0.61%20l0.862%2C0.862c0.162%2C0.163%2C0.414%2C0.193%2C0.61%2C0.075l0.915-0.549c0.148-0.089%2C0.332-0.095%2C0.486-0.017%20c0.262%2C0.135%2C0.536%2C0.248%2C0.82%2C0.34c0.165%2C0.053%2C0.291%2C0.187%2C0.332%2C0.354l0.259%2C1.036C5.96%2C13.844%2C6.16%2C14%2C6.39%2C14h1.22%20c0.229%2C0%2C0.43-0.156%2C0.485-0.379l0.259-1.036c0.042-0.167%2C0.168-0.302%2C0.333-0.354c0.284-0.092%2C0.559-0.205%2C0.82-0.34%20c0.154-0.078%2C0.338-0.072%2C0.486%2C0.017l0.914%2C0.549c0.197%2C0.118%2C0.449%2C0.088%2C0.611-0.074l0.862-0.863%20c0.163-0.162%2C0.193-0.415%2C0.075-0.611l-0.549-0.915c-0.089-0.148-0.096-0.332-0.017-0.485c0.134-0.263%2C0.248-0.536%2C0.339-0.82%20c0.053-0.165%2C0.188-0.291%2C0.355-0.333l1.036-0.259C13.844%2C8.039%2C14%2C7.839%2C14%2C7.609V6.39C14%2C6.16%2C13.844%2C5.96%2C13.621%2C5.904z%20M7%2C10%20c-1.657%2C0-3-1.343-3-3s1.343-3%2C3-3s3%2C1.343%2C3%2C3S8.657%2C10%2C7%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-grid:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3%2C0H1C0.447%2C0%2C0%2C0.447%2C0%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C4%2C0.447%2C3.553%2C0%2C3%2C0z%20M8%2C0H6%20C5.447%2C0%2C5%2C0.447%2C5%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C9%2C0.447%2C8.553%2C0%2C8%2C0z%20M13%2C0h-2c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C14%2C0.447%2C13.553%2C0%2C13%2C0z%20M3%2C5H1C0.447%2C5%2C0%2C5.447%2C0%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1V6C4%2C5.447%2C3.553%2C5%2C3%2C5z%20M8%2C5H6C5.447%2C5%2C5%2C5.447%2C5%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6%20C9%2C5.447%2C8.553%2C5%2C8%2C5z%20M13%2C5h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6C14%2C5.447%2C13.553%2C5%2C13%2C5z%20M3%2C10%20H1c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C4%2C10.447%2C3.553%2C10%2C3%2C10z%20M8%2C10H6c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C9%2C10.447%2C8.553%2C10%2C8%2C10z%20M13%2C10h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1v-2C14%2C10.447%2C13.553%2C10%2C13%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-heart:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C1.872c-2-3-7-2-7%2C2c0%2C3%2C4%2C7%2C4%2C7s2.417%2C2.479%2C3%2C3c0.583-0.521%2C3-3%2C3-3s4-4%2C4-7%20C14-0.128%2C9-1.128%2C7%2C1.872z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-home:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C0%200%2C7%202%2C7%202%2C14%205%2C14%205%2C9%209%2C9%209%2C14%2012%2C14%2012%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-info:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C2c0.552%2C0%2C1%2C0.447%2C1%2C1S7.552%2C4%2C7%2C4S6%2C3.553%2C6%2C3%20S6.448%2C2%2C7%2C2z%20M9%2C11H5v-1h1V6H5V5h3v5h1V11z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-location:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C0C4.791%2C0%2C3%2C1.791%2C3%2C4c0%2C2%2C4%2C10%2C4%2C10s4-8%2C4-10C11%2C1.791%2C9.209%2C0%2C7%2C0z%20M7%2C6C5.896%2C6%2C5%2C5.104%2C5%2C4%20s0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2S8.104%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-lock:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M12%2C6V5c0-2.762-2.238-5-5-5C4.239%2C0%2C2%2C2.238%2C2%2C5v1H1v8h12V6H12z%20M7.5%2C9.848V12h-1V9.848%20C6.207%2C9.673%2C6%2C9.366%2C6%2C9c0-0.553%2C0.448-1%2C1-1s1%2C0.447%2C1%2C1C8%2C9.366%2C7.793%2C9.673%2C7.5%2C9.848z%20M10%2C6H4V5c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3V6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-mail:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M0%2C3.75V12h14V3.75L7%2C9L0%2C3.75z%20M14%2C2H0l7%2C5L14%2C2z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-minus:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Crect%20y%3D%225%22%20style%3D%22fill%3A%23FFFFFF%3B%22%20width%3D%2214%22%20height%3D%224%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-navigation:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2213%2C1%200%2C6%207%2C7%208%2C14%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-phone:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%22-0.01%200.008%2014%2014%22%20style%3D%22enable-background%3Anew%20-0.01%200.008%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M6.939%2C9.189C6.165%2C8.557%2C5.271%2C7.705%2C4.497%2C6.744C3.953%2C6.071%2C3.473%2C5.363%2C3.969%2C4.866l-3.482-3.48%20C-0.021%2C2.02-1.146%2C5.04%2C3.675%2C9.984c5.08%2C5.211%2C8.356%2C4.097%2C8.92%2C3.511l-3.396-3.4C8.725%2C10.568%2C8.113%2C10.146%2C6.939%2C9.189z%20%20M13.82%2C11.519v-0.004c0%2C0-2.648-2.646-2.649-2.647c-0.21-0.211-0.546-0.205-0.754%2C0.002L9.455%2C9.831l3.403%2C3.407%20c0%2C0%2C0.962-0.96%2C0.961-0.961l0.002-0.001C14.043%2C12.056%2C14.021%2C11.721%2C13.82%2C11.519z%20M5.192%2C3.644V3.642%20c0.222-0.222%2C0.2-0.557%2C0-0.758V2.881c0%2C0-2.726-2.725-2.727-2.726C2.255-0.055%2C1.92-0.05%2C1.712%2C0.156L0.751%2C1.121l3.479%2C3.482%20C4.231%2C4.604%2C5.192%2C3.645%2C5.192%2C3.644z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-plus:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C5%209%2C5%209%2C0%205%2C0%205%2C5%200%2C5%200%2C9%205%2C9%205%2C14%209%2C14%209%2C9%2014%2C9%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-power:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M11.243%2C2.408c-0.392-0.401-1.024-0.401-1.415%2C0c-0.391%2C0.401-0.391%2C1.054%2C0%2C1.455%20C10.584%2C4.642%2C11%2C5.675%2C11%2C6.773s-0.416%2C2.133-1.172%2C2.91c-1.512%2C1.558-4.145%2C1.558-5.656%2C0C3.416%2C8.904%2C3%2C7.872%2C3%2C6.773%20C3%2C5.673%2C3.416%2C4.64%2C4.172%2C3.863c0.39-0.401%2C0.39-1.054%2C0-1.455c-0.391-0.401-1.024-0.401-1.415%2C0C1.624%2C3.574%2C1%2C5.125%2C1%2C6.773%20c0%2C1.647%2C0.624%2C3.199%2C1.757%2C4.365c1.134%2C1.166%2C2.64%2C1.809%2C4.243%2C1.809c1.604%2C0%2C3.109-0.645%2C4.243-1.811%20C12.376%2C9.975%2C13%2C8.423%2C13%2C6.773C13%2C5.125%2C12.376%2C3.574%2C11.243%2C2.408z%20M7%2C8.053c0.553%2C0%2C1-0.445%2C1-1v-6c0-0.553-0.447-1-1-1%20c-0.553%2C0-1%2C0.447-1%2C1v6C6%2C7.604%2C6.447%2C8.053%2C7%2C8.053z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-recycle:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M3%2C7h1L2%2C4L0%2C7h1c0%2C3.313%2C2.687%2C6%2C6%2C6c0.702%2C0%2C1.374-0.127%2C2-0.35v-2.205C8.41%2C10.789%2C7.732%2C11%2C7%2C11%20C4.791%2C11%2C3%2C9.209%2C3%2C7z%20M13%2C7c0-3.313-2.688-6-6-6C6.298%2C1%2C5.626%2C1.127%2C5%2C1.349v2.206C5.59%2C3.211%2C6.268%2C3%2C7%2C3c2.209%2C0%2C4%2C1.791%2C4%2C4%20h-1l2%2C3l2-3H13z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-refresh:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.001px%22%20height%3D%2214.002px%22%20viewBox%3D%220%200%2014.001%2014.002%22%20style%3D%22enable-background%3Anew%200%200%2014.001%2014.002%3B%22%20%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M14.001%2C6.001v-6l-2.06%2C2.06c-0.423-0.424-0.897-0.809-1.44-1.122C7.153-0.994%2C2.872%2C0.153%2C0.939%2C3.501%20c-1.933%2C3.348-0.786%2C7.629%2C2.562%2C9.562c3.348%2C1.933%2C7.629%2C0.785%2C9.562-2.562l-1.732-1c-1.381%2C2.392-4.438%2C3.211-6.83%2C1.83%20s-3.211-4.438-1.83-6.83s4.438-3.211%2C6.83-1.83c0.389%2C0.225%2C0.718%2C0.506%2C1.02%2C0.81l-2.52%2C2.52H14.001z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-search:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M10.171%2C8.766c0.617-0.888%2C0.979-1.964%2C0.979-3.126c0-3.037-2.463-5.5-5.5-5.5s-5.5%2C2.463-5.5%2C5.5%20s2.463%2C5.5%2C5.5%2C5.5c1.152%2C0%2C2.223-0.355%2C3.104-0.962l3.684%2C3.683l1.414-1.414L10.171%2C8.766z%20M5.649%2C9.14c-1.933%2C0-3.5-1.567-3.5-3.5%20c0-1.933%2C1.567-3.5%2C3.5-3.5c1.933%2C0%2C3.5%2C1.567%2C3.5%2C3.5C9.149%2C7.572%2C7.582%2C9.14%2C5.649%2C9.14z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-shop:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M10%2C4V3c0-1.657-1.343-3-3-3S4%2C1.343%2C4%2C3v1H1v10h12V4H10z%20M4.5%2C6C4.224%2C6%2C4%2C5.776%2C4%2C5.5%20S4.224%2C5%2C4.5%2C5S5%2C5.224%2C5%2C5.5S4.776%2C6%2C4.5%2C6z%20M5%2C3c0-1.104%2C0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2v1H5V3z%20M9.5%2C6C9.225%2C6%2C9%2C5.776%2C9%2C5.5%20S9.225%2C5%2C9.5%2C5S10%2C5.224%2C10%2C5.5S9.775%2C6%2C9.5%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-star:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2214%2C5%209%2C5%207%2C0%205%2C5%200%2C5%204%2C8%202.625%2C13%207%2C10%2011.375%2C13%2010%2C8%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-tag:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M5%2C0H0v5l9%2C9l5-5L5%2C0z%20M3%2C4C2.447%2C4%2C2%2C3.553%2C2%2C3s0.447-1%2C1-1s1%2C0.447%2C1%2C1S3.553%2C4%2C3%2C4z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-user:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M8.851%2C10.101c-0.18-0.399-0.2-0.763-0.153-1.104C9.383%2C8.49%2C9.738%2C7.621%2C9.891%2C6.465C10.493%2C6.355%2C10.5%2C5.967%2C10.5%2C5.5%20c0-0.437-0.008-0.804-0.502-0.94C9.999%2C4.539%2C10%2C4.521%2C10%2C4.5c0-2.103-1-4-2-4C8%2C0.5%2C7.5%2C0%2C6.5%2C0C5%2C0%2C4%2C1.877%2C4%2C4.5%20c0%2C0.021%2C0.001%2C0.039%2C0.002%2C0.06C3.508%2C4.696%2C3.5%2C5.063%2C3.5%2C5.5c0%2C0.467%2C0.007%2C0.855%2C0.609%2C0.965%20C4.262%2C7.621%2C4.617%2C8.49%2C5.303%2C8.997c0.047%2C0.341%2C0.026%2C0.704-0.153%2C1.104C1.503%2C10.503%2C0%2C12%2C0%2C12v2h14v-2%20C14%2C12%2C12.497%2C10.503%2C8.851%2C10.101z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-video:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%20-2%2014%2014%22%20style%3D%22enable-background%3Anew%200%20-2%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M8%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2h6c1.104%2C0%2C2-0.896%2C2-2V5V2C10%2C0.896%2C9.104%2C0%2C8%2C0z%20%20M10%2C5l4%2C4V1L10%2C5z%22%2F%3E%3C%2Fsvg%3E");
+}
+/* Alt icons */
+.ui-alt-icon.ui-icon-action:after,
+.ui-alt-icon .ui-icon-action:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M9%2C5v3l5-4L9%2C0v3c0%2C0-5%2C0-5%2C7C6%2C5%2C9%2C5%2C9%2C5z%20M11%2C12H2V5h1l2-2H0v11h13V7l-2%2C2V12z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-alert:after,
+.ui-alt-icon .ui-icon-alert:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0L0%2C12h14L7%2C0z%20M7%2C11c-0.553%2C0-1-0.447-1-1s0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1S7.553%2C11%2C7%2C11z%20M7%2C8C6.447%2C8%2C6%2C7.553%2C6%2C7V5%20c0-0.553%2C0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1v2C8%2C7.553%2C7.553%2C8%2C7%2C8z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-d:after,
+.ui-alt-icon .ui-icon-arrow-d:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%229%2C7%209%2C0%205%2C0%205%2C7%200%2C7%207%2C14%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-d-l:after,
+.ui-alt-icon .ui-icon-arrow-d-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C3%2011%2C0%203.5%2C7.5%200%2C4%200%2C14%2010%2C14%206.5%2C10.5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-d-r:after,
+.ui-alt-icon .ui-icon-arrow-d-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2210.5%2C7.5%203%2C0%200%2C3%207.5%2C10.5%204%2C14%2014%2C14%2014%2C4%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-l:after,
+.ui-alt-icon .ui-icon-arrow-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C5%207%2C0%200%2C7%207%2C14%207%2C9%2014%2C9%2014%2C5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-r:after,
+.ui-alt-icon .ui-icon-arrow-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C7%207%2C0%207%2C5%200%2C5%200%2C9%207%2C9%207%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-u:after,
+.ui-alt-icon .ui-icon-arrow-u:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C0%200%2C7%205%2C7%205%2C14%209%2C14%209%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-u-l:after,
+.ui-alt-icon .ui-icon-arrow-u-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C11%206.5%2C3.5%2010%2C0%200%2C0%200%2C10%203.5%2C6.5%2011%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-u-r:after,
+.ui-alt-icon .ui-icon-arrow-u-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C0%204%2C0%207.5%2C3.5%200%2C11%203%2C14%2010.5%2C6.5%2014%2C10%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-audio:after,
+.ui-alt-icon .ui-icon-audio:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.018px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014.018%2014%22%20style%3D%22enable-background%3Anew%200%200%2014.018%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C4C0.447%2C4%2C0%2C4.447%2C0%2C5v4c0%2C0.553%2C0.447%2C1%2C1%2C1h1l4%2C4V0L2%2C4H1z%20M10.346%2C7c0-1.699-1.042-3.154-2.546-3.867L6.982%2C4.68%20C7.885%2C5.107%2C8.51%2C5.98%2C8.51%2C7S7.885%2C8.893%2C6.982%2C9.32L7.8%2C10.867C9.304%2C10.154%2C10.346%2C8.699%2C10.346%2C7z%20M9.447%2C0.017L8.618%2C1.586%20C10.723%2C2.584%2C12.182%2C4.621%2C12.182%2C7s-1.459%2C4.416-3.563%2C5.414l0.829%2C1.569c2.707-1.283%2C4.57-3.925%2C4.57-6.983%20S12.154%2C1.3%2C9.447%2C0.017z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-back:after,
+.ui-alt-icon .ui-icon-back:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C3V0L1%2C4l4%2C4V5c0%2C0%2C6%2C0%2C6%2C3s-5%2C4-5%2C4v2c0%2C0%2C7-1%2C7-6C13%2C4%2C8%2C3%2C5%2C3z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-bars:after,
+.ui-alt-icon .ui-icon-bars:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C4h12c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H1C0.447%2C2%2C0%2C2.447%2C0%2C3S0.447%2C4%2C1%2C4z%20M13%2C6H1C0.447%2C6%2C0%2C6.447%2C0%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H1c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1h12%20c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-bullets:after,
+.ui-alt-icon .ui-icon-bullets:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C4h8c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H5C4.447%2C2%2C4%2C2.447%2C4%2C3S4.447%2C4%2C5%2C4z%20M13%2C6H5C4.447%2C6%2C4%2C6.447%2C4%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H5c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1h8%20c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%20M1%2C2C0.447%2C2%2C0%2C2.447%2C0%2C3s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C2%2C1%2C2z%20M1%2C6C0.447%2C6%2C0%2C6.447%2C0%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1s1-0.447%2C1-1C2%2C6.447%2C1.553%2C6%2C1%2C6z%20M1%2C10c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C10%2C1%2C10z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-calendar:after,
+.ui-alt-icon .ui-icon-calendar:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M0%2C8h2V6H0V8z%20M3%2C8h2V6H3V8z%20M6%2C8h2V6H6V8z%20M9%2C8h2V6H9V8z%20M12%2C8h2V6h-2V8z%20M0%2C11h2V9H0V11z%20M3%2C11h2V9H3V11z%20M6%2C11h2V9H6V11z%20%20M9%2C11h2V9H9V11z%20M12%2C11h2V9h-2V11z%20M0%2C14h2v-2H0V14z%20M3%2C14h2v-2H3V14z%20M6%2C14h2v-2H6V14z%20M9%2C14h2v-2H9V14z%20M12%2C1%20c0-0.553-0.447-1-1-1s-1%2C0.447-1%2C1H4c0-0.553-0.447-1-1-1S2%2C0.447%2C2%2C1H0v4h14V1H12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-camera:after,
+.ui-alt-icon .ui-icon-camera:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C2.5H9.908c-0.206-0.581-0.756-1-1.408-1h-3c-0.652%2C0-1.202%2C0.419-1.408%2C1H2c-1.104%2C0-2%2C0.896-2%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2%20h10c1.104%2C0%2C2-0.896%2C2-2v-6C14%2C3.396%2C13.104%2C2.5%2C12%2C2.5z%20M7%2C10.5c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3%20C10%2C9.156%2C8.657%2C10.5%2C7%2C10.5z%20M7%2C5.5c-1.104%2C0-2%2C0.896-2%2C2c0%2C1.104%2C0.896%2C2%2C2%2C2c1.104%2C0%2C2-0.896%2C2-2C9%2C6.396%2C8.104%2C5.5%2C7%2C5.5z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-carat-d:after,
+.ui-alt-icon .ui-icon-carat-d:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2211.949%2C3.404%207%2C8.354%202.05%2C3.404%20-0.071%2C5.525%207%2C12.596%2014.07%2C5.525%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-carat-l:after,
+.ui-alt-icon .ui-icon-carat-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2210.596%2C11.949%205.646%2C7%2010.596%2C2.05%208.475%2C-0.071%201.404%2C7%208.475%2C14.07%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-carat-r:after,
+.ui-alt-icon .ui-icon-carat-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%223.404%2C2.051%208.354%2C7%203.404%2C11.95%205.525%2C14.07%2012.596%2C7%205.525%2C-0.071%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-carat-u:after,
+.ui-alt-icon .ui-icon-carat-u:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%222.051%2C10.596%207%2C5.646%2011.95%2C10.596%2014.07%2C8.475%207%2C1.404%20-0.071%2C8.475%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-check:after,
+.ui-alt-icon .ui-icon-check:after,
+html .ui-alt-icon.ui-btn.ui-checkbox-on:after,
+html .ui-alt-icon .ui-btn.ui-checkbox-on:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C4%2011%2C1%205.003%2C6.997%203%2C5%200%2C8%204.966%2C13%204.983%2C12.982%205%2C13%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-clock:after,
+.ui-alt-icon .ui-icon-clock:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C12c-2.762%2C0-5-2.238-5-5s2.238-5%2C5-5s5%2C2.238%2C5%2C5%20S9.762%2C12%2C7%2C12z%20M9%2C6H8V4c0-0.553-0.447-1-1-1S6%2C3.447%2C6%2C4v3c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1S9.553%2C6%2C9%2C6z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-cloud:after,
+.ui-alt-icon .ui-icon-cloud:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M14%2C9.5c0-0.793-0.465-1.473-1.134-1.795C12.949%2C7.484%2C13%2C7.249%2C13%2C7c0-1.104-0.896-2-2-2c-0.158%2C0-0.311%2C0.023-0.457%2C0.058%20C9.816%2C3.549%2C8.286%2C2.5%2C6.5%2C2.5c-2.33%2C0-4.224%2C1.777-4.454%2C4.046C0.883%2C6.76%2C0%2C7.773%2C0%2C9c0%2C1.381%2C1.119%2C2.5%2C2.5%2C2.5h10v-0.07%20C13.361%2C11.206%2C14%2C10.432%2C14%2C9.5z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-comment:after,
+.ui-alt-icon .ui-icon-comment:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v7c0%2C1.104%2C0.896%2C2%2C2%2C2h1v3l3-3h6c1.104%2C0%2C2-0.896%2C2-2V2C14%2C0.896%2C13.104%2C0%2C12%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-delete:after,
+.ui-alt-icon .ui-icon-delete:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C3%2011%2C0%207%2C4%203%2C0%200%2C3%204%2C7%200%2C11%203%2C14%207%2C10%2011%2C14%2014%2C11%2010%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-edit:after,
+.ui-alt-icon .ui-icon-edit:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C10l-1%2C4l4-1l7-7L8%2C3L1%2C10z%20M11%2C0L9%2C2l3%2C3l2-2L11%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-eye:after,
+.ui-alt-icon .ui-icon-eye:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C2C3%2C2%2C0%2C7%2C0%2C7s3%2C5%2C7%2C5s7-5%2C7-5S11%2C2%2C7%2C2z%20M7%2C10c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3%20C10%2C8.656%2C8.657%2C10%2C7%2C10z%20M7%2C6C6.448%2C6%2C6%2C6.447%2C6%2C7c0%2C0.553%2C0.448%2C1%2C1%2C1s1-0.447%2C1-1C8%2C6.447%2C7.552%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-forbidden:after,
+.ui-alt-icon .ui-icon-forbidden:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12.601%2C11.187C13.476%2C10.018%2C14%2C8.572%2C14%2C7c0-3.866-3.134-7-7-7C5.428%2C0%2C3.982%2C0.524%2C2.813%2C1.399L2.757%2C1.343L2.053%2C2.048%20L2.048%2C2.053L1.343%2C2.758l0.056%2C0.056C0.524%2C3.982%2C0%2C5.428%2C0%2C7c0%2C3.866%2C3.134%2C7%2C7%2C7c1.572%2C0%2C3.018-0.524%2C4.187-1.399l0.056%2C0.057%20l0.705-0.705l0.005-0.005l0.705-0.705L12.601%2C11.187z%20M7%2C2c2.761%2C0%2C5%2C2.238%2C5%2C5c0%2C1.019-0.308%2C1.964-0.832%2C2.754L4.246%2C2.832%20C5.036%2C2.308%2C5.981%2C2%2C7%2C2z%20M7%2C12c-2.761%2C0-5-2.238-5-5c0-1.019%2C0.308-1.964%2C0.832-2.754l6.922%2C6.922C8.964%2C11.692%2C8.019%2C12%2C7%2C12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-forward:after,
+.ui-alt-icon .ui-icon-forward:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M13%2C4L9%2C0v3C6%2C3%2C1%2C4%2C1%2C8c0%2C5%2C7%2C6%2C7%2C6v-2c0%2C0-5-1-5-4s6-3%2C6-3v3L13%2C4z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-gear:after,
+.ui-alt-icon .ui-icon-gear:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M13.621%2C5.904l-1.036-0.259c-0.168-0.042-0.303-0.168-0.355-0.332c-0.092-0.284-0.205-0.559-0.339-0.82%20c-0.079-0.153-0.073-0.337%2C0.017-0.486l0.549-0.915c0.118-0.196%2C0.088-0.448-0.075-0.61l-0.862-0.863%20c-0.162-0.163-0.414-0.193-0.611-0.075l-0.916%2C0.55C9.844%2C2.182%2C9.659%2C2.188%2C9.506%2C2.109C9.244%2C1.975%2C8.97%2C1.861%2C8.686%2C1.77%20c-0.165-0.052-0.29-0.187-0.332-0.354L8.095%2C0.379C8.039%2C0.156%2C7.839%2C0%2C7.609%2C0H6.391c-0.229%2C0-0.43%2C0.156-0.485%2C0.379L5.646%2C1.415%20C5.604%2C1.582%2C5.479%2C1.718%2C5.313%2C1.77c-0.284%2C0.092-0.559%2C0.206-0.82%2C0.34C4.339%2C2.188%2C4.155%2C2.182%2C4.007%2C2.093L3.092%2C1.544%20c-0.196-0.118-0.448-0.087-0.61%2C0.075L1.619%2C2.481C1.457%2C2.644%2C1.426%2C2.896%2C1.544%2C3.093l0.549%2C0.914%20c0.089%2C0.148%2C0.095%2C0.332%2C0.017%2C0.486C1.975%2C4.755%2C1.861%2C5.029%2C1.77%2C5.314c-0.053%2C0.164-0.188%2C0.29-0.354%2C0.332L0.379%2C5.905%20C0.156%2C5.961%2C0%2C6.161%2C0%2C6.391v1.219c0%2C0.229%2C0.156%2C0.43%2C0.379%2C0.485l1.036%2C0.26C1.582%2C8.396%2C1.717%2C8.521%2C1.77%2C8.687%20c0.092%2C0.284%2C0.205%2C0.559%2C0.34%2C0.82C2.188%2C9.66%2C2.182%2C9.844%2C2.093%2C9.993l-0.549%2C0.915c-0.118%2C0.195-0.087%2C0.448%2C0.075%2C0.61%20l0.862%2C0.862c0.162%2C0.163%2C0.414%2C0.193%2C0.61%2C0.075l0.915-0.549c0.148-0.089%2C0.332-0.095%2C0.486-0.017%20c0.262%2C0.135%2C0.536%2C0.248%2C0.82%2C0.34c0.165%2C0.053%2C0.291%2C0.187%2C0.332%2C0.354l0.259%2C1.036C5.96%2C13.844%2C6.16%2C14%2C6.39%2C14h1.22%20c0.229%2C0%2C0.43-0.156%2C0.485-0.379l0.259-1.036c0.042-0.167%2C0.168-0.302%2C0.333-0.354c0.284-0.092%2C0.559-0.205%2C0.82-0.34%20c0.154-0.078%2C0.338-0.072%2C0.486%2C0.017l0.914%2C0.549c0.197%2C0.118%2C0.449%2C0.088%2C0.611-0.074l0.862-0.863%20c0.163-0.162%2C0.193-0.415%2C0.075-0.611l-0.549-0.915c-0.089-0.148-0.096-0.332-0.017-0.485c0.134-0.263%2C0.248-0.536%2C0.339-0.82%20c0.053-0.165%2C0.188-0.291%2C0.355-0.333l1.036-0.259C13.844%2C8.039%2C14%2C7.839%2C14%2C7.609V6.39C14%2C6.16%2C13.844%2C5.96%2C13.621%2C5.904z%20M7%2C10%20c-1.657%2C0-3-1.343-3-3s1.343-3%2C3-3s3%2C1.343%2C3%2C3S8.657%2C10%2C7%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-grid:after,
+.ui-alt-icon .ui-icon-grid:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M3%2C0H1C0.447%2C0%2C0%2C0.447%2C0%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C4%2C0.447%2C3.553%2C0%2C3%2C0z%20M8%2C0H6%20C5.447%2C0%2C5%2C0.447%2C5%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C9%2C0.447%2C8.553%2C0%2C8%2C0z%20M13%2C0h-2c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C14%2C0.447%2C13.553%2C0%2C13%2C0z%20M3%2C5H1C0.447%2C5%2C0%2C5.447%2C0%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1V6C4%2C5.447%2C3.553%2C5%2C3%2C5z%20M8%2C5H6C5.447%2C5%2C5%2C5.447%2C5%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6%20C9%2C5.447%2C8.553%2C5%2C8%2C5z%20M13%2C5h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6C14%2C5.447%2C13.553%2C5%2C13%2C5z%20M3%2C10%20H1c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C4%2C10.447%2C3.553%2C10%2C3%2C10z%20M8%2C10H6c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C9%2C10.447%2C8.553%2C10%2C8%2C10z%20M13%2C10h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1v-2C14%2C10.447%2C13.553%2C10%2C13%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-heart:after,
+.ui-alt-icon .ui-icon-heart:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C1.958c-2-3-7-2.128-7%2C1.872c0%2C3%2C4%2C7%2C4%2C7s2.417%2C2.48%2C3%2C3c0.583-0.52%2C3-3%2C3-3s4-4%2C4-7C14-0.169%2C9-1.042%2C7%2C1.958z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-home:after,
+.ui-alt-icon .ui-icon-home:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C0%200%2C7%202%2C7%202%2C14%205%2C14%205%2C9%209%2C9%209%2C14%2012%2C14%2012%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-info:after,
+.ui-alt-icon .ui-icon-info:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C2c0.552%2C0%2C1%2C0.447%2C1%2C1S7.552%2C4%2C7%2C4S6%2C3.553%2C6%2C3%20S6.448%2C2%2C7%2C2z%20M9%2C11H5v-1h1V6H5V5h3v5h1V11z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-location:after,
+.ui-alt-icon .ui-icon-location:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C4.791%2C0%2C3%2C1.791%2C3%2C4c0%2C2%2C4%2C10%2C4%2C10s4-8%2C4-10C11%2C1.791%2C9.209%2C0%2C7%2C0z%20M7%2C6C5.896%2C6%2C5%2C5.104%2C5%2C4s0.896-2%2C2-2%20c1.104%2C0%2C2%2C0.896%2C2%2C2S8.104%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-lock:after,
+.ui-alt-icon .ui-icon-lock:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C6V5c0-2.762-2.238-5-5-5C4.239%2C0%2C2%2C2.238%2C2%2C5v1H1v8h12V6H12z%20M7.5%2C9.848V12h-1V9.848C6.207%2C9.673%2C6%2C9.366%2C6%2C9%20c0-0.553%2C0.448-1%2C1-1s1%2C0.447%2C1%2C1C8%2C9.366%2C7.793%2C9.673%2C7.5%2C9.848z%20M10%2C6H4V5c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3V6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-mail:after,
+.ui-alt-icon .ui-icon-mail:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M0%2C3.75V12h14V3.75L7%2C9L0%2C3.75z%20M14%2C2H0l7%2C5L14%2C2z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-minus:after,
+.ui-alt-icon .ui-icon-minus:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Crect%20y%3D%225%22%20width%3D%2214%22%20height%3D%224%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-navigation:after,
+.ui-alt-icon .ui-icon-navigation:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2213%2C1%200%2C6%207%2C7%208%2C14%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-phone:after,
+.ui-alt-icon .ui-icon-phone:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M6.949%2C9.182C6.175%2C8.549%2C5.281%2C7.697%2C4.507%2C6.736C3.963%2C6.063%2C3.483%2C5.355%2C3.979%2C4.858l-3.482-3.48%20c-0.508%2C0.634-1.633%2C3.654%2C3.188%2C8.598c5.08%2C5.211%2C8.356%2C4.097%2C8.92%2C3.511l-3.396-3.399C8.734%2C10.561%2C8.123%2C10.139%2C6.949%2C9.182z%20%20M13.83%2C11.512v-0.004c0%2C0-2.648-2.646-2.649-2.647c-0.21-0.212-0.546-0.205-0.754%2C0.002L9.465%2C9.823l3.402%2C3.407%20c0%2C0%2C0.963-0.961%2C0.961-0.961l0.002-0.002C14.053%2C12.049%2C14.031%2C11.713%2C13.83%2C11.512z%20M5.202%2C3.636V3.634%20c0.222-0.222%2C0.2-0.557%2C0-0.758V2.873c0%2C0-2.726-2.725-2.727-2.726c-0.21-0.21-0.545-0.205-0.753%2C0.001L0.761%2C1.113L4.24%2C4.595%20C4.241%2C4.596%2C5.202%2C3.637%2C5.202%2C3.636z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-plus:after,
+.ui-alt-icon .ui-icon-plus:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C5%209%2C5%209%2C0%205%2C0%205%2C5%200%2C5%200%2C9%205%2C9%205%2C14%209%2C14%209%2C9%2014%2C9%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-power:after,
+.ui-alt-icon .ui-icon-power:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M11.243%2C2.408c-0.392-0.401-1.024-0.401-1.415%2C0c-0.391%2C0.401-0.391%2C1.054%2C0%2C1.455C10.584%2C4.642%2C11%2C5.675%2C11%2C6.773%20s-0.416%2C2.133-1.172%2C2.91c-1.512%2C1.558-4.145%2C1.558-5.656%2C0C3.416%2C8.904%2C3%2C7.872%2C3%2C6.773C3%2C5.673%2C3.416%2C4.64%2C4.172%2C3.863%20c0.39-0.401%2C0.39-1.054%2C0-1.455c-0.391-0.401-1.024-0.401-1.415%2C0C1.624%2C3.574%2C1%2C5.125%2C1%2C6.773c0%2C1.647%2C0.624%2C3.199%2C1.757%2C4.365%20c1.134%2C1.166%2C2.64%2C1.809%2C4.243%2C1.809c1.604%2C0%2C3.109-0.645%2C4.243-1.811C12.376%2C9.975%2C13%2C8.423%2C13%2C6.773%20C13%2C5.125%2C12.376%2C3.574%2C11.243%2C2.408z%20M7%2C8.053c0.553%2C0%2C1-0.445%2C1-1v-6c0-0.553-0.447-1-1-1c-0.553%2C0-1%2C0.447-1%2C1v6%20C6%2C7.604%2C6.447%2C8.053%2C7%2C8.053z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-recycle:after,
+.ui-alt-icon .ui-icon-recycle:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M3%2C7h1L2%2C4L0%2C7h1c0%2C3.313%2C2.687%2C6%2C6%2C6c0.702%2C0%2C1.374-0.127%2C2-0.35v-2.205C8.41%2C10.789%2C7.732%2C11%2C7%2C11C4.791%2C11%2C3%2C9.209%2C3%2C7z%20%20M13%2C7c0-3.313-2.688-6-6-6C6.298%2C1%2C5.626%2C1.127%2C5%2C1.349v2.206C5.59%2C3.211%2C6.268%2C3%2C7%2C3c2.209%2C0%2C4%2C1.791%2C4%2C4h-1l2%2C3l2-3H13z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-refresh:after,
+.ui-alt-icon .ui-icon-refresh:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.001px%22%20height%3D%2214.002px%22%20viewBox%3D%220%200%2014.001%2014.002%22%20style%3D%22enable-background%3Anew%200%200%2014.001%2014.002%3B%22%20%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M14.001%2C6.001v-6l-2.06%2C2.06c-0.423-0.424-0.897-0.809-1.44-1.122C7.153-0.994%2C2.872%2C0.153%2C0.939%2C3.501%20c-1.933%2C3.348-0.786%2C7.629%2C2.562%2C9.562c3.348%2C1.933%2C7.629%2C0.785%2C9.562-2.562l-1.732-1c-1.381%2C2.392-4.438%2C3.211-6.83%2C1.83%20s-3.211-4.438-1.83-6.83s4.438-3.211%2C6.83-1.83c0.389%2C0.225%2C0.718%2C0.506%2C1.02%2C0.81l-2.52%2C2.52H14.001z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-search:after,
+.ui-alt-icon .ui-icon-search:after,
+.ui-input-search:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M10.171%2C8.766c0.617-0.888%2C0.979-1.964%2C0.979-3.126c0-3.037-2.463-5.5-5.5-5.5s-5.5%2C2.463-5.5%2C5.5s2.463%2C5.5%2C5.5%2C5.5%20c1.152%2C0%2C2.223-0.355%2C3.104-0.962l3.684%2C3.683l1.414-1.414L10.171%2C8.766z%20M5.649%2C9.14c-1.933%2C0-3.5-1.567-3.5-3.5%20c0-1.933%2C1.567-3.5%2C3.5-3.5c1.933%2C0%2C3.5%2C1.567%2C3.5%2C3.5C9.149%2C7.572%2C7.582%2C9.14%2C5.649%2C9.14z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-shop:after,
+.ui-alt-icon .ui-icon-shop:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M10%2C4V3c0-1.657-1.343-3-3-3S4%2C1.343%2C4%2C3v1H1v10h12V4H10z%20M4.5%2C6C4.224%2C6%2C4%2C5.776%2C4%2C5.5S4.224%2C5%2C4.5%2C5S5%2C5.224%2C5%2C5.5%20S4.776%2C6%2C4.5%2C6z%20M5%2C3c0-1.104%2C0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2v1H5V3z%20M9.5%2C6C9.225%2C6%2C9%2C5.776%2C9%2C5.5S9.225%2C5%2C9.5%2C5S10%2C5.224%2C10%2C5.5%20S9.775%2C6%2C9.5%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-star:after,
+.ui-alt-icon .ui-icon-star:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C5%209%2C5%207%2C0%205%2C5%200%2C5%204%2C8%202.625%2C13%207%2C10%2011.375%2C13%2010%2C8%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-tag:after,
+.ui-alt-icon .ui-icon-tag:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C0H0v5l9%2C9l5-5L5%2C0z%20M3%2C4C2.447%2C4%2C2%2C3.553%2C2%2C3s0.447-1%2C1-1s1%2C0.447%2C1%2C1S3.553%2C4%2C3%2C4z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-user:after,
+.ui-alt-icon .ui-icon-user:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M8.851%2C10.101c-0.18-0.399-0.2-0.763-0.153-1.104C9.383%2C8.49%2C9.738%2C7.621%2C9.891%2C6.465C10.493%2C6.355%2C10.5%2C5.967%2C10.5%2C5.5%20c0-0.437-0.008-0.804-0.502-0.94C9.999%2C4.539%2C10%2C4.521%2C10%2C4.5c0-2.103-1-4-2-4C8%2C0.5%2C7.5%2C0%2C6.5%2C0C5%2C0%2C4%2C1.877%2C4%2C4.5%20c0%2C0.021%2C0.001%2C0.039%2C0.002%2C0.06C3.508%2C4.696%2C3.5%2C5.063%2C3.5%2C5.5c0%2C0.467%2C0.007%2C0.855%2C0.609%2C0.965%20C4.262%2C7.621%2C4.617%2C8.49%2C5.303%2C8.997c0.047%2C0.341%2C0.026%2C0.704-0.153%2C1.104C1.503%2C10.503%2C0%2C12%2C0%2C12v2h14v-2%20C14%2C12%2C12.497%2C10.503%2C8.851%2C10.101z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-video:after,
+.ui-alt-icon .ui-icon-video:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%20-2%2014%2014%22%20style%3D%22enable-background%3Anew%200%20-2%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M8%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2h6c1.104%2C0%2C2-0.896%2C2-2V5V2C10%2C0.896%2C9.104%2C0%2C8%2C0z%20M10%2C5l4%2C4V1L10%2C5z%22%2F%3E%3C%2Fsvg%3E");
+}
+/* PNG icons */
+.ui-nosvg .ui-icon-action:after {
+	background-image: url(images/icons-png/action-white.png);
+}
+.ui-nosvg .ui-icon-alert:after {
+	background-image: url(images/icons-png/alert-white.png);
+}
+.ui-nosvg .ui-icon-arrow-d-l:after {
+	background-image: url(images/icons-png/arrow-d-l-white.png);
+}
+.ui-nosvg .ui-icon-arrow-d-r:after {
+	background-image: url(images/icons-png/arrow-d-r-white.png);
+}
+.ui-nosvg .ui-icon-arrow-d:after {
+	background-image: url(images/icons-png/arrow-d-white.png);
+}
+.ui-nosvg .ui-icon-arrow-l:after {
+	background-image: url(images/icons-png/arrow-l-white.png);
+}
+.ui-nosvg .ui-icon-arrow-r:after {
+	background-image: url(images/icons-png/arrow-r-white.png);
+}
+.ui-nosvg .ui-icon-arrow-u-l:after {
+	background-image: url(images/icons-png/arrow-u-l-white.png);
+}
+.ui-nosvg .ui-icon-arrow-u-r:after {
+	background-image: url(images/icons-png/arrow-u-r-white.png);
+}
+.ui-nosvg .ui-icon-arrow-u:after {
+	background-image: url(images/icons-png/arrow-u-white.png);
+}
+.ui-nosvg .ui-icon-audio:after {
+	background-image: url(images/icons-png/audio-white.png);
+}
+.ui-nosvg .ui-icon-back:after {
+	background-image: url(images/icons-png/back-white.png);
+}
+.ui-nosvg .ui-icon-bars:after {
+	background-image: url(images/icons-png/bars-white.png);
+}
+.ui-nosvg .ui-icon-bullets:after {
+	background-image: url(images/icons-png/bullets-white.png);
+}
+.ui-nosvg .ui-icon-calendar:after {
+	background-image: url(images/icons-png/calendar-white.png);
+}
+.ui-nosvg .ui-icon-camera:after {
+	background-image: url(images/icons-png/camera-white.png);
+}
+.ui-nosvg .ui-icon-carat-d:after {
+	background-image: url(images/icons-png/carat-d-white.png);
+}
+.ui-nosvg .ui-icon-carat-l:after {
+	background-image: url(images/icons-png/carat-l-white.png);
+}
+.ui-nosvg .ui-icon-carat-r:after {
+	background-image: url(images/icons-png/carat-r-white.png);
+}
+.ui-nosvg .ui-icon-carat-u:after {
+	background-image: url(images/icons-png/carat-u-white.png);
+}
+.ui-nosvg .ui-icon-check:after,
+html.ui-nosvg .ui-btn.ui-checkbox-on:after {
+	background-image: url(images/icons-png/check-white.png);
+}
+.ui-nosvg .ui-icon-clock:after {
+	background-image: url(images/icons-png/clock-white.png);
+}
+.ui-nosvg .ui-icon-cloud:after {
+	background-image: url(images/icons-png/cloud-white.png);
+}
+.ui-nosvg .ui-icon-comment:after {
+	background-image: url(images/icons-png/comment-white.png);
+}
+.ui-nosvg .ui-icon-delete:after {
+	background-image: url(images/icons-png/delete-white.png);
+}
+.ui-nosvg .ui-icon-edit:after {
+	background-image: url(images/icons-png/edit-white.png);
+}
+.ui-nosvg .ui-icon-eye:after {
+	background-image: url(images/icons-png/eye-white.png);
+}
+.ui-nosvg .ui-icon-forbidden:after {
+	background-image: url(images/icons-png/forbidden-white.png);
+}
+.ui-nosvg .ui-icon-forward:after {
+	background-image: url(images/icons-png/forward-white.png);
+}
+.ui-nosvg .ui-icon-gear:after {
+	background-image: url(images/icons-png/gear-white.png);
+}
+.ui-nosvg .ui-icon-grid:after {
+	background-image: url(images/icons-png/grid-white.png);
+}
+.ui-nosvg .ui-icon-heart:after {
+	background-image: url(images/icons-png/heart-white.png);
+}
+.ui-nosvg .ui-icon-home:after {
+	background-image: url(images/icons-png/home-white.png);
+}
+.ui-nosvg .ui-icon-info:after {
+	background-image: url(images/icons-png/info-white.png);
+}
+.ui-nosvg .ui-icon-location:after {
+	background-image: url(images/icons-png/location-white.png);
+}
+.ui-nosvg .ui-icon-lock:after {
+	background-image: url(images/icons-png/lock-white.png);
+}
+.ui-nosvg .ui-icon-mail:after {
+	background-image: url(images/icons-png/mail-white.png);
+}
+.ui-nosvg .ui-icon-minus:after {
+	background-image: url(images/icons-png/minus-white.png);
+}
+.ui-nosvg .ui-icon-navigation:after {
+	background-image: url(images/icons-png/navigation-white.png);
+}
+.ui-nosvg .ui-icon-phone:after {
+	background-image: url(images/icons-png/phone-white.png);
+}
+.ui-nosvg .ui-icon-plus:after {
+	background-image: url(images/icons-png/plus-white.png);
+}
+.ui-nosvg .ui-icon-power:after {
+	background-image: url(images/icons-png/power-white.png);
+}
+.ui-nosvg .ui-icon-recycle:after {
+	background-image: url(images/icons-png/recycle-white.png);
+}
+.ui-nosvg .ui-icon-refresh:after {
+	background-image: url(images/icons-png/refresh-white.png);
+}
+.ui-nosvg .ui-icon-search:after {
+	background-image: url(images/icons-png/search-white.png);
+}
+.ui-nosvg .ui-icon-shop:after {
+	background-image: url(images/icons-png/shop-white.png);
+}
+.ui-nosvg .ui-icon-star:after {
+	background-image: url(images/icons-png/star-white.png);
+}
+.ui-nosvg .ui-icon-tag:after {
+	background-image: url(images/icons-png/tag-white.png);
+}
+.ui-nosvg .ui-icon-user:after {
+	background-image: url(images/icons-png/user-white.png);
+}
+.ui-nosvg .ui-icon-video:after {
+	background-image: url(images/icons-png/video-white.png);
+}
+/* Alt icons */
+.ui-nosvg .ui-alt-icon.ui-icon-action:after,
+.ui-nosvg .ui-alt-icon .ui-icon-action:after {
+	background-image: url(images/icons-png/action-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-alert:after,
+.ui-nosvg .ui-alt-icon .ui-icon-alert:after {
+	background-image: url(images/icons-png/alert-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-d:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-d:after {
+	background-image: url(images/icons-png/arrow-d-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-d-l:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-d-l:after {
+	background-image: url(images/icons-png/arrow-d-l-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-d-r:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-d-r:after {
+	background-image: url(images/icons-png/arrow-d-r-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-l:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-l:after {
+	background-image: url(images/icons-png/arrow-l-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-r:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-r:after {
+	background-image: url(images/icons-png/arrow-r-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-u:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-u:after {
+	background-image: url(images/icons-png/arrow-u-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-u-l:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-u-l:after {
+	background-image: url(images/icons-png/arrow-u-l-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-u-r:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-u-r:after {
+	background-image: url(images/icons-png/arrow-u-r-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-audio:after,
+.ui-nosvg .ui-alt-icon .ui-icon-audio:after {
+	background-image: url(images/icons-png/audio-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-back:after,
+.ui-nosvg .ui-alt-icon .ui-icon-back:after {
+	background-image: url(images/icons-png/back-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-bars:after,
+.ui-nosvg .ui-alt-icon .ui-icon-bars:after {
+	background-image: url(images/icons-png/bars-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-bullets:after,
+.ui-nosvg .ui-alt-icon .ui-icon-bullets:after {
+	background-image: url(images/icons-png/bullets-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-calendar:after,
+.ui-nosvg .ui-alt-icon .ui-icon-calendar:after {
+	background-image: url(images/icons-png/calendar-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-camera:after,
+.ui-nosvg .ui-alt-icon .ui-icon-camera:after {
+	background-image: url(images/icons-png/camera-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-carat-d:after,
+.ui-nosvg .ui-alt-icon .ui-icon-carat-d:after {
+	background-image: url(images/icons-png/carat-d-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-carat-l:after,
+.ui-nosvg .ui-alt-icon .ui-icon-carat-l:after {
+	background-image: url(images/icons-png/carat-l-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-carat-r:after,
+.ui-nosvg .ui-alt-icon .ui-icon-carat-r:after {
+	background-image: url(images/icons-png/carat-r-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-carat-u:after,
+.ui-nosvg .ui-alt-icon .ui-icon-carat-u:after {
+	background-image: url(images/icons-png/carat-u-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-check:after,
+.ui-nosvg .ui-alt-icon .ui-icon-check:after,
+.ui-nosvg .ui-alt-icon.ui-btn.ui-checkbox-on:after,
+.ui-nosvg .ui-alt-icon .ui-btn.ui-checkbox-on:after {
+	background-image: url(images/icons-png/check-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-clock:after,
+.ui-nosvg .ui-alt-icon .ui-icon-clock:after {
+	background-image: url(images/icons-png/clock-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-cloud:after,
+.ui-nosvg .ui-alt-icon .ui-icon-cloud:after {
+	background-image: url(images/icons-png/cloud-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-comment:after,
+.ui-nosvg .ui-alt-icon .ui-icon-comment:after {
+	background-image: url(images/icons-png/comment-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-delete:after,
+.ui-nosvg .ui-alt-icon .ui-icon-delete:after {
+	background-image: url(images/icons-png/delete-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-edit:after,
+.ui-nosvg .ui-alt-icon .ui-icon-edit:after {
+	background-image: url(images/icons-png/edit-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-eye:after,
+.ui-nosvg .ui-alt-icon .ui-icon-eye:after {
+	background-image: url(images/icons-png/eye-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-forbidden:after,
+.ui-nosvg .ui-alt-icon .ui-icon-forbidden:after {
+	background-image: url(images/icons-png/forbidden-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-forward:after,
+.ui-nosvg .ui-alt-icon .ui-icon-forward:after {
+	background-image: url(images/icons-png/forward-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-gear:after,
+.ui-nosvg .ui-alt-icon .ui-icon-gear:after {
+	background-image: url(images/icons-png/gear-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-grid:after,
+.ui-nosvg .ui-alt-icon .ui-icon-grid:after {
+	background-image: url(images/icons-png/grid-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-heart:after,
+.ui-nosvg .ui-alt-icon .ui-icon-heart:after {
+	background-image: url(images/icons-png/heart-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-home:after,
+.ui-nosvg .ui-alt-icon .ui-icon-home:after {
+	background-image: url(images/icons-png/home-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-info:after,
+.ui-nosvg .ui-alt-icon .ui-icon-info:after {
+	background-image: url(images/icons-png/info-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-location:after,
+.ui-nosvg .ui-alt-icon .ui-icon-location:after {
+	background-image: url(images/icons-png/location-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-lock:after,
+.ui-nosvg .ui-alt-icon .ui-icon-lock:after {
+	background-image: url(images/icons-png/lock-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-mail:after,
+.ui-nosvg .ui-alt-icon .ui-icon-mail:after {
+	background-image: url(images/icons-png/mail-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-minus:after,
+.ui-nosvg .ui-alt-icon .ui-icon-minus:after {
+	background-image: url(images/icons-png/minus-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-navigation:after,
+.ui-nosvg .ui-alt-icon .ui-icon-navigation:after {
+	background-image: url(images/icons-png/navigation-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-phone:after,
+.ui-nosvg .ui-alt-icon .ui-icon-phone:after {
+	background-image: url(images/icons-png/phone-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-plus:after,
+.ui-nosvg .ui-alt-icon .ui-icon-plus:after {
+	background-image: url(images/icons-png/plus-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-power:after,
+.ui-nosvg .ui-alt-icon .ui-icon-power:after {
+	background-image: url(images/icons-png/power-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-recycle:after,
+.ui-nosvg .ui-alt-icon .ui-icon-recycle:after {
+	background-image: url(images/icons-png/recycle-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-refresh:after,
+.ui-nosvg .ui-alt-icon .ui-icon-refresh:after {
+	background-image: url(images/icons-png/refresh-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-search:after,
+.ui-nosvg .ui-alt-icon .ui-icon-search:after,
+.ui-nosvg .ui-input-search:after {
+	background-image: url(images/icons-png/search-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-shop:after,
+.ui-nosvg .ui-alt-icon .ui-icon-shop:after {
+	background-image: url(images/icons-png/shop-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-star:after,
+.ui-nosvg .ui-alt-icon .ui-icon-star:after {
+	background-image: url(images/icons-png/star-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-tag:after,
+.ui-nosvg .ui-alt-icon .ui-icon-tag:after {
+	background-image: url(images/icons-png/tag-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-user:after,
+.ui-nosvg .ui-alt-icon .ui-icon-user:after {
+	background-image: url(images/icons-png/user-black.png);
+}
+.ui-nosvg .ui-alt-icon.ui-icon-video:after,
+.ui-nosvg .ui-alt-icon .ui-icon-video:after {
+	background-image: url(images/icons-png/video-black.png);
+}
+/* Globals */
+/* Font
+-----------------------------------------------------------------------------------------------------------*/
+html {
+	font-size: 100%;
+}
+body,
+input,
+select,
+textarea,
+button,
+.ui-btn {
+	font-size: 1em;
+	line-height: 1.3;
+	font-family: sans-serif /*{global-font-family}*/;
+}
+legend,
+.ui-input-text input,
+.ui-input-search input {
+	color: inherit;
+	text-shadow: inherit;
+}
+/* Form labels (overrides font-weight bold in bars, and mini font-size) */
+.ui-mobile label,
+div.ui-controlgroup-label {
+	font-weight: normal;
+	font-size: 16px;
+}
+/* Separators
+-----------------------------------------------------------------------------------------------------------*/
+/* Field contain separator (< 28em) */
+.ui-field-contain {
+	border-bottom-color: #828282;
+	border-bottom-color: rgba(0,0,0,.15);
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+/* Table opt-in classes: strokes between each row, and alternating row stripes */
+/* Classes table-stroke and table-stripe are deprecated in 1.4. */
+.table-stroke thead th,
+.table-stripe thead th,
+.table-stripe tbody tr:last-child {
+	border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */
+	border-bottom: 1px solid rgba(0,0,0,.1);
+}
+.table-stroke tbody th,
+.table-stroke tbody td {
+	border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback  */
+	border-bottom: 1px solid rgba(0,0,0,.05);
+}
+.table-stripe.table-stroke tbody tr:last-child th,
+.table-stripe.table-stroke tbody tr:last-child td {
+	border-bottom: 0;
+}
+.table-stripe tbody tr:nth-child(odd) td,
+.table-stripe tbody tr:nth-child(odd) th {
+	background-color: #eeeeee; /* non-RGBA fallback  */
+	background-color: rgba(0,0,0,.04);
+}
+/* Buttons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn,
+label.ui-btn {
+	font-weight: bold;
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-btn {
+	text-decoration: none !important;
+}
+.ui-btn-active {
+	cursor: pointer;
+}
+/* Corner rounding
+-----------------------------------------------------------------------------------------------------------*/
+/* Class ui-btn-corner-all deprecated in 1.4 */
+.ui-corner-all {
+	-webkit-border-radius: 				.3125em /*{global-radii-blocks}*/;
+	border-radius: 						.3125em /*{global-radii-blocks}*/;
+}
+/* Buttons */
+.ui-btn-corner-all,
+.ui-btn.ui-corner-all,
+/* Slider track */
+.ui-slider-track.ui-corner-all,
+/* Flipswitch */
+.ui-flipswitch.ui-corner-all,
+/* Count bubble */
+.ui-li-count {
+	-webkit-border-radius: 				.3125em /*{global-radii-buttons}*/;
+	border-radius: 						.3125em /*{global-radii-buttons}*/;
+}
+/* Icon-only buttons */
+.ui-btn-icon-notext.ui-btn-corner-all,
+.ui-btn-icon-notext.ui-corner-all {
+	-webkit-border-radius: 1em;
+	border-radius: 1em;
+}
+/* Radius clip workaround for cleaning up corner trapping */
+.ui-btn-corner-all,
+.ui-corner-all {
+	-webkit-background-clip: padding;
+	background-clip: padding-box;
+}
+/* Popup arrow */
+.ui-popup.ui-corner-all > .ui-popup-arrow-guide {
+	left: .6em /*{global-radii-blocks}*/;
+	right: .6em /*{global-radii-blocks}*/;
+	top: .6em /*{global-radii-blocks}*/;
+	bottom: .6em /*{global-radii-blocks}*/;
+}
+/* Shadow
+-----------------------------------------------------------------------------------------------------------*/
+.ui-shadow {
+	-webkit-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ 		rgba(0,0,0,.15) /*{global-box-shadow-color}*/;
+	-moz-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ 		rgba(0,0,0,.15) /*{global-box-shadow-color}*/;
+	box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ 				rgba(0,0,0,.15) /*{global-box-shadow-color}*/;
+}
+.ui-shadow-inset {
+	-webkit-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ 	rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+	-moz-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ 		rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+	box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ 	rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+}
+.ui-overlay-shadow {
+	-webkit-box-shadow: 0 0 12px 		rgba(0,0,0,.6);
+	-moz-box-shadow: 0 0 12px 			rgba(0,0,0,.6);
+	box-shadow: 0 0 12px 				rgba(0,0,0,.6);
+}
+/* Icons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after,
+.ui-btn-icon-notext:after {
+	background-color: 					#666 /*{global-icon-color}*/;
+	background-color: 					rgba(0,0,0,.3) /*{global-icon-disc}*/;
+	background-position: center center;
+	background-repeat: no-repeat;
+	-webkit-border-radius: 1em;
+	border-radius: 1em;
+}
+/* Alt icons */
+.ui-alt-icon.ui-btn:after,
+.ui-alt-icon .ui-btn:after,
+html .ui-alt-icon.ui-checkbox-off:after,
+html .ui-alt-icon.ui-radio-off:after,
+html .ui-alt-icon .ui-checkbox-off:after,
+html .ui-alt-icon .ui-radio-off:after {
+	background-color: 					#666 /*{global-icon-color}*/;
+	background-color: 					rgba(0,0,0,.15) /*{global-icon-disc}*/;
+}
+/* No disc */
+.ui-nodisc-icon.ui-btn:after,
+.ui-nodisc-icon .ui-btn:after {
+	background-color: transparent;
+}
+/* Icon shadow */
+.ui-shadow-icon.ui-btn:after,
+.ui-shadow-icon .ui-btn:after {
+	-webkit-box-shadow: 0 1px 0 			rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+	-moz-box-shadow: 0 1px 0 				rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+	box-shadow: 0 1px 0 					rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+}
+/* Checkbox and radio */
+.ui-btn.ui-checkbox-off:after,
+.ui-btn.ui-checkbox-on:after,
+.ui-btn.ui-radio-off:after,
+.ui-btn.ui-radio-on:after {
+	display: block;
+	width: 18px;
+	height: 18px;
+	margin: -9px 2px 0 2px;
+}
+.ui-checkbox-off:after,
+.ui-btn.ui-radio-off:after {
+	filter: Alpha(Opacity=30);
+	opacity: .3;
+}
+.ui-btn.ui-checkbox-off:after,
+.ui-btn.ui-checkbox-on:after {
+	-webkit-border-radius: .1875em;
+	border-radius: .1875em;
+}
+.ui-btn.ui-checkbox-off:after {
+	background-color: #666;
+	background-color: rgba(0,0,0,.3);
+}
+.ui-radio .ui-btn.ui-radio-on:after {
+	background-image: none;
+	background-color: #fff;
+	width: 8px;
+	height: 8px;
+	border-width: 5px;
+	border-style: solid; 
+}
+.ui-alt-icon.ui-btn.ui-radio-on:after,
+.ui-alt-icon .ui-btn.ui-radio-on:after {
+	background-color: #000;
+}
+/* Loader */
+.ui-icon-loading {
+	background: url(images/ajax-loader.gif);
+	background-size: 2.875em 2.875em;
+}
+/* Swatches */
+/* A
+-----------------------------------------------------------------------------------------------------------*/
+/* Bar: Toolbars, dividers, slider track */
+.ui-bar-a,
+.ui-page-theme-a .ui-bar-inherit,
+html .ui-bar-a .ui-bar-inherit,
+html .ui-body-a .ui-bar-inherit,
+html body .ui-group-theme-a .ui-bar-inherit {
+	background-color: 			#e9e9e9 /*{a-bar-background-color}*/;
+	border-color:	 		#ddd /*{a-bar-border}*/;
+	color: 					#333 /*{a-bar-color}*/;
+	text-shadow: 0 /*{a-bar-shadow-x}*/ 1px /*{a-bar-shadow-y}*/ 0 /*{a-bar-shadow-radius}*/ 	#eee /*{a-bar-shadow-color}*/;
+	font-weight: bold;
+}
+.ui-bar-a {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Page and overlay */
+.ui-overlay-a,
+.ui-page-theme-a,
+.ui-page-theme-a .ui-panel-wrapper {
+	background-color: 			#f9f9f9 /*{a-page-background-color}*/;
+	border-color:	 		#bbb /*{a-page-border}*/;
+	color: 					#333 /*{a-page-color}*/;
+	text-shadow: 0 /*{a-page-shadow-x}*/ 1px /*{a-page-shadow-y}*/ 0 /*{a-page-shadow-radius}*/ 	#f3f3f3 /*{a-page-shadow-color}*/;
+}
+/* Body: Read-only lists, text inputs, collapsible content */
+.ui-body-a,
+.ui-page-theme-a .ui-body-inherit,
+html .ui-bar-a .ui-body-inherit,
+html .ui-body-a .ui-body-inherit,
+html body .ui-group-theme-a .ui-body-inherit,
+html .ui-panel-page-container-a {
+	background-color: 			#fff /*{a-body-background-color}*/;
+	border-color:	 		#ddd /*{a-body-border}*/;
+	color: 					#333 /*{a-body-color}*/;
+	text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 0 /*{a-body-shadow-radius}*/ 	#f3f3f3 /*{a-body-shadow-color}*/;
+}
+.ui-body-a {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Links */
+.ui-page-theme-a a,
+html .ui-bar-a a,
+html .ui-body-a a,
+html body .ui-group-theme-a a {
+	color: #3388cc /*{a-link-color}*/;
+	font-weight: bold;
+}
+.ui-page-theme-a a:visited,
+html .ui-bar-a a:visited,
+html .ui-body-a a:visited,
+html body .ui-group-theme-a a:visited {
+    color: #3388cc /*{a-link-visited}*/;
+}
+.ui-page-theme-a a:hover,
+html .ui-bar-a a:hover,
+html .ui-body-a a:hover,
+html body .ui-group-theme-a a:hover {
+	color: #005599 /*{a-link-hover}*/;
+}
+.ui-page-theme-a a:active,
+html .ui-bar-a a:active,
+html .ui-body-a a:active,
+html body .ui-group-theme-a a:active {
+	color: #005599 /*{a-link-active}*/;
+}
+/* Button up */
+.ui-page-theme-a .ui-btn,
+html .ui-bar-a .ui-btn,
+html .ui-body-a .ui-btn,
+html body .ui-group-theme-a .ui-btn,
+html head + body .ui-btn.ui-btn-a,
+/* Button visited */
+.ui-page-theme-a .ui-btn:visited,
+html .ui-bar-a .ui-btn:visited,
+html .ui-body-a .ui-btn:visited,
+html body .ui-group-theme-a .ui-btn:visited,
+html head + body .ui-btn.ui-btn-a:visited {
+	background-color: 			#f6f6f6 /*{a-bup-background-color}*/;
+	border-color:	 		#ddd /*{a-bup-border}*/;
+	color: 					#333 /*{a-bup-color}*/;
+	text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 0 /*{a-bup-shadow-radius}*/ #f3f3f3 /*{a-bup-shadow-color}*/;
+}
+/* Button hover */
+.ui-page-theme-a .ui-btn:hover,
+html .ui-bar-a .ui-btn:hover,
+html .ui-body-a .ui-btn:hover,
+html body .ui-group-theme-a .ui-btn:hover,
+html head + body .ui-btn.ui-btn-a:hover {
+	background-color: 			#ededed /*{a-bhover-background-color}*/;
+	border-color:	 		#ddd /*{a-bhover-border}*/;
+	color: 					#333 /*{a-bhover-color}*/;
+	text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 0 /*{a-bhover-shadow-radius}*/ #f3f3f3 /*{a-bhover-shadow-color}*/;
+}
+/* Button down */
+.ui-page-theme-a .ui-btn:active,
+html .ui-bar-a .ui-btn:active,
+html .ui-body-a .ui-btn:active,
+html body .ui-group-theme-a .ui-btn:active,
+html head + body .ui-btn.ui-btn-a:active {
+	background-color: 			#e8e8e8 /*{a-bdown-background-color}*/;
+	border-color:	 		#ddd /*{a-bdown-border}*/;
+	color: 					#333 /*{a-bdown-color}*/;
+	text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 0 /*{a-bdown-shadow-radius}*/ #f3f3f3 /*{a-bdown-shadow-color}*/;
+}
+/* Active button */
+.ui-page-theme-a .ui-btn.ui-btn-active,
+html .ui-bar-a .ui-btn.ui-btn-active,
+html .ui-body-a .ui-btn.ui-btn-active,
+html body .ui-group-theme-a .ui-btn.ui-btn-active,
+html head + body .ui-btn.ui-btn-a.ui-btn-active,
+/* Active checkbox icon */
+.ui-page-theme-a .ui-checkbox-on:after,
+html .ui-bar-a .ui-checkbox-on:after,
+html .ui-body-a .ui-checkbox-on:after,
+html body .ui-group-theme-a .ui-checkbox-on:after,
+.ui-btn.ui-checkbox-on.ui-btn-a:after,
+/* Active flipswitch background */
+.ui-page-theme-a .ui-flipswitch-active,
+html .ui-bar-a .ui-flipswitch-active,
+html .ui-body-a .ui-flipswitch-active,
+html body .ui-group-theme-a .ui-flipswitch-active,
+html body .ui-flipswitch.ui-bar-a.ui-flipswitch-active,
+/* Active slider track */
+.ui-page-theme-a .ui-slider-track .ui-btn-active,
+html .ui-bar-a .ui-slider-track .ui-btn-active,
+html .ui-body-a .ui-slider-track .ui-btn-active,
+html body .ui-group-theme-a .ui-slider-track .ui-btn-active,
+html body div.ui-slider-track.ui-body-a .ui-btn-active {
+	background-color: 		#3388cc /*{a-active-background-color}*/;
+	border-color:	 		#3388cc /*{a-active-border}*/;
+	color: 					#fff /*{a-active-color}*/;
+	text-shadow: 0 /*{a-active-shadow-x}*/ 1px /*{a-active-shadow-y}*/ 0 /*{a-active-shadow-radius}*/ #005599 /*{a-active-shadow-color}*/;
+}
+/* Active radio button icon */
+.ui-page-theme-a .ui-radio-on:after,
+html .ui-bar-a .ui-radio-on:after,
+html .ui-body-a .ui-radio-on:after,
+html body .ui-group-theme-a .ui-radio-on:after,
+.ui-btn.ui-radio-on.ui-btn-a:after {
+	border-color:			#3388cc /*{a-active-background-color}*/;
+}
+/* Focus */
+.ui-page-theme-a .ui-btn:focus,
+html .ui-bar-a .ui-btn:focus,
+html .ui-body-a .ui-btn:focus,
+html body .ui-group-theme-a .ui-btn:focus,
+html head + body .ui-btn.ui-btn-a:focus,
+/* Focus buttons and text inputs with div wrap */
+.ui-page-theme-a .ui-focus,
+html .ui-bar-a .ui-focus,
+html .ui-body-a .ui-focus,
+html body .ui-group-theme-a .ui-focus,
+html head + body .ui-btn-a.ui-focus,
+html head + body .ui-body-a.ui-focus {
+	-webkit-box-shadow: 0 0 12px 	#3388cc /*{a-active-background-color}*/;
+	-moz-box-shadow: 0 0 12px 		#3388cc /*{a-active-background-color}*/;
+	box-shadow: 0 0 12px 			#3388cc /*{a-active-background-color}*/;
+}
+/* B
+-----------------------------------------------------------------------------------------------------------*/
+/* Bar: Toolbars, dividers, slider track */
+.ui-bar-b,
+.ui-page-theme-b .ui-bar-inherit,
+html .ui-bar-b .ui-bar-inherit,
+html .ui-body-b .ui-bar-inherit,
+html body .ui-group-theme-b .ui-bar-inherit {
+	background-color: 			#1d1d1d /*{b-bar-background-color}*/;
+	border-color:	 		#1b1b1b /*{b-bar-border}*/;
+	color: 					#fff /*{b-bar-color}*/;
+	text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 0 /*{b-bar-shadow-radius}*/ 	#111 /*{b-bar-shadow-color}*/;
+	font-weight: bold;
+}
+.ui-bar-b {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Page and overlay */
+.ui-overlay-b,
+.ui-page-theme-b,
+.ui-page-theme-b .ui-panel-wrapper {
+	background-color: 			#252525 /*{b-page-background-color}*/;
+	border-color:	 		#454545 /*{b-page-border}*/;
+	color: 					#fff /*{b-page-color}*/;
+	text-shadow: 0 /*{b-page-shadow-x}*/ 1px /*{b-page-shadow-y}*/ 0 /*{b-page-shadow-radius}*/ 	#111 /*{b-page-shadow-color}*/;
+}
+/* Body: Read-only lists, text inputs, collapsible content */
+.ui-body-b,
+.ui-page-theme-b .ui-body-inherit,
+html .ui-bar-b .ui-body-inherit,
+html .ui-body-b .ui-body-inherit,
+html body .ui-group-theme-b .ui-body-inherit,
+html .ui-panel-page-container-b {
+	background-color: 			#2a2a2a /*{b-body-background-color}*/;
+	border-color:	 		#1d1d1d /*{b-body-border}*/;
+	color: 					#fff /*{b-body-color}*/;
+	text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ 	#111 /*{b-body-shadow-color}*/;
+}
+.ui-body-b {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Links */
+.ui-page-theme-b a,
+html .ui-bar-b a,
+html .ui-body-b a,
+html body .ui-group-theme-b a {
+	color: #22aadd /*{b-link-color}*/;
+	font-weight: bold;
+}
+.ui-page-theme-b a:visited,
+html .ui-bar-b a:visited,
+html .ui-body-b a:visited,
+html body .ui-group-theme-b a:visited {
+    color: #22aadd /*{b-link-visited}*/;
+}
+.ui-page-theme-b a:hover,
+html .ui-bar-b a:hover,
+html .ui-body-b a:hover,
+html body .ui-group-theme-b a:hover {
+	color: #0088bb /*{b-link-hover}*/;
+}
+.ui-page-theme-b a:active,
+html .ui-bar-b a:active,
+html .ui-body-b a:active,
+html body .ui-group-theme-b a:active {
+	color: #0088bb /*{b-link-active}*/;
+}
+/* Button up */
+.ui-page-theme-b .ui-btn,
+html .ui-bar-b .ui-btn,
+html .ui-body-b .ui-btn,
+html body .ui-group-theme-b .ui-btn,
+html head + body .ui-btn.ui-btn-b,
+/* Button visited */
+.ui-page-theme-b .ui-btn:visited,
+html .ui-bar-b .ui-btn:visited,
+html .ui-body-b .ui-btn:visited,
+html body .ui-group-theme-b .ui-btn:visited,
+html head + body .ui-btn.ui-btn-b:visited {
+	background-color: 			#333 /*{b-bup-background-color}*/;
+	border-color:	 		#1f1f1f /*{b-bup-border}*/;
+	color: 					#fff /*{b-bup-color}*/;
+	text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 0 /*{b-bup-shadow-radius}*/ #111 /*{b-bup-shadow-color}*/;
+}
+/* Button hover */
+.ui-page-theme-b .ui-btn:hover,
+html .ui-bar-b .ui-btn:hover,
+html .ui-body-b .ui-btn:hover,
+html body .ui-group-theme-b .ui-btn:hover,
+html head + body .ui-btn.ui-btn-b:hover {
+	background-color: 			#373737 /*{b-bhover-background-color}*/;
+	border-color:	 		#1f1f1f /*{b-bhover-border}*/;
+	color: 					#fff /*{b-bhover-color}*/;
+	text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 0 /*{b-bhover-shadow-radius}*/ #111 /*{b-bhover-shadow-color}*/;
+}
+/* Button down */
+.ui-page-theme-b .ui-btn:active,
+html .ui-bar-b .ui-btn:active,
+html .ui-body-b .ui-btn:active,
+html body .ui-group-theme-b .ui-btn:active,
+html head + body .ui-btn.ui-btn-b:active {
+	background-color: 			#404040 /*{b-bdown-background-color}*/;
+	border-color:	 		#1f1f1f /*{b-bdown-border}*/;
+	color: 					#fff /*{b-bdown-color}*/;
+	text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 0 /*{b-bdown-shadow-radius}*/ #111 /*{b-bdown-shadow-color}*/;
+}
+/* Active button */
+.ui-page-theme-b .ui-btn.ui-btn-active,
+html .ui-bar-b .ui-btn.ui-btn-active,
+html .ui-body-b .ui-btn.ui-btn-active,
+html body .ui-group-theme-b .ui-btn.ui-btn-active,
+html head + body .ui-btn.ui-btn-b.ui-btn-active,
+/* Active checkbox icon */
+.ui-page-theme-b .ui-checkbox-on:after,
+html .ui-bar-b .ui-checkbox-on:after,
+html .ui-body-b .ui-checkbox-on:after,
+html body .ui-group-theme-b .ui-checkbox-on:after,
+.ui-btn.ui-checkbox-on.ui-btn-b:after,
+/* Active flipswitch background */
+.ui-page-theme-b .ui-flipswitch-active,
+html .ui-bar-b .ui-flipswitch-active,
+html .ui-body-b .ui-flipswitch-active,
+html body .ui-group-theme-b .ui-flipswitch-active,
+html body .ui-flipswitch.ui-bar-b.ui-flipswitch-active,
+/* Active slider track */
+.ui-page-theme-b .ui-slider-track .ui-btn-active,
+html .ui-bar-b .ui-slider-track .ui-btn-active,
+html .ui-body-b .ui-slider-track .ui-btn-active,
+html body .ui-group-theme-b .ui-slider-track .ui-btn-active,
+html body div.ui-slider-track.ui-body-b .ui-btn-active {
+	background-color: 		#22aadd /*{b-active-background-color}*/;
+	border-color:	 		#22aadd /*{b-active-border}*/;
+	color: 					#fff /*{b-active-color}*/;
+	text-shadow: 0 /*{b-active-shadow-x}*/ 1px /*{b-active-shadow-y}*/ 0 /*{b-active-shadow-radius}*/ #0088bb /*{b-active-shadow-color}*/;
+}
+/* Active radio button icon */
+.ui-page-theme-b .ui-radio-on:after,
+html .ui-bar-b .ui-radio-on:after,
+html .ui-body-b .ui-radio-on:after,
+html body .ui-group-theme-b .ui-radio-on:after,
+.ui-btn.ui-radio-on.ui-btn-b:after {
+	border-color:			#22aadd /*{b-active-background-color}*/;
+}
+/* Focus */
+.ui-page-theme-b .ui-btn:focus,
+html .ui-bar-b .ui-btn:focus,
+html .ui-body-b .ui-btn:focus,
+html body .ui-group-theme-b .ui-btn:focus,
+html head + body .ui-btn.ui-btn-b:focus,
+/* Focus buttons and text inputs with div wrap */
+.ui-page-theme-b .ui-focus,
+html .ui-bar-b .ui-focus,
+html .ui-body-b .ui-focus,
+html body .ui-group-theme-b .ui-focus,
+html head + body .ui-btn-b.ui-focus,
+html head + body .ui-body-b.ui-focus {
+	-webkit-box-shadow: 0 0 12px 	#22aadd /*{b-active-background-color}*/;
+	-moz-box-shadow: 0 0 12px 		#22aadd /*{b-active-background-color}*/;
+	box-shadow: 0 0 12px 			#22aadd /*{b-active-background-color}*/;
+}
+/* Structure */
+/* Disabled
+-----------------------------------------------------------------------------------------------------------*/
+/* Class ui-disabled deprecated in 1.4. :disabled not supported by IE8 so we use [disabled] */
+.ui-disabled,
+.ui-state-disabled,
+button[disabled],
+.ui-select .ui-btn.ui-state-disabled {
+	filter: Alpha(Opacity=30);
+	opacity: .3;
+	cursor: default !important;
+	pointer-events: none;
+}
+/* Focus state outline
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn:focus,
+.ui-btn.ui-focus {
+	outline: 0;
+}
+/* Unset box-shadow in browsers that don't do it right */
+.ui-noboxshadow .ui-shadow,
+.ui-noboxshadow .ui-shadow-inset,
+.ui-noboxshadow .ui-overlay-shadow,
+.ui-noboxshadow .ui-shadow-icon.ui-btn:after,
+.ui-noboxshadow .ui-shadow-icon .ui-btn:after,
+.ui-noboxshadow .ui-focus,
+.ui-noboxshadow .ui-btn:focus,
+.ui-noboxshadow  input:focus,
+.ui-noboxshadow .ui-panel {
+	-webkit-box-shadow: none !important;
+	-moz-box-shadow: none !important;
+	box-shadow: none !important;
+}
+.ui-noboxshadow .ui-btn:focus,
+.ui-noboxshadow .ui-focus {
+	outline-width: 1px;
+	outline-style: auto;
+}
+/* Some unsets */
+.ui-mobile,
+.ui-mobile body {
+	height: 99.9%;
+}
+.ui-mobile fieldset,
+.ui-page {
+	padding: 0;
+	margin: 0;
+}
+.ui-mobile a img,
+.ui-mobile fieldset {
+	border-width: 0;
+}
+/* Fixes for fieldset issues on IE10 and FF (see #6077) */
+.ui-mobile fieldset {
+	min-width: 0;
+}
+@-moz-document url-prefix() {
+	.ui-mobile fieldset {
+		display: table-column;
+		vertical-align: middle;
+	}
+}
+/* Viewport */
+.ui-mobile-viewport {
+	margin: 0;
+	overflow-x: visible;
+	-webkit-text-size-adjust: 100%;
+	-ms-text-size-adjust:none;
+	-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+/* Issue #2066 */
+body.ui-mobile-viewport,
+div.ui-mobile-viewport {
+	overflow-x: hidden;
+}
+/* "page" containers - full-screen views, one should always be in view post-pageload */
+.ui-mobile [data-role=page],
+.ui-mobile [data-role=dialog],
+.ui-page {
+	top: 0;
+	left: 0;
+	width: 100%;
+	min-height: 100%;
+	position: absolute;
+	display: none;
+	border: 0;
+}
+/* On ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */
+.ui-page {
+	outline: none;
+}
+.ui-mobile .ui-page-active {
+	display: block;
+	overflow: visible;
+	overflow-x: hidden;
+}
+@media screen and (orientation: portrait) {
+	.ui-mobile .ui-page {
+		min-height: 420px;
+	}
+}
+@media screen and (orientation: landscape) {
+	.ui-mobile .ui-page {
+		min-height: 300px;
+	}
+}
+/* Fouc */
+.ui-mobile-rendering > * {
+	visibility: hidden;
+}
+/* Non-js content hiding */
+.ui-nojs {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+/* Loading screen */
+.ui-loading .ui-loader {
+	display: block;
+}
+.ui-loader {
+	display: none;
+	z-index: 9999999;
+	position: fixed;
+	top: 50%;
+	left: 50%;
+	border:0;
+}
+.ui-loader-default {
+	background: none;
+	filter: Alpha(Opacity=18);
+	opacity: .18;
+	width: 2.875em;
+	height: 2.875em;
+	margin-left: -1.4375em;
+	margin-top: -1.4375em;
+}
+.ui-loader-verbose {
+	width: 12.5em;
+	filter: Alpha(Opacity=88);
+	opacity: .88;
+	box-shadow: 0 1px 1px -1px #fff;
+	height: auto;
+	margin-left: -6.875em;
+	margin-top: -2.6875em;
+	padding: .625em;
+}
+.ui-loader-default h1 {
+	font-size: 0;
+	width: 0;
+	height: 0;
+	overflow: hidden;
+}
+.ui-loader-verbose h1 {
+	font-size: 1em;
+	margin: 0;
+	text-align: center;
+}
+.ui-loader .ui-icon-loading {
+	background-color: #000;
+	display: block;
+	margin: 0;
+	width: 2.75em;
+	height: 2.75em;
+	padding: .0625em;
+	-webkit-border-radius: 2.25em;
+	border-radius: 2.25em;
+}
+.ui-loader-verbose .ui-icon-loading {
+	margin: 0 auto .625em;
+	filter: Alpha(Opacity=75);
+	opacity: .75;
+}
+.ui-loader-textonly {
+	padding: .9375em;
+	margin-left: -7.1875em;
+}
+.ui-loader-textonly .ui-icon-loading {
+	display: none;
+}
+.ui-loader-fakefix {
+	position: absolute;
+}
+/* Headers, content panels */
+.ui-bar,
+.ui-body {
+	position: relative;
+	padding: .4em 1em;
+	overflow: hidden;
+	display: block;
+	clear: both;
+}
+.ui-bar h1,
+.ui-bar h2,
+.ui-bar h3,
+.ui-bar h4,
+.ui-bar h5,
+.ui-bar h6 {
+	margin: 0;
+	padding: 0;
+	font-size: 1em;
+	display: inline-block;
+}
+.ui-header,
+.ui-footer {
+	border-width: 1px 0;
+	border-style: solid;
+	position: relative;
+}
+.ui-header:empty,
+.ui-footer:empty {
+	min-height: 2.6875em;
+}
+.ui-header .ui-title,
+.ui-footer .ui-title {
+	font-size: 1em;
+	min-height: 1.1em;
+	text-align: center;
+	display: block;
+	margin: 0 30%;
+	padding: .7em 0;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+	outline: 0 !important;
+}
+.ui-footer .ui-title {
+	margin: 0 1em;
+}
+.ui-content {
+	border-width: 0;
+	overflow: visible;
+	overflow-x: hidden;
+	padding: 1em;
+}
+/* Corner styling for dialogs and popups */
+.ui-corner-all > .ui-header:first-child,
+.ui-corner-all > .ui-content:first-child,
+.ui-corner-all > .ui-footer:first-child {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+}
+.ui-corner-all > .ui-header:last-child,
+.ui-corner-all > .ui-content:last-child,
+.ui-corner-all > .ui-footer:last-child {
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+/* Buttons and icons */
+.ui-btn {
+	font-size: 16px;
+	margin: .5em 0;
+	padding: .7em 1em;
+	display: block;
+	position: relative;
+	text-align: center;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+	cursor: pointer;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+.ui-btn-icon-notext,
+.ui-header button.ui-btn.ui-btn-icon-notext,
+.ui-footer button.ui-btn.ui-btn-icon-notext {
+	padding: 0;
+	width: 1.75em;
+	height: 1.75em;
+	text-indent: -9999px;
+	white-space: nowrap !important;
+}
+.ui-mini {
+	font-size: 12.5px;
+}
+.ui-mini .ui-btn {
+	font-size: inherit;
+}
+/* Make buttons in toolbars default to mini and inline. */
+.ui-header .ui-btn,
+.ui-footer .ui-btn {
+	font-size: 12.5px;
+	display: inline-block;
+	vertical-align: middle;
+}
+.ui-header .ui-controlgroup .ui-btn-icon-notext,
+.ui-footer .ui-controlgroup .ui-btn-icon-notext {
+    font-size: 12.5px;
+}
+/* To ensure same top and left/right position when ui-btn-left/right are added to something other than buttons. */
+.ui-header .ui-btn-left,
+.ui-header .ui-btn-right {
+	font-size: 12.5px;
+}
+.ui-mini.ui-btn-icon-notext,
+.ui-mini .ui-btn-icon-notext,
+.ui-header .ui-btn-icon-notext,
+.ui-footer .ui-btn-icon-notext {
+	font-size: 16px;	
+	padding: 0;
+}
+.ui-btn-inline {
+	display: inline-block;
+	vertical-align: middle;
+	margin-right: .625em;
+}
+.ui-btn-icon-left {
+	padding-left: 2.5em;
+}
+.ui-btn-icon-right {
+	padding-right: 2.5em;
+}
+.ui-btn-icon-top {
+	padding-top: 2.5em;
+}
+.ui-btn-icon-bottom {
+	padding-bottom: 2.5em;
+}
+.ui-header .ui-btn-icon-top,
+.ui-footer .ui-btn-icon-top,
+.ui-header .ui-btn-icon-bottom,
+.ui-footer .ui-btn-icon-bottom {
+	padding-left: .3125em;
+	padding-right: .3125em;
+}
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after,
+.ui-btn-icon-notext:after {
+	content: "";
+	position: absolute;
+	display: block;
+	width: 22px;
+	height: 22px;
+}
+.ui-btn-icon-notext:after,
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after {
+	top: 50%;
+	margin-top: -11px;
+}
+.ui-btn-icon-left:after {
+	left: .5625em;
+}
+.ui-btn-icon-right:after {
+	right: .5625em;
+}
+.ui-mini.ui-btn-icon-left:after,
+.ui-mini .ui-btn-icon-left:after,
+.ui-header .ui-btn-icon-left:after,
+.ui-footer .ui-btn-icon-left:after {
+	left: .37em;
+}
+.ui-mini.ui-btn-icon-right:after,
+.ui-mini .ui-btn-icon-right:after,
+.ui-header .ui-btn-icon-right:after,
+.ui-footer .ui-btn-icon-right:after {
+	right: .37em;
+}
+.ui-btn-icon-notext:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after {
+	left: 50%;
+	margin-left: -11px;
+}
+.ui-btn-icon-top:after {
+	top: .5625em;
+}
+.ui-btn-icon-bottom:after {
+	top: auto;
+	bottom: .5625em;
+}
+/* Buttons in header position classes */
+.ui-header .ui-btn-left,
+.ui-header .ui-btn-right,
+.ui-btn-left > [class*="ui-"],
+.ui-btn-right > [class*="ui-"] {
+	margin: 0;
+}
+.ui-btn-left,
+.ui-btn-right {
+	position: absolute;
+	top: .24em;
+}
+.ui-btn-left {
+	left: .4em;
+}
+.ui-btn-right {
+	right: .4em;
+}
+.ui-btn-icon-notext.ui-btn-left {
+	top: .3125em;
+	left: .3125em;
+}
+.ui-btn-icon-notext.ui-btn-right {
+	top: .3125em;
+	right: .3125em;
+}
+/* Button elements */
+button.ui-btn,
+.ui-controlgroup-controls button.ui-btn-icon-notext {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	width: 100%;
+}
+button.ui-btn-inline,
+.ui-header button.ui-btn,
+.ui-footer button.ui-btn {
+	width: auto;
+}
+/* Firefox adds a 1px border in a button element. We negate this to make sure they have the same height as other buttons in controlgroups. */
+button.ui-btn::-moz-focus-inner {
+	border: 0;
+}
+button.ui-btn-icon-notext,
+.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn {
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+	width: 1.75em;
+}
+/* Form labels */
+.ui-mobile label,
+.ui-controlgroup-label {
+	display: block;
+	margin: 0 0 .4em;
+}
+/* Accessible content hiding */
+/* ui-hide-label deprecated in 1.4. TODO: Remove in 1.5 */
+.ui-hide-label > label,
+.ui-hide-label .ui-controlgroup-label,
+.ui-hide-label .ui-rangeslider label,
+.ui-hidden-accessible {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+/* Used for hiding elements by the filterable widget. You can also use this class to hide list items or buttons in controlgroups; this ensures correct corner styling. */
+.ui-screen-hidden {
+	display: none !important;
+}
+/* Transitions originally inspired by those from jQtouch, nice work, folks */
+.ui-mobile-viewport-transitioning,
+.ui-mobile-viewport-transitioning .ui-page {
+	width: 100%;
+	height: 100%;
+	overflow: hidden;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+}
+.ui-page-pre-in {
+	opacity: 0;
+}
+.in {
+	-webkit-animation-timing-function: ease-out;
+	-webkit-animation-duration: 350ms;
+	-moz-animation-timing-function: ease-out;
+	-moz-animation-duration: 350ms;
+	animation-timing-function: ease-out;
+	animation-duration: 350ms;
+}
+.out {
+	-webkit-animation-timing-function: ease-in;
+	-webkit-animation-duration: 225ms;
+	-moz-animation-timing-function: ease-in;
+	-moz-animation-duration: 225ms;
+	animation-timing-function: ease-in;
+	animation-duration: 225ms;
+}
+@-webkit-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-moz-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-webkit-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+@-moz-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+@keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+.fade.out {
+	opacity: 0;
+	-webkit-animation-duration: 125ms;
+	-webkit-animation-name: fadeout;
+	-moz-animation-duration: 125ms;
+	-moz-animation-name: fadeout;
+	animation-duration: 125ms;
+	animation-name: fadeout;
+}
+.fade.in {
+	opacity: 1;
+	-webkit-animation-duration: 225ms;
+	-webkit-animation-name: fadein;
+	-moz-animation-duration: 225ms;
+	-moz-animation-name: fadein;
+	animation-duration: 225ms;
+	animation-name: fadein;
+}
+.pop {
+	-webkit-transform-origin: 50% 50%;
+	-moz-transform-origin: 50% 50%;
+	transform-origin: 50% 50%;
+}
+.pop.in {
+	-webkit-transform: scale(1);
+	-webkit-animation-name: popin;
+	-webkit-animation-duration: 350ms;
+	-moz-transform: scale(1);
+	-moz-animation-name: popin;
+	-moz-animation-duration: 350ms;
+	transform: scale(1);
+	animation-name: popin;
+	animation-duration: 350ms;
+    opacity: 1;
+}
+.pop.out {
+	-webkit-animation-name: fadeout;
+	-webkit-animation-duration: 100ms;
+	-moz-animation-name: fadeout;
+	-moz-animation-duration: 100ms;
+	animation-name: fadeout;
+	animation-duration: 100ms;
+	opacity: 0;
+}
+.pop.in.reverse {
+	-webkit-animation-name: fadein;
+	-moz-animation-name: fadein;
+	animation-name: fadein;
+}
+.pop.out.reverse {
+	-webkit-transform: scale(.8);
+	-webkit-animation-name: popout;
+	-moz-transform: scale(.8);
+	-moz-animation-name: popout;
+	transform: scale(.8);
+	animation-name: popout;
+}
+@-webkit-keyframes popin {
+    from {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+}
+@-moz-keyframes popin {
+    from {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+}
+@keyframes popin {
+    from {
+        transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        transform: scale(1);
+        opacity: 1;
+    }
+}
+@-webkit-keyframes popout {
+    from {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+}
+@-moz-keyframes popout {
+    from {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+}
+@keyframes popout {
+    from {
+        transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        transform: scale(.8);
+        opacity: 0;
+    }
+}
+/* keyframes for slidein from sides */
+@-webkit-keyframes slideinfromright {
+    from { -webkit-transform: translate3d(100%,0,0); }
+    to { -webkit-transform: translate3d(0,0,0); }
+}
+@-moz-keyframes slideinfromright {
+    from { -moz-transform: translateX(100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromright {
+    from { transform: translateX(100%); }
+    to { transform: translateX(0); }
+}
+@-webkit-keyframes slideinfromleft {
+    from { -webkit-transform: translate3d(-100%,0,0); }
+    to { -webkit-transform: translate3d(0,0,0); }
+}
+@-moz-keyframes slideinfromleft {
+    from { -moz-transform: translateX(-100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromleft {
+    from { transform: translateX(-100%); }
+    to { transform: translateX(0); }
+}
+/* keyframes for slideout to sides */
+@-webkit-keyframes slideouttoleft {
+    from { -webkit-transform: translate3d(0,0,0); }
+    to { -webkit-transform: translate3d(-100%,0,0); }
+}
+@-moz-keyframes slideouttoleft {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(-100%); }
+}
+@keyframes slideouttoleft {
+    from { transform: translateX(0); }
+    to { transform: translateX(-100%); }
+}
+@-webkit-keyframes slideouttoright {
+    from { -webkit-transform: translate3d(0,0,0); }
+    to { -webkit-transform: translate3d(100%,0,0); }
+}
+@-moz-keyframes slideouttoright {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(100%); }
+}
+@keyframes slideouttoright {
+    from { transform: translateX(0); }
+    to { transform: translateX(100%); }
+}
+.slide.out, .slide.in {
+	-webkit-animation-timing-function: ease-out;
+	-webkit-animation-duration: 350ms;
+	-moz-animation-timing-function: ease-out;
+	-moz-animation-duration: 350ms;
+	animation-timing-function: ease-out;
+	animation-duration: 350ms;
+}
+.slide.out {
+	-webkit-transform: translate3d(-100%,0,0);
+	-webkit-animation-name: slideouttoleft;
+	-moz-transform: translateX(-100%);
+	-moz-animation-name: slideouttoleft;
+	transform: translateX(-100%);
+	animation-name: slideouttoleft;
+}
+.slide.in {
+	-webkit-transform: translate3d(0,0,0);
+	-webkit-animation-name: slideinfromright;
+	-moz-transform: translateX(0);
+	-moz-animation-name: slideinfromright;
+	transform: translateX(0);
+	animation-name: slideinfromright;
+}
+.slide.out.reverse {
+	-webkit-transform: translate3d(100%,0,0);
+	-webkit-animation-name: slideouttoright;
+	-moz-transform: translateX(100%);
+	-moz-animation-name: slideouttoright;
+	transform: translateX(100%);
+	animation-name: slideouttoright;
+}
+.slide.in.reverse {
+	-webkit-transform: translate3d(0,0,0);
+	-webkit-animation-name: slideinfromleft;
+	-moz-transform: translateX(0);
+	-moz-animation-name: slideinfromleft;
+	transform: translateX(0);
+	animation-name: slideinfromleft;
+}
+.slidefade.out {
+	-webkit-transform: translateX(-100%);
+	-webkit-animation-name: slideouttoleft;
+	-webkit-animation-duration: 225ms;
+	-moz-transform: translateX(-100%);
+	-moz-animation-name: slideouttoleft;
+	-moz-animation-duration: 225ms;
+	transform: translateX(-100%);
+	animation-name: slideouttoleft;
+	animation-duration: 225ms;
+}
+.slidefade.in {
+	-webkit-transform: translateX(0);
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateX(0);
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 200ms;
+	transform: translateX(0);
+	animation-name: fadein;
+	animation-duration: 200ms;
+}
+.slidefade.out.reverse {
+	-webkit-transform: translateX(100%);
+	-webkit-animation-name: slideouttoright;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateX(100%);
+	-moz-animation-name: slideouttoright;
+	-moz-animation-duration: 200ms;
+	transform: translateX(100%);
+	animation-name: slideouttoright;
+	animation-duration: 200ms;
+}
+.slidefade.in.reverse {
+	-webkit-transform: translateX(0);
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateX(0);
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 200ms;
+	transform: translateX(0);
+	animation-name: fadein;
+	animation-duration: 200ms;
+}
+/* slide down */
+.slidedown.out {
+	-webkit-animation-name: fadeout;
+	-webkit-animation-duration: 100ms;
+	-moz-animation-name: fadeout;
+	-moz-animation-duration: 100ms;
+	animation-name: fadeout;
+	animation-duration: 100ms;
+}
+.slidedown.in {
+	-webkit-transform: translateY(0);
+	-webkit-animation-name: slideinfromtop;
+	-webkit-animation-duration: 250ms;
+	-moz-transform: translateY(0);
+	-moz-animation-name: slideinfromtop;
+	-moz-animation-duration: 250ms;
+	transform: translateY(0);
+	animation-name: slideinfromtop;
+	animation-duration: 250ms;
+}
+.slidedown.in.reverse {
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 150ms;
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 150ms;
+	animation-name: fadein;
+	animation-duration: 150ms;
+}
+.slidedown.out.reverse {
+	-webkit-transform: translateY(-100%);
+	-webkit-animation-name: slideouttotop;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateY(-100%);
+	-moz-animation-name: slideouttotop;
+	-moz-animation-duration: 200ms;
+	transform: translateY(-100%);
+	animation-name: slideouttotop;
+	animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfromtop {
+    from { -webkit-transform: translateY(-100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfromtop {
+    from { -moz-transform: translateY(-100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfromtop {
+    from { transform: translateY(-100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttotop {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(-100%); }
+}
+@-moz-keyframes slideouttotop {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(-100%); }
+}
+@keyframes slideouttotop {
+    from { transform: translateY(0); }
+    to { transform: translateY(-100%); }
+}
+/* slide up */
+.slideup.out {
+	-webkit-animation-name: fadeout;
+	-webkit-animation-duration: 100ms;
+	-moz-animation-name: fadeout;
+	-moz-animation-duration: 100ms;
+	animation-name: fadeout;
+	animation-duration: 100ms;
+}
+.slideup.in {
+	-webkit-transform: translateY(0);
+	-webkit-animation-name: slideinfrombottom;
+	-webkit-animation-duration: 250ms;
+	-moz-transform: translateY(0);
+	-moz-animation-name: slideinfrombottom;
+	-moz-animation-duration: 250ms;
+	transform: translateY(0);
+	animation-name: slideinfrombottom;
+	animation-duration: 250ms;
+}
+.slideup.in.reverse {
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 150ms;
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 150ms;
+	animation-name: fadein;
+	animation-duration: 150ms;
+}
+.slideup.out.reverse {
+	-webkit-transform: translateY(100%);
+	-webkit-animation-name: slideouttobottom;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateY(100%);
+	-moz-animation-name: slideouttobottom;
+	-moz-animation-duration: 200ms;
+	transform: translateY(100%);
+	animation-name: slideouttobottom;
+	animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfrombottom {
+    from { -webkit-transform: translateY(100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfrombottom {
+    from { -moz-transform: translateY(100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfrombottom {
+    from { transform: translateY(100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttobottom {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(100%); }
+}
+@-moz-keyframes slideouttobottom {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(100%); }
+}
+@keyframes slideouttobottom {
+    from { transform: translateY(0); }
+    to { transform: translateY(100%); }
+}
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-flip {
+	-webkit-perspective: 1000;
+	-moz-perspective: 1000;
+	perspective: 1000;
+	position: absolute;
+}
+.flip {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+	-moz-backface-visibility: hidden;
+	-moz-transform: translateX(0);
+	backface-visibility: hidden;
+	transform: translateX(0);
+}
+.flip.out {
+	-webkit-transform: rotateY(-90deg) scale(.9);
+	-webkit-animation-name: flipouttoleft;
+	-webkit-animation-duration: 175ms;
+	-moz-transform: rotateY(-90deg) scale(.9);
+	-moz-animation-name: flipouttoleft;
+	-moz-animation-duration: 175ms;
+	transform: rotateY(-90deg) scale(.9);
+	animation-name: flipouttoleft;
+	animation-duration: 175ms;
+}
+.flip.in {
+	-webkit-animation-name: flipintoright;
+	-webkit-animation-duration: 225ms;
+	-moz-animation-name: flipintoright;
+	-moz-animation-duration: 225ms;
+	animation-name: flipintoright;
+	animation-duration: 225ms;
+}
+.flip.out.reverse {
+	-webkit-transform: rotateY(90deg) scale(.9);
+	-webkit-animation-name: flipouttoright;
+	-moz-transform: rotateY(90deg) scale(.9);
+	-moz-animation-name: flipouttoright;
+	transform: rotateY(90deg) scale(.9);
+	animation-name: flipouttoright;
+}
+.flip.in.reverse {
+	-webkit-animation-name: flipintoleft;
+	-moz-animation-name: flipintoleft;
+	animation-name: flipintoleft;
+}
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-turn {
+	-webkit-perspective: 200px;
+	-moz-perspective: 200px;
+	-ms-perspective: 200px;
+	perspective: 200px;
+	position: absolute;
+}
+.turn {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+	-webkit-transform-origin: 0;
+	
+	-moz-backface-visibility: hidden;
+	-moz-transform: translateX(0);
+	-moz-transform-origin: 0;
+	
+	backface-visibility :hidden;
+	transform: translateX(0);
+	transform-origin: 0;
+}
+.turn.out {
+	-webkit-transform: rotateY(-90deg) scale(.9);
+	-webkit-animation-name: flipouttoleft;
+	-webkit-animation-duration: 125ms;
+	-moz-transform: rotateY(-90deg) scale(.9);
+	-moz-animation-name: flipouttoleft;
+	-moz-animation-duration: 125ms;
+	transform: rotateY(-90deg) scale(.9);
+	animation-name: flipouttoleft;
+	animation-duration: 125ms;
+}
+.turn.in {
+	-webkit-animation-name: flipintoright;
+	-webkit-animation-duration: 250ms;
+	-moz-animation-name: flipintoright;
+	-moz-animation-duration: 250ms;
+	animation-name: flipintoright;
+	animation-duration: 250ms;
+	
+}
+.turn.out.reverse {
+	-webkit-transform: rotateY(90deg) scale(.9);
+	-webkit-animation-name: flipouttoright;
+	-moz-transform: rotateY(90deg) scale(.9);
+	-moz-animation-name: flipouttoright;
+	transform: rotateY(90deg) scale(.9);
+	animation-name: flipouttoright;
+}
+.turn.in.reverse {
+	-webkit-animation-name: flipintoleft;
+	-moz-animation-name: flipintoleft;
+	animation-name: flipintoleft;
+}
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* flow transition */
+.flow {
+	-webkit-transform-origin: 50% 30%;
+	-webkit-box-shadow: 0 0 20px rgba(0,0,0,.4);
+	-moz-transform-origin: 50% 30%;	
+	-moz-box-shadow: 0 0 20px rgba(0,0,0,.4);
+	transform-origin: 50% 30%;	
+	box-shadow: 0 0 20px rgba(0,0,0,.4);
+}
+.ui-dialog.flow {
+	-webkit-transform-origin: none;
+	-webkit-box-shadow: none;
+	-moz-transform-origin: none;	
+	-moz-box-shadow: none;
+	transform-origin: none;	
+	box-shadow: none;
+}
+.flow.out {
+	-webkit-transform: translateX(-100%) scale(.7);
+	-webkit-animation-name: flowouttoleft;
+	-webkit-animation-timing-function: ease;
+	-webkit-animation-duration: 350ms;
+	-moz-transform: translateX(-100%) scale(.7);
+	-moz-animation-name: flowouttoleft;
+	-moz-animation-timing-function: ease;
+	-moz-animation-duration: 350ms;
+	transform: translateX(-100%) scale(.7);
+	animation-name: flowouttoleft;
+	animation-timing-function: ease;
+	animation-duration: 350ms;
+}
+.flow.in {
+	-webkit-transform: translateX(0) scale(1);
+	-webkit-animation-name: flowinfromright;
+	-webkit-animation-timing-function: ease;
+	-webkit-animation-duration: 350ms;
+	-moz-transform: translateX(0) scale(1);
+	-moz-animation-name: flowinfromright;
+	-moz-animation-timing-function: ease;
+	-moz-animation-duration: 350ms;
+	transform: translateX(0) scale(1);
+	animation-name: flowinfromright;
+	animation-timing-function: ease;
+	animation-duration: 350ms;
+}
+.flow.out.reverse {
+	-webkit-transform: translateX(100%);
+	-webkit-animation-name: flowouttoright;
+	-moz-transform: translateX(100%);
+	-moz-animation-name: flowouttoright;
+	transform: translateX(100%);
+	animation-name: flowouttoright;
+}
+.flow.in.reverse {
+	-webkit-animation-name: flowinfromleft;
+	-moz-animation-name: flowinfromleft;
+	animation-name: flowinfromleft;
+}
+@-webkit-keyframes flowouttoleft {
+    0% { -webkit-transform: translateX(0) scale(1); }
+	60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(-100%) scale(.7); }
+}
+@-moz-keyframes flowouttoleft {
+    0% { -moz-transform: translateX(0) scale(1); }
+	60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(-100%) scale(.7); }
+}
+@keyframes flowouttoleft {
+    0% { transform: translateX(0) scale(1); }
+	60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(-100%) scale(.7); }
+}
+@-webkit-keyframes flowouttoright {
+    0% { -webkit-transform: translateX(0) scale(1); }
+	60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform:  translateX(100%) scale(.7); }
+}
+@-moz-keyframes flowouttoright {
+    0% { -moz-transform: translateX(0) scale(1); }
+	60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(100%) scale(.7); }
+}
+@keyframes flowouttoright {
+    0% { transform: translateX(0) scale(1); }
+	60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(100%) scale(.7); }
+}
+@-webkit-keyframes flowinfromleft {
+    0% { -webkit-transform: translateX(-100%) scale(.7); }
+	30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromleft {
+    0% { -moz-transform: translateX(-100%) scale(.7); }
+	30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromleft {
+    0% { transform: translateX(-100%) scale(.7); }
+	30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+@-webkit-keyframes flowinfromright {
+    0% { -webkit-transform: translateX(100%) scale(.7); }
+	30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromright {
+    0% { -moz-transform: translateX(100%) scale(.7); }
+	30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromright {
+    0% { transform: translateX(100%) scale(.7); }
+	30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+.ui-field-contain,
+.ui-mobile fieldset.ui-field-contain {
+	display: block;
+	position: relative;
+	overflow: visible;
+	clear: both;
+	padding: .8em 0;
+}
+.ui-field-contain > label ~ [class*="ui-"],
+.ui-field-contain .ui-controlgroup-controls {
+	margin: 0;
+}
+.ui-field-contain:last-child {
+	border-bottom-width: 0;
+}
+@media (min-width: 28em) {
+	.ui-field-contain,
+	.ui-mobile fieldset.ui-field-contain {
+		padding: 0;
+		margin: 1em 0;
+		border-bottom-width: 0;
+	}
+	.ui-field-contain:before,
+	.ui-field-contain:after {
+		content: "";
+		display: table;
+	}
+	.ui-field-contain:after {
+		clear: both;
+	}
+	.ui-field-contain > label,
+	.ui-field-contain .ui-controlgroup-label,
+	.ui-field-contain > .ui-rangeslider > label {
+		float: left;
+		width: 20%;
+		margin: .5em 2% 0 0;
+	}
+	.ui-popup .ui-field-contain > label,
+	.ui-popup .ui-field-contain .ui-controlgroup-label,
+	.ui-popup .ui-field-contain > .ui-rangeslider > label {
+		float: none;
+		width: auto;
+		margin: 0 0 .4em;
+	}
+	.ui-field-contain > label ~ [class*="ui-"],
+	.ui-field-contain .ui-controlgroup-controls {
+		float: left;
+		width: 78%;
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		box-sizing: border-box;
+	}
+	/* ui-hide-label deprecated in 1.4. TODO: Remove in 1.5 */
+	.ui-hide-label > label ~ [class*="ui-"],
+	.ui-hide-label .ui-controlgroup-controls,
+	.ui-popup .ui-field-contain > label ~ [class*="ui-"],
+	.ui-popup .ui-field-contain .ui-controlgroup-controls {
+		float: none;
+		width: 100%;
+	}
+	.ui-field-contain > label ~ .ui-btn-inline {
+		width: auto;
+		margin-right: .625em;
+	}
+	.ui-field-contain > label ~ .ui-btn-inline.ui-btn-icon-notext {
+		width: 1.75em;
+	}
+}
+/* content configurations. */
+.ui-grid-a,
+.ui-grid-b,
+.ui-grid-c,
+.ui-grid-d,
+.ui-grid-solo {
+	overflow: hidden;
+}
+.ui-block-a,
+.ui-block-b,
+.ui-block-c,
+.ui-block-d,
+.ui-block-e {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	float: left;
+	min-height: 1px;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+}
+/* force new row */
+.ui-block-a {
+	clear: left;
+}
+ul.ui-grid-a,
+ul.ui-grid-b,
+ul.ui-grid-c,
+ul.ui-grid-d,
+ul.ui-grid-solo,
+li.ui-block-a,
+li.ui-block-b,
+li.ui-block-c,
+li.ui-block-d,
+li.ui-block-e {
+	margin-left: 0;
+	margin-right: 0;
+	padding: 0;
+	list-style: none;
+}
+/* No margin in grids for 100% width button elements until we can use max-width: fill-available; */
+[class*="ui-block-"] > button.ui-btn {
+	margin-right: 0;
+	margin-left: 0;
+}
+[class*="ui-block-"] > .ui-btn,
+[class*="ui-block-"] > .ui-select,
+[class*="ui-block-"] > .ui-checkbox,
+[class*="ui-block-"] > .ui-radio,
+[class*="ui-block-"] > button.ui-btn-inline,
+[class*="ui-block-"] > button.ui-btn-icon-notext,
+.ui-header [class*="ui-block-"] > button.ui-btn,
+.ui-footer [class*="ui-block-"] > button.ui-btn {
+	margin-right: .3125em;
+	margin-left: .3125em;
+}
+.ui-grid-a > .ui-block-a,
+.ui-grid-a > .ui-block-b {
+	/* width: 49.95%; IE7 */
+	/* margin-right: -.5px; BB5 */
+	width: 50%;
+}
+.ui-grid-b > .ui-block-a,
+.ui-grid-b > .ui-block-b,
+.ui-grid-b > .ui-block-c {
+	/* width: 33.25%; IE7 */
+	/* margin-right: -.5px; BB5 */
+	width: 33.333%;
+}
+.ui-grid-c > .ui-block-a,
+.ui-grid-c > .ui-block-b,
+.ui-grid-c > .ui-block-c,
+.ui-grid-c > .ui-block-d {
+	/* width: 24.925%; IE7 */
+	/* margin-right: -.5px; BB5 */
+	width: 25%;
+}
+.ui-grid-d > .ui-block-a,
+.ui-grid-d > .ui-block-b,
+.ui-grid-d > .ui-block-c,
+.ui-grid-d > .ui-block-d,
+.ui-grid-d > .ui-block-e {
+	/* width: 19.925%; IE7 */
+	width: 20%;
+}
+.ui-grid-solo > .ui-block-a {
+	width: 100%;
+	float: none; 
+}
+/* preset breakpoint to switch to stacked grid styles below 35em (560px) */
+@media (max-width: 35em) {
+	.ui-responsive > .ui-block-a,
+	.ui-responsive > .ui-block-b,
+	.ui-responsive > .ui-block-c,
+	.ui-responsive > .ui-block-d,
+	.ui-responsive > .ui-block-e {
+		width: 100%; 
+		float: none; 
+	}
+}
+/* fixed page header & footer configuration */
+.ui-header-fixed,
+.ui-footer-fixed {
+	left: 0;
+	right: 0;
+	width: 100%;
+	position: fixed;
+	z-index: 1000;
+}
+.ui-header-fixed {
+	top: -1px;
+	padding-top: 1px;
+}
+.ui-header-fixed.ui-fixed-hidden {
+	top: 0;
+	padding-top: 0;
+}
+.ui-header-fixed .ui-btn-left,
+.ui-header-fixed .ui-btn-right {
+	margin-top: 1px;
+}
+.ui-header-fixed.ui-fixed-hidden .ui-btn-left,
+.ui-header-fixed.ui-fixed-hidden .ui-btn-right {
+	margin-top: 0;
+}
+.ui-footer-fixed {
+	bottom: -1px;
+	padding-bottom: 1px;
+}
+.ui-footer-fixed.ui-fixed-hidden {
+	bottom: 0;
+	padding-bottom: 0;
+}
+.ui-header-fullscreen,
+.ui-footer-fullscreen {
+	filter: Alpha(Opacity=90);
+	opacity: .9;
+}
+/* updatePagePadding() will update the padding to actual height of header and footer. */
+.ui-page-header-fixed {
+	padding-top: 2.8125em;
+}
+.ui-page-footer-fixed {
+	padding-bottom: 2.8125em;
+}
+.ui-page-header-fullscreen > .ui-content,
+.ui-page-footer-fullscreen > .ui-content {
+	padding: 0;
+}
+.ui-fixed-hidden {
+	position: absolute;
+}
+/* Tap toggle: hide external fixed footer. See issue #6604 */
+.ui-footer-fixed.ui-fixed-hidden {
+  display: none;
+}
+.ui-page .ui-footer-fixed.ui-fixed-hidden {
+  display: block
+}
+.ui-page-header-fullscreen .ui-fixed-hidden,
+.ui-page-footer-fullscreen .ui-fixed-hidden {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-header-fixed .ui-btn,
+.ui-footer-fixed .ui-btn { 
+	z-index: 10;
+}
+/* workarounds for other widgets */
+.ui-android-2x-fixed .ui-li-has-thumb {
+	-webkit-transform: translate3d(0,0,0);
+}
+.ui-navbar {
+	max-width: 100%;
+}
+.ui-navbar ul:before,
+.ui-navbar ul:after {
+	content: "";
+	display: table;
+}
+.ui-navbar ul:after {
+	clear: both;
+}
+.ui-navbar ul {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+	position: relative;
+	display: block;
+	border: 0;
+	max-width: 100%;
+	overflow: visible;
+}
+.ui-navbar li .ui-btn {
+	font-size: 12.5px;
+	display: block;
+	margin: 0;
+	border-right-width: 0;
+}
+.ui-header .ui-navbar li button.ui-btn,
+.ui-footer .ui-navbar li button.ui-btn {
+	margin: 0;
+	width: 100%;
+}
+.ui-navbar .ui-btn:focus {
+	z-index: 1;
+}
+/* fixes gaps caused by subpixel problem */
+.ui-navbar li:last-child .ui-btn {
+	margin-right: -4px;
+}
+.ui-navbar li:last-child .ui-btn:after {
+	margin-right: 4px;
+}
+.ui-content .ui-navbar li:last-child .ui-btn,
+.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn {
+	border-right-width: 1px;
+	margin-right: 0;
+}
+.ui-content .ui-navbar li:last-child .ui-btn:after,
+.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn:after {
+	margin-right: 0;
+}
+.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn {
+	border-right-width: 1px;
+	margin-right: -1px;
+}
+.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn:after {
+	margin-right: 1px;
+}
+.ui-navbar .ui-grid-duo .ui-btn {
+	border-top-width: 0;
+}
+.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn {
+	border-top-width: 1px;
+}
+.ui-header .ui-navbar .ui-btn,
+.ui-footer .ui-navbar .ui-btn {
+	border-top-width: 0;
+	border-bottom-width: 0;
+}
+.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn {
+	border-top-width: 0;
+}
+.ui-header .ui-title ~ .ui-navbar .ui-btn,
+.ui-footer .ui-title ~ .ui-navbar .ui-btn,
+.ui-header .ui-navbar .ui-grid-duo .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-btn,
+.ui-header .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-footer .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-header .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn,
+.ui-footer .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn {
+	border-top-width: 1px;
+}
+/* Hide the native input element */
+.ui-input-btn input {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	padding: 0;
+	border: 0;
+	outline: 0;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	cursor: pointer;
+	background: #fff;
+	background: rgba(255,255,255,0);
+	filter: Alpha(Opacity=0);
+	opacity: .1;
+	font-size: 1px;
+	text-indent: -9999px;
+	z-index: 2;
+}
+/* Fixes IE/WP filter alpha opacity bugs */
+.ui-input-btn.ui-state-disabled input {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-collapsible {
+	margin: 0 -1em;
+}
+.ui-collapsible-inset,
+.ui-collapsible-set {
+	margin: .5em 0;
+}
+.ui-collapsible-heading {
+	display: block;
+	margin: 0;
+	padding: 0;
+	position: relative;
+}
+.ui-collapsible-heading .ui-btn {
+	text-align: left;
+	margin: 0;
+	border-left-width: 0;
+	border-right-width: 0;
+}
+.ui-collapsible-heading .ui-btn-icon-top,
+.ui-collapsible-heading .ui-btn-icon-bottom {
+	text-align: center;
+}
+.ui-collapsible-inset .ui-collapsible-heading .ui-btn {
+	border-right-width: 1px;
+	border-left-width: 1px;
+}
+.ui-collapsible-collapsed + .ui-collapsible:not(.ui-collapsible-inset) > .ui-collapsible-heading .ui-btn {
+	border-top-width: 0;
+}
+.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn {
+	border-top-width: 1px;
+}
+.ui-collapsible-heading-status {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-collapsible-content {
+	display: block;
+	margin: 0;	
+	padding: .5em 1em;
+}
+.ui-collapsible-themed-content .ui-collapsible-content {
+	border-left-width: 0;
+	border-right-width: 0;
+	border-top-width: 0;
+	border-bottom-width: 1px;
+	border-style: solid;
+}
+.ui-collapsible-inset.ui-collapsible-themed-content .ui-collapsible-content {
+	border-left-width: 1px;
+	border-right-width: 1px;
+}
+.ui-collapsible-inset .ui-collapsible-content {
+	margin: 0;
+}
+.ui-collapsible-content-collapsed {
+	display: none;
+}
+.ui-collapsible-set > .ui-collapsible.ui-corner-all {
+	-webkit-border-radius: 0;
+	border-radius: 0;
+}
+.ui-collapsible-heading,
+.ui-collapsible-heading > .ui-btn {
+	-webkit-border-radius: inherit;	
+	border-radius: inherit;	
+}
+.ui-collapsible-set .ui-collapsible.ui-first-child {
+	-webkit-border-top-right-radius: inherit;	
+	border-top-right-radius: inherit;
+	-webkit-border-top-left-radius: inherit;	
+	border-top-left-radius: inherit;		
+}
+.ui-collapsible-content,
+.ui-collapsible-set .ui-collapsible.ui-last-child {
+	-webkit-border-bottom-right-radius: inherit;	
+	border-bottom-right-radius: inherit;
+	-webkit-border-bottom-left-radius: inherit;	
+	border-bottom-left-radius: inherit;		
+}
+.ui-collapsible-themed-content:not(.ui-collapsible-collapsed) > .ui-collapsible-heading {
+	-webkit-border-bottom-right-radius: 0;	
+	border-bottom-right-radius: 0;
+	-webkit-border-bottom-left-radius: 0;	
+	border-bottom-left-radius: 0;		
+}
+.ui-collapsible-set .ui-collapsible {
+	margin: -1px -1em 0;
+}
+.ui-collapsible-set .ui-collapsible-inset {
+	margin: -1px 0 0;
+}
+.ui-collapsible-set .ui-collapsible.ui-first-child {
+	margin-top: 0;
+}
+.ui-controlgroup,
+fieldset.ui-controlgroup {
+	padding: 0;
+	margin: .5em 0;
+}
+.ui-field-contain .ui-controlgroup,
+.ui-field-contain fieldset.ui-controlgroup {
+	margin: 0;
+}
+.ui-mini .ui-controlgroup-label {
+	font-size: 16px;
+}
+.ui-controlgroup.ui-mini .ui-btn-icon-notext,
+.ui-controlgroup .ui-mini.ui-btn-icon-notext {
+	font-size: inherit;
+}
+.ui-controlgroup-controls .ui-btn,
+.ui-controlgroup-controls .ui-checkbox,
+.ui-controlgroup-controls .ui-radio,
+.ui-controlgroup-controls .ui-select {
+	margin: 0;
+}
+.ui-controlgroup-controls .ui-btn:focus,
+.ui-controlgroup-controls .ui-btn.ui-focus {
+	z-index: 1;
+}
+.ui-controlgroup-controls li {
+	list-style: none;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls {
+	display: inline-block;
+	vertical-align: middle;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls:before,
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after {
+	content: "";
+	display: table;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after {
+	clear: both;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls > .ui-btn,
+.ui-controlgroup-horizontal .ui-controlgroup-controls li > .ui-btn,
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-checkbox,
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-radio,
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-select {
+	float: left;
+	clear: none;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn,
+.ui-controlgroup-controls .ui-btn-icon-notext {
+	width: auto;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn-icon-notext,
+.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn-icon-notext {
+	width: 1.5em;
+}
+ .ui-controlgroup-controls .ui-btn-icon-notext {
+	height: auto;
+	padding: .7em 1em;
+}
+.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn {
+	border-bottom-width: 0;
+}
+.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn.ui-last-child {
+	border-bottom-width: 1px;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn {
+	border-right-width: 0;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn.ui-last-child {
+	border-right-width: 1px;
+}
+.ui-controlgroup-controls .ui-btn-corner-all,
+.ui-controlgroup-controls .ui-btn.ui-corner-all {
+	-webkit-border-radius: 0;
+	border-radius: 0;
+}
+.ui-controlgroup-controls,
+.ui-controlgroup-controls .ui-radio,
+.ui-controlgroup-controls .ui-checkbox,
+.ui-controlgroup-controls .ui-select,
+.ui-controlgroup-controls li {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-first-child {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-last-child {
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-first-child {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-last-child {
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+.ui-controlgroup-controls a.ui-shadow:not(:focus),
+.ui-controlgroup-controls button.ui-shadow:not(:focus),
+.ui-controlgroup-controls div.ui-shadow:not(.ui-focus) {
+	-moz-box-shadow: none;
+	-webkit-box-shadow: none;
+	box-shadow: none;
+}
+/* Fixes legend not wrapping on IE10 */
+.ui-controlgroup-label legend {
+	max-width: 100%;
+}
+.ui-controlgroup-controls > label {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-dialog {
+	 background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */
+}
+.ui-dialog-contain {
+	width: 92.5%;
+	max-width: 500px;
+	margin: 10% auto 1em auto;
+	padding: 0;
+	position: relative;
+	top: -1em;
+}
+.ui-dialog-contain > .ui-header, 
+.ui-dialog-contain > .ui-content, 
+.ui-dialog-contain > .ui-footer { 
+	display: block;
+	position: relative; 
+	width: auto;
+	margin: 0;
+}
+.ui-dialog-contain > .ui-header {
+	overflow: hidden;
+	z-index: 10; 
+	padding: 0;
+	border-top-width: 0;
+}
+.ui-dialog-contain > .ui-footer {
+	z-index: 10; 
+	padding: 0 1em; 
+	border-bottom-width: 0;
+}
+.ui-popup-open .ui-header-fixed,
+.ui-popup-open .ui-footer-fixed {
+	position: absolute !important; /* See issues #4816, #4844 and #4874 and popup.js */
+}
+.ui-popup-screen {
+	background-image: url("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="); /* Necessary to set some form of background to ensure element is clickable in IE6/7. While legacy IE won't understand the data-URI'd image, it ensures no additional requests occur in all other browsers with little overhead. */
+	top: 0;
+	left: 0;
+	right: 0;
+	bottom: 1px;
+	position: absolute;
+	filter: Alpha(Opacity=0);
+	opacity: 0;
+	z-index: 1099;
+}
+.ui-popup-screen.in {
+	opacity: 0.5;
+	filter: Alpha(Opacity=50);
+}
+.ui-popup-screen.out {
+	opacity: 0;
+	filter: Alpha(Opacity=0);
+}
+.ui-popup-container {
+	z-index: 1100;
+	display: inline-block;
+	position: absolute;
+	padding: 0;
+	outline: 0;
+}
+.ui-popup {
+	position: relative;
+}
+.ui-popup.ui-body-inherit {
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-popup-hidden {
+	left: 0;
+	top: 0;
+	position: absolute !important;
+	visibility: hidden;
+}
+.ui-popup-truncate {
+	height: 1px;
+	width: 1px;
+	margin: -1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-popup.ui-content,
+.ui-popup .ui-content {
+	overflow: visible;
+}
+.ui-popup > .ui-header {
+	border-top-width: 0;
+}
+.ui-popup > .ui-footer {
+	border-bottom-width: 0;
+}
+.ui-popup > p,
+.ui-popup > h1,
+.ui-popup > h2,
+.ui-popup > h3,
+.ui-popup > h4,
+.ui-popup > h5,
+.ui-popup > h6 {
+	margin: .5em .4375em;
+}
+.ui-popup > span {
+	display: block;
+	margin: .5em .4375em;
+}
+.ui-popup-container .ui-content > p,
+.ui-popup-container .ui-content > h1,
+.ui-popup-container .ui-content > h2,
+.ui-popup-container .ui-content > h3,
+.ui-popup-container .ui-content > h4,
+.ui-popup-container .ui-content > h5,
+.ui-popup-container .ui-content > h6 {
+	margin: .5em 0;
+}
+.ui-popup-container .ui-content > span {
+	margin: 0;
+}
+.ui-popup-container .ui-content > p:first-child,
+.ui-popup-container .ui-content > h1:first-child,
+.ui-popup-container .ui-content > h2:first-child,
+.ui-popup-container .ui-content > h3:first-child,
+.ui-popup-container .ui-content > h4:first-child,
+.ui-popup-container .ui-content > h5:first-child,
+.ui-popup-container .ui-content > h6:first-child {
+	margin-top: 0;
+}
+.ui-popup-container .ui-content > p:last-child,
+.ui-popup-container .ui-content > h1:last-child,
+.ui-popup-container .ui-content > h2:last-child,
+.ui-popup-container .ui-content > h3:last-child,
+.ui-popup-container .ui-content > h4:last-child,
+.ui-popup-container .ui-content > h5:last-child,
+.ui-popup-container .ui-content > h6:last-child {
+	margin-bottom: 0;
+}
+.ui-popup > img {
+	max-width: 100%;
+	max-height: 100%;
+	vertical-align: middle;
+}
+.ui-popup:not(.ui-content) > img:only-child,
+.ui-popup:not(.ui-content) > .ui-btn-left:first-child + img:last-child,
+.ui-popup:not(.ui-content) > .ui-btn-right:first-child + img:last-child {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+.ui-popup iframe {
+	vertical-align: middle;
+}
+.ui-popup > .ui-btn-left,
+.ui-popup > .ui-btn-right {
+	position: absolute; 
+	top: -11px;
+	margin: 0;
+	z-index: 1101;
+}
+.ui-popup > .ui-btn-left {
+	left: -11px;
+}
+.ui-popup > .ui-btn-right {
+	right: -11px;
+}
+/* Dimensions related to the popup arrow
+-----------------------------------------------------------------------------------------------------------*/
+/* desired triangle height: 10px */
+/**
+ * guide for the arrow - its width, height, and offset are theme-dependent and
+ * should be expessed as left, right, top, bottom, so that the element bearing
+ * such a class becomes stretched inside its parent position: relative element.
+ * The left/top/right/bottom specified below should reflect the corresponding
+ * border radii and so it leaves room for the shadow:
+ *     ..--------------------..
+ *   ."        ^ top           ".
+ *  /          v                 \
+ * |     +------------------+     |
+ * |     |                  |     |
+ * | left|                  |right|
+ * |<--->|                  |<--->|
+ * |     +------------------+     |
+ *  \          ^                 /
+ *   `.        v bottom        .'
+ *     ""--------------------""
+ * The idea is that the top/left of the arrow container box does not move to a
+ * coordinate smaller than the top/left of the guide and the right/bottom of
+ * the arrow container box does not move to a coordinate larger than the
+ * bottom/right of the guide. This will help us avoid the following situation:
+ *        ..--------------------..
+ *      ."        ^ top           ".
+ *   /|/          v                 \
+ *  / |     +------------------+     |
+ *  \ |     |                  |     |
+ *   \| left|                  |right|
+ *    |<--->|                  |<--->|
+ *    |     +------------------+     |
+ *     \          ^                 /
+ *      `.        v bottom        .'
+ *        ""--------------------""
+ * The arrow should not receive a top/left coordinate such that it is too close
+ * to one of the corners, because then at first the shadow of the arrow and,
+ * given a coordinate even closer to the corner, even the body of the arrow will
+ * "stick out" of the corner of the popup. The guide provides a hint to the
+ * arrow positioning code as to which range of values is acceptable for the
+ * arrow container's top/left coordinate.
+ **/
+.ui-popup-arrow-container {
+	width: 20px;
+	height: 20px;
+}
+/* aside from the "infinities" (-1000,2000), triangle height is used */
+.ui-popup-arrow-container.ui-popup-arrow-l {
+	left: -10px;
+	clip: rect(-1000px,10px,2000px,-1000px);
+}
+.ui-popup-arrow-container.ui-popup-arrow-t {
+	top: -10px;
+	clip: rect(-1000px,2000px,10px,-1000px);
+}
+.ui-popup-arrow-container.ui-popup-arrow-r {
+	right: -10px;
+	clip: rect(-1000px,2000px,2000px,10px);
+}
+.ui-popup-arrow-container.ui-popup-arrow-b {
+	bottom: -10px;
+	clip: rect(10px,2000px,1000px,-1000px);
+}
+/**
+ * For each side, the arrow is twice the desired size and its corner is aligned
+ * with the edge of the container:
+ *                                           
+ *           /\         /\                +----+       /\
+ *          /  \       /  \               | /\ |top   /  \
+ *      +----+  \     /  +----+       +-->|/  \|     /    \
+ *  left| /  |   \   /   |  \ |right  |   |    |    /      \
+ *      |/   |    \ /    |   \|       |  /|    |\  /        \
+ *      |\   |    / \    |   /|       | / +----+ \ \ +----+ /
+ *      | \  |   /   \   |  / |       | \        /  \|    |/
+ *      +----+  /     \  +----+       |  \      /    |    |
+ *       ^  \  /       \  /  ^        |   \    /  +->|\  /|
+ *       |   \/         \/   |        |    \  /   |  | \/ |bottom
+ *       |                   |        |     \/    |  +----+
+ *       +-------------------+--------+-----------+
+ *                           |
+ *                    arrow container
+ *                     (clips arrow)
+ **/
+.ui-popup-arrow-container .ui-popup-arrow {
+	/* (4*desired triangle height)/sqrt(2) - does not account for border - centred within the outer rectangle */
+	width: 28.284271247px;
+	height: 28.284271247px;
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-popup-arrow-container.ui-popup-arrow-t .ui-popup-arrow {
+	left: -4.142135623px;
+	top: 5.857864376px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-b .ui-popup-arrow {
+	left: -4.142135623px;
+	top: -14.142135623px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-l .ui-popup-arrow {
+	left: 5.857864376px;
+	top: -4.142135623px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-r .ui-popup-arrow {
+	left: -14.142135623px;
+	top: -4.142135623px;
+}
+/* Fix rotation center for oldIE - see http://www.useragentman.com/IETransformsTranslator/ */
+.ui-popup-arrow-container.ui-popup-arrow-t.ie .ui-popup-arrow {
+    margin-left: -5.857864376269049px;
+    margin-top: -7.0710678118654755px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-b.ie .ui-popup-arrow {
+    margin-left: -5.857864376269049px;
+    margin-top: -4.142135623730951px;
+}
+ 
+.ui-popup-arrow-container.ui-popup-arrow-l.ie .ui-popup-arrow {
+    margin-left: -7.0710678118654755px;
+    margin-top: -5.857864376269049px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-r.ie .ui-popup-arrow {
+    margin-left: -4.142135623730951px;
+    margin-top: -5.857864376269049px;
+}
+/* structure */
+.ui-popup > .ui-popup-arrow-guide {
+	position: absolute;
+	left: 0;
+	right: 0;
+	top: 0;
+	bottom: 0;
+	visibility: hidden;
+}
+.ui-popup-arrow-container {
+	position: absolute;
+}
+.ui-popup-arrow {
+	-webkit-transform: rotate(45deg);
+	-moz-transform: rotate(45deg);
+	-ms-transform: rotate(45deg);
+	transform: rotate(45deg);
+	position: absolute;
+	overflow: hidden;
+	box-sizing: border-box;
+}
+.ui-popup-arrow-container.ie .ui-popup-arrow {
+	-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.7071067811865474, M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865474, SizingMethod='auto expand')";
+	filter: progid:DXImageTransform.Microsoft.Matrix(
+	      	M11=0.7071067811865474,
+        	M12=-0.7071067811865477,
+        	M21=0.7071067811865477,
+        	M22=0.7071067811865474,
+        	SizingMethod='auto expand');
+}
+.ui-checkbox,
+.ui-radio {
+	margin: .5em 0;
+	position: relative;
+}
+.ui-checkbox .ui-btn,
+.ui-radio .ui-btn {
+	margin: 0;
+	text-align: left;
+	white-space: normal; /* Nowrap + ellipsis doesn't work on label. Issue #1419. */
+	z-index: 2;
+}
+.ui-controlgroup .ui-checkbox .ui-btn.ui-focus,
+.ui-controlgroup .ui-radio .ui-btn.ui-focus {
+	z-index: 3;
+}
+.ui-checkbox .ui-btn-icon-top,
+.ui-radio .ui-btn-icon-top,
+.ui-checkbox .ui-btn-icon-bottom,
+.ui-radio .ui-btn-icon-bottom {
+	text-align: center;
+}
+.ui-controlgroup-horizontal .ui-checkbox .ui-btn:after,
+.ui-controlgroup-horizontal .ui-radio .ui-btn:after {
+	content: none;
+	display: none;
+}
+/* Native input positioning */
+.ui-checkbox input,
+.ui-radio input {
+	position: absolute;
+	left: .466em;
+	top: 50%;
+	width: 22px;
+	height: 22px;
+	margin: -11px 0 0 0;
+	outline: 0 !important;
+	z-index: 1;
+}
+.ui-controlgroup-horizontal .ui-checkbox input,
+.ui-controlgroup-horizontal .ui-radio input {
+	left: 50%;
+	margin-left: -9px;
+}
+.ui-checkbox input:disabled,
+.ui-radio input:disabled {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-select {
+	margin-top: .5em;
+	margin-bottom: .5em; /* no shorthand for margin because it would override margin-right for inline selects */
+	position: relative;
+}
+.ui-select > select {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-select .ui-btn {
+	margin: 0;
+	opacity: 1; /* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including "inherit") without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */
+}
+.ui-select .ui-btn select {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 100%;
+	min-height: 1.5em;
+	min-height: 100%;
+	height: 3em;
+	max-height: 100%;
+	outline: 0;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	cursor: pointer;
+	filter: Alpha(Opacity=0);
+	opacity: 0;
+	z-index: 2;
+}
+@-moz-document url-prefix() {
+	.ui-select .ui-btn select {
+		opacity: 0.0001;
+	}
+}
+/* Display none because of issues with IE/WP's filter alpha opacity */
+.ui-select .ui-state-disabled select {
+	display: none;
+}
+/* Because we add all classes of the select and option elements to the span... */ 
+.ui-select span.ui-state-disabled {
+	filter: Alpha(Opacity=100);
+	opacity: 1;
+}
+.ui-select .ui-btn.ui-select-nativeonly {
+	border-radius: 0;
+	border: 0;
+}
+.ui-select .ui-btn.ui-select-nativeonly select {
+	opacity: 1;
+	text-indent: 0;
+	display: block;
+}
+/* ui-li-count is styled in the listview CSS. We set padding and offset here because select supports icon position while listview doesn't. */
+.ui-select .ui-li-has-count.ui-btn {
+	padding-right: 2.8125em;
+}
+.ui-select .ui-li-has-count.ui-btn-icon-right {
+	padding-right: 4.6875em;
+}
+.ui-select .ui-btn-icon-right .ui-li-count {
+	right: 3.2em;
+}
+/* We set the rules for the span as well to fix an issue on Chrome with text-overflow ellipsis for the button in combination with text-align center. */
+.ui-select .ui-btn > span:not(.ui-li-count) {
+	display: block;
+	text-overflow: ellipsis;
+	overflow: hidden !important;
+	white-space: nowrap;
+}
+.ui-selectmenu.ui-popup {
+	min-width: 11em;
+}
+.ui-selectmenu .ui-dialog-contain {
+	overflow: hidden;
+}
+.ui-selectmenu .ui-header {
+	margin: 0;
+	padding: 0;
+	border-width: 0;
+}
+.ui-selectmenu.ui-dialog .ui-header {
+	z-index: 1;
+	position: relative;
+}
+.ui-selectmenu.ui-popup .ui-header {
+	-webkit-border-bottom-right-radius: 0;
+	border-bottom-right-radius: 0;
+	-webkit-border-bottom-left-radius: 0;
+	border-bottom-left-radius: 0;
+}
+/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button.  this shim's content in there */
+.ui-selectmenu.ui-popup .ui-header h1:after {
+	content: '.';
+	visibility: hidden;
+}
+.ui-selectmenu .ui-header .ui-title {
+	margin: 0 2.875em;
+}
+.ui-selectmenu.ui-dialog .ui-content {
+	overflow: visible;
+	z-index: 1;
+}
+.ui-selectmenu .ui-selectmenu-list {
+	margin: 0;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+}
+.ui-header:not(.ui-screen-hidden) + .ui-selectmenu-list {
+	-webkit-border-top-right-radius: 0;
+	border-top-right-radius: 0;
+	-webkit-border-top-left-radius: 0;
+	border-top-left-radius: 0;
+}
+.ui-header.ui-screen-hidden + .ui-selectmenu-list li.ui-first-child .ui-btn {
+	border-top-width: 0;
+}
+.ui-selectmenu .ui-selectmenu-list li.ui-last-child .ui-btn {
+	border-bottom-width: 0;
+}
+.ui-selectmenu .ui-btn.ui-li-divider {
+	cursor: default;
+}
+.ui-selectmenu .ui-selectmenu-placeholder {
+	display: none;
+}
+.ui-listview,
+.ui-listview > li {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+}
+.ui-content .ui-listview,
+.ui-panel-inner > .ui-listview {
+	margin: -1em;
+}
+.ui-content .ui-listview-inset,
+.ui-panel-inner > .ui-listview-inset {
+	margin: 1em 0;
+}
+.ui-collapsible-content > .ui-listview {
+	margin: -.5em -1em;
+}
+.ui-collapsible-content > .ui-listview-inset {
+	margin: .5em 0;
+}
+.ui-listview > li {
+	display: block;
+	position: relative;
+	overflow: visible;
+}
+.ui-listview > .ui-li-static,
+.ui-listview > .ui-li-divider,
+.ui-listview > li > a.ui-btn {
+	margin: 0;
+	display: block;
+	position: relative;
+	text-align: left;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+}
+.ui-listview > li > .ui-btn:focus {
+	z-index: 1;
+}
+.ui-listview > .ui-li-static,
+.ui-listview > .ui-li-divider,
+.ui-listview > li > a.ui-btn {
+	border-width: 1px 0 0 0;
+	border-style: solid;
+}
+.ui-listview-inset > .ui-li-static,
+.ui-listview-inset > .ui-li-divider,
+.ui-listview-inset > li > a.ui-btn {
+	border-right-width: 1px;
+	border-left-width: 1px;
+}
+.ui-listview > .ui-li-static.ui-last-child,
+.ui-listview > .ui-li-divider.ui-last-child,
+.ui-listview > li.ui-last-child > a.ui-btn {
+	border-bottom-width: 1px;
+}
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > li.ui-first-child,
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > li.ui-first-child > a.ui-btn {
+	border-top-width: 0;
+}
+.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > li.ui-last-child,
+.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > li.ui-last-child > a.ui-btn {
+	border-bottom-width: 0;
+}
+.ui-listview > li.ui-first-child,
+.ui-listview > li.ui-first-child > a.ui-btn {
+	-webkit-border-top-right-radius: inherit;	
+	border-top-right-radius: inherit;
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+}
+.ui-listview > li.ui-last-child,
+.ui-listview > li.ui-last-child > a.ui-btn {
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+}
+.ui-listview > li.ui-li-has-alt > a.ui-btn {
+	-webkit-border-top-right-radius: 0;
+	border-top-right-radius: 0;
+	-webkit-border-bottom-right-radius: 0;
+	border-bottom-right-radius: 0;
+}
+.ui-listview > li.ui-first-child > a.ui-btn + a.ui-btn {
+	-webkit-border-top-left-radius: 0;	
+	border-top-left-radius: 0;
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+}
+.ui-listview > li.ui-last-child > a.ui-btn + a.ui-btn {
+	-webkit-border-bottom-left-radius: 0;
+	border-bottom-left-radius: 0;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+.ui-listview > li.ui-first-child img:first-child:not(.ui-li-icon) {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;	
+}
+.ui-listview > li.ui-last-child img:first-child:not(.ui-li-icon) {
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;	
+}
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+}
+.ui-listview > .ui-li-static {
+	padding: .7em 1em;
+}
+.ui-listview > .ui-li-divider {
+	padding: .5em 1.143em;
+	font-size: 14px;
+	font-weight: bold;
+	cursor: default;
+	outline: 0; /* Dividers in custom selectmenus have tabindex */
+}
+.ui-listview > .ui-li-has-count > .ui-btn,
+.ui-listview > .ui-li-static.ui-li-has-count,
+.ui-listview > .ui-li-divider.ui-li-has-count {
+	padding-right: 2.8125em;
+}
+.ui-listview > .ui-li-has-count > .ui-btn-icon-right {
+	padding-right: 4.6875em;
+}
+.ui-listview > .ui-li-has-thumb > .ui-btn,
+.ui-listview > .ui-li-static.ui-li-has-thumb {
+	min-height: 3.625em;
+	padding-left: 6.25em;
+}
+/* ui-li-has-icon deprecated in 1.4. TODO: remove in 1.5 */
+.ui-listview > .ui-li-has-icon > .ui-btn,
+.ui-listview > .ui-li-static.ui-li-has-icon {
+	min-height: 1.25em;
+	padding-left: 2.5em;
+}
+/* Used by both listview and custom multiple select button */
+.ui-li-count {
+	position: absolute;
+	font-size: 12.5px;
+	font-weight: bold;
+	text-align: center;
+	border-width: 1px;
+	border-style: solid;
+	padding: 0 .48em;
+	line-height: 1.6em;
+	min-height: 1.6em;
+	min-width: .64em;
+	right: .8em;
+	top: 50%;
+	margin-top: -.88em;
+}
+.ui-listview .ui-btn-icon-right .ui-li-count {
+	right: 3.2em;
+}
+.ui-listview .ui-li-has-thumb > img:first-child,
+.ui-listview .ui-li-has-thumb > .ui-btn > img:first-child,
+.ui-listview .ui-li-has-thumb .ui-li-thumb {
+	position: absolute;
+	left: 0;
+	top: 0;
+	max-height: 5em;
+	max-width: 5em;
+}
+/* ui-li-has-icon deprecated in 1.4. TODO: remove in 1.5 */
+.ui-listview > .ui-li-has-icon > img:first-child,
+.ui-listview > .ui-li-has-icon > .ui-btn > img:first-child {
+	position: absolute;
+	left: .625em;
+	top: .9em;
+	max-height: 1em;
+	max-width: 1em;
+}
+.ui-listview > li h1,
+.ui-listview > li h2,
+.ui-listview > li h3,
+.ui-listview > li h4,
+.ui-listview > li h5,
+.ui-listview > li h6 {
+	font-size: 1em;
+	font-weight: bold;
+	display: block;
+	margin: .45em 0;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+}
+.ui-listview > li p {
+	font-size: .75em;
+	font-weight: normal;
+	display: block;
+	margin: .6em 0;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+}
+.ui-listview .ui-li-aside {
+	position: absolute;
+	top: 1em;
+	right: 3.333em;
+	margin: 0;
+	text-align: right;
+}
+.ui-listview > li.ui-li-has-alt > .ui-btn {
+	margin-right: 2.5em;
+	border-right-width: 0;
+}
+.ui-listview > li.ui-li-has-alt > .ui-btn + .ui-btn {
+	position: absolute;
+	width: 2.5em;
+	height: 100%;
+	min-height: auto;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	border-left-width: 1px;
+	top: 0;
+	right: 0;
+	margin: 0;
+	padding: 0;
+	z-index: 2;
+}
+.ui-listview-inset > li.ui-li-has-alt > .ui-btn + .ui-btn {
+	border-right-width: 1px;
+}
+.ui-listview > li.ui-li-has-alt > .ui-btn + .ui-btn:focus {
+	z-index: 3;
+}
+ol.ui-listview,
+ol.ui-listview > .ui-li-divider {
+	counter-reset: listnumbering;
+}
+ol.ui-listview > li > .ui-btn,
+ol.ui-listview > li.ui-li-static {
+	vertical-align: middle;
+}
+ol.ui-listview > li > .ui-btn:first-child:before,
+ol.ui-listview > li.ui-li-static:before,
+ol.ui-listview > li.ui-field-contain > label:before,
+ol.ui-listview > li.ui-field-contain > .ui-controlgroup-label:before {
+	display: inline-block;
+	font-size: .9em;
+	font-weight: normal;
+	padding-right: .3em;
+	min-width: 1.4em;
+	line-height: 1.5;
+	vertical-align: middle;
+	counter-increment: listnumbering;
+	content: counter(listnumbering) ".";
+}
+ol.ui-listview > li.ui-field-contain:before {
+	content: none;
+	display: none;
+}
+ol.ui-listview > li h1:first-child,
+ol.ui-listview > li h2:first-child,
+ol.ui-listview > li h3:first-child,
+ol.ui-listview > li h4:first-child,
+ol.ui-listview > li h5:first-child,
+ol.ui-listview > li h6:first-child,
+ol.ui-listview > li p:first-child,
+ol.ui-listview > li img:first-child + * {
+	display: inline-block;
+	vertical-align: middle;
+}
+ol.ui-listview > li h1:first-child ~ *,
+ol.ui-listview > li h2:first-child ~ *,
+ol.ui-listview > li h3:first-child ~ *,
+ol.ui-listview > li h4:first-child ~ *,
+ol.ui-listview > li h5:first-child ~ *,
+ol.ui-listview > li h6:first-child ~ *,
+ol.ui-listview > li p:first-child ~ *,
+ol.ui-listview > li img:first-child + * ~ * {
+	margin-top: 0;
+	text-indent: 2.04em; /* (1.4em + .3em) * .9em / .75em */
+}
+html .ui-filterable + .ui-listview,
+html .ui-filterable.ui-listview {
+	margin-top: .5em;
+}
+.ui-collapsible-content > form.ui-filterable {
+	margin-top: -.5em;
+}
+.ui-collapsible-content > .ui-input-search.ui-filterable {
+	margin-top: 0;
+}
+.ui-collapsible-content > .ui-filterable + .ui-listview:not(.ui-listview-inset) > li.ui-first-child,
+.ui-collapsible-content > .ui-filterable + .ui-listview:not(.ui-listview-inset) > li.ui-first-child > a.ui-btn,
+.ui-collapsible-content > .ui-filterable.ui-listview:not(.ui-listview-inset) > li.ui-first-child,
+.ui-collapsible-content > .ui-filterable.ui-listview:not(.ui-listview-inset) > li.ui-first-child > a.ui-btn {
+	border-top-width: 1px;
+}
+div.ui-slider {
+	height: 30px;
+	margin: .5em 0;
+	padding: 0;
+	-ms-touch-action: pan-y pinch-zoom double-tap-zoom;
+}
+div.ui-slider:before,
+div.ui-slider:after {
+	content: "";
+	display: table;
+}
+div.ui-slider:after {
+	clear: both;
+}
+input.ui-slider-input {
+	display: block;
+	float: left;
+	font-size: 14px;
+	font-weight: bold;
+	margin: 0;
+	padding: 4px;
+	width: 40px;
+	height: 20px;
+	line-height: 20px;
+	border-width: 1px;
+	border-style: solid;
+	outline: 0;
+	text-align: center;
+	vertical-align: text-bottom;
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	appearance: none;
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+}
+.ui-slider-input::-webkit-outer-spin-button,
+.ui-slider-input::-webkit-inner-spin-button {
+	-webkit-appearance: none;
+	margin: 0;
+}
+.ui-slider-track {
+	position: relative;
+	overflow: visible;
+	border-width: 1px;
+	border-style: solid;
+	height: 15px;
+	margin: 0 15px 0 68px;
+	top: 6px;
+}
+.ui-slider-track.ui-mini {
+	height: 12px;
+	top: 8px;
+}
+.ui-slider-track .ui-slider-bg {
+	height: 100%;
+}
+/* High level of specificity to override button margins in grids */
+.ui-slider-track .ui-btn.ui-slider-handle {
+	position: absolute;
+	z-index: 1;
+	top: 50%;
+	width: 28px;
+	height: 28px;
+	margin: -15px 0 0 -15px;
+	outline: 0;
+	padding: 0;
+}
+.ui-slider-track.ui-mini .ui-slider-handle {
+	height: 14px;
+	width: 14px;
+	margin: -8px 0 0 -8px;
+}
+select.ui-slider-switch {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+div.ui-slider-switch {
+	display: inline-block;
+	height: 32px;
+	width: 5.8em;
+	top: 0;
+}
+/* reset the clearfix */
+div.ui-slider-switch:before,
+div.ui-slider-switch:after {
+	display: none;
+	clear: none;
+}
+div.ui-slider-switch.ui-mini {
+	height: 29px;
+	top: 0;
+}
+.ui-slider-inneroffset {
+	margin: 0 16px;
+	position: relative;
+	z-index: 1;
+}
+.ui-slider-switch.ui-mini .ui-slider-inneroffset {
+	margin: 0 15px 0 14px;
+}
+.ui-slider-switch .ui-btn.ui-slider-handle {
+	margin: 1px 0 0 -15px;
+}
+.ui-slider-switch.ui-mini .ui-slider-handle {
+	width: 25px;
+	height: 25px;
+	margin: 1px 0 0 -13px;
+	padding: 0;
+}
+.ui-slider-handle-snapping {
+	-webkit-transition: left 70ms linear;
+	-moz-transition: left 70ms linear;
+	transition: left 70ms linear;
+}
+.ui-slider-switch .ui-slider-label {
+	position: absolute;
+	text-align: center;
+	width: 100%;
+	overflow: hidden;
+	font-size: 16px;
+	top: 0;
+	line-height: 2;
+	min-height: 100%;
+	white-space: nowrap;
+	cursor: pointer;
+}
+.ui-slider-switch.ui-mini .ui-slider-label {
+	font-size: 14px;
+}
+.ui-slider-switch .ui-slider-label-a {
+	z-index: 1;
+	left: 0;
+	text-indent: -1.5em;
+}
+.ui-slider-switch .ui-slider-label-b {
+	z-index: 0;
+	right: 0;
+	text-indent: 1.5em;
+}
+/* The corner radii for ui-slider-switch/track can be specified in theme CSS. The bg and handle inherits. */
+.ui-slider-track .ui-slider-bg,
+.ui-slider-switch .ui-slider-label,
+.ui-slider-switch .ui-slider-inneroffset,
+.ui-slider-handle {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+.ui-field-contain div.ui-slider-switch {
+	margin: 0;
+}
+/* ui-hide-label deprecated in 1.4. TODO: Remove in 1.5 */
+.ui-field-contain div.ui-slider-switch,
+.ui-field-contain.ui-hide-label div.ui-slider-switch,
+html .ui-popup .ui-field-contain div.ui-slider-switch {
+	display: inline-block;
+	width: 5.8em;
+}
+/* slider tooltip
+-----------------------------------------------------------------------------------------------------------*/
+.ui-slider-popup {
+	width: 64px;
+	height: 64px;
+	font-size: 36px;
+	padding-top: 14px;
+	opacity: 0.8;
+}
+.ui-slider-popup {
+	position: absolute !important;
+	text-align: center;
+	z-index: 100;
+}
+.ui-slider-track .ui-btn.ui-slider-handle {
+	font-size: .9em;
+	line-height: 30px;
+}
+.ui-rangeslider {
+	margin: .5em 0;
+}
+.ui-rangeslider:before,
+.ui-rangeslider:after {
+	content: "";
+	display: table;
+}
+.ui-rangeslider:after {
+	clear: both;
+}
+.ui-rangeslider .ui-slider-input.ui-rangeslider-last {
+	float: right;
+}
+.ui-rangeslider .ui-rangeslider-sliders {
+	position: relative;
+	overflow: visible;
+	height: 30px;
+	margin: 0 68px;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track {
+	position: absolute;
+	top: 6px;
+	right: 0;
+	left: 0;
+	margin: 0;
+}
+.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track {
+	top: 8px;
+}
+.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg {
+	display: none;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+	background-color: transparent;
+	background: none;
+	border-width: 0;
+	height: 0;
+}
+/* this makes ie6 and ie7 set height to 0 to fix z-index problem */
+html >/**/body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+	height: 15px;
+	border-width: 1px;
+}
+html >/**/body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child {
+	height: 12px;
+}
+/* Hide the second label (the first is moved outside the div) */
+div.ui-rangeslider label {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-field-contain .ui-rangeslider input.ui-slider-input,
+.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,
+.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,
+.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+	margin-top: 0;
+	margin-bottom: 0;
+}
+.ui-input-text,
+.ui-input-search {
+	margin: .5em 0;
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-mini {
+	margin: .446em;
+}
+.ui-input-text input,
+.ui-input-search input,
+textarea.ui-input-text {
+	padding: .4em;
+	line-height: 1.4em;
+	display: block;
+	width: 100%;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	outline: 0;
+}
+.ui-input-text input,
+.ui-input-search input {
+	margin: 0;
+	min-height: 2.2em;
+	text-align: left; /* Opera aligns type="date" right by default */
+	border: 0;
+	background: transparent none;
+	-webkit-appearance: none;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+textarea.ui-input-text {
+	overflow: auto;
+	resize: vertical;
+}
+.ui-mini .ui-input-text input,
+.ui-mini .ui-input-search input,
+.ui-input-text.ui-mini input,
+.ui-input-search.ui-mini input,
+.ui-mini textarea.ui-input-text,
+textarea.ui-mini {
+	font-size: 14px;
+}
+/* Same margin for mini textareas as other mini sized widgets (12.5/14 * 0.5em) */
+.ui-mini textarea.ui-input-text,
+textarea.ui-mini {
+	margin: .446em 0;
+}
+.ui-input-has-clear,
+.ui-input-search {
+	position: relative;
+}
+/* Padding on the div instead of input because of browser spinners etc. */
+.ui-input-has-clear {
+	padding-right: 2.375em;
+}
+.ui-mini.ui-input-has-clear {
+	padding-right: 2.923em;
+}
+.ui-input-has-clear input {
+	padding-right: 0;
+	/* Autofill on Chrome has bg color so we unset corners right as well. */
+	-webkit-border-top-right-radius: 0;
+	border-top-right-radius: 0;
+	-webkit-border-bottom-right-radius: 0;
+	border-bottom-right-radius: 0;
+}
+/* Search icon */
+.ui-input-search input {
+	padding-left: 1.75em;
+}
+.ui-input-search:after {
+	position: absolute;
+	left: .3125em;
+	top: 50%;
+	margin-top: -7px;
+	content: "";
+	background-position: center center;
+	background-repeat: no-repeat;
+	width: 14px;
+	height: 14px;
+	filter: Alpha(Opacity=50);
+	opacity: .5;
+}
+.ui-input-search.ui-input-has-clear .ui-btn.ui-input-clear,
+.ui-input-text.ui-input-has-clear .ui-btn.ui-input-clear {
+	position: absolute;
+	right: 0;
+	top: 50%;
+	margin: -14px .3125em 0;
+	border: 0;
+	background-color: transparent;
+}
+.ui-input-search .ui-input-clear-hidden,
+.ui-input-text .ui-input-clear-hidden {
+	display: none;
+}
+/* Resolves issue #5166: Added to support issue introduced in Firefox 15. We can likely remove this in the future. */
+.ui-input-text input::-moz-placeholder,
+.ui-input-search input::-moz-placeholder,
+textarea.ui-input-text::-moz-placeholder {
+	color: #aaa;
+}
+/* Same for IE10 */
+.ui-input-text input:-ms-input-placeholder,
+.ui-input-search input:-ms-input-placeholder,
+textarea.ui-input-text:-ms-input-placeholder {
+	color: #aaa;
+}
+/* Resolves issue #5131: Width of textinput depends on its type,
+for Android 4.1 */
+.ui-input-text input[type=number]::-webkit-outer-spin-button {
+	margin: 0;
+}
+/* Resolves issue #5756: Textinput in IE10 has a default clear button */
+.ui-input-text input::-ms-clear,
+.ui-input-search input::-ms-clear {
+	display: none;
+}
+.ui-input-text input:focus,
+.ui-input-search input:focus {
+	-webkit-box-shadow: none;
+	-moz-box-shadow: none;
+	box-shadow: none;
+}
+textarea.ui-input-text.ui-textinput-autogrow {
+	overflow: hidden;
+}
+.ui-textinput-autogrow-resize {
+	-webkit-transition: height 0.25s;
+	-o-transition: height 0.25s;
+	-moz-transition: height 0.25s;
+	transition: height 0.25s;
+}
+.ui-flipswitch {
+	display: inline-block;
+	vertical-align: middle;
+	width: 5.875em; /* Override this and padding-left in next rule if you use labels other than "on/off" and need more space */
+	height: 1.875em;
+	border-width: 1px;
+	border-style: solid;
+	margin: .5em 0;
+	overflow: hidden;
+	-webkit-transition-property: padding, width, background-color, color, border-color;
+	-moz-transition-property: padding, width, background-color, color, border-color;
+	-o-transition-property: padding, width, background-color, color, border-color;
+	transition-property: padding, width, background-color, color, border-color;
+	-webkit-transition-duration: 100ms;
+	-moz-transition-duration: 100ms;
+	-o-transition-duration: 100ms;
+	transition-duration: 100ms;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+	cursor: pointer;
+}
+.ui-flipswitch.ui-flipswitch-active {
+	padding-left: 4em;  /* Override this and width in previous rule if you use labels other than "on/off" and need more space */
+	width: 1.875em;
+}
+.ui-flipswitch-input {
+	position: absolute;
+	height: 1px;
+	width: 1px;
+	margin: -1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+	border: 0;
+	outline: 0;
+	filter: Alpha(Opacity=0);
+	opacity: 0;
+}
+.ui-flipswitch .ui-btn.ui-flipswitch-on,
+.ui-flipswitch .ui-flipswitch-off {
+	float: left;
+	height: 1.75em;
+	margin: .0625em;
+	line-height: 1.65em;
+}
+.ui-flipswitch .ui-btn.ui-flipswitch-on {
+	width: 1.75em;
+	padding: 0;
+	text-indent: -2.6em; /* Override this to center text if you use a label other than "on" */
+	text-align: left;
+	border-width: 1px;
+	border-style: solid;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	border-radius: inherit;
+	overflow: visible;
+	color: inherit;
+	text-shadow: inherit;
+}
+.ui-flipswitch .ui-flipswitch-off {
+	padding: 1px;
+	text-indent: 1em; /* Override this to center text if you use a label other than "off" */
+}
+/* Override field container CSS to prevent the flipswitch from becomming full width */
+html .ui-field-contain > label + .ui-flipswitch,
+html .ui-popup .ui-field-contain > label + .ui-flipswitch {
+	display: inline-block;
+	width: 5.875em; /* If you override the width for .ui-flipswitch you should repeat the same value here */
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+}
+.ui-field-contain .ui-flipswitch.ui-flipswitch-active,
+.ui-popup .ui-field-contain .ui-flipswitch.ui-flipswitch-active {
+	width: 1.875em;
+}
+.ui-table {
+	border: 0;
+	border-collapse: collapse;
+	padding: 0;
+	width: 100%;
+}
+.ui-table th,
+.ui-table td {
+	line-height: 1.5em;
+	text-align: left;
+	padding: .4em .5em;
+	vertical-align:top;
+}
+.ui-table th .ui-btn,
+.ui-table td .ui-btn {
+	line-height: normal;
+}
+.ui-table th {
+	font-weight: bold;
+}
+.ui-table caption {
+	text-align: left;
+	margin-bottom: 1.4em;
+	opacity: .5;
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-columntoggle-btn {
+	float: right;
+	margin-bottom: .8em;
+}
+/* Remove top/bottom margins around the fieldcontain on check list */
+.ui-table-columntoggle-popup fieldset {
+	margin:0;
+}
+.ui-table-columntoggle {
+	clear: both;
+}
+/* Hide all prioritized columns by default */
+@media only all {
+	th.ui-table-priority-6,
+	td.ui-table-priority-6,
+	th.ui-table-priority-5,
+	td.ui-table-priority-5,
+	th.ui-table-priority-4,
+	td.ui-table-priority-4,
+	th.ui-table-priority-3,
+	td.ui-table-priority-3,
+	th.ui-table-priority-2,
+	td.ui-table-priority-2,
+	th.ui-table-priority-1,
+	td.ui-table-priority-1 {
+		display: none;
+	}
+}
+/* Preset breakpoints if ".ui-responsive" class added to table */
+/* Show priority 1 at 320px (20em x 16px) */
+@media screen and (min-width: 20em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-1,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-1 {
+		display: table-cell;
+	}
+}
+/* Show priority 2 at 480px (30em x 16px) */
+@media screen and (min-width: 30em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-2,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-2 {
+		display: table-cell;
+	}
+}
+/* Show priority 3 at 640px (40em x 16px) */
+@media screen and (min-width: 40em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-3,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-3 {
+		display: table-cell;
+	}
+}
+/* Show priority 4 at 800px (50em x 16px) */
+@media screen and (min-width: 50em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-4,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-4 {
+		display: table-cell;
+	}
+}
+/* Show priority 5 at 960px (60em x 16px) */
+@media screen and (min-width: 60em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-5,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-5 {
+		display: table-cell;
+	}
+}
+/* Show priority 6 at 1,120px (70em x 16px) */
+@media screen and (min-width: 70em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-6,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-6 {
+		display: table-cell;
+	}
+}
+/* Unchecked manually: Always hide */
+.ui-table-columntoggle th.ui-table-cell-hidden,
+.ui-table-columntoggle td.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden {
+	display: none;
+}
+/* Checked manually: Always show */
+.ui-table-columntoggle th.ui-table-cell-visible,
+.ui-table-columntoggle td.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible {
+	display: table-cell;
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-reflow td .ui-table-cell-label,
+.ui-table-reflow th .ui-table-cell-label { 
+	display: none;
+}
+/* Mobile first styles: Begin with the stacked presentation at narrow widths */ 
+@media only all {
+	/* Hide the table headers */ 
+	.ui-table-reflow thead td, 
+	.ui-table-reflow thead th {
+		display: none;
+	}
+	/* Show the table cells as a block level element */ 
+	.ui-table-reflow td,
+	.ui-table-reflow th { 
+		text-align: left;
+		display: block;
+	}
+	/* Add a fair amount of top margin to visually separate each row when stacked */  
+	.ui-table-reflow tbody th {
+		margin-top: 3em;
+	}
+	/* Make the label elements a percentage width */ 
+	.ui-table-reflow td .ui-table-cell-label,
+	.ui-table-reflow th .ui-table-cell-label { 
+		padding: .4em; 
+		min-width: 30%; 
+		display: inline-block;
+		margin: -.4em 1em -.4em -.4em;
+	}
+	/* For grouped headers, have a different style to visually separate the levels by classing the first label in each col group */ 
+	.ui-table-reflow th .ui-table-cell-label-top,
+	.ui-table-reflow td .ui-table-cell-label-top {
+		display: block;
+		padding: .4em 0;
+		margin: .4em 0;
+		text-transform: uppercase;
+		font-size: .9em;
+		font-weight: normal;
+	}
+}
+/* Breakpoint to show as a standard table at 560px (35em x 16px) or wider */ 
+@media ( min-width: 35em ) {
+	/* Show the table header rows */ 
+	.ui-table-reflow.ui-responsive td,
+	.ui-table-reflow.ui-responsive th,
+	.ui-table-reflow.ui-responsive tbody th,
+	.ui-table-reflow.ui-responsive tbody td,
+	.ui-table-reflow.ui-responsive thead td,
+	.ui-table-reflow.ui-responsive thead th {
+		display: table-cell;
+		margin: 0;
+	}
+	/* Hide the labels in each cell */ 
+	.ui-table-reflow.ui-responsive td .ui-table-cell-label,
+	.ui-table-reflow.ui-responsive th .ui-table-cell-label { 
+		display: none;
+	}
+}
+/* Hack to make IE9 and WP7.5 treat cells like block level elements, scoped to ui-responsive class */ 
+/* Applied in a max-width media query up to the table layout breakpoint so we don't need to negate this*/ 
+@media ( max-width: 35em ) {
+	.ui-table-reflow.ui-responsive td,
+	.ui-table-reflow.ui-responsive th {
+		width: 100%;
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		box-sizing: border-box;
+		float: left;
+		clear: left;
+	}
+}
+/* Panel */
+.ui-panel {
+	width: 17em;
+	min-height: 100%;
+	max-height: none;
+	border-width: 0;
+	position: absolute;
+	top: 0;
+	display: block;
+}
+.ui-panel-closed {
+	width: 0;
+	max-height: 100%;
+	overflow: hidden;
+	visibility: hidden;
+	left: 0;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-panel-fixed {
+	position: fixed;
+	bottom: -1px; /* Fixes gap on Chrome for Android */
+	padding-bottom: 1px;
+}
+.ui-panel-display-reveal {
+	z-index: 1;
+}
+.ui-panel-display-push {
+	z-index: 999;
+}
+.ui-panel-display-overlay {
+	z-index: 1001; /* Fixed toolbars have z-index 1000 */
+}
+.ui-panel-inner {
+	padding: 1em;
+}
+/* Container, page and wrapper */
+.ui-panel-page-container {
+	overflow-x: visible;
+}
+.ui-panel-page-container-themed .ui-page-active {
+	background: none;
+}
+.ui-panel-wrapper {
+	position: relative;
+	min-height: inherit;
+	border: 0;
+	overflow-x: hidden;
+	z-index: 999;
+}
+/* Fixed toolbars */
+.ui-panel-fixed-toolbar {
+	overflow-x: hidden;
+}
+/* Dismiss */
+.ui-panel-dismiss {
+	position: absolute;
+	top: 0;
+	left: 0;
+	right: 0;
+	height: 100%;
+	z-index: 1002;
+	display: none;
+}
+.ui-panel-dismiss-open {
+	display: block;
+}
+/* Animate class is added to panel, wrapper and fixed toolbars */
+.ui-panel-animate {
+	-webkit-transition: -webkit-transform 300ms ease;
+	-webkit-transition-duration: 300ms;
+	-moz-transition: -moz-transform 300ms ease;
+	transition: transform 300ms ease;
+}
+/* Fix for Windows Phone issue #6349: unset the transition for transforms in case of fixed toolbars. */
+@media screen and ( max-device-width: 768px ) {
+	.ui-page-header-fixed .ui-panel-animate.ui-panel-wrapper,
+	.ui-page-footer-fixed .ui-panel-animate.ui-panel-wrapper,
+	.ui-panel-animate.ui-panel-fixed-toolbar {
+		-ms-transition: none;
+	}
+	/* We need a transitionend event ... */
+	.ui-panel-animate.ui-panel-fixed-toolbar {
+		-ms-transition: -ms-transform 1ms;
+		-ms-transform: rotate(0deg);
+	}
+}
+/* Hardware acceleration for smoother transitions on WebKit browsers */
+.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal) {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translate3d(0,0,0);
+}
+/* Panel positioning (for overlay and push) */
+/* Panel left closed */
+.ui-panel-position-left {
+	left: -17em;
+}
+/* Panel left closed animated */
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-push {
+	left: 0;
+	-webkit-transform: translate3d(-17em,0,0);
+	-moz-transform: translate3d(-17em,0,0);
+	transform: translate3d(-17em,0,0);
+}
+/* Panel left open */
+.ui-panel-position-left.ui-panel-display-reveal, /* Unset "panel left closed" for reveal */
+.ui-panel-open.ui-panel-position-left {
+	left: 0;
+}
+/* Panel left open animated */
+.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-push {
+	-webkit-transform: translate3d(0,0,0);
+	transform: translate3d(0,0,0);
+	-moz-transform: none;
+}
+/* Panel right closed */
+.ui-panel-position-right {
+	right: -17em;
+}
+/* Panel right closed animated */
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-push {
+	right: 0;
+	-webkit-transform: translate3d(17em,0,0);
+	-moz-transform: translate3d(17em,0,0);
+	transform: translate3d(17em,0,0);
+}
+/* Panel right open */
+.ui-panel-position-right.ui-panel-display-reveal, /* Unset "panel right closed" for reveal */
+.ui-panel-position-right.ui-panel-open {
+	right: 0;
+}
+/* Panel right open animated */
+.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-push {
+	-webkit-transform: translate3d(0,0,0);
+	transform: translate3d(0,0,0);
+	-moz-transform: none;
+}
+/* Wrapper and fixed toolbars positioning (for reveal and push) */
+/* Panel left open */
+.ui-panel-page-content-position-left {
+	left: 17em;
+	right: -17em;
+}
+/* Panel left open animated */
+.ui-panel-animate.ui-panel-page-content-position-left {
+	left: 0;
+	right: 0;
+	-webkit-transform: translate3d(17em,0,0);
+	-moz-transform: translate3d(17em,0,0);
+	transform: translate3d(17em,0,0);
+}
+/* Panel right open */
+.ui-panel-page-content-position-right {
+	left: -17em;
+	right: 17em;
+}
+/* Panel right open animated */
+.ui-panel-animate.ui-panel-page-content-position-right {
+	left: 0;
+	right: 0;
+	-webkit-transform: translate3d(-17em,0,0);
+	-moz-transform: translate3d(-17em,0,0);
+	transform: translate3d(-17em,0,0);
+}
+/* Dismiss model open */
+.ui-panel-dismiss-open.ui-panel-dismiss-position-left {
+	left: 17em;
+}
+.ui-panel-dismiss-open.ui-panel-dismiss-position-right {
+	right: 17em;
+}
+/* Shadows and borders */
+.ui-panel-display-reveal {
+	-webkit-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+	box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-reveal {
+	-webkit-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+	box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-display-overlay {
+	-webkit-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+	box-shadow: 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-overlay {
+	-webkit-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+	box-shadow: -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-open.ui-panel-position-left.ui-panel-display-push {
+	border-right-width: 1px;
+	margin-right: -1px;
+}
+.ui-panel-page-content-position-left.ui-panel-page-content-display-push {
+	margin-left: 1px;
+	width: auto;
+}
+.ui-panel-open.ui-panel-position-right.ui-panel-display-push {
+	border-left-width: 1px;
+	margin-left: -1px;
+}
+.ui-panel-page-content-position-right.ui-panel-page-content-display-push {
+	margin-right: 1px;
+	width: auto;
+}
+/* Responsive: wrap on wide viewports once open */
+@media (min-width:55em) {
+	.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-left {
+		margin-right: 17em;
+	}
+	.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-right {
+		margin-left: 17em;
+	}
+	.ui-responsive-panel .ui-panel-page-content-open {
+		width: auto;	
+	}
+	.ui-responsive-panel .ui-panel-dismiss-display-push,
+	.ui-responsive-panel.ui-page-active ~ .ui-panel-dismiss-display-push {
+		display: none;
+	}
+}
+.ui-tabs {
+	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+	padding: .2em;
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile-1.4.5.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile-1.4.5.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile-1.4.5.js	(revision 101)
@@ -0,0 +1,15454 @@
+/*!
+* jQuery Mobile 1.4.5
+* Git HEAD hash: 68e55e78b292634d3991c795f06f5e37a512decc <> Date: Fri Oct 31 2014 17:33:30 UTC
+* http://jquerymobile.com
+*
+* Copyright 2010, 2014 jQuery Foundation, Inc. and othercontributors
+* Released under the MIT license.
+* http://jquery.org/license
+*
+*/
+
+
+(function ( root, doc, factory ) {
+	if ( typeof define === "function" && define.amd ) {
+		// AMD. Register as an anonymous module.
+		define( [ "jquery" ], function ( $ ) {
+			factory( $, root, doc );
+			return $.mobile;
+		});
+	} else {
+		// Browser globals
+		factory( root.jQuery, root, doc );
+	}
+}( this, document, function ( jQuery, window, document, undefined ) {
+(function( $ ) {
+	$.mobile = {};
+}( jQuery ));
+
+/*!
+ * jQuery UI Core c0ab71056b936627e8a7821f03c044aec6280a40
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/category/ui-core/
+ */
+(function( $, undefined ) {
+
+var uuid = 0,
+	runiqueId = /^ui-id-\d+$/;
+
+// $.ui might exist from components with no dependencies, e.g., $.ui.position
+$.ui = $.ui || {};
+
+$.extend( $.ui, {
+	version: "c0ab71056b936627e8a7821f03c044aec6280a40",
+
+	keyCode: {
+		BACKSPACE: 8,
+		COMMA: 188,
+		DELETE: 46,
+		DOWN: 40,
+		END: 35,
+		ENTER: 13,
+		ESCAPE: 27,
+		HOME: 36,
+		LEFT: 37,
+		PAGE_DOWN: 34,
+		PAGE_UP: 33,
+		PERIOD: 190,
+		RIGHT: 39,
+		SPACE: 32,
+		TAB: 9,
+		UP: 38
+	}
+});
+
+// plugins
+$.fn.extend({
+	focus: (function( orig ) {
+		return function( delay, fn ) {
+			return typeof delay === "number" ?
+				this.each(function() {
+					var elem = this;
+					setTimeout(function() {
+						$( elem ).focus();
+						if ( fn ) {
+							fn.call( elem );
+						}
+					}, delay );
+				}) :
+				orig.apply( this, arguments );
+		};
+	})( $.fn.focus ),
+
+	scrollParent: function() {
+		var scrollParent;
+		if (($.ui.ie && (/(static|relative)/).test(this.css("position"))) || (/absolute/).test(this.css("position"))) {
+			scrollParent = this.parents().filter(function() {
+				return (/(relative|absolute|fixed)/).test($.css(this,"position")) && (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
+			}).eq(0);
+		} else {
+			scrollParent = this.parents().filter(function() {
+				return (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
+			}).eq(0);
+		}
+
+		return ( /fixed/ ).test( this.css( "position") ) || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent;
+	},
+
+	uniqueId: function() {
+		return this.each(function() {
+			if ( !this.id ) {
+				this.id = "ui-id-" + (++uuid);
+			}
+		});
+	},
+
+	removeUniqueId: function() {
+		return this.each(function() {
+			if ( runiqueId.test( this.id ) ) {
+				$( this ).removeAttr( "id" );
+			}
+		});
+	}
+});
+
+// selectors
+function focusable( element, isTabIndexNotNaN ) {
+	var map, mapName, img,
+		nodeName = element.nodeName.toLowerCase();
+	if ( "area" === nodeName ) {
+		map = element.parentNode;
+		mapName = map.name;
+		if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
+			return false;
+		}
+		img = $( "img[usemap=#" + mapName + "]" )[0];
+		return !!img && visible( img );
+	}
+	return ( /input|select|textarea|button|object/.test( nodeName ) ?
+		!element.disabled :
+		"a" === nodeName ?
+			element.href || isTabIndexNotNaN :
+			isTabIndexNotNaN) &&
+		// the element and all of its ancestors must be visible
+		visible( element );
+}
+
+function visible( element ) {
+	return $.expr.filters.visible( element ) &&
+		!$( element ).parents().addBack().filter(function() {
+			return $.css( this, "visibility" ) === "hidden";
+		}).length;
+}
+
+$.extend( $.expr[ ":" ], {
+	data: $.expr.createPseudo ?
+		$.expr.createPseudo(function( dataName ) {
+			return function( elem ) {
+				return !!$.data( elem, dataName );
+			};
+		}) :
+		// support: jQuery <1.8
+		function( elem, i, match ) {
+			return !!$.data( elem, match[ 3 ] );
+		},
+
+	focusable: function( element ) {
+		return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );
+	},
+
+	tabbable: function( element ) {
+		var tabIndex = $.attr( element, "tabindex" ),
+			isTabIndexNaN = isNaN( tabIndex );
+		return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );
+	}
+});
+
+// support: jQuery <1.8
+if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {
+	$.each( [ "Width", "Height" ], function( i, name ) {
+		var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
+			type = name.toLowerCase(),
+			orig = {
+				innerWidth: $.fn.innerWidth,
+				innerHeight: $.fn.innerHeight,
+				outerWidth: $.fn.outerWidth,
+				outerHeight: $.fn.outerHeight
+			};
+
+		function reduce( elem, size, border, margin ) {
+			$.each( side, function() {
+				size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
+				if ( border ) {
+					size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
+				}
+				if ( margin ) {
+					size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
+				}
+			});
+			return size;
+		}
+
+		$.fn[ "inner" + name ] = function( size ) {
+			if ( size === undefined ) {
+				return orig[ "inner" + name ].call( this );
+			}
+
+			return this.each(function() {
+				$( this ).css( type, reduce( this, size ) + "px" );
+			});
+		};
+
+		$.fn[ "outer" + name] = function( size, margin ) {
+			if ( typeof size !== "number" ) {
+				return orig[ "outer" + name ].call( this, size );
+			}
+
+			return this.each(function() {
+				$( this).css( type, reduce( this, size, true, margin ) + "px" );
+			});
+		};
+	});
+}
+
+// support: jQuery <1.8
+if ( !$.fn.addBack ) {
+	$.fn.addBack = function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter( selector )
+		);
+	};
+}
+
+// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)
+if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) {
+	$.fn.removeData = (function( removeData ) {
+		return function( key ) {
+			if ( arguments.length ) {
+				return removeData.call( this, $.camelCase( key ) );
+			} else {
+				return removeData.call( this );
+			}
+		};
+	})( $.fn.removeData );
+}
+
+
+
+
+
+// deprecated
+$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
+
+$.support.selectstart = "onselectstart" in document.createElement( "div" );
+$.fn.extend({
+	disableSelection: function() {
+		return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +
+			".ui-disableSelection", function( event ) {
+				event.preventDefault();
+			});
+	},
+
+	enableSelection: function() {
+		return this.unbind( ".ui-disableSelection" );
+	},
+
+	zIndex: function( zIndex ) {
+		if ( zIndex !== undefined ) {
+			return this.css( "zIndex", zIndex );
+		}
+
+		if ( this.length ) {
+			var elem = $( this[ 0 ] ), position, value;
+			while ( elem.length && elem[ 0 ] !== document ) {
+				// Ignore z-index if position is set to a value where z-index is ignored by the browser
+				// This makes behavior of this function consistent across browsers
+				// WebKit always returns auto if the element is positioned
+				position = elem.css( "position" );
+				if ( position === "absolute" || position === "relative" || position === "fixed" ) {
+					// IE returns 0 when zIndex is not specified
+					// other browsers return a string
+					// we ignore the case of nested elements with an explicit value of 0
+					// <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
+					value = parseInt( elem.css( "zIndex" ), 10 );
+					if ( !isNaN( value ) && value !== 0 ) {
+						return value;
+					}
+				}
+				elem = elem.parent();
+			}
+		}
+
+		return 0;
+	}
+});
+
+// $.ui.plugin is deprecated. Use $.widget() extensions instead.
+$.ui.plugin = {
+	add: function( module, option, set ) {
+		var i,
+			proto = $.ui[ module ].prototype;
+		for ( i in set ) {
+			proto.plugins[ i ] = proto.plugins[ i ] || [];
+			proto.plugins[ i ].push( [ option, set[ i ] ] );
+		}
+	},
+	call: function( instance, name, args, allowDisconnected ) {
+		var i,
+			set = instance.plugins[ name ];
+
+		if ( !set ) {
+			return;
+		}
+
+		if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) ) {
+			return;
+		}
+
+		for ( i = 0; i < set.length; i++ ) {
+			if ( instance.options[ set[ i ][ 0 ] ] ) {
+				set[ i ][ 1 ].apply( instance.element, args );
+			}
+		}
+	}
+};
+
+})( jQuery );
+
+(function( $, window, undefined ) {
+
+	// Subtract the height of external toolbars from the page height, if the page does not have
+	// internal toolbars of the same type. We take care to use the widget options if we find a
+	// widget instance and the element's data-attributes otherwise.
+	var compensateToolbars = function( page, desiredHeight ) {
+		var pageParent = page.parent(),
+			toolbarsAffectingHeight = [],
+
+			// We use this function to filter fixed toolbars with option updatePagePadding set to
+			// true (which is the default) from our height subtraction, because fixed toolbars with
+			// option updatePagePadding set to true compensate for their presence by adding padding
+			// to the active page. We want to avoid double-counting by also subtracting their
+			// height from the desired page height.
+			noPadders = function() {
+				var theElement = $( this ),
+					widgetOptions = $.mobile.toolbar && theElement.data( "mobile-toolbar" ) ?
+						theElement.toolbar( "option" ) : {
+							position: theElement.attr( "data-" + $.mobile.ns + "position" ),
+							updatePagePadding: ( theElement.attr( "data-" + $.mobile.ns +
+								"update-page-padding" ) !== false )
+						};
+
+				return !( widgetOptions.position === "fixed" &&
+					widgetOptions.updatePagePadding === true );
+			},
+			externalHeaders = pageParent.children( ":jqmData(role='header')" ).filter( noPadders ),
+			internalHeaders = page.children( ":jqmData(role='header')" ),
+			externalFooters = pageParent.children( ":jqmData(role='footer')" ).filter( noPadders ),
+			internalFooters = page.children( ":jqmData(role='footer')" );
+
+		// If we have no internal headers, but we do have external headers, then their height
+		// reduces the page height
+		if ( internalHeaders.length === 0 && externalHeaders.length > 0 ) {
+			toolbarsAffectingHeight = toolbarsAffectingHeight.concat( externalHeaders.toArray() );
+		}
+
+		// If we have no internal footers, but we do have external footers, then their height
+		// reduces the page height
+		if ( internalFooters.length === 0 && externalFooters.length > 0 ) {
+			toolbarsAffectingHeight = toolbarsAffectingHeight.concat( externalFooters.toArray() );
+		}
+
+		$.each( toolbarsAffectingHeight, function( index, value ) {
+			desiredHeight -= $( value ).outerHeight();
+		});
+
+		// Height must be at least zero
+		return Math.max( 0, desiredHeight );
+	};
+
+	$.extend( $.mobile, {
+		// define the window and the document objects
+		window: $( window ),
+		document: $( document ),
+
+		// TODO: Remove and use $.ui.keyCode directly
+		keyCode: $.ui.keyCode,
+
+		// Place to store various widget extensions
+		behaviors: {},
+
+		// Scroll page vertically: scroll to 0 to hide iOS address bar, or pass a Y value
+		silentScroll: function( ypos ) {
+			if ( $.type( ypos ) !== "number" ) {
+				ypos = $.mobile.defaultHomeScroll;
+			}
+
+			// prevent scrollstart and scrollstop events
+			$.event.special.scrollstart.enabled = false;
+
+			setTimeout(function() {
+				window.scrollTo( 0, ypos );
+				$.mobile.document.trigger( "silentscroll", { x: 0, y: ypos });
+			}, 20 );
+
+			setTimeout(function() {
+				$.event.special.scrollstart.enabled = true;
+			}, 150 );
+		},
+
+		getClosestBaseUrl: function( ele )	{
+			// Find the closest page and extract out its url.
+			var url = $( ele ).closest( ".ui-page" ).jqmData( "url" ),
+				base = $.mobile.path.documentBase.hrefNoHash;
+
+			if ( !$.mobile.dynamicBaseEnabled || !url || !$.mobile.path.isPath( url ) ) {
+				url = base;
+			}
+
+			return $.mobile.path.makeUrlAbsolute( url, base );
+		},
+		removeActiveLinkClass: function( forceRemoval ) {
+			if ( !!$.mobile.activeClickedLink &&
+				( !$.mobile.activeClickedLink.closest( "." + $.mobile.activePageClass ).length ||
+					forceRemoval ) ) {
+
+				$.mobile.activeClickedLink.removeClass( $.mobile.activeBtnClass );
+			}
+			$.mobile.activeClickedLink = null;
+		},
+
+		// DEPRECATED in 1.4
+		// Find the closest parent with a theme class on it. Note that
+		// we are not using $.fn.closest() on purpose here because this
+		// method gets called quite a bit and we need it to be as fast
+		// as possible.
+		getInheritedTheme: function( el, defaultTheme ) {
+			var e = el[ 0 ],
+				ltr = "",
+				re = /ui-(bar|body|overlay)-([a-z])\b/,
+				c, m;
+			while ( e ) {
+				c = e.className || "";
+				if ( c && ( m = re.exec( c ) ) && ( ltr = m[ 2 ] ) ) {
+					// We found a parent with a theme class
+					// on it so bail from this loop.
+					break;
+				}
+
+				e = e.parentNode;
+			}
+			// Return the theme letter we found, if none, return the
+			// specified default.
+			return ltr || defaultTheme || "a";
+		},
+
+		enhanceable: function( elements ) {
+			return this.haveParents( elements, "enhance" );
+		},
+
+		hijackable: function( elements ) {
+			return this.haveParents( elements, "ajax" );
+		},
+
+		haveParents: function( elements, attr ) {
+			if ( !$.mobile.ignoreContentEnabled ) {
+				return elements;
+			}
+
+			var count = elements.length,
+				$newSet = $(),
+				e, $element, excluded,
+				i, c;
+
+			for ( i = 0; i < count; i++ ) {
+				$element = elements.eq( i );
+				excluded = false;
+				e = elements[ i ];
+
+				while ( e ) {
+					c = e.getAttribute ? e.getAttribute( "data-" + $.mobile.ns + attr ) : "";
+
+					if ( c === "false" ) {
+						excluded = true;
+						break;
+					}
+
+					e = e.parentNode;
+				}
+
+				if ( !excluded ) {
+					$newSet = $newSet.add( $element );
+				}
+			}
+
+			return $newSet;
+		},
+
+		getScreenHeight: function() {
+			// Native innerHeight returns more accurate value for this across platforms,
+			// jQuery version is here as a normalized fallback for platforms like Symbian
+			return window.innerHeight || $.mobile.window.height();
+		},
+
+		//simply set the active page's minimum height to screen height, depending on orientation
+		resetActivePageHeight: function( height ) {
+			var page = $( "." + $.mobile.activePageClass ),
+				pageHeight = page.height(),
+				pageOuterHeight = page.outerHeight( true );
+
+			height = compensateToolbars( page,
+				( typeof height === "number" ) ? height : $.mobile.getScreenHeight() );
+
+			// Remove any previous min-height setting
+			page.css( "min-height", "" );
+
+			// Set the minimum height only if the height as determined by CSS is insufficient
+			if ( page.height() < height ) {
+				page.css( "min-height", height - ( pageOuterHeight - pageHeight ) );
+			}
+		},
+
+		loading: function() {
+			// If this is the first call to this function, instantiate a loader widget
+			var loader = this.loading._widget || $( $.mobile.loader.prototype.defaultHtml ).loader(),
+
+				// Call the appropriate method on the loader
+				returnValue = loader.loader.apply( loader, arguments );
+
+			// Make sure the loader is retained for future calls to this function.
+			this.loading._widget = loader;
+
+			return returnValue;
+		}
+	});
+
+	$.addDependents = function( elem, newDependents ) {
+		var $elem = $( elem ),
+			dependents = $elem.jqmData( "dependents" ) || $();
+
+		$elem.jqmData( "dependents", $( dependents ).add( newDependents ) );
+	};
+
+	// plugins
+	$.fn.extend({
+		removeWithDependents: function() {
+			$.removeWithDependents( this );
+		},
+
+		// Enhance child elements
+		enhanceWithin: function() {
+			var index,
+				widgetElements = {},
+				keepNative = $.mobile.page.prototype.keepNativeSelector(),
+				that = this;
+
+			// Add no js class to elements
+			if ( $.mobile.nojs ) {
+				$.mobile.nojs( this );
+			}
+
+			// Bind links for ajax nav
+			if ( $.mobile.links ) {
+				$.mobile.links( this );
+			}
+
+			// Degrade inputs for styleing
+			if ( $.mobile.degradeInputsWithin ) {
+				$.mobile.degradeInputsWithin( this );
+			}
+
+			// Run buttonmarkup
+			if ( $.fn.buttonMarkup ) {
+				this.find( $.fn.buttonMarkup.initSelector ).not( keepNative )
+				.jqmEnhanceable().buttonMarkup();
+			}
+
+			// Add classes for fieldContain
+			if ( $.fn.fieldcontain ) {
+				this.find( ":jqmData(role='fieldcontain')" ).not( keepNative )
+				.jqmEnhanceable().fieldcontain();
+			}
+
+			// Enhance widgets
+			$.each( $.mobile.widgets, function( name, constructor ) {
+
+				// If initSelector not false find elements
+				if ( constructor.initSelector ) {
+
+					// Filter elements that should not be enhanced based on parents
+					var elements = $.mobile.enhanceable( that.find( constructor.initSelector ) );
+
+					// If any matching elements remain filter ones with keepNativeSelector
+					if ( elements.length > 0 ) {
+
+						// $.mobile.page.prototype.keepNativeSelector is deprecated this is just for backcompat
+						// Switch to $.mobile.keepNative in 1.5 which is just a value not a function
+						elements = elements.not( keepNative );
+					}
+
+					// Enhance whatever is left
+					if ( elements.length > 0 ) {
+						widgetElements[ constructor.prototype.widgetName ] = elements;
+					}
+				}
+			});
+
+			for ( index in widgetElements ) {
+				widgetElements[ index ][ index ]();
+			}
+
+			return this;
+		},
+
+		addDependents: function( newDependents ) {
+			$.addDependents( this, newDependents );
+		},
+
+		// note that this helper doesn't attempt to handle the callback
+		// or setting of an html element's text, its only purpose is
+		// to return the html encoded version of the text in all cases. (thus the name)
+		getEncodedText: function() {
+			return $( "<a>" ).text( this.text() ).html();
+		},
+
+		// fluent helper function for the mobile namespaced equivalent
+		jqmEnhanceable: function() {
+			return $.mobile.enhanceable( this );
+		},
+
+		jqmHijackable: function() {
+			return $.mobile.hijackable( this );
+		}
+	});
+
+	$.removeWithDependents = function( nativeElement ) {
+		var element = $( nativeElement );
+
+		( element.jqmData( "dependents" ) || $() ).remove();
+		element.remove();
+	};
+	$.addDependents = function( nativeElement, newDependents ) {
+		var element = $( nativeElement ),
+			dependents = element.jqmData( "dependents" ) || $();
+
+		element.jqmData( "dependents", $( dependents ).add( newDependents ) );
+	};
+
+	$.find.matches = function( expr, set ) {
+		return $.find( expr, null, null, set );
+	};
+
+	$.find.matchesSelector = function( node, expr ) {
+		return $.find( expr, null, null, [ node ] ).length > 0;
+	};
+
+})( jQuery, this );
+
+(function( $, window, undefined ) {
+	$.extend( $.mobile, {
+
+		// Version of the jQuery Mobile Framework
+		version: "1.4.5",
+
+		// Deprecated and no longer used in 1.4 remove in 1.5
+		// Define the url parameter used for referencing widget-generated sub-pages.
+		// Translates to example.html&ui-page=subpageIdentifier
+		// hash segment before &ui-page= is used to make Ajax request
+		subPageUrlKey: "ui-page",
+
+		hideUrlBar: true,
+
+		// Keepnative Selector
+		keepNative: ":jqmData(role='none'), :jqmData(role='nojs')",
+
+		// Deprecated in 1.4 remove in 1.5
+		// Class assigned to page currently in view, and during transitions
+		activePageClass: "ui-page-active",
+
+		// Deprecated in 1.4 remove in 1.5
+		// Class used for "active" button state, from CSS framework
+		activeBtnClass: "ui-btn-active",
+
+		// Deprecated in 1.4 remove in 1.5
+		// Class used for "focus" form element state, from CSS framework
+		focusClass: "ui-focus",
+
+		// Automatically handle clicks and form submissions through Ajax, when same-domain
+		ajaxEnabled: true,
+
+		// Automatically load and show pages based on location.hash
+		hashListeningEnabled: true,
+
+		// disable to prevent jquery from bothering with links
+		linkBindingEnabled: true,
+
+		// Set default page transition - 'none' for no transitions
+		defaultPageTransition: "fade",
+
+		// Set maximum window width for transitions to apply - 'false' for no limit
+		maxTransitionWidth: false,
+
+		// Minimum scroll distance that will be remembered when returning to a page
+		// Deprecated remove in 1.5
+		minScrollBack: 0,
+
+		// Set default dialog transition - 'none' for no transitions
+		defaultDialogTransition: "pop",
+
+		// Error response message - appears when an Ajax page request fails
+		pageLoadErrorMessage: "Error Loading Page",
+
+		// For error messages, which theme does the box use?
+		pageLoadErrorMessageTheme: "a",
+
+		// replace calls to window.history.back with phonegaps navigation helper
+		// where it is provided on the window object
+		phonegapNavigationEnabled: false,
+
+		//automatically initialize the DOM when it's ready
+		autoInitializePage: true,
+
+		pushStateEnabled: true,
+
+		// allows users to opt in to ignoring content by marking a parent element as
+		// data-ignored
+		ignoreContentEnabled: false,
+
+		buttonMarkup: {
+			hoverDelay: 200
+		},
+
+		// disable the alteration of the dynamic base tag or links in the case
+		// that a dynamic base tag isn't supported
+		dynamicBaseEnabled: true,
+
+		// default the property to remove dependency on assignment in init module
+		pageContainer: $(),
+
+		//enable cross-domain page support
+		allowCrossDomainPages: false,
+
+		dialogHashKey: "&ui-state=dialog"
+	});
+})( jQuery, this );
+
+/*!
+ * jQuery UI Widget c0ab71056b936627e8a7821f03c044aec6280a40
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/jQuery.widget/
+ */
+(function( $, undefined ) {
+
+var uuid = 0,
+	slice = Array.prototype.slice,
+	_cleanData = $.cleanData;
+$.cleanData = function( elems ) {
+	for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+		try {
+			$( elem ).triggerHandler( "remove" );
+		// http://bugs.jquery.com/ticket/8235
+		} catch( e ) {}
+	}
+	_cleanData( elems );
+};
+
+$.widget = function( name, base, prototype ) {
+	var fullName, existingConstructor, constructor, basePrototype,
+		// proxiedPrototype allows the provided prototype to remain unmodified
+		// so that it can be used as a mixin for multiple widgets (#8876)
+		proxiedPrototype = {},
+		namespace = name.split( "." )[ 0 ];
+
+	name = name.split( "." )[ 1 ];
+	fullName = namespace + "-" + name;
+
+	if ( !prototype ) {
+		prototype = base;
+		base = $.Widget;
+	}
+
+	// create selector for plugin
+	$.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
+		return !!$.data( elem, fullName );
+	};
+
+	$[ namespace ] = $[ namespace ] || {};
+	existingConstructor = $[ namespace ][ name ];
+	constructor = $[ namespace ][ name ] = function( options, element ) {
+		// allow instantiation without "new" keyword
+		if ( !this._createWidget ) {
+			return new constructor( options, element );
+		}
+
+		// allow instantiation without initializing for simple inheritance
+		// must use "new" keyword (the code above always passes args)
+		if ( arguments.length ) {
+			this._createWidget( options, element );
+		}
+	};
+	// extend with the existing constructor to carry over any static properties
+	$.extend( constructor, existingConstructor, {
+		version: prototype.version,
+		// copy the object used to create the prototype in case we need to
+		// redefine the widget later
+		_proto: $.extend( {}, prototype ),
+		// track widgets that inherit from this widget in case this widget is
+		// redefined after a widget inherits from it
+		_childConstructors: []
+	});
+
+	basePrototype = new base();
+	// we need to make the options hash a property directly on the new instance
+	// otherwise we'll modify the options hash on the prototype that we're
+	// inheriting from
+	basePrototype.options = $.widget.extend( {}, basePrototype.options );
+	$.each( prototype, function( prop, value ) {
+		if ( !$.isFunction( value ) ) {
+			proxiedPrototype[ prop ] = value;
+			return;
+		}
+		proxiedPrototype[ prop ] = (function() {
+			var _super = function() {
+					return base.prototype[ prop ].apply( this, arguments );
+				},
+				_superApply = function( args ) {
+					return base.prototype[ prop ].apply( this, args );
+				};
+			return function() {
+				var __super = this._super,
+					__superApply = this._superApply,
+					returnValue;
+
+				this._super = _super;
+				this._superApply = _superApply;
+
+				returnValue = value.apply( this, arguments );
+
+				this._super = __super;
+				this._superApply = __superApply;
+
+				return returnValue;
+			};
+		})();
+	});
+	constructor.prototype = $.widget.extend( basePrototype, {
+		// TODO: remove support for widgetEventPrefix
+		// always use the name + a colon as the prefix, e.g., draggable:start
+		// don't prefix for widgets that aren't DOM-based
+		widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name
+	}, proxiedPrototype, {
+		constructor: constructor,
+		namespace: namespace,
+		widgetName: name,
+		widgetFullName: fullName
+	});
+
+	// If this widget is being redefined then we need to find all widgets that
+	// are inheriting from it and redefine all of them so that they inherit from
+	// the new version of this widget. We're essentially trying to replace one
+	// level in the prototype chain.
+	if ( existingConstructor ) {
+		$.each( existingConstructor._childConstructors, function( i, child ) {
+			var childPrototype = child.prototype;
+
+			// redefine the child widget using the same prototype that was
+			// originally used, but inherit from the new version of the base
+			$.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto );
+		});
+		// remove the list of existing child constructors from the old constructor
+		// so the old child constructors can be garbage collected
+		delete existingConstructor._childConstructors;
+	} else {
+		base._childConstructors.push( constructor );
+	}
+
+	$.widget.bridge( name, constructor );
+
+	return constructor;
+};
+
+$.widget.extend = function( target ) {
+	var input = slice.call( arguments, 1 ),
+		inputIndex = 0,
+		inputLength = input.length,
+		key,
+		value;
+	for ( ; inputIndex < inputLength; inputIndex++ ) {
+		for ( key in input[ inputIndex ] ) {
+			value = input[ inputIndex ][ key ];
+			if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
+				// Clone objects
+				if ( $.isPlainObject( value ) ) {
+					target[ key ] = $.isPlainObject( target[ key ] ) ?
+						$.widget.extend( {}, target[ key ], value ) :
+						// Don't extend strings, arrays, etc. with objects
+						$.widget.extend( {}, value );
+				// Copy everything else by reference
+				} else {
+					target[ key ] = value;
+				}
+			}
+		}
+	}
+	return target;
+};
+
+$.widget.bridge = function( name, object ) {
+	var fullName = object.prototype.widgetFullName || name;
+	$.fn[ name ] = function( options ) {
+		var isMethodCall = typeof options === "string",
+			args = slice.call( arguments, 1 ),
+			returnValue = this;
+
+		// allow multiple hashes to be passed on init
+		options = !isMethodCall && args.length ?
+			$.widget.extend.apply( null, [ options ].concat(args) ) :
+			options;
+
+		if ( isMethodCall ) {
+			this.each(function() {
+				var methodValue,
+					instance = $.data( this, fullName );
+				if ( options === "instance" ) {
+					returnValue = instance;
+					return false;
+				}
+				if ( !instance ) {
+					return $.error( "cannot call methods on " + name + " prior to initialization; " +
+						"attempted to call method '" + options + "'" );
+				}
+				if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) {
+					return $.error( "no such method '" + options + "' for " + name + " widget instance" );
+				}
+				methodValue = instance[ options ].apply( instance, args );
+				if ( methodValue !== instance && methodValue !== undefined ) {
+					returnValue = methodValue && methodValue.jquery ?
+						returnValue.pushStack( methodValue.get() ) :
+						methodValue;
+					return false;
+				}
+			});
+		} else {
+			this.each(function() {
+				var instance = $.data( this, fullName );
+				if ( instance ) {
+					instance.option( options || {} )._init();
+				} else {
+					$.data( this, fullName, new object( options, this ) );
+				}
+			});
+		}
+
+		return returnValue;
+	};
+};
+
+$.Widget = function( /* options, element */ ) {};
+$.Widget._childConstructors = [];
+
+$.Widget.prototype = {
+	widgetName: "widget",
+	widgetEventPrefix: "",
+	defaultElement: "<div>",
+	options: {
+		disabled: false,
+
+		// callbacks
+		create: null
+	},
+	_createWidget: function( options, element ) {
+		element = $( element || this.defaultElement || this )[ 0 ];
+		this.element = $( element );
+		this.uuid = uuid++;
+		this.eventNamespace = "." + this.widgetName + this.uuid;
+		this.options = $.widget.extend( {},
+			this.options,
+			this._getCreateOptions(),
+			options );
+
+		this.bindings = $();
+		this.hoverable = $();
+		this.focusable = $();
+
+		if ( element !== this ) {
+			$.data( element, this.widgetFullName, this );
+			this._on( true, this.element, {
+				remove: function( event ) {
+					if ( event.target === element ) {
+						this.destroy();
+					}
+				}
+			});
+			this.document = $( element.style ?
+				// element within the document
+				element.ownerDocument :
+				// element is window or document
+				element.document || element );
+			this.window = $( this.document[0].defaultView || this.document[0].parentWindow );
+		}
+
+		this._create();
+		this._trigger( "create", null, this._getCreateEventData() );
+		this._init();
+	},
+	_getCreateOptions: $.noop,
+	_getCreateEventData: $.noop,
+	_create: $.noop,
+	_init: $.noop,
+
+	destroy: function() {
+		this._destroy();
+		// we can probably remove the unbind calls in 2.0
+		// all event bindings should go through this._on()
+		this.element
+			.unbind( this.eventNamespace )
+			.removeData( this.widgetFullName )
+			// support: jquery <1.6.3
+			// http://bugs.jquery.com/ticket/9413
+			.removeData( $.camelCase( this.widgetFullName ) );
+		this.widget()
+			.unbind( this.eventNamespace )
+			.removeAttr( "aria-disabled" )
+			.removeClass(
+				this.widgetFullName + "-disabled " +
+				"ui-state-disabled" );
+
+		// clean up events and states
+		this.bindings.unbind( this.eventNamespace );
+		this.hoverable.removeClass( "ui-state-hover" );
+		this.focusable.removeClass( "ui-state-focus" );
+	},
+	_destroy: $.noop,
+
+	widget: function() {
+		return this.element;
+	},
+
+	option: function( key, value ) {
+		var options = key,
+			parts,
+			curOption,
+			i;
+
+		if ( arguments.length === 0 ) {
+			// don't return a reference to the internal hash
+			return $.widget.extend( {}, this.options );
+		}
+
+		if ( typeof key === "string" ) {
+			// handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
+			options = {};
+			parts = key.split( "." );
+			key = parts.shift();
+			if ( parts.length ) {
+				curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
+				for ( i = 0; i < parts.length - 1; i++ ) {
+					curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
+					curOption = curOption[ parts[ i ] ];
+				}
+				key = parts.pop();
+				if ( value === undefined ) {
+					return curOption[ key ] === undefined ? null : curOption[ key ];
+				}
+				curOption[ key ] = value;
+			} else {
+				if ( value === undefined ) {
+					return this.options[ key ] === undefined ? null : this.options[ key ];
+				}
+				options[ key ] = value;
+			}
+		}
+
+		this._setOptions( options );
+
+		return this;
+	},
+	_setOptions: function( options ) {
+		var key;
+
+		for ( key in options ) {
+			this._setOption( key, options[ key ] );
+		}
+
+		return this;
+	},
+	_setOption: function( key, value ) {
+		this.options[ key ] = value;
+
+		if ( key === "disabled" ) {
+			this.widget()
+				.toggleClass( this.widgetFullName + "-disabled", !!value );
+			this.hoverable.removeClass( "ui-state-hover" );
+			this.focusable.removeClass( "ui-state-focus" );
+		}
+
+		return this;
+	},
+
+	enable: function() {
+		return this._setOptions({ disabled: false });
+	},
+	disable: function() {
+		return this._setOptions({ disabled: true });
+	},
+
+	_on: function( suppressDisabledCheck, element, handlers ) {
+		var delegateElement,
+			instance = this;
+
+		// no suppressDisabledCheck flag, shuffle arguments
+		if ( typeof suppressDisabledCheck !== "boolean" ) {
+			handlers = element;
+			element = suppressDisabledCheck;
+			suppressDisabledCheck = false;
+		}
+
+		// no element argument, shuffle and use this.element
+		if ( !handlers ) {
+			handlers = element;
+			element = this.element;
+			delegateElement = this.widget();
+		} else {
+			// accept selectors, DOM elements
+			element = delegateElement = $( element );
+			this.bindings = this.bindings.add( element );
+		}
+
+		$.each( handlers, function( event, handler ) {
+			function handlerProxy() {
+				// allow widgets to customize the disabled handling
+				// - disabled as an array instead of boolean
+				// - disabled class as method for disabling individual parts
+				if ( !suppressDisabledCheck &&
+						( instance.options.disabled === true ||
+							$( this ).hasClass( "ui-state-disabled" ) ) ) {
+					return;
+				}
+				return ( typeof handler === "string" ? instance[ handler ] : handler )
+					.apply( instance, arguments );
+			}
+
+			// copy the guid so direct unbinding works
+			if ( typeof handler !== "string" ) {
+				handlerProxy.guid = handler.guid =
+					handler.guid || handlerProxy.guid || $.guid++;
+			}
+
+			var match = event.match( /^(\w+)\s*(.*)$/ ),
+				eventName = match[1] + instance.eventNamespace,
+				selector = match[2];
+			if ( selector ) {
+				delegateElement.delegate( selector, eventName, handlerProxy );
+			} else {
+				element.bind( eventName, handlerProxy );
+			}
+		});
+	},
+
+	_off: function( element, eventName ) {
+		eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace;
+		element.unbind( eventName ).undelegate( eventName );
+	},
+
+	_delay: function( handler, delay ) {
+		function handlerProxy() {
+			return ( typeof handler === "string" ? instance[ handler ] : handler )
+				.apply( instance, arguments );
+		}
+		var instance = this;
+		return setTimeout( handlerProxy, delay || 0 );
+	},
+
+	_hoverable: function( element ) {
+		this.hoverable = this.hoverable.add( element );
+		this._on( element, {
+			mouseenter: function( event ) {
+				$( event.currentTarget ).addClass( "ui-state-hover" );
+			},
+			mouseleave: function( event ) {
+				$( event.currentTarget ).removeClass( "ui-state-hover" );
+			}
+		});
+	},
+
+	_focusable: function( element ) {
+		this.focusable = this.focusable.add( element );
+		this._on( element, {
+			focusin: function( event ) {
+				$( event.currentTarget ).addClass( "ui-state-focus" );
+			},
+			focusout: function( event ) {
+				$( event.currentTarget ).removeClass( "ui-state-focus" );
+			}
+		});
+	},
+
+	_trigger: function( type, event, data ) {
+		var prop, orig,
+			callback = this.options[ type ];
+
+		data = data || {};
+		event = $.Event( event );
+		event.type = ( type === this.widgetEventPrefix ?
+			type :
+			this.widgetEventPrefix + type ).toLowerCase();
+		// the original event may come from any element
+		// so we need to reset the target on the new event
+		event.target = this.element[ 0 ];
+
+		// copy original event properties over to the new event
+		orig = event.originalEvent;
+		if ( orig ) {
+			for ( prop in orig ) {
+				if ( !( prop in event ) ) {
+					event[ prop ] = orig[ prop ];
+				}
+			}
+		}
+
+		this.element.trigger( event, data );
+		return !( $.isFunction( callback ) &&
+			callback.apply( this.element[0], [ event ].concat( data ) ) === false ||
+			event.isDefaultPrevented() );
+	}
+};
+
+$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
+	$.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
+		if ( typeof options === "string" ) {
+			options = { effect: options };
+		}
+		var hasOptions,
+			effectName = !options ?
+				method :
+				options === true || typeof options === "number" ?
+					defaultEffect :
+					options.effect || defaultEffect;
+		options = options || {};
+		if ( typeof options === "number" ) {
+			options = { duration: options };
+		}
+		hasOptions = !$.isEmptyObject( options );
+		options.complete = callback;
+		if ( options.delay ) {
+			element.delay( options.delay );
+		}
+		if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
+			element[ method ]( options );
+		} else if ( effectName !== method && element[ effectName ] ) {
+			element[ effectName ]( options.duration, options.easing, callback );
+		} else {
+			element.queue(function( next ) {
+				$( this )[ method ]();
+				if ( callback ) {
+					callback.call( element[ 0 ] );
+				}
+				next();
+			});
+		}
+	};
+});
+
+})( jQuery );
+
+(function( $, window, undefined ) {
+	var nsNormalizeDict = {},
+		oldFind = $.find,
+		rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
+		jqmDataRE = /:jqmData\(([^)]*)\)/g;
+
+	$.extend( $.mobile, {
+
+		// Namespace used framework-wide for data-attrs. Default is no namespace
+
+		ns: "",
+
+		// Retrieve an attribute from an element and perform some massaging of the value
+
+		getAttribute: function( element, key ) {
+			var data;
+
+			element = element.jquery ? element[0] : element;
+
+			if ( element && element.getAttribute ) {
+				data = element.getAttribute( "data-" + $.mobile.ns + key );
+			}
+
+			// Copied from core's src/data.js:dataAttr()
+			// Convert from a string to a proper data type
+			try {
+				data = data === "true" ? true :
+					data === "false" ? false :
+					data === "null" ? null :
+					// Only convert to a number if it doesn't change the string
+					+data + "" === data ? +data :
+					rbrace.test( data ) ? JSON.parse( data ) :
+					data;
+			} catch( err ) {}
+
+			return data;
+		},
+
+		// Expose our cache for testing purposes.
+		nsNormalizeDict: nsNormalizeDict,
+
+		// Take a data attribute property, prepend the namespace
+		// and then camel case the attribute string. Add the result
+		// to our nsNormalizeDict so we don't have to do this again.
+		nsNormalize: function( prop ) {
+			return nsNormalizeDict[ prop ] ||
+				( nsNormalizeDict[ prop ] = $.camelCase( $.mobile.ns + prop ) );
+		},
+
+		// Find the closest javascript page element to gather settings data jsperf test
+		// http://jsperf.com/single-complex-selector-vs-many-complex-selectors/edit
+		// possibly naive, but it shows that the parsing overhead for *just* the page selector vs
+		// the page and dialog selector is negligable. This could probably be speed up by
+		// doing a similar parent node traversal to the one found in the inherited theme code above
+		closestPageData: function( $target ) {
+			return $target
+				.closest( ":jqmData(role='page'), :jqmData(role='dialog')" )
+				.data( "mobile-page" );
+		}
+
+	});
+
+	// Mobile version of data and removeData and hasData methods
+	// ensures all data is set and retrieved using jQuery Mobile's data namespace
+	$.fn.jqmData = function( prop, value ) {
+		var result;
+		if ( typeof prop !== "undefined" ) {
+			if ( prop ) {
+				prop = $.mobile.nsNormalize( prop );
+			}
+
+			// undefined is permitted as an explicit input for the second param
+			// in this case it returns the value and does not set it to undefined
+			if ( arguments.length < 2 || value === undefined ) {
+				result = this.data( prop );
+			} else {
+				result = this.data( prop, value );
+			}
+		}
+		return result;
+	};
+
+	$.jqmData = function( elem, prop, value ) {
+		var result;
+		if ( typeof prop !== "undefined" ) {
+			result = $.data( elem, prop ? $.mobile.nsNormalize( prop ) : prop, value );
+		}
+		return result;
+	};
+
+	$.fn.jqmRemoveData = function( prop ) {
+		return this.removeData( $.mobile.nsNormalize( prop ) );
+	};
+
+	$.jqmRemoveData = function( elem, prop ) {
+		return $.removeData( elem, $.mobile.nsNormalize( prop ) );
+	};
+
+	$.find = function( selector, context, ret, extra ) {
+		if ( selector.indexOf( ":jqmData" ) > -1 ) {
+			selector = selector.replace( jqmDataRE, "[data-" + ( $.mobile.ns || "" ) + "$1]" );
+		}
+
+		return oldFind.call( this, selector, context, ret, extra );
+	};
+
+	$.extend( $.find, oldFind );
+
+})( jQuery, this );
+
+(function( $, undefined ) {
+
+var rcapitals = /[A-Z]/g,
+	replaceFunction = function( c ) {
+		return "-" + c.toLowerCase();
+	};
+
+$.extend( $.Widget.prototype, {
+	_getCreateOptions: function() {
+		var option, value,
+			elem = this.element[ 0 ],
+			options = {};
+
+		//
+		if ( !$.mobile.getAttribute( elem, "defaults" ) ) {
+			for ( option in this.options ) {
+				value = $.mobile.getAttribute( elem, option.replace( rcapitals, replaceFunction ) );
+
+				if ( value != null ) {
+					options[ option ] = value;
+				}
+			}
+		}
+
+		return options;
+	}
+});
+
+//TODO: Remove in 1.5 for backcompat only
+$.mobile.widget = $.Widget;
+
+})( jQuery );
+
+
+(function( $ ) {
+	// TODO move loader class down into the widget settings
+	var loaderClass = "ui-loader", $html = $( "html" );
+
+	$.widget( "mobile.loader", {
+		// NOTE if the global config settings are defined they will override these
+		//      options
+		options: {
+			// the theme for the loading message
+			theme: "a",
+
+			// whether the text in the loading message is shown
+			textVisible: false,
+
+			// custom html for the inner content of the loading message
+			html: "",
+
+			// the text to be displayed when the popup is shown
+			text: "loading"
+		},
+
+		defaultHtml: "<div class='" + loaderClass + "'>" +
+			"<span class='ui-icon-loading'></span>" +
+			"<h1></h1>" +
+			"</div>",
+
+		// For non-fixed supportin browsers. Position at y center (if scrollTop supported), above the activeBtn (if defined), or just 100px from top
+		fakeFixLoader: function() {
+			var activeBtn = $( "." + $.mobile.activeBtnClass ).first();
+
+			this.element
+				.css({
+					top: $.support.scrollTop && this.window.scrollTop() + this.window.height() / 2 ||
+						activeBtn.length && activeBtn.offset().top || 100
+				});
+		},
+
+		// check position of loader to see if it appears to be "fixed" to center
+		// if not, use abs positioning
+		checkLoaderPosition: function() {
+			var offset = this.element.offset(),
+				scrollTop = this.window.scrollTop(),
+				screenHeight = $.mobile.getScreenHeight();
+
+			if ( offset.top < scrollTop || ( offset.top - scrollTop ) > screenHeight ) {
+				this.element.addClass( "ui-loader-fakefix" );
+				this.fakeFixLoader();
+				this.window
+					.unbind( "scroll", this.checkLoaderPosition )
+					.bind( "scroll", $.proxy( this.fakeFixLoader, this ) );
+			}
+		},
+
+		resetHtml: function() {
+			this.element.html( $( this.defaultHtml ).html() );
+		},
+
+		// Turn on/off page loading message. Theme doubles as an object argument
+		// with the following shape: { theme: '', text: '', html: '', textVisible: '' }
+		// NOTE that the $.mobile.loading* settings and params past the first are deprecated
+		// TODO sweet jesus we need to break some of this out
+		show: function( theme, msgText, textonly ) {
+			var textVisible, message, loadSettings;
+
+			this.resetHtml();
+
+			// use the prototype options so that people can set them globally at
+			// mobile init. Consistency, it's what's for dinner
+			if ( $.type( theme ) === "object" ) {
+				loadSettings = $.extend( {}, this.options, theme );
+
+				theme = loadSettings.theme;
+			} else {
+				loadSettings = this.options;
+
+				// here we prefer the theme value passed as a string argument, then
+				// we prefer the global option because we can't use undefined default
+				// prototype options, then the prototype option
+				theme = theme || loadSettings.theme;
+			}
+
+			// set the message text, prefer the param, then the settings object
+			// then loading message
+			message = msgText || ( loadSettings.text === false ? "" : loadSettings.text );
+
+			// prepare the dom
+			$html.addClass( "ui-loading" );
+
+			textVisible = loadSettings.textVisible;
+
+			// add the proper css given the options (theme, text, etc)
+			// Force text visibility if the second argument was supplied, or
+			// if the text was explicitly set in the object args
+			this.element.attr("class", loaderClass +
+				" ui-corner-all ui-body-" + theme +
+				" ui-loader-" + ( textVisible || msgText || theme.text ? "verbose" : "default" ) +
+				( loadSettings.textonly || textonly ? " ui-loader-textonly" : "" ) );
+
+			// TODO verify that jquery.fn.html is ok to use in both cases here
+			//      this might be overly defensive in preventing unknowing xss
+			// if the html attribute is defined on the loading settings, use that
+			// otherwise use the fallbacks from above
+			if ( loadSettings.html ) {
+				this.element.html( loadSettings.html );
+			} else {
+				this.element.find( "h1" ).text( message );
+			}
+
+			// If the pagecontainer widget has been defined we may use the :mobile-pagecontainer
+			// and attach to the element on which the pagecontainer widget has been defined. If not,
+			// we attach to the body.
+			this.element.appendTo( $.mobile.pagecontainer ?
+				$( ":mobile-pagecontainer" ) : $( "body" ) );
+
+			// check that the loader is visible
+			this.checkLoaderPosition();
+
+			// on scroll check the loader position
+			this.window.bind( "scroll", $.proxy( this.checkLoaderPosition, this ) );
+		},
+
+		hide: function() {
+			$html.removeClass( "ui-loading" );
+
+			if ( this.options.text ) {
+				this.element.removeClass( "ui-loader-fakefix" );
+			}
+
+			this.window.unbind( "scroll", this.fakeFixLoader );
+			this.window.unbind( "scroll", this.checkLoaderPosition );
+		}
+	});
+
+})(jQuery, this);
+
+
+/*!
+ * jQuery hashchange event - v1.3 - 7/21/2010
+ * http://benalman.com/projects/jquery-hashchange-plugin/
+ * 
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+
+// Script: jQuery hashchange event
+//
+// *Version: 1.3, Last updated: 7/21/2010*
+// 
+// Project Home - http://benalman.com/projects/jquery-hashchange-plugin/
+// GitHub       - http://github.com/cowboy/jquery-hashchange/
+// Source       - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.js
+// (Minified)   - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.min.js (0.8kb gzipped)
+// 
+// About: License
+// 
+// Copyright (c) 2010 "Cowboy" Ben Alman,
+// Dual licensed under the MIT and GPL licenses.
+// http://benalman.com/about/license/
+// 
+// About: Examples
+// 
+// These working examples, complete with fully commented code, illustrate a few
+// ways in which this plugin can be used.
+// 
+// hashchange event - http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/
+// document.domain - http://benalman.com/code/projects/jquery-hashchange/examples/document_domain/
+// 
+// About: Support and Testing
+// 
+// Information about what version or versions of jQuery this plugin has been
+// tested with, what browsers it has been tested in, and where the unit tests
+// reside (so you can test it yourself).
+// 
+// jQuery Versions - 1.2.6, 1.3.2, 1.4.1, 1.4.2
+// Browsers Tested - Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5,
+//                   Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5.
+// Unit Tests      - http://benalman.com/code/projects/jquery-hashchange/unit/
+// 
+// About: Known issues
+// 
+// While this jQuery hashchange event implementation is quite stable and
+// robust, there are a few unfortunate browser bugs surrounding expected
+// hashchange event-based behaviors, independent of any JavaScript
+// window.onhashchange abstraction. See the following examples for more
+// information:
+// 
+// Chrome: Back Button - http://benalman.com/code/projects/jquery-hashchange/examples/bug-chrome-back-button/
+// Firefox: Remote XMLHttpRequest - http://benalman.com/code/projects/jquery-hashchange/examples/bug-firefox-remote-xhr/
+// WebKit: Back Button in an Iframe - http://benalman.com/code/projects/jquery-hashchange/examples/bug-webkit-hash-iframe/
+// Safari: Back Button from a different domain - http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/
+// 
+// Also note that should a browser natively support the window.onhashchange 
+// event, but not report that it does, the fallback polling loop will be used.
+// 
+// About: Release History
+// 
+// 1.3   - (7/21/2010) Reorganized IE6/7 Iframe code to make it more
+//         "removable" for mobile-only development. Added IE6/7 document.title
+//         support. Attempted to make Iframe as hidden as possible by using
+//         techniques from http://www.paciellogroup.com/blog/?p=604. Added 
+//         support for the "shortcut" format $(window).hashchange( fn ) and
+//         $(window).hashchange() like jQuery provides for built-in events.
+//         Renamed jQuery.hashchangeDelay to <jQuery.fn.hashchange.delay> and
+//         lowered its default value to 50. Added <jQuery.fn.hashchange.domain>
+//         and <jQuery.fn.hashchange.src> properties plus document-domain.html
+//         file to address access denied issues when setting document.domain in
+//         IE6/7.
+// 1.2   - (2/11/2010) Fixed a bug where coming back to a page using this plugin
+//         from a page on another domain would cause an error in Safari 4. Also,
+//         IE6/7 Iframe is now inserted after the body (this actually works),
+//         which prevents the page from scrolling when the event is first bound.
+//         Event can also now be bound before DOM ready, but it won't be usable
+//         before then in IE6/7.
+// 1.1   - (1/21/2010) Incorporated document.documentMode test to fix IE8 bug
+//         where browser version is incorrectly reported as 8.0, despite
+//         inclusion of the X-UA-Compatible IE=EmulateIE7 meta tag.
+// 1.0   - (1/9/2010) Initial Release. Broke out the jQuery BBQ event.special
+//         window.onhashchange functionality into a separate plugin for users
+//         who want just the basic event & back button support, without all the
+//         extra awesomeness that BBQ provides. This plugin will be included as
+//         part of jQuery BBQ, but also be available separately.
+
+(function($,window,undefined){
+  '$:nomunge'; // Used by YUI compressor.
+  
+  // Reused string.
+  var str_hashchange = 'hashchange',
+    
+    // Method / object references.
+    doc = document,
+    fake_onhashchange,
+    special = $.event.special,
+    
+    // Does the browser support window.onhashchange? Note that IE8 running in
+    // IE7 compatibility mode reports true for 'onhashchange' in window, even
+    // though the event isn't supported, so also test document.documentMode.
+    doc_mode = doc.documentMode,
+    supports_onhashchange = 'on' + str_hashchange in window && ( doc_mode === undefined || doc_mode > 7 );
+  
+  // Get location.hash (or what you'd expect location.hash to be) sans any
+  // leading #. Thanks for making this necessary, Firefox!
+  function get_fragment( url ) {
+    url = url || location.href;
+    return '#' + url.replace( /^[^#]*#?(.*)$/, '$1' );
+  };
+  
+  // Method: jQuery.fn.hashchange
+  // 
+  // Bind a handler to the window.onhashchange event or trigger all bound
+  // window.onhashchange event handlers. This behavior is consistent with
+  // jQuery's built-in event handlers.
+  // 
+  // Usage:
+  // 
+  // > jQuery(window).hashchange( [ handler ] );
+  // 
+  // Arguments:
+  // 
+  //  handler - (Function) Optional handler to be bound to the hashchange
+  //    event. This is a "shortcut" for the more verbose form:
+  //    jQuery(window).bind( 'hashchange', handler ). If handler is omitted,
+  //    all bound window.onhashchange event handlers will be triggered. This
+  //    is a shortcut for the more verbose
+  //    jQuery(window).trigger( 'hashchange' ). These forms are described in
+  //    the <hashchange event> section.
+  // 
+  // Returns:
+  // 
+  //  (jQuery) The initial jQuery collection of elements.
+  
+  // Allow the "shortcut" format $(elem).hashchange( fn ) for binding and
+  // $(elem).hashchange() for triggering, like jQuery does for built-in events.
+  $.fn[ str_hashchange ] = function( fn ) {
+    return fn ? this.bind( str_hashchange, fn ) : this.trigger( str_hashchange );
+  };
+  
+  // Property: jQuery.fn.hashchange.delay
+  // 
+  // The numeric interval (in milliseconds) at which the <hashchange event>
+  // polling loop executes. Defaults to 50.
+  
+  // Property: jQuery.fn.hashchange.domain
+  // 
+  // If you're setting document.domain in your JavaScript, and you want hash
+  // history to work in IE6/7, not only must this property be set, but you must
+  // also set document.domain BEFORE jQuery is loaded into the page. This
+  // property is only applicable if you are supporting IE6/7 (or IE8 operating
+  // in "IE7 compatibility" mode).
+  // 
+  // In addition, the <jQuery.fn.hashchange.src> property must be set to the
+  // path of the included "document-domain.html" file, which can be renamed or
+  // modified if necessary (note that the document.domain specified must be the
+  // same in both your main JavaScript as well as in this file).
+  // 
+  // Usage:
+  // 
+  // jQuery.fn.hashchange.domain = document.domain;
+  
+  // Property: jQuery.fn.hashchange.src
+  // 
+  // If, for some reason, you need to specify an Iframe src file (for example,
+  // when setting document.domain as in <jQuery.fn.hashchange.domain>), you can
+  // do so using this property. Note that when using this property, history
+  // won't be recorded in IE6/7 until the Iframe src file loads. This property
+  // is only applicable if you are supporting IE6/7 (or IE8 operating in "IE7
+  // compatibility" mode).
+  // 
+  // Usage:
+  // 
+  // jQuery.fn.hashchange.src = 'path/to/file.html';
+  
+  $.fn[ str_hashchange ].delay = 50;
+  /*
+  $.fn[ str_hashchange ].domain = null;
+  $.fn[ str_hashchange ].src = null;
+  */
+  
+  // Event: hashchange event
+  // 
+  // Fired when location.hash changes. In browsers that support it, the native
+  // HTML5 window.onhashchange event is used, otherwise a polling loop is
+  // initialized, running every <jQuery.fn.hashchange.delay> milliseconds to
+  // see if the hash has changed. In IE6/7 (and IE8 operating in "IE7
+  // compatibility" mode), a hidden Iframe is created to allow the back button
+  // and hash-based history to work.
+  // 
+  // Usage as described in <jQuery.fn.hashchange>:
+  // 
+  // > // Bind an event handler.
+  // > jQuery(window).hashchange( function(e) {
+  // >   var hash = location.hash;
+  // >   ...
+  // > });
+  // > 
+  // > // Manually trigger the event handler.
+  // > jQuery(window).hashchange();
+  // 
+  // A more verbose usage that allows for event namespacing:
+  // 
+  // > // Bind an event handler.
+  // > jQuery(window).bind( 'hashchange', function(e) {
+  // >   var hash = location.hash;
+  // >   ...
+  // > });
+  // > 
+  // > // Manually trigger the event handler.
+  // > jQuery(window).trigger( 'hashchange' );
+  // 
+  // Additional Notes:
+  // 
+  // * The polling loop and Iframe are not created until at least one handler
+  //   is actually bound to the 'hashchange' event.
+  // * If you need the bound handler(s) to execute immediately, in cases where
+  //   a location.hash exists on page load, via bookmark or page refresh for
+  //   example, use jQuery(window).hashchange() or the more verbose 
+  //   jQuery(window).trigger( 'hashchange' ).
+  // * The event can be bound before DOM ready, but since it won't be usable
+  //   before then in IE6/7 (due to the necessary Iframe), recommended usage is
+  //   to bind it inside a DOM ready handler.
+  
+  // Override existing $.event.special.hashchange methods (allowing this plugin
+  // to be defined after jQuery BBQ in BBQ's source code).
+  special[ str_hashchange ] = $.extend( special[ str_hashchange ], {
+    
+    // Called only when the first 'hashchange' event is bound to window.
+    setup: function() {
+      // If window.onhashchange is supported natively, there's nothing to do..
+      if ( supports_onhashchange ) { return false; }
+      
+      // Otherwise, we need to create our own. And we don't want to call this
+      // until the user binds to the event, just in case they never do, since it
+      // will create a polling loop and possibly even a hidden Iframe.
+      $( fake_onhashchange.start );
+    },
+    
+    // Called only when the last 'hashchange' event is unbound from window.
+    teardown: function() {
+      // If window.onhashchange is supported natively, there's nothing to do..
+      if ( supports_onhashchange ) { return false; }
+      
+      // Otherwise, we need to stop ours (if possible).
+      $( fake_onhashchange.stop );
+    }
+    
+  });
+  
+  // fake_onhashchange does all the work of triggering the window.onhashchange
+  // event for browsers that don't natively support it, including creating a
+  // polling loop to watch for hash changes and in IE 6/7 creating a hidden
+  // Iframe to enable back and forward.
+  fake_onhashchange = (function(){
+    var self = {},
+      timeout_id,
+      
+      // Remember the initial hash so it doesn't get triggered immediately.
+      last_hash = get_fragment(),
+      
+      fn_retval = function(val){ return val; },
+      history_set = fn_retval,
+      history_get = fn_retval;
+    
+    // Start the polling loop.
+    self.start = function() {
+      timeout_id || poll();
+    };
+    
+    // Stop the polling loop.
+    self.stop = function() {
+      timeout_id && clearTimeout( timeout_id );
+      timeout_id = undefined;
+    };
+    
+    // This polling loop checks every $.fn.hashchange.delay milliseconds to see
+    // if location.hash has changed, and triggers the 'hashchange' event on
+    // window when necessary.
+    function poll() {
+      var hash = get_fragment(),
+        history_hash = history_get( last_hash );
+      
+      if ( hash !== last_hash ) {
+        history_set( last_hash = hash, history_hash );
+        
+        $(window).trigger( str_hashchange );
+        
+      } else if ( history_hash !== last_hash ) {
+        location.href = location.href.replace( /#.*/, '' ) + history_hash;
+      }
+      
+      timeout_id = setTimeout( poll, $.fn[ str_hashchange ].delay );
+    };
+    
+    // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+    // vvvvvvvvvvvvvvvvvvv REMOVE IF NOT SUPPORTING IE6/7/8 vvvvvvvvvvvvvvvvvvv
+    // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+    window.attachEvent && !window.addEventListener && !supports_onhashchange && (function(){
+      // Not only do IE6/7 need the "magical" Iframe treatment, but so does IE8
+      // when running in "IE7 compatibility" mode.
+      
+      var iframe,
+        iframe_src;
+      
+      // When the event is bound and polling starts in IE 6/7, create a hidden
+      // Iframe for history handling.
+      self.start = function(){
+        if ( !iframe ) {
+          iframe_src = $.fn[ str_hashchange ].src;
+          iframe_src = iframe_src && iframe_src + get_fragment();
+          
+          // Create hidden Iframe. Attempt to make Iframe as hidden as possible
+          // by using techniques from http://www.paciellogroup.com/blog/?p=604.
+          iframe = $('<iframe tabindex="-1" title="empty"/>').hide()
+            
+            // When Iframe has completely loaded, initialize the history and
+            // start polling.
+            .one( 'load', function(){
+              iframe_src || history_set( get_fragment() );
+              poll();
+            })
+            
+            // Load Iframe src if specified, otherwise nothing.
+            .attr( 'src', iframe_src || 'javascript:0' )
+            
+            // Append Iframe after the end of the body to prevent unnecessary
+            // initial page scrolling (yes, this works).
+            .insertAfter( 'body' )[0].contentWindow;
+          
+          // Whenever `document.title` changes, update the Iframe's title to
+          // prettify the back/next history menu entries. Since IE sometimes
+          // errors with "Unspecified error" the very first time this is set
+          // (yes, very useful) wrap this with a try/catch block.
+          doc.onpropertychange = function(){
+            try {
+              if ( event.propertyName === 'title' ) {
+                iframe.document.title = doc.title;
+              }
+            } catch(e) {}
+          };
+          
+        }
+      };
+      
+      // Override the "stop" method since an IE6/7 Iframe was created. Even
+      // if there are no longer any bound event handlers, the polling loop
+      // is still necessary for back/next to work at all!
+      self.stop = fn_retval;
+      
+      // Get history by looking at the hidden Iframe's location.hash.
+      history_get = function() {
+        return get_fragment( iframe.location.href );
+      };
+      
+      // Set a new history item by opening and then closing the Iframe
+      // document, *then* setting its location.hash. If document.domain has
+      // been set, update that as well.
+      history_set = function( hash, history_hash ) {
+        var iframe_doc = iframe.document,
+          domain = $.fn[ str_hashchange ].domain;
+        
+        if ( hash !== history_hash ) {
+          // Update Iframe with any initial `document.title` that might be set.
+          iframe_doc.title = doc.title;
+          
+          // Opening the Iframe's document after it has been closed is what
+          // actually adds a history entry.
+          iframe_doc.open();
+          
+          // Set document.domain for the Iframe document as well, if necessary.
+          domain && iframe_doc.write( '\x3cscript>document.domain="' + domain + '"\x3c/script>' );
+          
+          iframe_doc.close();
+          
+          // Update the Iframe's hash, for great justice.
+          iframe.location.hash = hash;
+        }
+      };
+      
+    })();
+    // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+    // ^^^^^^^^^^^^^^^^^^^ REMOVE IF NOT SUPPORTING IE6/7/8 ^^^^^^^^^^^^^^^^^^^
+    // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+    
+    return self;
+  })();
+  
+})(jQuery,this);
+
+
+(function( $, undefined ) {
+
+	/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
+	window.matchMedia = window.matchMedia || (function( doc, undefined ) {
+
+		var bool,
+			docElem = doc.documentElement,
+			refNode = docElem.firstElementChild || docElem.firstChild,
+			// fakeBody required for <FF4 when executed in <head>
+			fakeBody = doc.createElement( "body" ),
+			div = doc.createElement( "div" );
+
+		div.id = "mq-test-1";
+		div.style.cssText = "position:absolute;top:-100em";
+		fakeBody.style.background = "none";
+		fakeBody.appendChild(div);
+
+		return function(q){
+
+			div.innerHTML = "&shy;<style media=\"" + q + "\"> #mq-test-1 { width: 42px; }</style>";
+
+			docElem.insertBefore( fakeBody, refNode );
+			bool = div.offsetWidth === 42;
+			docElem.removeChild( fakeBody );
+
+			return {
+				matches: bool,
+				media: q
+			};
+
+		};
+
+	}( document ));
+
+	// $.mobile.media uses matchMedia to return a boolean.
+	$.mobile.media = function( q ) {
+		return window.matchMedia( q ).matches;
+	};
+
+})(jQuery);
+
+	(function( $, undefined ) {
+		var support = {
+			touch: "ontouchend" in document
+		};
+
+		$.mobile.support = $.mobile.support || {};
+		$.extend( $.support, support );
+		$.extend( $.mobile.support, support );
+	}( jQuery ));
+
+	(function( $, undefined ) {
+		$.extend( $.support, {
+			orientation: "orientation" in window && "onorientationchange" in window
+		});
+	}( jQuery ));
+
+(function( $, undefined ) {
+
+// thx Modernizr
+function propExists( prop ) {
+	var uc_prop = prop.charAt( 0 ).toUpperCase() + prop.substr( 1 ),
+		props = ( prop + " " + vendors.join( uc_prop + " " ) + uc_prop ).split( " " ),
+		v;
+
+	for ( v in props ) {
+		if ( fbCSS[ props[ v ] ] !== undefined ) {
+			return true;
+		}
+	}
+}
+
+var fakeBody = $( "<body>" ).prependTo( "html" ),
+	fbCSS = fakeBody[ 0 ].style,
+	vendors = [ "Webkit", "Moz", "O" ],
+	webos = "palmGetResource" in window, //only used to rule out scrollTop
+	operamini = window.operamini && ({}).toString.call( window.operamini ) === "[object OperaMini]",
+	bb = window.blackberry && !propExists( "-webkit-transform" ), //only used to rule out box shadow, as it's filled opaque on BB 5 and lower
+	nokiaLTE7_3;
+
+// inline SVG support test
+function inlineSVG() {
+	// Thanks Modernizr & Erik Dahlstrom
+	var w = window,
+		svg = !!w.document.createElementNS && !!w.document.createElementNS( "http://www.w3.org/2000/svg", "svg" ).createSVGRect && !( w.opera && navigator.userAgent.indexOf( "Chrome" ) === -1 ),
+		support = function( data ) {
+			if ( !( data && svg ) ) {
+				$( "html" ).addClass( "ui-nosvg" );
+			}
+		},
+		img = new w.Image();
+
+	img.onerror = function() {
+		support( false );
+	};
+	img.onload = function() {
+		support( img.width === 1 && img.height === 1 );
+	};
+	img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
+}
+
+function transform3dTest() {
+	var mqProp = "transform-3d",
+		// Because the `translate3d` test below throws false positives in Android:
+		ret = $.mobile.media( "(-" + vendors.join( "-" + mqProp + "),(-" ) + "-" + mqProp + "),(" + mqProp + ")" ),
+		el, transforms, t;
+
+	if ( ret ) {
+		return !!ret;
+	}
+
+	el = document.createElement( "div" );
+	transforms = {
+		// Weâre omitting Opera for the time being; MS uses unprefixed.
+		"MozTransform": "-moz-transform",
+		"transform": "transform"
+	};
+
+	fakeBody.append( el );
+
+	for ( t in transforms ) {
+		if ( el.style[ t ] !== undefined ) {
+			el.style[ t ] = "translate3d( 100px, 1px, 1px )";
+			ret = window.getComputedStyle( el ).getPropertyValue( transforms[ t ] );
+		}
+	}
+	return ( !!ret && ret !== "none" );
+}
+
+// Test for dynamic-updating base tag support ( allows us to avoid href,src attr rewriting )
+function baseTagTest() {
+	var fauxBase = location.protocol + "//" + location.host + location.pathname + "ui-dir/",
+		base = $( "head base" ),
+		fauxEle = null,
+		href = "",
+		link, rebase;
+
+	if ( !base.length ) {
+		base = fauxEle = $( "<base>", { "href": fauxBase }).appendTo( "head" );
+	} else {
+		href = base.attr( "href" );
+	}
+
+	link = $( "<a href='testurl' />" ).prependTo( fakeBody );
+	rebase = link[ 0 ].href;
+	base[ 0 ].href = href || location.pathname;
+
+	if ( fauxEle ) {
+		fauxEle.remove();
+	}
+	return rebase.indexOf( fauxBase ) === 0;
+}
+
+// Thanks Modernizr
+function cssPointerEventsTest() {
+	var element = document.createElement( "x" ),
+		documentElement = document.documentElement,
+		getComputedStyle = window.getComputedStyle,
+		supports;
+
+	if ( !( "pointerEvents" in element.style ) ) {
+		return false;
+	}
+
+	element.style.pointerEvents = "auto";
+	element.style.pointerEvents = "x";
+	documentElement.appendChild( element );
+	supports = getComputedStyle &&
+	getComputedStyle( element, "" ).pointerEvents === "auto";
+	documentElement.removeChild( element );
+	return !!supports;
+}
+
+function boundingRect() {
+	var div = document.createElement( "div" );
+	return typeof div.getBoundingClientRect !== "undefined";
+}
+
+// non-UA-based IE version check by James Padolsey, modified by jdalton - from http://gist.github.com/527683
+// allows for inclusion of IE 6+, including Windows Mobile 7
+$.extend( $.mobile, { browser: {} } );
+$.mobile.browser.oldIE = (function() {
+	var v = 3,
+		div = document.createElement( "div" ),
+		a = div.all || [];
+
+	do {
+		div.innerHTML = "<!--[if gt IE " + ( ++v ) + "]><br><![endif]-->";
+	} while( a[0] );
+
+	return v > 4 ? v : !v;
+})();
+
+function fixedPosition() {
+	var w = window,
+		ua = navigator.userAgent,
+		platform = navigator.platform,
+		// Rendering engine is Webkit, and capture major version
+		wkmatch = ua.match( /AppleWebKit\/([0-9]+)/ ),
+		wkversion = !!wkmatch && wkmatch[ 1 ],
+		ffmatch = ua.match( /Fennec\/([0-9]+)/ ),
+		ffversion = !!ffmatch && ffmatch[ 1 ],
+		operammobilematch = ua.match( /Opera Mobi\/([0-9]+)/ ),
+		omversion = !!operammobilematch && operammobilematch[ 1 ];
+
+	if (
+		// iOS 4.3 and older : Platform is iPhone/Pad/Touch and Webkit version is less than 534 (ios5)
+		( ( platform.indexOf( "iPhone" ) > -1 || platform.indexOf( "iPad" ) > -1  || platform.indexOf( "iPod" ) > -1 ) && wkversion && wkversion < 534 ) ||
+		// Opera Mini
+		( w.operamini && ({}).toString.call( w.operamini ) === "[object OperaMini]" ) ||
+		( operammobilematch && omversion < 7458 )	||
+		//Android lte 2.1: Platform is Android and Webkit version is less than 533 (Android 2.2)
+		( ua.indexOf( "Android" ) > -1 && wkversion && wkversion < 533 ) ||
+		// Firefox Mobile before 6.0 -
+		( ffversion && ffversion < 6 ) ||
+		// WebOS less than 3
+		( "palmGetResource" in window && wkversion && wkversion < 534 )	||
+		// MeeGo
+		( ua.indexOf( "MeeGo" ) > -1 && ua.indexOf( "NokiaBrowser/8.5.0" ) > -1 ) ) {
+		return false;
+	}
+
+	return true;
+}
+
+$.extend( $.support, {
+	// Note, Chrome for iOS has an extremely quirky implementation of popstate.
+	// We've chosen to take the shortest path to a bug fix here for issue #5426
+	// See the following link for information about the regex chosen
+	// https://developers.google.com/chrome/mobile/docs/user-agent#chrome_for_ios_user-agent
+	pushState: "pushState" in history &&
+		"replaceState" in history &&
+		// When running inside a FF iframe, calling replaceState causes an error
+		!( window.navigator.userAgent.indexOf( "Firefox" ) >= 0 && window.top !== window ) &&
+		( window.navigator.userAgent.search(/CriOS/) === -1 ),
+
+	mediaquery: $.mobile.media( "only all" ),
+	cssPseudoElement: !!propExists( "content" ),
+	touchOverflow: !!propExists( "overflowScrolling" ),
+	cssTransform3d: transform3dTest(),
+	boxShadow: !!propExists( "boxShadow" ) && !bb,
+	fixedPosition: fixedPosition(),
+	scrollTop: ("pageXOffset" in window ||
+		"scrollTop" in document.documentElement ||
+		"scrollTop" in fakeBody[ 0 ]) && !webos && !operamini,
+
+	dynamicBaseTag: baseTagTest(),
+	cssPointerEvents: cssPointerEventsTest(),
+	boundingRect: boundingRect(),
+	inlineSVG: inlineSVG
+});
+
+fakeBody.remove();
+
+// $.mobile.ajaxBlacklist is used to override ajaxEnabled on platforms that have known conflicts with hash history updates (BB5, Symbian)
+// or that generally work better browsing in regular http for full page refreshes (Opera Mini)
+// Note: This detection below is used as a last resort.
+// We recommend only using these detection methods when all other more reliable/forward-looking approaches are not possible
+nokiaLTE7_3 = (function() {
+
+	var ua = window.navigator.userAgent;
+
+	//The following is an attempt to match Nokia browsers that are running Symbian/s60, with webkit, version 7.3 or older
+	return ua.indexOf( "Nokia" ) > -1 &&
+			( ua.indexOf( "Symbian/3" ) > -1 || ua.indexOf( "Series60/5" ) > -1 ) &&
+			ua.indexOf( "AppleWebKit" ) > -1 &&
+			ua.match( /(BrowserNG|NokiaBrowser)\/7\.[0-3]/ );
+})();
+
+// Support conditions that must be met in order to proceed
+// default enhanced qualifications are media query support OR IE 7+
+
+$.mobile.gradeA = function() {
+	return ( ( $.support.mediaquery && $.support.cssPseudoElement ) || $.mobile.browser.oldIE && $.mobile.browser.oldIE >= 8 ) && ( $.support.boundingRect || $.fn.jquery.match(/1\.[0-7+]\.[0-9+]?/) !== null );
+};
+
+$.mobile.ajaxBlacklist =
+			// BlackBerry browsers, pre-webkit
+			window.blackberry && !window.WebKitPoint ||
+			// Opera Mini
+			operamini ||
+			// Symbian webkits pre 7.3
+			nokiaLTE7_3;
+
+// Lastly, this workaround is the only way we've found so far to get pre 7.3 Symbian webkit devices
+// to render the stylesheets when they're referenced before this script, as we'd recommend doing.
+// This simply reappends the CSS in place, which for some reason makes it apply
+if ( nokiaLTE7_3 ) {
+	$(function() {
+		$( "head link[rel='stylesheet']" ).attr( "rel", "alternate stylesheet" ).attr( "rel", "stylesheet" );
+	});
+}
+
+// For ruling out shadows via css
+if ( !$.support.boxShadow ) {
+	$( "html" ).addClass( "ui-noboxshadow" );
+}
+
+})( jQuery );
+
+
+(function( $, undefined ) {
+	var $win = $.mobile.window, self,
+		dummyFnToInitNavigate = function() {
+		};
+
+	$.event.special.beforenavigate = {
+		setup: function() {
+			$win.on( "navigate", dummyFnToInitNavigate );
+		},
+
+		teardown: function() {
+			$win.off( "navigate", dummyFnToInitNavigate );
+		}
+	};
+
+	$.event.special.navigate = self = {
+		bound: false,
+
+		pushStateEnabled: true,
+
+		originalEventName: undefined,
+
+		// If pushstate support is present and push state support is defined to
+		// be true on the mobile namespace.
+		isPushStateEnabled: function() {
+			return $.support.pushState &&
+				$.mobile.pushStateEnabled === true &&
+				this.isHashChangeEnabled();
+		},
+
+		// !! assumes mobile namespace is present
+		isHashChangeEnabled: function() {
+			return $.mobile.hashListeningEnabled === true;
+		},
+
+		// TODO a lot of duplication between popstate and hashchange
+		popstate: function( event ) {
+			var newEvent = new $.Event( "navigate" ),
+				beforeNavigate = new $.Event( "beforenavigate" ),
+				state = event.originalEvent.state || {};
+
+			beforeNavigate.originalEvent = event;
+			$win.trigger( beforeNavigate );
+
+			if ( beforeNavigate.isDefaultPrevented() ) {
+				return;
+			}
+
+			if ( event.historyState ) {
+				$.extend(state, event.historyState);
+			}
+
+			// Make sure the original event is tracked for the end
+			// user to inspect incase they want to do something special
+			newEvent.originalEvent = event;
+
+			// NOTE we let the current stack unwind because any assignment to
+			//      location.hash will stop the world and run this event handler. By
+			//      doing this we create a similar behavior to hashchange on hash
+			//      assignment
+			setTimeout(function() {
+				$win.trigger( newEvent, {
+					state: state
+				});
+			}, 0);
+		},
+
+		hashchange: function( event /*, data */ ) {
+			var newEvent = new $.Event( "navigate" ),
+				beforeNavigate = new $.Event( "beforenavigate" );
+
+			beforeNavigate.originalEvent = event;
+			$win.trigger( beforeNavigate );
+
+			if ( beforeNavigate.isDefaultPrevented() ) {
+				return;
+			}
+
+			// Make sure the original event is tracked for the end
+			// user to inspect incase they want to do something special
+			newEvent.originalEvent = event;
+
+			// Trigger the hashchange with state provided by the user
+			// that altered the hash
+			$win.trigger( newEvent, {
+				// Users that want to fully normalize the two events
+				// will need to do history management down the stack and
+				// add the state to the event before this binding is fired
+				// TODO consider allowing for the explicit addition of callbacks
+				//      to be fired before this value is set to avoid event timing issues
+				state: event.hashchangeState || {}
+			});
+		},
+
+		// TODO We really only want to set this up once
+		//      but I'm not clear if there's a beter way to achieve
+		//      this with the jQuery special event structure
+		setup: function( /* data, namespaces */ ) {
+			if ( self.bound ) {
+				return;
+			}
+
+			self.bound = true;
+
+			if ( self.isPushStateEnabled() ) {
+				self.originalEventName = "popstate";
+				$win.bind( "popstate.navigate", self.popstate );
+			} else if ( self.isHashChangeEnabled() ) {
+				self.originalEventName = "hashchange";
+				$win.bind( "hashchange.navigate", self.hashchange );
+			}
+		}
+	};
+})( jQuery );
+
+
+
+(function( $, undefined ) {
+		var path, $base, dialogHashKey = "&ui-state=dialog";
+
+		$.mobile.path = path = {
+			uiStateKey: "&ui-state",
+
+			// This scary looking regular expression parses an absolute URL or its relative
+			// variants (protocol, site, document, query, and hash), into the various
+			// components (protocol, host, path, query, fragment, etc that make up the
+			// URL as well as some other commonly used sub-parts. When used with RegExp.exec()
+			// or String.match, it parses the URL into a results array that looks like this:
+			//
+			//     [0]: http://jblas:password@mycompany.com:8080/mail/inbox?msg=1234&type=unread#msg-content
+			//     [1]: http://jblas:password@mycompany.com:8080/mail/inbox?msg=1234&type=unread
+			//     [2]: http://jblas:password@mycompany.com:8080/mail/inbox
+			//     [3]: http://jblas:password@mycompany.com:8080
+			//     [4]: http:
+			//     [5]: //
+			//     [6]: jblas:password@mycompany.com:8080
+			//     [7]: jblas:password
+			//     [8]: jblas
+			//     [9]: password
+			//    [10]: mycompany.com:8080
+			//    [11]: mycompany.com
+			//    [12]: 8080
+			//    [13]: /mail/inbox
+			//    [14]: /mail/
+			//    [15]: inbox
+			//    [16]: ?msg=1234&type=unread
+			//    [17]: #msg-content
+			//
+			urlParseRE: /^\s*(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/,
+
+			// Abstraction to address xss (Issue #4787) by removing the authority in
+			// browsers that auto-decode it. All references to location.href should be
+			// replaced with a call to this method so that it can be dealt with properly here
+			getLocation: function( url ) {
+				var parsedUrl = this.parseUrl( url || location.href ),
+					uri = url ? parsedUrl : location,
+
+					// Make sure to parse the url or the location object for the hash because using
+					// location.hash is autodecoded in firefox, the rest of the url should be from
+					// the object (location unless we're testing) to avoid the inclusion of the
+					// authority
+					hash = parsedUrl.hash;
+
+				// mimic the browser with an empty string when the hash is empty
+				hash = hash === "#" ? "" : hash;
+
+				return uri.protocol +
+					parsedUrl.doubleSlash +
+					uri.host +
+
+					// The pathname must start with a slash if there's a protocol, because you
+					// can't have a protocol followed by a relative path. Also, it's impossible to
+					// calculate absolute URLs from relative ones if the absolute one doesn't have
+					// a leading "/".
+					( ( uri.protocol !== "" && uri.pathname.substring( 0, 1 ) !== "/" ) ?
+						"/" : "" ) +
+					uri.pathname +
+					uri.search +
+					hash;
+			},
+
+			//return the original document url
+			getDocumentUrl: function( asParsedObject ) {
+				return asParsedObject ? $.extend( {}, path.documentUrl ) : path.documentUrl.href;
+			},
+
+			parseLocation: function() {
+				return this.parseUrl( this.getLocation() );
+			},
+
+			//Parse a URL into a structure that allows easy access to
+			//all of the URL components by name.
+			parseUrl: function( url ) {
+				// If we're passed an object, we'll assume that it is
+				// a parsed url object and just return it back to the caller.
+				if ( $.type( url ) === "object" ) {
+					return url;
+				}
+
+				var matches = path.urlParseRE.exec( url || "" ) || [];
+
+					// Create an object that allows the caller to access the sub-matches
+					// by name. Note that IE returns an empty string instead of undefined,
+					// like all other browsers do, so we normalize everything so its consistent
+					// no matter what browser we're running on.
+					return {
+						href:         matches[  0 ] || "",
+						hrefNoHash:   matches[  1 ] || "",
+						hrefNoSearch: matches[  2 ] || "",
+						domain:       matches[  3 ] || "",
+						protocol:     matches[  4 ] || "",
+						doubleSlash:  matches[  5 ] || "",
+						authority:    matches[  6 ] || "",
+						username:     matches[  8 ] || "",
+						password:     matches[  9 ] || "",
+						host:         matches[ 10 ] || "",
+						hostname:     matches[ 11 ] || "",
+						port:         matches[ 12 ] || "",
+						pathname:     matches[ 13 ] || "",
+						directory:    matches[ 14 ] || "",
+						filename:     matches[ 15 ] || "",
+						search:       matches[ 16 ] || "",
+						hash:         matches[ 17 ] || ""
+					};
+			},
+
+			//Turn relPath into an asbolute path. absPath is
+			//an optional absolute path which describes what
+			//relPath is relative to.
+			makePathAbsolute: function( relPath, absPath ) {
+				var absStack,
+					relStack,
+					i, d;
+
+				if ( relPath && relPath.charAt( 0 ) === "/" ) {
+					return relPath;
+				}
+
+				relPath = relPath || "";
+				absPath = absPath ? absPath.replace( /^\/|(\/[^\/]*|[^\/]+)$/g, "" ) : "";
+
+				absStack = absPath ? absPath.split( "/" ) : [];
+				relStack = relPath.split( "/" );
+
+				for ( i = 0; i < relStack.length; i++ ) {
+					d = relStack[ i ];
+					switch ( d ) {
+						case ".":
+							break;
+						case "..":
+							if ( absStack.length ) {
+								absStack.pop();
+							}
+							break;
+						default:
+							absStack.push( d );
+							break;
+					}
+				}
+				return "/" + absStack.join( "/" );
+			},
+
+			//Returns true if both urls have the same domain.
+			isSameDomain: function( absUrl1, absUrl2 ) {
+				return path.parseUrl( absUrl1 ).domain.toLowerCase() ===
+					path.parseUrl( absUrl2 ).domain.toLowerCase();
+			},
+
+			//Returns true for any relative variant.
+			isRelativeUrl: function( url ) {
+				// All relative Url variants have one thing in common, no protocol.
+				return path.parseUrl( url ).protocol === "";
+			},
+
+			//Returns true for an absolute url.
+			isAbsoluteUrl: function( url ) {
+				return path.parseUrl( url ).protocol !== "";
+			},
+
+			//Turn the specified realtive URL into an absolute one. This function
+			//can handle all relative variants (protocol, site, document, query, fragment).
+			makeUrlAbsolute: function( relUrl, absUrl ) {
+				if ( !path.isRelativeUrl( relUrl ) ) {
+					return relUrl;
+				}
+
+				if ( absUrl === undefined ) {
+					absUrl = this.documentBase;
+				}
+
+				var relObj = path.parseUrl( relUrl ),
+					absObj = path.parseUrl( absUrl ),
+					protocol = relObj.protocol || absObj.protocol,
+					doubleSlash = relObj.protocol ? relObj.doubleSlash : ( relObj.doubleSlash || absObj.doubleSlash ),
+					authority = relObj.authority || absObj.authority,
+					hasPath = relObj.pathname !== "",
+					pathname = path.makePathAbsolute( relObj.pathname || absObj.filename, absObj.pathname ),
+					search = relObj.search || ( !hasPath && absObj.search ) || "",
+					hash = relObj.hash;
+
+				return protocol + doubleSlash + authority + pathname + search + hash;
+			},
+
+			//Add search (aka query) params to the specified url.
+			addSearchParams: function( url, params ) {
+				var u = path.parseUrl( url ),
+					p = ( typeof params === "object" ) ? $.param( params ) : params,
+					s = u.search || "?";
+				return u.hrefNoSearch + s + ( s.charAt( s.length - 1 ) !== "?" ? "&" : "" ) + p + ( u.hash || "" );
+			},
+
+			convertUrlToDataUrl: function( absUrl ) {
+				var result = absUrl,
+					u = path.parseUrl( absUrl );
+
+				if ( path.isEmbeddedPage( u ) ) {
+					// For embedded pages, remove the dialog hash key as in getFilePath(),
+					// and remove otherwise the Data Url won't match the id of the embedded Page.
+					result = u.hash
+						.split( dialogHashKey )[0]
+						.replace( /^#/, "" )
+						.replace( /\?.*$/, "" );
+				} else if ( path.isSameDomain( u, this.documentBase ) ) {
+					result = u.hrefNoHash.replace( this.documentBase.domain, "" ).split( dialogHashKey )[0];
+				}
+
+				return window.decodeURIComponent( result );
+			},
+
+			//get path from current hash, or from a file path
+			get: function( newPath ) {
+				if ( newPath === undefined ) {
+					newPath = path.parseLocation().hash;
+				}
+				return path.stripHash( newPath ).replace( /[^\/]*\.[^\/*]+$/, "" );
+			},
+
+			//set location hash to path
+			set: function( path ) {
+				location.hash = path;
+			},
+
+			//test if a given url (string) is a path
+			//NOTE might be exceptionally naive
+			isPath: function( url ) {
+				return ( /\// ).test( url );
+			},
+
+			//return a url path with the window's location protocol/hostname/pathname removed
+			clean: function( url ) {
+				return url.replace( this.documentBase.domain, "" );
+			},
+
+			//just return the url without an initial #
+			stripHash: function( url ) {
+				return url.replace( /^#/, "" );
+			},
+
+			stripQueryParams: function( url ) {
+				return url.replace( /\?.*$/, "" );
+			},
+
+			//remove the preceding hash, any query params, and dialog notations
+			cleanHash: function( hash ) {
+				return path.stripHash( hash.replace( /\?.*$/, "" ).replace( dialogHashKey, "" ) );
+			},
+
+			isHashValid: function( hash ) {
+				return ( /^#[^#]+$/ ).test( hash );
+			},
+
+			//check whether a url is referencing the same domain, or an external domain or different protocol
+			//could be mailto, etc
+			isExternal: function( url ) {
+				var u = path.parseUrl( url );
+
+				return !!( u.protocol &&
+					( u.domain.toLowerCase() !== this.documentUrl.domain.toLowerCase() ) );
+			},
+
+			hasProtocol: function( url ) {
+				return ( /^(:?\w+:)/ ).test( url );
+			},
+
+			isEmbeddedPage: function( url ) {
+				var u = path.parseUrl( url );
+
+				//if the path is absolute, then we need to compare the url against
+				//both the this.documentUrl and the documentBase. The main reason for this
+				//is that links embedded within external documents will refer to the
+				//application document, whereas links embedded within the application
+				//document will be resolved against the document base.
+				if ( u.protocol !== "" ) {
+					return ( !this.isPath(u.hash) && u.hash && ( u.hrefNoHash === this.documentUrl.hrefNoHash || ( this.documentBaseDiffers && u.hrefNoHash === this.documentBase.hrefNoHash ) ) );
+				}
+				return ( /^#/ ).test( u.href );
+			},
+
+			squash: function( url, resolutionUrl ) {
+				var href, cleanedUrl, search, stateIndex, docUrl,
+					isPath = this.isPath( url ),
+					uri = this.parseUrl( url ),
+					preservedHash = uri.hash,
+					uiState = "";
+
+				// produce a url against which we can resolve the provided path
+				if ( !resolutionUrl ) {
+					if ( isPath ) {
+						resolutionUrl = path.getLocation();
+					} else {
+						docUrl = path.getDocumentUrl( true );
+						if ( path.isPath( docUrl.hash ) ) {
+							resolutionUrl = path.squash( docUrl.href );
+						} else {
+							resolutionUrl = docUrl.href;
+						}
+					}
+				}
+
+				// If the url is anything but a simple string, remove any preceding hash
+				// eg #foo/bar -> foo/bar
+				//    #foo -> #foo
+				cleanedUrl = isPath ? path.stripHash( url ) : url;
+
+				// If the url is a full url with a hash check if the parsed hash is a path
+				// if it is, strip the #, and use it otherwise continue without change
+				cleanedUrl = path.isPath( uri.hash ) ? path.stripHash( uri.hash ) : cleanedUrl;
+
+				// Split the UI State keys off the href
+				stateIndex = cleanedUrl.indexOf( this.uiStateKey );
+
+				// store the ui state keys for use
+				if ( stateIndex > -1 ) {
+					uiState = cleanedUrl.slice( stateIndex );
+					cleanedUrl = cleanedUrl.slice( 0, stateIndex );
+				}
+
+				// make the cleanedUrl absolute relative to the resolution url
+				href = path.makeUrlAbsolute( cleanedUrl, resolutionUrl );
+
+				// grab the search from the resolved url since parsing from
+				// the passed url may not yield the correct result
+				search = this.parseUrl( href ).search;
+
+				// TODO all this crap is terrible, clean it up
+				if ( isPath ) {
+					// reject the hash if it's a path or it's just a dialog key
+					if ( path.isPath( preservedHash ) || preservedHash.replace("#", "").indexOf( this.uiStateKey ) === 0) {
+						preservedHash = "";
+					}
+
+					// Append the UI State keys where it exists and it's been removed
+					// from the url
+					if ( uiState && preservedHash.indexOf( this.uiStateKey ) === -1) {
+						preservedHash += uiState;
+					}
+
+					// make sure that pound is on the front of the hash
+					if ( preservedHash.indexOf( "#" ) === -1 && preservedHash !== "" ) {
+						preservedHash = "#" + preservedHash;
+					}
+
+					// reconstruct each of the pieces with the new search string and hash
+					href = path.parseUrl( href );
+					href = href.protocol + href.doubleSlash + href.host + href.pathname + search +
+						preservedHash;
+				} else {
+					href += href.indexOf( "#" ) > -1 ? uiState : "#" + uiState;
+				}
+
+				return href;
+			},
+
+			isPreservableHash: function( hash ) {
+				return hash.replace( "#", "" ).indexOf( this.uiStateKey ) === 0;
+			},
+
+			// Escape weird characters in the hash if it is to be used as a selector
+			hashToSelector: function( hash ) {
+				var hasHash = ( hash.substring( 0, 1 ) === "#" );
+				if ( hasHash ) {
+					hash = hash.substring( 1 );
+				}
+				return ( hasHash ? "#" : "" ) + hash.replace( /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g, "\\$1" );
+			},
+
+			// return the substring of a filepath before the dialogHashKey, for making a server
+			// request
+			getFilePath: function( path ) {
+				return path && path.split( dialogHashKey )[0];
+			},
+
+			// check if the specified url refers to the first page in the main
+			// application document.
+			isFirstPageUrl: function( url ) {
+				// We only deal with absolute paths.
+				var u = path.parseUrl( path.makeUrlAbsolute( url, this.documentBase ) ),
+
+					// Does the url have the same path as the document?
+					samePath = u.hrefNoHash === this.documentUrl.hrefNoHash ||
+						( this.documentBaseDiffers &&
+							u.hrefNoHash === this.documentBase.hrefNoHash ),
+
+					// Get the first page element.
+					fp = $.mobile.firstPage,
+
+					// Get the id of the first page element if it has one.
+					fpId = fp && fp[0] ? fp[0].id : undefined;
+
+				// The url refers to the first page if the path matches the document and
+				// it either has no hash value, or the hash is exactly equal to the id
+				// of the first page element.
+				return samePath &&
+					( !u.hash ||
+						u.hash === "#" ||
+						( fpId && u.hash.replace( /^#/, "" ) === fpId ) );
+			},
+
+			// Some embedded browsers, like the web view in Phone Gap, allow
+			// cross-domain XHR requests if the document doing the request was loaded
+			// via the file:// protocol. This is usually to allow the application to
+			// "phone home" and fetch app specific data. We normally let the browser
+			// handle external/cross-domain urls, but if the allowCrossDomainPages
+			// option is true, we will allow cross-domain http/https requests to go
+			// through our page loading logic.
+			isPermittedCrossDomainRequest: function( docUrl, reqUrl ) {
+				return $.mobile.allowCrossDomainPages &&
+					(docUrl.protocol === "file:" || docUrl.protocol === "content:") &&
+					reqUrl.search( /^https?:/ ) !== -1;
+			}
+		};
+
+		path.documentUrl = path.parseLocation();
+
+		$base = $( "head" ).find( "base" );
+
+		path.documentBase = $base.length ?
+			path.parseUrl( path.makeUrlAbsolute( $base.attr( "href" ), path.documentUrl.href ) ) :
+			path.documentUrl;
+
+		path.documentBaseDiffers = (path.documentUrl.hrefNoHash !== path.documentBase.hrefNoHash);
+
+		//return the original document base url
+		path.getDocumentBase = function( asParsedObject ) {
+			return asParsedObject ? $.extend( {}, path.documentBase ) : path.documentBase.href;
+		};
+
+		// DEPRECATED as of 1.4.0 - remove in 1.5.0
+		$.extend( $.mobile, {
+
+			//return the original document url
+			getDocumentUrl: path.getDocumentUrl,
+
+			//return the original document base url
+			getDocumentBase: path.getDocumentBase
+		});
+})( jQuery );
+
+
+
+(function( $, undefined ) {
+	$.mobile.History = function( stack, index ) {
+		this.stack = stack || [];
+		this.activeIndex = index || 0;
+	};
+
+	$.extend($.mobile.History.prototype, {
+		getActive: function() {
+			return this.stack[ this.activeIndex ];
+		},
+
+		getLast: function() {
+			return this.stack[ this.previousIndex ];
+		},
+
+		getNext: function() {
+			return this.stack[ this.activeIndex + 1 ];
+		},
+
+		getPrev: function() {
+			return this.stack[ this.activeIndex - 1 ];
+		},
+
+		// addNew is used whenever a new page is added
+		add: function( url, data ) {
+			data = data || {};
+
+			//if there's forward history, wipe it
+			if ( this.getNext() ) {
+				this.clearForward();
+			}
+
+			// if the hash is included in the data make sure the shape
+			// is consistent for comparison
+			if ( data.hash && data.hash.indexOf( "#" ) === -1) {
+				data.hash = "#" + data.hash;
+			}
+
+			data.url = url;
+			this.stack.push( data );
+			this.activeIndex = this.stack.length - 1;
+		},
+
+		//wipe urls ahead of active index
+		clearForward: function() {
+			this.stack = this.stack.slice( 0, this.activeIndex + 1 );
+		},
+
+		find: function( url, stack, earlyReturn ) {
+			stack = stack || this.stack;
+
+			var entry, i, length = stack.length, index;
+
+			for ( i = 0; i < length; i++ ) {
+				entry = stack[i];
+
+				if ( decodeURIComponent(url) === decodeURIComponent(entry.url) ||
+					decodeURIComponent(url) === decodeURIComponent(entry.hash) ) {
+					index = i;
+
+					if ( earlyReturn ) {
+						return index;
+					}
+				}
+			}
+
+			return index;
+		},
+
+		closest: function( url ) {
+			var closest, a = this.activeIndex;
+
+			// First, take the slice of the history stack before the current index and search
+			// for a url match. If one is found, we'll avoid avoid looking through forward history
+			// NOTE the preference for backward history movement is driven by the fact that
+			//      most mobile browsers only have a dedicated back button, and users rarely use
+			//      the forward button in desktop browser anyhow
+			closest = this.find( url, this.stack.slice(0, a) );
+
+			// If nothing was found in backward history check forward. The `true`
+			// value passed as the third parameter causes the find method to break
+			// on the first match in the forward history slice. The starting index
+			// of the slice must then be added to the result to get the element index
+			// in the original history stack :( :(
+			//
+			// TODO this is hyper confusing and should be cleaned up (ugh so bad)
+			if ( closest === undefined ) {
+				closest = this.find( url, this.stack.slice(a), true );
+				closest = closest === undefined ? closest : closest + a;
+			}
+
+			return closest;
+		},
+
+		direct: function( opts ) {
+			var newActiveIndex = this.closest( opts.url ), a = this.activeIndex;
+
+			// save new page index, null check to prevent falsey 0 result
+			// record the previous index for reference
+			if ( newActiveIndex !== undefined ) {
+				this.activeIndex = newActiveIndex;
+				this.previousIndex = a;
+			}
+
+			// invoke callbacks where appropriate
+			//
+			// TODO this is also convoluted and confusing
+			if ( newActiveIndex < a ) {
+				( opts.present || opts.back || $.noop )( this.getActive(), "back" );
+			} else if ( newActiveIndex > a ) {
+				( opts.present || opts.forward || $.noop )( this.getActive(), "forward" );
+			} else if ( newActiveIndex === undefined && opts.missing ) {
+				opts.missing( this.getActive() );
+			}
+		}
+	});
+})( jQuery );
+
+
+
+(function( $, undefined ) {
+	var path = $.mobile.path,
+		initialHref = location.href;
+
+	$.mobile.Navigator = function( history ) {
+		this.history = history;
+		this.ignoreInitialHashChange = true;
+
+		$.mobile.window.bind({
+			"popstate.history": $.proxy( this.popstate, this ),
+			"hashchange.history": $.proxy( this.hashchange, this )
+		});
+	};
+
+	$.extend($.mobile.Navigator.prototype, {
+		squash: function( url, data ) {
+			var state, href, hash = path.isPath(url) ? path.stripHash(url) : url;
+
+			href = path.squash( url );
+
+			// make sure to provide this information when it isn't explicitly set in the
+			// data object that was passed to the squash method
+			state = $.extend({
+				hash: hash,
+				url: href
+			}, data);
+
+			// replace the current url with the new href and store the state
+			// Note that in some cases we might be replacing an url with the
+			// same url. We do this anyways because we need to make sure that
+			// all of our history entries have a state object associated with
+			// them. This allows us to work around the case where $.mobile.back()
+			// is called to transition from an external page to an embedded page.
+			// In that particular case, a hashchange event is *NOT* generated by the browser.
+			// Ensuring each history entry has a state object means that onPopState()
+			// will always trigger our hashchange callback even when a hashchange event
+			// is not fired.
+			window.history.replaceState( state, state.title || document.title, href );
+
+			return state;
+		},
+
+		hash: function( url, href ) {
+			var parsed, loc, hash, resolved;
+
+			// Grab the hash for recording. If the passed url is a path
+			// we used the parsed version of the squashed url to reconstruct,
+			// otherwise we assume it's a hash and store it directly
+			parsed = path.parseUrl( url );
+			loc = path.parseLocation();
+
+			if ( loc.pathname + loc.search === parsed.pathname + parsed.search ) {
+				// If the pathname and search of the passed url is identical to the current loc
+				// then we must use the hash. Otherwise there will be no event
+				// eg, url = "/foo/bar?baz#bang", location.href = "http://example.com/foo/bar?baz"
+				hash = parsed.hash ? parsed.hash : parsed.pathname + parsed.search;
+			} else if ( path.isPath(url) ) {
+				resolved = path.parseUrl( href );
+				// If the passed url is a path, make it domain relative and remove any trailing hash
+				hash = resolved.pathname + resolved.search + (path.isPreservableHash( resolved.hash )? resolved.hash.replace( "#", "" ) : "");
+			} else {
+				hash = url;
+			}
+
+			return hash;
+		},
+
+		// TODO reconsider name
+		go: function( url, data, noEvents ) {
+			var state, href, hash, popstateEvent,
+				isPopStateEvent = $.event.special.navigate.isPushStateEnabled();
+
+			// Get the url as it would look squashed on to the current resolution url
+			href = path.squash( url );
+
+			// sort out what the hash sould be from the url
+			hash = this.hash( url, href );
+
+			// Here we prevent the next hash change or popstate event from doing any
+			// history management. In the case of hashchange we don't swallow it
+			// if there will be no hashchange fired (since that won't reset the value)
+			// and will swallow the following hashchange
+			if ( noEvents && hash !== path.stripHash(path.parseLocation().hash) ) {
+				this.preventNextHashChange = noEvents;
+			}
+
+			// IMPORTANT in the case where popstate is supported the event will be triggered
+			//      directly, stopping further execution - ie, interupting the flow of this
+			//      method call to fire bindings at this expression. Below the navigate method
+			//      there is a binding to catch this event and stop its propagation.
+			//
+			//      We then trigger a new popstate event on the window with a null state
+			//      so that the navigate events can conclude their work properly
+			//
+			// if the url is a path we want to preserve the query params that are available on
+			// the current url.
+			this.preventHashAssignPopState = true;
+			window.location.hash = hash;
+
+			// If popstate is enabled and the browser triggers `popstate` events when the hash
+			// is set (this often happens immediately in browsers like Chrome), then the
+			// this flag will be set to false already. If it's a browser that does not trigger
+			// a `popstate` on hash assignement or `replaceState` then we need avoid the branch
+			// that swallows the event created by the popstate generated by the hash assignment
+			// At the time of this writing this happens with Opera 12 and some version of IE
+			this.preventHashAssignPopState = false;
+
+			state = $.extend({
+				url: href,
+				hash: hash,
+				title: document.title
+			}, data);
+
+			if ( isPopStateEvent ) {
+				popstateEvent = new $.Event( "popstate" );
+				popstateEvent.originalEvent = {
+					type: "popstate",
+					state: null
+				};
+
+				this.squash( url, state );
+
+				// Trigger a new faux popstate event to replace the one that we
+				// caught that was triggered by the hash setting above.
+				if ( !noEvents ) {
+					this.ignorePopState = true;
+					$.mobile.window.trigger( popstateEvent );
+				}
+			}
+
+			// record the history entry so that the information can be included
+			// in hashchange event driven navigate events in a similar fashion to
+			// the state that's provided by popstate
+			this.history.add( state.url, state );
+		},
+
+		// This binding is intended to catch the popstate events that are fired
+		// when execution of the `$.navigate` method stops at window.location.hash = url;
+		// and completely prevent them from propagating. The popstate event will then be
+		// retriggered after execution resumes
+		//
+		// TODO grab the original event here and use it for the synthetic event in the
+		//      second half of the navigate execution that will follow this binding
+		popstate: function( event ) {
+			var hash, state;
+
+			// Partly to support our test suite which manually alters the support
+			// value to test hashchange. Partly to prevent all around weirdness
+			if ( !$.event.special.navigate.isPushStateEnabled() ) {
+				return;
+			}
+
+			// If this is the popstate triggered by the actual alteration of the hash
+			// prevent it completely. History is tracked manually
+			if ( this.preventHashAssignPopState ) {
+				this.preventHashAssignPopState = false;
+				event.stopImmediatePropagation();
+				return;
+			}
+
+			// if this is the popstate triggered after the `replaceState` call in the go
+			// method, then simply ignore it. The history entry has already been captured
+			if ( this.ignorePopState ) {
+				this.ignorePopState = false;
+				return;
+			}
+
+			// If there is no state, and the history stack length is one were
+			// probably getting the page load popstate fired by browsers like chrome
+			// avoid it and set the one time flag to false.
+			// TODO: Do we really need all these conditions? Comparing location hrefs
+			// should be sufficient.
+			if ( !event.originalEvent.state &&
+				this.history.stack.length === 1 &&
+				this.ignoreInitialHashChange ) {
+				this.ignoreInitialHashChange = false;
+
+				if ( location.href === initialHref ) {
+					event.preventDefault();
+					return;
+				}
+			}
+
+			// account for direct manipulation of the hash. That is, we will receive a popstate
+			// when the hash is changed by assignment, and it won't have a state associated. We
+			// then need to squash the hash. See below for handling of hash assignment that
+			// matches an existing history entry
+			// TODO it might be better to only add to the history stack
+			//      when the hash is adjacent to the active history entry
+			hash = path.parseLocation().hash;
+			if ( !event.originalEvent.state && hash ) {
+				// squash the hash that's been assigned on the URL with replaceState
+				// also grab the resulting state object for storage
+				state = this.squash( hash );
+
+				// record the new hash as an additional history entry
+				// to match the browser's treatment of hash assignment
+				this.history.add( state.url, state );
+
+				// pass the newly created state information
+				// along with the event
+				event.historyState = state;
+
+				// do not alter history, we've added a new history entry
+				// so we know where we are
+				return;
+			}
+
+			// If all else fails this is a popstate that comes from the back or forward buttons
+			// make sure to set the state of our history stack properly, and record the directionality
+			this.history.direct({
+				url: (event.originalEvent.state || {}).url || hash,
+
+				// When the url is either forward or backward in history include the entry
+				// as data on the event object for merging as data in the navigate event
+				present: function( historyEntry, direction ) {
+					// make sure to create a new object to pass down as the navigate event data
+					event.historyState = $.extend({}, historyEntry);
+					event.historyState.direction = direction;
+				}
+			});
+		},
+
+		// NOTE must bind before `navigate` special event hashchange binding otherwise the
+		//      navigation data won't be attached to the hashchange event in time for those
+		//      bindings to attach it to the `navigate` special event
+		// TODO add a check here that `hashchange.navigate` is bound already otherwise it's
+		//      broken (exception?)
+		hashchange: function( event ) {
+			var history, hash;
+
+			// If hashchange listening is explicitly disabled or pushstate is supported
+			// avoid making use of the hashchange handler.
+			if (!$.event.special.navigate.isHashChangeEnabled() ||
+				$.event.special.navigate.isPushStateEnabled() ) {
+				return;
+			}
+
+			// On occasion explicitly want to prevent the next hash from propogating because we only
+			// with to alter the url to represent the new state do so here
+			if ( this.preventNextHashChange ) {
+				this.preventNextHashChange = false;
+				event.stopImmediatePropagation();
+				return;
+			}
+
+			history = this.history;
+			hash = path.parseLocation().hash;
+
+			// If this is a hashchange caused by the back or forward button
+			// make sure to set the state of our history stack properly
+			this.history.direct({
+				url: hash,
+
+				// When the url is either forward or backward in history include the entry
+				// as data on the event object for merging as data in the navigate event
+				present: function( historyEntry, direction ) {
+					// make sure to create a new object to pass down as the navigate event data
+					event.hashchangeState = $.extend({}, historyEntry);
+					event.hashchangeState.direction = direction;
+				},
+
+				// When we don't find a hash in our history clearly we're aiming to go there
+				// record the entry as new for future traversal
+				//
+				// NOTE it's not entirely clear that this is the right thing to do given that we
+				//      can't know the users intention. It might be better to explicitly _not_
+				//      support location.hash assignment in preference to $.navigate calls
+				// TODO first arg to add should be the href, but it causes issues in identifying
+				//      embeded pages
+				missing: function() {
+					history.add( hash, {
+						hash: hash,
+						title: document.title
+					});
+				}
+			});
+		}
+	});
+})( jQuery );
+
+
+
+(function( $, undefined ) {
+	// TODO consider queueing navigation activity until previous activities have completed
+	//      so that end users don't have to think about it. Punting for now
+	// TODO !! move the event bindings into callbacks on the navigate event
+	$.mobile.navigate = function( url, data, noEvents ) {
+		$.mobile.navigate.navigator.go( url, data, noEvents );
+	};
+
+	// expose the history on the navigate method in anticipation of full integration with
+	// existing navigation functionalty that is tightly coupled to the history information
+	$.mobile.navigate.history = new $.mobile.History();
+
+	// instantiate an instance of the navigator for use within the $.navigate method
+	$.mobile.navigate.navigator = new $.mobile.Navigator( $.mobile.navigate.history );
+
+	var loc = $.mobile.path.parseLocation();
+	$.mobile.navigate.history.add( loc.href, {hash: loc.hash} );
+})( jQuery );
+
+
+(function( $, undefined ) {
+	var props = {
+			"animation": {},
+			"transition": {}
+		},
+		testElement = document.createElement( "a" ),
+		vendorPrefixes = [ "", "webkit-", "moz-", "o-" ];
+
+	$.each( [ "animation", "transition" ], function( i, test ) {
+
+		// Get correct name for test
+		var testName = ( i === 0 ) ? test + "-" + "name" : test;
+
+		$.each( vendorPrefixes, function( j, prefix ) {
+			if ( testElement.style[ $.camelCase( prefix + testName ) ] !== undefined ) {
+				 props[ test ][ "prefix" ] = prefix;
+				return false;
+			}
+		});
+
+		// Set event and duration names for later use
+		props[ test ][ "duration" ] =
+			$.camelCase( props[ test ][ "prefix" ] + test + "-" + "duration" );
+		props[ test ][ "event" ] =
+			$.camelCase( props[ test ][ "prefix" ] + test + "-" + "end" );
+
+		// All lower case if not a vendor prop
+		if ( props[ test ][ "prefix" ] === "" ) {
+			props[ test ][ "event" ] = props[ test ][ "event" ].toLowerCase();
+		}
+	});
+
+	// If a valid prefix was found then the it is supported by the browser
+	$.support.cssTransitions = ( props[ "transition" ][ "prefix" ] !== undefined );
+	$.support.cssAnimations = ( props[ "animation" ][ "prefix" ] !== undefined );
+
+	// Remove the testElement
+	$( testElement ).remove();
+
+	// Animation complete callback
+	$.fn.animationComplete = function( callback, type, fallbackTime ) {
+		var timer, duration,
+			that = this,
+			eventBinding = function() {
+
+				// Clear the timer so we don't call callback twice
+				clearTimeout( timer );
+				callback.apply( this, arguments );
+			},
+			animationType = ( !type || type === "animation" ) ? "animation" : "transition";
+
+		// Make sure selected type is supported by browser
+		if ( ( $.support.cssTransitions && animationType === "transition" ) ||
+			( $.support.cssAnimations && animationType === "animation" ) ) {
+
+			// If a fallback time was not passed set one
+			if ( fallbackTime === undefined ) {
+
+				// Make sure the was not bound to document before checking .css
+				if ( $( this ).context !== document ) {
+
+					// Parse the durration since its in second multiple by 1000 for milliseconds
+					// Multiply by 3 to make sure we give the animation plenty of time.
+					duration = parseFloat(
+						$( this ).css( props[ animationType ].duration )
+					) * 3000;
+				}
+
+				// If we could not read a duration use the default
+				if ( duration === 0 || duration === undefined || isNaN( duration ) ) {
+					duration = $.fn.animationComplete.defaultDuration;
+				}
+			}
+
+			// Sets up the fallback if event never comes
+			timer = setTimeout( function() {
+				$( that ).off( props[ animationType ].event, eventBinding );
+				callback.apply( that );
+			}, duration );
+
+			// Bind the event
+			return $( this ).one( props[ animationType ].event, eventBinding );
+		} else {
+
+			// CSS animation / transitions not supported
+			// Defer execution for consistency between webkit/non webkit
+			setTimeout( $.proxy( callback, this ), 0 );
+			return $( this );
+		}
+	};
+
+	// Allow default callback to be configured on mobileInit
+	$.fn.animationComplete.defaultDuration = 1000;
+})( jQuery );
+
+// This plugin is an experiment for abstracting away the touch and mouse
+// events so that developers don't have to worry about which method of input
+// the device their document is loaded on supports.
+//
+// The idea here is to allow the developer to register listeners for the
+// basic mouse events, such as mousedown, mousemove, mouseup, and click,
+// and the plugin will take care of registering the correct listeners
+// behind the scenes to invoke the listener at the fastest possible time
+// for that device, while still retaining the order of event firing in
+// the traditional mouse environment, should multiple handlers be registered
+// on the same element for different events.
+//
+// The current version exposes the following virtual events to jQuery bind methods:
+// "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel"
+
+(function( $, window, document, undefined ) {
+
+var dataPropertyName = "virtualMouseBindings",
+	touchTargetPropertyName = "virtualTouchID",
+	virtualEventNames = "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split( " " ),
+	touchEventProps = "clientX clientY pageX pageY screenX screenY".split( " " ),
+	mouseHookProps = $.event.mouseHooks ? $.event.mouseHooks.props : [],
+	mouseEventProps = $.event.props.concat( mouseHookProps ),
+	activeDocHandlers = {},
+	resetTimerID = 0,
+	startX = 0,
+	startY = 0,
+	didScroll = false,
+	clickBlockList = [],
+	blockMouseTriggers = false,
+	blockTouchTriggers = false,
+	eventCaptureSupported = "addEventListener" in document,
+	$document = $( document ),
+	nextTouchID = 1,
+	lastTouchID = 0, threshold,
+	i;
+
+$.vmouse = {
+	moveDistanceThreshold: 10,
+	clickDistanceThreshold: 10,
+	resetTimerDuration: 1500
+};
+
+function getNativeEvent( event ) {
+
+	while ( event && typeof event.originalEvent !== "undefined" ) {
+		event = event.originalEvent;
+	}
+	return event;
+}
+
+function createVirtualEvent( event, eventType ) {
+
+	var t = event.type,
+		oe, props, ne, prop, ct, touch, i, j, len;
+
+	event = $.Event( event );
+	event.type = eventType;
+
+	oe = event.originalEvent;
+	props = $.event.props;
+
+	// addresses separation of $.event.props in to $.event.mouseHook.props and Issue 3280
+	// https://github.com/jquery/jquery-mobile/issues/3280
+	if ( t.search( /^(mouse|click)/ ) > -1 ) {
+		props = mouseEventProps;
+	}
+
+	// copy original event properties over to the new event
+	// this would happen if we could call $.event.fix instead of $.Event
+	// but we don't have a way to force an event to be fixed multiple times
+	if ( oe ) {
+		for ( i = props.length, prop; i; ) {
+			prop = props[ --i ];
+			event[ prop ] = oe[ prop ];
+		}
+	}
+
+	// make sure that if the mouse and click virtual events are generated
+	// without a .which one is defined
+	if ( t.search(/mouse(down|up)|click/) > -1 && !event.which ) {
+		event.which = 1;
+	}
+
+	if ( t.search(/^touch/) !== -1 ) {
+		ne = getNativeEvent( oe );
+		t = ne.touches;
+		ct = ne.changedTouches;
+		touch = ( t && t.length ) ? t[0] : ( ( ct && ct.length ) ? ct[ 0 ] : undefined );
+
+		if ( touch ) {
+			for ( j = 0, len = touchEventProps.length; j < len; j++) {
+				prop = touchEventProps[ j ];
+				event[ prop ] = touch[ prop ];
+			}
+		}
+	}
+
+	return event;
+}
+
+function getVirtualBindingFlags( element ) {
+
+	var flags = {},
+		b, k;
+
+	while ( element ) {
+
+		b = $.data( element, dataPropertyName );
+
+		for (  k in b ) {
+			if ( b[ k ] ) {
+				flags[ k ] = flags.hasVirtualBinding = true;
+			}
+		}
+		element = element.parentNode;
+	}
+	return flags;
+}
+
+function getClosestElementWithVirtualBinding( element, eventType ) {
+	var b;
+	while ( element ) {
+
+		b = $.data( element, dataPropertyName );
+
+		if ( b && ( !eventType || b[ eventType ] ) ) {
+			return element;
+		}
+		element = element.parentNode;
+	}
+	return null;
+}
+
+function enableTouchBindings() {
+	blockTouchTriggers = false;
+}
+
+function disableTouchBindings() {
+	blockTouchTriggers = true;
+}
+
+function enableMouseBindings() {
+	lastTouchID = 0;
+	clickBlockList.length = 0;
+	blockMouseTriggers = false;
+
+	// When mouse bindings are enabled, our
+	// touch bindings are disabled.
+	disableTouchBindings();
+}
+
+function disableMouseBindings() {
+	// When mouse bindings are disabled, our
+	// touch bindings are enabled.
+	enableTouchBindings();
+}
+
+function startResetTimer() {
+	clearResetTimer();
+	resetTimerID = setTimeout( function() {
+		resetTimerID = 0;
+		enableMouseBindings();
+	}, $.vmouse.resetTimerDuration );
+}
+
+function clearResetTimer() {
+	if ( resetTimerID ) {
+		clearTimeout( resetTimerID );
+		resetTimerID = 0;
+	}
+}
+
+function triggerVirtualEvent( eventType, event, flags ) {
+	var ve;
+
+	if ( ( flags && flags[ eventType ] ) ||
+				( !flags && getClosestElementWithVirtualBinding( event.target, eventType ) ) ) {
+
+		ve = createVirtualEvent( event, eventType );
+
+		$( event.target).trigger( ve );
+	}
+
+	return ve;
+}
+
+function mouseEventCallback( event ) {
+	var touchID = $.data( event.target, touchTargetPropertyName ),
+		ve;
+
+	if ( !blockMouseTriggers && ( !lastTouchID || lastTouchID !== touchID ) ) {
+		ve = triggerVirtualEvent( "v" + event.type, event );
+		if ( ve ) {
+			if ( ve.isDefaultPrevented() ) {
+				event.preventDefault();
+			}
+			if ( ve.isPropagationStopped() ) {
+				event.stopPropagation();
+			}
+			if ( ve.isImmediatePropagationStopped() ) {
+				event.stopImmediatePropagation();
+			}
+		}
+	}
+}
+
+function handleTouchStart( event ) {
+
+	var touches = getNativeEvent( event ).touches,
+		target, flags, t;
+
+	if ( touches && touches.length === 1 ) {
+
+		target = event.target;
+		flags = getVirtualBindingFlags( target );
+
+		if ( flags.hasVirtualBinding ) {
+
+			lastTouchID = nextTouchID++;
+			$.data( target, touchTargetPropertyName, lastTouchID );
+
+			clearResetTimer();
+
+			disableMouseBindings();
+			didScroll = false;
+
+			t = getNativeEvent( event ).touches[ 0 ];
+			startX = t.pageX;
+			startY = t.pageY;
+
+			triggerVirtualEvent( "vmouseover", event, flags );
+			triggerVirtualEvent( "vmousedown", event, flags );
+		}
+	}
+}
+
+function handleScroll( event ) {
+	if ( blockTouchTriggers ) {
+		return;
+	}
+
+	if ( !didScroll ) {
+		triggerVirtualEvent( "vmousecancel", event, getVirtualBindingFlags( event.target ) );
+	}
+
+	didScroll = true;
+	startResetTimer();
+}
+
+function handleTouchMove( event ) {
+	if ( blockTouchTriggers ) {
+		return;
+	}
+
+	var t = getNativeEvent( event ).touches[ 0 ],
+		didCancel = didScroll,
+		moveThreshold = $.vmouse.moveDistanceThreshold,
+		flags = getVirtualBindingFlags( event.target );
+
+		didScroll = didScroll ||
+			( Math.abs( t.pageX - startX ) > moveThreshold ||
+				Math.abs( t.pageY - startY ) > moveThreshold );
+
+	if ( didScroll && !didCancel ) {
+		triggerVirtualEvent( "vmousecancel", event, flags );
+	}
+
+	triggerVirtualEvent( "vmousemove", event, flags );
+	startResetTimer();
+}
+
+function handleTouchEnd( event ) {
+	if ( blockTouchTriggers ) {
+		return;
+	}
+
+	disableTouchBindings();
+
+	var flags = getVirtualBindingFlags( event.target ),
+		ve, t;
+	triggerVirtualEvent( "vmouseup", event, flags );
+
+	if ( !didScroll ) {
+		ve = triggerVirtualEvent( "vclick", event, flags );
+		if ( ve && ve.isDefaultPrevented() ) {
+			// The target of the mouse events that follow the touchend
+			// event don't necessarily match the target used during the
+			// touch. This means we need to rely on coordinates for blocking
+			// any click that is generated.
+			t = getNativeEvent( event ).changedTouches[ 0 ];
+			clickBlockList.push({
+				touchID: lastTouchID,
+				x: t.clientX,
+				y: t.clientY
+			});
+
+			// Prevent any mouse events that follow from triggering
+			// virtual event notifications.
+			blockMouseTriggers = true;
+		}
+	}
+	triggerVirtualEvent( "vmouseout", event, flags);
+	didScroll = false;
+
+	startResetTimer();
+}
+
+function hasVirtualBindings( ele ) {
+	var bindings = $.data( ele, dataPropertyName ),
+		k;
+
+	if ( bindings ) {
+		for ( k in bindings ) {
+			if ( bindings[ k ] ) {
+				return true;
+			}
+		}
+	}
+	return false;
+}
+
+function dummyMouseHandler() {}
+
+function getSpecialEventObject( eventType ) {
+	var realType = eventType.substr( 1 );
+
+	return {
+		setup: function(/* data, namespace */) {
+			// If this is the first virtual mouse binding for this element,
+			// add a bindings object to its data.
+
+			if ( !hasVirtualBindings( this ) ) {
+				$.data( this, dataPropertyName, {} );
+			}
+
+			// If setup is called, we know it is the first binding for this
+			// eventType, so initialize the count for the eventType to zero.
+			var bindings = $.data( this, dataPropertyName );
+			bindings[ eventType ] = true;
+
+			// If this is the first virtual mouse event for this type,
+			// register a global handler on the document.
+
+			activeDocHandlers[ eventType ] = ( activeDocHandlers[ eventType ] || 0 ) + 1;
+
+			if ( activeDocHandlers[ eventType ] === 1 ) {
+				$document.bind( realType, mouseEventCallback );
+			}
+
+			// Some browsers, like Opera Mini, won't dispatch mouse/click events
+			// for elements unless they actually have handlers registered on them.
+			// To get around this, we register dummy handlers on the elements.
+
+			$( this ).bind( realType, dummyMouseHandler );
+
+			// For now, if event capture is not supported, we rely on mouse handlers.
+			if ( eventCaptureSupported ) {
+				// If this is the first virtual mouse binding for the document,
+				// register our touchstart handler on the document.
+
+				activeDocHandlers[ "touchstart" ] = ( activeDocHandlers[ "touchstart" ] || 0) + 1;
+
+				if ( activeDocHandlers[ "touchstart" ] === 1 ) {
+					$document.bind( "touchstart", handleTouchStart )
+						.bind( "touchend", handleTouchEnd )
+
+						// On touch platforms, touching the screen and then dragging your finger
+						// causes the window content to scroll after some distance threshold is
+						// exceeded. On these platforms, a scroll prevents a click event from being
+						// dispatched, and on some platforms, even the touchend is suppressed. To
+						// mimic the suppression of the click event, we need to watch for a scroll
+						// event. Unfortunately, some platforms like iOS don't dispatch scroll
+						// events until *AFTER* the user lifts their finger (touchend). This means
+						// we need to watch both scroll and touchmove events to figure out whether
+						// or not a scroll happenens before the touchend event is fired.
+
+						.bind( "touchmove", handleTouchMove )
+						.bind( "scroll", handleScroll );
+				}
+			}
+		},
+
+		teardown: function(/* data, namespace */) {
+			// If this is the last virtual binding for this eventType,
+			// remove its global handler from the document.
+
+			--activeDocHandlers[ eventType ];
+
+			if ( !activeDocHandlers[ eventType ] ) {
+				$document.unbind( realType, mouseEventCallback );
+			}
+
+			if ( eventCaptureSupported ) {
+				// If this is the last virtual mouse binding in existence,
+				// remove our document touchstart listener.
+
+				--activeDocHandlers[ "touchstart" ];
+
+				if ( !activeDocHandlers[ "touchstart" ] ) {
+					$document.unbind( "touchstart", handleTouchStart )
+						.unbind( "touchmove", handleTouchMove )
+						.unbind( "touchend", handleTouchEnd )
+						.unbind( "scroll", handleScroll );
+				}
+			}
+
+			var $this = $( this ),
+				bindings = $.data( this, dataPropertyName );
+
+			// teardown may be called when an element was
+			// removed from the DOM. If this is the case,
+			// jQuery core may have already stripped the element
+			// of any data bindings so we need to check it before
+			// using it.
+			if ( bindings ) {
+				bindings[ eventType ] = false;
+			}
+
+			// Unregister the dummy event handler.
+
+			$this.unbind( realType, dummyMouseHandler );
+
+			// If this is the last virtual mouse binding on the
+			// element, remove the binding data from the element.
+
+			if ( !hasVirtualBindings( this ) ) {
+				$this.removeData( dataPropertyName );
+			}
+		}
+	};
+}
+
+// Expose our custom events to the jQuery bind/unbind mechanism.
+
+for ( i = 0; i < virtualEventNames.length; i++ ) {
+	$.event.special[ virtualEventNames[ i ] ] = getSpecialEventObject( virtualEventNames[ i ] );
+}
+
+// Add a capture click handler to block clicks.
+// Note that we require event capture support for this so if the device
+// doesn't support it, we punt for now and rely solely on mouse events.
+if ( eventCaptureSupported ) {
+	document.addEventListener( "click", function( e ) {
+		var cnt = clickBlockList.length,
+			target = e.target,
+			x, y, ele, i, o, touchID;
+
+		if ( cnt ) {
+			x = e.clientX;
+			y = e.clientY;
+			threshold = $.vmouse.clickDistanceThreshold;
+
+			// The idea here is to run through the clickBlockList to see if
+			// the current click event is in the proximity of one of our
+			// vclick events that had preventDefault() called on it. If we find
+			// one, then we block the click.
+			//
+			// Why do we have to rely on proximity?
+			//
+			// Because the target of the touch event that triggered the vclick
+			// can be different from the target of the click event synthesized
+			// by the browser. The target of a mouse/click event that is synthesized
+			// from a touch event seems to be implementation specific. For example,
+			// some browsers will fire mouse/click events for a link that is near
+			// a touch event, even though the target of the touchstart/touchend event
+			// says the user touched outside the link. Also, it seems that with most
+			// browsers, the target of the mouse/click event is not calculated until the
+			// time it is dispatched, so if you replace an element that you touched
+			// with another element, the target of the mouse/click will be the new
+			// element underneath that point.
+			//
+			// Aside from proximity, we also check to see if the target and any
+			// of its ancestors were the ones that blocked a click. This is necessary
+			// because of the strange mouse/click target calculation done in the
+			// Android 2.1 browser, where if you click on an element, and there is a
+			// mouse/click handler on one of its ancestors, the target will be the
+			// innermost child of the touched element, even if that child is no where
+			// near the point of touch.
+
+			ele = target;
+
+			while ( ele ) {
+				for ( i = 0; i < cnt; i++ ) {
+					o = clickBlockList[ i ];
+					touchID = 0;
+
+					if ( ( ele === target && Math.abs( o.x - x ) < threshold && Math.abs( o.y - y ) < threshold ) ||
+								$.data( ele, touchTargetPropertyName ) === o.touchID ) {
+						// XXX: We may want to consider removing matches from the block list
+						//      instead of waiting for the reset timer to fire.
+						e.preventDefault();
+						e.stopPropagation();
+						return;
+					}
+				}
+				ele = ele.parentNode;
+			}
+		}
+	}, true);
+}
+})( jQuery, window, document );
+
+
+(function( $, window, undefined ) {
+	var $document = $( document ),
+		supportTouch = $.mobile.support.touch,
+		scrollEvent = "touchmove scroll",
+		touchStartEvent = supportTouch ? "touchstart" : "mousedown",
+		touchStopEvent = supportTouch ? "touchend" : "mouseup",
+		touchMoveEvent = supportTouch ? "touchmove" : "mousemove";
+
+	// setup new event shortcuts
+	$.each( ( "touchstart touchmove touchend " +
+		"tap taphold " +
+		"swipe swipeleft swiperight " +
+		"scrollstart scrollstop" ).split( " " ), function( i, name ) {
+
+		$.fn[ name ] = function( fn ) {
+			return fn ? this.bind( name, fn ) : this.trigger( name );
+		};
+
+		// jQuery < 1.8
+		if ( $.attrFn ) {
+			$.attrFn[ name ] = true;
+		}
+	});
+
+	function triggerCustomEvent( obj, eventType, event, bubble ) {
+		var originalType = event.type;
+		event.type = eventType;
+		if ( bubble ) {
+			$.event.trigger( event, undefined, obj );
+		} else {
+			$.event.dispatch.call( obj, event );
+		}
+		event.type = originalType;
+	}
+
+	// also handles scrollstop
+	$.event.special.scrollstart = {
+
+		enabled: true,
+		setup: function() {
+
+			var thisObject = this,
+				$this = $( thisObject ),
+				scrolling,
+				timer;
+
+			function trigger( event, state ) {
+				scrolling = state;
+				triggerCustomEvent( thisObject, scrolling ? "scrollstart" : "scrollstop", event );
+			}
+
+			// iPhone triggers scroll after a small delay; use touchmove instead
+			$this.bind( scrollEvent, function( event ) {
+
+				if ( !$.event.special.scrollstart.enabled ) {
+					return;
+				}
+
+				if ( !scrolling ) {
+					trigger( event, true );
+				}
+
+				clearTimeout( timer );
+				timer = setTimeout( function() {
+					trigger( event, false );
+				}, 50 );
+			});
+		},
+		teardown: function() {
+			$( this ).unbind( scrollEvent );
+		}
+	};
+
+	// also handles taphold
+	$.event.special.tap = {
+		tapholdThreshold: 750,
+		emitTapOnTaphold: true,
+		setup: function() {
+			var thisObject = this,
+				$this = $( thisObject ),
+				isTaphold = false;
+
+			$this.bind( "vmousedown", function( event ) {
+				isTaphold = false;
+				if ( event.which && event.which !== 1 ) {
+					return false;
+				}
+
+				var origTarget = event.target,
+					timer;
+
+				function clearTapTimer() {
+					clearTimeout( timer );
+				}
+
+				function clearTapHandlers() {
+					clearTapTimer();
+
+					$this.unbind( "vclick", clickHandler )
+						.unbind( "vmouseup", clearTapTimer );
+					$document.unbind( "vmousecancel", clearTapHandlers );
+				}
+
+				function clickHandler( event ) {
+					clearTapHandlers();
+
+					// ONLY trigger a 'tap' event if the start target is
+					// the same as the stop target.
+					if ( !isTaphold && origTarget === event.target ) {
+						triggerCustomEvent( thisObject, "tap", event );
+					} else if ( isTaphold ) {
+						event.preventDefault();
+					}
+				}
+
+				$this.bind( "vmouseup", clearTapTimer )
+					.bind( "vclick", clickHandler );
+				$document.bind( "vmousecancel", clearTapHandlers );
+
+				timer = setTimeout( function() {
+					if ( !$.event.special.tap.emitTapOnTaphold ) {
+						isTaphold = true;
+					}
+					triggerCustomEvent( thisObject, "taphold", $.Event( "taphold", { target: origTarget } ) );
+				}, $.event.special.tap.tapholdThreshold );
+			});
+		},
+		teardown: function() {
+			$( this ).unbind( "vmousedown" ).unbind( "vclick" ).unbind( "vmouseup" );
+			$document.unbind( "vmousecancel" );
+		}
+	};
+
+	// Also handles swipeleft, swiperight
+	$.event.special.swipe = {
+
+		// More than this horizontal displacement, and we will suppress scrolling.
+		scrollSupressionThreshold: 30,
+
+		// More time than this, and it isn't a swipe.
+		durationThreshold: 1000,
+
+		// Swipe horizontal displacement must be more than this.
+		horizontalDistanceThreshold: 30,
+
+		// Swipe vertical displacement must be less than this.
+		verticalDistanceThreshold: 30,
+
+		getLocation: function ( event ) {
+			var winPageX = window.pageXOffset,
+				winPageY = window.pageYOffset,
+				x = event.clientX,
+				y = event.clientY;
+
+			if ( event.pageY === 0 && Math.floor( y ) > Math.floor( event.pageY ) ||
+				event.pageX === 0 && Math.floor( x ) > Math.floor( event.pageX ) ) {
+
+				// iOS4 clientX/clientY have the value that should have been
+				// in pageX/pageY. While pageX/page/ have the value 0
+				x = x - winPageX;
+				y = y - winPageY;
+			} else if ( y < ( event.pageY - winPageY) || x < ( event.pageX - winPageX ) ) {
+
+				// Some Android browsers have totally bogus values for clientX/Y
+				// when scrolling/zooming a page. Detectable since clientX/clientY
+				// should never be smaller than pageX/pageY minus page scroll
+				x = event.pageX - winPageX;
+				y = event.pageY - winPageY;
+			}
+
+			return {
+				x: x,
+				y: y
+			};
+		},
+
+		start: function( event ) {
+			var data = event.originalEvent.touches ?
+					event.originalEvent.touches[ 0 ] : event,
+				location = $.event.special.swipe.getLocation( data );
+			return {
+						time: ( new Date() ).getTime(),
+						coords: [ location.x, location.y ],
+						origin: $( event.target )
+					};
+		},
+
+		stop: function( event ) {
+			var data = event.originalEvent.touches ?
+					event.originalEvent.touches[ 0 ] : event,
+				location = $.event.special.swipe.getLocation( data );
+			return {
+						time: ( new Date() ).getTime(),
+						coords: [ location.x, location.y ]
+					};
+		},
+
+		handleSwipe: function( start, stop, thisObject, origTarget ) {
+			if ( stop.time - start.time < $.event.special.swipe.durationThreshold &&
+				Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold &&
+				Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) {
+				var direction = start.coords[0] > stop.coords[ 0 ] ? "swipeleft" : "swiperight";
+
+				triggerCustomEvent( thisObject, "swipe", $.Event( "swipe", { target: origTarget, swipestart: start, swipestop: stop }), true );
+				triggerCustomEvent( thisObject, direction,$.Event( direction, { target: origTarget, swipestart: start, swipestop: stop } ), true );
+				return true;
+			}
+			return false;
+
+		},
+
+		// This serves as a flag to ensure that at most one swipe event event is
+		// in work at any given time
+		eventInProgress: false,
+
+		setup: function() {
+			var events,
+				thisObject = this,
+				$this = $( thisObject ),
+				context = {};
+
+			// Retrieve the events data for this element and add the swipe context
+			events = $.data( this, "mobile-events" );
+			if ( !events ) {
+				events = { length: 0 };
+				$.data( this, "mobile-events", events );
+			}
+			events.length++;
+			events.swipe = context;
+
+			context.start = function( event ) {
+
+				// Bail if we're already working on a swipe event
+				if ( $.event.special.swipe.eventInProgress ) {
+					return;
+				}
+				$.event.special.swipe.eventInProgress = true;
+
+				var stop,
+					start = $.event.special.swipe.start( event ),
+					origTarget = event.target,
+					emitted = false;
+
+				context.move = function( event ) {
+					if ( !start || event.isDefaultPrevented() ) {
+						return;
+					}
+
+					stop = $.event.special.swipe.stop( event );
+					if ( !emitted ) {
+						emitted = $.event.special.swipe.handleSwipe( start, stop, thisObject, origTarget );
+						if ( emitted ) {
+
+							// Reset the context to make way for the next swipe event
+							$.event.special.swipe.eventInProgress = false;
+						}
+					}
+					// prevent scrolling
+					if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) {
+						event.preventDefault();
+					}
+				};
+
+				context.stop = function() {
+						emitted = true;
+
+						// Reset the context to make way for the next swipe event
+						$.event.special.swipe.eventInProgress = false;
+						$document.off( touchMoveEvent, context.move );
+						context.move = null;
+				};
+
+				$document.on( touchMoveEvent, context.move )
+					.one( touchStopEvent, context.stop );
+			};
+			$this.on( touchStartEvent, context.start );
+		},
+
+		teardown: function() {
+			var events, context;
+
+			events = $.data( this, "mobile-events" );
+			if ( events ) {
+				context = events.swipe;
+				delete events.swipe;
+				events.length--;
+				if ( events.length === 0 ) {
+					$.removeData( this, "mobile-events" );
+				}
+			}
+
+			if ( context ) {
+				if ( context.start ) {
+					$( this ).off( touchStartEvent, context.start );
+				}
+				if ( context.move ) {
+					$document.off( touchMoveEvent, context.move );
+				}
+				if ( context.stop ) {
+					$document.off( touchStopEvent, context.stop );
+				}
+			}
+		}
+	};
+	$.each({
+		scrollstop: "scrollstart",
+		taphold: "tap",
+		swipeleft: "swipe.left",
+		swiperight: "swipe.right"
+	}, function( event, sourceEvent ) {
+
+		$.event.special[ event ] = {
+			setup: function() {
+				$( this ).bind( sourceEvent, $.noop );
+			},
+			teardown: function() {
+				$( this ).unbind( sourceEvent );
+			}
+		};
+	});
+
+})( jQuery, this );
+
+
+	// throttled resize event
+	(function( $ ) {
+		$.event.special.throttledresize = {
+			setup: function() {
+				$( this ).bind( "resize", handler );
+			},
+			teardown: function() {
+				$( this ).unbind( "resize", handler );
+			}
+		};
+
+		var throttle = 250,
+			handler = function() {
+				curr = ( new Date() ).getTime();
+				diff = curr - lastCall;
+
+				if ( diff >= throttle ) {
+
+					lastCall = curr;
+					$( this ).trigger( "throttledresize" );
+
+				} else {
+
+					if ( heldCall ) {
+						clearTimeout( heldCall );
+					}
+
+					// Promise a held call will still execute
+					heldCall = setTimeout( handler, throttle - diff );
+				}
+			},
+			lastCall = 0,
+			heldCall,
+			curr,
+			diff;
+	})( jQuery );
+
+
+(function( $, window ) {
+	var win = $( window ),
+		event_name = "orientationchange",
+		get_orientation,
+		last_orientation,
+		initial_orientation_is_landscape,
+		initial_orientation_is_default,
+		portrait_map = { "0": true, "180": true },
+		ww, wh, landscape_threshold;
+
+	// It seems that some device/browser vendors use window.orientation values 0 and 180 to
+	// denote the "default" orientation. For iOS devices, and most other smart-phones tested,
+	// the default orientation is always "portrait", but in some Android and RIM based tablets,
+	// the default orientation is "landscape". The following code attempts to use the window
+	// dimensions to figure out what the current orientation is, and then makes adjustments
+	// to the to the portrait_map if necessary, so that we can properly decode the
+	// window.orientation value whenever get_orientation() is called.
+	//
+	// Note that we used to use a media query to figure out what the orientation the browser
+	// thinks it is in:
+	//
+	//     initial_orientation_is_landscape = $.mobile.media("all and (orientation: landscape)");
+	//
+	// but there was an iPhone/iPod Touch bug beginning with iOS 4.2, up through iOS 5.1,
+	// where the browser *ALWAYS* applied the landscape media query. This bug does not
+	// happen on iPad.
+
+	if ( $.support.orientation ) {
+
+		// Check the window width and height to figure out what the current orientation
+		// of the device is at this moment. Note that we've initialized the portrait map
+		// values to 0 and 180, *AND* we purposely check for landscape so that if we guess
+		// wrong, , we default to the assumption that portrait is the default orientation.
+		// We use a threshold check below because on some platforms like iOS, the iPhone
+		// form-factor can report a larger width than height if the user turns on the
+		// developer console. The actual threshold value is somewhat arbitrary, we just
+		// need to make sure it is large enough to exclude the developer console case.
+
+		ww = window.innerWidth || win.width();
+		wh = window.innerHeight || win.height();
+		landscape_threshold = 50;
+
+		initial_orientation_is_landscape = ww > wh && ( ww - wh ) > landscape_threshold;
+
+		// Now check to see if the current window.orientation is 0 or 180.
+		initial_orientation_is_default = portrait_map[ window.orientation ];
+
+		// If the initial orientation is landscape, but window.orientation reports 0 or 180, *OR*
+		// if the initial orientation is portrait, but window.orientation reports 90 or -90, we
+		// need to flip our portrait_map values because landscape is the default orientation for
+		// this device/browser.
+		if ( ( initial_orientation_is_landscape && initial_orientation_is_default ) || ( !initial_orientation_is_landscape && !initial_orientation_is_default ) ) {
+			portrait_map = { "-90": true, "90": true };
+		}
+	}
+
+	$.event.special.orientationchange = $.extend( {}, $.event.special.orientationchange, {
+		setup: function() {
+			// If the event is supported natively, return false so that jQuery
+			// will bind to the event using DOM methods.
+			if ( $.support.orientation && !$.event.special.orientationchange.disabled ) {
+				return false;
+			}
+
+			// Get the current orientation to avoid initial double-triggering.
+			last_orientation = get_orientation();
+
+			// Because the orientationchange event doesn't exist, simulate the
+			// event by testing window dimensions on resize.
+			win.bind( "throttledresize", handler );
+		},
+		teardown: function() {
+			// If the event is not supported natively, return false so that
+			// jQuery will unbind the event using DOM methods.
+			if ( $.support.orientation && !$.event.special.orientationchange.disabled ) {
+				return false;
+			}
+
+			// Because the orientationchange event doesn't exist, unbind the
+			// resize event handler.
+			win.unbind( "throttledresize", handler );
+		},
+		add: function( handleObj ) {
+			// Save a reference to the bound event handler.
+			var old_handler = handleObj.handler;
+
+			handleObj.handler = function( event ) {
+				// Modify event object, adding the .orientation property.
+				event.orientation = get_orientation();
+
+				// Call the originally-bound event handler and return its result.
+				return old_handler.apply( this, arguments );
+			};
+		}
+	});
+
+	// If the event is not supported natively, this handler will be bound to
+	// the window resize event to simulate the orientationchange event.
+	function handler() {
+		// Get the current orientation.
+		var orientation = get_orientation();
+
+		if ( orientation !== last_orientation ) {
+			// The orientation has changed, so trigger the orientationchange event.
+			last_orientation = orientation;
+			win.trigger( event_name );
+		}
+	}
+
+	// Get the current page orientation. This method is exposed publicly, should it
+	// be needed, as jQuery.event.special.orientationchange.orientation()
+	$.event.special.orientationchange.orientation = get_orientation = function() {
+		var isPortrait = true, elem = document.documentElement;
+
+		// prefer window orientation to the calculation based on screensize as
+		// the actual screen resize takes place before or after the orientation change event
+		// has been fired depending on implementation (eg android 2.3 is before, iphone after).
+		// More testing is required to determine if a more reliable method of determining the new screensize
+		// is possible when orientationchange is fired. (eg, use media queries + element + opacity)
+		if ( $.support.orientation ) {
+			// if the window orientation registers as 0 or 180 degrees report
+			// portrait, otherwise landscape
+			isPortrait = portrait_map[ window.orientation ];
+		} else {
+			isPortrait = elem && elem.clientWidth / elem.clientHeight < 1.1;
+		}
+
+		return isPortrait ? "portrait" : "landscape";
+	};
+
+	$.fn[ event_name ] = function( fn ) {
+		return fn ? this.bind( event_name, fn ) : this.trigger( event_name );
+	};
+
+	// jQuery < 1.8
+	if ( $.attrFn ) {
+		$.attrFn[ event_name ] = true;
+	}
+
+}( jQuery, this ));
+
+
+
+
+(function( $, undefined ) {
+
+	// existing base tag?
+	var baseElement = $( "head" ).children( "base" ),
+
+	// base element management, defined depending on dynamic base tag support
+	// TODO move to external widget
+	base = {
+
+		// define base element, for use in routing asset urls that are referenced
+		// in Ajax-requested markup
+		element: ( baseElement.length ? baseElement :
+			$( "<base>", { href: $.mobile.path.documentBase.hrefNoHash } ).prependTo( $( "head" ) ) ),
+
+		linkSelector: "[src], link[href], a[rel='external'], :jqmData(ajax='false'), a[target]",
+
+		// set the generated BASE element's href to a new page's base path
+		set: function( href ) {
+
+			// we should do nothing if the user wants to manage their url base
+			// manually
+			if ( !$.mobile.dynamicBaseEnabled ) {
+				return;
+			}
+
+			// we should use the base tag if we can manipulate it dynamically
+			if ( $.support.dynamicBaseTag ) {
+				base.element.attr( "href",
+					$.mobile.path.makeUrlAbsolute( href, $.mobile.path.documentBase ) );
+			}
+		},
+
+		rewrite: function( href, page ) {
+			var newPath = $.mobile.path.get( href );
+
+			page.find( base.linkSelector ).each(function( i, link ) {
+				var thisAttr = $( link ).is( "[href]" ) ? "href" :
+					$( link ).is( "[src]" ) ? "src" : "action",
+				theLocation = $.mobile.path.parseLocation(),
+				thisUrl = $( link ).attr( thisAttr );
+
+				// XXX_jblas: We need to fix this so that it removes the document
+				//            base URL, and then prepends with the new page URL.
+				// if full path exists and is same, chop it - helps IE out
+				thisUrl = thisUrl.replace( theLocation.protocol + theLocation.doubleSlash +
+					theLocation.host + theLocation.pathname, "" );
+
+				if ( !/^(\w+:|#|\/)/.test( thisUrl ) ) {
+					$( link ).attr( thisAttr, newPath + thisUrl );
+				}
+			});
+		},
+
+		// set the generated BASE element's href to a new page's base path
+		reset: function(/* href */) {
+			base.element.attr( "href", $.mobile.path.documentBase.hrefNoSearch );
+		}
+	};
+
+	$.mobile.base = base;
+
+})( jQuery );
+
+
+(function( $, undefined ) {
+$.mobile.widgets = {};
+
+var originalWidget = $.widget,
+
+	// Record the original, non-mobileinit-modified version of $.mobile.keepNative
+	// so we can later determine whether someone has modified $.mobile.keepNative
+	keepNativeFactoryDefault = $.mobile.keepNative;
+
+$.widget = (function( orig ) {
+	return function() {
+		var constructor = orig.apply( this, arguments ),
+			name = constructor.prototype.widgetName;
+
+		constructor.initSelector = ( ( constructor.prototype.initSelector !== undefined ) ?
+			constructor.prototype.initSelector : ":jqmData(role='" + name + "')" );
+
+		$.mobile.widgets[ name ] = constructor;
+
+		return constructor;
+	};
+})( $.widget );
+
+// Make sure $.widget still has bridge and extend methods
+$.extend( $.widget, originalWidget );
+
+// For backcompat remove in 1.5
+$.mobile.document.on( "create", function( event ) {
+	$( event.target ).enhanceWithin();
+});
+
+$.widget( "mobile.page", {
+	options: {
+		theme: "a",
+		domCache: false,
+
+		// Deprecated in 1.4 remove in 1.5
+		keepNativeDefault: $.mobile.keepNative,
+
+		// Deprecated in 1.4 remove in 1.5
+		contentTheme: null,
+		enhanced: false
+	},
+
+	// DEPRECATED for > 1.4
+	// TODO remove at 1.5
+	_createWidget: function() {
+		$.Widget.prototype._createWidget.apply( this, arguments );
+		this._trigger( "init" );
+	},
+
+	_create: function() {
+		// If false is returned by the callbacks do not create the page
+		if ( this._trigger( "beforecreate" ) === false ) {
+			return false;
+		}
+
+		if ( !this.options.enhanced ) {
+			this._enhance();
+		}
+
+		this._on( this.element, {
+			pagebeforehide: "removeContainerBackground",
+			pagebeforeshow: "_handlePageBeforeShow"
+		});
+
+		this.element.enhanceWithin();
+		// Dialog widget is deprecated in 1.4 remove this in 1.5
+		if ( $.mobile.getAttribute( this.element[0], "role" ) === "dialog" && $.mobile.dialog ) {
+			this.element.dialog();
+		}
+	},
+
+	_enhance: function () {
+		var attrPrefix = "data-" + $.mobile.ns,
+			self = this;
+
+		if ( this.options.role ) {
+			this.element.attr( "data-" + $.mobile.ns + "role", this.options.role );
+		}
+
+		this.element
+			.attr( "tabindex", "0" )
+			.addClass( "ui-page ui-page-theme-" + this.options.theme );
+
+		// Manipulation of content os Deprecated as of 1.4 remove in 1.5
+		this.element.find( "[" + attrPrefix + "role='content']" ).each( function() {
+			var $this = $( this ),
+				theme = this.getAttribute( attrPrefix + "theme" ) || undefined;
+				self.options.contentTheme = theme || self.options.contentTheme || ( self.options.dialog && self.options.theme ) || ( self.element.jqmData("role") === "dialog" &&  self.options.theme );
+				$this.addClass( "ui-content" );
+				if ( self.options.contentTheme ) {
+					$this.addClass( "ui-body-" + ( self.options.contentTheme ) );
+				}
+				// Add ARIA role
+				$this.attr( "role", "main" ).addClass( "ui-content" );
+		});
+	},
+
+	bindRemove: function( callback ) {
+		var page = this.element;
+
+		// when dom caching is not enabled or the page is embedded bind to remove the page on hide
+		if ( !page.data( "mobile-page" ).options.domCache &&
+			page.is( ":jqmData(external-page='true')" ) ) {
+
+			// TODO use _on - that is, sort out why it doesn't work in this case
+			page.bind( "pagehide.remove", callback || function( e, data ) {
+
+				//check if this is a same page transition and if so don't remove the page
+				if( !data.samePage ){
+					var $this = $( this ),
+						prEvent = new $.Event( "pageremove" );
+
+					$this.trigger( prEvent );
+
+					if ( !prEvent.isDefaultPrevented() ) {
+						$this.removeWithDependents();
+					}
+				}
+			});
+		}
+	},
+
+	_setOptions: function( o ) {
+		if ( o.theme !== undefined ) {
+			this.element.removeClass( "ui-page-theme-" + this.options.theme ).addClass( "ui-page-theme-" + o.theme );
+		}
+
+		if ( o.contentTheme !== undefined ) {
+			this.element.find( "[data-" + $.mobile.ns + "='content']" ).removeClass( "ui-body-" + this.options.contentTheme )
+				.addClass( "ui-body-" + o.contentTheme );
+		}
+	},
+
+	_handlePageBeforeShow: function(/* e */) {
+		this.setContainerBackground();
+	},
+	// Deprecated in 1.4 remove in 1.5
+	removeContainerBackground: function() {
+		this.element.closest( ":mobile-pagecontainer" ).pagecontainer({ "theme": "none" });
+	},
+	// Deprecated in 1.4 remove in 1.5
+	// set the page container background to the page theme
+	setContainerBackground: function( theme ) {
+		this.element.parent().pagecontainer( { "theme": theme || this.options.theme } );
+	},
+	// Deprecated in 1.4 remove in 1.5
+	keepNativeSelector: function() {
+		var options = this.options,
+			keepNative = $.trim( options.keepNative || "" ),
+			globalValue = $.trim( $.mobile.keepNative ),
+			optionValue = $.trim( options.keepNativeDefault ),
+
+			// Check if $.mobile.keepNative has changed from the factory default
+			newDefault = ( keepNativeFactoryDefault === globalValue ?
+				"" : globalValue ),
+
+			// If $.mobile.keepNative has not changed, use options.keepNativeDefault
+			oldDefault = ( newDefault === "" ? optionValue : "" );
+
+		// Concatenate keepNative selectors from all sources where the value has
+		// changed or, if nothing has changed, return the default
+		return ( ( keepNative ? [ keepNative ] : [] )
+			.concat( newDefault ? [ newDefault ] : [] )
+			.concat( oldDefault ? [ oldDefault ] : [] )
+			.join( ", " ) );
+	}
+});
+})( jQuery );
+
+(function( $, undefined ) {
+
+	$.widget( "mobile.pagecontainer", {
+		options: {
+			theme: "a"
+		},
+
+		initSelector: false,
+
+		_create: function() {
+			this._trigger( "beforecreate" );
+			this.setLastScrollEnabled = true;
+
+			this._on( this.window, {
+				// disable an scroll setting when a hashchange has been fired,
+				// this only works because the recording of the scroll position
+				// is delayed for 100ms after the browser might have changed the
+				// position because of the hashchange
+				navigate: "_disableRecordScroll",
+
+				// bind to scrollstop for the first page, "pagechange" won't be
+				// fired in that case
+				scrollstop: "_delayedRecordScroll"
+			});
+
+			// TODO consider moving the navigation handler OUT of widget into
+			//      some other object as glue between the navigate event and the
+			//      content widget load and change methods
+			this._on( this.window, { navigate: "_filterNavigateEvents" });
+
+			// TODO move from page* events to content* events
+			this._on({ pagechange: "_afterContentChange" });
+
+			// handle initial hashchange from chrome :(
+			this.window.one( "navigate", $.proxy(function() {
+				this.setLastScrollEnabled = true;
+			}, this));
+		},
+
+		_setOptions: function( options ) {
+			if ( options.theme !== undefined && options.theme !== "none" ) {
+				this.element.removeClass( "ui-overlay-" + this.options.theme )
+					.addClass( "ui-overlay-" + options.theme );
+			} else if ( options.theme !== undefined ) {
+				this.element.removeClass( "ui-overlay-" + this.options.theme );
+			}
+
+			this._super( options );
+		},
+
+		_disableRecordScroll: function() {
+			this.setLastScrollEnabled = false;
+		},
+
+		_enableRecordScroll: function() {
+			this.setLastScrollEnabled = true;
+		},
+
+		// TODO consider the name here, since it's purpose specific
+		_afterContentChange: function() {
+			// once the page has changed, re-enable the scroll recording
+			this.setLastScrollEnabled = true;
+
+			// remove any binding that previously existed on the get scroll
+			// which may or may not be different than the scroll element
+			// determined for this page previously
+			this._off( this.window, "scrollstop" );
+
+			// determine and bind to the current scoll element which may be the
+			// window or in the case of touch overflow the element touch overflow
+			this._on( this.window, { scrollstop: "_delayedRecordScroll" });
+		},
+
+		_recordScroll: function() {
+			// this barrier prevents setting the scroll value based on
+			// the browser scrolling the window based on a hashchange
+			if ( !this.setLastScrollEnabled ) {
+				return;
+			}
+
+			var active = this._getActiveHistory(),
+				currentScroll, minScroll, defaultScroll;
+
+			if ( active ) {
+				currentScroll = this._getScroll();
+				minScroll = this._getMinScroll();
+				defaultScroll = this._getDefaultScroll();
+
+				// Set active page's lastScroll prop. If the location we're
+				// scrolling to is less than minScrollBack, let it go.
+				active.lastScroll = currentScroll < minScroll ? defaultScroll : currentScroll;
+			}
+		},
+
+		_delayedRecordScroll: function() {
+			setTimeout( $.proxy(this, "_recordScroll"), 100 );
+		},
+
+		_getScroll: function() {
+			return this.window.scrollTop();
+		},
+
+		_getMinScroll: function() {
+			return $.mobile.minScrollBack;
+		},
+
+		_getDefaultScroll: function() {
+			return $.mobile.defaultHomeScroll;
+		},
+
+		_filterNavigateEvents: function( e, data ) {
+			var url;
+
+			if ( e.originalEvent && e.originalEvent.isDefaultPrevented() ) {
+				return;
+			}
+
+			url = e.originalEvent.type.indexOf( "hashchange" ) > -1 ? data.state.hash : data.state.url;
+
+			if ( !url ) {
+				url = this._getHash();
+			}
+
+			if ( !url || url === "#" || url.indexOf( "#" + $.mobile.path.uiStateKey ) === 0 ) {
+				url = location.href;
+			}
+
+			this._handleNavigate( url, data.state );
+		},
+
+		_getHash: function() {
+			return $.mobile.path.parseLocation().hash;
+		},
+
+		// TODO active page should be managed by the container (ie, it should be a property)
+		getActivePage: function() {
+			return this.activePage;
+		},
+
+		// TODO the first page should be a property set during _create using the logic
+		//      that currently resides in init
+		_getInitialContent: function() {
+			return $.mobile.firstPage;
+		},
+
+		// TODO each content container should have a history object
+		_getHistory: function() {
+			return $.mobile.navigate.history;
+		},
+
+		_getActiveHistory: function() {
+			return this._getHistory().getActive();
+		},
+
+		// TODO the document base should be determined at creation
+		_getDocumentBase: function() {
+			return $.mobile.path.documentBase;
+		},
+
+		back: function() {
+			this.go( -1 );
+		},
+
+		forward: function() {
+			this.go( 1 );
+		},
+
+		go: function( steps ) {
+
+			//if hashlistening is enabled use native history method
+			if ( $.mobile.hashListeningEnabled ) {
+				window.history.go( steps );
+			} else {
+
+				//we are not listening to the hash so handle history internally
+				var activeIndex = $.mobile.navigate.history.activeIndex,
+					index = activeIndex + parseInt( steps, 10 ),
+					url = $.mobile.navigate.history.stack[ index ].url,
+					direction = ( steps >= 1 )? "forward" : "back";
+
+				//update the history object
+				$.mobile.navigate.history.activeIndex = index;
+				$.mobile.navigate.history.previousIndex = activeIndex;
+
+				//change to the new page
+				this.change( url, { direction: direction, changeHash: false, fromHashChange: true } );
+			}
+		},
+
+		// TODO rename _handleDestination
+		_handleDestination: function( to ) {
+			var history;
+
+			// clean the hash for comparison if it's a url
+			if ( $.type(to) === "string" ) {
+				to = $.mobile.path.stripHash( to );
+			}
+
+			if ( to ) {
+				history = this._getHistory();
+
+				// At this point, 'to' can be one of 3 things, a cached page
+				// element from a history stack entry, an id, or site-relative /
+				// absolute URL. If 'to' is an id, we need to resolve it against
+				// the documentBase, not the location.href, since the hashchange
+				// could've been the result of a forward/backward navigation
+				// that crosses from an external page/dialog to an internal
+				// page/dialog.
+				//
+				// TODO move check to history object or path object?
+				to = !$.mobile.path.isPath( to ) ? ( $.mobile.path.makeUrlAbsolute( "#" + to, this._getDocumentBase() ) ) : to;
+			}
+			return to || this._getInitialContent();
+		},
+
+		_transitionFromHistory: function( direction, defaultTransition ) {
+			var history = this._getHistory(),
+				entry = ( direction === "back" ? history.getLast() : history.getActive() );
+
+			return ( entry && entry.transition ) || defaultTransition;
+		},
+
+		_handleDialog: function( changePageOptions, data ) {
+			var to, active, activeContent = this.getActivePage();
+
+			// If current active page is not a dialog skip the dialog and continue
+			// in the same direction
+			// Note: The dialog widget is deprecated as of 1.4.0 and will be removed in 1.5.0.
+			// Thus, as of 1.5.0 activeContent.data( "mobile-dialog" ) will always evaluate to
+			// falsy, so the second condition in the if-statement below can be removed altogether.
+			if ( activeContent && !activeContent.data( "mobile-dialog" ) ) {
+				// determine if we're heading forward or backward and continue
+				// accordingly past the current dialog
+				if ( data.direction === "back" ) {
+					this.back();
+				} else {
+					this.forward();
+				}
+
+				// prevent changePage call
+				return false;
+			} else {
+				// if the current active page is a dialog and we're navigating
+				// to a dialog use the dialog objected saved in the stack
+				to = data.pageUrl;
+				active = this._getActiveHistory();
+
+				// make sure to set the role, transition and reversal
+				// as most of this is lost by the domCache cleaning
+				$.extend( changePageOptions, {
+					role: active.role,
+					transition: this._transitionFromHistory(
+						data.direction,
+						changePageOptions.transition ),
+					reverse: data.direction === "back"
+				});
+			}
+
+			return to;
+		},
+
+		_handleNavigate: function( url, data ) {
+			//find first page via hash
+			// TODO stripping the hash twice with handleUrl
+			var to = $.mobile.path.stripHash( url ), history = this._getHistory(),
+
+				// transition is false if it's the first page, undefined
+				// otherwise (and may be overridden by default)
+				transition = history.stack.length === 0 ? "none" :
+					this._transitionFromHistory( data.direction ),
+
+				// default options for the changPage calls made after examining
+				// the current state of the page and the hash, NOTE that the
+				// transition is derived from the previous history entry
+				changePageOptions = {
+					changeHash: false,
+					fromHashChange: true,
+					reverse: data.direction === "back"
+				};
+
+			$.extend( changePageOptions, data, {
+				transition: transition
+			});
+
+			// TODO move to _handleDestination ?
+			// If this isn't the first page, if the current url is a dialog hash
+			// key, and the initial destination isn't equal to the current target
+			// page, use the special dialog handling
+			if ( history.activeIndex > 0 &&
+				to.indexOf( $.mobile.dialogHashKey ) > -1 ) {
+
+				to = this._handleDialog( changePageOptions, data );
+
+				if ( to === false ) {
+					return;
+				}
+			}
+
+			this._changeContent( this._handleDestination( to ), changePageOptions );
+		},
+
+		_changeContent: function( to, opts ) {
+			$.mobile.changePage( to, opts );
+		},
+
+		_getBase: function() {
+			return $.mobile.base;
+		},
+
+		_getNs: function() {
+			return $.mobile.ns;
+		},
+
+		_enhance: function( content, role ) {
+			// TODO consider supporting a custom callback, and passing in
+			// the settings which includes the role
+			return content.page({ role: role });
+		},
+
+		_include: function( page, settings ) {
+			// append to page and enhance
+			page.appendTo( this.element );
+
+			// use the page widget to enhance
+			this._enhance( page, settings.role );
+
+			// remove page on hide
+			page.page( "bindRemove" );
+		},
+
+		_find: function( absUrl ) {
+			// TODO consider supporting a custom callback
+			var fileUrl = this._createFileUrl( absUrl ),
+				dataUrl = this._createDataUrl( absUrl ),
+				page, initialContent = this._getInitialContent();
+
+			// Check to see if the page already exists in the DOM.
+			// NOTE do _not_ use the :jqmData pseudo selector because parenthesis
+			//      are a valid url char and it breaks on the first occurence
+			page = this.element
+				.children( "[data-" + this._getNs() +
+					"url='" + $.mobile.path.hashToSelector( dataUrl ) + "']" );
+
+			// If we failed to find the page, check to see if the url is a
+			// reference to an embedded page. If so, it may have been dynamically
+			// injected by a developer, in which case it would be lacking a
+			// data-url attribute and in need of enhancement.
+			if ( page.length === 0 && dataUrl && !$.mobile.path.isPath( dataUrl ) ) {
+				page = this.element.children( $.mobile.path.hashToSelector("#" + dataUrl) )
+					.attr( "data-" + this._getNs() + "url", dataUrl )
+					.jqmData( "url", dataUrl );
+			}
+
+			// If we failed to find a page in the DOM, check the URL to see if it
+			// refers to the first page in the application. Also check to make sure
+			// our cached-first-page is actually in the DOM. Some user deployed
+			// apps are pruning the first page from the DOM for various reasons.
+			// We check for this case here because we don't want a first-page with
+			// an id falling through to the non-existent embedded page error case.
+			if ( page.length === 0 &&
+				$.mobile.path.isFirstPageUrl( fileUrl ) &&
+				initialContent &&
+				initialContent.parent().length ) {
+				page = $( initialContent );
+			}
+
+			return page;
+		},
+
+		_getLoader: function() {
+			return $.mobile.loading();
+		},
+
+		_showLoading: function( delay, theme, msg, textonly ) {
+			// This configurable timeout allows cached pages a brief
+			// delay to load without showing a message
+			if ( this._loadMsg ) {
+				return;
+			}
+
+			this._loadMsg = setTimeout($.proxy(function() {
+				this._getLoader().loader( "show", theme, msg, textonly );
+				this._loadMsg = 0;
+			}, this), delay );
+		},
+
+		_hideLoading: function() {
+			// Stop message show timer
+			clearTimeout( this._loadMsg );
+			this._loadMsg = 0;
+
+			// Hide loading message
+			this._getLoader().loader( "hide" );
+		},
+
+		_showError: function() {
+			// make sure to remove the current loading message
+			this._hideLoading();
+
+			// show the error message
+			this._showLoading( 0, $.mobile.pageLoadErrorMessageTheme, $.mobile.pageLoadErrorMessage, true );
+
+			// hide the error message after a delay
+			// TODO configuration
+			setTimeout( $.proxy(this, "_hideLoading"), 1500 );
+		},
+
+		_parse: function( html, fileUrl ) {
+			// TODO consider allowing customization of this method. It's very JQM specific
+			var page, all = $( "<div></div>" );
+
+			//workaround to allow scripts to execute when included in page divs
+			all.get( 0 ).innerHTML = html;
+
+			page = all.find( ":jqmData(role='page'), :jqmData(role='dialog')" ).first();
+
+			//if page elem couldn't be found, create one and insert the body element's contents
+			if ( !page.length ) {
+				page = $( "<div data-" + this._getNs() + "role='page'>" +
+					( html.split( /<\/?body[^>]*>/gmi )[1] || "" ) +
+					"</div>" );
+			}
+
+			// TODO tagging a page with external to make sure that embedded pages aren't
+			// removed by the various page handling code is bad. Having page handling code
+			// in many places is bad. Solutions post 1.0
+			page.attr( "data-" + this._getNs() + "url", this._createDataUrl( fileUrl ) )
+				.attr( "data-" + this._getNs() + "external-page", true );
+
+			return page;
+		},
+
+		_setLoadedTitle: function( page, html ) {
+			//page title regexp
+			var newPageTitle = html.match( /<title[^>]*>([^<]*)/ ) && RegExp.$1;
+
+			if ( newPageTitle && !page.jqmData("title") ) {
+				newPageTitle = $( "<div>" + newPageTitle + "</div>" ).text();
+				page.jqmData( "title", newPageTitle );
+			}
+		},
+
+		_isRewritableBaseTag: function() {
+			return $.mobile.dynamicBaseEnabled && !$.support.dynamicBaseTag;
+		},
+
+		_createDataUrl: function( absoluteUrl ) {
+			return $.mobile.path.convertUrlToDataUrl( absoluteUrl );
+		},
+
+		_createFileUrl: function( absoluteUrl ) {
+			return $.mobile.path.getFilePath( absoluteUrl );
+		},
+
+		_triggerWithDeprecated: function( name, data, page ) {
+			var deprecatedEvent = $.Event( "page" + name ),
+				newEvent = $.Event( this.widgetName + name );
+
+			// DEPRECATED
+			// trigger the old deprecated event on the page if it's provided
+			( page || this.element ).trigger( deprecatedEvent, data );
+
+			// use the widget trigger method for the new content* event
+			this._trigger( name, newEvent, data );
+
+			return {
+				deprecatedEvent: deprecatedEvent,
+				event: newEvent
+			};
+		},
+
+		// TODO it would be nice to split this up more but everything appears to be "one off"
+		//      or require ordering such that other bits are sprinkled in between parts that
+		//      could be abstracted out as a group
+		_loadSuccess: function( absUrl, triggerData, settings, deferred ) {
+			var fileUrl = this._createFileUrl( absUrl );
+
+			return $.proxy(function( html, textStatus, xhr ) {
+				//pre-parse html to check for a data-url,
+				//use it as the new fileUrl, base path, etc
+				var content,
+
+					// TODO handle dialogs again
+					pageElemRegex = new RegExp( "(<[^>]+\\bdata-" + this._getNs() + "role=[\"']?page[\"']?[^>]*>)" ),
+
+					dataUrlRegex = new RegExp( "\\bdata-" + this._getNs() + "url=[\"']?([^\"'>]*)[\"']?" );
+
+				// data-url must be provided for the base tag so resource requests
+				// can be directed to the correct url. loading into a temprorary
+				// element makes these requests immediately
+				if ( pageElemRegex.test( html ) &&
+					RegExp.$1 &&
+					dataUrlRegex.test( RegExp.$1 ) &&
+					RegExp.$1 ) {
+					fileUrl = $.mobile.path.getFilePath( $("<div>" + RegExp.$1 + "</div>").text() );
+
+					// We specify that, if a data-url attribute is given on the page div, its value
+					// must be given non-URL-encoded. However, in this part of the code, fileUrl is
+					// assumed to be URL-encoded, so we URL-encode the retrieved value here
+					fileUrl = this.window[ 0 ].encodeURIComponent( fileUrl );
+				}
+
+				//dont update the base tag if we are prefetching
+				if ( settings.prefetch === undefined ) {
+					this._getBase().set( fileUrl );
+				}
+
+				content = this._parse( html, fileUrl );
+
+				this._setLoadedTitle( content, html );
+
+				// Add the content reference and xhr to our triggerData.
+				triggerData.xhr = xhr;
+				triggerData.textStatus = textStatus;
+
+				// DEPRECATED
+				triggerData.page = content;
+
+				triggerData.content = content;
+
+				triggerData.toPage = content;
+
+				// If the default behavior is prevented, stop here!
+				// Note that it is the responsibility of the listener/handler
+				// that called preventDefault(), to resolve/reject the
+				// deferred object within the triggerData.
+				if ( this._triggerWithDeprecated( "load", triggerData ).event.isDefaultPrevented() ) {
+					return;
+				}
+
+				// rewrite src and href attrs to use a base url if the base tag won't work
+				if ( this._isRewritableBaseTag() && content ) {
+					this._getBase().rewrite( fileUrl, content );
+				}
+
+				this._include( content, settings );
+
+				// Remove loading message.
+				if ( settings.showLoadMsg ) {
+					this._hideLoading();
+				}
+
+				deferred.resolve( absUrl, settings, content );
+			}, this);
+		},
+
+		_loadDefaults: {
+			type: "get",
+			data: undefined,
+
+			// DEPRECATED
+			reloadPage: false,
+
+			reload: false,
+
+			// By default we rely on the role defined by the @data-role attribute.
+			role: undefined,
+
+			showLoadMsg: false,
+
+			// This delay allows loads that pull from browser cache to
+			// occur without showing the loading message.
+			loadMsgDelay: 50
+		},
+
+		load: function( url, options ) {
+			// This function uses deferred notifications to let callers
+			// know when the content is done loading, or if an error has occurred.
+			var deferred = ( options && options.deferred ) || $.Deferred(),
+
+				// Examining the option "reloadPage" passed by the user is deprecated as of 1.4.0
+				// and will be removed in 1.5.0.
+				// Copy option "reloadPage" to "reload", but only if option "reload" is not present
+				reloadOptionExtension =
+					( ( options && options.reload === undefined &&
+						options.reloadPage !== undefined ) ?
+							{ reload: options.reloadPage } : {} ),
+
+				// The default load options with overrides specified by the caller.
+				settings = $.extend( {}, this._loadDefaults, options, reloadOptionExtension ),
+
+				// The DOM element for the content after it has been loaded.
+				content = null,
+
+				// The absolute version of the URL passed into the function. This
+				// version of the URL may contain dialog/subcontent params in it.
+				absUrl = $.mobile.path.makeUrlAbsolute( url, this._findBaseWithDefault() ),
+				fileUrl, dataUrl, pblEvent, triggerData;
+
+			// If the caller provided data, and we're using "get" request,
+			// append the data to the URL.
+			if ( settings.data && settings.type === "get" ) {
+				absUrl = $.mobile.path.addSearchParams( absUrl, settings.data );
+				settings.data = undefined;
+			}
+
+			// If the caller is using a "post" request, reload must be true
+			if ( settings.data && settings.type === "post" ) {
+				settings.reload = true;
+			}
+
+			// The absolute version of the URL minus any dialog/subcontent params.
+			// In otherwords the real URL of the content to be loaded.
+			fileUrl = this._createFileUrl( absUrl );
+
+			// The version of the Url actually stored in the data-url attribute of
+			// the content. For embedded content, it is just the id of the page. For
+			// content within the same domain as the document base, it is the site
+			// relative path. For cross-domain content (Phone Gap only) the entire
+			// absolute Url is used to load the content.
+			dataUrl = this._createDataUrl( absUrl );
+
+			content = this._find( absUrl );
+
+			// If it isn't a reference to the first content and refers to missing
+			// embedded content reject the deferred and return
+			if ( content.length === 0 &&
+				$.mobile.path.isEmbeddedPage(fileUrl) &&
+				!$.mobile.path.isFirstPageUrl(fileUrl) ) {
+				deferred.reject( absUrl, settings );
+				return deferred.promise();
+			}
+
+			// Reset base to the default document base
+			// TODO figure out why we doe this
+			this._getBase().reset();
+
+			// If the content we are interested in is already in the DOM,
+			// and the caller did not indicate that we should force a
+			// reload of the file, we are done. Resolve the deferrred so that
+			// users can bind to .done on the promise
+			if ( content.length && !settings.reload ) {
+				this._enhance( content, settings.role );
+				deferred.resolve( absUrl, settings, content );
+
+				//if we are reloading the content make sure we update
+				// the base if its not a prefetch
+				if ( !settings.prefetch ) {
+					this._getBase().set(url);
+				}
+
+				return deferred.promise();
+			}
+
+			triggerData = {
+				url: url,
+				absUrl: absUrl,
+				toPage: url,
+				prevPage: options ? options.fromPage : undefined,
+				dataUrl: dataUrl,
+				deferred: deferred,
+				options: settings
+			};
+
+			// Let listeners know we're about to load content.
+			pblEvent = this._triggerWithDeprecated( "beforeload", triggerData );
+
+			// If the default behavior is prevented, stop here!
+			if ( pblEvent.deprecatedEvent.isDefaultPrevented() ||
+				pblEvent.event.isDefaultPrevented() ) {
+				return deferred.promise();
+			}
+
+			if ( settings.showLoadMsg ) {
+				this._showLoading( settings.loadMsgDelay );
+			}
+
+			// Reset base to the default document base.
+			// only reset if we are not prefetching
+			if ( settings.prefetch === undefined ) {
+				this._getBase().reset();
+			}
+
+			if ( !( $.mobile.allowCrossDomainPages ||
+				$.mobile.path.isSameDomain($.mobile.path.documentUrl, absUrl ) ) ) {
+				deferred.reject( absUrl, settings );
+				return deferred.promise();
+			}
+
+			// Load the new content.
+			$.ajax({
+				url: fileUrl,
+				type: settings.type,
+				data: settings.data,
+				contentType: settings.contentType,
+				dataType: "html",
+				success: this._loadSuccess( absUrl, triggerData, settings, deferred ),
+				error: this._loadError( absUrl, triggerData, settings, deferred )
+			});
+
+			return deferred.promise();
+		},
+
+		_loadError: function( absUrl, triggerData, settings, deferred ) {
+			return $.proxy(function( xhr, textStatus, errorThrown ) {
+				//set base back to current path
+				this._getBase().set( $.mobile.path.get() );
+
+				// Add error info to our triggerData.
+				triggerData.xhr = xhr;
+				triggerData.textStatus = textStatus;
+				triggerData.errorThrown = errorThrown;
+
+				// Let listeners know the page load failed.
+				var plfEvent = this._triggerWithDeprecated( "loadfailed", triggerData );
+
+				// If the default behavior is prevented, stop here!
+				// Note that it is the responsibility of the listener/handler
+				// that called preventDefault(), to resolve/reject the
+				// deferred object within the triggerData.
+				if ( plfEvent.deprecatedEvent.isDefaultPrevented() ||
+					plfEvent.event.isDefaultPrevented() ) {
+					return;
+				}
+
+				// Remove loading message.
+				if ( settings.showLoadMsg ) {
+					this._showError();
+				}
+
+				deferred.reject( absUrl, settings );
+			}, this);
+		},
+
+		_getTransitionHandler: function( transition ) {
+			transition = $.mobile._maybeDegradeTransition( transition );
+
+			//find the transition handler for the specified transition. If there
+			//isn't one in our transitionHandlers dictionary, use the default one.
+			//call the handler immediately to kick-off the transition.
+			return $.mobile.transitionHandlers[ transition ] || $.mobile.defaultTransitionHandler;
+		},
+
+		// TODO move into transition handlers?
+		_triggerCssTransitionEvents: function( to, from, prefix ) {
+			var samePage = false;
+
+			prefix = prefix || "";
+
+			// TODO decide if these events should in fact be triggered on the container
+			if ( from ) {
+
+				//Check if this is a same page transition and tell the handler in page
+				if( to[0] === from[0] ){
+					samePage = true;
+				}
+
+				//trigger before show/hide events
+				// TODO deprecate nextPage in favor of next
+				this._triggerWithDeprecated( prefix + "hide", {
+
+					// Deprecated in 1.4 remove in 1.5
+					nextPage: to,
+					toPage: to,
+					prevPage: from,
+					samePage: samePage
+				}, from );
+			}
+
+			// TODO deprecate prevPage in favor of previous
+			this._triggerWithDeprecated( prefix + "show", {
+				prevPage: from || $( "" ),
+				toPage: to
+			}, to );
+		},
+
+		// TODO make private once change has been defined in the widget
+		_cssTransition: function( to, from, options ) {
+			var transition = options.transition,
+				reverse = options.reverse,
+				deferred = options.deferred,
+				TransitionHandler,
+				promise;
+
+			this._triggerCssTransitionEvents( to, from, "before" );
+
+			// TODO put this in a binding to events *outside* the widget
+			this._hideLoading();
+
+			TransitionHandler = this._getTransitionHandler( transition );
+
+			promise = ( new TransitionHandler( transition, reverse, to, from ) ).transition();
+
+			promise.done( $.proxy( function() {
+				this._triggerCssTransitionEvents( to, from );
+			}, this ));
+
+			// TODO temporary accomodation of argument deferred
+			promise.done(function() {
+				deferred.resolve.apply( deferred, arguments );
+			});
+		},
+
+		_releaseTransitionLock: function() {
+			//release transition lock so navigation is free again
+			isPageTransitioning = false;
+			if ( pageTransitionQueue.length > 0 ) {
+				$.mobile.changePage.apply( null, pageTransitionQueue.pop() );
+			}
+		},
+
+		_removeActiveLinkClass: function( force ) {
+			//clear out the active button state
+			$.mobile.removeActiveLinkClass( force );
+		},
+
+		_loadUrl: function( to, triggerData, settings ) {
+			// preserve the original target as the dataUrl value will be
+			// simplified eg, removing ui-state, and removing query params
+			// from the hash this is so that users who want to use query
+			// params have access to them in the event bindings for the page
+			// life cycle See issue #5085
+			settings.target = to;
+			settings.deferred = $.Deferred();
+
+			this.load( to, settings );
+
+			settings.deferred.done($.proxy(function( url, options, content ) {
+				isPageTransitioning = false;
+
+				// store the original absolute url so that it can be provided
+				// to events in the triggerData of the subsequent changePage call
+				options.absUrl = triggerData.absUrl;
+
+				this.transition( content, triggerData, options );
+			}, this));
+
+			settings.deferred.fail($.proxy(function(/* url, options */) {
+				this._removeActiveLinkClass( true );
+				this._releaseTransitionLock();
+				this._triggerWithDeprecated( "changefailed", triggerData );
+			}, this));
+		},
+
+		_triggerPageBeforeChange: function( to, triggerData, settings ) {
+			var returnEvents;
+
+			triggerData.prevPage = this.activePage;
+			$.extend( triggerData, {
+				toPage: to,
+				options: settings
+			});
+
+			// NOTE: preserve the original target as the dataUrl value will be
+			// simplified eg, removing ui-state, and removing query params from
+			// the hash this is so that users who want to use query params have
+			// access to them in the event bindings for the page life cycle
+			// See issue #5085
+			if ( $.type(to) === "string" ) {
+				// if the toPage is a string simply convert it
+				triggerData.absUrl = $.mobile.path.makeUrlAbsolute( to, this._findBaseWithDefault() );
+			} else {
+				// if the toPage is a jQuery object grab the absolute url stored
+				// in the loadPage callback where it exists
+				triggerData.absUrl = settings.absUrl;
+			}
+
+			// Let listeners know we're about to change the current page.
+			returnEvents = this._triggerWithDeprecated( "beforechange", triggerData );
+
+			// If the default behavior is prevented, stop here!
+			if ( returnEvents.event.isDefaultPrevented() ||
+				returnEvents.deprecatedEvent.isDefaultPrevented() ) {
+				return false;
+			}
+
+			return true;
+		},
+
+		change: function( to, options ) {
+			// If we are in the midst of a transition, queue the current request.
+			// We'll call changePage() once we're done with the current transition
+			// to service the request.
+			if ( isPageTransitioning ) {
+				pageTransitionQueue.unshift( arguments );
+				return;
+			}
+
+			var settings = $.extend( {}, $.mobile.changePage.defaults, options ),
+				triggerData = {};
+
+			// Make sure we have a fromPage.
+			settings.fromPage = settings.fromPage || this.activePage;
+
+			// if the page beforechange default is prevented return early
+			if ( !this._triggerPageBeforeChange(to, triggerData, settings) ) {
+				return;
+			}
+
+			// We allow "pagebeforechange" observers to modify the to in
+			// the trigger data to allow for redirects. Make sure our to is
+			// updated. We also need to re-evaluate whether it is a string,
+			// because an object can also be replaced by a string
+			to = triggerData.toPage;
+
+			// If the caller passed us a url, call loadPage()
+			// to make sure it is loaded into the DOM. We'll listen
+			// to the promise object it returns so we know when
+			// it is done loading or if an error ocurred.
+			if ( $.type(to) === "string" ) {
+				// Set the isPageTransitioning flag to prevent any requests from
+				// entering this method while we are in the midst of loading a page
+				// or transitioning.
+				isPageTransitioning = true;
+
+				this._loadUrl( to, triggerData, settings );
+			} else {
+				this.transition( to, triggerData, settings );
+			}
+		},
+
+		transition: function( toPage, triggerData, settings ) {
+			var fromPage, url, pageUrl, fileUrl,
+				active, activeIsInitialPage,
+				historyDir, pageTitle, isDialog,
+				alreadyThere, newPageTitle,
+				params,	cssTransitionDeferred,
+				beforeTransition;
+
+			// If we are in the midst of a transition, queue the current request.
+			// We'll call changePage() once we're done with the current transition
+			// to service the request.
+			if ( isPageTransitioning ) {
+				// make sure to only queue the to and settings values so the arguments
+				// work with a call to the change method
+				pageTransitionQueue.unshift( [toPage, settings] );
+				return;
+			}
+
+			// DEPRECATED - this call only, in favor of the before transition
+			// if the page beforechange default is prevented return early
+			if ( !this._triggerPageBeforeChange(toPage, triggerData, settings) ) {
+				return;
+			}
+
+			triggerData.prevPage = settings.fromPage;
+			// if the (content|page)beforetransition default is prevented return early
+			// Note, we have to check for both the deprecated and new events
+			beforeTransition = this._triggerWithDeprecated( "beforetransition", triggerData );
+			if (beforeTransition.deprecatedEvent.isDefaultPrevented() ||
+				beforeTransition.event.isDefaultPrevented() ) {
+				return;
+			}
+
+			// Set the isPageTransitioning flag to prevent any requests from
+			// entering this method while we are in the midst of loading a page
+			// or transitioning.
+			isPageTransitioning = true;
+
+			// If we are going to the first-page of the application, we need to make
+			// sure settings.dataUrl is set to the application document url. This allows
+			// us to avoid generating a document url with an id hash in the case where the
+			// first-page of the document has an id attribute specified.
+			if ( toPage[ 0 ] === $.mobile.firstPage[ 0 ] && !settings.dataUrl ) {
+				settings.dataUrl = $.mobile.path.documentUrl.hrefNoHash;
+			}
+
+			// The caller passed us a real page DOM element. Update our
+			// internal state and then trigger a transition to the page.
+			fromPage = settings.fromPage;
+			url = ( settings.dataUrl && $.mobile.path.convertUrlToDataUrl(settings.dataUrl) ) ||
+				toPage.jqmData( "url" );
+
+			// The pageUrl var is usually the same as url, except when url is obscured
+			// as a dialog url. pageUrl always contains the file path
+			pageUrl = url;
+			fileUrl = $.mobile.path.getFilePath( url );
+			active = $.mobile.navigate.history.getActive();
+			activeIsInitialPage = $.mobile.navigate.history.activeIndex === 0;
+			historyDir = 0;
+			pageTitle = document.title;
+			isDialog = ( settings.role === "dialog" ||
+				toPage.jqmData( "role" ) === "dialog" ) &&
+				toPage.jqmData( "dialog" ) !== true;
+
+			// By default, we prevent changePage requests when the fromPage and toPage
+			// are the same element, but folks that generate content
+			// manually/dynamically and reuse pages want to be able to transition to
+			// the same page. To allow this, they will need to change the default
+			// value of allowSamePageTransition to true, *OR*, pass it in as an
+			// option when they manually call changePage(). It should be noted that
+			// our default transition animations assume that the formPage and toPage
+			// are different elements, so they may behave unexpectedly. It is up to
+			// the developer that turns on the allowSamePageTransitiona option to
+			// either turn off transition animations, or make sure that an appropriate
+			// animation transition is used.
+			if ( fromPage && fromPage[0] === toPage[0] &&
+				!settings.allowSamePageTransition ) {
+
+				isPageTransitioning = false;
+				this._triggerWithDeprecated( "transition", triggerData );
+				this._triggerWithDeprecated( "change", triggerData );
+
+				// Even if there is no page change to be done, we should keep the
+				// urlHistory in sync with the hash changes
+				if ( settings.fromHashChange ) {
+					$.mobile.navigate.history.direct({ url: url });
+				}
+
+				return;
+			}
+
+			// We need to make sure the page we are given has already been enhanced.
+			toPage.page({ role: settings.role });
+
+			// If the changePage request was sent from a hashChange event, check to
+			// see if the page is already within the urlHistory stack. If so, we'll
+			// assume the user hit the forward/back button and will try to match the
+			// transition accordingly.
+			if ( settings.fromHashChange ) {
+				historyDir = settings.direction === "back" ? -1 : 1;
+			}
+
+			// Kill the keyboard.
+			// XXX_jblas: We need to stop crawling the entire document to kill focus.
+			//            Instead, we should be tracking focus with a delegate()
+			//            handler so we already have the element in hand at this
+			//            point.
+			// Wrap this in a try/catch block since IE9 throw "Unspecified error" if
+			// document.activeElement is undefined when we are in an IFrame.
+			try {
+				if ( document.activeElement &&
+					document.activeElement.nodeName.toLowerCase() !== "body" ) {
+
+					$( document.activeElement ).blur();
+				} else {
+					$( "input:focus, textarea:focus, select:focus" ).blur();
+				}
+			} catch( e ) {}
+
+			// Record whether we are at a place in history where a dialog used to be -
+			// if so, do not add a new history entry and do not change the hash either
+			alreadyThere = false;
+
+			// If we're displaying the page as a dialog, we don't want the url
+			// for the dialog content to be used in the hash. Instead, we want
+			// to append the dialogHashKey to the url of the current page.
+			if ( isDialog && active ) {
+				// on the initial page load active.url is undefined and in that case
+				// should be an empty string. Moving the undefined -> empty string back
+				// into urlHistory.addNew seemed imprudent given undefined better
+				// represents the url state
+
+				// If we are at a place in history that once belonged to a dialog, reuse
+				// this state without adding to urlHistory and without modifying the
+				// hash. However, if a dialog is already displayed at this point, and
+				// we're about to display another dialog, then we must add another hash
+				// and history entry on top so that one may navigate back to the
+				// original dialog
+				if ( active.url &&
+					active.url.indexOf( $.mobile.dialogHashKey ) > -1 &&
+					this.activePage &&
+					!this.activePage.hasClass( "ui-dialog" ) &&
+					$.mobile.navigate.history.activeIndex > 0 ) {
+
+					settings.changeHash = false;
+					alreadyThere = true;
+				}
+
+				// Normally, we tack on a dialog hash key, but if this is the location
+				// of a stale dialog, we reuse the URL from the entry
+				url = ( active.url || "" );
+
+				// account for absolute urls instead of just relative urls use as hashes
+				if ( !alreadyThere && url.indexOf("#") > -1 ) {
+					url += $.mobile.dialogHashKey;
+				} else {
+					url += "#" + $.mobile.dialogHashKey;
+				}
+			}
+
+			// if title element wasn't found, try the page div data attr too
+			// If this is a deep-link or a reload ( active === undefined ) then just
+			// use pageTitle
+			newPageTitle = ( !active ) ? pageTitle : toPage.jqmData( "title" ) ||
+				toPage.children( ":jqmData(role='header')" ).find( ".ui-title" ).text();
+			if ( !!newPageTitle && pageTitle === document.title ) {
+				pageTitle = newPageTitle;
+			}
+			if ( !toPage.jqmData( "title" ) ) {
+				toPage.jqmData( "title", pageTitle );
+			}
+
+			// Make sure we have a transition defined.
+			settings.transition = settings.transition ||
+				( ( historyDir && !activeIsInitialPage ) ? active.transition : undefined ) ||
+				( isDialog ? $.mobile.defaultDialogTransition : $.mobile.defaultPageTransition );
+
+			//add page to history stack if it's not back or forward
+			if ( !historyDir && alreadyThere ) {
+				$.mobile.navigate.history.getActive().pageUrl = pageUrl;
+			}
+
+			// Set the location hash.
+			if ( url && !settings.fromHashChange ) {
+
+				// rebuilding the hash here since we loose it earlier on
+				// TODO preserve the originally passed in path
+				if ( !$.mobile.path.isPath( url ) && url.indexOf( "#" ) < 0 ) {
+					url = "#" + url;
+				}
+
+				// TODO the property names here are just silly
+				params = {
+					transition: settings.transition,
+					title: pageTitle,
+					pageUrl: pageUrl,
+					role: settings.role
+				};
+
+				if ( settings.changeHash !== false && $.mobile.hashListeningEnabled ) {
+					$.mobile.navigate( this.window[ 0 ].encodeURI( url ), params, true);
+				} else if ( toPage[ 0 ] !== $.mobile.firstPage[ 0 ] ) {
+					$.mobile.navigate.history.add( url, params );
+				}
+			}
+
+			//set page title
+			document.title = pageTitle;
+
+			//set "toPage" as activePage deprecated in 1.4 remove in 1.5
+			$.mobile.activePage = toPage;
+
+			//new way to handle activePage
+			this.activePage = toPage;
+
+			// If we're navigating back in the URL history, set reverse accordingly.
+			settings.reverse = settings.reverse || historyDir < 0;
+
+			cssTransitionDeferred = $.Deferred();
+
+			this._cssTransition(toPage, fromPage, {
+				transition: settings.transition,
+				reverse: settings.reverse,
+				deferred: cssTransitionDeferred
+			});
+
+			cssTransitionDeferred.done($.proxy(function( name, reverse, $to, $from, alreadyFocused ) {
+				$.mobile.removeActiveLinkClass();
+
+				//if there's a duplicateCachedPage, remove it from the DOM now that it's hidden
+				if ( settings.duplicateCachedPage ) {
+					settings.duplicateCachedPage.remove();
+				}
+
+				// despite visibility: hidden addresses issue #2965
+				// https://github.com/jquery/jquery-mobile/issues/2965
+				if ( !alreadyFocused ) {
+					$.mobile.focusPage( toPage );
+				}
+
+				this._releaseTransitionLock();
+				this._triggerWithDeprecated( "transition", triggerData );
+				this._triggerWithDeprecated( "change", triggerData );
+			}, this));
+		},
+
+		// determine the current base url
+		_findBaseWithDefault: function() {
+			var closestBase = ( this.activePage &&
+			$.mobile.getClosestBaseUrl( this.activePage ) );
+		return closestBase || $.mobile.path.documentBase.hrefNoHash;
+		}
+	});
+
+	// The following handlers should be bound after mobileinit has been triggered
+	// the following deferred is resolved in the init file
+	$.mobile.navreadyDeferred = $.Deferred();
+
+	//these variables make all page containers use the same queue and only navigate one at a time
+	// queue to hold simultanious page transitions
+	var pageTransitionQueue = [],
+
+		// indicates whether or not page is in process of transitioning
+		isPageTransitioning = false;
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+		// resolved on domready
+	var domreadyDeferred = $.Deferred(),
+
+		// resolved and nulled on window.load()
+		loadDeferred = $.Deferred(),
+
+		// function that resolves the above deferred
+		pageIsFullyLoaded = function() {
+
+			// Resolve and null the deferred
+			loadDeferred.resolve();
+			loadDeferred = null;
+		},
+
+		documentUrl = $.mobile.path.documentUrl,
+
+		// used to track last vclicked element to make sure its value is added to form data
+		$lastVClicked = null;
+
+	/* Event Bindings - hashchange, submit, and click */
+	function findClosestLink( ele )	{
+		while ( ele ) {
+			// Look for the closest element with a nodeName of "a".
+			// Note that we are checking if we have a valid nodeName
+			// before attempting to access it. This is because the
+			// node we get called with could have originated from within
+			// an embedded SVG document where some symbol instance elements
+			// don't have nodeName defined on them, or strings are of type
+			// SVGAnimatedString.
+			if ( ( typeof ele.nodeName === "string" ) && ele.nodeName.toLowerCase() === "a" ) {
+				break;
+			}
+			ele = ele.parentNode;
+		}
+		return ele;
+	}
+
+	$.mobile.loadPage = function( url, opts ) {
+		var container;
+
+		opts = opts || {};
+		container = ( opts.pageContainer || $.mobile.pageContainer );
+
+		// create the deferred that will be supplied to loadPage callers
+		// and resolved by the content widget's load method
+		opts.deferred = $.Deferred();
+
+		// Preferring to allow exceptions for uninitialized opts.pageContainer
+		// widgets so we know if we need to force init here for users
+		container.pagecontainer( "load", url, opts );
+
+		// provide the deferred
+		return opts.deferred.promise();
+	};
+
+	//define vars for interal use
+
+	/* internal utility functions */
+
+	// NOTE Issue #4950 Android phonegap doesn't navigate back properly
+	//      when a full page refresh has taken place. It appears that hashchange
+	//      and replacestate history alterations work fine but we need to support
+	//      both forms of history traversal in our code that uses backward history
+	//      movement
+	$.mobile.back = function() {
+		var nav = window.navigator;
+
+		// if the setting is on and the navigator object is
+		// available use the phonegap navigation capability
+		if ( this.phonegapNavigationEnabled &&
+			nav &&
+			nav.app &&
+			nav.app.backHistory ) {
+			nav.app.backHistory();
+		} else {
+			$.mobile.pageContainer.pagecontainer( "back" );
+		}
+	};
+
+	// Direct focus to the page title, or otherwise first focusable element
+	$.mobile.focusPage = function ( page ) {
+		var autofocus = page.find( "[autofocus]" ),
+			pageTitle = page.find( ".ui-title:eq(0)" );
+
+		if ( autofocus.length ) {
+			autofocus.focus();
+			return;
+		}
+
+		if ( pageTitle.length ) {
+			pageTitle.focus();
+		} else{
+			page.focus();
+		}
+	};
+
+	// No-op implementation of transition degradation
+	$.mobile._maybeDegradeTransition = $.mobile._maybeDegradeTransition || function( transition ) {
+		return transition;
+	};
+
+	// Exposed $.mobile methods
+
+	$.mobile.changePage = function( to, options ) {
+		$.mobile.pageContainer.pagecontainer( "change", to, options );
+	};
+
+	$.mobile.changePage.defaults = {
+		transition: undefined,
+		reverse: false,
+		changeHash: true,
+		fromHashChange: false,
+		role: undefined, // By default we rely on the role defined by the @data-role attribute.
+		duplicateCachedPage: undefined,
+		pageContainer: undefined,
+		showLoadMsg: true, //loading message shows by default when pages are being fetched during changePage
+		dataUrl: undefined,
+		fromPage: undefined,
+		allowSamePageTransition: false
+	};
+
+	$.mobile._registerInternalEvents = function() {
+		var getAjaxFormData = function( $form, calculateOnly ) {
+			var url, ret = true, formData, vclickedName, method;
+			if ( !$.mobile.ajaxEnabled ||
+					// test that the form is, itself, ajax false
+					$form.is( ":jqmData(ajax='false')" ) ||
+					// test that $.mobile.ignoreContentEnabled is set and
+					// the form or one of it's parents is ajax=false
+					!$form.jqmHijackable().length ||
+					$form.attr( "target" ) ) {
+				return false;
+			}
+
+			url = ( $lastVClicked && $lastVClicked.attr( "formaction" ) ) ||
+				$form.attr( "action" );
+			method = ( $form.attr( "method" ) || "get" ).toLowerCase();
+
+			// If no action is specified, browsers default to using the
+			// URL of the document containing the form. Since we dynamically
+			// pull in pages from external documents, the form should submit
+			// to the URL for the source document of the page containing
+			// the form.
+			if ( !url ) {
+				// Get the @data-url for the page containing the form.
+				url = $.mobile.getClosestBaseUrl( $form );
+
+				// NOTE: If the method is "get", we need to strip off the query string
+				// because it will get replaced with the new form data. See issue #5710.
+				if ( method === "get" ) {
+					url = $.mobile.path.parseUrl( url ).hrefNoSearch;
+				}
+
+				if ( url === $.mobile.path.documentBase.hrefNoHash ) {
+					// The url we got back matches the document base,
+					// which means the page must be an internal/embedded page,
+					// so default to using the actual document url as a browser
+					// would.
+					url = documentUrl.hrefNoSearch;
+				}
+			}
+
+			url = $.mobile.path.makeUrlAbsolute(  url, $.mobile.getClosestBaseUrl( $form ) );
+
+			if ( ( $.mobile.path.isExternal( url ) && !$.mobile.path.isPermittedCrossDomainRequest( documentUrl, url ) ) ) {
+				return false;
+			}
+
+			if ( !calculateOnly ) {
+				formData = $form.serializeArray();
+
+				if ( $lastVClicked && $lastVClicked[ 0 ].form === $form[ 0 ] ) {
+					vclickedName = $lastVClicked.attr( "name" );
+					if ( vclickedName ) {
+						// Make sure the last clicked element is included in the form
+						$.each( formData, function( key, value ) {
+							if ( value.name === vclickedName ) {
+								// Unset vclickedName - we've found it in the serialized data already
+								vclickedName = "";
+								return false;
+							}
+						});
+						if ( vclickedName ) {
+							formData.push( { name: vclickedName, value: $lastVClicked.attr( "value" ) } );
+						}
+					}
+				}
+
+				ret = {
+					url: url,
+					options: {
+						type:		method,
+						data:		$.param( formData ),
+						transition:	$form.jqmData( "transition" ),
+						reverse:	$form.jqmData( "direction" ) === "reverse",
+						reloadPage:	true
+					}
+				};
+			}
+
+			return ret;
+		};
+
+		//bind to form submit events, handle with Ajax
+		$.mobile.document.delegate( "form", "submit", function( event ) {
+			var formData;
+
+			if ( !event.isDefaultPrevented() ) {
+				formData = getAjaxFormData( $( this ) );
+				if ( formData ) {
+					$.mobile.changePage( formData.url, formData.options );
+					event.preventDefault();
+				}
+			}
+		});
+
+		//add active state on vclick
+		$.mobile.document.bind( "vclick", function( event ) {
+			var $btn, btnEls, target = event.target, needClosest = false;
+			// if this isn't a left click we don't care. Its important to note
+			// that when the virtual event is generated it will create the which attr
+			if ( event.which > 1 || !$.mobile.linkBindingEnabled ) {
+				return;
+			}
+
+			// Record that this element was clicked, in case we need it for correct
+			// form submission during the "submit" handler above
+			$lastVClicked = $( target );
+
+			// Try to find a target element to which the active class will be applied
+			if ( $.data( target, "mobile-button" ) ) {
+				// If the form will not be submitted via AJAX, do not add active class
+				if ( !getAjaxFormData( $( target ).closest( "form" ), true ) ) {
+					return;
+				}
+				// We will apply the active state to this button widget - the parent
+				// of the input that was clicked will have the associated data
+				if ( target.parentNode ) {
+					target = target.parentNode;
+				}
+			} else {
+				target = findClosestLink( target );
+				if ( !( target && $.mobile.path.parseUrl( target.getAttribute( "href" ) || "#" ).hash !== "#" ) ) {
+					return;
+				}
+
+				// TODO teach $.mobile.hijackable to operate on raw dom elements so the
+				// link wrapping can be avoided
+				if ( !$( target ).jqmHijackable().length ) {
+					return;
+				}
+			}
+
+			// Avoid calling .closest by using the data set during .buttonMarkup()
+			// List items have the button data in the parent of the element clicked
+			if ( !!~target.className.indexOf( "ui-link-inherit" ) ) {
+				if ( target.parentNode ) {
+					btnEls = $.data( target.parentNode, "buttonElements" );
+				}
+			// Otherwise, look for the data on the target itself
+			} else {
+				btnEls = $.data( target, "buttonElements" );
+			}
+			// If found, grab the button's outer element
+			if ( btnEls ) {
+				target = btnEls.outer;
+			} else {
+				needClosest = true;
+			}
+
+			$btn = $( target );
+			// If the outer element wasn't found by the our heuristics, use .closest()
+			if ( needClosest ) {
+				$btn = $btn.closest( ".ui-btn" );
+			}
+
+			if ( $btn.length > 0 &&
+				!( $btn.hasClass( "ui-state-disabled" ||
+
+					// DEPRECATED as of 1.4.0 - remove after 1.4.0 release
+					// only ui-state-disabled should be present thereafter
+					$btn.hasClass( "ui-disabled" ) ) ) ) {
+				$.mobile.removeActiveLinkClass( true );
+				$.mobile.activeClickedLink = $btn;
+				$.mobile.activeClickedLink.addClass( $.mobile.activeBtnClass );
+			}
+		});
+
+		// click routing - direct to HTTP or Ajax, accordingly
+		$.mobile.document.bind( "click", function( event ) {
+			if ( !$.mobile.linkBindingEnabled || event.isDefaultPrevented() ) {
+				return;
+			}
+
+			var link = findClosestLink( event.target ),
+				$link = $( link ),
+
+				//remove active link class if external (then it won't be there if you come back)
+				httpCleanup = function() {
+					window.setTimeout(function() { $.mobile.removeActiveLinkClass( true ); }, 200 );
+				},
+				baseUrl, href,
+				useDefaultUrlHandling, isExternal,
+				transition, reverse, role;
+
+			// If a button was clicked, clean up the active class added by vclick above
+			if ( $.mobile.activeClickedLink &&
+				$.mobile.activeClickedLink[ 0 ] === event.target.parentNode ) {
+				httpCleanup();
+			}
+
+			// If there is no link associated with the click or its not a left
+			// click we want to ignore the click
+			// TODO teach $.mobile.hijackable to operate on raw dom elements so the link wrapping
+			// can be avoided
+			if ( !link || event.which > 1 || !$link.jqmHijackable().length ) {
+				return;
+			}
+
+			//if there's a data-rel=back attr, go back in history
+			if ( $link.is( ":jqmData(rel='back')" ) ) {
+				$.mobile.back();
+				return false;
+			}
+
+			baseUrl = $.mobile.getClosestBaseUrl( $link );
+
+			//get href, if defined, otherwise default to empty hash
+			href = $.mobile.path.makeUrlAbsolute( $link.attr( "href" ) || "#", baseUrl );
+
+			//if ajax is disabled, exit early
+			if ( !$.mobile.ajaxEnabled && !$.mobile.path.isEmbeddedPage( href ) ) {
+				httpCleanup();
+				//use default click handling
+				return;
+			}
+
+			// XXX_jblas: Ideally links to application pages should be specified as
+			//            an url to the application document with a hash that is either
+			//            the site relative path or id to the page. But some of the
+			//            internal code that dynamically generates sub-pages for nested
+			//            lists and select dialogs, just write a hash in the link they
+			//            create. This means the actual URL path is based on whatever
+			//            the current value of the base tag is at the time this code
+			//            is called.
+			if ( href.search( "#" ) !== -1 &&
+				!( $.mobile.path.isExternal( href ) && $.mobile.path.isAbsoluteUrl( href ) ) ) {
+
+				href = href.replace( /[^#]*#/, "" );
+				if ( !href ) {
+					//link was an empty hash meant purely
+					//for interaction, so we ignore it.
+					event.preventDefault();
+					return;
+				} else if ( $.mobile.path.isPath( href ) ) {
+					//we have apath so make it the href we want to load.
+					href = $.mobile.path.makeUrlAbsolute( href, baseUrl );
+				} else {
+					//we have a simple id so use the documentUrl as its base.
+					href = $.mobile.path.makeUrlAbsolute( "#" + href, documentUrl.hrefNoHash );
+				}
+			}
+
+			// Should we handle this link, or let the browser deal with it?
+			useDefaultUrlHandling = $link.is( "[rel='external']" ) || $link.is( ":jqmData(ajax='false')" ) || $link.is( "[target]" );
+
+			// Some embedded browsers, like the web view in Phone Gap, allow cross-domain XHR
+			// requests if the document doing the request was loaded via the file:// protocol.
+			// This is usually to allow the application to "phone home" and fetch app specific
+			// data. We normally let the browser handle external/cross-domain urls, but if the
+			// allowCrossDomainPages option is true, we will allow cross-domain http/https
+			// requests to go through our page loading logic.
+
+			//check for protocol or rel and its not an embedded page
+			//TODO overlap in logic from isExternal, rel=external check should be
+			//     moved into more comprehensive isExternalLink
+			isExternal = useDefaultUrlHandling || ( $.mobile.path.isExternal( href ) && !$.mobile.path.isPermittedCrossDomainRequest( documentUrl, href ) );
+
+			if ( isExternal ) {
+				httpCleanup();
+				//use default click handling
+				return;
+			}
+
+			//use ajax
+			transition = $link.jqmData( "transition" );
+			reverse = $link.jqmData( "direction" ) === "reverse" ||
+						// deprecated - remove by 1.0
+						$link.jqmData( "back" );
+
+			//this may need to be more specific as we use data-rel more
+			role = $link.attr( "data-" + $.mobile.ns + "rel" ) || undefined;
+
+			$.mobile.changePage( href, { transition: transition, reverse: reverse, role: role, link: $link } );
+			event.preventDefault();
+		});
+
+		//prefetch pages when anchors with data-prefetch are encountered
+		$.mobile.document.delegate( ".ui-page", "pageshow.prefetch", function() {
+			var urls = [];
+			$( this ).find( "a:jqmData(prefetch)" ).each(function() {
+				var $link = $( this ),
+					url = $link.attr( "href" );
+
+				if ( url && $.inArray( url, urls ) === -1 ) {
+					urls.push( url );
+
+					$.mobile.loadPage( url, { role: $link.attr( "data-" + $.mobile.ns + "rel" ),prefetch: true } );
+				}
+			});
+		});
+
+		// TODO ensure that the navigate binding in the content widget happens at the right time
+		$.mobile.pageContainer.pagecontainer();
+
+		//set page min-heights to be device specific
+		$.mobile.document.bind( "pageshow", function() {
+
+			// We need to wait for window.load to make sure that styles have already been rendered,
+			// otherwise heights of external toolbars will have the wrong value
+			if ( loadDeferred ) {
+				loadDeferred.done( $.mobile.resetActivePageHeight );
+			} else {
+				$.mobile.resetActivePageHeight();
+			}
+		});
+		$.mobile.window.bind( "throttledresize", $.mobile.resetActivePageHeight );
+
+	};//navreadyDeferred done callback
+
+	$( function() { domreadyDeferred.resolve(); } );
+
+	// Account for the possibility that the load event has already fired
+	if ( document.readyState === "complete" ) {
+		pageIsFullyLoaded();
+	} else {
+		$.mobile.window.load( pageIsFullyLoaded );
+	}
+
+	$.when( domreadyDeferred, $.mobile.navreadyDeferred ).done( function() { $.mobile._registerInternalEvents(); } );
+})( jQuery );
+
+
+(function( $, window, undefined ) {
+
+	// TODO remove direct references to $.mobile and properties, we should
+	//      favor injection with params to the constructor
+	$.mobile.Transition = function() {
+		this.init.apply( this, arguments );
+	};
+
+	$.extend($.mobile.Transition.prototype, {
+		toPreClass: " ui-page-pre-in",
+
+		init: function( name, reverse, $to, $from ) {
+			$.extend(this, {
+				name: name,
+				reverse: reverse,
+				$to: $to,
+				$from: $from,
+				deferred: new $.Deferred()
+			});
+		},
+
+		cleanFrom: function() {
+			this.$from
+				.removeClass( $.mobile.activePageClass + " out in reverse " + this.name )
+				.height( "" );
+		},
+
+		// NOTE overridden by child object prototypes, noop'd here as defaults
+		beforeDoneIn: function() {},
+		beforeDoneOut: function() {},
+		beforeStartOut: function() {},
+
+		doneIn: function() {
+			this.beforeDoneIn();
+
+			this.$to.removeClass( "out in reverse " + this.name ).height( "" );
+
+			this.toggleViewportClass();
+
+			// In some browsers (iOS5), 3D transitions block the ability to scroll to the desired location during transition
+			// This ensures we jump to that spot after the fact, if we aren't there already.
+			if ( $.mobile.window.scrollTop() !== this.toScroll ) {
+				this.scrollPage();
+			}
+			if ( !this.sequential ) {
+				this.$to.addClass( $.mobile.activePageClass );
+			}
+			this.deferred.resolve( this.name, this.reverse, this.$to, this.$from, true );
+		},
+
+		doneOut: function( screenHeight, reverseClass, none, preventFocus ) {
+			this.beforeDoneOut();
+			this.startIn( screenHeight, reverseClass, none, preventFocus );
+		},
+
+		hideIn: function( callback ) {
+			// Prevent flickering in phonegap container: see comments at #4024 regarding iOS
+			this.$to.css( "z-index", -10 );
+			callback.call( this );
+			this.$to.css( "z-index", "" );
+		},
+
+		scrollPage: function() {
+			// By using scrollTo instead of silentScroll, we can keep things better in order
+			// Just to be precautios, disable scrollstart listening like silentScroll would
+			$.event.special.scrollstart.enabled = false;
+			//if we are hiding the url bar or the page was previously scrolled scroll to hide or return to position
+			if ( $.mobile.hideUrlBar || this.toScroll !== $.mobile.defaultHomeScroll ) {
+				window.scrollTo( 0, this.toScroll );
+			}
+
+			// reenable scrollstart listening like silentScroll would
+			setTimeout( function() {
+				$.event.special.scrollstart.enabled = true;
+			}, 150 );
+		},
+
+		startIn: function( screenHeight, reverseClass, none, preventFocus ) {
+			this.hideIn(function() {
+				this.$to.addClass( $.mobile.activePageClass + this.toPreClass );
+
+				// Send focus to page as it is now display: block
+				if ( !preventFocus ) {
+					$.mobile.focusPage( this.$to );
+				}
+
+				// Set to page height
+				this.$to.height( screenHeight + this.toScroll );
+
+                if ( !none ) {
+                    this.scrollPage();
+                }
+			});
+
+			this.$to
+				.removeClass( this.toPreClass )
+				.addClass( this.name + " in " + reverseClass );
+
+			if ( !none ) {
+				this.$to.animationComplete( $.proxy(function() {
+					this.doneIn();
+				}, this ));
+			} else {
+				this.doneIn();
+			}
+
+		},
+
+		startOut: function( screenHeight, reverseClass, none ) {
+			this.beforeStartOut( screenHeight, reverseClass, none );
+
+			// Set the from page's height and start it transitioning out
+			// Note: setting an explicit height helps eliminate tiling in the transitions
+			this.$from
+				.height( screenHeight + $.mobile.window.scrollTop() )
+				.addClass( this.name + " out" + reverseClass );
+		},
+
+		toggleViewportClass: function() {
+			$.mobile.pageContainer.toggleClass( "ui-mobile-viewport-transitioning viewport-" + this.name );
+		},
+
+		transition: function() {
+			// NOTE many of these could be calculated/recorded in the constructor, it's my
+			//      opinion that binding them as late as possible has value with regards to
+			//      better transitions with fewer bugs. Ie, it's not guaranteed that the
+			//      object will be created and transition will be run immediately after as
+			//      it is today. So we wait until transition is invoked to gather the following
+			var none,
+				reverseClass = this.reverse ? " reverse" : "",
+				screenHeight = $.mobile.getScreenHeight(),
+				maxTransitionOverride = $.mobile.maxTransitionWidth !== false &&
+					$.mobile.window.width() > $.mobile.maxTransitionWidth;
+
+			this.toScroll = $.mobile.navigate.history.getActive().lastScroll || $.mobile.defaultHomeScroll;
+
+			none = !$.support.cssTransitions || !$.support.cssAnimations ||
+				maxTransitionOverride || !this.name || this.name === "none" ||
+				Math.max( $.mobile.window.scrollTop(), this.toScroll ) >
+					$.mobile.getMaxScrollForTransition();
+
+			this.toggleViewportClass();
+
+			if ( this.$from && !none ) {
+				this.startOut( screenHeight, reverseClass, none );
+			} else {
+				this.doneOut( screenHeight, reverseClass, none, true );
+			}
+
+			return this.deferred.promise();
+		}
+	});
+})( jQuery, this );
+
+
+(function( $ ) {
+
+	$.mobile.SerialTransition = function() {
+		this.init.apply(this, arguments);
+	};
+
+	$.extend($.mobile.SerialTransition.prototype, $.mobile.Transition.prototype, {
+		sequential: true,
+
+		beforeDoneOut: function() {
+			if ( this.$from ) {
+				this.cleanFrom();
+			}
+		},
+
+		beforeStartOut: function( screenHeight, reverseClass, none ) {
+			this.$from.animationComplete($.proxy(function() {
+				this.doneOut( screenHeight, reverseClass, none );
+			}, this ));
+		}
+	});
+
+})( jQuery );
+
+
+(function( $ ) {
+
+	$.mobile.ConcurrentTransition = function() {
+		this.init.apply(this, arguments);
+	};
+
+	$.extend($.mobile.ConcurrentTransition.prototype, $.mobile.Transition.prototype, {
+		sequential: false,
+
+		beforeDoneIn: function() {
+			if ( this.$from ) {
+				this.cleanFrom();
+			}
+		},
+
+		beforeStartOut: function( screenHeight, reverseClass, none ) {
+			this.doneOut( screenHeight, reverseClass, none );
+		}
+	});
+
+})( jQuery );
+
+
+(function( $ ) {
+
+	// generate the handlers from the above
+	var defaultGetMaxScrollForTransition = function() {
+		return $.mobile.getScreenHeight() * 3;
+	};
+
+	//transition handler dictionary for 3rd party transitions
+	$.mobile.transitionHandlers = {
+		"sequential": $.mobile.SerialTransition,
+		"simultaneous": $.mobile.ConcurrentTransition
+	};
+
+	// Make our transition handler the public default.
+	$.mobile.defaultTransitionHandler = $.mobile.transitionHandlers.sequential;
+
+	$.mobile.transitionFallbacks = {};
+
+	// If transition is defined, check if css 3D transforms are supported, and if not, if a fallback is specified
+	$.mobile._maybeDegradeTransition = function( transition ) {
+		if ( transition && !$.support.cssTransform3d && $.mobile.transitionFallbacks[ transition ] ) {
+			transition = $.mobile.transitionFallbacks[ transition ];
+		}
+
+		return transition;
+	};
+
+	// Set the getMaxScrollForTransition to default if no implementation was set by user
+	$.mobile.getMaxScrollForTransition = $.mobile.getMaxScrollForTransition || defaultGetMaxScrollForTransition;
+
+})( jQuery );
+
+/*
+* fallback transition for flip in non-3D supporting browsers (which tend to handle complex transitions poorly in general
+*/
+
+(function( $, window, undefined ) {
+
+$.mobile.transitionFallbacks.flip = "fade";
+
+})( jQuery, this );
+
+/*
+* fallback transition for flow in non-3D supporting browsers (which tend to handle complex transitions poorly in general
+*/
+
+(function( $, window, undefined ) {
+
+$.mobile.transitionFallbacks.flow = "fade";
+
+})( jQuery, this );
+
+/*
+* fallback transition for pop in non-3D supporting browsers (which tend to handle complex transitions poorly in general
+*/
+
+(function( $, window, undefined ) {
+
+$.mobile.transitionFallbacks.pop = "fade";
+
+})( jQuery, this );
+
+/*
+* fallback transition for slide in non-3D supporting browsers (which tend to handle complex transitions poorly in general
+*/
+
+(function( $, window, undefined ) {
+
+// Use the simultaneous transitions handler for slide transitions
+$.mobile.transitionHandlers.slide = $.mobile.transitionHandlers.simultaneous;
+
+// Set the slide transitions's fallback to "fade"
+$.mobile.transitionFallbacks.slide = "fade";
+
+})( jQuery, this );
+
+/*
+* fallback transition for slidedown in non-3D supporting browsers (which tend to handle complex transitions poorly in general
+*/
+
+(function( $, window, undefined ) {
+
+$.mobile.transitionFallbacks.slidedown = "fade";
+
+})( jQuery, this );
+
+/*
+* fallback transition for slidefade in non-3D supporting browsers (which tend to handle complex transitions poorly in general
+*/
+
+(function( $, window, undefined ) {
+
+// Set the slide transitions's fallback to "fade"
+$.mobile.transitionFallbacks.slidefade = "fade";
+
+})( jQuery, this );
+
+/*
+* fallback transition for slideup in non-3D supporting browsers (which tend to handle complex transitions poorly in general
+*/
+
+(function( $, window, undefined ) {
+
+$.mobile.transitionFallbacks.slideup = "fade";
+
+})( jQuery, this );
+
+/*
+* fallback transition for turn in non-3D supporting browsers (which tend to handle complex transitions poorly in general
+*/
+
+(function( $, window, undefined ) {
+
+$.mobile.transitionFallbacks.turn = "fade";
+
+})( jQuery, this );
+
+
+(function( $, undefined ) {
+
+$.mobile.degradeInputs = {
+	color: false,
+	date: false,
+	datetime: false,
+	"datetime-local": false,
+	email: false,
+	month: false,
+	number: false,
+	range: "number",
+	search: "text",
+	tel: false,
+	time: false,
+	url: false,
+	week: false
+};
+// Backcompat remove in 1.5
+$.mobile.page.prototype.options.degradeInputs = $.mobile.degradeInputs;
+
+// Auto self-init widgets
+$.mobile.degradeInputsWithin = function( target ) {
+
+	target = $( target );
+
+	// Degrade inputs to avoid poorly implemented native functionality
+	target.find( "input" ).not( $.mobile.page.prototype.keepNativeSelector() ).each(function() {
+		var element = $( this ),
+			type = this.getAttribute( "type" ),
+			optType = $.mobile.degradeInputs[ type ] || "text",
+			html, hasType, findstr, repstr;
+
+		if ( $.mobile.degradeInputs[ type ] ) {
+			html = $( "<div>" ).html( element.clone() ).html();
+			// In IE browsers, the type sometimes doesn't exist in the cloned markup, so we replace the closing tag instead
+			hasType = html.indexOf( " type=" ) > -1;
+			findstr = hasType ? /\s+type=["']?\w+['"]?/ : /\/?>/;
+			repstr = " type=\"" + optType + "\" data-" + $.mobile.ns + "type=\"" + type + "\"" + ( hasType ? "" : ">" );
+
+			element.replaceWith( html.replace( findstr, repstr ) );
+		}
+	});
+
+};
+
+})( jQuery );
+
+(function( $, window, undefined ) {
+
+$.widget( "mobile.page", $.mobile.page, {
+	options: {
+
+		// Accepts left, right and none
+		closeBtn: "left",
+		closeBtnText: "Close",
+		overlayTheme: "a",
+		corners: true,
+		dialog: false
+	},
+
+	_create: function() {
+		this._super();
+		if ( this.options.dialog ) {
+
+			$.extend( this, {
+				_inner: this.element.children(),
+				_headerCloseButton: null
+			});
+
+			if ( !this.options.enhanced ) {
+				this._setCloseBtn( this.options.closeBtn );
+			}
+		}
+	},
+
+	_enhance: function() {
+		this._super();
+
+		// Class the markup for dialog styling and wrap interior
+		if ( this.options.dialog ) {
+			this.element.addClass( "ui-dialog" )
+				.wrapInner( $( "<div/>", {
+
+					// ARIA role
+					"role" : "dialog",
+					"class" : "ui-dialog-contain ui-overlay-shadow" +
+						( this.options.corners ? " ui-corner-all" : "" )
+				}));
+		}
+	},
+
+	_setOptions: function( options ) {
+		var closeButtonLocation, closeButtonText,
+			currentOpts = this.options;
+
+		if ( options.corners !== undefined ) {
+			this._inner.toggleClass( "ui-corner-all", !!options.corners );
+		}
+
+		if ( options.overlayTheme !== undefined ) {
+			if ( $.mobile.activePage[ 0 ] === this.element[ 0 ] ) {
+				currentOpts.overlayTheme = options.overlayTheme;
+				this._handlePageBeforeShow();
+			}
+		}
+
+		if ( options.closeBtnText !== undefined ) {
+			closeButtonLocation = currentOpts.closeBtn;
+			closeButtonText = options.closeBtnText;
+		}
+
+		if ( options.closeBtn !== undefined ) {
+			closeButtonLocation = options.closeBtn;
+		}
+
+		if ( closeButtonLocation ) {
+			this._setCloseBtn( closeButtonLocation, closeButtonText );
+		}
+
+		this._super( options );
+	},
+
+	_handlePageBeforeShow: function () {
+		if ( this.options.overlayTheme && this.options.dialog ) {
+			this.removeContainerBackground();
+			this.setContainerBackground( this.options.overlayTheme );
+		} else {
+			this._super();
+		}
+	},
+
+	_setCloseBtn: function( location, text ) {
+		var dst,
+			btn = this._headerCloseButton;
+
+		// Sanitize value
+		location = "left" === location ? "left" : "right" === location ? "right" : "none";
+
+		if ( "none" === location ) {
+			if ( btn ) {
+				btn.remove();
+				btn = null;
+			}
+		} else if ( btn ) {
+			btn.removeClass( "ui-btn-left ui-btn-right" ).addClass( "ui-btn-" + location );
+			if ( text ) {
+				btn.text( text );
+			}
+		} else {
+			dst = this._inner.find( ":jqmData(role='header')" ).first();
+			btn = $( "<a></a>", {
+					"href": "#",
+					"class": "ui-btn ui-corner-all ui-icon-delete ui-btn-icon-notext ui-btn-" + location
+				})
+				.attr( "data-" + $.mobile.ns + "rel", "back" )
+				.text( text || this.options.closeBtnText || "" )
+				.prependTo( dst );
+		}
+
+		this._headerCloseButton = btn;
+	}
+});
+
+})( jQuery, this );
+
+(function( $, window, undefined ) {
+
+$.widget( "mobile.dialog", {
+	options: {
+
+		// Accepts left, right and none
+		closeBtn: "left",
+		closeBtnText: "Close",
+		overlayTheme: "a",
+		corners: true
+	},
+
+	// Override the theme set by the page plugin on pageshow
+	_handlePageBeforeShow: function() {
+		this._isCloseable = true;
+		if ( this.options.overlayTheme ) {
+			this.element
+				.page( "removeContainerBackground" )
+				.page( "setContainerBackground", this.options.overlayTheme );
+		}
+	},
+
+	_handlePageBeforeHide: function() {
+		this._isCloseable = false;
+	},
+
+	// click and submit events:
+	// - clicks and submits should use the closing transition that the dialog
+	//   opened with unless a data-transition is specified on the link/form
+	// - if the click was on the close button, or the link has a data-rel="back"
+	//   it'll go back in history naturally
+	_handleVClickSubmit: function( event ) {
+		var attrs,
+			$target = $( event.target ).closest( event.type === "vclick" ? "a" : "form" );
+
+		if ( $target.length && !$target.jqmData( "transition" ) ) {
+			attrs = {};
+			attrs[ "data-" + $.mobile.ns + "transition" ] =
+				( $.mobile.navigate.history.getActive() || {} )[ "transition" ] ||
+				$.mobile.defaultDialogTransition;
+			attrs[ "data-" + $.mobile.ns + "direction" ] = "reverse";
+			$target.attr( attrs );
+		}
+	},
+
+	_create: function() {
+		var elem = this.element,
+			opts = this.options;
+
+		// Class the markup for dialog styling and wrap interior
+		elem.addClass( "ui-dialog" )
+			.wrapInner( $( "<div/>", {
+
+				// ARIA role
+				"role" : "dialog",
+				"class" : "ui-dialog-contain ui-overlay-shadow" +
+					( !!opts.corners ? " ui-corner-all" : "" )
+			}));
+
+		$.extend( this, {
+			_isCloseable: false,
+			_inner: elem.children(),
+			_headerCloseButton: null
+		});
+
+		this._on( elem, {
+			vclick: "_handleVClickSubmit",
+			submit: "_handleVClickSubmit",
+			pagebeforeshow: "_handlePageBeforeShow",
+			pagebeforehide: "_handlePageBeforeHide"
+		});
+
+		this._setCloseBtn( opts.closeBtn );
+	},
+
+	_setOptions: function( options ) {
+		var closeButtonLocation, closeButtonText,
+			currentOpts = this.options;
+
+		if ( options.corners !== undefined ) {
+			this._inner.toggleClass( "ui-corner-all", !!options.corners );
+		}
+
+		if ( options.overlayTheme !== undefined ) {
+			if ( $.mobile.activePage[ 0 ] === this.element[ 0 ] ) {
+				currentOpts.overlayTheme = options.overlayTheme;
+				this._handlePageBeforeShow();
+			}
+		}
+
+		if ( options.closeBtnText !== undefined ) {
+			closeButtonLocation = currentOpts.closeBtn;
+			closeButtonText = options.closeBtnText;
+		}
+
+		if ( options.closeBtn !== undefined ) {
+			closeButtonLocation = options.closeBtn;
+		}
+
+		if ( closeButtonLocation ) {
+			this._setCloseBtn( closeButtonLocation, closeButtonText );
+		}
+
+		this._super( options );
+	},
+
+	_setCloseBtn: function( location, text ) {
+		var dst,
+			btn = this._headerCloseButton;
+
+		// Sanitize value
+		location = "left" === location ? "left" : "right" === location ? "right" : "none";
+
+		if ( "none" === location ) {
+			if ( btn ) {
+				btn.remove();
+				btn = null;
+			}
+		} else if ( btn ) {
+			btn.removeClass( "ui-btn-left ui-btn-right" ).addClass( "ui-btn-" + location );
+			if ( text ) {
+				btn.text( text );
+			}
+		} else {
+			dst = this._inner.find( ":jqmData(role='header')" ).first();
+			btn = $( "<a></a>", {
+					"role": "button",
+					"href": "#",
+					"class": "ui-btn ui-corner-all ui-icon-delete ui-btn-icon-notext ui-btn-" + location
+				})
+				.text( text || this.options.closeBtnText || "" )
+				.prependTo( dst );
+			this._on( btn, { click: "close" } );
+		}
+
+		this._headerCloseButton = btn;
+	},
+
+	// Close method goes back in history
+	close: function() {
+		var hist = $.mobile.navigate.history;
+
+		if ( this._isCloseable ) {
+			this._isCloseable = false;
+			// If the hash listening is enabled and there is at least one preceding history
+			// entry it's ok to go back. Initial pages with the dialog hash state are an example
+			// where the stack check is necessary
+			if ( $.mobile.hashListeningEnabled && hist.activeIndex > 0 ) {
+				$.mobile.back();
+			} else {
+				$.mobile.pageContainer.pagecontainer( "back" );
+			}
+		}
+	}
+});
+
+})( jQuery, this );
+
+(function( $, undefined ) {
+
+var rInitialLetter = /([A-Z])/g,
+
+	// Construct iconpos class from iconpos value
+	iconposClass = function( iconpos ) {
+		return ( "ui-btn-icon-" + ( iconpos === null ? "left" : iconpos ) );
+	};
+
+$.widget( "mobile.collapsible", {
+	options: {
+		enhanced: false,
+		expandCueText: null,
+		collapseCueText: null,
+		collapsed: true,
+		heading: "h1,h2,h3,h4,h5,h6,legend",
+		collapsedIcon: null,
+		expandedIcon: null,
+		iconpos: null,
+		theme: null,
+		contentTheme: null,
+		inset: null,
+		corners: null,
+		mini: null
+	},
+
+	_create: function() {
+		var elem = this.element,
+			ui = {
+				accordion: elem
+					.closest( ":jqmData(role='collapsible-set')," +
+						":jqmData(role='collapsibleset')" +
+						( $.mobile.collapsibleset ? ", :mobile-collapsibleset" :
+							"" ) )
+					.addClass( "ui-collapsible-set" )
+			};
+
+		this._ui = ui;
+		this._renderedOptions = this._getOptions( this.options );
+
+		if ( this.options.enhanced ) {
+			ui.heading = this.element.children( ".ui-collapsible-heading" );
+			ui.content = ui.heading.next();
+			ui.anchor = ui.heading.children();
+			ui.status = ui.anchor.children( ".ui-collapsible-heading-status" );
+		} else {
+			this._enhance( elem, ui );
+		}
+
+		this._on( ui.heading, {
+			"tap": function() {
+				ui.heading.find( "a" ).first().addClass( $.mobile.activeBtnClass );
+			},
+
+			"click": function( event ) {
+				this._handleExpandCollapse( !ui.heading.hasClass( "ui-collapsible-heading-collapsed" ) );
+				event.preventDefault();
+				event.stopPropagation();
+			}
+		});
+	},
+
+	// Adjust the keys inside options for inherited values
+	_getOptions: function( options ) {
+		var key,
+			accordion = this._ui.accordion,
+			accordionWidget = this._ui.accordionWidget;
+
+		// Copy options
+		options = $.extend( {}, options );
+
+		if ( accordion.length && !accordionWidget ) {
+			this._ui.accordionWidget =
+			accordionWidget = accordion.data( "mobile-collapsibleset" );
+		}
+
+		for ( key in options ) {
+
+			// Retrieve the option value first from the options object passed in and, if
+			// null, from the parent accordion or, if that's null too, or if there's no
+			// parent accordion, then from the defaults.
+			options[ key ] =
+				( options[ key ] != null ) ? options[ key ] :
+				( accordionWidget ) ? accordionWidget.options[ key ] :
+				accordion.length ? $.mobile.getAttribute( accordion[ 0 ],
+					key.replace( rInitialLetter, "-$1" ).toLowerCase() ):
+				null;
+
+			if ( null == options[ key ] ) {
+				options[ key ] = $.mobile.collapsible.defaults[ key ];
+			}
+		}
+
+		return options;
+	},
+
+	_themeClassFromOption: function( prefix, value ) {
+		return ( value ? ( value === "none" ? "" : prefix + value ) : "" );
+	},
+
+	_enhance: function( elem, ui ) {
+		var iconclass,
+			opts = this._renderedOptions,
+			contentThemeClass = this._themeClassFromOption( "ui-body-", opts.contentTheme );
+
+		elem.addClass( "ui-collapsible " +
+			( opts.inset ? "ui-collapsible-inset " : "" ) +
+			( opts.inset && opts.corners ? "ui-corner-all " : "" ) +
+			( contentThemeClass ? "ui-collapsible-themed-content " : "" ) );
+		ui.originalHeading = elem.children( this.options.heading ).first(),
+		ui.content = elem
+			.wrapInner( "<div " +
+				"class='ui-collapsible-content " +
+				contentThemeClass + "'></div>" )
+			.children( ".ui-collapsible-content" ),
+		ui.heading = ui.originalHeading;
+
+		// Replace collapsibleHeading if it's a legend
+		if ( ui.heading.is( "legend" ) ) {
+			ui.heading = $( "<div role='heading'>"+ ui.heading.html() +"</div>" );
+			ui.placeholder = $( "<div><!-- placeholder for legend --></div>" ).insertBefore( ui.originalHeading );
+			ui.originalHeading.remove();
+		}
+
+		iconclass = ( opts.collapsed ? ( opts.collapsedIcon ? "ui-icon-" + opts.collapsedIcon : "" ):
+			( opts.expandedIcon ? "ui-icon-" + opts.expandedIcon : "" ) );
+
+		ui.status = $( "<span class='ui-collapsible-heading-status'></span>" );
+		ui.anchor = ui.heading
+			.detach()
+			//modify markup & attributes
+			.addClass( "ui-collapsible-heading" )
+			.append( ui.status )
+			.wrapInner( "<a href='#' class='ui-collapsible-heading-toggle'></a>" )
+			.find( "a" )
+				.first()
+				.addClass( "ui-btn " +
+					( iconclass ? iconclass + " " : "" ) +
+					( iconclass ? iconposClass( opts.iconpos ) +
+						" " : "" ) +
+					this._themeClassFromOption( "ui-btn-", opts.theme ) + " " +
+					( opts.mini ? "ui-mini " : "" ) );
+
+		//drop heading in before content
+		ui.heading.insertBefore( ui.content );
+
+		this._handleExpandCollapse( this.options.collapsed );
+
+		return ui;
+	},
+
+	refresh: function() {
+		this._applyOptions( this.options );
+		this._renderedOptions = this._getOptions( this.options );
+	},
+
+	_applyOptions: function( options ) {
+		var isCollapsed, newTheme, oldTheme, hasCorners, hasIcon,
+			elem = this.element,
+			currentOpts = this._renderedOptions,
+			ui = this._ui,
+			anchor = ui.anchor,
+			status = ui.status,
+			opts = this._getOptions( options );
+
+		// First and foremost we need to make sure the collapsible is in the proper
+		// state, in case somebody decided to change the collapsed option at the
+		// same time as another option
+		if ( options.collapsed !== undefined ) {
+			this._handleExpandCollapse( options.collapsed );
+		}
+
+		isCollapsed = elem.hasClass( "ui-collapsible-collapsed" );
+
+		// We only need to apply the cue text for the current state right away.
+		// The cue text for the alternate state will be stored in the options
+		// and applied the next time the collapsible's state is toggled
+		if ( isCollapsed ) {
+			if ( opts.expandCueText !== undefined ) {
+				status.text( opts.expandCueText );
+			}
+		} else {
+			if ( opts.collapseCueText !== undefined ) {
+				status.text( opts.collapseCueText );
+			}
+		}
+
+		// Update icon
+
+		// Is it supposed to have an icon?
+		hasIcon =
+
+			// If the collapsedIcon is being set, consult that
+			( opts.collapsedIcon !== undefined ? opts.collapsedIcon !== false :
+
+				// Otherwise consult the existing option value
+				currentOpts.collapsedIcon !== false );
+
+
+		// If any icon-related options have changed, make sure the new icon
+		// state is reflected by first removing all icon-related classes
+		// reflecting the current state and then adding all icon-related
+		// classes for the new state
+		if ( !( opts.iconpos === undefined &&
+			opts.collapsedIcon === undefined &&
+			opts.expandedIcon === undefined ) ) {
+
+			// Remove all current icon-related classes
+			anchor.removeClass( [ iconposClass( currentOpts.iconpos ) ]
+				.concat( ( currentOpts.expandedIcon ?
+					[ "ui-icon-" + currentOpts.expandedIcon ] : [] ) )
+				.concat( ( currentOpts.collapsedIcon ?
+					[ "ui-icon-" + currentOpts.collapsedIcon ] : [] ) )
+				.join( " " ) );
+
+			// Add new classes if an icon is supposed to be present
+			if ( hasIcon ) {
+				anchor.addClass(
+					[ iconposClass( opts.iconpos !== undefined ?
+						opts.iconpos : currentOpts.iconpos ) ]
+						.concat( isCollapsed ?
+							[ "ui-icon-" + ( opts.collapsedIcon !== undefined ?
+								opts.collapsedIcon :
+								currentOpts.collapsedIcon ) ] :
+							[ "ui-icon-" + ( opts.expandedIcon !== undefined ?
+								opts.expandedIcon :
+								currentOpts.expandedIcon ) ] )
+						.join( " " ) );
+			}
+		}
+
+		if ( opts.theme !== undefined ) {
+			oldTheme = this._themeClassFromOption( "ui-btn-", currentOpts.theme );
+			newTheme = this._themeClassFromOption( "ui-btn-", opts.theme );
+			anchor.removeClass( oldTheme ).addClass( newTheme );
+		}
+
+		if ( opts.contentTheme !== undefined ) {
+			oldTheme = this._themeClassFromOption( "ui-body-",
+				currentOpts.contentTheme );
+			newTheme = this._themeClassFromOption( "ui-body-",
+				opts.contentTheme );
+			ui.content.removeClass( oldTheme ).addClass( newTheme );
+		}
+
+		if ( opts.inset !== undefined ) {
+			elem.toggleClass( "ui-collapsible-inset", opts.inset );
+			hasCorners = !!( opts.inset && ( opts.corners || currentOpts.corners ) );
+		}
+
+		if ( opts.corners !== undefined ) {
+			hasCorners = !!( opts.corners && ( opts.inset || currentOpts.inset ) );
+		}
+
+		if ( hasCorners !== undefined ) {
+			elem.toggleClass( "ui-corner-all", hasCorners );
+		}
+
+		if ( opts.mini !== undefined ) {
+			anchor.toggleClass( "ui-mini", opts.mini );
+		}
+	},
+
+	_setOptions: function( options ) {
+		this._applyOptions( options );
+		this._super( options );
+		this._renderedOptions = this._getOptions( this.options );
+	},
+
+	_handleExpandCollapse: function( isCollapse ) {
+		var opts = this._renderedOptions,
+			ui = this._ui;
+
+		ui.status.text( isCollapse ? opts.expandCueText : opts.collapseCueText );
+		ui.heading
+			.toggleClass( "ui-collapsible-heading-collapsed", isCollapse )
+			.find( "a" ).first()
+			.toggleClass( "ui-icon-" + opts.expandedIcon, !isCollapse )
+
+			// logic or cause same icon for expanded/collapsed state would remove the ui-icon-class
+			.toggleClass( "ui-icon-" + opts.collapsedIcon, ( isCollapse || opts.expandedIcon === opts.collapsedIcon ) )
+			.removeClass( $.mobile.activeBtnClass );
+
+		this.element.toggleClass( "ui-collapsible-collapsed", isCollapse );
+		ui.content
+			.toggleClass( "ui-collapsible-content-collapsed", isCollapse )
+			.attr( "aria-hidden", isCollapse )
+			.trigger( "updatelayout" );
+		this.options.collapsed = isCollapse;
+		this._trigger( isCollapse ? "collapse" : "expand" );
+	},
+
+	expand: function() {
+		this._handleExpandCollapse( false );
+	},
+
+	collapse: function() {
+		this._handleExpandCollapse( true );
+	},
+
+	_destroy: function() {
+		var ui = this._ui,
+			opts = this.options;
+
+		if ( opts.enhanced ) {
+			return;
+		}
+
+		if ( ui.placeholder ) {
+			ui.originalHeading.insertBefore( ui.placeholder );
+			ui.placeholder.remove();
+			ui.heading.remove();
+		} else {
+			ui.status.remove();
+			ui.heading
+				.removeClass( "ui-collapsible-heading ui-collapsible-heading-collapsed" )
+				.children()
+					.contents()
+						.unwrap();
+		}
+
+		ui.anchor.contents().unwrap();
+		ui.content.contents().unwrap();
+		this.element
+			.removeClass( "ui-collapsible ui-collapsible-collapsed " +
+				"ui-collapsible-themed-content ui-collapsible-inset ui-corner-all" );
+	}
+});
+
+// Defaults to be used by all instances of collapsible if per-instance values
+// are unset or if nothing is specified by way of inheritance from an accordion.
+// Note that this hash does not contain options "collapsed" or "heading",
+// because those are not inheritable.
+$.mobile.collapsible.defaults = {
+	expandCueText: " click to expand contents",
+	collapseCueText: " click to collapse contents",
+	collapsedIcon: "plus",
+	contentTheme: "inherit",
+	expandedIcon: "minus",
+	iconpos: "left",
+	inset: true,
+	corners: true,
+	theme: "inherit",
+	mini: false
+};
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+var uiScreenHiddenRegex = /\bui-screen-hidden\b/;
+function noHiddenClass( elements ) {
+	var index,
+		length = elements.length,
+		result = [];
+
+	for ( index = 0; index < length; index++ ) {
+		if ( !elements[ index ].className.match( uiScreenHiddenRegex ) ) {
+			result.push( elements[ index ] );
+		}
+	}
+
+	return $( result );
+}
+
+$.mobile.behaviors.addFirstLastClasses = {
+	_getVisibles: function( $els, create ) {
+		var visibles;
+
+		if ( create ) {
+			visibles = noHiddenClass( $els );
+		} else {
+			visibles = $els.filter( ":visible" );
+			if ( visibles.length === 0 ) {
+				visibles = noHiddenClass( $els );
+			}
+		}
+
+		return visibles;
+	},
+
+	_addFirstLastClasses: function( $els, $visibles, create ) {
+		$els.removeClass( "ui-first-child ui-last-child" );
+		$visibles.eq( 0 ).addClass( "ui-first-child" ).end().last().addClass( "ui-last-child" );
+		if ( !create ) {
+			this.element.trigger( "updatelayout" );
+		}
+	},
+
+	_removeFirstLastClasses: function( $els ) {
+		$els.removeClass( "ui-first-child ui-last-child" );
+	}
+};
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+var childCollapsiblesSelector = ":mobile-collapsible, " + $.mobile.collapsible.initSelector;
+
+$.widget( "mobile.collapsibleset", $.extend( {
+
+	// The initSelector is deprecated as of 1.4.0. In 1.5.0 we will use
+	// :jqmData(role='collapsibleset') which will allow us to get rid of the line
+	// below altogether, because the autoinit will generate such an initSelector
+	initSelector: ":jqmData(role='collapsible-set'),:jqmData(role='collapsibleset')",
+
+	options: $.extend( {
+		enhanced: false
+	}, $.mobile.collapsible.defaults ),
+
+	_handleCollapsibleExpand: function( event ) {
+		var closestCollapsible = $( event.target ).closest( ".ui-collapsible" );
+
+		if ( closestCollapsible.parent().is( ":mobile-collapsibleset, :jqmData(role='collapsible-set')" ) ) {
+			closestCollapsible
+				.siblings( ".ui-collapsible:not(.ui-collapsible-collapsed)" )
+				.collapsible( "collapse" );
+		}
+	},
+
+	_create: function() {
+		var elem = this.element,
+			opts = this.options;
+
+		$.extend( this, {
+			_classes: ""
+		});
+
+		if ( !opts.enhanced ) {
+			elem.addClass( "ui-collapsible-set " +
+				this._themeClassFromOption( "ui-group-theme-", opts.theme ) + " " +
+				( opts.corners && opts.inset ? "ui-corner-all " : "" ) );
+			this.element.find( $.mobile.collapsible.initSelector ).collapsible();
+		}
+
+		this._on( elem, { collapsibleexpand: "_handleCollapsibleExpand" } );
+	},
+
+	_themeClassFromOption: function( prefix, value ) {
+		return ( value ? ( value === "none" ? "" : prefix + value ) : "" );
+	},
+
+	_init: function() {
+		this._refresh( true );
+
+		// Because the corners are handled by the collapsible itself and the default state is collapsed
+		// That was causing https://github.com/jquery/jquery-mobile/issues/4116
+		this.element
+			.children( childCollapsiblesSelector )
+			.filter( ":jqmData(collapsed='false')" )
+			.collapsible( "expand" );
+	},
+
+	_setOptions: function( options ) {
+		var ret, hasCorners,
+			elem = this.element,
+			themeClass = this._themeClassFromOption( "ui-group-theme-", options.theme );
+
+		if ( themeClass ) {
+			elem
+				.removeClass( this._themeClassFromOption( "ui-group-theme-", this.options.theme ) )
+				.addClass( themeClass );
+		}
+
+		if ( options.inset !== undefined ) {
+			hasCorners = !!( options.inset && ( options.corners || this.options.corners ) );
+		}
+
+		if ( options.corners !== undefined ) {
+			hasCorners = !!( options.corners && ( options.inset || this.options.inset ) );
+		}
+
+		if ( hasCorners !== undefined ) {
+			elem.toggleClass( "ui-corner-all", hasCorners );
+		}
+
+		ret = this._super( options );
+		this.element.children( ":mobile-collapsible" ).collapsible( "refresh" );
+		return ret;
+	},
+
+	_destroy: function() {
+		var el = this.element;
+
+		this._removeFirstLastClasses( el.children( childCollapsiblesSelector ) );
+		el
+			.removeClass( "ui-collapsible-set ui-corner-all " +
+				this._themeClassFromOption( "ui-group-theme-", this.options.theme ) )
+			.children( ":mobile-collapsible" )
+			.collapsible( "destroy" );
+	},
+
+	_refresh: function( create ) {
+		var collapsiblesInSet = this.element.children( childCollapsiblesSelector );
+
+		this.element.find( $.mobile.collapsible.initSelector ).not( ".ui-collapsible" ).collapsible();
+
+		this._addFirstLastClasses( collapsiblesInSet, this._getVisibles( collapsiblesInSet, create ), create );
+	},
+
+	refresh: function() {
+		this._refresh( false );
+	}
+}, $.mobile.behaviors.addFirstLastClasses ) );
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+// Deprecated in 1.4
+$.fn.fieldcontain = function(/* options */) {
+	return this.addClass( "ui-field-contain" );
+};
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.fn.grid = function( options ) {
+	return this.each(function() {
+
+		var $this = $( this ),
+			o = $.extend({
+				grid: null
+			}, options ),
+			$kids = $this.children(),
+			gridCols = { solo:1, a:2, b:3, c:4, d:5 },
+			grid = o.grid,
+			iterator,
+			letter;
+
+			if ( !grid ) {
+				if ( $kids.length <= 5 ) {
+					for ( letter in gridCols ) {
+						if ( gridCols[ letter ] === $kids.length ) {
+							grid = letter;
+						}
+					}
+				} else {
+					grid = "a";
+					$this.addClass( "ui-grid-duo" );
+				}
+			}
+			iterator = gridCols[grid];
+
+		$this.addClass( "ui-grid-" + grid );
+
+		$kids.filter( ":nth-child(" + iterator + "n+1)" ).addClass( "ui-block-a" );
+
+		if ( iterator > 1 ) {
+			$kids.filter( ":nth-child(" + iterator + "n+2)" ).addClass( "ui-block-b" );
+		}
+		if ( iterator > 2 ) {
+			$kids.filter( ":nth-child(" + iterator + "n+3)" ).addClass( "ui-block-c" );
+		}
+		if ( iterator > 3 ) {
+			$kids.filter( ":nth-child(" + iterator + "n+4)" ).addClass( "ui-block-d" );
+		}
+		if ( iterator > 4 ) {
+			$kids.filter( ":nth-child(" + iterator + "n+5)" ).addClass( "ui-block-e" );
+		}
+	});
+};
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.widget( "mobile.navbar", {
+	options: {
+		iconpos: "top",
+		grid: null
+	},
+
+	_create: function() {
+
+		var $navbar = this.element,
+			$navbtns = $navbar.find( "a, button" ),
+			iconpos = $navbtns.filter( ":jqmData(icon)" ).length ? this.options.iconpos : undefined;
+
+		$navbar.addClass( "ui-navbar" )
+			.attr( "role", "navigation" )
+			.find( "ul" )
+			.jqmEnhanceable()
+			.grid({ grid: this.options.grid });
+
+		$navbtns
+			.each( function() {
+				var icon = $.mobile.getAttribute( this, "icon" ),
+					theme = $.mobile.getAttribute( this, "theme" ),
+					classes = "ui-btn";
+
+				if ( theme ) {
+					classes += " ui-btn-" + theme;
+				}
+				if ( icon ) {
+					classes += " ui-icon-" + icon + " ui-btn-icon-" + iconpos;
+				}
+				$( this ).addClass( classes );
+			});
+
+		$navbar.delegate( "a", "vclick", function( /* event */ ) {
+			var activeBtn = $( this );
+
+			if ( !( activeBtn.hasClass( "ui-state-disabled" ) ||
+
+				// DEPRECATED as of 1.4.0 - remove after 1.4.0 release
+				// only ui-state-disabled should be present thereafter
+				activeBtn.hasClass( "ui-disabled" ) ||
+				activeBtn.hasClass( $.mobile.activeBtnClass ) ) ) {
+
+				$navbtns.removeClass( $.mobile.activeBtnClass );
+				activeBtn.addClass( $.mobile.activeBtnClass );
+
+				// The code below is a workaround to fix #1181
+				$( document ).one( "pagehide", function() {
+					activeBtn.removeClass( $.mobile.activeBtnClass );
+				});
+			}
+		});
+
+		// Buttons in the navbar with ui-state-persist class should regain their active state before page show
+		$navbar.closest( ".ui-page" ).bind( "pagebeforeshow", function() {
+			$navbtns.filter( ".ui-state-persist" ).addClass( $.mobile.activeBtnClass );
+		});
+	}
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+var getAttr = $.mobile.getAttribute;
+
+$.widget( "mobile.listview", $.extend( {
+
+	options: {
+		theme: null,
+		countTheme: null, /* Deprecated in 1.4 */
+		dividerTheme: null,
+		icon: "carat-r",
+		splitIcon: "carat-r",
+		splitTheme: null,
+		corners: true,
+		shadow: true,
+		inset: false
+	},
+
+	_create: function() {
+		var t = this,
+			listviewClasses = "";
+
+		listviewClasses += t.options.inset ? " ui-listview-inset" : "";
+
+		if ( !!t.options.inset ) {
+			listviewClasses += t.options.corners ? " ui-corner-all" : "";
+			listviewClasses += t.options.shadow ? " ui-shadow" : "";
+		}
+
+		// create listview markup
+		t.element.addClass( " ui-listview" + listviewClasses );
+
+		t.refresh( true );
+	},
+
+	// TODO: Remove in 1.5
+	_findFirstElementByTagName: function( ele, nextProp, lcName, ucName ) {
+		var dict = {};
+		dict[ lcName ] = dict[ ucName ] = true;
+		while ( ele ) {
+			if ( dict[ ele.nodeName ] ) {
+				return ele;
+			}
+			ele = ele[ nextProp ];
+		}
+		return null;
+	},
+	// TODO: Remove in 1.5
+	_addThumbClasses: function( containers ) {
+		var i, img, len = containers.length;
+		for ( i = 0; i < len; i++ ) {
+			img = $( this._findFirstElementByTagName( containers[ i ].firstChild, "nextSibling", "img", "IMG" ) );
+			if ( img.length ) {
+				$( this._findFirstElementByTagName( img[ 0 ].parentNode, "parentNode", "li", "LI" ) ).addClass( img.hasClass( "ui-li-icon" ) ? "ui-li-has-icon" : "ui-li-has-thumb" );
+			}
+		}
+	},
+
+	_getChildrenByTagName: function( ele, lcName, ucName ) {
+		var results = [],
+			dict = {};
+		dict[ lcName ] = dict[ ucName ] = true;
+		ele = ele.firstChild;
+		while ( ele ) {
+			if ( dict[ ele.nodeName ] ) {
+				results.push( ele );
+			}
+			ele = ele.nextSibling;
+		}
+		return $( results );
+	},
+
+	_beforeListviewRefresh: $.noop,
+	_afterListviewRefresh: $.noop,
+
+	refresh: function( create ) {
+		var buttonClass, pos, numli, item, itemClass, itemTheme, itemIcon, icon, a,
+			isDivider, startCount, newStartCount, value, last, splittheme, splitThemeClass, spliticon,
+			altButtonClass, dividerTheme, li,
+			o = this.options,
+			$list = this.element,
+			ol = !!$.nodeName( $list[ 0 ], "ol" ),
+			start = $list.attr( "start" ),
+			itemClassDict = {},
+			countBubbles = $list.find( ".ui-li-count" ),
+			countTheme = getAttr( $list[ 0 ], "counttheme" ) || this.options.countTheme,
+			countThemeClass = countTheme ? "ui-body-" + countTheme : "ui-body-inherit";
+
+		if ( o.theme ) {
+			$list.addClass( "ui-group-theme-" + o.theme );
+		}
+
+		// Check if a start attribute has been set while taking a value of 0 into account
+		if ( ol && ( start || start === 0 ) ) {
+			startCount = parseInt( start, 10 ) - 1;
+			$list.css( "counter-reset", "listnumbering " + startCount );
+		}
+
+		this._beforeListviewRefresh();
+
+		li = this._getChildrenByTagName( $list[ 0 ], "li", "LI" );
+
+		for ( pos = 0, numli = li.length; pos < numli; pos++ ) {
+			item = li.eq( pos );
+			itemClass = "";
+
+			if ( create || item[ 0 ].className.search( /\bui-li-static\b|\bui-li-divider\b/ ) < 0 ) {
+				a = this._getChildrenByTagName( item[ 0 ], "a", "A" );
+				isDivider = ( getAttr( item[ 0 ], "role" ) === "list-divider" );
+				value = item.attr( "value" );
+				itemTheme = getAttr( item[ 0 ], "theme" );
+
+				if ( a.length && a[ 0 ].className.search( /\bui-btn\b/ ) < 0 && !isDivider ) {
+					itemIcon = getAttr( item[ 0 ], "icon" );
+					icon = ( itemIcon === false ) ? false : ( itemIcon || o.icon );
+
+					// TODO: Remove in 1.5 together with links.js (links.js / .ui-link deprecated in 1.4)
+					a.removeClass( "ui-link" );
+
+					buttonClass = "ui-btn";
+
+					if ( itemTheme ) {
+						buttonClass += " ui-btn-" + itemTheme;
+					}
+
+					if ( a.length > 1 ) {
+						itemClass = "ui-li-has-alt";
+
+						last = a.last();
+						splittheme = getAttr( last[ 0 ], "theme" ) || o.splitTheme || getAttr( item[ 0 ], "theme", true );
+						splitThemeClass = splittheme ? " ui-btn-" + splittheme : "";
+						spliticon = getAttr( last[ 0 ], "icon" ) || getAttr( item[ 0 ], "icon" ) || o.splitIcon;
+						altButtonClass = "ui-btn ui-btn-icon-notext ui-icon-" + spliticon + splitThemeClass;
+
+						last
+							.attr( "title", $.trim( last.getEncodedText() ) )
+							.addClass( altButtonClass )
+							.empty();
+
+						// Reduce to the first anchor, because only the first gets the buttonClass
+						a = a.first();
+					} else if ( icon ) {
+						buttonClass += " ui-btn-icon-right ui-icon-" + icon;
+					}
+
+					// Apply buttonClass to the (first) anchor
+					a.addClass( buttonClass );
+				} else if ( isDivider ) {
+					dividerTheme = ( getAttr( item[ 0 ], "theme" ) || o.dividerTheme || o.theme );
+
+					itemClass = "ui-li-divider ui-bar-" + ( dividerTheme ? dividerTheme : "inherit" );
+
+					item.attr( "role", "heading" );
+				} else if ( a.length <= 0 ) {
+					itemClass = "ui-li-static ui-body-" + ( itemTheme ? itemTheme : "inherit" );
+				}
+				if ( ol && value ) {
+					newStartCount = parseInt( value , 10 ) - 1;
+
+					item.css( "counter-reset", "listnumbering " + newStartCount );
+				}
+			}
+
+			// Instead of setting item class directly on the list item
+			// at this point in time, push the item into a dictionary
+			// that tells us what class to set on it so we can do this after this
+			// processing loop is finished.
+
+			if ( !itemClassDict[ itemClass ] ) {
+				itemClassDict[ itemClass ] = [];
+			}
+
+			itemClassDict[ itemClass ].push( item[ 0 ] );
+		}
+
+		// Set the appropriate listview item classes on each list item.
+		// The main reason we didn't do this
+		// in the for-loop above is because we can eliminate per-item function overhead
+		// by calling addClass() and children() once or twice afterwards. This
+		// can give us a significant boost on platforms like WP7.5.
+
+		for ( itemClass in itemClassDict ) {
+			$( itemClassDict[ itemClass ] ).addClass( itemClass );
+		}
+
+		countBubbles.each( function() {
+			$( this ).closest( "li" ).addClass( "ui-li-has-count" );
+		});
+		if ( countThemeClass ) {
+			countBubbles.not( "[class*='ui-body-']" ).addClass( countThemeClass );
+		}
+
+		// Deprecated in 1.4. From 1.5 you have to add class ui-li-has-thumb or ui-li-has-icon to the LI.
+		this._addThumbClasses( li );
+		this._addThumbClasses( li.find( ".ui-btn" ) );
+
+		this._afterListviewRefresh();
+
+		this._addFirstLastClasses( li, this._getVisibles( li, create ), create );
+	}
+}, $.mobile.behaviors.addFirstLastClasses ) );
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+function defaultAutodividersSelector( elt ) {
+	// look for the text in the given element
+	var text = $.trim( elt.text() ) || null;
+
+	if ( !text ) {
+		return null;
+	}
+
+	// create the text for the divider (first uppercased letter)
+	text = text.slice( 0, 1 ).toUpperCase();
+
+	return text;
+}
+
+$.widget( "mobile.listview", $.mobile.listview, {
+	options: {
+		autodividers: false,
+		autodividersSelector: defaultAutodividersSelector
+	},
+
+	_beforeListviewRefresh: function() {
+		if ( this.options.autodividers ) {
+			this._replaceDividers();
+			this._superApply( arguments );
+		}
+	},
+
+	_replaceDividers: function() {
+		var i, lis, li, dividerText,
+			lastDividerText = null,
+			list = this.element,
+			divider;
+
+		list.children( "li:jqmData(role='list-divider')" ).remove();
+
+		lis = list.children( "li" );
+
+		for ( i = 0; i < lis.length ; i++ ) {
+			li = lis[ i ];
+			dividerText = this.options.autodividersSelector( $( li ) );
+
+			if ( dividerText && lastDividerText !== dividerText ) {
+				divider = document.createElement( "li" );
+				divider.appendChild( document.createTextNode( dividerText ) );
+				divider.setAttribute( "data-" + $.mobile.ns + "role", "list-divider" );
+				li.parentNode.insertBefore( divider, li );
+			}
+
+			lastDividerText = dividerText;
+		}
+	}
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+var rdivider = /(^|\s)ui-li-divider($|\s)/,
+	rhidden = /(^|\s)ui-screen-hidden($|\s)/;
+
+$.widget( "mobile.listview", $.mobile.listview, {
+	options: {
+		hideDividers: false
+	},
+
+	_afterListviewRefresh: function() {
+		var items, idx, item, hideDivider = true;
+
+		this._superApply( arguments );
+
+		if ( this.options.hideDividers ) {
+			items = this._getChildrenByTagName( this.element[ 0 ], "li", "LI" );
+			for ( idx = items.length - 1 ; idx > -1 ; idx-- ) {
+				item = items[ idx ];
+				if ( item.className.match( rdivider ) ) {
+					if ( hideDivider ) {
+						item.className = item.className + " ui-screen-hidden";
+					}
+					hideDivider = true;
+				} else {
+					if ( !item.className.match( rhidden ) ) {
+						hideDivider = false;
+					}
+				}
+			}
+		}
+	}
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.mobile.nojs = function( target ) {
+	$( ":jqmData(role='nojs')", target ).addClass( "ui-nojs" );
+};
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.mobile.behaviors.formReset = {
+	_handleFormReset: function() {
+		this._on( this.element.closest( "form" ), {
+			reset: function() {
+				this._delay( "_reset" );
+			}
+		});
+	}
+};
+
+})( jQuery );
+
+/*
+* "checkboxradio" plugin
+*/
+
+(function( $, undefined ) {
+
+var escapeId = $.mobile.path.hashToSelector;
+
+$.widget( "mobile.checkboxradio", $.extend( {
+
+	initSelector: "input:not( :jqmData(role='flipswitch' ) )[type='checkbox'],input[type='radio']:not( :jqmData(role='flipswitch' ))",
+
+	options: {
+		theme: "inherit",
+		mini: false,
+		wrapperClass: null,
+		enhanced: false,
+		iconpos: "left"
+
+	},
+	_create: function() {
+		var input = this.element,
+			o = this.options,
+			inheritAttr = function( input, dataAttr ) {
+				return input.jqmData( dataAttr ) ||
+					input.closest( "form, fieldset" ).jqmData( dataAttr );
+			},
+			label = this.options.enhanced ?
+				{
+					element: this.element.siblings( "label" ),
+					isParent: false
+				} :
+				this._findLabel(),
+			inputtype = input[0].type,
+			checkedClass = "ui-" + inputtype + "-on",
+			uncheckedClass = "ui-" + inputtype + "-off";
+
+		if ( inputtype !== "checkbox" && inputtype !== "radio" ) {
+			return;
+		}
+
+		if ( this.element[0].disabled ) {
+			this.options.disabled = true;
+		}
+
+		o.iconpos = inheritAttr( input, "iconpos" ) ||
+			label.element.attr( "data-" + $.mobile.ns + "iconpos" ) || o.iconpos,
+
+		// Establish options
+		o.mini = inheritAttr( input, "mini" ) || o.mini;
+
+		// Expose for other methods
+		$.extend( this, {
+			input: input,
+			label: label.element,
+			labelIsParent: label.isParent,
+			inputtype: inputtype,
+			checkedClass: checkedClass,
+			uncheckedClass: uncheckedClass
+		});
+
+		if ( !this.options.enhanced ) {
+			this._enhance();
+		}
+
+		this._on( label.element, {
+			vmouseover: "_handleLabelVMouseOver",
+			vclick: "_handleLabelVClick"
+		});
+
+		this._on( input, {
+			vmousedown: "_cacheVals",
+			vclick: "_handleInputVClick",
+			focus: "_handleInputFocus",
+			blur: "_handleInputBlur"
+		});
+
+		this._handleFormReset();
+		this.refresh();
+	},
+
+	_findLabel: function() {
+		var parentLabel, label, isParent,
+			input = this.element,
+			labelsList = input[ 0 ].labels;
+
+		if( labelsList && labelsList.length > 0 ) {
+			label = $( labelsList[ 0 ] );
+			isParent = $.contains( label[ 0 ], input[ 0 ] );
+		} else {
+			parentLabel = input.closest( "label" );
+			isParent = ( parentLabel.length > 0 );
+
+			// NOTE: Windows Phone could not find the label through a selector
+			// filter works though.
+			label = isParent ? parentLabel :
+				$( this.document[ 0 ].getElementsByTagName( "label" ) )
+					.filter( "[for='" + escapeId( input[ 0 ].id ) + "']" )
+					.first();
+		}
+
+		return {
+			element: label,
+			isParent: isParent
+		};
+	},
+
+	_enhance: function() {
+		this.label.addClass( "ui-btn ui-corner-all");
+
+		if ( this.labelIsParent ) {
+			this.input.add( this.label ).wrapAll( this._wrapper() );
+		} else {
+			//this.element.replaceWith( this.input.add( this.label ).wrapAll( this._wrapper() ) );
+			this.element.wrap( this._wrapper() );
+			this.element.parent().prepend( this.label );
+		}
+
+		// Wrap the input + label in a div
+
+		this._setOptions({
+			"theme": this.options.theme,
+			"iconpos": this.options.iconpos,
+			"mini": this.options.mini
+		});
+
+	},
+
+	_wrapper: function() {
+		return $( "<div class='"  +
+			( this.options.wrapperClass ? this.options.wrapperClass : "" ) +
+			" ui-" + this.inputtype +
+			( this.options.disabled ? " ui-state-disabled" : "" ) + "' ></div>" );
+	},
+
+	_handleInputFocus: function() {
+		this.label.addClass( $.mobile.focusClass );
+	},
+
+	_handleInputBlur: function() {
+		this.label.removeClass( $.mobile.focusClass );
+	},
+
+	_handleInputVClick: function() {
+		// Adds checked attribute to checked input when keyboard is used
+		this.element.prop( "checked", this.element.is( ":checked" ) );
+		this._getInputSet().not( this.element ).prop( "checked", false );
+		this._updateAll( true );
+	},
+
+	_handleLabelVMouseOver: function( event ) {
+		if ( this.label.parent().hasClass( "ui-state-disabled" ) ) {
+			event.stopPropagation();
+		}
+	},
+
+	_handleLabelVClick: function( event ) {
+		var input = this.element;
+
+		if ( input.is( ":disabled" ) ) {
+			event.preventDefault();
+			return;
+		}
+
+		this._cacheVals();
+
+		input.prop( "checked", this.inputtype === "radio" && true || !input.prop( "checked" ) );
+
+		// trigger click handler's bound directly to the input as a substitute for
+		// how label clicks behave normally in the browsers
+		// TODO: it would be nice to let the browser's handle the clicks and pass them
+		//       through to the associate input. we can swallow that click at the parent
+		//       wrapper element level
+		input.triggerHandler( "click" );
+
+		// Input set for common radio buttons will contain all the radio
+		// buttons, but will not for checkboxes. clearing the checked status
+		// of other radios ensures the active button state is applied properly
+		this._getInputSet().not( input ).prop( "checked", false );
+
+		this._updateAll();
+		return false;
+	},
+
+	_cacheVals: function() {
+		this._getInputSet().each( function() {
+			$( this ).attr("data-" + $.mobile.ns + "cacheVal", this.checked );
+		});
+	},
+
+	// Returns those radio buttons that are supposed to be in the same group as
+	// this radio button. In the case of a checkbox or a radio lacking a name
+	// attribute, it returns this.element.
+	_getInputSet: function() {
+		var selector, formId,
+			radio = this.element[ 0 ],
+			name = radio.name,
+			form = radio.form,
+			doc = this.element.parents().last().get( 0 ),
+
+			// A radio is always a member of its own group
+			radios = this.element;
+
+		// Only start running selectors if this is an attached radio button with a name
+		if ( name && this.inputtype === "radio" && doc ) {
+			selector = "input[type='radio'][name='" + escapeId( name ) + "']";
+
+			// If we're inside a form
+			if ( form ) {
+				formId = form.getAttribute( "id" );
+
+				// If the form has an ID, collect radios scattered throught the document which
+				// nevertheless are part of the form by way of the value of their form attribute
+				if ( formId ) {
+					radios = $( selector + "[form='" + escapeId( formId ) + "']", doc );
+				}
+
+				// Also add to those the radios in the form itself
+				radios = $( form ).find( selector ).filter( function() {
+
+					// Some radios inside the form may belong to some other form by virtue of
+					// having a form attribute defined on them, so we must filter them out here
+					return ( this.form === form );
+				}).add( radios );
+
+			// If we're outside a form
+			} else {
+
+				// Collect all those radios which are also outside of a form and match our name
+				radios = $( selector, doc ).filter( function() {
+					return !this.form;
+				});
+			}
+		}
+		return radios;
+	},
+
+	_updateAll: function( changeTriggered ) {
+		var self = this;
+
+		this._getInputSet().each( function() {
+			var $this = $( this );
+
+			if ( ( this.checked || self.inputtype === "checkbox" ) && !changeTriggered ) {
+				$this.trigger( "change" );
+			}
+		})
+		.checkboxradio( "refresh" );
+	},
+
+	_reset: function() {
+		this.refresh();
+	},
+
+	// Is the widget supposed to display an icon?
+	_hasIcon: function() {
+		var controlgroup, controlgroupWidget,
+			controlgroupConstructor = $.mobile.controlgroup;
+
+		// If the controlgroup widget is defined ...
+		if ( controlgroupConstructor ) {
+			controlgroup = this.element.closest(
+				":mobile-controlgroup," +
+				controlgroupConstructor.prototype.initSelector );
+
+			// ... and the checkbox is in a controlgroup ...
+			if ( controlgroup.length > 0 ) {
+
+				// ... look for a controlgroup widget instance, and ...
+				controlgroupWidget = $.data( controlgroup[ 0 ], "mobile-controlgroup" );
+
+				// ... if found, decide based on the option value, ...
+				return ( ( controlgroupWidget ? controlgroupWidget.options.type :
+
+					// ... otherwise decide based on the "type" data attribute.
+					controlgroup.attr( "data-" + $.mobile.ns + "type" ) ) !== "horizontal" );
+			}
+		}
+
+		// Normally, the widget displays an icon.
+		return true;
+	},
+
+	refresh: function() {
+		var isChecked = this.element[ 0 ].checked,
+			active = $.mobile.activeBtnClass,
+			iconposClass = "ui-btn-icon-" + this.options.iconpos,
+			addClasses = [],
+			removeClasses = [];
+
+		if ( this._hasIcon() ) {
+			removeClasses.push( active );
+			addClasses.push( iconposClass );
+		} else {
+			removeClasses.push( iconposClass );
+			( isChecked ? addClasses : removeClasses ).push( active );
+		}
+
+		if ( isChecked ) {
+			addClasses.push( this.checkedClass );
+			removeClasses.push( this.uncheckedClass );
+		} else {
+			addClasses.push( this.uncheckedClass );
+			removeClasses.push( this.checkedClass );
+		}
+
+		this.widget().toggleClass( "ui-state-disabled", this.element.prop( "disabled" ) );
+
+		this.label
+			.addClass( addClasses.join( " " ) )
+			.removeClass( removeClasses.join( " " ) );
+	},
+
+	widget: function() {
+		return this.label.parent();
+	},
+
+	_setOptions: function( options ) {
+		var label = this.label,
+			currentOptions = this.options,
+			outer = this.widget(),
+			hasIcon = this._hasIcon();
+
+		if ( options.disabled !== undefined ) {
+			this.input.prop( "disabled", !!options.disabled );
+			outer.toggleClass( "ui-state-disabled", !!options.disabled );
+		}
+		if ( options.mini !== undefined ) {
+			outer.toggleClass( "ui-mini", !!options.mini );
+		}
+		if ( options.theme !== undefined ) {
+			label
+				.removeClass( "ui-btn-" + currentOptions.theme )
+				.addClass( "ui-btn-" + options.theme );
+		}
+		if ( options.wrapperClass !== undefined ) {
+			outer
+				.removeClass( currentOptions.wrapperClass )
+				.addClass( options.wrapperClass );
+		}
+		if ( options.iconpos !== undefined && hasIcon ) {
+			label.removeClass( "ui-btn-icon-" + currentOptions.iconpos ).addClass( "ui-btn-icon-" + options.iconpos );
+		} else if ( !hasIcon ) {
+			label.removeClass( "ui-btn-icon-" + currentOptions.iconpos );
+		}
+		this._super( options );
+	}
+
+}, $.mobile.behaviors.formReset ) );
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.widget( "mobile.button", {
+
+	initSelector: "input[type='button'], input[type='submit'], input[type='reset']",
+
+	options: {
+		theme: null,
+		icon: null,
+		iconpos: "left",
+		iconshadow: false, /* TODO: Deprecated in 1.4, remove in 1.5. */
+		corners: true,
+		shadow: true,
+		inline: null,
+		mini: null,
+		wrapperClass: null,
+		enhanced: false
+	},
+
+	_create: function() {
+
+		if ( this.element.is( ":disabled" ) ) {
+			this.options.disabled = true;
+		}
+
+		if ( !this.options.enhanced ) {
+			this._enhance();
+		}
+
+		$.extend( this, {
+			wrapper: this.element.parent()
+		});
+
+		this._on( {
+			focus: function() {
+				this.widget().addClass( $.mobile.focusClass );
+			},
+
+			blur: function() {
+				this.widget().removeClass( $.mobile.focusClass );
+			}
+		});
+
+		this.refresh( true );
+	},
+
+	_enhance: function() {
+		this.element.wrap( this._button() );
+	},
+
+	_button: function() {
+		var options = this.options,
+			iconClasses = this._getIconClasses( this.options );
+
+		return $("<div class='ui-btn ui-input-btn" +
+			( options.wrapperClass ? " " + options.wrapperClass : "" ) +
+			( options.theme ? " ui-btn-" + options.theme : "" ) +
+			( options.corners ? " ui-corner-all" : "" ) +
+			( options.shadow ? " ui-shadow" : "" ) +
+			( options.inline ? " ui-btn-inline" : "" ) +
+			( options.mini ? " ui-mini" : "" ) +
+			( options.disabled ? " ui-state-disabled" : "" ) +
+			( iconClasses ? ( " " + iconClasses ) : "" ) +
+			"' >" + this.element.val() + "</div>" );
+	},
+
+	widget: function() {
+		return this.wrapper;
+	},
+
+	_destroy: function() {
+			this.element.insertBefore( this.wrapper );
+			this.wrapper.remove();
+	},
+
+	_getIconClasses: function( options ) {
+		return ( options.icon ? ( "ui-icon-" + options.icon +
+			( options.iconshadow ? " ui-shadow-icon" : "" ) + /* TODO: Deprecated in 1.4, remove in 1.5. */
+			" ui-btn-icon-" + options.iconpos ) : "" );
+	},
+
+	_setOptions: function( options ) {
+		var outer = this.widget();
+
+		if ( options.theme !== undefined ) {
+			outer
+				.removeClass( this.options.theme )
+				.addClass( "ui-btn-" + options.theme );
+		}
+		if ( options.corners !== undefined ) {
+			outer.toggleClass( "ui-corner-all", options.corners );
+		}
+		if ( options.shadow !== undefined ) {
+			outer.toggleClass( "ui-shadow", options.shadow );
+		}
+		if ( options.inline !== undefined ) {
+			outer.toggleClass( "ui-btn-inline", options.inline );
+		}
+		if ( options.mini !== undefined ) {
+			outer.toggleClass( "ui-mini", options.mini );
+		}
+		if ( options.disabled !== undefined ) {
+			this.element.prop( "disabled", options.disabled );
+			outer.toggleClass( "ui-state-disabled", options.disabled );
+		}
+
+		if ( options.icon !== undefined ||
+				options.iconshadow !== undefined || /* TODO: Deprecated in 1.4, remove in 1.5. */
+				options.iconpos !== undefined ) {
+			outer
+				.removeClass( this._getIconClasses( this.options ) )
+				.addClass( this._getIconClasses(
+					$.extend( {}, this.options, options ) ) );
+		}
+
+		this._super( options );
+	},
+
+	refresh: function( create ) {
+		var originalElement,
+			isDisabled = this.element.prop( "disabled" );
+
+		if ( this.options.icon && this.options.iconpos === "notext" && this.element.attr( "title" ) ) {
+			this.element.attr( "title", this.element.val() );
+		}
+		if ( !create ) {
+			originalElement = this.element.detach();
+			$( this.wrapper ).text( this.element.val() ).append( originalElement );
+		}
+		if ( this.options.disabled !== isDisabled ) {
+			this._setOptions({ disabled: isDisabled });
+		}
+	}
+});
+
+})( jQuery );
+
+(function( $ ) {
+	var	meta = $( "meta[name=viewport]" ),
+		initialContent = meta.attr( "content" ),
+		disabledZoom = initialContent + ",maximum-scale=1, user-scalable=no",
+		enabledZoom = initialContent + ",maximum-scale=10, user-scalable=yes",
+		disabledInitially = /(user-scalable[\s]*=[\s]*no)|(maximum-scale[\s]*=[\s]*1)[$,\s]/.test( initialContent );
+
+	$.mobile.zoom = $.extend( {}, {
+		enabled: !disabledInitially,
+		locked: false,
+		disable: function( lock ) {
+			if ( !disabledInitially && !$.mobile.zoom.locked ) {
+				meta.attr( "content", disabledZoom );
+				$.mobile.zoom.enabled = false;
+				$.mobile.zoom.locked = lock || false;
+			}
+		},
+		enable: function( unlock ) {
+			if ( !disabledInitially && ( !$.mobile.zoom.locked || unlock === true ) ) {
+				meta.attr( "content", enabledZoom );
+				$.mobile.zoom.enabled = true;
+				$.mobile.zoom.locked = false;
+			}
+		},
+		restore: function() {
+			if ( !disabledInitially ) {
+				meta.attr( "content", initialContent );
+				$.mobile.zoom.enabled = true;
+			}
+		}
+	});
+
+}( jQuery ));
+
+(function( $, undefined ) {
+
+$.widget( "mobile.textinput", {
+	initSelector: "input[type='text']," +
+		"input[type='search']," +
+		":jqmData(type='search')," +
+		"input[type='number']," +
+		":jqmData(type='number')," +
+		"input[type='password']," +
+		"input[type='email']," +
+		"input[type='url']," +
+		"input[type='tel']," +
+		"textarea," +
+		"input[type='time']," +
+		"input[type='date']," +
+		"input[type='month']," +
+		"input[type='week']," +
+		"input[type='datetime']," +
+		"input[type='datetime-local']," +
+		"input[type='color']," +
+		"input:not([type])," +
+		"input[type='file']",
+
+	options: {
+		theme: null,
+		corners: true,
+		mini: false,
+		// This option defaults to true on iOS devices.
+		preventFocusZoom: /iPhone|iPad|iPod/.test( navigator.platform ) && navigator.userAgent.indexOf( "AppleWebKit" ) > -1,
+		wrapperClass: "",
+		enhanced: false
+	},
+
+	_create: function() {
+
+		var options = this.options,
+			isSearch = this.element.is( "[type='search'], :jqmData(type='search')" ),
+			isTextarea = this.element[ 0 ].tagName === "TEXTAREA",
+			isRange = this.element.is( "[data-" + ( $.mobile.ns || "" ) + "type='range']" ),
+			inputNeedsWrap = ( (this.element.is( "input" ) ||
+				this.element.is( "[data-" + ( $.mobile.ns || "" ) + "type='search']" ) ) &&
+					!isRange );
+
+		if ( this.element.prop( "disabled" ) ) {
+			options.disabled = true;
+		}
+
+		$.extend( this, {
+			classes: this._classesFromOptions(),
+			isSearch: isSearch,
+			isTextarea: isTextarea,
+			isRange: isRange,
+			inputNeedsWrap: inputNeedsWrap
+		});
+
+		this._autoCorrect();
+
+		if ( !options.enhanced ) {
+			this._enhance();
+		}
+
+		this._on( {
+			"focus": "_handleFocus",
+			"blur": "_handleBlur"
+		});
+
+	},
+
+	refresh: function() {
+		this.setOptions({
+			"disabled" : this.element.is( ":disabled" )
+		});
+	},
+
+	_enhance: function() {
+		var elementClasses = [];
+
+		if ( this.isTextarea ) {
+			elementClasses.push( "ui-input-text" );
+		}
+
+		if ( this.isTextarea || this.isRange ) {
+			elementClasses.push( "ui-shadow-inset" );
+		}
+
+		//"search" and "text" input widgets
+		if ( this.inputNeedsWrap ) {
+			this.element.wrap( this._wrap() );
+		} else {
+			elementClasses = elementClasses.concat( this.classes );
+		}
+
+		this.element.addClass( elementClasses.join( " " ) );
+	},
+
+	widget: function() {
+		return ( this.inputNeedsWrap ) ? this.element.parent() : this.element;
+	},
+
+	_classesFromOptions: function() {
+		var options = this.options,
+			classes = [];
+
+		classes.push( "ui-body-" + ( ( options.theme === null ) ? "inherit" : options.theme ) );
+		if ( options.corners ) {
+			classes.push( "ui-corner-all" );
+		}
+		if ( options.mini ) {
+			classes.push( "ui-mini" );
+		}
+		if ( options.disabled ) {
+			classes.push( "ui-state-disabled" );
+		}
+		if ( options.wrapperClass ) {
+			classes.push( options.wrapperClass );
+		}
+
+		return classes;
+	},
+
+	_wrap: function() {
+		return $( "<div class='" +
+			( this.isSearch ? "ui-input-search " : "ui-input-text " ) +
+			this.classes.join( " " ) + " " +
+			"ui-shadow-inset'></div>" );
+	},
+
+	_autoCorrect: function() {
+		// XXX: Temporary workaround for issue 785 (Apple bug 8910589).
+		//      Turn off autocorrect and autocomplete on non-iOS 5 devices
+		//      since the popup they use can't be dismissed by the user. Note
+		//      that we test for the presence of the feature by looking for
+		//      the autocorrect property on the input element. We currently
+		//      have no test for iOS 5 or newer so we're temporarily using
+		//      the touchOverflow support flag for jQM 1.0. Yes, I feel dirty.
+		//      - jblas
+		if ( typeof this.element[0].autocorrect !== "undefined" &&
+			!$.support.touchOverflow ) {
+
+			// Set the attribute instead of the property just in case there
+			// is code that attempts to make modifications via HTML.
+			this.element[0].setAttribute( "autocorrect", "off" );
+			this.element[0].setAttribute( "autocomplete", "off" );
+		}
+	},
+
+	_handleBlur: function() {
+		this.widget().removeClass( $.mobile.focusClass );
+		if ( this.options.preventFocusZoom ) {
+			$.mobile.zoom.enable( true );
+		}
+	},
+
+	_handleFocus: function() {
+		// In many situations, iOS will zoom into the input upon tap, this
+		// prevents that from happening
+		if ( this.options.preventFocusZoom ) {
+			$.mobile.zoom.disable( true );
+		}
+		this.widget().addClass( $.mobile.focusClass );
+	},
+
+	_setOptions: function ( options ) {
+		var outer = this.widget();
+
+		this._super( options );
+
+		if ( !( options.disabled === undefined &&
+			options.mini === undefined &&
+			options.corners === undefined &&
+			options.theme === undefined &&
+			options.wrapperClass === undefined ) ) {
+
+			outer.removeClass( this.classes.join( " " ) );
+			this.classes = this._classesFromOptions();
+			outer.addClass( this.classes.join( " " ) );
+		}
+
+		if ( options.disabled !== undefined ) {
+			this.element.prop( "disabled", !!options.disabled );
+		}
+	},
+
+	_destroy: function() {
+		if ( this.options.enhanced ) {
+			return;
+		}
+		if ( this.inputNeedsWrap ) {
+			this.element.unwrap();
+		}
+		this.element.removeClass( "ui-input-text " + this.classes.join( " " ) );
+	}
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.widget( "mobile.slider", $.extend( {
+	initSelector: "input[type='range'], :jqmData(type='range'), :jqmData(role='slider')",
+
+	widgetEventPrefix: "slide",
+
+	options: {
+		theme: null,
+		trackTheme: null,
+		corners: true,
+		mini: false,
+		highlight: false
+	},
+
+	_create: function() {
+
+		// TODO: Each of these should have comments explain what they're for
+		var self = this,
+			control = this.element,
+			trackTheme = this.options.trackTheme || $.mobile.getAttribute( control[ 0 ], "theme" ),
+			trackThemeClass = trackTheme ? " ui-bar-" + trackTheme : " ui-bar-inherit",
+			cornerClass = ( this.options.corners || control.jqmData( "corners" ) ) ? " ui-corner-all" : "",
+			miniClass = ( this.options.mini || control.jqmData( "mini" ) ) ? " ui-mini" : "",
+			cType = control[ 0 ].nodeName.toLowerCase(),
+			isToggleSwitch = ( cType === "select" ),
+			isRangeslider = control.parent().is( ":jqmData(role='rangeslider')" ),
+			selectClass = ( isToggleSwitch ) ? "ui-slider-switch" : "",
+			controlID = control.attr( "id" ),
+			$label = $( "[for='" + controlID + "']" ),
+			labelID = $label.attr( "id" ) || controlID + "-label",
+			min = !isToggleSwitch ? parseFloat( control.attr( "min" ) ) : 0,
+			max =  !isToggleSwitch ? parseFloat( control.attr( "max" ) ) : control.find( "option" ).length-1,
+			step = window.parseFloat( control.attr( "step" ) || 1 ),
+			domHandle = document.createElement( "a" ),
+			handle = $( domHandle ),
+			domSlider = document.createElement( "div" ),
+			slider = $( domSlider ),
+			valuebg = this.options.highlight && !isToggleSwitch ? (function() {
+				var bg = document.createElement( "div" );
+				bg.className = "ui-slider-bg " + $.mobile.activeBtnClass;
+				return $( bg ).prependTo( slider );
+			})() : false,
+			options,
+			wrapper,
+			j, length,
+			i, optionsCount, origTabIndex,
+			side, activeClass, sliderImg;
+
+		$label.attr( "id", labelID );
+		this.isToggleSwitch = isToggleSwitch;
+
+		domHandle.setAttribute( "href", "#" );
+		domSlider.setAttribute( "role", "application" );
+		domSlider.className = [ this.isToggleSwitch ? "ui-slider ui-slider-track ui-shadow-inset " : "ui-slider-track ui-shadow-inset ", selectClass, trackThemeClass, cornerClass, miniClass ].join( "" );
+		domHandle.className = "ui-slider-handle";
+		domSlider.appendChild( domHandle );
+
+		handle.attr({
+			"role": "slider",
+			"aria-valuemin": min,
+			"aria-valuemax": max,
+			"aria-valuenow": this._value(),
+			"aria-valuetext": this._value(),
+			"title": this._value(),
+			"aria-labelledby": labelID
+		});
+
+		$.extend( this, {
+			slider: slider,
+			handle: handle,
+			control: control,
+			type: cType,
+			step: step,
+			max: max,
+			min: min,
+			valuebg: valuebg,
+			isRangeslider: isRangeslider,
+			dragging: false,
+			beforeStart: null,
+			userModified: false,
+			mouseMoved: false
+		});
+
+		if ( isToggleSwitch ) {
+			// TODO: restore original tabindex (if any) in a destroy method
+			origTabIndex = control.attr( "tabindex" );
+			if ( origTabIndex ) {
+				handle.attr( "tabindex", origTabIndex );
+			}
+			control.attr( "tabindex", "-1" ).focus(function() {
+				$( this ).blur();
+				handle.focus();
+			});
+
+			wrapper = document.createElement( "div" );
+			wrapper.className = "ui-slider-inneroffset";
+
+			for ( j = 0, length = domSlider.childNodes.length; j < length; j++ ) {
+				wrapper.appendChild( domSlider.childNodes[j] );
+			}
+
+			domSlider.appendChild( wrapper );
+
+			// slider.wrapInner( "<div class='ui-slider-inneroffset'></div>" );
+
+			// make the handle move with a smooth transition
+			handle.addClass( "ui-slider-handle-snapping" );
+
+			options = control.find( "option" );
+
+			for ( i = 0, optionsCount = options.length; i < optionsCount; i++ ) {
+				side = !i ? "b" : "a";
+				activeClass = !i ? "" : " " + $.mobile.activeBtnClass;
+				sliderImg = document.createElement( "span" );
+
+				sliderImg.className = [ "ui-slider-label ui-slider-label-", side, activeClass ].join( "" );
+				sliderImg.setAttribute( "role", "img" );
+				sliderImg.appendChild( document.createTextNode( options[i].innerHTML ) );
+				$( sliderImg ).prependTo( slider );
+			}
+
+			self._labels = $( ".ui-slider-label", slider );
+
+		}
+
+		// monitor the input for updated values
+		control.addClass( isToggleSwitch ? "ui-slider-switch" : "ui-slider-input" );
+
+		this._on( control, {
+			"change": "_controlChange",
+			"keyup": "_controlKeyup",
+			"blur": "_controlBlur",
+			"vmouseup": "_controlVMouseUp"
+		});
+
+		slider.bind( "vmousedown", $.proxy( this._sliderVMouseDown, this ) )
+			.bind( "vclick", false );
+
+		// We have to instantiate a new function object for the unbind to work properly
+		// since the method itself is defined in the prototype (causing it to unbind everything)
+		this._on( document, { "vmousemove": "_preventDocumentDrag" });
+		this._on( slider.add( document ), { "vmouseup": "_sliderVMouseUp" });
+
+		slider.insertAfter( control );
+
+		// wrap in a div for styling purposes
+		if ( !isToggleSwitch && !isRangeslider ) {
+			wrapper = this.options.mini ? "<div class='ui-slider ui-mini'>" : "<div class='ui-slider'>";
+
+			control.add( slider ).wrapAll( wrapper );
+		}
+
+		// bind the handle event callbacks and set the context to the widget instance
+		this._on( this.handle, {
+			"vmousedown": "_handleVMouseDown",
+			"keydown": "_handleKeydown",
+			"keyup": "_handleKeyup"
+		});
+
+		this.handle.bind( "vclick", false );
+
+		this._handleFormReset();
+
+		this.refresh( undefined, undefined, true );
+	},
+
+	_setOptions: function( options ) {
+		if ( options.theme !== undefined ) {
+			this._setTheme( options.theme );
+		}
+
+		if ( options.trackTheme !== undefined ) {
+			this._setTrackTheme( options.trackTheme );
+		}
+
+		if ( options.corners !== undefined ) {
+			this._setCorners( options.corners );
+		}
+
+		if ( options.mini !== undefined ) {
+			this._setMini( options.mini );
+		}
+
+		if ( options.highlight !== undefined ) {
+			this._setHighlight( options.highlight );
+		}
+
+		if ( options.disabled !== undefined ) {
+			this._setDisabled( options.disabled );
+		}
+		this._super( options );
+	},
+
+	_controlChange: function( event ) {
+		// if the user dragged the handle, the "change" event was triggered from inside refresh(); don't call refresh() again
+		if ( this._trigger( "controlchange", event ) === false ) {
+			return false;
+		}
+		if ( !this.mouseMoved ) {
+			this.refresh( this._value(), true );
+		}
+	},
+
+	_controlKeyup: function(/* event */) { // necessary?
+		this.refresh( this._value(), true, true );
+	},
+
+	_controlBlur: function(/* event */) {
+		this.refresh( this._value(), true );
+	},
+
+	// it appears the clicking the up and down buttons in chrome on
+	// range/number inputs doesn't trigger a change until the field is
+	// blurred. Here we check thif the value has changed and refresh
+	_controlVMouseUp: function(/* event */) {
+		this._checkedRefresh();
+	},
+
+	// NOTE force focus on handle
+	_handleVMouseDown: function(/* event */) {
+		this.handle.focus();
+	},
+
+	_handleKeydown: function( event ) {
+		var index = this._value();
+		if ( this.options.disabled ) {
+			return;
+		}
+
+		// In all cases prevent the default and mark the handle as active
+		switch ( event.keyCode ) {
+			case $.mobile.keyCode.HOME:
+			case $.mobile.keyCode.END:
+			case $.mobile.keyCode.PAGE_UP:
+			case $.mobile.keyCode.PAGE_DOWN:
+			case $.mobile.keyCode.UP:
+			case $.mobile.keyCode.RIGHT:
+			case $.mobile.keyCode.DOWN:
+			case $.mobile.keyCode.LEFT:
+				event.preventDefault();
+
+				if ( !this._keySliding ) {
+					this._keySliding = true;
+					this.handle.addClass( "ui-state-active" ); /* TODO: We don't use this class for styling. Do we need to add it? */
+				}
+
+				break;
+		}
+
+		// move the slider according to the keypress
+		switch ( event.keyCode ) {
+			case $.mobile.keyCode.HOME:
+				this.refresh( this.min );
+				break;
+			case $.mobile.keyCode.END:
+				this.refresh( this.max );
+				break;
+			case $.mobile.keyCode.PAGE_UP:
+			case $.mobile.keyCode.UP:
+			case $.mobile.keyCode.RIGHT:
+				this.refresh( index + this.step );
+				break;
+			case $.mobile.keyCode.PAGE_DOWN:
+			case $.mobile.keyCode.DOWN:
+			case $.mobile.keyCode.LEFT:
+				this.refresh( index - this.step );
+				break;
+		}
+	}, // remove active mark
+
+	_handleKeyup: function(/* event */) {
+		if ( this._keySliding ) {
+			this._keySliding = false;
+			this.handle.removeClass( "ui-state-active" ); /* See comment above. */
+		}
+	},
+
+	_sliderVMouseDown: function( event ) {
+		// NOTE: we don't do this in refresh because we still want to
+		//       support programmatic alteration of disabled inputs
+		if ( this.options.disabled || !( event.which === 1 || event.which === 0 || event.which === undefined ) ) {
+			return false;
+		}
+		if ( this._trigger( "beforestart", event ) === false ) {
+			return false;
+		}
+		this.dragging = true;
+		this.userModified = false;
+		this.mouseMoved = false;
+
+		if ( this.isToggleSwitch ) {
+			this.beforeStart = this.element[0].selectedIndex;
+		}
+
+		this.refresh( event );
+		this._trigger( "start" );
+		return false;
+	},
+
+	_sliderVMouseUp: function() {
+		if ( this.dragging ) {
+			this.dragging = false;
+
+			if ( this.isToggleSwitch ) {
+				// make the handle move with a smooth transition
+				this.handle.addClass( "ui-slider-handle-snapping" );
+
+				if ( this.mouseMoved ) {
+					// this is a drag, change the value only if user dragged enough
+					if ( this.userModified ) {
+						this.refresh( this.beforeStart === 0 ? 1 : 0 );
+					} else {
+						this.refresh( this.beforeStart );
+					}
+				} else {
+					// this is just a click, change the value
+					this.refresh( this.beforeStart === 0 ? 1 : 0 );
+				}
+			}
+
+			this.mouseMoved = false;
+			this._trigger( "stop" );
+			return false;
+		}
+	},
+
+	_preventDocumentDrag: function( event ) {
+			// NOTE: we don't do this in refresh because we still want to
+			//       support programmatic alteration of disabled inputs
+			if ( this._trigger( "drag", event ) === false) {
+				return false;
+			}
+			if ( this.dragging && !this.options.disabled ) {
+
+				// this.mouseMoved must be updated before refresh() because it will be used in the control "change" event
+				this.mouseMoved = true;
+
+				if ( this.isToggleSwitch ) {
+					// make the handle move in sync with the mouse
+					this.handle.removeClass( "ui-slider-handle-snapping" );
+				}
+
+				this.refresh( event );
+
+				// only after refresh() you can calculate this.userModified
+				this.userModified = this.beforeStart !== this.element[0].selectedIndex;
+				return false;
+			}
+		},
+
+	_checkedRefresh: function() {
+		if ( this.value !== this._value() ) {
+			this.refresh( this._value() );
+		}
+	},
+
+	_value: function() {
+		return  this.isToggleSwitch ? this.element[0].selectedIndex : parseFloat( this.element.val() ) ;
+	},
+
+	_reset: function() {
+		this.refresh( undefined, false, true );
+	},
+
+	refresh: function( val, isfromControl, preventInputUpdate ) {
+		// NOTE: we don't return here because we want to support programmatic
+		//       alteration of the input value, which should still update the slider
+
+		var self = this,
+			parentTheme = $.mobile.getAttribute( this.element[ 0 ], "theme" ),
+			theme = this.options.theme || parentTheme,
+			themeClass =  theme ? " ui-btn-" + theme : "",
+			trackTheme = this.options.trackTheme || parentTheme,
+			trackThemeClass = trackTheme ? " ui-bar-" + trackTheme : " ui-bar-inherit",
+			cornerClass = this.options.corners ? " ui-corner-all" : "",
+			miniClass = this.options.mini ? " ui-mini" : "",
+			left, width, data, tol,
+			pxStep, percent,
+			control, isInput, optionElements, min, max, step,
+			newval, valModStep, alignValue, percentPerStep,
+			handlePercent, aPercent, bPercent,
+			valueChanged;
+
+		self.slider[0].className = [ this.isToggleSwitch ? "ui-slider ui-slider-switch ui-slider-track ui-shadow-inset" : "ui-slider-track ui-shadow-inset", trackThemeClass, cornerClass, miniClass ].join( "" );
+		if ( this.options.disabled || this.element.prop( "disabled" ) ) {
+			this.disable();
+		}
+
+		// set the stored value for comparison later
+		this.value = this._value();
+		if ( this.options.highlight && !this.isToggleSwitch && this.slider.find( ".ui-slider-bg" ).length === 0 ) {
+			this.valuebg = (function() {
+				var bg = document.createElement( "div" );
+				bg.className = "ui-slider-bg " + $.mobile.activeBtnClass;
+				return $( bg ).prependTo( self.slider );
+			})();
+		}
+		this.handle.addClass( "ui-btn" + themeClass + " ui-shadow" );
+
+		control = this.element;
+		isInput = !this.isToggleSwitch;
+		optionElements = isInput ? [] : control.find( "option" );
+		min =  isInput ? parseFloat( control.attr( "min" ) ) : 0;
+		max = isInput ? parseFloat( control.attr( "max" ) ) : optionElements.length - 1;
+		step = ( isInput && parseFloat( control.attr( "step" ) ) > 0 ) ? parseFloat( control.attr( "step" ) ) : 1;
+
+		if ( typeof val === "object" ) {
+			data = val;
+			// a slight tolerance helped get to the ends of the slider
+			tol = 8;
+
+			left = this.slider.offset().left;
+			width = this.slider.width();
+			pxStep = width/((max-min)/step);
+			if ( !this.dragging ||
+					data.pageX < left - tol ||
+					data.pageX > left + width + tol ) {
+				return;
+			}
+			if ( pxStep > 1 ) {
+				percent = ( ( data.pageX - left ) / width ) * 100;
+			} else {
+				percent = Math.round( ( ( data.pageX - left ) / width ) * 100 );
+			}
+		} else {
+			if ( val == null ) {
+				val = isInput ? parseFloat( control.val() || 0 ) : control[0].selectedIndex;
+			}
+			percent = ( parseFloat( val ) - min ) / ( max - min ) * 100;
+		}
+
+		if ( isNaN( percent ) ) {
+			return;
+		}
+
+		newval = ( percent / 100 ) * ( max - min ) + min;
+
+		//from jQuery UI slider, the following source will round to the nearest step
+		valModStep = ( newval - min ) % step;
+		alignValue = newval - valModStep;
+
+		if ( Math.abs( valModStep ) * 2 >= step ) {
+			alignValue += ( valModStep > 0 ) ? step : ( -step );
+		}
+
+		percentPerStep = 100/((max-min)/step);
+		// Since JavaScript has problems with large floats, round
+		// the final value to 5 digits after the decimal point (see jQueryUI: #4124)
+		newval = parseFloat( alignValue.toFixed(5) );
+
+		if ( typeof pxStep === "undefined" ) {
+			pxStep = width / ( (max-min) / step );
+		}
+		if ( pxStep > 1 && isInput ) {
+			percent = ( newval - min ) * percentPerStep * ( 1 / step );
+		}
+		if ( percent < 0 ) {
+			percent = 0;
+		}
+
+		if ( percent > 100 ) {
+			percent = 100;
+		}
+
+		if ( newval < min ) {
+			newval = min;
+		}
+
+		if ( newval > max ) {
+			newval = max;
+		}
+
+		this.handle.css( "left", percent + "%" );
+
+		this.handle[0].setAttribute( "aria-valuenow", isInput ? newval : optionElements.eq( newval ).attr( "value" ) );
+
+		this.handle[0].setAttribute( "aria-valuetext", isInput ? newval : optionElements.eq( newval ).getEncodedText() );
+
+		this.handle[0].setAttribute( "title", isInput ? newval : optionElements.eq( newval ).getEncodedText() );
+
+		if ( this.valuebg ) {
+			this.valuebg.css( "width", percent + "%" );
+		}
+
+		// drag the label widths
+		if ( this._labels ) {
+			handlePercent = this.handle.width() / this.slider.width() * 100;
+			aPercent = percent && handlePercent + ( 100 - handlePercent ) * percent / 100;
+			bPercent = percent === 100 ? 0 : Math.min( handlePercent + 100 - aPercent, 100 );
+
+			this._labels.each(function() {
+				var ab = $( this ).hasClass( "ui-slider-label-a" );
+				$( this ).width( ( ab ? aPercent : bPercent  ) + "%" );
+			});
+		}
+
+		if ( !preventInputUpdate ) {
+			valueChanged = false;
+
+			// update control"s value
+			if ( isInput ) {
+				valueChanged = parseFloat( control.val() ) !== newval;
+				control.val( newval );
+			} else {
+				valueChanged = control[ 0 ].selectedIndex !== newval;
+				control[ 0 ].selectedIndex = newval;
+			}
+			if ( this._trigger( "beforechange", val ) === false) {
+					return false;
+			}
+			if ( !isfromControl && valueChanged ) {
+				control.trigger( "change" );
+			}
+		}
+	},
+
+	_setHighlight: function( value ) {
+		value = !!value;
+		if ( value ) {
+			this.options.highlight = !!value;
+			this.refresh();
+		} else if ( this.valuebg ) {
+			this.valuebg.remove();
+			this.valuebg = false;
+		}
+	},
+
+	_setTheme: function( value ) {
+		this.handle
+			.removeClass( "ui-btn-" + this.options.theme )
+			.addClass( "ui-btn-" + value );
+
+		var currentTheme = this.options.theme ? this.options.theme : "inherit",
+			newTheme = value ? value : "inherit";
+
+		this.control
+			.removeClass( "ui-body-" + currentTheme )
+			.addClass( "ui-body-" + newTheme );
+	},
+
+	_setTrackTheme: function( value ) {
+		var currentTrackTheme = this.options.trackTheme ? this.options.trackTheme : "inherit",
+			newTrackTheme = value ? value : "inherit";
+
+		this.slider
+			.removeClass( "ui-body-" + currentTrackTheme )
+			.addClass( "ui-body-" + newTrackTheme );
+	},
+
+	_setMini: function( value ) {
+		value = !!value;
+		if ( !this.isToggleSwitch && !this.isRangeslider ) {
+			this.slider.parent().toggleClass( "ui-mini", value );
+			this.element.toggleClass( "ui-mini", value );
+		}
+		this.slider.toggleClass( "ui-mini", value );
+	},
+
+	_setCorners: function( value ) {
+		this.slider.toggleClass( "ui-corner-all", value );
+
+		if ( !this.isToggleSwitch ) {
+			this.control.toggleClass( "ui-corner-all", value );
+		}
+	},
+
+	_setDisabled: function( value ) {
+		value = !!value;
+		this.element.prop( "disabled", value );
+		this.slider
+			.toggleClass( "ui-state-disabled", value )
+			.attr( "aria-disabled", value );
+
+		this.element.toggleClass( "ui-state-disabled", value );
+	}
+
+}, $.mobile.behaviors.formReset ) );
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+var popup;
+
+function getPopup() {
+	if ( !popup ) {
+		popup = $( "<div></div>", {
+			"class": "ui-slider-popup ui-shadow ui-corner-all"
+		});
+	}
+	return popup.clone();
+}
+
+$.widget( "mobile.slider", $.mobile.slider, {
+	options: {
+		popupEnabled: false,
+		showValue: false
+	},
+
+	_create: function() {
+		this._super();
+
+		$.extend( this, {
+			_currentValue: null,
+			_popup: null,
+			_popupVisible: false
+		});
+
+		this._setOption( "popupEnabled", this.options.popupEnabled );
+
+		this._on( this.handle, { "vmousedown" : "_showPopup" } );
+		this._on( this.slider.add( this.document ), { "vmouseup" : "_hidePopup" } );
+		this._refresh();
+	},
+
+	// position the popup centered 5px above the handle
+	_positionPopup: function() {
+		var dstOffset = this.handle.offset();
+
+		this._popup.offset( {
+			left: dstOffset.left + ( this.handle.width() - this._popup.width() ) / 2,
+			top: dstOffset.top - this._popup.outerHeight() - 5
+		});
+	},
+
+	_setOption: function( key, value ) {
+		this._super( key, value );
+
+		if ( key === "showValue" ) {
+			this.handle.html( value && !this.options.mini ? this._value() : "" );
+		} else if ( key === "popupEnabled" ) {
+			if ( value && !this._popup ) {
+				this._popup = getPopup()
+					.addClass( "ui-body-" + ( this.options.theme || "a" ) )
+					.hide()
+					.insertBefore( this.element );
+			}
+		}
+	},
+
+	// show value on the handle and in popup
+	refresh: function() {
+		this._super.apply( this, arguments );
+		this._refresh();
+	},
+
+	_refresh: function() {
+		var o = this.options, newValue;
+
+		if ( o.popupEnabled ) {
+			// remove the title attribute from the handle (which is
+			// responsible for the annoying tooltip); NB we have
+			// to do it here as the jqm slider sets it every time
+			// the slider's value changes :(
+			this.handle.removeAttr( "title" );
+		}
+
+		newValue = this._value();
+		if ( newValue === this._currentValue ) {
+			return;
+		}
+		this._currentValue = newValue;
+
+		if ( o.popupEnabled && this._popup ) {
+			this._positionPopup();
+			this._popup.html( newValue );
+		}
+
+		if ( o.showValue && !this.options.mini ) {
+			this.handle.html( newValue );
+		}
+	},
+
+	_showPopup: function() {
+		if ( this.options.popupEnabled && !this._popupVisible ) {
+			this.handle.html( "" );
+			this._popup.show();
+			this._positionPopup();
+			this._popupVisible = true;
+		}
+	},
+
+	_hidePopup: function() {
+		var o = this.options;
+
+		if ( o.popupEnabled && this._popupVisible ) {
+			if ( o.showValue && !o.mini ) {
+				this.handle.html( this._value() );
+			}
+			this._popup.hide();
+			this._popupVisible = false;
+		}
+	}
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.widget( "mobile.flipswitch", $.extend({
+
+	options: {
+		onText: "On",
+		offText: "Off",
+		theme: null,
+		enhanced: false,
+		wrapperClass: null,
+		corners: true,
+		mini: false
+	},
+
+	_create: function() {
+			if ( !this.options.enhanced ) {
+				this._enhance();
+			} else {
+				$.extend( this, {
+					flipswitch: this.element.parent(),
+					on: this.element.find( ".ui-flipswitch-on" ).eq( 0 ),
+					off: this.element.find( ".ui-flipswitch-off" ).eq(0),
+					type: this.element.get( 0 ).tagName
+				});
+			}
+
+			this._handleFormReset();
+
+			// Transfer tabindex to "on" element and make input unfocusable
+			this._originalTabIndex = this.element.attr( "tabindex" );
+			if ( this._originalTabIndex != null ) {
+				this.on.attr( "tabindex", this._originalTabIndex );
+			}
+			this.element.attr( "tabindex", "-1" );
+			this._on({
+				"focus" : "_handleInputFocus"
+			});
+
+			if ( this.element.is( ":disabled" ) ) {
+				this._setOptions({
+					"disabled": true
+				});
+			}
+
+			this._on( this.flipswitch, {
+				"click": "_toggle",
+				"swipeleft": "_left",
+				"swiperight": "_right"
+			});
+
+			this._on( this.on, {
+				"keydown": "_keydown"
+			});
+
+			this._on( {
+				"change": "refresh"
+			});
+	},
+
+	_handleInputFocus: function() {
+		this.on.focus();
+	},
+
+	widget: function() {
+		return this.flipswitch;
+	},
+
+	_left: function() {
+		this.flipswitch.removeClass( "ui-flipswitch-active" );
+		if ( this.type === "SELECT" ) {
+			this.element.get( 0 ).selectedIndex = 0;
+		} else {
+			this.element.prop( "checked", false );
+		}
+		this.element.trigger( "change" );
+	},
+
+	_right: function() {
+		this.flipswitch.addClass( "ui-flipswitch-active" );
+		if ( this.type === "SELECT" ) {
+			this.element.get( 0 ).selectedIndex = 1;
+		} else {
+			this.element.prop( "checked", true );
+		}
+		this.element.trigger( "change" );
+	},
+
+	_enhance: function() {
+		var flipswitch = $( "<div>" ),
+			options = this.options,
+			element = this.element,
+			theme = options.theme ? options.theme : "inherit",
+
+			// The "on" button is an anchor so it's focusable
+			on = $( "<a></a>", {
+				"href": "#"
+			}),
+			off = $( "<span></span>" ),
+			type = element.get( 0 ).tagName,
+			onText = ( type === "INPUT" ) ?
+				options.onText : element.find( "option" ).eq( 1 ).text(),
+			offText = ( type === "INPUT" ) ?
+				options.offText : element.find( "option" ).eq( 0 ).text();
+
+			on
+				.addClass( "ui-flipswitch-on ui-btn ui-shadow ui-btn-inherit" )
+				.text( onText );
+			off
+				.addClass( "ui-flipswitch-off" )
+				.text( offText );
+
+			flipswitch
+				.addClass( "ui-flipswitch ui-shadow-inset " +
+					"ui-bar-" + theme + " " +
+					( options.wrapperClass ? options.wrapperClass : "" ) + " " +
+					( ( element.is( ":checked" ) ||
+						element
+							.find( "option" )
+							.eq( 1 )
+							.is( ":selected" ) ) ? "ui-flipswitch-active" : "" ) +
+					( element.is(":disabled") ? " ui-state-disabled": "") +
+					( options.corners ? " ui-corner-all": "" ) +
+					( options.mini ? " ui-mini": "" ) )
+				.append( on, off );
+
+			element
+				.addClass( "ui-flipswitch-input" )
+				.after( flipswitch )
+				.appendTo( flipswitch );
+
+		$.extend( this, {
+			flipswitch: flipswitch,
+			on: on,
+			off: off,
+			type: type
+		});
+	},
+
+	_reset: function() {
+		this.refresh();
+	},
+
+	refresh: function() {
+		var direction,
+			existingDirection = this.flipswitch.hasClass( "ui-flipswitch-active" ) ? "_right" : "_left";
+
+		if ( this.type === "SELECT" ) {
+			direction = ( this.element.get( 0 ).selectedIndex > 0 ) ? "_right": "_left";
+		} else {
+			direction = this.element.prop( "checked" ) ? "_right": "_left";
+		}
+
+		if ( direction !== existingDirection ) {
+			this[ direction ]();
+		}
+	},
+
+	_toggle: function() {
+		var direction = this.flipswitch.hasClass( "ui-flipswitch-active" ) ? "_left" : "_right";
+
+		this[ direction ]();
+	},
+
+	_keydown: function( e ) {
+		if ( e.which === $.mobile.keyCode.LEFT ) {
+			this._left();
+		} else if ( e.which === $.mobile.keyCode.RIGHT ) {
+			this._right();
+		} else if ( e.which === $.mobile.keyCode.SPACE ) {
+			this._toggle();
+			e.preventDefault();
+		}
+	},
+
+	_setOptions: function( options ) {
+		if ( options.theme !== undefined ) {
+			var currentTheme = options.theme ? options.theme : "inherit",
+				newTheme = options.theme ? options.theme : "inherit";
+
+			this.widget()
+				.removeClass( "ui-bar-" + currentTheme )
+				.addClass( "ui-bar-" + newTheme );
+		}
+		if ( options.onText !== undefined ) {
+			this.on.text( options.onText );
+		}
+		if ( options.offText !== undefined ) {
+			this.off.text( options.offText );
+		}
+		if ( options.disabled !== undefined ) {
+			this.widget().toggleClass( "ui-state-disabled", options.disabled );
+		}
+		if ( options.mini !== undefined ) {
+			this.widget().toggleClass( "ui-mini", options.mini );
+		}
+		if ( options.corners !== undefined ) {
+			this.widget().toggleClass( "ui-corner-all", options.corners );
+		}
+
+		this._super( options );
+	},
+
+	_destroy: function() {
+		if ( this.options.enhanced ) {
+			return;
+		}
+		if ( this._originalTabIndex != null ) {
+			this.element.attr( "tabindex", this._originalTabIndex );
+		} else {
+			this.element.removeAttr( "tabindex" );
+		}
+		this.on.remove();
+		this.off.remove();
+		this.element.unwrap();
+		this.flipswitch.remove();
+		this.removeClass( "ui-flipswitch-input" );
+	}
+
+}, $.mobile.behaviors.formReset ) );
+
+})( jQuery );
+
+(function( $, undefined ) {
+	$.widget( "mobile.rangeslider", $.extend( {
+
+		options: {
+			theme: null,
+			trackTheme: null,
+			corners: true,
+			mini: false,
+			highlight: true
+		},
+
+		_create: function() {
+			var $el = this.element,
+			elClass = this.options.mini ? "ui-rangeslider ui-mini" : "ui-rangeslider",
+			_inputFirst = $el.find( "input" ).first(),
+			_inputLast = $el.find( "input" ).last(),
+			_label = $el.find( "label" ).first(),
+			_sliderWidgetFirst = $.data( _inputFirst.get( 0 ), "mobile-slider" ) ||
+				$.data( _inputFirst.slider().get( 0 ), "mobile-slider" ),
+			_sliderWidgetLast = $.data( _inputLast.get(0), "mobile-slider" ) ||
+				$.data( _inputLast.slider().get( 0 ), "mobile-slider" ),
+			_sliderFirst = _sliderWidgetFirst.slider,
+			_sliderLast = _sliderWidgetLast.slider,
+			firstHandle = _sliderWidgetFirst.handle,
+			_sliders = $( "<div class='ui-rangeslider-sliders' />" ).appendTo( $el );
+
+			_inputFirst.addClass( "ui-rangeslider-first" );
+			_inputLast.addClass( "ui-rangeslider-last" );
+			$el.addClass( elClass );
+
+			_sliderFirst.appendTo( _sliders );
+			_sliderLast.appendTo( _sliders );
+			_label.insertBefore( $el );
+			firstHandle.prependTo( _sliderLast );
+
+			$.extend( this, {
+				_inputFirst: _inputFirst,
+				_inputLast: _inputLast,
+				_sliderFirst: _sliderFirst,
+				_sliderLast: _sliderLast,
+				_label: _label,
+				_targetVal: null,
+				_sliderTarget: false,
+				_sliders: _sliders,
+				_proxy: false
+			});
+
+			this.refresh();
+			this._on( this.element.find( "input.ui-slider-input" ), {
+				"slidebeforestart": "_slidebeforestart",
+				"slidestop": "_slidestop",
+				"slidedrag": "_slidedrag",
+				"slidebeforechange": "_change",
+				"blur": "_change",
+				"keyup": "_change"
+			});
+			this._on({
+				"mousedown":"_change"
+			});
+			this._on( this.element.closest( "form" ), {
+				"reset":"_handleReset"
+			});
+			this._on( firstHandle, {
+				"vmousedown": "_dragFirstHandle"
+			});
+		},
+		_handleReset: function() {
+			var self = this;
+			//we must wait for the stack to unwind before updateing other wise sliders will not have updated yet
+			setTimeout( function() {
+				self._updateHighlight();
+			},0);
+		},
+
+		_dragFirstHandle: function( event ) {
+			//if the first handle is dragged send the event to the first slider
+			$.data( this._inputFirst.get(0), "mobile-slider" ).dragging = true;
+			$.data( this._inputFirst.get(0), "mobile-slider" ).refresh( event );
+			$.data( this._inputFirst.get(0), "mobile-slider" )._trigger( "start" );
+			return false;
+		},
+
+		_slidedrag: function( event ) {
+			var first = $( event.target ).is( this._inputFirst ),
+				otherSlider = ( first ) ? this._inputLast : this._inputFirst;
+
+			this._sliderTarget = false;
+			//if the drag was initiated on an extreme and the other handle is focused send the events to
+			//the closest handle
+			if ( ( this._proxy === "first" && first ) || ( this._proxy === "last" && !first ) ) {
+				$.data( otherSlider.get(0), "mobile-slider" ).dragging = true;
+				$.data( otherSlider.get(0), "mobile-slider" ).refresh( event );
+				return false;
+			}
+		},
+
+		_slidestop: function( event ) {
+			var first = $( event.target ).is( this._inputFirst );
+
+			this._proxy = false;
+			//this stops dragging of the handle and brings the active track to the front
+			//this makes clicks on the track go the the last handle used
+			this.element.find( "input" ).trigger( "vmouseup" );
+			this._sliderFirst.css( "z-index", first ? 1 : "" );
+		},
+
+		_slidebeforestart: function( event ) {
+			this._sliderTarget = false;
+			//if the track is the target remember this and the original value
+			if ( $( event.originalEvent.target ).hasClass( "ui-slider-track" ) ) {
+				this._sliderTarget = true;
+				this._targetVal = $( event.target ).val();
+			}
+		},
+
+		_setOptions: function( options ) {
+			if ( options.theme !== undefined ) {
+				this._setTheme( options.theme );
+			}
+
+			if ( options.trackTheme !== undefined ) {
+				this._setTrackTheme( options.trackTheme );
+			}
+
+			if ( options.mini !== undefined ) {
+				this._setMini( options.mini );
+			}
+
+			if ( options.highlight !== undefined ) {
+				this._setHighlight( options.highlight );
+			}
+
+			if ( options.disabled !== undefined ) {
+				this._setDisabled( options.disabled );
+			}
+
+			this._super( options );
+			this.refresh();
+		},
+
+		refresh: function() {
+			var $el = this.element,
+				o = this.options;
+
+			if ( this._inputFirst.is( ":disabled" ) || this._inputLast.is( ":disabled" ) ) {
+				this.options.disabled = true;
+			}
+
+			$el.find( "input" ).slider({
+				theme: o.theme,
+				trackTheme: o.trackTheme,
+				disabled: o.disabled,
+				corners: o.corners,
+				mini: o.mini,
+				highlight: o.highlight
+			}).slider( "refresh" );
+			this._updateHighlight();
+		},
+
+		_change: function( event ) {
+			if ( event.type === "keyup" ) {
+				this._updateHighlight();
+				return false;
+			}
+
+			var self = this,
+				min = parseFloat( this._inputFirst.val(), 10 ),
+				max = parseFloat( this._inputLast.val(), 10 ),
+				first = $( event.target ).hasClass( "ui-rangeslider-first" ),
+				thisSlider = first ? this._inputFirst : this._inputLast,
+				otherSlider = first ? this._inputLast : this._inputFirst;
+
+			if ( ( this._inputFirst.val() > this._inputLast.val() && event.type === "mousedown" && !$(event.target).hasClass("ui-slider-handle")) ) {
+				thisSlider.blur();
+			} else if ( event.type === "mousedown" ) {
+				return;
+			}
+			if ( min > max && !this._sliderTarget ) {
+				//this prevents min from being greater then max
+				thisSlider.val( first ? max: min ).slider( "refresh" );
+				this._trigger( "normalize" );
+			} else if ( min > max ) {
+				//this makes it so clicks on the target on either extreme go to the closest handle
+				thisSlider.val( this._targetVal ).slider( "refresh" );
+
+				//You must wait for the stack to unwind so first slider is updated before updating second
+				setTimeout( function() {
+					otherSlider.val( first ? min: max ).slider( "refresh" );
+					$.data( otherSlider.get(0), "mobile-slider" ).handle.focus();
+					self._sliderFirst.css( "z-index", first ? "" : 1 );
+					self._trigger( "normalize" );
+				}, 0 );
+				this._proxy = ( first ) ? "first" : "last";
+			}
+			//fixes issue where when both _sliders are at min they cannot be adjusted
+			if ( min === max ) {
+				$.data( thisSlider.get(0), "mobile-slider" ).handle.css( "z-index", 1 );
+				$.data( otherSlider.get(0), "mobile-slider" ).handle.css( "z-index", 0 );
+			} else {
+				$.data( otherSlider.get(0), "mobile-slider" ).handle.css( "z-index", "" );
+				$.data( thisSlider.get(0), "mobile-slider" ).handle.css( "z-index", "" );
+			}
+
+			this._updateHighlight();
+
+			if ( min >= max ) {
+				return false;
+			}
+		},
+
+		_updateHighlight: function() {
+			var min = parseInt( $.data( this._inputFirst.get(0), "mobile-slider" ).handle.get(0).style.left, 10 ),
+				max = parseInt( $.data( this._inputLast.get(0), "mobile-slider" ).handle.get(0).style.left, 10 ),
+				width = (max - min);
+
+			this.element.find( ".ui-slider-bg" ).css({
+				"margin-left": min + "%",
+				"width": width + "%"
+			});
+		},
+
+		_setTheme: function( value ) {
+			this._inputFirst.slider( "option", "theme", value );
+			this._inputLast.slider( "option", "theme", value );
+		},
+
+		_setTrackTheme: function( value ) {
+			this._inputFirst.slider( "option", "trackTheme", value );
+			this._inputLast.slider( "option", "trackTheme", value );
+		},
+
+		_setMini: function( value ) {
+			this._inputFirst.slider( "option", "mini", value );
+			this._inputLast.slider( "option", "mini", value );
+			this.element.toggleClass( "ui-mini", !!value );
+		},
+
+		_setHighlight: function( value ) {
+			this._inputFirst.slider( "option", "highlight", value );
+			this._inputLast.slider( "option", "highlight", value );
+		},
+
+		_setDisabled: function( value ) {
+			this._inputFirst.prop( "disabled", value );
+			this._inputLast.prop( "disabled", value );
+		},
+
+		_destroy: function() {
+			this._label.prependTo( this.element );
+			this.element.removeClass( "ui-rangeslider ui-mini" );
+			this._inputFirst.after( this._sliderFirst );
+			this._inputLast.after( this._sliderLast );
+			this._sliders.remove();
+			this.element.find( "input" ).removeClass( "ui-rangeslider-first ui-rangeslider-last" ).slider( "destroy" );
+		}
+
+	}, $.mobile.behaviors.formReset ) );
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+	$.widget( "mobile.textinput", $.mobile.textinput, {
+		options: {
+			clearBtn: false,
+			clearBtnText: "Clear text"
+		},
+
+		_create: function() {
+			this._super();
+
+			if ( this.isSearch ) {
+				this.options.clearBtn = true;
+			}
+
+			if ( !!this.options.clearBtn && this.inputNeedsWrap ) {
+				this._addClearBtn();
+			}
+		},
+
+		clearButton: function() {
+			return $( "<a href='#' tabindex='-1' aria-hidden='true' " +
+				"class='ui-input-clear ui-btn ui-icon-delete ui-btn-icon-notext ui-corner-all'>" +
+				"</a>" )
+					.attr( "title", this.options.clearBtnText )
+					.text( this.options.clearBtnText );
+		},
+
+		_clearBtnClick: function( event ) {
+			this.element.val( "" )
+					.focus()
+					.trigger( "change" );
+
+			this._clearBtn.addClass( "ui-input-clear-hidden" );
+			event.preventDefault();
+		},
+
+		_addClearBtn: function() {
+
+			if ( !this.options.enhanced ) {
+				this._enhanceClear();
+			}
+
+			$.extend( this, {
+				_clearBtn: this.widget().find("a.ui-input-clear")
+			});
+
+			this._bindClearEvents();
+
+			this._toggleClear();
+
+		},
+
+		_enhanceClear: function() {
+
+			this.clearButton().appendTo( this.widget() );
+			this.widget().addClass( "ui-input-has-clear" );
+
+		},
+
+		_bindClearEvents: function() {
+
+			this._on( this._clearBtn, {
+				"click": "_clearBtnClick"
+			});
+
+			this._on({
+				"keyup": "_toggleClear",
+				"change": "_toggleClear",
+				"input": "_toggleClear",
+				"focus": "_toggleClear",
+				"blur": "_toggleClear",
+				"cut": "_toggleClear",
+				"paste": "_toggleClear"
+
+			});
+
+		},
+
+		_unbindClear: function() {
+			this._off( this._clearBtn, "click");
+			this._off( this.element, "keyup change input focus blur cut paste" );
+		},
+
+		_setOptions: function( options ) {
+			this._super( options );
+
+			if ( options.clearBtn !== undefined &&
+				!this.element.is( "textarea, :jqmData(type='range')" ) ) {
+				if ( options.clearBtn ) {
+					this._addClearBtn();
+				} else {
+					this._destroyClear();
+				}
+			}
+
+			if ( options.clearBtnText !== undefined && this._clearBtn !== undefined ) {
+				this._clearBtn.text( options.clearBtnText )
+					.attr("title", options.clearBtnText);
+			}
+		},
+
+		_toggleClear: function() {
+			this._delay( "_toggleClearClass", 0 );
+		},
+
+		_toggleClearClass: function() {
+			this._clearBtn.toggleClass( "ui-input-clear-hidden", !this.element.val() );
+		},
+
+		_destroyClear: function() {
+			this.widget().removeClass( "ui-input-has-clear" );
+			this._unbindClear();
+			this._clearBtn.remove();
+		},
+
+		_destroy: function() {
+			this._super();
+			if ( this.options.clearBtn ) {
+				this._destroyClear();
+			}
+		}
+
+	});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+	$.widget( "mobile.textinput", $.mobile.textinput, {
+		options: {
+			autogrow:true,
+			keyupTimeoutBuffer: 100
+		},
+
+		_create: function() {
+			this._super();
+
+			if ( this.options.autogrow && this.isTextarea ) {
+				this._autogrow();
+			}
+		},
+
+		_autogrow: function() {
+			this.element.addClass( "ui-textinput-autogrow" );
+
+			this._on({
+				"keyup": "_timeout",
+				"change": "_timeout",
+				"input": "_timeout",
+				"paste": "_timeout"
+			});
+
+			// Attach to the various you-have-become-visible notifications that the
+			// various framework elements emit.
+			// TODO: Remove all but the updatelayout handler once #6426 is fixed.
+			this._on( true, this.document, {
+
+				// TODO: Move to non-deprecated event
+				"pageshow": "_handleShow",
+				"popupbeforeposition": "_handleShow",
+				"updatelayout": "_handleShow",
+				"panelopen": "_handleShow"
+			});
+		},
+
+		// Synchronously fix the widget height if this widget's parents are such
+		// that they show/hide content at runtime. We still need to check whether
+		// the widget is actually visible in case it is contained inside multiple
+		// such containers. For example: panel contains collapsible contains
+		// autogrow textinput. The panel may emit "panelopen" indicating that its
+		// content has become visible, but the collapsible is still collapsed, so
+		// the autogrow textarea is still not visible.
+		_handleShow: function( event ) {
+			if ( $.contains( event.target, this.element[ 0 ] ) &&
+				this.element.is( ":visible" ) ) {
+
+				if ( event.type !== "popupbeforeposition" ) {
+					this.element
+						.addClass( "ui-textinput-autogrow-resize" )
+						.animationComplete(
+							$.proxy( function() {
+								this.element.removeClass( "ui-textinput-autogrow-resize" );
+							}, this ),
+						"transition" );
+				}
+				this._prepareHeightUpdate();
+			}
+		},
+
+		_unbindAutogrow: function() {
+			this.element.removeClass( "ui-textinput-autogrow" );
+			this._off( this.element, "keyup change input paste" );
+			this._off( this.document,
+				"pageshow popupbeforeposition updatelayout panelopen" );
+		},
+
+		keyupTimeout: null,
+
+		_prepareHeightUpdate: function( delay ) {
+			if ( this.keyupTimeout ) {
+				clearTimeout( this.keyupTimeout );
+			}
+			if ( delay === undefined ) {
+				this._updateHeight();
+			} else {
+				this.keyupTimeout = this._delay( "_updateHeight", delay );
+			}
+		},
+
+		_timeout: function() {
+			this._prepareHeightUpdate( this.options.keyupTimeoutBuffer );
+		},
+
+		_updateHeight: function() {
+			var paddingTop, paddingBottom, paddingHeight, scrollHeight, clientHeight,
+				borderTop, borderBottom, borderHeight, height,
+				scrollTop = this.window.scrollTop();
+			this.keyupTimeout = 0;
+
+			// IE8 textareas have the onpage property - others do not
+			if ( !( "onpage" in this.element[ 0 ] ) ) {
+				this.element.css({
+					"height": 0,
+					"min-height": 0,
+					"max-height": 0
+				});
+			}
+
+			scrollHeight = this.element[ 0 ].scrollHeight;
+			clientHeight = this.element[ 0 ].clientHeight;
+			borderTop = parseFloat( this.element.css( "border-top-width" ) );
+			borderBottom = parseFloat( this.element.css( "border-bottom-width" ) );
+			borderHeight = borderTop + borderBottom;
+			height = scrollHeight + borderHeight + 15;
+
+			// Issue 6179: Padding is not included in scrollHeight and
+			// clientHeight by Firefox if no scrollbar is visible. Because
+			// textareas use the border-box box-sizing model, padding should be
+			// included in the new (assigned) height. Because the height is set
+			// to 0, clientHeight == 0 in Firefox. Therefore, we can use this to
+			// check if padding must be added.
+			if ( clientHeight === 0 ) {
+				paddingTop = parseFloat( this.element.css( "padding-top" ) );
+				paddingBottom = parseFloat( this.element.css( "padding-bottom" ) );
+				paddingHeight = paddingTop + paddingBottom;
+
+				height += paddingHeight;
+			}
+
+			this.element.css({
+				"height": height,
+				"min-height": "",
+				"max-height": ""
+			});
+
+			this.window.scrollTop( scrollTop );
+		},
+
+		refresh: function() {
+			if ( this.options.autogrow && this.isTextarea ) {
+				this._updateHeight();
+			}
+		},
+
+		_setOptions: function( options ) {
+
+			this._super( options );
+
+			if ( options.autogrow !== undefined && this.isTextarea ) {
+				if ( options.autogrow ) {
+					this._autogrow();
+				} else {
+					this._unbindAutogrow();
+				}
+			}
+		}
+
+	});
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.widget( "mobile.selectmenu", $.extend( {
+	initSelector: "select:not( :jqmData(role='slider')):not( :jqmData(role='flipswitch') )",
+
+	options: {
+		theme: null,
+		icon: "carat-d",
+		iconpos: "right",
+		inline: false,
+		corners: true,
+		shadow: true,
+		iconshadow: false, /* TODO: Deprecated in 1.4, remove in 1.5. */
+		overlayTheme: null,
+		dividerTheme: null,
+		hidePlaceholderMenuItems: true,
+		closeText: "Close",
+		nativeMenu: true,
+		// This option defaults to true on iOS devices.
+		preventFocusZoom: /iPhone|iPad|iPod/.test( navigator.platform ) && navigator.userAgent.indexOf( "AppleWebKit" ) > -1,
+		mini: false
+	},
+
+	_button: function() {
+		return $( "<div/>" );
+	},
+
+	_setDisabled: function( value ) {
+		this.element.attr( "disabled", value );
+		this.button.attr( "aria-disabled", value );
+		return this._setOption( "disabled", value );
+	},
+
+	_focusButton : function() {
+		var self = this;
+
+		setTimeout( function() {
+			self.button.focus();
+		}, 40);
+	},
+
+	_selectOptions: function() {
+		return this.select.find( "option" );
+	},
+
+	// setup items that are generally necessary for select menu extension
+	_preExtension: function() {
+		var inline = this.options.inline || this.element.jqmData( "inline" ),
+			mini = this.options.mini || this.element.jqmData( "mini" ),
+			classes = "";
+		// TODO: Post 1.1--once we have time to test thoroughly--any classes manually applied to the original element should be carried over to the enhanced element, with an `-enhanced` suffix. See https://github.com/jquery/jquery-mobile/issues/3577
+		/* if ( $el[0].className.length ) {
+			classes = $el[0].className;
+		} */
+		if ( !!~this.element[0].className.indexOf( "ui-btn-left" ) ) {
+			classes = " ui-btn-left";
+		}
+
+		if (  !!~this.element[0].className.indexOf( "ui-btn-right" ) ) {
+			classes = " ui-btn-right";
+		}
+
+		if ( inline ) {
+			classes += " ui-btn-inline";
+		}
+		if ( mini ) {
+			classes += " ui-mini";
+		}
+
+		this.select = this.element.removeClass( "ui-btn-left ui-btn-right" ).wrap( "<div class='ui-select" + classes + "'>" );
+		this.selectId  = this.select.attr( "id" ) || ( "select-" + this.uuid );
+		this.buttonId = this.selectId + "-button";
+		this.label = $( "label[for='"+ this.selectId +"']" );
+		this.isMultiple = this.select[ 0 ].multiple;
+	},
+
+	_destroy: function() {
+		var wrapper = this.element.parents( ".ui-select" );
+		if ( wrapper.length > 0 ) {
+			if ( wrapper.is( ".ui-btn-left, .ui-btn-right" ) ) {
+				this.element.addClass( wrapper.hasClass( "ui-btn-left" ) ? "ui-btn-left" : "ui-btn-right" );
+			}
+			this.element.insertAfter( wrapper );
+			wrapper.remove();
+		}
+	},
+
+	_create: function() {
+		this._preExtension();
+
+		this.button = this._button();
+
+		var self = this,
+
+			options = this.options,
+
+			iconpos = options.icon ? ( options.iconpos || this.select.jqmData( "iconpos" ) ) : false,
+
+			button = this.button
+				.insertBefore( this.select )
+				.attr( "id", this.buttonId )
+				.addClass( "ui-btn" +
+					( options.icon ? ( " ui-icon-" + options.icon + " ui-btn-icon-" + iconpos +
+					( options.iconshadow ? " ui-shadow-icon" : "" ) ) :	"" ) + /* TODO: Remove in 1.5. */
+					( options.theme ? " ui-btn-" + options.theme : "" ) +
+					( options.corners ? " ui-corner-all" : "" ) +
+					( options.shadow ? " ui-shadow" : "" ) );
+
+		this.setButtonText();
+
+		// Opera does not properly support opacity on select elements
+		// In Mini, it hides the element, but not its text
+		// On the desktop,it seems to do the opposite
+		// for these reasons, using the nativeMenu option results in a full native select in Opera
+		if ( options.nativeMenu && window.opera && window.opera.version ) {
+			button.addClass( "ui-select-nativeonly" );
+		}
+
+		// Add counter for multi selects
+		if ( this.isMultiple ) {
+			this.buttonCount = $( "<span>" )
+				.addClass( "ui-li-count ui-body-inherit" )
+				.hide()
+				.appendTo( button.addClass( "ui-li-has-count" ) );
+		}
+
+		// Disable if specified
+		if ( options.disabled || this.element.attr( "disabled" )) {
+			this.disable();
+		}
+
+		// Events on native select
+		this.select.change(function() {
+			self.refresh();
+
+			if ( !!options.nativeMenu ) {
+				self._delay( function() {
+					self.select.blur();
+				});
+			}
+		});
+
+		this._handleFormReset();
+
+		this._on( this.button, {
+			keydown: "_handleKeydown"
+		});
+
+		this.build();
+	},
+
+	build: function() {
+		var self = this;
+
+		this.select
+			.appendTo( self.button )
+			.bind( "vmousedown", function() {
+				// Add active class to button
+				self.button.addClass( $.mobile.activeBtnClass );
+			})
+			.bind( "focus", function() {
+				self.button.addClass( $.mobile.focusClass );
+			})
+			.bind( "blur", function() {
+				self.button.removeClass( $.mobile.focusClass );
+			})
+			.bind( "focus vmouseover", function() {
+				self.button.trigger( "vmouseover" );
+			})
+			.bind( "vmousemove", function() {
+				// Remove active class on scroll/touchmove
+				self.button.removeClass( $.mobile.activeBtnClass );
+			})
+			.bind( "change blur vmouseout", function() {
+				self.button.trigger( "vmouseout" )
+					.removeClass( $.mobile.activeBtnClass );
+			});
+
+		// In many situations, iOS will zoom into the select upon tap, this prevents that from happening
+		self.button.bind( "vmousedown", function() {
+			if ( self.options.preventFocusZoom ) {
+					$.mobile.zoom.disable( true );
+			}
+		});
+		self.label.bind( "click focus", function() {
+			if ( self.options.preventFocusZoom ) {
+					$.mobile.zoom.disable( true );
+			}
+		});
+		self.select.bind( "focus", function() {
+			if ( self.options.preventFocusZoom ) {
+					$.mobile.zoom.disable( true );
+			}
+		});
+		self.button.bind( "mouseup", function() {
+			if ( self.options.preventFocusZoom ) {
+				setTimeout(function() {
+					$.mobile.zoom.enable( true );
+				}, 0 );
+			}
+		});
+		self.select.bind( "blur", function() {
+			if ( self.options.preventFocusZoom ) {
+				$.mobile.zoom.enable( true );
+			}
+		});
+
+	},
+
+	selected: function() {
+		return this._selectOptions().filter( ":selected" );
+	},
+
+	selectedIndices: function() {
+		var self = this;
+
+		return this.selected().map(function() {
+			return self._selectOptions().index( this );
+		}).get();
+	},
+
+	setButtonText: function() {
+		var self = this,
+			selected = this.selected(),
+			text = this.placeholder,
+			span = $( document.createElement( "span" ) );
+
+		this.button.children( "span" ).not( ".ui-li-count" ).remove().end().end().prepend( (function() {
+			if ( selected.length ) {
+				text = selected.map(function() {
+					return $( this ).text();
+				}).get().join( ", " );
+			} else {
+				text = self.placeholder;
+			}
+
+			if ( text ) {
+				span.text( text );
+			} else {
+
+				// Set the contents to &nbsp; which we write as &#160; to be XHTML compliant - see gh-6699
+				span.html( "&#160;" );
+			}
+
+			// TODO possibly aggregate multiple select option classes
+			return span
+				.addClass( self.select.attr( "class" ) )
+				.addClass( selected.attr( "class" ) )
+				.removeClass( "ui-screen-hidden" );
+		})());
+	},
+
+	setButtonCount: function() {
+		var selected = this.selected();
+
+		// multiple count inside button
+		if ( this.isMultiple ) {
+			this.buttonCount[ selected.length > 1 ? "show" : "hide" ]().text( selected.length );
+		}
+	},
+
+	_handleKeydown: function( /* event */ ) {
+		this._delay( "_refreshButton" );
+	},
+
+	_reset: function() {
+		this.refresh();
+	},
+
+	_refreshButton: function() {
+		this.setButtonText();
+		this.setButtonCount();
+	},
+
+	refresh: function() {
+		this._refreshButton();
+	},
+
+	// open and close preserved in native selects
+	// to simplify users code when looping over selects
+	open: $.noop,
+	close: $.noop,
+
+	disable: function() {
+		this._setDisabled( true );
+		this.button.addClass( "ui-state-disabled" );
+	},
+
+	enable: function() {
+		this._setDisabled( false );
+		this.button.removeClass( "ui-state-disabled" );
+	}
+}, $.mobile.behaviors.formReset ) );
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.mobile.links = function( target ) {
+
+	//links within content areas, tests included with page
+	$( target )
+		.find( "a" )
+		.jqmEnhanceable()
+		.filter( ":jqmData(rel='popup')[href][href!='']" )
+		.each( function() {
+			// Accessibility info for popups
+			var element = this,
+				idref = element.getAttribute( "href" ).substring( 1 );
+
+			if ( idref ) {
+				element.setAttribute( "aria-haspopup", true );
+				element.setAttribute( "aria-owns", idref );
+				element.setAttribute( "aria-expanded", false );
+			}
+		})
+		.end()
+		.not( ".ui-btn, :jqmData(role='none'), :jqmData(role='nojs')" )
+		.addClass( "ui-link" );
+
+};
+
+})( jQuery );
+
+
+(function( $, undefined ) {
+
+function fitSegmentInsideSegment( windowSize, segmentSize, offset, desired ) {
+	var returnValue = desired;
+
+	if ( windowSize < segmentSize ) {
+		// Center segment if it's bigger than the window
+		returnValue = offset + ( windowSize - segmentSize ) / 2;
+	} else {
+		// Otherwise center it at the desired coordinate while keeping it completely inside the window
+		returnValue = Math.min( Math.max( offset, desired - segmentSize / 2 ), offset + windowSize - segmentSize );
+	}
+
+	return returnValue;
+}
+
+function getWindowCoordinates( theWindow ) {
+	return {
+		x: theWindow.scrollLeft(),
+		y: theWindow.scrollTop(),
+		cx: ( theWindow[ 0 ].innerWidth || theWindow.width() ),
+		cy: ( theWindow[ 0 ].innerHeight || theWindow.height() )
+	};
+}
+
+$.widget( "mobile.popup", {
+	options: {
+		wrapperClass: null,
+		theme: null,
+		overlayTheme: null,
+		shadow: true,
+		corners: true,
+		transition: "none",
+		positionTo: "origin",
+		tolerance: null,
+		closeLinkSelector: "a:jqmData(rel='back')",
+		closeLinkEvents: "click.popup",
+		navigateEvents: "navigate.popup",
+		closeEvents: "navigate.popup pagebeforechange.popup",
+		dismissible: true,
+		enhanced: false,
+
+		// NOTE Windows Phone 7 has a scroll position caching issue that
+		//      requires us to disable popup history management by default
+		//      https://github.com/jquery/jquery-mobile/issues/4784
+		//
+		// NOTE this option is modified in _create!
+		history: !$.mobile.browser.oldIE
+	},
+
+	// When the user depresses the mouse/finger on an element inside the popup while the popup is
+	// open, we ignore resize events for a short while. This prevents #6961.
+	_handleDocumentVmousedown: function( theEvent ) {
+		if ( this._isOpen && $.contains( this._ui.container[ 0 ], theEvent.target ) ) {
+			this._ignoreResizeEvents();
+		}
+	},
+
+	_create: function() {
+		var theElement = this.element,
+			myId = theElement.attr( "id" ),
+			currentOptions = this.options;
+
+		// We need to adjust the history option to be false if there's no AJAX nav.
+		// We can't do it in the option declarations because those are run before
+		// it is determined whether there shall be AJAX nav.
+		currentOptions.history = currentOptions.history && $.mobile.ajaxEnabled && $.mobile.hashListeningEnabled;
+
+		this._on( this.document, {
+			"vmousedown": "_handleDocumentVmousedown"
+		});
+
+		// Define instance variables
+		$.extend( this, {
+			_scrollTop: 0,
+			_page: theElement.closest( ".ui-page" ),
+			_ui: null,
+			_fallbackTransition: "",
+			_currentTransition: false,
+			_prerequisites: null,
+			_isOpen: false,
+			_tolerance: null,
+			_resizeData: null,
+			_ignoreResizeTo: 0,
+			_orientationchangeInProgress: false
+		});
+
+		if ( this._page.length === 0 ) {
+			this._page = $( "body" );
+		}
+
+		if ( currentOptions.enhanced ) {
+			this._ui = {
+				container: theElement.parent(),
+				screen: theElement.parent().prev(),
+				placeholder: $( this.document[ 0 ].getElementById( myId + "-placeholder" ) )
+			};
+		} else {
+			this._ui = this._enhance( theElement, myId );
+			this._applyTransition( currentOptions.transition );
+		}
+		this
+			._setTolerance( currentOptions.tolerance )
+			._ui.focusElement = this._ui.container;
+
+		// Event handlers
+		this._on( this._ui.screen, { "vclick": "_eatEventAndClose" } );
+		this._on( this.window, {
+			orientationchange: $.proxy( this, "_handleWindowOrientationchange" ),
+			resize: $.proxy( this, "_handleWindowResize" ),
+			keyup: $.proxy( this, "_handleWindowKeyUp" )
+		});
+		this._on( this.document, { "focusin": "_handleDocumentFocusIn" } );
+	},
+
+	_enhance: function( theElement, myId ) {
+		var currentOptions = this.options,
+			wrapperClass = currentOptions.wrapperClass,
+			ui = {
+				screen: $( "<div class='ui-screen-hidden ui-popup-screen " +
+				this._themeClassFromOption( "ui-overlay-", currentOptions.overlayTheme ) + "'></div>" ),
+				placeholder: $( "<div style='display: none;'><!-- placeholder --></div>" ),
+				container: $( "<div class='ui-popup-container ui-popup-hidden ui-popup-truncate" +
+					( wrapperClass ? ( " " + wrapperClass ) : "" ) + "'></div>" )
+			},
+			fragment = this.document[ 0 ].createDocumentFragment();
+
+		fragment.appendChild( ui.screen[ 0 ] );
+		fragment.appendChild( ui.container[ 0 ] );
+
+		if ( myId ) {
+			ui.screen.attr( "id", myId + "-screen" );
+			ui.container.attr( "id", myId + "-popup" );
+			ui.placeholder
+				.attr( "id", myId + "-placeholder" )
+				.html( "<!-- placeholder for " + myId + " -->" );
+		}
+
+		// Apply the proto
+		this._page[ 0 ].appendChild( fragment );
+		// Leave a placeholder where the element used to be
+		ui.placeholder.insertAfter( theElement );
+		theElement
+			.detach()
+			.addClass( "ui-popup " +
+				this._themeClassFromOption( "ui-body-", currentOptions.theme ) + " " +
+				( currentOptions.shadow ? "ui-overlay-shadow " : "" ) +
+				( currentOptions.corners ? "ui-corner-all " : "" ) )
+			.appendTo( ui.container );
+
+		return ui;
+	},
+
+	_eatEventAndClose: function( theEvent ) {
+		theEvent.preventDefault();
+		theEvent.stopImmediatePropagation();
+		if ( this.options.dismissible ) {
+			this.close();
+		}
+		return false;
+	},
+
+	// Make sure the screen covers the entire document - CSS is sometimes not
+	// enough to accomplish this.
+	_resizeScreen: function() {
+		var screen = this._ui.screen,
+			popupHeight = this._ui.container.outerHeight( true ),
+			screenHeight = screen.removeAttr( "style" ).height(),
+
+			// Subtracting 1 here is necessary for an obscure Andrdoid 4.0 bug where
+			// the browser hangs if the screen covers the entire document :/
+			documentHeight = this.document.height() - 1;
+
+		if ( screenHeight < documentHeight ) {
+			screen.height( documentHeight );
+		} else if ( popupHeight > screenHeight ) {
+			screen.height( popupHeight );
+		}
+	},
+
+	_handleWindowKeyUp: function( theEvent ) {
+		if ( this._isOpen && theEvent.keyCode === $.mobile.keyCode.ESCAPE ) {
+			return this._eatEventAndClose( theEvent );
+		}
+	},
+
+	_expectResizeEvent: function() {
+		var windowCoordinates = getWindowCoordinates( this.window );
+
+		if ( this._resizeData ) {
+			if ( windowCoordinates.x === this._resizeData.windowCoordinates.x &&
+				windowCoordinates.y === this._resizeData.windowCoordinates.y &&
+				windowCoordinates.cx === this._resizeData.windowCoordinates.cx &&
+				windowCoordinates.cy === this._resizeData.windowCoordinates.cy ) {
+				// timeout not refreshed
+				return false;
+			} else {
+				// clear existing timeout - it will be refreshed below
+				clearTimeout( this._resizeData.timeoutId );
+			}
+		}
+
+		this._resizeData = {
+			timeoutId: this._delay( "_resizeTimeout", 200 ),
+			windowCoordinates: windowCoordinates
+		};
+
+		return true;
+	},
+
+	_resizeTimeout: function() {
+		if ( this._isOpen ) {
+			if ( !this._expectResizeEvent() ) {
+				if ( this._ui.container.hasClass( "ui-popup-hidden" ) ) {
+					// effectively rapid-open the popup while leaving the screen intact
+					this._ui.container.removeClass( "ui-popup-hidden ui-popup-truncate" );
+					this.reposition( { positionTo: "window" } );
+					this._ignoreResizeEvents();
+				}
+
+				this._resizeScreen();
+				this._resizeData = null;
+				this._orientationchangeInProgress = false;
+			}
+		} else {
+			this._resizeData = null;
+			this._orientationchangeInProgress = false;
+		}
+	},
+
+	_stopIgnoringResizeEvents: function() {
+		this._ignoreResizeTo = 0;
+	},
+
+	_ignoreResizeEvents: function() {
+		if ( this._ignoreResizeTo ) {
+			clearTimeout( this._ignoreResizeTo );
+		}
+		this._ignoreResizeTo = this._delay( "_stopIgnoringResizeEvents", 1000 );
+	},
+
+	_handleWindowResize: function(/* theEvent */) {
+		if ( this._isOpen && this._ignoreResizeTo === 0 ) {
+			if ( ( this._expectResizeEvent() || this._orientationchangeInProgress ) &&
+				!this._ui.container.hasClass( "ui-popup-hidden" ) ) {
+				// effectively rapid-close the popup while leaving the screen intact
+				this._ui.container
+					.addClass( "ui-popup-hidden ui-popup-truncate" )
+					.removeAttr( "style" );
+			}
+		}
+	},
+
+	_handleWindowOrientationchange: function(/* theEvent */) {
+		if ( !this._orientationchangeInProgress && this._isOpen && this._ignoreResizeTo === 0 ) {
+			this._expectResizeEvent();
+			this._orientationchangeInProgress = true;
+		}
+	},
+
+	// When the popup is open, attempting to focus on an element that is not a
+	// child of the popup will redirect focus to the popup
+	_handleDocumentFocusIn: function( theEvent ) {
+		var target,
+			targetElement = theEvent.target,
+			ui = this._ui;
+
+		if ( !this._isOpen ) {
+			return;
+		}
+
+		if ( targetElement !== ui.container[ 0 ] ) {
+			target = $( targetElement );
+			if ( !$.contains( ui.container[ 0 ], targetElement ) ) {
+				$( this.document[ 0 ].activeElement ).one( "focus", $.proxy( function() {
+					this._safelyBlur( targetElement );
+				}, this ) );
+				ui.focusElement.focus();
+				theEvent.preventDefault();
+				theEvent.stopImmediatePropagation();
+				return false;
+			} else if ( ui.focusElement[ 0 ] === ui.container[ 0 ] ) {
+				ui.focusElement = target;
+			}
+		}
+
+		this._ignoreResizeEvents();
+	},
+
+	_themeClassFromOption: function( prefix, value ) {
+		return ( value ? ( value === "none" ? "" : ( prefix + value ) ) : ( prefix + "inherit" ) );
+	},
+
+	_applyTransition: function( value ) {
+		if ( value ) {
+			this._ui.container.removeClass( this._fallbackTransition );
+			if ( value !== "none" ) {
+				this._fallbackTransition = $.mobile._maybeDegradeTransition( value );
+				if ( this._fallbackTransition === "none" ) {
+					this._fallbackTransition = "";
+				}
+				this._ui.container.addClass( this._fallbackTransition );
+			}
+		}
+
+		return this;
+	},
+
+	_setOptions: function( newOptions ) {
+		var currentOptions = this.options,
+			theElement = this.element,
+			screen = this._ui.screen;
+
+		if ( newOptions.wrapperClass !== undefined ) {
+			this._ui.container
+				.removeClass( currentOptions.wrapperClass )
+				.addClass( newOptions.wrapperClass );
+		}
+
+		if ( newOptions.theme !== undefined ) {
+			theElement
+				.removeClass( this._themeClassFromOption( "ui-body-", currentOptions.theme ) )
+				.addClass( this._themeClassFromOption( "ui-body-", newOptions.theme ) );
+		}
+
+		if ( newOptions.overlayTheme !== undefined ) {
+			screen
+				.removeClass( this._themeClassFromOption( "ui-overlay-", currentOptions.overlayTheme ) )
+				.addClass( this._themeClassFromOption( "ui-overlay-", newOptions.overlayTheme ) );
+
+			if ( this._isOpen ) {
+				screen.addClass( "in" );
+			}
+		}
+
+		if ( newOptions.shadow !== undefined ) {
+			theElement.toggleClass( "ui-overlay-shadow", newOptions.shadow );
+		}
+
+		if ( newOptions.corners !== undefined ) {
+			theElement.toggleClass( "ui-corner-all", newOptions.corners );
+		}
+
+		if ( newOptions.transition !== undefined ) {
+			if ( !this._currentTransition ) {
+				this._applyTransition( newOptions.transition );
+			}
+		}
+
+		if ( newOptions.tolerance !== undefined ) {
+			this._setTolerance( newOptions.tolerance );
+		}
+
+		if ( newOptions.disabled !== undefined ) {
+			if ( newOptions.disabled ) {
+				this.close();
+			}
+		}
+
+		return this._super( newOptions );
+	},
+
+	_setTolerance: function( value ) {
+		var tol = { t: 30, r: 15, b: 30, l: 15 },
+			ar;
+
+		if ( value !== undefined ) {
+			ar = String( value ).split( "," );
+
+			$.each( ar, function( idx, val ) { ar[ idx ] = parseInt( val, 10 ); } );
+
+			switch( ar.length ) {
+				// All values are to be the same
+				case 1:
+					if ( !isNaN( ar[ 0 ] ) ) {
+						tol.t = tol.r = tol.b = tol.l = ar[ 0 ];
+					}
+					break;
+
+				// The first value denotes top/bottom tolerance, and the second value denotes left/right tolerance
+				case 2:
+					if ( !isNaN( ar[ 0 ] ) ) {
+						tol.t = tol.b = ar[ 0 ];
+					}
+					if ( !isNaN( ar[ 1 ] ) ) {
+						tol.l = tol.r = ar[ 1 ];
+					}
+					break;
+
+				// The array contains values in the order top, right, bottom, left
+				case 4:
+					if ( !isNaN( ar[ 0 ] ) ) {
+						tol.t = ar[ 0 ];
+					}
+					if ( !isNaN( ar[ 1 ] ) ) {
+						tol.r = ar[ 1 ];
+					}
+					if ( !isNaN( ar[ 2 ] ) ) {
+						tol.b = ar[ 2 ];
+					}
+					if ( !isNaN( ar[ 3 ] ) ) {
+						tol.l = ar[ 3 ];
+					}
+					break;
+
+				default:
+					break;
+			}
+		}
+
+		this._tolerance = tol;
+		return this;
+	},
+
+	_clampPopupWidth: function( infoOnly ) {
+		var menuSize,
+			windowCoordinates = getWindowCoordinates( this.window ),
+			// rectangle within which the popup must fit
+			rectangle = {
+				x: this._tolerance.l,
+				y: windowCoordinates.y + this._tolerance.t,
+				cx: windowCoordinates.cx - this._tolerance.l - this._tolerance.r,
+				cy: windowCoordinates.cy - this._tolerance.t - this._tolerance.b
+			};
+
+		if ( !infoOnly ) {
+			// Clamp the width of the menu before grabbing its size
+			this._ui.container.css( "max-width", rectangle.cx );
+		}
+
+		menuSize = {
+			cx: this._ui.container.outerWidth( true ),
+			cy: this._ui.container.outerHeight( true )
+		};
+
+		return { rc: rectangle, menuSize: menuSize };
+	},
+
+	_calculateFinalLocation: function( desired, clampInfo ) {
+		var returnValue,
+			rectangle = clampInfo.rc,
+			menuSize = clampInfo.menuSize;
+
+		// Center the menu over the desired coordinates, while not going outside
+		// the window tolerances. This will center wrt. the window if the popup is
+		// too large.
+		returnValue = {
+			left: fitSegmentInsideSegment( rectangle.cx, menuSize.cx, rectangle.x, desired.x ),
+			top: fitSegmentInsideSegment( rectangle.cy, menuSize.cy, rectangle.y, desired.y )
+		};
+
+		// Make sure the top of the menu is visible
+		returnValue.top = Math.max( 0, returnValue.top );
+
+		// If the height of the menu is smaller than the height of the document
+		// align the bottom with the bottom of the document
+
+		returnValue.top -= Math.min( returnValue.top,
+			Math.max( 0, returnValue.top + menuSize.cy - this.document.height() ) );
+
+		return returnValue;
+	},
+
+	// Try and center the overlay over the given coordinates
+	_placementCoords: function( desired ) {
+		return this._calculateFinalLocation( desired, this._clampPopupWidth() );
+	},
+
+	_createPrerequisites: function( screenPrerequisite, containerPrerequisite, whenDone ) {
+		var prerequisites,
+			self = this;
+
+		// It is important to maintain both the local variable prerequisites and
+		// self._prerequisites. The local variable remains in the closure of the
+		// functions which call the callbacks passed in. The comparison between the
+		// local variable and self._prerequisites is necessary, because once a
+		// function has been passed to .animationComplete() it will be called next
+		// time an animation completes, even if that's not the animation whose end
+		// the function was supposed to catch (for example, if an abort happens
+		// during the opening animation, the .animationComplete handler is not
+		// called for that animation anymore, but the handler remains attached, so
+		// it is called the next time the popup is opened - making it stale.
+		// Comparing the local variable prerequisites to the widget-level variable
+		// self._prerequisites ensures that callbacks triggered by a stale
+		// .animationComplete will be ignored.
+
+		prerequisites = {
+			screen: $.Deferred(),
+			container: $.Deferred()
+		};
+
+		prerequisites.screen.then( function() {
+			if ( prerequisites === self._prerequisites ) {
+				screenPrerequisite();
+			}
+		});
+
+		prerequisites.container.then( function() {
+			if ( prerequisites === self._prerequisites ) {
+				containerPrerequisite();
+			}
+		});
+
+		$.when( prerequisites.screen, prerequisites.container ).done( function() {
+			if ( prerequisites === self._prerequisites ) {
+				self._prerequisites = null;
+				whenDone();
+			}
+		});
+
+		self._prerequisites = prerequisites;
+	},
+
+	_animate: function( args ) {
+		// NOTE before removing the default animation of the screen
+		//      this had an animate callback that would resolve the deferred
+		//      now the deferred is resolved immediately
+		// TODO remove the dependency on the screen deferred
+		this._ui.screen
+			.removeClass( args.classToRemove )
+			.addClass( args.screenClassToAdd );
+
+		args.prerequisites.screen.resolve();
+
+		if ( args.transition && args.transition !== "none" ) {
+			if ( args.applyTransition ) {
+				this._applyTransition( args.transition );
+			}
+			if ( this._fallbackTransition ) {
+				this._ui.container
+					.addClass( args.containerClassToAdd )
+					.removeClass( args.classToRemove )
+					.animationComplete( $.proxy( args.prerequisites.container, "resolve" ) );
+				return;
+			}
+		}
+		this._ui.container.removeClass( args.classToRemove );
+		args.prerequisites.container.resolve();
+	},
+
+	// The desired coordinates passed in will be returned untouched if no reference element can be identified via
+	// desiredPosition.positionTo. Nevertheless, this function ensures that its return value always contains valid
+	// x and y coordinates by specifying the center middle of the window if the coordinates are absent.
+	// options: { x: coordinate, y: coordinate, positionTo: string: "origin", "window", or jQuery selector
+	_desiredCoords: function( openOptions ) {
+		var offset,
+			dst = null,
+			windowCoordinates = getWindowCoordinates( this.window ),
+			x = openOptions.x,
+			y = openOptions.y,
+			pTo = openOptions.positionTo;
+
+		// Establish which element will serve as the reference
+		if ( pTo && pTo !== "origin" ) {
+			if ( pTo === "window" ) {
+				x = windowCoordinates.cx / 2 + windowCoordinates.x;
+				y = windowCoordinates.cy / 2 + windowCoordinates.y;
+			} else {
+				try {
+					dst = $( pTo );
+				} catch( err ) {
+					dst = null;
+				}
+				if ( dst ) {
+					dst.filter( ":visible" );
+					if ( dst.length === 0 ) {
+						dst = null;
+					}
+				}
+			}
+		}
+
+		// If an element was found, center over it
+		if ( dst ) {
+			offset = dst.offset();
+			x = offset.left + dst.outerWidth() / 2;
+			y = offset.top + dst.outerHeight() / 2;
+		}
+
+		// Make sure x and y are valid numbers - center over the window
+		if ( $.type( x ) !== "number" || isNaN( x ) ) {
+			x = windowCoordinates.cx / 2 + windowCoordinates.x;
+		}
+		if ( $.type( y ) !== "number" || isNaN( y ) ) {
+			y = windowCoordinates.cy / 2 + windowCoordinates.y;
+		}
+
+		return { x: x, y: y };
+	},
+
+	_reposition: function( openOptions ) {
+		// We only care about position-related parameters for repositioning
+		openOptions = {
+			x: openOptions.x,
+			y: openOptions.y,
+			positionTo: openOptions.positionTo
+		};
+		this._trigger( "beforeposition", undefined, openOptions );
+		this._ui.container.offset( this._placementCoords( this._desiredCoords( openOptions ) ) );
+	},
+
+	reposition: function( openOptions ) {
+		if ( this._isOpen ) {
+			this._reposition( openOptions );
+		}
+	},
+
+	_safelyBlur: function( currentElement ){
+		if ( currentElement !== this.window[ 0 ] &&
+			currentElement.nodeName.toLowerCase() !== "body" ) {
+				$( currentElement ).blur();
+		}
+	},
+
+	_openPrerequisitesComplete: function() {
+		var id = this.element.attr( "id" ),
+			firstFocus = this._ui.container.find( ":focusable" ).first();
+
+		this._ui.container.addClass( "ui-popup-active" );
+		this._isOpen = true;
+		this._resizeScreen();
+
+		// Check to see if currElement is not a child of the container.  If it's not, blur
+		if ( !$.contains( this._ui.container[ 0 ], this.document[ 0 ].activeElement ) ) {
+			this._safelyBlur( this.document[ 0 ].activeElement );
+		}
+		if ( firstFocus.length > 0 ) {
+			this._ui.focusElement = firstFocus;
+		}
+		this._ignoreResizeEvents();
+		if ( id ) {
+			this.document.find( "[aria-haspopup='true'][aria-owns='" +  id + "']" ).attr( "aria-expanded", true );
+		}
+		this._trigger( "afteropen" );
+	},
+
+	_open: function( options ) {
+		var openOptions = $.extend( {}, this.options, options ),
+			// TODO move blacklist to private method
+			androidBlacklist = ( function() {
+				var ua = navigator.userAgent,
+					// Rendering engine is Webkit, and capture major version
+					wkmatch = ua.match( /AppleWebKit\/([0-9\.]+)/ ),
+					wkversion = !!wkmatch && wkmatch[ 1 ],
+					androidmatch = ua.match( /Android (\d+(?:\.\d+))/ ),
+					andversion = !!androidmatch && androidmatch[ 1 ],
+					chromematch = ua.indexOf( "Chrome" ) > -1;
+
+				// Platform is Android, WebKit version is greater than 534.13 ( Android 3.2.1 ) and not Chrome.
+				if ( androidmatch !== null && andversion === "4.0" && wkversion && wkversion > 534.13 && !chromematch ) {
+					return true;
+				}
+				return false;
+			}());
+
+		// Count down to triggering "popupafteropen" - we have two prerequisites:
+		// 1. The popup window animation completes (container())
+		// 2. The screen opacity animation completes (screen())
+		this._createPrerequisites(
+			$.noop,
+			$.noop,
+			$.proxy( this, "_openPrerequisitesComplete" ) );
+
+		this._currentTransition = openOptions.transition;
+		this._applyTransition( openOptions.transition );
+
+		this._ui.screen.removeClass( "ui-screen-hidden" );
+		this._ui.container.removeClass( "ui-popup-truncate" );
+
+		// Give applications a chance to modify the contents of the container before it appears
+		this._reposition( openOptions );
+
+		this._ui.container.removeClass( "ui-popup-hidden" );
+
+		if ( this.options.overlayTheme && androidBlacklist ) {
+			/* TODO: The native browser on Android 4.0.X ("Ice Cream Sandwich") suffers from an issue where the popup overlay appears to be z-indexed above the popup itself when certain other styles exist on the same page -- namely, any element set to `position: fixed` and certain types of input. These issues are reminiscent of previously uncovered bugs in older versions of Android's native browser: https://github.com/scottjehl/Device-Bugs/issues/3
+			This fix closes the following bugs ( I use "closes" with reluctance, and stress that this issue should be revisited as soon as possible ):
+			https://github.com/jquery/jquery-mobile/issues/4816
+			https://github.com/jquery/jquery-mobile/issues/4844
+			https://github.com/jquery/jquery-mobile/issues/4874
+			*/
+
+			// TODO sort out why this._page isn't working
+			this.element.closest( ".ui-page" ).addClass( "ui-popup-open" );
+		}
+		this._animate({
+			additionalCondition: true,
+			transition: openOptions.transition,
+			classToRemove: "",
+			screenClassToAdd: "in",
+			containerClassToAdd: "in",
+			applyTransition: false,
+			prerequisites: this._prerequisites
+		});
+	},
+
+	_closePrerequisiteScreen: function() {
+		this._ui.screen
+			.removeClass( "out" )
+			.addClass( "ui-screen-hidden" );
+	},
+
+	_closePrerequisiteContainer: function() {
+		this._ui.container
+			.removeClass( "reverse out" )
+			.addClass( "ui-popup-hidden ui-popup-truncate" )
+			.removeAttr( "style" );
+	},
+
+	_closePrerequisitesDone: function() {
+		var container = this._ui.container,
+			id = this.element.attr( "id" );
+
+		// remove the global mutex for popups
+		$.mobile.popup.active = undefined;
+
+		// Blur elements inside the container, including the container
+		$( ":focus", container[ 0 ] ).add( container[ 0 ] ).blur();
+
+		if ( id ) {
+			this.document.find( "[aria-haspopup='true'][aria-owns='" +  id + "']" ).attr( "aria-expanded", false );
+		}
+
+		// alert users that the popup is closed
+		this._trigger( "afterclose" );
+	},
+
+	_close: function( immediate ) {
+		this._ui.container.removeClass( "ui-popup-active" );
+		this._page.removeClass( "ui-popup-open" );
+
+		this._isOpen = false;
+
+		// Count down to triggering "popupafterclose" - we have two prerequisites:
+		// 1. The popup window reverse animation completes (container())
+		// 2. The screen opacity animation completes (screen())
+		this._createPrerequisites(
+			$.proxy( this, "_closePrerequisiteScreen" ),
+			$.proxy( this, "_closePrerequisiteContainer" ),
+			$.proxy( this, "_closePrerequisitesDone" ) );
+
+		this._animate( {
+			additionalCondition: this._ui.screen.hasClass( "in" ),
+			transition: ( immediate ? "none" : ( this._currentTransition ) ),
+			classToRemove: "in",
+			screenClassToAdd: "out",
+			containerClassToAdd: "reverse out",
+			applyTransition: true,
+			prerequisites: this._prerequisites
+		});
+	},
+
+	_unenhance: function() {
+		if ( this.options.enhanced ) {
+			return;
+		}
+
+		// Put the element back to where the placeholder was and remove the "ui-popup" class
+		this._setOptions( { theme: $.mobile.popup.prototype.options.theme } );
+		this.element
+			// Cannot directly insertAfter() - we need to detach() first, because
+			// insertAfter() will do nothing if the payload div was not attached
+			// to the DOM at the time the widget was created, and so the payload
+			// will remain inside the container even after we call insertAfter().
+			// If that happens and we remove the container a few lines below, we
+			// will cause an infinite recursion - #5244
+			.detach()
+			.insertAfter( this._ui.placeholder )
+			.removeClass( "ui-popup ui-overlay-shadow ui-corner-all ui-body-inherit" );
+		this._ui.screen.remove();
+		this._ui.container.remove();
+		this._ui.placeholder.remove();
+	},
+
+	_destroy: function() {
+		if ( $.mobile.popup.active === this ) {
+			this.element.one( "popupafterclose", $.proxy( this, "_unenhance" ) );
+			this.close();
+		} else {
+			this._unenhance();
+		}
+
+		return this;
+	},
+
+	_closePopup: function( theEvent, data ) {
+		var parsedDst, toUrl,
+			currentOptions = this.options,
+			immediate = false;
+
+		if ( ( theEvent && theEvent.isDefaultPrevented() ) || $.mobile.popup.active !== this ) {
+			return;
+		}
+
+		// restore location on screen
+		window.scrollTo( 0, this._scrollTop );
+
+		if ( theEvent && theEvent.type === "pagebeforechange" && data ) {
+			// Determine whether we need to rapid-close the popup, or whether we can
+			// take the time to run the closing transition
+			if ( typeof data.toPage === "string" ) {
+				parsedDst = data.toPage;
+			} else {
+				parsedDst = data.toPage.jqmData( "url" );
+			}
+			parsedDst = $.mobile.path.parseUrl( parsedDst );
+			toUrl = parsedDst.pathname + parsedDst.search + parsedDst.hash;
+
+			if ( this._myUrl !== $.mobile.path.makeUrlAbsolute( toUrl ) ) {
+				// Going to a different page - close immediately
+				immediate = true;
+			} else {
+				theEvent.preventDefault();
+			}
+		}
+
+		// remove nav bindings
+		this.window.off( currentOptions.closeEvents );
+		// unbind click handlers added when history is disabled
+		this.element.undelegate( currentOptions.closeLinkSelector, currentOptions.closeLinkEvents );
+
+		this._close( immediate );
+	},
+
+	// any navigation event after a popup is opened should close the popup
+	// NOTE the pagebeforechange is bound to catch navigation events that don't
+	//      alter the url (eg, dialogs from popups)
+	_bindContainerClose: function() {
+		this.window
+			.on( this.options.closeEvents, $.proxy( this, "_closePopup" ) );
+	},
+
+	widget: function() {
+		return this._ui.container;
+	},
+
+	// TODO no clear deliniation of what should be here and
+	// what should be in _open. Seems to be "visual" vs "history" for now
+	open: function( options ) {
+		var url, hashkey, activePage, currentIsDialog, hasHash, urlHistory,
+			self = this,
+			currentOptions = this.options;
+
+		// make sure open is idempotent
+		if ( $.mobile.popup.active || currentOptions.disabled ) {
+			return this;
+		}
+
+		// set the global popup mutex
+		$.mobile.popup.active = this;
+		this._scrollTop = this.window.scrollTop();
+
+		// if history alteration is disabled close on navigate events
+		// and leave the url as is
+		if ( !( currentOptions.history ) ) {
+			self._open( options );
+			self._bindContainerClose();
+
+			// When histoy is disabled we have to grab the data-rel
+			// back link clicks so we can close the popup instead of
+			// relying on history to do it for us
+			self.element
+				.delegate( currentOptions.closeLinkSelector, currentOptions.closeLinkEvents, function( theEvent ) {
+					self.close();
+					theEvent.preventDefault();
+				});
+
+			return this;
+		}
+
+		// cache some values for min/readability
+		urlHistory = $.mobile.navigate.history;
+		hashkey = $.mobile.dialogHashKey;
+		activePage = $.mobile.activePage;
+		currentIsDialog = ( activePage ? activePage.hasClass( "ui-dialog" ) : false );
+		this._myUrl = url = urlHistory.getActive().url;
+		hasHash = ( url.indexOf( hashkey ) > -1 ) && !currentIsDialog && ( urlHistory.activeIndex > 0 );
+
+		if ( hasHash ) {
+			self._open( options );
+			self._bindContainerClose();
+			return this;
+		}
+
+		// if the current url has no dialog hash key proceed as normal
+		// otherwise, if the page is a dialog simply tack on the hash key
+		if ( url.indexOf( hashkey ) === -1 && !currentIsDialog ) {
+			url = url + (url.indexOf( "#" ) > -1 ? hashkey : "#" + hashkey);
+		} else {
+			url = $.mobile.path.parseLocation().hash + hashkey;
+		}
+
+		// swallow the the initial navigation event, and bind for the next
+		this.window.one( "beforenavigate", function( theEvent ) {
+			theEvent.preventDefault();
+			self._open( options );
+			self._bindContainerClose();
+		});
+
+		this.urlAltered = true;
+		$.mobile.navigate( url, { role: "dialog" } );
+
+		return this;
+	},
+
+	close: function() {
+		// make sure close is idempotent
+		if ( $.mobile.popup.active !== this ) {
+			return this;
+		}
+
+		this._scrollTop = this.window.scrollTop();
+
+		if ( this.options.history && this.urlAltered ) {
+			$.mobile.back();
+			this.urlAltered = false;
+		} else {
+			// simulate the nav bindings having fired
+			this._closePopup();
+		}
+
+		return this;
+	}
+});
+
+// TODO this can be moved inside the widget
+$.mobile.popup.handleLink = function( $link ) {
+	var offset,
+		path = $.mobile.path,
+
+		// NOTE make sure to get only the hash from the href because ie7 (wp7)
+		//      returns the absolute href in this case ruining the element selection
+		popup = $( path.hashToSelector( path.parseUrl( $link.attr( "href" ) ).hash ) ).first();
+
+	if ( popup.length > 0 && popup.data( "mobile-popup" ) ) {
+		offset = $link.offset();
+		popup.popup( "open", {
+			x: offset.left + $link.outerWidth() / 2,
+			y: offset.top + $link.outerHeight() / 2,
+			transition: $link.jqmData( "transition" ),
+			positionTo: $link.jqmData( "position-to" )
+		});
+	}
+
+	//remove after delay
+	setTimeout( function() {
+		$link.removeClass( $.mobile.activeBtnClass );
+	}, 300 );
+};
+
+// TODO move inside _create
+$.mobile.document.on( "pagebeforechange", function( theEvent, data ) {
+	if ( data.options.role === "popup" ) {
+		$.mobile.popup.handleLink( data.options.link );
+		theEvent.preventDefault();
+	}
+});
+
+})( jQuery );
+
+/*
+* custom "selectmenu" plugin
+*/
+
+(function( $, undefined ) {
+
+var unfocusableItemSelector = ".ui-disabled,.ui-state-disabled,.ui-li-divider,.ui-screen-hidden,:jqmData(role='placeholder')",
+	goToAdjacentItem = function( item, target, direction ) {
+		var adjacent = item[ direction + "All" ]()
+			.not( unfocusableItemSelector )
+			.first();
+
+		// if there's a previous option, focus it
+		if ( adjacent.length ) {
+			target
+				.blur()
+				.attr( "tabindex", "-1" );
+
+			adjacent.find( "a" ).first().focus();
+		}
+	};
+
+$.widget( "mobile.selectmenu", $.mobile.selectmenu, {
+	_create: function() {
+		var o = this.options;
+
+		// Custom selects cannot exist inside popups, so revert the "nativeMenu"
+		// option to true if a parent is a popup
+		o.nativeMenu = o.nativeMenu || ( this.element.parents( ":jqmData(role='popup'),:mobile-popup" ).length > 0 );
+
+		return this._super();
+	},
+
+	_handleSelectFocus: function() {
+		this.element.blur();
+		this.button.focus();
+	},
+
+	_handleKeydown: function( event ) {
+		this._super( event );
+		this._handleButtonVclickKeydown( event );
+	},
+
+	_handleButtonVclickKeydown: function( event ) {
+		if ( this.options.disabled || this.isOpen || this.options.nativeMenu ) {
+			return;
+		}
+
+		if (event.type === "vclick" ||
+				event.keyCode && (event.keyCode === $.mobile.keyCode.ENTER || event.keyCode === $.mobile.keyCode.SPACE)) {
+
+			this._decideFormat();
+			if ( this.menuType === "overlay" ) {
+				this.button.attr( "href", "#" + this.popupId ).attr( "data-" + ( $.mobile.ns || "" ) + "rel", "popup" );
+			} else {
+				this.button.attr( "href", "#" + this.dialogId ).attr( "data-" + ( $.mobile.ns || "" ) + "rel", "dialog" );
+			}
+			this.isOpen = true;
+			// Do not prevent default, so the navigation may have a chance to actually open the chosen format
+		}
+	},
+
+	_handleListFocus: function( e ) {
+		var params = ( e.type === "focusin" ) ?
+			{ tabindex: "0", event: "vmouseover" }:
+			{ tabindex: "-1", event: "vmouseout" };
+
+		$( e.target )
+			.attr( "tabindex", params.tabindex )
+			.trigger( params.event );
+	},
+
+	_handleListKeydown: function( event ) {
+		var target = $( event.target ),
+			li = target.closest( "li" );
+
+		// switch logic based on which key was pressed
+		switch ( event.keyCode ) {
+			// up or left arrow keys
+		case 38:
+			goToAdjacentItem( li, target, "prev" );
+			return false;
+			// down or right arrow keys
+		case 40:
+			goToAdjacentItem( li, target, "next" );
+			return false;
+			// If enter or space is pressed, trigger click
+		case 13:
+		case 32:
+			target.trigger( "click" );
+			return false;
+		}
+	},
+
+	_handleMenuPageHide: function() {
+
+		// After the dialog's done, we may want to trigger change if the value has actually changed
+		this._delayedTrigger();
+
+		// TODO centralize page removal binding / handling in the page plugin.
+		// Suggestion from @jblas to do refcounting
+		//
+		// TODO extremely confusing dependency on the open method where the pagehide.remove
+		// bindings are stripped to prevent the parent page from disappearing. The way
+		// we're keeping pages in the DOM right now sucks
+		//
+		// rebind the page remove that was unbound in the open function
+		// to allow for the parent page removal from actions other than the use
+		// of a dialog sized custom select
+		//
+		// doing this here provides for the back button on the custom select dialog
+		this.thisPage.page( "bindRemove" );
+	},
+
+	_handleHeaderCloseClick: function() {
+		if ( this.menuType === "overlay" ) {
+			this.close();
+			return false;
+		}
+	},
+
+	_handleListItemClick: function( event ) {
+		var listItem = $( event.target ).closest( "li" ),
+
+			// Index of option tag to be selected
+			oldIndex = this.select[ 0 ].selectedIndex,
+			newIndex = $.mobile.getAttribute( listItem, "option-index" ),
+			option = this._selectOptions().eq( newIndex )[ 0 ];
+
+		// Toggle selected status on the tag for multi selects
+		option.selected = this.isMultiple ? !option.selected : true;
+
+		// Toggle checkbox class for multiple selects
+		if ( this.isMultiple ) {
+			listItem.find( "a" )
+				.toggleClass( "ui-checkbox-on", option.selected )
+				.toggleClass( "ui-checkbox-off", !option.selected );
+		}
+
+		// If it's not a multiple select, trigger change after it has finished closing
+		if ( !this.isMultiple && oldIndex !== newIndex ) {
+			this._triggerChange = true;
+		}
+
+		// Trigger change if it's a multiple select
+		// Hide custom select for single selects only - otherwise focus clicked item
+		// We need to grab the clicked item the hard way, because the list may have been rebuilt
+		if ( this.isMultiple ) {
+			this.select.trigger( "change" );
+			this.list.find( "li:not(.ui-li-divider)" ).eq( newIndex )
+				.find( "a" ).first().focus();
+		}
+		else {
+			this.close();
+		}
+
+		event.preventDefault();
+	},
+
+	build: function() {
+		var selectId, popupId, dialogId, label, thisPage, isMultiple, menuId,
+			themeAttr, overlayTheme, overlayThemeAttr, dividerThemeAttr,
+			menuPage, listbox, list, header, headerTitle, menuPageContent,
+			menuPageClose, headerClose,
+			o = this.options;
+
+		if ( o.nativeMenu ) {
+			return this._super();
+		}
+
+		selectId = this.selectId;
+		popupId = selectId + "-listbox";
+		dialogId = selectId + "-dialog";
+		label = this.label;
+		thisPage = this.element.closest( ".ui-page" );
+		isMultiple = this.element[ 0 ].multiple;
+		menuId = selectId + "-menu";
+		themeAttr = o.theme ? ( " data-" + $.mobile.ns + "theme='" + o.theme + "'" ) : "";
+		overlayTheme = o.overlayTheme || o.theme || null;
+		overlayThemeAttr = overlayTheme ? ( " data-" + $.mobile.ns +
+			"overlay-theme='" + overlayTheme + "'" ) : "";
+		dividerThemeAttr = ( o.dividerTheme && isMultiple ) ? ( " data-" + $.mobile.ns + "divider-theme='" + o.dividerTheme + "'" ) : "";
+		menuPage = $( "<div data-" + $.mobile.ns + "role='dialog' class='ui-selectmenu' id='" + dialogId + "'" + themeAttr + overlayThemeAttr + ">" +
+			"<div data-" + $.mobile.ns + "role='header'>" +
+			"<div class='ui-title'></div>"+
+			"</div>"+
+			"<div data-" + $.mobile.ns + "role='content'></div>"+
+			"</div>" );
+		listbox = $( "<div" + themeAttr + overlayThemeAttr + " id='" + popupId +
+				"' class='ui-selectmenu'></div>" )
+			.insertAfter( this.select )
+			.popup();
+		list = $( "<ul class='ui-selectmenu-list' id='" + menuId + "' role='listbox' aria-labelledby='" + this.buttonId + "'" + themeAttr + dividerThemeAttr + "></ul>" ).appendTo( listbox );
+		header = $( "<div class='ui-header ui-bar-" + ( o.theme ? o.theme : "inherit" ) + "'></div>" ).prependTo( listbox );
+		headerTitle = $( "<h1 class='ui-title'></h1>" ).appendTo( header );
+
+		if ( this.isMultiple ) {
+			headerClose = $( "<a>", {
+				"role": "button",
+				"text": o.closeText,
+				"href": "#",
+				"class": "ui-btn ui-corner-all ui-btn-left ui-btn-icon-notext ui-icon-delete"
+			}).appendTo( header );
+		}
+
+		$.extend( this, {
+			selectId: selectId,
+			menuId: menuId,
+			popupId: popupId,
+			dialogId: dialogId,
+			thisPage: thisPage,
+			menuPage: menuPage,
+			label: label,
+			isMultiple: isMultiple,
+			theme: o.theme,
+			listbox: listbox,
+			list: list,
+			header: header,
+			headerTitle: headerTitle,
+			headerClose: headerClose,
+			menuPageContent: menuPageContent,
+			menuPageClose: menuPageClose,
+			placeholder: ""
+		});
+
+		// Create list from select, update state
+		this.refresh();
+
+		if ( this._origTabIndex === undefined ) {
+			// Map undefined to false, because this._origTabIndex === undefined
+			// indicates that we have not yet checked whether the select has
+			// originally had a tabindex attribute, whereas false indicates that
+			// we have checked the select for such an attribute, and have found
+			// none present.
+			this._origTabIndex = ( this.select[ 0 ].getAttribute( "tabindex" ) === null ) ? false : this.select.attr( "tabindex" );
+		}
+		this.select.attr( "tabindex", "-1" );
+		this._on( this.select, { focus : "_handleSelectFocus" } );
+
+		// Button events
+		this._on( this.button, {
+			vclick: "_handleButtonVclickKeydown"
+		});
+
+		// Events for list items
+		this.list.attr( "role", "listbox" );
+		this._on( this.list, {
+			"focusin": "_handleListFocus",
+			"focusout": "_handleListFocus",
+			"keydown": "_handleListKeydown",
+			"click li:not(.ui-disabled,.ui-state-disabled,.ui-li-divider)": "_handleListItemClick"
+		});
+
+		// button refocus ensures proper height calculation
+		// by removing the inline style and ensuring page inclusion
+		this._on( this.menuPage, { pagehide: "_handleMenuPageHide" } );
+
+		// Events on the popup
+		this._on( this.listbox, { popupafterclose: "_popupClosed" } );
+
+		// Close button on small overlays
+		if ( this.isMultiple ) {
+			this._on( this.headerClose, { click: "_handleHeaderCloseClick" } );
+		}
+
+		return this;
+	},
+
+	_popupClosed: function() {
+		this.close();
+		this._delayedTrigger();
+	},
+
+	_delayedTrigger: function() {
+		if ( this._triggerChange ) {
+			this.element.trigger( "change" );
+		}
+		this._triggerChange = false;
+	},
+
+	_isRebuildRequired: function() {
+		var list = this.list.find( "li" ),
+			options = this._selectOptions().not( ".ui-screen-hidden" );
+
+		// TODO exceedingly naive method to determine difference
+		// ignores value changes etc in favor of a forcedRebuild
+		// from the user in the refresh method
+		return options.text() !== list.text();
+	},
+
+	selected: function() {
+		return this._selectOptions().filter( ":selected:not( :jqmData(placeholder='true') )" );
+	},
+
+	refresh: function( force ) {
+		var self, indices;
+
+		if ( this.options.nativeMenu ) {
+			return this._super( force );
+		}
+
+		self = this;
+		if ( force || this._isRebuildRequired() ) {
+			self._buildList();
+		}
+
+		indices = this.selectedIndices();
+
+		self.setButtonText();
+		self.setButtonCount();
+
+		self.list.find( "li:not(.ui-li-divider)" )
+			.find( "a" ).removeClass( $.mobile.activeBtnClass ).end()
+			.attr( "aria-selected", false )
+			.each(function( i ) {
+				var item = $( this );
+				if ( $.inArray( i, indices ) > -1 ) {
+
+					// Aria selected attr
+					item.attr( "aria-selected", true );
+
+					// Multiple selects: add the "on" checkbox state to the icon
+					if ( self.isMultiple ) {
+						item.find( "a" ).removeClass( "ui-checkbox-off" ).addClass( "ui-checkbox-on" );
+					} else {
+						if ( item.hasClass( "ui-screen-hidden" ) ) {
+							item.next().find( "a" ).addClass( $.mobile.activeBtnClass );
+						} else {
+							item.find( "a" ).addClass( $.mobile.activeBtnClass );
+						}
+					}
+				} else if ( self.isMultiple ) {
+					item.find( "a" ).removeClass( "ui-checkbox-on" ).addClass( "ui-checkbox-off" );
+				}
+			});
+	},
+
+	close: function() {
+		if ( this.options.disabled || !this.isOpen ) {
+			return;
+		}
+
+		var self = this;
+
+		if ( self.menuType === "page" ) {
+			self.menuPage.dialog( "close" );
+			self.list.appendTo( self.listbox );
+		} else {
+			self.listbox.popup( "close" );
+		}
+
+		self._focusButton();
+		// allow the dialog to be closed again
+		self.isOpen = false;
+	},
+
+	open: function() {
+		this.button.click();
+	},
+
+	_focusMenuItem: function() {
+		var selector = this.list.find( "a." + $.mobile.activeBtnClass );
+		if ( selector.length === 0 ) {
+			selector = this.list.find( "li:not(" + unfocusableItemSelector + ") a.ui-btn" );
+		}
+		selector.first().focus();
+	},
+
+	_decideFormat: function() {
+		var self = this,
+			$window = this.window,
+			selfListParent = self.list.parent(),
+			menuHeight = selfListParent.outerHeight(),
+			scrollTop = $window.scrollTop(),
+			btnOffset = self.button.offset().top,
+			screenHeight = $window.height();
+
+		if ( menuHeight > screenHeight - 80 || !$.support.scrollTop ) {
+
+			self.menuPage.appendTo( $.mobile.pageContainer ).page();
+			self.menuPageContent = self.menuPage.find( ".ui-content" );
+			self.menuPageClose = self.menuPage.find( ".ui-header a" );
+
+			// prevent the parent page from being removed from the DOM,
+			// otherwise the results of selecting a list item in the dialog
+			// fall into a black hole
+			self.thisPage.unbind( "pagehide.remove" );
+
+			//for WebOS/Opera Mini (set lastscroll using button offset)
+			if ( scrollTop === 0 && btnOffset > screenHeight ) {
+				self.thisPage.one( "pagehide", function() {
+					$( this ).jqmData( "lastScroll", btnOffset );
+				});
+			}
+
+			self.menuPage.one( {
+				pageshow: $.proxy( this, "_focusMenuItem" ),
+				pagehide: $.proxy( this, "close" )
+			});
+
+			self.menuType = "page";
+			self.menuPageContent.append( self.list );
+			self.menuPage
+				.find( "div .ui-title" )
+					.text( self.label.getEncodedText() || self.placeholder );
+		} else {
+			self.menuType = "overlay";
+
+			self.listbox.one( { popupafteropen: $.proxy( this, "_focusMenuItem" ) } );
+		}
+	},
+
+	_buildList: function() {
+		var self = this,
+			o = this.options,
+			placeholder = this.placeholder,
+			needPlaceholder = true,
+			dataIcon = "false",
+			$options, numOptions, select,
+			dataPrefix = "data-" + $.mobile.ns,
+			dataIndexAttr = dataPrefix + "option-index",
+			dataIconAttr = dataPrefix + "icon",
+			dataRoleAttr = dataPrefix + "role",
+			dataPlaceholderAttr = dataPrefix + "placeholder",
+			fragment = document.createDocumentFragment(),
+			isPlaceholderItem = false,
+			optGroup,
+			i,
+			option, $option, parent, text, anchor, classes,
+			optLabel, divider, item;
+
+		self.list.empty().filter( ".ui-listview" ).listview( "destroy" );
+		$options = this._selectOptions();
+		numOptions = $options.length;
+		select = this.select[ 0 ];
+
+		for ( i = 0; i < numOptions;i++, isPlaceholderItem = false) {
+			option = $options[i];
+			$option = $( option );
+
+			// Do not create options based on ui-screen-hidden select options
+			if ( $option.hasClass( "ui-screen-hidden" ) ) {
+				continue;
+			}
+
+			parent = option.parentNode;
+			classes = [];
+
+			// Although using .text() here raises the risk that, when we later paste this into the
+			// list item we end up pasting possibly malicious things like <script> tags, that risk
+			// only arises if we do something like $( "<li><a href='#'>" + text + "</a></li>" ). We
+			// don't do that. We do document.createTextNode( text ) instead, which guarantees that
+			// whatever we paste in will end up as text, with characters like <, > and & escaped.
+			text = $option.text();
+			anchor = document.createElement( "a" );
+			anchor.setAttribute( "href", "#" );
+			anchor.appendChild( document.createTextNode( text ) );
+
+			// Are we inside an optgroup?
+			if ( parent !== select && parent.nodeName.toLowerCase() === "optgroup" ) {
+				optLabel = parent.getAttribute( "label" );
+				if ( optLabel !== optGroup ) {
+					divider = document.createElement( "li" );
+					divider.setAttribute( dataRoleAttr, "list-divider" );
+					divider.setAttribute( "role", "option" );
+					divider.setAttribute( "tabindex", "-1" );
+					divider.appendChild( document.createTextNode( optLabel ) );
+					fragment.appendChild( divider );
+					optGroup = optLabel;
+				}
+			}
+
+			if ( needPlaceholder && ( !option.getAttribute( "value" ) || text.length === 0 || $option.jqmData( "placeholder" ) ) ) {
+				needPlaceholder = false;
+				isPlaceholderItem = true;
+
+				// If we have identified a placeholder, record the fact that it was
+				// us who have added the placeholder to the option and mark it
+				// retroactively in the select as well
+				if ( null === option.getAttribute( dataPlaceholderAttr ) ) {
+					this._removePlaceholderAttr = true;
+				}
+				option.setAttribute( dataPlaceholderAttr, true );
+				if ( o.hidePlaceholderMenuItems ) {
+					classes.push( "ui-screen-hidden" );
+				}
+				if ( placeholder !== text ) {
+					placeholder = self.placeholder = text;
+				}
+			}
+
+			item = document.createElement( "li" );
+			if ( option.disabled ) {
+				classes.push( "ui-state-disabled" );
+				item.setAttribute( "aria-disabled", true );
+			}
+			item.setAttribute( dataIndexAttr, i );
+			item.setAttribute( dataIconAttr, dataIcon );
+			if ( isPlaceholderItem ) {
+				item.setAttribute( dataPlaceholderAttr, true );
+			}
+			item.className = classes.join( " " );
+			item.setAttribute( "role", "option" );
+			anchor.setAttribute( "tabindex", "-1" );
+			if ( this.isMultiple ) {
+				$( anchor ).addClass( "ui-btn ui-checkbox-off ui-btn-icon-right" );
+			}
+
+			item.appendChild( anchor );
+			fragment.appendChild( item );
+		}
+
+		self.list[0].appendChild( fragment );
+
+		// Hide header if it's not a multiselect and there's no placeholder
+		if ( !this.isMultiple && !placeholder.length ) {
+			this.header.addClass( "ui-screen-hidden" );
+		} else {
+			this.headerTitle.text( this.placeholder );
+		}
+
+		// Now populated, create listview
+		self.list.listview();
+	},
+
+	_button: function() {
+		return this.options.nativeMenu ?
+			this._super() :
+			$( "<a>", {
+				"href": "#",
+				"role": "button",
+				// TODO value is undefined at creation
+				"id": this.buttonId,
+				"aria-haspopup": "true",
+
+				// TODO value is undefined at creation
+				"aria-owns": this.menuId
+			});
+	},
+
+	_destroy: function() {
+
+		if ( !this.options.nativeMenu ) {
+			this.close();
+
+			// Restore the tabindex attribute to its original value
+			if ( this._origTabIndex !== undefined ) {
+				if ( this._origTabIndex !== false ) {
+					this.select.attr( "tabindex", this._origTabIndex );
+				} else {
+					this.select.removeAttr( "tabindex" );
+				}
+			}
+
+			// Remove the placeholder attribute if we were the ones to add it
+			if ( this._removePlaceholderAttr ) {
+				this._selectOptions().removeAttr( "data-" + $.mobile.ns + "placeholder" );
+			}
+
+			// Remove the popup
+			this.listbox.remove();
+
+			// Remove the dialog
+			this.menuPage.remove();
+		}
+
+		// Chain up
+		this._super();
+	}
+});
+
+})( jQuery );
+
+
+// buttonMarkup is deprecated as of 1.4.0 and will be removed in 1.5.0.
+
+(function( $, undefined ) {
+
+// General policy: Do not access data-* attributes except during enhancement.
+// In all other cases we determine the state of the button exclusively from its
+// className. That's why optionsToClasses expects a full complement of options,
+// and the jQuery plugin completes the set of options from the default values.
+
+// Map classes to buttonMarkup boolean options - used in classNameToOptions()
+var reverseBoolOptionMap = {
+		"ui-shadow" : "shadow",
+		"ui-corner-all" : "corners",
+		"ui-btn-inline" : "inline",
+		"ui-shadow-icon" : "iconshadow", /* TODO: Remove in 1.5 */
+		"ui-mini" : "mini"
+	},
+	getAttrFixed = function() {
+		var ret = $.mobile.getAttribute.apply( this, arguments );
+
+		return ( ret == null ? undefined : ret );
+	},
+	capitalLettersRE = /[A-Z]/g;
+
+// optionsToClasses:
+// @options: A complete set of options to convert to class names.
+// @existingClasses: extra classes to add to the result
+//
+// Converts @options to buttonMarkup classes and returns the result as an array
+// that can be converted to an element's className with .join( " " ). All
+// possible options must be set inside @options. Use $.fn.buttonMarkup.defaults
+// to get a complete set and use $.extend to override your choice of options
+// from that set.
+function optionsToClasses( options, existingClasses ) {
+	var classes = existingClasses ? existingClasses : [];
+
+	// Add classes to the array - first ui-btn
+	classes.push( "ui-btn" );
+
+	// If there is a theme
+	if ( options.theme ) {
+		classes.push( "ui-btn-" + options.theme );
+	}
+
+	// If there's an icon, add the icon-related classes
+	if ( options.icon ) {
+		classes = classes.concat([
+			"ui-icon-" + options.icon,
+			"ui-btn-icon-" + options.iconpos
+		]);
+		if ( options.iconshadow ) {
+			classes.push( "ui-shadow-icon" ); /* TODO: Remove in 1.5 */
+		}
+	}
+
+	// Add the appropriate class for each boolean option
+	if ( options.inline ) {
+		classes.push( "ui-btn-inline" );
+	}
+	if ( options.shadow ) {
+		classes.push( "ui-shadow" );
+	}
+	if ( options.corners ) {
+		classes.push( "ui-corner-all" );
+	}
+	if ( options.mini ) {
+		classes.push( "ui-mini" );
+	}
+
+	// Create a string from the array and return it
+	return classes;
+}
+
+// classNameToOptions:
+// @classes: A string containing a .className-style space-separated class list
+//
+// Loops over @classes and calculates an options object based on the
+// buttonMarkup-related classes it finds. It records unrecognized classes in an
+// array.
+//
+// Returns: An object containing the following items:
+//
+// "options": buttonMarkup options found to be present because of the
+// presence/absence of corresponding classes
+//
+// "unknownClasses": a string containing all the non-buttonMarkup-related
+// classes found in @classes
+//
+// "alreadyEnhanced": A boolean indicating whether the ui-btn class was among
+// those found to be present
+function classNameToOptions( classes ) {
+	var idx, map, unknownClass,
+		alreadyEnhanced = false,
+		noIcon = true,
+		o = {
+			icon: "",
+			inline: false,
+			shadow: false,
+			corners: false,
+			iconshadow: false,
+			mini: false
+		},
+		unknownClasses = [];
+
+	classes = classes.split( " " );
+
+	// Loop over the classes
+	for ( idx = 0 ; idx < classes.length ; idx++ ) {
+
+		// Assume it's an unrecognized class
+		unknownClass = true;
+
+		// Recognize boolean options from the presence of classes
+		map = reverseBoolOptionMap[ classes[ idx ] ];
+		if ( map !== undefined ) {
+			unknownClass = false;
+			o[ map ] = true;
+
+		// Recognize the presence of an icon and establish the icon position
+		} else if ( classes[ idx ].indexOf( "ui-btn-icon-" ) === 0 ) {
+			unknownClass = false;
+			noIcon = false;
+			o.iconpos = classes[ idx ].substring( 12 );
+
+		// Establish which icon is present
+		} else if ( classes[ idx ].indexOf( "ui-icon-" ) === 0 ) {
+			unknownClass = false;
+			o.icon = classes[ idx ].substring( 8 );
+
+		// Establish the theme - this recognizes one-letter theme swatch names
+		} else if ( classes[ idx ].indexOf( "ui-btn-" ) === 0 && classes[ idx ].length === 8 ) {
+			unknownClass = false;
+			o.theme = classes[ idx ].substring( 7 );
+
+		// Recognize that this element has already been buttonMarkup-enhanced
+		} else if ( classes[ idx ] === "ui-btn" ) {
+			unknownClass = false;
+			alreadyEnhanced = true;
+		}
+
+		// If this class has not been recognized, add it to the list
+		if ( unknownClass ) {
+			unknownClasses.push( classes[ idx ] );
+		}
+	}
+
+	// If a "ui-btn-icon-*" icon position class is absent there cannot be an icon
+	if ( noIcon ) {
+		o.icon = "";
+	}
+
+	return {
+		options: o,
+		unknownClasses: unknownClasses,
+		alreadyEnhanced: alreadyEnhanced
+	};
+}
+
+function camelCase2Hyphenated( c ) {
+	return "-" + c.toLowerCase();
+}
+
+// $.fn.buttonMarkup:
+// DOM: gets/sets .className
+//
+// @options: options to apply to the elements in the jQuery object
+// @overwriteClasses: boolean indicating whether to honour existing classes
+//
+// Calculates the classes to apply to the elements in the jQuery object based on
+// the options passed in. If @overwriteClasses is true, it sets the className
+// property of each element in the jQuery object to the buttonMarkup classes
+// it calculates based on the options passed in.
+//
+// If you wish to preserve any classes that are already present on the elements
+// inside the jQuery object, including buttonMarkup-related classes that were
+// added by a previous call to $.fn.buttonMarkup() or during page enhancement
+// then you should omit @overwriteClasses or set it to false.
+$.fn.buttonMarkup = function( options, overwriteClasses ) {
+	var idx, data, el, retrievedOptions, optionKey,
+		defaults = $.fn.buttonMarkup.defaults;
+
+	for ( idx = 0 ; idx < this.length ; idx++ ) {
+		el = this[ idx ];
+		data = overwriteClasses ?
+
+			// Assume this element is not enhanced and ignore its classes
+			{ alreadyEnhanced: false, unknownClasses: [] } :
+
+			// Otherwise analyze existing classes to establish existing options and
+			// classes
+			classNameToOptions( el.className );
+
+		retrievedOptions = $.extend( {},
+
+			// If the element already has the class ui-btn, then we assume that
+			// it has passed through buttonMarkup before - otherwise, the options
+			// returned by classNameToOptions do not correctly reflect the state of
+			// the element
+			( data.alreadyEnhanced ? data.options : {} ),
+
+			// Finally, apply the options passed in
+			options );
+
+		// If this is the first call on this element, retrieve remaining options
+		// from the data-attributes
+		if ( !data.alreadyEnhanced ) {
+			for ( optionKey in defaults ) {
+				if ( retrievedOptions[ optionKey ] === undefined ) {
+					retrievedOptions[ optionKey ] = getAttrFixed( el,
+						optionKey.replace( capitalLettersRE, camelCase2Hyphenated )
+					);
+				}
+			}
+		}
+
+		el.className = optionsToClasses(
+
+			// Merge all the options and apply them as classes
+			$.extend( {},
+
+				// The defaults form the basis
+				defaults,
+
+				// Add the computed options
+				retrievedOptions
+			),
+
+			// ... and re-apply any unrecognized classes that were found
+			data.unknownClasses ).join( " " );
+		if ( el.tagName.toLowerCase() !== "button" ) {
+			el.setAttribute( "role", "button" );
+		}
+	}
+
+	return this;
+};
+
+// buttonMarkup defaults. This must be a complete set, i.e., a value must be
+// given here for all recognized options
+$.fn.buttonMarkup.defaults = {
+	icon: "",
+	iconpos: "left",
+	theme: null,
+	inline: false,
+	shadow: true,
+	corners: true,
+	iconshadow: false, /* TODO: Remove in 1.5. Option deprecated in 1.4. */
+	mini: false
+};
+
+$.extend( $.fn.buttonMarkup, {
+	initSelector: "a:jqmData(role='button'), .ui-bar > a, .ui-bar > :jqmData(role='controlgroup') > a, button:not(:jqmData(role='navbar') button)"
+});
+
+})( jQuery );
+
+
+(function( $, undefined ) {
+
+$.widget( "mobile.controlgroup", $.extend( {
+	options: {
+		enhanced: false,
+		theme: null,
+		shadow: false,
+		corners: true,
+		excludeInvisible: true,
+		type: "vertical",
+		mini: false
+	},
+
+	_create: function() {
+		var elem = this.element,
+			opts = this.options,
+			keepNative = $.mobile.page.prototype.keepNativeSelector();
+
+		// Run buttonmarkup
+		if ( $.fn.buttonMarkup ) {
+			this.element
+				.find( $.fn.buttonMarkup.initSelector )
+				.not( keepNative )
+				.buttonMarkup();
+		}
+		// Enhance child widgets
+		$.each( this._childWidgets, $.proxy( function( number, widgetName ) {
+			if ( $.mobile[ widgetName ] ) {
+				this.element
+					.find( $.mobile[ widgetName ].initSelector )
+					.not( keepNative )[ widgetName ]();
+			}
+		}, this ));
+
+		$.extend( this, {
+			_ui: null,
+			_initialRefresh: true
+		});
+
+		if ( opts.enhanced ) {
+			this._ui = {
+				groupLegend: elem.children( ".ui-controlgroup-label" ).children(),
+				childWrapper: elem.children( ".ui-controlgroup-controls" )
+			};
+		} else {
+			this._ui = this._enhance();
+		}
+
+	},
+
+	_childWidgets: [ "checkboxradio", "selectmenu", "button" ],
+
+	_themeClassFromOption: function( value ) {
+		return ( value ? ( value === "none" ? "" : "ui-group-theme-" + value ) : "" );
+	},
+
+	_enhance: function() {
+		var elem = this.element,
+			opts = this.options,
+			ui = {
+				groupLegend: elem.children( "legend" ),
+				childWrapper: elem
+					.addClass( "ui-controlgroup " +
+						"ui-controlgroup-" +
+							( opts.type === "horizontal" ? "horizontal" : "vertical" ) + " " +
+						this._themeClassFromOption( opts.theme ) + " " +
+						( opts.corners ? "ui-corner-all " : "" ) +
+						( opts.mini ? "ui-mini " : "" ) )
+					.wrapInner( "<div " +
+						"class='ui-controlgroup-controls " +
+							( opts.shadow === true ? "ui-shadow" : "" ) + "'></div>" )
+					.children()
+			};
+
+		if ( ui.groupLegend.length > 0 ) {
+			$( "<div role='heading' class='ui-controlgroup-label'></div>" )
+				.append( ui.groupLegend )
+				.prependTo( elem );
+		}
+
+		return ui;
+	},
+
+	_init: function() {
+		this.refresh();
+	},
+
+	_setOptions: function( options ) {
+		var callRefresh, returnValue,
+			elem = this.element;
+
+		// Must have one of horizontal or vertical
+		if ( options.type !== undefined ) {
+			elem
+				.removeClass( "ui-controlgroup-horizontal ui-controlgroup-vertical" )
+				.addClass( "ui-controlgroup-" + ( options.type === "horizontal" ? "horizontal" : "vertical" ) );
+			callRefresh = true;
+		}
+
+		if ( options.theme !== undefined ) {
+			elem
+				.removeClass( this._themeClassFromOption( this.options.theme ) )
+				.addClass( this._themeClassFromOption( options.theme ) );
+		}
+
+		if ( options.corners !== undefined ) {
+			elem.toggleClass( "ui-corner-all", options.corners );
+		}
+
+		if ( options.mini !== undefined ) {
+			elem.toggleClass( "ui-mini", options.mini );
+		}
+
+		if ( options.shadow !== undefined ) {
+			this._ui.childWrapper.toggleClass( "ui-shadow", options.shadow );
+		}
+
+		if ( options.excludeInvisible !== undefined ) {
+			this.options.excludeInvisible = options.excludeInvisible;
+			callRefresh = true;
+		}
+
+		returnValue = this._super( options );
+
+		if ( callRefresh ) {
+			this.refresh();
+		}
+
+		return returnValue;
+	},
+
+	container: function() {
+		return this._ui.childWrapper;
+	},
+
+	refresh: function() {
+		var $el = this.container(),
+			els = $el.find( ".ui-btn" ).not( ".ui-slider-handle" ),
+			create = this._initialRefresh;
+		if ( $.mobile.checkboxradio ) {
+			$el.find( ":mobile-checkboxradio" ).checkboxradio( "refresh" );
+		}
+		this._addFirstLastClasses( els,
+			this.options.excludeInvisible ? this._getVisibles( els, create ) : els,
+			create );
+		this._initialRefresh = false;
+	},
+
+	// Caveat: If the legend is not the first child of the controlgroup at enhance
+	// time, it will be after _destroy().
+	_destroy: function() {
+		var ui, buttons,
+			opts = this.options;
+
+		if ( opts.enhanced ) {
+			return this;
+		}
+
+		ui = this._ui;
+		buttons = this.element
+			.removeClass( "ui-controlgroup " +
+				"ui-controlgroup-horizontal ui-controlgroup-vertical ui-corner-all ui-mini " +
+				this._themeClassFromOption( opts.theme ) )
+			.find( ".ui-btn" )
+			.not( ".ui-slider-handle" );
+
+		this._removeFirstLastClasses( buttons );
+
+		ui.groupLegend.unwrap();
+		ui.childWrapper.children().unwrap();
+	}
+}, $.mobile.behaviors.addFirstLastClasses ) );
+
+})(jQuery);
+
+(function( $, undefined ) {
+
+	$.widget( "mobile.toolbar", {
+		initSelector: ":jqmData(role='footer'), :jqmData(role='header')",
+
+		options: {
+			theme: null,
+			addBackBtn: false,
+			backBtnTheme: null,
+			backBtnText: "Back"
+		},
+
+		_create: function() {
+			var leftbtn, rightbtn,
+				role =  this.element.is( ":jqmData(role='header')" ) ? "header" : "footer",
+				page = this.element.closest( ".ui-page" );
+			if ( page.length === 0 ) {
+				page = false;
+				this._on( this.document, {
+					"pageshow": "refresh"
+				});
+			}
+			$.extend( this, {
+				role: role,
+				page: page,
+				leftbtn: leftbtn,
+				rightbtn: rightbtn
+			});
+			this.element.attr( "role", role === "header" ? "banner" : "contentinfo" ).addClass( "ui-" + role );
+			this.refresh();
+			this._setOptions( this.options );
+		},
+		_setOptions: function( o ) {
+			if ( o.addBackBtn !== undefined ) {
+				this._updateBackButton();
+			}
+			if ( o.backBtnTheme != null ) {
+				this.element
+					.find( ".ui-toolbar-back-btn" )
+					.addClass( "ui-btn ui-btn-" + o.backBtnTheme );
+			}
+			if ( o.backBtnText !== undefined ) {
+				this.element.find( ".ui-toolbar-back-btn .ui-btn-text" ).text( o.backBtnText );
+			}
+			if ( o.theme !== undefined ) {
+				var currentTheme = this.options.theme ? this.options.theme : "inherit",
+					newTheme = o.theme ? o.theme : "inherit";
+
+				this.element.removeClass( "ui-bar-" + currentTheme ).addClass( "ui-bar-" + newTheme );
+			}
+
+			this._super( o );
+		},
+		refresh: function() {
+			if ( this.role === "header" ) {
+				this._addHeaderButtonClasses();
+			}
+			if ( !this.page ) {
+				this._setRelative();
+				if ( this.role === "footer" ) {
+					this.element.appendTo( "body" );
+				} else if ( this.role === "header" ) {
+					this._updateBackButton();
+				}
+			}
+			this._addHeadingClasses();
+			this._btnMarkup();
+		},
+
+		//we only want this to run on non fixed toolbars so make it easy to override
+		_setRelative: function() {
+			$( "[data-"+ $.mobile.ns + "role='page']" ).css({ "position": "relative" });
+		},
+
+		// Deprecated in 1.4. As from 1.5 button classes have to be present in the markup.
+		_btnMarkup: function() {
+			this.element
+				.children( "a" )
+				.filter( ":not([data-" + $.mobile.ns + "role='none'])" )
+				.attr( "data-" + $.mobile.ns + "role", "button" );
+			this.element.trigger( "create" );
+		},
+		// Deprecated in 1.4. As from 1.5 ui-btn-left/right classes have to be present in the markup.
+		_addHeaderButtonClasses: function() {
+			var headerAnchors = this.element.children( "a, button" );
+
+			// Do not mistake a back button for a left toolbar button
+			this.leftbtn = headerAnchors.hasClass( "ui-btn-left" ) &&
+				!headerAnchors.hasClass( "ui-toolbar-back-btn" );
+
+			this.rightbtn = headerAnchors.hasClass( "ui-btn-right" );
+
+			// Filter out right buttons and back buttons
+			this.leftbtn = this.leftbtn ||
+				headerAnchors.eq( 0 )
+					.not( ".ui-btn-right,.ui-toolbar-back-btn" )
+					.addClass( "ui-btn-left" )
+					.length;
+
+			this.rightbtn = this.rightbtn || headerAnchors.eq( 1 ).addClass( "ui-btn-right" ).length;
+		},
+		_updateBackButton: function() {
+			var backButton,
+				options = this.options,
+				theme = options.backBtnTheme || options.theme;
+
+			// Retrieve the back button or create a new, empty one
+			backButton = this._backButton = ( this._backButton || {} );
+
+			// We add a back button only if the option to do so is on
+			if ( this.options.addBackBtn &&
+
+					// This must also be a header toolbar
+					this.role === "header" &&
+
+					// There must be multiple pages in the DOM
+					$( ".ui-page" ).length > 1 &&
+					( this.page ?
+
+						// If the toolbar is internal the page's URL must differ from the hash
+						( this.page[ 0 ].getAttribute( "data-" + $.mobile.ns + "url" ) !==
+							$.mobile.path.stripHash( location.hash ) ) :
+
+						// Otherwise, if the toolbar is external there must be at least one
+						// history item to which one can go back
+						( $.mobile.navigate && $.mobile.navigate.history &&
+							$.mobile.navigate.history.activeIndex > 0 ) ) &&
+
+					// The toolbar does not have a left button
+					!this.leftbtn ) {
+
+				// Skip back button creation if one is already present
+				if ( !backButton.attached ) {
+					this.backButton = backButton.element = ( backButton.element ||
+						$( "<a role='button' href='javascript:void(0);' " +
+							"class='ui-btn ui-corner-all ui-shadow ui-btn-left " +
+								( theme ? "ui-btn-" + theme + " " : "" ) +
+								"ui-toolbar-back-btn ui-icon-carat-l ui-btn-icon-left' " +
+							"data-" + $.mobile.ns + "rel='back'>" + options.backBtnText +
+							"</a>" ) )
+							.prependTo( this.element );
+					backButton.attached = true;
+				}
+
+			// If we are not adding a back button, then remove the one present, if any
+			} else if ( backButton.element ) {
+				backButton.element.detach();
+				backButton.attached = false;
+			}
+		},
+		_addHeadingClasses: function() {
+			this.element.children( "h1, h2, h3, h4, h5, h6" )
+				.addClass( "ui-title" )
+				// Regardless of h element number in src, it becomes h1 for the enhanced page
+				.attr({
+					"role": "heading",
+					"aria-level": "1"
+				});
+		},
+		_destroy: function() {
+			var currentTheme;
+
+			this.element.children( "h1, h2, h3, h4, h5, h6" )
+				.removeClass( "ui-title" )
+				.removeAttr( "role" )
+				.removeAttr( "aria-level" );
+
+			if ( this.role === "header" ) {
+				this.element.children( "a, button" )
+					.removeClass( "ui-btn-left ui-btn-right ui-btn ui-shadow ui-corner-all" );
+				if ( this.backButton) {
+					this.backButton.remove();
+				}
+			}
+
+			currentTheme = this.options.theme ? this.options.theme : "inherit";
+			this.element.removeClass( "ui-bar-" + currentTheme );
+
+			this.element.removeClass( "ui-" + this.role ).removeAttr( "role" );
+		}
+	});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+	$.widget( "mobile.toolbar", $.mobile.toolbar, {
+		options: {
+			position:null,
+			visibleOnPageShow: true,
+			disablePageZoom: true,
+			transition: "slide", //can be none, fade, slide (slide maps to slideup or slidedown)
+			fullscreen: false,
+			tapToggle: true,
+			tapToggleBlacklist: "a, button, input, select, textarea, .ui-header-fixed, .ui-footer-fixed, .ui-flipswitch, .ui-popup, .ui-panel, .ui-panel-dismiss-open",
+			hideDuringFocus: "input, textarea, select",
+			updatePagePadding: true,
+			trackPersistentToolbars: true,
+
+			// Browser detection! Weeee, here we go...
+			// Unfortunately, position:fixed is costly, not to mention probably impossible, to feature-detect accurately.
+			// Some tests exist, but they currently return false results in critical devices and browsers, which could lead to a broken experience.
+			// Testing fixed positioning is also pretty obtrusive to page load, requiring injected elements and scrolling the window
+			// The following function serves to rule out some popular browsers with known fixed-positioning issues
+			// This is a plugin option like any other, so feel free to improve or overwrite it
+			supportBlacklist: function() {
+				return !$.support.fixedPosition;
+			}
+		},
+
+		_create: function() {
+			this._super();
+			this.pagecontainer = $( ":mobile-pagecontainer" );
+			if ( this.options.position === "fixed" && !this.options.supportBlacklist() ) {
+				this._makeFixed();
+			}
+		},
+
+		_makeFixed: function() {
+			this.element.addClass( "ui-"+ this.role +"-fixed" );
+			this.updatePagePadding();
+			this._addTransitionClass();
+			this._bindPageEvents();
+			this._bindToggleHandlers();
+		},
+
+		_setOptions: function( o ) {
+			if ( o.position === "fixed" && this.options.position !== "fixed" ) {
+				this._makeFixed();
+			}
+			if ( this.options.position === "fixed" && !this.options.supportBlacklist() ) {
+				var $page = ( !!this.page )? this.page: ( $(".ui-page-active").length > 0 )? $(".ui-page-active"): $(".ui-page").eq(0);
+
+				if ( o.fullscreen !== undefined) {
+					if ( o.fullscreen ) {
+						this.element.addClass( "ui-"+ this.role +"-fullscreen" );
+						$page.addClass( "ui-page-" + this.role + "-fullscreen" );
+					}
+					// If not fullscreen, add class to page to set top or bottom padding
+					else {
+						this.element.removeClass( "ui-"+ this.role +"-fullscreen" );
+						$page.removeClass( "ui-page-" + this.role + "-fullscreen" ).addClass( "ui-page-" + this.role+ "-fixed" );
+					}
+				}
+			}
+			this._super(o);
+		},
+
+		_addTransitionClass: function() {
+			var tclass = this.options.transition;
+
+			if ( tclass && tclass !== "none" ) {
+				// use appropriate slide for header or footer
+				if ( tclass === "slide" ) {
+					tclass = this.element.hasClass( "ui-header" ) ? "slidedown" : "slideup";
+				}
+
+				this.element.addClass( tclass );
+			}
+		},
+
+		_bindPageEvents: function() {
+			var page = ( !!this.page )? this.element.closest( ".ui-page" ): this.document;
+			//page event bindings
+			// Fixed toolbars require page zoom to be disabled, otherwise usability issues crop up
+			// This method is meant to disable zoom while a fixed-positioned toolbar page is visible
+			this._on( page , {
+				"pagebeforeshow": "_handlePageBeforeShow",
+				"webkitAnimationStart":"_handleAnimationStart",
+				"animationstart":"_handleAnimationStart",
+				"updatelayout": "_handleAnimationStart",
+				"pageshow": "_handlePageShow",
+				"pagebeforehide": "_handlePageBeforeHide"
+			});
+		},
+
+		_handlePageBeforeShow: function( ) {
+			var o = this.options;
+			if ( o.disablePageZoom ) {
+				$.mobile.zoom.disable( true );
+			}
+			if ( !o.visibleOnPageShow ) {
+				this.hide( true );
+			}
+		},
+
+		_handleAnimationStart: function() {
+			if ( this.options.updatePagePadding ) {
+				this.updatePagePadding( ( !!this.page )? this.page: ".ui-page-active" );
+			}
+		},
+
+		_handlePageShow: function() {
+			this.updatePagePadding( ( !!this.page )? this.page: ".ui-page-active" );
+			if ( this.options.updatePagePadding ) {
+				this._on( this.window, { "throttledresize": "updatePagePadding" } );
+			}
+		},
+
+		_handlePageBeforeHide: function( e, ui ) {
+			var o = this.options,
+				thisFooter, thisHeader, nextFooter, nextHeader;
+
+			if ( o.disablePageZoom ) {
+				$.mobile.zoom.enable( true );
+			}
+			if ( o.updatePagePadding ) {
+				this._off( this.window, "throttledresize" );
+			}
+
+			if ( o.trackPersistentToolbars ) {
+				thisFooter = $( ".ui-footer-fixed:jqmData(id)", this.page );
+				thisHeader = $( ".ui-header-fixed:jqmData(id)", this.page );
+				nextFooter = thisFooter.length && ui.nextPage && $( ".ui-footer-fixed:jqmData(id='" + thisFooter.jqmData( "id" ) + "')", ui.nextPage ) || $();
+				nextHeader = thisHeader.length && ui.nextPage && $( ".ui-header-fixed:jqmData(id='" + thisHeader.jqmData( "id" ) + "')", ui.nextPage ) || $();
+
+				if ( nextFooter.length || nextHeader.length ) {
+
+					nextFooter.add( nextHeader ).appendTo( $.mobile.pageContainer );
+
+					ui.nextPage.one( "pageshow", function() {
+						nextHeader.prependTo( this );
+						nextFooter.appendTo( this );
+					});
+				}
+			}
+		},
+
+		_visible: true,
+
+		// This will set the content element's top or bottom padding equal to the toolbar's height
+		updatePagePadding: function( tbPage ) {
+			var $el = this.element,
+				header = ( this.role ==="header" ),
+				pos = parseFloat( $el.css( header ? "top" : "bottom" ) );
+
+			// This behavior only applies to "fixed", not "fullscreen"
+			if ( this.options.fullscreen ) { return; }
+			// tbPage argument can be a Page object or an event, if coming from throttled resize.
+			tbPage = ( tbPage && tbPage.type === undefined && tbPage ) || this.page || $el.closest( ".ui-page" );
+			tbPage = ( !!this.page )? this.page: ".ui-page-active";
+			$( tbPage ).css( "padding-" + ( header ? "top" : "bottom" ), $el.outerHeight() + pos );
+		},
+
+		_useTransition: function( notransition ) {
+			var $win = this.window,
+				$el = this.element,
+				scroll = $win.scrollTop(),
+				elHeight = $el.height(),
+				pHeight = ( !!this.page )? $el.closest( ".ui-page" ).height():$(".ui-page-active").height(),
+				viewportHeight = $.mobile.getScreenHeight();
+
+			return !notransition &&
+				( this.options.transition && this.options.transition !== "none" &&
+				(
+					( this.role === "header" && !this.options.fullscreen && scroll > elHeight ) ||
+					( this.role === "footer" && !this.options.fullscreen && scroll + viewportHeight < pHeight - elHeight )
+				) || this.options.fullscreen
+				);
+		},
+
+		show: function( notransition ) {
+			var hideClass = "ui-fixed-hidden",
+				$el = this.element;
+
+			if ( this._useTransition( notransition ) ) {
+				$el
+					.removeClass( "out " + hideClass )
+					.addClass( "in" )
+					.animationComplete(function () {
+						$el.removeClass( "in" );
+					});
+			}
+			else {
+				$el.removeClass( hideClass );
+			}
+			this._visible = true;
+		},
+
+		hide: function( notransition ) {
+			var hideClass = "ui-fixed-hidden",
+				$el = this.element,
+				// if it's a slide transition, our new transitions need the reverse class as well to slide outward
+				outclass = "out" + ( this.options.transition === "slide" ? " reverse" : "" );
+
+			if ( this._useTransition( notransition ) ) {
+				$el
+					.addClass( outclass )
+					.removeClass( "in" )
+					.animationComplete(function() {
+						$el.addClass( hideClass ).removeClass( outclass );
+					});
+			}
+			else {
+				$el.addClass( hideClass ).removeClass( outclass );
+			}
+			this._visible = false;
+		},
+
+		toggle: function() {
+			this[ this._visible ? "hide" : "show" ]();
+		},
+
+		_bindToggleHandlers: function() {
+			var self = this,
+				o = self.options,
+				delayShow, delayHide,
+				isVisible = true,
+				page = ( !!this.page )? this.page: $(".ui-page");
+
+			// tap toggle
+			page
+				.bind( "vclick", function( e ) {
+					if ( o.tapToggle && !$( e.target ).closest( o.tapToggleBlacklist ).length ) {
+						self.toggle();
+					}
+				})
+				.bind( "focusin focusout", function( e ) {
+					//this hides the toolbars on a keyboard pop to give more screen room and prevent ios bug which
+					//positions fixed toolbars in the middle of the screen on pop if the input is near the top or
+					//bottom of the screen addresses issues #4410 Footer navbar moves up when clicking on a textbox in an Android environment
+					//and issue #4113 Header and footer change their position after keyboard popup - iOS
+					//and issue #4410 Footer navbar moves up when clicking on a textbox in an Android environment
+					if ( screen.width < 1025 && $( e.target ).is( o.hideDuringFocus ) && !$( e.target ).closest( ".ui-header-fixed, .ui-footer-fixed" ).length ) {
+						//Fix for issue #4724 Moving through form in Mobile Safari with "Next" and "Previous" system
+						//controls causes fixed position, tap-toggle false Header to reveal itself
+						// isVisible instead of self._visible because the focusin and focusout events fire twice at the same time
+						// Also use a delay for hiding the toolbars because on Android native browser focusin is direclty followed
+						// by a focusout when a native selects opens and the other way around when it closes.
+						if ( e.type === "focusout" && !isVisible ) {
+							isVisible = true;
+							//wait for the stack to unwind and see if we have jumped to another input
+							clearTimeout( delayHide );
+							delayShow = setTimeout( function() {
+								self.show();
+							}, 0 );
+						} else if ( e.type === "focusin" && !!isVisible ) {
+							//if we have jumped to another input clear the time out to cancel the show.
+							clearTimeout( delayShow );
+							isVisible = false;
+							delayHide = setTimeout( function() {
+								self.hide();
+							}, 0 );
+						}
+					}
+				});
+		},
+
+		_setRelative: function() {
+			if( this.options.position !== "fixed" ){
+				$( "[data-"+ $.mobile.ns + "role='page']" ).css({ "position": "relative" });
+			}
+		},
+
+		_destroy: function() {
+			var pageClasses, toolbarClasses, hasFixed, header, hasFullscreen,
+				page = this.pagecontainer.pagecontainer( "getActivePage" );
+
+			this._super();
+			if ( this.options.position === "fixed" ) {
+				hasFixed = $(  "body>.ui-" + this.role + "-fixed" )
+							.add( page.find( ".ui-" + this.options.role + "-fixed" ) )
+							.not( this.element ).length > 0;
+				hasFullscreen = $(  "body>.ui-" + this.role + "-fixed" )
+							.add( page.find( ".ui-" + this.options.role + "-fullscreen" ) )
+							.not( this.element ).length > 0;
+				toolbarClasses =  "ui-header-fixed ui-footer-fixed ui-header-fullscreen in out" +
+					" ui-footer-fullscreen fade slidedown slideup ui-fixed-hidden";
+				this.element.removeClass( toolbarClasses );
+				if ( !hasFullscreen ) {
+					pageClasses = "ui-page-" + this.role + "-fullscreen";
+				}
+				if ( !hasFixed ) {
+					header = this.role === "header";
+					pageClasses += " ui-page-" + this.role + "-fixed";
+					page.css( "padding-" + ( header ? "top" : "bottom" ), "" );
+				}
+				page.removeClass( pageClasses );
+			}
+		}
+
+	});
+})( jQuery );
+
+(function( $, undefined ) {
+	$.widget( "mobile.toolbar", $.mobile.toolbar, {
+
+		_makeFixed: function() {
+			this._super();
+			this._workarounds();
+		},
+
+		//check the browser and version and run needed workarounds
+		_workarounds: function() {
+			var ua = navigator.userAgent,
+			platform = navigator.platform,
+			// Rendering engine is Webkit, and capture major version
+			wkmatch = ua.match( /AppleWebKit\/([0-9]+)/ ),
+			wkversion = !!wkmatch && wkmatch[ 1 ],
+			os = null,
+			self = this;
+			//set the os we are working in if it dosent match one with workarounds return
+			if ( platform.indexOf( "iPhone" ) > -1 || platform.indexOf( "iPad" ) > -1  || platform.indexOf( "iPod" ) > -1 ) {
+				os = "ios";
+			} else if ( ua.indexOf( "Android" ) > -1 ) {
+				os = "android";
+			} else {
+				return;
+			}
+			//check os version if it dosent match one with workarounds return
+			if ( os === "ios" ) {
+				//iOS  workarounds
+				self._bindScrollWorkaround();
+			} else if ( os === "android" && wkversion && wkversion < 534 ) {
+				//Android 2.3 run all Android 2.3 workaround
+				self._bindScrollWorkaround();
+				self._bindListThumbWorkaround();
+			} else {
+				return;
+			}
+		},
+
+		//Utility class for checking header and footer positions relative to viewport
+		_viewportOffset: function() {
+			var $el = this.element,
+				header = $el.hasClass( "ui-header" ),
+				offset = Math.abs( $el.offset().top - this.window.scrollTop() );
+			if ( !header ) {
+				offset = Math.round( offset - this.window.height() + $el.outerHeight() ) - 60;
+			}
+			return offset;
+		},
+
+		//bind events for _triggerRedraw() function
+		_bindScrollWorkaround: function() {
+			var self = this;
+			//bind to scrollstop and check if the toolbars are correctly positioned
+			this._on( this.window, { scrollstop: function() {
+				var viewportOffset = self._viewportOffset();
+				//check if the header is visible and if its in the right place
+				if ( viewportOffset > 2 && self._visible ) {
+					self._triggerRedraw();
+				}
+			}});
+		},
+
+		//this addresses issue #4250 Persistent footer instability in v1.1 with long select lists in Android 2.3.3
+		//and issue #3748 Android 2.x: Page transitions broken when fixed toolbars used
+		//the absolutely positioned thumbnail in a list view causes problems with fixed position buttons above in a nav bar
+		//setting the li's to -webkit-transform:translate3d(0,0,0); solves this problem to avoide potential issues in other
+		//platforms we scope this with the class ui-android-2x-fix
+		_bindListThumbWorkaround: function() {
+			this.element.closest( ".ui-page" ).addClass( "ui-android-2x-fixed" );
+		},
+		//this addresses issues #4337 Fixed header problem after scrolling content on iOS and Android
+		//and device bugs project issue #1 Form elements can lose click hit area in position: fixed containers.
+		//this also addresses not on fixed toolbars page in docs
+		//adding 1px of padding to the bottom then removing it causes a "redraw"
+		//which positions the toolbars correctly (they will always be visually correct)
+		_triggerRedraw: function() {
+			var paddingBottom = parseFloat( $( ".ui-page-active" ).css( "padding-bottom" ) );
+			//trigger page redraw to fix incorrectly positioned fixed elements
+			$( ".ui-page-active" ).css( "padding-bottom", ( paddingBottom + 1 ) + "px" );
+			//if the padding is reset with out a timeout the reposition will not occure.
+			//this is independant of JQM the browser seems to need the time to react.
+			setTimeout( function() {
+				$( ".ui-page-active" ).css( "padding-bottom", paddingBottom + "px" );
+			}, 0 );
+		},
+
+		destroy: function() {
+			this._super();
+			//Remove the class we added to the page previously in android 2.x
+			this.element.closest( ".ui-page-active" ).removeClass( "ui-android-2x-fix" );
+		}
+	});
+
+})( jQuery );
+
+
+( function( $, undefined ) {
+
+var ieHack = ( $.mobile.browser.oldIE && $.mobile.browser.oldIE <= 8 ),
+	uiTemplate = $(
+		"<div class='ui-popup-arrow-guide'></div>" +
+		"<div class='ui-popup-arrow-container" + ( ieHack ? " ie" : "" ) + "'>" +
+			"<div class='ui-popup-arrow'></div>" +
+		"</div>"
+	);
+
+function getArrow() {
+	var clone = uiTemplate.clone(),
+		gd = clone.eq( 0 ),
+		ct = clone.eq( 1 ),
+		ar = ct.children();
+
+	return { arEls: ct.add( gd ), gd: gd, ct: ct, ar: ar };
+}
+
+$.widget( "mobile.popup", $.mobile.popup, {
+	options: {
+
+		arrow: ""
+	},
+
+	_create: function() {
+		var ar,
+			ret = this._super();
+
+		if ( this.options.arrow ) {
+			this._ui.arrow = ar = this._addArrow();
+		}
+
+		return ret;
+	},
+
+	_addArrow: function() {
+		var theme,
+			opts = this.options,
+			ar = getArrow();
+
+		theme = this._themeClassFromOption( "ui-body-", opts.theme );
+		ar.ar.addClass( theme + ( opts.shadow ? " ui-overlay-shadow" : "" ) );
+		ar.arEls.hide().appendTo( this.element );
+
+		return ar;
+	},
+
+	_unenhance: function() {
+		var ar = this._ui.arrow;
+
+		if ( ar ) {
+			ar.arEls.remove();
+		}
+
+		return this._super();
+	},
+
+	// Pretend to show an arrow described by @p and @dir and calculate the
+	// distance from the desired point. If a best-distance is passed in, return
+	// the minimum of the one passed in and the one calculated.
+	_tryAnArrow: function( p, dir, desired, s, best ) {
+		var result, r, diff, desiredForArrow = {}, tip = {};
+
+		// If the arrow has no wiggle room along the edge of the popup, it cannot
+		// be displayed along the requested edge without it sticking out.
+		if ( s.arFull[ p.dimKey ] > s.guideDims[ p.dimKey ] ) {
+			return best;
+		}
+
+		desiredForArrow[ p.fst ] = desired[ p.fst ] +
+			( s.arHalf[ p.oDimKey ] + s.menuHalf[ p.oDimKey ] ) * p.offsetFactor -
+			s.contentBox[ p.fst ] + ( s.clampInfo.menuSize[ p.oDimKey ] - s.contentBox[ p.oDimKey ] ) * p.arrowOffsetFactor;
+		desiredForArrow[ p.snd ] = desired[ p.snd ];
+
+		result = s.result || this._calculateFinalLocation( desiredForArrow, s.clampInfo );
+		r = { x: result.left, y: result.top };
+
+		tip[ p.fst ] = r[ p.fst ] + s.contentBox[ p.fst ] + p.tipOffset;
+		tip[ p.snd ] = Math.max( result[ p.prop ] + s.guideOffset[ p.prop ] + s.arHalf[ p.dimKey ],
+			Math.min( result[ p.prop ] + s.guideOffset[ p.prop ] + s.guideDims[ p.dimKey ] - s.arHalf[ p.dimKey ],
+				desired[ p.snd ] ) );
+
+		diff = Math.abs( desired.x - tip.x ) + Math.abs( desired.y - tip.y );
+		if ( !best || diff < best.diff ) {
+			// Convert tip offset to coordinates inside the popup
+			tip[ p.snd ] -= s.arHalf[ p.dimKey ] + result[ p.prop ] + s.contentBox[ p.snd ];
+			best = { dir: dir, diff: diff, result: result, posProp: p.prop, posVal: tip[ p.snd ] };
+		}
+
+		return best;
+	},
+
+	_getPlacementState: function( clamp ) {
+		var offset, gdOffset,
+			ar = this._ui.arrow,
+			state = {
+				clampInfo: this._clampPopupWidth( !clamp ),
+				arFull: { cx: ar.ct.width(), cy: ar.ct.height() },
+				guideDims: { cx: ar.gd.width(), cy: ar.gd.height() },
+				guideOffset: ar.gd.offset()
+			};
+
+		offset = this.element.offset();
+
+		ar.gd.css( { left: 0, top: 0, right: 0, bottom: 0 } );
+		gdOffset = ar.gd.offset();
+		state.contentBox = {
+			x: gdOffset.left - offset.left,
+			y: gdOffset.top - offset.top,
+			cx: ar.gd.width(),
+			cy: ar.gd.height()
+		};
+		ar.gd.removeAttr( "style" );
+
+		// The arrow box moves between guideOffset and guideOffset + guideDims - arFull
+		state.guideOffset = { left: state.guideOffset.left - offset.left, top: state.guideOffset.top - offset.top };
+		state.arHalf = { cx: state.arFull.cx / 2, cy: state.arFull.cy / 2 };
+		state.menuHalf = { cx: state.clampInfo.menuSize.cx / 2, cy: state.clampInfo.menuSize.cy / 2 };
+
+		return state;
+	},
+
+	_placementCoords: function( desired ) {
+		var state, best, params, elOffset, bgRef,
+			optionValue = this.options.arrow,
+			ar = this._ui.arrow;
+
+		if ( !ar ) {
+			return this._super( desired );
+		}
+
+		ar.arEls.show();
+
+		bgRef = {};
+		state = this._getPlacementState( true );
+		params = {
+			"l": { fst: "x", snd: "y", prop: "top", dimKey: "cy", oDimKey: "cx", offsetFactor: 1, tipOffset:  -state.arHalf.cx, arrowOffsetFactor: 0 },
+			"r": { fst: "x", snd: "y", prop: "top", dimKey: "cy", oDimKey: "cx", offsetFactor: -1, tipOffset: state.arHalf.cx + state.contentBox.cx, arrowOffsetFactor: 1 },
+			"b": { fst: "y", snd: "x", prop: "left", dimKey: "cx", oDimKey: "cy", offsetFactor: -1, tipOffset: state.arHalf.cy + state.contentBox.cy, arrowOffsetFactor: 1 },
+			"t": { fst: "y", snd: "x", prop: "left", dimKey: "cx", oDimKey: "cy", offsetFactor: 1, tipOffset: -state.arHalf.cy, arrowOffsetFactor: 0 }
+		};
+
+		// Try each side specified in the options to see on which one the arrow
+		// should be placed such that the distance between the tip of the arrow and
+		// the desired coordinates is the shortest.
+		$.each( ( optionValue === true ? "l,t,r,b" : optionValue ).split( "," ),
+			$.proxy( function( key, value ) {
+				best = this._tryAnArrow( params[ value ], value, desired, state, best );
+			}, this ) );
+
+		// Could not place the arrow along any of the edges - behave as if showing
+		// the arrow was turned off.
+		if ( !best ) {
+			ar.arEls.hide();
+			return this._super( desired );
+		}
+
+		// Move the arrow into place
+		ar.ct
+			.removeClass( "ui-popup-arrow-l ui-popup-arrow-t ui-popup-arrow-r ui-popup-arrow-b" )
+			.addClass( "ui-popup-arrow-" + best.dir )
+			.removeAttr( "style" ).css( best.posProp, best.posVal )
+			.show();
+
+		// Do not move/size the background div on IE, because we use the arrow div for background as well.
+		if ( !ieHack ) {
+			elOffset = this.element.offset();
+			bgRef[ params[ best.dir ].fst ] = ar.ct.offset();
+			bgRef[ params[ best.dir ].snd ] = {
+				left: elOffset.left + state.contentBox.x,
+				top: elOffset.top + state.contentBox.y
+			};
+		}
+
+		return best.result;
+	},
+
+	_setOptions: function( opts ) {
+		var newTheme,
+			oldTheme = this.options.theme,
+			ar = this._ui.arrow,
+			ret = this._super( opts );
+
+		if ( opts.arrow !== undefined ) {
+			if ( !ar && opts.arrow ) {
+				this._ui.arrow = this._addArrow();
+
+				// Important to return here so we don't set the same options all over
+				// again below.
+				return;
+			} else if ( ar && !opts.arrow ) {
+				ar.arEls.remove();
+				this._ui.arrow = null;
+			}
+		}
+
+		// Reassign with potentially new arrow
+		ar = this._ui.arrow;
+
+		if ( ar ) {
+			if ( opts.theme !== undefined ) {
+				oldTheme = this._themeClassFromOption( "ui-body-", oldTheme );
+				newTheme = this._themeClassFromOption( "ui-body-", opts.theme );
+				ar.ar.removeClass( oldTheme ).addClass( newTheme );
+			}
+
+			if ( opts.shadow !== undefined ) {
+				ar.ar.toggleClass( "ui-overlay-shadow", opts.shadow );
+			}
+		}
+
+		return ret;
+	},
+
+	_destroy: function() {
+		var ar = this._ui.arrow;
+
+		if ( ar ) {
+			ar.arEls.remove();
+		}
+
+		return this._super();
+	}
+});
+
+})( jQuery );
+
+
+(function( $, undefined ) {
+
+$.widget( "mobile.panel", {
+	options: {
+		classes: {
+			panel: "ui-panel",
+			panelOpen: "ui-panel-open",
+			panelClosed: "ui-panel-closed",
+			panelFixed: "ui-panel-fixed",
+			panelInner: "ui-panel-inner",
+			modal: "ui-panel-dismiss",
+			modalOpen: "ui-panel-dismiss-open",
+			pageContainer: "ui-panel-page-container",
+			pageWrapper: "ui-panel-wrapper",
+			pageFixedToolbar: "ui-panel-fixed-toolbar",
+			pageContentPrefix: "ui-panel-page-content", /* Used for wrapper and fixed toolbars position, display and open classes. */
+			animate: "ui-panel-animate"
+		},
+		animate: true,
+		theme: null,
+		position: "left",
+		dismissible: true,
+		display: "reveal", //accepts reveal, push, overlay
+		swipeClose: true,
+		positionFixed: false
+	},
+
+	_closeLink: null,
+	_parentPage: null,
+	_page: null,
+	_modal: null,
+	_panelInner: null,
+	_wrapper: null,
+	_fixedToolbars: null,
+
+	_create: function() {
+		var el = this.element,
+			parentPage = el.closest( ".ui-page, :jqmData(role='page')" );
+
+		// expose some private props to other methods
+		$.extend( this, {
+			_closeLink: el.find( ":jqmData(rel='close')" ),
+			_parentPage: ( parentPage.length > 0 ) ? parentPage : false,
+			_openedPage: null,
+			_page: this._getPage,
+			_panelInner: this._getPanelInner(),
+			_fixedToolbars: this._getFixedToolbars
+		});
+		if ( this.options.display !== "overlay" ){
+			this._getWrapper();
+		}
+		this._addPanelClasses();
+
+		// if animating, add the class to do so
+		if ( $.support.cssTransform3d && !!this.options.animate ) {
+			this.element.addClass( this.options.classes.animate );
+		}
+
+		this._bindUpdateLayout();
+		this._bindCloseEvents();
+		this._bindLinkListeners();
+		this._bindPageEvents();
+
+		if ( !!this.options.dismissible ) {
+			this._createModal();
+		}
+
+		this._bindSwipeEvents();
+	},
+
+	_getPanelInner: function() {
+		var panelInner = this.element.find( "." + this.options.classes.panelInner );
+
+		if ( panelInner.length === 0 ) {
+			panelInner = this.element.children().wrapAll( "<div class='" + this.options.classes.panelInner + "' />" ).parent();
+		}
+
+		return panelInner;
+	},
+
+	_createModal: function() {
+		var self = this,
+			target = self._parentPage ? self._parentPage.parent() : self.element.parent();
+
+		self._modal = $( "<div class='" + self.options.classes.modal + "'></div>" )
+			.on( "mousedown", function() {
+				self.close();
+			})
+			.appendTo( target );
+	},
+
+	_getPage: function() {
+		var page = this._openedPage || this._parentPage || $( "." + $.mobile.activePageClass );
+
+		return page;
+	},
+
+	_getWrapper: function() {
+		var wrapper = this._page().find( "." + this.options.classes.pageWrapper );
+		if ( wrapper.length === 0 ) {
+			wrapper = this._page().children( ".ui-header:not(.ui-header-fixed), .ui-content:not(.ui-popup), .ui-footer:not(.ui-footer-fixed)" )
+				.wrapAll( "<div class='" + this.options.classes.pageWrapper + "'></div>" )
+				.parent();
+		}
+
+		this._wrapper = wrapper;
+	},
+
+	_getFixedToolbars: function() {
+		var extFixedToolbars = $( "body" ).children( ".ui-header-fixed, .ui-footer-fixed" ),
+			intFixedToolbars = this._page().find( ".ui-header-fixed, .ui-footer-fixed" ),
+			fixedToolbars = extFixedToolbars.add( intFixedToolbars ).addClass( this.options.classes.pageFixedToolbar );
+
+		return fixedToolbars;
+	},
+
+	_getPosDisplayClasses: function( prefix ) {
+		return prefix + "-position-" + this.options.position + " " + prefix + "-display-" + this.options.display;
+	},
+
+	_getPanelClasses: function() {
+		var panelClasses = this.options.classes.panel +
+			" " + this._getPosDisplayClasses( this.options.classes.panel ) +
+			" " + this.options.classes.panelClosed +
+			" " + "ui-body-" + ( this.options.theme ? this.options.theme : "inherit" );
+
+		if ( !!this.options.positionFixed ) {
+			panelClasses += " " + this.options.classes.panelFixed;
+		}
+
+		return panelClasses;
+	},
+
+	_addPanelClasses: function() {
+		this.element.addClass( this._getPanelClasses() );
+	},
+
+	_handleCloseClick: function( event ) {
+		if ( !event.isDefaultPrevented() ) {
+			this.close();
+		}
+	},
+
+	_bindCloseEvents: function() {
+		this._on( this._closeLink, {
+			"click": "_handleCloseClick"
+		});
+
+		this._on({
+			"click a:jqmData(ajax='false')": "_handleCloseClick"
+		});
+	},
+
+	_positionPanel: function( scrollToTop ) {
+		var self = this,
+			panelInnerHeight = self._panelInner.outerHeight(),
+			expand = panelInnerHeight > $.mobile.getScreenHeight();
+
+		if ( expand || !self.options.positionFixed ) {
+			if ( expand ) {
+				self._unfixPanel();
+				$.mobile.resetActivePageHeight( panelInnerHeight );
+			}
+			if ( scrollToTop ) {
+				this.window[ 0 ].scrollTo( 0, $.mobile.defaultHomeScroll );
+			}
+		} else {
+			self._fixPanel();
+		}
+	},
+
+	_bindFixListener: function() {
+		this._on( $( window ), { "throttledresize": "_positionPanel" });
+	},
+
+	_unbindFixListener: function() {
+		this._off( $( window ), "throttledresize" );
+	},
+
+	_unfixPanel: function() {
+		if ( !!this.options.positionFixed && $.support.fixedPosition ) {
+			this.element.removeClass( this.options.classes.panelFixed );
+		}
+	},
+
+	_fixPanel: function() {
+		if ( !!this.options.positionFixed && $.support.fixedPosition ) {
+			this.element.addClass( this.options.classes.panelFixed );
+		}
+	},
+
+	_bindUpdateLayout: function() {
+		var self = this;
+
+		self.element.on( "updatelayout", function(/* e */) {
+			if ( self._open ) {
+				self._positionPanel();
+			}
+		});
+	},
+
+	_bindLinkListeners: function() {
+		this._on( "body", {
+			"click a": "_handleClick"
+		});
+
+	},
+
+	_handleClick: function( e ) {
+		var link,
+			panelId = this.element.attr( "id" );
+
+		if ( e.currentTarget.href.split( "#" )[ 1 ] === panelId && panelId !== undefined ) {
+
+			e.preventDefault();
+			link = $( e.target );
+			if ( link.hasClass( "ui-btn" ) ) {
+				link.addClass( $.mobile.activeBtnClass );
+				this.element.one( "panelopen panelclose", function() {
+					link.removeClass( $.mobile.activeBtnClass );
+				});
+			}
+			this.toggle();
+		}
+	},
+
+	_bindSwipeEvents: function() {
+		var self = this,
+			area = self._modal ? self.element.add( self._modal ) : self.element;
+
+		// on swipe, close the panel
+		if ( !!self.options.swipeClose ) {
+			if ( self.options.position === "left" ) {
+				area.on( "swipeleft.panel", function(/* e */) {
+					self.close();
+				});
+			} else {
+				area.on( "swiperight.panel", function(/* e */) {
+					self.close();
+				});
+			}
+		}
+	},
+
+	_bindPageEvents: function() {
+		var self = this;
+
+		this.document
+			// Close the panel if another panel on the page opens
+			.on( "panelbeforeopen", function( e ) {
+				if ( self._open && e.target !== self.element[ 0 ] ) {
+					self.close();
+				}
+			})
+			// On escape, close? might need to have a target check too...
+			.on( "keyup.panel", function( e ) {
+				if ( e.keyCode === 27 && self._open ) {
+					self.close();
+				}
+			});
+		if ( !this._parentPage && this.options.display !== "overlay" ) {
+			this._on( this.document, {
+				"pageshow": function() {
+					this._openedPage = null;
+					this._getWrapper();
+				}
+			});
+		}
+		// Clean up open panels after page hide
+		if ( self._parentPage ) {
+			this.document.on( "pagehide", ":jqmData(role='page')", function() {
+				if ( self._open ) {
+					self.close( true );
+				}
+			});
+		} else {
+			this.document.on( "pagebeforehide", function() {
+				if ( self._open ) {
+					self.close( true );
+				}
+			});
+		}
+	},
+
+	// state storage of open or closed
+	_open: false,
+	_pageContentOpenClasses: null,
+	_modalOpenClasses: null,
+
+	open: function( immediate ) {
+		if ( !this._open ) {
+			var self = this,
+				o = self.options,
+
+				_openPanel = function() {
+					self._off( self.document , "panelclose" );
+					self._page().jqmData( "panel", "open" );
+
+					if ( $.support.cssTransform3d && !!o.animate && o.display !== "overlay" ) {
+						self._wrapper.addClass( o.classes.animate );
+						self._fixedToolbars().addClass( o.classes.animate );
+					}
+
+					if ( !immediate && $.support.cssTransform3d && !!o.animate ) {
+						( self._wrapper || self.element )
+							.animationComplete( complete, "transition" );
+					} else {
+						setTimeout( complete, 0 );
+					}
+
+					if ( o.theme && o.display !== "overlay" ) {
+						self._page().parent()
+							.addClass( o.classes.pageContainer + "-themed " + o.classes.pageContainer + "-" + o.theme );
+					}
+
+					self.element
+						.removeClass( o.classes.panelClosed )
+						.addClass( o.classes.panelOpen );
+
+					self._positionPanel( true );
+
+					self._pageContentOpenClasses = self._getPosDisplayClasses( o.classes.pageContentPrefix );
+
+					if ( o.display !== "overlay" ) {
+						self._page().parent().addClass( o.classes.pageContainer );
+						self._wrapper.addClass( self._pageContentOpenClasses );
+						self._fixedToolbars().addClass( self._pageContentOpenClasses );
+					}
+
+					self._modalOpenClasses = self._getPosDisplayClasses( o.classes.modal ) + " " + o.classes.modalOpen;
+					if ( self._modal ) {
+						self._modal
+							.addClass( self._modalOpenClasses )
+							.height( Math.max( self._modal.height(), self.document.height() ) );
+					}
+				},
+				complete = function() {
+
+					// Bail if the panel was closed before the opening animation has completed
+					if ( !self._open ) {
+						return;
+					}
+
+					if ( o.display !== "overlay" ) {
+						self._wrapper.addClass( o.classes.pageContentPrefix + "-open" );
+						self._fixedToolbars().addClass( o.classes.pageContentPrefix + "-open" );
+					}
+
+					self._bindFixListener();
+
+					self._trigger( "open" );
+
+					self._openedPage = self._page();
+				};
+
+			self._trigger( "beforeopen" );
+
+			if ( self._page().jqmData( "panel" ) === "open" ) {
+				self._on( self.document, {
+					"panelclose": _openPanel
+				});
+			} else {
+				_openPanel();
+			}
+
+			self._open = true;
+		}
+	},
+
+	close: function( immediate ) {
+		if ( this._open ) {
+			var self = this,
+				o = this.options,
+
+				_closePanel = function() {
+
+					self.element.removeClass( o.classes.panelOpen );
+
+					if ( o.display !== "overlay" ) {
+						self._wrapper.removeClass( self._pageContentOpenClasses );
+						self._fixedToolbars().removeClass( self._pageContentOpenClasses );
+					}
+
+					if ( !immediate && $.support.cssTransform3d && !!o.animate ) {
+						( self._wrapper || self.element )
+							.animationComplete( complete, "transition" );
+					} else {
+						setTimeout( complete, 0 );
+					}
+
+					if ( self._modal ) {
+						self._modal
+							.removeClass( self._modalOpenClasses )
+							.height( "" );
+					}
+				},
+				complete = function() {
+					if ( o.theme && o.display !== "overlay" ) {
+						self._page().parent().removeClass( o.classes.pageContainer + "-themed " + o.classes.pageContainer + "-" + o.theme );
+					}
+
+					self.element.addClass( o.classes.panelClosed );
+
+					if ( o.display !== "overlay" ) {
+						self._page().parent().removeClass( o.classes.pageContainer );
+						self._wrapper.removeClass( o.classes.pageContentPrefix + "-open" );
+						self._fixedToolbars().removeClass( o.classes.pageContentPrefix + "-open" );
+					}
+
+					if ( $.support.cssTransform3d && !!o.animate && o.display !== "overlay" ) {
+						self._wrapper.removeClass( o.classes.animate );
+						self._fixedToolbars().removeClass( o.classes.animate );
+					}
+
+					self._fixPanel();
+					self._unbindFixListener();
+					$.mobile.resetActivePageHeight();
+
+					self._page().jqmRemoveData( "panel" );
+
+					self._trigger( "close" );
+
+					self._openedPage = null;
+				};
+
+			self._trigger( "beforeclose" );
+
+			_closePanel();
+
+			self._open = false;
+		}
+	},
+
+	toggle: function() {
+		this[ this._open ? "close" : "open" ]();
+	},
+
+	_destroy: function() {
+		var otherPanels,
+		o = this.options,
+		multiplePanels = ( $( "body > :mobile-panel" ).length + $.mobile.activePage.find( ":mobile-panel" ).length ) > 1;
+
+		if ( o.display !== "overlay" ) {
+
+			//  remove the wrapper if not in use by another panel
+			otherPanels = $( "body > :mobile-panel" ).add( $.mobile.activePage.find( ":mobile-panel" ) );
+			if ( otherPanels.not( ".ui-panel-display-overlay" ).not( this.element ).length === 0 ) {
+				this._wrapper.children().unwrap();
+			}
+
+			if ( this._open ) {
+
+				this._fixedToolbars().removeClass( o.classes.pageContentPrefix + "-open" );
+
+				if ( $.support.cssTransform3d && !!o.animate ) {
+					this._fixedToolbars().removeClass( o.classes.animate );
+				}
+
+				this._page().parent().removeClass( o.classes.pageContainer );
+
+				if ( o.theme ) {
+					this._page().parent().removeClass( o.classes.pageContainer + "-themed " + o.classes.pageContainer + "-" + o.theme );
+				}
+			}
+		}
+
+		if ( !multiplePanels ) {
+
+			this.document.off( "panelopen panelclose" );
+
+		}
+
+		if ( this._open ) {
+			this._page().jqmRemoveData( "panel" );
+		}
+
+		this._panelInner.children().unwrap();
+
+		this.element
+			.removeClass( [ this._getPanelClasses(), o.classes.panelOpen, o.classes.animate ].join( " " ) )
+			.off( "swipeleft.panel swiperight.panel" )
+			.off( "panelbeforeopen" )
+			.off( "panelhide" )
+			.off( "keyup.panel" )
+			.off( "updatelayout" );
+
+		if ( this._modal ) {
+			this._modal.remove();
+		}
+	}
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.widget( "mobile.table", {
+	options: {
+		classes: {
+			table: "ui-table"
+		},
+		enhanced: false
+	},
+
+	_create: function() {
+		if ( !this.options.enhanced ) {
+			this.element.addClass( this.options.classes.table );
+		}
+
+		// extend here, assign on refresh > _setHeaders
+		$.extend( this, {
+
+			// Expose headers and allHeaders properties on the widget
+			// headers references the THs within the first TR in the table
+			headers: undefined,
+
+			// allHeaders references headers, plus all THs in the thead, which may
+			// include several rows, or not
+			allHeaders: undefined
+		});
+
+		this._refresh( true );
+	},
+
+	_setHeaders: function() {
+		var trs = this.element.find( "thead tr" );
+
+		this.headers = this.element.find( "tr:eq(0)" ).children();
+		this.allHeaders = this.headers.add( trs.children() );
+	},
+
+	refresh: function() {
+		this._refresh();
+	},
+
+	rebuild: $.noop,
+
+	_refresh: function( /* create */ ) {
+		var table = this.element,
+			trs = table.find( "thead tr" );
+
+		// updating headers on refresh (fixes #5880)
+		this._setHeaders();
+
+		// Iterate over the trs
+		trs.each( function() {
+			var columnCount = 0;
+
+			// Iterate over the children of the tr
+			$( this ).children().each( function() {
+				var span = parseInt( this.getAttribute( "colspan" ), 10 ),
+					selector = ":nth-child(" + ( columnCount + 1 ) + ")",
+					j;
+
+				this.setAttribute( "data-" + $.mobile.ns + "colstart", columnCount + 1 );
+
+				if ( span ) {
+					for( j = 0; j < span - 1; j++ ) {
+						columnCount++;
+						selector += ", :nth-child(" + ( columnCount + 1 ) + ")";
+					}
+				}
+
+				// Store "cells" data on header as a reference to all cells in the
+				// same column as this TH
+				$( this ).jqmData( "cells", table.find( "tr" ).not( trs.eq( 0 ) ).not( this ).children( selector ) );
+
+				columnCount++;
+			});
+		});
+	}
+});
+
+})( jQuery );
+
+
+(function( $, undefined ) {
+
+$.widget( "mobile.table", $.mobile.table, {
+	options: {
+		mode: "columntoggle",
+		columnBtnTheme: null,
+		columnPopupTheme: null,
+		columnBtnText: "Columns...",
+		classes: $.extend( $.mobile.table.prototype.options.classes, {
+			popup: "ui-table-columntoggle-popup",
+			columnBtn: "ui-table-columntoggle-btn",
+			priorityPrefix: "ui-table-priority-",
+			columnToggleTable: "ui-table-columntoggle"
+		})
+	},
+
+	_create: function() {
+		this._super();
+
+		if ( this.options.mode !== "columntoggle" ) {
+			return;
+		}
+
+		$.extend( this, {
+			_menu: null
+		});
+
+		if ( this.options.enhanced ) {
+			this._menu = $( this.document[ 0 ].getElementById( this._id() + "-popup" ) ).children().first();
+			this._addToggles( this._menu, true );
+		} else {
+			this._menu = this._enhanceColToggle();
+			this.element.addClass( this.options.classes.columnToggleTable );
+		}
+
+		this._setupEvents();
+
+		this._setToggleState();
+	},
+
+	_id: function() {
+		return ( this.element.attr( "id" ) || ( this.widgetName + this.uuid ) );
+	},
+
+	_setupEvents: function() {
+		//NOTE: inputs are bound in bindToggles,
+		// so it can be called on refresh, too
+
+		// update column toggles on resize
+		this._on( this.window, {
+			throttledresize: "_setToggleState"
+		});
+		this._on( this._menu, {
+			"change input": "_menuInputChange"
+		});
+	},
+
+	_addToggles: function( menu, keep ) {
+		var inputs,
+			checkboxIndex = 0,
+			opts = this.options,
+			container = menu.controlgroup( "container" );
+
+		// allow update of menu on refresh (fixes #5880)
+		if ( keep ) {
+			inputs = menu.find( "input" );
+		} else {
+			container.empty();
+		}
+
+		// create the hide/show toggles
+		this.headers.not( "td" ).each( function() {
+			var input, cells,
+				header = $( this ),
+				priority = $.mobile.getAttribute( this, "priority" );
+
+			if ( priority ) {
+				cells = header.add( header.jqmData( "cells" ) );
+				cells.addClass( opts.classes.priorityPrefix + priority );
+
+				// Make sure the (new?) checkbox is associated with its header via .jqmData() and
+				// that, vice versa, the header is also associated with the checkbox
+				input = ( keep ? inputs.eq( checkboxIndex++ ) :
+					$("<label><input type='checkbox' checked />" +
+						( header.children( "abbr" ).first().attr( "title" ) ||
+							header.text() ) +
+						"</label>" )
+						.appendTo( container )
+						.children( 0 )
+						.checkboxradio( {
+							theme: opts.columnPopupTheme
+						}) )
+
+						// Associate the header with the checkbox
+						.jqmData( "header", header )
+						.jqmData( "cells", cells );
+
+				// Associate the checkbox with the header
+				header.jqmData( "input", input );
+			}
+		});
+
+		// set bindings here
+		if ( !keep ) {
+			menu.controlgroup( "refresh" );
+		}
+	},
+
+	_menuInputChange: function( evt ) {
+		var input = $( evt.target ),
+			checked = input[ 0 ].checked;
+
+		input.jqmData( "cells" )
+			.toggleClass( "ui-table-cell-hidden", !checked )
+			.toggleClass( "ui-table-cell-visible", checked );
+	},
+
+	_unlockCells: function( cells ) {
+		// allow hide/show via CSS only = remove all toggle-locks
+		cells.removeClass( "ui-table-cell-hidden ui-table-cell-visible");
+	},
+
+	_enhanceColToggle: function() {
+		var id , menuButton, popup, menu,
+			table = this.element,
+			opts = this.options,
+			ns = $.mobile.ns,
+			fragment = this.document[ 0 ].createDocumentFragment();
+
+		id = this._id() + "-popup";
+		menuButton = $( "<a href='#" + id + "' " +
+			"class='" + opts.classes.columnBtn + " ui-btn " +
+			"ui-btn-" + ( opts.columnBtnTheme || "a" ) +
+			" ui-corner-all ui-shadow ui-mini' " +
+			"data-" + ns + "rel='popup'>" + opts.columnBtnText + "</a>" );
+		popup = $( "<div class='" + opts.classes.popup + "' id='" + id + "'></div>" );
+		menu = $( "<fieldset></fieldset>" ).controlgroup();
+
+		// set extension here, send "false" to trigger build/rebuild
+		this._addToggles( menu, false );
+
+		menu.appendTo( popup );
+
+		fragment.appendChild( popup[ 0 ] );
+		fragment.appendChild( menuButton[ 0 ] );
+		table.before( fragment );
+
+		popup.popup();
+
+		return menu;
+	},
+
+	rebuild: function() {
+		this._super();
+
+		if ( this.options.mode === "columntoggle" ) {
+			// NOTE: rebuild passes "false", while refresh passes "undefined"
+			// both refresh the table, but inside addToggles, !false will be true,
+			// so a rebuild call can be indentified
+			this._refresh( false );
+		}
+	},
+
+	_refresh: function( create ) {
+		var headers, hiddenColumns, index;
+
+		// Calling _super() here updates this.headers
+		this._super( create );
+
+		if ( !create && this.options.mode === "columntoggle" ) {
+			headers = this.headers;
+			hiddenColumns = [];
+
+			// Find the index of the column header associated with each old checkbox among the
+			// post-refresh headers and, if the header is still there, make sure the corresponding
+			// column will be hidden if the pre-refresh checkbox indicates that the column is
+			// hidden by recording its index in the array of hidden columns.
+			this._menu.find( "input" ).each( function() {
+				var input = $( this ),
+					header = input.jqmData( "header" ),
+					index = headers.index( header[ 0 ] );
+
+				if ( index > -1 && !input.prop( "checked" ) ) {
+
+					// The column header associated with /this/ checkbox is still present in the
+					// post-refresh table and the checkbox is not checked, so the column associated
+					// with this column header is currently hidden. Let's record that.
+					hiddenColumns.push( index );
+				}
+			});
+
+			// columns not being replaced must be cleared from input toggle-locks
+			this._unlockCells( this.element.find( ".ui-table-cell-hidden, " +
+				".ui-table-cell-visible" ) );
+
+			// update columntoggles and cells
+			this._addToggles( this._menu, create );
+
+			// At this point all columns are visible, so uncheck the checkboxes that correspond to
+			// those columns we've found to be hidden
+			for ( index = hiddenColumns.length - 1 ; index > -1 ; index-- ) {
+				headers.eq( hiddenColumns[ index ] ).jqmData( "input" )
+					.prop( "checked", false )
+					.checkboxradio( "refresh" )
+					.trigger( "change" );
+			}
+		}
+	},
+
+	_setToggleState: function() {
+		this._menu.find( "input" ).each( function() {
+			var checkbox = $( this );
+
+			this.checked = checkbox.jqmData( "cells" ).eq( 0 ).css( "display" ) === "table-cell";
+			checkbox.checkboxradio( "refresh" );
+		});
+	},
+
+	_destroy: function() {
+		this._super();
+	}
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+$.widget( "mobile.table", $.mobile.table, {
+	options: {
+		mode: "reflow",
+		classes: $.extend( $.mobile.table.prototype.options.classes, {
+			reflowTable: "ui-table-reflow",
+			cellLabels: "ui-table-cell-label"
+		})
+	},
+
+	_create: function() {
+		this._super();
+
+		// If it's not reflow mode, return here.
+		if ( this.options.mode !== "reflow" ) {
+			return;
+		}
+
+		if ( !this.options.enhanced ) {
+			this.element.addClass( this.options.classes.reflowTable );
+
+			this._updateReflow();
+		}
+	},
+
+	rebuild: function() {
+		this._super();
+
+		if ( this.options.mode === "reflow" ) {
+			this._refresh( false );
+		}
+	},
+
+	_refresh: function( create ) {
+		this._super( create );
+		if ( !create && this.options.mode === "reflow" ) {
+			this._updateReflow( );
+		}
+	},
+
+	_updateReflow: function() {
+		var table = this,
+			opts = this.options;
+
+		// get headers in reverse order so that top-level headers are appended last
+		$( table.allHeaders.get().reverse() ).each( function() {
+			var cells = $( this ).jqmData( "cells" ),
+				colstart = $.mobile.getAttribute( this, "colstart" ),
+				hierarchyClass = cells.not( this ).filter( "thead th" ).length && " ui-table-cell-label-top",
+				contents = $( this ).clone().contents(),
+				iteration, filter;
+
+				if ( contents.length > 0  ) {
+
+					if ( hierarchyClass ) {
+						iteration = parseInt( this.getAttribute( "colspan" ), 10 );
+						filter = "";
+
+						if ( iteration ) {
+							filter = "td:nth-child("+ iteration +"n + " + ( colstart ) +")";
+						}
+
+						table._addLabels( cells.filter( filter ),
+							opts.classes.cellLabels + hierarchyClass, contents );
+					} else {
+						table._addLabels( cells, opts.classes.cellLabels, contents );
+					}
+
+				}
+		});
+	},
+
+	_addLabels: function( cells, label, contents ) {
+		if ( contents.length === 1 && contents[ 0 ].nodeName.toLowerCase() === "abbr" ) {
+			contents = contents.eq( 0 ).attr( "title" );
+		}
+		// .not fixes #6006
+		cells
+			.not( ":has(b." + label + ")" )
+				.prepend( $( "<b class='" + label + "'></b>" ).append( contents ) );
+	}
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+// TODO rename filterCallback/deprecate and default to the item itself as the first argument
+var defaultFilterCallback = function( index, searchValue ) {
+	return ( ( "" + ( $.mobile.getAttribute( this, "filtertext" ) || $( this ).text() ) )
+		.toLowerCase().indexOf( searchValue ) === -1 );
+};
+
+$.widget( "mobile.filterable", {
+
+	initSelector: ":jqmData(filter='true')",
+
+	options: {
+		filterReveal: false,
+		filterCallback: defaultFilterCallback,
+		enhanced: false,
+		input: null,
+		children: "> li, > option, > optgroup option, > tbody tr, > .ui-controlgroup-controls > .ui-btn, > .ui-controlgroup-controls > .ui-checkbox, > .ui-controlgroup-controls > .ui-radio"
+	},
+
+	_create: function() {
+		var opts = this.options;
+
+		$.extend( this, {
+			_search: null,
+			_timer: 0
+		});
+
+		this._setInput( opts.input );
+		if ( !opts.enhanced ) {
+			this._filterItems( ( ( this._search && this._search.val() ) || "" ).toLowerCase() );
+		}
+	},
+
+	_onKeyUp: function() {
+		var val, lastval,
+			search = this._search;
+
+		if ( search ) {
+			val = search.val().toLowerCase(),
+			lastval = $.mobile.getAttribute( search[ 0 ], "lastval" ) + "";
+
+			if ( lastval && lastval === val ) {
+				// Execute the handler only once per value change
+				return;
+			}
+
+			if ( this._timer ) {
+				window.clearTimeout( this._timer );
+				this._timer = 0;
+			}
+
+			this._timer = this._delay( function() {
+				if ( this._trigger( "beforefilter", null, { input: search } ) === false ) {
+					return false;
+				}
+
+				// Change val as lastval for next execution
+				search[ 0 ].setAttribute( "data-" + $.mobile.ns + "lastval", val );
+
+				this._filterItems( val );
+				this._timer = 0;
+			}, 250 );
+		}
+	},
+
+	_getFilterableItems: function() {
+		var elem = this.element,
+			children = this.options.children,
+			items = !children ? { length: 0 }:
+				$.isFunction( children ) ? children():
+				children.nodeName ? $( children ):
+				children.jquery ? children:
+				this.element.find( children );
+
+		if ( items.length === 0 ) {
+			items = elem.children();
+		}
+
+		return items;
+	},
+
+	_filterItems: function( val ) {
+		var idx, callback, length, dst,
+			show = [],
+			hide = [],
+			opts = this.options,
+			filterItems = this._getFilterableItems();
+
+		if ( val != null ) {
+			callback = opts.filterCallback || defaultFilterCallback;
+			length = filterItems.length;
+
+			// Partition the items into those to be hidden and those to be shown
+			for ( idx = 0 ; idx < length ; idx++ ) {
+				dst = ( callback.call( filterItems[ idx ], idx, val ) ) ? hide : show;
+				dst.push( filterItems[ idx ] );
+			}
+		}
+
+		// If nothing is hidden, then the decision whether to hide or show the items
+		// is based on the "filterReveal" option.
+		if ( hide.length === 0 ) {
+			filterItems[ ( opts.filterReveal && val.length === 0 ) ?
+				"addClass" : "removeClass" ]( "ui-screen-hidden" );
+		} else {
+			$( hide ).addClass( "ui-screen-hidden" );
+			$( show ).removeClass( "ui-screen-hidden" );
+		}
+
+		this._refreshChildWidget();
+
+		this._trigger( "filter", null, {
+			items: filterItems
+		});
+	},
+
+	// The Default implementation of _refreshChildWidget attempts to call
+	// refresh on collapsibleset, controlgroup, selectmenu, or listview
+	_refreshChildWidget: function() {
+		var widget, idx,
+			recognizedWidgets = [ "collapsibleset", "selectmenu", "controlgroup", "listview" ];
+
+		for ( idx = recognizedWidgets.length - 1 ; idx > -1 ; idx-- ) {
+			widget = recognizedWidgets[ idx ];
+			if ( $.mobile[ widget ] ) {
+				widget = this.element.data( "mobile-" + widget );
+				if ( widget && $.isFunction( widget.refresh ) ) {
+					widget.refresh();
+				}
+			}
+		}
+	},
+
+	// TODO: When the input is not internal, do not even store it in this._search
+	_setInput: function ( selector ) {
+		var search = this._search;
+
+		// Stop a pending filter operation
+		if ( this._timer ) {
+			window.clearTimeout( this._timer );
+			this._timer = 0;
+		}
+
+		if ( search ) {
+			this._off( search, "keyup change input" );
+			search = null;
+		}
+
+		if ( selector ) {
+			search = selector.jquery ? selector:
+				selector.nodeName ? $( selector ):
+				this.document.find( selector );
+
+			this._on( search, {
+				keydown: "_onKeyDown",
+				keypress: "_onKeyPress",
+				keyup: "_onKeyUp",
+				change: "_onKeyUp",
+				input: "_onKeyUp"
+			});
+		}
+
+		this._search = search;
+	},
+
+	// Prevent form submission
+	_onKeyDown: function( event ) {
+		if ( event.keyCode === $.ui.keyCode.ENTER ) {
+			event.preventDefault();
+			this._preventKeyPress = true;
+		}
+	},
+
+	_onKeyPress: function( event ) {
+		if ( this._preventKeyPress ) {
+			event.preventDefault();
+			this._preventKeyPress = false;
+		}
+	},
+
+	_setOptions: function( options ) {
+		var refilter = !( ( options.filterReveal === undefined ) &&
+				( options.filterCallback === undefined ) &&
+				( options.children === undefined ) );
+
+		this._super( options );
+
+		if ( options.input !== undefined ) {
+			this._setInput( options.input );
+			refilter = true;
+		}
+
+		if ( refilter ) {
+			this.refresh();
+		}
+	},
+
+	_destroy: function() {
+		var opts = this.options,
+			items = this._getFilterableItems();
+
+		if ( opts.enhanced ) {
+			items.toggleClass( "ui-screen-hidden", opts.filterReveal );
+		} else {
+			items.removeClass( "ui-screen-hidden" );
+		}
+	},
+
+	refresh: function() {
+		if ( this._timer ) {
+			window.clearTimeout( this._timer );
+			this._timer = 0;
+		}
+		this._filterItems( ( ( this._search && this._search.val() ) || "" ).toLowerCase() );
+	}
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+// Create a function that will replace the _setOptions function of a widget,
+// and will pass the options on to the input of the filterable.
+var replaceSetOptions = function( self, orig ) {
+		return function( options ) {
+			orig.call( this, options );
+			self._syncTextInputOptions( options );
+		};
+	},
+	rDividerListItem = /(^|\s)ui-li-divider(\s|$)/,
+	origDefaultFilterCallback = $.mobile.filterable.prototype.options.filterCallback;
+
+// Override the default filter callback with one that does not hide list dividers
+$.mobile.filterable.prototype.options.filterCallback = function( index, searchValue ) {
+	return !this.className.match( rDividerListItem ) &&
+		origDefaultFilterCallback.call( this, index, searchValue );
+};
+
+$.widget( "mobile.filterable", $.mobile.filterable, {
+	options: {
+		filterPlaceholder: "Filter items...",
+		filterTheme: null
+	},
+
+	_create: function() {
+		var idx, widgetName,
+			elem = this.element,
+			recognizedWidgets = [ "collapsibleset", "selectmenu", "controlgroup", "listview" ],
+			createHandlers = {};
+
+		this._super();
+
+		$.extend( this, {
+			_widget: null
+		});
+
+		for ( idx = recognizedWidgets.length - 1 ; idx > -1 ; idx-- ) {
+			widgetName = recognizedWidgets[ idx ];
+			if ( $.mobile[ widgetName ] ) {
+				if ( this._setWidget( elem.data( "mobile-" + widgetName ) ) ) {
+					break;
+				} else {
+					createHandlers[ widgetName + "create" ] = "_handleCreate";
+				}
+			}
+		}
+
+		if ( !this._widget ) {
+			this._on( elem, createHandlers );
+		}
+	},
+
+	_handleCreate: function( evt ) {
+		this._setWidget( this.element.data( "mobile-" + evt.type.substring( 0, evt.type.length - 6 ) ) );
+	},
+
+	_trigger: function( type, event, data ) {
+		if ( this._widget && this._widget.widgetFullName === "mobile-listview" &&
+			type === "beforefilter" ) {
+
+			// Also trigger listviewbeforefilter if this widget is also a listview
+			this._widget._trigger( "beforefilter", event, data );
+		}
+
+		// Passing back the response enables calling preventDefault()
+		return this._super( type, event, data );
+	},
+
+	_setWidget: function( widget ) {
+		if ( !this._widget && widget ) {
+			this._widget = widget;
+			this._widget._setOptions = replaceSetOptions( this, this._widget._setOptions );
+		}
+
+		if ( !!this._widget ) {
+			this._syncTextInputOptions( this._widget.options );
+			if ( this._widget.widgetName === "listview" ) {
+				this._widget.options.hideDividers = true;
+				this._widget.element.listview( "refresh" );
+			}
+		}
+
+		return !!this._widget;
+	},
+
+	_isSearchInternal: function() {
+		return ( this._search && this._search.jqmData( "ui-filterable-" + this.uuid + "-internal" ) );
+	},
+
+	_setInput: function( selector ) {
+		var opts = this.options,
+			updatePlaceholder = true,
+			textinputOpts = {};
+
+		if ( !selector ) {
+			if ( this._isSearchInternal() ) {
+
+				// Ignore the call to set a new input if the selector goes to falsy and
+				// the current textinput is already of the internally generated variety.
+				return;
+			} else {
+
+				// Generating a new textinput widget. No need to set the placeholder
+				// further down the function.
+				updatePlaceholder = false;
+				selector = $( "<input " +
+					"data-" + $.mobile.ns + "type='search' " +
+					"placeholder='" + opts.filterPlaceholder + "'></input>" )
+					.jqmData( "ui-filterable-" + this.uuid + "-internal", true );
+				$( "<form class='ui-filterable'></form>" )
+					.append( selector )
+					.submit( function( evt ) {
+						evt.preventDefault();
+						selector.blur();
+					})
+					.insertBefore( this.element );
+				if ( $.mobile.textinput ) {
+					if ( this.options.filterTheme != null ) {
+						textinputOpts[ "theme" ] = opts.filterTheme;
+					}
+
+					selector.textinput( textinputOpts );
+				}
+			}
+		}
+
+		this._super( selector );
+
+		if ( this._isSearchInternal() && updatePlaceholder ) {
+			this._search.attr( "placeholder", this.options.filterPlaceholder );
+		}
+	},
+
+	_setOptions: function( options ) {
+		var ret = this._super( options );
+
+		// Need to set the filterPlaceholder after having established the search input
+		if ( options.filterPlaceholder !== undefined ) {
+			if ( this._isSearchInternal() ) {
+				this._search.attr( "placeholder", options.filterPlaceholder );
+			}
+		}
+
+		if ( options.filterTheme !== undefined && this._search && $.mobile.textinput ) {
+			this._search.textinput( "option", "theme", options.filterTheme );
+		}
+
+		return ret;
+	},
+
+	// The listview implementation accompanying this filterable backcompat layer will call
+	// filterable.refresh() after it's done refreshing the listview to make sure the filterable
+	// filters out any new items added. However, when the listview refresh has been initiated by
+	// the filterable itself, then such filtering has already taken place, and calling the
+	// filterable's refresh() method will cause an infinite recursion. We stop this by setting a
+	// flag that will cause the filterable's refresh() method to short-circuit.
+	_refreshChildWidget: function() {
+		this._refreshingChildWidget = true;
+		this._superApply( arguments );
+		this._refreshingChildWidget = false;
+	},
+
+	refresh: function() {
+		if ( !this._refreshingChildWidget ) {
+			this._superApply( arguments );
+		}
+	},
+
+	_destroy: function() {
+		if ( this._isSearchInternal() ) {
+			this._search.remove();
+		}
+		this._super();
+	},
+
+	_syncTextInputOptions: function( options ) {
+		var idx,
+			textinputOptions = {};
+
+		// We only sync options if the filterable's textinput is of the internally
+		// generated variety, rather than one specified by the user.
+		if ( this._isSearchInternal() && $.mobile.textinput ) {
+
+			// Apply only the options understood by textinput
+			for ( idx in $.mobile.textinput.prototype.options ) {
+				if ( options[ idx ] !== undefined ) {
+					if ( idx === "theme" && this.options.filterTheme != null ) {
+						textinputOptions[ idx ] = this.options.filterTheme;
+					} else {
+						textinputOptions[ idx ] = options[ idx ];
+					}
+				}
+			}
+			this._search.textinput( "option", textinputOptions );
+		}
+	}
+});
+
+// Instantiate a filterable on a listview that has the data-filter="true" attribute
+// This is not necessary for static content, because the auto-enhance takes care of instantiating
+// the filterable upon encountering data-filter="true". However, because of 1.3.x it is expected
+// that a listview with data-filter="true" will be filterable even if you just instantiate a
+// listview on it. The extension below ensures that this continues to happen in 1.4.x.
+$.widget( "mobile.listview", $.mobile.listview, {
+	options: {
+		filter: false
+	},
+	_create: function() {
+		if ( this.options.filter === true &&
+				!this.element.data( "mobile-filterable" ) ) {
+			this.element.filterable();
+		}
+		return this._super();
+	},
+
+	refresh: function() {
+		var filterable;
+
+		this._superApply( arguments );
+
+		if ( this.options.filter === true ) {
+			filterable = this.element.data( "mobile-filterable" );
+
+			if ( filterable ) {
+				filterable.refresh();
+			}
+		}
+	}
+});
+
+})( jQuery );
+
+/*!
+ * jQuery UI Tabs fadf2b312a05040436451c64bbfaf4814bc62c56
+ * http://jqueryui.com
+ *
+ * Copyright 2013 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/tabs/
+ *
+ * Depends:
+ *	jquery.ui.core.js
+ *	jquery.ui.widget.js
+ */
+(function( $, undefined ) {
+
+var tabId = 0,
+	rhash = /#.*$/;
+
+function getNextTabId() {
+	return ++tabId;
+}
+
+function isLocal( anchor ) {
+	return anchor.hash.length > 1 &&
+		decodeURIComponent( anchor.href.replace( rhash, "" ) ) ===
+			decodeURIComponent( location.href.replace( rhash, "" ) );
+}
+
+$.widget( "ui.tabs", {
+	version: "fadf2b312a05040436451c64bbfaf4814bc62c56",
+	delay: 300,
+	options: {
+		active: null,
+		collapsible: false,
+		event: "click",
+		heightStyle: "content",
+		hide: null,
+		show: null,
+
+		// callbacks
+		activate: null,
+		beforeActivate: null,
+		beforeLoad: null,
+		load: null
+	},
+
+	_create: function() {
+		var that = this,
+			options = this.options;
+
+		this.running = false;
+
+		this.element
+			.addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" )
+			.toggleClass( "ui-tabs-collapsible", options.collapsible )
+			// Prevent users from focusing disabled tabs via click
+			.delegate( ".ui-tabs-nav > li", "mousedown" + this.eventNamespace, function( event ) {
+				if ( $( this ).is( ".ui-state-disabled" ) ) {
+					event.preventDefault();
+				}
+			})
+			// support: IE <9
+			// Preventing the default action in mousedown doesn't prevent IE
+			// from focusing the element, so if the anchor gets focused, blur.
+			// We don't have to worry about focusing the previously focused
+			// element since clicking on a non-focusable element should focus
+			// the body anyway.
+			.delegate( ".ui-tabs-anchor", "focus" + this.eventNamespace, function() {
+				if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) {
+					this.blur();
+				}
+			});
+
+		this._processTabs();
+		options.active = this._initialActive();
+
+		// Take disabling tabs via class attribute from HTML
+		// into account and update option properly.
+		if ( $.isArray( options.disabled ) ) {
+			options.disabled = $.unique( options.disabled.concat(
+				$.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
+					return that.tabs.index( li );
+				})
+			) ).sort();
+		}
+
+		// check for length avoids error when initializing empty list
+		if ( this.options.active !== false && this.anchors.length ) {
+			this.active = this._findActive( options.active );
+		} else {
+			this.active = $();
+		}
+
+		this._refresh();
+
+		if ( this.active.length ) {
+			this.load( options.active );
+		}
+	},
+
+	_initialActive: function() {
+		var active = this.options.active,
+			collapsible = this.options.collapsible,
+			locationHash = location.hash.substring( 1 );
+
+		if ( active === null ) {
+			// check the fragment identifier in the URL
+			if ( locationHash ) {
+				this.tabs.each(function( i, tab ) {
+					if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
+						active = i;
+						return false;
+					}
+				});
+			}
+
+			// check for a tab marked active via a class
+			if ( active === null ) {
+				active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) );
+			}
+
+			// no active tab, set to false
+			if ( active === null || active === -1 ) {
+				active = this.tabs.length ? 0 : false;
+			}
+		}
+
+		// handle numbers: negative, out of range
+		if ( active !== false ) {
+			active = this.tabs.index( this.tabs.eq( active ) );
+			if ( active === -1 ) {
+				active = collapsible ? false : 0;
+			}
+		}
+
+		// don't allow collapsible: false and active: false
+		if ( !collapsible && active === false && this.anchors.length ) {
+			active = 0;
+		}
+
+		return active;
+	},
+
+	_getCreateEventData: function() {
+		return {
+			tab: this.active,
+			panel: !this.active.length ? $() : this._getPanelForTab( this.active )
+		};
+	},
+
+	_tabKeydown: function( event ) {
+		var focusedTab = $( this.document[0].activeElement ).closest( "li" ),
+			selectedIndex = this.tabs.index( focusedTab ),
+			goingForward = true;
+
+		if ( this._handlePageNav( event ) ) {
+			return;
+		}
+
+		switch ( event.keyCode ) {
+			case $.ui.keyCode.RIGHT:
+			case $.ui.keyCode.DOWN:
+				selectedIndex++;
+				break;
+			case $.ui.keyCode.UP:
+			case $.ui.keyCode.LEFT:
+				goingForward = false;
+				selectedIndex--;
+				break;
+			case $.ui.keyCode.END:
+				selectedIndex = this.anchors.length - 1;
+				break;
+			case $.ui.keyCode.HOME:
+				selectedIndex = 0;
+				break;
+			case $.ui.keyCode.SPACE:
+				// Activate only, no collapsing
+				event.preventDefault();
+				clearTimeout( this.activating );
+				this._activate( selectedIndex );
+				return;
+			case $.ui.keyCode.ENTER:
+				// Toggle (cancel delayed activation, allow collapsing)
+				event.preventDefault();
+				clearTimeout( this.activating );
+				// Determine if we should collapse or activate
+				this._activate( selectedIndex === this.options.active ? false : selectedIndex );
+				return;
+			default:
+				return;
+		}
+
+		// Focus the appropriate tab, based on which key was pressed
+		event.preventDefault();
+		clearTimeout( this.activating );
+		selectedIndex = this._focusNextTab( selectedIndex, goingForward );
+
+		// Navigating with control key will prevent automatic activation
+		if ( !event.ctrlKey ) {
+			// Update aria-selected immediately so that AT think the tab is already selected.
+			// Otherwise AT may confuse the user by stating that they need to activate the tab,
+			// but the tab will already be activated by the time the announcement finishes.
+			focusedTab.attr( "aria-selected", "false" );
+			this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" );
+
+			this.activating = this._delay(function() {
+				this.option( "active", selectedIndex );
+			}, this.delay );
+		}
+	},
+
+	_panelKeydown: function( event ) {
+		if ( this._handlePageNav( event ) ) {
+			return;
+		}
+
+		// Ctrl+up moves focus to the current tab
+		if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {
+			event.preventDefault();
+			this.active.focus();
+		}
+	},
+
+	// Alt+page up/down moves focus to the previous/next tab (and activates)
+	_handlePageNav: function( event ) {
+		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {
+			this._activate( this._focusNextTab( this.options.active - 1, false ) );
+			return true;
+		}
+		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {
+			this._activate( this._focusNextTab( this.options.active + 1, true ) );
+			return true;
+		}
+	},
+
+	_findNextTab: function( index, goingForward ) {
+		var lastTabIndex = this.tabs.length - 1;
+
+		function constrain() {
+			if ( index > lastTabIndex ) {
+				index = 0;
+			}
+			if ( index < 0 ) {
+				index = lastTabIndex;
+			}
+			return index;
+		}
+
+		while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {
+			index = goingForward ? index + 1 : index - 1;
+		}
+
+		return index;
+	},
+
+	_focusNextTab: function( index, goingForward ) {
+		index = this._findNextTab( index, goingForward );
+		this.tabs.eq( index ).focus();
+		return index;
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "active" ) {
+			// _activate() will handle invalid values and update this.options
+			this._activate( value );
+			return;
+		}
+
+		if ( key === "disabled" ) {
+			// don't use the widget factory's disabled handling
+			this._setupDisabled( value );
+			return;
+		}
+
+		this._super( key, value);
+
+		if ( key === "collapsible" ) {
+			this.element.toggleClass( "ui-tabs-collapsible", value );
+			// Setting collapsible: false while collapsed; open first panel
+			if ( !value && this.options.active === false ) {
+				this._activate( 0 );
+			}
+		}
+
+		if ( key === "event" ) {
+			this._setupEvents( value );
+		}
+
+		if ( key === "heightStyle" ) {
+			this._setupHeightStyle( value );
+		}
+	},
+
+	_tabId: function( tab ) {
+		return tab.attr( "aria-controls" ) || "ui-tabs-" + getNextTabId();
+	},
+
+	_sanitizeSelector: function( hash ) {
+		return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : "";
+	},
+
+	refresh: function() {
+		var options = this.options,
+			lis = this.tablist.children( ":has(a[href])" );
+
+		// get disabled tabs from class attribute from HTML
+		// this will get converted to a boolean if needed in _refresh()
+		options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) {
+			return lis.index( tab );
+		});
+
+		this._processTabs();
+
+		// was collapsed or no tabs
+		if ( options.active === false || !this.anchors.length ) {
+			options.active = false;
+			this.active = $();
+		// was active, but active tab is gone
+		} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {
+			// all remaining tabs are disabled
+			if ( this.tabs.length === options.disabled.length ) {
+				options.active = false;
+				this.active = $();
+			// activate previous tab
+			} else {
+				this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
+			}
+		// was active, active tab still exists
+		} else {
+			// make sure active index is correct
+			options.active = this.tabs.index( this.active );
+		}
+
+		this._refresh();
+	},
+
+	_refresh: function() {
+		this._setupDisabled( this.options.disabled );
+		this._setupEvents( this.options.event );
+		this._setupHeightStyle( this.options.heightStyle );
+
+		this.tabs.not( this.active ).attr({
+			"aria-selected": "false",
+			tabIndex: -1
+		});
+		this.panels.not( this._getPanelForTab( this.active ) )
+			.hide()
+			.attr({
+				"aria-expanded": "false",
+				"aria-hidden": "true"
+			});
+
+		// Make sure one tab is in the tab order
+		if ( !this.active.length ) {
+			this.tabs.eq( 0 ).attr( "tabIndex", 0 );
+		} else {
+			this.active
+				.addClass( "ui-tabs-active ui-state-active" )
+				.attr({
+					"aria-selected": "true",
+					tabIndex: 0
+				});
+			this._getPanelForTab( this.active )
+				.show()
+				.attr({
+					"aria-expanded": "true",
+					"aria-hidden": "false"
+				});
+		}
+	},
+
+	_processTabs: function() {
+		var that = this;
+
+		this.tablist = this._getList()
+			.addClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" )
+			.attr( "role", "tablist" );
+
+		this.tabs = this.tablist.find( "> li:has(a[href])" )
+			.addClass( "ui-state-default ui-corner-top" )
+			.attr({
+				role: "tab",
+				tabIndex: -1
+			});
+
+		this.anchors = this.tabs.map(function() {
+				return $( "a", this )[ 0 ];
+			})
+			.addClass( "ui-tabs-anchor" )
+			.attr({
+				role: "presentation",
+				tabIndex: -1
+			});
+
+		this.panels = $();
+
+		this.anchors.each(function( i, anchor ) {
+			var selector, panel, panelId,
+				anchorId = $( anchor ).uniqueId().attr( "id" ),
+				tab = $( anchor ).closest( "li" ),
+				originalAriaControls = tab.attr( "aria-controls" );
+
+			// inline tab
+			if ( isLocal( anchor ) ) {
+				selector = anchor.hash;
+				panel = that.element.find( that._sanitizeSelector( selector ) );
+			// remote tab
+			} else {
+				panelId = that._tabId( tab );
+				selector = "#" + panelId;
+				panel = that.element.find( selector );
+				if ( !panel.length ) {
+					panel = that._createPanel( panelId );
+					panel.insertAfter( that.panels[ i - 1 ] || that.tablist );
+				}
+				panel.attr( "aria-live", "polite" );
+			}
+
+			if ( panel.length) {
+				that.panels = that.panels.add( panel );
+			}
+			if ( originalAriaControls ) {
+				tab.data( "ui-tabs-aria-controls", originalAriaControls );
+			}
+			tab.attr({
+				"aria-controls": selector.substring( 1 ),
+				"aria-labelledby": anchorId
+			});
+			panel.attr( "aria-labelledby", anchorId );
+		});
+
+		this.panels
+			.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
+			.attr( "role", "tabpanel" );
+	},
+
+	// allow overriding how to find the list for rare usage scenarios (#7715)
+	_getList: function() {
+		return this.element.find( "ol,ul" ).eq( 0 );
+	},
+
+	_createPanel: function( id ) {
+		return $( "<div>" )
+			.attr( "id", id )
+			.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
+			.data( "ui-tabs-destroy", true );
+	},
+
+	_setupDisabled: function( disabled ) {
+		if ( $.isArray( disabled ) ) {
+			if ( !disabled.length ) {
+				disabled = false;
+			} else if ( disabled.length === this.anchors.length ) {
+				disabled = true;
+			}
+		}
+
+		// disable tabs
+		for ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {
+			if ( disabled === true || $.inArray( i, disabled ) !== -1 ) {
+				$( li )
+					.addClass( "ui-state-disabled" )
+					.attr( "aria-disabled", "true" );
+			} else {
+				$( li )
+					.removeClass( "ui-state-disabled" )
+					.removeAttr( "aria-disabled" );
+			}
+		}
+
+		this.options.disabled = disabled;
+	},
+
+	_setupEvents: function( event ) {
+		var events = {
+			click: function( event ) {
+				event.preventDefault();
+			}
+		};
+		if ( event ) {
+			$.each( event.split(" "), function( index, eventName ) {
+				events[ eventName ] = "_eventHandler";
+			});
+		}
+
+		this._off( this.anchors.add( this.tabs ).add( this.panels ) );
+		this._on( this.anchors, events );
+		this._on( this.tabs, { keydown: "_tabKeydown" } );
+		this._on( this.panels, { keydown: "_panelKeydown" } );
+
+		this._focusable( this.tabs );
+		this._hoverable( this.tabs );
+	},
+
+	_setupHeightStyle: function( heightStyle ) {
+		var maxHeight,
+			parent = this.element.parent();
+
+		if ( heightStyle === "fill" ) {
+			maxHeight = parent.height();
+			maxHeight -= this.element.outerHeight() - this.element.height();
+
+			this.element.siblings( ":visible" ).each(function() {
+				var elem = $( this ),
+					position = elem.css( "position" );
+
+				if ( position === "absolute" || position === "fixed" ) {
+					return;
+				}
+				maxHeight -= elem.outerHeight( true );
+			});
+
+			this.element.children().not( this.panels ).each(function() {
+				maxHeight -= $( this ).outerHeight( true );
+			});
+
+			this.panels.each(function() {
+				$( this ).height( Math.max( 0, maxHeight -
+					$( this ).innerHeight() + $( this ).height() ) );
+			})
+			.css( "overflow", "auto" );
+		} else if ( heightStyle === "auto" ) {
+			maxHeight = 0;
+			this.panels.each(function() {
+				maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
+			}).height( maxHeight );
+		}
+	},
+
+	_eventHandler: function( event ) {
+		var options = this.options,
+			active = this.active,
+			anchor = $( event.currentTarget ),
+			tab = anchor.closest( "li" ),
+			clickedIsActive = tab[ 0 ] === active[ 0 ],
+			collapsing = clickedIsActive && options.collapsible,
+			toShow = collapsing ? $() : this._getPanelForTab( tab ),
+			toHide = !active.length ? $() : this._getPanelForTab( active ),
+			eventData = {
+				oldTab: active,
+				oldPanel: toHide,
+				newTab: collapsing ? $() : tab,
+				newPanel: toShow
+			};
+
+		event.preventDefault();
+
+		if ( tab.hasClass( "ui-state-disabled" ) ||
+				// tab is already loading
+				tab.hasClass( "ui-tabs-loading" ) ||
+				// can't switch durning an animation
+				this.running ||
+				// click on active header, but not collapsible
+				( clickedIsActive && !options.collapsible ) ||
+				// allow canceling activation
+				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
+			return;
+		}
+
+		options.active = collapsing ? false : this.tabs.index( tab );
+
+		this.active = clickedIsActive ? $() : tab;
+		if ( this.xhr ) {
+			this.xhr.abort();
+		}
+
+		if ( !toHide.length && !toShow.length ) {
+			$.error( "jQuery UI Tabs: Mismatching fragment identifier." );
+		}
+
+		if ( toShow.length ) {
+			this.load( this.tabs.index( tab ), event );
+		}
+		this._toggle( event, eventData );
+	},
+
+	// handles show/hide for selecting tabs
+	_toggle: function( event, eventData ) {
+		var that = this,
+			toShow = eventData.newPanel,
+			toHide = eventData.oldPanel;
+
+		this.running = true;
+
+		function complete() {
+			that.running = false;
+			that._trigger( "activate", event, eventData );
+		}
+
+		function show() {
+			eventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" );
+
+			if ( toShow.length && that.options.show ) {
+				that._show( toShow, that.options.show, complete );
+			} else {
+				toShow.show();
+				complete();
+			}
+		}
+
+		// start out by hiding, then showing, then completing
+		if ( toHide.length && this.options.hide ) {
+			this._hide( toHide, this.options.hide, function() {
+				eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
+				show();
+			});
+		} else {
+			eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" );
+			toHide.hide();
+			show();
+		}
+
+		toHide.attr({
+			"aria-expanded": "false",
+			"aria-hidden": "true"
+		});
+		eventData.oldTab.attr( "aria-selected", "false" );
+		// If we're switching tabs, remove the old tab from the tab order.
+		// If we're opening from collapsed state, remove the previous tab from the tab order.
+		// If we're collapsing, then keep the collapsing tab in the tab order.
+		if ( toShow.length && toHide.length ) {
+			eventData.oldTab.attr( "tabIndex", -1 );
+		} else if ( toShow.length ) {
+			this.tabs.filter(function() {
+				return $( this ).attr( "tabIndex" ) === 0;
+			})
+			.attr( "tabIndex", -1 );
+		}
+
+		toShow.attr({
+			"aria-expanded": "true",
+			"aria-hidden": "false"
+		});
+		eventData.newTab.attr({
+			"aria-selected": "true",
+			tabIndex: 0
+		});
+	},
+
+	_activate: function( index ) {
+		var anchor,
+			active = this._findActive( index );
+
+		// trying to activate the already active panel
+		if ( active[ 0 ] === this.active[ 0 ] ) {
+			return;
+		}
+
+		// trying to collapse, simulate a click on the current active header
+		if ( !active.length ) {
+			active = this.active;
+		}
+
+		anchor = active.find( ".ui-tabs-anchor" )[ 0 ];
+		this._eventHandler({
+			target: anchor,
+			currentTarget: anchor,
+			preventDefault: $.noop
+		});
+	},
+
+	_findActive: function( index ) {
+		return index === false ? $() : this.tabs.eq( index );
+	},
+
+	_getIndex: function( index ) {
+		// meta-function to give users option to provide a href string instead of a numerical index.
+		if ( typeof index === "string" ) {
+			index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) );
+		}
+
+		return index;
+	},
+
+	_destroy: function() {
+		if ( this.xhr ) {
+			this.xhr.abort();
+		}
+
+		this.element.removeClass( "ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible" );
+
+		this.tablist
+			.removeClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" )
+			.removeAttr( "role" );
+
+		this.anchors
+			.removeClass( "ui-tabs-anchor" )
+			.removeAttr( "role" )
+			.removeAttr( "tabIndex" )
+			.removeUniqueId();
+
+		this.tabs.add( this.panels ).each(function() {
+			if ( $.data( this, "ui-tabs-destroy" ) ) {
+				$( this ).remove();
+			} else {
+				$( this )
+					.removeClass( "ui-state-default ui-state-active ui-state-disabled " +
+						"ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel" )
+					.removeAttr( "tabIndex" )
+					.removeAttr( "aria-live" )
+					.removeAttr( "aria-busy" )
+					.removeAttr( "aria-selected" )
+					.removeAttr( "aria-labelledby" )
+					.removeAttr( "aria-hidden" )
+					.removeAttr( "aria-expanded" )
+					.removeAttr( "role" );
+			}
+		});
+
+		this.tabs.each(function() {
+			var li = $( this ),
+				prev = li.data( "ui-tabs-aria-controls" );
+			if ( prev ) {
+				li
+					.attr( "aria-controls", prev )
+					.removeData( "ui-tabs-aria-controls" );
+			} else {
+				li.removeAttr( "aria-controls" );
+			}
+		});
+
+		this.panels.show();
+
+		if ( this.options.heightStyle !== "content" ) {
+			this.panels.css( "height", "" );
+		}
+	},
+
+	enable: function( index ) {
+		var disabled = this.options.disabled;
+		if ( disabled === false ) {
+			return;
+		}
+
+		if ( index === undefined ) {
+			disabled = false;
+		} else {
+			index = this._getIndex( index );
+			if ( $.isArray( disabled ) ) {
+				disabled = $.map( disabled, function( num ) {
+					return num !== index ? num : null;
+				});
+			} else {
+				disabled = $.map( this.tabs, function( li, num ) {
+					return num !== index ? num : null;
+				});
+			}
+		}
+		this._setupDisabled( disabled );
+	},
+
+	disable: function( index ) {
+		var disabled = this.options.disabled;
+		if ( disabled === true ) {
+			return;
+		}
+
+		if ( index === undefined ) {
+			disabled = true;
+		} else {
+			index = this._getIndex( index );
+			if ( $.inArray( index, disabled ) !== -1 ) {
+				return;
+			}
+			if ( $.isArray( disabled ) ) {
+				disabled = $.merge( [ index ], disabled ).sort();
+			} else {
+				disabled = [ index ];
+			}
+		}
+		this._setupDisabled( disabled );
+	},
+
+	load: function( index, event ) {
+		index = this._getIndex( index );
+		var that = this,
+			tab = this.tabs.eq( index ),
+			anchor = tab.find( ".ui-tabs-anchor" ),
+			panel = this._getPanelForTab( tab ),
+			eventData = {
+				tab: tab,
+				panel: panel
+			};
+
+		// not remote
+		if ( isLocal( anchor[ 0 ] ) ) {
+			return;
+		}
+
+		this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );
+
+		// support: jQuery <1.8
+		// jQuery <1.8 returns false if the request is canceled in beforeSend,
+		// but as of 1.8, $.ajax() always returns a jqXHR object.
+		if ( this.xhr && this.xhr.statusText !== "canceled" ) {
+			tab.addClass( "ui-tabs-loading" );
+			panel.attr( "aria-busy", "true" );
+
+			this.xhr
+				.success(function( response ) {
+					// support: jQuery <1.8
+					// http://bugs.jquery.com/ticket/11778
+					setTimeout(function() {
+						panel.html( response );
+						that._trigger( "load", event, eventData );
+					}, 1 );
+				})
+				.complete(function( jqXHR, status ) {
+					// support: jQuery <1.8
+					// http://bugs.jquery.com/ticket/11778
+					setTimeout(function() {
+						if ( status === "abort" ) {
+							that.panels.stop( false, true );
+						}
+
+						tab.removeClass( "ui-tabs-loading" );
+						panel.removeAttr( "aria-busy" );
+
+						if ( jqXHR === that.xhr ) {
+							delete that.xhr;
+						}
+					}, 1 );
+				});
+		}
+	},
+
+	_ajaxSettings: function( anchor, event, eventData ) {
+		var that = this;
+		return {
+			url: anchor.attr( "href" ),
+			beforeSend: function( jqXHR, settings ) {
+				return that._trigger( "beforeLoad", event,
+					$.extend( { jqXHR : jqXHR, ajaxSettings: settings }, eventData ) );
+			}
+		};
+	},
+
+	_getPanelForTab: function( tab ) {
+		var id = $( tab ).attr( "aria-controls" );
+		return this.element.find( this._sanitizeSelector( "#" + id ) );
+	}
+});
+
+})( jQuery );
+
+(function( $, undefined ) {
+
+})( jQuery );
+
+(function( $, window ) {
+
+	$.mobile.iosorientationfixEnabled = true;
+
+	// This fix addresses an iOS bug, so return early if the UA claims it's something else.
+	var ua = navigator.userAgent,
+		zoom,
+		evt, x, y, z, aig;
+	if ( !( /iPhone|iPad|iPod/.test( navigator.platform ) && /OS [1-5]_[0-9_]* like Mac OS X/i.test( ua ) && ua.indexOf( "AppleWebKit" ) > -1 ) ) {
+		$.mobile.iosorientationfixEnabled = false;
+		return;
+	}
+
+	zoom = $.mobile.zoom;
+
+	function checkTilt( e ) {
+		evt = e.originalEvent;
+		aig = evt.accelerationIncludingGravity;
+
+		x = Math.abs( aig.x );
+		y = Math.abs( aig.y );
+		z = Math.abs( aig.z );
+
+		// If portrait orientation and in one of the danger zones
+		if ( !window.orientation && ( x > 7 || ( ( z > 6 && y < 8 || z < 8 && y > 6 ) && x > 5 ) ) ) {
+				if ( zoom.enabled ) {
+					zoom.disable();
+				}
+		}	else if ( !zoom.enabled ) {
+				zoom.enable();
+		}
+	}
+
+	$.mobile.document.on( "mobileinit", function() {
+		if ( $.mobile.iosorientationfixEnabled ) {
+			$.mobile.window
+				.bind( "orientationchange.iosorientationfix", zoom.enable )
+				.bind( "devicemotion.iosorientationfix", checkTilt );
+		}
+	});
+
+}( jQuery, this ));
+
+(function( $, window, undefined ) {
+	var	$html = $( "html" ),
+		$window = $.mobile.window;
+
+	//remove initial build class (only present on first pageshow)
+	function hideRenderingClass() {
+		$html.removeClass( "ui-mobile-rendering" );
+	}
+
+	// trigger mobileinit event - useful hook for configuring $.mobile settings before they're used
+	$( window.document ).trigger( "mobileinit" );
+
+	// support conditions
+	// if device support condition(s) aren't met, leave things as they are -> a basic, usable experience,
+	// otherwise, proceed with the enhancements
+	if ( !$.mobile.gradeA() ) {
+		return;
+	}
+
+	// override ajaxEnabled on platforms that have known conflicts with hash history updates
+	// or generally work better browsing in regular http for full page refreshes (BB5, Opera Mini)
+	if ( $.mobile.ajaxBlacklist ) {
+		$.mobile.ajaxEnabled = false;
+	}
+
+	// Add mobile, initial load "rendering" classes to docEl
+	$html.addClass( "ui-mobile ui-mobile-rendering" );
+
+	// This is a fallback. If anything goes wrong (JS errors, etc), or events don't fire,
+	// this ensures the rendering class is removed after 5 seconds, so content is visible and accessible
+	setTimeout( hideRenderingClass, 5000 );
+
+	$.extend( $.mobile, {
+		// find and enhance the pages in the dom and transition to the first page.
+		initializePage: function() {
+			// find present pages
+			var path = $.mobile.path,
+				$pages = $( ":jqmData(role='page'), :jqmData(role='dialog')" ),
+				hash = path.stripHash( path.stripQueryParams(path.parseLocation().hash) ),
+				theLocation = $.mobile.path.parseLocation(),
+				hashPage = hash ? document.getElementById( hash ) : undefined;
+
+			// if no pages are found, create one with body's inner html
+			if ( !$pages.length ) {
+				$pages = $( "body" ).wrapInner( "<div data-" + $.mobile.ns + "role='page'></div>" ).children( 0 );
+			}
+
+			// add dialogs, set data-url attrs
+			$pages.each(function() {
+				var $this = $( this );
+
+				// unless the data url is already set set it to the pathname
+				if ( !$this[ 0 ].getAttribute( "data-" + $.mobile.ns + "url" ) ) {
+					$this.attr( "data-" + $.mobile.ns + "url", $this.attr( "id" ) ||
+						path.convertUrlToDataUrl( theLocation.pathname + theLocation.search ) );
+				}
+			});
+
+			// define first page in dom case one backs out to the directory root (not always the first page visited, but defined as fallback)
+			$.mobile.firstPage = $pages.first();
+
+			// define page container
+			$.mobile.pageContainer = $.mobile.firstPage
+				.parent()
+				.addClass( "ui-mobile-viewport" )
+				.pagecontainer();
+
+			// initialize navigation events now, after mobileinit has occurred and the page container
+			// has been created but before the rest of the library is alerted to that fact
+			$.mobile.navreadyDeferred.resolve();
+
+			// alert listeners that the pagecontainer has been determined for binding
+			// to events triggered on it
+			$window.trigger( "pagecontainercreate" );
+
+			// cue page loading message
+			$.mobile.loading( "show" );
+
+			//remove initial build class (only present on first pageshow)
+			hideRenderingClass();
+
+			// if hashchange listening is disabled, there's no hash deeplink,
+			// the hash is not valid (contains more than one # or does not start with #)
+			// or there is no page with that hash, change to the first page in the DOM
+			// Remember, however, that the hash can also be a path!
+			if ( ! ( $.mobile.hashListeningEnabled &&
+				$.mobile.path.isHashValid( location.hash ) &&
+				( $( hashPage ).is( ":jqmData(role='page')" ) ||
+					$.mobile.path.isPath( hash ) ||
+					hash === $.mobile.dialogHashKey ) ) ) {
+
+				// make sure to set initial popstate state if it exists
+				// so that navigation back to the initial page works properly
+				if ( $.event.special.navigate.isPushStateEnabled() ) {
+					$.mobile.navigate.navigator.squash( path.parseLocation().href );
+				}
+
+				$.mobile.changePage( $.mobile.firstPage, {
+					transition: "none",
+					reverse: true,
+					changeHash: false,
+					fromHashChange: true
+				});
+			} else {
+				// trigger hashchange or navigate to squash and record the correct
+				// history entry for an initial hash path
+				if ( !$.event.special.navigate.isPushStateEnabled() ) {
+					$window.trigger( "hashchange", [true] );
+				} else {
+					// TODO figure out how to simplify this interaction with the initial history entry
+					// at the bottom js/navigate/navigate.js
+					$.mobile.navigate.history.stack = [];
+					$.mobile.navigate( $.mobile.path.isPath( location.hash ) ? location.hash : location.href );
+				}
+			}
+		}
+	});
+
+	$(function() {
+		//Run inlineSVG support test
+		$.support.inlineSVG();
+
+		// check which scrollTop value should be used by scrolling to 1 immediately at domready
+		// then check what the scroll top is. Android will report 0... others 1
+		// note that this initial scroll won't hide the address bar. It's just for the check.
+
+		// hide iOS browser chrome on load if hideUrlBar is true this is to try and do it as soon as possible
+		if ( $.mobile.hideUrlBar ) {
+			window.scrollTo( 0, 1 );
+		}
+
+		// if defaultHomeScroll hasn't been set yet, see if scrollTop is 1
+		// it should be 1 in most browsers, but android treats 1 as 0 (for hiding addr bar)
+		// so if it's 1, use 0 from now on
+		$.mobile.defaultHomeScroll = ( !$.support.scrollTop || $.mobile.window.scrollTop() === 1 ) ? 0 : 1;
+
+		//dom-ready inits
+		if ( $.mobile.autoInitializePage ) {
+			$.mobile.initializePage();
+		}
+
+		// window load event
+		// hide iOS browser chrome on load if hideUrlBar is true this is as fall back incase we were too early before
+		if ( $.mobile.hideUrlBar ) {
+			$window.load( $.mobile.silentScroll );
+		}
+
+		if ( !$.support.cssPointerEvents ) {
+			// IE and Opera don't support CSS pointer-events: none that we use to disable link-based buttons
+			// by adding the 'ui-disabled' class to them. Using a JavaScript workaround for those browser.
+			// https://github.com/jquery/jquery-mobile/issues/3558
+
+			// DEPRECATED as of 1.4.0 - remove ui-disabled after 1.4.0 release
+			// only ui-state-disabled should be present thereafter
+			$.mobile.document.delegate( ".ui-state-disabled,.ui-disabled", "vclick",
+				function( e ) {
+					e.preventDefault();
+					e.stopImmediatePropagation();
+				}
+			);
+		}
+	});
+}( jQuery, this ));
+
+
+}));
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile-1.4.5.min.css
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile-1.4.5.min.css	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile-1.4.5.min.css	(revision 101)
@@ -0,0 +1,3 @@
+/*! jQuery Mobile 1.4.5 | Git HEADhash: 68e55e7 <> 2014-10-31T17:33:30Z | (c) 2010, 2014 jQuery Foundation, Inc. | jquery.org/license */
+
+.ui-icon-action:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M9%2C5v3l5-4L9%2C0v3c0%2C0-5%2C0-5%2C7C6%2C5%2C9%2C5%2C9%2C5z%20M11%2C12H2V5h1l2-2H0v11h13V7l-2%2C2V12z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-alert:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C0L0%2C12h14L7%2C0z%20M7%2C11c-0.553%2C0-1-0.447-1-1s0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1S7.553%2C11%2C7%2C11z%20M7%2C8%20C6.447%2C8%2C6%2C7.553%2C6%2C7V5c0-0.553%2C0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1v2C8%2C7.553%2C7.553%2C8%2C7%2C8z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-arrow-d-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C3%2011%2C0%203.5%2C7.5%200%2C4%200%2C14%2010%2C14%206.5%2C10.5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-d-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2210.5%2C7.5%203%2C0%200%2C3%207.5%2C10.5%204%2C14%2014%2C14%2014%2C4%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-d:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%229%2C7%209%2C0%205%2C0%205%2C7%200%2C7%207%2C14%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C5%207%2C0%200%2C7%207%2C14%207%2C9%2014%2C9%2014%2C5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C7%207%2C0%207%2C5%200%2C5%200%2C9%207%2C9%207%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-u-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C11%206.5%2C3.5%2010%2C0%200%2C0%200%2C10%203.5%2C6.5%2011%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-u-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C0%204%2C0%207.5%2C3.5%200%2C11%203%2C14%2010.5%2C6.5%2014%2C10%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-u:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C0%200%2C7%205%2C7%205%2C14%209%2C14%209%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-audio:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.018px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014.018%2014%22%20style%3D%22enable-background%3Anew%200%200%2014.018%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M1%2C4C0.447%2C4%2C0%2C4.447%2C0%2C5v4c0%2C0.553%2C0.447%2C1%2C1%2C1h1l4%2C4V0L2%2C4H1z%20M10.346%2C7c0-1.699-1.042-3.154-2.546-3.867L6.982%2C4.68%20C7.885%2C5.107%2C8.51%2C5.98%2C8.51%2C7S7.885%2C8.893%2C6.982%2C9.32L7.8%2C10.867C9.304%2C10.154%2C10.346%2C8.699%2C10.346%2C7z%20M9.447%2C0.017L8.618%2C1.586%20C10.723%2C2.584%2C12.182%2C4.621%2C12.182%2C7s-1.459%2C4.416-3.563%2C5.414l0.829%2C1.569c2.707-1.283%2C4.57-3.925%2C4.57-6.983%20S12.154%2C1.3%2C9.447%2C0.017z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-back:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M5%2C3V0L1%2C4l4%2C4V5c0%2C0%2C6%2C0%2C6%2C3s-5%2C4-5%2C4v2c0%2C0%2C7-1%2C7-6C13%2C4%2C8%2C3%2C5%2C3z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-bars:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M1%2C4h12c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H1C0.447%2C2%2C0%2C2.447%2C0%2C3S0.447%2C4%2C1%2C4z%20M13%2C6H1%20C0.447%2C6%2C0%2C6.447%2C0%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H1c-0.553%2C0-1%2C0.447-1%2C1%20s0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-bullets:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M5%2C4h8c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H5C4.447%2C2%2C4%2C2.447%2C4%2C3S4.447%2C4%2C5%2C4z%20M13%2C6H5%20C4.447%2C6%2C4%2C6.447%2C4%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H5c-0.553%2C0-1%2C0.447-1%2C1%20s0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%20M1%2C2C0.447%2C2%2C0%2C2.447%2C0%2C3s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C2%2C1%2C2z%20M1%2C6%20C0.447%2C6%2C0%2C6.447%2C0%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1s1-0.447%2C1-1C2%2C6.447%2C1.553%2C6%2C1%2C6z%20M1%2C10c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1s1-0.447%2C1-1%20S1.553%2C10%2C1%2C10z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-calendar:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M0%2C8h2V6H0V8z%20M3%2C8h2V6H3V8z%20M6%2C8h2V6H6V8z%20M9%2C8h2V6H9V8z%20M12%2C8h2V6h-2V8z%20M0%2C11h2V9H0V11z%20M3%2C11h2V9H3V11z%20M6%2C11h2V9H6V11z%20%20M9%2C11h2V9H9V11z%20M12%2C11h2V9h-2V11z%20M0%2C14h2v-2H0V14z%20M3%2C14h2v-2H3V14z%20M6%2C14h2v-2H6V14z%20M9%2C14h2v-2H9V14z%20M12%2C1%20c0-0.553-0.447-1-1-1s-1%2C0.447-1%2C1H4c0-0.553-0.447-1-1-1S2%2C0.447%2C2%2C1H0v4h14V1H12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-camera:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M12%2C2.5H9.908c-0.206-0.581-0.756-1-1.408-1h-3c-0.652%2C0-1.202%2C0.419-1.408%2C1H2c-1.104%2C0-2%2C0.896-2%2C2%20v6c0%2C1.104%2C0.896%2C2%2C2%2C2h10c1.104%2C0%2C2-0.896%2C2-2v-6C14%2C3.396%2C13.104%2C2.5%2C12%2C2.5z%20M7%2C10.5c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3C10%2C9.156%2C8.657%2C10.5%2C7%2C10.5z%20M7%2C5.5c-1.104%2C0-2%2C0.896-2%2C2c0%2C1.104%2C0.896%2C2%2C2%2C2c1.104%2C0%2C2-0.896%2C2-2%20C9%2C6.396%2C8.104%2C5.5%2C7%2C5.5z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-carat-d:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2211.949%2C3.404%207%2C8.354%202.05%2C3.404%20-0.071%2C5.525%207%2C12.596%2014.07%2C5.525%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-carat-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2210.596%2C11.949%205.646%2C7%2010.596%2C2.05%208.475%2C-0.071%201.404%2C7%208.475%2C14.07%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-carat-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%223.404%2C2.051%208.354%2C7%203.404%2C11.95%205.525%2C14.07%2012.596%2C7%205.525%2C-0.071%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-carat-u:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%222.051%2C10.596%207%2C5.646%2011.95%2C10.596%2014.07%2C8.475%207%2C1.404%20-0.071%2C8.475%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-check:after,html .ui-btn.ui-checkbox-on.ui-checkbox-on:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2214%2C4%2011%2C1%205.003%2C6.997%203%2C5%200%2C8%204.966%2C13%204.983%2C12.982%205%2C13%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-clock:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C12c-2.762%2C0-5-2.238-5-5s2.238-5%2C5-5s5%2C2.238%2C5%2C5%20S9.762%2C12%2C7%2C12z%20M9%2C6H8V4c0-0.553-0.447-1-1-1S6%2C3.447%2C6%2C4v3c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1S9.553%2C6%2C9%2C6z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-cloud:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M14%2C9.5c0-0.793-0.465-1.473-1.134-1.795C12.949%2C7.484%2C13%2C7.249%2C13%2C7c0-1.104-0.896-2-2-2%20c-0.158%2C0-0.311%2C0.023-0.457%2C0.058C9.816%2C3.549%2C8.286%2C2.5%2C6.5%2C2.5c-2.33%2C0-4.224%2C1.777-4.454%2C4.046C0.883%2C6.76%2C0%2C7.773%2C0%2C9%20c0%2C1.381%2C1.119%2C2.5%2C2.5%2C2.5h10v-0.07C13.361%2C11.206%2C14%2C10.432%2C14%2C9.5z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-comment:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M12%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v7c0%2C1.104%2C0.896%2C2%2C2%2C2h1v3l3-3h6c1.104%2C0%2C2-0.896%2C2-2V2C14%2C0.896%2C13.104%2C0%2C12%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-delete:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C3%2011%2C0%207%2C4%203%2C0%200%2C3%204%2C7%200%2C11%203%2C14%207%2C10%2011%2C14%2014%2C11%2010%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-edit:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M1%2C10l-1%2C4l4-1l7-7L8%2C3L1%2C10z%20M11%2C0L9%2C2l3%2C3l2-2L11%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-eye:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C2C3%2C2%2C0%2C7%2C0%2C7s3%2C5%2C7%2C5s7-5%2C7-5S11%2C2%2C7%2C2z%20M7%2C10c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3C10%2C8.656%2C8.657%2C10%2C7%2C10z%20M7%2C6C6.448%2C6%2C6%2C6.447%2C6%2C7c0%2C0.553%2C0.448%2C1%2C1%2C1s1-0.447%2C1-1C8%2C6.447%2C7.552%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-forbidden:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M12.601%2C11.187C13.476%2C10.018%2C14%2C8.572%2C14%2C7c0-3.866-3.134-7-7-7C5.428%2C0%2C3.982%2C0.524%2C2.813%2C1.399L2.757%2C1.343L2.053%2C2.048%20L2.048%2C2.053L1.343%2C2.758l0.056%2C0.056C0.524%2C3.982%2C0%2C5.428%2C0%2C7c0%2C3.866%2C3.134%2C7%2C7%2C7c1.572%2C0%2C3.018-0.524%2C4.187-1.399l0.056%2C0.057%20l0.705-0.705l0.005-0.005l0.705-0.705L12.601%2C11.187z%20M7%2C2c2.761%2C0%2C5%2C2.238%2C5%2C5c0%2C1.019-0.308%2C1.964-0.832%2C2.754L4.246%2C2.832%20C5.036%2C2.308%2C5.981%2C2%2C7%2C2z%20M7%2C12c-2.761%2C0-5-2.238-5-5c0-1.019%2C0.308-1.964%2C0.832-2.754l6.922%2C6.922C8.964%2C11.692%2C8.019%2C12%2C7%2C12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-forward:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M13%2C4L9%2C0v3C6%2C3%2C1%2C4%2C1%2C8c0%2C5%2C7%2C6%2C7%2C6v-2c0%2C0-5-1-5-4s6-3%2C6-3v3L13%2C4z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-gear:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M13.621%2C5.904l-1.036-0.259c-0.168-0.042-0.303-0.168-0.355-0.332c-0.092-0.284-0.205-0.559-0.339-0.82%20c-0.079-0.153-0.073-0.337%2C0.017-0.486l0.549-0.915c0.118-0.196%2C0.088-0.448-0.075-0.61l-0.862-0.863%20c-0.162-0.163-0.414-0.193-0.611-0.075l-0.916%2C0.55C9.844%2C2.182%2C9.659%2C2.188%2C9.506%2C2.109C9.244%2C1.975%2C8.97%2C1.861%2C8.686%2C1.77%20c-0.165-0.052-0.29-0.187-0.332-0.354L8.095%2C0.379C8.039%2C0.156%2C7.839%2C0%2C7.609%2C0H6.391c-0.229%2C0-0.43%2C0.156-0.485%2C0.379L5.646%2C1.415%20C5.604%2C1.582%2C5.479%2C1.718%2C5.313%2C1.77c-0.284%2C0.092-0.559%2C0.206-0.82%2C0.34C4.339%2C2.188%2C4.155%2C2.182%2C4.007%2C2.093L3.092%2C1.544%20c-0.196-0.118-0.448-0.087-0.61%2C0.075L1.619%2C2.481C1.457%2C2.644%2C1.426%2C2.896%2C1.544%2C3.093l0.549%2C0.914%20c0.089%2C0.148%2C0.095%2C0.332%2C0.017%2C0.486C1.975%2C4.755%2C1.861%2C5.029%2C1.77%2C5.314c-0.053%2C0.164-0.188%2C0.29-0.354%2C0.332L0.379%2C5.905%20C0.156%2C5.961%2C0%2C6.161%2C0%2C6.391v1.219c0%2C0.229%2C0.156%2C0.43%2C0.379%2C0.485l1.036%2C0.26C1.582%2C8.396%2C1.717%2C8.521%2C1.77%2C8.687%20c0.092%2C0.284%2C0.205%2C0.559%2C0.34%2C0.82C2.188%2C9.66%2C2.182%2C9.844%2C2.093%2C9.993l-0.549%2C0.915c-0.118%2C0.195-0.087%2C0.448%2C0.075%2C0.61%20l0.862%2C0.862c0.162%2C0.163%2C0.414%2C0.193%2C0.61%2C0.075l0.915-0.549c0.148-0.089%2C0.332-0.095%2C0.486-0.017%20c0.262%2C0.135%2C0.536%2C0.248%2C0.82%2C0.34c0.165%2C0.053%2C0.291%2C0.187%2C0.332%2C0.354l0.259%2C1.036C5.96%2C13.844%2C6.16%2C14%2C6.39%2C14h1.22%20c0.229%2C0%2C0.43-0.156%2C0.485-0.379l0.259-1.036c0.042-0.167%2C0.168-0.302%2C0.333-0.354c0.284-0.092%2C0.559-0.205%2C0.82-0.34%20c0.154-0.078%2C0.338-0.072%2C0.486%2C0.017l0.914%2C0.549c0.197%2C0.118%2C0.449%2C0.088%2C0.611-0.074l0.862-0.863%20c0.163-0.162%2C0.193-0.415%2C0.075-0.611l-0.549-0.915c-0.089-0.148-0.096-0.332-0.017-0.485c0.134-0.263%2C0.248-0.536%2C0.339-0.82%20c0.053-0.165%2C0.188-0.291%2C0.355-0.333l1.036-0.259C13.844%2C8.039%2C14%2C7.839%2C14%2C7.609V6.39C14%2C6.16%2C13.844%2C5.96%2C13.621%2C5.904z%20M7%2C10%20c-1.657%2C0-3-1.343-3-3s1.343-3%2C3-3s3%2C1.343%2C3%2C3S8.657%2C10%2C7%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-grid:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3%2C0H1C0.447%2C0%2C0%2C0.447%2C0%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C4%2C0.447%2C3.553%2C0%2C3%2C0z%20M8%2C0H6%20C5.447%2C0%2C5%2C0.447%2C5%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C9%2C0.447%2C8.553%2C0%2C8%2C0z%20M13%2C0h-2c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C14%2C0.447%2C13.553%2C0%2C13%2C0z%20M3%2C5H1C0.447%2C5%2C0%2C5.447%2C0%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1V6C4%2C5.447%2C3.553%2C5%2C3%2C5z%20M8%2C5H6C5.447%2C5%2C5%2C5.447%2C5%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6%20C9%2C5.447%2C8.553%2C5%2C8%2C5z%20M13%2C5h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6C14%2C5.447%2C13.553%2C5%2C13%2C5z%20M3%2C10%20H1c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C4%2C10.447%2C3.553%2C10%2C3%2C10z%20M8%2C10H6c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C9%2C10.447%2C8.553%2C10%2C8%2C10z%20M13%2C10h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1v-2C14%2C10.447%2C13.553%2C10%2C13%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-heart:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C1.872c-2-3-7-2-7%2C2c0%2C3%2C4%2C7%2C4%2C7s2.417%2C2.479%2C3%2C3c0.583-0.521%2C3-3%2C3-3s4-4%2C4-7%20C14-0.128%2C9-1.128%2C7%2C1.872z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-home:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C0%200%2C7%202%2C7%202%2C14%205%2C14%205%2C9%209%2C9%209%2C14%2012%2C14%2012%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-info:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C2c0.552%2C0%2C1%2C0.447%2C1%2C1S7.552%2C4%2C7%2C4S6%2C3.553%2C6%2C3%20S6.448%2C2%2C7%2C2z%20M9%2C11H5v-1h1V6H5V5h3v5h1V11z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-location:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C0C4.791%2C0%2C3%2C1.791%2C3%2C4c0%2C2%2C4%2C10%2C4%2C10s4-8%2C4-10C11%2C1.791%2C9.209%2C0%2C7%2C0z%20M7%2C6C5.896%2C6%2C5%2C5.104%2C5%2C4%20s0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2S8.104%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-lock:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M12%2C6V5c0-2.762-2.238-5-5-5C4.239%2C0%2C2%2C2.238%2C2%2C5v1H1v8h12V6H12z%20M7.5%2C9.848V12h-1V9.848%20C6.207%2C9.673%2C6%2C9.366%2C6%2C9c0-0.553%2C0.448-1%2C1-1s1%2C0.447%2C1%2C1C8%2C9.366%2C7.793%2C9.673%2C7.5%2C9.848z%20M10%2C6H4V5c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3V6z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-mail:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M0%2C3.75V12h14V3.75L7%2C9L0%2C3.75z%20M14%2C2H0l7%2C5L14%2C2z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-minus:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Crect%20y%3D%225%22%20style%3D%22fill%3A%23FFFFFF%3B%22%20width%3D%2214%22%20height%3D%224%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-navigation:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2213%2C1%200%2C6%207%2C7%208%2C14%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-phone:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%22-0.01%200.008%2014%2014%22%20style%3D%22enable-background%3Anew%20-0.01%200.008%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M6.939%2C9.189C6.165%2C8.557%2C5.271%2C7.705%2C4.497%2C6.744C3.953%2C6.071%2C3.473%2C5.363%2C3.969%2C4.866l-3.482-3.48%20C-0.021%2C2.02-1.146%2C5.04%2C3.675%2C9.984c5.08%2C5.211%2C8.356%2C4.097%2C8.92%2C3.511l-3.396-3.4C8.725%2C10.568%2C8.113%2C10.146%2C6.939%2C9.189z%20%20M13.82%2C11.519v-0.004c0%2C0-2.648-2.646-2.649-2.647c-0.21-0.211-0.546-0.205-0.754%2C0.002L9.455%2C9.831l3.403%2C3.407%20c0%2C0%2C0.962-0.96%2C0.961-0.961l0.002-0.001C14.043%2C12.056%2C14.021%2C11.721%2C13.82%2C11.519z%20M5.192%2C3.644V3.642%20c0.222-0.222%2C0.2-0.557%2C0-0.758V2.881c0%2C0-2.726-2.725-2.727-2.726C2.255-0.055%2C1.92-0.05%2C1.712%2C0.156L0.751%2C1.121l3.479%2C3.482%20C4.231%2C4.604%2C5.192%2C3.645%2C5.192%2C3.644z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-plus:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C5%209%2C5%209%2C0%205%2C0%205%2C5%200%2C5%200%2C9%205%2C9%205%2C14%209%2C14%209%2C9%2014%2C9%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-power:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M11.243%2C2.408c-0.392-0.401-1.024-0.401-1.415%2C0c-0.391%2C0.401-0.391%2C1.054%2C0%2C1.455%20C10.584%2C4.642%2C11%2C5.675%2C11%2C6.773s-0.416%2C2.133-1.172%2C2.91c-1.512%2C1.558-4.145%2C1.558-5.656%2C0C3.416%2C8.904%2C3%2C7.872%2C3%2C6.773%20C3%2C5.673%2C3.416%2C4.64%2C4.172%2C3.863c0.39-0.401%2C0.39-1.054%2C0-1.455c-0.391-0.401-1.024-0.401-1.415%2C0C1.624%2C3.574%2C1%2C5.125%2C1%2C6.773%20c0%2C1.647%2C0.624%2C3.199%2C1.757%2C4.365c1.134%2C1.166%2C2.64%2C1.809%2C4.243%2C1.809c1.604%2C0%2C3.109-0.645%2C4.243-1.811%20C12.376%2C9.975%2C13%2C8.423%2C13%2C6.773C13%2C5.125%2C12.376%2C3.574%2C11.243%2C2.408z%20M7%2C8.053c0.553%2C0%2C1-0.445%2C1-1v-6c0-0.553-0.447-1-1-1%20c-0.553%2C0-1%2C0.447-1%2C1v6C6%2C7.604%2C6.447%2C8.053%2C7%2C8.053z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-recycle:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M3%2C7h1L2%2C4L0%2C7h1c0%2C3.313%2C2.687%2C6%2C6%2C6c0.702%2C0%2C1.374-0.127%2C2-0.35v-2.205C8.41%2C10.789%2C7.732%2C11%2C7%2C11%20C4.791%2C11%2C3%2C9.209%2C3%2C7z%20M13%2C7c0-3.313-2.688-6-6-6C6.298%2C1%2C5.626%2C1.127%2C5%2C1.349v2.206C5.59%2C3.211%2C6.268%2C3%2C7%2C3c2.209%2C0%2C4%2C1.791%2C4%2C4%20h-1l2%2C3l2-3H13z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-refresh:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.001px%22%20height%3D%2214.002px%22%20viewBox%3D%220%200%2014.001%2014.002%22%20style%3D%22enable-background%3Anew%200%200%2014.001%2014.002%3B%22%20%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M14.001%2C6.001v-6l-2.06%2C2.06c-0.423-0.424-0.897-0.809-1.44-1.122C7.153-0.994%2C2.872%2C0.153%2C0.939%2C3.501%20c-1.933%2C3.348-0.786%2C7.629%2C2.562%2C9.562c3.348%2C1.933%2C7.629%2C0.785%2C9.562-2.562l-1.732-1c-1.381%2C2.392-4.438%2C3.211-6.83%2C1.83%20s-3.211-4.438-1.83-6.83s4.438-3.211%2C6.83-1.83c0.389%2C0.225%2C0.718%2C0.506%2C1.02%2C0.81l-2.52%2C2.52H14.001z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-search:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M10.171%2C8.766c0.617-0.888%2C0.979-1.964%2C0.979-3.126c0-3.037-2.463-5.5-5.5-5.5s-5.5%2C2.463-5.5%2C5.5%20s2.463%2C5.5%2C5.5%2C5.5c1.152%2C0%2C2.223-0.355%2C3.104-0.962l3.684%2C3.683l1.414-1.414L10.171%2C8.766z%20M5.649%2C9.14c-1.933%2C0-3.5-1.567-3.5-3.5%20c0-1.933%2C1.567-3.5%2C3.5-3.5c1.933%2C0%2C3.5%2C1.567%2C3.5%2C3.5C9.149%2C7.572%2C7.582%2C9.14%2C5.649%2C9.14z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-shop:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M10%2C4V3c0-1.657-1.343-3-3-3S4%2C1.343%2C4%2C3v1H1v10h12V4H10z%20M4.5%2C6C4.224%2C6%2C4%2C5.776%2C4%2C5.5%20S4.224%2C5%2C4.5%2C5S5%2C5.224%2C5%2C5.5S4.776%2C6%2C4.5%2C6z%20M5%2C3c0-1.104%2C0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2v1H5V3z%20M9.5%2C6C9.225%2C6%2C9%2C5.776%2C9%2C5.5%20S9.225%2C5%2C9.5%2C5S10%2C5.224%2C10%2C5.5S9.775%2C6%2C9.5%2C6z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-star:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2214%2C5%209%2C5%207%2C0%205%2C5%200%2C5%204%2C8%202.625%2C13%207%2C10%2011.375%2C13%2010%2C8%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-tag:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M5%2C0H0v5l9%2C9l5-5L5%2C0z%20M3%2C4C2.447%2C4%2C2%2C3.553%2C2%2C3s0.447-1%2C1-1s1%2C0.447%2C1%2C1S3.553%2C4%2C3%2C4z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-user:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M8.851%2C10.101c-0.18-0.399-0.2-0.763-0.153-1.104C9.383%2C8.49%2C9.738%2C7.621%2C9.891%2C6.465C10.493%2C6.355%2C10.5%2C5.967%2C10.5%2C5.5%20c0-0.437-0.008-0.804-0.502-0.94C9.999%2C4.539%2C10%2C4.521%2C10%2C4.5c0-2.103-1-4-2-4C8%2C0.5%2C7.5%2C0%2C6.5%2C0C5%2C0%2C4%2C1.877%2C4%2C4.5%20c0%2C0.021%2C0.001%2C0.039%2C0.002%2C0.06C3.508%2C4.696%2C3.5%2C5.063%2C3.5%2C5.5c0%2C0.467%2C0.007%2C0.855%2C0.609%2C0.965%20C4.262%2C7.621%2C4.617%2C8.49%2C5.303%2C8.997c0.047%2C0.341%2C0.026%2C0.704-0.153%2C1.104C1.503%2C10.503%2C0%2C12%2C0%2C12v2h14v-2%20C14%2C12%2C12.497%2C10.503%2C8.851%2C10.101z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-video:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%20-2%2014%2014%22%20style%3D%22enable-background%3Anew%200%20-2%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M8%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2h6c1.104%2C0%2C2-0.896%2C2-2V5V2C10%2C0.896%2C9.104%2C0%2C8%2C0z%20%20M10%2C5l4%2C4V1L10%2C5z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-action:after,.ui-alt-icon .ui-icon-action:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M9%2C5v3l5-4L9%2C0v3c0%2C0-5%2C0-5%2C7C6%2C5%2C9%2C5%2C9%2C5z%20M11%2C12H2V5h1l2-2H0v11h13V7l-2%2C2V12z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-alert:after,.ui-alt-icon .ui-icon-alert:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0L0%2C12h14L7%2C0z%20M7%2C11c-0.553%2C0-1-0.447-1-1s0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1S7.553%2C11%2C7%2C11z%20M7%2C8C6.447%2C8%2C6%2C7.553%2C6%2C7V5%20c0-0.553%2C0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1v2C8%2C7.553%2C7.553%2C8%2C7%2C8z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-d:after,.ui-alt-icon .ui-icon-arrow-d:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%229%2C7%209%2C0%205%2C0%205%2C7%200%2C7%207%2C14%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-d-l:after,.ui-alt-icon .ui-icon-arrow-d-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C3%2011%2C0%203.5%2C7.5%200%2C4%200%2C14%2010%2C14%206.5%2C10.5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-d-r:after,.ui-alt-icon .ui-icon-arrow-d-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2210.5%2C7.5%203%2C0%200%2C3%207.5%2C10.5%204%2C14%2014%2C14%2014%2C4%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-l:after,.ui-alt-icon .ui-icon-arrow-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C5%207%2C0%200%2C7%207%2C14%207%2C9%2014%2C9%2014%2C5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-r:after,.ui-alt-icon .ui-icon-arrow-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C7%207%2C0%207%2C5%200%2C5%200%2C9%207%2C9%207%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-u:after,.ui-alt-icon .ui-icon-arrow-u:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C0%200%2C7%205%2C7%205%2C14%209%2C14%209%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-u-l:after,.ui-alt-icon .ui-icon-arrow-u-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C11%206.5%2C3.5%2010%2C0%200%2C0%200%2C10%203.5%2C6.5%2011%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-u-r:after,.ui-alt-icon .ui-icon-arrow-u-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C0%204%2C0%207.5%2C3.5%200%2C11%203%2C14%2010.5%2C6.5%2014%2C10%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-audio:after,.ui-alt-icon .ui-icon-audio:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.018px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014.018%2014%22%20style%3D%22enable-background%3Anew%200%200%2014.018%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C4C0.447%2C4%2C0%2C4.447%2C0%2C5v4c0%2C0.553%2C0.447%2C1%2C1%2C1h1l4%2C4V0L2%2C4H1z%20M10.346%2C7c0-1.699-1.042-3.154-2.546-3.867L6.982%2C4.68%20C7.885%2C5.107%2C8.51%2C5.98%2C8.51%2C7S7.885%2C8.893%2C6.982%2C9.32L7.8%2C10.867C9.304%2C10.154%2C10.346%2C8.699%2C10.346%2C7z%20M9.447%2C0.017L8.618%2C1.586%20C10.723%2C2.584%2C12.182%2C4.621%2C12.182%2C7s-1.459%2C4.416-3.563%2C5.414l0.829%2C1.569c2.707-1.283%2C4.57-3.925%2C4.57-6.983%20S12.154%2C1.3%2C9.447%2C0.017z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-back:after,.ui-alt-icon .ui-icon-back:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C3V0L1%2C4l4%2C4V5c0%2C0%2C6%2C0%2C6%2C3s-5%2C4-5%2C4v2c0%2C0%2C7-1%2C7-6C13%2C4%2C8%2C3%2C5%2C3z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-bars:after,.ui-alt-icon .ui-icon-bars:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C4h12c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H1C0.447%2C2%2C0%2C2.447%2C0%2C3S0.447%2C4%2C1%2C4z%20M13%2C6H1C0.447%2C6%2C0%2C6.447%2C0%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H1c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1h12%20c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-bullets:after,.ui-alt-icon .ui-icon-bullets:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C4h8c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H5C4.447%2C2%2C4%2C2.447%2C4%2C3S4.447%2C4%2C5%2C4z%20M13%2C6H5C4.447%2C6%2C4%2C6.447%2C4%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H5c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1h8%20c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%20M1%2C2C0.447%2C2%2C0%2C2.447%2C0%2C3s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C2%2C1%2C2z%20M1%2C6C0.447%2C6%2C0%2C6.447%2C0%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1s1-0.447%2C1-1C2%2C6.447%2C1.553%2C6%2C1%2C6z%20M1%2C10c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C10%2C1%2C10z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-calendar:after,.ui-alt-icon .ui-icon-calendar:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M0%2C8h2V6H0V8z%20M3%2C8h2V6H3V8z%20M6%2C8h2V6H6V8z%20M9%2C8h2V6H9V8z%20M12%2C8h2V6h-2V8z%20M0%2C11h2V9H0V11z%20M3%2C11h2V9H3V11z%20M6%2C11h2V9H6V11z%20%20M9%2C11h2V9H9V11z%20M12%2C11h2V9h-2V11z%20M0%2C14h2v-2H0V14z%20M3%2C14h2v-2H3V14z%20M6%2C14h2v-2H6V14z%20M9%2C14h2v-2H9V14z%20M12%2C1%20c0-0.553-0.447-1-1-1s-1%2C0.447-1%2C1H4c0-0.553-0.447-1-1-1S2%2C0.447%2C2%2C1H0v4h14V1H12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-camera:after,.ui-alt-icon .ui-icon-camera:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C2.5H9.908c-0.206-0.581-0.756-1-1.408-1h-3c-0.652%2C0-1.202%2C0.419-1.408%2C1H2c-1.104%2C0-2%2C0.896-2%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2%20h10c1.104%2C0%2C2-0.896%2C2-2v-6C14%2C3.396%2C13.104%2C2.5%2C12%2C2.5z%20M7%2C10.5c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3%20C10%2C9.156%2C8.657%2C10.5%2C7%2C10.5z%20M7%2C5.5c-1.104%2C0-2%2C0.896-2%2C2c0%2C1.104%2C0.896%2C2%2C2%2C2c1.104%2C0%2C2-0.896%2C2-2C9%2C6.396%2C8.104%2C5.5%2C7%2C5.5z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-carat-d:after,.ui-alt-icon .ui-icon-carat-d:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2211.949%2C3.404%207%2C8.354%202.05%2C3.404%20-0.071%2C5.525%207%2C12.596%2014.07%2C5.525%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-carat-l:after,.ui-alt-icon .ui-icon-carat-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2210.596%2C11.949%205.646%2C7%2010.596%2C2.05%208.475%2C-0.071%201.404%2C7%208.475%2C14.07%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-carat-r:after,.ui-alt-icon .ui-icon-carat-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%223.404%2C2.051%208.354%2C7%203.404%2C11.95%205.525%2C14.07%2012.596%2C7%205.525%2C-0.071%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-carat-u:after,.ui-alt-icon .ui-icon-carat-u:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%222.051%2C10.596%207%2C5.646%2011.95%2C10.596%2014.07%2C8.475%207%2C1.404%20-0.071%2C8.475%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-check:after,.ui-alt-icon .ui-icon-check:after,html .ui-alt-icon.ui-btn.ui-checkbox-on:after,html .ui-alt-icon .ui-btn.ui-checkbox-on:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C4%2011%2C1%205.003%2C6.997%203%2C5%200%2C8%204.966%2C13%204.983%2C12.982%205%2C13%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-clock:after,.ui-alt-icon .ui-icon-clock:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C12c-2.762%2C0-5-2.238-5-5s2.238-5%2C5-5s5%2C2.238%2C5%2C5%20S9.762%2C12%2C7%2C12z%20M9%2C6H8V4c0-0.553-0.447-1-1-1S6%2C3.447%2C6%2C4v3c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1S9.553%2C6%2C9%2C6z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-cloud:after,.ui-alt-icon .ui-icon-cloud:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M14%2C9.5c0-0.793-0.465-1.473-1.134-1.795C12.949%2C7.484%2C13%2C7.249%2C13%2C7c0-1.104-0.896-2-2-2c-0.158%2C0-0.311%2C0.023-0.457%2C0.058%20C9.816%2C3.549%2C8.286%2C2.5%2C6.5%2C2.5c-2.33%2C0-4.224%2C1.777-4.454%2C4.046C0.883%2C6.76%2C0%2C7.773%2C0%2C9c0%2C1.381%2C1.119%2C2.5%2C2.5%2C2.5h10v-0.07%20C13.361%2C11.206%2C14%2C10.432%2C14%2C9.5z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-comment:after,.ui-alt-icon .ui-icon-comment:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v7c0%2C1.104%2C0.896%2C2%2C2%2C2h1v3l3-3h6c1.104%2C0%2C2-0.896%2C2-2V2C14%2C0.896%2C13.104%2C0%2C12%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-delete:after,.ui-alt-icon .ui-icon-delete:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C3%2011%2C0%207%2C4%203%2C0%200%2C3%204%2C7%200%2C11%203%2C14%207%2C10%2011%2C14%2014%2C11%2010%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-edit:after,.ui-alt-icon .ui-icon-edit:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C10l-1%2C4l4-1l7-7L8%2C3L1%2C10z%20M11%2C0L9%2C2l3%2C3l2-2L11%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-eye:after,.ui-alt-icon .ui-icon-eye:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C2C3%2C2%2C0%2C7%2C0%2C7s3%2C5%2C7%2C5s7-5%2C7-5S11%2C2%2C7%2C2z%20M7%2C10c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3%20C10%2C8.656%2C8.657%2C10%2C7%2C10z%20M7%2C6C6.448%2C6%2C6%2C6.447%2C6%2C7c0%2C0.553%2C0.448%2C1%2C1%2C1s1-0.447%2C1-1C8%2C6.447%2C7.552%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-forbidden:after,.ui-alt-icon .ui-icon-forbidden:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12.601%2C11.187C13.476%2C10.018%2C14%2C8.572%2C14%2C7c0-3.866-3.134-7-7-7C5.428%2C0%2C3.982%2C0.524%2C2.813%2C1.399L2.757%2C1.343L2.053%2C2.048%20L2.048%2C2.053L1.343%2C2.758l0.056%2C0.056C0.524%2C3.982%2C0%2C5.428%2C0%2C7c0%2C3.866%2C3.134%2C7%2C7%2C7c1.572%2C0%2C3.018-0.524%2C4.187-1.399l0.056%2C0.057%20l0.705-0.705l0.005-0.005l0.705-0.705L12.601%2C11.187z%20M7%2C2c2.761%2C0%2C5%2C2.238%2C5%2C5c0%2C1.019-0.308%2C1.964-0.832%2C2.754L4.246%2C2.832%20C5.036%2C2.308%2C5.981%2C2%2C7%2C2z%20M7%2C12c-2.761%2C0-5-2.238-5-5c0-1.019%2C0.308-1.964%2C0.832-2.754l6.922%2C6.922C8.964%2C11.692%2C8.019%2C12%2C7%2C12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-forward:after,.ui-alt-icon .ui-icon-forward:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M13%2C4L9%2C0v3C6%2C3%2C1%2C4%2C1%2C8c0%2C5%2C7%2C6%2C7%2C6v-2c0%2C0-5-1-5-4s6-3%2C6-3v3L13%2C4z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-gear:after,.ui-alt-icon .ui-icon-gear:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M13.621%2C5.904l-1.036-0.259c-0.168-0.042-0.303-0.168-0.355-0.332c-0.092-0.284-0.205-0.559-0.339-0.82%20c-0.079-0.153-0.073-0.337%2C0.017-0.486l0.549-0.915c0.118-0.196%2C0.088-0.448-0.075-0.61l-0.862-0.863%20c-0.162-0.163-0.414-0.193-0.611-0.075l-0.916%2C0.55C9.844%2C2.182%2C9.659%2C2.188%2C9.506%2C2.109C9.244%2C1.975%2C8.97%2C1.861%2C8.686%2C1.77%20c-0.165-0.052-0.29-0.187-0.332-0.354L8.095%2C0.379C8.039%2C0.156%2C7.839%2C0%2C7.609%2C0H6.391c-0.229%2C0-0.43%2C0.156-0.485%2C0.379L5.646%2C1.415%20C5.604%2C1.582%2C5.479%2C1.718%2C5.313%2C1.77c-0.284%2C0.092-0.559%2C0.206-0.82%2C0.34C4.339%2C2.188%2C4.155%2C2.182%2C4.007%2C2.093L3.092%2C1.544%20c-0.196-0.118-0.448-0.087-0.61%2C0.075L1.619%2C2.481C1.457%2C2.644%2C1.426%2C2.896%2C1.544%2C3.093l0.549%2C0.914%20c0.089%2C0.148%2C0.095%2C0.332%2C0.017%2C0.486C1.975%2C4.755%2C1.861%2C5.029%2C1.77%2C5.314c-0.053%2C0.164-0.188%2C0.29-0.354%2C0.332L0.379%2C5.905%20C0.156%2C5.961%2C0%2C6.161%2C0%2C6.391v1.219c0%2C0.229%2C0.156%2C0.43%2C0.379%2C0.485l1.036%2C0.26C1.582%2C8.396%2C1.717%2C8.521%2C1.77%2C8.687%20c0.092%2C0.284%2C0.205%2C0.559%2C0.34%2C0.82C2.188%2C9.66%2C2.182%2C9.844%2C2.093%2C9.993l-0.549%2C0.915c-0.118%2C0.195-0.087%2C0.448%2C0.075%2C0.61%20l0.862%2C0.862c0.162%2C0.163%2C0.414%2C0.193%2C0.61%2C0.075l0.915-0.549c0.148-0.089%2C0.332-0.095%2C0.486-0.017%20c0.262%2C0.135%2C0.536%2C0.248%2C0.82%2C0.34c0.165%2C0.053%2C0.291%2C0.187%2C0.332%2C0.354l0.259%2C1.036C5.96%2C13.844%2C6.16%2C14%2C6.39%2C14h1.22%20c0.229%2C0%2C0.43-0.156%2C0.485-0.379l0.259-1.036c0.042-0.167%2C0.168-0.302%2C0.333-0.354c0.284-0.092%2C0.559-0.205%2C0.82-0.34%20c0.154-0.078%2C0.338-0.072%2C0.486%2C0.017l0.914%2C0.549c0.197%2C0.118%2C0.449%2C0.088%2C0.611-0.074l0.862-0.863%20c0.163-0.162%2C0.193-0.415%2C0.075-0.611l-0.549-0.915c-0.089-0.148-0.096-0.332-0.017-0.485c0.134-0.263%2C0.248-0.536%2C0.339-0.82%20c0.053-0.165%2C0.188-0.291%2C0.355-0.333l1.036-0.259C13.844%2C8.039%2C14%2C7.839%2C14%2C7.609V6.39C14%2C6.16%2C13.844%2C5.96%2C13.621%2C5.904z%20M7%2C10%20c-1.657%2C0-3-1.343-3-3s1.343-3%2C3-3s3%2C1.343%2C3%2C3S8.657%2C10%2C7%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-grid:after,.ui-alt-icon .ui-icon-grid:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M3%2C0H1C0.447%2C0%2C0%2C0.447%2C0%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C4%2C0.447%2C3.553%2C0%2C3%2C0z%20M8%2C0H6%20C5.447%2C0%2C5%2C0.447%2C5%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C9%2C0.447%2C8.553%2C0%2C8%2C0z%20M13%2C0h-2c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C14%2C0.447%2C13.553%2C0%2C13%2C0z%20M3%2C5H1C0.447%2C5%2C0%2C5.447%2C0%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1V6C4%2C5.447%2C3.553%2C5%2C3%2C5z%20M8%2C5H6C5.447%2C5%2C5%2C5.447%2C5%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6%20C9%2C5.447%2C8.553%2C5%2C8%2C5z%20M13%2C5h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6C14%2C5.447%2C13.553%2C5%2C13%2C5z%20M3%2C10%20H1c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C4%2C10.447%2C3.553%2C10%2C3%2C10z%20M8%2C10H6c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C9%2C10.447%2C8.553%2C10%2C8%2C10z%20M13%2C10h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1v-2C14%2C10.447%2C13.553%2C10%2C13%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-heart:after,.ui-alt-icon .ui-icon-heart:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C1.958c-2-3-7-2.128-7%2C1.872c0%2C3%2C4%2C7%2C4%2C7s2.417%2C2.48%2C3%2C3c0.583-0.52%2C3-3%2C3-3s4-4%2C4-7C14-0.169%2C9-1.042%2C7%2C1.958z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-home:after,.ui-alt-icon .ui-icon-home:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C0%200%2C7%202%2C7%202%2C14%205%2C14%205%2C9%209%2C9%209%2C14%2012%2C14%2012%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-info:after,.ui-alt-icon .ui-icon-info:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C2c0.552%2C0%2C1%2C0.447%2C1%2C1S7.552%2C4%2C7%2C4S6%2C3.553%2C6%2C3%20S6.448%2C2%2C7%2C2z%20M9%2C11H5v-1h1V6H5V5h3v5h1V11z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-location:after,.ui-alt-icon .ui-icon-location:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C4.791%2C0%2C3%2C1.791%2C3%2C4c0%2C2%2C4%2C10%2C4%2C10s4-8%2C4-10C11%2C1.791%2C9.209%2C0%2C7%2C0z%20M7%2C6C5.896%2C6%2C5%2C5.104%2C5%2C4s0.896-2%2C2-2%20c1.104%2C0%2C2%2C0.896%2C2%2C2S8.104%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-lock:after,.ui-alt-icon .ui-icon-lock:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C6V5c0-2.762-2.238-5-5-5C4.239%2C0%2C2%2C2.238%2C2%2C5v1H1v8h12V6H12z%20M7.5%2C9.848V12h-1V9.848C6.207%2C9.673%2C6%2C9.366%2C6%2C9%20c0-0.553%2C0.448-1%2C1-1s1%2C0.447%2C1%2C1C8%2C9.366%2C7.793%2C9.673%2C7.5%2C9.848z%20M10%2C6H4V5c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3V6z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-mail:after,.ui-alt-icon .ui-icon-mail:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M0%2C3.75V12h14V3.75L7%2C9L0%2C3.75z%20M14%2C2H0l7%2C5L14%2C2z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-minus:after,.ui-alt-icon .ui-icon-minus:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Crect%20y%3D%225%22%20width%3D%2214%22%20height%3D%224%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-navigation:after,.ui-alt-icon .ui-icon-navigation:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2213%2C1%200%2C6%207%2C7%208%2C14%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-phone:after,.ui-alt-icon .ui-icon-phone:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M6.949%2C9.182C6.175%2C8.549%2C5.281%2C7.697%2C4.507%2C6.736C3.963%2C6.063%2C3.483%2C5.355%2C3.979%2C4.858l-3.482-3.48%20c-0.508%2C0.634-1.633%2C3.654%2C3.188%2C8.598c5.08%2C5.211%2C8.356%2C4.097%2C8.92%2C3.511l-3.396-3.399C8.734%2C10.561%2C8.123%2C10.139%2C6.949%2C9.182z%20%20M13.83%2C11.512v-0.004c0%2C0-2.648-2.646-2.649-2.647c-0.21-0.212-0.546-0.205-0.754%2C0.002L9.465%2C9.823l3.402%2C3.407%20c0%2C0%2C0.963-0.961%2C0.961-0.961l0.002-0.002C14.053%2C12.049%2C14.031%2C11.713%2C13.83%2C11.512z%20M5.202%2C3.636V3.634%20c0.222-0.222%2C0.2-0.557%2C0-0.758V2.873c0%2C0-2.726-2.725-2.727-2.726c-0.21-0.21-0.545-0.205-0.753%2C0.001L0.761%2C1.113L4.24%2C4.595%20C4.241%2C4.596%2C5.202%2C3.637%2C5.202%2C3.636z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-plus:after,.ui-alt-icon .ui-icon-plus:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C5%209%2C5%209%2C0%205%2C0%205%2C5%200%2C5%200%2C9%205%2C9%205%2C14%209%2C14%209%2C9%2014%2C9%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-power:after,.ui-alt-icon .ui-icon-power:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M11.243%2C2.408c-0.392-0.401-1.024-0.401-1.415%2C0c-0.391%2C0.401-0.391%2C1.054%2C0%2C1.455C10.584%2C4.642%2C11%2C5.675%2C11%2C6.773%20s-0.416%2C2.133-1.172%2C2.91c-1.512%2C1.558-4.145%2C1.558-5.656%2C0C3.416%2C8.904%2C3%2C7.872%2C3%2C6.773C3%2C5.673%2C3.416%2C4.64%2C4.172%2C3.863%20c0.39-0.401%2C0.39-1.054%2C0-1.455c-0.391-0.401-1.024-0.401-1.415%2C0C1.624%2C3.574%2C1%2C5.125%2C1%2C6.773c0%2C1.647%2C0.624%2C3.199%2C1.757%2C4.365%20c1.134%2C1.166%2C2.64%2C1.809%2C4.243%2C1.809c1.604%2C0%2C3.109-0.645%2C4.243-1.811C12.376%2C9.975%2C13%2C8.423%2C13%2C6.773%20C13%2C5.125%2C12.376%2C3.574%2C11.243%2C2.408z%20M7%2C8.053c0.553%2C0%2C1-0.445%2C1-1v-6c0-0.553-0.447-1-1-1c-0.553%2C0-1%2C0.447-1%2C1v6%20C6%2C7.604%2C6.447%2C8.053%2C7%2C8.053z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-recycle:after,.ui-alt-icon .ui-icon-recycle:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M3%2C7h1L2%2C4L0%2C7h1c0%2C3.313%2C2.687%2C6%2C6%2C6c0.702%2C0%2C1.374-0.127%2C2-0.35v-2.205C8.41%2C10.789%2C7.732%2C11%2C7%2C11C4.791%2C11%2C3%2C9.209%2C3%2C7z%20%20M13%2C7c0-3.313-2.688-6-6-6C6.298%2C1%2C5.626%2C1.127%2C5%2C1.349v2.206C5.59%2C3.211%2C6.268%2C3%2C7%2C3c2.209%2C0%2C4%2C1.791%2C4%2C4h-1l2%2C3l2-3H13z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-refresh:after,.ui-alt-icon .ui-icon-refresh:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.001px%22%20height%3D%2214.002px%22%20viewBox%3D%220%200%2014.001%2014.002%22%20style%3D%22enable-background%3Anew%200%200%2014.001%2014.002%3B%22%20%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M14.001%2C6.001v-6l-2.06%2C2.06c-0.423-0.424-0.897-0.809-1.44-1.122C7.153-0.994%2C2.872%2C0.153%2C0.939%2C3.501%20c-1.933%2C3.348-0.786%2C7.629%2C2.562%2C9.562c3.348%2C1.933%2C7.629%2C0.785%2C9.562-2.562l-1.732-1c-1.381%2C2.392-4.438%2C3.211-6.83%2C1.83%20s-3.211-4.438-1.83-6.83s4.438-3.211%2C6.83-1.83c0.389%2C0.225%2C0.718%2C0.506%2C1.02%2C0.81l-2.52%2C2.52H14.001z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-search:after,.ui-alt-icon .ui-icon-search:after,.ui-input-search:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M10.171%2C8.766c0.617-0.888%2C0.979-1.964%2C0.979-3.126c0-3.037-2.463-5.5-5.5-5.5s-5.5%2C2.463-5.5%2C5.5s2.463%2C5.5%2C5.5%2C5.5%20c1.152%2C0%2C2.223-0.355%2C3.104-0.962l3.684%2C3.683l1.414-1.414L10.171%2C8.766z%20M5.649%2C9.14c-1.933%2C0-3.5-1.567-3.5-3.5%20c0-1.933%2C1.567-3.5%2C3.5-3.5c1.933%2C0%2C3.5%2C1.567%2C3.5%2C3.5C9.149%2C7.572%2C7.582%2C9.14%2C5.649%2C9.14z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-shop:after,.ui-alt-icon .ui-icon-shop:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M10%2C4V3c0-1.657-1.343-3-3-3S4%2C1.343%2C4%2C3v1H1v10h12V4H10z%20M4.5%2C6C4.224%2C6%2C4%2C5.776%2C4%2C5.5S4.224%2C5%2C4.5%2C5S5%2C5.224%2C5%2C5.5%20S4.776%2C6%2C4.5%2C6z%20M5%2C3c0-1.104%2C0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2v1H5V3z%20M9.5%2C6C9.225%2C6%2C9%2C5.776%2C9%2C5.5S9.225%2C5%2C9.5%2C5S10%2C5.224%2C10%2C5.5%20S9.775%2C6%2C9.5%2C6z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-star:after,.ui-alt-icon .ui-icon-star:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C5%209%2C5%207%2C0%205%2C5%200%2C5%204%2C8%202.625%2C13%207%2C10%2011.375%2C13%2010%2C8%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-tag:after,.ui-alt-icon .ui-icon-tag:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C0H0v5l9%2C9l5-5L5%2C0z%20M3%2C4C2.447%2C4%2C2%2C3.553%2C2%2C3s0.447-1%2C1-1s1%2C0.447%2C1%2C1S3.553%2C4%2C3%2C4z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-user:after,.ui-alt-icon .ui-icon-user:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M8.851%2C10.101c-0.18-0.399-0.2-0.763-0.153-1.104C9.383%2C8.49%2C9.738%2C7.621%2C9.891%2C6.465C10.493%2C6.355%2C10.5%2C5.967%2C10.5%2C5.5%20c0-0.437-0.008-0.804-0.502-0.94C9.999%2C4.539%2C10%2C4.521%2C10%2C4.5c0-2.103-1-4-2-4C8%2C0.5%2C7.5%2C0%2C6.5%2C0C5%2C0%2C4%2C1.877%2C4%2C4.5%20c0%2C0.021%2C0.001%2C0.039%2C0.002%2C0.06C3.508%2C4.696%2C3.5%2C5.063%2C3.5%2C5.5c0%2C0.467%2C0.007%2C0.855%2C0.609%2C0.965%20C4.262%2C7.621%2C4.617%2C8.49%2C5.303%2C8.997c0.047%2C0.341%2C0.026%2C0.704-0.153%2C1.104C1.503%2C10.503%2C0%2C12%2C0%2C12v2h14v-2%20C14%2C12%2C12.497%2C10.503%2C8.851%2C10.101z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-video:after,.ui-alt-icon .ui-icon-video:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%20-2%2014%2014%22%20style%3D%22enable-background%3Anew%200%20-2%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M8%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2h6c1.104%2C0%2C2-0.896%2C2-2V5V2C10%2C0.896%2C9.104%2C0%2C8%2C0z%20M10%2C5l4%2C4V1L10%2C5z%22%2F%3E%3C%2Fsvg%3E")}.ui-nosvg .ui-icon-action:after{background-image:url(images/icons-png/action-white.png)}.ui-nosvg .ui-icon-alert:after{background-image:url(images/icons-png/alert-white.png)}.ui-nosvg .ui-icon-arrow-d-l:after{background-image:url(images/icons-png/arrow-d-l-white.png)}.ui-nosvg .ui-icon-arrow-d-r:after{background-image:url(images/icons-png/arrow-d-r-white.png)}.ui-nosvg .ui-icon-arrow-d:after{background-image:url(images/icons-png/arrow-d-white.png)}.ui-nosvg .ui-icon-arrow-l:after{background-image:url(images/icons-png/arrow-l-white.png)}.ui-nosvg .ui-icon-arrow-r:after{background-image:url(images/icons-png/arrow-r-white.png)}.ui-nosvg .ui-icon-arrow-u-l:after{background-image:url(images/icons-png/arrow-u-l-white.png)}.ui-nosvg .ui-icon-arrow-u-r:after{background-image:url(images/icons-png/arrow-u-r-white.png)}.ui-nosvg .ui-icon-arrow-u:after{background-image:url(images/icons-png/arrow-u-white.png)}.ui-nosvg .ui-icon-audio:after{background-image:url(images/icons-png/audio-white.png)}.ui-nosvg .ui-icon-back:after{background-image:url(images/icons-png/back-white.png)}.ui-nosvg .ui-icon-bars:after{background-image:url(images/icons-png/bars-white.png)}.ui-nosvg .ui-icon-bullets:after{background-image:url(images/icons-png/bullets-white.png)}.ui-nosvg .ui-icon-calendar:after{background-image:url(images/icons-png/calendar-white.png)}.ui-nosvg .ui-icon-camera:after{background-image:url(images/icons-png/camera-white.png)}.ui-nosvg .ui-icon-carat-d:after{background-image:url(images/icons-png/carat-d-white.png)}.ui-nosvg .ui-icon-carat-l:after{background-image:url(images/icons-png/carat-l-white.png)}.ui-nosvg .ui-icon-carat-r:after{background-image:url(images/icons-png/carat-r-white.png)}.ui-nosvg .ui-icon-carat-u:after{background-image:url(images/icons-png/carat-u-white.png)}.ui-nosvg .ui-icon-check:after,html.ui-nosvg .ui-btn.ui-checkbox-on:after{background-image:url(images/icons-png/check-white.png)}.ui-nosvg .ui-icon-clock:after{background-image:url(images/icons-png/clock-white.png)}.ui-nosvg .ui-icon-cloud:after{background-image:url(images/icons-png/cloud-white.png)}.ui-nosvg .ui-icon-comment:after{background-image:url(images/icons-png/comment-white.png)}.ui-nosvg .ui-icon-delete:after{background-image:url(images/icons-png/delete-white.png)}.ui-nosvg .ui-icon-edit:after{background-image:url(images/icons-png/edit-white.png)}.ui-nosvg .ui-icon-eye:after{background-image:url(images/icons-png/eye-white.png)}.ui-nosvg .ui-icon-forbidden:after{background-image:url(images/icons-png/forbidden-white.png)}.ui-nosvg .ui-icon-forward:after{background-image:url(images/icons-png/forward-white.png)}.ui-nosvg .ui-icon-gear:after{background-image:url(images/icons-png/gear-white.png)}.ui-nosvg .ui-icon-grid:after{background-image:url(images/icons-png/grid-white.png)}.ui-nosvg .ui-icon-heart:after{background-image:url(images/icons-png/heart-white.png)}.ui-nosvg .ui-icon-home:after{background-image:url(images/icons-png/home-white.png)}.ui-nosvg .ui-icon-info:after{background-image:url(images/icons-png/info-white.png)}.ui-nosvg .ui-icon-location:after{background-image:url(images/icons-png/location-white.png)}.ui-nosvg .ui-icon-lock:after{background-image:url(images/icons-png/lock-white.png)}.ui-nosvg .ui-icon-mail:after{background-image:url(images/icons-png/mail-white.png)}.ui-nosvg .ui-icon-minus:after{background-image:url(images/icons-png/minus-white.png)}.ui-nosvg .ui-icon-navigation:after{background-image:url(images/icons-png/navigation-white.png)}.ui-nosvg .ui-icon-phone:after{background-image:url(images/icons-png/phone-white.png)}.ui-nosvg .ui-icon-plus:after{background-image:url(images/icons-png/plus-white.png)}.ui-nosvg .ui-icon-power:after{background-image:url(images/icons-png/power-white.png)}.ui-nosvg .ui-icon-recycle:after{background-image:url(images/icons-png/recycle-white.png)}.ui-nosvg .ui-icon-refresh:after{background-image:url(images/icons-png/refresh-white.png)}.ui-nosvg .ui-icon-search:after{background-image:url(images/icons-png/search-white.png)}.ui-nosvg .ui-icon-shop:after{background-image:url(images/icons-png/shop-white.png)}.ui-nosvg .ui-icon-star:after{background-image:url(images/icons-png/star-white.png)}.ui-nosvg .ui-icon-tag:after{background-image:url(images/icons-png/tag-white.png)}.ui-nosvg .ui-icon-user:after{background-image:url(images/icons-png/user-white.png)}.ui-nosvg .ui-icon-video:after{background-image:url(images/icons-png/video-white.png)}.ui-nosvg .ui-alt-icon.ui-icon-action:after,.ui-nosvg .ui-alt-icon .ui-icon-action:after{background-image:url(images/icons-png/action-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-alert:after,.ui-nosvg .ui-alt-icon .ui-icon-alert:after{background-image:url(images/icons-png/alert-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-arrow-d:after,.ui-nosvg .ui-alt-icon .ui-icon-arrow-d:after{background-image:url(images/icons-png/arrow-d-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-arrow-d-l:after,.ui-nosvg .ui-alt-icon .ui-icon-arrow-d-l:after{background-image:url(images/icons-png/arrow-d-l-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-arrow-d-r:after,.ui-nosvg .ui-alt-icon .ui-icon-arrow-d-r:after{background-image:url(images/icons-png/arrow-d-r-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-arrow-l:after,.ui-nosvg .ui-alt-icon .ui-icon-arrow-l:after{background-image:url(images/icons-png/arrow-l-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-arrow-r:after,.ui-nosvg .ui-alt-icon .ui-icon-arrow-r:after{background-image:url(images/icons-png/arrow-r-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-arrow-u:after,.ui-nosvg .ui-alt-icon .ui-icon-arrow-u:after{background-image:url(images/icons-png/arrow-u-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-arrow-u-l:after,.ui-nosvg .ui-alt-icon .ui-icon-arrow-u-l:after{background-image:url(images/icons-png/arrow-u-l-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-arrow-u-r:after,.ui-nosvg .ui-alt-icon .ui-icon-arrow-u-r:after{background-image:url(images/icons-png/arrow-u-r-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-audio:after,.ui-nosvg .ui-alt-icon .ui-icon-audio:after{background-image:url(images/icons-png/audio-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-back:after,.ui-nosvg .ui-alt-icon .ui-icon-back:after{background-image:url(images/icons-png/back-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-bars:after,.ui-nosvg .ui-alt-icon .ui-icon-bars:after{background-image:url(images/icons-png/bars-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-bullets:after,.ui-nosvg .ui-alt-icon .ui-icon-bullets:after{background-image:url(images/icons-png/bullets-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-calendar:after,.ui-nosvg .ui-alt-icon .ui-icon-calendar:after{background-image:url(images/icons-png/calendar-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-camera:after,.ui-nosvg .ui-alt-icon .ui-icon-camera:after{background-image:url(images/icons-png/camera-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-carat-d:after,.ui-nosvg .ui-alt-icon .ui-icon-carat-d:after{background-image:url(images/icons-png/carat-d-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-carat-l:after,.ui-nosvg .ui-alt-icon .ui-icon-carat-l:after{background-image:url(images/icons-png/carat-l-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-carat-r:after,.ui-nosvg .ui-alt-icon .ui-icon-carat-r:after{background-image:url(images/icons-png/carat-r-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-carat-u:after,.ui-nosvg .ui-alt-icon .ui-icon-carat-u:after{background-image:url(images/icons-png/carat-u-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-check:after,.ui-nosvg .ui-alt-icon .ui-icon-check:after,.ui-nosvg .ui-alt-icon.ui-btn.ui-checkbox-on:after,.ui-nosvg .ui-alt-icon .ui-btn.ui-checkbox-on:after{background-image:url(images/icons-png/check-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-clock:after,.ui-nosvg .ui-alt-icon .ui-icon-clock:after{background-image:url(images/icons-png/clock-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-cloud:after,.ui-nosvg .ui-alt-icon .ui-icon-cloud:after{background-image:url(images/icons-png/cloud-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-comment:after,.ui-nosvg .ui-alt-icon .ui-icon-comment:after{background-image:url(images/icons-png/comment-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-delete:after,.ui-nosvg .ui-alt-icon .ui-icon-delete:after{background-image:url(images/icons-png/delete-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-edit:after,.ui-nosvg .ui-alt-icon .ui-icon-edit:after{background-image:url(images/icons-png/edit-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-eye:after,.ui-nosvg .ui-alt-icon .ui-icon-eye:after{background-image:url(images/icons-png/eye-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-forbidden:after,.ui-nosvg .ui-alt-icon .ui-icon-forbidden:after{background-image:url(images/icons-png/forbidden-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-forward:after,.ui-nosvg .ui-alt-icon .ui-icon-forward:after{background-image:url(images/icons-png/forward-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-gear:after,.ui-nosvg .ui-alt-icon .ui-icon-gear:after{background-image:url(images/icons-png/gear-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-grid:after,.ui-nosvg .ui-alt-icon .ui-icon-grid:after{background-image:url(images/icons-png/grid-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-heart:after,.ui-nosvg .ui-alt-icon .ui-icon-heart:after{background-image:url(images/icons-png/heart-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-home:after,.ui-nosvg .ui-alt-icon .ui-icon-home:after{background-image:url(images/icons-png/home-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-info:after,.ui-nosvg .ui-alt-icon .ui-icon-info:after{background-image:url(images/icons-png/info-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-location:after,.ui-nosvg .ui-alt-icon .ui-icon-location:after{background-image:url(images/icons-png/location-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-lock:after,.ui-nosvg .ui-alt-icon .ui-icon-lock:after{background-image:url(images/icons-png/lock-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-mail:after,.ui-nosvg .ui-alt-icon .ui-icon-mail:after{background-image:url(images/icons-png/mail-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-minus:after,.ui-nosvg .ui-alt-icon .ui-icon-minus:after{background-image:url(images/icons-png/minus-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-navigation:after,.ui-nosvg .ui-alt-icon .ui-icon-navigation:after{background-image:url(images/icons-png/navigation-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-phone:after,.ui-nosvg .ui-alt-icon .ui-icon-phone:after{background-image:url(images/icons-png/phone-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-plus:after,.ui-nosvg .ui-alt-icon .ui-icon-plus:after{background-image:url(images/icons-png/plus-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-power:after,.ui-nosvg .ui-alt-icon .ui-icon-power:after{background-image:url(images/icons-png/power-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-recycle:after,.ui-nosvg .ui-alt-icon .ui-icon-recycle:after{background-image:url(images/icons-png/recycle-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-refresh:after,.ui-nosvg .ui-alt-icon .ui-icon-refresh:after{background-image:url(images/icons-png/refresh-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-search:after,.ui-nosvg .ui-alt-icon .ui-icon-search:after,.ui-nosvg .ui-input-search:after{background-image:url(images/icons-png/search-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-shop:after,.ui-nosvg .ui-alt-icon .ui-icon-shop:after{background-image:url(images/icons-png/shop-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-star:after,.ui-nosvg .ui-alt-icon .ui-icon-star:after{background-image:url(images/icons-png/star-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-tag:after,.ui-nosvg .ui-alt-icon .ui-icon-tag:after{background-image:url(images/icons-png/tag-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-user:after,.ui-nosvg .ui-alt-icon .ui-icon-user:after{background-image:url(images/icons-png/user-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-video:after,.ui-nosvg .ui-alt-icon .ui-icon-video:after{background-image:url(images/icons-png/video-black.png)}html{font-size:100%}body,input,select,textarea,button,.ui-btn{font-size:1em;line-height:1.3;font-family:sans-serif}legend,.ui-input-text input,.ui-input-search input{color:inherit;text-shadow:inherit}.ui-mobile label,div.ui-controlgroup-label{font-weight:400;font-size:16px}.ui-field-contain{border-bottom-color:#828282;border-bottom-color:rgba(0,0,0,.15);border-bottom-width:1px;border-bottom-style:solid}.table-stroke thead th,.table-stripe thead th,.table-stripe tbody tr:last-child{border-bottom:1px solid #d6d6d6;border-bottom:1px solid rgba(0,0,0,.1)}.table-stroke tbody th,.table-stroke tbody td{border-bottom:1px solid #e6e6e6;border-bottom:1px solid rgba(0,0,0,.05)}.table-stripe.table-stroke tbody tr:last-child th,.table-stripe.table-stroke tbody tr:last-child td{border-bottom:0}.table-stripe tbody tr:nth-child(odd) td,.table-stripe tbody tr:nth-child(odd) th{background-color:#eee;background-color:rgba(0,0,0,.04)}.ui-btn,label.ui-btn{font-weight:700;border-width:1px;border-style:solid}.ui-btn{text-decoration:none!important}.ui-btn-active{cursor:pointer}.ui-corner-all{-webkit-border-radius:.3125em;border-radius:.3125em}.ui-btn-corner-all,.ui-btn.ui-corner-all,.ui-slider-track.ui-corner-all,.ui-flipswitch.ui-corner-all,.ui-li-count{-webkit-border-radius:.3125em;border-radius:.3125em}.ui-btn-icon-notext.ui-btn-corner-all,.ui-btn-icon-notext.ui-corner-all{-webkit-border-radius:1em;border-radius:1em}.ui-btn-corner-all,.ui-corner-all{-webkit-background-clip:padding;background-clip:padding-box}.ui-popup.ui-corner-all>.ui-popup-arrow-guide{left:.6em;right:.6em;top:.6em;bottom:.6em}.ui-shadow{-webkit-box-shadow:0 1px 3px rgba(0,0,0,.15);-moz-box-shadow:0 1px 3px rgba(0,0,0,.15);box-shadow:0 1px 3px rgba(0,0,0,.15)}.ui-shadow-inset{-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.2);-moz-box-shadow:inset 0 1px 3px rgba(0,0,0,.2);box-shadow:inset 0 1px 3px rgba(0,0,0,.2)}.ui-overlay-shadow{-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);-moz-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-btn-icon-left:after,.ui-btn-icon-right:after,.ui-btn-icon-top:after,.ui-btn-icon-bottom:after,.ui-btn-icon-notext:after{background-color:#666;background-color:rgba(0,0,0,.3);background-position:center center;background-repeat:no-repeat;-webkit-border-radius:1em;border-radius:1em}.ui-alt-icon.ui-btn:after,.ui-alt-icon .ui-btn:after,html .ui-alt-icon.ui-checkbox-off:after,html .ui-alt-icon.ui-radio-off:after,html .ui-alt-icon .ui-checkbox-off:after,html .ui-alt-icon .ui-radio-off:after{background-color:#666;background-color:rgba(0,0,0,.15)}.ui-nodisc-icon.ui-btn:after,.ui-nodisc-icon .ui-btn:after{background-color:transparent}.ui-shadow-icon.ui-btn:after,.ui-shadow-icon .ui-btn:after{-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.ui-btn.ui-checkbox-off:after,.ui-btn.ui-checkbox-on:after,.ui-btn.ui-radio-off:after,.ui-btn.ui-radio-on:after{display:block;width:18px;height:18px;margin:-9px 2px 0 2px}.ui-checkbox-off:after,.ui-btn.ui-radio-off:after{filter:Alpha(Opacity=30);opacity:.3}.ui-btn.ui-checkbox-off:after,.ui-btn.ui-checkbox-on:after{-webkit-border-radius:.1875em;border-radius:.1875em}.ui-btn.ui-checkbox-off:after{background-color:#666;background-color:rgba(0,0,0,.3)}.ui-radio .ui-btn.ui-radio-on:after{background-image:none;background-color:#fff;width:8px;height:8px;border-width:5px;border-style:solid}.ui-alt-icon.ui-btn.ui-radio-on:after,.ui-alt-icon .ui-btn.ui-radio-on:after{background-color:#000}.ui-icon-loading{background:url(images/ajax-loader.gif);background-size:2.875em 2.875em}.ui-bar-a,.ui-page-theme-a .ui-bar-inherit,html .ui-bar-a .ui-bar-inherit,html .ui-body-a .ui-bar-inherit,html body .ui-group-theme-a .ui-bar-inherit{background-color:#e9e9e9;border-color:#ddd;color:#333;text-shadow:0 1px 0 #eee;font-weight:700}.ui-bar-a{border-width:1px;border-style:solid}.ui-overlay-a,.ui-page-theme-a,.ui-page-theme-a .ui-panel-wrapper{background-color:#f9f9f9;border-color:#bbb;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-body-a,.ui-page-theme-a .ui-body-inherit,html .ui-bar-a .ui-body-inherit,html .ui-body-a .ui-body-inherit,html body .ui-group-theme-a .ui-body-inherit,html .ui-panel-page-container-a{background-color:#fff;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-body-a{border-width:1px;border-style:solid}.ui-page-theme-a a,html .ui-bar-a a,html .ui-body-a a,html body .ui-group-theme-a a{color:#38c;font-weight:700}.ui-page-theme-a a:visited,html .ui-bar-a a:visited,html .ui-body-a a:visited,html body .ui-group-theme-a a:visited{color:#38c}.ui-page-theme-a a:hover,html .ui-bar-a a:hover,html .ui-body-a a:hover,html body .ui-group-theme-a a:hover{color:#059}.ui-page-theme-a a:active,html .ui-bar-a a:active,html .ui-body-a a:active,html body .ui-group-theme-a a:active{color:#059}.ui-page-theme-a .ui-btn,html .ui-bar-a .ui-btn,html .ui-body-a .ui-btn,html body .ui-group-theme-a .ui-btn,html head+body .ui-btn.ui-btn-a,.ui-page-theme-a .ui-btn:visited,html .ui-bar-a .ui-btn:visited,html .ui-body-a .ui-btn:visited,html body .ui-group-theme-a .ui-btn:visited,html head+body .ui-btn.ui-btn-a:visited{background-color:#f6f6f6;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-page-theme-a .ui-btn:hover,html .ui-bar-a .ui-btn:hover,html .ui-body-a .ui-btn:hover,html body .ui-group-theme-a .ui-btn:hover,html head+body .ui-btn.ui-btn-a:hover{background-color:#ededed;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-page-theme-a .ui-btn:active,html .ui-bar-a .ui-btn:active,html .ui-body-a .ui-btn:active,html body .ui-group-theme-a .ui-btn:active,html head+body .ui-btn.ui-btn-a:active{background-color:#e8e8e8;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-page-theme-a .ui-btn.ui-btn-active,html .ui-bar-a .ui-btn.ui-btn-active,html .ui-body-a .ui-btn.ui-btn-active,html body .ui-group-theme-a .ui-btn.ui-btn-active,html head+body .ui-btn.ui-btn-a.ui-btn-active,.ui-page-theme-a .ui-checkbox-on:after,html .ui-bar-a .ui-checkbox-on:after,html .ui-body-a .ui-checkbox-on:after,html body .ui-group-theme-a .ui-checkbox-on:after,.ui-btn.ui-checkbox-on.ui-btn-a:after,.ui-page-theme-a .ui-flipswitch-active,html .ui-bar-a .ui-flipswitch-active,html .ui-body-a .ui-flipswitch-active,html body .ui-group-theme-a .ui-flipswitch-active,html body .ui-flipswitch.ui-bar-a.ui-flipswitch-active,.ui-page-theme-a .ui-slider-track .ui-btn-active,html .ui-bar-a .ui-slider-track .ui-btn-active,html .ui-body-a .ui-slider-track .ui-btn-active,html body .ui-group-theme-a .ui-slider-track .ui-btn-active,html body div.ui-slider-track.ui-body-a .ui-btn-active{background-color:#38c;border-color:#38c;color:#fff;text-shadow:0 1px 0 #059}.ui-page-theme-a .ui-radio-on:after,html .ui-bar-a .ui-radio-on:after,html .ui-body-a .ui-radio-on:after,html body .ui-group-theme-a .ui-radio-on:after,.ui-btn.ui-radio-on.ui-btn-a:after{border-color:#38c}.ui-page-theme-a .ui-btn:focus,html .ui-bar-a .ui-btn:focus,html .ui-body-a .ui-btn:focus,html body .ui-group-theme-a .ui-btn:focus,html head+body .ui-btn.ui-btn-a:focus,.ui-page-theme-a .ui-focus,html .ui-bar-a .ui-focus,html .ui-body-a .ui-focus,html body .ui-group-theme-a .ui-focus,html head+body .ui-btn-a.ui-focus,html head+body .ui-body-a.ui-focus{-webkit-box-shadow:0 0 12px #38c;-moz-box-shadow:0 0 12px #38c;box-shadow:0 0 12px #38c}.ui-bar-b,.ui-page-theme-b .ui-bar-inherit,html .ui-bar-b .ui-bar-inherit,html .ui-body-b .ui-bar-inherit,html body .ui-group-theme-b .ui-bar-inherit{background-color:#1d1d1d;border-color:#1b1b1b;color:#fff;text-shadow:0 1px 0 #111;font-weight:700}.ui-bar-b{border-width:1px;border-style:solid}.ui-overlay-b,.ui-page-theme-b,.ui-page-theme-b .ui-panel-wrapper{background-color:#252525;border-color:#454545;color:#fff;text-shadow:0 1px 0 #111}.ui-body-b,.ui-page-theme-b .ui-body-inherit,html .ui-bar-b .ui-body-inherit,html .ui-body-b .ui-body-inherit,html body .ui-group-theme-b .ui-body-inherit,html .ui-panel-page-container-b{background-color:#2a2a2a;border-color:#1d1d1d;color:#fff;text-shadow:0 1px 0 #111}.ui-body-b{border-width:1px;border-style:solid}.ui-page-theme-b a,html .ui-bar-b a,html .ui-body-b a,html body .ui-group-theme-b a{color:#2ad;font-weight:700}.ui-page-theme-b a:visited,html .ui-bar-b a:visited,html .ui-body-b a:visited,html body .ui-group-theme-b a:visited{color:#2ad}.ui-page-theme-b a:hover,html .ui-bar-b a:hover,html .ui-body-b a:hover,html body .ui-group-theme-b a:hover{color:#08b}.ui-page-theme-b a:active,html .ui-bar-b a:active,html .ui-body-b a:active,html body .ui-group-theme-b a:active{color:#08b}.ui-page-theme-b .ui-btn,html .ui-bar-b .ui-btn,html .ui-body-b .ui-btn,html body .ui-group-theme-b .ui-btn,html head+body .ui-btn.ui-btn-b,.ui-page-theme-b .ui-btn:visited,html .ui-bar-b .ui-btn:visited,html .ui-body-b .ui-btn:visited,html body .ui-group-theme-b .ui-btn:visited,html head+body .ui-btn.ui-btn-b:visited{background-color:#333;border-color:#1f1f1f;color:#fff;text-shadow:0 1px 0 #111}.ui-page-theme-b .ui-btn:hover,html .ui-bar-b .ui-btn:hover,html .ui-body-b .ui-btn:hover,html body .ui-group-theme-b .ui-btn:hover,html head+body .ui-btn.ui-btn-b:hover{background-color:#373737;border-color:#1f1f1f;color:#fff;text-shadow:0 1px 0 #111}.ui-page-theme-b .ui-btn:active,html .ui-bar-b .ui-btn:active,html .ui-body-b .ui-btn:active,html body .ui-group-theme-b .ui-btn:active,html head+body .ui-btn.ui-btn-b:active{background-color:#404040;border-color:#1f1f1f;color:#fff;text-shadow:0 1px 0 #111}.ui-page-theme-b .ui-btn.ui-btn-active,html .ui-bar-b .ui-btn.ui-btn-active,html .ui-body-b .ui-btn.ui-btn-active,html body .ui-group-theme-b .ui-btn.ui-btn-active,html head+body .ui-btn.ui-btn-b.ui-btn-active,.ui-page-theme-b .ui-checkbox-on:after,html .ui-bar-b .ui-checkbox-on:after,html .ui-body-b .ui-checkbox-on:after,html body .ui-group-theme-b .ui-checkbox-on:after,.ui-btn.ui-checkbox-on.ui-btn-b:after,.ui-page-theme-b .ui-flipswitch-active,html .ui-bar-b .ui-flipswitch-active,html .ui-body-b .ui-flipswitch-active,html body .ui-group-theme-b .ui-flipswitch-active,html body .ui-flipswitch.ui-bar-b.ui-flipswitch-active,.ui-page-theme-b .ui-slider-track .ui-btn-active,html .ui-bar-b .ui-slider-track .ui-btn-active,html .ui-body-b .ui-slider-track .ui-btn-active,html body .ui-group-theme-b .ui-slider-track .ui-btn-active,html body div.ui-slider-track.ui-body-b .ui-btn-active{background-color:#2ad;border-color:#2ad;color:#fff;text-shadow:0 1px 0 #08b}.ui-page-theme-b .ui-radio-on:after,html .ui-bar-b .ui-radio-on:after,html .ui-body-b .ui-radio-on:after,html body .ui-group-theme-b .ui-radio-on:after,.ui-btn.ui-radio-on.ui-btn-b:after{border-color:#2ad}.ui-page-theme-b .ui-btn:focus,html .ui-bar-b .ui-btn:focus,html .ui-body-b .ui-btn:focus,html body .ui-group-theme-b .ui-btn:focus,html head+body .ui-btn.ui-btn-b:focus,.ui-page-theme-b .ui-focus,html .ui-bar-b .ui-focus,html .ui-body-b .ui-focus,html body .ui-group-theme-b .ui-focus,html head+body .ui-btn-b.ui-focus,html head+body .ui-body-b.ui-focus{-webkit-box-shadow:0 0 12px #2ad;-moz-box-shadow:0 0 12px #2ad;box-shadow:0 0 12px #2ad}.ui-disabled,.ui-state-disabled,button[disabled],.ui-select .ui-btn.ui-state-disabled{filter:Alpha(Opacity=30);opacity:.3;cursor:default!important;pointer-events:none}.ui-btn:focus,.ui-btn.ui-focus{outline:0}.ui-noboxshadow .ui-shadow,.ui-noboxshadow .ui-shadow-inset,.ui-noboxshadow .ui-overlay-shadow,.ui-noboxshadow .ui-shadow-icon.ui-btn:after,.ui-noboxshadow .ui-shadow-icon .ui-btn:after,.ui-noboxshadow .ui-focus,.ui-noboxshadow .ui-btn:focus,.ui-noboxshadow input:focus,.ui-noboxshadow .ui-panel{-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important}.ui-noboxshadow .ui-btn:focus,.ui-noboxshadow .ui-focus{outline-width:1px;outline-style:auto}.ui-mobile,.ui-mobile body{height:99.9%}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile fieldset{border-width:0}.ui-mobile fieldset{min-width:0}@-moz-document url-prefix(){.ui-mobile fieldset{display:table-column;vertical-align:middle}}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:100%;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-page{outline:0}.ui-mobile .ui-page-active{display:block;overflow:visible;overflow-x:hidden}@media screen and (orientation:portrait){.ui-mobile .ui-page{min-height:420px}}@media screen and (orientation:landscape){.ui-mobile .ui-page{min-height:300px}}.ui-mobile-rendering>*{visibility:hidden}.ui-nojs{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-loading .ui-loader{display:block}.ui-loader{display:none;z-index:9999999;position:fixed;top:50%;left:50%;border:0}.ui-loader-default{background:0;filter:Alpha(Opacity=18);opacity:.18;width:2.875em;height:2.875em;margin-left:-1.4375em;margin-top:-1.4375em}.ui-loader-verbose{width:12.5em;filter:Alpha(Opacity=88);opacity:.88;box-shadow:0 1px 1px -1px #fff;height:auto;margin-left:-6.875em;margin-top:-2.6875em;padding:.625em}.ui-loader-default h1{font-size:0;width:0;height:0;overflow:hidden}.ui-loader-verbose h1{font-size:1em;margin:0;text-align:center}.ui-loader .ui-icon-loading{background-color:#000;display:block;margin:0;width:2.75em;height:2.75em;padding:.0625em;-webkit-border-radius:2.25em;border-radius:2.25em}.ui-loader-verbose .ui-icon-loading{margin:0 auto .625em;filter:Alpha(Opacity=75);opacity:.75}.ui-loader-textonly{padding:.9375em;margin-left:-7.1875em}.ui-loader-textonly .ui-icon-loading{display:none}.ui-loader-fakefix{position:absolute}.ui-bar,.ui-body{position:relative;padding:.4em 1em;overflow:hidden;display:block;clear:both}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:1em;display:inline-block}.ui-header,.ui-footer{border-width:1px 0;border-style:solid;position:relative}.ui-header:empty,.ui-footer:empty{min-height:2.6875em}.ui-header .ui-title,.ui-footer .ui-title{font-size:1em;min-height:1.1em;text-align:center;display:block;margin:0 30%;padding:.7em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-footer .ui-title{margin:0 1em}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:1em}.ui-corner-all>.ui-header:first-child,.ui-corner-all>.ui-content:first-child,.ui-corner-all>.ui-footer:first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-corner-all>.ui-header:last-child,.ui-corner-all>.ui-content:last-child,.ui-corner-all>.ui-footer:last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-btn{font-size:16px;margin:.5em 0;padding:.7em 1em;display:block;position:relative;text-align:center;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui-btn-icon-notext,.ui-header button.ui-btn.ui-btn-icon-notext,.ui-footer button.ui-btn.ui-btn-icon-notext{padding:0;width:1.75em;height:1.75em;text-indent:-9999px;white-space:nowrap!important}.ui-mini{font-size:12.5px}.ui-mini .ui-btn{font-size:inherit}.ui-header .ui-btn,.ui-footer .ui-btn{font-size:12.5px;display:inline-block;vertical-align:middle}.ui-header .ui-controlgroup .ui-btn-icon-notext,.ui-footer .ui-controlgroup .ui-btn-icon-notext{font-size:12.5px}.ui-header .ui-btn-left,.ui-header .ui-btn-right{font-size:12.5px}.ui-mini.ui-btn-icon-notext,.ui-mini .ui-btn-icon-notext,.ui-header .ui-btn-icon-notext,.ui-footer .ui-btn-icon-notext{font-size:16px;padding:0}.ui-btn-inline{display:inline-block;vertical-align:middle;margin-right:.625em}.ui-btn-icon-left{padding-left:2.5em}.ui-btn-icon-right{padding-right:2.5em}.ui-btn-icon-top{padding-top:2.5em}.ui-btn-icon-bottom{padding-bottom:2.5em}.ui-header .ui-btn-icon-top,.ui-footer .ui-btn-icon-top,.ui-header .ui-btn-icon-bottom,.ui-footer .ui-btn-icon-bottom{padding-left:.3125em;padding-right:.3125em}.ui-btn-icon-left:after,.ui-btn-icon-right:after,.ui-btn-icon-top:after,.ui-btn-icon-bottom:after,.ui-btn-icon-notext:after{content:"";position:absolute;display:block;width:22px;height:22px}.ui-btn-icon-notext:after,.ui-btn-icon-left:after,.ui-btn-icon-right:after{top:50%;margin-top:-11px}.ui-btn-icon-left:after{left:.5625em}.ui-btn-icon-right:after{right:.5625em}.ui-mini.ui-btn-icon-left:after,.ui-mini .ui-btn-icon-left:after,.ui-header .ui-btn-icon-left:after,.ui-footer .ui-btn-icon-left:after{left:.37em}.ui-mini.ui-btn-icon-right:after,.ui-mini .ui-btn-icon-right:after,.ui-header .ui-btn-icon-right:after,.ui-footer .ui-btn-icon-right:after{right:.37em}.ui-btn-icon-notext:after,.ui-btn-icon-top:after,.ui-btn-icon-bottom:after{left:50%;margin-left:-11px}.ui-btn-icon-top:after{top:.5625em}.ui-btn-icon-bottom:after{top:auto;bottom:.5625em}.ui-header .ui-btn-left,.ui-header .ui-btn-right,.ui-btn-left>[class*=ui-],.ui-btn-right>[class*=ui-]{margin:0}.ui-btn-left,.ui-btn-right{position:absolute;top:.24em}.ui-btn-left{left:.4em}.ui-btn-right{right:.4em}.ui-btn-icon-notext.ui-btn-left{top:.3125em;left:.3125em}.ui-btn-icon-notext.ui-btn-right{top:.3125em;right:.3125em}button.ui-btn,.ui-controlgroup-controls button.ui-btn-icon-notext{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;width:100%}button.ui-btn-inline,.ui-header button.ui-btn,.ui-footer button.ui-btn{width:auto}button.ui-btn::-moz-focus-inner{border:0}button.ui-btn-icon-notext,.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;width:1.75em}.ui-mobile label,.ui-controlgroup-label{display:block;margin:0 0 .4em}.ui-hide-label>label,.ui-hide-label .ui-controlgroup-label,.ui-hide-label .ui-rangeslider label,.ui-hidden-accessible{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-screen-hidden{display:none!important}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-page-pre-in{opacity:0}.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.out{-webkit-animation-timing-function:ease-in;-webkit-animation-duration:225ms;-moz-animation-timing-function:ease-in;-moz-animation-duration:225ms;animation-timing-function:ease-in;animation-duration:225ms}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-moz-keyframes fadein{from{opacity:0}to{opacity:1}}@keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{opacity:1}to{opacity:0}}@-moz-keyframes fadeout{from{opacity:1}to{opacity:0}}@keyframes fadeout{from{opacity:1}to{opacity:0}}.fade.out{opacity:0;-webkit-animation-duration:125ms;-webkit-animation-name:fadeout;-moz-animation-duration:125ms;-moz-animation-name:fadeout;animation-duration:125ms;animation-name:fadeout}.fade.in{opacity:1;-webkit-animation-duration:225ms;-webkit-animation-name:fadein;-moz-animation-duration:225ms;-moz-animation-name:fadein;animation-duration:225ms;animation-name:fadein}.pop{-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);-webkit-animation-name:popin;-webkit-animation-duration:350ms;-moz-transform:scale(1);-moz-animation-name:popin;-moz-animation-duration:350ms;transform:scale(1);animation-name:popin;animation-duration:350ms;opacity:1}.pop.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms;opacity:0}.pop.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;animation-name:fadein}.pop.out.reverse{-webkit-transform:scale(.8);-webkit-animation-name:popout;-moz-transform:scale(.8);-moz-animation-name:popout;transform:scale(.8);animation-name:popout}@-webkit-keyframes popin{from{-webkit-transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes popin{from{-moz-transform:scale(.8);opacity:0}to{-moz-transform:scale(1);opacity:1}}@keyframes popin{from{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.8);opacity:0}}@-moz-keyframes popout{from{-moz-transform:scale(1);opacity:1}to{-moz-transform:scale(.8);opacity:0}}@keyframes popout{from{transform:scale(1);opacity:1}to{transform:scale(.8);opacity:0}}@-webkit-keyframes slideinfromright{from{-webkit-transform:translate3d(100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromright{from{-moz-transform:translateX(100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromright{from{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translate3d(-100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromleft{from{-moz-transform:translateX(-100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromleft{from{transform:translateX(-100%)}to{transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-100%,0,0)}}@-moz-keyframes slideouttoleft{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(-100%)}}@keyframes slideouttoleft{from{transform:translateX(0)}to{transform:translateX(-100%)}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(100%,0,0)}}@-moz-keyframes slideouttoright{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(100%)}}@keyframes slideouttoright{from{transform:translateX(0)}to{transform:translateX(100%)}}.slide.out,.slide.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.slide.out{-webkit-transform:translate3d(-100%,0,0);-webkit-animation-name:slideouttoleft;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;transform:translateX(-100%);animation-name:slideouttoleft}.slide.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromright;-moz-transform:translateX(0);-moz-animation-name:slideinfromright;transform:translateX(0);animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:slideouttoright;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;transform:translateX(100%);animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromleft;-moz-transform:translateX(0);-moz-animation-name:slideinfromleft;transform:translateX(0);animation-name:slideinfromleft}.slidefade.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft;-webkit-animation-duration:225ms;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;-moz-animation-duration:225ms;transform:translateX(-100%);animation-name:slideouttoleft;animation-duration:225ms}.slidefade.in{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidefade.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright;-webkit-animation-duration:200ms;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;-moz-animation-duration:200ms;transform:translateX(100%);animation-name:slideouttoright;animation-duration:200ms}.slidefade.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidedown.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfromtop;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfromtop;animation-duration:250ms}.slidedown.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slidedown.out.reverse{-webkit-transform:translateY(-100%);-webkit-animation-name:slideouttotop;-webkit-animation-duration:200ms;-moz-transform:translateY(-100%);-moz-animation-name:slideouttotop;-moz-animation-duration:200ms;transform:translateY(-100%);animation-name:slideouttotop;animation-duration:200ms}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfromtop{from{-moz-transform:translateY(-100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfromtop{from{transform:translateY(-100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-moz-keyframes slideouttotop{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(-100%)}}@keyframes slideouttotop{from{transform:translateY(0)}to{transform:translateY(-100%)}}.slideup.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfrombottom;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfrombottom;animation-duration:250ms}.slideup.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slideup.out.reverse{-webkit-transform:translateY(100%);-webkit-animation-name:slideouttobottom;-webkit-animation-duration:200ms;-moz-transform:translateY(100%);-moz-animation-name:slideouttobottom;-moz-animation-duration:200ms;transform:translateY(100%);animation-name:slideouttobottom;animation-duration:200ms}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfrombottom{from{-moz-transform:translateY(100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfrombottom{from{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-moz-keyframes slideouttobottom{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(100%)}}@keyframes slideouttobottom{from{transform:translateY(0)}to{transform:translateY(100%)}}.viewport-flip{-webkit-perspective:1000;-moz-perspective:1000;perspective:1000;position:absolute}.flip{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-moz-backface-visibility:hidden;-moz-transform:translateX(0);backface-visibility:hidden;transform:translateX(0)}.flip.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:175ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:175ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:175ms}.flip.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:225ms;-moz-animation-name:flipintoright;-moz-animation-duration:225ms;animation-name:flipintoright;animation-duration:225ms}.flip.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.flip.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.viewport-turn{-webkit-perspective:200px;-moz-perspective:200px;-ms-perspective:200px;perspective:200px;position:absolute}.turn{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-webkit-transform-origin:0;-moz-backface-visibility:hidden;-moz-transform:translateX(0);-moz-transform-origin:0;backface-visibility:hidden;transform:translateX(0);transform-origin:0}.turn.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:125ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:125ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:125ms}.turn.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:250ms;-moz-animation-name:flipintoright;-moz-animation-duration:250ms;animation-name:flipintoright;animation-duration:250ms}.turn.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.turn.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.flow{-webkit-transform-origin:50% 30%;-webkit-box-shadow:0 0 20px rgba(0,0,0,.4);-moz-transform-origin:50% 30%;-moz-box-shadow:0 0 20px rgba(0,0,0,.4);transform-origin:50% 30%;box-shadow:0 0 20px rgba(0,0,0,.4)}.ui-dialog.flow{-webkit-transform-origin:none;-webkit-box-shadow:none;-moz-transform-origin:none;-moz-box-shadow:none;transform-origin:none;box-shadow:none}.flow.out{-webkit-transform:translateX(-100%) scale(.7);-webkit-animation-name:flowouttoleft;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(-100%) scale(.7);-moz-animation-name:flowouttoleft;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(-100%) scale(.7);animation-name:flowouttoleft;animation-timing-function:ease;animation-duration:350ms}.flow.in{-webkit-transform:translateX(0) scale(1);-webkit-animation-name:flowinfromright;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(0) scale(1);-moz-animation-name:flowinfromright;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(0) scale(1);animation-name:flowinfromright;animation-timing-function:ease;animation-duration:350ms}.flow.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:flowouttoright;-moz-transform:translateX(100%);-moz-animation-name:flowouttoright;transform:translateX(100%);animation-name:flowouttoright}.flow.in.reverse{-webkit-animation-name:flowinfromleft;-moz-animation-name:flowinfromleft;animation-name:flowinfromleft}@-webkit-keyframes flowouttoleft{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(-100%) scale(.7)}}@-moz-keyframes flowouttoleft{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(-100%) scale(.7)}}@keyframes flowouttoleft{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(-100%) scale(.7)}}@-webkit-keyframes flowouttoright{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(100%) scale(.7)}}@-moz-keyframes flowouttoright{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(100%) scale(.7)}}@keyframes flowouttoright{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(100%) scale(.7)}}@-webkit-keyframes flowinfromleft{0%{-webkit-transform:translateX(-100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromleft{0%{-moz-transform:translateX(-100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromleft{0%{transform:translateX(-100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}@-webkit-keyframes flowinfromright{0%{-webkit-transform:translateX(100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromright{0%{-moz-transform:translateX(100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromright{0%{transform:translateX(100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}.ui-field-contain,.ui-mobile fieldset.ui-field-contain{display:block;position:relative;overflow:visible;clear:both;padding:.8em 0}.ui-field-contain>label~[class*=ui-],.ui-field-contain .ui-controlgroup-controls{margin:0}.ui-field-contain:last-child{border-bottom-width:0}@media (min-width:28em){.ui-field-contain,.ui-mobile fieldset.ui-field-contain{padding:0;margin:1em 0;border-bottom-width:0}.ui-field-contain:before,.ui-field-contain:after{content:"";display:table}.ui-field-contain:after{clear:both}.ui-field-contain>label,.ui-field-contain .ui-controlgroup-label,.ui-field-contain>.ui-rangeslider>label{float:left;width:20%;margin:.5em 2% 0 0}.ui-popup .ui-field-contain>label,.ui-popup .ui-field-contain .ui-controlgroup-label,.ui-popup .ui-field-contain>.ui-rangeslider>label{float:none;width:auto;margin:0 0 .4em}.ui-field-contain>label~[class*=ui-],.ui-field-contain .ui-controlgroup-controls{float:left;width:78%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-hide-label>label~[class*=ui-],.ui-hide-label .ui-controlgroup-controls,.ui-popup .ui-field-contain>label~[class*=ui-],.ui-popup .ui-field-contain .ui-controlgroup-controls{float:none;width:100%}.ui-field-contain>label~.ui-btn-inline{width:auto;margin-right:.625em}.ui-field-contain>label~.ui-btn-inline.ui-btn-icon-notext{width:1.75em}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d,.ui-grid-solo{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;min-height:1px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-block-a{clear:left}ul.ui-grid-a,ul.ui-grid-b,ul.ui-grid-c,ul.ui-grid-d,ul.ui-grid-solo,li.ui-block-a,li.ui-block-b,li.ui-block-c,li.ui-block-d,li.ui-block-e{margin-left:0;margin-right:0;padding:0;list-style:none}[class*=ui-block-]>button.ui-btn{margin-right:0;margin-left:0}[class*=ui-block-]>.ui-btn,[class*=ui-block-]>.ui-select,[class*=ui-block-]>.ui-checkbox,[class*=ui-block-]>.ui-radio,[class*=ui-block-]>button.ui-btn-inline,[class*=ui-block-]>button.ui-btn-icon-notext,.ui-header [class*=ui-block-]>button.ui-btn,.ui-footer [class*=ui-block-]>button.ui-btn{margin-right:.3125em;margin-left:.3125em}.ui-grid-a>.ui-block-a,.ui-grid-a>.ui-block-b{width:50%}.ui-grid-b>.ui-block-a,.ui-grid-b>.ui-block-b,.ui-grid-b>.ui-block-c{width:33.333%}.ui-grid-c>.ui-block-a,.ui-grid-c>.ui-block-b,.ui-grid-c>.ui-block-c,.ui-grid-c>.ui-block-d{width:25%}.ui-grid-d>.ui-block-a,.ui-grid-d>.ui-block-b,.ui-grid-d>.ui-block-c,.ui-grid-d>.ui-block-d,.ui-grid-d>.ui-block-e{width:20%}.ui-grid-solo>.ui-block-a{width:100%;float:none}@media (max-width:35em){.ui-responsive>.ui-block-a,.ui-responsive>.ui-block-b,.ui-responsive>.ui-block-c,.ui-responsive>.ui-block-d,.ui-responsive>.ui-block-e{width:100%;float:none}}.ui-header-fixed,.ui-footer-fixed{left:0;right:0;width:100%;position:fixed;z-index:1000}.ui-header-fixed{top:-1px;padding-top:1px}.ui-header-fixed.ui-fixed-hidden{top:0;padding-top:0}.ui-header-fixed .ui-btn-left,.ui-header-fixed .ui-btn-right{margin-top:1px}.ui-header-fixed.ui-fixed-hidden .ui-btn-left,.ui-header-fixed.ui-fixed-hidden .ui-btn-right{margin-top:0}.ui-footer-fixed{bottom:-1px;padding-bottom:1px}.ui-footer-fixed.ui-fixed-hidden{bottom:0;padding-bottom:0}.ui-header-fullscreen,.ui-footer-fullscreen{filter:Alpha(Opacity=90);opacity:.9}.ui-page-header-fixed{padding-top:2.8125em}.ui-page-footer-fixed{padding-bottom:2.8125em}.ui-page-header-fullscreen>.ui-content,.ui-page-footer-fullscreen>.ui-content{padding:0}.ui-fixed-hidden{position:absolute}.ui-footer-fixed.ui-fixed-hidden{display:none}.ui-page .ui-footer-fixed.ui-fixed-hidden{display:block}.ui-page-header-fullscreen .ui-fixed-hidden,.ui-page-footer-fullscreen .ui-fixed-hidden{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-header-fixed .ui-btn,.ui-footer-fixed .ui-btn{z-index:10}.ui-android-2x-fixed .ui-li-has-thumb{-webkit-transform:translate3d(0,0,0)}.ui-navbar{max-width:100%}.ui-navbar ul:before,.ui-navbar ul:after{content:"";display:table}.ui-navbar ul:after{clear:both}.ui-navbar ul{list-style:none;margin:0;padding:0;position:relative;display:block;border:0;max-width:100%;overflow:visible}.ui-navbar li .ui-btn{font-size:12.5px;display:block;margin:0;border-right-width:0}.ui-header .ui-navbar li button.ui-btn,.ui-footer .ui-navbar li button.ui-btn{margin:0;width:100%}.ui-navbar .ui-btn:focus{z-index:1}.ui-navbar li:last-child .ui-btn{margin-right:-4px}.ui-navbar li:last-child .ui-btn:after{margin-right:4px}.ui-content .ui-navbar li:last-child .ui-btn,.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn{border-right-width:1px;margin-right:0}.ui-content .ui-navbar li:last-child .ui-btn:after,.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn:after{margin-right:0}.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn{border-right-width:1px;margin-right:-1px}.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn:after{margin-right:1px}.ui-navbar .ui-grid-duo .ui-btn{border-top-width:0}.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn{border-top-width:1px}.ui-header .ui-navbar .ui-btn,.ui-footer .ui-navbar .ui-btn{border-top-width:0;border-bottom-width:0}.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn{border-top-width:0}.ui-header .ui-title~.ui-navbar .ui-btn,.ui-footer .ui-title~.ui-navbar .ui-btn,.ui-header .ui-navbar .ui-grid-duo .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-btn,.ui-header .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-footer .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-header .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn,.ui-footer .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn{border-top-width:1px}.ui-input-btn input{position:absolute;top:0;left:0;width:100%;height:100%;padding:0;border:0;outline:0;-webkit-border-radius:inherit;border-radius:inherit;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=0);opacity:.1;font-size:1px;text-indent:-9999px;z-index:2}.ui-input-btn.ui-state-disabled input{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-collapsible{margin:0 -1em}.ui-collapsible-inset,.ui-collapsible-set{margin:.5em 0}.ui-collapsible-heading{display:block;margin:0;padding:0;position:relative}.ui-collapsible-heading .ui-btn{text-align:left;margin:0;border-left-width:0;border-right-width:0}.ui-collapsible-heading .ui-btn-icon-top,.ui-collapsible-heading .ui-btn-icon-bottom{text-align:center}.ui-collapsible-inset .ui-collapsible-heading .ui-btn{border-right-width:1px;border-left-width:1px}.ui-collapsible-collapsed+.ui-collapsible:not(.ui-collapsible-inset)>.ui-collapsible-heading .ui-btn{border-top-width:0}.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:1px}.ui-collapsible-heading-status{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-collapsible-content{display:block;margin:0;padding:.5em 1em}.ui-collapsible-themed-content .ui-collapsible-content{border-left-width:0;border-right-width:0;border-top-width:0;border-bottom-width:1px;border-style:solid}.ui-collapsible-inset.ui-collapsible-themed-content .ui-collapsible-content{border-left-width:1px;border-right-width:1px}.ui-collapsible-inset .ui-collapsible-content{margin:0}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set>.ui-collapsible.ui-corner-all{-webkit-border-radius:0;border-radius:0}.ui-collapsible-heading,.ui-collapsible-heading>.ui-btn{-webkit-border-radius:inherit;border-radius:inherit}.ui-collapsible-set .ui-collapsible.ui-first-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-collapsible-content,.ui-collapsible-set .ui-collapsible.ui-last-child{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-collapsible-themed-content:not(.ui-collapsible-collapsed)>.ui-collapsible-heading{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui-collapsible-set .ui-collapsible{margin:-1px -1em 0}.ui-collapsible-set .ui-collapsible-inset{margin:-1px 0 0}.ui-collapsible-set .ui-collapsible.ui-first-child{margin-top:0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0}.ui-field-contain .ui-controlgroup,.ui-field-contain fieldset.ui-controlgroup{margin:0}.ui-mini .ui-controlgroup-label{font-size:16px}.ui-controlgroup.ui-mini .ui-btn-icon-notext,.ui-controlgroup .ui-mini.ui-btn-icon-notext{font-size:inherit}.ui-controlgroup-controls .ui-btn,.ui-controlgroup-controls .ui-checkbox,.ui-controlgroup-controls .ui-radio,.ui-controlgroup-controls .ui-select{margin:0}.ui-controlgroup-controls .ui-btn:focus,.ui-controlgroup-controls .ui-btn.ui-focus{z-index:1}.ui-controlgroup-controls li{list-style:none}.ui-controlgroup-horizontal .ui-controlgroup-controls{display:inline-block;vertical-align:middle}.ui-controlgroup-horizontal .ui-controlgroup-controls:before,.ui-controlgroup-horizontal .ui-controlgroup-controls:after{content:"";display:table}.ui-controlgroup-horizontal .ui-controlgroup-controls:after{clear:both}.ui-controlgroup-horizontal .ui-controlgroup-controls>.ui-btn,.ui-controlgroup-horizontal .ui-controlgroup-controls li>.ui-btn,.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-checkbox,.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-radio,.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-select{float:left;clear:none}.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn,.ui-controlgroup-controls .ui-btn-icon-notext{width:auto}.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn-icon-notext,.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn-icon-notext{width:1.5em}.ui-controlgroup-controls .ui-btn-icon-notext{height:auto;padding:.7em 1em}.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn{border-bottom-width:0}.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn.ui-last-child{border-bottom-width:1px}.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn{border-right-width:0}.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn.ui-last-child{border-right-width:1px}.ui-controlgroup-controls .ui-btn-corner-all,.ui-controlgroup-controls .ui-btn.ui-corner-all{-webkit-border-radius:0;border-radius:0}.ui-controlgroup-controls,.ui-controlgroup-controls .ui-radio,.ui-controlgroup-controls .ui-checkbox,.ui-controlgroup-controls .ui-select,.ui-controlgroup-controls li{-webkit-border-radius:inherit;border-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-last-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup-controls a.ui-shadow:not(:focus),.ui-controlgroup-controls button.ui-shadow:not(:focus),.ui-controlgroup-controls div.ui-shadow:not(.ui-focus){-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.ui-controlgroup-label legend{max-width:100%}.ui-controlgroup-controls>label{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-dialog{background:none!important}.ui-dialog-contain{width:92.5%;max-width:500px;margin:10% auto 1em;padding:0;position:relative;top:-1em}.ui-dialog-contain>.ui-header,.ui-dialog-contain>.ui-content,.ui-dialog-contain>.ui-footer{display:block;position:relative;width:auto;margin:0}.ui-dialog-contain>.ui-header{overflow:hidden;z-index:10;padding:0;border-top-width:0}.ui-dialog-contain>.ui-footer{z-index:10;padding:0 1em;border-bottom-width:0}.ui-popup-open .ui-header-fixed,.ui-popup-open .ui-footer-fixed{position:absolute!important}.ui-popup-screen{background-image:url("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==");top:0;left:0;right:0;bottom:1px;position:absolute;filter:Alpha(Opacity=0);opacity:0;z-index:1099}.ui-popup-screen.in{opacity:.5;filter:Alpha(Opacity=50)}.ui-popup-screen.out{opacity:0;filter:Alpha(Opacity=0)}.ui-popup-container{z-index:1100;display:inline-block;position:absolute;padding:0;outline:0}.ui-popup{position:relative}.ui-popup.ui-body-inherit{border-width:1px;border-style:solid}.ui-popup-hidden{left:0;top:0;position:absolute!important;visibility:hidden}.ui-popup-truncate{height:1px;width:1px;margin:-1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-popup.ui-content,.ui-popup .ui-content{overflow:visible}.ui-popup>.ui-header{border-top-width:0}.ui-popup>.ui-footer{border-bottom-width:0}.ui-popup>p,.ui-popup>h1,.ui-popup>h2,.ui-popup>h3,.ui-popup>h4,.ui-popup>h5,.ui-popup>h6{margin:.5em .4375em}.ui-popup>span{display:block;margin:.5em .4375em}.ui-popup-container .ui-content>p,.ui-popup-container .ui-content>h1,.ui-popup-container .ui-content>h2,.ui-popup-container .ui-content>h3,.ui-popup-container .ui-content>h4,.ui-popup-container .ui-content>h5,.ui-popup-container .ui-content>h6{margin:.5em 0}.ui-popup-container .ui-content>span{margin:0}.ui-popup-container .ui-content>p:first-child,.ui-popup-container .ui-content>h1:first-child,.ui-popup-container .ui-content>h2:first-child,.ui-popup-container .ui-content>h3:first-child,.ui-popup-container .ui-content>h4:first-child,.ui-popup-container .ui-content>h5:first-child,.ui-popup-container .ui-content>h6:first-child{margin-top:0}.ui-popup-container .ui-content>p:last-child,.ui-popup-container .ui-content>h1:last-child,.ui-popup-container .ui-content>h2:last-child,.ui-popup-container .ui-content>h3:last-child,.ui-popup-container .ui-content>h4:last-child,.ui-popup-container .ui-content>h5:last-child,.ui-popup-container .ui-content>h6:last-child{margin-bottom:0}.ui-popup>img{max-width:100%;max-height:100%;vertical-align:middle}.ui-popup:not(.ui-content)>img:only-child,.ui-popup:not(.ui-content)>.ui-btn-left:first-child+img:last-child,.ui-popup:not(.ui-content)>.ui-btn-right:first-child+img:last-child{-webkit-border-radius:inherit;border-radius:inherit}.ui-popup iframe{vertical-align:middle}.ui-popup>.ui-btn-left,.ui-popup>.ui-btn-right{position:absolute;top:-11px;margin:0;z-index:1101}.ui-popup>.ui-btn-left{left:-11px}.ui-popup>.ui-btn-right{right:-11px}.ui-popup-arrow-container{width:20px;height:20px}.ui-popup-arrow-container.ui-popup-arrow-l{left:-10px;clip:rect(-1000px,10px,2000px,-1000px)}.ui-popup-arrow-container.ui-popup-arrow-t{top:-10px;clip:rect(-1000px,2000px,10px,-1000px)}.ui-popup-arrow-container.ui-popup-arrow-r{right:-10px;clip:rect(-1000px,2000px,2000px,10px)}.ui-popup-arrow-container.ui-popup-arrow-b{bottom:-10px;clip:rect(10px,2000px,1000px,-1000px)}.ui-popup-arrow-container .ui-popup-arrow{width:28.284271247px;height:28.284271247px;border-width:1px;border-style:solid}.ui-popup-arrow-container.ui-popup-arrow-t .ui-popup-arrow{left:-4.142135623px;top:5.857864376px}.ui-popup-arrow-container.ui-popup-arrow-b .ui-popup-arrow{left:-4.142135623px;top:-14.142135623px}.ui-popup-arrow-container.ui-popup-arrow-l .ui-popup-arrow{left:5.857864376px;top:-4.142135623px}.ui-popup-arrow-container.ui-popup-arrow-r .ui-popup-arrow{left:-14.142135623px;top:-4.142135623px}.ui-popup-arrow-container.ui-popup-arrow-t.ie .ui-popup-arrow{margin-left:-5.857864376269049px;margin-top:-7.0710678118654755px}.ui-popup-arrow-container.ui-popup-arrow-b.ie .ui-popup-arrow{margin-left:-5.857864376269049px;margin-top:-4.142135623730951px}.ui-popup-arrow-container.ui-popup-arrow-l.ie .ui-popup-arrow{margin-left:-7.0710678118654755px;margin-top:-5.857864376269049px}.ui-popup-arrow-container.ui-popup-arrow-r.ie .ui-popup-arrow{margin-left:-4.142135623730951px;margin-top:-5.857864376269049px}.ui-popup>.ui-popup-arrow-guide{position:absolute;left:0;right:0;top:0;bottom:0;visibility:hidden}.ui-popup-arrow-container{position:absolute}.ui-popup-arrow{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);position:absolute;overflow:hidden;box-sizing:border-box}.ui-popup-arrow-container.ie .ui-popup-arrow{-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.7071067811865474, M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865474, SizingMethod='auto expand')";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.7071067811865474, M12=-.7071067811865477, M21=.7071067811865477, M22=.7071067811865474, SizingMethod='auto expand')}.ui-checkbox,.ui-radio{margin:.5em 0;position:relative}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin:0;text-align:left;white-space:normal;z-index:2}.ui-controlgroup .ui-checkbox .ui-btn.ui-focus,.ui-controlgroup .ui-radio .ui-btn.ui-focus{z-index:3}.ui-checkbox .ui-btn-icon-top,.ui-radio .ui-btn-icon-top,.ui-checkbox .ui-btn-icon-bottom,.ui-radio .ui-btn-icon-bottom{text-align:center}.ui-controlgroup-horizontal .ui-checkbox .ui-btn:after,.ui-controlgroup-horizontal .ui-radio .ui-btn:after{content:none;display:none}.ui-checkbox input,.ui-radio input{position:absolute;left:.466em;top:50%;width:22px;height:22px;margin:-11px 0 0 0;outline:0!important;z-index:1}.ui-controlgroup-horizontal .ui-checkbox input,.ui-controlgroup-horizontal .ui-radio input{left:50%;margin-left:-9px}.ui-checkbox input:disabled,.ui-radio input:disabled{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-select{margin-top:.5em;margin-bottom:.5em;position:relative}.ui-select>select{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-select .ui-btn{margin:0;opacity:1}.ui-select .ui-btn select{position:absolute;top:0;left:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;outline:0;-webkit-border-radius:inherit;border-radius:inherit;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;filter:Alpha(Opacity=0);opacity:0;z-index:2}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-state-disabled select{display:none}.ui-select span.ui-state-disabled{filter:Alpha(Opacity=100);opacity:1}.ui-select .ui-btn.ui-select-nativeonly{border-radius:0;border:0}.ui-select .ui-btn.ui-select-nativeonly select{opacity:1;text-indent:0;display:block}.ui-select .ui-li-has-count.ui-btn{padding-right:2.8125em}.ui-select .ui-li-has-count.ui-btn-icon-right{padding-right:4.6875em}.ui-select .ui-btn-icon-right .ui-li-count{right:3.2em}.ui-select .ui-btn>span:not(.ui-li-count){display:block;text-overflow:ellipsis;overflow:hidden!important;white-space:nowrap}.ui-selectmenu.ui-popup{min-width:11em}.ui-selectmenu .ui-dialog-contain{overflow:hidden}.ui-selectmenu .ui-header{margin:0;padding:0;border-width:0}.ui-selectmenu.ui-dialog .ui-header{z-index:1;position:relative}.ui-selectmenu.ui-popup .ui-header{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui-selectmenu.ui-popup .ui-header h1:after{content:'.';visibility:hidden}.ui-selectmenu .ui-header .ui-title{margin:0 2.875em}.ui-selectmenu.ui-dialog .ui-content{overflow:visible;z-index:1}.ui-selectmenu .ui-selectmenu-list{margin:0;-webkit-border-radius:inherit;border-radius:inherit}.ui-header:not(.ui-screen-hidden)+.ui-selectmenu-list{-webkit-border-top-right-radius:0;border-top-right-radius:0;-webkit-border-top-left-radius:0;border-top-left-radius:0}.ui-header.ui-screen-hidden+.ui-selectmenu-list li.ui-first-child .ui-btn{border-top-width:0}.ui-selectmenu .ui-selectmenu-list li.ui-last-child .ui-btn{border-bottom-width:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-selectmenu .ui-selectmenu-placeholder{display:none}.ui-listview,.ui-listview>li{margin:0;padding:0;list-style:none}.ui-content .ui-listview,.ui-panel-inner>.ui-listview{margin:-1em}.ui-content .ui-listview-inset,.ui-panel-inner>.ui-listview-inset{margin:1em 0}.ui-collapsible-content>.ui-listview{margin:-.5em -1em}.ui-collapsible-content>.ui-listview-inset{margin:.5em 0}.ui-listview>li{display:block;position:relative;overflow:visible}.ui-listview>.ui-li-static,.ui-listview>.ui-li-divider,.ui-listview>li>a.ui-btn{margin:0;display:block;position:relative;text-align:left;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-listview>li>.ui-btn:focus{z-index:1}.ui-listview>.ui-li-static,.ui-listview>.ui-li-divider,.ui-listview>li>a.ui-btn{border-width:1px 0 0;border-style:solid}.ui-listview-inset>.ui-li-static,.ui-listview-inset>.ui-li-divider,.ui-listview-inset>li>a.ui-btn{border-right-width:1px;border-left-width:1px}.ui-listview>.ui-li-static.ui-last-child,.ui-listview>.ui-li-divider.ui-last-child,.ui-listview>li.ui-last-child>a.ui-btn{border-bottom-width:1px}.ui-collapsible-content>.ui-listview:not(.ui-listview-inset)>li.ui-first-child,.ui-collapsible-content>.ui-listview:not(.ui-listview-inset)>li.ui-first-child>a.ui-btn{border-top-width:0}.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset)>li.ui-last-child,.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset)>li.ui-last-child>a.ui-btn{border-bottom-width:0}.ui-listview>li.ui-first-child,.ui-listview>li.ui-first-child>a.ui-btn{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>li.ui-last-child,.ui-listview>li.ui-last-child>a.ui-btn{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-listview>li.ui-li-has-alt>a.ui-btn{-webkit-border-top-right-radius:0;border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.ui-listview>li.ui-first-child>a.ui-btn+a.ui-btn{-webkit-border-top-left-radius:0;border-top-left-radius:0;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-listview>li.ui-last-child>a.ui-btn+a.ui-btn{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-listview>li.ui-first-child img:first-child:not(.ui-li-icon){-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>li.ui-last-child img:first-child:not(.ui-li-icon){-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-collapsible-content>.ui-listview:not(.ui-listview-inset){-webkit-border-radius:inherit;border-radius:inherit}.ui-listview>.ui-li-static{padding:.7em 1em}.ui-listview>.ui-li-divider{padding:.5em 1.143em;font-size:14px;font-weight:700;cursor:default;outline:0}.ui-listview>.ui-li-has-count>.ui-btn,.ui-listview>.ui-li-static.ui-li-has-count,.ui-listview>.ui-li-divider.ui-li-has-count{padding-right:2.8125em}.ui-listview>.ui-li-has-count>.ui-btn-icon-right{padding-right:4.6875em}.ui-listview>.ui-li-has-thumb>.ui-btn,.ui-listview>.ui-li-static.ui-li-has-thumb{min-height:3.625em;padding-left:6.25em}.ui-listview>.ui-li-has-icon>.ui-btn,.ui-listview>.ui-li-static.ui-li-has-icon{min-height:1.25em;padding-left:2.5em}.ui-li-count{position:absolute;font-size:12.5px;font-weight:700;text-align:center;border-width:1px;border-style:solid;padding:0 .48em;line-height:1.6em;min-height:1.6em;min-width:.64em;right:.8em;top:50%;margin-top:-.88em}.ui-listview .ui-btn-icon-right .ui-li-count{right:3.2em}.ui-listview .ui-li-has-thumb>img:first-child,.ui-listview .ui-li-has-thumb>.ui-btn>img:first-child,.ui-listview .ui-li-has-thumb .ui-li-thumb{position:absolute;left:0;top:0;max-height:5em;max-width:5em}.ui-listview>.ui-li-has-icon>img:first-child,.ui-listview>.ui-li-has-icon>.ui-btn>img:first-child{position:absolute;left:.625em;top:.9em;max-height:1em;max-width:1em}.ui-listview>li h1,.ui-listview>li h2,.ui-listview>li h3,.ui-listview>li h4,.ui-listview>li h5,.ui-listview>li h6{font-size:1em;font-weight:700;display:block;margin:.45em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-listview>li p{font-size:.75em;font-weight:400;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-listview .ui-li-aside{position:absolute;top:1em;right:3.333em;margin:0;text-align:right}.ui-listview>li.ui-li-has-alt>.ui-btn{margin-right:2.5em;border-right-width:0}.ui-listview>li.ui-li-has-alt>.ui-btn+.ui-btn{position:absolute;width:2.5em;height:100%;min-height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-left-width:1px;top:0;right:0;margin:0;padding:0;z-index:2}.ui-listview-inset>li.ui-li-has-alt>.ui-btn+.ui-btn{border-right-width:1px}.ui-listview>li.ui-li-has-alt>.ui-btn+.ui-btn:focus{z-index:3}ol.ui-listview,ol.ui-listview>.ui-li-divider{counter-reset:listnumbering}ol.ui-listview>li>.ui-btn,ol.ui-listview>li.ui-li-static{vertical-align:middle}ol.ui-listview>li>.ui-btn:first-child:before,ol.ui-listview>li.ui-li-static:before,ol.ui-listview>li.ui-field-contain>label:before,ol.ui-listview>li.ui-field-contain>.ui-controlgroup-label:before{display:inline-block;font-size:.9em;font-weight:400;padding-right:.3em;min-width:1.4em;line-height:1.5;vertical-align:middle;counter-increment:listnumbering;content:counter(listnumbering) "."}ol.ui-listview>li.ui-field-contain:before{content:none;display:none}ol.ui-listview>li h1:first-child,ol.ui-listview>li h2:first-child,ol.ui-listview>li h3:first-child,ol.ui-listview>li h4:first-child,ol.ui-listview>li h5:first-child,ol.ui-listview>li h6:first-child,ol.ui-listview>li p:first-child,ol.ui-listview>li img:first-child+*{display:inline-block;vertical-align:middle}ol.ui-listview>li h1:first-child~*,ol.ui-listview>li h2:first-child~*,ol.ui-listview>li h3:first-child~*,ol.ui-listview>li h4:first-child~*,ol.ui-listview>li h5:first-child~*,ol.ui-listview>li h6:first-child~*,ol.ui-listview>li p:first-child~*,ol.ui-listview>li img:first-child+*~*{margin-top:0;text-indent:2.04em}html .ui-filterable+.ui-listview,html .ui-filterable.ui-listview{margin-top:.5em}.ui-collapsible-content>form.ui-filterable{margin-top:-.5em}.ui-collapsible-content>.ui-input-search.ui-filterable{margin-top:0}.ui-collapsible-content>.ui-filterable+.ui-listview:not(.ui-listview-inset)>li.ui-first-child,.ui-collapsible-content>.ui-filterable+.ui-listview:not(.ui-listview-inset)>li.ui-first-child>a.ui-btn,.ui-collapsible-content>.ui-filterable.ui-listview:not(.ui-listview-inset)>li.ui-first-child,.ui-collapsible-content>.ui-filterable.ui-listview:not(.ui-listview-inset)>li.ui-first-child>a.ui-btn{border-top-width:1px}div.ui-slider{height:30px;margin:.5em 0;padding:0;-ms-touch-action:pan-y pinch-zoom double-tap-zoom}div.ui-slider:before,div.ui-slider:after{content:"";display:table}div.ui-slider:after{clear:both}input.ui-slider-input{display:block;float:left;font-size:14px;font-weight:700;margin:0;padding:4px;width:40px;height:20px;line-height:20px;border-width:1px;border-style:solid;outline:0;text-align:center;vertical-align:text-bottom;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.ui-slider-input::-webkit-outer-spin-button,.ui-slider-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ui-slider-track{position:relative;overflow:visible;border-width:1px;border-style:solid;height:15px;margin:0 15px 0 68px;top:6px}.ui-slider-track.ui-mini{height:12px;top:8px}.ui-slider-track .ui-slider-bg{height:100%}.ui-slider-track .ui-btn.ui-slider-handle{position:absolute;z-index:1;top:50%;width:28px;height:28px;margin:-15px 0 0 -15px;outline:0;padding:0}.ui-slider-track.ui-mini .ui-slider-handle{height:14px;width:14px;margin:-8px 0 0 -8px}select.ui-slider-switch{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}div.ui-slider-switch{display:inline-block;height:32px;width:5.8em;top:0}div.ui-slider-switch:before,div.ui-slider-switch:after{display:none;clear:none}div.ui-slider-switch.ui-mini{height:29px;top:0}.ui-slider-inneroffset{margin:0 16px;position:relative;z-index:1}.ui-slider-switch.ui-mini .ui-slider-inneroffset{margin:0 15px 0 14px}.ui-slider-switch .ui-btn.ui-slider-handle{margin:1px 0 0 -15px}.ui-slider-switch.ui-mini .ui-slider-handle{width:25px;height:25px;margin:1px 0 0 -13px;padding:0}.ui-slider-handle-snapping{-webkit-transition:left 70ms linear;-moz-transition:left 70ms linear;transition:left 70ms linear}.ui-slider-switch .ui-slider-label{position:absolute;text-align:center;width:100%;overflow:hidden;font-size:16px;top:0;line-height:2;min-height:100%;white-space:nowrap;cursor:pointer}.ui-slider-switch.ui-mini .ui-slider-label{font-size:14px}.ui-slider-switch .ui-slider-label-a{z-index:1;left:0;text-indent:-1.5em}.ui-slider-switch .ui-slider-label-b{z-index:0;right:0;text-indent:1.5em}.ui-slider-track .ui-slider-bg,.ui-slider-switch .ui-slider-label,.ui-slider-switch .ui-slider-inneroffset,.ui-slider-handle{-webkit-border-radius:inherit;border-radius:inherit}.ui-field-contain div.ui-slider-switch{margin:0}.ui-field-contain div.ui-slider-switch,.ui-field-contain.ui-hide-label div.ui-slider-switch,html .ui-popup .ui-field-contain div.ui-slider-switch{display:inline-block;width:5.8em}.ui-slider-popup{width:64px;height:64px;font-size:36px;padding-top:14px;opacity:.8}.ui-slider-popup{position:absolute!important;text-align:center;z-index:100}.ui-slider-track .ui-btn.ui-slider-handle{font-size:.9em;line-height:30px}.ui-rangeslider{margin:.5em 0}.ui-rangeslider:before,.ui-rangeslider:after{content:"";display:table}.ui-rangeslider:after{clear:both}.ui-rangeslider .ui-slider-input.ui-rangeslider-last{float:right}.ui-rangeslider .ui-rangeslider-sliders{position:relative;overflow:visible;height:30px;margin:0 68px}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track{position:absolute;top:6px;right:0;left:0;margin:0}.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track{top:8px}.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg{display:none}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{background-color:transparent;background:0;border-width:0;height:0}html >body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{height:15px;border-width:1px}html >body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child{height:12px}div.ui-rangeslider label{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-field-contain .ui-rangeslider input.ui-slider-input,.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders{margin-top:0;margin-bottom:0}.ui-input-text,.ui-input-search{margin:.5em 0;border-width:1px;border-style:solid}.ui-mini{margin:.446em}.ui-input-text input,.ui-input-search input,textarea.ui-input-text{padding:.4em;line-height:1.4em;display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;outline:0}.ui-input-text input,.ui-input-search input{margin:0;min-height:2.2em;text-align:left;border:0;background:transparent none;-webkit-appearance:none;-webkit-border-radius:inherit;border-radius:inherit}textarea.ui-input-text{overflow:auto;resize:vertical}.ui-mini .ui-input-text input,.ui-mini .ui-input-search input,.ui-input-text.ui-mini input,.ui-input-search.ui-mini input,.ui-mini textarea.ui-input-text,textarea.ui-mini{font-size:14px}.ui-mini textarea.ui-input-text,textarea.ui-mini{margin:.446em 0}.ui-input-has-clear,.ui-input-search{position:relative}.ui-input-has-clear{padding-right:2.375em}.ui-mini.ui-input-has-clear{padding-right:2.923em}.ui-input-has-clear input{padding-right:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.ui-input-search input{padding-left:1.75em}.ui-input-search:after{position:absolute;left:.3125em;top:50%;margin-top:-7px;content:"";background-position:center center;background-repeat:no-repeat;width:14px;height:14px;filter:Alpha(Opacity=50);opacity:.5}.ui-input-search.ui-input-has-clear .ui-btn.ui-input-clear,.ui-input-text.ui-input-has-clear .ui-btn.ui-input-clear{position:absolute;right:0;top:50%;margin:-14px .3125em 0;border:0;background-color:transparent}.ui-input-search .ui-input-clear-hidden,.ui-input-text .ui-input-clear-hidden{display:none}.ui-input-text input::-moz-placeholder,.ui-input-search input::-moz-placeholder,textarea.ui-input-text::-moz-placeholder{color:#aaa}.ui-input-text input:-ms-input-placeholder,.ui-input-search input:-ms-input-placeholder,textarea.ui-input-text:-ms-input-placeholder{color:#aaa}.ui-input-text input[type=number]::-webkit-outer-spin-button{margin:0}.ui-input-text input::-ms-clear,.ui-input-search input::-ms-clear{display:none}.ui-input-text input:focus,.ui-input-search input:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}textarea.ui-input-text.ui-textinput-autogrow{overflow:hidden}.ui-textinput-autogrow-resize{-webkit-transition:height .25s;-o-transition:height .25s;-moz-transition:height .25s;transition:height .25s}.ui-flipswitch{display:inline-block;vertical-align:middle;width:5.875em;height:1.875em;border-width:1px;border-style:solid;margin:.5em 0;overflow:hidden;-webkit-transition-property:padding,width,background-color,color,border-color;-moz-transition-property:padding,width,background-color,color,border-color;-o-transition-property:padding,width,background-color,color,border-color;transition-property:padding,width,background-color,color,border-color;-webkit-transition-duration:100ms;-moz-transition-duration:100ms;-o-transition-duration:100ms;transition-duration:100ms;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.ui-flipswitch.ui-flipswitch-active{padding-left:4em;width:1.875em}.ui-flipswitch-input{position:absolute;height:1px;width:1px;margin:-1px;overflow:hidden;clip:rect(1px,1px,1px,1px);border:0;outline:0;filter:Alpha(Opacity=0);opacity:0}.ui-flipswitch .ui-btn.ui-flipswitch-on,.ui-flipswitch .ui-flipswitch-off{float:left;height:1.75em;margin:.0625em;line-height:1.65em}.ui-flipswitch .ui-btn.ui-flipswitch-on{width:1.75em;padding:0;text-indent:-2.6em;text-align:left;border-width:1px;border-style:solid;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:inherit;overflow:visible;color:inherit;text-shadow:inherit}.ui-flipswitch .ui-flipswitch-off{padding:1px;text-indent:1em}html .ui-field-contain>label+.ui-flipswitch,html .ui-popup .ui-field-contain>label+.ui-flipswitch{display:inline-block;width:5.875em;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.ui-field-contain .ui-flipswitch.ui-flipswitch-active,.ui-popup .ui-field-contain .ui-flipswitch.ui-flipswitch-active{width:1.875em}.ui-table{border:0;border-collapse:collapse;padding:0;width:100%}.ui-table th,.ui-table td{line-height:1.5em;text-align:left;padding:.4em .5em;vertical-align:top}.ui-table th .ui-btn,.ui-table td .ui-btn{line-height:normal}.ui-table th{font-weight:700}.ui-table caption{text-align:left;margin-bottom:1.4em;opacity:.5}.ui-table-columntoggle-btn{float:right;margin-bottom:.8em}.ui-table-columntoggle-popup fieldset{margin:0}.ui-table-columntoggle{clear:both}@media only all{th.ui-table-priority-6,td.ui-table-priority-6,th.ui-table-priority-5,td.ui-table-priority-5,th.ui-table-priority-4,td.ui-table-priority-4,th.ui-table-priority-3,td.ui-table-priority-3,th.ui-table-priority-2,td.ui-table-priority-2,th.ui-table-priority-1,td.ui-table-priority-1{display:none}}@media screen and (min-width:20em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-1,.ui-table-columntoggle.ui-responsive td.ui-table-priority-1{display:table-cell}}@media screen and (min-width:30em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-2,.ui-table-columntoggle.ui-responsive td.ui-table-priority-2{display:table-cell}}@media screen and (min-width:40em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-3,.ui-table-columntoggle.ui-responsive td.ui-table-priority-3{display:table-cell}}@media screen and (min-width:50em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-4,.ui-table-columntoggle.ui-responsive td.ui-table-priority-4{display:table-cell}}@media screen and (min-width:60em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-5,.ui-table-columntoggle.ui-responsive td.ui-table-priority-5{display:table-cell}}@media screen and (min-width:70em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-6,.ui-table-columntoggle.ui-responsive td.ui-table-priority-6{display:table-cell}}.ui-table-columntoggle th.ui-table-cell-hidden,.ui-table-columntoggle td.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden{display:none}.ui-table-columntoggle th.ui-table-cell-visible,.ui-table-columntoggle td.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible{display:table-cell}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{display:none}@media only all{.ui-table-reflow thead td,.ui-table-reflow thead th{display:none}.ui-table-reflow td,.ui-table-reflow th{text-align:left;display:block}.ui-table-reflow tbody th{margin-top:3em}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{padding:.4em;min-width:30%;display:inline-block;margin:-.4em 1em -.4em -.4em}.ui-table-reflow th .ui-table-cell-label-top,.ui-table-reflow td .ui-table-cell-label-top{display:block;padding:.4em 0;margin:.4em 0;text-transform:uppercase;font-size:.9em;font-weight:400}}@media (min-width:35em){.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th,.ui-table-reflow.ui-responsive tbody th,.ui-table-reflow.ui-responsive tbody td,.ui-table-reflow.ui-responsive thead td,.ui-table-reflow.ui-responsive thead th{display:table-cell;margin:0}.ui-table-reflow.ui-responsive td .ui-table-cell-label,.ui-table-reflow.ui-responsive th .ui-table-cell-label{display:none}}@media (max-width:35em){.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;clear:left}}.ui-panel{width:17em;min-height:100%;max-height:none;border-width:0;position:absolute;top:0;display:block}.ui-panel-closed{width:0;max-height:100%;overflow:hidden;visibility:hidden;left:0;clip:rect(1px,1px,1px,1px)}.ui-panel-fixed{position:fixed;bottom:-1px;padding-bottom:1px}.ui-panel-display-reveal{z-index:1}.ui-panel-display-push{z-index:999}.ui-panel-display-overlay{z-index:1001}.ui-panel-inner{padding:1em}.ui-panel-page-container{overflow-x:visible}.ui-panel-page-container-themed .ui-page-active{background:0}.ui-panel-wrapper{position:relative;min-height:inherit;border:0;overflow-x:hidden;z-index:999}.ui-panel-fixed-toolbar{overflow-x:hidden}.ui-panel-dismiss{position:absolute;top:0;left:0;right:0;height:100%;z-index:1002;display:none}.ui-panel-dismiss-open{display:block}.ui-panel-animate{-webkit-transition:-webkit-transform 300ms ease;-webkit-transition-duration:300ms;-moz-transition:-moz-transform 300ms ease;transition:transform 300ms ease}@media screen and (max-device-width:768px){.ui-page-header-fixed .ui-panel-animate.ui-panel-wrapper,.ui-page-footer-fixed .ui-panel-animate.ui-panel-wrapper,.ui-panel-animate.ui-panel-fixed-toolbar{-ms-transition:none}.ui-panel-animate.ui-panel-fixed-toolbar{-ms-transition:-ms-transform 1ms;-ms-transform:rotate(0deg)}}.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal){-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0)}.ui-panel-position-left{left:-17em}.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-left.ui-panel-display-push{left:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-position-left.ui-panel-display-reveal,.ui-panel-open.ui-panel-position-left{left:0}.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-overlay,.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-position-right{right:-17em}.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-right.ui-panel-display-push{right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-position-right.ui-panel-display-reveal,.ui-panel-position-right.ui-panel-open{right:0}.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-overlay,.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-page-content-position-left{left:17em;right:-17em}.ui-panel-animate.ui-panel-page-content-position-left{left:0;right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-page-content-position-right{left:-17em;right:17em}.ui-panel-animate.ui-panel-page-content-position-right{left:0;right:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-dismiss-open.ui-panel-dismiss-position-left{left:17em}.ui-panel-dismiss-open.ui-panel-dismiss-position-right{right:17em}.ui-panel-display-reveal{-webkit-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);box-shadow:inset -5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-reveal{-webkit-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);box-shadow:inset 5px 0 5px rgba(0,0,0,.15)}.ui-panel-display-overlay{-webkit-box-shadow:5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:5px 0 5px rgba(0,0,0,.15);box-shadow:5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-overlay{-webkit-box-shadow:-5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:-5px 0 5px rgba(0,0,0,.15);box-shadow:-5px 0 5px rgba(0,0,0,.15)}.ui-panel-open.ui-panel-position-left.ui-panel-display-push{border-right-width:1px;margin-right:-1px}.ui-panel-page-content-position-left.ui-panel-page-content-display-push{margin-left:1px;width:auto}.ui-panel-open.ui-panel-position-right.ui-panel-display-push{border-left-width:1px;margin-left:-1px}.ui-panel-page-content-position-right.ui-panel-page-content-display-push{margin-right:1px;width:auto}@media (min-width:55em){.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-left{margin-right:17em}.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-right{margin-left:17em}.ui-responsive-panel .ui-panel-page-content-open{width:auto}.ui-responsive-panel .ui-panel-dismiss-display-push,.ui-responsive-panel.ui-page-active~.ui-panel-dismiss-display-push{display:none}}.ui-tabs{position:relative;padding:.2em}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile-1.4.5.min.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile-1.4.5.min.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile-1.4.5.min.js	(revision 101)
@@ -0,0 +1,10 @@
+/*! jQuery Mobile 1.4.5 | Git HEADhash: 68e55e7 <> 2014-10-31T17:33:30Z | (c) 2010, 2014 jQuery Foundation, Inc. | jquery.org/license */
+
+!function(a,b,c){"function"==typeof define&&define.amd?define(["jquery"],function(d){return c(d,a,b),d.mobile}):c(a.jQuery,a,b)}(this,document,function(a,b,c){!function(a){a.mobile={}}(a),function(a,b){function d(b,c){var d,f,g,h=b.nodeName.toLowerCase();return"area"===h?(d=b.parentNode,f=d.name,b.href&&f&&"map"===d.nodeName.toLowerCase()?(g=a("img[usemap=#"+f+"]")[0],!!g&&e(g)):!1):(/input|select|textarea|button|object/.test(h)?!b.disabled:"a"===h?b.href||c:c)&&e(b)}function e(b){return a.expr.filters.visible(b)&&!a(b).parents().addBack().filter(function(){return"hidden"===a.css(this,"visibility")}).length}var f=0,g=/^ui-id-\d+$/;a.ui=a.ui||{},a.extend(a.ui,{version:"c0ab71056b936627e8a7821f03c044aec6280a40",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),a.fn.extend({focus:function(b){return function(c,d){return"number"==typeof c?this.each(function(){var b=this;setTimeout(function(){a(b).focus(),d&&d.call(b)},c)}):b.apply(this,arguments)}}(a.fn.focus),scrollParent:function(){var b;return b=a.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.css(this,"position"))&&/(auto|scroll)/.test(a.css(this,"overflow")+a.css(this,"overflow-y")+a.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(a.css(this,"overflow")+a.css(this,"overflow-y")+a.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!b.length?a(this[0].ownerDocument||c):b},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++f)})},removeUniqueId:function(){return this.each(function(){g.test(this.id)&&a(this).removeAttr("id")})}}),a.extend(a.expr[":"],{data:a.expr.createPseudo?a.expr.createPseudo(function(b){return function(c){return!!a.data(c,b)}}):function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return d(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var c=a.attr(b,"tabindex"),e=isNaN(c);return(e||c>=0)&&d(b,!e)}}),a("<a>").outerWidth(1).jquery||a.each(["Width","Height"],function(c,d){function e(b,c,d,e){return a.each(f,function(){c-=parseFloat(a.css(b,"padding"+this))||0,d&&(c-=parseFloat(a.css(b,"border"+this+"Width"))||0),e&&(c-=parseFloat(a.css(b,"margin"+this))||0)}),c}var f="Width"===d?["Left","Right"]:["Top","Bottom"],g=d.toLowerCase(),h={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){return c===b?h["inner"+d].call(this):this.each(function(){a(this).css(g,e(this,c)+"px")})},a.fn["outer"+d]=function(b,c){return"number"!=typeof b?h["outer"+d].call(this,b):this.each(function(){a(this).css(g,e(this,b,!0,c)+"px")})}}),a.fn.addBack||(a.fn.addBack=function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}),a("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(a.fn.removeData=function(b){return function(c){return arguments.length?b.call(this,a.camelCase(c)):b.call(this)}}(a.fn.removeData)),a.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),a.support.selectstart="onselectstart"in c.createElement("div"),a.fn.extend({disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(d){if(d!==b)return this.css("zIndex",d);if(this.length)for(var e,f,g=a(this[0]);g.length&&g[0]!==c;){if(e=g.css("position"),("absolute"===e||"relative"===e||"fixed"===e)&&(f=parseInt(g.css("zIndex"),10),!isNaN(f)&&0!==f))return f;g=g.parent()}return 0}}),a.ui.plugin={add:function(b,c,d){var e,f=a.ui[b].prototype;for(e in d)f.plugins[e]=f.plugins[e]||[],f.plugins[e].push([c,d[e]])},call:function(a,b,c,d){var e,f=a.plugins[b];if(f&&(d||a.element[0].parentNode&&11!==a.element[0].parentNode.nodeType))for(e=0;e<f.length;e++)a.options[f[e][0]]&&f[e][1].apply(a.element,c)}}}(a),function(a,b){var d=function(b,c){var d=b.parent(),e=[],f=function(){var b=a(this),c=a.mobile.toolbar&&b.data("mobile-toolbar")?b.toolbar("option"):{position:b.attr("data-"+a.mobile.ns+"position"),updatePagePadding:b.attr("data-"+a.mobile.ns+"update-page-padding")!==!1};return!("fixed"===c.position&&c.updatePagePadding===!0)},g=d.children(":jqmData(role='header')").filter(f),h=b.children(":jqmData(role='header')"),i=d.children(":jqmData(role='footer')").filter(f),j=b.children(":jqmData(role='footer')");return 0===h.length&&g.length>0&&(e=e.concat(g.toArray())),0===j.length&&i.length>0&&(e=e.concat(i.toArray())),a.each(e,function(b,d){c-=a(d).outerHeight()}),Math.max(0,c)};a.extend(a.mobile,{window:a(b),document:a(c),keyCode:a.ui.keyCode,behaviors:{},silentScroll:function(c){"number"!==a.type(c)&&(c=a.mobile.defaultHomeScroll),a.event.special.scrollstart.enabled=!1,setTimeout(function(){b.scrollTo(0,c),a.mobile.document.trigger("silentscroll",{x:0,y:c})},20),setTimeout(function(){a.event.special.scrollstart.enabled=!0},150)},getClosestBaseUrl:function(b){var c=a(b).closest(".ui-page").jqmData("url"),d=a.mobile.path.documentBase.hrefNoHash;return a.mobile.dynamicBaseEnabled&&c&&a.mobile.path.isPath(c)||(c=d),a.mobile.path.makeUrlAbsolute(c,d)},removeActiveLinkClass:function(b){!a.mobile.activeClickedLink||a.mobile.activeClickedLink.closest("."+a.mobile.activePageClass).length&&!b||a.mobile.activeClickedLink.removeClass(a.mobile.activeBtnClass),a.mobile.activeClickedLink=null},getInheritedTheme:function(a,b){for(var c,d,e=a[0],f="",g=/ui-(bar|body|overlay)-([a-z])\b/;e&&(c=e.className||"",!(c&&(d=g.exec(c))&&(f=d[2])));)e=e.parentNode;return f||b||"a"},enhanceable:function(a){return this.haveParents(a,"enhance")},hijackable:function(a){return this.haveParents(a,"ajax")},haveParents:function(b,c){if(!a.mobile.ignoreContentEnabled)return b;var d,e,f,g,h,i=b.length,j=a();for(g=0;i>g;g++){for(e=b.eq(g),f=!1,d=b[g];d;){if(h=d.getAttribute?d.getAttribute("data-"+a.mobile.ns+c):"","false"===h){f=!0;break}d=d.parentNode}f||(j=j.add(e))}return j},getScreenHeight:function(){return b.innerHeight||a.mobile.window.height()},resetActivePageHeight:function(b){var c=a("."+a.mobile.activePageClass),e=c.height(),f=c.outerHeight(!0);b=d(c,"number"==typeof b?b:a.mobile.getScreenHeight()),c.css("min-height",""),c.height()<b&&c.css("min-height",b-(f-e))},loading:function(){var b=this.loading._widget||a(a.mobile.loader.prototype.defaultHtml).loader(),c=b.loader.apply(b,arguments);return this.loading._widget=b,c}}),a.addDependents=function(b,c){var d=a(b),e=d.jqmData("dependents")||a();d.jqmData("dependents",a(e).add(c))},a.fn.extend({removeWithDependents:function(){a.removeWithDependents(this)},enhanceWithin:function(){var b,c={},d=a.mobile.page.prototype.keepNativeSelector(),e=this;a.mobile.nojs&&a.mobile.nojs(this),a.mobile.links&&a.mobile.links(this),a.mobile.degradeInputsWithin&&a.mobile.degradeInputsWithin(this),a.fn.buttonMarkup&&this.find(a.fn.buttonMarkup.initSelector).not(d).jqmEnhanceable().buttonMarkup(),a.fn.fieldcontain&&this.find(":jqmData(role='fieldcontain')").not(d).jqmEnhanceable().fieldcontain(),a.each(a.mobile.widgets,function(b,f){if(f.initSelector){var g=a.mobile.enhanceable(e.find(f.initSelector));g.length>0&&(g=g.not(d)),g.length>0&&(c[f.prototype.widgetName]=g)}});for(b in c)c[b][b]();return this},addDependents:function(b){a.addDependents(this,b)},getEncodedText:function(){return a("<a>").text(this.text()).html()},jqmEnhanceable:function(){return a.mobile.enhanceable(this)},jqmHijackable:function(){return a.mobile.hijackable(this)}}),a.removeWithDependents=function(b){var c=a(b);(c.jqmData("dependents")||a()).remove(),c.remove()},a.addDependents=function(b,c){var d=a(b),e=d.jqmData("dependents")||a();d.jqmData("dependents",a(e).add(c))},a.find.matches=function(b,c){return a.find(b,null,null,c)},a.find.matchesSelector=function(b,c){return a.find(c,null,null,[b]).length>0}}(a,this),function(a){a.extend(a.mobile,{version:"1.4.5",subPageUrlKey:"ui-page",hideUrlBar:!0,keepNative:":jqmData(role='none'), :jqmData(role='nojs')",activePageClass:"ui-page-active",activeBtnClass:"ui-btn-active",focusClass:"ui-focus",ajaxEnabled:!0,hashListeningEnabled:!0,linkBindingEnabled:!0,defaultPageTransition:"fade",maxTransitionWidth:!1,minScrollBack:0,defaultDialogTransition:"pop",pageLoadErrorMessage:"Error Loading Page",pageLoadErrorMessageTheme:"a",phonegapNavigationEnabled:!1,autoInitializePage:!0,pushStateEnabled:!0,ignoreContentEnabled:!1,buttonMarkup:{hoverDelay:200},dynamicBaseEnabled:!0,pageContainer:a(),allowCrossDomainPages:!1,dialogHashKey:"&ui-state=dialog"})}(a,this),function(a,b){var c=0,d=Array.prototype.slice,e=a.cleanData;a.cleanData=function(b){for(var c,d=0;null!=(c=b[d]);d++)try{a(c).triggerHandler("remove")}catch(f){}e(b)},a.widget=function(b,c,d){var e,f,g,h,i={},j=b.split(".")[0];return b=b.split(".")[1],e=j+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][e.toLowerCase()]=function(b){return!!a.data(b,e)},a[j]=a[j]||{},f=a[j][b],g=a[j][b]=function(a,b){return this._createWidget?void(arguments.length&&this._createWidget(a,b)):new g(a,b)},a.extend(g,f,{version:d.version,_proto:a.extend({},d),_childConstructors:[]}),h=new c,h.options=a.widget.extend({},h.options),a.each(d,function(b,d){return a.isFunction(d)?void(i[b]=function(){var a=function(){return c.prototype[b].apply(this,arguments)},e=function(a){return c.prototype[b].apply(this,a)};return function(){var b,c=this._super,f=this._superApply;return this._super=a,this._superApply=e,b=d.apply(this,arguments),this._super=c,this._superApply=f,b}}()):void(i[b]=d)}),g.prototype=a.widget.extend(h,{widgetEventPrefix:f?h.widgetEventPrefix||b:b},i,{constructor:g,namespace:j,widgetName:b,widgetFullName:e}),f?(a.each(f._childConstructors,function(b,c){var d=c.prototype;a.widget(d.namespace+"."+d.widgetName,g,c._proto)}),delete f._childConstructors):c._childConstructors.push(g),a.widget.bridge(b,g),g},a.widget.extend=function(c){for(var e,f,g=d.call(arguments,1),h=0,i=g.length;i>h;h++)for(e in g[h])f=g[h][e],g[h].hasOwnProperty(e)&&f!==b&&(c[e]=a.isPlainObject(f)?a.isPlainObject(c[e])?a.widget.extend({},c[e],f):a.widget.extend({},f):f);return c},a.widget.bridge=function(c,e){var f=e.prototype.widgetFullName||c;a.fn[c]=function(g){var h="string"==typeof g,i=d.call(arguments,1),j=this;return g=!h&&i.length?a.widget.extend.apply(null,[g].concat(i)):g,this.each(h?function(){var d,e=a.data(this,f);return"instance"===g?(j=e,!1):e?a.isFunction(e[g])&&"_"!==g.charAt(0)?(d=e[g].apply(e,i),d!==e&&d!==b?(j=d&&d.jquery?j.pushStack(d.get()):d,!1):void 0):a.error("no such method '"+g+"' for "+c+" widget instance"):a.error("cannot call methods on "+c+" prior to initialization; attempted to call method '"+g+"'")}:function(){var b=a.data(this,f);b?b.option(g||{})._init():a.data(this,f,new e(g,this))}),j}},a.Widget=function(){},a.Widget._childConstructors=[],a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(b,d){d=a(d||this.defaultElement||this)[0],this.element=a(d),this.uuid=c++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=a.widget.extend({},this.options,this._getCreateOptions(),b),this.bindings=a(),this.hoverable=a(),this.focusable=a(),d!==this&&(a.data(d,this.widgetFullName,this),this._on(!0,this.element,{remove:function(a){a.target===d&&this.destroy()}}),this.document=a(d.style?d.ownerDocument:d.document||d),this.window=a(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:a.noop,_getCreateEventData:a.noop,_create:a.noop,_init:a.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(a.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:a.noop,widget:function(){return this.element},option:function(c,d){var e,f,g,h=c;if(0===arguments.length)return a.widget.extend({},this.options);if("string"==typeof c)if(h={},e=c.split("."),c=e.shift(),e.length){for(f=h[c]=a.widget.extend({},this.options[c]),g=0;g<e.length-1;g++)f[e[g]]=f[e[g]]||{},f=f[e[g]];if(c=e.pop(),d===b)return f[c]===b?null:f[c];f[c]=d}else{if(d===b)return this.options[c]===b?null:this.options[c];h[c]=d}return this._setOptions(h),this},_setOptions:function(a){var b;for(b in a)this._setOption(b,a[b]);return this},_setOption:function(a,b){return this.options[a]=b,"disabled"===a&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!b),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(b,c,d){var e,f=this;"boolean"!=typeof b&&(d=c,c=b,b=!1),d?(c=e=a(c),this.bindings=this.bindings.add(c)):(d=c,c=this.element,e=this.widget()),a.each(d,function(d,g){function h(){return b||f.options.disabled!==!0&&!a(this).hasClass("ui-state-disabled")?("string"==typeof g?f[g]:g).apply(f,arguments):void 0}"string"!=typeof g&&(h.guid=g.guid=g.guid||h.guid||a.guid++);var i=d.match(/^(\w+)\s*(.*)$/),j=i[1]+f.eventNamespace,k=i[2];k?e.delegate(k,j,h):c.bind(j,h)})},_off:function(a,b){b=(b||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,a.unbind(b).undelegate(b)},_delay:function(a,b){function c(){return("string"==typeof a?d[a]:a).apply(d,arguments)}var d=this;return setTimeout(c,b||0)},_hoverable:function(b){this.hoverable=this.hoverable.add(b),this._on(b,{mouseenter:function(b){a(b.currentTarget).addClass("ui-state-hover")},mouseleave:function(b){a(b.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(b){this.focusable=this.focusable.add(b),this._on(b,{focusin:function(b){a(b.currentTarget).addClass("ui-state-focus")},focusout:function(b){a(b.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(b,c,d){var e,f,g=this.options[b];if(d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent)for(e in f)e in c||(c[e]=f[e]);return this.element.trigger(c,d),!(a.isFunction(g)&&g.apply(this.element[0],[c].concat(d))===!1||c.isDefaultPrevented())}},a.each({show:"fadeIn",hide:"fadeOut"},function(b,c){a.Widget.prototype["_"+b]=function(d,e,f){"string"==typeof e&&(e={effect:e});var g,h=e?e===!0||"number"==typeof e?c:e.effect||c:b;e=e||{},"number"==typeof e&&(e={duration:e}),g=!a.isEmptyObject(e),e.complete=f,e.delay&&d.delay(e.delay),g&&a.effects&&a.effects.effect[h]?d[b](e):h!==b&&d[h]?d[h](e.duration,e.easing,f):d.queue(function(c){a(this)[b](),f&&f.call(d[0]),c()})}})}(a),function(a,b,c){var d={},e=a.find,f=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,g=/:jqmData\(([^)]*)\)/g;a.extend(a.mobile,{ns:"",getAttribute:function(b,c){var d;b=b.jquery?b[0]:b,b&&b.getAttribute&&(d=b.getAttribute("data-"+a.mobile.ns+c));try{d="true"===d?!0:"false"===d?!1:"null"===d?null:+d+""===d?+d:f.test(d)?JSON.parse(d):d}catch(e){}return d},nsNormalizeDict:d,nsNormalize:function(b){return d[b]||(d[b]=a.camelCase(a.mobile.ns+b))},closestPageData:function(a){return a.closest(":jqmData(role='page'), :jqmData(role='dialog')").data("mobile-page")}}),a.fn.jqmData=function(b,d){var e;return"undefined"!=typeof b&&(b&&(b=a.mobile.nsNormalize(b)),e=arguments.length<2||d===c?this.data(b):this.data(b,d)),e},a.jqmData=function(b,c,d){var e;return"undefined"!=typeof c&&(e=a.data(b,c?a.mobile.nsNormalize(c):c,d)),e},a.fn.jqmRemoveData=function(b){return this.removeData(a.mobile.nsNormalize(b))},a.jqmRemoveData=function(b,c){return a.removeData(b,a.mobile.nsNormalize(c))},a.find=function(b,c,d,f){return b.indexOf(":jqmData")>-1&&(b=b.replace(g,"[data-"+(a.mobile.ns||"")+"$1]")),e.call(this,b,c,d,f)},a.extend(a.find,e)}(a,this),function(a){var b=/[A-Z]/g,c=function(a){return"-"+a.toLowerCase()};a.extend(a.Widget.prototype,{_getCreateOptions:function(){var d,e,f=this.element[0],g={};if(!a.mobile.getAttribute(f,"defaults"))for(d in this.options)e=a.mobile.getAttribute(f,d.replace(b,c)),null!=e&&(g[d]=e);return g}}),a.mobile.widget=a.Widget}(a),function(a){var b="ui-loader",c=a("html");a.widget("mobile.loader",{options:{theme:"a",textVisible:!1,html:"",text:"loading"},defaultHtml:"<div class='"+b+"'><span class='ui-icon-loading'></span><h1></h1></div>",fakeFixLoader:function(){var b=a("."+a.mobile.activeBtnClass).first();this.element.css({top:a.support.scrollTop&&this.window.scrollTop()+this.window.height()/2||b.length&&b.offset().top||100})},checkLoaderPosition:function(){var b=this.element.offset(),c=this.window.scrollTop(),d=a.mobile.getScreenHeight();(b.top<c||b.top-c>d)&&(this.element.addClass("ui-loader-fakefix"),this.fakeFixLoader(),this.window.unbind("scroll",this.checkLoaderPosition).bind("scroll",a.proxy(this.fakeFixLoader,this)))},resetHtml:function(){this.element.html(a(this.defaultHtml).html())},show:function(d,e,f){var g,h,i;this.resetHtml(),"object"===a.type(d)?(i=a.extend({},this.options,d),d=i.theme):(i=this.options,d=d||i.theme),h=e||(i.text===!1?"":i.text),c.addClass("ui-loading"),g=i.textVisible,this.element.attr("class",b+" ui-corner-all ui-body-"+d+" ui-loader-"+(g||e||d.text?"verbose":"default")+(i.textonly||f?" ui-loader-textonly":"")),i.html?this.element.html(i.html):this.element.find("h1").text(h),this.element.appendTo(a(a.mobile.pagecontainer?":mobile-pagecontainer":"body")),this.checkLoaderPosition(),this.window.bind("scroll",a.proxy(this.checkLoaderPosition,this))},hide:function(){c.removeClass("ui-loading"),this.options.text&&this.element.removeClass("ui-loader-fakefix"),this.window.unbind("scroll",this.fakeFixLoader),this.window.unbind("scroll",this.checkLoaderPosition)}})}(a,this),function(a,b,d){"$:nomunge";function e(a){return a=a||location.href,"#"+a.replace(/^[^#]*#?(.*)$/,"$1")}var f,g="hashchange",h=c,i=a.event.special,j=h.documentMode,k="on"+g in b&&(j===d||j>7);a.fn[g]=function(a){return a?this.bind(g,a):this.trigger(g)},a.fn[g].delay=50,i[g]=a.extend(i[g],{setup:function(){return k?!1:void a(f.start)},teardown:function(){return k?!1:void a(f.stop)}}),f=function(){function c(){var d=e(),h=n(j);d!==j?(m(j=d,h),a(b).trigger(g)):h!==j&&(location.href=location.href.replace(/#.*/,"")+h),f=setTimeout(c,a.fn[g].delay)}var f,i={},j=e(),l=function(a){return a},m=l,n=l;return i.start=function(){f||c()},i.stop=function(){f&&clearTimeout(f),f=d},b.attachEvent&&!b.addEventListener&&!k&&function(){var b,d;i.start=function(){b||(d=a.fn[g].src,d=d&&d+e(),b=a('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){d||m(e()),c()}).attr("src",d||"javascript:0").insertAfter("body")[0].contentWindow,h.onpropertychange=function(){try{"title"===event.propertyName&&(b.document.title=h.title)}catch(a){}})},i.stop=l,n=function(){return e(b.location.href)},m=function(c,d){var e=b.document,f=a.fn[g].domain;c!==d&&(e.title=h.title,e.open(),f&&e.write('<script>document.domain="'+f+'"</script>'),e.close(),b.location.hash=c)}}(),i}()}(a,this),function(a){b.matchMedia=b.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='&shy;<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(c),a.mobile.media=function(a){return b.matchMedia(a).matches}}(a),function(a){var b={touch:"ontouchend"in c};a.mobile.support=a.mobile.support||{},a.extend(a.support,b),a.extend(a.mobile.support,b)}(a),function(a){a.extend(a.support,{orientation:"orientation"in b&&"onorientationchange"in b})}(a),function(a,d){function e(a){var b,c=a.charAt(0).toUpperCase()+a.substr(1),e=(a+" "+o.join(c+" ")+c).split(" ");for(b in e)if(n[e[b]]!==d)return!0}function f(){var c=b,d=!(!c.document.createElementNS||!c.document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect||c.opera&&-1===navigator.userAgent.indexOf("Chrome")),e=function(b){b&&d||a("html").addClass("ui-nosvg")},f=new c.Image;f.onerror=function(){e(!1)},f.onload=function(){e(1===f.width&&1===f.height)},f.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="}function g(){var e,f,g,h="transform-3d",i=a.mobile.media("(-"+o.join("-"+h+"),(-")+"-"+h+"),("+h+")");if(i)return!!i;e=c.createElement("div"),f={MozTransform:"-moz-transform",transform:"transform"},m.append(e);for(g in f)e.style[g]!==d&&(e.style[g]="translate3d( 100px, 1px, 1px )",i=b.getComputedStyle(e).getPropertyValue(f[g]));return!!i&&"none"!==i}function h(){var b,c,d=location.protocol+"//"+location.host+location.pathname+"ui-dir/",e=a("head base"),f=null,g="";return e.length?g=e.attr("href"):e=f=a("<base>",{href:d}).appendTo("head"),b=a("<a href='testurl' />").prependTo(m),c=b[0].href,e[0].href=g||location.pathname,f&&f.remove(),0===c.indexOf(d)}function i(){var a,d=c.createElement("x"),e=c.documentElement,f=b.getComputedStyle;return"pointerEvents"in d.style?(d.style.pointerEvents="auto",d.style.pointerEvents="x",e.appendChild(d),a=f&&"auto"===f(d,"").pointerEvents,e.removeChild(d),!!a):!1}function j(){var a=c.createElement("div");return"undefined"!=typeof a.getBoundingClientRect}function k(){var a=b,c=navigator.userAgent,d=navigator.platform,e=c.match(/AppleWebKit\/([0-9]+)/),f=!!e&&e[1],g=c.match(/Fennec\/([0-9]+)/),h=!!g&&g[1],i=c.match(/Opera Mobi\/([0-9]+)/),j=!!i&&i[1];return(d.indexOf("iPhone")>-1||d.indexOf("iPad")>-1||d.indexOf("iPod")>-1)&&f&&534>f||a.operamini&&"[object OperaMini]"==={}.toString.call(a.operamini)||i&&7458>j||c.indexOf("Android")>-1&&f&&533>f||h&&6>h||"palmGetResource"in b&&f&&534>f||c.indexOf("MeeGo")>-1&&c.indexOf("NokiaBrowser/8.5.0")>-1?!1:!0}var l,m=a("<body>").prependTo("html"),n=m[0].style,o=["Webkit","Moz","O"],p="palmGetResource"in b,q=b.operamini&&"[object OperaMini]"==={}.toString.call(b.operamini),r=b.blackberry&&!e("-webkit-transform");a.extend(a.mobile,{browser:{}}),a.mobile.browser.oldIE=function(){var a=3,b=c.createElement("div"),d=b.all||[];do b.innerHTML="<!--[if gt IE "+ ++a+"]><br><![endif]-->";while(d[0]);return a>4?a:!a}(),a.extend(a.support,{pushState:"pushState"in history&&"replaceState"in history&&!(b.navigator.userAgent.indexOf("Firefox")>=0&&b.top!==b)&&-1===b.navigator.userAgent.search(/CriOS/),mediaquery:a.mobile.media("only all"),cssPseudoElement:!!e("content"),touchOverflow:!!e("overflowScrolling"),cssTransform3d:g(),boxShadow:!!e("boxShadow")&&!r,fixedPosition:k(),scrollTop:("pageXOffset"in b||"scrollTop"in c.documentElement||"scrollTop"in m[0])&&!p&&!q,dynamicBaseTag:h(),cssPointerEvents:i(),boundingRect:j(),inlineSVG:f}),m.remove(),l=function(){var a=b.navigator.userAgent;return a.indexOf("Nokia")>-1&&(a.indexOf("Symbian/3")>-1||a.indexOf("Series60/5")>-1)&&a.indexOf("AppleWebKit")>-1&&a.match(/(BrowserNG|NokiaBrowser)\/7\.[0-3]/)}(),a.mobile.gradeA=function(){return(a.support.mediaquery&&a.support.cssPseudoElement||a.mobile.browser.oldIE&&a.mobile.browser.oldIE>=8)&&(a.support.boundingRect||null!==a.fn.jquery.match(/1\.[0-7+]\.[0-9+]?/))},a.mobile.ajaxBlacklist=b.blackberry&&!b.WebKitPoint||q||l,l&&a(function(){a("head link[rel='stylesheet']").attr("rel","alternate stylesheet").attr("rel","stylesheet")}),a.support.boxShadow||a("html").addClass("ui-noboxshadow")}(a),function(a,b){var c,d=a.mobile.window,e=function(){};a.event.special.beforenavigate={setup:function(){d.on("navigate",e)},teardown:function(){d.off("navigate",e)}},a.event.special.navigate=c={bound:!1,pushStateEnabled:!0,originalEventName:b,isPushStateEnabled:function(){return a.support.pushState&&a.mobile.pushStateEnabled===!0&&this.isHashChangeEnabled()},isHashChangeEnabled:function(){return a.mobile.hashListeningEnabled===!0},popstate:function(b){var c=new a.Event("navigate"),e=new a.Event("beforenavigate"),f=b.originalEvent.state||{};e.originalEvent=b,d.trigger(e),e.isDefaultPrevented()||(b.historyState&&a.extend(f,b.historyState),c.originalEvent=b,setTimeout(function(){d.trigger(c,{state:f})},0))},hashchange:function(b){var c=new a.Event("navigate"),e=new a.Event("beforenavigate");e.originalEvent=b,d.trigger(e),e.isDefaultPrevented()||(c.originalEvent=b,d.trigger(c,{state:b.hashchangeState||{}}))},setup:function(){c.bound||(c.bound=!0,c.isPushStateEnabled()?(c.originalEventName="popstate",d.bind("popstate.navigate",c.popstate)):c.isHashChangeEnabled()&&(c.originalEventName="hashchange",d.bind("hashchange.navigate",c.hashchange)))}}}(a),function(a,c){var d,e,f="&ui-state=dialog";a.mobile.path=d={uiStateKey:"&ui-state",urlParseRE:/^\s*(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/,getLocation:function(a){var b=this.parseUrl(a||location.href),c=a?b:location,d=b.hash;return d="#"===d?"":d,c.protocol+b.doubleSlash+c.host+(""!==c.protocol&&"/"!==c.pathname.substring(0,1)?"/":"")+c.pathname+c.search+d},getDocumentUrl:function(b){return b?a.extend({},d.documentUrl):d.documentUrl.href},parseLocation:function(){return this.parseUrl(this.getLocation())},parseUrl:function(b){if("object"===a.type(b))return b;var c=d.urlParseRE.exec(b||"")||[];return{href:c[0]||"",hrefNoHash:c[1]||"",hrefNoSearch:c[2]||"",domain:c[3]||"",protocol:c[4]||"",doubleSlash:c[5]||"",authority:c[6]||"",username:c[8]||"",password:c[9]||"",host:c[10]||"",hostname:c[11]||"",port:c[12]||"",pathname:c[13]||"",directory:c[14]||"",filename:c[15]||"",search:c[16]||"",hash:c[17]||""}},makePathAbsolute:function(a,b){var c,d,e,f;if(a&&"/"===a.charAt(0))return a;for(a=a||"",b=b?b.replace(/^\/|(\/[^\/]*|[^\/]+)$/g,""):"",c=b?b.split("/"):[],d=a.split("/"),e=0;e<d.length;e++)switch(f=d[e]){case".":break;case"..":c.length&&c.pop();break;default:c.push(f)}return"/"+c.join("/")},isSameDomain:function(a,b){return d.parseUrl(a).domain.toLowerCase()===d.parseUrl(b).domain.toLowerCase()},isRelativeUrl:function(a){return""===d.parseUrl(a).protocol},isAbsoluteUrl:function(a){return""!==d.parseUrl(a).protocol},makeUrlAbsolute:function(a,b){if(!d.isRelativeUrl(a))return a;b===c&&(b=this.documentBase);var e=d.parseUrl(a),f=d.parseUrl(b),g=e.protocol||f.protocol,h=e.protocol?e.doubleSlash:e.doubleSlash||f.doubleSlash,i=e.authority||f.authority,j=""!==e.pathname,k=d.makePathAbsolute(e.pathname||f.filename,f.pathname),l=e.search||!j&&f.search||"",m=e.hash;return g+h+i+k+l+m},addSearchParams:function(b,c){var e=d.parseUrl(b),f="object"==typeof c?a.param(c):c,g=e.search||"?";return e.hrefNoSearch+g+("?"!==g.charAt(g.length-1)?"&":"")+f+(e.hash||"")},convertUrlToDataUrl:function(a){var c=a,e=d.parseUrl(a);return d.isEmbeddedPage(e)?c=e.hash.split(f)[0].replace(/^#/,"").replace(/\?.*$/,""):d.isSameDomain(e,this.documentBase)&&(c=e.hrefNoHash.replace(this.documentBase.domain,"").split(f)[0]),b.decodeURIComponent(c)},get:function(a){return a===c&&(a=d.parseLocation().hash),d.stripHash(a).replace(/[^\/]*\.[^\/*]+$/,"")},set:function(a){location.hash=a},isPath:function(a){return/\//.test(a)},clean:function(a){return a.replace(this.documentBase.domain,"")},stripHash:function(a){return a.replace(/^#/,"")},stripQueryParams:function(a){return a.replace(/\?.*$/,"")},cleanHash:function(a){return d.stripHash(a.replace(/\?.*$/,"").replace(f,""))},isHashValid:function(a){return/^#[^#]+$/.test(a)},isExternal:function(a){var b=d.parseUrl(a);return!(!b.protocol||b.domain.toLowerCase()===this.documentUrl.domain.toLowerCase())},hasProtocol:function(a){return/^(:?\w+:)/.test(a)},isEmbeddedPage:function(a){var b=d.parseUrl(a);return""!==b.protocol?!this.isPath(b.hash)&&b.hash&&(b.hrefNoHash===this.documentUrl.hrefNoHash||this.documentBaseDiffers&&b.hrefNoHash===this.documentBase.hrefNoHash):/^#/.test(b.href)},squash:function(a,b){var c,e,f,g,h,i=this.isPath(a),j=this.parseUrl(a),k=j.hash,l="";return b||(i?b=d.getLocation():(h=d.getDocumentUrl(!0),b=d.isPath(h.hash)?d.squash(h.href):h.href)),e=i?d.stripHash(a):a,e=d.isPath(j.hash)?d.stripHash(j.hash):e,g=e.indexOf(this.uiStateKey),g>-1&&(l=e.slice(g),e=e.slice(0,g)),c=d.makeUrlAbsolute(e,b),f=this.parseUrl(c).search,i?((d.isPath(k)||0===k.replace("#","").indexOf(this.uiStateKey))&&(k=""),l&&-1===k.indexOf(this.uiStateKey)&&(k+=l),-1===k.indexOf("#")&&""!==k&&(k="#"+k),c=d.parseUrl(c),c=c.protocol+c.doubleSlash+c.host+c.pathname+f+k):c+=c.indexOf("#")>-1?l:"#"+l,c},isPreservableHash:function(a){return 0===a.replace("#","").indexOf(this.uiStateKey)},hashToSelector:function(a){var b="#"===a.substring(0,1);return b&&(a=a.substring(1)),(b?"#":"")+a.replace(/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g,"\\$1")},getFilePath:function(a){return a&&a.split(f)[0]},isFirstPageUrl:function(b){var e=d.parseUrl(d.makeUrlAbsolute(b,this.documentBase)),f=e.hrefNoHash===this.documentUrl.hrefNoHash||this.documentBaseDiffers&&e.hrefNoHash===this.documentBase.hrefNoHash,g=a.mobile.firstPage,h=g&&g[0]?g[0].id:c;return f&&(!e.hash||"#"===e.hash||h&&e.hash.replace(/^#/,"")===h)},isPermittedCrossDomainRequest:function(b,c){return a.mobile.allowCrossDomainPages&&("file:"===b.protocol||"content:"===b.protocol)&&-1!==c.search(/^https?:/)}},d.documentUrl=d.parseLocation(),e=a("head").find("base"),d.documentBase=e.length?d.parseUrl(d.makeUrlAbsolute(e.attr("href"),d.documentUrl.href)):d.documentUrl,d.documentBaseDiffers=d.documentUrl.hrefNoHash!==d.documentBase.hrefNoHash,d.getDocumentBase=function(b){return b?a.extend({},d.documentBase):d.documentBase.href},a.extend(a.mobile,{getDocumentUrl:d.getDocumentUrl,getDocumentBase:d.getDocumentBase})}(a),function(a,b){a.mobile.History=function(a,b){this.stack=a||[],this.activeIndex=b||0},a.extend(a.mobile.History.prototype,{getActive:function(){return this.stack[this.activeIndex]},getLast:function(){return this.stack[this.previousIndex]},getNext:function(){return this.stack[this.activeIndex+1]},getPrev:function(){return this.stack[this.activeIndex-1]},add:function(a,b){b=b||{},this.getNext()&&this.clearForward(),b.hash&&-1===b.hash.indexOf("#")&&(b.hash="#"+b.hash),b.url=a,this.stack.push(b),this.activeIndex=this.stack.length-1},clearForward:function(){this.stack=this.stack.slice(0,this.activeIndex+1)},find:function(a,b,c){b=b||this.stack;var d,e,f,g=b.length;for(e=0;g>e;e++)if(d=b[e],(decodeURIComponent(a)===decodeURIComponent(d.url)||decodeURIComponent(a)===decodeURIComponent(d.hash))&&(f=e,c))return f;return f},closest:function(a){var c,d=this.activeIndex;return c=this.find(a,this.stack.slice(0,d)),c===b&&(c=this.find(a,this.stack.slice(d),!0),c=c===b?c:c+d),c},direct:function(c){var d=this.closest(c.url),e=this.activeIndex;d!==b&&(this.activeIndex=d,this.previousIndex=e),e>d?(c.present||c.back||a.noop)(this.getActive(),"back"):d>e?(c.present||c.forward||a.noop)(this.getActive(),"forward"):d===b&&c.missing&&c.missing(this.getActive())}})}(a),function(a){var d=a.mobile.path,e=location.href;a.mobile.Navigator=function(b){this.history=b,this.ignoreInitialHashChange=!0,a.mobile.window.bind({"popstate.history":a.proxy(this.popstate,this),"hashchange.history":a.proxy(this.hashchange,this)})},a.extend(a.mobile.Navigator.prototype,{squash:function(e,f){var g,h,i=d.isPath(e)?d.stripHash(e):e;return h=d.squash(e),g=a.extend({hash:i,url:h},f),b.history.replaceState(g,g.title||c.title,h),g},hash:function(a,b){var c,e,f,g;return c=d.parseUrl(a),e=d.parseLocation(),e.pathname+e.search===c.pathname+c.search?f=c.hash?c.hash:c.pathname+c.search:d.isPath(a)?(g=d.parseUrl(b),f=g.pathname+g.search+(d.isPreservableHash(g.hash)?g.hash.replace("#",""):"")):f=a,f},go:function(e,f,g){var h,i,j,k,l=a.event.special.navigate.isPushStateEnabled();
+i=d.squash(e),j=this.hash(e,i),g&&j!==d.stripHash(d.parseLocation().hash)&&(this.preventNextHashChange=g),this.preventHashAssignPopState=!0,b.location.hash=j,this.preventHashAssignPopState=!1,h=a.extend({url:i,hash:j,title:c.title},f),l&&(k=new a.Event("popstate"),k.originalEvent={type:"popstate",state:null},this.squash(e,h),g||(this.ignorePopState=!0,a.mobile.window.trigger(k))),this.history.add(h.url,h)},popstate:function(b){var c,f;if(a.event.special.navigate.isPushStateEnabled())return this.preventHashAssignPopState?(this.preventHashAssignPopState=!1,void b.stopImmediatePropagation()):this.ignorePopState?void(this.ignorePopState=!1):!b.originalEvent.state&&1===this.history.stack.length&&this.ignoreInitialHashChange&&(this.ignoreInitialHashChange=!1,location.href===e)?void b.preventDefault():(c=d.parseLocation().hash,!b.originalEvent.state&&c?(f=this.squash(c),this.history.add(f.url,f),void(b.historyState=f)):void this.history.direct({url:(b.originalEvent.state||{}).url||c,present:function(c,d){b.historyState=a.extend({},c),b.historyState.direction=d}}))},hashchange:function(b){var e,f;if(a.event.special.navigate.isHashChangeEnabled()&&!a.event.special.navigate.isPushStateEnabled()){if(this.preventNextHashChange)return this.preventNextHashChange=!1,void b.stopImmediatePropagation();e=this.history,f=d.parseLocation().hash,this.history.direct({url:f,present:function(c,d){b.hashchangeState=a.extend({},c),b.hashchangeState.direction=d},missing:function(){e.add(f,{hash:f,title:c.title})}})}}})}(a),function(a){a.mobile.navigate=function(b,c,d){a.mobile.navigate.navigator.go(b,c,d)},a.mobile.navigate.history=new a.mobile.History,a.mobile.navigate.navigator=new a.mobile.Navigator(a.mobile.navigate.history);var b=a.mobile.path.parseLocation();a.mobile.navigate.history.add(b.href,{hash:b.hash})}(a),function(a,b){var d={animation:{},transition:{}},e=c.createElement("a"),f=["","webkit-","moz-","o-"];a.each(["animation","transition"],function(c,g){var h=0===c?g+"-name":g;a.each(f,function(c,f){return e.style[a.camelCase(f+h)]!==b?(d[g].prefix=f,!1):void 0}),d[g].duration=a.camelCase(d[g].prefix+g+"-duration"),d[g].event=a.camelCase(d[g].prefix+g+"-end"),""===d[g].prefix&&(d[g].event=d[g].event.toLowerCase())}),a.support.cssTransitions=d.transition.prefix!==b,a.support.cssAnimations=d.animation.prefix!==b,a(e).remove(),a.fn.animationComplete=function(e,f,g){var h,i,j=this,k=function(){clearTimeout(h),e.apply(this,arguments)},l=f&&"animation"!==f?"transition":"animation";return a.support.cssTransitions&&"transition"===l||a.support.cssAnimations&&"animation"===l?(g===b&&(a(this).context!==c&&(i=3e3*parseFloat(a(this).css(d[l].duration))),(0===i||i===b||isNaN(i))&&(i=a.fn.animationComplete.defaultDuration)),h=setTimeout(function(){a(j).off(d[l].event,k),e.apply(j)},i),a(this).one(d[l].event,k)):(setTimeout(a.proxy(e,this),0),a(this))},a.fn.animationComplete.defaultDuration=1e3}(a),function(a,b,c,d){function e(a){for(;a&&"undefined"!=typeof a.originalEvent;)a=a.originalEvent;return a}function f(b,c){var f,g,h,i,j,k,l,m,n,o=b.type;if(b=a.Event(b),b.type=c,f=b.originalEvent,g=a.event.props,o.search(/^(mouse|click)/)>-1&&(g=E),f)for(l=g.length,i;l;)i=g[--l],b[i]=f[i];if(o.search(/mouse(down|up)|click/)>-1&&!b.which&&(b.which=1),-1!==o.search(/^touch/)&&(h=e(f),o=h.touches,j=h.changedTouches,k=o&&o.length?o[0]:j&&j.length?j[0]:d))for(m=0,n=C.length;n>m;m++)i=C[m],b[i]=k[i];return b}function g(b){for(var c,d,e={};b;){c=a.data(b,z);for(d in c)c[d]&&(e[d]=e.hasVirtualBinding=!0);b=b.parentNode}return e}function h(b,c){for(var d;b;){if(d=a.data(b,z),d&&(!c||d[c]))return b;b=b.parentNode}return null}function i(){M=!1}function j(){M=!0}function k(){Q=0,K.length=0,L=!1,j()}function l(){i()}function m(){n(),G=setTimeout(function(){G=0,k()},a.vmouse.resetTimerDuration)}function n(){G&&(clearTimeout(G),G=0)}function o(b,c,d){var e;return(d&&d[b]||!d&&h(c.target,b))&&(e=f(c,b),a(c.target).trigger(e)),e}function p(b){var c,d=a.data(b.target,A);L||Q&&Q===d||(c=o("v"+b.type,b),c&&(c.isDefaultPrevented()&&b.preventDefault(),c.isPropagationStopped()&&b.stopPropagation(),c.isImmediatePropagationStopped()&&b.stopImmediatePropagation()))}function q(b){var c,d,f,h=e(b).touches;h&&1===h.length&&(c=b.target,d=g(c),d.hasVirtualBinding&&(Q=P++,a.data(c,A,Q),n(),l(),J=!1,f=e(b).touches[0],H=f.pageX,I=f.pageY,o("vmouseover",b,d),o("vmousedown",b,d)))}function r(a){M||(J||o("vmousecancel",a,g(a.target)),J=!0,m())}function s(b){if(!M){var c=e(b).touches[0],d=J,f=a.vmouse.moveDistanceThreshold,h=g(b.target);J=J||Math.abs(c.pageX-H)>f||Math.abs(c.pageY-I)>f,J&&!d&&o("vmousecancel",b,h),o("vmousemove",b,h),m()}}function t(a){if(!M){j();var b,c,d=g(a.target);o("vmouseup",a,d),J||(b=o("vclick",a,d),b&&b.isDefaultPrevented()&&(c=e(a).changedTouches[0],K.push({touchID:Q,x:c.clientX,y:c.clientY}),L=!0)),o("vmouseout",a,d),J=!1,m()}}function u(b){var c,d=a.data(b,z);if(d)for(c in d)if(d[c])return!0;return!1}function v(){}function w(b){var c=b.substr(1);return{setup:function(){u(this)||a.data(this,z,{});var d=a.data(this,z);d[b]=!0,F[b]=(F[b]||0)+1,1===F[b]&&O.bind(c,p),a(this).bind(c,v),N&&(F.touchstart=(F.touchstart||0)+1,1===F.touchstart&&O.bind("touchstart",q).bind("touchend",t).bind("touchmove",s).bind("scroll",r))},teardown:function(){--F[b],F[b]||O.unbind(c,p),N&&(--F.touchstart,F.touchstart||O.unbind("touchstart",q).unbind("touchmove",s).unbind("touchend",t).unbind("scroll",r));var d=a(this),e=a.data(this,z);e&&(e[b]=!1),d.unbind(c,v),u(this)||d.removeData(z)}}}var x,y,z="virtualMouseBindings",A="virtualTouchID",B="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),C="clientX clientY pageX pageY screenX screenY".split(" "),D=a.event.mouseHooks?a.event.mouseHooks.props:[],E=a.event.props.concat(D),F={},G=0,H=0,I=0,J=!1,K=[],L=!1,M=!1,N="addEventListener"in c,O=a(c),P=1,Q=0;for(a.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500},y=0;y<B.length;y++)a.event.special[B[y]]=w(B[y]);N&&c.addEventListener("click",function(b){var c,d,e,f,g,h,i=K.length,j=b.target;if(i)for(c=b.clientX,d=b.clientY,x=a.vmouse.clickDistanceThreshold,e=j;e;){for(f=0;i>f;f++)if(g=K[f],h=0,e===j&&Math.abs(g.x-c)<x&&Math.abs(g.y-d)<x||a.data(e,A)===g.touchID)return b.preventDefault(),void b.stopPropagation();e=e.parentNode}},!0)}(a,b,c),function(a,b,d){function e(b,c,e,f){var g=e.type;e.type=c,f?a.event.trigger(e,d,b):a.event.dispatch.call(b,e),e.type=g}var f=a(c),g=a.mobile.support.touch,h="touchmove scroll",i=g?"touchstart":"mousedown",j=g?"touchend":"mouseup",k=g?"touchmove":"mousemove";a.each("touchstart touchmove touchend tap taphold swipe swipeleft swiperight scrollstart scrollstop".split(" "),function(b,c){a.fn[c]=function(a){return a?this.bind(c,a):this.trigger(c)},a.attrFn&&(a.attrFn[c]=!0)}),a.event.special.scrollstart={enabled:!0,setup:function(){function b(a,b){c=b,e(f,c?"scrollstart":"scrollstop",a)}var c,d,f=this,g=a(f);g.bind(h,function(e){a.event.special.scrollstart.enabled&&(c||b(e,!0),clearTimeout(d),d=setTimeout(function(){b(e,!1)},50))})},teardown:function(){a(this).unbind(h)}},a.event.special.tap={tapholdThreshold:750,emitTapOnTaphold:!0,setup:function(){var b=this,c=a(b),d=!1;c.bind("vmousedown",function(g){function h(){clearTimeout(k)}function i(){h(),c.unbind("vclick",j).unbind("vmouseup",h),f.unbind("vmousecancel",i)}function j(a){i(),d||l!==a.target?d&&a.preventDefault():e(b,"tap",a)}if(d=!1,g.which&&1!==g.which)return!1;var k,l=g.target;c.bind("vmouseup",h).bind("vclick",j),f.bind("vmousecancel",i),k=setTimeout(function(){a.event.special.tap.emitTapOnTaphold||(d=!0),e(b,"taphold",a.Event("taphold",{target:l}))},a.event.special.tap.tapholdThreshold)})},teardown:function(){a(this).unbind("vmousedown").unbind("vclick").unbind("vmouseup"),f.unbind("vmousecancel")}},a.event.special.swipe={scrollSupressionThreshold:30,durationThreshold:1e3,horizontalDistanceThreshold:30,verticalDistanceThreshold:30,getLocation:function(a){var c=b.pageXOffset,d=b.pageYOffset,e=a.clientX,f=a.clientY;return 0===a.pageY&&Math.floor(f)>Math.floor(a.pageY)||0===a.pageX&&Math.floor(e)>Math.floor(a.pageX)?(e-=c,f-=d):(f<a.pageY-d||e<a.pageX-c)&&(e=a.pageX-c,f=a.pageY-d),{x:e,y:f}},start:function(b){var c=b.originalEvent.touches?b.originalEvent.touches[0]:b,d=a.event.special.swipe.getLocation(c);return{time:(new Date).getTime(),coords:[d.x,d.y],origin:a(b.target)}},stop:function(b){var c=b.originalEvent.touches?b.originalEvent.touches[0]:b,d=a.event.special.swipe.getLocation(c);return{time:(new Date).getTime(),coords:[d.x,d.y]}},handleSwipe:function(b,c,d,f){if(c.time-b.time<a.event.special.swipe.durationThreshold&&Math.abs(b.coords[0]-c.coords[0])>a.event.special.swipe.horizontalDistanceThreshold&&Math.abs(b.coords[1]-c.coords[1])<a.event.special.swipe.verticalDistanceThreshold){var g=b.coords[0]>c.coords[0]?"swipeleft":"swiperight";return e(d,"swipe",a.Event("swipe",{target:f,swipestart:b,swipestop:c}),!0),e(d,g,a.Event(g,{target:f,swipestart:b,swipestop:c}),!0),!0}return!1},eventInProgress:!1,setup:function(){var b,c=this,d=a(c),e={};b=a.data(this,"mobile-events"),b||(b={length:0},a.data(this,"mobile-events",b)),b.length++,b.swipe=e,e.start=function(b){if(!a.event.special.swipe.eventInProgress){a.event.special.swipe.eventInProgress=!0;var d,g=a.event.special.swipe.start(b),h=b.target,i=!1;e.move=function(b){g&&!b.isDefaultPrevented()&&(d=a.event.special.swipe.stop(b),i||(i=a.event.special.swipe.handleSwipe(g,d,c,h),i&&(a.event.special.swipe.eventInProgress=!1)),Math.abs(g.coords[0]-d.coords[0])>a.event.special.swipe.scrollSupressionThreshold&&b.preventDefault())},e.stop=function(){i=!0,a.event.special.swipe.eventInProgress=!1,f.off(k,e.move),e.move=null},f.on(k,e.move).one(j,e.stop)}},d.on(i,e.start)},teardown:function(){var b,c;b=a.data(this,"mobile-events"),b&&(c=b.swipe,delete b.swipe,b.length--,0===b.length&&a.removeData(this,"mobile-events")),c&&(c.start&&a(this).off(i,c.start),c.move&&f.off(k,c.move),c.stop&&f.off(j,c.stop))}},a.each({scrollstop:"scrollstart",taphold:"tap",swipeleft:"swipe.left",swiperight:"swipe.right"},function(b,c){a.event.special[b]={setup:function(){a(this).bind(c,a.noop)},teardown:function(){a(this).unbind(c)}}})}(a,this),function(a){a.event.special.throttledresize={setup:function(){a(this).bind("resize",f)},teardown:function(){a(this).unbind("resize",f)}};var b,c,d,e=250,f=function(){c=(new Date).getTime(),d=c-g,d>=e?(g=c,a(this).trigger("throttledresize")):(b&&clearTimeout(b),b=setTimeout(f,e-d))},g=0}(a),function(a,b){function d(){var a=e();a!==f&&(f=a,l.trigger(m))}var e,f,g,h,i,j,k,l=a(b),m="orientationchange",n={0:!0,180:!0};a.support.orientation&&(i=b.innerWidth||l.width(),j=b.innerHeight||l.height(),k=50,g=i>j&&i-j>k,h=n[b.orientation],(g&&h||!g&&!h)&&(n={"-90":!0,90:!0})),a.event.special.orientationchange=a.extend({},a.event.special.orientationchange,{setup:function(){return a.support.orientation&&!a.event.special.orientationchange.disabled?!1:(f=e(),void l.bind("throttledresize",d))},teardown:function(){return a.support.orientation&&!a.event.special.orientationchange.disabled?!1:void l.unbind("throttledresize",d)},add:function(a){var b=a.handler;a.handler=function(a){return a.orientation=e(),b.apply(this,arguments)}}}),a.event.special.orientationchange.orientation=e=function(){var d=!0,e=c.documentElement;return d=a.support.orientation?n[b.orientation]:e&&e.clientWidth/e.clientHeight<1.1,d?"portrait":"landscape"},a.fn[m]=function(a){return a?this.bind(m,a):this.trigger(m)},a.attrFn&&(a.attrFn[m]=!0)}(a,this),function(a){var b=a("head").children("base"),c={element:b.length?b:a("<base>",{href:a.mobile.path.documentBase.hrefNoHash}).prependTo(a("head")),linkSelector:"[src], link[href], a[rel='external'], :jqmData(ajax='false'), a[target]",set:function(b){a.mobile.dynamicBaseEnabled&&a.support.dynamicBaseTag&&c.element.attr("href",a.mobile.path.makeUrlAbsolute(b,a.mobile.path.documentBase))},rewrite:function(b,d){var e=a.mobile.path.get(b);d.find(c.linkSelector).each(function(b,c){var d=a(c).is("[href]")?"href":a(c).is("[src]")?"src":"action",f=a.mobile.path.parseLocation(),g=a(c).attr(d);g=g.replace(f.protocol+f.doubleSlash+f.host+f.pathname,""),/^(\w+:|#|\/)/.test(g)||a(c).attr(d,e+g)})},reset:function(){c.element.attr("href",a.mobile.path.documentBase.hrefNoSearch)}};a.mobile.base=c}(a),function(a,b){a.mobile.widgets={};var c=a.widget,d=a.mobile.keepNative;a.widget=function(c){return function(){var d=c.apply(this,arguments),e=d.prototype.widgetName;return d.initSelector=d.prototype.initSelector!==b?d.prototype.initSelector:":jqmData(role='"+e+"')",a.mobile.widgets[e]=d,d}}(a.widget),a.extend(a.widget,c),a.mobile.document.on("create",function(b){a(b.target).enhanceWithin()}),a.widget("mobile.page",{options:{theme:"a",domCache:!1,keepNativeDefault:a.mobile.keepNative,contentTheme:null,enhanced:!1},_createWidget:function(){a.Widget.prototype._createWidget.apply(this,arguments),this._trigger("init")},_create:function(){return this._trigger("beforecreate")===!1?!1:(this.options.enhanced||this._enhance(),this._on(this.element,{pagebeforehide:"removeContainerBackground",pagebeforeshow:"_handlePageBeforeShow"}),this.element.enhanceWithin(),void("dialog"===a.mobile.getAttribute(this.element[0],"role")&&a.mobile.dialog&&this.element.dialog()))},_enhance:function(){var c="data-"+a.mobile.ns,d=this;this.options.role&&this.element.attr("data-"+a.mobile.ns+"role",this.options.role),this.element.attr("tabindex","0").addClass("ui-page ui-page-theme-"+this.options.theme),this.element.find("["+c+"role='content']").each(function(){var e=a(this),f=this.getAttribute(c+"theme")||b;d.options.contentTheme=f||d.options.contentTheme||d.options.dialog&&d.options.theme||"dialog"===d.element.jqmData("role")&&d.options.theme,e.addClass("ui-content"),d.options.contentTheme&&e.addClass("ui-body-"+d.options.contentTheme),e.attr("role","main").addClass("ui-content")})},bindRemove:function(b){var c=this.element;!c.data("mobile-page").options.domCache&&c.is(":jqmData(external-page='true')")&&c.bind("pagehide.remove",b||function(b,c){if(!c.samePage){var d=a(this),e=new a.Event("pageremove");d.trigger(e),e.isDefaultPrevented()||d.removeWithDependents()}})},_setOptions:function(c){c.theme!==b&&this.element.removeClass("ui-page-theme-"+this.options.theme).addClass("ui-page-theme-"+c.theme),c.contentTheme!==b&&this.element.find("[data-"+a.mobile.ns+"='content']").removeClass("ui-body-"+this.options.contentTheme).addClass("ui-body-"+c.contentTheme)},_handlePageBeforeShow:function(){this.setContainerBackground()},removeContainerBackground:function(){this.element.closest(":mobile-pagecontainer").pagecontainer({theme:"none"})},setContainerBackground:function(a){this.element.parent().pagecontainer({theme:a||this.options.theme})},keepNativeSelector:function(){var b=this.options,c=a.trim(b.keepNative||""),e=a.trim(a.mobile.keepNative),f=a.trim(b.keepNativeDefault),g=d===e?"":e,h=""===g?f:"";return(c?[c]:[]).concat(g?[g]:[]).concat(h?[h]:[]).join(", ")}})}(a),function(a,d){a.widget("mobile.pagecontainer",{options:{theme:"a"},initSelector:!1,_create:function(){this._trigger("beforecreate"),this.setLastScrollEnabled=!0,this._on(this.window,{navigate:"_disableRecordScroll",scrollstop:"_delayedRecordScroll"}),this._on(this.window,{navigate:"_filterNavigateEvents"}),this._on({pagechange:"_afterContentChange"}),this.window.one("navigate",a.proxy(function(){this.setLastScrollEnabled=!0},this))},_setOptions:function(a){a.theme!==d&&"none"!==a.theme?this.element.removeClass("ui-overlay-"+this.options.theme).addClass("ui-overlay-"+a.theme):a.theme!==d&&this.element.removeClass("ui-overlay-"+this.options.theme),this._super(a)},_disableRecordScroll:function(){this.setLastScrollEnabled=!1},_enableRecordScroll:function(){this.setLastScrollEnabled=!0},_afterContentChange:function(){this.setLastScrollEnabled=!0,this._off(this.window,"scrollstop"),this._on(this.window,{scrollstop:"_delayedRecordScroll"})},_recordScroll:function(){if(this.setLastScrollEnabled){var a,b,c,d=this._getActiveHistory();d&&(a=this._getScroll(),b=this._getMinScroll(),c=this._getDefaultScroll(),d.lastScroll=b>a?c:a)}},_delayedRecordScroll:function(){setTimeout(a.proxy(this,"_recordScroll"),100)},_getScroll:function(){return this.window.scrollTop()},_getMinScroll:function(){return a.mobile.minScrollBack},_getDefaultScroll:function(){return a.mobile.defaultHomeScroll},_filterNavigateEvents:function(b,c){var d;b.originalEvent&&b.originalEvent.isDefaultPrevented()||(d=b.originalEvent.type.indexOf("hashchange")>-1?c.state.hash:c.state.url,d||(d=this._getHash()),d&&"#"!==d&&0!==d.indexOf("#"+a.mobile.path.uiStateKey)||(d=location.href),this._handleNavigate(d,c.state))},_getHash:function(){return a.mobile.path.parseLocation().hash},getActivePage:function(){return this.activePage},_getInitialContent:function(){return a.mobile.firstPage},_getHistory:function(){return a.mobile.navigate.history},_getActiveHistory:function(){return this._getHistory().getActive()},_getDocumentBase:function(){return a.mobile.path.documentBase},back:function(){this.go(-1)},forward:function(){this.go(1)},go:function(c){if(a.mobile.hashListeningEnabled)b.history.go(c);else{var d=a.mobile.navigate.history.activeIndex,e=d+parseInt(c,10),f=a.mobile.navigate.history.stack[e].url,g=c>=1?"forward":"back";a.mobile.navigate.history.activeIndex=e,a.mobile.navigate.history.previousIndex=d,this.change(f,{direction:g,changeHash:!1,fromHashChange:!0})}},_handleDestination:function(b){var c;return"string"===a.type(b)&&(b=a.mobile.path.stripHash(b)),b&&(c=this._getHistory(),b=a.mobile.path.isPath(b)?b:a.mobile.path.makeUrlAbsolute("#"+b,this._getDocumentBase())),b||this._getInitialContent()},_transitionFromHistory:function(a,b){var c=this._getHistory(),d="back"===a?c.getLast():c.getActive();return d&&d.transition||b},_handleDialog:function(b,c){var d,e,f=this.getActivePage();return f&&!f.data("mobile-dialog")?("back"===c.direction?this.back():this.forward(),!1):(d=c.pageUrl,e=this._getActiveHistory(),a.extend(b,{role:e.role,transition:this._transitionFromHistory(c.direction,b.transition),reverse:"back"===c.direction}),d)},_handleNavigate:function(b,c){var d=a.mobile.path.stripHash(b),e=this._getHistory(),f=0===e.stack.length?"none":this._transitionFromHistory(c.direction),g={changeHash:!1,fromHashChange:!0,reverse:"back"===c.direction};a.extend(g,c,{transition:f}),e.activeIndex>0&&d.indexOf(a.mobile.dialogHashKey)>-1&&(d=this._handleDialog(g,c),d===!1)||this._changeContent(this._handleDestination(d),g)},_changeContent:function(b,c){a.mobile.changePage(b,c)},_getBase:function(){return a.mobile.base},_getNs:function(){return a.mobile.ns},_enhance:function(a,b){return a.page({role:b})},_include:function(a,b){a.appendTo(this.element),this._enhance(a,b.role),a.page("bindRemove")},_find:function(b){var c,d=this._createFileUrl(b),e=this._createDataUrl(b),f=this._getInitialContent();return c=this.element.children("[data-"+this._getNs()+"url='"+a.mobile.path.hashToSelector(e)+"']"),0===c.length&&e&&!a.mobile.path.isPath(e)&&(c=this.element.children(a.mobile.path.hashToSelector("#"+e)).attr("data-"+this._getNs()+"url",e).jqmData("url",e)),0===c.length&&a.mobile.path.isFirstPageUrl(d)&&f&&f.parent().length&&(c=a(f)),c},_getLoader:function(){return a.mobile.loading()},_showLoading:function(b,c,d,e){this._loadMsg||(this._loadMsg=setTimeout(a.proxy(function(){this._getLoader().loader("show",c,d,e),this._loadMsg=0},this),b))},_hideLoading:function(){clearTimeout(this._loadMsg),this._loadMsg=0,this._getLoader().loader("hide")},_showError:function(){this._hideLoading(),this._showLoading(0,a.mobile.pageLoadErrorMessageTheme,a.mobile.pageLoadErrorMessage,!0),setTimeout(a.proxy(this,"_hideLoading"),1500)},_parse:function(b,c){var d,e=a("<div></div>");return e.get(0).innerHTML=b,d=e.find(":jqmData(role='page'), :jqmData(role='dialog')").first(),d.length||(d=a("<div data-"+this._getNs()+"role='page'>"+(b.split(/<\/?body[^>]*>/gim)[1]||"")+"</div>")),d.attr("data-"+this._getNs()+"url",this._createDataUrl(c)).attr("data-"+this._getNs()+"external-page",!0),d},_setLoadedTitle:function(b,c){var d=c.match(/<title[^>]*>([^<]*)/)&&RegExp.$1;d&&!b.jqmData("title")&&(d=a("<div>"+d+"</div>").text(),b.jqmData("title",d))},_isRewritableBaseTag:function(){return a.mobile.dynamicBaseEnabled&&!a.support.dynamicBaseTag},_createDataUrl:function(b){return a.mobile.path.convertUrlToDataUrl(b)},_createFileUrl:function(b){return a.mobile.path.getFilePath(b)},_triggerWithDeprecated:function(b,c,d){var e=a.Event("page"+b),f=a.Event(this.widgetName+b);return(d||this.element).trigger(e,c),this._trigger(b,f,c),{deprecatedEvent:e,event:f}},_loadSuccess:function(b,c,e,f){var g=this._createFileUrl(b);return a.proxy(function(h,i,j){var k,l=new RegExp("(<[^>]+\\bdata-"+this._getNs()+"role=[\"']?page[\"']?[^>]*>)"),m=new RegExp("\\bdata-"+this._getNs()+"url=[\"']?([^\"'>]*)[\"']?");l.test(h)&&RegExp.$1&&m.test(RegExp.$1)&&RegExp.$1&&(g=a.mobile.path.getFilePath(a("<div>"+RegExp.$1+"</div>").text()),g=this.window[0].encodeURIComponent(g)),e.prefetch===d&&this._getBase().set(g),k=this._parse(h,g),this._setLoadedTitle(k,h),c.xhr=j,c.textStatus=i,c.page=k,c.content=k,c.toPage=k,this._triggerWithDeprecated("load",c).event.isDefaultPrevented()||(this._isRewritableBaseTag()&&k&&this._getBase().rewrite(g,k),this._include(k,e),e.showLoadMsg&&this._hideLoading(),f.resolve(b,e,k))},this)},_loadDefaults:{type:"get",data:d,reloadPage:!1,reload:!1,role:d,showLoadMsg:!1,loadMsgDelay:50},load:function(b,c){var e,f,g,h,i=c&&c.deferred||a.Deferred(),j=c&&c.reload===d&&c.reloadPage!==d?{reload:c.reloadPage}:{},k=a.extend({},this._loadDefaults,c,j),l=null,m=a.mobile.path.makeUrlAbsolute(b,this._findBaseWithDefault());return k.data&&"get"===k.type&&(m=a.mobile.path.addSearchParams(m,k.data),k.data=d),k.data&&"post"===k.type&&(k.reload=!0),e=this._createFileUrl(m),f=this._createDataUrl(m),l=this._find(m),0===l.length&&a.mobile.path.isEmbeddedPage(e)&&!a.mobile.path.isFirstPageUrl(e)?(i.reject(m,k),i.promise()):(this._getBase().reset(),l.length&&!k.reload?(this._enhance(l,k.role),i.resolve(m,k,l),k.prefetch||this._getBase().set(b),i.promise()):(h={url:b,absUrl:m,toPage:b,prevPage:c?c.fromPage:d,dataUrl:f,deferred:i,options:k},g=this._triggerWithDeprecated("beforeload",h),g.deprecatedEvent.isDefaultPrevented()||g.event.isDefaultPrevented()?i.promise():(k.showLoadMsg&&this._showLoading(k.loadMsgDelay),k.prefetch===d&&this._getBase().reset(),a.mobile.allowCrossDomainPages||a.mobile.path.isSameDomain(a.mobile.path.documentUrl,m)?(a.ajax({url:e,type:k.type,data:k.data,contentType:k.contentType,dataType:"html",success:this._loadSuccess(m,h,k,i),error:this._loadError(m,h,k,i)}),i.promise()):(i.reject(m,k),i.promise()))))},_loadError:function(b,c,d,e){return a.proxy(function(f,g,h){this._getBase().set(a.mobile.path.get()),c.xhr=f,c.textStatus=g,c.errorThrown=h;var i=this._triggerWithDeprecated("loadfailed",c);i.deprecatedEvent.isDefaultPrevented()||i.event.isDefaultPrevented()||(d.showLoadMsg&&this._showError(),e.reject(b,d))},this)},_getTransitionHandler:function(b){return b=a.mobile._maybeDegradeTransition(b),a.mobile.transitionHandlers[b]||a.mobile.defaultTransitionHandler},_triggerCssTransitionEvents:function(b,c,d){var e=!1;d=d||"",c&&(b[0]===c[0]&&(e=!0),this._triggerWithDeprecated(d+"hide",{nextPage:b,toPage:b,prevPage:c,samePage:e},c)),this._triggerWithDeprecated(d+"show",{prevPage:c||a(""),toPage:b},b)},_cssTransition:function(b,c,d){var e,f,g=d.transition,h=d.reverse,i=d.deferred;this._triggerCssTransitionEvents(b,c,"before"),this._hideLoading(),e=this._getTransitionHandler(g),f=new e(g,h,b,c).transition(),f.done(a.proxy(function(){this._triggerCssTransitionEvents(b,c)},this)),f.done(function(){i.resolve.apply(i,arguments)})},_releaseTransitionLock:function(){f=!1,e.length>0&&a.mobile.changePage.apply(null,e.pop())},_removeActiveLinkClass:function(b){a.mobile.removeActiveLinkClass(b)},_loadUrl:function(b,c,d){d.target=b,d.deferred=a.Deferred(),this.load(b,d),d.deferred.done(a.proxy(function(a,b,d){f=!1,b.absUrl=c.absUrl,this.transition(d,c,b)},this)),d.deferred.fail(a.proxy(function(){this._removeActiveLinkClass(!0),this._releaseTransitionLock(),this._triggerWithDeprecated("changefailed",c)},this))},_triggerPageBeforeChange:function(b,c,d){var e;return c.prevPage=this.activePage,a.extend(c,{toPage:b,options:d}),c.absUrl="string"===a.type(b)?a.mobile.path.makeUrlAbsolute(b,this._findBaseWithDefault()):d.absUrl,e=this._triggerWithDeprecated("beforechange",c),e.event.isDefaultPrevented()||e.deprecatedEvent.isDefaultPrevented()?!1:!0},change:function(b,c){if(f)return void e.unshift(arguments);var d=a.extend({},a.mobile.changePage.defaults,c),g={};d.fromPage=d.fromPage||this.activePage,this._triggerPageBeforeChange(b,g,d)&&(b=g.toPage,"string"===a.type(b)?(f=!0,this._loadUrl(b,g,d)):this.transition(b,g,d))},transition:function(b,g,h){var i,j,k,l,m,n,o,p,q,r,s,t,u,v;if(f)return void e.unshift([b,h]);if(this._triggerPageBeforeChange(b,g,h)&&(g.prevPage=h.fromPage,v=this._triggerWithDeprecated("beforetransition",g),!v.deprecatedEvent.isDefaultPrevented()&&!v.event.isDefaultPrevented())){if(f=!0,b[0]!==a.mobile.firstPage[0]||h.dataUrl||(h.dataUrl=a.mobile.path.documentUrl.hrefNoHash),i=h.fromPage,j=h.dataUrl&&a.mobile.path.convertUrlToDataUrl(h.dataUrl)||b.jqmData("url"),k=j,l=a.mobile.path.getFilePath(j),m=a.mobile.navigate.history.getActive(),n=0===a.mobile.navigate.history.activeIndex,o=0,p=c.title,q=("dialog"===h.role||"dialog"===b.jqmData("role"))&&b.jqmData("dialog")!==!0,i&&i[0]===b[0]&&!h.allowSamePageTransition)return f=!1,this._triggerWithDeprecated("transition",g),this._triggerWithDeprecated("change",g),void(h.fromHashChange&&a.mobile.navigate.history.direct({url:j}));b.page({role:h.role}),h.fromHashChange&&(o="back"===h.direction?-1:1);try{c.activeElement&&"body"!==c.activeElement.nodeName.toLowerCase()?a(c.activeElement).blur():a("input:focus, textarea:focus, select:focus").blur()}catch(w){}r=!1,q&&m&&(m.url&&m.url.indexOf(a.mobile.dialogHashKey)>-1&&this.activePage&&!this.activePage.hasClass("ui-dialog")&&a.mobile.navigate.history.activeIndex>0&&(h.changeHash=!1,r=!0),j=m.url||"",j+=!r&&j.indexOf("#")>-1?a.mobile.dialogHashKey:"#"+a.mobile.dialogHashKey),s=m?b.jqmData("title")||b.children(":jqmData(role='header')").find(".ui-title").text():p,s&&p===c.title&&(p=s),b.jqmData("title")||b.jqmData("title",p),h.transition=h.transition||(o&&!n?m.transition:d)||(q?a.mobile.defaultDialogTransition:a.mobile.defaultPageTransition),!o&&r&&(a.mobile.navigate.history.getActive().pageUrl=k),j&&!h.fromHashChange&&(!a.mobile.path.isPath(j)&&j.indexOf("#")<0&&(j="#"+j),t={transition:h.transition,title:p,pageUrl:k,role:h.role},h.changeHash!==!1&&a.mobile.hashListeningEnabled?a.mobile.navigate(this.window[0].encodeURI(j),t,!0):b[0]!==a.mobile.firstPage[0]&&a.mobile.navigate.history.add(j,t)),c.title=p,a.mobile.activePage=b,this.activePage=b,h.reverse=h.reverse||0>o,u=a.Deferred(),this._cssTransition(b,i,{transition:h.transition,reverse:h.reverse,deferred:u}),u.done(a.proxy(function(c,d,e,f,i){a.mobile.removeActiveLinkClass(),h.duplicateCachedPage&&h.duplicateCachedPage.remove(),i||a.mobile.focusPage(b),this._releaseTransitionLock(),this._triggerWithDeprecated("transition",g),this._triggerWithDeprecated("change",g)},this))}},_findBaseWithDefault:function(){var b=this.activePage&&a.mobile.getClosestBaseUrl(this.activePage);return b||a.mobile.path.documentBase.hrefNoHash}}),a.mobile.navreadyDeferred=a.Deferred();var e=[],f=!1}(a),function(a,d){function e(a){for(;a&&("string"!=typeof a.nodeName||"a"!==a.nodeName.toLowerCase());)a=a.parentNode;return a}var f=a.Deferred(),g=a.Deferred(),h=function(){g.resolve(),g=null},i=a.mobile.path.documentUrl,j=null;a.mobile.loadPage=function(b,c){var d;return c=c||{},d=c.pageContainer||a.mobile.pageContainer,c.deferred=a.Deferred(),d.pagecontainer("load",b,c),c.deferred.promise()},a.mobile.back=function(){var c=b.navigator;this.phonegapNavigationEnabled&&c&&c.app&&c.app.backHistory?c.app.backHistory():a.mobile.pageContainer.pagecontainer("back")},a.mobile.focusPage=function(a){var b=a.find("[autofocus]"),c=a.find(".ui-title:eq(0)");return b.length?void b.focus():void(c.length?c.focus():a.focus())},a.mobile._maybeDegradeTransition=a.mobile._maybeDegradeTransition||function(a){return a},a.mobile.changePage=function(b,c){a.mobile.pageContainer.pagecontainer("change",b,c)},a.mobile.changePage.defaults={transition:d,reverse:!1,changeHash:!0,fromHashChange:!1,role:d,duplicateCachedPage:d,pageContainer:d,showLoadMsg:!0,dataUrl:d,fromPage:d,allowSamePageTransition:!1},a.mobile._registerInternalEvents=function(){var c=function(b,c){var d,e,f,g,h=!0;return!a.mobile.ajaxEnabled||b.is(":jqmData(ajax='false')")||!b.jqmHijackable().length||b.attr("target")?!1:(d=j&&j.attr("formaction")||b.attr("action"),g=(b.attr("method")||"get").toLowerCase(),d||(d=a.mobile.getClosestBaseUrl(b),"get"===g&&(d=a.mobile.path.parseUrl(d).hrefNoSearch),d===a.mobile.path.documentBase.hrefNoHash&&(d=i.hrefNoSearch)),d=a.mobile.path.makeUrlAbsolute(d,a.mobile.getClosestBaseUrl(b)),a.mobile.path.isExternal(d)&&!a.mobile.path.isPermittedCrossDomainRequest(i,d)?!1:(c||(e=b.serializeArray(),j&&j[0].form===b[0]&&(f=j.attr("name"),f&&(a.each(e,function(a,b){return b.name===f?(f="",!1):void 0}),f&&e.push({name:f,value:j.attr("value")}))),h={url:d,options:{type:g,data:a.param(e),transition:b.jqmData("transition"),reverse:"reverse"===b.jqmData("direction"),reloadPage:!0}}),h))};a.mobile.document.delegate("form","submit",function(b){var d;b.isDefaultPrevented()||(d=c(a(this)),d&&(a.mobile.changePage(d.url,d.options),b.preventDefault()))}),a.mobile.document.bind("vclick",function(b){var d,f,g=b.target,h=!1;if(!(b.which>1)&&a.mobile.linkBindingEnabled){if(j=a(g),a.data(g,"mobile-button")){if(!c(a(g).closest("form"),!0))return;g.parentNode&&(g=g.parentNode)}else{if(g=e(g),!g||"#"===a.mobile.path.parseUrl(g.getAttribute("href")||"#").hash)return;if(!a(g).jqmHijackable().length)return}~g.className.indexOf("ui-link-inherit")?g.parentNode&&(f=a.data(g.parentNode,"buttonElements")):f=a.data(g,"buttonElements"),f?g=f.outer:h=!0,d=a(g),h&&(d=d.closest(".ui-btn")),d.length>0&&!d.hasClass("ui-state-disabled")&&(a.mobile.removeActiveLinkClass(!0),a.mobile.activeClickedLink=d,a.mobile.activeClickedLink.addClass(a.mobile.activeBtnClass))}}),a.mobile.document.bind("click",function(c){if(a.mobile.linkBindingEnabled&&!c.isDefaultPrevented()){var f,g,h,j,k,l,m,n=e(c.target),o=a(n),p=function(){b.setTimeout(function(){a.mobile.removeActiveLinkClass(!0)},200)};if(a.mobile.activeClickedLink&&a.mobile.activeClickedLink[0]===c.target.parentNode&&p(),n&&!(c.which>1)&&o.jqmHijackable().length){if(o.is(":jqmData(rel='back')"))return a.mobile.back(),!1;if(f=a.mobile.getClosestBaseUrl(o),g=a.mobile.path.makeUrlAbsolute(o.attr("href")||"#",f),!a.mobile.ajaxEnabled&&!a.mobile.path.isEmbeddedPage(g))return void p();if(!(-1===g.search("#")||a.mobile.path.isExternal(g)&&a.mobile.path.isAbsoluteUrl(g))){if(g=g.replace(/[^#]*#/,""),!g)return void c.preventDefault();g=a.mobile.path.isPath(g)?a.mobile.path.makeUrlAbsolute(g,f):a.mobile.path.makeUrlAbsolute("#"+g,i.hrefNoHash)}if(h=o.is("[rel='external']")||o.is(":jqmData(ajax='false')")||o.is("[target]"),j=h||a.mobile.path.isExternal(g)&&!a.mobile.path.isPermittedCrossDomainRequest(i,g))return void p();k=o.jqmData("transition"),l="reverse"===o.jqmData("direction")||o.jqmData("back"),m=o.attr("data-"+a.mobile.ns+"rel")||d,a.mobile.changePage(g,{transition:k,reverse:l,role:m,link:o}),c.preventDefault()}}}),a.mobile.document.delegate(".ui-page","pageshow.prefetch",function(){var b=[];a(this).find("a:jqmData(prefetch)").each(function(){var c=a(this),d=c.attr("href");d&&-1===a.inArray(d,b)&&(b.push(d),a.mobile.loadPage(d,{role:c.attr("data-"+a.mobile.ns+"rel"),prefetch:!0}))})}),a.mobile.pageContainer.pagecontainer(),a.mobile.document.bind("pageshow",function(){g?g.done(a.mobile.resetActivePageHeight):a.mobile.resetActivePageHeight()
+}),a.mobile.window.bind("throttledresize",a.mobile.resetActivePageHeight)},a(function(){f.resolve()}),"complete"===c.readyState?h():a.mobile.window.load(h),a.when(f,a.mobile.navreadyDeferred).done(function(){a.mobile._registerInternalEvents()})}(a),function(a,b){a.mobile.Transition=function(){this.init.apply(this,arguments)},a.extend(a.mobile.Transition.prototype,{toPreClass:" ui-page-pre-in",init:function(b,c,d,e){a.extend(this,{name:b,reverse:c,$to:d,$from:e,deferred:new a.Deferred})},cleanFrom:function(){this.$from.removeClass(a.mobile.activePageClass+" out in reverse "+this.name).height("")},beforeDoneIn:function(){},beforeDoneOut:function(){},beforeStartOut:function(){},doneIn:function(){this.beforeDoneIn(),this.$to.removeClass("out in reverse "+this.name).height(""),this.toggleViewportClass(),a.mobile.window.scrollTop()!==this.toScroll&&this.scrollPage(),this.sequential||this.$to.addClass(a.mobile.activePageClass),this.deferred.resolve(this.name,this.reverse,this.$to,this.$from,!0)},doneOut:function(a,b,c,d){this.beforeDoneOut(),this.startIn(a,b,c,d)},hideIn:function(a){this.$to.css("z-index",-10),a.call(this),this.$to.css("z-index","")},scrollPage:function(){a.event.special.scrollstart.enabled=!1,(a.mobile.hideUrlBar||this.toScroll!==a.mobile.defaultHomeScroll)&&b.scrollTo(0,this.toScroll),setTimeout(function(){a.event.special.scrollstart.enabled=!0},150)},startIn:function(b,c,d,e){this.hideIn(function(){this.$to.addClass(a.mobile.activePageClass+this.toPreClass),e||a.mobile.focusPage(this.$to),this.$to.height(b+this.toScroll),d||this.scrollPage()}),this.$to.removeClass(this.toPreClass).addClass(this.name+" in "+c),d?this.doneIn():this.$to.animationComplete(a.proxy(function(){this.doneIn()},this))},startOut:function(b,c,d){this.beforeStartOut(b,c,d),this.$from.height(b+a.mobile.window.scrollTop()).addClass(this.name+" out"+c)},toggleViewportClass:function(){a.mobile.pageContainer.toggleClass("ui-mobile-viewport-transitioning viewport-"+this.name)},transition:function(){var b,c=this.reverse?" reverse":"",d=a.mobile.getScreenHeight(),e=a.mobile.maxTransitionWidth!==!1&&a.mobile.window.width()>a.mobile.maxTransitionWidth;return this.toScroll=a.mobile.navigate.history.getActive().lastScroll||a.mobile.defaultHomeScroll,b=!a.support.cssTransitions||!a.support.cssAnimations||e||!this.name||"none"===this.name||Math.max(a.mobile.window.scrollTop(),this.toScroll)>a.mobile.getMaxScrollForTransition(),this.toggleViewportClass(),this.$from&&!b?this.startOut(d,c,b):this.doneOut(d,c,b,!0),this.deferred.promise()}})}(a,this),function(a){a.mobile.SerialTransition=function(){this.init.apply(this,arguments)},a.extend(a.mobile.SerialTransition.prototype,a.mobile.Transition.prototype,{sequential:!0,beforeDoneOut:function(){this.$from&&this.cleanFrom()},beforeStartOut:function(b,c,d){this.$from.animationComplete(a.proxy(function(){this.doneOut(b,c,d)},this))}})}(a),function(a){a.mobile.ConcurrentTransition=function(){this.init.apply(this,arguments)},a.extend(a.mobile.ConcurrentTransition.prototype,a.mobile.Transition.prototype,{sequential:!1,beforeDoneIn:function(){this.$from&&this.cleanFrom()},beforeStartOut:function(a,b,c){this.doneOut(a,b,c)}})}(a),function(a){var b=function(){return 3*a.mobile.getScreenHeight()};a.mobile.transitionHandlers={sequential:a.mobile.SerialTransition,simultaneous:a.mobile.ConcurrentTransition},a.mobile.defaultTransitionHandler=a.mobile.transitionHandlers.sequential,a.mobile.transitionFallbacks={},a.mobile._maybeDegradeTransition=function(b){return b&&!a.support.cssTransform3d&&a.mobile.transitionFallbacks[b]&&(b=a.mobile.transitionFallbacks[b]),b},a.mobile.getMaxScrollForTransition=a.mobile.getMaxScrollForTransition||b}(a),function(a){a.mobile.transitionFallbacks.flip="fade"}(a,this),function(a){a.mobile.transitionFallbacks.flow="fade"}(a,this),function(a){a.mobile.transitionFallbacks.pop="fade"}(a,this),function(a){a.mobile.transitionHandlers.slide=a.mobile.transitionHandlers.simultaneous,a.mobile.transitionFallbacks.slide="fade"}(a,this),function(a){a.mobile.transitionFallbacks.slidedown="fade"}(a,this),function(a){a.mobile.transitionFallbacks.slidefade="fade"}(a,this),function(a){a.mobile.transitionFallbacks.slideup="fade"}(a,this),function(a){a.mobile.transitionFallbacks.turn="fade"}(a,this),function(a){a.mobile.degradeInputs={color:!1,date:!1,datetime:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:"number",search:"text",tel:!1,time:!1,url:!1,week:!1},a.mobile.page.prototype.options.degradeInputs=a.mobile.degradeInputs,a.mobile.degradeInputsWithin=function(b){b=a(b),b.find("input").not(a.mobile.page.prototype.keepNativeSelector()).each(function(){var b,c,d,e,f=a(this),g=this.getAttribute("type"),h=a.mobile.degradeInputs[g]||"text";a.mobile.degradeInputs[g]&&(b=a("<div>").html(f.clone()).html(),c=b.indexOf(" type=")>-1,d=c?/\s+type=["']?\w+['"]?/:/\/?>/,e=' type="'+h+'" data-'+a.mobile.ns+'type="'+g+'"'+(c?"":">"),f.replaceWith(b.replace(d,e)))})}}(a),function(a,b,c){a.widget("mobile.page",a.mobile.page,{options:{closeBtn:"left",closeBtnText:"Close",overlayTheme:"a",corners:!0,dialog:!1},_create:function(){this._super(),this.options.dialog&&(a.extend(this,{_inner:this.element.children(),_headerCloseButton:null}),this.options.enhanced||this._setCloseBtn(this.options.closeBtn))},_enhance:function(){this._super(),this.options.dialog&&this.element.addClass("ui-dialog").wrapInner(a("<div/>",{role:"dialog","class":"ui-dialog-contain ui-overlay-shadow"+(this.options.corners?" ui-corner-all":"")}))},_setOptions:function(b){var d,e,f=this.options;b.corners!==c&&this._inner.toggleClass("ui-corner-all",!!b.corners),b.overlayTheme!==c&&a.mobile.activePage[0]===this.element[0]&&(f.overlayTheme=b.overlayTheme,this._handlePageBeforeShow()),b.closeBtnText!==c&&(d=f.closeBtn,e=b.closeBtnText),b.closeBtn!==c&&(d=b.closeBtn),d&&this._setCloseBtn(d,e),this._super(b)},_handlePageBeforeShow:function(){this.options.overlayTheme&&this.options.dialog?(this.removeContainerBackground(),this.setContainerBackground(this.options.overlayTheme)):this._super()},_setCloseBtn:function(b,c){var d,e=this._headerCloseButton;b="left"===b?"left":"right"===b?"right":"none","none"===b?e&&(e.remove(),e=null):e?(e.removeClass("ui-btn-left ui-btn-right").addClass("ui-btn-"+b),c&&e.text(c)):(d=this._inner.find(":jqmData(role='header')").first(),e=a("<a></a>",{href:"#","class":"ui-btn ui-corner-all ui-icon-delete ui-btn-icon-notext ui-btn-"+b}).attr("data-"+a.mobile.ns+"rel","back").text(c||this.options.closeBtnText||"").prependTo(d)),this._headerCloseButton=e}})}(a,this),function(a,b,c){a.widget("mobile.dialog",{options:{closeBtn:"left",closeBtnText:"Close",overlayTheme:"a",corners:!0},_handlePageBeforeShow:function(){this._isCloseable=!0,this.options.overlayTheme&&this.element.page("removeContainerBackground").page("setContainerBackground",this.options.overlayTheme)},_handlePageBeforeHide:function(){this._isCloseable=!1},_handleVClickSubmit:function(b){var c,d=a(b.target).closest("vclick"===b.type?"a":"form");d.length&&!d.jqmData("transition")&&(c={},c["data-"+a.mobile.ns+"transition"]=(a.mobile.navigate.history.getActive()||{}).transition||a.mobile.defaultDialogTransition,c["data-"+a.mobile.ns+"direction"]="reverse",d.attr(c))},_create:function(){var b=this.element,c=this.options;b.addClass("ui-dialog").wrapInner(a("<div/>",{role:"dialog","class":"ui-dialog-contain ui-overlay-shadow"+(c.corners?" ui-corner-all":"")})),a.extend(this,{_isCloseable:!1,_inner:b.children(),_headerCloseButton:null}),this._on(b,{vclick:"_handleVClickSubmit",submit:"_handleVClickSubmit",pagebeforeshow:"_handlePageBeforeShow",pagebeforehide:"_handlePageBeforeHide"}),this._setCloseBtn(c.closeBtn)},_setOptions:function(b){var d,e,f=this.options;b.corners!==c&&this._inner.toggleClass("ui-corner-all",!!b.corners),b.overlayTheme!==c&&a.mobile.activePage[0]===this.element[0]&&(f.overlayTheme=b.overlayTheme,this._handlePageBeforeShow()),b.closeBtnText!==c&&(d=f.closeBtn,e=b.closeBtnText),b.closeBtn!==c&&(d=b.closeBtn),d&&this._setCloseBtn(d,e),this._super(b)},_setCloseBtn:function(b,c){var d,e=this._headerCloseButton;b="left"===b?"left":"right"===b?"right":"none","none"===b?e&&(e.remove(),e=null):e?(e.removeClass("ui-btn-left ui-btn-right").addClass("ui-btn-"+b),c&&e.text(c)):(d=this._inner.find(":jqmData(role='header')").first(),e=a("<a></a>",{role:"button",href:"#","class":"ui-btn ui-corner-all ui-icon-delete ui-btn-icon-notext ui-btn-"+b}).text(c||this.options.closeBtnText||"").prependTo(d),this._on(e,{click:"close"})),this._headerCloseButton=e},close:function(){var b=a.mobile.navigate.history;this._isCloseable&&(this._isCloseable=!1,a.mobile.hashListeningEnabled&&b.activeIndex>0?a.mobile.back():a.mobile.pageContainer.pagecontainer("back"))}})}(a,this),function(a,b){var c=/([A-Z])/g,d=function(a){return"ui-btn-icon-"+(null===a?"left":a)};a.widget("mobile.collapsible",{options:{enhanced:!1,expandCueText:null,collapseCueText:null,collapsed:!0,heading:"h1,h2,h3,h4,h5,h6,legend",collapsedIcon:null,expandedIcon:null,iconpos:null,theme:null,contentTheme:null,inset:null,corners:null,mini:null},_create:function(){var b=this.element,c={accordion:b.closest(":jqmData(role='collapsible-set'),:jqmData(role='collapsibleset')"+(a.mobile.collapsibleset?", :mobile-collapsibleset":"")).addClass("ui-collapsible-set")};this._ui=c,this._renderedOptions=this._getOptions(this.options),this.options.enhanced?(c.heading=this.element.children(".ui-collapsible-heading"),c.content=c.heading.next(),c.anchor=c.heading.children(),c.status=c.anchor.children(".ui-collapsible-heading-status")):this._enhance(b,c),this._on(c.heading,{tap:function(){c.heading.find("a").first().addClass(a.mobile.activeBtnClass)},click:function(a){this._handleExpandCollapse(!c.heading.hasClass("ui-collapsible-heading-collapsed")),a.preventDefault(),a.stopPropagation()}})},_getOptions:function(b){var d,e=this._ui.accordion,f=this._ui.accordionWidget;b=a.extend({},b),e.length&&!f&&(this._ui.accordionWidget=f=e.data("mobile-collapsibleset"));for(d in b)b[d]=null!=b[d]?b[d]:f?f.options[d]:e.length?a.mobile.getAttribute(e[0],d.replace(c,"-$1").toLowerCase()):null,null==b[d]&&(b[d]=a.mobile.collapsible.defaults[d]);return b},_themeClassFromOption:function(a,b){return b?"none"===b?"":a+b:""},_enhance:function(b,c){var e,f=this._renderedOptions,g=this._themeClassFromOption("ui-body-",f.contentTheme);return b.addClass("ui-collapsible "+(f.inset?"ui-collapsible-inset ":"")+(f.inset&&f.corners?"ui-corner-all ":"")+(g?"ui-collapsible-themed-content ":"")),c.originalHeading=b.children(this.options.heading).first(),c.content=b.wrapInner("<div class='ui-collapsible-content "+g+"'></div>").children(".ui-collapsible-content"),c.heading=c.originalHeading,c.heading.is("legend")&&(c.heading=a("<div role='heading'>"+c.heading.html()+"</div>"),c.placeholder=a("<div><!-- placeholder for legend --></div>").insertBefore(c.originalHeading),c.originalHeading.remove()),e=f.collapsed?f.collapsedIcon?"ui-icon-"+f.collapsedIcon:"":f.expandedIcon?"ui-icon-"+f.expandedIcon:"",c.status=a("<span class='ui-collapsible-heading-status'></span>"),c.anchor=c.heading.detach().addClass("ui-collapsible-heading").append(c.status).wrapInner("<a href='#' class='ui-collapsible-heading-toggle'></a>").find("a").first().addClass("ui-btn "+(e?e+" ":"")+(e?d(f.iconpos)+" ":"")+this._themeClassFromOption("ui-btn-",f.theme)+" "+(f.mini?"ui-mini ":"")),c.heading.insertBefore(c.content),this._handleExpandCollapse(this.options.collapsed),c},refresh:function(){this._applyOptions(this.options),this._renderedOptions=this._getOptions(this.options)},_applyOptions:function(a){var c,e,f,g,h,i=this.element,j=this._renderedOptions,k=this._ui,l=k.anchor,m=k.status,n=this._getOptions(a);a.collapsed!==b&&this._handleExpandCollapse(a.collapsed),c=i.hasClass("ui-collapsible-collapsed"),c?n.expandCueText!==b&&m.text(n.expandCueText):n.collapseCueText!==b&&m.text(n.collapseCueText),h=n.collapsedIcon!==b?n.collapsedIcon!==!1:j.collapsedIcon!==!1,(n.iconpos!==b||n.collapsedIcon!==b||n.expandedIcon!==b)&&(l.removeClass([d(j.iconpos)].concat(j.expandedIcon?["ui-icon-"+j.expandedIcon]:[]).concat(j.collapsedIcon?["ui-icon-"+j.collapsedIcon]:[]).join(" ")),h&&l.addClass([d(n.iconpos!==b?n.iconpos:j.iconpos)].concat(c?["ui-icon-"+(n.collapsedIcon!==b?n.collapsedIcon:j.collapsedIcon)]:["ui-icon-"+(n.expandedIcon!==b?n.expandedIcon:j.expandedIcon)]).join(" "))),n.theme!==b&&(f=this._themeClassFromOption("ui-btn-",j.theme),e=this._themeClassFromOption("ui-btn-",n.theme),l.removeClass(f).addClass(e)),n.contentTheme!==b&&(f=this._themeClassFromOption("ui-body-",j.contentTheme),e=this._themeClassFromOption("ui-body-",n.contentTheme),k.content.removeClass(f).addClass(e)),n.inset!==b&&(i.toggleClass("ui-collapsible-inset",n.inset),g=!(!n.inset||!n.corners&&!j.corners)),n.corners!==b&&(g=!(!n.corners||!n.inset&&!j.inset)),g!==b&&i.toggleClass("ui-corner-all",g),n.mini!==b&&l.toggleClass("ui-mini",n.mini)},_setOptions:function(a){this._applyOptions(a),this._super(a),this._renderedOptions=this._getOptions(this.options)},_handleExpandCollapse:function(b){var c=this._renderedOptions,d=this._ui;d.status.text(b?c.expandCueText:c.collapseCueText),d.heading.toggleClass("ui-collapsible-heading-collapsed",b).find("a").first().toggleClass("ui-icon-"+c.expandedIcon,!b).toggleClass("ui-icon-"+c.collapsedIcon,b||c.expandedIcon===c.collapsedIcon).removeClass(a.mobile.activeBtnClass),this.element.toggleClass("ui-collapsible-collapsed",b),d.content.toggleClass("ui-collapsible-content-collapsed",b).attr("aria-hidden",b).trigger("updatelayout"),this.options.collapsed=b,this._trigger(b?"collapse":"expand")},expand:function(){this._handleExpandCollapse(!1)},collapse:function(){this._handleExpandCollapse(!0)},_destroy:function(){var a=this._ui,b=this.options;b.enhanced||(a.placeholder?(a.originalHeading.insertBefore(a.placeholder),a.placeholder.remove(),a.heading.remove()):(a.status.remove(),a.heading.removeClass("ui-collapsible-heading ui-collapsible-heading-collapsed").children().contents().unwrap()),a.anchor.contents().unwrap(),a.content.contents().unwrap(),this.element.removeClass("ui-collapsible ui-collapsible-collapsed ui-collapsible-themed-content ui-collapsible-inset ui-corner-all"))}}),a.mobile.collapsible.defaults={expandCueText:" click to expand contents",collapseCueText:" click to collapse contents",collapsedIcon:"plus",contentTheme:"inherit",expandedIcon:"minus",iconpos:"left",inset:!0,corners:!0,theme:"inherit",mini:!1}}(a),function(a){function b(b){var d,e=b.length,f=[];for(d=0;e>d;d++)b[d].className.match(c)||f.push(b[d]);return a(f)}var c=/\bui-screen-hidden\b/;a.mobile.behaviors.addFirstLastClasses={_getVisibles:function(a,c){var d;return c?d=b(a):(d=a.filter(":visible"),0===d.length&&(d=b(a))),d},_addFirstLastClasses:function(a,b,c){a.removeClass("ui-first-child ui-last-child"),b.eq(0).addClass("ui-first-child").end().last().addClass("ui-last-child"),c||this.element.trigger("updatelayout")},_removeFirstLastClasses:function(a){a.removeClass("ui-first-child ui-last-child")}}}(a),function(a,b){var c=":mobile-collapsible, "+a.mobile.collapsible.initSelector;a.widget("mobile.collapsibleset",a.extend({initSelector:":jqmData(role='collapsible-set'),:jqmData(role='collapsibleset')",options:a.extend({enhanced:!1},a.mobile.collapsible.defaults),_handleCollapsibleExpand:function(b){var c=a(b.target).closest(".ui-collapsible");c.parent().is(":mobile-collapsibleset, :jqmData(role='collapsible-set')")&&c.siblings(".ui-collapsible:not(.ui-collapsible-collapsed)").collapsible("collapse")},_create:function(){var b=this.element,c=this.options;a.extend(this,{_classes:""}),c.enhanced||(b.addClass("ui-collapsible-set "+this._themeClassFromOption("ui-group-theme-",c.theme)+" "+(c.corners&&c.inset?"ui-corner-all ":"")),this.element.find(a.mobile.collapsible.initSelector).collapsible()),this._on(b,{collapsibleexpand:"_handleCollapsibleExpand"})},_themeClassFromOption:function(a,b){return b?"none"===b?"":a+b:""},_init:function(){this._refresh(!0),this.element.children(c).filter(":jqmData(collapsed='false')").collapsible("expand")},_setOptions:function(a){var c,d,e=this.element,f=this._themeClassFromOption("ui-group-theme-",a.theme);return f&&e.removeClass(this._themeClassFromOption("ui-group-theme-",this.options.theme)).addClass(f),a.inset!==b&&(d=!(!a.inset||!a.corners&&!this.options.corners)),a.corners!==b&&(d=!(!a.corners||!a.inset&&!this.options.inset)),d!==b&&e.toggleClass("ui-corner-all",d),c=this._super(a),this.element.children(":mobile-collapsible").collapsible("refresh"),c},_destroy:function(){var a=this.element;this._removeFirstLastClasses(a.children(c)),a.removeClass("ui-collapsible-set ui-corner-all "+this._themeClassFromOption("ui-group-theme-",this.options.theme)).children(":mobile-collapsible").collapsible("destroy")},_refresh:function(b){var d=this.element.children(c);this.element.find(a.mobile.collapsible.initSelector).not(".ui-collapsible").collapsible(),this._addFirstLastClasses(d,this._getVisibles(d,b),b)},refresh:function(){this._refresh(!1)}},a.mobile.behaviors.addFirstLastClasses))}(a),function(a){a.fn.fieldcontain=function(){return this.addClass("ui-field-contain")}}(a),function(a){a.fn.grid=function(b){return this.each(function(){var c,d,e=a(this),f=a.extend({grid:null},b),g=e.children(),h={solo:1,a:2,b:3,c:4,d:5},i=f.grid;if(!i)if(g.length<=5)for(d in h)h[d]===g.length&&(i=d);else i="a",e.addClass("ui-grid-duo");c=h[i],e.addClass("ui-grid-"+i),g.filter(":nth-child("+c+"n+1)").addClass("ui-block-a"),c>1&&g.filter(":nth-child("+c+"n+2)").addClass("ui-block-b"),c>2&&g.filter(":nth-child("+c+"n+3)").addClass("ui-block-c"),c>3&&g.filter(":nth-child("+c+"n+4)").addClass("ui-block-d"),c>4&&g.filter(":nth-child("+c+"n+5)").addClass("ui-block-e")})}}(a),function(a,b){a.widget("mobile.navbar",{options:{iconpos:"top",grid:null},_create:function(){var d=this.element,e=d.find("a, button"),f=e.filter(":jqmData(icon)").length?this.options.iconpos:b;d.addClass("ui-navbar").attr("role","navigation").find("ul").jqmEnhanceable().grid({grid:this.options.grid}),e.each(function(){var b=a.mobile.getAttribute(this,"icon"),c=a.mobile.getAttribute(this,"theme"),d="ui-btn";c&&(d+=" ui-btn-"+c),b&&(d+=" ui-icon-"+b+" ui-btn-icon-"+f),a(this).addClass(d)}),d.delegate("a","vclick",function(){var b=a(this);b.hasClass("ui-state-disabled")||b.hasClass("ui-disabled")||b.hasClass(a.mobile.activeBtnClass)||(e.removeClass(a.mobile.activeBtnClass),b.addClass(a.mobile.activeBtnClass),a(c).one("pagehide",function(){b.removeClass(a.mobile.activeBtnClass)}))}),d.closest(".ui-page").bind("pagebeforeshow",function(){e.filter(".ui-state-persist").addClass(a.mobile.activeBtnClass)})}})}(a),function(a){var b=a.mobile.getAttribute;a.widget("mobile.listview",a.extend({options:{theme:null,countTheme:null,dividerTheme:null,icon:"carat-r",splitIcon:"carat-r",splitTheme:null,corners:!0,shadow:!0,inset:!1},_create:function(){var a=this,b="";b+=a.options.inset?" ui-listview-inset":"",a.options.inset&&(b+=a.options.corners?" ui-corner-all":"",b+=a.options.shadow?" ui-shadow":""),a.element.addClass(" ui-listview"+b),a.refresh(!0)},_findFirstElementByTagName:function(a,b,c,d){var e={};for(e[c]=e[d]=!0;a;){if(e[a.nodeName])return a;a=a[b]}return null},_addThumbClasses:function(b){var c,d,e=b.length;for(c=0;e>c;c++)d=a(this._findFirstElementByTagName(b[c].firstChild,"nextSibling","img","IMG")),d.length&&a(this._findFirstElementByTagName(d[0].parentNode,"parentNode","li","LI")).addClass(d.hasClass("ui-li-icon")?"ui-li-has-icon":"ui-li-has-thumb")},_getChildrenByTagName:function(b,c,d){var e=[],f={};for(f[c]=f[d]=!0,b=b.firstChild;b;)f[b.nodeName]&&e.push(b),b=b.nextSibling;return a(e)},_beforeListviewRefresh:a.noop,_afterListviewRefresh:a.noop,refresh:function(c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x=this.options,y=this.element,z=!!a.nodeName(y[0],"ol"),A=y.attr("start"),B={},C=y.find(".ui-li-count"),D=b(y[0],"counttheme")||this.options.countTheme,E=D?"ui-body-"+D:"ui-body-inherit";for(x.theme&&y.addClass("ui-group-theme-"+x.theme),z&&(A||0===A)&&(n=parseInt(A,10)-1,y.css("counter-reset","listnumbering "+n)),this._beforeListviewRefresh(),w=this._getChildrenByTagName(y[0],"li","LI"),e=0,f=w.length;f>e;e++)g=w.eq(e),h="",(c||g[0].className.search(/\bui-li-static\b|\bui-li-divider\b/)<0)&&(l=this._getChildrenByTagName(g[0],"a","A"),m="list-divider"===b(g[0],"role"),p=g.attr("value"),i=b(g[0],"theme"),l.length&&l[0].className.search(/\bui-btn\b/)<0&&!m?(j=b(g[0],"icon"),k=j===!1?!1:j||x.icon,l.removeClass("ui-link"),d="ui-btn",i&&(d+=" ui-btn-"+i),l.length>1?(h="ui-li-has-alt",q=l.last(),r=b(q[0],"theme")||x.splitTheme||b(g[0],"theme",!0),s=r?" ui-btn-"+r:"",t=b(q[0],"icon")||b(g[0],"icon")||x.splitIcon,u="ui-btn ui-btn-icon-notext ui-icon-"+t+s,q.attr("title",a.trim(q.getEncodedText())).addClass(u).empty(),l=l.first()):k&&(d+=" ui-btn-icon-right ui-icon-"+k),l.addClass(d)):m?(v=b(g[0],"theme")||x.dividerTheme||x.theme,h="ui-li-divider ui-bar-"+(v?v:"inherit"),g.attr("role","heading")):l.length<=0&&(h="ui-li-static ui-body-"+(i?i:"inherit")),z&&p&&(o=parseInt(p,10)-1,g.css("counter-reset","listnumbering "+o))),B[h]||(B[h]=[]),B[h].push(g[0]);for(h in B)a(B[h]).addClass(h);C.each(function(){a(this).closest("li").addClass("ui-li-has-count")}),E&&C.not("[class*='ui-body-']").addClass(E),this._addThumbClasses(w),this._addThumbClasses(w.find(".ui-btn")),this._afterListviewRefresh(),this._addFirstLastClasses(w,this._getVisibles(w,c),c)}},a.mobile.behaviors.addFirstLastClasses))}(a),function(a){function b(b){var c=a.trim(b.text())||null;return c?c=c.slice(0,1).toUpperCase():null}a.widget("mobile.listview",a.mobile.listview,{options:{autodividers:!1,autodividersSelector:b},_beforeListviewRefresh:function(){this.options.autodividers&&(this._replaceDividers(),this._superApply(arguments))},_replaceDividers:function(){var b,d,e,f,g,h=null,i=this.element;for(i.children("li:jqmData(role='list-divider')").remove(),d=i.children("li"),b=0;b<d.length;b++)e=d[b],f=this.options.autodividersSelector(a(e)),f&&h!==f&&(g=c.createElement("li"),g.appendChild(c.createTextNode(f)),g.setAttribute("data-"+a.mobile.ns+"role","list-divider"),e.parentNode.insertBefore(g,e)),h=f}})}(a),function(a){var b=/(^|\s)ui-li-divider($|\s)/,c=/(^|\s)ui-screen-hidden($|\s)/;a.widget("mobile.listview",a.mobile.listview,{options:{hideDividers:!1},_afterListviewRefresh:function(){var a,d,e,f=!0;if(this._superApply(arguments),this.options.hideDividers)for(a=this._getChildrenByTagName(this.element[0],"li","LI"),d=a.length-1;d>-1;d--)e=a[d],e.className.match(b)?(f&&(e.className=e.className+" ui-screen-hidden"),f=!0):e.className.match(c)||(f=!1)}})}(a),function(a){a.mobile.nojs=function(b){a(":jqmData(role='nojs')",b).addClass("ui-nojs")}}(a),function(a){a.mobile.behaviors.formReset={_handleFormReset:function(){this._on(this.element.closest("form"),{reset:function(){this._delay("_reset")}})}}}(a),function(a,b){var c=a.mobile.path.hashToSelector;a.widget("mobile.checkboxradio",a.extend({initSelector:"input:not( :jqmData(role='flipswitch' ) )[type='checkbox'],input[type='radio']:not( :jqmData(role='flipswitch' ))",options:{theme:"inherit",mini:!1,wrapperClass:null,enhanced:!1,iconpos:"left"},_create:function(){var b=this.element,c=this.options,d=function(a,b){return a.jqmData(b)||a.closest("form, fieldset").jqmData(b)},e=this.options.enhanced?{element:this.element.siblings("label"),isParent:!1}:this._findLabel(),f=b[0].type,g="ui-"+f+"-on",h="ui-"+f+"-off";("checkbox"===f||"radio"===f)&&(this.element[0].disabled&&(this.options.disabled=!0),c.iconpos=d(b,"iconpos")||e.element.attr("data-"+a.mobile.ns+"iconpos")||c.iconpos,c.mini=d(b,"mini")||c.mini,a.extend(this,{input:b,label:e.element,labelIsParent:e.isParent,inputtype:f,checkedClass:g,uncheckedClass:h}),this.options.enhanced||this._enhance(),this._on(e.element,{vmouseover:"_handleLabelVMouseOver",vclick:"_handleLabelVClick"}),this._on(b,{vmousedown:"_cacheVals",vclick:"_handleInputVClick",focus:"_handleInputFocus",blur:"_handleInputBlur"}),this._handleFormReset(),this.refresh())},_findLabel:function(){var b,d,e,f=this.element,g=f[0].labels;return g&&g.length>0?(d=a(g[0]),e=a.contains(d[0],f[0])):(b=f.closest("label"),e=b.length>0,d=e?b:a(this.document[0].getElementsByTagName("label")).filter("[for='"+c(f[0].id)+"']").first()),{element:d,isParent:e}},_enhance:function(){this.label.addClass("ui-btn ui-corner-all"),this.labelIsParent?this.input.add(this.label).wrapAll(this._wrapper()):(this.element.wrap(this._wrapper()),this.element.parent().prepend(this.label)),this._setOptions({theme:this.options.theme,iconpos:this.options.iconpos,mini:this.options.mini})},_wrapper:function(){return a("<div class='"+(this.options.wrapperClass?this.options.wrapperClass:"")+" ui-"+this.inputtype+(this.options.disabled?" ui-state-disabled":"")+"' ></div>")},_handleInputFocus:function(){this.label.addClass(a.mobile.focusClass)},_handleInputBlur:function(){this.label.removeClass(a.mobile.focusClass)},_handleInputVClick:function(){this.element.prop("checked",this.element.is(":checked")),this._getInputSet().not(this.element).prop("checked",!1),this._updateAll(!0)},_handleLabelVMouseOver:function(a){this.label.parent().hasClass("ui-state-disabled")&&a.stopPropagation()},_handleLabelVClick:function(a){var b=this.element;return b.is(":disabled")?void a.preventDefault():(this._cacheVals(),b.prop("checked","radio"===this.inputtype&&!0||!b.prop("checked")),b.triggerHandler("click"),this._getInputSet().not(b).prop("checked",!1),this._updateAll(),!1)},_cacheVals:function(){this._getInputSet().each(function(){a(this).attr("data-"+a.mobile.ns+"cacheVal",this.checked)})},_getInputSet:function(){var b,d,e=this.element[0],f=e.name,g=e.form,h=this.element.parents().last().get(0),i=this.element;return f&&"radio"===this.inputtype&&h&&(b="input[type='radio'][name='"+c(f)+"']",g?(d=g.getAttribute("id"),d&&(i=a(b+"[form='"+c(d)+"']",h)),i=a(g).find(b).filter(function(){return this.form===g}).add(i)):i=a(b,h).filter(function(){return!this.form})),i},_updateAll:function(b){var c=this;this._getInputSet().each(function(){var d=a(this);!this.checked&&"checkbox"!==c.inputtype||b||d.trigger("change")}).checkboxradio("refresh")},_reset:function(){this.refresh()},_hasIcon:function(){var b,c,d=a.mobile.controlgroup;return d&&(b=this.element.closest(":mobile-controlgroup,"+d.prototype.initSelector),b.length>0)?(c=a.data(b[0],"mobile-controlgroup"),"horizontal"!==(c?c.options.type:b.attr("data-"+a.mobile.ns+"type"))):!0},refresh:function(){var b=this.element[0].checked,c=a.mobile.activeBtnClass,d="ui-btn-icon-"+this.options.iconpos,e=[],f=[];this._hasIcon()?(f.push(c),e.push(d)):(f.push(d),(b?e:f).push(c)),b?(e.push(this.checkedClass),f.push(this.uncheckedClass)):(e.push(this.uncheckedClass),f.push(this.checkedClass)),this.widget().toggleClass("ui-state-disabled",this.element.prop("disabled")),this.label.addClass(e.join(" ")).removeClass(f.join(" "))},widget:function(){return this.label.parent()},_setOptions:function(a){var c=this.label,d=this.options,e=this.widget(),f=this._hasIcon();a.disabled!==b&&(this.input.prop("disabled",!!a.disabled),e.toggleClass("ui-state-disabled",!!a.disabled)),a.mini!==b&&e.toggleClass("ui-mini",!!a.mini),a.theme!==b&&c.removeClass("ui-btn-"+d.theme).addClass("ui-btn-"+a.theme),a.wrapperClass!==b&&e.removeClass(d.wrapperClass).addClass(a.wrapperClass),a.iconpos!==b&&f?c.removeClass("ui-btn-icon-"+d.iconpos).addClass("ui-btn-icon-"+a.iconpos):f||c.removeClass("ui-btn-icon-"+d.iconpos),this._super(a)}},a.mobile.behaviors.formReset))}(a),function(a,b){a.widget("mobile.button",{initSelector:"input[type='button'], input[type='submit'], input[type='reset']",options:{theme:null,icon:null,iconpos:"left",iconshadow:!1,corners:!0,shadow:!0,inline:null,mini:null,wrapperClass:null,enhanced:!1},_create:function(){this.element.is(":disabled")&&(this.options.disabled=!0),this.options.enhanced||this._enhance(),a.extend(this,{wrapper:this.element.parent()}),this._on({focus:function(){this.widget().addClass(a.mobile.focusClass)},blur:function(){this.widget().removeClass(a.mobile.focusClass)}}),this.refresh(!0)},_enhance:function(){this.element.wrap(this._button())},_button:function(){var b=this.options,c=this._getIconClasses(this.options);return a("<div class='ui-btn ui-input-btn"+(b.wrapperClass?" "+b.wrapperClass:"")+(b.theme?" ui-btn-"+b.theme:"")+(b.corners?" ui-corner-all":"")+(b.shadow?" ui-shadow":"")+(b.inline?" ui-btn-inline":"")+(b.mini?" ui-mini":"")+(b.disabled?" ui-state-disabled":"")+(c?" "+c:"")+"' >"+this.element.val()+"</div>")},widget:function(){return this.wrapper},_destroy:function(){this.element.insertBefore(this.wrapper),this.wrapper.remove()},_getIconClasses:function(a){return a.icon?"ui-icon-"+a.icon+(a.iconshadow?" ui-shadow-icon":"")+" ui-btn-icon-"+a.iconpos:""},_setOptions:function(c){var d=this.widget();c.theme!==b&&d.removeClass(this.options.theme).addClass("ui-btn-"+c.theme),c.corners!==b&&d.toggleClass("ui-corner-all",c.corners),c.shadow!==b&&d.toggleClass("ui-shadow",c.shadow),c.inline!==b&&d.toggleClass("ui-btn-inline",c.inline),c.mini!==b&&d.toggleClass("ui-mini",c.mini),c.disabled!==b&&(this.element.prop("disabled",c.disabled),d.toggleClass("ui-state-disabled",c.disabled)),(c.icon!==b||c.iconshadow!==b||c.iconpos!==b)&&d.removeClass(this._getIconClasses(this.options)).addClass(this._getIconClasses(a.extend({},this.options,c))),this._super(c)},refresh:function(b){var c,d=this.element.prop("disabled");this.options.icon&&"notext"===this.options.iconpos&&this.element.attr("title")&&this.element.attr("title",this.element.val()),b||(c=this.element.detach(),a(this.wrapper).text(this.element.val()).append(c)),this.options.disabled!==d&&this._setOptions({disabled:d})}})}(a),function(a){var b=a("meta[name=viewport]"),c=b.attr("content"),d=c+",maximum-scale=1, user-scalable=no",e=c+",maximum-scale=10, user-scalable=yes",f=/(user-scalable[\s]*=[\s]*no)|(maximum-scale[\s]*=[\s]*1)[$,\s]/.test(c);a.mobile.zoom=a.extend({},{enabled:!f,locked:!1,disable:function(c){f||a.mobile.zoom.locked||(b.attr("content",d),a.mobile.zoom.enabled=!1,a.mobile.zoom.locked=c||!1)},enable:function(c){f||a.mobile.zoom.locked&&c!==!0||(b.attr("content",e),a.mobile.zoom.enabled=!0,a.mobile.zoom.locked=!1)},restore:function(){f||(b.attr("content",c),a.mobile.zoom.enabled=!0)}})}(a),function(a,b){a.widget("mobile.textinput",{initSelector:"input[type='text'],input[type='search'],:jqmData(type='search'),input[type='number'],:jqmData(type='number'),input[type='password'],input[type='email'],input[type='url'],input[type='tel'],textarea,input[type='time'],input[type='date'],input[type='month'],input[type='week'],input[type='datetime'],input[type='datetime-local'],input[type='color'],input:not([type]),input[type='file']",options:{theme:null,corners:!0,mini:!1,preventFocusZoom:/iPhone|iPad|iPod/.test(navigator.platform)&&navigator.userAgent.indexOf("AppleWebKit")>-1,wrapperClass:"",enhanced:!1},_create:function(){var b=this.options,c=this.element.is("[type='search'], :jqmData(type='search')"),d="TEXTAREA"===this.element[0].tagName,e=this.element.is("[data-"+(a.mobile.ns||"")+"type='range']"),f=(this.element.is("input")||this.element.is("[data-"+(a.mobile.ns||"")+"type='search']"))&&!e;this.element.prop("disabled")&&(b.disabled=!0),a.extend(this,{classes:this._classesFromOptions(),isSearch:c,isTextarea:d,isRange:e,inputNeedsWrap:f}),this._autoCorrect(),b.enhanced||this._enhance(),this._on({focus:"_handleFocus",blur:"_handleBlur"})},refresh:function(){this.setOptions({disabled:this.element.is(":disabled")})},_enhance:function(){var a=[];this.isTextarea&&a.push("ui-input-text"),(this.isTextarea||this.isRange)&&a.push("ui-shadow-inset"),this.inputNeedsWrap?this.element.wrap(this._wrap()):a=a.concat(this.classes),this.element.addClass(a.join(" "))},widget:function(){return this.inputNeedsWrap?this.element.parent():this.element},_classesFromOptions:function(){var a=this.options,b=[];return b.push("ui-body-"+(null===a.theme?"inherit":a.theme)),a.corners&&b.push("ui-corner-all"),a.mini&&b.push("ui-mini"),a.disabled&&b.push("ui-state-disabled"),a.wrapperClass&&b.push(a.wrapperClass),b
+},_wrap:function(){return a("<div class='"+(this.isSearch?"ui-input-search ":"ui-input-text ")+this.classes.join(" ")+" ui-shadow-inset'></div>")},_autoCorrect:function(){"undefined"==typeof this.element[0].autocorrect||a.support.touchOverflow||(this.element[0].setAttribute("autocorrect","off"),this.element[0].setAttribute("autocomplete","off"))},_handleBlur:function(){this.widget().removeClass(a.mobile.focusClass),this.options.preventFocusZoom&&a.mobile.zoom.enable(!0)},_handleFocus:function(){this.options.preventFocusZoom&&a.mobile.zoom.disable(!0),this.widget().addClass(a.mobile.focusClass)},_setOptions:function(a){var c=this.widget();this._super(a),(a.disabled!==b||a.mini!==b||a.corners!==b||a.theme!==b||a.wrapperClass!==b)&&(c.removeClass(this.classes.join(" ")),this.classes=this._classesFromOptions(),c.addClass(this.classes.join(" "))),a.disabled!==b&&this.element.prop("disabled",!!a.disabled)},_destroy:function(){this.options.enhanced||(this.inputNeedsWrap&&this.element.unwrap(),this.element.removeClass("ui-input-text "+this.classes.join(" ")))}})}(a),function(a,d){a.widget("mobile.slider",a.extend({initSelector:"input[type='range'], :jqmData(type='range'), :jqmData(role='slider')",widgetEventPrefix:"slide",options:{theme:null,trackTheme:null,corners:!0,mini:!1,highlight:!1},_create:function(){var e,f,g,h,i,j,k,l,m,n,o=this,p=this.element,q=this.options.trackTheme||a.mobile.getAttribute(p[0],"theme"),r=q?" ui-bar-"+q:" ui-bar-inherit",s=this.options.corners||p.jqmData("corners")?" ui-corner-all":"",t=this.options.mini||p.jqmData("mini")?" ui-mini":"",u=p[0].nodeName.toLowerCase(),v="select"===u,w=p.parent().is(":jqmData(role='rangeslider')"),x=v?"ui-slider-switch":"",y=p.attr("id"),z=a("[for='"+y+"']"),A=z.attr("id")||y+"-label",B=v?0:parseFloat(p.attr("min")),C=v?p.find("option").length-1:parseFloat(p.attr("max")),D=b.parseFloat(p.attr("step")||1),E=c.createElement("a"),F=a(E),G=c.createElement("div"),H=a(G),I=this.options.highlight&&!v?function(){var b=c.createElement("div");return b.className="ui-slider-bg "+a.mobile.activeBtnClass,a(b).prependTo(H)}():!1;if(z.attr("id",A),this.isToggleSwitch=v,E.setAttribute("href","#"),G.setAttribute("role","application"),G.className=[this.isToggleSwitch?"ui-slider ui-slider-track ui-shadow-inset ":"ui-slider-track ui-shadow-inset ",x,r,s,t].join(""),E.className="ui-slider-handle",G.appendChild(E),F.attr({role:"slider","aria-valuemin":B,"aria-valuemax":C,"aria-valuenow":this._value(),"aria-valuetext":this._value(),title:this._value(),"aria-labelledby":A}),a.extend(this,{slider:H,handle:F,control:p,type:u,step:D,max:C,min:B,valuebg:I,isRangeslider:w,dragging:!1,beforeStart:null,userModified:!1,mouseMoved:!1}),v){for(k=p.attr("tabindex"),k&&F.attr("tabindex",k),p.attr("tabindex","-1").focus(function(){a(this).blur(),F.focus()}),f=c.createElement("div"),f.className="ui-slider-inneroffset",g=0,h=G.childNodes.length;h>g;g++)f.appendChild(G.childNodes[g]);for(G.appendChild(f),F.addClass("ui-slider-handle-snapping"),e=p.find("option"),i=0,j=e.length;j>i;i++)l=i?"a":"b",m=i?" "+a.mobile.activeBtnClass:"",n=c.createElement("span"),n.className=["ui-slider-label ui-slider-label-",l,m].join(""),n.setAttribute("role","img"),n.appendChild(c.createTextNode(e[i].innerHTML)),a(n).prependTo(H);o._labels=a(".ui-slider-label",H)}p.addClass(v?"ui-slider-switch":"ui-slider-input"),this._on(p,{change:"_controlChange",keyup:"_controlKeyup",blur:"_controlBlur",vmouseup:"_controlVMouseUp"}),H.bind("vmousedown",a.proxy(this._sliderVMouseDown,this)).bind("vclick",!1),this._on(c,{vmousemove:"_preventDocumentDrag"}),this._on(H.add(c),{vmouseup:"_sliderVMouseUp"}),H.insertAfter(p),v||w||(f=this.options.mini?"<div class='ui-slider ui-mini'>":"<div class='ui-slider'>",p.add(H).wrapAll(f)),this._on(this.handle,{vmousedown:"_handleVMouseDown",keydown:"_handleKeydown",keyup:"_handleKeyup"}),this.handle.bind("vclick",!1),this._handleFormReset(),this.refresh(d,d,!0)},_setOptions:function(a){a.theme!==d&&this._setTheme(a.theme),a.trackTheme!==d&&this._setTrackTheme(a.trackTheme),a.corners!==d&&this._setCorners(a.corners),a.mini!==d&&this._setMini(a.mini),a.highlight!==d&&this._setHighlight(a.highlight),a.disabled!==d&&this._setDisabled(a.disabled),this._super(a)},_controlChange:function(a){return this._trigger("controlchange",a)===!1?!1:void(this.mouseMoved||this.refresh(this._value(),!0))},_controlKeyup:function(){this.refresh(this._value(),!0,!0)},_controlBlur:function(){this.refresh(this._value(),!0)},_controlVMouseUp:function(){this._checkedRefresh()},_handleVMouseDown:function(){this.handle.focus()},_handleKeydown:function(b){var c=this._value();if(!this.options.disabled){switch(b.keyCode){case a.mobile.keyCode.HOME:case a.mobile.keyCode.END:case a.mobile.keyCode.PAGE_UP:case a.mobile.keyCode.PAGE_DOWN:case a.mobile.keyCode.UP:case a.mobile.keyCode.RIGHT:case a.mobile.keyCode.DOWN:case a.mobile.keyCode.LEFT:b.preventDefault(),this._keySliding||(this._keySliding=!0,this.handle.addClass("ui-state-active"))}switch(b.keyCode){case a.mobile.keyCode.HOME:this.refresh(this.min);break;case a.mobile.keyCode.END:this.refresh(this.max);break;case a.mobile.keyCode.PAGE_UP:case a.mobile.keyCode.UP:case a.mobile.keyCode.RIGHT:this.refresh(c+this.step);break;case a.mobile.keyCode.PAGE_DOWN:case a.mobile.keyCode.DOWN:case a.mobile.keyCode.LEFT:this.refresh(c-this.step)}}},_handleKeyup:function(){this._keySliding&&(this._keySliding=!1,this.handle.removeClass("ui-state-active"))},_sliderVMouseDown:function(a){return this.options.disabled||1!==a.which&&0!==a.which&&a.which!==d?!1:this._trigger("beforestart",a)===!1?!1:(this.dragging=!0,this.userModified=!1,this.mouseMoved=!1,this.isToggleSwitch&&(this.beforeStart=this.element[0].selectedIndex),this.refresh(a),this._trigger("start"),!1)},_sliderVMouseUp:function(){return this.dragging?(this.dragging=!1,this.isToggleSwitch&&(this.handle.addClass("ui-slider-handle-snapping"),this.refresh(this.mouseMoved?this.userModified?0===this.beforeStart?1:0:this.beforeStart:0===this.beforeStart?1:0)),this.mouseMoved=!1,this._trigger("stop"),!1):void 0},_preventDocumentDrag:function(a){return this._trigger("drag",a)===!1?!1:this.dragging&&!this.options.disabled?(this.mouseMoved=!0,this.isToggleSwitch&&this.handle.removeClass("ui-slider-handle-snapping"),this.refresh(a),this.userModified=this.beforeStart!==this.element[0].selectedIndex,!1):void 0},_checkedRefresh:function(){this.value!==this._value()&&this.refresh(this._value())},_value:function(){return this.isToggleSwitch?this.element[0].selectedIndex:parseFloat(this.element.val())},_reset:function(){this.refresh(d,!1,!0)},refresh:function(b,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z=this,A=a.mobile.getAttribute(this.element[0],"theme"),B=this.options.theme||A,C=B?" ui-btn-"+B:"",D=this.options.trackTheme||A,E=D?" ui-bar-"+D:" ui-bar-inherit",F=this.options.corners?" ui-corner-all":"",G=this.options.mini?" ui-mini":"";if(z.slider[0].className=[this.isToggleSwitch?"ui-slider ui-slider-switch ui-slider-track ui-shadow-inset":"ui-slider-track ui-shadow-inset",E,F,G].join(""),(this.options.disabled||this.element.prop("disabled"))&&this.disable(),this.value=this._value(),this.options.highlight&&!this.isToggleSwitch&&0===this.slider.find(".ui-slider-bg").length&&(this.valuebg=function(){var b=c.createElement("div");return b.className="ui-slider-bg "+a.mobile.activeBtnClass,a(b).prependTo(z.slider)}()),this.handle.addClass("ui-btn"+C+" ui-shadow"),l=this.element,m=!this.isToggleSwitch,n=m?[]:l.find("option"),o=m?parseFloat(l.attr("min")):0,p=m?parseFloat(l.attr("max")):n.length-1,q=m&&parseFloat(l.attr("step"))>0?parseFloat(l.attr("step")):1,"object"==typeof b){if(h=b,i=8,f=this.slider.offset().left,g=this.slider.width(),j=g/((p-o)/q),!this.dragging||h.pageX<f-i||h.pageX>f+g+i)return;k=j>1?(h.pageX-f)/g*100:Math.round((h.pageX-f)/g*100)}else null==b&&(b=m?parseFloat(l.val()||0):l[0].selectedIndex),k=(parseFloat(b)-o)/(p-o)*100;if(!isNaN(k)&&(r=k/100*(p-o)+o,s=(r-o)%q,t=r-s,2*Math.abs(s)>=q&&(t+=s>0?q:-q),u=100/((p-o)/q),r=parseFloat(t.toFixed(5)),"undefined"==typeof j&&(j=g/((p-o)/q)),j>1&&m&&(k=(r-o)*u*(1/q)),0>k&&(k=0),k>100&&(k=100),o>r&&(r=o),r>p&&(r=p),this.handle.css("left",k+"%"),this.handle[0].setAttribute("aria-valuenow",m?r:n.eq(r).attr("value")),this.handle[0].setAttribute("aria-valuetext",m?r:n.eq(r).getEncodedText()),this.handle[0].setAttribute("title",m?r:n.eq(r).getEncodedText()),this.valuebg&&this.valuebg.css("width",k+"%"),this._labels&&(v=this.handle.width()/this.slider.width()*100,w=k&&v+(100-v)*k/100,x=100===k?0:Math.min(v+100-w,100),this._labels.each(function(){var b=a(this).hasClass("ui-slider-label-a");a(this).width((b?w:x)+"%")})),!e)){if(y=!1,m?(y=parseFloat(l.val())!==r,l.val(r)):(y=l[0].selectedIndex!==r,l[0].selectedIndex=r),this._trigger("beforechange",b)===!1)return!1;!d&&y&&l.trigger("change")}},_setHighlight:function(a){a=!!a,a?(this.options.highlight=!!a,this.refresh()):this.valuebg&&(this.valuebg.remove(),this.valuebg=!1)},_setTheme:function(a){this.handle.removeClass("ui-btn-"+this.options.theme).addClass("ui-btn-"+a);var b=this.options.theme?this.options.theme:"inherit",c=a?a:"inherit";this.control.removeClass("ui-body-"+b).addClass("ui-body-"+c)},_setTrackTheme:function(a){var b=this.options.trackTheme?this.options.trackTheme:"inherit",c=a?a:"inherit";this.slider.removeClass("ui-body-"+b).addClass("ui-body-"+c)},_setMini:function(a){a=!!a,this.isToggleSwitch||this.isRangeslider||(this.slider.parent().toggleClass("ui-mini",a),this.element.toggleClass("ui-mini",a)),this.slider.toggleClass("ui-mini",a)},_setCorners:function(a){this.slider.toggleClass("ui-corner-all",a),this.isToggleSwitch||this.control.toggleClass("ui-corner-all",a)},_setDisabled:function(a){a=!!a,this.element.prop("disabled",a),this.slider.toggleClass("ui-state-disabled",a).attr("aria-disabled",a),this.element.toggleClass("ui-state-disabled",a)}},a.mobile.behaviors.formReset))}(a),function(a){function b(){return c||(c=a("<div></div>",{"class":"ui-slider-popup ui-shadow ui-corner-all"})),c.clone()}var c;a.widget("mobile.slider",a.mobile.slider,{options:{popupEnabled:!1,showValue:!1},_create:function(){this._super(),a.extend(this,{_currentValue:null,_popup:null,_popupVisible:!1}),this._setOption("popupEnabled",this.options.popupEnabled),this._on(this.handle,{vmousedown:"_showPopup"}),this._on(this.slider.add(this.document),{vmouseup:"_hidePopup"}),this._refresh()},_positionPopup:function(){var a=this.handle.offset();this._popup.offset({left:a.left+(this.handle.width()-this._popup.width())/2,top:a.top-this._popup.outerHeight()-5})},_setOption:function(a,c){this._super(a,c),"showValue"===a?this.handle.html(c&&!this.options.mini?this._value():""):"popupEnabled"===a&&c&&!this._popup&&(this._popup=b().addClass("ui-body-"+(this.options.theme||"a")).hide().insertBefore(this.element))},refresh:function(){this._super.apply(this,arguments),this._refresh()},_refresh:function(){var a,b=this.options;b.popupEnabled&&this.handle.removeAttr("title"),a=this._value(),a!==this._currentValue&&(this._currentValue=a,b.popupEnabled&&this._popup&&(this._positionPopup(),this._popup.html(a)),b.showValue&&!this.options.mini&&this.handle.html(a))},_showPopup:function(){this.options.popupEnabled&&!this._popupVisible&&(this.handle.html(""),this._popup.show(),this._positionPopup(),this._popupVisible=!0)},_hidePopup:function(){var a=this.options;a.popupEnabled&&this._popupVisible&&(a.showValue&&!a.mini&&this.handle.html(this._value()),this._popup.hide(),this._popupVisible=!1)}})}(a),function(a,b){a.widget("mobile.flipswitch",a.extend({options:{onText:"On",offText:"Off",theme:null,enhanced:!1,wrapperClass:null,corners:!0,mini:!1},_create:function(){this.options.enhanced?a.extend(this,{flipswitch:this.element.parent(),on:this.element.find(".ui-flipswitch-on").eq(0),off:this.element.find(".ui-flipswitch-off").eq(0),type:this.element.get(0).tagName}):this._enhance(),this._handleFormReset(),this._originalTabIndex=this.element.attr("tabindex"),null!=this._originalTabIndex&&this.on.attr("tabindex",this._originalTabIndex),this.element.attr("tabindex","-1"),this._on({focus:"_handleInputFocus"}),this.element.is(":disabled")&&this._setOptions({disabled:!0}),this._on(this.flipswitch,{click:"_toggle",swipeleft:"_left",swiperight:"_right"}),this._on(this.on,{keydown:"_keydown"}),this._on({change:"refresh"})},_handleInputFocus:function(){this.on.focus()},widget:function(){return this.flipswitch},_left:function(){this.flipswitch.removeClass("ui-flipswitch-active"),"SELECT"===this.type?this.element.get(0).selectedIndex=0:this.element.prop("checked",!1),this.element.trigger("change")},_right:function(){this.flipswitch.addClass("ui-flipswitch-active"),"SELECT"===this.type?this.element.get(0).selectedIndex=1:this.element.prop("checked",!0),this.element.trigger("change")},_enhance:function(){var b=a("<div>"),c=this.options,d=this.element,e=c.theme?c.theme:"inherit",f=a("<a></a>",{href:"#"}),g=a("<span></span>"),h=d.get(0).tagName,i="INPUT"===h?c.onText:d.find("option").eq(1).text(),j="INPUT"===h?c.offText:d.find("option").eq(0).text();f.addClass("ui-flipswitch-on ui-btn ui-shadow ui-btn-inherit").text(i),g.addClass("ui-flipswitch-off").text(j),b.addClass("ui-flipswitch ui-shadow-inset ui-bar-"+e+" "+(c.wrapperClass?c.wrapperClass:"")+" "+(d.is(":checked")||d.find("option").eq(1).is(":selected")?"ui-flipswitch-active":"")+(d.is(":disabled")?" ui-state-disabled":"")+(c.corners?" ui-corner-all":"")+(c.mini?" ui-mini":"")).append(f,g),d.addClass("ui-flipswitch-input").after(b).appendTo(b),a.extend(this,{flipswitch:b,on:f,off:g,type:h})},_reset:function(){this.refresh()},refresh:function(){var a,b=this.flipswitch.hasClass("ui-flipswitch-active")?"_right":"_left";a="SELECT"===this.type?this.element.get(0).selectedIndex>0?"_right":"_left":this.element.prop("checked")?"_right":"_left",a!==b&&this[a]()},_toggle:function(){var a=this.flipswitch.hasClass("ui-flipswitch-active")?"_left":"_right";this[a]()},_keydown:function(b){b.which===a.mobile.keyCode.LEFT?this._left():b.which===a.mobile.keyCode.RIGHT?this._right():b.which===a.mobile.keyCode.SPACE&&(this._toggle(),b.preventDefault())},_setOptions:function(a){if(a.theme!==b){var c=a.theme?a.theme:"inherit",d=a.theme?a.theme:"inherit";this.widget().removeClass("ui-bar-"+c).addClass("ui-bar-"+d)}a.onText!==b&&this.on.text(a.onText),a.offText!==b&&this.off.text(a.offText),a.disabled!==b&&this.widget().toggleClass("ui-state-disabled",a.disabled),a.mini!==b&&this.widget().toggleClass("ui-mini",a.mini),a.corners!==b&&this.widget().toggleClass("ui-corner-all",a.corners),this._super(a)},_destroy:function(){this.options.enhanced||(null!=this._originalTabIndex?this.element.attr("tabindex",this._originalTabIndex):this.element.removeAttr("tabindex"),this.on.remove(),this.off.remove(),this.element.unwrap(),this.flipswitch.remove(),this.removeClass("ui-flipswitch-input"))}},a.mobile.behaviors.formReset))}(a),function(a,b){a.widget("mobile.rangeslider",a.extend({options:{theme:null,trackTheme:null,corners:!0,mini:!1,highlight:!0},_create:function(){var b=this.element,c=this.options.mini?"ui-rangeslider ui-mini":"ui-rangeslider",d=b.find("input").first(),e=b.find("input").last(),f=b.find("label").first(),g=a.data(d.get(0),"mobile-slider")||a.data(d.slider().get(0),"mobile-slider"),h=a.data(e.get(0),"mobile-slider")||a.data(e.slider().get(0),"mobile-slider"),i=g.slider,j=h.slider,k=g.handle,l=a("<div class='ui-rangeslider-sliders' />").appendTo(b);d.addClass("ui-rangeslider-first"),e.addClass("ui-rangeslider-last"),b.addClass(c),i.appendTo(l),j.appendTo(l),f.insertBefore(b),k.prependTo(j),a.extend(this,{_inputFirst:d,_inputLast:e,_sliderFirst:i,_sliderLast:j,_label:f,_targetVal:null,_sliderTarget:!1,_sliders:l,_proxy:!1}),this.refresh(),this._on(this.element.find("input.ui-slider-input"),{slidebeforestart:"_slidebeforestart",slidestop:"_slidestop",slidedrag:"_slidedrag",slidebeforechange:"_change",blur:"_change",keyup:"_change"}),this._on({mousedown:"_change"}),this._on(this.element.closest("form"),{reset:"_handleReset"}),this._on(k,{vmousedown:"_dragFirstHandle"})},_handleReset:function(){var a=this;setTimeout(function(){a._updateHighlight()},0)},_dragFirstHandle:function(b){return a.data(this._inputFirst.get(0),"mobile-slider").dragging=!0,a.data(this._inputFirst.get(0),"mobile-slider").refresh(b),a.data(this._inputFirst.get(0),"mobile-slider")._trigger("start"),!1},_slidedrag:function(b){var c=a(b.target).is(this._inputFirst),d=c?this._inputLast:this._inputFirst;return this._sliderTarget=!1,"first"===this._proxy&&c||"last"===this._proxy&&!c?(a.data(d.get(0),"mobile-slider").dragging=!0,a.data(d.get(0),"mobile-slider").refresh(b),!1):void 0},_slidestop:function(b){var c=a(b.target).is(this._inputFirst);this._proxy=!1,this.element.find("input").trigger("vmouseup"),this._sliderFirst.css("z-index",c?1:"")},_slidebeforestart:function(b){this._sliderTarget=!1,a(b.originalEvent.target).hasClass("ui-slider-track")&&(this._sliderTarget=!0,this._targetVal=a(b.target).val())},_setOptions:function(a){a.theme!==b&&this._setTheme(a.theme),a.trackTheme!==b&&this._setTrackTheme(a.trackTheme),a.mini!==b&&this._setMini(a.mini),a.highlight!==b&&this._setHighlight(a.highlight),a.disabled!==b&&this._setDisabled(a.disabled),this._super(a),this.refresh()},refresh:function(){var a=this.element,b=this.options;(this._inputFirst.is(":disabled")||this._inputLast.is(":disabled"))&&(this.options.disabled=!0),a.find("input").slider({theme:b.theme,trackTheme:b.trackTheme,disabled:b.disabled,corners:b.corners,mini:b.mini,highlight:b.highlight}).slider("refresh"),this._updateHighlight()},_change:function(b){if("keyup"===b.type)return this._updateHighlight(),!1;var c=this,d=parseFloat(this._inputFirst.val(),10),e=parseFloat(this._inputLast.val(),10),f=a(b.target).hasClass("ui-rangeslider-first"),g=f?this._inputFirst:this._inputLast,h=f?this._inputLast:this._inputFirst;if(this._inputFirst.val()>this._inputLast.val()&&"mousedown"===b.type&&!a(b.target).hasClass("ui-slider-handle"))g.blur();else if("mousedown"===b.type)return;return d>e&&!this._sliderTarget?(g.val(f?e:d).slider("refresh"),this._trigger("normalize")):d>e&&(g.val(this._targetVal).slider("refresh"),setTimeout(function(){h.val(f?d:e).slider("refresh"),a.data(h.get(0),"mobile-slider").handle.focus(),c._sliderFirst.css("z-index",f?"":1),c._trigger("normalize")},0),this._proxy=f?"first":"last"),d===e?(a.data(g.get(0),"mobile-slider").handle.css("z-index",1),a.data(h.get(0),"mobile-slider").handle.css("z-index",0)):(a.data(h.get(0),"mobile-slider").handle.css("z-index",""),a.data(g.get(0),"mobile-slider").handle.css("z-index","")),this._updateHighlight(),d>=e?!1:void 0},_updateHighlight:function(){var b=parseInt(a.data(this._inputFirst.get(0),"mobile-slider").handle.get(0).style.left,10),c=parseInt(a.data(this._inputLast.get(0),"mobile-slider").handle.get(0).style.left,10),d=c-b;this.element.find(".ui-slider-bg").css({"margin-left":b+"%",width:d+"%"})},_setTheme:function(a){this._inputFirst.slider("option","theme",a),this._inputLast.slider("option","theme",a)},_setTrackTheme:function(a){this._inputFirst.slider("option","trackTheme",a),this._inputLast.slider("option","trackTheme",a)},_setMini:function(a){this._inputFirst.slider("option","mini",a),this._inputLast.slider("option","mini",a),this.element.toggleClass("ui-mini",!!a)},_setHighlight:function(a){this._inputFirst.slider("option","highlight",a),this._inputLast.slider("option","highlight",a)},_setDisabled:function(a){this._inputFirst.prop("disabled",a),this._inputLast.prop("disabled",a)},_destroy:function(){this._label.prependTo(this.element),this.element.removeClass("ui-rangeslider ui-mini"),this._inputFirst.after(this._sliderFirst),this._inputLast.after(this._sliderLast),this._sliders.remove(),this.element.find("input").removeClass("ui-rangeslider-first ui-rangeslider-last").slider("destroy")}},a.mobile.behaviors.formReset))}(a),function(a,b){a.widget("mobile.textinput",a.mobile.textinput,{options:{clearBtn:!1,clearBtnText:"Clear text"},_create:function(){this._super(),this.isSearch&&(this.options.clearBtn=!0),this.options.clearBtn&&this.inputNeedsWrap&&this._addClearBtn()},clearButton:function(){return a("<a href='#' tabindex='-1' aria-hidden='true' class='ui-input-clear ui-btn ui-icon-delete ui-btn-icon-notext ui-corner-all'></a>").attr("title",this.options.clearBtnText).text(this.options.clearBtnText)},_clearBtnClick:function(a){this.element.val("").focus().trigger("change"),this._clearBtn.addClass("ui-input-clear-hidden"),a.preventDefault()},_addClearBtn:function(){this.options.enhanced||this._enhanceClear(),a.extend(this,{_clearBtn:this.widget().find("a.ui-input-clear")}),this._bindClearEvents(),this._toggleClear()},_enhanceClear:function(){this.clearButton().appendTo(this.widget()),this.widget().addClass("ui-input-has-clear")},_bindClearEvents:function(){this._on(this._clearBtn,{click:"_clearBtnClick"}),this._on({keyup:"_toggleClear",change:"_toggleClear",input:"_toggleClear",focus:"_toggleClear",blur:"_toggleClear",cut:"_toggleClear",paste:"_toggleClear"})},_unbindClear:function(){this._off(this._clearBtn,"click"),this._off(this.element,"keyup change input focus blur cut paste")},_setOptions:function(a){this._super(a),a.clearBtn===b||this.element.is("textarea, :jqmData(type='range')")||(a.clearBtn?this._addClearBtn():this._destroyClear()),a.clearBtnText!==b&&this._clearBtn!==b&&this._clearBtn.text(a.clearBtnText).attr("title",a.clearBtnText)},_toggleClear:function(){this._delay("_toggleClearClass",0)},_toggleClearClass:function(){this._clearBtn.toggleClass("ui-input-clear-hidden",!this.element.val())},_destroyClear:function(){this.widget().removeClass("ui-input-has-clear"),this._unbindClear(),this._clearBtn.remove()},_destroy:function(){this._super(),this.options.clearBtn&&this._destroyClear()}})}(a),function(a,b){a.widget("mobile.textinput",a.mobile.textinput,{options:{autogrow:!0,keyupTimeoutBuffer:100},_create:function(){this._super(),this.options.autogrow&&this.isTextarea&&this._autogrow()},_autogrow:function(){this.element.addClass("ui-textinput-autogrow"),this._on({keyup:"_timeout",change:"_timeout",input:"_timeout",paste:"_timeout"}),this._on(!0,this.document,{pageshow:"_handleShow",popupbeforeposition:"_handleShow",updatelayout:"_handleShow",panelopen:"_handleShow"})},_handleShow:function(b){a.contains(b.target,this.element[0])&&this.element.is(":visible")&&("popupbeforeposition"!==b.type&&this.element.addClass("ui-textinput-autogrow-resize").animationComplete(a.proxy(function(){this.element.removeClass("ui-textinput-autogrow-resize")},this),"transition"),this._prepareHeightUpdate())},_unbindAutogrow:function(){this.element.removeClass("ui-textinput-autogrow"),this._off(this.element,"keyup change input paste"),this._off(this.document,"pageshow popupbeforeposition updatelayout panelopen")},keyupTimeout:null,_prepareHeightUpdate:function(a){this.keyupTimeout&&clearTimeout(this.keyupTimeout),a===b?this._updateHeight():this.keyupTimeout=this._delay("_updateHeight",a)},_timeout:function(){this._prepareHeightUpdate(this.options.keyupTimeoutBuffer)},_updateHeight:function(){var a,b,c,d,e,f,g,h,i,j=this.window.scrollTop();this.keyupTimeout=0,"onpage"in this.element[0]||this.element.css({height:0,"min-height":0,"max-height":0}),d=this.element[0].scrollHeight,e=this.element[0].clientHeight,f=parseFloat(this.element.css("border-top-width")),g=parseFloat(this.element.css("border-bottom-width")),h=f+g,i=d+h+15,0===e&&(a=parseFloat(this.element.css("padding-top")),b=parseFloat(this.element.css("padding-bottom")),c=a+b,i+=c),this.element.css({height:i,"min-height":"","max-height":""}),this.window.scrollTop(j)},refresh:function(){this.options.autogrow&&this.isTextarea&&this._updateHeight()},_setOptions:function(a){this._super(a),a.autogrow!==b&&this.isTextarea&&(a.autogrow?this._autogrow():this._unbindAutogrow())}})}(a),function(a){a.widget("mobile.selectmenu",a.extend({initSelector:"select:not( :jqmData(role='slider')):not( :jqmData(role='flipswitch') )",options:{theme:null,icon:"carat-d",iconpos:"right",inline:!1,corners:!0,shadow:!0,iconshadow:!1,overlayTheme:null,dividerTheme:null,hidePlaceholderMenuItems:!0,closeText:"Close",nativeMenu:!0,preventFocusZoom:/iPhone|iPad|iPod/.test(navigator.platform)&&navigator.userAgent.indexOf("AppleWebKit")>-1,mini:!1},_button:function(){return a("<div/>")},_setDisabled:function(a){return this.element.attr("disabled",a),this.button.attr("aria-disabled",a),this._setOption("disabled",a)},_focusButton:function(){var a=this;setTimeout(function(){a.button.focus()},40)},_selectOptions:function(){return this.select.find("option")},_preExtension:function(){var b=this.options.inline||this.element.jqmData("inline"),c=this.options.mini||this.element.jqmData("mini"),d="";~this.element[0].className.indexOf("ui-btn-left")&&(d=" ui-btn-left"),~this.element[0].className.indexOf("ui-btn-right")&&(d=" ui-btn-right"),b&&(d+=" ui-btn-inline"),c&&(d+=" ui-mini"),this.select=this.element.removeClass("ui-btn-left ui-btn-right").wrap("<div class='ui-select"+d+"'>"),this.selectId=this.select.attr("id")||"select-"+this.uuid,this.buttonId=this.selectId+"-button",this.label=a("label[for='"+this.selectId+"']"),this.isMultiple=this.select[0].multiple},_destroy:function(){var a=this.element.parents(".ui-select");a.length>0&&(a.is(".ui-btn-left, .ui-btn-right")&&this.element.addClass(a.hasClass("ui-btn-left")?"ui-btn-left":"ui-btn-right"),this.element.insertAfter(a),a.remove())},_create:function(){this._preExtension(),this.button=this._button();var c=this,d=this.options,e=d.icon?d.iconpos||this.select.jqmData("iconpos"):!1,f=this.button.insertBefore(this.select).attr("id",this.buttonId).addClass("ui-btn"+(d.icon?" ui-icon-"+d.icon+" ui-btn-icon-"+e+(d.iconshadow?" ui-shadow-icon":""):"")+(d.theme?" ui-btn-"+d.theme:"")+(d.corners?" ui-corner-all":"")+(d.shadow?" ui-shadow":""));this.setButtonText(),d.nativeMenu&&b.opera&&b.opera.version&&f.addClass("ui-select-nativeonly"),this.isMultiple&&(this.buttonCount=a("<span>").addClass("ui-li-count ui-body-inherit").hide().appendTo(f.addClass("ui-li-has-count"))),(d.disabled||this.element.attr("disabled"))&&this.disable(),this.select.change(function(){c.refresh(),d.nativeMenu&&c._delay(function(){c.select.blur()})}),this._handleFormReset(),this._on(this.button,{keydown:"_handleKeydown"}),this.build()},build:function(){var b=this;this.select.appendTo(b.button).bind("vmousedown",function(){b.button.addClass(a.mobile.activeBtnClass)}).bind("focus",function(){b.button.addClass(a.mobile.focusClass)}).bind("blur",function(){b.button.removeClass(a.mobile.focusClass)}).bind("focus vmouseover",function(){b.button.trigger("vmouseover")}).bind("vmousemove",function(){b.button.removeClass(a.mobile.activeBtnClass)}).bind("change blur vmouseout",function(){b.button.trigger("vmouseout").removeClass(a.mobile.activeBtnClass)}),b.button.bind("vmousedown",function(){b.options.preventFocusZoom&&a.mobile.zoom.disable(!0)}),b.label.bind("click focus",function(){b.options.preventFocusZoom&&a.mobile.zoom.disable(!0)}),b.select.bind("focus",function(){b.options.preventFocusZoom&&a.mobile.zoom.disable(!0)}),b.button.bind("mouseup",function(){b.options.preventFocusZoom&&setTimeout(function(){a.mobile.zoom.enable(!0)},0)}),b.select.bind("blur",function(){b.options.preventFocusZoom&&a.mobile.zoom.enable(!0)})},selected:function(){return this._selectOptions().filter(":selected")},selectedIndices:function(){var a=this;return this.selected().map(function(){return a._selectOptions().index(this)}).get()},setButtonText:function(){var b=this,d=this.selected(),e=this.placeholder,f=a(c.createElement("span"));this.button.children("span").not(".ui-li-count").remove().end().end().prepend(function(){return e=d.length?d.map(function(){return a(this).text()}).get().join(", "):b.placeholder,e?f.text(e):f.html("&#160;"),f.addClass(b.select.attr("class")).addClass(d.attr("class")).removeClass("ui-screen-hidden")}())},setButtonCount:function(){var a=this.selected();this.isMultiple&&this.buttonCount[a.length>1?"show":"hide"]().text(a.length)},_handleKeydown:function(){this._delay("_refreshButton")},_reset:function(){this.refresh()},_refreshButton:function(){this.setButtonText(),this.setButtonCount()},refresh:function(){this._refreshButton()},open:a.noop,close:a.noop,disable:function(){this._setDisabled(!0),this.button.addClass("ui-state-disabled")},enable:function(){this._setDisabled(!1),this.button.removeClass("ui-state-disabled")}},a.mobile.behaviors.formReset))}(a),function(a){a.mobile.links=function(b){a(b).find("a").jqmEnhanceable().filter(":jqmData(rel='popup')[href][href!='']").each(function(){var a=this,b=a.getAttribute("href").substring(1);b&&(a.setAttribute("aria-haspopup",!0),a.setAttribute("aria-owns",b),a.setAttribute("aria-expanded",!1))}).end().not(".ui-btn, :jqmData(role='none'), :jqmData(role='nojs')").addClass("ui-link")}}(a),function(a,c){function d(a,b,c,d){var e=d;return e=b>a?c+(a-b)/2:Math.min(Math.max(c,d-b/2),c+a-b)}function e(a){return{x:a.scrollLeft(),y:a.scrollTop(),cx:a[0].innerWidth||a.width(),cy:a[0].innerHeight||a.height()}}a.widget("mobile.popup",{options:{wrapperClass:null,theme:null,overlayTheme:null,shadow:!0,corners:!0,transition:"none",positionTo:"origin",tolerance:null,closeLinkSelector:"a:jqmData(rel='back')",closeLinkEvents:"click.popup",navigateEvents:"navigate.popup",closeEvents:"navigate.popup pagebeforechange.popup",dismissible:!0,enhanced:!1,history:!a.mobile.browser.oldIE},_handleDocumentVmousedown:function(b){this._isOpen&&a.contains(this._ui.container[0],b.target)&&this._ignoreResizeEvents()},_create:function(){var b=this.element,c=b.attr("id"),d=this.options;d.history=d.history&&a.mobile.ajaxEnabled&&a.mobile.hashListeningEnabled,this._on(this.document,{vmousedown:"_handleDocumentVmousedown"}),a.extend(this,{_scrollTop:0,_page:b.closest(".ui-page"),_ui:null,_fallbackTransition:"",_currentTransition:!1,_prerequisites:null,_isOpen:!1,_tolerance:null,_resizeData:null,_ignoreResizeTo:0,_orientationchangeInProgress:!1}),0===this._page.length&&(this._page=a("body")),d.enhanced?this._ui={container:b.parent(),screen:b.parent().prev(),placeholder:a(this.document[0].getElementById(c+"-placeholder"))}:(this._ui=this._enhance(b,c),this._applyTransition(d.transition)),this._setTolerance(d.tolerance)._ui.focusElement=this._ui.container,this._on(this._ui.screen,{vclick:"_eatEventAndClose"}),this._on(this.window,{orientationchange:a.proxy(this,"_handleWindowOrientationchange"),resize:a.proxy(this,"_handleWindowResize"),keyup:a.proxy(this,"_handleWindowKeyUp")}),this._on(this.document,{focusin:"_handleDocumentFocusIn"})},_enhance:function(b,c){var d=this.options,e=d.wrapperClass,f={screen:a("<div class='ui-screen-hidden ui-popup-screen "+this._themeClassFromOption("ui-overlay-",d.overlayTheme)+"'></div>"),placeholder:a("<div style='display: none;'><!-- placeholder --></div>"),container:a("<div class='ui-popup-container ui-popup-hidden ui-popup-truncate"+(e?" "+e:"")+"'></div>")},g=this.document[0].createDocumentFragment();return g.appendChild(f.screen[0]),g.appendChild(f.container[0]),c&&(f.screen.attr("id",c+"-screen"),f.container.attr("id",c+"-popup"),f.placeholder.attr("id",c+"-placeholder").html("<!-- placeholder for "+c+" -->")),this._page[0].appendChild(g),f.placeholder.insertAfter(b),b.detach().addClass("ui-popup "+this._themeClassFromOption("ui-body-",d.theme)+" "+(d.shadow?"ui-overlay-shadow ":"")+(d.corners?"ui-corner-all ":"")).appendTo(f.container),f},_eatEventAndClose:function(a){return a.preventDefault(),a.stopImmediatePropagation(),this.options.dismissible&&this.close(),!1},_resizeScreen:function(){var a=this._ui.screen,b=this._ui.container.outerHeight(!0),c=a.removeAttr("style").height(),d=this.document.height()-1;d>c?a.height(d):b>c&&a.height(b)},_handleWindowKeyUp:function(b){return this._isOpen&&b.keyCode===a.mobile.keyCode.ESCAPE?this._eatEventAndClose(b):void 0},_expectResizeEvent:function(){var a=e(this.window);
+if(this._resizeData){if(a.x===this._resizeData.windowCoordinates.x&&a.y===this._resizeData.windowCoordinates.y&&a.cx===this._resizeData.windowCoordinates.cx&&a.cy===this._resizeData.windowCoordinates.cy)return!1;clearTimeout(this._resizeData.timeoutId)}return this._resizeData={timeoutId:this._delay("_resizeTimeout",200),windowCoordinates:a},!0},_resizeTimeout:function(){this._isOpen?this._expectResizeEvent()||(this._ui.container.hasClass("ui-popup-hidden")&&(this._ui.container.removeClass("ui-popup-hidden ui-popup-truncate"),this.reposition({positionTo:"window"}),this._ignoreResizeEvents()),this._resizeScreen(),this._resizeData=null,this._orientationchangeInProgress=!1):(this._resizeData=null,this._orientationchangeInProgress=!1)},_stopIgnoringResizeEvents:function(){this._ignoreResizeTo=0},_ignoreResizeEvents:function(){this._ignoreResizeTo&&clearTimeout(this._ignoreResizeTo),this._ignoreResizeTo=this._delay("_stopIgnoringResizeEvents",1e3)},_handleWindowResize:function(){this._isOpen&&0===this._ignoreResizeTo&&(!this._expectResizeEvent()&&!this._orientationchangeInProgress||this._ui.container.hasClass("ui-popup-hidden")||this._ui.container.addClass("ui-popup-hidden ui-popup-truncate").removeAttr("style"))},_handleWindowOrientationchange:function(){!this._orientationchangeInProgress&&this._isOpen&&0===this._ignoreResizeTo&&(this._expectResizeEvent(),this._orientationchangeInProgress=!0)},_handleDocumentFocusIn:function(b){var c,d=b.target,e=this._ui;if(this._isOpen){if(d!==e.container[0]){if(c=a(d),!a.contains(e.container[0],d))return a(this.document[0].activeElement).one("focus",a.proxy(function(){this._safelyBlur(d)},this)),e.focusElement.focus(),b.preventDefault(),b.stopImmediatePropagation(),!1;e.focusElement[0]===e.container[0]&&(e.focusElement=c)}this._ignoreResizeEvents()}},_themeClassFromOption:function(a,b){return b?"none"===b?"":a+b:a+"inherit"},_applyTransition:function(b){return b&&(this._ui.container.removeClass(this._fallbackTransition),"none"!==b&&(this._fallbackTransition=a.mobile._maybeDegradeTransition(b),"none"===this._fallbackTransition&&(this._fallbackTransition=""),this._ui.container.addClass(this._fallbackTransition))),this},_setOptions:function(a){var b=this.options,d=this.element,e=this._ui.screen;return a.wrapperClass!==c&&this._ui.container.removeClass(b.wrapperClass).addClass(a.wrapperClass),a.theme!==c&&d.removeClass(this._themeClassFromOption("ui-body-",b.theme)).addClass(this._themeClassFromOption("ui-body-",a.theme)),a.overlayTheme!==c&&(e.removeClass(this._themeClassFromOption("ui-overlay-",b.overlayTheme)).addClass(this._themeClassFromOption("ui-overlay-",a.overlayTheme)),this._isOpen&&e.addClass("in")),a.shadow!==c&&d.toggleClass("ui-overlay-shadow",a.shadow),a.corners!==c&&d.toggleClass("ui-corner-all",a.corners),a.transition!==c&&(this._currentTransition||this._applyTransition(a.transition)),a.tolerance!==c&&this._setTolerance(a.tolerance),a.disabled!==c&&a.disabled&&this.close(),this._super(a)},_setTolerance:function(b){var d,e={t:30,r:15,b:30,l:15};if(b!==c)switch(d=String(b).split(","),a.each(d,function(a,b){d[a]=parseInt(b,10)}),d.length){case 1:isNaN(d[0])||(e.t=e.r=e.b=e.l=d[0]);break;case 2:isNaN(d[0])||(e.t=e.b=d[0]),isNaN(d[1])||(e.l=e.r=d[1]);break;case 4:isNaN(d[0])||(e.t=d[0]),isNaN(d[1])||(e.r=d[1]),isNaN(d[2])||(e.b=d[2]),isNaN(d[3])||(e.l=d[3])}return this._tolerance=e,this},_clampPopupWidth:function(a){var b,c=e(this.window),d={x:this._tolerance.l,y:c.y+this._tolerance.t,cx:c.cx-this._tolerance.l-this._tolerance.r,cy:c.cy-this._tolerance.t-this._tolerance.b};return a||this._ui.container.css("max-width",d.cx),b={cx:this._ui.container.outerWidth(!0),cy:this._ui.container.outerHeight(!0)},{rc:d,menuSize:b}},_calculateFinalLocation:function(a,b){var c,e=b.rc,f=b.menuSize;return c={left:d(e.cx,f.cx,e.x,a.x),top:d(e.cy,f.cy,e.y,a.y)},c.top=Math.max(0,c.top),c.top-=Math.min(c.top,Math.max(0,c.top+f.cy-this.document.height())),c},_placementCoords:function(a){return this._calculateFinalLocation(a,this._clampPopupWidth())},_createPrerequisites:function(b,c,d){var e,f=this;e={screen:a.Deferred(),container:a.Deferred()},e.screen.then(function(){e===f._prerequisites&&b()}),e.container.then(function(){e===f._prerequisites&&c()}),a.when(e.screen,e.container).done(function(){e===f._prerequisites&&(f._prerequisites=null,d())}),f._prerequisites=e},_animate:function(b){return this._ui.screen.removeClass(b.classToRemove).addClass(b.screenClassToAdd),b.prerequisites.screen.resolve(),b.transition&&"none"!==b.transition&&(b.applyTransition&&this._applyTransition(b.transition),this._fallbackTransition)?void this._ui.container.addClass(b.containerClassToAdd).removeClass(b.classToRemove).animationComplete(a.proxy(b.prerequisites.container,"resolve")):(this._ui.container.removeClass(b.classToRemove),void b.prerequisites.container.resolve())},_desiredCoords:function(b){var c,d=null,f=e(this.window),g=b.x,h=b.y,i=b.positionTo;if(i&&"origin"!==i)if("window"===i)g=f.cx/2+f.x,h=f.cy/2+f.y;else{try{d=a(i)}catch(j){d=null}d&&(d.filter(":visible"),0===d.length&&(d=null))}return d&&(c=d.offset(),g=c.left+d.outerWidth()/2,h=c.top+d.outerHeight()/2),("number"!==a.type(g)||isNaN(g))&&(g=f.cx/2+f.x),("number"!==a.type(h)||isNaN(h))&&(h=f.cy/2+f.y),{x:g,y:h}},_reposition:function(a){a={x:a.x,y:a.y,positionTo:a.positionTo},this._trigger("beforeposition",c,a),this._ui.container.offset(this._placementCoords(this._desiredCoords(a)))},reposition:function(a){this._isOpen&&this._reposition(a)},_safelyBlur:function(b){b!==this.window[0]&&"body"!==b.nodeName.toLowerCase()&&a(b).blur()},_openPrerequisitesComplete:function(){var b=this.element.attr("id"),c=this._ui.container.find(":focusable").first();this._ui.container.addClass("ui-popup-active"),this._isOpen=!0,this._resizeScreen(),a.contains(this._ui.container[0],this.document[0].activeElement)||this._safelyBlur(this.document[0].activeElement),c.length>0&&(this._ui.focusElement=c),this._ignoreResizeEvents(),b&&this.document.find("[aria-haspopup='true'][aria-owns='"+b+"']").attr("aria-expanded",!0),this._trigger("afteropen")},_open:function(b){var c=a.extend({},this.options,b),d=function(){var a=navigator.userAgent,b=a.match(/AppleWebKit\/([0-9\.]+)/),c=!!b&&b[1],d=a.match(/Android (\d+(?:\.\d+))/),e=!!d&&d[1],f=a.indexOf("Chrome")>-1;return null!==d&&"4.0"===e&&c&&c>534.13&&!f?!0:!1}();this._createPrerequisites(a.noop,a.noop,a.proxy(this,"_openPrerequisitesComplete")),this._currentTransition=c.transition,this._applyTransition(c.transition),this._ui.screen.removeClass("ui-screen-hidden"),this._ui.container.removeClass("ui-popup-truncate"),this._reposition(c),this._ui.container.removeClass("ui-popup-hidden"),this.options.overlayTheme&&d&&this.element.closest(".ui-page").addClass("ui-popup-open"),this._animate({additionalCondition:!0,transition:c.transition,classToRemove:"",screenClassToAdd:"in",containerClassToAdd:"in",applyTransition:!1,prerequisites:this._prerequisites})},_closePrerequisiteScreen:function(){this._ui.screen.removeClass("out").addClass("ui-screen-hidden")},_closePrerequisiteContainer:function(){this._ui.container.removeClass("reverse out").addClass("ui-popup-hidden ui-popup-truncate").removeAttr("style")},_closePrerequisitesDone:function(){var b=this._ui.container,d=this.element.attr("id");a.mobile.popup.active=c,a(":focus",b[0]).add(b[0]).blur(),d&&this.document.find("[aria-haspopup='true'][aria-owns='"+d+"']").attr("aria-expanded",!1),this._trigger("afterclose")},_close:function(b){this._ui.container.removeClass("ui-popup-active"),this._page.removeClass("ui-popup-open"),this._isOpen=!1,this._createPrerequisites(a.proxy(this,"_closePrerequisiteScreen"),a.proxy(this,"_closePrerequisiteContainer"),a.proxy(this,"_closePrerequisitesDone")),this._animate({additionalCondition:this._ui.screen.hasClass("in"),transition:b?"none":this._currentTransition,classToRemove:"in",screenClassToAdd:"out",containerClassToAdd:"reverse out",applyTransition:!0,prerequisites:this._prerequisites})},_unenhance:function(){this.options.enhanced||(this._setOptions({theme:a.mobile.popup.prototype.options.theme}),this.element.detach().insertAfter(this._ui.placeholder).removeClass("ui-popup ui-overlay-shadow ui-corner-all ui-body-inherit"),this._ui.screen.remove(),this._ui.container.remove(),this._ui.placeholder.remove())},_destroy:function(){return a.mobile.popup.active===this?(this.element.one("popupafterclose",a.proxy(this,"_unenhance")),this.close()):this._unenhance(),this},_closePopup:function(c,d){var e,f,g=this.options,h=!1;c&&c.isDefaultPrevented()||a.mobile.popup.active!==this||(b.scrollTo(0,this._scrollTop),c&&"pagebeforechange"===c.type&&d&&(e="string"==typeof d.toPage?d.toPage:d.toPage.jqmData("url"),e=a.mobile.path.parseUrl(e),f=e.pathname+e.search+e.hash,this._myUrl!==a.mobile.path.makeUrlAbsolute(f)?h=!0:c.preventDefault()),this.window.off(g.closeEvents),this.element.undelegate(g.closeLinkSelector,g.closeLinkEvents),this._close(h))},_bindContainerClose:function(){this.window.on(this.options.closeEvents,a.proxy(this,"_closePopup"))},widget:function(){return this._ui.container},open:function(b){var c,d,e,f,g,h,i=this,j=this.options;return a.mobile.popup.active||j.disabled?this:(a.mobile.popup.active=this,this._scrollTop=this.window.scrollTop(),j.history?(h=a.mobile.navigate.history,d=a.mobile.dialogHashKey,e=a.mobile.activePage,f=e?e.hasClass("ui-dialog"):!1,this._myUrl=c=h.getActive().url,(g=c.indexOf(d)>-1&&!f&&h.activeIndex>0)?(i._open(b),i._bindContainerClose(),this):(-1!==c.indexOf(d)||f?c=a.mobile.path.parseLocation().hash+d:c+=c.indexOf("#")>-1?d:"#"+d,this.window.one("beforenavigate",function(a){a.preventDefault(),i._open(b),i._bindContainerClose()}),this.urlAltered=!0,a.mobile.navigate(c,{role:"dialog"}),this)):(i._open(b),i._bindContainerClose(),i.element.delegate(j.closeLinkSelector,j.closeLinkEvents,function(a){i.close(),a.preventDefault()}),this))},close:function(){return a.mobile.popup.active!==this?this:(this._scrollTop=this.window.scrollTop(),this.options.history&&this.urlAltered?(a.mobile.back(),this.urlAltered=!1):this._closePopup(),this)}}),a.mobile.popup.handleLink=function(b){var c,d=a.mobile.path,e=a(d.hashToSelector(d.parseUrl(b.attr("href")).hash)).first();e.length>0&&e.data("mobile-popup")&&(c=b.offset(),e.popup("open",{x:c.left+b.outerWidth()/2,y:c.top+b.outerHeight()/2,transition:b.jqmData("transition"),positionTo:b.jqmData("position-to")})),setTimeout(function(){b.removeClass(a.mobile.activeBtnClass)},300)},a.mobile.document.on("pagebeforechange",function(b,c){"popup"===c.options.role&&(a.mobile.popup.handleLink(c.options.link),b.preventDefault())})}(a),function(a,b){var d=".ui-disabled,.ui-state-disabled,.ui-li-divider,.ui-screen-hidden,:jqmData(role='placeholder')",e=function(a,b,c){var e=a[c+"All"]().not(d).first();e.length&&(b.blur().attr("tabindex","-1"),e.find("a").first().focus())};a.widget("mobile.selectmenu",a.mobile.selectmenu,{_create:function(){var a=this.options;return a.nativeMenu=a.nativeMenu||this.element.parents(":jqmData(role='popup'),:mobile-popup").length>0,this._super()},_handleSelectFocus:function(){this.element.blur(),this.button.focus()},_handleKeydown:function(a){this._super(a),this._handleButtonVclickKeydown(a)},_handleButtonVclickKeydown:function(b){this.options.disabled||this.isOpen||this.options.nativeMenu||("vclick"===b.type||b.keyCode&&(b.keyCode===a.mobile.keyCode.ENTER||b.keyCode===a.mobile.keyCode.SPACE))&&(this._decideFormat(),"overlay"===this.menuType?this.button.attr("href","#"+this.popupId).attr("data-"+(a.mobile.ns||"")+"rel","popup"):this.button.attr("href","#"+this.dialogId).attr("data-"+(a.mobile.ns||"")+"rel","dialog"),this.isOpen=!0)},_handleListFocus:function(b){var c="focusin"===b.type?{tabindex:"0",event:"vmouseover"}:{tabindex:"-1",event:"vmouseout"};a(b.target).attr("tabindex",c.tabindex).trigger(c.event)},_handleListKeydown:function(b){var c=a(b.target),d=c.closest("li");switch(b.keyCode){case 38:return e(d,c,"prev"),!1;case 40:return e(d,c,"next"),!1;case 13:case 32:return c.trigger("click"),!1}},_handleMenuPageHide:function(){this._delayedTrigger(),this.thisPage.page("bindRemove")},_handleHeaderCloseClick:function(){return"overlay"===this.menuType?(this.close(),!1):void 0},_handleListItemClick:function(b){var c=a(b.target).closest("li"),d=this.select[0].selectedIndex,e=a.mobile.getAttribute(c,"option-index"),f=this._selectOptions().eq(e)[0];f.selected=this.isMultiple?!f.selected:!0,this.isMultiple&&c.find("a").toggleClass("ui-checkbox-on",f.selected).toggleClass("ui-checkbox-off",!f.selected),this.isMultiple||d===e||(this._triggerChange=!0),this.isMultiple?(this.select.trigger("change"),this.list.find("li:not(.ui-li-divider)").eq(e).find("a").first().focus()):this.close(),b.preventDefault()},build:function(){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v=this.options;return v.nativeMenu?this._super():(c=this.selectId,d=c+"-listbox",e=c+"-dialog",f=this.label,g=this.element.closest(".ui-page"),h=this.element[0].multiple,i=c+"-menu",j=v.theme?" data-"+a.mobile.ns+"theme='"+v.theme+"'":"",k=v.overlayTheme||v.theme||null,l=k?" data-"+a.mobile.ns+"overlay-theme='"+k+"'":"",m=v.dividerTheme&&h?" data-"+a.mobile.ns+"divider-theme='"+v.dividerTheme+"'":"",n=a("<div data-"+a.mobile.ns+"role='dialog' class='ui-selectmenu' id='"+e+"'"+j+l+"><div data-"+a.mobile.ns+"role='header'><div class='ui-title'></div></div><div data-"+a.mobile.ns+"role='content'></div></div>"),o=a("<div"+j+l+" id='"+d+"' class='ui-selectmenu'></div>").insertAfter(this.select).popup(),p=a("<ul class='ui-selectmenu-list' id='"+i+"' role='listbox' aria-labelledby='"+this.buttonId+"'"+j+m+"></ul>").appendTo(o),q=a("<div class='ui-header ui-bar-"+(v.theme?v.theme:"inherit")+"'></div>").prependTo(o),r=a("<h1 class='ui-title'></h1>").appendTo(q),this.isMultiple&&(u=a("<a>",{role:"button",text:v.closeText,href:"#","class":"ui-btn ui-corner-all ui-btn-left ui-btn-icon-notext ui-icon-delete"}).appendTo(q)),a.extend(this,{selectId:c,menuId:i,popupId:d,dialogId:e,thisPage:g,menuPage:n,label:f,isMultiple:h,theme:v.theme,listbox:o,list:p,header:q,headerTitle:r,headerClose:u,menuPageContent:s,menuPageClose:t,placeholder:""}),this.refresh(),this._origTabIndex===b&&(this._origTabIndex=null===this.select[0].getAttribute("tabindex")?!1:this.select.attr("tabindex")),this.select.attr("tabindex","-1"),this._on(this.select,{focus:"_handleSelectFocus"}),this._on(this.button,{vclick:"_handleButtonVclickKeydown"}),this.list.attr("role","listbox"),this._on(this.list,{focusin:"_handleListFocus",focusout:"_handleListFocus",keydown:"_handleListKeydown","click li:not(.ui-disabled,.ui-state-disabled,.ui-li-divider)":"_handleListItemClick"}),this._on(this.menuPage,{pagehide:"_handleMenuPageHide"}),this._on(this.listbox,{popupafterclose:"_popupClosed"}),this.isMultiple&&this._on(this.headerClose,{click:"_handleHeaderCloseClick"}),this)},_popupClosed:function(){this.close(),this._delayedTrigger()},_delayedTrigger:function(){this._triggerChange&&this.element.trigger("change"),this._triggerChange=!1},_isRebuildRequired:function(){var a=this.list.find("li"),b=this._selectOptions().not(".ui-screen-hidden");return b.text()!==a.text()},selected:function(){return this._selectOptions().filter(":selected:not( :jqmData(placeholder='true') )")},refresh:function(b){var c,d;return this.options.nativeMenu?this._super(b):(c=this,(b||this._isRebuildRequired())&&c._buildList(),d=this.selectedIndices(),c.setButtonText(),c.setButtonCount(),void c.list.find("li:not(.ui-li-divider)").find("a").removeClass(a.mobile.activeBtnClass).end().attr("aria-selected",!1).each(function(b){var e=a(this);a.inArray(b,d)>-1?(e.attr("aria-selected",!0),c.isMultiple?e.find("a").removeClass("ui-checkbox-off").addClass("ui-checkbox-on"):e.hasClass("ui-screen-hidden")?e.next().find("a").addClass(a.mobile.activeBtnClass):e.find("a").addClass(a.mobile.activeBtnClass)):c.isMultiple&&e.find("a").removeClass("ui-checkbox-on").addClass("ui-checkbox-off")}))},close:function(){if(!this.options.disabled&&this.isOpen){var a=this;"page"===a.menuType?(a.menuPage.dialog("close"),a.list.appendTo(a.listbox)):a.listbox.popup("close"),a._focusButton(),a.isOpen=!1}},open:function(){this.button.click()},_focusMenuItem:function(){var b=this.list.find("a."+a.mobile.activeBtnClass);0===b.length&&(b=this.list.find("li:not("+d+") a.ui-btn")),b.first().focus()},_decideFormat:function(){var b=this,c=this.window,d=b.list.parent(),e=d.outerHeight(),f=c.scrollTop(),g=b.button.offset().top,h=c.height();e>h-80||!a.support.scrollTop?(b.menuPage.appendTo(a.mobile.pageContainer).page(),b.menuPageContent=b.menuPage.find(".ui-content"),b.menuPageClose=b.menuPage.find(".ui-header a"),b.thisPage.unbind("pagehide.remove"),0===f&&g>h&&b.thisPage.one("pagehide",function(){a(this).jqmData("lastScroll",g)}),b.menuPage.one({pageshow:a.proxy(this,"_focusMenuItem"),pagehide:a.proxy(this,"close")}),b.menuType="page",b.menuPageContent.append(b.list),b.menuPage.find("div .ui-title").text(b.label.getEncodedText()||b.placeholder)):(b.menuType="overlay",b.listbox.one({popupafteropen:a.proxy(this,"_focusMenuItem")}))},_buildList:function(){var b,d,e,f,g,h,i,j,k,l,m,n,o,p,q=this,r=this.options,s=this.placeholder,t=!0,u="false",v="data-"+a.mobile.ns,w=v+"option-index",x=v+"icon",y=v+"role",z=v+"placeholder",A=c.createDocumentFragment(),B=!1;for(q.list.empty().filter(".ui-listview").listview("destroy"),b=this._selectOptions(),d=b.length,e=this.select[0],g=0;d>g;g++,B=!1)h=b[g],i=a(h),i.hasClass("ui-screen-hidden")||(j=h.parentNode,m=[],k=i.text(),l=c.createElement("a"),l.setAttribute("href","#"),l.appendChild(c.createTextNode(k)),j!==e&&"optgroup"===j.nodeName.toLowerCase()&&(n=j.getAttribute("label"),n!==f&&(o=c.createElement("li"),o.setAttribute(y,"list-divider"),o.setAttribute("role","option"),o.setAttribute("tabindex","-1"),o.appendChild(c.createTextNode(n)),A.appendChild(o),f=n)),!t||h.getAttribute("value")&&0!==k.length&&!i.jqmData("placeholder")||(t=!1,B=!0,null===h.getAttribute(z)&&(this._removePlaceholderAttr=!0),h.setAttribute(z,!0),r.hidePlaceholderMenuItems&&m.push("ui-screen-hidden"),s!==k&&(s=q.placeholder=k)),p=c.createElement("li"),h.disabled&&(m.push("ui-state-disabled"),p.setAttribute("aria-disabled",!0)),p.setAttribute(w,g),p.setAttribute(x,u),B&&p.setAttribute(z,!0),p.className=m.join(" "),p.setAttribute("role","option"),l.setAttribute("tabindex","-1"),this.isMultiple&&a(l).addClass("ui-btn ui-checkbox-off ui-btn-icon-right"),p.appendChild(l),A.appendChild(p));q.list[0].appendChild(A),this.isMultiple||s.length?this.headerTitle.text(this.placeholder):this.header.addClass("ui-screen-hidden"),q.list.listview()},_button:function(){return this.options.nativeMenu?this._super():a("<a>",{href:"#",role:"button",id:this.buttonId,"aria-haspopup":"true","aria-owns":this.menuId})},_destroy:function(){this.options.nativeMenu||(this.close(),this._origTabIndex!==b&&(this._origTabIndex!==!1?this.select.attr("tabindex",this._origTabIndex):this.select.removeAttr("tabindex")),this._removePlaceholderAttr&&this._selectOptions().removeAttr("data-"+a.mobile.ns+"placeholder"),this.listbox.remove(),this.menuPage.remove()),this._super()}})}(a),function(a,b){function c(a,b){var c=b?b:[];return c.push("ui-btn"),a.theme&&c.push("ui-btn-"+a.theme),a.icon&&(c=c.concat(["ui-icon-"+a.icon,"ui-btn-icon-"+a.iconpos]),a.iconshadow&&c.push("ui-shadow-icon")),a.inline&&c.push("ui-btn-inline"),a.shadow&&c.push("ui-shadow"),a.corners&&c.push("ui-corner-all"),a.mini&&c.push("ui-mini"),c}function d(a){var c,d,e,g=!1,h=!0,i={icon:"",inline:!1,shadow:!1,corners:!1,iconshadow:!1,mini:!1},j=[];for(a=a.split(" "),c=0;c<a.length;c++)e=!0,d=f[a[c]],d!==b?(e=!1,i[d]=!0):0===a[c].indexOf("ui-btn-icon-")?(e=!1,h=!1,i.iconpos=a[c].substring(12)):0===a[c].indexOf("ui-icon-")?(e=!1,i.icon=a[c].substring(8)):0===a[c].indexOf("ui-btn-")&&8===a[c].length?(e=!1,i.theme=a[c].substring(7)):"ui-btn"===a[c]&&(e=!1,g=!0),e&&j.push(a[c]);return h&&(i.icon=""),{options:i,unknownClasses:j,alreadyEnhanced:g}}function e(a){return"-"+a.toLowerCase()}var f={"ui-shadow":"shadow","ui-corner-all":"corners","ui-btn-inline":"inline","ui-shadow-icon":"iconshadow","ui-mini":"mini"},g=function(){var c=a.mobile.getAttribute.apply(this,arguments);return null==c?b:c},h=/[A-Z]/g;a.fn.buttonMarkup=function(f,i){var j,k,l,m,n,o=a.fn.buttonMarkup.defaults;for(j=0;j<this.length;j++){if(l=this[j],k=i?{alreadyEnhanced:!1,unknownClasses:[]}:d(l.className),m=a.extend({},k.alreadyEnhanced?k.options:{},f),!k.alreadyEnhanced)for(n in o)m[n]===b&&(m[n]=g(l,n.replace(h,e)));l.className=c(a.extend({},o,m),k.unknownClasses).join(" "),"button"!==l.tagName.toLowerCase()&&l.setAttribute("role","button")}return this},a.fn.buttonMarkup.defaults={icon:"",iconpos:"left",theme:null,inline:!1,shadow:!0,corners:!0,iconshadow:!1,mini:!1},a.extend(a.fn.buttonMarkup,{initSelector:"a:jqmData(role='button'), .ui-bar > a, .ui-bar > :jqmData(role='controlgroup') > a, button:not(:jqmData(role='navbar') button)"})}(a),function(a,b){a.widget("mobile.controlgroup",a.extend({options:{enhanced:!1,theme:null,shadow:!1,corners:!0,excludeInvisible:!0,type:"vertical",mini:!1},_create:function(){var b=this.element,c=this.options,d=a.mobile.page.prototype.keepNativeSelector();a.fn.buttonMarkup&&this.element.find(a.fn.buttonMarkup.initSelector).not(d).buttonMarkup(),a.each(this._childWidgets,a.proxy(function(b,c){a.mobile[c]&&this.element.find(a.mobile[c].initSelector).not(d)[c]()},this)),a.extend(this,{_ui:null,_initialRefresh:!0}),this._ui=c.enhanced?{groupLegend:b.children(".ui-controlgroup-label").children(),childWrapper:b.children(".ui-controlgroup-controls")}:this._enhance()},_childWidgets:["checkboxradio","selectmenu","button"],_themeClassFromOption:function(a){return a?"none"===a?"":"ui-group-theme-"+a:""},_enhance:function(){var b=this.element,c=this.options,d={groupLegend:b.children("legend"),childWrapper:b.addClass("ui-controlgroup ui-controlgroup-"+("horizontal"===c.type?"horizontal":"vertical")+" "+this._themeClassFromOption(c.theme)+" "+(c.corners?"ui-corner-all ":"")+(c.mini?"ui-mini ":"")).wrapInner("<div class='ui-controlgroup-controls "+(c.shadow===!0?"ui-shadow":"")+"'></div>").children()};return d.groupLegend.length>0&&a("<div role='heading' class='ui-controlgroup-label'></div>").append(d.groupLegend).prependTo(b),d},_init:function(){this.refresh()},_setOptions:function(a){var c,d,e=this.element;return a.type!==b&&(e.removeClass("ui-controlgroup-horizontal ui-controlgroup-vertical").addClass("ui-controlgroup-"+("horizontal"===a.type?"horizontal":"vertical")),c=!0),a.theme!==b&&e.removeClass(this._themeClassFromOption(this.options.theme)).addClass(this._themeClassFromOption(a.theme)),a.corners!==b&&e.toggleClass("ui-corner-all",a.corners),a.mini!==b&&e.toggleClass("ui-mini",a.mini),a.shadow!==b&&this._ui.childWrapper.toggleClass("ui-shadow",a.shadow),a.excludeInvisible!==b&&(this.options.excludeInvisible=a.excludeInvisible,c=!0),d=this._super(a),c&&this.refresh(),d},container:function(){return this._ui.childWrapper},refresh:function(){var b=this.container(),c=b.find(".ui-btn").not(".ui-slider-handle"),d=this._initialRefresh;a.mobile.checkboxradio&&b.find(":mobile-checkboxradio").checkboxradio("refresh"),this._addFirstLastClasses(c,this.options.excludeInvisible?this._getVisibles(c,d):c,d),this._initialRefresh=!1},_destroy:function(){var a,b,c=this.options;return c.enhanced?this:(a=this._ui,b=this.element.removeClass("ui-controlgroup ui-controlgroup-horizontal ui-controlgroup-vertical ui-corner-all ui-mini "+this._themeClassFromOption(c.theme)).find(".ui-btn").not(".ui-slider-handle"),this._removeFirstLastClasses(b),a.groupLegend.unwrap(),void a.childWrapper.children().unwrap())}},a.mobile.behaviors.addFirstLastClasses))}(a),function(a,b){a.widget("mobile.toolbar",{initSelector:":jqmData(role='footer'), :jqmData(role='header')",options:{theme:null,addBackBtn:!1,backBtnTheme:null,backBtnText:"Back"},_create:function(){var b,c,d=this.element.is(":jqmData(role='header')")?"header":"footer",e=this.element.closest(".ui-page");0===e.length&&(e=!1,this._on(this.document,{pageshow:"refresh"})),a.extend(this,{role:d,page:e,leftbtn:b,rightbtn:c}),this.element.attr("role","header"===d?"banner":"contentinfo").addClass("ui-"+d),this.refresh(),this._setOptions(this.options)},_setOptions:function(a){if(a.addBackBtn!==b&&this._updateBackButton(),null!=a.backBtnTheme&&this.element.find(".ui-toolbar-back-btn").addClass("ui-btn ui-btn-"+a.backBtnTheme),a.backBtnText!==b&&this.element.find(".ui-toolbar-back-btn .ui-btn-text").text(a.backBtnText),a.theme!==b){var c=this.options.theme?this.options.theme:"inherit",d=a.theme?a.theme:"inherit";this.element.removeClass("ui-bar-"+c).addClass("ui-bar-"+d)}this._super(a)},refresh:function(){"header"===this.role&&this._addHeaderButtonClasses(),this.page||(this._setRelative(),"footer"===this.role?this.element.appendTo("body"):"header"===this.role&&this._updateBackButton()),this._addHeadingClasses(),this._btnMarkup()},_setRelative:function(){a("[data-"+a.mobile.ns+"role='page']").css({position:"relative"})},_btnMarkup:function(){this.element.children("a").filter(":not([data-"+a.mobile.ns+"role='none'])").attr("data-"+a.mobile.ns+"role","button"),this.element.trigger("create")},_addHeaderButtonClasses:function(){var a=this.element.children("a, button");this.leftbtn=a.hasClass("ui-btn-left")&&!a.hasClass("ui-toolbar-back-btn"),this.rightbtn=a.hasClass("ui-btn-right"),this.leftbtn=this.leftbtn||a.eq(0).not(".ui-btn-right,.ui-toolbar-back-btn").addClass("ui-btn-left").length,this.rightbtn=this.rightbtn||a.eq(1).addClass("ui-btn-right").length},_updateBackButton:function(){var b,c=this.options,d=c.backBtnTheme||c.theme;b=this._backButton=this._backButton||{},this.options.addBackBtn&&"header"===this.role&&a(".ui-page").length>1&&(this.page?this.page[0].getAttribute("data-"+a.mobile.ns+"url")!==a.mobile.path.stripHash(location.hash):a.mobile.navigate&&a.mobile.navigate.history&&a.mobile.navigate.history.activeIndex>0)&&!this.leftbtn?b.attached||(this.backButton=b.element=(b.element||a("<a role='button' href='javascript:void(0);' class='ui-btn ui-corner-all ui-shadow ui-btn-left "+(d?"ui-btn-"+d+" ":"")+"ui-toolbar-back-btn ui-icon-carat-l ui-btn-icon-left' data-"+a.mobile.ns+"rel='back'>"+c.backBtnText+"</a>")).prependTo(this.element),b.attached=!0):b.element&&(b.element.detach(),b.attached=!1)},_addHeadingClasses:function(){this.element.children("h1, h2, h3, h4, h5, h6").addClass("ui-title").attr({role:"heading","aria-level":"1"})},_destroy:function(){var a;this.element.children("h1, h2, h3, h4, h5, h6").removeClass("ui-title").removeAttr("role").removeAttr("aria-level"),"header"===this.role&&(this.element.children("a, button").removeClass("ui-btn-left ui-btn-right ui-btn ui-shadow ui-corner-all"),this.backButton&&this.backButton.remove()),a=this.options.theme?this.options.theme:"inherit",this.element.removeClass("ui-bar-"+a),this.element.removeClass("ui-"+this.role).removeAttr("role")}})}(a),function(a,b){a.widget("mobile.toolbar",a.mobile.toolbar,{options:{position:null,visibleOnPageShow:!0,disablePageZoom:!0,transition:"slide",fullscreen:!1,tapToggle:!0,tapToggleBlacklist:"a, button, input, select, textarea, .ui-header-fixed, .ui-footer-fixed, .ui-flipswitch, .ui-popup, .ui-panel, .ui-panel-dismiss-open",hideDuringFocus:"input, textarea, select",updatePagePadding:!0,trackPersistentToolbars:!0,supportBlacklist:function(){return!a.support.fixedPosition}},_create:function(){this._super(),this.pagecontainer=a(":mobile-pagecontainer"),"fixed"!==this.options.position||this.options.supportBlacklist()||this._makeFixed()},_makeFixed:function(){this.element.addClass("ui-"+this.role+"-fixed"),this.updatePagePadding(),this._addTransitionClass(),this._bindPageEvents(),this._bindToggleHandlers()},_setOptions:function(c){if("fixed"===c.position&&"fixed"!==this.options.position&&this._makeFixed(),"fixed"===this.options.position&&!this.options.supportBlacklist()){var d=this.page?this.page:a(".ui-page-active").length>0?a(".ui-page-active"):a(".ui-page").eq(0);c.fullscreen!==b&&(c.fullscreen?(this.element.addClass("ui-"+this.role+"-fullscreen"),d.addClass("ui-page-"+this.role+"-fullscreen")):(this.element.removeClass("ui-"+this.role+"-fullscreen"),d.removeClass("ui-page-"+this.role+"-fullscreen").addClass("ui-page-"+this.role+"-fixed")))}this._super(c)},_addTransitionClass:function(){var a=this.options.transition;a&&"none"!==a&&("slide"===a&&(a=this.element.hasClass("ui-header")?"slidedown":"slideup"),this.element.addClass(a))},_bindPageEvents:function(){var a=this.page?this.element.closest(".ui-page"):this.document;this._on(a,{pagebeforeshow:"_handlePageBeforeShow",webkitAnimationStart:"_handleAnimationStart",animationstart:"_handleAnimationStart",updatelayout:"_handleAnimationStart",pageshow:"_handlePageShow",pagebeforehide:"_handlePageBeforeHide"})},_handlePageBeforeShow:function(){var b=this.options;b.disablePageZoom&&a.mobile.zoom.disable(!0),b.visibleOnPageShow||this.hide(!0)},_handleAnimationStart:function(){this.options.updatePagePadding&&this.updatePagePadding(this.page?this.page:".ui-page-active")},_handlePageShow:function(){this.updatePagePadding(this.page?this.page:".ui-page-active"),this.options.updatePagePadding&&this._on(this.window,{throttledresize:"updatePagePadding"})},_handlePageBeforeHide:function(b,c){var d,e,f,g,h=this.options;h.disablePageZoom&&a.mobile.zoom.enable(!0),h.updatePagePadding&&this._off(this.window,"throttledresize"),h.trackPersistentToolbars&&(d=a(".ui-footer-fixed:jqmData(id)",this.page),e=a(".ui-header-fixed:jqmData(id)",this.page),f=d.length&&c.nextPage&&a(".ui-footer-fixed:jqmData(id='"+d.jqmData("id")+"')",c.nextPage)||a(),g=e.length&&c.nextPage&&a(".ui-header-fixed:jqmData(id='"+e.jqmData("id")+"')",c.nextPage)||a(),(f.length||g.length)&&(f.add(g).appendTo(a.mobile.pageContainer),c.nextPage.one("pageshow",function(){g.prependTo(this),f.appendTo(this)})))},_visible:!0,updatePagePadding:function(c){var d=this.element,e="header"===this.role,f=parseFloat(d.css(e?"top":"bottom"));this.options.fullscreen||(c=c&&c.type===b&&c||this.page||d.closest(".ui-page"),c=this.page?this.page:".ui-page-active",a(c).css("padding-"+(e?"top":"bottom"),d.outerHeight()+f))},_useTransition:function(b){var c=this.window,d=this.element,e=c.scrollTop(),f=d.height(),g=this.page?d.closest(".ui-page").height():a(".ui-page-active").height(),h=a.mobile.getScreenHeight();return!b&&(this.options.transition&&"none"!==this.options.transition&&("header"===this.role&&!this.options.fullscreen&&e>f||"footer"===this.role&&!this.options.fullscreen&&g-f>e+h)||this.options.fullscreen)},show:function(a){var b="ui-fixed-hidden",c=this.element;this._useTransition(a)?c.removeClass("out "+b).addClass("in").animationComplete(function(){c.removeClass("in")}):c.removeClass(b),this._visible=!0},hide:function(a){var b="ui-fixed-hidden",c=this.element,d="out"+("slide"===this.options.transition?" reverse":"");this._useTransition(a)?c.addClass(d).removeClass("in").animationComplete(function(){c.addClass(b).removeClass(d)}):c.addClass(b).removeClass(d),this._visible=!1},toggle:function(){this[this._visible?"hide":"show"]()},_bindToggleHandlers:function(){var b,c,d=this,e=d.options,f=!0,g=this.page?this.page:a(".ui-page");g.bind("vclick",function(b){e.tapToggle&&!a(b.target).closest(e.tapToggleBlacklist).length&&d.toggle()}).bind("focusin focusout",function(g){screen.width<1025&&a(g.target).is(e.hideDuringFocus)&&!a(g.target).closest(".ui-header-fixed, .ui-footer-fixed").length&&("focusout"!==g.type||f?"focusin"===g.type&&f&&(clearTimeout(b),f=!1,c=setTimeout(function(){d.hide()},0)):(f=!0,clearTimeout(c),b=setTimeout(function(){d.show()},0)))})},_setRelative:function(){"fixed"!==this.options.position&&a("[data-"+a.mobile.ns+"role='page']").css({position:"relative"})},_destroy:function(){var b,c,d,e,f,g=this.pagecontainer.pagecontainer("getActivePage");this._super(),"fixed"===this.options.position&&(d=a("body>.ui-"+this.role+"-fixed").add(g.find(".ui-"+this.options.role+"-fixed")).not(this.element).length>0,f=a("body>.ui-"+this.role+"-fixed").add(g.find(".ui-"+this.options.role+"-fullscreen")).not(this.element).length>0,c="ui-header-fixed ui-footer-fixed ui-header-fullscreen in out ui-footer-fullscreen fade slidedown slideup ui-fixed-hidden",this.element.removeClass(c),f||(b="ui-page-"+this.role+"-fullscreen"),d||(e="header"===this.role,b+=" ui-page-"+this.role+"-fixed",g.css("padding-"+(e?"top":"bottom"),"")),g.removeClass(b))
+}})}(a),function(a){a.widget("mobile.toolbar",a.mobile.toolbar,{_makeFixed:function(){this._super(),this._workarounds()},_workarounds:function(){var a=navigator.userAgent,b=navigator.platform,c=a.match(/AppleWebKit\/([0-9]+)/),d=!!c&&c[1],e=null,f=this;if(b.indexOf("iPhone")>-1||b.indexOf("iPad")>-1||b.indexOf("iPod")>-1)e="ios";else{if(!(a.indexOf("Android")>-1))return;e="android"}if("ios"===e)f._bindScrollWorkaround();else{if(!("android"===e&&d&&534>d))return;f._bindScrollWorkaround(),f._bindListThumbWorkaround()}},_viewportOffset:function(){var a=this.element,b=a.hasClass("ui-header"),c=Math.abs(a.offset().top-this.window.scrollTop());return b||(c=Math.round(c-this.window.height()+a.outerHeight())-60),c},_bindScrollWorkaround:function(){var a=this;this._on(this.window,{scrollstop:function(){var b=a._viewportOffset();b>2&&a._visible&&a._triggerRedraw()}})},_bindListThumbWorkaround:function(){this.element.closest(".ui-page").addClass("ui-android-2x-fixed")},_triggerRedraw:function(){var b=parseFloat(a(".ui-page-active").css("padding-bottom"));a(".ui-page-active").css("padding-bottom",b+1+"px"),setTimeout(function(){a(".ui-page-active").css("padding-bottom",b+"px")},0)},destroy:function(){this._super(),this.element.closest(".ui-page-active").removeClass("ui-android-2x-fix")}})}(a),function(a,b){function c(){var a=e.clone(),b=a.eq(0),c=a.eq(1),d=c.children();return{arEls:c.add(b),gd:b,ct:c,ar:d}}var d=a.mobile.browser.oldIE&&a.mobile.browser.oldIE<=8,e=a("<div class='ui-popup-arrow-guide'></div><div class='ui-popup-arrow-container"+(d?" ie":"")+"'><div class='ui-popup-arrow'></div></div>");a.widget("mobile.popup",a.mobile.popup,{options:{arrow:""},_create:function(){var a,b=this._super();return this.options.arrow&&(this._ui.arrow=a=this._addArrow()),b},_addArrow:function(){var a,b=this.options,d=c();return a=this._themeClassFromOption("ui-body-",b.theme),d.ar.addClass(a+(b.shadow?" ui-overlay-shadow":"")),d.arEls.hide().appendTo(this.element),d},_unenhance:function(){var a=this._ui.arrow;return a&&a.arEls.remove(),this._super()},_tryAnArrow:function(a,b,c,d,e){var f,g,h,i={},j={};return d.arFull[a.dimKey]>d.guideDims[a.dimKey]?e:(i[a.fst]=c[a.fst]+(d.arHalf[a.oDimKey]+d.menuHalf[a.oDimKey])*a.offsetFactor-d.contentBox[a.fst]+(d.clampInfo.menuSize[a.oDimKey]-d.contentBox[a.oDimKey])*a.arrowOffsetFactor,i[a.snd]=c[a.snd],f=d.result||this._calculateFinalLocation(i,d.clampInfo),g={x:f.left,y:f.top},j[a.fst]=g[a.fst]+d.contentBox[a.fst]+a.tipOffset,j[a.snd]=Math.max(f[a.prop]+d.guideOffset[a.prop]+d.arHalf[a.dimKey],Math.min(f[a.prop]+d.guideOffset[a.prop]+d.guideDims[a.dimKey]-d.arHalf[a.dimKey],c[a.snd])),h=Math.abs(c.x-j.x)+Math.abs(c.y-j.y),(!e||h<e.diff)&&(j[a.snd]-=d.arHalf[a.dimKey]+f[a.prop]+d.contentBox[a.snd],e={dir:b,diff:h,result:f,posProp:a.prop,posVal:j[a.snd]}),e)},_getPlacementState:function(a){var b,c,d=this._ui.arrow,e={clampInfo:this._clampPopupWidth(!a),arFull:{cx:d.ct.width(),cy:d.ct.height()},guideDims:{cx:d.gd.width(),cy:d.gd.height()},guideOffset:d.gd.offset()};return b=this.element.offset(),d.gd.css({left:0,top:0,right:0,bottom:0}),c=d.gd.offset(),e.contentBox={x:c.left-b.left,y:c.top-b.top,cx:d.gd.width(),cy:d.gd.height()},d.gd.removeAttr("style"),e.guideOffset={left:e.guideOffset.left-b.left,top:e.guideOffset.top-b.top},e.arHalf={cx:e.arFull.cx/2,cy:e.arFull.cy/2},e.menuHalf={cx:e.clampInfo.menuSize.cx/2,cy:e.clampInfo.menuSize.cy/2},e},_placementCoords:function(b){var c,e,f,g,h,i=this.options.arrow,j=this._ui.arrow;return j?(j.arEls.show(),h={},c=this._getPlacementState(!0),f={l:{fst:"x",snd:"y",prop:"top",dimKey:"cy",oDimKey:"cx",offsetFactor:1,tipOffset:-c.arHalf.cx,arrowOffsetFactor:0},r:{fst:"x",snd:"y",prop:"top",dimKey:"cy",oDimKey:"cx",offsetFactor:-1,tipOffset:c.arHalf.cx+c.contentBox.cx,arrowOffsetFactor:1},b:{fst:"y",snd:"x",prop:"left",dimKey:"cx",oDimKey:"cy",offsetFactor:-1,tipOffset:c.arHalf.cy+c.contentBox.cy,arrowOffsetFactor:1},t:{fst:"y",snd:"x",prop:"left",dimKey:"cx",oDimKey:"cy",offsetFactor:1,tipOffset:-c.arHalf.cy,arrowOffsetFactor:0}},a.each((i===!0?"l,t,r,b":i).split(","),a.proxy(function(a,d){e=this._tryAnArrow(f[d],d,b,c,e)},this)),e?(j.ct.removeClass("ui-popup-arrow-l ui-popup-arrow-t ui-popup-arrow-r ui-popup-arrow-b").addClass("ui-popup-arrow-"+e.dir).removeAttr("style").css(e.posProp,e.posVal).show(),d||(g=this.element.offset(),h[f[e.dir].fst]=j.ct.offset(),h[f[e.dir].snd]={left:g.left+c.contentBox.x,top:g.top+c.contentBox.y}),e.result):(j.arEls.hide(),this._super(b))):this._super(b)},_setOptions:function(a){var c,d=this.options.theme,e=this._ui.arrow,f=this._super(a);if(a.arrow!==b){if(!e&&a.arrow)return void(this._ui.arrow=this._addArrow());e&&!a.arrow&&(e.arEls.remove(),this._ui.arrow=null)}return e=this._ui.arrow,e&&(a.theme!==b&&(d=this._themeClassFromOption("ui-body-",d),c=this._themeClassFromOption("ui-body-",a.theme),e.ar.removeClass(d).addClass(c)),a.shadow!==b&&e.ar.toggleClass("ui-overlay-shadow",a.shadow)),f},_destroy:function(){var a=this._ui.arrow;return a&&a.arEls.remove(),this._super()}})}(a),function(a,c){a.widget("mobile.panel",{options:{classes:{panel:"ui-panel",panelOpen:"ui-panel-open",panelClosed:"ui-panel-closed",panelFixed:"ui-panel-fixed",panelInner:"ui-panel-inner",modal:"ui-panel-dismiss",modalOpen:"ui-panel-dismiss-open",pageContainer:"ui-panel-page-container",pageWrapper:"ui-panel-wrapper",pageFixedToolbar:"ui-panel-fixed-toolbar",pageContentPrefix:"ui-panel-page-content",animate:"ui-panel-animate"},animate:!0,theme:null,position:"left",dismissible:!0,display:"reveal",swipeClose:!0,positionFixed:!1},_closeLink:null,_parentPage:null,_page:null,_modal:null,_panelInner:null,_wrapper:null,_fixedToolbars:null,_create:function(){var b=this.element,c=b.closest(".ui-page, :jqmData(role='page')");a.extend(this,{_closeLink:b.find(":jqmData(rel='close')"),_parentPage:c.length>0?c:!1,_openedPage:null,_page:this._getPage,_panelInner:this._getPanelInner(),_fixedToolbars:this._getFixedToolbars}),"overlay"!==this.options.display&&this._getWrapper(),this._addPanelClasses(),a.support.cssTransform3d&&this.options.animate&&this.element.addClass(this.options.classes.animate),this._bindUpdateLayout(),this._bindCloseEvents(),this._bindLinkListeners(),this._bindPageEvents(),this.options.dismissible&&this._createModal(),this._bindSwipeEvents()},_getPanelInner:function(){var a=this.element.find("."+this.options.classes.panelInner);return 0===a.length&&(a=this.element.children().wrapAll("<div class='"+this.options.classes.panelInner+"' />").parent()),a},_createModal:function(){var b=this,c=b._parentPage?b._parentPage.parent():b.element.parent();b._modal=a("<div class='"+b.options.classes.modal+"'></div>").on("mousedown",function(){b.close()}).appendTo(c)},_getPage:function(){var b=this._openedPage||this._parentPage||a("."+a.mobile.activePageClass);return b},_getWrapper:function(){var a=this._page().find("."+this.options.classes.pageWrapper);0===a.length&&(a=this._page().children(".ui-header:not(.ui-header-fixed), .ui-content:not(.ui-popup), .ui-footer:not(.ui-footer-fixed)").wrapAll("<div class='"+this.options.classes.pageWrapper+"'></div>").parent()),this._wrapper=a},_getFixedToolbars:function(){var b=a("body").children(".ui-header-fixed, .ui-footer-fixed"),c=this._page().find(".ui-header-fixed, .ui-footer-fixed"),d=b.add(c).addClass(this.options.classes.pageFixedToolbar);return d},_getPosDisplayClasses:function(a){return a+"-position-"+this.options.position+" "+a+"-display-"+this.options.display},_getPanelClasses:function(){var a=this.options.classes.panel+" "+this._getPosDisplayClasses(this.options.classes.panel)+" "+this.options.classes.panelClosed+" ui-body-"+(this.options.theme?this.options.theme:"inherit");return this.options.positionFixed&&(a+=" "+this.options.classes.panelFixed),a},_addPanelClasses:function(){this.element.addClass(this._getPanelClasses())},_handleCloseClick:function(a){a.isDefaultPrevented()||this.close()},_bindCloseEvents:function(){this._on(this._closeLink,{click:"_handleCloseClick"}),this._on({"click a:jqmData(ajax='false')":"_handleCloseClick"})},_positionPanel:function(b){var c=this,d=c._panelInner.outerHeight(),e=d>a.mobile.getScreenHeight();e||!c.options.positionFixed?(e&&(c._unfixPanel(),a.mobile.resetActivePageHeight(d)),b&&this.window[0].scrollTo(0,a.mobile.defaultHomeScroll)):c._fixPanel()},_bindFixListener:function(){this._on(a(b),{throttledresize:"_positionPanel"})},_unbindFixListener:function(){this._off(a(b),"throttledresize")},_unfixPanel:function(){this.options.positionFixed&&a.support.fixedPosition&&this.element.removeClass(this.options.classes.panelFixed)},_fixPanel:function(){this.options.positionFixed&&a.support.fixedPosition&&this.element.addClass(this.options.classes.panelFixed)},_bindUpdateLayout:function(){var a=this;a.element.on("updatelayout",function(){a._open&&a._positionPanel()})},_bindLinkListeners:function(){this._on("body",{"click a":"_handleClick"})},_handleClick:function(b){var d,e=this.element.attr("id");b.currentTarget.href.split("#")[1]===e&&e!==c&&(b.preventDefault(),d=a(b.target),d.hasClass("ui-btn")&&(d.addClass(a.mobile.activeBtnClass),this.element.one("panelopen panelclose",function(){d.removeClass(a.mobile.activeBtnClass)})),this.toggle())},_bindSwipeEvents:function(){var a=this,b=a._modal?a.element.add(a._modal):a.element;a.options.swipeClose&&("left"===a.options.position?b.on("swipeleft.panel",function(){a.close()}):b.on("swiperight.panel",function(){a.close()}))},_bindPageEvents:function(){var a=this;this.document.on("panelbeforeopen",function(b){a._open&&b.target!==a.element[0]&&a.close()}).on("keyup.panel",function(b){27===b.keyCode&&a._open&&a.close()}),this._parentPage||"overlay"===this.options.display||this._on(this.document,{pageshow:function(){this._openedPage=null,this._getWrapper()}}),a._parentPage?this.document.on("pagehide",":jqmData(role='page')",function(){a._open&&a.close(!0)}):this.document.on("pagebeforehide",function(){a._open&&a.close(!0)})},_open:!1,_pageContentOpenClasses:null,_modalOpenClasses:null,open:function(b){if(!this._open){var c=this,d=c.options,e=function(){c._off(c.document,"panelclose"),c._page().jqmData("panel","open"),a.support.cssTransform3d&&d.animate&&"overlay"!==d.display&&(c._wrapper.addClass(d.classes.animate),c._fixedToolbars().addClass(d.classes.animate)),!b&&a.support.cssTransform3d&&d.animate?(c._wrapper||c.element).animationComplete(f,"transition"):setTimeout(f,0),d.theme&&"overlay"!==d.display&&c._page().parent().addClass(d.classes.pageContainer+"-themed "+d.classes.pageContainer+"-"+d.theme),c.element.removeClass(d.classes.panelClosed).addClass(d.classes.panelOpen),c._positionPanel(!0),c._pageContentOpenClasses=c._getPosDisplayClasses(d.classes.pageContentPrefix),"overlay"!==d.display&&(c._page().parent().addClass(d.classes.pageContainer),c._wrapper.addClass(c._pageContentOpenClasses),c._fixedToolbars().addClass(c._pageContentOpenClasses)),c._modalOpenClasses=c._getPosDisplayClasses(d.classes.modal)+" "+d.classes.modalOpen,c._modal&&c._modal.addClass(c._modalOpenClasses).height(Math.max(c._modal.height(),c.document.height()))},f=function(){c._open&&("overlay"!==d.display&&(c._wrapper.addClass(d.classes.pageContentPrefix+"-open"),c._fixedToolbars().addClass(d.classes.pageContentPrefix+"-open")),c._bindFixListener(),c._trigger("open"),c._openedPage=c._page())};c._trigger("beforeopen"),"open"===c._page().jqmData("panel")?c._on(c.document,{panelclose:e}):e(),c._open=!0}},close:function(b){if(this._open){var c=this,d=this.options,e=function(){c.element.removeClass(d.classes.panelOpen),"overlay"!==d.display&&(c._wrapper.removeClass(c._pageContentOpenClasses),c._fixedToolbars().removeClass(c._pageContentOpenClasses)),!b&&a.support.cssTransform3d&&d.animate?(c._wrapper||c.element).animationComplete(f,"transition"):setTimeout(f,0),c._modal&&c._modal.removeClass(c._modalOpenClasses).height("")},f=function(){d.theme&&"overlay"!==d.display&&c._page().parent().removeClass(d.classes.pageContainer+"-themed "+d.classes.pageContainer+"-"+d.theme),c.element.addClass(d.classes.panelClosed),"overlay"!==d.display&&(c._page().parent().removeClass(d.classes.pageContainer),c._wrapper.removeClass(d.classes.pageContentPrefix+"-open"),c._fixedToolbars().removeClass(d.classes.pageContentPrefix+"-open")),a.support.cssTransform3d&&d.animate&&"overlay"!==d.display&&(c._wrapper.removeClass(d.classes.animate),c._fixedToolbars().removeClass(d.classes.animate)),c._fixPanel(),c._unbindFixListener(),a.mobile.resetActivePageHeight(),c._page().jqmRemoveData("panel"),c._trigger("close"),c._openedPage=null};c._trigger("beforeclose"),e(),c._open=!1}},toggle:function(){this[this._open?"close":"open"]()},_destroy:function(){var b,c=this.options,d=a("body > :mobile-panel").length+a.mobile.activePage.find(":mobile-panel").length>1;"overlay"!==c.display&&(b=a("body > :mobile-panel").add(a.mobile.activePage.find(":mobile-panel")),0===b.not(".ui-panel-display-overlay").not(this.element).length&&this._wrapper.children().unwrap(),this._open&&(this._fixedToolbars().removeClass(c.classes.pageContentPrefix+"-open"),a.support.cssTransform3d&&c.animate&&this._fixedToolbars().removeClass(c.classes.animate),this._page().parent().removeClass(c.classes.pageContainer),c.theme&&this._page().parent().removeClass(c.classes.pageContainer+"-themed "+c.classes.pageContainer+"-"+c.theme))),d||this.document.off("panelopen panelclose"),this._open&&this._page().jqmRemoveData("panel"),this._panelInner.children().unwrap(),this.element.removeClass([this._getPanelClasses(),c.classes.panelOpen,c.classes.animate].join(" ")).off("swipeleft.panel swiperight.panel").off("panelbeforeopen").off("panelhide").off("keyup.panel").off("updatelayout"),this._modal&&this._modal.remove()}})}(a),function(a,b){a.widget("mobile.table",{options:{classes:{table:"ui-table"},enhanced:!1},_create:function(){this.options.enhanced||this.element.addClass(this.options.classes.table),a.extend(this,{headers:b,allHeaders:b}),this._refresh(!0)},_setHeaders:function(){var a=this.element.find("thead tr");this.headers=this.element.find("tr:eq(0)").children(),this.allHeaders=this.headers.add(a.children())},refresh:function(){this._refresh()},rebuild:a.noop,_refresh:function(){var b=this.element,c=b.find("thead tr");this._setHeaders(),c.each(function(){var d=0;a(this).children().each(function(){var e,f=parseInt(this.getAttribute("colspan"),10),g=":nth-child("+(d+1)+")";if(this.setAttribute("data-"+a.mobile.ns+"colstart",d+1),f)for(e=0;f-1>e;e++)d++,g+=", :nth-child("+(d+1)+")";a(this).jqmData("cells",b.find("tr").not(c.eq(0)).not(this).children(g)),d++})})}})}(a),function(a){a.widget("mobile.table",a.mobile.table,{options:{mode:"columntoggle",columnBtnTheme:null,columnPopupTheme:null,columnBtnText:"Columns...",classes:a.extend(a.mobile.table.prototype.options.classes,{popup:"ui-table-columntoggle-popup",columnBtn:"ui-table-columntoggle-btn",priorityPrefix:"ui-table-priority-",columnToggleTable:"ui-table-columntoggle"})},_create:function(){this._super(),"columntoggle"===this.options.mode&&(a.extend(this,{_menu:null}),this.options.enhanced?(this._menu=a(this.document[0].getElementById(this._id()+"-popup")).children().first(),this._addToggles(this._menu,!0)):(this._menu=this._enhanceColToggle(),this.element.addClass(this.options.classes.columnToggleTable)),this._setupEvents(),this._setToggleState())},_id:function(){return this.element.attr("id")||this.widgetName+this.uuid},_setupEvents:function(){this._on(this.window,{throttledresize:"_setToggleState"}),this._on(this._menu,{"change input":"_menuInputChange"})},_addToggles:function(b,c){var d,e=0,f=this.options,g=b.controlgroup("container");c?d=b.find("input"):g.empty(),this.headers.not("td").each(function(){var b,h,i=a(this),j=a.mobile.getAttribute(this,"priority");j&&(h=i.add(i.jqmData("cells")),h.addClass(f.classes.priorityPrefix+j),b=(c?d.eq(e++):a("<label><input type='checkbox' checked />"+(i.children("abbr").first().attr("title")||i.text())+"</label>").appendTo(g).children(0).checkboxradio({theme:f.columnPopupTheme})).jqmData("header",i).jqmData("cells",h),i.jqmData("input",b))}),c||b.controlgroup("refresh")},_menuInputChange:function(b){var c=a(b.target),d=c[0].checked;c.jqmData("cells").toggleClass("ui-table-cell-hidden",!d).toggleClass("ui-table-cell-visible",d)},_unlockCells:function(a){a.removeClass("ui-table-cell-hidden ui-table-cell-visible")},_enhanceColToggle:function(){var b,c,d,e,f=this.element,g=this.options,h=a.mobile.ns,i=this.document[0].createDocumentFragment();return b=this._id()+"-popup",c=a("<a href='#"+b+"' class='"+g.classes.columnBtn+" ui-btn ui-btn-"+(g.columnBtnTheme||"a")+" ui-corner-all ui-shadow ui-mini' data-"+h+"rel='popup'>"+g.columnBtnText+"</a>"),d=a("<div class='"+g.classes.popup+"' id='"+b+"'></div>"),e=a("<fieldset></fieldset>").controlgroup(),this._addToggles(e,!1),e.appendTo(d),i.appendChild(d[0]),i.appendChild(c[0]),f.before(i),d.popup(),e},rebuild:function(){this._super(),"columntoggle"===this.options.mode&&this._refresh(!1)},_refresh:function(b){var c,d,e;if(this._super(b),!b&&"columntoggle"===this.options.mode)for(c=this.headers,d=[],this._menu.find("input").each(function(){var b=a(this),e=b.jqmData("header"),f=c.index(e[0]);f>-1&&!b.prop("checked")&&d.push(f)}),this._unlockCells(this.element.find(".ui-table-cell-hidden, .ui-table-cell-visible")),this._addToggles(this._menu,b),e=d.length-1;e>-1;e--)c.eq(d[e]).jqmData("input").prop("checked",!1).checkboxradio("refresh").trigger("change")},_setToggleState:function(){this._menu.find("input").each(function(){var b=a(this);this.checked="table-cell"===b.jqmData("cells").eq(0).css("display"),b.checkboxradio("refresh")})},_destroy:function(){this._super()}})}(a),function(a){a.widget("mobile.table",a.mobile.table,{options:{mode:"reflow",classes:a.extend(a.mobile.table.prototype.options.classes,{reflowTable:"ui-table-reflow",cellLabels:"ui-table-cell-label"})},_create:function(){this._super(),"reflow"===this.options.mode&&(this.options.enhanced||(this.element.addClass(this.options.classes.reflowTable),this._updateReflow()))},rebuild:function(){this._super(),"reflow"===this.options.mode&&this._refresh(!1)},_refresh:function(a){this._super(a),a||"reflow"!==this.options.mode||this._updateReflow()},_updateReflow:function(){var b=this,c=this.options;a(b.allHeaders.get().reverse()).each(function(){var d,e,f=a(this).jqmData("cells"),g=a.mobile.getAttribute(this,"colstart"),h=f.not(this).filter("thead th").length&&" ui-table-cell-label-top",i=a(this).clone().contents();i.length>0&&(h?(d=parseInt(this.getAttribute("colspan"),10),e="",d&&(e="td:nth-child("+d+"n + "+g+")"),b._addLabels(f.filter(e),c.classes.cellLabels+h,i)):b._addLabels(f,c.classes.cellLabels,i))})},_addLabels:function(b,c,d){1===d.length&&"abbr"===d[0].nodeName.toLowerCase()&&(d=d.eq(0).attr("title")),b.not(":has(b."+c+")").prepend(a("<b class='"+c+"'></b>").append(d))}})}(a),function(a,c){var d=function(b,c){return-1===(""+(a.mobile.getAttribute(this,"filtertext")||a(this).text())).toLowerCase().indexOf(c)};a.widget("mobile.filterable",{initSelector:":jqmData(filter='true')",options:{filterReveal:!1,filterCallback:d,enhanced:!1,input:null,children:"> li, > option, > optgroup option, > tbody tr, > .ui-controlgroup-controls > .ui-btn, > .ui-controlgroup-controls > .ui-checkbox, > .ui-controlgroup-controls > .ui-radio"},_create:function(){var b=this.options;a.extend(this,{_search:null,_timer:0}),this._setInput(b.input),b.enhanced||this._filterItems((this._search&&this._search.val()||"").toLowerCase())},_onKeyUp:function(){var c,d,e=this._search;if(e){if(c=e.val().toLowerCase(),d=a.mobile.getAttribute(e[0],"lastval")+"",d&&d===c)return;this._timer&&(b.clearTimeout(this._timer),this._timer=0),this._timer=this._delay(function(){return this._trigger("beforefilter",null,{input:e})===!1?!1:(e[0].setAttribute("data-"+a.mobile.ns+"lastval",c),this._filterItems(c),void(this._timer=0))},250)}},_getFilterableItems:function(){var b=this.element,c=this.options.children,d=c?a.isFunction(c)?c():c.nodeName?a(c):c.jquery?c:this.element.find(c):{length:0};return 0===d.length&&(d=b.children()),d},_filterItems:function(b){var c,e,f,g,h=[],i=[],j=this.options,k=this._getFilterableItems();if(null!=b)for(e=j.filterCallback||d,f=k.length,c=0;f>c;c++)g=e.call(k[c],c,b)?i:h,g.push(k[c]);0===i.length?k[j.filterReveal&&0===b.length?"addClass":"removeClass"]("ui-screen-hidden"):(a(i).addClass("ui-screen-hidden"),a(h).removeClass("ui-screen-hidden")),this._refreshChildWidget(),this._trigger("filter",null,{items:k})},_refreshChildWidget:function(){var b,c,d=["collapsibleset","selectmenu","controlgroup","listview"];for(c=d.length-1;c>-1;c--)b=d[c],a.mobile[b]&&(b=this.element.data("mobile-"+b),b&&a.isFunction(b.refresh)&&b.refresh())},_setInput:function(c){var d=this._search;this._timer&&(b.clearTimeout(this._timer),this._timer=0),d&&(this._off(d,"keyup change input"),d=null),c&&(d=c.jquery?c:c.nodeName?a(c):this.document.find(c),this._on(d,{keydown:"_onKeyDown",keypress:"_onKeyPress",keyup:"_onKeyUp",change:"_onKeyUp",input:"_onKeyUp"})),this._search=d},_onKeyDown:function(b){b.keyCode===a.ui.keyCode.ENTER&&(b.preventDefault(),this._preventKeyPress=!0)},_onKeyPress:function(a){this._preventKeyPress&&(a.preventDefault(),this._preventKeyPress=!1)},_setOptions:function(a){var b=!(a.filterReveal===c&&a.filterCallback===c&&a.children===c);this._super(a),a.input!==c&&(this._setInput(a.input),b=!0),b&&this.refresh()},_destroy:function(){var a=this.options,b=this._getFilterableItems();a.enhanced?b.toggleClass("ui-screen-hidden",a.filterReveal):b.removeClass("ui-screen-hidden")},refresh:function(){this._timer&&(b.clearTimeout(this._timer),this._timer=0),this._filterItems((this._search&&this._search.val()||"").toLowerCase())}})}(a),function(a,b){var c=function(a,b){return function(c){b.call(this,c),a._syncTextInputOptions(c)}},d=/(^|\s)ui-li-divider(\s|$)/,e=a.mobile.filterable.prototype.options.filterCallback;a.mobile.filterable.prototype.options.filterCallback=function(a,b){return!this.className.match(d)&&e.call(this,a,b)},a.widget("mobile.filterable",a.mobile.filterable,{options:{filterPlaceholder:"Filter items...",filterTheme:null},_create:function(){var b,c,d=this.element,e=["collapsibleset","selectmenu","controlgroup","listview"],f={};for(this._super(),a.extend(this,{_widget:null}),b=e.length-1;b>-1;b--)if(c=e[b],a.mobile[c]){if(this._setWidget(d.data("mobile-"+c)))break;f[c+"create"]="_handleCreate"}this._widget||this._on(d,f)},_handleCreate:function(a){this._setWidget(this.element.data("mobile-"+a.type.substring(0,a.type.length-6)))},_trigger:function(a,b,c){return this._widget&&"mobile-listview"===this._widget.widgetFullName&&"beforefilter"===a&&this._widget._trigger("beforefilter",b,c),this._super(a,b,c)},_setWidget:function(a){return!this._widget&&a&&(this._widget=a,this._widget._setOptions=c(this,this._widget._setOptions)),this._widget&&(this._syncTextInputOptions(this._widget.options),"listview"===this._widget.widgetName&&(this._widget.options.hideDividers=!0,this._widget.element.listview("refresh"))),!!this._widget},_isSearchInternal:function(){return this._search&&this._search.jqmData("ui-filterable-"+this.uuid+"-internal")},_setInput:function(b){var c=this.options,d=!0,e={};if(!b){if(this._isSearchInternal())return;d=!1,b=a("<input data-"+a.mobile.ns+"type='search' placeholder='"+c.filterPlaceholder+"'></input>").jqmData("ui-filterable-"+this.uuid+"-internal",!0),a("<form class='ui-filterable'></form>").append(b).submit(function(a){a.preventDefault(),b.blur()}).insertBefore(this.element),a.mobile.textinput&&(null!=this.options.filterTheme&&(e.theme=c.filterTheme),b.textinput(e))}this._super(b),this._isSearchInternal()&&d&&this._search.attr("placeholder",this.options.filterPlaceholder)},_setOptions:function(c){var d=this._super(c);return c.filterPlaceholder!==b&&this._isSearchInternal()&&this._search.attr("placeholder",c.filterPlaceholder),c.filterTheme!==b&&this._search&&a.mobile.textinput&&this._search.textinput("option","theme",c.filterTheme),d},_refreshChildWidget:function(){this._refreshingChildWidget=!0,this._superApply(arguments),this._refreshingChildWidget=!1},refresh:function(){this._refreshingChildWidget||this._superApply(arguments)},_destroy:function(){this._isSearchInternal()&&this._search.remove(),this._super()},_syncTextInputOptions:function(c){var d,e={};if(this._isSearchInternal()&&a.mobile.textinput){for(d in a.mobile.textinput.prototype.options)c[d]!==b&&(e[d]="theme"===d&&null!=this.options.filterTheme?this.options.filterTheme:c[d]);this._search.textinput("option",e)}}}),a.widget("mobile.listview",a.mobile.listview,{options:{filter:!1},_create:function(){return this.options.filter!==!0||this.element.data("mobile-filterable")||this.element.filterable(),this._super()},refresh:function(){var a;this._superApply(arguments),this.options.filter===!0&&(a=this.element.data("mobile-filterable"),a&&a.refresh())}})}(a),function(a,b){function c(){return++e}function d(a){return a.hash.length>1&&decodeURIComponent(a.href.replace(f,""))===decodeURIComponent(location.href.replace(f,""))}var e=0,f=/#.*$/;a.widget("ui.tabs",{version:"fadf2b312a05040436451c64bbfaf4814bc62c56",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var b=this,c=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",c.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(b){a(this).is(".ui-state-disabled")&&b.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){a(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs(),c.active=this._initialActive(),a.isArray(c.disabled)&&(c.disabled=a.unique(c.disabled.concat(a.map(this.tabs.filter(".ui-state-disabled"),function(a){return b.tabs.index(a)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(c.active):a(),this._refresh(),this.active.length&&this.load(c.active)},_initialActive:function(){var b=this.options.active,c=this.options.collapsible,d=location.hash.substring(1);return null===b&&(d&&this.tabs.each(function(c,e){return a(e).attr("aria-controls")===d?(b=c,!1):void 0}),null===b&&(b=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===b||-1===b)&&(b=this.tabs.length?0:!1)),b!==!1&&(b=this.tabs.index(this.tabs.eq(b)),-1===b&&(b=c?!1:0)),!c&&b===!1&&this.anchors.length&&(b=0),b},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):a()}},_tabKeydown:function(b){var c=a(this.document[0].activeElement).closest("li"),d=this.tabs.index(c),e=!0;if(!this._handlePageNav(b)){switch(b.keyCode){case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:d++;break;case a.ui.keyCode.UP:case a.ui.keyCode.LEFT:e=!1,d--;break;case a.ui.keyCode.END:d=this.anchors.length-1;break;case a.ui.keyCode.HOME:d=0;break;case a.ui.keyCode.SPACE:return b.preventDefault(),clearTimeout(this.activating),void this._activate(d);case a.ui.keyCode.ENTER:return b.preventDefault(),clearTimeout(this.activating),void this._activate(d===this.options.active?!1:d);default:return}b.preventDefault(),clearTimeout(this.activating),d=this._focusNextTab(d,e),b.ctrlKey||(c.attr("aria-selected","false"),this.tabs.eq(d).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",d)},this.delay))}},_panelKeydown:function(b){this._handlePageNav(b)||b.ctrlKey&&b.keyCode===a.ui.keyCode.UP&&(b.preventDefault(),this.active.focus())},_handlePageNav:function(b){return b.altKey&&b.keyCode===a.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):b.altKey&&b.keyCode===a.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(b,c){function d(){return b>e&&(b=0),0>b&&(b=e),b}for(var e=this.tabs.length-1;-1!==a.inArray(d(),this.options.disabled);)b=c?b+1:b-1;return b},_focusNextTab:function(a,b){return a=this._findNextTab(a,b),this.tabs.eq(a).focus(),a},_setOption:function(a,b){return"active"===a?void this._activate(b):"disabled"===a?void this._setupDisabled(b):(this._super(a,b),"collapsible"===a&&(this.element.toggleClass("ui-tabs-collapsible",b),b||this.options.active!==!1||this._activate(0)),"event"===a&&this._setupEvents(b),void("heightStyle"===a&&this._setupHeightStyle(b)))},_tabId:function(a){return a.attr("aria-controls")||"ui-tabs-"+c()},_sanitizeSelector:function(a){return a?a.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var b=this.options,c=this.tablist.children(":has(a[href])");b.disabled=a.map(c.filter(".ui-state-disabled"),function(a){return c.index(a)}),this._processTabs(),b.active!==!1&&this.anchors.length?this.active.length&&!a.contains(this.tablist[0],this.active[0])?this.tabs.length===b.disabled.length?(b.active=!1,this.active=a()):this._activate(this._findNextTab(Math.max(0,b.active-1),!1)):b.active=this.tabs.index(this.active):(b.active=!1,this.active=a()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var b=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return a("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=a(),this.anchors.each(function(c,e){var f,g,h,i=a(e).uniqueId().attr("id"),j=a(e).closest("li"),k=j.attr("aria-controls");d(e)?(f=e.hash,g=b.element.find(b._sanitizeSelector(f))):(h=b._tabId(j),f="#"+h,g=b.element.find(f),g.length||(g=b._createPanel(h),g.insertAfter(b.panels[c-1]||b.tablist)),g.attr("aria-live","polite")),g.length&&(b.panels=b.panels.add(g)),k&&j.data("ui-tabs-aria-controls",k),j.attr({"aria-controls":f.substring(1),"aria-labelledby":i}),g.attr("aria-labelledby",i)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(b){return a("<div>").attr("id",b).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(b){a.isArray(b)&&(b.length?b.length===this.anchors.length&&(b=!0):b=!1);for(var c,d=0;c=this.tabs[d];d++)b===!0||-1!==a.inArray(d,b)?a(c).addClass("ui-state-disabled").attr("aria-disabled","true"):a(c).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=b},_setupEvents:function(b){var c={click:function(a){a.preventDefault()}};b&&a.each(b.split(" "),function(a,b){c[b]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,c),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(b){var c,d=this.element.parent();"fill"===b?(c=d.height(),c-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var b=a(this),d=b.css("position");"absolute"!==d&&"fixed"!==d&&(c-=b.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){c-=a(this).outerHeight(!0)
+}),this.panels.each(function(){a(this).height(Math.max(0,c-a(this).innerHeight()+a(this).height()))}).css("overflow","auto")):"auto"===b&&(c=0,this.panels.each(function(){c=Math.max(c,a(this).height("").height())}).height(c))},_eventHandler:function(b){var c=this.options,d=this.active,e=a(b.currentTarget),f=e.closest("li"),g=f[0]===d[0],h=g&&c.collapsible,i=h?a():this._getPanelForTab(f),j=d.length?this._getPanelForTab(d):a(),k={oldTab:d,oldPanel:j,newTab:h?a():f,newPanel:i};b.preventDefault(),f.hasClass("ui-state-disabled")||f.hasClass("ui-tabs-loading")||this.running||g&&!c.collapsible||this._trigger("beforeActivate",b,k)===!1||(c.active=h?!1:this.tabs.index(f),this.active=g?a():f,this.xhr&&this.xhr.abort(),j.length||i.length||a.error("jQuery UI Tabs: Mismatching fragment identifier."),i.length&&this.load(this.tabs.index(f),b),this._toggle(b,k))},_toggle:function(b,c){function d(){f.running=!1,f._trigger("activate",b,c)}function e(){c.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),g.length&&f.options.show?f._show(g,f.options.show,d):(g.show(),d())}var f=this,g=c.newPanel,h=c.oldPanel;this.running=!0,h.length&&this.options.hide?this._hide(h,this.options.hide,function(){c.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),e()}):(c.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),h.hide(),e()),h.attr({"aria-expanded":"false","aria-hidden":"true"}),c.oldTab.attr("aria-selected","false"),g.length&&h.length?c.oldTab.attr("tabIndex",-1):g.length&&this.tabs.filter(function(){return 0===a(this).attr("tabIndex")}).attr("tabIndex",-1),g.attr({"aria-expanded":"true","aria-hidden":"false"}),c.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(b){var c,d=this._findActive(b);d[0]!==this.active[0]&&(d.length||(d=this.active),c=d.find(".ui-tabs-anchor")[0],this._eventHandler({target:c,currentTarget:c,preventDefault:a.noop}))},_findActive:function(b){return b===!1?a():this.tabs.eq(b)},_getIndex:function(a){return"string"==typeof a&&(a=this.anchors.index(this.anchors.filter("[href$='"+a+"']"))),a},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){a.data(this,"ui-tabs-destroy")?a(this).remove():a(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var b=a(this),c=b.data("ui-tabs-aria-controls");c?b.attr("aria-controls",c).removeData("ui-tabs-aria-controls"):b.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(c){var d=this.options.disabled;d!==!1&&(c===b?d=!1:(c=this._getIndex(c),d=a.isArray(d)?a.map(d,function(a){return a!==c?a:null}):a.map(this.tabs,function(a,b){return b!==c?b:null})),this._setupDisabled(d))},disable:function(c){var d=this.options.disabled;if(d!==!0){if(c===b)d=!0;else{if(c=this._getIndex(c),-1!==a.inArray(c,d))return;d=a.isArray(d)?a.merge([c],d).sort():[c]}this._setupDisabled(d)}},load:function(b,c){b=this._getIndex(b);var e=this,f=this.tabs.eq(b),g=f.find(".ui-tabs-anchor"),h=this._getPanelForTab(f),i={tab:f,panel:h};d(g[0])||(this.xhr=a.ajax(this._ajaxSettings(g,c,i)),this.xhr&&"canceled"!==this.xhr.statusText&&(f.addClass("ui-tabs-loading"),h.attr("aria-busy","true"),this.xhr.success(function(a){setTimeout(function(){h.html(a),e._trigger("load",c,i)},1)}).complete(function(a,b){setTimeout(function(){"abort"===b&&e.panels.stop(!1,!0),f.removeClass("ui-tabs-loading"),h.removeAttr("aria-busy"),a===e.xhr&&delete e.xhr},1)})))},_ajaxSettings:function(b,c,d){var e=this;return{url:b.attr("href"),beforeSend:function(b,f){return e._trigger("beforeLoad",c,a.extend({jqXHR:b,ajaxSettings:f},d))}}},_getPanelForTab:function(b){var c=a(b).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+c))}})}(a),function(){}(a),function(a,b){function c(a){e=a.originalEvent,i=e.accelerationIncludingGravity,f=Math.abs(i.x),g=Math.abs(i.y),h=Math.abs(i.z),!b.orientation&&(f>7||(h>6&&8>g||8>h&&g>6)&&f>5)?d.enabled&&d.disable():d.enabled||d.enable()}a.mobile.iosorientationfixEnabled=!0;var d,e,f,g,h,i,j=navigator.userAgent;return/iPhone|iPad|iPod/.test(navigator.platform)&&/OS [1-5]_[0-9_]* like Mac OS X/i.test(j)&&j.indexOf("AppleWebKit")>-1?(d=a.mobile.zoom,void a.mobile.document.on("mobileinit",function(){a.mobile.iosorientationfixEnabled&&a.mobile.window.bind("orientationchange.iosorientationfix",d.enable).bind("devicemotion.iosorientationfix",c)})):void(a.mobile.iosorientationfixEnabled=!1)}(a,this),function(a,b,d){function e(){f.removeClass("ui-mobile-rendering")}var f=a("html"),g=a.mobile.window;a(b.document).trigger("mobileinit"),a.mobile.gradeA()&&(a.mobile.ajaxBlacklist&&(a.mobile.ajaxEnabled=!1),f.addClass("ui-mobile ui-mobile-rendering"),setTimeout(e,5e3),a.extend(a.mobile,{initializePage:function(){var b=a.mobile.path,f=a(":jqmData(role='page'), :jqmData(role='dialog')"),h=b.stripHash(b.stripQueryParams(b.parseLocation().hash)),i=a.mobile.path.parseLocation(),j=h?c.getElementById(h):d;f.length||(f=a("body").wrapInner("<div data-"+a.mobile.ns+"role='page'></div>").children(0)),f.each(function(){var c=a(this);c[0].getAttribute("data-"+a.mobile.ns+"url")||c.attr("data-"+a.mobile.ns+"url",c.attr("id")||b.convertUrlToDataUrl(i.pathname+i.search))}),a.mobile.firstPage=f.first(),a.mobile.pageContainer=a.mobile.firstPage.parent().addClass("ui-mobile-viewport").pagecontainer(),a.mobile.navreadyDeferred.resolve(),g.trigger("pagecontainercreate"),a.mobile.loading("show"),e(),a.mobile.hashListeningEnabled&&a.mobile.path.isHashValid(location.hash)&&(a(j).is(":jqmData(role='page')")||a.mobile.path.isPath(h)||h===a.mobile.dialogHashKey)?a.event.special.navigate.isPushStateEnabled()?(a.mobile.navigate.history.stack=[],a.mobile.navigate(a.mobile.path.isPath(location.hash)?location.hash:location.href)):g.trigger("hashchange",[!0]):(a.event.special.navigate.isPushStateEnabled()&&a.mobile.navigate.navigator.squash(b.parseLocation().href),a.mobile.changePage(a.mobile.firstPage,{transition:"none",reverse:!0,changeHash:!1,fromHashChange:!0}))}}),a(function(){a.support.inlineSVG(),a.mobile.hideUrlBar&&b.scrollTo(0,1),a.mobile.defaultHomeScroll=a.support.scrollTop&&1!==a.mobile.window.scrollTop()?1:0,a.mobile.autoInitializePage&&a.mobile.initializePage(),a.mobile.hideUrlBar&&g.load(a.mobile.silentScroll),a.support.cssPointerEvents||a.mobile.document.delegate(".ui-state-disabled,.ui-disabled","vclick",function(a){a.preventDefault(),a.stopImmediatePropagation()})}))}(a,this)});
+//# sourceMappingURL=jquery.mobile-1.4.5.min.map
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile-1.4.5.min.map
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile-1.4.5.min.map	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile-1.4.5.min.map	(revision 101)
@@ -0,0 +1,1 @@
+{"version":3,"file":"jquery.mobile-1.4.5.min.js","sources":["jquery.mobile-1.4.5.js"],"names":["root","doc","factory","define","amd","$","mobile","jQuery","this","document","window","undefined","focusable","element","isTabIndexNotNaN","map","mapName","img","nodeName","toLowerCase","parentNode","name","href","visible","test","disabled","expr","filters","parents","addBack","filter","css","length","uuid","runiqueId","ui","extend","version","keyCode","BACKSPACE","COMMA","DELETE","DOWN","END","ENTER","ESCAPE","HOME","LEFT","PAGE_DOWN","PAGE_UP","PERIOD","RIGHT","SPACE","TAB","UP","fn","focus","orig","delay","each","elem","setTimeout","call","apply","arguments","scrollParent","ie","eq","ownerDocument","uniqueId","id","removeUniqueId","removeAttr","data","createPseudo","dataName","i","match","isNaN","attr","tabbable","tabIndex","isTabIndexNaN","outerWidth","jquery","reduce","size","border","margin","side","parseFloat","type","innerWidth","innerHeight","outerHeight","selector","add","prevObject","removeData","key","camelCase","exec","navigator","userAgent","support","selectstart","createElement","disableSelection","bind","event","preventDefault","enableSelection","unbind","zIndex","position","value","parseInt","parent","plugin","module","option","set","proto","prototype","plugins","push","instance","args","allowDisconnected","nodeType","options","compensateToolbars","page","desiredHeight","pageParent","toolbarsAffectingHeight","noPadders","theElement","widgetOptions","toolbar","ns","updatePagePadding","externalHeaders","children","internalHeaders","externalFooters","internalFooters","concat","toArray","index","Math","max","behaviors","silentScroll","ypos","defaultHomeScroll","special","scrollstart","enabled","scrollTo","trigger","x","y","getClosestBaseUrl","ele","url","closest","jqmData","base","path","documentBase","hrefNoHash","dynamicBaseEnabled","isPath","makeUrlAbsolute","removeActiveLinkClass","forceRemoval","activeClickedLink","activePageClass","removeClass","activeBtnClass","getInheritedTheme","el","defaultTheme","c","m","e","ltr","re","className","enhanceable","elements","haveParents","hijackable","ignoreContentEnabled","$element","excluded","count","$newSet","getAttribute","getScreenHeight","height","resetActivePageHeight","pageHeight","pageOuterHeight","loading","loader","_widget","defaultHtml","returnValue","addDependents","newDependents","$elem","dependents","removeWithDependents","enhanceWithin","widgetElements","keepNative","keepNativeSelector","that","nojs","links","degradeInputsWithin","buttonMarkup","find","initSelector","not","jqmEnhanceable","fieldcontain","widgets","constructor","widgetName","getEncodedText","text","html","jqmHijackable","nativeElement","remove","matches","matchesSelector","node","subPageUrlKey","hideUrlBar","focusClass","ajaxEnabled","hashListeningEnabled","linkBindingEnabled","defaultPageTransition","maxTransitionWidth","minScrollBack","defaultDialogTransition","pageLoadErrorMessage","pageLoadErrorMessageTheme","phonegapNavigationEnabled","autoInitializePage","pushStateEnabled","hoverDelay","pageContainer","allowCrossDomainPages","dialogHashKey","slice","Array","_cleanData","cleanData","elems","triggerHandler","widget","fullName","existingConstructor","basePrototype","proxiedPrototype","namespace","split","Widget","_createWidget","_proto","_childConstructors","prop","isFunction","_super","_superApply","__super","__superApply","widgetEventPrefix","widgetFullName","child","childPrototype","bridge","target","input","inputIndex","inputLength","hasOwnProperty","isPlainObject","object","isMethodCall","methodValue","charAt","pushStack","get","error","_init","defaultElement","create","eventNamespace","_getCreateOptions","bindings","hoverable","_on","destroy","style","defaultView","parentWindow","_create","_trigger","_getCreateEventData","noop","_destroy","parts","curOption","shift","pop","_setOptions","_setOption","toggleClass","enable","disable","suppressDisabledCheck","handlers","delegateElement","handler","handlerProxy","hasClass","guid","eventName","delegate","_off","join","undelegate","_delay","_hoverable","mouseenter","currentTarget","addClass","mouseleave","_focusable","focusin","focusout","callback","Event","originalEvent","isDefaultPrevented","show","hide","method","defaultEffect","effect","hasOptions","effectName","duration","isEmptyObject","complete","effects","easing","queue","next","nsNormalizeDict","oldFind","rbrace","jqmDataRE","JSON","parse","err","nsNormalize","closestPageData","$target","result","jqmRemoveData","context","ret","extra","indexOf","replace","rcapitals","replaceFunction","loaderClass","$html","theme","textVisible","fakeFixLoader","activeBtn","first","top","scrollTop","offset","checkLoaderPosition","screenHeight","proxy","resetHtml","msgText","textonly","message","loadSettings","appendTo","pagecontainer","get_fragment","location","fake_onhashchange","str_hashchange","doc_mode","documentMode","supports_onhashchange","setup","start","teardown","stop","poll","hash","history_hash","history_get","last_hash","history_set","timeout_id","self","fn_retval","val","clearTimeout","attachEvent","addEventListener","iframe","iframe_src","src","one","insertAfter","contentWindow","onpropertychange","propertyName","title","iframe_doc","domain","open","write","close","matchMedia","bool","docElem","documentElement","refNode","firstElementChild","firstChild","fakeBody","div","cssText","background","appendChild","q","innerHTML","insertBefore","offsetWidth","removeChild","media","touch","orientation","propExists","v","uc_prop","toUpperCase","substr","props","vendors","fbCSS","inlineSVG","w","svg","createElementNS","createSVGRect","opera","Image","onerror","onload","width","transform3dTest","transforms","t","mqProp","MozTransform","transform","append","getComputedStyle","getPropertyValue","baseTagTest","link","rebase","fauxBase","protocol","host","pathname","fauxEle","prependTo","cssPointerEventsTest","supports","pointerEvents","boundingRect","getBoundingClientRect","fixedPosition","ua","platform","wkmatch","wkversion","ffmatch","ffversion","operammobilematch","omversion","operamini","toString","nokiaLTE7_3","webos","bb","blackberry","browser","oldIE","a","all","pushState","history","search","mediaquery","cssPseudoElement","touchOverflow","cssTransform3d","boxShadow","dynamicBaseTag","cssPointerEvents","gradeA","ajaxBlacklist","WebKitPoint","$win","dummyFnToInitNavigate","beforenavigate","on","off","navigate","bound","originalEventName","isPushStateEnabled","isHashChangeEnabled","popstate","newEvent","beforeNavigate","state","historyState","hashchange","hashchangeState","$base","uiStateKey","urlParseRE","getLocation","parsedUrl","parseUrl","uri","doubleSlash","substring","getDocumentUrl","asParsedObject","documentUrl","parseLocation","hrefNoSearch","authority","username","password","hostname","port","directory","filename","makePathAbsolute","relPath","absPath","absStack","relStack","d","isSameDomain","absUrl1","absUrl2","isRelativeUrl","isAbsoluteUrl","relUrl","absUrl","relObj","absObj","hasPath","addSearchParams","params","u","p","param","s","convertUrlToDataUrl","isEmbeddedPage","decodeURIComponent","newPath","stripHash","clean","stripQueryParams","cleanHash","isHashValid","isExternal","hasProtocol","documentBaseDiffers","squash","resolutionUrl","cleanedUrl","stateIndex","docUrl","preservedHash","uiState","isPreservableHash","hashToSelector","hasHash","getFilePath","isFirstPageUrl","samePath","fp","firstPage","fpId","isPermittedCrossDomainRequest","reqUrl","getDocumentBase","History","stack","activeIndex","getActive","getLast","previousIndex","getNext","getPrev","clearForward","earlyReturn","entry","direct","opts","newActiveIndex","present","back","forward","missing","initialHref","Navigator","ignoreInitialHashChange","popstate.history","hashchange.history","replaceState","parsed","loc","resolved","go","noEvents","popstateEvent","isPopStateEvent","preventNextHashChange","preventHashAssignPopState","ignorePopState","stopImmediatePropagation","historyEntry","direction","animation","transition","testElement","vendorPrefixes","testName","j","prefix","cssTransitions","cssAnimations","animationComplete","fallbackTime","timer","eventBinding","animationType","defaultDuration","getNativeEvent","createVirtualEvent","eventType","oe","ne","ct","len","mouseEventProps","which","touches","changedTouches","touchEventProps","getVirtualBindingFlags","b","k","flags","dataPropertyName","hasVirtualBinding","getClosestElementWithVirtualBinding","enableTouchBindings","blockTouchTriggers","disableTouchBindings","enableMouseBindings","lastTouchID","clickBlockList","blockMouseTriggers","disableMouseBindings","startResetTimer","clearResetTimer","resetTimerID","vmouse","resetTimerDuration","triggerVirtualEvent","ve","mouseEventCallback","touchID","touchTargetPropertyName","isPropagationStopped","stopPropagation","isImmediatePropagationStopped","handleTouchStart","nextTouchID","didScroll","startX","pageX","startY","pageY","handleScroll","handleTouchMove","didCancel","moveThreshold","moveDistanceThreshold","abs","handleTouchEnd","clientX","clientY","hasVirtualBindings","dummyMouseHandler","getSpecialEventObject","realType","activeDocHandlers","$document","eventCaptureSupported","$this","threshold","virtualEventNames","mouseHookProps","mouseHooks","clickDistanceThreshold","o","cnt","triggerCustomEvent","obj","bubble","originalType","dispatch","supportTouch","scrollEvent","touchStartEvent","touchStopEvent","touchMoveEvent","attrFn","scrolling","thisObject","tap","tapholdThreshold","emitTapOnTaphold","isTaphold","clearTapTimer","clearTapHandlers","clickHandler","origTarget","swipe","scrollSupressionThreshold","durationThreshold","horizontalDistanceThreshold","verticalDistanceThreshold","winPageX","pageXOffset","winPageY","pageYOffset","floor","time","Date","getTime","coords","origin","handleSwipe","swipestart","swipestop","eventInProgress","events","emitted","move","scrollstop","taphold","swipeleft","swiperight","sourceEvent","throttledresize","heldCall","curr","diff","throttle","lastCall","get_orientation","last_orientation","win","event_name","initial_orientation_is_landscape","initial_orientation_is_default","ww","wh","landscape_threshold","portrait_map","0","180","-90","90","orientationchange","handleObj","old_handler","isPortrait","clientWidth","clientHeight","baseElement","linkSelector","rewrite","thisAttr","is","theLocation","thisUrl","reset","originalWidget","keepNativeFactoryDefault","domCache","keepNativeDefault","contentTheme","enhanced","_enhance","pagebeforehide","pagebeforeshow","dialog","attrPrefix","role","bindRemove","samePage","prEvent","_handlePageBeforeShow","setContainerBackground","removeContainerBackground","trim","globalValue","optionValue","newDefault","oldDefault","setLastScrollEnabled","pagechange","_disableRecordScroll","_enableRecordScroll","_afterContentChange","_recordScroll","currentScroll","minScroll","defaultScroll","active","_getActiveHistory","_getScroll","_getMinScroll","_getDefaultScroll","lastScroll","_delayedRecordScroll","_filterNavigateEvents","_getHash","_handleNavigate","getActivePage","activePage","_getInitialContent","_getHistory","_getDocumentBase","steps","change","changeHash","fromHashChange","_handleDestination","to","_transitionFromHistory","defaultTransition","_handleDialog","changePageOptions","activeContent","pageUrl","reverse","_changeContent","changePage","_getBase","_getNs","content","_include","settings","_find","fileUrl","_createFileUrl","dataUrl","_createDataUrl","initialContent","_getLoader","_showLoading","msg","_loadMsg","_hideLoading","_showError","_parse","_setLoadedTitle","newPageTitle","RegExp","$1","_isRewritableBaseTag","absoluteUrl","_triggerWithDeprecated","deprecatedEvent","_loadSuccess","triggerData","deferred","textStatus","xhr","pageElemRegex","dataUrlRegex","encodeURIComponent","prefetch","toPage","showLoadMsg","resolve","_loadDefaults","reloadPage","reload","loadMsgDelay","load","pblEvent","Deferred","reloadOptionExtension","_findBaseWithDefault","reject","promise","prevPage","fromPage","ajax","contentType","dataType","success","_loadError","errorThrown","plfEvent","_getTransitionHandler","_maybeDegradeTransition","transitionHandlers","defaultTransitionHandler","_triggerCssTransitionEvents","from","nextPage","_cssTransition","TransitionHandler","done","_releaseTransitionLock","isPageTransitioning","pageTransitionQueue","_removeActiveLinkClass","force","_loadUrl","fail","_triggerPageBeforeChange","returnEvents","unshift","defaults","activeIsInitialPage","historyDir","pageTitle","isDialog","alreadyThere","cssTransitionDeferred","beforeTransition","allowSamePageTransition","activeElement","blur","encodeURI","$to","$from","alreadyFocused","duplicateCachedPage","focusPage","closestBase","navreadyDeferred","findClosestLink","domreadyDeferred","loadDeferred","pageIsFullyLoaded","$lastVClicked","loadPage","container","nav","app","backHistory","autofocus","_registerInternalEvents","getAjaxFormData","$form","calculateOnly","formData","vclickedName","serializeArray","form","$btn","btnEls","needClosest","outer","baseUrl","useDefaultUrlHandling","$link","httpCleanup","urls","inArray","readyState","when","Transition","init","toPreClass","cleanFrom","beforeDoneIn","beforeDoneOut","beforeStartOut","doneIn","toggleViewportClass","toScroll","scrollPage","sequential","doneOut","reverseClass","none","preventFocus","startIn","hideIn","startOut","maxTransitionOverride","getMaxScrollForTransition","SerialTransition","ConcurrentTransition","defaultGetMaxScrollForTransition","simultaneous","transitionFallbacks","flip","flow","slide","slidedown","slidefade","slideup","turn","degradeInputs","color","date","datetime","datetime-local","email","month","number","range","tel","week","hasType","findstr","repstr","optType","clone","replaceWith","closeBtn","closeBtnText","overlayTheme","corners","_inner","_headerCloseButton","_setCloseBtn","wrapInner","class","closeButtonLocation","closeButtonText","currentOpts","dst","btn","_isCloseable","_handlePageBeforeHide","_handleVClickSubmit","attrs","vclick","submit","click","hist","rInitialLetter","iconposClass","iconpos","expandCueText","collapseCueText","collapsed","heading","collapsedIcon","expandedIcon","inset","mini","accordion","collapsibleset","_ui","_renderedOptions","_getOptions","anchor","status","_handleExpandCollapse","accordionWidget","collapsible","_themeClassFromOption","iconclass","contentThemeClass","originalHeading","placeholder","detach","refresh","_applyOptions","isCollapsed","newTheme","oldTheme","hasCorners","hasIcon","isCollapse","expand","collapse","contents","unwrap","noHiddenClass","uiScreenHiddenRegex","addFirstLastClasses","_getVisibles","$els","visibles","_addFirstLastClasses","$visibles","end","last","_removeFirstLastClasses","childCollapsiblesSelector","_handleCollapsibleExpand","closestCollapsible","siblings","_classes","collapsibleexpand","_refresh","themeClass","collapsiblesInSet","grid","iterator","letter","$kids","gridCols","solo","$navbar","$navbtns","icon","classes","getAttr","countTheme","dividerTheme","splitIcon","splitTheme","shadow","listviewClasses","_findFirstElementByTagName","nextProp","lcName","ucName","dict","_addThumbClasses","containers","_getChildrenByTagName","results","nextSibling","_beforeListviewRefresh","_afterListviewRefresh","buttonClass","pos","numli","item","itemClass","itemTheme","itemIcon","isDivider","startCount","newStartCount","splittheme","splitThemeClass","spliticon","altButtonClass","li","$list","ol","itemClassDict","countBubbles","countThemeClass","empty","defaultAutodividersSelector","elt","listview","autodividers","autodividersSelector","_replaceDividers","lis","dividerText","divider","lastDividerText","list","createTextNode","setAttribute","rdivider","rhidden","hideDividers","items","idx","hideDivider","formReset","_handleFormReset","escapeId","wrapperClass","inheritAttr","dataAttr","label","isParent","_findLabel","inputtype","checkedClass","uncheckedClass","labelIsParent","vmouseover","vmousedown","parentLabel","labelsList","labels","contains","getElementsByTagName","wrapAll","_wrapper","wrap","prepend","_handleInputFocus","_handleInputBlur","_handleInputVClick","_getInputSet","_updateAll","_handleLabelVMouseOver","_handleLabelVClick","_cacheVals","checked","formId","radio","radios","changeTriggered","checkboxradio","_reset","_hasIcon","controlgroup","controlgroupWidget","controlgroupConstructor","isChecked","addClasses","removeClasses","currentOptions","iconshadow","inline","wrapper","_button","iconClasses","_getIconClasses","originalElement","isDisabled","meta","disabledZoom","enabledZoom","disabledInitially","zoom","locked","lock","unlock","restore","preventFocusZoom","isSearch","isTextarea","tagName","isRange","inputNeedsWrap","_classesFromOptions","_autoCorrect","setOptions","elementClasses","_wrap","autocorrect","_handleBlur","_handleFocus","trackTheme","highlight","optionsCount","origTabIndex","activeClass","sliderImg","control","trackThemeClass","cornerClass","miniClass","cType","isToggleSwitch","isRangeslider","selectClass","controlID","$label","labelID","min","step","domHandle","handle","domSlider","slider","valuebg","bg","aria-valuemin","aria-valuemax","aria-valuenow","_value","aria-valuetext","aria-labelledby","dragging","beforeStart","userModified","mouseMoved","childNodes","_labels","keyup","vmouseup","_sliderVMouseDown","vmousemove","keydown","_setTheme","_setTrackTheme","_setCorners","_setMini","_setHighlight","_setDisabled","_controlChange","_controlKeyup","_controlBlur","_controlVMouseUp","_checkedRefresh","_handleVMouseDown","_handleKeydown","_keySliding","_handleKeyup","selectedIndex","_sliderVMouseUp","_preventDocumentDrag","isfromControl","preventInputUpdate","left","tol","pxStep","percent","isInput","optionElements","newval","valModStep","alignValue","percentPerStep","handlePercent","aPercent","bPercent","valueChanged","parentTheme","round","toFixed","ab","currentTheme","currentTrackTheme","newTrackTheme","getPopup","popup","popupEnabled","showValue","_currentValue","_popup","_popupVisible","_positionPopup","dstOffset","newValue","_showPopup","_hidePopup","onText","offText","flipswitch","_originalTabIndex","_left","_right","after","existingDirection","_toggle","_keydown","$el","elClass","_inputFirst","_inputLast","_label","_sliderWidgetFirst","_sliderWidgetLast","_sliderFirst","_sliderLast","firstHandle","_sliders","_targetVal","_sliderTarget","_proxy","slidebeforestart","slidestop","slidedrag","slidebeforechange","mousedown","_handleReset","_updateHighlight","_dragFirstHandle","_slidedrag","otherSlider","_slidestop","_slidebeforestart","_change","thisSlider","margin-left","textinput","clearBtn","clearBtnText","_addClearBtn","clearButton","_clearBtnClick","_clearBtn","_enhanceClear","_bindClearEvents","_toggleClear","cut","paste","_unbindClear","_destroyClear","_toggleClearClass","autogrow","keyupTimeoutBuffer","_autogrow","pageshow","popupbeforeposition","updatelayout","panelopen","_handleShow","_prepareHeightUpdate","_unbindAutogrow","keyupTimeout","_updateHeight","_timeout","paddingTop","paddingBottom","paddingHeight","scrollHeight","borderTop","borderBottom","borderHeight","min-height","max-height","hidePlaceholderMenuItems","closeText","nativeMenu","button","_focusButton","_selectOptions","select","_preExtension","selectId","buttonId","isMultiple","multiple","setButtonText","buttonCount","build","selected","selectedIndices","span","setButtonCount","_refreshButton","idref","fitSegmentInsideSegment","windowSize","segmentSize","desired","getWindowCoordinates","theWindow","scrollLeft","cx","cy","positionTo","tolerance","closeLinkSelector","closeLinkEvents","navigateEvents","closeEvents","dismissible","_handleDocumentVmousedown","theEvent","_isOpen","_ignoreResizeEvents","myId","_scrollTop","_page","_fallbackTransition","_currentTransition","_prerequisites","_tolerance","_resizeData","_ignoreResizeTo","_orientationchangeInProgress","screen","prev","getElementById","_applyTransition","_setTolerance","focusElement","resize","fragment","createDocumentFragment","_eatEventAndClose","_resizeScreen","popupHeight","documentHeight","_handleWindowKeyUp","_expectResizeEvent","windowCoordinates","timeoutId","_resizeTimeout","reposition","_stopIgnoringResizeEvents","_handleWindowResize","_handleWindowOrientationchange","_handleDocumentFocusIn","targetElement","_safelyBlur","newOptions","ar","r","l","String","_clampPopupWidth","infoOnly","menuSize","rectangle","rc","_calculateFinalLocation","clampInfo","_placementCoords","_createPrerequisites","screenPrerequisite","containerPrerequisite","whenDone","prerequisites","then","_animate","classToRemove","screenClassToAdd","applyTransition","containerClassToAdd","_desiredCoords","openOptions","pTo","_reposition","currentElement","_openPrerequisitesComplete","firstFocus","_open","androidBlacklist","androidmatch","andversion","chromematch","additionalCondition","_closePrerequisiteScreen","_closePrerequisiteContainer","_closePrerequisitesDone","_close","immediate","_unenhance","_closePopup","parsedDst","toUrl","_myUrl","_bindContainerClose","hashkey","currentIsDialog","urlHistory","urlAltered","handleLink","unfocusableItemSelector","goToAdjacentItem","adjacent","selectmenu","_handleSelectFocus","_handleButtonVclickKeydown","isOpen","_decideFormat","menuType","popupId","dialogId","_handleListFocus","tabindex","_handleListKeydown","_handleMenuPageHide","_delayedTrigger","thisPage","_handleHeaderCloseClick","_handleListItemClick","listItem","oldIndex","newIndex","_triggerChange","menuId","themeAttr","overlayThemeAttr","dividerThemeAttr","menuPage","listbox","header","headerTitle","menuPageContent","menuPageClose","headerClose","_origTabIndex","click li:not(.ui-disabled,.ui-state-disabled,.ui-li-divider)","pagehide","popupafterclose","_popupClosed","_isRebuildRequired","indices","_buildList","_focusMenuItem","$window","selfListParent","menuHeight","btnOffset","popupafteropen","$options","numOptions","optGroup","$option","optLabel","needPlaceholder","dataIcon","dataPrefix","dataIndexAttr","dataIconAttr","dataRoleAttr","dataPlaceholderAttr","isPlaceholderItem","_removePlaceholderAttr","aria-haspopup","aria-owns","optionsToClasses","existingClasses","classNameToOptions","unknownClass","alreadyEnhanced","noIcon","unknownClasses","reverseBoolOptionMap","camelCase2Hyphenated","ui-shadow","ui-corner-all","ui-btn-inline","ui-shadow-icon","ui-mini","getAttrFixed","capitalLettersRE","overwriteClasses","retrievedOptions","optionKey","excludeInvisible","_childWidgets","_initialRefresh","groupLegend","childWrapper","callRefresh","els","buttons","addBackBtn","backBtnTheme","backBtnText","leftbtn","rightbtn","_updateBackButton","_addHeaderButtonClasses","_setRelative","_addHeadingClasses","_btnMarkup","headerAnchors","backButton","_backButton","attached","aria-level","visibleOnPageShow","disablePageZoom","fullscreen","tapToggle","tapToggleBlacklist","hideDuringFocus","trackPersistentToolbars","supportBlacklist","_makeFixed","_addTransitionClass","_bindPageEvents","_bindToggleHandlers","$page","tclass","webkitAnimationStart","animationstart","_handleAnimationStart","_handlePageShow","thisFooter","thisHeader","nextFooter","nextHeader","_visible","tbPage","_useTransition","notransition","scroll","elHeight","pHeight","viewportHeight","hideClass","outclass","toggle","delayShow","delayHide","isVisible","pageClasses","toolbarClasses","hasFixed","hasFullscreen","_workarounds","os","_bindScrollWorkaround","_bindListThumbWorkaround","_viewportOffset","viewportOffset","_triggerRedraw","getArrow","uiTemplate","gd","arEls","ieHack","arrow","_addArrow","_tryAnArrow","dir","best","desiredForArrow","tip","arFull","dimKey","guideDims","fst","arHalf","oDimKey","menuHalf","offsetFactor","contentBox","arrowOffsetFactor","snd","tipOffset","guideOffset","posProp","posVal","_getPlacementState","clamp","gdOffset","right","bottom","elOffset","bgRef","panel","panelOpen","panelClosed","panelFixed","panelInner","modal","modalOpen","pageWrapper","pageFixedToolbar","pageContentPrefix","animate","display","swipeClose","positionFixed","_closeLink","_parentPage","_modal","_panelInner","_fixedToolbars","parentPage","_openedPage","_getPage","_getPanelInner","_getFixedToolbars","_getWrapper","_addPanelClasses","_bindUpdateLayout","_bindCloseEvents","_bindLinkListeners","_createModal","_bindSwipeEvents","extFixedToolbars","intFixedToolbars","fixedToolbars","_getPosDisplayClasses","_getPanelClasses","panelClasses","_handleCloseClick","click a:jqmData(ajax='false')","_positionPanel","scrollToTop","panelInnerHeight","_unfixPanel","_fixPanel","_bindFixListener","_unbindFixListener","click a","_handleClick","panelId","area","_pageContentOpenClasses","_modalOpenClasses","_openPanel","panelclose","_closePanel","otherPanels","multiplePanels","table","headers","allHeaders","_setHeaders","trs","rebuild","columnCount","mode","columnBtnTheme","columnPopupTheme","columnBtnText","columnBtn","priorityPrefix","columnToggleTable","_menu","_id","_addToggles","_enhanceColToggle","_setupEvents","_setToggleState","change input","menu","keep","inputs","checkboxIndex","cells","priority","_menuInputChange","evt","_unlockCells","menuButton","before","hiddenColumns","checkbox","reflowTable","cellLabels","_updateReflow","iteration","colstart","hierarchyClass","_addLabels","defaultFilterCallback","searchValue","filterReveal","filterCallback","_search","_timer","_setInput","_filterItems","_onKeyUp","lastval","_getFilterableItems","filterItems","_refreshChildWidget","recognizedWidgets","keypress","_onKeyDown","_preventKeyPress","_onKeyPress","refilter","replaceSetOptions","_syncTextInputOptions","rDividerListItem","origDefaultFilterCallback","filterable","filterPlaceholder","filterTheme","createHandlers","_setWidget","_handleCreate","_isSearchInternal","updatePlaceholder","textinputOpts","_refreshingChildWidget","textinputOptions","getNextTabId","tabId","isLocal","rhash","heightStyle","activate","beforeActivate","beforeLoad","running","_processTabs","_initialActive","isArray","unique","tabs","sort","anchors","_findActive","locationHash","tab","_getPanelForTab","_tabKeydown","focusedTab","goingForward","_handlePageNav","activating","_activate","_focusNextTab","ctrlKey","_panelKeydown","altKey","_findNextTab","constrain","lastTabIndex","_setupDisabled","_setupHeightStyle","_tabId","_sanitizeSelector","tablist","aria-selected","panels","aria-expanded","aria-hidden","_getList","anchorId","originalAriaControls","_createPanel","aria-controls","maxHeight","_eventHandler","clickedIsActive","collapsing","toShow","toHide","eventData","oldTab","oldPanel","newTab","newPanel","abort","_show","_hide","_getIndex","num","merge","_ajaxSettings","statusText","response","jqXHR","beforeSend","ajaxSettings","checkTilt","aig","accelerationIncludingGravity","z","iosorientationfixEnabled","hideRenderingClass","initializePage","$pages","hashPage"],"mappings":";;CAYC,SAAWA,EAAMC,EAAKC,GACC,kBAAXC,SAAyBA,OAAOC,IAE3CD,QAAU,UAAY,SAAWE,GAEhC,MADAH,GAASG,EAAGL,EAAMC,GACXI,EAAEC,SAIVJ,EAASF,EAAKO,OAAQP,EAAMC,IAE3BO,KAAMC,SAAU,SAAWF,EAAQG,EAAQD,IAC7C,SAAUJ,GACVA,EAAEC,WACAC,GAYH,SAAWF,EAAGM,GAkFd,QAASC,GAAWC,EAASC,GAC5B,GAAIC,GAAKC,EAASC,EACjBC,EAAWL,EAAQK,SAASC,aAC7B,OAAK,SAAWD,GACfH,EAAMF,EAAQO,WACdJ,EAAUD,EAAIM,KACRR,EAAQS,MAASN,GAA0C,QAA/BD,EAAIG,SAASC,eAG/CF,EAAMZ,EAAG,eAAiBW,EAAU,KAAM,KACjCC,GAAOM,EAASN,KAHjB,IAKA,sCAAsCO,KAAMN,IACnDL,EAAQY,SACT,MAAQP,EACPL,EAAQS,MAAQR,EAChBA,IAEDS,EAASV,GAGX,QAASU,GAASV,GACjB,MAAOR,GAAEqB,KAAKC,QAAQJ,QAASV,KAC7BR,EAAGQ,GAAUe,UAAUC,UAAUC,OAAO,WACxC,MAAuC,WAAhCzB,EAAE0B,IAAKvB,KAAM,gBAClBwB,OAzGL,GAAIC,GAAO,EACVC,EAAY,aAGb7B,GAAE8B,GAAK9B,EAAE8B,OAET9B,EAAE+B,OAAQ/B,EAAE8B,IACXE,QAAS,2CAETC,SACCC,UAAW,EACXC,MAAO,IACPC,OAAQ,GACRC,KAAM,GACNC,IAAK,GACLC,MAAO,GACPC,OAAQ,GACRC,KAAM,GACNC,KAAM,GACNC,UAAW,GACXC,QAAS,GACTC,OAAQ,IACRC,MAAO,GACPC,MAAO,GACPC,IAAK,EACLC,GAAI,MAKNjD,EAAEkD,GAAGnB,QACJoB,MAAO,SAAWC,GACjB,MAAO,UAAUC,EAAOH,GACvB,MAAwB,gBAAVG,GACblD,KAAKmD,KAAK,WACT,GAAIC,GAAOpD,IACXqD,YAAW,WACVxD,EAAGuD,GAAOJ,QACLD,GACJA,EAAGO,KAAMF,IAERF,KAEJD,EAAKM,MAAOvD,KAAMwD,aAEjB3D,EAAEkD,GAAGC,OAETS,aAAc,WACb,GAAIA,EAWJ,OATCA,GADI5D,EAAE8B,GAAG+B,IAAM,oBAAsB1C,KAAKhB,KAAKuB,IAAI,cAAiB,WAAaP,KAAKhB,KAAKuB,IAAI,aAChFvB,KAAKoB,UAAUE,OAAO,WACpC,MAAO,4BAA8BN,KAAKnB,EAAE0B,IAAIvB,KAAK,cAAgB,gBAAkBgB,KAAKnB,EAAE0B,IAAIvB,KAAK,YAAYH,EAAE0B,IAAIvB,KAAK,cAAcH,EAAE0B,IAAIvB,KAAK,iBACrJ2D,GAAG,GAES3D,KAAKoB,UAAUE,OAAO,WACpC,MAAO,gBAAkBN,KAAKnB,EAAE0B,IAAIvB,KAAK,YAAYH,EAAE0B,IAAIvB,KAAK,cAAcH,EAAE0B,IAAIvB,KAAK,iBACvF2D,GAAG,GAGA,QAAY3C,KAAMhB,KAAKuB,IAAK,eAAkBkC,EAAajC,OAAS3B,EAAGG,KAAM,GAAI4D,eAAiB3D,GAAawD,GAGvHI,SAAU,WACT,MAAO7D,MAAKmD,KAAK,WACVnD,KAAK8D,KACV9D,KAAK8D,GAAK,YAAcrC,MAK3BsC,eAAgB,WACf,MAAO/D,MAAKmD,KAAK,WACXzB,EAAUV,KAAMhB,KAAK8D,KACzBjE,EAAGG,MAAOgE,WAAY,WAmC1BnE,EAAE+B,OAAQ/B,EAAEqB,KAAM,MACjB+C,KAAMpE,EAAEqB,KAAKgD,aACZrE,EAAEqB,KAAKgD,aAAa,SAAUC,GAC7B,MAAO,UAAUf,GAChB,QAASvD,EAAEoE,KAAMb,EAAMe,MAIzB,SAAUf,EAAMgB,EAAGC,GAClB,QAASxE,EAAEoE,KAAMb,EAAMiB,EAAO,KAGhCjE,UAAW,SAAUC,GACpB,MAAOD,GAAWC,GAAUiE,MAAOzE,EAAE0E,KAAMlE,EAAS,eAGrDmE,SAAU,SAAUnE,GACnB,GAAIoE,GAAW5E,EAAE0E,KAAMlE,EAAS,YAC/BqE,EAAgBJ,MAAOG,EACxB,QAASC,GAAiBD,GAAY,IAAOrE,EAAWC,GAAUqE,MAK9D7E,EAAG,OAAQ8E,WAAY,GAAIC,QAChC/E,EAAEsD,MAAQ,QAAS,UAAY,SAAUiB,EAAGvD,GAU3C,QAASgE,GAAQzB,EAAM0B,EAAMC,EAAQC,GAUpC,MATAnF,GAAEsD,KAAM8B,EAAM,WACbH,GAAQI,WAAYrF,EAAE0B,IAAK6B,EAAM,UAAYpD,QAAY,EACpD+E,IACJD,GAAQI,WAAYrF,EAAE0B,IAAK6B,EAAM,SAAWpD,KAAO,WAAe,GAE9DgF,IACJF,GAAQI,WAAYrF,EAAE0B,IAAK6B,EAAM,SAAWpD,QAAY,KAGnD8E,EAnBR,GAAIG,GAAgB,UAATpE,GAAqB,OAAQ,UAAc,MAAO,UAC5DsE,EAAOtE,EAAKF,cACZsC,GACCmC,WAAYvF,EAAEkD,GAAGqC,WACjBC,YAAaxF,EAAEkD,GAAGsC,YAClBV,WAAY9E,EAAEkD,GAAG4B,WACjBW,YAAazF,EAAEkD,GAAGuC,YAgBpBzF,GAAEkD,GAAI,QAAUlC,GAAS,SAAUiE,GAClC,MAAKA,KAAS3E,EACN8C,EAAM,QAAUpC,GAAOyC,KAAMtD,MAG9BA,KAAKmD,KAAK,WAChBtD,EAAGG,MAAOuB,IAAK4D,EAAMN,EAAQ7E,KAAM8E,GAAS,SAI9CjF,EAAEkD,GAAI,QAAUlC,GAAQ,SAAUiE,EAAME,GACvC,MAAqB,gBAATF,GACJ7B,EAAM,QAAUpC,GAAOyC,KAAMtD,KAAM8E,GAGpC9E,KAAKmD,KAAK,WAChBtD,EAAGG,MAAMuB,IAAK4D,EAAMN,EAAQ7E,KAAM8E,GAAM,EAAME,GAAW,WAOvDnF,EAAEkD,GAAG1B,UACVxB,EAAEkD,GAAG1B,QAAU,SAAUkE,GACxB,MAAOvF,MAAKwF,IAAiB,MAAZD,EAChBvF,KAAKyF,WAAazF,KAAKyF,WAAWnE,OAAQiE,MAMxC1F,EAAG,OAAQoE,KAAM,MAAO,KAAMyB,WAAY,OAAQzB,KAAM,SAC5DpE,EAAEkD,GAAG2C,WAAa,SAAWA,GAC5B,MAAO,UAAUC,GAChB,MAAKnC,WAAUhC,OACPkE,EAAWpC,KAAMtD,KAAMH,EAAE+F,UAAWD,IAEpCD,EAAWpC,KAAMtD,QAGvBH,EAAEkD,GAAG2C,aAQV7F,EAAE8B,GAAG+B,KAAO,cAAcmC,KAAMC,UAAUC,UAAUpF,eAEpDd,EAAEmG,QAAQC,YAAc,iBAAmBhG,GAASiG,cAAe,OACnErG,EAAEkD,GAAGnB,QACJuE,iBAAkB,WACjB,MAAOnG,MAAKoG,MAAQvG,EAAEmG,QAAQC,YAAc,cAAgB,aAC3D,uBAAwB,SAAUI,GACjCA,EAAMC,oBAITC,gBAAiB,WAChB,MAAOvG,MAAKwG,OAAQ,yBAGrBC,OAAQ,SAAUA,GACjB,GAAKA,IAAWtG,EACf,MAAOH,MAAKuB,IAAK,SAAUkF,EAG5B,IAAKzG,KAAKwB,OAET,IADA,GAA2BkF,GAAUC,EAAjCvD,EAAOvD,EAAGG,KAAM,IACZoD,EAAK5B,QAAU4B,EAAM,KAAQnD,GAAW,CAK/C,GADAyG,EAAWtD,EAAK7B,IAAK,aACH,aAAbmF,GAAwC,aAAbA,GAAwC,UAAbA,KAK1DC,EAAQC,SAAUxD,EAAK7B,IAAK,UAAY,KAClC+C,MAAOqC,IAAqB,IAAVA,GACvB,MAAOA,EAGTvD,GAAOA,EAAKyD,SAId,MAAO,MAKThH,EAAE8B,GAAGmF,QACJtB,IAAK,SAAUuB,EAAQC,EAAQC,GAC9B,GAAI7C,GACH8C,EAAQrH,EAAE8B,GAAIoF,GAASI,SACxB,KAAM/C,IAAK6C,GACVC,EAAME,QAAShD,GAAM8C,EAAME,QAAShD,OACpC8C,EAAME,QAAShD,GAAIiD,MAAQL,EAAQC,EAAK7C,MAG1Cd,KAAM,SAAUgE,EAAUzG,EAAM0G,EAAMC,GACrC,GAAIpD,GACH6C,EAAMK,EAASF,QAASvG,EAEzB,IAAMoG,IAIAO,GAAwBF,EAASjH,QAAS,GAAIO,YAA4D,KAA9C0G,EAASjH,QAAS,GAAIO,WAAW6G,UAInG,IAAMrD,EAAI,EAAGA,EAAI6C,EAAIzF,OAAQ4C,IACvBkD,EAASI,QAAST,EAAK7C,GAAK,KAChC6C,EAAK7C,GAAK,GAAIb,MAAO+D,EAASjH,QAASkH,MAMvCxH,GAEJ,SAAWF,EAAGK,GAKb,GAAIyH,GAAqB,SAAUC,EAAMC,GACxC,GAAIC,GAAaF,EAAKf,SACrBkB,KAOAC,EAAY,WACX,GAAIC,GAAapI,EAAGG,MACnBkI,EAAgBrI,EAAEC,OAAOqI,SAAWF,EAAWhE,KAAM,kBACpDgE,EAAWE,QAAS,WACnBzB,SAAUuB,EAAW1D,KAAM,QAAU1E,EAAEC,OAAOsI,GAAK,YACnDC,kBAAqBJ,EAAW1D,KAAM,QAAU1E,EAAEC,OAAOsI,GACxD,0BAA4B,EAGhC,SAAqC,UAA3BF,EAAcxB,UACvBwB,EAAcG,qBAAsB,IAEtCC,EAAkBR,EAAWS,SAAU,2BAA4BjH,OAAQ0G,GAC3EQ,EAAkBZ,EAAKW,SAAU,2BACjCE,EAAkBX,EAAWS,SAAU,2BAA4BjH,OAAQ0G,GAC3EU,EAAkBd,EAAKW,SAAU,0BAmBlC,OAfgC,KAA3BC,EAAgBhH,QAAgB8G,EAAgB9G,OAAS,IAC7DuG,EAA0BA,EAAwBY,OAAQL,EAAgBM,YAK3C,IAA3BF,EAAgBlH,QAAgBiH,EAAgBjH,OAAS,IAC7DuG,EAA0BA,EAAwBY,OAAQF,EAAgBG,YAG3E/I,EAAEsD,KAAM4E,EAAyB,SAAUc,EAAOlC,GACjDkB,GAAiBhI,EAAG8G,GAAQrB,gBAItBwD,KAAKC,IAAK,EAAGlB,GAGrBhI,GAAE+B,OAAQ/B,EAAEC,QAEXI,OAAQL,EAAGK,GACXD,SAAUJ,EAAGI,GAGb6B,QAASjC,EAAE8B,GAAGG,QAGdkH,aAGAC,aAAc,SAAUC,GACC,WAAnBrJ,EAAEsF,KAAM+D,KACZA,EAAOrJ,EAAEC,OAAOqJ,mBAIjBtJ,EAAEwG,MAAM+C,QAAQC,YAAYC,SAAU,EAEtCjG,WAAW,WACVnD,EAAOqJ,SAAU,EAAGL,GACpBrJ,EAAEC,OAAOG,SAASuJ,QAAS,gBAAkBC,EAAG,EAAGC,EAAGR,KACpD,IAEH7F,WAAW,WACVxD,EAAEwG,MAAM+C,QAAQC,YAAYC,SAAU,GACpC,MAGJK,kBAAmB,SAAUC,GAE5B,GAAIC,GAAMhK,EAAG+J,GAAME,QAAS,YAAaC,QAAS,OACjDC,EAAOnK,EAAEC,OAAOmK,KAAKC,aAAaC,UAMnC,OAJMtK,GAAEC,OAAOsK,oBAAuBP,GAAQhK,EAAEC,OAAOmK,KAAKI,OAAQR,KACnEA,EAAMG,GAGAnK,EAAEC,OAAOmK,KAAKK,gBAAiBT,EAAKG,IAE5CO,sBAAuB,SAAUC,IACzB3K,EAAEC,OAAO2K,mBACZ5K,EAAEC,OAAO2K,kBAAkBX,QAAS,IAAMjK,EAAEC,OAAO4K,iBAAkBlJ,SACvEgJ,GAED3K,EAAEC,OAAO2K,kBAAkBE,YAAa9K,EAAEC,OAAO8K,gBAElD/K,EAAEC,OAAO2K,kBAAoB,MAQ9BI,kBAAmB,SAAUC,EAAIC,GAKhC,IAJA,GAGCC,GAAGC,EAHAC,EAAIJ,EAAI,GACXK,EAAM,GACNC,EAAK,kCAEEF,IACPF,EAAIE,EAAEG,WAAa,KACdL,IAAOC,EAAIG,EAAGvF,KAAMmF,MAAWG,EAAMF,EAAG,OAM7CC,EAAIA,EAAEtK,UAIP,OAAOuK,IAAOJ,GAAgB,KAG/BO,YAAa,SAAUC,GACtB,MAAOvL,MAAKwL,YAAaD,EAAU,YAGpCE,WAAY,SAAUF,GACrB,MAAOvL,MAAKwL,YAAaD,EAAU,SAGpCC,YAAa,SAAUD,EAAUhH,GAChC,IAAM1E,EAAEC,OAAO4L,qBACd,MAAOH,EAGR,IAECL,GAAGS,EAAUC,EACbxH,EAAG4G,EAHAa,EAAQN,EAAS/J,OACpBsK,EAAUjM,GAIX,KAAMuE,EAAI,EAAOyH,EAAJzH,EAAWA,IAAM,CAK7B,IAJAuH,EAAWJ,EAAS5H,GAAIS,GACxBwH,GAAW,EACXV,EAAIK,EAAUnH,GAEN8G,GAAI,CAGX,GAFAF,EAAIE,EAAEa,aAAeb,EAAEa,aAAc,QAAUlM,EAAEC,OAAOsI,GAAK7D,GAAS,GAE3D,UAANyG,EAAgB,CACpBY,GAAW,CACX,OAGDV,EAAIA,EAAEtK,WAGDgL,IACLE,EAAUA,EAAQtG,IAAKmG,IAIzB,MAAOG,IAGRE,gBAAiB,WAGhB,MAAO9L,GAAOmF,aAAexF,EAAEC,OAAOI,OAAO+L,UAI9CC,sBAAuB,SAAUD,GAChC,GAAIrE,GAAO/H,EAAG,IAAMA,EAAEC,OAAO4K,iBAC5ByB,EAAavE,EAAKqE,SAClBG,EAAkBxE,EAAKtC,aAAa,EAErC2G,GAAStE,EAAoBC,EACR,gBAAXqE,GAAwBA,EAASpM,EAAEC,OAAOkM,mBAGpDpE,EAAKrG,IAAK,aAAc,IAGnBqG,EAAKqE,SAAWA,GACpBrE,EAAKrG,IAAK,aAAc0K,GAAWG,EAAkBD,KAIvDE,QAAS,WAER,GAAIC,GAAStM,KAAKqM,QAAQE,SAAW1M,EAAGA,EAAEC,OAAOwM,OAAOnF,UAAUqF,aAAcF,SAG/EG,EAAcH,EAAOA,OAAO/I,MAAO+I,EAAQ9I,UAK5C,OAFAxD,MAAKqM,QAAQE,QAAUD,EAEhBG,KAIT5M,EAAE6M,cAAgB,SAAUtJ,EAAMuJ,GACjC,GAAIC,GAAQ/M,EAAGuD,GACdyJ,EAAaD,EAAM7C,QAAS,eAAkBlK,GAE/C+M,GAAM7C,QAAS,aAAclK,EAAGgN,GAAarH,IAAKmH,KAInD9M,EAAEkD,GAAGnB,QACJkL,qBAAsB,WACrBjN,EAAEiN,qBAAsB9M,OAIzB+M,cAAe,WACd,GAAIlE,GACHmE,KACAC,EAAapN,EAAEC,OAAO8H,KAAKT,UAAU+F,qBACrCC,EAAOnN,IAGHH,GAAEC,OAAOsN,MACbvN,EAAEC,OAAOsN,KAAMpN,MAIXH,EAAEC,OAAOuN,OACbxN,EAAEC,OAAOuN,MAAOrN,MAIZH,EAAEC,OAAOwN,qBACbzN,EAAEC,OAAOwN,oBAAqBtN,MAI1BH,EAAEkD,GAAGwK,cACTvN,KAAKwN,KAAM3N,EAAEkD,GAAGwK,aAAaE,cAAeC,IAAKT,GAChDU,iBAAiBJ,eAId1N,EAAEkD,GAAG6K,cACT5N,KAAKwN,KAAM,iCAAkCE,IAAKT,GACjDU,iBAAiBC,eAInB/N,EAAEsD,KAAMtD,EAAEC,OAAO+N,QAAS,SAAUhN,EAAMiN,GAGzC,GAAKA,EAAYL,aAAe,CAG/B,GAAIlC,GAAW1L,EAAEC,OAAOwL,YAAa6B,EAAKK,KAAMM,EAAYL,cAGvDlC,GAAS/J,OAAS,IAItB+J,EAAWA,EAASmC,IAAKT,IAIrB1B,EAAS/J,OAAS,IACtBwL,EAAgBc,EAAY3G,UAAU4G,YAAexC,KAKxD,KAAM1C,IAASmE,GACdA,EAAgBnE,GAASA,IAG1B,OAAO7I,OAGR0M,cAAe,SAAUC,GACxB9M,EAAE6M,cAAe1M,KAAM2M,IAMxBqB,eAAgB,WACf,MAAOnO,GAAG,OAAQoO,KAAMjO,KAAKiO,QAASC,QAIvCP,eAAgB,WACf,MAAO9N,GAAEC,OAAOwL,YAAatL,OAG9BmO,cAAe,WACd,MAAOtO,GAAEC,OAAO2L,WAAYzL,SAI9BH,EAAEiN,qBAAuB,SAAUsB,GAClC,GAAI/N,GAAUR,EAAGuO,IAEf/N,EAAQ0J,QAAS,eAAkBlK,KAAMwO,SAC3ChO,EAAQgO,UAETxO,EAAE6M,cAAgB,SAAU0B,EAAezB,GAC1C,GAAItM,GAAUR,EAAGuO,GAChBvB,EAAaxM,EAAQ0J,QAAS,eAAkBlK,GAEjDQ,GAAQ0J,QAAS,aAAclK,EAAGgN,GAAarH,IAAKmH,KAGrD9M,EAAE2N,KAAKc,QAAU,SAAUpN,EAAM+F,GAChC,MAAOpH,GAAE2N,KAAMtM,EAAM,KAAM,KAAM+F,IAGlCpH,EAAE2N,KAAKe,gBAAkB,SAAUC,EAAMtN,GACxC,MAAOrB,GAAE2N,KAAMtM,EAAM,KAAM,MAAQsN,IAAShN,OAAS,IAGnDzB,EAAQC,MAEZ,SAAWH,GACVA,EAAE+B,OAAQ/B,EAAEC,QAGX+B,QAAS,QAMT4M,cAAe,UAEfC,YAAY,EAGZzB,WAAY,+CAIZvC,gBAAiB,iBAIjBE,eAAgB,gBAIhB+D,WAAY,WAGZC,aAAa,EAGbC,sBAAsB,EAGtBC,oBAAoB,EAGpBC,sBAAuB,OAGvBC,oBAAoB,EAIpBC,cAAe,EAGfC,wBAAyB,MAGzBC,qBAAsB,qBAGtBC,0BAA2B,IAI3BC,2BAA2B,EAG3BC,oBAAoB,EAEpBC,kBAAkB,EAIlB7D,sBAAsB,EAEtB6B,cACCiC,WAAY,KAKbpF,oBAAoB,EAGpBqF,cAAe5P,IAGf6P,uBAAuB,EAEvBC,cAAe,sBAEb5P,EAAQC,MAYZ,SAAWH,EAAGM,GAEd,GAAIsB,GAAO,EACVmO,EAAQC,MAAM1I,UAAUyI,MACxBE,EAAajQ,EAAEkQ,SAChBlQ,GAAEkQ,UAAY,SAAUC,GACvB,IAAM,GAAW5M,GAAPgB,EAAI,EAA8B,OAApBhB,EAAO4M,EAAM5L,IAAaA,IACjD,IACCvE,EAAGuD,GAAO6M,eAAgB,UAEzB,MAAO/E,IAEV4E,EAAYE,IAGbnQ,EAAEqQ,OAAS,SAAUrP,EAAMmJ,EAAM7C,GAChC,GAAIgJ,GAAUC,EAAqBtC,EAAauC,EAG/CC,KACAC,EAAY1P,EAAK2P,MAAO,KAAO,EA2GhC,OAzGA3P,GAAOA,EAAK2P,MAAO,KAAO,GAC1BL,EAAWI,EAAY,IAAM1P,EAEvBsG,IACLA,EAAY6C,EACZA,EAAOnK,EAAE4Q,QAIV5Q,EAAEqB,KAAM,KAAOiP,EAASxP,eAAkB,SAAUyC,GACnD,QAASvD,EAAEoE,KAAMb,EAAM+M,IAGxBtQ,EAAG0Q,GAAc1Q,EAAG0Q,OACpBH,EAAsBvQ,EAAG0Q,GAAa1P,GACtCiN,EAAcjO,EAAG0Q,GAAa1P,GAAS,SAAU6G,EAASrH,GAEzD,MAAML,MAAK0Q,mBAMNlN,UAAUhC,QACdxB,KAAK0Q,cAAehJ,EAASrH,IANtB,GAAIyN,GAAapG,EAASrH,IAUnCR,EAAE+B,OAAQkM,EAAasC,GACtBvO,QAASsF,EAAUtF,QAGnB8O,OAAQ9Q,EAAE+B,UAAYuF,GAGtByJ,wBAGDP,EAAgB,GAAIrG,GAIpBqG,EAAc3I,QAAU7H,EAAEqQ,OAAOtO,UAAYyO,EAAc3I,SAC3D7H,EAAEsD,KAAMgE,EAAW,SAAU0J,EAAMlK,GAClC,MAAM9G,GAAEiR,WAAYnK,QAIpB2J,EAAkBO,GAAS,WAC1B,GAAIE,GAAS,WACX,MAAO/G,GAAK7C,UAAW0J,GAAOtN,MAAOvD,KAAMwD,YAE5CwN,EAAc,SAAUzJ,GACvB,MAAOyC,GAAK7C,UAAW0J,GAAOtN,MAAOvD,KAAMuH,GAE7C,OAAO,YACN,GAECkF,GAFGwE,EAAUjR,KAAK+Q,OAClBG,EAAelR,KAAKgR,WAWrB,OARAhR,MAAK+Q,OAASA,EACd/Q,KAAKgR,YAAcA,EAEnBvE,EAAc9F,EAAMpD,MAAOvD,KAAMwD,WAEjCxD,KAAK+Q,OAASE,EACdjR,KAAKgR,YAAcE,EAEZzE,YAvBR6D,EAAkBO,GAASlK,KA2B7BmH,EAAY3G,UAAYtH,EAAEqQ,OAAOtO,OAAQyO,GAIxCc,kBAAmBf,EAAuBC,EAAcc,mBAAqBtQ,EAAQA,GACnFyP,GACFxC,YAAaA,EACbyC,UAAWA,EACXxC,WAAYlN,EACZuQ,eAAgBjB,IAOZC,GACJvQ,EAAEsD,KAAMiN,EAAoBQ,mBAAoB,SAAUxM,EAAGiN,GAC5D,GAAIC,GAAiBD,EAAMlK,SAI3BtH,GAAEqQ,OAAQoB,EAAef,UAAY,IAAMe,EAAevD,WAAYD,EAAauD,EAAMV,gBAInFP,GAAoBQ,oBAE3B5G,EAAK4G,mBAAmBvJ,KAAMyG,GAG/BjO,EAAEqQ,OAAOqB,OAAQ1Q,EAAMiN,GAEhBA,GAGRjO,EAAEqQ,OAAOtO,OAAS,SAAU4P,GAM3B,IALA,GAGC7L,GACAgB,EAJG8K,EAAQ7B,EAAMtM,KAAME,UAAW,GAClCkO,EAAa,EACbC,EAAcF,EAAMjQ,OAGAmQ,EAAbD,EAA0BA,IACjC,IAAM/L,IAAO8L,GAAOC,GACnB/K,EAAQ8K,EAAOC,GAAc/L,GACxB8L,EAAOC,GAAaE,eAAgBjM,IAASgB,IAAUxG,IAG1DqR,EAAQ7L,GADJ9F,EAAEgS,cAAelL,GACL9G,EAAEgS,cAAeL,EAAQ7L,IACxC9F,EAAEqQ,OAAOtO,UAAY4P,EAAQ7L,GAAOgB,GAEpC9G,EAAEqQ,OAAOtO,UAAY+E,GAGNA,EAKpB,OAAO6K,IAGR3R,EAAEqQ,OAAOqB,OAAS,SAAU1Q,EAAMiR,GACjC,GAAI3B,GAAW2B,EAAO3K,UAAUiK,gBAAkBvQ,CAClDhB,GAAEkD,GAAIlC,GAAS,SAAU6G,GACxB,GAAIqK,GAAkC,gBAAZrK,GACzBH,EAAOqI,EAAMtM,KAAME,UAAW,GAC9BiJ,EAAczM,IAyCf,OAtCA0H,IAAWqK,GAAgBxK,EAAK/F,OAC/B3B,EAAEqQ,OAAOtO,OAAO2B,MAAO,MAAQmE,GAAUiB,OAAOpB,IAChDG,EAGA1H,KAAKmD,KADD4O,EACM,WACT,GAAIC,GACH1K,EAAWzH,EAAEoE,KAAMjE,KAAMmQ,EAC1B,OAAiB,aAAZzI,GACJ+E,EAAcnF,GACP,GAEFA,EAIAzH,EAAEiR,WAAYxJ,EAASI,KAAsC,MAAxBA,EAAQuK,OAAQ,IAG3DD,EAAc1K,EAAUI,GAAUnE,MAAO+D,EAAUC,GAC9CyK,IAAgB1K,GAAY0K,IAAgB7R,GAChDsM,EAAcuF,GAAeA,EAAYpN,OACxC6H,EAAYyF,UAAWF,EAAYG,OACnCH,GACM,GAJR,QAHQnS,EAAEuS,MAAO,mBAAqB1K,EAAU,SAAW7G,EAAO,oBAJ1DhB,EAAEuS,MAAO,0BAA4BvR,EAAO,uDACnB6G,EAAU,MAclC,WACT,GAAIJ,GAAWzH,EAAEoE,KAAMjE,KAAMmQ,EACxB7I,GACJA,EAASN,OAAQU,OAAgB2K,QAEjCxS,EAAEoE,KAAMjE,KAAMmQ,EAAU,GAAI2B,GAAQpK,EAAS1H,SAKzCyM,IAIT5M,EAAE4Q,OAAS,aACX5Q,EAAE4Q,OAAOG,sBAET/Q,EAAE4Q,OAAOtJ,WACR4G,WAAY,SACZoD,kBAAmB,GACnBmB,eAAgB,QAChB5K,SACCzG,UAAU,EAGVsR,OAAQ,MAET7B,cAAe,SAAUhJ,EAASrH,GACjCA,EAAUR,EAAGQ,GAAWL,KAAKsS,gBAAkBtS,MAAQ,GACvDA,KAAKK,QAAUR,EAAGQ,GAClBL,KAAKyB,KAAOA,IACZzB,KAAKwS,eAAiB,IAAMxS,KAAK+N,WAAa/N,KAAKyB,KACnDzB,KAAK0H,QAAU7H,EAAEqQ,OAAOtO,UACvB5B,KAAK0H,QACL1H,KAAKyS,oBACL/K,GAED1H,KAAK0S,SAAW7S,IAChBG,KAAK2S,UAAY9S,IACjBG,KAAKI,UAAYP,IAEZQ,IAAYL,OAChBH,EAAEoE,KAAM5D,EAASL,KAAKoR,eAAgBpR,MACtCA,KAAK4S,KAAK,EAAM5S,KAAKK,SACpBgO,OAAQ,SAAUhI,GACZA,EAAMmL,SAAWnR,GACrBL,KAAK6S,aAIR7S,KAAKC,SAAWJ,EAAGQ,EAAQyS,MAE1BzS,EAAQuD,cAERvD,EAAQJ,UAAYI,GACrBL,KAAKE,OAASL,EAAGG,KAAKC,SAAS,GAAG8S,aAAe/S,KAAKC,SAAS,GAAG+S,eAGnEhT,KAAKiT,UACLjT,KAAKkT,SAAU,SAAU,KAAMlT,KAAKmT,uBACpCnT,KAAKqS,SAENI,kBAAmB5S,EAAEuT,KACrBD,oBAAqBtT,EAAEuT,KACvBH,QAASpT,EAAEuT,KACXf,MAAOxS,EAAEuT,KAETP,QAAS,WACR7S,KAAKqT,WAGLrT,KAAKK,QACHmG,OAAQxG,KAAKwS,gBACb9M,WAAY1F,KAAKoR,gBAGjB1L,WAAY7F,EAAE+F,UAAW5F,KAAKoR,iBAChCpR,KAAKkQ,SACH1J,OAAQxG,KAAKwS,gBACbxO,WAAY,iBACZ2G,YACA3K,KAAKoR,eAAiB,+BAIxBpR,KAAK0S,SAASlM,OAAQxG,KAAKwS,gBAC3BxS,KAAK2S,UAAUhI,YAAa,kBAC5B3K,KAAKI,UAAUuK,YAAa,mBAE7B0I,SAAUxT,EAAEuT,KAEZlD,OAAQ,WACP,MAAOlQ,MAAKK,SAGb2G,OAAQ,SAAUrB,EAAKgB,GACtB,GACC2M,GACAC,EACAnP,EAHGsD,EAAU/B,CAKd,IAA0B,IAArBnC,UAAUhC,OAEd,MAAO3B,GAAEqQ,OAAOtO,UAAY5B,KAAK0H,QAGlC,IAAoB,gBAAR/B,GAKX,GAHA+B,KACA4L,EAAQ3N,EAAI6K,MAAO,KACnB7K,EAAM2N,EAAME,QACPF,EAAM9R,OAAS,CAEnB,IADA+R,EAAY7L,EAAS/B,GAAQ9F,EAAEqQ,OAAOtO,UAAY5B,KAAK0H,QAAS/B,IAC1DvB,EAAI,EAAGA,EAAIkP,EAAM9R,OAAS,EAAG4C,IAClCmP,EAAWD,EAAOlP,IAAQmP,EAAWD,EAAOlP,QAC5CmP,EAAYA,EAAWD,EAAOlP,GAG/B,IADAuB,EAAM2N,EAAMG,MACP9M,IAAUxG,EACd,MAAOoT,GAAW5N,KAAUxF,EAAY,KAAOoT,EAAW5N,EAE3D4N,GAAW5N,GAAQgB,MACb,CACN,GAAKA,IAAUxG,EACd,MAAOH,MAAK0H,QAAS/B,KAAUxF,EAAY,KAAOH,KAAK0H,QAAS/B,EAEjE+B,GAAS/B,GAAQgB,EAMnB,MAFA3G,MAAK0T,YAAahM,GAEX1H,MAER0T,YAAa,SAAUhM,GACtB,GAAI/B,EAEJ,KAAMA,IAAO+B,GACZ1H,KAAK2T,WAAYhO,EAAK+B,EAAS/B,GAGhC,OAAO3F,OAER2T,WAAY,SAAUhO,EAAKgB,GAU1B,MATA3G,MAAK0H,QAAS/B,GAAQgB,EAET,aAARhB,IACJ3F,KAAKkQ,SACH0D,YAAa5T,KAAKoR,eAAiB,cAAezK,GACpD3G,KAAK2S,UAAUhI,YAAa,kBAC5B3K,KAAKI,UAAUuK,YAAa,mBAGtB3K,MAGR6T,OAAQ,WACP,MAAO7T,MAAK0T,aAAczS,UAAU,KAErC6S,QAAS,WACR,MAAO9T,MAAK0T,aAAczS,UAAU,KAGrC2R,IAAK,SAAUmB,EAAuB1T,EAAS2T,GAC9C,GAAIC,GACH3M,EAAWtH,IAG0B,kBAA1B+T,KACXC,EAAW3T,EACXA,EAAU0T,EACVA,GAAwB,GAInBC,GAML3T,EAAU4T,EAAkBpU,EAAGQ,GAC/BL,KAAK0S,SAAW1S,KAAK0S,SAASlN,IAAKnF,KANnC2T,EAAW3T,EACXA,EAAUL,KAAKK,QACf4T,EAAkBjU,KAAKkQ,UAOxBrQ,EAAEsD,KAAM6Q,EAAU,SAAU3N,EAAO6N,GAClC,QAASC,KAIR,MAAMJ,IACFzM,EAASI,QAAQzG,YAAa,IAC/BpB,EAAGG,MAAOoU,SAAU,sBAGK,gBAAZF,GAAuB5M,EAAU4M,GAAYA,GAC3D3Q,MAAO+D,EAAU9D,WANnB,OAUuB,gBAAZ0Q,KACXC,EAAaE,KAAOH,EAAQG,KAC3BH,EAAQG,MAAQF,EAAaE,MAAQxU,EAAEwU,OAGzC,IAAIhQ,GAAQgC,EAAMhC,MAAO,kBACxBiQ,EAAYjQ,EAAM,GAAKiD,EAASkL,eAChCjN,EAAWlB,EAAM,EACbkB,GACJ0O,EAAgBM,SAAUhP,EAAU+O,EAAWH,GAE/C9T,EAAQ+F,KAAMkO,EAAWH,MAK5BK,KAAM,SAAUnU,EAASiU,GACxBA,GAAaA,GAAa,IAAI9D,MAAO,KAAMiE,KAAMzU,KAAKwS,eAAiB,KAAQxS,KAAKwS,eACpFnS,EAAQmG,OAAQ8N,GAAYI,WAAYJ,IAGzCK,OAAQ,SAAUT,EAAShR,GAC1B,QAASiR,KACR,OAA4B,gBAAZD,GAAuB5M,EAAU4M,GAAYA,GAC3D3Q,MAAO+D,EAAU9D,WAEpB,GAAI8D,GAAWtH,IACf,OAAOqD,YAAY8Q,EAAcjR,GAAS,IAG3C0R,WAAY,SAAUvU,GACrBL,KAAK2S,UAAY3S,KAAK2S,UAAUnN,IAAKnF,GACrCL,KAAK4S,IAAKvS,GACTwU,WAAY,SAAUxO,GACrBxG,EAAGwG,EAAMyO,eAAgBC,SAAU,mBAEpCC,WAAY,SAAU3O,GACrBxG,EAAGwG,EAAMyO,eAAgBnK,YAAa,sBAKzCsK,WAAY,SAAU5U,GACrBL,KAAKI,UAAYJ,KAAKI,UAAUoF,IAAKnF,GACrCL,KAAK4S,IAAKvS,GACT6U,QAAS,SAAU7O,GAClBxG,EAAGwG,EAAMyO,eAAgBC,SAAU,mBAEpCI,SAAU,SAAU9O,GACnBxG,EAAGwG,EAAMyO,eAAgBnK,YAAa,sBAKzCuI,SAAU,SAAU/N,EAAMkB,EAAOpC,GAChC,GAAI4M,GAAM5N,EACTmS,EAAWpV,KAAK0H,QAASvC,EAa1B,IAXAlB,EAAOA,MACPoC,EAAQxG,EAAEwV,MAAOhP,GACjBA,EAAMlB,MAASA,IAASnF,KAAKmR,kBAC5BhM,EACAnF,KAAKmR,kBAAoBhM,GAAOxE,cAGjC0F,EAAMmL,OAASxR,KAAKK,QAAS,GAG7B4C,EAAOoD,EAAMiP,cAEZ,IAAMzE,IAAQ5N,GACL4N,IAAQxK,KACfA,EAAOwK,GAAS5N,EAAM4N,GAMzB,OADA7Q,MAAKK,QAAQmJ,QAASnD,EAAOpC,KACnBpE,EAAEiR,WAAYsE,IACvBA,EAAS7R,MAAOvD,KAAKK,QAAQ,IAAMgG,GAAQsC,OAAQ1E,OAAa,GAChEoC,EAAMkP,wBAIT1V,EAAEsD,MAAQqS,KAAM,SAAUC,KAAM,WAAa,SAAUC,EAAQC,GAC9D9V,EAAE4Q,OAAOtJ,UAAW,IAAMuO,GAAW,SAAUrV,EAASqH,EAAS0N,GACxC,gBAAZ1N,KACXA,GAAYkO,OAAQlO,GAErB,IAAImO,GACHC,EAAcpO,EAEbA,KAAY,GAA2B,gBAAZA,GAC1BiO,EACAjO,EAAQkO,QAAUD,EAHnBD,CAIFhO,GAAUA,MACc,gBAAZA,KACXA,GAAYqO,SAAUrO,IAEvBmO,GAAchW,EAAEmW,cAAetO,GAC/BA,EAAQuO,SAAWb,EACd1N,EAAQxE,OACZ7C,EAAQ6C,MAAOwE,EAAQxE,OAEnB2S,GAAchW,EAAEqW,SAAWrW,EAAEqW,QAAQN,OAAQE,GACjDzV,EAASqV,GAAUhO,GACRoO,IAAeJ,GAAUrV,EAASyV,GAC7CzV,EAASyV,GAAcpO,EAAQqO,SAAUrO,EAAQyO,OAAQf,GAEzD/U,EAAQ+V,MAAM,SAAUC,GACvBxW,EAAGG,MAAQ0V,KACNN,GACJA,EAAS9R,KAAMjD,EAAS,IAEzBgW,UAMAtW,GAEJ,SAAWF,EAAGK,EAAQC,GACrB,GAAImW,MACHC,EAAU1W,EAAE2N,KACZgJ,EAAS,+BACTC,EAAY,sBAEb5W,GAAE+B,OAAQ/B,EAAEC,QAIXsI,GAAI,GAIJ2D,aAAc,SAAU1L,EAASsF,GAChC,GAAI1B,EAEJ5D,GAAUA,EAAQuE,OAASvE,EAAQ,GAAKA,EAEnCA,GAAWA,EAAQ0L,eACvB9H,EAAO5D,EAAQ0L,aAAc,QAAUlM,EAAEC,OAAOsI,GAAKzC,GAKtD,KACC1B,EAAgB,SAATA,GAAkB,EACf,UAATA,GAAmB,EACV,SAATA,EAAkB,MAEjBA,EAAO,KAAOA,GAAQA,EACvBuS,EAAOxV,KAAMiD,GAASyS,KAAKC,MAAO1S,GAClCA,EACA,MAAO2S,IAET,MAAO3S,IAIRqS,gBAAiBA,EAKjBO,YAAa,SAAUhG,GACtB,MAAOyF,GAAiBzF,KACrByF,EAAiBzF,GAAShR,EAAE+F,UAAW/F,EAAEC,OAAOsI,GAAKyI,KAQzDiG,gBAAiB,SAAUC,GAC1B,MAAOA,GACLjN,QAAS,kDACT7F,KAAM,kBAOVpE,EAAEkD,GAAGgH,QAAU,SAAU8G,EAAMlK,GAC9B,GAAIqQ,EAcJ,OAbqB,mBAATnG,KACNA,IACJA,EAAOhR,EAAEC,OAAO+W,YAAahG,IAM7BmG,EADIxT,UAAUhC,OAAS,GAAKmF,IAAUxG,EAC7BH,KAAKiE,KAAM4M,GAEX7Q,KAAKiE,KAAM4M,EAAMlK,IAGrBqQ,GAGRnX,EAAEkK,QAAU,SAAU3G,EAAMyN,EAAMlK,GACjC,GAAIqQ,EAIJ,OAHqB,mBAATnG,KACXmG,EAASnX,EAAEoE,KAAMb,EAAMyN,EAAOhR,EAAEC,OAAO+W,YAAahG,GAASA,EAAMlK,IAE7DqQ,GAGRnX,EAAEkD,GAAGkU,cAAgB,SAAUpG,GAC9B,MAAO7Q,MAAK0F,WAAY7F,EAAEC,OAAO+W,YAAahG,KAG/ChR,EAAEoX,cAAgB,SAAU7T,EAAMyN,GACjC,MAAOhR,GAAE6F,WAAYtC,EAAMvD,EAAEC,OAAO+W,YAAahG,KAGlDhR,EAAE2N,KAAO,SAAUjI,EAAU2R,EAASC,EAAKC,GAK1C,MAJK7R,GAAS8R,QAAS,YAAe,KACrC9R,EAAWA,EAAS+R,QAASb,EAAW,UAAa5W,EAAEC,OAAOsI,IAAM,IAAO,QAGrEmO,EAAQjT,KAAMtD,KAAMuF,EAAU2R,EAASC,EAAKC,IAGpDvX,EAAE+B,OAAQ/B,EAAE2N,KAAM+I,IAEfxW,EAAQC,MAEZ,SAAWH,GAEX,GAAI0X,GAAY,SACfC,EAAkB,SAAUxM,GAC3B,MAAO,IAAMA,EAAErK,cAGjBd,GAAE+B,OAAQ/B,EAAE4Q,OAAOtJ,WAClBsL,kBAAmB,WAClB,GAAIzL,GAAQL,EACXvD,EAAOpD,KAAKK,QAAS,GACrBqH,IAGD,KAAM7H,EAAEC,OAAOiM,aAAc3I,EAAM,YAClC,IAAM4D,IAAUhH,MAAK0H,QACpBf,EAAQ9G,EAAEC,OAAOiM,aAAc3I,EAAM4D,EAAOsQ,QAASC,EAAWC,IAElD,MAAT7Q,IACJe,EAASV,GAAWL,EAKvB,OAAOe,MAKT7H,EAAEC,OAAOoQ,OAASrQ,EAAE4Q,QAEhB1Q,GAGJ,SAAWF,GAEV,GAAI4X,GAAc,YAAaC,EAAQ7X,EAAG,OAE1CA,GAAEqQ,OAAQ,iBAGTxI,SAECiQ,MAAO,IAGPC,aAAa,EAGb1J,KAAM,GAGND,KAAM,WAGPzB,YAAa,eAAiBiL,EAAc,yDAM5CI,cAAe,WACd,GAAIC,GAAYjY,EAAG,IAAMA,EAAEC,OAAO8K,gBAAiBmN,OAEnD/X,MAAKK,QACHkB,KACAyW,IAAKnY,EAAEmG,QAAQiS,WAAajY,KAAKE,OAAO+X,YAAcjY,KAAKE,OAAO+L,SAAW,GAC5E6L,EAAUtW,QAAUsW,EAAUI,SAASF,KAAO,OAMlDG,oBAAqB,WACpB,GAAID,GAASlY,KAAKK,QAAQ6X,SACzBD,EAAYjY,KAAKE,OAAO+X,YACxBG,EAAevY,EAAEC,OAAOkM,mBAEpBkM,EAAOF,IAAMC,GAAeC,EAAOF,IAAMC,EAAcG,KAC3DpY,KAAKK,QAAQ0U,SAAU,qBACvB/U,KAAK6X,gBACL7X,KAAKE,OACHsG,OAAQ,SAAUxG,KAAKmY,qBACvB/R,KAAM,SAAUvG,EAAEwY,MAAOrY,KAAK6X,cAAe7X,SAIjDsY,UAAW,WACVtY,KAAKK,QAAQ6N,KAAMrO,EAAGG,KAAKwM,aAAc0B,SAO1CsH,KAAM,SAAUmC,EAAOY,EAASC,GAC/B,GAAIZ,GAAaa,EAASC,CAE1B1Y,MAAKsY,YAIoB,WAApBzY,EAAEsF,KAAMwS,IACZe,EAAe7Y,EAAE+B,UAAY5B,KAAK0H,QAASiQ,GAE3CA,EAAQe,EAAaf,QAErBe,EAAe1Y,KAAK0H,QAKpBiQ,EAAQA,GAASe,EAAaf,OAK/Bc,EAAUF,IAAaG,EAAazK,QAAS,EAAQ,GAAKyK,EAAazK,MAGvEyJ,EAAM3C,SAAU,cAEhB6C,EAAcc,EAAad,YAK3B5X,KAAKK,QAAQkE,KAAK,QAASkT,EAC1B,0BAA4BE,EAC5B,eAAkBC,GAAeW,GAAWZ,EAAM1J,KAAO,UAAY,YACnEyK,EAAaF,UAAYA,EAAW,sBAAwB,KAM1DE,EAAaxK,KACjBlO,KAAKK,QAAQ6N,KAAMwK,EAAaxK,MAEhClO,KAAKK,QAAQmN,KAAM,MAAOS,KAAMwK,GAMjCzY,KAAKK,QAAQsY,SACZ9Y,EADsBA,EAAEC,OAAO8Y,cAC5B,wBAA+B,SAGnC5Y,KAAKmY,sBAGLnY,KAAKE,OAAOkG,KAAM,SAAUvG,EAAEwY,MAAOrY,KAAKmY,oBAAqBnY,QAGhEyV,KAAM,WACLiC,EAAM/M,YAAa,cAEd3K,KAAK0H,QAAQuG,MACjBjO,KAAKK,QAAQsK,YAAa,qBAG3B3K,KAAKE,OAAOsG,OAAQ,SAAUxG,KAAK6X,eACnC7X,KAAKE,OAAOsG,OAAQ,SAAUxG,KAAKmY,yBAInCpY,EAAQC,MA0FX,SAAUH,EAAEK,EAAOC,GACjB,WAkBA,SAAS0Y,GAAchP,GAErB,MADAA,GAAMA,GAAOiP,SAAShY,KACf,IAAM+I,EAAIyN,QAAS,gBAAiB,MAjB7C,GAIEyB,GAJEC,EAAiB,aAGnBvZ,EAAMQ,EAENmJ,EAAUvJ,EAAEwG,MAAM+C,QAKlB6P,EAAWxZ,EAAIyZ,aACfC,EAAwB,KAAOH,IAAkB9Y,KAAY+Y,IAAa9Y,GAAa8Y,EAAW,EAmCpGpZ,GAAEkD,GAAIiW,GAAmB,SAAUjW,GACjC,MAAOA,GAAK/C,KAAKoG,KAAM4S,EAAgBjW,GAAO/C,KAAKwJ,QAASwP,IAsC9DnZ,EAAEkD,GAAIiW,GAAiB9V,MAAQ,GAmD/BkG,EAAS4P,GAAmBnZ,EAAE+B,OAAQwH,EAAS4P,IAG7CI,MAAO,WAEL,MAAKD,IAAiC,MAKtCtZ,GAAGkZ,EAAkBM,QAIvBC,SAAU,WAER,MAAKH,IAAiC,MAGtCtZ,GAAGkZ,EAAkBQ,SASzBR,EAAoB,WAyBlB,QAASS,KACP,GAAIC,GAAOZ,IACTa,EAAeC,EAAaC,EAEzBH,KAASG,GACZC,EAAaD,EAAYH,EAAMC,GAE/B7Z,EAAEK,GAAQsJ,QAASwP,IAETU,IAAiBE,IAC3Bd,SAAShY,KAAOgY,SAAShY,KAAKwW,QAAS,MAAO,IAAOoC,GAGvDI,EAAazW,WAAYmW,EAAM3Z,EAAEkD,GAAIiW,GAAiB9V,OArCxD,GACE4W,GADEC,KAIFH,EAAYf,IAEZmB,EAAY,SAASC,GAAM,MAAOA,IAClCJ,EAAcG,EACdL,EAAcK,CA0HhB,OAvHAD,GAAKV,MAAQ,WACXS,GAAcN,KAIhBO,EAAKR,KAAO,WACVO,GAAcI,aAAcJ,GAC5BA,EAAa3Z,GAyBfD,EAAOia,cAAgBja,EAAOka,mBAAqBjB,GAAyB,WAI1E,GAAIkB,GACFC,CAIFP,GAAKV,MAAQ,WACLgB,IACJC,EAAaza,EAAEkD,GAAIiW,GAAiBuB,IACpCD,EAAaA,GAAcA,EAAazB,IAIxCwB,EAASxa,EAAE,yCAAyC4V,OAIjD+E,IAAK,OAAQ,WACZF,GAAcT,EAAahB,KAC3BW,MAIDjV,KAAM,MAAO+V,GAAc,gBAI3BG,YAAa,QAAS,GAAGC,cAM5Bjb,EAAIkb,iBAAmB,WACrB,IAC8B,UAAvBtU,MAAMuU,eACTP,EAAOpa,SAAS4a,MAAQpb,EAAIob,OAE9B,MAAM3P,QASd6O,EAAKR,KAAOS,EAGZL,EAAc,WACZ,MAAOd,GAAcwB,EAAOvB,SAAShY,OAMvC+Y,EAAc,SAAUJ,EAAMC,GAC5B,GAAIoB,GAAaT,EAAOpa,SACtB8a,EAASlb,EAAEkD,GAAIiW,GAAiB+B,MAE7BtB,KAASC,IAEZoB,EAAWD,MAAQpb,EAAIob,MAIvBC,EAAWE,OAGXD,GAAUD,EAAWG,MAAO,4BAAiCF,EAAS,cAEtED,EAAWI,QAGXb,EAAOvB,SAASW,KAAOA,OAStBM,MAGRha,EAAOC,MAGV,SAAWH,GAGVK,EAAOib,WAAajb,EAAOib,YAAe,SAAU1b,GAEnD,GAAI2b,GACHC,EAAU5b,EAAI6b,gBACdC,EAAUF,EAAQG,mBAAqBH,EAAQI,WAE/CC,EAAWjc,EAAIyG,cAAe,QAC9ByV,EAAMlc,EAAIyG,cAAe,MAO1B,OALAyV,GAAI7X,GAAK,YACT6X,EAAI7I,MAAM8I,QAAU,+BACpBF,EAAS5I,MAAM+I,WAAa,OAC5BH,EAASI,YAAYH,GAEd,SAASI,GAQf,MANAJ,GAAIK,UAAY,sBAAyBD,EAAI,yCAE7CV,EAAQY,aAAcP,EAAUH,GAChCH,EAA2B,KAApBO,EAAIO,YACXb,EAAQc,YAAaT,IAGpBpN,QAAS8M,EACTgB,MAAOL,KAKP9b,GAGHJ,EAAEC,OAAOsc,MAAQ,SAAUL,GAC1B,MAAO7b,GAAOib,WAAYY,GAAIzN,UAG7BvO,GAED,SAAUF,GACV,GAAImG,IACHqW,MAAO,cAAgBpc,GAGxBJ,GAAEC,OAAOkG,QAAUnG,EAAEC,OAAOkG,YAC5BnG,EAAE+B,OAAQ/B,EAAEmG,QAASA,GACrBnG,EAAE+B,OAAQ/B,EAAEC,OAAOkG,QAASA,IAC1BjG,GAEF,SAAUF,GACVA,EAAE+B,OAAQ/B,EAAEmG,SACXsW,YAAa,eAAiBpc,IAAU,uBAAyBA,MAEhEH,GAEJ,SAAWF,EAAGM,GAGd,QAASoc,GAAY1L,GACpB,GAEC2L,GAFGC,EAAU5L,EAAKoB,OAAQ,GAAIyK,cAAgB7L,EAAK8L,OAAQ,GAC3DC,GAAU/L,EAAO,IAAMgM,EAAQpI,KAAMgI,EAAU,KAAQA,GAAUjM,MAAO,IAGzE,KAAMgM,IAAKI,GACV,GAAKE,EAAOF,EAAOJ,MAAUrc,EAC5B,OAAO,EAcV,QAAS4c,KAER,GAAIC,GAAI9c,EACP+c,KAAQD,EAAE/c,SAASid,kBAAqBF,EAAE/c,SAASid,gBAAiB,6BAA8B,OAAQC,eAAoBH,EAAEI,OAAqD,KAA5CtX,UAAUC,UAAUsR,QAAS,WACtKrR,EAAU,SAAU/B,GACXA,GAAQgZ,GACfpd,EAAG,QAASkV,SAAU,aAGxBtU,EAAM,GAAIuc,GAAEK,KAEb5c,GAAI6c,QAAU,WACbtX,GAAS,IAEVvF,EAAI8c,OAAS,WACZvX,EAAuB,IAAdvF,EAAI+c,OAA8B,IAAf/c,EAAIwL,SAEjCxL,EAAI8Z,IAAM,yEAGX,QAASkD,KACR,GAGC3S,GAAI4S,EAAYC,EAHbC,EAAS,eAEZzG,EAAMtX,EAAEC,OAAOsc,MAAO,KAAOS,EAAQpI,KAAM,IAAMmJ,EAAS,QAAW,IAAMA,EAAS,MAAQA,EAAS,IAGtG,IAAKzG,EACJ,QAASA,CAGVrM,GAAK7K,EAASiG,cAAe,OAC7BwX,GAECG,aAAgB,iBAChBC,UAAa,aAGdpC,EAASqC,OAAQjT,EAEjB,KAAM6S,IAAKD,GACL5S,EAAGgI,MAAO6K,KAAQxd,IACtB2K,EAAGgI,MAAO6K,GAAM,iCAChBxG,EAAMjX,EAAO8d,iBAAkBlT,GAAKmT,iBAAkBP,EAAYC,IAGpE,SAAWxG,GAAe,SAARA,EAInB,QAAS+G,KACR,GAICC,GAAMC,EAJHC,EAAWvF,SAASwF,SAAW,KAAOxF,SAASyF,KAAOzF,SAAS0F,SAAW,UAC7ExU,EAAOnK,EAAG,aACV4e,EAAU,KACV3d,EAAO,EAgBR,OAbMkJ,GAAKxI,OAGVV,EAAOkJ,EAAKzF,KAAM,QAFlByF,EAAOyU,EAAU5e,EAAG,UAAYiB,KAAQud,IAAY1F,SAAU,QAK/DwF,EAAOte,EAAG,wBAAyB6e,UAAWhD,GAC9C0C,EAASD,EAAM,GAAIrd,KACnBkJ,EAAM,GAAIlJ,KAAOA,GAAQgY,SAAS0F,SAE7BC,GACJA,EAAQpQ,SAE6B,IAA/B+P,EAAO/G,QAASgH,GAIxB,QAASM,KACR,GAGCC,GAHGve,EAAUJ,EAASiG,cAAe,KACrCoV,EAAkBrb,EAASqb,gBAC3B0C,EAAmB9d,EAAO8d,gBAG3B,OAAQ,iBAAmB3d,GAAQyS,OAInCzS,EAAQyS,MAAM+L,cAAgB,OAC9Bxe,EAAQyS,MAAM+L,cAAgB,IAC9BvD,EAAgBQ,YAAazb,GAC7Bue,EAAWZ,GACuC,SAAlDA,EAAkB3d,EAAS,IAAKwe,cAChCvD,EAAgBa,YAAa9b,KACpBue,IATD,EAYT,QAASE,KACR,GAAInD,GAAM1b,EAASiG,cAAe,MAClC,OAA4C,mBAA9ByV,GAAIoD,sBAkBnB,QAASC,KACR,GAAIhC,GAAI9c,EACP+e,EAAKnZ,UAAUC,UACfmZ,EAAWpZ,UAAUoZ,SAErBC,EAAUF,EAAG5a,MAAO,yBACpB+a,IAAcD,GAAWA,EAAS,GAClCE,EAAUJ,EAAG5a,MAAO,oBACpBib,IAAcD,GAAWA,EAAS,GAClCE,EAAoBN,EAAG5a,MAAO,wBAC9Bmb,IAAcD,GAAqBA,EAAmB,EAEvD,QAEKL,EAAS7H,QAAS,UAAa,IAAM6H,EAAS7H,QAAS,QAAW,IAAO6H,EAAS7H,QAAS,QAAW,KAAQ+H,GAAyB,IAAZA,GAE7HpC,EAAEyC,WAAmD,0BAAjCC,SAASpc,KAAM0Z,EAAEyC,YACrCF,GAAiC,KAAZC,GAErBP,EAAG5H,QAAS,WAAc,IAAM+H,GAAyB,IAAZA,GAE7CE,GAAyB,EAAZA,GAEb,mBAAqBpf,IAAUkf,GAAyB,IAAZA,GAE5CH,EAAG5H,QAAS,SAAY,IAAM4H,EAAG5H,QAAS,sBAAyB,IAC9D,GAGD,EAtJR,GAMCsI,GANGjE,EAAW7b,EAAG,UAAW6e,UAAW,QACvC5B,EAAQpB,EAAU,GAAI5I,MACtB+J,GAAY,SAAU,MAAO,KAC7B+C,EAAQ,mBAAqB1f,GAC7Buf,EAAYvf,EAAOuf,WAAwD,0BAAtCC,SAASpc,KAAMpD,EAAOuf,WAC3DI,EAAK3f,EAAO4f,aAAevD,EAAY,oBAuGxC1c,GAAE+B,OAAQ/B,EAAEC,QAAUigB,aACtBlgB,EAAEC,OAAOigB,QAAQC,MAAQ,WACxB,GAAIxD,GAAI,EACPb,EAAM1b,EAASiG,cAAe,OAC9B+Z,EAAItE,EAAIuE,OAET,GACCvE,GAAIK,UAAY,oBAAuBQ,EAAM,2BACrCyD,EAAE,GAEX,OAAOzD,GAAI,EAAIA,GAAKA,KAmCrB3c,EAAE+B,OAAQ/B,EAAEmG,SAKXma,UAAW,aAAeC,UACzB,gBAAkBA,YAEflgB,EAAO4F,UAAUC,UAAUsR,QAAS,YAAe,GAAKnX,EAAO8X,MAAQ9X,IACzB,KAA/CA,EAAO4F,UAAUC,UAAUsa,OAAO,SAErCC,WAAYzgB,EAAEC,OAAOsc,MAAO,YAC5BmE,mBAAoBhE,EAAY,WAChCiE,gBAAiBjE,EAAY,qBAC7BkE,eAAgBhD,IAChBiD,YAAanE,EAAY,eAAkBsD,EAC3Cb,cAAeA,IACf/G,WAAY,eAAiB/X,IAC5B,aAAeD,GAASqb,iBACxB,aAAeI,GAAU,MAASkE,IAAUH,EAE7CkB,eAAgBzC,IAChB0C,iBAAkBjC,IAClBG,aAAcA,IACd/B,UAAWA,IAGZrB,EAASrN,SAMTsR,EAAc,WAEb,GAAIV,GAAK/e,EAAO4F,UAAUC,SAG1B,OAAOkZ,GAAG5H,QAAS,SAAY,KAC3B4H,EAAG5H,QAAS,aAAgB,IAAM4H,EAAG5H,QAAS,cAAiB,KACjE4H,EAAG5H,QAAS,eAAkB,IAC9B4H,EAAG5a,MAAO,yCAMbxE,EAAEC,OAAO+gB,OAAS,WACjB,OAAWhhB,EAAEmG,QAAQsa,YAAczgB,EAAEmG,QAAQua,kBAAsB1gB,EAAEC,OAAOigB,QAAQC,OAASngB,EAAEC,OAAOigB,QAAQC,OAAS,KAASngB,EAAEmG,QAAQ8Y,cAA4D,OAA5Cjf,EAAEkD,GAAG6B,OAAOP,MAAM,wBAG7KxE,EAAEC,OAAOghB,cAEN5gB,EAAO4f,aAAe5f,EAAO6gB,aAE7BtB,GAEAE,EAKEA,GACJ9f,EAAE,WACDA,EAAG,+BAAgC0E,KAAM,MAAO,wBAAyBA,KAAM,MAAO,gBAKlF1E,EAAEmG,QAAQ0a,WACf7gB,EAAG,QAASkV,SAAU,mBAGnBhV,GAGJ,SAAWF,EAAGM,GACb,GAA4B4Z,GAAxBiH,EAAOnhB,EAAEC,OAAOI,OACnB+gB,EAAwB,YAGzBphB,GAAEwG,MAAM+C,QAAQ8X,gBACf9H,MAAO,WACN4H,EAAKG,GAAI,WAAYF,IAGtB3H,SAAU,WACT0H,EAAKI,IAAK,WAAYH,KAIxBphB,EAAEwG,MAAM+C,QAAQiY,SAAWtH,GAC1BuH,OAAO,EAEP/R,kBAAkB,EAElBgS,kBAAmBphB,EAInBqhB,mBAAoB,WACnB,MAAO3hB,GAAEmG,QAAQma,WAChBtgB,EAAEC,OAAOyP,oBAAqB,GAC9BvP,KAAKyhB,uBAIPA,oBAAqB,WACpB,MAAO5hB,GAAEC,OAAO+O,wBAAyB,GAI1C6S,SAAU,SAAUrb,GACnB,GAAIsb,GAAW,GAAI9hB,GAAEwV,MAAO,YAC3BuM,EAAiB,GAAI/hB,GAAEwV,MAAO,kBAC9BwM,EAAQxb,EAAMiP,cAAcuM,SAE7BD,GAAetM,cAAgBjP,EAC/B2a,EAAKxX,QAASoY,GAETA,EAAerM,uBAIflP,EAAMyb,cACVjiB,EAAE+B,OAAOigB,EAAOxb,EAAMyb,cAKvBH,EAASrM,cAAgBjP,EAMzBhD,WAAW,WACV2d,EAAKxX,QAASmY,GACbE,MAAOA,KAEN,KAGJE,WAAY,SAAU1b,GACrB,GAAIsb,GAAW,GAAI9hB,GAAEwV,MAAO,YAC3BuM,EAAiB,GAAI/hB,GAAEwV,MAAO,iBAE/BuM,GAAetM,cAAgBjP,EAC/B2a,EAAKxX,QAASoY,GAETA,EAAerM,uBAMpBoM,EAASrM,cAAgBjP,EAIzB2a,EAAKxX,QAASmY,GAMbE,MAAOxb,EAAM2b,wBAOf5I,MAAO,WACDW,EAAKuH,QAIVvH,EAAKuH,OAAQ,EAERvH,EAAKyH,sBACTzH,EAAKwH,kBAAoB,WACzBP,EAAK5a,KAAM,oBAAqB2T,EAAK2H,WAC1B3H,EAAK0H,wBAChB1H,EAAKwH,kBAAoB,aACzBP,EAAK5a,KAAM,sBAAuB2T,EAAKgI,iBAIvChiB,GAIJ,SAAWF,EAAGM,GACZ,GAAI8J,GAAMgY,EAAOtS,EAAgB,kBAEjC9P,GAAEC,OAAOmK,KAAOA,GACfiY,WAAY,YA2BZC,WAAY,sLAKZC,YAAa,SAAUvY,GACtB,GAAIwY,GAAYriB,KAAKsiB,SAAUzY,GAAOiP,SAAShY,MAC9CyhB,EAAM1Y,EAAMwY,EAAYvJ,SAMxBW,EAAO4I,EAAU5I,IAKlB,OAFAA,GAAgB,MAATA,EAAe,GAAKA,EAEpB8I,EAAIjE,SACV+D,EAAUG,YACVD,EAAIhE,MAMiB,KAAjBgE,EAAIjE,UAAsD,MAAnCiE,EAAI/D,SAASiE,UAAW,EAAG,GACrD,IAAM,IACPF,EAAI/D,SACJ+D,EAAIlC,OACJ5G,GAIFiJ,eAAgB,SAAUC,GACzB,MAAOA,GAAiB9iB,EAAE+B,UAAYqI,EAAK2Y,aAAgB3Y,EAAK2Y,YAAY9hB,MAG7E+hB,cAAe,WACd,MAAO7iB,MAAKsiB,SAAUtiB,KAAKoiB,gBAK5BE,SAAU,SAAUzY,GAGnB,GAAuB,WAAlBhK,EAAEsF,KAAM0E,GACZ,MAAOA,EAGR,IAAIyE,GAAUrE,EAAKkY,WAAWtc,KAAMgE,GAAO,OAM1C,QACC/I,KAAcwN,EAAU,IAAO,GAC/BnE,WAAcmE,EAAU,IAAO,GAC/BwU,aAAcxU,EAAU,IAAO,GAC/ByM,OAAczM,EAAU,IAAO,GAC/BgQ,SAAchQ,EAAU,IAAO,GAC/BkU,YAAclU,EAAU,IAAO,GAC/ByU,UAAczU,EAAU,IAAO,GAC/B0U,SAAc1U,EAAU,IAAO,GAC/B2U,SAAc3U,EAAU,IAAO,GAC/BiQ,KAAcjQ,EAAS,KAAQ,GAC/B4U,SAAc5U,EAAS,KAAQ,GAC/B6U,KAAc7U,EAAS,KAAQ,GAC/BkQ,SAAclQ,EAAS,KAAQ,GAC/B8U,UAAc9U,EAAS,KAAQ,GAC/B+U,SAAc/U,EAAS,KAAQ,GAC/B+R,OAAc/R,EAAS,KAAQ,GAC/BmL,KAAcnL,EAAS,KAAQ,KAOlCgV,iBAAkB,SAAUC,EAASC,GACpC,GAAIC,GACHC,EACAtf,EAAGuf,CAEJ,IAAKJ,GAAmC,MAAxBA,EAAQtR,OAAQ,GAC/B,MAAOsR,EASR,KANAA,EAAUA,GAAW,GACrBC,EAAUA,EAAUA,EAAQlM,QAAS,0BAA2B,IAAO,GAEvEmM,EAAWD,EAAUA,EAAQhT,MAAO,QACpCkT,EAAWH,EAAQ/S,MAAO,KAEpBpM,EAAI,EAAGA,EAAIsf,EAASliB,OAAQ4C,IAEjC,OADAuf,EAAID,EAAUtf,IAEb,IAAK,IACJ,KACD,KAAK,KACCqf,EAASjiB,QACbiiB,EAAShQ,KAEV,MACD,SACCgQ,EAASpc,KAAMsc,GAIlB,MAAO,IAAMF,EAAShP,KAAM,MAI7BmP,aAAc,SAAUC,EAASC,GAChC,MAAO7Z,GAAKqY,SAAUuB,GAAU9I,OAAOpa,gBACtCsJ,EAAKqY,SAAUwB,GAAU/I,OAAOpa,eAIlCojB,cAAe,SAAUla,GAExB,MAAyC,KAAlCI,EAAKqY,SAAUzY,GAAMyU,UAI7B0F,cAAe,SAAUna,GACxB,MAAyC,KAAlCI,EAAKqY,SAAUzY,GAAMyU,UAK7BhU,gBAAiB,SAAU2Z,EAAQC,GAClC,IAAMja,EAAK8Z,cAAeE,GACzB,MAAOA,EAGHC,KAAW/jB,IACf+jB,EAASlkB,KAAKkK,aAGf,IAAIia,GAASla,EAAKqY,SAAU2B,GAC3BG,EAASna,EAAKqY,SAAU4B,GACxB5F,EAAW6F,EAAO7F,UAAY8F,EAAO9F,SACrCkE,EAAc2B,EAAO7F,SAAW6F,EAAO3B,YAAgB2B,EAAO3B,aAAe4B,EAAO5B,YACpFO,EAAYoB,EAAOpB,WAAaqB,EAAOrB,UACvCsB,EAA8B,KAApBF,EAAO3F,SACjBA,EAAWvU,EAAKqZ,iBAAkBa,EAAO3F,UAAY4F,EAAOf,SAAUe,EAAO5F,UAC7E6B,EAAS8D,EAAO9D,SAAagE,GAAWD,EAAO/D,QAAY,GAC3D5G,EAAO0K,EAAO1K,IAEf,OAAO6E,GAAWkE,EAAcO,EAAYvE,EAAW6B,EAAS5G,GAIjE6K,gBAAiB,SAAUza,EAAK0a,GAC/B,GAAIC,GAAIva,EAAKqY,SAAUzY,GACtB4a,EAAwB,gBAAXF,GAAwB1kB,EAAE6kB,MAAOH,GAAWA,EACzDI,EAAIH,EAAEnE,QAAU,GACjB,OAAOmE,GAAE1B,aAAe6B,GAAmC,MAA7BA,EAAE1S,OAAQ0S,EAAEnjB,OAAS,GAAc,IAAM,IAAOijB,GAAMD,EAAE/K,MAAQ,KAG/FmL,oBAAqB,SAAUV,GAC9B,GAAIlN,GAASkN,EACZM,EAAIva,EAAKqY,SAAU4B,EAapB,OAXKja,GAAK4a,eAAgBL,GAGzBxN,EAASwN,EAAE/K,KACTjJ,MAAOb,GAAgB,GACvB2H,QAAS,KAAM,IACfA,QAAS,QAAS,IACTrN,EAAK2Z,aAAcY,EAAGxkB,KAAKkK,gBACtC8M,EAASwN,EAAEra,WAAWmN,QAAStX,KAAKkK,aAAa6Q,OAAQ,IAAKvK,MAAOb,GAAgB,IAG/EzP,EAAO4kB,mBAAoB9N,IAInC7E,IAAK,SAAU4S,GAId,MAHKA,KAAY5kB,IAChB4kB,EAAU9a,EAAK4Y,gBAAgBpJ,MAEzBxP,EAAK+a,UAAWD,GAAUzN,QAAS,mBAAoB,KAI/DrQ,IAAK,SAAUgD,GACd6O,SAASW,KAAOxP,GAKjBI,OAAQ,SAAUR,GACjB,MAAO,KAAS7I,KAAM6I,IAIvBob,MAAO,SAAUpb,GAChB,MAAOA,GAAIyN,QAAStX,KAAKkK,aAAa6Q,OAAQ,KAI/CiK,UAAW,SAAUnb,GACpB,MAAOA,GAAIyN,QAAS,KAAM,KAG3B4N,iBAAkB,SAAUrb,GAC3B,MAAOA,GAAIyN,QAAS,QAAS,KAI9B6N,UAAW,SAAU1L,GACpB,MAAOxP,GAAK+a,UAAWvL,EAAKnC,QAAS,QAAS,IAAKA,QAAS3H,EAAe,MAG5EyV,YAAa,SAAU3L,GACtB,MAAO,WAAezY,KAAMyY,IAK7B4L,WAAY,SAAUxb,GACrB,GAAI2a,GAAIva,EAAKqY,SAAUzY,EAEvB,UAAW2a,EAAElG,UACVkG,EAAEzJ,OAAOpa,gBAAkBX,KAAK4iB,YAAY7H,OAAOpa,gBAGvD2kB,YAAa,SAAUzb,GACtB,MAAO,YAAgB7I,KAAM6I,IAG9Bgb,eAAgB,SAAUhb,GACzB,GAAI2a,GAAIva,EAAKqY,SAAUzY,EAOvB,OAAoB,KAAf2a,EAAElG,UACIte,KAAKqK,OAAOma,EAAE/K,OAAS+K,EAAE/K,OAAU+K,EAAEra,aAAenK,KAAK4iB,YAAYzY,YAAgBnK,KAAKulB,qBAAuBf,EAAEra,aAAenK,KAAKkK,aAAaC,YAExJ,KAASnJ,KAAMwjB,EAAE1jB,OAGzB0kB,OAAQ,SAAU3b,EAAK4b,GACtB,GAAI3kB,GAAM4kB,EAAYrF,EAAQsF,EAAYC,EACzCvb,EAASrK,KAAKqK,OAAQR,GACtB0Y,EAAMviB,KAAKsiB,SAAUzY,GACrBgc,EAAgBtD,EAAI9I,KACpBqM,EAAU,EAmEX,OAhEML,KACApb,EACJob,EAAgBxb,EAAKmY,eAErBwD,EAAS3b,EAAKyY,gBAAgB,GAE7B+C,EADIxb,EAAKI,OAAQub,EAAOnM,MACRxP,EAAKub,OAAQI,EAAO9kB,MAEpB8kB,EAAO9kB,OAQ1B4kB,EAAarb,EAASJ,EAAK+a,UAAWnb,GAAQA,EAI9C6b,EAAazb,EAAKI,OAAQkY,EAAI9I,MAASxP,EAAK+a,UAAWzC,EAAI9I,MAASiM,EAGpEC,EAAaD,EAAWrO,QAASrX,KAAKkiB,YAGjCyD,EAAa,KACjBG,EAAUJ,EAAW9V,MAAO+V,GAC5BD,EAAaA,EAAW9V,MAAO,EAAG+V,IAInC7kB,EAAOmJ,EAAKK,gBAAiBob,EAAYD,GAIzCpF,EAASrgB,KAAKsiB,SAAUxhB,GAAOuf,OAG1BhW,IAECJ,EAAKI,OAAQwb,IAAiF,IAA9DA,EAAcvO,QAAQ,IAAK,IAAID,QAASrX,KAAKkiB,eACjF2D,EAAgB,IAKZC,GAAwD,KAA7CD,EAAcxO,QAASrX,KAAKkiB,cAC3C2D,GAAiBC,GAIoB,KAAjCD,EAAcxO,QAAS,MAAkC,KAAlBwO,IAC3CA,EAAgB,IAAMA,GAIvB/kB,EAAOmJ,EAAKqY,SAAUxhB,GACtBA,EAAOA,EAAKwd,SAAWxd,EAAK0hB,YAAc1hB,EAAKyd,KAAOzd,EAAK0d,SAAW6B,EACrEwF,GAED/kB,GAAQA,EAAKuW,QAAS,KAAQ,GAAKyO,EAAU,IAAMA,EAG7ChlB,GAGRilB,kBAAmB,SAAUtM,GAC5B,MAA8D,KAAvDA,EAAKnC,QAAS,IAAK,IAAKD,QAASrX,KAAKkiB,aAI9C8D,eAAgB,SAAUvM,GACzB,GAAIwM,GAAuC,MAA3BxM,EAAKgJ,UAAW,EAAG,EAInC,OAHKwD,KACJxM,EAAOA,EAAKgJ,UAAW,KAEfwD,EAAU,IAAM,IAAOxM,EAAKnC,QAAS,sCAAuC,SAKtF4O,YAAa,SAAUjc,GACtB,MAAOA,IAAQA,EAAKuG,MAAOb,GAAgB,IAK5CwW,eAAgB,SAAUtc,GAEzB,GAAI2a,GAAIva,EAAKqY,SAAUrY,EAAKK,gBAAiBT,EAAK7J,KAAKkK,eAGtDkc,EAAW5B,EAAEra,aAAenK,KAAK4iB,YAAYzY,YAC1CnK,KAAKulB,qBACNf,EAAEra,aAAenK,KAAKkK,aAAaC,WAGrCkc,EAAKxmB,EAAEC,OAAOwmB,UAGdC,EAAOF,GAAMA,EAAG,GAAKA,EAAG,GAAGviB,GAAK3D,CAKjC,OAAOimB,MACH5B,EAAE/K,MACO,MAAX+K,EAAE/K,MACA8M,GAAQ/B,EAAE/K,KAAKnC,QAAS,KAAM,MAASiP,IAU5CC,8BAA+B,SAAUZ,EAAQa,GAChD,MAAO5mB,GAAEC,OAAO4P,wBACM,UAApBkW,EAAOtH,UAA4C,aAApBsH,EAAOtH,WACP,KAAhCmI,EAAOpG,OAAQ,cAIlBpW,EAAK2Y,YAAc3Y,EAAK4Y,gBAExBZ,EAAQpiB,EAAG,QAAS2N,KAAM,QAE1BvD,EAAKC,aAAe+X,EAAMzgB,OACzByI,EAAKqY,SAAUrY,EAAKK,gBAAiB2X,EAAM1d,KAAM,QAAU0F,EAAK2Y,YAAY9hB,OAC5EmJ,EAAK2Y,YAEN3Y,EAAKsb,oBAAuBtb,EAAK2Y,YAAYzY,aAAeF,EAAKC,aAAaC,WAG9EF,EAAKyc,gBAAkB,SAAU/D,GAChC,MAAOA,GAAiB9iB,EAAE+B,UAAYqI,EAAKC,cAAiBD,EAAKC,aAAapJ,MAI/EjB,EAAE+B,OAAQ/B,EAAEC,QAGX4iB,eAAgBzY,EAAKyY,eAGrBgE,gBAAiBzc,EAAKyc,mBAErB3mB,GAIJ,SAAWF,EAAGM,GACbN,EAAEC,OAAO6mB,QAAU,SAAUC,EAAO/d,GACnC7I,KAAK4mB,MAAQA,MACb5mB,KAAK6mB,YAAche,GAAS,GAG7BhJ,EAAE+B,OAAO/B,EAAEC,OAAO6mB,QAAQxf,WACzB2f,UAAW,WACV,MAAO9mB,MAAK4mB,MAAO5mB,KAAK6mB,cAGzBE,QAAS,WACR,MAAO/mB,MAAK4mB,MAAO5mB,KAAKgnB,gBAGzBC,QAAS,WACR,MAAOjnB,MAAK4mB,MAAO5mB,KAAK6mB,YAAc,IAGvCK,QAAS,WACR,MAAOlnB,MAAK4mB,MAAO5mB,KAAK6mB,YAAc,IAIvCrhB,IAAK,SAAUqE,EAAK5F,GACnBA,EAAOA,MAGFjE,KAAKinB,WACTjnB,KAAKmnB,eAKDljB,EAAKwV,MAAqC,KAA7BxV,EAAKwV,KAAKpC,QAAS,OACpCpT,EAAKwV,KAAO,IAAMxV,EAAKwV,MAGxBxV,EAAK4F,IAAMA,EACX7J,KAAK4mB,MAAMvf,KAAMpD,GACjBjE,KAAK6mB,YAAc7mB,KAAK4mB,MAAMplB,OAAS,GAIxC2lB,aAAc,WACbnnB,KAAK4mB,MAAQ5mB,KAAK4mB,MAAMhX,MAAO,EAAG5P,KAAK6mB,YAAc,IAGtDrZ,KAAM,SAAU3D,EAAK+c,EAAOQ,GAC3BR,EAAQA,GAAS5mB,KAAK4mB,KAEtB,IAAIS,GAAOjjB,EAA0ByE,EAAvBrH,EAASolB,EAAMplB,MAE7B,KAAM4C,EAAI,EAAO5C,EAAJ4C,EAAYA,IAGxB,GAFAijB,EAAQT,EAAMxiB,IAET0gB,mBAAmBjb,KAASib,mBAAmBuC,EAAMxd,MACzDib,mBAAmBjb,KAASib,mBAAmBuC,EAAM5N,SACrD5Q,EAAQzE,EAEHgjB,GACJ,MAAOve,EAKV,OAAOA,IAGRiB,QAAS,SAAUD,GAClB,GAAIC,GAASmW,EAAIjgB,KAAK6mB,WAqBtB,OAdA/c,GAAU9J,KAAKwN,KAAM3D,EAAK7J,KAAK4mB,MAAMhX,MAAM,EAAGqQ,IASzCnW,IAAY3J,IAChB2J,EAAU9J,KAAKwN,KAAM3D,EAAK7J,KAAK4mB,MAAMhX,MAAMqQ,IAAI,GAC/CnW,EAAUA,IAAY3J,EAAY2J,EAAUA,EAAUmW,GAGhDnW,GAGRwd,OAAQ,SAAUC,GACjB,GAAIC,GAAiBxnB,KAAK8J,QAASyd,EAAK1d,KAAOoW,EAAIjgB,KAAK6mB,WAInDW,KAAmBrnB,IACvBH,KAAK6mB,YAAcW,EACnBxnB,KAAKgnB,cAAgB/G,GAMAA,EAAjBuH,GACFD,EAAKE,SAAWF,EAAKG,MAAQ7nB,EAAEuT,MAAQpT,KAAK8mB,YAAa,QAChDU,EAAiBvH,GAC1BsH,EAAKE,SAAWF,EAAKI,SAAW9nB,EAAEuT,MAAQpT,KAAK8mB,YAAa,WACnDU,IAAmBrnB,GAAaonB,EAAKK,SAChDL,EAAKK,QAAS5nB,KAAK8mB,iBAInB/mB,GAIJ,SAAWF,GACV,GAAIoK,GAAOpK,EAAEC,OAAOmK,KACnB4d,EAAc/O,SAAShY,IAExBjB,GAAEC,OAAOgoB,UAAY,SAAU1H,GAC9BpgB,KAAKogB,QAAUA,EACfpgB,KAAK+nB,yBAA0B,EAE/BloB,EAAEC,OAAOI,OAAOkG,MACf4hB,mBAAoBnoB,EAAEwY,MAAOrY,KAAK0hB,SAAU1hB,MAC5CioB,qBAAsBpoB,EAAEwY,MAAOrY,KAAK+hB,WAAY/hB,SAIlDH,EAAE+B,OAAO/B,EAAEC,OAAOgoB,UAAU3gB,WAC3Bqe,OAAQ,SAAU3b,EAAK5F,GACtB,GAAI4d,GAAO/gB,EAAM2Y,EAAOxP,EAAKI,OAAOR,GAAOI,EAAK+a,UAAUnb,GAAOA,CAuBjE,OArBA/I,GAAOmJ,EAAKub,OAAQ3b,GAIpBgY,EAAQhiB,EAAE+B,QACT6X,KAAMA,EACN5P,IAAK/I,GACHmD,GAYH/D,EAAOkgB,QAAQ8H,aAAcrG,EAAOA,EAAMhH,OAAS5a,EAAS4a,MAAO/Z,GAE5D+gB,GAGRpI,KAAM,SAAU5P,EAAK/I,GACpB,GAAIqnB,GAAQC,EAAK3O,EAAM4O,CAqBvB,OAhBAF,GAASle,EAAKqY,SAAUzY,GACxBue,EAAMne,EAAK4Y,gBAENuF,EAAI5J,SAAW4J,EAAI/H,SAAW8H,EAAO3J,SAAW2J,EAAO9H,OAI3D5G,EAAO0O,EAAO1O,KAAO0O,EAAO1O,KAAO0O,EAAO3J,SAAW2J,EAAO9H,OACjDpW,EAAKI,OAAOR,IACvBwe,EAAWpe,EAAKqY,SAAUxhB,GAE1B2Y,EAAO4O,EAAS7J,SAAW6J,EAAShI,QAAUpW,EAAK8b,kBAAmBsC,EAAS5O,MAAQ4O,EAAS5O,KAAKnC,QAAS,IAAK,IAAO,KAE1HmC,EAAO5P,EAGD4P,GAIR6O,GAAI,SAAUze,EAAK5F,EAAMskB,GACxB,GAAI1G,GAAO/gB,EAAM2Y,EAAM+O,EACtBC,EAAkB5oB,EAAEwG,MAAM+C,QAAQiY,SAASG,oBAG5C1gB;EAAOmJ,EAAKub,OAAQ3b,GAGpB4P,EAAOzZ,KAAKyZ,KAAM5P,EAAK/I,GAMlBynB,GAAY9O,IAASxP,EAAK+a,UAAU/a,EAAK4Y,gBAAgBpJ,QAC7DzZ,KAAK0oB,sBAAwBH,GAa9BvoB,KAAK2oB,2BAA4B,EACjCzoB,EAAO4Y,SAASW,KAAOA,EAQvBzZ,KAAK2oB,2BAA4B,EAEjC9G,EAAQhiB,EAAE+B,QACTiI,IAAK/I,EACL2Y,KAAMA,EACNoB,MAAO5a,EAAS4a,OACd5W,GAEEwkB,IACJD,EAAgB,GAAI3oB,GAAEwV,MAAO,YAC7BmT,EAAclT,eACbnQ,KAAM,WACN0c,MAAO,MAGR7hB,KAAKwlB,OAAQ3b,EAAKgY,GAIZ0G,IACLvoB,KAAK4oB,gBAAiB,EACtB/oB,EAAEC,OAAOI,OAAOsJ,QAASgf,KAO3BxoB,KAAKogB,QAAQ5a,IAAKqc,EAAMhY,IAAKgY,IAU9BH,SAAU,SAAUrb,GACnB,GAAIoT,GAAMoI,CAIV,IAAMhiB,EAAEwG,MAAM+C,QAAQiY,SAASG,qBAM/B,MAAKxhB,MAAK2oB,2BACT3oB,KAAK2oB,2BAA4B,MACjCtiB,GAAMwiB,4BAMF7oB,KAAK4oB,oBACT5oB,KAAK4oB,gBAAiB,IASjBviB,EAAMiP,cAAcuM,OACK,IAA9B7hB,KAAKogB,QAAQwG,MAAMplB,QACnBxB,KAAK+nB,0BACL/nB,KAAK+nB,yBAA0B,EAE1BjP,SAAShY,OAAS+mB,OACtBxhB,GAAMC,kBAWRmT,EAAOxP,EAAK4Y,gBAAgBpJ,MACtBpT,EAAMiP,cAAcuM,OAASpI,GAGlCoI,EAAQ7hB,KAAKwlB,OAAQ/L,GAIrBzZ,KAAKogB,QAAQ5a,IAAKqc,EAAMhY,IAAKgY,QAI7Bxb,EAAMyb,aAAeD,QAStB7hB,MAAKogB,QAAQkH,QACZzd,KAAMxD,EAAMiP,cAAcuM,WAAahY,KAAO4P,EAI9CgO,QAAS,SAAUqB,EAAcC,GAEhC1iB,EAAMyb,aAAejiB,EAAE+B,UAAWknB,GAClCziB,EAAMyb,aAAaiH,UAAYA,OAUlChH,WAAY,SAAU1b,GACrB,GAAI+Z,GAAS3G,CAIb,IAAK5Z,EAAEwG,MAAM+C,QAAQiY,SAASI,wBAC7B5hB,EAAEwG,MAAM+C,QAAQiY,SAASG,qBAD1B,CAOA,GAAKxhB,KAAK0oB,sBAGT,MAFA1oB,MAAK0oB,uBAAwB,MAC7BriB,GAAMwiB,0BAIPzI,GAAUpgB,KAAKogB,QACf3G,EAAOxP,EAAK4Y,gBAAgBpJ,KAI5BzZ,KAAKogB,QAAQkH,QACZzd,IAAK4P,EAILgO,QAAS,SAAUqB,EAAcC,GAEhC1iB,EAAM2b,gBAAkBniB,EAAE+B,UAAWknB,GACrCziB,EAAM2b,gBAAgB+G,UAAYA,GAWnCnB,QAAS,WACRxH,EAAQ5a,IAAKiU,GACZA,KAAMA,EACNoB,MAAO5a,EAAS4a,gBAMlB9a,GAIJ,SAAWF,GAIVA,EAAEC,OAAOuhB,SAAW,SAAUxX,EAAK5F,EAAMskB,GACxC1oB,EAAEC,OAAOuhB,SAASvb,UAAUwiB,GAAIze,EAAK5F,EAAMskB,IAK5C1oB,EAAEC,OAAOuhB,SAASjB,QAAU,GAAIvgB,GAAEC,OAAO6mB,QAGzC9mB,EAAEC,OAAOuhB,SAASvb,UAAY,GAAIjG,GAAEC,OAAOgoB,UAAWjoB,EAAEC,OAAOuhB,SAASjB,QAExE,IAAIgI,GAAMvoB,EAAEC,OAAOmK,KAAK4Y,eACxBhjB,GAAEC,OAAOuhB,SAASjB,QAAQ5a,IAAK4iB,EAAItnB,MAAO2Y,KAAM2O,EAAI3O,QACjD1Z,GAGJ,SAAWF,EAAGM,GACb,GAAIyc,IACFoM,aACAC,eAEDC,EAAcjpB,EAASiG,cAAe,KACtCijB,GAAmB,GAAI,UAAW,OAAQ,KAE3CtpB,GAAEsD,MAAQ,YAAa,cAAgB,SAAUiB,EAAGpD,GAGnD,GAAIooB,GAAmB,IAANhlB,EAAYpD,EAAO,QAAeA,CAEnDnB,GAAEsD,KAAMgmB,EAAgB,SAAUE,EAAGC,GACpC,MAAKJ,GAAYpW,MAAOjT,EAAE+F,UAAW0jB,EAASF,MAAiBjpB,GAC7Dyc,EAAO5b,GAAiB,OAAIsoB,GACtB,GAFR,SAOD1M,EAAO5b,GAAmB,SACzBnB,EAAE+F,UAAWgX,EAAO5b,GAAiB,OAAIA,EAAO,aACjD4b,EAAO5b,GAAgB,MACtBnB,EAAE+F,UAAWgX,EAAO5b,GAAiB,OAAIA,EAAO,QAGd,KAA9B4b,EAAO5b,GAAiB,SAC5B4b,EAAO5b,GAAgB,MAAI4b,EAAO5b,GAAgB,MAAEL,iBAKtDd,EAAEmG,QAAQujB,eAAmB3M,EAAoB,WAAY,SAAMzc,EACnEN,EAAEmG,QAAQwjB,cAAkB5M,EAAmB,UAAY,SAAMzc,EAGjEN,EAAGqpB,GAAc7a,SAGjBxO,EAAEkD,GAAG0mB,kBAAoB,SAAUrU,EAAUjQ,EAAMukB,GAClD,GAAIC,GAAO5T,EACV5I,EAAOnN,KACP4pB,EAAe,WAGd1P,aAAcyP,GACdvU,EAAS7R,MAAOvD,KAAMwD,YAEvBqmB,EAAmB1kB,GAAiB,cAATA,EAAuC,aAAd,WAGrD,OAAOtF,GAAEmG,QAAQujB,gBAAoC,eAAlBM,GAChChqB,EAAEmG,QAAQwjB,eAAmC,cAAlBK,GAGxBH,IAAiBvpB,IAGhBN,EAAGG,MAAOkX,UAAYjX,IAI1B8V,EAEI,IAFO7Q,WACVrF,EAAGG,MAAOuB,IAAKqb,EAAOiN,GAAgB9T,aAKtB,IAAbA,GAAkBA,IAAa5V,GAAamE,MAAOyR,MACvDA,EAAWlW,EAAEkD,GAAG0mB,kBAAkBK,kBAKpCH,EAAQtmB,WAAY,WACnBxD,EAAGsN,GAAOiU,IAAKxE,EAAOiN,GAAgBxjB,MAAOujB,GAC7CxU,EAAS7R,MAAO4J,IACd4I,GAGIlW,EAAGG,MAAOwa,IAAKoC,EAAOiN,GAAgBxjB,MAAOujB,KAKpDvmB,WAAYxD,EAAEwY,MAAOjD,EAAUpV,MAAQ,GAChCH,EAAGG,QAKZH,EAAEkD,GAAG0mB,kBAAkBK,gBAAkB,KACtC/pB,GAiBJ,SAAWF,EAAGK,EAAQD,EAAUE,GA4BhC,QAAS4pB,GAAgB1jB,GAExB,KAAQA,GAAwC,mBAAxBA,GAAMiP,eAC7BjP,EAAQA,EAAMiP,aAEf,OAAOjP,GAGR,QAAS2jB,GAAoB3jB,EAAO4jB,GAEnC,GACCC,GAAItN,EAAOuN,EAAItZ,EAAMuZ,EAAI/N,EAAOjY,EAAGilB,EAAGgB,EADnC1M,EAAItX,EAAMlB,IAkBd,IAfAkB,EAAQxG,EAAEwV,MAAOhP,GACjBA,EAAMlB,KAAO8kB,EAEbC,EAAK7jB,EAAMiP,cACXsH,EAAQ/c,EAAEwG,MAAMuW,MAIXe,EAAE0C,OAAQ,kBAAqB,KACnCzD,EAAQ0N,GAMJJ,EACJ,IAAM9lB,EAAIwY,EAAMpb,OAAQqP,EAAMzM,GAC7ByM,EAAO+L,IAASxY,GAChBiC,EAAOwK,GAASqZ,EAAIrZ,EAUtB,IAJK8M,EAAE0C,OAAO,wBAA0B,KAAOha,EAAMkkB,QACpDlkB,EAAMkkB,MAAQ,GAGa,KAAvB5M,EAAE0C,OAAO,YACb8J,EAAKJ,EAAgBG,GACrBvM,EAAIwM,EAAGK,QACPJ,EAAKD,EAAGM,eACRpO,EAAUsB,GAAKA,EAAEnc,OAAWmc,EAAE,GAASyM,GAAMA,EAAG5oB,OAAW4oB,EAAI,GAAMjqB,GAGpE,IAAMkpB,EAAI,EAAGgB,EAAMK,EAAgBlpB,OAAY6oB,EAAJhB,EAASA,IACnDxY,EAAO6Z,EAAiBrB,GACxBhjB,EAAOwK,GAASwL,EAAOxL,EAK1B,OAAOxK,GAGR,QAASskB,GAAwBtqB,GAKhC,IAHA,GACCuqB,GAAGC,EADAC,KAGIzqB,GAAU,CAEjBuqB,EAAI/qB,EAAEoE,KAAM5D,EAAS0qB,EAErB,KAAOF,IAAKD,GACNA,EAAGC,KACPC,EAAOD,GAAMC,EAAME,mBAAoB,EAGzC3qB,GAAUA,EAAQO,WAEnB,MAAOkqB,GAGR,QAASG,GAAqC5qB,EAAS4pB,GAEtD,IADA,GAAIW,GACIvqB,GAAU,CAIjB,GAFAuqB,EAAI/qB,EAAEoE,KAAM5D,EAAS0qB,GAEhBH,KAAQX,GAAaW,EAAGX,IAC5B,MAAO5pB,EAERA,GAAUA,EAAQO,WAEnB,MAAO,MAGR,QAASsqB,KACRC,GAAqB,EAGtB,QAASC,KACRD,GAAqB,EAGtB,QAASE,KACRC,EAAc,EACdC,EAAe/pB,OAAS,EACxBgqB,GAAqB,EAIrBJ,IAGD,QAASK,KAGRP,IAGD,QAASQ,KACRC,IACAC,EAAevoB,WAAY,WAC1BuoB,EAAe,EACfP,KACExrB,EAAEgsB,OAAOC,oBAGb,QAASH,KACHC,IACJ1R,aAAc0R,GACdA,EAAe,GAIjB,QAASG,GAAqB9B,EAAW5jB,EAAOykB,GAC/C,GAAIkB,EAUJ,QAROlB,GAASA,EAAOb,KACjBa,GAASG,EAAqC5kB,EAAMmL,OAAQyY,MAEjE+B,EAAKhC,EAAoB3jB,EAAO4jB,GAEhCpqB,EAAGwG,EAAMmL,QAAQhI,QAASwiB,IAGpBA,EAGR,QAASC,GAAoB5lB,GAC5B,GACC2lB,GADGE,EAAUrsB,EAAEoE,KAAMoC,EAAMmL,OAAQ2a,EAG9BX,IAAyBF,GAAeA,IAAgBY,IAC7DF,EAAKD,EAAqB,IAAM1lB,EAAMlB,KAAMkB,GACvC2lB,IACCA,EAAGzW,sBACPlP,EAAMC,iBAEF0lB,EAAGI,wBACP/lB,EAAMgmB,kBAEFL,EAAGM,iCACPjmB,EAAMwiB,6BAMV,QAAS0D,GAAkBlmB,GAE1B,GACCmL,GAAQsZ,EAAOnN,EADZ6M,EAAUT,EAAgB1jB,GAAQmkB,OAGjCA,IAA8B,IAAnBA,EAAQhpB,SAEvBgQ,EAASnL,EAAMmL,OACfsZ,EAAQH,EAAwBnZ,GAE3BsZ,EAAME,oBAEVM,EAAckB,IACd3sB,EAAEoE,KAAMuN,EAAQ2a,EAAyBb,GAEzCK,IAEAF,IACAgB,GAAY,EAEZ9O,EAAIoM,EAAgB1jB,GAAQmkB,QAAS,GACrCkC,EAAS/O,EAAEgP,MACXC,EAASjP,EAAEkP,MAEXd,EAAqB,aAAc1lB,EAAOykB,GAC1CiB,EAAqB,aAAc1lB,EAAOykB,KAK7C,QAASgC,GAAczmB,GACjB8kB,IAICsB,GACLV,EAAqB,eAAgB1lB,EAAOskB,EAAwBtkB,EAAMmL,SAG3Eib,GAAY,EACZf,KAGD,QAASqB,GAAiB1mB,GACzB,IAAK8kB,EAAL,CAIA,GAAIxN,GAAIoM,EAAgB1jB,GAAQmkB,QAAS,GACxCwC,EAAYP,EACZQ,EAAgBptB,EAAEgsB,OAAOqB,sBACzBpC,EAAQH,EAAwBtkB,EAAMmL,OAEtCib,GAAYA,GACT3jB,KAAKqkB,IAAKxP,EAAEgP,MAAQD,GAAWO,GAChCnkB,KAAKqkB,IAAKxP,EAAEkP,MAAQD,GAAWK,EAE7BR,IAAcO,GAClBjB,EAAqB,eAAgB1lB,EAAOykB,GAG7CiB,EAAqB,aAAc1lB,EAAOykB,GAC1CY,KAGD,QAAS0B,GAAgB/mB,GACxB,IAAK8kB,EAAL,CAIAC,GAEA,IACCY,GAAIrO,EADDmN,EAAQH,EAAwBtkB,EAAMmL,OAE1Cua,GAAqB,WAAY1lB,EAAOykB,GAElC2B,IACLT,EAAKD,EAAqB,SAAU1lB,EAAOykB,GACtCkB,GAAMA,EAAGzW,uBAKboI,EAAIoM,EAAgB1jB,GAAQokB,eAAgB,GAC5Cc,EAAelkB,MACd6kB,QAASZ,EACT7hB,EAAGkU,EAAE0P,QACL3jB,EAAGiU,EAAE2P,UAKN9B,GAAqB,IAGvBO,EAAqB,YAAa1lB,EAAOykB,GACzC2B,GAAY,EAEZf,KAGD,QAAS6B,GAAoB3jB,GAC5B,GACCihB,GADGnY,EAAW7S,EAAEoE,KAAM2F,EAAKmhB,EAG5B,IAAKrY,EACJ,IAAMmY,IAAKnY,GACV,GAAKA,EAAUmY,GACd,OAAO,CAIV,QAAO,EAGR,QAAS2C,MAET,QAASC,GAAuBxD,GAC/B,GAAIyD,GAAWzD,EAAUtN,OAAQ,EAEjC,QACCvD,MAAO,WAIAmU,EAAoBvtB,OACzBH,EAAEoE,KAAMjE,KAAM+qB,KAKf,IAAIrY,GAAW7S,EAAEoE,KAAMjE,KAAM+qB,EAC7BrY,GAAUuX,IAAc,EAKxB0D,EAAmB1D,IAAgB0D,EAAmB1D,IAAe,GAAM,EAEnC,IAAnC0D,EAAmB1D,IACvB2D,EAAUxnB,KAAMsnB,EAAUzB,GAO3BpsB,EAAGG,MAAOoG,KAAMsnB,EAAUF,GAGrBK,IAIJF,EAAgC,YAAMA,EAAgC,YAAK,GAAK,EAErC,IAAtCA,EAAgC,YACpCC,EAAUxnB,KAAM,aAAcmmB,GAC5BnmB,KAAM,WAAYgnB,GAYlBhnB,KAAM,YAAa2mB,GACnB3mB,KAAM,SAAU0mB,KAKrBxT,SAAU,aAIPqU,EAAmB1D,GAEf0D,EAAmB1D,IACxB2D,EAAUpnB,OAAQknB,EAAUzB,GAGxB4B,MAIFF,EAAgC,WAE5BA,EAAgC,YACrCC,EAAUpnB,OAAQ,aAAc+lB,GAC9B/lB,OAAQ,YAAaumB,GACrBvmB,OAAQ,WAAY4mB,GACpB5mB,OAAQ,SAAUsmB,GAItB,IAAIgB,GAAQjuB,EAAGG,MACd0S,EAAW7S,EAAEoE,KAAMjE,KAAM+qB,EAOrBrY,KACJA,EAAUuX,IAAc,GAKzB6D,EAAMtnB,OAAQknB,EAAUF,GAKlBD,EAAoBvtB,OACzB8tB,EAAMpoB,WAAYqlB,KA1ZtB,GAiBkBgD,GACjB3pB,EAlBG2mB,EAAmB,uBACtBoB,EAA0B,iBAC1B6B,EAAoB,0EAA0Exd,MAAO,KACrGka,EAAkB,8CAA8Cla,MAAO,KACvEyd,EAAiBpuB,EAAEwG,MAAM6nB,WAAaruB,EAAEwG,MAAM6nB,WAAWtR,SACzD0N,EAAkBzqB,EAAEwG,MAAMuW,MAAMjU,OAAQslB,GACxCN,KACA/B,EAAe,EACfc,EAAS,EACTE,EAAS,EACTH,GAAY,EACZlB,KACAC,GAAqB,EACrBL,GAAqB,EACrB0C,EAAwB,oBAAsB5tB,GAC9C2tB,EAAY/tB,EAAGI,GACfusB,EAAc,EACdlB,EAAc,CAiZf,KA9YAzrB,EAAEgsB,QACDqB,sBAAuB,GACvBiB,uBAAwB,GACxBrC,mBAAoB,MA2Yf1nB,EAAI,EAAGA,EAAI4pB,EAAkBxsB,OAAQ4C,IAC1CvE,EAAEwG,MAAM+C,QAAS4kB,EAAmB5pB,IAAQqpB,EAAuBO,EAAmB5pB,GAMlFypB,IACJ5tB,EAASma,iBAAkB,QAAS,SAAUlP,GAC7C,GAECzB,GAAGC,EAAGE,EAAKxF,EAAGgqB,EAAGlC,EAFdmC,EAAM9C,EAAe/pB,OACxBgQ,EAAStG,EAAEsG,MAGZ,IAAK6c,EAkCJ,IAjCA5kB,EAAIyB,EAAEmiB,QACN3jB,EAAIwB,EAAEoiB,QACNS,EAAYluB,EAAEgsB,OAAOsC,uBA6BrBvkB,EAAM4H,EAEE5H,GAAM,CACb,IAAMxF,EAAI,EAAOiqB,EAAJjqB,EAASA,IAIrB,GAHAgqB,EAAI7C,EAAgBnnB,GACpB8nB,EAAU,EAEHtiB,IAAQ4H,GAAU1I,KAAKqkB,IAAKiB,EAAE3kB,EAAIA,GAAMskB,GAAajlB,KAAKqkB,IAAKiB,EAAE1kB,EAAIA,GAAMqkB,GAC/EluB,EAAEoE,KAAM2F,EAAKuiB,KAA8BiC,EAAElC,QAK/C,MAFAhhB,GAAE5E,qBACF4E,GAAEmhB,iBAIJziB,GAAMA,EAAIhJ,cAGV,IAEAb,EAAQG,EAAQD,GAGpB,SAAWJ,EAAGK,EAAQC,GAwBrB,QAASmuB,GAAoBC,EAAKtE,EAAW5jB,EAAOmoB,GACnD,GAAIC,GAAepoB,EAAMlB,IACzBkB,GAAMlB,KAAO8kB,EACRuE,EACJ3uB,EAAEwG,MAAMmD,QAASnD,EAAOlG,EAAWouB,GAEnC1uB,EAAEwG,MAAMqoB,SAASprB,KAAMirB,EAAKloB,GAE7BA,EAAMlB,KAAOspB,EA/Bd,GAAIb,GAAY/tB,EAAGI,GAClB0uB,EAAe9uB,EAAEC,OAAOkG,QAAQqW,MAChCuS,EAAc,mBACdC,EAAkBF,EAAe,aAAe,YAChDG,EAAiBH,EAAe,WAAa,UAC7CI,EAAiBJ,EAAe,YAAc,WAG/C9uB,GAAEsD,KAAM,8FAGoBqN,MAAO,KAAO,SAAUpM,EAAGvD,GAEtDhB,EAAEkD,GAAIlC,GAAS,SAAUkC,GACxB,MAAOA,GAAK/C,KAAKoG,KAAMvF,EAAMkC,GAAO/C,KAAKwJ,QAAS3I,IAI9ChB,EAAEmvB,SACNnvB,EAAEmvB,OAAQnuB,IAAS,KAgBrBhB,EAAEwG,MAAM+C,QAAQC,aAEfC,SAAS,EACT8P,MAAO,WAON,QAAS5P,GAASnD,EAAOwb,GACxBoN,EAAYpN,EACZyM,EAAoBY,EAAYD,EAAY,cAAgB,aAAc5oB,GAP3E,GAEC4oB,GACAtF,EAHGuF,EAAalvB,KAChB8tB,EAAQjuB,EAAGqvB,EAUZpB,GAAM1nB,KAAMwoB,EAAa,SAAUvoB,GAE5BxG,EAAEwG,MAAM+C,QAAQC,YAAYC,UAI5B2lB,GACLzlB,EAASnD,GAAO,GAGjB6T,aAAcyP,GACdA,EAAQtmB,WAAY,WACnBmG,EAASnD,GAAO,IACd,QAGLiT,SAAU,WACTzZ,EAAGG,MAAOwG,OAAQooB,KAKpB/uB,EAAEwG,MAAM+C,QAAQ+lB,KACfC,iBAAkB,IAClBC,kBAAkB,EAClBjW,MAAO,WACN,GAAI8V,GAAalvB,KAChB8tB,EAAQjuB,EAAGqvB,GACXI,GAAY,CAEbxB,GAAM1nB,KAAM,aAAc,SAAUC,GASnC,QAASkpB,KACRrV,aAAcyP,GAGf,QAAS6F,KACRD,IAEAzB,EAAMtnB,OAAQ,SAAUipB,GACtBjpB,OAAQ,WAAY+oB,GACtB3B,EAAUpnB,OAAQ,eAAgBgpB,GAGnC,QAASC,GAAcppB,GACtBmpB,IAIMF,GAAaI,IAAerpB,EAAMmL,OAE5B8d,GACXjpB,EAAMC,iBAFNgoB,EAAoBY,EAAY,MAAO7oB,GAzBzC,GADAipB,GAAY,EACPjpB,EAAMkkB,OAAyB,IAAhBlkB,EAAMkkB,MACzB,OAAO,CAGR,IACCZ,GADG+F,EAAarpB,EAAMmL,MA2BvBsc,GAAM1nB,KAAM,WAAYmpB,GACtBnpB,KAAM,SAAUqpB,GAClB7B,EAAUxnB,KAAM,eAAgBopB,GAEhC7F,EAAQtmB,WAAY,WACbxD,EAAEwG,MAAM+C,QAAQ+lB,IAAIE,mBACzBC,GAAY,GAEbhB,EAAoBY,EAAY,UAAWrvB,EAAEwV,MAAO,WAAa7D,OAAQke,MACvE7vB,EAAEwG,MAAM+C,QAAQ+lB,IAAIC,qBAGzB9V,SAAU,WACTzZ,EAAGG,MAAOwG,OAAQ,cAAeA,OAAQ,UAAWA,OAAQ,YAC5DonB,EAAUpnB,OAAQ,kBAKpB3G,EAAEwG,MAAM+C,QAAQumB,OAGfC,0BAA2B,GAG3BC,kBAAmB,IAGnBC,4BAA6B,GAG7BC,0BAA2B,GAE3B3N,YAAa,SAAW/b,GACvB,GAAI2pB,GAAW9vB,EAAO+vB,YACrBC,EAAWhwB,EAAOiwB,YAClB1mB,EAAIpD,EAAMgnB,QACV3jB,EAAIrD,EAAMinB,OAkBX,OAhBqB,KAAhBjnB,EAAMwmB,OAAe/jB,KAAKsnB,MAAO1mB,GAAMZ,KAAKsnB,MAAO/pB,EAAMwmB,QAC7C,IAAhBxmB,EAAMsmB,OAAe7jB,KAAKsnB,MAAO3mB,GAAMX,KAAKsnB,MAAO/pB,EAAMsmB,QAIzDljB,GAAQumB,EACRtmB,GAAQwmB,IACGxmB,EAAMrD,EAAMwmB,MAAQqD,GAAazmB,EAAMpD,EAAMsmB,MAAQqD,KAKhEvmB,EAAIpD,EAAMsmB,MAAQqD,EAClBtmB,EAAIrD,EAAMwmB,MAAQqD,IAIlBzmB,EAAGA,EACHC,EAAGA,IAIL2P,MAAO,SAAUhT,GAChB,GAAIpC,GAAOoC,EAAMiP,cAAckV,QAC7BnkB,EAAMiP,cAAckV,QAAS,GAAMnkB,EACpCyS,EAAWjZ,EAAEwG,MAAM+C,QAAQumB,MAAMvN,YAAane,EAC/C,QACGosB,MAAM,GAAMC,OAASC,UACrBC,QAAU1X,EAASrP,EAAGqP,EAASpP,GAC/B+mB,OAAQ5wB,EAAGwG,EAAMmL,UAIrB+H,KAAM,SAAUlT,GACf,GAAIpC,GAAOoC,EAAMiP,cAAckV,QAC7BnkB,EAAMiP,cAAckV,QAAS,GAAMnkB,EACpCyS,EAAWjZ,EAAEwG,MAAM+C,QAAQumB,MAAMvN,YAAane,EAC/C,QACGosB,MAAM,GAAMC,OAASC,UACrBC,QAAU1X,EAASrP,EAAGqP,EAASpP,KAInCgnB,YAAa,SAAUrX,EAAOE,EAAM2V,EAAYQ,GAC/C,GAAKnW,EAAK8W,KAAOhX,EAAMgX,KAAOxwB,EAAEwG,MAAM+C,QAAQumB,MAAME,mBACnD/mB,KAAKqkB,IAAK9T,EAAMmX,OAAQ,GAAMjX,EAAKiX,OAAQ,IAAQ3wB,EAAEwG,MAAM+C,QAAQumB,MAAMG,6BACzEhnB,KAAKqkB,IAAK9T,EAAMmX,OAAQ,GAAMjX,EAAKiX,OAAQ,IAAQ3wB,EAAEwG,MAAM+C,QAAQumB,MAAMI,0BAA4B,CACrG,GAAIhH,GAAY1P,EAAMmX,OAAO,GAAKjX,EAAKiX,OAAQ,GAAM,YAAc,YAInE,OAFAlC,GAAoBY,EAAY,QAASrvB,EAAEwV,MAAO,SAAW7D,OAAQke,EAAYiB,WAAYtX,EAAOuX,UAAWrX,KAAS,GACxH+U,EAAoBY,EAAYnG,EAAUlpB,EAAEwV,MAAO0T,GAAavX,OAAQke,EAAYiB,WAAYtX,EAAOuX,UAAWrX,KAAU,IACrH,EAER,OAAO,GAMRsX,iBAAiB,EAEjBzX,MAAO,WACN,GAAI0X,GACH5B,EAAalvB,KACb8tB,EAAQjuB,EAAGqvB,GACXhY,IAGD4Z,GAASjxB,EAAEoE,KAAMjE,KAAM,iBACjB8wB,IACLA,GAAWtvB,OAAQ,GACnB3B,EAAEoE,KAAMjE,KAAM,gBAAiB8wB,IAEhCA,EAAOtvB,SACPsvB,EAAOnB,MAAQzY,EAEfA,EAAQmC,MAAQ,SAAUhT,GAGzB,IAAKxG,EAAEwG,MAAM+C,QAAQumB,MAAMkB,gBAA3B,CAGAhxB,EAAEwG,MAAM+C,QAAQumB,MAAMkB,iBAAkB,CAExC,IAAItX,GACHF,EAAQxZ,EAAEwG,MAAM+C,QAAQumB,MAAMtW,MAAOhT,GACrCqpB,EAAarpB,EAAMmL,OACnBuf,GAAU,CAEX7Z,GAAQ8Z,KAAO,SAAU3qB,GAClBgT,IAAShT,EAAMkP,uBAIrBgE,EAAO1Z,EAAEwG,MAAM+C,QAAQumB,MAAMpW,KAAMlT,GAC7B0qB,IACLA,EAAUlxB,EAAEwG,MAAM+C,QAAQumB,MAAMe,YAAarX,EAAOE,EAAM2V,EAAYQ,GACjEqB,IAGJlxB,EAAEwG,MAAM+C,QAAQumB,MAAMkB,iBAAkB,IAIrC/nB,KAAKqkB,IAAK9T,EAAMmX,OAAQ,GAAMjX,EAAKiX,OAAQ,IAAQ3wB,EAAEwG,MAAM+C,QAAQumB,MAAMC,2BAC7EvpB,EAAMC,mBAIR4Q,EAAQqC,KAAO,WACbwX,GAAU,EAGVlxB,EAAEwG,MAAM+C,QAAQumB,MAAMkB,iBAAkB,EACxCjD,EAAUxM,IAAK2N,EAAgB7X,EAAQ8Z,MACvC9Z,EAAQ8Z,KAAO,MAGjBpD,EAAUzM,GAAI4N,EAAgB7X,EAAQ8Z,MACpCxW,IAAKsU,EAAgB5X,EAAQqC,QAEhCuU,EAAM3M,GAAI0N,EAAiB3X,EAAQmC,QAGpCC,SAAU,WACT,GAAIwX,GAAQ5Z,CAEZ4Z,GAASjxB,EAAEoE,KAAMjE,KAAM,iBAClB8wB,IACJ5Z,EAAU4Z,EAAOnB,YACVmB,GAAOnB,MACdmB,EAAOtvB,SACgB,IAAlBsvB,EAAOtvB,QACX3B,EAAE6F,WAAY1F,KAAM,kBAIjBkX,IACCA,EAAQmC,OACZxZ,EAAGG,MAAOohB,IAAKyN,EAAiB3X,EAAQmC,OAEpCnC,EAAQ8Z,MACZpD,EAAUxM,IAAK2N,EAAgB7X,EAAQ8Z,MAEnC9Z,EAAQqC,MACZqU,EAAUxM,IAAK0N,EAAgB5X,EAAQqC,SAK3C1Z,EAAEsD,MACD8tB,WAAY,cACZC,QAAS,MACTC,UAAW,aACXC,WAAY,eACV,SAAU/qB,EAAOgrB,GAEnBxxB,EAAEwG,MAAM+C,QAAS/C,IAChB+S,MAAO,WACNvZ,EAAGG,MAAOoG,KAAMirB,EAAaxxB,EAAEuT,OAEhCkG,SAAU,WACTzZ,EAAGG,MAAOwG,OAAQ6qB,QAKlBtxB,EAAQC,MAIX,SAAWH,GACVA,EAAEwG,MAAM+C,QAAQkoB,iBACflY,MAAO,WACNvZ,EAAGG,MAAOoG,KAAM,SAAU8N,IAE3BoF,SAAU,WACTzZ,EAAGG,MAAOwG,OAAQ,SAAU0N,IAI9B,IAqBCqd,GACAC,EACAC,EAvBGC,EAAW,IACdxd,EAAU,WACTsd,GAAO,GAAMlB,OAASC,UACtBkB,EAAOD,EAAOG,EAETF,GAAQC,GAEZC,EAAWH,EACX3xB,EAAGG,MAAOwJ,QAAS,qBAId+nB,GACJrX,aAAcqX,GAIfA,EAAWluB,WAAY6Q,EAASwd,EAAWD,KAG7CE,EAAW,GAIT5xB,GAGJ,SAAUF,EAAGK,GAkGb,QAASgU,KAER,GAAIoI,GAAcsV,GAEbtV,KAAgBuV,IAEpBA,EAAmBvV,EACnBwV,EAAItoB,QAASuoB,IAxGf,GAECH,GACAC,EACAG,EACAC,EAEAC,EAAIC,EAAIC,EAPLN,EAAMjyB,EAAGK,GACZ6xB,EAAa,oBAKbM,GAAiBC,GAAK,EAAMC,KAAO,EAoB/B1yB,GAAEmG,QAAQsW,cAWd4V,EAAKhyB,EAAOkF,YAAc0sB,EAAItU,QAC9B2U,EAAKjyB,EAAOmF,aAAeysB,EAAI7lB,SAC/BmmB,EAAsB,GAEtBJ,EAAmCE,EAAKC,GAAQD,EAAKC,EAAOC,EAG5DH,EAAiCI,EAAcnyB,EAAOoc,cAM/C0V,GAAoCC,IAAuCD,IAAqCC,KACtHI,GAAiBG,OAAO,EAAMC,IAAM,KAItC5yB,EAAEwG,MAAM+C,QAAQspB,kBAAoB7yB,EAAE+B,UAAY/B,EAAEwG,MAAM+C,QAAQspB,mBACjEtZ,MAAO,WAGN,MAAKvZ,GAAEmG,QAAQsW,cAAgBzc,EAAEwG,MAAM+C,QAAQspB,kBAAkBzxB,UACzD,GAIR4wB,EAAmBD,QAInBE,GAAI1rB,KAAM,kBAAmB8N,KAE9BoF,SAAU,WAGT,MAAKzZ,GAAEmG,QAAQsW,cAAgBzc,EAAEwG,MAAM+C,QAAQspB,kBAAkBzxB,UACzD,MAKR6wB,GAAItrB,OAAQ,kBAAmB0N,IAEhC1O,IAAK,SAAUmtB,GAEd,GAAIC,GAAcD,EAAUze,OAE5Bye,GAAUze,QAAU,SAAU7N,GAK7B,MAHAA,GAAMiW,YAAcsV,IAGbgB,EAAYrvB,MAAOvD,KAAMwD,eAoBnC3D,EAAEwG,MAAM+C,QAAQspB,kBAAkBpW,YAAcsV,EAAkB,WACjE,GAAIiB,IAAa,EAAMzvB,EAAOnD,EAASqb,eAevC,OALCuX,GAHIhzB,EAAEmG,QAAQsW,YAGD+V,EAAcnyB,EAAOoc,aAErBlZ,GAAQA,EAAK0vB,YAAc1vB,EAAK2vB,aAAe,IAGtDF,EAAa,WAAa,aAGlChzB,EAAEkD,GAAIgvB,GAAe,SAAUhvB,GAC9B,MAAOA,GAAK/C,KAAKoG,KAAM2rB,EAAYhvB,GAAO/C,KAAKwJ,QAASuoB,IAIpDlyB,EAAEmvB,SACNnvB,EAAEmvB,OAAQ+C,IAAe,IAGxBhyB,EAAQC,MAKX,SAAWH,GAGV,GAAImzB,GAAcnzB,EAAG,QAAS0I,SAAU,QAIxCyB,GAIC3J,QAAW2yB,EAAYxxB,OAASwxB,EAC/BnzB,EAAG,UAAYiB,KAAMjB,EAAEC,OAAOmK,KAAKC,aAAaC,aAAeuU,UAAW7e,EAAG,SAE9EozB,aAAc,0EAGdhsB,IAAK,SAAUnG,GAIRjB,EAAEC,OAAOsK,oBAKVvK,EAAEmG,QAAQ2a,gBACd3W,EAAK3J,QAAQkE,KAAM,OAClB1E,EAAEC,OAAOmK,KAAKK,gBAAiBxJ,EAAMjB,EAAEC,OAAOmK,KAAKC,gBAItDgpB,QAAS,SAAUpyB,EAAM8G,GACxB,GAAImd,GAAUllB,EAAEC,OAAOmK,KAAKkI,IAAKrR,EAEjC8G,GAAK4F,KAAMxD,EAAKipB,cAAe9vB,KAAK,SAAUiB,EAAG+Z,GAChD,GAAIgV,GAAWtzB,EAAGse,GAAOiV,GAAI,UAAa,OACzCvzB,EAAGse,GAAOiV,GAAI,SAAY,MAAQ,SACnCC,EAAcxzB,EAAEC,OAAOmK,KAAK4Y,gBAC5ByQ,EAAUzzB,EAAGse,GAAO5Z,KAAM4uB,EAK1BG,GAAUA,EAAQhc,QAAS+b,EAAY/U,SAAW+U,EAAY7Q,YAC7D6Q,EAAY9U,KAAO8U,EAAY7U,SAAU,IAEpC,eAAexd,KAAMsyB,IAC1BzzB,EAAGse,GAAO5Z,KAAM4uB,EAAUpO,EAAUuO,MAMvCC,MAAO,WACNvpB,EAAK3J,QAAQkE,KAAM,OAAQ1E,EAAEC,OAAOmK,KAAKC,aAAa4Y,eAIxDjjB,GAAEC,OAAOkK,KAAOA,GAEbjK,GAGJ,SAAWF,EAAGM,GACdN,EAAEC,OAAO+N,UAET,IAAI2lB,GAAiB3zB,EAAEqQ,OAItBujB,EAA2B5zB,EAAEC,OAAOmN,UAErCpN,GAAEqQ,OAAS,SAAWjN,GACrB,MAAO,YACN,GAAI6K,GAAc7K,EAAKM,MAAOvD,KAAMwD,WACnC3C,EAAOiN,EAAY3G,UAAU4G,UAO9B,OALAD,GAAYL,aAAmBK,EAAY3G,UAAUsG,eAAiBtN,EACrE2N,EAAY3G,UAAUsG,aAAe,kBAAoB5M,EAAO,KAEjEhB,EAAEC,OAAO+N,QAAShN,GAASiN,EAEpBA,IAELjO,EAAEqQ,QAGNrQ,EAAE+B,OAAQ/B,EAAEqQ,OAAQsjB,GAGpB3zB,EAAEC,OAAOG,SAASkhB,GAAI,SAAU,SAAU9a,GACzCxG,EAAGwG,EAAMmL,QAASzE,kBAGnBlN,EAAEqQ,OAAQ,eACTxI,SACCiQ,MAAO,IACP+b,UAAU,EAGVC,kBAAmB9zB,EAAEC,OAAOmN,WAG5B2mB,aAAc,KACdC,UAAU,GAKXnjB,cAAe,WACd7Q,EAAE4Q,OAAOtJ,UAAUuJ,cAAcnN,MAAOvD,KAAMwD,WAC9CxD,KAAKkT,SAAU,SAGhBD,QAAS,WAER,MAAKjT,MAAKkT,SAAU,mBAAqB,GACjC,GAGFlT,KAAK0H,QAAQmsB,UAClB7zB,KAAK8zB,WAGN9zB,KAAK4S,IAAK5S,KAAKK,SACd0zB,eAAgB,4BAChBC,eAAgB,0BAGjBh0B,KAAKK,QAAQ0M,qBAE6C,WAArDlN,EAAEC,OAAOiM,aAAc/L,KAAKK,QAAQ,GAAI,SAAyBR,EAAEC,OAAOm0B,QAC9Ej0B,KAAKK,QAAQ4zB,YAIfH,SAAU,WACT,GAAII,GAAa,QAAUr0B,EAAEC,OAAOsI,GACnC2R,EAAO/Z,IAEHA,MAAK0H,QAAQysB,MACjBn0B,KAAKK,QAAQkE,KAAM,QAAU1E,EAAEC,OAAOsI,GAAK,OAAQpI,KAAK0H,QAAQysB,MAGjEn0B,KAAKK,QACHkE,KAAM,WAAY,KAClBwQ,SAAU,yBAA2B/U,KAAK0H,QAAQiQ,OAGpD3X,KAAKK,QAAQmN,KAAM,IAAM0mB,EAAa,mBAAoB/wB,KAAM,WAC/D,GAAI2qB,GAAQjuB,EAAGG,MACd2X,EAAQ3X,KAAK+L,aAAcmoB,EAAa,UAAa/zB,CACrD4Z,GAAKrS,QAAQksB,aAAejc,GAASoC,EAAKrS,QAAQksB,cAAkB7Z,EAAKrS,QAAQusB,QAAUla,EAAKrS,QAAQiQ,OAA8C,WAAjCoC,EAAK1Z,QAAQ0J,QAAQ,SAAyBgQ,EAAKrS,QAAQiQ,MAChLmW,EAAM/Y,SAAU,cACXgF,EAAKrS,QAAQksB,cACjB9F,EAAM/Y,SAAU,WAAegF,EAAKrS,QAAqB,cAG1DomB,EAAMvpB,KAAM,OAAQ,QAASwQ,SAAU,iBAI1Cqf,WAAY,SAAUhf,GACrB,GAAIxN,GAAO5H,KAAKK,SAGVuH,EAAK3D,KAAM,eAAgByD,QAAQgsB,UACxC9rB,EAAKwrB,GAAI,mCAGTxrB,EAAKxB,KAAM,kBAAmBgP,GAAY,SAAUlK,EAAGjH,GAGtD,IAAKA,EAAKowB,SAAU,CACnB,GAAIvG,GAAQjuB,EAAGG,MACds0B,EAAU,GAAIz0B,GAAEwV,MAAO,aAExByY,GAAMtkB,QAAS8qB,GAETA,EAAQ/e,sBACbuY,EAAMhhB,2BAOX4G,YAAa,SAAU0a,GACjBA,EAAEzW,QAAUxX,GAChBH,KAAKK,QAAQsK,YAAa,iBAAmB3K,KAAK0H,QAAQiQ,OAAQ5C,SAAU,iBAAmBqZ,EAAEzW,OAG7FyW,EAAEwF,eAAiBzzB,GACvBH,KAAKK,QAAQmN,KAAM,SAAW3N,EAAEC,OAAOsI,GAAK,eAAgBuC,YAAa,WAAa3K,KAAK0H,QAAQksB,cACjG7e,SAAU,WAAaqZ,EAAEwF,eAI7BW,sBAAuB,WACtBv0B,KAAKw0B,0BAGNC,0BAA2B,WAC1Bz0B,KAAKK,QAAQyJ,QAAS,yBAA0B8O,eAAgBjB,MAAS,UAI1E6c,uBAAwB,SAAU7c,GACjC3X,KAAKK,QAAQwG,SAAS+R,eAAiBjB,MAASA,GAAS3X,KAAK0H,QAAQiQ,SAGvEzK,mBAAoB,WACnB,GAAIxF,GAAU1H,KAAK0H,QAClBuF,EAAapN,EAAE60B,KAAMhtB,EAAQuF,YAAc,IAC3C0nB,EAAc90B,EAAE60B,KAAM70B,EAAEC,OAAOmN,YAC/B2nB,EAAc/0B,EAAE60B,KAAMhtB,EAAQisB,mBAG9BkB,EAAepB,IAA6BkB,EAC3C,GAAKA,EAGNG,EAA8B,KAAfD,EAAoBD,EAAc,EAIlD,QAAW3nB,GAAeA,OACxBtE,OAAQksB,GAAeA,OACvBlsB,OAAQmsB,GAAeA,OACvBrgB,KAAM,UAGN1U,GAEJ,SAAWF,EAAGM,GAEbN,EAAEqQ,OAAQ,wBACTxI,SACCiQ,MAAO,KAGRlK,cAAc,EAEdwF,QAAS,WACRjT,KAAKkT,SAAU,gBACflT,KAAK+0B,sBAAuB,EAE5B/0B,KAAK4S,IAAK5S,KAAKE,QAKdmhB,SAAU,uBAIV4P,WAAY,yBAMbjxB,KAAK4S,IAAK5S,KAAKE,QAAUmhB,SAAU,0BAGnCrhB,KAAK4S,KAAMoiB,WAAY,wBAGvBh1B,KAAKE,OAAOsa,IAAK,WAAY3a,EAAEwY,MAAM,WACpCrY,KAAK+0B,sBAAuB,GAC1B/0B,QAGJ0T,YAAa,SAAUhM,GACjBA,EAAQiQ,QAAUxX,GAA+B,SAAlBuH,EAAQiQ,MAC3C3X,KAAKK,QAAQsK,YAAa,cAAgB3K,KAAK0H,QAAQiQ,OACrD5C,SAAU,cAAgBrN,EAAQiQ,OACzBjQ,EAAQiQ,QAAUxX,GAC7BH,KAAKK,QAAQsK,YAAa,cAAgB3K,KAAK0H,QAAQiQ,OAGxD3X,KAAK+Q,OAAQrJ,IAGdutB,qBAAsB,WACrBj1B,KAAK+0B,sBAAuB,GAG7BG,oBAAqB,WACpBl1B,KAAK+0B,sBAAuB,GAI7BI,oBAAqB,WAEpBn1B,KAAK+0B,sBAAuB,EAK5B/0B,KAAKwU,KAAMxU,KAAKE,OAAQ,cAIxBF,KAAK4S,IAAK5S,KAAKE,QAAU+wB,WAAY,0BAGtCmE,cAAe,WAGd,GAAMp1B,KAAK+0B,qBAAX,CAIA,GACCM,GAAeC,EAAWC,EADvBC,EAASx1B,KAAKy1B,mBAGbD,KACJH,EAAgBr1B,KAAK01B,aACrBJ,EAAYt1B,KAAK21B,gBACjBJ,EAAgBv1B,KAAK41B,oBAIrBJ,EAAOK,WAA6BP,EAAhBD,EAA4BE,EAAgBF,KAIlES,qBAAsB,WACrBzyB,WAAYxD,EAAEwY,MAAMrY,KAAM,iBAAkB,MAG7C01B,WAAY,WACX,MAAO11B,MAAKE,OAAO+X,aAGpB0d,cAAe,WACd,MAAO91B,GAAEC,OAAOmP,eAGjB2mB,kBAAmB,WAClB,MAAO/1B,GAAEC,OAAOqJ,mBAGjB4sB,sBAAuB,SAAU7qB,EAAGjH,GACnC,GAAI4F,EAECqB,GAAEoK,eAAiBpK,EAAEoK,cAAcC,uBAIxC1L,EAAMqB,EAAEoK,cAAcnQ,KAAKkS,QAAS,cAAiB,GAAKpT,EAAK4d,MAAMpI,KAAOxV,EAAK4d,MAAMhY,IAEjFA,IACLA,EAAM7J,KAAKg2B,YAGNnsB,GAAe,MAARA,GAAiE,IAAlDA,EAAIwN,QAAS,IAAMxX,EAAEC,OAAOmK,KAAKiY,cAC5DrY,EAAMiP,SAAShY,MAGhBd,KAAKi2B,gBAAiBpsB,EAAK5F,EAAK4d,SAGjCmU,SAAU,WACT,MAAOn2B,GAAEC,OAAOmK,KAAK4Y,gBAAgBpJ,MAItCyc,cAAe,WACd,MAAOl2B,MAAKm2B,YAKbC,mBAAoB,WACnB,MAAOv2B,GAAEC,OAAOwmB,WAIjB+P,YAAa,WACZ,MAAOx2B,GAAEC,OAAOuhB,SAASjB,SAG1BqV,kBAAmB,WAClB,MAAOz1B,MAAKq2B,cAAcvP,aAI3BwP,iBAAkB,WACjB,MAAOz2B,GAAEC,OAAOmK,KAAKC,cAGtBwd,KAAM,WACL1nB,KAAKsoB,GAAI,KAGVX,QAAS,WACR3nB,KAAKsoB,GAAI,IAGVA,GAAI,SAAUiO,GAGb,GAAK12B,EAAEC,OAAO+O,qBACb3O,EAAOkgB,QAAQkI,GAAIiO,OACb,CAGN,GAAI1P,GAAchnB,EAAEC,OAAOuhB,SAASjB,QAAQyG,YAC3Che,EAAQge,EAAcjgB,SAAU2vB,EAAO,IACvC1sB,EAAMhK,EAAEC,OAAOuhB,SAASjB,QAAQwG,MAAO/d,GAAQgB,IAC/Ckf,EAAcwN,GAAS,EAAK,UAAY,MAGzC12B,GAAEC,OAAOuhB,SAASjB,QAAQyG,YAAche,EACxChJ,EAAEC,OAAOuhB,SAASjB,QAAQ4G,cAAgBH,EAG1C7mB,KAAKw2B,OAAQ3sB,GAAOkf,UAAWA,EAAW0N,YAAY,EAAOC,gBAAgB,MAK/EC,mBAAoB,SAAUC,GAC7B,GAAIxW,EAqBJ,OAlBoB,WAAfvgB,EAAEsF,KAAKyxB,KACXA,EAAK/2B,EAAEC,OAAOmK,KAAK+a,UAAW4R,IAG1BA,IACJxW,EAAUpgB,KAAKq2B,cAWfO,EAAM/2B,EAAEC,OAAOmK,KAAKI,OAAQusB,GAAgFA,EAAvE/2B,EAAEC,OAAOmK,KAAKK,gBAAiB,IAAMssB,EAAI52B,KAAKs2B,qBAE7EM,GAAM52B,KAAKo2B,sBAGnBS,uBAAwB,SAAU9N,EAAW+N,GAC5C,GAAI1W,GAAUpgB,KAAKq2B,cAClBhP,EAAwB,SAAd0B,EAAuB3I,EAAQ2G,UAAY3G,EAAQ0G,WAE9D,OAASO,IAASA,EAAM4B,YAAgB6N,GAGzCC,cAAe,SAAUC,EAAmB/yB,GAC3C,GAAI2yB,GAAIpB,EAAQyB,EAAgBj3B,KAAKk2B,eAOrC,OAAKe,KAAkBA,EAAchzB,KAAM,kBAGlB,SAAnBA,EAAK8kB,UACT/oB,KAAK0nB,OAEL1nB,KAAK2nB,WAIC,IAIPiP,EAAK3yB,EAAKizB,QACV1B,EAASx1B,KAAKy1B,oBAId51B,EAAE+B,OAAQo1B,GACT7C,KAAMqB,EAAOrB,KACblL,WAAYjpB,KAAK62B,uBAChB5yB,EAAK8kB,UACLiO,EAAkB/N,YACnBkO,QAA4B,SAAnBlzB,EAAK8kB,YAIT6N,IAGRX,gBAAiB,SAAUpsB,EAAK5F,GAG/B,GAAI2yB,GAAK/2B,EAAEC,OAAOmK,KAAK+a,UAAWnb,GAAOuW,EAAUpgB,KAAKq2B,cAIvDpN,EAAsC,IAAzB7I,EAAQwG,MAAMplB,OAAe,OACzCxB,KAAK62B,uBAAwB5yB,EAAK8kB,WAKnCiO,GACCP,YAAY,EACZC,gBAAgB,EAChBS,QAA4B,SAAnBlzB,EAAK8kB,UAGhBlpB,GAAE+B,OAAQo1B,EAAmB/yB,GAC5BglB,WAAYA,IAOR7I,EAAQyG,YAAc,GAC1B+P,EAAGvf,QAASxX,EAAEC,OAAO6P,eAAkB,KAEvCinB,EAAK52B,KAAK+2B,cAAeC,EAAmB/yB,GAEvC2yB,KAAO,IAKb52B,KAAKo3B,eAAgBp3B,KAAK22B,mBAAoBC,GAAMI,IAGrDI,eAAgB,SAAUR,EAAIrP,GAC7B1nB,EAAEC,OAAOu3B,WAAYT,EAAIrP,IAG1B+P,SAAU,WACT,MAAOz3B,GAAEC,OAAOkK,MAGjButB,OAAQ,WACP,MAAO13B,GAAEC,OAAOsI,IAGjB0rB,SAAU,SAAU0D,EAASrD,GAG5B,MAAOqD,GAAQ5vB,MAAOusB,KAAMA,KAG7BsD,SAAU,SAAU7vB,EAAM8vB,GAEzB9vB,EAAK+Q,SAAU3Y,KAAKK,SAGpBL,KAAK8zB,SAAUlsB,EAAM8vB,EAASvD,MAG9BvsB,EAAKA,KAAM,eAGZ+vB,MAAO,SAAUzT,GAEhB,GAECtc,GAFGgwB,EAAU53B,KAAK63B,eAAgB3T,GAClC4T,EAAU93B,KAAK+3B,eAAgB7T,GACzB8T,EAAiBh4B,KAAKo2B,oBAgC7B,OA3BAxuB,GAAO5H,KAAKK,QACVkI,SAAU,SAAWvI,KAAKu3B,SAC1B,QAAU13B,EAAEC,OAAOmK,KAAK+b,eAAgB8R,GAAY,MAMjC,IAAhBlwB,EAAKpG,QAAgBs2B,IAAYj4B,EAAEC,OAAOmK,KAAKI,OAAQytB,KAC3DlwB,EAAO5H,KAAKK,QAAQkI,SAAU1I,EAAEC,OAAOmK,KAAK+b,eAAe,IAAM8R,IAC/DvzB,KAAM,QAAUvE,KAAKu3B,SAAW,MAAOO,GACvC/tB,QAAS,MAAO+tB,IASE,IAAhBlwB,EAAKpG,QACT3B,EAAEC,OAAOmK,KAAKkc,eAAgByR,IAC9BI,GACAA,EAAenxB,SAASrF,SACxBoG,EAAO/H,EAAGm4B,IAGJpwB,GAGRqwB,WAAY,WACX,MAAOp4B,GAAEC,OAAOuM,WAGjB6rB,aAAc,SAAUh1B,EAAOyU,EAAOwgB,EAAK3f,GAGrCxY,KAAKo4B,WAIVp4B,KAAKo4B,SAAW/0B,WAAWxD,EAAEwY,MAAM,WAClCrY,KAAKi4B,aAAa3rB,OAAQ,OAAQqL,EAAOwgB,EAAK3f,GAC9CxY,KAAKo4B,SAAW,GACdp4B,MAAOkD,KAGXm1B,aAAc,WAEbne,aAAcla,KAAKo4B,UACnBp4B,KAAKo4B,SAAW,EAGhBp4B,KAAKi4B,aAAa3rB,OAAQ,SAG3BgsB,WAAY,WAEXt4B,KAAKq4B,eAGLr4B,KAAKk4B,aAAc,EAAGr4B,EAAEC,OAAOsP,0BAA2BvP,EAAEC,OAAOqP,sBAAsB,GAIzF9L,WAAYxD,EAAEwY,MAAMrY,KAAM,gBAAiB,OAG5Cu4B,OAAQ,SAAUrqB,EAAM0pB,GAEvB,GAAIhwB,GAAMsY,EAAMrgB,EAAG,cAoBnB,OAjBAqgB,GAAI/N,IAAK,GAAI6J,UAAY9N,EAEzBtG,EAAOsY,EAAI1S,KAAM,kDAAmDuK,QAG9DnQ,EAAKpG,SACVoG,EAAO/H,EAAG,aAAeG,KAAKu3B,SAAW,gBACtCrpB,EAAKsC,MAAO,qBAAsB,IAAM,IAC1C,WAMF5I,EAAKrD,KAAM,QAAUvE,KAAKu3B,SAAW,MAAOv3B,KAAK+3B,eAAgBH,IAC/DrzB,KAAM,QAAUvE,KAAKu3B,SAAW,iBAAiB,GAE5C3vB,GAGR4wB,gBAAiB,SAAU5wB,EAAMsG,GAEhC,GAAIuqB,GAAevqB,EAAK7J,MAAO,wBAA2Bq0B,OAAOC,EAE5DF,KAAiB7wB,EAAKmC,QAAQ,WAClC0uB,EAAe54B,EAAG,QAAU44B,EAAe,UAAWxqB,OACtDrG,EAAKmC,QAAS,QAAS0uB,KAIzBG,qBAAsB,WACrB,MAAO/4B,GAAEC,OAAOsK,qBAAuBvK,EAAEmG,QAAQ2a,gBAGlDoX,eAAgB,SAAUc,GACzB,MAAOh5B,GAAEC,OAAOmK,KAAK2a,oBAAqBiU,IAG3ChB,eAAgB,SAAUgB,GACzB,MAAOh5B,GAAEC,OAAOmK,KAAKic,YAAa2S,IAGnCC,uBAAwB,SAAUj4B,EAAMoD,EAAM2D,GAC7C,GAAImxB,GAAkBl5B,EAAEwV,MAAO,OAASxU,GACvC8gB,EAAW9hB,EAAEwV,MAAOrV,KAAK+N,WAAalN,EASvC,QALE+G,GAAQ5H,KAAKK,SAAUmJ,QAASuvB,EAAiB90B,GAGnDjE,KAAKkT,SAAUrS,EAAM8gB,EAAU1d,IAG9B80B,gBAAiBA,EACjB1yB,MAAOsb,IAOTqX,aAAc,SAAU9U,EAAQ+U,EAAavB,EAAUwB,GACtD,GAAItB,GAAU53B,KAAK63B,eAAgB3T,EAEnC,OAAOrkB,GAAEwY,MAAM,SAAUnK,EAAMirB,EAAYC,GAG1C,GAAI5B,GAGH6B,EAAgB,GAAIX,QAAQ,kBAAoB14B,KAAKu3B,SAAW,gCAEhE+B,EAAe,GAAIZ,QAAQ,WAAa14B,KAAKu3B,SAAW,6BAKpD8B,GAAcr4B,KAAMkN,IACxBwqB,OAAOC,IACPW,EAAat4B,KAAM03B,OAAOC,KAC1BD,OAAOC,KACPf,EAAU/3B,EAAEC,OAAOmK,KAAKic,YAAarmB,EAAE,QAAU64B,OAAOC,GAAK,UAAU1qB,QAKvE2pB,EAAU53B,KAAKE,OAAQ,GAAIq5B,mBAAoB3B,IAI3CF,EAAS8B,WAAar5B,GAC1BH,KAAKs3B,WAAWrwB,IAAK2wB,GAGtBJ,EAAUx3B,KAAKu4B,OAAQrqB,EAAM0pB,GAE7B53B,KAAKw4B,gBAAiBhB,EAAStpB,GAG/B+qB,EAAYG,IAAMA,EAClBH,EAAYE,WAAaA,EAGzBF,EAAYrxB,KAAO4vB,EAEnByB,EAAYzB,QAAUA,EAEtByB,EAAYQ,OAASjC,EAMhBx3B,KAAK84B,uBAAwB,OAAQG,GAAc5yB,MAAMkP,uBAKzDvV,KAAK44B,wBAA0BpB,GACnCx3B,KAAKs3B,WAAWpE,QAAS0E,EAASJ,GAGnCx3B,KAAKy3B,SAAUD,EAASE,GAGnBA,EAASgC,aACb15B,KAAKq4B,eAGNa,EAASS,QAASzV,EAAQwT,EAAUF,KAClCx3B,OAGJ45B,eACCz0B,KAAM,MACNlB,KAAM9D,EAGN05B,YAAY,EAEZC,QAAQ,EAGR3F,KAAMh0B,EAENu5B,aAAa,EAIbK,aAAc,IAGfC,KAAM,SAAUnwB,EAAKnC,GAGpB,GAmBCkwB,GAASE,EAASmC,EAAUhB,EAnBzBC,EAAaxxB,GAAWA,EAAQwxB,UAAcr5B,EAAEq6B,WAKnDC,EACKzyB,GAAWA,EAAQoyB,SAAW35B,GACjCuH,EAAQmyB,aAAe15B,GACpB25B,OAAQpyB,EAAQmyB,eAGrBnC,EAAW73B,EAAE+B,UAAY5B,KAAK45B,cAAelyB,EAASyyB,GAGtD3C,EAAU,KAIVtT,EAASrkB,EAAEC,OAAOmK,KAAKK,gBAAiBT,EAAK7J,KAAKo6B,uBA8BnD,OAzBK1C,GAASzzB,MAA0B,QAAlByzB,EAASvyB,OAC9B+e,EAASrkB,EAAEC,OAAOmK,KAAKqa,gBAAiBJ,EAAQwT,EAASzzB,MACzDyzB,EAASzzB,KAAO9D,GAIZu3B,EAASzzB,MAA0B,SAAlByzB,EAASvyB,OAC9BuyB,EAASoC,QAAS,GAKnBlC,EAAU53B,KAAK63B,eAAgB3T,GAO/B4T,EAAU93B,KAAK+3B,eAAgB7T,GAE/BsT,EAAUx3B,KAAK23B,MAAOzT,GAIE,IAAnBsT,EAAQh2B,QACZ3B,EAAEC,OAAOmK,KAAK4a,eAAe+S,KAC5B/3B,EAAEC,OAAOmK,KAAKkc,eAAeyR,IAC9BsB,EAASmB,OAAQnW,EAAQwT,GAClBwB,EAASoB,YAKjBt6B,KAAKs3B,WAAW/D,QAMXiE,EAAQh2B,SAAWk2B,EAASoC,QAChC95B,KAAK8zB,SAAU0D,EAASE,EAASvD,MACjC+E,EAASS,QAASzV,EAAQwT,EAAUF,GAI9BE,EAAS8B,UACdx5B,KAAKs3B,WAAWrwB,IAAI4C,GAGdqvB,EAASoB,YAGjBrB,GACCpvB,IAAKA,EACLqa,OAAQA,EACRuV,OAAQ5vB,EACR0wB,SAAU7yB,EAAUA,EAAQ8yB,SAAWr6B,EACvC23B,QAASA,EACToB,SAAUA,EACVxxB,QAASgwB,GAIVuC,EAAWj6B,KAAK84B,uBAAwB,aAAcG,GAGjDgB,EAASlB,gBAAgBxjB,sBAC7B0kB,EAAS5zB,MAAMkP,qBACR2jB,EAASoB,WAGZ5C,EAASgC,aACb15B,KAAKk4B,aAAcR,EAASqC,cAKxBrC,EAAS8B,WAAar5B,GAC1BH,KAAKs3B,WAAW/D,QAGT1zB,EAAEC,OAAO4P,uBAChB7P,EAAEC,OAAOmK,KAAK2Z,aAAa/jB,EAAEC,OAAOmK,KAAK2Y,YAAasB,IAMvDrkB,EAAE46B,MACD5wB,IAAK+tB,EACLzyB,KAAMuyB,EAASvyB,KACflB,KAAMyzB,EAASzzB,KACfy2B,YAAahD,EAASgD,YACtBC,SAAU,OACVC,QAAS56B,KAAKg5B,aAAc9U,EAAQ+U,EAAavB,EAAUwB,GAC3D9mB,MAAOpS,KAAK66B,WAAY3W,EAAQ+U,EAAavB,EAAUwB,KAGjDA,EAASoB,YAffpB,EAASmB,OAAQnW,EAAQwT,GAClBwB,EAASoB,eAiBlBO,WAAY,SAAU3W,EAAQ+U,EAAavB,EAAUwB,GACpD,MAAOr5B,GAAEwY,MAAM,SAAU+gB,EAAKD,EAAY2B,GAEzC96B,KAAKs3B,WAAWrwB,IAAKpH,EAAEC,OAAOmK,KAAKkI,OAGnC8mB,EAAYG,IAAMA,EAClBH,EAAYE,WAAaA,EACzBF,EAAY6B,YAAcA,CAG1B,IAAIC,GAAW/6B,KAAK84B,uBAAwB,aAAcG,EAMrD8B,GAAShC,gBAAgBxjB,sBAC7BwlB,EAAS10B,MAAMkP,uBAKXmiB,EAASgC,aACb15B,KAAKs4B,aAGNY,EAASmB,OAAQnW,EAAQwT,KACvB13B,OAGJg7B,sBAAuB,SAAU/R,GAMhC,MALAA,GAAappB,EAAEC,OAAOm7B,wBAAyBhS,GAKxCppB,EAAEC,OAAOo7B,mBAAoBjS,IAAgBppB,EAAEC,OAAOq7B,0BAI9DC,4BAA6B,SAAUxE,EAAIyE,EAAM/R,GAChD,GAAI+K,IAAW,CAEf/K,GAASA,GAAU,GAGd+R,IAGAzE,EAAG,KAAOyE,EAAK,KAClBhH,GAAW,GAKZr0B,KAAK84B,uBAAwBxP,EAAS,QAGrCgS,SAAU1E,EACV6C,OAAQ7C,EACR2D,SAAUc,EACVhH,SAAUA,GACRgH,IAIJr7B,KAAK84B,uBAAwBxP,EAAS,QACrCiR,SAAUc,GAAQx7B,EAAG,IACrB45B,OAAQ7C,GACNA,IAIJ2E,eAAgB,SAAU3E,EAAIyE,EAAM3zB,GACnC,GAGC8zB,GACAlB,EAJGrR,EAAavhB,EAAQuhB,WACxBkO,EAAUzvB,EAAQyvB,QAClB+B,EAAWxxB,EAAQwxB,QAIpBl5B,MAAKo7B,4BAA6BxE,EAAIyE,EAAM,UAG5Cr7B,KAAKq4B,eAELmD,EAAoBx7B,KAAKg7B,sBAAuB/R,GAEhDqR,EAAU,GAAMkB,GAAmBvS,EAAYkO,EAASP,EAAIyE,GAASpS,aAErEqR,EAAQmB,KAAM57B,EAAEwY,MAAO,WACtBrY,KAAKo7B,4BAA6BxE,EAAIyE,IACpCr7B,OAGHs6B,EAAQmB,KAAK,WACZvC,EAASS,QAAQp2B,MAAO21B,EAAU11B,cAIpCk4B,uBAAwB,WAEvBC,GAAsB,EACjBC,EAAoBp6B,OAAS,GACjC3B,EAAEC,OAAOu3B,WAAW9zB,MAAO,KAAMq4B,EAAoBnoB,QAIvDooB,uBAAwB,SAAUC,GAEjCj8B,EAAEC,OAAOyK,sBAAuBuxB,IAGjCC,SAAU,SAAUnF,EAAIqC,EAAavB,GAMpCA,EAASlmB,OAASolB,EAClBc,EAASwB,SAAWr5B,EAAEq6B,WAEtBl6B,KAAKg6B,KAAMpD,EAAIc,GAEfA,EAASwB,SAASuC,KAAK57B,EAAEwY,MAAM,SAAUxO,EAAKnC,EAAS8vB,GACtDmE,GAAsB,EAItBj0B,EAAQwc,OAAS+U,EAAY/U,OAE7BlkB,KAAKipB,WAAYuO,EAASyB,EAAavxB,IACrC1H,OAEH03B,EAASwB,SAAS8C,KAAKn8B,EAAEwY,MAAM,WAC9BrY,KAAK67B,wBAAwB,GAC7B77B,KAAK07B,yBACL17B,KAAK84B,uBAAwB,eAAgBG,IAC3Cj5B,QAGJi8B,yBAA0B,SAAUrF,EAAIqC,EAAavB,GACpD,GAAIwE,EA0BJ,OAxBAjD,GAAYsB,SAAWv6B,KAAKm2B,WAC5Bt2B,EAAE+B,OAAQq3B,GACTQ,OAAQ7C,EACRlvB,QAASgwB,IAUTuB,EAAY/U,OAFO,WAAfrkB,EAAEsF,KAAKyxB,GAEU/2B,EAAEC,OAAOmK,KAAKK,gBAAiBssB,EAAI52B,KAAKo6B,wBAIxC1C,EAASxT,OAI/BgY,EAAel8B,KAAK84B,uBAAwB,eAAgBG,GAGvDiD,EAAa71B,MAAMkP,sBACvB2mB,EAAanD,gBAAgBxjB,sBACtB,GAGD,GAGRihB,OAAQ,SAAUI,EAAIlvB,GAIrB,GAAKi0B,EAEJ,WADAC,GAAoBO,QAAS34B,UAI9B,IAAIk0B,GAAW73B,EAAE+B,UAAY/B,EAAEC,OAAOu3B,WAAW+E,SAAU10B,GAC1DuxB,IAGDvB,GAAS8C,SAAW9C,EAAS8C,UAAYx6B,KAAKm2B,WAGxCn2B,KAAKi8B,yBAAyBrF,EAAIqC,EAAavB,KAQrDd,EAAKqC,EAAYQ,OAMG,WAAf55B,EAAEsF,KAAKyxB,IAIX+E,GAAsB,EAEtB37B,KAAK+7B,SAAUnF,EAAIqC,EAAavB,IAEhC13B,KAAKipB,WAAY2N,EAAIqC,EAAavB,KAIpCzO,WAAY,SAAUwQ,EAAQR,EAAavB,GAC1C,GAAI8C,GAAU3wB,EAAKqtB,EAASU,EAC3BpC,EAAQ6G,EACRC,EAAYC,EAAWC,EACvBC,EAAchE,EACdlU,EAAQmY,EACRC,CAKD,IAAKhB,EAIJ,WADAC,GAAoBO,SAAU1C,EAAQ/B,GAMvC,IAAM13B,KAAKi8B,yBAAyBxC,EAAQR,EAAavB,KAIzDuB,EAAYsB,SAAW7C,EAAS8C,SAGhCmC,EAAmB38B,KAAK84B,uBAAwB,mBAAoBG,IAChE0D,EAAiB5D,gBAAgBxjB,uBACpConB,EAAiBt2B,MAAMkP,sBADxB,CA+CA,GAvCAomB,GAAsB,EAMjBlC,EAAQ,KAAQ55B,EAAEC,OAAOwmB,UAAW,IAAQoR,EAASI,UACzDJ,EAASI,QAAUj4B,EAAEC,OAAOmK,KAAK2Y,YAAYzY,YAK9CqwB,EAAW9C,EAAS8C,SACpB3wB,EAAQ6tB,EAASI,SAAWj4B,EAAEC,OAAOmK,KAAK2a,oBAAoB8S,EAASI,UACtE2B,EAAO1vB,QAAS,OAIjBmtB,EAAUrtB,EACV+tB,EAAU/3B,EAAEC,OAAOmK,KAAKic,YAAarc,GACrC2rB,EAAS31B,EAAEC,OAAOuhB,SAASjB,QAAQ0G,YACnCuV,EAAgE,IAA1Cx8B,EAAEC,OAAOuhB,SAASjB,QAAQyG,YAChDyV,EAAa,EACbC,EAAYt8B,EAAS4a,MACrB2hB,GAA+B,WAAlB9E,EAASvD,MACQ,WAA7BsF,EAAO1vB,QAAS,UAChB0vB,EAAO1vB,QAAS,aAAe,EAa3BywB,GAAYA,EAAS,KAAOf,EAAO,KACtC/B,EAASkF,wBAYV,MAVAjB,IAAsB,EACtB37B,KAAK84B,uBAAwB,aAAcG,GAC3Cj5B,KAAK84B,uBAAwB,SAAUG,QAIlCvB,EAAShB,gBACb72B,EAAEC,OAAOuhB,SAASjB,QAAQkH,QAASzd,IAAKA,IAO1C4vB,GAAO7xB,MAAOusB,KAAMuD,EAASvD,OAMxBuD,EAAShB,iBACb4F,EAAoC,SAAvB5E,EAAS3O,UAAuB,GAAK,EAUnD,KACM9oB,EAAS48B,eACqC,SAAlD58B,EAAS48B,cAAcn8B,SAASC,cAEhCd,EAAGI,EAAS48B,eAAgBC,OAE5Bj9B,EAAG,6CAA8Ci9B,OAEjD,MAAO5xB,IAITuxB,GAAe,EAKVD,GAAYhH,IAYXA,EAAO3rB,KACX2rB,EAAO3rB,IAAIwN,QAASxX,EAAEC,OAAO6P,eAAkB,IAC/C3P,KAAKm2B,aACJn2B,KAAKm2B,WAAW/hB,SAAU,cAC3BvU,EAAEC,OAAOuhB,SAASjB,QAAQyG,YAAc,IAExC6Q,EAASjB,YAAa,EACtBgG,GAAe,GAKhB5yB,EAAQ2rB,EAAO3rB,KAAO,GAIrBA,IADK4yB,GAAgB5yB,EAAIwN,QAAQ,KAAO,GACjCxX,EAAEC,OAAO6P,cAET,IAAM9P,EAAEC,OAAO6P,eAOxB8oB,EAAkBjD,EAAuBiE,EAAO1vB,QAAS,UACxD0vB,EAAOlxB,SAAU,2BAA4BiF,KAAM,aAAcS,OADrCsuB,EAEtB9D,GAAgB8D,IAAct8B,EAAS4a,QAC7C0hB,EAAY9D,GAEPgB,EAAO1vB,QAAS,UACrB0vB,EAAO1vB,QAAS,QAASwyB,GAI1B7E,EAASzO,WAAayO,EAASzO,aAC1BqT,IAAeD,EAAwB7G,EAAOvM,WAAa9oB,KAC7Dq8B,EAAW38B,EAAEC,OAAOoP,wBAA0BrP,EAAEC,OAAOiP,wBAGpDutB,GAAcG,IACnB58B,EAAEC,OAAOuhB,SAASjB,QAAQ0G,YAAYoQ,QAAUA,GAI5CrtB,IAAQ6tB,EAAShB,kBAIf72B,EAAEC,OAAOmK,KAAKI,OAAQR,IAASA,EAAIwN,QAAS,KAAQ,IACzDxN,EAAM,IAAMA,GAIb0a,GACC0E,WAAYyO,EAASzO,WACrBpO,MAAO0hB,EACPrF,QAASA,EACT/C,KAAMuD,EAASvD,MAGXuD,EAASjB,cAAe,GAAS52B,EAAEC,OAAO+O,qBAC9ChP,EAAEC,OAAOuhB,SAAUrhB,KAAKE,OAAQ,GAAI68B,UAAWlzB,GAAO0a,GAAQ,GACnDkV,EAAQ,KAAQ55B,EAAEC,OAAOwmB,UAAW,IAC/CzmB,EAAEC,OAAOuhB,SAASjB,QAAQ5a,IAAKqE,EAAK0a,IAKtCtkB,EAAS4a,MAAQ0hB,EAGjB18B,EAAEC,OAAOq2B,WAAasD,EAGtBz5B,KAAKm2B,WAAasD,EAGlB/B,EAASP,QAAUO,EAASP,SAAwB,EAAbmF,EAEvCI,EAAwB78B,EAAEq6B,WAE1Bl6B,KAAKu7B,eAAe9B,EAAQe,GAC3BvR,WAAYyO,EAASzO,WACrBkO,QAASO,EAASP,QAClB+B,SAAUwD,IAGXA,EAAsBjB,KAAK57B,EAAEwY,MAAM,SAAUxX,EAAMs2B,EAAS6F,EAAKC,EAAOC,GACvEr9B,EAAEC,OAAOyK,wBAGJmtB,EAASyF,qBACbzF,EAASyF,oBAAoB9uB,SAKxB6uB,GACLr9B,EAAEC,OAAOs9B,UAAW3D,GAGrBz5B,KAAK07B,yBACL17B,KAAK84B,uBAAwB,aAAcG,GAC3Cj5B,KAAK84B,uBAAwB,SAAUG,IACrCj5B,SAIJo6B,qBAAsB,WACrB,GAAIiD,GAAgBr9B,KAAKm2B,YACzBt2B,EAAEC,OAAO6J,kBAAmB3J,KAAKm2B,WAClC,OAAOkH,IAAex9B,EAAEC,OAAOmK,KAAKC,aAAaC,cAMlDtK,EAAEC,OAAOw9B,iBAAmBz9B,EAAEq6B,UAI9B,IAAI0B,MAGHD,GAAsB,GAEpB57B,GAEJ,SAAWF,EAAGM,GAsBb,QAASo9B,GAAiB3zB,GACzB,KAAQA,IAQwB,gBAAjBA,GAAIlJ,UAA0D,MAA/BkJ,EAAIlJ,SAASC,gBAG1DiJ,EAAMA,EAAIhJ,UAEX,OAAOgJ,GAjCR,GAAI4zB,GAAmB39B,EAAEq6B,WAGxBuD,EAAe59B,EAAEq6B,WAGjBwD,EAAoB,WAGnBD,EAAa9D,UACb8D,EAAe,MAGhB7a,EAAc/iB,EAAEC,OAAOmK,KAAK2Y,YAG5B+a,EAAgB,IAoBjB99B,GAAEC,OAAO89B,SAAW,SAAU/zB,EAAK0d,GAClC,GAAIsW,EAcJ,OAZAtW,GAAOA,MACPsW,EAActW,EAAK9X,eAAiB5P,EAAEC,OAAO2P,cAI7C8X,EAAK2R,SAAWr5B,EAAEq6B,WAIlB2D,EAAUjlB,cAAe,OAAQ/O,EAAK0d,GAG/BA,EAAK2R,SAASoB,WAYtBz6B,EAAEC,OAAO4nB,KAAO,WACf,GAAIoW,GAAM59B,EAAO4F,SAIZ9F,MAAKqP,2BACTyuB,GACAA,EAAIC,KACJD,EAAIC,IAAIC,YACRF,EAAIC,IAAIC,cAERn+B,EAAEC,OAAO2P,cAAcmJ,cAAe,SAKxC/Y,EAAEC,OAAOs9B,UAAY,SAAWx1B,GAC/B,GAAIq2B,GAAYr2B,EAAK4F,KAAM,eAC1B+uB,EAAY30B,EAAK4F,KAAM,kBAExB,OAAKywB,GAAUz8B,WACdy8B,GAAUj7B,aAINu5B,EAAU/6B,OACd+6B,EAAUv5B,QAEV4E,EAAK5E,UAKPnD,EAAEC,OAAOm7B,wBAA0Bp7B,EAAEC,OAAOm7B,yBAA2B,SAAUhS,GAChF,MAAOA,IAKRppB,EAAEC,OAAOu3B,WAAa,SAAUT,EAAIlvB,GACnC7H,EAAEC,OAAO2P,cAAcmJ,cAAe,SAAUge,EAAIlvB,IAGrD7H,EAAEC,OAAOu3B,WAAW+E,UACnBnT,WAAY9oB,EACZg3B,SAAS,EACTV,YAAY,EACZC,gBAAgB,EAChBvC,KAAMh0B,EACNg9B,oBAAqBh9B,EACrBsP,cAAetP,EACfu5B,aAAa,EACb5B,QAAS33B,EACTq6B,SAAUr6B,EACVy8B,yBAAyB,GAG1B/8B,EAAEC,OAAOo+B,wBAA0B,WAClC,GAAIC,GAAkB,SAAUC,EAAOC,GACtC,GAAIx0B,GAAiBy0B,EAAUC,EAAc7oB,EAApCyB,GAAM,CACf,QAAMtX,EAAEC,OAAO8O,aAEbwvB,EAAMhL,GAAI,4BAGTgL,EAAMjwB,gBAAgB3M,QACvB48B,EAAM75B,KAAM,WACN,GAGRsF,EAAQ8zB,GAAiBA,EAAcp5B,KAAM,eAC5C65B,EAAM75B,KAAM,UACbmR,GAAW0oB,EAAM75B,KAAM,WAAc,OAAQ5D,cAOvCkJ,IAELA,EAAMhK,EAAEC,OAAO6J,kBAAmBy0B,GAIlB,QAAX1oB,IACJ7L,EAAMhK,EAAEC,OAAOmK,KAAKqY,SAAUzY,GAAMiZ,cAGhCjZ,IAAQhK,EAAEC,OAAOmK,KAAKC,aAAaC,aAKvCN,EAAM+Y,EAAYE,eAIpBjZ,EAAMhK,EAAEC,OAAOmK,KAAKK,gBAAkBT,EAAKhK,EAAEC,OAAO6J,kBAAmBy0B,IAEhEv+B,EAAEC,OAAOmK,KAAKob,WAAYxb,KAAUhK,EAAEC,OAAOmK,KAAKuc,8BAA+B5D,EAAa/Y,IAC7F,GAGFw0B,IACLC,EAAWF,EAAMI,iBAEZb,GAAiBA,EAAe,GAAIc,OAASL,EAAO,KACxDG,EAAeZ,EAAcp5B,KAAM,QAC9Bg6B,IAEJ1+B,EAAEsD,KAAMm7B,EAAU,SAAU34B,EAAKgB,GAChC,MAAKA,GAAM9F,OAAS09B,GAEnBA,EAAe,IACR,GAHR,SAMIA,GACJD,EAASj3B,MAAQxG,KAAM09B,EAAc53B,MAAOg3B,EAAcp5B,KAAM,aAKnE4S,GACCtN,IAAKA,EACLnC,SACCvC,KAAOuQ,EACPzR,KAAOpE,EAAE6kB,MAAO4Z,GAChBrV,WAAYmV,EAAMr0B,QAAS,cAC3BotB,QAA0C,YAAjCiH,EAAMr0B,QAAS,aACxB8vB,YAAY,KAKR1iB,IAIRtX,GAAEC,OAAOG,SAASsU,SAAU,OAAQ,SAAU,SAAUlO,GACvD,GAAIi4B,EAEEj4B,GAAMkP,uBACX+oB,EAAWH,EAAiBt+B,EAAGG,OAC1Bs+B,IACJz+B,EAAEC,OAAOu3B,WAAYiH,EAASz0B,IAAKy0B,EAAS52B,SAC5CrB,EAAMC,qBAMTzG,EAAEC,OAAOG,SAASmG,KAAM,SAAU,SAAUC,GAC3C,GAAIq4B,GAAMC,EAAQntB,EAASnL,EAAMmL,OAAQotB,GAAc,CAGvD,MAAKv4B,EAAMkkB,MAAQ,IAAM1qB,EAAEC,OAAOgP,mBAAlC,CASA,GAHA6uB,EAAgB99B,EAAG2R,GAGd3R,EAAEoE,KAAMuN,EAAQ,iBAAoB,CAExC,IAAM2sB,EAAiBt+B,EAAG2R,GAAS1H,QAAS,SAAU,GACrD,MAII0H,GAAO5Q,aACX4Q,EAASA,EAAO5Q,gBAEX,CAEN,GADA4Q,EAAS+rB,EAAiB/rB,IAClBA,GAAkF,MAAxE3R,EAAEC,OAAOmK,KAAKqY,SAAU9Q,EAAOzF,aAAc,SAAY,KAAM0N,KAChF,MAKD,KAAM5Z,EAAG2R,GAASrD,gBAAgB3M,OACjC,QAMMgQ,EAAOnG,UAAUgM,QAAS,mBAC5B7F,EAAO5Q,aACX+9B,EAAS9+B,EAAEoE,KAAMuN,EAAO5Q,WAAY,mBAIrC+9B,EAAS9+B,EAAEoE,KAAMuN,EAAQ,kBAGrBmtB,EACJntB,EAASmtB,EAAOE,MAEhBD,GAAc,EAGfF,EAAO7+B,EAAG2R,GAELotB,IACJF,EAAOA,EAAK50B,QAAS,YAGjB40B,EAAKl9B,OAAS,IACfk9B,EAAKtqB,SAAU,uBAKlBvU,EAAEC,OAAOyK,uBAAuB,GAChC1K,EAAEC,OAAO2K,kBAAoBi0B,EAC7B7+B,EAAEC,OAAO2K,kBAAkBsK,SAAUlV,EAAEC,OAAO8K,oBAKhD/K,EAAEC,OAAOG,SAASmG,KAAM,QAAS,SAAUC,GAC1C,GAAMxG,EAAEC,OAAOgP,qBAAsBzI,EAAMkP,qBAA3C,CAIA,GAOCupB,GAASh+B,EACTi+B,EAAuB1Z,EACvB4D,EAAYkO,EAAShD,EATlBhW,EAAOof,EAAiBl3B,EAAMmL,QACjCwtB,EAAQn/B,EAAGse,GAGX8gB,EAAc,WACb/+B,EAAOmD,WAAW,WAAaxD,EAAEC,OAAOyK,uBAAuB,IAAW,KAgB5E,IATK1K,EAAEC,OAAO2K,mBACb5K,EAAEC,OAAO2K,kBAAmB,KAAQpE,EAAMmL,OAAO5Q,YACjDq+B,IAOK9gB,KAAQ9X,EAAMkkB,MAAQ,IAAMyU,EAAM7wB,gBAAgB3M,OAAxD,CAKA,GAAKw9B,EAAM5L,GAAI,wBAEd,MADAvzB,GAAEC,OAAO4nB,QACF,CASR,IANAoX,EAAUj/B,EAAEC,OAAO6J,kBAAmBq1B,GAGtCl+B,EAAOjB,EAAEC,OAAOmK,KAAKK,gBAAiB00B,EAAMz6B,KAAM,SAAY,IAAKu6B,IAG7Dj/B,EAAEC,OAAO8O,cAAgB/O,EAAEC,OAAOmK,KAAK4a,eAAgB/jB,GAG5D,WAFAm+B,IAaD,MAA4B,KAAvBn+B,EAAKuf,OAAQ,MACdxgB,EAAEC,OAAOmK,KAAKob,WAAYvkB,IAAUjB,EAAEC,OAAOmK,KAAK+Z,cAAeljB,IAAW,CAG/E,GADAA,EAAOA,EAAKwW,QAAS,SAAU,KACzBxW,EAIL,WADAuF,GAAMC,gBAINxF,GAFWjB,EAAEC,OAAOmK,KAAKI,OAAQvJ,GAE1BjB,EAAEC,OAAOmK,KAAKK,gBAAiBxJ,EAAMg+B,GAGrCj/B,EAAEC,OAAOmK,KAAKK,gBAAiB,IAAMxJ,EAAM8hB,EAAYzY,YAmBhE,GAdA40B,EAAwBC,EAAM5L,GAAI,qBAAwB4L,EAAM5L,GAAI,2BAA8B4L,EAAM5L,GAAI,YAY5G/N,EAAa0Z,GAA2Bl/B,EAAEC,OAAOmK,KAAKob,WAAYvkB,KAAWjB,EAAEC,OAAOmK,KAAKuc,8BAA+B5D,EAAa9hB,GAKtI,WAFAm+B,IAMDhW,GAAa+V,EAAMj1B,QAAS,cAC5BotB,EAA2C,YAAjC6H,EAAMj1B,QAAS,cAEtBi1B,EAAMj1B,QAAS,QAGlBoqB,EAAO6K,EAAMz6B,KAAM,QAAU1E,EAAEC,OAAOsI,GAAK,QAAWjI,EAEtDN,EAAEC,OAAOu3B,WAAYv2B,GAAQmoB,WAAYA,EAAYkO,QAASA,EAAShD,KAAMA,EAAMhW,KAAM6gB,IACzF34B,EAAMC,qBAIPzG,EAAEC,OAAOG,SAASsU,SAAU,WAAY,oBAAqB,WAC5D,GAAI2qB,KACJr/B,GAAGG,MAAOwN,KAAM,uBAAwBrK,KAAK,WAC5C,GAAI67B,GAAQn/B,EAAGG,MACd6J,EAAMm1B,EAAMz6B,KAAM,OAEdsF,IAAkC,KAA3BhK,EAAEs/B,QAASt1B,EAAKq1B,KAC3BA,EAAK73B,KAAMwC,GAEXhK,EAAEC,OAAO89B,SAAU/zB,GAAOsqB,KAAM6K,EAAMz6B,KAAM,QAAU1E,EAAEC,OAAOsI,GAAK,OAAQoxB,UAAU,SAMzF35B,EAAEC,OAAO2P,cAAcmJ,gBAGvB/Y,EAAEC,OAAOG,SAASmG,KAAM,WAAY,WAI9Bq3B,EACJA,EAAahC,KAAM57B,EAAEC,OAAOoM,uBAE5BrM,EAAEC,OAAOoM;GAGXrM,EAAEC,OAAOI,OAAOkG,KAAM,kBAAmBvG,EAAEC,OAAOoM,wBAInDrM,EAAG,WAAa29B,EAAiB7D,YAGJ,aAAxB15B,EAASm/B,WACb1B,IAEA79B,EAAEC,OAAOI,OAAO85B,KAAM0D,GAGvB79B,EAAEw/B,KAAM7B,EAAkB39B,EAAEC,OAAOw9B,kBAAmB7B,KAAM,WAAa57B,EAAEC,OAAOo+B,6BAC/En+B,GAGJ,SAAWF,EAAGK,GAIbL,EAAEC,OAAOw/B,WAAa,WACrBt/B,KAAKu/B,KAAKh8B,MAAOvD,KAAMwD,YAGxB3D,EAAE+B,OAAO/B,EAAEC,OAAOw/B,WAAWn4B,WAC5Bq4B,WAAY,kBAEZD,KAAM,SAAU1+B,EAAMs2B,EAAS6F,EAAKC,GACnCp9B,EAAE+B,OAAO5B,MACRa,KAAMA,EACNs2B,QAASA,EACT6F,IAAKA,EACLC,MAAOA,EACP/D,SAAU,GAAIr5B,GAAEq6B,YAIlBuF,UAAW,WACVz/B,KAAKi9B,MACHtyB,YAAa9K,EAAEC,OAAO4K,gBAAkB,mBAAqB1K,KAAKa,MAClEoL,OAAQ,KAIXyzB,aAAc,aACdC,cAAe,aACfC,eAAgB,aAEhBC,OAAQ,WACP7/B,KAAK0/B,eAEL1/B,KAAKg9B,IAAIryB,YAAa,kBAAoB3K,KAAKa,MAAOoL,OAAQ,IAE9DjM,KAAK8/B,sBAIAjgC,EAAEC,OAAOI,OAAO+X,cAAgBjY,KAAK+/B,UACzC//B,KAAKggC,aAEAhgC,KAAKigC,YACVjgC,KAAKg9B,IAAIjoB,SAAUlV,EAAEC,OAAO4K,iBAE7B1K,KAAKk5B,SAASS,QAAS35B,KAAKa,KAAMb,KAAKm3B,QAASn3B,KAAKg9B,IAAKh9B,KAAKi9B,OAAO,IAGvEiD,QAAS,SAAU9nB,EAAc+nB,EAAcC,EAAMC,GACpDrgC,KAAK2/B,gBACL3/B,KAAKsgC,QAASloB,EAAc+nB,EAAcC,EAAMC,IAGjDE,OAAQ,SAAUnrB,GAEjBpV,KAAKg9B,IAAIz7B,IAAK,UAAW,KACzB6T,EAAS9R,KAAMtD,MACfA,KAAKg9B,IAAIz7B,IAAK,UAAW,KAG1By+B,WAAY,WAGXngC,EAAEwG,MAAM+C,QAAQC,YAAYC,SAAU,GAEjCzJ,EAAEC,OAAO4O,YAAc1O,KAAK+/B,WAAalgC,EAAEC,OAAOqJ,oBACtDjJ,EAAOqJ,SAAU,EAAGvJ,KAAK+/B,UAI1B18B,WAAY,WACXxD,EAAEwG,MAAM+C,QAAQC,YAAYC,SAAU,GACpC,MAGJg3B,QAAS,SAAUloB,EAAc+nB,EAAcC,EAAMC,GACpDrgC,KAAKugC,OAAO,WACXvgC,KAAKg9B,IAAIjoB,SAAUlV,EAAEC,OAAO4K,gBAAkB1K,KAAKw/B,YAG7Ca,GACLxgC,EAAEC,OAAOs9B,UAAWp9B,KAAKg9B,KAI1Bh9B,KAAKg9B,IAAI/wB,OAAQmM,EAAepY,KAAK+/B,UAEnBK,GACFpgC,KAAKggC,eAItBhgC,KAAKg9B,IACHryB,YAAa3K,KAAKw/B,YAClBzqB,SAAU/U,KAAKa,KAAO,OAASs/B,GAE3BC,EAKLpgC,KAAK6/B,SAJL7/B,KAAKg9B,IAAIvT,kBAAmB5pB,EAAEwY,MAAM,WACnCrY,KAAK6/B,UACH7/B,QAOLwgC,SAAU,SAAUpoB,EAAc+nB,EAAcC,GAC/CpgC,KAAK4/B,eAAgBxnB,EAAc+nB,EAAcC,GAIjDpgC,KAAKi9B,MACHhxB,OAAQmM,EAAevY,EAAEC,OAAOI,OAAO+X,aACvClD,SAAU/U,KAAKa,KAAO,OAASs/B,IAGlCL,oBAAqB,WACpBjgC,EAAEC,OAAO2P,cAAcmE,YAAa,6CAA+C5T,KAAKa,OAGzFooB,WAAY,WAMX,GAAImX,GACHD,EAAengC,KAAKm3B,QAAU,WAAa,GAC3C/e,EAAevY,EAAEC,OAAOkM,kBACxBy0B,EAAwB5gC,EAAEC,OAAOkP,sBAAuB,GACvDnP,EAAEC,OAAOI,OAAOsd,QAAU3d,EAAEC,OAAOkP,kBAiBrC,OAfAhP,MAAK+/B,SAAWlgC,EAAEC,OAAOuhB,SAASjB,QAAQ0G,YAAY+O,YAAch2B,EAAEC,OAAOqJ,kBAE7Ei3B,GAAQvgC,EAAEmG,QAAQujB,iBAAmB1pB,EAAEmG,QAAQwjB,eAC9CiX,IAA0BzgC,KAAKa,MAAsB,SAAdb,KAAKa,MAC5CiI,KAAKC,IAAKlJ,EAAEC,OAAOI,OAAO+X,YAAajY,KAAK+/B,UAC3ClgC,EAAEC,OAAO4gC,4BAEX1gC,KAAK8/B,sBAEA9/B,KAAKi9B,QAAUmD,EACnBpgC,KAAKwgC,SAAUpoB,EAAc+nB,EAAcC,GAE3CpgC,KAAKkgC,QAAS9nB,EAAc+nB,EAAcC,GAAM,GAG1CpgC,KAAKk5B,SAASoB,cAGpBv6B,EAAQC,MAGZ,SAAWH,GAEVA,EAAEC,OAAO6gC,iBAAmB,WAC3B3gC,KAAKu/B,KAAKh8B,MAAMvD,KAAMwD,YAGvB3D,EAAE+B,OAAO/B,EAAEC,OAAO6gC,iBAAiBx5B,UAAWtH,EAAEC,OAAOw/B,WAAWn4B,WACjE84B,YAAY,EAEZN,cAAe,WACT3/B,KAAKi9B,OACTj9B,KAAKy/B,aAIPG,eAAgB,SAAUxnB,EAAc+nB,EAAcC,GACrDpgC,KAAKi9B,MAAMxT,kBAAkB5pB,EAAEwY,MAAM,WACpCrY,KAAKkgC,QAAS9nB,EAAc+nB,EAAcC,IACxCpgC,WAIFD,GAGJ,SAAWF,GAEVA,EAAEC,OAAO8gC,qBAAuB,WAC/B5gC,KAAKu/B,KAAKh8B,MAAMvD,KAAMwD,YAGvB3D,EAAE+B,OAAO/B,EAAEC,OAAO8gC,qBAAqBz5B,UAAWtH,EAAEC,OAAOw/B,WAAWn4B,WACrE84B,YAAY,EAEZP,aAAc,WACR1/B,KAAKi9B,OACTj9B,KAAKy/B,aAIPG,eAAgB,SAAUxnB,EAAc+nB,EAAcC,GACrDpgC,KAAKkgC,QAAS9nB,EAAc+nB,EAAcC,OAIzCrgC,GAGJ,SAAWF,GAGV,GAAIghC,GAAmC,WACtC,MAAoC,GAA7BhhC,EAAEC,OAAOkM,kBAIjBnM,GAAEC,OAAOo7B,oBACR+E,WAAcpgC,EAAEC,OAAO6gC,iBACvBG,aAAgBjhC,EAAEC,OAAO8gC,sBAI1B/gC,EAAEC,OAAOq7B,yBAA2Bt7B,EAAEC,OAAOo7B,mBAAmB+E,WAEhEpgC,EAAEC,OAAOihC,uBAGTlhC,EAAEC,OAAOm7B,wBAA0B,SAAUhS,GAK5C,MAJKA,KAAeppB,EAAEmG,QAAQya,gBAAkB5gB,EAAEC,OAAOihC,oBAAqB9X,KAC7EA,EAAappB,EAAEC,OAAOihC,oBAAqB9X,IAGrCA,GAIRppB,EAAEC,OAAO4gC,0BAA4B7gC,EAAEC,OAAO4gC,2BAA6BG,GAExE9gC,GAMJ,SAAWF,GAEXA,EAAEC,OAAOihC,oBAAoBC,KAAO,QAEhCjhC,EAAQC,MAMZ,SAAWH,GAEXA,EAAEC,OAAOihC,oBAAoBE,KAAO,QAEhClhC,EAAQC,MAMZ,SAAWH,GAEXA,EAAEC,OAAOihC,oBAAoBttB,IAAM,QAE/B1T,EAAQC,MAMZ,SAAWH,GAGXA,EAAEC,OAAOo7B,mBAAmBgG,MAAQrhC,EAAEC,OAAOo7B,mBAAmB4F,aAGhEjhC,EAAEC,OAAOihC,oBAAoBG,MAAQ,QAEjCnhC,EAAQC,MAMZ,SAAWH,GAEXA,EAAEC,OAAOihC,oBAAoBI,UAAY,QAErCphC,EAAQC,MAMZ,SAAWH,GAGXA,EAAEC,OAAOihC,oBAAoBK,UAAY,QAErCrhC,EAAQC,MAMZ,SAAWH,GAEXA,EAAEC,OAAOihC,oBAAoBM,QAAU,QAEnCthC,EAAQC,MAMZ,SAAWH,GAEXA,EAAEC,OAAOihC,oBAAoBO,KAAO,QAEhCvhC,EAAQC,MAGZ,SAAWH,GAEXA,EAAEC,OAAOyhC,eACRC,OAAO,EACPC,MAAM,EACNC,UAAU,EACVC,kBAAkB,EAClBC,OAAO,EACPC,OAAO,EACPC,QAAQ,EACRC,MAAO,SACP1hB,OAAQ,OACR2hB,KAAK,EACL3R,MAAM,EACNxmB,KAAK,EACLo4B,MAAM,GAGPpiC,EAAEC,OAAO8H,KAAKT,UAAUO,QAAQ65B,cAAgB1hC,EAAEC,OAAOyhC,cAGzD1hC,EAAEC,OAAOwN,oBAAsB,SAAUkE,GAExCA,EAAS3R,EAAG2R,GAGZA,EAAOhE,KAAM,SAAUE,IAAK7N,EAAEC,OAAO8H,KAAKT,UAAU+F,sBAAuB/J,KAAK,WAC/E,GAGC+K,GAAMg0B,EAASC,EAASC,EAHrB/hC,EAAUR,EAAGG,MAChBmF,EAAOnF,KAAK+L,aAAc,QAC1Bs2B,EAAUxiC,EAAEC,OAAOyhC,cAAep8B,IAAU,MAGxCtF,GAAEC,OAAOyhC,cAAep8B,KAC5B+I,EAAOrO,EAAG,SAAUqO,KAAM7N,EAAQiiC,SAAUp0B,OAE5Cg0B,EAAUh0B,EAAKmJ,QAAS,UAAa,GACrC8qB,EAAUD,EAAU,wBAA0B,OAC9CE,EAAS,UAAaC,EAAU,UAAaxiC,EAAEC,OAAOsI,GAAK,SAAYjD,EAAO,KAAS+8B,EAAU,GAAK,KAEtG7hC,EAAQkiC,YAAar0B,EAAKoJ,QAAS6qB,EAASC,SAM3CriC,GAEJ,SAAWF,EAAGK,EAAQC,GAEtBN,EAAEqQ,OAAQ,cAAerQ,EAAEC,OAAO8H,MACjCF,SAGC86B,SAAU,OACVC,aAAc,QACdC,aAAc,IACdC,SAAS,EACT1O,QAAQ,GAGThhB,QAAS,WACRjT,KAAK+Q,SACA/Q,KAAK0H,QAAQusB,SAEjBp0B,EAAE+B,OAAQ5B,MACT4iC,OAAQ5iC,KAAKK,QAAQkI,WACrBs6B,mBAAoB,OAGf7iC,KAAK0H,QAAQmsB,UAClB7zB,KAAK8iC,aAAc9iC,KAAK0H,QAAQ86B,YAKnC1O,SAAU,WACT9zB,KAAK+Q,SAGA/Q,KAAK0H,QAAQusB,QACjBj0B,KAAKK,QAAQ0U,SAAU,aACrBguB,UAAWljC,EAAG,UAGds0B,KAAS,SACT6O,QAAU,uCACPhjC,KAAK0H,QAAQi7B,QAAU,iBAAmB,QAKjDjvB,YAAa,SAAUhM,GACtB,GAAIu7B,GAAqBC,EACxBC,EAAcnjC,KAAK0H,OAEfA,GAAQi7B,UAAYxiC,GACxBH,KAAK4iC,OAAOhvB,YAAa,kBAAmBlM,EAAQi7B,SAGhDj7B,EAAQg7B,eAAiBviC,GACxBN,EAAEC,OAAOq2B,WAAY,KAAQn2B,KAAKK,QAAS,KAC/C8iC,EAAYT,aAAeh7B,EAAQg7B,aACnC1iC,KAAKu0B,yBAIF7sB,EAAQ+6B,eAAiBtiC,IAC7B8iC,EAAsBE,EAAYX,SAClCU,EAAkBx7B,EAAQ+6B,cAGtB/6B,EAAQ86B,WAAariC,IACzB8iC,EAAsBv7B,EAAQ86B,UAG1BS,GACJjjC,KAAK8iC,aAAcG,EAAqBC,GAGzCljC,KAAK+Q,OAAQrJ,IAGd6sB,sBAAuB,WACjBv0B,KAAK0H,QAAQg7B,cAAgB1iC,KAAK0H,QAAQusB,QAC9Cj0B,KAAKy0B,4BACLz0B,KAAKw0B,uBAAwBx0B,KAAK0H,QAAQg7B,eAE1C1iC,KAAK+Q,UAIP+xB,aAAc,SAAUhqB,EAAU7K,GACjC,GAAIm1B,GACHC,EAAMrjC,KAAK6iC,kBAGZ/pB,GAAW,SAAWA,EAAW,OAAS,UAAYA,EAAW,QAAU,OAEtE,SAAWA,EACVuqB,IACJA,EAAIh1B,SACJg1B,EAAM,MAEIA,GACXA,EAAI14B,YAAa,4BAA6BoK,SAAU,UAAY+D,GAC/D7K,GACJo1B,EAAIp1B,KAAMA,KAGXm1B,EAAMpjC,KAAK4iC,OAAOp1B,KAAM,2BAA4BuK,QACpDsrB,EAAMxjC,EAAG,WACPiB,KAAQ,IACRkiC,QAAS,iEAAmElqB,IAE5EvU,KAAM,QAAU1E,EAAEC,OAAOsI,GAAK,MAAO,QACrC6F,KAAMA,GAAQjO,KAAK0H,QAAQ+6B,cAAgB,IAC3C/jB,UAAW0kB,IAGdpjC,KAAK6iC,mBAAqBQ,MAIxBtjC,EAAQC,MAEZ,SAAWH,EAAGK,EAAQC,GAEtBN,EAAEqQ,OAAQ,iBACTxI,SAGC86B,SAAU,OACVC,aAAc,QACdC,aAAc,IACdC,SAAS,GAIVpO,sBAAuB,WACtBv0B,KAAKsjC,cAAe,EACftjC,KAAK0H,QAAQg7B,cACjB1iC,KAAKK,QACHuH,KAAM,6BACNA,KAAM,yBAA0B5H,KAAK0H,QAAQg7B,eAIjDa,sBAAuB,WACtBvjC,KAAKsjC,cAAe,GAQrBE,oBAAqB,SAAUn9B,GAC9B,GAAIo9B,GACH1sB,EAAUlX,EAAGwG,EAAMmL,QAAS1H,QAAwB,WAAfzD,EAAMlB,KAAoB,IAAM,OAEjE4R,GAAQvV,SAAWuV,EAAQhN,QAAS,gBACxC05B,KACAA,EAAO,QAAU5jC,EAAEC,OAAOsI,GAAK,eAC5BvI,EAAEC,OAAOuhB,SAASjB,QAAQ0G,iBAAkC,YAC9DjnB,EAAEC,OAAOoP,wBACVu0B,EAAO,QAAU5jC,EAAEC,OAAOsI,GAAK,aAAgB,UAC/C2O,EAAQxS,KAAMk/B,KAIhBxwB,QAAS,WACR,GAAI7P,GAAOpD,KAAKK,QACfknB,EAAOvnB,KAAK0H,OAGbtE,GAAK2R,SAAU,aACbguB,UAAWljC,EAAG,UAGds0B,KAAS,SACT6O,QAAU,uCACLzb,EAAKob,QAAU,iBAAmB,OAGzC9iC,EAAE+B,OAAQ5B,MACTsjC,cAAc,EACdV,OAAQx/B,EAAKmF,WACbs6B,mBAAoB,OAGrB7iC,KAAK4S,IAAKxP,GACTsgC,OAAQ,sBACRC,OAAQ,sBACR3P,eAAgB,wBAChBD,eAAgB,0BAGjB/zB,KAAK8iC,aAAcvb,EAAKib,WAGzB9uB,YAAa,SAAUhM,GACtB,GAAIu7B,GAAqBC,EACxBC,EAAcnjC,KAAK0H,OAEfA,GAAQi7B,UAAYxiC,GACxBH,KAAK4iC,OAAOhvB,YAAa,kBAAmBlM,EAAQi7B,SAGhDj7B,EAAQg7B,eAAiBviC,GACxBN,EAAEC,OAAOq2B,WAAY,KAAQn2B,KAAKK,QAAS,KAC/C8iC,EAAYT,aAAeh7B,EAAQg7B,aACnC1iC,KAAKu0B,yBAIF7sB,EAAQ+6B,eAAiBtiC,IAC7B8iC,EAAsBE,EAAYX,SAClCU,EAAkBx7B,EAAQ+6B,cAGtB/6B,EAAQ86B,WAAariC,IACzB8iC,EAAsBv7B,EAAQ86B,UAG1BS,GACJjjC,KAAK8iC,aAAcG,EAAqBC,GAGzCljC,KAAK+Q,OAAQrJ,IAGdo7B,aAAc,SAAUhqB,EAAU7K,GACjC,GAAIm1B,GACHC,EAAMrjC,KAAK6iC,kBAGZ/pB,GAAW,SAAWA,EAAW,OAAS,UAAYA,EAAW,QAAU,OAEtE,SAAWA,EACVuqB,IACJA,EAAIh1B,SACJg1B,EAAM,MAEIA,GACXA,EAAI14B,YAAa,4BAA6BoK,SAAU,UAAY+D,GAC/D7K,GACJo1B,EAAIp1B,KAAMA,KAGXm1B,EAAMpjC,KAAK4iC,OAAOp1B,KAAM,2BAA4BuK,QACpDsrB,EAAMxjC,EAAG,WACPs0B,KAAQ,SACRrzB,KAAQ,IACRkiC,QAAS,iEAAmElqB,IAE5E7K,KAAMA,GAAQjO,KAAK0H,QAAQ+6B,cAAgB,IAC3C/jB,UAAW0kB,GACbpjC,KAAK4S,IAAKywB,GAAOO,MAAO,WAGzB5jC,KAAK6iC,mBAAqBQ,GAI3BnoB,MAAO,WACN,GAAI2oB,GAAOhkC,EAAEC,OAAOuhB,SAASjB,OAExBpgB,MAAKsjC,eACTtjC,KAAKsjC,cAAe,EAIfzjC,EAAEC,OAAO+O,sBAAwBg1B,EAAKhd,YAAc,EACxDhnB,EAAEC,OAAO4nB,OAET7nB,EAAEC,OAAO2P,cAAcmJ,cAAe,aAMtC7Y,EAAQC,MAEZ,SAAWH,EAAGM,GAEd,GAAI2jC,GAAiB,WAGpBC,EAAe,SAAUC,GACxB,MAAS,gBAA+B,OAAZA,EAAmB,OAASA,GAG1DnkC,GAAEqQ,OAAQ,sBACTxI,SACCmsB,UAAU,EACVoQ,cAAe,KACfC,gBAAiB,KACjBC,WAAW,EACXC,QAAS,2BACTC,cAAe,KACfC,aAAc,KACdN,QAAS,KACTrsB,MAAO,KACPic,aAAc,KACd2Q,MAAO,KACP5B,QAAS,KACT6B,KAAM,MAGPvxB,QAAS,WACR,GAAI7P,GAAOpD,KAAKK,QACfsB,GACC8iC,UAAWrhC,EACT0G,QAAS,oEAEPjK,EAAEC,OAAO4kC,eAAiB,2BAC3B,KACD3vB,SAAU,sBAGd/U,MAAK2kC,IAAMhjC,EACX3B,KAAK4kC,iBAAmB5kC,KAAK6kC,YAAa7kC,KAAK0H,SAE1C1H,KAAK0H,QAAQmsB,UACjBlyB,EAAGyiC,QAAUpkC,KAAKK,QAAQkI,SAAU,2BACpC5G,EAAG61B,QAAU71B,EAAGyiC,QAAQ/tB,OACxB1U,EAAGmjC,OAASnjC,EAAGyiC,QAAQ77B,WACvB5G,EAAGojC,OAASpjC,EAAGmjC,OAAOv8B,SAAU,mCAEhCvI,KAAK8zB,SAAU1wB,EAAMzB,GAGtB3B,KAAK4S,IAAKjR,EAAGyiC,SACZjV,IAAO,WACNxtB,EAAGyiC,QAAQ52B,KAAM,KAAMuK,QAAQhD,SAAUlV,EAAEC,OAAO8K,iBAGnDg5B,MAAS,SAAUv9B,GAClBrG,KAAKglC,uBAAwBrjC,EAAGyiC,QAAQhwB,SAAU,qCAClD/N,EAAMC,iBACND,EAAMgmB,sBAMTwY,YAAa,SAAUn9B,GACtB,GAAI/B,GACH8+B,EAAYzkC,KAAK2kC,IAAIF,UACrBQ,EAAkBjlC,KAAK2kC,IAAIM,eAG5Bv9B,GAAU7H,EAAE+B,UAAY8F,GAEnB+8B,EAAUjjC,SAAWyjC,IACzBjlC,KAAK2kC,IAAIM,gBACTA,EAAkBR,EAAUxgC,KAAM,yBAGnC,KAAM0B,IAAO+B,GAKZA,EAAS/B,GACY,MAAlB+B,EAAS/B,GAAkB+B,EAAS/B,GACtC,EAAsBs/B,EAAgBv9B,QAAS/B,GAC/C8+B,EAAUjjC,OAAS3B,EAAEC,OAAOiM,aAAc04B,EAAW,GACpD9+B,EAAI2R,QAASwsB,EAAgB,OAAQnjC,eACtC,KAEI,MAAQ+G,EAAS/B,KACrB+B,EAAS/B,GAAQ9F,EAAEC,OAAOolC,YAAY9I,SAAUz2B,GAIlD,OAAO+B,IAGRy9B,sBAAuB,SAAU7b,EAAQ3iB,GACxC,MAASA,GAAoB,SAAVA,EAAmB,GAAK2iB,EAAS3iB,EAAU,IAG/DmtB,SAAU,SAAU1wB,EAAMzB,GACzB,GAAIyjC,GACH7d,EAAOvnB,KAAK4kC,iBACZS,EAAoBrlC,KAAKmlC,sBAAuB,WAAY5d,EAAKqM,aA6ClE,OA3CAxwB,GAAK2R,SAAU,mBACZwS,EAAKgd,MAAQ,wBAA0B,KACvChd,EAAKgd,OAAShd,EAAKob,QAAU,iBAAmB,KAChD0C,EAAoB,iCAAmC,KAC1D1jC,EAAG2jC,gBAAkBliC,EAAKmF,SAAUvI,KAAK0H,QAAQ08B,SAAUrsB,QAC3DpW,EAAG61B,QAAUp0B,EACX2/B,UAAW,sCAEXsC,EAAoB,YACpB98B,SAAU,2BACZ5G,EAAGyiC,QAAUziC,EAAG2jC,gBAGX3jC,EAAGyiC,QAAQhR,GAAI,YACnBzxB,EAAGyiC,QAAUvkC,EAAG,uBAAwB8B,EAAGyiC,QAAQl2B,OAAQ,UAC3DvM,EAAG4jC,YAAc1lC,EAAG,8CAA+Coc,aAActa,EAAG2jC,iBACpF3jC,EAAG2jC,gBAAgBj3B,UAGpB+2B,EAAc7d,EAAK4c,UAAc5c,EAAK8c,cAAgB,WAAa9c,EAAK8c,cAAgB,GACrF9c,EAAK+c,aAAe,WAAa/c,EAAK+c,aAAe,GAExD3iC,EAAGojC,OAASllC,EAAG,uDACf8B,EAAGmjC,OAASnjC,EAAGyiC,QACboB,SAEAzwB,SAAU,0BACVgJ,OAAQpc,EAAGojC,QACXhC,UAAW,0DACXv1B,KAAM,KACLuK,QACAhD,SAAU,WACRqwB,EAAYA,EAAY,IAAM,KAC9BA,EAAYrB,EAAcxc,EAAKyc,SAChC,IAAM,IACPhkC,KAAKmlC,sBAAuB,UAAW5d,EAAK5P,OAAU,KACpD4P,EAAKid,KAAO,WAAa,KAG9B7iC,EAAGyiC,QAAQnoB,aAActa,EAAG61B,SAE5Bx3B,KAAKglC,sBAAuBhlC,KAAK0H,QAAQy8B,WAElCxiC,GAGR8jC,QAAS,WACRzlC,KAAK0lC,cAAe1lC,KAAK0H,SACzB1H,KAAK4kC,iBAAmB5kC,KAAK6kC,YAAa7kC,KAAK0H,UAGhDg+B,cAAe,SAAUh+B,GACxB,GAAIi+B,GAAaC,EAAUC,EAAUC,EAAYC,EAChD3iC,EAAOpD,KAAKK,QACZ8iC,EAAcnjC,KAAK4kC,iBACnBjjC,EAAK3B,KAAK2kC,IACVG,EAASnjC,EAAGmjC,OACZC,EAASpjC,EAAGojC,OACZxd,EAAOvnB,KAAK6kC,YAAan9B,EAKrBA,GAAQy8B,YAAchkC,GAC1BH,KAAKglC,sBAAuBt9B,EAAQy8B,WAGrCwB,EAAcviC,EAAKgR,SAAU,4BAKxBuxB,EACCpe,EAAK0c,gBAAkB9jC,GAC3B4kC,EAAO92B,KAAMsZ,EAAK0c,eAGd1c,EAAK2c,kBAAoB/jC,GAC7B4kC,EAAO92B,KAAMsZ,EAAK2c,iBAOpB6B,EAGGxe,EAAK8c,gBAAkBlkC,EAAYonB,EAAK8c,iBAAkB,EAG3DlB,EAAYkB,iBAAkB,GAOxB9c,EAAKyc,UAAY7jC,GACxBonB,EAAK8c,gBAAkBlkC,GACvBonB,EAAK+c,eAAiBnkC,KAGtB2kC,EAAOn6B,aAAeo5B,EAAcZ,EAAYa,UAC9Cr7B,OAAUw6B,EAAYmB,cACpB,WAAanB,EAAYmB,kBAC3B37B,OAAUw6B,EAAYkB,eACpB,WAAalB,EAAYkB,mBAC3B5vB,KAAM,MAGHsxB,GACJjB,EAAO/vB,UACJgvB,EAAcxc,EAAKyc,UAAY7jC,EAChConB,EAAKyc,QAAUb,EAAYa,UAC1Br7B,OAAQg9B,GACN,YAAepe,EAAK8c,gBAAkBlkC,EACvConB,EAAK8c,cACLlB,EAAYkB,iBACX,YAAe9c,EAAK+c,eAAiBnkC,EACtConB,EAAK+c,aACLnB,EAAYmB,gBACb7vB,KAAM,OAIN8S,EAAK5P,QAAUxX,IACnB0lC,EAAW7lC,KAAKmlC,sBAAuB,UAAWhC,EAAYxrB,OAC9DiuB,EAAW5lC,KAAKmlC,sBAAuB,UAAW5d,EAAK5P,OACvDmtB,EAAOn6B,YAAak7B,GAAW9wB,SAAU6wB,IAGrCre,EAAKqM,eAAiBzzB,IAC1B0lC,EAAW7lC,KAAKmlC,sBAAuB,WACtChC,EAAYvP,cACbgS,EAAW5lC,KAAKmlC,sBAAuB,WACtC5d,EAAKqM,cACNjyB,EAAG61B,QAAQ7sB,YAAak7B,GAAW9wB,SAAU6wB,IAGzCre,EAAKgd,QAAUpkC,IACnBiD,EAAKwQ,YAAa,uBAAwB2T,EAAKgd,OAC/CuB,KAAiBve,EAAKgd,QAAWhd,EAAKob,UAAWQ,EAAYR,UAGzDpb,EAAKob,UAAYxiC,IACrB2lC,KAAiBve,EAAKob,UAAapb,EAAKgd,QAASpB,EAAYoB,QAGzDuB,IAAe3lC,GACnBiD,EAAKwQ,YAAa,gBAAiBkyB,GAG/Bve,EAAKid,OAASrkC,GAClB2kC,EAAOlxB,YAAa,UAAW2T,EAAKid,OAItC9wB,YAAa,SAAUhM,GACtB1H,KAAK0lC,cAAeh+B,GACpB1H,KAAK+Q,OAAQrJ,GACb1H,KAAK4kC,iBAAmB5kC,KAAK6kC,YAAa7kC,KAAK0H,UAGhDs9B,sBAAuB,SAAUgB,GAChC,GAAIze,GAAOvnB,KAAK4kC,iBACfjjC,EAAK3B,KAAK2kC,GAEXhjC,GAAGojC,OAAO92B,KAAM+3B,EAAaze,EAAK0c,cAAgB1c,EAAK2c,iBACvDviC,EAAGyiC,QACDxwB,YAAa,mCAAoCoyB,GACjDx4B,KAAM,KAAMuK,QACZnE,YAAa,WAAa2T,EAAK+c,cAAe0B,GAG9CpyB,YAAa,WAAa2T,EAAK8c,cAAiB2B,GAAcze,EAAK+c,eAAiB/c,EAAK8c,eACzF15B,YAAa9K,EAAEC,OAAO8K,gBAExB5K,KAAKK,QAAQuT,YAAa,2BAA4BoyB,GACtDrkC,EAAG61B,QACD5jB,YAAa,mCAAoCoyB,GACjDzhC,KAAM,cAAeyhC,GACrBx8B,QAAS,gBACXxJ,KAAK0H,QAAQy8B,UAAY6B,EACzBhmC,KAAKkT,SAAU8yB,EAAa,WAAa,WAG1CC,OAAQ,WACPjmC,KAAKglC,uBAAuB,IAG7BkB,SAAU,WACTlmC,KAAKglC,uBAAuB,IAG7B3xB,SAAU,WACT,GAAI1R,GAAK3B,KAAK2kC,IACbpd,EAAOvnB,KAAK0H,OAER6f,GAAKsM,WAILlyB,EAAG4jC,aACP5jC,EAAG2jC,gBAAgBrpB,aAActa,EAAG4jC,aACpC5jC,EAAG4jC,YAAYl3B,SACf1M,EAAGyiC,QAAQ/1B,WAEX1M,EAAGojC,OAAO12B,SACV1M,EAAGyiC,QACDz5B,YAAa,2DACbpC,WACC49B,WACCC,UAGLzkC,EAAGmjC,OAAOqB,WAAWC,SACrBzkC,EAAG61B,QAAQ2O,WAAWC,SACtBpmC,KAAKK,QACHsK,YAAa,gHASjB9K,EAAEC,OAAOolC,YAAY9I,UACpB6H,cAAe,4BACfC,gBAAiB,8BACjBG,cAAe,OACfzQ,aAAc,UACd0Q,aAAc,QACdN,QAAS,OACTO,OAAO,EACP5B,SAAS,EACThrB,MAAO,UACP6sB,MAAM,IAGHzkC,GAEJ,SAAWF,GAGX,QAASwmC,GAAe96B,GACvB,GAAI1C,GACHrH,EAAS+J,EAAS/J,OAClBwV,IAED,KAAMnO,EAAQ,EAAWrH,EAARqH,EAAgBA,IAC1B0C,EAAU1C,GAAQwC,UAAUhH,MAAOiiC,IACxCtvB,EAAO3P,KAAMkE,EAAU1C,GAIzB,OAAOhJ,GAAGmX,GAZX,GAAIsvB,GAAsB,sBAe1BzmC,GAAEC,OAAOkJ,UAAUu9B,qBAClBC,aAAc,SAAUC,EAAMl0B,GAC7B,GAAIm0B,EAWJ,OATKn0B,GACJm0B,EAAWL,EAAeI,IAE1BC,EAAWD,EAAKnlC,OAAQ,YACC,IAApBolC,EAASllC,SACbklC,EAAWL,EAAeI,KAIrBC,GAGRC,qBAAsB,SAAUF,EAAMG,EAAWr0B,GAChDk0B,EAAK97B,YAAa,gCAClBi8B,EAAUjjC,GAAI,GAAIoR,SAAU,kBAAmB8xB,MAAMC,OAAO/xB,SAAU,iBAChExC,GACLvS,KAAKK,QAAQmJ,QAAS,iBAIxBu9B,wBAAyB,SAAUN,GAClCA,EAAK97B,YAAa,mCAIhB5K,GAEJ,SAAWF,EAAGM,GAEd,GAAI6mC,GAA4B,wBAA0BnnC,EAAEC,OAAOolC,YAAYz3B,YAE/E5N,GAAEqQ,OAAQ,wBAAyBrQ,EAAE+B,QAKpC6L,aAAc,mEAEd/F,QAAS7H,EAAE+B,QACViyB,UAAU,GACRh0B,EAAEC,OAAOolC,YAAY9I,UAExB6K,yBAA0B,SAAU5gC,GACnC,GAAI6gC,GAAqBrnC,EAAGwG,EAAMmL,QAAS1H,QAAS,kBAE/Co9B,GAAmBrgC,SAASusB,GAAI,6DACpC8T,EACEC,SAAU,kDACVjC,YAAa,aAIjBjyB,QAAS,WACR,GAAI7P,GAAOpD,KAAKK,QACfknB,EAAOvnB,KAAK0H,OAEb7H,GAAE+B,OAAQ5B,MACTonC,SAAU,KAGL7f,EAAKsM,WACVzwB,EAAK2R,SAAU,sBACd/U,KAAKmlC,sBAAuB,kBAAmB5d,EAAK5P,OAAU,KAC5D4P,EAAKob,SAAWpb,EAAKgd,MAAQ,iBAAmB,KACnDvkC,KAAKK,QAAQmN,KAAM3N,EAAEC,OAAOolC,YAAYz3B,cAAey3B,eAGxDllC,KAAK4S,IAAKxP,GAAQikC,kBAAmB,8BAGtClC,sBAAuB,SAAU7b,EAAQ3iB,GACxC,MAASA,GAAoB,SAAVA,EAAmB,GAAK2iB,EAAS3iB,EAAU,IAG/D0L,MAAO,WACNrS,KAAKsnC,UAAU,GAIftnC,KAAKK,QACHkI,SAAUy+B,GACV1lC,OAAQ,+BACR4jC,YAAa,WAGhBxxB,YAAa,SAAUhM,GACtB,GAAIyP,GAAK2uB,EACR1iC,EAAOpD,KAAKK,QACZknC,EAAavnC,KAAKmlC,sBAAuB,kBAAmBz9B,EAAQiQ,MAsBrE,OApBK4vB,IACJnkC,EACEuH,YAAa3K,KAAKmlC,sBAAuB,kBAAmBnlC,KAAK0H,QAAQiQ,QACzE5C,SAAUwyB,GAGR7/B,EAAQ68B,QAAUpkC,IACtB2lC,KAAiBp+B,EAAQ68B,QAAW78B,EAAQi7B,UAAW3iC,KAAK0H,QAAQi7B,UAGhEj7B,EAAQi7B,UAAYxiC,IACxB2lC,KAAiBp+B,EAAQi7B,UAAaj7B,EAAQ68B,QAASvkC,KAAK0H,QAAQ68B,QAGhEuB,IAAe3lC,GACnBiD,EAAKwQ,YAAa,gBAAiBkyB,GAGpC3uB,EAAMnX,KAAK+Q,OAAQrJ,GACnB1H,KAAKK,QAAQkI,SAAU,uBAAwB28B,YAAa,WACrD/tB,GAGR9D,SAAU,WACT,GAAIvI,GAAK9K,KAAKK,OAEdL,MAAK+mC,wBAAyBj8B,EAAGvC,SAAUy+B,IAC3Cl8B,EACEH,YAAa,oCACb3K,KAAKmlC,sBAAuB,kBAAmBnlC,KAAK0H,QAAQiQ,QAC5DpP,SAAU,uBACV28B,YAAa,YAGhBoC,SAAU,SAAU/0B,GACnB,GAAIi1B,GAAoBxnC,KAAKK,QAAQkI,SAAUy+B,EAE/ChnC,MAAKK,QAAQmN,KAAM3N,EAAEC,OAAOolC,YAAYz3B,cAAeC,IAAK,mBAAoBw3B,cAEhFllC,KAAK2mC,qBAAsBa,EAAmBxnC,KAAKwmC,aAAcgB,EAAmBj1B,GAAUA,IAG/FkzB,QAAS,WACRzlC,KAAKsnC,UAAU,KAEdznC,EAAEC,OAAOkJ,UAAUu9B,uBAElBxmC,GAEJ,SAAWF,GAGXA,EAAEkD,GAAG6K,aAAe,WACnB,MAAO5N,MAAK+U,SAAU,sBAGnBhV,GAEJ,SAAWF,GAEXA,EAAEkD,GAAG0kC,KAAO,SAAU//B,GACrB,MAAO1H,MAAKmD,KAAK,WAEhB,GAOCukC,GACAC,EARG7Z,EAAQjuB,EAAGG,MACdouB,EAAIvuB,EAAE+B,QACL6lC,KAAM,MACJ//B,GACHkgC,EAAQ9Z,EAAMvlB,WACds/B,GAAaC,KAAK,EAAG7nB,EAAE,EAAG2K,EAAE,EAAG5f,EAAE,EAAG2Y,EAAE,GACtC8jB,EAAOrZ,EAAEqZ,IAIT,KAAMA,EACL,GAAKG,EAAMpmC,QAAU,EACpB,IAAMmmC,IAAUE,GACVA,EAAUF,KAAaC,EAAMpmC,SACjCimC,EAAOE,OAITF,GAAO,IACP3Z,EAAM/Y,SAAU,cAGlB2yB,GAAWG,EAASJ,GAErB3Z,EAAM/Y,SAAU,WAAa0yB,GAE7BG,EAAMtmC,OAAQ,cAAgBomC,EAAW,QAAS3yB,SAAU,cAEvD2yB,EAAW,GACfE,EAAMtmC,OAAQ,cAAgBomC,EAAW,QAAS3yB,SAAU,cAExD2yB,EAAW,GACfE,EAAMtmC,OAAQ,cAAgBomC,EAAW,QAAS3yB,SAAU,cAExD2yB,EAAW,GACfE,EAAMtmC,OAAQ,cAAgBomC,EAAW,QAAS3yB,SAAU,cAExD2yB,EAAW,GACfE,EAAMtmC,OAAQ,cAAgBomC,EAAW,QAAS3yB,SAAU,kBAI3DhV,GAEJ,SAAWF,EAAGM,GAEdN,EAAEqQ,OAAQ,iBACTxI,SACCs8B,QAAS,MACTyD,KAAM,MAGPx0B,QAAS,WAER,GAAI80B,GAAU/nC,KAAKK,QAClB2nC,EAAWD,EAAQv6B,KAAM,aACzBw2B,EAAUgE,EAAS1mC,OAAQ,kBAAmBE,OAASxB,KAAK0H,QAAQs8B,QAAU7jC,CAE/E4nC,GAAQhzB,SAAU,aAChBxQ,KAAM,OAAQ,cACdiJ,KAAM,MACNG,iBACA85B,MAAOA,KAAMznC,KAAK0H,QAAQ+/B,OAE5BO,EACE7kC,KAAM,WACN,GAAI8kC,GAAOpoC,EAAEC,OAAOiM,aAAc/L,KAAM,QACvC2X,EAAQ9X,EAAEC,OAAOiM,aAAc/L,KAAM,SACrCkoC,EAAU,QAENvwB,KACJuwB,GAAW,WAAavwB,GAEpBswB,IACJC,GAAW,YAAcD,EAAO,gBAAkBjE,GAEnDnkC,EAAGG,MAAO+U,SAAUmzB,KAGtBH,EAAQxzB,SAAU,IAAK,SAAU,WAChC,GAAIuD,GAAYjY,EAAGG,KAEX8X,GAAU1D,SAAU,sBAI3B0D,EAAU1D,SAAU,gBACpB0D,EAAU1D,SAAUvU,EAAEC,OAAO8K,kBAE7Bo9B,EAASr9B,YAAa9K,EAAEC,OAAO8K,gBAC/BkN,EAAU/C,SAAUlV,EAAEC,OAAO8K,gBAG7B/K,EAAGI,GAAWua,IAAK,WAAY,WAC9B1C,EAAUnN,YAAa9K,EAAEC,OAAO8K,qBAMnCm9B,EAAQj+B,QAAS,YAAa1D,KAAM,iBAAkB,WACrD4hC,EAAS1mC,OAAQ,qBAAsByT,SAAUlV,EAAEC,OAAO8K,sBAKzD7K,GAEJ,SAAWF,GAEX,GAAIsoC,GAAUtoC,EAAEC,OAAOiM,YAEvBlM,GAAEqQ,OAAQ,kBAAmBrQ,EAAE+B,QAE9B8F,SACCiQ,MAAO,KACPywB,WAAY,KACZC,aAAc,KACdJ,KAAM,UACNK,UAAW,UACXC,WAAY,KACZ5F,SAAS,EACT6F,QAAQ,EACRjE,OAAO,GAGRtxB,QAAS,WACR,GAAI0K,GAAI3d,KACPyoC,EAAkB,EAEnBA,IAAmB9qB,EAAEjW,QAAQ68B,MAAQ,qBAAuB,GAErD5mB,EAAEjW,QAAQ68B,QAChBkE,GAAmB9qB,EAAEjW,QAAQi7B,QAAU,iBAAmB,GAC1D8F,GAAmB9qB,EAAEjW,QAAQ8gC,OAAS,aAAe,IAItD7qB,EAAEtd,QAAQ0U,SAAU,eAAiB0zB,GAErC9qB,EAAE8nB,SAAS,IAIZiD,2BAA4B,SAAU9+B,EAAK++B,EAAUC,EAAQC,GAC5D,GAAIC,KAEJ,KADAA,EAAMF,GAAWE,EAAMD,IAAW,EAC1Bj/B,GAAM,CACb,GAAKk/B,EAAMl/B,EAAIlJ,UACd,MAAOkJ,EAERA,GAAMA,EAAK++B,GAEZ,MAAO,OAGRI,iBAAkB,SAAUC,GAC3B,GAAI5kC,GAAG3D,EAAK4pB,EAAM2e,EAAWxnC,MAC7B,KAAM4C,EAAI,EAAOimB,EAAJjmB,EAASA,IACrB3D,EAAMZ,EAAGG,KAAK0oC,2BAA4BM,EAAY5kC,GAAIqX,WAAY,cAAe,MAAO,QACvFhb,EAAIe,QACR3B,EAAGG,KAAK0oC,2BAA4BjoC,EAAK,GAAIG,WAAY,aAAc,KAAM,OAASmU,SAAUtU,EAAI2T,SAAU,cAAiB,iBAAmB,oBAKrJ60B,sBAAuB,SAAUr/B,EAAKg/B,EAAQC,GAC7C,GAAIK,MACHJ,IAGD,KAFAA,EAAMF,GAAWE,EAAMD,IAAW,EAClCj/B,EAAMA,EAAI6R,WACF7R,GACFk/B,EAAMl/B,EAAIlJ,WACdwoC,EAAQ7hC,KAAMuC,GAEfA,EAAMA,EAAIu/B,WAEX,OAAOtpC,GAAGqpC,IAGXE,uBAAwBvpC,EAAEuT,KAC1Bi2B,sBAAuBxpC,EAAEuT,KAEzBqyB,QAAS,SAAUlzB,GAClB,GAAI+2B,GAAaC,EAAKC,EAAOC,EAAMC,EAAWC,EAAWC,EAAU3B,EAAMhoB,EACxE4pB,EAAWC,EAAYC,EAAepjC,EAAOmgC,EAAMkD,EAAYC,EAAiBC,EAChFC,EAAgB9B,EAAc+B,EAC9Bhc,EAAIpuB,KAAK0H,QACT2iC,EAAQrqC,KAAKK,QACbiqC,IAAOzqC,EAAEa,SAAU2pC,EAAO,GAAK,MAC/BhxB,EAAQgxB,EAAM9lC,KAAM,SACpBgmC,KACAC,EAAeH,EAAM78B,KAAM,gBAC3B46B,EAAaD,EAASkC,EAAO,GAAK,eAAkBrqC,KAAK0H,QAAQ0gC,WACjEqC,EAAkBrC,EAAa,WAAaA,EAAa,iBAgB1D,KAdKha,EAAEzW,OACN0yB,EAAMt1B,SAAU,kBAAoBqZ,EAAEzW,OAIlC2yB,IAAQjxB,GAAmB,IAAVA,KACrBywB,EAAaljC,SAAUyS,EAAO,IAAO,EACrCgxB,EAAM9oC,IAAK,gBAAiB,iBAAmBuoC,IAGhD9pC,KAAKopC,yBAELgB,EAAKpqC,KAAKipC,sBAAuBoB,EAAO,GAAK,KAAM,MAE7Cd,EAAM,EAAGC,EAAQY,EAAG5oC,OAAcgoC,EAAND,EAAaA,IAC9CE,EAAOW,EAAGzmC,GAAI4lC,GACdG,EAAY,IAEPn3B,GAAUk3B,EAAM,GAAIp+B,UAAUgV,OAAQ,sCAAyC,KACnFJ,EAAIjgB,KAAKipC,sBAAuBQ,EAAM,GAAK,IAAK,KAChDI,EAA+C,iBAAjC1B,EAASsB,EAAM,GAAK,QAClC9iC,EAAQ8iC,EAAKllC,KAAM,SACnBolC,EAAYxB,EAASsB,EAAM,GAAK,SAE3BxpB,EAAEze,QAAUye,EAAG,GAAI5U,UAAUgV,OAAQ,cAAiB,IAAMwpB,GAChED,EAAWzB,EAASsB,EAAM,GAAK,QAC/BxB,EAAS2B,KAAa,GAAU,EAAUA,GAAYxb,EAAE6Z,KAGxDhoB,EAAEtV,YAAa,WAEf2+B,EAAc,SAETK,IACJL,GAAe,WAAaK,GAGxB1pB,EAAEze,OAAS,GACfkoC,EAAY,gBAEZ5C,EAAO7mB,EAAE6mB,OACTkD,EAAa7B,EAASrB,EAAM,GAAK,UAAa1Y,EAAEma,YAAcJ,EAASsB,EAAM,GAAK,SAAS,GAC3FQ,EAAkBD,EAAa,WAAaA,EAAa,GACzDE,EAAY/B,EAASrB,EAAM,GAAK,SAAYqB,EAASsB,EAAM,GAAK,SAAYrb,EAAEka,UAC9E6B,EAAiB,qCAAuCD,EAAYD,EAEpEnD,EACEviC,KAAM,QAAS1E,EAAE60B,KAAMoS,EAAK94B,mBAC5B+G,SAAUo1B,GACVO,QAGFzqB,EAAIA,EAAElI,SACKkwB,IACXqB,GAAe,8BAAgCrB,GAIhDhoB,EAAElL,SAAUu0B,IACDO,GACXxB,EAAiBF,EAASsB,EAAM,GAAK,UAAarb,EAAEia,cAAgBja,EAAEzW,MAEtE+xB,EAAY,yBAA4BrB,EAAeA,EAAe,WAEtEoB,EAAKllC,KAAM,OAAQ,YACR0b,EAAEze,QAAU,IACvBkoC,EAAY,yBAA4BC,EAAYA,EAAY,YAE5DW,GAAM3jC,IACVojC,EAAgBnjC,SAAUD,EAAQ,IAAO,EAEzC8iC,EAAKloC,IAAK,gBAAiB,iBAAmBwoC,KAS1CQ,EAAeb,KACpBa,EAAeb,OAGhBa,EAAeb,GAAYriC,KAAMoiC,EAAM,GASxC,KAAMC,IAAaa,GAClB1qC,EAAG0qC,EAAeb,IAAc30B,SAAU20B,EAG3Cc,GAAarnC,KAAM,WAClBtD,EAAGG,MAAO8J,QAAS,MAAOiL,SAAU,qBAEhC01B,GACJD,EAAa98B,IAAK,uBAAwBqH,SAAU01B,GAIrDzqC,KAAK+oC,iBAAkBqB,GACvBpqC,KAAK+oC,iBAAkBqB,EAAG58B,KAAM,YAEhCxN,KAAKqpC,wBAELrpC,KAAK2mC,qBAAsByD,EAAIpqC,KAAKwmC,aAAc4D,EAAI73B,GAAUA,KAE/D1S,EAAEC,OAAOkJ,UAAUu9B,uBAElBxmC,GAEJ,SAAWF,GAEX,QAAS8qC,GAA6BC,GAErC,GAAI38B,GAAOpO,EAAE60B,KAAMkW,EAAI38B,SAAY,IAEnC,OAAMA,GAKNA,EAAOA,EAAK2B,MAAO,EAAG,GAAI8M,cAJlB,KAST7c,EAAEqQ,OAAQ,kBAAmBrQ,EAAEC,OAAO+qC,UACrCnjC,SACCojC,cAAc,EACdC,qBAAsBJ,GAGvBvB,uBAAwB,WAClBppC,KAAK0H,QAAQojC,eACjB9qC,KAAKgrC,mBACLhrC,KAAKgR,YAAaxN,aAIpBwnC,iBAAkB,WACjB,GAAI5mC,GAAG6mC,EAAKb,EAAIc,EAGfC,EAFAC,EAAkB,KAClBC,EAAOrrC,KAAKK,OAOb,KAJAgrC,EAAK9iC,SAAU,mCAAoC8F,SAEnD48B,EAAMI,EAAK9iC,SAAU,MAEfnE,EAAI,EAAGA,EAAI6mC,EAAIzpC,OAAS4C,IAC7BgmC,EAAKa,EAAK7mC,GACV8mC,EAAclrC,KAAK0H,QAAQqjC,qBAAsBlrC,EAAGuqC,IAE/Cc,GAAeE,IAAoBF,IACvCC,EAAUlrC,EAASiG,cAAe,MAClCilC,EAAQrvB,YAAa7b,EAASqrC,eAAgBJ,IAC9CC,EAAQI,aAAc,QAAU1rC,EAAEC,OAAOsI,GAAK,OAAQ,gBACtDgiC,EAAGxpC,WAAWqb,aAAckvB,EAASf,IAGtCgB,EAAkBF,MAKjBnrC,GAEJ,SAAWF,GAEX,GAAI2rC,GAAW,4BACdC,EAAU,8BAEX5rC,GAAEqQ,OAAQ,kBAAmBrQ,EAAEC,OAAO+qC,UACrCnjC,SACCgkC,cAAc,GAGfrC,sBAAuB,WACtB,GAAIsC,GAAOC,EAAKnC,EAAMoC,GAAc,CAIpC,IAFA7rC,KAAKgR,YAAaxN,WAEbxD,KAAK0H,QAAQgkC,aAEjB,IADAC,EAAQ3rC,KAAKipC,sBAAuBjpC,KAAKK,QAAS,GAAK,KAAM,MACvDurC,EAAMD,EAAMnqC,OAAS,EAAIoqC,EAAM,GAAKA,IACzCnC,EAAOkC,EAAOC,GACTnC,EAAKp+B,UAAUhH,MAAOmnC,IACrBK,IACJpC,EAAKp+B,UAAYo+B,EAAKp+B,UAAY,qBAEnCwgC,GAAc,GAERpC,EAAKp+B,UAAUhH,MAAOonC,KAC3BI,GAAc,OAQhB9rC,GAEJ,SAAWF,GAEXA,EAAEC,OAAOsN,KAAO,SAAUoE,GACzB3R,EAAG,wBAAyB2R,GAASuD,SAAU,aAG5ChV,GAEJ,SAAWF,GAEXA,EAAEC,OAAOkJ,UAAU8iC,WAClBC,iBAAkB,WACjB/rC,KAAK4S,IAAK5S,KAAKK,QAAQyJ,QAAS,SAC/BypB,MAAO,WACNvzB,KAAK2U,OAAQ,gBAMb5U,GAMJ,SAAWF,EAAGM,GAEd,GAAI6rC,GAAWnsC,EAAEC,OAAOmK,KAAK+b,cAE7BnmB,GAAEqQ,OAAQ,uBAAwBrQ,EAAE+B,QAEnC6L,aAAc,oHAEd/F,SACCiQ,MAAO,UACP6sB,MAAM,EACNyH,aAAc,KACdpY,UAAU,EACVmQ,QAAS,QAGV/wB,QAAS,WACR,GAAIxB,GAAQzR,KAAKK,QAChB+tB,EAAIpuB,KAAK0H,QACTwkC,EAAc,SAAUz6B,EAAO06B,GAC9B,MAAO16B,GAAM1H,QAASoiC,IACrB16B,EAAM3H,QAAS,kBAAmBC,QAASoiC,IAE7CC,EAAQpsC,KAAK0H,QAAQmsB,UAEnBxzB,QAASL,KAAKK,QAAQ8mC,SAAU,SAChCkF,UAAU,GAEXrsC,KAAKssC,aACNC,EAAY96B,EAAM,GAAGtM,KACrBqnC,EAAe,MAAQD,EAAY,MACnCE,EAAiB,MAAQF,EAAY,QAEnB,aAAdA,GAA0C,UAAdA,KAI5BvsC,KAAKK,QAAQ,GAAGY,WACpBjB,KAAK0H,QAAQzG,UAAW,GAGzBmtB,EAAE4V,QAAUkI,EAAaz6B,EAAO,YAC/B26B,EAAM/rC,QAAQkE,KAAM,QAAU1E,EAAEC,OAAOsI,GAAK,YAAegmB,EAAE4V,QAG9D5V,EAAEoW,KAAO0H,EAAaz6B,EAAO,SAAY2c,EAAEoW,KAG3C3kC,EAAE+B,OAAQ5B,MACTyR,MAAOA,EACP26B,MAAOA,EAAM/rC,QACbqsC,cAAeN,EAAMC,SACrBE,UAAWA,EACXC,aAAcA,EACdC,eAAgBA,IAGXzsC,KAAK0H,QAAQmsB,UAClB7zB,KAAK8zB,WAGN9zB,KAAK4S,IAAKw5B,EAAM/rC,SACfssC,WAAY,yBACZjJ,OAAQ,uBAGT1jC,KAAK4S,IAAKnB,GACTm7B,WAAY,aACZlJ,OAAQ,qBACR1gC,MAAO,oBACP85B,KAAM,qBAGP98B,KAAK+rC,mBACL/rC,KAAKylC,YAGN6G,WAAY,WACX,GAAIO,GAAaT,EAAOC,EACvB56B,EAAQzR,KAAKK,QACbysC,EAAar7B,EAAO,GAAIs7B,MAiBzB,OAfID,IAAcA,EAAWtrC,OAAS,GACrC4qC,EAAQvsC,EAAGitC,EAAY,IACvBT,EAAWxsC,EAAEmtC,SAAUZ,EAAO,GAAK36B,EAAO,MAE1Co7B,EAAcp7B,EAAM3H,QAAS,SAC7BuiC,EAAaQ,EAAYrrC,OAAS,EAIlC4qC,EAAQC,EAAWQ,EAClBhtC,EAAGG,KAAKC,SAAU,GAAIgtC,qBAAsB,UAC1C3rC,OAAQ,SAAW0qC,EAAUv6B,EAAO,GAAI3N,IAAO,MAC/CiU,UAIH1X,QAAS+rC,EACTC,SAAUA,IAIZvY,SAAU,WACT9zB,KAAKosC,MAAMr3B,SAAU,wBAEhB/U,KAAK0sC,cACT1sC,KAAKyR,MAAMjM,IAAKxF,KAAKosC,OAAQc,QAASltC,KAAKmtC,aAG3CntC,KAAKK,QAAQ+sC,KAAMptC,KAAKmtC,YACxBntC,KAAKK,QAAQwG,SAASwmC,QAASrtC,KAAKosC,QAKrCpsC,KAAK0T,aACJiE,MAAS3X,KAAK0H,QAAQiQ,MACtBqsB,QAAWhkC,KAAK0H,QAAQs8B,QACxBQ,KAAQxkC,KAAK0H,QAAQ88B,QAKvB2I,SAAU,WACT,MAAOttC,GAAG,gBACPG,KAAK0H,QAAQukC,aAAejsC,KAAK0H,QAAQukC,aAAe,IAC1D,OAASjsC,KAAKusC,WACZvsC,KAAK0H,QAAQzG,SAAW,qBAAuB,IAAO,cAG1DqsC,kBAAmB,WAClBttC,KAAKosC,MAAMr3B,SAAUlV,EAAEC,OAAO6O,aAG/B4+B,iBAAkB,WACjBvtC,KAAKosC,MAAMzhC,YAAa9K,EAAEC,OAAO6O,aAGlC6+B,mBAAoB,WAEnBxtC,KAAKK,QAAQwQ,KAAM,UAAW7Q,KAAKK,QAAQ+yB,GAAI,aAC/CpzB,KAAKytC,eAAe//B,IAAK1N,KAAKK,SAAUwQ,KAAM,WAAW,GACzD7Q,KAAK0tC,YAAY,IAGlBC,uBAAwB,SAAUtnC,GAC5BrG,KAAKosC,MAAMvlC,SAASuN,SAAU,sBAClC/N,EAAMgmB,mBAIRuhB,mBAAoB,SAAUvnC,GAC7B,GAAIoL,GAAQzR,KAAKK,OAEjB,OAAKoR,GAAM2hB,GAAI,iBACd/sB,GAAMC,kBAIPtG,KAAK6tC,aAELp8B,EAAMZ,KAAM,UAA8B,UAAnB7Q,KAAKusC,YAAyB,IAAS96B,EAAMZ,KAAM,YAO1EY,EAAMxB,eAAgB,SAKtBjQ,KAAKytC,eAAe//B,IAAK+D,GAAQZ,KAAM,WAAW,GAElD7Q,KAAK0tC,cACE,IAGRG,WAAY,WACX7tC,KAAKytC,eAAetqC,KAAM,WACzBtD,EAAGG,MAAOuE,KAAK,QAAU1E,EAAEC,OAAOsI,GAAK,WAAYpI,KAAK8tC,YAO1DL,aAAc,WACb,GAAIloC,GAAUwoC,EACbC,EAAQhuC,KAAKK,QAAS,GACtBQ,EAAOmtC,EAAMntC,KACb49B,EAAOuP,EAAMvP,KACbh/B,EAAMO,KAAKK,QAAQe,UAAU0lC,OAAO30B,IAAK,GAGzC87B,EAASjuC,KAAKK,OAiCf,OA9BKQ,IAA2B,UAAnBb,KAAKusC,WAAyB9sC,IAC1C8F,EAAW,6BAA+BymC,EAAUnrC,GAAS,KAGxD49B,GACJsP,EAAStP,EAAK1yB,aAAc,MAIvBgiC,IACJE,EAASpuC,EAAG0F,EAAW,UAAYymC,EAAU+B,GAAW,KAAMtuC,IAI/DwuC,EAASpuC,EAAG4+B,GAAOjxB,KAAMjI,GAAWjE,OAAQ,WAI3C,MAAStB,MAAKy+B,OAASA,IACrBj5B,IAAKyoC,IAMRA,EAASpuC,EAAG0F,EAAU9F,GAAM6B,OAAQ,WACnC,OAAQtB,KAAKy+B,QAITwP,GAGRP,WAAY,SAAUQ,GACrB,GAAIn0B,GAAO/Z,IAEXA,MAAKytC,eAAetqC,KAAM,WACzB,GAAI2qB,GAAQjuB,EAAGG,OAERA,KAAK8tC,SAA8B,aAAnB/zB,EAAKwyB,WAA+B2B,GAC1DpgB,EAAMtkB,QAAS,YAGhB2kC,cAAe,YAGjBC,OAAQ,WACPpuC,KAAKylC,WAIN4I,SAAU,WACT,GAAIC,GAAcC,EACjBC,EAA0B3uC,EAAEC,OAAOwuC,YAGpC,OAAKE,KACJF,EAAetuC,KAAKK,QAAQyJ,QAC3B,wBACA0kC,EAAwBrnC,UAAUsG,cAG9B6gC,EAAa9sC,OAAS,IAG1B+sC,EAAqB1uC,EAAEoE,KAAMqqC,EAAc,GAAK,uBAMW,gBAHhDC,EAAqBA,EAAmB7mC,QAAQvC,KAG1DmpC,EAAa/pC,KAAM,QAAU1E,EAAEC,OAAOsI,GAAK,WAKvC,GAGRq9B,QAAS,WACR,GAAIgJ,GAAYzuC,KAAKK,QAAS,GAAIytC,QACjCtY,EAAS31B,EAAEC,OAAO8K,eAClBm5B,EAAe,eAAiB/jC,KAAK0H,QAAQs8B,QAC7C0K,KACAC,IAEI3uC,MAAKquC,YACTM,EAActnC,KAAMmuB,GACpBkZ,EAAWrnC,KAAM08B,KAEjB4K,EAActnC,KAAM08B,IAClB0K,EAAYC,EAAaC,GAAgBtnC,KAAMmuB,IAG7CiZ,GACJC,EAAWrnC,KAAMrH,KAAKwsC,cACtBmC,EAActnC,KAAMrH,KAAKysC,kBAEzBiC,EAAWrnC,KAAMrH,KAAKysC,gBACtBkC,EAActnC,KAAMrH,KAAKwsC,eAG1BxsC,KAAKkQ,SAAS0D,YAAa,oBAAqB5T,KAAKK,QAAQwQ,KAAM,aAEnE7Q,KAAKosC,MACHr3B,SAAU25B,EAAWj6B,KAAM,MAC3B9J,YAAagkC,EAAcl6B,KAAM,OAGpCvE,OAAQ,WACP,MAAOlQ,MAAKosC,MAAMvlC,UAGnB6M,YAAa,SAAUhM,GACtB,GAAI0kC,GAAQpsC,KAAKosC,MAChBwC,EAAiB5uC,KAAK0H,QACtBm3B,EAAQ7+B,KAAKkQ,SACb61B,EAAU/lC,KAAKquC,UAEX3mC,GAAQzG,WAAad,IACzBH,KAAKyR,MAAMZ,KAAM,aAAcnJ,EAAQzG,UACvC49B,EAAMjrB,YAAa,sBAAuBlM,EAAQzG,WAE9CyG,EAAQ88B,OAASrkC,GACrB0+B,EAAMjrB,YAAa,YAAalM,EAAQ88B,MAEpC98B,EAAQiQ,QAAUxX,GACtBisC,EACEzhC,YAAa,UAAYikC,EAAej3B,OACxC5C,SAAU,UAAYrN,EAAQiQ,OAE5BjQ,EAAQukC,eAAiB9rC,GAC7B0+B,EACEl0B,YAAaikC,EAAe3C,cAC5Bl3B,SAAUrN,EAAQukC,cAEhBvkC,EAAQs8B,UAAY7jC,GAAa4lC,EACrCqG,EAAMzhC,YAAa,eAAiBikC,EAAe5K,SAAUjvB,SAAU,eAAiBrN,EAAQs8B,SACpF+B,GACZqG,EAAMzhC,YAAa,eAAiBikC,EAAe5K,SAEpDhkC,KAAK+Q,OAAQrJ,KAGZ7H,EAAEC,OAAOkJ,UAAU8iC,aAElB/rC,GAEJ,SAAWF,EAAGM,GAEdN,EAAEqQ,OAAQ,iBAETzC,aAAc,kEAEd/F,SACCiQ,MAAO,KACPswB,KAAM,KACNjE,QAAS,OACT6K,YAAY,EACZlM,SAAS,EACT6F,QAAQ,EACRsG,OAAQ,KACRtK,KAAM,KACNyH,aAAc,KACdpY,UAAU,GAGX5gB,QAAS,WAEHjT,KAAKK,QAAQ+yB,GAAI,eACrBpzB,KAAK0H,QAAQzG,UAAW,GAGnBjB,KAAK0H,QAAQmsB,UAClB7zB,KAAK8zB,WAGNj0B,EAAE+B,OAAQ5B,MACT+uC,QAAS/uC,KAAKK,QAAQwG,WAGvB7G,KAAK4S,KACJ5P,MAAO,WACNhD,KAAKkQ,SAAS6E,SAAUlV,EAAEC,OAAO6O,aAGlCmuB,KAAM,WACL98B,KAAKkQ,SAASvF,YAAa9K,EAAEC,OAAO6O,eAItC3O,KAAKylC,SAAS,IAGf3R,SAAU,WACT9zB,KAAKK,QAAQ+sC,KAAMptC,KAAKgvC,YAGzBA,QAAS,WACR,GAAItnC,GAAU1H,KAAK0H,QAClBunC,EAAcjvC,KAAKkvC,gBAAiBlvC,KAAK0H,QAE1C,OAAO7H,GAAE,mCACN6H,EAAQukC,aAAe,IAAMvkC,EAAQukC,aAAe,KACpDvkC,EAAQiQ,MAAQ,WAAajQ,EAAQiQ,MAAQ,KAC7CjQ,EAAQi7B,QAAU,iBAAmB,KACrCj7B,EAAQ8gC,OAAS,aAAe,KAChC9gC,EAAQonC,OAAS,iBAAmB,KACpCpnC,EAAQ88B,KAAO,WAAa,KAC5B98B,EAAQzG,SAAW,qBAAuB,KAC1CguC,EAAgB,IAAMA,EAAgB,IACxC,MAAQjvC,KAAKK,QAAQ4Z,MAAQ,WAG/B/J,OAAQ,WACP,MAAOlQ,MAAK+uC,SAGb17B,SAAU,WACRrT,KAAKK,QAAQ4b,aAAcjc,KAAK+uC,SAChC/uC,KAAK+uC,QAAQ1gC,UAGf6gC,gBAAiB,SAAUxnC,GAC1B,MAASA,GAAQugC,KAAS,WAAavgC,EAAQugC,MAC5CvgC,EAAQmnC,WAAa,kBAAoB,IAC3C,gBAAkBnnC,EAAQs8B,QAAY,IAGxCtwB,YAAa,SAAUhM,GACtB,GAAIm3B,GAAQ7+B,KAAKkQ,QAEZxI,GAAQiQ,QAAUxX,GACtB0+B,EACEl0B,YAAa3K,KAAK0H,QAAQiQ,OAC1B5C,SAAU,UAAYrN,EAAQiQ,OAE5BjQ,EAAQi7B,UAAYxiC,GACxB0+B,EAAMjrB,YAAa,gBAAiBlM,EAAQi7B,SAExCj7B,EAAQ8gC,SAAWroC,GACvB0+B,EAAMjrB,YAAa,YAAalM,EAAQ8gC,QAEpC9gC,EAAQonC,SAAW3uC,GACvB0+B,EAAMjrB,YAAa,gBAAiBlM,EAAQonC,QAExCpnC,EAAQ88B,OAASrkC,GACrB0+B,EAAMjrB,YAAa,UAAWlM,EAAQ88B,MAElC98B,EAAQzG,WAAad,IACzBH,KAAKK,QAAQwQ,KAAM,WAAYnJ,EAAQzG,UACvC49B,EAAMjrB,YAAa,oBAAqBlM,EAAQzG,YAG5CyG,EAAQugC,OAAS9nC,GACpBuH,EAAQmnC,aAAe1uC,GACvBuH,EAAQs8B,UAAY7jC,IACrB0+B,EACEl0B,YAAa3K,KAAKkvC,gBAAiBlvC,KAAK0H,UACxCqN,SAAU/U,KAAKkvC,gBACfrvC,EAAE+B,UAAY5B,KAAK0H,QAASA,KAG/B1H,KAAK+Q,OAAQrJ,IAGd+9B,QAAS,SAAUlzB,GAClB,GAAI48B,GACHC,EAAapvC,KAAKK,QAAQwQ,KAAM,WAE5B7Q,MAAK0H,QAAQugC,MAAiC,WAAzBjoC,KAAK0H,QAAQs8B,SAAwBhkC,KAAKK,QAAQkE,KAAM,UACjFvE,KAAKK,QAAQkE,KAAM,QAASvE,KAAKK,QAAQ4Z,OAEpC1H,IACL48B,EAAkBnvC,KAAKK,QAAQmlC,SAC/B3lC,EAAGG,KAAK+uC,SAAU9gC,KAAMjO,KAAKK,QAAQ4Z,OAAQ8D,OAAQoxB,IAEjDnvC,KAAK0H,QAAQzG,WAAamuC,GAC9BpvC,KAAK0T,aAAczS,SAAUmuC,QAK5BrvC,GAEH,SAAUF,GACV,GAAIwvC,GAAOxvC,EAAG,uBACbm4B,EAAiBqX,EAAK9qC,KAAM,WAC5B+qC,EAAetX,EAAiB,qCAChCuX,EAAcvX,EAAiB,uCAC/BwX,EAAoB,iEAAiExuC,KAAMg3B,EAE5Fn4B,GAAEC,OAAO2vC,KAAO5vC,EAAE+B,WACjB0H,SAAUkmC,EACVE,QAAQ,EACR57B,QAAS,SAAU67B,GACZH,GAAsB3vC,EAAEC,OAAO2vC,KAAKC,SACzCL,EAAK9qC,KAAM,UAAW+qC,GACtBzvC,EAAEC,OAAO2vC,KAAKnmC,SAAU,EACxBzJ,EAAEC,OAAO2vC,KAAKC,OAASC,IAAQ,IAGjC97B,OAAQ,SAAU+7B,GACXJ,GAAwB3vC,EAAEC,OAAO2vC,KAAKC,QAAUE,KAAW,IAChEP,EAAK9qC,KAAM,UAAWgrC,GACtB1vC,EAAEC,OAAO2vC,KAAKnmC,SAAU,EACxBzJ,EAAEC,OAAO2vC,KAAKC,QAAS,IAGzBG,QAAS,WACFL,IACLH,EAAK9qC,KAAM,UAAWyzB,GACtBn4B,EAAEC,OAAO2vC,KAAKnmC,SAAU,OAKzBvJ,GAEH,SAAWF,EAAGM,GAEdN,EAAEqQ,OAAQ,oBACTzC,aAAc,iYAoBd/F,SACCiQ,MAAO,KACPgrB,SAAS,EACT6B,MAAM,EAENsL,iBAAkB,mBAAmB9uC,KAAM8E,UAAUoZ,WAAcpZ,UAAUC,UAAUsR,QAAS,eAAkB,GAClH40B,aAAc,GACdpY,UAAU,GAGX5gB,QAAS,WAER,GAAIvL,GAAU1H,KAAK0H,QAClBqoC,EAAW/vC,KAAKK,QAAQ+yB,GAAI,4CAC5B4c,EAA2C,aAA9BhwC,KAAKK,QAAS,GAAI4vC,QAC/BC,EAAUlwC,KAAKK,QAAQ+yB,GAAI,UAAavzB,EAAEC,OAAOsI,IAAM,IAAO,iBAC9D+nC,GAAoBnwC,KAAKK,QAAQ+yB,GAAI,UACpCpzB,KAAKK,QAAQ+yB,GAAI,UAAavzB,EAAEC,OAAOsI,IAAM,IAAO,qBAClD8nC,CAEClwC,MAAKK,QAAQwQ,KAAM,cACvBnJ,EAAQzG,UAAW,GAGpBpB,EAAE+B,OAAQ5B,MACTkoC,QAASloC,KAAKowC,sBACdL,SAAUA,EACVC,WAAYA,EACZE,QAASA,EACTC,eAAgBA,IAGjBnwC,KAAKqwC,eAEC3oC,EAAQmsB,UACb7zB,KAAK8zB,WAGN9zB,KAAK4S,KACJ5P,MAAS,eACT85B,KAAQ,iBAKV2I,QAAS,WACRzlC,KAAKswC,YACJrvC,SAAajB,KAAKK,QAAQ+yB,GAAI,gBAIhCU,SAAU,WACT,GAAIyc,KAECvwC,MAAKgwC,YACTO,EAAelpC,KAAM,kBAGjBrH,KAAKgwC,YAAchwC,KAAKkwC,UAC5BK,EAAelpC,KAAM,mBAIjBrH,KAAKmwC,eACTnwC,KAAKK,QAAQ+sC,KAAMptC,KAAKwwC,SAExBD,EAAiBA,EAAe5nC,OAAQ3I,KAAKkoC,SAG9CloC,KAAKK,QAAQ0U,SAAUw7B,EAAe97B,KAAM,OAG7CvE,OAAQ,WACP,MAASlQ,MAAoB,eAAIA,KAAKK,QAAQwG,SAAW7G,KAAKK,SAG/D+vC,oBAAqB,WACpB,GAAI1oC,GAAU1H,KAAK0H,QAClBwgC,IAgBD,OAdAA,GAAQ7gC,KAAM,YAAmC,OAAlBK,EAAQiQ,MAAmB,UAAYjQ,EAAQiQ,QACzEjQ,EAAQi7B,SACZuF,EAAQ7gC,KAAM,iBAEVK,EAAQ88B,MACZ0D,EAAQ7gC,KAAM,WAEVK,EAAQzG,UACZinC,EAAQ7gC,KAAM,qBAEVK,EAAQukC,cACZ/D,EAAQ7gC,KAAMK,EAAQukC,cAGhB/D;EAGRsI,MAAO,WACN,MAAO3wC,GAAG,gBACPG,KAAK+vC,SAAW,mBAAqB,kBACvC/vC,KAAKkoC,QAAQzzB,KAAM,KAAQ,6BAI7B47B,aAAc,WAS+B,mBAAhCrwC,MAAKK,QAAQ,GAAGowC,aAC1B5wC,EAAEmG,QAAQwa,gBAIXxgB,KAAKK,QAAQ,GAAGkrC,aAAc,cAAe,OAC7CvrC,KAAKK,QAAQ,GAAGkrC,aAAc,eAAgB,SAIhDmF,YAAa,WACZ1wC,KAAKkQ,SAASvF,YAAa9K,EAAEC,OAAO6O,YAC/B3O,KAAK0H,QAAQooC,kBACjBjwC,EAAEC,OAAO2vC,KAAK57B,QAAQ,IAIxB88B,aAAc,WAGR3wC,KAAK0H,QAAQooC,kBACjBjwC,EAAEC,OAAO2vC,KAAK37B,SAAS,GAExB9T,KAAKkQ,SAAS6E,SAAUlV,EAAEC,OAAO6O,aAGlC+E,YAAa,SAAWhM,GACvB,GAAIm3B,GAAQ7+B,KAAKkQ,QAEjBlQ,MAAK+Q,OAAQrJ,IAELA,EAAQzG,WAAad,GAC5BuH,EAAQ88B,OAASrkC,GACjBuH,EAAQi7B,UAAYxiC,GACpBuH,EAAQiQ,QAAUxX,GAClBuH,EAAQukC,eAAiB9rC,KAEzB0+B,EAAMl0B,YAAa3K,KAAKkoC,QAAQzzB,KAAM,MACtCzU,KAAKkoC,QAAUloC,KAAKowC,sBACpBvR,EAAM9pB,SAAU/U,KAAKkoC,QAAQzzB,KAAM,OAG/B/M,EAAQzG,WAAad,GACzBH,KAAKK,QAAQwQ,KAAM,aAAcnJ,EAAQzG,WAI3CoS,SAAU,WACJrT,KAAK0H,QAAQmsB,WAGb7zB,KAAKmwC,gBACTnwC,KAAKK,QAAQ+lC,SAEdpmC,KAAKK,QAAQsK,YAAa,iBAAmB3K,KAAKkoC,QAAQzzB,KAAM,WAI9D1U,GAEJ,SAAWF,EAAGM,GAEdN,EAAEqQ,OAAQ,gBAAiBrQ,EAAE+B,QAC5B6L,aAAc,uEAEd0D,kBAAmB,QAEnBzJ,SACCiQ,MAAO,KACPi5B,WAAY,KACZjO,SAAS,EACT6B,MAAM,EACNqM,WAAW,GAGZ59B,QAAS,WAGR,GAyBCvL,GACAqnC,EACA1lB,EAAG7nB,EACH4C,EAAG0sC,EAAcC,EACjB9rC,EAAM+rC,EAAaC,EA7BhBl3B,EAAO/Z,KACVkxC,EAAUlxC,KAAKK,QACfuwC,EAAa5wC,KAAK0H,QAAQkpC,YAAc/wC,EAAEC,OAAOiM,aAAcmlC,EAAS,GAAK,SAC7EC,EAAkBP,EAAa,WAAaA,EAAa,kBACzDQ,EAAgBpxC,KAAK0H,QAAQi7B,SAAWuO,EAAQnnC,QAAS,WAAgB,iBAAmB,GAC5FsnC,EAAcrxC,KAAK0H,QAAQ88B,MAAQ0M,EAAQnnC,QAAS,QAAa,WAAa,GAC9EunC,EAAQJ,EAAS,GAAIxwC,SAASC,cAC9B4wC,EAA6B,WAAVD,EACnBE,EAAgBN,EAAQrqC,SAASusB,GAAI,gCACrCqe,EAAc,EAAqB,mBAAqB,GACxDC,EAAYR,EAAQ3sC,KAAM,MAC1BotC,EAAS9xC,EAAG,SAAW6xC,EAAY,MACnCE,EAAUD,EAAOptC,KAAM,OAAUmtC,EAAY,SAC7CG,EAAON,EAAuD,EAAtCrsC,WAAYgsC,EAAQ3sC,KAAM,QAClDwE,EAAQwoC,EAAuDL,EAAQ1jC,KAAM,UAAWhM,OAAO,EAAtE0D,WAAYgsC,EAAQ3sC,KAAM,QACnDutC,EAAO5xC,EAAOgF,WAAYgsC,EAAQ3sC,KAAM,SAAY,GACpDwtC,EAAY9xC,EAASiG,cAAe,KACpC8rC,EAASnyC,EAAGkyC,GACZE,EAAYhyC,EAASiG,cAAe,OACpCgsC,EAASryC,EAAGoyC,GACZE,EAAUnyC,KAAK0H,QAAQmpC,YAAcU,EAAiB,WACrD,GAAIa,GAAKnyC,EAASiG,cAAe,MAEjC,OADAksC,GAAG/mC,UAAY,gBAAkBxL,EAAEC,OAAO8K,eACnC/K,EAAGuyC,GAAK1zB,UAAWwzB,OACpB,CA0CR,IAnCAP,EAAOptC,KAAM,KAAMqtC,GACnB5xC,KAAKuxC,eAAiBA,EAEtBQ,EAAUxG,aAAc,OAAQ,KAChC0G,EAAU1G,aAAc,OAAQ,eAChC0G,EAAU5mC,WAAcrL,KAAKuxC,eAAiB,6CAA+C,mCAAoCE,EAAaN,EAAiBC,EAAaC,GAAY58B,KAAM,IAC9Ls9B,EAAU1mC,UAAY,mBACtB4mC,EAAUn2B,YAAai2B,GAEvBC,EAAOztC,MACN4vB,KAAQ,SACRke,gBAAiBR,EACjBS,gBAAiBvpC,EACjBwpC,gBAAiBvyC,KAAKwyC,SACtBC,iBAAkBzyC,KAAKwyC,SACvB33B,MAAS7a,KAAKwyC,SACdE,kBAAmBd,IAGpB/xC,EAAE+B,OAAQ5B,MACTkyC,OAAQA,EACRF,OAAQA,EACRd,QAASA,EACT/rC,KAAMmsC,EACNQ,KAAMA,EACN/oC,IAAKA,EACL8oC,IAAKA,EACLM,QAASA,EACTX,cAAeA,EACfmB,UAAU,EACVC,YAAa,KACbC,cAAc,EACdC,YAAY,IAGRvB,EAAiB,CAcrB,IAZAR,EAAeG,EAAQ3sC,KAAM,YACxBwsC,GACJiB,EAAOztC,KAAM,WAAYwsC,GAE1BG,EAAQ3sC,KAAM,WAAY,MAAOvB,MAAM,WACtCnD,EAAGG,MAAO88B,OACVkV,EAAOhvC,UAGR+rC,EAAU9uC,EAASiG,cAAe,OAClC6oC,EAAQ1jC,UAAY,wBAEdge,EAAI,EAAG7nB,EAASywC,EAAUc,WAAWvxC,OAAYA,EAAJ6nB,EAAYA,IAC9D0lB,EAAQjzB,YAAam2B,EAAUc,WAAW1pB,GAY3C,KATA4oB,EAAUn2B,YAAaizB,GAKvBiD,EAAOj9B,SAAU,6BAEjBrN,EAAUwpC,EAAQ1jC,KAAM,UAElBpJ,EAAI,EAAG0sC,EAAeppC,EAAQlG,OAAYsvC,EAAJ1sC,EAAkBA,IAC7Da,EAAQb,EAAU,IAAN,IACZ4sC,EAAe5sC,EAAS,IAAMvE,EAAEC,OAAO8K,eAApB,GACnBqmC,EAAYhxC,EAASiG,cAAe,QAEpC+qC,EAAU5lC,WAAc,mCAAoCpG,EAAM+rC,GAAcv8B,KAAM,IACtFw8B,EAAU1F,aAAc,OAAQ,OAChC0F,EAAUn1B,YAAa7b,EAASqrC,eAAgB5jC,EAAQtD,GAAG4X,YAC3Dnc,EAAGoxC,GAAYvyB,UAAWwzB,EAG3Bn4B,GAAKi5B,QAAUnzC,EAAG,mBAAoBqyC,GAKvChB,EAAQn8B,SAAUw8B,EAAiB,mBAAqB,mBAExDvxC,KAAK4S,IAAKs+B,GACT1a,OAAU,iBACVyc,MAAS,gBACTnW,KAAQ,eACRoW,SAAY,qBAGbhB,EAAO9rC,KAAM,aAAcvG,EAAEwY,MAAOrY,KAAKmzC,kBAAmBnzC,OAC1DoG,KAAM,UAAU,GAIlBpG,KAAK4S,IAAK3S,GAAYmzC,WAAc,yBACpCpzC,KAAK4S,IAAKs/B,EAAO1sC,IAAKvF,IAAcizC,SAAY,oBAEhDhB,EAAOz3B,YAAay2B,GAGdK,GAAmBC,IACxBzC,EAAU/uC,KAAK0H,QAAQ88B,KAAO,kCAAoC,0BAElE0M,EAAQ1rC,IAAK0sC,GAAShF,QAAS6B,IAIhC/uC,KAAK4S,IAAK5S,KAAKgyC,QACdpF,WAAc,oBACdyG,QAAW,iBACXJ,MAAS,iBAGVjzC,KAAKgyC,OAAO5rC,KAAM,UAAU,GAE5BpG,KAAK+rC,mBAEL/rC,KAAKylC,QAAStlC,EAAWA,GAAW,IAGrCuT,YAAa,SAAUhM,GACjBA,EAAQiQ,QAAUxX,GACtBH,KAAKszC,UAAW5rC,EAAQiQ,OAGpBjQ,EAAQkpC,aAAezwC,GAC3BH,KAAKuzC,eAAgB7rC,EAAQkpC,YAGzBlpC,EAAQi7B,UAAYxiC,GACxBH,KAAKwzC,YAAa9rC,EAAQi7B,SAGtBj7B,EAAQ88B,OAASrkC,GACrBH,KAAKyzC,SAAU/rC,EAAQ88B,MAGnB98B,EAAQmpC,YAAc1wC,GAC1BH,KAAK0zC,cAAehsC,EAAQmpC,WAGxBnpC,EAAQzG,WAAad,GACzBH,KAAK2zC,aAAcjsC,EAAQzG,UAE5BjB,KAAK+Q,OAAQrJ,IAGdksC,eAAgB,SAAUvtC,GAEzB,MAAKrG,MAAKkT,SAAU,gBAAiB7M,MAAY,GACzC,OAEFrG,KAAK8yC,YACV9yC,KAAKylC,QAASzlC,KAAKwyC,UAAU,KAI/BqB,cAAe,WACd7zC,KAAKylC,QAASzlC,KAAKwyC,UAAU,GAAM,IAGpCsB,aAAc,WACb9zC,KAAKylC,QAASzlC,KAAKwyC,UAAU,IAM9BuB,iBAAkB,WACjB/zC,KAAKg0C,mBAINC,kBAAmB,WAClBj0C,KAAKgyC,OAAOhvC,SAGbkxC,eAAgB,SAAU7tC,GACzB,GAAIwC,GAAQ7I,KAAKwyC,QACjB,KAAKxyC,KAAK0H,QAAQzG,SAAlB,CAKA,OAASoF,EAAMvE,SACd,IAAKjC,GAAEC,OAAOgC,QAAQQ,KACtB,IAAKzC,GAAEC,OAAOgC,QAAQK,IACtB,IAAKtC,GAAEC,OAAOgC,QAAQW,QACtB,IAAK5C,GAAEC,OAAOgC,QAAQU,UACtB,IAAK3C,GAAEC,OAAOgC,QAAQgB,GACtB,IAAKjD,GAAEC,OAAOgC,QAAQa,MACtB,IAAK9C,GAAEC,OAAOgC,QAAQI,KACtB,IAAKrC,GAAEC,OAAOgC,QAAQS,KACrB8D,EAAMC,iBAEAtG,KAAKm0C,cACVn0C,KAAKm0C,aAAc,EACnBn0C,KAAKgyC,OAAOj9B,SAAU,oBAOzB,OAAS1O,EAAMvE,SACd,IAAKjC,GAAEC,OAAOgC,QAAQQ,KACrBtC,KAAKylC,QAASzlC,KAAK6xC,IACnB,MACD,KAAKhyC,GAAEC,OAAOgC,QAAQK,IACrBnC,KAAKylC,QAASzlC,KAAK+I,IACnB,MACD,KAAKlJ,GAAEC,OAAOgC,QAAQW,QACtB,IAAK5C,GAAEC,OAAOgC,QAAQgB,GACtB,IAAKjD,GAAEC,OAAOgC,QAAQa,MACrB3C,KAAKylC,QAAS58B,EAAQ7I,KAAK8xC,KAC3B,MACD,KAAKjyC,GAAEC,OAAOgC,QAAQU,UACtB,IAAK3C,GAAEC,OAAOgC,QAAQI,KACtB,IAAKrC,GAAEC,OAAOgC,QAAQS,KACrBvC,KAAKylC,QAAS58B,EAAQ7I,KAAK8xC,SAK9BsC,aAAc,WACRp0C,KAAKm0C,cACTn0C,KAAKm0C,aAAc,EACnBn0C,KAAKgyC,OAAOrnC,YAAa,qBAI3BwoC,kBAAmB,SAAU9sC,GAG5B,MAAKrG,MAAK0H,QAAQzG,UAA+B,IAAhBoF,EAAMkkB,OAA+B,IAAhBlkB,EAAMkkB,OAAelkB,EAAMkkB,QAAUpqB,GACnF,EAEHH,KAAKkT,SAAU,cAAe7M,MAAY,GACvC,GAERrG,KAAK2yC,UAAW,EAChB3yC,KAAK6yC,cAAe,EACpB7yC,KAAK8yC,YAAa,EAEb9yC,KAAKuxC,iBACTvxC,KAAK4yC,YAAc5yC,KAAKK,QAAQ,GAAGg0C,eAGpCr0C,KAAKylC,QAASp/B,GACdrG,KAAKkT,SAAU,UACR,IAGRohC,gBAAiB,WAChB,MAAKt0C,MAAK2yC,UACT3yC,KAAK2yC,UAAW,EAEX3yC,KAAKuxC,iBAETvxC,KAAKgyC,OAAOj9B,SAAU,6BAKpB/U,KAAKylC,QAHFzlC,KAAK8yC,WAEJ9yC,KAAK6yC,aAC0B,IAArB7yC,KAAK4yC,YAAoB,EAAI,EAE7B5yC,KAAK4yC,YAIe,IAArB5yC,KAAK4yC,YAAoB,EAAI,IAI7C5yC,KAAK8yC,YAAa,EAClB9yC,KAAKkT,SAAU,SACR,GAtBR,QA0BDqhC,qBAAsB,SAAUluC,GAG9B,MAAKrG,MAAKkT,SAAU,OAAQ7M,MAAY,GAChC,EAEHrG,KAAK2yC,WAAa3yC,KAAK0H,QAAQzG,UAGnCjB,KAAK8yC,YAAa,EAEb9yC,KAAKuxC,gBAETvxC,KAAKgyC,OAAOrnC,YAAa,6BAG1B3K,KAAKylC,QAASp/B,GAGdrG,KAAK6yC,aAAe7yC,KAAK4yC,cAAgB5yC,KAAKK,QAAQ,GAAGg0C,eAClD,GAdR,QAkBFL,gBAAiB,WACXh0C,KAAK2G,QAAU3G,KAAKwyC,UACxBxyC,KAAKylC,QAASzlC,KAAKwyC,WAIrBA,OAAQ,WACP,MAAQxyC,MAAKuxC,eAAiBvxC,KAAKK,QAAQ,GAAGg0C,cAAgBnvC,WAAYlF,KAAKK,QAAQ4Z,QAGxFm0B,OAAQ,WACPpuC,KAAKylC,QAAStlC,GAAW,GAAO,IAGjCslC,QAAS,SAAUxrB,EAAKu6B,EAAeC,GAItC,GAQCC,GAAMl3B,EAAOvZ,EAAM0wC,EACnBC,EAAQC,EACR3D,EAAS4D,EAASC,EAAgBlD,EAAK9oC,EAAK+oC,EAC5CkD,EAAQC,EAAYC,EAAYC,EAChCC,EAAeC,EAAUC,EACzBC,EAbGx7B,EAAO/Z,KACVw1C,EAAc31C,EAAEC,OAAOiM,aAAc/L,KAAKK,QAAS,GAAK,SACxDsX,EAAQ3X,KAAK0H,QAAQiQ,OAAS69B,EAC9BjO,EAAc5vB,EAAQ,WAAaA,EAAQ,GAC3Ci5B,EAAa5wC,KAAK0H,QAAQkpC,YAAc4E,EACxCrE,EAAkBP,EAAa,WAAaA,EAAa,kBACzDQ,EAAcpxC,KAAK0H,QAAQi7B,QAAU,iBAAmB,GACxD0O,EAAYrxC,KAAK0H,QAAQ88B,KAAO,WAAa,EA+B9C,IAvBAzqB,EAAKm4B,OAAO,GAAG7mC,WAAcrL,KAAKuxC,eAAiB,6DAA+D,kCAAmCJ,EAAiBC,EAAaC,GAAY58B,KAAM,KAChMzU,KAAK0H,QAAQzG,UAAYjB,KAAKK,QAAQwQ,KAAM,cAChD7Q,KAAK8T,UAIN9T,KAAK2G,MAAQ3G,KAAKwyC,SACbxyC,KAAK0H,QAAQmpC,YAAc7wC,KAAKuxC,gBAAiE,IAA/CvxC,KAAKkyC,OAAO1kC,KAAM,iBAAkBhM,SAC1FxB,KAAKmyC,QAAU,WACd,GAAIC,GAAKnyC,EAASiG,cAAe,MAEjC,OADAksC,GAAG/mC,UAAY,gBAAkBxL,EAAEC,OAAO8K,eACnC/K,EAAGuyC,GAAK1zB,UAAW3E,EAAKm4B,YAGjClyC,KAAKgyC,OAAOj9B,SAAU,SAAWwyB,EAAa,cAE9C2J,EAAUlxC,KAAKK,QACfy0C,GAAW90C,KAAKuxC,eAChBwD,EAAiBD,KAAe5D,EAAQ1jC,KAAM,UAC9CqkC,EAAOiD,EAAU5vC,WAAYgsC,EAAQ3sC,KAAM,QAAY,EACvDwE,EAAM+rC,EAAU5vC,WAAYgsC,EAAQ3sC,KAAM,QAAYwwC,EAAevzC,OAAS,EAC9EswC,EAASgD,GAAW5vC,WAAYgsC,EAAQ3sC,KAAM,SAAa,EAAMW,WAAYgsC,EAAQ3sC,KAAM,SAAa,EAEpF,gBAAR0V,GAAmB,CAQ9B,GAPAhW,EAAOgW,EAEP06B,EAAM,EAEND,EAAO10C,KAAKkyC,OAAOh6B,SAASw8B,KAC5Bl3B,EAAQxd,KAAKkyC,OAAO10B,QACpBo3B,EAASp3B,IAAQzU,EAAI8oC,GAAKC,IACpB9xC,KAAK2yC,UACT1uC,EAAK0oB,MAAQ+nB,EAAOC,GACpB1wC,EAAK0oB,MAAQ+nB,EAAOl3B,EAAQm3B,EAC7B,MAGAE,GADID,EAAS,GACC3wC,EAAK0oB,MAAQ+nB,GAASl3B,EAAU,IAEpC1U,KAAK2sC,OAAWxxC,EAAK0oB,MAAQ+nB,GAASl3B,EAAU,SAG/C,OAAPvD,IACJA,EAAM66B,EAAU5vC,WAAYgsC,EAAQj3B,OAAS,GAAMi3B,EAAQ,GAAGmD,eAE/DQ,GAAY3vC,WAAY+U,GAAQ43B,IAAU9oC,EAAM8oC,GAAQ,GAGzD,KAAKvtC,MAAOuwC,KAIZG,EAAWH,EAAU,KAAU9rC,EAAM8oC,GAAQA,EAG7CoD,GAAeD,EAASnD,GAAQC,EAChCoD,EAAaF,EAASC,EAEQ,EAAzBnsC,KAAKqkB,IAAK8nB,IAAoBnD,IAClCoD,GAAgBD,EAAa,EAAMnD,GAAUA,GAG9CqD,EAAiB,MAAMpsC,EAAI8oC,GAAKC,GAGhCkD,EAAS9vC,WAAYgwC,EAAWQ,QAAQ,IAEjB,mBAAXd,KACXA,EAASp3B,IAAWzU,EAAI8oC,GAAOC,IAE3B8C,EAAS,GAAKE,IAClBD,GAAYG,EAASnD,GAAQsD,GAAmB,EAAIrD,IAEtC,EAAV+C,IACJA,EAAU,GAGNA,EAAU,MACdA,EAAU,KAGGhD,EAATmD,IACJA,EAASnD,GAGLmD,EAASjsC,IACbisC,EAASjsC,GAGV/I,KAAKgyC,OAAOzwC,IAAK,OAAQszC,EAAU,KAEnC70C,KAAKgyC,OAAO,GAAGzG,aAAc,gBAAiBuJ,EAAUE,EAASD,EAAepxC,GAAIqxC,GAASzwC,KAAM,UAEnGvE,KAAKgyC,OAAO,GAAGzG,aAAc,iBAAkBuJ,EAAUE,EAASD,EAAepxC,GAAIqxC,GAAShnC,kBAE9FhO,KAAKgyC,OAAO,GAAGzG,aAAc,QAASuJ,EAAUE,EAASD,EAAepxC,GAAIqxC,GAAShnC,kBAEhFhO,KAAKmyC,SACTnyC,KAAKmyC,QAAQ5wC,IAAK,QAASszC,EAAU,KAIjC70C,KAAKgzC,UACToC,EAAgBp1C,KAAKgyC,OAAOx0B,QAAUxd,KAAKkyC,OAAO10B,QAAU,IAC5D63B,EAAWR,GAAWO,GAAkB,IAAMA,GAAkBP,EAAU,IAC1ES,EAAuB,MAAZT,EAAkB,EAAI/rC,KAAK+oC,IAAKuD,EAAgB,IAAMC,EAAU,KAE3Er1C,KAAKgzC,QAAQ7vC,KAAK,WACjB,GAAIwyC,GAAK91C,EAAGG,MAAOoU,SAAU,oBAC7BvU,GAAGG,MAAOwd,OAASm4B,EAAKN,EAAWC,GAAc,SAI7Cb,GAAqB,CAW1B,GAVAc,GAAe,EAGVT,GACJS,EAAerwC,WAAYgsC,EAAQj3B,SAAY+6B,EAC/C9D,EAAQj3B,IAAK+6B,KAEbO,EAAerE,EAAS,GAAImD,gBAAkBW,EAC9C9D,EAAS,GAAImD,cAAgBW,GAEzBh1C,KAAKkT,SAAU,eAAgB+G,MAAU,EAC5C,OAAO,GAEHu6B,GAAiBe,GACtBrE,EAAQ1nC,QAAS,YAKpBkqC,cAAe,SAAU/sC,GACxBA,IAAUA,EACLA,GACJ3G,KAAK0H,QAAQmpC,YAAclqC,EAC3B3G,KAAKylC,WACMzlC,KAAKmyC,UAChBnyC,KAAKmyC,QAAQ9jC,SACbrO,KAAKmyC,SAAU,IAIjBmB,UAAW,SAAU3sC,GACpB3G,KAAKgyC,OACHrnC,YAAa,UAAY3K,KAAK0H,QAAQiQ,OACtC5C,SAAU,UAAYpO,EAExB,IAAIivC,GAAe51C,KAAK0H,QAAQiQ,MAAQ3X,KAAK0H,QAAQiQ,MAAQ,UAC5DiuB,EAAWj/B,EAAQA,EAAQ,SAE5B3G,MAAKkxC,QACHvmC,YAAa,WAAairC,GAC1B7gC,SAAU,WAAa6wB,IAG1B2N,eAAgB,SAAU5sC,GACzB,GAAIkvC,GAAoB71C,KAAK0H,QAAQkpC,WAAa5wC,KAAK0H,QAAQkpC,WAAa,UAC3EkF,EAAgBnvC,EAAQA,EAAQ,SAEjC3G,MAAKkyC,OACHvnC,YAAa,WAAakrC,GAC1B9gC,SAAU,WAAa+gC,IAG1BrC,SAAU,SAAU9sC,GACnBA,IAAUA,EACJ3G,KAAKuxC,gBAAmBvxC,KAAKwxC,gBAClCxxC,KAAKkyC,OAAOrrC,SAAS+M,YAAa,UAAWjN,GAC7C3G,KAAKK,QAAQuT,YAAa,UAAWjN,IAEtC3G,KAAKkyC,OAAOt+B,YAAa,UAAWjN,IAGrC6sC,YAAa,SAAU7sC,GACtB3G,KAAKkyC,OAAOt+B,YAAa,gBAAiBjN,GAEpC3G,KAAKuxC,gBACVvxC,KAAKkxC,QAAQt9B,YAAa,gBAAiBjN,IAI7CgtC,aAAc,SAAUhtC,GACvBA,IAAUA,EACV3G,KAAKK,QAAQwQ,KAAM,WAAYlK,GAC/B3G,KAAKkyC,OACHt+B,YAAa,oBAAqBjN,GAClCpC,KAAM,gBAAiBoC,GAEzB3G,KAAKK,QAAQuT,YAAa,oBAAqBjN,KAG9C9G,EAAEC,OAAOkJ,UAAU8iC,aAElB/rC,GAEJ,SAAWF,GAIX,QAASk2C,KAMR,MALMC,KACLA,EAAQn2C,EAAG,eACVmjC,QAAS,6CAGJgT,EAAM1T,QARd,GAAI0T,EAWJn2C,GAAEqQ,OAAQ,gBAAiBrQ,EAAEC,OAAOoyC,QACnCxqC,SACCuuC,cAAc,EACdC,WAAW,GAGZjjC,QAAS,WACRjT,KAAK+Q,SAELlR,EAAE+B,OAAQ5B,MACTm2C,cAAe,KACfC,OAAQ,KACRC,eAAe,IAGhBr2C,KAAK2T,WAAY,eAAgB3T,KAAK0H,QAAQuuC,cAE9Cj2C,KAAK4S,IAAK5S,KAAKgyC,QAAUpF,WAAe,eACxC5sC,KAAK4S,IAAK5S,KAAKkyC,OAAO1sC,IAAKxF,KAAKC,WAAcizC,SAAa,eAC3DlzC,KAAKsnC,YAINgP,eAAgB,WACf,GAAIC,GAAYv2C,KAAKgyC,OAAO95B,QAE5BlY,MAAKo2C,OAAOl+B,QACXw8B,KAAM6B,EAAU7B,MAAS10C,KAAKgyC,OAAOx0B,QAAUxd,KAAKo2C,OAAO54B,SAAY,EACvExF,IAAKu+B,EAAUv+B,IAAMhY,KAAKo2C,OAAO9wC,cAAgB,KAInDqO,WAAY,SAAUhO,EAAKgB,GAC1B3G,KAAK+Q,OAAQpL,EAAKgB,GAEL,cAARhB,EACJ3F,KAAKgyC,OAAO9jC,KAAMvH,IAAU3G,KAAK0H,QAAQ88B,KAAOxkC,KAAKwyC,SAAW,IAC7C,iBAAR7sC,GACNgB,IAAU3G,KAAKo2C,SACnBp2C,KAAKo2C,OAASL,IACZhhC,SAAU,YAAe/U,KAAK0H,QAAQiQ,OAAS,MAC/ClC,OACAwG,aAAcjc,KAAKK,WAMxBolC,QAAS,WACRzlC,KAAK+Q,OAAOxN,MAAOvD,KAAMwD,WACzBxD,KAAKsnC,YAGNA,SAAU,WACT,GAAsBkP,GAAlBpoB,EAAIpuB,KAAK0H,OAER0mB,GAAE6nB,cAKNj2C,KAAKgyC,OAAOhuC,WAAY,SAGzBwyC,EAAWx2C,KAAKwyC,SACXgE,IAAax2C,KAAKm2C,gBAGvBn2C,KAAKm2C,cAAgBK,EAEhBpoB,EAAE6nB,cAAgBj2C,KAAKo2C,SAC3Bp2C,KAAKs2C,iBACLt2C,KAAKo2C,OAAOloC,KAAMsoC,IAGdpoB,EAAE8nB,YAAcl2C,KAAK0H,QAAQ88B,MACjCxkC,KAAKgyC,OAAO9jC,KAAMsoC,KAIpBC,WAAY,WACNz2C,KAAK0H,QAAQuuC,eAAiBj2C,KAAKq2C,gBACvCr2C,KAAKgyC,OAAO9jC,KAAM,IAClBlO,KAAKo2C,OAAO5gC,OACZxV,KAAKs2C,iBACLt2C,KAAKq2C,eAAgB,IAIvBK,WAAY,WACX,GAAItoB,GAAIpuB,KAAK0H,OAER0mB,GAAE6nB,cAAgBj2C,KAAKq2C,gBACtBjoB,EAAE8nB,YAAc9nB,EAAEoW,MACtBxkC,KAAKgyC,OAAO9jC,KAAMlO,KAAKwyC,UAExBxyC,KAAKo2C,OAAO3gC,OACZzV,KAAKq2C,eAAgB,OAKpBt2C,GAEJ,SAAWF,EAAGM,GAEdN,EAAEqQ,OAAQ,oBAAqBrQ,EAAE+B,QAEhC8F,SACCivC,OAAQ,KACRC,QAAS,MACTj/B,MAAO,KACPkc,UAAU,EACVoY,aAAc,KACdtJ,SAAS,EACT6B,MAAM,GAGPvxB,QAAS,WACDjT,KAAK0H,QAAQmsB,SAGlBh0B,EAAE+B,OAAQ5B,MACT62C,WAAY72C,KAAKK,QAAQwG,SACzBsa,GAAInhB,KAAKK,QAAQmN,KAAM,qBAAsB7J,GAAI,GACjDyd,IAAKphB,KAAKK,QAAQmN,KAAM,sBAAuB7J,GAAG,GAClDwB,KAAMnF,KAAKK,QAAQ8R,IAAK,GAAI89B,UAN7BjwC,KAAK8zB,WAUN9zB,KAAK+rC,mBAGL/rC,KAAK82C,kBAAoB92C,KAAKK,QAAQkE,KAAM,YACb,MAA1BvE,KAAK82C,mBACT92C,KAAKmhB,GAAG5c,KAAM,WAAYvE,KAAK82C,mBAEhC92C,KAAKK,QAAQkE,KAAM,WAAY,MAC/BvE,KAAK4S,KACJ5P,MAAU,sBAGNhD,KAAKK,QAAQ+yB,GAAI,cACrBpzB,KAAK0T,aACJzS,UAAY,IAIdjB,KAAK4S,IAAK5S,KAAK62C,YACdjT,MAAS,UACTzS,UAAa,QACbC,WAAc,WAGfpxB,KAAK4S,IAAK5S,KAAKmhB,IACdkyB,QAAW,aAGZrzC,KAAK4S,KACJ4jB,OAAU,aAIb8W,kBAAmB,WAClBttC,KAAKmhB,GAAGne,SAGTkN,OAAQ,WACP,MAAOlQ,MAAK62C,YAGbE,MAAO,WACN/2C,KAAK62C,WAAWlsC,YAAa,wBACV,WAAd3K,KAAKmF,KACTnF,KAAKK,QAAQ8R,IAAK,GAAIkiC,cAAgB,EAEtCr0C,KAAKK,QAAQwQ,KAAM,WAAW,GAE/B7Q,KAAKK,QAAQmJ,QAAS,WAGvBwtC,OAAQ,WACPh3C,KAAK62C,WAAW9hC,SAAU,wBACP,WAAd/U,KAAKmF,KACTnF,KAAKK,QAAQ8R,IAAK,GAAIkiC,cAAgB,EAEtCr0C,KAAKK,QAAQwQ,KAAM,WAAW,GAE/B7Q,KAAKK,QAAQmJ,QAAS,WAGvBsqB,SAAU,WACT,GAAI+iB,GAAah3C,EAAG,SACnB6H,EAAU1H,KAAK0H,QACfrH,EAAUL,KAAKK,QACfsX,EAAQjQ,EAAQiQ,MAAQjQ,EAAQiQ,MAAQ,UAGxCwJ,EAAKthB,EAAG,WACPiB,KAAQ,MAETsgB,EAAMvhB,EAAG,iBACTsF,EAAO9E,EAAQ8R,IAAK,GAAI89B,QACxB0G,EAAoB,UAATxxC,EACVuC,EAAQivC,OAASt2C,EAAQmN,KAAM,UAAW7J,GAAI,GAAIsK,OACnD2oC,EAAqB,UAATzxC,EACXuC,EAAQkvC,QAAUv2C,EAAQmN,KAAM,UAAW7J,GAAI,GAAIsK,MAEpDkT,GACEpM,SAAU,oDACV9G,KAAM0oC,GACRv1B,EACErM,SAAU,qBACV9G,KAAM2oC,GAERC,EACE9hC,SAAU,wCACE4C,EAAQ,KAClBjQ,EAAQukC,aAAevkC,EAAQukC,aAAe,IAAO,KACnD5rC,EAAQ+yB,GAAI,aACf/yB,EACEmN,KAAM,UACN7J,GAAI,GACJyvB,GAAI,aAAkB,uBAAyB,KAChD/yB,EAAQ+yB,GAAG,aAAe,qBAAsB,KAChD1rB,EAAQi7B,QAAU,iBAAkB,KACpCj7B,EAAQ88B,KAAO,WAAY,KAC7BzmB,OAAQoD,EAAIC,GAEd/gB,EACE0U,SAAU,uBACVkiC,MAAOJ,GACPl+B,SAAUk+B,GAEbh3C,EAAE+B,OAAQ5B,MACT62C,WAAYA,EACZ11B,GAAIA,EACJC,IAAKA,EACLjc,KAAMA,KAIRipC,OAAQ,WACPpuC,KAAKylC,WAGNA,QAAS,WACR,GAAI1c,GACHmuB,EAAoBl3C,KAAK62C,WAAWziC,SAAU,wBAA2B,SAAW,OAGpF2U,GADkB,WAAd/oB,KAAKmF,KACKnF,KAAKK,QAAQ8R,IAAK,GAAIkiC,cAAgB,EAAM,SAAU,QAExDr0C,KAAKK,QAAQwQ,KAAM,WAAc,SAAU,QAGnDkY,IAAcmuB,GAClBl3C,KAAM+oB,MAIRouB,QAAS,WACR,GAAIpuB,GAAY/oB,KAAK62C,WAAWziC,SAAU,wBAA2B,QAAU,QAE/EpU,MAAM+oB,MAGPquB,SAAU,SAAUlsC,GACdA,EAAEqf,QAAU1qB,EAAEC,OAAOgC,QAAQS,KACjCvC,KAAK+2C,QACM7rC,EAAEqf,QAAU1qB,EAAEC,OAAOgC,QAAQa,MACxC3C,KAAKg3C,SACM9rC,EAAEqf,QAAU1qB,EAAEC,OAAOgC,QAAQc,QACxC5C,KAAKm3C,UACLjsC,EAAE5E,mBAIJoN,YAAa,SAAUhM,GACtB,GAAKA,EAAQiQ,QAAUxX,EAAY,CAClC,GAAIy1C,GAAeluC,EAAQiQ,MAAQjQ,EAAQiQ,MAAQ,UAClDiuB,EAAWl+B,EAAQiQ,MAAQjQ,EAAQiQ,MAAQ,SAE5C3X,MAAKkQ,SACHvF,YAAa,UAAYirC,GACzB7gC,SAAU,UAAY6wB,GAEpBl+B,EAAQivC,SAAWx2C,GACvBH,KAAKmhB,GAAGlT,KAAMvG,EAAQivC,QAElBjvC,EAAQkvC,UAAYz2C,GACxBH,KAAKohB,IAAInT,KAAMvG,EAAQkvC,SAEnBlvC,EAAQzG,WAAad,GACzBH,KAAKkQ,SAAS0D,YAAa,oBAAqBlM,EAAQzG,UAEpDyG,EAAQ88B,OAASrkC,GACrBH,KAAKkQ,SAAS0D,YAAa,UAAWlM,EAAQ88B,MAE1C98B,EAAQi7B,UAAYxiC,GACxBH,KAAKkQ,SAAS0D,YAAa,gBAAiBlM,EAAQi7B,SAGrD3iC,KAAK+Q,OAAQrJ,IAGd2L,SAAU,WACJrT,KAAK0H,QAAQmsB,WAGa,MAA1B7zB,KAAK82C,kBACT92C,KAAKK,QAAQkE,KAAM,WAAYvE,KAAK82C,mBAEpC92C,KAAKK,QAAQ2D,WAAY,YAE1BhE,KAAKmhB,GAAG9S,SACRrO,KAAKohB,IAAI/S,SACTrO,KAAKK,QAAQ+lC,SACbpmC,KAAK62C,WAAWxoC,SAChBrO,KAAK2K,YAAa,0BAGjB9K,EAAEC,OAAOkJ,UAAU8iC,aAElB/rC,GAEJ,SAAWF,EAAGM,GACbN,EAAEqQ,OAAQ,qBAAsBrQ,EAAE+B,QAEjC8F,SACCiQ,MAAO,KACPi5B,WAAY,KACZjO,SAAS,EACT6B,MAAM,EACNqM,WAAW,GAGZ59B,QAAS,WACR,GAAIokC,GAAMr3C,KAAKK,QACfi3C,EAAUt3C,KAAK0H,QAAQ88B,KAAO,yBAA2B,iBACzD+S,EAAcF,EAAI7pC,KAAM,SAAUuK,QAClCy/B,EAAaH,EAAI7pC,KAAM,SAAUs5B,OACjC2Q,EAASJ,EAAI7pC,KAAM,SAAUuK,QAC7B2/B,EAAqB73C,EAAEoE,KAAMszC,EAAYplC,IAAK,GAAK,kBAClDtS,EAAEoE,KAAMszC,EAAYrF,SAAS//B,IAAK,GAAK,iBACxCwlC,EAAoB93C,EAAEoE,KAAMuzC,EAAWrlC,IAAI,GAAI,kBAC9CtS,EAAEoE,KAAMuzC,EAAWtF,SAAS//B,IAAK,GAAK,iBACvCylC,EAAeF,EAAmBxF,OAClC2F,EAAcF,EAAkBzF,OAChC4F,EAAcJ,EAAmB1F,OACjC+F,EAAWl4C,EAAG,0CAA2C8Y,SAAU0+B,EAEnEE,GAAYxiC,SAAU,wBACtByiC,EAAWziC,SAAU,uBACrBsiC,EAAItiC,SAAUuiC,GAEdM,EAAaj/B,SAAUo/B,GACvBF,EAAYl/B,SAAUo/B,GACtBN,EAAOx7B,aAAco7B,GACrBS,EAAYp5B,UAAWm5B,GAEvBh4C,EAAE+B,OAAQ5B,MACTu3C,YAAaA,EACbC,WAAYA,EACZI,aAAcA,EACdC,YAAaA,EACbJ,OAAQA,EACRO,WAAY,KACZC,eAAe,EACfF,SAAUA,EACVG,QAAQ,IAGTl4C,KAAKylC,UACLzlC,KAAK4S,IAAK5S,KAAKK,QAAQmN,KAAM,0BAC5B2qC,iBAAoB,oBACpBC,UAAa,aACbC,UAAa,aACbC,kBAAqB,UACrBxb,KAAQ,UACRmW,MAAS,YAEVjzC,KAAK4S,KACJ2lC,UAAY,YAEbv4C,KAAK4S,IAAK5S,KAAKK,QAAQyJ,QAAS,SAC/BypB,MAAQ,iBAETvzB,KAAK4S,IAAKklC,GACTlL,WAAc,sBAGhB4L,aAAc,WACb,GAAIz+B,GAAO/Z,IAEXqD,YAAY,WACX0W,EAAK0+B,oBACJ,IAGHC,iBAAkB,SAAUryC,GAK3B,MAHAxG,GAAEoE,KAAMjE,KAAKu3C,YAAYplC,IAAI,GAAI,iBAAkBwgC,UAAW,EAC9D9yC,EAAEoE,KAAMjE,KAAKu3C,YAAYplC,IAAI,GAAI,iBAAkBszB,QAASp/B,GAC5DxG,EAAEoE,KAAMjE,KAAKu3C,YAAYplC,IAAI,GAAI,iBAAkBe,SAAU,UACtD,GAGRylC,WAAY,SAAUtyC,GACrB,GAAI0R,GAAQlY,EAAGwG,EAAMmL,QAAS4hB,GAAIpzB,KAAKu3C,aACtCqB,EAAc,EAAY54C,KAAKw3C,WAAax3C,KAAKu3C,WAKlD,OAHAv3C,MAAKi4C,eAAgB,EAGE,UAAhBj4C,KAAKk4C,QAAsBngC,GAA6B,SAAhB/X,KAAKk4C,SAAsBngC,GACzElY,EAAEoE,KAAM20C,EAAYzmC,IAAI,GAAI,iBAAkBwgC,UAAW,EACzD9yC,EAAEoE,KAAM20C,EAAYzmC,IAAI,GAAI,iBAAkBszB,QAASp/B,IAChD,GAHR,QAODwyC,WAAY,SAAUxyC,GACrB,GAAI0R,GAAQlY,EAAGwG,EAAMmL,QAAS4hB,GAAIpzB,KAAKu3C,YAEvCv3C,MAAKk4C,QAAS,EAGdl4C,KAAKK,QAAQmN,KAAM,SAAUhE,QAAS,YACtCxJ,KAAK43C,aAAar2C,IAAK,UAAWwW,EAAQ,EAAI,KAG/C+gC,kBAAmB,SAAUzyC,GAC5BrG,KAAKi4C,eAAgB,EAEhBp4C,EAAGwG,EAAMiP,cAAc9D,QAAS4C,SAAU,qBAC9CpU,KAAKi4C,eAAgB,EACrBj4C,KAAKg4C,WAAan4C,EAAGwG,EAAMmL,QAASyI,QAItCvG,YAAa,SAAUhM,GACjBA,EAAQiQ,QAAUxX,GACtBH,KAAKszC,UAAW5rC,EAAQiQ,OAGpBjQ,EAAQkpC,aAAezwC,GAC3BH,KAAKuzC,eAAgB7rC,EAAQkpC,YAGzBlpC,EAAQ88B,OAASrkC,GACrBH,KAAKyzC,SAAU/rC,EAAQ88B,MAGnB98B,EAAQmpC,YAAc1wC,GAC1BH,KAAK0zC,cAAehsC,EAAQmpC,WAGxBnpC,EAAQzG,WAAad,GACzBH,KAAK2zC,aAAcjsC,EAAQzG,UAG5BjB,KAAK+Q,OAAQrJ,GACb1H,KAAKylC,WAGNA,QAAS,WACR,GAAI4R,GAAMr3C,KAAKK,QACd+tB,EAAIpuB,KAAK0H,SAEL1H,KAAKu3C,YAAYnkB,GAAI,cAAiBpzB,KAAKw3C,WAAWpkB,GAAI,gBAC9DpzB,KAAK0H,QAAQzG,UAAW,GAGzBo2C,EAAI7pC,KAAM,SAAU0kC,QACnBv6B,MAAOyW,EAAEzW,MACTi5B,WAAYxiB,EAAEwiB,WACd3vC,SAAUmtB,EAAEntB,SACZ0hC,QAASvU,EAAEuU,QACX6B,KAAMpW,EAAEoW,KACRqM,UAAWziB,EAAEyiB,YACXqB,OAAQ,WACXlyC,KAAKy4C,oBAGNM,QAAS,SAAU1yC,GAClB,GAAoB,UAAfA,EAAMlB,KAEV,MADAnF,MAAKy4C,oBACE,CAGR,IAAI1+B,GAAO/Z,KACV6xC,EAAM3sC,WAAYlF,KAAKu3C,YAAYt9B,MAAO,IAC1ClR,EAAM7D,WAAYlF,KAAKw3C,WAAWv9B,MAAO,IACzClC,EAAQlY,EAAGwG,EAAMmL,QAAS4C,SAAU,wBACpC4kC,EAAajhC,EAAQ/X,KAAKu3C,YAAcv3C,KAAKw3C,WAC7CoB,EAAc7gC,EAAQ/X,KAAKw3C,WAAax3C,KAAKu3C,WAE9C,IAAOv3C,KAAKu3C,YAAYt9B,MAAQja,KAAKw3C,WAAWv9B,OAAwB,cAAf5T,EAAMlB,OAAyBtF,EAAEwG,EAAMmL,QAAQ4C,SAAS,oBAChH4kC,EAAWlc,WACL,IAAoB,cAAfz2B,EAAMlB,KACjB,MA8BD,OA5BK0sC,GAAM9oC,IAAQ/I,KAAKi4C,eAEvBe,EAAW/+B,IAAKlC,EAAQhP,EAAK8oC,GAAMK,OAAQ,WAC3ClyC,KAAKkT,SAAU,cACJ2+B,EAAM9oC,IAEjBiwC,EAAW/+B,IAAKja,KAAKg4C,YAAa9F,OAAQ,WAG1C7uC,WAAY,WACXu1C,EAAY3+B,IAAKlC,EAAQ85B,EAAK9oC,GAAMmpC,OAAQ,WAC5CryC,EAAEoE,KAAM20C,EAAYzmC,IAAI,GAAI,iBAAkB6/B,OAAOhvC,QACrD+W,EAAK69B,aAAar2C,IAAK,UAAWwW,EAAQ,GAAK,GAC/CgC,EAAK7G,SAAU,cACb,GACHlT,KAAKk4C,OAAS,EAAY,QAAU,QAGhCrG,IAAQ9oC,GACZlJ,EAAEoE,KAAM+0C,EAAW7mC,IAAI,GAAI,iBAAkB6/B,OAAOzwC,IAAK,UAAW,GACpE1B,EAAEoE,KAAM20C,EAAYzmC,IAAI,GAAI,iBAAkB6/B,OAAOzwC,IAAK,UAAW,KAErE1B,EAAEoE,KAAM20C,EAAYzmC,IAAI,GAAI,iBAAkB6/B,OAAOzwC,IAAK,UAAW,IACrE1B,EAAEoE,KAAM+0C,EAAW7mC,IAAI,GAAI,iBAAkB6/B,OAAOzwC,IAAK,UAAW,KAGrEvB,KAAKy4C,mBAEA5G,GAAO9oC,GACJ,EADR,QAKD0vC,iBAAkB,WACjB,GAAI5G,GAAMjrC,SAAU/G,EAAEoE,KAAMjE,KAAKu3C,YAAYplC,IAAI,GAAI,iBAAkB6/B,OAAO7/B,IAAI,GAAGW,MAAM4hC,KAAM,IAChG3rC,EAAMnC,SAAU/G,EAAEoE,KAAMjE,KAAKw3C,WAAWrlC,IAAI,GAAI,iBAAkB6/B,OAAO7/B,IAAI,GAAGW,MAAM4hC,KAAM,IAC5Fl3B,EAASzU,EAAM8oC,CAEhB7xC,MAAKK,QAAQmN,KAAM,iBAAkBjM,KACpC03C,cAAepH,EAAM,IACrBr0B,MAASA,EAAQ,OAInB81B,UAAW,SAAU3sC,GACpB3G,KAAKu3C,YAAYrF,OAAQ,SAAU,QAASvrC,GAC5C3G,KAAKw3C,WAAWtF,OAAQ,SAAU,QAASvrC,IAG5C4sC,eAAgB,SAAU5sC,GACzB3G,KAAKu3C,YAAYrF,OAAQ,SAAU,aAAcvrC,GACjD3G,KAAKw3C,WAAWtF,OAAQ,SAAU,aAAcvrC,IAGjD8sC,SAAU,SAAU9sC,GACnB3G,KAAKu3C,YAAYrF,OAAQ,SAAU,OAAQvrC,GAC3C3G,KAAKw3C,WAAWtF,OAAQ,SAAU,OAAQvrC,GAC1C3G,KAAKK,QAAQuT,YAAa,YAAajN,IAGxC+sC,cAAe,SAAU/sC,GACxB3G,KAAKu3C,YAAYrF,OAAQ,SAAU,YAAavrC,GAChD3G,KAAKw3C,WAAWtF,OAAQ,SAAU,YAAavrC,IAGhDgtC,aAAc,SAAUhtC,GACvB3G,KAAKu3C,YAAY1mC,KAAM,WAAYlK,GACnC3G,KAAKw3C,WAAW3mC,KAAM,WAAYlK,IAGnC0M,SAAU,WACTrT,KAAKy3C,OAAO/4B,UAAW1e,KAAKK,SAC5BL,KAAKK,QAAQsK,YAAa,0BAC1B3K,KAAKu3C,YAAYN,MAAOj3C,KAAK43C,cAC7B53C,KAAKw3C,WAAWP,MAAOj3C,KAAK63C,aAC5B73C,KAAK+3C,SAAS1pC,SACdrO,KAAKK,QAAQmN,KAAM,SAAU7C,YAAa,4CAA6CunC,OAAQ,aAG9FryC,EAAEC,OAAOkJ,UAAU8iC,aAEnB/rC,GAEJ,SAAWF,EAAGM,GAEbN,EAAEqQ,OAAQ,mBAAoBrQ,EAAEC,OAAOo5C,WACtCxxC,SACCyxC,UAAU,EACVC,aAAc,cAGfnmC,QAAS,WACRjT,KAAK+Q,SAEA/Q,KAAK+vC,WACT/vC,KAAK0H,QAAQyxC,UAAW,GAGlBn5C,KAAK0H,QAAQyxC,UAAYn5C,KAAKmwC,gBACpCnwC,KAAKq5C,gBAIPC,YAAa,WACZ,MAAOz5C,GAAG,mIAGP0E,KAAM,QAASvE,KAAK0H,QAAQ0xC,cAC5BnrC,KAAMjO,KAAK0H,QAAQ0xC,eAGvBG,eAAgB,SAAUlzC,GACzBrG,KAAKK,QAAQ4Z,IAAK,IACfjX,QACAwG,QAAS,UAEZxJ,KAAKw5C,UAAUzkC,SAAU,yBACzB1O,EAAMC,kBAGP+yC,aAAc,WAEPr5C,KAAK0H,QAAQmsB,UAClB7zB,KAAKy5C,gBAGN55C,EAAE+B,OAAQ5B,MACTw5C,UAAWx5C,KAAKkQ,SAAS1C,KAAK,sBAG/BxN,KAAK05C,mBAEL15C,KAAK25C,gBAINF,cAAe,WAEdz5C,KAAKs5C,cAAc3gC,SAAU3Y,KAAKkQ,UAClClQ,KAAKkQ,SAAS6E,SAAU,uBAIzB2kC,iBAAkB,WAEjB15C,KAAK4S,IAAK5S,KAAKw5C,WACd5V,MAAS,mBAGV5jC,KAAK4S,KACJqgC,MAAS,eACTzc,OAAU,eACV/kB,MAAS,eACTzO,MAAS,eACT85B,KAAQ,eACR8c,IAAO,eACPC,MAAS,kBAMXC,aAAc,WACb95C,KAAKwU,KAAMxU,KAAKw5C,UAAW,SAC3Bx5C,KAAKwU,KAAMxU,KAAKK,QAAS,4CAG1BqT,YAAa,SAAUhM,GACtB1H,KAAK+Q,OAAQrJ,GAERA,EAAQyxC,WAAah5C,GACxBH,KAAKK,QAAQ+yB,GAAI,sCACb1rB,EAAQyxC,SACZn5C,KAAKq5C,eAELr5C,KAAK+5C,iBAIFryC,EAAQ0xC,eAAiBj5C,GAAaH,KAAKw5C,YAAcr5C,GAC7DH,KAAKw5C,UAAUvrC,KAAMvG,EAAQ0xC,cAC3B70C,KAAK,QAASmD,EAAQ0xC,eAI1BO,aAAc,WACb35C,KAAK2U,OAAQ,oBAAqB,IAGnCqlC,kBAAmB,WAClBh6C,KAAKw5C,UAAU5lC,YAAa,yBAA0B5T,KAAKK,QAAQ4Z,QAGpE8/B,cAAe,WACd/5C,KAAKkQ,SAASvF,YAAa,sBAC3B3K,KAAK85C,eACL95C,KAAKw5C,UAAUnrC,UAGhBgF,SAAU,WACTrT,KAAK+Q,SACA/Q,KAAK0H,QAAQyxC,UACjBn5C,KAAK+5C,oBAMLh6C,GAEJ,SAAWF,EAAGM,GAEbN,EAAEqQ,OAAQ,mBAAoBrQ,EAAEC,OAAOo5C,WACtCxxC,SACCuyC,UAAS,EACTC,mBAAoB,KAGrBjnC,QAAS,WACRjT,KAAK+Q,SAEA/Q,KAAK0H,QAAQuyC,UAAYj6C,KAAKgwC,YAClChwC,KAAKm6C,aAIPA,UAAW,WACVn6C,KAAKK,QAAQ0U,SAAU,yBAEvB/U,KAAK4S,KACJqgC,MAAS,WACTzc,OAAU,WACV/kB,MAAS,WACTooC,MAAS,aAMV75C,KAAK4S,KAAK,EAAM5S,KAAKC,UAGpBm6C,SAAY,cACZC,oBAAuB,cACvBC,aAAgB,cAChBC,UAAa,iBAWfC,YAAa,SAAUn0C,GACjBxG,EAAEmtC,SAAU3mC,EAAMmL,OAAQxR,KAAKK,QAAS,KAC5CL,KAAKK,QAAQ+yB,GAAI,cAEG,wBAAf/sB,EAAMlB,MACVnF,KAAKK,QACH0U,SAAU,gCACV0U,kBACA5pB,EAAEwY,MAAO,WACRrY,KAAKK,QAAQsK,YAAa,iCACxB3K,MACJ,cAEFA,KAAKy6C,yBAIPC,gBAAiB,WAChB16C,KAAKK,QAAQsK,YAAa,yBAC1B3K,KAAKwU,KAAMxU,KAAKK,QAAS,4BACzBL,KAAKwU,KAAMxU,KAAKC,SACf,wDAGF06C,aAAc,KAEdF,qBAAsB,SAAUv3C,GAC1BlD,KAAK26C,cACTzgC,aAAcla,KAAK26C,cAEfz3C,IAAU/C,EACdH,KAAK46C,gBAEL56C,KAAK26C,aAAe36C,KAAK2U,OAAQ,gBAAiBzR,IAIpD23C,SAAU,WACT76C,KAAKy6C,qBAAsBz6C,KAAK0H,QAAQwyC,qBAGzCU,cAAe,WACd,GAAIE,GAAYC,EAAeC,EAAeC,EAAcloB,EAC3DmoB,EAAWC,EAAcC,EAAcnvC,EACvCgM,EAAYjY,KAAKE,OAAO+X,WACzBjY,MAAK26C,aAAe,EAGZ,UAAY36C,MAAKK,QAAS,IACjCL,KAAKK,QAAQkB,KACZ0K,OAAU,EACVovC,aAAc,EACdC,aAAc,IAIhBL,EAAej7C,KAAKK,QAAS,GAAI46C,aACjCloB,EAAe/yB,KAAKK,QAAS,GAAI0yB,aACjCmoB,EAAYh2C,WAAYlF,KAAKK,QAAQkB,IAAK,qBAC1C45C,EAAej2C,WAAYlF,KAAKK,QAAQkB,IAAK,wBAC7C65C,EAAeF,EAAYC,EAC3BlvC,EAASgvC,EAAeG,EAAe,GAQjB,IAAjBroB,IACJ+nB,EAAa51C,WAAYlF,KAAKK,QAAQkB,IAAK,gBAC3Cw5C,EAAgB71C,WAAYlF,KAAKK,QAAQkB,IAAK,mBAC9Cy5C,EAAgBF,EAAaC,EAE7B9uC,GAAU+uC,GAGXh7C,KAAKK,QAAQkB,KACZ0K,OAAUA,EACVovC,aAAc,GACdC,aAAc,KAGft7C,KAAKE,OAAO+X,UAAWA,IAGxBwtB,QAAS,WACHzlC,KAAK0H,QAAQuyC,UAAYj6C,KAAKgwC,YAClChwC,KAAK46C,iBAIPlnC,YAAa,SAAUhM,GAEtB1H,KAAK+Q,OAAQrJ,GAERA,EAAQuyC,WAAa95C,GAAaH,KAAKgwC,aACtCtoC,EAAQuyC,SACZj6C,KAAKm6C,YAELn6C,KAAK06C,uBAMN36C,GAEJ,SAAWF,GAEXA,EAAEqQ,OAAQ,oBAAqBrQ,EAAE+B,QAChC6L,aAAc,0EAEd/F,SACCiQ,MAAO,KACPswB,KAAM,UACNjE,QAAS,QACT8K,QAAQ,EACRnM,SAAS,EACT6F,QAAQ,EACRqG,YAAY,EACZnM,aAAc,KACd2F,aAAc,KACdkT,0BAA0B,EAC1BC,UAAW,QACXC,YAAY,EAEZ3L,iBAAkB,mBAAmB9uC,KAAM8E,UAAUoZ,WAAcpZ,UAAUC,UAAUsR,QAAS,eAAkB,GAClHmtB,MAAM,GAGPwK,QAAS,WACR,MAAOnvC,GAAG,WAGX8zC,aAAc,SAAUhtC,GAGvB,MAFA3G,MAAKK,QAAQkE,KAAM,WAAYoC,GAC/B3G,KAAK07C,OAAOn3C,KAAM,gBAAiBoC,GAC5B3G,KAAK2T,WAAY,WAAYhN,IAGrCg1C,aAAe,WACd,GAAI5hC,GAAO/Z,IAEXqD,YAAY,WACX0W,EAAK2hC,OAAO14C,SACV,KAGJ44C,eAAgB,WACf,MAAO57C,MAAK67C,OAAOruC,KAAM,WAI1BsuC,cAAe,WACd,GAAIhN,GAAS9uC,KAAK0H,QAAQonC,QAAU9uC,KAAKK,QAAQ0J,QAAS,UACzDy6B,EAAOxkC,KAAK0H,QAAQ88B,MAAQxkC,KAAKK,QAAQ0J,QAAS,QAClDm+B,EAAU,IAKHloC,KAAKK,QAAQ,GAAGgL,UAAUgM,QAAS,iBAC1C6wB,EAAU,iBAGFloC,KAAKK,QAAQ,GAAGgL,UAAUgM,QAAS,kBAC3C6wB,EAAU,iBAGN4G,IACJ5G,GAAW,kBAEP1D,IACJ0D,GAAW,YAGZloC,KAAK67C,OAAS77C,KAAKK,QAAQsK,YAAa,4BAA6ByiC,KAAM,wBAA0BlF,EAAU,MAC/GloC,KAAK+7C,SAAY/7C,KAAK67C,OAAOt3C,KAAM,OAAY,UAAYvE,KAAKyB,KAChEzB,KAAKg8C,SAAWh8C,KAAK+7C,SAAW,UAChC/7C,KAAKosC,MAAQvsC,EAAG,cAAeG,KAAK+7C,SAAU,MAC9C/7C,KAAKi8C,WAAaj8C,KAAK67C,OAAQ,GAAIK,UAGpC7oC,SAAU,WACT,GAAI07B,GAAU/uC,KAAKK,QAAQe,QAAS,aAC/B2tC,GAAQvtC,OAAS,IAChButC,EAAQ3b,GAAI,gCAChBpzB,KAAKK,QAAQ0U,SAAUg6B,EAAQ36B,SAAU,eAAkB,cAAgB,gBAE5EpU,KAAKK,QAAQoa,YAAas0B,GAC1BA,EAAQ1gC,WAIV4E,QAAS,WACRjT,KAAK87C,gBAEL97C,KAAK07C,OAAS17C,KAAKgvC,SAEnB,IAAIj1B,GAAO/Z,KAEV0H,EAAU1H,KAAK0H,QAEfs8B,EAAUt8B,EAAQugC,KAASvgC,EAAQs8B,SAAWhkC,KAAK67C,OAAO9xC,QAAS,YAAgB,EAEnF2xC,EAAS17C,KAAK07C,OACZz/B,aAAcjc,KAAK67C,QACnBt3C,KAAM,KAAMvE,KAAKg8C,UACjBjnC,SAAU,UACRrN,EAAQugC,KAAS,YAAcvgC,EAAQugC,KAAO,gBAAkBjE,GAChEt8B,EAAQmnC,WAAa,kBAAoB,IAAS,KAClDnnC,EAAQiQ,MAAQ,WAAajQ,EAAQiQ,MAAQ,KAC7CjQ,EAAQi7B,QAAU,iBAAmB,KACrCj7B,EAAQ8gC,OAAS,aAAe,IAErCxoC,MAAKm8C,gBAMAz0C,EAAQ+zC,YAAcv7C,EAAOkd,OAASld,EAAOkd,MAAMvb,SACvD65C,EAAO3mC,SAAU,wBAIb/U,KAAKi8C,aACTj8C,KAAKo8C,YAAcv8C,EAAG,UACpBkV,SAAU,+BACVU,OACAkD,SAAU+iC,EAAO3mC,SAAU,sBAIzBrN,EAAQzG,UAAYjB,KAAKK,QAAQkE,KAAM,cAC3CvE,KAAK8T,UAIN9T,KAAK67C,OAAOrlB,OAAO,WAClBzc,EAAK0rB,UAEE/9B,EAAQ+zC,YACd1hC,EAAKpF,OAAQ,WACZoF,EAAK8hC,OAAO/e,WAKf98B,KAAK+rC,mBAEL/rC,KAAK4S,IAAK5S,KAAK07C,QACdrI,QAAS,mBAGVrzC,KAAKq8C,SAGNA,MAAO,WACN,GAAItiC,GAAO/Z,IAEXA,MAAK67C,OACHljC,SAAUoB,EAAK2hC,QACft1C,KAAM,aAAc,WAEpB2T,EAAK2hC,OAAO3mC,SAAUlV,EAAEC,OAAO8K,kBAE/BxE,KAAM,QAAS,WACf2T,EAAK2hC,OAAO3mC,SAAUlV,EAAEC,OAAO6O,cAE/BvI,KAAM,OAAQ,WACd2T,EAAK2hC,OAAO/wC,YAAa9K,EAAEC,OAAO6O,cAElCvI,KAAM,mBAAoB,WAC1B2T,EAAK2hC,OAAOlyC,QAAS,gBAErBpD,KAAM,aAAc,WAEpB2T,EAAK2hC,OAAO/wC,YAAa9K,EAAEC,OAAO8K,kBAElCxE,KAAM,wBAAyB,WAC/B2T,EAAK2hC,OAAOlyC,QAAS,aACnBmB,YAAa9K,EAAEC,OAAO8K,kBAI1BmP,EAAK2hC,OAAOt1C,KAAM,aAAc,WAC1B2T,EAAKrS,QAAQooC,kBAChBjwC,EAAEC,OAAO2vC,KAAK37B,SAAS,KAG1BiG,EAAKqyB,MAAMhmC,KAAM,cAAe,WAC1B2T,EAAKrS,QAAQooC,kBAChBjwC,EAAEC,OAAO2vC,KAAK37B,SAAS,KAG1BiG,EAAK8hC,OAAOz1C,KAAM,QAAS,WACrB2T,EAAKrS,QAAQooC,kBAChBjwC,EAAEC,OAAO2vC,KAAK37B,SAAS,KAG1BiG,EAAK2hC,OAAOt1C,KAAM,UAAW,WACvB2T,EAAKrS,QAAQooC,kBACjBzsC,WAAW,WACVxD,EAAEC,OAAO2vC,KAAK57B,QAAQ,IACpB,KAGLkG,EAAK8hC,OAAOz1C,KAAM,OAAQ,WACpB2T,EAAKrS,QAAQooC,kBACjBjwC,EAAEC,OAAO2vC,KAAK57B,QAAQ,MAMzByoC,SAAU,WACT,MAAOt8C,MAAK47C,iBAAiBt6C,OAAQ,cAGtCi7C,gBAAiB,WAChB,GAAIxiC,GAAO/Z,IAEX,OAAOA,MAAKs8C,WAAW/7C,IAAI,WAC1B,MAAOwZ,GAAK6hC,iBAAiB/yC,MAAO7I,QAClCmS,OAGJgqC,cAAe,WACd,GAAIpiC,GAAO/Z,KACVs8C,EAAWt8C,KAAKs8C,WAChBruC,EAAOjO,KAAKulC,YACZiX,EAAO38C,EAAGI,EAASiG,cAAe,QAEnClG,MAAK07C,OAAOnzC,SAAU,QAASmF,IAAK,gBAAiBW,SAASw4B,MAAMA,MAAMwG,QAAS,WAkBlF,MAhBCp/B,GADIquC,EAAS96C,OACN86C,EAAS/7C,IAAI,WACnB,MAAOV,GAAGG,MAAOiO,SACfkE,MAAMsC,KAAM,MAERsF,EAAKwrB,YAGRt3B,EACJuuC,EAAKvuC,KAAMA,GAIXuuC,EAAKtuC,KAAM,UAILsuC,EACLznC,SAAUgF,EAAK8hC,OAAOt3C,KAAM,UAC5BwQ,SAAUunC,EAAS/3C,KAAM,UACzBoG,YAAa,yBAIjB8xC,eAAgB,WACf,GAAIH,GAAWt8C,KAAKs8C,UAGft8C,MAAKi8C,YACTj8C,KAAKo8C,YAAaE,EAAS96C,OAAS,EAAI,OAAS,UAAWyM,KAAMquC,EAAS96C,SAI7E0yC,eAAgB,WACfl0C,KAAK2U,OAAQ,mBAGdy5B,OAAQ,WACPpuC,KAAKylC,WAGNiX,eAAgB,WACf18C,KAAKm8C,gBACLn8C,KAAKy8C,kBAGNhX,QAAS,WACRzlC,KAAK08C,kBAKN1hC,KAAMnb,EAAEuT,KACR8H,MAAOrb,EAAEuT,KAETU,QAAS,WACR9T,KAAK2zC,cAAc,GACnB3zC,KAAK07C,OAAO3mC,SAAU,sBAGvBlB,OAAQ,WACP7T,KAAK2zC,cAAc,GACnB3zC,KAAK07C,OAAO/wC,YAAa,uBAExB9K,EAAEC,OAAOkJ,UAAU8iC,aAElB/rC,GAEJ,SAAWF,GAEXA,EAAEC,OAAOuN,MAAQ,SAAUmE,GAG1B3R,EAAG2R,GACDhE,KAAM,KACNG,iBACArM,OAAQ,yCACR6B,KAAM,WAEN,GAAI9C,GAAUL,KACb28C,EAAQt8C,EAAQ0L,aAAc,QAAS0W,UAAW,EAE9Ck6B,KACJt8C,EAAQkrC,aAAc,iBAAiB,GACvClrC,EAAQkrC,aAAc,YAAaoR,GACnCt8C,EAAQkrC,aAAc,iBAAiB,MAGxC1E,MACAn5B,IAAK,yDACLqH,SAAU,aAIThV,GAGJ,SAAWF,EAAGM,GAEd,QAASy8C,GAAyBC,EAAYC,EAAa5kC,EAAQ6kC,GAClE,GAAItwC,GAAcswC,CAUlB,OANCtwC,GAFiBqwC,EAAbD,EAEU3kC,GAAW2kC,EAAaC,GAAgB,EAGxCh0C,KAAK+oC,IAAK/oC,KAAKC,IAAKmP,EAAQ6kC,EAAUD,EAAc,GAAK5kC,EAAS2kC,EAAaC,GAM/F,QAASE,GAAsBC,GAC9B,OACCxzC,EAAGwzC,EAAUC,aACbxzC,EAAGuzC,EAAUhlC,YACbklC,GAAMF,EAAW,GAAI73C,YAAc63C,EAAUz/B,QAC7C4/B,GAAMH,EAAW,GAAI53C,aAAe43C,EAAUhxC,UAIhDpM,EAAEqQ,OAAQ,gBACTxI,SACCukC,aAAc,KACdt0B,MAAO,KACP+qB,aAAc,KACd8F,QAAQ,EACR7F,SAAS,EACT1Z,WAAY,OACZo0B,WAAY,SACZC,UAAW,KACXC,kBAAmB,wBACnBC,gBAAiB,cACjBC,eAAgB,iBAChBC,YAAa,wCACbC,aAAa,EACb9pB,UAAU,EAOVzT,SAAUvgB,EAAEC,OAAOigB,QAAQC,OAK5B49B,0BAA2B,SAAUC,GAC/B79C,KAAK89C,SAAWj+C,EAAEmtC,SAAUhtC,KAAK2kC,IAAI9G,UAAW,GAAKggB,EAASrsC,SAClExR,KAAK+9C,uBAIP9qC,QAAS,WACR,GAAIhL,GAAajI,KAAKK,QACrB29C,EAAO/1C,EAAW1D,KAAM,MACxBqqC,EAAiB5uC,KAAK0H,OAKvBknC,GAAexuB,QAAUwuB,EAAexuB,SAAWvgB,EAAEC,OAAO8O,aAAe/O,EAAEC,OAAO+O,qBAEpF7O,KAAK4S,IAAK5S,KAAKC,UACd2sC,WAAc,8BAIf/sC,EAAE+B,OAAQ5B,MACTi+C,WAAY,EACZC,MAAOj2C,EAAW6B,QAAS,YAC3B66B,IAAK,KACLwZ,oBAAqB,GACrBC,oBAAoB,EACpBC,eAAgB,KAChBP,SAAS,EACTQ,WAAY,KACZC,YAAa,KACbC,gBAAiB,EACjBC,8BAA8B,IAGJ,IAAtBz+C,KAAKk+C,MAAM18C,SACfxB,KAAKk+C,MAAQr+C,EAAG,SAGZ+uC,EAAe/a,SACnB7zB,KAAK2kC,KACJ9G,UAAW51B,EAAWpB,SACtB63C,OAAQz2C,EAAWpB,SAAS83C,OAC5BpZ,YAAa1lC,EAAGG,KAAKC,SAAU,GAAI2+C,eAAgBZ,EAAO,mBAG3Dh+C,KAAK2kC,IAAM3kC,KAAK8zB,SAAU7rB,EAAY+1C,GACtCh+C,KAAK6+C,iBAAkBjQ,EAAe3lB,aAEvCjpB,KACE8+C,cAAelQ,EAAe0O,WAC9B3Y,IAAIoa,aAAe/+C,KAAK2kC,IAAI9G,UAG9B79B,KAAK4S,IAAK5S,KAAK2kC,IAAI+Z,QAAUhb,OAAU,sBACvC1jC,KAAK4S,IAAK5S,KAAKE,QACdwyB,kBAAmB7yB,EAAEwY,MAAOrY,KAAM,kCAClCg/C,OAAQn/C,EAAEwY,MAAOrY,KAAM,uBACvBizC,MAAOpzC,EAAEwY,MAAOrY,KAAM,wBAEvBA,KAAK4S,IAAK5S,KAAKC,UAAYiV,QAAW,4BAGvC4e,SAAU,SAAU7rB,EAAY+1C,GAC/B,GAAIpP,GAAiB5uC,KAAK0H,QACzBukC,EAAe2C,EAAe3C,aAC9BtqC,GACC+8C,OAAQ7+C,EAAG,gDACXG,KAAKmlC,sBAAuB,cAAeyJ,EAAelM,cAAiB,YAC3E6C,YAAa1lC,EAAG,0DAChBg+B,UAAWh+B,EAAG,oEACXosC,EAAiB,IAAMA,EAAiB,IAAO,aAEnDgT,EAAWj/C,KAAKC,SAAU,GAAIi/C,wBAyB/B,OAvBAD,GAASnjC,YAAana,EAAG+8C,OAAQ,IACjCO,EAASnjC,YAAana,EAAGk8B,UAAW,IAE/BmgB,IACJr8C,EAAG+8C,OAAOn6C,KAAM,KAAMy5C,EAAO,WAC7Br8C,EAAGk8B,UAAUt5B,KAAM,KAAMy5C,EAAO,UAChCr8C,EAAG4jC,YACDhhC,KAAM,KAAMy5C,EAAO,gBACnB9vC,KAAM,wBAA0B8vC,EAAO,SAI1Ch+C,KAAKk+C,MAAO,GAAIpiC,YAAamjC,GAE7Bt9C,EAAG4jC,YAAY9qB,YAAaxS,GAC5BA,EACEu9B,SACAzwB,SAAU,YACV/U,KAAKmlC,sBAAuB,WAAYyJ,EAAej3B,OAAU,KAC/Di3B,EAAepG,OAAS,qBAAuB,KAC/CoG,EAAejM,QAAU,iBAAmB,KAC9ChqB,SAAUhX,EAAGk8B,WAERl8B,GAGRw9C,kBAAmB,SAAUtB,GAM5B,MALAA,GAASv3C,iBACTu3C,EAASh1B,2BACJ7oB,KAAK0H,QAAQi2C,aACjB39C,KAAKkb,SAEC,GAKRkkC,cAAe,WACd,GAAIV,GAAS1+C,KAAK2kC,IAAI+Z,OACrBW,EAAcr/C,KAAK2kC,IAAI9G,UAAUv4B,aAAa,GAC9C8S,EAAesmC,EAAO16C,WAAY,SAAUiI,SAI5CqzC,EAAiBt/C,KAAKC,SAASgM,SAAW,CAEvBqzC,GAAflnC,EACJsmC,EAAOzyC,OAAQqzC,GACJD,EAAcjnC,GACzBsmC,EAAOzyC,OAAQozC,IAIjBE,mBAAoB,SAAU1B,GAC7B,MAAK79C,MAAK89C,SAAWD,EAAS/7C,UAAYjC,EAAEC,OAAOgC,QAAQO,OACnDrC,KAAKm/C,kBAAmBtB,GADhC,QAKD2B,mBAAoB,WACnB,GAAIC,GAAoBzC,EAAsBh9C,KAAKE,OAEnD;GAAKF,KAAKu+C,YAAc,CACvB,GAAKkB,EAAkBh2C,IAAMzJ,KAAKu+C,YAAYkB,kBAAkBh2C,GAC/Dg2C,EAAkB/1C,IAAM1J,KAAKu+C,YAAYkB,kBAAkB/1C,GAC3D+1C,EAAkBtC,KAAOn9C,KAAKu+C,YAAYkB,kBAAkBtC,IAC5DsC,EAAkBrC,KAAOp9C,KAAKu+C,YAAYkB,kBAAkBrC,GAE5D,OAAO,CAGPljC,cAAcla,KAAKu+C,YAAYmB,WASjC,MALA1/C,MAAKu+C,aACJmB,UAAW1/C,KAAK2U,OAAQ,iBAAkB,KAC1C8qC,kBAAmBA,IAGb,GAGRE,eAAgB,WACV3/C,KAAK89C,QACH99C,KAAKw/C,uBACLx/C,KAAK2kC,IAAI9G,UAAUzpB,SAAU,qBAEjCpU,KAAK2kC,IAAI9G,UAAUlzB,YAAa,qCAChC3K,KAAK4/C,YAAcvC,WAAY,WAC/Br9C,KAAK+9C,uBAGN/9C,KAAKo/C,gBACLp/C,KAAKu+C,YAAc,KACnBv+C,KAAKy+C,8BAA+B,IAGrCz+C,KAAKu+C,YAAc,KACnBv+C,KAAKy+C,8BAA+B,IAItCoB,0BAA2B,WAC1B7/C,KAAKw+C,gBAAkB,GAGxBT,oBAAqB,WACf/9C,KAAKw+C,iBACTtkC,aAAcla,KAAKw+C,iBAEpBx+C,KAAKw+C,gBAAkBx+C,KAAK2U,OAAQ,4BAA6B,MAGlEmrC,oBAAqB,WACf9/C,KAAK89C,SAAoC,IAAzB99C,KAAKw+C,mBAClBx+C,KAAKw/C,uBAAwBx/C,KAAKy+C,8BACvCz+C,KAAK2kC,IAAI9G,UAAUzpB,SAAU,oBAE9BpU,KAAK2kC,IAAI9G,UACP9oB,SAAU,qCACV/Q,WAAY,WAKjB+7C,+BAAgC,YACzB//C,KAAKy+C,8BAAgCz+C,KAAK89C,SAAoC,IAAzB99C,KAAKw+C,kBAC/Dx+C,KAAKw/C,qBACLx/C,KAAKy+C,8BAA+B,IAMtCuB,uBAAwB,SAAUnC,GACjC,GAAIrsC,GACHyuC,EAAgBpC,EAASrsC,OACzB7P,EAAK3B,KAAK2kC,GAEX,IAAM3kC,KAAK89C,QAAX,CAIA,GAAKmC,IAAkBt+C,EAAGk8B,UAAW,GAAM,CAE1C,GADArsB,EAAS3R,EAAGogD,IACNpgD,EAAEmtC,SAAUrrC,EAAGk8B,UAAW,GAAKoiB,GAOpC,MANApgD,GAAGG,KAAKC,SAAU,GAAI48B,eAAgBriB,IAAK,QAAS3a,EAAEwY,MAAO,WAC5DrY,KAAKkgD,YAAaD,IAChBjgD,OACH2B,EAAGo9C,aAAa/7C,QAChB66C,EAASv3C,iBACTu3C,EAASh1B,4BACF,CACIlnB,GAAGo9C,aAAc,KAAQp9C,EAAGk8B,UAAW,KAClDl8B,EAAGo9C,aAAevtC,GAIpBxR,KAAK+9C,wBAGN5Y,sBAAuB,SAAU7b,EAAQ3iB,GACxC,MAASA,GAAoB,SAAVA,EAAmB,GAAO2iB,EAAS3iB,EAAc2iB,EAAS,WAG9Eu1B,iBAAkB,SAAUl4C,GAY3B,MAXKA,KACJ3G,KAAK2kC,IAAI9G,UAAUlzB,YAAa3K,KAAKm+C,qBACtB,SAAVx3C,IACJ3G,KAAKm+C,oBAAsBt+C,EAAEC,OAAOm7B,wBAAyBt0B,GAC3B,SAA7B3G,KAAKm+C,sBACTn+C,KAAKm+C,oBAAsB,IAE5Bn+C,KAAK2kC,IAAI9G,UAAU9oB,SAAU/U,KAAKm+C,uBAI7Bn+C,MAGR0T,YAAa,SAAUysC,GACtB,GAAIvR,GAAiB5uC,KAAK0H,QACzBO,EAAajI,KAAKK,QAClBq+C,EAAS1+C,KAAK2kC,IAAI+Z,MAgDnB,OA9CKyB,GAAWlU,eAAiB9rC,GAChCH,KAAK2kC,IAAI9G,UACPlzB,YAAaikC,EAAe3C,cAC5Bl3B,SAAUorC,EAAWlU,cAGnBkU,EAAWxoC,QAAUxX,GACzB8H,EACE0C,YAAa3K,KAAKmlC,sBAAuB,WAAYyJ,EAAej3B,QACpE5C,SAAU/U,KAAKmlC,sBAAuB,WAAYgb,EAAWxoC,QAG3DwoC,EAAWzd,eAAiBviC,IAChCu+C,EACE/zC,YAAa3K,KAAKmlC,sBAAuB,cAAeyJ,EAAelM,eACvE3tB,SAAU/U,KAAKmlC,sBAAuB,cAAegb,EAAWzd,eAE7D1iC,KAAK89C,SACTY,EAAO3pC,SAAU,OAIdorC,EAAW3X,SAAWroC,GAC1B8H,EAAW2L,YAAa,oBAAqBusC,EAAW3X,QAGpD2X,EAAWxd,UAAYxiC,GAC3B8H,EAAW2L,YAAa,gBAAiBusC,EAAWxd,SAGhDwd,EAAWl3B,aAAe9oB,IACxBH,KAAKo+C,oBACVp+C,KAAK6+C,iBAAkBsB,EAAWl3B,aAI/Bk3B,EAAW7C,YAAcn9C,GAC7BH,KAAK8+C,cAAeqB,EAAW7C,WAG3B6C,EAAWl/C,WAAad,GACvBggD,EAAWl/C,UACfjB,KAAKkb,QAIAlb,KAAK+Q,OAAQovC,IAGrBrB,cAAe,SAAUn4C,GACxB,GACCy5C,GADGzL,GAAQh3B,EAAG,GAAI0iC,EAAG,GAAIz1B,EAAG,GAAI01B,EAAG,GAGpC,IAAK35C,IAAUxG,EAKd,OAJAigD,EAAKG,OAAQ55C,GAAQ6J,MAAO,KAE5B3Q,EAAEsD,KAAMi9C,EAAI,SAAUxU,EAAK3xB,GAAQmmC,EAAIxU,GAAQhlC,SAAUqT,EAAK,MAEtDmmC,EAAG5+C,QAEV,IAAK,GACE8C,MAAO87C,EAAI,MAChBzL,EAAIh3B,EAAIg3B,EAAI0L,EAAI1L,EAAI/pB,EAAI+pB,EAAI2L,EAAIF,EAAI,GAErC,MAGD,KAAK,GACE97C,MAAO87C,EAAI,MAChBzL,EAAIh3B,EAAIg3B,EAAI/pB,EAAIw1B,EAAI,IAEf97C,MAAO87C,EAAI,MAChBzL,EAAI2L,EAAI3L,EAAI0L,EAAID,EAAI,GAErB,MAGD,KAAK,GACE97C,MAAO87C,EAAI,MAChBzL,EAAIh3B,EAAIyiC,EAAI,IAEP97C,MAAO87C,EAAI,MAChBzL,EAAI0L,EAAID,EAAI,IAEP97C,MAAO87C,EAAI,MAChBzL,EAAI/pB,EAAIw1B,EAAI,IAEP97C,MAAO87C,EAAI,MAChBzL,EAAI2L,EAAIF,EAAI,IAUhB,MADApgD,MAAKs+C,WAAa3J,EACX30C,MAGRwgD,iBAAkB,SAAUC,GAC3B,GAAIC,GACHjB,EAAoBzC,EAAsBh9C,KAAKE,QAE/CygD,GACCl3C,EAAGzJ,KAAKs+C,WAAWgC,EACnB52C,EAAG+1C,EAAkB/1C,EAAI1J,KAAKs+C,WAAW3gC,EACzCw/B,GAAIsC,EAAkBtC,GAAKn9C,KAAKs+C,WAAWgC,EAAItgD,KAAKs+C,WAAW+B,EAC/DjD,GAAIqC,EAAkBrC,GAAKp9C,KAAKs+C,WAAW3gC,EAAI3d,KAAKs+C,WAAW1zB,EAajE,OAVM61B,IAELzgD,KAAK2kC,IAAI9G,UAAUt8B,IAAK,YAAao/C,EAAUxD,IAGhDuD,GACCvD,GAAIn9C,KAAK2kC,IAAI9G,UAAUl5B,YAAY,GACnCy4C,GAAIp9C,KAAK2kC,IAAI9G,UAAUv4B,aAAa,KAG5Bs7C,GAAID,EAAWD,SAAUA,IAGnCG,wBAAyB,SAAU9D,EAAS+D,GAC3C,GAAIr0C,GACHk0C,EAAYG,EAAUF,GACtBF,EAAWI,EAAUJ,QAmBtB,OAdAj0C,IACCioC,KAAMkI,EAAyB+D,EAAUxD,GAAIuD,EAASvD,GAAIwD,EAAUl3C,EAAGszC,EAAQtzC,GAC/EuO,IAAK4kC,EAAyB+D,EAAUvD,GAAIsD,EAAStD,GAAIuD,EAAUj3C,EAAGqzC,EAAQrzC,IAI/E+C,EAAYuL,IAAMlP,KAAKC,IAAK,EAAG0D,EAAYuL,KAK3CvL,EAAYuL,KAAOlP,KAAK+oC,IAAKplC,EAAYuL,IACxClP,KAAKC,IAAK,EAAG0D,EAAYuL,IAAM0oC,EAAStD,GAAKp9C,KAAKC,SAASgM,WAErDQ,GAIRs0C,iBAAkB,SAAUhE,GAC3B,MAAO/8C,MAAK6gD,wBAAyB9D,EAAS/8C,KAAKwgD,qBAGpDQ,qBAAsB,SAAUC,EAAoBC,EAAuBC,GAC1E,GAAIC,GACHrnC,EAAO/Z,IAgBRohD,IACC1C,OAAQ7+C,EAAEq6B,WACV2D,UAAWh+B,EAAEq6B,YAGdknB,EAAc1C,OAAO2C,KAAM,WACrBD,IAAkBrnC,EAAKskC,gBAC3B4C,MAIFG,EAAcvjB,UAAUwjB,KAAM,WACxBD,IAAkBrnC,EAAKskC,gBAC3B6C,MAIFrhD,EAAEw/B,KAAM+hB,EAAc1C,OAAQ0C,EAAcvjB,WAAYpC,KAAM,WACxD2lB,IAAkBrnC,EAAKskC,iBAC3BtkC,EAAKskC,eAAiB,KACtB8C,OAIFpnC,EAAKskC,eAAiB+C,GAGvBE,SAAU,SAAU/5C,GAWnB,MANAvH,MAAK2kC,IAAI+Z,OACP/zC,YAAapD,EAAKg6C,eAClBxsC,SAAUxN,EAAKi6C,kBAEjBj6C,EAAK65C,cAAc1C,OAAO/kB,UAErBpyB,EAAK0hB,YAAkC,SAApB1hB,EAAK0hB,aACvB1hB,EAAKk6C,iBACTzhD,KAAK6+C,iBAAkBt3C,EAAK0hB,YAExBjpB,KAAKm+C,yBACTn+C,MAAK2kC,IAAI9G,UACP9oB,SAAUxN,EAAKm6C,qBACf/2C,YAAapD,EAAKg6C,eAClB93B,kBAAmB5pB,EAAEwY,MAAO9Q,EAAK65C,cAAcvjB,UAAW,aAI9D79B,KAAK2kC,IAAI9G,UAAUlzB,YAAapD,EAAKg6C,mBACrCh6C,GAAK65C,cAAcvjB,UAAUlE,YAO9BgoB,eAAgB,SAAUC,GACzB,GAAI1pC,GACHkrB,EAAM,KACNqc,EAAoBzC,EAAsBh9C,KAAKE,QAC/CuJ,EAAIm4C,EAAYn4C,EAChBC,EAAIk4C,EAAYl4C,EAChBm4C,EAAMD,EAAYvE,UAGnB,IAAKwE,GAAe,WAARA,EACX,GAAa,WAARA,EACJp4C,EAAIg2C,EAAkBtC,GAAK,EAAIsC,EAAkBh2C,EACjDC,EAAI+1C,EAAkBrC,GAAK,EAAIqC,EAAkB/1C,MAC3C,CACN,IACC05B,EAAMvjC,EAAGgiD,GACR,MAAOjrC,GACRwsB,EAAM,KAEFA,IACJA,EAAI9hC,OAAQ,YACQ,IAAf8hC,EAAI5hC,SACR4hC,EAAM,OAqBV,MAdKA,KACJlrB,EAASkrB,EAAIlrB,SACbzO,EAAIyO,EAAOw8B,KAAOtR,EAAIz+B,aAAe,EACrC+E,EAAIwO,EAAOF,IAAMorB,EAAI99B,cAAgB,IAIjB,WAAhBzF,EAAEsF,KAAMsE,IAAoBnF,MAAOmF,MACvCA,EAAIg2C,EAAkBtC,GAAK,EAAIsC,EAAkBh2C,IAE7B,WAAhB5J,EAAEsF,KAAMuE,IAAoBpF,MAAOoF,MACvCA,EAAI+1C,EAAkBrC,GAAK,EAAIqC,EAAkB/1C,IAGzCD,EAAGA,EAAGC,EAAGA,IAGnBo4C,YAAa,SAAUF,GAEtBA,GACCn4C,EAAGm4C,EAAYn4C,EACfC,EAAGk4C,EAAYl4C,EACf2zC,WAAYuE,EAAYvE,YAEzBr9C,KAAKkT,SAAU,iBAAkB/S,EAAWyhD,GAC5C5hD,KAAK2kC,IAAI9G,UAAU3lB,OAAQlY,KAAK+gD,iBAAkB/gD,KAAK2hD,eAAgBC,MAGxEhC,WAAY,SAAUgC,GAChB5hD,KAAK89C,SACT99C,KAAK8hD,YAAaF,IAIpB1B,YAAa,SAAU6B,GACjBA,IAAmB/hD,KAAKE,OAAQ,IACM,SAA1C6hD,EAAerhD,SAASC,eACvBd,EAAGkiD,GAAiBjlB,QAIvBklB,2BAA4B,WAC3B,GAAIl+C,GAAK9D,KAAKK,QAAQkE,KAAM,MAC3B09C,EAAajiD,KAAK2kC,IAAI9G,UAAUrwB,KAAM,cAAeuK,OAEtD/X,MAAK2kC,IAAI9G,UAAU9oB,SAAU,mBAC7B/U,KAAK89C,SAAU,EACf99C,KAAKo/C,gBAGCv/C,EAAEmtC,SAAUhtC,KAAK2kC,IAAI9G,UAAW,GAAK79B,KAAKC,SAAU,GAAI48B,gBAC7D78B,KAAKkgD,YAAalgD,KAAKC,SAAU,GAAI48B,eAEjColB,EAAWzgD,OAAS,IACxBxB,KAAK2kC,IAAIoa,aAAekD,GAEzBjiD,KAAK+9C,sBACAj6C,GACJ9D,KAAKC,SAASuN,KAAM,qCAAwC1J,EAAK,MAAOS,KAAM,iBAAiB,GAEhGvE,KAAKkT,SAAU,cAGhBgvC,MAAO,SAAUx6C,GAChB,GAAIk6C,GAAc/hD,EAAE+B,UAAY5B,KAAK0H,QAASA,GAE7Cy6C,EAAqB,WACpB,GAAIljC,GAAKnZ,UAAUC,UAElBoZ,EAAUF,EAAG5a,MAAO,2BACpB+a,IAAcD,GAAWA,EAAS,GAClCijC,EAAenjC,EAAG5a,MAAO,0BACzBg+C,IAAeD,GAAgBA,EAAc,GAC7CE,EAAcrjC,EAAG5H,QAAS,UAAa,EAGxC,OAAsB,QAAjB+qC,GAAwC,QAAfC,GAAwBjjC,GAAaA,EAAY,SAAWkjC,GAClF,GAED,IAMTtiD,MAAKghD,qBACJnhD,EAAEuT,KACFvT,EAAEuT,KACFvT,EAAEwY,MAAOrY,KAAM,+BAEhBA,KAAKo+C,mBAAqBwD,EAAY34B,WACtCjpB,KAAK6+C,iBAAkB+C,EAAY34B,YAEnCjpB,KAAK2kC,IAAI+Z,OAAO/zC,YAAa,oBAC7B3K,KAAK2kC,IAAI9G,UAAUlzB,YAAa,qBAGhC3K,KAAK8hD,YAAaF,GAElB5hD,KAAK2kC,IAAI9G,UAAUlzB,YAAa,mBAE3B3K,KAAK0H,QAAQg7B,cAAgByf,GASjCniD,KAAKK,QAAQyJ,QAAS,YAAaiL,SAAU,iBAE9C/U,KAAKshD,UACJiB,qBAAqB,EACrBt5B,WAAY24B,EAAY34B,WACxBs4B,cAAe,GACfC,iBAAkB,KAClBE,oBAAqB,KACrBD,iBAAiB,EACjBL,cAAephD,KAAKq+C,kBAItBmE,yBAA0B,WACzBxiD,KAAK2kC,IAAI+Z,OACP/zC,YAAa,OACboK,SAAU,qBAGb0tC,4BAA6B,WAC5BziD,KAAK2kC,IAAI9G,UACPlzB,YAAa,eACboK,SAAU,qCACV/Q,WAAY,UAGf0+C,wBAAyB,WACxB,GAAI7kB,GAAY79B,KAAK2kC,IAAI9G,UACxB/5B,EAAK9D,KAAKK,QAAQkE,KAAM,KAGzB1E,GAAEC,OAAOk2C,MAAMxgB,OAASr1B,EAGxBN,EAAG,SAAUg+B,EAAW,IAAMr4B,IAAKq4B,EAAW,IAAMf,OAE/Ch5B,GACJ9D,KAAKC,SAASuN,KAAM,qCAAwC1J,EAAK,MAAOS,KAAM,iBAAiB,GAIhGvE,KAAKkT,SAAU,eAGhByvC,OAAQ,SAAUC,GACjB5iD,KAAK2kC,IAAI9G,UAAUlzB,YAAa,mBAChC3K,KAAKk+C,MAAMvzC,YAAa,iBAExB3K,KAAK89C,SAAU,EAKf99C,KAAKghD,qBACJnhD,EAAEwY,MAAOrY,KAAM,4BACfH,EAAEwY,MAAOrY,KAAM,+BACfH,EAAEwY,MAAOrY,KAAM,4BAEhBA,KAAKshD,UACJiB,oBAAqBviD,KAAK2kC,IAAI+Z,OAAOtqC,SAAU,MAC/C6U,WAAc25B,EAAY,OAAW5iD,KAAwB,mBAC7DuhD,cAAe,KACfC,iBAAkB,MAClBE,oBAAqB,cACrBD,iBAAiB,EACjBL,cAAephD,KAAKq+C,kBAItBwE,WAAY,WACN7iD,KAAK0H,QAAQmsB,WAKlB7zB,KAAK0T,aAAeiE,MAAO9X,EAAEC,OAAOk2C,MAAM7uC,UAAUO,QAAQiQ,QAC5D3X,KAAKK,QAOHmlC,SACA/qB,YAAaza,KAAK2kC,IAAIY,aACtB56B,YAAa,4DACf3K,KAAK2kC,IAAI+Z,OAAOrwC,SAChBrO,KAAK2kC,IAAI9G,UAAUxvB,SACnBrO,KAAK2kC,IAAIY,YAAYl3B,WAGtBgF,SAAU,WAQT,MAPKxT,GAAEC,OAAOk2C,MAAMxgB,SAAWx1B,MAC9BA,KAAKK,QAAQma,IAAK,kBAAmB3a,EAAEwY,MAAOrY,KAAM,eACpDA,KAAKkb,SAELlb,KAAK6iD,aAGC7iD,MAGR8iD,YAAa,SAAUjF,EAAU55C,GAChC,GAAI8+C,GAAWC,EACdpU,EAAiB5uC,KAAK0H,QACtBk7C,GAAY,CAEN/E,IAAYA,EAAStoC,sBAA0B1V,EAAEC,OAAOk2C,MAAMxgB,SAAWx1B,OAKhFE,EAAOqJ,SAAU,EAAGvJ,KAAKi+C,YAEpBJ,GAA8B,qBAAlBA,EAAS14C,MAA+BlB,IAIvD8+C,EAD2B,gBAAhB9+C,GAAKw1B,OACJx1B,EAAKw1B,OAELx1B,EAAKw1B,OAAO1vB,QAAS,OAElCg5C,EAAYljD,EAAEC,OAAOmK,KAAKqY,SAAUygC,GACpCC,EAAQD,EAAUvkC,SAAWukC,EAAU1iC,OAAS0iC,EAAUtpC,KAErDzZ,KAAKijD,SAAWpjD,EAAEC,OAAOmK,KAAKK,gBAAiB04C,GAEnDJ,GAAY,EAEZ/E,EAASv3C,kBAKXtG,KAAKE,OAAOkhB,IAAKwtB,EAAe8O,aAEhC19C,KAAKK,QAAQqU,WAAYk6B,EAAe2O,kBAAmB3O,EAAe4O,iBAE1Ex9C,KAAK2iD,OAAQC,KAMdM,oBAAqB,WACpBljD,KAAKE,OACHihB,GAAInhB,KAAK0H,QAAQg2C,YAAa79C,EAAEwY,MAAOrY,KAAM,iBAGhDkQ,OAAQ,WACP,MAAOlQ,MAAK2kC,IAAI9G,WAKjB7iB,KAAM,SAAUtT,GACf,GAAImC,GAAKs5C,EAAShtB,EAAYitB,EAAiBn9B,EAASo9B,EACvDtpC,EAAO/Z,KACP4uC,EAAiB5uC,KAAK0H,OAGvB,OAAK7H,GAAEC,OAAOk2C,MAAMxgB,QAAUoZ,EAAe3tC,SACrCjB,MAIRH,EAAEC,OAAOk2C,MAAMxgB,OAASx1B,KACxBA,KAAKi+C,WAAaj+C,KAAKE,OAAO+X,YAItB22B,EAAuB,SAiB/ByU,EAAaxjD,EAAEC,OAAOuhB,SAASjB,QAC/B+iC,EAAUtjD,EAAEC,OAAO6P,cACnBwmB,EAAat2B,EAAEC,OAAOq2B,WACtBitB,EAAoBjtB,EAAaA,EAAW/hB,SAAU,cAAgB,EACtEpU,KAAKijD,OAASp5C,EAAMw5C,EAAWv8B,YAAYjd,KAC3Coc,EAAYpc,EAAIwN,QAAS8rC,GAAY,KAASC,GAAqBC,EAAWx8B,YAAc,IAG3F9M,EAAKmoC,MAAOx6C,GACZqS,EAAKmpC,sBACEljD,OAKwB,KAA3B6J,EAAIwN,QAAS8rC,IAAqBC,EAGtCv5C,EAAMhK,EAAEC,OAAOmK,KAAK4Y,gBAAgBpJ,KAAO0pC,EAF3Ct5C,GAAaA,EAAIwN,QAAS,KAAQ,GAAK8rC,EAAU,IAAMA,EAMxDnjD,KAAKE,OAAOsa,IAAK,iBAAkB,SAAUqjC,GAC5CA,EAASv3C,iBACTyT,EAAKmoC,MAAOx6C,GACZqS,EAAKmpC,wBAGNljD,KAAKsjD,YAAa,EAClBzjD,EAAEC,OAAOuhB,SAAUxX,GAAOsqB,KAAM,WAEzBn0B,QA/CN+Z,EAAKmoC,MAAOx6C,GACZqS,EAAKmpC,sBAKLnpC,EAAK1Z,QACHkU,SAAUq6B,EAAe2O,kBAAmB3O,EAAe4O,gBAAiB,SAAUK,GACtF9jC,EAAKmB,QACL2iC,EAASv3C,mBAGJtG,QAsCTkb,MAAO,WAEN,MAAKrb,GAAEC,OAAOk2C,MAAMxgB,SAAWx1B,KACvBA,MAGRA,KAAKi+C,WAAaj+C,KAAKE,OAAO+X,YAEzBjY,KAAK0H,QAAQ0Y,SAAWpgB,KAAKsjD,YACjCzjD,EAAEC,OAAO4nB,OACT1nB,KAAKsjD,YAAa,GAGlBtjD,KAAK8iD,cAGC9iD,SAKTH,EAAEC,OAAOk2C,MAAMuN,WAAa,SAAUvkB,GACrC,GAAI9mB,GACHjO,EAAOpK,EAAEC,OAAOmK,KAIhB+rC,EAAQn2C,EAAGoK,EAAK+b,eAAgB/b,EAAKqY,SAAU0c,EAAMz6B,KAAM,SAAWkV,OAAS1B,OAE3Ei+B,GAAMx0C,OAAS,GAAKw0C,EAAM/xC,KAAM,kBACpCiU,EAAS8mB,EAAM9mB,SACf89B,EAAMA,MAAO,QACZvsC,EAAGyO,EAAOw8B,KAAO1V,EAAMr6B,aAAe,EACtC+E,EAAGwO,EAAOF,IAAMgnB,EAAM15B,cAAgB,EACtC2jB,WAAY+V,EAAMj1B,QAAS,cAC3BszC,WAAYre,EAAMj1B,QAAS,kBAK7B1G,WAAY,WACX27B,EAAMr0B,YAAa9K,EAAEC,OAAO8K,iBAC1B,MAIJ/K,EAAEC,OAAOG,SAASkhB,GAAI,mBAAoB,SAAU08B,EAAU55C,GAClC,UAAtBA,EAAKyD,QAAQysB,OACjBt0B,EAAEC,OAAOk2C,MAAMuN,WAAYt/C,EAAKyD,QAAQyW,MACxC0/B,EAASv3C,qBAIPvG,GAMJ,SAAWF,EAAGM,GAEd,GAAIqjD,GAA0B,gGAC7BC,EAAmB,SAAUha,EAAMj4B,EAAQuX,GAC1C,GAAI26B,GAAWja,EAAM1gB,EAAY,SAC/Brb,IAAK81C,GACLzrC,OAGG2rC,GAASliD,SACbgQ,EACEsrB,OACAv4B,KAAM,WAAY,MAEpBm/C,EAASl2C,KAAM,KAAMuK,QAAQ/U,SAIhCnD,GAAEqQ,OAAQ,oBAAqBrQ,EAAEC,OAAO6jD,YACvC1wC,QAAS,WACR,GAAImb,GAAIpuB,KAAK0H,OAMb,OAFA0mB,GAAEqtB,WAAartB,EAAEqtB,YAAgBz7C,KAAKK,QAAQe,QAAS,wCAAyCI,OAAS,EAElGxB,KAAK+Q,UAGb6yC,mBAAoB,WACnB5jD,KAAKK,QAAQy8B,OACb98B,KAAK07C,OAAO14C,SAGbkxC,eAAgB,SAAU7tC,GACzBrG,KAAK+Q,OAAQ1K,GACbrG,KAAK6jD,2BAA4Bx9C,IAGlCw9C,2BAA4B,SAAUx9C,GAChCrG,KAAK0H,QAAQzG,UAAYjB,KAAK8jD,QAAU9jD,KAAK0H,QAAQ+zC,aAIvC,WAAfp1C,EAAMlB,MACRkB,EAAMvE,UAAYuE,EAAMvE,UAAYjC,EAAEC,OAAOgC,QAAQM,OAASiE,EAAMvE,UAAYjC,EAAEC,OAAOgC,QAAQc,UAElG5C,KAAK+jD,gBACkB,YAAlB/jD,KAAKgkD,SACThkD,KAAK07C,OAAOn3C,KAAM,OAAQ,IAAMvE,KAAKikD,SAAU1/C,KAAM,SAAY1E,EAAEC,OAAOsI,IAAM,IAAO,MAAO,SAE9FpI,KAAK07C,OAAOn3C,KAAM,OAAQ,IAAMvE,KAAKkkD,UAAW3/C,KAAM,SAAY1E,EAAEC,OAAOsI,IAAM,IAAO,MAAO,UAEhGpI,KAAK8jD,QAAS,IAKhBK,iBAAkB,SAAUj5C,GAC3B,GAAIqZ,GAAsB,YAAXrZ,EAAE/F,MACdi/C,SAAU,IAAK/9C,MAAO,eACtB+9C,SAAU,KAAM/9C,MAAO,YAE1BxG,GAAGqL,EAAEsG,QACHjN,KAAM,WAAYggB,EAAO6/B,UACzB56C,QAAS+a,EAAOle,QAGnBg+C,mBAAoB,SAAUh+C,GAC7B,GAAImL,GAAS3R,EAAGwG,EAAMmL,QACrB44B,EAAK54B,EAAO1H,QAAS,KAGtB,QAASzD,EAAMvE,SAEf,IAAK,IAEJ,MADA2hD,GAAkBrZ,EAAI54B,EAAQ,SACvB,CAER,KAAK,IAEJ,MADAiyC,GAAkBrZ,EAAI54B,EAAQ,SACvB,CAER,KAAK,IACL,IAAK,IAEJ,MADAA,GAAOhI,QAAS,UACT,IAIT86C,oBAAqB,WAGpBtkD,KAAKukD,kBAcLvkD,KAAKwkD,SAAS58C,KAAM,eAGrB68C,wBAAyB,WACxB,MAAuB,YAAlBzkD,KAAKgkD,UACThkD,KAAKkb,SACE,GAFR,QAMDwpC,qBAAsB,SAAUr+C,GAC/B,GAAIs+C,GAAW9kD,EAAGwG,EAAMmL,QAAS1H,QAAS,MAGzC86C,EAAW5kD,KAAK67C,OAAQ,GAAIxH,cAC5BwQ,EAAWhlD,EAAEC,OAAOiM,aAAc44C,EAAU,gBAC5C39C,EAAShH,KAAK47C,iBAAiBj4C,GAAIkhD,GAAY,EAGhD79C,GAAOs1C,SAAWt8C,KAAKi8C,YAAcj1C,EAAOs1C,UAAW,EAGlDt8C,KAAKi8C,YACT0I,EAASn3C,KAAM,KACboG,YAAa,iBAAkB5M,EAAOs1C,UACtC1oC,YAAa,mBAAoB5M,EAAOs1C,UAIrCt8C,KAAKi8C,YAAc2I,IAAaC,IACrC7kD,KAAK8kD,gBAAiB,GAMlB9kD,KAAKi8C,YACTj8C,KAAK67C,OAAOryC,QAAS,UACrBxJ,KAAKqrC,KAAK79B,KAAM,0BAA2B7J,GAAIkhD,GAC7Cr3C,KAAM,KAAMuK,QAAQ/U,SAGtBhD,KAAKkb,QAGN7U,EAAMC,kBAGP+1C,MAAO,WACN,GAAIN,GAAUkI,EAASC,EAAU9X,EAAOoY,EAAUvI,EAAY8I,EAC7DC,EAAWtiB,EAAcuiB,EAAkBC,EAC3CC,EAAUC,EAAS/Z,EAAMga,EAAQC,EAAaC,EAC9CC,EAAeC,EACfr3B,EAAIpuB,KAAK0H,OAEV,OAAK0mB,GAAEqtB,WACCz7C,KAAK+Q,UAGbgrC,EAAW/7C,KAAK+7C,SAChBkI,EAAUlI,EAAW,WACrBmI,EAAWnI,EAAW,UACtB3P,EAAQpsC,KAAKosC,MACboY,EAAWxkD,KAAKK,QAAQyJ,QAAS,YACjCmyC,EAAaj8C,KAAKK,QAAS,GAAI67C,SAC/B6I,EAAShJ,EAAW,QACpBiJ,EAAY52B,EAAEzW,MAAU,SAAW9X,EAAEC,OAAOsI,GAAK,UAAYgmB,EAAEzW,MAAQ,IAAQ,GAC/E+qB,EAAetU,EAAEsU,cAAgBtU,EAAEzW,OAAS,KAC5CstC,EAAmBviB,EAAiB,SAAW7iC,EAAEC,OAAOsI,GACvD,kBAAoBs6B,EAAe,IAAQ,GAC5CwiB,EAAqB92B,EAAEia,cAAgB4T,EAAiB,SAAWp8C,EAAEC,OAAOsI,GAAK,kBAAoBgmB,EAAEia,aAAe,IAAQ,GAC9H8c,EAAWtlD,EAAG,aAAeA,EAAEC,OAAOsI,GAAK,2CAA6C87C,EAAW,IAAMc,EAAYC,EAAmB,cACxHplD,EAAEC,OAAOsI,GAAK,6DAGdvI,EAAEC,OAAOsI,GAAK,+BAE9Bg9C,EAAUvlD,EAAG,OAASmlD,EAAYC,EAAmB,QAAUhB,EAC7D,kCACAxpC,YAAaza,KAAK67C,QAClB7F,QACF3K,EAAOxrC,EAAG,sCAAwCklD,EAAS,qCAAuC/kD,KAAKg8C,SAAW,IAAMgJ,EAAYE,EAAmB,UAAWvsC,SAAUysC,GAC5KC,EAASxlD,EAAG,iCAAoCuuB,EAAEzW,MAAQyW,EAAEzW,MAAQ,WAAc,YAAa+G,UAAW0mC,GAC1GE,EAAczlD,EAAG,8BAA+B8Y,SAAU0sC,GAErDrlD,KAAKi8C,aACTwJ,EAAc5lD,EAAG,OAChBs0B,KAAQ,SACRlmB,KAAQmgB,EAAEotB,UACV16C,KAAQ,IACRkiC,QAAS,uEACPrqB,SAAU0sC,IAGdxlD,EAAE+B,OAAQ5B,MACT+7C,SAAUA,EACVgJ,OAAQA,EACRd,QAASA,EACTC,SAAUA,EACVM,SAAUA,EACVW,SAAUA,EACV/Y,MAAOA,EACP6P,WAAYA,EACZtkC,MAAOyW,EAAEzW,MACTytC,QAASA,EACT/Z,KAAMA,EACNga,OAAQA,EACRC,YAAaA,EACbG,YAAaA,EACbF,gBAAiBA,EACjBC,cAAeA,EACfjgB,YAAa,KAIdvlC,KAAKylC,UAEAzlC,KAAK0lD,gBAAkBvlD,IAM3BH,KAAK0lD,cAAkE,OAAhD1lD,KAAK67C,OAAQ,GAAI9vC,aAAc,aAA0B,EAAQ/L,KAAK67C,OAAOt3C,KAAM,aAE3GvE,KAAK67C,OAAOt3C,KAAM,WAAY,MAC9BvE,KAAK4S,IAAK5S,KAAK67C,QAAU74C,MAAQ,uBAGjChD,KAAK4S,IAAK5S,KAAK07C,QACdhY,OAAQ,+BAIT1jC,KAAKqrC,KAAK9mC,KAAM,OAAQ,WACxBvE,KAAK4S,IAAK5S,KAAKqrC,MACdn2B,QAAW,mBACXC,SAAY,mBACZk+B,QAAW,qBACXsS,+DAAgE,yBAKjE3lD,KAAK4S,IAAK5S,KAAKmlD,UAAYS,SAAU,wBAGrC5lD,KAAK4S,IAAK5S,KAAKolD,SAAWS,gBAAiB,iBAGtC7lD,KAAKi8C,YACTj8C,KAAK4S,IAAK5S,KAAKylD,aAAe7hB,MAAO,4BAG/B5jC,OAGR8lD,aAAc,WACb9lD,KAAKkb,QACLlb,KAAKukD,mBAGNA,gBAAiB,WACXvkD,KAAK8kD,gBACT9kD,KAAKK,QAAQmJ,QAAS,UAEvBxJ,KAAK8kD,gBAAiB,GAGvBiB,mBAAoB,WACnB,GAAI1a,GAAOrrC,KAAKqrC,KAAK79B,KAAM,MAC1B9F,EAAU1H,KAAK47C,iBAAiBluC,IAAK,oBAKtC,OAAOhG,GAAQuG,SAAWo9B,EAAKp9B,QAGhCquC,SAAU,WACT,MAAOt8C,MAAK47C,iBAAiBt6C,OAAQ,kDAGtCmkC,QAAS,SAAU3J,GAClB,GAAI/hB,GAAMisC,CAEV,OAAKhmD,MAAK0H,QAAQ+zC,WACVz7C,KAAK+Q,OAAQ+qB,IAGrB/hB,EAAO/Z,MACF87B,GAAS97B,KAAK+lD,uBAClBhsC,EAAKksC,aAGND,EAAUhmD,KAAKu8C,kBAEfxiC,EAAKoiC,gBACLpiC,EAAK0iC,qBAEL1iC,GAAKsxB,KAAK79B,KAAM,0BACdA,KAAM,KAAM7C,YAAa9K,EAAEC,OAAO8K,gBAAiBi8B,MACnDtiC,KAAM,iBAAiB,GACvBpB,KAAK,SAAUiB,GACf,GAAIqlC,GAAO5pC,EAAGG,KACTH,GAAEs/B,QAAS/6B,EAAG4hD,GAAY,IAG9Bvc,EAAKllC,KAAM,iBAAiB,GAGvBwV,EAAKkiC,WACTxS,EAAKj8B,KAAM,KAAM7C,YAAa,mBAAoBoK,SAAU,kBAEvD00B,EAAKr1B,SAAU,oBACnBq1B,EAAKpzB,OAAO7I,KAAM,KAAMuH,SAAUlV,EAAEC,OAAO8K,gBAE3C6+B,EAAKj8B,KAAM,KAAMuH,SAAUlV,EAAEC,OAAO8K,iBAG3BmP,EAAKkiC,YAChBxS,EAAKj8B,KAAM,KAAM7C,YAAa,kBAAmBoK,SAAU,uBAK/DmG,MAAO,WACN,IAAKlb,KAAK0H,QAAQzG,UAAajB,KAAK8jD,OAApC,CAIA,GAAI/pC,GAAO/Z,IAEY,UAAlB+Z,EAAKiqC,UACTjqC,EAAKorC,SAASlxB,OAAQ,SACtBla,EAAKsxB,KAAK1yB,SAAUoB,EAAKqrC,UAEzBrrC,EAAKqrC,QAAQpP,MAAO,SAGrBj8B,EAAK4hC,eAEL5hC,EAAK+pC,QAAS,IAGf9oC,KAAM,WACLhb,KAAK07C,OAAO9X,SAGbsiB,eAAgB,WACf,GAAI3gD,GAAWvF,KAAKqrC,KAAK79B,KAAM,KAAO3N,EAAEC,OAAO8K,eACtB,KAApBrF,EAAS/D,SACb+D,EAAWvF,KAAKqrC,KAAK79B,KAAM,UAAYg2C,EAA0B,eAElEj+C,EAASwS,QAAQ/U,SAGlB+gD,cAAe,WACd,GAAIhqC,GAAO/Z,KACVmmD,EAAUnmD,KAAKE,OACfkmD,EAAiBrsC,EAAKsxB,KAAKxkC,SAC3Bw/C,EAAaD,EAAe9gD,cAC5B2S,EAAYkuC,EAAQluC,YACpBquC,EAAYvsC,EAAK2hC,OAAOxjC,SAASF,IACjCI,EAAe+tC,EAAQl6C,QAEnBo6C,GAAajuC,EAAe,KAAOvY,EAAEmG,QAAQiS,WAEjD8B,EAAKorC,SAASxsC,SAAU9Y,EAAEC,OAAO2P,eAAgB7H,OACjDmS,EAAKwrC,gBAAkBxrC,EAAKorC,SAAS33C,KAAM,eAC3CuM,EAAKyrC,cAAgBzrC,EAAKorC,SAAS33C,KAAM,gBAKzCuM,EAAKyqC,SAASh+C,OAAQ,mBAGH,IAAdyR,GAAmBquC,EAAYluC,GACnC2B,EAAKyqC,SAAShqC,IAAK,WAAY,WAC9B3a,EAAGG,MAAO+J,QAAS,aAAcu8C,KAInCvsC,EAAKorC,SAAS3qC,KACb4/B,SAAUv6C,EAAEwY,MAAOrY,KAAM,kBACzB4lD,SAAU/lD,EAAEwY,MAAOrY,KAAM,WAG1B+Z,EAAKiqC,SAAW,OAChBjqC,EAAKwrC,gBAAgBxnC,OAAQhE,EAAKsxB,MAClCtxB,EAAKorC,SACH33C,KAAM,iBACLS,KAAM8L,EAAKqyB,MAAMp+B,kBAAoB+L,EAAKwrB,eAE7CxrB,EAAKiqC,SAAW,UAEhBjqC,EAAKqrC,QAAQ5qC,KAAO+rC,eAAgB1mD,EAAEwY,MAAOrY,KAAM,sBAIrDimD,WAAY,WACX,GAKCO,GAAUC,EAAY5K,EAQtB6K,EACAtiD,EACA4C,EAAQ2/C,EAAS9/C,EAAQoH,EAAM62B,EAAQoD,EACvC0e,EAAUzb,EAAS1B,EAhBhB1vB,EAAO/Z,KACVouB,EAAIpuB,KAAK0H,QACT69B,EAAcvlC,KAAKulC,YACnBshB,GAAkB,EAClBC,EAAW,QAEXC,EAAa,QAAUlnD,EAAEC,OAAOsI,GAChC4+C,EAAgBD,EAAa,eAC7BE,EAAeF,EAAa,OAC5BG,EAAeH,EAAa,OAC5BI,EAAsBJ,EAAa,cACnC9H,EAAWh/C,EAASi/C,yBACpBkI,GAAoB,CAWrB,KALArtC,EAAKsxB,KAAKX,QAAQppC,OAAQ,gBAAiBupC,SAAU,WACrD2b,EAAWxmD,KAAK47C,iBAChB6K,EAAaD,EAAShlD,OACtBq6C,EAAS77C,KAAK67C,OAAQ,GAEhBz3C,EAAI,EAAOqiD,EAAJriD,EAAeA,IAAKgjD,GAAoB,EACpDpgD,EAASw/C,EAASpiD,GAClBuiD,EAAU9mD,EAAGmH,GAGR2/C,EAAQvyC,SAAU,sBAIvBvN,EAASG,EAAOpG,WAChBsnC,KAOAj6B,EAAO04C,EAAQ14C,OACf62B,EAAS7kC,EAASiG,cAAe,KACjC4+B,EAAOyG,aAAc,OAAQ,KAC7BzG,EAAOhpB,YAAa7b,EAASqrC,eAAgBr9B,IAGxCpH,IAAWg1C,GAA4C,aAAlCh1C,EAAOnG,SAASC,gBACzCimD,EAAW//C,EAAOkF,aAAc,SAC3B66C,IAAaF,IACjBvb,EAAUlrC,EAASiG,cAAe,MAClCilC,EAAQI,aAAc2b,EAAc,gBACpC/b,EAAQI,aAAc,OAAQ,UAC9BJ,EAAQI,aAAc,WAAY,MAClCJ,EAAQrvB,YAAa7b,EAASqrC,eAAgBsb,IAC9C3H,EAASnjC,YAAaqvB,GACtBub,EAAWE,KAIRC,GAAsB7/C,EAAO+E,aAAc,UAA6B,IAAhBkC,EAAKzM,SAAgBmlD,EAAQ58C,QAAS,iBAClG88C,GAAkB,EAClBO,GAAoB,EAKf,OAASpgD,EAAO+E,aAAco7C,KAClCnnD,KAAKqnD,wBAAyB,GAE/BrgD,EAAOukC,aAAc4b,GAAqB,GACrC/4B,EAAEmtB,0BACNrT,EAAQ7gC,KAAM,oBAEVk+B,IAAgBt3B,IACpBs3B,EAAcxrB,EAAKwrB,YAAct3B,IAInCw7B,EAAOxpC,EAASiG,cAAe,MAC1Bc,EAAO/F,WACXinC,EAAQ7gC,KAAM,qBACdoiC,EAAK8B,aAAc,iBAAiB,IAErC9B,EAAK8B,aAAcyb,EAAe5iD,GAClCqlC,EAAK8B,aAAc0b,EAAcH,GAC5BM,GACJ3d,EAAK8B,aAAc4b,GAAqB,GAEzC1d,EAAKp+B,UAAY68B,EAAQzzB,KAAM,KAC/Bg1B,EAAK8B,aAAc,OAAQ,UAC3BzG,EAAOyG,aAAc,WAAY,MAC5BvrC,KAAKi8C,YACTp8C,EAAGilC,GAAS/vB,SAAU,4CAGvB00B,EAAK3tB,YAAagpB,GAClBma,EAASnjC,YAAa2tB,GAGvB1vB,GAAKsxB,KAAK,GAAGvvB,YAAamjC,GAGpBj/C,KAAKi8C,YAAe1W,EAAY/jC,OAGrCxB,KAAKslD,YAAYr3C,KAAMjO,KAAKulC,aAF5BvlC,KAAKqlD,OAAOtwC,SAAU,oBAMvBgF,EAAKsxB,KAAKR,YAGXmE,QAAS,WACR,MAAOhvC,MAAK0H,QAAQ+zC,WACnBz7C,KAAK+Q,SACLlR,EAAG,OACFiB,KAAQ,IACRqzB,KAAQ,SAERrwB,GAAM9D,KAAKg8C,SACXsL,gBAAiB,OAGjBC,YAAavnD,KAAK+kD,UAIrB1xC,SAAU,WAEHrT,KAAK0H,QAAQ+zC,aAClBz7C,KAAKkb,QAGAlb,KAAK0lD,gBAAkBvlD,IACtBH,KAAK0lD,iBAAkB,EAC3B1lD,KAAK67C,OAAOt3C,KAAM,WAAYvE,KAAK0lD,eAEnC1lD,KAAK67C,OAAO73C,WAAY,aAKrBhE,KAAKqnD,wBACTrnD,KAAK47C,iBAAiB53C,WAAY,QAAUnE,EAAEC,OAAOsI,GAAK,eAI3DpI,KAAKolD,QAAQ/2C,SAGbrO,KAAKmlD,SAAS92C,UAIfrO,KAAK+Q,aAIHhR,GAKJ,SAAWF,EAAGM,GA+Bd,QAASqnD,GAAkB9/C,EAAS+/C,GACnC,GAAIvf,GAAUuf,EAAkBA,IAoChC,OAjCAvf,GAAQ7gC,KAAM,UAGTK,EAAQiQ,OACZuwB,EAAQ7gC,KAAM,UAAYK,EAAQiQ,OAI9BjQ,EAAQugC,OACZC,EAAUA,EAAQv/B,QACjB,WAAajB,EAAQugC,KACrB,eAAiBvgC,EAAQs8B,UAErBt8B,EAAQmnC,YACZ3G,EAAQ7gC,KAAM,mBAKXK,EAAQonC,QACZ5G,EAAQ7gC,KAAM,iBAEVK,EAAQ8gC,QACZN,EAAQ7gC,KAAM,aAEVK,EAAQi7B,SACZuF,EAAQ7gC,KAAM,iBAEVK,EAAQ88B,MACZ0D,EAAQ7gC,KAAM,WAIR6gC,EAoBR,QAASwf,GAAoBxf,GAC5B,GAAI0D,GAAKrrC,EAAKonD,EACbC,GAAkB,EAClBC,GAAS,EACTz5B,GACC6Z,KAAM,GACN6G,QAAQ,EACRtG,QAAQ,EACR7F,SAAS,EACTkM,YAAY,EACZrK,MAAM,GAEPsjB,IAKD,KAHA5f,EAAUA,EAAQ13B,MAAO,KAGnBo7B,EAAM,EAAIA,EAAM1D,EAAQ1mC,OAASoqC,IAGtC+b,GAAe,EAGfpnD,EAAMwnD,EAAsB7f,EAAS0D,IAChCrrC,IAAQJ,GACZwnD,GAAe,EACfv5B,EAAG7tB,IAAQ,GAG6C,IAA7C2nC,EAAS0D,GAAMv0B,QAAS,iBACnCswC,GAAe,EACfE,GAAS,EACTz5B,EAAE4V,QAAUkE,EAAS0D,GAAMnpB,UAAW,KAGc,IAAzCylB,EAAS0D,GAAMv0B,QAAS,aACnCswC,GAAe,EACfv5B,EAAE6Z,KAAOC,EAAS0D,GAAMnpB,UAAW,IAGgB,IAAxCylB,EAAS0D,GAAMv0B,QAAS,YAA+C,IAA1B6wB,EAAS0D,GAAMpqC,QACvEmmD,GAAe,EACfv5B,EAAEzW,MAAQuwB,EAAS0D,GAAMnpB,UAAW,IAGN,WAAnBylB,EAAS0D,KACpB+b,GAAe,EACfC,GAAkB,GAIdD,GACJG,EAAezgD,KAAM6gC,EAAS0D,GAShC,OAJKic,KACJz5B,EAAE6Z,KAAO,KAITvgC,QAAS0mB,EACT05B,eAAgBA,EAChBF,gBAAiBA,GAInB,QAASI,GAAsBh9C,GAC9B,MAAO,IAAMA,EAAErK,cArJhB,GAAIonD,IACFE,YAAc,SACdC,gBAAkB,UAClBC,gBAAkB,SAClBC,iBAAmB,aACnBC,UAAY,QAEbC,EAAe,WACd,GAAInxC,GAAMtX,EAAEC,OAAOiM,aAAaxI,MAAOvD,KAAMwD,UAE7C,OAAgB,OAAP2T,EAAchX,EAAYgX,GAEpCoxC,EAAmB,QA2JpB1oD,GAAEkD,GAAGwK,aAAe,SAAU7F,EAAS8gD,GACtC,GAAI5c,GAAK3nC,EAAM6G,EAAI29C,EAAkBC,EACpCtsB,EAAWv8B,EAAEkD,GAAGwK,aAAa6uB,QAE9B,KAAMwP,EAAM,EAAIA,EAAM5rC,KAAKwB,OAASoqC,IAAQ,CAwB3C,GAvBA9gC,EAAK9K,KAAM4rC,GACX3nC,EAAOukD,GAGJZ,iBAAiB,EAAOE,mBAI1BJ,EAAoB58C,EAAGO,WAExBo9C,EAAmB5oD,EAAE+B,UAMlBqC,EAAK2jD,gBAAkB3jD,EAAKyD,WAG9BA,IAIKzD,EAAK2jD,gBACV,IAAMc,IAAatsB,GACbqsB,EAAkBC,KAAgBvoD,IACtCsoD,EAAkBC,GAAcJ,EAAcx9C,EAC7C49C,EAAUpxC,QAASixC,EAAkBP,IAMzCl9C,GAAGO,UAAYm8C,EAGd3nD,EAAE+B,UAGDw6B,EAGAqsB,GAIDxkD,EAAK6jD,gBAAiBrzC,KAAM,KACK,WAA7B3J,EAAGmlC,QAAQtvC,eACfmK,EAAGygC,aAAc,OAAQ,UAI3B,MAAOvrC,OAKRH,EAAEkD,GAAGwK,aAAa6uB,UACjB6L,KAAM,GACNjE,QAAS,OACTrsB,MAAO,KACPm3B,QAAQ,EACRtG,QAAQ,EACR7F,SAAS,EACTkM,YAAY,EACZrK,MAAM,GAGP3kC,EAAE+B,OAAQ/B,EAAEkD,GAAGwK,cACdE,aAAc,oIAGX1N,GAGJ,SAAWF,EAAGM,GAEdN,EAAEqQ,OAAQ,sBAAuBrQ,EAAE+B,QAClC8F,SACCmsB,UAAU,EACVlc,MAAO,KACP6wB,QAAQ,EACR7F,SAAS,EACTgmB,kBAAkB,EAClBxjD,KAAM,WACNq/B,MAAM,GAGPvxB,QAAS,WACR,GAAI7P,GAAOpD,KAAKK,QACfknB,EAAOvnB,KAAK0H,QACZuF,EAAapN,EAAEC,OAAO8H,KAAKT,UAAU+F,oBAGjCrN,GAAEkD,GAAGwK,cACTvN,KAAKK,QACHmN,KAAM3N,EAAEkD,GAAGwK,aAAaE,cACxBC,IAAKT,GACLM,eAGH1N,EAAEsD,KAAMnD,KAAK4oD,cAAe/oD,EAAEwY,MAAO,SAAUypB,EAAQ/zB,GACjDlO,EAAEC,OAAQiO,IACd/N,KAAKK,QACHmN,KAAM3N,EAAEC,OAAQiO,GAAaN,cAC7BC,IAAKT,GAAcc,MAEpB/N,OAEHH,EAAE+B,OAAQ5B,MACT2kC,IAAK,KACLkkB,iBAAiB,IAIjB7oD,KAAK2kC,IADDpd,EAAKsM,UAERi1B,YAAa1lD,EAAKmF,SAAU,0BAA2BA,WACvDwgD,aAAc3lD,EAAKmF,SAAU,8BAGnBvI,KAAK8zB,YAKlB80B,eAAiB,gBAAiB,aAAc,UAEhDzjB,sBAAuB,SAAUx+B,GAChC,MAASA,GAAoB,SAAVA,EAAmB,GAAK,kBAAoBA,EAAU,IAG1EmtB,SAAU,WACT,GAAI1wB,GAAOpD,KAAKK,QACfknB,EAAOvnB,KAAK0H,QACZ/F,GACCmnD,YAAa1lD,EAAKmF,SAAU,UAC5BwgD,aAAc3lD,EACZ2R,SAAU,oCAEO,eAAdwS,EAAKpiB,KAAwB,aAAe,YAAe,IAC9DnF,KAAKmlC,sBAAuB5d,EAAK5P,OAAU,KACzC4P,EAAKob,QAAU,iBAAmB,KAClCpb,EAAKid,KAAO,WAAa,KAC3BzB,UAAW,yCAERxb,EAAKihB,UAAW,EAAO,YAAc,IAAO,YAC/CjgC,WASJ,OANK5G,GAAGmnD,YAAYtnD,OAAS,GAC5B3B,EAAG,4DACDke,OAAQpc,EAAGmnD,aACXpqC,UAAWtb,GAGPzB,GAGR0Q,MAAO,WACNrS,KAAKylC,WAGN/xB,YAAa,SAAUhM,GACtB,GAAIshD,GAAav8C,EAChBrJ,EAAOpD,KAAKK,OAuCb,OApCKqH,GAAQvC,OAAShF,IACrBiD,EACEuH,YAAa,uDACboK,SAAU,oBAAwC,eAAjBrN,EAAQvC,KAAwB,aAAe,aAClF6jD,GAAc,GAGVthD,EAAQiQ,QAAUxX,GACtBiD,EACEuH,YAAa3K,KAAKmlC,sBAAuBnlC,KAAK0H,QAAQiQ,QACtD5C,SAAU/U,KAAKmlC,sBAAuBz9B,EAAQiQ,QAG5CjQ,EAAQi7B,UAAYxiC,GACxBiD,EAAKwQ,YAAa,gBAAiBlM,EAAQi7B,SAGvCj7B,EAAQ88B,OAASrkC,GACrBiD,EAAKwQ,YAAa,UAAWlM,EAAQ88B,MAGjC98B,EAAQ8gC,SAAWroC,GACvBH,KAAK2kC,IAAIokB,aAAan1C,YAAa,YAAalM,EAAQ8gC,QAGpD9gC,EAAQihD,mBAAqBxoD,IACjCH,KAAK0H,QAAQihD,iBAAmBjhD,EAAQihD,iBACxCK,GAAc,GAGfv8C,EAAczM,KAAK+Q,OAAQrJ,GAEtBshD,GACJhpD,KAAKylC,UAGCh5B,GAGRoxB,UAAW,WACV,MAAO79B,MAAK2kC,IAAIokB,cAGjBtjB,QAAS,WACR,GAAI4R,GAAMr3C,KAAK69B,YACdorB,EAAM5R,EAAI7pC,KAAM,WAAYE,IAAK,qBACjC6E,EAASvS,KAAK6oD,eACVhpD,GAAEC,OAAOquC,eACbkJ,EAAI7pC,KAAM,yBAA0B2gC,cAAe,WAEpDnuC,KAAK2mC,qBAAsBsiB,EAC1BjpD,KAAK0H,QAAQihD,iBAAmB3oD,KAAKwmC,aAAcyiB,EAAK12C,GAAW02C,EACnE12C,GACDvS,KAAK6oD,iBAAkB,GAKxBx1C,SAAU,WACT,GAAI1R,GAAIunD,EACP3hC,EAAOvnB,KAAK0H,OAEb,OAAK6f,GAAKsM,SACF7zB,MAGR2B,EAAK3B,KAAK2kC,IACVukB,EAAUlpD,KAAKK,QACbsK,YAAa,6FAEb3K,KAAKmlC,sBAAuB5d,EAAK5P,QACjCnK,KAAM,WACNE,IAAK,qBAEP1N,KAAK+mC,wBAAyBmiB,GAE9BvnD,EAAGmnD,YAAY1iB,aACfzkC,GAAGonD,aAAaxgD,WAAW69B,YAE1BvmC,EAAEC,OAAOkJ,UAAUu9B,uBAEnBxmC,GAEH,SAAWF,EAAGM,GAEbN,EAAEqQ,OAAQ,kBACTzC,aAAc,mDAEd/F,SACCiQ,MAAO,KACPwxC,YAAY,EACZC,aAAc,KACdC,YAAa,QAGdp2C,QAAS,WACR,GAAIq2C,GAASC,EACZp1B,EAAQn0B,KAAKK,QAAQ+yB,GAAI,2BAA8B,SAAW,SAClExrB,EAAO5H,KAAKK,QAAQyJ,QAAS,WACT,KAAhBlC,EAAKpG,SACToG,GAAO,EACP5H,KAAK4S,IAAK5S,KAAKC,UACdm6C,SAAY,aAGdv6C,EAAE+B,OAAQ5B,MACTm0B,KAAMA,EACNvsB,KAAMA,EACN0hD,QAASA,EACTC,SAAUA,IAEXvpD,KAAKK,QAAQkE,KAAM,OAAiB,WAAT4vB,EAAoB,SAAW,eAAgBpf,SAAU,MAAQof,GAC5Fn0B,KAAKylC,UACLzlC,KAAK0T,YAAa1T,KAAK0H,UAExBgM,YAAa,SAAU0a,GAYtB,GAXKA,EAAE+6B,aAAehpD,GACrBH,KAAKwpD,oBAEiB,MAAlBp7B,EAAEg7B,cACNppD,KAAKK,QACHmN,KAAM,wBACNuH,SAAU,iBAAmBqZ,EAAEg7B,cAE7Bh7B,EAAEi7B,cAAgBlpD,GACtBH,KAAKK,QAAQmN,KAAM,qCAAsCS,KAAMmgB,EAAEi7B,aAE7Dj7B,EAAEzW,QAAUxX,EAAY,CAC5B,GAAIy1C,GAAe51C,KAAK0H,QAAQiQ,MAAQ3X,KAAK0H,QAAQiQ,MAAQ,UAC5DiuB,EAAWxX,EAAEzW,MAAQyW,EAAEzW,MAAQ,SAEhC3X,MAAKK,QAAQsK,YAAa,UAAYirC,GAAe7gC,SAAU,UAAY6wB,GAG5E5lC,KAAK+Q,OAAQqd,IAEdqX,QAAS,WACW,WAAdzlC,KAAKm0B,MACTn0B,KAAKypD,0BAEAzpD,KAAK4H,OACV5H,KAAK0pD,eACc,WAAd1pD,KAAKm0B,KACTn0B,KAAKK,QAAQsY,SAAU,QACE,WAAd3Y,KAAKm0B,MAChBn0B,KAAKwpD,qBAGPxpD,KAAK2pD,qBACL3pD,KAAK4pD,cAINF,aAAc,WACb7pD,EAAG,SAAUA,EAAEC,OAAOsI,GAAK,gBAAiB7G,KAAMmF,SAAY,cAI/DkjD,WAAY,WACX5pD,KAAKK,QACHkI,SAAU,KACVjH,OAAQ,cAAgBzB,EAAEC,OAAOsI,GAAK,iBACtC7D,KAAM,QAAU1E,EAAEC,OAAOsI,GAAK,OAAQ,UACxCpI,KAAKK,QAAQmJ,QAAS,WAGvBigD,wBAAyB,WACxB,GAAII,GAAgB7pD,KAAKK,QAAQkI,SAAU,YAG3CvI,MAAKspD,QAAUO,EAAcz1C,SAAU,iBACrCy1C,EAAcz1C,SAAU,uBAE1BpU,KAAKupD,SAAWM,EAAcz1C,SAAU,gBAGxCpU,KAAKspD,QAAUtpD,KAAKspD,SACnBO,EAAclmD,GAAI,GAChB+J,IAAK,sCACLqH,SAAU,eACVvT,OAEHxB,KAAKupD,SAAWvpD,KAAKupD,UAAYM,EAAclmD,GAAI,GAAIoR,SAAU,gBAAiBvT,QAEnFgoD,kBAAmB,WAClB,GAAIM,GACHpiD,EAAU1H,KAAK0H,QACfiQ,EAAQjQ,EAAQ0hD,cAAgB1hD,EAAQiQ,KAGzCmyC,GAAa9pD,KAAK+pD,YAAgB/pD,KAAK+pD,gBAGlC/pD,KAAK0H,QAAQyhD,YAGF,WAAdnpD,KAAKm0B,MAGLt0B,EAAG,YAAa2B,OAAS,IACvBxB,KAAK4H,KAGJ5H,KAAK4H,KAAM,GAAImE,aAAc,QAAUlM,EAAEC,OAAOsI,GAAK,SACtDvI,EAAEC,OAAOmK,KAAK+a,UAAWlM,SAASW,MAIjC5Z,EAAEC,OAAOuhB,UAAYxhB,EAAEC,OAAOuhB,SAASjB,SACxCvgB,EAAEC,OAAOuhB,SAASjB,QAAQyG,YAAc,KAGzC7mB,KAAKspD,QAGDQ,EAAWE,WAChBhqD,KAAK8pD,WAAaA,EAAWzpD,SAAYypD,EAAWzpD,SACnDR,EAAG,kGAEC8X,EAAQ,UAAYA,EAAQ,IAAM,IACpC,8DACS9X,EAAEC,OAAOsI,GAAK,cAAgBV,EAAQ2hD,YAChD,SACC3qC,UAAW1e,KAAKK,SACnBypD,EAAWE,UAAW,GAIZF,EAAWzpD,UACtBypD,EAAWzpD,QAAQmlC,SACnBskB,EAAWE,UAAW,IAGxBL,mBAAoB,WACnB3pD,KAAKK,QAAQkI,SAAU,0BACrBwM,SAAU,YAEVxQ,MACA4vB,KAAQ,UACR81B,aAAc,OAGjB52C,SAAU,WACT,GAAIuiC,EAEJ51C,MAAKK,QAAQkI,SAAU,0BACrBoC,YAAa,YACb3G,WAAY,QACZA,WAAY,cAEK,WAAdhE,KAAKm0B,OACTn0B,KAAKK,QAAQkI,SAAU,aACrBoC,YAAa,2DACV3K,KAAK8pD,YACT9pD,KAAK8pD,WAAWz7C,UAIlBunC,EAAe51C,KAAK0H,QAAQiQ,MAAQ3X,KAAK0H,QAAQiQ,MAAQ,UACzD3X,KAAKK,QAAQsK,YAAa,UAAYirC,GAEtC51C,KAAKK,QAAQsK,YAAa,MAAQ3K,KAAKm0B,MAAOnwB,WAAY,YAIzDjE,GAEJ,SAAWF,EAAGM,GAEbN,EAAEqQ,OAAQ,iBAAkBrQ,EAAEC,OAAOqI,SACpCT,SACChB,SAAS,KACTwjD,mBAAmB,EACnBC,iBAAiB,EACjBlhC,WAAY,QACZmhC,YAAY,EACZC,WAAW,EACXC,mBAAoB,uIACpBC,gBAAiB,0BACjBliD,mBAAmB,EACnBmiD,yBAAyB,EAQzBC,iBAAkB,WACjB,OAAQ5qD,EAAEmG,QAAQgZ,gBAIpB/L,QAAS,WACRjT,KAAK+Q,SACL/Q,KAAK4Y,cAAgB/Y,EAAG,yBACO,UAA1BG,KAAK0H,QAAQhB,UAAyB1G,KAAK0H,QAAQ+iD,oBACvDzqD,KAAK0qD,cAIPA,WAAY,WACX1qD,KAAKK,QAAQ0U,SAAU,MAAO/U,KAAKm0B,KAAM,UACzCn0B,KAAKqI,oBACLrI,KAAK2qD,sBACL3qD,KAAK4qD,kBACL5qD,KAAK6qD,uBAGNn3C,YAAa,SAAU0a,GAItB,GAHoB,UAAfA,EAAE1nB,UAAkD,UAA1B1G,KAAK0H,QAAQhB,UAC3C1G,KAAK0qD,aAEyB,UAA1B1qD,KAAK0H,QAAQhB,WAAyB1G,KAAK0H,QAAQ+iD,mBAAqB,CAC5E,GAAIK,GAAY9qD,KAAK4H,KAAQ5H,KAAK4H,KAAQ/H,EAAE,mBAAmB2B,OAAS,EAAK3B,EAAE,mBAAoBA,EAAE,YAAY8D,GAAG,EAE/GyqB,GAAEg8B,aAAejqD,IAChBiuB,EAAEg8B,YACNpqD,KAAKK,QAAQ0U,SAAU,MAAO/U,KAAKm0B,KAAM,eACzC22B,EAAM/1C,SAAU,WAAa/U,KAAKm0B,KAAO,iBAIzCn0B,KAAKK,QAAQsK,YAAa,MAAO3K,KAAKm0B,KAAM,eAC5C22B,EAAMngD,YAAa,WAAa3K,KAAKm0B,KAAO,eAAgBpf,SAAU,WAAa/U,KAAKm0B,KAAM,YAIjGn0B,KAAK+Q,OAAOqd,IAGbu8B,oBAAqB,WACpB,GAAII,GAAS/qD,KAAK0H,QAAQuhB,UAErB8hC,IAAqB,SAAXA,IAEE,UAAXA,IACJA,EAAS/qD,KAAKK,QAAQ+T,SAAU,aAAgB,YAAc,WAG/DpU,KAAKK,QAAQ0U,SAAUg2C,KAIzBH,gBAAiB,WAChB,GAAIhjD,GAAW5H,KAAK4H,KAAQ5H,KAAKK,QAAQyJ,QAAS,YAAc9J,KAAKC,QAIrED,MAAK4S,IAAKhL,GACTosB,eAAkB,wBAClBg3B,qBAAuB,wBACvBC,eAAiB,wBACjB3Q,aAAgB,wBAChBF,SAAY,kBACZrmB,eAAkB,2BAIpBQ,sBAAuB,WACtB,GAAInG,GAAIpuB,KAAK0H,OACR0mB,GAAE+7B,iBACNtqD,EAAEC,OAAO2vC,KAAK37B,SAAS,GAElBsa,EAAE87B,mBACPlqD,KAAKyV,MAAM,IAIby1C,sBAAuB,WACjBlrD,KAAK0H,QAAQW,mBACjBrI,KAAKqI,kBAAuBrI,KAAK4H,KAAQ5H,KAAK4H,KAAM,oBAItDujD,gBAAiB,WAChBnrD,KAAKqI,kBAAuBrI,KAAK4H,KAAQ5H,KAAK4H,KAAM,mBAC/C5H,KAAK0H,QAAQW,mBACjBrI,KAAK4S,IAAK5S,KAAKE,QAAUoxB,gBAAmB,uBAI9CiS,sBAAuB,SAAUr4B,EAAGvJ,GACnC,GACCypD,GAAYC,EAAYC,EAAYC,EADjCn9B,EAAIpuB,KAAK0H,OAGR0mB,GAAE+7B,iBACNtqD,EAAEC,OAAO2vC,KAAK57B,QAAQ,GAElBua,EAAE/lB,mBACNrI,KAAKwU,KAAMxU,KAAKE,OAAQ,mBAGpBkuB,EAAEo8B,0BACNY,EAAavrD,EAAG,+BAAgCG,KAAK4H,MACrDyjD,EAAaxrD,EAAG,+BAAgCG,KAAK4H,MACrD0jD,EAAaF,EAAW5pD,QAAUG,EAAG25B,UAAYz7B,EAAG,gCAAkCurD,EAAWrhD,QAAS,MAAS,KAAMpI,EAAG25B,WAAcz7B,IAC1I0rD,EAAaF,EAAW7pD,QAAUG,EAAG25B,UAAYz7B,EAAG,gCAAkCwrD,EAAWthD,QAAS,MAAS,KAAMpI,EAAG25B,WAAcz7B,KAErIyrD,EAAW9pD,QAAU+pD,EAAW/pD,UAEpC8pD,EAAW9lD,IAAK+lD,GAAa5yC,SAAU9Y,EAAEC,OAAO2P,eAEhD9N,EAAG25B,SAAS9gB,IAAK,WAAY,WAC5B+wC,EAAW7sC,UAAW1e,MACtBsrD,EAAW3yC,SAAU3Y,WAMzBwrD,UAAU,EAGVnjD,kBAAmB,SAAUojD,GAC5B,GAAIpU,GAAMr3C,KAAKK,QACdglD,EAAwB,WAAbrlD,KAAKm0B,KAChBoV,EAAMrkC,WAAYmyC,EAAI91C,IAAK8jD,EAAS,MAAQ,UAGxCrlD,MAAK0H,QAAQ0iD,aAElBqB,EAAWA,GAAUA,EAAOtmD,OAAShF,GAAasrD,GAAYzrD,KAAK4H,MAAQyvC,EAAIvtC,QAAS,YACxF2hD,EAAazrD,KAAK4H,KAAQ5H,KAAK4H,KAAM,kBACrC/H,EAAG4rD,GAASlqD,IAAK,YAAe8jD,EAAS,MAAQ,UAAYhO,EAAI/xC,cAAgBikC,KAGlFmiB,eAAgB,SAAUC,GACzB,GAAI3qC,GAAOhhB,KAAKE,OACfm3C,EAAMr3C,KAAKK,QACXurD,EAAS5qC,EAAK/I,YACd4zC,EAAWxU,EAAIprC,SACf6/C,EAAc9rD,KAAK4H,KAAQyvC,EAAIvtC,QAAS,YAAamC,SAASpM,EAAE,mBAAmBoM,SACnF8/C,EAAiBlsD,EAAEC,OAAOkM,iBAE3B,QAAQ2/C,IACL3rD,KAAK0H,QAAQuhB,YAA0C,SAA5BjpB,KAAK0H,QAAQuhB,aAEzB,WAAdjpB,KAAKm0B,OAAsBn0B,KAAK0H,QAAQ0iD,YAAcwB,EAASC,GACjD,WAAd7rD,KAAKm0B,OAAsBn0B,KAAK0H,QAAQ0iD,YAAwC0B,EAAUD,EAApCD,EAASG,IAC7D/rD,KAAK0H,QAAQ0iD,aAIpB50C,KAAM,SAAUm2C,GACf,GAAIK,GAAY,kBACf3U,EAAMr3C,KAAKK,OAEPL,MAAK0rD,eAAgBC,GACzBtU,EACE1sC,YAAa,OAASqhD,GACtBj3C,SAAU,MACV0U,kBAAkB,WAClB4tB,EAAI1sC,YAAa,QAInB0sC,EAAI1sC,YAAaqhD,GAElBhsD,KAAKwrD,UAAW,GAGjB/1C,KAAM,SAAUk2C,GACf,GAAIK,GAAY,kBACf3U,EAAMr3C,KAAKK,QAEX4rD,EAAW,OAAsC,UAA5BjsD,KAAK0H,QAAQuhB,WAAyB,WAAa,GAEpEjpB,MAAK0rD,eAAgBC,GACzBtU,EACEtiC,SAAUk3C,GACVthD,YAAa,MACb8e,kBAAkB,WAClB4tB,EAAItiC,SAAUi3C,GAAYrhD,YAAashD,KAIzC5U,EAAItiC,SAAUi3C,GAAYrhD,YAAashD,GAExCjsD,KAAKwrD,UAAW,GAGjBU,OAAQ,WACPlsD,KAAMA,KAAKwrD,SAAW,OAAS,WAGhCX,oBAAqB,WACpB,GAECsB,GAAWC,EAFRryC,EAAO/Z,KACVouB,EAAIrU,EAAKrS,QAET2kD,GAAY,EACZzkD,EAAW5H,KAAK4H,KAAQ5H,KAAK4H,KAAM/H,EAAE,WAGtC+H,GACExB,KAAM,SAAU,SAAU8E,GACrBkjB,EAAEi8B,YAAcxqD,EAAGqL,EAAEsG,QAAS1H,QAASskB,EAAEk8B,oBAAqB9oD,QAClEuY,EAAKmyC,WAGN9lD,KAAM,mBAAoB,SAAU8E,GAM/BwzC,OAAOlhC,MAAQ,MAAQ3d,EAAGqL,EAAEsG,QAAS4hB,GAAIhF,EAAEm8B,mBAAsB1qD,EAAGqL,EAAEsG,QAAS1H,QAAS,sCAAuCtI,SAMnH,aAAX0J,EAAE/F,MAAwBknD,EAOR,YAAXnhD,EAAE/F,MAAwBknD,IAErCnyC,aAAciyC,GACdE,GAAY,EACZD,EAAY/oD,WAAY,WACvB0W,EAAKtE,QACH,KAZH42C,GAAY,EAEZnyC,aAAckyC,GACdD,EAAY9oD,WAAY,WACvB0W,EAAKvE,QACH,QAaRk0C,aAAc,WACiB,UAA1B1pD,KAAK0H,QAAQhB,UAChB7G,EAAG,SAAUA,EAAEC,OAAOsI,GAAK,gBAAiB7G,KAAMmF,SAAY,cAIhE2M,SAAU,WACT,GAAIi5C,GAAaC,EAAgBC,EAAUnH,EAAQoH,EAClD7kD,EAAO5H,KAAK4Y,cAAcA,cAAe,gBAE1C5Y,MAAK+Q,SAC0B,UAA1B/Q,KAAK0H,QAAQhB,WACjB8lD,EAAW3sD,EAAI,YAAcG,KAAKm0B,KAAO,UACrC3uB,IAAKoC,EAAK4F,KAAM,OAASxN,KAAK0H,QAAQysB,KAAO,WAC7CzmB,IAAK1N,KAAKK,SAAUmB,OAAS,EACjCirD,EAAgB5sD,EAAI,YAAcG,KAAKm0B,KAAO,UAC1C3uB,IAAKoC,EAAK4F,KAAM,OAASxN,KAAK0H,QAAQysB,KAAO,gBAC7CzmB,IAAK1N,KAAKK,SAAUmB,OAAS,EACjC+qD,EAAkB,0HAElBvsD,KAAKK,QAAQsK,YAAa4hD,GACpBE,IACLH,EAAc,WAAatsD,KAAKm0B,KAAO,eAElCq4B,IACLnH,EAAuB,WAAdrlD,KAAKm0B,KACdm4B,GAAe,YAActsD,KAAKm0B,KAAO,SACzCvsB,EAAKrG,IAAK,YAAe8jD,EAAS,MAAQ,UAAY,KAEvDz9C,EAAK+C,YAAa2hD;KAKlBvsD,GAEJ,SAAWF,GACVA,EAAEqQ,OAAQ,iBAAkBrQ,EAAEC,OAAOqI,SAEpCuiD,WAAY,WACX1qD,KAAK+Q,SACL/Q,KAAK0sD,gBAINA,aAAc,WACb,GAAIztC,GAAKnZ,UAAUC,UACnBmZ,EAAWpZ,UAAUoZ,SAErBC,EAAUF,EAAG5a,MAAO,yBACpB+a,IAAcD,GAAWA,EAAS,GAClCwtC,EAAK,KACL5yC,EAAO/Z,IAEP,IAAKkf,EAAS7H,QAAS,UAAa,IAAM6H,EAAS7H,QAAS,QAAW,IAAO6H,EAAS7H,QAAS,QAAW,GAC1Gs1C,EAAK,UACC,CAAA,KAAK1tC,EAAG5H,QAAS,WAAc,IAGrC,MAFAs1C,GAAK,UAKN,GAAY,QAAPA,EAEJ5yC,EAAK6yC,4BACC,CAAA,KAAY,YAAPD,GAAoBvtC,GAAyB,IAAZA,GAK5C,MAHArF,GAAK6yC,wBACL7yC,EAAK8yC,6BAOPC,gBAAiB,WAChB,GAAIzV,GAAMr3C,KAAKK,QACdglD,EAAShO,EAAIjjC,SAAU,aACvB8D,EAASpP,KAAKqkB,IAAKkqB,EAAIn/B,SAASF,IAAMhY,KAAKE,OAAO+X,YAInD,OAHMotC,KACLntC,EAASpP,KAAK2sC,MAAOv9B,EAASlY,KAAKE,OAAO+L,SAAWorC,EAAI/xC,eAAkB,IAErE4S,GAIR00C,sBAAuB,WACtB,GAAI7yC,GAAO/Z,IAEXA,MAAK4S,IAAK5S,KAAKE,QAAU+wB,WAAY,WACpC,GAAI87B,GAAiBhzC,EAAK+yC,iBAErBC,GAAiB,GAAKhzC,EAAKyxC,UAC/BzxC,EAAKizC,qBAURH,yBAA0B,WACzB7sD,KAAKK,QAAQyJ,QAAS,YAAaiL,SAAU,wBAO9Ci4C,eAAgB,WACf,GAAIjS,GAAgB71C,WAAYrF,EAAG,mBAAoB0B,IAAK,kBAE5D1B,GAAG,mBAAoB0B,IAAK,iBAAoBw5C,EAAgB,EAAM,MAGtE13C,WAAY,WACXxD,EAAG,mBAAoB0B,IAAK,iBAAkBw5C,EAAgB,OAC5D,IAGJloC,QAAS,WACR7S,KAAK+Q,SAEL/Q,KAAKK,QAAQyJ,QAAS,mBAAoBa,YAAa,yBAItD5K,GAGJ,SAAYF,EAAGM,GAUf,QAAS8sD,KACR,GAAI3qB,GAAQ4qB,EAAW5qB,QACtB6qB,EAAK7qB,EAAM3+B,GAAI,GACfymB,EAAKkY,EAAM3+B,GAAI,GACfy8C,EAAKh2B,EAAG7hB,UAET,QAAS6kD,MAAOhjC,EAAG5kB,IAAK2nD,GAAMA,GAAIA,EAAI/iC,GAAIA,EAAIg2B,GAAIA,GAdnD,GAAIiN,GAAWxtD,EAAEC,OAAOigB,QAAQC,OAASngB,EAAEC,OAAOigB,QAAQC,OAAS,EAClEktC,EAAartD,EACZ,gFAC2CwtD,EAAS,MAAQ,IAAO,6CAcrExtD,GAAEqQ,OAAQ,eAAgBrQ,EAAEC,OAAOk2C,OAClCtuC,SAEC4lD,MAAO,IAGRr6C,QAAS,WACR,GAAImtC,GACHjpC,EAAMnX,KAAK+Q,QAMZ,OAJK/Q,MAAK0H,QAAQ4lD,QACjBttD,KAAK2kC,IAAI2oB,MAAQlN,EAAKpgD,KAAKutD,aAGrBp2C,GAGRo2C,UAAW,WACV,GAAI51C,GACH4P,EAAOvnB,KAAK0H,QACZ04C,EAAK6M,GAMN,OAJAt1C,GAAQ3X,KAAKmlC,sBAAuB,WAAY5d,EAAK5P,OACrDyoC,EAAGA,GAAGrrC,SAAU4C,GAAU4P,EAAKihB,OAAS,qBAAuB,KAC/D4X,EAAGgN,MAAM33C,OAAOkD,SAAU3Y,KAAKK,SAExB+/C,GAGRyC,WAAY,WACX,GAAIzC,GAAKpgD,KAAK2kC,IAAI2oB,KAMlB,OAJKlN,IACJA,EAAGgN,MAAM/+C,SAGHrO,KAAK+Q,UAMby8C,YAAa,SAAU/oC,EAAGgpC,EAAK1Q,EAASp4B,EAAG+oC,GAC1C,GAAI12C,GAAQqpC,EAAG5uB,EAAMk8B,KAAsBC,IAI3C,OAAKjpC,GAAEkpC,OAAQppC,EAAEqpC,QAAWnpC,EAAEopC,UAAWtpC,EAAEqpC,QACnCJ,GAGRC,EAAiBlpC,EAAEupC,KAAQjR,EAASt4B,EAAEupC,MACnCrpC,EAAEspC,OAAQxpC,EAAEypC,SAAYvpC,EAAEwpC,SAAU1pC,EAAEypC,UAAczpC,EAAE2pC,aACxDzpC,EAAE0pC,WAAY5pC,EAAEupC,MAAUrpC,EAAEm8B,UAAUJ,SAAUj8B,EAAEypC,SAAYvpC,EAAE0pC,WAAY5pC,EAAEypC,UAAczpC,EAAE6pC,kBAC/FX,EAAiBlpC,EAAE8pC,KAAQxR,EAASt4B,EAAE8pC,KAEtCv3C,EAAS2N,EAAE3N,QAAUhX,KAAK6gD,wBAAyB8M,EAAiBhpC,EAAEm8B,WACtET,GAAM52C,EAAGuN,EAAO09B,KAAMhrC,EAAGsN,EAAOgB,KAEhC41C,EAAKnpC,EAAEupC,KAAQ3N,EAAG57B,EAAEupC,KAAQrpC,EAAE0pC,WAAY5pC,EAAEupC,KAAQvpC,EAAE+pC,UACtDZ,EAAKnpC,EAAE8pC,KAAQzlD,KAAKC,IAAKiO,EAAQyN,EAAE5T,MAAS8T,EAAE8pC,YAAahqC,EAAE5T,MAAS8T,EAAEspC,OAAQxpC,EAAEqpC,QACjFhlD,KAAK+oC,IAAK76B,EAAQyN,EAAE5T,MAAS8T,EAAE8pC,YAAahqC,EAAE5T,MAAS8T,EAAEopC,UAAWtpC,EAAEqpC,QAAWnpC,EAAEspC,OAAQxpC,EAAEqpC,QAC5F/Q,EAASt4B,EAAE8pC,OAEb98B,EAAO3oB,KAAKqkB,IAAK4vB,EAAQtzC,EAAImkD,EAAInkD,GAAMX,KAAKqkB,IAAK4vB,EAAQrzC,EAAIkkD,EAAIlkD,KAC3DgkD,GAAQj8B,EAAOi8B,EAAKj8B,QAEzBm8B,EAAKnpC,EAAE8pC,MAAS5pC,EAAEspC,OAAQxpC,EAAEqpC,QAAW92C,EAAQyN,EAAE5T,MAAS8T,EAAE0pC,WAAY5pC,EAAE8pC,KAC1Eb,GAASD,IAAKA,EAAKh8B,KAAMA,EAAMza,OAAQA,EAAQ03C,QAASjqC,EAAE5T,KAAM89C,OAAQf,EAAKnpC,EAAE8pC,OAGzEb,IAGRkB,mBAAoB,SAAUC,GAC7B,GAAI32C,GAAQ42C,EACX1O,EAAKpgD,KAAK2kC,IAAI2oB,MACdzrC,GACCi/B,UAAW9gD,KAAKwgD,kBAAmBqO,GACnChB,QAAU1Q,GAAIiD,EAAGh2B,GAAG5M,QAAS4/B,GAAIgD,EAAGh2B,GAAGne,UACvC8hD,WAAa5Q,GAAIiD,EAAG+M,GAAG3vC,QAAS4/B,GAAIgD,EAAG+M,GAAGlhD,UAC1CwiD,YAAarO,EAAG+M,GAAGj1C,SAoBrB,OAjBAA,GAASlY,KAAKK,QAAQ6X,SAEtBkoC,EAAG+M,GAAG5rD,KAAOmzC,KAAM,EAAG18B,IAAK,EAAG+2C,MAAO,EAAGC,OAAQ,IAChDF,EAAW1O,EAAG+M,GAAGj1C,SACjB2J,EAAMwsC,YACL5kD,EAAGqlD,EAASpa,KAAOx8B,EAAOw8B,KAC1BhrC,EAAGolD,EAAS92C,IAAME,EAAOF,IACzBmlC,GAAIiD,EAAG+M,GAAG3vC,QACV4/B,GAAIgD,EAAG+M,GAAGlhD,UAEXm0C,EAAG+M,GAAGnpD,WAAY,SAGlB6d,EAAM4sC,aAAgB/Z,KAAM7yB,EAAM4sC,YAAY/Z,KAAOx8B,EAAOw8B,KAAM18B,IAAK6J,EAAM4sC,YAAYz2C,IAAME,EAAOF,KACtG6J,EAAMosC,QAAW9Q,GAAIt7B,EAAMgsC,OAAO1Q,GAAK,EAAGC,GAAIv7B,EAAMgsC,OAAOzQ,GAAK,GAChEv7B,EAAMssC,UAAahR,GAAIt7B,EAAMi/B,UAAUJ,SAASvD,GAAK,EAAGC,GAAIv7B,EAAMi/B,UAAUJ,SAAStD,GAAK,GAEnFv7B,GAGRk/B,iBAAkB,SAAUhE,GAC3B,GAAIl7B,GAAO6rC,EAAMnpC,EAAQ0qC,EAAUC,EAClCt6B,EAAc50B,KAAK0H,QAAQ4lD,MAC3BlN,EAAKpgD,KAAK2kC,IAAI2oB,KAEf,OAAMlN,IAINA,EAAGgN,MAAM53C,OAET05C,KACArtC,EAAQ7hB,KAAK4uD,oBAAoB,GACjCrqC,GACC+7B,GAAO0N,IAAK,IAAKO,IAAK,IAAK19C,KAAM,MAAOi9C,OAAQ,KAAMI,QAAS,KAAME,aAAc,EAAGI,WAAa3sC,EAAMosC,OAAO9Q,GAAImR,kBAAmB,GACvIjO,GAAO2N,IAAK,IAAKO,IAAK,IAAK19C,KAAM,MAAOi9C,OAAQ,KAAMI,QAAS,KAAME,aAAc,GAAII,UAAW3sC,EAAMosC,OAAO9Q,GAAKt7B,EAAMwsC,WAAWlR,GAAImR,kBAAmB,GAC5J1jC,GAAOojC,IAAK,IAAKO,IAAK,IAAK19C,KAAM,OAAQi9C,OAAQ,KAAMI,QAAS,KAAME,aAAc,GAAII,UAAW3sC,EAAMosC,OAAO7Q,GAAKv7B,EAAMwsC,WAAWjR,GAAIkR,kBAAmB,GAC7J3wC,GAAOqwC,IAAK,IAAKO,IAAK,IAAK19C,KAAM,OAAQi9C,OAAQ,KAAMI,QAAS,KAAME,aAAc,EAAGI,WAAY3sC,EAAMosC,OAAO7Q,GAAIkR,kBAAmB,IAMxIzuD,EAAEsD,MAAQyxB,KAAgB,EAAO,UAAYA,GAAcpkB,MAAO,KACjE3Q,EAAEwY,MAAO,SAAU1S,EAAKgB,GACvB+mD,EAAO1tD,KAAKwtD,YAAajpC,EAAQ5d,GAASA,EAAOo2C,EAASl7B,EAAO6rC,IAC/D1tD,OAIE0tD,GAMNtN,EAAGh2B,GACDzf,YAAa,uEACboK,SAAU,kBAAoB24C,EAAKD,KACnCzpD,WAAY,SAAUzC,IAAKmsD,EAAKgB,QAAShB,EAAKiB,QAC9Cn5C,OAGI63C,IACL4B,EAAWjvD,KAAKK,QAAQ6X,SACxBg3C,EAAO3qC,EAAQmpC,EAAKD,KAAMO,KAAQ5N,EAAGh2B,GAAGlS,SACxCg3C,EAAO3qC,EAAQmpC,EAAKD,KAAMc,MACzB7Z,KAAMua,EAASva,KAAO7yB,EAAMwsC,WAAW5kD,EACvCuO,IAAKi3C,EAASj3C,IAAM6J,EAAMwsC,WAAW3kD,IAIhCgkD,EAAK12C,SArBXopC,EAAGgN,MAAM33C,OACFzV,KAAK+Q,OAAQgsC,KA1Bb/8C,KAAK+Q,OAAQgsC,IAiDtBrpC,YAAa,SAAU6T,GACtB,GAAIqe,GACHC,EAAW7lC,KAAK0H,QAAQiQ,MACxByoC,EAAKpgD,KAAK2kC,IAAI2oB,MACdn2C,EAAMnX,KAAK+Q,OAAQwW,EAEpB,IAAKA,EAAK+lC,QAAUntD,EAAY,CAC/B,IAAMigD,GAAM74B,EAAK+lC,MAKhB,YAJAttD,KAAK2kC,IAAI2oB,MAAQttD,KAAKutD,YAKXnN,KAAO74B,EAAK+lC,QACvBlN,EAAGgN,MAAM/+C,SACTrO,KAAK2kC,IAAI2oB,MAAQ,MAmBnB,MAdAlN,GAAKpgD,KAAK2kC,IAAI2oB,MAETlN,IACC74B,EAAK5P,QAAUxX,IACnB0lC,EAAW7lC,KAAKmlC,sBAAuB,WAAYU,GACnDD,EAAW5lC,KAAKmlC,sBAAuB,WAAY5d,EAAK5P,OACxDyoC,EAAGA,GAAGz1C,YAAak7B,GAAW9wB,SAAU6wB,IAGpCre,EAAKihB,SAAWroC,GACpBigD,EAAGA,GAAGxsC,YAAa,oBAAqB2T,EAAKihB,SAIxCrxB,GAGR9D,SAAU,WACT,GAAI+sC,GAAKpgD,KAAK2kC,IAAI2oB,KAMlB,OAJKlN,IACJA,EAAGgN,MAAM/+C,SAGHrO,KAAK+Q,aAIVhR,GAGJ,SAAWF,EAAGM,GAEdN,EAAEqQ,OAAQ,gBACTxI,SACCwgC,SACCinB,MAAO,WACPC,UAAW,gBACXC,YAAa,kBACbC,WAAY,iBACZC,WAAY,iBACZC,MAAO,mBACPC,UAAW,wBACXhgD,cAAe,0BACfigD,YAAa,mBACbC,iBAAkB,yBAClBC,kBAAmB,wBACnBC,QAAS,oBAEVA,SAAS,EACTl4C,MAAO,KACPjR,SAAU,OACVi3C,aAAa,EACbmS,QAAS,SACTC,YAAY,EACZC,eAAe,GAGhBC,WAAY,KACZC,YAAa,KACbhS,MAAO,KACPiS,OAAQ,KACRC,YAAa,KACbjjB,SAAU,KACVkjB,eAAgB,KAEhBp9C,QAAS,WACR,GAAInI,GAAK9K,KAAKK,QACbiwD,EAAaxlD,EAAGhB,QAAS,kCAG1BjK,GAAE+B,OAAQ5B,MACTiwD,WAAYnlD,EAAG0C,KAAM,yBACrB0iD,YAAeI,EAAW9uD,OAAS,EAAM8uD,GAAa,EACtDC,YAAa,KACbrS,MAAOl+C,KAAKwwD,SACZJ,YAAapwD,KAAKywD,iBAClBJ,eAAgBrwD,KAAK0wD,oBAEQ,YAAzB1wD,KAAK0H,QAAQooD,SACjB9vD,KAAK2wD,cAEN3wD,KAAK4wD,mBAGA/wD,EAAEmG,QAAQya,gBAAoBzgB,KAAK0H,QAAQmoD,SAC/C7vD,KAAKK,QAAQ0U,SAAU/U,KAAK0H,QAAQwgC,QAAQ2nB,SAG7C7vD,KAAK6wD,oBACL7wD,KAAK8wD,mBACL9wD,KAAK+wD,qBACL/wD,KAAK4qD,kBAEE5qD,KAAK0H,QAAQi2C,aACnB39C,KAAKgxD,eAGNhxD,KAAKixD,oBAGNR,eAAgB,WACf,GAAIlB,GAAavvD,KAAKK,QAAQmN,KAAM,IAAMxN,KAAK0H,QAAQwgC,QAAQqnB,WAM/D,OAJ2B,KAAtBA,EAAW/tD,SACf+tD,EAAavvD,KAAKK,QAAQkI,WAAW2kC,QAAS,eAAiBltC,KAAK0H,QAAQwgC,QAAQqnB,WAAa,QAAS1oD,UAGpG0oD,GAGRyB,aAAc,WACb,GAAIj3C,GAAO/Z,KACVwR,EAASuI,EAAKm2C,YAAcn2C,EAAKm2C,YAAYrpD,SAAWkT,EAAK1Z,QAAQwG,QAEtEkT,GAAKo2C,OAAStwD,EAAG,eAAiBka,EAAKrS,QAAQwgC,QAAQsnB,MAAQ,YAC7DruC,GAAI,YAAa,WACjBpH,EAAKmB,UAELvC,SAAUnH,IAGbg/C,SAAU,WACT,GAAI5oD,GAAO5H,KAAKuwD,aAAevwD,KAAKkwD,aAAerwD,EAAG,IAAMA,EAAEC,OAAO4K,gBAErE,OAAO9C,IAGR+oD,YAAa,WACZ,GAAI5hB,GAAU/uC,KAAKk+C,QAAQ1wC,KAAM,IAAMxN,KAAK0H,QAAQwgC,QAAQwnB,YACpC,KAAnB3gB,EAAQvtC,SACZutC,EAAU/uC,KAAKk+C,QAAQ31C,SAAU,kGAC/B2kC,QAAS,eAAiBltC,KAAK0H,QAAQwgC,QAAQwnB,YAAc,YAC7D7oD,UAGH7G,KAAKmtC,SAAW4B,GAGjB2hB,kBAAmB,WAClB,GAAIQ,GAAmBrxD,EAAG,QAAS0I,SAAU,sCAC5C4oD,EAAmBnxD,KAAKk+C,QAAQ1wC,KAAM,sCACtC4jD,EAAgBF,EAAiB1rD,IAAK2rD,GAAmBp8C,SAAU/U,KAAK0H,QAAQwgC,QAAQynB,iBAEzF,OAAOyB,IAGRC,sBAAuB,SAAU/nC,GAChC,MAAOA,GAAS,aAAetpB,KAAK0H,QAAQhB,SAAW,IAAM4iB,EAAS,YAActpB,KAAK0H,QAAQooD,SAGlGwB,iBAAkB,WACjB,GAAIC,GAAevxD,KAAK0H,QAAQwgC,QAAQinB,MACvC,IAAMnvD,KAAKqxD,sBAAuBrxD,KAAK0H,QAAQwgC,QAAQinB,OACvD,IAAMnvD,KAAK0H,QAAQwgC,QAAQmnB,YAC3B,aAAqBrvD,KAAK0H,QAAQiQ,MAAQ3X,KAAK0H,QAAQiQ,MAAQ,UAMhE,OAJO3X,MAAK0H,QAAQsoD,gBACnBuB,GAAgB,IAAMvxD,KAAK0H,QAAQwgC,QAAQonB,YAGrCiC,GAGRX,iBAAkB,WACjB5wD,KAAKK,QAAQ0U,SAAU/U,KAAKsxD,qBAG7BE,kBAAmB,SAAUnrD,GACtBA,EAAMkP,sBACXvV,KAAKkb,SAIP41C,iBAAkB,WACjB9wD,KAAK4S,IAAK5S,KAAKiwD,YACdrsB,MAAS,sBAGV5jC,KAAK4S,KACJ6+C,gCAAiC,uBAInCC,eAAgB,SAAUC,GACzB,GAAI53C,GAAO/Z,KACV4xD,EAAmB73C,EAAKq2C,YAAY9qD,cACpC2gC,EAAS2rB,EAAmB/xD,EAAEC,OAAOkM,iBAEjCi6B,KAAWlsB,EAAKrS,QAAQsoD,eACvB/pB,IACJlsB,EAAK83C,cACLhyD,EAAEC,OAAOoM,sBAAuB0lD,IAE5BD,GACJ3xD,KAAKE,OAAQ,GAAIqJ,SAAU,EAAG1J,EAAEC,OAAOqJ,oBAGxC4Q,EAAK+3C,aAIPC,iBAAkB,WACjB/xD,KAAK4S,IAAK/S,EAAGK,IAAYoxB,gBAAmB,oBAG7C0gC,mBAAoB,WACnBhyD,KAAKwU,KAAM3U,EAAGK,GAAU,oBAGzB2xD,YAAa,WACL7xD,KAAK0H,QAAQsoD,eAAiBnwD,EAAEmG,QAAQgZ,eAC9Chf,KAAKK,QAAQsK,YAAa3K,KAAK0H,QAAQwgC,QAAQonB,aAIjDwC,UAAW,WACH9xD,KAAK0H,QAAQsoD,eAAiBnwD,EAAEmG,QAAQgZ,eAC9Chf,KAAKK,QAAQ0U,SAAU/U,KAAK0H,QAAQwgC,QAAQonB,aAI9CuB,kBAAmB,WAClB,GAAI92C,GAAO/Z,IAEX+Z,GAAK1Z,QAAQ8gB,GAAI,eAAgB,WAC3BpH,EAAKmoC,OACTnoC,EAAK23C,oBAKRX,mBAAoB,WACnB/wD,KAAK4S,IAAK,QACTq/C,UAAW,kBAKbC,aAAc,SAAUhnD,GACvB,GAAIiT,GACHg0C,EAAUnyD,KAAKK,QAAQkE,KAAM,KAEzB2G,GAAE4J,cAAchU,KAAK0P,MAAO,KAAO,KAAQ2hD,GAAWA,IAAYhyD,IAEtE+K,EAAE5E,iBACF6X,EAAOte,EAAGqL,EAAEsG,QACP2M,EAAK/J,SAAU,YACnB+J,EAAKpJ,SAAUlV,EAAEC,OAAO8K,gBACxB5K,KAAKK,QAAQma,IAAK,uBAAwB,WACzC2D,EAAKxT,YAAa9K,EAAEC,OAAO8K,mBAG7B5K,KAAKksD,WAIP+E,iBAAkB,WACjB,GAAIl3C,GAAO/Z,KACVoyD,EAAOr4C,EAAKo2C,OAASp2C,EAAK1Z,QAAQmF,IAAKuU,EAAKo2C,QAAWp2C,EAAK1Z,OAGtD0Z,GAAKrS,QAAQqoD,aACY,SAA1Bh2C,EAAKrS,QAAQhB,SACjB0rD,EAAKjxC,GAAI,kBAAmB,WAC3BpH,EAAKmB,UAGNk3C,EAAKjxC,GAAI,mBAAoB,WAC5BpH,EAAKmB,YAMT0vC,gBAAiB,WAChB,GAAI7wC,GAAO/Z,IAEXA,MAAKC,SAEHkhB,GAAI,kBAAmB,SAAUjW,GAC5B6O,EAAKmoC,OAASh3C,EAAEsG,SAAWuI,EAAK1Z,QAAS,IAC7C0Z,EAAKmB,UAINiG,GAAI,cAAe,SAAUjW,GACV,KAAdA,EAAEpJ,SAAkBiY,EAAKmoC,OAC7BnoC,EAAKmB,UAGFlb,KAAKkwD,aAAwC,YAAzBlwD,KAAK0H,QAAQooD,SACtC9vD,KAAK4S,IAAK5S,KAAKC,UACdm6C,SAAY,WACXp6C,KAAKuwD,YAAc,KACnBvwD,KAAK2wD,iBAKH52C,EAAKm2C,YACTlwD,KAAKC,SAASkhB,GAAI,WAAY,wBAAyB,WACjDpH,EAAKmoC,OACTnoC,EAAKmB,OAAO,KAIdlb,KAAKC,SAASkhB,GAAI,iBAAkB,WAC9BpH,EAAKmoC,OACTnoC,EAAKmB,OAAO,MAOhBgnC,OAAO,EACPmQ,wBAAyB,KACzBC,kBAAmB,KAEnBt3C,KAAM,SAAU4nC,GACf,IAAM5iD,KAAKkiD,MAAQ,CAClB,GAAInoC,GAAO/Z,KACVouB,EAAIrU,EAAKrS,QAET6qD,EAAa,WACZx4C,EAAKvF,KAAMuF,EAAK9Z,SAAW,cAC3B8Z,EAAKmkC,QAAQn0C,QAAS,QAAS,QAE1BlK,EAAEmG,QAAQya,gBAAoB2N,EAAEyhC,SAAyB,YAAdzhC,EAAE0hC,UACjD/1C,EAAKozB,SAASp4B,SAAUqZ,EAAE8Z,QAAQ2nB,SAClC91C,EAAKs2C,iBAAiBt7C,SAAUqZ,EAAE8Z,QAAQ2nB,WAGrCjN,GAAa/iD,EAAEmG,QAAQya,gBAAoB2N,EAAEyhC,SAChD91C,EAAKozB,UAAYpzB,EAAK1Z,SACtBopB,kBAAmBxT,EAAU,cAE/B5S,WAAY4S,EAAU,GAGlBmY,EAAEzW,OAAuB,YAAdyW,EAAE0hC,SACjB/1C,EAAKmkC,QAAQr3C,SACXkO,SAAUqZ,EAAE8Z,QAAQz4B,cAAgB,WAAa2e,EAAE8Z,QAAQz4B,cAAgB,IAAM2e,EAAEzW,OAGtFoC,EAAK1Z,QACHsK,YAAayjB,EAAE8Z,QAAQmnB,aACvBt6C,SAAUqZ,EAAE8Z,QAAQknB,WAEtBr1C,EAAK23C,gBAAgB,GAErB33C,EAAKs4C,wBAA0Bt4C,EAAKs3C,sBAAuBjjC,EAAE8Z,QAAQ0nB,mBAElD,YAAdxhC,EAAE0hC,UACN/1C,EAAKmkC,QAAQr3C,SAASkO,SAAUqZ,EAAE8Z,QAAQz4B,eAC1CsK,EAAKozB,SAASp4B,SAAUgF,EAAKs4C,yBAC7Bt4C,EAAKs2C,iBAAiBt7C,SAAUgF,EAAKs4C,0BAGtCt4C,EAAKu4C,kBAAoBv4C,EAAKs3C,sBAAuBjjC,EAAE8Z,QAAQsnB,OAAU,IAAMphC,EAAE8Z,QAAQunB,UACpF11C,EAAKo2C,QACTp2C,EAAKo2C,OACHp7C,SAAUgF,EAAKu4C,mBACfrmD,OAAQnD,KAAKC,IAAKgR,EAAKo2C,OAAOlkD,SAAU8N,EAAK9Z,SAASgM,YAG1DgK,EAAW,WAGJ8D,EAAKmoC,QAIQ,YAAd9zB,EAAE0hC,UACN/1C,EAAKozB,SAASp4B,SAAUqZ,EAAE8Z,QAAQ0nB,kBAAoB,SACtD71C,EAAKs2C,iBAAiBt7C,SAAUqZ,EAAE8Z,QAAQ0nB,kBAAoB,UAG/D71C,EAAKg4C,mBAELh4C,EAAK7G,SAAU,QAEf6G,EAAKw2C,YAAcx2C,EAAKmkC,SAG1BnkC,GAAK7G,SAAU,cAE0B,SAApC6G,EAAKmkC,QAAQn0C,QAAS,SAC1BgQ,EAAKnH,IAAKmH,EAAK9Z,UACduyD,WAAcD,IAGfA,IAGDx4C,EAAKmoC,OAAQ,IAIfhnC,MAAO,SAAU0nC,GAChB,GAAK5iD,KAAKkiD,MAAQ,CACjB,GAAInoC,GAAO/Z,KACVouB,EAAIpuB,KAAK0H,QAET+qD,EAAc,WAEb14C,EAAK1Z,QAAQsK,YAAayjB,EAAE8Z,QAAQknB,WAEjB,YAAdhhC,EAAE0hC,UACN/1C,EAAKozB,SAASxiC,YAAaoP,EAAKs4C,yBAChCt4C,EAAKs2C,iBAAiB1lD,YAAaoP,EAAKs4C,2BAGnCzP,GAAa/iD,EAAEmG,QAAQya,gBAAoB2N,EAAEyhC,SAChD91C,EAAKozB,UAAYpzB,EAAK1Z,SACtBopB,kBAAmBxT,EAAU,cAE/B5S,WAAY4S,EAAU,GAGlB8D,EAAKo2C,QACTp2C,EAAKo2C,OACHxlD,YAAaoP,EAAKu4C,mBAClBrmD,OAAQ,KAGZgK,EAAW,WACLmY,EAAEzW,OAAuB,YAAdyW,EAAE0hC,SACjB/1C,EAAKmkC,QAAQr3C,SAAS8D,YAAayjB,EAAE8Z,QAAQz4B,cAAgB,WAAa2e,EAAE8Z,QAAQz4B,cAAgB,IAAM2e,EAAEzW,OAG7GoC,EAAK1Z,QAAQ0U,SAAUqZ,EAAE8Z,QAAQmnB,aAEd,YAAdjhC,EAAE0hC,UACN/1C,EAAKmkC,QAAQr3C,SAAS8D,YAAayjB,EAAE8Z,QAAQz4B,eAC7CsK,EAAKozB,SAASxiC,YAAayjB,EAAE8Z,QAAQ0nB,kBAAoB,SACzD71C,EAAKs2C,iBAAiB1lD,YAAayjB,EAAE8Z,QAAQ0nB,kBAAoB,UAG7D/vD,EAAEmG,QAAQya,gBAAoB2N,EAAEyhC,SAAyB,YAAdzhC,EAAE0hC,UACjD/1C,EAAKozB,SAASxiC,YAAayjB,EAAE8Z,QAAQ2nB,SACrC91C,EAAKs2C,iBAAiB1lD,YAAayjB,EAAE8Z,QAAQ2nB,UAG9C91C,EAAK+3C,YACL/3C,EAAKi4C,qBACLnyD,EAAEC,OAAOoM,wBAET6N,EAAKmkC,QAAQjnC,cAAe,SAE5B8C,EAAK7G,SAAU,SAEf6G,EAAKw2C,YAAc,KAGrBx2C,GAAK7G,SAAU,eAEfu/C,IAEA14C,EAAKmoC,OAAQ,IAIfgK,OAAQ,WACPlsD,KAAMA,KAAKkiD,MAAQ,QAAU,WAG9B7uC,SAAU,WACT,GAAIq/C,GACJtkC,EAAIpuB,KAAK0H,QACTirD,EAAmB9yD,EAAG,wBAAyB2B,OAAS3B,EAAEC,OAAOq2B,WAAW3oB,KAAM,iBAAkBhM,OAAW,CAE5F,aAAd4sB,EAAE0hC,UAGN4C,EAAc7yD,EAAG,wBAAyB2F,IAAK3F,EAAEC,OAAOq2B,WAAW3oB,KAAM,kBACU,IAA9EklD,EAAYhlD,IAAK,6BAA8BA,IAAK1N,KAAKK,SAAUmB,QACvExB,KAAKmtC,SAAS5kC,WAAW69B,SAGrBpmC,KAAKkiD,QAETliD,KAAKqwD,iBAAiB1lD,YAAayjB,EAAE8Z,QAAQ0nB,kBAAoB,SAE5D/vD,EAAEmG,QAAQya,gBAAoB2N,EAAEyhC,SACpC7vD,KAAKqwD,iBAAiB1lD,YAAayjB,EAAE8Z,QAAQ2nB,SAG9C7vD,KAAKk+C,QAAQr3C,SAAS8D,YAAayjB,EAAE8Z,QAAQz4B,eAExC2e,EAAEzW,OACN3X,KAAKk+C,QAAQr3C,SAAS8D,YAAayjB,EAAE8Z,QAAQz4B,cAAgB,WAAa2e,EAAE8Z,QAAQz4B,cAAgB,IAAM2e,EAAEzW,SAKzGg7C,GAEL3yD,KAAKC,SAASmhB,IAAK,wBAIfphB,KAAKkiD,OACTliD,KAAKk+C,QAAQjnC,cAAe,SAG7BjX,KAAKowD,YAAY7nD,WAAW69B,SAE5BpmC,KAAKK,QACHsK,aAAe3K,KAAKsxD,mBAAoBljC,EAAE8Z,QAAQknB,UAAWhhC,EAAE8Z,QAAQ2nB,SAAUp7C,KAAM,MACvF2M,IAAK,oCACLA,IAAK,mBACLA,IAAK,aACLA,IAAK,eACLA,IAAK,gBAEFphB,KAAKmwD,QACTnwD,KAAKmwD,OAAO9hD,aAKXtO,GAEJ,SAAWF,EAAGM,GAEdN,EAAEqQ,OAAQ,gBACTxI,SACCwgC,SACC0qB,MAAO,YAER/+B,UAAU,GAGX5gB,QAAS,WACFjT,KAAK0H,QAAQmsB,UAClB7zB,KAAKK,QAAQ0U,SAAU/U,KAAK0H,QAAQwgC,QAAQ0qB,OAI7C/yD,EAAE+B,OAAQ5B,MAIT6yD,QAAS1yD,EAIT2yD,WAAY3yD,IAGbH,KAAKsnC,UAAU,IAGhByrB,YAAa,WACZ,GAAIC,GAAMhzD,KAAKK,QAAQmN,KAAM,WAE7BxN,MAAK6yD,QAAU7yD,KAAKK,QAAQmN,KAAM,YAAajF,WAC/CvI,KAAK8yD,WAAa9yD,KAAK6yD,QAAQrtD,IAAKwtD,EAAIzqD,aAGzCk9B,QAAS,WACRzlC,KAAKsnC,YAGN2rB,QAASpzD,EAAEuT,KAEXk0B,SAAU,WACT,GAAIsrB,GAAQ5yD,KAAKK,QAChB2yD,EAAMJ,EAAMplD,KAAM,WAGnBxN,MAAK+yD,cAGLC,EAAI7vD,KAAM,WACT,GAAI+vD,GAAc,CAGlBrzD,GAAGG,MAAOuI,WAAWpF,KAAM,WAC1B,GAECkmB,GAFGmzB,EAAO51C,SAAU5G,KAAK+L,aAAc,WAAa,IACpDxG,EAAW,eAAkB2tD,EAAc,GAAM,GAKlD,IAFAlzD,KAAKurC,aAAc,QAAU1rC,EAAEC,OAAOsI,GAAK,WAAY8qD,EAAc,GAEhE1W,EACJ,IAAKnzB,EAAI,EAAOmzB,EAAO,EAAXnzB,EAAcA,IACzB6pC,IACA3tD,GAAY,iBAAoB2tD,EAAc,GAAM,GAMtDrzD,GAAGG,MAAO+J,QAAS,QAAS6oD,EAAMplD,KAAM,MAAOE,IAAKslD,EAAIrvD,GAAI,IAAM+J,IAAK1N,MAAOuI,SAAUhD,IAExF2tD,YAMAnzD,GAGJ,SAAWF,GAEXA,EAAEqQ,OAAQ,eAAgBrQ,EAAEC,OAAO8yD,OAClClrD,SACCyrD,KAAM,eACNC,eAAgB,KAChBC,iBAAkB,KAClBC,cAAe,aACfprB,QAASroC,EAAE+B,OAAQ/B,EAAEC,OAAO8yD,MAAMzrD,UAAUO,QAAQwgC,SACnD8N,MAAO,8BACPud,UAAW,4BACXC,eAAgB,qBAChBC,kBAAmB,2BAIrBxgD,QAAS,WACRjT,KAAK+Q,SAEsB,iBAAtB/Q,KAAK0H,QAAQyrD,OAIlBtzD,EAAE+B,OAAQ5B,MACT0zD,MAAO,OAGH1zD,KAAK0H,QAAQmsB,UACjB7zB,KAAK0zD,MAAQ7zD,EAAGG,KAAKC,SAAU,GAAI2+C,eAAgB5+C,KAAK2zD,MAAQ,WAAaprD,WAAWwP,QACxF/X,KAAK4zD,YAAa5zD,KAAK0zD,OAAO,KAE9B1zD,KAAK0zD,MAAQ1zD,KAAK6zD,oBAClB7zD,KAAKK,QAAQ0U,SAAU/U,KAAK0H,QAAQwgC,QAAQurB,oBAG7CzzD,KAAK8zD,eAEL9zD,KAAK+zD,oBAGNJ,IAAK,WACJ,MAAS3zD,MAAKK,QAAQkE,KAAM,OAAYvE,KAAK+N,WAAa/N,KAAKyB,MAGhEqyD,aAAc,WAKb9zD,KAAK4S,IAAK5S,KAAKE,QACdoxB,gBAAiB,oBAElBtxB,KAAK4S,IAAK5S,KAAK0zD,OACdM,eAAgB,sBAIlBJ,YAAa,SAAUK,EAAMC,GAC5B,GAAIC,GACHC,EAAgB,EAChB7sC,EAAOvnB,KAAK0H,QACZm2B,EAAYo2B,EAAK3lB,aAAc,YAG3B4lB,GACJC,EAASF,EAAKzmD,KAAM,SAEpBqwB,EAAU6M,QAIX1qC,KAAK6yD,QAAQnlD,IAAK,MAAOvK,KAAM,WAC9B,GAAIsO,GAAO4iD,EACVhP,EAASxlD,EAAGG,MACZs0D,EAAWz0D,EAAEC,OAAOiM,aAAc/L,KAAM,WAEpCs0D,KACJD,EAAQhP,EAAO7/C,IAAK6/C,EAAOt7C,QAAS,UACpCsqD,EAAMt/C,SAAUwS,EAAK2gB,QAAQsrB,eAAiBc,GAI9C7iD,GAAUyiD,EAAOC,EAAOxwD,GAAIywD,KAC3Bv0D,EAAE,4CACCwlD,EAAO98C,SAAU,QAASwP,QAAQxT,KAAM,UACzC8gD,EAAOp3C,QACR,YACC0K,SAAUklB,GACVt1B,SAAU,GACV4lC,eACAx2B,MAAO4P,EAAK8rC,oBAIZtpD,QAAS,SAAUs7C,GACnBt7C,QAAS,QAASsqD,GAGrBhP,EAAOt7C,QAAS,QAAS0H,MAKrByiD,GACLD,EAAK3lB,aAAc,YAIrBimB,iBAAkB,SAAUC,GAC3B,GAAI/iD,GAAQ5R,EAAG20D,EAAIhjD,QAClBs8B,EAAUr8B,EAAO,GAAIq8B,OAEtBr8B,GAAM1H,QAAS,SACb6J,YAAa,wBAAyBk6B,GACtCl6B,YAAa,wBAAyBk6B,IAGzC2mB,aAAc,SAAUJ,GAEvBA,EAAM1pD,YAAa,+CAGpBkpD,kBAAmB,WAClB,GAAI/vD,GAAK4wD,EAAY1e,EAAOie,EAC3BrB,EAAQ5yD,KAAKK,QACbknB,EAAOvnB,KAAK0H,QACZU,EAAKvI,EAAEC,OAAOsI,GACd62C,EAAWj/C,KAAKC,SAAU,GAAIi/C,wBAsB/B,OApBAp7C,GAAK9D,KAAK2zD,MAAQ,SAClBe,EAAa70D,EAAG,aAAeiE,EAAK,YACvByjB,EAAK2gB,QAAQqrB,UAAY,mBACvBhsC,EAAK6rC,gBAAkB,KACrC,0CACUhrD,EAAK,eAAiBmf,EAAK+rC,cAAgB,QACtDtd,EAAQn2C,EAAG,eAAiB0nB,EAAK2gB,QAAQ8N,MAAQ,SAAWlyC,EAAK,YACjEmwD,EAAOp0D,EAAG,yBAA0ByuC,eAGpCtuC,KAAK4zD,YAAaK,GAAM,GAExBA,EAAKt7C,SAAUq9B,GAEfiJ,EAASnjC,YAAak6B,EAAO,IAC7BiJ,EAASnjC,YAAa44C,EAAY,IAClC9B,EAAM+B,OAAQ1V,GAEdjJ,EAAMA,QAECie,GAGRhB,QAAS,WACRjzD,KAAK+Q,SAEsB,iBAAtB/Q,KAAK0H,QAAQyrD,MAIjBnzD,KAAKsnC,UAAU,IAIjBA,SAAU,SAAU/0B,GACnB,GAAIsgD,GAAS+B,EAAe/rD,CAK5B,IAFA7I,KAAK+Q,OAAQwB,IAEPA,GAAgC,iBAAtBvS,KAAK0H,QAAQyrD,KA+B5B,IA9BAN,EAAU7yD,KAAK6yD,QACf+B,KAMA50D,KAAK0zD,MAAMlmD,KAAM,SAAUrK,KAAM,WAChC,GAAIsO,GAAQ5R,EAAGG,MACdqlD,EAAS5zC,EAAM1H,QAAS,UACxBlB,EAAQgqD,EAAQhqD,MAAOw8C,EAAQ,GAE3Bx8C,GAAQ,KAAO4I,EAAMZ,KAAM,YAK/B+jD,EAAcvtD,KAAMwB,KAKtB7I,KAAKy0D,aAAcz0D,KAAKK,QAAQmN,KAAM,kDAItCxN,KAAK4zD,YAAa5zD,KAAK0zD,MAAOnhD,GAIxB1J,EAAQ+rD,EAAcpzD,OAAS,EAAIqH,EAAQ,GAAKA,IACrDgqD,EAAQlvD,GAAIixD,EAAe/rD,IAAUkB,QAAS,SAC5C8G,KAAM,WAAW,GACjBs9B,cAAe,WACf3kC,QAAS,WAKduqD,gBAAiB,WAChB/zD,KAAK0zD,MAAMlmD,KAAM,SAAUrK,KAAM,WAChC,GAAI0xD,GAAWh1D,EAAGG,KAElBA,MAAK8tC,QAAmE,eAAzD+mB,EAAS9qD,QAAS,SAAUpG,GAAI,GAAIpC,IAAK,WACxDszD,EAAS1mB,cAAe,cAI1B96B,SAAU,WACTrT,KAAK+Q,aAIHhR,GAEJ,SAAWF,GAEXA,EAAEqQ,OAAQ,eAAgBrQ,EAAEC,OAAO8yD,OAClClrD,SACCyrD,KAAM,SACNjrB,QAASroC,EAAE+B,OAAQ/B,EAAEC,OAAO8yD,MAAMzrD,UAAUO,QAAQwgC,SACnD4sB,YAAa,kBACbC,WAAY,yBAId9hD,QAAS,WACRjT,KAAK+Q,SAGsB,WAAtB/Q,KAAK0H,QAAQyrD,OAIZnzD,KAAK0H,QAAQmsB,WAClB7zB,KAAKK,QAAQ0U,SAAU/U,KAAK0H,QAAQwgC,QAAQ4sB,aAE5C90D,KAAKg1D,mBAIP/B,QAAS,WACRjzD,KAAK+Q,SAEsB,WAAtB/Q,KAAK0H,QAAQyrD,MACjBnzD,KAAKsnC,UAAU,IAIjBA,SAAU,SAAU/0B,GACnBvS,KAAK+Q,OAAQwB,GACPA,GAAgC,WAAtBvS,KAAK0H,QAAQyrD,MAC5BnzD,KAAKg1D,iBAIPA,cAAe,WACd,GAAIpC,GAAQ5yD,KACXunB,EAAOvnB,KAAK0H,OAGb7H,GAAG+yD,EAAME,WAAW3gD,MAAMglB,WAAYh0B,KAAM,WAC3C,GAIC8xD,GAAW3zD,EAJR+yD,EAAQx0D,EAAGG,MAAO+J,QAAS,SAC9BmrD,EAAWr1D,EAAEC,OAAOiM,aAAc/L,KAAM,YACxCm1D,EAAiBd,EAAM3mD,IAAK1N,MAAOsB,OAAQ,YAAaE,QAAU,2BAClE2kC,EAAWtmC,EAAGG,MAAOsiC,QAAQ6D,UAGxBA,GAAS3kC,OAAS,IAEjB2zD,GACJF,EAAYruD,SAAU5G,KAAK+L,aAAc,WAAa,IACtDzK,EAAS,GAEJ2zD,IACJ3zD,EAAS,gBAAiB2zD,EAAW,OAAS,EAAc,KAG7DrC,EAAMwC,WAAYf,EAAM/yD,OAAQA,GAC/BimB,EAAK2gB,QAAQ6sB,WAAaI,EAAgBhvB,IAE3CysB,EAAMwC,WAAYf,EAAO9sC,EAAK2gB,QAAQ6sB,WAAY5uB,OAOvDivB,WAAY,SAAUf,EAAOjoB,EAAOjG,GACV,IAApBA,EAAS3kC,QAAyD,SAAzC2kC,EAAU,GAAIzlC,SAASC,gBACpDwlC,EAAWA,EAASxiC,GAAI,GAAIY,KAAM,UAGnC8vD,EACE3mD,IAAK,UAAY0+B,EAAQ,KACxBiB,QAASxtC,EAAG,aAAeusC,EAAQ,UAAWruB,OAAQooB,QAIvDpmC,GAEJ,SAAWF,EAAGM,GAGd,GAAIk1D,GAAwB,SAAUxsD,EAAOysD,GAC5C,MAC2C,MADhC,IAAOz1D,EAAEC,OAAOiM,aAAc/L,KAAM,eAAkBH,EAAGG,MAAOiO,SACzEtN,cAAc0W,QAASi+C,GAG1Bz1D,GAAEqQ,OAAQ,qBAETzC,aAAc,0BAEd/F,SACC6tD,cAAc,EACdC,eAAgBH,EAChBxhC,UAAU,EACVpiB,MAAO,KACPlJ,SAAU,6KAGX0K,QAAS,WACR,GAAIsU,GAAOvnB,KAAK0H,OAEhB7H,GAAE+B,OAAQ5B,MACTy1D,QAAS,KACTC,OAAQ,IAGT11D,KAAK21D,UAAWpuC,EAAK9V,OACf8V,EAAKsM,UACV7zB,KAAK41D,cAAkB51D,KAAKy1D,SAAWz1D,KAAKy1D,QAAQx7C,OAAW,IAAKtZ,gBAItEk1D,SAAU,WACT,GAAI57C,GAAK67C,EACRz1C,EAASrgB,KAAKy1D,OAEf,IAAKp1C,EAAS,CAIb,GAHApG,EAAMoG,EAAOpG,MAAMtZ,cACnBm1D,EAAUj2D,EAAEC,OAAOiM,aAAcsU,EAAQ,GAAK,WAAc,GAEvDy1C,GAAWA,IAAY77C,EAE3B,MAGIja,MAAK01D,SACTx1D,EAAOga,aAAcla,KAAK01D,QAC1B11D,KAAK01D,OAAS,GAGf11D,KAAK01D,OAAS11D,KAAK2U,OAAQ,WAC1B,MAAK3U,MAAKkT,SAAU,eAAgB,MAAQzB,MAAO4O,OAAe,GAC1D,GAIRA,EAAQ,GAAIkrB,aAAc,QAAU1rC,EAAEC,OAAOsI,GAAK,UAAW6R,GAE7Dja,KAAK41D,aAAc37C,QACnBja,KAAK01D,OAAS,KACZ,OAILK,oBAAqB,WACpB,GAAI3yD,GAAOpD,KAAKK,QACfkI,EAAWvI,KAAK0H,QAAQa,SACxBojC,EAASpjC,EACR1I,EAAEiR,WAAYvI,GAAaA,IAC3BA,EAAS7H,SAAWb,EAAG0I,GACvBA,EAAS3D,OAAS2D,EAClBvI,KAAKK,QAAQmN,KAAMjF,IAJE/G,OAAQ,EAU/B,OAJsB,KAAjBmqC,EAAMnqC,SACVmqC,EAAQvoC,EAAKmF,YAGPojC,GAGRiqB,aAAc,SAAU37C,GACvB,GAAI2xB,GAAKx2B,EAAU5T,EAAQ4hC,EAC1B5tB,KACAC,KACA8R,EAAOvnB,KAAK0H,QACZsuD,EAAch2D,KAAK+1D,qBAEpB,IAAY,MAAP97C,EAKJ,IAJA7E,EAAWmS,EAAKiuC,gBAAkBH,EAClC7zD,EAASw0D,EAAYx0D,OAGfoqC,EAAM,EAAUpqC,EAANoqC,EAAeA,IAC9BxI,EAAQhuB,EAAS9R,KAAM0yD,EAAapqB,GAAOA,EAAK3xB,GAAUxE,EAAOD,EACjE4tB,EAAI/7B,KAAM2uD,EAAapqB,GAMJ,KAAhBn2B,EAAKjU,OACTw0D,EAAezuC,EAAKguC,cAA+B,IAAft7C,EAAIzY,OACvC,WAAa,eAAiB,qBAE/B3B,EAAG4V,GAAOV,SAAU,oBACpBlV,EAAG2V,GAAO7K,YAAa,qBAGxB3K,KAAKi2D,sBAELj2D,KAAKkT,SAAU,SAAU,MACxBy4B,MAAOqqB,KAMTC,oBAAqB,WACpB,GAAI/lD,GAAQ07B,EACXsqB,GAAsB,iBAAkB,aAAc,eAAgB,WAEvE,KAAMtqB,EAAMsqB,EAAkB10D,OAAS,EAAIoqC,EAAM,GAAKA,IACrD17B,EAASgmD,EAAmBtqB,GACvB/rC,EAAEC,OAAQoQ,KACdA,EAASlQ,KAAKK,QAAQ4D,KAAM,UAAYiM,GACnCA,GAAUrQ,EAAEiR,WAAYZ,EAAOu1B,UACnCv1B,EAAOu1B,YAOXkwB,UAAW,SAAWpwD,GACrB,GAAI8a,GAASrgB,KAAKy1D,OAGbz1D,MAAK01D,SACTx1D,EAAOga,aAAcla,KAAK01D,QAC1B11D,KAAK01D,OAAS,GAGVr1C,IACJrgB,KAAKwU,KAAM6L,EAAQ,sBACnBA,EAAS,MAGL9a,IACJ8a,EAAS9a,EAASX,OAASW,EAC1BA,EAAS7E,SAAWb,EAAG0F,GACvBvF,KAAKC,SAASuN,KAAMjI,GAErBvF,KAAK4S,IAAKyN,GACTgzB,QAAS,aACT8iB,SAAU,cACVljB,MAAO,WACPzc,OAAQ,WACR/kB,MAAO,cAITzR,KAAKy1D,QAAUp1C,GAIhB+1C,WAAY,SAAU/vD,GAChBA,EAAMvE,UAAYjC,EAAE8B,GAAGG,QAAQM,QACnCiE,EAAMC,iBACNtG,KAAKq2D,kBAAmB,IAI1BC,YAAa,SAAUjwD,GACjBrG,KAAKq2D,mBACThwD,EAAMC,iBACNtG,KAAKq2D,kBAAmB,IAI1B3iD,YAAa,SAAUhM,GACtB,GAAI6uD,KAAgB7uD,EAAQ6tD,eAAiBp1D,GACzCuH,EAAQ8tD,iBAAmBr1D,GAC3BuH,EAAQa,WAAapI,EAEzBH,MAAK+Q,OAAQrJ,GAERA,EAAQ+J,QAAUtR,IACtBH,KAAK21D,UAAWjuD,EAAQ+J,OACxB8kD,GAAW,GAGPA,GACJv2D,KAAKylC,WAIPpyB,SAAU,WACT,GAAIkU,GAAOvnB,KAAK0H,QACfikC,EAAQ3rC,KAAK+1D,qBAETxuC,GAAKsM,SACT8X,EAAM/3B,YAAa,mBAAoB2T,EAAKguC,cAE5C5pB,EAAMhhC,YAAa,qBAIrB86B,QAAS,WACHzlC,KAAK01D,SACTx1D,EAAOga,aAAcla,KAAK01D,QAC1B11D,KAAK01D,OAAS,GAEf11D,KAAK41D,cAAkB51D,KAAKy1D,SAAWz1D,KAAKy1D,QAAQx7C,OAAW,IAAKtZ,mBAIlEZ,GAEJ,SAAWF,EAAGM,GAId,GAAIq2D,GAAoB,SAAUz8C,EAAM9W,GACtC,MAAO,UAAUyE,GAChBzE,EAAKK,KAAMtD,KAAM0H,GACjBqS,EAAK08C,sBAAuB/uD,KAG9BgvD,EAAmB,4BACnBC,EAA4B92D,EAAEC,OAAO82D,WAAWzvD,UAAUO,QAAQ8tD,cAGnE31D,GAAEC,OAAO82D,WAAWzvD,UAAUO,QAAQ8tD,eAAiB,SAAU3sD,EAAOysD,GACvE,OAAQt1D,KAAKqL,UAAUhH,MAAOqyD,IAC7BC,EAA0BrzD,KAAMtD,KAAM6I,EAAOysD,IAG/Cz1D,EAAEqQ,OAAQ,oBAAqBrQ,EAAEC,OAAO82D,YACvClvD,SACCmvD,kBAAmB,kBACnBC,YAAa,MAGd7jD,QAAS,WACR,GAAI24B,GAAK79B,EACR3K,EAAOpD,KAAKK,QACZ61D,GAAsB,iBAAkB,aAAc,eAAgB,YACtEa,IAQD,KANA/2D,KAAK+Q,SAELlR,EAAE+B,OAAQ5B,MACTuM,QAAS,OAGJq/B,EAAMsqB,EAAkB10D,OAAS,EAAIoqC,EAAM,GAAKA,IAErD,GADA79B,EAAamoD,EAAmBtqB,GAC3B/rC,EAAEC,OAAQiO,GAAe,CAC7B,GAAK/N,KAAKg3D,WAAY5zD,EAAKa,KAAM,UAAY8J,IAC5C,KAEAgpD,GAAgBhpD,EAAa,UAAa,gBAKvC/N,KAAKuM,SACVvM,KAAK4S,IAAKxP,EAAM2zD,IAIlBE,cAAe,SAAUzC,GACxBx0D,KAAKg3D,WAAYh3D,KAAKK,QAAQ4D,KAAM,UAAYuwD,EAAIrvD,KAAKsd,UAAW,EAAG+xC,EAAIrvD,KAAK3D,OAAS,MAG1F0R,SAAU,SAAU/N,EAAMkB,EAAOpC,GAShC,MARKjE,MAAKuM,SAA2C,oBAAhCvM,KAAKuM,QAAQ6E,gBACxB,iBAATjM,GAGAnF,KAAKuM,QAAQ2G,SAAU,eAAgB7M,EAAOpC,GAIxCjE,KAAK+Q,OAAQ5L,EAAMkB,EAAOpC,IAGlC+yD,WAAY,SAAU9mD,GAcrB,OAbMlQ,KAAKuM,SAAW2D,IACrBlQ,KAAKuM,QAAU2D,EACflQ,KAAKuM,QAAQmH,YAAc8iD,EAAmBx2D,KAAMA,KAAKuM,QAAQmH,cAG3D1T,KAAKuM,UACXvM,KAAKy2D,sBAAuBz2D,KAAKuM,QAAQ7E,SACR,aAA5B1H,KAAKuM,QAAQwB,aACjB/N,KAAKuM,QAAQ7E,QAAQgkC,cAAe,EACpC1rC,KAAKuM,QAAQlM,QAAQwqC,SAAU,eAIxB7qC,KAAKuM,SAGf2qD,kBAAmB,WAClB,MAASl3D,MAAKy1D,SAAWz1D,KAAKy1D,QAAQ1rD,QAAS,iBAAmB/J,KAAKyB,KAAO,cAG/Ek0D,UAAW,SAAUpwD,GACpB,GAAIgiB,GAAOvnB,KAAK0H,QACfyvD,GAAoB,EACpBC,IAED,KAAM7xD,EAAW,CAChB,GAAKvF,KAAKk3D,oBAIT,MAKAC,IAAoB,EACpB5xD,EAAW1F,EAAG,eACHA,EAAEC,OAAOsI,GAAK,8BACNmf,EAAKsvC,kBAAoB,cAC1C9sD,QAAS,iBAAmB/J,KAAKyB,KAAO,aAAa,GACvD5B,EAAG,uCACDke,OAAQxY,GACRo+B,OAAQ,SAAU6wB,GAClBA,EAAIluD,iBACJf,EAASu3B,SAET7gB,aAAcjc,KAAKK,SAChBR,EAAEC,OAAOo5C,YACoB,MAA5Bl5C,KAAK0H,QAAQovD,cACjBM,EAAuB,MAAI7vC,EAAKuvC,aAGjCvxD,EAAS2zC,UAAWke,IAKvBp3D,KAAK+Q,OAAQxL,GAERvF,KAAKk3D,qBAAuBC,GAChCn3D,KAAKy1D,QAAQlxD,KAAM,cAAevE,KAAK0H,QAAQmvD,oBAIjDnjD,YAAa,SAAUhM,GACtB,GAAIyP,GAAMnX,KAAK+Q,OAAQrJ,EAavB,OAVKA,GAAQmvD,oBAAsB12D,GAC7BH,KAAKk3D,qBACTl3D,KAAKy1D,QAAQlxD,KAAM,cAAemD,EAAQmvD,mBAIvCnvD,EAAQovD,cAAgB32D,GAAaH,KAAKy1D,SAAW51D,EAAEC,OAAOo5C,WAClEl5C,KAAKy1D,QAAQvc,UAAW,SAAU,QAASxxC,EAAQovD,aAG7C3/C,GASR8+C,oBAAqB,WACpBj2D,KAAKq3D,wBAAyB,EAC9Br3D,KAAKgR,YAAaxN,WAClBxD,KAAKq3D,wBAAyB,GAG/B5xB,QAAS,WACFzlC,KAAKq3D,wBACVr3D,KAAKgR,YAAaxN,YAIpB6P,SAAU,WACJrT,KAAKk3D,qBACTl3D,KAAKy1D,QAAQpnD,SAEdrO,KAAK+Q,UAGN0lD,sBAAuB,SAAU/uD,GAChC,GAAIkkC,GACH0rB,IAID,IAAKt3D,KAAKk3D,qBAAuBr3D,EAAEC,OAAOo5C,UAAY,CAGrD,IAAMtN,IAAO/rC,GAAEC,OAAOo5C,UAAU/xC,UAAUO,QACpCA,EAASkkC,KAAUzrC,IAEtBm3D,EAAkB1rB,GADN,UAARA,GAA+C,MAA5B5rC,KAAK0H,QAAQovD,YACV92D,KAAK0H,QAAQovD,YAEbpvD,EAASkkC,GAItC5rC,MAAKy1D,QAAQvc,UAAW,SAAUoe,OAUrCz3D,EAAEqQ,OAAQ,kBAAmBrQ,EAAEC,OAAO+qC,UACrCnjC,SACCpG,QAAQ,GAET2R,QAAS,WAKR,MAJKjT,MAAK0H,QAAQpG,UAAW,GAC1BtB,KAAKK,QAAQ4D,KAAM,sBACrBjE,KAAKK,QAAQu2D,aAEP52D,KAAK+Q,UAGb00B,QAAS,WACR,GAAImxB,EAEJ52D,MAAKgR,YAAaxN,WAEbxD,KAAK0H,QAAQpG,UAAW,IAC5Bs1D,EAAa52D,KAAKK,QAAQ4D,KAAM,qBAE3B2yD,GACJA,EAAWnxB,eAMX1lC,GAgBJ,SAAWF,EAAGM,GAKd,QAASo3D,KACR,QAASC,EAGV,QAASC,GAAS3yB,GACjB,MAAOA,GAAOrrB,KAAKjY,OAAS,GAC3BsjB,mBAAoBggB,EAAOhkC,KAAKwW,QAASogD,EAAO,OAC/C5yC,mBAAoBhM,SAAShY,KAAKwW,QAASogD,EAAO,KAVrD,GAAIF,GAAQ,EACXE,EAAQ,MAYT73D,GAAEqQ,OAAQ,WACTrO,QAAS,2CACTqB,MAAO,IACPwE,SACC8tB,OAAQ,KACR0P,aAAa,EACb7+B,MAAO,QACPsxD,YAAa,UACbliD,KAAM,KACND,KAAM,KAGNoiD,SAAU,KACVC,eAAgB,KAChBC,WAAY,KACZ99B,KAAM,MAGP/mB,QAAS,WACR,GAAI9F,GAAOnN,KACV0H,EAAU1H,KAAK0H,OAEhB1H,MAAK+3D,SAAU,EAEf/3D,KAAKK,QACH0U,SAAU,qDACVnB,YAAa,sBAAuBlM,EAAQw9B,aAE5C3wB,SAAU,oBAAqB,YAAcvU,KAAKwS,eAAgB,SAAUnM,GACvExG,EAAGG,MAAOozB,GAAI,uBAClB/sB,EAAMC,mBASPiO,SAAU,kBAAmB,QAAUvU,KAAKwS,eAAgB,WACvD3S,EAAGG,MAAO8J,QAAS,MAAOspB,GAAI,uBAClCpzB,KAAK88B,SAIR98B,KAAKg4D,eACLtwD,EAAQ8tB,OAASx1B,KAAKi4D,iBAIjBp4D,EAAEq4D,QAASxwD,EAAQzG,YACvByG,EAAQzG,SAAWpB,EAAEs4D,OAAQzwD,EAAQzG,SAAS0H,OAC7C9I,EAAEU,IAAKP,KAAKo4D,KAAK92D,OAAQ,sBAAwB,SAAU8oC,GAC1D,MAAOj9B,GAAKirD,KAAKvvD,MAAOuhC,OAEtBiuB,QAKJr4D,KAAKw1B,OADDx1B,KAAK0H,QAAQ8tB,UAAW,GAASx1B,KAAKs4D,QAAQ92D,OACpCxB,KAAKu4D,YAAa7wD,EAAQ8tB,QAE1B31B,IAGfG,KAAKsnC,WAEAtnC,KAAKw1B,OAAOh0B,QAChBxB,KAAKg6B,KAAMtyB,EAAQ8tB,SAIrByiC,eAAgB,WACf,GAAIziC,GAASx1B,KAAK0H,QAAQ8tB,OACzB0P,EAAcllC,KAAK0H,QAAQw9B,YAC3BszB,EAAe1/C,SAASW,KAAKgJ,UAAW,EAqCzC,OAnCgB,QAAX+S,IAECgjC,GACJx4D,KAAKo4D,KAAKj1D,KAAK,SAAUiB,EAAGq0D,GAC3B,MAAK54D,GAAG44D,GAAMl0D,KAAM,mBAAsBi0D,GACzChjC,EAASpxB,GACF,GAFR,SAQc,OAAXoxB,IACJA,EAASx1B,KAAKo4D,KAAKvvD,MAAO7I,KAAKo4D,KAAK92D,OAAQ,sBAI7B,OAAXk0B,GAA8B,KAAXA,KACvBA,EAASx1B,KAAKo4D,KAAK52D,OAAS,GAAI,IAK7Bg0B,KAAW,IACfA,EAASx1B,KAAKo4D,KAAKvvD,MAAO7I,KAAKo4D,KAAKz0D,GAAI6xB,IACxB,KAAXA,IACJA,EAAS0P,GAAc,EAAQ,KAK3BA,GAAe1P,KAAW,GAASx1B,KAAKs4D,QAAQ92D,SACrDg0B,EAAS,GAGHA,GAGRriB,oBAAqB,WACpB,OACCslD,IAAKz4D,KAAKw1B,OACV25B,MAAQnvD,KAAKw1B,OAAOh0B,OAAexB,KAAK04D,gBAAiB14D,KAAKw1B,QAAjC31B,MAI/B84D,YAAa,SAAUtyD,GACtB,GAAIuyD,GAAa/4D,EAAGG,KAAKC,SAAS,GAAG48B,eAAgB/yB,QAAS,MAC7DuqC,EAAgBr0C,KAAKo4D,KAAKvvD,MAAO+vD,GACjCC,GAAe,CAEhB,KAAK74D,KAAK84D,eAAgBzyD,GAA1B,CAIA,OAASA,EAAMvE,SACd,IAAKjC,GAAE8B,GAAGG,QAAQa,MAClB,IAAK9C,GAAE8B,GAAGG,QAAQI,KACjBmyC,GACA,MACD,KAAKx0C,GAAE8B,GAAGG,QAAQgB,GAClB,IAAKjD,GAAE8B,GAAGG,QAAQS,KACjBs2D,GAAe,EACfxkB,GACA,MACD,KAAKx0C,GAAE8B,GAAGG,QAAQK,IACjBkyC,EAAgBr0C,KAAKs4D,QAAQ92D,OAAS,CACtC,MACD,KAAK3B,GAAE8B,GAAGG,QAAQQ,KACjB+xC,EAAgB,CAChB,MACD,KAAKx0C,GAAE8B,GAAGG,QAAQc,MAKjB,MAHAyD,GAAMC,iBACN4T,aAAcla,KAAK+4D,gBACnB/4D,MAAKg5D,UAAW3kB,EAEjB,KAAKx0C,GAAE8B,GAAGG,QAAQM,MAMjB,MAJAiE,GAAMC,iBACN4T,aAAcla,KAAK+4D,gBAEnB/4D,MAAKg5D,UAAW3kB,IAAkBr0C,KAAK0H,QAAQ8tB,QAAS,EAAQ6e,EAEjE,SACC,OAIFhuC,EAAMC,iBACN4T,aAAcla,KAAK+4D,YACnB1kB,EAAgBr0C,KAAKi5D,cAAe5kB,EAAewkB,GAG7CxyD,EAAM6yD,UAIXN,EAAWr0D,KAAM,gBAAiB,SAClCvE,KAAKo4D,KAAKz0D,GAAI0wC,GAAgB9vC,KAAM,gBAAiB,QAErDvE,KAAK+4D,WAAa/4D,KAAK2U,OAAO,WAC7B3U,KAAKgH,OAAQ,SAAUqtC,IACrBr0C,KAAKkD,UAIVi2D,cAAe,SAAU9yD,GACnBrG,KAAK84D,eAAgBzyD,IAKrBA,EAAM6yD,SAAW7yD,EAAMvE,UAAYjC,EAAE8B,GAAGG,QAAQgB,KACpDuD,EAAMC,iBACNtG,KAAKw1B,OAAOxyB,UAKd81D,eAAgB,SAAUzyD,GACzB,MAAKA,GAAM+yD,QAAU/yD,EAAMvE,UAAYjC,EAAE8B,GAAGG,QAAQW,SACnDzC,KAAKg5D,UAAWh5D,KAAKi5D,cAAej5D,KAAK0H,QAAQ8tB,OAAS,GAAG,KACtD,GAEHnvB,EAAM+yD,QAAU/yD,EAAMvE,UAAYjC,EAAE8B,GAAGG,QAAQU,WACnDxC,KAAKg5D,UAAWh5D,KAAKi5D,cAAej5D,KAAK0H,QAAQ8tB,OAAS,GAAG,KACtD,GAFR,QAMD6jC,aAAc,SAAUxwD,EAAOgwD,GAG9B,QAASS,KAOR,MANKzwD,GAAQ0wD,IACZ1wD,EAAQ,GAEI,EAARA,IACJA,EAAQ0wD,GAEF1wD,EAGR,IAZA,GAAI0wD,GAAev5D,KAAKo4D,KAAK52D,OAAS,EAYsB,KAApD3B,EAAEs/B,QAASm6B,IAAat5D,KAAK0H,QAAQzG,WAC5C4H,EAAQgwD,EAAehwD,EAAQ,EAAIA,EAAQ,CAG5C,OAAOA,IAGRowD,cAAe,SAAUpwD,EAAOgwD,GAG/B,MAFAhwD,GAAQ7I,KAAKq5D,aAAcxwD,EAAOgwD,GAClC74D,KAAKo4D,KAAKz0D,GAAIkF,GAAQ7F,QACf6F,GAGR8K,WAAY,SAAUhO,EAAKgB,GAC1B,MAAa,WAARhB,MAEJ3F,MAAKg5D,UAAWryD,GAIJ,aAARhB,MAEJ3F,MAAKw5D,eAAgB7yD,IAItB3G,KAAK+Q,OAAQpL,EAAKgB,GAEL,gBAARhB,IACJ3F,KAAKK,QAAQuT,YAAa,sBAAuBjN,GAE3CA,GAAS3G,KAAK0H,QAAQ8tB,UAAW,GACtCx1B,KAAKg5D,UAAW,IAIL,UAARrzD,GACJ3F,KAAK8zD,aAAcntD,QAGP,gBAARhB,GACJ3F,KAAKy5D,kBAAmB9yD,MAI1B+yD,OAAQ,SAAUjB,GACjB,MAAOA,GAAIl0D,KAAM,kBAAqB,WAAagzD,KAGpDoC,kBAAmB,SAAUlgD,GAC5B,MAAOA,GAAOA,EAAKnC,QAAS,sCAAuC,QAAW,IAG/EmuB,QAAS,WACR,GAAI/9B,GAAU1H,KAAK0H,QAClBujC,EAAMjrC,KAAK45D,QAAQrxD,SAAU,gBAI9Bb,GAAQzG,SAAWpB,EAAEU,IAAK0qC,EAAI3pC,OAAQ,sBAAwB,SAAUm3D,GACvE,MAAOxtB,GAAIpiC,MAAO4vD,KAGnBz4D,KAAKg4D,eAGAtwD,EAAQ8tB,UAAW,GAAUx1B,KAAKs4D,QAAQ92D,OAInCxB,KAAKw1B,OAAOh0B,SAAW3B,EAAEmtC,SAAUhtC,KAAK45D,QAAS,GAAK55D,KAAKw1B,OAAQ,IAEzEx1B,KAAKo4D,KAAK52D,SAAWkG,EAAQzG,SAASO,QAC1CkG,EAAQ8tB,QAAS,EACjBx1B,KAAKw1B,OAAS31B,KAGdG,KAAKg5D,UAAWh5D,KAAKq5D,aAAcvwD,KAAKC,IAAK,EAAGrB,EAAQ8tB,OAAS,IAAK,IAKvE9tB,EAAQ8tB,OAASx1B,KAAKo4D,KAAKvvD,MAAO7I,KAAKw1B,SAfvC9tB,EAAQ8tB,QAAS,EACjBx1B,KAAKw1B,OAAS31B,KAiBfG,KAAKsnC,YAGNA,SAAU,WACTtnC,KAAKw5D,eAAgBx5D,KAAK0H,QAAQzG,UAClCjB,KAAK8zD,aAAc9zD,KAAK0H,QAAQrB,OAChCrG,KAAKy5D,kBAAmBz5D,KAAK0H,QAAQiwD,aAErC33D,KAAKo4D,KAAK1qD,IAAK1N,KAAKw1B,QAASjxB,MAC5Bs1D,gBAAiB,QACjBp1D,SAAU,KAEXzE,KAAK85D,OAAOpsD,IAAK1N,KAAK04D,gBAAiB14D,KAAKw1B,SAC1C/f,OACAlR,MACAw1D,gBAAiB,QACjBC,cAAe,SAIXh6D,KAAKw1B,OAAOh0B,QAGjBxB,KAAKw1B,OACHzgB,SAAU,kCACVxQ,MACAs1D,gBAAiB,OACjBp1D,SAAU,IAEZzE,KAAK04D,gBAAiB14D,KAAKw1B,QACzBhgB,OACAjR,MACAw1D,gBAAiB,OACjBC,cAAe,WAZjBh6D,KAAKo4D,KAAKz0D,GAAI,GAAIY,KAAM,WAAY,IAiBtCyzD,aAAc,WACb,GAAI7qD,GAAOnN,IAEXA,MAAK45D,QAAU55D,KAAKi6D,WAClBllD,SAAU,iFACVxQ,KAAM,OAAQ,WAEhBvE,KAAKo4D,KAAOp4D,KAAK45D,QAAQpsD,KAAM,qBAC7BuH,SAAU,kCACVxQ,MACA4vB,KAAM,MACN1vB,SAAU,KAGZzE,KAAKs4D,QAAUt4D,KAAKo4D,KAAK73D,IAAI,WAC3B,MAAOV,GAAG,IAAKG,MAAQ,KAEvB+U,SAAU,kBACVxQ,MACA4vB,KAAM,eACN1vB,SAAU,KAGZzE,KAAK85D,OAASj6D,IAEdG,KAAKs4D,QAAQn1D,KAAK,SAAUiB,EAAG0gC,GAC9B,GAAIv/B,GAAU4pD,EAAOgD,EACpB+H,EAAWr6D,EAAGilC,GAASjhC,WAAWU,KAAM,MACxCk0D,EAAM54D,EAAGilC,GAASh7B,QAAS,MAC3BqwD,EAAuB1B,EAAIl0D,KAAM,gBAG7BkzD,GAAS3yB,IACbv/B,EAAWu/B,EAAOrrB,KAClB01C,EAAQhiD,EAAK9M,QAAQmN,KAAML,EAAKwsD,kBAAmBp0D,MAGnD4sD,EAAUhlD,EAAKusD,OAAQjB,GACvBlzD,EAAW,IAAM4sD,EACjBhD,EAAQhiD,EAAK9M,QAAQmN,KAAMjI,GACrB4pD,EAAM3tD,SACX2tD,EAAQhiD,EAAKitD,aAAcjI,GAC3BhD,EAAM10C,YAAatN,EAAK2sD,OAAQ11D,EAAI,IAAO+I,EAAKysD,UAEjDzK,EAAM5qD,KAAM,YAAa,WAGrB4qD,EAAM3tD,SACV2L,EAAK2sD,OAAS3sD,EAAK2sD,OAAOt0D,IAAK2pD,IAE3BgL,GACJ1B,EAAIx0D,KAAM,wBAAyBk2D,GAEpC1B,EAAIl0D,MACH81D,gBAAiB90D,EAASkd,UAAW,GACrCiwB,kBAAmBwnB,IAEpB/K,EAAM5qD,KAAM,kBAAmB21D,KAGhCl6D,KAAK85D,OACH/kD,SAAU,oDACVxQ,KAAM,OAAQ,aAIjB01D,SAAU,WACT,MAAOj6D,MAAKK,QAAQmN,KAAM,SAAU7J,GAAI,IAGzCy2D,aAAc,SAAUt2D,GACvB,MAAOjE,GAAG,SACR0E,KAAM,KAAMT,GACZiR,SAAU,oDACV9Q,KAAM,mBAAmB,IAG5Bu1D,eAAgB,SAAUv4D,GACpBpB,EAAEq4D,QAASj3D,KACTA,EAASO,OAEHP,EAASO,SAAWxB,KAAKs4D,QAAQ92D,SAC5CP,GAAW,GAFXA,GAAW,EAOb,KAAM,GAAWmpC,GAAPhmC,EAAI,EAASgmC,EAAKpqC,KAAKo4D,KAAMh0D,GAAOA,IACxCnD,KAAa,GAAqC,KAA7BpB,EAAEs/B,QAAS/6B,EAAGnD,GACvCpB,EAAGuqC,GACDr1B,SAAU,qBACVxQ,KAAM,gBAAiB,QAEzB1E,EAAGuqC,GACDz/B,YAAa,qBACb3G,WAAY,gBAIhBhE,MAAK0H,QAAQzG,SAAWA,GAGzB6yD,aAAc,SAAUztD,GACvB,GAAIyqB,IACH8S,MAAO,SAAUv9B,GAChBA,EAAMC,kBAGHD,IACJxG,EAAEsD,KAAMkD,EAAMmK,MAAM,KAAM,SAAU3H,EAAOyL,GAC1Cwc,EAAQxc,GAAc,kBAIxBtU,KAAKwU,KAAMxU,KAAKs4D,QAAQ9yD,IAAKxF,KAAKo4D,MAAO5yD,IAAKxF,KAAK85D,SACnD95D,KAAK4S,IAAK5S,KAAKs4D,QAASxnC,GACxB9wB,KAAK4S,IAAK5S,KAAKo4D,MAAQ/kB,QAAS,gBAChCrzC,KAAK4S,IAAK5S,KAAK85D,QAAUzmB,QAAS,kBAElCrzC,KAAKiV,WAAYjV,KAAKo4D,MACtBp4D,KAAK4U,WAAY5U,KAAKo4D,OAGvBqB,kBAAmB,SAAU9B,GAC5B,GAAI2C,GACHzzD,EAAS7G,KAAKK,QAAQwG,QAEF,UAAhB8wD,GACJ2C,EAAYzzD,EAAOoF,SACnBquD,GAAat6D,KAAKK,QAAQiF,cAAgBtF,KAAKK,QAAQ4L,SAEvDjM,KAAKK,QAAQ8mC,SAAU,YAAahkC,KAAK,WACxC,GAAIC,GAAOvD,EAAGG,MACb0G,EAAWtD,EAAK7B,IAAK,WAEJ,cAAbmF,GAAwC,UAAbA,IAGhC4zD,GAAal3D,EAAKkC,aAAa,MAGhCtF,KAAKK,QAAQkI,WAAWmF,IAAK1N,KAAK85D,QAAS32D,KAAK,WAC/Cm3D,GAAaz6D,EAAGG,MAAOsF,aAAa;GAGrCtF,KAAK85D,OAAO32D,KAAK,WAChBtD,EAAGG,MAAOiM,OAAQnD,KAAKC,IAAK,EAAGuxD,EAC9Bz6D,EAAGG,MAAOqF,cAAgBxF,EAAGG,MAAOiM,aAErC1K,IAAK,WAAY,SACS,SAAhBo2D,IACX2C,EAAY,EACZt6D,KAAK85D,OAAO32D,KAAK,WAChBm3D,EAAYxxD,KAAKC,IAAKuxD,EAAWz6D,EAAGG,MAAOiM,OAAQ,IAAKA,YACtDA,OAAQquD,KAIbC,cAAe,SAAUl0D,GACxB,GAAIqB,GAAU1H,KAAK0H,QAClB8tB,EAASx1B,KAAKw1B,OACdsP,EAASjlC,EAAGwG,EAAMyO,eAClB2jD,EAAM3zB,EAAOh7B,QAAS,MACtB0wD,EAAkB/B,EAAK,KAAQjjC,EAAQ,GACvCilC,EAAaD,GAAmB9yD,EAAQw9B,YACxCw1B,EAASD,EAAa56D,IAAMG,KAAK04D,gBAAiBD,GAClDkC,EAAUnlC,EAAOh0B,OAAexB,KAAK04D,gBAAiBljC,GAA5B31B,IAC1B+6D,GACCC,OAAQrlC,EACRslC,SAAUH,EACVI,OAAQN,EAAa56D,IAAM44D,EAC3BuC,SAAUN,EAGZr0D,GAAMC,iBAEDmyD,EAAIrkD,SAAU,sBAEjBqkD,EAAIrkD,SAAU,oBAEdpU,KAAK+3D,SAEHyC,IAAoB9yD,EAAQw9B,aAE5BllC,KAAKkT,SAAU,iBAAkB7M,EAAOu0D,MAAgB,IAI5DlzD,EAAQ8tB,OAASilC,GAAa,EAAQz6D,KAAKo4D,KAAKvvD,MAAO4vD,GAEvDz4D,KAAKw1B,OAASglC,EAAkB36D,IAAM44D,EACjCz4D,KAAKo5B,KACTp5B,KAAKo5B,IAAI6hC,QAGJN,EAAOn5D,QAAWk5D,EAAOl5D,QAC9B3B,EAAEuS,MAAO,oDAGLsoD,EAAOl5D,QACXxB,KAAKg6B,KAAMh6B,KAAKo4D,KAAKvvD,MAAO4vD,GAAOpyD,GAEpCrG,KAAKm3C,QAAS9wC,EAAOu0D,KAItBzjB,QAAS,SAAU9wC,EAAOu0D,GAOzB,QAAS3kD,KACR9I,EAAK4qD,SAAU,EACf5qD,EAAK+F,SAAU,WAAY7M,EAAOu0D,GAGnC,QAASplD,KACRolD,EAAUG,OAAOjxD,QAAS,MAAOiL,SAAU,kCAEtC2lD,EAAOl5D,QAAU2L,EAAKzF,QAAQ8N,KAClCrI,EAAK+tD,MAAOR,EAAQvtD,EAAKzF,QAAQ8N,KAAMS,IAEvCykD,EAAOllD,OACPS,KAlBF,GAAI9I,GAAOnN,KACV06D,EAASE,EAAUI,SACnBL,EAASC,EAAUE,QAEpB96D,MAAK+3D,SAAU,EAmBV4C,EAAOn5D,QAAUxB,KAAK0H,QAAQ+N,KAClCzV,KAAKm7D,MAAOR,EAAQ36D,KAAK0H,QAAQ+N,KAAM,WACtCmlD,EAAUC,OAAO/wD,QAAS,MAAOa,YAAa,kCAC9C6K,OAGDolD,EAAUC,OAAO/wD,QAAS,MAAOa,YAAa,kCAC9CgwD,EAAOllD,OACPD,KAGDmlD,EAAOp2D,MACNw1D,gBAAiB,QACjBC,cAAe,SAEhBY,EAAUC,OAAOt2D,KAAM,gBAAiB,SAInCm2D,EAAOl5D,QAAUm5D,EAAOn5D,OAC5Bo5D,EAAUC,OAAOt2D,KAAM,WAAY,IACxBm2D,EAAOl5D,QAClBxB,KAAKo4D,KAAK92D,OAAO,WAChB,MAAwC,KAAjCzB,EAAGG,MAAOuE,KAAM,cAEvBA,KAAM,WAAY,IAGpBm2D,EAAOn2D,MACNw1D,gBAAiB,OACjBC,cAAe,UAEhBY,EAAUG,OAAOx2D,MAChBs1D,gBAAiB,OACjBp1D,SAAU,KAIZu0D,UAAW,SAAUnwD,GACpB,GAAIi8B,GACHtP,EAASx1B,KAAKu4D,YAAa1vD,EAGvB2sB,GAAQ,KAAQx1B,KAAKw1B,OAAQ,KAK5BA,EAAOh0B,SACZg0B,EAASx1B,KAAKw1B,QAGfsP,EAAStP,EAAOhoB,KAAM,mBAAqB,GAC3CxN,KAAKu6D,eACJ/oD,OAAQszB,EACRhwB,cAAegwB,EACfx+B,eAAgBzG,EAAEuT,SAIpBmlD,YAAa,SAAU1vD,GACtB,MAAOA,MAAU,EAAQhJ,IAAMG,KAAKo4D,KAAKz0D,GAAIkF,IAG9CuyD,UAAW,SAAUvyD,GAMpB,MAJsB,gBAAVA,KACXA,EAAQ7I,KAAKs4D,QAAQzvD,MAAO7I,KAAKs4D,QAAQh3D,OAAQ,WAAauH,EAAQ,QAGhEA,GAGRwK,SAAU,WACJrT,KAAKo5B,KACTp5B,KAAKo5B,IAAI6hC,QAGVj7D,KAAKK,QAAQsK,YAAa,yEAE1B3K,KAAK45D,QACHjvD,YAAa,iFACb3G,WAAY,QAEdhE,KAAKs4D,QACH3tD,YAAa,kBACb3G,WAAY,QACZA,WAAY,YACZD,iBAEF/D,KAAKo4D,KAAK5yD,IAAKxF,KAAK85D,QAAS32D,KAAK,WAC5BtD,EAAEoE,KAAMjE,KAAM,mBAClBH,EAAGG,MAAOqO,SAEVxO,EAAGG,MACD2K,YAAa,oIAEb3G,WAAY,YACZA,WAAY,aACZA,WAAY,aACZA,WAAY,iBACZA,WAAY,mBACZA,WAAY,eACZA,WAAY,iBACZA,WAAY,UAIhBhE,KAAKo4D,KAAKj1D,KAAK,WACd,GAAIinC,GAAKvqC,EAAGG,MACX2+C,EAAOvU,EAAGnmC,KAAM,wBACZ06C,GACJvU,EACE7lC,KAAM,gBAAiBo6C,GACvBj5C,WAAY,yBAEd0kC,EAAGpmC,WAAY,mBAIjBhE,KAAK85D,OAAOtkD,OAEsB,YAA7BxV,KAAK0H,QAAQiwD,aACjB33D,KAAK85D,OAAOv4D,IAAK,SAAU,KAI7BsS,OAAQ,SAAUhL,GACjB,GAAI5H,GAAWjB,KAAK0H,QAAQzG,QACvBA,MAAa,IAIb4H,IAAU1I,EACdc,GAAW,GAEX4H,EAAQ7I,KAAKo7D,UAAWvyD,GAEvB5H,EADIpB,EAAEq4D,QAASj3D,GACJpB,EAAEU,IAAKU,EAAU,SAAUo6D,GACrC,MAAOA,KAAQxyD,EAAQwyD,EAAM,OAGnBx7D,EAAEU,IAAKP,KAAKo4D,KAAM,SAAUhuB,EAAIixB,GAC1C,MAAOA,KAAQxyD,EAAQwyD,EAAM,QAIhCr7D,KAAKw5D,eAAgBv4D,KAGtB6S,QAAS,SAAUjL,GAClB,GAAI5H,GAAWjB,KAAK0H,QAAQzG,QAC5B,IAAKA,KAAa,EAAlB,CAIA,GAAK4H,IAAU1I,EACdc,GAAW,MACL,CAEN,GADA4H,EAAQ7I,KAAKo7D,UAAWvyD,GACc,KAAjChJ,EAAEs/B,QAASt2B,EAAO5H,GACtB,MAGAA,GADIpB,EAAEq4D,QAASj3D,GACJpB,EAAEy7D,OAASzyD,GAAS5H,GAAWo3D,QAE7BxvD,GAGf7I,KAAKw5D,eAAgBv4D,KAGtB+4B,KAAM,SAAUnxB,EAAOxC,GACtBwC,EAAQ7I,KAAKo7D,UAAWvyD,EACxB,IAAIsE,GAAOnN,KACVy4D,EAAMz4D,KAAKo4D,KAAKz0D,GAAIkF,GACpBi8B,EAAS2zB,EAAIjrD,KAAM,mBACnB2hD,EAAQnvD,KAAK04D,gBAAiBD,GAC9BmC,GACCnC,IAAKA,EACLtJ,MAAOA,EAIJsI,GAAS3yB,EAAQ,MAItB9kC,KAAKo5B,IAAMv5B,EAAE46B,KAAMz6B,KAAKu7D,cAAez2B,EAAQz+B,EAAOu0D,IAKjD56D,KAAKo5B,KAA+B,aAAxBp5B,KAAKo5B,IAAIoiC,aACzB/C,EAAI1jD,SAAU,mBACdo6C,EAAM5qD,KAAM,YAAa,QAEzBvE,KAAKo5B,IACHwB,QAAQ,SAAU6gC,GAGlBp4D,WAAW,WACV8rD,EAAMjhD,KAAMutD,GACZtuD,EAAK+F,SAAU,OAAQ7M,EAAOu0D,IAC5B,KAEH3kD,SAAS,SAAUylD,EAAO32B,GAG1B1hC,WAAW,WACM,UAAX0hC,GACJ53B,EAAK2sD,OAAOvgD,MAAM,GAAO,GAG1Bk/C,EAAI9tD,YAAa,mBACjBwkD,EAAMnrD,WAAY,aAEb03D,IAAUvuD,EAAKisB,WACZjsB,GAAKisB,KAEX,QAKPmiC,cAAe,SAAUz2B,EAAQz+B,EAAOu0D,GACvC,GAAIztD,GAAOnN,IACX,QACC6J,IAAKi7B,EAAOvgC,KAAM,QAClBo3D,WAAY,SAAUD,EAAOhkC,GAC5B,MAAOvqB,GAAK+F,SAAU,aAAc7M,EACnCxG,EAAE+B,QAAU85D,MAAQA,EAAOE,aAAclkC,GAAYkjC,OAKzDlC,gBAAiB,SAAUD,GAC1B,GAAI30D,GAAKjE,EAAG44D,GAAMl0D,KAAM,gBACxB,OAAOvE,MAAKK,QAAQmN,KAAMxN,KAAK25D,kBAAmB,IAAM71D,QAItD/D,GAEJ,aAEIA,GAEH,SAAUF,EAAGK,GAeb,QAAS27D,GAAW3wD,GACnBspD,EAAMtpD,EAAEoK,cACRwmD,EAAMtH,EAAIuH,6BAEVtyD,EAAIX,KAAKqkB,IAAK2uC,EAAIryD,GAClBC,EAAIZ,KAAKqkB,IAAK2uC,EAAIpyD,GAClBsyD,EAAIlzD,KAAKqkB,IAAK2uC,EAAIE,IAGZ97D,EAAOoc,cAAiB7S,EAAI,IAASuyD,EAAI,GAAS,EAAJtyD,GAAa,EAAJsyD,GAAStyD,EAAI,IAAOD,EAAI,GAC9EgmC,EAAKnmC,SACTmmC,EAAK37B,UAEK27B,EAAKnmC,SAChBmmC,EAAK57B,SA3BRhU,EAAEC,OAAOm8D,0BAA2B,CAGpC,IACCxsB,GACA+kB,EAAK/qD,EAAGC,EAAGsyD,EAAGF,EAFX78C,EAAKnZ,UAAUC,SAGnB,OAAQ,mBAAmB/E,KAAM8E,UAAUoZ,WAAc,kCAAkCle,KAAMie,IAAQA,EAAG5H,QAAS,eAAkB,IAKvIo4B,EAAO5vC,EAAEC,OAAO2vC,SAoBhB5vC,GAAEC,OAAOG,SAASkhB,GAAI,aAAc,WAC9BthB,EAAEC,OAAOm8D,0BACbp8D,EAAEC,OAAOI,OACPkG,KAAM,sCAAuCqpC,EAAK57B,QAClDzN,KAAM,iCAAkCy1D,WA5B3Ch8D,EAAEC,OAAOm8D,0BAA2B,IAgCnCl8D,EAAQC,MAEV,SAAUH,EAAGK,EAAQC,GAKrB,QAAS+7D,KACRxkD,EAAM/M,YAAa,uBALpB,GAAI+M,GAAQ7X,EAAG,QACdsmD,EAAUtmD,EAAEC,OAAOI,MAQpBL,GAAGK,EAAOD,UAAWuJ,QAAS,cAKxB3J,EAAEC,OAAO+gB,WAMVhhB,EAAEC,OAAOghB,gBACbjhB,EAAEC,OAAO8O,aAAc,GAIxB8I,EAAM3C,SAAU,iCAIhB1R,WAAY64D,EAAoB,KAEhCr8D,EAAE+B,OAAQ/B,EAAEC,QAEXq8D,eAAgB,WAEf,GAAIlyD,GAAOpK,EAAEC,OAAOmK,KACnBmyD,EAASv8D,EAAG,kDACZ4Z,EAAOxP,EAAK+a,UAAW/a,EAAKib,iBAAiBjb,EAAK4Y,gBAAgBpJ,OAClE4Z,EAAcxzB,EAAEC,OAAOmK,KAAK4Y,gBAC5Bw5C,EAAW5iD,EAAOxZ,EAAS2+C,eAAgBnlC,GAAStZ,CAG/Ci8D,GAAO56D,SACZ46D,EAASv8D,EAAG,QAASkjC,UAAW,aAAeljC,EAAEC,OAAOsI,GAAK,sBAAuBG,SAAU,IAI/F6zD,EAAOj5D,KAAK,WACX,GAAI2qB,GAAQjuB,EAAGG,KAGT8tB,GAAO,GAAI/hB,aAAc,QAAUlM,EAAEC,OAAOsI,GAAK,QACtD0lB,EAAMvpB,KAAM,QAAU1E,EAAEC,OAAOsI,GAAK,MAAO0lB,EAAMvpB,KAAM,OACtD0F,EAAK2a,oBAAqByO,EAAY7U,SAAW6U,EAAYhT,WAKhExgB,EAAEC,OAAOwmB,UAAY81C,EAAOrkD,QAG5BlY,EAAEC,OAAO2P,cAAgB5P,EAAEC,OAAOwmB,UAChCzf,SACAkO,SAAU,sBACV6D,gBAIF/Y,EAAEC,OAAOw9B,iBAAiB3D,UAI1BwsB,EAAQ38C,QAAS,uBAGjB3J,EAAEC,OAAOuM,QAAS,QAGlB6vD,IAMSr8D,EAAEC,OAAO+O,sBACjBhP,EAAEC,OAAOmK,KAAKmb,YAAatM,SAASW,QAClC5Z,EAAGw8D,GAAWjpC,GAAI,0BACnBvzB,EAAEC,OAAOmK,KAAKI,OAAQoP,IACtBA,IAAS5Z,EAAEC,OAAO6P,eAiBb9P,EAAEwG,MAAM+C,QAAQiY,SAASG,sBAK9B3hB,EAAEC,OAAOuhB,SAASjB,QAAQwG,SAC1B/mB,EAAEC,OAAOuhB,SAAUxhB,EAAEC,OAAOmK,KAAKI,OAAQyO,SAASW,MAASX,SAASW,KAAOX,SAAShY,OALpFqlD,EAAQ38C,QAAS,eAAe,KAd5B3J,EAAEwG,MAAM+C,QAAQiY,SAASG,sBAC7B3hB,EAAEC,OAAOuhB,SAASvb,UAAU0f,OAAQvb,EAAK4Y,gBAAgB/hB,MAG1DjB,EAAEC,OAAOu3B,WAAYx3B,EAAEC,OAAOwmB,WAC7B2C,WAAY,OACZkO,SAAS,EACTV,YAAY,EACZC,gBAAgB,QAiBpB72B,EAAE,WAEDA,EAAEmG,QAAQ+W,YAOLld,EAAEC,OAAO4O,YACbxO,EAAOqJ,SAAU,EAAG,GAMrB1J,EAAEC,OAAOqJ,kBAAuBtJ,EAAEmG,QAAQiS,WAA6C,IAAhCpY,EAAEC,OAAOI,OAAO+X,YAA0B,EAAJ,EAGxFpY,EAAEC,OAAOwP,oBACbzP,EAAEC,OAAOq8D,iBAKLt8D,EAAEC,OAAO4O,YACby3C,EAAQnsB,KAAMn6B,EAAEC,OAAOmJ,cAGlBpJ,EAAEmG,QAAQ4a,kBAOf/gB,EAAEC,OAAOG,SAASsU,SAAU,kCAAmC,SAC9D,SAAUrJ,GACTA,EAAE5E,iBACF4E,EAAE2d,iCAKJ9oB,EAAQC"}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.external-png-1.4.5.css
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.external-png-1.4.5.css	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.external-png-1.4.5.css	(revision 101)
@@ -0,0 +1,4359 @@
+/*!
+* jQuery Mobile 1.4.5
+* Git HEAD hash: 68e55e78b292634d3991c795f06f5e37a512decc <> Date: Fri Oct 31 2014 17:33:30 UTC
+* http://jquerymobile.com
+*
+* Copyright 2010, 2014 jQuery Foundation, Inc. and othercontributors
+* Released under the MIT license.
+* http://jquery.org/license
+*
+*/
+
+
+.ui-icon-action:after {
+	background-image: url(images/icons-png/action-white.png);
+}
+.ui-icon-alert:after {
+	background-image: url(images/icons-png/alert-white.png);
+}
+.ui-icon-arrow-d-l:after {
+	background-image: url(images/icons-png/arrow-d-l-white.png);
+}
+.ui-icon-arrow-d-r:after {
+	background-image: url(images/icons-png/arrow-d-r-white.png);
+}
+.ui-icon-arrow-d:after {
+	background-image: url(images/icons-png/arrow-d-white.png);
+}
+.ui-icon-arrow-l:after {
+	background-image: url(images/icons-png/arrow-l-white.png);
+}
+.ui-icon-arrow-r:after {
+	background-image: url(images/icons-png/arrow-r-white.png);
+}
+.ui-icon-arrow-u-l:after {
+	background-image: url(images/icons-png/arrow-u-l-white.png);
+}
+.ui-icon-arrow-u-r:after {
+	background-image: url(images/icons-png/arrow-u-r-white.png);
+}
+.ui-icon-arrow-u:after {
+	background-image: url(images/icons-png/arrow-u-white.png);
+}
+.ui-icon-audio:after {
+	background-image: url(images/icons-png/audio-white.png);
+}
+.ui-icon-back:after {
+	background-image: url(images/icons-png/back-white.png);
+}
+.ui-icon-bars:after {
+	background-image: url(images/icons-png/bars-white.png);
+}
+.ui-icon-bullets:after {
+	background-image: url(images/icons-png/bullets-white.png);
+}
+.ui-icon-calendar:after {
+	background-image: url(images/icons-png/calendar-white.png);
+}
+.ui-icon-camera:after {
+	background-image: url(images/icons-png/camera-white.png);
+}
+.ui-icon-carat-d:after {
+	background-image: url(images/icons-png/carat-d-white.png);
+}
+.ui-icon-carat-l:after {
+	background-image: url(images/icons-png/carat-l-white.png);
+}
+.ui-icon-carat-r:after {
+	background-image: url(images/icons-png/carat-r-white.png);
+}
+.ui-icon-carat-u:after {
+	background-image: url(images/icons-png/carat-u-white.png);
+}
+.ui-icon-check:after,
+/* Used ui-checkbox-on twice to increase specificity. If active state has background-image for gradient this rule overrides. */
+html .ui-btn.ui-checkbox-on.ui-checkbox-on:after {
+	background-image: url(images/icons-png/check-white.png);
+}
+.ui-icon-clock:after {
+	background-image: url(images/icons-png/clock-white.png);
+}
+.ui-icon-cloud:after {
+	background-image: url(images/icons-png/cloud-white.png);
+}
+.ui-icon-comment:after {
+	background-image: url(images/icons-png/comment-white.png);
+}
+.ui-icon-delete:after {
+	background-image: url(images/icons-png/delete-white.png);
+}
+.ui-icon-edit:after {
+	background-image: url(images/icons-png/edit-white.png);
+}
+.ui-icon-eye:after {
+	background-image: url(images/icons-png/eye-white.png);
+}
+.ui-icon-forbidden:after {
+	background-image: url(images/icons-png/forbidden-white.png);
+}
+.ui-icon-forward:after {
+	background-image: url(images/icons-png/forward-white.png);
+}
+.ui-icon-gear:after {
+	background-image: url(images/icons-png/gear-white.png);
+}
+.ui-icon-grid:after {
+	background-image: url(images/icons-png/grid-white.png);
+}
+.ui-icon-heart:after {
+	background-image: url(images/icons-png/heart-white.png);
+}
+.ui-icon-home:after {
+	background-image: url(images/icons-png/home-white.png);
+}
+.ui-icon-info:after {
+	background-image: url(images/icons-png/info-white.png);
+}
+.ui-icon-location:after {
+	background-image: url(images/icons-png/location-white.png);
+}
+.ui-icon-lock:after {
+	background-image: url(images/icons-png/lock-white.png);
+}
+.ui-icon-mail:after {
+	background-image: url(images/icons-png/mail-white.png);
+}
+.ui-icon-minus:after {
+	background-image: url(images/icons-png/minus-white.png);
+}
+.ui-icon-navigation:after {
+	background-image: url(images/icons-png/navigation-white.png);
+}
+.ui-icon-phone:after {
+	background-image: url(images/icons-png/phone-white.png);
+}
+.ui-icon-plus:after {
+	background-image: url(images/icons-png/plus-white.png);
+}
+.ui-icon-power:after {
+	background-image: url(images/icons-png/power-white.png);
+}
+.ui-icon-recycle:after {
+	background-image: url(images/icons-png/recycle-white.png);
+}
+.ui-icon-refresh:after {
+	background-image: url(images/icons-png/refresh-white.png);
+}
+.ui-icon-search:after {
+	background-image: url(images/icons-png/search-white.png);
+}
+.ui-icon-shop:after {
+	background-image: url(images/icons-png/shop-white.png);
+}
+.ui-icon-star:after {
+	background-image: url(images/icons-png/star-white.png);
+}
+.ui-icon-tag:after {
+	background-image: url(images/icons-png/tag-white.png);
+}
+.ui-icon-user:after {
+	background-image: url(images/icons-png/user-white.png);
+}
+.ui-icon-video:after {
+	background-image: url(images/icons-png/video-white.png);
+}
+/* Alt icons */
+.ui-alt-icon.ui-icon-action:after,
+.ui-alt-icon .ui-icon-action:after {
+	background-image: url(images/icons-png/action-black.png);
+}
+.ui-alt-icon.ui-icon-alert:after,
+.ui-alt-icon .ui-icon-alert:after {
+	background-image: url(images/icons-png/alert-black.png);
+}
+.ui-alt-icon.ui-icon-arrow-d:after,
+.ui-alt-icon .ui-icon-arrow-d:after {
+	background-image: url(images/icons-png/arrow-d-black.png);
+}
+.ui-alt-icon.ui-icon-arrow-d-l:after,
+.ui-alt-icon .ui-icon-arrow-d-l:after {
+	background-image: url(images/icons-png/arrow-d-l-black.png);
+}
+.ui-alt-icon.ui-icon-arrow-d-r:after,
+.ui-alt-icon .ui-icon-arrow-d-r:after {
+	background-image: url(images/icons-png/arrow-d-r-black.png);
+}
+.ui-alt-icon.ui-icon-arrow-l:after,
+.ui-alt-icon .ui-icon-arrow-l:after {
+	background-image: url(images/icons-png/arrow-l-black.png);
+}
+.ui-alt-icon.ui-icon-arrow-r:after,
+.ui-alt-icon .ui-icon-arrow-r:after {
+	background-image: url(images/icons-png/arrow-r-black.png);
+}
+.ui-alt-icon.ui-icon-arrow-u:after,
+.ui-alt-icon .ui-icon-arrow-u:after {
+	background-image: url(images/icons-png/arrow-u-black.png);
+}
+.ui-alt-icon.ui-icon-arrow-u-l:after,
+.ui-alt-icon .ui-icon-arrow-u-l:after {
+	background-image: url(images/icons-png/arrow-u-l-black.png);
+}
+.ui-alt-icon.ui-icon-arrow-u-r:after,
+.ui-alt-icon .ui-icon-arrow-u-r:after {
+	background-image: url(images/icons-png/arrow-u-r-black.png);
+}
+.ui-alt-icon.ui-icon-audio:after,
+.ui-alt-icon .ui-icon-audio:after {
+	background-image: url(images/icons-png/audio-black.png);
+}
+.ui-alt-icon.ui-icon-back:after,
+.ui-alt-icon .ui-icon-back:after {
+	background-image: url(images/icons-png/back-black.png);
+}
+.ui-alt-icon.ui-icon-bars:after,
+.ui-alt-icon .ui-icon-bars:after {
+	background-image: url(images/icons-png/bars-black.png);
+}
+.ui-alt-icon.ui-icon-bullets:after,
+.ui-alt-icon .ui-icon-bullets:after {
+	background-image: url(images/icons-png/bullets-black.png);
+}
+.ui-alt-icon.ui-icon-calendar:after,
+.ui-alt-icon .ui-icon-calendar:after {
+	background-image: url(images/icons-png/calendar-black.png);
+}
+.ui-alt-icon.ui-icon-camera:after,
+.ui-alt-icon .ui-icon-camera:after {
+	background-image: url(images/icons-png/camera-black.png);
+}
+.ui-alt-icon.ui-icon-carat-d:after,
+.ui-alt-icon .ui-icon-carat-d:after {
+	background-image: url(images/icons-png/carat-d-black.png);
+}
+.ui-alt-icon.ui-icon-carat-l:after,
+.ui-alt-icon .ui-icon-carat-l:after {
+	background-image: url(images/icons-png/carat-l-black.png);
+}
+.ui-alt-icon.ui-icon-carat-r:after,
+.ui-alt-icon .ui-icon-carat-r:after {
+	background-image: url(images/icons-png/carat-r-black.png);
+}
+.ui-alt-icon.ui-icon-carat-u:after,
+.ui-alt-icon .ui-icon-carat-u:after {
+	background-image: url(images/icons-png/carat-u-black.png);
+}
+.ui-alt-icon.ui-icon-check:after,
+.ui-alt-icon .ui-icon-check:after,
+html .ui-alt-icon.ui-btn.ui-checkbox-on:after,
+html .ui-alt-icon .ui-btn.ui-checkbox-on:after {
+	background-image: url(images/icons-png/check-black.png);
+}
+.ui-alt-icon.ui-icon-clock:after,
+.ui-alt-icon .ui-icon-clock:after {
+	background-image: url(images/icons-png/clock-black.png);
+}
+.ui-alt-icon.ui-icon-cloud:after,
+.ui-alt-icon .ui-icon-cloud:after {
+	background-image: url(images/icons-png/cloud-black.png);
+}
+.ui-alt-icon.ui-icon-comment:after,
+.ui-alt-icon .ui-icon-comment:after {
+	background-image: url(images/icons-png/comment-black.png);
+}
+.ui-alt-icon.ui-icon-delete:after,
+.ui-alt-icon .ui-icon-delete:after {
+	background-image: url(images/icons-png/delete-black.png);
+}
+.ui-alt-icon.ui-icon-edit:after,
+.ui-alt-icon .ui-icon-edit:after {
+	background-image: url(images/icons-png/edit-black.png);
+}
+.ui-alt-icon.ui-icon-eye:after,
+.ui-alt-icon .ui-icon-eye:after {
+	background-image: url(images/icons-png/eye-black.png);
+}
+.ui-alt-icon.ui-icon-forbidden:after,
+.ui-alt-icon .ui-icon-forbidden:after {
+	background-image: url(images/icons-png/forbidden-black.png);
+}
+.ui-alt-icon.ui-icon-forward:after,
+.ui-alt-icon .ui-icon-forward:after {
+	background-image: url(images/icons-png/forward-black.png);
+}
+.ui-alt-icon.ui-icon-gear:after,
+.ui-alt-icon .ui-icon-gear:after {
+	background-image: url(images/icons-png/gear-black.png);
+}
+.ui-alt-icon.ui-icon-grid:after,
+.ui-alt-icon .ui-icon-grid:after {
+	background-image: url(images/icons-png/grid-black.png);
+}
+.ui-alt-icon.ui-icon-heart:after,
+.ui-alt-icon .ui-icon-heart:after {
+	background-image: url(images/icons-png/heart-black.png);
+}
+.ui-alt-icon.ui-icon-home:after,
+.ui-alt-icon .ui-icon-home:after {
+	background-image: url(images/icons-png/home-black.png);
+}
+.ui-alt-icon.ui-icon-info:after,
+.ui-alt-icon .ui-icon-info:after {
+	background-image: url(images/icons-png/info-black.png);
+}
+.ui-alt-icon.ui-icon-location:after,
+.ui-alt-icon .ui-icon-location:after {
+	background-image: url(images/icons-png/location-black.png);
+}
+.ui-alt-icon.ui-icon-lock:after,
+.ui-alt-icon .ui-icon-lock:after {
+	background-image: url(images/icons-png/lock-black.png);
+}
+.ui-alt-icon.ui-icon-mail:after,
+.ui-alt-icon .ui-icon-mail:after {
+	background-image: url(images/icons-png/mail-black.png);
+}
+.ui-alt-icon.ui-icon-minus:after,
+.ui-alt-icon .ui-icon-minus:after {
+	background-image: url(images/icons-png/minus-black.png);
+}
+.ui-alt-icon.ui-icon-navigation:after,
+.ui-alt-icon .ui-icon-navigation:after {
+	background-image: url(images/icons-png/navigation-black.png);
+}
+.ui-alt-icon.ui-icon-phone:after,
+.ui-alt-icon .ui-icon-phone:after {
+	background-image: url(images/icons-png/phone-black.png);
+}
+.ui-alt-icon.ui-icon-plus:after,
+.ui-alt-icon .ui-icon-plus:after {
+	background-image: url(images/icons-png/plus-black.png);
+}
+.ui-alt-icon.ui-icon-power:after,
+.ui-alt-icon .ui-icon-power:after {
+	background-image: url(images/icons-png/power-black.png);
+}
+.ui-alt-icon.ui-icon-recycle:after,
+.ui-alt-icon .ui-icon-recycle:after {
+	background-image: url(images/icons-png/recycle-black.png);
+}
+.ui-alt-icon.ui-icon-refresh:after,
+.ui-alt-icon .ui-icon-refresh:after {
+	background-image: url(images/icons-png/refresh-black.png);
+}
+.ui-alt-icon.ui-icon-search:after,
+.ui-alt-icon .ui-icon-search:after,
+.ui-input-search:after {
+	background-image: url(images/icons-png/search-black.png);
+}
+.ui-alt-icon.ui-icon-shop:after,
+.ui-alt-icon .ui-icon-shop:after {
+	background-image: url(images/icons-png/shop-black.png);
+}
+.ui-alt-icon.ui-icon-star:after,
+.ui-alt-icon .ui-icon-star:after {
+	background-image: url(images/icons-png/star-black.png);
+}
+.ui-alt-icon.ui-icon-tag:after,
+.ui-alt-icon .ui-icon-tag:after {
+	background-image: url(images/icons-png/tag-black.png);
+}
+.ui-alt-icon.ui-icon-user:after,
+.ui-alt-icon .ui-icon-user:after {
+	background-image: url(images/icons-png/user-black.png);
+}
+.ui-alt-icon.ui-icon-video:after,
+.ui-alt-icon .ui-icon-video:after {
+	background-image: url(images/icons-png/video-black.png);
+}
+/* Globals */
+/* Font
+-----------------------------------------------------------------------------------------------------------*/
+html {
+	font-size: 100%;
+}
+body,
+input,
+select,
+textarea,
+button,
+.ui-btn {
+	font-size: 1em;
+	line-height: 1.3;
+	font-family: sans-serif /*{global-font-family}*/;
+}
+legend,
+.ui-input-text input,
+.ui-input-search input {
+	color: inherit;
+	text-shadow: inherit;
+}
+/* Form labels (overrides font-weight bold in bars, and mini font-size) */
+.ui-mobile label,
+div.ui-controlgroup-label {
+	font-weight: normal;
+	font-size: 16px;
+}
+/* Separators
+-----------------------------------------------------------------------------------------------------------*/
+/* Field contain separator (< 28em) */
+.ui-field-contain {
+	border-bottom-color: #828282;
+	border-bottom-color: rgba(0,0,0,.15);
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+/* Table opt-in classes: strokes between each row, and alternating row stripes */
+/* Classes table-stroke and table-stripe are deprecated in 1.4. */
+.table-stroke thead th,
+.table-stripe thead th,
+.table-stripe tbody tr:last-child {
+	border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */
+	border-bottom: 1px solid rgba(0,0,0,.1);
+}
+.table-stroke tbody th,
+.table-stroke tbody td {
+	border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback  */
+	border-bottom: 1px solid rgba(0,0,0,.05);
+}
+.table-stripe.table-stroke tbody tr:last-child th,
+.table-stripe.table-stroke tbody tr:last-child td {
+	border-bottom: 0;
+}
+.table-stripe tbody tr:nth-child(odd) td,
+.table-stripe tbody tr:nth-child(odd) th {
+	background-color: #eeeeee; /* non-RGBA fallback  */
+	background-color: rgba(0,0,0,.04);
+}
+/* Buttons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn,
+label.ui-btn {
+	font-weight: bold;
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-btn {
+	text-decoration: none !important;
+}
+.ui-btn-active {
+	cursor: pointer;
+}
+/* Corner rounding
+-----------------------------------------------------------------------------------------------------------*/
+/* Class ui-btn-corner-all deprecated in 1.4 */
+.ui-corner-all {
+	-webkit-border-radius: 				.3125em /*{global-radii-blocks}*/;
+	border-radius: 						.3125em /*{global-radii-blocks}*/;
+}
+/* Buttons */
+.ui-btn-corner-all,
+.ui-btn.ui-corner-all,
+/* Slider track */
+.ui-slider-track.ui-corner-all,
+/* Flipswitch */
+.ui-flipswitch.ui-corner-all,
+/* Count bubble */
+.ui-li-count {
+	-webkit-border-radius: 				.3125em /*{global-radii-buttons}*/;
+	border-radius: 						.3125em /*{global-radii-buttons}*/;
+}
+/* Icon-only buttons */
+.ui-btn-icon-notext.ui-btn-corner-all,
+.ui-btn-icon-notext.ui-corner-all {
+	-webkit-border-radius: 1em;
+	border-radius: 1em;
+}
+/* Radius clip workaround for cleaning up corner trapping */
+.ui-btn-corner-all,
+.ui-corner-all {
+	-webkit-background-clip: padding;
+	background-clip: padding-box;
+}
+/* Popup arrow */
+.ui-popup.ui-corner-all > .ui-popup-arrow-guide {
+	left: .6em /*{global-radii-blocks}*/;
+	right: .6em /*{global-radii-blocks}*/;
+	top: .6em /*{global-radii-blocks}*/;
+	bottom: .6em /*{global-radii-blocks}*/;
+}
+/* Shadow
+-----------------------------------------------------------------------------------------------------------*/
+.ui-shadow {
+	-webkit-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ 		rgba(0,0,0,.15) /*{global-box-shadow-color}*/;
+	-moz-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ 		rgba(0,0,0,.15) /*{global-box-shadow-color}*/;
+	box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ 				rgba(0,0,0,.15) /*{global-box-shadow-color}*/;
+}
+.ui-shadow-inset {
+	-webkit-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ 	rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+	-moz-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ 		rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+	box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ 	rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+}
+.ui-overlay-shadow {
+	-webkit-box-shadow: 0 0 12px 		rgba(0,0,0,.6);
+	-moz-box-shadow: 0 0 12px 			rgba(0,0,0,.6);
+	box-shadow: 0 0 12px 				rgba(0,0,0,.6);
+}
+/* Icons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after,
+.ui-btn-icon-notext:after {
+	background-color: 					#666 /*{global-icon-color}*/;
+	background-color: 					rgba(0,0,0,.3) /*{global-icon-disc}*/;
+	background-position: center center;
+	background-repeat: no-repeat;
+	-webkit-border-radius: 1em;
+	border-radius: 1em;
+}
+/* Alt icons */
+.ui-alt-icon.ui-btn:after,
+.ui-alt-icon .ui-btn:after,
+html .ui-alt-icon.ui-checkbox-off:after,
+html .ui-alt-icon.ui-radio-off:after,
+html .ui-alt-icon .ui-checkbox-off:after,
+html .ui-alt-icon .ui-radio-off:after {
+	background-color: 					#666 /*{global-icon-color}*/;
+	background-color: 					rgba(0,0,0,.15) /*{global-icon-disc}*/;
+}
+/* No disc */
+.ui-nodisc-icon.ui-btn:after,
+.ui-nodisc-icon .ui-btn:after {
+	background-color: transparent;
+}
+/* Icon shadow */
+.ui-shadow-icon.ui-btn:after,
+.ui-shadow-icon .ui-btn:after {
+	-webkit-box-shadow: 0 1px 0 			rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+	-moz-box-shadow: 0 1px 0 				rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+	box-shadow: 0 1px 0 					rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+}
+/* Checkbox and radio */
+.ui-btn.ui-checkbox-off:after,
+.ui-btn.ui-checkbox-on:after,
+.ui-btn.ui-radio-off:after,
+.ui-btn.ui-radio-on:after {
+	display: block;
+	width: 18px;
+	height: 18px;
+	margin: -9px 2px 0 2px;
+}
+.ui-checkbox-off:after,
+.ui-btn.ui-radio-off:after {
+	filter: Alpha(Opacity=30);
+	opacity: .3;
+}
+.ui-btn.ui-checkbox-off:after,
+.ui-btn.ui-checkbox-on:after {
+	-webkit-border-radius: .1875em;
+	border-radius: .1875em;
+}
+.ui-btn.ui-checkbox-off:after {
+	background-color: #666;
+	background-color: rgba(0,0,0,.3);
+}
+.ui-radio .ui-btn.ui-radio-on:after {
+	background-image: none;
+	background-color: #fff;
+	width: 8px;
+	height: 8px;
+	border-width: 5px;
+	border-style: solid; 
+}
+.ui-alt-icon.ui-btn.ui-radio-on:after,
+.ui-alt-icon .ui-btn.ui-radio-on:after {
+	background-color: #000;
+}
+/* Loader */
+.ui-icon-loading {
+	background: url(images/ajax-loader.gif);
+	background-size: 2.875em 2.875em;
+}
+/* Swatches */
+/* A
+-----------------------------------------------------------------------------------------------------------*/
+/* Bar: Toolbars, dividers, slider track */
+.ui-bar-a,
+.ui-page-theme-a .ui-bar-inherit,
+html .ui-bar-a .ui-bar-inherit,
+html .ui-body-a .ui-bar-inherit,
+html body .ui-group-theme-a .ui-bar-inherit {
+	background-color: 			#e9e9e9 /*{a-bar-background-color}*/;
+	border-color:	 		#ddd /*{a-bar-border}*/;
+	color: 					#333 /*{a-bar-color}*/;
+	text-shadow: 0 /*{a-bar-shadow-x}*/ 1px /*{a-bar-shadow-y}*/ 0 /*{a-bar-shadow-radius}*/ 	#eee /*{a-bar-shadow-color}*/;
+	font-weight: bold;
+}
+.ui-bar-a {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Page and overlay */
+.ui-overlay-a,
+.ui-page-theme-a,
+.ui-page-theme-a .ui-panel-wrapper {
+	background-color: 			#f9f9f9 /*{a-page-background-color}*/;
+	border-color:	 		#bbb /*{a-page-border}*/;
+	color: 					#333 /*{a-page-color}*/;
+	text-shadow: 0 /*{a-page-shadow-x}*/ 1px /*{a-page-shadow-y}*/ 0 /*{a-page-shadow-radius}*/ 	#f3f3f3 /*{a-page-shadow-color}*/;
+}
+/* Body: Read-only lists, text inputs, collapsible content */
+.ui-body-a,
+.ui-page-theme-a .ui-body-inherit,
+html .ui-bar-a .ui-body-inherit,
+html .ui-body-a .ui-body-inherit,
+html body .ui-group-theme-a .ui-body-inherit,
+html .ui-panel-page-container-a {
+	background-color: 			#fff /*{a-body-background-color}*/;
+	border-color:	 		#ddd /*{a-body-border}*/;
+	color: 					#333 /*{a-body-color}*/;
+	text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 0 /*{a-body-shadow-radius}*/ 	#f3f3f3 /*{a-body-shadow-color}*/;
+}
+.ui-body-a {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Links */
+.ui-page-theme-a a,
+html .ui-bar-a a,
+html .ui-body-a a,
+html body .ui-group-theme-a a {
+	color: #3388cc /*{a-link-color}*/;
+	font-weight: bold;
+}
+.ui-page-theme-a a:visited,
+html .ui-bar-a a:visited,
+html .ui-body-a a:visited,
+html body .ui-group-theme-a a:visited {
+    color: #3388cc /*{a-link-visited}*/;
+}
+.ui-page-theme-a a:hover,
+html .ui-bar-a a:hover,
+html .ui-body-a a:hover,
+html body .ui-group-theme-a a:hover {
+	color: #005599 /*{a-link-hover}*/;
+}
+.ui-page-theme-a a:active,
+html .ui-bar-a a:active,
+html .ui-body-a a:active,
+html body .ui-group-theme-a a:active {
+	color: #005599 /*{a-link-active}*/;
+}
+/* Button up */
+.ui-page-theme-a .ui-btn,
+html .ui-bar-a .ui-btn,
+html .ui-body-a .ui-btn,
+html body .ui-group-theme-a .ui-btn,
+html head + body .ui-btn.ui-btn-a,
+/* Button visited */
+.ui-page-theme-a .ui-btn:visited,
+html .ui-bar-a .ui-btn:visited,
+html .ui-body-a .ui-btn:visited,
+html body .ui-group-theme-a .ui-btn:visited,
+html head + body .ui-btn.ui-btn-a:visited {
+	background-color: 			#f6f6f6 /*{a-bup-background-color}*/;
+	border-color:	 		#ddd /*{a-bup-border}*/;
+	color: 					#333 /*{a-bup-color}*/;
+	text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 0 /*{a-bup-shadow-radius}*/ #f3f3f3 /*{a-bup-shadow-color}*/;
+}
+/* Button hover */
+.ui-page-theme-a .ui-btn:hover,
+html .ui-bar-a .ui-btn:hover,
+html .ui-body-a .ui-btn:hover,
+html body .ui-group-theme-a .ui-btn:hover,
+html head + body .ui-btn.ui-btn-a:hover {
+	background-color: 			#ededed /*{a-bhover-background-color}*/;
+	border-color:	 		#ddd /*{a-bhover-border}*/;
+	color: 					#333 /*{a-bhover-color}*/;
+	text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 0 /*{a-bhover-shadow-radius}*/ #f3f3f3 /*{a-bhover-shadow-color}*/;
+}
+/* Button down */
+.ui-page-theme-a .ui-btn:active,
+html .ui-bar-a .ui-btn:active,
+html .ui-body-a .ui-btn:active,
+html body .ui-group-theme-a .ui-btn:active,
+html head + body .ui-btn.ui-btn-a:active {
+	background-color: 			#e8e8e8 /*{a-bdown-background-color}*/;
+	border-color:	 		#ddd /*{a-bdown-border}*/;
+	color: 					#333 /*{a-bdown-color}*/;
+	text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 0 /*{a-bdown-shadow-radius}*/ #f3f3f3 /*{a-bdown-shadow-color}*/;
+}
+/* Active button */
+.ui-page-theme-a .ui-btn.ui-btn-active,
+html .ui-bar-a .ui-btn.ui-btn-active,
+html .ui-body-a .ui-btn.ui-btn-active,
+html body .ui-group-theme-a .ui-btn.ui-btn-active,
+html head + body .ui-btn.ui-btn-a.ui-btn-active,
+/* Active checkbox icon */
+.ui-page-theme-a .ui-checkbox-on:after,
+html .ui-bar-a .ui-checkbox-on:after,
+html .ui-body-a .ui-checkbox-on:after,
+html body .ui-group-theme-a .ui-checkbox-on:after,
+.ui-btn.ui-checkbox-on.ui-btn-a:after,
+/* Active flipswitch background */
+.ui-page-theme-a .ui-flipswitch-active,
+html .ui-bar-a .ui-flipswitch-active,
+html .ui-body-a .ui-flipswitch-active,
+html body .ui-group-theme-a .ui-flipswitch-active,
+html body .ui-flipswitch.ui-bar-a.ui-flipswitch-active,
+/* Active slider track */
+.ui-page-theme-a .ui-slider-track .ui-btn-active,
+html .ui-bar-a .ui-slider-track .ui-btn-active,
+html .ui-body-a .ui-slider-track .ui-btn-active,
+html body .ui-group-theme-a .ui-slider-track .ui-btn-active,
+html body div.ui-slider-track.ui-body-a .ui-btn-active {
+	background-color: 		#3388cc /*{a-active-background-color}*/;
+	border-color:	 		#3388cc /*{a-active-border}*/;
+	color: 					#fff /*{a-active-color}*/;
+	text-shadow: 0 /*{a-active-shadow-x}*/ 1px /*{a-active-shadow-y}*/ 0 /*{a-active-shadow-radius}*/ #005599 /*{a-active-shadow-color}*/;
+}
+/* Active radio button icon */
+.ui-page-theme-a .ui-radio-on:after,
+html .ui-bar-a .ui-radio-on:after,
+html .ui-body-a .ui-radio-on:after,
+html body .ui-group-theme-a .ui-radio-on:after,
+.ui-btn.ui-radio-on.ui-btn-a:after {
+	border-color:			#3388cc /*{a-active-background-color}*/;
+}
+/* Focus */
+.ui-page-theme-a .ui-btn:focus,
+html .ui-bar-a .ui-btn:focus,
+html .ui-body-a .ui-btn:focus,
+html body .ui-group-theme-a .ui-btn:focus,
+html head + body .ui-btn.ui-btn-a:focus,
+/* Focus buttons and text inputs with div wrap */
+.ui-page-theme-a .ui-focus,
+html .ui-bar-a .ui-focus,
+html .ui-body-a .ui-focus,
+html body .ui-group-theme-a .ui-focus,
+html head + body .ui-btn-a.ui-focus,
+html head + body .ui-body-a.ui-focus {
+	-webkit-box-shadow: 0 0 12px 	#3388cc /*{a-active-background-color}*/;
+	-moz-box-shadow: 0 0 12px 		#3388cc /*{a-active-background-color}*/;
+	box-shadow: 0 0 12px 			#3388cc /*{a-active-background-color}*/;
+}
+/* B
+-----------------------------------------------------------------------------------------------------------*/
+/* Bar: Toolbars, dividers, slider track */
+.ui-bar-b,
+.ui-page-theme-b .ui-bar-inherit,
+html .ui-bar-b .ui-bar-inherit,
+html .ui-body-b .ui-bar-inherit,
+html body .ui-group-theme-b .ui-bar-inherit {
+	background-color: 			#1d1d1d /*{b-bar-background-color}*/;
+	border-color:	 		#1b1b1b /*{b-bar-border}*/;
+	color: 					#fff /*{b-bar-color}*/;
+	text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 0 /*{b-bar-shadow-radius}*/ 	#111 /*{b-bar-shadow-color}*/;
+	font-weight: bold;
+}
+.ui-bar-b {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Page and overlay */
+.ui-overlay-b,
+.ui-page-theme-b,
+.ui-page-theme-b .ui-panel-wrapper {
+	background-color: 			#252525 /*{b-page-background-color}*/;
+	border-color:	 		#454545 /*{b-page-border}*/;
+	color: 					#fff /*{b-page-color}*/;
+	text-shadow: 0 /*{b-page-shadow-x}*/ 1px /*{b-page-shadow-y}*/ 0 /*{b-page-shadow-radius}*/ 	#111 /*{b-page-shadow-color}*/;
+}
+/* Body: Read-only lists, text inputs, collapsible content */
+.ui-body-b,
+.ui-page-theme-b .ui-body-inherit,
+html .ui-bar-b .ui-body-inherit,
+html .ui-body-b .ui-body-inherit,
+html body .ui-group-theme-b .ui-body-inherit,
+html .ui-panel-page-container-b {
+	background-color: 			#2a2a2a /*{b-body-background-color}*/;
+	border-color:	 		#1d1d1d /*{b-body-border}*/;
+	color: 					#fff /*{b-body-color}*/;
+	text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ 	#111 /*{b-body-shadow-color}*/;
+}
+.ui-body-b {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Links */
+.ui-page-theme-b a,
+html .ui-bar-b a,
+html .ui-body-b a,
+html body .ui-group-theme-b a {
+	color: #22aadd /*{b-link-color}*/;
+	font-weight: bold;
+}
+.ui-page-theme-b a:visited,
+html .ui-bar-b a:visited,
+html .ui-body-b a:visited,
+html body .ui-group-theme-b a:visited {
+    color: #22aadd /*{b-link-visited}*/;
+}
+.ui-page-theme-b a:hover,
+html .ui-bar-b a:hover,
+html .ui-body-b a:hover,
+html body .ui-group-theme-b a:hover {
+	color: #0088bb /*{b-link-hover}*/;
+}
+.ui-page-theme-b a:active,
+html .ui-bar-b a:active,
+html .ui-body-b a:active,
+html body .ui-group-theme-b a:active {
+	color: #0088bb /*{b-link-active}*/;
+}
+/* Button up */
+.ui-page-theme-b .ui-btn,
+html .ui-bar-b .ui-btn,
+html .ui-body-b .ui-btn,
+html body .ui-group-theme-b .ui-btn,
+html head + body .ui-btn.ui-btn-b,
+/* Button visited */
+.ui-page-theme-b .ui-btn:visited,
+html .ui-bar-b .ui-btn:visited,
+html .ui-body-b .ui-btn:visited,
+html body .ui-group-theme-b .ui-btn:visited,
+html head + body .ui-btn.ui-btn-b:visited {
+	background-color: 			#333 /*{b-bup-background-color}*/;
+	border-color:	 		#1f1f1f /*{b-bup-border}*/;
+	color: 					#fff /*{b-bup-color}*/;
+	text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 0 /*{b-bup-shadow-radius}*/ #111 /*{b-bup-shadow-color}*/;
+}
+/* Button hover */
+.ui-page-theme-b .ui-btn:hover,
+html .ui-bar-b .ui-btn:hover,
+html .ui-body-b .ui-btn:hover,
+html body .ui-group-theme-b .ui-btn:hover,
+html head + body .ui-btn.ui-btn-b:hover {
+	background-color: 			#373737 /*{b-bhover-background-color}*/;
+	border-color:	 		#1f1f1f /*{b-bhover-border}*/;
+	color: 					#fff /*{b-bhover-color}*/;
+	text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 0 /*{b-bhover-shadow-radius}*/ #111 /*{b-bhover-shadow-color}*/;
+}
+/* Button down */
+.ui-page-theme-b .ui-btn:active,
+html .ui-bar-b .ui-btn:active,
+html .ui-body-b .ui-btn:active,
+html body .ui-group-theme-b .ui-btn:active,
+html head + body .ui-btn.ui-btn-b:active {
+	background-color: 			#404040 /*{b-bdown-background-color}*/;
+	border-color:	 		#1f1f1f /*{b-bdown-border}*/;
+	color: 					#fff /*{b-bdown-color}*/;
+	text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 0 /*{b-bdown-shadow-radius}*/ #111 /*{b-bdown-shadow-color}*/;
+}
+/* Active button */
+.ui-page-theme-b .ui-btn.ui-btn-active,
+html .ui-bar-b .ui-btn.ui-btn-active,
+html .ui-body-b .ui-btn.ui-btn-active,
+html body .ui-group-theme-b .ui-btn.ui-btn-active,
+html head + body .ui-btn.ui-btn-b.ui-btn-active,
+/* Active checkbox icon */
+.ui-page-theme-b .ui-checkbox-on:after,
+html .ui-bar-b .ui-checkbox-on:after,
+html .ui-body-b .ui-checkbox-on:after,
+html body .ui-group-theme-b .ui-checkbox-on:after,
+.ui-btn.ui-checkbox-on.ui-btn-b:after,
+/* Active flipswitch background */
+.ui-page-theme-b .ui-flipswitch-active,
+html .ui-bar-b .ui-flipswitch-active,
+html .ui-body-b .ui-flipswitch-active,
+html body .ui-group-theme-b .ui-flipswitch-active,
+html body .ui-flipswitch.ui-bar-b.ui-flipswitch-active,
+/* Active slider track */
+.ui-page-theme-b .ui-slider-track .ui-btn-active,
+html .ui-bar-b .ui-slider-track .ui-btn-active,
+html .ui-body-b .ui-slider-track .ui-btn-active,
+html body .ui-group-theme-b .ui-slider-track .ui-btn-active,
+html body div.ui-slider-track.ui-body-b .ui-btn-active {
+	background-color: 		#22aadd /*{b-active-background-color}*/;
+	border-color:	 		#22aadd /*{b-active-border}*/;
+	color: 					#fff /*{b-active-color}*/;
+	text-shadow: 0 /*{b-active-shadow-x}*/ 1px /*{b-active-shadow-y}*/ 0 /*{b-active-shadow-radius}*/ #0088bb /*{b-active-shadow-color}*/;
+}
+/* Active radio button icon */
+.ui-page-theme-b .ui-radio-on:after,
+html .ui-bar-b .ui-radio-on:after,
+html .ui-body-b .ui-radio-on:after,
+html body .ui-group-theme-b .ui-radio-on:after,
+.ui-btn.ui-radio-on.ui-btn-b:after {
+	border-color:			#22aadd /*{b-active-background-color}*/;
+}
+/* Focus */
+.ui-page-theme-b .ui-btn:focus,
+html .ui-bar-b .ui-btn:focus,
+html .ui-body-b .ui-btn:focus,
+html body .ui-group-theme-b .ui-btn:focus,
+html head + body .ui-btn.ui-btn-b:focus,
+/* Focus buttons and text inputs with div wrap */
+.ui-page-theme-b .ui-focus,
+html .ui-bar-b .ui-focus,
+html .ui-body-b .ui-focus,
+html body .ui-group-theme-b .ui-focus,
+html head + body .ui-btn-b.ui-focus,
+html head + body .ui-body-b.ui-focus {
+	-webkit-box-shadow: 0 0 12px 	#22aadd /*{b-active-background-color}*/;
+	-moz-box-shadow: 0 0 12px 		#22aadd /*{b-active-background-color}*/;
+	box-shadow: 0 0 12px 			#22aadd /*{b-active-background-color}*/;
+}
+/* Structure */
+/* Disabled
+-----------------------------------------------------------------------------------------------------------*/
+/* Class ui-disabled deprecated in 1.4. :disabled not supported by IE8 so we use [disabled] */
+.ui-disabled,
+.ui-state-disabled,
+button[disabled],
+.ui-select .ui-btn.ui-state-disabled {
+	filter: Alpha(Opacity=30);
+	opacity: .3;
+	cursor: default !important;
+	pointer-events: none;
+}
+/* Focus state outline
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn:focus,
+.ui-btn.ui-focus {
+	outline: 0;
+}
+/* Unset box-shadow in browsers that don't do it right */
+.ui-noboxshadow .ui-shadow,
+.ui-noboxshadow .ui-shadow-inset,
+.ui-noboxshadow .ui-overlay-shadow,
+.ui-noboxshadow .ui-shadow-icon.ui-btn:after,
+.ui-noboxshadow .ui-shadow-icon .ui-btn:after,
+.ui-noboxshadow .ui-focus,
+.ui-noboxshadow .ui-btn:focus,
+.ui-noboxshadow  input:focus,
+.ui-noboxshadow .ui-panel {
+	-webkit-box-shadow: none !important;
+	-moz-box-shadow: none !important;
+	box-shadow: none !important;
+}
+.ui-noboxshadow .ui-btn:focus,
+.ui-noboxshadow .ui-focus {
+	outline-width: 1px;
+	outline-style: auto;
+}
+/* Some unsets */
+.ui-mobile,
+.ui-mobile body {
+	height: 99.9%;
+}
+.ui-mobile fieldset,
+.ui-page {
+	padding: 0;
+	margin: 0;
+}
+.ui-mobile a img,
+.ui-mobile fieldset {
+	border-width: 0;
+}
+/* Fixes for fieldset issues on IE10 and FF (see #6077) */
+.ui-mobile fieldset {
+	min-width: 0;
+}
+@-moz-document url-prefix() {
+	.ui-mobile fieldset {
+		display: table-column;
+		vertical-align: middle;
+	}
+}
+/* Viewport */
+.ui-mobile-viewport {
+	margin: 0;
+	overflow-x: visible;
+	-webkit-text-size-adjust: 100%;
+	-ms-text-size-adjust:none;
+	-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+/* Issue #2066 */
+body.ui-mobile-viewport,
+div.ui-mobile-viewport {
+	overflow-x: hidden;
+}
+/* "page" containers - full-screen views, one should always be in view post-pageload */
+.ui-mobile [data-role=page],
+.ui-mobile [data-role=dialog],
+.ui-page {
+	top: 0;
+	left: 0;
+	width: 100%;
+	min-height: 100%;
+	position: absolute;
+	display: none;
+	border: 0;
+}
+/* On ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */
+.ui-page {
+	outline: none;
+}
+.ui-mobile .ui-page-active {
+	display: block;
+	overflow: visible;
+	overflow-x: hidden;
+}
+@media screen and (orientation: portrait) {
+	.ui-mobile .ui-page {
+		min-height: 420px;
+	}
+}
+@media screen and (orientation: landscape) {
+	.ui-mobile .ui-page {
+		min-height: 300px;
+	}
+}
+/* Fouc */
+.ui-mobile-rendering > * {
+	visibility: hidden;
+}
+/* Non-js content hiding */
+.ui-nojs {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+/* Loading screen */
+.ui-loading .ui-loader {
+	display: block;
+}
+.ui-loader {
+	display: none;
+	z-index: 9999999;
+	position: fixed;
+	top: 50%;
+	left: 50%;
+	border:0;
+}
+.ui-loader-default {
+	background: none;
+	filter: Alpha(Opacity=18);
+	opacity: .18;
+	width: 2.875em;
+	height: 2.875em;
+	margin-left: -1.4375em;
+	margin-top: -1.4375em;
+}
+.ui-loader-verbose {
+	width: 12.5em;
+	filter: Alpha(Opacity=88);
+	opacity: .88;
+	box-shadow: 0 1px 1px -1px #fff;
+	height: auto;
+	margin-left: -6.875em;
+	margin-top: -2.6875em;
+	padding: .625em;
+}
+.ui-loader-default h1 {
+	font-size: 0;
+	width: 0;
+	height: 0;
+	overflow: hidden;
+}
+.ui-loader-verbose h1 {
+	font-size: 1em;
+	margin: 0;
+	text-align: center;
+}
+.ui-loader .ui-icon-loading {
+	background-color: #000;
+	display: block;
+	margin: 0;
+	width: 2.75em;
+	height: 2.75em;
+	padding: .0625em;
+	-webkit-border-radius: 2.25em;
+	border-radius: 2.25em;
+}
+.ui-loader-verbose .ui-icon-loading {
+	margin: 0 auto .625em;
+	filter: Alpha(Opacity=75);
+	opacity: .75;
+}
+.ui-loader-textonly {
+	padding: .9375em;
+	margin-left: -7.1875em;
+}
+.ui-loader-textonly .ui-icon-loading {
+	display: none;
+}
+.ui-loader-fakefix {
+	position: absolute;
+}
+/* Headers, content panels */
+.ui-bar,
+.ui-body {
+	position: relative;
+	padding: .4em 1em;
+	overflow: hidden;
+	display: block;
+	clear: both;
+}
+.ui-bar h1,
+.ui-bar h2,
+.ui-bar h3,
+.ui-bar h4,
+.ui-bar h5,
+.ui-bar h6 {
+	margin: 0;
+	padding: 0;
+	font-size: 1em;
+	display: inline-block;
+}
+.ui-header,
+.ui-footer {
+	border-width: 1px 0;
+	border-style: solid;
+	position: relative;
+}
+.ui-header:empty,
+.ui-footer:empty {
+	min-height: 2.6875em;
+}
+.ui-header .ui-title,
+.ui-footer .ui-title {
+	font-size: 1em;
+	min-height: 1.1em;
+	text-align: center;
+	display: block;
+	margin: 0 30%;
+	padding: .7em 0;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+	outline: 0 !important;
+}
+.ui-footer .ui-title {
+	margin: 0 1em;
+}
+.ui-content {
+	border-width: 0;
+	overflow: visible;
+	overflow-x: hidden;
+	padding: 1em;
+}
+/* Corner styling for dialogs and popups */
+.ui-corner-all > .ui-header:first-child,
+.ui-corner-all > .ui-content:first-child,
+.ui-corner-all > .ui-footer:first-child {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+}
+.ui-corner-all > .ui-header:last-child,
+.ui-corner-all > .ui-content:last-child,
+.ui-corner-all > .ui-footer:last-child {
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+/* Buttons and icons */
+.ui-btn {
+	font-size: 16px;
+	margin: .5em 0;
+	padding: .7em 1em;
+	display: block;
+	position: relative;
+	text-align: center;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+	cursor: pointer;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+.ui-btn-icon-notext,
+.ui-header button.ui-btn.ui-btn-icon-notext,
+.ui-footer button.ui-btn.ui-btn-icon-notext {
+	padding: 0;
+	width: 1.75em;
+	height: 1.75em;
+	text-indent: -9999px;
+	white-space: nowrap !important;
+}
+.ui-mini {
+	font-size: 12.5px;
+}
+.ui-mini .ui-btn {
+	font-size: inherit;
+}
+/* Make buttons in toolbars default to mini and inline. */
+.ui-header .ui-btn,
+.ui-footer .ui-btn {
+	font-size: 12.5px;
+	display: inline-block;
+	vertical-align: middle;
+}
+.ui-header .ui-controlgroup .ui-btn-icon-notext,
+.ui-footer .ui-controlgroup .ui-btn-icon-notext {
+    font-size: 12.5px;
+}
+/* To ensure same top and left/right position when ui-btn-left/right are added to something other than buttons. */
+.ui-header .ui-btn-left,
+.ui-header .ui-btn-right {
+	font-size: 12.5px;
+}
+.ui-mini.ui-btn-icon-notext,
+.ui-mini .ui-btn-icon-notext,
+.ui-header .ui-btn-icon-notext,
+.ui-footer .ui-btn-icon-notext {
+	font-size: 16px;	
+	padding: 0;
+}
+.ui-btn-inline {
+	display: inline-block;
+	vertical-align: middle;
+	margin-right: .625em;
+}
+.ui-btn-icon-left {
+	padding-left: 2.5em;
+}
+.ui-btn-icon-right {
+	padding-right: 2.5em;
+}
+.ui-btn-icon-top {
+	padding-top: 2.5em;
+}
+.ui-btn-icon-bottom {
+	padding-bottom: 2.5em;
+}
+.ui-header .ui-btn-icon-top,
+.ui-footer .ui-btn-icon-top,
+.ui-header .ui-btn-icon-bottom,
+.ui-footer .ui-btn-icon-bottom {
+	padding-left: .3125em;
+	padding-right: .3125em;
+}
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after,
+.ui-btn-icon-notext:after {
+	content: "";
+	position: absolute;
+	display: block;
+	width: 22px;
+	height: 22px;
+}
+.ui-btn-icon-notext:after,
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after {
+	top: 50%;
+	margin-top: -11px;
+}
+.ui-btn-icon-left:after {
+	left: .5625em;
+}
+.ui-btn-icon-right:after {
+	right: .5625em;
+}
+.ui-mini.ui-btn-icon-left:after,
+.ui-mini .ui-btn-icon-left:after,
+.ui-header .ui-btn-icon-left:after,
+.ui-footer .ui-btn-icon-left:after {
+	left: .37em;
+}
+.ui-mini.ui-btn-icon-right:after,
+.ui-mini .ui-btn-icon-right:after,
+.ui-header .ui-btn-icon-right:after,
+.ui-footer .ui-btn-icon-right:after {
+	right: .37em;
+}
+.ui-btn-icon-notext:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after {
+	left: 50%;
+	margin-left: -11px;
+}
+.ui-btn-icon-top:after {
+	top: .5625em;
+}
+.ui-btn-icon-bottom:after {
+	top: auto;
+	bottom: .5625em;
+}
+/* Buttons in header position classes */
+.ui-header .ui-btn-left,
+.ui-header .ui-btn-right,
+.ui-btn-left > [class*="ui-"],
+.ui-btn-right > [class*="ui-"] {
+	margin: 0;
+}
+.ui-btn-left,
+.ui-btn-right {
+	position: absolute;
+	top: .24em;
+}
+.ui-btn-left {
+	left: .4em;
+}
+.ui-btn-right {
+	right: .4em;
+}
+.ui-btn-icon-notext.ui-btn-left {
+	top: .3125em;
+	left: .3125em;
+}
+.ui-btn-icon-notext.ui-btn-right {
+	top: .3125em;
+	right: .3125em;
+}
+/* Button elements */
+button.ui-btn,
+.ui-controlgroup-controls button.ui-btn-icon-notext {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	width: 100%;
+}
+button.ui-btn-inline,
+.ui-header button.ui-btn,
+.ui-footer button.ui-btn {
+	width: auto;
+}
+/* Firefox adds a 1px border in a button element. We negate this to make sure they have the same height as other buttons in controlgroups. */
+button.ui-btn::-moz-focus-inner {
+	border: 0;
+}
+button.ui-btn-icon-notext,
+.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn {
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+	width: 1.75em;
+}
+/* Form labels */
+.ui-mobile label,
+.ui-controlgroup-label {
+	display: block;
+	margin: 0 0 .4em;
+}
+/* Accessible content hiding */
+/* ui-hide-label deprecated in 1.4. TODO: Remove in 1.5 */
+.ui-hide-label > label,
+.ui-hide-label .ui-controlgroup-label,
+.ui-hide-label .ui-rangeslider label,
+.ui-hidden-accessible {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+/* Used for hiding elements by the filterable widget. You can also use this class to hide list items or buttons in controlgroups; this ensures correct corner styling. */
+.ui-screen-hidden {
+	display: none !important;
+}
+/* Transitions originally inspired by those from jQtouch, nice work, folks */
+.ui-mobile-viewport-transitioning,
+.ui-mobile-viewport-transitioning .ui-page {
+	width: 100%;
+	height: 100%;
+	overflow: hidden;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+}
+.ui-page-pre-in {
+	opacity: 0;
+}
+.in {
+	-webkit-animation-timing-function: ease-out;
+	-webkit-animation-duration: 350ms;
+	-moz-animation-timing-function: ease-out;
+	-moz-animation-duration: 350ms;
+	animation-timing-function: ease-out;
+	animation-duration: 350ms;
+}
+.out {
+	-webkit-animation-timing-function: ease-in;
+	-webkit-animation-duration: 225ms;
+	-moz-animation-timing-function: ease-in;
+	-moz-animation-duration: 225ms;
+	animation-timing-function: ease-in;
+	animation-duration: 225ms;
+}
+@-webkit-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-moz-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-webkit-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+@-moz-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+@keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+.fade.out {
+	opacity: 0;
+	-webkit-animation-duration: 125ms;
+	-webkit-animation-name: fadeout;
+	-moz-animation-duration: 125ms;
+	-moz-animation-name: fadeout;
+	animation-duration: 125ms;
+	animation-name: fadeout;
+}
+.fade.in {
+	opacity: 1;
+	-webkit-animation-duration: 225ms;
+	-webkit-animation-name: fadein;
+	-moz-animation-duration: 225ms;
+	-moz-animation-name: fadein;
+	animation-duration: 225ms;
+	animation-name: fadein;
+}
+.pop {
+	-webkit-transform-origin: 50% 50%;
+	-moz-transform-origin: 50% 50%;
+	transform-origin: 50% 50%;
+}
+.pop.in {
+	-webkit-transform: scale(1);
+	-webkit-animation-name: popin;
+	-webkit-animation-duration: 350ms;
+	-moz-transform: scale(1);
+	-moz-animation-name: popin;
+	-moz-animation-duration: 350ms;
+	transform: scale(1);
+	animation-name: popin;
+	animation-duration: 350ms;
+    opacity: 1;
+}
+.pop.out {
+	-webkit-animation-name: fadeout;
+	-webkit-animation-duration: 100ms;
+	-moz-animation-name: fadeout;
+	-moz-animation-duration: 100ms;
+	animation-name: fadeout;
+	animation-duration: 100ms;
+	opacity: 0;
+}
+.pop.in.reverse {
+	-webkit-animation-name: fadein;
+	-moz-animation-name: fadein;
+	animation-name: fadein;
+}
+.pop.out.reverse {
+	-webkit-transform: scale(.8);
+	-webkit-animation-name: popout;
+	-moz-transform: scale(.8);
+	-moz-animation-name: popout;
+	transform: scale(.8);
+	animation-name: popout;
+}
+@-webkit-keyframes popin {
+    from {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+}
+@-moz-keyframes popin {
+    from {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+}
+@keyframes popin {
+    from {
+        transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        transform: scale(1);
+        opacity: 1;
+    }
+}
+@-webkit-keyframes popout {
+    from {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+}
+@-moz-keyframes popout {
+    from {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+}
+@keyframes popout {
+    from {
+        transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        transform: scale(.8);
+        opacity: 0;
+    }
+}
+/* keyframes for slidein from sides */
+@-webkit-keyframes slideinfromright {
+    from { -webkit-transform: translate3d(100%,0,0); }
+    to { -webkit-transform: translate3d(0,0,0); }
+}
+@-moz-keyframes slideinfromright {
+    from { -moz-transform: translateX(100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromright {
+    from { transform: translateX(100%); }
+    to { transform: translateX(0); }
+}
+@-webkit-keyframes slideinfromleft {
+    from { -webkit-transform: translate3d(-100%,0,0); }
+    to { -webkit-transform: translate3d(0,0,0); }
+}
+@-moz-keyframes slideinfromleft {
+    from { -moz-transform: translateX(-100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromleft {
+    from { transform: translateX(-100%); }
+    to { transform: translateX(0); }
+}
+/* keyframes for slideout to sides */
+@-webkit-keyframes slideouttoleft {
+    from { -webkit-transform: translate3d(0,0,0); }
+    to { -webkit-transform: translate3d(-100%,0,0); }
+}
+@-moz-keyframes slideouttoleft {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(-100%); }
+}
+@keyframes slideouttoleft {
+    from { transform: translateX(0); }
+    to { transform: translateX(-100%); }
+}
+@-webkit-keyframes slideouttoright {
+    from { -webkit-transform: translate3d(0,0,0); }
+    to { -webkit-transform: translate3d(100%,0,0); }
+}
+@-moz-keyframes slideouttoright {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(100%); }
+}
+@keyframes slideouttoright {
+    from { transform: translateX(0); }
+    to { transform: translateX(100%); }
+}
+.slide.out, .slide.in {
+	-webkit-animation-timing-function: ease-out;
+	-webkit-animation-duration: 350ms;
+	-moz-animation-timing-function: ease-out;
+	-moz-animation-duration: 350ms;
+	animation-timing-function: ease-out;
+	animation-duration: 350ms;
+}
+.slide.out {
+	-webkit-transform: translate3d(-100%,0,0);
+	-webkit-animation-name: slideouttoleft;
+	-moz-transform: translateX(-100%);
+	-moz-animation-name: slideouttoleft;
+	transform: translateX(-100%);
+	animation-name: slideouttoleft;
+}
+.slide.in {
+	-webkit-transform: translate3d(0,0,0);
+	-webkit-animation-name: slideinfromright;
+	-moz-transform: translateX(0);
+	-moz-animation-name: slideinfromright;
+	transform: translateX(0);
+	animation-name: slideinfromright;
+}
+.slide.out.reverse {
+	-webkit-transform: translate3d(100%,0,0);
+	-webkit-animation-name: slideouttoright;
+	-moz-transform: translateX(100%);
+	-moz-animation-name: slideouttoright;
+	transform: translateX(100%);
+	animation-name: slideouttoright;
+}
+.slide.in.reverse {
+	-webkit-transform: translate3d(0,0,0);
+	-webkit-animation-name: slideinfromleft;
+	-moz-transform: translateX(0);
+	-moz-animation-name: slideinfromleft;
+	transform: translateX(0);
+	animation-name: slideinfromleft;
+}
+.slidefade.out {
+	-webkit-transform: translateX(-100%);
+	-webkit-animation-name: slideouttoleft;
+	-webkit-animation-duration: 225ms;
+	-moz-transform: translateX(-100%);
+	-moz-animation-name: slideouttoleft;
+	-moz-animation-duration: 225ms;
+	transform: translateX(-100%);
+	animation-name: slideouttoleft;
+	animation-duration: 225ms;
+}
+.slidefade.in {
+	-webkit-transform: translateX(0);
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateX(0);
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 200ms;
+	transform: translateX(0);
+	animation-name: fadein;
+	animation-duration: 200ms;
+}
+.slidefade.out.reverse {
+	-webkit-transform: translateX(100%);
+	-webkit-animation-name: slideouttoright;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateX(100%);
+	-moz-animation-name: slideouttoright;
+	-moz-animation-duration: 200ms;
+	transform: translateX(100%);
+	animation-name: slideouttoright;
+	animation-duration: 200ms;
+}
+.slidefade.in.reverse {
+	-webkit-transform: translateX(0);
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateX(0);
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 200ms;
+	transform: translateX(0);
+	animation-name: fadein;
+	animation-duration: 200ms;
+}
+/* slide down */
+.slidedown.out {
+	-webkit-animation-name: fadeout;
+	-webkit-animation-duration: 100ms;
+	-moz-animation-name: fadeout;
+	-moz-animation-duration: 100ms;
+	animation-name: fadeout;
+	animation-duration: 100ms;
+}
+.slidedown.in {
+	-webkit-transform: translateY(0);
+	-webkit-animation-name: slideinfromtop;
+	-webkit-animation-duration: 250ms;
+	-moz-transform: translateY(0);
+	-moz-animation-name: slideinfromtop;
+	-moz-animation-duration: 250ms;
+	transform: translateY(0);
+	animation-name: slideinfromtop;
+	animation-duration: 250ms;
+}
+.slidedown.in.reverse {
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 150ms;
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 150ms;
+	animation-name: fadein;
+	animation-duration: 150ms;
+}
+.slidedown.out.reverse {
+	-webkit-transform: translateY(-100%);
+	-webkit-animation-name: slideouttotop;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateY(-100%);
+	-moz-animation-name: slideouttotop;
+	-moz-animation-duration: 200ms;
+	transform: translateY(-100%);
+	animation-name: slideouttotop;
+	animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfromtop {
+    from { -webkit-transform: translateY(-100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfromtop {
+    from { -moz-transform: translateY(-100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfromtop {
+    from { transform: translateY(-100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttotop {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(-100%); }
+}
+@-moz-keyframes slideouttotop {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(-100%); }
+}
+@keyframes slideouttotop {
+    from { transform: translateY(0); }
+    to { transform: translateY(-100%); }
+}
+/* slide up */
+.slideup.out {
+	-webkit-animation-name: fadeout;
+	-webkit-animation-duration: 100ms;
+	-moz-animation-name: fadeout;
+	-moz-animation-duration: 100ms;
+	animation-name: fadeout;
+	animation-duration: 100ms;
+}
+.slideup.in {
+	-webkit-transform: translateY(0);
+	-webkit-animation-name: slideinfrombottom;
+	-webkit-animation-duration: 250ms;
+	-moz-transform: translateY(0);
+	-moz-animation-name: slideinfrombottom;
+	-moz-animation-duration: 250ms;
+	transform: translateY(0);
+	animation-name: slideinfrombottom;
+	animation-duration: 250ms;
+}
+.slideup.in.reverse {
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 150ms;
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 150ms;
+	animation-name: fadein;
+	animation-duration: 150ms;
+}
+.slideup.out.reverse {
+	-webkit-transform: translateY(100%);
+	-webkit-animation-name: slideouttobottom;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateY(100%);
+	-moz-animation-name: slideouttobottom;
+	-moz-animation-duration: 200ms;
+	transform: translateY(100%);
+	animation-name: slideouttobottom;
+	animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfrombottom {
+    from { -webkit-transform: translateY(100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfrombottom {
+    from { -moz-transform: translateY(100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfrombottom {
+    from { transform: translateY(100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttobottom {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(100%); }
+}
+@-moz-keyframes slideouttobottom {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(100%); }
+}
+@keyframes slideouttobottom {
+    from { transform: translateY(0); }
+    to { transform: translateY(100%); }
+}
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-flip {
+	-webkit-perspective: 1000;
+	-moz-perspective: 1000;
+	perspective: 1000;
+	position: absolute;
+}
+.flip {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+	-moz-backface-visibility: hidden;
+	-moz-transform: translateX(0);
+	backface-visibility: hidden;
+	transform: translateX(0);
+}
+.flip.out {
+	-webkit-transform: rotateY(-90deg) scale(.9);
+	-webkit-animation-name: flipouttoleft;
+	-webkit-animation-duration: 175ms;
+	-moz-transform: rotateY(-90deg) scale(.9);
+	-moz-animation-name: flipouttoleft;
+	-moz-animation-duration: 175ms;
+	transform: rotateY(-90deg) scale(.9);
+	animation-name: flipouttoleft;
+	animation-duration: 175ms;
+}
+.flip.in {
+	-webkit-animation-name: flipintoright;
+	-webkit-animation-duration: 225ms;
+	-moz-animation-name: flipintoright;
+	-moz-animation-duration: 225ms;
+	animation-name: flipintoright;
+	animation-duration: 225ms;
+}
+.flip.out.reverse {
+	-webkit-transform: rotateY(90deg) scale(.9);
+	-webkit-animation-name: flipouttoright;
+	-moz-transform: rotateY(90deg) scale(.9);
+	-moz-animation-name: flipouttoright;
+	transform: rotateY(90deg) scale(.9);
+	animation-name: flipouttoright;
+}
+.flip.in.reverse {
+	-webkit-animation-name: flipintoleft;
+	-moz-animation-name: flipintoleft;
+	animation-name: flipintoleft;
+}
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-turn {
+	-webkit-perspective: 200px;
+	-moz-perspective: 200px;
+	-ms-perspective: 200px;
+	perspective: 200px;
+	position: absolute;
+}
+.turn {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+	-webkit-transform-origin: 0;
+	
+	-moz-backface-visibility: hidden;
+	-moz-transform: translateX(0);
+	-moz-transform-origin: 0;
+	
+	backface-visibility :hidden;
+	transform: translateX(0);
+	transform-origin: 0;
+}
+.turn.out {
+	-webkit-transform: rotateY(-90deg) scale(.9);
+	-webkit-animation-name: flipouttoleft;
+	-webkit-animation-duration: 125ms;
+	-moz-transform: rotateY(-90deg) scale(.9);
+	-moz-animation-name: flipouttoleft;
+	-moz-animation-duration: 125ms;
+	transform: rotateY(-90deg) scale(.9);
+	animation-name: flipouttoleft;
+	animation-duration: 125ms;
+}
+.turn.in {
+	-webkit-animation-name: flipintoright;
+	-webkit-animation-duration: 250ms;
+	-moz-animation-name: flipintoright;
+	-moz-animation-duration: 250ms;
+	animation-name: flipintoright;
+	animation-duration: 250ms;
+	
+}
+.turn.out.reverse {
+	-webkit-transform: rotateY(90deg) scale(.9);
+	-webkit-animation-name: flipouttoright;
+	-moz-transform: rotateY(90deg) scale(.9);
+	-moz-animation-name: flipouttoright;
+	transform: rotateY(90deg) scale(.9);
+	animation-name: flipouttoright;
+}
+.turn.in.reverse {
+	-webkit-animation-name: flipintoleft;
+	-moz-animation-name: flipintoleft;
+	animation-name: flipintoleft;
+}
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* flow transition */
+.flow {
+	-webkit-transform-origin: 50% 30%;
+	-webkit-box-shadow: 0 0 20px rgba(0,0,0,.4);
+	-moz-transform-origin: 50% 30%;	
+	-moz-box-shadow: 0 0 20px rgba(0,0,0,.4);
+	transform-origin: 50% 30%;	
+	box-shadow: 0 0 20px rgba(0,0,0,.4);
+}
+.ui-dialog.flow {
+	-webkit-transform-origin: none;
+	-webkit-box-shadow: none;
+	-moz-transform-origin: none;	
+	-moz-box-shadow: none;
+	transform-origin: none;	
+	box-shadow: none;
+}
+.flow.out {
+	-webkit-transform: translateX(-100%) scale(.7);
+	-webkit-animation-name: flowouttoleft;
+	-webkit-animation-timing-function: ease;
+	-webkit-animation-duration: 350ms;
+	-moz-transform: translateX(-100%) scale(.7);
+	-moz-animation-name: flowouttoleft;
+	-moz-animation-timing-function: ease;
+	-moz-animation-duration: 350ms;
+	transform: translateX(-100%) scale(.7);
+	animation-name: flowouttoleft;
+	animation-timing-function: ease;
+	animation-duration: 350ms;
+}
+.flow.in {
+	-webkit-transform: translateX(0) scale(1);
+	-webkit-animation-name: flowinfromright;
+	-webkit-animation-timing-function: ease;
+	-webkit-animation-duration: 350ms;
+	-moz-transform: translateX(0) scale(1);
+	-moz-animation-name: flowinfromright;
+	-moz-animation-timing-function: ease;
+	-moz-animation-duration: 350ms;
+	transform: translateX(0) scale(1);
+	animation-name: flowinfromright;
+	animation-timing-function: ease;
+	animation-duration: 350ms;
+}
+.flow.out.reverse {
+	-webkit-transform: translateX(100%);
+	-webkit-animation-name: flowouttoright;
+	-moz-transform: translateX(100%);
+	-moz-animation-name: flowouttoright;
+	transform: translateX(100%);
+	animation-name: flowouttoright;
+}
+.flow.in.reverse {
+	-webkit-animation-name: flowinfromleft;
+	-moz-animation-name: flowinfromleft;
+	animation-name: flowinfromleft;
+}
+@-webkit-keyframes flowouttoleft {
+    0% { -webkit-transform: translateX(0) scale(1); }
+	60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(-100%) scale(.7); }
+}
+@-moz-keyframes flowouttoleft {
+    0% { -moz-transform: translateX(0) scale(1); }
+	60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(-100%) scale(.7); }
+}
+@keyframes flowouttoleft {
+    0% { transform: translateX(0) scale(1); }
+	60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(-100%) scale(.7); }
+}
+@-webkit-keyframes flowouttoright {
+    0% { -webkit-transform: translateX(0) scale(1); }
+	60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform:  translateX(100%) scale(.7); }
+}
+@-moz-keyframes flowouttoright {
+    0% { -moz-transform: translateX(0) scale(1); }
+	60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(100%) scale(.7); }
+}
+@keyframes flowouttoright {
+    0% { transform: translateX(0) scale(1); }
+	60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(100%) scale(.7); }
+}
+@-webkit-keyframes flowinfromleft {
+    0% { -webkit-transform: translateX(-100%) scale(.7); }
+	30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromleft {
+    0% { -moz-transform: translateX(-100%) scale(.7); }
+	30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromleft {
+    0% { transform: translateX(-100%) scale(.7); }
+	30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+@-webkit-keyframes flowinfromright {
+    0% { -webkit-transform: translateX(100%) scale(.7); }
+	30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromright {
+    0% { -moz-transform: translateX(100%) scale(.7); }
+	30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromright {
+    0% { transform: translateX(100%) scale(.7); }
+	30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+.ui-field-contain,
+.ui-mobile fieldset.ui-field-contain {
+	display: block;
+	position: relative;
+	overflow: visible;
+	clear: both;
+	padding: .8em 0;
+}
+.ui-field-contain > label ~ [class*="ui-"],
+.ui-field-contain .ui-controlgroup-controls {
+	margin: 0;
+}
+.ui-field-contain:last-child {
+	border-bottom-width: 0;
+}
+@media (min-width: 28em) {
+	.ui-field-contain,
+	.ui-mobile fieldset.ui-field-contain {
+		padding: 0;
+		margin: 1em 0;
+		border-bottom-width: 0;
+	}
+	.ui-field-contain:before,
+	.ui-field-contain:after {
+		content: "";
+		display: table;
+	}
+	.ui-field-contain:after {
+		clear: both;
+	}
+	.ui-field-contain > label,
+	.ui-field-contain .ui-controlgroup-label,
+	.ui-field-contain > .ui-rangeslider > label {
+		float: left;
+		width: 20%;
+		margin: .5em 2% 0 0;
+	}
+	.ui-popup .ui-field-contain > label,
+	.ui-popup .ui-field-contain .ui-controlgroup-label,
+	.ui-popup .ui-field-contain > .ui-rangeslider > label {
+		float: none;
+		width: auto;
+		margin: 0 0 .4em;
+	}
+	.ui-field-contain > label ~ [class*="ui-"],
+	.ui-field-contain .ui-controlgroup-controls {
+		float: left;
+		width: 78%;
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		box-sizing: border-box;
+	}
+	/* ui-hide-label deprecated in 1.4. TODO: Remove in 1.5 */
+	.ui-hide-label > label ~ [class*="ui-"],
+	.ui-hide-label .ui-controlgroup-controls,
+	.ui-popup .ui-field-contain > label ~ [class*="ui-"],
+	.ui-popup .ui-field-contain .ui-controlgroup-controls {
+		float: none;
+		width: 100%;
+	}
+	.ui-field-contain > label ~ .ui-btn-inline {
+		width: auto;
+		margin-right: .625em;
+	}
+	.ui-field-contain > label ~ .ui-btn-inline.ui-btn-icon-notext {
+		width: 1.75em;
+	}
+}
+/* content configurations. */
+.ui-grid-a,
+.ui-grid-b,
+.ui-grid-c,
+.ui-grid-d,
+.ui-grid-solo {
+	overflow: hidden;
+}
+.ui-block-a,
+.ui-block-b,
+.ui-block-c,
+.ui-block-d,
+.ui-block-e {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	float: left;
+	min-height: 1px;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+}
+/* force new row */
+.ui-block-a {
+	clear: left;
+}
+ul.ui-grid-a,
+ul.ui-grid-b,
+ul.ui-grid-c,
+ul.ui-grid-d,
+ul.ui-grid-solo,
+li.ui-block-a,
+li.ui-block-b,
+li.ui-block-c,
+li.ui-block-d,
+li.ui-block-e {
+	margin-left: 0;
+	margin-right: 0;
+	padding: 0;
+	list-style: none;
+}
+/* No margin in grids for 100% width button elements until we can use max-width: fill-available; */
+[class*="ui-block-"] > button.ui-btn {
+	margin-right: 0;
+	margin-left: 0;
+}
+[class*="ui-block-"] > .ui-btn,
+[class*="ui-block-"] > .ui-select,
+[class*="ui-block-"] > .ui-checkbox,
+[class*="ui-block-"] > .ui-radio,
+[class*="ui-block-"] > button.ui-btn-inline,
+[class*="ui-block-"] > button.ui-btn-icon-notext,
+.ui-header [class*="ui-block-"] > button.ui-btn,
+.ui-footer [class*="ui-block-"] > button.ui-btn {
+	margin-right: .3125em;
+	margin-left: .3125em;
+}
+.ui-grid-a > .ui-block-a,
+.ui-grid-a > .ui-block-b {
+	/* width: 49.95%; IE7 */
+	/* margin-right: -.5px; BB5 */
+	width: 50%;
+}
+.ui-grid-b > .ui-block-a,
+.ui-grid-b > .ui-block-b,
+.ui-grid-b > .ui-block-c {
+	/* width: 33.25%; IE7 */
+	/* margin-right: -.5px; BB5 */
+	width: 33.333%;
+}
+.ui-grid-c > .ui-block-a,
+.ui-grid-c > .ui-block-b,
+.ui-grid-c > .ui-block-c,
+.ui-grid-c > .ui-block-d {
+	/* width: 24.925%; IE7 */
+	/* margin-right: -.5px; BB5 */
+	width: 25%;
+}
+.ui-grid-d > .ui-block-a,
+.ui-grid-d > .ui-block-b,
+.ui-grid-d > .ui-block-c,
+.ui-grid-d > .ui-block-d,
+.ui-grid-d > .ui-block-e {
+	/* width: 19.925%; IE7 */
+	width: 20%;
+}
+.ui-grid-solo > .ui-block-a {
+	width: 100%;
+	float: none; 
+}
+/* preset breakpoint to switch to stacked grid styles below 35em (560px) */
+@media (max-width: 35em) {
+	.ui-responsive > .ui-block-a,
+	.ui-responsive > .ui-block-b,
+	.ui-responsive > .ui-block-c,
+	.ui-responsive > .ui-block-d,
+	.ui-responsive > .ui-block-e {
+		width: 100%; 
+		float: none; 
+	}
+}
+/* fixed page header & footer configuration */
+.ui-header-fixed,
+.ui-footer-fixed {
+	left: 0;
+	right: 0;
+	width: 100%;
+	position: fixed;
+	z-index: 1000;
+}
+.ui-header-fixed {
+	top: -1px;
+	padding-top: 1px;
+}
+.ui-header-fixed.ui-fixed-hidden {
+	top: 0;
+	padding-top: 0;
+}
+.ui-header-fixed .ui-btn-left,
+.ui-header-fixed .ui-btn-right {
+	margin-top: 1px;
+}
+.ui-header-fixed.ui-fixed-hidden .ui-btn-left,
+.ui-header-fixed.ui-fixed-hidden .ui-btn-right {
+	margin-top: 0;
+}
+.ui-footer-fixed {
+	bottom: -1px;
+	padding-bottom: 1px;
+}
+.ui-footer-fixed.ui-fixed-hidden {
+	bottom: 0;
+	padding-bottom: 0;
+}
+.ui-header-fullscreen,
+.ui-footer-fullscreen {
+	filter: Alpha(Opacity=90);
+	opacity: .9;
+}
+/* updatePagePadding() will update the padding to actual height of header and footer. */
+.ui-page-header-fixed {
+	padding-top: 2.8125em;
+}
+.ui-page-footer-fixed {
+	padding-bottom: 2.8125em;
+}
+.ui-page-header-fullscreen > .ui-content,
+.ui-page-footer-fullscreen > .ui-content {
+	padding: 0;
+}
+.ui-fixed-hidden {
+	position: absolute;
+}
+/* Tap toggle: hide external fixed footer. See issue #6604 */
+.ui-footer-fixed.ui-fixed-hidden {
+  display: none;
+}
+.ui-page .ui-footer-fixed.ui-fixed-hidden {
+  display: block
+}
+.ui-page-header-fullscreen .ui-fixed-hidden,
+.ui-page-footer-fullscreen .ui-fixed-hidden {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-header-fixed .ui-btn,
+.ui-footer-fixed .ui-btn { 
+	z-index: 10;
+}
+/* workarounds for other widgets */
+.ui-android-2x-fixed .ui-li-has-thumb {
+	-webkit-transform: translate3d(0,0,0);
+}
+.ui-navbar {
+	max-width: 100%;
+}
+.ui-navbar ul:before,
+.ui-navbar ul:after {
+	content: "";
+	display: table;
+}
+.ui-navbar ul:after {
+	clear: both;
+}
+.ui-navbar ul {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+	position: relative;
+	display: block;
+	border: 0;
+	max-width: 100%;
+	overflow: visible;
+}
+.ui-navbar li .ui-btn {
+	font-size: 12.5px;
+	display: block;
+	margin: 0;
+	border-right-width: 0;
+}
+.ui-header .ui-navbar li button.ui-btn,
+.ui-footer .ui-navbar li button.ui-btn {
+	margin: 0;
+	width: 100%;
+}
+.ui-navbar .ui-btn:focus {
+	z-index: 1;
+}
+/* fixes gaps caused by subpixel problem */
+.ui-navbar li:last-child .ui-btn {
+	margin-right: -4px;
+}
+.ui-navbar li:last-child .ui-btn:after {
+	margin-right: 4px;
+}
+.ui-content .ui-navbar li:last-child .ui-btn,
+.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn {
+	border-right-width: 1px;
+	margin-right: 0;
+}
+.ui-content .ui-navbar li:last-child .ui-btn:after,
+.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn:after {
+	margin-right: 0;
+}
+.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn {
+	border-right-width: 1px;
+	margin-right: -1px;
+}
+.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn:after {
+	margin-right: 1px;
+}
+.ui-navbar .ui-grid-duo .ui-btn {
+	border-top-width: 0;
+}
+.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn {
+	border-top-width: 1px;
+}
+.ui-header .ui-navbar .ui-btn,
+.ui-footer .ui-navbar .ui-btn {
+	border-top-width: 0;
+	border-bottom-width: 0;
+}
+.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn {
+	border-top-width: 0;
+}
+.ui-header .ui-title ~ .ui-navbar .ui-btn,
+.ui-footer .ui-title ~ .ui-navbar .ui-btn,
+.ui-header .ui-navbar .ui-grid-duo .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-btn,
+.ui-header .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-footer .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-header .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn,
+.ui-footer .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn {
+	border-top-width: 1px;
+}
+/* Hide the native input element */
+.ui-input-btn input {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	padding: 0;
+	border: 0;
+	outline: 0;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	cursor: pointer;
+	background: #fff;
+	background: rgba(255,255,255,0);
+	filter: Alpha(Opacity=0);
+	opacity: .1;
+	font-size: 1px;
+	text-indent: -9999px;
+	z-index: 2;
+}
+/* Fixes IE/WP filter alpha opacity bugs */
+.ui-input-btn.ui-state-disabled input {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-collapsible {
+	margin: 0 -1em;
+}
+.ui-collapsible-inset,
+.ui-collapsible-set {
+	margin: .5em 0;
+}
+.ui-collapsible-heading {
+	display: block;
+	margin: 0;
+	padding: 0;
+	position: relative;
+}
+.ui-collapsible-heading .ui-btn {
+	text-align: left;
+	margin: 0;
+	border-left-width: 0;
+	border-right-width: 0;
+}
+.ui-collapsible-heading .ui-btn-icon-top,
+.ui-collapsible-heading .ui-btn-icon-bottom {
+	text-align: center;
+}
+.ui-collapsible-inset .ui-collapsible-heading .ui-btn {
+	border-right-width: 1px;
+	border-left-width: 1px;
+}
+.ui-collapsible-collapsed + .ui-collapsible:not(.ui-collapsible-inset) > .ui-collapsible-heading .ui-btn {
+	border-top-width: 0;
+}
+.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn {
+	border-top-width: 1px;
+}
+.ui-collapsible-heading-status {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-collapsible-content {
+	display: block;
+	margin: 0;	
+	padding: .5em 1em;
+}
+.ui-collapsible-themed-content .ui-collapsible-content {
+	border-left-width: 0;
+	border-right-width: 0;
+	border-top-width: 0;
+	border-bottom-width: 1px;
+	border-style: solid;
+}
+.ui-collapsible-inset.ui-collapsible-themed-content .ui-collapsible-content {
+	border-left-width: 1px;
+	border-right-width: 1px;
+}
+.ui-collapsible-inset .ui-collapsible-content {
+	margin: 0;
+}
+.ui-collapsible-content-collapsed {
+	display: none;
+}
+.ui-collapsible-set > .ui-collapsible.ui-corner-all {
+	-webkit-border-radius: 0;
+	border-radius: 0;
+}
+.ui-collapsible-heading,
+.ui-collapsible-heading > .ui-btn {
+	-webkit-border-radius: inherit;	
+	border-radius: inherit;	
+}
+.ui-collapsible-set .ui-collapsible.ui-first-child {
+	-webkit-border-top-right-radius: inherit;	
+	border-top-right-radius: inherit;
+	-webkit-border-top-left-radius: inherit;	
+	border-top-left-radius: inherit;		
+}
+.ui-collapsible-content,
+.ui-collapsible-set .ui-collapsible.ui-last-child {
+	-webkit-border-bottom-right-radius: inherit;	
+	border-bottom-right-radius: inherit;
+	-webkit-border-bottom-left-radius: inherit;	
+	border-bottom-left-radius: inherit;		
+}
+.ui-collapsible-themed-content:not(.ui-collapsible-collapsed) > .ui-collapsible-heading {
+	-webkit-border-bottom-right-radius: 0;	
+	border-bottom-right-radius: 0;
+	-webkit-border-bottom-left-radius: 0;	
+	border-bottom-left-radius: 0;		
+}
+.ui-collapsible-set .ui-collapsible {
+	margin: -1px -1em 0;
+}
+.ui-collapsible-set .ui-collapsible-inset {
+	margin: -1px 0 0;
+}
+.ui-collapsible-set .ui-collapsible.ui-first-child {
+	margin-top: 0;
+}
+.ui-controlgroup,
+fieldset.ui-controlgroup {
+	padding: 0;
+	margin: .5em 0;
+}
+.ui-field-contain .ui-controlgroup,
+.ui-field-contain fieldset.ui-controlgroup {
+	margin: 0;
+}
+.ui-mini .ui-controlgroup-label {
+	font-size: 16px;
+}
+.ui-controlgroup.ui-mini .ui-btn-icon-notext,
+.ui-controlgroup .ui-mini.ui-btn-icon-notext {
+	font-size: inherit;
+}
+.ui-controlgroup-controls .ui-btn,
+.ui-controlgroup-controls .ui-checkbox,
+.ui-controlgroup-controls .ui-radio,
+.ui-controlgroup-controls .ui-select {
+	margin: 0;
+}
+.ui-controlgroup-controls .ui-btn:focus,
+.ui-controlgroup-controls .ui-btn.ui-focus {
+	z-index: 1;
+}
+.ui-controlgroup-controls li {
+	list-style: none;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls {
+	display: inline-block;
+	vertical-align: middle;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls:before,
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after {
+	content: "";
+	display: table;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after {
+	clear: both;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls > .ui-btn,
+.ui-controlgroup-horizontal .ui-controlgroup-controls li > .ui-btn,
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-checkbox,
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-radio,
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-select {
+	float: left;
+	clear: none;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn,
+.ui-controlgroup-controls .ui-btn-icon-notext {
+	width: auto;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn-icon-notext,
+.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn-icon-notext {
+	width: 1.5em;
+}
+ .ui-controlgroup-controls .ui-btn-icon-notext {
+	height: auto;
+	padding: .7em 1em;
+}
+.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn {
+	border-bottom-width: 0;
+}
+.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn.ui-last-child {
+	border-bottom-width: 1px;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn {
+	border-right-width: 0;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn.ui-last-child {
+	border-right-width: 1px;
+}
+.ui-controlgroup-controls .ui-btn-corner-all,
+.ui-controlgroup-controls .ui-btn.ui-corner-all {
+	-webkit-border-radius: 0;
+	border-radius: 0;
+}
+.ui-controlgroup-controls,
+.ui-controlgroup-controls .ui-radio,
+.ui-controlgroup-controls .ui-checkbox,
+.ui-controlgroup-controls .ui-select,
+.ui-controlgroup-controls li {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-first-child {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-last-child {
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-first-child {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-last-child {
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+.ui-controlgroup-controls a.ui-shadow:not(:focus),
+.ui-controlgroup-controls button.ui-shadow:not(:focus),
+.ui-controlgroup-controls div.ui-shadow:not(.ui-focus) {
+	-moz-box-shadow: none;
+	-webkit-box-shadow: none;
+	box-shadow: none;
+}
+/* Fixes legend not wrapping on IE10 */
+.ui-controlgroup-label legend {
+	max-width: 100%;
+}
+.ui-controlgroup-controls > label {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-dialog {
+	 background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */
+}
+.ui-dialog-contain {
+	width: 92.5%;
+	max-width: 500px;
+	margin: 10% auto 1em auto;
+	padding: 0;
+	position: relative;
+	top: -1em;
+}
+.ui-dialog-contain > .ui-header, 
+.ui-dialog-contain > .ui-content, 
+.ui-dialog-contain > .ui-footer { 
+	display: block;
+	position: relative; 
+	width: auto;
+	margin: 0;
+}
+.ui-dialog-contain > .ui-header {
+	overflow: hidden;
+	z-index: 10; 
+	padding: 0;
+	border-top-width: 0;
+}
+.ui-dialog-contain > .ui-footer {
+	z-index: 10; 
+	padding: 0 1em; 
+	border-bottom-width: 0;
+}
+.ui-popup-open .ui-header-fixed,
+.ui-popup-open .ui-footer-fixed {
+	position: absolute !important; /* See issues #4816, #4844 and #4874 and popup.js */
+}
+.ui-popup-screen {
+	background-image: url("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="); /* Necessary to set some form of background to ensure element is clickable in IE6/7. While legacy IE won't understand the data-URI'd image, it ensures no additional requests occur in all other browsers with little overhead. */
+	top: 0;
+	left: 0;
+	right: 0;
+	bottom: 1px;
+	position: absolute;
+	filter: Alpha(Opacity=0);
+	opacity: 0;
+	z-index: 1099;
+}
+.ui-popup-screen.in {
+	opacity: 0.5;
+	filter: Alpha(Opacity=50);
+}
+.ui-popup-screen.out {
+	opacity: 0;
+	filter: Alpha(Opacity=0);
+}
+.ui-popup-container {
+	z-index: 1100;
+	display: inline-block;
+	position: absolute;
+	padding: 0;
+	outline: 0;
+}
+.ui-popup {
+	position: relative;
+}
+.ui-popup.ui-body-inherit {
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-popup-hidden {
+	left: 0;
+	top: 0;
+	position: absolute !important;
+	visibility: hidden;
+}
+.ui-popup-truncate {
+	height: 1px;
+	width: 1px;
+	margin: -1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-popup.ui-content,
+.ui-popup .ui-content {
+	overflow: visible;
+}
+.ui-popup > .ui-header {
+	border-top-width: 0;
+}
+.ui-popup > .ui-footer {
+	border-bottom-width: 0;
+}
+.ui-popup > p,
+.ui-popup > h1,
+.ui-popup > h2,
+.ui-popup > h3,
+.ui-popup > h4,
+.ui-popup > h5,
+.ui-popup > h6 {
+	margin: .5em .4375em;
+}
+.ui-popup > span {
+	display: block;
+	margin: .5em .4375em;
+}
+.ui-popup-container .ui-content > p,
+.ui-popup-container .ui-content > h1,
+.ui-popup-container .ui-content > h2,
+.ui-popup-container .ui-content > h3,
+.ui-popup-container .ui-content > h4,
+.ui-popup-container .ui-content > h5,
+.ui-popup-container .ui-content > h6 {
+	margin: .5em 0;
+}
+.ui-popup-container .ui-content > span {
+	margin: 0;
+}
+.ui-popup-container .ui-content > p:first-child,
+.ui-popup-container .ui-content > h1:first-child,
+.ui-popup-container .ui-content > h2:first-child,
+.ui-popup-container .ui-content > h3:first-child,
+.ui-popup-container .ui-content > h4:first-child,
+.ui-popup-container .ui-content > h5:first-child,
+.ui-popup-container .ui-content > h6:first-child {
+	margin-top: 0;
+}
+.ui-popup-container .ui-content > p:last-child,
+.ui-popup-container .ui-content > h1:last-child,
+.ui-popup-container .ui-content > h2:last-child,
+.ui-popup-container .ui-content > h3:last-child,
+.ui-popup-container .ui-content > h4:last-child,
+.ui-popup-container .ui-content > h5:last-child,
+.ui-popup-container .ui-content > h6:last-child {
+	margin-bottom: 0;
+}
+.ui-popup > img {
+	max-width: 100%;
+	max-height: 100%;
+	vertical-align: middle;
+}
+.ui-popup:not(.ui-content) > img:only-child,
+.ui-popup:not(.ui-content) > .ui-btn-left:first-child + img:last-child,
+.ui-popup:not(.ui-content) > .ui-btn-right:first-child + img:last-child {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+.ui-popup iframe {
+	vertical-align: middle;
+}
+.ui-popup > .ui-btn-left,
+.ui-popup > .ui-btn-right {
+	position: absolute; 
+	top: -11px;
+	margin: 0;
+	z-index: 1101;
+}
+.ui-popup > .ui-btn-left {
+	left: -11px;
+}
+.ui-popup > .ui-btn-right {
+	right: -11px;
+}
+/* Dimensions related to the popup arrow
+-----------------------------------------------------------------------------------------------------------*/
+/* desired triangle height: 10px */
+/**
+ * guide for the arrow - its width, height, and offset are theme-dependent and
+ * should be expessed as left, right, top, bottom, so that the element bearing
+ * such a class becomes stretched inside its parent position: relative element.
+ * The left/top/right/bottom specified below should reflect the corresponding
+ * border radii and so it leaves room for the shadow:
+ *     ..--------------------..
+ *   ."        ^ top           ".
+ *  /          v                 \
+ * |     +------------------+     |
+ * |     |                  |     |
+ * | left|                  |right|
+ * |<--->|                  |<--->|
+ * |     +------------------+     |
+ *  \          ^                 /
+ *   `.        v bottom        .'
+ *     ""--------------------""
+ * The idea is that the top/left of the arrow container box does not move to a
+ * coordinate smaller than the top/left of the guide and the right/bottom of
+ * the arrow container box does not move to a coordinate larger than the
+ * bottom/right of the guide. This will help us avoid the following situation:
+ *        ..--------------------..
+ *      ."        ^ top           ".
+ *   /|/          v                 \
+ *  / |     +------------------+     |
+ *  \ |     |                  |     |
+ *   \| left|                  |right|
+ *    |<--->|                  |<--->|
+ *    |     +------------------+     |
+ *     \          ^                 /
+ *      `.        v bottom        .'
+ *        ""--------------------""
+ * The arrow should not receive a top/left coordinate such that it is too close
+ * to one of the corners, because then at first the shadow of the arrow and,
+ * given a coordinate even closer to the corner, even the body of the arrow will
+ * "stick out" of the corner of the popup. The guide provides a hint to the
+ * arrow positioning code as to which range of values is acceptable for the
+ * arrow container's top/left coordinate.
+ **/
+.ui-popup-arrow-container {
+	width: 20px;
+	height: 20px;
+}
+/* aside from the "infinities" (-1000,2000), triangle height is used */
+.ui-popup-arrow-container.ui-popup-arrow-l {
+	left: -10px;
+	clip: rect(-1000px,10px,2000px,-1000px);
+}
+.ui-popup-arrow-container.ui-popup-arrow-t {
+	top: -10px;
+	clip: rect(-1000px,2000px,10px,-1000px);
+}
+.ui-popup-arrow-container.ui-popup-arrow-r {
+	right: -10px;
+	clip: rect(-1000px,2000px,2000px,10px);
+}
+.ui-popup-arrow-container.ui-popup-arrow-b {
+	bottom: -10px;
+	clip: rect(10px,2000px,1000px,-1000px);
+}
+/**
+ * For each side, the arrow is twice the desired size and its corner is aligned
+ * with the edge of the container:
+ *                                           
+ *           /\         /\                +----+       /\
+ *          /  \       /  \               | /\ |top   /  \
+ *      +----+  \     /  +----+       +-->|/  \|     /    \
+ *  left| /  |   \   /   |  \ |right  |   |    |    /      \
+ *      |/   |    \ /    |   \|       |  /|    |\  /        \
+ *      |\   |    / \    |   /|       | / +----+ \ \ +----+ /
+ *      | \  |   /   \   |  / |       | \        /  \|    |/
+ *      +----+  /     \  +----+       |  \      /    |    |
+ *       ^  \  /       \  /  ^        |   \    /  +->|\  /|
+ *       |   \/         \/   |        |    \  /   |  | \/ |bottom
+ *       |                   |        |     \/    |  +----+
+ *       +-------------------+--------+-----------+
+ *                           |
+ *                    arrow container
+ *                     (clips arrow)
+ **/
+.ui-popup-arrow-container .ui-popup-arrow {
+	/* (4*desired triangle height)/sqrt(2) - does not account for border - centred within the outer rectangle */
+	width: 28.284271247px;
+	height: 28.284271247px;
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-popup-arrow-container.ui-popup-arrow-t .ui-popup-arrow {
+	left: -4.142135623px;
+	top: 5.857864376px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-b .ui-popup-arrow {
+	left: -4.142135623px;
+	top: -14.142135623px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-l .ui-popup-arrow {
+	left: 5.857864376px;
+	top: -4.142135623px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-r .ui-popup-arrow {
+	left: -14.142135623px;
+	top: -4.142135623px;
+}
+/* Fix rotation center for oldIE - see http://www.useragentman.com/IETransformsTranslator/ */
+.ui-popup-arrow-container.ui-popup-arrow-t.ie .ui-popup-arrow {
+    margin-left: -5.857864376269049px;
+    margin-top: -7.0710678118654755px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-b.ie .ui-popup-arrow {
+    margin-left: -5.857864376269049px;
+    margin-top: -4.142135623730951px;
+}
+ 
+.ui-popup-arrow-container.ui-popup-arrow-l.ie .ui-popup-arrow {
+    margin-left: -7.0710678118654755px;
+    margin-top: -5.857864376269049px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-r.ie .ui-popup-arrow {
+    margin-left: -4.142135623730951px;
+    margin-top: -5.857864376269049px;
+}
+/* structure */
+.ui-popup > .ui-popup-arrow-guide {
+	position: absolute;
+	left: 0;
+	right: 0;
+	top: 0;
+	bottom: 0;
+	visibility: hidden;
+}
+.ui-popup-arrow-container {
+	position: absolute;
+}
+.ui-popup-arrow {
+	-webkit-transform: rotate(45deg);
+	-moz-transform: rotate(45deg);
+	-ms-transform: rotate(45deg);
+	transform: rotate(45deg);
+	position: absolute;
+	overflow: hidden;
+	box-sizing: border-box;
+}
+.ui-popup-arrow-container.ie .ui-popup-arrow {
+	-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.7071067811865474, M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865474, SizingMethod='auto expand')";
+	filter: progid:DXImageTransform.Microsoft.Matrix(
+	      	M11=0.7071067811865474,
+        	M12=-0.7071067811865477,
+        	M21=0.7071067811865477,
+        	M22=0.7071067811865474,
+        	SizingMethod='auto expand');
+}
+.ui-checkbox,
+.ui-radio {
+	margin: .5em 0;
+	position: relative;
+}
+.ui-checkbox .ui-btn,
+.ui-radio .ui-btn {
+	margin: 0;
+	text-align: left;
+	white-space: normal; /* Nowrap + ellipsis doesn't work on label. Issue #1419. */
+	z-index: 2;
+}
+.ui-controlgroup .ui-checkbox .ui-btn.ui-focus,
+.ui-controlgroup .ui-radio .ui-btn.ui-focus {
+	z-index: 3;
+}
+.ui-checkbox .ui-btn-icon-top,
+.ui-radio .ui-btn-icon-top,
+.ui-checkbox .ui-btn-icon-bottom,
+.ui-radio .ui-btn-icon-bottom {
+	text-align: center;
+}
+.ui-controlgroup-horizontal .ui-checkbox .ui-btn:after,
+.ui-controlgroup-horizontal .ui-radio .ui-btn:after {
+	content: none;
+	display: none;
+}
+/* Native input positioning */
+.ui-checkbox input,
+.ui-radio input {
+	position: absolute;
+	left: .466em;
+	top: 50%;
+	width: 22px;
+	height: 22px;
+	margin: -11px 0 0 0;
+	outline: 0 !important;
+	z-index: 1;
+}
+.ui-controlgroup-horizontal .ui-checkbox input,
+.ui-controlgroup-horizontal .ui-radio input {
+	left: 50%;
+	margin-left: -9px;
+}
+.ui-checkbox input:disabled,
+.ui-radio input:disabled {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-select {
+	margin-top: .5em;
+	margin-bottom: .5em; /* no shorthand for margin because it would override margin-right for inline selects */
+	position: relative;
+}
+.ui-select > select {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-select .ui-btn {
+	margin: 0;
+	opacity: 1; /* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including "inherit") without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */
+}
+.ui-select .ui-btn select {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 100%;
+	min-height: 1.5em;
+	min-height: 100%;
+	height: 3em;
+	max-height: 100%;
+	outline: 0;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	cursor: pointer;
+	filter: Alpha(Opacity=0);
+	opacity: 0;
+	z-index: 2;
+}
+@-moz-document url-prefix() {
+	.ui-select .ui-btn select {
+		opacity: 0.0001;
+	}
+}
+/* Display none because of issues with IE/WP's filter alpha opacity */
+.ui-select .ui-state-disabled select {
+	display: none;
+}
+/* Because we add all classes of the select and option elements to the span... */ 
+.ui-select span.ui-state-disabled {
+	filter: Alpha(Opacity=100);
+	opacity: 1;
+}
+.ui-select .ui-btn.ui-select-nativeonly {
+	border-radius: 0;
+	border: 0;
+}
+.ui-select .ui-btn.ui-select-nativeonly select {
+	opacity: 1;
+	text-indent: 0;
+	display: block;
+}
+/* ui-li-count is styled in the listview CSS. We set padding and offset here because select supports icon position while listview doesn't. */
+.ui-select .ui-li-has-count.ui-btn {
+	padding-right: 2.8125em;
+}
+.ui-select .ui-li-has-count.ui-btn-icon-right {
+	padding-right: 4.6875em;
+}
+.ui-select .ui-btn-icon-right .ui-li-count {
+	right: 3.2em;
+}
+/* We set the rules for the span as well to fix an issue on Chrome with text-overflow ellipsis for the button in combination with text-align center. */
+.ui-select .ui-btn > span:not(.ui-li-count) {
+	display: block;
+	text-overflow: ellipsis;
+	overflow: hidden !important;
+	white-space: nowrap;
+}
+.ui-selectmenu.ui-popup {
+	min-width: 11em;
+}
+.ui-selectmenu .ui-dialog-contain {
+	overflow: hidden;
+}
+.ui-selectmenu .ui-header {
+	margin: 0;
+	padding: 0;
+	border-width: 0;
+}
+.ui-selectmenu.ui-dialog .ui-header {
+	z-index: 1;
+	position: relative;
+}
+.ui-selectmenu.ui-popup .ui-header {
+	-webkit-border-bottom-right-radius: 0;
+	border-bottom-right-radius: 0;
+	-webkit-border-bottom-left-radius: 0;
+	border-bottom-left-radius: 0;
+}
+/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button.  this shim's content in there */
+.ui-selectmenu.ui-popup .ui-header h1:after {
+	content: '.';
+	visibility: hidden;
+}
+.ui-selectmenu .ui-header .ui-title {
+	margin: 0 2.875em;
+}
+.ui-selectmenu.ui-dialog .ui-content {
+	overflow: visible;
+	z-index: 1;
+}
+.ui-selectmenu .ui-selectmenu-list {
+	margin: 0;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+}
+.ui-header:not(.ui-screen-hidden) + .ui-selectmenu-list {
+	-webkit-border-top-right-radius: 0;
+	border-top-right-radius: 0;
+	-webkit-border-top-left-radius: 0;
+	border-top-left-radius: 0;
+}
+.ui-header.ui-screen-hidden + .ui-selectmenu-list li.ui-first-child .ui-btn {
+	border-top-width: 0;
+}
+.ui-selectmenu .ui-selectmenu-list li.ui-last-child .ui-btn {
+	border-bottom-width: 0;
+}
+.ui-selectmenu .ui-btn.ui-li-divider {
+	cursor: default;
+}
+.ui-selectmenu .ui-selectmenu-placeholder {
+	display: none;
+}
+.ui-listview,
+.ui-listview > li {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+}
+.ui-content .ui-listview,
+.ui-panel-inner > .ui-listview {
+	margin: -1em;
+}
+.ui-content .ui-listview-inset,
+.ui-panel-inner > .ui-listview-inset {
+	margin: 1em 0;
+}
+.ui-collapsible-content > .ui-listview {
+	margin: -.5em -1em;
+}
+.ui-collapsible-content > .ui-listview-inset {
+	margin: .5em 0;
+}
+.ui-listview > li {
+	display: block;
+	position: relative;
+	overflow: visible;
+}
+.ui-listview > .ui-li-static,
+.ui-listview > .ui-li-divider,
+.ui-listview > li > a.ui-btn {
+	margin: 0;
+	display: block;
+	position: relative;
+	text-align: left;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+}
+.ui-listview > li > .ui-btn:focus {
+	z-index: 1;
+}
+.ui-listview > .ui-li-static,
+.ui-listview > .ui-li-divider,
+.ui-listview > li > a.ui-btn {
+	border-width: 1px 0 0 0;
+	border-style: solid;
+}
+.ui-listview-inset > .ui-li-static,
+.ui-listview-inset > .ui-li-divider,
+.ui-listview-inset > li > a.ui-btn {
+	border-right-width: 1px;
+	border-left-width: 1px;
+}
+.ui-listview > .ui-li-static.ui-last-child,
+.ui-listview > .ui-li-divider.ui-last-child,
+.ui-listview > li.ui-last-child > a.ui-btn {
+	border-bottom-width: 1px;
+}
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > li.ui-first-child,
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > li.ui-first-child > a.ui-btn {
+	border-top-width: 0;
+}
+.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > li.ui-last-child,
+.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > li.ui-last-child > a.ui-btn {
+	border-bottom-width: 0;
+}
+.ui-listview > li.ui-first-child,
+.ui-listview > li.ui-first-child > a.ui-btn {
+	-webkit-border-top-right-radius: inherit;	
+	border-top-right-radius: inherit;
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+}
+.ui-listview > li.ui-last-child,
+.ui-listview > li.ui-last-child > a.ui-btn {
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+}
+.ui-listview > li.ui-li-has-alt > a.ui-btn {
+	-webkit-border-top-right-radius: 0;
+	border-top-right-radius: 0;
+	-webkit-border-bottom-right-radius: 0;
+	border-bottom-right-radius: 0;
+}
+.ui-listview > li.ui-first-child > a.ui-btn + a.ui-btn {
+	-webkit-border-top-left-radius: 0;	
+	border-top-left-radius: 0;
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+}
+.ui-listview > li.ui-last-child > a.ui-btn + a.ui-btn {
+	-webkit-border-bottom-left-radius: 0;
+	border-bottom-left-radius: 0;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+.ui-listview > li.ui-first-child img:first-child:not(.ui-li-icon) {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;	
+}
+.ui-listview > li.ui-last-child img:first-child:not(.ui-li-icon) {
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;	
+}
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+}
+.ui-listview > .ui-li-static {
+	padding: .7em 1em;
+}
+.ui-listview > .ui-li-divider {
+	padding: .5em 1.143em;
+	font-size: 14px;
+	font-weight: bold;
+	cursor: default;
+	outline: 0; /* Dividers in custom selectmenus have tabindex */
+}
+.ui-listview > .ui-li-has-count > .ui-btn,
+.ui-listview > .ui-li-static.ui-li-has-count,
+.ui-listview > .ui-li-divider.ui-li-has-count {
+	padding-right: 2.8125em;
+}
+.ui-listview > .ui-li-has-count > .ui-btn-icon-right {
+	padding-right: 4.6875em;
+}
+.ui-listview > .ui-li-has-thumb > .ui-btn,
+.ui-listview > .ui-li-static.ui-li-has-thumb {
+	min-height: 3.625em;
+	padding-left: 6.25em;
+}
+/* ui-li-has-icon deprecated in 1.4. TODO: remove in 1.5 */
+.ui-listview > .ui-li-has-icon > .ui-btn,
+.ui-listview > .ui-li-static.ui-li-has-icon {
+	min-height: 1.25em;
+	padding-left: 2.5em;
+}
+/* Used by both listview and custom multiple select button */
+.ui-li-count {
+	position: absolute;
+	font-size: 12.5px;
+	font-weight: bold;
+	text-align: center;
+	border-width: 1px;
+	border-style: solid;
+	padding: 0 .48em;
+	line-height: 1.6em;
+	min-height: 1.6em;
+	min-width: .64em;
+	right: .8em;
+	top: 50%;
+	margin-top: -.88em;
+}
+.ui-listview .ui-btn-icon-right .ui-li-count {
+	right: 3.2em;
+}
+.ui-listview .ui-li-has-thumb > img:first-child,
+.ui-listview .ui-li-has-thumb > .ui-btn > img:first-child,
+.ui-listview .ui-li-has-thumb .ui-li-thumb {
+	position: absolute;
+	left: 0;
+	top: 0;
+	max-height: 5em;
+	max-width: 5em;
+}
+/* ui-li-has-icon deprecated in 1.4. TODO: remove in 1.5 */
+.ui-listview > .ui-li-has-icon > img:first-child,
+.ui-listview > .ui-li-has-icon > .ui-btn > img:first-child {
+	position: absolute;
+	left: .625em;
+	top: .9em;
+	max-height: 1em;
+	max-width: 1em;
+}
+.ui-listview > li h1,
+.ui-listview > li h2,
+.ui-listview > li h3,
+.ui-listview > li h4,
+.ui-listview > li h5,
+.ui-listview > li h6 {
+	font-size: 1em;
+	font-weight: bold;
+	display: block;
+	margin: .45em 0;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+}
+.ui-listview > li p {
+	font-size: .75em;
+	font-weight: normal;
+	display: block;
+	margin: .6em 0;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+}
+.ui-listview .ui-li-aside {
+	position: absolute;
+	top: 1em;
+	right: 3.333em;
+	margin: 0;
+	text-align: right;
+}
+.ui-listview > li.ui-li-has-alt > .ui-btn {
+	margin-right: 2.5em;
+	border-right-width: 0;
+}
+.ui-listview > li.ui-li-has-alt > .ui-btn + .ui-btn {
+	position: absolute;
+	width: 2.5em;
+	height: 100%;
+	min-height: auto;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	border-left-width: 1px;
+	top: 0;
+	right: 0;
+	margin: 0;
+	padding: 0;
+	z-index: 2;
+}
+.ui-listview-inset > li.ui-li-has-alt > .ui-btn + .ui-btn {
+	border-right-width: 1px;
+}
+.ui-listview > li.ui-li-has-alt > .ui-btn + .ui-btn:focus {
+	z-index: 3;
+}
+ol.ui-listview,
+ol.ui-listview > .ui-li-divider {
+	counter-reset: listnumbering;
+}
+ol.ui-listview > li > .ui-btn,
+ol.ui-listview > li.ui-li-static {
+	vertical-align: middle;
+}
+ol.ui-listview > li > .ui-btn:first-child:before,
+ol.ui-listview > li.ui-li-static:before,
+ol.ui-listview > li.ui-field-contain > label:before,
+ol.ui-listview > li.ui-field-contain > .ui-controlgroup-label:before {
+	display: inline-block;
+	font-size: .9em;
+	font-weight: normal;
+	padding-right: .3em;
+	min-width: 1.4em;
+	line-height: 1.5;
+	vertical-align: middle;
+	counter-increment: listnumbering;
+	content: counter(listnumbering) ".";
+}
+ol.ui-listview > li.ui-field-contain:before {
+	content: none;
+	display: none;
+}
+ol.ui-listview > li h1:first-child,
+ol.ui-listview > li h2:first-child,
+ol.ui-listview > li h3:first-child,
+ol.ui-listview > li h4:first-child,
+ol.ui-listview > li h5:first-child,
+ol.ui-listview > li h6:first-child,
+ol.ui-listview > li p:first-child,
+ol.ui-listview > li img:first-child + * {
+	display: inline-block;
+	vertical-align: middle;
+}
+ol.ui-listview > li h1:first-child ~ *,
+ol.ui-listview > li h2:first-child ~ *,
+ol.ui-listview > li h3:first-child ~ *,
+ol.ui-listview > li h4:first-child ~ *,
+ol.ui-listview > li h5:first-child ~ *,
+ol.ui-listview > li h6:first-child ~ *,
+ol.ui-listview > li p:first-child ~ *,
+ol.ui-listview > li img:first-child + * ~ * {
+	margin-top: 0;
+	text-indent: 2.04em; /* (1.4em + .3em) * .9em / .75em */
+}
+html .ui-filterable + .ui-listview,
+html .ui-filterable.ui-listview {
+	margin-top: .5em;
+}
+.ui-collapsible-content > form.ui-filterable {
+	margin-top: -.5em;
+}
+.ui-collapsible-content > .ui-input-search.ui-filterable {
+	margin-top: 0;
+}
+.ui-collapsible-content > .ui-filterable + .ui-listview:not(.ui-listview-inset) > li.ui-first-child,
+.ui-collapsible-content > .ui-filterable + .ui-listview:not(.ui-listview-inset) > li.ui-first-child > a.ui-btn,
+.ui-collapsible-content > .ui-filterable.ui-listview:not(.ui-listview-inset) > li.ui-first-child,
+.ui-collapsible-content > .ui-filterable.ui-listview:not(.ui-listview-inset) > li.ui-first-child > a.ui-btn {
+	border-top-width: 1px;
+}
+div.ui-slider {
+	height: 30px;
+	margin: .5em 0;
+	padding: 0;
+	-ms-touch-action: pan-y pinch-zoom double-tap-zoom;
+}
+div.ui-slider:before,
+div.ui-slider:after {
+	content: "";
+	display: table;
+}
+div.ui-slider:after {
+	clear: both;
+}
+input.ui-slider-input {
+	display: block;
+	float: left;
+	font-size: 14px;
+	font-weight: bold;
+	margin: 0;
+	padding: 4px;
+	width: 40px;
+	height: 20px;
+	line-height: 20px;
+	border-width: 1px;
+	border-style: solid;
+	outline: 0;
+	text-align: center;
+	vertical-align: text-bottom;
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	appearance: none;
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+}
+.ui-slider-input::-webkit-outer-spin-button,
+.ui-slider-input::-webkit-inner-spin-button {
+	-webkit-appearance: none;
+	margin: 0;
+}
+.ui-slider-track {
+	position: relative;
+	overflow: visible;
+	border-width: 1px;
+	border-style: solid;
+	height: 15px;
+	margin: 0 15px 0 68px;
+	top: 6px;
+}
+.ui-slider-track.ui-mini {
+	height: 12px;
+	top: 8px;
+}
+.ui-slider-track .ui-slider-bg {
+	height: 100%;
+}
+/* High level of specificity to override button margins in grids */
+.ui-slider-track .ui-btn.ui-slider-handle {
+	position: absolute;
+	z-index: 1;
+	top: 50%;
+	width: 28px;
+	height: 28px;
+	margin: -15px 0 0 -15px;
+	outline: 0;
+	padding: 0;
+}
+.ui-slider-track.ui-mini .ui-slider-handle {
+	height: 14px;
+	width: 14px;
+	margin: -8px 0 0 -8px;
+}
+select.ui-slider-switch {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+div.ui-slider-switch {
+	display: inline-block;
+	height: 32px;
+	width: 5.8em;
+	top: 0;
+}
+/* reset the clearfix */
+div.ui-slider-switch:before,
+div.ui-slider-switch:after {
+	display: none;
+	clear: none;
+}
+div.ui-slider-switch.ui-mini {
+	height: 29px;
+	top: 0;
+}
+.ui-slider-inneroffset {
+	margin: 0 16px;
+	position: relative;
+	z-index: 1;
+}
+.ui-slider-switch.ui-mini .ui-slider-inneroffset {
+	margin: 0 15px 0 14px;
+}
+.ui-slider-switch .ui-btn.ui-slider-handle {
+	margin: 1px 0 0 -15px;
+}
+.ui-slider-switch.ui-mini .ui-slider-handle {
+	width: 25px;
+	height: 25px;
+	margin: 1px 0 0 -13px;
+	padding: 0;
+}
+.ui-slider-handle-snapping {
+	-webkit-transition: left 70ms linear;
+	-moz-transition: left 70ms linear;
+	transition: left 70ms linear;
+}
+.ui-slider-switch .ui-slider-label {
+	position: absolute;
+	text-align: center;
+	width: 100%;
+	overflow: hidden;
+	font-size: 16px;
+	top: 0;
+	line-height: 2;
+	min-height: 100%;
+	white-space: nowrap;
+	cursor: pointer;
+}
+.ui-slider-switch.ui-mini .ui-slider-label {
+	font-size: 14px;
+}
+.ui-slider-switch .ui-slider-label-a {
+	z-index: 1;
+	left: 0;
+	text-indent: -1.5em;
+}
+.ui-slider-switch .ui-slider-label-b {
+	z-index: 0;
+	right: 0;
+	text-indent: 1.5em;
+}
+/* The corner radii for ui-slider-switch/track can be specified in theme CSS. The bg and handle inherits. */
+.ui-slider-track .ui-slider-bg,
+.ui-slider-switch .ui-slider-label,
+.ui-slider-switch .ui-slider-inneroffset,
+.ui-slider-handle {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+.ui-field-contain div.ui-slider-switch {
+	margin: 0;
+}
+/* ui-hide-label deprecated in 1.4. TODO: Remove in 1.5 */
+.ui-field-contain div.ui-slider-switch,
+.ui-field-contain.ui-hide-label div.ui-slider-switch,
+html .ui-popup .ui-field-contain div.ui-slider-switch {
+	display: inline-block;
+	width: 5.8em;
+}
+/* slider tooltip
+-----------------------------------------------------------------------------------------------------------*/
+.ui-slider-popup {
+	width: 64px;
+	height: 64px;
+	font-size: 36px;
+	padding-top: 14px;
+	opacity: 0.8;
+}
+.ui-slider-popup {
+	position: absolute !important;
+	text-align: center;
+	z-index: 100;
+}
+.ui-slider-track .ui-btn.ui-slider-handle {
+	font-size: .9em;
+	line-height: 30px;
+}
+.ui-rangeslider {
+	margin: .5em 0;
+}
+.ui-rangeslider:before,
+.ui-rangeslider:after {
+	content: "";
+	display: table;
+}
+.ui-rangeslider:after {
+	clear: both;
+}
+.ui-rangeslider .ui-slider-input.ui-rangeslider-last {
+	float: right;
+}
+.ui-rangeslider .ui-rangeslider-sliders {
+	position: relative;
+	overflow: visible;
+	height: 30px;
+	margin: 0 68px;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track {
+	position: absolute;
+	top: 6px;
+	right: 0;
+	left: 0;
+	margin: 0;
+}
+.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track {
+	top: 8px;
+}
+.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg {
+	display: none;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+	background-color: transparent;
+	background: none;
+	border-width: 0;
+	height: 0;
+}
+/* this makes ie6 and ie7 set height to 0 to fix z-index problem */
+html >/**/body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+	height: 15px;
+	border-width: 1px;
+}
+html >/**/body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child {
+	height: 12px;
+}
+/* Hide the second label (the first is moved outside the div) */
+div.ui-rangeslider label {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-field-contain .ui-rangeslider input.ui-slider-input,
+.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,
+.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,
+.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+	margin-top: 0;
+	margin-bottom: 0;
+}
+.ui-input-text,
+.ui-input-search {
+	margin: .5em 0;
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-mini {
+	margin: .446em;
+}
+.ui-input-text input,
+.ui-input-search input,
+textarea.ui-input-text {
+	padding: .4em;
+	line-height: 1.4em;
+	display: block;
+	width: 100%;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	outline: 0;
+}
+.ui-input-text input,
+.ui-input-search input {
+	margin: 0;
+	min-height: 2.2em;
+	text-align: left; /* Opera aligns type="date" right by default */
+	border: 0;
+	background: transparent none;
+	-webkit-appearance: none;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+textarea.ui-input-text {
+	overflow: auto;
+	resize: vertical;
+}
+.ui-mini .ui-input-text input,
+.ui-mini .ui-input-search input,
+.ui-input-text.ui-mini input,
+.ui-input-search.ui-mini input,
+.ui-mini textarea.ui-input-text,
+textarea.ui-mini {
+	font-size: 14px;
+}
+/* Same margin for mini textareas as other mini sized widgets (12.5/14 * 0.5em) */
+.ui-mini textarea.ui-input-text,
+textarea.ui-mini {
+	margin: .446em 0;
+}
+.ui-input-has-clear,
+.ui-input-search {
+	position: relative;
+}
+/* Padding on the div instead of input because of browser spinners etc. */
+.ui-input-has-clear {
+	padding-right: 2.375em;
+}
+.ui-mini.ui-input-has-clear {
+	padding-right: 2.923em;
+}
+.ui-input-has-clear input {
+	padding-right: 0;
+	/* Autofill on Chrome has bg color so we unset corners right as well. */
+	-webkit-border-top-right-radius: 0;
+	border-top-right-radius: 0;
+	-webkit-border-bottom-right-radius: 0;
+	border-bottom-right-radius: 0;
+}
+/* Search icon */
+.ui-input-search input {
+	padding-left: 1.75em;
+}
+.ui-input-search:after {
+	position: absolute;
+	left: .3125em;
+	top: 50%;
+	margin-top: -7px;
+	content: "";
+	background-position: center center;
+	background-repeat: no-repeat;
+	width: 14px;
+	height: 14px;
+	filter: Alpha(Opacity=50);
+	opacity: .5;
+}
+.ui-input-search.ui-input-has-clear .ui-btn.ui-input-clear,
+.ui-input-text.ui-input-has-clear .ui-btn.ui-input-clear {
+	position: absolute;
+	right: 0;
+	top: 50%;
+	margin: -14px .3125em 0;
+	border: 0;
+	background-color: transparent;
+}
+.ui-input-search .ui-input-clear-hidden,
+.ui-input-text .ui-input-clear-hidden {
+	display: none;
+}
+/* Resolves issue #5166: Added to support issue introduced in Firefox 15. We can likely remove this in the future. */
+.ui-input-text input::-moz-placeholder,
+.ui-input-search input::-moz-placeholder,
+textarea.ui-input-text::-moz-placeholder {
+	color: #aaa;
+}
+/* Same for IE10 */
+.ui-input-text input:-ms-input-placeholder,
+.ui-input-search input:-ms-input-placeholder,
+textarea.ui-input-text:-ms-input-placeholder {
+	color: #aaa;
+}
+/* Resolves issue #5131: Width of textinput depends on its type,
+for Android 4.1 */
+.ui-input-text input[type=number]::-webkit-outer-spin-button {
+	margin: 0;
+}
+/* Resolves issue #5756: Textinput in IE10 has a default clear button */
+.ui-input-text input::-ms-clear,
+.ui-input-search input::-ms-clear {
+	display: none;
+}
+.ui-input-text input:focus,
+.ui-input-search input:focus {
+	-webkit-box-shadow: none;
+	-moz-box-shadow: none;
+	box-shadow: none;
+}
+textarea.ui-input-text.ui-textinput-autogrow {
+	overflow: hidden;
+}
+.ui-textinput-autogrow-resize {
+	-webkit-transition: height 0.25s;
+	-o-transition: height 0.25s;
+	-moz-transition: height 0.25s;
+	transition: height 0.25s;
+}
+.ui-flipswitch {
+	display: inline-block;
+	vertical-align: middle;
+	width: 5.875em; /* Override this and padding-left in next rule if you use labels other than "on/off" and need more space */
+	height: 1.875em;
+	border-width: 1px;
+	border-style: solid;
+	margin: .5em 0;
+	overflow: hidden;
+	-webkit-transition-property: padding, width, background-color, color, border-color;
+	-moz-transition-property: padding, width, background-color, color, border-color;
+	-o-transition-property: padding, width, background-color, color, border-color;
+	transition-property: padding, width, background-color, color, border-color;
+	-webkit-transition-duration: 100ms;
+	-moz-transition-duration: 100ms;
+	-o-transition-duration: 100ms;
+	transition-duration: 100ms;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+	cursor: pointer;
+}
+.ui-flipswitch.ui-flipswitch-active {
+	padding-left: 4em;  /* Override this and width in previous rule if you use labels other than "on/off" and need more space */
+	width: 1.875em;
+}
+.ui-flipswitch-input {
+	position: absolute;
+	height: 1px;
+	width: 1px;
+	margin: -1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+	border: 0;
+	outline: 0;
+	filter: Alpha(Opacity=0);
+	opacity: 0;
+}
+.ui-flipswitch .ui-btn.ui-flipswitch-on,
+.ui-flipswitch .ui-flipswitch-off {
+	float: left;
+	height: 1.75em;
+	margin: .0625em;
+	line-height: 1.65em;
+}
+.ui-flipswitch .ui-btn.ui-flipswitch-on {
+	width: 1.75em;
+	padding: 0;
+	text-indent: -2.6em; /* Override this to center text if you use a label other than "on" */
+	text-align: left;
+	border-width: 1px;
+	border-style: solid;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	border-radius: inherit;
+	overflow: visible;
+	color: inherit;
+	text-shadow: inherit;
+}
+.ui-flipswitch .ui-flipswitch-off {
+	padding: 1px;
+	text-indent: 1em; /* Override this to center text if you use a label other than "off" */
+}
+/* Override field container CSS to prevent the flipswitch from becomming full width */
+html .ui-field-contain > label + .ui-flipswitch,
+html .ui-popup .ui-field-contain > label + .ui-flipswitch {
+	display: inline-block;
+	width: 5.875em; /* If you override the width for .ui-flipswitch you should repeat the same value here */
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+}
+.ui-field-contain .ui-flipswitch.ui-flipswitch-active,
+.ui-popup .ui-field-contain .ui-flipswitch.ui-flipswitch-active {
+	width: 1.875em;
+}
+.ui-table {
+	border: 0;
+	border-collapse: collapse;
+	padding: 0;
+	width: 100%;
+}
+.ui-table th,
+.ui-table td {
+	line-height: 1.5em;
+	text-align: left;
+	padding: .4em .5em;
+	vertical-align:top;
+}
+.ui-table th .ui-btn,
+.ui-table td .ui-btn {
+	line-height: normal;
+}
+.ui-table th {
+	font-weight: bold;
+}
+.ui-table caption {
+	text-align: left;
+	margin-bottom: 1.4em;
+	opacity: .5;
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-columntoggle-btn {
+	float: right;
+	margin-bottom: .8em;
+}
+/* Remove top/bottom margins around the fieldcontain on check list */
+.ui-table-columntoggle-popup fieldset {
+	margin:0;
+}
+.ui-table-columntoggle {
+	clear: both;
+}
+/* Hide all prioritized columns by default */
+@media only all {
+	th.ui-table-priority-6,
+	td.ui-table-priority-6,
+	th.ui-table-priority-5,
+	td.ui-table-priority-5,
+	th.ui-table-priority-4,
+	td.ui-table-priority-4,
+	th.ui-table-priority-3,
+	td.ui-table-priority-3,
+	th.ui-table-priority-2,
+	td.ui-table-priority-2,
+	th.ui-table-priority-1,
+	td.ui-table-priority-1 {
+		display: none;
+	}
+}
+/* Preset breakpoints if ".ui-responsive" class added to table */
+/* Show priority 1 at 320px (20em x 16px) */
+@media screen and (min-width: 20em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-1,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-1 {
+		display: table-cell;
+	}
+}
+/* Show priority 2 at 480px (30em x 16px) */
+@media screen and (min-width: 30em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-2,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-2 {
+		display: table-cell;
+	}
+}
+/* Show priority 3 at 640px (40em x 16px) */
+@media screen and (min-width: 40em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-3,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-3 {
+		display: table-cell;
+	}
+}
+/* Show priority 4 at 800px (50em x 16px) */
+@media screen and (min-width: 50em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-4,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-4 {
+		display: table-cell;
+	}
+}
+/* Show priority 5 at 960px (60em x 16px) */
+@media screen and (min-width: 60em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-5,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-5 {
+		display: table-cell;
+	}
+}
+/* Show priority 6 at 1,120px (70em x 16px) */
+@media screen and (min-width: 70em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-6,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-6 {
+		display: table-cell;
+	}
+}
+/* Unchecked manually: Always hide */
+.ui-table-columntoggle th.ui-table-cell-hidden,
+.ui-table-columntoggle td.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden {
+	display: none;
+}
+/* Checked manually: Always show */
+.ui-table-columntoggle th.ui-table-cell-visible,
+.ui-table-columntoggle td.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible {
+	display: table-cell;
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-reflow td .ui-table-cell-label,
+.ui-table-reflow th .ui-table-cell-label { 
+	display: none;
+}
+/* Mobile first styles: Begin with the stacked presentation at narrow widths */ 
+@media only all {
+	/* Hide the table headers */ 
+	.ui-table-reflow thead td, 
+	.ui-table-reflow thead th {
+		display: none;
+	}
+	/* Show the table cells as a block level element */ 
+	.ui-table-reflow td,
+	.ui-table-reflow th { 
+		text-align: left;
+		display: block;
+	}
+	/* Add a fair amount of top margin to visually separate each row when stacked */  
+	.ui-table-reflow tbody th {
+		margin-top: 3em;
+	}
+	/* Make the label elements a percentage width */ 
+	.ui-table-reflow td .ui-table-cell-label,
+	.ui-table-reflow th .ui-table-cell-label { 
+		padding: .4em; 
+		min-width: 30%; 
+		display: inline-block;
+		margin: -.4em 1em -.4em -.4em;
+	}
+	/* For grouped headers, have a different style to visually separate the levels by classing the first label in each col group */ 
+	.ui-table-reflow th .ui-table-cell-label-top,
+	.ui-table-reflow td .ui-table-cell-label-top {
+		display: block;
+		padding: .4em 0;
+		margin: .4em 0;
+		text-transform: uppercase;
+		font-size: .9em;
+		font-weight: normal;
+	}
+}
+/* Breakpoint to show as a standard table at 560px (35em x 16px) or wider */ 
+@media ( min-width: 35em ) {
+	/* Show the table header rows */ 
+	.ui-table-reflow.ui-responsive td,
+	.ui-table-reflow.ui-responsive th,
+	.ui-table-reflow.ui-responsive tbody th,
+	.ui-table-reflow.ui-responsive tbody td,
+	.ui-table-reflow.ui-responsive thead td,
+	.ui-table-reflow.ui-responsive thead th {
+		display: table-cell;
+		margin: 0;
+	}
+	/* Hide the labels in each cell */ 
+	.ui-table-reflow.ui-responsive td .ui-table-cell-label,
+	.ui-table-reflow.ui-responsive th .ui-table-cell-label { 
+		display: none;
+	}
+}
+/* Hack to make IE9 and WP7.5 treat cells like block level elements, scoped to ui-responsive class */ 
+/* Applied in a max-width media query up to the table layout breakpoint so we don't need to negate this*/ 
+@media ( max-width: 35em ) {
+	.ui-table-reflow.ui-responsive td,
+	.ui-table-reflow.ui-responsive th {
+		width: 100%;
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		box-sizing: border-box;
+		float: left;
+		clear: left;
+	}
+}
+/* Panel */
+.ui-panel {
+	width: 17em;
+	min-height: 100%;
+	max-height: none;
+	border-width: 0;
+	position: absolute;
+	top: 0;
+	display: block;
+}
+.ui-panel-closed {
+	width: 0;
+	max-height: 100%;
+	overflow: hidden;
+	visibility: hidden;
+	left: 0;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-panel-fixed {
+	position: fixed;
+	bottom: -1px; /* Fixes gap on Chrome for Android */
+	padding-bottom: 1px;
+}
+.ui-panel-display-reveal {
+	z-index: 1;
+}
+.ui-panel-display-push {
+	z-index: 999;
+}
+.ui-panel-display-overlay {
+	z-index: 1001; /* Fixed toolbars have z-index 1000 */
+}
+.ui-panel-inner {
+	padding: 1em;
+}
+/* Container, page and wrapper */
+.ui-panel-page-container {
+	overflow-x: visible;
+}
+.ui-panel-page-container-themed .ui-page-active {
+	background: none;
+}
+.ui-panel-wrapper {
+	position: relative;
+	min-height: inherit;
+	border: 0;
+	overflow-x: hidden;
+	z-index: 999;
+}
+/* Fixed toolbars */
+.ui-panel-fixed-toolbar {
+	overflow-x: hidden;
+}
+/* Dismiss */
+.ui-panel-dismiss {
+	position: absolute;
+	top: 0;
+	left: 0;
+	right: 0;
+	height: 100%;
+	z-index: 1002;
+	display: none;
+}
+.ui-panel-dismiss-open {
+	display: block;
+}
+/* Animate class is added to panel, wrapper and fixed toolbars */
+.ui-panel-animate {
+	-webkit-transition: -webkit-transform 300ms ease;
+	-webkit-transition-duration: 300ms;
+	-moz-transition: -moz-transform 300ms ease;
+	transition: transform 300ms ease;
+}
+/* Fix for Windows Phone issue #6349: unset the transition for transforms in case of fixed toolbars. */
+@media screen and ( max-device-width: 768px ) {
+	.ui-page-header-fixed .ui-panel-animate.ui-panel-wrapper,
+	.ui-page-footer-fixed .ui-panel-animate.ui-panel-wrapper,
+	.ui-panel-animate.ui-panel-fixed-toolbar {
+		-ms-transition: none;
+	}
+	/* We need a transitionend event ... */
+	.ui-panel-animate.ui-panel-fixed-toolbar {
+		-ms-transition: -ms-transform 1ms;
+		-ms-transform: rotate(0deg);
+	}
+}
+/* Hardware acceleration for smoother transitions on WebKit browsers */
+.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal) {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translate3d(0,0,0);
+}
+/* Panel positioning (for overlay and push) */
+/* Panel left closed */
+.ui-panel-position-left {
+	left: -17em;
+}
+/* Panel left closed animated */
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-push {
+	left: 0;
+	-webkit-transform: translate3d(-17em,0,0);
+	-moz-transform: translate3d(-17em,0,0);
+	transform: translate3d(-17em,0,0);
+}
+/* Panel left open */
+.ui-panel-position-left.ui-panel-display-reveal, /* Unset "panel left closed" for reveal */
+.ui-panel-open.ui-panel-position-left {
+	left: 0;
+}
+/* Panel left open animated */
+.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-push {
+	-webkit-transform: translate3d(0,0,0);
+	transform: translate3d(0,0,0);
+	-moz-transform: none;
+}
+/* Panel right closed */
+.ui-panel-position-right {
+	right: -17em;
+}
+/* Panel right closed animated */
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-push {
+	right: 0;
+	-webkit-transform: translate3d(17em,0,0);
+	-moz-transform: translate3d(17em,0,0);
+	transform: translate3d(17em,0,0);
+}
+/* Panel right open */
+.ui-panel-position-right.ui-panel-display-reveal, /* Unset "panel right closed" for reveal */
+.ui-panel-position-right.ui-panel-open {
+	right: 0;
+}
+/* Panel right open animated */
+.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-push {
+	-webkit-transform: translate3d(0,0,0);
+	transform: translate3d(0,0,0);
+	-moz-transform: none;
+}
+/* Wrapper and fixed toolbars positioning (for reveal and push) */
+/* Panel left open */
+.ui-panel-page-content-position-left {
+	left: 17em;
+	right: -17em;
+}
+/* Panel left open animated */
+.ui-panel-animate.ui-panel-page-content-position-left {
+	left: 0;
+	right: 0;
+	-webkit-transform: translate3d(17em,0,0);
+	-moz-transform: translate3d(17em,0,0);
+	transform: translate3d(17em,0,0);
+}
+/* Panel right open */
+.ui-panel-page-content-position-right {
+	left: -17em;
+	right: 17em;
+}
+/* Panel right open animated */
+.ui-panel-animate.ui-panel-page-content-position-right {
+	left: 0;
+	right: 0;
+	-webkit-transform: translate3d(-17em,0,0);
+	-moz-transform: translate3d(-17em,0,0);
+	transform: translate3d(-17em,0,0);
+}
+/* Dismiss model open */
+.ui-panel-dismiss-open.ui-panel-dismiss-position-left {
+	left: 17em;
+}
+.ui-panel-dismiss-open.ui-panel-dismiss-position-right {
+	right: 17em;
+}
+/* Shadows and borders */
+.ui-panel-display-reveal {
+	-webkit-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+	box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-reveal {
+	-webkit-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+	box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-display-overlay {
+	-webkit-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+	box-shadow: 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-overlay {
+	-webkit-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+	box-shadow: -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-open.ui-panel-position-left.ui-panel-display-push {
+	border-right-width: 1px;
+	margin-right: -1px;
+}
+.ui-panel-page-content-position-left.ui-panel-page-content-display-push {
+	margin-left: 1px;
+	width: auto;
+}
+.ui-panel-open.ui-panel-position-right.ui-panel-display-push {
+	border-left-width: 1px;
+	margin-left: -1px;
+}
+.ui-panel-page-content-position-right.ui-panel-page-content-display-push {
+	margin-right: 1px;
+	width: auto;
+}
+/* Responsive: wrap on wide viewports once open */
+@media (min-width:55em) {
+	.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-left {
+		margin-right: 17em;
+	}
+	.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-right {
+		margin-left: 17em;
+	}
+	.ui-responsive-panel .ui-panel-page-content-open {
+		width: auto;	
+	}
+	.ui-responsive-panel .ui-panel-dismiss-display-push,
+	.ui-responsive-panel.ui-page-active ~ .ui-panel-dismiss-display-push {
+		display: none;
+	}
+}
+.ui-tabs {
+	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+	padding: .2em;
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.external-png-1.4.5.min.css
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.external-png-1.4.5.min.css	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.external-png-1.4.5.min.css	(revision 101)
@@ -0,0 +1,3 @@
+/*! jQuery Mobile 1.4.5 | Git HEADhash: 68e55e7 <> 2014-10-31T17:33:30Z | (c) 2010, 2014 jQuery Foundation, Inc. | jquery.org/license */
+
+.ui-icon-action:after{background-image:url(images/icons-png/action-white.png)}.ui-icon-alert:after{background-image:url(images/icons-png/alert-white.png)}.ui-icon-arrow-d-l:after{background-image:url(images/icons-png/arrow-d-l-white.png)}.ui-icon-arrow-d-r:after{background-image:url(images/icons-png/arrow-d-r-white.png)}.ui-icon-arrow-d:after{background-image:url(images/icons-png/arrow-d-white.png)}.ui-icon-arrow-l:after{background-image:url(images/icons-png/arrow-l-white.png)}.ui-icon-arrow-r:after{background-image:url(images/icons-png/arrow-r-white.png)}.ui-icon-arrow-u-l:after{background-image:url(images/icons-png/arrow-u-l-white.png)}.ui-icon-arrow-u-r:after{background-image:url(images/icons-png/arrow-u-r-white.png)}.ui-icon-arrow-u:after{background-image:url(images/icons-png/arrow-u-white.png)}.ui-icon-audio:after{background-image:url(images/icons-png/audio-white.png)}.ui-icon-back:after{background-image:url(images/icons-png/back-white.png)}.ui-icon-bars:after{background-image:url(images/icons-png/bars-white.png)}.ui-icon-bullets:after{background-image:url(images/icons-png/bullets-white.png)}.ui-icon-calendar:after{background-image:url(images/icons-png/calendar-white.png)}.ui-icon-camera:after{background-image:url(images/icons-png/camera-white.png)}.ui-icon-carat-d:after{background-image:url(images/icons-png/carat-d-white.png)}.ui-icon-carat-l:after{background-image:url(images/icons-png/carat-l-white.png)}.ui-icon-carat-r:after{background-image:url(images/icons-png/carat-r-white.png)}.ui-icon-carat-u:after{background-image:url(images/icons-png/carat-u-white.png)}.ui-icon-check:after,html .ui-btn.ui-checkbox-on.ui-checkbox-on:after{background-image:url(images/icons-png/check-white.png)}.ui-icon-clock:after{background-image:url(images/icons-png/clock-white.png)}.ui-icon-cloud:after{background-image:url(images/icons-png/cloud-white.png)}.ui-icon-comment:after{background-image:url(images/icons-png/comment-white.png)}.ui-icon-delete:after{background-image:url(images/icons-png/delete-white.png)}.ui-icon-edit:after{background-image:url(images/icons-png/edit-white.png)}.ui-icon-eye:after{background-image:url(images/icons-png/eye-white.png)}.ui-icon-forbidden:after{background-image:url(images/icons-png/forbidden-white.png)}.ui-icon-forward:after{background-image:url(images/icons-png/forward-white.png)}.ui-icon-gear:after{background-image:url(images/icons-png/gear-white.png)}.ui-icon-grid:after{background-image:url(images/icons-png/grid-white.png)}.ui-icon-heart:after{background-image:url(images/icons-png/heart-white.png)}.ui-icon-home:after{background-image:url(images/icons-png/home-white.png)}.ui-icon-info:after{background-image:url(images/icons-png/info-white.png)}.ui-icon-location:after{background-image:url(images/icons-png/location-white.png)}.ui-icon-lock:after{background-image:url(images/icons-png/lock-white.png)}.ui-icon-mail:after{background-image:url(images/icons-png/mail-white.png)}.ui-icon-minus:after{background-image:url(images/icons-png/minus-white.png)}.ui-icon-navigation:after{background-image:url(images/icons-png/navigation-white.png)}.ui-icon-phone:after{background-image:url(images/icons-png/phone-white.png)}.ui-icon-plus:after{background-image:url(images/icons-png/plus-white.png)}.ui-icon-power:after{background-image:url(images/icons-png/power-white.png)}.ui-icon-recycle:after{background-image:url(images/icons-png/recycle-white.png)}.ui-icon-refresh:after{background-image:url(images/icons-png/refresh-white.png)}.ui-icon-search:after{background-image:url(images/icons-png/search-white.png)}.ui-icon-shop:after{background-image:url(images/icons-png/shop-white.png)}.ui-icon-star:after{background-image:url(images/icons-png/star-white.png)}.ui-icon-tag:after{background-image:url(images/icons-png/tag-white.png)}.ui-icon-user:after{background-image:url(images/icons-png/user-white.png)}.ui-icon-video:after{background-image:url(images/icons-png/video-white.png)}.ui-alt-icon.ui-icon-action:after,.ui-alt-icon .ui-icon-action:after{background-image:url(images/icons-png/action-black.png)}.ui-alt-icon.ui-icon-alert:after,.ui-alt-icon .ui-icon-alert:after{background-image:url(images/icons-png/alert-black.png)}.ui-alt-icon.ui-icon-arrow-d:after,.ui-alt-icon .ui-icon-arrow-d:after{background-image:url(images/icons-png/arrow-d-black.png)}.ui-alt-icon.ui-icon-arrow-d-l:after,.ui-alt-icon .ui-icon-arrow-d-l:after{background-image:url(images/icons-png/arrow-d-l-black.png)}.ui-alt-icon.ui-icon-arrow-d-r:after,.ui-alt-icon .ui-icon-arrow-d-r:after{background-image:url(images/icons-png/arrow-d-r-black.png)}.ui-alt-icon.ui-icon-arrow-l:after,.ui-alt-icon .ui-icon-arrow-l:after{background-image:url(images/icons-png/arrow-l-black.png)}.ui-alt-icon.ui-icon-arrow-r:after,.ui-alt-icon .ui-icon-arrow-r:after{background-image:url(images/icons-png/arrow-r-black.png)}.ui-alt-icon.ui-icon-arrow-u:after,.ui-alt-icon .ui-icon-arrow-u:after{background-image:url(images/icons-png/arrow-u-black.png)}.ui-alt-icon.ui-icon-arrow-u-l:after,.ui-alt-icon .ui-icon-arrow-u-l:after{background-image:url(images/icons-png/arrow-u-l-black.png)}.ui-alt-icon.ui-icon-arrow-u-r:after,.ui-alt-icon .ui-icon-arrow-u-r:after{background-image:url(images/icons-png/arrow-u-r-black.png)}.ui-alt-icon.ui-icon-audio:after,.ui-alt-icon .ui-icon-audio:after{background-image:url(images/icons-png/audio-black.png)}.ui-alt-icon.ui-icon-back:after,.ui-alt-icon .ui-icon-back:after{background-image:url(images/icons-png/back-black.png)}.ui-alt-icon.ui-icon-bars:after,.ui-alt-icon .ui-icon-bars:after{background-image:url(images/icons-png/bars-black.png)}.ui-alt-icon.ui-icon-bullets:after,.ui-alt-icon .ui-icon-bullets:after{background-image:url(images/icons-png/bullets-black.png)}.ui-alt-icon.ui-icon-calendar:after,.ui-alt-icon .ui-icon-calendar:after{background-image:url(images/icons-png/calendar-black.png)}.ui-alt-icon.ui-icon-camera:after,.ui-alt-icon .ui-icon-camera:after{background-image:url(images/icons-png/camera-black.png)}.ui-alt-icon.ui-icon-carat-d:after,.ui-alt-icon .ui-icon-carat-d:after{background-image:url(images/icons-png/carat-d-black.png)}.ui-alt-icon.ui-icon-carat-l:after,.ui-alt-icon .ui-icon-carat-l:after{background-image:url(images/icons-png/carat-l-black.png)}.ui-alt-icon.ui-icon-carat-r:after,.ui-alt-icon .ui-icon-carat-r:after{background-image:url(images/icons-png/carat-r-black.png)}.ui-alt-icon.ui-icon-carat-u:after,.ui-alt-icon .ui-icon-carat-u:after{background-image:url(images/icons-png/carat-u-black.png)}.ui-alt-icon.ui-icon-check:after,.ui-alt-icon .ui-icon-check:after,html .ui-alt-icon.ui-btn.ui-checkbox-on:after,html .ui-alt-icon .ui-btn.ui-checkbox-on:after{background-image:url(images/icons-png/check-black.png)}.ui-alt-icon.ui-icon-clock:after,.ui-alt-icon .ui-icon-clock:after{background-image:url(images/icons-png/clock-black.png)}.ui-alt-icon.ui-icon-cloud:after,.ui-alt-icon .ui-icon-cloud:after{background-image:url(images/icons-png/cloud-black.png)}.ui-alt-icon.ui-icon-comment:after,.ui-alt-icon .ui-icon-comment:after{background-image:url(images/icons-png/comment-black.png)}.ui-alt-icon.ui-icon-delete:after,.ui-alt-icon .ui-icon-delete:after{background-image:url(images/icons-png/delete-black.png)}.ui-alt-icon.ui-icon-edit:after,.ui-alt-icon .ui-icon-edit:after{background-image:url(images/icons-png/edit-black.png)}.ui-alt-icon.ui-icon-eye:after,.ui-alt-icon .ui-icon-eye:after{background-image:url(images/icons-png/eye-black.png)}.ui-alt-icon.ui-icon-forbidden:after,.ui-alt-icon .ui-icon-forbidden:after{background-image:url(images/icons-png/forbidden-black.png)}.ui-alt-icon.ui-icon-forward:after,.ui-alt-icon .ui-icon-forward:after{background-image:url(images/icons-png/forward-black.png)}.ui-alt-icon.ui-icon-gear:after,.ui-alt-icon .ui-icon-gear:after{background-image:url(images/icons-png/gear-black.png)}.ui-alt-icon.ui-icon-grid:after,.ui-alt-icon .ui-icon-grid:after{background-image:url(images/icons-png/grid-black.png)}.ui-alt-icon.ui-icon-heart:after,.ui-alt-icon .ui-icon-heart:after{background-image:url(images/icons-png/heart-black.png)}.ui-alt-icon.ui-icon-home:after,.ui-alt-icon .ui-icon-home:after{background-image:url(images/icons-png/home-black.png)}.ui-alt-icon.ui-icon-info:after,.ui-alt-icon .ui-icon-info:after{background-image:url(images/icons-png/info-black.png)}.ui-alt-icon.ui-icon-location:after,.ui-alt-icon .ui-icon-location:after{background-image:url(images/icons-png/location-black.png)}.ui-alt-icon.ui-icon-lock:after,.ui-alt-icon .ui-icon-lock:after{background-image:url(images/icons-png/lock-black.png)}.ui-alt-icon.ui-icon-mail:after,.ui-alt-icon .ui-icon-mail:after{background-image:url(images/icons-png/mail-black.png)}.ui-alt-icon.ui-icon-minus:after,.ui-alt-icon .ui-icon-minus:after{background-image:url(images/icons-png/minus-black.png)}.ui-alt-icon.ui-icon-navigation:after,.ui-alt-icon .ui-icon-navigation:after{background-image:url(images/icons-png/navigation-black.png)}.ui-alt-icon.ui-icon-phone:after,.ui-alt-icon .ui-icon-phone:after{background-image:url(images/icons-png/phone-black.png)}.ui-alt-icon.ui-icon-plus:after,.ui-alt-icon .ui-icon-plus:after{background-image:url(images/icons-png/plus-black.png)}.ui-alt-icon.ui-icon-power:after,.ui-alt-icon .ui-icon-power:after{background-image:url(images/icons-png/power-black.png)}.ui-alt-icon.ui-icon-recycle:after,.ui-alt-icon .ui-icon-recycle:after{background-image:url(images/icons-png/recycle-black.png)}.ui-alt-icon.ui-icon-refresh:after,.ui-alt-icon .ui-icon-refresh:after{background-image:url(images/icons-png/refresh-black.png)}.ui-alt-icon.ui-icon-search:after,.ui-alt-icon .ui-icon-search:after,.ui-input-search:after{background-image:url(images/icons-png/search-black.png)}.ui-alt-icon.ui-icon-shop:after,.ui-alt-icon .ui-icon-shop:after{background-image:url(images/icons-png/shop-black.png)}.ui-alt-icon.ui-icon-star:after,.ui-alt-icon .ui-icon-star:after{background-image:url(images/icons-png/star-black.png)}.ui-alt-icon.ui-icon-tag:after,.ui-alt-icon .ui-icon-tag:after{background-image:url(images/icons-png/tag-black.png)}.ui-alt-icon.ui-icon-user:after,.ui-alt-icon .ui-icon-user:after{background-image:url(images/icons-png/user-black.png)}.ui-alt-icon.ui-icon-video:after,.ui-alt-icon .ui-icon-video:after{background-image:url(images/icons-png/video-black.png)}html{font-size:100%}body,input,select,textarea,button,.ui-btn{font-size:1em;line-height:1.3;font-family:sans-serif}legend,.ui-input-text input,.ui-input-search input{color:inherit;text-shadow:inherit}.ui-mobile label,div.ui-controlgroup-label{font-weight:400;font-size:16px}.ui-field-contain{border-bottom-color:#828282;border-bottom-color:rgba(0,0,0,.15);border-bottom-width:1px;border-bottom-style:solid}.table-stroke thead th,.table-stripe thead th,.table-stripe tbody tr:last-child{border-bottom:1px solid #d6d6d6;border-bottom:1px solid rgba(0,0,0,.1)}.table-stroke tbody th,.table-stroke tbody td{border-bottom:1px solid #e6e6e6;border-bottom:1px solid rgba(0,0,0,.05)}.table-stripe.table-stroke tbody tr:last-child th,.table-stripe.table-stroke tbody tr:last-child td{border-bottom:0}.table-stripe tbody tr:nth-child(odd) td,.table-stripe tbody tr:nth-child(odd) th{background-color:#eee;background-color:rgba(0,0,0,.04)}.ui-btn,label.ui-btn{font-weight:700;border-width:1px;border-style:solid}.ui-btn{text-decoration:none!important}.ui-btn-active{cursor:pointer}.ui-corner-all{-webkit-border-radius:.3125em;border-radius:.3125em}.ui-btn-corner-all,.ui-btn.ui-corner-all,.ui-slider-track.ui-corner-all,.ui-flipswitch.ui-corner-all,.ui-li-count{-webkit-border-radius:.3125em;border-radius:.3125em}.ui-btn-icon-notext.ui-btn-corner-all,.ui-btn-icon-notext.ui-corner-all{-webkit-border-radius:1em;border-radius:1em}.ui-btn-corner-all,.ui-corner-all{-webkit-background-clip:padding;background-clip:padding-box}.ui-popup.ui-corner-all>.ui-popup-arrow-guide{left:.6em;right:.6em;top:.6em;bottom:.6em}.ui-shadow{-webkit-box-shadow:0 1px 3px rgba(0,0,0,.15);-moz-box-shadow:0 1px 3px rgba(0,0,0,.15);box-shadow:0 1px 3px rgba(0,0,0,.15)}.ui-shadow-inset{-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.2);-moz-box-shadow:inset 0 1px 3px rgba(0,0,0,.2);box-shadow:inset 0 1px 3px rgba(0,0,0,.2)}.ui-overlay-shadow{-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);-moz-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-btn-icon-left:after,.ui-btn-icon-right:after,.ui-btn-icon-top:after,.ui-btn-icon-bottom:after,.ui-btn-icon-notext:after{background-color:#666;background-color:rgba(0,0,0,.3);background-position:center center;background-repeat:no-repeat;-webkit-border-radius:1em;border-radius:1em}.ui-alt-icon.ui-btn:after,.ui-alt-icon .ui-btn:after,html .ui-alt-icon.ui-checkbox-off:after,html .ui-alt-icon.ui-radio-off:after,html .ui-alt-icon .ui-checkbox-off:after,html .ui-alt-icon .ui-radio-off:after{background-color:#666;background-color:rgba(0,0,0,.15)}.ui-nodisc-icon.ui-btn:after,.ui-nodisc-icon .ui-btn:after{background-color:transparent}.ui-shadow-icon.ui-btn:after,.ui-shadow-icon .ui-btn:after{-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.ui-btn.ui-checkbox-off:after,.ui-btn.ui-checkbox-on:after,.ui-btn.ui-radio-off:after,.ui-btn.ui-radio-on:after{display:block;width:18px;height:18px;margin:-9px 2px 0 2px}.ui-checkbox-off:after,.ui-btn.ui-radio-off:after{filter:Alpha(Opacity=30);opacity:.3}.ui-btn.ui-checkbox-off:after,.ui-btn.ui-checkbox-on:after{-webkit-border-radius:.1875em;border-radius:.1875em}.ui-btn.ui-checkbox-off:after{background-color:#666;background-color:rgba(0,0,0,.3)}.ui-radio .ui-btn.ui-radio-on:after{background-image:none;background-color:#fff;width:8px;height:8px;border-width:5px;border-style:solid}.ui-alt-icon.ui-btn.ui-radio-on:after,.ui-alt-icon .ui-btn.ui-radio-on:after{background-color:#000}.ui-icon-loading{background:url(images/ajax-loader.gif);background-size:2.875em 2.875em}.ui-bar-a,.ui-page-theme-a .ui-bar-inherit,html .ui-bar-a .ui-bar-inherit,html .ui-body-a .ui-bar-inherit,html body .ui-group-theme-a .ui-bar-inherit{background-color:#e9e9e9;border-color:#ddd;color:#333;text-shadow:0 1px 0 #eee;font-weight:700}.ui-bar-a{border-width:1px;border-style:solid}.ui-overlay-a,.ui-page-theme-a,.ui-page-theme-a .ui-panel-wrapper{background-color:#f9f9f9;border-color:#bbb;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-body-a,.ui-page-theme-a .ui-body-inherit,html .ui-bar-a .ui-body-inherit,html .ui-body-a .ui-body-inherit,html body .ui-group-theme-a .ui-body-inherit,html .ui-panel-page-container-a{background-color:#fff;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-body-a{border-width:1px;border-style:solid}.ui-page-theme-a a,html .ui-bar-a a,html .ui-body-a a,html body .ui-group-theme-a a{color:#38c;font-weight:700}.ui-page-theme-a a:visited,html .ui-bar-a a:visited,html .ui-body-a a:visited,html body .ui-group-theme-a a:visited{color:#38c}.ui-page-theme-a a:hover,html .ui-bar-a a:hover,html .ui-body-a a:hover,html body .ui-group-theme-a a:hover{color:#059}.ui-page-theme-a a:active,html .ui-bar-a a:active,html .ui-body-a a:active,html body .ui-group-theme-a a:active{color:#059}.ui-page-theme-a .ui-btn,html .ui-bar-a .ui-btn,html .ui-body-a .ui-btn,html body .ui-group-theme-a .ui-btn,html head+body .ui-btn.ui-btn-a,.ui-page-theme-a .ui-btn:visited,html .ui-bar-a .ui-btn:visited,html .ui-body-a .ui-btn:visited,html body .ui-group-theme-a .ui-btn:visited,html head+body .ui-btn.ui-btn-a:visited{background-color:#f6f6f6;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-page-theme-a .ui-btn:hover,html .ui-bar-a .ui-btn:hover,html .ui-body-a .ui-btn:hover,html body .ui-group-theme-a .ui-btn:hover,html head+body .ui-btn.ui-btn-a:hover{background-color:#ededed;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-page-theme-a .ui-btn:active,html .ui-bar-a .ui-btn:active,html .ui-body-a .ui-btn:active,html body .ui-group-theme-a .ui-btn:active,html head+body .ui-btn.ui-btn-a:active{background-color:#e8e8e8;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-page-theme-a .ui-btn.ui-btn-active,html .ui-bar-a .ui-btn.ui-btn-active,html .ui-body-a .ui-btn.ui-btn-active,html body .ui-group-theme-a .ui-btn.ui-btn-active,html head+body .ui-btn.ui-btn-a.ui-btn-active,.ui-page-theme-a .ui-checkbox-on:after,html .ui-bar-a .ui-checkbox-on:after,html .ui-body-a .ui-checkbox-on:after,html body .ui-group-theme-a .ui-checkbox-on:after,.ui-btn.ui-checkbox-on.ui-btn-a:after,.ui-page-theme-a .ui-flipswitch-active,html .ui-bar-a .ui-flipswitch-active,html .ui-body-a .ui-flipswitch-active,html body .ui-group-theme-a .ui-flipswitch-active,html body .ui-flipswitch.ui-bar-a.ui-flipswitch-active,.ui-page-theme-a .ui-slider-track .ui-btn-active,html .ui-bar-a .ui-slider-track .ui-btn-active,html .ui-body-a .ui-slider-track .ui-btn-active,html body .ui-group-theme-a .ui-slider-track .ui-btn-active,html body div.ui-slider-track.ui-body-a .ui-btn-active{background-color:#38c;border-color:#38c;color:#fff;text-shadow:0 1px 0 #059}.ui-page-theme-a .ui-radio-on:after,html .ui-bar-a .ui-radio-on:after,html .ui-body-a .ui-radio-on:after,html body .ui-group-theme-a .ui-radio-on:after,.ui-btn.ui-radio-on.ui-btn-a:after{border-color:#38c}.ui-page-theme-a .ui-btn:focus,html .ui-bar-a .ui-btn:focus,html .ui-body-a .ui-btn:focus,html body .ui-group-theme-a .ui-btn:focus,html head+body .ui-btn.ui-btn-a:focus,.ui-page-theme-a .ui-focus,html .ui-bar-a .ui-focus,html .ui-body-a .ui-focus,html body .ui-group-theme-a .ui-focus,html head+body .ui-btn-a.ui-focus,html head+body .ui-body-a.ui-focus{-webkit-box-shadow:0 0 12px #38c;-moz-box-shadow:0 0 12px #38c;box-shadow:0 0 12px #38c}.ui-bar-b,.ui-page-theme-b .ui-bar-inherit,html .ui-bar-b .ui-bar-inherit,html .ui-body-b .ui-bar-inherit,html body .ui-group-theme-b .ui-bar-inherit{background-color:#1d1d1d;border-color:#1b1b1b;color:#fff;text-shadow:0 1px 0 #111;font-weight:700}.ui-bar-b{border-width:1px;border-style:solid}.ui-overlay-b,.ui-page-theme-b,.ui-page-theme-b .ui-panel-wrapper{background-color:#252525;border-color:#454545;color:#fff;text-shadow:0 1px 0 #111}.ui-body-b,.ui-page-theme-b .ui-body-inherit,html .ui-bar-b .ui-body-inherit,html .ui-body-b .ui-body-inherit,html body .ui-group-theme-b .ui-body-inherit,html .ui-panel-page-container-b{background-color:#2a2a2a;border-color:#1d1d1d;color:#fff;text-shadow:0 1px 0 #111}.ui-body-b{border-width:1px;border-style:solid}.ui-page-theme-b a,html .ui-bar-b a,html .ui-body-b a,html body .ui-group-theme-b a{color:#2ad;font-weight:700}.ui-page-theme-b a:visited,html .ui-bar-b a:visited,html .ui-body-b a:visited,html body .ui-group-theme-b a:visited{color:#2ad}.ui-page-theme-b a:hover,html .ui-bar-b a:hover,html .ui-body-b a:hover,html body .ui-group-theme-b a:hover{color:#08b}.ui-page-theme-b a:active,html .ui-bar-b a:active,html .ui-body-b a:active,html body .ui-group-theme-b a:active{color:#08b}.ui-page-theme-b .ui-btn,html .ui-bar-b .ui-btn,html .ui-body-b .ui-btn,html body .ui-group-theme-b .ui-btn,html head+body .ui-btn.ui-btn-b,.ui-page-theme-b .ui-btn:visited,html .ui-bar-b .ui-btn:visited,html .ui-body-b .ui-btn:visited,html body .ui-group-theme-b .ui-btn:visited,html head+body .ui-btn.ui-btn-b:visited{background-color:#333;border-color:#1f1f1f;color:#fff;text-shadow:0 1px 0 #111}.ui-page-theme-b .ui-btn:hover,html .ui-bar-b .ui-btn:hover,html .ui-body-b .ui-btn:hover,html body .ui-group-theme-b .ui-btn:hover,html head+body .ui-btn.ui-btn-b:hover{background-color:#373737;border-color:#1f1f1f;color:#fff;text-shadow:0 1px 0 #111}.ui-page-theme-b .ui-btn:active,html .ui-bar-b .ui-btn:active,html .ui-body-b .ui-btn:active,html body .ui-group-theme-b .ui-btn:active,html head+body .ui-btn.ui-btn-b:active{background-color:#404040;border-color:#1f1f1f;color:#fff;text-shadow:0 1px 0 #111}.ui-page-theme-b .ui-btn.ui-btn-active,html .ui-bar-b .ui-btn.ui-btn-active,html .ui-body-b .ui-btn.ui-btn-active,html body .ui-group-theme-b .ui-btn.ui-btn-active,html head+body .ui-btn.ui-btn-b.ui-btn-active,.ui-page-theme-b .ui-checkbox-on:after,html .ui-bar-b .ui-checkbox-on:after,html .ui-body-b .ui-checkbox-on:after,html body .ui-group-theme-b .ui-checkbox-on:after,.ui-btn.ui-checkbox-on.ui-btn-b:after,.ui-page-theme-b .ui-flipswitch-active,html .ui-bar-b .ui-flipswitch-active,html .ui-body-b .ui-flipswitch-active,html body .ui-group-theme-b .ui-flipswitch-active,html body .ui-flipswitch.ui-bar-b.ui-flipswitch-active,.ui-page-theme-b .ui-slider-track .ui-btn-active,html .ui-bar-b .ui-slider-track .ui-btn-active,html .ui-body-b .ui-slider-track .ui-btn-active,html body .ui-group-theme-b .ui-slider-track .ui-btn-active,html body div.ui-slider-track.ui-body-b .ui-btn-active{background-color:#2ad;border-color:#2ad;color:#fff;text-shadow:0 1px 0 #08b}.ui-page-theme-b .ui-radio-on:after,html .ui-bar-b .ui-radio-on:after,html .ui-body-b .ui-radio-on:after,html body .ui-group-theme-b .ui-radio-on:after,.ui-btn.ui-radio-on.ui-btn-b:after{border-color:#2ad}.ui-page-theme-b .ui-btn:focus,html .ui-bar-b .ui-btn:focus,html .ui-body-b .ui-btn:focus,html body .ui-group-theme-b .ui-btn:focus,html head+body .ui-btn.ui-btn-b:focus,.ui-page-theme-b .ui-focus,html .ui-bar-b .ui-focus,html .ui-body-b .ui-focus,html body .ui-group-theme-b .ui-focus,html head+body .ui-btn-b.ui-focus,html head+body .ui-body-b.ui-focus{-webkit-box-shadow:0 0 12px #2ad;-moz-box-shadow:0 0 12px #2ad;box-shadow:0 0 12px #2ad}.ui-disabled,.ui-state-disabled,button[disabled],.ui-select .ui-btn.ui-state-disabled{filter:Alpha(Opacity=30);opacity:.3;cursor:default!important;pointer-events:none}.ui-btn:focus,.ui-btn.ui-focus{outline:0}.ui-noboxshadow .ui-shadow,.ui-noboxshadow .ui-shadow-inset,.ui-noboxshadow .ui-overlay-shadow,.ui-noboxshadow .ui-shadow-icon.ui-btn:after,.ui-noboxshadow .ui-shadow-icon .ui-btn:after,.ui-noboxshadow .ui-focus,.ui-noboxshadow .ui-btn:focus,.ui-noboxshadow input:focus,.ui-noboxshadow .ui-panel{-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important}.ui-noboxshadow .ui-btn:focus,.ui-noboxshadow .ui-focus{outline-width:1px;outline-style:auto}.ui-mobile,.ui-mobile body{height:99.9%}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile fieldset{border-width:0}.ui-mobile fieldset{min-width:0}@-moz-document url-prefix(){.ui-mobile fieldset{display:table-column;vertical-align:middle}}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:100%;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-page{outline:0}.ui-mobile .ui-page-active{display:block;overflow:visible;overflow-x:hidden}@media screen and (orientation:portrait){.ui-mobile .ui-page{min-height:420px}}@media screen and (orientation:landscape){.ui-mobile .ui-page{min-height:300px}}.ui-mobile-rendering>*{visibility:hidden}.ui-nojs{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-loading .ui-loader{display:block}.ui-loader{display:none;z-index:9999999;position:fixed;top:50%;left:50%;border:0}.ui-loader-default{background:0;filter:Alpha(Opacity=18);opacity:.18;width:2.875em;height:2.875em;margin-left:-1.4375em;margin-top:-1.4375em}.ui-loader-verbose{width:12.5em;filter:Alpha(Opacity=88);opacity:.88;box-shadow:0 1px 1px -1px #fff;height:auto;margin-left:-6.875em;margin-top:-2.6875em;padding:.625em}.ui-loader-default h1{font-size:0;width:0;height:0;overflow:hidden}.ui-loader-verbose h1{font-size:1em;margin:0;text-align:center}.ui-loader .ui-icon-loading{background-color:#000;display:block;margin:0;width:2.75em;height:2.75em;padding:.0625em;-webkit-border-radius:2.25em;border-radius:2.25em}.ui-loader-verbose .ui-icon-loading{margin:0 auto .625em;filter:Alpha(Opacity=75);opacity:.75}.ui-loader-textonly{padding:.9375em;margin-left:-7.1875em}.ui-loader-textonly .ui-icon-loading{display:none}.ui-loader-fakefix{position:absolute}.ui-bar,.ui-body{position:relative;padding:.4em 1em;overflow:hidden;display:block;clear:both}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:1em;display:inline-block}.ui-header,.ui-footer{border-width:1px 0;border-style:solid;position:relative}.ui-header:empty,.ui-footer:empty{min-height:2.6875em}.ui-header .ui-title,.ui-footer .ui-title{font-size:1em;min-height:1.1em;text-align:center;display:block;margin:0 30%;padding:.7em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-footer .ui-title{margin:0 1em}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:1em}.ui-corner-all>.ui-header:first-child,.ui-corner-all>.ui-content:first-child,.ui-corner-all>.ui-footer:first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-corner-all>.ui-header:last-child,.ui-corner-all>.ui-content:last-child,.ui-corner-all>.ui-footer:last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-btn{font-size:16px;margin:.5em 0;padding:.7em 1em;display:block;position:relative;text-align:center;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui-btn-icon-notext,.ui-header button.ui-btn.ui-btn-icon-notext,.ui-footer button.ui-btn.ui-btn-icon-notext{padding:0;width:1.75em;height:1.75em;text-indent:-9999px;white-space:nowrap!important}.ui-mini{font-size:12.5px}.ui-mini .ui-btn{font-size:inherit}.ui-header .ui-btn,.ui-footer .ui-btn{font-size:12.5px;display:inline-block;vertical-align:middle}.ui-header .ui-controlgroup .ui-btn-icon-notext,.ui-footer .ui-controlgroup .ui-btn-icon-notext{font-size:12.5px}.ui-header .ui-btn-left,.ui-header .ui-btn-right{font-size:12.5px}.ui-mini.ui-btn-icon-notext,.ui-mini .ui-btn-icon-notext,.ui-header .ui-btn-icon-notext,.ui-footer .ui-btn-icon-notext{font-size:16px;padding:0}.ui-btn-inline{display:inline-block;vertical-align:middle;margin-right:.625em}.ui-btn-icon-left{padding-left:2.5em}.ui-btn-icon-right{padding-right:2.5em}.ui-btn-icon-top{padding-top:2.5em}.ui-btn-icon-bottom{padding-bottom:2.5em}.ui-header .ui-btn-icon-top,.ui-footer .ui-btn-icon-top,.ui-header .ui-btn-icon-bottom,.ui-footer .ui-btn-icon-bottom{padding-left:.3125em;padding-right:.3125em}.ui-btn-icon-left:after,.ui-btn-icon-right:after,.ui-btn-icon-top:after,.ui-btn-icon-bottom:after,.ui-btn-icon-notext:after{content:"";position:absolute;display:block;width:22px;height:22px}.ui-btn-icon-notext:after,.ui-btn-icon-left:after,.ui-btn-icon-right:after{top:50%;margin-top:-11px}.ui-btn-icon-left:after{left:.5625em}.ui-btn-icon-right:after{right:.5625em}.ui-mini.ui-btn-icon-left:after,.ui-mini .ui-btn-icon-left:after,.ui-header .ui-btn-icon-left:after,.ui-footer .ui-btn-icon-left:after{left:.37em}.ui-mini.ui-btn-icon-right:after,.ui-mini .ui-btn-icon-right:after,.ui-header .ui-btn-icon-right:after,.ui-footer .ui-btn-icon-right:after{right:.37em}.ui-btn-icon-notext:after,.ui-btn-icon-top:after,.ui-btn-icon-bottom:after{left:50%;margin-left:-11px}.ui-btn-icon-top:after{top:.5625em}.ui-btn-icon-bottom:after{top:auto;bottom:.5625em}.ui-header .ui-btn-left,.ui-header .ui-btn-right,.ui-btn-left>[class*=ui-],.ui-btn-right>[class*=ui-]{margin:0}.ui-btn-left,.ui-btn-right{position:absolute;top:.24em}.ui-btn-left{left:.4em}.ui-btn-right{right:.4em}.ui-btn-icon-notext.ui-btn-left{top:.3125em;left:.3125em}.ui-btn-icon-notext.ui-btn-right{top:.3125em;right:.3125em}button.ui-btn,.ui-controlgroup-controls button.ui-btn-icon-notext{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;width:100%}button.ui-btn-inline,.ui-header button.ui-btn,.ui-footer button.ui-btn{width:auto}button.ui-btn::-moz-focus-inner{border:0}button.ui-btn-icon-notext,.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;width:1.75em}.ui-mobile label,.ui-controlgroup-label{display:block;margin:0 0 .4em}.ui-hide-label>label,.ui-hide-label .ui-controlgroup-label,.ui-hide-label .ui-rangeslider label,.ui-hidden-accessible{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-screen-hidden{display:none!important}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-page-pre-in{opacity:0}.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.out{-webkit-animation-timing-function:ease-in;-webkit-animation-duration:225ms;-moz-animation-timing-function:ease-in;-moz-animation-duration:225ms;animation-timing-function:ease-in;animation-duration:225ms}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-moz-keyframes fadein{from{opacity:0}to{opacity:1}}@keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{opacity:1}to{opacity:0}}@-moz-keyframes fadeout{from{opacity:1}to{opacity:0}}@keyframes fadeout{from{opacity:1}to{opacity:0}}.fade.out{opacity:0;-webkit-animation-duration:125ms;-webkit-animation-name:fadeout;-moz-animation-duration:125ms;-moz-animation-name:fadeout;animation-duration:125ms;animation-name:fadeout}.fade.in{opacity:1;-webkit-animation-duration:225ms;-webkit-animation-name:fadein;-moz-animation-duration:225ms;-moz-animation-name:fadein;animation-duration:225ms;animation-name:fadein}.pop{-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);-webkit-animation-name:popin;-webkit-animation-duration:350ms;-moz-transform:scale(1);-moz-animation-name:popin;-moz-animation-duration:350ms;transform:scale(1);animation-name:popin;animation-duration:350ms;opacity:1}.pop.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms;opacity:0}.pop.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;animation-name:fadein}.pop.out.reverse{-webkit-transform:scale(.8);-webkit-animation-name:popout;-moz-transform:scale(.8);-moz-animation-name:popout;transform:scale(.8);animation-name:popout}@-webkit-keyframes popin{from{-webkit-transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes popin{from{-moz-transform:scale(.8);opacity:0}to{-moz-transform:scale(1);opacity:1}}@keyframes popin{from{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.8);opacity:0}}@-moz-keyframes popout{from{-moz-transform:scale(1);opacity:1}to{-moz-transform:scale(.8);opacity:0}}@keyframes popout{from{transform:scale(1);opacity:1}to{transform:scale(.8);opacity:0}}@-webkit-keyframes slideinfromright{from{-webkit-transform:translate3d(100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromright{from{-moz-transform:translateX(100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromright{from{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translate3d(-100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromleft{from{-moz-transform:translateX(-100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromleft{from{transform:translateX(-100%)}to{transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-100%,0,0)}}@-moz-keyframes slideouttoleft{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(-100%)}}@keyframes slideouttoleft{from{transform:translateX(0)}to{transform:translateX(-100%)}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(100%,0,0)}}@-moz-keyframes slideouttoright{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(100%)}}@keyframes slideouttoright{from{transform:translateX(0)}to{transform:translateX(100%)}}.slide.out,.slide.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.slide.out{-webkit-transform:translate3d(-100%,0,0);-webkit-animation-name:slideouttoleft;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;transform:translateX(-100%);animation-name:slideouttoleft}.slide.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromright;-moz-transform:translateX(0);-moz-animation-name:slideinfromright;transform:translateX(0);animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:slideouttoright;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;transform:translateX(100%);animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromleft;-moz-transform:translateX(0);-moz-animation-name:slideinfromleft;transform:translateX(0);animation-name:slideinfromleft}.slidefade.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft;-webkit-animation-duration:225ms;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;-moz-animation-duration:225ms;transform:translateX(-100%);animation-name:slideouttoleft;animation-duration:225ms}.slidefade.in{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidefade.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright;-webkit-animation-duration:200ms;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;-moz-animation-duration:200ms;transform:translateX(100%);animation-name:slideouttoright;animation-duration:200ms}.slidefade.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidedown.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfromtop;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfromtop;animation-duration:250ms}.slidedown.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slidedown.out.reverse{-webkit-transform:translateY(-100%);-webkit-animation-name:slideouttotop;-webkit-animation-duration:200ms;-moz-transform:translateY(-100%);-moz-animation-name:slideouttotop;-moz-animation-duration:200ms;transform:translateY(-100%);animation-name:slideouttotop;animation-duration:200ms}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfromtop{from{-moz-transform:translateY(-100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfromtop{from{transform:translateY(-100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-moz-keyframes slideouttotop{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(-100%)}}@keyframes slideouttotop{from{transform:translateY(0)}to{transform:translateY(-100%)}}.slideup.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfrombottom;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfrombottom;animation-duration:250ms}.slideup.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slideup.out.reverse{-webkit-transform:translateY(100%);-webkit-animation-name:slideouttobottom;-webkit-animation-duration:200ms;-moz-transform:translateY(100%);-moz-animation-name:slideouttobottom;-moz-animation-duration:200ms;transform:translateY(100%);animation-name:slideouttobottom;animation-duration:200ms}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfrombottom{from{-moz-transform:translateY(100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfrombottom{from{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-moz-keyframes slideouttobottom{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(100%)}}@keyframes slideouttobottom{from{transform:translateY(0)}to{transform:translateY(100%)}}.viewport-flip{-webkit-perspective:1000;-moz-perspective:1000;perspective:1000;position:absolute}.flip{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-moz-backface-visibility:hidden;-moz-transform:translateX(0);backface-visibility:hidden;transform:translateX(0)}.flip.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:175ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:175ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:175ms}.flip.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:225ms;-moz-animation-name:flipintoright;-moz-animation-duration:225ms;animation-name:flipintoright;animation-duration:225ms}.flip.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.flip.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.viewport-turn{-webkit-perspective:200px;-moz-perspective:200px;-ms-perspective:200px;perspective:200px;position:absolute}.turn{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-webkit-transform-origin:0;-moz-backface-visibility:hidden;-moz-transform:translateX(0);-moz-transform-origin:0;backface-visibility:hidden;transform:translateX(0);transform-origin:0}.turn.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:125ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:125ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:125ms}.turn.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:250ms;-moz-animation-name:flipintoright;-moz-animation-duration:250ms;animation-name:flipintoright;animation-duration:250ms}.turn.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.turn.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.flow{-webkit-transform-origin:50% 30%;-webkit-box-shadow:0 0 20px rgba(0,0,0,.4);-moz-transform-origin:50% 30%;-moz-box-shadow:0 0 20px rgba(0,0,0,.4);transform-origin:50% 30%;box-shadow:0 0 20px rgba(0,0,0,.4)}.ui-dialog.flow{-webkit-transform-origin:none;-webkit-box-shadow:none;-moz-transform-origin:none;-moz-box-shadow:none;transform-origin:none;box-shadow:none}.flow.out{-webkit-transform:translateX(-100%) scale(.7);-webkit-animation-name:flowouttoleft;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(-100%) scale(.7);-moz-animation-name:flowouttoleft;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(-100%) scale(.7);animation-name:flowouttoleft;animation-timing-function:ease;animation-duration:350ms}.flow.in{-webkit-transform:translateX(0) scale(1);-webkit-animation-name:flowinfromright;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(0) scale(1);-moz-animation-name:flowinfromright;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(0) scale(1);animation-name:flowinfromright;animation-timing-function:ease;animation-duration:350ms}.flow.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:flowouttoright;-moz-transform:translateX(100%);-moz-animation-name:flowouttoright;transform:translateX(100%);animation-name:flowouttoright}.flow.in.reverse{-webkit-animation-name:flowinfromleft;-moz-animation-name:flowinfromleft;animation-name:flowinfromleft}@-webkit-keyframes flowouttoleft{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(-100%) scale(.7)}}@-moz-keyframes flowouttoleft{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(-100%) scale(.7)}}@keyframes flowouttoleft{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(-100%) scale(.7)}}@-webkit-keyframes flowouttoright{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(100%) scale(.7)}}@-moz-keyframes flowouttoright{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(100%) scale(.7)}}@keyframes flowouttoright{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(100%) scale(.7)}}@-webkit-keyframes flowinfromleft{0%{-webkit-transform:translateX(-100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromleft{0%{-moz-transform:translateX(-100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromleft{0%{transform:translateX(-100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}@-webkit-keyframes flowinfromright{0%{-webkit-transform:translateX(100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromright{0%{-moz-transform:translateX(100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromright{0%{transform:translateX(100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}.ui-field-contain,.ui-mobile fieldset.ui-field-contain{display:block;position:relative;overflow:visible;clear:both;padding:.8em 0}.ui-field-contain>label~[class*=ui-],.ui-field-contain .ui-controlgroup-controls{margin:0}.ui-field-contain:last-child{border-bottom-width:0}@media (min-width:28em){.ui-field-contain,.ui-mobile fieldset.ui-field-contain{padding:0;margin:1em 0;border-bottom-width:0}.ui-field-contain:before,.ui-field-contain:after{content:"";display:table}.ui-field-contain:after{clear:both}.ui-field-contain>label,.ui-field-contain .ui-controlgroup-label,.ui-field-contain>.ui-rangeslider>label{float:left;width:20%;margin:.5em 2% 0 0}.ui-popup .ui-field-contain>label,.ui-popup .ui-field-contain .ui-controlgroup-label,.ui-popup .ui-field-contain>.ui-rangeslider>label{float:none;width:auto;margin:0 0 .4em}.ui-field-contain>label~[class*=ui-],.ui-field-contain .ui-controlgroup-controls{float:left;width:78%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-hide-label>label~[class*=ui-],.ui-hide-label .ui-controlgroup-controls,.ui-popup .ui-field-contain>label~[class*=ui-],.ui-popup .ui-field-contain .ui-controlgroup-controls{float:none;width:100%}.ui-field-contain>label~.ui-btn-inline{width:auto;margin-right:.625em}.ui-field-contain>label~.ui-btn-inline.ui-btn-icon-notext{width:1.75em}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d,.ui-grid-solo{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;min-height:1px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-block-a{clear:left}ul.ui-grid-a,ul.ui-grid-b,ul.ui-grid-c,ul.ui-grid-d,ul.ui-grid-solo,li.ui-block-a,li.ui-block-b,li.ui-block-c,li.ui-block-d,li.ui-block-e{margin-left:0;margin-right:0;padding:0;list-style:none}[class*=ui-block-]>button.ui-btn{margin-right:0;margin-left:0}[class*=ui-block-]>.ui-btn,[class*=ui-block-]>.ui-select,[class*=ui-block-]>.ui-checkbox,[class*=ui-block-]>.ui-radio,[class*=ui-block-]>button.ui-btn-inline,[class*=ui-block-]>button.ui-btn-icon-notext,.ui-header [class*=ui-block-]>button.ui-btn,.ui-footer [class*=ui-block-]>button.ui-btn{margin-right:.3125em;margin-left:.3125em}.ui-grid-a>.ui-block-a,.ui-grid-a>.ui-block-b{width:50%}.ui-grid-b>.ui-block-a,.ui-grid-b>.ui-block-b,.ui-grid-b>.ui-block-c{width:33.333%}.ui-grid-c>.ui-block-a,.ui-grid-c>.ui-block-b,.ui-grid-c>.ui-block-c,.ui-grid-c>.ui-block-d{width:25%}.ui-grid-d>.ui-block-a,.ui-grid-d>.ui-block-b,.ui-grid-d>.ui-block-c,.ui-grid-d>.ui-block-d,.ui-grid-d>.ui-block-e{width:20%}.ui-grid-solo>.ui-block-a{width:100%;float:none}@media (max-width:35em){.ui-responsive>.ui-block-a,.ui-responsive>.ui-block-b,.ui-responsive>.ui-block-c,.ui-responsive>.ui-block-d,.ui-responsive>.ui-block-e{width:100%;float:none}}.ui-header-fixed,.ui-footer-fixed{left:0;right:0;width:100%;position:fixed;z-index:1000}.ui-header-fixed{top:-1px;padding-top:1px}.ui-header-fixed.ui-fixed-hidden{top:0;padding-top:0}.ui-header-fixed .ui-btn-left,.ui-header-fixed .ui-btn-right{margin-top:1px}.ui-header-fixed.ui-fixed-hidden .ui-btn-left,.ui-header-fixed.ui-fixed-hidden .ui-btn-right{margin-top:0}.ui-footer-fixed{bottom:-1px;padding-bottom:1px}.ui-footer-fixed.ui-fixed-hidden{bottom:0;padding-bottom:0}.ui-header-fullscreen,.ui-footer-fullscreen{filter:Alpha(Opacity=90);opacity:.9}.ui-page-header-fixed{padding-top:2.8125em}.ui-page-footer-fixed{padding-bottom:2.8125em}.ui-page-header-fullscreen>.ui-content,.ui-page-footer-fullscreen>.ui-content{padding:0}.ui-fixed-hidden{position:absolute}.ui-footer-fixed.ui-fixed-hidden{display:none}.ui-page .ui-footer-fixed.ui-fixed-hidden{display:block}.ui-page-header-fullscreen .ui-fixed-hidden,.ui-page-footer-fullscreen .ui-fixed-hidden{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-header-fixed .ui-btn,.ui-footer-fixed .ui-btn{z-index:10}.ui-android-2x-fixed .ui-li-has-thumb{-webkit-transform:translate3d(0,0,0)}.ui-navbar{max-width:100%}.ui-navbar ul:before,.ui-navbar ul:after{content:"";display:table}.ui-navbar ul:after{clear:both}.ui-navbar ul{list-style:none;margin:0;padding:0;position:relative;display:block;border:0;max-width:100%;overflow:visible}.ui-navbar li .ui-btn{font-size:12.5px;display:block;margin:0;border-right-width:0}.ui-header .ui-navbar li button.ui-btn,.ui-footer .ui-navbar li button.ui-btn{margin:0;width:100%}.ui-navbar .ui-btn:focus{z-index:1}.ui-navbar li:last-child .ui-btn{margin-right:-4px}.ui-navbar li:last-child .ui-btn:after{margin-right:4px}.ui-content .ui-navbar li:last-child .ui-btn,.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn{border-right-width:1px;margin-right:0}.ui-content .ui-navbar li:last-child .ui-btn:after,.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn:after{margin-right:0}.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn{border-right-width:1px;margin-right:-1px}.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn:after{margin-right:1px}.ui-navbar .ui-grid-duo .ui-btn{border-top-width:0}.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn{border-top-width:1px}.ui-header .ui-navbar .ui-btn,.ui-footer .ui-navbar .ui-btn{border-top-width:0;border-bottom-width:0}.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn{border-top-width:0}.ui-header .ui-title~.ui-navbar .ui-btn,.ui-footer .ui-title~.ui-navbar .ui-btn,.ui-header .ui-navbar .ui-grid-duo .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-btn,.ui-header .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-footer .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-header .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn,.ui-footer .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn{border-top-width:1px}.ui-input-btn input{position:absolute;top:0;left:0;width:100%;height:100%;padding:0;border:0;outline:0;-webkit-border-radius:inherit;border-radius:inherit;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=0);opacity:.1;font-size:1px;text-indent:-9999px;z-index:2}.ui-input-btn.ui-state-disabled input{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-collapsible{margin:0 -1em}.ui-collapsible-inset,.ui-collapsible-set{margin:.5em 0}.ui-collapsible-heading{display:block;margin:0;padding:0;position:relative}.ui-collapsible-heading .ui-btn{text-align:left;margin:0;border-left-width:0;border-right-width:0}.ui-collapsible-heading .ui-btn-icon-top,.ui-collapsible-heading .ui-btn-icon-bottom{text-align:center}.ui-collapsible-inset .ui-collapsible-heading .ui-btn{border-right-width:1px;border-left-width:1px}.ui-collapsible-collapsed+.ui-collapsible:not(.ui-collapsible-inset)>.ui-collapsible-heading .ui-btn{border-top-width:0}.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:1px}.ui-collapsible-heading-status{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-collapsible-content{display:block;margin:0;padding:.5em 1em}.ui-collapsible-themed-content .ui-collapsible-content{border-left-width:0;border-right-width:0;border-top-width:0;border-bottom-width:1px;border-style:solid}.ui-collapsible-inset.ui-collapsible-themed-content .ui-collapsible-content{border-left-width:1px;border-right-width:1px}.ui-collapsible-inset .ui-collapsible-content{margin:0}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set>.ui-collapsible.ui-corner-all{-webkit-border-radius:0;border-radius:0}.ui-collapsible-heading,.ui-collapsible-heading>.ui-btn{-webkit-border-radius:inherit;border-radius:inherit}.ui-collapsible-set .ui-collapsible.ui-first-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-collapsible-content,.ui-collapsible-set .ui-collapsible.ui-last-child{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-collapsible-themed-content:not(.ui-collapsible-collapsed)>.ui-collapsible-heading{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui-collapsible-set .ui-collapsible{margin:-1px -1em 0}.ui-collapsible-set .ui-collapsible-inset{margin:-1px 0 0}.ui-collapsible-set .ui-collapsible.ui-first-child{margin-top:0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0}.ui-field-contain .ui-controlgroup,.ui-field-contain fieldset.ui-controlgroup{margin:0}.ui-mini .ui-controlgroup-label{font-size:16px}.ui-controlgroup.ui-mini .ui-btn-icon-notext,.ui-controlgroup .ui-mini.ui-btn-icon-notext{font-size:inherit}.ui-controlgroup-controls .ui-btn,.ui-controlgroup-controls .ui-checkbox,.ui-controlgroup-controls .ui-radio,.ui-controlgroup-controls .ui-select{margin:0}.ui-controlgroup-controls .ui-btn:focus,.ui-controlgroup-controls .ui-btn.ui-focus{z-index:1}.ui-controlgroup-controls li{list-style:none}.ui-controlgroup-horizontal .ui-controlgroup-controls{display:inline-block;vertical-align:middle}.ui-controlgroup-horizontal .ui-controlgroup-controls:before,.ui-controlgroup-horizontal .ui-controlgroup-controls:after{content:"";display:table}.ui-controlgroup-horizontal .ui-controlgroup-controls:after{clear:both}.ui-controlgroup-horizontal .ui-controlgroup-controls>.ui-btn,.ui-controlgroup-horizontal .ui-controlgroup-controls li>.ui-btn,.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-checkbox,.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-radio,.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-select{float:left;clear:none}.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn,.ui-controlgroup-controls .ui-btn-icon-notext{width:auto}.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn-icon-notext,.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn-icon-notext{width:1.5em}.ui-controlgroup-controls .ui-btn-icon-notext{height:auto;padding:.7em 1em}.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn{border-bottom-width:0}.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn.ui-last-child{border-bottom-width:1px}.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn{border-right-width:0}.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn.ui-last-child{border-right-width:1px}.ui-controlgroup-controls .ui-btn-corner-all,.ui-controlgroup-controls .ui-btn.ui-corner-all{-webkit-border-radius:0;border-radius:0}.ui-controlgroup-controls,.ui-controlgroup-controls .ui-radio,.ui-controlgroup-controls .ui-checkbox,.ui-controlgroup-controls .ui-select,.ui-controlgroup-controls li{-webkit-border-radius:inherit;border-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-last-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup-controls a.ui-shadow:not(:focus),.ui-controlgroup-controls button.ui-shadow:not(:focus),.ui-controlgroup-controls div.ui-shadow:not(.ui-focus){-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.ui-controlgroup-label legend{max-width:100%}.ui-controlgroup-controls>label{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-dialog{background:none!important}.ui-dialog-contain{width:92.5%;max-width:500px;margin:10% auto 1em;padding:0;position:relative;top:-1em}.ui-dialog-contain>.ui-header,.ui-dialog-contain>.ui-content,.ui-dialog-contain>.ui-footer{display:block;position:relative;width:auto;margin:0}.ui-dialog-contain>.ui-header{overflow:hidden;z-index:10;padding:0;border-top-width:0}.ui-dialog-contain>.ui-footer{z-index:10;padding:0 1em;border-bottom-width:0}.ui-popup-open .ui-header-fixed,.ui-popup-open .ui-footer-fixed{position:absolute!important}.ui-popup-screen{background-image:url("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==");top:0;left:0;right:0;bottom:1px;position:absolute;filter:Alpha(Opacity=0);opacity:0;z-index:1099}.ui-popup-screen.in{opacity:.5;filter:Alpha(Opacity=50)}.ui-popup-screen.out{opacity:0;filter:Alpha(Opacity=0)}.ui-popup-container{z-index:1100;display:inline-block;position:absolute;padding:0;outline:0}.ui-popup{position:relative}.ui-popup.ui-body-inherit{border-width:1px;border-style:solid}.ui-popup-hidden{left:0;top:0;position:absolute!important;visibility:hidden}.ui-popup-truncate{height:1px;width:1px;margin:-1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-popup.ui-content,.ui-popup .ui-content{overflow:visible}.ui-popup>.ui-header{border-top-width:0}.ui-popup>.ui-footer{border-bottom-width:0}.ui-popup>p,.ui-popup>h1,.ui-popup>h2,.ui-popup>h3,.ui-popup>h4,.ui-popup>h5,.ui-popup>h6{margin:.5em .4375em}.ui-popup>span{display:block;margin:.5em .4375em}.ui-popup-container .ui-content>p,.ui-popup-container .ui-content>h1,.ui-popup-container .ui-content>h2,.ui-popup-container .ui-content>h3,.ui-popup-container .ui-content>h4,.ui-popup-container .ui-content>h5,.ui-popup-container .ui-content>h6{margin:.5em 0}.ui-popup-container .ui-content>span{margin:0}.ui-popup-container .ui-content>p:first-child,.ui-popup-container .ui-content>h1:first-child,.ui-popup-container .ui-content>h2:first-child,.ui-popup-container .ui-content>h3:first-child,.ui-popup-container .ui-content>h4:first-child,.ui-popup-container .ui-content>h5:first-child,.ui-popup-container .ui-content>h6:first-child{margin-top:0}.ui-popup-container .ui-content>p:last-child,.ui-popup-container .ui-content>h1:last-child,.ui-popup-container .ui-content>h2:last-child,.ui-popup-container .ui-content>h3:last-child,.ui-popup-container .ui-content>h4:last-child,.ui-popup-container .ui-content>h5:last-child,.ui-popup-container .ui-content>h6:last-child{margin-bottom:0}.ui-popup>img{max-width:100%;max-height:100%;vertical-align:middle}.ui-popup:not(.ui-content)>img:only-child,.ui-popup:not(.ui-content)>.ui-btn-left:first-child+img:last-child,.ui-popup:not(.ui-content)>.ui-btn-right:first-child+img:last-child{-webkit-border-radius:inherit;border-radius:inherit}.ui-popup iframe{vertical-align:middle}.ui-popup>.ui-btn-left,.ui-popup>.ui-btn-right{position:absolute;top:-11px;margin:0;z-index:1101}.ui-popup>.ui-btn-left{left:-11px}.ui-popup>.ui-btn-right{right:-11px}.ui-popup-arrow-container{width:20px;height:20px}.ui-popup-arrow-container.ui-popup-arrow-l{left:-10px;clip:rect(-1000px,10px,2000px,-1000px)}.ui-popup-arrow-container.ui-popup-arrow-t{top:-10px;clip:rect(-1000px,2000px,10px,-1000px)}.ui-popup-arrow-container.ui-popup-arrow-r{right:-10px;clip:rect(-1000px,2000px,2000px,10px)}.ui-popup-arrow-container.ui-popup-arrow-b{bottom:-10px;clip:rect(10px,2000px,1000px,-1000px)}.ui-popup-arrow-container .ui-popup-arrow{width:28.284271247px;height:28.284271247px;border-width:1px;border-style:solid}.ui-popup-arrow-container.ui-popup-arrow-t .ui-popup-arrow{left:-4.142135623px;top:5.857864376px}.ui-popup-arrow-container.ui-popup-arrow-b .ui-popup-arrow{left:-4.142135623px;top:-14.142135623px}.ui-popup-arrow-container.ui-popup-arrow-l .ui-popup-arrow{left:5.857864376px;top:-4.142135623px}.ui-popup-arrow-container.ui-popup-arrow-r .ui-popup-arrow{left:-14.142135623px;top:-4.142135623px}.ui-popup-arrow-container.ui-popup-arrow-t.ie .ui-popup-arrow{margin-left:-5.857864376269049px;margin-top:-7.0710678118654755px}.ui-popup-arrow-container.ui-popup-arrow-b.ie .ui-popup-arrow{margin-left:-5.857864376269049px;margin-top:-4.142135623730951px}.ui-popup-arrow-container.ui-popup-arrow-l.ie .ui-popup-arrow{margin-left:-7.0710678118654755px;margin-top:-5.857864376269049px}.ui-popup-arrow-container.ui-popup-arrow-r.ie .ui-popup-arrow{margin-left:-4.142135623730951px;margin-top:-5.857864376269049px}.ui-popup>.ui-popup-arrow-guide{position:absolute;left:0;right:0;top:0;bottom:0;visibility:hidden}.ui-popup-arrow-container{position:absolute}.ui-popup-arrow{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);position:absolute;overflow:hidden;box-sizing:border-box}.ui-popup-arrow-container.ie .ui-popup-arrow{-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.7071067811865474, M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865474, SizingMethod='auto expand')";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.7071067811865474, M12=-.7071067811865477, M21=.7071067811865477, M22=.7071067811865474, SizingMethod='auto expand')}.ui-checkbox,.ui-radio{margin:.5em 0;position:relative}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin:0;text-align:left;white-space:normal;z-index:2}.ui-controlgroup .ui-checkbox .ui-btn.ui-focus,.ui-controlgroup .ui-radio .ui-btn.ui-focus{z-index:3}.ui-checkbox .ui-btn-icon-top,.ui-radio .ui-btn-icon-top,.ui-checkbox .ui-btn-icon-bottom,.ui-radio .ui-btn-icon-bottom{text-align:center}.ui-controlgroup-horizontal .ui-checkbox .ui-btn:after,.ui-controlgroup-horizontal .ui-radio .ui-btn:after{content:none;display:none}.ui-checkbox input,.ui-radio input{position:absolute;left:.466em;top:50%;width:22px;height:22px;margin:-11px 0 0 0;outline:0!important;z-index:1}.ui-controlgroup-horizontal .ui-checkbox input,.ui-controlgroup-horizontal .ui-radio input{left:50%;margin-left:-9px}.ui-checkbox input:disabled,.ui-radio input:disabled{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-select{margin-top:.5em;margin-bottom:.5em;position:relative}.ui-select>select{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-select .ui-btn{margin:0;opacity:1}.ui-select .ui-btn select{position:absolute;top:0;left:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;outline:0;-webkit-border-radius:inherit;border-radius:inherit;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;filter:Alpha(Opacity=0);opacity:0;z-index:2}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-state-disabled select{display:none}.ui-select span.ui-state-disabled{filter:Alpha(Opacity=100);opacity:1}.ui-select .ui-btn.ui-select-nativeonly{border-radius:0;border:0}.ui-select .ui-btn.ui-select-nativeonly select{opacity:1;text-indent:0;display:block}.ui-select .ui-li-has-count.ui-btn{padding-right:2.8125em}.ui-select .ui-li-has-count.ui-btn-icon-right{padding-right:4.6875em}.ui-select .ui-btn-icon-right .ui-li-count{right:3.2em}.ui-select .ui-btn>span:not(.ui-li-count){display:block;text-overflow:ellipsis;overflow:hidden!important;white-space:nowrap}.ui-selectmenu.ui-popup{min-width:11em}.ui-selectmenu .ui-dialog-contain{overflow:hidden}.ui-selectmenu .ui-header{margin:0;padding:0;border-width:0}.ui-selectmenu.ui-dialog .ui-header{z-index:1;position:relative}.ui-selectmenu.ui-popup .ui-header{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui-selectmenu.ui-popup .ui-header h1:after{content:'.';visibility:hidden}.ui-selectmenu .ui-header .ui-title{margin:0 2.875em}.ui-selectmenu.ui-dialog .ui-content{overflow:visible;z-index:1}.ui-selectmenu .ui-selectmenu-list{margin:0;-webkit-border-radius:inherit;border-radius:inherit}.ui-header:not(.ui-screen-hidden)+.ui-selectmenu-list{-webkit-border-top-right-radius:0;border-top-right-radius:0;-webkit-border-top-left-radius:0;border-top-left-radius:0}.ui-header.ui-screen-hidden+.ui-selectmenu-list li.ui-first-child .ui-btn{border-top-width:0}.ui-selectmenu .ui-selectmenu-list li.ui-last-child .ui-btn{border-bottom-width:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-selectmenu .ui-selectmenu-placeholder{display:none}.ui-listview,.ui-listview>li{margin:0;padding:0;list-style:none}.ui-content .ui-listview,.ui-panel-inner>.ui-listview{margin:-1em}.ui-content .ui-listview-inset,.ui-panel-inner>.ui-listview-inset{margin:1em 0}.ui-collapsible-content>.ui-listview{margin:-.5em -1em}.ui-collapsible-content>.ui-listview-inset{margin:.5em 0}.ui-listview>li{display:block;position:relative;overflow:visible}.ui-listview>.ui-li-static,.ui-listview>.ui-li-divider,.ui-listview>li>a.ui-btn{margin:0;display:block;position:relative;text-align:left;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-listview>li>.ui-btn:focus{z-index:1}.ui-listview>.ui-li-static,.ui-listview>.ui-li-divider,.ui-listview>li>a.ui-btn{border-width:1px 0 0;border-style:solid}.ui-listview-inset>.ui-li-static,.ui-listview-inset>.ui-li-divider,.ui-listview-inset>li>a.ui-btn{border-right-width:1px;border-left-width:1px}.ui-listview>.ui-li-static.ui-last-child,.ui-listview>.ui-li-divider.ui-last-child,.ui-listview>li.ui-last-child>a.ui-btn{border-bottom-width:1px}.ui-collapsible-content>.ui-listview:not(.ui-listview-inset)>li.ui-first-child,.ui-collapsible-content>.ui-listview:not(.ui-listview-inset)>li.ui-first-child>a.ui-btn{border-top-width:0}.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset)>li.ui-last-child,.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset)>li.ui-last-child>a.ui-btn{border-bottom-width:0}.ui-listview>li.ui-first-child,.ui-listview>li.ui-first-child>a.ui-btn{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>li.ui-last-child,.ui-listview>li.ui-last-child>a.ui-btn{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-listview>li.ui-li-has-alt>a.ui-btn{-webkit-border-top-right-radius:0;border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.ui-listview>li.ui-first-child>a.ui-btn+a.ui-btn{-webkit-border-top-left-radius:0;border-top-left-radius:0;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-listview>li.ui-last-child>a.ui-btn+a.ui-btn{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-listview>li.ui-first-child img:first-child:not(.ui-li-icon){-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>li.ui-last-child img:first-child:not(.ui-li-icon){-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-collapsible-content>.ui-listview:not(.ui-listview-inset){-webkit-border-radius:inherit;border-radius:inherit}.ui-listview>.ui-li-static{padding:.7em 1em}.ui-listview>.ui-li-divider{padding:.5em 1.143em;font-size:14px;font-weight:700;cursor:default;outline:0}.ui-listview>.ui-li-has-count>.ui-btn,.ui-listview>.ui-li-static.ui-li-has-count,.ui-listview>.ui-li-divider.ui-li-has-count{padding-right:2.8125em}.ui-listview>.ui-li-has-count>.ui-btn-icon-right{padding-right:4.6875em}.ui-listview>.ui-li-has-thumb>.ui-btn,.ui-listview>.ui-li-static.ui-li-has-thumb{min-height:3.625em;padding-left:6.25em}.ui-listview>.ui-li-has-icon>.ui-btn,.ui-listview>.ui-li-static.ui-li-has-icon{min-height:1.25em;padding-left:2.5em}.ui-li-count{position:absolute;font-size:12.5px;font-weight:700;text-align:center;border-width:1px;border-style:solid;padding:0 .48em;line-height:1.6em;min-height:1.6em;min-width:.64em;right:.8em;top:50%;margin-top:-.88em}.ui-listview .ui-btn-icon-right .ui-li-count{right:3.2em}.ui-listview .ui-li-has-thumb>img:first-child,.ui-listview .ui-li-has-thumb>.ui-btn>img:first-child,.ui-listview .ui-li-has-thumb .ui-li-thumb{position:absolute;left:0;top:0;max-height:5em;max-width:5em}.ui-listview>.ui-li-has-icon>img:first-child,.ui-listview>.ui-li-has-icon>.ui-btn>img:first-child{position:absolute;left:.625em;top:.9em;max-height:1em;max-width:1em}.ui-listview>li h1,.ui-listview>li h2,.ui-listview>li h3,.ui-listview>li h4,.ui-listview>li h5,.ui-listview>li h6{font-size:1em;font-weight:700;display:block;margin:.45em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-listview>li p{font-size:.75em;font-weight:400;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-listview .ui-li-aside{position:absolute;top:1em;right:3.333em;margin:0;text-align:right}.ui-listview>li.ui-li-has-alt>.ui-btn{margin-right:2.5em;border-right-width:0}.ui-listview>li.ui-li-has-alt>.ui-btn+.ui-btn{position:absolute;width:2.5em;height:100%;min-height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-left-width:1px;top:0;right:0;margin:0;padding:0;z-index:2}.ui-listview-inset>li.ui-li-has-alt>.ui-btn+.ui-btn{border-right-width:1px}.ui-listview>li.ui-li-has-alt>.ui-btn+.ui-btn:focus{z-index:3}ol.ui-listview,ol.ui-listview>.ui-li-divider{counter-reset:listnumbering}ol.ui-listview>li>.ui-btn,ol.ui-listview>li.ui-li-static{vertical-align:middle}ol.ui-listview>li>.ui-btn:first-child:before,ol.ui-listview>li.ui-li-static:before,ol.ui-listview>li.ui-field-contain>label:before,ol.ui-listview>li.ui-field-contain>.ui-controlgroup-label:before{display:inline-block;font-size:.9em;font-weight:400;padding-right:.3em;min-width:1.4em;line-height:1.5;vertical-align:middle;counter-increment:listnumbering;content:counter(listnumbering) "."}ol.ui-listview>li.ui-field-contain:before{content:none;display:none}ol.ui-listview>li h1:first-child,ol.ui-listview>li h2:first-child,ol.ui-listview>li h3:first-child,ol.ui-listview>li h4:first-child,ol.ui-listview>li h5:first-child,ol.ui-listview>li h6:first-child,ol.ui-listview>li p:first-child,ol.ui-listview>li img:first-child+*{display:inline-block;vertical-align:middle}ol.ui-listview>li h1:first-child~*,ol.ui-listview>li h2:first-child~*,ol.ui-listview>li h3:first-child~*,ol.ui-listview>li h4:first-child~*,ol.ui-listview>li h5:first-child~*,ol.ui-listview>li h6:first-child~*,ol.ui-listview>li p:first-child~*,ol.ui-listview>li img:first-child+*~*{margin-top:0;text-indent:2.04em}html .ui-filterable+.ui-listview,html .ui-filterable.ui-listview{margin-top:.5em}.ui-collapsible-content>form.ui-filterable{margin-top:-.5em}.ui-collapsible-content>.ui-input-search.ui-filterable{margin-top:0}.ui-collapsible-content>.ui-filterable+.ui-listview:not(.ui-listview-inset)>li.ui-first-child,.ui-collapsible-content>.ui-filterable+.ui-listview:not(.ui-listview-inset)>li.ui-first-child>a.ui-btn,.ui-collapsible-content>.ui-filterable.ui-listview:not(.ui-listview-inset)>li.ui-first-child,.ui-collapsible-content>.ui-filterable.ui-listview:not(.ui-listview-inset)>li.ui-first-child>a.ui-btn{border-top-width:1px}div.ui-slider{height:30px;margin:.5em 0;padding:0;-ms-touch-action:pan-y pinch-zoom double-tap-zoom}div.ui-slider:before,div.ui-slider:after{content:"";display:table}div.ui-slider:after{clear:both}input.ui-slider-input{display:block;float:left;font-size:14px;font-weight:700;margin:0;padding:4px;width:40px;height:20px;line-height:20px;border-width:1px;border-style:solid;outline:0;text-align:center;vertical-align:text-bottom;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.ui-slider-input::-webkit-outer-spin-button,.ui-slider-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ui-slider-track{position:relative;overflow:visible;border-width:1px;border-style:solid;height:15px;margin:0 15px 0 68px;top:6px}.ui-slider-track.ui-mini{height:12px;top:8px}.ui-slider-track .ui-slider-bg{height:100%}.ui-slider-track .ui-btn.ui-slider-handle{position:absolute;z-index:1;top:50%;width:28px;height:28px;margin:-15px 0 0 -15px;outline:0;padding:0}.ui-slider-track.ui-mini .ui-slider-handle{height:14px;width:14px;margin:-8px 0 0 -8px}select.ui-slider-switch{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}div.ui-slider-switch{display:inline-block;height:32px;width:5.8em;top:0}div.ui-slider-switch:before,div.ui-slider-switch:after{display:none;clear:none}div.ui-slider-switch.ui-mini{height:29px;top:0}.ui-slider-inneroffset{margin:0 16px;position:relative;z-index:1}.ui-slider-switch.ui-mini .ui-slider-inneroffset{margin:0 15px 0 14px}.ui-slider-switch .ui-btn.ui-slider-handle{margin:1px 0 0 -15px}.ui-slider-switch.ui-mini .ui-slider-handle{width:25px;height:25px;margin:1px 0 0 -13px;padding:0}.ui-slider-handle-snapping{-webkit-transition:left 70ms linear;-moz-transition:left 70ms linear;transition:left 70ms linear}.ui-slider-switch .ui-slider-label{position:absolute;text-align:center;width:100%;overflow:hidden;font-size:16px;top:0;line-height:2;min-height:100%;white-space:nowrap;cursor:pointer}.ui-slider-switch.ui-mini .ui-slider-label{font-size:14px}.ui-slider-switch .ui-slider-label-a{z-index:1;left:0;text-indent:-1.5em}.ui-slider-switch .ui-slider-label-b{z-index:0;right:0;text-indent:1.5em}.ui-slider-track .ui-slider-bg,.ui-slider-switch .ui-slider-label,.ui-slider-switch .ui-slider-inneroffset,.ui-slider-handle{-webkit-border-radius:inherit;border-radius:inherit}.ui-field-contain div.ui-slider-switch{margin:0}.ui-field-contain div.ui-slider-switch,.ui-field-contain.ui-hide-label div.ui-slider-switch,html .ui-popup .ui-field-contain div.ui-slider-switch{display:inline-block;width:5.8em}.ui-slider-popup{width:64px;height:64px;font-size:36px;padding-top:14px;opacity:.8}.ui-slider-popup{position:absolute!important;text-align:center;z-index:100}.ui-slider-track .ui-btn.ui-slider-handle{font-size:.9em;line-height:30px}.ui-rangeslider{margin:.5em 0}.ui-rangeslider:before,.ui-rangeslider:after{content:"";display:table}.ui-rangeslider:after{clear:both}.ui-rangeslider .ui-slider-input.ui-rangeslider-last{float:right}.ui-rangeslider .ui-rangeslider-sliders{position:relative;overflow:visible;height:30px;margin:0 68px}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track{position:absolute;top:6px;right:0;left:0;margin:0}.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track{top:8px}.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg{display:none}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{background-color:transparent;background:0;border-width:0;height:0}html >body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{height:15px;border-width:1px}html >body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child{height:12px}div.ui-rangeslider label{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-field-contain .ui-rangeslider input.ui-slider-input,.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders{margin-top:0;margin-bottom:0}.ui-input-text,.ui-input-search{margin:.5em 0;border-width:1px;border-style:solid}.ui-mini{margin:.446em}.ui-input-text input,.ui-input-search input,textarea.ui-input-text{padding:.4em;line-height:1.4em;display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;outline:0}.ui-input-text input,.ui-input-search input{margin:0;min-height:2.2em;text-align:left;border:0;background:transparent none;-webkit-appearance:none;-webkit-border-radius:inherit;border-radius:inherit}textarea.ui-input-text{overflow:auto;resize:vertical}.ui-mini .ui-input-text input,.ui-mini .ui-input-search input,.ui-input-text.ui-mini input,.ui-input-search.ui-mini input,.ui-mini textarea.ui-input-text,textarea.ui-mini{font-size:14px}.ui-mini textarea.ui-input-text,textarea.ui-mini{margin:.446em 0}.ui-input-has-clear,.ui-input-search{position:relative}.ui-input-has-clear{padding-right:2.375em}.ui-mini.ui-input-has-clear{padding-right:2.923em}.ui-input-has-clear input{padding-right:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.ui-input-search input{padding-left:1.75em}.ui-input-search:after{position:absolute;left:.3125em;top:50%;margin-top:-7px;content:"";background-position:center center;background-repeat:no-repeat;width:14px;height:14px;filter:Alpha(Opacity=50);opacity:.5}.ui-input-search.ui-input-has-clear .ui-btn.ui-input-clear,.ui-input-text.ui-input-has-clear .ui-btn.ui-input-clear{position:absolute;right:0;top:50%;margin:-14px .3125em 0;border:0;background-color:transparent}.ui-input-search .ui-input-clear-hidden,.ui-input-text .ui-input-clear-hidden{display:none}.ui-input-text input::-moz-placeholder,.ui-input-search input::-moz-placeholder,textarea.ui-input-text::-moz-placeholder{color:#aaa}.ui-input-text input:-ms-input-placeholder,.ui-input-search input:-ms-input-placeholder,textarea.ui-input-text:-ms-input-placeholder{color:#aaa}.ui-input-text input[type=number]::-webkit-outer-spin-button{margin:0}.ui-input-text input::-ms-clear,.ui-input-search input::-ms-clear{display:none}.ui-input-text input:focus,.ui-input-search input:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}textarea.ui-input-text.ui-textinput-autogrow{overflow:hidden}.ui-textinput-autogrow-resize{-webkit-transition:height .25s;-o-transition:height .25s;-moz-transition:height .25s;transition:height .25s}.ui-flipswitch{display:inline-block;vertical-align:middle;width:5.875em;height:1.875em;border-width:1px;border-style:solid;margin:.5em 0;overflow:hidden;-webkit-transition-property:padding,width,background-color,color,border-color;-moz-transition-property:padding,width,background-color,color,border-color;-o-transition-property:padding,width,background-color,color,border-color;transition-property:padding,width,background-color,color,border-color;-webkit-transition-duration:100ms;-moz-transition-duration:100ms;-o-transition-duration:100ms;transition-duration:100ms;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.ui-flipswitch.ui-flipswitch-active{padding-left:4em;width:1.875em}.ui-flipswitch-input{position:absolute;height:1px;width:1px;margin:-1px;overflow:hidden;clip:rect(1px,1px,1px,1px);border:0;outline:0;filter:Alpha(Opacity=0);opacity:0}.ui-flipswitch .ui-btn.ui-flipswitch-on,.ui-flipswitch .ui-flipswitch-off{float:left;height:1.75em;margin:.0625em;line-height:1.65em}.ui-flipswitch .ui-btn.ui-flipswitch-on{width:1.75em;padding:0;text-indent:-2.6em;text-align:left;border-width:1px;border-style:solid;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:inherit;overflow:visible;color:inherit;text-shadow:inherit}.ui-flipswitch .ui-flipswitch-off{padding:1px;text-indent:1em}html .ui-field-contain>label+.ui-flipswitch,html .ui-popup .ui-field-contain>label+.ui-flipswitch{display:inline-block;width:5.875em;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.ui-field-contain .ui-flipswitch.ui-flipswitch-active,.ui-popup .ui-field-contain .ui-flipswitch.ui-flipswitch-active{width:1.875em}.ui-table{border:0;border-collapse:collapse;padding:0;width:100%}.ui-table th,.ui-table td{line-height:1.5em;text-align:left;padding:.4em .5em;vertical-align:top}.ui-table th .ui-btn,.ui-table td .ui-btn{line-height:normal}.ui-table th{font-weight:700}.ui-table caption{text-align:left;margin-bottom:1.4em;opacity:.5}.ui-table-columntoggle-btn{float:right;margin-bottom:.8em}.ui-table-columntoggle-popup fieldset{margin:0}.ui-table-columntoggle{clear:both}@media only all{th.ui-table-priority-6,td.ui-table-priority-6,th.ui-table-priority-5,td.ui-table-priority-5,th.ui-table-priority-4,td.ui-table-priority-4,th.ui-table-priority-3,td.ui-table-priority-3,th.ui-table-priority-2,td.ui-table-priority-2,th.ui-table-priority-1,td.ui-table-priority-1{display:none}}@media screen and (min-width:20em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-1,.ui-table-columntoggle.ui-responsive td.ui-table-priority-1{display:table-cell}}@media screen and (min-width:30em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-2,.ui-table-columntoggle.ui-responsive td.ui-table-priority-2{display:table-cell}}@media screen and (min-width:40em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-3,.ui-table-columntoggle.ui-responsive td.ui-table-priority-3{display:table-cell}}@media screen and (min-width:50em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-4,.ui-table-columntoggle.ui-responsive td.ui-table-priority-4{display:table-cell}}@media screen and (min-width:60em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-5,.ui-table-columntoggle.ui-responsive td.ui-table-priority-5{display:table-cell}}@media screen and (min-width:70em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-6,.ui-table-columntoggle.ui-responsive td.ui-table-priority-6{display:table-cell}}.ui-table-columntoggle th.ui-table-cell-hidden,.ui-table-columntoggle td.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden{display:none}.ui-table-columntoggle th.ui-table-cell-visible,.ui-table-columntoggle td.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible{display:table-cell}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{display:none}@media only all{.ui-table-reflow thead td,.ui-table-reflow thead th{display:none}.ui-table-reflow td,.ui-table-reflow th{text-align:left;display:block}.ui-table-reflow tbody th{margin-top:3em}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{padding:.4em;min-width:30%;display:inline-block;margin:-.4em 1em -.4em -.4em}.ui-table-reflow th .ui-table-cell-label-top,.ui-table-reflow td .ui-table-cell-label-top{display:block;padding:.4em 0;margin:.4em 0;text-transform:uppercase;font-size:.9em;font-weight:400}}@media (min-width:35em){.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th,.ui-table-reflow.ui-responsive tbody th,.ui-table-reflow.ui-responsive tbody td,.ui-table-reflow.ui-responsive thead td,.ui-table-reflow.ui-responsive thead th{display:table-cell;margin:0}.ui-table-reflow.ui-responsive td .ui-table-cell-label,.ui-table-reflow.ui-responsive th .ui-table-cell-label{display:none}}@media (max-width:35em){.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;clear:left}}.ui-panel{width:17em;min-height:100%;max-height:none;border-width:0;position:absolute;top:0;display:block}.ui-panel-closed{width:0;max-height:100%;overflow:hidden;visibility:hidden;left:0;clip:rect(1px,1px,1px,1px)}.ui-panel-fixed{position:fixed;bottom:-1px;padding-bottom:1px}.ui-panel-display-reveal{z-index:1}.ui-panel-display-push{z-index:999}.ui-panel-display-overlay{z-index:1001}.ui-panel-inner{padding:1em}.ui-panel-page-container{overflow-x:visible}.ui-panel-page-container-themed .ui-page-active{background:0}.ui-panel-wrapper{position:relative;min-height:inherit;border:0;overflow-x:hidden;z-index:999}.ui-panel-fixed-toolbar{overflow-x:hidden}.ui-panel-dismiss{position:absolute;top:0;left:0;right:0;height:100%;z-index:1002;display:none}.ui-panel-dismiss-open{display:block}.ui-panel-animate{-webkit-transition:-webkit-transform 300ms ease;-webkit-transition-duration:300ms;-moz-transition:-moz-transform 300ms ease;transition:transform 300ms ease}@media screen and (max-device-width:768px){.ui-page-header-fixed .ui-panel-animate.ui-panel-wrapper,.ui-page-footer-fixed .ui-panel-animate.ui-panel-wrapper,.ui-panel-animate.ui-panel-fixed-toolbar{-ms-transition:none}.ui-panel-animate.ui-panel-fixed-toolbar{-ms-transition:-ms-transform 1ms;-ms-transform:rotate(0deg)}}.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal){-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0)}.ui-panel-position-left{left:-17em}.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-left.ui-panel-display-push{left:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-position-left.ui-panel-display-reveal,.ui-panel-open.ui-panel-position-left{left:0}.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-overlay,.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-position-right{right:-17em}.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-right.ui-panel-display-push{right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-position-right.ui-panel-display-reveal,.ui-panel-position-right.ui-panel-open{right:0}.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-overlay,.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-page-content-position-left{left:17em;right:-17em}.ui-panel-animate.ui-panel-page-content-position-left{left:0;right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-page-content-position-right{left:-17em;right:17em}.ui-panel-animate.ui-panel-page-content-position-right{left:0;right:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-dismiss-open.ui-panel-dismiss-position-left{left:17em}.ui-panel-dismiss-open.ui-panel-dismiss-position-right{right:17em}.ui-panel-display-reveal{-webkit-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);box-shadow:inset -5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-reveal{-webkit-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);box-shadow:inset 5px 0 5px rgba(0,0,0,.15)}.ui-panel-display-overlay{-webkit-box-shadow:5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:5px 0 5px rgba(0,0,0,.15);box-shadow:5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-overlay{-webkit-box-shadow:-5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:-5px 0 5px rgba(0,0,0,.15);box-shadow:-5px 0 5px rgba(0,0,0,.15)}.ui-panel-open.ui-panel-position-left.ui-panel-display-push{border-right-width:1px;margin-right:-1px}.ui-panel-page-content-position-left.ui-panel-page-content-display-push{margin-left:1px;width:auto}.ui-panel-open.ui-panel-position-right.ui-panel-display-push{border-left-width:1px;margin-left:-1px}.ui-panel-page-content-position-right.ui-panel-page-content-display-push{margin-right:1px;width:auto}@media (min-width:55em){.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-left{margin-right:17em}.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-right{margin-left:17em}.ui-responsive-panel .ui-panel-page-content-open{width:auto}.ui-responsive-panel .ui-panel-dismiss-display-push,.ui-responsive-panel.ui-page-active~.ui-panel-dismiss-display-push{display:none}}.ui-tabs{position:relative;padding:.2em}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.icons-1.4.5.css
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.icons-1.4.5.css	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.icons-1.4.5.css	(revision 101)
@@ -0,0 +1,725 @@
+/*!
+* jQuery Mobile 1.4.5
+* Git HEAD hash: 68e55e78b292634d3991c795f06f5e37a512decc <> Date: Fri Oct 31 2014 17:33:30 UTC
+* http://jquerymobile.com
+*
+* Copyright 2010, 2014 jQuery Foundation, Inc. and othercontributors
+* Released under the MIT license.
+* http://jquery.org/license
+*
+*/
+
+
+/* SVG icons */
+.ui-icon-action:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M9%2C5v3l5-4L9%2C0v3c0%2C0-5%2C0-5%2C7C6%2C5%2C9%2C5%2C9%2C5z%20M11%2C12H2V5h1l2-2H0v11h13V7l-2%2C2V12z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-alert:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C0L0%2C12h14L7%2C0z%20M7%2C11c-0.553%2C0-1-0.447-1-1s0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1S7.553%2C11%2C7%2C11z%20M7%2C8%20C6.447%2C8%2C6%2C7.553%2C6%2C7V5c0-0.553%2C0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1v2C8%2C7.553%2C7.553%2C8%2C7%2C8z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-d-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C3%2011%2C0%203.5%2C7.5%200%2C4%200%2C14%2010%2C14%206.5%2C10.5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-d-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2210.5%2C7.5%203%2C0%200%2C3%207.5%2C10.5%204%2C14%2014%2C14%2014%2C4%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-d:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%229%2C7%209%2C0%205%2C0%205%2C7%200%2C7%207%2C14%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C5%207%2C0%200%2C7%207%2C14%207%2C9%2014%2C9%2014%2C5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C7%207%2C0%207%2C5%200%2C5%200%2C9%207%2C9%207%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-u-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C11%206.5%2C3.5%2010%2C0%200%2C0%200%2C10%203.5%2C6.5%2011%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-u-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C0%204%2C0%207.5%2C3.5%200%2C11%203%2C14%2010.5%2C6.5%2014%2C10%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-u:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C0%200%2C7%205%2C7%205%2C14%209%2C14%209%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-audio:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.018px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014.018%2014%22%20style%3D%22enable-background%3Anew%200%200%2014.018%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M1%2C4C0.447%2C4%2C0%2C4.447%2C0%2C5v4c0%2C0.553%2C0.447%2C1%2C1%2C1h1l4%2C4V0L2%2C4H1z%20M10.346%2C7c0-1.699-1.042-3.154-2.546-3.867L6.982%2C4.68%20C7.885%2C5.107%2C8.51%2C5.98%2C8.51%2C7S7.885%2C8.893%2C6.982%2C9.32L7.8%2C10.867C9.304%2C10.154%2C10.346%2C8.699%2C10.346%2C7z%20M9.447%2C0.017L8.618%2C1.586%20C10.723%2C2.584%2C12.182%2C4.621%2C12.182%2C7s-1.459%2C4.416-3.563%2C5.414l0.829%2C1.569c2.707-1.283%2C4.57-3.925%2C4.57-6.983%20S12.154%2C1.3%2C9.447%2C0.017z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-back:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M5%2C3V0L1%2C4l4%2C4V5c0%2C0%2C6%2C0%2C6%2C3s-5%2C4-5%2C4v2c0%2C0%2C7-1%2C7-6C13%2C4%2C8%2C3%2C5%2C3z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-bars:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M1%2C4h12c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H1C0.447%2C2%2C0%2C2.447%2C0%2C3S0.447%2C4%2C1%2C4z%20M13%2C6H1%20C0.447%2C6%2C0%2C6.447%2C0%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H1c-0.553%2C0-1%2C0.447-1%2C1%20s0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-bullets:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M5%2C4h8c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H5C4.447%2C2%2C4%2C2.447%2C4%2C3S4.447%2C4%2C5%2C4z%20M13%2C6H5%20C4.447%2C6%2C4%2C6.447%2C4%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H5c-0.553%2C0-1%2C0.447-1%2C1%20s0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%20M1%2C2C0.447%2C2%2C0%2C2.447%2C0%2C3s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C2%2C1%2C2z%20M1%2C6%20C0.447%2C6%2C0%2C6.447%2C0%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1s1-0.447%2C1-1C2%2C6.447%2C1.553%2C6%2C1%2C6z%20M1%2C10c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1s1-0.447%2C1-1%20S1.553%2C10%2C1%2C10z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-calendar:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M0%2C8h2V6H0V8z%20M3%2C8h2V6H3V8z%20M6%2C8h2V6H6V8z%20M9%2C8h2V6H9V8z%20M12%2C8h2V6h-2V8z%20M0%2C11h2V9H0V11z%20M3%2C11h2V9H3V11z%20M6%2C11h2V9H6V11z%20%20M9%2C11h2V9H9V11z%20M12%2C11h2V9h-2V11z%20M0%2C14h2v-2H0V14z%20M3%2C14h2v-2H3V14z%20M6%2C14h2v-2H6V14z%20M9%2C14h2v-2H9V14z%20M12%2C1%20c0-0.553-0.447-1-1-1s-1%2C0.447-1%2C1H4c0-0.553-0.447-1-1-1S2%2C0.447%2C2%2C1H0v4h14V1H12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-camera:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M12%2C2.5H9.908c-0.206-0.581-0.756-1-1.408-1h-3c-0.652%2C0-1.202%2C0.419-1.408%2C1H2c-1.104%2C0-2%2C0.896-2%2C2%20v6c0%2C1.104%2C0.896%2C2%2C2%2C2h10c1.104%2C0%2C2-0.896%2C2-2v-6C14%2C3.396%2C13.104%2C2.5%2C12%2C2.5z%20M7%2C10.5c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3C10%2C9.156%2C8.657%2C10.5%2C7%2C10.5z%20M7%2C5.5c-1.104%2C0-2%2C0.896-2%2C2c0%2C1.104%2C0.896%2C2%2C2%2C2c1.104%2C0%2C2-0.896%2C2-2%20C9%2C6.396%2C8.104%2C5.5%2C7%2C5.5z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-carat-d:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2211.949%2C3.404%207%2C8.354%202.05%2C3.404%20-0.071%2C5.525%207%2C12.596%2014.07%2C5.525%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-carat-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2210.596%2C11.949%205.646%2C7%2010.596%2C2.05%208.475%2C-0.071%201.404%2C7%208.475%2C14.07%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-carat-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%223.404%2C2.051%208.354%2C7%203.404%2C11.95%205.525%2C14.07%2012.596%2C7%205.525%2C-0.071%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-carat-u:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%222.051%2C10.596%207%2C5.646%2011.95%2C10.596%2014.07%2C8.475%207%2C1.404%20-0.071%2C8.475%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-check:after,
+/* Used ui-checkbox-on twice to increase specificity. If active state has background-image for gradient this rule overrides. */
+html .ui-btn.ui-checkbox-on.ui-checkbox-on:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2214%2C4%2011%2C1%205.003%2C6.997%203%2C5%200%2C8%204.966%2C13%204.983%2C12.982%205%2C13%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-clock:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C12c-2.762%2C0-5-2.238-5-5s2.238-5%2C5-5s5%2C2.238%2C5%2C5%20S9.762%2C12%2C7%2C12z%20M9%2C6H8V4c0-0.553-0.447-1-1-1S6%2C3.447%2C6%2C4v3c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1S9.553%2C6%2C9%2C6z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-cloud:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M14%2C9.5c0-0.793-0.465-1.473-1.134-1.795C12.949%2C7.484%2C13%2C7.249%2C13%2C7c0-1.104-0.896-2-2-2%20c-0.158%2C0-0.311%2C0.023-0.457%2C0.058C9.816%2C3.549%2C8.286%2C2.5%2C6.5%2C2.5c-2.33%2C0-4.224%2C1.777-4.454%2C4.046C0.883%2C6.76%2C0%2C7.773%2C0%2C9%20c0%2C1.381%2C1.119%2C2.5%2C2.5%2C2.5h10v-0.07C13.361%2C11.206%2C14%2C10.432%2C14%2C9.5z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-comment:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M12%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v7c0%2C1.104%2C0.896%2C2%2C2%2C2h1v3l3-3h6c1.104%2C0%2C2-0.896%2C2-2V2C14%2C0.896%2C13.104%2C0%2C12%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-delete:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C3%2011%2C0%207%2C4%203%2C0%200%2C3%204%2C7%200%2C11%203%2C14%207%2C10%2011%2C14%2014%2C11%2010%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-edit:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M1%2C10l-1%2C4l4-1l7-7L8%2C3L1%2C10z%20M11%2C0L9%2C2l3%2C3l2-2L11%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-eye:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C2C3%2C2%2C0%2C7%2C0%2C7s3%2C5%2C7%2C5s7-5%2C7-5S11%2C2%2C7%2C2z%20M7%2C10c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3C10%2C8.656%2C8.657%2C10%2C7%2C10z%20M7%2C6C6.448%2C6%2C6%2C6.447%2C6%2C7c0%2C0.553%2C0.448%2C1%2C1%2C1s1-0.447%2C1-1C8%2C6.447%2C7.552%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-forbidden:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M12.601%2C11.187C13.476%2C10.018%2C14%2C8.572%2C14%2C7c0-3.866-3.134-7-7-7C5.428%2C0%2C3.982%2C0.524%2C2.813%2C1.399L2.757%2C1.343L2.053%2C2.048%20L2.048%2C2.053L1.343%2C2.758l0.056%2C0.056C0.524%2C3.982%2C0%2C5.428%2C0%2C7c0%2C3.866%2C3.134%2C7%2C7%2C7c1.572%2C0%2C3.018-0.524%2C4.187-1.399l0.056%2C0.057%20l0.705-0.705l0.005-0.005l0.705-0.705L12.601%2C11.187z%20M7%2C2c2.761%2C0%2C5%2C2.238%2C5%2C5c0%2C1.019-0.308%2C1.964-0.832%2C2.754L4.246%2C2.832%20C5.036%2C2.308%2C5.981%2C2%2C7%2C2z%20M7%2C12c-2.761%2C0-5-2.238-5-5c0-1.019%2C0.308-1.964%2C0.832-2.754l6.922%2C6.922C8.964%2C11.692%2C8.019%2C12%2C7%2C12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-forward:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M13%2C4L9%2C0v3C6%2C3%2C1%2C4%2C1%2C8c0%2C5%2C7%2C6%2C7%2C6v-2c0%2C0-5-1-5-4s6-3%2C6-3v3L13%2C4z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-gear:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M13.621%2C5.904l-1.036-0.259c-0.168-0.042-0.303-0.168-0.355-0.332c-0.092-0.284-0.205-0.559-0.339-0.82%20c-0.079-0.153-0.073-0.337%2C0.017-0.486l0.549-0.915c0.118-0.196%2C0.088-0.448-0.075-0.61l-0.862-0.863%20c-0.162-0.163-0.414-0.193-0.611-0.075l-0.916%2C0.55C9.844%2C2.182%2C9.659%2C2.188%2C9.506%2C2.109C9.244%2C1.975%2C8.97%2C1.861%2C8.686%2C1.77%20c-0.165-0.052-0.29-0.187-0.332-0.354L8.095%2C0.379C8.039%2C0.156%2C7.839%2C0%2C7.609%2C0H6.391c-0.229%2C0-0.43%2C0.156-0.485%2C0.379L5.646%2C1.415%20C5.604%2C1.582%2C5.479%2C1.718%2C5.313%2C1.77c-0.284%2C0.092-0.559%2C0.206-0.82%2C0.34C4.339%2C2.188%2C4.155%2C2.182%2C4.007%2C2.093L3.092%2C1.544%20c-0.196-0.118-0.448-0.087-0.61%2C0.075L1.619%2C2.481C1.457%2C2.644%2C1.426%2C2.896%2C1.544%2C3.093l0.549%2C0.914%20c0.089%2C0.148%2C0.095%2C0.332%2C0.017%2C0.486C1.975%2C4.755%2C1.861%2C5.029%2C1.77%2C5.314c-0.053%2C0.164-0.188%2C0.29-0.354%2C0.332L0.379%2C5.905%20C0.156%2C5.961%2C0%2C6.161%2C0%2C6.391v1.219c0%2C0.229%2C0.156%2C0.43%2C0.379%2C0.485l1.036%2C0.26C1.582%2C8.396%2C1.717%2C8.521%2C1.77%2C8.687%20c0.092%2C0.284%2C0.205%2C0.559%2C0.34%2C0.82C2.188%2C9.66%2C2.182%2C9.844%2C2.093%2C9.993l-0.549%2C0.915c-0.118%2C0.195-0.087%2C0.448%2C0.075%2C0.61%20l0.862%2C0.862c0.162%2C0.163%2C0.414%2C0.193%2C0.61%2C0.075l0.915-0.549c0.148-0.089%2C0.332-0.095%2C0.486-0.017%20c0.262%2C0.135%2C0.536%2C0.248%2C0.82%2C0.34c0.165%2C0.053%2C0.291%2C0.187%2C0.332%2C0.354l0.259%2C1.036C5.96%2C13.844%2C6.16%2C14%2C6.39%2C14h1.22%20c0.229%2C0%2C0.43-0.156%2C0.485-0.379l0.259-1.036c0.042-0.167%2C0.168-0.302%2C0.333-0.354c0.284-0.092%2C0.559-0.205%2C0.82-0.34%20c0.154-0.078%2C0.338-0.072%2C0.486%2C0.017l0.914%2C0.549c0.197%2C0.118%2C0.449%2C0.088%2C0.611-0.074l0.862-0.863%20c0.163-0.162%2C0.193-0.415%2C0.075-0.611l-0.549-0.915c-0.089-0.148-0.096-0.332-0.017-0.485c0.134-0.263%2C0.248-0.536%2C0.339-0.82%20c0.053-0.165%2C0.188-0.291%2C0.355-0.333l1.036-0.259C13.844%2C8.039%2C14%2C7.839%2C14%2C7.609V6.39C14%2C6.16%2C13.844%2C5.96%2C13.621%2C5.904z%20M7%2C10%20c-1.657%2C0-3-1.343-3-3s1.343-3%2C3-3s3%2C1.343%2C3%2C3S8.657%2C10%2C7%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-grid:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3%2C0H1C0.447%2C0%2C0%2C0.447%2C0%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C4%2C0.447%2C3.553%2C0%2C3%2C0z%20M8%2C0H6%20C5.447%2C0%2C5%2C0.447%2C5%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C9%2C0.447%2C8.553%2C0%2C8%2C0z%20M13%2C0h-2c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C14%2C0.447%2C13.553%2C0%2C13%2C0z%20M3%2C5H1C0.447%2C5%2C0%2C5.447%2C0%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1V6C4%2C5.447%2C3.553%2C5%2C3%2C5z%20M8%2C5H6C5.447%2C5%2C5%2C5.447%2C5%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6%20C9%2C5.447%2C8.553%2C5%2C8%2C5z%20M13%2C5h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6C14%2C5.447%2C13.553%2C5%2C13%2C5z%20M3%2C10%20H1c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C4%2C10.447%2C3.553%2C10%2C3%2C10z%20M8%2C10H6c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C9%2C10.447%2C8.553%2C10%2C8%2C10z%20M13%2C10h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1v-2C14%2C10.447%2C13.553%2C10%2C13%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-heart:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C1.872c-2-3-7-2-7%2C2c0%2C3%2C4%2C7%2C4%2C7s2.417%2C2.479%2C3%2C3c0.583-0.521%2C3-3%2C3-3s4-4%2C4-7%20C14-0.128%2C9-1.128%2C7%2C1.872z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-home:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C0%200%2C7%202%2C7%202%2C14%205%2C14%205%2C9%209%2C9%209%2C14%2012%2C14%2012%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-info:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C2c0.552%2C0%2C1%2C0.447%2C1%2C1S7.552%2C4%2C7%2C4S6%2C3.553%2C6%2C3%20S6.448%2C2%2C7%2C2z%20M9%2C11H5v-1h1V6H5V5h3v5h1V11z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-location:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C0C4.791%2C0%2C3%2C1.791%2C3%2C4c0%2C2%2C4%2C10%2C4%2C10s4-8%2C4-10C11%2C1.791%2C9.209%2C0%2C7%2C0z%20M7%2C6C5.896%2C6%2C5%2C5.104%2C5%2C4%20s0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2S8.104%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-lock:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M12%2C6V5c0-2.762-2.238-5-5-5C4.239%2C0%2C2%2C2.238%2C2%2C5v1H1v8h12V6H12z%20M7.5%2C9.848V12h-1V9.848%20C6.207%2C9.673%2C6%2C9.366%2C6%2C9c0-0.553%2C0.448-1%2C1-1s1%2C0.447%2C1%2C1C8%2C9.366%2C7.793%2C9.673%2C7.5%2C9.848z%20M10%2C6H4V5c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3V6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-mail:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M0%2C3.75V12h14V3.75L7%2C9L0%2C3.75z%20M14%2C2H0l7%2C5L14%2C2z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-minus:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Crect%20y%3D%225%22%20style%3D%22fill%3A%23FFFFFF%3B%22%20width%3D%2214%22%20height%3D%224%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-navigation:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2213%2C1%200%2C6%207%2C7%208%2C14%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-phone:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%22-0.01%200.008%2014%2014%22%20style%3D%22enable-background%3Anew%20-0.01%200.008%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M6.939%2C9.189C6.165%2C8.557%2C5.271%2C7.705%2C4.497%2C6.744C3.953%2C6.071%2C3.473%2C5.363%2C3.969%2C4.866l-3.482-3.48%20C-0.021%2C2.02-1.146%2C5.04%2C3.675%2C9.984c5.08%2C5.211%2C8.356%2C4.097%2C8.92%2C3.511l-3.396-3.4C8.725%2C10.568%2C8.113%2C10.146%2C6.939%2C9.189z%20%20M13.82%2C11.519v-0.004c0%2C0-2.648-2.646-2.649-2.647c-0.21-0.211-0.546-0.205-0.754%2C0.002L9.455%2C9.831l3.403%2C3.407%20c0%2C0%2C0.962-0.96%2C0.961-0.961l0.002-0.001C14.043%2C12.056%2C14.021%2C11.721%2C13.82%2C11.519z%20M5.192%2C3.644V3.642%20c0.222-0.222%2C0.2-0.557%2C0-0.758V2.881c0%2C0-2.726-2.725-2.727-2.726C2.255-0.055%2C1.92-0.05%2C1.712%2C0.156L0.751%2C1.121l3.479%2C3.482%20C4.231%2C4.604%2C5.192%2C3.645%2C5.192%2C3.644z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-plus:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C5%209%2C5%209%2C0%205%2C0%205%2C5%200%2C5%200%2C9%205%2C9%205%2C14%209%2C14%209%2C9%2014%2C9%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-power:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M11.243%2C2.408c-0.392-0.401-1.024-0.401-1.415%2C0c-0.391%2C0.401-0.391%2C1.054%2C0%2C1.455%20C10.584%2C4.642%2C11%2C5.675%2C11%2C6.773s-0.416%2C2.133-1.172%2C2.91c-1.512%2C1.558-4.145%2C1.558-5.656%2C0C3.416%2C8.904%2C3%2C7.872%2C3%2C6.773%20C3%2C5.673%2C3.416%2C4.64%2C4.172%2C3.863c0.39-0.401%2C0.39-1.054%2C0-1.455c-0.391-0.401-1.024-0.401-1.415%2C0C1.624%2C3.574%2C1%2C5.125%2C1%2C6.773%20c0%2C1.647%2C0.624%2C3.199%2C1.757%2C4.365c1.134%2C1.166%2C2.64%2C1.809%2C4.243%2C1.809c1.604%2C0%2C3.109-0.645%2C4.243-1.811%20C12.376%2C9.975%2C13%2C8.423%2C13%2C6.773C13%2C5.125%2C12.376%2C3.574%2C11.243%2C2.408z%20M7%2C8.053c0.553%2C0%2C1-0.445%2C1-1v-6c0-0.553-0.447-1-1-1%20c-0.553%2C0-1%2C0.447-1%2C1v6C6%2C7.604%2C6.447%2C8.053%2C7%2C8.053z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-recycle:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M3%2C7h1L2%2C4L0%2C7h1c0%2C3.313%2C2.687%2C6%2C6%2C6c0.702%2C0%2C1.374-0.127%2C2-0.35v-2.205C8.41%2C10.789%2C7.732%2C11%2C7%2C11%20C4.791%2C11%2C3%2C9.209%2C3%2C7z%20M13%2C7c0-3.313-2.688-6-6-6C6.298%2C1%2C5.626%2C1.127%2C5%2C1.349v2.206C5.59%2C3.211%2C6.268%2C3%2C7%2C3c2.209%2C0%2C4%2C1.791%2C4%2C4%20h-1l2%2C3l2-3H13z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-refresh:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.001px%22%20height%3D%2214.002px%22%20viewBox%3D%220%200%2014.001%2014.002%22%20style%3D%22enable-background%3Anew%200%200%2014.001%2014.002%3B%22%20%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M14.001%2C6.001v-6l-2.06%2C2.06c-0.423-0.424-0.897-0.809-1.44-1.122C7.153-0.994%2C2.872%2C0.153%2C0.939%2C3.501%20c-1.933%2C3.348-0.786%2C7.629%2C2.562%2C9.562c3.348%2C1.933%2C7.629%2C0.785%2C9.562-2.562l-1.732-1c-1.381%2C2.392-4.438%2C3.211-6.83%2C1.83%20s-3.211-4.438-1.83-6.83s4.438-3.211%2C6.83-1.83c0.389%2C0.225%2C0.718%2C0.506%2C1.02%2C0.81l-2.52%2C2.52H14.001z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-search:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M10.171%2C8.766c0.617-0.888%2C0.979-1.964%2C0.979-3.126c0-3.037-2.463-5.5-5.5-5.5s-5.5%2C2.463-5.5%2C5.5%20s2.463%2C5.5%2C5.5%2C5.5c1.152%2C0%2C2.223-0.355%2C3.104-0.962l3.684%2C3.683l1.414-1.414L10.171%2C8.766z%20M5.649%2C9.14c-1.933%2C0-3.5-1.567-3.5-3.5%20c0-1.933%2C1.567-3.5%2C3.5-3.5c1.933%2C0%2C3.5%2C1.567%2C3.5%2C3.5C9.149%2C7.572%2C7.582%2C9.14%2C5.649%2C9.14z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-shop:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M10%2C4V3c0-1.657-1.343-3-3-3S4%2C1.343%2C4%2C3v1H1v10h12V4H10z%20M4.5%2C6C4.224%2C6%2C4%2C5.776%2C4%2C5.5%20S4.224%2C5%2C4.5%2C5S5%2C5.224%2C5%2C5.5S4.776%2C6%2C4.5%2C6z%20M5%2C3c0-1.104%2C0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2v1H5V3z%20M9.5%2C6C9.225%2C6%2C9%2C5.776%2C9%2C5.5%20S9.225%2C5%2C9.5%2C5S10%2C5.224%2C10%2C5.5S9.775%2C6%2C9.5%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-star:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2214%2C5%209%2C5%207%2C0%205%2C5%200%2C5%204%2C8%202.625%2C13%207%2C10%2011.375%2C13%2010%2C8%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-tag:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M5%2C0H0v5l9%2C9l5-5L5%2C0z%20M3%2C4C2.447%2C4%2C2%2C3.553%2C2%2C3s0.447-1%2C1-1s1%2C0.447%2C1%2C1S3.553%2C4%2C3%2C4z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-user:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M8.851%2C10.101c-0.18-0.399-0.2-0.763-0.153-1.104C9.383%2C8.49%2C9.738%2C7.621%2C9.891%2C6.465C10.493%2C6.355%2C10.5%2C5.967%2C10.5%2C5.5%20c0-0.437-0.008-0.804-0.502-0.94C9.999%2C4.539%2C10%2C4.521%2C10%2C4.5c0-2.103-1-4-2-4C8%2C0.5%2C7.5%2C0%2C6.5%2C0C5%2C0%2C4%2C1.877%2C4%2C4.5%20c0%2C0.021%2C0.001%2C0.039%2C0.002%2C0.06C3.508%2C4.696%2C3.5%2C5.063%2C3.5%2C5.5c0%2C0.467%2C0.007%2C0.855%2C0.609%2C0.965%20C4.262%2C7.621%2C4.617%2C8.49%2C5.303%2C8.997c0.047%2C0.341%2C0.026%2C0.704-0.153%2C1.104C1.503%2C10.503%2C0%2C12%2C0%2C12v2h14v-2%20C14%2C12%2C12.497%2C10.503%2C8.851%2C10.101z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-video:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%20-2%2014%2014%22%20style%3D%22enable-background%3Anew%200%20-2%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M8%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2h6c1.104%2C0%2C2-0.896%2C2-2V5V2C10%2C0.896%2C9.104%2C0%2C8%2C0z%20%20M10%2C5l4%2C4V1L10%2C5z%22%2F%3E%3C%2Fsvg%3E");
+}
+/* Alt icons */
+.ui-alt-icon.ui-icon-action:after,
+.ui-alt-icon .ui-icon-action:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M9%2C5v3l5-4L9%2C0v3c0%2C0-5%2C0-5%2C7C6%2C5%2C9%2C5%2C9%2C5z%20M11%2C12H2V5h1l2-2H0v11h13V7l-2%2C2V12z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-alert:after,
+.ui-alt-icon .ui-icon-alert:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0L0%2C12h14L7%2C0z%20M7%2C11c-0.553%2C0-1-0.447-1-1s0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1S7.553%2C11%2C7%2C11z%20M7%2C8C6.447%2C8%2C6%2C7.553%2C6%2C7V5%20c0-0.553%2C0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1v2C8%2C7.553%2C7.553%2C8%2C7%2C8z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-d:after,
+.ui-alt-icon .ui-icon-arrow-d:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%229%2C7%209%2C0%205%2C0%205%2C7%200%2C7%207%2C14%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-d-l:after,
+.ui-alt-icon .ui-icon-arrow-d-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C3%2011%2C0%203.5%2C7.5%200%2C4%200%2C14%2010%2C14%206.5%2C10.5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-d-r:after,
+.ui-alt-icon .ui-icon-arrow-d-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2210.5%2C7.5%203%2C0%200%2C3%207.5%2C10.5%204%2C14%2014%2C14%2014%2C4%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-l:after,
+.ui-alt-icon .ui-icon-arrow-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C5%207%2C0%200%2C7%207%2C14%207%2C9%2014%2C9%2014%2C5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-r:after,
+.ui-alt-icon .ui-icon-arrow-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C7%207%2C0%207%2C5%200%2C5%200%2C9%207%2C9%207%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-u:after,
+.ui-alt-icon .ui-icon-arrow-u:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C0%200%2C7%205%2C7%205%2C14%209%2C14%209%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-u-l:after,
+.ui-alt-icon .ui-icon-arrow-u-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C11%206.5%2C3.5%2010%2C0%200%2C0%200%2C10%203.5%2C6.5%2011%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-u-r:after,
+.ui-alt-icon .ui-icon-arrow-u-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C0%204%2C0%207.5%2C3.5%200%2C11%203%2C14%2010.5%2C6.5%2014%2C10%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-audio:after,
+.ui-alt-icon .ui-icon-audio:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.018px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014.018%2014%22%20style%3D%22enable-background%3Anew%200%200%2014.018%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C4C0.447%2C4%2C0%2C4.447%2C0%2C5v4c0%2C0.553%2C0.447%2C1%2C1%2C1h1l4%2C4V0L2%2C4H1z%20M10.346%2C7c0-1.699-1.042-3.154-2.546-3.867L6.982%2C4.68%20C7.885%2C5.107%2C8.51%2C5.98%2C8.51%2C7S7.885%2C8.893%2C6.982%2C9.32L7.8%2C10.867C9.304%2C10.154%2C10.346%2C8.699%2C10.346%2C7z%20M9.447%2C0.017L8.618%2C1.586%20C10.723%2C2.584%2C12.182%2C4.621%2C12.182%2C7s-1.459%2C4.416-3.563%2C5.414l0.829%2C1.569c2.707-1.283%2C4.57-3.925%2C4.57-6.983%20S12.154%2C1.3%2C9.447%2C0.017z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-back:after,
+.ui-alt-icon .ui-icon-back:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C3V0L1%2C4l4%2C4V5c0%2C0%2C6%2C0%2C6%2C3s-5%2C4-5%2C4v2c0%2C0%2C7-1%2C7-6C13%2C4%2C8%2C3%2C5%2C3z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-bars:after,
+.ui-alt-icon .ui-icon-bars:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C4h12c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H1C0.447%2C2%2C0%2C2.447%2C0%2C3S0.447%2C4%2C1%2C4z%20M13%2C6H1C0.447%2C6%2C0%2C6.447%2C0%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H1c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1h12%20c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-bullets:after,
+.ui-alt-icon .ui-icon-bullets:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C4h8c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H5C4.447%2C2%2C4%2C2.447%2C4%2C3S4.447%2C4%2C5%2C4z%20M13%2C6H5C4.447%2C6%2C4%2C6.447%2C4%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H5c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1h8%20c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%20M1%2C2C0.447%2C2%2C0%2C2.447%2C0%2C3s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C2%2C1%2C2z%20M1%2C6C0.447%2C6%2C0%2C6.447%2C0%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1s1-0.447%2C1-1C2%2C6.447%2C1.553%2C6%2C1%2C6z%20M1%2C10c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C10%2C1%2C10z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-calendar:after,
+.ui-alt-icon .ui-icon-calendar:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M0%2C8h2V6H0V8z%20M3%2C8h2V6H3V8z%20M6%2C8h2V6H6V8z%20M9%2C8h2V6H9V8z%20M12%2C8h2V6h-2V8z%20M0%2C11h2V9H0V11z%20M3%2C11h2V9H3V11z%20M6%2C11h2V9H6V11z%20%20M9%2C11h2V9H9V11z%20M12%2C11h2V9h-2V11z%20M0%2C14h2v-2H0V14z%20M3%2C14h2v-2H3V14z%20M6%2C14h2v-2H6V14z%20M9%2C14h2v-2H9V14z%20M12%2C1%20c0-0.553-0.447-1-1-1s-1%2C0.447-1%2C1H4c0-0.553-0.447-1-1-1S2%2C0.447%2C2%2C1H0v4h14V1H12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-camera:after,
+.ui-alt-icon .ui-icon-camera:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C2.5H9.908c-0.206-0.581-0.756-1-1.408-1h-3c-0.652%2C0-1.202%2C0.419-1.408%2C1H2c-1.104%2C0-2%2C0.896-2%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2%20h10c1.104%2C0%2C2-0.896%2C2-2v-6C14%2C3.396%2C13.104%2C2.5%2C12%2C2.5z%20M7%2C10.5c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3%20C10%2C9.156%2C8.657%2C10.5%2C7%2C10.5z%20M7%2C5.5c-1.104%2C0-2%2C0.896-2%2C2c0%2C1.104%2C0.896%2C2%2C2%2C2c1.104%2C0%2C2-0.896%2C2-2C9%2C6.396%2C8.104%2C5.5%2C7%2C5.5z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-carat-d:after,
+.ui-alt-icon .ui-icon-carat-d:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2211.949%2C3.404%207%2C8.354%202.05%2C3.404%20-0.071%2C5.525%207%2C12.596%2014.07%2C5.525%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-carat-l:after,
+.ui-alt-icon .ui-icon-carat-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2210.596%2C11.949%205.646%2C7%2010.596%2C2.05%208.475%2C-0.071%201.404%2C7%208.475%2C14.07%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-carat-r:after,
+.ui-alt-icon .ui-icon-carat-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%223.404%2C2.051%208.354%2C7%203.404%2C11.95%205.525%2C14.07%2012.596%2C7%205.525%2C-0.071%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-carat-u:after,
+.ui-alt-icon .ui-icon-carat-u:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%222.051%2C10.596%207%2C5.646%2011.95%2C10.596%2014.07%2C8.475%207%2C1.404%20-0.071%2C8.475%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-check:after,
+.ui-alt-icon .ui-icon-check:after,
+html .ui-alt-icon.ui-btn.ui-checkbox-on:after,
+html .ui-alt-icon .ui-btn.ui-checkbox-on:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C4%2011%2C1%205.003%2C6.997%203%2C5%200%2C8%204.966%2C13%204.983%2C12.982%205%2C13%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-clock:after,
+.ui-alt-icon .ui-icon-clock:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C12c-2.762%2C0-5-2.238-5-5s2.238-5%2C5-5s5%2C2.238%2C5%2C5%20S9.762%2C12%2C7%2C12z%20M9%2C6H8V4c0-0.553-0.447-1-1-1S6%2C3.447%2C6%2C4v3c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1S9.553%2C6%2C9%2C6z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-cloud:after,
+.ui-alt-icon .ui-icon-cloud:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M14%2C9.5c0-0.793-0.465-1.473-1.134-1.795C12.949%2C7.484%2C13%2C7.249%2C13%2C7c0-1.104-0.896-2-2-2c-0.158%2C0-0.311%2C0.023-0.457%2C0.058%20C9.816%2C3.549%2C8.286%2C2.5%2C6.5%2C2.5c-2.33%2C0-4.224%2C1.777-4.454%2C4.046C0.883%2C6.76%2C0%2C7.773%2C0%2C9c0%2C1.381%2C1.119%2C2.5%2C2.5%2C2.5h10v-0.07%20C13.361%2C11.206%2C14%2C10.432%2C14%2C9.5z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-comment:after,
+.ui-alt-icon .ui-icon-comment:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v7c0%2C1.104%2C0.896%2C2%2C2%2C2h1v3l3-3h6c1.104%2C0%2C2-0.896%2C2-2V2C14%2C0.896%2C13.104%2C0%2C12%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-delete:after,
+.ui-alt-icon .ui-icon-delete:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C3%2011%2C0%207%2C4%203%2C0%200%2C3%204%2C7%200%2C11%203%2C14%207%2C10%2011%2C14%2014%2C11%2010%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-edit:after,
+.ui-alt-icon .ui-icon-edit:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C10l-1%2C4l4-1l7-7L8%2C3L1%2C10z%20M11%2C0L9%2C2l3%2C3l2-2L11%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-eye:after,
+.ui-alt-icon .ui-icon-eye:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C2C3%2C2%2C0%2C7%2C0%2C7s3%2C5%2C7%2C5s7-5%2C7-5S11%2C2%2C7%2C2z%20M7%2C10c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3%20C10%2C8.656%2C8.657%2C10%2C7%2C10z%20M7%2C6C6.448%2C6%2C6%2C6.447%2C6%2C7c0%2C0.553%2C0.448%2C1%2C1%2C1s1-0.447%2C1-1C8%2C6.447%2C7.552%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-forbidden:after,
+.ui-alt-icon .ui-icon-forbidden:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12.601%2C11.187C13.476%2C10.018%2C14%2C8.572%2C14%2C7c0-3.866-3.134-7-7-7C5.428%2C0%2C3.982%2C0.524%2C2.813%2C1.399L2.757%2C1.343L2.053%2C2.048%20L2.048%2C2.053L1.343%2C2.758l0.056%2C0.056C0.524%2C3.982%2C0%2C5.428%2C0%2C7c0%2C3.866%2C3.134%2C7%2C7%2C7c1.572%2C0%2C3.018-0.524%2C4.187-1.399l0.056%2C0.057%20l0.705-0.705l0.005-0.005l0.705-0.705L12.601%2C11.187z%20M7%2C2c2.761%2C0%2C5%2C2.238%2C5%2C5c0%2C1.019-0.308%2C1.964-0.832%2C2.754L4.246%2C2.832%20C5.036%2C2.308%2C5.981%2C2%2C7%2C2z%20M7%2C12c-2.761%2C0-5-2.238-5-5c0-1.019%2C0.308-1.964%2C0.832-2.754l6.922%2C6.922C8.964%2C11.692%2C8.019%2C12%2C7%2C12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-forward:after,
+.ui-alt-icon .ui-icon-forward:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M13%2C4L9%2C0v3C6%2C3%2C1%2C4%2C1%2C8c0%2C5%2C7%2C6%2C7%2C6v-2c0%2C0-5-1-5-4s6-3%2C6-3v3L13%2C4z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-gear:after,
+.ui-alt-icon .ui-icon-gear:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M13.621%2C5.904l-1.036-0.259c-0.168-0.042-0.303-0.168-0.355-0.332c-0.092-0.284-0.205-0.559-0.339-0.82%20c-0.079-0.153-0.073-0.337%2C0.017-0.486l0.549-0.915c0.118-0.196%2C0.088-0.448-0.075-0.61l-0.862-0.863%20c-0.162-0.163-0.414-0.193-0.611-0.075l-0.916%2C0.55C9.844%2C2.182%2C9.659%2C2.188%2C9.506%2C2.109C9.244%2C1.975%2C8.97%2C1.861%2C8.686%2C1.77%20c-0.165-0.052-0.29-0.187-0.332-0.354L8.095%2C0.379C8.039%2C0.156%2C7.839%2C0%2C7.609%2C0H6.391c-0.229%2C0-0.43%2C0.156-0.485%2C0.379L5.646%2C1.415%20C5.604%2C1.582%2C5.479%2C1.718%2C5.313%2C1.77c-0.284%2C0.092-0.559%2C0.206-0.82%2C0.34C4.339%2C2.188%2C4.155%2C2.182%2C4.007%2C2.093L3.092%2C1.544%20c-0.196-0.118-0.448-0.087-0.61%2C0.075L1.619%2C2.481C1.457%2C2.644%2C1.426%2C2.896%2C1.544%2C3.093l0.549%2C0.914%20c0.089%2C0.148%2C0.095%2C0.332%2C0.017%2C0.486C1.975%2C4.755%2C1.861%2C5.029%2C1.77%2C5.314c-0.053%2C0.164-0.188%2C0.29-0.354%2C0.332L0.379%2C5.905%20C0.156%2C5.961%2C0%2C6.161%2C0%2C6.391v1.219c0%2C0.229%2C0.156%2C0.43%2C0.379%2C0.485l1.036%2C0.26C1.582%2C8.396%2C1.717%2C8.521%2C1.77%2C8.687%20c0.092%2C0.284%2C0.205%2C0.559%2C0.34%2C0.82C2.188%2C9.66%2C2.182%2C9.844%2C2.093%2C9.993l-0.549%2C0.915c-0.118%2C0.195-0.087%2C0.448%2C0.075%2C0.61%20l0.862%2C0.862c0.162%2C0.163%2C0.414%2C0.193%2C0.61%2C0.075l0.915-0.549c0.148-0.089%2C0.332-0.095%2C0.486-0.017%20c0.262%2C0.135%2C0.536%2C0.248%2C0.82%2C0.34c0.165%2C0.053%2C0.291%2C0.187%2C0.332%2C0.354l0.259%2C1.036C5.96%2C13.844%2C6.16%2C14%2C6.39%2C14h1.22%20c0.229%2C0%2C0.43-0.156%2C0.485-0.379l0.259-1.036c0.042-0.167%2C0.168-0.302%2C0.333-0.354c0.284-0.092%2C0.559-0.205%2C0.82-0.34%20c0.154-0.078%2C0.338-0.072%2C0.486%2C0.017l0.914%2C0.549c0.197%2C0.118%2C0.449%2C0.088%2C0.611-0.074l0.862-0.863%20c0.163-0.162%2C0.193-0.415%2C0.075-0.611l-0.549-0.915c-0.089-0.148-0.096-0.332-0.017-0.485c0.134-0.263%2C0.248-0.536%2C0.339-0.82%20c0.053-0.165%2C0.188-0.291%2C0.355-0.333l1.036-0.259C13.844%2C8.039%2C14%2C7.839%2C14%2C7.609V6.39C14%2C6.16%2C13.844%2C5.96%2C13.621%2C5.904z%20M7%2C10%20c-1.657%2C0-3-1.343-3-3s1.343-3%2C3-3s3%2C1.343%2C3%2C3S8.657%2C10%2C7%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-grid:after,
+.ui-alt-icon .ui-icon-grid:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M3%2C0H1C0.447%2C0%2C0%2C0.447%2C0%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C4%2C0.447%2C3.553%2C0%2C3%2C0z%20M8%2C0H6%20C5.447%2C0%2C5%2C0.447%2C5%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C9%2C0.447%2C8.553%2C0%2C8%2C0z%20M13%2C0h-2c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C14%2C0.447%2C13.553%2C0%2C13%2C0z%20M3%2C5H1C0.447%2C5%2C0%2C5.447%2C0%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1V6C4%2C5.447%2C3.553%2C5%2C3%2C5z%20M8%2C5H6C5.447%2C5%2C5%2C5.447%2C5%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6%20C9%2C5.447%2C8.553%2C5%2C8%2C5z%20M13%2C5h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6C14%2C5.447%2C13.553%2C5%2C13%2C5z%20M3%2C10%20H1c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C4%2C10.447%2C3.553%2C10%2C3%2C10z%20M8%2C10H6c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C9%2C10.447%2C8.553%2C10%2C8%2C10z%20M13%2C10h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1v-2C14%2C10.447%2C13.553%2C10%2C13%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-heart:after,
+.ui-alt-icon .ui-icon-heart:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C1.958c-2-3-7-2.128-7%2C1.872c0%2C3%2C4%2C7%2C4%2C7s2.417%2C2.48%2C3%2C3c0.583-0.52%2C3-3%2C3-3s4-4%2C4-7C14-0.169%2C9-1.042%2C7%2C1.958z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-home:after,
+.ui-alt-icon .ui-icon-home:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C0%200%2C7%202%2C7%202%2C14%205%2C14%205%2C9%209%2C9%209%2C14%2012%2C14%2012%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-info:after,
+.ui-alt-icon .ui-icon-info:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C2c0.552%2C0%2C1%2C0.447%2C1%2C1S7.552%2C4%2C7%2C4S6%2C3.553%2C6%2C3%20S6.448%2C2%2C7%2C2z%20M9%2C11H5v-1h1V6H5V5h3v5h1V11z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-location:after,
+.ui-alt-icon .ui-icon-location:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C4.791%2C0%2C3%2C1.791%2C3%2C4c0%2C2%2C4%2C10%2C4%2C10s4-8%2C4-10C11%2C1.791%2C9.209%2C0%2C7%2C0z%20M7%2C6C5.896%2C6%2C5%2C5.104%2C5%2C4s0.896-2%2C2-2%20c1.104%2C0%2C2%2C0.896%2C2%2C2S8.104%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-lock:after,
+.ui-alt-icon .ui-icon-lock:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C6V5c0-2.762-2.238-5-5-5C4.239%2C0%2C2%2C2.238%2C2%2C5v1H1v8h12V6H12z%20M7.5%2C9.848V12h-1V9.848C6.207%2C9.673%2C6%2C9.366%2C6%2C9%20c0-0.553%2C0.448-1%2C1-1s1%2C0.447%2C1%2C1C8%2C9.366%2C7.793%2C9.673%2C7.5%2C9.848z%20M10%2C6H4V5c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3V6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-mail:after,
+.ui-alt-icon .ui-icon-mail:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M0%2C3.75V12h14V3.75L7%2C9L0%2C3.75z%20M14%2C2H0l7%2C5L14%2C2z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-minus:after,
+.ui-alt-icon .ui-icon-minus:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Crect%20y%3D%225%22%20width%3D%2214%22%20height%3D%224%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-navigation:after,
+.ui-alt-icon .ui-icon-navigation:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2213%2C1%200%2C6%207%2C7%208%2C14%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-phone:after,
+.ui-alt-icon .ui-icon-phone:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M6.949%2C9.182C6.175%2C8.549%2C5.281%2C7.697%2C4.507%2C6.736C3.963%2C6.063%2C3.483%2C5.355%2C3.979%2C4.858l-3.482-3.48%20c-0.508%2C0.634-1.633%2C3.654%2C3.188%2C8.598c5.08%2C5.211%2C8.356%2C4.097%2C8.92%2C3.511l-3.396-3.399C8.734%2C10.561%2C8.123%2C10.139%2C6.949%2C9.182z%20%20M13.83%2C11.512v-0.004c0%2C0-2.648-2.646-2.649-2.647c-0.21-0.212-0.546-0.205-0.754%2C0.002L9.465%2C9.823l3.402%2C3.407%20c0%2C0%2C0.963-0.961%2C0.961-0.961l0.002-0.002C14.053%2C12.049%2C14.031%2C11.713%2C13.83%2C11.512z%20M5.202%2C3.636V3.634%20c0.222-0.222%2C0.2-0.557%2C0-0.758V2.873c0%2C0-2.726-2.725-2.727-2.726c-0.21-0.21-0.545-0.205-0.753%2C0.001L0.761%2C1.113L4.24%2C4.595%20C4.241%2C4.596%2C5.202%2C3.637%2C5.202%2C3.636z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-plus:after,
+.ui-alt-icon .ui-icon-plus:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C5%209%2C5%209%2C0%205%2C0%205%2C5%200%2C5%200%2C9%205%2C9%205%2C14%209%2C14%209%2C9%2014%2C9%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-power:after,
+.ui-alt-icon .ui-icon-power:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M11.243%2C2.408c-0.392-0.401-1.024-0.401-1.415%2C0c-0.391%2C0.401-0.391%2C1.054%2C0%2C1.455C10.584%2C4.642%2C11%2C5.675%2C11%2C6.773%20s-0.416%2C2.133-1.172%2C2.91c-1.512%2C1.558-4.145%2C1.558-5.656%2C0C3.416%2C8.904%2C3%2C7.872%2C3%2C6.773C3%2C5.673%2C3.416%2C4.64%2C4.172%2C3.863%20c0.39-0.401%2C0.39-1.054%2C0-1.455c-0.391-0.401-1.024-0.401-1.415%2C0C1.624%2C3.574%2C1%2C5.125%2C1%2C6.773c0%2C1.647%2C0.624%2C3.199%2C1.757%2C4.365%20c1.134%2C1.166%2C2.64%2C1.809%2C4.243%2C1.809c1.604%2C0%2C3.109-0.645%2C4.243-1.811C12.376%2C9.975%2C13%2C8.423%2C13%2C6.773%20C13%2C5.125%2C12.376%2C3.574%2C11.243%2C2.408z%20M7%2C8.053c0.553%2C0%2C1-0.445%2C1-1v-6c0-0.553-0.447-1-1-1c-0.553%2C0-1%2C0.447-1%2C1v6%20C6%2C7.604%2C6.447%2C8.053%2C7%2C8.053z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-recycle:after,
+.ui-alt-icon .ui-icon-recycle:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M3%2C7h1L2%2C4L0%2C7h1c0%2C3.313%2C2.687%2C6%2C6%2C6c0.702%2C0%2C1.374-0.127%2C2-0.35v-2.205C8.41%2C10.789%2C7.732%2C11%2C7%2C11C4.791%2C11%2C3%2C9.209%2C3%2C7z%20%20M13%2C7c0-3.313-2.688-6-6-6C6.298%2C1%2C5.626%2C1.127%2C5%2C1.349v2.206C5.59%2C3.211%2C6.268%2C3%2C7%2C3c2.209%2C0%2C4%2C1.791%2C4%2C4h-1l2%2C3l2-3H13z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-refresh:after,
+.ui-alt-icon .ui-icon-refresh:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.001px%22%20height%3D%2214.002px%22%20viewBox%3D%220%200%2014.001%2014.002%22%20style%3D%22enable-background%3Anew%200%200%2014.001%2014.002%3B%22%20%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M14.001%2C6.001v-6l-2.06%2C2.06c-0.423-0.424-0.897-0.809-1.44-1.122C7.153-0.994%2C2.872%2C0.153%2C0.939%2C3.501%20c-1.933%2C3.348-0.786%2C7.629%2C2.562%2C9.562c3.348%2C1.933%2C7.629%2C0.785%2C9.562-2.562l-1.732-1c-1.381%2C2.392-4.438%2C3.211-6.83%2C1.83%20s-3.211-4.438-1.83-6.83s4.438-3.211%2C6.83-1.83c0.389%2C0.225%2C0.718%2C0.506%2C1.02%2C0.81l-2.52%2C2.52H14.001z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-search:after,
+.ui-alt-icon .ui-icon-search:after,
+.ui-input-search:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M10.171%2C8.766c0.617-0.888%2C0.979-1.964%2C0.979-3.126c0-3.037-2.463-5.5-5.5-5.5s-5.5%2C2.463-5.5%2C5.5s2.463%2C5.5%2C5.5%2C5.5%20c1.152%2C0%2C2.223-0.355%2C3.104-0.962l3.684%2C3.683l1.414-1.414L10.171%2C8.766z%20M5.649%2C9.14c-1.933%2C0-3.5-1.567-3.5-3.5%20c0-1.933%2C1.567-3.5%2C3.5-3.5c1.933%2C0%2C3.5%2C1.567%2C3.5%2C3.5C9.149%2C7.572%2C7.582%2C9.14%2C5.649%2C9.14z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-shop:after,
+.ui-alt-icon .ui-icon-shop:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M10%2C4V3c0-1.657-1.343-3-3-3S4%2C1.343%2C4%2C3v1H1v10h12V4H10z%20M4.5%2C6C4.224%2C6%2C4%2C5.776%2C4%2C5.5S4.224%2C5%2C4.5%2C5S5%2C5.224%2C5%2C5.5%20S4.776%2C6%2C4.5%2C6z%20M5%2C3c0-1.104%2C0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2v1H5V3z%20M9.5%2C6C9.225%2C6%2C9%2C5.776%2C9%2C5.5S9.225%2C5%2C9.5%2C5S10%2C5.224%2C10%2C5.5%20S9.775%2C6%2C9.5%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-star:after,
+.ui-alt-icon .ui-icon-star:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C5%209%2C5%207%2C0%205%2C5%200%2C5%204%2C8%202.625%2C13%207%2C10%2011.375%2C13%2010%2C8%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-tag:after,
+.ui-alt-icon .ui-icon-tag:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C0H0v5l9%2C9l5-5L5%2C0z%20M3%2C4C2.447%2C4%2C2%2C3.553%2C2%2C3s0.447-1%2C1-1s1%2C0.447%2C1%2C1S3.553%2C4%2C3%2C4z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-user:after,
+.ui-alt-icon .ui-icon-user:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M8.851%2C10.101c-0.18-0.399-0.2-0.763-0.153-1.104C9.383%2C8.49%2C9.738%2C7.621%2C9.891%2C6.465C10.493%2C6.355%2C10.5%2C5.967%2C10.5%2C5.5%20c0-0.437-0.008-0.804-0.502-0.94C9.999%2C4.539%2C10%2C4.521%2C10%2C4.5c0-2.103-1-4-2-4C8%2C0.5%2C7.5%2C0%2C6.5%2C0C5%2C0%2C4%2C1.877%2C4%2C4.5%20c0%2C0.021%2C0.001%2C0.039%2C0.002%2C0.06C3.508%2C4.696%2C3.5%2C5.063%2C3.5%2C5.5c0%2C0.467%2C0.007%2C0.855%2C0.609%2C0.965%20C4.262%2C7.621%2C4.617%2C8.49%2C5.303%2C8.997c0.047%2C0.341%2C0.026%2C0.704-0.153%2C1.104C1.503%2C10.503%2C0%2C12%2C0%2C12v2h14v-2%20C14%2C12%2C12.497%2C10.503%2C8.851%2C10.101z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-video:after,
+.ui-alt-icon .ui-icon-video:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%20-2%2014%2014%22%20style%3D%22enable-background%3Anew%200%20-2%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M8%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2h6c1.104%2C0%2C2-0.896%2C2-2V5V2C10%2C0.896%2C9.104%2C0%2C8%2C0z%20M10%2C5l4%2C4V1L10%2C5z%22%2F%3E%3C%2Fsvg%3E");
+}
+/* PNG icons */
+.ui-nosvg .ui-icon-action:after {
+	background-image: url("images/icons-png/action-white.png");
+}
+.ui-nosvg .ui-icon-alert:after {
+	background-image: url("images/icons-png/alert-white.png");
+}
+.ui-nosvg .ui-icon-arrow-d-l:after {
+	background-image: url("images/icons-png/arrow-d-l-white.png");
+}
+.ui-nosvg .ui-icon-arrow-d-r:after {
+	background-image: url("images/icons-png/arrow-d-r-white.png");
+}
+.ui-nosvg .ui-icon-arrow-d:after {
+	background-image: url("images/icons-png/arrow-d-white.png");
+}
+.ui-nosvg .ui-icon-arrow-l:after {
+	background-image: url("images/icons-png/arrow-l-white.png");
+}
+.ui-nosvg .ui-icon-arrow-r:after {
+	background-image: url("images/icons-png/arrow-r-white.png");
+}
+.ui-nosvg .ui-icon-arrow-u-l:after {
+	background-image: url("images/icons-png/arrow-u-l-white.png");
+}
+.ui-nosvg .ui-icon-arrow-u-r:after {
+	background-image: url("images/icons-png/arrow-u-r-white.png");
+}
+.ui-nosvg .ui-icon-arrow-u:after {
+	background-image: url("images/icons-png/arrow-u-white.png");
+}
+.ui-nosvg .ui-icon-audio:after {
+	background-image: url("images/icons-png/audio-white.png");
+}
+.ui-nosvg .ui-icon-back:after {
+	background-image: url("images/icons-png/back-white.png");
+}
+.ui-nosvg .ui-icon-bars:after {
+	background-image: url("images/icons-png/bars-white.png");
+}
+.ui-nosvg .ui-icon-bullets:after {
+	background-image: url("images/icons-png/bullets-white.png");
+}
+.ui-nosvg .ui-icon-calendar:after {
+	background-image: url("images/icons-png/calendar-white.png");
+}
+.ui-nosvg .ui-icon-camera:after {
+	background-image: url("images/icons-png/camera-white.png");
+}
+.ui-nosvg .ui-icon-carat-d:after {
+	background-image: url("images/icons-png/carat-d-white.png");
+}
+.ui-nosvg .ui-icon-carat-l:after {
+	background-image: url("images/icons-png/carat-l-white.png");
+}
+.ui-nosvg .ui-icon-carat-r:after {
+	background-image: url("images/icons-png/carat-r-white.png");
+}
+.ui-nosvg .ui-icon-carat-u:after {
+	background-image: url("images/icons-png/carat-u-white.png");
+}
+.ui-nosvg .ui-icon-check:after,
+html.ui-nosvg .ui-btn.ui-checkbox-on:after {
+	background-image: url("images/icons-png/check-white.png");
+}
+.ui-nosvg .ui-icon-clock:after {
+	background-image: url("images/icons-png/clock-white.png");
+}
+.ui-nosvg .ui-icon-cloud:after {
+	background-image: url("images/icons-png/cloud-white.png");
+}
+.ui-nosvg .ui-icon-comment:after {
+	background-image: url("images/icons-png/comment-white.png");
+}
+.ui-nosvg .ui-icon-delete:after {
+	background-image: url("images/icons-png/delete-white.png");
+}
+.ui-nosvg .ui-icon-edit:after {
+	background-image: url("images/icons-png/edit-white.png");
+}
+.ui-nosvg .ui-icon-eye:after {
+	background-image: url("images/icons-png/eye-white.png");
+}
+.ui-nosvg .ui-icon-forbidden:after {
+	background-image: url("images/icons-png/forbidden-white.png");
+}
+.ui-nosvg .ui-icon-forward:after {
+	background-image: url("images/icons-png/forward-white.png");
+}
+.ui-nosvg .ui-icon-gear:after {
+	background-image: url("images/icons-png/gear-white.png");
+}
+.ui-nosvg .ui-icon-grid:after {
+	background-image: url("images/icons-png/grid-white.png");
+}
+.ui-nosvg .ui-icon-heart:after {
+	background-image: url("images/icons-png/heart-white.png");
+}
+.ui-nosvg .ui-icon-home:after {
+	background-image: url("images/icons-png/home-white.png");
+}
+.ui-nosvg .ui-icon-info:after {
+	background-image: url("images/icons-png/info-white.png");
+}
+.ui-nosvg .ui-icon-location:after {
+	background-image: url("images/icons-png/location-white.png");
+}
+.ui-nosvg .ui-icon-lock:after {
+	background-image: url("images/icons-png/lock-white.png");
+}
+.ui-nosvg .ui-icon-mail:after {
+	background-image: url("images/icons-png/mail-white.png");
+}
+.ui-nosvg .ui-icon-minus:after {
+	background-image: url("images/icons-png/minus-white.png");
+}
+.ui-nosvg .ui-icon-navigation:after {
+	background-image: url("images/icons-png/navigation-white.png");
+}
+.ui-nosvg .ui-icon-phone:after {
+	background-image: url("images/icons-png/phone-white.png");
+}
+.ui-nosvg .ui-icon-plus:after {
+	background-image: url("images/icons-png/plus-white.png");
+}
+.ui-nosvg .ui-icon-power:after {
+	background-image: url("images/icons-png/power-white.png");
+}
+.ui-nosvg .ui-icon-recycle:after {
+	background-image: url("images/icons-png/recycle-white.png");
+}
+.ui-nosvg .ui-icon-refresh:after {
+	background-image: url("images/icons-png/refresh-white.png");
+}
+.ui-nosvg .ui-icon-search:after {
+	background-image: url("images/icons-png/search-white.png");
+}
+.ui-nosvg .ui-icon-shop:after {
+	background-image: url("images/icons-png/shop-white.png");
+}
+.ui-nosvg .ui-icon-star:after {
+	background-image: url("images/icons-png/star-white.png");
+}
+.ui-nosvg .ui-icon-tag:after {
+	background-image: url("images/icons-png/tag-white.png");
+}
+.ui-nosvg .ui-icon-user:after {
+	background-image: url("images/icons-png/user-white.png");
+}
+.ui-nosvg .ui-icon-video:after {
+	background-image: url("images/icons-png/video-white.png");
+}
+/* Alt icons */
+.ui-nosvg .ui-alt-icon.ui-icon-action:after,
+.ui-nosvg .ui-alt-icon .ui-icon-action:after {
+	background-image: url("images/icons-png/action-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-alert:after,
+.ui-nosvg .ui-alt-icon .ui-icon-alert:after {
+	background-image: url("images/icons-png/alert-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-d:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-d:after {
+	background-image: url("images/icons-png/arrow-d-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-d-l:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-d-l:after {
+	background-image: url("images/icons-png/arrow-d-l-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-d-r:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-d-r:after {
+	background-image: url("images/icons-png/arrow-d-r-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-l:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-l:after {
+	background-image: url("images/icons-png/arrow-l-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-r:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-r:after {
+	background-image: url("images/icons-png/arrow-r-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-u:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-u:after {
+	background-image: url("images/icons-png/arrow-u-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-u-l:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-u-l:after {
+	background-image: url("images/icons-png/arrow-u-l-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-arrow-u-r:after,
+.ui-nosvg .ui-alt-icon .ui-icon-arrow-u-r:after {
+	background-image: url("images/icons-png/arrow-u-r-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-audio:after,
+.ui-nosvg .ui-alt-icon .ui-icon-audio:after {
+	background-image: url("images/icons-png/audio-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-back:after,
+.ui-nosvg .ui-alt-icon .ui-icon-back:after {
+	background-image: url("images/icons-png/back-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-bars:after,
+.ui-nosvg .ui-alt-icon .ui-icon-bars:after {
+	background-image: url("images/icons-png/bars-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-bullets:after,
+.ui-nosvg .ui-alt-icon .ui-icon-bullets:after {
+	background-image: url("images/icons-png/bullets-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-calendar:after,
+.ui-nosvg .ui-alt-icon .ui-icon-calendar:after {
+	background-image: url("images/icons-png/calendar-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-camera:after,
+.ui-nosvg .ui-alt-icon .ui-icon-camera:after {
+	background-image: url("images/icons-png/camera-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-carat-d:after,
+.ui-nosvg .ui-alt-icon .ui-icon-carat-d:after {
+	background-image: url("images/icons-png/carat-d-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-carat-l:after,
+.ui-nosvg .ui-alt-icon .ui-icon-carat-l:after {
+	background-image: url("images/icons-png/carat-l-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-carat-r:after,
+.ui-nosvg .ui-alt-icon .ui-icon-carat-r:after {
+	background-image: url("images/icons-png/carat-r-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-carat-u:after,
+.ui-nosvg .ui-alt-icon .ui-icon-carat-u:after {
+	background-image: url("images/icons-png/carat-u-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-check:after,
+.ui-nosvg .ui-alt-icon .ui-icon-check:after,
+.ui-nosvg .ui-alt-icon.ui-btn.ui-checkbox-on:after,
+.ui-nosvg .ui-alt-icon .ui-btn.ui-checkbox-on:after {
+	background-image: url("images/icons-png/check-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-clock:after,
+.ui-nosvg .ui-alt-icon .ui-icon-clock:after {
+	background-image: url("images/icons-png/clock-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-cloud:after,
+.ui-nosvg .ui-alt-icon .ui-icon-cloud:after {
+	background-image: url("images/icons-png/cloud-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-comment:after,
+.ui-nosvg .ui-alt-icon .ui-icon-comment:after {
+	background-image: url("images/icons-png/comment-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-delete:after,
+.ui-nosvg .ui-alt-icon .ui-icon-delete:after {
+	background-image: url("images/icons-png/delete-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-edit:after,
+.ui-nosvg .ui-alt-icon .ui-icon-edit:after {
+	background-image: url("images/icons-png/edit-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-eye:after,
+.ui-nosvg .ui-alt-icon .ui-icon-eye:after {
+	background-image: url("images/icons-png/eye-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-forbidden:after,
+.ui-nosvg .ui-alt-icon .ui-icon-forbidden:after {
+	background-image: url("images/icons-png/forbidden-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-forward:after,
+.ui-nosvg .ui-alt-icon .ui-icon-forward:after {
+	background-image: url("images/icons-png/forward-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-gear:after,
+.ui-nosvg .ui-alt-icon .ui-icon-gear:after {
+	background-image: url("images/icons-png/gear-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-grid:after,
+.ui-nosvg .ui-alt-icon .ui-icon-grid:after {
+	background-image: url("images/icons-png/grid-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-heart:after,
+.ui-nosvg .ui-alt-icon .ui-icon-heart:after {
+	background-image: url("images/icons-png/heart-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-home:after,
+.ui-nosvg .ui-alt-icon .ui-icon-home:after {
+	background-image: url("images/icons-png/home-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-info:after,
+.ui-nosvg .ui-alt-icon .ui-icon-info:after {
+	background-image: url("images/icons-png/info-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-location:after,
+.ui-nosvg .ui-alt-icon .ui-icon-location:after {
+	background-image: url("images/icons-png/location-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-lock:after,
+.ui-nosvg .ui-alt-icon .ui-icon-lock:after {
+	background-image: url("images/icons-png/lock-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-mail:after,
+.ui-nosvg .ui-alt-icon .ui-icon-mail:after {
+	background-image: url("images/icons-png/mail-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-minus:after,
+.ui-nosvg .ui-alt-icon .ui-icon-minus:after {
+	background-image: url("images/icons-png/minus-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-navigation:after,
+.ui-nosvg .ui-alt-icon .ui-icon-navigation:after {
+	background-image: url("images/icons-png/navigation-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-phone:after,
+.ui-nosvg .ui-alt-icon .ui-icon-phone:after {
+	background-image: url("images/icons-png/phone-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-plus:after,
+.ui-nosvg .ui-alt-icon .ui-icon-plus:after {
+	background-image: url("images/icons-png/plus-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-power:after,
+.ui-nosvg .ui-alt-icon .ui-icon-power:after {
+	background-image: url("images/icons-png/power-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-recycle:after,
+.ui-nosvg .ui-alt-icon .ui-icon-recycle:after {
+	background-image: url("images/icons-png/recycle-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-refresh:after,
+.ui-nosvg .ui-alt-icon .ui-icon-refresh:after {
+	background-image: url("images/icons-png/refresh-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-search:after,
+.ui-nosvg .ui-alt-icon .ui-icon-search:after,
+.ui-nosvg .ui-input-search:after {
+	background-image: url("images/icons-png/search-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-shop:after,
+.ui-nosvg .ui-alt-icon .ui-icon-shop:after {
+	background-image: url("images/icons-png/shop-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-star:after,
+.ui-nosvg .ui-alt-icon .ui-icon-star:after {
+	background-image: url("images/icons-png/star-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-tag:after,
+.ui-nosvg .ui-alt-icon .ui-icon-tag:after {
+	background-image: url("images/icons-png/tag-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-user:after,
+.ui-nosvg .ui-alt-icon .ui-icon-user:after {
+	background-image: url("images/icons-png/user-black.png");
+}
+.ui-nosvg .ui-alt-icon.ui-icon-video:after,
+.ui-nosvg .ui-alt-icon .ui-icon-video:after {
+	background-image: url("images/icons-png/video-black.png");
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.icons-1.4.5.min.css
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.icons-1.4.5.min.css	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.icons-1.4.5.min.css	(revision 101)
@@ -0,0 +1,3 @@
+/*! jQuery Mobile 1.4.5 | Git HEADhash: 68e55e7 <> 2014-10-31T17:33:30Z | (c) 2010, 2014 jQuery Foundation, Inc. | jquery.org/license */
+
+.ui-icon-action:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M9%2C5v3l5-4L9%2C0v3c0%2C0-5%2C0-5%2C7C6%2C5%2C9%2C5%2C9%2C5z%20M11%2C12H2V5h1l2-2H0v11h13V7l-2%2C2V12z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-alert:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C0L0%2C12h14L7%2C0z%20M7%2C11c-0.553%2C0-1-0.447-1-1s0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1S7.553%2C11%2C7%2C11z%20M7%2C8%20C6.447%2C8%2C6%2C7.553%2C6%2C7V5c0-0.553%2C0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1v2C8%2C7.553%2C7.553%2C8%2C7%2C8z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-arrow-d-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C3%2011%2C0%203.5%2C7.5%200%2C4%200%2C14%2010%2C14%206.5%2C10.5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-d-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2210.5%2C7.5%203%2C0%200%2C3%207.5%2C10.5%204%2C14%2014%2C14%2014%2C4%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-d:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%229%2C7%209%2C0%205%2C0%205%2C7%200%2C7%207%2C14%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C5%207%2C0%200%2C7%207%2C14%207%2C9%2014%2C9%2014%2C5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C7%207%2C0%207%2C5%200%2C5%200%2C9%207%2C9%207%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-u-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C11%206.5%2C3.5%2010%2C0%200%2C0%200%2C10%203.5%2C6.5%2011%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-u-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C0%204%2C0%207.5%2C3.5%200%2C11%203%2C14%2010.5%2C6.5%2014%2C10%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-u:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C0%200%2C7%205%2C7%205%2C14%209%2C14%209%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-audio:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.018px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014.018%2014%22%20style%3D%22enable-background%3Anew%200%200%2014.018%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M1%2C4C0.447%2C4%2C0%2C4.447%2C0%2C5v4c0%2C0.553%2C0.447%2C1%2C1%2C1h1l4%2C4V0L2%2C4H1z%20M10.346%2C7c0-1.699-1.042-3.154-2.546-3.867L6.982%2C4.68%20C7.885%2C5.107%2C8.51%2C5.98%2C8.51%2C7S7.885%2C8.893%2C6.982%2C9.32L7.8%2C10.867C9.304%2C10.154%2C10.346%2C8.699%2C10.346%2C7z%20M9.447%2C0.017L8.618%2C1.586%20C10.723%2C2.584%2C12.182%2C4.621%2C12.182%2C7s-1.459%2C4.416-3.563%2C5.414l0.829%2C1.569c2.707-1.283%2C4.57-3.925%2C4.57-6.983%20S12.154%2C1.3%2C9.447%2C0.017z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-back:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M5%2C3V0L1%2C4l4%2C4V5c0%2C0%2C6%2C0%2C6%2C3s-5%2C4-5%2C4v2c0%2C0%2C7-1%2C7-6C13%2C4%2C8%2C3%2C5%2C3z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-bars:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M1%2C4h12c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H1C0.447%2C2%2C0%2C2.447%2C0%2C3S0.447%2C4%2C1%2C4z%20M13%2C6H1%20C0.447%2C6%2C0%2C6.447%2C0%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H1c-0.553%2C0-1%2C0.447-1%2C1%20s0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-bullets:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M5%2C4h8c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H5C4.447%2C2%2C4%2C2.447%2C4%2C3S4.447%2C4%2C5%2C4z%20M13%2C6H5%20C4.447%2C6%2C4%2C6.447%2C4%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H5c-0.553%2C0-1%2C0.447-1%2C1%20s0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%20M1%2C2C0.447%2C2%2C0%2C2.447%2C0%2C3s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C2%2C1%2C2z%20M1%2C6%20C0.447%2C6%2C0%2C6.447%2C0%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1s1-0.447%2C1-1C2%2C6.447%2C1.553%2C6%2C1%2C6z%20M1%2C10c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1s1-0.447%2C1-1%20S1.553%2C10%2C1%2C10z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-calendar:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M0%2C8h2V6H0V8z%20M3%2C8h2V6H3V8z%20M6%2C8h2V6H6V8z%20M9%2C8h2V6H9V8z%20M12%2C8h2V6h-2V8z%20M0%2C11h2V9H0V11z%20M3%2C11h2V9H3V11z%20M6%2C11h2V9H6V11z%20%20M9%2C11h2V9H9V11z%20M12%2C11h2V9h-2V11z%20M0%2C14h2v-2H0V14z%20M3%2C14h2v-2H3V14z%20M6%2C14h2v-2H6V14z%20M9%2C14h2v-2H9V14z%20M12%2C1%20c0-0.553-0.447-1-1-1s-1%2C0.447-1%2C1H4c0-0.553-0.447-1-1-1S2%2C0.447%2C2%2C1H0v4h14V1H12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-camera:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M12%2C2.5H9.908c-0.206-0.581-0.756-1-1.408-1h-3c-0.652%2C0-1.202%2C0.419-1.408%2C1H2c-1.104%2C0-2%2C0.896-2%2C2%20v6c0%2C1.104%2C0.896%2C2%2C2%2C2h10c1.104%2C0%2C2-0.896%2C2-2v-6C14%2C3.396%2C13.104%2C2.5%2C12%2C2.5z%20M7%2C10.5c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3C10%2C9.156%2C8.657%2C10.5%2C7%2C10.5z%20M7%2C5.5c-1.104%2C0-2%2C0.896-2%2C2c0%2C1.104%2C0.896%2C2%2C2%2C2c1.104%2C0%2C2-0.896%2C2-2%20C9%2C6.396%2C8.104%2C5.5%2C7%2C5.5z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-carat-d:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2211.949%2C3.404%207%2C8.354%202.05%2C3.404%20-0.071%2C5.525%207%2C12.596%2014.07%2C5.525%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-carat-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2210.596%2C11.949%205.646%2C7%2010.596%2C2.05%208.475%2C-0.071%201.404%2C7%208.475%2C14.07%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-carat-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%223.404%2C2.051%208.354%2C7%203.404%2C11.95%205.525%2C14.07%2012.596%2C7%205.525%2C-0.071%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-carat-u:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%222.051%2C10.596%207%2C5.646%2011.95%2C10.596%2014.07%2C8.475%207%2C1.404%20-0.071%2C8.475%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-check:after,html .ui-btn.ui-checkbox-on.ui-checkbox-on:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2214%2C4%2011%2C1%205.003%2C6.997%203%2C5%200%2C8%204.966%2C13%204.983%2C12.982%205%2C13%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-clock:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C12c-2.762%2C0-5-2.238-5-5s2.238-5%2C5-5s5%2C2.238%2C5%2C5%20S9.762%2C12%2C7%2C12z%20M9%2C6H8V4c0-0.553-0.447-1-1-1S6%2C3.447%2C6%2C4v3c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1S9.553%2C6%2C9%2C6z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-cloud:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M14%2C9.5c0-0.793-0.465-1.473-1.134-1.795C12.949%2C7.484%2C13%2C7.249%2C13%2C7c0-1.104-0.896-2-2-2%20c-0.158%2C0-0.311%2C0.023-0.457%2C0.058C9.816%2C3.549%2C8.286%2C2.5%2C6.5%2C2.5c-2.33%2C0-4.224%2C1.777-4.454%2C4.046C0.883%2C6.76%2C0%2C7.773%2C0%2C9%20c0%2C1.381%2C1.119%2C2.5%2C2.5%2C2.5h10v-0.07C13.361%2C11.206%2C14%2C10.432%2C14%2C9.5z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-comment:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M12%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v7c0%2C1.104%2C0.896%2C2%2C2%2C2h1v3l3-3h6c1.104%2C0%2C2-0.896%2C2-2V2C14%2C0.896%2C13.104%2C0%2C12%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-delete:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C3%2011%2C0%207%2C4%203%2C0%200%2C3%204%2C7%200%2C11%203%2C14%207%2C10%2011%2C14%2014%2C11%2010%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-edit:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M1%2C10l-1%2C4l4-1l7-7L8%2C3L1%2C10z%20M11%2C0L9%2C2l3%2C3l2-2L11%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-eye:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C2C3%2C2%2C0%2C7%2C0%2C7s3%2C5%2C7%2C5s7-5%2C7-5S11%2C2%2C7%2C2z%20M7%2C10c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3C10%2C8.656%2C8.657%2C10%2C7%2C10z%20M7%2C6C6.448%2C6%2C6%2C6.447%2C6%2C7c0%2C0.553%2C0.448%2C1%2C1%2C1s1-0.447%2C1-1C8%2C6.447%2C7.552%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-forbidden:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M12.601%2C11.187C13.476%2C10.018%2C14%2C8.572%2C14%2C7c0-3.866-3.134-7-7-7C5.428%2C0%2C3.982%2C0.524%2C2.813%2C1.399L2.757%2C1.343L2.053%2C2.048%20L2.048%2C2.053L1.343%2C2.758l0.056%2C0.056C0.524%2C3.982%2C0%2C5.428%2C0%2C7c0%2C3.866%2C3.134%2C7%2C7%2C7c1.572%2C0%2C3.018-0.524%2C4.187-1.399l0.056%2C0.057%20l0.705-0.705l0.005-0.005l0.705-0.705L12.601%2C11.187z%20M7%2C2c2.761%2C0%2C5%2C2.238%2C5%2C5c0%2C1.019-0.308%2C1.964-0.832%2C2.754L4.246%2C2.832%20C5.036%2C2.308%2C5.981%2C2%2C7%2C2z%20M7%2C12c-2.761%2C0-5-2.238-5-5c0-1.019%2C0.308-1.964%2C0.832-2.754l6.922%2C6.922C8.964%2C11.692%2C8.019%2C12%2C7%2C12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-forward:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M13%2C4L9%2C0v3C6%2C3%2C1%2C4%2C1%2C8c0%2C5%2C7%2C6%2C7%2C6v-2c0%2C0-5-1-5-4s6-3%2C6-3v3L13%2C4z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-gear:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M13.621%2C5.904l-1.036-0.259c-0.168-0.042-0.303-0.168-0.355-0.332c-0.092-0.284-0.205-0.559-0.339-0.82%20c-0.079-0.153-0.073-0.337%2C0.017-0.486l0.549-0.915c0.118-0.196%2C0.088-0.448-0.075-0.61l-0.862-0.863%20c-0.162-0.163-0.414-0.193-0.611-0.075l-0.916%2C0.55C9.844%2C2.182%2C9.659%2C2.188%2C9.506%2C2.109C9.244%2C1.975%2C8.97%2C1.861%2C8.686%2C1.77%20c-0.165-0.052-0.29-0.187-0.332-0.354L8.095%2C0.379C8.039%2C0.156%2C7.839%2C0%2C7.609%2C0H6.391c-0.229%2C0-0.43%2C0.156-0.485%2C0.379L5.646%2C1.415%20C5.604%2C1.582%2C5.479%2C1.718%2C5.313%2C1.77c-0.284%2C0.092-0.559%2C0.206-0.82%2C0.34C4.339%2C2.188%2C4.155%2C2.182%2C4.007%2C2.093L3.092%2C1.544%20c-0.196-0.118-0.448-0.087-0.61%2C0.075L1.619%2C2.481C1.457%2C2.644%2C1.426%2C2.896%2C1.544%2C3.093l0.549%2C0.914%20c0.089%2C0.148%2C0.095%2C0.332%2C0.017%2C0.486C1.975%2C4.755%2C1.861%2C5.029%2C1.77%2C5.314c-0.053%2C0.164-0.188%2C0.29-0.354%2C0.332L0.379%2C5.905%20C0.156%2C5.961%2C0%2C6.161%2C0%2C6.391v1.219c0%2C0.229%2C0.156%2C0.43%2C0.379%2C0.485l1.036%2C0.26C1.582%2C8.396%2C1.717%2C8.521%2C1.77%2C8.687%20c0.092%2C0.284%2C0.205%2C0.559%2C0.34%2C0.82C2.188%2C9.66%2C2.182%2C9.844%2C2.093%2C9.993l-0.549%2C0.915c-0.118%2C0.195-0.087%2C0.448%2C0.075%2C0.61%20l0.862%2C0.862c0.162%2C0.163%2C0.414%2C0.193%2C0.61%2C0.075l0.915-0.549c0.148-0.089%2C0.332-0.095%2C0.486-0.017%20c0.262%2C0.135%2C0.536%2C0.248%2C0.82%2C0.34c0.165%2C0.053%2C0.291%2C0.187%2C0.332%2C0.354l0.259%2C1.036C5.96%2C13.844%2C6.16%2C14%2C6.39%2C14h1.22%20c0.229%2C0%2C0.43-0.156%2C0.485-0.379l0.259-1.036c0.042-0.167%2C0.168-0.302%2C0.333-0.354c0.284-0.092%2C0.559-0.205%2C0.82-0.34%20c0.154-0.078%2C0.338-0.072%2C0.486%2C0.017l0.914%2C0.549c0.197%2C0.118%2C0.449%2C0.088%2C0.611-0.074l0.862-0.863%20c0.163-0.162%2C0.193-0.415%2C0.075-0.611l-0.549-0.915c-0.089-0.148-0.096-0.332-0.017-0.485c0.134-0.263%2C0.248-0.536%2C0.339-0.82%20c0.053-0.165%2C0.188-0.291%2C0.355-0.333l1.036-0.259C13.844%2C8.039%2C14%2C7.839%2C14%2C7.609V6.39C14%2C6.16%2C13.844%2C5.96%2C13.621%2C5.904z%20M7%2C10%20c-1.657%2C0-3-1.343-3-3s1.343-3%2C3-3s3%2C1.343%2C3%2C3S8.657%2C10%2C7%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-grid:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3%2C0H1C0.447%2C0%2C0%2C0.447%2C0%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C4%2C0.447%2C3.553%2C0%2C3%2C0z%20M8%2C0H6%20C5.447%2C0%2C5%2C0.447%2C5%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C9%2C0.447%2C8.553%2C0%2C8%2C0z%20M13%2C0h-2c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C14%2C0.447%2C13.553%2C0%2C13%2C0z%20M3%2C5H1C0.447%2C5%2C0%2C5.447%2C0%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1V6C4%2C5.447%2C3.553%2C5%2C3%2C5z%20M8%2C5H6C5.447%2C5%2C5%2C5.447%2C5%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6%20C9%2C5.447%2C8.553%2C5%2C8%2C5z%20M13%2C5h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6C14%2C5.447%2C13.553%2C5%2C13%2C5z%20M3%2C10%20H1c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C4%2C10.447%2C3.553%2C10%2C3%2C10z%20M8%2C10H6c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C9%2C10.447%2C8.553%2C10%2C8%2C10z%20M13%2C10h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1v-2C14%2C10.447%2C13.553%2C10%2C13%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-heart:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C1.872c-2-3-7-2-7%2C2c0%2C3%2C4%2C7%2C4%2C7s2.417%2C2.479%2C3%2C3c0.583-0.521%2C3-3%2C3-3s4-4%2C4-7%20C14-0.128%2C9-1.128%2C7%2C1.872z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-home:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C0%200%2C7%202%2C7%202%2C14%205%2C14%205%2C9%209%2C9%209%2C14%2012%2C14%2012%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-info:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C2c0.552%2C0%2C1%2C0.447%2C1%2C1S7.552%2C4%2C7%2C4S6%2C3.553%2C6%2C3%20S6.448%2C2%2C7%2C2z%20M9%2C11H5v-1h1V6H5V5h3v5h1V11z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-location:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C0C4.791%2C0%2C3%2C1.791%2C3%2C4c0%2C2%2C4%2C10%2C4%2C10s4-8%2C4-10C11%2C1.791%2C9.209%2C0%2C7%2C0z%20M7%2C6C5.896%2C6%2C5%2C5.104%2C5%2C4%20s0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2S8.104%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-lock:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M12%2C6V5c0-2.762-2.238-5-5-5C4.239%2C0%2C2%2C2.238%2C2%2C5v1H1v8h12V6H12z%20M7.5%2C9.848V12h-1V9.848%20C6.207%2C9.673%2C6%2C9.366%2C6%2C9c0-0.553%2C0.448-1%2C1-1s1%2C0.447%2C1%2C1C8%2C9.366%2C7.793%2C9.673%2C7.5%2C9.848z%20M10%2C6H4V5c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3V6z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-mail:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M0%2C3.75V12h14V3.75L7%2C9L0%2C3.75z%20M14%2C2H0l7%2C5L14%2C2z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-minus:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Crect%20y%3D%225%22%20style%3D%22fill%3A%23FFFFFF%3B%22%20width%3D%2214%22%20height%3D%224%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-navigation:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2213%2C1%200%2C6%207%2C7%208%2C14%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-phone:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%22-0.01%200.008%2014%2014%22%20style%3D%22enable-background%3Anew%20-0.01%200.008%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M6.939%2C9.189C6.165%2C8.557%2C5.271%2C7.705%2C4.497%2C6.744C3.953%2C6.071%2C3.473%2C5.363%2C3.969%2C4.866l-3.482-3.48%20C-0.021%2C2.02-1.146%2C5.04%2C3.675%2C9.984c5.08%2C5.211%2C8.356%2C4.097%2C8.92%2C3.511l-3.396-3.4C8.725%2C10.568%2C8.113%2C10.146%2C6.939%2C9.189z%20%20M13.82%2C11.519v-0.004c0%2C0-2.648-2.646-2.649-2.647c-0.21-0.211-0.546-0.205-0.754%2C0.002L9.455%2C9.831l3.403%2C3.407%20c0%2C0%2C0.962-0.96%2C0.961-0.961l0.002-0.001C14.043%2C12.056%2C14.021%2C11.721%2C13.82%2C11.519z%20M5.192%2C3.644V3.642%20c0.222-0.222%2C0.2-0.557%2C0-0.758V2.881c0%2C0-2.726-2.725-2.727-2.726C2.255-0.055%2C1.92-0.05%2C1.712%2C0.156L0.751%2C1.121l3.479%2C3.482%20C4.231%2C4.604%2C5.192%2C3.645%2C5.192%2C3.644z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-plus:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C5%209%2C5%209%2C0%205%2C0%205%2C5%200%2C5%200%2C9%205%2C9%205%2C14%209%2C14%209%2C9%2014%2C9%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-power:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M11.243%2C2.408c-0.392-0.401-1.024-0.401-1.415%2C0c-0.391%2C0.401-0.391%2C1.054%2C0%2C1.455%20C10.584%2C4.642%2C11%2C5.675%2C11%2C6.773s-0.416%2C2.133-1.172%2C2.91c-1.512%2C1.558-4.145%2C1.558-5.656%2C0C3.416%2C8.904%2C3%2C7.872%2C3%2C6.773%20C3%2C5.673%2C3.416%2C4.64%2C4.172%2C3.863c0.39-0.401%2C0.39-1.054%2C0-1.455c-0.391-0.401-1.024-0.401-1.415%2C0C1.624%2C3.574%2C1%2C5.125%2C1%2C6.773%20c0%2C1.647%2C0.624%2C3.199%2C1.757%2C4.365c1.134%2C1.166%2C2.64%2C1.809%2C4.243%2C1.809c1.604%2C0%2C3.109-0.645%2C4.243-1.811%20C12.376%2C9.975%2C13%2C8.423%2C13%2C6.773C13%2C5.125%2C12.376%2C3.574%2C11.243%2C2.408z%20M7%2C8.053c0.553%2C0%2C1-0.445%2C1-1v-6c0-0.553-0.447-1-1-1%20c-0.553%2C0-1%2C0.447-1%2C1v6C6%2C7.604%2C6.447%2C8.053%2C7%2C8.053z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-recycle:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M3%2C7h1L2%2C4L0%2C7h1c0%2C3.313%2C2.687%2C6%2C6%2C6c0.702%2C0%2C1.374-0.127%2C2-0.35v-2.205C8.41%2C10.789%2C7.732%2C11%2C7%2C11%20C4.791%2C11%2C3%2C9.209%2C3%2C7z%20M13%2C7c0-3.313-2.688-6-6-6C6.298%2C1%2C5.626%2C1.127%2C5%2C1.349v2.206C5.59%2C3.211%2C6.268%2C3%2C7%2C3c2.209%2C0%2C4%2C1.791%2C4%2C4%20h-1l2%2C3l2-3H13z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-refresh:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.001px%22%20height%3D%2214.002px%22%20viewBox%3D%220%200%2014.001%2014.002%22%20style%3D%22enable-background%3Anew%200%200%2014.001%2014.002%3B%22%20%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M14.001%2C6.001v-6l-2.06%2C2.06c-0.423-0.424-0.897-0.809-1.44-1.122C7.153-0.994%2C2.872%2C0.153%2C0.939%2C3.501%20c-1.933%2C3.348-0.786%2C7.629%2C2.562%2C9.562c3.348%2C1.933%2C7.629%2C0.785%2C9.562-2.562l-1.732-1c-1.381%2C2.392-4.438%2C3.211-6.83%2C1.83%20s-3.211-4.438-1.83-6.83s4.438-3.211%2C6.83-1.83c0.389%2C0.225%2C0.718%2C0.506%2C1.02%2C0.81l-2.52%2C2.52H14.001z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-search:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M10.171%2C8.766c0.617-0.888%2C0.979-1.964%2C0.979-3.126c0-3.037-2.463-5.5-5.5-5.5s-5.5%2C2.463-5.5%2C5.5%20s2.463%2C5.5%2C5.5%2C5.5c1.152%2C0%2C2.223-0.355%2C3.104-0.962l3.684%2C3.683l1.414-1.414L10.171%2C8.766z%20M5.649%2C9.14c-1.933%2C0-3.5-1.567-3.5-3.5%20c0-1.933%2C1.567-3.5%2C3.5-3.5c1.933%2C0%2C3.5%2C1.567%2C3.5%2C3.5C9.149%2C7.572%2C7.582%2C9.14%2C5.649%2C9.14z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-shop:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M10%2C4V3c0-1.657-1.343-3-3-3S4%2C1.343%2C4%2C3v1H1v10h12V4H10z%20M4.5%2C6C4.224%2C6%2C4%2C5.776%2C4%2C5.5%20S4.224%2C5%2C4.5%2C5S5%2C5.224%2C5%2C5.5S4.776%2C6%2C4.5%2C6z%20M5%2C3c0-1.104%2C0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2v1H5V3z%20M9.5%2C6C9.225%2C6%2C9%2C5.776%2C9%2C5.5%20S9.225%2C5%2C9.5%2C5S10%2C5.224%2C10%2C5.5S9.775%2C6%2C9.5%2C6z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-star:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2214%2C5%209%2C5%207%2C0%205%2C5%200%2C5%204%2C8%202.625%2C13%207%2C10%2011.375%2C13%2010%2C8%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-tag:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M5%2C0H0v5l9%2C9l5-5L5%2C0z%20M3%2C4C2.447%2C4%2C2%2C3.553%2C2%2C3s0.447-1%2C1-1s1%2C0.447%2C1%2C1S3.553%2C4%2C3%2C4z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-user:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M8.851%2C10.101c-0.18-0.399-0.2-0.763-0.153-1.104C9.383%2C8.49%2C9.738%2C7.621%2C9.891%2C6.465C10.493%2C6.355%2C10.5%2C5.967%2C10.5%2C5.5%20c0-0.437-0.008-0.804-0.502-0.94C9.999%2C4.539%2C10%2C4.521%2C10%2C4.5c0-2.103-1-4-2-4C8%2C0.5%2C7.5%2C0%2C6.5%2C0C5%2C0%2C4%2C1.877%2C4%2C4.5%20c0%2C0.021%2C0.001%2C0.039%2C0.002%2C0.06C3.508%2C4.696%2C3.5%2C5.063%2C3.5%2C5.5c0%2C0.467%2C0.007%2C0.855%2C0.609%2C0.965%20C4.262%2C7.621%2C4.617%2C8.49%2C5.303%2C8.997c0.047%2C0.341%2C0.026%2C0.704-0.153%2C1.104C1.503%2C10.503%2C0%2C12%2C0%2C12v2h14v-2%20C14%2C12%2C12.497%2C10.503%2C8.851%2C10.101z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-video:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%20-2%2014%2014%22%20style%3D%22enable-background%3Anew%200%20-2%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M8%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2h6c1.104%2C0%2C2-0.896%2C2-2V5V2C10%2C0.896%2C9.104%2C0%2C8%2C0z%20%20M10%2C5l4%2C4V1L10%2C5z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-action:after,.ui-alt-icon .ui-icon-action:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M9%2C5v3l5-4L9%2C0v3c0%2C0-5%2C0-5%2C7C6%2C5%2C9%2C5%2C9%2C5z%20M11%2C12H2V5h1l2-2H0v11h13V7l-2%2C2V12z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-alert:after,.ui-alt-icon .ui-icon-alert:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0L0%2C12h14L7%2C0z%20M7%2C11c-0.553%2C0-1-0.447-1-1s0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1S7.553%2C11%2C7%2C11z%20M7%2C8C6.447%2C8%2C6%2C7.553%2C6%2C7V5%20c0-0.553%2C0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1v2C8%2C7.553%2C7.553%2C8%2C7%2C8z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-d:after,.ui-alt-icon .ui-icon-arrow-d:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%229%2C7%209%2C0%205%2C0%205%2C7%200%2C7%207%2C14%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-d-l:after,.ui-alt-icon .ui-icon-arrow-d-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C3%2011%2C0%203.5%2C7.5%200%2C4%200%2C14%2010%2C14%206.5%2C10.5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-d-r:after,.ui-alt-icon .ui-icon-arrow-d-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2210.5%2C7.5%203%2C0%200%2C3%207.5%2C10.5%204%2C14%2014%2C14%2014%2C4%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-l:after,.ui-alt-icon .ui-icon-arrow-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C5%207%2C0%200%2C7%207%2C14%207%2C9%2014%2C9%2014%2C5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-r:after,.ui-alt-icon .ui-icon-arrow-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C7%207%2C0%207%2C5%200%2C5%200%2C9%207%2C9%207%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-u:after,.ui-alt-icon .ui-icon-arrow-u:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C0%200%2C7%205%2C7%205%2C14%209%2C14%209%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-u-l:after,.ui-alt-icon .ui-icon-arrow-u-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C11%206.5%2C3.5%2010%2C0%200%2C0%200%2C10%203.5%2C6.5%2011%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-u-r:after,.ui-alt-icon .ui-icon-arrow-u-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C0%204%2C0%207.5%2C3.5%200%2C11%203%2C14%2010.5%2C6.5%2014%2C10%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-audio:after,.ui-alt-icon .ui-icon-audio:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.018px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014.018%2014%22%20style%3D%22enable-background%3Anew%200%200%2014.018%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C4C0.447%2C4%2C0%2C4.447%2C0%2C5v4c0%2C0.553%2C0.447%2C1%2C1%2C1h1l4%2C4V0L2%2C4H1z%20M10.346%2C7c0-1.699-1.042-3.154-2.546-3.867L6.982%2C4.68%20C7.885%2C5.107%2C8.51%2C5.98%2C8.51%2C7S7.885%2C8.893%2C6.982%2C9.32L7.8%2C10.867C9.304%2C10.154%2C10.346%2C8.699%2C10.346%2C7z%20M9.447%2C0.017L8.618%2C1.586%20C10.723%2C2.584%2C12.182%2C4.621%2C12.182%2C7s-1.459%2C4.416-3.563%2C5.414l0.829%2C1.569c2.707-1.283%2C4.57-3.925%2C4.57-6.983%20S12.154%2C1.3%2C9.447%2C0.017z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-back:after,.ui-alt-icon .ui-icon-back:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C3V0L1%2C4l4%2C4V5c0%2C0%2C6%2C0%2C6%2C3s-5%2C4-5%2C4v2c0%2C0%2C7-1%2C7-6C13%2C4%2C8%2C3%2C5%2C3z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-bars:after,.ui-alt-icon .ui-icon-bars:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C4h12c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H1C0.447%2C2%2C0%2C2.447%2C0%2C3S0.447%2C4%2C1%2C4z%20M13%2C6H1C0.447%2C6%2C0%2C6.447%2C0%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H1c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1h12%20c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-bullets:after,.ui-alt-icon .ui-icon-bullets:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C4h8c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H5C4.447%2C2%2C4%2C2.447%2C4%2C3S4.447%2C4%2C5%2C4z%20M13%2C6H5C4.447%2C6%2C4%2C6.447%2C4%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H5c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1h8%20c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%20M1%2C2C0.447%2C2%2C0%2C2.447%2C0%2C3s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C2%2C1%2C2z%20M1%2C6C0.447%2C6%2C0%2C6.447%2C0%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1s1-0.447%2C1-1C2%2C6.447%2C1.553%2C6%2C1%2C6z%20M1%2C10c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C10%2C1%2C10z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-calendar:after,.ui-alt-icon .ui-icon-calendar:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M0%2C8h2V6H0V8z%20M3%2C8h2V6H3V8z%20M6%2C8h2V6H6V8z%20M9%2C8h2V6H9V8z%20M12%2C8h2V6h-2V8z%20M0%2C11h2V9H0V11z%20M3%2C11h2V9H3V11z%20M6%2C11h2V9H6V11z%20%20M9%2C11h2V9H9V11z%20M12%2C11h2V9h-2V11z%20M0%2C14h2v-2H0V14z%20M3%2C14h2v-2H3V14z%20M6%2C14h2v-2H6V14z%20M9%2C14h2v-2H9V14z%20M12%2C1%20c0-0.553-0.447-1-1-1s-1%2C0.447-1%2C1H4c0-0.553-0.447-1-1-1S2%2C0.447%2C2%2C1H0v4h14V1H12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-camera:after,.ui-alt-icon .ui-icon-camera:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C2.5H9.908c-0.206-0.581-0.756-1-1.408-1h-3c-0.652%2C0-1.202%2C0.419-1.408%2C1H2c-1.104%2C0-2%2C0.896-2%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2%20h10c1.104%2C0%2C2-0.896%2C2-2v-6C14%2C3.396%2C13.104%2C2.5%2C12%2C2.5z%20M7%2C10.5c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3%20C10%2C9.156%2C8.657%2C10.5%2C7%2C10.5z%20M7%2C5.5c-1.104%2C0-2%2C0.896-2%2C2c0%2C1.104%2C0.896%2C2%2C2%2C2c1.104%2C0%2C2-0.896%2C2-2C9%2C6.396%2C8.104%2C5.5%2C7%2C5.5z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-carat-d:after,.ui-alt-icon .ui-icon-carat-d:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2211.949%2C3.404%207%2C8.354%202.05%2C3.404%20-0.071%2C5.525%207%2C12.596%2014.07%2C5.525%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-carat-l:after,.ui-alt-icon .ui-icon-carat-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2210.596%2C11.949%205.646%2C7%2010.596%2C2.05%208.475%2C-0.071%201.404%2C7%208.475%2C14.07%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-carat-r:after,.ui-alt-icon .ui-icon-carat-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%223.404%2C2.051%208.354%2C7%203.404%2C11.95%205.525%2C14.07%2012.596%2C7%205.525%2C-0.071%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-carat-u:after,.ui-alt-icon .ui-icon-carat-u:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%222.051%2C10.596%207%2C5.646%2011.95%2C10.596%2014.07%2C8.475%207%2C1.404%20-0.071%2C8.475%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-check:after,.ui-alt-icon .ui-icon-check:after,html .ui-alt-icon.ui-btn.ui-checkbox-on:after,html .ui-alt-icon .ui-btn.ui-checkbox-on:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C4%2011%2C1%205.003%2C6.997%203%2C5%200%2C8%204.966%2C13%204.983%2C12.982%205%2C13%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-clock:after,.ui-alt-icon .ui-icon-clock:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C12c-2.762%2C0-5-2.238-5-5s2.238-5%2C5-5s5%2C2.238%2C5%2C5%20S9.762%2C12%2C7%2C12z%20M9%2C6H8V4c0-0.553-0.447-1-1-1S6%2C3.447%2C6%2C4v3c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1S9.553%2C6%2C9%2C6z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-cloud:after,.ui-alt-icon .ui-icon-cloud:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M14%2C9.5c0-0.793-0.465-1.473-1.134-1.795C12.949%2C7.484%2C13%2C7.249%2C13%2C7c0-1.104-0.896-2-2-2c-0.158%2C0-0.311%2C0.023-0.457%2C0.058%20C9.816%2C3.549%2C8.286%2C2.5%2C6.5%2C2.5c-2.33%2C0-4.224%2C1.777-4.454%2C4.046C0.883%2C6.76%2C0%2C7.773%2C0%2C9c0%2C1.381%2C1.119%2C2.5%2C2.5%2C2.5h10v-0.07%20C13.361%2C11.206%2C14%2C10.432%2C14%2C9.5z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-comment:after,.ui-alt-icon .ui-icon-comment:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v7c0%2C1.104%2C0.896%2C2%2C2%2C2h1v3l3-3h6c1.104%2C0%2C2-0.896%2C2-2V2C14%2C0.896%2C13.104%2C0%2C12%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-delete:after,.ui-alt-icon .ui-icon-delete:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C3%2011%2C0%207%2C4%203%2C0%200%2C3%204%2C7%200%2C11%203%2C14%207%2C10%2011%2C14%2014%2C11%2010%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-edit:after,.ui-alt-icon .ui-icon-edit:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C10l-1%2C4l4-1l7-7L8%2C3L1%2C10z%20M11%2C0L9%2C2l3%2C3l2-2L11%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-eye:after,.ui-alt-icon .ui-icon-eye:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C2C3%2C2%2C0%2C7%2C0%2C7s3%2C5%2C7%2C5s7-5%2C7-5S11%2C2%2C7%2C2z%20M7%2C10c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3%20C10%2C8.656%2C8.657%2C10%2C7%2C10z%20M7%2C6C6.448%2C6%2C6%2C6.447%2C6%2C7c0%2C0.553%2C0.448%2C1%2C1%2C1s1-0.447%2C1-1C8%2C6.447%2C7.552%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-forbidden:after,.ui-alt-icon .ui-icon-forbidden:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12.601%2C11.187C13.476%2C10.018%2C14%2C8.572%2C14%2C7c0-3.866-3.134-7-7-7C5.428%2C0%2C3.982%2C0.524%2C2.813%2C1.399L2.757%2C1.343L2.053%2C2.048%20L2.048%2C2.053L1.343%2C2.758l0.056%2C0.056C0.524%2C3.982%2C0%2C5.428%2C0%2C7c0%2C3.866%2C3.134%2C7%2C7%2C7c1.572%2C0%2C3.018-0.524%2C4.187-1.399l0.056%2C0.057%20l0.705-0.705l0.005-0.005l0.705-0.705L12.601%2C11.187z%20M7%2C2c2.761%2C0%2C5%2C2.238%2C5%2C5c0%2C1.019-0.308%2C1.964-0.832%2C2.754L4.246%2C2.832%20C5.036%2C2.308%2C5.981%2C2%2C7%2C2z%20M7%2C12c-2.761%2C0-5-2.238-5-5c0-1.019%2C0.308-1.964%2C0.832-2.754l6.922%2C6.922C8.964%2C11.692%2C8.019%2C12%2C7%2C12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-forward:after,.ui-alt-icon .ui-icon-forward:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M13%2C4L9%2C0v3C6%2C3%2C1%2C4%2C1%2C8c0%2C5%2C7%2C6%2C7%2C6v-2c0%2C0-5-1-5-4s6-3%2C6-3v3L13%2C4z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-gear:after,.ui-alt-icon .ui-icon-gear:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M13.621%2C5.904l-1.036-0.259c-0.168-0.042-0.303-0.168-0.355-0.332c-0.092-0.284-0.205-0.559-0.339-0.82%20c-0.079-0.153-0.073-0.337%2C0.017-0.486l0.549-0.915c0.118-0.196%2C0.088-0.448-0.075-0.61l-0.862-0.863%20c-0.162-0.163-0.414-0.193-0.611-0.075l-0.916%2C0.55C9.844%2C2.182%2C9.659%2C2.188%2C9.506%2C2.109C9.244%2C1.975%2C8.97%2C1.861%2C8.686%2C1.77%20c-0.165-0.052-0.29-0.187-0.332-0.354L8.095%2C0.379C8.039%2C0.156%2C7.839%2C0%2C7.609%2C0H6.391c-0.229%2C0-0.43%2C0.156-0.485%2C0.379L5.646%2C1.415%20C5.604%2C1.582%2C5.479%2C1.718%2C5.313%2C1.77c-0.284%2C0.092-0.559%2C0.206-0.82%2C0.34C4.339%2C2.188%2C4.155%2C2.182%2C4.007%2C2.093L3.092%2C1.544%20c-0.196-0.118-0.448-0.087-0.61%2C0.075L1.619%2C2.481C1.457%2C2.644%2C1.426%2C2.896%2C1.544%2C3.093l0.549%2C0.914%20c0.089%2C0.148%2C0.095%2C0.332%2C0.017%2C0.486C1.975%2C4.755%2C1.861%2C5.029%2C1.77%2C5.314c-0.053%2C0.164-0.188%2C0.29-0.354%2C0.332L0.379%2C5.905%20C0.156%2C5.961%2C0%2C6.161%2C0%2C6.391v1.219c0%2C0.229%2C0.156%2C0.43%2C0.379%2C0.485l1.036%2C0.26C1.582%2C8.396%2C1.717%2C8.521%2C1.77%2C8.687%20c0.092%2C0.284%2C0.205%2C0.559%2C0.34%2C0.82C2.188%2C9.66%2C2.182%2C9.844%2C2.093%2C9.993l-0.549%2C0.915c-0.118%2C0.195-0.087%2C0.448%2C0.075%2C0.61%20l0.862%2C0.862c0.162%2C0.163%2C0.414%2C0.193%2C0.61%2C0.075l0.915-0.549c0.148-0.089%2C0.332-0.095%2C0.486-0.017%20c0.262%2C0.135%2C0.536%2C0.248%2C0.82%2C0.34c0.165%2C0.053%2C0.291%2C0.187%2C0.332%2C0.354l0.259%2C1.036C5.96%2C13.844%2C6.16%2C14%2C6.39%2C14h1.22%20c0.229%2C0%2C0.43-0.156%2C0.485-0.379l0.259-1.036c0.042-0.167%2C0.168-0.302%2C0.333-0.354c0.284-0.092%2C0.559-0.205%2C0.82-0.34%20c0.154-0.078%2C0.338-0.072%2C0.486%2C0.017l0.914%2C0.549c0.197%2C0.118%2C0.449%2C0.088%2C0.611-0.074l0.862-0.863%20c0.163-0.162%2C0.193-0.415%2C0.075-0.611l-0.549-0.915c-0.089-0.148-0.096-0.332-0.017-0.485c0.134-0.263%2C0.248-0.536%2C0.339-0.82%20c0.053-0.165%2C0.188-0.291%2C0.355-0.333l1.036-0.259C13.844%2C8.039%2C14%2C7.839%2C14%2C7.609V6.39C14%2C6.16%2C13.844%2C5.96%2C13.621%2C5.904z%20M7%2C10%20c-1.657%2C0-3-1.343-3-3s1.343-3%2C3-3s3%2C1.343%2C3%2C3S8.657%2C10%2C7%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-grid:after,.ui-alt-icon .ui-icon-grid:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M3%2C0H1C0.447%2C0%2C0%2C0.447%2C0%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C4%2C0.447%2C3.553%2C0%2C3%2C0z%20M8%2C0H6%20C5.447%2C0%2C5%2C0.447%2C5%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C9%2C0.447%2C8.553%2C0%2C8%2C0z%20M13%2C0h-2c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C14%2C0.447%2C13.553%2C0%2C13%2C0z%20M3%2C5H1C0.447%2C5%2C0%2C5.447%2C0%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1V6C4%2C5.447%2C3.553%2C5%2C3%2C5z%20M8%2C5H6C5.447%2C5%2C5%2C5.447%2C5%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6%20C9%2C5.447%2C8.553%2C5%2C8%2C5z%20M13%2C5h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6C14%2C5.447%2C13.553%2C5%2C13%2C5z%20M3%2C10%20H1c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C4%2C10.447%2C3.553%2C10%2C3%2C10z%20M8%2C10H6c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C9%2C10.447%2C8.553%2C10%2C8%2C10z%20M13%2C10h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1v-2C14%2C10.447%2C13.553%2C10%2C13%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-heart:after,.ui-alt-icon .ui-icon-heart:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C1.958c-2-3-7-2.128-7%2C1.872c0%2C3%2C4%2C7%2C4%2C7s2.417%2C2.48%2C3%2C3c0.583-0.52%2C3-3%2C3-3s4-4%2C4-7C14-0.169%2C9-1.042%2C7%2C1.958z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-home:after,.ui-alt-icon .ui-icon-home:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C0%200%2C7%202%2C7%202%2C14%205%2C14%205%2C9%209%2C9%209%2C14%2012%2C14%2012%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-info:after,.ui-alt-icon .ui-icon-info:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C2c0.552%2C0%2C1%2C0.447%2C1%2C1S7.552%2C4%2C7%2C4S6%2C3.553%2C6%2C3%20S6.448%2C2%2C7%2C2z%20M9%2C11H5v-1h1V6H5V5h3v5h1V11z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-location:after,.ui-alt-icon .ui-icon-location:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C4.791%2C0%2C3%2C1.791%2C3%2C4c0%2C2%2C4%2C10%2C4%2C10s4-8%2C4-10C11%2C1.791%2C9.209%2C0%2C7%2C0z%20M7%2C6C5.896%2C6%2C5%2C5.104%2C5%2C4s0.896-2%2C2-2%20c1.104%2C0%2C2%2C0.896%2C2%2C2S8.104%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-lock:after,.ui-alt-icon .ui-icon-lock:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C6V5c0-2.762-2.238-5-5-5C4.239%2C0%2C2%2C2.238%2C2%2C5v1H1v8h12V6H12z%20M7.5%2C9.848V12h-1V9.848C6.207%2C9.673%2C6%2C9.366%2C6%2C9%20c0-0.553%2C0.448-1%2C1-1s1%2C0.447%2C1%2C1C8%2C9.366%2C7.793%2C9.673%2C7.5%2C9.848z%20M10%2C6H4V5c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3V6z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-mail:after,.ui-alt-icon .ui-icon-mail:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M0%2C3.75V12h14V3.75L7%2C9L0%2C3.75z%20M14%2C2H0l7%2C5L14%2C2z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-minus:after,.ui-alt-icon .ui-icon-minus:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Crect%20y%3D%225%22%20width%3D%2214%22%20height%3D%224%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-navigation:after,.ui-alt-icon .ui-icon-navigation:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2213%2C1%200%2C6%207%2C7%208%2C14%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-phone:after,.ui-alt-icon .ui-icon-phone:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M6.949%2C9.182C6.175%2C8.549%2C5.281%2C7.697%2C4.507%2C6.736C3.963%2C6.063%2C3.483%2C5.355%2C3.979%2C4.858l-3.482-3.48%20c-0.508%2C0.634-1.633%2C3.654%2C3.188%2C8.598c5.08%2C5.211%2C8.356%2C4.097%2C8.92%2C3.511l-3.396-3.399C8.734%2C10.561%2C8.123%2C10.139%2C6.949%2C9.182z%20%20M13.83%2C11.512v-0.004c0%2C0-2.648-2.646-2.649-2.647c-0.21-0.212-0.546-0.205-0.754%2C0.002L9.465%2C9.823l3.402%2C3.407%20c0%2C0%2C0.963-0.961%2C0.961-0.961l0.002-0.002C14.053%2C12.049%2C14.031%2C11.713%2C13.83%2C11.512z%20M5.202%2C3.636V3.634%20c0.222-0.222%2C0.2-0.557%2C0-0.758V2.873c0%2C0-2.726-2.725-2.727-2.726c-0.21-0.21-0.545-0.205-0.753%2C0.001L0.761%2C1.113L4.24%2C4.595%20C4.241%2C4.596%2C5.202%2C3.637%2C5.202%2C3.636z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-plus:after,.ui-alt-icon .ui-icon-plus:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C5%209%2C5%209%2C0%205%2C0%205%2C5%200%2C5%200%2C9%205%2C9%205%2C14%209%2C14%209%2C9%2014%2C9%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-power:after,.ui-alt-icon .ui-icon-power:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M11.243%2C2.408c-0.392-0.401-1.024-0.401-1.415%2C0c-0.391%2C0.401-0.391%2C1.054%2C0%2C1.455C10.584%2C4.642%2C11%2C5.675%2C11%2C6.773%20s-0.416%2C2.133-1.172%2C2.91c-1.512%2C1.558-4.145%2C1.558-5.656%2C0C3.416%2C8.904%2C3%2C7.872%2C3%2C6.773C3%2C5.673%2C3.416%2C4.64%2C4.172%2C3.863%20c0.39-0.401%2C0.39-1.054%2C0-1.455c-0.391-0.401-1.024-0.401-1.415%2C0C1.624%2C3.574%2C1%2C5.125%2C1%2C6.773c0%2C1.647%2C0.624%2C3.199%2C1.757%2C4.365%20c1.134%2C1.166%2C2.64%2C1.809%2C4.243%2C1.809c1.604%2C0%2C3.109-0.645%2C4.243-1.811C12.376%2C9.975%2C13%2C8.423%2C13%2C6.773%20C13%2C5.125%2C12.376%2C3.574%2C11.243%2C2.408z%20M7%2C8.053c0.553%2C0%2C1-0.445%2C1-1v-6c0-0.553-0.447-1-1-1c-0.553%2C0-1%2C0.447-1%2C1v6%20C6%2C7.604%2C6.447%2C8.053%2C7%2C8.053z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-recycle:after,.ui-alt-icon .ui-icon-recycle:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M3%2C7h1L2%2C4L0%2C7h1c0%2C3.313%2C2.687%2C6%2C6%2C6c0.702%2C0%2C1.374-0.127%2C2-0.35v-2.205C8.41%2C10.789%2C7.732%2C11%2C7%2C11C4.791%2C11%2C3%2C9.209%2C3%2C7z%20%20M13%2C7c0-3.313-2.688-6-6-6C6.298%2C1%2C5.626%2C1.127%2C5%2C1.349v2.206C5.59%2C3.211%2C6.268%2C3%2C7%2C3c2.209%2C0%2C4%2C1.791%2C4%2C4h-1l2%2C3l2-3H13z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-refresh:after,.ui-alt-icon .ui-icon-refresh:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.001px%22%20height%3D%2214.002px%22%20viewBox%3D%220%200%2014.001%2014.002%22%20style%3D%22enable-background%3Anew%200%200%2014.001%2014.002%3B%22%20%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M14.001%2C6.001v-6l-2.06%2C2.06c-0.423-0.424-0.897-0.809-1.44-1.122C7.153-0.994%2C2.872%2C0.153%2C0.939%2C3.501%20c-1.933%2C3.348-0.786%2C7.629%2C2.562%2C9.562c3.348%2C1.933%2C7.629%2C0.785%2C9.562-2.562l-1.732-1c-1.381%2C2.392-4.438%2C3.211-6.83%2C1.83%20s-3.211-4.438-1.83-6.83s4.438-3.211%2C6.83-1.83c0.389%2C0.225%2C0.718%2C0.506%2C1.02%2C0.81l-2.52%2C2.52H14.001z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-search:after,.ui-alt-icon .ui-icon-search:after,.ui-input-search:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M10.171%2C8.766c0.617-0.888%2C0.979-1.964%2C0.979-3.126c0-3.037-2.463-5.5-5.5-5.5s-5.5%2C2.463-5.5%2C5.5s2.463%2C5.5%2C5.5%2C5.5%20c1.152%2C0%2C2.223-0.355%2C3.104-0.962l3.684%2C3.683l1.414-1.414L10.171%2C8.766z%20M5.649%2C9.14c-1.933%2C0-3.5-1.567-3.5-3.5%20c0-1.933%2C1.567-3.5%2C3.5-3.5c1.933%2C0%2C3.5%2C1.567%2C3.5%2C3.5C9.149%2C7.572%2C7.582%2C9.14%2C5.649%2C9.14z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-shop:after,.ui-alt-icon .ui-icon-shop:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M10%2C4V3c0-1.657-1.343-3-3-3S4%2C1.343%2C4%2C3v1H1v10h12V4H10z%20M4.5%2C6C4.224%2C6%2C4%2C5.776%2C4%2C5.5S4.224%2C5%2C4.5%2C5S5%2C5.224%2C5%2C5.5%20S4.776%2C6%2C4.5%2C6z%20M5%2C3c0-1.104%2C0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2v1H5V3z%20M9.5%2C6C9.225%2C6%2C9%2C5.776%2C9%2C5.5S9.225%2C5%2C9.5%2C5S10%2C5.224%2C10%2C5.5%20S9.775%2C6%2C9.5%2C6z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-star:after,.ui-alt-icon .ui-icon-star:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C5%209%2C5%207%2C0%205%2C5%200%2C5%204%2C8%202.625%2C13%207%2C10%2011.375%2C13%2010%2C8%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-tag:after,.ui-alt-icon .ui-icon-tag:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C0H0v5l9%2C9l5-5L5%2C0z%20M3%2C4C2.447%2C4%2C2%2C3.553%2C2%2C3s0.447-1%2C1-1s1%2C0.447%2C1%2C1S3.553%2C4%2C3%2C4z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-user:after,.ui-alt-icon .ui-icon-user:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M8.851%2C10.101c-0.18-0.399-0.2-0.763-0.153-1.104C9.383%2C8.49%2C9.738%2C7.621%2C9.891%2C6.465C10.493%2C6.355%2C10.5%2C5.967%2C10.5%2C5.5%20c0-0.437-0.008-0.804-0.502-0.94C9.999%2C4.539%2C10%2C4.521%2C10%2C4.5c0-2.103-1-4-2-4C8%2C0.5%2C7.5%2C0%2C6.5%2C0C5%2C0%2C4%2C1.877%2C4%2C4.5%20c0%2C0.021%2C0.001%2C0.039%2C0.002%2C0.06C3.508%2C4.696%2C3.5%2C5.063%2C3.5%2C5.5c0%2C0.467%2C0.007%2C0.855%2C0.609%2C0.965%20C4.262%2C7.621%2C4.617%2C8.49%2C5.303%2C8.997c0.047%2C0.341%2C0.026%2C0.704-0.153%2C1.104C1.503%2C10.503%2C0%2C12%2C0%2C12v2h14v-2%20C14%2C12%2C12.497%2C10.503%2C8.851%2C10.101z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-video:after,.ui-alt-icon .ui-icon-video:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%20-2%2014%2014%22%20style%3D%22enable-background%3Anew%200%20-2%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M8%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2h6c1.104%2C0%2C2-0.896%2C2-2V5V2C10%2C0.896%2C9.104%2C0%2C8%2C0z%20M10%2C5l4%2C4V1L10%2C5z%22%2F%3E%3C%2Fsvg%3E")}.ui-nosvg .ui-icon-action:after{background-image:url(images/icons-png/action-white.png)}.ui-nosvg .ui-icon-alert:after{background-image:url(images/icons-png/alert-white.png)}.ui-nosvg .ui-icon-arrow-d-l:after{background-image:url(images/icons-png/arrow-d-l-white.png)}.ui-nosvg .ui-icon-arrow-d-r:after{background-image:url(images/icons-png/arrow-d-r-white.png)}.ui-nosvg .ui-icon-arrow-d:after{background-image:url(images/icons-png/arrow-d-white.png)}.ui-nosvg .ui-icon-arrow-l:after{background-image:url(images/icons-png/arrow-l-white.png)}.ui-nosvg .ui-icon-arrow-r:after{background-image:url(images/icons-png/arrow-r-white.png)}.ui-nosvg .ui-icon-arrow-u-l:after{background-image:url(images/icons-png/arrow-u-l-white.png)}.ui-nosvg .ui-icon-arrow-u-r:after{background-image:url(images/icons-png/arrow-u-r-white.png)}.ui-nosvg .ui-icon-arrow-u:after{background-image:url(images/icons-png/arrow-u-white.png)}.ui-nosvg .ui-icon-audio:after{background-image:url(images/icons-png/audio-white.png)}.ui-nosvg .ui-icon-back:after{background-image:url(images/icons-png/back-white.png)}.ui-nosvg .ui-icon-bars:after{background-image:url(images/icons-png/bars-white.png)}.ui-nosvg .ui-icon-bullets:after{background-image:url(images/icons-png/bullets-white.png)}.ui-nosvg .ui-icon-calendar:after{background-image:url(images/icons-png/calendar-white.png)}.ui-nosvg .ui-icon-camera:after{background-image:url(images/icons-png/camera-white.png)}.ui-nosvg .ui-icon-carat-d:after{background-image:url(images/icons-png/carat-d-white.png)}.ui-nosvg .ui-icon-carat-l:after{background-image:url(images/icons-png/carat-l-white.png)}.ui-nosvg .ui-icon-carat-r:after{background-image:url(images/icons-png/carat-r-white.png)}.ui-nosvg .ui-icon-carat-u:after{background-image:url(images/icons-png/carat-u-white.png)}.ui-nosvg .ui-icon-check:after,html.ui-nosvg .ui-btn.ui-checkbox-on:after{background-image:url(images/icons-png/check-white.png)}.ui-nosvg .ui-icon-clock:after{background-image:url(images/icons-png/clock-white.png)}.ui-nosvg .ui-icon-cloud:after{background-image:url(images/icons-png/cloud-white.png)}.ui-nosvg .ui-icon-comment:after{background-image:url(images/icons-png/comment-white.png)}.ui-nosvg .ui-icon-delete:after{background-image:url(images/icons-png/delete-white.png)}.ui-nosvg .ui-icon-edit:after{background-image:url(images/icons-png/edit-white.png)}.ui-nosvg .ui-icon-eye:after{background-image:url(images/icons-png/eye-white.png)}.ui-nosvg .ui-icon-forbidden:after{background-image:url(images/icons-png/forbidden-white.png)}.ui-nosvg .ui-icon-forward:after{background-image:url(images/icons-png/forward-white.png)}.ui-nosvg .ui-icon-gear:after{background-image:url(images/icons-png/gear-white.png)}.ui-nosvg .ui-icon-grid:after{background-image:url(images/icons-png/grid-white.png)}.ui-nosvg .ui-icon-heart:after{background-image:url(images/icons-png/heart-white.png)}.ui-nosvg .ui-icon-home:after{background-image:url(images/icons-png/home-white.png)}.ui-nosvg .ui-icon-info:after{background-image:url(images/icons-png/info-white.png)}.ui-nosvg .ui-icon-location:after{background-image:url(images/icons-png/location-white.png)}.ui-nosvg .ui-icon-lock:after{background-image:url(images/icons-png/lock-white.png)}.ui-nosvg .ui-icon-mail:after{background-image:url(images/icons-png/mail-white.png)}.ui-nosvg .ui-icon-minus:after{background-image:url(images/icons-png/minus-white.png)}.ui-nosvg .ui-icon-navigation:after{background-image:url(images/icons-png/navigation-white.png)}.ui-nosvg .ui-icon-phone:after{background-image:url(images/icons-png/phone-white.png)}.ui-nosvg .ui-icon-plus:after{background-image:url(images/icons-png/plus-white.png)}.ui-nosvg .ui-icon-power:after{background-image:url(images/icons-png/power-white.png)}.ui-nosvg .ui-icon-recycle:after{background-image:url(images/icons-png/recycle-white.png)}.ui-nosvg .ui-icon-refresh:after{background-image:url(images/icons-png/refresh-white.png)}.ui-nosvg .ui-icon-search:after{background-image:url(images/icons-png/search-white.png)}.ui-nosvg .ui-icon-shop:after{background-image:url(images/icons-png/shop-white.png)}.ui-nosvg .ui-icon-star:after{background-image:url(images/icons-png/star-white.png)}.ui-nosvg .ui-icon-tag:after{background-image:url(images/icons-png/tag-white.png)}.ui-nosvg .ui-icon-user:after{background-image:url(images/icons-png/user-white.png)}.ui-nosvg .ui-icon-video:after{background-image:url(images/icons-png/video-white.png)}.ui-nosvg .ui-alt-icon.ui-icon-action:after,.ui-nosvg .ui-alt-icon .ui-icon-action:after{background-image:url(images/icons-png/action-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-alert:after,.ui-nosvg .ui-alt-icon .ui-icon-alert:after{background-image:url(images/icons-png/alert-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-arrow-d:after,.ui-nosvg .ui-alt-icon .ui-icon-arrow-d:after{background-image:url(images/icons-png/arrow-d-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-arrow-d-l:after,.ui-nosvg .ui-alt-icon .ui-icon-arrow-d-l:after{background-image:url(images/icons-png/arrow-d-l-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-arrow-d-r:after,.ui-nosvg .ui-alt-icon .ui-icon-arrow-d-r:after{background-image:url(images/icons-png/arrow-d-r-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-arrow-l:after,.ui-nosvg .ui-alt-icon .ui-icon-arrow-l:after{background-image:url(images/icons-png/arrow-l-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-arrow-r:after,.ui-nosvg .ui-alt-icon .ui-icon-arrow-r:after{background-image:url(images/icons-png/arrow-r-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-arrow-u:after,.ui-nosvg .ui-alt-icon .ui-icon-arrow-u:after{background-image:url(images/icons-png/arrow-u-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-arrow-u-l:after,.ui-nosvg .ui-alt-icon .ui-icon-arrow-u-l:after{background-image:url(images/icons-png/arrow-u-l-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-arrow-u-r:after,.ui-nosvg .ui-alt-icon .ui-icon-arrow-u-r:after{background-image:url(images/icons-png/arrow-u-r-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-audio:after,.ui-nosvg .ui-alt-icon .ui-icon-audio:after{background-image:url(images/icons-png/audio-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-back:after,.ui-nosvg .ui-alt-icon .ui-icon-back:after{background-image:url(images/icons-png/back-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-bars:after,.ui-nosvg .ui-alt-icon .ui-icon-bars:after{background-image:url(images/icons-png/bars-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-bullets:after,.ui-nosvg .ui-alt-icon .ui-icon-bullets:after{background-image:url(images/icons-png/bullets-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-calendar:after,.ui-nosvg .ui-alt-icon .ui-icon-calendar:after{background-image:url(images/icons-png/calendar-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-camera:after,.ui-nosvg .ui-alt-icon .ui-icon-camera:after{background-image:url(images/icons-png/camera-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-carat-d:after,.ui-nosvg .ui-alt-icon .ui-icon-carat-d:after{background-image:url(images/icons-png/carat-d-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-carat-l:after,.ui-nosvg .ui-alt-icon .ui-icon-carat-l:after{background-image:url(images/icons-png/carat-l-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-carat-r:after,.ui-nosvg .ui-alt-icon .ui-icon-carat-r:after{background-image:url(images/icons-png/carat-r-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-carat-u:after,.ui-nosvg .ui-alt-icon .ui-icon-carat-u:after{background-image:url(images/icons-png/carat-u-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-check:after,.ui-nosvg .ui-alt-icon .ui-icon-check:after,.ui-nosvg .ui-alt-icon.ui-btn.ui-checkbox-on:after,.ui-nosvg .ui-alt-icon .ui-btn.ui-checkbox-on:after{background-image:url(images/icons-png/check-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-clock:after,.ui-nosvg .ui-alt-icon .ui-icon-clock:after{background-image:url(images/icons-png/clock-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-cloud:after,.ui-nosvg .ui-alt-icon .ui-icon-cloud:after{background-image:url(images/icons-png/cloud-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-comment:after,.ui-nosvg .ui-alt-icon .ui-icon-comment:after{background-image:url(images/icons-png/comment-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-delete:after,.ui-nosvg .ui-alt-icon .ui-icon-delete:after{background-image:url(images/icons-png/delete-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-edit:after,.ui-nosvg .ui-alt-icon .ui-icon-edit:after{background-image:url(images/icons-png/edit-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-eye:after,.ui-nosvg .ui-alt-icon .ui-icon-eye:after{background-image:url(images/icons-png/eye-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-forbidden:after,.ui-nosvg .ui-alt-icon .ui-icon-forbidden:after{background-image:url(images/icons-png/forbidden-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-forward:after,.ui-nosvg .ui-alt-icon .ui-icon-forward:after{background-image:url(images/icons-png/forward-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-gear:after,.ui-nosvg .ui-alt-icon .ui-icon-gear:after{background-image:url(images/icons-png/gear-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-grid:after,.ui-nosvg .ui-alt-icon .ui-icon-grid:after{background-image:url(images/icons-png/grid-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-heart:after,.ui-nosvg .ui-alt-icon .ui-icon-heart:after{background-image:url(images/icons-png/heart-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-home:after,.ui-nosvg .ui-alt-icon .ui-icon-home:after{background-image:url(images/icons-png/home-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-info:after,.ui-nosvg .ui-alt-icon .ui-icon-info:after{background-image:url(images/icons-png/info-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-location:after,.ui-nosvg .ui-alt-icon .ui-icon-location:after{background-image:url(images/icons-png/location-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-lock:after,.ui-nosvg .ui-alt-icon .ui-icon-lock:after{background-image:url(images/icons-png/lock-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-mail:after,.ui-nosvg .ui-alt-icon .ui-icon-mail:after{background-image:url(images/icons-png/mail-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-minus:after,.ui-nosvg .ui-alt-icon .ui-icon-minus:after{background-image:url(images/icons-png/minus-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-navigation:after,.ui-nosvg .ui-alt-icon .ui-icon-navigation:after{background-image:url(images/icons-png/navigation-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-phone:after,.ui-nosvg .ui-alt-icon .ui-icon-phone:after{background-image:url(images/icons-png/phone-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-plus:after,.ui-nosvg .ui-alt-icon .ui-icon-plus:after{background-image:url(images/icons-png/plus-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-power:after,.ui-nosvg .ui-alt-icon .ui-icon-power:after{background-image:url(images/icons-png/power-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-recycle:after,.ui-nosvg .ui-alt-icon .ui-icon-recycle:after{background-image:url(images/icons-png/recycle-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-refresh:after,.ui-nosvg .ui-alt-icon .ui-icon-refresh:after{background-image:url(images/icons-png/refresh-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-search:after,.ui-nosvg .ui-alt-icon .ui-icon-search:after,.ui-nosvg .ui-input-search:after{background-image:url(images/icons-png/search-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-shop:after,.ui-nosvg .ui-alt-icon .ui-icon-shop:after{background-image:url(images/icons-png/shop-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-star:after,.ui-nosvg .ui-alt-icon .ui-icon-star:after{background-image:url(images/icons-png/star-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-tag:after,.ui-nosvg .ui-alt-icon .ui-icon-tag:after{background-image:url(images/icons-png/tag-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-user:after,.ui-nosvg .ui-alt-icon .ui-icon-user:after{background-image:url(images/icons-png/user-black.png)}.ui-nosvg .ui-alt-icon.ui-icon-video:after,.ui-nosvg .ui-alt-icon .ui-icon-video:after{background-image:url(images/icons-png/video-black.png)}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.inline-png-1.4.5.css
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.inline-png-1.4.5.css	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.inline-png-1.4.5.css	(revision 101)
@@ -0,0 +1,4359 @@
+/*!
+* jQuery Mobile 1.4.5
+* Git HEAD hash: 68e55e78b292634d3991c795f06f5e37a512decc <> Date: Fri Oct 31 2014 17:33:30 UTC
+* http://jquerymobile.com
+*
+* Copyright 2010, 2014 jQuery Foundation, Inc. and othercontributors
+* Released under the MIT license.
+* http://jquery.org/license
+*
+*/
+
+
+.ui-icon-action:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAIVJREFUOMtjYCAC/P//fxYQszGQCv5DwDEgliRHIwg8A2JLdEEYaICKqwHxciD+gCb/E4jTGHBosgPiL/+xA1SNSM7iBeIXQPwDiOuAWByvU5E05gPxZyC2xhs4WDTuBuJwtMCZCYsOmHewaZyLJ3Qb4GqxaDQiFC1YNRITn9TRSAqgSCMAGL+QeSGFbu0AAAAASUVORK5CYII=");
+}
+.ui-icon-alert:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJVJREFUOMu9z7ENgkAUgOGj0I6eBXQCg8QRdAhdwiV0CF2CIRxBF6Cn08LP5oxIIEjjX13evS+5C6EnbLAOY8IUN1wxGQP3Pu1/RRnqBqyR/QLPEeQo4vk0hJZ4QmMmzvI+lODyfl8LindJF9z5rsCqNdu2UYrKcBXSJjx2LC3in9sd3miOR8fCsuOpcMcsoDS+Mvy9F2w1bmFOO7YjAAAAAElFTkSuQmCC");
+}
+.ui-icon-arrow-d-l:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAE9JREFUOMut0VsKACAIBECP3tG8mSFZRGVujwV/wkE0IjAikrToJIZq0g3CsIMK9PQWWcM0OkQdbI8QGqCGIbSAAl/wCgWQo7/6PvFpRxdn/yOefcvwdI0AAAAASUVORK5CYII=");
+}
+.ui-icon-arrow-d-r:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAE1JREFUOMtjYICC////N4AwAykAqgkGGsjRRLRmJhzi9UTZjMNWnDajiBOrGaaOJJuR5Ulx9gFkDql+xq+RGM2EQvsAfWwky4/EaAIBAH/xh5XOyrKIAAAAAElFTkSuQmCC");
+}
+.ui-icon-arrow-d:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADdJREFUOMtjYMAC/qMBBmLBqEZKNQLFG/6TDhrI0dxAjs0N5Di7gVDANJCsCYfmBgZSAFQzTk0AIbtHzgIaJM8AAAAASUVORK5CYII=");
+}
+.ui-icon-arrow-l:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAD5JREFUOMul0kEKADAMAsE8PT/fXktpqVHvA8FY9QjQNQ3QABYawR3J8EQSvKFfLJRB+9SonOgd0QCiyakjXzjeR87keFK/AAAAAElFTkSuQmCC");
+}
+.ui-icon-arrow-r:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADpJREFUOMu90rENADAIA0FG/82dgooiSDgK31+DiWiSRDgpw4VzrBourFjzcGHiTcjbcX7PwdrLXdEBwEtHzn8VrGMAAAAASUVORK5CYII=");
+}
+.ui-icon-arrow-u-l:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEtJREFUOMtj+E8caGBAB2RpIkIjdk0ENB5gwAdoYSNJfjxATqg2QPkNRGnGJkiUZlx+INpmUjUz4dPIyMgIMr2RgVyAZnMDOZrhmgAEuoiZ+HH38AAAAABJRU5ErkJggg==");
+}
+.ui-icon-arrow-u-r:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEdJREFUOMu9z8ENACAIQ9GOzmhuVq+GSCke/Fd8AYEUyaARbjkYVR2GiuT6s/HpjwKtEgoUeW6j/G6ETjxG3YkaFdhDCdtoA045nn2X6PolAAAAAElFTkSuQmCC");
+}
+.ui-icon-arrow-u:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADlJREFUOMtjYMAB/v//3wDCDKQAqCYYaCBHE3GacWjCr5mAJuyaidSEqplETQSdjQJIiY5RjZRoBADXbkfOGh7ilQAAAABJRU5ErkJggg==");
+}
+.ui-icon-audio:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAANxJREFUOMuV0rEuRFEQxvETL2DpZVEoVLyFJ1CJRKfabCKikbiJUhQa3kSj32K7DQqJwgugQVay8lOYleO654avmm/m/HMmM5NSg3CUxTO4wlZqE44xyfwa3nzprA2Sg5FfwV3UDkrQN4gd9CJewCPesZQw9FtTcBR+P3wv/GnSrCnYxRNe0cEcPnDbCgZ8HrmN8A8Y/wW8+DeIZTzjBbOYj1ZvEgaYFMDr8P3w/fAn+TqqBnAbuxEvxqDG6NZ3WRUOYBX3UdsrXU9VG856/PKzxQJ8WDvyS2zmbz4B8IPWAlHG2vgAAAAASUVORK5CYII=");
+}
+.ui-icon-back:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJJJREFUOMtjYEAD////b2AgFYA0AfF/sjSRpBFZExT8AeLXQHwciCcAsQOxGrGBM0CsS0gzKxBLA7ELELcC8VOo+Ccg1iY6cIBCXEC8Fqp5M05n4xCXgGr8TGqoC5OrsRGqcS+xGkABVQ/E/6AaXQlpUATiYiC+C9UA0lhKjE3I4CYQexDrxGdAvBSIfYGYCV0eAL8TDNuB31nNAAAAAElFTkSuQmCC");
+}
+.ui-icon-bars:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAClJREFUOMtjYKA7+P///8n/pIMTII3HydB4lGHUjzTy4xly/XhiaPgRALzOTCcBlK2mAAAAAElFTkSuQmCC");
+}
+.ui-icon-bullets:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADpJREFUOMtjYKA7+P///0kgPo7GJwROgBQeB+KjSBqPE6HxKMOoH2nkxzNgN6PyifLjCTQ/nhicfgQA/VEZvCqEuYoAAAAASUVORK5CYII=");
+}
+.ui-icon-calendar:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADFJREFUOMtjYICC////nwTi4ww4AFDuDBCfQBYgCwwljWQDZBNIYpOtcdSpeGwhVyMA6YDNaA+GXWMAAAAASUVORK5CYII=");
+}
+.ui-icon-camera:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJ1JREFUOMtjYKAW+P//vzoQ1wBxAxSD2KrYFHIBcSaSwqf/McFjJPksIOYEadz8n3SwCaTxDxaJh0A8AYj7oGx08IcBi+ABIBaFOh/kLBEgPoiuCJtGAzTnbwJiQ2I0sgDxLyT+TyBmJdbGTUj89UBsTIzGQ0h+zICyj2DT+BeL5kdA3A8N2ce4QnUTGfG4HqSREy3lEMIZ4JRDLgAADx5bua1tC5oAAAAASUVORK5CYII=");
+}
+.ui-icon-carat-d:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAHdJREFUKJHV0D0OwjAMBtCcpiBSVn7uv8MpUNVMwAUeSyuiKG3DyLdZ9rMlh/BfwR6nhrkLurnYYcAT5xV0xRsPdAF331TxdOmVzd0CIsYlXEEjDnOzildRtjkiFbhEcekBJd5GGe4LnDZRho8TSOibUIF/Qy35ADEDFfz8Tu1HAAAAAElFTkSuQmCC");
+}
+.ui-icon-carat-l:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAFNJREFUOMtjYMAD/v//rwvE54FYhYFYAFSsB8Sv/0PAUyBWJVUTCLwHYmNyNJkQo+kNqZr06aOJIo14NJuSEnfImj+Qqvk1mmYzumt+TGp6xZnIAZYXFgOYoY9iAAAAAElFTkSuQmCC");
+}
+.ui-icon-carat-r:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAGRJREFUOMtjYEAD////Vwfi80CsxUAsACrWAOLn/yHgJRBrE6vRDIg//EcAkjSbU1PzK0o161CiWZdYjR9JshWowIIcTZZYNGkTo+kTSdEBdd4nkuMQqEgNiJ+SHPFIms8RSuQASm4V+ztdam4AAAAASUVORK5CYII=");
+}
+.ui-icon-carat-u:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAG5JREFUOMtjYKA2+P//vz4Ik6PpDRTrkaoJBghrBilA0wQDr3Fqhmp6jaT4PRQja9YlRpMJEJsC8QesmkEMbJqQDEXX/AqsGUicx6UJj+ZzIEEVIH6KSxOSZjOo5scgPTBBVSA2JiKqzOCahg4AAODRFgCi4LIMAAAAAElFTkSuQmCC");
+}
+.ui-icon-check:after,
+/* Used ui-checkbox-on twice to increase specificity. If active state has background-image for gradient this rule overrides. */
+html .ui-btn.ui-checkbox-on.ui-checkbox-on:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAE5JREFUOMu10DEKACEQQ1GPHl2QxUvHZsURQRJhfzfFKzIp/R1JkISLMmdQUeEebtAKvw053I+KRuUGncLpYxoS9kgfrDYK+LVRwM1GTh2KeDEWoG7NGwAAAABJRU5ErkJggg==");
+}
+.ui-icon-clock:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAN5JREFUOMuNkl0KglAQhYeexA0kthWtVQRCq6gQWkBRi4mIaA/Zm2EbsYJ6STsjx7jYtTrwoXecP2euiKGyLHtgBc7gQTKwBL7YhA8jcCvbdQWRLaigwxoEwCEh2PBb8Q5me3WliZHsCA7GOabPBXjCf6oqNbqo1LBtaV4IB6EK/gjs03wSTk7l2AKphDaX53tH2pUY70/bGjJmCeWH4DOgb6oV97SP5bemfO41i8/lquIv1Wb0yUG3NkbGBdhyei7R9nbGBRg2M0ZcbpvyjyAj2NPl6p505CQF83d71As1WJi0XvrCDgAAAABJRU5ErkJggg==");
+}
+.ui-icon-cloud:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAHRJREFUOMtjYBhw8P//f2EgTgTiWigtRIymSCD+/B8VfATiEHyabIH473/s4DcQm+PSuOs/fvAPiF8BsT+yJncg/vafOPASpqniP2ngCxBzgjS+/U862AjS+I4MjT9BGsvJ0LgO5k8XaIQ3EIEzgZiD/kkTAK0pr7/Ot6yrAAAAAElFTkSuQmCC");
+}
+.ui-icon-comment:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEJJREFUOMtj+P//fyAQv/xPPHgFxP4MJGqCgZcM/8kEoxpppfEVGfpegDT6k5gIXgCxLwMyQJJsYCAFkKUJqpFoTQBdxXiyPJoNzQAAAABJRU5ErkJggg==");
+}
+.ui-icon-delete:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAFtJREFUOMulklEKwDAIQ83J153c0U1GK0ZG5o/ga4pNA4ty9zE7gGFFZY5leMSZM4srjjS0LKacgBtGLxmaW1k9q5J3tKLXnI/izbT/QmlVyRz5O+QAyJFTQ34BOkVgA0nxhd0AAAAASUVORK5CYII=");
+}
+.ui-icon-edit:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAExJREFUOMtjYCAS/P//vwGEGUgBUE0w0ECuRsKakZ1HtK3YFBL0JxanEe28/yRpHPyaFEjWBNWYQLImqMYFJGuCajwA1QyyWYHYZAgAGGspdigXzkIAAAAASUVORK5CYII=");
+}
+.ui-icon-eye:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJ9JREFUOMtjYBhQ8P//f0YgjgLig0D8FYoPQMUYcWmSgCrCBUBy4uia5ID4HlTBDyDOBmIBIOaDsn9A5UBq5GCa+IH4OpLJ2Vhck4MkD1LLDxJcheYkAajik0B8HMlwZLCSCYt3/yHRMDYjtkBBd2ouFjUFSPLXQH7HFTi5UAMFoJp+YgQOkqniBKJjP0Z0oCWASKgBX6D4AFSMcWCTJwDwblGBQMiLsgAAAABJRU5ErkJggg==");
+}
+.ui-icon-forbidden:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAANZJREFUOMuF0jFuwkAUhOEtCT0R4iwh4hgu0uUM3AAU5TKIKk1OgSPlHCgUQMOXZrAsY8NIK9k7/v3ezttSWsIMn/jFGSf84AOz0ie842BYB1R90CUffOEFo6w5NvEuDZz22pVqTHo6Wsb/w7TkTNdK9QN4G39dEoS0N7kH4zXeriQ9GMUchDHO/rEk8ga8B+Mpe6eSOcG809YNjMX1vWS4sOkJowt/53nVHcfyAQx7PF/NqnUBtklvnDMtWpUueOv+ucpwh7S/gVrwFGvscEziNVZNe9E/AYkNLyf6mZAAAAAASUVORK5CYII=");
+}
+.ui-icon-forward:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJVJREFUOMud0SEPQWEUBuA7I6iSTdFtfoNgJvkzNtE+QfcnRFFVFX9AECmaieYRfOGyue533/qeZ2c7J8tKBCGrEu+EqrAYY4AV9rji4TPhG/Rx8D8hj3q4xeKMJYbooFG0bRuLDZqlj4N7LNtJ78jBVuq5dxEuUuEowifmqKfgWYRwwhTdsniMY/5pKZtrmGCNy6+5F/zkDN/sPUM/AAAAAElFTkSuQmCC");
+}
+.ui-icon-gear:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAANBJREFUOMuN0k1OAkEUReGKDVPsBUiCe/An6CZMCHERkLgABzpwr0rCAhoM/Tl56ktTQc+o07dud71TVUoFXOITe0zLKfCIOcZ488sLRrjDslaCHlvHbCPrscjFebz8ix7XuThOf+qwQotJPHeRbdBkEXmmVWX+dcpfMSthL9NWiueDNfsSyjOTSrEdrOkKpqH81FafUv6Mi+9gNJCzju21UdpF9o6z/MV7/+OAm1xcxhkd8FEpbNIFeBjOscAVmlCeZ2pwe1SqyJiF7d2PiAFfUWcCdKtjEnkAAAAASUVORK5CYII=");
+}
+.ui-icon-grid:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAElJREFUOMtj+P///8n/CHCcAQjQxE5Axc4gizGCSAYkwAgExIgxMZAJQBpPIPGPQWlsYiexiJEBhlbgnCQyIKgXOGcIBcQQDxwAcK29sfGNuOEAAAAASUVORK5CYII=");
+}
+.ui-icon-heart:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJhJREFUOMud0L0NwjAQgNErGAEGoU0WSYUEggGyVULFCFCyAgPQQQsU5NE4EuLfPOka258sXUREYIwldtiixiBNnc526c04UlTg7NkqzaMzisBGvnW8+e2bU+D4R3gItH+Ebb+cXEW/2SYjaqKHEfY/RHsM4x5KXD5EF5TxCipcX0RXVPEJpugeokn8AosUd5hFDswxfXd/AyJMQU8RkPn/AAAAAElFTkSuQmCC");
+}
+.ui-icon-home:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADxJREFUOMtjYMAB/v//3wDCDKQAqCYYaCBHE3GacWjCr5mAJuyaidSEqplETZg2E6sDmx8p10iK3HDWCADqFJ92uuEinAAAAABJRU5ErkJggg==");
+}
+.ui-icon-info:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJ1JREFUOMul0k0KwjAQQOHcQtF7SPEeQsHrKHo8S71IVdBVPzejaJ0u1AezSfKS+UkpL2COPY64RbTYYVYysMbFOGfUmdQPDi5QDdb6pxzpZS9VWCbrJ0xL1PQt2xKNeGNQRkZTonPG5BHx+pfY/iAeSgz3W3FTMIvhps1J5A6Tx0adfICMHqvhrXUMd4zuQ3qRp9iiwTXigM0zveAO8O5cUyF3tnAAAAAASUVORK5CYII=");
+}
+.ui-icon-location:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJlJREFUOMuV0TEOAVEUhtHXWYGh04pWzypYlJWIIENU1oQQdJKjucUL4+Er/7knr5iUXsIAO9xxwxb9VCrQxXvnIo6XYI0KbdSxbUrwHkdVtlWxXUvwFEedbOvEdizBVRzV6AbaxrYswanPTUqwhUMDOqD17ZfMGuAsfQs9PDL0QC/9EhYZnKdfwzCDw/RP2GOf/g1jjD59fwKZSi5HaePOlAAAAABJRU5ErkJggg==");
+}
+.ui-icon-lock:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAHFJREFUOMtjYEAD////Dwbiw0D8HYoPAXEgAz4AVND7HzfowqUpGKrgBxBnA7EAEPNB2T+gcv7YNB6GSmZjkcuByh3EpvE7VFIAixw/VO4rNo1ggMf/mPL/SQQ002gCxObkaDQGYlNyNDZAMf000iZUAdQHDgw3MuoHAAAAAElFTkSuQmCC");
+}
+.ui-icon-mail:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAIVJREFUOMtjYKA7+P//fzQQf/xPPACpjQZp5AJiRSA+SoQmkBoFkB6QxqtArAXEzEDcAMR/sGgAidVD1WiD9DBAJb4CcQLU6VZAfB9J0z0gtoTKJUDV/mdAM3kB1Ol8QLwEivmgYguQFTJgcRbY6UiBpw0V+09II9zpyE4jViNBMAAa6Q4ARIAH2Rfeh/QAAAAASUVORK5CYII=");
+}
+.ui-icon-minus:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABZJREFUOE9jYBgFuMF/MsFQ0jgKcAMA2lPfIe/W1fgAAAAASUVORK5CYII=");
+}
+.ui-icon-navigation:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJNJREFUOMtjYKA1+P//vxAQ5wLxXGIUMwGxKxCvAOIf/yEgB58GeSBuAOIH/1HBdyAWRFfMAcSRQLwbiP/9xw6WI2swBOIpQPzuP2Hggu5pMyCOBuJ6IF4CxCeA+C2aJpCzGYkNSWRX1JMSBSehmv4CsRwpGpdCNe4iNdIboBojSNUYAw0kdlI1mgPxZHLTpyE2OQBXFwcOWoyvmwAAAABJRU5ErkJggg==");
+}
+.ui-icon-phone:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAALRJREFUOMtj+P//PxMQLwDiI0DMy0AsACqOAuKz/yHgGNGagQrfAPFqNM08xGj8BtWwBqr5NxCbEqPx9H8EWAXEHsQ6tRxJ4yVSAocf6k8YCCZFcyySxi9AbE6K5vlImj8AsTWavBYQc2PTyAbEu5E0/wDiFKicNTT0sScSoCAXEO/5jwouAfFypHg+ikszyOaF/zHBGiTNh/D5OQGI36JphqWwiYQCTACIK4D4HNTPr2HRBQChdFG//DBhowAAAABJRU5ErkJggg==");
+}
+.ui-icon-plus:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAB5JREFUOMtjYMAC/qMBBmLBcNP4n0wwlDSOJgDcGgFPin6QGOaERAAAAABJRU5ErkJggg==");
+}
+.ui-icon-power:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAANBJREFUOMtjYMAB/v//vxeIdzOQCv5DATEKQ4H4FhCbo2sEUrZAfBuIA9E1KQLxV6jaUCwaY6HcL0Ash6xxClRiNS6nApkboEITkTXehwoa49FoBhW6g6zxD1SQBY9GVqjQb2SNX6CCQkhiF4H4PBJfBKrmE7LGQ1DBBCQxJiBmROKnQtXsQ9aYCBV8AQphLFGlAsSvoWpikSWYkWx9A8QloIACYhMgLgfid1A5UGpiQjdVEIgP/scNQJr4caUeJmhk7wbi51C8C4ijkf1LEQAAs65tnfCMVk0AAAAASUVORK5CYII=");
+}
+.ui-icon-recycle:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJ9JREFUOMtjYKAm+P///1kg/gnEP6DsQiBmJ0YjNnAZiGUIafQDYi4g5gZiXyC+DtV8CcVmICcUhPEYxI+kuQAmKArEr6BYlIArQOA0TGA1kj9W4dHIA1XzDVnwB1SQG49GTAugQQ4Cvng0YnoJyCiCagQFAD8ezaiBCORwAPEVJM1+UD+BcAihuJNF0owCiEkxHNDkdQYUelB8gqrpGQBlvyiNmsjT4QAAAABJRU5ErkJggg==");
+}
+.ui-icon-refresh:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAM9JREFUOMtjYEAC////lwbiTiC+AsQ/gfgHEF8C4lYglkBSV4+sKRaIv/zHDT4BcSQQNwPxH5imGCD+B1WwCoitgJgNiq2BeC2aIX9AmiSB+DNUII8BBwDK7UfX2A7lrMGjqRmbjVegHEscmhqx+Bes8QeUw8ZACqBE42WoRmtSNbZBNa4lQq0vEDPDOJLQyAWBEjyaqqBqDiILRiAlgA1AbA/E3FDsCMRboHJ/gTgI3cQwIP6AJ8mB5IJxOUcMiJuA+Dw03X6BskFxKYasFgCG8ZXX6DfYhgAAAABJRU5ErkJggg==");
+}
+.ui-icon-search:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAONJREFUOMuV0c8qhVEUhvFvcvKlMHBCUUwU5RpMlIm5UnIFOp2bMHEDiokLkJKpMpXO4Bg4MlAGLkDK3/AzWYPd195iDd/nfVbttasqBjU6OMcdetjFdFUazOJGfp6wlpNqDKI0wDrmsYzjyF+x1BS3E2k0s/gg+EkTnAXYKDyjjU+8o07BbYiLv9zgPjpzaXgR4UpBGsJLdMZSsBPhaUHsBO81wRQeAx5iMrl2Fx/BNnNbV/EchS884K3xn32M5+QFHCXCNy6xhevIrtAuXbCFGYwk2cSf5MLCVN6r/jMh72P4BxnPgmBrkPyTAAAAAElFTkSuQmCC");
+}
+.ui-icon-shop:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAE9JREFUOMtjYEAD////ZwfiKUD8Hog/QtnsDIQAVOE6IBYDYlEg3gDEk4nRCLJJDIkPMuADMRr/EyMGlyAF4NJoiUWtOTEaybZxVOOAaQQAmEocSjETvxYAAAAASUVORK5CYII=");
+}
+.ui-icon-star:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJFJREFUOMtjYMAB/v//bwzCDKQCoKZZQDyTVE28QPwZiD8BMQ8pGtP/I0AaKRrPImk8g0tRAhB//U88AKmNh2nWAuKrRGi6AlKLbjMXEC/Ao2k+SA0uZyvj0aiML1Cy8GjMxKdxA1TRWyAOh+K3ULH1uDSxQCN8KxBLIolLAvE2IP4IUoNNowG+yAbJgdQwUAoAbN9GiH93pK4AAAAASUVORK5CYII=");
+}
+.ui-icon-tag:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEFJREFUOMtj+I8dNDAQAv9xgwZiNZoBsQXRmpEUgTRZEW3zf+JAAzaNDaOaSYhjApoJJowGspIiFs3EaULTjKEJAH1ft8O6vRfvAAAAAElFTkSuQmCC");
+}
+.ui-icon-user:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJdJREFUOMud0jsOQUEUgOEpJGxD0CpswAqUohStLYitiEJUEtHZgETJKjyiIqqb3E9D4nFdE399vuTkzITwFgqYIMEarRAT+l5L0YyBK5/NY+A5Ax5/oZrsUlTz4ND3BnmwglMGOqD8a91ZBpzGHKeB6xO6oB77lssnuMgbLKGDMbb3X/MowQYjtFF8oB724tuhG/zZ3/AGG1/AkN/xnJsAAAAASUVORK5CYII=");
+}
+.ui-icon-video:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAExJREFUOMvF0csJACAMBNE0KGJHlqtpYjwJIvF70Lk/CFmR5wEByIxTwFtwhmq5M1HYrEUAR7CiI9iiN/D6VOs5uuGSNYdfbJkAJ98rtv7WyPB7sagAAAAASUVORK5CYII=");
+}
+/* Alt icons */
+.ui-alt-icon.ui-icon-action:after,
+.ui-alt-icon .ui-icon-action:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAH1JREFUOMtjYCAOzAJiNgYywH8gPgbEkuRoBOFnQGyJLgjDDVBxNSBeDsQf0OR/AnEaAw5NdkD8BYuhWDXCAC8QvwDiH0BcB8TihJwKA/lA/BmIrQkFDrrG3UAcjhY4M5GiowGXxrl4QrcBWS26RiMiogWrRga6aSQFk68RAP5OVqWXKdm9AAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-alert:after,
+.ui-alt-icon .ui-icon-alert:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJZJREFUOMtjYMANvIHYi4FEwAbEt4D4JhCzkqKxFIj/Q3EpsZokgPgTksZPUDGCYAFUgxkQW0DZ8wlpMgfif1DFMPAfKmaGSxMjEJ9EciKyxv9QOUZsGhOQFP2HOtMKTSweXRMvED9HU4QNP4eqhYNuLIpMoH5GF++CaVID4l9YFJhjcSoI/wRiVZDGrUQ4ER1vZaA7AAA8nEl47CBNKgAAAABJRU5ErkJggg==");
+}
+.ui-alt-icon.ui-icon-arrow-d:after,
+.ui-alt-icon .ui-icon-arrow-d:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADRJREFUOMtjYMAO/qNhosGoRko1NmBRSAg3kKO5gRybG8hxdgOhgGkgRxM2zQ0MJIIGfJoARZtMu19O4xgAAAAASUVORK5CYII=");
+}
+.ui-alt-icon.ui-icon-arrow-d-l:after,
+.ui-alt-icon .ui-icon-arrow-d-l:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAElJREFUOMtjYCAeNEAxSQCk4T8UN5CjiWjN2DTBNTaQo4kBh9UENTFgESRKEwOa5AFiNTHgUEhUCJKlCZ/GA4Tiiuo2UuRHnJoBqxder3inhF8AAAAASUVORK5CYII=");
+}
+.ui-alt-icon.ui-icon-arrow-d-r:after,
+.ui-alt-icon .ui-icon-arrow-d-r:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEFJREFUOMtjYECABigmCYA0/IfiBnI0kaQZm0aaaW4gRzNMHUk2I8sT7ewDaHyS/ExQIzGa8YIDdLORLD8So+k/AHCSXq9v5cRTAAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-arrow-l:after,
+.ui-alt-icon .ui-icon-arrow-l:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADdJREFUOMtjYMANGhjIACBN/8nV9J9cTf/J1fSfXE2EMFmaKNNItlMpChyKooOiBEBRkiMqkQMAcwJMu8C5mgwAAAAASUVORK5CYII=");
+}
+.ui-alt-icon.ui-icon-arrow-r:after,
+.ui-alt-icon .ui-icon-arrow-r:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADVJREFUOMtjYMAPGhjIBP/J1fyfXM3/ydX8H5/m/yTiBnI1wjXTTWMDxYFD0+hooFuSw6kJAOa7TLvbyXpwAAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-arrow-u:after,
+.ui-alt-icon .ui-icon-arrow-u:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADVJREFUOMtjYMANGqCYJADS8B+KG8jRRLRmbJoIasanCadmYjRhaCZFE0FnoyskGoxqpEQjABQxTLu007KqAAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-arrow-u-l:after,
+.ui-alt-icon .ui-icon-arrow-u-l:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEVJREFUOMtjYGBg+E8EbmDAAsjSxECuJnwaDzAQAFS3kSQ/HiAnVGGSDcRqxiZIlGZcfmggJ8BoppkojeiaidaErBmuCQCtL16vpLfRlQAAAABJRU5ErkJggg==");
+}
+.ui-alt-icon.ui-icon-arrow-u-r:after,
+.ui-alt-icon .ui-icon-arrow-u-r:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEVJREFUOMu9zzEOACAIA8A+nafxM12JFiwMNmGCCwDcMQBLKBqbQgWX8W8bRz9myCuYISN9GZ1zLRTn26g88YkYllHEMtpyql6v/pwMSQAAAABJRU5ErkJggg==");
+}
+.ui-alt-icon.ui-icon-audio:after,
+.ui-alt-icon .ui-icon-audio:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAANVJREFUOMuF0jFKg0EQhuHHXCBqL1ELCytzi5zAKgh2ViEgYhMwYCkWaXIUG/sU6YJaCBZewKRRiaAkzRTLun/+r5pvZ15mdhjKukniBh7RVaNb/Cb+BN9YYbQJWmUgHOE1ctdVUAqeoxfxHj7wgwOYJkAOzsJfhe+Fv1eAUrCFOb6wjR384aUOhHG8dcK/Y9lQr62qxKaOh1jgE03sxqjPMInCEvgUvh++H/4u7TwsgGe4iHg/FrWMpSnB+QEc4y1yl1V/HmZgO7r8G7GkQXbkDzhNC9aKZ1PDJ0JepAAAAABJRU5ErkJggg==");
+}
+.ui-alt-icon.ui-icon-back:after,
+.ui-alt-icon .ui-icon-back:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAItJREFUOMtjYMAEDQxkAJCm/+Rq+k+uJhD+A8Svgfg4EE8AYgdiNWLDZ4BYl5BmViCWBmIXIG4F4qdQ8U9ArE1K4HAB8Vqo3GZ8zsYGJKAaP5Ma6sLkamyEatxLrAZQQNUD8T+oRldCGhSBuBiI70I1gDSWEmMTchzeBGIPYp34DIiXArEvEDOhSwIAi9Qyp4aUzewAAAAASUVORK5CYII=");
+}
+.ui-alt-icon.ui-icon-bars:after,
+.ui-alt-icon .ui-icon-bars:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAACZJREFUOMtjYBgIcBKI/5OIT4A0HidD41GGUT/SCJwh148nhoYfAe0YURTen2r1AAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-bullets:after,
+.ui-alt-icon .ui-icon-bullets:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADVJREFUOMtjYBgIcBKIj6Px/xPAJxigmo4iaTxOhMajDKN+pBE4A3MzEp8oP55Ac/OJwelHAGSiQoVBqpe0AAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-calendar:after,
+.ui-alt-icon .ui-icon-calendar:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADRJREFUOMtjZECAk0D8D4gtGbCDM0D8B4gtQBxGIP7PQAYYYhoZKLWRJDZFGkedismmTCMAvGkkB7PDw7MAAAAASUVORK5CYII=");
+}
+.ui-alt-icon.ui-icon-camera:after,
+.ui-alt-icon .ui-icon-camera:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJxJREFUOMtjYKAiUAfiGiBugGIQWxWbQi4gzkRS+BSI/6Phx0jyWUDMCdK4GYtCQngTSOMfLBIPgXgCEPdB2ejyID0YggeAWBTqfJCzRID4IBZ1GAIGaM4HOcuQGI0sQPwLif8TiFmJtXETEn89EBsTo/EQkh8zoOwj2DT+xSL4CIj7oSH7GFeobiIjHkHOB6cC5JRDCGfAUg5ZAAAIx317SYGtJAAAAABJRU5ErkJggg==");
+}
+.ui-alt-icon.ui-icon-carat-d:after,
+.ui-alt-icon .ui-icon-carat-d:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAHFJREFUOMvV0DEKAjEQQNF3GhXXbXW9f6+nkGVTqRfQJoFlIDHa+SFFmHkpwt+1w7Fjb8KmXLaYccepgc544lbwFa98anjCY7V3gQFLA0e0YF+GNdxEa5wCjmiofUDEXah0CDj1oNKYQcoPfdX4C/rYG6dgMtFQD5sUAAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-carat-l:after,
+.ui-alt-icon .ui-icon-carat-l:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAFBJREFUOMtjYMAPdIH4PBCrMJAA9ID4NRD/B+KnQKxKqiYQfg/ExuRoMiFG0xtSNenTTRNFGnFpNiUl7pA1fyBV82s0zWZ01/yY1PSKM5EDAGi5MtgV7LNzAAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-carat-r:after,
+.ui-alt-icon .ui-icon-carat-r:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAFpJREFUOMtjYMAE6kB8Hoi1GEgAGkD8HIj/A/FLINYmVqMZEH+AaiRZszk1Nb+iVLMOJZp1idX4kVRbLcjRZIlFkzYxmj6RGh0W5GgCATUgfkpOxMM0nyOUyAF53TLQiFLV2gAAAABJRU5ErkJggg==");
+}
+.ui-alt-icon.ui-icon-carat-u:after,
+.ui-alt-icon .ui-icon-carat-u:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAGZJREFUOMtjYKAB0IdikjW9gWI9UjX9h2KiNOuhaYLh1/g060EVwBS/h2JkzbrEaDIBYlMg/oBLsy4OTTCArvkVTPN5PJpwaT4HElQB4qd4NMGAGVTzY6geMFAFYmMiosoMWdMQAQBshTLV2RAbgQAAAABJRU5ErkJggg==");
+}
+.ui-alt-icon.ui-icon-check:after,
+.ui-alt-icon .ui-icon-check:after,
+html .ui-alt-icon.ui-btn.ui-checkbox-on:after,
+html .ui-alt-icon .ui-btn.ui-checkbox-on:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEtJREFUOMtjYKADaIBikkAjEP+HYqI1NyFpIlozNk0YGhugToKBZmI1wSSayNGEDzfgCzGiNRHyD1Eh2EaOJhjoIEcTDHSRo4loAAAMpkH3I7j13AAAAABJRU5ErkJggg==");
+}
+.ui-alt-icon.ui-icon-clock:after,
+.ui-alt-icon .ui-icon-clock:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAANhJREFUOMuNkmEKgkAQhYd+hRdI9CpZpwiETlERdICiDhMh0R2qf4ZdxArsT9rbeAtT7GIPPnTHebvjzIp8KwYbcAVPUoA1iMSjMXiAxsMdpC5TzYQt6IMuScCO32ptjtVJU7XZGRzVes6cGwiF/2RP0rIlamWMrYSNaFhem3HA2EXYuYb/4zIaTowFXFcd8euk3l+uhIK7JNKuIXNzc+KBwckfxhmfH0/E4TZsuU8L5pSgZ4OpugAZuxcQU95eXYDR744ph+u7cqXLZBVyuGZOFcnBUpdn9AYEHE/v8XhZcwAAAABJRU5ErkJggg==");
+}
+.ui-alt-icon.ui-icon-cloud:after,
+.ui-alt-icon .ui-icon-cloud:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAHZJREFUOMtjYBgMQBiIE4G4FkoLEaMpEog/A/F/JPwRiEPwabIF4r9ommD4NxCb49K4C4cmGP4HxK+A2B9ZkzsQfyOgEYZfwjRVEKkBhr8AMSdI41sSNYLwRpDGd2Ro/AnSWE6GxnUwf7pAI7yBCJwJxBz0T5cA6NleA+xgAXwAAAAASUVORK5CYII=");
+}
+.ui-alt-icon.ui-icon-comment:after,
+.ui-alt-icon .ui-icon-comment:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEdJREFUOMtjYGBgCATil0D8n0j8Coj9GUjUBMMvGaEMkgETA5lgVCMBja/J0AeKe3AqICURvABiX3STYJINpDqBLE0MpGgCAMwXLfKbu8xgAAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-delete:after,
+.ui-alt-icon .ui-icon-delete:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAE1JREFUOMtjYECABijGBbDKgwT+Q3EDDk0Y8siC2DTjlMcm8R/Jaf/xGYxLwX8CriFacwO+kCNZE9kaG2jlP6JDlGB0kJ0AyE5yZCVyAIGUcaXrtLjcAAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-edit:after,
+.ui-alt-icon .ui-icon-edit:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEVJREFUOMtjYCAeNEAxSQCk4T8UN5CrkSjNyM4j2lZsChtI0USS8/6TqnGQa1IgRxMIJJCjCQQWkKMJBA5ANSdAnU0UAAB60T1Uc0QS+gAAAABJRU5ErkJggg==");
+}
+.ui-alt-icon.ui-icon-eye:after,
+.ui-alt-icon .ui-icon-eye:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJtJREFUOMtjYBhowAjEUUB8EIi/QvEBqBgjLk0SUEX/cWCQnDi6JjkgvgdV8AOIs4FYAIj5oOwfULl7ULVgwA/E15FMzsbimhwk+etQPQyr0JwkAFV8EoiPIxmOrGYlExbT/yHR/5ACDQOgOzUXi5oCJPlrUL9jDZxcqIECUE0/sQUODIgTiI792KIDOQFEQg34AsUHoGKMA5s2AdHHPobWAPyKAAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-forbidden:after,
+.ui-alt-icon .ui-icon-forbidden:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAM1JREFUOMuFkkEOgjAQRd9S2WMIZ1HDMVi48wzcAEO8DGHlxlOAiecgshA31M1vUptiJ2lC+3mdmT+F38iBK/AEPsAMPIBGWjDOwASYlTUBZQha9MMN2AMbrQPQSltcOPcyDUAaqKiS/gIy1JPNNETgTvoFGWFUXhqBj9J65J5RP0TgROdvZLkL/oO3OpvRnIzcIwIXzp5GmzZghg/f9V3746gisAFGYGfF0nkAndxL1FPhZFqAk39zqeGuPbkxBNnINNxels8qs3bLA/gCVFFewZEF7yYAAAAASUVORK5CYII=");
+}
+.ui-alt-icon.ui-icon-forward:after,
+.ui-alt-icon .ui-icon-forward:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAItJREFUOMtjYCAONDCQCf6Tq/k/MZodgHgCEB8H4tdA/AdJI1bNekB8Bk0RNoyiURuIP0ElngJxKxC7ALE0ELPis20rVGItEHOSEjhfoJISpEYHTKMQqcG9D6qxkVSNblCN/4C4DohZSNFcBtUIMuAuEBcDsQKxmj2A+CZavBENmIDYD4iXAvEzXIoAgqYyqw9Yg9IAAAAASUVORK5CYII=");
+}
+.ui-alt-icon.ui-icon-gear:after,
+.ui-alt-icon .ui-icon-gear:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAOBJREFUOMuFkkEKwkAMRae13arQXVGo6BFEUS8hiLgSQZcteABddOFJ3YjSA9SK1T/wK2EIGHjw2ySTTDLG6DYAL1CBvhbgC70BMxCCAwio99RzsHYPsEkfUIOCWlLQZ1nJilcGeCBSOovoa2J/FopKJUhBF7SpS/ruoCUHcRFtpUrFTPhzkBhOT96nqyR2nJjKp5BWK4meG2MThyzf2FZJ3Al9BqPmI3CGk7E92/YRPOm7Obs3C2V3Gm8wkXuMxQO4K60+xJ5j12lfxJh7ykWVE/9NwdL8sYQP3N6tpwV8AdaYR91UZ7PcAAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-grid:after,
+.ui-alt-icon .ui-icon-grid:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEJJREFUOMtjYGBgOAnE/6H4OAMEIIudgIqdQRf7j4aJFiNb43EkzlGoImxiJ7CIkQeGUOCcIDIgqBc4Z4gJiCEcOADCDYeuTK+m9gAAAABJRU5ErkJggg==");
+}
+.ui-alt-icon.ui-icon-heart:after,
+.ui-alt-icon .ui-icon-heart:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJRJREFUOMud0D0OAUEYBuDHFVyEisYlaITYm1GtcAU99V5CSb+bWKEwkrVZ+/cmb/PNPJkvwydj7JHghAiD0CjMEsQYBWOGDK9St9hVzLNgXCoOm3r257WmZnDvAW9w7AEPMO0BJ9+fjTugWCFDXFuga7j7kwnSGpQWVyxngbwCPTDXkDWeBZRjqWWigHOsdMymDr0BP5J/6NqLuzwAAAAASUVORK5CYII=");
+}
+.ui-alt-icon.ui-icon-home:after,
+.ui-alt-icon .ui-icon-home:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADhJREFUOMtjYMANGqCYJADS8B+KG8jRRLRmbJoIasanCadmYjRhaCZFE1abidWEAaiikRS5YasRAHf0YqUlUKReAAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-info:after,
+.ui-alt-icon .ui-icon-info:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJxJREFUOMul0ksKwkAQhOHvFga9hwTvIQS8TkSPZ4gX8QG6Stx0IA6TQLSgNtPzz6O6+dYGZ1zxDrc4YW1CBzzRT/iBKgd1ycYtymStG8ObiZtK7DLrdxTiT/1CH0UQaWGsHNiI5PoZOFd7/QW2P4AX0dylYC0m4jETTgrfsBoKVWYAcu6wT0+torlT0C0HDSqiuU0k94og6vHz4AMNCIcMUIkWVwAAAABJRU5ErkJggg==");
+}
+.ui-alt-icon.ui-icon-location:after,
+.ui-alt-icon .ui-icon-location:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJdJREFUOMuVkDEKwkAUBafzBG7sbCVtej2FHionEVGJIZVniqJouoA2T/jo+pMd+M3sm2bhlxxogA54AjWwYIAcuAOvr7sNxY2GRyAAU6CSO3lhp1EwLsg9vPCqUWZcJnfxwoNGFTBTVMvtvXAT+ZjPrb1wArSRqNWbSxkJS0YwB3oT9XKj2JlwSwKFCQsSOeuSWQHLf49vN4Q5LhENhvAAAAAASUVORK5CYII=");
+}
+.ui-alt-icon.ui-icon-lock:after,
+.ui-alt-icon .ui-icon-lock:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAG5JREFUOMtjYMAEwUB8GIi/Q/EhIA5kIAB6gfg/DtyFS1MwVMEPIM4GYgEg5oOyf0Dl/LFpPAyVzMYilwOVO4hN43eopAAWOX6o3FdsGmF+wQWwyv8nEdNGowkQm5Oj0RiITcnR2ADF9NNIm1AFAP9Vd4ZWPhWFAAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-mail:after,
+.ui-alt-icon .ui-icon-mail:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAIRJREFUOMtjYBgIEA3EH4H4P5H4I1QPAxcQKwLxUSI0gdQoQPUwXAViLSBmBuIGIP6DRQNIrB6qRhuqByzxFYgToE63AuL7SJruAbElVC4BqvY/A5rJC6DO4APiJVDMBxVbgKYWw1kwp8MAzGn/CWlEdjqy01AwI0w3qYCJ3MhnYhgyAAD7hUiBFf5JtwAAAABJRU5ErkJggg==");
+}
+.ui-alt-icon.ui-icon-minus:after,
+.ui-alt-icon .ui-icon-minus:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABZJREFUOMtjYBgFeMF/MvFQ0jgKcAAApTQ3yWkQbYUAAAAASUVORK5CYII=");
+}
+.ui-alt-icon.ui-icon-navigation:after,
+.ui-alt-icon .ui-icon-navigation:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJRJREFUOMtjYKADEALiXCCeS4xiJiB2BeIVQPwDiP8DcQ4+DfJA3ADED6CKYfg7EAuiK+YA4kgg3g3E/9A0wPByZA2GQDwFiN/hUIyMXdA9bQbE0UBcD8RLgPgEEL9F0wRyNiOxIYnsinpSouAkVNNfIJYjReNSqMZdpEZ6A1RjBKkaY6CBxE6qRnMgnkxu+jTEJgEAOtUv19DqMFAAAAAASUVORK5CYII=");
+}
+.ui-alt-icon.ui-icon-phone:after,
+.ui-alt-icon .ui-icon-phone:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAALBJREFUOMtjYGBgYALiBUB8BIh5GUgAUUB8Foj/A/ExUjS/AeLVaJp5iNH4DaphDVTzbyA2JUbjaahGEF4FxB7EOrUcSeMlUgKHH+pPmOZgUjTHImn8AsTmpGiej6T5AxBbo8lrATE3No1sQLwbSfMPIE6GyllDQx9nIuEC4j1ImmEBthwpno/i0gyyeSGaZuR4BrEP4fNzAhC/RdMMS2ETCAWYABBXAPE5qJ9fw6ILAKJsPsK6IqZ8AAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-plus:after,
+.ui-alt-icon .ui-icon-plus:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAB1JREFUOMtjYMAO/qNhosFw0/ifTDyUNI4mABwaAYa6X6GPliIhAAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-power:after,
+.ui-alt-icon .ui-icon-power:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAMZJREFUOMtjYMAN9gLxbgYywH8oJghCgfgWEJtj0WgLxLeBOBBdkyIQf4UqDMWiMRbK/gLEcsgap0AlVuNx6gYofyKyxvtQQWM8Gs2g/DvIGv9ABVnwaGSF8n8ja/wCFRRCErsIxOeR+CJQNZ+QNR6CCiYgiTEBMSMSPxWqZh+yxkSo4AtoCKMDFSB+DVUTiyzBjGTrGyAugQaUCRCXA/E7qNxeqEtQgCAQH0QKFHQM0sSPK/UwQZ0CSqPPoXgXEEej+Zd8AAA35kK6jnLDjgAAAABJRU5ErkJggg==");
+}
+.ui-alt-icon.ui-icon-recycle:after,
+.ui-alt-icon .ui-icon-recycle:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJVJREFUOMtjYKAyOAvEP4H4B5RdCMTsxGj8jwVfBmIZQhr9gJgLiLmB2BeIr0M1X0K3ORSKcQF+JM0FMEFRIH4FxaIEXAHSeBomsBrJH6vwaOSBqvmGLPgDKsiNRyNWC85CBXzxaMTqpSKoxuvQgMAFMAKRA4ivIGn2g/oJhEMIxZ0skmZ0TBBwQJPXGWjogfAJqiZmAOozM3SzI/gZAAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-refresh:after,
+.ui-alt-icon .ui-icon-refresh:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAMlJREFUOMtjYEAF0kDcCcRXgPgnEP8A4ktA3ArEEkjq6pE1xQLxFyD+jwN/AuJIIG4G4j8wTTFA/A+qYBUQWwExGxRbA/FaNEPAGiWB+DNUII8BN9iPrrEdylmDR1MzNhuvQDmWODQ1YvEvWOMPKIeNgURAtsbLUI3WpGpsg2pcS4RaXyBmhnEkoZEL0lyCR1MVVM1BZMEIpASwAYjtgZgbih2BeAtU7i8QB6GbGAbEH/AkOZBcMC7niAFxExCfh6bbL1B2I1QODgBeWE0SXtioYgAAAABJRU5ErkJggg==");
+}
+.ui-alt-icon.ui-icon-search:after,
+.ui-alt-icon .ui-icon-search:after,
+.ui-input-search:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAOZJREFUOMuV0U8rxFEUxvFPSjMUG/oRio2ivAZLG3ulZGsjzevwBpTZzAuYlD3Zi2JhZKEs7Aclf/Jvc3D7dX8TT906Pc/5nu49l1/VsYUjXOME25jUQ9O4xGfmPGA5B9XRiaYOVjCLReyF/4SFMriZQMOZwc3I98vBQQSrFc8YxRte4nY/ugpwvscObqJn5tvoQzfqiQqohiLqbgoeRt2oADcwgFPcp8E47uIqLYwl227gNbK13NQlPEbDO27xXPrPM4zk4Dm0E+ADx1jHRXjnseWs+jGFocQr/grnlMI7/qkCuxj8AkXLP4FD310vAAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-shop:after,
+.ui-alt-icon .ui-icon-shop:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAFBJREFUOMtjYMAE7EA8BYjfA/FHKJsdXRETFo29QCwFxOpArALEMkDcw0AEANkkhsQHsT8Qo/E/MWKMeBTjA4zY/GiFRcyCpjYSBUY10kIjAHnuC0BW95IBAAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-star:after,
+.ui-alt-icon .ui-icon-star:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAIlJREFUOMtjYMANjKGYZDALiGeSqokXiD8D8Scg5iFFYzoQ/4fiNFI0nkXSeAaXogQg/oqkkBAGqY2HadYC4qtEaLoCVYsCuIB4AR5N86FqsAJlPBqV8QVKFh6Nmfg0boAqegvE4VD8Fiq2HpcmFmiEbwViSSRxEHsbEH+EqsEABgQiOw2qhjIAAOvoP4EZPNvPAAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-tag:after,
+.ui-alt-icon .ui-icon-tag:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEFJREFUOMtjYGBg+I8FNzAQAf6Tqxmm0AyILUjRDFME0mRFis3/icBYNTeMaiYtjhsoSRgN5CZFdM1Ea0LWjKEJAJLwYwqDORsHAAAAAElFTkSuQmCC");
+}
+.ui-alt-icon.ui-icon-user:after,
+.ui-alt-icon .ui-icon-user:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJdJREFUOMtjYMAELEC8BIh/A/EJIPZlIBJkAfF/JPwPiO2J0XgUTSMIrydG4ycsGl8R0qSKRRPMuSr4NNbi0AjC1fg0KgPxGyyaXgKxIiHnrsGicRkxgWMExF+RNH0GYj1i43IHksaN+BRyAHE4EC8A4ovQVAPTCGJfAOJ5QBwKxOwwTYlA/AJPaKLj50Acz0CCBnRMnkYAFb5i4CiuUNsAAAAASUVORK5CYII=");
+}
+.ui-alt-icon.ui-icon-video:after,
+.ui-alt-icon .ui-icon-video:after {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAE1JREFUOMtjYBgIEAjEL4H4Pw78Coj9sWnEpwmGX6LpaWAgQhMMI2v6T6rGBmQ+sRob0A2iuUaynYoROK+I0PQCW3T4E4hLkCZfhgEHAMf2cCELnGdHAAAAAElFTkSuQmCC");
+}
+/* Globals */
+/* Font
+-----------------------------------------------------------------------------------------------------------*/
+html {
+	font-size: 100%;
+}
+body,
+input,
+select,
+textarea,
+button,
+.ui-btn {
+	font-size: 1em;
+	line-height: 1.3;
+	font-family: sans-serif /*{global-font-family}*/;
+}
+legend,
+.ui-input-text input,
+.ui-input-search input {
+	color: inherit;
+	text-shadow: inherit;
+}
+/* Form labels (overrides font-weight bold in bars, and mini font-size) */
+.ui-mobile label,
+div.ui-controlgroup-label {
+	font-weight: normal;
+	font-size: 16px;
+}
+/* Separators
+-----------------------------------------------------------------------------------------------------------*/
+/* Field contain separator (< 28em) */
+.ui-field-contain {
+	border-bottom-color: #828282;
+	border-bottom-color: rgba(0,0,0,.15);
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+/* Table opt-in classes: strokes between each row, and alternating row stripes */
+/* Classes table-stroke and table-stripe are deprecated in 1.4. */
+.table-stroke thead th,
+.table-stripe thead th,
+.table-stripe tbody tr:last-child {
+	border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */
+	border-bottom: 1px solid rgba(0,0,0,.1);
+}
+.table-stroke tbody th,
+.table-stroke tbody td {
+	border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback  */
+	border-bottom: 1px solid rgba(0,0,0,.05);
+}
+.table-stripe.table-stroke tbody tr:last-child th,
+.table-stripe.table-stroke tbody tr:last-child td {
+	border-bottom: 0;
+}
+.table-stripe tbody tr:nth-child(odd) td,
+.table-stripe tbody tr:nth-child(odd) th {
+	background-color: #eeeeee; /* non-RGBA fallback  */
+	background-color: rgba(0,0,0,.04);
+}
+/* Buttons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn,
+label.ui-btn {
+	font-weight: bold;
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-btn {
+	text-decoration: none !important;
+}
+.ui-btn-active {
+	cursor: pointer;
+}
+/* Corner rounding
+-----------------------------------------------------------------------------------------------------------*/
+/* Class ui-btn-corner-all deprecated in 1.4 */
+.ui-corner-all {
+	-webkit-border-radius: 				.3125em /*{global-radii-blocks}*/;
+	border-radius: 						.3125em /*{global-radii-blocks}*/;
+}
+/* Buttons */
+.ui-btn-corner-all,
+.ui-btn.ui-corner-all,
+/* Slider track */
+.ui-slider-track.ui-corner-all,
+/* Flipswitch */
+.ui-flipswitch.ui-corner-all,
+/* Count bubble */
+.ui-li-count {
+	-webkit-border-radius: 				.3125em /*{global-radii-buttons}*/;
+	border-radius: 						.3125em /*{global-radii-buttons}*/;
+}
+/* Icon-only buttons */
+.ui-btn-icon-notext.ui-btn-corner-all,
+.ui-btn-icon-notext.ui-corner-all {
+	-webkit-border-radius: 1em;
+	border-radius: 1em;
+}
+/* Radius clip workaround for cleaning up corner trapping */
+.ui-btn-corner-all,
+.ui-corner-all {
+	-webkit-background-clip: padding;
+	background-clip: padding-box;
+}
+/* Popup arrow */
+.ui-popup.ui-corner-all > .ui-popup-arrow-guide {
+	left: .6em /*{global-radii-blocks}*/;
+	right: .6em /*{global-radii-blocks}*/;
+	top: .6em /*{global-radii-blocks}*/;
+	bottom: .6em /*{global-radii-blocks}*/;
+}
+/* Shadow
+-----------------------------------------------------------------------------------------------------------*/
+.ui-shadow {
+	-webkit-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ 		rgba(0,0,0,.15) /*{global-box-shadow-color}*/;
+	-moz-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ 		rgba(0,0,0,.15) /*{global-box-shadow-color}*/;
+	box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ 				rgba(0,0,0,.15) /*{global-box-shadow-color}*/;
+}
+.ui-shadow-inset {
+	-webkit-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ 	rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+	-moz-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ 		rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+	box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ 	rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+}
+.ui-overlay-shadow {
+	-webkit-box-shadow: 0 0 12px 		rgba(0,0,0,.6);
+	-moz-box-shadow: 0 0 12px 			rgba(0,0,0,.6);
+	box-shadow: 0 0 12px 				rgba(0,0,0,.6);
+}
+/* Icons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after,
+.ui-btn-icon-notext:after {
+	background-color: 					#666 /*{global-icon-color}*/;
+	background-color: 					rgba(0,0,0,.3) /*{global-icon-disc}*/;
+	background-position: center center;
+	background-repeat: no-repeat;
+	-webkit-border-radius: 1em;
+	border-radius: 1em;
+}
+/* Alt icons */
+.ui-alt-icon.ui-btn:after,
+.ui-alt-icon .ui-btn:after,
+html .ui-alt-icon.ui-checkbox-off:after,
+html .ui-alt-icon.ui-radio-off:after,
+html .ui-alt-icon .ui-checkbox-off:after,
+html .ui-alt-icon .ui-radio-off:after {
+	background-color: 					#666 /*{global-icon-color}*/;
+	background-color: 					rgba(0,0,0,.15) /*{global-icon-disc}*/;
+}
+/* No disc */
+.ui-nodisc-icon.ui-btn:after,
+.ui-nodisc-icon .ui-btn:after {
+	background-color: transparent;
+}
+/* Icon shadow */
+.ui-shadow-icon.ui-btn:after,
+.ui-shadow-icon .ui-btn:after {
+	-webkit-box-shadow: 0 1px 0 			rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+	-moz-box-shadow: 0 1px 0 				rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+	box-shadow: 0 1px 0 					rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+}
+/* Checkbox and radio */
+.ui-btn.ui-checkbox-off:after,
+.ui-btn.ui-checkbox-on:after,
+.ui-btn.ui-radio-off:after,
+.ui-btn.ui-radio-on:after {
+	display: block;
+	width: 18px;
+	height: 18px;
+	margin: -9px 2px 0 2px;
+}
+.ui-checkbox-off:after,
+.ui-btn.ui-radio-off:after {
+	filter: Alpha(Opacity=30);
+	opacity: .3;
+}
+.ui-btn.ui-checkbox-off:after,
+.ui-btn.ui-checkbox-on:after {
+	-webkit-border-radius: .1875em;
+	border-radius: .1875em;
+}
+.ui-btn.ui-checkbox-off:after {
+	background-color: #666;
+	background-color: rgba(0,0,0,.3);
+}
+.ui-radio .ui-btn.ui-radio-on:after {
+	background-image: none;
+	background-color: #fff;
+	width: 8px;
+	height: 8px;
+	border-width: 5px;
+	border-style: solid; 
+}
+.ui-alt-icon.ui-btn.ui-radio-on:after,
+.ui-alt-icon .ui-btn.ui-radio-on:after {
+	background-color: #000;
+}
+/* Loader */
+.ui-icon-loading {
+	background: url(images/ajax-loader.gif);
+	background-size: 2.875em 2.875em;
+}
+/* Swatches */
+/* A
+-----------------------------------------------------------------------------------------------------------*/
+/* Bar: Toolbars, dividers, slider track */
+.ui-bar-a,
+.ui-page-theme-a .ui-bar-inherit,
+html .ui-bar-a .ui-bar-inherit,
+html .ui-body-a .ui-bar-inherit,
+html body .ui-group-theme-a .ui-bar-inherit {
+	background-color: 			#e9e9e9 /*{a-bar-background-color}*/;
+	border-color:	 		#ddd /*{a-bar-border}*/;
+	color: 					#333 /*{a-bar-color}*/;
+	text-shadow: 0 /*{a-bar-shadow-x}*/ 1px /*{a-bar-shadow-y}*/ 0 /*{a-bar-shadow-radius}*/ 	#eee /*{a-bar-shadow-color}*/;
+	font-weight: bold;
+}
+.ui-bar-a {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Page and overlay */
+.ui-overlay-a,
+.ui-page-theme-a,
+.ui-page-theme-a .ui-panel-wrapper {
+	background-color: 			#f9f9f9 /*{a-page-background-color}*/;
+	border-color:	 		#bbb /*{a-page-border}*/;
+	color: 					#333 /*{a-page-color}*/;
+	text-shadow: 0 /*{a-page-shadow-x}*/ 1px /*{a-page-shadow-y}*/ 0 /*{a-page-shadow-radius}*/ 	#f3f3f3 /*{a-page-shadow-color}*/;
+}
+/* Body: Read-only lists, text inputs, collapsible content */
+.ui-body-a,
+.ui-page-theme-a .ui-body-inherit,
+html .ui-bar-a .ui-body-inherit,
+html .ui-body-a .ui-body-inherit,
+html body .ui-group-theme-a .ui-body-inherit,
+html .ui-panel-page-container-a {
+	background-color: 			#fff /*{a-body-background-color}*/;
+	border-color:	 		#ddd /*{a-body-border}*/;
+	color: 					#333 /*{a-body-color}*/;
+	text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 0 /*{a-body-shadow-radius}*/ 	#f3f3f3 /*{a-body-shadow-color}*/;
+}
+.ui-body-a {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Links */
+.ui-page-theme-a a,
+html .ui-bar-a a,
+html .ui-body-a a,
+html body .ui-group-theme-a a {
+	color: #3388cc /*{a-link-color}*/;
+	font-weight: bold;
+}
+.ui-page-theme-a a:visited,
+html .ui-bar-a a:visited,
+html .ui-body-a a:visited,
+html body .ui-group-theme-a a:visited {
+    color: #3388cc /*{a-link-visited}*/;
+}
+.ui-page-theme-a a:hover,
+html .ui-bar-a a:hover,
+html .ui-body-a a:hover,
+html body .ui-group-theme-a a:hover {
+	color: #005599 /*{a-link-hover}*/;
+}
+.ui-page-theme-a a:active,
+html .ui-bar-a a:active,
+html .ui-body-a a:active,
+html body .ui-group-theme-a a:active {
+	color: #005599 /*{a-link-active}*/;
+}
+/* Button up */
+.ui-page-theme-a .ui-btn,
+html .ui-bar-a .ui-btn,
+html .ui-body-a .ui-btn,
+html body .ui-group-theme-a .ui-btn,
+html head + body .ui-btn.ui-btn-a,
+/* Button visited */
+.ui-page-theme-a .ui-btn:visited,
+html .ui-bar-a .ui-btn:visited,
+html .ui-body-a .ui-btn:visited,
+html body .ui-group-theme-a .ui-btn:visited,
+html head + body .ui-btn.ui-btn-a:visited {
+	background-color: 			#f6f6f6 /*{a-bup-background-color}*/;
+	border-color:	 		#ddd /*{a-bup-border}*/;
+	color: 					#333 /*{a-bup-color}*/;
+	text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 0 /*{a-bup-shadow-radius}*/ #f3f3f3 /*{a-bup-shadow-color}*/;
+}
+/* Button hover */
+.ui-page-theme-a .ui-btn:hover,
+html .ui-bar-a .ui-btn:hover,
+html .ui-body-a .ui-btn:hover,
+html body .ui-group-theme-a .ui-btn:hover,
+html head + body .ui-btn.ui-btn-a:hover {
+	background-color: 			#ededed /*{a-bhover-background-color}*/;
+	border-color:	 		#ddd /*{a-bhover-border}*/;
+	color: 					#333 /*{a-bhover-color}*/;
+	text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 0 /*{a-bhover-shadow-radius}*/ #f3f3f3 /*{a-bhover-shadow-color}*/;
+}
+/* Button down */
+.ui-page-theme-a .ui-btn:active,
+html .ui-bar-a .ui-btn:active,
+html .ui-body-a .ui-btn:active,
+html body .ui-group-theme-a .ui-btn:active,
+html head + body .ui-btn.ui-btn-a:active {
+	background-color: 			#e8e8e8 /*{a-bdown-background-color}*/;
+	border-color:	 		#ddd /*{a-bdown-border}*/;
+	color: 					#333 /*{a-bdown-color}*/;
+	text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 0 /*{a-bdown-shadow-radius}*/ #f3f3f3 /*{a-bdown-shadow-color}*/;
+}
+/* Active button */
+.ui-page-theme-a .ui-btn.ui-btn-active,
+html .ui-bar-a .ui-btn.ui-btn-active,
+html .ui-body-a .ui-btn.ui-btn-active,
+html body .ui-group-theme-a .ui-btn.ui-btn-active,
+html head + body .ui-btn.ui-btn-a.ui-btn-active,
+/* Active checkbox icon */
+.ui-page-theme-a .ui-checkbox-on:after,
+html .ui-bar-a .ui-checkbox-on:after,
+html .ui-body-a .ui-checkbox-on:after,
+html body .ui-group-theme-a .ui-checkbox-on:after,
+.ui-btn.ui-checkbox-on.ui-btn-a:after,
+/* Active flipswitch background */
+.ui-page-theme-a .ui-flipswitch-active,
+html .ui-bar-a .ui-flipswitch-active,
+html .ui-body-a .ui-flipswitch-active,
+html body .ui-group-theme-a .ui-flipswitch-active,
+html body .ui-flipswitch.ui-bar-a.ui-flipswitch-active,
+/* Active slider track */
+.ui-page-theme-a .ui-slider-track .ui-btn-active,
+html .ui-bar-a .ui-slider-track .ui-btn-active,
+html .ui-body-a .ui-slider-track .ui-btn-active,
+html body .ui-group-theme-a .ui-slider-track .ui-btn-active,
+html body div.ui-slider-track.ui-body-a .ui-btn-active {
+	background-color: 		#3388cc /*{a-active-background-color}*/;
+	border-color:	 		#3388cc /*{a-active-border}*/;
+	color: 					#fff /*{a-active-color}*/;
+	text-shadow: 0 /*{a-active-shadow-x}*/ 1px /*{a-active-shadow-y}*/ 0 /*{a-active-shadow-radius}*/ #005599 /*{a-active-shadow-color}*/;
+}
+/* Active radio button icon */
+.ui-page-theme-a .ui-radio-on:after,
+html .ui-bar-a .ui-radio-on:after,
+html .ui-body-a .ui-radio-on:after,
+html body .ui-group-theme-a .ui-radio-on:after,
+.ui-btn.ui-radio-on.ui-btn-a:after {
+	border-color:			#3388cc /*{a-active-background-color}*/;
+}
+/* Focus */
+.ui-page-theme-a .ui-btn:focus,
+html .ui-bar-a .ui-btn:focus,
+html .ui-body-a .ui-btn:focus,
+html body .ui-group-theme-a .ui-btn:focus,
+html head + body .ui-btn.ui-btn-a:focus,
+/* Focus buttons and text inputs with div wrap */
+.ui-page-theme-a .ui-focus,
+html .ui-bar-a .ui-focus,
+html .ui-body-a .ui-focus,
+html body .ui-group-theme-a .ui-focus,
+html head + body .ui-btn-a.ui-focus,
+html head + body .ui-body-a.ui-focus {
+	-webkit-box-shadow: 0 0 12px 	#3388cc /*{a-active-background-color}*/;
+	-moz-box-shadow: 0 0 12px 		#3388cc /*{a-active-background-color}*/;
+	box-shadow: 0 0 12px 			#3388cc /*{a-active-background-color}*/;
+}
+/* B
+-----------------------------------------------------------------------------------------------------------*/
+/* Bar: Toolbars, dividers, slider track */
+.ui-bar-b,
+.ui-page-theme-b .ui-bar-inherit,
+html .ui-bar-b .ui-bar-inherit,
+html .ui-body-b .ui-bar-inherit,
+html body .ui-group-theme-b .ui-bar-inherit {
+	background-color: 			#1d1d1d /*{b-bar-background-color}*/;
+	border-color:	 		#1b1b1b /*{b-bar-border}*/;
+	color: 					#fff /*{b-bar-color}*/;
+	text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 0 /*{b-bar-shadow-radius}*/ 	#111 /*{b-bar-shadow-color}*/;
+	font-weight: bold;
+}
+.ui-bar-b {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Page and overlay */
+.ui-overlay-b,
+.ui-page-theme-b,
+.ui-page-theme-b .ui-panel-wrapper {
+	background-color: 			#252525 /*{b-page-background-color}*/;
+	border-color:	 		#454545 /*{b-page-border}*/;
+	color: 					#fff /*{b-page-color}*/;
+	text-shadow: 0 /*{b-page-shadow-x}*/ 1px /*{b-page-shadow-y}*/ 0 /*{b-page-shadow-radius}*/ 	#111 /*{b-page-shadow-color}*/;
+}
+/* Body: Read-only lists, text inputs, collapsible content */
+.ui-body-b,
+.ui-page-theme-b .ui-body-inherit,
+html .ui-bar-b .ui-body-inherit,
+html .ui-body-b .ui-body-inherit,
+html body .ui-group-theme-b .ui-body-inherit,
+html .ui-panel-page-container-b {
+	background-color: 			#2a2a2a /*{b-body-background-color}*/;
+	border-color:	 		#1d1d1d /*{b-body-border}*/;
+	color: 					#fff /*{b-body-color}*/;
+	text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ 	#111 /*{b-body-shadow-color}*/;
+}
+.ui-body-b {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Links */
+.ui-page-theme-b a,
+html .ui-bar-b a,
+html .ui-body-b a,
+html body .ui-group-theme-b a {
+	color: #22aadd /*{b-link-color}*/;
+	font-weight: bold;
+}
+.ui-page-theme-b a:visited,
+html .ui-bar-b a:visited,
+html .ui-body-b a:visited,
+html body .ui-group-theme-b a:visited {
+    color: #22aadd /*{b-link-visited}*/;
+}
+.ui-page-theme-b a:hover,
+html .ui-bar-b a:hover,
+html .ui-body-b a:hover,
+html body .ui-group-theme-b a:hover {
+	color: #0088bb /*{b-link-hover}*/;
+}
+.ui-page-theme-b a:active,
+html .ui-bar-b a:active,
+html .ui-body-b a:active,
+html body .ui-group-theme-b a:active {
+	color: #0088bb /*{b-link-active}*/;
+}
+/* Button up */
+.ui-page-theme-b .ui-btn,
+html .ui-bar-b .ui-btn,
+html .ui-body-b .ui-btn,
+html body .ui-group-theme-b .ui-btn,
+html head + body .ui-btn.ui-btn-b,
+/* Button visited */
+.ui-page-theme-b .ui-btn:visited,
+html .ui-bar-b .ui-btn:visited,
+html .ui-body-b .ui-btn:visited,
+html body .ui-group-theme-b .ui-btn:visited,
+html head + body .ui-btn.ui-btn-b:visited {
+	background-color: 			#333 /*{b-bup-background-color}*/;
+	border-color:	 		#1f1f1f /*{b-bup-border}*/;
+	color: 					#fff /*{b-bup-color}*/;
+	text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 0 /*{b-bup-shadow-radius}*/ #111 /*{b-bup-shadow-color}*/;
+}
+/* Button hover */
+.ui-page-theme-b .ui-btn:hover,
+html .ui-bar-b .ui-btn:hover,
+html .ui-body-b .ui-btn:hover,
+html body .ui-group-theme-b .ui-btn:hover,
+html head + body .ui-btn.ui-btn-b:hover {
+	background-color: 			#373737 /*{b-bhover-background-color}*/;
+	border-color:	 		#1f1f1f /*{b-bhover-border}*/;
+	color: 					#fff /*{b-bhover-color}*/;
+	text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 0 /*{b-bhover-shadow-radius}*/ #111 /*{b-bhover-shadow-color}*/;
+}
+/* Button down */
+.ui-page-theme-b .ui-btn:active,
+html .ui-bar-b .ui-btn:active,
+html .ui-body-b .ui-btn:active,
+html body .ui-group-theme-b .ui-btn:active,
+html head + body .ui-btn.ui-btn-b:active {
+	background-color: 			#404040 /*{b-bdown-background-color}*/;
+	border-color:	 		#1f1f1f /*{b-bdown-border}*/;
+	color: 					#fff /*{b-bdown-color}*/;
+	text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 0 /*{b-bdown-shadow-radius}*/ #111 /*{b-bdown-shadow-color}*/;
+}
+/* Active button */
+.ui-page-theme-b .ui-btn.ui-btn-active,
+html .ui-bar-b .ui-btn.ui-btn-active,
+html .ui-body-b .ui-btn.ui-btn-active,
+html body .ui-group-theme-b .ui-btn.ui-btn-active,
+html head + body .ui-btn.ui-btn-b.ui-btn-active,
+/* Active checkbox icon */
+.ui-page-theme-b .ui-checkbox-on:after,
+html .ui-bar-b .ui-checkbox-on:after,
+html .ui-body-b .ui-checkbox-on:after,
+html body .ui-group-theme-b .ui-checkbox-on:after,
+.ui-btn.ui-checkbox-on.ui-btn-b:after,
+/* Active flipswitch background */
+.ui-page-theme-b .ui-flipswitch-active,
+html .ui-bar-b .ui-flipswitch-active,
+html .ui-body-b .ui-flipswitch-active,
+html body .ui-group-theme-b .ui-flipswitch-active,
+html body .ui-flipswitch.ui-bar-b.ui-flipswitch-active,
+/* Active slider track */
+.ui-page-theme-b .ui-slider-track .ui-btn-active,
+html .ui-bar-b .ui-slider-track .ui-btn-active,
+html .ui-body-b .ui-slider-track .ui-btn-active,
+html body .ui-group-theme-b .ui-slider-track .ui-btn-active,
+html body div.ui-slider-track.ui-body-b .ui-btn-active {
+	background-color: 		#22aadd /*{b-active-background-color}*/;
+	border-color:	 		#22aadd /*{b-active-border}*/;
+	color: 					#fff /*{b-active-color}*/;
+	text-shadow: 0 /*{b-active-shadow-x}*/ 1px /*{b-active-shadow-y}*/ 0 /*{b-active-shadow-radius}*/ #0088bb /*{b-active-shadow-color}*/;
+}
+/* Active radio button icon */
+.ui-page-theme-b .ui-radio-on:after,
+html .ui-bar-b .ui-radio-on:after,
+html .ui-body-b .ui-radio-on:after,
+html body .ui-group-theme-b .ui-radio-on:after,
+.ui-btn.ui-radio-on.ui-btn-b:after {
+	border-color:			#22aadd /*{b-active-background-color}*/;
+}
+/* Focus */
+.ui-page-theme-b .ui-btn:focus,
+html .ui-bar-b .ui-btn:focus,
+html .ui-body-b .ui-btn:focus,
+html body .ui-group-theme-b .ui-btn:focus,
+html head + body .ui-btn.ui-btn-b:focus,
+/* Focus buttons and text inputs with div wrap */
+.ui-page-theme-b .ui-focus,
+html .ui-bar-b .ui-focus,
+html .ui-body-b .ui-focus,
+html body .ui-group-theme-b .ui-focus,
+html head + body .ui-btn-b.ui-focus,
+html head + body .ui-body-b.ui-focus {
+	-webkit-box-shadow: 0 0 12px 	#22aadd /*{b-active-background-color}*/;
+	-moz-box-shadow: 0 0 12px 		#22aadd /*{b-active-background-color}*/;
+	box-shadow: 0 0 12px 			#22aadd /*{b-active-background-color}*/;
+}
+/* Structure */
+/* Disabled
+-----------------------------------------------------------------------------------------------------------*/
+/* Class ui-disabled deprecated in 1.4. :disabled not supported by IE8 so we use [disabled] */
+.ui-disabled,
+.ui-state-disabled,
+button[disabled],
+.ui-select .ui-btn.ui-state-disabled {
+	filter: Alpha(Opacity=30);
+	opacity: .3;
+	cursor: default !important;
+	pointer-events: none;
+}
+/* Focus state outline
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn:focus,
+.ui-btn.ui-focus {
+	outline: 0;
+}
+/* Unset box-shadow in browsers that don't do it right */
+.ui-noboxshadow .ui-shadow,
+.ui-noboxshadow .ui-shadow-inset,
+.ui-noboxshadow .ui-overlay-shadow,
+.ui-noboxshadow .ui-shadow-icon.ui-btn:after,
+.ui-noboxshadow .ui-shadow-icon .ui-btn:after,
+.ui-noboxshadow .ui-focus,
+.ui-noboxshadow .ui-btn:focus,
+.ui-noboxshadow  input:focus,
+.ui-noboxshadow .ui-panel {
+	-webkit-box-shadow: none !important;
+	-moz-box-shadow: none !important;
+	box-shadow: none !important;
+}
+.ui-noboxshadow .ui-btn:focus,
+.ui-noboxshadow .ui-focus {
+	outline-width: 1px;
+	outline-style: auto;
+}
+/* Some unsets */
+.ui-mobile,
+.ui-mobile body {
+	height: 99.9%;
+}
+.ui-mobile fieldset,
+.ui-page {
+	padding: 0;
+	margin: 0;
+}
+.ui-mobile a img,
+.ui-mobile fieldset {
+	border-width: 0;
+}
+/* Fixes for fieldset issues on IE10 and FF (see #6077) */
+.ui-mobile fieldset {
+	min-width: 0;
+}
+@-moz-document url-prefix() {
+	.ui-mobile fieldset {
+		display: table-column;
+		vertical-align: middle;
+	}
+}
+/* Viewport */
+.ui-mobile-viewport {
+	margin: 0;
+	overflow-x: visible;
+	-webkit-text-size-adjust: 100%;
+	-ms-text-size-adjust:none;
+	-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+/* Issue #2066 */
+body.ui-mobile-viewport,
+div.ui-mobile-viewport {
+	overflow-x: hidden;
+}
+/* "page" containers - full-screen views, one should always be in view post-pageload */
+.ui-mobile [data-role=page],
+.ui-mobile [data-role=dialog],
+.ui-page {
+	top: 0;
+	left: 0;
+	width: 100%;
+	min-height: 100%;
+	position: absolute;
+	display: none;
+	border: 0;
+}
+/* On ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */
+.ui-page {
+	outline: none;
+}
+.ui-mobile .ui-page-active {
+	display: block;
+	overflow: visible;
+	overflow-x: hidden;
+}
+@media screen and (orientation: portrait) {
+	.ui-mobile .ui-page {
+		min-height: 420px;
+	}
+}
+@media screen and (orientation: landscape) {
+	.ui-mobile .ui-page {
+		min-height: 300px;
+	}
+}
+/* Fouc */
+.ui-mobile-rendering > * {
+	visibility: hidden;
+}
+/* Non-js content hiding */
+.ui-nojs {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+/* Loading screen */
+.ui-loading .ui-loader {
+	display: block;
+}
+.ui-loader {
+	display: none;
+	z-index: 9999999;
+	position: fixed;
+	top: 50%;
+	left: 50%;
+	border:0;
+}
+.ui-loader-default {
+	background: none;
+	filter: Alpha(Opacity=18);
+	opacity: .18;
+	width: 2.875em;
+	height: 2.875em;
+	margin-left: -1.4375em;
+	margin-top: -1.4375em;
+}
+.ui-loader-verbose {
+	width: 12.5em;
+	filter: Alpha(Opacity=88);
+	opacity: .88;
+	box-shadow: 0 1px 1px -1px #fff;
+	height: auto;
+	margin-left: -6.875em;
+	margin-top: -2.6875em;
+	padding: .625em;
+}
+.ui-loader-default h1 {
+	font-size: 0;
+	width: 0;
+	height: 0;
+	overflow: hidden;
+}
+.ui-loader-verbose h1 {
+	font-size: 1em;
+	margin: 0;
+	text-align: center;
+}
+.ui-loader .ui-icon-loading {
+	background-color: #000;
+	display: block;
+	margin: 0;
+	width: 2.75em;
+	height: 2.75em;
+	padding: .0625em;
+	-webkit-border-radius: 2.25em;
+	border-radius: 2.25em;
+}
+.ui-loader-verbose .ui-icon-loading {
+	margin: 0 auto .625em;
+	filter: Alpha(Opacity=75);
+	opacity: .75;
+}
+.ui-loader-textonly {
+	padding: .9375em;
+	margin-left: -7.1875em;
+}
+.ui-loader-textonly .ui-icon-loading {
+	display: none;
+}
+.ui-loader-fakefix {
+	position: absolute;
+}
+/* Headers, content panels */
+.ui-bar,
+.ui-body {
+	position: relative;
+	padding: .4em 1em;
+	overflow: hidden;
+	display: block;
+	clear: both;
+}
+.ui-bar h1,
+.ui-bar h2,
+.ui-bar h3,
+.ui-bar h4,
+.ui-bar h5,
+.ui-bar h6 {
+	margin: 0;
+	padding: 0;
+	font-size: 1em;
+	display: inline-block;
+}
+.ui-header,
+.ui-footer {
+	border-width: 1px 0;
+	border-style: solid;
+	position: relative;
+}
+.ui-header:empty,
+.ui-footer:empty {
+	min-height: 2.6875em;
+}
+.ui-header .ui-title,
+.ui-footer .ui-title {
+	font-size: 1em;
+	min-height: 1.1em;
+	text-align: center;
+	display: block;
+	margin: 0 30%;
+	padding: .7em 0;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+	outline: 0 !important;
+}
+.ui-footer .ui-title {
+	margin: 0 1em;
+}
+.ui-content {
+	border-width: 0;
+	overflow: visible;
+	overflow-x: hidden;
+	padding: 1em;
+}
+/* Corner styling for dialogs and popups */
+.ui-corner-all > .ui-header:first-child,
+.ui-corner-all > .ui-content:first-child,
+.ui-corner-all > .ui-footer:first-child {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+}
+.ui-corner-all > .ui-header:last-child,
+.ui-corner-all > .ui-content:last-child,
+.ui-corner-all > .ui-footer:last-child {
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+/* Buttons and icons */
+.ui-btn {
+	font-size: 16px;
+	margin: .5em 0;
+	padding: .7em 1em;
+	display: block;
+	position: relative;
+	text-align: center;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+	cursor: pointer;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+.ui-btn-icon-notext,
+.ui-header button.ui-btn.ui-btn-icon-notext,
+.ui-footer button.ui-btn.ui-btn-icon-notext {
+	padding: 0;
+	width: 1.75em;
+	height: 1.75em;
+	text-indent: -9999px;
+	white-space: nowrap !important;
+}
+.ui-mini {
+	font-size: 12.5px;
+}
+.ui-mini .ui-btn {
+	font-size: inherit;
+}
+/* Make buttons in toolbars default to mini and inline. */
+.ui-header .ui-btn,
+.ui-footer .ui-btn {
+	font-size: 12.5px;
+	display: inline-block;
+	vertical-align: middle;
+}
+.ui-header .ui-controlgroup .ui-btn-icon-notext,
+.ui-footer .ui-controlgroup .ui-btn-icon-notext {
+    font-size: 12.5px;
+}
+/* To ensure same top and left/right position when ui-btn-left/right are added to something other than buttons. */
+.ui-header .ui-btn-left,
+.ui-header .ui-btn-right {
+	font-size: 12.5px;
+}
+.ui-mini.ui-btn-icon-notext,
+.ui-mini .ui-btn-icon-notext,
+.ui-header .ui-btn-icon-notext,
+.ui-footer .ui-btn-icon-notext {
+	font-size: 16px;	
+	padding: 0;
+}
+.ui-btn-inline {
+	display: inline-block;
+	vertical-align: middle;
+	margin-right: .625em;
+}
+.ui-btn-icon-left {
+	padding-left: 2.5em;
+}
+.ui-btn-icon-right {
+	padding-right: 2.5em;
+}
+.ui-btn-icon-top {
+	padding-top: 2.5em;
+}
+.ui-btn-icon-bottom {
+	padding-bottom: 2.5em;
+}
+.ui-header .ui-btn-icon-top,
+.ui-footer .ui-btn-icon-top,
+.ui-header .ui-btn-icon-bottom,
+.ui-footer .ui-btn-icon-bottom {
+	padding-left: .3125em;
+	padding-right: .3125em;
+}
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after,
+.ui-btn-icon-notext:after {
+	content: "";
+	position: absolute;
+	display: block;
+	width: 22px;
+	height: 22px;
+}
+.ui-btn-icon-notext:after,
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after {
+	top: 50%;
+	margin-top: -11px;
+}
+.ui-btn-icon-left:after {
+	left: .5625em;
+}
+.ui-btn-icon-right:after {
+	right: .5625em;
+}
+.ui-mini.ui-btn-icon-left:after,
+.ui-mini .ui-btn-icon-left:after,
+.ui-header .ui-btn-icon-left:after,
+.ui-footer .ui-btn-icon-left:after {
+	left: .37em;
+}
+.ui-mini.ui-btn-icon-right:after,
+.ui-mini .ui-btn-icon-right:after,
+.ui-header .ui-btn-icon-right:after,
+.ui-footer .ui-btn-icon-right:after {
+	right: .37em;
+}
+.ui-btn-icon-notext:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after {
+	left: 50%;
+	margin-left: -11px;
+}
+.ui-btn-icon-top:after {
+	top: .5625em;
+}
+.ui-btn-icon-bottom:after {
+	top: auto;
+	bottom: .5625em;
+}
+/* Buttons in header position classes */
+.ui-header .ui-btn-left,
+.ui-header .ui-btn-right,
+.ui-btn-left > [class*="ui-"],
+.ui-btn-right > [class*="ui-"] {
+	margin: 0;
+}
+.ui-btn-left,
+.ui-btn-right {
+	position: absolute;
+	top: .24em;
+}
+.ui-btn-left {
+	left: .4em;
+}
+.ui-btn-right {
+	right: .4em;
+}
+.ui-btn-icon-notext.ui-btn-left {
+	top: .3125em;
+	left: .3125em;
+}
+.ui-btn-icon-notext.ui-btn-right {
+	top: .3125em;
+	right: .3125em;
+}
+/* Button elements */
+button.ui-btn,
+.ui-controlgroup-controls button.ui-btn-icon-notext {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	width: 100%;
+}
+button.ui-btn-inline,
+.ui-header button.ui-btn,
+.ui-footer button.ui-btn {
+	width: auto;
+}
+/* Firefox adds a 1px border in a button element. We negate this to make sure they have the same height as other buttons in controlgroups. */
+button.ui-btn::-moz-focus-inner {
+	border: 0;
+}
+button.ui-btn-icon-notext,
+.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn {
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+	width: 1.75em;
+}
+/* Form labels */
+.ui-mobile label,
+.ui-controlgroup-label {
+	display: block;
+	margin: 0 0 .4em;
+}
+/* Accessible content hiding */
+/* ui-hide-label deprecated in 1.4. TODO: Remove in 1.5 */
+.ui-hide-label > label,
+.ui-hide-label .ui-controlgroup-label,
+.ui-hide-label .ui-rangeslider label,
+.ui-hidden-accessible {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+/* Used for hiding elements by the filterable widget. You can also use this class to hide list items or buttons in controlgroups; this ensures correct corner styling. */
+.ui-screen-hidden {
+	display: none !important;
+}
+/* Transitions originally inspired by those from jQtouch, nice work, folks */
+.ui-mobile-viewport-transitioning,
+.ui-mobile-viewport-transitioning .ui-page {
+	width: 100%;
+	height: 100%;
+	overflow: hidden;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+}
+.ui-page-pre-in {
+	opacity: 0;
+}
+.in {
+	-webkit-animation-timing-function: ease-out;
+	-webkit-animation-duration: 350ms;
+	-moz-animation-timing-function: ease-out;
+	-moz-animation-duration: 350ms;
+	animation-timing-function: ease-out;
+	animation-duration: 350ms;
+}
+.out {
+	-webkit-animation-timing-function: ease-in;
+	-webkit-animation-duration: 225ms;
+	-moz-animation-timing-function: ease-in;
+	-moz-animation-duration: 225ms;
+	animation-timing-function: ease-in;
+	animation-duration: 225ms;
+}
+@-webkit-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-moz-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-webkit-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+@-moz-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+@keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+.fade.out {
+	opacity: 0;
+	-webkit-animation-duration: 125ms;
+	-webkit-animation-name: fadeout;
+	-moz-animation-duration: 125ms;
+	-moz-animation-name: fadeout;
+	animation-duration: 125ms;
+	animation-name: fadeout;
+}
+.fade.in {
+	opacity: 1;
+	-webkit-animation-duration: 225ms;
+	-webkit-animation-name: fadein;
+	-moz-animation-duration: 225ms;
+	-moz-animation-name: fadein;
+	animation-duration: 225ms;
+	animation-name: fadein;
+}
+.pop {
+	-webkit-transform-origin: 50% 50%;
+	-moz-transform-origin: 50% 50%;
+	transform-origin: 50% 50%;
+}
+.pop.in {
+	-webkit-transform: scale(1);
+	-webkit-animation-name: popin;
+	-webkit-animation-duration: 350ms;
+	-moz-transform: scale(1);
+	-moz-animation-name: popin;
+	-moz-animation-duration: 350ms;
+	transform: scale(1);
+	animation-name: popin;
+	animation-duration: 350ms;
+    opacity: 1;
+}
+.pop.out {
+	-webkit-animation-name: fadeout;
+	-webkit-animation-duration: 100ms;
+	-moz-animation-name: fadeout;
+	-moz-animation-duration: 100ms;
+	animation-name: fadeout;
+	animation-duration: 100ms;
+	opacity: 0;
+}
+.pop.in.reverse {
+	-webkit-animation-name: fadein;
+	-moz-animation-name: fadein;
+	animation-name: fadein;
+}
+.pop.out.reverse {
+	-webkit-transform: scale(.8);
+	-webkit-animation-name: popout;
+	-moz-transform: scale(.8);
+	-moz-animation-name: popout;
+	transform: scale(.8);
+	animation-name: popout;
+}
+@-webkit-keyframes popin {
+    from {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+}
+@-moz-keyframes popin {
+    from {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+}
+@keyframes popin {
+    from {
+        transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        transform: scale(1);
+        opacity: 1;
+    }
+}
+@-webkit-keyframes popout {
+    from {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+}
+@-moz-keyframes popout {
+    from {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+}
+@keyframes popout {
+    from {
+        transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        transform: scale(.8);
+        opacity: 0;
+    }
+}
+/* keyframes for slidein from sides */
+@-webkit-keyframes slideinfromright {
+    from { -webkit-transform: translate3d(100%,0,0); }
+    to { -webkit-transform: translate3d(0,0,0); }
+}
+@-moz-keyframes slideinfromright {
+    from { -moz-transform: translateX(100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromright {
+    from { transform: translateX(100%); }
+    to { transform: translateX(0); }
+}
+@-webkit-keyframes slideinfromleft {
+    from { -webkit-transform: translate3d(-100%,0,0); }
+    to { -webkit-transform: translate3d(0,0,0); }
+}
+@-moz-keyframes slideinfromleft {
+    from { -moz-transform: translateX(-100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromleft {
+    from { transform: translateX(-100%); }
+    to { transform: translateX(0); }
+}
+/* keyframes for slideout to sides */
+@-webkit-keyframes slideouttoleft {
+    from { -webkit-transform: translate3d(0,0,0); }
+    to { -webkit-transform: translate3d(-100%,0,0); }
+}
+@-moz-keyframes slideouttoleft {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(-100%); }
+}
+@keyframes slideouttoleft {
+    from { transform: translateX(0); }
+    to { transform: translateX(-100%); }
+}
+@-webkit-keyframes slideouttoright {
+    from { -webkit-transform: translate3d(0,0,0); }
+    to { -webkit-transform: translate3d(100%,0,0); }
+}
+@-moz-keyframes slideouttoright {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(100%); }
+}
+@keyframes slideouttoright {
+    from { transform: translateX(0); }
+    to { transform: translateX(100%); }
+}
+.slide.out, .slide.in {
+	-webkit-animation-timing-function: ease-out;
+	-webkit-animation-duration: 350ms;
+	-moz-animation-timing-function: ease-out;
+	-moz-animation-duration: 350ms;
+	animation-timing-function: ease-out;
+	animation-duration: 350ms;
+}
+.slide.out {
+	-webkit-transform: translate3d(-100%,0,0);
+	-webkit-animation-name: slideouttoleft;
+	-moz-transform: translateX(-100%);
+	-moz-animation-name: slideouttoleft;
+	transform: translateX(-100%);
+	animation-name: slideouttoleft;
+}
+.slide.in {
+	-webkit-transform: translate3d(0,0,0);
+	-webkit-animation-name: slideinfromright;
+	-moz-transform: translateX(0);
+	-moz-animation-name: slideinfromright;
+	transform: translateX(0);
+	animation-name: slideinfromright;
+}
+.slide.out.reverse {
+	-webkit-transform: translate3d(100%,0,0);
+	-webkit-animation-name: slideouttoright;
+	-moz-transform: translateX(100%);
+	-moz-animation-name: slideouttoright;
+	transform: translateX(100%);
+	animation-name: slideouttoright;
+}
+.slide.in.reverse {
+	-webkit-transform: translate3d(0,0,0);
+	-webkit-animation-name: slideinfromleft;
+	-moz-transform: translateX(0);
+	-moz-animation-name: slideinfromleft;
+	transform: translateX(0);
+	animation-name: slideinfromleft;
+}
+.slidefade.out {
+	-webkit-transform: translateX(-100%);
+	-webkit-animation-name: slideouttoleft;
+	-webkit-animation-duration: 225ms;
+	-moz-transform: translateX(-100%);
+	-moz-animation-name: slideouttoleft;
+	-moz-animation-duration: 225ms;
+	transform: translateX(-100%);
+	animation-name: slideouttoleft;
+	animation-duration: 225ms;
+}
+.slidefade.in {
+	-webkit-transform: translateX(0);
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateX(0);
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 200ms;
+	transform: translateX(0);
+	animation-name: fadein;
+	animation-duration: 200ms;
+}
+.slidefade.out.reverse {
+	-webkit-transform: translateX(100%);
+	-webkit-animation-name: slideouttoright;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateX(100%);
+	-moz-animation-name: slideouttoright;
+	-moz-animation-duration: 200ms;
+	transform: translateX(100%);
+	animation-name: slideouttoright;
+	animation-duration: 200ms;
+}
+.slidefade.in.reverse {
+	-webkit-transform: translateX(0);
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateX(0);
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 200ms;
+	transform: translateX(0);
+	animation-name: fadein;
+	animation-duration: 200ms;
+}
+/* slide down */
+.slidedown.out {
+	-webkit-animation-name: fadeout;
+	-webkit-animation-duration: 100ms;
+	-moz-animation-name: fadeout;
+	-moz-animation-duration: 100ms;
+	animation-name: fadeout;
+	animation-duration: 100ms;
+}
+.slidedown.in {
+	-webkit-transform: translateY(0);
+	-webkit-animation-name: slideinfromtop;
+	-webkit-animation-duration: 250ms;
+	-moz-transform: translateY(0);
+	-moz-animation-name: slideinfromtop;
+	-moz-animation-duration: 250ms;
+	transform: translateY(0);
+	animation-name: slideinfromtop;
+	animation-duration: 250ms;
+}
+.slidedown.in.reverse {
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 150ms;
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 150ms;
+	animation-name: fadein;
+	animation-duration: 150ms;
+}
+.slidedown.out.reverse {
+	-webkit-transform: translateY(-100%);
+	-webkit-animation-name: slideouttotop;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateY(-100%);
+	-moz-animation-name: slideouttotop;
+	-moz-animation-duration: 200ms;
+	transform: translateY(-100%);
+	animation-name: slideouttotop;
+	animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfromtop {
+    from { -webkit-transform: translateY(-100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfromtop {
+    from { -moz-transform: translateY(-100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfromtop {
+    from { transform: translateY(-100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttotop {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(-100%); }
+}
+@-moz-keyframes slideouttotop {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(-100%); }
+}
+@keyframes slideouttotop {
+    from { transform: translateY(0); }
+    to { transform: translateY(-100%); }
+}
+/* slide up */
+.slideup.out {
+	-webkit-animation-name: fadeout;
+	-webkit-animation-duration: 100ms;
+	-moz-animation-name: fadeout;
+	-moz-animation-duration: 100ms;
+	animation-name: fadeout;
+	animation-duration: 100ms;
+}
+.slideup.in {
+	-webkit-transform: translateY(0);
+	-webkit-animation-name: slideinfrombottom;
+	-webkit-animation-duration: 250ms;
+	-moz-transform: translateY(0);
+	-moz-animation-name: slideinfrombottom;
+	-moz-animation-duration: 250ms;
+	transform: translateY(0);
+	animation-name: slideinfrombottom;
+	animation-duration: 250ms;
+}
+.slideup.in.reverse {
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 150ms;
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 150ms;
+	animation-name: fadein;
+	animation-duration: 150ms;
+}
+.slideup.out.reverse {
+	-webkit-transform: translateY(100%);
+	-webkit-animation-name: slideouttobottom;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateY(100%);
+	-moz-animation-name: slideouttobottom;
+	-moz-animation-duration: 200ms;
+	transform: translateY(100%);
+	animation-name: slideouttobottom;
+	animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfrombottom {
+    from { -webkit-transform: translateY(100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfrombottom {
+    from { -moz-transform: translateY(100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfrombottom {
+    from { transform: translateY(100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttobottom {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(100%); }
+}
+@-moz-keyframes slideouttobottom {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(100%); }
+}
+@keyframes slideouttobottom {
+    from { transform: translateY(0); }
+    to { transform: translateY(100%); }
+}
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-flip {
+	-webkit-perspective: 1000;
+	-moz-perspective: 1000;
+	perspective: 1000;
+	position: absolute;
+}
+.flip {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+	-moz-backface-visibility: hidden;
+	-moz-transform: translateX(0);
+	backface-visibility: hidden;
+	transform: translateX(0);
+}
+.flip.out {
+	-webkit-transform: rotateY(-90deg) scale(.9);
+	-webkit-animation-name: flipouttoleft;
+	-webkit-animation-duration: 175ms;
+	-moz-transform: rotateY(-90deg) scale(.9);
+	-moz-animation-name: flipouttoleft;
+	-moz-animation-duration: 175ms;
+	transform: rotateY(-90deg) scale(.9);
+	animation-name: flipouttoleft;
+	animation-duration: 175ms;
+}
+.flip.in {
+	-webkit-animation-name: flipintoright;
+	-webkit-animation-duration: 225ms;
+	-moz-animation-name: flipintoright;
+	-moz-animation-duration: 225ms;
+	animation-name: flipintoright;
+	animation-duration: 225ms;
+}
+.flip.out.reverse {
+	-webkit-transform: rotateY(90deg) scale(.9);
+	-webkit-animation-name: flipouttoright;
+	-moz-transform: rotateY(90deg) scale(.9);
+	-moz-animation-name: flipouttoright;
+	transform: rotateY(90deg) scale(.9);
+	animation-name: flipouttoright;
+}
+.flip.in.reverse {
+	-webkit-animation-name: flipintoleft;
+	-moz-animation-name: flipintoleft;
+	animation-name: flipintoleft;
+}
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-turn {
+	-webkit-perspective: 200px;
+	-moz-perspective: 200px;
+	-ms-perspective: 200px;
+	perspective: 200px;
+	position: absolute;
+}
+.turn {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+	-webkit-transform-origin: 0;
+	
+	-moz-backface-visibility: hidden;
+	-moz-transform: translateX(0);
+	-moz-transform-origin: 0;
+	
+	backface-visibility :hidden;
+	transform: translateX(0);
+	transform-origin: 0;
+}
+.turn.out {
+	-webkit-transform: rotateY(-90deg) scale(.9);
+	-webkit-animation-name: flipouttoleft;
+	-webkit-animation-duration: 125ms;
+	-moz-transform: rotateY(-90deg) scale(.9);
+	-moz-animation-name: flipouttoleft;
+	-moz-animation-duration: 125ms;
+	transform: rotateY(-90deg) scale(.9);
+	animation-name: flipouttoleft;
+	animation-duration: 125ms;
+}
+.turn.in {
+	-webkit-animation-name: flipintoright;
+	-webkit-animation-duration: 250ms;
+	-moz-animation-name: flipintoright;
+	-moz-animation-duration: 250ms;
+	animation-name: flipintoright;
+	animation-duration: 250ms;
+	
+}
+.turn.out.reverse {
+	-webkit-transform: rotateY(90deg) scale(.9);
+	-webkit-animation-name: flipouttoright;
+	-moz-transform: rotateY(90deg) scale(.9);
+	-moz-animation-name: flipouttoright;
+	transform: rotateY(90deg) scale(.9);
+	animation-name: flipouttoright;
+}
+.turn.in.reverse {
+	-webkit-animation-name: flipintoleft;
+	-moz-animation-name: flipintoleft;
+	animation-name: flipintoleft;
+}
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* flow transition */
+.flow {
+	-webkit-transform-origin: 50% 30%;
+	-webkit-box-shadow: 0 0 20px rgba(0,0,0,.4);
+	-moz-transform-origin: 50% 30%;	
+	-moz-box-shadow: 0 0 20px rgba(0,0,0,.4);
+	transform-origin: 50% 30%;	
+	box-shadow: 0 0 20px rgba(0,0,0,.4);
+}
+.ui-dialog.flow {
+	-webkit-transform-origin: none;
+	-webkit-box-shadow: none;
+	-moz-transform-origin: none;	
+	-moz-box-shadow: none;
+	transform-origin: none;	
+	box-shadow: none;
+}
+.flow.out {
+	-webkit-transform: translateX(-100%) scale(.7);
+	-webkit-animation-name: flowouttoleft;
+	-webkit-animation-timing-function: ease;
+	-webkit-animation-duration: 350ms;
+	-moz-transform: translateX(-100%) scale(.7);
+	-moz-animation-name: flowouttoleft;
+	-moz-animation-timing-function: ease;
+	-moz-animation-duration: 350ms;
+	transform: translateX(-100%) scale(.7);
+	animation-name: flowouttoleft;
+	animation-timing-function: ease;
+	animation-duration: 350ms;
+}
+.flow.in {
+	-webkit-transform: translateX(0) scale(1);
+	-webkit-animation-name: flowinfromright;
+	-webkit-animation-timing-function: ease;
+	-webkit-animation-duration: 350ms;
+	-moz-transform: translateX(0) scale(1);
+	-moz-animation-name: flowinfromright;
+	-moz-animation-timing-function: ease;
+	-moz-animation-duration: 350ms;
+	transform: translateX(0) scale(1);
+	animation-name: flowinfromright;
+	animation-timing-function: ease;
+	animation-duration: 350ms;
+}
+.flow.out.reverse {
+	-webkit-transform: translateX(100%);
+	-webkit-animation-name: flowouttoright;
+	-moz-transform: translateX(100%);
+	-moz-animation-name: flowouttoright;
+	transform: translateX(100%);
+	animation-name: flowouttoright;
+}
+.flow.in.reverse {
+	-webkit-animation-name: flowinfromleft;
+	-moz-animation-name: flowinfromleft;
+	animation-name: flowinfromleft;
+}
+@-webkit-keyframes flowouttoleft {
+    0% { -webkit-transform: translateX(0) scale(1); }
+	60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(-100%) scale(.7); }
+}
+@-moz-keyframes flowouttoleft {
+    0% { -moz-transform: translateX(0) scale(1); }
+	60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(-100%) scale(.7); }
+}
+@keyframes flowouttoleft {
+    0% { transform: translateX(0) scale(1); }
+	60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(-100%) scale(.7); }
+}
+@-webkit-keyframes flowouttoright {
+    0% { -webkit-transform: translateX(0) scale(1); }
+	60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform:  translateX(100%) scale(.7); }
+}
+@-moz-keyframes flowouttoright {
+    0% { -moz-transform: translateX(0) scale(1); }
+	60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(100%) scale(.7); }
+}
+@keyframes flowouttoright {
+    0% { transform: translateX(0) scale(1); }
+	60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(100%) scale(.7); }
+}
+@-webkit-keyframes flowinfromleft {
+    0% { -webkit-transform: translateX(-100%) scale(.7); }
+	30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromleft {
+    0% { -moz-transform: translateX(-100%) scale(.7); }
+	30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromleft {
+    0% { transform: translateX(-100%) scale(.7); }
+	30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+@-webkit-keyframes flowinfromright {
+    0% { -webkit-transform: translateX(100%) scale(.7); }
+	30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromright {
+    0% { -moz-transform: translateX(100%) scale(.7); }
+	30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromright {
+    0% { transform: translateX(100%) scale(.7); }
+	30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+.ui-field-contain,
+.ui-mobile fieldset.ui-field-contain {
+	display: block;
+	position: relative;
+	overflow: visible;
+	clear: both;
+	padding: .8em 0;
+}
+.ui-field-contain > label ~ [class*="ui-"],
+.ui-field-contain .ui-controlgroup-controls {
+	margin: 0;
+}
+.ui-field-contain:last-child {
+	border-bottom-width: 0;
+}
+@media (min-width: 28em) {
+	.ui-field-contain,
+	.ui-mobile fieldset.ui-field-contain {
+		padding: 0;
+		margin: 1em 0;
+		border-bottom-width: 0;
+	}
+	.ui-field-contain:before,
+	.ui-field-contain:after {
+		content: "";
+		display: table;
+	}
+	.ui-field-contain:after {
+		clear: both;
+	}
+	.ui-field-contain > label,
+	.ui-field-contain .ui-controlgroup-label,
+	.ui-field-contain > .ui-rangeslider > label {
+		float: left;
+		width: 20%;
+		margin: .5em 2% 0 0;
+	}
+	.ui-popup .ui-field-contain > label,
+	.ui-popup .ui-field-contain .ui-controlgroup-label,
+	.ui-popup .ui-field-contain > .ui-rangeslider > label {
+		float: none;
+		width: auto;
+		margin: 0 0 .4em;
+	}
+	.ui-field-contain > label ~ [class*="ui-"],
+	.ui-field-contain .ui-controlgroup-controls {
+		float: left;
+		width: 78%;
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		box-sizing: border-box;
+	}
+	/* ui-hide-label deprecated in 1.4. TODO: Remove in 1.5 */
+	.ui-hide-label > label ~ [class*="ui-"],
+	.ui-hide-label .ui-controlgroup-controls,
+	.ui-popup .ui-field-contain > label ~ [class*="ui-"],
+	.ui-popup .ui-field-contain .ui-controlgroup-controls {
+		float: none;
+		width: 100%;
+	}
+	.ui-field-contain > label ~ .ui-btn-inline {
+		width: auto;
+		margin-right: .625em;
+	}
+	.ui-field-contain > label ~ .ui-btn-inline.ui-btn-icon-notext {
+		width: 1.75em;
+	}
+}
+/* content configurations. */
+.ui-grid-a,
+.ui-grid-b,
+.ui-grid-c,
+.ui-grid-d,
+.ui-grid-solo {
+	overflow: hidden;
+}
+.ui-block-a,
+.ui-block-b,
+.ui-block-c,
+.ui-block-d,
+.ui-block-e {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	float: left;
+	min-height: 1px;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+}
+/* force new row */
+.ui-block-a {
+	clear: left;
+}
+ul.ui-grid-a,
+ul.ui-grid-b,
+ul.ui-grid-c,
+ul.ui-grid-d,
+ul.ui-grid-solo,
+li.ui-block-a,
+li.ui-block-b,
+li.ui-block-c,
+li.ui-block-d,
+li.ui-block-e {
+	margin-left: 0;
+	margin-right: 0;
+	padding: 0;
+	list-style: none;
+}
+/* No margin in grids for 100% width button elements until we can use max-width: fill-available; */
+[class*="ui-block-"] > button.ui-btn {
+	margin-right: 0;
+	margin-left: 0;
+}
+[class*="ui-block-"] > .ui-btn,
+[class*="ui-block-"] > .ui-select,
+[class*="ui-block-"] > .ui-checkbox,
+[class*="ui-block-"] > .ui-radio,
+[class*="ui-block-"] > button.ui-btn-inline,
+[class*="ui-block-"] > button.ui-btn-icon-notext,
+.ui-header [class*="ui-block-"] > button.ui-btn,
+.ui-footer [class*="ui-block-"] > button.ui-btn {
+	margin-right: .3125em;
+	margin-left: .3125em;
+}
+.ui-grid-a > .ui-block-a,
+.ui-grid-a > .ui-block-b {
+	/* width: 49.95%; IE7 */
+	/* margin-right: -.5px; BB5 */
+	width: 50%;
+}
+.ui-grid-b > .ui-block-a,
+.ui-grid-b > .ui-block-b,
+.ui-grid-b > .ui-block-c {
+	/* width: 33.25%; IE7 */
+	/* margin-right: -.5px; BB5 */
+	width: 33.333%;
+}
+.ui-grid-c > .ui-block-a,
+.ui-grid-c > .ui-block-b,
+.ui-grid-c > .ui-block-c,
+.ui-grid-c > .ui-block-d {
+	/* width: 24.925%; IE7 */
+	/* margin-right: -.5px; BB5 */
+	width: 25%;
+}
+.ui-grid-d > .ui-block-a,
+.ui-grid-d > .ui-block-b,
+.ui-grid-d > .ui-block-c,
+.ui-grid-d > .ui-block-d,
+.ui-grid-d > .ui-block-e {
+	/* width: 19.925%; IE7 */
+	width: 20%;
+}
+.ui-grid-solo > .ui-block-a {
+	width: 100%;
+	float: none; 
+}
+/* preset breakpoint to switch to stacked grid styles below 35em (560px) */
+@media (max-width: 35em) {
+	.ui-responsive > .ui-block-a,
+	.ui-responsive > .ui-block-b,
+	.ui-responsive > .ui-block-c,
+	.ui-responsive > .ui-block-d,
+	.ui-responsive > .ui-block-e {
+		width: 100%; 
+		float: none; 
+	}
+}
+/* fixed page header & footer configuration */
+.ui-header-fixed,
+.ui-footer-fixed {
+	left: 0;
+	right: 0;
+	width: 100%;
+	position: fixed;
+	z-index: 1000;
+}
+.ui-header-fixed {
+	top: -1px;
+	padding-top: 1px;
+}
+.ui-header-fixed.ui-fixed-hidden {
+	top: 0;
+	padding-top: 0;
+}
+.ui-header-fixed .ui-btn-left,
+.ui-header-fixed .ui-btn-right {
+	margin-top: 1px;
+}
+.ui-header-fixed.ui-fixed-hidden .ui-btn-left,
+.ui-header-fixed.ui-fixed-hidden .ui-btn-right {
+	margin-top: 0;
+}
+.ui-footer-fixed {
+	bottom: -1px;
+	padding-bottom: 1px;
+}
+.ui-footer-fixed.ui-fixed-hidden {
+	bottom: 0;
+	padding-bottom: 0;
+}
+.ui-header-fullscreen,
+.ui-footer-fullscreen {
+	filter: Alpha(Opacity=90);
+	opacity: .9;
+}
+/* updatePagePadding() will update the padding to actual height of header and footer. */
+.ui-page-header-fixed {
+	padding-top: 2.8125em;
+}
+.ui-page-footer-fixed {
+	padding-bottom: 2.8125em;
+}
+.ui-page-header-fullscreen > .ui-content,
+.ui-page-footer-fullscreen > .ui-content {
+	padding: 0;
+}
+.ui-fixed-hidden {
+	position: absolute;
+}
+/* Tap toggle: hide external fixed footer. See issue #6604 */
+.ui-footer-fixed.ui-fixed-hidden {
+  display: none;
+}
+.ui-page .ui-footer-fixed.ui-fixed-hidden {
+  display: block
+}
+.ui-page-header-fullscreen .ui-fixed-hidden,
+.ui-page-footer-fullscreen .ui-fixed-hidden {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-header-fixed .ui-btn,
+.ui-footer-fixed .ui-btn { 
+	z-index: 10;
+}
+/* workarounds for other widgets */
+.ui-android-2x-fixed .ui-li-has-thumb {
+	-webkit-transform: translate3d(0,0,0);
+}
+.ui-navbar {
+	max-width: 100%;
+}
+.ui-navbar ul:before,
+.ui-navbar ul:after {
+	content: "";
+	display: table;
+}
+.ui-navbar ul:after {
+	clear: both;
+}
+.ui-navbar ul {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+	position: relative;
+	display: block;
+	border: 0;
+	max-width: 100%;
+	overflow: visible;
+}
+.ui-navbar li .ui-btn {
+	font-size: 12.5px;
+	display: block;
+	margin: 0;
+	border-right-width: 0;
+}
+.ui-header .ui-navbar li button.ui-btn,
+.ui-footer .ui-navbar li button.ui-btn {
+	margin: 0;
+	width: 100%;
+}
+.ui-navbar .ui-btn:focus {
+	z-index: 1;
+}
+/* fixes gaps caused by subpixel problem */
+.ui-navbar li:last-child .ui-btn {
+	margin-right: -4px;
+}
+.ui-navbar li:last-child .ui-btn:after {
+	margin-right: 4px;
+}
+.ui-content .ui-navbar li:last-child .ui-btn,
+.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn {
+	border-right-width: 1px;
+	margin-right: 0;
+}
+.ui-content .ui-navbar li:last-child .ui-btn:after,
+.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn:after {
+	margin-right: 0;
+}
+.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn {
+	border-right-width: 1px;
+	margin-right: -1px;
+}
+.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn:after {
+	margin-right: 1px;
+}
+.ui-navbar .ui-grid-duo .ui-btn {
+	border-top-width: 0;
+}
+.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn {
+	border-top-width: 1px;
+}
+.ui-header .ui-navbar .ui-btn,
+.ui-footer .ui-navbar .ui-btn {
+	border-top-width: 0;
+	border-bottom-width: 0;
+}
+.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn {
+	border-top-width: 0;
+}
+.ui-header .ui-title ~ .ui-navbar .ui-btn,
+.ui-footer .ui-title ~ .ui-navbar .ui-btn,
+.ui-header .ui-navbar .ui-grid-duo .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-btn,
+.ui-header .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-footer .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-header .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn,
+.ui-footer .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn {
+	border-top-width: 1px;
+}
+/* Hide the native input element */
+.ui-input-btn input {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	padding: 0;
+	border: 0;
+	outline: 0;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	cursor: pointer;
+	background: #fff;
+	background: rgba(255,255,255,0);
+	filter: Alpha(Opacity=0);
+	opacity: .1;
+	font-size: 1px;
+	text-indent: -9999px;
+	z-index: 2;
+}
+/* Fixes IE/WP filter alpha opacity bugs */
+.ui-input-btn.ui-state-disabled input {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-collapsible {
+	margin: 0 -1em;
+}
+.ui-collapsible-inset,
+.ui-collapsible-set {
+	margin: .5em 0;
+}
+.ui-collapsible-heading {
+	display: block;
+	margin: 0;
+	padding: 0;
+	position: relative;
+}
+.ui-collapsible-heading .ui-btn {
+	text-align: left;
+	margin: 0;
+	border-left-width: 0;
+	border-right-width: 0;
+}
+.ui-collapsible-heading .ui-btn-icon-top,
+.ui-collapsible-heading .ui-btn-icon-bottom {
+	text-align: center;
+}
+.ui-collapsible-inset .ui-collapsible-heading .ui-btn {
+	border-right-width: 1px;
+	border-left-width: 1px;
+}
+.ui-collapsible-collapsed + .ui-collapsible:not(.ui-collapsible-inset) > .ui-collapsible-heading .ui-btn {
+	border-top-width: 0;
+}
+.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn {
+	border-top-width: 1px;
+}
+.ui-collapsible-heading-status {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-collapsible-content {
+	display: block;
+	margin: 0;	
+	padding: .5em 1em;
+}
+.ui-collapsible-themed-content .ui-collapsible-content {
+	border-left-width: 0;
+	border-right-width: 0;
+	border-top-width: 0;
+	border-bottom-width: 1px;
+	border-style: solid;
+}
+.ui-collapsible-inset.ui-collapsible-themed-content .ui-collapsible-content {
+	border-left-width: 1px;
+	border-right-width: 1px;
+}
+.ui-collapsible-inset .ui-collapsible-content {
+	margin: 0;
+}
+.ui-collapsible-content-collapsed {
+	display: none;
+}
+.ui-collapsible-set > .ui-collapsible.ui-corner-all {
+	-webkit-border-radius: 0;
+	border-radius: 0;
+}
+.ui-collapsible-heading,
+.ui-collapsible-heading > .ui-btn {
+	-webkit-border-radius: inherit;	
+	border-radius: inherit;	
+}
+.ui-collapsible-set .ui-collapsible.ui-first-child {
+	-webkit-border-top-right-radius: inherit;	
+	border-top-right-radius: inherit;
+	-webkit-border-top-left-radius: inherit;	
+	border-top-left-radius: inherit;		
+}
+.ui-collapsible-content,
+.ui-collapsible-set .ui-collapsible.ui-last-child {
+	-webkit-border-bottom-right-radius: inherit;	
+	border-bottom-right-radius: inherit;
+	-webkit-border-bottom-left-radius: inherit;	
+	border-bottom-left-radius: inherit;		
+}
+.ui-collapsible-themed-content:not(.ui-collapsible-collapsed) > .ui-collapsible-heading {
+	-webkit-border-bottom-right-radius: 0;	
+	border-bottom-right-radius: 0;
+	-webkit-border-bottom-left-radius: 0;	
+	border-bottom-left-radius: 0;		
+}
+.ui-collapsible-set .ui-collapsible {
+	margin: -1px -1em 0;
+}
+.ui-collapsible-set .ui-collapsible-inset {
+	margin: -1px 0 0;
+}
+.ui-collapsible-set .ui-collapsible.ui-first-child {
+	margin-top: 0;
+}
+.ui-controlgroup,
+fieldset.ui-controlgroup {
+	padding: 0;
+	margin: .5em 0;
+}
+.ui-field-contain .ui-controlgroup,
+.ui-field-contain fieldset.ui-controlgroup {
+	margin: 0;
+}
+.ui-mini .ui-controlgroup-label {
+	font-size: 16px;
+}
+.ui-controlgroup.ui-mini .ui-btn-icon-notext,
+.ui-controlgroup .ui-mini.ui-btn-icon-notext {
+	font-size: inherit;
+}
+.ui-controlgroup-controls .ui-btn,
+.ui-controlgroup-controls .ui-checkbox,
+.ui-controlgroup-controls .ui-radio,
+.ui-controlgroup-controls .ui-select {
+	margin: 0;
+}
+.ui-controlgroup-controls .ui-btn:focus,
+.ui-controlgroup-controls .ui-btn.ui-focus {
+	z-index: 1;
+}
+.ui-controlgroup-controls li {
+	list-style: none;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls {
+	display: inline-block;
+	vertical-align: middle;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls:before,
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after {
+	content: "";
+	display: table;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after {
+	clear: both;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls > .ui-btn,
+.ui-controlgroup-horizontal .ui-controlgroup-controls li > .ui-btn,
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-checkbox,
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-radio,
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-select {
+	float: left;
+	clear: none;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn,
+.ui-controlgroup-controls .ui-btn-icon-notext {
+	width: auto;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn-icon-notext,
+.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn-icon-notext {
+	width: 1.5em;
+}
+ .ui-controlgroup-controls .ui-btn-icon-notext {
+	height: auto;
+	padding: .7em 1em;
+}
+.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn {
+	border-bottom-width: 0;
+}
+.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn.ui-last-child {
+	border-bottom-width: 1px;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn {
+	border-right-width: 0;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn.ui-last-child {
+	border-right-width: 1px;
+}
+.ui-controlgroup-controls .ui-btn-corner-all,
+.ui-controlgroup-controls .ui-btn.ui-corner-all {
+	-webkit-border-radius: 0;
+	border-radius: 0;
+}
+.ui-controlgroup-controls,
+.ui-controlgroup-controls .ui-radio,
+.ui-controlgroup-controls .ui-checkbox,
+.ui-controlgroup-controls .ui-select,
+.ui-controlgroup-controls li {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-first-child {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-last-child {
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-first-child {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-last-child {
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+.ui-controlgroup-controls a.ui-shadow:not(:focus),
+.ui-controlgroup-controls button.ui-shadow:not(:focus),
+.ui-controlgroup-controls div.ui-shadow:not(.ui-focus) {
+	-moz-box-shadow: none;
+	-webkit-box-shadow: none;
+	box-shadow: none;
+}
+/* Fixes legend not wrapping on IE10 */
+.ui-controlgroup-label legend {
+	max-width: 100%;
+}
+.ui-controlgroup-controls > label {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-dialog {
+	 background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */
+}
+.ui-dialog-contain {
+	width: 92.5%;
+	max-width: 500px;
+	margin: 10% auto 1em auto;
+	padding: 0;
+	position: relative;
+	top: -1em;
+}
+.ui-dialog-contain > .ui-header, 
+.ui-dialog-contain > .ui-content, 
+.ui-dialog-contain > .ui-footer { 
+	display: block;
+	position: relative; 
+	width: auto;
+	margin: 0;
+}
+.ui-dialog-contain > .ui-header {
+	overflow: hidden;
+	z-index: 10; 
+	padding: 0;
+	border-top-width: 0;
+}
+.ui-dialog-contain > .ui-footer {
+	z-index: 10; 
+	padding: 0 1em; 
+	border-bottom-width: 0;
+}
+.ui-popup-open .ui-header-fixed,
+.ui-popup-open .ui-footer-fixed {
+	position: absolute !important; /* See issues #4816, #4844 and #4874 and popup.js */
+}
+.ui-popup-screen {
+	background-image: url("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="); /* Necessary to set some form of background to ensure element is clickable in IE6/7. While legacy IE won't understand the data-URI'd image, it ensures no additional requests occur in all other browsers with little overhead. */
+	top: 0;
+	left: 0;
+	right: 0;
+	bottom: 1px;
+	position: absolute;
+	filter: Alpha(Opacity=0);
+	opacity: 0;
+	z-index: 1099;
+}
+.ui-popup-screen.in {
+	opacity: 0.5;
+	filter: Alpha(Opacity=50);
+}
+.ui-popup-screen.out {
+	opacity: 0;
+	filter: Alpha(Opacity=0);
+}
+.ui-popup-container {
+	z-index: 1100;
+	display: inline-block;
+	position: absolute;
+	padding: 0;
+	outline: 0;
+}
+.ui-popup {
+	position: relative;
+}
+.ui-popup.ui-body-inherit {
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-popup-hidden {
+	left: 0;
+	top: 0;
+	position: absolute !important;
+	visibility: hidden;
+}
+.ui-popup-truncate {
+	height: 1px;
+	width: 1px;
+	margin: -1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-popup.ui-content,
+.ui-popup .ui-content {
+	overflow: visible;
+}
+.ui-popup > .ui-header {
+	border-top-width: 0;
+}
+.ui-popup > .ui-footer {
+	border-bottom-width: 0;
+}
+.ui-popup > p,
+.ui-popup > h1,
+.ui-popup > h2,
+.ui-popup > h3,
+.ui-popup > h4,
+.ui-popup > h5,
+.ui-popup > h6 {
+	margin: .5em .4375em;
+}
+.ui-popup > span {
+	display: block;
+	margin: .5em .4375em;
+}
+.ui-popup-container .ui-content > p,
+.ui-popup-container .ui-content > h1,
+.ui-popup-container .ui-content > h2,
+.ui-popup-container .ui-content > h3,
+.ui-popup-container .ui-content > h4,
+.ui-popup-container .ui-content > h5,
+.ui-popup-container .ui-content > h6 {
+	margin: .5em 0;
+}
+.ui-popup-container .ui-content > span {
+	margin: 0;
+}
+.ui-popup-container .ui-content > p:first-child,
+.ui-popup-container .ui-content > h1:first-child,
+.ui-popup-container .ui-content > h2:first-child,
+.ui-popup-container .ui-content > h3:first-child,
+.ui-popup-container .ui-content > h4:first-child,
+.ui-popup-container .ui-content > h5:first-child,
+.ui-popup-container .ui-content > h6:first-child {
+	margin-top: 0;
+}
+.ui-popup-container .ui-content > p:last-child,
+.ui-popup-container .ui-content > h1:last-child,
+.ui-popup-container .ui-content > h2:last-child,
+.ui-popup-container .ui-content > h3:last-child,
+.ui-popup-container .ui-content > h4:last-child,
+.ui-popup-container .ui-content > h5:last-child,
+.ui-popup-container .ui-content > h6:last-child {
+	margin-bottom: 0;
+}
+.ui-popup > img {
+	max-width: 100%;
+	max-height: 100%;
+	vertical-align: middle;
+}
+.ui-popup:not(.ui-content) > img:only-child,
+.ui-popup:not(.ui-content) > .ui-btn-left:first-child + img:last-child,
+.ui-popup:not(.ui-content) > .ui-btn-right:first-child + img:last-child {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+.ui-popup iframe {
+	vertical-align: middle;
+}
+.ui-popup > .ui-btn-left,
+.ui-popup > .ui-btn-right {
+	position: absolute; 
+	top: -11px;
+	margin: 0;
+	z-index: 1101;
+}
+.ui-popup > .ui-btn-left {
+	left: -11px;
+}
+.ui-popup > .ui-btn-right {
+	right: -11px;
+}
+/* Dimensions related to the popup arrow
+-----------------------------------------------------------------------------------------------------------*/
+/* desired triangle height: 10px */
+/**
+ * guide for the arrow - its width, height, and offset are theme-dependent and
+ * should be expessed as left, right, top, bottom, so that the element bearing
+ * such a class becomes stretched inside its parent position: relative element.
+ * The left/top/right/bottom specified below should reflect the corresponding
+ * border radii and so it leaves room for the shadow:
+ *     ..--------------------..
+ *   ."        ^ top           ".
+ *  /          v                 \
+ * |     +------------------+     |
+ * |     |                  |     |
+ * | left|                  |right|
+ * |<--->|                  |<--->|
+ * |     +------------------+     |
+ *  \          ^                 /
+ *   `.        v bottom        .'
+ *     ""--------------------""
+ * The idea is that the top/left of the arrow container box does not move to a
+ * coordinate smaller than the top/left of the guide and the right/bottom of
+ * the arrow container box does not move to a coordinate larger than the
+ * bottom/right of the guide. This will help us avoid the following situation:
+ *        ..--------------------..
+ *      ."        ^ top           ".
+ *   /|/          v                 \
+ *  / |     +------------------+     |
+ *  \ |     |                  |     |
+ *   \| left|                  |right|
+ *    |<--->|                  |<--->|
+ *    |     +------------------+     |
+ *     \          ^                 /
+ *      `.        v bottom        .'
+ *        ""--------------------""
+ * The arrow should not receive a top/left coordinate such that it is too close
+ * to one of the corners, because then at first the shadow of the arrow and,
+ * given a coordinate even closer to the corner, even the body of the arrow will
+ * "stick out" of the corner of the popup. The guide provides a hint to the
+ * arrow positioning code as to which range of values is acceptable for the
+ * arrow container's top/left coordinate.
+ **/
+.ui-popup-arrow-container {
+	width: 20px;
+	height: 20px;
+}
+/* aside from the "infinities" (-1000,2000), triangle height is used */
+.ui-popup-arrow-container.ui-popup-arrow-l {
+	left: -10px;
+	clip: rect(-1000px,10px,2000px,-1000px);
+}
+.ui-popup-arrow-container.ui-popup-arrow-t {
+	top: -10px;
+	clip: rect(-1000px,2000px,10px,-1000px);
+}
+.ui-popup-arrow-container.ui-popup-arrow-r {
+	right: -10px;
+	clip: rect(-1000px,2000px,2000px,10px);
+}
+.ui-popup-arrow-container.ui-popup-arrow-b {
+	bottom: -10px;
+	clip: rect(10px,2000px,1000px,-1000px);
+}
+/**
+ * For each side, the arrow is twice the desired size and its corner is aligned
+ * with the edge of the container:
+ *                                           
+ *           /\         /\                +----+       /\
+ *          /  \       /  \               | /\ |top   /  \
+ *      +----+  \     /  +----+       +-->|/  \|     /    \
+ *  left| /  |   \   /   |  \ |right  |   |    |    /      \
+ *      |/   |    \ /    |   \|       |  /|    |\  /        \
+ *      |\   |    / \    |   /|       | / +----+ \ \ +----+ /
+ *      | \  |   /   \   |  / |       | \        /  \|    |/
+ *      +----+  /     \  +----+       |  \      /    |    |
+ *       ^  \  /       \  /  ^        |   \    /  +->|\  /|
+ *       |   \/         \/   |        |    \  /   |  | \/ |bottom
+ *       |                   |        |     \/    |  +----+
+ *       +-------------------+--------+-----------+
+ *                           |
+ *                    arrow container
+ *                     (clips arrow)
+ **/
+.ui-popup-arrow-container .ui-popup-arrow {
+	/* (4*desired triangle height)/sqrt(2) - does not account for border - centred within the outer rectangle */
+	width: 28.284271247px;
+	height: 28.284271247px;
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-popup-arrow-container.ui-popup-arrow-t .ui-popup-arrow {
+	left: -4.142135623px;
+	top: 5.857864376px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-b .ui-popup-arrow {
+	left: -4.142135623px;
+	top: -14.142135623px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-l .ui-popup-arrow {
+	left: 5.857864376px;
+	top: -4.142135623px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-r .ui-popup-arrow {
+	left: -14.142135623px;
+	top: -4.142135623px;
+}
+/* Fix rotation center for oldIE - see http://www.useragentman.com/IETransformsTranslator/ */
+.ui-popup-arrow-container.ui-popup-arrow-t.ie .ui-popup-arrow {
+    margin-left: -5.857864376269049px;
+    margin-top: -7.0710678118654755px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-b.ie .ui-popup-arrow {
+    margin-left: -5.857864376269049px;
+    margin-top: -4.142135623730951px;
+}
+ 
+.ui-popup-arrow-container.ui-popup-arrow-l.ie .ui-popup-arrow {
+    margin-left: -7.0710678118654755px;
+    margin-top: -5.857864376269049px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-r.ie .ui-popup-arrow {
+    margin-left: -4.142135623730951px;
+    margin-top: -5.857864376269049px;
+}
+/* structure */
+.ui-popup > .ui-popup-arrow-guide {
+	position: absolute;
+	left: 0;
+	right: 0;
+	top: 0;
+	bottom: 0;
+	visibility: hidden;
+}
+.ui-popup-arrow-container {
+	position: absolute;
+}
+.ui-popup-arrow {
+	-webkit-transform: rotate(45deg);
+	-moz-transform: rotate(45deg);
+	-ms-transform: rotate(45deg);
+	transform: rotate(45deg);
+	position: absolute;
+	overflow: hidden;
+	box-sizing: border-box;
+}
+.ui-popup-arrow-container.ie .ui-popup-arrow {
+	-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.7071067811865474, M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865474, SizingMethod='auto expand')";
+	filter: progid:DXImageTransform.Microsoft.Matrix(
+	      	M11=0.7071067811865474,
+        	M12=-0.7071067811865477,
+        	M21=0.7071067811865477,
+        	M22=0.7071067811865474,
+        	SizingMethod='auto expand');
+}
+.ui-checkbox,
+.ui-radio {
+	margin: .5em 0;
+	position: relative;
+}
+.ui-checkbox .ui-btn,
+.ui-radio .ui-btn {
+	margin: 0;
+	text-align: left;
+	white-space: normal; /* Nowrap + ellipsis doesn't work on label. Issue #1419. */
+	z-index: 2;
+}
+.ui-controlgroup .ui-checkbox .ui-btn.ui-focus,
+.ui-controlgroup .ui-radio .ui-btn.ui-focus {
+	z-index: 3;
+}
+.ui-checkbox .ui-btn-icon-top,
+.ui-radio .ui-btn-icon-top,
+.ui-checkbox .ui-btn-icon-bottom,
+.ui-radio .ui-btn-icon-bottom {
+	text-align: center;
+}
+.ui-controlgroup-horizontal .ui-checkbox .ui-btn:after,
+.ui-controlgroup-horizontal .ui-radio .ui-btn:after {
+	content: none;
+	display: none;
+}
+/* Native input positioning */
+.ui-checkbox input,
+.ui-radio input {
+	position: absolute;
+	left: .466em;
+	top: 50%;
+	width: 22px;
+	height: 22px;
+	margin: -11px 0 0 0;
+	outline: 0 !important;
+	z-index: 1;
+}
+.ui-controlgroup-horizontal .ui-checkbox input,
+.ui-controlgroup-horizontal .ui-radio input {
+	left: 50%;
+	margin-left: -9px;
+}
+.ui-checkbox input:disabled,
+.ui-radio input:disabled {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-select {
+	margin-top: .5em;
+	margin-bottom: .5em; /* no shorthand for margin because it would override margin-right for inline selects */
+	position: relative;
+}
+.ui-select > select {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-select .ui-btn {
+	margin: 0;
+	opacity: 1; /* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including "inherit") without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */
+}
+.ui-select .ui-btn select {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 100%;
+	min-height: 1.5em;
+	min-height: 100%;
+	height: 3em;
+	max-height: 100%;
+	outline: 0;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	cursor: pointer;
+	filter: Alpha(Opacity=0);
+	opacity: 0;
+	z-index: 2;
+}
+@-moz-document url-prefix() {
+	.ui-select .ui-btn select {
+		opacity: 0.0001;
+	}
+}
+/* Display none because of issues with IE/WP's filter alpha opacity */
+.ui-select .ui-state-disabled select {
+	display: none;
+}
+/* Because we add all classes of the select and option elements to the span... */ 
+.ui-select span.ui-state-disabled {
+	filter: Alpha(Opacity=100);
+	opacity: 1;
+}
+.ui-select .ui-btn.ui-select-nativeonly {
+	border-radius: 0;
+	border: 0;
+}
+.ui-select .ui-btn.ui-select-nativeonly select {
+	opacity: 1;
+	text-indent: 0;
+	display: block;
+}
+/* ui-li-count is styled in the listview CSS. We set padding and offset here because select supports icon position while listview doesn't. */
+.ui-select .ui-li-has-count.ui-btn {
+	padding-right: 2.8125em;
+}
+.ui-select .ui-li-has-count.ui-btn-icon-right {
+	padding-right: 4.6875em;
+}
+.ui-select .ui-btn-icon-right .ui-li-count {
+	right: 3.2em;
+}
+/* We set the rules for the span as well to fix an issue on Chrome with text-overflow ellipsis for the button in combination with text-align center. */
+.ui-select .ui-btn > span:not(.ui-li-count) {
+	display: block;
+	text-overflow: ellipsis;
+	overflow: hidden !important;
+	white-space: nowrap;
+}
+.ui-selectmenu.ui-popup {
+	min-width: 11em;
+}
+.ui-selectmenu .ui-dialog-contain {
+	overflow: hidden;
+}
+.ui-selectmenu .ui-header {
+	margin: 0;
+	padding: 0;
+	border-width: 0;
+}
+.ui-selectmenu.ui-dialog .ui-header {
+	z-index: 1;
+	position: relative;
+}
+.ui-selectmenu.ui-popup .ui-header {
+	-webkit-border-bottom-right-radius: 0;
+	border-bottom-right-radius: 0;
+	-webkit-border-bottom-left-radius: 0;
+	border-bottom-left-radius: 0;
+}
+/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button.  this shim's content in there */
+.ui-selectmenu.ui-popup .ui-header h1:after {
+	content: '.';
+	visibility: hidden;
+}
+.ui-selectmenu .ui-header .ui-title {
+	margin: 0 2.875em;
+}
+.ui-selectmenu.ui-dialog .ui-content {
+	overflow: visible;
+	z-index: 1;
+}
+.ui-selectmenu .ui-selectmenu-list {
+	margin: 0;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+}
+.ui-header:not(.ui-screen-hidden) + .ui-selectmenu-list {
+	-webkit-border-top-right-radius: 0;
+	border-top-right-radius: 0;
+	-webkit-border-top-left-radius: 0;
+	border-top-left-radius: 0;
+}
+.ui-header.ui-screen-hidden + .ui-selectmenu-list li.ui-first-child .ui-btn {
+	border-top-width: 0;
+}
+.ui-selectmenu .ui-selectmenu-list li.ui-last-child .ui-btn {
+	border-bottom-width: 0;
+}
+.ui-selectmenu .ui-btn.ui-li-divider {
+	cursor: default;
+}
+.ui-selectmenu .ui-selectmenu-placeholder {
+	display: none;
+}
+.ui-listview,
+.ui-listview > li {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+}
+.ui-content .ui-listview,
+.ui-panel-inner > .ui-listview {
+	margin: -1em;
+}
+.ui-content .ui-listview-inset,
+.ui-panel-inner > .ui-listview-inset {
+	margin: 1em 0;
+}
+.ui-collapsible-content > .ui-listview {
+	margin: -.5em -1em;
+}
+.ui-collapsible-content > .ui-listview-inset {
+	margin: .5em 0;
+}
+.ui-listview > li {
+	display: block;
+	position: relative;
+	overflow: visible;
+}
+.ui-listview > .ui-li-static,
+.ui-listview > .ui-li-divider,
+.ui-listview > li > a.ui-btn {
+	margin: 0;
+	display: block;
+	position: relative;
+	text-align: left;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+}
+.ui-listview > li > .ui-btn:focus {
+	z-index: 1;
+}
+.ui-listview > .ui-li-static,
+.ui-listview > .ui-li-divider,
+.ui-listview > li > a.ui-btn {
+	border-width: 1px 0 0 0;
+	border-style: solid;
+}
+.ui-listview-inset > .ui-li-static,
+.ui-listview-inset > .ui-li-divider,
+.ui-listview-inset > li > a.ui-btn {
+	border-right-width: 1px;
+	border-left-width: 1px;
+}
+.ui-listview > .ui-li-static.ui-last-child,
+.ui-listview > .ui-li-divider.ui-last-child,
+.ui-listview > li.ui-last-child > a.ui-btn {
+	border-bottom-width: 1px;
+}
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > li.ui-first-child,
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > li.ui-first-child > a.ui-btn {
+	border-top-width: 0;
+}
+.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > li.ui-last-child,
+.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > li.ui-last-child > a.ui-btn {
+	border-bottom-width: 0;
+}
+.ui-listview > li.ui-first-child,
+.ui-listview > li.ui-first-child > a.ui-btn {
+	-webkit-border-top-right-radius: inherit;	
+	border-top-right-radius: inherit;
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+}
+.ui-listview > li.ui-last-child,
+.ui-listview > li.ui-last-child > a.ui-btn {
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+}
+.ui-listview > li.ui-li-has-alt > a.ui-btn {
+	-webkit-border-top-right-radius: 0;
+	border-top-right-radius: 0;
+	-webkit-border-bottom-right-radius: 0;
+	border-bottom-right-radius: 0;
+}
+.ui-listview > li.ui-first-child > a.ui-btn + a.ui-btn {
+	-webkit-border-top-left-radius: 0;	
+	border-top-left-radius: 0;
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+}
+.ui-listview > li.ui-last-child > a.ui-btn + a.ui-btn {
+	-webkit-border-bottom-left-radius: 0;
+	border-bottom-left-radius: 0;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+.ui-listview > li.ui-first-child img:first-child:not(.ui-li-icon) {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;	
+}
+.ui-listview > li.ui-last-child img:first-child:not(.ui-li-icon) {
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;	
+}
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+}
+.ui-listview > .ui-li-static {
+	padding: .7em 1em;
+}
+.ui-listview > .ui-li-divider {
+	padding: .5em 1.143em;
+	font-size: 14px;
+	font-weight: bold;
+	cursor: default;
+	outline: 0; /* Dividers in custom selectmenus have tabindex */
+}
+.ui-listview > .ui-li-has-count > .ui-btn,
+.ui-listview > .ui-li-static.ui-li-has-count,
+.ui-listview > .ui-li-divider.ui-li-has-count {
+	padding-right: 2.8125em;
+}
+.ui-listview > .ui-li-has-count > .ui-btn-icon-right {
+	padding-right: 4.6875em;
+}
+.ui-listview > .ui-li-has-thumb > .ui-btn,
+.ui-listview > .ui-li-static.ui-li-has-thumb {
+	min-height: 3.625em;
+	padding-left: 6.25em;
+}
+/* ui-li-has-icon deprecated in 1.4. TODO: remove in 1.5 */
+.ui-listview > .ui-li-has-icon > .ui-btn,
+.ui-listview > .ui-li-static.ui-li-has-icon {
+	min-height: 1.25em;
+	padding-left: 2.5em;
+}
+/* Used by both listview and custom multiple select button */
+.ui-li-count {
+	position: absolute;
+	font-size: 12.5px;
+	font-weight: bold;
+	text-align: center;
+	border-width: 1px;
+	border-style: solid;
+	padding: 0 .48em;
+	line-height: 1.6em;
+	min-height: 1.6em;
+	min-width: .64em;
+	right: .8em;
+	top: 50%;
+	margin-top: -.88em;
+}
+.ui-listview .ui-btn-icon-right .ui-li-count {
+	right: 3.2em;
+}
+.ui-listview .ui-li-has-thumb > img:first-child,
+.ui-listview .ui-li-has-thumb > .ui-btn > img:first-child,
+.ui-listview .ui-li-has-thumb .ui-li-thumb {
+	position: absolute;
+	left: 0;
+	top: 0;
+	max-height: 5em;
+	max-width: 5em;
+}
+/* ui-li-has-icon deprecated in 1.4. TODO: remove in 1.5 */
+.ui-listview > .ui-li-has-icon > img:first-child,
+.ui-listview > .ui-li-has-icon > .ui-btn > img:first-child {
+	position: absolute;
+	left: .625em;
+	top: .9em;
+	max-height: 1em;
+	max-width: 1em;
+}
+.ui-listview > li h1,
+.ui-listview > li h2,
+.ui-listview > li h3,
+.ui-listview > li h4,
+.ui-listview > li h5,
+.ui-listview > li h6 {
+	font-size: 1em;
+	font-weight: bold;
+	display: block;
+	margin: .45em 0;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+}
+.ui-listview > li p {
+	font-size: .75em;
+	font-weight: normal;
+	display: block;
+	margin: .6em 0;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+}
+.ui-listview .ui-li-aside {
+	position: absolute;
+	top: 1em;
+	right: 3.333em;
+	margin: 0;
+	text-align: right;
+}
+.ui-listview > li.ui-li-has-alt > .ui-btn {
+	margin-right: 2.5em;
+	border-right-width: 0;
+}
+.ui-listview > li.ui-li-has-alt > .ui-btn + .ui-btn {
+	position: absolute;
+	width: 2.5em;
+	height: 100%;
+	min-height: auto;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	border-left-width: 1px;
+	top: 0;
+	right: 0;
+	margin: 0;
+	padding: 0;
+	z-index: 2;
+}
+.ui-listview-inset > li.ui-li-has-alt > .ui-btn + .ui-btn {
+	border-right-width: 1px;
+}
+.ui-listview > li.ui-li-has-alt > .ui-btn + .ui-btn:focus {
+	z-index: 3;
+}
+ol.ui-listview,
+ol.ui-listview > .ui-li-divider {
+	counter-reset: listnumbering;
+}
+ol.ui-listview > li > .ui-btn,
+ol.ui-listview > li.ui-li-static {
+	vertical-align: middle;
+}
+ol.ui-listview > li > .ui-btn:first-child:before,
+ol.ui-listview > li.ui-li-static:before,
+ol.ui-listview > li.ui-field-contain > label:before,
+ol.ui-listview > li.ui-field-contain > .ui-controlgroup-label:before {
+	display: inline-block;
+	font-size: .9em;
+	font-weight: normal;
+	padding-right: .3em;
+	min-width: 1.4em;
+	line-height: 1.5;
+	vertical-align: middle;
+	counter-increment: listnumbering;
+	content: counter(listnumbering) ".";
+}
+ol.ui-listview > li.ui-field-contain:before {
+	content: none;
+	display: none;
+}
+ol.ui-listview > li h1:first-child,
+ol.ui-listview > li h2:first-child,
+ol.ui-listview > li h3:first-child,
+ol.ui-listview > li h4:first-child,
+ol.ui-listview > li h5:first-child,
+ol.ui-listview > li h6:first-child,
+ol.ui-listview > li p:first-child,
+ol.ui-listview > li img:first-child + * {
+	display: inline-block;
+	vertical-align: middle;
+}
+ol.ui-listview > li h1:first-child ~ *,
+ol.ui-listview > li h2:first-child ~ *,
+ol.ui-listview > li h3:first-child ~ *,
+ol.ui-listview > li h4:first-child ~ *,
+ol.ui-listview > li h5:first-child ~ *,
+ol.ui-listview > li h6:first-child ~ *,
+ol.ui-listview > li p:first-child ~ *,
+ol.ui-listview > li img:first-child + * ~ * {
+	margin-top: 0;
+	text-indent: 2.04em; /* (1.4em + .3em) * .9em / .75em */
+}
+html .ui-filterable + .ui-listview,
+html .ui-filterable.ui-listview {
+	margin-top: .5em;
+}
+.ui-collapsible-content > form.ui-filterable {
+	margin-top: -.5em;
+}
+.ui-collapsible-content > .ui-input-search.ui-filterable {
+	margin-top: 0;
+}
+.ui-collapsible-content > .ui-filterable + .ui-listview:not(.ui-listview-inset) > li.ui-first-child,
+.ui-collapsible-content > .ui-filterable + .ui-listview:not(.ui-listview-inset) > li.ui-first-child > a.ui-btn,
+.ui-collapsible-content > .ui-filterable.ui-listview:not(.ui-listview-inset) > li.ui-first-child,
+.ui-collapsible-content > .ui-filterable.ui-listview:not(.ui-listview-inset) > li.ui-first-child > a.ui-btn {
+	border-top-width: 1px;
+}
+div.ui-slider {
+	height: 30px;
+	margin: .5em 0;
+	padding: 0;
+	-ms-touch-action: pan-y pinch-zoom double-tap-zoom;
+}
+div.ui-slider:before,
+div.ui-slider:after {
+	content: "";
+	display: table;
+}
+div.ui-slider:after {
+	clear: both;
+}
+input.ui-slider-input {
+	display: block;
+	float: left;
+	font-size: 14px;
+	font-weight: bold;
+	margin: 0;
+	padding: 4px;
+	width: 40px;
+	height: 20px;
+	line-height: 20px;
+	border-width: 1px;
+	border-style: solid;
+	outline: 0;
+	text-align: center;
+	vertical-align: text-bottom;
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	appearance: none;
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+}
+.ui-slider-input::-webkit-outer-spin-button,
+.ui-slider-input::-webkit-inner-spin-button {
+	-webkit-appearance: none;
+	margin: 0;
+}
+.ui-slider-track {
+	position: relative;
+	overflow: visible;
+	border-width: 1px;
+	border-style: solid;
+	height: 15px;
+	margin: 0 15px 0 68px;
+	top: 6px;
+}
+.ui-slider-track.ui-mini {
+	height: 12px;
+	top: 8px;
+}
+.ui-slider-track .ui-slider-bg {
+	height: 100%;
+}
+/* High level of specificity to override button margins in grids */
+.ui-slider-track .ui-btn.ui-slider-handle {
+	position: absolute;
+	z-index: 1;
+	top: 50%;
+	width: 28px;
+	height: 28px;
+	margin: -15px 0 0 -15px;
+	outline: 0;
+	padding: 0;
+}
+.ui-slider-track.ui-mini .ui-slider-handle {
+	height: 14px;
+	width: 14px;
+	margin: -8px 0 0 -8px;
+}
+select.ui-slider-switch {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+div.ui-slider-switch {
+	display: inline-block;
+	height: 32px;
+	width: 5.8em;
+	top: 0;
+}
+/* reset the clearfix */
+div.ui-slider-switch:before,
+div.ui-slider-switch:after {
+	display: none;
+	clear: none;
+}
+div.ui-slider-switch.ui-mini {
+	height: 29px;
+	top: 0;
+}
+.ui-slider-inneroffset {
+	margin: 0 16px;
+	position: relative;
+	z-index: 1;
+}
+.ui-slider-switch.ui-mini .ui-slider-inneroffset {
+	margin: 0 15px 0 14px;
+}
+.ui-slider-switch .ui-btn.ui-slider-handle {
+	margin: 1px 0 0 -15px;
+}
+.ui-slider-switch.ui-mini .ui-slider-handle {
+	width: 25px;
+	height: 25px;
+	margin: 1px 0 0 -13px;
+	padding: 0;
+}
+.ui-slider-handle-snapping {
+	-webkit-transition: left 70ms linear;
+	-moz-transition: left 70ms linear;
+	transition: left 70ms linear;
+}
+.ui-slider-switch .ui-slider-label {
+	position: absolute;
+	text-align: center;
+	width: 100%;
+	overflow: hidden;
+	font-size: 16px;
+	top: 0;
+	line-height: 2;
+	min-height: 100%;
+	white-space: nowrap;
+	cursor: pointer;
+}
+.ui-slider-switch.ui-mini .ui-slider-label {
+	font-size: 14px;
+}
+.ui-slider-switch .ui-slider-label-a {
+	z-index: 1;
+	left: 0;
+	text-indent: -1.5em;
+}
+.ui-slider-switch .ui-slider-label-b {
+	z-index: 0;
+	right: 0;
+	text-indent: 1.5em;
+}
+/* The corner radii for ui-slider-switch/track can be specified in theme CSS. The bg and handle inherits. */
+.ui-slider-track .ui-slider-bg,
+.ui-slider-switch .ui-slider-label,
+.ui-slider-switch .ui-slider-inneroffset,
+.ui-slider-handle {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+.ui-field-contain div.ui-slider-switch {
+	margin: 0;
+}
+/* ui-hide-label deprecated in 1.4. TODO: Remove in 1.5 */
+.ui-field-contain div.ui-slider-switch,
+.ui-field-contain.ui-hide-label div.ui-slider-switch,
+html .ui-popup .ui-field-contain div.ui-slider-switch {
+	display: inline-block;
+	width: 5.8em;
+}
+/* slider tooltip
+-----------------------------------------------------------------------------------------------------------*/
+.ui-slider-popup {
+	width: 64px;
+	height: 64px;
+	font-size: 36px;
+	padding-top: 14px;
+	opacity: 0.8;
+}
+.ui-slider-popup {
+	position: absolute !important;
+	text-align: center;
+	z-index: 100;
+}
+.ui-slider-track .ui-btn.ui-slider-handle {
+	font-size: .9em;
+	line-height: 30px;
+}
+.ui-rangeslider {
+	margin: .5em 0;
+}
+.ui-rangeslider:before,
+.ui-rangeslider:after {
+	content: "";
+	display: table;
+}
+.ui-rangeslider:after {
+	clear: both;
+}
+.ui-rangeslider .ui-slider-input.ui-rangeslider-last {
+	float: right;
+}
+.ui-rangeslider .ui-rangeslider-sliders {
+	position: relative;
+	overflow: visible;
+	height: 30px;
+	margin: 0 68px;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track {
+	position: absolute;
+	top: 6px;
+	right: 0;
+	left: 0;
+	margin: 0;
+}
+.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track {
+	top: 8px;
+}
+.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg {
+	display: none;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+	background-color: transparent;
+	background: none;
+	border-width: 0;
+	height: 0;
+}
+/* this makes ie6 and ie7 set height to 0 to fix z-index problem */
+html >/**/body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+	height: 15px;
+	border-width: 1px;
+}
+html >/**/body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child {
+	height: 12px;
+}
+/* Hide the second label (the first is moved outside the div) */
+div.ui-rangeslider label {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-field-contain .ui-rangeslider input.ui-slider-input,
+.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,
+.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,
+.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+	margin-top: 0;
+	margin-bottom: 0;
+}
+.ui-input-text,
+.ui-input-search {
+	margin: .5em 0;
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-mini {
+	margin: .446em;
+}
+.ui-input-text input,
+.ui-input-search input,
+textarea.ui-input-text {
+	padding: .4em;
+	line-height: 1.4em;
+	display: block;
+	width: 100%;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	outline: 0;
+}
+.ui-input-text input,
+.ui-input-search input {
+	margin: 0;
+	min-height: 2.2em;
+	text-align: left; /* Opera aligns type="date" right by default */
+	border: 0;
+	background: transparent none;
+	-webkit-appearance: none;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+textarea.ui-input-text {
+	overflow: auto;
+	resize: vertical;
+}
+.ui-mini .ui-input-text input,
+.ui-mini .ui-input-search input,
+.ui-input-text.ui-mini input,
+.ui-input-search.ui-mini input,
+.ui-mini textarea.ui-input-text,
+textarea.ui-mini {
+	font-size: 14px;
+}
+/* Same margin for mini textareas as other mini sized widgets (12.5/14 * 0.5em) */
+.ui-mini textarea.ui-input-text,
+textarea.ui-mini {
+	margin: .446em 0;
+}
+.ui-input-has-clear,
+.ui-input-search {
+	position: relative;
+}
+/* Padding on the div instead of input because of browser spinners etc. */
+.ui-input-has-clear {
+	padding-right: 2.375em;
+}
+.ui-mini.ui-input-has-clear {
+	padding-right: 2.923em;
+}
+.ui-input-has-clear input {
+	padding-right: 0;
+	/* Autofill on Chrome has bg color so we unset corners right as well. */
+	-webkit-border-top-right-radius: 0;
+	border-top-right-radius: 0;
+	-webkit-border-bottom-right-radius: 0;
+	border-bottom-right-radius: 0;
+}
+/* Search icon */
+.ui-input-search input {
+	padding-left: 1.75em;
+}
+.ui-input-search:after {
+	position: absolute;
+	left: .3125em;
+	top: 50%;
+	margin-top: -7px;
+	content: "";
+	background-position: center center;
+	background-repeat: no-repeat;
+	width: 14px;
+	height: 14px;
+	filter: Alpha(Opacity=50);
+	opacity: .5;
+}
+.ui-input-search.ui-input-has-clear .ui-btn.ui-input-clear,
+.ui-input-text.ui-input-has-clear .ui-btn.ui-input-clear {
+	position: absolute;
+	right: 0;
+	top: 50%;
+	margin: -14px .3125em 0;
+	border: 0;
+	background-color: transparent;
+}
+.ui-input-search .ui-input-clear-hidden,
+.ui-input-text .ui-input-clear-hidden {
+	display: none;
+}
+/* Resolves issue #5166: Added to support issue introduced in Firefox 15. We can likely remove this in the future. */
+.ui-input-text input::-moz-placeholder,
+.ui-input-search input::-moz-placeholder,
+textarea.ui-input-text::-moz-placeholder {
+	color: #aaa;
+}
+/* Same for IE10 */
+.ui-input-text input:-ms-input-placeholder,
+.ui-input-search input:-ms-input-placeholder,
+textarea.ui-input-text:-ms-input-placeholder {
+	color: #aaa;
+}
+/* Resolves issue #5131: Width of textinput depends on its type,
+for Android 4.1 */
+.ui-input-text input[type=number]::-webkit-outer-spin-button {
+	margin: 0;
+}
+/* Resolves issue #5756: Textinput in IE10 has a default clear button */
+.ui-input-text input::-ms-clear,
+.ui-input-search input::-ms-clear {
+	display: none;
+}
+.ui-input-text input:focus,
+.ui-input-search input:focus {
+	-webkit-box-shadow: none;
+	-moz-box-shadow: none;
+	box-shadow: none;
+}
+textarea.ui-input-text.ui-textinput-autogrow {
+	overflow: hidden;
+}
+.ui-textinput-autogrow-resize {
+	-webkit-transition: height 0.25s;
+	-o-transition: height 0.25s;
+	-moz-transition: height 0.25s;
+	transition: height 0.25s;
+}
+.ui-flipswitch {
+	display: inline-block;
+	vertical-align: middle;
+	width: 5.875em; /* Override this and padding-left in next rule if you use labels other than "on/off" and need more space */
+	height: 1.875em;
+	border-width: 1px;
+	border-style: solid;
+	margin: .5em 0;
+	overflow: hidden;
+	-webkit-transition-property: padding, width, background-color, color, border-color;
+	-moz-transition-property: padding, width, background-color, color, border-color;
+	-o-transition-property: padding, width, background-color, color, border-color;
+	transition-property: padding, width, background-color, color, border-color;
+	-webkit-transition-duration: 100ms;
+	-moz-transition-duration: 100ms;
+	-o-transition-duration: 100ms;
+	transition-duration: 100ms;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+	cursor: pointer;
+}
+.ui-flipswitch.ui-flipswitch-active {
+	padding-left: 4em;  /* Override this and width in previous rule if you use labels other than "on/off" and need more space */
+	width: 1.875em;
+}
+.ui-flipswitch-input {
+	position: absolute;
+	height: 1px;
+	width: 1px;
+	margin: -1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+	border: 0;
+	outline: 0;
+	filter: Alpha(Opacity=0);
+	opacity: 0;
+}
+.ui-flipswitch .ui-btn.ui-flipswitch-on,
+.ui-flipswitch .ui-flipswitch-off {
+	float: left;
+	height: 1.75em;
+	margin: .0625em;
+	line-height: 1.65em;
+}
+.ui-flipswitch .ui-btn.ui-flipswitch-on {
+	width: 1.75em;
+	padding: 0;
+	text-indent: -2.6em; /* Override this to center text if you use a label other than "on" */
+	text-align: left;
+	border-width: 1px;
+	border-style: solid;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	border-radius: inherit;
+	overflow: visible;
+	color: inherit;
+	text-shadow: inherit;
+}
+.ui-flipswitch .ui-flipswitch-off {
+	padding: 1px;
+	text-indent: 1em; /* Override this to center text if you use a label other than "off" */
+}
+/* Override field container CSS to prevent the flipswitch from becomming full width */
+html .ui-field-contain > label + .ui-flipswitch,
+html .ui-popup .ui-field-contain > label + .ui-flipswitch {
+	display: inline-block;
+	width: 5.875em; /* If you override the width for .ui-flipswitch you should repeat the same value here */
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+}
+.ui-field-contain .ui-flipswitch.ui-flipswitch-active,
+.ui-popup .ui-field-contain .ui-flipswitch.ui-flipswitch-active {
+	width: 1.875em;
+}
+.ui-table {
+	border: 0;
+	border-collapse: collapse;
+	padding: 0;
+	width: 100%;
+}
+.ui-table th,
+.ui-table td {
+	line-height: 1.5em;
+	text-align: left;
+	padding: .4em .5em;
+	vertical-align:top;
+}
+.ui-table th .ui-btn,
+.ui-table td .ui-btn {
+	line-height: normal;
+}
+.ui-table th {
+	font-weight: bold;
+}
+.ui-table caption {
+	text-align: left;
+	margin-bottom: 1.4em;
+	opacity: .5;
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-columntoggle-btn {
+	float: right;
+	margin-bottom: .8em;
+}
+/* Remove top/bottom margins around the fieldcontain on check list */
+.ui-table-columntoggle-popup fieldset {
+	margin:0;
+}
+.ui-table-columntoggle {
+	clear: both;
+}
+/* Hide all prioritized columns by default */
+@media only all {
+	th.ui-table-priority-6,
+	td.ui-table-priority-6,
+	th.ui-table-priority-5,
+	td.ui-table-priority-5,
+	th.ui-table-priority-4,
+	td.ui-table-priority-4,
+	th.ui-table-priority-3,
+	td.ui-table-priority-3,
+	th.ui-table-priority-2,
+	td.ui-table-priority-2,
+	th.ui-table-priority-1,
+	td.ui-table-priority-1 {
+		display: none;
+	}
+}
+/* Preset breakpoints if ".ui-responsive" class added to table */
+/* Show priority 1 at 320px (20em x 16px) */
+@media screen and (min-width: 20em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-1,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-1 {
+		display: table-cell;
+	}
+}
+/* Show priority 2 at 480px (30em x 16px) */
+@media screen and (min-width: 30em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-2,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-2 {
+		display: table-cell;
+	}
+}
+/* Show priority 3 at 640px (40em x 16px) */
+@media screen and (min-width: 40em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-3,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-3 {
+		display: table-cell;
+	}
+}
+/* Show priority 4 at 800px (50em x 16px) */
+@media screen and (min-width: 50em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-4,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-4 {
+		display: table-cell;
+	}
+}
+/* Show priority 5 at 960px (60em x 16px) */
+@media screen and (min-width: 60em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-5,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-5 {
+		display: table-cell;
+	}
+}
+/* Show priority 6 at 1,120px (70em x 16px) */
+@media screen and (min-width: 70em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-6,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-6 {
+		display: table-cell;
+	}
+}
+/* Unchecked manually: Always hide */
+.ui-table-columntoggle th.ui-table-cell-hidden,
+.ui-table-columntoggle td.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden {
+	display: none;
+}
+/* Checked manually: Always show */
+.ui-table-columntoggle th.ui-table-cell-visible,
+.ui-table-columntoggle td.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible {
+	display: table-cell;
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-reflow td .ui-table-cell-label,
+.ui-table-reflow th .ui-table-cell-label { 
+	display: none;
+}
+/* Mobile first styles: Begin with the stacked presentation at narrow widths */ 
+@media only all {
+	/* Hide the table headers */ 
+	.ui-table-reflow thead td, 
+	.ui-table-reflow thead th {
+		display: none;
+	}
+	/* Show the table cells as a block level element */ 
+	.ui-table-reflow td,
+	.ui-table-reflow th { 
+		text-align: left;
+		display: block;
+	}
+	/* Add a fair amount of top margin to visually separate each row when stacked */  
+	.ui-table-reflow tbody th {
+		margin-top: 3em;
+	}
+	/* Make the label elements a percentage width */ 
+	.ui-table-reflow td .ui-table-cell-label,
+	.ui-table-reflow th .ui-table-cell-label { 
+		padding: .4em; 
+		min-width: 30%; 
+		display: inline-block;
+		margin: -.4em 1em -.4em -.4em;
+	}
+	/* For grouped headers, have a different style to visually separate the levels by classing the first label in each col group */ 
+	.ui-table-reflow th .ui-table-cell-label-top,
+	.ui-table-reflow td .ui-table-cell-label-top {
+		display: block;
+		padding: .4em 0;
+		margin: .4em 0;
+		text-transform: uppercase;
+		font-size: .9em;
+		font-weight: normal;
+	}
+}
+/* Breakpoint to show as a standard table at 560px (35em x 16px) or wider */ 
+@media ( min-width: 35em ) {
+	/* Show the table header rows */ 
+	.ui-table-reflow.ui-responsive td,
+	.ui-table-reflow.ui-responsive th,
+	.ui-table-reflow.ui-responsive tbody th,
+	.ui-table-reflow.ui-responsive tbody td,
+	.ui-table-reflow.ui-responsive thead td,
+	.ui-table-reflow.ui-responsive thead th {
+		display: table-cell;
+		margin: 0;
+	}
+	/* Hide the labels in each cell */ 
+	.ui-table-reflow.ui-responsive td .ui-table-cell-label,
+	.ui-table-reflow.ui-responsive th .ui-table-cell-label { 
+		display: none;
+	}
+}
+/* Hack to make IE9 and WP7.5 treat cells like block level elements, scoped to ui-responsive class */ 
+/* Applied in a max-width media query up to the table layout breakpoint so we don't need to negate this*/ 
+@media ( max-width: 35em ) {
+	.ui-table-reflow.ui-responsive td,
+	.ui-table-reflow.ui-responsive th {
+		width: 100%;
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		box-sizing: border-box;
+		float: left;
+		clear: left;
+	}
+}
+/* Panel */
+.ui-panel {
+	width: 17em;
+	min-height: 100%;
+	max-height: none;
+	border-width: 0;
+	position: absolute;
+	top: 0;
+	display: block;
+}
+.ui-panel-closed {
+	width: 0;
+	max-height: 100%;
+	overflow: hidden;
+	visibility: hidden;
+	left: 0;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-panel-fixed {
+	position: fixed;
+	bottom: -1px; /* Fixes gap on Chrome for Android */
+	padding-bottom: 1px;
+}
+.ui-panel-display-reveal {
+	z-index: 1;
+}
+.ui-panel-display-push {
+	z-index: 999;
+}
+.ui-panel-display-overlay {
+	z-index: 1001; /* Fixed toolbars have z-index 1000 */
+}
+.ui-panel-inner {
+	padding: 1em;
+}
+/* Container, page and wrapper */
+.ui-panel-page-container {
+	overflow-x: visible;
+}
+.ui-panel-page-container-themed .ui-page-active {
+	background: none;
+}
+.ui-panel-wrapper {
+	position: relative;
+	min-height: inherit;
+	border: 0;
+	overflow-x: hidden;
+	z-index: 999;
+}
+/* Fixed toolbars */
+.ui-panel-fixed-toolbar {
+	overflow-x: hidden;
+}
+/* Dismiss */
+.ui-panel-dismiss {
+	position: absolute;
+	top: 0;
+	left: 0;
+	right: 0;
+	height: 100%;
+	z-index: 1002;
+	display: none;
+}
+.ui-panel-dismiss-open {
+	display: block;
+}
+/* Animate class is added to panel, wrapper and fixed toolbars */
+.ui-panel-animate {
+	-webkit-transition: -webkit-transform 300ms ease;
+	-webkit-transition-duration: 300ms;
+	-moz-transition: -moz-transform 300ms ease;
+	transition: transform 300ms ease;
+}
+/* Fix for Windows Phone issue #6349: unset the transition for transforms in case of fixed toolbars. */
+@media screen and ( max-device-width: 768px ) {
+	.ui-page-header-fixed .ui-panel-animate.ui-panel-wrapper,
+	.ui-page-footer-fixed .ui-panel-animate.ui-panel-wrapper,
+	.ui-panel-animate.ui-panel-fixed-toolbar {
+		-ms-transition: none;
+	}
+	/* We need a transitionend event ... */
+	.ui-panel-animate.ui-panel-fixed-toolbar {
+		-ms-transition: -ms-transform 1ms;
+		-ms-transform: rotate(0deg);
+	}
+}
+/* Hardware acceleration for smoother transitions on WebKit browsers */
+.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal) {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translate3d(0,0,0);
+}
+/* Panel positioning (for overlay and push) */
+/* Panel left closed */
+.ui-panel-position-left {
+	left: -17em;
+}
+/* Panel left closed animated */
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-push {
+	left: 0;
+	-webkit-transform: translate3d(-17em,0,0);
+	-moz-transform: translate3d(-17em,0,0);
+	transform: translate3d(-17em,0,0);
+}
+/* Panel left open */
+.ui-panel-position-left.ui-panel-display-reveal, /* Unset "panel left closed" for reveal */
+.ui-panel-open.ui-panel-position-left {
+	left: 0;
+}
+/* Panel left open animated */
+.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-push {
+	-webkit-transform: translate3d(0,0,0);
+	transform: translate3d(0,0,0);
+	-moz-transform: none;
+}
+/* Panel right closed */
+.ui-panel-position-right {
+	right: -17em;
+}
+/* Panel right closed animated */
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-push {
+	right: 0;
+	-webkit-transform: translate3d(17em,0,0);
+	-moz-transform: translate3d(17em,0,0);
+	transform: translate3d(17em,0,0);
+}
+/* Panel right open */
+.ui-panel-position-right.ui-panel-display-reveal, /* Unset "panel right closed" for reveal */
+.ui-panel-position-right.ui-panel-open {
+	right: 0;
+}
+/* Panel right open animated */
+.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-push {
+	-webkit-transform: translate3d(0,0,0);
+	transform: translate3d(0,0,0);
+	-moz-transform: none;
+}
+/* Wrapper and fixed toolbars positioning (for reveal and push) */
+/* Panel left open */
+.ui-panel-page-content-position-left {
+	left: 17em;
+	right: -17em;
+}
+/* Panel left open animated */
+.ui-panel-animate.ui-panel-page-content-position-left {
+	left: 0;
+	right: 0;
+	-webkit-transform: translate3d(17em,0,0);
+	-moz-transform: translate3d(17em,0,0);
+	transform: translate3d(17em,0,0);
+}
+/* Panel right open */
+.ui-panel-page-content-position-right {
+	left: -17em;
+	right: 17em;
+}
+/* Panel right open animated */
+.ui-panel-animate.ui-panel-page-content-position-right {
+	left: 0;
+	right: 0;
+	-webkit-transform: translate3d(-17em,0,0);
+	-moz-transform: translate3d(-17em,0,0);
+	transform: translate3d(-17em,0,0);
+}
+/* Dismiss model open */
+.ui-panel-dismiss-open.ui-panel-dismiss-position-left {
+	left: 17em;
+}
+.ui-panel-dismiss-open.ui-panel-dismiss-position-right {
+	right: 17em;
+}
+/* Shadows and borders */
+.ui-panel-display-reveal {
+	-webkit-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+	box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-reveal {
+	-webkit-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+	box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-display-overlay {
+	-webkit-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+	box-shadow: 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-overlay {
+	-webkit-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+	box-shadow: -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-open.ui-panel-position-left.ui-panel-display-push {
+	border-right-width: 1px;
+	margin-right: -1px;
+}
+.ui-panel-page-content-position-left.ui-panel-page-content-display-push {
+	margin-left: 1px;
+	width: auto;
+}
+.ui-panel-open.ui-panel-position-right.ui-panel-display-push {
+	border-left-width: 1px;
+	margin-left: -1px;
+}
+.ui-panel-page-content-position-right.ui-panel-page-content-display-push {
+	margin-right: 1px;
+	width: auto;
+}
+/* Responsive: wrap on wide viewports once open */
+@media (min-width:55em) {
+	.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-left {
+		margin-right: 17em;
+	}
+	.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-right {
+		margin-left: 17em;
+	}
+	.ui-responsive-panel .ui-panel-page-content-open {
+		width: auto;	
+	}
+	.ui-responsive-panel .ui-panel-dismiss-display-push,
+	.ui-responsive-panel.ui-page-active ~ .ui-panel-dismiss-display-push {
+		display: none;
+	}
+}
+.ui-tabs {
+	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+	padding: .2em;
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.inline-png-1.4.5.min.css
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.inline-png-1.4.5.min.css	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.inline-png-1.4.5.min.css	(revision 101)
@@ -0,0 +1,3 @@
+/*! jQuery Mobile 1.4.5 | Git HEADhash: 68e55e7 <> 2014-10-31T17:33:30Z | (c) 2010, 2014 jQuery Foundation, Inc. | jquery.org/license */
+
+.ui-icon-action:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAIVJREFUOMtjYCAC/P//fxYQszGQCv5DwDEgliRHIwg8A2JLdEEYaICKqwHxciD+gCb/E4jTGHBosgPiL/+xA1SNSM7iBeIXQPwDiOuAWByvU5E05gPxZyC2xhs4WDTuBuJwtMCZCYsOmHewaZyLJ3Qb4GqxaDQiFC1YNRITn9TRSAqgSCMAGL+QeSGFbu0AAAAASUVORK5CYII=")}.ui-icon-alert:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJVJREFUOMu9z7ENgkAUgOGj0I6eBXQCg8QRdAhdwiV0CF2CIRxBF6Cn08LP5oxIIEjjX13evS+5C6EnbLAOY8IUN1wxGQP3Pu1/RRnqBqyR/QLPEeQo4vk0hJZ4QmMmzvI+lODyfl8LindJF9z5rsCqNdu2UYrKcBXSJjx2LC3in9sd3miOR8fCsuOpcMcsoDS+Mvy9F2w1bmFOO7YjAAAAAElFTkSuQmCC")}.ui-icon-arrow-d-l:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAE9JREFUOMut0VsKACAIBECP3tG8mSFZRGVujwV/wkE0IjAikrToJIZq0g3CsIMK9PQWWcM0OkQdbI8QGqCGIbSAAl/wCgWQo7/6PvFpRxdn/yOefcvwdI0AAAAASUVORK5CYII=")}.ui-icon-arrow-d-r:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAE1JREFUOMtjYICC////N4AwAykAqgkGGsjRRLRmJhzi9UTZjMNWnDajiBOrGaaOJJuR5Ulx9gFkDql+xq+RGM2EQvsAfWwky4/EaAIBAH/xh5XOyrKIAAAAAElFTkSuQmCC")}.ui-icon-arrow-d:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADdJREFUOMtjYMAC/qMBBmLBqEZKNQLFG/6TDhrI0dxAjs0N5Di7gVDANJCsCYfmBgZSAFQzTk0AIbtHzgIaJM8AAAAASUVORK5CYII=")}.ui-icon-arrow-l:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAD5JREFUOMul0kEKADAMAsE8PT/fXktpqVHvA8FY9QjQNQ3QABYawR3J8EQSvKFfLJRB+9SonOgd0QCiyakjXzjeR87keFK/AAAAAElFTkSuQmCC")}.ui-icon-arrow-r:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADpJREFUOMu90rENADAIA0FG/82dgooiSDgK31+DiWiSRDgpw4VzrBourFjzcGHiTcjbcX7PwdrLXdEBwEtHzn8VrGMAAAAASUVORK5CYII=")}.ui-icon-arrow-u-l:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEtJREFUOMtj+E8caGBAB2RpIkIjdk0ENB5gwAdoYSNJfjxATqg2QPkNRGnGJkiUZlx+INpmUjUz4dPIyMgIMr2RgVyAZnMDOZrhmgAEuoiZ+HH38AAAAABJRU5ErkJggg==")}.ui-icon-arrow-u-r:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEdJREFUOMu9z8ENACAIQ9GOzmhuVq+GSCke/Fd8AYEUyaARbjkYVR2GiuT6s/HpjwKtEgoUeW6j/G6ETjxG3YkaFdhDCdtoA045nn2X6PolAAAAAElFTkSuQmCC")}.ui-icon-arrow-u:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADlJREFUOMtjYMAB/v//3wDCDKQAqCYYaCBHE3GacWjCr5mAJuyaidSEqplETQSdjQJIiY5RjZRoBADXbkfOGh7ilQAAAABJRU5ErkJggg==")}.ui-icon-audio:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAANxJREFUOMuV0rEuRFEQxvETL2DpZVEoVLyFJ1CJRKfabCKikbiJUhQa3kSj32K7DQqJwgugQVay8lOYleO654avmm/m/HMmM5NSg3CUxTO4wlZqE44xyfwa3nzprA2Sg5FfwV3UDkrQN4gd9CJewCPesZQw9FtTcBR+P3wv/GnSrCnYxRNe0cEcPnDbCgZ8HrmN8A8Y/wW8+DeIZTzjBbOYj1ZvEgaYFMDr8P3w/fAn+TqqBnAbuxEvxqDG6NZ3WRUOYBX3UdsrXU9VG856/PKzxQJ8WDvyS2zmbz4B8IPWAlHG2vgAAAAASUVORK5CYII=")}.ui-icon-back:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJJJREFUOMtjYEAD////b2AgFYA0AfF/sjSRpBFZExT8AeLXQHwciCcAsQOxGrGBM0CsS0gzKxBLA7ELELcC8VOo+Ccg1iY6cIBCXEC8Fqp5M05n4xCXgGr8TGqoC5OrsRGqcS+xGkABVQ/E/6AaXQlpUATiYiC+C9UA0lhKjE3I4CYQexDrxGdAvBSIfYGYCV0eAL8TDNuB31nNAAAAAElFTkSuQmCC")}.ui-icon-bars:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAClJREFUOMtjYKA7+P///8n/pIMTII3HydB4lGHUjzTy4xly/XhiaPgRALzOTCcBlK2mAAAAAElFTkSuQmCC")}.ui-icon-bullets:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADpJREFUOMtjYKA7+P///0kgPo7GJwROgBQeB+KjSBqPE6HxKMOoH2nkxzNgN6PyifLjCTQ/nhicfgQA/VEZvCqEuYoAAAAASUVORK5CYII=")}.ui-icon-calendar:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADFJREFUOMtjYICC////nwTi4ww4AFDuDBCfQBYgCwwljWQDZBNIYpOtcdSpeGwhVyMA6YDNaA+GXWMAAAAASUVORK5CYII=")}.ui-icon-camera:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJ1JREFUOMtjYKAW+P//vzoQ1wBxAxSD2KrYFHIBcSaSwqf/McFjJPksIOYEadz8n3SwCaTxDxaJh0A8AYj7oGx08IcBi+ABIBaFOh/kLBEgPoiuCJtGAzTnbwJiQ2I0sgDxLyT+TyBmJdbGTUj89UBsTIzGQ0h+zICyj2DT+BeL5kdA3A8N2ce4QnUTGfG4HqSREy3lEMIZ4JRDLgAADx5bua1tC5oAAAAASUVORK5CYII=")}.ui-icon-carat-d:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAHdJREFUKJHV0D0OwjAMBtCcpiBSVn7uv8MpUNVMwAUeSyuiKG3DyLdZ9rMlh/BfwR6nhrkLurnYYcAT5xV0xRsPdAF331TxdOmVzd0CIsYlXEEjDnOzildRtjkiFbhEcekBJd5GGe4LnDZRho8TSOibUIF/Qy35ADEDFfz8Tu1HAAAAAElFTkSuQmCC")}.ui-icon-carat-l:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAFNJREFUOMtjYMAD/v//rwvE54FYhYFYAFSsB8Sv/0PAUyBWJVUTCLwHYmNyNJkQo+kNqZr06aOJIo14NJuSEnfImj+Qqvk1mmYzumt+TGp6xZnIAZYXFgOYoY9iAAAAAElFTkSuQmCC")}.ui-icon-carat-r:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAGRJREFUOMtjYEAD////Vwfi80CsxUAsACrWAOLn/yHgJRBrE6vRDIg//EcAkjSbU1PzK0o161CiWZdYjR9JshWowIIcTZZYNGkTo+kTSdEBdd4nkuMQqEgNiJ+SHPFIms8RSuQASm4V+ztdam4AAAAASUVORK5CYII=")}.ui-icon-carat-u:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAG5JREFUOMtjYKA2+P//vz4Ik6PpDRTrkaoJBghrBilA0wQDr3Fqhmp6jaT4PRQja9YlRpMJEJsC8QesmkEMbJqQDEXX/AqsGUicx6UJj+ZzIEEVIH6KSxOSZjOo5scgPTBBVSA2JiKqzOCahg4AAODRFgCi4LIMAAAAAElFTkSuQmCC")}.ui-icon-check:after,html .ui-btn.ui-checkbox-on.ui-checkbox-on:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAE5JREFUOMu10DEKACEQQ1GPHl2QxUvHZsURQRJhfzfFKzIp/R1JkISLMmdQUeEebtAKvw053I+KRuUGncLpYxoS9kgfrDYK+LVRwM1GTh2KeDEWoG7NGwAAAABJRU5ErkJggg==")}.ui-icon-clock:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAN5JREFUOMuNkl0KglAQhYeexA0kthWtVQRCq6gQWkBRi4mIaA/Zm2EbsYJ6STsjx7jYtTrwoXecP2euiKGyLHtgBc7gQTKwBL7YhA8jcCvbdQWRLaigwxoEwCEh2PBb8Q5me3WliZHsCA7GOabPBXjCf6oqNbqo1LBtaV4IB6EK/gjs03wSTk7l2AKphDaX53tH2pUY70/bGjJmCeWH4DOgb6oV97SP5bemfO41i8/lquIv1Wb0yUG3NkbGBdhyei7R9nbGBRg2M0ZcbpvyjyAj2NPl6p505CQF83d71As1WJi0XvrCDgAAAABJRU5ErkJggg==")}.ui-icon-cloud:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAHRJREFUOMtjYBhw8P//f2EgTgTiWigtRIymSCD+/B8VfATiEHyabIH473/s4DcQm+PSuOs/fvAPiF8BsT+yJncg/vafOPASpqniP2ngCxBzgjS+/U862AjS+I4MjT9BGsvJ0LgO5k8XaIQ3EIEzgZiD/kkTAK0pr7/Ot6yrAAAAAElFTkSuQmCC")}.ui-icon-comment:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEJJREFUOMtj+P//fyAQv/xPPHgFxP4MJGqCgZcM/8kEoxpppfEVGfpegDT6k5gIXgCxLwMyQJJsYCAFkKUJqpFoTQBdxXiyPJoNzQAAAABJRU5ErkJggg==")}.ui-icon-delete:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAFtJREFUOMulklEKwDAIQ83J153c0U1GK0ZG5o/ga4pNA4ty9zE7gGFFZY5leMSZM4srjjS0LKacgBtGLxmaW1k9q5J3tKLXnI/izbT/QmlVyRz5O+QAyJFTQ34BOkVgA0nxhd0AAAAASUVORK5CYII=")}.ui-icon-edit:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAExJREFUOMtjYCAS/P//vwGEGUgBUE0w0ECuRsKakZ1HtK3YFBL0JxanEe28/yRpHPyaFEjWBNWYQLImqMYFJGuCajwA1QyyWYHYZAgAGGspdigXzkIAAAAASUVORK5CYII=")}.ui-icon-eye:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJ9JREFUOMtjYBhQ8P//f0YgjgLig0D8FYoPQMUYcWmSgCrCBUBy4uia5ID4HlTBDyDOBmIBIOaDsn9A5UBq5GCa+IH4OpLJ2Vhck4MkD1LLDxJcheYkAajik0B8HMlwZLCSCYt3/yHRMDYjtkBBd2ouFjUFSPLXQH7HFTi5UAMFoJp+YgQOkqniBKJjP0Z0oCWASKgBX6D4AFSMcWCTJwDwblGBQMiLsgAAAABJRU5ErkJggg==")}.ui-icon-forbidden:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAANZJREFUOMuF0jFuwkAUhOEtCT0R4iwh4hgu0uUM3AAU5TKIKk1OgSPlHCgUQMOXZrAsY8NIK9k7/v3ezttSWsIMn/jFGSf84AOz0ie842BYB1R90CUffOEFo6w5NvEuDZz22pVqTHo6Wsb/w7TkTNdK9QN4G39dEoS0N7kH4zXeriQ9GMUchDHO/rEk8ga8B+Mpe6eSOcG809YNjMX1vWS4sOkJowt/53nVHcfyAQx7PF/NqnUBtklvnDMtWpUueOv+ucpwh7S/gVrwFGvscEziNVZNe9E/AYkNLyf6mZAAAAAASUVORK5CYII=")}.ui-icon-forward:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJVJREFUOMud0SEPQWEUBuA7I6iSTdFtfoNgJvkzNtE+QfcnRFFVFX9AECmaieYRfOGyue533/qeZ2c7J8tKBCGrEu+EqrAYY4AV9rji4TPhG/Rx8D8hj3q4xeKMJYbooFG0bRuLDZqlj4N7LNtJ78jBVuq5dxEuUuEowifmqKfgWYRwwhTdsniMY/5pKZtrmGCNy6+5F/zkDN/sPUM/AAAAAElFTkSuQmCC")}.ui-icon-gear:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAANBJREFUOMuN0k1OAkEUReGKDVPsBUiCe/An6CZMCHERkLgABzpwr0rCAhoM/Tl56ktTQc+o07dud71TVUoFXOITe0zLKfCIOcZ488sLRrjDslaCHlvHbCPrscjFebz8ix7XuThOf+qwQotJPHeRbdBkEXmmVWX+dcpfMSthL9NWiueDNfsSyjOTSrEdrOkKpqH81FafUv6Mi+9gNJCzju21UdpF9o6z/MV7/+OAm1xcxhkd8FEpbNIFeBjOscAVmlCeZ2pwe1SqyJiF7d2PiAFfUWcCdKtjEnkAAAAASUVORK5CYII=")}.ui-icon-grid:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAElJREFUOMtj+P///8n/CHCcAQjQxE5Axc4gizGCSAYkwAgExIgxMZAJQBpPIPGPQWlsYiexiJEBhlbgnCQyIKgXOGcIBcQQDxwAcK29sfGNuOEAAAAASUVORK5CYII=")}.ui-icon-heart:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJhJREFUOMud0L0NwjAQgNErGAEGoU0WSYUEggGyVULFCFCyAgPQQQsU5NE4EuLfPOka258sXUREYIwldtiixiBNnc526c04UlTg7NkqzaMzisBGvnW8+e2bU+D4R3gItH+Ebb+cXEW/2SYjaqKHEfY/RHsM4x5KXD5EF5TxCipcX0RXVPEJpugeokn8AosUd5hFDswxfXd/AyJMQU8RkPn/AAAAAElFTkSuQmCC")}.ui-icon-home:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADxJREFUOMtjYMAB/v//3wDCDKQAqCYYaCBHE3GacWjCr5mAJuyaidSEqplETZg2E6sDmx8p10iK3HDWCADqFJ92uuEinAAAAABJRU5ErkJggg==")}.ui-icon-info:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJ1JREFUOMul0k0KwjAQQOHcQtF7SPEeQsHrKHo8S71IVdBVPzejaJ0u1AezSfKS+UkpL2COPY64RbTYYVYysMbFOGfUmdQPDi5QDdb6pxzpZS9VWCbrJ0xL1PQt2xKNeGNQRkZTonPG5BHx+pfY/iAeSgz3W3FTMIvhps1J5A6Tx0adfICMHqvhrXUMd4zuQ3qRp9iiwTXigM0zveAO8O5cUyF3tnAAAAAASUVORK5CYII=")}.ui-icon-location:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJlJREFUOMuV0TEOAVEUhtHXWYGh04pWzypYlJWIIENU1oQQdJKjucUL4+Er/7knr5iUXsIAO9xxwxb9VCrQxXvnIo6XYI0KbdSxbUrwHkdVtlWxXUvwFEedbOvEdizBVRzV6AbaxrYswanPTUqwhUMDOqD17ZfMGuAsfQs9PDL0QC/9EhYZnKdfwzCDw/RP2GOf/g1jjD59fwKZSi5HaePOlAAAAABJRU5ErkJggg==")}.ui-icon-lock:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAHFJREFUOMtjYEAD////Dwbiw0D8HYoPAXEgAz4AVND7HzfowqUpGKrgBxBnA7EAEPNB2T+gcv7YNB6GSmZjkcuByh3EpvE7VFIAixw/VO4rNo1ggMf/mPL/SQQ002gCxObkaDQGYlNyNDZAMf000iZUAdQHDgw3MuoHAAAAAElFTkSuQmCC")}.ui-icon-mail:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAIVJREFUOMtjYKA7+P//fzQQf/xPPACpjQZp5AJiRSA+SoQmkBoFkB6QxqtArAXEzEDcAMR/sGgAidVD1WiD9DBAJb4CcQLU6VZAfB9J0z0gtoTKJUDV/mdAM3kB1Ol8QLwEivmgYguQFTJgcRbY6UiBpw0V+09II9zpyE4jViNBMAAa6Q4ARIAH2Rfeh/QAAAAASUVORK5CYII=")}.ui-icon-minus:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABZJREFUOE9jYBgFuMF/MsFQ0jgKcAMA2lPfIe/W1fgAAAAASUVORK5CYII=")}.ui-icon-navigation:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJNJREFUOMtjYKA1+P//vxAQ5wLxXGIUMwGxKxCvAOIf/yEgB58GeSBuAOIH/1HBdyAWRFfMAcSRQLwbiP/9xw6WI2swBOIpQPzuP2Hggu5pMyCOBuJ6IF4CxCeA+C2aJpCzGYkNSWRX1JMSBSehmv4CsRwpGpdCNe4iNdIboBojSNUYAw0kdlI1mgPxZHLTpyE2OQBXFwcOWoyvmwAAAABJRU5ErkJggg==")}.ui-icon-phone:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAALRJREFUOMtj+P//PxMQLwDiI0DMy0AsACqOAuKz/yHgGNGagQrfAPFqNM08xGj8BtWwBqr5NxCbEqPx9H8EWAXEHsQ6tRxJ4yVSAocf6k8YCCZFcyySxi9AbE6K5vlImj8AsTWavBYQc2PTyAbEu5E0/wDiFKicNTT0sScSoCAXEO/5jwouAfFypHg+ikszyOaF/zHBGiTNh/D5OQGI36JphqWwiYQCTACIK4D4HNTPr2HRBQChdFG//DBhowAAAABJRU5ErkJggg==")}.ui-icon-plus:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAB5JREFUOMtjYMAC/qMBBmLBcNP4n0wwlDSOJgDcGgFPin6QGOaERAAAAABJRU5ErkJggg==")}.ui-icon-power:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAANBJREFUOMtjYMAB/v//vxeIdzOQCv5DATEKQ4H4FhCbo2sEUrZAfBuIA9E1KQLxV6jaUCwaY6HcL0Ash6xxClRiNS6nApkboEITkTXehwoa49FoBhW6g6zxD1SQBY9GVqjQb2SNX6CCQkhiF4H4PBJfBKrmE7LGQ1DBBCQxJiBmROKnQtXsQ9aYCBV8AQphLFGlAsSvoWpikSWYkWx9A8QloIACYhMgLgfid1A5UGpiQjdVEIgP/scNQJr4caUeJmhk7wbi51C8C4ijkf1LEQAAs65tnfCMVk0AAAAASUVORK5CYII=")}.ui-icon-recycle:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJ9JREFUOMtjYKAm+P///1kg/gnEP6DsQiBmJ0YjNnAZiGUIafQDYi4g5gZiXyC+DtV8CcVmICcUhPEYxI+kuQAmKArEr6BYlIArQOA0TGA1kj9W4dHIA1XzDVnwB1SQG49GTAugQQ4Cvng0YnoJyCiCagQFAD8ezaiBCORwAPEVJM1+UD+BcAihuJNF0owCiEkxHNDkdQYUelB8gqrpGQBlvyiNmsjT4QAAAABJRU5ErkJggg==")}.ui-icon-refresh:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAM9JREFUOMtjYEAC////lwbiTiC+AsQ/gfgHEF8C4lYglkBSV4+sKRaIv/zHDT4BcSQQNwPxH5imGCD+B1WwCoitgJgNiq2BeC2aIX9AmiSB+DNUII8BBwDK7UfX2A7lrMGjqRmbjVegHEscmhqx+Bes8QeUw8ZACqBE42WoRmtSNbZBNa4lQq0vEDPDOJLQyAWBEjyaqqBqDiILRiAlgA1AbA/E3FDsCMRboHJ/gTgI3cQwIP6AJ8mB5IJxOUcMiJuA+Dw03X6BskFxKYasFgCG8ZXX6DfYhgAAAABJRU5ErkJggg==")}.ui-icon-search:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAONJREFUOMuV0c8qhVEUhvFvcvKlMHBCUUwU5RpMlIm5UnIFOp2bMHEDiokLkJKpMpXO4Bg4MlAGLkDK3/AzWYPd195iDd/nfVbttasqBjU6OMcdetjFdFUazOJGfp6wlpNqDKI0wDrmsYzjyF+x1BS3E2k0s/gg+EkTnAXYKDyjjU+8o07BbYiLv9zgPjpzaXgR4UpBGsJLdMZSsBPhaUHsBO81wRQeAx5iMrl2Fx/BNnNbV/EchS884K3xn32M5+QFHCXCNy6xhevIrtAuXbCFGYwk2cSf5MLCVN6r/jMh72P4BxnPgmBrkPyTAAAAAElFTkSuQmCC")}.ui-icon-shop:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAE9JREFUOMtjYEAD////ZwfiKUD8Hog/QtnsDIQAVOE6IBYDYlEg3gDEk4nRCLJJDIkPMuADMRr/EyMGlyAF4NJoiUWtOTEaybZxVOOAaQQAmEocSjETvxYAAAAASUVORK5CYII=")}.ui-icon-star:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJFJREFUOMtjYMAB/v//bwzCDKQCoKZZQDyTVE28QPwZiD8BMQ8pGtP/I0AaKRrPImk8g0tRAhB//U88AKmNh2nWAuKrRGi6AlKLbjMXEC/Ao2k+SA0uZyvj0aiML1Cy8GjMxKdxA1TRWyAOh+K3ULH1uDSxQCN8KxBLIolLAvE2IP4IUoNNowG+yAbJgdQwUAoAbN9GiH93pK4AAAAASUVORK5CYII=")}.ui-icon-tag:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEFJREFUOMtj+I8dNDAQAv9xgwZiNZoBsQXRmpEUgTRZEW3zf+JAAzaNDaOaSYhjApoJJowGspIiFs3EaULTjKEJAH1ft8O6vRfvAAAAAElFTkSuQmCC")}.ui-icon-user:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJdJREFUOMud0jsOQUEUgOEpJGxD0CpswAqUohStLYitiEJUEtHZgETJKjyiIqqb3E9D4nFdE399vuTkzITwFgqYIMEarRAT+l5L0YyBK5/NY+A5Ax5/oZrsUlTz4ND3BnmwglMGOqD8a91ZBpzGHKeB6xO6oB77lssnuMgbLKGDMbb3X/MowQYjtFF8oB724tuhG/zZ3/AGG1/AkN/xnJsAAAAASUVORK5CYII=")}.ui-icon-video:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAExJREFUOMvF0csJACAMBNE0KGJHlqtpYjwJIvF70Lk/CFmR5wEByIxTwFtwhmq5M1HYrEUAR7CiI9iiN/D6VOs5uuGSNYdfbJkAJ98rtv7WyPB7sagAAAAASUVORK5CYII=")}.ui-alt-icon.ui-icon-action:after,.ui-alt-icon .ui-icon-action:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAH1JREFUOMtjYCAOzAJiNgYywH8gPgbEkuRoBOFnQGyJLgjDDVBxNSBeDsQf0OR/AnEaAw5NdkD8BYuhWDXCAC8QvwDiH0BcB8TihJwKA/lA/BmIrQkFDrrG3UAcjhY4M5GiowGXxrl4QrcBWS26RiMiogWrRga6aSQFk68RAP5OVqWXKdm9AAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-alert:after,.ui-alt-icon .ui-icon-alert:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJZJREFUOMtjYMANvIHYi4FEwAbEt4D4JhCzkqKxFIj/Q3EpsZokgPgTksZPUDGCYAFUgxkQW0DZ8wlpMgfif1DFMPAfKmaGSxMjEJ9EciKyxv9QOUZsGhOQFP2HOtMKTSweXRMvED9HU4QNP4eqhYNuLIpMoH5GF++CaVID4l9YFJhjcSoI/wRiVZDGrUQ4ER1vZaA7AAA8nEl47CBNKgAAAABJRU5ErkJggg==")}.ui-alt-icon.ui-icon-arrow-d:after,.ui-alt-icon .ui-icon-arrow-d:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADRJREFUOMtjYMAO/qNhosGoRko1NmBRSAg3kKO5gRybG8hxdgOhgGkgRxM2zQ0MJIIGfJoARZtMu19O4xgAAAAASUVORK5CYII=")}.ui-alt-icon.ui-icon-arrow-d-l:after,.ui-alt-icon .ui-icon-arrow-d-l:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAElJREFUOMtjYCAeNEAxSQCk4T8UN5CjiWjN2DTBNTaQo4kBh9UENTFgESRKEwOa5AFiNTHgUEhUCJKlCZ/GA4Tiiuo2UuRHnJoBqxder3inhF8AAAAASUVORK5CYII=")}.ui-alt-icon.ui-icon-arrow-d-r:after,.ui-alt-icon .ui-icon-arrow-d-r:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEFJREFUOMtjYECABigmCYA0/IfiBnI0kaQZm0aaaW4gRzNMHUk2I8sT7ewDaHyS/ExQIzGa8YIDdLORLD8So+k/AHCSXq9v5cRTAAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-arrow-l:after,.ui-alt-icon .ui-icon-arrow-l:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADdJREFUOMtjYMANGhjIACBN/8nV9J9cTf/J1fSfXE2EMFmaKNNItlMpChyKooOiBEBRkiMqkQMAcwJMu8C5mgwAAAAASUVORK5CYII=")}.ui-alt-icon.ui-icon-arrow-r:after,.ui-alt-icon .ui-icon-arrow-r:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADVJREFUOMtjYMAPGhjIBP/J1fyfXM3/ydX8H5/m/yTiBnI1wjXTTWMDxYFD0+hooFuSw6kJAOa7TLvbyXpwAAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-arrow-u:after,.ui-alt-icon .ui-icon-arrow-u:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADVJREFUOMtjYMANGqCYJADS8B+KG8jRRLRmbJoIasanCadmYjRhaCZFE0FnoyskGoxqpEQjABQxTLu007KqAAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-arrow-u-l:after,.ui-alt-icon .ui-icon-arrow-u-l:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEVJREFUOMtjYGBg+E8EbmDAAsjSxECuJnwaDzAQAFS3kSQ/HiAnVGGSDcRqxiZIlGZcfmggJ8BoppkojeiaidaErBmuCQCtL16vpLfRlQAAAABJRU5ErkJggg==")}.ui-alt-icon.ui-icon-arrow-u-r:after,.ui-alt-icon .ui-icon-arrow-u-r:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEVJREFUOMu9zzEOACAIA8A+nafxM12JFiwMNmGCCwDcMQBLKBqbQgWX8W8bRz9myCuYISN9GZ1zLRTn26g88YkYllHEMtpyql6v/pwMSQAAAABJRU5ErkJggg==")}.ui-alt-icon.ui-icon-audio:after,.ui-alt-icon .ui-icon-audio:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAANVJREFUOMuF0jFKg0EQhuHHXCBqL1ELCytzi5zAKgh2ViEgYhMwYCkWaXIUG/sU6YJaCBZewKRRiaAkzRTLun/+r5pvZ15mdhjKukniBh7RVaNb/Cb+BN9YYbQJWmUgHOE1ctdVUAqeoxfxHj7wgwOYJkAOzsJfhe+Fv1eAUrCFOb6wjR384aUOhHG8dcK/Y9lQr62qxKaOh1jgE03sxqjPMInCEvgUvh++H/4u7TwsgGe4iHg/FrWMpSnB+QEc4y1yl1V/HmZgO7r8G7GkQXbkDzhNC9aKZ1PDJ0JepAAAAABJRU5ErkJggg==")}.ui-alt-icon.ui-icon-back:after,.ui-alt-icon .ui-icon-back:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAItJREFUOMtjYMAEDQxkAJCm/+Rq+k+uJhD+A8Svgfg4EE8AYgdiNWLDZ4BYl5BmViCWBmIXIG4F4qdQ8U9ArE1K4HAB8Vqo3GZ8zsYGJKAaP5Ma6sLkamyEatxLrAZQQNUD8T+oRldCGhSBuBiI70I1gDSWEmMTchzeBGIPYp34DIiXArEvEDOhSwIAi9Qyp4aUzewAAAAASUVORK5CYII=")}.ui-alt-icon.ui-icon-bars:after,.ui-alt-icon .ui-icon-bars:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAACZJREFUOMtjYBgIcBKI/5OIT4A0HidD41GGUT/SCJwh148nhoYfAe0YURTen2r1AAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-bullets:after,.ui-alt-icon .ui-icon-bullets:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADVJREFUOMtjYBgIcBKIj6Px/xPAJxigmo4iaTxOhMajDKN+pBE4A3MzEp8oP55Ac/OJwelHAGSiQoVBqpe0AAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-calendar:after,.ui-alt-icon .ui-icon-calendar:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADRJREFUOMtjZECAk0D8D4gtGbCDM0D8B4gtQBxGIP7PQAYYYhoZKLWRJDZFGkedismmTCMAvGkkB7PDw7MAAAAASUVORK5CYII=")}.ui-alt-icon.ui-icon-camera:after,.ui-alt-icon .ui-icon-camera:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJxJREFUOMtjYKAiUAfiGiBugGIQWxWbQi4gzkRS+BSI/6Phx0jyWUDMCdK4GYtCQngTSOMfLBIPgXgCEPdB2ejyID0YggeAWBTqfJCzRID4IBZ1GAIGaM4HOcuQGI0sQPwLif8TiFmJtXETEn89EBsTo/EQkh8zoOwj2DT+xSL4CIj7oSH7GFeobiIjHkHOB6cC5JRDCGfAUg5ZAAAIx317SYGtJAAAAABJRU5ErkJggg==")}.ui-alt-icon.ui-icon-carat-d:after,.ui-alt-icon .ui-icon-carat-d:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAHFJREFUOMvV0DEKAjEQQNF3GhXXbXW9f6+nkGVTqRfQJoFlIDHa+SFFmHkpwt+1w7Fjb8KmXLaYccepgc544lbwFa98anjCY7V3gQFLA0e0YF+GNdxEa5wCjmiofUDEXah0CDj1oNKYQcoPfdX4C/rYG6dgMtFQD5sUAAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-carat-l:after,.ui-alt-icon .ui-icon-carat-l:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAFBJREFUOMtjYMAPdIH4PBCrMJAA9ID4NRD/B+KnQKxKqiYQfg/ExuRoMiFG0xtSNenTTRNFGnFpNiUl7pA1fyBV82s0zWZ01/yY1PSKM5EDAGi5MtgV7LNzAAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-carat-r:after,.ui-alt-icon .ui-icon-carat-r:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAFpJREFUOMtjYMAE6kB8Hoi1GEgAGkD8HIj/A/FLINYmVqMZEH+AaiRZszk1Nb+iVLMOJZp1idX4kVRbLcjRZIlFkzYxmj6RGh0W5GgCATUgfkpOxMM0nyOUyAF53TLQiFLV2gAAAABJRU5ErkJggg==")}.ui-alt-icon.ui-icon-carat-u:after,.ui-alt-icon .ui-icon-carat-u:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAGZJREFUOMtjYKAB0IdikjW9gWI9UjX9h2KiNOuhaYLh1/g060EVwBS/h2JkzbrEaDIBYlMg/oBLsy4OTTCArvkVTPN5PJpwaT4HElQB4qd4NMGAGVTzY6geMFAFYmMiosoMWdMQAQBshTLV2RAbgQAAAABJRU5ErkJggg==")}.ui-alt-icon.ui-icon-check:after,.ui-alt-icon .ui-icon-check:after,html .ui-alt-icon.ui-btn.ui-checkbox-on:after,html .ui-alt-icon .ui-btn.ui-checkbox-on:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEtJREFUOMtjYKADaIBikkAjEP+HYqI1NyFpIlozNk0YGhugToKBZmI1wSSayNGEDzfgCzGiNRHyD1Eh2EaOJhjoIEcTDHSRo4loAAAMpkH3I7j13AAAAABJRU5ErkJggg==")}.ui-alt-icon.ui-icon-clock:after,.ui-alt-icon .ui-icon-clock:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAANhJREFUOMuNkmEKgkAQhYd+hRdI9CpZpwiETlERdICiDhMh0R2qf4ZdxArsT9rbeAtT7GIPPnTHebvjzIp8KwYbcAVPUoA1iMSjMXiAxsMdpC5TzYQt6IMuScCO32ptjtVJU7XZGRzVes6cGwiF/2RP0rIlamWMrYSNaFhem3HA2EXYuYb/4zIaTowFXFcd8euk3l+uhIK7JNKuIXNzc+KBwckfxhmfH0/E4TZsuU8L5pSgZ4OpugAZuxcQU95eXYDR744ph+u7cqXLZBVyuGZOFcnBUpdn9AYEHE/v8XhZcwAAAABJRU5ErkJggg==")}.ui-alt-icon.ui-icon-cloud:after,.ui-alt-icon .ui-icon-cloud:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAHZJREFUOMtjYBgMQBiIE4G4FkoLEaMpEog/A/F/JPwRiEPwabIF4r9ommD4NxCb49K4C4cmGP4HxK+A2B9ZkzsQfyOgEYZfwjRVEKkBhr8AMSdI41sSNYLwRpDGd2Ro/AnSWE6GxnUwf7pAI7yBCJwJxBz0T5cA6NleA+xgAXwAAAAASUVORK5CYII=")}.ui-alt-icon.ui-icon-comment:after,.ui-alt-icon .ui-icon-comment:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEdJREFUOMtjYGBgCATil0D8n0j8Coj9GUjUBMMvGaEMkgETA5lgVCMBja/J0AeKe3AqICURvABiX3STYJINpDqBLE0MpGgCAMwXLfKbu8xgAAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-delete:after,.ui-alt-icon .ui-icon-delete:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAE1JREFUOMtjYECABijGBbDKgwT+Q3EDDk0Y8siC2DTjlMcm8R/Jaf/xGYxLwX8CriFacwO+kCNZE9kaG2jlP6JDlGB0kJ0AyE5yZCVyAIGUcaXrtLjcAAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-edit:after,.ui-alt-icon .ui-icon-edit:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEVJREFUOMtjYCAeNEAxSQCk4T8UN5CrkSjNyM4j2lZsChtI0USS8/6TqnGQa1IgRxMIJJCjCQQWkKMJBA5ANSdAnU0UAAB60T1Uc0QS+gAAAABJRU5ErkJggg==")}.ui-alt-icon.ui-icon-eye:after,.ui-alt-icon .ui-icon-eye:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJtJREFUOMtjYBhowAjEUUB8EIi/QvEBqBgjLk0SUEX/cWCQnDi6JjkgvgdV8AOIs4FYAIj5oOwfULl7ULVgwA/E15FMzsbimhwk+etQPQyr0JwkAFV8EoiPIxmOrGYlExbT/yHR/5ACDQOgOzUXi5oCJPlrUL9jDZxcqIECUE0/sQUODIgTiI792KIDOQFEQg34AsUHoGKMA5s2AdHHPobWAPyKAAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-forbidden:after,.ui-alt-icon .ui-icon-forbidden:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAM1JREFUOMuFkkEOgjAQRd9S2WMIZ1HDMVi48wzcAEO8DGHlxlOAiecgshA31M1vUptiJ2lC+3mdmT+F38iBK/AEPsAMPIBGWjDOwASYlTUBZQha9MMN2AMbrQPQSltcOPcyDUAaqKiS/gIy1JPNNETgTvoFGWFUXhqBj9J65J5RP0TgROdvZLkL/oO3OpvRnIzcIwIXzp5GmzZghg/f9V3746gisAFGYGfF0nkAndxL1FPhZFqAk39zqeGuPbkxBNnINNxels8qs3bLA/gCVFFewZEF7yYAAAAASUVORK5CYII=")}.ui-alt-icon.ui-icon-forward:after,.ui-alt-icon .ui-icon-forward:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAItJREFUOMtjYCAONDCQCf6Tq/k/MZodgHgCEB8H4tdA/AdJI1bNekB8Bk0RNoyiURuIP0ElngJxKxC7ALE0ELPis20rVGItEHOSEjhfoJISpEYHTKMQqcG9D6qxkVSNblCN/4C4DohZSNFcBtUIMuAuEBcDsQKxmj2A+CZavBENmIDYD4iXAvEzXIoAgqYyqw9Yg9IAAAAASUVORK5CYII=")}.ui-alt-icon.ui-icon-gear:after,.ui-alt-icon .ui-icon-gear:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAOBJREFUOMuFkkEKwkAMRae13arQXVGo6BFEUS8hiLgSQZcteABddOFJ3YjSA9SK1T/wK2EIGHjw2ySTTDLG6DYAL1CBvhbgC70BMxCCAwio99RzsHYPsEkfUIOCWlLQZ1nJilcGeCBSOovoa2J/FopKJUhBF7SpS/ruoCUHcRFtpUrFTPhzkBhOT96nqyR2nJjKp5BWK4meG2MThyzf2FZJ3Al9BqPmI3CGk7E92/YRPOm7Obs3C2V3Gm8wkXuMxQO4K60+xJ5j12lfxJh7ykWVE/9NwdL8sYQP3N6tpwV8AdaYR91UZ7PcAAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-grid:after,.ui-alt-icon .ui-icon-grid:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEJJREFUOMtjYGBgOAnE/6H4OAMEIIudgIqdQRf7j4aJFiNb43EkzlGoImxiJ7CIkQeGUOCcIDIgqBc4Z4gJiCEcOADCDYeuTK+m9gAAAABJRU5ErkJggg==")}.ui-alt-icon.ui-icon-heart:after,.ui-alt-icon .ui-icon-heart:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJRJREFUOMud0D0OAUEYBuDHFVyEisYlaITYm1GtcAU99V5CSb+bWKEwkrVZ+/cmb/PNPJkvwydj7JHghAiD0CjMEsQYBWOGDK9St9hVzLNgXCoOm3r257WmZnDvAW9w7AEPMO0BJ9+fjTugWCFDXFuga7j7kwnSGpQWVyxngbwCPTDXkDWeBZRjqWWigHOsdMymDr0BP5J/6NqLuzwAAAAASUVORK5CYII=")}.ui-alt-icon.ui-icon-home:after,.ui-alt-icon .ui-icon-home:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADhJREFUOMtjYMANGqCYJADS8B+KG8jRRLRmbJoIasanCadmYjRhaCZFE1abidWEAaiikRS5YasRAHf0YqUlUKReAAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-info:after,.ui-alt-icon .ui-icon-info:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJxJREFUOMul0ksKwkAQhOHvFga9hwTvIQS8TkSPZ4gX8QG6Stx0IA6TQLSgNtPzz6O6+dYGZ1zxDrc4YW1CBzzRT/iBKgd1ycYtymStG8ObiZtK7DLrdxTiT/1CH0UQaWGsHNiI5PoZOFd7/QW2P4AX0dylYC0m4jETTgrfsBoKVWYAcu6wT0+torlT0C0HDSqiuU0k94og6vHz4AMNCIcMUIkWVwAAAABJRU5ErkJggg==")}.ui-alt-icon.ui-icon-location:after,.ui-alt-icon .ui-icon-location:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJdJREFUOMuVkDEKwkAUBafzBG7sbCVtej2FHionEVGJIZVniqJouoA2T/jo+pMd+M3sm2bhlxxogA54AjWwYIAcuAOvr7sNxY2GRyAAU6CSO3lhp1EwLsg9vPCqUWZcJnfxwoNGFTBTVMvtvXAT+ZjPrb1wArSRqNWbSxkJS0YwB3oT9XKj2JlwSwKFCQsSOeuSWQHLf49vN4Q5LhENhvAAAAAASUVORK5CYII=")}.ui-alt-icon.ui-icon-lock:after,.ui-alt-icon .ui-icon-lock:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAG5JREFUOMtjYMAEwUB8GIi/Q/EhIA5kIAB6gfg/DtyFS1MwVMEPIM4GYgEg5oOyf0Dl/LFpPAyVzMYilwOVO4hN43eopAAWOX6o3FdsGmF+wQWwyv8nEdNGowkQm5Oj0RiITcnR2ADF9NNIm1AFAP9Vd4ZWPhWFAAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-mail:after,.ui-alt-icon .ui-icon-mail:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAIRJREFUOMtjYBgIEA3EH4H4P5H4I1QPAxcQKwLxUSI0gdQoQPUwXAViLSBmBuIGIP6DRQNIrB6qRhuqByzxFYgToE63AuL7SJruAbElVC4BqvY/A5rJC6DO4APiJVDMBxVbgKYWw1kwp8MAzGn/CWlEdjqy01AwI0w3qYCJ3MhnYhgyAAD7hUiBFf5JtwAAAABJRU5ErkJggg==")}.ui-alt-icon.ui-icon-minus:after,.ui-alt-icon .ui-icon-minus:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABZJREFUOMtjYBgFeMF/MvFQ0jgKcAAApTQ3yWkQbYUAAAAASUVORK5CYII=")}.ui-alt-icon.ui-icon-navigation:after,.ui-alt-icon .ui-icon-navigation:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJRJREFUOMtjYKADEALiXCCeS4xiJiB2BeIVQPwDiP8DcQ4+DfJA3ADED6CKYfg7EAuiK+YA4kgg3g3E/9A0wPByZA2GQDwFiN/hUIyMXdA9bQbE0UBcD8RLgPgEEL9F0wRyNiOxIYnsinpSouAkVNNfIJYjReNSqMZdpEZ6A1RjBKkaY6CBxE6qRnMgnkxu+jTEJgEAOtUv19DqMFAAAAAASUVORK5CYII=")}.ui-alt-icon.ui-icon-phone:after,.ui-alt-icon .ui-icon-phone:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAALBJREFUOMtjYGBgYALiBUB8BIh5GUgAUUB8Foj/A/ExUjS/AeLVaJp5iNH4DaphDVTzbyA2JUbjaahGEF4FxB7EOrUcSeMlUgKHH+pPmOZgUjTHImn8AsTmpGiej6T5AxBbo8lrATE3No1sQLwbSfMPIE6GyllDQx9nIuEC4j1ImmEBthwpno/i0gyyeSGaZuR4BrEP4fNzAhC/RdMMS2ETCAWYABBXAPE5qJ9fw6ILAKJsPsK6IqZ8AAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-plus:after,.ui-alt-icon .ui-icon-plus:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAB1JREFUOMtjYMAO/qNhosFw0/ifTDyUNI4mABwaAYa6X6GPliIhAAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-power:after,.ui-alt-icon .ui-icon-power:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAMZJREFUOMtjYMAN9gLxbgYywH8oJghCgfgWEJtj0WgLxLeBOBBdkyIQf4UqDMWiMRbK/gLEcsgap0AlVuNx6gYofyKyxvtQQWM8Gs2g/DvIGv9ABVnwaGSF8n8ja/wCFRRCErsIxOeR+CJQNZ+QNR6CCiYgiTEBMSMSPxWqZh+yxkSo4AtoCKMDFSB+DVUTiyzBjGTrGyAugQaUCRCXA/E7qNxeqEtQgCAQH0QKFHQM0sSPK/UwQZ0CSqPPoXgXEEej+Zd8AAA35kK6jnLDjgAAAABJRU5ErkJggg==")}.ui-alt-icon.ui-icon-recycle:after,.ui-alt-icon .ui-icon-recycle:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJVJREFUOMtjYKAyOAvEP4H4B5RdCMTsxGj8jwVfBmIZQhr9gJgLiLmB2BeIr0M1X0K3ORSKcQF+JM0FMEFRIH4FxaIEXAHSeBomsBrJH6vwaOSBqvmGLPgDKsiNRyNWC85CBXzxaMTqpSKoxuvQgMAFMAKRA4ivIGn2g/oJhEMIxZ0skmZ0TBBwQJPXGWjogfAJqiZmAOozM3SzI/gZAAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-refresh:after,.ui-alt-icon .ui-icon-refresh:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAMlJREFUOMtjYEAF0kDcCcRXgPgnEP8A4ktA3ArEEkjq6pE1xQLxFyD+jwN/AuJIIG4G4j8wTTFA/A+qYBUQWwExGxRbA/FaNEPAGiWB+DNUII8BN9iPrrEdylmDR1MzNhuvQDmWODQ1YvEvWOMPKIeNgURAtsbLUI3WpGpsg2pcS4RaXyBmhnEkoZEL0lyCR1MVVM1BZMEIpASwAYjtgZgbih2BeAtU7i8QB6GbGAbEH/AkOZBcMC7niAFxExCfh6bbL1B2I1QODgBeWE0SXtioYgAAAABJRU5ErkJggg==")}.ui-alt-icon.ui-icon-search:after,.ui-alt-icon .ui-icon-search:after,.ui-input-search:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAOZJREFUOMuV0U8rxFEUxvFPSjMUG/oRio2ivAZLG3ulZGsjzevwBpTZzAuYlD3Zi2JhZKEs7Aclf/Jvc3D7dX8TT906Pc/5nu49l1/VsYUjXOME25jUQ9O4xGfmPGA5B9XRiaYOVjCLReyF/4SFMriZQMOZwc3I98vBQQSrFc8YxRte4nY/ugpwvscObqJn5tvoQzfqiQqohiLqbgoeRt2oADcwgFPcp8E47uIqLYwl227gNbK13NQlPEbDO27xXPrPM4zk4Dm0E+ADx1jHRXjnseWs+jGFocQr/grnlMI7/qkCuxj8AkXLP4FD310vAAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-shop:after,.ui-alt-icon .ui-icon-shop:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAFBJREFUOMtjYMAE7EA8BYjfA/FHKJsdXRETFo29QCwFxOpArALEMkDcw0AEANkkhsQHsT8Qo/E/MWKMeBTjA4zY/GiFRcyCpjYSBUY10kIjAHnuC0BW95IBAAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-star:after,.ui-alt-icon .ui-icon-star:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAIlJREFUOMtjYMANjKGYZDALiGeSqokXiD8D8Scg5iFFYzoQ/4fiNFI0nkXSeAaXogQg/oqkkBAGqY2HadYC4qtEaLoCVYsCuIB4AR5N86FqsAJlPBqV8QVKFh6Nmfg0boAqegvE4VD8Fiq2HpcmFmiEbwViSSRxEHsbEH+EqsEABgQiOw2qhjIAAOvoP4EZPNvPAAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-tag:after,.ui-alt-icon .ui-icon-tag:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAEFJREFUOMtjYGBg+I8FNzAQAf6Tqxmm0AyILUjRDFME0mRFis3/icBYNTeMaiYtjhsoSRgN5CZFdM1Ea0LWjKEJAJLwYwqDORsHAAAAAElFTkSuQmCC")}.ui-alt-icon.ui-icon-user:after,.ui-alt-icon .ui-icon-user:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAJdJREFUOMtjYMAELEC8BIh/A/EJIPZlIBJkAfF/JPwPiO2J0XgUTSMIrydG4ycsGl8R0qSKRRPMuSr4NNbi0AjC1fg0KgPxGyyaXgKxIiHnrsGicRkxgWMExF+RNH0GYj1i43IHksaN+BRyAHE4EC8A4ovQVAPTCGJfAOJ5QBwKxOwwTYlA/AJPaKLj50Acz0CCBnRMnkYAFb5i4CiuUNsAAAAASUVORK5CYII=")}.ui-alt-icon.ui-icon-video:after,.ui-alt-icon .ui-icon-video:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAE1JREFUOMtjYBgIEAjEL4H4Pw78Coj9sWnEpwmGX6LpaWAgQhMMI2v6T6rGBmQ+sRob0A2iuUaynYoROK+I0PQCW3T4E4hLkCZfhgEHAMf2cCELnGdHAAAAAElFTkSuQmCC")}html{font-size:100%}body,input,select,textarea,button,.ui-btn{font-size:1em;line-height:1.3;font-family:sans-serif}legend,.ui-input-text input,.ui-input-search input{color:inherit;text-shadow:inherit}.ui-mobile label,div.ui-controlgroup-label{font-weight:400;font-size:16px}.ui-field-contain{border-bottom-color:#828282;border-bottom-color:rgba(0,0,0,.15);border-bottom-width:1px;border-bottom-style:solid}.table-stroke thead th,.table-stripe thead th,.table-stripe tbody tr:last-child{border-bottom:1px solid #d6d6d6;border-bottom:1px solid rgba(0,0,0,.1)}.table-stroke tbody th,.table-stroke tbody td{border-bottom:1px solid #e6e6e6;border-bottom:1px solid rgba(0,0,0,.05)}.table-stripe.table-stroke tbody tr:last-child th,.table-stripe.table-stroke tbody tr:last-child td{border-bottom:0}.table-stripe tbody tr:nth-child(odd) td,.table-stripe tbody tr:nth-child(odd) th{background-color:#eee;background-color:rgba(0,0,0,.04)}.ui-btn,label.ui-btn{font-weight:700;border-width:1px;border-style:solid}.ui-btn{text-decoration:none!important}.ui-btn-active{cursor:pointer}.ui-corner-all{-webkit-border-radius:.3125em;border-radius:.3125em}.ui-btn-corner-all,.ui-btn.ui-corner-all,.ui-slider-track.ui-corner-all,.ui-flipswitch.ui-corner-all,.ui-li-count{-webkit-border-radius:.3125em;border-radius:.3125em}.ui-btn-icon-notext.ui-btn-corner-all,.ui-btn-icon-notext.ui-corner-all{-webkit-border-radius:1em;border-radius:1em}.ui-btn-corner-all,.ui-corner-all{-webkit-background-clip:padding;background-clip:padding-box}.ui-popup.ui-corner-all>.ui-popup-arrow-guide{left:.6em;right:.6em;top:.6em;bottom:.6em}.ui-shadow{-webkit-box-shadow:0 1px 3px rgba(0,0,0,.15);-moz-box-shadow:0 1px 3px rgba(0,0,0,.15);box-shadow:0 1px 3px rgba(0,0,0,.15)}.ui-shadow-inset{-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.2);-moz-box-shadow:inset 0 1px 3px rgba(0,0,0,.2);box-shadow:inset 0 1px 3px rgba(0,0,0,.2)}.ui-overlay-shadow{-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);-moz-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-btn-icon-left:after,.ui-btn-icon-right:after,.ui-btn-icon-top:after,.ui-btn-icon-bottom:after,.ui-btn-icon-notext:after{background-color:#666;background-color:rgba(0,0,0,.3);background-position:center center;background-repeat:no-repeat;-webkit-border-radius:1em;border-radius:1em}.ui-alt-icon.ui-btn:after,.ui-alt-icon .ui-btn:after,html .ui-alt-icon.ui-checkbox-off:after,html .ui-alt-icon.ui-radio-off:after,html .ui-alt-icon .ui-checkbox-off:after,html .ui-alt-icon .ui-radio-off:after{background-color:#666;background-color:rgba(0,0,0,.15)}.ui-nodisc-icon.ui-btn:after,.ui-nodisc-icon .ui-btn:after{background-color:transparent}.ui-shadow-icon.ui-btn:after,.ui-shadow-icon .ui-btn:after{-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.ui-btn.ui-checkbox-off:after,.ui-btn.ui-checkbox-on:after,.ui-btn.ui-radio-off:after,.ui-btn.ui-radio-on:after{display:block;width:18px;height:18px;margin:-9px 2px 0 2px}.ui-checkbox-off:after,.ui-btn.ui-radio-off:after{filter:Alpha(Opacity=30);opacity:.3}.ui-btn.ui-checkbox-off:after,.ui-btn.ui-checkbox-on:after{-webkit-border-radius:.1875em;border-radius:.1875em}.ui-btn.ui-checkbox-off:after{background-color:#666;background-color:rgba(0,0,0,.3)}.ui-radio .ui-btn.ui-radio-on:after{background-image:none;background-color:#fff;width:8px;height:8px;border-width:5px;border-style:solid}.ui-alt-icon.ui-btn.ui-radio-on:after,.ui-alt-icon .ui-btn.ui-radio-on:after{background-color:#000}.ui-icon-loading{background:url(images/ajax-loader.gif);background-size:2.875em 2.875em}.ui-bar-a,.ui-page-theme-a .ui-bar-inherit,html .ui-bar-a .ui-bar-inherit,html .ui-body-a .ui-bar-inherit,html body .ui-group-theme-a .ui-bar-inherit{background-color:#e9e9e9;border-color:#ddd;color:#333;text-shadow:0 1px 0 #eee;font-weight:700}.ui-bar-a{border-width:1px;border-style:solid}.ui-overlay-a,.ui-page-theme-a,.ui-page-theme-a .ui-panel-wrapper{background-color:#f9f9f9;border-color:#bbb;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-body-a,.ui-page-theme-a .ui-body-inherit,html .ui-bar-a .ui-body-inherit,html .ui-body-a .ui-body-inherit,html body .ui-group-theme-a .ui-body-inherit,html .ui-panel-page-container-a{background-color:#fff;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-body-a{border-width:1px;border-style:solid}.ui-page-theme-a a,html .ui-bar-a a,html .ui-body-a a,html body .ui-group-theme-a a{color:#38c;font-weight:700}.ui-page-theme-a a:visited,html .ui-bar-a a:visited,html .ui-body-a a:visited,html body .ui-group-theme-a a:visited{color:#38c}.ui-page-theme-a a:hover,html .ui-bar-a a:hover,html .ui-body-a a:hover,html body .ui-group-theme-a a:hover{color:#059}.ui-page-theme-a a:active,html .ui-bar-a a:active,html .ui-body-a a:active,html body .ui-group-theme-a a:active{color:#059}.ui-page-theme-a .ui-btn,html .ui-bar-a .ui-btn,html .ui-body-a .ui-btn,html body .ui-group-theme-a .ui-btn,html head+body .ui-btn.ui-btn-a,.ui-page-theme-a .ui-btn:visited,html .ui-bar-a .ui-btn:visited,html .ui-body-a .ui-btn:visited,html body .ui-group-theme-a .ui-btn:visited,html head+body .ui-btn.ui-btn-a:visited{background-color:#f6f6f6;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-page-theme-a .ui-btn:hover,html .ui-bar-a .ui-btn:hover,html .ui-body-a .ui-btn:hover,html body .ui-group-theme-a .ui-btn:hover,html head+body .ui-btn.ui-btn-a:hover{background-color:#ededed;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-page-theme-a .ui-btn:active,html .ui-bar-a .ui-btn:active,html .ui-body-a .ui-btn:active,html body .ui-group-theme-a .ui-btn:active,html head+body .ui-btn.ui-btn-a:active{background-color:#e8e8e8;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-page-theme-a .ui-btn.ui-btn-active,html .ui-bar-a .ui-btn.ui-btn-active,html .ui-body-a .ui-btn.ui-btn-active,html body .ui-group-theme-a .ui-btn.ui-btn-active,html head+body .ui-btn.ui-btn-a.ui-btn-active,.ui-page-theme-a .ui-checkbox-on:after,html .ui-bar-a .ui-checkbox-on:after,html .ui-body-a .ui-checkbox-on:after,html body .ui-group-theme-a .ui-checkbox-on:after,.ui-btn.ui-checkbox-on.ui-btn-a:after,.ui-page-theme-a .ui-flipswitch-active,html .ui-bar-a .ui-flipswitch-active,html .ui-body-a .ui-flipswitch-active,html body .ui-group-theme-a .ui-flipswitch-active,html body .ui-flipswitch.ui-bar-a.ui-flipswitch-active,.ui-page-theme-a .ui-slider-track .ui-btn-active,html .ui-bar-a .ui-slider-track .ui-btn-active,html .ui-body-a .ui-slider-track .ui-btn-active,html body .ui-group-theme-a .ui-slider-track .ui-btn-active,html body div.ui-slider-track.ui-body-a .ui-btn-active{background-color:#38c;border-color:#38c;color:#fff;text-shadow:0 1px 0 #059}.ui-page-theme-a .ui-radio-on:after,html .ui-bar-a .ui-radio-on:after,html .ui-body-a .ui-radio-on:after,html body .ui-group-theme-a .ui-radio-on:after,.ui-btn.ui-radio-on.ui-btn-a:after{border-color:#38c}.ui-page-theme-a .ui-btn:focus,html .ui-bar-a .ui-btn:focus,html .ui-body-a .ui-btn:focus,html body .ui-group-theme-a .ui-btn:focus,html head+body .ui-btn.ui-btn-a:focus,.ui-page-theme-a .ui-focus,html .ui-bar-a .ui-focus,html .ui-body-a .ui-focus,html body .ui-group-theme-a .ui-focus,html head+body .ui-btn-a.ui-focus,html head+body .ui-body-a.ui-focus{-webkit-box-shadow:0 0 12px #38c;-moz-box-shadow:0 0 12px #38c;box-shadow:0 0 12px #38c}.ui-bar-b,.ui-page-theme-b .ui-bar-inherit,html .ui-bar-b .ui-bar-inherit,html .ui-body-b .ui-bar-inherit,html body .ui-group-theme-b .ui-bar-inherit{background-color:#1d1d1d;border-color:#1b1b1b;color:#fff;text-shadow:0 1px 0 #111;font-weight:700}.ui-bar-b{border-width:1px;border-style:solid}.ui-overlay-b,.ui-page-theme-b,.ui-page-theme-b .ui-panel-wrapper{background-color:#252525;border-color:#454545;color:#fff;text-shadow:0 1px 0 #111}.ui-body-b,.ui-page-theme-b .ui-body-inherit,html .ui-bar-b .ui-body-inherit,html .ui-body-b .ui-body-inherit,html body .ui-group-theme-b .ui-body-inherit,html .ui-panel-page-container-b{background-color:#2a2a2a;border-color:#1d1d1d;color:#fff;text-shadow:0 1px 0 #111}.ui-body-b{border-width:1px;border-style:solid}.ui-page-theme-b a,html .ui-bar-b a,html .ui-body-b a,html body .ui-group-theme-b a{color:#2ad;font-weight:700}.ui-page-theme-b a:visited,html .ui-bar-b a:visited,html .ui-body-b a:visited,html body .ui-group-theme-b a:visited{color:#2ad}.ui-page-theme-b a:hover,html .ui-bar-b a:hover,html .ui-body-b a:hover,html body .ui-group-theme-b a:hover{color:#08b}.ui-page-theme-b a:active,html .ui-bar-b a:active,html .ui-body-b a:active,html body .ui-group-theme-b a:active{color:#08b}.ui-page-theme-b .ui-btn,html .ui-bar-b .ui-btn,html .ui-body-b .ui-btn,html body .ui-group-theme-b .ui-btn,html head+body .ui-btn.ui-btn-b,.ui-page-theme-b .ui-btn:visited,html .ui-bar-b .ui-btn:visited,html .ui-body-b .ui-btn:visited,html body .ui-group-theme-b .ui-btn:visited,html head+body .ui-btn.ui-btn-b:visited{background-color:#333;border-color:#1f1f1f;color:#fff;text-shadow:0 1px 0 #111}.ui-page-theme-b .ui-btn:hover,html .ui-bar-b .ui-btn:hover,html .ui-body-b .ui-btn:hover,html body .ui-group-theme-b .ui-btn:hover,html head+body .ui-btn.ui-btn-b:hover{background-color:#373737;border-color:#1f1f1f;color:#fff;text-shadow:0 1px 0 #111}.ui-page-theme-b .ui-btn:active,html .ui-bar-b .ui-btn:active,html .ui-body-b .ui-btn:active,html body .ui-group-theme-b .ui-btn:active,html head+body .ui-btn.ui-btn-b:active{background-color:#404040;border-color:#1f1f1f;color:#fff;text-shadow:0 1px 0 #111}.ui-page-theme-b .ui-btn.ui-btn-active,html .ui-bar-b .ui-btn.ui-btn-active,html .ui-body-b .ui-btn.ui-btn-active,html body .ui-group-theme-b .ui-btn.ui-btn-active,html head+body .ui-btn.ui-btn-b.ui-btn-active,.ui-page-theme-b .ui-checkbox-on:after,html .ui-bar-b .ui-checkbox-on:after,html .ui-body-b .ui-checkbox-on:after,html body .ui-group-theme-b .ui-checkbox-on:after,.ui-btn.ui-checkbox-on.ui-btn-b:after,.ui-page-theme-b .ui-flipswitch-active,html .ui-bar-b .ui-flipswitch-active,html .ui-body-b .ui-flipswitch-active,html body .ui-group-theme-b .ui-flipswitch-active,html body .ui-flipswitch.ui-bar-b.ui-flipswitch-active,.ui-page-theme-b .ui-slider-track .ui-btn-active,html .ui-bar-b .ui-slider-track .ui-btn-active,html .ui-body-b .ui-slider-track .ui-btn-active,html body .ui-group-theme-b .ui-slider-track .ui-btn-active,html body div.ui-slider-track.ui-body-b .ui-btn-active{background-color:#2ad;border-color:#2ad;color:#fff;text-shadow:0 1px 0 #08b}.ui-page-theme-b .ui-radio-on:after,html .ui-bar-b .ui-radio-on:after,html .ui-body-b .ui-radio-on:after,html body .ui-group-theme-b .ui-radio-on:after,.ui-btn.ui-radio-on.ui-btn-b:after{border-color:#2ad}.ui-page-theme-b .ui-btn:focus,html .ui-bar-b .ui-btn:focus,html .ui-body-b .ui-btn:focus,html body .ui-group-theme-b .ui-btn:focus,html head+body .ui-btn.ui-btn-b:focus,.ui-page-theme-b .ui-focus,html .ui-bar-b .ui-focus,html .ui-body-b .ui-focus,html body .ui-group-theme-b .ui-focus,html head+body .ui-btn-b.ui-focus,html head+body .ui-body-b.ui-focus{-webkit-box-shadow:0 0 12px #2ad;-moz-box-shadow:0 0 12px #2ad;box-shadow:0 0 12px #2ad}.ui-disabled,.ui-state-disabled,button[disabled],.ui-select .ui-btn.ui-state-disabled{filter:Alpha(Opacity=30);opacity:.3;cursor:default!important;pointer-events:none}.ui-btn:focus,.ui-btn.ui-focus{outline:0}.ui-noboxshadow .ui-shadow,.ui-noboxshadow .ui-shadow-inset,.ui-noboxshadow .ui-overlay-shadow,.ui-noboxshadow .ui-shadow-icon.ui-btn:after,.ui-noboxshadow .ui-shadow-icon .ui-btn:after,.ui-noboxshadow .ui-focus,.ui-noboxshadow .ui-btn:focus,.ui-noboxshadow input:focus,.ui-noboxshadow .ui-panel{-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important}.ui-noboxshadow .ui-btn:focus,.ui-noboxshadow .ui-focus{outline-width:1px;outline-style:auto}.ui-mobile,.ui-mobile body{height:99.9%}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile fieldset{border-width:0}.ui-mobile fieldset{min-width:0}@-moz-document url-prefix(){.ui-mobile fieldset{display:table-column;vertical-align:middle}}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:100%;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-page{outline:0}.ui-mobile .ui-page-active{display:block;overflow:visible;overflow-x:hidden}@media screen and (orientation:portrait){.ui-mobile .ui-page{min-height:420px}}@media screen and (orientation:landscape){.ui-mobile .ui-page{min-height:300px}}.ui-mobile-rendering>*{visibility:hidden}.ui-nojs{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-loading .ui-loader{display:block}.ui-loader{display:none;z-index:9999999;position:fixed;top:50%;left:50%;border:0}.ui-loader-default{background:0;filter:Alpha(Opacity=18);opacity:.18;width:2.875em;height:2.875em;margin-left:-1.4375em;margin-top:-1.4375em}.ui-loader-verbose{width:12.5em;filter:Alpha(Opacity=88);opacity:.88;box-shadow:0 1px 1px -1px #fff;height:auto;margin-left:-6.875em;margin-top:-2.6875em;padding:.625em}.ui-loader-default h1{font-size:0;width:0;height:0;overflow:hidden}.ui-loader-verbose h1{font-size:1em;margin:0;text-align:center}.ui-loader .ui-icon-loading{background-color:#000;display:block;margin:0;width:2.75em;height:2.75em;padding:.0625em;-webkit-border-radius:2.25em;border-radius:2.25em}.ui-loader-verbose .ui-icon-loading{margin:0 auto .625em;filter:Alpha(Opacity=75);opacity:.75}.ui-loader-textonly{padding:.9375em;margin-left:-7.1875em}.ui-loader-textonly .ui-icon-loading{display:none}.ui-loader-fakefix{position:absolute}.ui-bar,.ui-body{position:relative;padding:.4em 1em;overflow:hidden;display:block;clear:both}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:1em;display:inline-block}.ui-header,.ui-footer{border-width:1px 0;border-style:solid;position:relative}.ui-header:empty,.ui-footer:empty{min-height:2.6875em}.ui-header .ui-title,.ui-footer .ui-title{font-size:1em;min-height:1.1em;text-align:center;display:block;margin:0 30%;padding:.7em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-footer .ui-title{margin:0 1em}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:1em}.ui-corner-all>.ui-header:first-child,.ui-corner-all>.ui-content:first-child,.ui-corner-all>.ui-footer:first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-corner-all>.ui-header:last-child,.ui-corner-all>.ui-content:last-child,.ui-corner-all>.ui-footer:last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-btn{font-size:16px;margin:.5em 0;padding:.7em 1em;display:block;position:relative;text-align:center;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui-btn-icon-notext,.ui-header button.ui-btn.ui-btn-icon-notext,.ui-footer button.ui-btn.ui-btn-icon-notext{padding:0;width:1.75em;height:1.75em;text-indent:-9999px;white-space:nowrap!important}.ui-mini{font-size:12.5px}.ui-mini .ui-btn{font-size:inherit}.ui-header .ui-btn,.ui-footer .ui-btn{font-size:12.5px;display:inline-block;vertical-align:middle}.ui-header .ui-controlgroup .ui-btn-icon-notext,.ui-footer .ui-controlgroup .ui-btn-icon-notext{font-size:12.5px}.ui-header .ui-btn-left,.ui-header .ui-btn-right{font-size:12.5px}.ui-mini.ui-btn-icon-notext,.ui-mini .ui-btn-icon-notext,.ui-header .ui-btn-icon-notext,.ui-footer .ui-btn-icon-notext{font-size:16px;padding:0}.ui-btn-inline{display:inline-block;vertical-align:middle;margin-right:.625em}.ui-btn-icon-left{padding-left:2.5em}.ui-btn-icon-right{padding-right:2.5em}.ui-btn-icon-top{padding-top:2.5em}.ui-btn-icon-bottom{padding-bottom:2.5em}.ui-header .ui-btn-icon-top,.ui-footer .ui-btn-icon-top,.ui-header .ui-btn-icon-bottom,.ui-footer .ui-btn-icon-bottom{padding-left:.3125em;padding-right:.3125em}.ui-btn-icon-left:after,.ui-btn-icon-right:after,.ui-btn-icon-top:after,.ui-btn-icon-bottom:after,.ui-btn-icon-notext:after{content:"";position:absolute;display:block;width:22px;height:22px}.ui-btn-icon-notext:after,.ui-btn-icon-left:after,.ui-btn-icon-right:after{top:50%;margin-top:-11px}.ui-btn-icon-left:after{left:.5625em}.ui-btn-icon-right:after{right:.5625em}.ui-mini.ui-btn-icon-left:after,.ui-mini .ui-btn-icon-left:after,.ui-header .ui-btn-icon-left:after,.ui-footer .ui-btn-icon-left:after{left:.37em}.ui-mini.ui-btn-icon-right:after,.ui-mini .ui-btn-icon-right:after,.ui-header .ui-btn-icon-right:after,.ui-footer .ui-btn-icon-right:after{right:.37em}.ui-btn-icon-notext:after,.ui-btn-icon-top:after,.ui-btn-icon-bottom:after{left:50%;margin-left:-11px}.ui-btn-icon-top:after{top:.5625em}.ui-btn-icon-bottom:after{top:auto;bottom:.5625em}.ui-header .ui-btn-left,.ui-header .ui-btn-right,.ui-btn-left>[class*=ui-],.ui-btn-right>[class*=ui-]{margin:0}.ui-btn-left,.ui-btn-right{position:absolute;top:.24em}.ui-btn-left{left:.4em}.ui-btn-right{right:.4em}.ui-btn-icon-notext.ui-btn-left{top:.3125em;left:.3125em}.ui-btn-icon-notext.ui-btn-right{top:.3125em;right:.3125em}button.ui-btn,.ui-controlgroup-controls button.ui-btn-icon-notext{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;width:100%}button.ui-btn-inline,.ui-header button.ui-btn,.ui-footer button.ui-btn{width:auto}button.ui-btn::-moz-focus-inner{border:0}button.ui-btn-icon-notext,.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;width:1.75em}.ui-mobile label,.ui-controlgroup-label{display:block;margin:0 0 .4em}.ui-hide-label>label,.ui-hide-label .ui-controlgroup-label,.ui-hide-label .ui-rangeslider label,.ui-hidden-accessible{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-screen-hidden{display:none!important}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-page-pre-in{opacity:0}.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.out{-webkit-animation-timing-function:ease-in;-webkit-animation-duration:225ms;-moz-animation-timing-function:ease-in;-moz-animation-duration:225ms;animation-timing-function:ease-in;animation-duration:225ms}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-moz-keyframes fadein{from{opacity:0}to{opacity:1}}@keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{opacity:1}to{opacity:0}}@-moz-keyframes fadeout{from{opacity:1}to{opacity:0}}@keyframes fadeout{from{opacity:1}to{opacity:0}}.fade.out{opacity:0;-webkit-animation-duration:125ms;-webkit-animation-name:fadeout;-moz-animation-duration:125ms;-moz-animation-name:fadeout;animation-duration:125ms;animation-name:fadeout}.fade.in{opacity:1;-webkit-animation-duration:225ms;-webkit-animation-name:fadein;-moz-animation-duration:225ms;-moz-animation-name:fadein;animation-duration:225ms;animation-name:fadein}.pop{-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);-webkit-animation-name:popin;-webkit-animation-duration:350ms;-moz-transform:scale(1);-moz-animation-name:popin;-moz-animation-duration:350ms;transform:scale(1);animation-name:popin;animation-duration:350ms;opacity:1}.pop.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms;opacity:0}.pop.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;animation-name:fadein}.pop.out.reverse{-webkit-transform:scale(.8);-webkit-animation-name:popout;-moz-transform:scale(.8);-moz-animation-name:popout;transform:scale(.8);animation-name:popout}@-webkit-keyframes popin{from{-webkit-transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes popin{from{-moz-transform:scale(.8);opacity:0}to{-moz-transform:scale(1);opacity:1}}@keyframes popin{from{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.8);opacity:0}}@-moz-keyframes popout{from{-moz-transform:scale(1);opacity:1}to{-moz-transform:scale(.8);opacity:0}}@keyframes popout{from{transform:scale(1);opacity:1}to{transform:scale(.8);opacity:0}}@-webkit-keyframes slideinfromright{from{-webkit-transform:translate3d(100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromright{from{-moz-transform:translateX(100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromright{from{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translate3d(-100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromleft{from{-moz-transform:translateX(-100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromleft{from{transform:translateX(-100%)}to{transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-100%,0,0)}}@-moz-keyframes slideouttoleft{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(-100%)}}@keyframes slideouttoleft{from{transform:translateX(0)}to{transform:translateX(-100%)}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(100%,0,0)}}@-moz-keyframes slideouttoright{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(100%)}}@keyframes slideouttoright{from{transform:translateX(0)}to{transform:translateX(100%)}}.slide.out,.slide.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.slide.out{-webkit-transform:translate3d(-100%,0,0);-webkit-animation-name:slideouttoleft;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;transform:translateX(-100%);animation-name:slideouttoleft}.slide.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromright;-moz-transform:translateX(0);-moz-animation-name:slideinfromright;transform:translateX(0);animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:slideouttoright;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;transform:translateX(100%);animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromleft;-moz-transform:translateX(0);-moz-animation-name:slideinfromleft;transform:translateX(0);animation-name:slideinfromleft}.slidefade.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft;-webkit-animation-duration:225ms;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;-moz-animation-duration:225ms;transform:translateX(-100%);animation-name:slideouttoleft;animation-duration:225ms}.slidefade.in{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidefade.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright;-webkit-animation-duration:200ms;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;-moz-animation-duration:200ms;transform:translateX(100%);animation-name:slideouttoright;animation-duration:200ms}.slidefade.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidedown.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfromtop;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfromtop;animation-duration:250ms}.slidedown.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slidedown.out.reverse{-webkit-transform:translateY(-100%);-webkit-animation-name:slideouttotop;-webkit-animation-duration:200ms;-moz-transform:translateY(-100%);-moz-animation-name:slideouttotop;-moz-animation-duration:200ms;transform:translateY(-100%);animation-name:slideouttotop;animation-duration:200ms}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfromtop{from{-moz-transform:translateY(-100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfromtop{from{transform:translateY(-100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-moz-keyframes slideouttotop{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(-100%)}}@keyframes slideouttotop{from{transform:translateY(0)}to{transform:translateY(-100%)}}.slideup.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfrombottom;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfrombottom;animation-duration:250ms}.slideup.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slideup.out.reverse{-webkit-transform:translateY(100%);-webkit-animation-name:slideouttobottom;-webkit-animation-duration:200ms;-moz-transform:translateY(100%);-moz-animation-name:slideouttobottom;-moz-animation-duration:200ms;transform:translateY(100%);animation-name:slideouttobottom;animation-duration:200ms}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfrombottom{from{-moz-transform:translateY(100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfrombottom{from{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-moz-keyframes slideouttobottom{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(100%)}}@keyframes slideouttobottom{from{transform:translateY(0)}to{transform:translateY(100%)}}.viewport-flip{-webkit-perspective:1000;-moz-perspective:1000;perspective:1000;position:absolute}.flip{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-moz-backface-visibility:hidden;-moz-transform:translateX(0);backface-visibility:hidden;transform:translateX(0)}.flip.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:175ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:175ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:175ms}.flip.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:225ms;-moz-animation-name:flipintoright;-moz-animation-duration:225ms;animation-name:flipintoright;animation-duration:225ms}.flip.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.flip.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.viewport-turn{-webkit-perspective:200px;-moz-perspective:200px;-ms-perspective:200px;perspective:200px;position:absolute}.turn{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-webkit-transform-origin:0;-moz-backface-visibility:hidden;-moz-transform:translateX(0);-moz-transform-origin:0;backface-visibility:hidden;transform:translateX(0);transform-origin:0}.turn.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:125ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:125ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:125ms}.turn.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:250ms;-moz-animation-name:flipintoright;-moz-animation-duration:250ms;animation-name:flipintoright;animation-duration:250ms}.turn.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.turn.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.flow{-webkit-transform-origin:50% 30%;-webkit-box-shadow:0 0 20px rgba(0,0,0,.4);-moz-transform-origin:50% 30%;-moz-box-shadow:0 0 20px rgba(0,0,0,.4);transform-origin:50% 30%;box-shadow:0 0 20px rgba(0,0,0,.4)}.ui-dialog.flow{-webkit-transform-origin:none;-webkit-box-shadow:none;-moz-transform-origin:none;-moz-box-shadow:none;transform-origin:none;box-shadow:none}.flow.out{-webkit-transform:translateX(-100%) scale(.7);-webkit-animation-name:flowouttoleft;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(-100%) scale(.7);-moz-animation-name:flowouttoleft;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(-100%) scale(.7);animation-name:flowouttoleft;animation-timing-function:ease;animation-duration:350ms}.flow.in{-webkit-transform:translateX(0) scale(1);-webkit-animation-name:flowinfromright;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(0) scale(1);-moz-animation-name:flowinfromright;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(0) scale(1);animation-name:flowinfromright;animation-timing-function:ease;animation-duration:350ms}.flow.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:flowouttoright;-moz-transform:translateX(100%);-moz-animation-name:flowouttoright;transform:translateX(100%);animation-name:flowouttoright}.flow.in.reverse{-webkit-animation-name:flowinfromleft;-moz-animation-name:flowinfromleft;animation-name:flowinfromleft}@-webkit-keyframes flowouttoleft{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(-100%) scale(.7)}}@-moz-keyframes flowouttoleft{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(-100%) scale(.7)}}@keyframes flowouttoleft{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(-100%) scale(.7)}}@-webkit-keyframes flowouttoright{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(100%) scale(.7)}}@-moz-keyframes flowouttoright{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(100%) scale(.7)}}@keyframes flowouttoright{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(100%) scale(.7)}}@-webkit-keyframes flowinfromleft{0%{-webkit-transform:translateX(-100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromleft{0%{-moz-transform:translateX(-100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromleft{0%{transform:translateX(-100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}@-webkit-keyframes flowinfromright{0%{-webkit-transform:translateX(100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromright{0%{-moz-transform:translateX(100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromright{0%{transform:translateX(100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}.ui-field-contain,.ui-mobile fieldset.ui-field-contain{display:block;position:relative;overflow:visible;clear:both;padding:.8em 0}.ui-field-contain>label~[class*=ui-],.ui-field-contain .ui-controlgroup-controls{margin:0}.ui-field-contain:last-child{border-bottom-width:0}@media (min-width:28em){.ui-field-contain,.ui-mobile fieldset.ui-field-contain{padding:0;margin:1em 0;border-bottom-width:0}.ui-field-contain:before,.ui-field-contain:after{content:"";display:table}.ui-field-contain:after{clear:both}.ui-field-contain>label,.ui-field-contain .ui-controlgroup-label,.ui-field-contain>.ui-rangeslider>label{float:left;width:20%;margin:.5em 2% 0 0}.ui-popup .ui-field-contain>label,.ui-popup .ui-field-contain .ui-controlgroup-label,.ui-popup .ui-field-contain>.ui-rangeslider>label{float:none;width:auto;margin:0 0 .4em}.ui-field-contain>label~[class*=ui-],.ui-field-contain .ui-controlgroup-controls{float:left;width:78%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-hide-label>label~[class*=ui-],.ui-hide-label .ui-controlgroup-controls,.ui-popup .ui-field-contain>label~[class*=ui-],.ui-popup .ui-field-contain .ui-controlgroup-controls{float:none;width:100%}.ui-field-contain>label~.ui-btn-inline{width:auto;margin-right:.625em}.ui-field-contain>label~.ui-btn-inline.ui-btn-icon-notext{width:1.75em}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d,.ui-grid-solo{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;min-height:1px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-block-a{clear:left}ul.ui-grid-a,ul.ui-grid-b,ul.ui-grid-c,ul.ui-grid-d,ul.ui-grid-solo,li.ui-block-a,li.ui-block-b,li.ui-block-c,li.ui-block-d,li.ui-block-e{margin-left:0;margin-right:0;padding:0;list-style:none}[class*=ui-block-]>button.ui-btn{margin-right:0;margin-left:0}[class*=ui-block-]>.ui-btn,[class*=ui-block-]>.ui-select,[class*=ui-block-]>.ui-checkbox,[class*=ui-block-]>.ui-radio,[class*=ui-block-]>button.ui-btn-inline,[class*=ui-block-]>button.ui-btn-icon-notext,.ui-header [class*=ui-block-]>button.ui-btn,.ui-footer [class*=ui-block-]>button.ui-btn{margin-right:.3125em;margin-left:.3125em}.ui-grid-a>.ui-block-a,.ui-grid-a>.ui-block-b{width:50%}.ui-grid-b>.ui-block-a,.ui-grid-b>.ui-block-b,.ui-grid-b>.ui-block-c{width:33.333%}.ui-grid-c>.ui-block-a,.ui-grid-c>.ui-block-b,.ui-grid-c>.ui-block-c,.ui-grid-c>.ui-block-d{width:25%}.ui-grid-d>.ui-block-a,.ui-grid-d>.ui-block-b,.ui-grid-d>.ui-block-c,.ui-grid-d>.ui-block-d,.ui-grid-d>.ui-block-e{width:20%}.ui-grid-solo>.ui-block-a{width:100%;float:none}@media (max-width:35em){.ui-responsive>.ui-block-a,.ui-responsive>.ui-block-b,.ui-responsive>.ui-block-c,.ui-responsive>.ui-block-d,.ui-responsive>.ui-block-e{width:100%;float:none}}.ui-header-fixed,.ui-footer-fixed{left:0;right:0;width:100%;position:fixed;z-index:1000}.ui-header-fixed{top:-1px;padding-top:1px}.ui-header-fixed.ui-fixed-hidden{top:0;padding-top:0}.ui-header-fixed .ui-btn-left,.ui-header-fixed .ui-btn-right{margin-top:1px}.ui-header-fixed.ui-fixed-hidden .ui-btn-left,.ui-header-fixed.ui-fixed-hidden .ui-btn-right{margin-top:0}.ui-footer-fixed{bottom:-1px;padding-bottom:1px}.ui-footer-fixed.ui-fixed-hidden{bottom:0;padding-bottom:0}.ui-header-fullscreen,.ui-footer-fullscreen{filter:Alpha(Opacity=90);opacity:.9}.ui-page-header-fixed{padding-top:2.8125em}.ui-page-footer-fixed{padding-bottom:2.8125em}.ui-page-header-fullscreen>.ui-content,.ui-page-footer-fullscreen>.ui-content{padding:0}.ui-fixed-hidden{position:absolute}.ui-footer-fixed.ui-fixed-hidden{display:none}.ui-page .ui-footer-fixed.ui-fixed-hidden{display:block}.ui-page-header-fullscreen .ui-fixed-hidden,.ui-page-footer-fullscreen .ui-fixed-hidden{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-header-fixed .ui-btn,.ui-footer-fixed .ui-btn{z-index:10}.ui-android-2x-fixed .ui-li-has-thumb{-webkit-transform:translate3d(0,0,0)}.ui-navbar{max-width:100%}.ui-navbar ul:before,.ui-navbar ul:after{content:"";display:table}.ui-navbar ul:after{clear:both}.ui-navbar ul{list-style:none;margin:0;padding:0;position:relative;display:block;border:0;max-width:100%;overflow:visible}.ui-navbar li .ui-btn{font-size:12.5px;display:block;margin:0;border-right-width:0}.ui-header .ui-navbar li button.ui-btn,.ui-footer .ui-navbar li button.ui-btn{margin:0;width:100%}.ui-navbar .ui-btn:focus{z-index:1}.ui-navbar li:last-child .ui-btn{margin-right:-4px}.ui-navbar li:last-child .ui-btn:after{margin-right:4px}.ui-content .ui-navbar li:last-child .ui-btn,.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn{border-right-width:1px;margin-right:0}.ui-content .ui-navbar li:last-child .ui-btn:after,.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn:after{margin-right:0}.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn{border-right-width:1px;margin-right:-1px}.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn:after{margin-right:1px}.ui-navbar .ui-grid-duo .ui-btn{border-top-width:0}.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn{border-top-width:1px}.ui-header .ui-navbar .ui-btn,.ui-footer .ui-navbar .ui-btn{border-top-width:0;border-bottom-width:0}.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn{border-top-width:0}.ui-header .ui-title~.ui-navbar .ui-btn,.ui-footer .ui-title~.ui-navbar .ui-btn,.ui-header .ui-navbar .ui-grid-duo .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-btn,.ui-header .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-footer .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-header .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn,.ui-footer .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn{border-top-width:1px}.ui-input-btn input{position:absolute;top:0;left:0;width:100%;height:100%;padding:0;border:0;outline:0;-webkit-border-radius:inherit;border-radius:inherit;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=0);opacity:.1;font-size:1px;text-indent:-9999px;z-index:2}.ui-input-btn.ui-state-disabled input{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-collapsible{margin:0 -1em}.ui-collapsible-inset,.ui-collapsible-set{margin:.5em 0}.ui-collapsible-heading{display:block;margin:0;padding:0;position:relative}.ui-collapsible-heading .ui-btn{text-align:left;margin:0;border-left-width:0;border-right-width:0}.ui-collapsible-heading .ui-btn-icon-top,.ui-collapsible-heading .ui-btn-icon-bottom{text-align:center}.ui-collapsible-inset .ui-collapsible-heading .ui-btn{border-right-width:1px;border-left-width:1px}.ui-collapsible-collapsed+.ui-collapsible:not(.ui-collapsible-inset)>.ui-collapsible-heading .ui-btn{border-top-width:0}.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:1px}.ui-collapsible-heading-status{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-collapsible-content{display:block;margin:0;padding:.5em 1em}.ui-collapsible-themed-content .ui-collapsible-content{border-left-width:0;border-right-width:0;border-top-width:0;border-bottom-width:1px;border-style:solid}.ui-collapsible-inset.ui-collapsible-themed-content .ui-collapsible-content{border-left-width:1px;border-right-width:1px}.ui-collapsible-inset .ui-collapsible-content{margin:0}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set>.ui-collapsible.ui-corner-all{-webkit-border-radius:0;border-radius:0}.ui-collapsible-heading,.ui-collapsible-heading>.ui-btn{-webkit-border-radius:inherit;border-radius:inherit}.ui-collapsible-set .ui-collapsible.ui-first-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-collapsible-content,.ui-collapsible-set .ui-collapsible.ui-last-child{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-collapsible-themed-content:not(.ui-collapsible-collapsed)>.ui-collapsible-heading{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui-collapsible-set .ui-collapsible{margin:-1px -1em 0}.ui-collapsible-set .ui-collapsible-inset{margin:-1px 0 0}.ui-collapsible-set .ui-collapsible.ui-first-child{margin-top:0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0}.ui-field-contain .ui-controlgroup,.ui-field-contain fieldset.ui-controlgroup{margin:0}.ui-mini .ui-controlgroup-label{font-size:16px}.ui-controlgroup.ui-mini .ui-btn-icon-notext,.ui-controlgroup .ui-mini.ui-btn-icon-notext{font-size:inherit}.ui-controlgroup-controls .ui-btn,.ui-controlgroup-controls .ui-checkbox,.ui-controlgroup-controls .ui-radio,.ui-controlgroup-controls .ui-select{margin:0}.ui-controlgroup-controls .ui-btn:focus,.ui-controlgroup-controls .ui-btn.ui-focus{z-index:1}.ui-controlgroup-controls li{list-style:none}.ui-controlgroup-horizontal .ui-controlgroup-controls{display:inline-block;vertical-align:middle}.ui-controlgroup-horizontal .ui-controlgroup-controls:before,.ui-controlgroup-horizontal .ui-controlgroup-controls:after{content:"";display:table}.ui-controlgroup-horizontal .ui-controlgroup-controls:after{clear:both}.ui-controlgroup-horizontal .ui-controlgroup-controls>.ui-btn,.ui-controlgroup-horizontal .ui-controlgroup-controls li>.ui-btn,.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-checkbox,.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-radio,.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-select{float:left;clear:none}.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn,.ui-controlgroup-controls .ui-btn-icon-notext{width:auto}.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn-icon-notext,.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn-icon-notext{width:1.5em}.ui-controlgroup-controls .ui-btn-icon-notext{height:auto;padding:.7em 1em}.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn{border-bottom-width:0}.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn.ui-last-child{border-bottom-width:1px}.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn{border-right-width:0}.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn.ui-last-child{border-right-width:1px}.ui-controlgroup-controls .ui-btn-corner-all,.ui-controlgroup-controls .ui-btn.ui-corner-all{-webkit-border-radius:0;border-radius:0}.ui-controlgroup-controls,.ui-controlgroup-controls .ui-radio,.ui-controlgroup-controls .ui-checkbox,.ui-controlgroup-controls .ui-select,.ui-controlgroup-controls li{-webkit-border-radius:inherit;border-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-last-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup-controls a.ui-shadow:not(:focus),.ui-controlgroup-controls button.ui-shadow:not(:focus),.ui-controlgroup-controls div.ui-shadow:not(.ui-focus){-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.ui-controlgroup-label legend{max-width:100%}.ui-controlgroup-controls>label{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-dialog{background:none!important}.ui-dialog-contain{width:92.5%;max-width:500px;margin:10% auto 1em;padding:0;position:relative;top:-1em}.ui-dialog-contain>.ui-header,.ui-dialog-contain>.ui-content,.ui-dialog-contain>.ui-footer{display:block;position:relative;width:auto;margin:0}.ui-dialog-contain>.ui-header{overflow:hidden;z-index:10;padding:0;border-top-width:0}.ui-dialog-contain>.ui-footer{z-index:10;padding:0 1em;border-bottom-width:0}.ui-popup-open .ui-header-fixed,.ui-popup-open .ui-footer-fixed{position:absolute!important}.ui-popup-screen{background-image:url("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==");top:0;left:0;right:0;bottom:1px;position:absolute;filter:Alpha(Opacity=0);opacity:0;z-index:1099}.ui-popup-screen.in{opacity:.5;filter:Alpha(Opacity=50)}.ui-popup-screen.out{opacity:0;filter:Alpha(Opacity=0)}.ui-popup-container{z-index:1100;display:inline-block;position:absolute;padding:0;outline:0}.ui-popup{position:relative}.ui-popup.ui-body-inherit{border-width:1px;border-style:solid}.ui-popup-hidden{left:0;top:0;position:absolute!important;visibility:hidden}.ui-popup-truncate{height:1px;width:1px;margin:-1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-popup.ui-content,.ui-popup .ui-content{overflow:visible}.ui-popup>.ui-header{border-top-width:0}.ui-popup>.ui-footer{border-bottom-width:0}.ui-popup>p,.ui-popup>h1,.ui-popup>h2,.ui-popup>h3,.ui-popup>h4,.ui-popup>h5,.ui-popup>h6{margin:.5em .4375em}.ui-popup>span{display:block;margin:.5em .4375em}.ui-popup-container .ui-content>p,.ui-popup-container .ui-content>h1,.ui-popup-container .ui-content>h2,.ui-popup-container .ui-content>h3,.ui-popup-container .ui-content>h4,.ui-popup-container .ui-content>h5,.ui-popup-container .ui-content>h6{margin:.5em 0}.ui-popup-container .ui-content>span{margin:0}.ui-popup-container .ui-content>p:first-child,.ui-popup-container .ui-content>h1:first-child,.ui-popup-container .ui-content>h2:first-child,.ui-popup-container .ui-content>h3:first-child,.ui-popup-container .ui-content>h4:first-child,.ui-popup-container .ui-content>h5:first-child,.ui-popup-container .ui-content>h6:first-child{margin-top:0}.ui-popup-container .ui-content>p:last-child,.ui-popup-container .ui-content>h1:last-child,.ui-popup-container .ui-content>h2:last-child,.ui-popup-container .ui-content>h3:last-child,.ui-popup-container .ui-content>h4:last-child,.ui-popup-container .ui-content>h5:last-child,.ui-popup-container .ui-content>h6:last-child{margin-bottom:0}.ui-popup>img{max-width:100%;max-height:100%;vertical-align:middle}.ui-popup:not(.ui-content)>img:only-child,.ui-popup:not(.ui-content)>.ui-btn-left:first-child+img:last-child,.ui-popup:not(.ui-content)>.ui-btn-right:first-child+img:last-child{-webkit-border-radius:inherit;border-radius:inherit}.ui-popup iframe{vertical-align:middle}.ui-popup>.ui-btn-left,.ui-popup>.ui-btn-right{position:absolute;top:-11px;margin:0;z-index:1101}.ui-popup>.ui-btn-left{left:-11px}.ui-popup>.ui-btn-right{right:-11px}.ui-popup-arrow-container{width:20px;height:20px}.ui-popup-arrow-container.ui-popup-arrow-l{left:-10px;clip:rect(-1000px,10px,2000px,-1000px)}.ui-popup-arrow-container.ui-popup-arrow-t{top:-10px;clip:rect(-1000px,2000px,10px,-1000px)}.ui-popup-arrow-container.ui-popup-arrow-r{right:-10px;clip:rect(-1000px,2000px,2000px,10px)}.ui-popup-arrow-container.ui-popup-arrow-b{bottom:-10px;clip:rect(10px,2000px,1000px,-1000px)}.ui-popup-arrow-container .ui-popup-arrow{width:28.284271247px;height:28.284271247px;border-width:1px;border-style:solid}.ui-popup-arrow-container.ui-popup-arrow-t .ui-popup-arrow{left:-4.142135623px;top:5.857864376px}.ui-popup-arrow-container.ui-popup-arrow-b .ui-popup-arrow{left:-4.142135623px;top:-14.142135623px}.ui-popup-arrow-container.ui-popup-arrow-l .ui-popup-arrow{left:5.857864376px;top:-4.142135623px}.ui-popup-arrow-container.ui-popup-arrow-r .ui-popup-arrow{left:-14.142135623px;top:-4.142135623px}.ui-popup-arrow-container.ui-popup-arrow-t.ie .ui-popup-arrow{margin-left:-5.857864376269049px;margin-top:-7.0710678118654755px}.ui-popup-arrow-container.ui-popup-arrow-b.ie .ui-popup-arrow{margin-left:-5.857864376269049px;margin-top:-4.142135623730951px}.ui-popup-arrow-container.ui-popup-arrow-l.ie .ui-popup-arrow{margin-left:-7.0710678118654755px;margin-top:-5.857864376269049px}.ui-popup-arrow-container.ui-popup-arrow-r.ie .ui-popup-arrow{margin-left:-4.142135623730951px;margin-top:-5.857864376269049px}.ui-popup>.ui-popup-arrow-guide{position:absolute;left:0;right:0;top:0;bottom:0;visibility:hidden}.ui-popup-arrow-container{position:absolute}.ui-popup-arrow{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);position:absolute;overflow:hidden;box-sizing:border-box}.ui-popup-arrow-container.ie .ui-popup-arrow{-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.7071067811865474, M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865474, SizingMethod='auto expand')";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.7071067811865474, M12=-.7071067811865477, M21=.7071067811865477, M22=.7071067811865474, SizingMethod='auto expand')}.ui-checkbox,.ui-radio{margin:.5em 0;position:relative}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin:0;text-align:left;white-space:normal;z-index:2}.ui-controlgroup .ui-checkbox .ui-btn.ui-focus,.ui-controlgroup .ui-radio .ui-btn.ui-focus{z-index:3}.ui-checkbox .ui-btn-icon-top,.ui-radio .ui-btn-icon-top,.ui-checkbox .ui-btn-icon-bottom,.ui-radio .ui-btn-icon-bottom{text-align:center}.ui-controlgroup-horizontal .ui-checkbox .ui-btn:after,.ui-controlgroup-horizontal .ui-radio .ui-btn:after{content:none;display:none}.ui-checkbox input,.ui-radio input{position:absolute;left:.466em;top:50%;width:22px;height:22px;margin:-11px 0 0 0;outline:0!important;z-index:1}.ui-controlgroup-horizontal .ui-checkbox input,.ui-controlgroup-horizontal .ui-radio input{left:50%;margin-left:-9px}.ui-checkbox input:disabled,.ui-radio input:disabled{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-select{margin-top:.5em;margin-bottom:.5em;position:relative}.ui-select>select{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-select .ui-btn{margin:0;opacity:1}.ui-select .ui-btn select{position:absolute;top:0;left:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;outline:0;-webkit-border-radius:inherit;border-radius:inherit;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;filter:Alpha(Opacity=0);opacity:0;z-index:2}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-state-disabled select{display:none}.ui-select span.ui-state-disabled{filter:Alpha(Opacity=100);opacity:1}.ui-select .ui-btn.ui-select-nativeonly{border-radius:0;border:0}.ui-select .ui-btn.ui-select-nativeonly select{opacity:1;text-indent:0;display:block}.ui-select .ui-li-has-count.ui-btn{padding-right:2.8125em}.ui-select .ui-li-has-count.ui-btn-icon-right{padding-right:4.6875em}.ui-select .ui-btn-icon-right .ui-li-count{right:3.2em}.ui-select .ui-btn>span:not(.ui-li-count){display:block;text-overflow:ellipsis;overflow:hidden!important;white-space:nowrap}.ui-selectmenu.ui-popup{min-width:11em}.ui-selectmenu .ui-dialog-contain{overflow:hidden}.ui-selectmenu .ui-header{margin:0;padding:0;border-width:0}.ui-selectmenu.ui-dialog .ui-header{z-index:1;position:relative}.ui-selectmenu.ui-popup .ui-header{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui-selectmenu.ui-popup .ui-header h1:after{content:'.';visibility:hidden}.ui-selectmenu .ui-header .ui-title{margin:0 2.875em}.ui-selectmenu.ui-dialog .ui-content{overflow:visible;z-index:1}.ui-selectmenu .ui-selectmenu-list{margin:0;-webkit-border-radius:inherit;border-radius:inherit}.ui-header:not(.ui-screen-hidden)+.ui-selectmenu-list{-webkit-border-top-right-radius:0;border-top-right-radius:0;-webkit-border-top-left-radius:0;border-top-left-radius:0}.ui-header.ui-screen-hidden+.ui-selectmenu-list li.ui-first-child .ui-btn{border-top-width:0}.ui-selectmenu .ui-selectmenu-list li.ui-last-child .ui-btn{border-bottom-width:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-selectmenu .ui-selectmenu-placeholder{display:none}.ui-listview,.ui-listview>li{margin:0;padding:0;list-style:none}.ui-content .ui-listview,.ui-panel-inner>.ui-listview{margin:-1em}.ui-content .ui-listview-inset,.ui-panel-inner>.ui-listview-inset{margin:1em 0}.ui-collapsible-content>.ui-listview{margin:-.5em -1em}.ui-collapsible-content>.ui-listview-inset{margin:.5em 0}.ui-listview>li{display:block;position:relative;overflow:visible}.ui-listview>.ui-li-static,.ui-listview>.ui-li-divider,.ui-listview>li>a.ui-btn{margin:0;display:block;position:relative;text-align:left;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-listview>li>.ui-btn:focus{z-index:1}.ui-listview>.ui-li-static,.ui-listview>.ui-li-divider,.ui-listview>li>a.ui-btn{border-width:1px 0 0;border-style:solid}.ui-listview-inset>.ui-li-static,.ui-listview-inset>.ui-li-divider,.ui-listview-inset>li>a.ui-btn{border-right-width:1px;border-left-width:1px}.ui-listview>.ui-li-static.ui-last-child,.ui-listview>.ui-li-divider.ui-last-child,.ui-listview>li.ui-last-child>a.ui-btn{border-bottom-width:1px}.ui-collapsible-content>.ui-listview:not(.ui-listview-inset)>li.ui-first-child,.ui-collapsible-content>.ui-listview:not(.ui-listview-inset)>li.ui-first-child>a.ui-btn{border-top-width:0}.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset)>li.ui-last-child,.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset)>li.ui-last-child>a.ui-btn{border-bottom-width:0}.ui-listview>li.ui-first-child,.ui-listview>li.ui-first-child>a.ui-btn{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>li.ui-last-child,.ui-listview>li.ui-last-child>a.ui-btn{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-listview>li.ui-li-has-alt>a.ui-btn{-webkit-border-top-right-radius:0;border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.ui-listview>li.ui-first-child>a.ui-btn+a.ui-btn{-webkit-border-top-left-radius:0;border-top-left-radius:0;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-listview>li.ui-last-child>a.ui-btn+a.ui-btn{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-listview>li.ui-first-child img:first-child:not(.ui-li-icon){-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>li.ui-last-child img:first-child:not(.ui-li-icon){-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-collapsible-content>.ui-listview:not(.ui-listview-inset){-webkit-border-radius:inherit;border-radius:inherit}.ui-listview>.ui-li-static{padding:.7em 1em}.ui-listview>.ui-li-divider{padding:.5em 1.143em;font-size:14px;font-weight:700;cursor:default;outline:0}.ui-listview>.ui-li-has-count>.ui-btn,.ui-listview>.ui-li-static.ui-li-has-count,.ui-listview>.ui-li-divider.ui-li-has-count{padding-right:2.8125em}.ui-listview>.ui-li-has-count>.ui-btn-icon-right{padding-right:4.6875em}.ui-listview>.ui-li-has-thumb>.ui-btn,.ui-listview>.ui-li-static.ui-li-has-thumb{min-height:3.625em;padding-left:6.25em}.ui-listview>.ui-li-has-icon>.ui-btn,.ui-listview>.ui-li-static.ui-li-has-icon{min-height:1.25em;padding-left:2.5em}.ui-li-count{position:absolute;font-size:12.5px;font-weight:700;text-align:center;border-width:1px;border-style:solid;padding:0 .48em;line-height:1.6em;min-height:1.6em;min-width:.64em;right:.8em;top:50%;margin-top:-.88em}.ui-listview .ui-btn-icon-right .ui-li-count{right:3.2em}.ui-listview .ui-li-has-thumb>img:first-child,.ui-listview .ui-li-has-thumb>.ui-btn>img:first-child,.ui-listview .ui-li-has-thumb .ui-li-thumb{position:absolute;left:0;top:0;max-height:5em;max-width:5em}.ui-listview>.ui-li-has-icon>img:first-child,.ui-listview>.ui-li-has-icon>.ui-btn>img:first-child{position:absolute;left:.625em;top:.9em;max-height:1em;max-width:1em}.ui-listview>li h1,.ui-listview>li h2,.ui-listview>li h3,.ui-listview>li h4,.ui-listview>li h5,.ui-listview>li h6{font-size:1em;font-weight:700;display:block;margin:.45em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-listview>li p{font-size:.75em;font-weight:400;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-listview .ui-li-aside{position:absolute;top:1em;right:3.333em;margin:0;text-align:right}.ui-listview>li.ui-li-has-alt>.ui-btn{margin-right:2.5em;border-right-width:0}.ui-listview>li.ui-li-has-alt>.ui-btn+.ui-btn{position:absolute;width:2.5em;height:100%;min-height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-left-width:1px;top:0;right:0;margin:0;padding:0;z-index:2}.ui-listview-inset>li.ui-li-has-alt>.ui-btn+.ui-btn{border-right-width:1px}.ui-listview>li.ui-li-has-alt>.ui-btn+.ui-btn:focus{z-index:3}ol.ui-listview,ol.ui-listview>.ui-li-divider{counter-reset:listnumbering}ol.ui-listview>li>.ui-btn,ol.ui-listview>li.ui-li-static{vertical-align:middle}ol.ui-listview>li>.ui-btn:first-child:before,ol.ui-listview>li.ui-li-static:before,ol.ui-listview>li.ui-field-contain>label:before,ol.ui-listview>li.ui-field-contain>.ui-controlgroup-label:before{display:inline-block;font-size:.9em;font-weight:400;padding-right:.3em;min-width:1.4em;line-height:1.5;vertical-align:middle;counter-increment:listnumbering;content:counter(listnumbering) "."}ol.ui-listview>li.ui-field-contain:before{content:none;display:none}ol.ui-listview>li h1:first-child,ol.ui-listview>li h2:first-child,ol.ui-listview>li h3:first-child,ol.ui-listview>li h4:first-child,ol.ui-listview>li h5:first-child,ol.ui-listview>li h6:first-child,ol.ui-listview>li p:first-child,ol.ui-listview>li img:first-child+*{display:inline-block;vertical-align:middle}ol.ui-listview>li h1:first-child~*,ol.ui-listview>li h2:first-child~*,ol.ui-listview>li h3:first-child~*,ol.ui-listview>li h4:first-child~*,ol.ui-listview>li h5:first-child~*,ol.ui-listview>li h6:first-child~*,ol.ui-listview>li p:first-child~*,ol.ui-listview>li img:first-child+*~*{margin-top:0;text-indent:2.04em}html .ui-filterable+.ui-listview,html .ui-filterable.ui-listview{margin-top:.5em}.ui-collapsible-content>form.ui-filterable{margin-top:-.5em}.ui-collapsible-content>.ui-input-search.ui-filterable{margin-top:0}.ui-collapsible-content>.ui-filterable+.ui-listview:not(.ui-listview-inset)>li.ui-first-child,.ui-collapsible-content>.ui-filterable+.ui-listview:not(.ui-listview-inset)>li.ui-first-child>a.ui-btn,.ui-collapsible-content>.ui-filterable.ui-listview:not(.ui-listview-inset)>li.ui-first-child,.ui-collapsible-content>.ui-filterable.ui-listview:not(.ui-listview-inset)>li.ui-first-child>a.ui-btn{border-top-width:1px}div.ui-slider{height:30px;margin:.5em 0;padding:0;-ms-touch-action:pan-y pinch-zoom double-tap-zoom}div.ui-slider:before,div.ui-slider:after{content:"";display:table}div.ui-slider:after{clear:both}input.ui-slider-input{display:block;float:left;font-size:14px;font-weight:700;margin:0;padding:4px;width:40px;height:20px;line-height:20px;border-width:1px;border-style:solid;outline:0;text-align:center;vertical-align:text-bottom;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.ui-slider-input::-webkit-outer-spin-button,.ui-slider-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ui-slider-track{position:relative;overflow:visible;border-width:1px;border-style:solid;height:15px;margin:0 15px 0 68px;top:6px}.ui-slider-track.ui-mini{height:12px;top:8px}.ui-slider-track .ui-slider-bg{height:100%}.ui-slider-track .ui-btn.ui-slider-handle{position:absolute;z-index:1;top:50%;width:28px;height:28px;margin:-15px 0 0 -15px;outline:0;padding:0}.ui-slider-track.ui-mini .ui-slider-handle{height:14px;width:14px;margin:-8px 0 0 -8px}select.ui-slider-switch{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}div.ui-slider-switch{display:inline-block;height:32px;width:5.8em;top:0}div.ui-slider-switch:before,div.ui-slider-switch:after{display:none;clear:none}div.ui-slider-switch.ui-mini{height:29px;top:0}.ui-slider-inneroffset{margin:0 16px;position:relative;z-index:1}.ui-slider-switch.ui-mini .ui-slider-inneroffset{margin:0 15px 0 14px}.ui-slider-switch .ui-btn.ui-slider-handle{margin:1px 0 0 -15px}.ui-slider-switch.ui-mini .ui-slider-handle{width:25px;height:25px;margin:1px 0 0 -13px;padding:0}.ui-slider-handle-snapping{-webkit-transition:left 70ms linear;-moz-transition:left 70ms linear;transition:left 70ms linear}.ui-slider-switch .ui-slider-label{position:absolute;text-align:center;width:100%;overflow:hidden;font-size:16px;top:0;line-height:2;min-height:100%;white-space:nowrap;cursor:pointer}.ui-slider-switch.ui-mini .ui-slider-label{font-size:14px}.ui-slider-switch .ui-slider-label-a{z-index:1;left:0;text-indent:-1.5em}.ui-slider-switch .ui-slider-label-b{z-index:0;right:0;text-indent:1.5em}.ui-slider-track .ui-slider-bg,.ui-slider-switch .ui-slider-label,.ui-slider-switch .ui-slider-inneroffset,.ui-slider-handle{-webkit-border-radius:inherit;border-radius:inherit}.ui-field-contain div.ui-slider-switch{margin:0}.ui-field-contain div.ui-slider-switch,.ui-field-contain.ui-hide-label div.ui-slider-switch,html .ui-popup .ui-field-contain div.ui-slider-switch{display:inline-block;width:5.8em}.ui-slider-popup{width:64px;height:64px;font-size:36px;padding-top:14px;opacity:.8}.ui-slider-popup{position:absolute!important;text-align:center;z-index:100}.ui-slider-track .ui-btn.ui-slider-handle{font-size:.9em;line-height:30px}.ui-rangeslider{margin:.5em 0}.ui-rangeslider:before,.ui-rangeslider:after{content:"";display:table}.ui-rangeslider:after{clear:both}.ui-rangeslider .ui-slider-input.ui-rangeslider-last{float:right}.ui-rangeslider .ui-rangeslider-sliders{position:relative;overflow:visible;height:30px;margin:0 68px}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track{position:absolute;top:6px;right:0;left:0;margin:0}.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track{top:8px}.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg{display:none}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{background-color:transparent;background:0;border-width:0;height:0}html >body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{height:15px;border-width:1px}html >body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child{height:12px}div.ui-rangeslider label{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-field-contain .ui-rangeslider input.ui-slider-input,.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders{margin-top:0;margin-bottom:0}.ui-input-text,.ui-input-search{margin:.5em 0;border-width:1px;border-style:solid}.ui-mini{margin:.446em}.ui-input-text input,.ui-input-search input,textarea.ui-input-text{padding:.4em;line-height:1.4em;display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;outline:0}.ui-input-text input,.ui-input-search input{margin:0;min-height:2.2em;text-align:left;border:0;background:transparent none;-webkit-appearance:none;-webkit-border-radius:inherit;border-radius:inherit}textarea.ui-input-text{overflow:auto;resize:vertical}.ui-mini .ui-input-text input,.ui-mini .ui-input-search input,.ui-input-text.ui-mini input,.ui-input-search.ui-mini input,.ui-mini textarea.ui-input-text,textarea.ui-mini{font-size:14px}.ui-mini textarea.ui-input-text,textarea.ui-mini{margin:.446em 0}.ui-input-has-clear,.ui-input-search{position:relative}.ui-input-has-clear{padding-right:2.375em}.ui-mini.ui-input-has-clear{padding-right:2.923em}.ui-input-has-clear input{padding-right:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.ui-input-search input{padding-left:1.75em}.ui-input-search:after{position:absolute;left:.3125em;top:50%;margin-top:-7px;content:"";background-position:center center;background-repeat:no-repeat;width:14px;height:14px;filter:Alpha(Opacity=50);opacity:.5}.ui-input-search.ui-input-has-clear .ui-btn.ui-input-clear,.ui-input-text.ui-input-has-clear .ui-btn.ui-input-clear{position:absolute;right:0;top:50%;margin:-14px .3125em 0;border:0;background-color:transparent}.ui-input-search .ui-input-clear-hidden,.ui-input-text .ui-input-clear-hidden{display:none}.ui-input-text input::-moz-placeholder,.ui-input-search input::-moz-placeholder,textarea.ui-input-text::-moz-placeholder{color:#aaa}.ui-input-text input:-ms-input-placeholder,.ui-input-search input:-ms-input-placeholder,textarea.ui-input-text:-ms-input-placeholder{color:#aaa}.ui-input-text input[type=number]::-webkit-outer-spin-button{margin:0}.ui-input-text input::-ms-clear,.ui-input-search input::-ms-clear{display:none}.ui-input-text input:focus,.ui-input-search input:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}textarea.ui-input-text.ui-textinput-autogrow{overflow:hidden}.ui-textinput-autogrow-resize{-webkit-transition:height .25s;-o-transition:height .25s;-moz-transition:height .25s;transition:height .25s}.ui-flipswitch{display:inline-block;vertical-align:middle;width:5.875em;height:1.875em;border-width:1px;border-style:solid;margin:.5em 0;overflow:hidden;-webkit-transition-property:padding,width,background-color,color,border-color;-moz-transition-property:padding,width,background-color,color,border-color;-o-transition-property:padding,width,background-color,color,border-color;transition-property:padding,width,background-color,color,border-color;-webkit-transition-duration:100ms;-moz-transition-duration:100ms;-o-transition-duration:100ms;transition-duration:100ms;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.ui-flipswitch.ui-flipswitch-active{padding-left:4em;width:1.875em}.ui-flipswitch-input{position:absolute;height:1px;width:1px;margin:-1px;overflow:hidden;clip:rect(1px,1px,1px,1px);border:0;outline:0;filter:Alpha(Opacity=0);opacity:0}.ui-flipswitch .ui-btn.ui-flipswitch-on,.ui-flipswitch .ui-flipswitch-off{float:left;height:1.75em;margin:.0625em;line-height:1.65em}.ui-flipswitch .ui-btn.ui-flipswitch-on{width:1.75em;padding:0;text-indent:-2.6em;text-align:left;border-width:1px;border-style:solid;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:inherit;overflow:visible;color:inherit;text-shadow:inherit}.ui-flipswitch .ui-flipswitch-off{padding:1px;text-indent:1em}html .ui-field-contain>label+.ui-flipswitch,html .ui-popup .ui-field-contain>label+.ui-flipswitch{display:inline-block;width:5.875em;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.ui-field-contain .ui-flipswitch.ui-flipswitch-active,.ui-popup .ui-field-contain .ui-flipswitch.ui-flipswitch-active{width:1.875em}.ui-table{border:0;border-collapse:collapse;padding:0;width:100%}.ui-table th,.ui-table td{line-height:1.5em;text-align:left;padding:.4em .5em;vertical-align:top}.ui-table th .ui-btn,.ui-table td .ui-btn{line-height:normal}.ui-table th{font-weight:700}.ui-table caption{text-align:left;margin-bottom:1.4em;opacity:.5}.ui-table-columntoggle-btn{float:right;margin-bottom:.8em}.ui-table-columntoggle-popup fieldset{margin:0}.ui-table-columntoggle{clear:both}@media only all{th.ui-table-priority-6,td.ui-table-priority-6,th.ui-table-priority-5,td.ui-table-priority-5,th.ui-table-priority-4,td.ui-table-priority-4,th.ui-table-priority-3,td.ui-table-priority-3,th.ui-table-priority-2,td.ui-table-priority-2,th.ui-table-priority-1,td.ui-table-priority-1{display:none}}@media screen and (min-width:20em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-1,.ui-table-columntoggle.ui-responsive td.ui-table-priority-1{display:table-cell}}@media screen and (min-width:30em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-2,.ui-table-columntoggle.ui-responsive td.ui-table-priority-2{display:table-cell}}@media screen and (min-width:40em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-3,.ui-table-columntoggle.ui-responsive td.ui-table-priority-3{display:table-cell}}@media screen and (min-width:50em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-4,.ui-table-columntoggle.ui-responsive td.ui-table-priority-4{display:table-cell}}@media screen and (min-width:60em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-5,.ui-table-columntoggle.ui-responsive td.ui-table-priority-5{display:table-cell}}@media screen and (min-width:70em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-6,.ui-table-columntoggle.ui-responsive td.ui-table-priority-6{display:table-cell}}.ui-table-columntoggle th.ui-table-cell-hidden,.ui-table-columntoggle td.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden{display:none}.ui-table-columntoggle th.ui-table-cell-visible,.ui-table-columntoggle td.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible{display:table-cell}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{display:none}@media only all{.ui-table-reflow thead td,.ui-table-reflow thead th{display:none}.ui-table-reflow td,.ui-table-reflow th{text-align:left;display:block}.ui-table-reflow tbody th{margin-top:3em}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{padding:.4em;min-width:30%;display:inline-block;margin:-.4em 1em -.4em -.4em}.ui-table-reflow th .ui-table-cell-label-top,.ui-table-reflow td .ui-table-cell-label-top{display:block;padding:.4em 0;margin:.4em 0;text-transform:uppercase;font-size:.9em;font-weight:400}}@media (min-width:35em){.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th,.ui-table-reflow.ui-responsive tbody th,.ui-table-reflow.ui-responsive tbody td,.ui-table-reflow.ui-responsive thead td,.ui-table-reflow.ui-responsive thead th{display:table-cell;margin:0}.ui-table-reflow.ui-responsive td .ui-table-cell-label,.ui-table-reflow.ui-responsive th .ui-table-cell-label{display:none}}@media (max-width:35em){.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;clear:left}}.ui-panel{width:17em;min-height:100%;max-height:none;border-width:0;position:absolute;top:0;display:block}.ui-panel-closed{width:0;max-height:100%;overflow:hidden;visibility:hidden;left:0;clip:rect(1px,1px,1px,1px)}.ui-panel-fixed{position:fixed;bottom:-1px;padding-bottom:1px}.ui-panel-display-reveal{z-index:1}.ui-panel-display-push{z-index:999}.ui-panel-display-overlay{z-index:1001}.ui-panel-inner{padding:1em}.ui-panel-page-container{overflow-x:visible}.ui-panel-page-container-themed .ui-page-active{background:0}.ui-panel-wrapper{position:relative;min-height:inherit;border:0;overflow-x:hidden;z-index:999}.ui-panel-fixed-toolbar{overflow-x:hidden}.ui-panel-dismiss{position:absolute;top:0;left:0;right:0;height:100%;z-index:1002;display:none}.ui-panel-dismiss-open{display:block}.ui-panel-animate{-webkit-transition:-webkit-transform 300ms ease;-webkit-transition-duration:300ms;-moz-transition:-moz-transform 300ms ease;transition:transform 300ms ease}@media screen and (max-device-width:768px){.ui-page-header-fixed .ui-panel-animate.ui-panel-wrapper,.ui-page-footer-fixed .ui-panel-animate.ui-panel-wrapper,.ui-panel-animate.ui-panel-fixed-toolbar{-ms-transition:none}.ui-panel-animate.ui-panel-fixed-toolbar{-ms-transition:-ms-transform 1ms;-ms-transform:rotate(0deg)}}.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal){-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0)}.ui-panel-position-left{left:-17em}.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-left.ui-panel-display-push{left:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-position-left.ui-panel-display-reveal,.ui-panel-open.ui-panel-position-left{left:0}.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-overlay,.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-position-right{right:-17em}.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-right.ui-panel-display-push{right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-position-right.ui-panel-display-reveal,.ui-panel-position-right.ui-panel-open{right:0}.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-overlay,.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-page-content-position-left{left:17em;right:-17em}.ui-panel-animate.ui-panel-page-content-position-left{left:0;right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-page-content-position-right{left:-17em;right:17em}.ui-panel-animate.ui-panel-page-content-position-right{left:0;right:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-dismiss-open.ui-panel-dismiss-position-left{left:17em}.ui-panel-dismiss-open.ui-panel-dismiss-position-right{right:17em}.ui-panel-display-reveal{-webkit-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);box-shadow:inset -5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-reveal{-webkit-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);box-shadow:inset 5px 0 5px rgba(0,0,0,.15)}.ui-panel-display-overlay{-webkit-box-shadow:5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:5px 0 5px rgba(0,0,0,.15);box-shadow:5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-overlay{-webkit-box-shadow:-5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:-5px 0 5px rgba(0,0,0,.15);box-shadow:-5px 0 5px rgba(0,0,0,.15)}.ui-panel-open.ui-panel-position-left.ui-panel-display-push{border-right-width:1px;margin-right:-1px}.ui-panel-page-content-position-left.ui-panel-page-content-display-push{margin-left:1px;width:auto}.ui-panel-open.ui-panel-position-right.ui-panel-display-push{border-left-width:1px;margin-left:-1px}.ui-panel-page-content-position-right.ui-panel-page-content-display-push{margin-right:1px;width:auto}@media (min-width:55em){.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-left{margin-right:17em}.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-right{margin-left:17em}.ui-responsive-panel .ui-panel-page-content-open{width:auto}.ui-responsive-panel .ui-panel-dismiss-display-push,.ui-responsive-panel.ui-page-active~.ui-panel-dismiss-display-push{display:none}}.ui-tabs{position:relative;padding:.2em}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.inline-svg-1.4.5.css
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.inline-svg-1.4.5.css	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.inline-svg-1.4.5.css	(revision 101)
@@ -0,0 +1,4359 @@
+/*!
+* jQuery Mobile 1.4.5
+* Git HEAD hash: 68e55e78b292634d3991c795f06f5e37a512decc <> Date: Fri Oct 31 2014 17:33:30 UTC
+* http://jquerymobile.com
+*
+* Copyright 2010, 2014 jQuery Foundation, Inc. and othercontributors
+* Released under the MIT license.
+* http://jquery.org/license
+*
+*/
+
+
+.ui-icon-action:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M9%2C5v3l5-4L9%2C0v3c0%2C0-5%2C0-5%2C7C6%2C5%2C9%2C5%2C9%2C5z%20M11%2C12H2V5h1l2-2H0v11h13V7l-2%2C2V12z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-alert:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C0L0%2C12h14L7%2C0z%20M7%2C11c-0.553%2C0-1-0.447-1-1s0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1S7.553%2C11%2C7%2C11z%20M7%2C8%20C6.447%2C8%2C6%2C7.553%2C6%2C7V5c0-0.553%2C0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1v2C8%2C7.553%2C7.553%2C8%2C7%2C8z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-d-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C3%2011%2C0%203.5%2C7.5%200%2C4%200%2C14%2010%2C14%206.5%2C10.5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-d-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2210.5%2C7.5%203%2C0%200%2C3%207.5%2C10.5%204%2C14%2014%2C14%2014%2C4%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-d:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%229%2C7%209%2C0%205%2C0%205%2C7%200%2C7%207%2C14%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C5%207%2C0%200%2C7%207%2C14%207%2C9%2014%2C9%2014%2C5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C7%207%2C0%207%2C5%200%2C5%200%2C9%207%2C9%207%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-u-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C11%206.5%2C3.5%2010%2C0%200%2C0%200%2C10%203.5%2C6.5%2011%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-u-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C0%204%2C0%207.5%2C3.5%200%2C11%203%2C14%2010.5%2C6.5%2014%2C10%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-arrow-u:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C0%200%2C7%205%2C7%205%2C14%209%2C14%209%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-audio:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.018px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014.018%2014%22%20style%3D%22enable-background%3Anew%200%200%2014.018%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M1%2C4C0.447%2C4%2C0%2C4.447%2C0%2C5v4c0%2C0.553%2C0.447%2C1%2C1%2C1h1l4%2C4V0L2%2C4H1z%20M10.346%2C7c0-1.699-1.042-3.154-2.546-3.867L6.982%2C4.68%20C7.885%2C5.107%2C8.51%2C5.98%2C8.51%2C7S7.885%2C8.893%2C6.982%2C9.32L7.8%2C10.867C9.304%2C10.154%2C10.346%2C8.699%2C10.346%2C7z%20M9.447%2C0.017L8.618%2C1.586%20C10.723%2C2.584%2C12.182%2C4.621%2C12.182%2C7s-1.459%2C4.416-3.563%2C5.414l0.829%2C1.569c2.707-1.283%2C4.57-3.925%2C4.57-6.983%20S12.154%2C1.3%2C9.447%2C0.017z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-back:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M5%2C3V0L1%2C4l4%2C4V5c0%2C0%2C6%2C0%2C6%2C3s-5%2C4-5%2C4v2c0%2C0%2C7-1%2C7-6C13%2C4%2C8%2C3%2C5%2C3z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-bars:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M1%2C4h12c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H1C0.447%2C2%2C0%2C2.447%2C0%2C3S0.447%2C4%2C1%2C4z%20M13%2C6H1%20C0.447%2C6%2C0%2C6.447%2C0%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H1c-0.553%2C0-1%2C0.447-1%2C1%20s0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-bullets:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M5%2C4h8c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H5C4.447%2C2%2C4%2C2.447%2C4%2C3S4.447%2C4%2C5%2C4z%20M13%2C6H5%20C4.447%2C6%2C4%2C6.447%2C4%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H5c-0.553%2C0-1%2C0.447-1%2C1%20s0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%20M1%2C2C0.447%2C2%2C0%2C2.447%2C0%2C3s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C2%2C1%2C2z%20M1%2C6%20C0.447%2C6%2C0%2C6.447%2C0%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1s1-0.447%2C1-1C2%2C6.447%2C1.553%2C6%2C1%2C6z%20M1%2C10c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1s1-0.447%2C1-1%20S1.553%2C10%2C1%2C10z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-calendar:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M0%2C8h2V6H0V8z%20M3%2C8h2V6H3V8z%20M6%2C8h2V6H6V8z%20M9%2C8h2V6H9V8z%20M12%2C8h2V6h-2V8z%20M0%2C11h2V9H0V11z%20M3%2C11h2V9H3V11z%20M6%2C11h2V9H6V11z%20%20M9%2C11h2V9H9V11z%20M12%2C11h2V9h-2V11z%20M0%2C14h2v-2H0V14z%20M3%2C14h2v-2H3V14z%20M6%2C14h2v-2H6V14z%20M9%2C14h2v-2H9V14z%20M12%2C1%20c0-0.553-0.447-1-1-1s-1%2C0.447-1%2C1H4c0-0.553-0.447-1-1-1S2%2C0.447%2C2%2C1H0v4h14V1H12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-camera:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M12%2C2.5H9.908c-0.206-0.581-0.756-1-1.408-1h-3c-0.652%2C0-1.202%2C0.419-1.408%2C1H2c-1.104%2C0-2%2C0.896-2%2C2%20v6c0%2C1.104%2C0.896%2C2%2C2%2C2h10c1.104%2C0%2C2-0.896%2C2-2v-6C14%2C3.396%2C13.104%2C2.5%2C12%2C2.5z%20M7%2C10.5c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3C10%2C9.156%2C8.657%2C10.5%2C7%2C10.5z%20M7%2C5.5c-1.104%2C0-2%2C0.896-2%2C2c0%2C1.104%2C0.896%2C2%2C2%2C2c1.104%2C0%2C2-0.896%2C2-2%20C9%2C6.396%2C8.104%2C5.5%2C7%2C5.5z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-carat-d:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2211.949%2C3.404%207%2C8.354%202.05%2C3.404%20-0.071%2C5.525%207%2C12.596%2014.07%2C5.525%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-carat-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2210.596%2C11.949%205.646%2C7%2010.596%2C2.05%208.475%2C-0.071%201.404%2C7%208.475%2C14.07%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-carat-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%223.404%2C2.051%208.354%2C7%203.404%2C11.95%205.525%2C14.07%2012.596%2C7%205.525%2C-0.071%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-carat-u:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%222.051%2C10.596%207%2C5.646%2011.95%2C10.596%2014.07%2C8.475%207%2C1.404%20-0.071%2C8.475%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-check:after,
+/* Used ui-checkbox-on twice to increase specificity. If active state has background-image for gradient this rule overrides. */
+html .ui-btn.ui-checkbox-on.ui-checkbox-on:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2214%2C4%2011%2C1%205.003%2C6.997%203%2C5%200%2C8%204.966%2C13%204.983%2C12.982%205%2C13%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-clock:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C12c-2.762%2C0-5-2.238-5-5s2.238-5%2C5-5s5%2C2.238%2C5%2C5%20S9.762%2C12%2C7%2C12z%20M9%2C6H8V4c0-0.553-0.447-1-1-1S6%2C3.447%2C6%2C4v3c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1S9.553%2C6%2C9%2C6z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-cloud:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M14%2C9.5c0-0.793-0.465-1.473-1.134-1.795C12.949%2C7.484%2C13%2C7.249%2C13%2C7c0-1.104-0.896-2-2-2%20c-0.158%2C0-0.311%2C0.023-0.457%2C0.058C9.816%2C3.549%2C8.286%2C2.5%2C6.5%2C2.5c-2.33%2C0-4.224%2C1.777-4.454%2C4.046C0.883%2C6.76%2C0%2C7.773%2C0%2C9%20c0%2C1.381%2C1.119%2C2.5%2C2.5%2C2.5h10v-0.07C13.361%2C11.206%2C14%2C10.432%2C14%2C9.5z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-comment:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M12%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v7c0%2C1.104%2C0.896%2C2%2C2%2C2h1v3l3-3h6c1.104%2C0%2C2-0.896%2C2-2V2C14%2C0.896%2C13.104%2C0%2C12%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-delete:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C3%2011%2C0%207%2C4%203%2C0%200%2C3%204%2C7%200%2C11%203%2C14%207%2C10%2011%2C14%2014%2C11%2010%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-edit:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M1%2C10l-1%2C4l4-1l7-7L8%2C3L1%2C10z%20M11%2C0L9%2C2l3%2C3l2-2L11%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-eye:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C2C3%2C2%2C0%2C7%2C0%2C7s3%2C5%2C7%2C5s7-5%2C7-5S11%2C2%2C7%2C2z%20M7%2C10c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3C10%2C8.656%2C8.657%2C10%2C7%2C10z%20M7%2C6C6.448%2C6%2C6%2C6.447%2C6%2C7c0%2C0.553%2C0.448%2C1%2C1%2C1s1-0.447%2C1-1C8%2C6.447%2C7.552%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-forbidden:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M12.601%2C11.187C13.476%2C10.018%2C14%2C8.572%2C14%2C7c0-3.866-3.134-7-7-7C5.428%2C0%2C3.982%2C0.524%2C2.813%2C1.399L2.757%2C1.343L2.053%2C2.048%20L2.048%2C2.053L1.343%2C2.758l0.056%2C0.056C0.524%2C3.982%2C0%2C5.428%2C0%2C7c0%2C3.866%2C3.134%2C7%2C7%2C7c1.572%2C0%2C3.018-0.524%2C4.187-1.399l0.056%2C0.057%20l0.705-0.705l0.005-0.005l0.705-0.705L12.601%2C11.187z%20M7%2C2c2.761%2C0%2C5%2C2.238%2C5%2C5c0%2C1.019-0.308%2C1.964-0.832%2C2.754L4.246%2C2.832%20C5.036%2C2.308%2C5.981%2C2%2C7%2C2z%20M7%2C12c-2.761%2C0-5-2.238-5-5c0-1.019%2C0.308-1.964%2C0.832-2.754l6.922%2C6.922C8.964%2C11.692%2C8.019%2C12%2C7%2C12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-forward:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M13%2C4L9%2C0v3C6%2C3%2C1%2C4%2C1%2C8c0%2C5%2C7%2C6%2C7%2C6v-2c0%2C0-5-1-5-4s6-3%2C6-3v3L13%2C4z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-gear:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M13.621%2C5.904l-1.036-0.259c-0.168-0.042-0.303-0.168-0.355-0.332c-0.092-0.284-0.205-0.559-0.339-0.82%20c-0.079-0.153-0.073-0.337%2C0.017-0.486l0.549-0.915c0.118-0.196%2C0.088-0.448-0.075-0.61l-0.862-0.863%20c-0.162-0.163-0.414-0.193-0.611-0.075l-0.916%2C0.55C9.844%2C2.182%2C9.659%2C2.188%2C9.506%2C2.109C9.244%2C1.975%2C8.97%2C1.861%2C8.686%2C1.77%20c-0.165-0.052-0.29-0.187-0.332-0.354L8.095%2C0.379C8.039%2C0.156%2C7.839%2C0%2C7.609%2C0H6.391c-0.229%2C0-0.43%2C0.156-0.485%2C0.379L5.646%2C1.415%20C5.604%2C1.582%2C5.479%2C1.718%2C5.313%2C1.77c-0.284%2C0.092-0.559%2C0.206-0.82%2C0.34C4.339%2C2.188%2C4.155%2C2.182%2C4.007%2C2.093L3.092%2C1.544%20c-0.196-0.118-0.448-0.087-0.61%2C0.075L1.619%2C2.481C1.457%2C2.644%2C1.426%2C2.896%2C1.544%2C3.093l0.549%2C0.914%20c0.089%2C0.148%2C0.095%2C0.332%2C0.017%2C0.486C1.975%2C4.755%2C1.861%2C5.029%2C1.77%2C5.314c-0.053%2C0.164-0.188%2C0.29-0.354%2C0.332L0.379%2C5.905%20C0.156%2C5.961%2C0%2C6.161%2C0%2C6.391v1.219c0%2C0.229%2C0.156%2C0.43%2C0.379%2C0.485l1.036%2C0.26C1.582%2C8.396%2C1.717%2C8.521%2C1.77%2C8.687%20c0.092%2C0.284%2C0.205%2C0.559%2C0.34%2C0.82C2.188%2C9.66%2C2.182%2C9.844%2C2.093%2C9.993l-0.549%2C0.915c-0.118%2C0.195-0.087%2C0.448%2C0.075%2C0.61%20l0.862%2C0.862c0.162%2C0.163%2C0.414%2C0.193%2C0.61%2C0.075l0.915-0.549c0.148-0.089%2C0.332-0.095%2C0.486-0.017%20c0.262%2C0.135%2C0.536%2C0.248%2C0.82%2C0.34c0.165%2C0.053%2C0.291%2C0.187%2C0.332%2C0.354l0.259%2C1.036C5.96%2C13.844%2C6.16%2C14%2C6.39%2C14h1.22%20c0.229%2C0%2C0.43-0.156%2C0.485-0.379l0.259-1.036c0.042-0.167%2C0.168-0.302%2C0.333-0.354c0.284-0.092%2C0.559-0.205%2C0.82-0.34%20c0.154-0.078%2C0.338-0.072%2C0.486%2C0.017l0.914%2C0.549c0.197%2C0.118%2C0.449%2C0.088%2C0.611-0.074l0.862-0.863%20c0.163-0.162%2C0.193-0.415%2C0.075-0.611l-0.549-0.915c-0.089-0.148-0.096-0.332-0.017-0.485c0.134-0.263%2C0.248-0.536%2C0.339-0.82%20c0.053-0.165%2C0.188-0.291%2C0.355-0.333l1.036-0.259C13.844%2C8.039%2C14%2C7.839%2C14%2C7.609V6.39C14%2C6.16%2C13.844%2C5.96%2C13.621%2C5.904z%20M7%2C10%20c-1.657%2C0-3-1.343-3-3s1.343-3%2C3-3s3%2C1.343%2C3%2C3S8.657%2C10%2C7%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-grid:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3%2C0H1C0.447%2C0%2C0%2C0.447%2C0%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C4%2C0.447%2C3.553%2C0%2C3%2C0z%20M8%2C0H6%20C5.447%2C0%2C5%2C0.447%2C5%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C9%2C0.447%2C8.553%2C0%2C8%2C0z%20M13%2C0h-2c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C14%2C0.447%2C13.553%2C0%2C13%2C0z%20M3%2C5H1C0.447%2C5%2C0%2C5.447%2C0%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1V6C4%2C5.447%2C3.553%2C5%2C3%2C5z%20M8%2C5H6C5.447%2C5%2C5%2C5.447%2C5%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6%20C9%2C5.447%2C8.553%2C5%2C8%2C5z%20M13%2C5h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6C14%2C5.447%2C13.553%2C5%2C13%2C5z%20M3%2C10%20H1c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C4%2C10.447%2C3.553%2C10%2C3%2C10z%20M8%2C10H6c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C9%2C10.447%2C8.553%2C10%2C8%2C10z%20M13%2C10h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1v-2C14%2C10.447%2C13.553%2C10%2C13%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-heart:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C1.872c-2-3-7-2-7%2C2c0%2C3%2C4%2C7%2C4%2C7s2.417%2C2.479%2C3%2C3c0.583-0.521%2C3-3%2C3-3s4-4%2C4-7%20C14-0.128%2C9-1.128%2C7%2C1.872z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-home:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C0%200%2C7%202%2C7%202%2C14%205%2C14%205%2C9%209%2C9%209%2C14%2012%2C14%2012%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-info:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C2c0.552%2C0%2C1%2C0.447%2C1%2C1S7.552%2C4%2C7%2C4S6%2C3.553%2C6%2C3%20S6.448%2C2%2C7%2C2z%20M9%2C11H5v-1h1V6H5V5h3v5h1V11z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-location:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C0C4.791%2C0%2C3%2C1.791%2C3%2C4c0%2C2%2C4%2C10%2C4%2C10s4-8%2C4-10C11%2C1.791%2C9.209%2C0%2C7%2C0z%20M7%2C6C5.896%2C6%2C5%2C5.104%2C5%2C4%20s0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2S8.104%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-lock:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M12%2C6V5c0-2.762-2.238-5-5-5C4.239%2C0%2C2%2C2.238%2C2%2C5v1H1v8h12V6H12z%20M7.5%2C9.848V12h-1V9.848%20C6.207%2C9.673%2C6%2C9.366%2C6%2C9c0-0.553%2C0.448-1%2C1-1s1%2C0.447%2C1%2C1C8%2C9.366%2C7.793%2C9.673%2C7.5%2C9.848z%20M10%2C6H4V5c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3V6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-mail:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M0%2C3.75V12h14V3.75L7%2C9L0%2C3.75z%20M14%2C2H0l7%2C5L14%2C2z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-minus:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Crect%20y%3D%225%22%20style%3D%22fill%3A%23FFFFFF%3B%22%20width%3D%2214%22%20height%3D%224%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-navigation:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2213%2C1%200%2C6%207%2C7%208%2C14%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-phone:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%22-0.01%200.008%2014%2014%22%20style%3D%22enable-background%3Anew%20-0.01%200.008%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M6.939%2C9.189C6.165%2C8.557%2C5.271%2C7.705%2C4.497%2C6.744C3.953%2C6.071%2C3.473%2C5.363%2C3.969%2C4.866l-3.482-3.48%20C-0.021%2C2.02-1.146%2C5.04%2C3.675%2C9.984c5.08%2C5.211%2C8.356%2C4.097%2C8.92%2C3.511l-3.396-3.4C8.725%2C10.568%2C8.113%2C10.146%2C6.939%2C9.189z%20%20M13.82%2C11.519v-0.004c0%2C0-2.648-2.646-2.649-2.647c-0.21-0.211-0.546-0.205-0.754%2C0.002L9.455%2C9.831l3.403%2C3.407%20c0%2C0%2C0.962-0.96%2C0.961-0.961l0.002-0.001C14.043%2C12.056%2C14.021%2C11.721%2C13.82%2C11.519z%20M5.192%2C3.644V3.642%20c0.222-0.222%2C0.2-0.557%2C0-0.758V2.881c0%2C0-2.726-2.725-2.727-2.726C2.255-0.055%2C1.92-0.05%2C1.712%2C0.156L0.751%2C1.121l3.479%2C3.482%20C4.231%2C4.604%2C5.192%2C3.645%2C5.192%2C3.644z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-plus:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C5%209%2C5%209%2C0%205%2C0%205%2C5%200%2C5%200%2C9%205%2C9%205%2C14%209%2C14%209%2C9%2014%2C9%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-power:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M11.243%2C2.408c-0.392-0.401-1.024-0.401-1.415%2C0c-0.391%2C0.401-0.391%2C1.054%2C0%2C1.455%20C10.584%2C4.642%2C11%2C5.675%2C11%2C6.773s-0.416%2C2.133-1.172%2C2.91c-1.512%2C1.558-4.145%2C1.558-5.656%2C0C3.416%2C8.904%2C3%2C7.872%2C3%2C6.773%20C3%2C5.673%2C3.416%2C4.64%2C4.172%2C3.863c0.39-0.401%2C0.39-1.054%2C0-1.455c-0.391-0.401-1.024-0.401-1.415%2C0C1.624%2C3.574%2C1%2C5.125%2C1%2C6.773%20c0%2C1.647%2C0.624%2C3.199%2C1.757%2C4.365c1.134%2C1.166%2C2.64%2C1.809%2C4.243%2C1.809c1.604%2C0%2C3.109-0.645%2C4.243-1.811%20C12.376%2C9.975%2C13%2C8.423%2C13%2C6.773C13%2C5.125%2C12.376%2C3.574%2C11.243%2C2.408z%20M7%2C8.053c0.553%2C0%2C1-0.445%2C1-1v-6c0-0.553-0.447-1-1-1%20c-0.553%2C0-1%2C0.447-1%2C1v6C6%2C7.604%2C6.447%2C8.053%2C7%2C8.053z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-recycle:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M3%2C7h1L2%2C4L0%2C7h1c0%2C3.313%2C2.687%2C6%2C6%2C6c0.702%2C0%2C1.374-0.127%2C2-0.35v-2.205C8.41%2C10.789%2C7.732%2C11%2C7%2C11%20C4.791%2C11%2C3%2C9.209%2C3%2C7z%20M13%2C7c0-3.313-2.688-6-6-6C6.298%2C1%2C5.626%2C1.127%2C5%2C1.349v2.206C5.59%2C3.211%2C6.268%2C3%2C7%2C3c2.209%2C0%2C4%2C1.791%2C4%2C4%20h-1l2%2C3l2-3H13z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-refresh:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.001px%22%20height%3D%2214.002px%22%20viewBox%3D%220%200%2014.001%2014.002%22%20style%3D%22enable-background%3Anew%200%200%2014.001%2014.002%3B%22%20%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M14.001%2C6.001v-6l-2.06%2C2.06c-0.423-0.424-0.897-0.809-1.44-1.122C7.153-0.994%2C2.872%2C0.153%2C0.939%2C3.501%20c-1.933%2C3.348-0.786%2C7.629%2C2.562%2C9.562c3.348%2C1.933%2C7.629%2C0.785%2C9.562-2.562l-1.732-1c-1.381%2C2.392-4.438%2C3.211-6.83%2C1.83%20s-3.211-4.438-1.83-6.83s4.438-3.211%2C6.83-1.83c0.389%2C0.225%2C0.718%2C0.506%2C1.02%2C0.81l-2.52%2C2.52H14.001z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-search:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M10.171%2C8.766c0.617-0.888%2C0.979-1.964%2C0.979-3.126c0-3.037-2.463-5.5-5.5-5.5s-5.5%2C2.463-5.5%2C5.5%20s2.463%2C5.5%2C5.5%2C5.5c1.152%2C0%2C2.223-0.355%2C3.104-0.962l3.684%2C3.683l1.414-1.414L10.171%2C8.766z%20M5.649%2C9.14c-1.933%2C0-3.5-1.567-3.5-3.5%20c0-1.933%2C1.567-3.5%2C3.5-3.5c1.933%2C0%2C3.5%2C1.567%2C3.5%2C3.5C9.149%2C7.572%2C7.582%2C9.14%2C5.649%2C9.14z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-shop:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M10%2C4V3c0-1.657-1.343-3-3-3S4%2C1.343%2C4%2C3v1H1v10h12V4H10z%20M4.5%2C6C4.224%2C6%2C4%2C5.776%2C4%2C5.5%20S4.224%2C5%2C4.5%2C5S5%2C5.224%2C5%2C5.5S4.776%2C6%2C4.5%2C6z%20M5%2C3c0-1.104%2C0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2v1H5V3z%20M9.5%2C6C9.225%2C6%2C9%2C5.776%2C9%2C5.5%20S9.225%2C5%2C9.5%2C5S10%2C5.224%2C10%2C5.5S9.775%2C6%2C9.5%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-star:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2214%2C5%209%2C5%207%2C0%205%2C5%200%2C5%204%2C8%202.625%2C13%207%2C10%2011.375%2C13%2010%2C8%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-icon-tag:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M5%2C0H0v5l9%2C9l5-5L5%2C0z%20M3%2C4C2.447%2C4%2C2%2C3.553%2C2%2C3s0.447-1%2C1-1s1%2C0.447%2C1%2C1S3.553%2C4%2C3%2C4z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-user:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M8.851%2C10.101c-0.18-0.399-0.2-0.763-0.153-1.104C9.383%2C8.49%2C9.738%2C7.621%2C9.891%2C6.465C10.493%2C6.355%2C10.5%2C5.967%2C10.5%2C5.5%20c0-0.437-0.008-0.804-0.502-0.94C9.999%2C4.539%2C10%2C4.521%2C10%2C4.5c0-2.103-1-4-2-4C8%2C0.5%2C7.5%2C0%2C6.5%2C0C5%2C0%2C4%2C1.877%2C4%2C4.5%20c0%2C0.021%2C0.001%2C0.039%2C0.002%2C0.06C3.508%2C4.696%2C3.5%2C5.063%2C3.5%2C5.5c0%2C0.467%2C0.007%2C0.855%2C0.609%2C0.965%20C4.262%2C7.621%2C4.617%2C8.49%2C5.303%2C8.997c0.047%2C0.341%2C0.026%2C0.704-0.153%2C1.104C1.503%2C10.503%2C0%2C12%2C0%2C12v2h14v-2%20C14%2C12%2C12.497%2C10.503%2C8.851%2C10.101z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-icon-video:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%20-2%2014%2014%22%20style%3D%22enable-background%3Anew%200%20-2%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M8%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2h6c1.104%2C0%2C2-0.896%2C2-2V5V2C10%2C0.896%2C9.104%2C0%2C8%2C0z%20%20M10%2C5l4%2C4V1L10%2C5z%22%2F%3E%3C%2Fsvg%3E");
+}
+/* Alt icons */
+.ui-alt-icon.ui-icon-action:after,
+.ui-alt-icon .ui-icon-action:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M9%2C5v3l5-4L9%2C0v3c0%2C0-5%2C0-5%2C7C6%2C5%2C9%2C5%2C9%2C5z%20M11%2C12H2V5h1l2-2H0v11h13V7l-2%2C2V12z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-alert:after,
+.ui-alt-icon .ui-icon-alert:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0L0%2C12h14L7%2C0z%20M7%2C11c-0.553%2C0-1-0.447-1-1s0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1S7.553%2C11%2C7%2C11z%20M7%2C8C6.447%2C8%2C6%2C7.553%2C6%2C7V5%20c0-0.553%2C0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1v2C8%2C7.553%2C7.553%2C8%2C7%2C8z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-d:after,
+.ui-alt-icon .ui-icon-arrow-d:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%229%2C7%209%2C0%205%2C0%205%2C7%200%2C7%207%2C14%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-d-l:after,
+.ui-alt-icon .ui-icon-arrow-d-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C3%2011%2C0%203.5%2C7.5%200%2C4%200%2C14%2010%2C14%206.5%2C10.5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-d-r:after,
+.ui-alt-icon .ui-icon-arrow-d-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2210.5%2C7.5%203%2C0%200%2C3%207.5%2C10.5%204%2C14%2014%2C14%2014%2C4%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-l:after,
+.ui-alt-icon .ui-icon-arrow-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C5%207%2C0%200%2C7%207%2C14%207%2C9%2014%2C9%2014%2C5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-r:after,
+.ui-alt-icon .ui-icon-arrow-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C7%207%2C0%207%2C5%200%2C5%200%2C9%207%2C9%207%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-u:after,
+.ui-alt-icon .ui-icon-arrow-u:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C0%200%2C7%205%2C7%205%2C14%209%2C14%209%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-u-l:after,
+.ui-alt-icon .ui-icon-arrow-u-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C11%206.5%2C3.5%2010%2C0%200%2C0%200%2C10%203.5%2C6.5%2011%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-arrow-u-r:after,
+.ui-alt-icon .ui-icon-arrow-u-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C0%204%2C0%207.5%2C3.5%200%2C11%203%2C14%2010.5%2C6.5%2014%2C10%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-audio:after,
+.ui-alt-icon .ui-icon-audio:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.018px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014.018%2014%22%20style%3D%22enable-background%3Anew%200%200%2014.018%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C4C0.447%2C4%2C0%2C4.447%2C0%2C5v4c0%2C0.553%2C0.447%2C1%2C1%2C1h1l4%2C4V0L2%2C4H1z%20M10.346%2C7c0-1.699-1.042-3.154-2.546-3.867L6.982%2C4.68%20C7.885%2C5.107%2C8.51%2C5.98%2C8.51%2C7S7.885%2C8.893%2C6.982%2C9.32L7.8%2C10.867C9.304%2C10.154%2C10.346%2C8.699%2C10.346%2C7z%20M9.447%2C0.017L8.618%2C1.586%20C10.723%2C2.584%2C12.182%2C4.621%2C12.182%2C7s-1.459%2C4.416-3.563%2C5.414l0.829%2C1.569c2.707-1.283%2C4.57-3.925%2C4.57-6.983%20S12.154%2C1.3%2C9.447%2C0.017z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-back:after,
+.ui-alt-icon .ui-icon-back:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C3V0L1%2C4l4%2C4V5c0%2C0%2C6%2C0%2C6%2C3s-5%2C4-5%2C4v2c0%2C0%2C7-1%2C7-6C13%2C4%2C8%2C3%2C5%2C3z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-bars:after,
+.ui-alt-icon .ui-icon-bars:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C4h12c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H1C0.447%2C2%2C0%2C2.447%2C0%2C3S0.447%2C4%2C1%2C4z%20M13%2C6H1C0.447%2C6%2C0%2C6.447%2C0%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H1c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1h12%20c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-bullets:after,
+.ui-alt-icon .ui-icon-bullets:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C4h8c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H5C4.447%2C2%2C4%2C2.447%2C4%2C3S4.447%2C4%2C5%2C4z%20M13%2C6H5C4.447%2C6%2C4%2C6.447%2C4%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H5c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1h8%20c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%20M1%2C2C0.447%2C2%2C0%2C2.447%2C0%2C3s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C2%2C1%2C2z%20M1%2C6C0.447%2C6%2C0%2C6.447%2C0%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1s1-0.447%2C1-1C2%2C6.447%2C1.553%2C6%2C1%2C6z%20M1%2C10c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C10%2C1%2C10z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-calendar:after,
+.ui-alt-icon .ui-icon-calendar:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M0%2C8h2V6H0V8z%20M3%2C8h2V6H3V8z%20M6%2C8h2V6H6V8z%20M9%2C8h2V6H9V8z%20M12%2C8h2V6h-2V8z%20M0%2C11h2V9H0V11z%20M3%2C11h2V9H3V11z%20M6%2C11h2V9H6V11z%20%20M9%2C11h2V9H9V11z%20M12%2C11h2V9h-2V11z%20M0%2C14h2v-2H0V14z%20M3%2C14h2v-2H3V14z%20M6%2C14h2v-2H6V14z%20M9%2C14h2v-2H9V14z%20M12%2C1%20c0-0.553-0.447-1-1-1s-1%2C0.447-1%2C1H4c0-0.553-0.447-1-1-1S2%2C0.447%2C2%2C1H0v4h14V1H12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-camera:after,
+.ui-alt-icon .ui-icon-camera:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C2.5H9.908c-0.206-0.581-0.756-1-1.408-1h-3c-0.652%2C0-1.202%2C0.419-1.408%2C1H2c-1.104%2C0-2%2C0.896-2%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2%20h10c1.104%2C0%2C2-0.896%2C2-2v-6C14%2C3.396%2C13.104%2C2.5%2C12%2C2.5z%20M7%2C10.5c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3%20C10%2C9.156%2C8.657%2C10.5%2C7%2C10.5z%20M7%2C5.5c-1.104%2C0-2%2C0.896-2%2C2c0%2C1.104%2C0.896%2C2%2C2%2C2c1.104%2C0%2C2-0.896%2C2-2C9%2C6.396%2C8.104%2C5.5%2C7%2C5.5z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-carat-d:after,
+.ui-alt-icon .ui-icon-carat-d:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2211.949%2C3.404%207%2C8.354%202.05%2C3.404%20-0.071%2C5.525%207%2C12.596%2014.07%2C5.525%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-carat-l:after,
+.ui-alt-icon .ui-icon-carat-l:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2210.596%2C11.949%205.646%2C7%2010.596%2C2.05%208.475%2C-0.071%201.404%2C7%208.475%2C14.07%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-carat-r:after,
+.ui-alt-icon .ui-icon-carat-r:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%223.404%2C2.051%208.354%2C7%203.404%2C11.95%205.525%2C14.07%2012.596%2C7%205.525%2C-0.071%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-carat-u:after,
+.ui-alt-icon .ui-icon-carat-u:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%222.051%2C10.596%207%2C5.646%2011.95%2C10.596%2014.07%2C8.475%207%2C1.404%20-0.071%2C8.475%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-check:after,
+.ui-alt-icon .ui-icon-check:after,
+html .ui-alt-icon.ui-btn.ui-checkbox-on:after,
+html .ui-alt-icon .ui-btn.ui-checkbox-on:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C4%2011%2C1%205.003%2C6.997%203%2C5%200%2C8%204.966%2C13%204.983%2C12.982%205%2C13%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-clock:after,
+.ui-alt-icon .ui-icon-clock:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C12c-2.762%2C0-5-2.238-5-5s2.238-5%2C5-5s5%2C2.238%2C5%2C5%20S9.762%2C12%2C7%2C12z%20M9%2C6H8V4c0-0.553-0.447-1-1-1S6%2C3.447%2C6%2C4v3c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1S9.553%2C6%2C9%2C6z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-cloud:after,
+.ui-alt-icon .ui-icon-cloud:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M14%2C9.5c0-0.793-0.465-1.473-1.134-1.795C12.949%2C7.484%2C13%2C7.249%2C13%2C7c0-1.104-0.896-2-2-2c-0.158%2C0-0.311%2C0.023-0.457%2C0.058%20C9.816%2C3.549%2C8.286%2C2.5%2C6.5%2C2.5c-2.33%2C0-4.224%2C1.777-4.454%2C4.046C0.883%2C6.76%2C0%2C7.773%2C0%2C9c0%2C1.381%2C1.119%2C2.5%2C2.5%2C2.5h10v-0.07%20C13.361%2C11.206%2C14%2C10.432%2C14%2C9.5z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-comment:after,
+.ui-alt-icon .ui-icon-comment:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v7c0%2C1.104%2C0.896%2C2%2C2%2C2h1v3l3-3h6c1.104%2C0%2C2-0.896%2C2-2V2C14%2C0.896%2C13.104%2C0%2C12%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-delete:after,
+.ui-alt-icon .ui-icon-delete:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C3%2011%2C0%207%2C4%203%2C0%200%2C3%204%2C7%200%2C11%203%2C14%207%2C10%2011%2C14%2014%2C11%2010%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-edit:after,
+.ui-alt-icon .ui-icon-edit:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C10l-1%2C4l4-1l7-7L8%2C3L1%2C10z%20M11%2C0L9%2C2l3%2C3l2-2L11%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-eye:after,
+.ui-alt-icon .ui-icon-eye:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C2C3%2C2%2C0%2C7%2C0%2C7s3%2C5%2C7%2C5s7-5%2C7-5S11%2C2%2C7%2C2z%20M7%2C10c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3%20C10%2C8.656%2C8.657%2C10%2C7%2C10z%20M7%2C6C6.448%2C6%2C6%2C6.447%2C6%2C7c0%2C0.553%2C0.448%2C1%2C1%2C1s1-0.447%2C1-1C8%2C6.447%2C7.552%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-forbidden:after,
+.ui-alt-icon .ui-icon-forbidden:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12.601%2C11.187C13.476%2C10.018%2C14%2C8.572%2C14%2C7c0-3.866-3.134-7-7-7C5.428%2C0%2C3.982%2C0.524%2C2.813%2C1.399L2.757%2C1.343L2.053%2C2.048%20L2.048%2C2.053L1.343%2C2.758l0.056%2C0.056C0.524%2C3.982%2C0%2C5.428%2C0%2C7c0%2C3.866%2C3.134%2C7%2C7%2C7c1.572%2C0%2C3.018-0.524%2C4.187-1.399l0.056%2C0.057%20l0.705-0.705l0.005-0.005l0.705-0.705L12.601%2C11.187z%20M7%2C2c2.761%2C0%2C5%2C2.238%2C5%2C5c0%2C1.019-0.308%2C1.964-0.832%2C2.754L4.246%2C2.832%20C5.036%2C2.308%2C5.981%2C2%2C7%2C2z%20M7%2C12c-2.761%2C0-5-2.238-5-5c0-1.019%2C0.308-1.964%2C0.832-2.754l6.922%2C6.922C8.964%2C11.692%2C8.019%2C12%2C7%2C12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-forward:after,
+.ui-alt-icon .ui-icon-forward:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M13%2C4L9%2C0v3C6%2C3%2C1%2C4%2C1%2C8c0%2C5%2C7%2C6%2C7%2C6v-2c0%2C0-5-1-5-4s6-3%2C6-3v3L13%2C4z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-gear:after,
+.ui-alt-icon .ui-icon-gear:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M13.621%2C5.904l-1.036-0.259c-0.168-0.042-0.303-0.168-0.355-0.332c-0.092-0.284-0.205-0.559-0.339-0.82%20c-0.079-0.153-0.073-0.337%2C0.017-0.486l0.549-0.915c0.118-0.196%2C0.088-0.448-0.075-0.61l-0.862-0.863%20c-0.162-0.163-0.414-0.193-0.611-0.075l-0.916%2C0.55C9.844%2C2.182%2C9.659%2C2.188%2C9.506%2C2.109C9.244%2C1.975%2C8.97%2C1.861%2C8.686%2C1.77%20c-0.165-0.052-0.29-0.187-0.332-0.354L8.095%2C0.379C8.039%2C0.156%2C7.839%2C0%2C7.609%2C0H6.391c-0.229%2C0-0.43%2C0.156-0.485%2C0.379L5.646%2C1.415%20C5.604%2C1.582%2C5.479%2C1.718%2C5.313%2C1.77c-0.284%2C0.092-0.559%2C0.206-0.82%2C0.34C4.339%2C2.188%2C4.155%2C2.182%2C4.007%2C2.093L3.092%2C1.544%20c-0.196-0.118-0.448-0.087-0.61%2C0.075L1.619%2C2.481C1.457%2C2.644%2C1.426%2C2.896%2C1.544%2C3.093l0.549%2C0.914%20c0.089%2C0.148%2C0.095%2C0.332%2C0.017%2C0.486C1.975%2C4.755%2C1.861%2C5.029%2C1.77%2C5.314c-0.053%2C0.164-0.188%2C0.29-0.354%2C0.332L0.379%2C5.905%20C0.156%2C5.961%2C0%2C6.161%2C0%2C6.391v1.219c0%2C0.229%2C0.156%2C0.43%2C0.379%2C0.485l1.036%2C0.26C1.582%2C8.396%2C1.717%2C8.521%2C1.77%2C8.687%20c0.092%2C0.284%2C0.205%2C0.559%2C0.34%2C0.82C2.188%2C9.66%2C2.182%2C9.844%2C2.093%2C9.993l-0.549%2C0.915c-0.118%2C0.195-0.087%2C0.448%2C0.075%2C0.61%20l0.862%2C0.862c0.162%2C0.163%2C0.414%2C0.193%2C0.61%2C0.075l0.915-0.549c0.148-0.089%2C0.332-0.095%2C0.486-0.017%20c0.262%2C0.135%2C0.536%2C0.248%2C0.82%2C0.34c0.165%2C0.053%2C0.291%2C0.187%2C0.332%2C0.354l0.259%2C1.036C5.96%2C13.844%2C6.16%2C14%2C6.39%2C14h1.22%20c0.229%2C0%2C0.43-0.156%2C0.485-0.379l0.259-1.036c0.042-0.167%2C0.168-0.302%2C0.333-0.354c0.284-0.092%2C0.559-0.205%2C0.82-0.34%20c0.154-0.078%2C0.338-0.072%2C0.486%2C0.017l0.914%2C0.549c0.197%2C0.118%2C0.449%2C0.088%2C0.611-0.074l0.862-0.863%20c0.163-0.162%2C0.193-0.415%2C0.075-0.611l-0.549-0.915c-0.089-0.148-0.096-0.332-0.017-0.485c0.134-0.263%2C0.248-0.536%2C0.339-0.82%20c0.053-0.165%2C0.188-0.291%2C0.355-0.333l1.036-0.259C13.844%2C8.039%2C14%2C7.839%2C14%2C7.609V6.39C14%2C6.16%2C13.844%2C5.96%2C13.621%2C5.904z%20M7%2C10%20c-1.657%2C0-3-1.343-3-3s1.343-3%2C3-3s3%2C1.343%2C3%2C3S8.657%2C10%2C7%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-grid:after,
+.ui-alt-icon .ui-icon-grid:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M3%2C0H1C0.447%2C0%2C0%2C0.447%2C0%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C4%2C0.447%2C3.553%2C0%2C3%2C0z%20M8%2C0H6%20C5.447%2C0%2C5%2C0.447%2C5%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C9%2C0.447%2C8.553%2C0%2C8%2C0z%20M13%2C0h-2c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C14%2C0.447%2C13.553%2C0%2C13%2C0z%20M3%2C5H1C0.447%2C5%2C0%2C5.447%2C0%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1V6C4%2C5.447%2C3.553%2C5%2C3%2C5z%20M8%2C5H6C5.447%2C5%2C5%2C5.447%2C5%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6%20C9%2C5.447%2C8.553%2C5%2C8%2C5z%20M13%2C5h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6C14%2C5.447%2C13.553%2C5%2C13%2C5z%20M3%2C10%20H1c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C4%2C10.447%2C3.553%2C10%2C3%2C10z%20M8%2C10H6c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C9%2C10.447%2C8.553%2C10%2C8%2C10z%20M13%2C10h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1v-2C14%2C10.447%2C13.553%2C10%2C13%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-heart:after,
+.ui-alt-icon .ui-icon-heart:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C1.958c-2-3-7-2.128-7%2C1.872c0%2C3%2C4%2C7%2C4%2C7s2.417%2C2.48%2C3%2C3c0.583-0.52%2C3-3%2C3-3s4-4%2C4-7C14-0.169%2C9-1.042%2C7%2C1.958z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-home:after,
+.ui-alt-icon .ui-icon-home:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C0%200%2C7%202%2C7%202%2C14%205%2C14%205%2C9%209%2C9%209%2C14%2012%2C14%2012%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-info:after,
+.ui-alt-icon .ui-icon-info:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C2c0.552%2C0%2C1%2C0.447%2C1%2C1S7.552%2C4%2C7%2C4S6%2C3.553%2C6%2C3%20S6.448%2C2%2C7%2C2z%20M9%2C11H5v-1h1V6H5V5h3v5h1V11z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-location:after,
+.ui-alt-icon .ui-icon-location:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C4.791%2C0%2C3%2C1.791%2C3%2C4c0%2C2%2C4%2C10%2C4%2C10s4-8%2C4-10C11%2C1.791%2C9.209%2C0%2C7%2C0z%20M7%2C6C5.896%2C6%2C5%2C5.104%2C5%2C4s0.896-2%2C2-2%20c1.104%2C0%2C2%2C0.896%2C2%2C2S8.104%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-lock:after,
+.ui-alt-icon .ui-icon-lock:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C6V5c0-2.762-2.238-5-5-5C4.239%2C0%2C2%2C2.238%2C2%2C5v1H1v8h12V6H12z%20M7.5%2C9.848V12h-1V9.848C6.207%2C9.673%2C6%2C9.366%2C6%2C9%20c0-0.553%2C0.448-1%2C1-1s1%2C0.447%2C1%2C1C8%2C9.366%2C7.793%2C9.673%2C7.5%2C9.848z%20M10%2C6H4V5c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3V6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-mail:after,
+.ui-alt-icon .ui-icon-mail:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M0%2C3.75V12h14V3.75L7%2C9L0%2C3.75z%20M14%2C2H0l7%2C5L14%2C2z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-minus:after,
+.ui-alt-icon .ui-icon-minus:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Crect%20y%3D%225%22%20width%3D%2214%22%20height%3D%224%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-navigation:after,
+.ui-alt-icon .ui-icon-navigation:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2213%2C1%200%2C6%207%2C7%208%2C14%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-phone:after,
+.ui-alt-icon .ui-icon-phone:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M6.949%2C9.182C6.175%2C8.549%2C5.281%2C7.697%2C4.507%2C6.736C3.963%2C6.063%2C3.483%2C5.355%2C3.979%2C4.858l-3.482-3.48%20c-0.508%2C0.634-1.633%2C3.654%2C3.188%2C8.598c5.08%2C5.211%2C8.356%2C4.097%2C8.92%2C3.511l-3.396-3.399C8.734%2C10.561%2C8.123%2C10.139%2C6.949%2C9.182z%20%20M13.83%2C11.512v-0.004c0%2C0-2.648-2.646-2.649-2.647c-0.21-0.212-0.546-0.205-0.754%2C0.002L9.465%2C9.823l3.402%2C3.407%20c0%2C0%2C0.963-0.961%2C0.961-0.961l0.002-0.002C14.053%2C12.049%2C14.031%2C11.713%2C13.83%2C11.512z%20M5.202%2C3.636V3.634%20c0.222-0.222%2C0.2-0.557%2C0-0.758V2.873c0%2C0-2.726-2.725-2.727-2.726c-0.21-0.21-0.545-0.205-0.753%2C0.001L0.761%2C1.113L4.24%2C4.595%20C4.241%2C4.596%2C5.202%2C3.637%2C5.202%2C3.636z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-plus:after,
+.ui-alt-icon .ui-icon-plus:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C5%209%2C5%209%2C0%205%2C0%205%2C5%200%2C5%200%2C9%205%2C9%205%2C14%209%2C14%209%2C9%2014%2C9%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-power:after,
+.ui-alt-icon .ui-icon-power:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M11.243%2C2.408c-0.392-0.401-1.024-0.401-1.415%2C0c-0.391%2C0.401-0.391%2C1.054%2C0%2C1.455C10.584%2C4.642%2C11%2C5.675%2C11%2C6.773%20s-0.416%2C2.133-1.172%2C2.91c-1.512%2C1.558-4.145%2C1.558-5.656%2C0C3.416%2C8.904%2C3%2C7.872%2C3%2C6.773C3%2C5.673%2C3.416%2C4.64%2C4.172%2C3.863%20c0.39-0.401%2C0.39-1.054%2C0-1.455c-0.391-0.401-1.024-0.401-1.415%2C0C1.624%2C3.574%2C1%2C5.125%2C1%2C6.773c0%2C1.647%2C0.624%2C3.199%2C1.757%2C4.365%20c1.134%2C1.166%2C2.64%2C1.809%2C4.243%2C1.809c1.604%2C0%2C3.109-0.645%2C4.243-1.811C12.376%2C9.975%2C13%2C8.423%2C13%2C6.773%20C13%2C5.125%2C12.376%2C3.574%2C11.243%2C2.408z%20M7%2C8.053c0.553%2C0%2C1-0.445%2C1-1v-6c0-0.553-0.447-1-1-1c-0.553%2C0-1%2C0.447-1%2C1v6%20C6%2C7.604%2C6.447%2C8.053%2C7%2C8.053z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-recycle:after,
+.ui-alt-icon .ui-icon-recycle:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M3%2C7h1L2%2C4L0%2C7h1c0%2C3.313%2C2.687%2C6%2C6%2C6c0.702%2C0%2C1.374-0.127%2C2-0.35v-2.205C8.41%2C10.789%2C7.732%2C11%2C7%2C11C4.791%2C11%2C3%2C9.209%2C3%2C7z%20%20M13%2C7c0-3.313-2.688-6-6-6C6.298%2C1%2C5.626%2C1.127%2C5%2C1.349v2.206C5.59%2C3.211%2C6.268%2C3%2C7%2C3c2.209%2C0%2C4%2C1.791%2C4%2C4h-1l2%2C3l2-3H13z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-refresh:after,
+.ui-alt-icon .ui-icon-refresh:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.001px%22%20height%3D%2214.002px%22%20viewBox%3D%220%200%2014.001%2014.002%22%20style%3D%22enable-background%3Anew%200%200%2014.001%2014.002%3B%22%20%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M14.001%2C6.001v-6l-2.06%2C2.06c-0.423-0.424-0.897-0.809-1.44-1.122C7.153-0.994%2C2.872%2C0.153%2C0.939%2C3.501%20c-1.933%2C3.348-0.786%2C7.629%2C2.562%2C9.562c3.348%2C1.933%2C7.629%2C0.785%2C9.562-2.562l-1.732-1c-1.381%2C2.392-4.438%2C3.211-6.83%2C1.83%20s-3.211-4.438-1.83-6.83s4.438-3.211%2C6.83-1.83c0.389%2C0.225%2C0.718%2C0.506%2C1.02%2C0.81l-2.52%2C2.52H14.001z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-search:after,
+.ui-alt-icon .ui-icon-search:after,
+.ui-input-search:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M10.171%2C8.766c0.617-0.888%2C0.979-1.964%2C0.979-3.126c0-3.037-2.463-5.5-5.5-5.5s-5.5%2C2.463-5.5%2C5.5s2.463%2C5.5%2C5.5%2C5.5%20c1.152%2C0%2C2.223-0.355%2C3.104-0.962l3.684%2C3.683l1.414-1.414L10.171%2C8.766z%20M5.649%2C9.14c-1.933%2C0-3.5-1.567-3.5-3.5%20c0-1.933%2C1.567-3.5%2C3.5-3.5c1.933%2C0%2C3.5%2C1.567%2C3.5%2C3.5C9.149%2C7.572%2C7.582%2C9.14%2C5.649%2C9.14z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-shop:after,
+.ui-alt-icon .ui-icon-shop:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M10%2C4V3c0-1.657-1.343-3-3-3S4%2C1.343%2C4%2C3v1H1v10h12V4H10z%20M4.5%2C6C4.224%2C6%2C4%2C5.776%2C4%2C5.5S4.224%2C5%2C4.5%2C5S5%2C5.224%2C5%2C5.5%20S4.776%2C6%2C4.5%2C6z%20M5%2C3c0-1.104%2C0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2v1H5V3z%20M9.5%2C6C9.225%2C6%2C9%2C5.776%2C9%2C5.5S9.225%2C5%2C9.5%2C5S10%2C5.224%2C10%2C5.5%20S9.775%2C6%2C9.5%2C6z%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-star:after,
+.ui-alt-icon .ui-icon-star:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C5%209%2C5%207%2C0%205%2C5%200%2C5%204%2C8%202.625%2C13%207%2C10%2011.375%2C13%2010%2C8%20%22%2F%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-tag:after,
+.ui-alt-icon .ui-icon-tag:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C0H0v5l9%2C9l5-5L5%2C0z%20M3%2C4C2.447%2C4%2C2%2C3.553%2C2%2C3s0.447-1%2C1-1s1%2C0.447%2C1%2C1S3.553%2C4%2C3%2C4z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-user:after,
+.ui-alt-icon .ui-icon-user:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M8.851%2C10.101c-0.18-0.399-0.2-0.763-0.153-1.104C9.383%2C8.49%2C9.738%2C7.621%2C9.891%2C6.465C10.493%2C6.355%2C10.5%2C5.967%2C10.5%2C5.5%20c0-0.437-0.008-0.804-0.502-0.94C9.999%2C4.539%2C10%2C4.521%2C10%2C4.5c0-2.103-1-4-2-4C8%2C0.5%2C7.5%2C0%2C6.5%2C0C5%2C0%2C4%2C1.877%2C4%2C4.5%20c0%2C0.021%2C0.001%2C0.039%2C0.002%2C0.06C3.508%2C4.696%2C3.5%2C5.063%2C3.5%2C5.5c0%2C0.467%2C0.007%2C0.855%2C0.609%2C0.965%20C4.262%2C7.621%2C4.617%2C8.49%2C5.303%2C8.997c0.047%2C0.341%2C0.026%2C0.704-0.153%2C1.104C1.503%2C10.503%2C0%2C12%2C0%2C12v2h14v-2%20C14%2C12%2C12.497%2C10.503%2C8.851%2C10.101z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E");
+}
+.ui-alt-icon.ui-icon-video:after,
+.ui-alt-icon .ui-icon-video:after {
+	background-image: url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%20-2%2014%2014%22%20style%3D%22enable-background%3Anew%200%20-2%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M8%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2h6c1.104%2C0%2C2-0.896%2C2-2V5V2C10%2C0.896%2C9.104%2C0%2C8%2C0z%20M10%2C5l4%2C4V1L10%2C5z%22%2F%3E%3C%2Fsvg%3E");
+}
+/* Globals */
+/* Font
+-----------------------------------------------------------------------------------------------------------*/
+html {
+	font-size: 100%;
+}
+body,
+input,
+select,
+textarea,
+button,
+.ui-btn {
+	font-size: 1em;
+	line-height: 1.3;
+	font-family: sans-serif /*{global-font-family}*/;
+}
+legend,
+.ui-input-text input,
+.ui-input-search input {
+	color: inherit;
+	text-shadow: inherit;
+}
+/* Form labels (overrides font-weight bold in bars, and mini font-size) */
+.ui-mobile label,
+div.ui-controlgroup-label {
+	font-weight: normal;
+	font-size: 16px;
+}
+/* Separators
+-----------------------------------------------------------------------------------------------------------*/
+/* Field contain separator (< 28em) */
+.ui-field-contain {
+	border-bottom-color: #828282;
+	border-bottom-color: rgba(0,0,0,.15);
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+/* Table opt-in classes: strokes between each row, and alternating row stripes */
+/* Classes table-stroke and table-stripe are deprecated in 1.4. */
+.table-stroke thead th,
+.table-stripe thead th,
+.table-stripe tbody tr:last-child {
+	border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */
+	border-bottom: 1px solid rgba(0,0,0,.1);
+}
+.table-stroke tbody th,
+.table-stroke tbody td {
+	border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback  */
+	border-bottom: 1px solid rgba(0,0,0,.05);
+}
+.table-stripe.table-stroke tbody tr:last-child th,
+.table-stripe.table-stroke tbody tr:last-child td {
+	border-bottom: 0;
+}
+.table-stripe tbody tr:nth-child(odd) td,
+.table-stripe tbody tr:nth-child(odd) th {
+	background-color: #eeeeee; /* non-RGBA fallback  */
+	background-color: rgba(0,0,0,.04);
+}
+/* Buttons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn,
+label.ui-btn {
+	font-weight: bold;
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-btn {
+	text-decoration: none !important;
+}
+.ui-btn-active {
+	cursor: pointer;
+}
+/* Corner rounding
+-----------------------------------------------------------------------------------------------------------*/
+/* Class ui-btn-corner-all deprecated in 1.4 */
+.ui-corner-all {
+	-webkit-border-radius: 				.3125em /*{global-radii-blocks}*/;
+	border-radius: 						.3125em /*{global-radii-blocks}*/;
+}
+/* Buttons */
+.ui-btn-corner-all,
+.ui-btn.ui-corner-all,
+/* Slider track */
+.ui-slider-track.ui-corner-all,
+/* Flipswitch */
+.ui-flipswitch.ui-corner-all,
+/* Count bubble */
+.ui-li-count {
+	-webkit-border-radius: 				.3125em /*{global-radii-buttons}*/;
+	border-radius: 						.3125em /*{global-radii-buttons}*/;
+}
+/* Icon-only buttons */
+.ui-btn-icon-notext.ui-btn-corner-all,
+.ui-btn-icon-notext.ui-corner-all {
+	-webkit-border-radius: 1em;
+	border-radius: 1em;
+}
+/* Radius clip workaround for cleaning up corner trapping */
+.ui-btn-corner-all,
+.ui-corner-all {
+	-webkit-background-clip: padding;
+	background-clip: padding-box;
+}
+/* Popup arrow */
+.ui-popup.ui-corner-all > .ui-popup-arrow-guide {
+	left: .6em /*{global-radii-blocks}*/;
+	right: .6em /*{global-radii-blocks}*/;
+	top: .6em /*{global-radii-blocks}*/;
+	bottom: .6em /*{global-radii-blocks}*/;
+}
+/* Shadow
+-----------------------------------------------------------------------------------------------------------*/
+.ui-shadow {
+	-webkit-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ 		rgba(0,0,0,.15) /*{global-box-shadow-color}*/;
+	-moz-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ 		rgba(0,0,0,.15) /*{global-box-shadow-color}*/;
+	box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ 				rgba(0,0,0,.15) /*{global-box-shadow-color}*/;
+}
+.ui-shadow-inset {
+	-webkit-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ 	rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+	-moz-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ 		rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+	box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ 	rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+}
+.ui-overlay-shadow {
+	-webkit-box-shadow: 0 0 12px 		rgba(0,0,0,.6);
+	-moz-box-shadow: 0 0 12px 			rgba(0,0,0,.6);
+	box-shadow: 0 0 12px 				rgba(0,0,0,.6);
+}
+/* Icons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after,
+.ui-btn-icon-notext:after {
+	background-color: 					#666 /*{global-icon-color}*/;
+	background-color: 					rgba(0,0,0,.3) /*{global-icon-disc}*/;
+	background-position: center center;
+	background-repeat: no-repeat;
+	-webkit-border-radius: 1em;
+	border-radius: 1em;
+}
+/* Alt icons */
+.ui-alt-icon.ui-btn:after,
+.ui-alt-icon .ui-btn:after,
+html .ui-alt-icon.ui-checkbox-off:after,
+html .ui-alt-icon.ui-radio-off:after,
+html .ui-alt-icon .ui-checkbox-off:after,
+html .ui-alt-icon .ui-radio-off:after {
+	background-color: 					#666 /*{global-icon-color}*/;
+	background-color: 					rgba(0,0,0,.15) /*{global-icon-disc}*/;
+}
+/* No disc */
+.ui-nodisc-icon.ui-btn:after,
+.ui-nodisc-icon .ui-btn:after {
+	background-color: transparent;
+}
+/* Icon shadow */
+.ui-shadow-icon.ui-btn:after,
+.ui-shadow-icon .ui-btn:after {
+	-webkit-box-shadow: 0 1px 0 			rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+	-moz-box-shadow: 0 1px 0 				rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+	box-shadow: 0 1px 0 					rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+}
+/* Checkbox and radio */
+.ui-btn.ui-checkbox-off:after,
+.ui-btn.ui-checkbox-on:after,
+.ui-btn.ui-radio-off:after,
+.ui-btn.ui-radio-on:after {
+	display: block;
+	width: 18px;
+	height: 18px;
+	margin: -9px 2px 0 2px;
+}
+.ui-checkbox-off:after,
+.ui-btn.ui-radio-off:after {
+	filter: Alpha(Opacity=30);
+	opacity: .3;
+}
+.ui-btn.ui-checkbox-off:after,
+.ui-btn.ui-checkbox-on:after {
+	-webkit-border-radius: .1875em;
+	border-radius: .1875em;
+}
+.ui-btn.ui-checkbox-off:after {
+	background-color: #666;
+	background-color: rgba(0,0,0,.3);
+}
+.ui-radio .ui-btn.ui-radio-on:after {
+	background-image: none;
+	background-color: #fff;
+	width: 8px;
+	height: 8px;
+	border-width: 5px;
+	border-style: solid; 
+}
+.ui-alt-icon.ui-btn.ui-radio-on:after,
+.ui-alt-icon .ui-btn.ui-radio-on:after {
+	background-color: #000;
+}
+/* Loader */
+.ui-icon-loading {
+	background: url(images/ajax-loader.gif);
+	background-size: 2.875em 2.875em;
+}
+/* Swatches */
+/* A
+-----------------------------------------------------------------------------------------------------------*/
+/* Bar: Toolbars, dividers, slider track */
+.ui-bar-a,
+.ui-page-theme-a .ui-bar-inherit,
+html .ui-bar-a .ui-bar-inherit,
+html .ui-body-a .ui-bar-inherit,
+html body .ui-group-theme-a .ui-bar-inherit {
+	background-color: 			#e9e9e9 /*{a-bar-background-color}*/;
+	border-color:	 		#ddd /*{a-bar-border}*/;
+	color: 					#333 /*{a-bar-color}*/;
+	text-shadow: 0 /*{a-bar-shadow-x}*/ 1px /*{a-bar-shadow-y}*/ 0 /*{a-bar-shadow-radius}*/ 	#eee /*{a-bar-shadow-color}*/;
+	font-weight: bold;
+}
+.ui-bar-a {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Page and overlay */
+.ui-overlay-a,
+.ui-page-theme-a,
+.ui-page-theme-a .ui-panel-wrapper {
+	background-color: 			#f9f9f9 /*{a-page-background-color}*/;
+	border-color:	 		#bbb /*{a-page-border}*/;
+	color: 					#333 /*{a-page-color}*/;
+	text-shadow: 0 /*{a-page-shadow-x}*/ 1px /*{a-page-shadow-y}*/ 0 /*{a-page-shadow-radius}*/ 	#f3f3f3 /*{a-page-shadow-color}*/;
+}
+/* Body: Read-only lists, text inputs, collapsible content */
+.ui-body-a,
+.ui-page-theme-a .ui-body-inherit,
+html .ui-bar-a .ui-body-inherit,
+html .ui-body-a .ui-body-inherit,
+html body .ui-group-theme-a .ui-body-inherit,
+html .ui-panel-page-container-a {
+	background-color: 			#fff /*{a-body-background-color}*/;
+	border-color:	 		#ddd /*{a-body-border}*/;
+	color: 					#333 /*{a-body-color}*/;
+	text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 0 /*{a-body-shadow-radius}*/ 	#f3f3f3 /*{a-body-shadow-color}*/;
+}
+.ui-body-a {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Links */
+.ui-page-theme-a a,
+html .ui-bar-a a,
+html .ui-body-a a,
+html body .ui-group-theme-a a {
+	color: #3388cc /*{a-link-color}*/;
+	font-weight: bold;
+}
+.ui-page-theme-a a:visited,
+html .ui-bar-a a:visited,
+html .ui-body-a a:visited,
+html body .ui-group-theme-a a:visited {
+    color: #3388cc /*{a-link-visited}*/;
+}
+.ui-page-theme-a a:hover,
+html .ui-bar-a a:hover,
+html .ui-body-a a:hover,
+html body .ui-group-theme-a a:hover {
+	color: #005599 /*{a-link-hover}*/;
+}
+.ui-page-theme-a a:active,
+html .ui-bar-a a:active,
+html .ui-body-a a:active,
+html body .ui-group-theme-a a:active {
+	color: #005599 /*{a-link-active}*/;
+}
+/* Button up */
+.ui-page-theme-a .ui-btn,
+html .ui-bar-a .ui-btn,
+html .ui-body-a .ui-btn,
+html body .ui-group-theme-a .ui-btn,
+html head + body .ui-btn.ui-btn-a,
+/* Button visited */
+.ui-page-theme-a .ui-btn:visited,
+html .ui-bar-a .ui-btn:visited,
+html .ui-body-a .ui-btn:visited,
+html body .ui-group-theme-a .ui-btn:visited,
+html head + body .ui-btn.ui-btn-a:visited {
+	background-color: 			#f6f6f6 /*{a-bup-background-color}*/;
+	border-color:	 		#ddd /*{a-bup-border}*/;
+	color: 					#333 /*{a-bup-color}*/;
+	text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 0 /*{a-bup-shadow-radius}*/ #f3f3f3 /*{a-bup-shadow-color}*/;
+}
+/* Button hover */
+.ui-page-theme-a .ui-btn:hover,
+html .ui-bar-a .ui-btn:hover,
+html .ui-body-a .ui-btn:hover,
+html body .ui-group-theme-a .ui-btn:hover,
+html head + body .ui-btn.ui-btn-a:hover {
+	background-color: 			#ededed /*{a-bhover-background-color}*/;
+	border-color:	 		#ddd /*{a-bhover-border}*/;
+	color: 					#333 /*{a-bhover-color}*/;
+	text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 0 /*{a-bhover-shadow-radius}*/ #f3f3f3 /*{a-bhover-shadow-color}*/;
+}
+/* Button down */
+.ui-page-theme-a .ui-btn:active,
+html .ui-bar-a .ui-btn:active,
+html .ui-body-a .ui-btn:active,
+html body .ui-group-theme-a .ui-btn:active,
+html head + body .ui-btn.ui-btn-a:active {
+	background-color: 			#e8e8e8 /*{a-bdown-background-color}*/;
+	border-color:	 		#ddd /*{a-bdown-border}*/;
+	color: 					#333 /*{a-bdown-color}*/;
+	text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 0 /*{a-bdown-shadow-radius}*/ #f3f3f3 /*{a-bdown-shadow-color}*/;
+}
+/* Active button */
+.ui-page-theme-a .ui-btn.ui-btn-active,
+html .ui-bar-a .ui-btn.ui-btn-active,
+html .ui-body-a .ui-btn.ui-btn-active,
+html body .ui-group-theme-a .ui-btn.ui-btn-active,
+html head + body .ui-btn.ui-btn-a.ui-btn-active,
+/* Active checkbox icon */
+.ui-page-theme-a .ui-checkbox-on:after,
+html .ui-bar-a .ui-checkbox-on:after,
+html .ui-body-a .ui-checkbox-on:after,
+html body .ui-group-theme-a .ui-checkbox-on:after,
+.ui-btn.ui-checkbox-on.ui-btn-a:after,
+/* Active flipswitch background */
+.ui-page-theme-a .ui-flipswitch-active,
+html .ui-bar-a .ui-flipswitch-active,
+html .ui-body-a .ui-flipswitch-active,
+html body .ui-group-theme-a .ui-flipswitch-active,
+html body .ui-flipswitch.ui-bar-a.ui-flipswitch-active,
+/* Active slider track */
+.ui-page-theme-a .ui-slider-track .ui-btn-active,
+html .ui-bar-a .ui-slider-track .ui-btn-active,
+html .ui-body-a .ui-slider-track .ui-btn-active,
+html body .ui-group-theme-a .ui-slider-track .ui-btn-active,
+html body div.ui-slider-track.ui-body-a .ui-btn-active {
+	background-color: 		#3388cc /*{a-active-background-color}*/;
+	border-color:	 		#3388cc /*{a-active-border}*/;
+	color: 					#fff /*{a-active-color}*/;
+	text-shadow: 0 /*{a-active-shadow-x}*/ 1px /*{a-active-shadow-y}*/ 0 /*{a-active-shadow-radius}*/ #005599 /*{a-active-shadow-color}*/;
+}
+/* Active radio button icon */
+.ui-page-theme-a .ui-radio-on:after,
+html .ui-bar-a .ui-radio-on:after,
+html .ui-body-a .ui-radio-on:after,
+html body .ui-group-theme-a .ui-radio-on:after,
+.ui-btn.ui-radio-on.ui-btn-a:after {
+	border-color:			#3388cc /*{a-active-background-color}*/;
+}
+/* Focus */
+.ui-page-theme-a .ui-btn:focus,
+html .ui-bar-a .ui-btn:focus,
+html .ui-body-a .ui-btn:focus,
+html body .ui-group-theme-a .ui-btn:focus,
+html head + body .ui-btn.ui-btn-a:focus,
+/* Focus buttons and text inputs with div wrap */
+.ui-page-theme-a .ui-focus,
+html .ui-bar-a .ui-focus,
+html .ui-body-a .ui-focus,
+html body .ui-group-theme-a .ui-focus,
+html head + body .ui-btn-a.ui-focus,
+html head + body .ui-body-a.ui-focus {
+	-webkit-box-shadow: 0 0 12px 	#3388cc /*{a-active-background-color}*/;
+	-moz-box-shadow: 0 0 12px 		#3388cc /*{a-active-background-color}*/;
+	box-shadow: 0 0 12px 			#3388cc /*{a-active-background-color}*/;
+}
+/* B
+-----------------------------------------------------------------------------------------------------------*/
+/* Bar: Toolbars, dividers, slider track */
+.ui-bar-b,
+.ui-page-theme-b .ui-bar-inherit,
+html .ui-bar-b .ui-bar-inherit,
+html .ui-body-b .ui-bar-inherit,
+html body .ui-group-theme-b .ui-bar-inherit {
+	background-color: 			#1d1d1d /*{b-bar-background-color}*/;
+	border-color:	 		#1b1b1b /*{b-bar-border}*/;
+	color: 					#fff /*{b-bar-color}*/;
+	text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 0 /*{b-bar-shadow-radius}*/ 	#111 /*{b-bar-shadow-color}*/;
+	font-weight: bold;
+}
+.ui-bar-b {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Page and overlay */
+.ui-overlay-b,
+.ui-page-theme-b,
+.ui-page-theme-b .ui-panel-wrapper {
+	background-color: 			#252525 /*{b-page-background-color}*/;
+	border-color:	 		#454545 /*{b-page-border}*/;
+	color: 					#fff /*{b-page-color}*/;
+	text-shadow: 0 /*{b-page-shadow-x}*/ 1px /*{b-page-shadow-y}*/ 0 /*{b-page-shadow-radius}*/ 	#111 /*{b-page-shadow-color}*/;
+}
+/* Body: Read-only lists, text inputs, collapsible content */
+.ui-body-b,
+.ui-page-theme-b .ui-body-inherit,
+html .ui-bar-b .ui-body-inherit,
+html .ui-body-b .ui-body-inherit,
+html body .ui-group-theme-b .ui-body-inherit,
+html .ui-panel-page-container-b {
+	background-color: 			#2a2a2a /*{b-body-background-color}*/;
+	border-color:	 		#1d1d1d /*{b-body-border}*/;
+	color: 					#fff /*{b-body-color}*/;
+	text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ 	#111 /*{b-body-shadow-color}*/;
+}
+.ui-body-b {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Links */
+.ui-page-theme-b a,
+html .ui-bar-b a,
+html .ui-body-b a,
+html body .ui-group-theme-b a {
+	color: #22aadd /*{b-link-color}*/;
+	font-weight: bold;
+}
+.ui-page-theme-b a:visited,
+html .ui-bar-b a:visited,
+html .ui-body-b a:visited,
+html body .ui-group-theme-b a:visited {
+    color: #22aadd /*{b-link-visited}*/;
+}
+.ui-page-theme-b a:hover,
+html .ui-bar-b a:hover,
+html .ui-body-b a:hover,
+html body .ui-group-theme-b a:hover {
+	color: #0088bb /*{b-link-hover}*/;
+}
+.ui-page-theme-b a:active,
+html .ui-bar-b a:active,
+html .ui-body-b a:active,
+html body .ui-group-theme-b a:active {
+	color: #0088bb /*{b-link-active}*/;
+}
+/* Button up */
+.ui-page-theme-b .ui-btn,
+html .ui-bar-b .ui-btn,
+html .ui-body-b .ui-btn,
+html body .ui-group-theme-b .ui-btn,
+html head + body .ui-btn.ui-btn-b,
+/* Button visited */
+.ui-page-theme-b .ui-btn:visited,
+html .ui-bar-b .ui-btn:visited,
+html .ui-body-b .ui-btn:visited,
+html body .ui-group-theme-b .ui-btn:visited,
+html head + body .ui-btn.ui-btn-b:visited {
+	background-color: 			#333 /*{b-bup-background-color}*/;
+	border-color:	 		#1f1f1f /*{b-bup-border}*/;
+	color: 					#fff /*{b-bup-color}*/;
+	text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 0 /*{b-bup-shadow-radius}*/ #111 /*{b-bup-shadow-color}*/;
+}
+/* Button hover */
+.ui-page-theme-b .ui-btn:hover,
+html .ui-bar-b .ui-btn:hover,
+html .ui-body-b .ui-btn:hover,
+html body .ui-group-theme-b .ui-btn:hover,
+html head + body .ui-btn.ui-btn-b:hover {
+	background-color: 			#373737 /*{b-bhover-background-color}*/;
+	border-color:	 		#1f1f1f /*{b-bhover-border}*/;
+	color: 					#fff /*{b-bhover-color}*/;
+	text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 0 /*{b-bhover-shadow-radius}*/ #111 /*{b-bhover-shadow-color}*/;
+}
+/* Button down */
+.ui-page-theme-b .ui-btn:active,
+html .ui-bar-b .ui-btn:active,
+html .ui-body-b .ui-btn:active,
+html body .ui-group-theme-b .ui-btn:active,
+html head + body .ui-btn.ui-btn-b:active {
+	background-color: 			#404040 /*{b-bdown-background-color}*/;
+	border-color:	 		#1f1f1f /*{b-bdown-border}*/;
+	color: 					#fff /*{b-bdown-color}*/;
+	text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 0 /*{b-bdown-shadow-radius}*/ #111 /*{b-bdown-shadow-color}*/;
+}
+/* Active button */
+.ui-page-theme-b .ui-btn.ui-btn-active,
+html .ui-bar-b .ui-btn.ui-btn-active,
+html .ui-body-b .ui-btn.ui-btn-active,
+html body .ui-group-theme-b .ui-btn.ui-btn-active,
+html head + body .ui-btn.ui-btn-b.ui-btn-active,
+/* Active checkbox icon */
+.ui-page-theme-b .ui-checkbox-on:after,
+html .ui-bar-b .ui-checkbox-on:after,
+html .ui-body-b .ui-checkbox-on:after,
+html body .ui-group-theme-b .ui-checkbox-on:after,
+.ui-btn.ui-checkbox-on.ui-btn-b:after,
+/* Active flipswitch background */
+.ui-page-theme-b .ui-flipswitch-active,
+html .ui-bar-b .ui-flipswitch-active,
+html .ui-body-b .ui-flipswitch-active,
+html body .ui-group-theme-b .ui-flipswitch-active,
+html body .ui-flipswitch.ui-bar-b.ui-flipswitch-active,
+/* Active slider track */
+.ui-page-theme-b .ui-slider-track .ui-btn-active,
+html .ui-bar-b .ui-slider-track .ui-btn-active,
+html .ui-body-b .ui-slider-track .ui-btn-active,
+html body .ui-group-theme-b .ui-slider-track .ui-btn-active,
+html body div.ui-slider-track.ui-body-b .ui-btn-active {
+	background-color: 		#22aadd /*{b-active-background-color}*/;
+	border-color:	 		#22aadd /*{b-active-border}*/;
+	color: 					#fff /*{b-active-color}*/;
+	text-shadow: 0 /*{b-active-shadow-x}*/ 1px /*{b-active-shadow-y}*/ 0 /*{b-active-shadow-radius}*/ #0088bb /*{b-active-shadow-color}*/;
+}
+/* Active radio button icon */
+.ui-page-theme-b .ui-radio-on:after,
+html .ui-bar-b .ui-radio-on:after,
+html .ui-body-b .ui-radio-on:after,
+html body .ui-group-theme-b .ui-radio-on:after,
+.ui-btn.ui-radio-on.ui-btn-b:after {
+	border-color:			#22aadd /*{b-active-background-color}*/;
+}
+/* Focus */
+.ui-page-theme-b .ui-btn:focus,
+html .ui-bar-b .ui-btn:focus,
+html .ui-body-b .ui-btn:focus,
+html body .ui-group-theme-b .ui-btn:focus,
+html head + body .ui-btn.ui-btn-b:focus,
+/* Focus buttons and text inputs with div wrap */
+.ui-page-theme-b .ui-focus,
+html .ui-bar-b .ui-focus,
+html .ui-body-b .ui-focus,
+html body .ui-group-theme-b .ui-focus,
+html head + body .ui-btn-b.ui-focus,
+html head + body .ui-body-b.ui-focus {
+	-webkit-box-shadow: 0 0 12px 	#22aadd /*{b-active-background-color}*/;
+	-moz-box-shadow: 0 0 12px 		#22aadd /*{b-active-background-color}*/;
+	box-shadow: 0 0 12px 			#22aadd /*{b-active-background-color}*/;
+}
+/* Structure */
+/* Disabled
+-----------------------------------------------------------------------------------------------------------*/
+/* Class ui-disabled deprecated in 1.4. :disabled not supported by IE8 so we use [disabled] */
+.ui-disabled,
+.ui-state-disabled,
+button[disabled],
+.ui-select .ui-btn.ui-state-disabled {
+	filter: Alpha(Opacity=30);
+	opacity: .3;
+	cursor: default !important;
+	pointer-events: none;
+}
+/* Focus state outline
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn:focus,
+.ui-btn.ui-focus {
+	outline: 0;
+}
+/* Unset box-shadow in browsers that don't do it right */
+.ui-noboxshadow .ui-shadow,
+.ui-noboxshadow .ui-shadow-inset,
+.ui-noboxshadow .ui-overlay-shadow,
+.ui-noboxshadow .ui-shadow-icon.ui-btn:after,
+.ui-noboxshadow .ui-shadow-icon .ui-btn:after,
+.ui-noboxshadow .ui-focus,
+.ui-noboxshadow .ui-btn:focus,
+.ui-noboxshadow  input:focus,
+.ui-noboxshadow .ui-panel {
+	-webkit-box-shadow: none !important;
+	-moz-box-shadow: none !important;
+	box-shadow: none !important;
+}
+.ui-noboxshadow .ui-btn:focus,
+.ui-noboxshadow .ui-focus {
+	outline-width: 1px;
+	outline-style: auto;
+}
+/* Some unsets */
+.ui-mobile,
+.ui-mobile body {
+	height: 99.9%;
+}
+.ui-mobile fieldset,
+.ui-page {
+	padding: 0;
+	margin: 0;
+}
+.ui-mobile a img,
+.ui-mobile fieldset {
+	border-width: 0;
+}
+/* Fixes for fieldset issues on IE10 and FF (see #6077) */
+.ui-mobile fieldset {
+	min-width: 0;
+}
+@-moz-document url-prefix() {
+	.ui-mobile fieldset {
+		display: table-column;
+		vertical-align: middle;
+	}
+}
+/* Viewport */
+.ui-mobile-viewport {
+	margin: 0;
+	overflow-x: visible;
+	-webkit-text-size-adjust: 100%;
+	-ms-text-size-adjust:none;
+	-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+/* Issue #2066 */
+body.ui-mobile-viewport,
+div.ui-mobile-viewport {
+	overflow-x: hidden;
+}
+/* "page" containers - full-screen views, one should always be in view post-pageload */
+.ui-mobile [data-role=page],
+.ui-mobile [data-role=dialog],
+.ui-page {
+	top: 0;
+	left: 0;
+	width: 100%;
+	min-height: 100%;
+	position: absolute;
+	display: none;
+	border: 0;
+}
+/* On ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */
+.ui-page {
+	outline: none;
+}
+.ui-mobile .ui-page-active {
+	display: block;
+	overflow: visible;
+	overflow-x: hidden;
+}
+@media screen and (orientation: portrait) {
+	.ui-mobile .ui-page {
+		min-height: 420px;
+	}
+}
+@media screen and (orientation: landscape) {
+	.ui-mobile .ui-page {
+		min-height: 300px;
+	}
+}
+/* Fouc */
+.ui-mobile-rendering > * {
+	visibility: hidden;
+}
+/* Non-js content hiding */
+.ui-nojs {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+/* Loading screen */
+.ui-loading .ui-loader {
+	display: block;
+}
+.ui-loader {
+	display: none;
+	z-index: 9999999;
+	position: fixed;
+	top: 50%;
+	left: 50%;
+	border:0;
+}
+.ui-loader-default {
+	background: none;
+	filter: Alpha(Opacity=18);
+	opacity: .18;
+	width: 2.875em;
+	height: 2.875em;
+	margin-left: -1.4375em;
+	margin-top: -1.4375em;
+}
+.ui-loader-verbose {
+	width: 12.5em;
+	filter: Alpha(Opacity=88);
+	opacity: .88;
+	box-shadow: 0 1px 1px -1px #fff;
+	height: auto;
+	margin-left: -6.875em;
+	margin-top: -2.6875em;
+	padding: .625em;
+}
+.ui-loader-default h1 {
+	font-size: 0;
+	width: 0;
+	height: 0;
+	overflow: hidden;
+}
+.ui-loader-verbose h1 {
+	font-size: 1em;
+	margin: 0;
+	text-align: center;
+}
+.ui-loader .ui-icon-loading {
+	background-color: #000;
+	display: block;
+	margin: 0;
+	width: 2.75em;
+	height: 2.75em;
+	padding: .0625em;
+	-webkit-border-radius: 2.25em;
+	border-radius: 2.25em;
+}
+.ui-loader-verbose .ui-icon-loading {
+	margin: 0 auto .625em;
+	filter: Alpha(Opacity=75);
+	opacity: .75;
+}
+.ui-loader-textonly {
+	padding: .9375em;
+	margin-left: -7.1875em;
+}
+.ui-loader-textonly .ui-icon-loading {
+	display: none;
+}
+.ui-loader-fakefix {
+	position: absolute;
+}
+/* Headers, content panels */
+.ui-bar,
+.ui-body {
+	position: relative;
+	padding: .4em 1em;
+	overflow: hidden;
+	display: block;
+	clear: both;
+}
+.ui-bar h1,
+.ui-bar h2,
+.ui-bar h3,
+.ui-bar h4,
+.ui-bar h5,
+.ui-bar h6 {
+	margin: 0;
+	padding: 0;
+	font-size: 1em;
+	display: inline-block;
+}
+.ui-header,
+.ui-footer {
+	border-width: 1px 0;
+	border-style: solid;
+	position: relative;
+}
+.ui-header:empty,
+.ui-footer:empty {
+	min-height: 2.6875em;
+}
+.ui-header .ui-title,
+.ui-footer .ui-title {
+	font-size: 1em;
+	min-height: 1.1em;
+	text-align: center;
+	display: block;
+	margin: 0 30%;
+	padding: .7em 0;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+	outline: 0 !important;
+}
+.ui-footer .ui-title {
+	margin: 0 1em;
+}
+.ui-content {
+	border-width: 0;
+	overflow: visible;
+	overflow-x: hidden;
+	padding: 1em;
+}
+/* Corner styling for dialogs and popups */
+.ui-corner-all > .ui-header:first-child,
+.ui-corner-all > .ui-content:first-child,
+.ui-corner-all > .ui-footer:first-child {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+}
+.ui-corner-all > .ui-header:last-child,
+.ui-corner-all > .ui-content:last-child,
+.ui-corner-all > .ui-footer:last-child {
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+/* Buttons and icons */
+.ui-btn {
+	font-size: 16px;
+	margin: .5em 0;
+	padding: .7em 1em;
+	display: block;
+	position: relative;
+	text-align: center;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+	cursor: pointer;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+.ui-btn-icon-notext,
+.ui-header button.ui-btn.ui-btn-icon-notext,
+.ui-footer button.ui-btn.ui-btn-icon-notext {
+	padding: 0;
+	width: 1.75em;
+	height: 1.75em;
+	text-indent: -9999px;
+	white-space: nowrap !important;
+}
+.ui-mini {
+	font-size: 12.5px;
+}
+.ui-mini .ui-btn {
+	font-size: inherit;
+}
+/* Make buttons in toolbars default to mini and inline. */
+.ui-header .ui-btn,
+.ui-footer .ui-btn {
+	font-size: 12.5px;
+	display: inline-block;
+	vertical-align: middle;
+}
+.ui-header .ui-controlgroup .ui-btn-icon-notext,
+.ui-footer .ui-controlgroup .ui-btn-icon-notext {
+    font-size: 12.5px;
+}
+/* To ensure same top and left/right position when ui-btn-left/right are added to something other than buttons. */
+.ui-header .ui-btn-left,
+.ui-header .ui-btn-right {
+	font-size: 12.5px;
+}
+.ui-mini.ui-btn-icon-notext,
+.ui-mini .ui-btn-icon-notext,
+.ui-header .ui-btn-icon-notext,
+.ui-footer .ui-btn-icon-notext {
+	font-size: 16px;	
+	padding: 0;
+}
+.ui-btn-inline {
+	display: inline-block;
+	vertical-align: middle;
+	margin-right: .625em;
+}
+.ui-btn-icon-left {
+	padding-left: 2.5em;
+}
+.ui-btn-icon-right {
+	padding-right: 2.5em;
+}
+.ui-btn-icon-top {
+	padding-top: 2.5em;
+}
+.ui-btn-icon-bottom {
+	padding-bottom: 2.5em;
+}
+.ui-header .ui-btn-icon-top,
+.ui-footer .ui-btn-icon-top,
+.ui-header .ui-btn-icon-bottom,
+.ui-footer .ui-btn-icon-bottom {
+	padding-left: .3125em;
+	padding-right: .3125em;
+}
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after,
+.ui-btn-icon-notext:after {
+	content: "";
+	position: absolute;
+	display: block;
+	width: 22px;
+	height: 22px;
+}
+.ui-btn-icon-notext:after,
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after {
+	top: 50%;
+	margin-top: -11px;
+}
+.ui-btn-icon-left:after {
+	left: .5625em;
+}
+.ui-btn-icon-right:after {
+	right: .5625em;
+}
+.ui-mini.ui-btn-icon-left:after,
+.ui-mini .ui-btn-icon-left:after,
+.ui-header .ui-btn-icon-left:after,
+.ui-footer .ui-btn-icon-left:after {
+	left: .37em;
+}
+.ui-mini.ui-btn-icon-right:after,
+.ui-mini .ui-btn-icon-right:after,
+.ui-header .ui-btn-icon-right:after,
+.ui-footer .ui-btn-icon-right:after {
+	right: .37em;
+}
+.ui-btn-icon-notext:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after {
+	left: 50%;
+	margin-left: -11px;
+}
+.ui-btn-icon-top:after {
+	top: .5625em;
+}
+.ui-btn-icon-bottom:after {
+	top: auto;
+	bottom: .5625em;
+}
+/* Buttons in header position classes */
+.ui-header .ui-btn-left,
+.ui-header .ui-btn-right,
+.ui-btn-left > [class*="ui-"],
+.ui-btn-right > [class*="ui-"] {
+	margin: 0;
+}
+.ui-btn-left,
+.ui-btn-right {
+	position: absolute;
+	top: .24em;
+}
+.ui-btn-left {
+	left: .4em;
+}
+.ui-btn-right {
+	right: .4em;
+}
+.ui-btn-icon-notext.ui-btn-left {
+	top: .3125em;
+	left: .3125em;
+}
+.ui-btn-icon-notext.ui-btn-right {
+	top: .3125em;
+	right: .3125em;
+}
+/* Button elements */
+button.ui-btn,
+.ui-controlgroup-controls button.ui-btn-icon-notext {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	width: 100%;
+}
+button.ui-btn-inline,
+.ui-header button.ui-btn,
+.ui-footer button.ui-btn {
+	width: auto;
+}
+/* Firefox adds a 1px border in a button element. We negate this to make sure they have the same height as other buttons in controlgroups. */
+button.ui-btn::-moz-focus-inner {
+	border: 0;
+}
+button.ui-btn-icon-notext,
+.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn {
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+	width: 1.75em;
+}
+/* Form labels */
+.ui-mobile label,
+.ui-controlgroup-label {
+	display: block;
+	margin: 0 0 .4em;
+}
+/* Accessible content hiding */
+/* ui-hide-label deprecated in 1.4. TODO: Remove in 1.5 */
+.ui-hide-label > label,
+.ui-hide-label .ui-controlgroup-label,
+.ui-hide-label .ui-rangeslider label,
+.ui-hidden-accessible {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+/* Used for hiding elements by the filterable widget. You can also use this class to hide list items or buttons in controlgroups; this ensures correct corner styling. */
+.ui-screen-hidden {
+	display: none !important;
+}
+/* Transitions originally inspired by those from jQtouch, nice work, folks */
+.ui-mobile-viewport-transitioning,
+.ui-mobile-viewport-transitioning .ui-page {
+	width: 100%;
+	height: 100%;
+	overflow: hidden;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+}
+.ui-page-pre-in {
+	opacity: 0;
+}
+.in {
+	-webkit-animation-timing-function: ease-out;
+	-webkit-animation-duration: 350ms;
+	-moz-animation-timing-function: ease-out;
+	-moz-animation-duration: 350ms;
+	animation-timing-function: ease-out;
+	animation-duration: 350ms;
+}
+.out {
+	-webkit-animation-timing-function: ease-in;
+	-webkit-animation-duration: 225ms;
+	-moz-animation-timing-function: ease-in;
+	-moz-animation-duration: 225ms;
+	animation-timing-function: ease-in;
+	animation-duration: 225ms;
+}
+@-webkit-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-moz-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-webkit-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+@-moz-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+@keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+.fade.out {
+	opacity: 0;
+	-webkit-animation-duration: 125ms;
+	-webkit-animation-name: fadeout;
+	-moz-animation-duration: 125ms;
+	-moz-animation-name: fadeout;
+	animation-duration: 125ms;
+	animation-name: fadeout;
+}
+.fade.in {
+	opacity: 1;
+	-webkit-animation-duration: 225ms;
+	-webkit-animation-name: fadein;
+	-moz-animation-duration: 225ms;
+	-moz-animation-name: fadein;
+	animation-duration: 225ms;
+	animation-name: fadein;
+}
+.pop {
+	-webkit-transform-origin: 50% 50%;
+	-moz-transform-origin: 50% 50%;
+	transform-origin: 50% 50%;
+}
+.pop.in {
+	-webkit-transform: scale(1);
+	-webkit-animation-name: popin;
+	-webkit-animation-duration: 350ms;
+	-moz-transform: scale(1);
+	-moz-animation-name: popin;
+	-moz-animation-duration: 350ms;
+	transform: scale(1);
+	animation-name: popin;
+	animation-duration: 350ms;
+    opacity: 1;
+}
+.pop.out {
+	-webkit-animation-name: fadeout;
+	-webkit-animation-duration: 100ms;
+	-moz-animation-name: fadeout;
+	-moz-animation-duration: 100ms;
+	animation-name: fadeout;
+	animation-duration: 100ms;
+	opacity: 0;
+}
+.pop.in.reverse {
+	-webkit-animation-name: fadein;
+	-moz-animation-name: fadein;
+	animation-name: fadein;
+}
+.pop.out.reverse {
+	-webkit-transform: scale(.8);
+	-webkit-animation-name: popout;
+	-moz-transform: scale(.8);
+	-moz-animation-name: popout;
+	transform: scale(.8);
+	animation-name: popout;
+}
+@-webkit-keyframes popin {
+    from {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+}
+@-moz-keyframes popin {
+    from {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+}
+@keyframes popin {
+    from {
+        transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        transform: scale(1);
+        opacity: 1;
+    }
+}
+@-webkit-keyframes popout {
+    from {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+}
+@-moz-keyframes popout {
+    from {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+}
+@keyframes popout {
+    from {
+        transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        transform: scale(.8);
+        opacity: 0;
+    }
+}
+/* keyframes for slidein from sides */
+@-webkit-keyframes slideinfromright {
+    from { -webkit-transform: translate3d(100%,0,0); }
+    to { -webkit-transform: translate3d(0,0,0); }
+}
+@-moz-keyframes slideinfromright {
+    from { -moz-transform: translateX(100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromright {
+    from { transform: translateX(100%); }
+    to { transform: translateX(0); }
+}
+@-webkit-keyframes slideinfromleft {
+    from { -webkit-transform: translate3d(-100%,0,0); }
+    to { -webkit-transform: translate3d(0,0,0); }
+}
+@-moz-keyframes slideinfromleft {
+    from { -moz-transform: translateX(-100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromleft {
+    from { transform: translateX(-100%); }
+    to { transform: translateX(0); }
+}
+/* keyframes for slideout to sides */
+@-webkit-keyframes slideouttoleft {
+    from { -webkit-transform: translate3d(0,0,0); }
+    to { -webkit-transform: translate3d(-100%,0,0); }
+}
+@-moz-keyframes slideouttoleft {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(-100%); }
+}
+@keyframes slideouttoleft {
+    from { transform: translateX(0); }
+    to { transform: translateX(-100%); }
+}
+@-webkit-keyframes slideouttoright {
+    from { -webkit-transform: translate3d(0,0,0); }
+    to { -webkit-transform: translate3d(100%,0,0); }
+}
+@-moz-keyframes slideouttoright {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(100%); }
+}
+@keyframes slideouttoright {
+    from { transform: translateX(0); }
+    to { transform: translateX(100%); }
+}
+.slide.out, .slide.in {
+	-webkit-animation-timing-function: ease-out;
+	-webkit-animation-duration: 350ms;
+	-moz-animation-timing-function: ease-out;
+	-moz-animation-duration: 350ms;
+	animation-timing-function: ease-out;
+	animation-duration: 350ms;
+}
+.slide.out {
+	-webkit-transform: translate3d(-100%,0,0);
+	-webkit-animation-name: slideouttoleft;
+	-moz-transform: translateX(-100%);
+	-moz-animation-name: slideouttoleft;
+	transform: translateX(-100%);
+	animation-name: slideouttoleft;
+}
+.slide.in {
+	-webkit-transform: translate3d(0,0,0);
+	-webkit-animation-name: slideinfromright;
+	-moz-transform: translateX(0);
+	-moz-animation-name: slideinfromright;
+	transform: translateX(0);
+	animation-name: slideinfromright;
+}
+.slide.out.reverse {
+	-webkit-transform: translate3d(100%,0,0);
+	-webkit-animation-name: slideouttoright;
+	-moz-transform: translateX(100%);
+	-moz-animation-name: slideouttoright;
+	transform: translateX(100%);
+	animation-name: slideouttoright;
+}
+.slide.in.reverse {
+	-webkit-transform: translate3d(0,0,0);
+	-webkit-animation-name: slideinfromleft;
+	-moz-transform: translateX(0);
+	-moz-animation-name: slideinfromleft;
+	transform: translateX(0);
+	animation-name: slideinfromleft;
+}
+.slidefade.out {
+	-webkit-transform: translateX(-100%);
+	-webkit-animation-name: slideouttoleft;
+	-webkit-animation-duration: 225ms;
+	-moz-transform: translateX(-100%);
+	-moz-animation-name: slideouttoleft;
+	-moz-animation-duration: 225ms;
+	transform: translateX(-100%);
+	animation-name: slideouttoleft;
+	animation-duration: 225ms;
+}
+.slidefade.in {
+	-webkit-transform: translateX(0);
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateX(0);
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 200ms;
+	transform: translateX(0);
+	animation-name: fadein;
+	animation-duration: 200ms;
+}
+.slidefade.out.reverse {
+	-webkit-transform: translateX(100%);
+	-webkit-animation-name: slideouttoright;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateX(100%);
+	-moz-animation-name: slideouttoright;
+	-moz-animation-duration: 200ms;
+	transform: translateX(100%);
+	animation-name: slideouttoright;
+	animation-duration: 200ms;
+}
+.slidefade.in.reverse {
+	-webkit-transform: translateX(0);
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateX(0);
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 200ms;
+	transform: translateX(0);
+	animation-name: fadein;
+	animation-duration: 200ms;
+}
+/* slide down */
+.slidedown.out {
+	-webkit-animation-name: fadeout;
+	-webkit-animation-duration: 100ms;
+	-moz-animation-name: fadeout;
+	-moz-animation-duration: 100ms;
+	animation-name: fadeout;
+	animation-duration: 100ms;
+}
+.slidedown.in {
+	-webkit-transform: translateY(0);
+	-webkit-animation-name: slideinfromtop;
+	-webkit-animation-duration: 250ms;
+	-moz-transform: translateY(0);
+	-moz-animation-name: slideinfromtop;
+	-moz-animation-duration: 250ms;
+	transform: translateY(0);
+	animation-name: slideinfromtop;
+	animation-duration: 250ms;
+}
+.slidedown.in.reverse {
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 150ms;
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 150ms;
+	animation-name: fadein;
+	animation-duration: 150ms;
+}
+.slidedown.out.reverse {
+	-webkit-transform: translateY(-100%);
+	-webkit-animation-name: slideouttotop;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateY(-100%);
+	-moz-animation-name: slideouttotop;
+	-moz-animation-duration: 200ms;
+	transform: translateY(-100%);
+	animation-name: slideouttotop;
+	animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfromtop {
+    from { -webkit-transform: translateY(-100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfromtop {
+    from { -moz-transform: translateY(-100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfromtop {
+    from { transform: translateY(-100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttotop {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(-100%); }
+}
+@-moz-keyframes slideouttotop {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(-100%); }
+}
+@keyframes slideouttotop {
+    from { transform: translateY(0); }
+    to { transform: translateY(-100%); }
+}
+/* slide up */
+.slideup.out {
+	-webkit-animation-name: fadeout;
+	-webkit-animation-duration: 100ms;
+	-moz-animation-name: fadeout;
+	-moz-animation-duration: 100ms;
+	animation-name: fadeout;
+	animation-duration: 100ms;
+}
+.slideup.in {
+	-webkit-transform: translateY(0);
+	-webkit-animation-name: slideinfrombottom;
+	-webkit-animation-duration: 250ms;
+	-moz-transform: translateY(0);
+	-moz-animation-name: slideinfrombottom;
+	-moz-animation-duration: 250ms;
+	transform: translateY(0);
+	animation-name: slideinfrombottom;
+	animation-duration: 250ms;
+}
+.slideup.in.reverse {
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 150ms;
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 150ms;
+	animation-name: fadein;
+	animation-duration: 150ms;
+}
+.slideup.out.reverse {
+	-webkit-transform: translateY(100%);
+	-webkit-animation-name: slideouttobottom;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateY(100%);
+	-moz-animation-name: slideouttobottom;
+	-moz-animation-duration: 200ms;
+	transform: translateY(100%);
+	animation-name: slideouttobottom;
+	animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfrombottom {
+    from { -webkit-transform: translateY(100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfrombottom {
+    from { -moz-transform: translateY(100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfrombottom {
+    from { transform: translateY(100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttobottom {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(100%); }
+}
+@-moz-keyframes slideouttobottom {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(100%); }
+}
+@keyframes slideouttobottom {
+    from { transform: translateY(0); }
+    to { transform: translateY(100%); }
+}
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-flip {
+	-webkit-perspective: 1000;
+	-moz-perspective: 1000;
+	perspective: 1000;
+	position: absolute;
+}
+.flip {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+	-moz-backface-visibility: hidden;
+	-moz-transform: translateX(0);
+	backface-visibility: hidden;
+	transform: translateX(0);
+}
+.flip.out {
+	-webkit-transform: rotateY(-90deg) scale(.9);
+	-webkit-animation-name: flipouttoleft;
+	-webkit-animation-duration: 175ms;
+	-moz-transform: rotateY(-90deg) scale(.9);
+	-moz-animation-name: flipouttoleft;
+	-moz-animation-duration: 175ms;
+	transform: rotateY(-90deg) scale(.9);
+	animation-name: flipouttoleft;
+	animation-duration: 175ms;
+}
+.flip.in {
+	-webkit-animation-name: flipintoright;
+	-webkit-animation-duration: 225ms;
+	-moz-animation-name: flipintoright;
+	-moz-animation-duration: 225ms;
+	animation-name: flipintoright;
+	animation-duration: 225ms;
+}
+.flip.out.reverse {
+	-webkit-transform: rotateY(90deg) scale(.9);
+	-webkit-animation-name: flipouttoright;
+	-moz-transform: rotateY(90deg) scale(.9);
+	-moz-animation-name: flipouttoright;
+	transform: rotateY(90deg) scale(.9);
+	animation-name: flipouttoright;
+}
+.flip.in.reverse {
+	-webkit-animation-name: flipintoleft;
+	-moz-animation-name: flipintoleft;
+	animation-name: flipintoleft;
+}
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-turn {
+	-webkit-perspective: 200px;
+	-moz-perspective: 200px;
+	-ms-perspective: 200px;
+	perspective: 200px;
+	position: absolute;
+}
+.turn {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+	-webkit-transform-origin: 0;
+	
+	-moz-backface-visibility: hidden;
+	-moz-transform: translateX(0);
+	-moz-transform-origin: 0;
+	
+	backface-visibility :hidden;
+	transform: translateX(0);
+	transform-origin: 0;
+}
+.turn.out {
+	-webkit-transform: rotateY(-90deg) scale(.9);
+	-webkit-animation-name: flipouttoleft;
+	-webkit-animation-duration: 125ms;
+	-moz-transform: rotateY(-90deg) scale(.9);
+	-moz-animation-name: flipouttoleft;
+	-moz-animation-duration: 125ms;
+	transform: rotateY(-90deg) scale(.9);
+	animation-name: flipouttoleft;
+	animation-duration: 125ms;
+}
+.turn.in {
+	-webkit-animation-name: flipintoright;
+	-webkit-animation-duration: 250ms;
+	-moz-animation-name: flipintoright;
+	-moz-animation-duration: 250ms;
+	animation-name: flipintoright;
+	animation-duration: 250ms;
+	
+}
+.turn.out.reverse {
+	-webkit-transform: rotateY(90deg) scale(.9);
+	-webkit-animation-name: flipouttoright;
+	-moz-transform: rotateY(90deg) scale(.9);
+	-moz-animation-name: flipouttoright;
+	transform: rotateY(90deg) scale(.9);
+	animation-name: flipouttoright;
+}
+.turn.in.reverse {
+	-webkit-animation-name: flipintoleft;
+	-moz-animation-name: flipintoleft;
+	animation-name: flipintoleft;
+}
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* flow transition */
+.flow {
+	-webkit-transform-origin: 50% 30%;
+	-webkit-box-shadow: 0 0 20px rgba(0,0,0,.4);
+	-moz-transform-origin: 50% 30%;	
+	-moz-box-shadow: 0 0 20px rgba(0,0,0,.4);
+	transform-origin: 50% 30%;	
+	box-shadow: 0 0 20px rgba(0,0,0,.4);
+}
+.ui-dialog.flow {
+	-webkit-transform-origin: none;
+	-webkit-box-shadow: none;
+	-moz-transform-origin: none;	
+	-moz-box-shadow: none;
+	transform-origin: none;	
+	box-shadow: none;
+}
+.flow.out {
+	-webkit-transform: translateX(-100%) scale(.7);
+	-webkit-animation-name: flowouttoleft;
+	-webkit-animation-timing-function: ease;
+	-webkit-animation-duration: 350ms;
+	-moz-transform: translateX(-100%) scale(.7);
+	-moz-animation-name: flowouttoleft;
+	-moz-animation-timing-function: ease;
+	-moz-animation-duration: 350ms;
+	transform: translateX(-100%) scale(.7);
+	animation-name: flowouttoleft;
+	animation-timing-function: ease;
+	animation-duration: 350ms;
+}
+.flow.in {
+	-webkit-transform: translateX(0) scale(1);
+	-webkit-animation-name: flowinfromright;
+	-webkit-animation-timing-function: ease;
+	-webkit-animation-duration: 350ms;
+	-moz-transform: translateX(0) scale(1);
+	-moz-animation-name: flowinfromright;
+	-moz-animation-timing-function: ease;
+	-moz-animation-duration: 350ms;
+	transform: translateX(0) scale(1);
+	animation-name: flowinfromright;
+	animation-timing-function: ease;
+	animation-duration: 350ms;
+}
+.flow.out.reverse {
+	-webkit-transform: translateX(100%);
+	-webkit-animation-name: flowouttoright;
+	-moz-transform: translateX(100%);
+	-moz-animation-name: flowouttoright;
+	transform: translateX(100%);
+	animation-name: flowouttoright;
+}
+.flow.in.reverse {
+	-webkit-animation-name: flowinfromleft;
+	-moz-animation-name: flowinfromleft;
+	animation-name: flowinfromleft;
+}
+@-webkit-keyframes flowouttoleft {
+    0% { -webkit-transform: translateX(0) scale(1); }
+	60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(-100%) scale(.7); }
+}
+@-moz-keyframes flowouttoleft {
+    0% { -moz-transform: translateX(0) scale(1); }
+	60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(-100%) scale(.7); }
+}
+@keyframes flowouttoleft {
+    0% { transform: translateX(0) scale(1); }
+	60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(-100%) scale(.7); }
+}
+@-webkit-keyframes flowouttoright {
+    0% { -webkit-transform: translateX(0) scale(1); }
+	60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform:  translateX(100%) scale(.7); }
+}
+@-moz-keyframes flowouttoright {
+    0% { -moz-transform: translateX(0) scale(1); }
+	60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(100%) scale(.7); }
+}
+@keyframes flowouttoright {
+    0% { transform: translateX(0) scale(1); }
+	60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(100%) scale(.7); }
+}
+@-webkit-keyframes flowinfromleft {
+    0% { -webkit-transform: translateX(-100%) scale(.7); }
+	30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromleft {
+    0% { -moz-transform: translateX(-100%) scale(.7); }
+	30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromleft {
+    0% { transform: translateX(-100%) scale(.7); }
+	30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+@-webkit-keyframes flowinfromright {
+    0% { -webkit-transform: translateX(100%) scale(.7); }
+	30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromright {
+    0% { -moz-transform: translateX(100%) scale(.7); }
+	30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromright {
+    0% { transform: translateX(100%) scale(.7); }
+	30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+.ui-field-contain,
+.ui-mobile fieldset.ui-field-contain {
+	display: block;
+	position: relative;
+	overflow: visible;
+	clear: both;
+	padding: .8em 0;
+}
+.ui-field-contain > label ~ [class*="ui-"],
+.ui-field-contain .ui-controlgroup-controls {
+	margin: 0;
+}
+.ui-field-contain:last-child {
+	border-bottom-width: 0;
+}
+@media (min-width: 28em) {
+	.ui-field-contain,
+	.ui-mobile fieldset.ui-field-contain {
+		padding: 0;
+		margin: 1em 0;
+		border-bottom-width: 0;
+	}
+	.ui-field-contain:before,
+	.ui-field-contain:after {
+		content: "";
+		display: table;
+	}
+	.ui-field-contain:after {
+		clear: both;
+	}
+	.ui-field-contain > label,
+	.ui-field-contain .ui-controlgroup-label,
+	.ui-field-contain > .ui-rangeslider > label {
+		float: left;
+		width: 20%;
+		margin: .5em 2% 0 0;
+	}
+	.ui-popup .ui-field-contain > label,
+	.ui-popup .ui-field-contain .ui-controlgroup-label,
+	.ui-popup .ui-field-contain > .ui-rangeslider > label {
+		float: none;
+		width: auto;
+		margin: 0 0 .4em;
+	}
+	.ui-field-contain > label ~ [class*="ui-"],
+	.ui-field-contain .ui-controlgroup-controls {
+		float: left;
+		width: 78%;
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		box-sizing: border-box;
+	}
+	/* ui-hide-label deprecated in 1.4. TODO: Remove in 1.5 */
+	.ui-hide-label > label ~ [class*="ui-"],
+	.ui-hide-label .ui-controlgroup-controls,
+	.ui-popup .ui-field-contain > label ~ [class*="ui-"],
+	.ui-popup .ui-field-contain .ui-controlgroup-controls {
+		float: none;
+		width: 100%;
+	}
+	.ui-field-contain > label ~ .ui-btn-inline {
+		width: auto;
+		margin-right: .625em;
+	}
+	.ui-field-contain > label ~ .ui-btn-inline.ui-btn-icon-notext {
+		width: 1.75em;
+	}
+}
+/* content configurations. */
+.ui-grid-a,
+.ui-grid-b,
+.ui-grid-c,
+.ui-grid-d,
+.ui-grid-solo {
+	overflow: hidden;
+}
+.ui-block-a,
+.ui-block-b,
+.ui-block-c,
+.ui-block-d,
+.ui-block-e {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	float: left;
+	min-height: 1px;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+}
+/* force new row */
+.ui-block-a {
+	clear: left;
+}
+ul.ui-grid-a,
+ul.ui-grid-b,
+ul.ui-grid-c,
+ul.ui-grid-d,
+ul.ui-grid-solo,
+li.ui-block-a,
+li.ui-block-b,
+li.ui-block-c,
+li.ui-block-d,
+li.ui-block-e {
+	margin-left: 0;
+	margin-right: 0;
+	padding: 0;
+	list-style: none;
+}
+/* No margin in grids for 100% width button elements until we can use max-width: fill-available; */
+[class*="ui-block-"] > button.ui-btn {
+	margin-right: 0;
+	margin-left: 0;
+}
+[class*="ui-block-"] > .ui-btn,
+[class*="ui-block-"] > .ui-select,
+[class*="ui-block-"] > .ui-checkbox,
+[class*="ui-block-"] > .ui-radio,
+[class*="ui-block-"] > button.ui-btn-inline,
+[class*="ui-block-"] > button.ui-btn-icon-notext,
+.ui-header [class*="ui-block-"] > button.ui-btn,
+.ui-footer [class*="ui-block-"] > button.ui-btn {
+	margin-right: .3125em;
+	margin-left: .3125em;
+}
+.ui-grid-a > .ui-block-a,
+.ui-grid-a > .ui-block-b {
+	/* width: 49.95%; IE7 */
+	/* margin-right: -.5px; BB5 */
+	width: 50%;
+}
+.ui-grid-b > .ui-block-a,
+.ui-grid-b > .ui-block-b,
+.ui-grid-b > .ui-block-c {
+	/* width: 33.25%; IE7 */
+	/* margin-right: -.5px; BB5 */
+	width: 33.333%;
+}
+.ui-grid-c > .ui-block-a,
+.ui-grid-c > .ui-block-b,
+.ui-grid-c > .ui-block-c,
+.ui-grid-c > .ui-block-d {
+	/* width: 24.925%; IE7 */
+	/* margin-right: -.5px; BB5 */
+	width: 25%;
+}
+.ui-grid-d > .ui-block-a,
+.ui-grid-d > .ui-block-b,
+.ui-grid-d > .ui-block-c,
+.ui-grid-d > .ui-block-d,
+.ui-grid-d > .ui-block-e {
+	/* width: 19.925%; IE7 */
+	width: 20%;
+}
+.ui-grid-solo > .ui-block-a {
+	width: 100%;
+	float: none; 
+}
+/* preset breakpoint to switch to stacked grid styles below 35em (560px) */
+@media (max-width: 35em) {
+	.ui-responsive > .ui-block-a,
+	.ui-responsive > .ui-block-b,
+	.ui-responsive > .ui-block-c,
+	.ui-responsive > .ui-block-d,
+	.ui-responsive > .ui-block-e {
+		width: 100%; 
+		float: none; 
+	}
+}
+/* fixed page header & footer configuration */
+.ui-header-fixed,
+.ui-footer-fixed {
+	left: 0;
+	right: 0;
+	width: 100%;
+	position: fixed;
+	z-index: 1000;
+}
+.ui-header-fixed {
+	top: -1px;
+	padding-top: 1px;
+}
+.ui-header-fixed.ui-fixed-hidden {
+	top: 0;
+	padding-top: 0;
+}
+.ui-header-fixed .ui-btn-left,
+.ui-header-fixed .ui-btn-right {
+	margin-top: 1px;
+}
+.ui-header-fixed.ui-fixed-hidden .ui-btn-left,
+.ui-header-fixed.ui-fixed-hidden .ui-btn-right {
+	margin-top: 0;
+}
+.ui-footer-fixed {
+	bottom: -1px;
+	padding-bottom: 1px;
+}
+.ui-footer-fixed.ui-fixed-hidden {
+	bottom: 0;
+	padding-bottom: 0;
+}
+.ui-header-fullscreen,
+.ui-footer-fullscreen {
+	filter: Alpha(Opacity=90);
+	opacity: .9;
+}
+/* updatePagePadding() will update the padding to actual height of header and footer. */
+.ui-page-header-fixed {
+	padding-top: 2.8125em;
+}
+.ui-page-footer-fixed {
+	padding-bottom: 2.8125em;
+}
+.ui-page-header-fullscreen > .ui-content,
+.ui-page-footer-fullscreen > .ui-content {
+	padding: 0;
+}
+.ui-fixed-hidden {
+	position: absolute;
+}
+/* Tap toggle: hide external fixed footer. See issue #6604 */
+.ui-footer-fixed.ui-fixed-hidden {
+  display: none;
+}
+.ui-page .ui-footer-fixed.ui-fixed-hidden {
+  display: block
+}
+.ui-page-header-fullscreen .ui-fixed-hidden,
+.ui-page-footer-fullscreen .ui-fixed-hidden {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-header-fixed .ui-btn,
+.ui-footer-fixed .ui-btn { 
+	z-index: 10;
+}
+/* workarounds for other widgets */
+.ui-android-2x-fixed .ui-li-has-thumb {
+	-webkit-transform: translate3d(0,0,0);
+}
+.ui-navbar {
+	max-width: 100%;
+}
+.ui-navbar ul:before,
+.ui-navbar ul:after {
+	content: "";
+	display: table;
+}
+.ui-navbar ul:after {
+	clear: both;
+}
+.ui-navbar ul {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+	position: relative;
+	display: block;
+	border: 0;
+	max-width: 100%;
+	overflow: visible;
+}
+.ui-navbar li .ui-btn {
+	font-size: 12.5px;
+	display: block;
+	margin: 0;
+	border-right-width: 0;
+}
+.ui-header .ui-navbar li button.ui-btn,
+.ui-footer .ui-navbar li button.ui-btn {
+	margin: 0;
+	width: 100%;
+}
+.ui-navbar .ui-btn:focus {
+	z-index: 1;
+}
+/* fixes gaps caused by subpixel problem */
+.ui-navbar li:last-child .ui-btn {
+	margin-right: -4px;
+}
+.ui-navbar li:last-child .ui-btn:after {
+	margin-right: 4px;
+}
+.ui-content .ui-navbar li:last-child .ui-btn,
+.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn {
+	border-right-width: 1px;
+	margin-right: 0;
+}
+.ui-content .ui-navbar li:last-child .ui-btn:after,
+.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn:after {
+	margin-right: 0;
+}
+.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn {
+	border-right-width: 1px;
+	margin-right: -1px;
+}
+.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn:after {
+	margin-right: 1px;
+}
+.ui-navbar .ui-grid-duo .ui-btn {
+	border-top-width: 0;
+}
+.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn {
+	border-top-width: 1px;
+}
+.ui-header .ui-navbar .ui-btn,
+.ui-footer .ui-navbar .ui-btn {
+	border-top-width: 0;
+	border-bottom-width: 0;
+}
+.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn {
+	border-top-width: 0;
+}
+.ui-header .ui-title ~ .ui-navbar .ui-btn,
+.ui-footer .ui-title ~ .ui-navbar .ui-btn,
+.ui-header .ui-navbar .ui-grid-duo .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-btn,
+.ui-header .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-footer .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-header .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn,
+.ui-footer .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn {
+	border-top-width: 1px;
+}
+/* Hide the native input element */
+.ui-input-btn input {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	padding: 0;
+	border: 0;
+	outline: 0;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	cursor: pointer;
+	background: #fff;
+	background: rgba(255,255,255,0);
+	filter: Alpha(Opacity=0);
+	opacity: .1;
+	font-size: 1px;
+	text-indent: -9999px;
+	z-index: 2;
+}
+/* Fixes IE/WP filter alpha opacity bugs */
+.ui-input-btn.ui-state-disabled input {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-collapsible {
+	margin: 0 -1em;
+}
+.ui-collapsible-inset,
+.ui-collapsible-set {
+	margin: .5em 0;
+}
+.ui-collapsible-heading {
+	display: block;
+	margin: 0;
+	padding: 0;
+	position: relative;
+}
+.ui-collapsible-heading .ui-btn {
+	text-align: left;
+	margin: 0;
+	border-left-width: 0;
+	border-right-width: 0;
+}
+.ui-collapsible-heading .ui-btn-icon-top,
+.ui-collapsible-heading .ui-btn-icon-bottom {
+	text-align: center;
+}
+.ui-collapsible-inset .ui-collapsible-heading .ui-btn {
+	border-right-width: 1px;
+	border-left-width: 1px;
+}
+.ui-collapsible-collapsed + .ui-collapsible:not(.ui-collapsible-inset) > .ui-collapsible-heading .ui-btn {
+	border-top-width: 0;
+}
+.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn {
+	border-top-width: 1px;
+}
+.ui-collapsible-heading-status {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-collapsible-content {
+	display: block;
+	margin: 0;	
+	padding: .5em 1em;
+}
+.ui-collapsible-themed-content .ui-collapsible-content {
+	border-left-width: 0;
+	border-right-width: 0;
+	border-top-width: 0;
+	border-bottom-width: 1px;
+	border-style: solid;
+}
+.ui-collapsible-inset.ui-collapsible-themed-content .ui-collapsible-content {
+	border-left-width: 1px;
+	border-right-width: 1px;
+}
+.ui-collapsible-inset .ui-collapsible-content {
+	margin: 0;
+}
+.ui-collapsible-content-collapsed {
+	display: none;
+}
+.ui-collapsible-set > .ui-collapsible.ui-corner-all {
+	-webkit-border-radius: 0;
+	border-radius: 0;
+}
+.ui-collapsible-heading,
+.ui-collapsible-heading > .ui-btn {
+	-webkit-border-radius: inherit;	
+	border-radius: inherit;	
+}
+.ui-collapsible-set .ui-collapsible.ui-first-child {
+	-webkit-border-top-right-radius: inherit;	
+	border-top-right-radius: inherit;
+	-webkit-border-top-left-radius: inherit;	
+	border-top-left-radius: inherit;		
+}
+.ui-collapsible-content,
+.ui-collapsible-set .ui-collapsible.ui-last-child {
+	-webkit-border-bottom-right-radius: inherit;	
+	border-bottom-right-radius: inherit;
+	-webkit-border-bottom-left-radius: inherit;	
+	border-bottom-left-radius: inherit;		
+}
+.ui-collapsible-themed-content:not(.ui-collapsible-collapsed) > .ui-collapsible-heading {
+	-webkit-border-bottom-right-radius: 0;	
+	border-bottom-right-radius: 0;
+	-webkit-border-bottom-left-radius: 0;	
+	border-bottom-left-radius: 0;		
+}
+.ui-collapsible-set .ui-collapsible {
+	margin: -1px -1em 0;
+}
+.ui-collapsible-set .ui-collapsible-inset {
+	margin: -1px 0 0;
+}
+.ui-collapsible-set .ui-collapsible.ui-first-child {
+	margin-top: 0;
+}
+.ui-controlgroup,
+fieldset.ui-controlgroup {
+	padding: 0;
+	margin: .5em 0;
+}
+.ui-field-contain .ui-controlgroup,
+.ui-field-contain fieldset.ui-controlgroup {
+	margin: 0;
+}
+.ui-mini .ui-controlgroup-label {
+	font-size: 16px;
+}
+.ui-controlgroup.ui-mini .ui-btn-icon-notext,
+.ui-controlgroup .ui-mini.ui-btn-icon-notext {
+	font-size: inherit;
+}
+.ui-controlgroup-controls .ui-btn,
+.ui-controlgroup-controls .ui-checkbox,
+.ui-controlgroup-controls .ui-radio,
+.ui-controlgroup-controls .ui-select {
+	margin: 0;
+}
+.ui-controlgroup-controls .ui-btn:focus,
+.ui-controlgroup-controls .ui-btn.ui-focus {
+	z-index: 1;
+}
+.ui-controlgroup-controls li {
+	list-style: none;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls {
+	display: inline-block;
+	vertical-align: middle;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls:before,
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after {
+	content: "";
+	display: table;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after {
+	clear: both;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls > .ui-btn,
+.ui-controlgroup-horizontal .ui-controlgroup-controls li > .ui-btn,
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-checkbox,
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-radio,
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-select {
+	float: left;
+	clear: none;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn,
+.ui-controlgroup-controls .ui-btn-icon-notext {
+	width: auto;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn-icon-notext,
+.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn-icon-notext {
+	width: 1.5em;
+}
+ .ui-controlgroup-controls .ui-btn-icon-notext {
+	height: auto;
+	padding: .7em 1em;
+}
+.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn {
+	border-bottom-width: 0;
+}
+.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn.ui-last-child {
+	border-bottom-width: 1px;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn {
+	border-right-width: 0;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn.ui-last-child {
+	border-right-width: 1px;
+}
+.ui-controlgroup-controls .ui-btn-corner-all,
+.ui-controlgroup-controls .ui-btn.ui-corner-all {
+	-webkit-border-radius: 0;
+	border-radius: 0;
+}
+.ui-controlgroup-controls,
+.ui-controlgroup-controls .ui-radio,
+.ui-controlgroup-controls .ui-checkbox,
+.ui-controlgroup-controls .ui-select,
+.ui-controlgroup-controls li {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-first-child {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-last-child {
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-first-child {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-last-child {
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+.ui-controlgroup-controls a.ui-shadow:not(:focus),
+.ui-controlgroup-controls button.ui-shadow:not(:focus),
+.ui-controlgroup-controls div.ui-shadow:not(.ui-focus) {
+	-moz-box-shadow: none;
+	-webkit-box-shadow: none;
+	box-shadow: none;
+}
+/* Fixes legend not wrapping on IE10 */
+.ui-controlgroup-label legend {
+	max-width: 100%;
+}
+.ui-controlgroup-controls > label {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-dialog {
+	 background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */
+}
+.ui-dialog-contain {
+	width: 92.5%;
+	max-width: 500px;
+	margin: 10% auto 1em auto;
+	padding: 0;
+	position: relative;
+	top: -1em;
+}
+.ui-dialog-contain > .ui-header, 
+.ui-dialog-contain > .ui-content, 
+.ui-dialog-contain > .ui-footer { 
+	display: block;
+	position: relative; 
+	width: auto;
+	margin: 0;
+}
+.ui-dialog-contain > .ui-header {
+	overflow: hidden;
+	z-index: 10; 
+	padding: 0;
+	border-top-width: 0;
+}
+.ui-dialog-contain > .ui-footer {
+	z-index: 10; 
+	padding: 0 1em; 
+	border-bottom-width: 0;
+}
+.ui-popup-open .ui-header-fixed,
+.ui-popup-open .ui-footer-fixed {
+	position: absolute !important; /* See issues #4816, #4844 and #4874 and popup.js */
+}
+.ui-popup-screen {
+	background-image: url("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="); /* Necessary to set some form of background to ensure element is clickable in IE6/7. While legacy IE won't understand the data-URI'd image, it ensures no additional requests occur in all other browsers with little overhead. */
+	top: 0;
+	left: 0;
+	right: 0;
+	bottom: 1px;
+	position: absolute;
+	filter: Alpha(Opacity=0);
+	opacity: 0;
+	z-index: 1099;
+}
+.ui-popup-screen.in {
+	opacity: 0.5;
+	filter: Alpha(Opacity=50);
+}
+.ui-popup-screen.out {
+	opacity: 0;
+	filter: Alpha(Opacity=0);
+}
+.ui-popup-container {
+	z-index: 1100;
+	display: inline-block;
+	position: absolute;
+	padding: 0;
+	outline: 0;
+}
+.ui-popup {
+	position: relative;
+}
+.ui-popup.ui-body-inherit {
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-popup-hidden {
+	left: 0;
+	top: 0;
+	position: absolute !important;
+	visibility: hidden;
+}
+.ui-popup-truncate {
+	height: 1px;
+	width: 1px;
+	margin: -1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-popup.ui-content,
+.ui-popup .ui-content {
+	overflow: visible;
+}
+.ui-popup > .ui-header {
+	border-top-width: 0;
+}
+.ui-popup > .ui-footer {
+	border-bottom-width: 0;
+}
+.ui-popup > p,
+.ui-popup > h1,
+.ui-popup > h2,
+.ui-popup > h3,
+.ui-popup > h4,
+.ui-popup > h5,
+.ui-popup > h6 {
+	margin: .5em .4375em;
+}
+.ui-popup > span {
+	display: block;
+	margin: .5em .4375em;
+}
+.ui-popup-container .ui-content > p,
+.ui-popup-container .ui-content > h1,
+.ui-popup-container .ui-content > h2,
+.ui-popup-container .ui-content > h3,
+.ui-popup-container .ui-content > h4,
+.ui-popup-container .ui-content > h5,
+.ui-popup-container .ui-content > h6 {
+	margin: .5em 0;
+}
+.ui-popup-container .ui-content > span {
+	margin: 0;
+}
+.ui-popup-container .ui-content > p:first-child,
+.ui-popup-container .ui-content > h1:first-child,
+.ui-popup-container .ui-content > h2:first-child,
+.ui-popup-container .ui-content > h3:first-child,
+.ui-popup-container .ui-content > h4:first-child,
+.ui-popup-container .ui-content > h5:first-child,
+.ui-popup-container .ui-content > h6:first-child {
+	margin-top: 0;
+}
+.ui-popup-container .ui-content > p:last-child,
+.ui-popup-container .ui-content > h1:last-child,
+.ui-popup-container .ui-content > h2:last-child,
+.ui-popup-container .ui-content > h3:last-child,
+.ui-popup-container .ui-content > h4:last-child,
+.ui-popup-container .ui-content > h5:last-child,
+.ui-popup-container .ui-content > h6:last-child {
+	margin-bottom: 0;
+}
+.ui-popup > img {
+	max-width: 100%;
+	max-height: 100%;
+	vertical-align: middle;
+}
+.ui-popup:not(.ui-content) > img:only-child,
+.ui-popup:not(.ui-content) > .ui-btn-left:first-child + img:last-child,
+.ui-popup:not(.ui-content) > .ui-btn-right:first-child + img:last-child {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+.ui-popup iframe {
+	vertical-align: middle;
+}
+.ui-popup > .ui-btn-left,
+.ui-popup > .ui-btn-right {
+	position: absolute; 
+	top: -11px;
+	margin: 0;
+	z-index: 1101;
+}
+.ui-popup > .ui-btn-left {
+	left: -11px;
+}
+.ui-popup > .ui-btn-right {
+	right: -11px;
+}
+/* Dimensions related to the popup arrow
+-----------------------------------------------------------------------------------------------------------*/
+/* desired triangle height: 10px */
+/**
+ * guide for the arrow - its width, height, and offset are theme-dependent and
+ * should be expessed as left, right, top, bottom, so that the element bearing
+ * such a class becomes stretched inside its parent position: relative element.
+ * The left/top/right/bottom specified below should reflect the corresponding
+ * border radii and so it leaves room for the shadow:
+ *     ..--------------------..
+ *   ."        ^ top           ".
+ *  /          v                 \
+ * |     +------------------+     |
+ * |     |                  |     |
+ * | left|                  |right|
+ * |<--->|                  |<--->|
+ * |     +------------------+     |
+ *  \          ^                 /
+ *   `.        v bottom        .'
+ *     ""--------------------""
+ * The idea is that the top/left of the arrow container box does not move to a
+ * coordinate smaller than the top/left of the guide and the right/bottom of
+ * the arrow container box does not move to a coordinate larger than the
+ * bottom/right of the guide. This will help us avoid the following situation:
+ *        ..--------------------..
+ *      ."        ^ top           ".
+ *   /|/          v                 \
+ *  / |     +------------------+     |
+ *  \ |     |                  |     |
+ *   \| left|                  |right|
+ *    |<--->|                  |<--->|
+ *    |     +------------------+     |
+ *     \          ^                 /
+ *      `.        v bottom        .'
+ *        ""--------------------""
+ * The arrow should not receive a top/left coordinate such that it is too close
+ * to one of the corners, because then at first the shadow of the arrow and,
+ * given a coordinate even closer to the corner, even the body of the arrow will
+ * "stick out" of the corner of the popup. The guide provides a hint to the
+ * arrow positioning code as to which range of values is acceptable for the
+ * arrow container's top/left coordinate.
+ **/
+.ui-popup-arrow-container {
+	width: 20px;
+	height: 20px;
+}
+/* aside from the "infinities" (-1000,2000), triangle height is used */
+.ui-popup-arrow-container.ui-popup-arrow-l {
+	left: -10px;
+	clip: rect(-1000px,10px,2000px,-1000px);
+}
+.ui-popup-arrow-container.ui-popup-arrow-t {
+	top: -10px;
+	clip: rect(-1000px,2000px,10px,-1000px);
+}
+.ui-popup-arrow-container.ui-popup-arrow-r {
+	right: -10px;
+	clip: rect(-1000px,2000px,2000px,10px);
+}
+.ui-popup-arrow-container.ui-popup-arrow-b {
+	bottom: -10px;
+	clip: rect(10px,2000px,1000px,-1000px);
+}
+/**
+ * For each side, the arrow is twice the desired size and its corner is aligned
+ * with the edge of the container:
+ *                                           
+ *           /\         /\                +----+       /\
+ *          /  \       /  \               | /\ |top   /  \
+ *      +----+  \     /  +----+       +-->|/  \|     /    \
+ *  left| /  |   \   /   |  \ |right  |   |    |    /      \
+ *      |/   |    \ /    |   \|       |  /|    |\  /        \
+ *      |\   |    / \    |   /|       | / +----+ \ \ +----+ /
+ *      | \  |   /   \   |  / |       | \        /  \|    |/
+ *      +----+  /     \  +----+       |  \      /    |    |
+ *       ^  \  /       \  /  ^        |   \    /  +->|\  /|
+ *       |   \/         \/   |        |    \  /   |  | \/ |bottom
+ *       |                   |        |     \/    |  +----+
+ *       +-------------------+--------+-----------+
+ *                           |
+ *                    arrow container
+ *                     (clips arrow)
+ **/
+.ui-popup-arrow-container .ui-popup-arrow {
+	/* (4*desired triangle height)/sqrt(2) - does not account for border - centred within the outer rectangle */
+	width: 28.284271247px;
+	height: 28.284271247px;
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-popup-arrow-container.ui-popup-arrow-t .ui-popup-arrow {
+	left: -4.142135623px;
+	top: 5.857864376px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-b .ui-popup-arrow {
+	left: -4.142135623px;
+	top: -14.142135623px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-l .ui-popup-arrow {
+	left: 5.857864376px;
+	top: -4.142135623px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-r .ui-popup-arrow {
+	left: -14.142135623px;
+	top: -4.142135623px;
+}
+/* Fix rotation center for oldIE - see http://www.useragentman.com/IETransformsTranslator/ */
+.ui-popup-arrow-container.ui-popup-arrow-t.ie .ui-popup-arrow {
+    margin-left: -5.857864376269049px;
+    margin-top: -7.0710678118654755px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-b.ie .ui-popup-arrow {
+    margin-left: -5.857864376269049px;
+    margin-top: -4.142135623730951px;
+}
+ 
+.ui-popup-arrow-container.ui-popup-arrow-l.ie .ui-popup-arrow {
+    margin-left: -7.0710678118654755px;
+    margin-top: -5.857864376269049px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-r.ie .ui-popup-arrow {
+    margin-left: -4.142135623730951px;
+    margin-top: -5.857864376269049px;
+}
+/* structure */
+.ui-popup > .ui-popup-arrow-guide {
+	position: absolute;
+	left: 0;
+	right: 0;
+	top: 0;
+	bottom: 0;
+	visibility: hidden;
+}
+.ui-popup-arrow-container {
+	position: absolute;
+}
+.ui-popup-arrow {
+	-webkit-transform: rotate(45deg);
+	-moz-transform: rotate(45deg);
+	-ms-transform: rotate(45deg);
+	transform: rotate(45deg);
+	position: absolute;
+	overflow: hidden;
+	box-sizing: border-box;
+}
+.ui-popup-arrow-container.ie .ui-popup-arrow {
+	-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.7071067811865474, M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865474, SizingMethod='auto expand')";
+	filter: progid:DXImageTransform.Microsoft.Matrix(
+	      	M11=0.7071067811865474,
+        	M12=-0.7071067811865477,
+        	M21=0.7071067811865477,
+        	M22=0.7071067811865474,
+        	SizingMethod='auto expand');
+}
+.ui-checkbox,
+.ui-radio {
+	margin: .5em 0;
+	position: relative;
+}
+.ui-checkbox .ui-btn,
+.ui-radio .ui-btn {
+	margin: 0;
+	text-align: left;
+	white-space: normal; /* Nowrap + ellipsis doesn't work on label. Issue #1419. */
+	z-index: 2;
+}
+.ui-controlgroup .ui-checkbox .ui-btn.ui-focus,
+.ui-controlgroup .ui-radio .ui-btn.ui-focus {
+	z-index: 3;
+}
+.ui-checkbox .ui-btn-icon-top,
+.ui-radio .ui-btn-icon-top,
+.ui-checkbox .ui-btn-icon-bottom,
+.ui-radio .ui-btn-icon-bottom {
+	text-align: center;
+}
+.ui-controlgroup-horizontal .ui-checkbox .ui-btn:after,
+.ui-controlgroup-horizontal .ui-radio .ui-btn:after {
+	content: none;
+	display: none;
+}
+/* Native input positioning */
+.ui-checkbox input,
+.ui-radio input {
+	position: absolute;
+	left: .466em;
+	top: 50%;
+	width: 22px;
+	height: 22px;
+	margin: -11px 0 0 0;
+	outline: 0 !important;
+	z-index: 1;
+}
+.ui-controlgroup-horizontal .ui-checkbox input,
+.ui-controlgroup-horizontal .ui-radio input {
+	left: 50%;
+	margin-left: -9px;
+}
+.ui-checkbox input:disabled,
+.ui-radio input:disabled {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-select {
+	margin-top: .5em;
+	margin-bottom: .5em; /* no shorthand for margin because it would override margin-right for inline selects */
+	position: relative;
+}
+.ui-select > select {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-select .ui-btn {
+	margin: 0;
+	opacity: 1; /* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including "inherit") without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */
+}
+.ui-select .ui-btn select {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 100%;
+	min-height: 1.5em;
+	min-height: 100%;
+	height: 3em;
+	max-height: 100%;
+	outline: 0;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	cursor: pointer;
+	filter: Alpha(Opacity=0);
+	opacity: 0;
+	z-index: 2;
+}
+@-moz-document url-prefix() {
+	.ui-select .ui-btn select {
+		opacity: 0.0001;
+	}
+}
+/* Display none because of issues with IE/WP's filter alpha opacity */
+.ui-select .ui-state-disabled select {
+	display: none;
+}
+/* Because we add all classes of the select and option elements to the span... */ 
+.ui-select span.ui-state-disabled {
+	filter: Alpha(Opacity=100);
+	opacity: 1;
+}
+.ui-select .ui-btn.ui-select-nativeonly {
+	border-radius: 0;
+	border: 0;
+}
+.ui-select .ui-btn.ui-select-nativeonly select {
+	opacity: 1;
+	text-indent: 0;
+	display: block;
+}
+/* ui-li-count is styled in the listview CSS. We set padding and offset here because select supports icon position while listview doesn't. */
+.ui-select .ui-li-has-count.ui-btn {
+	padding-right: 2.8125em;
+}
+.ui-select .ui-li-has-count.ui-btn-icon-right {
+	padding-right: 4.6875em;
+}
+.ui-select .ui-btn-icon-right .ui-li-count {
+	right: 3.2em;
+}
+/* We set the rules for the span as well to fix an issue on Chrome with text-overflow ellipsis for the button in combination with text-align center. */
+.ui-select .ui-btn > span:not(.ui-li-count) {
+	display: block;
+	text-overflow: ellipsis;
+	overflow: hidden !important;
+	white-space: nowrap;
+}
+.ui-selectmenu.ui-popup {
+	min-width: 11em;
+}
+.ui-selectmenu .ui-dialog-contain {
+	overflow: hidden;
+}
+.ui-selectmenu .ui-header {
+	margin: 0;
+	padding: 0;
+	border-width: 0;
+}
+.ui-selectmenu.ui-dialog .ui-header {
+	z-index: 1;
+	position: relative;
+}
+.ui-selectmenu.ui-popup .ui-header {
+	-webkit-border-bottom-right-radius: 0;
+	border-bottom-right-radius: 0;
+	-webkit-border-bottom-left-radius: 0;
+	border-bottom-left-radius: 0;
+}
+/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button.  this shim's content in there */
+.ui-selectmenu.ui-popup .ui-header h1:after {
+	content: '.';
+	visibility: hidden;
+}
+.ui-selectmenu .ui-header .ui-title {
+	margin: 0 2.875em;
+}
+.ui-selectmenu.ui-dialog .ui-content {
+	overflow: visible;
+	z-index: 1;
+}
+.ui-selectmenu .ui-selectmenu-list {
+	margin: 0;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+}
+.ui-header:not(.ui-screen-hidden) + .ui-selectmenu-list {
+	-webkit-border-top-right-radius: 0;
+	border-top-right-radius: 0;
+	-webkit-border-top-left-radius: 0;
+	border-top-left-radius: 0;
+}
+.ui-header.ui-screen-hidden + .ui-selectmenu-list li.ui-first-child .ui-btn {
+	border-top-width: 0;
+}
+.ui-selectmenu .ui-selectmenu-list li.ui-last-child .ui-btn {
+	border-bottom-width: 0;
+}
+.ui-selectmenu .ui-btn.ui-li-divider {
+	cursor: default;
+}
+.ui-selectmenu .ui-selectmenu-placeholder {
+	display: none;
+}
+.ui-listview,
+.ui-listview > li {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+}
+.ui-content .ui-listview,
+.ui-panel-inner > .ui-listview {
+	margin: -1em;
+}
+.ui-content .ui-listview-inset,
+.ui-panel-inner > .ui-listview-inset {
+	margin: 1em 0;
+}
+.ui-collapsible-content > .ui-listview {
+	margin: -.5em -1em;
+}
+.ui-collapsible-content > .ui-listview-inset {
+	margin: .5em 0;
+}
+.ui-listview > li {
+	display: block;
+	position: relative;
+	overflow: visible;
+}
+.ui-listview > .ui-li-static,
+.ui-listview > .ui-li-divider,
+.ui-listview > li > a.ui-btn {
+	margin: 0;
+	display: block;
+	position: relative;
+	text-align: left;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+}
+.ui-listview > li > .ui-btn:focus {
+	z-index: 1;
+}
+.ui-listview > .ui-li-static,
+.ui-listview > .ui-li-divider,
+.ui-listview > li > a.ui-btn {
+	border-width: 1px 0 0 0;
+	border-style: solid;
+}
+.ui-listview-inset > .ui-li-static,
+.ui-listview-inset > .ui-li-divider,
+.ui-listview-inset > li > a.ui-btn {
+	border-right-width: 1px;
+	border-left-width: 1px;
+}
+.ui-listview > .ui-li-static.ui-last-child,
+.ui-listview > .ui-li-divider.ui-last-child,
+.ui-listview > li.ui-last-child > a.ui-btn {
+	border-bottom-width: 1px;
+}
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > li.ui-first-child,
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > li.ui-first-child > a.ui-btn {
+	border-top-width: 0;
+}
+.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > li.ui-last-child,
+.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > li.ui-last-child > a.ui-btn {
+	border-bottom-width: 0;
+}
+.ui-listview > li.ui-first-child,
+.ui-listview > li.ui-first-child > a.ui-btn {
+	-webkit-border-top-right-radius: inherit;	
+	border-top-right-radius: inherit;
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+}
+.ui-listview > li.ui-last-child,
+.ui-listview > li.ui-last-child > a.ui-btn {
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+}
+.ui-listview > li.ui-li-has-alt > a.ui-btn {
+	-webkit-border-top-right-radius: 0;
+	border-top-right-radius: 0;
+	-webkit-border-bottom-right-radius: 0;
+	border-bottom-right-radius: 0;
+}
+.ui-listview > li.ui-first-child > a.ui-btn + a.ui-btn {
+	-webkit-border-top-left-radius: 0;	
+	border-top-left-radius: 0;
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+}
+.ui-listview > li.ui-last-child > a.ui-btn + a.ui-btn {
+	-webkit-border-bottom-left-radius: 0;
+	border-bottom-left-radius: 0;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+.ui-listview > li.ui-first-child img:first-child:not(.ui-li-icon) {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;	
+}
+.ui-listview > li.ui-last-child img:first-child:not(.ui-li-icon) {
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;	
+}
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+}
+.ui-listview > .ui-li-static {
+	padding: .7em 1em;
+}
+.ui-listview > .ui-li-divider {
+	padding: .5em 1.143em;
+	font-size: 14px;
+	font-weight: bold;
+	cursor: default;
+	outline: 0; /* Dividers in custom selectmenus have tabindex */
+}
+.ui-listview > .ui-li-has-count > .ui-btn,
+.ui-listview > .ui-li-static.ui-li-has-count,
+.ui-listview > .ui-li-divider.ui-li-has-count {
+	padding-right: 2.8125em;
+}
+.ui-listview > .ui-li-has-count > .ui-btn-icon-right {
+	padding-right: 4.6875em;
+}
+.ui-listview > .ui-li-has-thumb > .ui-btn,
+.ui-listview > .ui-li-static.ui-li-has-thumb {
+	min-height: 3.625em;
+	padding-left: 6.25em;
+}
+/* ui-li-has-icon deprecated in 1.4. TODO: remove in 1.5 */
+.ui-listview > .ui-li-has-icon > .ui-btn,
+.ui-listview > .ui-li-static.ui-li-has-icon {
+	min-height: 1.25em;
+	padding-left: 2.5em;
+}
+/* Used by both listview and custom multiple select button */
+.ui-li-count {
+	position: absolute;
+	font-size: 12.5px;
+	font-weight: bold;
+	text-align: center;
+	border-width: 1px;
+	border-style: solid;
+	padding: 0 .48em;
+	line-height: 1.6em;
+	min-height: 1.6em;
+	min-width: .64em;
+	right: .8em;
+	top: 50%;
+	margin-top: -.88em;
+}
+.ui-listview .ui-btn-icon-right .ui-li-count {
+	right: 3.2em;
+}
+.ui-listview .ui-li-has-thumb > img:first-child,
+.ui-listview .ui-li-has-thumb > .ui-btn > img:first-child,
+.ui-listview .ui-li-has-thumb .ui-li-thumb {
+	position: absolute;
+	left: 0;
+	top: 0;
+	max-height: 5em;
+	max-width: 5em;
+}
+/* ui-li-has-icon deprecated in 1.4. TODO: remove in 1.5 */
+.ui-listview > .ui-li-has-icon > img:first-child,
+.ui-listview > .ui-li-has-icon > .ui-btn > img:first-child {
+	position: absolute;
+	left: .625em;
+	top: .9em;
+	max-height: 1em;
+	max-width: 1em;
+}
+.ui-listview > li h1,
+.ui-listview > li h2,
+.ui-listview > li h3,
+.ui-listview > li h4,
+.ui-listview > li h5,
+.ui-listview > li h6 {
+	font-size: 1em;
+	font-weight: bold;
+	display: block;
+	margin: .45em 0;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+}
+.ui-listview > li p {
+	font-size: .75em;
+	font-weight: normal;
+	display: block;
+	margin: .6em 0;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+}
+.ui-listview .ui-li-aside {
+	position: absolute;
+	top: 1em;
+	right: 3.333em;
+	margin: 0;
+	text-align: right;
+}
+.ui-listview > li.ui-li-has-alt > .ui-btn {
+	margin-right: 2.5em;
+	border-right-width: 0;
+}
+.ui-listview > li.ui-li-has-alt > .ui-btn + .ui-btn {
+	position: absolute;
+	width: 2.5em;
+	height: 100%;
+	min-height: auto;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	border-left-width: 1px;
+	top: 0;
+	right: 0;
+	margin: 0;
+	padding: 0;
+	z-index: 2;
+}
+.ui-listview-inset > li.ui-li-has-alt > .ui-btn + .ui-btn {
+	border-right-width: 1px;
+}
+.ui-listview > li.ui-li-has-alt > .ui-btn + .ui-btn:focus {
+	z-index: 3;
+}
+ol.ui-listview,
+ol.ui-listview > .ui-li-divider {
+	counter-reset: listnumbering;
+}
+ol.ui-listview > li > .ui-btn,
+ol.ui-listview > li.ui-li-static {
+	vertical-align: middle;
+}
+ol.ui-listview > li > .ui-btn:first-child:before,
+ol.ui-listview > li.ui-li-static:before,
+ol.ui-listview > li.ui-field-contain > label:before,
+ol.ui-listview > li.ui-field-contain > .ui-controlgroup-label:before {
+	display: inline-block;
+	font-size: .9em;
+	font-weight: normal;
+	padding-right: .3em;
+	min-width: 1.4em;
+	line-height: 1.5;
+	vertical-align: middle;
+	counter-increment: listnumbering;
+	content: counter(listnumbering) ".";
+}
+ol.ui-listview > li.ui-field-contain:before {
+	content: none;
+	display: none;
+}
+ol.ui-listview > li h1:first-child,
+ol.ui-listview > li h2:first-child,
+ol.ui-listview > li h3:first-child,
+ol.ui-listview > li h4:first-child,
+ol.ui-listview > li h5:first-child,
+ol.ui-listview > li h6:first-child,
+ol.ui-listview > li p:first-child,
+ol.ui-listview > li img:first-child + * {
+	display: inline-block;
+	vertical-align: middle;
+}
+ol.ui-listview > li h1:first-child ~ *,
+ol.ui-listview > li h2:first-child ~ *,
+ol.ui-listview > li h3:first-child ~ *,
+ol.ui-listview > li h4:first-child ~ *,
+ol.ui-listview > li h5:first-child ~ *,
+ol.ui-listview > li h6:first-child ~ *,
+ol.ui-listview > li p:first-child ~ *,
+ol.ui-listview > li img:first-child + * ~ * {
+	margin-top: 0;
+	text-indent: 2.04em; /* (1.4em + .3em) * .9em / .75em */
+}
+html .ui-filterable + .ui-listview,
+html .ui-filterable.ui-listview {
+	margin-top: .5em;
+}
+.ui-collapsible-content > form.ui-filterable {
+	margin-top: -.5em;
+}
+.ui-collapsible-content > .ui-input-search.ui-filterable {
+	margin-top: 0;
+}
+.ui-collapsible-content > .ui-filterable + .ui-listview:not(.ui-listview-inset) > li.ui-first-child,
+.ui-collapsible-content > .ui-filterable + .ui-listview:not(.ui-listview-inset) > li.ui-first-child > a.ui-btn,
+.ui-collapsible-content > .ui-filterable.ui-listview:not(.ui-listview-inset) > li.ui-first-child,
+.ui-collapsible-content > .ui-filterable.ui-listview:not(.ui-listview-inset) > li.ui-first-child > a.ui-btn {
+	border-top-width: 1px;
+}
+div.ui-slider {
+	height: 30px;
+	margin: .5em 0;
+	padding: 0;
+	-ms-touch-action: pan-y pinch-zoom double-tap-zoom;
+}
+div.ui-slider:before,
+div.ui-slider:after {
+	content: "";
+	display: table;
+}
+div.ui-slider:after {
+	clear: both;
+}
+input.ui-slider-input {
+	display: block;
+	float: left;
+	font-size: 14px;
+	font-weight: bold;
+	margin: 0;
+	padding: 4px;
+	width: 40px;
+	height: 20px;
+	line-height: 20px;
+	border-width: 1px;
+	border-style: solid;
+	outline: 0;
+	text-align: center;
+	vertical-align: text-bottom;
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	appearance: none;
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+}
+.ui-slider-input::-webkit-outer-spin-button,
+.ui-slider-input::-webkit-inner-spin-button {
+	-webkit-appearance: none;
+	margin: 0;
+}
+.ui-slider-track {
+	position: relative;
+	overflow: visible;
+	border-width: 1px;
+	border-style: solid;
+	height: 15px;
+	margin: 0 15px 0 68px;
+	top: 6px;
+}
+.ui-slider-track.ui-mini {
+	height: 12px;
+	top: 8px;
+}
+.ui-slider-track .ui-slider-bg {
+	height: 100%;
+}
+/* High level of specificity to override button margins in grids */
+.ui-slider-track .ui-btn.ui-slider-handle {
+	position: absolute;
+	z-index: 1;
+	top: 50%;
+	width: 28px;
+	height: 28px;
+	margin: -15px 0 0 -15px;
+	outline: 0;
+	padding: 0;
+}
+.ui-slider-track.ui-mini .ui-slider-handle {
+	height: 14px;
+	width: 14px;
+	margin: -8px 0 0 -8px;
+}
+select.ui-slider-switch {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+div.ui-slider-switch {
+	display: inline-block;
+	height: 32px;
+	width: 5.8em;
+	top: 0;
+}
+/* reset the clearfix */
+div.ui-slider-switch:before,
+div.ui-slider-switch:after {
+	display: none;
+	clear: none;
+}
+div.ui-slider-switch.ui-mini {
+	height: 29px;
+	top: 0;
+}
+.ui-slider-inneroffset {
+	margin: 0 16px;
+	position: relative;
+	z-index: 1;
+}
+.ui-slider-switch.ui-mini .ui-slider-inneroffset {
+	margin: 0 15px 0 14px;
+}
+.ui-slider-switch .ui-btn.ui-slider-handle {
+	margin: 1px 0 0 -15px;
+}
+.ui-slider-switch.ui-mini .ui-slider-handle {
+	width: 25px;
+	height: 25px;
+	margin: 1px 0 0 -13px;
+	padding: 0;
+}
+.ui-slider-handle-snapping {
+	-webkit-transition: left 70ms linear;
+	-moz-transition: left 70ms linear;
+	transition: left 70ms linear;
+}
+.ui-slider-switch .ui-slider-label {
+	position: absolute;
+	text-align: center;
+	width: 100%;
+	overflow: hidden;
+	font-size: 16px;
+	top: 0;
+	line-height: 2;
+	min-height: 100%;
+	white-space: nowrap;
+	cursor: pointer;
+}
+.ui-slider-switch.ui-mini .ui-slider-label {
+	font-size: 14px;
+}
+.ui-slider-switch .ui-slider-label-a {
+	z-index: 1;
+	left: 0;
+	text-indent: -1.5em;
+}
+.ui-slider-switch .ui-slider-label-b {
+	z-index: 0;
+	right: 0;
+	text-indent: 1.5em;
+}
+/* The corner radii for ui-slider-switch/track can be specified in theme CSS. The bg and handle inherits. */
+.ui-slider-track .ui-slider-bg,
+.ui-slider-switch .ui-slider-label,
+.ui-slider-switch .ui-slider-inneroffset,
+.ui-slider-handle {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+.ui-field-contain div.ui-slider-switch {
+	margin: 0;
+}
+/* ui-hide-label deprecated in 1.4. TODO: Remove in 1.5 */
+.ui-field-contain div.ui-slider-switch,
+.ui-field-contain.ui-hide-label div.ui-slider-switch,
+html .ui-popup .ui-field-contain div.ui-slider-switch {
+	display: inline-block;
+	width: 5.8em;
+}
+/* slider tooltip
+-----------------------------------------------------------------------------------------------------------*/
+.ui-slider-popup {
+	width: 64px;
+	height: 64px;
+	font-size: 36px;
+	padding-top: 14px;
+	opacity: 0.8;
+}
+.ui-slider-popup {
+	position: absolute !important;
+	text-align: center;
+	z-index: 100;
+}
+.ui-slider-track .ui-btn.ui-slider-handle {
+	font-size: .9em;
+	line-height: 30px;
+}
+.ui-rangeslider {
+	margin: .5em 0;
+}
+.ui-rangeslider:before,
+.ui-rangeslider:after {
+	content: "";
+	display: table;
+}
+.ui-rangeslider:after {
+	clear: both;
+}
+.ui-rangeslider .ui-slider-input.ui-rangeslider-last {
+	float: right;
+}
+.ui-rangeslider .ui-rangeslider-sliders {
+	position: relative;
+	overflow: visible;
+	height: 30px;
+	margin: 0 68px;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track {
+	position: absolute;
+	top: 6px;
+	right: 0;
+	left: 0;
+	margin: 0;
+}
+.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track {
+	top: 8px;
+}
+.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg {
+	display: none;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+	background-color: transparent;
+	background: none;
+	border-width: 0;
+	height: 0;
+}
+/* this makes ie6 and ie7 set height to 0 to fix z-index problem */
+html >/**/body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+	height: 15px;
+	border-width: 1px;
+}
+html >/**/body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child {
+	height: 12px;
+}
+/* Hide the second label (the first is moved outside the div) */
+div.ui-rangeslider label {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-field-contain .ui-rangeslider input.ui-slider-input,
+.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,
+.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,
+.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+	margin-top: 0;
+	margin-bottom: 0;
+}
+.ui-input-text,
+.ui-input-search {
+	margin: .5em 0;
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-mini {
+	margin: .446em;
+}
+.ui-input-text input,
+.ui-input-search input,
+textarea.ui-input-text {
+	padding: .4em;
+	line-height: 1.4em;
+	display: block;
+	width: 100%;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	outline: 0;
+}
+.ui-input-text input,
+.ui-input-search input {
+	margin: 0;
+	min-height: 2.2em;
+	text-align: left; /* Opera aligns type="date" right by default */
+	border: 0;
+	background: transparent none;
+	-webkit-appearance: none;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+textarea.ui-input-text {
+	overflow: auto;
+	resize: vertical;
+}
+.ui-mini .ui-input-text input,
+.ui-mini .ui-input-search input,
+.ui-input-text.ui-mini input,
+.ui-input-search.ui-mini input,
+.ui-mini textarea.ui-input-text,
+textarea.ui-mini {
+	font-size: 14px;
+}
+/* Same margin for mini textareas as other mini sized widgets (12.5/14 * 0.5em) */
+.ui-mini textarea.ui-input-text,
+textarea.ui-mini {
+	margin: .446em 0;
+}
+.ui-input-has-clear,
+.ui-input-search {
+	position: relative;
+}
+/* Padding on the div instead of input because of browser spinners etc. */
+.ui-input-has-clear {
+	padding-right: 2.375em;
+}
+.ui-mini.ui-input-has-clear {
+	padding-right: 2.923em;
+}
+.ui-input-has-clear input {
+	padding-right: 0;
+	/* Autofill on Chrome has bg color so we unset corners right as well. */
+	-webkit-border-top-right-radius: 0;
+	border-top-right-radius: 0;
+	-webkit-border-bottom-right-radius: 0;
+	border-bottom-right-radius: 0;
+}
+/* Search icon */
+.ui-input-search input {
+	padding-left: 1.75em;
+}
+.ui-input-search:after {
+	position: absolute;
+	left: .3125em;
+	top: 50%;
+	margin-top: -7px;
+	content: "";
+	background-position: center center;
+	background-repeat: no-repeat;
+	width: 14px;
+	height: 14px;
+	filter: Alpha(Opacity=50);
+	opacity: .5;
+}
+.ui-input-search.ui-input-has-clear .ui-btn.ui-input-clear,
+.ui-input-text.ui-input-has-clear .ui-btn.ui-input-clear {
+	position: absolute;
+	right: 0;
+	top: 50%;
+	margin: -14px .3125em 0;
+	border: 0;
+	background-color: transparent;
+}
+.ui-input-search .ui-input-clear-hidden,
+.ui-input-text .ui-input-clear-hidden {
+	display: none;
+}
+/* Resolves issue #5166: Added to support issue introduced in Firefox 15. We can likely remove this in the future. */
+.ui-input-text input::-moz-placeholder,
+.ui-input-search input::-moz-placeholder,
+textarea.ui-input-text::-moz-placeholder {
+	color: #aaa;
+}
+/* Same for IE10 */
+.ui-input-text input:-ms-input-placeholder,
+.ui-input-search input:-ms-input-placeholder,
+textarea.ui-input-text:-ms-input-placeholder {
+	color: #aaa;
+}
+/* Resolves issue #5131: Width of textinput depends on its type,
+for Android 4.1 */
+.ui-input-text input[type=number]::-webkit-outer-spin-button {
+	margin: 0;
+}
+/* Resolves issue #5756: Textinput in IE10 has a default clear button */
+.ui-input-text input::-ms-clear,
+.ui-input-search input::-ms-clear {
+	display: none;
+}
+.ui-input-text input:focus,
+.ui-input-search input:focus {
+	-webkit-box-shadow: none;
+	-moz-box-shadow: none;
+	box-shadow: none;
+}
+textarea.ui-input-text.ui-textinput-autogrow {
+	overflow: hidden;
+}
+.ui-textinput-autogrow-resize {
+	-webkit-transition: height 0.25s;
+	-o-transition: height 0.25s;
+	-moz-transition: height 0.25s;
+	transition: height 0.25s;
+}
+.ui-flipswitch {
+	display: inline-block;
+	vertical-align: middle;
+	width: 5.875em; /* Override this and padding-left in next rule if you use labels other than "on/off" and need more space */
+	height: 1.875em;
+	border-width: 1px;
+	border-style: solid;
+	margin: .5em 0;
+	overflow: hidden;
+	-webkit-transition-property: padding, width, background-color, color, border-color;
+	-moz-transition-property: padding, width, background-color, color, border-color;
+	-o-transition-property: padding, width, background-color, color, border-color;
+	transition-property: padding, width, background-color, color, border-color;
+	-webkit-transition-duration: 100ms;
+	-moz-transition-duration: 100ms;
+	-o-transition-duration: 100ms;
+	transition-duration: 100ms;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+	cursor: pointer;
+}
+.ui-flipswitch.ui-flipswitch-active {
+	padding-left: 4em;  /* Override this and width in previous rule if you use labels other than "on/off" and need more space */
+	width: 1.875em;
+}
+.ui-flipswitch-input {
+	position: absolute;
+	height: 1px;
+	width: 1px;
+	margin: -1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+	border: 0;
+	outline: 0;
+	filter: Alpha(Opacity=0);
+	opacity: 0;
+}
+.ui-flipswitch .ui-btn.ui-flipswitch-on,
+.ui-flipswitch .ui-flipswitch-off {
+	float: left;
+	height: 1.75em;
+	margin: .0625em;
+	line-height: 1.65em;
+}
+.ui-flipswitch .ui-btn.ui-flipswitch-on {
+	width: 1.75em;
+	padding: 0;
+	text-indent: -2.6em; /* Override this to center text if you use a label other than "on" */
+	text-align: left;
+	border-width: 1px;
+	border-style: solid;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	border-radius: inherit;
+	overflow: visible;
+	color: inherit;
+	text-shadow: inherit;
+}
+.ui-flipswitch .ui-flipswitch-off {
+	padding: 1px;
+	text-indent: 1em; /* Override this to center text if you use a label other than "off" */
+}
+/* Override field container CSS to prevent the flipswitch from becomming full width */
+html .ui-field-contain > label + .ui-flipswitch,
+html .ui-popup .ui-field-contain > label + .ui-flipswitch {
+	display: inline-block;
+	width: 5.875em; /* If you override the width for .ui-flipswitch you should repeat the same value here */
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+}
+.ui-field-contain .ui-flipswitch.ui-flipswitch-active,
+.ui-popup .ui-field-contain .ui-flipswitch.ui-flipswitch-active {
+	width: 1.875em;
+}
+.ui-table {
+	border: 0;
+	border-collapse: collapse;
+	padding: 0;
+	width: 100%;
+}
+.ui-table th,
+.ui-table td {
+	line-height: 1.5em;
+	text-align: left;
+	padding: .4em .5em;
+	vertical-align:top;
+}
+.ui-table th .ui-btn,
+.ui-table td .ui-btn {
+	line-height: normal;
+}
+.ui-table th {
+	font-weight: bold;
+}
+.ui-table caption {
+	text-align: left;
+	margin-bottom: 1.4em;
+	opacity: .5;
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-columntoggle-btn {
+	float: right;
+	margin-bottom: .8em;
+}
+/* Remove top/bottom margins around the fieldcontain on check list */
+.ui-table-columntoggle-popup fieldset {
+	margin:0;
+}
+.ui-table-columntoggle {
+	clear: both;
+}
+/* Hide all prioritized columns by default */
+@media only all {
+	th.ui-table-priority-6,
+	td.ui-table-priority-6,
+	th.ui-table-priority-5,
+	td.ui-table-priority-5,
+	th.ui-table-priority-4,
+	td.ui-table-priority-4,
+	th.ui-table-priority-3,
+	td.ui-table-priority-3,
+	th.ui-table-priority-2,
+	td.ui-table-priority-2,
+	th.ui-table-priority-1,
+	td.ui-table-priority-1 {
+		display: none;
+	}
+}
+/* Preset breakpoints if ".ui-responsive" class added to table */
+/* Show priority 1 at 320px (20em x 16px) */
+@media screen and (min-width: 20em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-1,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-1 {
+		display: table-cell;
+	}
+}
+/* Show priority 2 at 480px (30em x 16px) */
+@media screen and (min-width: 30em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-2,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-2 {
+		display: table-cell;
+	}
+}
+/* Show priority 3 at 640px (40em x 16px) */
+@media screen and (min-width: 40em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-3,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-3 {
+		display: table-cell;
+	}
+}
+/* Show priority 4 at 800px (50em x 16px) */
+@media screen and (min-width: 50em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-4,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-4 {
+		display: table-cell;
+	}
+}
+/* Show priority 5 at 960px (60em x 16px) */
+@media screen and (min-width: 60em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-5,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-5 {
+		display: table-cell;
+	}
+}
+/* Show priority 6 at 1,120px (70em x 16px) */
+@media screen and (min-width: 70em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-6,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-6 {
+		display: table-cell;
+	}
+}
+/* Unchecked manually: Always hide */
+.ui-table-columntoggle th.ui-table-cell-hidden,
+.ui-table-columntoggle td.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden {
+	display: none;
+}
+/* Checked manually: Always show */
+.ui-table-columntoggle th.ui-table-cell-visible,
+.ui-table-columntoggle td.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible {
+	display: table-cell;
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-reflow td .ui-table-cell-label,
+.ui-table-reflow th .ui-table-cell-label { 
+	display: none;
+}
+/* Mobile first styles: Begin with the stacked presentation at narrow widths */ 
+@media only all {
+	/* Hide the table headers */ 
+	.ui-table-reflow thead td, 
+	.ui-table-reflow thead th {
+		display: none;
+	}
+	/* Show the table cells as a block level element */ 
+	.ui-table-reflow td,
+	.ui-table-reflow th { 
+		text-align: left;
+		display: block;
+	}
+	/* Add a fair amount of top margin to visually separate each row when stacked */  
+	.ui-table-reflow tbody th {
+		margin-top: 3em;
+	}
+	/* Make the label elements a percentage width */ 
+	.ui-table-reflow td .ui-table-cell-label,
+	.ui-table-reflow th .ui-table-cell-label { 
+		padding: .4em; 
+		min-width: 30%; 
+		display: inline-block;
+		margin: -.4em 1em -.4em -.4em;
+	}
+	/* For grouped headers, have a different style to visually separate the levels by classing the first label in each col group */ 
+	.ui-table-reflow th .ui-table-cell-label-top,
+	.ui-table-reflow td .ui-table-cell-label-top {
+		display: block;
+		padding: .4em 0;
+		margin: .4em 0;
+		text-transform: uppercase;
+		font-size: .9em;
+		font-weight: normal;
+	}
+}
+/* Breakpoint to show as a standard table at 560px (35em x 16px) or wider */ 
+@media ( min-width: 35em ) {
+	/* Show the table header rows */ 
+	.ui-table-reflow.ui-responsive td,
+	.ui-table-reflow.ui-responsive th,
+	.ui-table-reflow.ui-responsive tbody th,
+	.ui-table-reflow.ui-responsive tbody td,
+	.ui-table-reflow.ui-responsive thead td,
+	.ui-table-reflow.ui-responsive thead th {
+		display: table-cell;
+		margin: 0;
+	}
+	/* Hide the labels in each cell */ 
+	.ui-table-reflow.ui-responsive td .ui-table-cell-label,
+	.ui-table-reflow.ui-responsive th .ui-table-cell-label { 
+		display: none;
+	}
+}
+/* Hack to make IE9 and WP7.5 treat cells like block level elements, scoped to ui-responsive class */ 
+/* Applied in a max-width media query up to the table layout breakpoint so we don't need to negate this*/ 
+@media ( max-width: 35em ) {
+	.ui-table-reflow.ui-responsive td,
+	.ui-table-reflow.ui-responsive th {
+		width: 100%;
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		box-sizing: border-box;
+		float: left;
+		clear: left;
+	}
+}
+/* Panel */
+.ui-panel {
+	width: 17em;
+	min-height: 100%;
+	max-height: none;
+	border-width: 0;
+	position: absolute;
+	top: 0;
+	display: block;
+}
+.ui-panel-closed {
+	width: 0;
+	max-height: 100%;
+	overflow: hidden;
+	visibility: hidden;
+	left: 0;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-panel-fixed {
+	position: fixed;
+	bottom: -1px; /* Fixes gap on Chrome for Android */
+	padding-bottom: 1px;
+}
+.ui-panel-display-reveal {
+	z-index: 1;
+}
+.ui-panel-display-push {
+	z-index: 999;
+}
+.ui-panel-display-overlay {
+	z-index: 1001; /* Fixed toolbars have z-index 1000 */
+}
+.ui-panel-inner {
+	padding: 1em;
+}
+/* Container, page and wrapper */
+.ui-panel-page-container {
+	overflow-x: visible;
+}
+.ui-panel-page-container-themed .ui-page-active {
+	background: none;
+}
+.ui-panel-wrapper {
+	position: relative;
+	min-height: inherit;
+	border: 0;
+	overflow-x: hidden;
+	z-index: 999;
+}
+/* Fixed toolbars */
+.ui-panel-fixed-toolbar {
+	overflow-x: hidden;
+}
+/* Dismiss */
+.ui-panel-dismiss {
+	position: absolute;
+	top: 0;
+	left: 0;
+	right: 0;
+	height: 100%;
+	z-index: 1002;
+	display: none;
+}
+.ui-panel-dismiss-open {
+	display: block;
+}
+/* Animate class is added to panel, wrapper and fixed toolbars */
+.ui-panel-animate {
+	-webkit-transition: -webkit-transform 300ms ease;
+	-webkit-transition-duration: 300ms;
+	-moz-transition: -moz-transform 300ms ease;
+	transition: transform 300ms ease;
+}
+/* Fix for Windows Phone issue #6349: unset the transition for transforms in case of fixed toolbars. */
+@media screen and ( max-device-width: 768px ) {
+	.ui-page-header-fixed .ui-panel-animate.ui-panel-wrapper,
+	.ui-page-footer-fixed .ui-panel-animate.ui-panel-wrapper,
+	.ui-panel-animate.ui-panel-fixed-toolbar {
+		-ms-transition: none;
+	}
+	/* We need a transitionend event ... */
+	.ui-panel-animate.ui-panel-fixed-toolbar {
+		-ms-transition: -ms-transform 1ms;
+		-ms-transform: rotate(0deg);
+	}
+}
+/* Hardware acceleration for smoother transitions on WebKit browsers */
+.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal) {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translate3d(0,0,0);
+}
+/* Panel positioning (for overlay and push) */
+/* Panel left closed */
+.ui-panel-position-left {
+	left: -17em;
+}
+/* Panel left closed animated */
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-push {
+	left: 0;
+	-webkit-transform: translate3d(-17em,0,0);
+	-moz-transform: translate3d(-17em,0,0);
+	transform: translate3d(-17em,0,0);
+}
+/* Panel left open */
+.ui-panel-position-left.ui-panel-display-reveal, /* Unset "panel left closed" for reveal */
+.ui-panel-open.ui-panel-position-left {
+	left: 0;
+}
+/* Panel left open animated */
+.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-push {
+	-webkit-transform: translate3d(0,0,0);
+	transform: translate3d(0,0,0);
+	-moz-transform: none;
+}
+/* Panel right closed */
+.ui-panel-position-right {
+	right: -17em;
+}
+/* Panel right closed animated */
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-push {
+	right: 0;
+	-webkit-transform: translate3d(17em,0,0);
+	-moz-transform: translate3d(17em,0,0);
+	transform: translate3d(17em,0,0);
+}
+/* Panel right open */
+.ui-panel-position-right.ui-panel-display-reveal, /* Unset "panel right closed" for reveal */
+.ui-panel-position-right.ui-panel-open {
+	right: 0;
+}
+/* Panel right open animated */
+.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-push {
+	-webkit-transform: translate3d(0,0,0);
+	transform: translate3d(0,0,0);
+	-moz-transform: none;
+}
+/* Wrapper and fixed toolbars positioning (for reveal and push) */
+/* Panel left open */
+.ui-panel-page-content-position-left {
+	left: 17em;
+	right: -17em;
+}
+/* Panel left open animated */
+.ui-panel-animate.ui-panel-page-content-position-left {
+	left: 0;
+	right: 0;
+	-webkit-transform: translate3d(17em,0,0);
+	-moz-transform: translate3d(17em,0,0);
+	transform: translate3d(17em,0,0);
+}
+/* Panel right open */
+.ui-panel-page-content-position-right {
+	left: -17em;
+	right: 17em;
+}
+/* Panel right open animated */
+.ui-panel-animate.ui-panel-page-content-position-right {
+	left: 0;
+	right: 0;
+	-webkit-transform: translate3d(-17em,0,0);
+	-moz-transform: translate3d(-17em,0,0);
+	transform: translate3d(-17em,0,0);
+}
+/* Dismiss model open */
+.ui-panel-dismiss-open.ui-panel-dismiss-position-left {
+	left: 17em;
+}
+.ui-panel-dismiss-open.ui-panel-dismiss-position-right {
+	right: 17em;
+}
+/* Shadows and borders */
+.ui-panel-display-reveal {
+	-webkit-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+	box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-reveal {
+	-webkit-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+	box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-display-overlay {
+	-webkit-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+	box-shadow: 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-overlay {
+	-webkit-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+	box-shadow: -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-open.ui-panel-position-left.ui-panel-display-push {
+	border-right-width: 1px;
+	margin-right: -1px;
+}
+.ui-panel-page-content-position-left.ui-panel-page-content-display-push {
+	margin-left: 1px;
+	width: auto;
+}
+.ui-panel-open.ui-panel-position-right.ui-panel-display-push {
+	border-left-width: 1px;
+	margin-left: -1px;
+}
+.ui-panel-page-content-position-right.ui-panel-page-content-display-push {
+	margin-right: 1px;
+	width: auto;
+}
+/* Responsive: wrap on wide viewports once open */
+@media (min-width:55em) {
+	.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-left {
+		margin-right: 17em;
+	}
+	.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-right {
+		margin-left: 17em;
+	}
+	.ui-responsive-panel .ui-panel-page-content-open {
+		width: auto;	
+	}
+	.ui-responsive-panel .ui-panel-dismiss-display-push,
+	.ui-responsive-panel.ui-page-active ~ .ui-panel-dismiss-display-push {
+		display: none;
+	}
+}
+.ui-tabs {
+	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+	padding: .2em;
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.inline-svg-1.4.5.min.css
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.inline-svg-1.4.5.min.css	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.inline-svg-1.4.5.min.css	(revision 101)
@@ -0,0 +1,3 @@
+/*! jQuery Mobile 1.4.5 | Git HEADhash: 68e55e7 <> 2014-10-31T17:33:30Z | (c) 2010, 2014 jQuery Foundation, Inc. | jquery.org/license */
+
+.ui-icon-action:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M9%2C5v3l5-4L9%2C0v3c0%2C0-5%2C0-5%2C7C6%2C5%2C9%2C5%2C9%2C5z%20M11%2C12H2V5h1l2-2H0v11h13V7l-2%2C2V12z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-alert:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C0L0%2C12h14L7%2C0z%20M7%2C11c-0.553%2C0-1-0.447-1-1s0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1S7.553%2C11%2C7%2C11z%20M7%2C8%20C6.447%2C8%2C6%2C7.553%2C6%2C7V5c0-0.553%2C0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1v2C8%2C7.553%2C7.553%2C8%2C7%2C8z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-arrow-d-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C3%2011%2C0%203.5%2C7.5%200%2C4%200%2C14%2010%2C14%206.5%2C10.5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-d-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2210.5%2C7.5%203%2C0%200%2C3%207.5%2C10.5%204%2C14%2014%2C14%2014%2C4%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-d:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%229%2C7%209%2C0%205%2C0%205%2C7%200%2C7%207%2C14%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C5%207%2C0%200%2C7%207%2C14%207%2C9%2014%2C9%2014%2C5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C7%207%2C0%207%2C5%200%2C5%200%2C9%207%2C9%207%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-u-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C11%206.5%2C3.5%2010%2C0%200%2C0%200%2C10%203.5%2C6.5%2011%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-u-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C0%204%2C0%207.5%2C3.5%200%2C11%203%2C14%2010.5%2C6.5%2014%2C10%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-arrow-u:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C0%200%2C7%205%2C7%205%2C14%209%2C14%209%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-audio:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.018px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014.018%2014%22%20style%3D%22enable-background%3Anew%200%200%2014.018%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M1%2C4C0.447%2C4%2C0%2C4.447%2C0%2C5v4c0%2C0.553%2C0.447%2C1%2C1%2C1h1l4%2C4V0L2%2C4H1z%20M10.346%2C7c0-1.699-1.042-3.154-2.546-3.867L6.982%2C4.68%20C7.885%2C5.107%2C8.51%2C5.98%2C8.51%2C7S7.885%2C8.893%2C6.982%2C9.32L7.8%2C10.867C9.304%2C10.154%2C10.346%2C8.699%2C10.346%2C7z%20M9.447%2C0.017L8.618%2C1.586%20C10.723%2C2.584%2C12.182%2C4.621%2C12.182%2C7s-1.459%2C4.416-3.563%2C5.414l0.829%2C1.569c2.707-1.283%2C4.57-3.925%2C4.57-6.983%20S12.154%2C1.3%2C9.447%2C0.017z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-back:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M5%2C3V0L1%2C4l4%2C4V5c0%2C0%2C6%2C0%2C6%2C3s-5%2C4-5%2C4v2c0%2C0%2C7-1%2C7-6C13%2C4%2C8%2C3%2C5%2C3z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-bars:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M1%2C4h12c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H1C0.447%2C2%2C0%2C2.447%2C0%2C3S0.447%2C4%2C1%2C4z%20M13%2C6H1%20C0.447%2C6%2C0%2C6.447%2C0%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H1c-0.553%2C0-1%2C0.447-1%2C1%20s0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-bullets:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M5%2C4h8c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H5C4.447%2C2%2C4%2C2.447%2C4%2C3S4.447%2C4%2C5%2C4z%20M13%2C6H5%20C4.447%2C6%2C4%2C6.447%2C4%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H5c-0.553%2C0-1%2C0.447-1%2C1%20s0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%20M1%2C2C0.447%2C2%2C0%2C2.447%2C0%2C3s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C2%2C1%2C2z%20M1%2C6%20C0.447%2C6%2C0%2C6.447%2C0%2C7c0%2C0.553%2C0.447%2C1%2C1%2C1s1-0.447%2C1-1C2%2C6.447%2C1.553%2C6%2C1%2C6z%20M1%2C10c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1s1-0.447%2C1-1%20S1.553%2C10%2C1%2C10z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-calendar:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M0%2C8h2V6H0V8z%20M3%2C8h2V6H3V8z%20M6%2C8h2V6H6V8z%20M9%2C8h2V6H9V8z%20M12%2C8h2V6h-2V8z%20M0%2C11h2V9H0V11z%20M3%2C11h2V9H3V11z%20M6%2C11h2V9H6V11z%20%20M9%2C11h2V9H9V11z%20M12%2C11h2V9h-2V11z%20M0%2C14h2v-2H0V14z%20M3%2C14h2v-2H3V14z%20M6%2C14h2v-2H6V14z%20M9%2C14h2v-2H9V14z%20M12%2C1%20c0-0.553-0.447-1-1-1s-1%2C0.447-1%2C1H4c0-0.553-0.447-1-1-1S2%2C0.447%2C2%2C1H0v4h14V1H12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-camera:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M12%2C2.5H9.908c-0.206-0.581-0.756-1-1.408-1h-3c-0.652%2C0-1.202%2C0.419-1.408%2C1H2c-1.104%2C0-2%2C0.896-2%2C2%20v6c0%2C1.104%2C0.896%2C2%2C2%2C2h10c1.104%2C0%2C2-0.896%2C2-2v-6C14%2C3.396%2C13.104%2C2.5%2C12%2C2.5z%20M7%2C10.5c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3C10%2C9.156%2C8.657%2C10.5%2C7%2C10.5z%20M7%2C5.5c-1.104%2C0-2%2C0.896-2%2C2c0%2C1.104%2C0.896%2C2%2C2%2C2c1.104%2C0%2C2-0.896%2C2-2%20C9%2C6.396%2C8.104%2C5.5%2C7%2C5.5z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-carat-d:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2211.949%2C3.404%207%2C8.354%202.05%2C3.404%20-0.071%2C5.525%207%2C12.596%2014.07%2C5.525%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-carat-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2210.596%2C11.949%205.646%2C7%2010.596%2C2.05%208.475%2C-0.071%201.404%2C7%208.475%2C14.07%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-carat-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%223.404%2C2.051%208.354%2C7%203.404%2C11.95%205.525%2C14.07%2012.596%2C7%205.525%2C-0.071%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-carat-u:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%222.051%2C10.596%207%2C5.646%2011.95%2C10.596%2014.07%2C8.475%207%2C1.404%20-0.071%2C8.475%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-check:after,html .ui-btn.ui-checkbox-on.ui-checkbox-on:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2214%2C4%2011%2C1%205.003%2C6.997%203%2C5%200%2C8%204.966%2C13%204.983%2C12.982%205%2C13%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-clock:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C12c-2.762%2C0-5-2.238-5-5s2.238-5%2C5-5s5%2C2.238%2C5%2C5%20S9.762%2C12%2C7%2C12z%20M9%2C6H8V4c0-0.553-0.447-1-1-1S6%2C3.447%2C6%2C4v3c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1S9.553%2C6%2C9%2C6z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-cloud:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M14%2C9.5c0-0.793-0.465-1.473-1.134-1.795C12.949%2C7.484%2C13%2C7.249%2C13%2C7c0-1.104-0.896-2-2-2%20c-0.158%2C0-0.311%2C0.023-0.457%2C0.058C9.816%2C3.549%2C8.286%2C2.5%2C6.5%2C2.5c-2.33%2C0-4.224%2C1.777-4.454%2C4.046C0.883%2C6.76%2C0%2C7.773%2C0%2C9%20c0%2C1.381%2C1.119%2C2.5%2C2.5%2C2.5h10v-0.07C13.361%2C11.206%2C14%2C10.432%2C14%2C9.5z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-comment:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M12%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v7c0%2C1.104%2C0.896%2C2%2C2%2C2h1v3l3-3h6c1.104%2C0%2C2-0.896%2C2-2V2C14%2C0.896%2C13.104%2C0%2C12%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-delete:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C3%2011%2C0%207%2C4%203%2C0%200%2C3%204%2C7%200%2C11%203%2C14%207%2C10%2011%2C14%2014%2C11%2010%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-edit:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M1%2C10l-1%2C4l4-1l7-7L8%2C3L1%2C10z%20M11%2C0L9%2C2l3%2C3l2-2L11%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-eye:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C2C3%2C2%2C0%2C7%2C0%2C7s3%2C5%2C7%2C5s7-5%2C7-5S11%2C2%2C7%2C2z%20M7%2C10c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3C10%2C8.656%2C8.657%2C10%2C7%2C10z%20M7%2C6C6.448%2C6%2C6%2C6.447%2C6%2C7c0%2C0.553%2C0.448%2C1%2C1%2C1s1-0.447%2C1-1C8%2C6.447%2C7.552%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-forbidden:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M12.601%2C11.187C13.476%2C10.018%2C14%2C8.572%2C14%2C7c0-3.866-3.134-7-7-7C5.428%2C0%2C3.982%2C0.524%2C2.813%2C1.399L2.757%2C1.343L2.053%2C2.048%20L2.048%2C2.053L1.343%2C2.758l0.056%2C0.056C0.524%2C3.982%2C0%2C5.428%2C0%2C7c0%2C3.866%2C3.134%2C7%2C7%2C7c1.572%2C0%2C3.018-0.524%2C4.187-1.399l0.056%2C0.057%20l0.705-0.705l0.005-0.005l0.705-0.705L12.601%2C11.187z%20M7%2C2c2.761%2C0%2C5%2C2.238%2C5%2C5c0%2C1.019-0.308%2C1.964-0.832%2C2.754L4.246%2C2.832%20C5.036%2C2.308%2C5.981%2C2%2C7%2C2z%20M7%2C12c-2.761%2C0-5-2.238-5-5c0-1.019%2C0.308-1.964%2C0.832-2.754l6.922%2C6.922C8.964%2C11.692%2C8.019%2C12%2C7%2C12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-forward:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M13%2C4L9%2C0v3C6%2C3%2C1%2C4%2C1%2C8c0%2C5%2C7%2C6%2C7%2C6v-2c0%2C0-5-1-5-4s6-3%2C6-3v3L13%2C4z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-gear:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M13.621%2C5.904l-1.036-0.259c-0.168-0.042-0.303-0.168-0.355-0.332c-0.092-0.284-0.205-0.559-0.339-0.82%20c-0.079-0.153-0.073-0.337%2C0.017-0.486l0.549-0.915c0.118-0.196%2C0.088-0.448-0.075-0.61l-0.862-0.863%20c-0.162-0.163-0.414-0.193-0.611-0.075l-0.916%2C0.55C9.844%2C2.182%2C9.659%2C2.188%2C9.506%2C2.109C9.244%2C1.975%2C8.97%2C1.861%2C8.686%2C1.77%20c-0.165-0.052-0.29-0.187-0.332-0.354L8.095%2C0.379C8.039%2C0.156%2C7.839%2C0%2C7.609%2C0H6.391c-0.229%2C0-0.43%2C0.156-0.485%2C0.379L5.646%2C1.415%20C5.604%2C1.582%2C5.479%2C1.718%2C5.313%2C1.77c-0.284%2C0.092-0.559%2C0.206-0.82%2C0.34C4.339%2C2.188%2C4.155%2C2.182%2C4.007%2C2.093L3.092%2C1.544%20c-0.196-0.118-0.448-0.087-0.61%2C0.075L1.619%2C2.481C1.457%2C2.644%2C1.426%2C2.896%2C1.544%2C3.093l0.549%2C0.914%20c0.089%2C0.148%2C0.095%2C0.332%2C0.017%2C0.486C1.975%2C4.755%2C1.861%2C5.029%2C1.77%2C5.314c-0.053%2C0.164-0.188%2C0.29-0.354%2C0.332L0.379%2C5.905%20C0.156%2C5.961%2C0%2C6.161%2C0%2C6.391v1.219c0%2C0.229%2C0.156%2C0.43%2C0.379%2C0.485l1.036%2C0.26C1.582%2C8.396%2C1.717%2C8.521%2C1.77%2C8.687%20c0.092%2C0.284%2C0.205%2C0.559%2C0.34%2C0.82C2.188%2C9.66%2C2.182%2C9.844%2C2.093%2C9.993l-0.549%2C0.915c-0.118%2C0.195-0.087%2C0.448%2C0.075%2C0.61%20l0.862%2C0.862c0.162%2C0.163%2C0.414%2C0.193%2C0.61%2C0.075l0.915-0.549c0.148-0.089%2C0.332-0.095%2C0.486-0.017%20c0.262%2C0.135%2C0.536%2C0.248%2C0.82%2C0.34c0.165%2C0.053%2C0.291%2C0.187%2C0.332%2C0.354l0.259%2C1.036C5.96%2C13.844%2C6.16%2C14%2C6.39%2C14h1.22%20c0.229%2C0%2C0.43-0.156%2C0.485-0.379l0.259-1.036c0.042-0.167%2C0.168-0.302%2C0.333-0.354c0.284-0.092%2C0.559-0.205%2C0.82-0.34%20c0.154-0.078%2C0.338-0.072%2C0.486%2C0.017l0.914%2C0.549c0.197%2C0.118%2C0.449%2C0.088%2C0.611-0.074l0.862-0.863%20c0.163-0.162%2C0.193-0.415%2C0.075-0.611l-0.549-0.915c-0.089-0.148-0.096-0.332-0.017-0.485c0.134-0.263%2C0.248-0.536%2C0.339-0.82%20c0.053-0.165%2C0.188-0.291%2C0.355-0.333l1.036-0.259C13.844%2C8.039%2C14%2C7.839%2C14%2C7.609V6.39C14%2C6.16%2C13.844%2C5.96%2C13.621%2C5.904z%20M7%2C10%20c-1.657%2C0-3-1.343-3-3s1.343-3%2C3-3s3%2C1.343%2C3%2C3S8.657%2C10%2C7%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-grid:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3%2C0H1C0.447%2C0%2C0%2C0.447%2C0%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C4%2C0.447%2C3.553%2C0%2C3%2C0z%20M8%2C0H6%20C5.447%2C0%2C5%2C0.447%2C5%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C9%2C0.447%2C8.553%2C0%2C8%2C0z%20M13%2C0h-2c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C14%2C0.447%2C13.553%2C0%2C13%2C0z%20M3%2C5H1C0.447%2C5%2C0%2C5.447%2C0%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1V6C4%2C5.447%2C3.553%2C5%2C3%2C5z%20M8%2C5H6C5.447%2C5%2C5%2C5.447%2C5%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6%20C9%2C5.447%2C8.553%2C5%2C8%2C5z%20M13%2C5h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6C14%2C5.447%2C13.553%2C5%2C13%2C5z%20M3%2C10%20H1c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C4%2C10.447%2C3.553%2C10%2C3%2C10z%20M8%2C10H6c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C9%2C10.447%2C8.553%2C10%2C8%2C10z%20M13%2C10h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1v-2C14%2C10.447%2C13.553%2C10%2C13%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-heart:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C1.872c-2-3-7-2-7%2C2c0%2C3%2C4%2C7%2C4%2C7s2.417%2C2.479%2C3%2C3c0.583-0.521%2C3-3%2C3-3s4-4%2C4-7%20C14-0.128%2C9-1.128%2C7%2C1.872z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-home:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%227%2C0%200%2C7%202%2C7%202%2C14%205%2C14%205%2C9%209%2C9%209%2C14%2012%2C14%2012%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-info:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C2c0.552%2C0%2C1%2C0.447%2C1%2C1S7.552%2C4%2C7%2C4S6%2C3.553%2C6%2C3%20S6.448%2C2%2C7%2C2z%20M9%2C11H5v-1h1V6H5V5h3v5h1V11z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-location:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M7%2C0C4.791%2C0%2C3%2C1.791%2C3%2C4c0%2C2%2C4%2C10%2C4%2C10s4-8%2C4-10C11%2C1.791%2C9.209%2C0%2C7%2C0z%20M7%2C6C5.896%2C6%2C5%2C5.104%2C5%2C4%20s0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2S8.104%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-lock:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M12%2C6V5c0-2.762-2.238-5-5-5C4.239%2C0%2C2%2C2.238%2C2%2C5v1H1v8h12V6H12z%20M7.5%2C9.848V12h-1V9.848%20C6.207%2C9.673%2C6%2C9.366%2C6%2C9c0-0.553%2C0.448-1%2C1-1s1%2C0.447%2C1%2C1C8%2C9.366%2C7.793%2C9.673%2C7.5%2C9.848z%20M10%2C6H4V5c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3V6z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-mail:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M0%2C3.75V12h14V3.75L7%2C9L0%2C3.75z%20M14%2C2H0l7%2C5L14%2C2z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-minus:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Crect%20y%3D%225%22%20style%3D%22fill%3A%23FFFFFF%3B%22%20width%3D%2214%22%20height%3D%224%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-navigation:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2213%2C1%200%2C6%207%2C7%208%2C14%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-phone:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%22-0.01%200.008%2014%2014%22%20style%3D%22enable-background%3Anew%20-0.01%200.008%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M6.939%2C9.189C6.165%2C8.557%2C5.271%2C7.705%2C4.497%2C6.744C3.953%2C6.071%2C3.473%2C5.363%2C3.969%2C4.866l-3.482-3.48%20C-0.021%2C2.02-1.146%2C5.04%2C3.675%2C9.984c5.08%2C5.211%2C8.356%2C4.097%2C8.92%2C3.511l-3.396-3.4C8.725%2C10.568%2C8.113%2C10.146%2C6.939%2C9.189z%20%20M13.82%2C11.519v-0.004c0%2C0-2.648-2.646-2.649-2.647c-0.21-0.211-0.546-0.205-0.754%2C0.002L9.455%2C9.831l3.403%2C3.407%20c0%2C0%2C0.962-0.96%2C0.961-0.961l0.002-0.001C14.043%2C12.056%2C14.021%2C11.721%2C13.82%2C11.519z%20M5.192%2C3.644V3.642%20c0.222-0.222%2C0.2-0.557%2C0-0.758V2.881c0%2C0-2.726-2.725-2.727-2.726C2.255-0.055%2C1.92-0.05%2C1.712%2C0.156L0.751%2C1.121l3.479%2C3.482%20C4.231%2C4.604%2C5.192%2C3.645%2C5.192%2C3.644z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-plus:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20fill%3D%22%23FFF%22%20points%3D%2214%2C5%209%2C5%209%2C0%205%2C0%205%2C5%200%2C5%200%2C9%205%2C9%205%2C14%209%2C14%209%2C9%2014%2C9%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-power:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M11.243%2C2.408c-0.392-0.401-1.024-0.401-1.415%2C0c-0.391%2C0.401-0.391%2C1.054%2C0%2C1.455%20C10.584%2C4.642%2C11%2C5.675%2C11%2C6.773s-0.416%2C2.133-1.172%2C2.91c-1.512%2C1.558-4.145%2C1.558-5.656%2C0C3.416%2C8.904%2C3%2C7.872%2C3%2C6.773%20C3%2C5.673%2C3.416%2C4.64%2C4.172%2C3.863c0.39-0.401%2C0.39-1.054%2C0-1.455c-0.391-0.401-1.024-0.401-1.415%2C0C1.624%2C3.574%2C1%2C5.125%2C1%2C6.773%20c0%2C1.647%2C0.624%2C3.199%2C1.757%2C4.365c1.134%2C1.166%2C2.64%2C1.809%2C4.243%2C1.809c1.604%2C0%2C3.109-0.645%2C4.243-1.811%20C12.376%2C9.975%2C13%2C8.423%2C13%2C6.773C13%2C5.125%2C12.376%2C3.574%2C11.243%2C2.408z%20M7%2C8.053c0.553%2C0%2C1-0.445%2C1-1v-6c0-0.553-0.447-1-1-1%20c-0.553%2C0-1%2C0.447-1%2C1v6C6%2C7.604%2C6.447%2C8.053%2C7%2C8.053z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-recycle:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M3%2C7h1L2%2C4L0%2C7h1c0%2C3.313%2C2.687%2C6%2C6%2C6c0.702%2C0%2C1.374-0.127%2C2-0.35v-2.205C8.41%2C10.789%2C7.732%2C11%2C7%2C11%20C4.791%2C11%2C3%2C9.209%2C3%2C7z%20M13%2C7c0-3.313-2.688-6-6-6C6.298%2C1%2C5.626%2C1.127%2C5%2C1.349v2.206C5.59%2C3.211%2C6.268%2C3%2C7%2C3c2.209%2C0%2C4%2C1.791%2C4%2C4%20h-1l2%2C3l2-3H13z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-refresh:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.001px%22%20height%3D%2214.002px%22%20viewBox%3D%220%200%2014.001%2014.002%22%20style%3D%22enable-background%3Anew%200%200%2014.001%2014.002%3B%22%20%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M14.001%2C6.001v-6l-2.06%2C2.06c-0.423-0.424-0.897-0.809-1.44-1.122C7.153-0.994%2C2.872%2C0.153%2C0.939%2C3.501%20c-1.933%2C3.348-0.786%2C7.629%2C2.562%2C9.562c3.348%2C1.933%2C7.629%2C0.785%2C9.562-2.562l-1.732-1c-1.381%2C2.392-4.438%2C3.211-6.83%2C1.83%20s-3.211-4.438-1.83-6.83s4.438-3.211%2C6.83-1.83c0.389%2C0.225%2C0.718%2C0.506%2C1.02%2C0.81l-2.52%2C2.52H14.001z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-search:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M10.171%2C8.766c0.617-0.888%2C0.979-1.964%2C0.979-3.126c0-3.037-2.463-5.5-5.5-5.5s-5.5%2C2.463-5.5%2C5.5%20s2.463%2C5.5%2C5.5%2C5.5c1.152%2C0%2C2.223-0.355%2C3.104-0.962l3.684%2C3.683l1.414-1.414L10.171%2C8.766z%20M5.649%2C9.14c-1.933%2C0-3.5-1.567-3.5-3.5%20c0-1.933%2C1.567-3.5%2C3.5-3.5c1.933%2C0%2C3.5%2C1.567%2C3.5%2C3.5C9.149%2C7.572%2C7.582%2C9.14%2C5.649%2C9.14z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-shop:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M10%2C4V3c0-1.657-1.343-3-3-3S4%2C1.343%2C4%2C3v1H1v10h12V4H10z%20M4.5%2C6C4.224%2C6%2C4%2C5.776%2C4%2C5.5%20S4.224%2C5%2C4.5%2C5S5%2C5.224%2C5%2C5.5S4.776%2C6%2C4.5%2C6z%20M5%2C3c0-1.104%2C0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2v1H5V3z%20M9.5%2C6C9.225%2C6%2C9%2C5.776%2C9%2C5.5%20S9.225%2C5%2C9.5%2C5S10%2C5.224%2C10%2C5.5S9.775%2C6%2C9.5%2C6z%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-star:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20style%3D%22fill%3A%23FFFFFF%3B%22%20points%3D%2214%2C5%209%2C5%207%2C0%205%2C5%200%2C5%204%2C8%202.625%2C13%207%2C10%2011.375%2C13%2010%2C8%20%22%2F%3E%3C%2Fsvg%3E")}.ui-icon-tag:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M5%2C0H0v5l9%2C9l5-5L5%2C0z%20M3%2C4C2.447%2C4%2C2%2C3.553%2C2%2C3s0.447-1%2C1-1s1%2C0.447%2C1%2C1S3.553%2C4%2C3%2C4z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-user:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M8.851%2C10.101c-0.18-0.399-0.2-0.763-0.153-1.104C9.383%2C8.49%2C9.738%2C7.621%2C9.891%2C6.465C10.493%2C6.355%2C10.5%2C5.967%2C10.5%2C5.5%20c0-0.437-0.008-0.804-0.502-0.94C9.999%2C4.539%2C10%2C4.521%2C10%2C4.5c0-2.103-1-4-2-4C8%2C0.5%2C7.5%2C0%2C6.5%2C0C5%2C0%2C4%2C1.877%2C4%2C4.5%20c0%2C0.021%2C0.001%2C0.039%2C0.002%2C0.06C3.508%2C4.696%2C3.5%2C5.063%2C3.5%2C5.5c0%2C0.467%2C0.007%2C0.855%2C0.609%2C0.965%20C4.262%2C7.621%2C4.617%2C8.49%2C5.303%2C8.997c0.047%2C0.341%2C0.026%2C0.704-0.153%2C1.104C1.503%2C10.503%2C0%2C12%2C0%2C12v2h14v-2%20C14%2C12%2C12.497%2C10.503%2C8.851%2C10.101z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-icon-video:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%20-2%2014%2014%22%20style%3D%22enable-background%3Anew%200%20-2%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23FFFFFF%3B%22%20d%3D%22M8%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2h6c1.104%2C0%2C2-0.896%2C2-2V5V2C10%2C0.896%2C9.104%2C0%2C8%2C0z%20%20M10%2C5l4%2C4V1L10%2C5z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-action:after,.ui-alt-icon .ui-icon-action:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M9%2C5v3l5-4L9%2C0v3c0%2C0-5%2C0-5%2C7C6%2C5%2C9%2C5%2C9%2C5z%20M11%2C12H2V5h1l2-2H0v11h13V7l-2%2C2V12z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-alert:after,.ui-alt-icon .ui-icon-alert:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0L0%2C12h14L7%2C0z%20M7%2C11c-0.553%2C0-1-0.447-1-1s0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1S7.553%2C11%2C7%2C11z%20M7%2C8C6.447%2C8%2C6%2C7.553%2C6%2C7V5%20c0-0.553%2C0.447-1%2C1-1c0.553%2C0%2C1%2C0.447%2C1%2C1v2C8%2C7.553%2C7.553%2C8%2C7%2C8z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-d:after,.ui-alt-icon .ui-icon-arrow-d:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%229%2C7%209%2C0%205%2C0%205%2C7%200%2C7%207%2C14%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-d-l:after,.ui-alt-icon .ui-icon-arrow-d-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C3%2011%2C0%203.5%2C7.5%200%2C4%200%2C14%2010%2C14%206.5%2C10.5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-d-r:after,.ui-alt-icon .ui-icon-arrow-d-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2210.5%2C7.5%203%2C0%200%2C3%207.5%2C10.5%204%2C14%2014%2C14%2014%2C4%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-l:after,.ui-alt-icon .ui-icon-arrow-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C5%207%2C0%200%2C7%207%2C14%207%2C9%2014%2C9%2014%2C5%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-r:after,.ui-alt-icon .ui-icon-arrow-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C7%207%2C0%207%2C5%200%2C5%200%2C9%207%2C9%207%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-u:after,.ui-alt-icon .ui-icon-arrow-u:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C0%200%2C7%205%2C7%205%2C14%209%2C14%209%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-u-l:after,.ui-alt-icon .ui-icon-arrow-u-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C11%206.5%2C3.5%2010%2C0%200%2C0%200%2C10%203.5%2C6.5%2011%2C14%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-arrow-u-r:after,.ui-alt-icon .ui-icon-arrow-u-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C0%204%2C0%207.5%2C3.5%200%2C11%203%2C14%2010.5%2C6.5%2014%2C10%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-audio:after,.ui-alt-icon .ui-icon-audio:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.018px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014.018%2014%22%20style%3D%22enable-background%3Anew%200%200%2014.018%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C4C0.447%2C4%2C0%2C4.447%2C0%2C5v4c0%2C0.553%2C0.447%2C1%2C1%2C1h1l4%2C4V0L2%2C4H1z%20M10.346%2C7c0-1.699-1.042-3.154-2.546-3.867L6.982%2C4.68%20C7.885%2C5.107%2C8.51%2C5.98%2C8.51%2C7S7.885%2C8.893%2C6.982%2C9.32L7.8%2C10.867C9.304%2C10.154%2C10.346%2C8.699%2C10.346%2C7z%20M9.447%2C0.017L8.618%2C1.586%20C10.723%2C2.584%2C12.182%2C4.621%2C12.182%2C7s-1.459%2C4.416-3.563%2C5.414l0.829%2C1.569c2.707-1.283%2C4.57-3.925%2C4.57-6.983%20S12.154%2C1.3%2C9.447%2C0.017z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-back:after,.ui-alt-icon .ui-icon-back:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C3V0L1%2C4l4%2C4V5c0%2C0%2C6%2C0%2C6%2C3s-5%2C4-5%2C4v2c0%2C0%2C7-1%2C7-6C13%2C4%2C8%2C3%2C5%2C3z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-bars:after,.ui-alt-icon .ui-icon-bars:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C4h12c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H1C0.447%2C2%2C0%2C2.447%2C0%2C3S0.447%2C4%2C1%2C4z%20M13%2C6H1C0.447%2C6%2C0%2C6.447%2C0%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1h12c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H1c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1h12%20c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-bullets:after,.ui-alt-icon .ui-icon-bullets:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C4h8c0.553%2C0%2C1-0.447%2C1-1s-0.447-1-1-1H5C4.447%2C2%2C4%2C2.447%2C4%2C3S4.447%2C4%2C5%2C4z%20M13%2C6H5C4.447%2C6%2C4%2C6.447%2C4%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1h8c0.553%2C0%2C1-0.447%2C1-1C14%2C6.447%2C13.553%2C6%2C13%2C6z%20M13%2C10H5c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1h8%20c0.553%2C0%2C1-0.447%2C1-1S13.553%2C10%2C13%2C10z%20M1%2C2C0.447%2C2%2C0%2C2.447%2C0%2C3s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C2%2C1%2C2z%20M1%2C6C0.447%2C6%2C0%2C6.447%2C0%2C7%20c0%2C0.553%2C0.447%2C1%2C1%2C1s1-0.447%2C1-1C2%2C6.447%2C1.553%2C6%2C1%2C6z%20M1%2C10c-0.553%2C0-1%2C0.447-1%2C1s0.447%2C1%2C1%2C1s1-0.447%2C1-1S1.553%2C10%2C1%2C10z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-calendar:after,.ui-alt-icon .ui-icon-calendar:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M0%2C8h2V6H0V8z%20M3%2C8h2V6H3V8z%20M6%2C8h2V6H6V8z%20M9%2C8h2V6H9V8z%20M12%2C8h2V6h-2V8z%20M0%2C11h2V9H0V11z%20M3%2C11h2V9H3V11z%20M6%2C11h2V9H6V11z%20%20M9%2C11h2V9H9V11z%20M12%2C11h2V9h-2V11z%20M0%2C14h2v-2H0V14z%20M3%2C14h2v-2H3V14z%20M6%2C14h2v-2H6V14z%20M9%2C14h2v-2H9V14z%20M12%2C1%20c0-0.553-0.447-1-1-1s-1%2C0.447-1%2C1H4c0-0.553-0.447-1-1-1S2%2C0.447%2C2%2C1H0v4h14V1H12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-camera:after,.ui-alt-icon .ui-icon-camera:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C2.5H9.908c-0.206-0.581-0.756-1-1.408-1h-3c-0.652%2C0-1.202%2C0.419-1.408%2C1H2c-1.104%2C0-2%2C0.896-2%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2%20h10c1.104%2C0%2C2-0.896%2C2-2v-6C14%2C3.396%2C13.104%2C2.5%2C12%2C2.5z%20M7%2C10.5c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3%20C10%2C9.156%2C8.657%2C10.5%2C7%2C10.5z%20M7%2C5.5c-1.104%2C0-2%2C0.896-2%2C2c0%2C1.104%2C0.896%2C2%2C2%2C2c1.104%2C0%2C2-0.896%2C2-2C9%2C6.396%2C8.104%2C5.5%2C7%2C5.5z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-carat-d:after,.ui-alt-icon .ui-icon-carat-d:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2211.949%2C3.404%207%2C8.354%202.05%2C3.404%20-0.071%2C5.525%207%2C12.596%2014.07%2C5.525%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-carat-l:after,.ui-alt-icon .ui-icon-carat-l:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2210.596%2C11.949%205.646%2C7%2010.596%2C2.05%208.475%2C-0.071%201.404%2C7%208.475%2C14.07%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-carat-r:after,.ui-alt-icon .ui-icon-carat-r:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%223.404%2C2.051%208.354%2C7%203.404%2C11.95%205.525%2C14.07%2012.596%2C7%205.525%2C-0.071%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-carat-u:after,.ui-alt-icon .ui-icon-carat-u:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%222.051%2C10.596%207%2C5.646%2011.95%2C10.596%2014.07%2C8.475%207%2C1.404%20-0.071%2C8.475%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-check:after,.ui-alt-icon .ui-icon-check:after,html .ui-alt-icon.ui-btn.ui-checkbox-on:after,html .ui-alt-icon .ui-btn.ui-checkbox-on:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C4%2011%2C1%205.003%2C6.997%203%2C5%200%2C8%204.966%2C13%204.983%2C12.982%205%2C13%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-clock:after,.ui-alt-icon .ui-icon-clock:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C12c-2.762%2C0-5-2.238-5-5s2.238-5%2C5-5s5%2C2.238%2C5%2C5%20S9.762%2C12%2C7%2C12z%20M9%2C6H8V4c0-0.553-0.447-1-1-1S6%2C3.447%2C6%2C4v3c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1S9.553%2C6%2C9%2C6z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-cloud:after,.ui-alt-icon .ui-icon-cloud:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M14%2C9.5c0-0.793-0.465-1.473-1.134-1.795C12.949%2C7.484%2C13%2C7.249%2C13%2C7c0-1.104-0.896-2-2-2c-0.158%2C0-0.311%2C0.023-0.457%2C0.058%20C9.816%2C3.549%2C8.286%2C2.5%2C6.5%2C2.5c-2.33%2C0-4.224%2C1.777-4.454%2C4.046C0.883%2C6.76%2C0%2C7.773%2C0%2C9c0%2C1.381%2C1.119%2C2.5%2C2.5%2C2.5h10v-0.07%20C13.361%2C11.206%2C14%2C10.432%2C14%2C9.5z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-comment:after,.ui-alt-icon .ui-icon-comment:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v7c0%2C1.104%2C0.896%2C2%2C2%2C2h1v3l3-3h6c1.104%2C0%2C2-0.896%2C2-2V2C14%2C0.896%2C13.104%2C0%2C12%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-delete:after,.ui-alt-icon .ui-icon-delete:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C3%2011%2C0%207%2C4%203%2C0%200%2C3%204%2C7%200%2C11%203%2C14%207%2C10%2011%2C14%2014%2C11%2010%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-edit:after,.ui-alt-icon .ui-icon-edit:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M1%2C10l-1%2C4l4-1l7-7L8%2C3L1%2C10z%20M11%2C0L9%2C2l3%2C3l2-2L11%2C0z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-eye:after,.ui-alt-icon .ui-icon-eye:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C2C3%2C2%2C0%2C7%2C0%2C7s3%2C5%2C7%2C5s7-5%2C7-5S11%2C2%2C7%2C2z%20M7%2C10c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3%20C10%2C8.656%2C8.657%2C10%2C7%2C10z%20M7%2C6C6.448%2C6%2C6%2C6.447%2C6%2C7c0%2C0.553%2C0.448%2C1%2C1%2C1s1-0.447%2C1-1C8%2C6.447%2C7.552%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-forbidden:after,.ui-alt-icon .ui-icon-forbidden:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12.601%2C11.187C13.476%2C10.018%2C14%2C8.572%2C14%2C7c0-3.866-3.134-7-7-7C5.428%2C0%2C3.982%2C0.524%2C2.813%2C1.399L2.757%2C1.343L2.053%2C2.048%20L2.048%2C2.053L1.343%2C2.758l0.056%2C0.056C0.524%2C3.982%2C0%2C5.428%2C0%2C7c0%2C3.866%2C3.134%2C7%2C7%2C7c1.572%2C0%2C3.018-0.524%2C4.187-1.399l0.056%2C0.057%20l0.705-0.705l0.005-0.005l0.705-0.705L12.601%2C11.187z%20M7%2C2c2.761%2C0%2C5%2C2.238%2C5%2C5c0%2C1.019-0.308%2C1.964-0.832%2C2.754L4.246%2C2.832%20C5.036%2C2.308%2C5.981%2C2%2C7%2C2z%20M7%2C12c-2.761%2C0-5-2.238-5-5c0-1.019%2C0.308-1.964%2C0.832-2.754l6.922%2C6.922C8.964%2C11.692%2C8.019%2C12%2C7%2C12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-forward:after,.ui-alt-icon .ui-icon-forward:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M13%2C4L9%2C0v3C6%2C3%2C1%2C4%2C1%2C8c0%2C5%2C7%2C6%2C7%2C6v-2c0%2C0-5-1-5-4s6-3%2C6-3v3L13%2C4z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-gear:after,.ui-alt-icon .ui-icon-gear:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M13.621%2C5.904l-1.036-0.259c-0.168-0.042-0.303-0.168-0.355-0.332c-0.092-0.284-0.205-0.559-0.339-0.82%20c-0.079-0.153-0.073-0.337%2C0.017-0.486l0.549-0.915c0.118-0.196%2C0.088-0.448-0.075-0.61l-0.862-0.863%20c-0.162-0.163-0.414-0.193-0.611-0.075l-0.916%2C0.55C9.844%2C2.182%2C9.659%2C2.188%2C9.506%2C2.109C9.244%2C1.975%2C8.97%2C1.861%2C8.686%2C1.77%20c-0.165-0.052-0.29-0.187-0.332-0.354L8.095%2C0.379C8.039%2C0.156%2C7.839%2C0%2C7.609%2C0H6.391c-0.229%2C0-0.43%2C0.156-0.485%2C0.379L5.646%2C1.415%20C5.604%2C1.582%2C5.479%2C1.718%2C5.313%2C1.77c-0.284%2C0.092-0.559%2C0.206-0.82%2C0.34C4.339%2C2.188%2C4.155%2C2.182%2C4.007%2C2.093L3.092%2C1.544%20c-0.196-0.118-0.448-0.087-0.61%2C0.075L1.619%2C2.481C1.457%2C2.644%2C1.426%2C2.896%2C1.544%2C3.093l0.549%2C0.914%20c0.089%2C0.148%2C0.095%2C0.332%2C0.017%2C0.486C1.975%2C4.755%2C1.861%2C5.029%2C1.77%2C5.314c-0.053%2C0.164-0.188%2C0.29-0.354%2C0.332L0.379%2C5.905%20C0.156%2C5.961%2C0%2C6.161%2C0%2C6.391v1.219c0%2C0.229%2C0.156%2C0.43%2C0.379%2C0.485l1.036%2C0.26C1.582%2C8.396%2C1.717%2C8.521%2C1.77%2C8.687%20c0.092%2C0.284%2C0.205%2C0.559%2C0.34%2C0.82C2.188%2C9.66%2C2.182%2C9.844%2C2.093%2C9.993l-0.549%2C0.915c-0.118%2C0.195-0.087%2C0.448%2C0.075%2C0.61%20l0.862%2C0.862c0.162%2C0.163%2C0.414%2C0.193%2C0.61%2C0.075l0.915-0.549c0.148-0.089%2C0.332-0.095%2C0.486-0.017%20c0.262%2C0.135%2C0.536%2C0.248%2C0.82%2C0.34c0.165%2C0.053%2C0.291%2C0.187%2C0.332%2C0.354l0.259%2C1.036C5.96%2C13.844%2C6.16%2C14%2C6.39%2C14h1.22%20c0.229%2C0%2C0.43-0.156%2C0.485-0.379l0.259-1.036c0.042-0.167%2C0.168-0.302%2C0.333-0.354c0.284-0.092%2C0.559-0.205%2C0.82-0.34%20c0.154-0.078%2C0.338-0.072%2C0.486%2C0.017l0.914%2C0.549c0.197%2C0.118%2C0.449%2C0.088%2C0.611-0.074l0.862-0.863%20c0.163-0.162%2C0.193-0.415%2C0.075-0.611l-0.549-0.915c-0.089-0.148-0.096-0.332-0.017-0.485c0.134-0.263%2C0.248-0.536%2C0.339-0.82%20c0.053-0.165%2C0.188-0.291%2C0.355-0.333l1.036-0.259C13.844%2C8.039%2C14%2C7.839%2C14%2C7.609V6.39C14%2C6.16%2C13.844%2C5.96%2C13.621%2C5.904z%20M7%2C10%20c-1.657%2C0-3-1.343-3-3s1.343-3%2C3-3s3%2C1.343%2C3%2C3S8.657%2C10%2C7%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-grid:after,.ui-alt-icon .ui-icon-grid:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M3%2C0H1C0.447%2C0%2C0%2C0.447%2C0%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C4%2C0.447%2C3.553%2C0%2C3%2C0z%20M8%2C0H6%20C5.447%2C0%2C5%2C0.447%2C5%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C9%2C0.447%2C8.553%2C0%2C8%2C0z%20M13%2C0h-2c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V1C14%2C0.447%2C13.553%2C0%2C13%2C0z%20M3%2C5H1C0.447%2C5%2C0%2C5.447%2C0%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1V6C4%2C5.447%2C3.553%2C5%2C3%2C5z%20M8%2C5H6C5.447%2C5%2C5%2C5.447%2C5%2C6v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6%20C9%2C5.447%2C8.553%2C5%2C8%2C5z%20M13%2C5h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1V6C14%2C5.447%2C13.553%2C5%2C13%2C5z%20M3%2C10%20H1c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C4%2C10.447%2C3.553%2C10%2C3%2C10z%20M8%2C10H6c-0.553%2C0-1%2C0.447-1%2C1v2%20c0%2C0.553%2C0.447%2C1%2C1%2C1h2c0.553%2C0%2C1-0.447%2C1-1v-2C9%2C10.447%2C8.553%2C10%2C8%2C10z%20M13%2C10h-2c-0.553%2C0-1%2C0.447-1%2C1v2c0%2C0.553%2C0.447%2C1%2C1%2C1h2%20c0.553%2C0%2C1-0.447%2C1-1v-2C14%2C10.447%2C13.553%2C10%2C13%2C10z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-heart:after,.ui-alt-icon .ui-icon-heart:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C1.958c-2-3-7-2.128-7%2C1.872c0%2C3%2C4%2C7%2C4%2C7s2.417%2C2.48%2C3%2C3c0.583-0.52%2C3-3%2C3-3s4-4%2C4-7C14-0.169%2C9-1.042%2C7%2C1.958z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-home:after,.ui-alt-icon .ui-icon-home:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%227%2C0%200%2C7%202%2C7%202%2C14%205%2C14%205%2C9%209%2C9%209%2C14%2012%2C14%2012%2C7%2014%2C7%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-info:after,.ui-alt-icon .ui-icon-info:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C3.134%2C0%2C0%2C3.134%2C0%2C7s3.134%2C7%2C7%2C7s7-3.134%2C7-7S10.866%2C0%2C7%2C0z%20M7%2C2c0.552%2C0%2C1%2C0.447%2C1%2C1S7.552%2C4%2C7%2C4S6%2C3.553%2C6%2C3%20S6.448%2C2%2C7%2C2z%20M9%2C11H5v-1h1V6H5V5h3v5h1V11z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-location:after,.ui-alt-icon .ui-icon-location:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M7%2C0C4.791%2C0%2C3%2C1.791%2C3%2C4c0%2C2%2C4%2C10%2C4%2C10s4-8%2C4-10C11%2C1.791%2C9.209%2C0%2C7%2C0z%20M7%2C6C5.896%2C6%2C5%2C5.104%2C5%2C4s0.896-2%2C2-2%20c1.104%2C0%2C2%2C0.896%2C2%2C2S8.104%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-lock:after,.ui-alt-icon .ui-icon-lock:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M12%2C6V5c0-2.762-2.238-5-5-5C4.239%2C0%2C2%2C2.238%2C2%2C5v1H1v8h12V6H12z%20M7.5%2C9.848V12h-1V9.848C6.207%2C9.673%2C6%2C9.366%2C6%2C9%20c0-0.553%2C0.448-1%2C1-1s1%2C0.447%2C1%2C1C8%2C9.366%2C7.793%2C9.673%2C7.5%2C9.848z%20M10%2C6H4V5c0-1.657%2C1.343-3%2C3-3s3%2C1.343%2C3%2C3V6z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-mail:after,.ui-alt-icon .ui-icon-mail:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M0%2C3.75V12h14V3.75L7%2C9L0%2C3.75z%20M14%2C2H0l7%2C5L14%2C2z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-minus:after,.ui-alt-icon .ui-icon-minus:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Crect%20y%3D%225%22%20width%3D%2214%22%20height%3D%224%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-navigation:after,.ui-alt-icon .ui-icon-navigation:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2213%2C1%200%2C6%207%2C7%208%2C14%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-phone:after,.ui-alt-icon .ui-icon-phone:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M6.949%2C9.182C6.175%2C8.549%2C5.281%2C7.697%2C4.507%2C6.736C3.963%2C6.063%2C3.483%2C5.355%2C3.979%2C4.858l-3.482-3.48%20c-0.508%2C0.634-1.633%2C3.654%2C3.188%2C8.598c5.08%2C5.211%2C8.356%2C4.097%2C8.92%2C3.511l-3.396-3.399C8.734%2C10.561%2C8.123%2C10.139%2C6.949%2C9.182z%20%20M13.83%2C11.512v-0.004c0%2C0-2.648-2.646-2.649-2.647c-0.21-0.212-0.546-0.205-0.754%2C0.002L9.465%2C9.823l3.402%2C3.407%20c0%2C0%2C0.963-0.961%2C0.961-0.961l0.002-0.002C14.053%2C12.049%2C14.031%2C11.713%2C13.83%2C11.512z%20M5.202%2C3.636V3.634%20c0.222-0.222%2C0.2-0.557%2C0-0.758V2.873c0%2C0-2.726-2.725-2.727-2.726c-0.21-0.21-0.545-0.205-0.753%2C0.001L0.761%2C1.113L4.24%2C4.595%20C4.241%2C4.596%2C5.202%2C3.637%2C5.202%2C3.636z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-plus:after,.ui-alt-icon .ui-icon-plus:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C5%209%2C5%209%2C0%205%2C0%205%2C5%200%2C5%200%2C9%205%2C9%205%2C14%209%2C14%209%2C9%2014%2C9%20%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-power:after,.ui-alt-icon .ui-icon-power:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M11.243%2C2.408c-0.392-0.401-1.024-0.401-1.415%2C0c-0.391%2C0.401-0.391%2C1.054%2C0%2C1.455C10.584%2C4.642%2C11%2C5.675%2C11%2C6.773%20s-0.416%2C2.133-1.172%2C2.91c-1.512%2C1.558-4.145%2C1.558-5.656%2C0C3.416%2C8.904%2C3%2C7.872%2C3%2C6.773C3%2C5.673%2C3.416%2C4.64%2C4.172%2C3.863%20c0.39-0.401%2C0.39-1.054%2C0-1.455c-0.391-0.401-1.024-0.401-1.415%2C0C1.624%2C3.574%2C1%2C5.125%2C1%2C6.773c0%2C1.647%2C0.624%2C3.199%2C1.757%2C4.365%20c1.134%2C1.166%2C2.64%2C1.809%2C4.243%2C1.809c1.604%2C0%2C3.109-0.645%2C4.243-1.811C12.376%2C9.975%2C13%2C8.423%2C13%2C6.773%20C13%2C5.125%2C12.376%2C3.574%2C11.243%2C2.408z%20M7%2C8.053c0.553%2C0%2C1-0.445%2C1-1v-6c0-0.553-0.447-1-1-1c-0.553%2C0-1%2C0.447-1%2C1v6%20C6%2C7.604%2C6.447%2C8.053%2C7%2C8.053z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-recycle:after,.ui-alt-icon .ui-icon-recycle:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M3%2C7h1L2%2C4L0%2C7h1c0%2C3.313%2C2.687%2C6%2C6%2C6c0.702%2C0%2C1.374-0.127%2C2-0.35v-2.205C8.41%2C10.789%2C7.732%2C11%2C7%2C11C4.791%2C11%2C3%2C9.209%2C3%2C7z%20%20M13%2C7c0-3.313-2.688-6-6-6C6.298%2C1%2C5.626%2C1.127%2C5%2C1.349v2.206C5.59%2C3.211%2C6.268%2C3%2C7%2C3c2.209%2C0%2C4%2C1.791%2C4%2C4h-1l2%2C3l2-3H13z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-refresh:after,.ui-alt-icon .ui-icon-refresh:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214.001px%22%20height%3D%2214.002px%22%20viewBox%3D%220%200%2014.001%2014.002%22%20style%3D%22enable-background%3Anew%200%200%2014.001%2014.002%3B%22%20%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M14.001%2C6.001v-6l-2.06%2C2.06c-0.423-0.424-0.897-0.809-1.44-1.122C7.153-0.994%2C2.872%2C0.153%2C0.939%2C3.501%20c-1.933%2C3.348-0.786%2C7.629%2C2.562%2C9.562c3.348%2C1.933%2C7.629%2C0.785%2C9.562-2.562l-1.732-1c-1.381%2C2.392-4.438%2C3.211-6.83%2C1.83%20s-3.211-4.438-1.83-6.83s4.438-3.211%2C6.83-1.83c0.389%2C0.225%2C0.718%2C0.506%2C1.02%2C0.81l-2.52%2C2.52H14.001z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-search:after,.ui-alt-icon .ui-icon-search:after,.ui-input-search:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M10.171%2C8.766c0.617-0.888%2C0.979-1.964%2C0.979-3.126c0-3.037-2.463-5.5-5.5-5.5s-5.5%2C2.463-5.5%2C5.5s2.463%2C5.5%2C5.5%2C5.5%20c1.152%2C0%2C2.223-0.355%2C3.104-0.962l3.684%2C3.683l1.414-1.414L10.171%2C8.766z%20M5.649%2C9.14c-1.933%2C0-3.5-1.567-3.5-3.5%20c0-1.933%2C1.567-3.5%2C3.5-3.5c1.933%2C0%2C3.5%2C1.567%2C3.5%2C3.5C9.149%2C7.572%2C7.582%2C9.14%2C5.649%2C9.14z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-shop:after,.ui-alt-icon .ui-icon-shop:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M10%2C4V3c0-1.657-1.343-3-3-3S4%2C1.343%2C4%2C3v1H1v10h12V4H10z%20M4.5%2C6C4.224%2C6%2C4%2C5.776%2C4%2C5.5S4.224%2C5%2C4.5%2C5S5%2C5.224%2C5%2C5.5%20S4.776%2C6%2C4.5%2C6z%20M5%2C3c0-1.104%2C0.896-2%2C2-2c1.104%2C0%2C2%2C0.896%2C2%2C2v1H5V3z%20M9.5%2C6C9.225%2C6%2C9%2C5.776%2C9%2C5.5S9.225%2C5%2C9.5%2C5S10%2C5.224%2C10%2C5.5%20S9.775%2C6%2C9.5%2C6z%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-star:after,.ui-alt-icon .ui-icon-star:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%2214%2C5%209%2C5%207%2C0%205%2C5%200%2C5%204%2C8%202.625%2C13%207%2C10%2011.375%2C13%2010%2C8%20%22%2F%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-tag:after,.ui-alt-icon .ui-icon-tag:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M5%2C0H0v5l9%2C9l5-5L5%2C0z%20M3%2C4C2.447%2C4%2C2%2C3.553%2C2%2C3s0.447-1%2C1-1s1%2C0.447%2C1%2C1S3.553%2C4%2C3%2C4z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-user:after,.ui-alt-icon .ui-icon-user:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M8.851%2C10.101c-0.18-0.399-0.2-0.763-0.153-1.104C9.383%2C8.49%2C9.738%2C7.621%2C9.891%2C6.465C10.493%2C6.355%2C10.5%2C5.967%2C10.5%2C5.5%20c0-0.437-0.008-0.804-0.502-0.94C9.999%2C4.539%2C10%2C4.521%2C10%2C4.5c0-2.103-1-4-2-4C8%2C0.5%2C7.5%2C0%2C6.5%2C0C5%2C0%2C4%2C1.877%2C4%2C4.5%20c0%2C0.021%2C0.001%2C0.039%2C0.002%2C0.06C3.508%2C4.696%2C3.5%2C5.063%2C3.5%2C5.5c0%2C0.467%2C0.007%2C0.855%2C0.609%2C0.965%20C4.262%2C7.621%2C4.617%2C8.49%2C5.303%2C8.997c0.047%2C0.341%2C0.026%2C0.704-0.153%2C1.104C1.503%2C10.503%2C0%2C12%2C0%2C12v2h14v-2%20C14%2C12%2C12.497%2C10.503%2C8.851%2C10.101z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E")}.ui-alt-icon.ui-icon-video:after,.ui-alt-icon .ui-icon-video:after{background-image:url("data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%20-2%2014%2014%22%20style%3D%22enable-background%3Anew%200%20-2%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20d%3D%22M8%2C0H2C0.896%2C0%2C0%2C0.896%2C0%2C2v6c0%2C1.104%2C0.896%2C2%2C2%2C2h6c1.104%2C0%2C2-0.896%2C2-2V5V2C10%2C0.896%2C9.104%2C0%2C8%2C0z%20M10%2C5l4%2C4V1L10%2C5z%22%2F%3E%3C%2Fsvg%3E")}html{font-size:100%}body,input,select,textarea,button,.ui-btn{font-size:1em;line-height:1.3;font-family:sans-serif}legend,.ui-input-text input,.ui-input-search input{color:inherit;text-shadow:inherit}.ui-mobile label,div.ui-controlgroup-label{font-weight:400;font-size:16px}.ui-field-contain{border-bottom-color:#828282;border-bottom-color:rgba(0,0,0,.15);border-bottom-width:1px;border-bottom-style:solid}.table-stroke thead th,.table-stripe thead th,.table-stripe tbody tr:last-child{border-bottom:1px solid #d6d6d6;border-bottom:1px solid rgba(0,0,0,.1)}.table-stroke tbody th,.table-stroke tbody td{border-bottom:1px solid #e6e6e6;border-bottom:1px solid rgba(0,0,0,.05)}.table-stripe.table-stroke tbody tr:last-child th,.table-stripe.table-stroke tbody tr:last-child td{border-bottom:0}.table-stripe tbody tr:nth-child(odd) td,.table-stripe tbody tr:nth-child(odd) th{background-color:#eee;background-color:rgba(0,0,0,.04)}.ui-btn,label.ui-btn{font-weight:700;border-width:1px;border-style:solid}.ui-btn{text-decoration:none!important}.ui-btn-active{cursor:pointer}.ui-corner-all{-webkit-border-radius:.3125em;border-radius:.3125em}.ui-btn-corner-all,.ui-btn.ui-corner-all,.ui-slider-track.ui-corner-all,.ui-flipswitch.ui-corner-all,.ui-li-count{-webkit-border-radius:.3125em;border-radius:.3125em}.ui-btn-icon-notext.ui-btn-corner-all,.ui-btn-icon-notext.ui-corner-all{-webkit-border-radius:1em;border-radius:1em}.ui-btn-corner-all,.ui-corner-all{-webkit-background-clip:padding;background-clip:padding-box}.ui-popup.ui-corner-all>.ui-popup-arrow-guide{left:.6em;right:.6em;top:.6em;bottom:.6em}.ui-shadow{-webkit-box-shadow:0 1px 3px rgba(0,0,0,.15);-moz-box-shadow:0 1px 3px rgba(0,0,0,.15);box-shadow:0 1px 3px rgba(0,0,0,.15)}.ui-shadow-inset{-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.2);-moz-box-shadow:inset 0 1px 3px rgba(0,0,0,.2);box-shadow:inset 0 1px 3px rgba(0,0,0,.2)}.ui-overlay-shadow{-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);-moz-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-btn-icon-left:after,.ui-btn-icon-right:after,.ui-btn-icon-top:after,.ui-btn-icon-bottom:after,.ui-btn-icon-notext:after{background-color:#666;background-color:rgba(0,0,0,.3);background-position:center center;background-repeat:no-repeat;-webkit-border-radius:1em;border-radius:1em}.ui-alt-icon.ui-btn:after,.ui-alt-icon .ui-btn:after,html .ui-alt-icon.ui-checkbox-off:after,html .ui-alt-icon.ui-radio-off:after,html .ui-alt-icon .ui-checkbox-off:after,html .ui-alt-icon .ui-radio-off:after{background-color:#666;background-color:rgba(0,0,0,.15)}.ui-nodisc-icon.ui-btn:after,.ui-nodisc-icon .ui-btn:after{background-color:transparent}.ui-shadow-icon.ui-btn:after,.ui-shadow-icon .ui-btn:after{-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.ui-btn.ui-checkbox-off:after,.ui-btn.ui-checkbox-on:after,.ui-btn.ui-radio-off:after,.ui-btn.ui-radio-on:after{display:block;width:18px;height:18px;margin:-9px 2px 0 2px}.ui-checkbox-off:after,.ui-btn.ui-radio-off:after{filter:Alpha(Opacity=30);opacity:.3}.ui-btn.ui-checkbox-off:after,.ui-btn.ui-checkbox-on:after{-webkit-border-radius:.1875em;border-radius:.1875em}.ui-btn.ui-checkbox-off:after{background-color:#666;background-color:rgba(0,0,0,.3)}.ui-radio .ui-btn.ui-radio-on:after{background-image:none;background-color:#fff;width:8px;height:8px;border-width:5px;border-style:solid}.ui-alt-icon.ui-btn.ui-radio-on:after,.ui-alt-icon .ui-btn.ui-radio-on:after{background-color:#000}.ui-icon-loading{background:url(images/ajax-loader.gif);background-size:2.875em 2.875em}.ui-bar-a,.ui-page-theme-a .ui-bar-inherit,html .ui-bar-a .ui-bar-inherit,html .ui-body-a .ui-bar-inherit,html body .ui-group-theme-a .ui-bar-inherit{background-color:#e9e9e9;border-color:#ddd;color:#333;text-shadow:0 1px 0 #eee;font-weight:700}.ui-bar-a{border-width:1px;border-style:solid}.ui-overlay-a,.ui-page-theme-a,.ui-page-theme-a .ui-panel-wrapper{background-color:#f9f9f9;border-color:#bbb;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-body-a,.ui-page-theme-a .ui-body-inherit,html .ui-bar-a .ui-body-inherit,html .ui-body-a .ui-body-inherit,html body .ui-group-theme-a .ui-body-inherit,html .ui-panel-page-container-a{background-color:#fff;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-body-a{border-width:1px;border-style:solid}.ui-page-theme-a a,html .ui-bar-a a,html .ui-body-a a,html body .ui-group-theme-a a{color:#38c;font-weight:700}.ui-page-theme-a a:visited,html .ui-bar-a a:visited,html .ui-body-a a:visited,html body .ui-group-theme-a a:visited{color:#38c}.ui-page-theme-a a:hover,html .ui-bar-a a:hover,html .ui-body-a a:hover,html body .ui-group-theme-a a:hover{color:#059}.ui-page-theme-a a:active,html .ui-bar-a a:active,html .ui-body-a a:active,html body .ui-group-theme-a a:active{color:#059}.ui-page-theme-a .ui-btn,html .ui-bar-a .ui-btn,html .ui-body-a .ui-btn,html body .ui-group-theme-a .ui-btn,html head+body .ui-btn.ui-btn-a,.ui-page-theme-a .ui-btn:visited,html .ui-bar-a .ui-btn:visited,html .ui-body-a .ui-btn:visited,html body .ui-group-theme-a .ui-btn:visited,html head+body .ui-btn.ui-btn-a:visited{background-color:#f6f6f6;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-page-theme-a .ui-btn:hover,html .ui-bar-a .ui-btn:hover,html .ui-body-a .ui-btn:hover,html body .ui-group-theme-a .ui-btn:hover,html head+body .ui-btn.ui-btn-a:hover{background-color:#ededed;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-page-theme-a .ui-btn:active,html .ui-bar-a .ui-btn:active,html .ui-body-a .ui-btn:active,html body .ui-group-theme-a .ui-btn:active,html head+body .ui-btn.ui-btn-a:active{background-color:#e8e8e8;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-page-theme-a .ui-btn.ui-btn-active,html .ui-bar-a .ui-btn.ui-btn-active,html .ui-body-a .ui-btn.ui-btn-active,html body .ui-group-theme-a .ui-btn.ui-btn-active,html head+body .ui-btn.ui-btn-a.ui-btn-active,.ui-page-theme-a .ui-checkbox-on:after,html .ui-bar-a .ui-checkbox-on:after,html .ui-body-a .ui-checkbox-on:after,html body .ui-group-theme-a .ui-checkbox-on:after,.ui-btn.ui-checkbox-on.ui-btn-a:after,.ui-page-theme-a .ui-flipswitch-active,html .ui-bar-a .ui-flipswitch-active,html .ui-body-a .ui-flipswitch-active,html body .ui-group-theme-a .ui-flipswitch-active,html body .ui-flipswitch.ui-bar-a.ui-flipswitch-active,.ui-page-theme-a .ui-slider-track .ui-btn-active,html .ui-bar-a .ui-slider-track .ui-btn-active,html .ui-body-a .ui-slider-track .ui-btn-active,html body .ui-group-theme-a .ui-slider-track .ui-btn-active,html body div.ui-slider-track.ui-body-a .ui-btn-active{background-color:#38c;border-color:#38c;color:#fff;text-shadow:0 1px 0 #059}.ui-page-theme-a .ui-radio-on:after,html .ui-bar-a .ui-radio-on:after,html .ui-body-a .ui-radio-on:after,html body .ui-group-theme-a .ui-radio-on:after,.ui-btn.ui-radio-on.ui-btn-a:after{border-color:#38c}.ui-page-theme-a .ui-btn:focus,html .ui-bar-a .ui-btn:focus,html .ui-body-a .ui-btn:focus,html body .ui-group-theme-a .ui-btn:focus,html head+body .ui-btn.ui-btn-a:focus,.ui-page-theme-a .ui-focus,html .ui-bar-a .ui-focus,html .ui-body-a .ui-focus,html body .ui-group-theme-a .ui-focus,html head+body .ui-btn-a.ui-focus,html head+body .ui-body-a.ui-focus{-webkit-box-shadow:0 0 12px #38c;-moz-box-shadow:0 0 12px #38c;box-shadow:0 0 12px #38c}.ui-bar-b,.ui-page-theme-b .ui-bar-inherit,html .ui-bar-b .ui-bar-inherit,html .ui-body-b .ui-bar-inherit,html body .ui-group-theme-b .ui-bar-inherit{background-color:#1d1d1d;border-color:#1b1b1b;color:#fff;text-shadow:0 1px 0 #111;font-weight:700}.ui-bar-b{border-width:1px;border-style:solid}.ui-overlay-b,.ui-page-theme-b,.ui-page-theme-b .ui-panel-wrapper{background-color:#252525;border-color:#454545;color:#fff;text-shadow:0 1px 0 #111}.ui-body-b,.ui-page-theme-b .ui-body-inherit,html .ui-bar-b .ui-body-inherit,html .ui-body-b .ui-body-inherit,html body .ui-group-theme-b .ui-body-inherit,html .ui-panel-page-container-b{background-color:#2a2a2a;border-color:#1d1d1d;color:#fff;text-shadow:0 1px 0 #111}.ui-body-b{border-width:1px;border-style:solid}.ui-page-theme-b a,html .ui-bar-b a,html .ui-body-b a,html body .ui-group-theme-b a{color:#2ad;font-weight:700}.ui-page-theme-b a:visited,html .ui-bar-b a:visited,html .ui-body-b a:visited,html body .ui-group-theme-b a:visited{color:#2ad}.ui-page-theme-b a:hover,html .ui-bar-b a:hover,html .ui-body-b a:hover,html body .ui-group-theme-b a:hover{color:#08b}.ui-page-theme-b a:active,html .ui-bar-b a:active,html .ui-body-b a:active,html body .ui-group-theme-b a:active{color:#08b}.ui-page-theme-b .ui-btn,html .ui-bar-b .ui-btn,html .ui-body-b .ui-btn,html body .ui-group-theme-b .ui-btn,html head+body .ui-btn.ui-btn-b,.ui-page-theme-b .ui-btn:visited,html .ui-bar-b .ui-btn:visited,html .ui-body-b .ui-btn:visited,html body .ui-group-theme-b .ui-btn:visited,html head+body .ui-btn.ui-btn-b:visited{background-color:#333;border-color:#1f1f1f;color:#fff;text-shadow:0 1px 0 #111}.ui-page-theme-b .ui-btn:hover,html .ui-bar-b .ui-btn:hover,html .ui-body-b .ui-btn:hover,html body .ui-group-theme-b .ui-btn:hover,html head+body .ui-btn.ui-btn-b:hover{background-color:#373737;border-color:#1f1f1f;color:#fff;text-shadow:0 1px 0 #111}.ui-page-theme-b .ui-btn:active,html .ui-bar-b .ui-btn:active,html .ui-body-b .ui-btn:active,html body .ui-group-theme-b .ui-btn:active,html head+body .ui-btn.ui-btn-b:active{background-color:#404040;border-color:#1f1f1f;color:#fff;text-shadow:0 1px 0 #111}.ui-page-theme-b .ui-btn.ui-btn-active,html .ui-bar-b .ui-btn.ui-btn-active,html .ui-body-b .ui-btn.ui-btn-active,html body .ui-group-theme-b .ui-btn.ui-btn-active,html head+body .ui-btn.ui-btn-b.ui-btn-active,.ui-page-theme-b .ui-checkbox-on:after,html .ui-bar-b .ui-checkbox-on:after,html .ui-body-b .ui-checkbox-on:after,html body .ui-group-theme-b .ui-checkbox-on:after,.ui-btn.ui-checkbox-on.ui-btn-b:after,.ui-page-theme-b .ui-flipswitch-active,html .ui-bar-b .ui-flipswitch-active,html .ui-body-b .ui-flipswitch-active,html body .ui-group-theme-b .ui-flipswitch-active,html body .ui-flipswitch.ui-bar-b.ui-flipswitch-active,.ui-page-theme-b .ui-slider-track .ui-btn-active,html .ui-bar-b .ui-slider-track .ui-btn-active,html .ui-body-b .ui-slider-track .ui-btn-active,html body .ui-group-theme-b .ui-slider-track .ui-btn-active,html body div.ui-slider-track.ui-body-b .ui-btn-active{background-color:#2ad;border-color:#2ad;color:#fff;text-shadow:0 1px 0 #08b}.ui-page-theme-b .ui-radio-on:after,html .ui-bar-b .ui-radio-on:after,html .ui-body-b .ui-radio-on:after,html body .ui-group-theme-b .ui-radio-on:after,.ui-btn.ui-radio-on.ui-btn-b:after{border-color:#2ad}.ui-page-theme-b .ui-btn:focus,html .ui-bar-b .ui-btn:focus,html .ui-body-b .ui-btn:focus,html body .ui-group-theme-b .ui-btn:focus,html head+body .ui-btn.ui-btn-b:focus,.ui-page-theme-b .ui-focus,html .ui-bar-b .ui-focus,html .ui-body-b .ui-focus,html body .ui-group-theme-b .ui-focus,html head+body .ui-btn-b.ui-focus,html head+body .ui-body-b.ui-focus{-webkit-box-shadow:0 0 12px #2ad;-moz-box-shadow:0 0 12px #2ad;box-shadow:0 0 12px #2ad}.ui-disabled,.ui-state-disabled,button[disabled],.ui-select .ui-btn.ui-state-disabled{filter:Alpha(Opacity=30);opacity:.3;cursor:default!important;pointer-events:none}.ui-btn:focus,.ui-btn.ui-focus{outline:0}.ui-noboxshadow .ui-shadow,.ui-noboxshadow .ui-shadow-inset,.ui-noboxshadow .ui-overlay-shadow,.ui-noboxshadow .ui-shadow-icon.ui-btn:after,.ui-noboxshadow .ui-shadow-icon .ui-btn:after,.ui-noboxshadow .ui-focus,.ui-noboxshadow .ui-btn:focus,.ui-noboxshadow input:focus,.ui-noboxshadow .ui-panel{-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important}.ui-noboxshadow .ui-btn:focus,.ui-noboxshadow .ui-focus{outline-width:1px;outline-style:auto}.ui-mobile,.ui-mobile body{height:99.9%}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile fieldset{border-width:0}.ui-mobile fieldset{min-width:0}@-moz-document url-prefix(){.ui-mobile fieldset{display:table-column;vertical-align:middle}}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:100%;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-page{outline:0}.ui-mobile .ui-page-active{display:block;overflow:visible;overflow-x:hidden}@media screen and (orientation:portrait){.ui-mobile .ui-page{min-height:420px}}@media screen and (orientation:landscape){.ui-mobile .ui-page{min-height:300px}}.ui-mobile-rendering>*{visibility:hidden}.ui-nojs{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-loading .ui-loader{display:block}.ui-loader{display:none;z-index:9999999;position:fixed;top:50%;left:50%;border:0}.ui-loader-default{background:0;filter:Alpha(Opacity=18);opacity:.18;width:2.875em;height:2.875em;margin-left:-1.4375em;margin-top:-1.4375em}.ui-loader-verbose{width:12.5em;filter:Alpha(Opacity=88);opacity:.88;box-shadow:0 1px 1px -1px #fff;height:auto;margin-left:-6.875em;margin-top:-2.6875em;padding:.625em}.ui-loader-default h1{font-size:0;width:0;height:0;overflow:hidden}.ui-loader-verbose h1{font-size:1em;margin:0;text-align:center}.ui-loader .ui-icon-loading{background-color:#000;display:block;margin:0;width:2.75em;height:2.75em;padding:.0625em;-webkit-border-radius:2.25em;border-radius:2.25em}.ui-loader-verbose .ui-icon-loading{margin:0 auto .625em;filter:Alpha(Opacity=75);opacity:.75}.ui-loader-textonly{padding:.9375em;margin-left:-7.1875em}.ui-loader-textonly .ui-icon-loading{display:none}.ui-loader-fakefix{position:absolute}.ui-bar,.ui-body{position:relative;padding:.4em 1em;overflow:hidden;display:block;clear:both}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:1em;display:inline-block}.ui-header,.ui-footer{border-width:1px 0;border-style:solid;position:relative}.ui-header:empty,.ui-footer:empty{min-height:2.6875em}.ui-header .ui-title,.ui-footer .ui-title{font-size:1em;min-height:1.1em;text-align:center;display:block;margin:0 30%;padding:.7em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-footer .ui-title{margin:0 1em}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:1em}.ui-corner-all>.ui-header:first-child,.ui-corner-all>.ui-content:first-child,.ui-corner-all>.ui-footer:first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-corner-all>.ui-header:last-child,.ui-corner-all>.ui-content:last-child,.ui-corner-all>.ui-footer:last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-btn{font-size:16px;margin:.5em 0;padding:.7em 1em;display:block;position:relative;text-align:center;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui-btn-icon-notext,.ui-header button.ui-btn.ui-btn-icon-notext,.ui-footer button.ui-btn.ui-btn-icon-notext{padding:0;width:1.75em;height:1.75em;text-indent:-9999px;white-space:nowrap!important}.ui-mini{font-size:12.5px}.ui-mini .ui-btn{font-size:inherit}.ui-header .ui-btn,.ui-footer .ui-btn{font-size:12.5px;display:inline-block;vertical-align:middle}.ui-header .ui-controlgroup .ui-btn-icon-notext,.ui-footer .ui-controlgroup .ui-btn-icon-notext{font-size:12.5px}.ui-header .ui-btn-left,.ui-header .ui-btn-right{font-size:12.5px}.ui-mini.ui-btn-icon-notext,.ui-mini .ui-btn-icon-notext,.ui-header .ui-btn-icon-notext,.ui-footer .ui-btn-icon-notext{font-size:16px;padding:0}.ui-btn-inline{display:inline-block;vertical-align:middle;margin-right:.625em}.ui-btn-icon-left{padding-left:2.5em}.ui-btn-icon-right{padding-right:2.5em}.ui-btn-icon-top{padding-top:2.5em}.ui-btn-icon-bottom{padding-bottom:2.5em}.ui-header .ui-btn-icon-top,.ui-footer .ui-btn-icon-top,.ui-header .ui-btn-icon-bottom,.ui-footer .ui-btn-icon-bottom{padding-left:.3125em;padding-right:.3125em}.ui-btn-icon-left:after,.ui-btn-icon-right:after,.ui-btn-icon-top:after,.ui-btn-icon-bottom:after,.ui-btn-icon-notext:after{content:"";position:absolute;display:block;width:22px;height:22px}.ui-btn-icon-notext:after,.ui-btn-icon-left:after,.ui-btn-icon-right:after{top:50%;margin-top:-11px}.ui-btn-icon-left:after{left:.5625em}.ui-btn-icon-right:after{right:.5625em}.ui-mini.ui-btn-icon-left:after,.ui-mini .ui-btn-icon-left:after,.ui-header .ui-btn-icon-left:after,.ui-footer .ui-btn-icon-left:after{left:.37em}.ui-mini.ui-btn-icon-right:after,.ui-mini .ui-btn-icon-right:after,.ui-header .ui-btn-icon-right:after,.ui-footer .ui-btn-icon-right:after{right:.37em}.ui-btn-icon-notext:after,.ui-btn-icon-top:after,.ui-btn-icon-bottom:after{left:50%;margin-left:-11px}.ui-btn-icon-top:after{top:.5625em}.ui-btn-icon-bottom:after{top:auto;bottom:.5625em}.ui-header .ui-btn-left,.ui-header .ui-btn-right,.ui-btn-left>[class*=ui-],.ui-btn-right>[class*=ui-]{margin:0}.ui-btn-left,.ui-btn-right{position:absolute;top:.24em}.ui-btn-left{left:.4em}.ui-btn-right{right:.4em}.ui-btn-icon-notext.ui-btn-left{top:.3125em;left:.3125em}.ui-btn-icon-notext.ui-btn-right{top:.3125em;right:.3125em}button.ui-btn,.ui-controlgroup-controls button.ui-btn-icon-notext{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;width:100%}button.ui-btn-inline,.ui-header button.ui-btn,.ui-footer button.ui-btn{width:auto}button.ui-btn::-moz-focus-inner{border:0}button.ui-btn-icon-notext,.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;width:1.75em}.ui-mobile label,.ui-controlgroup-label{display:block;margin:0 0 .4em}.ui-hide-label>label,.ui-hide-label .ui-controlgroup-label,.ui-hide-label .ui-rangeslider label,.ui-hidden-accessible{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-screen-hidden{display:none!important}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-page-pre-in{opacity:0}.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.out{-webkit-animation-timing-function:ease-in;-webkit-animation-duration:225ms;-moz-animation-timing-function:ease-in;-moz-animation-duration:225ms;animation-timing-function:ease-in;animation-duration:225ms}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-moz-keyframes fadein{from{opacity:0}to{opacity:1}}@keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{opacity:1}to{opacity:0}}@-moz-keyframes fadeout{from{opacity:1}to{opacity:0}}@keyframes fadeout{from{opacity:1}to{opacity:0}}.fade.out{opacity:0;-webkit-animation-duration:125ms;-webkit-animation-name:fadeout;-moz-animation-duration:125ms;-moz-animation-name:fadeout;animation-duration:125ms;animation-name:fadeout}.fade.in{opacity:1;-webkit-animation-duration:225ms;-webkit-animation-name:fadein;-moz-animation-duration:225ms;-moz-animation-name:fadein;animation-duration:225ms;animation-name:fadein}.pop{-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);-webkit-animation-name:popin;-webkit-animation-duration:350ms;-moz-transform:scale(1);-moz-animation-name:popin;-moz-animation-duration:350ms;transform:scale(1);animation-name:popin;animation-duration:350ms;opacity:1}.pop.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms;opacity:0}.pop.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;animation-name:fadein}.pop.out.reverse{-webkit-transform:scale(.8);-webkit-animation-name:popout;-moz-transform:scale(.8);-moz-animation-name:popout;transform:scale(.8);animation-name:popout}@-webkit-keyframes popin{from{-webkit-transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes popin{from{-moz-transform:scale(.8);opacity:0}to{-moz-transform:scale(1);opacity:1}}@keyframes popin{from{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.8);opacity:0}}@-moz-keyframes popout{from{-moz-transform:scale(1);opacity:1}to{-moz-transform:scale(.8);opacity:0}}@keyframes popout{from{transform:scale(1);opacity:1}to{transform:scale(.8);opacity:0}}@-webkit-keyframes slideinfromright{from{-webkit-transform:translate3d(100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromright{from{-moz-transform:translateX(100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromright{from{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translate3d(-100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromleft{from{-moz-transform:translateX(-100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromleft{from{transform:translateX(-100%)}to{transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-100%,0,0)}}@-moz-keyframes slideouttoleft{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(-100%)}}@keyframes slideouttoleft{from{transform:translateX(0)}to{transform:translateX(-100%)}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(100%,0,0)}}@-moz-keyframes slideouttoright{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(100%)}}@keyframes slideouttoright{from{transform:translateX(0)}to{transform:translateX(100%)}}.slide.out,.slide.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.slide.out{-webkit-transform:translate3d(-100%,0,0);-webkit-animation-name:slideouttoleft;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;transform:translateX(-100%);animation-name:slideouttoleft}.slide.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromright;-moz-transform:translateX(0);-moz-animation-name:slideinfromright;transform:translateX(0);animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:slideouttoright;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;transform:translateX(100%);animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromleft;-moz-transform:translateX(0);-moz-animation-name:slideinfromleft;transform:translateX(0);animation-name:slideinfromleft}.slidefade.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft;-webkit-animation-duration:225ms;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;-moz-animation-duration:225ms;transform:translateX(-100%);animation-name:slideouttoleft;animation-duration:225ms}.slidefade.in{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidefade.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright;-webkit-animation-duration:200ms;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;-moz-animation-duration:200ms;transform:translateX(100%);animation-name:slideouttoright;animation-duration:200ms}.slidefade.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidedown.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfromtop;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfromtop;animation-duration:250ms}.slidedown.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slidedown.out.reverse{-webkit-transform:translateY(-100%);-webkit-animation-name:slideouttotop;-webkit-animation-duration:200ms;-moz-transform:translateY(-100%);-moz-animation-name:slideouttotop;-moz-animation-duration:200ms;transform:translateY(-100%);animation-name:slideouttotop;animation-duration:200ms}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfromtop{from{-moz-transform:translateY(-100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfromtop{from{transform:translateY(-100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-moz-keyframes slideouttotop{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(-100%)}}@keyframes slideouttotop{from{transform:translateY(0)}to{transform:translateY(-100%)}}.slideup.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfrombottom;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfrombottom;animation-duration:250ms}.slideup.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slideup.out.reverse{-webkit-transform:translateY(100%);-webkit-animation-name:slideouttobottom;-webkit-animation-duration:200ms;-moz-transform:translateY(100%);-moz-animation-name:slideouttobottom;-moz-animation-duration:200ms;transform:translateY(100%);animation-name:slideouttobottom;animation-duration:200ms}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfrombottom{from{-moz-transform:translateY(100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfrombottom{from{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-moz-keyframes slideouttobottom{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(100%)}}@keyframes slideouttobottom{from{transform:translateY(0)}to{transform:translateY(100%)}}.viewport-flip{-webkit-perspective:1000;-moz-perspective:1000;perspective:1000;position:absolute}.flip{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-moz-backface-visibility:hidden;-moz-transform:translateX(0);backface-visibility:hidden;transform:translateX(0)}.flip.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:175ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:175ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:175ms}.flip.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:225ms;-moz-animation-name:flipintoright;-moz-animation-duration:225ms;animation-name:flipintoright;animation-duration:225ms}.flip.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.flip.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.viewport-turn{-webkit-perspective:200px;-moz-perspective:200px;-ms-perspective:200px;perspective:200px;position:absolute}.turn{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-webkit-transform-origin:0;-moz-backface-visibility:hidden;-moz-transform:translateX(0);-moz-transform-origin:0;backface-visibility:hidden;transform:translateX(0);transform-origin:0}.turn.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:125ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:125ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:125ms}.turn.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:250ms;-moz-animation-name:flipintoright;-moz-animation-duration:250ms;animation-name:flipintoright;animation-duration:250ms}.turn.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.turn.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.flow{-webkit-transform-origin:50% 30%;-webkit-box-shadow:0 0 20px rgba(0,0,0,.4);-moz-transform-origin:50% 30%;-moz-box-shadow:0 0 20px rgba(0,0,0,.4);transform-origin:50% 30%;box-shadow:0 0 20px rgba(0,0,0,.4)}.ui-dialog.flow{-webkit-transform-origin:none;-webkit-box-shadow:none;-moz-transform-origin:none;-moz-box-shadow:none;transform-origin:none;box-shadow:none}.flow.out{-webkit-transform:translateX(-100%) scale(.7);-webkit-animation-name:flowouttoleft;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(-100%) scale(.7);-moz-animation-name:flowouttoleft;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(-100%) scale(.7);animation-name:flowouttoleft;animation-timing-function:ease;animation-duration:350ms}.flow.in{-webkit-transform:translateX(0) scale(1);-webkit-animation-name:flowinfromright;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(0) scale(1);-moz-animation-name:flowinfromright;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(0) scale(1);animation-name:flowinfromright;animation-timing-function:ease;animation-duration:350ms}.flow.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:flowouttoright;-moz-transform:translateX(100%);-moz-animation-name:flowouttoright;transform:translateX(100%);animation-name:flowouttoright}.flow.in.reverse{-webkit-animation-name:flowinfromleft;-moz-animation-name:flowinfromleft;animation-name:flowinfromleft}@-webkit-keyframes flowouttoleft{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(-100%) scale(.7)}}@-moz-keyframes flowouttoleft{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(-100%) scale(.7)}}@keyframes flowouttoleft{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(-100%) scale(.7)}}@-webkit-keyframes flowouttoright{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(100%) scale(.7)}}@-moz-keyframes flowouttoright{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(100%) scale(.7)}}@keyframes flowouttoright{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(100%) scale(.7)}}@-webkit-keyframes flowinfromleft{0%{-webkit-transform:translateX(-100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromleft{0%{-moz-transform:translateX(-100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromleft{0%{transform:translateX(-100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}@-webkit-keyframes flowinfromright{0%{-webkit-transform:translateX(100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromright{0%{-moz-transform:translateX(100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromright{0%{transform:translateX(100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}.ui-field-contain,.ui-mobile fieldset.ui-field-contain{display:block;position:relative;overflow:visible;clear:both;padding:.8em 0}.ui-field-contain>label~[class*=ui-],.ui-field-contain .ui-controlgroup-controls{margin:0}.ui-field-contain:last-child{border-bottom-width:0}@media (min-width:28em){.ui-field-contain,.ui-mobile fieldset.ui-field-contain{padding:0;margin:1em 0;border-bottom-width:0}.ui-field-contain:before,.ui-field-contain:after{content:"";display:table}.ui-field-contain:after{clear:both}.ui-field-contain>label,.ui-field-contain .ui-controlgroup-label,.ui-field-contain>.ui-rangeslider>label{float:left;width:20%;margin:.5em 2% 0 0}.ui-popup .ui-field-contain>label,.ui-popup .ui-field-contain .ui-controlgroup-label,.ui-popup .ui-field-contain>.ui-rangeslider>label{float:none;width:auto;margin:0 0 .4em}.ui-field-contain>label~[class*=ui-],.ui-field-contain .ui-controlgroup-controls{float:left;width:78%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-hide-label>label~[class*=ui-],.ui-hide-label .ui-controlgroup-controls,.ui-popup .ui-field-contain>label~[class*=ui-],.ui-popup .ui-field-contain .ui-controlgroup-controls{float:none;width:100%}.ui-field-contain>label~.ui-btn-inline{width:auto;margin-right:.625em}.ui-field-contain>label~.ui-btn-inline.ui-btn-icon-notext{width:1.75em}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d,.ui-grid-solo{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;min-height:1px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-block-a{clear:left}ul.ui-grid-a,ul.ui-grid-b,ul.ui-grid-c,ul.ui-grid-d,ul.ui-grid-solo,li.ui-block-a,li.ui-block-b,li.ui-block-c,li.ui-block-d,li.ui-block-e{margin-left:0;margin-right:0;padding:0;list-style:none}[class*=ui-block-]>button.ui-btn{margin-right:0;margin-left:0}[class*=ui-block-]>.ui-btn,[class*=ui-block-]>.ui-select,[class*=ui-block-]>.ui-checkbox,[class*=ui-block-]>.ui-radio,[class*=ui-block-]>button.ui-btn-inline,[class*=ui-block-]>button.ui-btn-icon-notext,.ui-header [class*=ui-block-]>button.ui-btn,.ui-footer [class*=ui-block-]>button.ui-btn{margin-right:.3125em;margin-left:.3125em}.ui-grid-a>.ui-block-a,.ui-grid-a>.ui-block-b{width:50%}.ui-grid-b>.ui-block-a,.ui-grid-b>.ui-block-b,.ui-grid-b>.ui-block-c{width:33.333%}.ui-grid-c>.ui-block-a,.ui-grid-c>.ui-block-b,.ui-grid-c>.ui-block-c,.ui-grid-c>.ui-block-d{width:25%}.ui-grid-d>.ui-block-a,.ui-grid-d>.ui-block-b,.ui-grid-d>.ui-block-c,.ui-grid-d>.ui-block-d,.ui-grid-d>.ui-block-e{width:20%}.ui-grid-solo>.ui-block-a{width:100%;float:none}@media (max-width:35em){.ui-responsive>.ui-block-a,.ui-responsive>.ui-block-b,.ui-responsive>.ui-block-c,.ui-responsive>.ui-block-d,.ui-responsive>.ui-block-e{width:100%;float:none}}.ui-header-fixed,.ui-footer-fixed{left:0;right:0;width:100%;position:fixed;z-index:1000}.ui-header-fixed{top:-1px;padding-top:1px}.ui-header-fixed.ui-fixed-hidden{top:0;padding-top:0}.ui-header-fixed .ui-btn-left,.ui-header-fixed .ui-btn-right{margin-top:1px}.ui-header-fixed.ui-fixed-hidden .ui-btn-left,.ui-header-fixed.ui-fixed-hidden .ui-btn-right{margin-top:0}.ui-footer-fixed{bottom:-1px;padding-bottom:1px}.ui-footer-fixed.ui-fixed-hidden{bottom:0;padding-bottom:0}.ui-header-fullscreen,.ui-footer-fullscreen{filter:Alpha(Opacity=90);opacity:.9}.ui-page-header-fixed{padding-top:2.8125em}.ui-page-footer-fixed{padding-bottom:2.8125em}.ui-page-header-fullscreen>.ui-content,.ui-page-footer-fullscreen>.ui-content{padding:0}.ui-fixed-hidden{position:absolute}.ui-footer-fixed.ui-fixed-hidden{display:none}.ui-page .ui-footer-fixed.ui-fixed-hidden{display:block}.ui-page-header-fullscreen .ui-fixed-hidden,.ui-page-footer-fullscreen .ui-fixed-hidden{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-header-fixed .ui-btn,.ui-footer-fixed .ui-btn{z-index:10}.ui-android-2x-fixed .ui-li-has-thumb{-webkit-transform:translate3d(0,0,0)}.ui-navbar{max-width:100%}.ui-navbar ul:before,.ui-navbar ul:after{content:"";display:table}.ui-navbar ul:after{clear:both}.ui-navbar ul{list-style:none;margin:0;padding:0;position:relative;display:block;border:0;max-width:100%;overflow:visible}.ui-navbar li .ui-btn{font-size:12.5px;display:block;margin:0;border-right-width:0}.ui-header .ui-navbar li button.ui-btn,.ui-footer .ui-navbar li button.ui-btn{margin:0;width:100%}.ui-navbar .ui-btn:focus{z-index:1}.ui-navbar li:last-child .ui-btn{margin-right:-4px}.ui-navbar li:last-child .ui-btn:after{margin-right:4px}.ui-content .ui-navbar li:last-child .ui-btn,.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn{border-right-width:1px;margin-right:0}.ui-content .ui-navbar li:last-child .ui-btn:after,.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn:after{margin-right:0}.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn{border-right-width:1px;margin-right:-1px}.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn:after{margin-right:1px}.ui-navbar .ui-grid-duo .ui-btn{border-top-width:0}.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn{border-top-width:1px}.ui-header .ui-navbar .ui-btn,.ui-footer .ui-navbar .ui-btn{border-top-width:0;border-bottom-width:0}.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn{border-top-width:0}.ui-header .ui-title~.ui-navbar .ui-btn,.ui-footer .ui-title~.ui-navbar .ui-btn,.ui-header .ui-navbar .ui-grid-duo .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-btn,.ui-header .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-footer .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-header .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn,.ui-footer .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn{border-top-width:1px}.ui-input-btn input{position:absolute;top:0;left:0;width:100%;height:100%;padding:0;border:0;outline:0;-webkit-border-radius:inherit;border-radius:inherit;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=0);opacity:.1;font-size:1px;text-indent:-9999px;z-index:2}.ui-input-btn.ui-state-disabled input{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-collapsible{margin:0 -1em}.ui-collapsible-inset,.ui-collapsible-set{margin:.5em 0}.ui-collapsible-heading{display:block;margin:0;padding:0;position:relative}.ui-collapsible-heading .ui-btn{text-align:left;margin:0;border-left-width:0;border-right-width:0}.ui-collapsible-heading .ui-btn-icon-top,.ui-collapsible-heading .ui-btn-icon-bottom{text-align:center}.ui-collapsible-inset .ui-collapsible-heading .ui-btn{border-right-width:1px;border-left-width:1px}.ui-collapsible-collapsed+.ui-collapsible:not(.ui-collapsible-inset)>.ui-collapsible-heading .ui-btn{border-top-width:0}.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:1px}.ui-collapsible-heading-status{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-collapsible-content{display:block;margin:0;padding:.5em 1em}.ui-collapsible-themed-content .ui-collapsible-content{border-left-width:0;border-right-width:0;border-top-width:0;border-bottom-width:1px;border-style:solid}.ui-collapsible-inset.ui-collapsible-themed-content .ui-collapsible-content{border-left-width:1px;border-right-width:1px}.ui-collapsible-inset .ui-collapsible-content{margin:0}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set>.ui-collapsible.ui-corner-all{-webkit-border-radius:0;border-radius:0}.ui-collapsible-heading,.ui-collapsible-heading>.ui-btn{-webkit-border-radius:inherit;border-radius:inherit}.ui-collapsible-set .ui-collapsible.ui-first-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-collapsible-content,.ui-collapsible-set .ui-collapsible.ui-last-child{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-collapsible-themed-content:not(.ui-collapsible-collapsed)>.ui-collapsible-heading{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui-collapsible-set .ui-collapsible{margin:-1px -1em 0}.ui-collapsible-set .ui-collapsible-inset{margin:-1px 0 0}.ui-collapsible-set .ui-collapsible.ui-first-child{margin-top:0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0}.ui-field-contain .ui-controlgroup,.ui-field-contain fieldset.ui-controlgroup{margin:0}.ui-mini .ui-controlgroup-label{font-size:16px}.ui-controlgroup.ui-mini .ui-btn-icon-notext,.ui-controlgroup .ui-mini.ui-btn-icon-notext{font-size:inherit}.ui-controlgroup-controls .ui-btn,.ui-controlgroup-controls .ui-checkbox,.ui-controlgroup-controls .ui-radio,.ui-controlgroup-controls .ui-select{margin:0}.ui-controlgroup-controls .ui-btn:focus,.ui-controlgroup-controls .ui-btn.ui-focus{z-index:1}.ui-controlgroup-controls li{list-style:none}.ui-controlgroup-horizontal .ui-controlgroup-controls{display:inline-block;vertical-align:middle}.ui-controlgroup-horizontal .ui-controlgroup-controls:before,.ui-controlgroup-horizontal .ui-controlgroup-controls:after{content:"";display:table}.ui-controlgroup-horizontal .ui-controlgroup-controls:after{clear:both}.ui-controlgroup-horizontal .ui-controlgroup-controls>.ui-btn,.ui-controlgroup-horizontal .ui-controlgroup-controls li>.ui-btn,.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-checkbox,.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-radio,.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-select{float:left;clear:none}.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn,.ui-controlgroup-controls .ui-btn-icon-notext{width:auto}.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn-icon-notext,.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn-icon-notext{width:1.5em}.ui-controlgroup-controls .ui-btn-icon-notext{height:auto;padding:.7em 1em}.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn{border-bottom-width:0}.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn.ui-last-child{border-bottom-width:1px}.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn{border-right-width:0}.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn.ui-last-child{border-right-width:1px}.ui-controlgroup-controls .ui-btn-corner-all,.ui-controlgroup-controls .ui-btn.ui-corner-all{-webkit-border-radius:0;border-radius:0}.ui-controlgroup-controls,.ui-controlgroup-controls .ui-radio,.ui-controlgroup-controls .ui-checkbox,.ui-controlgroup-controls .ui-select,.ui-controlgroup-controls li{-webkit-border-radius:inherit;border-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-last-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup-controls a.ui-shadow:not(:focus),.ui-controlgroup-controls button.ui-shadow:not(:focus),.ui-controlgroup-controls div.ui-shadow:not(.ui-focus){-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.ui-controlgroup-label legend{max-width:100%}.ui-controlgroup-controls>label{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-dialog{background:none!important}.ui-dialog-contain{width:92.5%;max-width:500px;margin:10% auto 1em;padding:0;position:relative;top:-1em}.ui-dialog-contain>.ui-header,.ui-dialog-contain>.ui-content,.ui-dialog-contain>.ui-footer{display:block;position:relative;width:auto;margin:0}.ui-dialog-contain>.ui-header{overflow:hidden;z-index:10;padding:0;border-top-width:0}.ui-dialog-contain>.ui-footer{z-index:10;padding:0 1em;border-bottom-width:0}.ui-popup-open .ui-header-fixed,.ui-popup-open .ui-footer-fixed{position:absolute!important}.ui-popup-screen{background-image:url("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==");top:0;left:0;right:0;bottom:1px;position:absolute;filter:Alpha(Opacity=0);opacity:0;z-index:1099}.ui-popup-screen.in{opacity:.5;filter:Alpha(Opacity=50)}.ui-popup-screen.out{opacity:0;filter:Alpha(Opacity=0)}.ui-popup-container{z-index:1100;display:inline-block;position:absolute;padding:0;outline:0}.ui-popup{position:relative}.ui-popup.ui-body-inherit{border-width:1px;border-style:solid}.ui-popup-hidden{left:0;top:0;position:absolute!important;visibility:hidden}.ui-popup-truncate{height:1px;width:1px;margin:-1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-popup.ui-content,.ui-popup .ui-content{overflow:visible}.ui-popup>.ui-header{border-top-width:0}.ui-popup>.ui-footer{border-bottom-width:0}.ui-popup>p,.ui-popup>h1,.ui-popup>h2,.ui-popup>h3,.ui-popup>h4,.ui-popup>h5,.ui-popup>h6{margin:.5em .4375em}.ui-popup>span{display:block;margin:.5em .4375em}.ui-popup-container .ui-content>p,.ui-popup-container .ui-content>h1,.ui-popup-container .ui-content>h2,.ui-popup-container .ui-content>h3,.ui-popup-container .ui-content>h4,.ui-popup-container .ui-content>h5,.ui-popup-container .ui-content>h6{margin:.5em 0}.ui-popup-container .ui-content>span{margin:0}.ui-popup-container .ui-content>p:first-child,.ui-popup-container .ui-content>h1:first-child,.ui-popup-container .ui-content>h2:first-child,.ui-popup-container .ui-content>h3:first-child,.ui-popup-container .ui-content>h4:first-child,.ui-popup-container .ui-content>h5:first-child,.ui-popup-container .ui-content>h6:first-child{margin-top:0}.ui-popup-container .ui-content>p:last-child,.ui-popup-container .ui-content>h1:last-child,.ui-popup-container .ui-content>h2:last-child,.ui-popup-container .ui-content>h3:last-child,.ui-popup-container .ui-content>h4:last-child,.ui-popup-container .ui-content>h5:last-child,.ui-popup-container .ui-content>h6:last-child{margin-bottom:0}.ui-popup>img{max-width:100%;max-height:100%;vertical-align:middle}.ui-popup:not(.ui-content)>img:only-child,.ui-popup:not(.ui-content)>.ui-btn-left:first-child+img:last-child,.ui-popup:not(.ui-content)>.ui-btn-right:first-child+img:last-child{-webkit-border-radius:inherit;border-radius:inherit}.ui-popup iframe{vertical-align:middle}.ui-popup>.ui-btn-left,.ui-popup>.ui-btn-right{position:absolute;top:-11px;margin:0;z-index:1101}.ui-popup>.ui-btn-left{left:-11px}.ui-popup>.ui-btn-right{right:-11px}.ui-popup-arrow-container{width:20px;height:20px}.ui-popup-arrow-container.ui-popup-arrow-l{left:-10px;clip:rect(-1000px,10px,2000px,-1000px)}.ui-popup-arrow-container.ui-popup-arrow-t{top:-10px;clip:rect(-1000px,2000px,10px,-1000px)}.ui-popup-arrow-container.ui-popup-arrow-r{right:-10px;clip:rect(-1000px,2000px,2000px,10px)}.ui-popup-arrow-container.ui-popup-arrow-b{bottom:-10px;clip:rect(10px,2000px,1000px,-1000px)}.ui-popup-arrow-container .ui-popup-arrow{width:28.284271247px;height:28.284271247px;border-width:1px;border-style:solid}.ui-popup-arrow-container.ui-popup-arrow-t .ui-popup-arrow{left:-4.142135623px;top:5.857864376px}.ui-popup-arrow-container.ui-popup-arrow-b .ui-popup-arrow{left:-4.142135623px;top:-14.142135623px}.ui-popup-arrow-container.ui-popup-arrow-l .ui-popup-arrow{left:5.857864376px;top:-4.142135623px}.ui-popup-arrow-container.ui-popup-arrow-r .ui-popup-arrow{left:-14.142135623px;top:-4.142135623px}.ui-popup-arrow-container.ui-popup-arrow-t.ie .ui-popup-arrow{margin-left:-5.857864376269049px;margin-top:-7.0710678118654755px}.ui-popup-arrow-container.ui-popup-arrow-b.ie .ui-popup-arrow{margin-left:-5.857864376269049px;margin-top:-4.142135623730951px}.ui-popup-arrow-container.ui-popup-arrow-l.ie .ui-popup-arrow{margin-left:-7.0710678118654755px;margin-top:-5.857864376269049px}.ui-popup-arrow-container.ui-popup-arrow-r.ie .ui-popup-arrow{margin-left:-4.142135623730951px;margin-top:-5.857864376269049px}.ui-popup>.ui-popup-arrow-guide{position:absolute;left:0;right:0;top:0;bottom:0;visibility:hidden}.ui-popup-arrow-container{position:absolute}.ui-popup-arrow{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);position:absolute;overflow:hidden;box-sizing:border-box}.ui-popup-arrow-container.ie .ui-popup-arrow{-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.7071067811865474, M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865474, SizingMethod='auto expand')";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.7071067811865474, M12=-.7071067811865477, M21=.7071067811865477, M22=.7071067811865474, SizingMethod='auto expand')}.ui-checkbox,.ui-radio{margin:.5em 0;position:relative}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin:0;text-align:left;white-space:normal;z-index:2}.ui-controlgroup .ui-checkbox .ui-btn.ui-focus,.ui-controlgroup .ui-radio .ui-btn.ui-focus{z-index:3}.ui-checkbox .ui-btn-icon-top,.ui-radio .ui-btn-icon-top,.ui-checkbox .ui-btn-icon-bottom,.ui-radio .ui-btn-icon-bottom{text-align:center}.ui-controlgroup-horizontal .ui-checkbox .ui-btn:after,.ui-controlgroup-horizontal .ui-radio .ui-btn:after{content:none;display:none}.ui-checkbox input,.ui-radio input{position:absolute;left:.466em;top:50%;width:22px;height:22px;margin:-11px 0 0 0;outline:0!important;z-index:1}.ui-controlgroup-horizontal .ui-checkbox input,.ui-controlgroup-horizontal .ui-radio input{left:50%;margin-left:-9px}.ui-checkbox input:disabled,.ui-radio input:disabled{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-select{margin-top:.5em;margin-bottom:.5em;position:relative}.ui-select>select{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-select .ui-btn{margin:0;opacity:1}.ui-select .ui-btn select{position:absolute;top:0;left:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;outline:0;-webkit-border-radius:inherit;border-radius:inherit;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;filter:Alpha(Opacity=0);opacity:0;z-index:2}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-state-disabled select{display:none}.ui-select span.ui-state-disabled{filter:Alpha(Opacity=100);opacity:1}.ui-select .ui-btn.ui-select-nativeonly{border-radius:0;border:0}.ui-select .ui-btn.ui-select-nativeonly select{opacity:1;text-indent:0;display:block}.ui-select .ui-li-has-count.ui-btn{padding-right:2.8125em}.ui-select .ui-li-has-count.ui-btn-icon-right{padding-right:4.6875em}.ui-select .ui-btn-icon-right .ui-li-count{right:3.2em}.ui-select .ui-btn>span:not(.ui-li-count){display:block;text-overflow:ellipsis;overflow:hidden!important;white-space:nowrap}.ui-selectmenu.ui-popup{min-width:11em}.ui-selectmenu .ui-dialog-contain{overflow:hidden}.ui-selectmenu .ui-header{margin:0;padding:0;border-width:0}.ui-selectmenu.ui-dialog .ui-header{z-index:1;position:relative}.ui-selectmenu.ui-popup .ui-header{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui-selectmenu.ui-popup .ui-header h1:after{content:'.';visibility:hidden}.ui-selectmenu .ui-header .ui-title{margin:0 2.875em}.ui-selectmenu.ui-dialog .ui-content{overflow:visible;z-index:1}.ui-selectmenu .ui-selectmenu-list{margin:0;-webkit-border-radius:inherit;border-radius:inherit}.ui-header:not(.ui-screen-hidden)+.ui-selectmenu-list{-webkit-border-top-right-radius:0;border-top-right-radius:0;-webkit-border-top-left-radius:0;border-top-left-radius:0}.ui-header.ui-screen-hidden+.ui-selectmenu-list li.ui-first-child .ui-btn{border-top-width:0}.ui-selectmenu .ui-selectmenu-list li.ui-last-child .ui-btn{border-bottom-width:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-selectmenu .ui-selectmenu-placeholder{display:none}.ui-listview,.ui-listview>li{margin:0;padding:0;list-style:none}.ui-content .ui-listview,.ui-panel-inner>.ui-listview{margin:-1em}.ui-content .ui-listview-inset,.ui-panel-inner>.ui-listview-inset{margin:1em 0}.ui-collapsible-content>.ui-listview{margin:-.5em -1em}.ui-collapsible-content>.ui-listview-inset{margin:.5em 0}.ui-listview>li{display:block;position:relative;overflow:visible}.ui-listview>.ui-li-static,.ui-listview>.ui-li-divider,.ui-listview>li>a.ui-btn{margin:0;display:block;position:relative;text-align:left;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-listview>li>.ui-btn:focus{z-index:1}.ui-listview>.ui-li-static,.ui-listview>.ui-li-divider,.ui-listview>li>a.ui-btn{border-width:1px 0 0;border-style:solid}.ui-listview-inset>.ui-li-static,.ui-listview-inset>.ui-li-divider,.ui-listview-inset>li>a.ui-btn{border-right-width:1px;border-left-width:1px}.ui-listview>.ui-li-static.ui-last-child,.ui-listview>.ui-li-divider.ui-last-child,.ui-listview>li.ui-last-child>a.ui-btn{border-bottom-width:1px}.ui-collapsible-content>.ui-listview:not(.ui-listview-inset)>li.ui-first-child,.ui-collapsible-content>.ui-listview:not(.ui-listview-inset)>li.ui-first-child>a.ui-btn{border-top-width:0}.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset)>li.ui-last-child,.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset)>li.ui-last-child>a.ui-btn{border-bottom-width:0}.ui-listview>li.ui-first-child,.ui-listview>li.ui-first-child>a.ui-btn{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>li.ui-last-child,.ui-listview>li.ui-last-child>a.ui-btn{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-listview>li.ui-li-has-alt>a.ui-btn{-webkit-border-top-right-radius:0;border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.ui-listview>li.ui-first-child>a.ui-btn+a.ui-btn{-webkit-border-top-left-radius:0;border-top-left-radius:0;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-listview>li.ui-last-child>a.ui-btn+a.ui-btn{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-listview>li.ui-first-child img:first-child:not(.ui-li-icon){-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>li.ui-last-child img:first-child:not(.ui-li-icon){-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-collapsible-content>.ui-listview:not(.ui-listview-inset){-webkit-border-radius:inherit;border-radius:inherit}.ui-listview>.ui-li-static{padding:.7em 1em}.ui-listview>.ui-li-divider{padding:.5em 1.143em;font-size:14px;font-weight:700;cursor:default;outline:0}.ui-listview>.ui-li-has-count>.ui-btn,.ui-listview>.ui-li-static.ui-li-has-count,.ui-listview>.ui-li-divider.ui-li-has-count{padding-right:2.8125em}.ui-listview>.ui-li-has-count>.ui-btn-icon-right{padding-right:4.6875em}.ui-listview>.ui-li-has-thumb>.ui-btn,.ui-listview>.ui-li-static.ui-li-has-thumb{min-height:3.625em;padding-left:6.25em}.ui-listview>.ui-li-has-icon>.ui-btn,.ui-listview>.ui-li-static.ui-li-has-icon{min-height:1.25em;padding-left:2.5em}.ui-li-count{position:absolute;font-size:12.5px;font-weight:700;text-align:center;border-width:1px;border-style:solid;padding:0 .48em;line-height:1.6em;min-height:1.6em;min-width:.64em;right:.8em;top:50%;margin-top:-.88em}.ui-listview .ui-btn-icon-right .ui-li-count{right:3.2em}.ui-listview .ui-li-has-thumb>img:first-child,.ui-listview .ui-li-has-thumb>.ui-btn>img:first-child,.ui-listview .ui-li-has-thumb .ui-li-thumb{position:absolute;left:0;top:0;max-height:5em;max-width:5em}.ui-listview>.ui-li-has-icon>img:first-child,.ui-listview>.ui-li-has-icon>.ui-btn>img:first-child{position:absolute;left:.625em;top:.9em;max-height:1em;max-width:1em}.ui-listview>li h1,.ui-listview>li h2,.ui-listview>li h3,.ui-listview>li h4,.ui-listview>li h5,.ui-listview>li h6{font-size:1em;font-weight:700;display:block;margin:.45em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-listview>li p{font-size:.75em;font-weight:400;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-listview .ui-li-aside{position:absolute;top:1em;right:3.333em;margin:0;text-align:right}.ui-listview>li.ui-li-has-alt>.ui-btn{margin-right:2.5em;border-right-width:0}.ui-listview>li.ui-li-has-alt>.ui-btn+.ui-btn{position:absolute;width:2.5em;height:100%;min-height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-left-width:1px;top:0;right:0;margin:0;padding:0;z-index:2}.ui-listview-inset>li.ui-li-has-alt>.ui-btn+.ui-btn{border-right-width:1px}.ui-listview>li.ui-li-has-alt>.ui-btn+.ui-btn:focus{z-index:3}ol.ui-listview,ol.ui-listview>.ui-li-divider{counter-reset:listnumbering}ol.ui-listview>li>.ui-btn,ol.ui-listview>li.ui-li-static{vertical-align:middle}ol.ui-listview>li>.ui-btn:first-child:before,ol.ui-listview>li.ui-li-static:before,ol.ui-listview>li.ui-field-contain>label:before,ol.ui-listview>li.ui-field-contain>.ui-controlgroup-label:before{display:inline-block;font-size:.9em;font-weight:400;padding-right:.3em;min-width:1.4em;line-height:1.5;vertical-align:middle;counter-increment:listnumbering;content:counter(listnumbering) "."}ol.ui-listview>li.ui-field-contain:before{content:none;display:none}ol.ui-listview>li h1:first-child,ol.ui-listview>li h2:first-child,ol.ui-listview>li h3:first-child,ol.ui-listview>li h4:first-child,ol.ui-listview>li h5:first-child,ol.ui-listview>li h6:first-child,ol.ui-listview>li p:first-child,ol.ui-listview>li img:first-child+*{display:inline-block;vertical-align:middle}ol.ui-listview>li h1:first-child~*,ol.ui-listview>li h2:first-child~*,ol.ui-listview>li h3:first-child~*,ol.ui-listview>li h4:first-child~*,ol.ui-listview>li h5:first-child~*,ol.ui-listview>li h6:first-child~*,ol.ui-listview>li p:first-child~*,ol.ui-listview>li img:first-child+*~*{margin-top:0;text-indent:2.04em}html .ui-filterable+.ui-listview,html .ui-filterable.ui-listview{margin-top:.5em}.ui-collapsible-content>form.ui-filterable{margin-top:-.5em}.ui-collapsible-content>.ui-input-search.ui-filterable{margin-top:0}.ui-collapsible-content>.ui-filterable+.ui-listview:not(.ui-listview-inset)>li.ui-first-child,.ui-collapsible-content>.ui-filterable+.ui-listview:not(.ui-listview-inset)>li.ui-first-child>a.ui-btn,.ui-collapsible-content>.ui-filterable.ui-listview:not(.ui-listview-inset)>li.ui-first-child,.ui-collapsible-content>.ui-filterable.ui-listview:not(.ui-listview-inset)>li.ui-first-child>a.ui-btn{border-top-width:1px}div.ui-slider{height:30px;margin:.5em 0;padding:0;-ms-touch-action:pan-y pinch-zoom double-tap-zoom}div.ui-slider:before,div.ui-slider:after{content:"";display:table}div.ui-slider:after{clear:both}input.ui-slider-input{display:block;float:left;font-size:14px;font-weight:700;margin:0;padding:4px;width:40px;height:20px;line-height:20px;border-width:1px;border-style:solid;outline:0;text-align:center;vertical-align:text-bottom;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.ui-slider-input::-webkit-outer-spin-button,.ui-slider-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ui-slider-track{position:relative;overflow:visible;border-width:1px;border-style:solid;height:15px;margin:0 15px 0 68px;top:6px}.ui-slider-track.ui-mini{height:12px;top:8px}.ui-slider-track .ui-slider-bg{height:100%}.ui-slider-track .ui-btn.ui-slider-handle{position:absolute;z-index:1;top:50%;width:28px;height:28px;margin:-15px 0 0 -15px;outline:0;padding:0}.ui-slider-track.ui-mini .ui-slider-handle{height:14px;width:14px;margin:-8px 0 0 -8px}select.ui-slider-switch{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}div.ui-slider-switch{display:inline-block;height:32px;width:5.8em;top:0}div.ui-slider-switch:before,div.ui-slider-switch:after{display:none;clear:none}div.ui-slider-switch.ui-mini{height:29px;top:0}.ui-slider-inneroffset{margin:0 16px;position:relative;z-index:1}.ui-slider-switch.ui-mini .ui-slider-inneroffset{margin:0 15px 0 14px}.ui-slider-switch .ui-btn.ui-slider-handle{margin:1px 0 0 -15px}.ui-slider-switch.ui-mini .ui-slider-handle{width:25px;height:25px;margin:1px 0 0 -13px;padding:0}.ui-slider-handle-snapping{-webkit-transition:left 70ms linear;-moz-transition:left 70ms linear;transition:left 70ms linear}.ui-slider-switch .ui-slider-label{position:absolute;text-align:center;width:100%;overflow:hidden;font-size:16px;top:0;line-height:2;min-height:100%;white-space:nowrap;cursor:pointer}.ui-slider-switch.ui-mini .ui-slider-label{font-size:14px}.ui-slider-switch .ui-slider-label-a{z-index:1;left:0;text-indent:-1.5em}.ui-slider-switch .ui-slider-label-b{z-index:0;right:0;text-indent:1.5em}.ui-slider-track .ui-slider-bg,.ui-slider-switch .ui-slider-label,.ui-slider-switch .ui-slider-inneroffset,.ui-slider-handle{-webkit-border-radius:inherit;border-radius:inherit}.ui-field-contain div.ui-slider-switch{margin:0}.ui-field-contain div.ui-slider-switch,.ui-field-contain.ui-hide-label div.ui-slider-switch,html .ui-popup .ui-field-contain div.ui-slider-switch{display:inline-block;width:5.8em}.ui-slider-popup{width:64px;height:64px;font-size:36px;padding-top:14px;opacity:.8}.ui-slider-popup{position:absolute!important;text-align:center;z-index:100}.ui-slider-track .ui-btn.ui-slider-handle{font-size:.9em;line-height:30px}.ui-rangeslider{margin:.5em 0}.ui-rangeslider:before,.ui-rangeslider:after{content:"";display:table}.ui-rangeslider:after{clear:both}.ui-rangeslider .ui-slider-input.ui-rangeslider-last{float:right}.ui-rangeslider .ui-rangeslider-sliders{position:relative;overflow:visible;height:30px;margin:0 68px}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track{position:absolute;top:6px;right:0;left:0;margin:0}.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track{top:8px}.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg{display:none}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{background-color:transparent;background:0;border-width:0;height:0}html >body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{height:15px;border-width:1px}html >body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child{height:12px}div.ui-rangeslider label{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-field-contain .ui-rangeslider input.ui-slider-input,.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders{margin-top:0;margin-bottom:0}.ui-input-text,.ui-input-search{margin:.5em 0;border-width:1px;border-style:solid}.ui-mini{margin:.446em}.ui-input-text input,.ui-input-search input,textarea.ui-input-text{padding:.4em;line-height:1.4em;display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;outline:0}.ui-input-text input,.ui-input-search input{margin:0;min-height:2.2em;text-align:left;border:0;background:transparent none;-webkit-appearance:none;-webkit-border-radius:inherit;border-radius:inherit}textarea.ui-input-text{overflow:auto;resize:vertical}.ui-mini .ui-input-text input,.ui-mini .ui-input-search input,.ui-input-text.ui-mini input,.ui-input-search.ui-mini input,.ui-mini textarea.ui-input-text,textarea.ui-mini{font-size:14px}.ui-mini textarea.ui-input-text,textarea.ui-mini{margin:.446em 0}.ui-input-has-clear,.ui-input-search{position:relative}.ui-input-has-clear{padding-right:2.375em}.ui-mini.ui-input-has-clear{padding-right:2.923em}.ui-input-has-clear input{padding-right:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.ui-input-search input{padding-left:1.75em}.ui-input-search:after{position:absolute;left:.3125em;top:50%;margin-top:-7px;content:"";background-position:center center;background-repeat:no-repeat;width:14px;height:14px;filter:Alpha(Opacity=50);opacity:.5}.ui-input-search.ui-input-has-clear .ui-btn.ui-input-clear,.ui-input-text.ui-input-has-clear .ui-btn.ui-input-clear{position:absolute;right:0;top:50%;margin:-14px .3125em 0;border:0;background-color:transparent}.ui-input-search .ui-input-clear-hidden,.ui-input-text .ui-input-clear-hidden{display:none}.ui-input-text input::-moz-placeholder,.ui-input-search input::-moz-placeholder,textarea.ui-input-text::-moz-placeholder{color:#aaa}.ui-input-text input:-ms-input-placeholder,.ui-input-search input:-ms-input-placeholder,textarea.ui-input-text:-ms-input-placeholder{color:#aaa}.ui-input-text input[type=number]::-webkit-outer-spin-button{margin:0}.ui-input-text input::-ms-clear,.ui-input-search input::-ms-clear{display:none}.ui-input-text input:focus,.ui-input-search input:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}textarea.ui-input-text.ui-textinput-autogrow{overflow:hidden}.ui-textinput-autogrow-resize{-webkit-transition:height .25s;-o-transition:height .25s;-moz-transition:height .25s;transition:height .25s}.ui-flipswitch{display:inline-block;vertical-align:middle;width:5.875em;height:1.875em;border-width:1px;border-style:solid;margin:.5em 0;overflow:hidden;-webkit-transition-property:padding,width,background-color,color,border-color;-moz-transition-property:padding,width,background-color,color,border-color;-o-transition-property:padding,width,background-color,color,border-color;transition-property:padding,width,background-color,color,border-color;-webkit-transition-duration:100ms;-moz-transition-duration:100ms;-o-transition-duration:100ms;transition-duration:100ms;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.ui-flipswitch.ui-flipswitch-active{padding-left:4em;width:1.875em}.ui-flipswitch-input{position:absolute;height:1px;width:1px;margin:-1px;overflow:hidden;clip:rect(1px,1px,1px,1px);border:0;outline:0;filter:Alpha(Opacity=0);opacity:0}.ui-flipswitch .ui-btn.ui-flipswitch-on,.ui-flipswitch .ui-flipswitch-off{float:left;height:1.75em;margin:.0625em;line-height:1.65em}.ui-flipswitch .ui-btn.ui-flipswitch-on{width:1.75em;padding:0;text-indent:-2.6em;text-align:left;border-width:1px;border-style:solid;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:inherit;overflow:visible;color:inherit;text-shadow:inherit}.ui-flipswitch .ui-flipswitch-off{padding:1px;text-indent:1em}html .ui-field-contain>label+.ui-flipswitch,html .ui-popup .ui-field-contain>label+.ui-flipswitch{display:inline-block;width:5.875em;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.ui-field-contain .ui-flipswitch.ui-flipswitch-active,.ui-popup .ui-field-contain .ui-flipswitch.ui-flipswitch-active{width:1.875em}.ui-table{border:0;border-collapse:collapse;padding:0;width:100%}.ui-table th,.ui-table td{line-height:1.5em;text-align:left;padding:.4em .5em;vertical-align:top}.ui-table th .ui-btn,.ui-table td .ui-btn{line-height:normal}.ui-table th{font-weight:700}.ui-table caption{text-align:left;margin-bottom:1.4em;opacity:.5}.ui-table-columntoggle-btn{float:right;margin-bottom:.8em}.ui-table-columntoggle-popup fieldset{margin:0}.ui-table-columntoggle{clear:both}@media only all{th.ui-table-priority-6,td.ui-table-priority-6,th.ui-table-priority-5,td.ui-table-priority-5,th.ui-table-priority-4,td.ui-table-priority-4,th.ui-table-priority-3,td.ui-table-priority-3,th.ui-table-priority-2,td.ui-table-priority-2,th.ui-table-priority-1,td.ui-table-priority-1{display:none}}@media screen and (min-width:20em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-1,.ui-table-columntoggle.ui-responsive td.ui-table-priority-1{display:table-cell}}@media screen and (min-width:30em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-2,.ui-table-columntoggle.ui-responsive td.ui-table-priority-2{display:table-cell}}@media screen and (min-width:40em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-3,.ui-table-columntoggle.ui-responsive td.ui-table-priority-3{display:table-cell}}@media screen and (min-width:50em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-4,.ui-table-columntoggle.ui-responsive td.ui-table-priority-4{display:table-cell}}@media screen and (min-width:60em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-5,.ui-table-columntoggle.ui-responsive td.ui-table-priority-5{display:table-cell}}@media screen and (min-width:70em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-6,.ui-table-columntoggle.ui-responsive td.ui-table-priority-6{display:table-cell}}.ui-table-columntoggle th.ui-table-cell-hidden,.ui-table-columntoggle td.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden{display:none}.ui-table-columntoggle th.ui-table-cell-visible,.ui-table-columntoggle td.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible{display:table-cell}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{display:none}@media only all{.ui-table-reflow thead td,.ui-table-reflow thead th{display:none}.ui-table-reflow td,.ui-table-reflow th{text-align:left;display:block}.ui-table-reflow tbody th{margin-top:3em}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{padding:.4em;min-width:30%;display:inline-block;margin:-.4em 1em -.4em -.4em}.ui-table-reflow th .ui-table-cell-label-top,.ui-table-reflow td .ui-table-cell-label-top{display:block;padding:.4em 0;margin:.4em 0;text-transform:uppercase;font-size:.9em;font-weight:400}}@media (min-width:35em){.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th,.ui-table-reflow.ui-responsive tbody th,.ui-table-reflow.ui-responsive tbody td,.ui-table-reflow.ui-responsive thead td,.ui-table-reflow.ui-responsive thead th{display:table-cell;margin:0}.ui-table-reflow.ui-responsive td .ui-table-cell-label,.ui-table-reflow.ui-responsive th .ui-table-cell-label{display:none}}@media (max-width:35em){.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;clear:left}}.ui-panel{width:17em;min-height:100%;max-height:none;border-width:0;position:absolute;top:0;display:block}.ui-panel-closed{width:0;max-height:100%;overflow:hidden;visibility:hidden;left:0;clip:rect(1px,1px,1px,1px)}.ui-panel-fixed{position:fixed;bottom:-1px;padding-bottom:1px}.ui-panel-display-reveal{z-index:1}.ui-panel-display-push{z-index:999}.ui-panel-display-overlay{z-index:1001}.ui-panel-inner{padding:1em}.ui-panel-page-container{overflow-x:visible}.ui-panel-page-container-themed .ui-page-active{background:0}.ui-panel-wrapper{position:relative;min-height:inherit;border:0;overflow-x:hidden;z-index:999}.ui-panel-fixed-toolbar{overflow-x:hidden}.ui-panel-dismiss{position:absolute;top:0;left:0;right:0;height:100%;z-index:1002;display:none}.ui-panel-dismiss-open{display:block}.ui-panel-animate{-webkit-transition:-webkit-transform 300ms ease;-webkit-transition-duration:300ms;-moz-transition:-moz-transform 300ms ease;transition:transform 300ms ease}@media screen and (max-device-width:768px){.ui-page-header-fixed .ui-panel-animate.ui-panel-wrapper,.ui-page-footer-fixed .ui-panel-animate.ui-panel-wrapper,.ui-panel-animate.ui-panel-fixed-toolbar{-ms-transition:none}.ui-panel-animate.ui-panel-fixed-toolbar{-ms-transition:-ms-transform 1ms;-ms-transform:rotate(0deg)}}.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal){-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0)}.ui-panel-position-left{left:-17em}.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-left.ui-panel-display-push{left:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-position-left.ui-panel-display-reveal,.ui-panel-open.ui-panel-position-left{left:0}.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-overlay,.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-position-right{right:-17em}.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-right.ui-panel-display-push{right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-position-right.ui-panel-display-reveal,.ui-panel-position-right.ui-panel-open{right:0}.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-overlay,.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-page-content-position-left{left:17em;right:-17em}.ui-panel-animate.ui-panel-page-content-position-left{left:0;right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-page-content-position-right{left:-17em;right:17em}.ui-panel-animate.ui-panel-page-content-position-right{left:0;right:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-dismiss-open.ui-panel-dismiss-position-left{left:17em}.ui-panel-dismiss-open.ui-panel-dismiss-position-right{right:17em}.ui-panel-display-reveal{-webkit-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);box-shadow:inset -5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-reveal{-webkit-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);box-shadow:inset 5px 0 5px rgba(0,0,0,.15)}.ui-panel-display-overlay{-webkit-box-shadow:5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:5px 0 5px rgba(0,0,0,.15);box-shadow:5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-overlay{-webkit-box-shadow:-5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:-5px 0 5px rgba(0,0,0,.15);box-shadow:-5px 0 5px rgba(0,0,0,.15)}.ui-panel-open.ui-panel-position-left.ui-panel-display-push{border-right-width:1px;margin-right:-1px}.ui-panel-page-content-position-left.ui-panel-page-content-display-push{margin-left:1px;width:auto}.ui-panel-open.ui-panel-position-right.ui-panel-display-push{border-left-width:1px;margin-left:-1px}.ui-panel-page-content-position-right.ui-panel-page-content-display-push{margin-right:1px;width:auto}@media (min-width:55em){.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-left{margin-right:17em}.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-right{margin-left:17em}.ui-responsive-panel .ui-panel-page-content-open{width:auto}.ui-responsive-panel .ui-panel-dismiss-display-push,.ui-responsive-panel.ui-page-active~.ui-panel-dismiss-display-push{display:none}}.ui-tabs{position:relative;padding:.2em}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.structure-1.4.5.css
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.structure-1.4.5.css	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.structure-1.4.5.css	(revision 101)
@@ -0,0 +1,3435 @@
+/*!
+* jQuery Mobile 1.4.5
+* Git HEAD hash: 68e55e78b292634d3991c795f06f5e37a512decc <> Date: Fri Oct 31 2014 17:33:30 UTC
+* http://jquerymobile.com
+*
+* Copyright 2010, 2014 jQuery Foundation, Inc. and othercontributors
+* Released under the MIT license.
+* http://jquery.org/license
+*
+*/
+
+
+/* Some unsets */
+.ui-mobile,
+.ui-mobile body {
+	height: 99.9%;
+}
+.ui-mobile fieldset,
+.ui-page {
+	padding: 0;
+	margin: 0;
+}
+.ui-mobile a img,
+.ui-mobile fieldset {
+	border-width: 0;
+}
+/* Fixes for fieldset issues on IE10 and FF (see #6077) */
+.ui-mobile fieldset {
+	min-width: 0;
+}
+@-moz-document url-prefix() {
+	.ui-mobile fieldset {
+		display: table-column;
+		vertical-align: middle;
+	}
+}
+/* Viewport */
+.ui-mobile-viewport {
+	margin: 0;
+	overflow-x: visible;
+	-webkit-text-size-adjust: 100%;
+	-ms-text-size-adjust:none;
+	-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+/* Issue #2066 */
+body.ui-mobile-viewport,
+div.ui-mobile-viewport {
+	overflow-x: hidden;
+}
+/* "page" containers - full-screen views, one should always be in view post-pageload */
+.ui-mobile [data-role=page],
+.ui-mobile [data-role=dialog],
+.ui-page {
+	top: 0;
+	left: 0;
+	width: 100%;
+	min-height: 100%;
+	position: absolute;
+	display: none;
+	border: 0;
+}
+/* On ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */
+.ui-page {
+	outline: none;
+}
+.ui-mobile .ui-page-active {
+	display: block;
+	overflow: visible;
+	overflow-x: hidden;
+}
+@media screen and (orientation: portrait) {
+	.ui-mobile .ui-page {
+		min-height: 420px;
+	}
+}
+@media screen and (orientation: landscape) {
+	.ui-mobile .ui-page {
+		min-height: 300px;
+	}
+}
+/* Fouc */
+.ui-mobile-rendering > * {
+	visibility: hidden;
+}
+/* Non-js content hiding */
+.ui-nojs {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+/* Loading screen */
+.ui-loading .ui-loader {
+	display: block;
+}
+.ui-loader {
+	display: none;
+	z-index: 9999999;
+	position: fixed;
+	top: 50%;
+	left: 50%;
+	border:0;
+}
+.ui-loader-default {
+	background: none;
+	filter: Alpha(Opacity=18);
+	opacity: .18;
+	width: 2.875em;
+	height: 2.875em;
+	margin-left: -1.4375em;
+	margin-top: -1.4375em;
+}
+.ui-loader-verbose {
+	width: 12.5em;
+	filter: Alpha(Opacity=88);
+	opacity: .88;
+	box-shadow: 0 1px 1px -1px #fff;
+	height: auto;
+	margin-left: -6.875em;
+	margin-top: -2.6875em;
+	padding: .625em;
+}
+.ui-loader-default h1 {
+	font-size: 0;
+	width: 0;
+	height: 0;
+	overflow: hidden;
+}
+.ui-loader-verbose h1 {
+	font-size: 1em;
+	margin: 0;
+	text-align: center;
+}
+.ui-loader .ui-icon-loading {
+	background-color: #000;
+	display: block;
+	margin: 0;
+	width: 2.75em;
+	height: 2.75em;
+	padding: .0625em;
+	-webkit-border-radius: 2.25em;
+	border-radius: 2.25em;
+}
+.ui-loader-verbose .ui-icon-loading {
+	margin: 0 auto .625em;
+	filter: Alpha(Opacity=75);
+	opacity: .75;
+}
+.ui-loader-textonly {
+	padding: .9375em;
+	margin-left: -7.1875em;
+}
+.ui-loader-textonly .ui-icon-loading {
+	display: none;
+}
+.ui-loader-fakefix {
+	position: absolute;
+}
+/* Headers, content panels */
+.ui-bar,
+.ui-body {
+	position: relative;
+	padding: .4em 1em;
+	overflow: hidden;
+	display: block;
+	clear: both;
+}
+.ui-bar h1,
+.ui-bar h2,
+.ui-bar h3,
+.ui-bar h4,
+.ui-bar h5,
+.ui-bar h6 {
+	margin: 0;
+	padding: 0;
+	font-size: 1em;
+	display: inline-block;
+}
+.ui-header,
+.ui-footer {
+	border-width: 1px 0;
+	border-style: solid;
+	position: relative;
+}
+.ui-header:empty,
+.ui-footer:empty {
+	min-height: 2.6875em;
+}
+.ui-header .ui-title,
+.ui-footer .ui-title {
+	font-size: 1em;
+	min-height: 1.1em;
+	text-align: center;
+	display: block;
+	margin: 0 30%;
+	padding: .7em 0;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+	outline: 0 !important;
+}
+.ui-footer .ui-title {
+	margin: 0 1em;
+}
+.ui-content {
+	border-width: 0;
+	overflow: visible;
+	overflow-x: hidden;
+	padding: 1em;
+}
+/* Corner styling for dialogs and popups */
+.ui-corner-all > .ui-header:first-child,
+.ui-corner-all > .ui-content:first-child,
+.ui-corner-all > .ui-footer:first-child {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+}
+.ui-corner-all > .ui-header:last-child,
+.ui-corner-all > .ui-content:last-child,
+.ui-corner-all > .ui-footer:last-child {
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+/* Buttons and icons */
+.ui-btn {
+	font-size: 16px;
+	margin: .5em 0;
+	padding: .7em 1em;
+	display: block;
+	position: relative;
+	text-align: center;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+	cursor: pointer;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+.ui-btn-icon-notext,
+.ui-header button.ui-btn.ui-btn-icon-notext,
+.ui-footer button.ui-btn.ui-btn-icon-notext {
+	padding: 0;
+	width: 1.75em;
+	height: 1.75em;
+	text-indent: -9999px;
+	white-space: nowrap !important;
+}
+.ui-mini {
+	font-size: 12.5px;
+}
+.ui-mini .ui-btn {
+	font-size: inherit;
+}
+/* Make buttons in toolbars default to mini and inline. */
+.ui-header .ui-btn,
+.ui-footer .ui-btn {
+	font-size: 12.5px;
+	display: inline-block;
+	vertical-align: middle;
+}
+.ui-header .ui-controlgroup .ui-btn-icon-notext,
+.ui-footer .ui-controlgroup .ui-btn-icon-notext {
+    font-size: 12.5px;
+}
+/* To ensure same top and left/right position when ui-btn-left/right are added to something other than buttons. */
+.ui-header .ui-btn-left,
+.ui-header .ui-btn-right {
+	font-size: 12.5px;
+}
+.ui-mini.ui-btn-icon-notext,
+.ui-mini .ui-btn-icon-notext,
+.ui-header .ui-btn-icon-notext,
+.ui-footer .ui-btn-icon-notext {
+	font-size: 16px;	
+	padding: 0;
+}
+.ui-btn-inline {
+	display: inline-block;
+	vertical-align: middle;
+	margin-right: .625em;
+}
+.ui-btn-icon-left {
+	padding-left: 2.5em;
+}
+.ui-btn-icon-right {
+	padding-right: 2.5em;
+}
+.ui-btn-icon-top {
+	padding-top: 2.5em;
+}
+.ui-btn-icon-bottom {
+	padding-bottom: 2.5em;
+}
+.ui-header .ui-btn-icon-top,
+.ui-footer .ui-btn-icon-top,
+.ui-header .ui-btn-icon-bottom,
+.ui-footer .ui-btn-icon-bottom {
+	padding-left: .3125em;
+	padding-right: .3125em;
+}
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after,
+.ui-btn-icon-notext:after {
+	content: "";
+	position: absolute;
+	display: block;
+	width: 22px;
+	height: 22px;
+}
+.ui-btn-icon-notext:after,
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after {
+	top: 50%;
+	margin-top: -11px;
+}
+.ui-btn-icon-left:after {
+	left: .5625em;
+}
+.ui-btn-icon-right:after {
+	right: .5625em;
+}
+.ui-mini.ui-btn-icon-left:after,
+.ui-mini .ui-btn-icon-left:after,
+.ui-header .ui-btn-icon-left:after,
+.ui-footer .ui-btn-icon-left:after {
+	left: .37em;
+}
+.ui-mini.ui-btn-icon-right:after,
+.ui-mini .ui-btn-icon-right:after,
+.ui-header .ui-btn-icon-right:after,
+.ui-footer .ui-btn-icon-right:after {
+	right: .37em;
+}
+.ui-btn-icon-notext:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after {
+	left: 50%;
+	margin-left: -11px;
+}
+.ui-btn-icon-top:after {
+	top: .5625em;
+}
+.ui-btn-icon-bottom:after {
+	top: auto;
+	bottom: .5625em;
+}
+/* Buttons in header position classes */
+.ui-header .ui-btn-left,
+.ui-header .ui-btn-right,
+.ui-btn-left > [class*="ui-"],
+.ui-btn-right > [class*="ui-"] {
+	margin: 0;
+}
+.ui-btn-left,
+.ui-btn-right {
+	position: absolute;
+	top: .24em;
+}
+.ui-btn-left {
+	left: .4em;
+}
+.ui-btn-right {
+	right: .4em;
+}
+.ui-btn-icon-notext.ui-btn-left {
+	top: .3125em;
+	left: .3125em;
+}
+.ui-btn-icon-notext.ui-btn-right {
+	top: .3125em;
+	right: .3125em;
+}
+/* Button elements */
+button.ui-btn,
+.ui-controlgroup-controls button.ui-btn-icon-notext {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	width: 100%;
+}
+button.ui-btn-inline,
+.ui-header button.ui-btn,
+.ui-footer button.ui-btn {
+	width: auto;
+}
+/* Firefox adds a 1px border in a button element. We negate this to make sure they have the same height as other buttons in controlgroups. */
+button.ui-btn::-moz-focus-inner {
+	border: 0;
+}
+button.ui-btn-icon-notext,
+.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn {
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+	width: 1.75em;
+}
+/* Form labels */
+.ui-mobile label,
+.ui-controlgroup-label {
+	display: block;
+	margin: 0 0 .4em;
+}
+/* Accessible content hiding */
+/* ui-hide-label deprecated in 1.4. TODO: Remove in 1.5 */
+.ui-hide-label > label,
+.ui-hide-label .ui-controlgroup-label,
+.ui-hide-label .ui-rangeslider label,
+.ui-hidden-accessible {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+/* Used for hiding elements by the filterable widget. You can also use this class to hide list items or buttons in controlgroups; this ensures correct corner styling. */
+.ui-screen-hidden {
+	display: none !important;
+}
+/* Transitions originally inspired by those from jQtouch, nice work, folks */
+.ui-mobile-viewport-transitioning,
+.ui-mobile-viewport-transitioning .ui-page {
+	width: 100%;
+	height: 100%;
+	overflow: hidden;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+}
+.ui-page-pre-in {
+	opacity: 0;
+}
+.in {
+	-webkit-animation-timing-function: ease-out;
+	-webkit-animation-duration: 350ms;
+	-moz-animation-timing-function: ease-out;
+	-moz-animation-duration: 350ms;
+	animation-timing-function: ease-out;
+	animation-duration: 350ms;
+}
+.out {
+	-webkit-animation-timing-function: ease-in;
+	-webkit-animation-duration: 225ms;
+	-moz-animation-timing-function: ease-in;
+	-moz-animation-duration: 225ms;
+	animation-timing-function: ease-in;
+	animation-duration: 225ms;
+}
+@-webkit-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-moz-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+@-webkit-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+@-moz-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+@keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+.fade.out {
+	opacity: 0;
+	-webkit-animation-duration: 125ms;
+	-webkit-animation-name: fadeout;
+	-moz-animation-duration: 125ms;
+	-moz-animation-name: fadeout;
+	animation-duration: 125ms;
+	animation-name: fadeout;
+}
+.fade.in {
+	opacity: 1;
+	-webkit-animation-duration: 225ms;
+	-webkit-animation-name: fadein;
+	-moz-animation-duration: 225ms;
+	-moz-animation-name: fadein;
+	animation-duration: 225ms;
+	animation-name: fadein;
+}
+.pop {
+	-webkit-transform-origin: 50% 50%;
+	-moz-transform-origin: 50% 50%;
+	transform-origin: 50% 50%;
+}
+.pop.in {
+	-webkit-transform: scale(1);
+	-webkit-animation-name: popin;
+	-webkit-animation-duration: 350ms;
+	-moz-transform: scale(1);
+	-moz-animation-name: popin;
+	-moz-animation-duration: 350ms;
+	transform: scale(1);
+	animation-name: popin;
+	animation-duration: 350ms;
+    opacity: 1;
+}
+.pop.out {
+	-webkit-animation-name: fadeout;
+	-webkit-animation-duration: 100ms;
+	-moz-animation-name: fadeout;
+	-moz-animation-duration: 100ms;
+	animation-name: fadeout;
+	animation-duration: 100ms;
+	opacity: 0;
+}
+.pop.in.reverse {
+	-webkit-animation-name: fadein;
+	-moz-animation-name: fadein;
+	animation-name: fadein;
+}
+.pop.out.reverse {
+	-webkit-transform: scale(.8);
+	-webkit-animation-name: popout;
+	-moz-transform: scale(.8);
+	-moz-animation-name: popout;
+	transform: scale(.8);
+	animation-name: popout;
+}
+@-webkit-keyframes popin {
+    from {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+}
+@-moz-keyframes popin {
+    from {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+}
+@keyframes popin {
+    from {
+        transform: scale(.8);
+        opacity: 0;
+    }
+    to {
+        transform: scale(1);
+        opacity: 1;
+    }
+}
+@-webkit-keyframes popout {
+    from {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -webkit-transform: scale(.8);
+        opacity: 0;
+    }
+}
+@-moz-keyframes popout {
+    from {
+        -moz-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -moz-transform: scale(.8);
+        opacity: 0;
+    }
+}
+@keyframes popout {
+    from {
+        transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        transform: scale(.8);
+        opacity: 0;
+    }
+}
+/* keyframes for slidein from sides */
+@-webkit-keyframes slideinfromright {
+    from { -webkit-transform: translate3d(100%,0,0); }
+    to { -webkit-transform: translate3d(0,0,0); }
+}
+@-moz-keyframes slideinfromright {
+    from { -moz-transform: translateX(100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromright {
+    from { transform: translateX(100%); }
+    to { transform: translateX(0); }
+}
+@-webkit-keyframes slideinfromleft {
+    from { -webkit-transform: translate3d(-100%,0,0); }
+    to { -webkit-transform: translate3d(0,0,0); }
+}
+@-moz-keyframes slideinfromleft {
+    from { -moz-transform: translateX(-100%); }
+    to { -moz-transform: translateX(0); }
+}
+@keyframes slideinfromleft {
+    from { transform: translateX(-100%); }
+    to { transform: translateX(0); }
+}
+/* keyframes for slideout to sides */
+@-webkit-keyframes slideouttoleft {
+    from { -webkit-transform: translate3d(0,0,0); }
+    to { -webkit-transform: translate3d(-100%,0,0); }
+}
+@-moz-keyframes slideouttoleft {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(-100%); }
+}
+@keyframes slideouttoleft {
+    from { transform: translateX(0); }
+    to { transform: translateX(-100%); }
+}
+@-webkit-keyframes slideouttoright {
+    from { -webkit-transform: translate3d(0,0,0); }
+    to { -webkit-transform: translate3d(100%,0,0); }
+}
+@-moz-keyframes slideouttoright {
+    from { -moz-transform: translateX(0); }
+    to { -moz-transform: translateX(100%); }
+}
+@keyframes slideouttoright {
+    from { transform: translateX(0); }
+    to { transform: translateX(100%); }
+}
+.slide.out, .slide.in {
+	-webkit-animation-timing-function: ease-out;
+	-webkit-animation-duration: 350ms;
+	-moz-animation-timing-function: ease-out;
+	-moz-animation-duration: 350ms;
+	animation-timing-function: ease-out;
+	animation-duration: 350ms;
+}
+.slide.out {
+	-webkit-transform: translate3d(-100%,0,0);
+	-webkit-animation-name: slideouttoleft;
+	-moz-transform: translateX(-100%);
+	-moz-animation-name: slideouttoleft;
+	transform: translateX(-100%);
+	animation-name: slideouttoleft;
+}
+.slide.in {
+	-webkit-transform: translate3d(0,0,0);
+	-webkit-animation-name: slideinfromright;
+	-moz-transform: translateX(0);
+	-moz-animation-name: slideinfromright;
+	transform: translateX(0);
+	animation-name: slideinfromright;
+}
+.slide.out.reverse {
+	-webkit-transform: translate3d(100%,0,0);
+	-webkit-animation-name: slideouttoright;
+	-moz-transform: translateX(100%);
+	-moz-animation-name: slideouttoright;
+	transform: translateX(100%);
+	animation-name: slideouttoright;
+}
+.slide.in.reverse {
+	-webkit-transform: translate3d(0,0,0);
+	-webkit-animation-name: slideinfromleft;
+	-moz-transform: translateX(0);
+	-moz-animation-name: slideinfromleft;
+	transform: translateX(0);
+	animation-name: slideinfromleft;
+}
+.slidefade.out {
+	-webkit-transform: translateX(-100%);
+	-webkit-animation-name: slideouttoleft;
+	-webkit-animation-duration: 225ms;
+	-moz-transform: translateX(-100%);
+	-moz-animation-name: slideouttoleft;
+	-moz-animation-duration: 225ms;
+	transform: translateX(-100%);
+	animation-name: slideouttoleft;
+	animation-duration: 225ms;
+}
+.slidefade.in {
+	-webkit-transform: translateX(0);
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateX(0);
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 200ms;
+	transform: translateX(0);
+	animation-name: fadein;
+	animation-duration: 200ms;
+}
+.slidefade.out.reverse {
+	-webkit-transform: translateX(100%);
+	-webkit-animation-name: slideouttoright;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateX(100%);
+	-moz-animation-name: slideouttoright;
+	-moz-animation-duration: 200ms;
+	transform: translateX(100%);
+	animation-name: slideouttoright;
+	animation-duration: 200ms;
+}
+.slidefade.in.reverse {
+	-webkit-transform: translateX(0);
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateX(0);
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 200ms;
+	transform: translateX(0);
+	animation-name: fadein;
+	animation-duration: 200ms;
+}
+/* slide down */
+.slidedown.out {
+	-webkit-animation-name: fadeout;
+	-webkit-animation-duration: 100ms;
+	-moz-animation-name: fadeout;
+	-moz-animation-duration: 100ms;
+	animation-name: fadeout;
+	animation-duration: 100ms;
+}
+.slidedown.in {
+	-webkit-transform: translateY(0);
+	-webkit-animation-name: slideinfromtop;
+	-webkit-animation-duration: 250ms;
+	-moz-transform: translateY(0);
+	-moz-animation-name: slideinfromtop;
+	-moz-animation-duration: 250ms;
+	transform: translateY(0);
+	animation-name: slideinfromtop;
+	animation-duration: 250ms;
+}
+.slidedown.in.reverse {
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 150ms;
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 150ms;
+	animation-name: fadein;
+	animation-duration: 150ms;
+}
+.slidedown.out.reverse {
+	-webkit-transform: translateY(-100%);
+	-webkit-animation-name: slideouttotop;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateY(-100%);
+	-moz-animation-name: slideouttotop;
+	-moz-animation-duration: 200ms;
+	transform: translateY(-100%);
+	animation-name: slideouttotop;
+	animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfromtop {
+    from { -webkit-transform: translateY(-100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfromtop {
+    from { -moz-transform: translateY(-100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfromtop {
+    from { transform: translateY(-100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttotop {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(-100%); }
+}
+@-moz-keyframes slideouttotop {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(-100%); }
+}
+@keyframes slideouttotop {
+    from { transform: translateY(0); }
+    to { transform: translateY(-100%); }
+}
+/* slide up */
+.slideup.out {
+	-webkit-animation-name: fadeout;
+	-webkit-animation-duration: 100ms;
+	-moz-animation-name: fadeout;
+	-moz-animation-duration: 100ms;
+	animation-name: fadeout;
+	animation-duration: 100ms;
+}
+.slideup.in {
+	-webkit-transform: translateY(0);
+	-webkit-animation-name: slideinfrombottom;
+	-webkit-animation-duration: 250ms;
+	-moz-transform: translateY(0);
+	-moz-animation-name: slideinfrombottom;
+	-moz-animation-duration: 250ms;
+	transform: translateY(0);
+	animation-name: slideinfrombottom;
+	animation-duration: 250ms;
+}
+.slideup.in.reverse {
+	-webkit-animation-name: fadein;
+	-webkit-animation-duration: 150ms;
+	-moz-animation-name: fadein;
+	-moz-animation-duration: 150ms;
+	animation-name: fadein;
+	animation-duration: 150ms;
+}
+.slideup.out.reverse {
+	-webkit-transform: translateY(100%);
+	-webkit-animation-name: slideouttobottom;
+	-webkit-animation-duration: 200ms;
+	-moz-transform: translateY(100%);
+	-moz-animation-name: slideouttobottom;
+	-moz-animation-duration: 200ms;
+	transform: translateY(100%);
+	animation-name: slideouttobottom;
+	animation-duration: 200ms;
+}
+@-webkit-keyframes slideinfrombottom {
+    from { -webkit-transform: translateY(100%); }
+    to { -webkit-transform: translateY(0); }
+}
+@-moz-keyframes slideinfrombottom {
+    from { -moz-transform: translateY(100%); }
+    to { -moz-transform: translateY(0); }
+}
+@keyframes slideinfrombottom {
+    from { transform: translateY(100%); }
+    to { transform: translateY(0); }
+}
+@-webkit-keyframes slideouttobottom {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(100%); }
+}
+@-moz-keyframes slideouttobottom {
+    from { -moz-transform: translateY(0); }
+    to { -moz-transform: translateY(100%); }
+}
+@keyframes slideouttobottom {
+    from { transform: translateY(0); }
+    to { transform: translateY(100%); }
+}
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-flip {
+	-webkit-perspective: 1000;
+	-moz-perspective: 1000;
+	perspective: 1000;
+	position: absolute;
+}
+.flip {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+	-moz-backface-visibility: hidden;
+	-moz-transform: translateX(0);
+	backface-visibility: hidden;
+	transform: translateX(0);
+}
+.flip.out {
+	-webkit-transform: rotateY(-90deg) scale(.9);
+	-webkit-animation-name: flipouttoleft;
+	-webkit-animation-duration: 175ms;
+	-moz-transform: rotateY(-90deg) scale(.9);
+	-moz-animation-name: flipouttoleft;
+	-moz-animation-duration: 175ms;
+	transform: rotateY(-90deg) scale(.9);
+	animation-name: flipouttoleft;
+	animation-duration: 175ms;
+}
+.flip.in {
+	-webkit-animation-name: flipintoright;
+	-webkit-animation-duration: 225ms;
+	-moz-animation-name: flipintoright;
+	-moz-animation-duration: 225ms;
+	animation-name: flipintoright;
+	animation-duration: 225ms;
+}
+.flip.out.reverse {
+	-webkit-transform: rotateY(90deg) scale(.9);
+	-webkit-animation-name: flipouttoright;
+	-moz-transform: rotateY(90deg) scale(.9);
+	-moz-animation-name: flipouttoright;
+	transform: rotateY(90deg) scale(.9);
+	animation-name: flipouttoright;
+}
+.flip.in.reverse {
+	-webkit-animation-name: flipintoleft;
+	-moz-animation-name: flipintoleft;
+	animation-name: flipintoleft;
+}
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-turn {
+	-webkit-perspective: 200px;
+	-moz-perspective: 200px;
+	-ms-perspective: 200px;
+	perspective: 200px;
+	position: absolute;
+}
+.turn {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+	-webkit-transform-origin: 0;
+	
+	-moz-backface-visibility: hidden;
+	-moz-transform: translateX(0);
+	-moz-transform-origin: 0;
+	
+	backface-visibility :hidden;
+	transform: translateX(0);
+	transform-origin: 0;
+}
+.turn.out {
+	-webkit-transform: rotateY(-90deg) scale(.9);
+	-webkit-animation-name: flipouttoleft;
+	-webkit-animation-duration: 125ms;
+	-moz-transform: rotateY(-90deg) scale(.9);
+	-moz-animation-name: flipouttoleft;
+	-moz-animation-duration: 125ms;
+	transform: rotateY(-90deg) scale(.9);
+	animation-name: flipouttoleft;
+	animation-duration: 125ms;
+}
+.turn.in {
+	-webkit-animation-name: flipintoright;
+	-webkit-animation-duration: 250ms;
+	-moz-animation-name: flipintoright;
+	-moz-animation-duration: 250ms;
+	animation-name: flipintoright;
+	animation-duration: 250ms;
+	
+}
+.turn.out.reverse {
+	-webkit-transform: rotateY(90deg) scale(.9);
+	-webkit-animation-name: flipouttoright;
+	-moz-transform: rotateY(90deg) scale(.9);
+	-moz-animation-name: flipouttoright;
+	transform: rotateY(90deg) scale(.9);
+	animation-name: flipouttoright;
+}
+.turn.in.reverse {
+	-webkit-animation-name: flipintoleft;
+	-moz-animation-name: flipintoleft;
+	animation-name: flipintoleft;
+}
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0); }
+    to { -webkit-transform: rotateY(-90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoleft {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(-90deg) scale(.9); }
+}
+@keyframes flipouttoleft {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(-90deg) scale(.9); }
+}
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) ; }
+    to { -webkit-transform: rotateY(90deg) scale(.9); }
+}
+@-moz-keyframes flipouttoright {
+    from { -moz-transform: rotateY(0); }
+    to { -moz-transform: rotateY(90deg) scale(.9); }
+}
+@keyframes flipouttoright {
+    from { transform: rotateY(0); }
+    to { transform: rotateY(90deg) scale(.9); }
+}
+@-webkit-keyframes flipintoleft {
+    from { -webkit-transform: rotateY(-90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoleft {
+    from { -moz-transform: rotateY(-90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoleft {
+    from { transform: rotateY(-90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+@-webkit-keyframes flipintoright {
+    from { -webkit-transform: rotateY(90deg) scale(.9); }
+    to { -webkit-transform: rotateY(0); }
+}
+@-moz-keyframes flipintoright {
+    from { -moz-transform: rotateY(90deg) scale(.9); }
+    to { -moz-transform: rotateY(0); }
+}
+@keyframes flipintoright {
+    from { transform: rotateY(90deg) scale(.9); }
+    to { transform: rotateY(0); }
+}
+/* flow transition */
+.flow {
+	-webkit-transform-origin: 50% 30%;
+	-webkit-box-shadow: 0 0 20px rgba(0,0,0,.4);
+	-moz-transform-origin: 50% 30%;	
+	-moz-box-shadow: 0 0 20px rgba(0,0,0,.4);
+	transform-origin: 50% 30%;	
+	box-shadow: 0 0 20px rgba(0,0,0,.4);
+}
+.ui-dialog.flow {
+	-webkit-transform-origin: none;
+	-webkit-box-shadow: none;
+	-moz-transform-origin: none;	
+	-moz-box-shadow: none;
+	transform-origin: none;	
+	box-shadow: none;
+}
+.flow.out {
+	-webkit-transform: translateX(-100%) scale(.7);
+	-webkit-animation-name: flowouttoleft;
+	-webkit-animation-timing-function: ease;
+	-webkit-animation-duration: 350ms;
+	-moz-transform: translateX(-100%) scale(.7);
+	-moz-animation-name: flowouttoleft;
+	-moz-animation-timing-function: ease;
+	-moz-animation-duration: 350ms;
+	transform: translateX(-100%) scale(.7);
+	animation-name: flowouttoleft;
+	animation-timing-function: ease;
+	animation-duration: 350ms;
+}
+.flow.in {
+	-webkit-transform: translateX(0) scale(1);
+	-webkit-animation-name: flowinfromright;
+	-webkit-animation-timing-function: ease;
+	-webkit-animation-duration: 350ms;
+	-moz-transform: translateX(0) scale(1);
+	-moz-animation-name: flowinfromright;
+	-moz-animation-timing-function: ease;
+	-moz-animation-duration: 350ms;
+	transform: translateX(0) scale(1);
+	animation-name: flowinfromright;
+	animation-timing-function: ease;
+	animation-duration: 350ms;
+}
+.flow.out.reverse {
+	-webkit-transform: translateX(100%);
+	-webkit-animation-name: flowouttoright;
+	-moz-transform: translateX(100%);
+	-moz-animation-name: flowouttoright;
+	transform: translateX(100%);
+	animation-name: flowouttoright;
+}
+.flow.in.reverse {
+	-webkit-animation-name: flowinfromleft;
+	-moz-animation-name: flowinfromleft;
+	animation-name: flowinfromleft;
+}
+@-webkit-keyframes flowouttoleft {
+    0% { -webkit-transform: translateX(0) scale(1); }
+	60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(-100%) scale(.7); }
+}
+@-moz-keyframes flowouttoleft {
+    0% { -moz-transform: translateX(0) scale(1); }
+	60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(-100%) scale(.7); }
+}
+@keyframes flowouttoleft {
+    0% { transform: translateX(0) scale(1); }
+	60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(-100%) scale(.7); }
+}
+@-webkit-keyframes flowouttoright {
+    0% { -webkit-transform: translateX(0) scale(1); }
+	60%, 70% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform:  translateX(100%) scale(.7); }
+}
+@-moz-keyframes flowouttoright {
+    0% { -moz-transform: translateX(0) scale(1); }
+	60%, 70% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform:  translateX(100%) scale(.7); }
+}
+@keyframes flowouttoright {
+    0% { transform: translateX(0) scale(1); }
+	60%, 70% { transform: translateX(0) scale(.7); }
+    100% { transform:  translateX(100%) scale(.7); }
+}
+@-webkit-keyframes flowinfromleft {
+    0% { -webkit-transform: translateX(-100%) scale(.7); }
+	30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromleft {
+    0% { -moz-transform: translateX(-100%) scale(.7); }
+	30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromleft {
+    0% { transform: translateX(-100%) scale(.7); }
+	30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+@-webkit-keyframes flowinfromright {
+    0% { -webkit-transform: translateX(100%) scale(.7); }
+	30%, 40% { -webkit-transform: translateX(0) scale(.7); }
+    100% { -webkit-transform: translateX(0) scale(1); }
+}
+@-moz-keyframes flowinfromright {
+    0% { -moz-transform: translateX(100%) scale(.7); }
+	30%, 40% { -moz-transform: translateX(0) scale(.7); }
+    100% { -moz-transform: translateX(0) scale(1); }
+}
+@keyframes flowinfromright {
+    0% { transform: translateX(100%) scale(.7); }
+	30%, 40% { transform: translateX(0) scale(.7); }
+    100% { transform: translateX(0) scale(1); }
+}
+.ui-field-contain,
+.ui-mobile fieldset.ui-field-contain {
+	display: block;
+	position: relative;
+	overflow: visible;
+	clear: both;
+	padding: .8em 0;
+}
+.ui-field-contain > label ~ [class*="ui-"],
+.ui-field-contain .ui-controlgroup-controls {
+	margin: 0;
+}
+.ui-field-contain:last-child {
+	border-bottom-width: 0;
+}
+@media (min-width: 28em) {
+	.ui-field-contain,
+	.ui-mobile fieldset.ui-field-contain {
+		padding: 0;
+		margin: 1em 0;
+		border-bottom-width: 0;
+	}
+	.ui-field-contain:before,
+	.ui-field-contain:after {
+		content: "";
+		display: table;
+	}
+	.ui-field-contain:after {
+		clear: both;
+	}
+	.ui-field-contain > label,
+	.ui-field-contain .ui-controlgroup-label,
+	.ui-field-contain > .ui-rangeslider > label {
+		float: left;
+		width: 20%;
+		margin: .5em 2% 0 0;
+	}
+	.ui-popup .ui-field-contain > label,
+	.ui-popup .ui-field-contain .ui-controlgroup-label,
+	.ui-popup .ui-field-contain > .ui-rangeslider > label {
+		float: none;
+		width: auto;
+		margin: 0 0 .4em;
+	}
+	.ui-field-contain > label ~ [class*="ui-"],
+	.ui-field-contain .ui-controlgroup-controls {
+		float: left;
+		width: 78%;
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		box-sizing: border-box;
+	}
+	/* ui-hide-label deprecated in 1.4. TODO: Remove in 1.5 */
+	.ui-hide-label > label ~ [class*="ui-"],
+	.ui-hide-label .ui-controlgroup-controls,
+	.ui-popup .ui-field-contain > label ~ [class*="ui-"],
+	.ui-popup .ui-field-contain .ui-controlgroup-controls {
+		float: none;
+		width: 100%;
+	}
+	.ui-field-contain > label ~ .ui-btn-inline {
+		width: auto;
+		margin-right: .625em;
+	}
+	.ui-field-contain > label ~ .ui-btn-inline.ui-btn-icon-notext {
+		width: 1.75em;
+	}
+}
+/* content configurations. */
+.ui-grid-a,
+.ui-grid-b,
+.ui-grid-c,
+.ui-grid-d,
+.ui-grid-solo {
+	overflow: hidden;
+}
+.ui-block-a,
+.ui-block-b,
+.ui-block-c,
+.ui-block-d,
+.ui-block-e {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	float: left;
+	min-height: 1px;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+}
+/* force new row */
+.ui-block-a {
+	clear: left;
+}
+ul.ui-grid-a,
+ul.ui-grid-b,
+ul.ui-grid-c,
+ul.ui-grid-d,
+ul.ui-grid-solo,
+li.ui-block-a,
+li.ui-block-b,
+li.ui-block-c,
+li.ui-block-d,
+li.ui-block-e {
+	margin-left: 0;
+	margin-right: 0;
+	padding: 0;
+	list-style: none;
+}
+/* No margin in grids for 100% width button elements until we can use max-width: fill-available; */
+[class*="ui-block-"] > button.ui-btn {
+	margin-right: 0;
+	margin-left: 0;
+}
+[class*="ui-block-"] > .ui-btn,
+[class*="ui-block-"] > .ui-select,
+[class*="ui-block-"] > .ui-checkbox,
+[class*="ui-block-"] > .ui-radio,
+[class*="ui-block-"] > button.ui-btn-inline,
+[class*="ui-block-"] > button.ui-btn-icon-notext,
+.ui-header [class*="ui-block-"] > button.ui-btn,
+.ui-footer [class*="ui-block-"] > button.ui-btn {
+	margin-right: .3125em;
+	margin-left: .3125em;
+}
+.ui-grid-a > .ui-block-a,
+.ui-grid-a > .ui-block-b {
+	/* width: 49.95%; IE7 */
+	/* margin-right: -.5px; BB5 */
+	width: 50%;
+}
+.ui-grid-b > .ui-block-a,
+.ui-grid-b > .ui-block-b,
+.ui-grid-b > .ui-block-c {
+	/* width: 33.25%; IE7 */
+	/* margin-right: -.5px; BB5 */
+	width: 33.333%;
+}
+.ui-grid-c > .ui-block-a,
+.ui-grid-c > .ui-block-b,
+.ui-grid-c > .ui-block-c,
+.ui-grid-c > .ui-block-d {
+	/* width: 24.925%; IE7 */
+	/* margin-right: -.5px; BB5 */
+	width: 25%;
+}
+.ui-grid-d > .ui-block-a,
+.ui-grid-d > .ui-block-b,
+.ui-grid-d > .ui-block-c,
+.ui-grid-d > .ui-block-d,
+.ui-grid-d > .ui-block-e {
+	/* width: 19.925%; IE7 */
+	width: 20%;
+}
+.ui-grid-solo > .ui-block-a {
+	width: 100%;
+	float: none; 
+}
+/* preset breakpoint to switch to stacked grid styles below 35em (560px) */
+@media (max-width: 35em) {
+	.ui-responsive > .ui-block-a,
+	.ui-responsive > .ui-block-b,
+	.ui-responsive > .ui-block-c,
+	.ui-responsive > .ui-block-d,
+	.ui-responsive > .ui-block-e {
+		width: 100%; 
+		float: none; 
+	}
+}
+/* fixed page header & footer configuration */
+.ui-header-fixed,
+.ui-footer-fixed {
+	left: 0;
+	right: 0;
+	width: 100%;
+	position: fixed;
+	z-index: 1000;
+}
+.ui-header-fixed {
+	top: -1px;
+	padding-top: 1px;
+}
+.ui-header-fixed.ui-fixed-hidden {
+	top: 0;
+	padding-top: 0;
+}
+.ui-header-fixed .ui-btn-left,
+.ui-header-fixed .ui-btn-right {
+	margin-top: 1px;
+}
+.ui-header-fixed.ui-fixed-hidden .ui-btn-left,
+.ui-header-fixed.ui-fixed-hidden .ui-btn-right {
+	margin-top: 0;
+}
+.ui-footer-fixed {
+	bottom: -1px;
+	padding-bottom: 1px;
+}
+.ui-footer-fixed.ui-fixed-hidden {
+	bottom: 0;
+	padding-bottom: 0;
+}
+.ui-header-fullscreen,
+.ui-footer-fullscreen {
+	filter: Alpha(Opacity=90);
+	opacity: .9;
+}
+/* updatePagePadding() will update the padding to actual height of header and footer. */
+.ui-page-header-fixed {
+	padding-top: 2.8125em;
+}
+.ui-page-footer-fixed {
+	padding-bottom: 2.8125em;
+}
+.ui-page-header-fullscreen > .ui-content,
+.ui-page-footer-fullscreen > .ui-content {
+	padding: 0;
+}
+.ui-fixed-hidden {
+	position: absolute;
+}
+/* Tap toggle: hide external fixed footer. See issue #6604 */
+.ui-footer-fixed.ui-fixed-hidden {
+  display: none;
+}
+.ui-page .ui-footer-fixed.ui-fixed-hidden {
+  display: block
+}
+.ui-page-header-fullscreen .ui-fixed-hidden,
+.ui-page-footer-fullscreen .ui-fixed-hidden {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-header-fixed .ui-btn,
+.ui-footer-fixed .ui-btn { 
+	z-index: 10;
+}
+/* workarounds for other widgets */
+.ui-android-2x-fixed .ui-li-has-thumb {
+	-webkit-transform: translate3d(0,0,0);
+}
+.ui-navbar {
+	max-width: 100%;
+}
+.ui-navbar ul:before,
+.ui-navbar ul:after {
+	content: "";
+	display: table;
+}
+.ui-navbar ul:after {
+	clear: both;
+}
+.ui-navbar ul {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+	position: relative;
+	display: block;
+	border: 0;
+	max-width: 100%;
+	overflow: visible;
+}
+.ui-navbar li .ui-btn {
+	font-size: 12.5px;
+	display: block;
+	margin: 0;
+	border-right-width: 0;
+}
+.ui-header .ui-navbar li button.ui-btn,
+.ui-footer .ui-navbar li button.ui-btn {
+	margin: 0;
+	width: 100%;
+}
+.ui-navbar .ui-btn:focus {
+	z-index: 1;
+}
+/* fixes gaps caused by subpixel problem */
+.ui-navbar li:last-child .ui-btn {
+	margin-right: -4px;
+}
+.ui-navbar li:last-child .ui-btn:after {
+	margin-right: 4px;
+}
+.ui-content .ui-navbar li:last-child .ui-btn,
+.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn {
+	border-right-width: 1px;
+	margin-right: 0;
+}
+.ui-content .ui-navbar li:last-child .ui-btn:after,
+.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn:after {
+	margin-right: 0;
+}
+.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn {
+	border-right-width: 1px;
+	margin-right: -1px;
+}
+.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn:after {
+	margin-right: 1px;
+}
+.ui-navbar .ui-grid-duo .ui-btn {
+	border-top-width: 0;
+}
+.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn {
+	border-top-width: 1px;
+}
+.ui-header .ui-navbar .ui-btn,
+.ui-footer .ui-navbar .ui-btn {
+	border-top-width: 0;
+	border-bottom-width: 0;
+}
+.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn {
+	border-top-width: 0;
+}
+.ui-header .ui-title ~ .ui-navbar .ui-btn,
+.ui-footer .ui-title ~ .ui-navbar .ui-btn,
+.ui-header .ui-navbar .ui-grid-duo .ui-btn,
+.ui-footer .ui-navbar .ui-grid-duo .ui-btn,
+.ui-header .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-footer .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,
+.ui-header .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn,
+.ui-footer .ui-title ~ .ui-navbar .ui-grid-duo .ui-block-a:first-child + .ui-block-b .ui-btn {
+	border-top-width: 1px;
+}
+/* Hide the native input element */
+.ui-input-btn input {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	padding: 0;
+	border: 0;
+	outline: 0;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	cursor: pointer;
+	background: #fff;
+	background: rgba(255,255,255,0);
+	filter: Alpha(Opacity=0);
+	opacity: .1;
+	font-size: 1px;
+	text-indent: -9999px;
+	z-index: 2;
+}
+/* Fixes IE/WP filter alpha opacity bugs */
+.ui-input-btn.ui-state-disabled input {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-collapsible {
+	margin: 0 -1em;
+}
+.ui-collapsible-inset,
+.ui-collapsible-set {
+	margin: .5em 0;
+}
+.ui-collapsible-heading {
+	display: block;
+	margin: 0;
+	padding: 0;
+	position: relative;
+}
+.ui-collapsible-heading .ui-btn {
+	text-align: left;
+	margin: 0;
+	border-left-width: 0;
+	border-right-width: 0;
+}
+.ui-collapsible-heading .ui-btn-icon-top,
+.ui-collapsible-heading .ui-btn-icon-bottom {
+	text-align: center;
+}
+.ui-collapsible-inset .ui-collapsible-heading .ui-btn {
+	border-right-width: 1px;
+	border-left-width: 1px;
+}
+.ui-collapsible-collapsed + .ui-collapsible:not(.ui-collapsible-inset) > .ui-collapsible-heading .ui-btn {
+	border-top-width: 0;
+}
+.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn {
+	border-top-width: 1px;
+}
+.ui-collapsible-heading-status {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-collapsible-content {
+	display: block;
+	margin: 0;	
+	padding: .5em 1em;
+}
+.ui-collapsible-themed-content .ui-collapsible-content {
+	border-left-width: 0;
+	border-right-width: 0;
+	border-top-width: 0;
+	border-bottom-width: 1px;
+	border-style: solid;
+}
+.ui-collapsible-inset.ui-collapsible-themed-content .ui-collapsible-content {
+	border-left-width: 1px;
+	border-right-width: 1px;
+}
+.ui-collapsible-inset .ui-collapsible-content {
+	margin: 0;
+}
+.ui-collapsible-content-collapsed {
+	display: none;
+}
+.ui-collapsible-set > .ui-collapsible.ui-corner-all {
+	-webkit-border-radius: 0;
+	border-radius: 0;
+}
+.ui-collapsible-heading,
+.ui-collapsible-heading > .ui-btn {
+	-webkit-border-radius: inherit;	
+	border-radius: inherit;	
+}
+.ui-collapsible-set .ui-collapsible.ui-first-child {
+	-webkit-border-top-right-radius: inherit;	
+	border-top-right-radius: inherit;
+	-webkit-border-top-left-radius: inherit;	
+	border-top-left-radius: inherit;		
+}
+.ui-collapsible-content,
+.ui-collapsible-set .ui-collapsible.ui-last-child {
+	-webkit-border-bottom-right-radius: inherit;	
+	border-bottom-right-radius: inherit;
+	-webkit-border-bottom-left-radius: inherit;	
+	border-bottom-left-radius: inherit;		
+}
+.ui-collapsible-themed-content:not(.ui-collapsible-collapsed) > .ui-collapsible-heading {
+	-webkit-border-bottom-right-radius: 0;	
+	border-bottom-right-radius: 0;
+	-webkit-border-bottom-left-radius: 0;	
+	border-bottom-left-radius: 0;		
+}
+.ui-collapsible-set .ui-collapsible {
+	margin: -1px -1em 0;
+}
+.ui-collapsible-set .ui-collapsible-inset {
+	margin: -1px 0 0;
+}
+.ui-collapsible-set .ui-collapsible.ui-first-child {
+	margin-top: 0;
+}
+.ui-controlgroup,
+fieldset.ui-controlgroup {
+	padding: 0;
+	margin: .5em 0;
+}
+.ui-field-contain .ui-controlgroup,
+.ui-field-contain fieldset.ui-controlgroup {
+	margin: 0;
+}
+.ui-mini .ui-controlgroup-label {
+	font-size: 16px;
+}
+.ui-controlgroup.ui-mini .ui-btn-icon-notext,
+.ui-controlgroup .ui-mini.ui-btn-icon-notext {
+	font-size: inherit;
+}
+.ui-controlgroup-controls .ui-btn,
+.ui-controlgroup-controls .ui-checkbox,
+.ui-controlgroup-controls .ui-radio,
+.ui-controlgroup-controls .ui-select {
+	margin: 0;
+}
+.ui-controlgroup-controls .ui-btn:focus,
+.ui-controlgroup-controls .ui-btn.ui-focus {
+	z-index: 1;
+}
+.ui-controlgroup-controls li {
+	list-style: none;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls {
+	display: inline-block;
+	vertical-align: middle;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls:before,
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after {
+	content: "";
+	display: table;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls:after {
+	clear: both;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls > .ui-btn,
+.ui-controlgroup-horizontal .ui-controlgroup-controls li > .ui-btn,
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-checkbox,
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-radio,
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-select {
+	float: left;
+	clear: none;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn,
+.ui-controlgroup-controls .ui-btn-icon-notext {
+	width: auto;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn-icon-notext,
+.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn-icon-notext {
+	width: 1.5em;
+}
+ .ui-controlgroup-controls .ui-btn-icon-notext {
+	height: auto;
+	padding: .7em 1em;
+}
+.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn {
+	border-bottom-width: 0;
+}
+.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn.ui-last-child {
+	border-bottom-width: 1px;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn {
+	border-right-width: 0;
+}
+.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn.ui-last-child {
+	border-right-width: 1px;
+}
+.ui-controlgroup-controls .ui-btn-corner-all,
+.ui-controlgroup-controls .ui-btn.ui-corner-all {
+	-webkit-border-radius: 0;
+	border-radius: 0;
+}
+.ui-controlgroup-controls,
+.ui-controlgroup-controls .ui-radio,
+.ui-controlgroup-controls .ui-checkbox,
+.ui-controlgroup-controls .ui-select,
+.ui-controlgroup-controls li {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-first-child {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+}
+.ui-controlgroup-vertical .ui-btn.ui-last-child {
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-first-child {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+}
+.ui-controlgroup-horizontal .ui-btn.ui-last-child {
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+.ui-controlgroup-controls a.ui-shadow:not(:focus),
+.ui-controlgroup-controls button.ui-shadow:not(:focus),
+.ui-controlgroup-controls div.ui-shadow:not(.ui-focus) {
+	-moz-box-shadow: none;
+	-webkit-box-shadow: none;
+	box-shadow: none;
+}
+/* Fixes legend not wrapping on IE10 */
+.ui-controlgroup-label legend {
+	max-width: 100%;
+}
+.ui-controlgroup-controls > label {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-dialog {
+	 background: none !important; /* this is to ensure that dialog theming does not apply (by default at least) on the page div */
+}
+.ui-dialog-contain {
+	width: 92.5%;
+	max-width: 500px;
+	margin: 10% auto 1em auto;
+	padding: 0;
+	position: relative;
+	top: -1em;
+}
+.ui-dialog-contain > .ui-header, 
+.ui-dialog-contain > .ui-content, 
+.ui-dialog-contain > .ui-footer { 
+	display: block;
+	position: relative; 
+	width: auto;
+	margin: 0;
+}
+.ui-dialog-contain > .ui-header {
+	overflow: hidden;
+	z-index: 10; 
+	padding: 0;
+	border-top-width: 0;
+}
+.ui-dialog-contain > .ui-footer {
+	z-index: 10; 
+	padding: 0 1em; 
+	border-bottom-width: 0;
+}
+.ui-popup-open .ui-header-fixed,
+.ui-popup-open .ui-footer-fixed {
+	position: absolute !important; /* See issues #4816, #4844 and #4874 and popup.js */
+}
+.ui-popup-screen {
+	background-image: url("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="); /* Necessary to set some form of background to ensure element is clickable in IE6/7. While legacy IE won't understand the data-URI'd image, it ensures no additional requests occur in all other browsers with little overhead. */
+	top: 0;
+	left: 0;
+	right: 0;
+	bottom: 1px;
+	position: absolute;
+	filter: Alpha(Opacity=0);
+	opacity: 0;
+	z-index: 1099;
+}
+.ui-popup-screen.in {
+	opacity: 0.5;
+	filter: Alpha(Opacity=50);
+}
+.ui-popup-screen.out {
+	opacity: 0;
+	filter: Alpha(Opacity=0);
+}
+.ui-popup-container {
+	z-index: 1100;
+	display: inline-block;
+	position: absolute;
+	padding: 0;
+	outline: 0;
+}
+.ui-popup {
+	position: relative;
+}
+.ui-popup.ui-body-inherit {
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-popup-hidden {
+	left: 0;
+	top: 0;
+	position: absolute !important;
+	visibility: hidden;
+}
+.ui-popup-truncate {
+	height: 1px;
+	width: 1px;
+	margin: -1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-popup.ui-content,
+.ui-popup .ui-content {
+	overflow: visible;
+}
+.ui-popup > .ui-header {
+	border-top-width: 0;
+}
+.ui-popup > .ui-footer {
+	border-bottom-width: 0;
+}
+.ui-popup > p,
+.ui-popup > h1,
+.ui-popup > h2,
+.ui-popup > h3,
+.ui-popup > h4,
+.ui-popup > h5,
+.ui-popup > h6 {
+	margin: .5em .4375em;
+}
+.ui-popup > span {
+	display: block;
+	margin: .5em .4375em;
+}
+.ui-popup-container .ui-content > p,
+.ui-popup-container .ui-content > h1,
+.ui-popup-container .ui-content > h2,
+.ui-popup-container .ui-content > h3,
+.ui-popup-container .ui-content > h4,
+.ui-popup-container .ui-content > h5,
+.ui-popup-container .ui-content > h6 {
+	margin: .5em 0;
+}
+.ui-popup-container .ui-content > span {
+	margin: 0;
+}
+.ui-popup-container .ui-content > p:first-child,
+.ui-popup-container .ui-content > h1:first-child,
+.ui-popup-container .ui-content > h2:first-child,
+.ui-popup-container .ui-content > h3:first-child,
+.ui-popup-container .ui-content > h4:first-child,
+.ui-popup-container .ui-content > h5:first-child,
+.ui-popup-container .ui-content > h6:first-child {
+	margin-top: 0;
+}
+.ui-popup-container .ui-content > p:last-child,
+.ui-popup-container .ui-content > h1:last-child,
+.ui-popup-container .ui-content > h2:last-child,
+.ui-popup-container .ui-content > h3:last-child,
+.ui-popup-container .ui-content > h4:last-child,
+.ui-popup-container .ui-content > h5:last-child,
+.ui-popup-container .ui-content > h6:last-child {
+	margin-bottom: 0;
+}
+.ui-popup > img {
+	max-width: 100%;
+	max-height: 100%;
+	vertical-align: middle;
+}
+.ui-popup:not(.ui-content) > img:only-child,
+.ui-popup:not(.ui-content) > .ui-btn-left:first-child + img:last-child,
+.ui-popup:not(.ui-content) > .ui-btn-right:first-child + img:last-child {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+.ui-popup iframe {
+	vertical-align: middle;
+}
+.ui-popup > .ui-btn-left,
+.ui-popup > .ui-btn-right {
+	position: absolute; 
+	top: -11px;
+	margin: 0;
+	z-index: 1101;
+}
+.ui-popup > .ui-btn-left {
+	left: -11px;
+}
+.ui-popup > .ui-btn-right {
+	right: -11px;
+}
+/* Dimensions related to the popup arrow
+-----------------------------------------------------------------------------------------------------------*/
+/* desired triangle height: 10px */
+/**
+ * guide for the arrow - its width, height, and offset are theme-dependent and
+ * should be expessed as left, right, top, bottom, so that the element bearing
+ * such a class becomes stretched inside its parent position: relative element.
+ * The left/top/right/bottom specified below should reflect the corresponding
+ * border radii and so it leaves room for the shadow:
+ *     ..--------------------..
+ *   ."        ^ top           ".
+ *  /          v                 \
+ * |     +------------------+     |
+ * |     |                  |     |
+ * | left|                  |right|
+ * |<--->|                  |<--->|
+ * |     +------------------+     |
+ *  \          ^                 /
+ *   `.        v bottom        .'
+ *     ""--------------------""
+ * The idea is that the top/left of the arrow container box does not move to a
+ * coordinate smaller than the top/left of the guide and the right/bottom of
+ * the arrow container box does not move to a coordinate larger than the
+ * bottom/right of the guide. This will help us avoid the following situation:
+ *        ..--------------------..
+ *      ."        ^ top           ".
+ *   /|/          v                 \
+ *  / |     +------------------+     |
+ *  \ |     |                  |     |
+ *   \| left|                  |right|
+ *    |<--->|                  |<--->|
+ *    |     +------------------+     |
+ *     \          ^                 /
+ *      `.        v bottom        .'
+ *        ""--------------------""
+ * The arrow should not receive a top/left coordinate such that it is too close
+ * to one of the corners, because then at first the shadow of the arrow and,
+ * given a coordinate even closer to the corner, even the body of the arrow will
+ * "stick out" of the corner of the popup. The guide provides a hint to the
+ * arrow positioning code as to which range of values is acceptable for the
+ * arrow container's top/left coordinate.
+ **/
+.ui-popup-arrow-container {
+	width: 20px;
+	height: 20px;
+}
+/* aside from the "infinities" (-1000,2000), triangle height is used */
+.ui-popup-arrow-container.ui-popup-arrow-l {
+	left: -10px;
+	clip: rect(-1000px,10px,2000px,-1000px);
+}
+.ui-popup-arrow-container.ui-popup-arrow-t {
+	top: -10px;
+	clip: rect(-1000px,2000px,10px,-1000px);
+}
+.ui-popup-arrow-container.ui-popup-arrow-r {
+	right: -10px;
+	clip: rect(-1000px,2000px,2000px,10px);
+}
+.ui-popup-arrow-container.ui-popup-arrow-b {
+	bottom: -10px;
+	clip: rect(10px,2000px,1000px,-1000px);
+}
+/**
+ * For each side, the arrow is twice the desired size and its corner is aligned
+ * with the edge of the container:
+ *                                           
+ *           /\         /\                +----+       /\
+ *          /  \       /  \               | /\ |top   /  \
+ *      +----+  \     /  +----+       +-->|/  \|     /    \
+ *  left| /  |   \   /   |  \ |right  |   |    |    /      \
+ *      |/   |    \ /    |   \|       |  /|    |\  /        \
+ *      |\   |    / \    |   /|       | / +----+ \ \ +----+ /
+ *      | \  |   /   \   |  / |       | \        /  \|    |/
+ *      +----+  /     \  +----+       |  \      /    |    |
+ *       ^  \  /       \  /  ^        |   \    /  +->|\  /|
+ *       |   \/         \/   |        |    \  /   |  | \/ |bottom
+ *       |                   |        |     \/    |  +----+
+ *       +-------------------+--------+-----------+
+ *                           |
+ *                    arrow container
+ *                     (clips arrow)
+ **/
+.ui-popup-arrow-container .ui-popup-arrow {
+	/* (4*desired triangle height)/sqrt(2) - does not account for border - centred within the outer rectangle */
+	width: 28.284271247px;
+	height: 28.284271247px;
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-popup-arrow-container.ui-popup-arrow-t .ui-popup-arrow {
+	left: -4.142135623px;
+	top: 5.857864376px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-b .ui-popup-arrow {
+	left: -4.142135623px;
+	top: -14.142135623px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-l .ui-popup-arrow {
+	left: 5.857864376px;
+	top: -4.142135623px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-r .ui-popup-arrow {
+	left: -14.142135623px;
+	top: -4.142135623px;
+}
+/* Fix rotation center for oldIE - see http://www.useragentman.com/IETransformsTranslator/ */
+.ui-popup-arrow-container.ui-popup-arrow-t.ie .ui-popup-arrow {
+    margin-left: -5.857864376269049px;
+    margin-top: -7.0710678118654755px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-b.ie .ui-popup-arrow {
+    margin-left: -5.857864376269049px;
+    margin-top: -4.142135623730951px;
+}
+ 
+.ui-popup-arrow-container.ui-popup-arrow-l.ie .ui-popup-arrow {
+    margin-left: -7.0710678118654755px;
+    margin-top: -5.857864376269049px;
+}
+.ui-popup-arrow-container.ui-popup-arrow-r.ie .ui-popup-arrow {
+    margin-left: -4.142135623730951px;
+    margin-top: -5.857864376269049px;
+}
+/* structure */
+.ui-popup > .ui-popup-arrow-guide {
+	position: absolute;
+	left: 0;
+	right: 0;
+	top: 0;
+	bottom: 0;
+	visibility: hidden;
+}
+.ui-popup-arrow-container {
+	position: absolute;
+}
+.ui-popup-arrow {
+	-webkit-transform: rotate(45deg);
+	-moz-transform: rotate(45deg);
+	-ms-transform: rotate(45deg);
+	transform: rotate(45deg);
+	position: absolute;
+	overflow: hidden;
+	box-sizing: border-box;
+}
+.ui-popup-arrow-container.ie .ui-popup-arrow {
+	-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.7071067811865474, M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865474, SizingMethod='auto expand')";
+	filter: progid:DXImageTransform.Microsoft.Matrix(
+	      	M11=0.7071067811865474,
+        	M12=-0.7071067811865477,
+        	M21=0.7071067811865477,
+        	M22=0.7071067811865474,
+        	SizingMethod='auto expand');
+}
+.ui-checkbox,
+.ui-radio {
+	margin: .5em 0;
+	position: relative;
+}
+.ui-checkbox .ui-btn,
+.ui-radio .ui-btn {
+	margin: 0;
+	text-align: left;
+	white-space: normal; /* Nowrap + ellipsis doesn't work on label. Issue #1419. */
+	z-index: 2;
+}
+.ui-controlgroup .ui-checkbox .ui-btn.ui-focus,
+.ui-controlgroup .ui-radio .ui-btn.ui-focus {
+	z-index: 3;
+}
+.ui-checkbox .ui-btn-icon-top,
+.ui-radio .ui-btn-icon-top,
+.ui-checkbox .ui-btn-icon-bottom,
+.ui-radio .ui-btn-icon-bottom {
+	text-align: center;
+}
+.ui-controlgroup-horizontal .ui-checkbox .ui-btn:after,
+.ui-controlgroup-horizontal .ui-radio .ui-btn:after {
+	content: none;
+	display: none;
+}
+/* Native input positioning */
+.ui-checkbox input,
+.ui-radio input {
+	position: absolute;
+	left: .466em;
+	top: 50%;
+	width: 22px;
+	height: 22px;
+	margin: -11px 0 0 0;
+	outline: 0 !important;
+	z-index: 1;
+}
+.ui-controlgroup-horizontal .ui-checkbox input,
+.ui-controlgroup-horizontal .ui-radio input {
+	left: 50%;
+	margin-left: -9px;
+}
+.ui-checkbox input:disabled,
+.ui-radio input:disabled {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-select {
+	margin-top: .5em;
+	margin-bottom: .5em; /* no shorthand for margin because it would override margin-right for inline selects */
+	position: relative;
+}
+.ui-select > select {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-select .ui-btn {
+	margin: 0;
+	opacity: 1; /* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including "inherit") without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */
+}
+.ui-select .ui-btn select {
+	position: absolute;
+	top: 0;
+	left: 0;
+	width: 100%;
+	min-height: 1.5em;
+	min-height: 100%;
+	height: 3em;
+	max-height: 100%;
+	outline: 0;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	cursor: pointer;
+	filter: Alpha(Opacity=0);
+	opacity: 0;
+	z-index: 2;
+}
+@-moz-document url-prefix() {
+	.ui-select .ui-btn select {
+		opacity: 0.0001;
+	}
+}
+/* Display none because of issues with IE/WP's filter alpha opacity */
+.ui-select .ui-state-disabled select {
+	display: none;
+}
+/* Because we add all classes of the select and option elements to the span... */ 
+.ui-select span.ui-state-disabled {
+	filter: Alpha(Opacity=100);
+	opacity: 1;
+}
+.ui-select .ui-btn.ui-select-nativeonly {
+	border-radius: 0;
+	border: 0;
+}
+.ui-select .ui-btn.ui-select-nativeonly select {
+	opacity: 1;
+	text-indent: 0;
+	display: block;
+}
+/* ui-li-count is styled in the listview CSS. We set padding and offset here because select supports icon position while listview doesn't. */
+.ui-select .ui-li-has-count.ui-btn {
+	padding-right: 2.8125em;
+}
+.ui-select .ui-li-has-count.ui-btn-icon-right {
+	padding-right: 4.6875em;
+}
+.ui-select .ui-btn-icon-right .ui-li-count {
+	right: 3.2em;
+}
+/* We set the rules for the span as well to fix an issue on Chrome with text-overflow ellipsis for the button in combination with text-align center. */
+.ui-select .ui-btn > span:not(.ui-li-count) {
+	display: block;
+	text-overflow: ellipsis;
+	overflow: hidden !important;
+	white-space: nowrap;
+}
+.ui-selectmenu.ui-popup {
+	min-width: 11em;
+}
+.ui-selectmenu .ui-dialog-contain {
+	overflow: hidden;
+}
+.ui-selectmenu .ui-header {
+	margin: 0;
+	padding: 0;
+	border-width: 0;
+}
+.ui-selectmenu.ui-dialog .ui-header {
+	z-index: 1;
+	position: relative;
+}
+.ui-selectmenu.ui-popup .ui-header {
+	-webkit-border-bottom-right-radius: 0;
+	border-bottom-right-radius: 0;
+	-webkit-border-bottom-left-radius: 0;
+	border-bottom-left-radius: 0;
+}
+/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button.  this shim's content in there */
+.ui-selectmenu.ui-popup .ui-header h1:after {
+	content: '.';
+	visibility: hidden;
+}
+.ui-selectmenu .ui-header .ui-title {
+	margin: 0 2.875em;
+}
+.ui-selectmenu.ui-dialog .ui-content {
+	overflow: visible;
+	z-index: 1;
+}
+.ui-selectmenu .ui-selectmenu-list {
+	margin: 0;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+}
+.ui-header:not(.ui-screen-hidden) + .ui-selectmenu-list {
+	-webkit-border-top-right-radius: 0;
+	border-top-right-radius: 0;
+	-webkit-border-top-left-radius: 0;
+	border-top-left-radius: 0;
+}
+.ui-header.ui-screen-hidden + .ui-selectmenu-list li.ui-first-child .ui-btn {
+	border-top-width: 0;
+}
+.ui-selectmenu .ui-selectmenu-list li.ui-last-child .ui-btn {
+	border-bottom-width: 0;
+}
+.ui-selectmenu .ui-btn.ui-li-divider {
+	cursor: default;
+}
+.ui-selectmenu .ui-selectmenu-placeholder {
+	display: none;
+}
+.ui-listview,
+.ui-listview > li {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+}
+.ui-content .ui-listview,
+.ui-panel-inner > .ui-listview {
+	margin: -1em;
+}
+.ui-content .ui-listview-inset,
+.ui-panel-inner > .ui-listview-inset {
+	margin: 1em 0;
+}
+.ui-collapsible-content > .ui-listview {
+	margin: -.5em -1em;
+}
+.ui-collapsible-content > .ui-listview-inset {
+	margin: .5em 0;
+}
+.ui-listview > li {
+	display: block;
+	position: relative;
+	overflow: visible;
+}
+.ui-listview > .ui-li-static,
+.ui-listview > .ui-li-divider,
+.ui-listview > li > a.ui-btn {
+	margin: 0;
+	display: block;
+	position: relative;
+	text-align: left;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+}
+.ui-listview > li > .ui-btn:focus {
+	z-index: 1;
+}
+.ui-listview > .ui-li-static,
+.ui-listview > .ui-li-divider,
+.ui-listview > li > a.ui-btn {
+	border-width: 1px 0 0 0;
+	border-style: solid;
+}
+.ui-listview-inset > .ui-li-static,
+.ui-listview-inset > .ui-li-divider,
+.ui-listview-inset > li > a.ui-btn {
+	border-right-width: 1px;
+	border-left-width: 1px;
+}
+.ui-listview > .ui-li-static.ui-last-child,
+.ui-listview > .ui-li-divider.ui-last-child,
+.ui-listview > li.ui-last-child > a.ui-btn {
+	border-bottom-width: 1px;
+}
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > li.ui-first-child,
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) > li.ui-first-child > a.ui-btn {
+	border-top-width: 0;
+}
+.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > li.ui-last-child,
+.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset) > li.ui-last-child > a.ui-btn {
+	border-bottom-width: 0;
+}
+.ui-listview > li.ui-first-child,
+.ui-listview > li.ui-first-child > a.ui-btn {
+	-webkit-border-top-right-radius: inherit;	
+	border-top-right-radius: inherit;
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;
+}
+.ui-listview > li.ui-last-child,
+.ui-listview > li.ui-last-child > a.ui-btn {
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;
+}
+.ui-listview > li.ui-li-has-alt > a.ui-btn {
+	-webkit-border-top-right-radius: 0;
+	border-top-right-radius: 0;
+	-webkit-border-bottom-right-radius: 0;
+	border-bottom-right-radius: 0;
+}
+.ui-listview > li.ui-first-child > a.ui-btn + a.ui-btn {
+	-webkit-border-top-left-radius: 0;	
+	border-top-left-radius: 0;
+	-webkit-border-top-right-radius: inherit;
+	border-top-right-radius: inherit;
+}
+.ui-listview > li.ui-last-child > a.ui-btn + a.ui-btn {
+	-webkit-border-bottom-left-radius: 0;
+	border-bottom-left-radius: 0;
+	-webkit-border-bottom-right-radius: inherit;
+	border-bottom-right-radius: inherit;
+}
+.ui-listview > li.ui-first-child img:first-child:not(.ui-li-icon) {
+	-webkit-border-top-left-radius: inherit;
+	border-top-left-radius: inherit;	
+}
+.ui-listview > li.ui-last-child img:first-child:not(.ui-li-icon) {
+	-webkit-border-bottom-left-radius: inherit;
+	border-bottom-left-radius: inherit;	
+}
+.ui-collapsible-content > .ui-listview:not(.ui-listview-inset) {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;	
+}
+.ui-listview > .ui-li-static {
+	padding: .7em 1em;
+}
+.ui-listview > .ui-li-divider {
+	padding: .5em 1.143em;
+	font-size: 14px;
+	font-weight: bold;
+	cursor: default;
+	outline: 0; /* Dividers in custom selectmenus have tabindex */
+}
+.ui-listview > .ui-li-has-count > .ui-btn,
+.ui-listview > .ui-li-static.ui-li-has-count,
+.ui-listview > .ui-li-divider.ui-li-has-count {
+	padding-right: 2.8125em;
+}
+.ui-listview > .ui-li-has-count > .ui-btn-icon-right {
+	padding-right: 4.6875em;
+}
+.ui-listview > .ui-li-has-thumb > .ui-btn,
+.ui-listview > .ui-li-static.ui-li-has-thumb {
+	min-height: 3.625em;
+	padding-left: 6.25em;
+}
+/* ui-li-has-icon deprecated in 1.4. TODO: remove in 1.5 */
+.ui-listview > .ui-li-has-icon > .ui-btn,
+.ui-listview > .ui-li-static.ui-li-has-icon {
+	min-height: 1.25em;
+	padding-left: 2.5em;
+}
+/* Used by both listview and custom multiple select button */
+.ui-li-count {
+	position: absolute;
+	font-size: 12.5px;
+	font-weight: bold;
+	text-align: center;
+	border-width: 1px;
+	border-style: solid;
+	padding: 0 .48em;
+	line-height: 1.6em;
+	min-height: 1.6em;
+	min-width: .64em;
+	right: .8em;
+	top: 50%;
+	margin-top: -.88em;
+}
+.ui-listview .ui-btn-icon-right .ui-li-count {
+	right: 3.2em;
+}
+.ui-listview .ui-li-has-thumb > img:first-child,
+.ui-listview .ui-li-has-thumb > .ui-btn > img:first-child,
+.ui-listview .ui-li-has-thumb .ui-li-thumb {
+	position: absolute;
+	left: 0;
+	top: 0;
+	max-height: 5em;
+	max-width: 5em;
+}
+/* ui-li-has-icon deprecated in 1.4. TODO: remove in 1.5 */
+.ui-listview > .ui-li-has-icon > img:first-child,
+.ui-listview > .ui-li-has-icon > .ui-btn > img:first-child {
+	position: absolute;
+	left: .625em;
+	top: .9em;
+	max-height: 1em;
+	max-width: 1em;
+}
+.ui-listview > li h1,
+.ui-listview > li h2,
+.ui-listview > li h3,
+.ui-listview > li h4,
+.ui-listview > li h5,
+.ui-listview > li h6 {
+	font-size: 1em;
+	font-weight: bold;
+	display: block;
+	margin: .45em 0;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+}
+.ui-listview > li p {
+	font-size: .75em;
+	font-weight: normal;
+	display: block;
+	margin: .6em 0;
+	text-overflow: ellipsis;
+	overflow: hidden;
+	white-space: nowrap;
+}
+.ui-listview .ui-li-aside {
+	position: absolute;
+	top: 1em;
+	right: 3.333em;
+	margin: 0;
+	text-align: right;
+}
+.ui-listview > li.ui-li-has-alt > .ui-btn {
+	margin-right: 2.5em;
+	border-right-width: 0;
+}
+.ui-listview > li.ui-li-has-alt > .ui-btn + .ui-btn {
+	position: absolute;
+	width: 2.5em;
+	height: 100%;
+	min-height: auto;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	border-left-width: 1px;
+	top: 0;
+	right: 0;
+	margin: 0;
+	padding: 0;
+	z-index: 2;
+}
+.ui-listview-inset > li.ui-li-has-alt > .ui-btn + .ui-btn {
+	border-right-width: 1px;
+}
+.ui-listview > li.ui-li-has-alt > .ui-btn + .ui-btn:focus {
+	z-index: 3;
+}
+ol.ui-listview,
+ol.ui-listview > .ui-li-divider {
+	counter-reset: listnumbering;
+}
+ol.ui-listview > li > .ui-btn,
+ol.ui-listview > li.ui-li-static {
+	vertical-align: middle;
+}
+ol.ui-listview > li > .ui-btn:first-child:before,
+ol.ui-listview > li.ui-li-static:before,
+ol.ui-listview > li.ui-field-contain > label:before,
+ol.ui-listview > li.ui-field-contain > .ui-controlgroup-label:before {
+	display: inline-block;
+	font-size: .9em;
+	font-weight: normal;
+	padding-right: .3em;
+	min-width: 1.4em;
+	line-height: 1.5;
+	vertical-align: middle;
+	counter-increment: listnumbering;
+	content: counter(listnumbering) ".";
+}
+ol.ui-listview > li.ui-field-contain:before {
+	content: none;
+	display: none;
+}
+ol.ui-listview > li h1:first-child,
+ol.ui-listview > li h2:first-child,
+ol.ui-listview > li h3:first-child,
+ol.ui-listview > li h4:first-child,
+ol.ui-listview > li h5:first-child,
+ol.ui-listview > li h6:first-child,
+ol.ui-listview > li p:first-child,
+ol.ui-listview > li img:first-child + * {
+	display: inline-block;
+	vertical-align: middle;
+}
+ol.ui-listview > li h1:first-child ~ *,
+ol.ui-listview > li h2:first-child ~ *,
+ol.ui-listview > li h3:first-child ~ *,
+ol.ui-listview > li h4:first-child ~ *,
+ol.ui-listview > li h5:first-child ~ *,
+ol.ui-listview > li h6:first-child ~ *,
+ol.ui-listview > li p:first-child ~ *,
+ol.ui-listview > li img:first-child + * ~ * {
+	margin-top: 0;
+	text-indent: 2.04em; /* (1.4em + .3em) * .9em / .75em */
+}
+html .ui-filterable + .ui-listview,
+html .ui-filterable.ui-listview {
+	margin-top: .5em;
+}
+.ui-collapsible-content > form.ui-filterable {
+	margin-top: -.5em;
+}
+.ui-collapsible-content > .ui-input-search.ui-filterable {
+	margin-top: 0;
+}
+.ui-collapsible-content > .ui-filterable + .ui-listview:not(.ui-listview-inset) > li.ui-first-child,
+.ui-collapsible-content > .ui-filterable + .ui-listview:not(.ui-listview-inset) > li.ui-first-child > a.ui-btn,
+.ui-collapsible-content > .ui-filterable.ui-listview:not(.ui-listview-inset) > li.ui-first-child,
+.ui-collapsible-content > .ui-filterable.ui-listview:not(.ui-listview-inset) > li.ui-first-child > a.ui-btn {
+	border-top-width: 1px;
+}
+div.ui-slider {
+	height: 30px;
+	margin: .5em 0;
+	padding: 0;
+	-ms-touch-action: pan-y pinch-zoom double-tap-zoom;
+}
+div.ui-slider:before,
+div.ui-slider:after {
+	content: "";
+	display: table;
+}
+div.ui-slider:after {
+	clear: both;
+}
+input.ui-slider-input {
+	display: block;
+	float: left;
+	font-size: 14px;
+	font-weight: bold;
+	margin: 0;
+	padding: 4px;
+	width: 40px;
+	height: 20px;
+	line-height: 20px;
+	border-width: 1px;
+	border-style: solid;
+	outline: 0;
+	text-align: center;
+	vertical-align: text-bottom;
+	-webkit-appearance: none;
+	-moz-appearance: none;
+	appearance: none;
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+}
+.ui-slider-input::-webkit-outer-spin-button,
+.ui-slider-input::-webkit-inner-spin-button {
+	-webkit-appearance: none;
+	margin: 0;
+}
+.ui-slider-track {
+	position: relative;
+	overflow: visible;
+	border-width: 1px;
+	border-style: solid;
+	height: 15px;
+	margin: 0 15px 0 68px;
+	top: 6px;
+}
+.ui-slider-track.ui-mini {
+	height: 12px;
+	top: 8px;
+}
+.ui-slider-track .ui-slider-bg {
+	height: 100%;
+}
+/* High level of specificity to override button margins in grids */
+.ui-slider-track .ui-btn.ui-slider-handle {
+	position: absolute;
+	z-index: 1;
+	top: 50%;
+	width: 28px;
+	height: 28px;
+	margin: -15px 0 0 -15px;
+	outline: 0;
+	padding: 0;
+}
+.ui-slider-track.ui-mini .ui-slider-handle {
+	height: 14px;
+	width: 14px;
+	margin: -8px 0 0 -8px;
+}
+select.ui-slider-switch {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+div.ui-slider-switch {
+	display: inline-block;
+	height: 32px;
+	width: 5.8em;
+	top: 0;
+}
+/* reset the clearfix */
+div.ui-slider-switch:before,
+div.ui-slider-switch:after {
+	display: none;
+	clear: none;
+}
+div.ui-slider-switch.ui-mini {
+	height: 29px;
+	top: 0;
+}
+.ui-slider-inneroffset {
+	margin: 0 16px;
+	position: relative;
+	z-index: 1;
+}
+.ui-slider-switch.ui-mini .ui-slider-inneroffset {
+	margin: 0 15px 0 14px;
+}
+.ui-slider-switch .ui-btn.ui-slider-handle {
+	margin: 1px 0 0 -15px;
+}
+.ui-slider-switch.ui-mini .ui-slider-handle {
+	width: 25px;
+	height: 25px;
+	margin: 1px 0 0 -13px;
+	padding: 0;
+}
+.ui-slider-handle-snapping {
+	-webkit-transition: left 70ms linear;
+	-moz-transition: left 70ms linear;
+	transition: left 70ms linear;
+}
+.ui-slider-switch .ui-slider-label {
+	position: absolute;
+	text-align: center;
+	width: 100%;
+	overflow: hidden;
+	font-size: 16px;
+	top: 0;
+	line-height: 2;
+	min-height: 100%;
+	white-space: nowrap;
+	cursor: pointer;
+}
+.ui-slider-switch.ui-mini .ui-slider-label {
+	font-size: 14px;
+}
+.ui-slider-switch .ui-slider-label-a {
+	z-index: 1;
+	left: 0;
+	text-indent: -1.5em;
+}
+.ui-slider-switch .ui-slider-label-b {
+	z-index: 0;
+	right: 0;
+	text-indent: 1.5em;
+}
+/* The corner radii for ui-slider-switch/track can be specified in theme CSS. The bg and handle inherits. */
+.ui-slider-track .ui-slider-bg,
+.ui-slider-switch .ui-slider-label,
+.ui-slider-switch .ui-slider-inneroffset,
+.ui-slider-handle {
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+.ui-field-contain div.ui-slider-switch {
+	margin: 0;
+}
+/* ui-hide-label deprecated in 1.4. TODO: Remove in 1.5 */
+.ui-field-contain div.ui-slider-switch,
+.ui-field-contain.ui-hide-label div.ui-slider-switch,
+html .ui-popup .ui-field-contain div.ui-slider-switch {
+	display: inline-block;
+	width: 5.8em;
+}
+/* slider tooltip
+-----------------------------------------------------------------------------------------------------------*/
+.ui-slider-popup {
+	width: 64px;
+	height: 64px;
+	font-size: 36px;
+	padding-top: 14px;
+	opacity: 0.8;
+}
+.ui-slider-popup {
+	position: absolute !important;
+	text-align: center;
+	z-index: 100;
+}
+.ui-slider-track .ui-btn.ui-slider-handle {
+	font-size: .9em;
+	line-height: 30px;
+}
+.ui-rangeslider {
+	margin: .5em 0;
+}
+.ui-rangeslider:before,
+.ui-rangeslider:after {
+	content: "";
+	display: table;
+}
+.ui-rangeslider:after {
+	clear: both;
+}
+.ui-rangeslider .ui-slider-input.ui-rangeslider-last {
+	float: right;
+}
+.ui-rangeslider .ui-rangeslider-sliders {
+	position: relative;
+	overflow: visible;
+	height: 30px;
+	margin: 0 68px;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track {
+	position: absolute;
+	top: 6px;
+	right: 0;
+	left: 0;
+	margin: 0;
+}
+.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track {
+	top: 8px;
+}
+.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg {
+	display: none;
+}
+.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+	background-color: transparent;
+	background: none;
+	border-width: 0;
+	height: 0;
+}
+/* this makes ie6 and ie7 set height to 0 to fix z-index problem */
+html >/**/body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child {
+	height: 15px;
+	border-width: 1px;
+}
+html >/**/body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child {
+	height: 12px;
+}
+/* Hide the second label (the first is moved outside the div) */
+div.ui-rangeslider label {
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-field-contain .ui-rangeslider input.ui-slider-input,
+.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,
+.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,
+.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders {
+	margin-top: 0;
+	margin-bottom: 0;
+}
+.ui-input-text,
+.ui-input-search {
+	margin: .5em 0;
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-mini {
+	margin: .446em;
+}
+.ui-input-text input,
+.ui-input-search input,
+textarea.ui-input-text {
+	padding: .4em;
+	line-height: 1.4em;
+	display: block;
+	width: 100%;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	outline: 0;
+}
+.ui-input-text input,
+.ui-input-search input {
+	margin: 0;
+	min-height: 2.2em;
+	text-align: left; /* Opera aligns type="date" right by default */
+	border: 0;
+	background: transparent none;
+	-webkit-appearance: none;
+	-webkit-border-radius: inherit;
+	border-radius: inherit;
+}
+textarea.ui-input-text {
+	overflow: auto;
+	resize: vertical;
+}
+.ui-mini .ui-input-text input,
+.ui-mini .ui-input-search input,
+.ui-input-text.ui-mini input,
+.ui-input-search.ui-mini input,
+.ui-mini textarea.ui-input-text,
+textarea.ui-mini {
+	font-size: 14px;
+}
+/* Same margin for mini textareas as other mini sized widgets (12.5/14 * 0.5em) */
+.ui-mini textarea.ui-input-text,
+textarea.ui-mini {
+	margin: .446em 0;
+}
+.ui-input-has-clear,
+.ui-input-search {
+	position: relative;
+}
+/* Padding on the div instead of input because of browser spinners etc. */
+.ui-input-has-clear {
+	padding-right: 2.375em;
+}
+.ui-mini.ui-input-has-clear {
+	padding-right: 2.923em;
+}
+.ui-input-has-clear input {
+	padding-right: 0;
+	/* Autofill on Chrome has bg color so we unset corners right as well. */
+	-webkit-border-top-right-radius: 0;
+	border-top-right-radius: 0;
+	-webkit-border-bottom-right-radius: 0;
+	border-bottom-right-radius: 0;
+}
+/* Search icon */
+.ui-input-search input {
+	padding-left: 1.75em;
+}
+.ui-input-search:after {
+	position: absolute;
+	left: .3125em;
+	top: 50%;
+	margin-top: -7px;
+	content: "";
+	background-position: center center;
+	background-repeat: no-repeat;
+	width: 14px;
+	height: 14px;
+	filter: Alpha(Opacity=50);
+	opacity: .5;
+}
+.ui-input-search.ui-input-has-clear .ui-btn.ui-input-clear,
+.ui-input-text.ui-input-has-clear .ui-btn.ui-input-clear {
+	position: absolute;
+	right: 0;
+	top: 50%;
+	margin: -14px .3125em 0;
+	border: 0;
+	background-color: transparent;
+}
+.ui-input-search .ui-input-clear-hidden,
+.ui-input-text .ui-input-clear-hidden {
+	display: none;
+}
+/* Resolves issue #5166: Added to support issue introduced in Firefox 15. We can likely remove this in the future. */
+.ui-input-text input::-moz-placeholder,
+.ui-input-search input::-moz-placeholder,
+textarea.ui-input-text::-moz-placeholder {
+	color: #aaa;
+}
+/* Same for IE10 */
+.ui-input-text input:-ms-input-placeholder,
+.ui-input-search input:-ms-input-placeholder,
+textarea.ui-input-text:-ms-input-placeholder {
+	color: #aaa;
+}
+/* Resolves issue #5131: Width of textinput depends on its type,
+for Android 4.1 */
+.ui-input-text input[type=number]::-webkit-outer-spin-button {
+	margin: 0;
+}
+/* Resolves issue #5756: Textinput in IE10 has a default clear button */
+.ui-input-text input::-ms-clear,
+.ui-input-search input::-ms-clear {
+	display: none;
+}
+.ui-input-text input:focus,
+.ui-input-search input:focus {
+	-webkit-box-shadow: none;
+	-moz-box-shadow: none;
+	box-shadow: none;
+}
+textarea.ui-input-text.ui-textinput-autogrow {
+	overflow: hidden;
+}
+.ui-textinput-autogrow-resize {
+	-webkit-transition: height 0.25s;
+	-o-transition: height 0.25s;
+	-moz-transition: height 0.25s;
+	transition: height 0.25s;
+}
+.ui-flipswitch {
+	display: inline-block;
+	vertical-align: middle;
+	width: 5.875em; /* Override this and padding-left in next rule if you use labels other than "on/off" and need more space */
+	height: 1.875em;
+	border-width: 1px;
+	border-style: solid;
+	margin: .5em 0;
+	overflow: hidden;
+	-webkit-transition-property: padding, width, background-color, color, border-color;
+	-moz-transition-property: padding, width, background-color, color, border-color;
+	-o-transition-property: padding, width, background-color, color, border-color;
+	transition-property: padding, width, background-color, color, border-color;
+	-webkit-transition-duration: 100ms;
+	-moz-transition-duration: 100ms;
+	-o-transition-duration: 100ms;
+	transition-duration: 100ms;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+	cursor: pointer;
+}
+.ui-flipswitch.ui-flipswitch-active {
+	padding-left: 4em;  /* Override this and width in previous rule if you use labels other than "on/off" and need more space */
+	width: 1.875em;
+}
+.ui-flipswitch-input {
+	position: absolute;
+	height: 1px;
+	width: 1px;
+	margin: -1px;
+	overflow: hidden;
+	clip: rect(1px,1px,1px,1px);
+	border: 0;
+	outline: 0;
+	filter: Alpha(Opacity=0);
+	opacity: 0;
+}
+.ui-flipswitch .ui-btn.ui-flipswitch-on,
+.ui-flipswitch .ui-flipswitch-off {
+	float: left;
+	height: 1.75em;
+	margin: .0625em;
+	line-height: 1.65em;
+}
+.ui-flipswitch .ui-btn.ui-flipswitch-on {
+	width: 1.75em;
+	padding: 0;
+	text-indent: -2.6em; /* Override this to center text if you use a label other than "on" */
+	text-align: left;
+	border-width: 1px;
+	border-style: solid;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	border-radius: inherit;
+	overflow: visible;
+	color: inherit;
+	text-shadow: inherit;
+}
+.ui-flipswitch .ui-flipswitch-off {
+	padding: 1px;
+	text-indent: 1em; /* Override this to center text if you use a label other than "off" */
+}
+/* Override field container CSS to prevent the flipswitch from becomming full width */
+html .ui-field-contain > label + .ui-flipswitch,
+html .ui-popup .ui-field-contain > label + .ui-flipswitch {
+	display: inline-block;
+	width: 5.875em; /* If you override the width for .ui-flipswitch you should repeat the same value here */
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+}
+.ui-field-contain .ui-flipswitch.ui-flipswitch-active,
+.ui-popup .ui-field-contain .ui-flipswitch.ui-flipswitch-active {
+	width: 1.875em;
+}
+.ui-table {
+	border: 0;
+	border-collapse: collapse;
+	padding: 0;
+	width: 100%;
+}
+.ui-table th,
+.ui-table td {
+	line-height: 1.5em;
+	text-align: left;
+	padding: .4em .5em;
+	vertical-align:top;
+}
+.ui-table th .ui-btn,
+.ui-table td .ui-btn {
+	line-height: normal;
+}
+.ui-table th {
+	font-weight: bold;
+}
+.ui-table caption {
+	text-align: left;
+	margin-bottom: 1.4em;
+	opacity: .5;
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-columntoggle-btn {
+	float: right;
+	margin-bottom: .8em;
+}
+/* Remove top/bottom margins around the fieldcontain on check list */
+.ui-table-columntoggle-popup fieldset {
+	margin:0;
+}
+.ui-table-columntoggle {
+	clear: both;
+}
+/* Hide all prioritized columns by default */
+@media only all {
+	th.ui-table-priority-6,
+	td.ui-table-priority-6,
+	th.ui-table-priority-5,
+	td.ui-table-priority-5,
+	th.ui-table-priority-4,
+	td.ui-table-priority-4,
+	th.ui-table-priority-3,
+	td.ui-table-priority-3,
+	th.ui-table-priority-2,
+	td.ui-table-priority-2,
+	th.ui-table-priority-1,
+	td.ui-table-priority-1 {
+		display: none;
+	}
+}
+/* Preset breakpoints if ".ui-responsive" class added to table */
+/* Show priority 1 at 320px (20em x 16px) */
+@media screen and (min-width: 20em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-1,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-1 {
+		display: table-cell;
+	}
+}
+/* Show priority 2 at 480px (30em x 16px) */
+@media screen and (min-width: 30em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-2,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-2 {
+		display: table-cell;
+	}
+}
+/* Show priority 3 at 640px (40em x 16px) */
+@media screen and (min-width: 40em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-3,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-3 {
+		display: table-cell;
+	}
+}
+/* Show priority 4 at 800px (50em x 16px) */
+@media screen and (min-width: 50em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-4,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-4 {
+		display: table-cell;
+	}
+}
+/* Show priority 5 at 960px (60em x 16px) */
+@media screen and (min-width: 60em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-5,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-5 {
+		display: table-cell;
+	}
+}
+/* Show priority 6 at 1,120px (70em x 16px) */
+@media screen and (min-width: 70em) {
+	.ui-table-columntoggle.ui-responsive th.ui-table-priority-6,
+	.ui-table-columntoggle.ui-responsive td.ui-table-priority-6 {
+		display: table-cell;
+	}
+}
+/* Unchecked manually: Always hide */
+.ui-table-columntoggle th.ui-table-cell-hidden,
+.ui-table-columntoggle td.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden {
+	display: none;
+}
+/* Checked manually: Always show */
+.ui-table-columntoggle th.ui-table-cell-visible,
+.ui-table-columntoggle td.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,
+.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible {
+	display: table-cell;
+}
+/*
+ Styles for the table columntoggle mode
+*/
+.ui-table-reflow td .ui-table-cell-label,
+.ui-table-reflow th .ui-table-cell-label { 
+	display: none;
+}
+/* Mobile first styles: Begin with the stacked presentation at narrow widths */ 
+@media only all {
+	/* Hide the table headers */ 
+	.ui-table-reflow thead td, 
+	.ui-table-reflow thead th {
+		display: none;
+	}
+	/* Show the table cells as a block level element */ 
+	.ui-table-reflow td,
+	.ui-table-reflow th { 
+		text-align: left;
+		display: block;
+	}
+	/* Add a fair amount of top margin to visually separate each row when stacked */  
+	.ui-table-reflow tbody th {
+		margin-top: 3em;
+	}
+	/* Make the label elements a percentage width */ 
+	.ui-table-reflow td .ui-table-cell-label,
+	.ui-table-reflow th .ui-table-cell-label { 
+		padding: .4em; 
+		min-width: 30%; 
+		display: inline-block;
+		margin: -.4em 1em -.4em -.4em;
+	}
+	/* For grouped headers, have a different style to visually separate the levels by classing the first label in each col group */ 
+	.ui-table-reflow th .ui-table-cell-label-top,
+	.ui-table-reflow td .ui-table-cell-label-top {
+		display: block;
+		padding: .4em 0;
+		margin: .4em 0;
+		text-transform: uppercase;
+		font-size: .9em;
+		font-weight: normal;
+	}
+}
+/* Breakpoint to show as a standard table at 560px (35em x 16px) or wider */ 
+@media ( min-width: 35em ) {
+	/* Show the table header rows */ 
+	.ui-table-reflow.ui-responsive td,
+	.ui-table-reflow.ui-responsive th,
+	.ui-table-reflow.ui-responsive tbody th,
+	.ui-table-reflow.ui-responsive tbody td,
+	.ui-table-reflow.ui-responsive thead td,
+	.ui-table-reflow.ui-responsive thead th {
+		display: table-cell;
+		margin: 0;
+	}
+	/* Hide the labels in each cell */ 
+	.ui-table-reflow.ui-responsive td .ui-table-cell-label,
+	.ui-table-reflow.ui-responsive th .ui-table-cell-label { 
+		display: none;
+	}
+}
+/* Hack to make IE9 and WP7.5 treat cells like block level elements, scoped to ui-responsive class */ 
+/* Applied in a max-width media query up to the table layout breakpoint so we don't need to negate this*/ 
+@media ( max-width: 35em ) {
+	.ui-table-reflow.ui-responsive td,
+	.ui-table-reflow.ui-responsive th {
+		width: 100%;
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
+		box-sizing: border-box;
+		float: left;
+		clear: left;
+	}
+}
+/* Panel */
+.ui-panel {
+	width: 17em;
+	min-height: 100%;
+	max-height: none;
+	border-width: 0;
+	position: absolute;
+	top: 0;
+	display: block;
+}
+.ui-panel-closed {
+	width: 0;
+	max-height: 100%;
+	overflow: hidden;
+	visibility: hidden;
+	left: 0;
+	clip: rect(1px,1px,1px,1px);
+}
+.ui-panel-fixed {
+	position: fixed;
+	bottom: -1px; /* Fixes gap on Chrome for Android */
+	padding-bottom: 1px;
+}
+.ui-panel-display-reveal {
+	z-index: 1;
+}
+.ui-panel-display-push {
+	z-index: 999;
+}
+.ui-panel-display-overlay {
+	z-index: 1001; /* Fixed toolbars have z-index 1000 */
+}
+.ui-panel-inner {
+	padding: 1em;
+}
+/* Container, page and wrapper */
+.ui-panel-page-container {
+	overflow-x: visible;
+}
+.ui-panel-page-container-themed .ui-page-active {
+	background: none;
+}
+.ui-panel-wrapper {
+	position: relative;
+	min-height: inherit;
+	border: 0;
+	overflow-x: hidden;
+	z-index: 999;
+}
+/* Fixed toolbars */
+.ui-panel-fixed-toolbar {
+	overflow-x: hidden;
+}
+/* Dismiss */
+.ui-panel-dismiss {
+	position: absolute;
+	top: 0;
+	left: 0;
+	right: 0;
+	height: 100%;
+	z-index: 1002;
+	display: none;
+}
+.ui-panel-dismiss-open {
+	display: block;
+}
+/* Animate class is added to panel, wrapper and fixed toolbars */
+.ui-panel-animate {
+	-webkit-transition: -webkit-transform 300ms ease;
+	-webkit-transition-duration: 300ms;
+	-moz-transition: -moz-transform 300ms ease;
+	transition: transform 300ms ease;
+}
+/* Fix for Windows Phone issue #6349: unset the transition for transforms in case of fixed toolbars. */
+@media screen and ( max-device-width: 768px ) {
+	.ui-page-header-fixed .ui-panel-animate.ui-panel-wrapper,
+	.ui-page-footer-fixed .ui-panel-animate.ui-panel-wrapper,
+	.ui-panel-animate.ui-panel-fixed-toolbar {
+		-ms-transition: none;
+	}
+	/* We need a transitionend event ... */
+	.ui-panel-animate.ui-panel-fixed-toolbar {
+		-ms-transition: -ms-transform 1ms;
+		-ms-transform: rotate(0deg);
+	}
+}
+/* Hardware acceleration for smoother transitions on WebKit browsers */
+.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal) {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translate3d(0,0,0);
+}
+/* Panel positioning (for overlay and push) */
+/* Panel left closed */
+.ui-panel-position-left {
+	left: -17em;
+}
+/* Panel left closed animated */
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-left.ui-panel-display-push {
+	left: 0;
+	-webkit-transform: translate3d(-17em,0,0);
+	-moz-transform: translate3d(-17em,0,0);
+	transform: translate3d(-17em,0,0);
+}
+/* Panel left open */
+.ui-panel-position-left.ui-panel-display-reveal, /* Unset "panel left closed" for reveal */
+.ui-panel-open.ui-panel-position-left {
+	left: 0;
+}
+/* Panel left open animated */
+.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-push {
+	-webkit-transform: translate3d(0,0,0);
+	transform: translate3d(0,0,0);
+	-moz-transform: none;
+}
+/* Panel right closed */
+.ui-panel-position-right {
+	right: -17em;
+}
+/* Panel right closed animated */
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-position-right.ui-panel-display-push {
+	right: 0;
+	-webkit-transform: translate3d(17em,0,0);
+	-moz-transform: translate3d(17em,0,0);
+	transform: translate3d(17em,0,0);
+}
+/* Panel right open */
+.ui-panel-position-right.ui-panel-display-reveal, /* Unset "panel right closed" for reveal */
+.ui-panel-position-right.ui-panel-open {
+	right: 0;
+}
+/* Panel right open animated */
+.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-overlay,
+.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-push {
+	-webkit-transform: translate3d(0,0,0);
+	transform: translate3d(0,0,0);
+	-moz-transform: none;
+}
+/* Wrapper and fixed toolbars positioning (for reveal and push) */
+/* Panel left open */
+.ui-panel-page-content-position-left {
+	left: 17em;
+	right: -17em;
+}
+/* Panel left open animated */
+.ui-panel-animate.ui-panel-page-content-position-left {
+	left: 0;
+	right: 0;
+	-webkit-transform: translate3d(17em,0,0);
+	-moz-transform: translate3d(17em,0,0);
+	transform: translate3d(17em,0,0);
+}
+/* Panel right open */
+.ui-panel-page-content-position-right {
+	left: -17em;
+	right: 17em;
+}
+/* Panel right open animated */
+.ui-panel-animate.ui-panel-page-content-position-right {
+	left: 0;
+	right: 0;
+	-webkit-transform: translate3d(-17em,0,0);
+	-moz-transform: translate3d(-17em,0,0);
+	transform: translate3d(-17em,0,0);
+}
+/* Dismiss model open */
+.ui-panel-dismiss-open.ui-panel-dismiss-position-left {
+	left: 17em;
+}
+.ui-panel-dismiss-open.ui-panel-dismiss-position-right {
+	right: 17em;
+}
+/* Shadows and borders */
+.ui-panel-display-reveal {
+	-webkit-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+	box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-reveal {
+	-webkit-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+	box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-display-overlay {
+	-webkit-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: 5px 0 5px rgba(0,0,0,.15);
+	box-shadow: 5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-position-right.ui-panel-display-overlay {
+	-webkit-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+	-moz-box-shadow: -5px 0 5px rgba(0,0,0,.15);
+	box-shadow: -5px 0 5px rgba(0,0,0,.15);
+}
+.ui-panel-open.ui-panel-position-left.ui-panel-display-push {
+	border-right-width: 1px;
+	margin-right: -1px;
+}
+.ui-panel-page-content-position-left.ui-panel-page-content-display-push {
+	margin-left: 1px;
+	width: auto;
+}
+.ui-panel-open.ui-panel-position-right.ui-panel-display-push {
+	border-left-width: 1px;
+	margin-left: -1px;
+}
+.ui-panel-page-content-position-right.ui-panel-page-content-display-push {
+	margin-right: 1px;
+	width: auto;
+}
+/* Responsive: wrap on wide viewports once open */
+@media (min-width:55em) {
+	.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-left {
+		margin-right: 17em;
+	}
+	.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-right {
+		margin-left: 17em;
+	}
+	.ui-responsive-panel .ui-panel-page-content-open {
+		width: auto;	
+	}
+	.ui-responsive-panel .ui-panel-dismiss-display-push,
+	.ui-responsive-panel.ui-page-active ~ .ui-panel-dismiss-display-push {
+		display: none;
+	}
+}
+.ui-tabs {
+	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+	padding: .2em;
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.structure-1.4.5.min.css
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.structure-1.4.5.min.css	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.structure-1.4.5.min.css	(revision 101)
@@ -0,0 +1,3 @@
+/*! jQuery Mobile 1.4.5 | Git HEADhash: 68e55e7 <> 2014-10-31T17:33:30Z | (c) 2010, 2014 jQuery Foundation, Inc. | jquery.org/license */
+
+.ui-mobile,.ui-mobile body{height:99.9%}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile fieldset{border-width:0}.ui-mobile fieldset{min-width:0}@-moz-document url-prefix(){.ui-mobile fieldset{display:table-column;vertical-align:middle}}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:100%;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-page{outline:0}.ui-mobile .ui-page-active{display:block;overflow:visible;overflow-x:hidden}@media screen and (orientation:portrait){.ui-mobile .ui-page{min-height:420px}}@media screen and (orientation:landscape){.ui-mobile .ui-page{min-height:300px}}.ui-mobile-rendering>*{visibility:hidden}.ui-nojs{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-loading .ui-loader{display:block}.ui-loader{display:none;z-index:9999999;position:fixed;top:50%;left:50%;border:0}.ui-loader-default{background:0;filter:Alpha(Opacity=18);opacity:.18;width:2.875em;height:2.875em;margin-left:-1.4375em;margin-top:-1.4375em}.ui-loader-verbose{width:12.5em;filter:Alpha(Opacity=88);opacity:.88;box-shadow:0 1px 1px -1px #fff;height:auto;margin-left:-6.875em;margin-top:-2.6875em;padding:.625em}.ui-loader-default h1{font-size:0;width:0;height:0;overflow:hidden}.ui-loader-verbose h1{font-size:1em;margin:0;text-align:center}.ui-loader .ui-icon-loading{background-color:#000;display:block;margin:0;width:2.75em;height:2.75em;padding:.0625em;-webkit-border-radius:2.25em;border-radius:2.25em}.ui-loader-verbose .ui-icon-loading{margin:0 auto .625em;filter:Alpha(Opacity=75);opacity:.75}.ui-loader-textonly{padding:.9375em;margin-left:-7.1875em}.ui-loader-textonly .ui-icon-loading{display:none}.ui-loader-fakefix{position:absolute}.ui-bar,.ui-body{position:relative;padding:.4em 1em;overflow:hidden;display:block;clear:both}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:1em;display:inline-block}.ui-header,.ui-footer{border-width:1px 0;border-style:solid;position:relative}.ui-header:empty,.ui-footer:empty{min-height:2.6875em}.ui-header .ui-title,.ui-footer .ui-title{font-size:1em;min-height:1.1em;text-align:center;display:block;margin:0 30%;padding:.7em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-footer .ui-title{margin:0 1em}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:1em}.ui-corner-all>.ui-header:first-child,.ui-corner-all>.ui-content:first-child,.ui-corner-all>.ui-footer:first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-corner-all>.ui-header:last-child,.ui-corner-all>.ui-content:last-child,.ui-corner-all>.ui-footer:last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-btn{font-size:16px;margin:.5em 0;padding:.7em 1em;display:block;position:relative;text-align:center;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui-btn-icon-notext,.ui-header button.ui-btn.ui-btn-icon-notext,.ui-footer button.ui-btn.ui-btn-icon-notext{padding:0;width:1.75em;height:1.75em;text-indent:-9999px;white-space:nowrap!important}.ui-mini{font-size:12.5px}.ui-mini .ui-btn{font-size:inherit}.ui-header .ui-btn,.ui-footer .ui-btn{font-size:12.5px;display:inline-block;vertical-align:middle}.ui-header .ui-controlgroup .ui-btn-icon-notext,.ui-footer .ui-controlgroup .ui-btn-icon-notext{font-size:12.5px}.ui-header .ui-btn-left,.ui-header .ui-btn-right{font-size:12.5px}.ui-mini.ui-btn-icon-notext,.ui-mini .ui-btn-icon-notext,.ui-header .ui-btn-icon-notext,.ui-footer .ui-btn-icon-notext{font-size:16px;padding:0}.ui-btn-inline{display:inline-block;vertical-align:middle;margin-right:.625em}.ui-btn-icon-left{padding-left:2.5em}.ui-btn-icon-right{padding-right:2.5em}.ui-btn-icon-top{padding-top:2.5em}.ui-btn-icon-bottom{padding-bottom:2.5em}.ui-header .ui-btn-icon-top,.ui-footer .ui-btn-icon-top,.ui-header .ui-btn-icon-bottom,.ui-footer .ui-btn-icon-bottom{padding-left:.3125em;padding-right:.3125em}.ui-btn-icon-left:after,.ui-btn-icon-right:after,.ui-btn-icon-top:after,.ui-btn-icon-bottom:after,.ui-btn-icon-notext:after{content:"";position:absolute;display:block;width:22px;height:22px}.ui-btn-icon-notext:after,.ui-btn-icon-left:after,.ui-btn-icon-right:after{top:50%;margin-top:-11px}.ui-btn-icon-left:after{left:.5625em}.ui-btn-icon-right:after{right:.5625em}.ui-mini.ui-btn-icon-left:after,.ui-mini .ui-btn-icon-left:after,.ui-header .ui-btn-icon-left:after,.ui-footer .ui-btn-icon-left:after{left:.37em}.ui-mini.ui-btn-icon-right:after,.ui-mini .ui-btn-icon-right:after,.ui-header .ui-btn-icon-right:after,.ui-footer .ui-btn-icon-right:after{right:.37em}.ui-btn-icon-notext:after,.ui-btn-icon-top:after,.ui-btn-icon-bottom:after{left:50%;margin-left:-11px}.ui-btn-icon-top:after{top:.5625em}.ui-btn-icon-bottom:after{top:auto;bottom:.5625em}.ui-header .ui-btn-left,.ui-header .ui-btn-right,.ui-btn-left>[class*=ui-],.ui-btn-right>[class*=ui-]{margin:0}.ui-btn-left,.ui-btn-right{position:absolute;top:.24em}.ui-btn-left{left:.4em}.ui-btn-right{right:.4em}.ui-btn-icon-notext.ui-btn-left{top:.3125em;left:.3125em}.ui-btn-icon-notext.ui-btn-right{top:.3125em;right:.3125em}button.ui-btn,.ui-controlgroup-controls button.ui-btn-icon-notext{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;width:100%}button.ui-btn-inline,.ui-header button.ui-btn,.ui-footer button.ui-btn{width:auto}button.ui-btn::-moz-focus-inner{border:0}button.ui-btn-icon-notext,.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;width:1.75em}.ui-mobile label,.ui-controlgroup-label{display:block;margin:0 0 .4em}.ui-hide-label>label,.ui-hide-label .ui-controlgroup-label,.ui-hide-label .ui-rangeslider label,.ui-hidden-accessible{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-screen-hidden{display:none!important}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-page-pre-in{opacity:0}.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.out{-webkit-animation-timing-function:ease-in;-webkit-animation-duration:225ms;-moz-animation-timing-function:ease-in;-moz-animation-duration:225ms;animation-timing-function:ease-in;animation-duration:225ms}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-moz-keyframes fadein{from{opacity:0}to{opacity:1}}@keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{opacity:1}to{opacity:0}}@-moz-keyframes fadeout{from{opacity:1}to{opacity:0}}@keyframes fadeout{from{opacity:1}to{opacity:0}}.fade.out{opacity:0;-webkit-animation-duration:125ms;-webkit-animation-name:fadeout;-moz-animation-duration:125ms;-moz-animation-name:fadeout;animation-duration:125ms;animation-name:fadeout}.fade.in{opacity:1;-webkit-animation-duration:225ms;-webkit-animation-name:fadein;-moz-animation-duration:225ms;-moz-animation-name:fadein;animation-duration:225ms;animation-name:fadein}.pop{-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);-webkit-animation-name:popin;-webkit-animation-duration:350ms;-moz-transform:scale(1);-moz-animation-name:popin;-moz-animation-duration:350ms;transform:scale(1);animation-name:popin;animation-duration:350ms;opacity:1}.pop.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms;opacity:0}.pop.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;animation-name:fadein}.pop.out.reverse{-webkit-transform:scale(.8);-webkit-animation-name:popout;-moz-transform:scale(.8);-moz-animation-name:popout;transform:scale(.8);animation-name:popout}@-webkit-keyframes popin{from{-webkit-transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes popin{from{-moz-transform:scale(.8);opacity:0}to{-moz-transform:scale(1);opacity:1}}@keyframes popin{from{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.8);opacity:0}}@-moz-keyframes popout{from{-moz-transform:scale(1);opacity:1}to{-moz-transform:scale(.8);opacity:0}}@keyframes popout{from{transform:scale(1);opacity:1}to{transform:scale(.8);opacity:0}}@-webkit-keyframes slideinfromright{from{-webkit-transform:translate3d(100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromright{from{-moz-transform:translateX(100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromright{from{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translate3d(-100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromleft{from{-moz-transform:translateX(-100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromleft{from{transform:translateX(-100%)}to{transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-100%,0,0)}}@-moz-keyframes slideouttoleft{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(-100%)}}@keyframes slideouttoleft{from{transform:translateX(0)}to{transform:translateX(-100%)}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(100%,0,0)}}@-moz-keyframes slideouttoright{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(100%)}}@keyframes slideouttoright{from{transform:translateX(0)}to{transform:translateX(100%)}}.slide.out,.slide.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.slide.out{-webkit-transform:translate3d(-100%,0,0);-webkit-animation-name:slideouttoleft;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;transform:translateX(-100%);animation-name:slideouttoleft}.slide.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromright;-moz-transform:translateX(0);-moz-animation-name:slideinfromright;transform:translateX(0);animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:slideouttoright;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;transform:translateX(100%);animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromleft;-moz-transform:translateX(0);-moz-animation-name:slideinfromleft;transform:translateX(0);animation-name:slideinfromleft}.slidefade.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft;-webkit-animation-duration:225ms;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;-moz-animation-duration:225ms;transform:translateX(-100%);animation-name:slideouttoleft;animation-duration:225ms}.slidefade.in{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidefade.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright;-webkit-animation-duration:200ms;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;-moz-animation-duration:200ms;transform:translateX(100%);animation-name:slideouttoright;animation-duration:200ms}.slidefade.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidedown.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfromtop;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfromtop;animation-duration:250ms}.slidedown.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slidedown.out.reverse{-webkit-transform:translateY(-100%);-webkit-animation-name:slideouttotop;-webkit-animation-duration:200ms;-moz-transform:translateY(-100%);-moz-animation-name:slideouttotop;-moz-animation-duration:200ms;transform:translateY(-100%);animation-name:slideouttotop;animation-duration:200ms}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfromtop{from{-moz-transform:translateY(-100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfromtop{from{transform:translateY(-100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-moz-keyframes slideouttotop{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(-100%)}}@keyframes slideouttotop{from{transform:translateY(0)}to{transform:translateY(-100%)}}.slideup.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfrombottom;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfrombottom;animation-duration:250ms}.slideup.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slideup.out.reverse{-webkit-transform:translateY(100%);-webkit-animation-name:slideouttobottom;-webkit-animation-duration:200ms;-moz-transform:translateY(100%);-moz-animation-name:slideouttobottom;-moz-animation-duration:200ms;transform:translateY(100%);animation-name:slideouttobottom;animation-duration:200ms}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfrombottom{from{-moz-transform:translateY(100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfrombottom{from{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-moz-keyframes slideouttobottom{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(100%)}}@keyframes slideouttobottom{from{transform:translateY(0)}to{transform:translateY(100%)}}.viewport-flip{-webkit-perspective:1000;-moz-perspective:1000;perspective:1000;position:absolute}.flip{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-moz-backface-visibility:hidden;-moz-transform:translateX(0);backface-visibility:hidden;transform:translateX(0)}.flip.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:175ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:175ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:175ms}.flip.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:225ms;-moz-animation-name:flipintoright;-moz-animation-duration:225ms;animation-name:flipintoright;animation-duration:225ms}.flip.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.flip.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.viewport-turn{-webkit-perspective:200px;-moz-perspective:200px;-ms-perspective:200px;perspective:200px;position:absolute}.turn{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-webkit-transform-origin:0;-moz-backface-visibility:hidden;-moz-transform:translateX(0);-moz-transform-origin:0;backface-visibility:hidden;transform:translateX(0);transform-origin:0}.turn.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:125ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:125ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:125ms}.turn.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:250ms;-moz-animation-name:flipintoright;-moz-animation-duration:250ms;animation-name:flipintoright;animation-duration:250ms}.turn.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.turn.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.flow{-webkit-transform-origin:50% 30%;-webkit-box-shadow:0 0 20px rgba(0,0,0,.4);-moz-transform-origin:50% 30%;-moz-box-shadow:0 0 20px rgba(0,0,0,.4);transform-origin:50% 30%;box-shadow:0 0 20px rgba(0,0,0,.4)}.ui-dialog.flow{-webkit-transform-origin:none;-webkit-box-shadow:none;-moz-transform-origin:none;-moz-box-shadow:none;transform-origin:none;box-shadow:none}.flow.out{-webkit-transform:translateX(-100%) scale(.7);-webkit-animation-name:flowouttoleft;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(-100%) scale(.7);-moz-animation-name:flowouttoleft;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(-100%) scale(.7);animation-name:flowouttoleft;animation-timing-function:ease;animation-duration:350ms}.flow.in{-webkit-transform:translateX(0) scale(1);-webkit-animation-name:flowinfromright;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(0) scale(1);-moz-animation-name:flowinfromright;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(0) scale(1);animation-name:flowinfromright;animation-timing-function:ease;animation-duration:350ms}.flow.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:flowouttoright;-moz-transform:translateX(100%);-moz-animation-name:flowouttoright;transform:translateX(100%);animation-name:flowouttoright}.flow.in.reverse{-webkit-animation-name:flowinfromleft;-moz-animation-name:flowinfromleft;animation-name:flowinfromleft}@-webkit-keyframes flowouttoleft{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(-100%) scale(.7)}}@-moz-keyframes flowouttoleft{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(-100%) scale(.7)}}@keyframes flowouttoleft{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(-100%) scale(.7)}}@-webkit-keyframes flowouttoright{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(100%) scale(.7)}}@-moz-keyframes flowouttoright{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(100%) scale(.7)}}@keyframes flowouttoright{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(100%) scale(.7)}}@-webkit-keyframes flowinfromleft{0%{-webkit-transform:translateX(-100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromleft{0%{-moz-transform:translateX(-100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromleft{0%{transform:translateX(-100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}@-webkit-keyframes flowinfromright{0%{-webkit-transform:translateX(100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromright{0%{-moz-transform:translateX(100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromright{0%{transform:translateX(100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}.ui-field-contain,.ui-mobile fieldset.ui-field-contain{display:block;position:relative;overflow:visible;clear:both;padding:.8em 0}.ui-field-contain>label~[class*=ui-],.ui-field-contain .ui-controlgroup-controls{margin:0}.ui-field-contain:last-child{border-bottom-width:0}@media (min-width:28em){.ui-field-contain,.ui-mobile fieldset.ui-field-contain{padding:0;margin:1em 0;border-bottom-width:0}.ui-field-contain:before,.ui-field-contain:after{content:"";display:table}.ui-field-contain:after{clear:both}.ui-field-contain>label,.ui-field-contain .ui-controlgroup-label,.ui-field-contain>.ui-rangeslider>label{float:left;width:20%;margin:.5em 2% 0 0}.ui-popup .ui-field-contain>label,.ui-popup .ui-field-contain .ui-controlgroup-label,.ui-popup .ui-field-contain>.ui-rangeslider>label{float:none;width:auto;margin:0 0 .4em}.ui-field-contain>label~[class*=ui-],.ui-field-contain .ui-controlgroup-controls{float:left;width:78%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-hide-label>label~[class*=ui-],.ui-hide-label .ui-controlgroup-controls,.ui-popup .ui-field-contain>label~[class*=ui-],.ui-popup .ui-field-contain .ui-controlgroup-controls{float:none;width:100%}.ui-field-contain>label~.ui-btn-inline{width:auto;margin-right:.625em}.ui-field-contain>label~.ui-btn-inline.ui-btn-icon-notext{width:1.75em}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d,.ui-grid-solo{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;min-height:1px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-block-a{clear:left}ul.ui-grid-a,ul.ui-grid-b,ul.ui-grid-c,ul.ui-grid-d,ul.ui-grid-solo,li.ui-block-a,li.ui-block-b,li.ui-block-c,li.ui-block-d,li.ui-block-e{margin-left:0;margin-right:0;padding:0;list-style:none}[class*=ui-block-]>button.ui-btn{margin-right:0;margin-left:0}[class*=ui-block-]>.ui-btn,[class*=ui-block-]>.ui-select,[class*=ui-block-]>.ui-checkbox,[class*=ui-block-]>.ui-radio,[class*=ui-block-]>button.ui-btn-inline,[class*=ui-block-]>button.ui-btn-icon-notext,.ui-header [class*=ui-block-]>button.ui-btn,.ui-footer [class*=ui-block-]>button.ui-btn{margin-right:.3125em;margin-left:.3125em}.ui-grid-a>.ui-block-a,.ui-grid-a>.ui-block-b{width:50%}.ui-grid-b>.ui-block-a,.ui-grid-b>.ui-block-b,.ui-grid-b>.ui-block-c{width:33.333%}.ui-grid-c>.ui-block-a,.ui-grid-c>.ui-block-b,.ui-grid-c>.ui-block-c,.ui-grid-c>.ui-block-d{width:25%}.ui-grid-d>.ui-block-a,.ui-grid-d>.ui-block-b,.ui-grid-d>.ui-block-c,.ui-grid-d>.ui-block-d,.ui-grid-d>.ui-block-e{width:20%}.ui-grid-solo>.ui-block-a{width:100%;float:none}@media (max-width:35em){.ui-responsive>.ui-block-a,.ui-responsive>.ui-block-b,.ui-responsive>.ui-block-c,.ui-responsive>.ui-block-d,.ui-responsive>.ui-block-e{width:100%;float:none}}.ui-header-fixed,.ui-footer-fixed{left:0;right:0;width:100%;position:fixed;z-index:1000}.ui-header-fixed{top:-1px;padding-top:1px}.ui-header-fixed.ui-fixed-hidden{top:0;padding-top:0}.ui-header-fixed .ui-btn-left,.ui-header-fixed .ui-btn-right{margin-top:1px}.ui-header-fixed.ui-fixed-hidden .ui-btn-left,.ui-header-fixed.ui-fixed-hidden .ui-btn-right{margin-top:0}.ui-footer-fixed{bottom:-1px;padding-bottom:1px}.ui-footer-fixed.ui-fixed-hidden{bottom:0;padding-bottom:0}.ui-header-fullscreen,.ui-footer-fullscreen{filter:Alpha(Opacity=90);opacity:.9}.ui-page-header-fixed{padding-top:2.8125em}.ui-page-footer-fixed{padding-bottom:2.8125em}.ui-page-header-fullscreen>.ui-content,.ui-page-footer-fullscreen>.ui-content{padding:0}.ui-fixed-hidden{position:absolute}.ui-footer-fixed.ui-fixed-hidden{display:none}.ui-page .ui-footer-fixed.ui-fixed-hidden{display:block}.ui-page-header-fullscreen .ui-fixed-hidden,.ui-page-footer-fullscreen .ui-fixed-hidden{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-header-fixed .ui-btn,.ui-footer-fixed .ui-btn{z-index:10}.ui-android-2x-fixed .ui-li-has-thumb{-webkit-transform:translate3d(0,0,0)}.ui-navbar{max-width:100%}.ui-navbar ul:before,.ui-navbar ul:after{content:"";display:table}.ui-navbar ul:after{clear:both}.ui-navbar ul{list-style:none;margin:0;padding:0;position:relative;display:block;border:0;max-width:100%;overflow:visible}.ui-navbar li .ui-btn{font-size:12.5px;display:block;margin:0;border-right-width:0}.ui-header .ui-navbar li button.ui-btn,.ui-footer .ui-navbar li button.ui-btn{margin:0;width:100%}.ui-navbar .ui-btn:focus{z-index:1}.ui-navbar li:last-child .ui-btn{margin-right:-4px}.ui-navbar li:last-child .ui-btn:after{margin-right:4px}.ui-content .ui-navbar li:last-child .ui-btn,.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn{border-right-width:1px;margin-right:0}.ui-content .ui-navbar li:last-child .ui-btn:after,.ui-content .ui-navbar .ui-grid-duo .ui-block-b .ui-btn:after{margin-right:0}.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn{border-right-width:1px;margin-right:-1px}.ui-navbar .ui-grid-duo .ui-block-a:last-child .ui-btn:after{margin-right:1px}.ui-navbar .ui-grid-duo .ui-btn{border-top-width:0}.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn{border-top-width:1px}.ui-header .ui-navbar .ui-btn,.ui-footer .ui-navbar .ui-btn{border-top-width:0;border-bottom-width:0}.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-header .ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn{border-top-width:0}.ui-header .ui-title~.ui-navbar .ui-btn,.ui-footer .ui-title~.ui-navbar .ui-btn,.ui-header .ui-navbar .ui-grid-duo .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-btn,.ui-header .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-footer .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child .ui-btn,.ui-header .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn,.ui-footer .ui-title~.ui-navbar .ui-grid-duo .ui-block-a:first-child+.ui-block-b .ui-btn{border-top-width:1px}.ui-input-btn input{position:absolute;top:0;left:0;width:100%;height:100%;padding:0;border:0;outline:0;-webkit-border-radius:inherit;border-radius:inherit;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=0);opacity:.1;font-size:1px;text-indent:-9999px;z-index:2}.ui-input-btn.ui-state-disabled input{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-collapsible{margin:0 -1em}.ui-collapsible-inset,.ui-collapsible-set{margin:.5em 0}.ui-collapsible-heading{display:block;margin:0;padding:0;position:relative}.ui-collapsible-heading .ui-btn{text-align:left;margin:0;border-left-width:0;border-right-width:0}.ui-collapsible-heading .ui-btn-icon-top,.ui-collapsible-heading .ui-btn-icon-bottom{text-align:center}.ui-collapsible-inset .ui-collapsible-heading .ui-btn{border-right-width:1px;border-left-width:1px}.ui-collapsible-collapsed+.ui-collapsible:not(.ui-collapsible-inset)>.ui-collapsible-heading .ui-btn{border-top-width:0}.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:1px}.ui-collapsible-heading-status{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-collapsible-content{display:block;margin:0;padding:.5em 1em}.ui-collapsible-themed-content .ui-collapsible-content{border-left-width:0;border-right-width:0;border-top-width:0;border-bottom-width:1px;border-style:solid}.ui-collapsible-inset.ui-collapsible-themed-content .ui-collapsible-content{border-left-width:1px;border-right-width:1px}.ui-collapsible-inset .ui-collapsible-content{margin:0}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set>.ui-collapsible.ui-corner-all{-webkit-border-radius:0;border-radius:0}.ui-collapsible-heading,.ui-collapsible-heading>.ui-btn{-webkit-border-radius:inherit;border-radius:inherit}.ui-collapsible-set .ui-collapsible.ui-first-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-collapsible-content,.ui-collapsible-set .ui-collapsible.ui-last-child{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-collapsible-themed-content:not(.ui-collapsible-collapsed)>.ui-collapsible-heading{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui-collapsible-set .ui-collapsible{margin:-1px -1em 0}.ui-collapsible-set .ui-collapsible-inset{margin:-1px 0 0}.ui-collapsible-set .ui-collapsible.ui-first-child{margin-top:0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0}.ui-field-contain .ui-controlgroup,.ui-field-contain fieldset.ui-controlgroup{margin:0}.ui-mini .ui-controlgroup-label{font-size:16px}.ui-controlgroup.ui-mini .ui-btn-icon-notext,.ui-controlgroup .ui-mini.ui-btn-icon-notext{font-size:inherit}.ui-controlgroup-controls .ui-btn,.ui-controlgroup-controls .ui-checkbox,.ui-controlgroup-controls .ui-radio,.ui-controlgroup-controls .ui-select{margin:0}.ui-controlgroup-controls .ui-btn:focus,.ui-controlgroup-controls .ui-btn.ui-focus{z-index:1}.ui-controlgroup-controls li{list-style:none}.ui-controlgroup-horizontal .ui-controlgroup-controls{display:inline-block;vertical-align:middle}.ui-controlgroup-horizontal .ui-controlgroup-controls:before,.ui-controlgroup-horizontal .ui-controlgroup-controls:after{content:"";display:table}.ui-controlgroup-horizontal .ui-controlgroup-controls:after{clear:both}.ui-controlgroup-horizontal .ui-controlgroup-controls>.ui-btn,.ui-controlgroup-horizontal .ui-controlgroup-controls li>.ui-btn,.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-checkbox,.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-radio,.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-select{float:left;clear:none}.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn,.ui-controlgroup-controls .ui-btn-icon-notext{width:auto}.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn-icon-notext,.ui-controlgroup-horizontal .ui-controlgroup-controls button.ui-btn-icon-notext{width:1.5em}.ui-controlgroup-controls .ui-btn-icon-notext{height:auto;padding:.7em 1em}.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn{border-bottom-width:0}.ui-controlgroup-vertical .ui-controlgroup-controls .ui-btn.ui-last-child{border-bottom-width:1px}.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn{border-right-width:0}.ui-controlgroup-horizontal .ui-controlgroup-controls .ui-btn.ui-last-child{border-right-width:1px}.ui-controlgroup-controls .ui-btn-corner-all,.ui-controlgroup-controls .ui-btn.ui-corner-all{-webkit-border-radius:0;border-radius:0}.ui-controlgroup-controls,.ui-controlgroup-controls .ui-radio,.ui-controlgroup-controls .ui-checkbox,.ui-controlgroup-controls .ui-select,.ui-controlgroup-controls li{-webkit-border-radius:inherit;border-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-last-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup-controls a.ui-shadow:not(:focus),.ui-controlgroup-controls button.ui-shadow:not(:focus),.ui-controlgroup-controls div.ui-shadow:not(.ui-focus){-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.ui-controlgroup-label legend{max-width:100%}.ui-controlgroup-controls>label{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-dialog{background:none!important}.ui-dialog-contain{width:92.5%;max-width:500px;margin:10% auto 1em;padding:0;position:relative;top:-1em}.ui-dialog-contain>.ui-header,.ui-dialog-contain>.ui-content,.ui-dialog-contain>.ui-footer{display:block;position:relative;width:auto;margin:0}.ui-dialog-contain>.ui-header{overflow:hidden;z-index:10;padding:0;border-top-width:0}.ui-dialog-contain>.ui-footer{z-index:10;padding:0 1em;border-bottom-width:0}.ui-popup-open .ui-header-fixed,.ui-popup-open .ui-footer-fixed{position:absolute!important}.ui-popup-screen{background-image:url("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==");top:0;left:0;right:0;bottom:1px;position:absolute;filter:Alpha(Opacity=0);opacity:0;z-index:1099}.ui-popup-screen.in{opacity:.5;filter:Alpha(Opacity=50)}.ui-popup-screen.out{opacity:0;filter:Alpha(Opacity=0)}.ui-popup-container{z-index:1100;display:inline-block;position:absolute;padding:0;outline:0}.ui-popup{position:relative}.ui-popup.ui-body-inherit{border-width:1px;border-style:solid}.ui-popup-hidden{left:0;top:0;position:absolute!important;visibility:hidden}.ui-popup-truncate{height:1px;width:1px;margin:-1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-popup.ui-content,.ui-popup .ui-content{overflow:visible}.ui-popup>.ui-header{border-top-width:0}.ui-popup>.ui-footer{border-bottom-width:0}.ui-popup>p,.ui-popup>h1,.ui-popup>h2,.ui-popup>h3,.ui-popup>h4,.ui-popup>h5,.ui-popup>h6{margin:.5em .4375em}.ui-popup>span{display:block;margin:.5em .4375em}.ui-popup-container .ui-content>p,.ui-popup-container .ui-content>h1,.ui-popup-container .ui-content>h2,.ui-popup-container .ui-content>h3,.ui-popup-container .ui-content>h4,.ui-popup-container .ui-content>h5,.ui-popup-container .ui-content>h6{margin:.5em 0}.ui-popup-container .ui-content>span{margin:0}.ui-popup-container .ui-content>p:first-child,.ui-popup-container .ui-content>h1:first-child,.ui-popup-container .ui-content>h2:first-child,.ui-popup-container .ui-content>h3:first-child,.ui-popup-container .ui-content>h4:first-child,.ui-popup-container .ui-content>h5:first-child,.ui-popup-container .ui-content>h6:first-child{margin-top:0}.ui-popup-container .ui-content>p:last-child,.ui-popup-container .ui-content>h1:last-child,.ui-popup-container .ui-content>h2:last-child,.ui-popup-container .ui-content>h3:last-child,.ui-popup-container .ui-content>h4:last-child,.ui-popup-container .ui-content>h5:last-child,.ui-popup-container .ui-content>h6:last-child{margin-bottom:0}.ui-popup>img{max-width:100%;max-height:100%;vertical-align:middle}.ui-popup:not(.ui-content)>img:only-child,.ui-popup:not(.ui-content)>.ui-btn-left:first-child+img:last-child,.ui-popup:not(.ui-content)>.ui-btn-right:first-child+img:last-child{-webkit-border-radius:inherit;border-radius:inherit}.ui-popup iframe{vertical-align:middle}.ui-popup>.ui-btn-left,.ui-popup>.ui-btn-right{position:absolute;top:-11px;margin:0;z-index:1101}.ui-popup>.ui-btn-left{left:-11px}.ui-popup>.ui-btn-right{right:-11px}.ui-popup-arrow-container{width:20px;height:20px}.ui-popup-arrow-container.ui-popup-arrow-l{left:-10px;clip:rect(-1000px,10px,2000px,-1000px)}.ui-popup-arrow-container.ui-popup-arrow-t{top:-10px;clip:rect(-1000px,2000px,10px,-1000px)}.ui-popup-arrow-container.ui-popup-arrow-r{right:-10px;clip:rect(-1000px,2000px,2000px,10px)}.ui-popup-arrow-container.ui-popup-arrow-b{bottom:-10px;clip:rect(10px,2000px,1000px,-1000px)}.ui-popup-arrow-container .ui-popup-arrow{width:28.284271247px;height:28.284271247px;border-width:1px;border-style:solid}.ui-popup-arrow-container.ui-popup-arrow-t .ui-popup-arrow{left:-4.142135623px;top:5.857864376px}.ui-popup-arrow-container.ui-popup-arrow-b .ui-popup-arrow{left:-4.142135623px;top:-14.142135623px}.ui-popup-arrow-container.ui-popup-arrow-l .ui-popup-arrow{left:5.857864376px;top:-4.142135623px}.ui-popup-arrow-container.ui-popup-arrow-r .ui-popup-arrow{left:-14.142135623px;top:-4.142135623px}.ui-popup-arrow-container.ui-popup-arrow-t.ie .ui-popup-arrow{margin-left:-5.857864376269049px;margin-top:-7.0710678118654755px}.ui-popup-arrow-container.ui-popup-arrow-b.ie .ui-popup-arrow{margin-left:-5.857864376269049px;margin-top:-4.142135623730951px}.ui-popup-arrow-container.ui-popup-arrow-l.ie .ui-popup-arrow{margin-left:-7.0710678118654755px;margin-top:-5.857864376269049px}.ui-popup-arrow-container.ui-popup-arrow-r.ie .ui-popup-arrow{margin-left:-4.142135623730951px;margin-top:-5.857864376269049px}.ui-popup>.ui-popup-arrow-guide{position:absolute;left:0;right:0;top:0;bottom:0;visibility:hidden}.ui-popup-arrow-container{position:absolute}.ui-popup-arrow{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);position:absolute;overflow:hidden;box-sizing:border-box}.ui-popup-arrow-container.ie .ui-popup-arrow{-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.7071067811865474, M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865474, SizingMethod='auto expand')";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.7071067811865474, M12=-.7071067811865477, M21=.7071067811865477, M22=.7071067811865474, SizingMethod='auto expand')}.ui-checkbox,.ui-radio{margin:.5em 0;position:relative}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin:0;text-align:left;white-space:normal;z-index:2}.ui-controlgroup .ui-checkbox .ui-btn.ui-focus,.ui-controlgroup .ui-radio .ui-btn.ui-focus{z-index:3}.ui-checkbox .ui-btn-icon-top,.ui-radio .ui-btn-icon-top,.ui-checkbox .ui-btn-icon-bottom,.ui-radio .ui-btn-icon-bottom{text-align:center}.ui-controlgroup-horizontal .ui-checkbox .ui-btn:after,.ui-controlgroup-horizontal .ui-radio .ui-btn:after{content:none;display:none}.ui-checkbox input,.ui-radio input{position:absolute;left:.466em;top:50%;width:22px;height:22px;margin:-11px 0 0 0;outline:0!important;z-index:1}.ui-controlgroup-horizontal .ui-checkbox input,.ui-controlgroup-horizontal .ui-radio input{left:50%;margin-left:-9px}.ui-checkbox input:disabled,.ui-radio input:disabled{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-select{margin-top:.5em;margin-bottom:.5em;position:relative}.ui-select>select{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-select .ui-btn{margin:0;opacity:1}.ui-select .ui-btn select{position:absolute;top:0;left:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;outline:0;-webkit-border-radius:inherit;border-radius:inherit;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;filter:Alpha(Opacity=0);opacity:0;z-index:2}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-state-disabled select{display:none}.ui-select span.ui-state-disabled{filter:Alpha(Opacity=100);opacity:1}.ui-select .ui-btn.ui-select-nativeonly{border-radius:0;border:0}.ui-select .ui-btn.ui-select-nativeonly select{opacity:1;text-indent:0;display:block}.ui-select .ui-li-has-count.ui-btn{padding-right:2.8125em}.ui-select .ui-li-has-count.ui-btn-icon-right{padding-right:4.6875em}.ui-select .ui-btn-icon-right .ui-li-count{right:3.2em}.ui-select .ui-btn>span:not(.ui-li-count){display:block;text-overflow:ellipsis;overflow:hidden!important;white-space:nowrap}.ui-selectmenu.ui-popup{min-width:11em}.ui-selectmenu .ui-dialog-contain{overflow:hidden}.ui-selectmenu .ui-header{margin:0;padding:0;border-width:0}.ui-selectmenu.ui-dialog .ui-header{z-index:1;position:relative}.ui-selectmenu.ui-popup .ui-header{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui-selectmenu.ui-popup .ui-header h1:after{content:'.';visibility:hidden}.ui-selectmenu .ui-header .ui-title{margin:0 2.875em}.ui-selectmenu.ui-dialog .ui-content{overflow:visible;z-index:1}.ui-selectmenu .ui-selectmenu-list{margin:0;-webkit-border-radius:inherit;border-radius:inherit}.ui-header:not(.ui-screen-hidden)+.ui-selectmenu-list{-webkit-border-top-right-radius:0;border-top-right-radius:0;-webkit-border-top-left-radius:0;border-top-left-radius:0}.ui-header.ui-screen-hidden+.ui-selectmenu-list li.ui-first-child .ui-btn{border-top-width:0}.ui-selectmenu .ui-selectmenu-list li.ui-last-child .ui-btn{border-bottom-width:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-selectmenu .ui-selectmenu-placeholder{display:none}.ui-listview,.ui-listview>li{margin:0;padding:0;list-style:none}.ui-content .ui-listview,.ui-panel-inner>.ui-listview{margin:-1em}.ui-content .ui-listview-inset,.ui-panel-inner>.ui-listview-inset{margin:1em 0}.ui-collapsible-content>.ui-listview{margin:-.5em -1em}.ui-collapsible-content>.ui-listview-inset{margin:.5em 0}.ui-listview>li{display:block;position:relative;overflow:visible}.ui-listview>.ui-li-static,.ui-listview>.ui-li-divider,.ui-listview>li>a.ui-btn{margin:0;display:block;position:relative;text-align:left;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-listview>li>.ui-btn:focus{z-index:1}.ui-listview>.ui-li-static,.ui-listview>.ui-li-divider,.ui-listview>li>a.ui-btn{border-width:1px 0 0;border-style:solid}.ui-listview-inset>.ui-li-static,.ui-listview-inset>.ui-li-divider,.ui-listview-inset>li>a.ui-btn{border-right-width:1px;border-left-width:1px}.ui-listview>.ui-li-static.ui-last-child,.ui-listview>.ui-li-divider.ui-last-child,.ui-listview>li.ui-last-child>a.ui-btn{border-bottom-width:1px}.ui-collapsible-content>.ui-listview:not(.ui-listview-inset)>li.ui-first-child,.ui-collapsible-content>.ui-listview:not(.ui-listview-inset)>li.ui-first-child>a.ui-btn{border-top-width:0}.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset)>li.ui-last-child,.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset)>li.ui-last-child>a.ui-btn{border-bottom-width:0}.ui-listview>li.ui-first-child,.ui-listview>li.ui-first-child>a.ui-btn{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>li.ui-last-child,.ui-listview>li.ui-last-child>a.ui-btn{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-listview>li.ui-li-has-alt>a.ui-btn{-webkit-border-top-right-radius:0;border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.ui-listview>li.ui-first-child>a.ui-btn+a.ui-btn{-webkit-border-top-left-radius:0;border-top-left-radius:0;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-listview>li.ui-last-child>a.ui-btn+a.ui-btn{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-listview>li.ui-first-child img:first-child:not(.ui-li-icon){-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>li.ui-last-child img:first-child:not(.ui-li-icon){-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-collapsible-content>.ui-listview:not(.ui-listview-inset){-webkit-border-radius:inherit;border-radius:inherit}.ui-listview>.ui-li-static{padding:.7em 1em}.ui-listview>.ui-li-divider{padding:.5em 1.143em;font-size:14px;font-weight:700;cursor:default;outline:0}.ui-listview>.ui-li-has-count>.ui-btn,.ui-listview>.ui-li-static.ui-li-has-count,.ui-listview>.ui-li-divider.ui-li-has-count{padding-right:2.8125em}.ui-listview>.ui-li-has-count>.ui-btn-icon-right{padding-right:4.6875em}.ui-listview>.ui-li-has-thumb>.ui-btn,.ui-listview>.ui-li-static.ui-li-has-thumb{min-height:3.625em;padding-left:6.25em}.ui-listview>.ui-li-has-icon>.ui-btn,.ui-listview>.ui-li-static.ui-li-has-icon{min-height:1.25em;padding-left:2.5em}.ui-li-count{position:absolute;font-size:12.5px;font-weight:700;text-align:center;border-width:1px;border-style:solid;padding:0 .48em;line-height:1.6em;min-height:1.6em;min-width:.64em;right:.8em;top:50%;margin-top:-.88em}.ui-listview .ui-btn-icon-right .ui-li-count{right:3.2em}.ui-listview .ui-li-has-thumb>img:first-child,.ui-listview .ui-li-has-thumb>.ui-btn>img:first-child,.ui-listview .ui-li-has-thumb .ui-li-thumb{position:absolute;left:0;top:0;max-height:5em;max-width:5em}.ui-listview>.ui-li-has-icon>img:first-child,.ui-listview>.ui-li-has-icon>.ui-btn>img:first-child{position:absolute;left:.625em;top:.9em;max-height:1em;max-width:1em}.ui-listview>li h1,.ui-listview>li h2,.ui-listview>li h3,.ui-listview>li h4,.ui-listview>li h5,.ui-listview>li h6{font-size:1em;font-weight:700;display:block;margin:.45em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-listview>li p{font-size:.75em;font-weight:400;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-listview .ui-li-aside{position:absolute;top:1em;right:3.333em;margin:0;text-align:right}.ui-listview>li.ui-li-has-alt>.ui-btn{margin-right:2.5em;border-right-width:0}.ui-listview>li.ui-li-has-alt>.ui-btn+.ui-btn{position:absolute;width:2.5em;height:100%;min-height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-left-width:1px;top:0;right:0;margin:0;padding:0;z-index:2}.ui-listview-inset>li.ui-li-has-alt>.ui-btn+.ui-btn{border-right-width:1px}.ui-listview>li.ui-li-has-alt>.ui-btn+.ui-btn:focus{z-index:3}ol.ui-listview,ol.ui-listview>.ui-li-divider{counter-reset:listnumbering}ol.ui-listview>li>.ui-btn,ol.ui-listview>li.ui-li-static{vertical-align:middle}ol.ui-listview>li>.ui-btn:first-child:before,ol.ui-listview>li.ui-li-static:before,ol.ui-listview>li.ui-field-contain>label:before,ol.ui-listview>li.ui-field-contain>.ui-controlgroup-label:before{display:inline-block;font-size:.9em;font-weight:400;padding-right:.3em;min-width:1.4em;line-height:1.5;vertical-align:middle;counter-increment:listnumbering;content:counter(listnumbering) "."}ol.ui-listview>li.ui-field-contain:before{content:none;display:none}ol.ui-listview>li h1:first-child,ol.ui-listview>li h2:first-child,ol.ui-listview>li h3:first-child,ol.ui-listview>li h4:first-child,ol.ui-listview>li h5:first-child,ol.ui-listview>li h6:first-child,ol.ui-listview>li p:first-child,ol.ui-listview>li img:first-child+*{display:inline-block;vertical-align:middle}ol.ui-listview>li h1:first-child~*,ol.ui-listview>li h2:first-child~*,ol.ui-listview>li h3:first-child~*,ol.ui-listview>li h4:first-child~*,ol.ui-listview>li h5:first-child~*,ol.ui-listview>li h6:first-child~*,ol.ui-listview>li p:first-child~*,ol.ui-listview>li img:first-child+*~*{margin-top:0;text-indent:2.04em}html .ui-filterable+.ui-listview,html .ui-filterable.ui-listview{margin-top:.5em}.ui-collapsible-content>form.ui-filterable{margin-top:-.5em}.ui-collapsible-content>.ui-input-search.ui-filterable{margin-top:0}.ui-collapsible-content>.ui-filterable+.ui-listview:not(.ui-listview-inset)>li.ui-first-child,.ui-collapsible-content>.ui-filterable+.ui-listview:not(.ui-listview-inset)>li.ui-first-child>a.ui-btn,.ui-collapsible-content>.ui-filterable.ui-listview:not(.ui-listview-inset)>li.ui-first-child,.ui-collapsible-content>.ui-filterable.ui-listview:not(.ui-listview-inset)>li.ui-first-child>a.ui-btn{border-top-width:1px}div.ui-slider{height:30px;margin:.5em 0;padding:0;-ms-touch-action:pan-y pinch-zoom double-tap-zoom}div.ui-slider:before,div.ui-slider:after{content:"";display:table}div.ui-slider:after{clear:both}input.ui-slider-input{display:block;float:left;font-size:14px;font-weight:700;margin:0;padding:4px;width:40px;height:20px;line-height:20px;border-width:1px;border-style:solid;outline:0;text-align:center;vertical-align:text-bottom;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.ui-slider-input::-webkit-outer-spin-button,.ui-slider-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ui-slider-track{position:relative;overflow:visible;border-width:1px;border-style:solid;height:15px;margin:0 15px 0 68px;top:6px}.ui-slider-track.ui-mini{height:12px;top:8px}.ui-slider-track .ui-slider-bg{height:100%}.ui-slider-track .ui-btn.ui-slider-handle{position:absolute;z-index:1;top:50%;width:28px;height:28px;margin:-15px 0 0 -15px;outline:0;padding:0}.ui-slider-track.ui-mini .ui-slider-handle{height:14px;width:14px;margin:-8px 0 0 -8px}select.ui-slider-switch{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}div.ui-slider-switch{display:inline-block;height:32px;width:5.8em;top:0}div.ui-slider-switch:before,div.ui-slider-switch:after{display:none;clear:none}div.ui-slider-switch.ui-mini{height:29px;top:0}.ui-slider-inneroffset{margin:0 16px;position:relative;z-index:1}.ui-slider-switch.ui-mini .ui-slider-inneroffset{margin:0 15px 0 14px}.ui-slider-switch .ui-btn.ui-slider-handle{margin:1px 0 0 -15px}.ui-slider-switch.ui-mini .ui-slider-handle{width:25px;height:25px;margin:1px 0 0 -13px;padding:0}.ui-slider-handle-snapping{-webkit-transition:left 70ms linear;-moz-transition:left 70ms linear;transition:left 70ms linear}.ui-slider-switch .ui-slider-label{position:absolute;text-align:center;width:100%;overflow:hidden;font-size:16px;top:0;line-height:2;min-height:100%;white-space:nowrap;cursor:pointer}.ui-slider-switch.ui-mini .ui-slider-label{font-size:14px}.ui-slider-switch .ui-slider-label-a{z-index:1;left:0;text-indent:-1.5em}.ui-slider-switch .ui-slider-label-b{z-index:0;right:0;text-indent:1.5em}.ui-slider-track .ui-slider-bg,.ui-slider-switch .ui-slider-label,.ui-slider-switch .ui-slider-inneroffset,.ui-slider-handle{-webkit-border-radius:inherit;border-radius:inherit}.ui-field-contain div.ui-slider-switch{margin:0}.ui-field-contain div.ui-slider-switch,.ui-field-contain.ui-hide-label div.ui-slider-switch,html .ui-popup .ui-field-contain div.ui-slider-switch{display:inline-block;width:5.8em}.ui-slider-popup{width:64px;height:64px;font-size:36px;padding-top:14px;opacity:.8}.ui-slider-popup{position:absolute!important;text-align:center;z-index:100}.ui-slider-track .ui-btn.ui-slider-handle{font-size:.9em;line-height:30px}.ui-rangeslider{margin:.5em 0}.ui-rangeslider:before,.ui-rangeslider:after{content:"";display:table}.ui-rangeslider:after{clear:both}.ui-rangeslider .ui-slider-input.ui-rangeslider-last{float:right}.ui-rangeslider .ui-rangeslider-sliders{position:relative;overflow:visible;height:30px;margin:0 68px}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track{position:absolute;top:6px;right:0;left:0;margin:0}.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track{top:8px}.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg{display:none}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{background-color:transparent;background:0;border-width:0;height:0}html >body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{height:15px;border-width:1px}html >body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child{height:12px}div.ui-rangeslider label{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}.ui-field-contain .ui-rangeslider input.ui-slider-input,.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders{margin-top:0;margin-bottom:0}.ui-input-text,.ui-input-search{margin:.5em 0;border-width:1px;border-style:solid}.ui-mini{margin:.446em}.ui-input-text input,.ui-input-search input,textarea.ui-input-text{padding:.4em;line-height:1.4em;display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;outline:0}.ui-input-text input,.ui-input-search input{margin:0;min-height:2.2em;text-align:left;border:0;background:transparent none;-webkit-appearance:none;-webkit-border-radius:inherit;border-radius:inherit}textarea.ui-input-text{overflow:auto;resize:vertical}.ui-mini .ui-input-text input,.ui-mini .ui-input-search input,.ui-input-text.ui-mini input,.ui-input-search.ui-mini input,.ui-mini textarea.ui-input-text,textarea.ui-mini{font-size:14px}.ui-mini textarea.ui-input-text,textarea.ui-mini{margin:.446em 0}.ui-input-has-clear,.ui-input-search{position:relative}.ui-input-has-clear{padding-right:2.375em}.ui-mini.ui-input-has-clear{padding-right:2.923em}.ui-input-has-clear input{padding-right:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.ui-input-search input{padding-left:1.75em}.ui-input-search:after{position:absolute;left:.3125em;top:50%;margin-top:-7px;content:"";background-position:center center;background-repeat:no-repeat;width:14px;height:14px;filter:Alpha(Opacity=50);opacity:.5}.ui-input-search.ui-input-has-clear .ui-btn.ui-input-clear,.ui-input-text.ui-input-has-clear .ui-btn.ui-input-clear{position:absolute;right:0;top:50%;margin:-14px .3125em 0;border:0;background-color:transparent}.ui-input-search .ui-input-clear-hidden,.ui-input-text .ui-input-clear-hidden{display:none}.ui-input-text input::-moz-placeholder,.ui-input-search input::-moz-placeholder,textarea.ui-input-text::-moz-placeholder{color:#aaa}.ui-input-text input:-ms-input-placeholder,.ui-input-search input:-ms-input-placeholder,textarea.ui-input-text:-ms-input-placeholder{color:#aaa}.ui-input-text input[type=number]::-webkit-outer-spin-button{margin:0}.ui-input-text input::-ms-clear,.ui-input-search input::-ms-clear{display:none}.ui-input-text input:focus,.ui-input-search input:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}textarea.ui-input-text.ui-textinput-autogrow{overflow:hidden}.ui-textinput-autogrow-resize{-webkit-transition:height .25s;-o-transition:height .25s;-moz-transition:height .25s;transition:height .25s}.ui-flipswitch{display:inline-block;vertical-align:middle;width:5.875em;height:1.875em;border-width:1px;border-style:solid;margin:.5em 0;overflow:hidden;-webkit-transition-property:padding,width,background-color,color,border-color;-moz-transition-property:padding,width,background-color,color,border-color;-o-transition-property:padding,width,background-color,color,border-color;transition-property:padding,width,background-color,color,border-color;-webkit-transition-duration:100ms;-moz-transition-duration:100ms;-o-transition-duration:100ms;transition-duration:100ms;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.ui-flipswitch.ui-flipswitch-active{padding-left:4em;width:1.875em}.ui-flipswitch-input{position:absolute;height:1px;width:1px;margin:-1px;overflow:hidden;clip:rect(1px,1px,1px,1px);border:0;outline:0;filter:Alpha(Opacity=0);opacity:0}.ui-flipswitch .ui-btn.ui-flipswitch-on,.ui-flipswitch .ui-flipswitch-off{float:left;height:1.75em;margin:.0625em;line-height:1.65em}.ui-flipswitch .ui-btn.ui-flipswitch-on{width:1.75em;padding:0;text-indent:-2.6em;text-align:left;border-width:1px;border-style:solid;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:inherit;overflow:visible;color:inherit;text-shadow:inherit}.ui-flipswitch .ui-flipswitch-off{padding:1px;text-indent:1em}html .ui-field-contain>label+.ui-flipswitch,html .ui-popup .ui-field-contain>label+.ui-flipswitch{display:inline-block;width:5.875em;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.ui-field-contain .ui-flipswitch.ui-flipswitch-active,.ui-popup .ui-field-contain .ui-flipswitch.ui-flipswitch-active{width:1.875em}.ui-table{border:0;border-collapse:collapse;padding:0;width:100%}.ui-table th,.ui-table td{line-height:1.5em;text-align:left;padding:.4em .5em;vertical-align:top}.ui-table th .ui-btn,.ui-table td .ui-btn{line-height:normal}.ui-table th{font-weight:700}.ui-table caption{text-align:left;margin-bottom:1.4em;opacity:.5}.ui-table-columntoggle-btn{float:right;margin-bottom:.8em}.ui-table-columntoggle-popup fieldset{margin:0}.ui-table-columntoggle{clear:both}@media only all{th.ui-table-priority-6,td.ui-table-priority-6,th.ui-table-priority-5,td.ui-table-priority-5,th.ui-table-priority-4,td.ui-table-priority-4,th.ui-table-priority-3,td.ui-table-priority-3,th.ui-table-priority-2,td.ui-table-priority-2,th.ui-table-priority-1,td.ui-table-priority-1{display:none}}@media screen and (min-width:20em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-1,.ui-table-columntoggle.ui-responsive td.ui-table-priority-1{display:table-cell}}@media screen and (min-width:30em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-2,.ui-table-columntoggle.ui-responsive td.ui-table-priority-2{display:table-cell}}@media screen and (min-width:40em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-3,.ui-table-columntoggle.ui-responsive td.ui-table-priority-3{display:table-cell}}@media screen and (min-width:50em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-4,.ui-table-columntoggle.ui-responsive td.ui-table-priority-4{display:table-cell}}@media screen and (min-width:60em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-5,.ui-table-columntoggle.ui-responsive td.ui-table-priority-5{display:table-cell}}@media screen and (min-width:70em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-6,.ui-table-columntoggle.ui-responsive td.ui-table-priority-6{display:table-cell}}.ui-table-columntoggle th.ui-table-cell-hidden,.ui-table-columntoggle td.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden{display:none}.ui-table-columntoggle th.ui-table-cell-visible,.ui-table-columntoggle td.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible{display:table-cell}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{display:none}@media only all{.ui-table-reflow thead td,.ui-table-reflow thead th{display:none}.ui-table-reflow td,.ui-table-reflow th{text-align:left;display:block}.ui-table-reflow tbody th{margin-top:3em}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{padding:.4em;min-width:30%;display:inline-block;margin:-.4em 1em -.4em -.4em}.ui-table-reflow th .ui-table-cell-label-top,.ui-table-reflow td .ui-table-cell-label-top{display:block;padding:.4em 0;margin:.4em 0;text-transform:uppercase;font-size:.9em;font-weight:400}}@media (min-width:35em){.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th,.ui-table-reflow.ui-responsive tbody th,.ui-table-reflow.ui-responsive tbody td,.ui-table-reflow.ui-responsive thead td,.ui-table-reflow.ui-responsive thead th{display:table-cell;margin:0}.ui-table-reflow.ui-responsive td .ui-table-cell-label,.ui-table-reflow.ui-responsive th .ui-table-cell-label{display:none}}@media (max-width:35em){.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;clear:left}}.ui-panel{width:17em;min-height:100%;max-height:none;border-width:0;position:absolute;top:0;display:block}.ui-panel-closed{width:0;max-height:100%;overflow:hidden;visibility:hidden;left:0;clip:rect(1px,1px,1px,1px)}.ui-panel-fixed{position:fixed;bottom:-1px;padding-bottom:1px}.ui-panel-display-reveal{z-index:1}.ui-panel-display-push{z-index:999}.ui-panel-display-overlay{z-index:1001}.ui-panel-inner{padding:1em}.ui-panel-page-container{overflow-x:visible}.ui-panel-page-container-themed .ui-page-active{background:0}.ui-panel-wrapper{position:relative;min-height:inherit;border:0;overflow-x:hidden;z-index:999}.ui-panel-fixed-toolbar{overflow-x:hidden}.ui-panel-dismiss{position:absolute;top:0;left:0;right:0;height:100%;z-index:1002;display:none}.ui-panel-dismiss-open{display:block}.ui-panel-animate{-webkit-transition:-webkit-transform 300ms ease;-webkit-transition-duration:300ms;-moz-transition:-moz-transform 300ms ease;transition:transform 300ms ease}@media screen and (max-device-width:768px){.ui-page-header-fixed .ui-panel-animate.ui-panel-wrapper,.ui-page-footer-fixed .ui-panel-animate.ui-panel-wrapper,.ui-panel-animate.ui-panel-fixed-toolbar{-ms-transition:none}.ui-panel-animate.ui-panel-fixed-toolbar{-ms-transition:-ms-transform 1ms;-ms-transform:rotate(0deg)}}.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal){-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0)}.ui-panel-position-left{left:-17em}.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-left.ui-panel-display-push{left:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-position-left.ui-panel-display-reveal,.ui-panel-open.ui-panel-position-left{left:0}.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-overlay,.ui-panel-animate.ui-panel-open.ui-panel-position-left.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-position-right{right:-17em}.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-right.ui-panel-display-push{right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-position-right.ui-panel-display-reveal,.ui-panel-position-right.ui-panel-open{right:0}.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-overlay,.ui-panel-animate.ui-panel-open.ui-panel-position-right.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-page-content-position-left{left:17em;right:-17em}.ui-panel-animate.ui-panel-page-content-position-left{left:0;right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-page-content-position-right{left:-17em;right:17em}.ui-panel-animate.ui-panel-page-content-position-right{left:0;right:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-dismiss-open.ui-panel-dismiss-position-left{left:17em}.ui-panel-dismiss-open.ui-panel-dismiss-position-right{right:17em}.ui-panel-display-reveal{-webkit-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);box-shadow:inset -5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-reveal{-webkit-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);box-shadow:inset 5px 0 5px rgba(0,0,0,.15)}.ui-panel-display-overlay{-webkit-box-shadow:5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:5px 0 5px rgba(0,0,0,.15);box-shadow:5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-overlay{-webkit-box-shadow:-5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:-5px 0 5px rgba(0,0,0,.15);box-shadow:-5px 0 5px rgba(0,0,0,.15)}.ui-panel-open.ui-panel-position-left.ui-panel-display-push{border-right-width:1px;margin-right:-1px}.ui-panel-page-content-position-left.ui-panel-page-content-display-push{margin-left:1px;width:auto}.ui-panel-open.ui-panel-position-right.ui-panel-display-push{border-left-width:1px;margin-left:-1px}.ui-panel-page-content-position-right.ui-panel-page-content-display-push{margin-right:1px;width:auto}@media (min-width:55em){.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-left{margin-right:17em}.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-right{margin-left:17em}.ui-responsive-panel .ui-panel-page-content-open{width:auto}.ui-responsive-panel .ui-panel-dismiss-display-push,.ui-responsive-panel.ui-page-active~.ui-panel-dismiss-display-push{display:none}}.ui-tabs{position:relative;padding:.2em}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.theme-1.4.5.css
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.theme-1.4.5.css	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.theme-1.4.5.css	(revision 101)
@@ -0,0 +1,580 @@
+/*!
+* jQuery Mobile 1.4.5
+* Git HEAD hash: 68e55e78b292634d3991c795f06f5e37a512decc <> Date: Fri Oct 31 2014 17:33:30 UTC
+* http://jquerymobile.com
+*
+* Copyright 2010, 2014 jQuery Foundation, Inc. and othercontributors
+* Released under the MIT license.
+* http://jquery.org/license
+*
+*/
+
+
+/* Globals */
+/* Font
+-----------------------------------------------------------------------------------------------------------*/
+html {
+	font-size: 100%;
+}
+body,
+input,
+select,
+textarea,
+button,
+.ui-btn {
+	font-size: 1em;
+	line-height: 1.3;
+	font-family: sans-serif /*{global-font-family}*/;
+}
+legend,
+.ui-input-text input,
+.ui-input-search input {
+	color: inherit;
+	text-shadow: inherit;
+}
+/* Form labels (overrides font-weight bold in bars, and mini font-size) */
+.ui-mobile label,
+div.ui-controlgroup-label {
+	font-weight: normal;
+	font-size: 16px;
+}
+/* Separators
+-----------------------------------------------------------------------------------------------------------*/
+/* Field contain separator (< 28em) */
+.ui-field-contain {
+	border-bottom-color: #828282;
+	border-bottom-color: rgba(0,0,0,.15);
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+/* Table opt-in classes: strokes between each row, and alternating row stripes */
+/* Classes table-stroke and table-stripe are deprecated in 1.4. */
+.table-stroke thead th,
+.table-stripe thead th,
+.table-stripe tbody tr:last-child {
+	border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */
+	border-bottom: 1px solid rgba(0,0,0,.1);
+}
+.table-stroke tbody th,
+.table-stroke tbody td {
+	border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback  */
+	border-bottom: 1px solid rgba(0,0,0,.05);
+}
+.table-stripe.table-stroke tbody tr:last-child th,
+.table-stripe.table-stroke tbody tr:last-child td {
+	border-bottom: 0;
+}
+.table-stripe tbody tr:nth-child(odd) td,
+.table-stripe tbody tr:nth-child(odd) th {
+	background-color: #eeeeee; /* non-RGBA fallback  */
+	background-color: rgba(0,0,0,.04);
+}
+/* Buttons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn,
+label.ui-btn {
+	font-weight: bold;
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-btn {
+	text-decoration: none !important;
+}
+.ui-btn-active {
+	cursor: pointer;
+}
+/* Corner rounding
+-----------------------------------------------------------------------------------------------------------*/
+/* Class ui-btn-corner-all deprecated in 1.4 */
+.ui-corner-all {
+	-webkit-border-radius: 				.3125em /*{global-radii-blocks}*/;
+	border-radius: 						.3125em /*{global-radii-blocks}*/;
+}
+/* Buttons */
+.ui-btn-corner-all,
+.ui-btn.ui-corner-all,
+/* Slider track */
+.ui-slider-track.ui-corner-all,
+/* Flipswitch */
+.ui-flipswitch.ui-corner-all,
+/* Count bubble */
+.ui-li-count {
+	-webkit-border-radius: 				.3125em /*{global-radii-buttons}*/;
+	border-radius: 						.3125em /*{global-radii-buttons}*/;
+}
+/* Icon-only buttons */
+.ui-btn-icon-notext.ui-btn-corner-all,
+.ui-btn-icon-notext.ui-corner-all {
+	-webkit-border-radius: 1em;
+	border-radius: 1em;
+}
+/* Radius clip workaround for cleaning up corner trapping */
+.ui-btn-corner-all,
+.ui-corner-all {
+	-webkit-background-clip: padding;
+	background-clip: padding-box;
+}
+/* Popup arrow */
+.ui-popup.ui-corner-all > .ui-popup-arrow-guide {
+	left: .6em /*{global-radii-blocks}*/;
+	right: .6em /*{global-radii-blocks}*/;
+	top: .6em /*{global-radii-blocks}*/;
+	bottom: .6em /*{global-radii-blocks}*/;
+}
+/* Shadow
+-----------------------------------------------------------------------------------------------------------*/
+.ui-shadow {
+	-webkit-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ 		rgba(0,0,0,.15) /*{global-box-shadow-color}*/;
+	-moz-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ 		rgba(0,0,0,.15) /*{global-box-shadow-color}*/;
+	box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ 				rgba(0,0,0,.15) /*{global-box-shadow-color}*/;
+}
+.ui-shadow-inset {
+	-webkit-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ 	rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+	-moz-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ 		rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+	box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ 	rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+}
+.ui-overlay-shadow {
+	-webkit-box-shadow: 0 0 12px 		rgba(0,0,0,.6);
+	-moz-box-shadow: 0 0 12px 			rgba(0,0,0,.6);
+	box-shadow: 0 0 12px 				rgba(0,0,0,.6);
+}
+/* Icons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after,
+.ui-btn-icon-notext:after {
+	background-color: 					#666 /*{global-icon-color}*/;
+	background-color: 					rgba(0,0,0,.3) /*{global-icon-disc}*/;
+	background-position: center center;
+	background-repeat: no-repeat;
+	-webkit-border-radius: 1em;
+	border-radius: 1em;
+}
+/* Alt icons */
+.ui-alt-icon.ui-btn:after,
+.ui-alt-icon .ui-btn:after,
+html .ui-alt-icon.ui-checkbox-off:after,
+html .ui-alt-icon.ui-radio-off:after,
+html .ui-alt-icon .ui-checkbox-off:after,
+html .ui-alt-icon .ui-radio-off:after {
+	background-color: 					#666 /*{global-icon-color}*/;
+	background-color: 					rgba(0,0,0,.15) /*{global-icon-disc}*/;
+}
+/* No disc */
+.ui-nodisc-icon.ui-btn:after,
+.ui-nodisc-icon .ui-btn:after {
+	background-color: transparent;
+}
+/* Icon shadow */
+.ui-shadow-icon.ui-btn:after,
+.ui-shadow-icon .ui-btn:after {
+	-webkit-box-shadow: 0 1px 0 			rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+	-moz-box-shadow: 0 1px 0 				rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+	box-shadow: 0 1px 0 					rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+}
+/* Checkbox and radio */
+.ui-btn.ui-checkbox-off:after,
+.ui-btn.ui-checkbox-on:after,
+.ui-btn.ui-radio-off:after,
+.ui-btn.ui-radio-on:after {
+	display: block;
+	width: 18px;
+	height: 18px;
+	margin: -9px 2px 0 2px;
+}
+.ui-checkbox-off:after,
+.ui-btn.ui-radio-off:after {
+	filter: Alpha(Opacity=30);
+	opacity: .3;
+}
+.ui-btn.ui-checkbox-off:after,
+.ui-btn.ui-checkbox-on:after {
+	-webkit-border-radius: .1875em;
+	border-radius: .1875em;
+}
+.ui-btn.ui-checkbox-off:after {
+	background-color: #666;
+	background-color: rgba(0,0,0,.3);
+}
+.ui-radio .ui-btn.ui-radio-on:after {
+	background-image: none;
+	background-color: #fff;
+	width: 8px;
+	height: 8px;
+	border-width: 5px;
+	border-style: solid; 
+}
+.ui-alt-icon.ui-btn.ui-radio-on:after,
+.ui-alt-icon .ui-btn.ui-radio-on:after {
+	background-color: #000;
+}
+/* Loader */
+.ui-icon-loading {
+	background: url("images/ajax-loader.gif");
+	background-size: 2.875em 2.875em;
+}
+/* Swatches */
+/* A
+-----------------------------------------------------------------------------------------------------------*/
+/* Bar: Toolbars, dividers, slider track */
+.ui-bar-a,
+.ui-page-theme-a .ui-bar-inherit,
+html .ui-bar-a .ui-bar-inherit,
+html .ui-body-a .ui-bar-inherit,
+html body .ui-group-theme-a .ui-bar-inherit {
+	background-color: 			#e9e9e9 /*{a-bar-background-color}*/;
+	border-color:	 		#ddd /*{a-bar-border}*/;
+	color: 					#333 /*{a-bar-color}*/;
+	text-shadow: 0 /*{a-bar-shadow-x}*/ 1px /*{a-bar-shadow-y}*/ 0 /*{a-bar-shadow-radius}*/ 	#eee /*{a-bar-shadow-color}*/;
+	font-weight: bold;
+}
+.ui-bar-a {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Page and overlay */
+.ui-overlay-a,
+.ui-page-theme-a,
+.ui-page-theme-a .ui-panel-wrapper {
+	background-color: 			#f9f9f9 /*{a-page-background-color}*/;
+	border-color:	 		#bbb /*{a-page-border}*/;
+	color: 					#333 /*{a-page-color}*/;
+	text-shadow: 0 /*{a-page-shadow-x}*/ 1px /*{a-page-shadow-y}*/ 0 /*{a-page-shadow-radius}*/ 	#f3f3f3 /*{a-page-shadow-color}*/;
+}
+/* Body: Read-only lists, text inputs, collapsible content */
+.ui-body-a,
+.ui-page-theme-a .ui-body-inherit,
+html .ui-bar-a .ui-body-inherit,
+html .ui-body-a .ui-body-inherit,
+html body .ui-group-theme-a .ui-body-inherit,
+html .ui-panel-page-container-a {
+	background-color: 			#fff /*{a-body-background-color}*/;
+	border-color:	 		#ddd /*{a-body-border}*/;
+	color: 					#333 /*{a-body-color}*/;
+	text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 0 /*{a-body-shadow-radius}*/ 	#f3f3f3 /*{a-body-shadow-color}*/;
+}
+.ui-body-a {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Links */
+.ui-page-theme-a a,
+html .ui-bar-a a,
+html .ui-body-a a,
+html body .ui-group-theme-a a {
+	color: #3388cc /*{a-link-color}*/;
+	font-weight: bold;
+}
+.ui-page-theme-a a:visited,
+html .ui-bar-a a:visited,
+html .ui-body-a a:visited,
+html body .ui-group-theme-a a:visited {
+    color: #3388cc /*{a-link-visited}*/;
+}
+.ui-page-theme-a a:hover,
+html .ui-bar-a a:hover,
+html .ui-body-a a:hover,
+html body .ui-group-theme-a a:hover {
+	color: #005599 /*{a-link-hover}*/;
+}
+.ui-page-theme-a a:active,
+html .ui-bar-a a:active,
+html .ui-body-a a:active,
+html body .ui-group-theme-a a:active {
+	color: #005599 /*{a-link-active}*/;
+}
+/* Button up */
+.ui-page-theme-a .ui-btn,
+html .ui-bar-a .ui-btn,
+html .ui-body-a .ui-btn,
+html body .ui-group-theme-a .ui-btn,
+html head + body .ui-btn.ui-btn-a,
+/* Button visited */
+.ui-page-theme-a .ui-btn:visited,
+html .ui-bar-a .ui-btn:visited,
+html .ui-body-a .ui-btn:visited,
+html body .ui-group-theme-a .ui-btn:visited,
+html head + body .ui-btn.ui-btn-a:visited {
+	background-color: 			#f6f6f6 /*{a-bup-background-color}*/;
+	border-color:	 		#ddd /*{a-bup-border}*/;
+	color: 					#333 /*{a-bup-color}*/;
+	text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 0 /*{a-bup-shadow-radius}*/ #f3f3f3 /*{a-bup-shadow-color}*/;
+}
+/* Button hover */
+.ui-page-theme-a .ui-btn:hover,
+html .ui-bar-a .ui-btn:hover,
+html .ui-body-a .ui-btn:hover,
+html body .ui-group-theme-a .ui-btn:hover,
+html head + body .ui-btn.ui-btn-a:hover {
+	background-color: 			#ededed /*{a-bhover-background-color}*/;
+	border-color:	 		#ddd /*{a-bhover-border}*/;
+	color: 					#333 /*{a-bhover-color}*/;
+	text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 0 /*{a-bhover-shadow-radius}*/ #f3f3f3 /*{a-bhover-shadow-color}*/;
+}
+/* Button down */
+.ui-page-theme-a .ui-btn:active,
+html .ui-bar-a .ui-btn:active,
+html .ui-body-a .ui-btn:active,
+html body .ui-group-theme-a .ui-btn:active,
+html head + body .ui-btn.ui-btn-a:active {
+	background-color: 			#e8e8e8 /*{a-bdown-background-color}*/;
+	border-color:	 		#ddd /*{a-bdown-border}*/;
+	color: 					#333 /*{a-bdown-color}*/;
+	text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 0 /*{a-bdown-shadow-radius}*/ #f3f3f3 /*{a-bdown-shadow-color}*/;
+}
+/* Active button */
+.ui-page-theme-a .ui-btn.ui-btn-active,
+html .ui-bar-a .ui-btn.ui-btn-active,
+html .ui-body-a .ui-btn.ui-btn-active,
+html body .ui-group-theme-a .ui-btn.ui-btn-active,
+html head + body .ui-btn.ui-btn-a.ui-btn-active,
+/* Active checkbox icon */
+.ui-page-theme-a .ui-checkbox-on:after,
+html .ui-bar-a .ui-checkbox-on:after,
+html .ui-body-a .ui-checkbox-on:after,
+html body .ui-group-theme-a .ui-checkbox-on:after,
+.ui-btn.ui-checkbox-on.ui-btn-a:after,
+/* Active flipswitch background */
+.ui-page-theme-a .ui-flipswitch-active,
+html .ui-bar-a .ui-flipswitch-active,
+html .ui-body-a .ui-flipswitch-active,
+html body .ui-group-theme-a .ui-flipswitch-active,
+html body .ui-flipswitch.ui-bar-a.ui-flipswitch-active,
+/* Active slider track */
+.ui-page-theme-a .ui-slider-track .ui-btn-active,
+html .ui-bar-a .ui-slider-track .ui-btn-active,
+html .ui-body-a .ui-slider-track .ui-btn-active,
+html body .ui-group-theme-a .ui-slider-track .ui-btn-active,
+html body div.ui-slider-track.ui-body-a .ui-btn-active {
+	background-color: 		#3388cc /*{a-active-background-color}*/;
+	border-color:	 		#3388cc /*{a-active-border}*/;
+	color: 					#fff /*{a-active-color}*/;
+	text-shadow: 0 /*{a-active-shadow-x}*/ 1px /*{a-active-shadow-y}*/ 0 /*{a-active-shadow-radius}*/ #005599 /*{a-active-shadow-color}*/;
+}
+/* Active radio button icon */
+.ui-page-theme-a .ui-radio-on:after,
+html .ui-bar-a .ui-radio-on:after,
+html .ui-body-a .ui-radio-on:after,
+html body .ui-group-theme-a .ui-radio-on:after,
+.ui-btn.ui-radio-on.ui-btn-a:after {
+	border-color:			#3388cc /*{a-active-background-color}*/;
+}
+/* Focus */
+.ui-page-theme-a .ui-btn:focus,
+html .ui-bar-a .ui-btn:focus,
+html .ui-body-a .ui-btn:focus,
+html body .ui-group-theme-a .ui-btn:focus,
+html head + body .ui-btn.ui-btn-a:focus,
+/* Focus buttons and text inputs with div wrap */
+.ui-page-theme-a .ui-focus,
+html .ui-bar-a .ui-focus,
+html .ui-body-a .ui-focus,
+html body .ui-group-theme-a .ui-focus,
+html head + body .ui-btn-a.ui-focus,
+html head + body .ui-body-a.ui-focus {
+	-webkit-box-shadow: 0 0 12px 	#3388cc /*{a-active-background-color}*/;
+	-moz-box-shadow: 0 0 12px 		#3388cc /*{a-active-background-color}*/;
+	box-shadow: 0 0 12px 			#3388cc /*{a-active-background-color}*/;
+}
+/* B
+-----------------------------------------------------------------------------------------------------------*/
+/* Bar: Toolbars, dividers, slider track */
+.ui-bar-b,
+.ui-page-theme-b .ui-bar-inherit,
+html .ui-bar-b .ui-bar-inherit,
+html .ui-body-b .ui-bar-inherit,
+html body .ui-group-theme-b .ui-bar-inherit {
+	background-color: 			#1d1d1d /*{b-bar-background-color}*/;
+	border-color:	 		#1b1b1b /*{b-bar-border}*/;
+	color: 					#fff /*{b-bar-color}*/;
+	text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 0 /*{b-bar-shadow-radius}*/ 	#111 /*{b-bar-shadow-color}*/;
+	font-weight: bold;
+}
+.ui-bar-b {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Page and overlay */
+.ui-overlay-b,
+.ui-page-theme-b,
+.ui-page-theme-b .ui-panel-wrapper {
+	background-color: 			#252525 /*{b-page-background-color}*/;
+	border-color:	 		#454545 /*{b-page-border}*/;
+	color: 					#fff /*{b-page-color}*/;
+	text-shadow: 0 /*{b-page-shadow-x}*/ 1px /*{b-page-shadow-y}*/ 0 /*{b-page-shadow-radius}*/ 	#111 /*{b-page-shadow-color}*/;
+}
+/* Body: Read-only lists, text inputs, collapsible content */
+.ui-body-b,
+.ui-page-theme-b .ui-body-inherit,
+html .ui-bar-b .ui-body-inherit,
+html .ui-body-b .ui-body-inherit,
+html body .ui-group-theme-b .ui-body-inherit,
+html .ui-panel-page-container-b {
+	background-color: 			#2a2a2a /*{b-body-background-color}*/;
+	border-color:	 		#1d1d1d /*{b-body-border}*/;
+	color: 					#fff /*{b-body-color}*/;
+	text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ 	#111 /*{b-body-shadow-color}*/;
+}
+.ui-body-b {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Links */
+.ui-page-theme-b a,
+html .ui-bar-b a,
+html .ui-body-b a,
+html body .ui-group-theme-b a {
+	color: #22aadd /*{b-link-color}*/;
+	font-weight: bold;
+}
+.ui-page-theme-b a:visited,
+html .ui-bar-b a:visited,
+html .ui-body-b a:visited,
+html body .ui-group-theme-b a:visited {
+    color: #22aadd /*{b-link-visited}*/;
+}
+.ui-page-theme-b a:hover,
+html .ui-bar-b a:hover,
+html .ui-body-b a:hover,
+html body .ui-group-theme-b a:hover {
+	color: #0088bb /*{b-link-hover}*/;
+}
+.ui-page-theme-b a:active,
+html .ui-bar-b a:active,
+html .ui-body-b a:active,
+html body .ui-group-theme-b a:active {
+	color: #0088bb /*{b-link-active}*/;
+}
+/* Button up */
+.ui-page-theme-b .ui-btn,
+html .ui-bar-b .ui-btn,
+html .ui-body-b .ui-btn,
+html body .ui-group-theme-b .ui-btn,
+html head + body .ui-btn.ui-btn-b,
+/* Button visited */
+.ui-page-theme-b .ui-btn:visited,
+html .ui-bar-b .ui-btn:visited,
+html .ui-body-b .ui-btn:visited,
+html body .ui-group-theme-b .ui-btn:visited,
+html head + body .ui-btn.ui-btn-b:visited {
+	background-color: 			#333 /*{b-bup-background-color}*/;
+	border-color:	 		#1f1f1f /*{b-bup-border}*/;
+	color: 					#fff /*{b-bup-color}*/;
+	text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 0 /*{b-bup-shadow-radius}*/ #111 /*{b-bup-shadow-color}*/;
+}
+/* Button hover */
+.ui-page-theme-b .ui-btn:hover,
+html .ui-bar-b .ui-btn:hover,
+html .ui-body-b .ui-btn:hover,
+html body .ui-group-theme-b .ui-btn:hover,
+html head + body .ui-btn.ui-btn-b:hover {
+	background-color: 			#373737 /*{b-bhover-background-color}*/;
+	border-color:	 		#1f1f1f /*{b-bhover-border}*/;
+	color: 					#fff /*{b-bhover-color}*/;
+	text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 0 /*{b-bhover-shadow-radius}*/ #111 /*{b-bhover-shadow-color}*/;
+}
+/* Button down */
+.ui-page-theme-b .ui-btn:active,
+html .ui-bar-b .ui-btn:active,
+html .ui-body-b .ui-btn:active,
+html body .ui-group-theme-b .ui-btn:active,
+html head + body .ui-btn.ui-btn-b:active {
+	background-color: 			#404040 /*{b-bdown-background-color}*/;
+	border-color:	 		#1f1f1f /*{b-bdown-border}*/;
+	color: 					#fff /*{b-bdown-color}*/;
+	text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 0 /*{b-bdown-shadow-radius}*/ #111 /*{b-bdown-shadow-color}*/;
+}
+/* Active button */
+.ui-page-theme-b .ui-btn.ui-btn-active,
+html .ui-bar-b .ui-btn.ui-btn-active,
+html .ui-body-b .ui-btn.ui-btn-active,
+html body .ui-group-theme-b .ui-btn.ui-btn-active,
+html head + body .ui-btn.ui-btn-b.ui-btn-active,
+/* Active checkbox icon */
+.ui-page-theme-b .ui-checkbox-on:after,
+html .ui-bar-b .ui-checkbox-on:after,
+html .ui-body-b .ui-checkbox-on:after,
+html body .ui-group-theme-b .ui-checkbox-on:after,
+.ui-btn.ui-checkbox-on.ui-btn-b:after,
+/* Active flipswitch background */
+.ui-page-theme-b .ui-flipswitch-active,
+html .ui-bar-b .ui-flipswitch-active,
+html .ui-body-b .ui-flipswitch-active,
+html body .ui-group-theme-b .ui-flipswitch-active,
+html body .ui-flipswitch.ui-bar-b.ui-flipswitch-active,
+/* Active slider track */
+.ui-page-theme-b .ui-slider-track .ui-btn-active,
+html .ui-bar-b .ui-slider-track .ui-btn-active,
+html .ui-body-b .ui-slider-track .ui-btn-active,
+html body .ui-group-theme-b .ui-slider-track .ui-btn-active,
+html body div.ui-slider-track.ui-body-b .ui-btn-active {
+	background-color: 		#22aadd /*{b-active-background-color}*/;
+	border-color:	 		#22aadd /*{b-active-border}*/;
+	color: 					#fff /*{b-active-color}*/;
+	text-shadow: 0 /*{b-active-shadow-x}*/ 1px /*{b-active-shadow-y}*/ 0 /*{b-active-shadow-radius}*/ #0088bb /*{b-active-shadow-color}*/;
+}
+/* Active radio button icon */
+.ui-page-theme-b .ui-radio-on:after,
+html .ui-bar-b .ui-radio-on:after,
+html .ui-body-b .ui-radio-on:after,
+html body .ui-group-theme-b .ui-radio-on:after,
+.ui-btn.ui-radio-on.ui-btn-b:after {
+	border-color:			#22aadd /*{b-active-background-color}*/;
+}
+/* Focus */
+.ui-page-theme-b .ui-btn:focus,
+html .ui-bar-b .ui-btn:focus,
+html .ui-body-b .ui-btn:focus,
+html body .ui-group-theme-b .ui-btn:focus,
+html head + body .ui-btn.ui-btn-b:focus,
+/* Focus buttons and text inputs with div wrap */
+.ui-page-theme-b .ui-focus,
+html .ui-bar-b .ui-focus,
+html .ui-body-b .ui-focus,
+html body .ui-group-theme-b .ui-focus,
+html head + body .ui-btn-b.ui-focus,
+html head + body .ui-body-b.ui-focus {
+	-webkit-box-shadow: 0 0 12px 	#22aadd /*{b-active-background-color}*/;
+	-moz-box-shadow: 0 0 12px 		#22aadd /*{b-active-background-color}*/;
+	box-shadow: 0 0 12px 			#22aadd /*{b-active-background-color}*/;
+}
+/* Structure */
+/* Disabled
+-----------------------------------------------------------------------------------------------------------*/
+/* Class ui-disabled deprecated in 1.4. :disabled not supported by IE8 so we use [disabled] */
+.ui-disabled,
+.ui-state-disabled,
+button[disabled],
+.ui-select .ui-btn.ui-state-disabled {
+	filter: Alpha(Opacity=30);
+	opacity: .3;
+	cursor: default !important;
+	pointer-events: none;
+}
+/* Focus state outline
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn:focus,
+.ui-btn.ui-focus {
+	outline: 0;
+}
+/* Unset box-shadow in browsers that don't do it right */
+.ui-noboxshadow .ui-shadow,
+.ui-noboxshadow .ui-shadow-inset,
+.ui-noboxshadow .ui-overlay-shadow,
+.ui-noboxshadow .ui-shadow-icon.ui-btn:after,
+.ui-noboxshadow .ui-shadow-icon .ui-btn:after,
+.ui-noboxshadow .ui-focus,
+.ui-noboxshadow .ui-btn:focus,
+.ui-noboxshadow  input:focus,
+.ui-noboxshadow .ui-panel {
+	-webkit-box-shadow: none !important;
+	-moz-box-shadow: none !important;
+	box-shadow: none !important;
+}
+.ui-noboxshadow .ui-btn:focus,
+.ui-noboxshadow .ui-focus {
+	outline-width: 1px;
+	outline-style: auto;
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.theme-1.4.5.min.css
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.theme-1.4.5.min.css	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jquery.mobile.theme-1.4.5.min.css	(revision 101)
@@ -0,0 +1,3 @@
+/*! jQuery Mobile 1.4.5 | Git HEADhash: 68e55e7 <> 2014-10-31T17:33:30Z | (c) 2010, 2014 jQuery Foundation, Inc. | jquery.org/license */
+
+html{font-size:100%}body,input,select,textarea,button,.ui-btn{font-size:1em;line-height:1.3;font-family:sans-serif}legend,.ui-input-text input,.ui-input-search input{color:inherit;text-shadow:inherit}.ui-mobile label,div.ui-controlgroup-label{font-weight:400;font-size:16px}.ui-field-contain{border-bottom-color:#828282;border-bottom-color:rgba(0,0,0,.15);border-bottom-width:1px;border-bottom-style:solid}.table-stroke thead th,.table-stripe thead th,.table-stripe tbody tr:last-child{border-bottom:1px solid #d6d6d6;border-bottom:1px solid rgba(0,0,0,.1)}.table-stroke tbody th,.table-stroke tbody td{border-bottom:1px solid #e6e6e6;border-bottom:1px solid rgba(0,0,0,.05)}.table-stripe.table-stroke tbody tr:last-child th,.table-stripe.table-stroke tbody tr:last-child td{border-bottom:0}.table-stripe tbody tr:nth-child(odd) td,.table-stripe tbody tr:nth-child(odd) th{background-color:#eee;background-color:rgba(0,0,0,.04)}.ui-btn,label.ui-btn{font-weight:700;border-width:1px;border-style:solid}.ui-btn{text-decoration:none!important}.ui-btn-active{cursor:pointer}.ui-corner-all{-webkit-border-radius:.3125em;border-radius:.3125em}.ui-btn-corner-all,.ui-btn.ui-corner-all,.ui-slider-track.ui-corner-all,.ui-flipswitch.ui-corner-all,.ui-li-count{-webkit-border-radius:.3125em;border-radius:.3125em}.ui-btn-icon-notext.ui-btn-corner-all,.ui-btn-icon-notext.ui-corner-all{-webkit-border-radius:1em;border-radius:1em}.ui-btn-corner-all,.ui-corner-all{-webkit-background-clip:padding;background-clip:padding-box}.ui-popup.ui-corner-all>.ui-popup-arrow-guide{left:.6em;right:.6em;top:.6em;bottom:.6em}.ui-shadow{-webkit-box-shadow:0 1px 3px rgba(0,0,0,.15);-moz-box-shadow:0 1px 3px rgba(0,0,0,.15);box-shadow:0 1px 3px rgba(0,0,0,.15)}.ui-shadow-inset{-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.2);-moz-box-shadow:inset 0 1px 3px rgba(0,0,0,.2);box-shadow:inset 0 1px 3px rgba(0,0,0,.2)}.ui-overlay-shadow{-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);-moz-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-btn-icon-left:after,.ui-btn-icon-right:after,.ui-btn-icon-top:after,.ui-btn-icon-bottom:after,.ui-btn-icon-notext:after{background-color:#666;background-color:rgba(0,0,0,.3);background-position:center center;background-repeat:no-repeat;-webkit-border-radius:1em;border-radius:1em}.ui-alt-icon.ui-btn:after,.ui-alt-icon .ui-btn:after,html .ui-alt-icon.ui-checkbox-off:after,html .ui-alt-icon.ui-radio-off:after,html .ui-alt-icon .ui-checkbox-off:after,html .ui-alt-icon .ui-radio-off:after{background-color:#666;background-color:rgba(0,0,0,.15)}.ui-nodisc-icon.ui-btn:after,.ui-nodisc-icon .ui-btn:after{background-color:transparent}.ui-shadow-icon.ui-btn:after,.ui-shadow-icon .ui-btn:after{-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.ui-btn.ui-checkbox-off:after,.ui-btn.ui-checkbox-on:after,.ui-btn.ui-radio-off:after,.ui-btn.ui-radio-on:after{display:block;width:18px;height:18px;margin:-9px 2px 0 2px}.ui-checkbox-off:after,.ui-btn.ui-radio-off:after{filter:Alpha(Opacity=30);opacity:.3}.ui-btn.ui-checkbox-off:after,.ui-btn.ui-checkbox-on:after{-webkit-border-radius:.1875em;border-radius:.1875em}.ui-btn.ui-checkbox-off:after{background-color:#666;background-color:rgba(0,0,0,.3)}.ui-radio .ui-btn.ui-radio-on:after{background-image:none;background-color:#fff;width:8px;height:8px;border-width:5px;border-style:solid}.ui-alt-icon.ui-btn.ui-radio-on:after,.ui-alt-icon .ui-btn.ui-radio-on:after{background-color:#000}.ui-icon-loading{background:url(images/ajax-loader.gif);background-size:2.875em 2.875em}.ui-bar-a,.ui-page-theme-a .ui-bar-inherit,html .ui-bar-a .ui-bar-inherit,html .ui-body-a .ui-bar-inherit,html body .ui-group-theme-a .ui-bar-inherit{background-color:#e9e9e9;border-color:#ddd;color:#333;text-shadow:0 1px 0 #eee;font-weight:700}.ui-bar-a{border-width:1px;border-style:solid}.ui-overlay-a,.ui-page-theme-a,.ui-page-theme-a .ui-panel-wrapper{background-color:#f9f9f9;border-color:#bbb;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-body-a,.ui-page-theme-a .ui-body-inherit,html .ui-bar-a .ui-body-inherit,html .ui-body-a .ui-body-inherit,html body .ui-group-theme-a .ui-body-inherit,html .ui-panel-page-container-a{background-color:#fff;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-body-a{border-width:1px;border-style:solid}.ui-page-theme-a a,html .ui-bar-a a,html .ui-body-a a,html body .ui-group-theme-a a{color:#38c;font-weight:700}.ui-page-theme-a a:visited,html .ui-bar-a a:visited,html .ui-body-a a:visited,html body .ui-group-theme-a a:visited{color:#38c}.ui-page-theme-a a:hover,html .ui-bar-a a:hover,html .ui-body-a a:hover,html body .ui-group-theme-a a:hover{color:#059}.ui-page-theme-a a:active,html .ui-bar-a a:active,html .ui-body-a a:active,html body .ui-group-theme-a a:active{color:#059}.ui-page-theme-a .ui-btn,html .ui-bar-a .ui-btn,html .ui-body-a .ui-btn,html body .ui-group-theme-a .ui-btn,html head+body .ui-btn.ui-btn-a,.ui-page-theme-a .ui-btn:visited,html .ui-bar-a .ui-btn:visited,html .ui-body-a .ui-btn:visited,html body .ui-group-theme-a .ui-btn:visited,html head+body .ui-btn.ui-btn-a:visited{background-color:#f6f6f6;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-page-theme-a .ui-btn:hover,html .ui-bar-a .ui-btn:hover,html .ui-body-a .ui-btn:hover,html body .ui-group-theme-a .ui-btn:hover,html head+body .ui-btn.ui-btn-a:hover{background-color:#ededed;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-page-theme-a .ui-btn:active,html .ui-bar-a .ui-btn:active,html .ui-body-a .ui-btn:active,html body .ui-group-theme-a .ui-btn:active,html head+body .ui-btn.ui-btn-a:active{background-color:#e8e8e8;border-color:#ddd;color:#333;text-shadow:0 1px 0 #f3f3f3}.ui-page-theme-a .ui-btn.ui-btn-active,html .ui-bar-a .ui-btn.ui-btn-active,html .ui-body-a .ui-btn.ui-btn-active,html body .ui-group-theme-a .ui-btn.ui-btn-active,html head+body .ui-btn.ui-btn-a.ui-btn-active,.ui-page-theme-a .ui-checkbox-on:after,html .ui-bar-a .ui-checkbox-on:after,html .ui-body-a .ui-checkbox-on:after,html body .ui-group-theme-a .ui-checkbox-on:after,.ui-btn.ui-checkbox-on.ui-btn-a:after,.ui-page-theme-a .ui-flipswitch-active,html .ui-bar-a .ui-flipswitch-active,html .ui-body-a .ui-flipswitch-active,html body .ui-group-theme-a .ui-flipswitch-active,html body .ui-flipswitch.ui-bar-a.ui-flipswitch-active,.ui-page-theme-a .ui-slider-track .ui-btn-active,html .ui-bar-a .ui-slider-track .ui-btn-active,html .ui-body-a .ui-slider-track .ui-btn-active,html body .ui-group-theme-a .ui-slider-track .ui-btn-active,html body div.ui-slider-track.ui-body-a .ui-btn-active{background-color:#38c;border-color:#38c;color:#fff;text-shadow:0 1px 0 #059}.ui-page-theme-a .ui-radio-on:after,html .ui-bar-a .ui-radio-on:after,html .ui-body-a .ui-radio-on:after,html body .ui-group-theme-a .ui-radio-on:after,.ui-btn.ui-radio-on.ui-btn-a:after{border-color:#38c}.ui-page-theme-a .ui-btn:focus,html .ui-bar-a .ui-btn:focus,html .ui-body-a .ui-btn:focus,html body .ui-group-theme-a .ui-btn:focus,html head+body .ui-btn.ui-btn-a:focus,.ui-page-theme-a .ui-focus,html .ui-bar-a .ui-focus,html .ui-body-a .ui-focus,html body .ui-group-theme-a .ui-focus,html head+body .ui-btn-a.ui-focus,html head+body .ui-body-a.ui-focus{-webkit-box-shadow:0 0 12px #38c;-moz-box-shadow:0 0 12px #38c;box-shadow:0 0 12px #38c}.ui-bar-b,.ui-page-theme-b .ui-bar-inherit,html .ui-bar-b .ui-bar-inherit,html .ui-body-b .ui-bar-inherit,html body .ui-group-theme-b .ui-bar-inherit{background-color:#1d1d1d;border-color:#1b1b1b;color:#fff;text-shadow:0 1px 0 #111;font-weight:700}.ui-bar-b{border-width:1px;border-style:solid}.ui-overlay-b,.ui-page-theme-b,.ui-page-theme-b .ui-panel-wrapper{background-color:#252525;border-color:#454545;color:#fff;text-shadow:0 1px 0 #111}.ui-body-b,.ui-page-theme-b .ui-body-inherit,html .ui-bar-b .ui-body-inherit,html .ui-body-b .ui-body-inherit,html body .ui-group-theme-b .ui-body-inherit,html .ui-panel-page-container-b{background-color:#2a2a2a;border-color:#1d1d1d;color:#fff;text-shadow:0 1px 0 #111}.ui-body-b{border-width:1px;border-style:solid}.ui-page-theme-b a,html .ui-bar-b a,html .ui-body-b a,html body .ui-group-theme-b a{color:#2ad;font-weight:700}.ui-page-theme-b a:visited,html .ui-bar-b a:visited,html .ui-body-b a:visited,html body .ui-group-theme-b a:visited{color:#2ad}.ui-page-theme-b a:hover,html .ui-bar-b a:hover,html .ui-body-b a:hover,html body .ui-group-theme-b a:hover{color:#08b}.ui-page-theme-b a:active,html .ui-bar-b a:active,html .ui-body-b a:active,html body .ui-group-theme-b a:active{color:#08b}.ui-page-theme-b .ui-btn,html .ui-bar-b .ui-btn,html .ui-body-b .ui-btn,html body .ui-group-theme-b .ui-btn,html head+body .ui-btn.ui-btn-b,.ui-page-theme-b .ui-btn:visited,html .ui-bar-b .ui-btn:visited,html .ui-body-b .ui-btn:visited,html body .ui-group-theme-b .ui-btn:visited,html head+body .ui-btn.ui-btn-b:visited{background-color:#333;border-color:#1f1f1f;color:#fff;text-shadow:0 1px 0 #111}.ui-page-theme-b .ui-btn:hover,html .ui-bar-b .ui-btn:hover,html .ui-body-b .ui-btn:hover,html body .ui-group-theme-b .ui-btn:hover,html head+body .ui-btn.ui-btn-b:hover{background-color:#373737;border-color:#1f1f1f;color:#fff;text-shadow:0 1px 0 #111}.ui-page-theme-b .ui-btn:active,html .ui-bar-b .ui-btn:active,html .ui-body-b .ui-btn:active,html body .ui-group-theme-b .ui-btn:active,html head+body .ui-btn.ui-btn-b:active{background-color:#404040;border-color:#1f1f1f;color:#fff;text-shadow:0 1px 0 #111}.ui-page-theme-b .ui-btn.ui-btn-active,html .ui-bar-b .ui-btn.ui-btn-active,html .ui-body-b .ui-btn.ui-btn-active,html body .ui-group-theme-b .ui-btn.ui-btn-active,html head+body .ui-btn.ui-btn-b.ui-btn-active,.ui-page-theme-b .ui-checkbox-on:after,html .ui-bar-b .ui-checkbox-on:after,html .ui-body-b .ui-checkbox-on:after,html body .ui-group-theme-b .ui-checkbox-on:after,.ui-btn.ui-checkbox-on.ui-btn-b:after,.ui-page-theme-b .ui-flipswitch-active,html .ui-bar-b .ui-flipswitch-active,html .ui-body-b .ui-flipswitch-active,html body .ui-group-theme-b .ui-flipswitch-active,html body .ui-flipswitch.ui-bar-b.ui-flipswitch-active,.ui-page-theme-b .ui-slider-track .ui-btn-active,html .ui-bar-b .ui-slider-track .ui-btn-active,html .ui-body-b .ui-slider-track .ui-btn-active,html body .ui-group-theme-b .ui-slider-track .ui-btn-active,html body div.ui-slider-track.ui-body-b .ui-btn-active{background-color:#2ad;border-color:#2ad;color:#fff;text-shadow:0 1px 0 #08b}.ui-page-theme-b .ui-radio-on:after,html .ui-bar-b .ui-radio-on:after,html .ui-body-b .ui-radio-on:after,html body .ui-group-theme-b .ui-radio-on:after,.ui-btn.ui-radio-on.ui-btn-b:after{border-color:#2ad}.ui-page-theme-b .ui-btn:focus,html .ui-bar-b .ui-btn:focus,html .ui-body-b .ui-btn:focus,html body .ui-group-theme-b .ui-btn:focus,html head+body .ui-btn.ui-btn-b:focus,.ui-page-theme-b .ui-focus,html .ui-bar-b .ui-focus,html .ui-body-b .ui-focus,html body .ui-group-theme-b .ui-focus,html head+body .ui-btn-b.ui-focus,html head+body .ui-body-b.ui-focus{-webkit-box-shadow:0 0 12px #2ad;-moz-box-shadow:0 0 12px #2ad;box-shadow:0 0 12px #2ad}.ui-disabled,.ui-state-disabled,button[disabled],.ui-select .ui-btn.ui-state-disabled{filter:Alpha(Opacity=30);opacity:.3;cursor:default!important;pointer-events:none}.ui-btn:focus,.ui-btn.ui-focus{outline:0}.ui-noboxshadow .ui-shadow,.ui-noboxshadow .ui-shadow-inset,.ui-noboxshadow .ui-overlay-shadow,.ui-noboxshadow .ui-shadow-icon.ui-btn:after,.ui-noboxshadow .ui-shadow-icon .ui-btn:after,.ui-noboxshadow .ui-focus,.ui-noboxshadow .ui-btn:focus,.ui-noboxshadow input:focus,.ui-noboxshadow .ui-panel{-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important}.ui-noboxshadow .ui-btn:focus,.ui-noboxshadow .ui-focus{outline-width:1px;outline-style:auto}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jszip.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jszip.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jszip.js	(revision 101)
@@ -0,0 +1,8982 @@
+/*!
+
+JSZip - A Javascript class for generating and reading zip files
+<http://stuartk.com/jszip>
+
+(c) 2009-2014 Stuart Knightley <stuart [at] stuartk.com>
+Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.
+
+JSZip uses the library pako released under the MIT license :
+https://github.com/nodeca/pako/blob/master/LICENSE
+*/
+!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.JSZip=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
+'use strict';
+// private property
+var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+
+
+// public method for encoding
+exports.encode = function(input, utf8) {
+    var output = "";
+    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
+    var i = 0;
+
+    while (i < input.length) {
+
+        chr1 = input.charCodeAt(i++);
+        chr2 = input.charCodeAt(i++);
+        chr3 = input.charCodeAt(i++);
+
+        enc1 = chr1 >> 2;
+        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+        enc4 = chr3 & 63;
+
+        if (isNaN(chr2)) {
+            enc3 = enc4 = 64;
+        }
+        else if (isNaN(chr3)) {
+            enc4 = 64;
+        }
+
+        output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
+
+    }
+
+    return output;
+};
+
+// public method for decoding
+exports.decode = function(input, utf8) {
+    var output = "";
+    var chr1, chr2, chr3;
+    var enc1, enc2, enc3, enc4;
+    var i = 0;
+
+    input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
+
+    while (i < input.length) {
+
+        enc1 = _keyStr.indexOf(input.charAt(i++));
+        enc2 = _keyStr.indexOf(input.charAt(i++));
+        enc3 = _keyStr.indexOf(input.charAt(i++));
+        enc4 = _keyStr.indexOf(input.charAt(i++));
+
+        chr1 = (enc1 << 2) | (enc2 >> 4);
+        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
+        chr3 = ((enc3 & 3) << 6) | enc4;
+
+        output = output + String.fromCharCode(chr1);
+
+        if (enc3 != 64) {
+            output = output + String.fromCharCode(chr2);
+        }
+        if (enc4 != 64) {
+            output = output + String.fromCharCode(chr3);
+        }
+
+    }
+
+    return output;
+
+};
+
+},{}],2:[function(_dereq_,module,exports){
+'use strict';
+function CompressedObject() {
+    this.compressedSize = 0;
+    this.uncompressedSize = 0;
+    this.crc32 = 0;
+    this.compressionMethod = null;
+    this.compressedContent = null;
+}
+
+CompressedObject.prototype = {
+    /**
+     * Return the decompressed content in an unspecified format.
+     * The format will depend on the decompressor.
+     * @return {Object} the decompressed content.
+     */
+    getContent: function() {
+        return null; // see implementation
+    },
+    /**
+     * Return the compressed content in an unspecified format.
+     * The format will depend on the compressed conten source.
+     * @return {Object} the compressed content.
+     */
+    getCompressedContent: function() {
+        return null; // see implementation
+    }
+};
+module.exports = CompressedObject;
+
+},{}],3:[function(_dereq_,module,exports){
+'use strict';
+exports.STORE = {
+    magic: "\x00\x00",
+    compress: function(content) {
+        return content; // no compression
+    },
+    uncompress: function(content) {
+        return content; // no compression
+    },
+    compressInputType: null,
+    uncompressInputType: null
+};
+exports.DEFLATE = _dereq_('./flate');
+
+},{"./flate":8}],4:[function(_dereq_,module,exports){
+'use strict';
+
+var utils = _dereq_('./utils');
+
+var table = [
+    0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
+    0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
+    0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
+    0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
+    0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
+    0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
+    0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
+    0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
+    0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
+    0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
+    0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
+    0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
+    0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
+    0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
+    0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
+    0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
+    0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
+    0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
+    0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
+    0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
+    0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
+    0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
+    0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
+    0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
+    0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
+    0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
+    0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
+    0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
+    0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
+    0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
+    0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
+    0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
+    0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
+    0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
+    0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
+    0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
+    0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
+    0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
+    0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
+    0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
+    0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
+    0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
+    0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
+    0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
+    0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
+    0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
+    0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
+    0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
+    0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
+    0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
+    0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
+    0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
+    0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
+    0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
+    0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
+    0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
+    0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
+    0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
+    0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
+    0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
+    0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
+    0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
+    0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
+    0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
+];
+
+/**
+ *
+ *  Javascript crc32
+ *  http://www.webtoolkit.info/
+ *
+ */
+module.exports = function crc32(input, crc) {
+    if (typeof input === "undefined" || !input.length) {
+        return 0;
+    }
+
+    var isArray = utils.getTypeOf(input) !== "string";
+
+    if (typeof(crc) == "undefined") {
+        crc = 0;
+    }
+    var x = 0;
+    var y = 0;
+    var b = 0;
+
+    crc = crc ^ (-1);
+    for (var i = 0, iTop = input.length; i < iTop; i++) {
+        b = isArray ? input[i] : input.charCodeAt(i);
+        y = (crc ^ b) & 0xFF;
+        x = table[y];
+        crc = (crc >>> 8) ^ x;
+    }
+
+    return crc ^ (-1);
+};
+// vim: set shiftwidth=4 softtabstop=4:
+
+},{"./utils":21}],5:[function(_dereq_,module,exports){
+'use strict';
+var utils = _dereq_('./utils');
+
+function DataReader(data) {
+    this.data = null; // type : see implementation
+    this.length = 0;
+    this.index = 0;
+}
+DataReader.prototype = {
+    /**
+     * Check that the offset will not go too far.
+     * @param {string} offset the additional offset to check.
+     * @throws {Error} an Error if the offset is out of bounds.
+     */
+    checkOffset: function(offset) {
+        this.checkIndex(this.index + offset);
+    },
+    /**
+     * Check that the specifed index will not be too far.
+     * @param {string} newIndex the index to check.
+     * @throws {Error} an Error if the index is out of bounds.
+     */
+    checkIndex: function(newIndex) {
+        if (this.length < newIndex || newIndex < 0) {
+            throw new Error("End of data reached (data length = " + this.length + ", asked index = " + (newIndex) + "). Corrupted zip ?");
+        }
+    },
+    /**
+     * Change the index.
+     * @param {number} newIndex The new index.
+     * @throws {Error} if the new index is out of the data.
+     */
+    setIndex: function(newIndex) {
+        this.checkIndex(newIndex);
+        this.index = newIndex;
+    },
+    /**
+     * Skip the next n bytes.
+     * @param {number} n the number of bytes to skip.
+     * @throws {Error} if the new index is out of the data.
+     */
+    skip: function(n) {
+        this.setIndex(this.index + n);
+    },
+    /**
+     * Get the byte at the specified index.
+     * @param {number} i the index to use.
+     * @return {number} a byte.
+     */
+    byteAt: function(i) {
+        // see implementations
+    },
+    /**
+     * Get the next number with a given byte size.
+     * @param {number} size the number of bytes to read.
+     * @return {number} the corresponding number.
+     */
+    readInt: function(size) {
+        var result = 0,
+            i;
+        this.checkOffset(size);
+        for (i = this.index + size - 1; i >= this.index; i--) {
+            result = (result << 8) + this.byteAt(i);
+        }
+        this.index += size;
+        return result;
+    },
+    /**
+     * Get the next string with a given byte size.
+     * @param {number} size the number of bytes to read.
+     * @return {string} the corresponding string.
+     */
+    readString: function(size) {
+        return utils.transformTo("string", this.readData(size));
+    },
+    /**
+     * Get raw data without conversion, <size> bytes.
+     * @param {number} size the number of bytes to read.
+     * @return {Object} the raw data, implementation specific.
+     */
+    readData: function(size) {
+        // see implementations
+    },
+    /**
+     * Find the last occurence of a zip signature (4 bytes).
+     * @param {string} sig the signature to find.
+     * @return {number} the index of the last occurence, -1 if not found.
+     */
+    lastIndexOfSignature: function(sig) {
+        // see implementations
+    },
+    /**
+     * Get the next date.
+     * @return {Date} the date.
+     */
+    readDate: function() {
+        var dostime = this.readInt(4);
+        return new Date(
+        ((dostime >> 25) & 0x7f) + 1980, // year
+        ((dostime >> 21) & 0x0f) - 1, // month
+        (dostime >> 16) & 0x1f, // day
+        (dostime >> 11) & 0x1f, // hour
+        (dostime >> 5) & 0x3f, // minute
+        (dostime & 0x1f) << 1); // second
+    }
+};
+module.exports = DataReader;
+
+},{"./utils":21}],6:[function(_dereq_,module,exports){
+'use strict';
+exports.base64 = false;
+exports.binary = false;
+exports.dir = false;
+exports.createFolders = false;
+exports.date = null;
+exports.compression = null;
+exports.comment = null;
+
+},{}],7:[function(_dereq_,module,exports){
+'use strict';
+var utils = _dereq_('./utils');
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.string2binary = function(str) {
+    return utils.string2binary(str);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.string2Uint8Array = function(str) {
+    return utils.transformTo("uint8array", str);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.uint8Array2String = function(array) {
+    return utils.transformTo("string", array);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.string2Blob = function(str) {
+    var buffer = utils.transformTo("arraybuffer", str);
+    return utils.arrayBuffer2Blob(buffer);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.arrayBuffer2Blob = function(buffer) {
+    return utils.arrayBuffer2Blob(buffer);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.transformTo = function(outputType, input) {
+    return utils.transformTo(outputType, input);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.getTypeOf = function(input) {
+    return utils.getTypeOf(input);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.checkSupport = function(type) {
+    return utils.checkSupport(type);
+};
+
+/**
+ * @deprecated
+ * This value will be removed in a future version without replacement.
+ */
+exports.MAX_VALUE_16BITS = utils.MAX_VALUE_16BITS;
+
+/**
+ * @deprecated
+ * This value will be removed in a future version without replacement.
+ */
+exports.MAX_VALUE_32BITS = utils.MAX_VALUE_32BITS;
+
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.pretty = function(str) {
+    return utils.pretty(str);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.findCompression = function(compressionMethod) {
+    return utils.findCompression(compressionMethod);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.isRegExp = function (object) {
+    return utils.isRegExp(object);
+};
+
+
+},{"./utils":21}],8:[function(_dereq_,module,exports){
+'use strict';
+var USE_TYPEDARRAY = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');
+
+var pako = _dereq_("pako");
+exports.uncompressInputType = USE_TYPEDARRAY ? "uint8array" : "array";
+exports.compressInputType = USE_TYPEDARRAY ? "uint8array" : "array";
+
+exports.magic = "\x08\x00";
+exports.compress = function(input) {
+    return pako.deflateRaw(input);
+};
+exports.uncompress =  function(input) {
+    return pako.inflateRaw(input);
+};
+
+},{"pako":24}],9:[function(_dereq_,module,exports){
+'use strict';
+
+var base64 = _dereq_('./base64');
+
+/**
+Usage:
+   zip = new JSZip();
+   zip.file("hello.txt", "Hello, World!").file("tempfile", "nothing");
+   zip.folder("images").file("smile.gif", base64Data, {base64: true});
+   zip.file("Xmas.txt", "Ho ho ho !", {date : new Date("December 25, 2007 00:00:01")});
+   zip.remove("tempfile");
+
+   base64zip = zip.generate();
+
+**/
+
+/**
+ * Representation a of zip file in js
+ * @constructor
+ * @param {String=|ArrayBuffer=|Uint8Array=} data the data to load, if any (optional).
+ * @param {Object=} options the options for creating this objects (optional).
+ */
+function JSZip(data, options) {
+    // if this constructor isÂ used withoutÂ `new`, itÂ adds `new` beforeÂ itself:
+    if(!(this instanceof JSZip)) return new JSZip(data, options);
+
+    // object containing the files :
+    // {
+    //   "folder/" : {...},
+    //   "folder/data.txt" : {...}
+    // }
+    this.files = {};
+
+    this.comment = null;
+
+    // Where we are in the hierarchy
+    this.root = "";
+    if (data) {
+        this.load(data, options);
+    }
+    this.clone = function() {
+        var newObj = new JSZip();
+        for (var i in this) {
+            if (typeof this[i] !== "function") {
+                newObj[i] = this[i];
+            }
+        }
+        return newObj;
+    };
+}
+JSZip.prototype = _dereq_('./object');
+JSZip.prototype.load = _dereq_('./load');
+JSZip.support = _dereq_('./support');
+JSZip.defaults = _dereq_('./defaults');
+
+/**
+ * @deprecated
+ * This namespace will be removed in a future version without replacement.
+ */
+JSZip.utils = _dereq_('./deprecatedPublicUtils');
+
+JSZip.base64 = {
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    encode : function(input) {
+        return base64.encode(input);
+    },
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    decode : function(input) {
+        return base64.decode(input);
+    }
+};
+JSZip.compressions = _dereq_('./compressions');
+module.exports = JSZip;
+
+},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(_dereq_,module,exports){
+'use strict';
+var base64 = _dereq_('./base64');
+var ZipEntries = _dereq_('./zipEntries');
+module.exports = function(data, options) {
+    var files, zipEntries, i, input;
+    options = options || {};
+    if (options.base64) {
+        data = base64.decode(data);
+    }
+
+    zipEntries = new ZipEntries(data, options);
+    files = zipEntries.files;
+    for (i = 0; i < files.length; i++) {
+        input = files[i];
+        this.file(input.fileName, input.decompressed, {
+            binary: true,
+            optimizedBinaryString: true,
+            date: input.date,
+            dir: input.dir,
+            comment : input.fileComment.length ? input.fileComment : null,
+            createFolders: options.createFolders
+        });
+    }
+    if (zipEntries.zipComment.length) {
+        this.comment = zipEntries.zipComment;
+    }
+
+    return this;
+};
+
+},{"./base64":1,"./zipEntries":22}],11:[function(_dereq_,module,exports){
+(function (Buffer){
+'use strict';
+module.exports = function(data, encoding){
+    return new Buffer(data, encoding);
+};
+module.exports.test = function(b){
+    return Buffer.isBuffer(b);
+};
+}).call(this,(typeof Buffer !== "undefined" ? Buffer : undefined))
+},{}],12:[function(_dereq_,module,exports){
+'use strict';
+var Uint8ArrayReader = _dereq_('./uint8ArrayReader');
+
+function NodeBufferReader(data) {
+    this.data = data;
+    this.length = this.data.length;
+    this.index = 0;
+}
+NodeBufferReader.prototype = new Uint8ArrayReader();
+
+/**
+ * @see DataReader.readData
+ */
+NodeBufferReader.prototype.readData = function(size) {
+    this.checkOffset(size);
+    var result = this.data.slice(this.index, this.index + size);
+    this.index += size;
+    return result;
+};
+module.exports = NodeBufferReader;
+
+},{"./uint8ArrayReader":18}],13:[function(_dereq_,module,exports){
+'use strict';
+var support = _dereq_('./support');
+var utils = _dereq_('./utils');
+var crc32 = _dereq_('./crc32');
+var signature = _dereq_('./signature');
+var defaults = _dereq_('./defaults');
+var base64 = _dereq_('./base64');
+var compressions = _dereq_('./compressions');
+var CompressedObject = _dereq_('./compressedObject');
+var nodeBuffer = _dereq_('./nodeBuffer');
+var utf8 = _dereq_('./utf8');
+var StringWriter = _dereq_('./stringWriter');
+var Uint8ArrayWriter = _dereq_('./uint8ArrayWriter');
+
+/**
+ * Returns the raw data of a ZipObject, decompress the content if necessary.
+ * @param {ZipObject} file the file to use.
+ * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.
+ */
+var getRawData = function(file) {
+    if (file._data instanceof CompressedObject) {
+        file._data = file._data.getContent();
+        file.options.binary = true;
+        file.options.base64 = false;
+
+        if (utils.getTypeOf(file._data) === "uint8array") {
+            var copy = file._data;
+            // when reading an arraybuffer, the CompressedObject mechanism will keep it and subarray() a Uint8Array.
+            // if we request a file in the same format, we might get the same Uint8Array or its ArrayBuffer (the original zip file).
+            file._data = new Uint8Array(copy.length);
+            // with an empty Uint8Array, Opera fails with a "Offset larger than array size"
+            if (copy.length !== 0) {
+                file._data.set(copy, 0);
+            }
+        }
+    }
+    return file._data;
+};
+
+/**
+ * Returns the data of a ZipObject in a binary form. If the content is an unicode string, encode it.
+ * @param {ZipObject} file the file to use.
+ * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.
+ */
+var getBinaryData = function(file) {
+    var result = getRawData(file),
+        type = utils.getTypeOf(result);
+    if (type === "string") {
+        if (!file.options.binary) {
+            // unicode text !
+            // unicode string => binary string is a painful process, check if we can avoid it.
+            if (support.nodebuffer) {
+                return nodeBuffer(result, "utf-8");
+            }
+        }
+        return file.asBinary();
+    }
+    return result;
+};
+
+/**
+ * Transform this._data into a string.
+ * @param {function} filter a function String -> String, applied if not null on the result.
+ * @return {String} the string representing this._data.
+ */
+var dataToString = function(asUTF8) {
+    var result = getRawData(this);
+    if (result === null || typeof result === "undefined") {
+        return "";
+    }
+    // if the data is a base64 string, we decode it before checking the encoding !
+    if (this.options.base64) {
+        result = base64.decode(result);
+    }
+    if (asUTF8 && this.options.binary) {
+        // JSZip.prototype.utf8decode supports arrays as input
+        // skip to array => string step, utf8decode will do it.
+        result = out.utf8decode(result);
+    }
+    else {
+        // no utf8 transformation, do the array => string step.
+        result = utils.transformTo("string", result);
+    }
+
+    if (!asUTF8 && !this.options.binary) {
+        result = utils.transformTo("string", out.utf8encode(result));
+    }
+    return result;
+};
+/**
+ * A simple object representing a file in the zip file.
+ * @constructor
+ * @param {string} name the name of the file
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data
+ * @param {Object} options the options of the file
+ */
+var ZipObject = function(name, data, options) {
+    this.name = name;
+    this.dir = options.dir;
+    this.date = options.date;
+    this.comment = options.comment;
+
+    this._data = data;
+    this.options = options;
+
+    /*
+     * This object contains initial values for dir and date.
+     * With them, we can check if the user changed the deprecated metadata in
+     * `ZipObject#options` or not.
+     */
+    this._initialMetadata = {
+      dir : options.dir,
+      date : options.date
+    };
+};
+
+ZipObject.prototype = {
+    /**
+     * Return the content as UTF8 string.
+     * @return {string} the UTF8 string.
+     */
+    asText: function() {
+        return dataToString.call(this, true);
+    },
+    /**
+     * Returns the binary content.
+     * @return {string} the content as binary.
+     */
+    asBinary: function() {
+        return dataToString.call(this, false);
+    },
+    /**
+     * Returns the content as a nodejs Buffer.
+     * @return {Buffer} the content as a Buffer.
+     */
+    asNodeBuffer: function() {
+        var result = getBinaryData(this);
+        return utils.transformTo("nodebuffer", result);
+    },
+    /**
+     * Returns the content as an Uint8Array.
+     * @return {Uint8Array} the content as an Uint8Array.
+     */
+    asUint8Array: function() {
+        var result = getBinaryData(this);
+        return utils.transformTo("uint8array", result);
+    },
+    /**
+     * Returns the content as an ArrayBuffer.
+     * @return {ArrayBuffer} the content as an ArrayBufer.
+     */
+    asArrayBuffer: function() {
+        return this.asUint8Array().buffer;
+    }
+};
+
+/**
+ * Transform an integer into a string in hexadecimal.
+ * @private
+ * @param {number} dec the number to convert.
+ * @param {number} bytes the number of bytes to generate.
+ * @returns {string} the result.
+ */
+var decToHex = function(dec, bytes) {
+    var hex = "",
+        i;
+    for (i = 0; i < bytes; i++) {
+        hex += String.fromCharCode(dec & 0xff);
+        dec = dec >>> 8;
+    }
+    return hex;
+};
+
+/**
+ * Merge the objects passed as parameters into a new one.
+ * @private
+ * @param {...Object} var_args All objects to merge.
+ * @return {Object} a new object with the data of the others.
+ */
+var extend = function() {
+    var result = {}, i, attr;
+    for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers
+        for (attr in arguments[i]) {
+            if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === "undefined") {
+                result[attr] = arguments[i][attr];
+            }
+        }
+    }
+    return result;
+};
+
+/**
+ * Transforms the (incomplete) options from the user into the complete
+ * set of options to create a file.
+ * @private
+ * @param {Object} o the options from the user.
+ * @return {Object} the complete set of options.
+ */
+var prepareFileAttrs = function(o) {
+    o = o || {};
+    if (o.base64 === true && (o.binary === null || o.binary === undefined)) {
+        o.binary = true;
+    }
+    o = extend(o, defaults);
+    o.date = o.date || new Date();
+    if (o.compression !== null) o.compression = o.compression.toUpperCase();
+
+    return o;
+};
+
+/**
+ * Add a file in the current folder.
+ * @private
+ * @param {string} name the name of the file
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file
+ * @param {Object} o the options of the file
+ * @return {Object} the new file.
+ */
+var fileAdd = function(name, data, o) {
+    // be sure sub folders exist
+    var dataType = utils.getTypeOf(data),
+        parent;
+
+    o = prepareFileAttrs(o);
+
+    if (o.createFolders && (parent = parentFolder(name))) {
+        folderAdd.call(this, parent, true);
+    }
+
+    if (o.dir || data === null || typeof data === "undefined") {
+        o.base64 = false;
+        o.binary = false;
+        data = null;
+    }
+    else if (dataType === "string") {
+        if (o.binary && !o.base64) {
+            // optimizedBinaryString == true means that the file has already been filtered with a 0xFF mask
+            if (o.optimizedBinaryString !== true) {
+                // this is a string, not in a base64 format.
+                // Be sure that this is a correct "binary string"
+                data = utils.string2binary(data);
+            }
+        }
+    }
+    else { // arraybuffer, uint8array, ...
+        o.base64 = false;
+        o.binary = true;
+
+        if (!dataType && !(data instanceof CompressedObject)) {
+            throw new Error("The data of '" + name + "' is in an unsupported format !");
+        }
+
+        // special case : it's way easier to work with Uint8Array than with ArrayBuffer
+        if (dataType === "arraybuffer") {
+            data = utils.transformTo("uint8array", data);
+        }
+    }
+
+    var object = new ZipObject(name, data, o);
+    this.files[name] = object;
+    return object;
+};
+
+/**
+ * Find the parent folder of the path.
+ * @private
+ * @param {string} path the path to use
+ * @return {string} the parent folder, or ""
+ */
+var parentFolder = function (path) {
+    if (path.slice(-1) == '/') {
+        path = path.substring(0, path.length - 1);
+    }
+    var lastSlash = path.lastIndexOf('/');
+    return (lastSlash > 0) ? path.substring(0, lastSlash) : "";
+};
+
+/**
+ * Add a (sub) folder in the current folder.
+ * @private
+ * @param {string} name the folder's name
+ * @param {boolean=} [createFolders] If true, automatically create sub
+ *  folders. Defaults to false.
+ * @return {Object} the new folder.
+ */
+var folderAdd = function(name, createFolders) {
+    // Check the name ends with a /
+    if (name.slice(-1) != "/") {
+        name += "/"; // IE doesn't like substr(-1)
+    }
+
+    createFolders = (typeof createFolders !== 'undefined') ? createFolders : false;
+
+    // Does this folder already exist?
+    if (!this.files[name]) {
+        fileAdd.call(this, name, null, {
+            dir: true,
+            createFolders: createFolders
+        });
+    }
+    return this.files[name];
+};
+
+/**
+ * Generate a JSZip.CompressedObject for a given zipOject.
+ * @param {ZipObject} file the object to read.
+ * @param {JSZip.compression} compression the compression to use.
+ * @return {JSZip.CompressedObject} the compressed result.
+ */
+var generateCompressedObjectFrom = function(file, compression) {
+    var result = new CompressedObject(),
+        content;
+
+    // the data has not been decompressed, we might reuse things !
+    if (file._data instanceof CompressedObject) {
+        result.uncompressedSize = file._data.uncompressedSize;
+        result.crc32 = file._data.crc32;
+
+        if (result.uncompressedSize === 0 || file.dir) {
+            compression = compressions['STORE'];
+            result.compressedContent = "";
+            result.crc32 = 0;
+        }
+        else if (file._data.compressionMethod === compression.magic) {
+            result.compressedContent = file._data.getCompressedContent();
+        }
+        else {
+            content = file._data.getContent();
+            // need to decompress / recompress
+            result.compressedContent = compression.compress(utils.transformTo(compression.compressInputType, content));
+        }
+    }
+    else {
+        // have uncompressed data
+        content = getBinaryData(file);
+        if (!content || content.length === 0 || file.dir) {
+            compression = compressions['STORE'];
+            content = "";
+        }
+        result.uncompressedSize = content.length;
+        result.crc32 = crc32(content);
+        result.compressedContent = compression.compress(utils.transformTo(compression.compressInputType, content));
+    }
+
+    result.compressedSize = result.compressedContent.length;
+    result.compressionMethod = compression.magic;
+
+    return result;
+};
+
+/**
+ * Generate the various parts used in the construction of the final zip file.
+ * @param {string} name the file name.
+ * @param {ZipObject} file the file content.
+ * @param {JSZip.CompressedObject} compressedObject the compressed object.
+ * @param {number} offset the current offset from the start of the zip file.
+ * @return {object} the zip parts.
+ */
+var generateZipParts = function(name, file, compressedObject, offset) {
+    var data = compressedObject.compressedContent,
+        utfEncodedFileName = utils.transformTo("string", utf8.utf8encode(file.name)),
+        comment = file.comment || "",
+        utfEncodedComment = utils.transformTo("string", utf8.utf8encode(comment)),
+        useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,
+        useUTF8ForComment = utfEncodedComment.length !== comment.length,
+        o = file.options,
+        dosTime,
+        dosDate,
+        extraFields = "",
+        unicodePathExtraField = "",
+        unicodeCommentExtraField = "",
+        dir, date;
+
+
+    // handle the deprecated options.dir
+    if (file._initialMetadata.dir !== file.dir) {
+        dir = file.dir;
+    } else {
+        dir = o.dir;
+    }
+
+    // handle the deprecated options.date
+    if(file._initialMetadata.date !== file.date) {
+        date = file.date;
+    } else {
+        date = o.date;
+    }
+
+    // date
+    // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html
+    // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html
+    // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html
+
+    dosTime = date.getHours();
+    dosTime = dosTime << 6;
+    dosTime = dosTime | date.getMinutes();
+    dosTime = dosTime << 5;
+    dosTime = dosTime | date.getSeconds() / 2;
+
+    dosDate = date.getFullYear() - 1980;
+    dosDate = dosDate << 4;
+    dosDate = dosDate | (date.getMonth() + 1);
+    dosDate = dosDate << 5;
+    dosDate = dosDate | date.getDate();
+
+    if (useUTF8ForFileName) {
+        // set the unicode path extra field. unzip needs at least one extra
+        // field to correctly handle unicode path, so using the path is as good
+        // as any other information. This could improve the situation with
+        // other archive managers too.
+        // This field is usually used without the utf8 flag, with a non
+        // unicode path in the header (winrar, winzip). This helps (a bit)
+        // with the messy Windows' default compressed folders feature but
+        // breaks on p7zip which doesn't seek the unicode path extra field.
+        // So for now, UTF-8 everywhere !
+        unicodePathExtraField =
+            // Version
+            decToHex(1, 1) +
+            // NameCRC32
+            decToHex(crc32(utfEncodedFileName), 4) +
+            // UnicodeName
+            utfEncodedFileName;
+
+        extraFields +=
+            // Info-ZIP Unicode Path Extra Field
+            "\x75\x70" +
+            // size
+            decToHex(unicodePathExtraField.length, 2) +
+            // content
+            unicodePathExtraField;
+    }
+
+    if(useUTF8ForComment) {
+
+        unicodeCommentExtraField =
+            // Version
+            decToHex(1, 1) +
+            // CommentCRC32
+            decToHex(this.crc32(utfEncodedComment), 4) +
+            // UnicodeName
+            utfEncodedComment;
+
+        extraFields +=
+            // Info-ZIP Unicode Path Extra Field
+            "\x75\x63" +
+            // size
+            decToHex(unicodeCommentExtraField.length, 2) +
+            // content
+            unicodeCommentExtraField;
+    }
+
+    var header = "";
+
+    // version needed to extract
+    header += "\x0A\x00";
+    // general purpose bit flag
+    // set bit 11 if utf8
+    header += (useUTF8ForFileName || useUTF8ForComment) ? "\x00\x08" : "\x00\x00";
+    // compression method
+    header += compressedObject.compressionMethod;
+    // last mod file time
+    header += decToHex(dosTime, 2);
+    // last mod file date
+    header += decToHex(dosDate, 2);
+    // crc-32
+    header += decToHex(compressedObject.crc32, 4);
+    // compressed size
+    header += decToHex(compressedObject.compressedSize, 4);
+    // uncompressed size
+    header += decToHex(compressedObject.uncompressedSize, 4);
+    // file name length
+    header += decToHex(utfEncodedFileName.length, 2);
+    // extra field length
+    header += decToHex(extraFields.length, 2);
+
+
+    var fileRecord = signature.LOCAL_FILE_HEADER + header + utfEncodedFileName + extraFields;
+
+    var dirRecord = signature.CENTRAL_FILE_HEADER +
+    // version made by (00: DOS)
+    "\x14\x00" +
+    // file header (common to file and central directory)
+    header +
+    // file comment length
+    decToHex(utfEncodedComment.length, 2) +
+    // disk number start
+    "\x00\x00" +
+    // internal file attributes TODO
+    "\x00\x00" +
+    // external file attributes
+    (dir === true ? "\x10\x00\x00\x00" : "\x00\x00\x00\x00") +
+    // relative offset of local header
+    decToHex(offset, 4) +
+    // file name
+    utfEncodedFileName +
+    // extra field
+    extraFields +
+    // file comment
+    utfEncodedComment;
+
+    return {
+        fileRecord: fileRecord,
+        dirRecord: dirRecord,
+        compressedObject: compressedObject
+    };
+};
+
+
+// return the actual prototype of JSZip
+var out = {
+    /**
+     * Read an existing zip and merge the data in the current JSZip object.
+     * The implementation is in jszip-load.js, don't forget to include it.
+     * @param {String|ArrayBuffer|Uint8Array|Buffer} stream  The stream to load
+     * @param {Object} options Options for loading the stream.
+     *  options.base64 : is the stream in base64 ? default : false
+     * @return {JSZip} the current JSZip object
+     */
+    load: function(stream, options) {
+        throw new Error("Load method is not defined. Is the file jszip-load.js included ?");
+    },
+
+    /**
+     * Filter nested files/folders with the specified function.
+     * @param {Function} search the predicate to use :
+     * function (relativePath, file) {...}
+     * It takes 2 arguments : the relative path and the file.
+     * @return {Array} An array of matching elements.
+     */
+    filter: function(search) {
+        var result = [],
+            filename, relativePath, file, fileClone;
+        for (filename in this.files) {
+            if (!this.files.hasOwnProperty(filename)) {
+                continue;
+            }
+            file = this.files[filename];
+            // return a new object, don't let the user mess with our internal objects :)
+            fileClone = new ZipObject(file.name, file._data, extend(file.options));
+            relativePath = filename.slice(this.root.length, filename.length);
+            if (filename.slice(0, this.root.length) === this.root && // the file is in the current root
+            search(relativePath, fileClone)) { // and the file matches the function
+                result.push(fileClone);
+            }
+        }
+        return result;
+    },
+
+    /**
+     * Add a file to the zip file, or search a file.
+     * @param   {string|RegExp} name The name of the file to add (if data is defined),
+     * the name of the file to find (if no data) or a regex to match files.
+     * @param   {String|ArrayBuffer|Uint8Array|Buffer} data  The file data, either raw or base64 encoded
+     * @param   {Object} o     File options
+     * @return  {JSZip|Object|Array} this JSZip object (when adding a file),
+     * a file (when searching by string) or an array of files (when searching by regex).
+     */
+    file: function(name, data, o) {
+        if (arguments.length === 1) {
+            if (utils.isRegExp(name)) {
+                var regexp = name;
+                return this.filter(function(relativePath, file) {
+                    return !file.dir && regexp.test(relativePath);
+                });
+            }
+            else { // text
+                return this.filter(function(relativePath, file) {
+                    return !file.dir && relativePath === name;
+                })[0] || null;
+            }
+        }
+        else { // more than one argument : we have data !
+            name = this.root + name;
+            fileAdd.call(this, name, data, o);
+        }
+        return this;
+    },
+
+    /**
+     * Add a directory to the zip file, or search.
+     * @param   {String|RegExp} arg The name of the directory to add, or a regex to search folders.
+     * @return  {JSZip} an object with the new directory as the root, or an array containing matching folders.
+     */
+    folder: function(arg) {
+        if (!arg) {
+            return this;
+        }
+
+        if (utils.isRegExp(arg)) {
+            return this.filter(function(relativePath, file) {
+                return file.dir && arg.test(relativePath);
+            });
+        }
+
+        // else, name is a new folder
+        var name = this.root + arg;
+        var newFolder = folderAdd.call(this, name);
+
+        // Allow chaining by returning a new object with this folder as the root
+        var ret = this.clone();
+        ret.root = newFolder.name;
+        return ret;
+    },
+
+    /**
+     * Delete a file, or a directory and all sub-files, from the zip
+     * @param {string} name the name of the file to delete
+     * @return {JSZip} this JSZip object
+     */
+    remove: function(name) {
+        name = this.root + name;
+        var file = this.files[name];
+        if (!file) {
+            // Look for any folders
+            if (name.slice(-1) != "/") {
+                name += "/";
+            }
+            file = this.files[name];
+        }
+
+        if (file && !file.dir) {
+            // file
+            delete this.files[name];
+        } else {
+            // maybe a folder, delete recursively
+            var kids = this.filter(function(relativePath, file) {
+                return file.name.slice(0, name.length) === name;
+            });
+            for (var i = 0; i < kids.length; i++) {
+                delete this.files[kids[i].name];
+            }
+        }
+
+        return this;
+    },
+
+    /**
+     * Generate the complete zip file
+     * @param {Object} options the options to generate the zip file :
+     * - base64, (deprecated, use type instead) true to generate base64.
+     * - compression, "STORE" by default.
+     * - type, "base64" by default. Values are : string, base64, uint8array, arraybuffer, blob.
+     * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file
+     */
+    generate: function(options) {
+        options = extend(options || {}, {
+            base64: true,
+            compression: "STORE",
+            type: "base64",
+            comment: null
+        });
+
+        utils.checkSupport(options.type);
+
+        var zipData = [],
+            localDirLength = 0,
+            centralDirLength = 0,
+            writer, i,
+            utfEncodedComment = utils.transformTo("string", this.utf8encode(options.comment || this.comment || ""));
+
+        // first, generate all the zip parts.
+        for (var name in this.files) {
+            if (!this.files.hasOwnProperty(name)) {
+                continue;
+            }
+            var file = this.files[name];
+
+            var compressionName = file.options.compression || options.compression.toUpperCase();
+            var compression = compressions[compressionName];
+            if (!compression) {
+                throw new Error(compressionName + " is not a valid compression method !");
+            }
+
+            var compressedObject = generateCompressedObjectFrom.call(this, file, compression);
+
+            var zipPart = generateZipParts.call(this, name, file, compressedObject, localDirLength);
+            localDirLength += zipPart.fileRecord.length + compressedObject.compressedSize;
+            centralDirLength += zipPart.dirRecord.length;
+            zipData.push(zipPart);
+        }
+
+        var dirEnd = "";
+
+        // end of central dir signature
+        dirEnd = signature.CENTRAL_DIRECTORY_END +
+        // number of this disk
+        "\x00\x00" +
+        // number of the disk with the start of the central directory
+        "\x00\x00" +
+        // total number of entries in the central directory on this disk
+        decToHex(zipData.length, 2) +
+        // total number of entries in the central directory
+        decToHex(zipData.length, 2) +
+        // size of the central directory   4 bytes
+        decToHex(centralDirLength, 4) +
+        // offset of start of central directory with respect to the starting disk number
+        decToHex(localDirLength, 4) +
+        // .ZIP file comment length
+        decToHex(utfEncodedComment.length, 2) +
+        // .ZIP file comment
+        utfEncodedComment;
+
+
+        // we have all the parts (and the total length)
+        // time to create a writer !
+        var typeName = options.type.toLowerCase();
+        if(typeName==="uint8array"||typeName==="arraybuffer"||typeName==="blob"||typeName==="nodebuffer") {
+            writer = new Uint8ArrayWriter(localDirLength + centralDirLength + dirEnd.length);
+        }else{
+            writer = new StringWriter(localDirLength + centralDirLength + dirEnd.length);
+        }
+
+        for (i = 0; i < zipData.length; i++) {
+            writer.append(zipData[i].fileRecord);
+            writer.append(zipData[i].compressedObject.compressedContent);
+        }
+        for (i = 0; i < zipData.length; i++) {
+            writer.append(zipData[i].dirRecord);
+        }
+
+        writer.append(dirEnd);
+
+        var zip = writer.finalize();
+
+
+
+        switch(options.type.toLowerCase()) {
+            // case "zip is an Uint8Array"
+            case "uint8array" :
+            case "arraybuffer" :
+            case "nodebuffer" :
+               return utils.transformTo(options.type.toLowerCase(), zip);
+            case "blob" :
+               return utils.arrayBuffer2Blob(utils.transformTo("arraybuffer", zip));
+            // case "zip is a string"
+            case "base64" :
+               return (options.base64) ? base64.encode(zip) : zip;
+            default : // case "string" :
+               return zip;
+         }
+
+    },
+
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    crc32: function (input, crc) {
+        return crc32(input, crc);
+    },
+
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    utf8encode: function (string) {
+        return utils.transformTo("string", utf8.utf8encode(string));
+    },
+
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    utf8decode: function (input) {
+        return utf8.utf8decode(input);
+    }
+};
+module.exports = out;
+
+},{"./base64":1,"./compressedObject":2,"./compressions":3,"./crc32":4,"./defaults":6,"./nodeBuffer":11,"./signature":14,"./stringWriter":16,"./support":17,"./uint8ArrayWriter":19,"./utf8":20,"./utils":21}],14:[function(_dereq_,module,exports){
+'use strict';
+exports.LOCAL_FILE_HEADER = "PK\x03\x04";
+exports.CENTRAL_FILE_HEADER = "PK\x01\x02";
+exports.CENTRAL_DIRECTORY_END = "PK\x05\x06";
+exports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x06\x07";
+exports.ZIP64_CENTRAL_DIRECTORY_END = "PK\x06\x06";
+exports.DATA_DESCRIPTOR = "PK\x07\x08";
+
+},{}],15:[function(_dereq_,module,exports){
+'use strict';
+var DataReader = _dereq_('./dataReader');
+var utils = _dereq_('./utils');
+
+function StringReader(data, optimizedBinaryString) {
+    this.data = data;
+    if (!optimizedBinaryString) {
+        this.data = utils.string2binary(this.data);
+    }
+    this.length = this.data.length;
+    this.index = 0;
+}
+StringReader.prototype = new DataReader();
+/**
+ * @see DataReader.byteAt
+ */
+StringReader.prototype.byteAt = function(i) {
+    return this.data.charCodeAt(i);
+};
+/**
+ * @see DataReader.lastIndexOfSignature
+ */
+StringReader.prototype.lastIndexOfSignature = function(sig) {
+    return this.data.lastIndexOf(sig);
+};
+/**
+ * @see DataReader.readData
+ */
+StringReader.prototype.readData = function(size) {
+    this.checkOffset(size);
+    // this will work because the constructor applied the "& 0xff" mask.
+    var result = this.data.slice(this.index, this.index + size);
+    this.index += size;
+    return result;
+};
+module.exports = StringReader;
+
+},{"./dataReader":5,"./utils":21}],16:[function(_dereq_,module,exports){
+'use strict';
+
+var utils = _dereq_('./utils');
+
+/**
+ * An object to write any content to a string.
+ * @constructor
+ */
+var StringWriter = function() {
+    this.data = [];
+};
+StringWriter.prototype = {
+    /**
+     * Append any content to the current string.
+     * @param {Object} input the content to add.
+     */
+    append: function(input) {
+        input = utils.transformTo("string", input);
+        this.data.push(input);
+    },
+    /**
+     * Finalize the construction an return the result.
+     * @return {string} the generated string.
+     */
+    finalize: function() {
+        return this.data.join("");
+    }
+};
+
+module.exports = StringWriter;
+
+},{"./utils":21}],17:[function(_dereq_,module,exports){
+(function (Buffer){
+'use strict';
+exports.base64 = true;
+exports.array = true;
+exports.string = true;
+exports.arraybuffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined";
+// contains true if JSZip can read/generate nodejs Buffer, false otherwise.
+// Browserify will provide a Buffer implementation for browsers, which is
+// an augmented Uint8Array (i.e., can be used as either Buffer or U8).
+exports.nodebuffer = typeof Buffer !== "undefined";
+// contains true if JSZip can read/generate Uint8Array, false otherwise.
+exports.uint8array = typeof Uint8Array !== "undefined";
+
+if (typeof ArrayBuffer === "undefined") {
+    exports.blob = false;
+}
+else {
+    var buffer = new ArrayBuffer(0);
+    try {
+        exports.blob = new Blob([buffer], {
+            type: "application/zip"
+        }).size === 0;
+    }
+    catch (e) {
+        try {
+            var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
+            var builder = new Builder();
+            builder.append(buffer);
+            exports.blob = builder.getBlob('application/zip').size === 0;
+        }
+        catch (e) {
+            exports.blob = false;
+        }
+    }
+}
+
+}).call(this,(typeof Buffer !== "undefined" ? Buffer : undefined))
+},{}],18:[function(_dereq_,module,exports){
+'use strict';
+var DataReader = _dereq_('./dataReader');
+
+function Uint8ArrayReader(data) {
+    if (data) {
+        this.data = data;
+        this.length = this.data.length;
+        this.index = 0;
+    }
+}
+Uint8ArrayReader.prototype = new DataReader();
+/**
+ * @see DataReader.byteAt
+ */
+Uint8ArrayReader.prototype.byteAt = function(i) {
+    return this.data[i];
+};
+/**
+ * @see DataReader.lastIndexOfSignature
+ */
+Uint8ArrayReader.prototype.lastIndexOfSignature = function(sig) {
+    var sig0 = sig.charCodeAt(0),
+        sig1 = sig.charCodeAt(1),
+        sig2 = sig.charCodeAt(2),
+        sig3 = sig.charCodeAt(3);
+    for (var i = this.length - 4; i >= 0; --i) {
+        if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {
+            return i;
+        }
+    }
+
+    return -1;
+};
+/**
+ * @see DataReader.readData
+ */
+Uint8ArrayReader.prototype.readData = function(size) {
+    this.checkOffset(size);
+    if(size === 0) {
+        // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].
+        return new Uint8Array(0);
+    }
+    var result = this.data.subarray(this.index, this.index + size);
+    this.index += size;
+    return result;
+};
+module.exports = Uint8ArrayReader;
+
+},{"./dataReader":5}],19:[function(_dereq_,module,exports){
+'use strict';
+
+var utils = _dereq_('./utils');
+
+/**
+ * An object to write any content to an Uint8Array.
+ * @constructor
+ * @param {number} length The length of the array.
+ */
+var Uint8ArrayWriter = function(length) {
+    this.data = new Uint8Array(length);
+    this.index = 0;
+};
+Uint8ArrayWriter.prototype = {
+    /**
+     * Append any content to the current array.
+     * @param {Object} input the content to add.
+     */
+    append: function(input) {
+        if (input.length !== 0) {
+            // with an empty Uint8Array, Opera fails with a "Offset larger than array size"
+            input = utils.transformTo("uint8array", input);
+            this.data.set(input, this.index);
+            this.index += input.length;
+        }
+    },
+    /**
+     * Finalize the construction an return the result.
+     * @return {Uint8Array} the generated array.
+     */
+    finalize: function() {
+        return this.data;
+    }
+};
+
+module.exports = Uint8ArrayWriter;
+
+},{"./utils":21}],20:[function(_dereq_,module,exports){
+'use strict';
+
+var utils = _dereq_('./utils');
+var support = _dereq_('./support');
+var nodeBuffer = _dereq_('./nodeBuffer');
+
+/**
+ * The following functions come from pako, from pako/lib/utils/strings
+ * released under the MIT license, see pako https://github.com/nodeca/pako/
+ */
+
+// Table with utf8 lengths (calculated by first byte of sequence)
+// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
+// because max possible codepoint is 0x10ffff
+var _utf8len = new Array(256);
+for (var i=0; i<256; i++) {
+  _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);
+}
+_utf8len[254]=_utf8len[254]=1; // Invalid sequence start
+
+// convert string to array (typed, when possible)
+var string2buf = function (str) {
+    var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
+
+    // count binary size
+    for (m_pos = 0; m_pos < str_len; m_pos++) {
+        c = str.charCodeAt(m_pos);
+        if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+            c2 = str.charCodeAt(m_pos+1);
+            if ((c2 & 0xfc00) === 0xdc00) {
+                c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+                m_pos++;
+            }
+        }
+        buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
+    }
+
+    // allocate buffer
+    if (support.uint8array) {
+        buf = new Uint8Array(buf_len);
+    } else {
+        buf = new Array(buf_len);
+    }
+
+    // convert
+    for (i=0, m_pos = 0; i < buf_len; m_pos++) {
+        c = str.charCodeAt(m_pos);
+        if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+            c2 = str.charCodeAt(m_pos+1);
+            if ((c2 & 0xfc00) === 0xdc00) {
+                c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+                m_pos++;
+            }
+        }
+        if (c < 0x80) {
+            /* one byte */
+            buf[i++] = c;
+        } else if (c < 0x800) {
+            /* two bytes */
+            buf[i++] = 0xC0 | (c >>> 6);
+            buf[i++] = 0x80 | (c & 0x3f);
+        } else if (c < 0x10000) {
+            /* three bytes */
+            buf[i++] = 0xE0 | (c >>> 12);
+            buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+            buf[i++] = 0x80 | (c & 0x3f);
+        } else {
+            /* four bytes */
+            buf[i++] = 0xf0 | (c >>> 18);
+            buf[i++] = 0x80 | (c >>> 12 & 0x3f);
+            buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+            buf[i++] = 0x80 | (c & 0x3f);
+        }
+    }
+
+    return buf;
+};
+
+// Calculate max possible position in utf8 buffer,
+// that will not break sequence. If that's not possible
+// - (very small limits) return max size as is.
+//
+// buf[] - utf8 bytes array
+// max   - length limit (mandatory);
+var utf8border = function(buf, max) {
+    var pos;
+
+    max = max || buf.length;
+    if (max > buf.length) { max = buf.length; }
+
+    // go back from last position, until start of sequence found
+    pos = max-1;
+    while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }
+
+    // Fuckup - very small and broken sequence,
+    // return max, because we should return something anyway.
+    if (pos < 0) { return max; }
+
+    // If we came to start of buffer - that means vuffer is too small,
+    // return max too.
+    if (pos === 0) { return max; }
+
+    return (pos + _utf8len[buf[pos]] > max) ? pos : max;
+};
+
+// convert array to string
+var buf2string = function (buf) {
+    var str, i, out, c, c_len;
+    var len = buf.length;
+
+    // Reserve max possible length (2 words per char)
+    // NB: by unknown reasons, Array is significantly faster for
+    //     String.fromCharCode.apply than Uint16Array.
+    var utf16buf = new Array(len*2);
+
+    for (out=0, i=0; i<len;) {
+        c = buf[i++];
+        // quick process ascii
+        if (c < 0x80) { utf16buf[out++] = c; continue; }
+
+        c_len = _utf8len[c];
+        // skip 5 & 6 byte codes
+        if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }
+
+        // apply mask on first byte
+        c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
+        // join the rest
+        while (c_len > 1 && i < len) {
+            c = (c << 6) | (buf[i++] & 0x3f);
+            c_len--;
+        }
+
+        // terminated by end of string?
+        if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }
+
+        if (c < 0x10000) {
+            utf16buf[out++] = c;
+        } else {
+            c -= 0x10000;
+            utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
+            utf16buf[out++] = 0xdc00 | (c & 0x3ff);
+        }
+    }
+
+    // shrinkBuf(utf16buf, out)
+    if (utf16buf.length !== out) {
+        if(utf16buf.subarray) {
+            utf16buf = utf16buf.subarray(0, out);
+        } else {
+            utf16buf.length = out;
+        }
+    }
+
+    // return String.fromCharCode.apply(null, utf16buf);
+    return utils.applyFromCharCode(utf16buf);
+};
+
+
+// That's all for the pako functions.
+
+
+/**
+ * Transform a javascript string into an array (typed if possible) of bytes,
+ * UTF-8 encoded.
+ * @param {String} str the string to encode
+ * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.
+ */
+exports.utf8encode = function utf8encode(str) {
+    if (support.nodebuffer) {
+        return nodeBuffer(str, "utf-8");
+    }
+
+    return string2buf(str);
+};
+
+
+/**
+ * Transform a bytes array (or a representation) representing an UTF-8 encoded
+ * string into a javascript string.
+ * @param {Array|Uint8Array|Buffer} buf the data de decode
+ * @return {String} the decoded string.
+ */
+exports.utf8decode = function utf8decode(buf) {
+    if (support.nodebuffer) {
+        return utils.transformTo("nodebuffer", buf).toString("utf-8");
+    }
+
+    buf = utils.transformTo(support.uint8array ? "uint8array" : "array", buf);
+
+    // return buf2string(buf);
+    // Chrome prefers to work with "small" chunks of data
+    // for the method buf2string.
+    // Firefox and Chrome has their own shortcut, IE doesn't seem to really care.
+    var result = [], k = 0, len = buf.length, chunk = 65536;
+    while (k < len) {
+        var nextBoundary = utf8border(buf, Math.min(k + chunk, len));
+        if (support.uint8array) {
+            result.push(buf2string(buf.subarray(k, nextBoundary)));
+        } else {
+            result.push(buf2string(buf.slice(k, nextBoundary)));
+        }
+        k = nextBoundary;
+    }
+    return result.join("");
+
+};
+// vim: set shiftwidth=4 softtabstop=4:
+
+},{"./nodeBuffer":11,"./support":17,"./utils":21}],21:[function(_dereq_,module,exports){
+'use strict';
+var support = _dereq_('./support');
+var compressions = _dereq_('./compressions');
+var nodeBuffer = _dereq_('./nodeBuffer');
+/**
+ * Convert a string to a "binary string" : a string containing only char codes between 0 and 255.
+ * @param {string} str the string to transform.
+ * @return {String} the binary string.
+ */
+exports.string2binary = function(str) {
+    var result = "";
+    for (var i = 0; i < str.length; i++) {
+        result += String.fromCharCode(str.charCodeAt(i) & 0xff);
+    }
+    return result;
+};
+exports.arrayBuffer2Blob = function(buffer) {
+    exports.checkSupport("blob");
+
+    try {
+        // Blob constructor
+        return new Blob([buffer], {
+            type: "application/zip"
+        });
+    }
+    catch (e) {
+
+        try {
+            // deprecated, browser only, old way
+            var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
+            var builder = new Builder();
+            builder.append(buffer);
+            return builder.getBlob('application/zip');
+        }
+        catch (e) {
+
+            // well, fuck ?!
+            throw new Error("Bug : can't construct the Blob.");
+        }
+    }
+
+
+};
+/**
+ * The identity function.
+ * @param {Object} input the input.
+ * @return {Object} the same input.
+ */
+function identity(input) {
+    return input;
+}
+
+/**
+ * Fill in an array with a string.
+ * @param {String} str the string to use.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).
+ * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.
+ */
+function stringToArrayLike(str, array) {
+    for (var i = 0; i < str.length; ++i) {
+        array[i] = str.charCodeAt(i) & 0xFF;
+    }
+    return array;
+}
+
+/**
+ * Transform an array-like object to a string.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
+ * @return {String} the result.
+ */
+function arrayLikeToString(array) {
+    // Performances notes :
+    // --------------------
+    // String.fromCharCode.apply(null, array) is the fastest, see
+    // see http://jsperf.com/converting-a-uint8array-to-a-string/2
+    // but the stack is limited (and we can get huge arrays !).
+    //
+    // result += String.fromCharCode(array[i]); generate too many strings !
+    //
+    // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2
+    var chunk = 65536;
+    var result = [],
+        len = array.length,
+        type = exports.getTypeOf(array),
+        k = 0,
+        canUseApply = true;
+      try {
+         switch(type) {
+            case "uint8array":
+               String.fromCharCode.apply(null, new Uint8Array(0));
+               break;
+            case "nodebuffer":
+               String.fromCharCode.apply(null, nodeBuffer(0));
+               break;
+         }
+      } catch(e) {
+         canUseApply = false;
+      }
+
+      // no apply : slow and painful algorithm
+      // default browser on android 4.*
+      if (!canUseApply) {
+         var resultStr = "";
+         for(var i = 0; i < array.length;i++) {
+            resultStr += String.fromCharCode(array[i]);
+         }
+    return resultStr;
+    }
+    while (k < len && chunk > 1) {
+        try {
+            if (type === "array" || type === "nodebuffer") {
+                result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));
+            }
+            else {
+                result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));
+            }
+            k += chunk;
+        }
+        catch (e) {
+            chunk = Math.floor(chunk / 2);
+        }
+    }
+    return result.join("");
+}
+
+exports.applyFromCharCode = arrayLikeToString;
+
+
+/**
+ * Copy the data from an array-like to an other array-like.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.
+ * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.
+ */
+function arrayLikeToArrayLike(arrayFrom, arrayTo) {
+    for (var i = 0; i < arrayFrom.length; i++) {
+        arrayTo[i] = arrayFrom[i];
+    }
+    return arrayTo;
+}
+
+// a matrix containing functions to transform everything into everything.
+var transform = {};
+
+// string to ?
+transform["string"] = {
+    "string": identity,
+    "array": function(input) {
+        return stringToArrayLike(input, new Array(input.length));
+    },
+    "arraybuffer": function(input) {
+        return transform["string"]["uint8array"](input).buffer;
+    },
+    "uint8array": function(input) {
+        return stringToArrayLike(input, new Uint8Array(input.length));
+    },
+    "nodebuffer": function(input) {
+        return stringToArrayLike(input, nodeBuffer(input.length));
+    }
+};
+
+// array to ?
+transform["array"] = {
+    "string": arrayLikeToString,
+    "array": identity,
+    "arraybuffer": function(input) {
+        return (new Uint8Array(input)).buffer;
+    },
+    "uint8array": function(input) {
+        return new Uint8Array(input);
+    },
+    "nodebuffer": function(input) {
+        return nodeBuffer(input);
+    }
+};
+
+// arraybuffer to ?
+transform["arraybuffer"] = {
+    "string": function(input) {
+        return arrayLikeToString(new Uint8Array(input));
+    },
+    "array": function(input) {
+        return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));
+    },
+    "arraybuffer": identity,
+    "uint8array": function(input) {
+        return new Uint8Array(input);
+    },
+    "nodebuffer": function(input) {
+        return nodeBuffer(new Uint8Array(input));
+    }
+};
+
+// uint8array to ?
+transform["uint8array"] = {
+    "string": arrayLikeToString,
+    "array": function(input) {
+        return arrayLikeToArrayLike(input, new Array(input.length));
+    },
+    "arraybuffer": function(input) {
+        return input.buffer;
+    },
+    "uint8array": identity,
+    "nodebuffer": function(input) {
+        return nodeBuffer(input);
+    }
+};
+
+// nodebuffer to ?
+transform["nodebuffer"] = {
+    "string": arrayLikeToString,
+    "array": function(input) {
+        return arrayLikeToArrayLike(input, new Array(input.length));
+    },
+    "arraybuffer": function(input) {
+        return transform["nodebuffer"]["uint8array"](input).buffer;
+    },
+    "uint8array": function(input) {
+        return arrayLikeToArrayLike(input, new Uint8Array(input.length));
+    },
+    "nodebuffer": identity
+};
+
+/**
+ * Transform an input into any type.
+ * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.
+ * If no output type is specified, the unmodified input will be returned.
+ * @param {String} outputType the output type.
+ * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.
+ * @throws {Error} an Error if the browser doesn't support the requested output type.
+ */
+exports.transformTo = function(outputType, input) {
+    if (!input) {
+        // undefined, null, etc
+        // an empty string won't harm.
+        input = "";
+    }
+    if (!outputType) {
+        return input;
+    }
+    exports.checkSupport(outputType);
+    var inputType = exports.getTypeOf(input);
+    var result = transform[inputType][outputType](input);
+    return result;
+};
+
+/**
+ * Return the type of the input.
+ * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.
+ * @param {Object} input the input to identify.
+ * @return {String} the (lowercase) type of the input.
+ */
+exports.getTypeOf = function(input) {
+    if (typeof input === "string") {
+        return "string";
+    }
+    if (Object.prototype.toString.call(input) === "[object Array]") {
+        return "array";
+    }
+    if (support.nodebuffer && nodeBuffer.test(input)) {
+        return "nodebuffer";
+    }
+    if (support.uint8array && input instanceof Uint8Array) {
+        return "uint8array";
+    }
+    if (support.arraybuffer && input instanceof ArrayBuffer) {
+        return "arraybuffer";
+    }
+};
+
+/**
+ * Throw an exception if the type is not supported.
+ * @param {String} type the type to check.
+ * @throws {Error} an Error if the browser doesn't support the requested type.
+ */
+exports.checkSupport = function(type) {
+    var supported = support[type.toLowerCase()];
+    if (!supported) {
+        throw new Error(type + " is not supported by this browser");
+    }
+};
+exports.MAX_VALUE_16BITS = 65535;
+exports.MAX_VALUE_32BITS = -1; // well, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" is parsed as -1
+
+/**
+ * Prettify a string read as binary.
+ * @param {string} str the string to prettify.
+ * @return {string} a pretty string.
+ */
+exports.pretty = function(str) {
+    var res = '',
+        code, i;
+    for (i = 0; i < (str || "").length; i++) {
+        code = str.charCodeAt(i);
+        res += '\\x' + (code < 16 ? "0" : "") + code.toString(16).toUpperCase();
+    }
+    return res;
+};
+
+/**
+ * Find a compression registered in JSZip.
+ * @param {string} compressionMethod the method magic to find.
+ * @return {Object|null} the JSZip compression object, null if none found.
+ */
+exports.findCompression = function(compressionMethod) {
+    for (var method in compressions) {
+        if (!compressions.hasOwnProperty(method)) {
+            continue;
+        }
+        if (compressions[method].magic === compressionMethod) {
+            return compressions[method];
+        }
+    }
+    return null;
+};
+/**
+* Cross-window, cross-Node-context regular expression detection
+* @param  {Object}  object Anything
+* @return {Boolean}        true if the object is a regular expression,
+* false otherwise
+*/
+exports.isRegExp = function (object) {
+    return Object.prototype.toString.call(object) === "[object RegExp]";
+};
+
+
+},{"./compressions":3,"./nodeBuffer":11,"./support":17}],22:[function(_dereq_,module,exports){
+'use strict';
+var StringReader = _dereq_('./stringReader');
+var NodeBufferReader = _dereq_('./nodeBufferReader');
+var Uint8ArrayReader = _dereq_('./uint8ArrayReader');
+var utils = _dereq_('./utils');
+var sig = _dereq_('./signature');
+var ZipEntry = _dereq_('./zipEntry');
+var support = _dereq_('./support');
+var jszipProto = _dereq_('./object');
+//  class ZipEntries {{{
+/**
+ * All the entries in the zip file.
+ * @constructor
+ * @param {String|ArrayBuffer|Uint8Array} data the binary stream to load.
+ * @param {Object} loadOptions Options for loading the stream.
+ */
+function ZipEntries(data, loadOptions) {
+    this.files = [];
+    this.loadOptions = loadOptions;
+    if (data) {
+        this.load(data);
+    }
+}
+ZipEntries.prototype = {
+    /**
+     * Check that the reader is on the speficied signature.
+     * @param {string} expectedSignature the expected signature.
+     * @throws {Error} if it is an other signature.
+     */
+    checkSignature: function(expectedSignature) {
+        var signature = this.reader.readString(4);
+        if (signature !== expectedSignature) {
+            throw new Error("Corrupted zip or bug : unexpected signature " + "(" + utils.pretty(signature) + ", expected " + utils.pretty(expectedSignature) + ")");
+        }
+    },
+    /**
+     * Read the end of the central directory.
+     */
+    readBlockEndOfCentral: function() {
+        this.diskNumber = this.reader.readInt(2);
+        this.diskWithCentralDirStart = this.reader.readInt(2);
+        this.centralDirRecordsOnThisDisk = this.reader.readInt(2);
+        this.centralDirRecords = this.reader.readInt(2);
+        this.centralDirSize = this.reader.readInt(4);
+        this.centralDirOffset = this.reader.readInt(4);
+
+        this.zipCommentLength = this.reader.readInt(2);
+        // warning : the encoding depends of the system locale
+        // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.
+        // On a windows machine, this field is encoded with the localized windows code page.
+        this.zipComment = this.reader.readString(this.zipCommentLength);
+        // To get consistent behavior with the generation part, we will assume that
+        // this is utf8 encoded.
+        this.zipComment = jszipProto.utf8decode(this.zipComment);
+    },
+    /**
+     * Read the end of the Zip 64 central directory.
+     * Not merged with the method readEndOfCentral :
+     * The end of central can coexist with its Zip64 brother,
+     * I don't want to read the wrong number of bytes !
+     */
+    readBlockZip64EndOfCentral: function() {
+        this.zip64EndOfCentralSize = this.reader.readInt(8);
+        this.versionMadeBy = this.reader.readString(2);
+        this.versionNeeded = this.reader.readInt(2);
+        this.diskNumber = this.reader.readInt(4);
+        this.diskWithCentralDirStart = this.reader.readInt(4);
+        this.centralDirRecordsOnThisDisk = this.reader.readInt(8);
+        this.centralDirRecords = this.reader.readInt(8);
+        this.centralDirSize = this.reader.readInt(8);
+        this.centralDirOffset = this.reader.readInt(8);
+
+        this.zip64ExtensibleData = {};
+        var extraDataSize = this.zip64EndOfCentralSize - 44,
+            index = 0,
+            extraFieldId,
+            extraFieldLength,
+            extraFieldValue;
+        while (index < extraDataSize) {
+            extraFieldId = this.reader.readInt(2);
+            extraFieldLength = this.reader.readInt(4);
+            extraFieldValue = this.reader.readString(extraFieldLength);
+            this.zip64ExtensibleData[extraFieldId] = {
+                id: extraFieldId,
+                length: extraFieldLength,
+                value: extraFieldValue
+            };
+        }
+    },
+    /**
+     * Read the end of the Zip 64 central directory locator.
+     */
+    readBlockZip64EndOfCentralLocator: function() {
+        this.diskWithZip64CentralDirStart = this.reader.readInt(4);
+        this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);
+        this.disksCount = this.reader.readInt(4);
+        if (this.disksCount > 1) {
+            throw new Error("Multi-volumes zip are not supported");
+        }
+    },
+    /**
+     * Read the local files, based on the offset read in the central part.
+     */
+    readLocalFiles: function() {
+        var i, file;
+        for (i = 0; i < this.files.length; i++) {
+            file = this.files[i];
+            this.reader.setIndex(file.localHeaderOffset);
+            this.checkSignature(sig.LOCAL_FILE_HEADER);
+            file.readLocalPart(this.reader);
+            file.handleUTF8();
+        }
+    },
+    /**
+     * Read the central directory.
+     */
+    readCentralDir: function() {
+        var file;
+
+        this.reader.setIndex(this.centralDirOffset);
+        while (this.reader.readString(4) === sig.CENTRAL_FILE_HEADER) {
+            file = new ZipEntry({
+                zip64: this.zip64
+            }, this.loadOptions);
+            file.readCentralPart(this.reader);
+            this.files.push(file);
+        }
+    },
+    /**
+     * Read the end of central directory.
+     */
+    readEndOfCentral: function() {
+        var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END);
+        if (offset === -1) {
+            throw new Error("Corrupted zip : can't find end of central directory");
+        }
+        this.reader.setIndex(offset);
+        this.checkSignature(sig.CENTRAL_DIRECTORY_END);
+        this.readBlockEndOfCentral();
+
+
+        /* extract from the zip spec :
+            4)  If one of the fields in the end of central directory
+                record is too small to hold required data, the field
+                should be set to -1 (0xFFFF or 0xFFFFFFFF) and the
+                ZIP64 format record should be created.
+            5)  The end of central directory record and the
+                Zip64 end of central directory locator record must
+                reside on the same disk when splitting or spanning
+                an archive.
+         */
+        if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) {
+            this.zip64 = true;
+
+            /*
+            Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from
+            the zip file can fit into a 32bits integer. This cannot be solved : Javascript represents
+            all numbers as 64-bit double precision IEEE 754 floating point numbers.
+            So, we have 53bits for integers and bitwise operations treat everything as 32bits.
+            see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators
+            and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5
+            */
+
+            // should look for a zip64 EOCD locator
+            offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);
+            if (offset === -1) {
+                throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");
+            }
+            this.reader.setIndex(offset);
+            this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);
+            this.readBlockZip64EndOfCentralLocator();
+
+            // now the zip64 EOCD record
+            this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);
+            this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);
+            this.readBlockZip64EndOfCentral();
+        }
+    },
+    prepareReader: function(data) {
+        var type = utils.getTypeOf(data);
+        if (type === "string" && !support.uint8array) {
+            this.reader = new StringReader(data, this.loadOptions.optimizedBinaryString);
+        }
+        else if (type === "nodebuffer") {
+            this.reader = new NodeBufferReader(data);
+        }
+        else {
+            this.reader = new Uint8ArrayReader(utils.transformTo("uint8array", data));
+        }
+    },
+    /**
+     * Read a zip file and create ZipEntries.
+     * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.
+     */
+    load: function(data) {
+        this.prepareReader(data);
+        this.readEndOfCentral();
+        this.readCentralDir();
+        this.readLocalFiles();
+    }
+};
+// }}} end of ZipEntries
+module.exports = ZipEntries;
+
+},{"./nodeBufferReader":12,"./object":13,"./signature":14,"./stringReader":15,"./support":17,"./uint8ArrayReader":18,"./utils":21,"./zipEntry":23}],23:[function(_dereq_,module,exports){
+'use strict';
+var StringReader = _dereq_('./stringReader');
+var utils = _dereq_('./utils');
+var CompressedObject = _dereq_('./compressedObject');
+var jszipProto = _dereq_('./object');
+// class ZipEntry {{{
+/**
+ * An entry in the zip file.
+ * @constructor
+ * @param {Object} options Options of the current file.
+ * @param {Object} loadOptions Options for loading the stream.
+ */
+function ZipEntry(options, loadOptions) {
+    this.options = options;
+    this.loadOptions = loadOptions;
+}
+ZipEntry.prototype = {
+    /**
+     * say if the file is encrypted.
+     * @return {boolean} true if the file is encrypted, false otherwise.
+     */
+    isEncrypted: function() {
+        // bit 1 is set
+        return (this.bitFlag & 0x0001) === 0x0001;
+    },
+    /**
+     * say if the file has utf-8 filename/comment.
+     * @return {boolean} true if the filename/comment is in utf-8, false otherwise.
+     */
+    useUTF8: function() {
+        // bit 11 is set
+        return (this.bitFlag & 0x0800) === 0x0800;
+    },
+    /**
+     * Prepare the function used to generate the compressed content from this ZipFile.
+     * @param {DataReader} reader the reader to use.
+     * @param {number} from the offset from where we should read the data.
+     * @param {number} length the length of the data to read.
+     * @return {Function} the callback to get the compressed content (the type depends of the DataReader class).
+     */
+    prepareCompressedContent: function(reader, from, length) {
+        return function() {
+            var previousIndex = reader.index;
+            reader.setIndex(from);
+            var compressedFileData = reader.readData(length);
+            reader.setIndex(previousIndex);
+
+            return compressedFileData;
+        };
+    },
+    /**
+     * Prepare the function used to generate the uncompressed content from this ZipFile.
+     * @param {DataReader} reader the reader to use.
+     * @param {number} from the offset from where we should read the data.
+     * @param {number} length the length of the data to read.
+     * @param {JSZip.compression} compression the compression used on this file.
+     * @param {number} uncompressedSize the uncompressed size to expect.
+     * @return {Function} the callback to get the uncompressed content (the type depends of the DataReader class).
+     */
+    prepareContent: function(reader, from, length, compression, uncompressedSize) {
+        return function() {
+
+            var compressedFileData = utils.transformTo(compression.uncompressInputType, this.getCompressedContent());
+            var uncompressedFileData = compression.uncompress(compressedFileData);
+
+            if (uncompressedFileData.length !== uncompressedSize) {
+                throw new Error("Bug : uncompressed data size mismatch");
+            }
+
+            return uncompressedFileData;
+        };
+    },
+    /**
+     * Read the local part of a zip file and add the info in this object.
+     * @param {DataReader} reader the reader to use.
+     */
+    readLocalPart: function(reader) {
+        var compression, localExtraFieldsLength;
+
+        // we already know everything from the central dir !
+        // If the central dir data are false, we are doomed.
+        // On the bright side, the local part is scary  : zip64, data descriptors, both, etc.
+        // The less data we get here, the more reliable this should be.
+        // Let's skip the whole header and dash to the data !
+        reader.skip(22);
+        // in some zip created on windows, the filename stored in the central dir contains \ instead of /.
+        // Strangely, the filename here is OK.
+        // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes
+        // or APPNOTE#4.4.17.1, "All slashes MUST be forward slashes '/'") but there are a lot of bad zip generators...
+        // Search "unzip mismatching "local" filename continuing with "central" filename version" on
+        // the internet.
+        //
+        // I think I see the logic here : the central directory is used to display
+        // content and the local directory is used to extract the files. Mixing / and \
+        // may be used to display \ to windows users and use / when extracting the files.
+        // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394
+        this.fileNameLength = reader.readInt(2);
+        localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir
+        this.fileName = reader.readString(this.fileNameLength);
+        reader.skip(localExtraFieldsLength);
+
+        if (this.compressedSize == -1 || this.uncompressedSize == -1) {
+            throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory " + "(compressedSize == -1 || uncompressedSize == -1)");
+        }
+
+        compression = utils.findCompression(this.compressionMethod);
+        if (compression === null) { // no compression found
+            throw new Error("Corrupted zip : compression " + utils.pretty(this.compressionMethod) + " unknown (inner file : " + this.fileName + ")");
+        }
+        this.decompressed = new CompressedObject();
+        this.decompressed.compressedSize = this.compressedSize;
+        this.decompressed.uncompressedSize = this.uncompressedSize;
+        this.decompressed.crc32 = this.crc32;
+        this.decompressed.compressionMethod = this.compressionMethod;
+        this.decompressed.getCompressedContent = this.prepareCompressedContent(reader, reader.index, this.compressedSize, compression);
+        this.decompressed.getContent = this.prepareContent(reader, reader.index, this.compressedSize, compression, this.uncompressedSize);
+
+        // we need to compute the crc32...
+        if (this.loadOptions.checkCRC32) {
+            this.decompressed = utils.transformTo("string", this.decompressed.getContent());
+            if (jszipProto.crc32(this.decompressed) !== this.crc32) {
+                throw new Error("Corrupted zip : CRC32 mismatch");
+            }
+        }
+    },
+
+    /**
+     * Read the central part of a zip file and add the info in this object.
+     * @param {DataReader} reader the reader to use.
+     */
+    readCentralPart: function(reader) {
+        this.versionMadeBy = reader.readString(2);
+        this.versionNeeded = reader.readInt(2);
+        this.bitFlag = reader.readInt(2);
+        this.compressionMethod = reader.readString(2);
+        this.date = reader.readDate();
+        this.crc32 = reader.readInt(4);
+        this.compressedSize = reader.readInt(4);
+        this.uncompressedSize = reader.readInt(4);
+        this.fileNameLength = reader.readInt(2);
+        this.extraFieldsLength = reader.readInt(2);
+        this.fileCommentLength = reader.readInt(2);
+        this.diskNumberStart = reader.readInt(2);
+        this.internalFileAttributes = reader.readInt(2);
+        this.externalFileAttributes = reader.readInt(4);
+        this.localHeaderOffset = reader.readInt(4);
+
+        if (this.isEncrypted()) {
+            throw new Error("Encrypted zip are not supported");
+        }
+
+        this.fileName = reader.readString(this.fileNameLength);
+        this.readExtraFields(reader);
+        this.parseZIP64ExtraField(reader);
+        this.fileComment = reader.readString(this.fileCommentLength);
+
+        // warning, this is true only for zip with madeBy == DOS (plateform dependent feature)
+        this.dir = this.externalFileAttributes & 0x00000010 ? true : false;
+    },
+    /**
+     * Parse the ZIP64 extra field and merge the info in the current ZipEntry.
+     * @param {DataReader} reader the reader to use.
+     */
+    parseZIP64ExtraField: function(reader) {
+
+        if (!this.extraFields[0x0001]) {
+            return;
+        }
+
+        // should be something, preparing the extra reader
+        var extraReader = new StringReader(this.extraFields[0x0001].value);
+
+        // I really hope that these 64bits integer can fit in 32 bits integer, because js
+        // won't let us have more.
+        if (this.uncompressedSize === utils.MAX_VALUE_32BITS) {
+            this.uncompressedSize = extraReader.readInt(8);
+        }
+        if (this.compressedSize === utils.MAX_VALUE_32BITS) {
+            this.compressedSize = extraReader.readInt(8);
+        }
+        if (this.localHeaderOffset === utils.MAX_VALUE_32BITS) {
+            this.localHeaderOffset = extraReader.readInt(8);
+        }
+        if (this.diskNumberStart === utils.MAX_VALUE_32BITS) {
+            this.diskNumberStart = extraReader.readInt(4);
+        }
+    },
+    /**
+     * Read the central part of a zip file and add the info in this object.
+     * @param {DataReader} reader the reader to use.
+     */
+    readExtraFields: function(reader) {
+        var start = reader.index,
+            extraFieldId,
+            extraFieldLength,
+            extraFieldValue;
+
+        this.extraFields = this.extraFields || {};
+
+        while (reader.index < start + this.extraFieldsLength) {
+            extraFieldId = reader.readInt(2);
+            extraFieldLength = reader.readInt(2);
+            extraFieldValue = reader.readString(extraFieldLength);
+
+            this.extraFields[extraFieldId] = {
+                id: extraFieldId,
+                length: extraFieldLength,
+                value: extraFieldValue
+            };
+        }
+    },
+    /**
+     * Apply an UTF8 transformation if needed.
+     */
+    handleUTF8: function() {
+        if (this.useUTF8()) {
+            this.fileName = jszipProto.utf8decode(this.fileName);
+            this.fileComment = jszipProto.utf8decode(this.fileComment);
+        } else {
+            var upath = this.findExtraFieldUnicodePath();
+            if (upath !== null) {
+                this.fileName = upath;
+            }
+            var ucomment = this.findExtraFieldUnicodeComment();
+            if (ucomment !== null) {
+                this.fileComment = ucomment;
+            }
+        }
+    },
+
+    /**
+     * Find the unicode path declared in the extra field, if any.
+     * @return {String} the unicode path, null otherwise.
+     */
+    findExtraFieldUnicodePath: function() {
+        var upathField = this.extraFields[0x7075];
+        if (upathField) {
+            var extraReader = new StringReader(upathField.value);
+
+            // wrong version
+            if (extraReader.readInt(1) !== 1) {
+                return null;
+            }
+
+            // the crc of the filename changed, this field is out of date.
+            if (jszipProto.crc32(this.fileName) !== extraReader.readInt(4)) {
+                return null;
+            }
+
+            return jszipProto.utf8decode(extraReader.readString(upathField.length - 5));
+        }
+        return null;
+    },
+
+    /**
+     * Find the unicode comment declared in the extra field, if any.
+     * @return {String} the unicode comment, null otherwise.
+     */
+    findExtraFieldUnicodeComment: function() {
+        var ucommentField = this.extraFields[0x6375];
+        if (ucommentField) {
+            var extraReader = new StringReader(ucommentField.value);
+
+            // wrong version
+            if (extraReader.readInt(1) !== 1) {
+                return null;
+            }
+
+            // the crc of the comment changed, this field is out of date.
+            if (jszipProto.crc32(this.fileComment) !== extraReader.readInt(4)) {
+                return null;
+            }
+
+            return jszipProto.utf8decode(extraReader.readString(ucommentField.length - 5));
+        }
+        return null;
+    }
+};
+module.exports = ZipEntry;
+
+},{"./compressedObject":2,"./object":13,"./stringReader":15,"./utils":21}],24:[function(_dereq_,module,exports){
+// Top level file is just a mixin of submodules & constants
+'use strict';
+
+var assign    = _dereq_('./lib/utils/common').assign;
+
+var deflate   = _dereq_('./lib/deflate');
+var inflate   = _dereq_('./lib/inflate');
+var constants = _dereq_('./lib/zlib/constants');
+
+var pako = {};
+
+assign(pako, deflate, inflate, constants);
+
+module.exports = pako;
+},{"./lib/deflate":25,"./lib/inflate":26,"./lib/utils/common":27,"./lib/zlib/constants":30}],25:[function(_dereq_,module,exports){
+'use strict';
+
+
+var zlib_deflate = _dereq_('./zlib/deflate.js');
+var utils = _dereq_('./utils/common');
+var strings = _dereq_('./utils/strings');
+var msg = _dereq_('./zlib/messages');
+var zstream = _dereq_('./zlib/zstream');
+
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+var Z_NO_FLUSH      = 0;
+var Z_FINISH        = 4;
+
+var Z_OK            = 0;
+var Z_STREAM_END    = 1;
+
+var Z_DEFAULT_COMPRESSION = -1;
+
+var Z_DEFAULT_STRATEGY    = 0;
+
+var Z_DEFLATED  = 8;
+
+/* ===========================================================================*/
+
+
+/**
+ * class Deflate
+ *
+ * Generic JS-style wrapper for zlib calls. If you don't need
+ * streaming behaviour - use more simple functions: [[deflate]],
+ * [[deflateRaw]] and [[gzip]].
+ **/
+
+/* internal
+ * Deflate.chunks -> Array
+ *
+ * Chunks of output data, if [[Deflate#onData]] not overriden.
+ **/
+
+/**
+ * Deflate.result -> Uint8Array|Array
+ *
+ * Compressed result, generated by default [[Deflate#onData]]
+ * and [[Deflate#onEnd]] handlers. Filled after you push last chunk
+ * (call [[Deflate#push]] with `Z_FINISH` / `true` param).
+ **/
+
+/**
+ * Deflate.err -> Number
+ *
+ * Error code after deflate finished. 0 (Z_OK) on success.
+ * You will not need it in real life, because deflate errors
+ * are possible only on wrong options or bad `onData` / `onEnd`
+ * custom handlers.
+ **/
+
+/**
+ * Deflate.msg -> String
+ *
+ * Error message, if [[Deflate.err]] != 0
+ **/
+
+
+/**
+ * new Deflate(options)
+ * - options (Object): zlib deflate options.
+ *
+ * Creates new deflator instance with specified params. Throws exception
+ * on bad params. Supported options:
+ *
+ * - `level`
+ * - `windowBits`
+ * - `memLevel`
+ * - `strategy`
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information on these.
+ *
+ * Additional options, for internal needs:
+ *
+ * - `chunkSize` - size of generated data chunks (16K by default)
+ * - `raw` (Boolean) - do raw deflate
+ * - `gzip` (Boolean) - create gzip wrapper
+ * - `to` (String) - if equal to 'string', then result will be "binary string"
+ *    (each char code [0..255])
+ * - `header` (Object) - custom header for gzip
+ *   - `text` (Boolean) - true if compressed data believed to be text
+ *   - `time` (Number) - modification time, unix timestamp
+ *   - `os` (Number) - operation system code
+ *   - `extra` (Array) - array of bytes with extra data (max 65536)
+ *   - `name` (String) - file name (binary string)
+ *   - `comment` (String) - comment (binary string)
+ *   - `hcrc` (Boolean) - true if header crc should be added
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
+ *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
+ *
+ * var deflate = new pako.Deflate({ level: 3});
+ *
+ * deflate.push(chunk1, false);
+ * deflate.push(chunk2, true);  // true -> last chunk
+ *
+ * if (deflate.err) { throw new Error(deflate.err); }
+ *
+ * console.log(deflate.result);
+ * ```
+ **/
+var Deflate = function(options) {
+
+  this.options = utils.assign({
+    level: Z_DEFAULT_COMPRESSION,
+    method: Z_DEFLATED,
+    chunkSize: 16384,
+    windowBits: 15,
+    memLevel: 8,
+    strategy: Z_DEFAULT_STRATEGY,
+    to: ''
+  }, options || {});
+
+  var opt = this.options;
+
+  if (opt.raw && (opt.windowBits > 0)) {
+    opt.windowBits = -opt.windowBits;
+  }
+
+  else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {
+    opt.windowBits += 16;
+  }
+
+  this.err    = 0;      // error code, if happens (0 = Z_OK)
+  this.msg    = '';     // error message
+  this.ended  = false;  // used to avoid multiple onEnd() calls
+  this.chunks = [];     // chunks of compressed data
+
+  this.strm = new zstream();
+  this.strm.avail_out = 0;
+
+  var status = zlib_deflate.deflateInit2(
+    this.strm,
+    opt.level,
+    opt.method,
+    opt.windowBits,
+    opt.memLevel,
+    opt.strategy
+  );
+
+  if (status !== Z_OK) {
+    throw new Error(msg[status]);
+  }
+
+  if (opt.header) {
+    zlib_deflate.deflateSetHeader(this.strm, opt.header);
+  }
+};
+
+/**
+ * Deflate#push(data[, mode]) -> Boolean
+ * - data (Uint8Array|Array|String): input data. Strings will be converted to
+ *   utf8 byte sequence.
+ * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
+ *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.
+ *
+ * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with
+ * new compressed chunks. Returns `true` on success. The last data block must have
+ * mode Z_FINISH (or `true`). That flush internal pending buffers and call
+ * [[Deflate#onEnd]].
+ *
+ * On fail call [[Deflate#onEnd]] with error code and return false.
+ *
+ * We strongly recommend to use `Uint8Array` on input for best speed (output
+ * array format is detected automatically). Also, don't skip last param and always
+ * use the same type in your code (boolean or number). That will improve JS speed.
+ *
+ * For regular `Array`-s make sure all elements are [0..255].
+ *
+ * ##### Example
+ *
+ * ```javascript
+ * push(chunk, false); // push one of data chunks
+ * ...
+ * push(chunk, true);  // push last chunk
+ * ```
+ **/
+Deflate.prototype.push = function(data, mode) {
+  var strm = this.strm;
+  var chunkSize = this.options.chunkSize;
+  var status, _mode;
+
+  if (this.ended) { return false; }
+
+  _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);
+
+  // Convert data if needed
+  if (typeof data === 'string') {
+    // If we need to compress text, change encoding to utf8.
+    strm.input = strings.string2buf(data);
+  } else {
+    strm.input = data;
+  }
+
+  strm.next_in = 0;
+  strm.avail_in = strm.input.length;
+
+  do {
+    if (strm.avail_out === 0) {
+      strm.output = new utils.Buf8(chunkSize);
+      strm.next_out = 0;
+      strm.avail_out = chunkSize;
+    }
+    status = zlib_deflate.deflate(strm, _mode);    /* no bad return value */
+
+    if (status !== Z_STREAM_END && status !== Z_OK) {
+      this.onEnd(status);
+      this.ended = true;
+      return false;
+    }
+    if (strm.avail_out === 0 || (strm.avail_in === 0 && _mode === Z_FINISH)) {
+      if (this.options.to === 'string') {
+        this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));
+      } else {
+        this.onData(utils.shrinkBuf(strm.output, strm.next_out));
+      }
+    }
+  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);
+
+  // Finalize on the last chunk.
+  if (_mode === Z_FINISH) {
+    status = zlib_deflate.deflateEnd(this.strm);
+    this.onEnd(status);
+    this.ended = true;
+    return status === Z_OK;
+  }
+
+  return true;
+};
+
+
+/**
+ * Deflate#onData(chunk) -> Void
+ * - chunk (Uint8Array|Array|String): ouput data. Type of array depends
+ *   on js engine support. When string output requested, each chunk
+ *   will be string.
+ *
+ * By default, stores data blocks in `chunks[]` property and glue
+ * those in `onEnd`. Override this handler, if you need another behaviour.
+ **/
+Deflate.prototype.onData = function(chunk) {
+  this.chunks.push(chunk);
+};
+
+
+/**
+ * Deflate#onEnd(status) -> Void
+ * - status (Number): deflate status. 0 (Z_OK) on success,
+ *   other if not.
+ *
+ * Called once after you tell deflate that input stream complete
+ * or error happenned. By default - join collected chunks,
+ * free memory and fill `results` / `err` properties.
+ **/
+Deflate.prototype.onEnd = function(status) {
+  // On success - join
+  if (status === Z_OK) {
+    if (this.options.to === 'string') {
+      this.result = this.chunks.join('');
+    } else {
+      this.result = utils.flattenChunks(this.chunks);
+    }
+  }
+  this.chunks = [];
+  this.err = status;
+  this.msg = this.strm.msg;
+};
+
+
+/**
+ * deflate(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to compress.
+ * - options (Object): zlib deflate options.
+ *
+ * Compress `data` with deflate alrorythm and `options`.
+ *
+ * Supported options are:
+ *
+ * - level
+ * - windowBits
+ * - memLevel
+ * - strategy
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information on these.
+ *
+ * Sugar (options):
+ *
+ * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
+ *   negative windowBits implicitly.
+ * - `to` (String) - if equal to 'string', then result will be "binary string"
+ *    (each char code [0..255])
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ *   , data = Uint8Array([1,2,3,4,5,6,7,8,9]);
+ *
+ * console.log(pako.deflate(data));
+ * ```
+ **/
+function deflate(input, options) {
+  var deflator = new Deflate(options);
+
+  deflator.push(input, true);
+
+  // That will never happens, if you don't cheat with options :)
+  if (deflator.err) { throw deflator.msg; }
+
+  return deflator.result;
+}
+
+
+/**
+ * deflateRaw(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to compress.
+ * - options (Object): zlib deflate options.
+ *
+ * The same as [[deflate]], but creates raw data, without wrapper
+ * (header and adler32 crc).
+ **/
+function deflateRaw(input, options) {
+  options = options || {};
+  options.raw = true;
+  return deflate(input, options);
+}
+
+
+/**
+ * gzip(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to compress.
+ * - options (Object): zlib deflate options.
+ *
+ * The same as [[deflate]], but create gzip wrapper instead of
+ * deflate one.
+ **/
+function gzip(input, options) {
+  options = options || {};
+  options.gzip = true;
+  return deflate(input, options);
+}
+
+
+exports.Deflate = Deflate;
+exports.deflate = deflate;
+exports.deflateRaw = deflateRaw;
+exports.gzip = gzip;
+},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(_dereq_,module,exports){
+'use strict';
+
+
+var zlib_inflate = _dereq_('./zlib/inflate.js');
+var utils = _dereq_('./utils/common');
+var strings = _dereq_('./utils/strings');
+var c = _dereq_('./zlib/constants');
+var msg = _dereq_('./zlib/messages');
+var zstream = _dereq_('./zlib/zstream');
+var gzheader = _dereq_('./zlib/gzheader');
+
+
+/**
+ * class Inflate
+ *
+ * Generic JS-style wrapper for zlib calls. If you don't need
+ * streaming behaviour - use more simple functions: [[inflate]]
+ * and [[inflateRaw]].
+ **/
+
+/* internal
+ * inflate.chunks -> Array
+ *
+ * Chunks of output data, if [[Inflate#onData]] not overriden.
+ **/
+
+/**
+ * Inflate.result -> Uint8Array|Array|String
+ *
+ * Uncompressed result, generated by default [[Inflate#onData]]
+ * and [[Inflate#onEnd]] handlers. Filled after you push last chunk
+ * (call [[Inflate#push]] with `Z_FINISH` / `true` param).
+ **/
+
+/**
+ * Inflate.err -> Number
+ *
+ * Error code after inflate finished. 0 (Z_OK) on success.
+ * Should be checked if broken data possible.
+ **/
+
+/**
+ * Inflate.msg -> String
+ *
+ * Error message, if [[Inflate.err]] != 0
+ **/
+
+
+/**
+ * new Inflate(options)
+ * - options (Object): zlib inflate options.
+ *
+ * Creates new inflator instance with specified params. Throws exception
+ * on bad params. Supported options:
+ *
+ * - `windowBits`
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information on these.
+ *
+ * Additional options, for internal needs:
+ *
+ * - `chunkSize` - size of generated data chunks (16K by default)
+ * - `raw` (Boolean) - do raw inflate
+ * - `to` (String) - if equal to 'string', then result will be converted
+ *   from utf8 to utf16 (javascript) string. When string output requested,
+ *   chunk length can differ from `chunkSize`, depending on content.
+ *
+ * By default, when no options set, autodetect deflate/gzip data format via
+ * wrapper header.
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
+ *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
+ *
+ * var inflate = new pako.Inflate({ level: 3});
+ *
+ * inflate.push(chunk1, false);
+ * inflate.push(chunk2, true);  // true -> last chunk
+ *
+ * if (inflate.err) { throw new Error(inflate.err); }
+ *
+ * console.log(inflate.result);
+ * ```
+ **/
+var Inflate = function(options) {
+
+  this.options = utils.assign({
+    chunkSize: 16384,
+    windowBits: 0,
+    to: ''
+  }, options || {});
+
+  var opt = this.options;
+
+  // Force window size for `raw` data, if not set directly,
+  // because we have no header for autodetect.
+  if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {
+    opt.windowBits = -opt.windowBits;
+    if (opt.windowBits === 0) { opt.windowBits = -15; }
+  }
+
+  // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate
+  if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&
+      !(options && options.windowBits)) {
+    opt.windowBits += 32;
+  }
+
+  // Gzip header has no info about windows size, we can do autodetect only
+  // for deflate. So, if window size not set, force it to max when gzip possible
+  if ((opt.windowBits > 15) && (opt.windowBits < 48)) {
+    // bit 3 (16) -> gzipped data
+    // bit 4 (32) -> autodetect gzip/deflate
+    if ((opt.windowBits & 15) === 0) {
+      opt.windowBits |= 15;
+    }
+  }
+
+  this.err    = 0;      // error code, if happens (0 = Z_OK)
+  this.msg    = '';     // error message
+  this.ended  = false;  // used to avoid multiple onEnd() calls
+  this.chunks = [];     // chunks of compressed data
+
+  this.strm   = new zstream();
+  this.strm.avail_out = 0;
+
+  var status  = zlib_inflate.inflateInit2(
+    this.strm,
+    opt.windowBits
+  );
+
+  if (status !== c.Z_OK) {
+    throw new Error(msg[status]);
+  }
+
+  this.header = new gzheader();
+
+  zlib_inflate.inflateGetHeader(this.strm, this.header);
+};
+
+/**
+ * Inflate#push(data[, mode]) -> Boolean
+ * - data (Uint8Array|Array|String): input data
+ * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
+ *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.
+ *
+ * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with
+ * new output chunks. Returns `true` on success. The last data block must have
+ * mode Z_FINISH (or `true`). That flush internal pending buffers and call
+ * [[Inflate#onEnd]].
+ *
+ * On fail call [[Inflate#onEnd]] with error code and return false.
+ *
+ * We strongly recommend to use `Uint8Array` on input for best speed (output
+ * format is detected automatically). Also, don't skip last param and always
+ * use the same type in your code (boolean or number). That will improve JS speed.
+ *
+ * For regular `Array`-s make sure all elements are [0..255].
+ *
+ * ##### Example
+ *
+ * ```javascript
+ * push(chunk, false); // push one of data chunks
+ * ...
+ * push(chunk, true);  // push last chunk
+ * ```
+ **/
+Inflate.prototype.push = function(data, mode) {
+  var strm = this.strm;
+  var chunkSize = this.options.chunkSize;
+  var status, _mode;
+  var next_out_utf8, tail, utf8str;
+
+  if (this.ended) { return false; }
+  _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);
+
+  // Convert data if needed
+  if (typeof data === 'string') {
+    // Only binary strings can be decompressed on practice
+    strm.input = strings.binstring2buf(data);
+  } else {
+    strm.input = data;
+  }
+
+  strm.next_in = 0;
+  strm.avail_in = strm.input.length;
+
+  do {
+    if (strm.avail_out === 0) {
+      strm.output = new utils.Buf8(chunkSize);
+      strm.next_out = 0;
+      strm.avail_out = chunkSize;
+    }
+
+    status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH);    /* no bad return value */
+
+    if (status !== c.Z_STREAM_END && status !== c.Z_OK) {
+      this.onEnd(status);
+      this.ended = true;
+      return false;
+    }
+
+    if (strm.next_out) {
+      if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && _mode === c.Z_FINISH)) {
+
+        if (this.options.to === 'string') {
+
+          next_out_utf8 = strings.utf8border(strm.output, strm.next_out);
+
+          tail = strm.next_out - next_out_utf8;
+          utf8str = strings.buf2string(strm.output, next_out_utf8);
+
+          // move tail
+          strm.next_out = tail;
+          strm.avail_out = chunkSize - tail;
+          if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }
+
+          this.onData(utf8str);
+
+        } else {
+          this.onData(utils.shrinkBuf(strm.output, strm.next_out));
+        }
+      }
+    }
+  } while ((strm.avail_in > 0) && status !== c.Z_STREAM_END);
+
+  if (status === c.Z_STREAM_END) {
+    _mode = c.Z_FINISH;
+  }
+  // Finalize on the last chunk.
+  if (_mode === c.Z_FINISH) {
+    status = zlib_inflate.inflateEnd(this.strm);
+    this.onEnd(status);
+    this.ended = true;
+    return status === c.Z_OK;
+  }
+
+  return true;
+};
+
+
+/**
+ * Inflate#onData(chunk) -> Void
+ * - chunk (Uint8Array|Array|String): ouput data. Type of array depends
+ *   on js engine support. When string output requested, each chunk
+ *   will be string.
+ *
+ * By default, stores data blocks in `chunks[]` property and glue
+ * those in `onEnd`. Override this handler, if you need another behaviour.
+ **/
+Inflate.prototype.onData = function(chunk) {
+  this.chunks.push(chunk);
+};
+
+
+/**
+ * Inflate#onEnd(status) -> Void
+ * - status (Number): inflate status. 0 (Z_OK) on success,
+ *   other if not.
+ *
+ * Called once after you tell inflate that input stream complete
+ * or error happenned. By default - join collected chunks,
+ * free memory and fill `results` / `err` properties.
+ **/
+Inflate.prototype.onEnd = function(status) {
+  // On success - join
+  if (status === c.Z_OK) {
+    if (this.options.to === 'string') {
+      // Glue & convert here, until we teach pako to send
+      // utf8 alligned strings to onData
+      this.result = this.chunks.join('');
+    } else {
+      this.result = utils.flattenChunks(this.chunks);
+    }
+  }
+  this.chunks = [];
+  this.err = status;
+  this.msg = this.strm.msg;
+};
+
+
+/**
+ * inflate(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to decompress.
+ * - options (Object): zlib inflate options.
+ *
+ * Decompress `data` with inflate/ungzip and `options`. Autodetect
+ * format via wrapper header by default. That's why we don't provide
+ * separate `ungzip` method.
+ *
+ * Supported options are:
+ *
+ * - windowBits
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information.
+ *
+ * Sugar (options):
+ *
+ * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
+ *   negative windowBits implicitly.
+ * - `to` (String) - if equal to 'string', then result will be converted
+ *   from utf8 to utf16 (javascript) string. When string output requested,
+ *   chunk length can differ from `chunkSize`, depending on content.
+ *
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ *   , input = pako.deflate([1,2,3,4,5,6,7,8,9])
+ *   , output;
+ *
+ * try {
+ *   output = pako.inflate(input);
+ * } catch (err)
+ *   console.log(err);
+ * }
+ * ```
+ **/
+function inflate(input, options) {
+  var inflator = new Inflate(options);
+
+  inflator.push(input, true);
+
+  // That will never happens, if you don't cheat with options :)
+  if (inflator.err) { throw inflator.msg; }
+
+  return inflator.result;
+}
+
+
+/**
+ * inflateRaw(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to decompress.
+ * - options (Object): zlib inflate options.
+ *
+ * The same as [[inflate]], but creates raw data, without wrapper
+ * (header and adler32 crc).
+ **/
+function inflateRaw(input, options) {
+  options = options || {};
+  options.raw = true;
+  return inflate(input, options);
+}
+
+
+/**
+ * ungzip(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to decompress.
+ * - options (Object): zlib inflate options.
+ *
+ * Just shortcut to [[inflate]], because it autodetects format
+ * by header.content. Done for convenience.
+ **/
+
+
+exports.Inflate = Inflate;
+exports.inflate = inflate;
+exports.inflateRaw = inflateRaw;
+exports.ungzip  = inflate;
+
+},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(_dereq_,module,exports){
+'use strict';
+
+
+var TYPED_OK =  (typeof Uint8Array !== 'undefined') &&
+                (typeof Uint16Array !== 'undefined') &&
+                (typeof Int32Array !== 'undefined');
+
+
+exports.assign = function (obj /*from1, from2, from3, ...*/) {
+  var sources = Array.prototype.slice.call(arguments, 1);
+  while (sources.length) {
+    var source = sources.shift();
+    if (!source) { continue; }
+
+    if (typeof(source) !== 'object') {
+      throw new TypeError(source + 'must be non-object');
+    }
+
+    for (var p in source) {
+      if (source.hasOwnProperty(p)) {
+        obj[p] = source[p];
+      }
+    }
+  }
+
+  return obj;
+};
+
+
+// reduce buffer size, avoiding mem copy
+exports.shrinkBuf = function (buf, size) {
+  if (buf.length === size) { return buf; }
+  if (buf.subarray) { return buf.subarray(0, size); }
+  buf.length = size;
+  return buf;
+};
+
+
+var fnTyped = {
+  arraySet: function (dest, src, src_offs, len, dest_offs) {
+    if (src.subarray && dest.subarray) {
+      dest.set(src.subarray(src_offs, src_offs+len), dest_offs);
+      return;
+    }
+    // Fallback to ordinary array
+    for(var i=0; i<len; i++) {
+      dest[dest_offs + i] = src[src_offs + i];
+    }
+  },
+  // Join array of chunks to single array.
+  flattenChunks: function(chunks) {
+    var i, l, len, pos, chunk, result;
+
+    // calculate data length
+    len = 0;
+    for (i=0, l=chunks.length; i<l; i++) {
+      len += chunks[i].length;
+    }
+
+    // join chunks
+    result = new Uint8Array(len);
+    pos = 0;
+    for (i=0, l=chunks.length; i<l; i++) {
+      chunk = chunks[i];
+      result.set(chunk, pos);
+      pos += chunk.length;
+    }
+
+    return result;
+  }
+};
+
+var fnUntyped = {
+  arraySet: function (dest, src, src_offs, len, dest_offs) {
+    for(var i=0; i<len; i++) {
+      dest[dest_offs + i] = src[src_offs + i];
+    }
+  },
+  // Join array of chunks to single array.
+  flattenChunks: function(chunks) {
+    return [].concat.apply([], chunks);
+  }
+};
+
+
+// Enable/Disable typed arrays use, for testing
+//
+exports.setTyped = function (on) {
+  if (on) {
+    exports.Buf8  = Uint8Array;
+    exports.Buf16 = Uint16Array;
+    exports.Buf32 = Int32Array;
+    exports.assign(exports, fnTyped);
+  } else {
+    exports.Buf8  = Array;
+    exports.Buf16 = Array;
+    exports.Buf32 = Array;
+    exports.assign(exports, fnUntyped);
+  }
+};
+
+exports.setTyped(TYPED_OK);
+},{}],28:[function(_dereq_,module,exports){
+// String encode/decode helpers
+'use strict';
+
+
+var utils = _dereq_('./common');
+
+
+// Quick check if we can use fast array to bin string conversion
+//
+// - apply(Array) can fail on Android 2.2
+// - apply(Uint8Array) can fail on iOS 5.1 Safary
+//
+var STR_APPLY_OK = true;
+var STR_APPLY_UIA_OK = true;
+
+try { String.fromCharCode.apply(null, [0]); } catch(__) { STR_APPLY_OK = false; }
+try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch(__) { STR_APPLY_UIA_OK = false; }
+
+
+// Table with utf8 lengths (calculated by first byte of sequence)
+// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
+// because max possible codepoint is 0x10ffff
+var _utf8len = new utils.Buf8(256);
+for (var i=0; i<256; i++) {
+  _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);
+}
+_utf8len[254]=_utf8len[254]=1; // Invalid sequence start
+
+
+// convert string to array (typed, when possible)
+exports.string2buf = function (str) {
+  var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
+
+  // count binary size
+  for (m_pos = 0; m_pos < str_len; m_pos++) {
+    c = str.charCodeAt(m_pos);
+    if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+      c2 = str.charCodeAt(m_pos+1);
+      if ((c2 & 0xfc00) === 0xdc00) {
+        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+        m_pos++;
+      }
+    }
+    buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
+  }
+
+  // allocate buffer
+  buf = new utils.Buf8(buf_len);
+
+  // convert
+  for (i=0, m_pos = 0; i < buf_len; m_pos++) {
+    c = str.charCodeAt(m_pos);
+    if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+      c2 = str.charCodeAt(m_pos+1);
+      if ((c2 & 0xfc00) === 0xdc00) {
+        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+        m_pos++;
+      }
+    }
+    if (c < 0x80) {
+      /* one byte */
+      buf[i++] = c;
+    } else if (c < 0x800) {
+      /* two bytes */
+      buf[i++] = 0xC0 | (c >>> 6);
+      buf[i++] = 0x80 | (c & 0x3f);
+    } else if (c < 0x10000) {
+      /* three bytes */
+      buf[i++] = 0xE0 | (c >>> 12);
+      buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+      buf[i++] = 0x80 | (c & 0x3f);
+    } else {
+      /* four bytes */
+      buf[i++] = 0xf0 | (c >>> 18);
+      buf[i++] = 0x80 | (c >>> 12 & 0x3f);
+      buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+      buf[i++] = 0x80 | (c & 0x3f);
+    }
+  }
+
+  return buf;
+};
+
+// Helper (used in 2 places)
+function buf2binstring(buf, len) {
+  // use fallback for big arrays to avoid stack overflow
+  if (len < 65537) {
+    if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {
+      return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));
+    }
+  }
+
+  var result = '';
+  for(var i=0; i < len; i++) {
+    result += String.fromCharCode(buf[i]);
+  }
+  return result;
+}
+
+
+// Convert byte array to binary string
+exports.buf2binstring = function(buf) {
+  return buf2binstring(buf, buf.length);
+};
+
+
+// Convert binary string (typed, when possible)
+exports.binstring2buf = function(str) {
+  var buf = new utils.Buf8(str.length);
+  for(var i=0, len=buf.length; i < len; i++) {
+    buf[i] = str.charCodeAt(i);
+  }
+  return buf;
+};
+
+
+// convert array to string
+exports.buf2string = function (buf, max) {
+  var i, out, c, c_len;
+  var len = max || buf.length;
+
+  // Reserve max possible length (2 words per char)
+  // NB: by unknown reasons, Array is significantly faster for
+  //     String.fromCharCode.apply than Uint16Array.
+  var utf16buf = new Array(len*2);
+
+  for (out=0, i=0; i<len;) {
+    c = buf[i++];
+    // quick process ascii
+    if (c < 0x80) { utf16buf[out++] = c; continue; }
+
+    c_len = _utf8len[c];
+    // skip 5 & 6 byte codes
+    if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }
+
+    // apply mask on first byte
+    c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
+    // join the rest
+    while (c_len > 1 && i < len) {
+      c = (c << 6) | (buf[i++] & 0x3f);
+      c_len--;
+    }
+
+    // terminated by end of string?
+    if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }
+
+    if (c < 0x10000) {
+      utf16buf[out++] = c;
+    } else {
+      c -= 0x10000;
+      utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
+      utf16buf[out++] = 0xdc00 | (c & 0x3ff);
+    }
+  }
+
+  return buf2binstring(utf16buf, out);
+};
+
+
+// Calculate max possible position in utf8 buffer,
+// that will not break sequence. If that's not possible
+// - (very small limits) return max size as is.
+//
+// buf[] - utf8 bytes array
+// max   - length limit (mandatory);
+exports.utf8border = function(buf, max) {
+  var pos;
+
+  max = max || buf.length;
+  if (max > buf.length) { max = buf.length; }
+
+  // go back from last position, until start of sequence found
+  pos = max-1;
+  while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }
+
+  // Fuckup - very small and broken sequence,
+  // return max, because we should return something anyway.
+  if (pos < 0) { return max; }
+
+  // If we came to start of buffer - that means vuffer is too small,
+  // return max too.
+  if (pos === 0) { return max; }
+
+  return (pos + _utf8len[buf[pos]] > max) ? pos : max;
+};
+
+},{"./common":27}],29:[function(_dereq_,module,exports){
+'use strict';
+
+// Note: adler32 takes 12% for level 0 and 2% for level 6.
+// It doesn't worth to make additional optimizationa as in original.
+// Small size is preferable.
+
+function adler32(adler, buf, len, pos) {
+  var s1 = (adler & 0xffff) |0
+    , s2 = ((adler >>> 16) & 0xffff) |0
+    , n = 0;
+
+  while (len !== 0) {
+    // Set limit ~ twice less than 5552, to keep
+    // s2 in 31-bits, because we force signed ints.
+    // in other case %= will fail.
+    n = len > 2000 ? 2000 : len;
+    len -= n;
+
+    do {
+      s1 = (s1 + buf[pos++]) |0;
+      s2 = (s2 + s1) |0;
+    } while (--n);
+
+    s1 %= 65521;
+    s2 %= 65521;
+  }
+
+  return (s1 | (s2 << 16)) |0;
+}
+
+
+module.exports = adler32;
+},{}],30:[function(_dereq_,module,exports){
+module.exports = {
+
+  /* Allowed flush values; see deflate() and inflate() below for details */
+  Z_NO_FLUSH:         0,
+  Z_PARTIAL_FLUSH:    1,
+  Z_SYNC_FLUSH:       2,
+  Z_FULL_FLUSH:       3,
+  Z_FINISH:           4,
+  Z_BLOCK:            5,
+  Z_TREES:            6,
+
+  /* Return codes for the compression/decompression functions. Negative values
+  * are errors, positive values are used for special but normal events.
+  */
+  Z_OK:               0,
+  Z_STREAM_END:       1,
+  Z_NEED_DICT:        2,
+  Z_ERRNO:           -1,
+  Z_STREAM_ERROR:    -2,
+  Z_DATA_ERROR:      -3,
+  //Z_MEM_ERROR:     -4,
+  Z_BUF_ERROR:       -5,
+  //Z_VERSION_ERROR: -6,
+
+  /* compression levels */
+  Z_NO_COMPRESSION:         0,
+  Z_BEST_SPEED:             1,
+  Z_BEST_COMPRESSION:       9,
+  Z_DEFAULT_COMPRESSION:   -1,
+
+
+  Z_FILTERED:               1,
+  Z_HUFFMAN_ONLY:           2,
+  Z_RLE:                    3,
+  Z_FIXED:                  4,
+  Z_DEFAULT_STRATEGY:       0,
+
+  /* Possible values of the data_type field (though see inflate()) */
+  Z_BINARY:                 0,
+  Z_TEXT:                   1,
+  //Z_ASCII:                1, // = Z_TEXT (deprecated)
+  Z_UNKNOWN:                2,
+
+  /* The deflate compression method */
+  Z_DEFLATED:               8
+  //Z_NULL:                 null // Use -1 or null inline, depending on var type
+};
+},{}],31:[function(_dereq_,module,exports){
+'use strict';
+
+// Note: we can't get significant speed boost here.
+// So write code to minimize size - no pregenerated tables
+// and array tools dependencies.
+
+
+// Use ordinary array, since untyped makes no boost here
+function makeTable() {
+  var c, table = [];
+
+  for(var n =0; n < 256; n++){
+    c = n;
+    for(var k =0; k < 8; k++){
+      c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
+    }
+    table[n] = c;
+  }
+
+  return table;
+}
+
+// Create table on load. Just 255 signed longs. Not a problem.
+var crcTable = makeTable();
+
+
+function crc32(crc, buf, len, pos) {
+  var t = crcTable
+    , end = pos + len;
+
+  crc = crc ^ (-1);
+
+  for (var i = pos; i < end; i++ ) {
+    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
+  }
+
+  return (crc ^ (-1)); // >>> 0;
+}
+
+
+module.exports = crc32;
+},{}],32:[function(_dereq_,module,exports){
+'use strict';
+
+var utils   = _dereq_('../utils/common');
+var trees   = _dereq_('./trees');
+var adler32 = _dereq_('./adler32');
+var crc32   = _dereq_('./crc32');
+var msg   = _dereq_('./messages');
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+/* Allowed flush values; see deflate() and inflate() below for details */
+var Z_NO_FLUSH      = 0;
+var Z_PARTIAL_FLUSH = 1;
+//var Z_SYNC_FLUSH    = 2;
+var Z_FULL_FLUSH    = 3;
+var Z_FINISH        = 4;
+var Z_BLOCK         = 5;
+//var Z_TREES         = 6;
+
+
+/* Return codes for the compression/decompression functions. Negative values
+ * are errors, positive values are used for special but normal events.
+ */
+var Z_OK            = 0;
+var Z_STREAM_END    = 1;
+//var Z_NEED_DICT     = 2;
+//var Z_ERRNO         = -1;
+var Z_STREAM_ERROR  = -2;
+var Z_DATA_ERROR    = -3;
+//var Z_MEM_ERROR     = -4;
+var Z_BUF_ERROR     = -5;
+//var Z_VERSION_ERROR = -6;
+
+
+/* compression levels */
+//var Z_NO_COMPRESSION      = 0;
+//var Z_BEST_SPEED          = 1;
+//var Z_BEST_COMPRESSION    = 9;
+var Z_DEFAULT_COMPRESSION = -1;
+
+
+var Z_FILTERED            = 1;
+var Z_HUFFMAN_ONLY        = 2;
+var Z_RLE                 = 3;
+var Z_FIXED               = 4;
+var Z_DEFAULT_STRATEGY    = 0;
+
+/* Possible values of the data_type field (though see inflate()) */
+//var Z_BINARY              = 0;
+//var Z_TEXT                = 1;
+//var Z_ASCII               = 1; // = Z_TEXT
+var Z_UNKNOWN             = 2;
+
+
+/* The deflate compression method */
+var Z_DEFLATED  = 8;
+
+/*============================================================================*/
+
+
+var MAX_MEM_LEVEL = 9;
+/* Maximum value for memLevel in deflateInit2 */
+var MAX_WBITS = 15;
+/* 32K LZ77 window */
+var DEF_MEM_LEVEL = 8;
+
+
+var LENGTH_CODES  = 29;
+/* number of length codes, not counting the special END_BLOCK code */
+var LITERALS      = 256;
+/* number of literal bytes 0..255 */
+var L_CODES       = LITERALS + 1 + LENGTH_CODES;
+/* number of Literal or Length codes, including the END_BLOCK code */
+var D_CODES       = 30;
+/* number of distance codes */
+var BL_CODES      = 19;
+/* number of codes used to transfer the bit lengths */
+var HEAP_SIZE     = 2*L_CODES + 1;
+/* maximum heap size */
+var MAX_BITS  = 15;
+/* All codes must not exceed MAX_BITS bits */
+
+var MIN_MATCH = 3;
+var MAX_MATCH = 258;
+var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);
+
+var PRESET_DICT = 0x20;
+
+var INIT_STATE = 42;
+var EXTRA_STATE = 69;
+var NAME_STATE = 73;
+var COMMENT_STATE = 91;
+var HCRC_STATE = 103;
+var BUSY_STATE = 113;
+var FINISH_STATE = 666;
+
+var BS_NEED_MORE      = 1; /* block not completed, need more input or more output */
+var BS_BLOCK_DONE     = 2; /* block flush performed */
+var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */
+var BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */
+
+var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.
+
+function err(strm, errorCode) {
+  strm.msg = msg[errorCode];
+  return errorCode;
+}
+
+function rank(f) {
+  return ((f) << 1) - ((f) > 4 ? 9 : 0);
+}
+
+function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
+
+
+/* =========================================================================
+ * Flush as much pending output as possible. All deflate() output goes
+ * through this function so some applications may wish to modify it
+ * to avoid allocating a large strm->output buffer and copying into it.
+ * (See also read_buf()).
+ */
+function flush_pending(strm) {
+  var s = strm.state;
+
+  //_tr_flush_bits(s);
+  var len = s.pending;
+  if (len > strm.avail_out) {
+    len = strm.avail_out;
+  }
+  if (len === 0) { return; }
+
+  utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);
+  strm.next_out += len;
+  s.pending_out += len;
+  strm.total_out += len;
+  strm.avail_out -= len;
+  s.pending -= len;
+  if (s.pending === 0) {
+    s.pending_out = 0;
+  }
+}
+
+
+function flush_block_only (s, last) {
+  trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);
+  s.block_start = s.strstart;
+  flush_pending(s.strm);
+}
+
+
+function put_byte(s, b) {
+  s.pending_buf[s.pending++] = b;
+}
+
+
+/* =========================================================================
+ * Put a short in the pending buffer. The 16-bit value is put in MSB order.
+ * IN assertion: the stream state is correct and there is enough room in
+ * pending_buf.
+ */
+function putShortMSB(s, b) {
+//  put_byte(s, (Byte)(b >> 8));
+//  put_byte(s, (Byte)(b & 0xff));
+  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;
+  s.pending_buf[s.pending++] = b & 0xff;
+}
+
+
+/* ===========================================================================
+ * Read a new buffer from the current input stream, update the adler32
+ * and total number of bytes read.  All deflate() input goes through
+ * this function so some applications may wish to modify it to avoid
+ * allocating a large strm->input buffer and copying from it.
+ * (See also flush_pending()).
+ */
+function read_buf(strm, buf, start, size) {
+  var len = strm.avail_in;
+
+  if (len > size) { len = size; }
+  if (len === 0) { return 0; }
+
+  strm.avail_in -= len;
+
+  utils.arraySet(buf, strm.input, strm.next_in, len, start);
+  if (strm.state.wrap === 1) {
+    strm.adler = adler32(strm.adler, buf, len, start);
+  }
+
+  else if (strm.state.wrap === 2) {
+    strm.adler = crc32(strm.adler, buf, len, start);
+  }
+
+  strm.next_in += len;
+  strm.total_in += len;
+
+  return len;
+}
+
+
+/* ===========================================================================
+ * Set match_start to the longest match starting at the given string and
+ * return its length. Matches shorter or equal to prev_length are discarded,
+ * in which case the result is equal to prev_length and match_start is
+ * garbage.
+ * IN assertions: cur_match is the head of the hash chain for the current
+ *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
+ * OUT assertion: the match length is not greater than s->lookahead.
+ */
+function longest_match(s, cur_match) {
+  var chain_length = s.max_chain_length;      /* max hash chain length */
+  var scan = s.strstart; /* current string */
+  var match;                       /* matched string */
+  var len;                           /* length of current match */
+  var best_len = s.prev_length;              /* best match length so far */
+  var nice_match = s.nice_match;             /* stop if match long enough */
+  var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?
+      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;
+
+  var _win = s.window; // shortcut
+
+  var wmask = s.w_mask;
+  var prev  = s.prev;
+
+  /* Stop when cur_match becomes <= limit. To simplify the code,
+   * we prevent matches with the string of window index 0.
+   */
+
+  var strend = s.strstart + MAX_MATCH;
+  var scan_end1  = _win[scan + best_len - 1];
+  var scan_end   = _win[scan + best_len];
+
+  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
+   * It is easy to get rid of this optimization if necessary.
+   */
+  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
+
+  /* Do not waste too much time if we already have a good match: */
+  if (s.prev_length >= s.good_match) {
+    chain_length >>= 2;
+  }
+  /* Do not look for matches beyond the end of the input. This is necessary
+   * to make deflate deterministic.
+   */
+  if (nice_match > s.lookahead) { nice_match = s.lookahead; }
+
+  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
+
+  do {
+    // Assert(cur_match < s->strstart, "no future");
+    match = cur_match;
+
+    /* Skip to next match if the match length cannot increase
+     * or if the match length is less than 2.  Note that the checks below
+     * for insufficient lookahead only occur occasionally for performance
+     * reasons.  Therefore uninitialized memory will be accessed, and
+     * conditional jumps will be made that depend on those values.
+     * However the length of the match is limited to the lookahead, so
+     * the output of deflate is not affected by the uninitialized values.
+     */
+
+    if (_win[match + best_len]     !== scan_end  ||
+        _win[match + best_len - 1] !== scan_end1 ||
+        _win[match]                !== _win[scan] ||
+        _win[++match]              !== _win[scan + 1]) {
+      continue;
+    }
+
+    /* The check at best_len-1 can be removed because it will be made
+     * again later. (This heuristic is not always a win.)
+     * It is not necessary to compare scan[2] and match[2] since they
+     * are always equal when the other bytes match, given that
+     * the hash keys are equal and that HASH_BITS >= 8.
+     */
+    scan += 2;
+    match++;
+    // Assert(*scan == *match, "match[2]?");
+
+    /* We check for insufficient lookahead only every 8th comparison;
+     * the 256th check will be made at strstart+258.
+     */
+    do {
+      /*jshint noempty:false*/
+    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             scan < strend);
+
+    // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
+
+    len = MAX_MATCH - (strend - scan);
+    scan = strend - MAX_MATCH;
+
+    if (len > best_len) {
+      s.match_start = cur_match;
+      best_len = len;
+      if (len >= nice_match) {
+        break;
+      }
+      scan_end1  = _win[scan + best_len - 1];
+      scan_end   = _win[scan + best_len];
+    }
+  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);
+
+  if (best_len <= s.lookahead) {
+    return best_len;
+  }
+  return s.lookahead;
+}
+
+
+/* ===========================================================================
+ * Fill the window when the lookahead becomes insufficient.
+ * Updates strstart and lookahead.
+ *
+ * IN assertion: lookahead < MIN_LOOKAHEAD
+ * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
+ *    At least one byte has been read, or avail_in == 0; reads are
+ *    performed for at least two bytes (required for the zip translate_eol
+ *    option -- not supported here).
+ */
+function fill_window(s) {
+  var _w_size = s.w_size;
+  var p, n, m, more, str;
+
+  //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
+
+  do {
+    more = s.window_size - s.lookahead - s.strstart;
+
+    // JS ints have 32 bit, block below not needed
+    /* Deal with !@#$% 64K limit: */
+    //if (sizeof(int) <= 2) {
+    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
+    //        more = wsize;
+    //
+    //  } else if (more == (unsigned)(-1)) {
+    //        /* Very unlikely, but possible on 16 bit machine if
+    //         * strstart == 0 && lookahead == 1 (input done a byte at time)
+    //         */
+    //        more--;
+    //    }
+    //}
+
+
+    /* If the window is almost full and there is insufficient lookahead,
+     * move the upper half to the lower one to make room in the upper half.
+     */
+    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {
+
+      utils.arraySet(s.window, s.window, _w_size, _w_size, 0);
+      s.match_start -= _w_size;
+      s.strstart -= _w_size;
+      /* we now have strstart >= MAX_DIST */
+      s.block_start -= _w_size;
+
+      /* Slide the hash table (could be avoided with 32 bit values
+       at the expense of memory usage). We slide even when level == 0
+       to keep the hash table consistent if we switch back to level > 0
+       later. (Using level 0 permanently is not an optimal usage of
+       zlib, so we don't care about this pathological case.)
+       */
+
+      n = s.hash_size;
+      p = n;
+      do {
+        m = s.head[--p];
+        s.head[p] = (m >= _w_size ? m - _w_size : 0);
+      } while (--n);
+
+      n = _w_size;
+      p = n;
+      do {
+        m = s.prev[--p];
+        s.prev[p] = (m >= _w_size ? m - _w_size : 0);
+        /* If n is not on any hash chain, prev[n] is garbage but
+         * its value will never be used.
+         */
+      } while (--n);
+
+      more += _w_size;
+    }
+    if (s.strm.avail_in === 0) {
+      break;
+    }
+
+    /* If there was no sliding:
+     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
+     *    more == window_size - lookahead - strstart
+     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
+     * => more >= window_size - 2*WSIZE + 2
+     * In the BIG_MEM or MMAP case (not yet supported),
+     *   window_size == input_size + MIN_LOOKAHEAD  &&
+     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
+     * Otherwise, window_size == 2*WSIZE so more >= 2.
+     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
+     */
+    //Assert(more >= 2, "more < 2");
+    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
+    s.lookahead += n;
+
+    /* Initialize the hash value now that we have some input: */
+    if (s.lookahead + s.insert >= MIN_MATCH) {
+      str = s.strstart - s.insert;
+      s.ins_h = s.window[str];
+
+      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;
+//#if MIN_MATCH != 3
+//        Call update_hash() MIN_MATCH-3 more times
+//#endif
+      while (s.insert) {
+        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
+        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH-1]) & s.hash_mask;
+
+        s.prev[str & s.w_mask] = s.head[s.ins_h];
+        s.head[s.ins_h] = str;
+        str++;
+        s.insert--;
+        if (s.lookahead + s.insert < MIN_MATCH) {
+          break;
+        }
+      }
+    }
+    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
+     * but this is not important since only literal bytes will be emitted.
+     */
+
+  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);
+
+  /* If the WIN_INIT bytes after the end of the current data have never been
+   * written, then zero those bytes in order to avoid memory check reports of
+   * the use of uninitialized (or uninitialised as Julian writes) bytes by
+   * the longest match routines.  Update the high water mark for the next
+   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
+   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
+   */
+//  if (s.high_water < s.window_size) {
+//    var curr = s.strstart + s.lookahead;
+//    var init = 0;
+//
+//    if (s.high_water < curr) {
+//      /* Previous high water mark below current data -- zero WIN_INIT
+//       * bytes or up to end of window, whichever is less.
+//       */
+//      init = s.window_size - curr;
+//      if (init > WIN_INIT)
+//        init = WIN_INIT;
+//      zmemzero(s->window + curr, (unsigned)init);
+//      s->high_water = curr + init;
+//    }
+//    else if (s->high_water < (ulg)curr + WIN_INIT) {
+//      /* High water mark at or above current data, but below current data
+//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
+//       * to end of window, whichever is less.
+//       */
+//      init = (ulg)curr + WIN_INIT - s->high_water;
+//      if (init > s->window_size - s->high_water)
+//        init = s->window_size - s->high_water;
+//      zmemzero(s->window + s->high_water, (unsigned)init);
+//      s->high_water += init;
+//    }
+//  }
+//
+//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
+//    "not enough room for search");
+}
+
+/* ===========================================================================
+ * Copy without compression as much as possible from the input stream, return
+ * the current block state.
+ * This function does not insert new strings in the dictionary since
+ * uncompressible data is probably not useful. This function is used
+ * only for the level=0 compression option.
+ * NOTE: this function should be optimized to avoid extra copying from
+ * window to pending_buf.
+ */
+function deflate_stored(s, flush) {
+  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
+   * to pending_buf_size, and each stored block has a 5 byte header:
+   */
+  var max_block_size = 0xffff;
+
+  if (max_block_size > s.pending_buf_size - 5) {
+    max_block_size = s.pending_buf_size - 5;
+  }
+
+  /* Copy as much as possible from input to output: */
+  for (;;) {
+    /* Fill the window as much as possible: */
+    if (s.lookahead <= 1) {
+
+      //Assert(s->strstart < s->w_size+MAX_DIST(s) ||
+      //  s->block_start >= (long)s->w_size, "slide too late");
+//      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||
+//        s.block_start >= s.w_size)) {
+//        throw  new Error("slide too late");
+//      }
+
+      fill_window(s);
+      if (s.lookahead === 0 && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+
+      if (s.lookahead === 0) {
+        break;
+      }
+      /* flush the current block */
+    }
+    //Assert(s->block_start >= 0L, "block gone");
+//    if (s.block_start < 0) throw new Error("block gone");
+
+    s.strstart += s.lookahead;
+    s.lookahead = 0;
+
+    /* Emit a stored block if pending_buf will be full: */
+    var max_start = s.block_start + max_block_size;
+
+    if (s.strstart === 0 || s.strstart >= max_start) {
+      /* strstart == 0 is possible when wraparound on 16-bit machine */
+      s.lookahead = s.strstart - max_start;
+      s.strstart = max_start;
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+
+
+    }
+    /* Flush if we may have to slide, otherwise block_start may become
+     * negative and the data will be gone:
+     */
+    if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+
+  s.insert = 0;
+
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+
+  if (s.strstart > s.block_start) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+
+  return BS_NEED_MORE;
+}
+
+/* ===========================================================================
+ * Compress as much as possible from the input stream, return the current
+ * block state.
+ * This function does not perform lazy evaluation of matches and inserts
+ * new strings in the dictionary only for unmatched strings or for short
+ * matches. It is used only for the fast compression options.
+ */
+function deflate_fast(s, flush) {
+  var hash_head;        /* head of the hash chain */
+  var bflush;           /* set if current block must be flushed */
+
+  for (;;) {
+    /* Make sure that we always have enough lookahead, except
+     * at the end of the input file. We need MAX_MATCH bytes
+     * for the next match, plus MIN_MATCH bytes to insert the
+     * string following the next match.
+     */
+    if (s.lookahead < MIN_LOOKAHEAD) {
+      fill_window(s);
+      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+      if (s.lookahead === 0) {
+        break; /* flush the current block */
+      }
+    }
+
+    /* Insert the string window[strstart .. strstart+2] in the
+     * dictionary, and set hash_head to the head of the hash chain:
+     */
+    hash_head = 0/*NIL*/;
+    if (s.lookahead >= MIN_MATCH) {
+      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+      s.head[s.ins_h] = s.strstart;
+      /***/
+    }
+
+    /* Find the longest match, discarding those <= prev_length.
+     * At this point we have always match_length < MIN_MATCH
+     */
+    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {
+      /* To simplify the code, we prevent matches with the string
+       * of window index 0 (in particular we have to avoid a match
+       * of the string with itself at the start of the input file).
+       */
+      s.match_length = longest_match(s, hash_head);
+      /* longest_match() sets match_start */
+    }
+    if (s.match_length >= MIN_MATCH) {
+      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only
+
+      /*** _tr_tally_dist(s, s.strstart - s.match_start,
+                     s.match_length - MIN_MATCH, bflush); ***/
+      bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);
+
+      s.lookahead -= s.match_length;
+
+      /* Insert new strings in the hash table only if the match length
+       * is not too large. This saves time but degrades compression.
+       */
+      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {
+        s.match_length--; /* string at strstart already in table */
+        do {
+          s.strstart++;
+          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+          s.head[s.ins_h] = s.strstart;
+          /***/
+          /* strstart never exceeds WSIZE-MAX_MATCH, so there are
+           * always MIN_MATCH bytes ahead.
+           */
+        } while (--s.match_length !== 0);
+        s.strstart++;
+      } else
+      {
+        s.strstart += s.match_length;
+        s.match_length = 0;
+        s.ins_h = s.window[s.strstart];
+        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */
+        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;
+
+//#if MIN_MATCH != 3
+//                Call UPDATE_HASH() MIN_MATCH-3 more times
+//#endif
+        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
+         * matter since it will be recomputed at next deflate call.
+         */
+      }
+    } else {
+      /* No match, output a literal byte */
+      //Tracevv((stderr,"%c", s.window[s.strstart]));
+      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+
+      s.lookahead--;
+      s.strstart++;
+    }
+    if (bflush) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+  s.insert = ((s.strstart < (MIN_MATCH-1)) ? s.strstart : MIN_MATCH-1);
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+  return BS_BLOCK_DONE;
+}
+
+/* ===========================================================================
+ * Same as above, but achieves better compression. We use a lazy
+ * evaluation for matches: a match is finally adopted only if there is
+ * no better match at the next window position.
+ */
+function deflate_slow(s, flush) {
+  var hash_head;          /* head of hash chain */
+  var bflush;              /* set if current block must be flushed */
+
+  var max_insert;
+
+  /* Process the input block. */
+  for (;;) {
+    /* Make sure that we always have enough lookahead, except
+     * at the end of the input file. We need MAX_MATCH bytes
+     * for the next match, plus MIN_MATCH bytes to insert the
+     * string following the next match.
+     */
+    if (s.lookahead < MIN_LOOKAHEAD) {
+      fill_window(s);
+      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+      if (s.lookahead === 0) { break; } /* flush the current block */
+    }
+
+    /* Insert the string window[strstart .. strstart+2] in the
+     * dictionary, and set hash_head to the head of the hash chain:
+     */
+    hash_head = 0/*NIL*/;
+    if (s.lookahead >= MIN_MATCH) {
+      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+      s.head[s.ins_h] = s.strstart;
+      /***/
+    }
+
+    /* Find the longest match, discarding those <= prev_length.
+     */
+    s.prev_length = s.match_length;
+    s.prev_match = s.match_start;
+    s.match_length = MIN_MATCH-1;
+
+    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&
+        s.strstart - hash_head <= (s.w_size-MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {
+      /* To simplify the code, we prevent matches with the string
+       * of window index 0 (in particular we have to avoid a match
+       * of the string with itself at the start of the input file).
+       */
+      s.match_length = longest_match(s, hash_head);
+      /* longest_match() sets match_start */
+
+      if (s.match_length <= 5 &&
+         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {
+
+        /* If prev_match is also MIN_MATCH, match_start is garbage
+         * but we will ignore the current match anyway.
+         */
+        s.match_length = MIN_MATCH-1;
+      }
+    }
+    /* If there was a match at the previous step and the current
+     * match is not better, output the previous match:
+     */
+    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
+      max_insert = s.strstart + s.lookahead - MIN_MATCH;
+      /* Do not insert strings in hash table beyond this. */
+
+      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);
+
+      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,
+                     s.prev_length - MIN_MATCH, bflush);***/
+      bflush = trees._tr_tally(s, s.strstart - 1- s.prev_match, s.prev_length - MIN_MATCH);
+      /* Insert in hash table all strings up to the end of the match.
+       * strstart-1 and strstart are already inserted. If there is not
+       * enough lookahead, the last two strings are not inserted in
+       * the hash table.
+       */
+      s.lookahead -= s.prev_length-1;
+      s.prev_length -= 2;
+      do {
+        if (++s.strstart <= max_insert) {
+          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+          s.head[s.ins_h] = s.strstart;
+          /***/
+        }
+      } while (--s.prev_length !== 0);
+      s.match_available = 0;
+      s.match_length = MIN_MATCH-1;
+      s.strstart++;
+
+      if (bflush) {
+        /*** FLUSH_BLOCK(s, 0); ***/
+        flush_block_only(s, false);
+        if (s.strm.avail_out === 0) {
+          return BS_NEED_MORE;
+        }
+        /***/
+      }
+
+    } else if (s.match_available) {
+      /* If there was no match at the previous position, output a
+       * single literal. If there was a match but the current match
+       * is longer, truncate the previous match to a single literal.
+       */
+      //Tracevv((stderr,"%c", s->window[s->strstart-1]));
+      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
+      bflush = trees._tr_tally(s, 0, s.window[s.strstart-1]);
+
+      if (bflush) {
+        /*** FLUSH_BLOCK_ONLY(s, 0) ***/
+        flush_block_only(s, false);
+        /***/
+      }
+      s.strstart++;
+      s.lookahead--;
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+    } else {
+      /* There is no previous match to compare with, wait for
+       * the next step to decide.
+       */
+      s.match_available = 1;
+      s.strstart++;
+      s.lookahead--;
+    }
+  }
+  //Assert (flush != Z_NO_FLUSH, "no flush?");
+  if (s.match_available) {
+    //Tracevv((stderr,"%c", s->window[s->strstart-1]));
+    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
+    bflush = trees._tr_tally(s, 0, s.window[s.strstart-1]);
+
+    s.match_available = 0;
+  }
+  s.insert = s.strstart < MIN_MATCH-1 ? s.strstart : MIN_MATCH-1;
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+
+  return BS_BLOCK_DONE;
+}
+
+
+/* ===========================================================================
+ * For Z_RLE, simply look for runs of bytes, generate matches only of distance
+ * one.  Do not maintain a hash table.  (It will be regenerated if this run of
+ * deflate switches away from Z_RLE.)
+ */
+function deflate_rle(s, flush) {
+  var bflush;            /* set if current block must be flushed */
+  var prev;              /* byte at distance one to match */
+  var scan, strend;      /* scan goes up to strend for length of run */
+
+  var _win = s.window;
+
+  for (;;) {
+    /* Make sure that we always have enough lookahead, except
+     * at the end of the input file. We need MAX_MATCH bytes
+     * for the longest run, plus one for the unrolled loop.
+     */
+    if (s.lookahead <= MAX_MATCH) {
+      fill_window(s);
+      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+      if (s.lookahead === 0) { break; } /* flush the current block */
+    }
+
+    /* See how many times the previous byte repeats */
+    s.match_length = 0;
+    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
+      scan = s.strstart - 1;
+      prev = _win[scan];
+      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
+        strend = s.strstart + MAX_MATCH;
+        do {
+          /*jshint noempty:false*/
+        } while (prev === _win[++scan] && prev === _win[++scan] &&
+                 prev === _win[++scan] && prev === _win[++scan] &&
+                 prev === _win[++scan] && prev === _win[++scan] &&
+                 prev === _win[++scan] && prev === _win[++scan] &&
+                 scan < strend);
+        s.match_length = MAX_MATCH - (strend - scan);
+        if (s.match_length > s.lookahead) {
+          s.match_length = s.lookahead;
+        }
+      }
+      //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
+    }
+
+    /* Emit match if have run of MIN_MATCH or longer, else emit literal */
+    if (s.match_length >= MIN_MATCH) {
+      //check_match(s, s.strstart, s.strstart - 1, s.match_length);
+
+      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/
+      bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);
+
+      s.lookahead -= s.match_length;
+      s.strstart += s.match_length;
+      s.match_length = 0;
+    } else {
+      /* No match, output a literal byte */
+      //Tracevv((stderr,"%c", s->window[s->strstart]));
+      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+
+      s.lookahead--;
+      s.strstart++;
+    }
+    if (bflush) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+  s.insert = 0;
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+  return BS_BLOCK_DONE;
+}
+
+/* ===========================================================================
+ * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
+ * (It will be regenerated if this run of deflate switches away from Huffman.)
+ */
+function deflate_huff(s, flush) {
+  var bflush;             /* set if current block must be flushed */
+
+  for (;;) {
+    /* Make sure that we have a literal to write. */
+    if (s.lookahead === 0) {
+      fill_window(s);
+      if (s.lookahead === 0) {
+        if (flush === Z_NO_FLUSH) {
+          return BS_NEED_MORE;
+        }
+        break;      /* flush the current block */
+      }
+    }
+
+    /* Output a literal byte */
+    s.match_length = 0;
+    //Tracevv((stderr,"%c", s->window[s->strstart]));
+    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+    bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+    s.lookahead--;
+    s.strstart++;
+    if (bflush) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+  s.insert = 0;
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+  return BS_BLOCK_DONE;
+}
+
+/* Values for max_lazy_match, good_match and max_chain_length, depending on
+ * the desired pack level (0..9). The values given below have been tuned to
+ * exclude worst case performance for pathological files. Better values may be
+ * found for specific files.
+ */
+var Config = function (good_length, max_lazy, nice_length, max_chain, func) {
+  this.good_length = good_length;
+  this.max_lazy = max_lazy;
+  this.nice_length = nice_length;
+  this.max_chain = max_chain;
+  this.func = func;
+};
+
+var configuration_table;
+
+configuration_table = [
+  /*      good lazy nice chain */
+  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */
+  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */
+  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */
+  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */
+
+  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */
+  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */
+  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */
+  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */
+  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */
+  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */
+];
+
+
+/* ===========================================================================
+ * Initialize the "longest match" routines for a new zlib stream
+ */
+function lm_init(s) {
+  s.window_size = 2 * s.w_size;
+
+  /*** CLEAR_HASH(s); ***/
+  zero(s.head); // Fill with NIL (= 0);
+
+  /* Set the default configuration parameters:
+   */
+  s.max_lazy_match = configuration_table[s.level].max_lazy;
+  s.good_match = configuration_table[s.level].good_length;
+  s.nice_match = configuration_table[s.level].nice_length;
+  s.max_chain_length = configuration_table[s.level].max_chain;
+
+  s.strstart = 0;
+  s.block_start = 0;
+  s.lookahead = 0;
+  s.insert = 0;
+  s.match_length = s.prev_length = MIN_MATCH - 1;
+  s.match_available = 0;
+  s.ins_h = 0;
+}
+
+
+function DeflateState() {
+  this.strm = null;            /* pointer back to this zlib stream */
+  this.status = 0;            /* as the name implies */
+  this.pending_buf = null;      /* output still pending */
+  this.pending_buf_size = 0;  /* size of pending_buf */
+  this.pending_out = 0;       /* next pending byte to output to the stream */
+  this.pending = 0;           /* nb of bytes in the pending buffer */
+  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
+  this.gzhead = null;         /* gzip header information to write */
+  this.gzindex = 0;           /* where in extra, name, or comment */
+  this.method = Z_DEFLATED; /* can only be DEFLATED */
+  this.last_flush = -1;   /* value of flush param for previous deflate call */
+
+  this.w_size = 0;  /* LZ77 window size (32K by default) */
+  this.w_bits = 0;  /* log2(w_size)  (8..16) */
+  this.w_mask = 0;  /* w_size - 1 */
+
+  this.window = null;
+  /* Sliding window. Input bytes are read into the second half of the window,
+   * and move to the first half later to keep a dictionary of at least wSize
+   * bytes. With this organization, matches are limited to a distance of
+   * wSize-MAX_MATCH bytes, but this ensures that IO is always
+   * performed with a length multiple of the block size.
+   */
+
+  this.window_size = 0;
+  /* Actual size of window: 2*wSize, except when the user input buffer
+   * is directly used as sliding window.
+   */
+
+  this.prev = null;
+  /* Link to older string with same hash index. To limit the size of this
+   * array to 64K, this link is maintained only for the last 32K strings.
+   * An index in this array is thus a window index modulo 32K.
+   */
+
+  this.head = null;   /* Heads of the hash chains or NIL. */
+
+  this.ins_h = 0;       /* hash index of string to be inserted */
+  this.hash_size = 0;   /* number of elements in hash table */
+  this.hash_bits = 0;   /* log2(hash_size) */
+  this.hash_mask = 0;   /* hash_size-1 */
+
+  this.hash_shift = 0;
+  /* Number of bits by which ins_h must be shifted at each input
+   * step. It must be such that after MIN_MATCH steps, the oldest
+   * byte no longer takes part in the hash key, that is:
+   *   hash_shift * MIN_MATCH >= hash_bits
+   */
+
+  this.block_start = 0;
+  /* Window position at the beginning of the current output block. Gets
+   * negative when the window is moved backwards.
+   */
+
+  this.match_length = 0;      /* length of best match */
+  this.prev_match = 0;        /* previous match */
+  this.match_available = 0;   /* set if previous match exists */
+  this.strstart = 0;          /* start of string to insert */
+  this.match_start = 0;       /* start of matching string */
+  this.lookahead = 0;         /* number of valid bytes ahead in window */
+
+  this.prev_length = 0;
+  /* Length of the best match at previous step. Matches not greater than this
+   * are discarded. This is used in the lazy match evaluation.
+   */
+
+  this.max_chain_length = 0;
+  /* To speed up deflation, hash chains are never searched beyond this
+   * length.  A higher limit improves compression ratio but degrades the
+   * speed.
+   */
+
+  this.max_lazy_match = 0;
+  /* Attempt to find a better match only when the current match is strictly
+   * smaller than this value. This mechanism is used only for compression
+   * levels >= 4.
+   */
+  // That's alias to max_lazy_match, don't use directly
+  //this.max_insert_length = 0;
+  /* Insert new strings in the hash table only if the match length is not
+   * greater than this length. This saves time but degrades compression.
+   * max_insert_length is used only for compression levels <= 3.
+   */
+
+  this.level = 0;     /* compression level (1..9) */
+  this.strategy = 0;  /* favor or force Huffman coding*/
+
+  this.good_match = 0;
+  /* Use a faster search when the previous match is longer than this */
+
+  this.nice_match = 0; /* Stop searching when current match exceeds this */
+
+              /* used by trees.c: */
+
+  /* Didn't use ct_data typedef below to suppress compiler warning */
+
+  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */
+  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
+  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */
+
+  // Use flat array of DOUBLE size, with interleaved fata,
+  // because JS does not support effective
+  this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);
+  this.dyn_dtree  = new utils.Buf16((2*D_CODES+1) * 2);
+  this.bl_tree    = new utils.Buf16((2*BL_CODES+1) * 2);
+  zero(this.dyn_ltree);
+  zero(this.dyn_dtree);
+  zero(this.bl_tree);
+
+  this.l_desc   = null;         /* desc. for literal tree */
+  this.d_desc   = null;         /* desc. for distance tree */
+  this.bl_desc  = null;         /* desc. for bit length tree */
+
+  //ush bl_count[MAX_BITS+1];
+  this.bl_count = new utils.Buf16(MAX_BITS+1);
+  /* number of codes at each bit length for an optimal tree */
+
+  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */
+  this.heap = new utils.Buf16(2*L_CODES+1);  /* heap used to build the Huffman trees */
+  zero(this.heap);
+
+  this.heap_len = 0;               /* number of elements in the heap */
+  this.heap_max = 0;               /* element of largest frequency */
+  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
+   * The same heap array is used to build all trees.
+   */
+
+  this.depth = new utils.Buf16(2*L_CODES+1); //uch depth[2*L_CODES+1];
+  zero(this.depth);
+  /* Depth of each subtree used as tie breaker for trees of equal frequency
+   */
+
+  this.l_buf = 0;          /* buffer index for literals or lengths */
+
+  this.lit_bufsize = 0;
+  /* Size of match buffer for literals/lengths.  There are 4 reasons for
+   * limiting lit_bufsize to 64K:
+   *   - frequencies can be kept in 16 bit counters
+   *   - if compression is not successful for the first block, all input
+   *     data is still in the window so we can still emit a stored block even
+   *     when input comes from standard input.  (This can also be done for
+   *     all blocks if lit_bufsize is not greater than 32K.)
+   *   - if compression is not successful for a file smaller than 64K, we can
+   *     even emit a stored file instead of a stored block (saving 5 bytes).
+   *     This is applicable only for zip (not gzip or zlib).
+   *   - creating new Huffman trees less frequently may not provide fast
+   *     adaptation to changes in the input data statistics. (Take for
+   *     example a binary file with poorly compressible code followed by
+   *     a highly compressible string table.) Smaller buffer sizes give
+   *     fast adaptation but have of course the overhead of transmitting
+   *     trees more frequently.
+   *   - I can't count above 4
+   */
+
+  this.last_lit = 0;      /* running index in l_buf */
+
+  this.d_buf = 0;
+  /* Buffer index for distances. To simplify the code, d_buf and l_buf have
+   * the same number of elements. To use different lengths, an extra flag
+   * array would be necessary.
+   */
+
+  this.opt_len = 0;       /* bit length of current block with optimal trees */
+  this.static_len = 0;    /* bit length of current block with static trees */
+  this.matches = 0;       /* number of string matches in current block */
+  this.insert = 0;        /* bytes at end of window left to insert */
+
+
+  this.bi_buf = 0;
+  /* Output buffer. bits are inserted starting at the bottom (least
+   * significant bits).
+   */
+  this.bi_valid = 0;
+  /* Number of valid bits in bi_buf.  All bits above the last valid bit
+   * are always zero.
+   */
+
+  // Used for window memory init. We safely ignore it for JS. That makes
+  // sense only for pointers and memory check tools.
+  //this.high_water = 0;
+  /* High water mark offset in window for initialized bytes -- bytes above
+   * this are set to zero in order to avoid memory check warnings when
+   * longest match routines access bytes past the input.  This is then
+   * updated to the new high water mark.
+   */
+}
+
+
+function deflateResetKeep(strm) {
+  var s;
+
+  if (!strm || !strm.state) {
+    return err(strm, Z_STREAM_ERROR);
+  }
+
+  strm.total_in = strm.total_out = 0;
+  strm.data_type = Z_UNKNOWN;
+
+  s = strm.state;
+  s.pending = 0;
+  s.pending_out = 0;
+
+  if (s.wrap < 0) {
+    s.wrap = -s.wrap;
+    /* was made negative by deflate(..., Z_FINISH); */
+  }
+  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);
+  strm.adler = (s.wrap === 2) ?
+    0  // crc32(0, Z_NULL, 0)
+  :
+    1; // adler32(0, Z_NULL, 0)
+  s.last_flush = Z_NO_FLUSH;
+  trees._tr_init(s);
+  return Z_OK;
+}
+
+
+function deflateReset(strm) {
+  var ret = deflateResetKeep(strm);
+  if (ret === Z_OK) {
+    lm_init(strm.state);
+  }
+  return ret;
+}
+
+
+function deflateSetHeader(strm, head) {
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }
+  strm.state.gzhead = head;
+  return Z_OK;
+}
+
+
+function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {
+  if (!strm) { // === Z_NULL
+    return Z_STREAM_ERROR;
+  }
+  var wrap = 1;
+
+  if (level === Z_DEFAULT_COMPRESSION) {
+    level = 6;
+  }
+
+  if (windowBits < 0) { /* suppress zlib wrapper */
+    wrap = 0;
+    windowBits = -windowBits;
+  }
+
+  else if (windowBits > 15) {
+    wrap = 2;           /* write gzip wrapper instead */
+    windowBits -= 16;
+  }
+
+
+  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||
+    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
+    strategy < 0 || strategy > Z_FIXED) {
+    return err(strm, Z_STREAM_ERROR);
+  }
+
+
+  if (windowBits === 8) {
+    windowBits = 9;
+  }
+  /* until 256-byte window bug fixed */
+
+  var s = new DeflateState();
+
+  strm.state = s;
+  s.strm = strm;
+
+  s.wrap = wrap;
+  s.gzhead = null;
+  s.w_bits = windowBits;
+  s.w_size = 1 << s.w_bits;
+  s.w_mask = s.w_size - 1;
+
+  s.hash_bits = memLevel + 7;
+  s.hash_size = 1 << s.hash_bits;
+  s.hash_mask = s.hash_size - 1;
+  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);
+
+  s.window = new utils.Buf8(s.w_size * 2);
+  s.head = new utils.Buf16(s.hash_size);
+  s.prev = new utils.Buf16(s.w_size);
+
+  // Don't need mem init magic for JS.
+  //s.high_water = 0;  /* nothing written to s->window yet */
+
+  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
+
+  s.pending_buf_size = s.lit_bufsize * 4;
+  s.pending_buf = new utils.Buf8(s.pending_buf_size);
+
+  s.d_buf = s.lit_bufsize >> 1;
+  s.l_buf = (1 + 2) * s.lit_bufsize;
+
+  s.level = level;
+  s.strategy = strategy;
+  s.method = method;
+
+  return deflateReset(strm);
+}
+
+function deflateInit(strm, level) {
+  return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);
+}
+
+
+function deflate(strm, flush) {
+  var old_flush, s;
+  var beg, val; // for gzip header write only
+
+  if (!strm || !strm.state ||
+    flush > Z_BLOCK || flush < 0) {
+    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;
+  }
+
+  s = strm.state;
+
+  if (!strm.output ||
+      (!strm.input && strm.avail_in !== 0) ||
+      (s.status === FINISH_STATE && flush !== Z_FINISH)) {
+    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);
+  }
+
+  s.strm = strm; /* just in case */
+  old_flush = s.last_flush;
+  s.last_flush = flush;
+
+  /* Write the header */
+  if (s.status === INIT_STATE) {
+
+    if (s.wrap === 2) { // GZIP header
+      strm.adler = 0;  //crc32(0L, Z_NULL, 0);
+      put_byte(s, 31);
+      put_byte(s, 139);
+      put_byte(s, 8);
+      if (!s.gzhead) { // s->gzhead == Z_NULL
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, s.level === 9 ? 2 :
+                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
+                     4 : 0));
+        put_byte(s, OS_CODE);
+        s.status = BUSY_STATE;
+      }
+      else {
+        put_byte(s, (s.gzhead.text ? 1 : 0) +
+                    (s.gzhead.hcrc ? 2 : 0) +
+                    (!s.gzhead.extra ? 0 : 4) +
+                    (!s.gzhead.name ? 0 : 8) +
+                    (!s.gzhead.comment ? 0 : 16)
+                );
+        put_byte(s, s.gzhead.time & 0xff);
+        put_byte(s, (s.gzhead.time >> 8) & 0xff);
+        put_byte(s, (s.gzhead.time >> 16) & 0xff);
+        put_byte(s, (s.gzhead.time >> 24) & 0xff);
+        put_byte(s, s.level === 9 ? 2 :
+                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
+                     4 : 0));
+        put_byte(s, s.gzhead.os & 0xff);
+        if (s.gzhead.extra && s.gzhead.extra.length) {
+          put_byte(s, s.gzhead.extra.length & 0xff);
+          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);
+        }
+        if (s.gzhead.hcrc) {
+          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);
+        }
+        s.gzindex = 0;
+        s.status = EXTRA_STATE;
+      }
+    }
+    else // DEFLATE header
+    {
+      var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;
+      var level_flags = -1;
+
+      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {
+        level_flags = 0;
+      } else if (s.level < 6) {
+        level_flags = 1;
+      } else if (s.level === 6) {
+        level_flags = 2;
+      } else {
+        level_flags = 3;
+      }
+      header |= (level_flags << 6);
+      if (s.strstart !== 0) { header |= PRESET_DICT; }
+      header += 31 - (header % 31);
+
+      s.status = BUSY_STATE;
+      putShortMSB(s, header);
+
+      /* Save the adler32 of the preset dictionary: */
+      if (s.strstart !== 0) {
+        putShortMSB(s, strm.adler >>> 16);
+        putShortMSB(s, strm.adler & 0xffff);
+      }
+      strm.adler = 1; // adler32(0L, Z_NULL, 0);
+    }
+  }
+
+//#ifdef GZIP
+  if (s.status === EXTRA_STATE) {
+    if (s.gzhead.extra/* != Z_NULL*/) {
+      beg = s.pending;  /* start of bytes to update crc */
+
+      while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {
+        if (s.pending === s.pending_buf_size) {
+          if (s.gzhead.hcrc && s.pending > beg) {
+            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+          }
+          flush_pending(strm);
+          beg = s.pending;
+          if (s.pending === s.pending_buf_size) {
+            break;
+          }
+        }
+        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);
+        s.gzindex++;
+      }
+      if (s.gzhead.hcrc && s.pending > beg) {
+        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+      }
+      if (s.gzindex === s.gzhead.extra.length) {
+        s.gzindex = 0;
+        s.status = NAME_STATE;
+      }
+    }
+    else {
+      s.status = NAME_STATE;
+    }
+  }
+  if (s.status === NAME_STATE) {
+    if (s.gzhead.name/* != Z_NULL*/) {
+      beg = s.pending;  /* start of bytes to update crc */
+      //int val;
+
+      do {
+        if (s.pending === s.pending_buf_size) {
+          if (s.gzhead.hcrc && s.pending > beg) {
+            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+          }
+          flush_pending(strm);
+          beg = s.pending;
+          if (s.pending === s.pending_buf_size) {
+            val = 1;
+            break;
+          }
+        }
+        // JS specific: little magic to add zero terminator to end of string
+        if (s.gzindex < s.gzhead.name.length) {
+          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;
+        } else {
+          val = 0;
+        }
+        put_byte(s, val);
+      } while (val !== 0);
+
+      if (s.gzhead.hcrc && s.pending > beg){
+        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+      }
+      if (val === 0) {
+        s.gzindex = 0;
+        s.status = COMMENT_STATE;
+      }
+    }
+    else {
+      s.status = COMMENT_STATE;
+    }
+  }
+  if (s.status === COMMENT_STATE) {
+    if (s.gzhead.comment/* != Z_NULL*/) {
+      beg = s.pending;  /* start of bytes to update crc */
+      //int val;
+
+      do {
+        if (s.pending === s.pending_buf_size) {
+          if (s.gzhead.hcrc && s.pending > beg) {
+            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+          }
+          flush_pending(strm);
+          beg = s.pending;
+          if (s.pending === s.pending_buf_size) {
+            val = 1;
+            break;
+          }
+        }
+        // JS specific: little magic to add zero terminator to end of string
+        if (s.gzindex < s.gzhead.comment.length) {
+          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;
+        } else {
+          val = 0;
+        }
+        put_byte(s, val);
+      } while (val !== 0);
+
+      if (s.gzhead.hcrc && s.pending > beg) {
+        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+      }
+      if (val === 0) {
+        s.status = HCRC_STATE;
+      }
+    }
+    else {
+      s.status = HCRC_STATE;
+    }
+  }
+  if (s.status === HCRC_STATE) {
+    if (s.gzhead.hcrc) {
+      if (s.pending + 2 > s.pending_buf_size) {
+        flush_pending(strm);
+      }
+      if (s.pending + 2 <= s.pending_buf_size) {
+        put_byte(s, strm.adler & 0xff);
+        put_byte(s, (strm.adler >> 8) & 0xff);
+        strm.adler = 0; //crc32(0L, Z_NULL, 0);
+        s.status = BUSY_STATE;
+      }
+    }
+    else {
+      s.status = BUSY_STATE;
+    }
+  }
+//#endif
+
+  /* Flush as much pending output as possible */
+  if (s.pending !== 0) {
+    flush_pending(strm);
+    if (strm.avail_out === 0) {
+      /* Since avail_out is 0, deflate will be called again with
+       * more output space, but possibly with both pending and
+       * avail_in equal to zero. There won't be anything to do,
+       * but this is not an error situation so make sure we
+       * return OK instead of BUF_ERROR at next call of deflate:
+       */
+      s.last_flush = -1;
+      return Z_OK;
+    }
+
+    /* Make sure there is something to do and avoid duplicate consecutive
+     * flushes. For repeated and useless calls with Z_FINISH, we keep
+     * returning Z_STREAM_END instead of Z_BUF_ERROR.
+     */
+  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&
+    flush !== Z_FINISH) {
+    return err(strm, Z_BUF_ERROR);
+  }
+
+  /* User must not provide more input after the first FINISH: */
+  if (s.status === FINISH_STATE && strm.avail_in !== 0) {
+    return err(strm, Z_BUF_ERROR);
+  }
+
+  /* Start a new block or continue the current one.
+   */
+  if (strm.avail_in !== 0 || s.lookahead !== 0 ||
+    (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {
+    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :
+      (s.strategy === Z_RLE ? deflate_rle(s, flush) :
+        configuration_table[s.level].func(s, flush));
+
+    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {
+      s.status = FINISH_STATE;
+    }
+    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
+      if (strm.avail_out === 0) {
+        s.last_flush = -1;
+        /* avoid BUF_ERROR next call, see above */
+      }
+      return Z_OK;
+      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
+       * of deflate should use the same flush parameter to make sure
+       * that the flush is complete. So we don't have to output an
+       * empty block here, this will be done at next call. This also
+       * ensures that for a very small output buffer, we emit at most
+       * one empty block.
+       */
+    }
+    if (bstate === BS_BLOCK_DONE) {
+      if (flush === Z_PARTIAL_FLUSH) {
+        trees._tr_align(s);
+      }
+      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */
+
+        trees._tr_stored_block(s, 0, 0, false);
+        /* For a full flush, this empty block will be recognized
+         * as a special marker by inflate_sync().
+         */
+        if (flush === Z_FULL_FLUSH) {
+          /*** CLEAR_HASH(s); ***/             /* forget history */
+          zero(s.head); // Fill with NIL (= 0);
+
+          if (s.lookahead === 0) {
+            s.strstart = 0;
+            s.block_start = 0;
+            s.insert = 0;
+          }
+        }
+      }
+      flush_pending(strm);
+      if (strm.avail_out === 0) {
+        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */
+        return Z_OK;
+      }
+    }
+  }
+  //Assert(strm->avail_out > 0, "bug2");
+  //if (strm.avail_out <= 0) { throw new Error("bug2");}
+
+  if (flush !== Z_FINISH) { return Z_OK; }
+  if (s.wrap <= 0) { return Z_STREAM_END; }
+
+  /* Write the trailer */
+  if (s.wrap === 2) {
+    put_byte(s, strm.adler & 0xff);
+    put_byte(s, (strm.adler >> 8) & 0xff);
+    put_byte(s, (strm.adler >> 16) & 0xff);
+    put_byte(s, (strm.adler >> 24) & 0xff);
+    put_byte(s, strm.total_in & 0xff);
+    put_byte(s, (strm.total_in >> 8) & 0xff);
+    put_byte(s, (strm.total_in >> 16) & 0xff);
+    put_byte(s, (strm.total_in >> 24) & 0xff);
+  }
+  else
+  {
+    putShortMSB(s, strm.adler >>> 16);
+    putShortMSB(s, strm.adler & 0xffff);
+  }
+
+  flush_pending(strm);
+  /* If avail_out is zero, the application will call deflate again
+   * to flush the rest.
+   */
+  if (s.wrap > 0) { s.wrap = -s.wrap; }
+  /* write the trailer only once! */
+  return s.pending !== 0 ? Z_OK : Z_STREAM_END;
+}
+
+function deflateEnd(strm) {
+  var status;
+
+  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
+    return Z_STREAM_ERROR;
+  }
+
+  status = strm.state.status;
+  if (status !== INIT_STATE &&
+    status !== EXTRA_STATE &&
+    status !== NAME_STATE &&
+    status !== COMMENT_STATE &&
+    status !== HCRC_STATE &&
+    status !== BUSY_STATE &&
+    status !== FINISH_STATE
+  ) {
+    return err(strm, Z_STREAM_ERROR);
+  }
+
+  strm.state = null;
+
+  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;
+}
+
+/* =========================================================================
+ * Copy the source state to the destination state
+ */
+//function deflateCopy(dest, source) {
+//
+//}
+
+exports.deflateInit = deflateInit;
+exports.deflateInit2 = deflateInit2;
+exports.deflateReset = deflateReset;
+exports.deflateResetKeep = deflateResetKeep;
+exports.deflateSetHeader = deflateSetHeader;
+exports.deflate = deflate;
+exports.deflateEnd = deflateEnd;
+exports.deflateInfo = 'pako deflate (from Nodeca project)';
+
+/* Not implemented
+exports.deflateBound = deflateBound;
+exports.deflateCopy = deflateCopy;
+exports.deflateSetDictionary = deflateSetDictionary;
+exports.deflateParams = deflateParams;
+exports.deflatePending = deflatePending;
+exports.deflatePrime = deflatePrime;
+exports.deflateTune = deflateTune;
+*/
+},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(_dereq_,module,exports){
+'use strict';
+
+
+function GZheader() {
+  /* true if compressed data believed to be text */
+  this.text       = 0;
+  /* modification time */
+  this.time       = 0;
+  /* extra flags (not used when writing a gzip file) */
+  this.xflags     = 0;
+  /* operating system */
+  this.os         = 0;
+  /* pointer to extra field or Z_NULL if none */
+  this.extra      = null;
+  /* extra field length (valid if extra != Z_NULL) */
+  this.extra_len  = 0; // Actually, we don't need it in JS,
+                       // but leave for few code modifications
+
+  //
+  // Setup limits is not necessary because in js we should not preallocate memory
+  // for inflate use constant limit in 65536 bytes
+  //
+
+  /* space at extra (only when reading header) */
+  // this.extra_max  = 0;
+  /* pointer to zero-terminated file name or Z_NULL */
+  this.name       = '';
+  /* space at name (only when reading header) */
+  // this.name_max   = 0;
+  /* pointer to zero-terminated comment or Z_NULL */
+  this.comment    = '';
+  /* space at comment (only when reading header) */
+  // this.comm_max   = 0;
+  /* true if there was or will be a header crc */
+  this.hcrc       = 0;
+  /* true when done reading gzip header (not used when writing a gzip file) */
+  this.done       = false;
+}
+
+module.exports = GZheader;
+},{}],34:[function(_dereq_,module,exports){
+'use strict';
+
+// See state defs from inflate.js
+var BAD = 30;       /* got a data error -- remain here until reset */
+var TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
+
+/*
+   Decode literal, length, and distance codes and write out the resulting
+   literal and match bytes until either not enough input or output is
+   available, an end-of-block is encountered, or a data error is encountered.
+   When large enough input and output buffers are supplied to inflate(), for
+   example, a 16K input buffer and a 64K output buffer, more than 95% of the
+   inflate execution time is spent in this routine.
+
+   Entry assumptions:
+
+        state.mode === LEN
+        strm.avail_in >= 6
+        strm.avail_out >= 258
+        start >= strm.avail_out
+        state.bits < 8
+
+   On return, state.mode is one of:
+
+        LEN -- ran out of enough output space or enough available input
+        TYPE -- reached end of block code, inflate() to interpret next block
+        BAD -- error in block data
+
+   Notes:
+
+    - The maximum input bits used by a length/distance pair is 15 bits for the
+      length code, 5 bits for the length extra, 15 bits for the distance code,
+      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
+      Therefore if strm.avail_in >= 6, then there is enough input to avoid
+      checking for available input while decoding.
+
+    - The maximum bytes that a single length/distance pair can output is 258
+      bytes, which is the maximum length that can be coded.  inflate_fast()
+      requires strm.avail_out >= 258 for each loop to avoid checking for
+      output space.
+ */
+module.exports = function inflate_fast(strm, start) {
+  var state;
+  var _in;                    /* local strm.input */
+  var last;                   /* have enough input while in < last */
+  var _out;                   /* local strm.output */
+  var beg;                    /* inflate()'s initial strm.output */
+  var end;                    /* while out < end, enough space available */
+//#ifdef INFLATE_STRICT
+  var dmax;                   /* maximum distance from zlib header */
+//#endif
+  var wsize;                  /* window size or zero if not using window */
+  var whave;                  /* valid bytes in the window */
+  var wnext;                  /* window write index */
+  var window;                 /* allocated sliding window, if wsize != 0 */
+  var hold;                   /* local strm.hold */
+  var bits;                   /* local strm.bits */
+  var lcode;                  /* local strm.lencode */
+  var dcode;                  /* local strm.distcode */
+  var lmask;                  /* mask for first level of length codes */
+  var dmask;                  /* mask for first level of distance codes */
+  var here;                   /* retrieved table entry */
+  var op;                     /* code bits, operation, extra bits, or */
+                              /*  window position, window bytes to copy */
+  var len;                    /* match length, unused bytes */
+  var dist;                   /* match distance */
+  var from;                   /* where to copy match from */
+  var from_source;
+
+
+  var input, output; // JS specific, because we have no pointers
+
+  /* copy state to local variables */
+  state = strm.state;
+  //here = state.here;
+  _in = strm.next_in;
+  input = strm.input;
+  last = _in + (strm.avail_in - 5);
+  _out = strm.next_out;
+  output = strm.output;
+  beg = _out - (start - strm.avail_out);
+  end = _out + (strm.avail_out - 257);
+//#ifdef INFLATE_STRICT
+  dmax = state.dmax;
+//#endif
+  wsize = state.wsize;
+  whave = state.whave;
+  wnext = state.wnext;
+  window = state.window;
+  hold = state.hold;
+  bits = state.bits;
+  lcode = state.lencode;
+  dcode = state.distcode;
+  lmask = (1 << state.lenbits) - 1;
+  dmask = (1 << state.distbits) - 1;
+
+
+  /* decode literals and length/distances until end-of-block or not enough
+     input data or output space */
+
+  top:
+  do {
+    if (bits < 15) {
+      hold += input[_in++] << bits;
+      bits += 8;
+      hold += input[_in++] << bits;
+      bits += 8;
+    }
+
+    here = lcode[hold & lmask];
+
+    dolen:
+    for (;;) { // Goto emulation
+      op = here >>> 24/*here.bits*/;
+      hold >>>= op;
+      bits -= op;
+      op = (here >>> 16) & 0xff/*here.op*/;
+      if (op === 0) {                          /* literal */
+        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+        //        "inflate:         literal '%c'\n" :
+        //        "inflate:         literal 0x%02x\n", here.val));
+        output[_out++] = here & 0xffff/*here.val*/;
+      }
+      else if (op & 16) {                     /* length base */
+        len = here & 0xffff/*here.val*/;
+        op &= 15;                           /* number of extra bits */
+        if (op) {
+          if (bits < op) {
+            hold += input[_in++] << bits;
+            bits += 8;
+          }
+          len += hold & ((1 << op) - 1);
+          hold >>>= op;
+          bits -= op;
+        }
+        //Tracevv((stderr, "inflate:         length %u\n", len));
+        if (bits < 15) {
+          hold += input[_in++] << bits;
+          bits += 8;
+          hold += input[_in++] << bits;
+          bits += 8;
+        }
+        here = dcode[hold & dmask];
+
+        dodist:
+        for (;;) { // goto emulation
+          op = here >>> 24/*here.bits*/;
+          hold >>>= op;
+          bits -= op;
+          op = (here >>> 16) & 0xff/*here.op*/;
+
+          if (op & 16) {                      /* distance base */
+            dist = here & 0xffff/*here.val*/;
+            op &= 15;                       /* number of extra bits */
+            if (bits < op) {
+              hold += input[_in++] << bits;
+              bits += 8;
+              if (bits < op) {
+                hold += input[_in++] << bits;
+                bits += 8;
+              }
+            }
+            dist += hold & ((1 << op) - 1);
+//#ifdef INFLATE_STRICT
+            if (dist > dmax) {
+              strm.msg = 'invalid distance too far back';
+              state.mode = BAD;
+              break top;
+            }
+//#endif
+            hold >>>= op;
+            bits -= op;
+            //Tracevv((stderr, "inflate:         distance %u\n", dist));
+            op = _out - beg;                /* max distance in output */
+            if (dist > op) {                /* see if copy from window */
+              op = dist - op;               /* distance back in window */
+              if (op > whave) {
+                if (state.sane) {
+                  strm.msg = 'invalid distance too far back';
+                  state.mode = BAD;
+                  break top;
+                }
+
+// (!) This block is disabled in zlib defailts,
+// don't enable it for binary compatibility
+//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+//                if (len <= op - whave) {
+//                  do {
+//                    output[_out++] = 0;
+//                  } while (--len);
+//                  continue top;
+//                }
+//                len -= op - whave;
+//                do {
+//                  output[_out++] = 0;
+//                } while (--op > whave);
+//                if (op === 0) {
+//                  from = _out - dist;
+//                  do {
+//                    output[_out++] = output[from++];
+//                  } while (--len);
+//                  continue top;
+//                }
+//#endif
+              }
+              from = 0; // window index
+              from_source = window;
+              if (wnext === 0) {           /* very common case */
+                from += wsize - op;
+                if (op < len) {         /* some from window */
+                  len -= op;
+                  do {
+                    output[_out++] = window[from++];
+                  } while (--op);
+                  from = _out - dist;  /* rest from output */
+                  from_source = output;
+                }
+              }
+              else if (wnext < op) {      /* wrap around window */
+                from += wsize + wnext - op;
+                op -= wnext;
+                if (op < len) {         /* some from end of window */
+                  len -= op;
+                  do {
+                    output[_out++] = window[from++];
+                  } while (--op);
+                  from = 0;
+                  if (wnext < len) {  /* some from start of window */
+                    op = wnext;
+                    len -= op;
+                    do {
+                      output[_out++] = window[from++];
+                    } while (--op);
+                    from = _out - dist;      /* rest from output */
+                    from_source = output;
+                  }
+                }
+              }
+              else {                      /* contiguous in window */
+                from += wnext - op;
+                if (op < len) {         /* some from window */
+                  len -= op;
+                  do {
+                    output[_out++] = window[from++];
+                  } while (--op);
+                  from = _out - dist;  /* rest from output */
+                  from_source = output;
+                }
+              }
+              while (len > 2) {
+                output[_out++] = from_source[from++];
+                output[_out++] = from_source[from++];
+                output[_out++] = from_source[from++];
+                len -= 3;
+              }
+              if (len) {
+                output[_out++] = from_source[from++];
+                if (len > 1) {
+                  output[_out++] = from_source[from++];
+                }
+              }
+            }
+            else {
+              from = _out - dist;          /* copy direct from output */
+              do {                        /* minimum length is three */
+                output[_out++] = output[from++];
+                output[_out++] = output[from++];
+                output[_out++] = output[from++];
+                len -= 3;
+              } while (len > 2);
+              if (len) {
+                output[_out++] = output[from++];
+                if (len > 1) {
+                  output[_out++] = output[from++];
+                }
+              }
+            }
+          }
+          else if ((op & 64) === 0) {          /* 2nd level distance code */
+            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
+            continue dodist;
+          }
+          else {
+            strm.msg = 'invalid distance code';
+            state.mode = BAD;
+            break top;
+          }
+
+          break; // need to emulate goto via "continue"
+        }
+      }
+      else if ((op & 64) === 0) {              /* 2nd level length code */
+        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
+        continue dolen;
+      }
+      else if (op & 32) {                     /* end-of-block */
+        //Tracevv((stderr, "inflate:         end of block\n"));
+        state.mode = TYPE;
+        break top;
+      }
+      else {
+        strm.msg = 'invalid literal/length code';
+        state.mode = BAD;
+        break top;
+      }
+
+      break; // need to emulate goto via "continue"
+    }
+  } while (_in < last && _out < end);
+
+  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
+  len = bits >> 3;
+  _in -= len;
+  bits -= len << 3;
+  hold &= (1 << bits) - 1;
+
+  /* update state and return */
+  strm.next_in = _in;
+  strm.next_out = _out;
+  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));
+  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));
+  state.hold = hold;
+  state.bits = bits;
+  return;
+};
+
+},{}],35:[function(_dereq_,module,exports){
+'use strict';
+
+
+var utils = _dereq_('../utils/common');
+var adler32 = _dereq_('./adler32');
+var crc32   = _dereq_('./crc32');
+var inflate_fast = _dereq_('./inffast');
+var inflate_table = _dereq_('./inftrees');
+
+var CODES = 0;
+var LENS = 1;
+var DISTS = 2;
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+/* Allowed flush values; see deflate() and inflate() below for details */
+//var Z_NO_FLUSH      = 0;
+//var Z_PARTIAL_FLUSH = 1;
+//var Z_SYNC_FLUSH    = 2;
+//var Z_FULL_FLUSH    = 3;
+var Z_FINISH        = 4;
+var Z_BLOCK         = 5;
+var Z_TREES         = 6;
+
+
+/* Return codes for the compression/decompression functions. Negative values
+ * are errors, positive values are used for special but normal events.
+ */
+var Z_OK            = 0;
+var Z_STREAM_END    = 1;
+var Z_NEED_DICT     = 2;
+//var Z_ERRNO         = -1;
+var Z_STREAM_ERROR  = -2;
+var Z_DATA_ERROR    = -3;
+var Z_MEM_ERROR     = -4;
+var Z_BUF_ERROR     = -5;
+//var Z_VERSION_ERROR = -6;
+
+/* The deflate compression method */
+var Z_DEFLATED  = 8;
+
+
+/* STATES ====================================================================*/
+/* ===========================================================================*/
+
+
+var    HEAD = 1;       /* i: waiting for magic header */
+var    FLAGS = 2;      /* i: waiting for method and flags (gzip) */
+var    TIME = 3;       /* i: waiting for modification time (gzip) */
+var    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */
+var    EXLEN = 5;      /* i: waiting for extra length (gzip) */
+var    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */
+var    NAME = 7;       /* i: waiting for end of file name (gzip) */
+var    COMMENT = 8;    /* i: waiting for end of comment (gzip) */
+var    HCRC = 9;       /* i: waiting for header crc (gzip) */
+var    DICTID = 10;    /* i: waiting for dictionary check value */
+var    DICT = 11;      /* waiting for inflateSetDictionary() call */
+var        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
+var        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */
+var        STORED = 14;    /* i: waiting for stored size (length and complement) */
+var        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */
+var        COPY = 16;      /* i/o: waiting for input or output to copy stored block */
+var        TABLE = 17;     /* i: waiting for dynamic block table lengths */
+var        LENLENS = 18;   /* i: waiting for code length code lengths */
+var        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */
+var            LEN_ = 20;      /* i: same as LEN below, but only first time in */
+var            LEN = 21;       /* i: waiting for length/lit/eob code */
+var            LENEXT = 22;    /* i: waiting for length extra bits */
+var            DIST = 23;      /* i: waiting for distance code */
+var            DISTEXT = 24;   /* i: waiting for distance extra bits */
+var            MATCH = 25;     /* o: waiting for output space to copy string */
+var            LIT = 26;       /* o: waiting for output space to write literal */
+var    CHECK = 27;     /* i: waiting for 32-bit check value */
+var    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */
+var    DONE = 29;      /* finished check, done -- remain here until reset */
+var    BAD = 30;       /* got a data error -- remain here until reset */
+var    MEM = 31;       /* got an inflate() memory error -- remain here until reset */
+var    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */
+
+/* ===========================================================================*/
+
+
+
+var ENOUGH_LENS = 852;
+var ENOUGH_DISTS = 592;
+//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);
+
+var MAX_WBITS = 15;
+/* 32K LZ77 window */
+var DEF_WBITS = MAX_WBITS;
+
+
+function ZSWAP32(q) {
+  return  (((q >>> 24) & 0xff) +
+          ((q >>> 8) & 0xff00) +
+          ((q & 0xff00) << 8) +
+          ((q & 0xff) << 24));
+}
+
+
+function InflateState() {
+  this.mode = 0;             /* current inflate mode */
+  this.last = false;          /* true if processing last block */
+  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
+  this.havedict = false;      /* true if dictionary provided */
+  this.flags = 0;             /* gzip header method and flags (0 if zlib) */
+  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */
+  this.check = 0;             /* protected copy of check value */
+  this.total = 0;             /* protected copy of output count */
+  // TODO: may be {}
+  this.head = null;           /* where to save gzip header information */
+
+  /* sliding window */
+  this.wbits = 0;             /* log base 2 of requested window size */
+  this.wsize = 0;             /* window size or zero if not using window */
+  this.whave = 0;             /* valid bytes in the window */
+  this.wnext = 0;             /* window write index */
+  this.window = null;         /* allocated sliding window, if needed */
+
+  /* bit accumulator */
+  this.hold = 0;              /* input bit accumulator */
+  this.bits = 0;              /* number of bits in "in" */
+
+  /* for string and stored block copying */
+  this.length = 0;            /* literal or length of data to copy */
+  this.offset = 0;            /* distance back to copy string from */
+
+  /* for table and code decoding */
+  this.extra = 0;             /* extra bits needed */
+
+  /* fixed and dynamic code tables */
+  this.lencode = null;          /* starting table for length/literal codes */
+  this.distcode = null;         /* starting table for distance codes */
+  this.lenbits = 0;           /* index bits for lencode */
+  this.distbits = 0;          /* index bits for distcode */
+
+  /* dynamic table building */
+  this.ncode = 0;             /* number of code length code lengths */
+  this.nlen = 0;              /* number of length code lengths */
+  this.ndist = 0;             /* number of distance code lengths */
+  this.have = 0;              /* number of code lengths in lens[] */
+  this.next = null;              /* next available space in codes[] */
+
+  this.lens = new utils.Buf16(320); /* temporary storage for code lengths */
+  this.work = new utils.Buf16(288); /* work area for code table building */
+
+  /*
+   because we don't have pointers in js, we use lencode and distcode directly
+   as buffers so we don't need codes
+  */
+  //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */
+  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */
+  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */
+  this.sane = 0;                   /* if false, allow invalid distance too far */
+  this.back = 0;                   /* bits back of last unprocessed length/lit */
+  this.was = 0;                    /* initial length of match */
+}
+
+function inflateResetKeep(strm) {
+  var state;
+
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+  strm.total_in = strm.total_out = state.total = 0;
+  strm.msg = ''; /*Z_NULL*/
+  if (state.wrap) {       /* to support ill-conceived Java test suite */
+    strm.adler = state.wrap & 1;
+  }
+  state.mode = HEAD;
+  state.last = 0;
+  state.havedict = 0;
+  state.dmax = 32768;
+  state.head = null/*Z_NULL*/;
+  state.hold = 0;
+  state.bits = 0;
+  //state.lencode = state.distcode = state.next = state.codes;
+  state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);
+  state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);
+
+  state.sane = 1;
+  state.back = -1;
+  //Tracev((stderr, "inflate: reset\n"));
+  return Z_OK;
+}
+
+function inflateReset(strm) {
+  var state;
+
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+  state.wsize = 0;
+  state.whave = 0;
+  state.wnext = 0;
+  return inflateResetKeep(strm);
+
+}
+
+function inflateReset2(strm, windowBits) {
+  var wrap;
+  var state;
+
+  /* get the state */
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+
+  /* extract wrap request from windowBits parameter */
+  if (windowBits < 0) {
+    wrap = 0;
+    windowBits = -windowBits;
+  }
+  else {
+    wrap = (windowBits >> 4) + 1;
+    if (windowBits < 48) {
+      windowBits &= 15;
+    }
+  }
+
+  /* set number of window bits, free window if different */
+  if (windowBits && (windowBits < 8 || windowBits > 15)) {
+    return Z_STREAM_ERROR;
+  }
+  if (state.window !== null && state.wbits !== windowBits) {
+    state.window = null;
+  }
+
+  /* update state and reset the rest of it */
+  state.wrap = wrap;
+  state.wbits = windowBits;
+  return inflateReset(strm);
+}
+
+function inflateInit2(strm, windowBits) {
+  var ret;
+  var state;
+
+  if (!strm) { return Z_STREAM_ERROR; }
+  //strm.msg = Z_NULL;                 /* in case we return an error */
+
+  state = new InflateState();
+
+  //if (state === Z_NULL) return Z_MEM_ERROR;
+  //Tracev((stderr, "inflate: allocated\n"));
+  strm.state = state;
+  state.window = null/*Z_NULL*/;
+  ret = inflateReset2(strm, windowBits);
+  if (ret !== Z_OK) {
+    strm.state = null/*Z_NULL*/;
+  }
+  return ret;
+}
+
+function inflateInit(strm) {
+  return inflateInit2(strm, DEF_WBITS);
+}
+
+
+/*
+ Return state with length and distance decoding tables and index sizes set to
+ fixed code decoding.  Normally this returns fixed tables from inffixed.h.
+ If BUILDFIXED is defined, then instead this routine builds the tables the
+ first time it's called, and returns those tables the first time and
+ thereafter.  This reduces the size of the code by about 2K bytes, in
+ exchange for a little execution time.  However, BUILDFIXED should not be
+ used for threaded applications, since the rewriting of the tables and virgin
+ may not be thread-safe.
+ */
+var virgin = true;
+
+var lenfix, distfix; // We have no pointers in JS, so keep tables separate
+
+function fixedtables(state) {
+  /* build fixed huffman tables if first call (may not be thread safe) */
+  if (virgin) {
+    var sym;
+
+    lenfix = new utils.Buf32(512);
+    distfix = new utils.Buf32(32);
+
+    /* literal/length table */
+    sym = 0;
+    while (sym < 144) { state.lens[sym++] = 8; }
+    while (sym < 256) { state.lens[sym++] = 9; }
+    while (sym < 280) { state.lens[sym++] = 7; }
+    while (sym < 288) { state.lens[sym++] = 8; }
+
+    inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, {bits: 9});
+
+    /* distance table */
+    sym = 0;
+    while (sym < 32) { state.lens[sym++] = 5; }
+
+    inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, {bits: 5});
+
+    /* do this just once */
+    virgin = false;
+  }
+
+  state.lencode = lenfix;
+  state.lenbits = 9;
+  state.distcode = distfix;
+  state.distbits = 5;
+}
+
+
+/*
+ Update the window with the last wsize (normally 32K) bytes written before
+ returning.  If window does not exist yet, create it.  This is only called
+ when a window is already in use, or when output has been written during this
+ inflate call, but the end of the deflate stream has not been reached yet.
+ It is also called to create a window for dictionary data when a dictionary
+ is loaded.
+
+ Providing output buffers larger than 32K to inflate() should provide a speed
+ advantage, since only the last 32K of output is copied to the sliding window
+ upon return from inflate(), and since all distances after the first 32K of
+ output will fall in the output data, making match copies simpler and faster.
+ The advantage may be dependent on the size of the processor's data caches.
+ */
+function updatewindow(strm, src, end, copy) {
+  var dist;
+  var state = strm.state;
+
+  /* if it hasn't been done already, allocate space for the window */
+  if (state.window === null) {
+    state.wsize = 1 << state.wbits;
+    state.wnext = 0;
+    state.whave = 0;
+
+    state.window = new utils.Buf8(state.wsize);
+  }
+
+  /* copy state->wsize or less output bytes into the circular window */
+  if (copy >= state.wsize) {
+    utils.arraySet(state.window,src, end - state.wsize, state.wsize, 0);
+    state.wnext = 0;
+    state.whave = state.wsize;
+  }
+  else {
+    dist = state.wsize - state.wnext;
+    if (dist > copy) {
+      dist = copy;
+    }
+    //zmemcpy(state->window + state->wnext, end - copy, dist);
+    utils.arraySet(state.window,src, end - copy, dist, state.wnext);
+    copy -= dist;
+    if (copy) {
+      //zmemcpy(state->window, end - copy, copy);
+      utils.arraySet(state.window,src, end - copy, copy, 0);
+      state.wnext = copy;
+      state.whave = state.wsize;
+    }
+    else {
+      state.wnext += dist;
+      if (state.wnext === state.wsize) { state.wnext = 0; }
+      if (state.whave < state.wsize) { state.whave += dist; }
+    }
+  }
+  return 0;
+}
+
+function inflate(strm, flush) {
+  var state;
+  var input, output;          // input/output buffers
+  var next;                   /* next input INDEX */
+  var put;                    /* next output INDEX */
+  var have, left;             /* available input and output */
+  var hold;                   /* bit buffer */
+  var bits;                   /* bits in bit buffer */
+  var _in, _out;              /* save starting available input and output */
+  var copy;                   /* number of stored or match bytes to copy */
+  var from;                   /* where to copy match bytes from */
+  var from_source;
+  var here = 0;               /* current decoding table entry */
+  var here_bits, here_op, here_val; // paked "here" denormalized (JS specific)
+  //var last;                   /* parent table entry */
+  var last_bits, last_op, last_val; // paked "last" denormalized (JS specific)
+  var len;                    /* length to copy for repeats, bits to drop */
+  var ret;                    /* return code */
+  var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */
+  var opts;
+
+  var n; // temporary var for NEED_BITS
+
+  var order = /* permutation of code lengths */
+    [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
+
+
+  if (!strm || !strm.state || !strm.output ||
+      (!strm.input && strm.avail_in !== 0)) {
+    return Z_STREAM_ERROR;
+  }
+
+  state = strm.state;
+  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */
+
+
+  //--- LOAD() ---
+  put = strm.next_out;
+  output = strm.output;
+  left = strm.avail_out;
+  next = strm.next_in;
+  input = strm.input;
+  have = strm.avail_in;
+  hold = state.hold;
+  bits = state.bits;
+  //---
+
+  _in = have;
+  _out = left;
+  ret = Z_OK;
+
+  inf_leave: // goto emulation
+  for (;;) {
+    switch (state.mode) {
+    case HEAD:
+      if (state.wrap === 0) {
+        state.mode = TYPEDO;
+        break;
+      }
+      //=== NEEDBITS(16);
+      while (bits < 16) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */
+        state.check = 0/*crc32(0L, Z_NULL, 0)*/;
+        //=== CRC2(state.check, hold);
+        hbuf[0] = hold & 0xff;
+        hbuf[1] = (hold >>> 8) & 0xff;
+        state.check = crc32(state.check, hbuf, 2, 0);
+        //===//
+
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        state.mode = FLAGS;
+        break;
+      }
+      state.flags = 0;           /* expect zlib header */
+      if (state.head) {
+        state.head.done = false;
+      }
+      if (!(state.wrap & 1) ||   /* check if zlib header allowed */
+        (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {
+        strm.msg = 'incorrect header check';
+        state.mode = BAD;
+        break;
+      }
+      if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {
+        strm.msg = 'unknown compression method';
+        state.mode = BAD;
+        break;
+      }
+      //--- DROPBITS(4) ---//
+      hold >>>= 4;
+      bits -= 4;
+      //---//
+      len = (hold & 0x0f)/*BITS(4)*/ + 8;
+      if (state.wbits === 0) {
+        state.wbits = len;
+      }
+      else if (len > state.wbits) {
+        strm.msg = 'invalid window size';
+        state.mode = BAD;
+        break;
+      }
+      state.dmax = 1 << len;
+      //Tracev((stderr, "inflate:   zlib header ok\n"));
+      strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
+      state.mode = hold & 0x200 ? DICTID : TYPE;
+      //=== INITBITS();
+      hold = 0;
+      bits = 0;
+      //===//
+      break;
+    case FLAGS:
+      //=== NEEDBITS(16); */
+      while (bits < 16) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      state.flags = hold;
+      if ((state.flags & 0xff) !== Z_DEFLATED) {
+        strm.msg = 'unknown compression method';
+        state.mode = BAD;
+        break;
+      }
+      if (state.flags & 0xe000) {
+        strm.msg = 'unknown header flags set';
+        state.mode = BAD;
+        break;
+      }
+      if (state.head) {
+        state.head.text = ((hold >> 8) & 1);
+      }
+      if (state.flags & 0x0200) {
+        //=== CRC2(state.check, hold);
+        hbuf[0] = hold & 0xff;
+        hbuf[1] = (hold >>> 8) & 0xff;
+        state.check = crc32(state.check, hbuf, 2, 0);
+        //===//
+      }
+      //=== INITBITS();
+      hold = 0;
+      bits = 0;
+      //===//
+      state.mode = TIME;
+      /* falls through */
+    case TIME:
+      //=== NEEDBITS(32); */
+      while (bits < 32) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      if (state.head) {
+        state.head.time = hold;
+      }
+      if (state.flags & 0x0200) {
+        //=== CRC4(state.check, hold)
+        hbuf[0] = hold & 0xff;
+        hbuf[1] = (hold >>> 8) & 0xff;
+        hbuf[2] = (hold >>> 16) & 0xff;
+        hbuf[3] = (hold >>> 24) & 0xff;
+        state.check = crc32(state.check, hbuf, 4, 0);
+        //===
+      }
+      //=== INITBITS();
+      hold = 0;
+      bits = 0;
+      //===//
+      state.mode = OS;
+      /* falls through */
+    case OS:
+      //=== NEEDBITS(16); */
+      while (bits < 16) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      if (state.head) {
+        state.head.xflags = (hold & 0xff);
+        state.head.os = (hold >> 8);
+      }
+      if (state.flags & 0x0200) {
+        //=== CRC2(state.check, hold);
+        hbuf[0] = hold & 0xff;
+        hbuf[1] = (hold >>> 8) & 0xff;
+        state.check = crc32(state.check, hbuf, 2, 0);
+        //===//
+      }
+      //=== INITBITS();
+      hold = 0;
+      bits = 0;
+      //===//
+      state.mode = EXLEN;
+      /* falls through */
+    case EXLEN:
+      if (state.flags & 0x0400) {
+        //=== NEEDBITS(16); */
+        while (bits < 16) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.length = hold;
+        if (state.head) {
+          state.head.extra_len = hold;
+        }
+        if (state.flags & 0x0200) {
+          //=== CRC2(state.check, hold);
+          hbuf[0] = hold & 0xff;
+          hbuf[1] = (hold >>> 8) & 0xff;
+          state.check = crc32(state.check, hbuf, 2, 0);
+          //===//
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+      }
+      else if (state.head) {
+        state.head.extra = null/*Z_NULL*/;
+      }
+      state.mode = EXTRA;
+      /* falls through */
+    case EXTRA:
+      if (state.flags & 0x0400) {
+        copy = state.length;
+        if (copy > have) { copy = have; }
+        if (copy) {
+          if (state.head) {
+            len = state.head.extra_len - state.length;
+            if (!state.head.extra) {
+              // Use untyped array for more conveniend processing later
+              state.head.extra = new Array(state.head.extra_len);
+            }
+            utils.arraySet(
+              state.head.extra,
+              input,
+              next,
+              // extra field is limited to 65536 bytes
+              // - no need for additional size check
+              copy,
+              /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
+              len
+            );
+            //zmemcpy(state.head.extra + len, next,
+            //        len + copy > state.head.extra_max ?
+            //        state.head.extra_max - len : copy);
+          }
+          if (state.flags & 0x0200) {
+            state.check = crc32(state.check, input, copy, next);
+          }
+          have -= copy;
+          next += copy;
+          state.length -= copy;
+        }
+        if (state.length) { break inf_leave; }
+      }
+      state.length = 0;
+      state.mode = NAME;
+      /* falls through */
+    case NAME:
+      if (state.flags & 0x0800) {
+        if (have === 0) { break inf_leave; }
+        copy = 0;
+        do {
+          // TODO: 2 or 1 bytes?
+          len = input[next + copy++];
+          /* use constant limit because in js we should not preallocate memory */
+          if (state.head && len &&
+              (state.length < 65536 /*state.head.name_max*/)) {
+            state.head.name += String.fromCharCode(len);
+          }
+        } while (len && copy < have);
+
+        if (state.flags & 0x0200) {
+          state.check = crc32(state.check, input, copy, next);
+        }
+        have -= copy;
+        next += copy;
+        if (len) { break inf_leave; }
+      }
+      else if (state.head) {
+        state.head.name = null;
+      }
+      state.length = 0;
+      state.mode = COMMENT;
+      /* falls through */
+    case COMMENT:
+      if (state.flags & 0x1000) {
+        if (have === 0) { break inf_leave; }
+        copy = 0;
+        do {
+          len = input[next + copy++];
+          /* use constant limit because in js we should not preallocate memory */
+          if (state.head && len &&
+              (state.length < 65536 /*state.head.comm_max*/)) {
+            state.head.comment += String.fromCharCode(len);
+          }
+        } while (len && copy < have);
+        if (state.flags & 0x0200) {
+          state.check = crc32(state.check, input, copy, next);
+        }
+        have -= copy;
+        next += copy;
+        if (len) { break inf_leave; }
+      }
+      else if (state.head) {
+        state.head.comment = null;
+      }
+      state.mode = HCRC;
+      /* falls through */
+    case HCRC:
+      if (state.flags & 0x0200) {
+        //=== NEEDBITS(16); */
+        while (bits < 16) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        if (hold !== (state.check & 0xffff)) {
+          strm.msg = 'header crc mismatch';
+          state.mode = BAD;
+          break;
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+      }
+      if (state.head) {
+        state.head.hcrc = ((state.flags >> 9) & 1);
+        state.head.done = true;
+      }
+      strm.adler = state.check = 0 /*crc32(0L, Z_NULL, 0)*/;
+      state.mode = TYPE;
+      break;
+    case DICTID:
+      //=== NEEDBITS(32); */
+      while (bits < 32) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      strm.adler = state.check = ZSWAP32(hold);
+      //=== INITBITS();
+      hold = 0;
+      bits = 0;
+      //===//
+      state.mode = DICT;
+      /* falls through */
+    case DICT:
+      if (state.havedict === 0) {
+        //--- RESTORE() ---
+        strm.next_out = put;
+        strm.avail_out = left;
+        strm.next_in = next;
+        strm.avail_in = have;
+        state.hold = hold;
+        state.bits = bits;
+        //---
+        return Z_NEED_DICT;
+      }
+      strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
+      state.mode = TYPE;
+      /* falls through */
+    case TYPE:
+      if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }
+      /* falls through */
+    case TYPEDO:
+      if (state.last) {
+        //--- BYTEBITS() ---//
+        hold >>>= bits & 7;
+        bits -= bits & 7;
+        //---//
+        state.mode = CHECK;
+        break;
+      }
+      //=== NEEDBITS(3); */
+      while (bits < 3) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      state.last = (hold & 0x01)/*BITS(1)*/;
+      //--- DROPBITS(1) ---//
+      hold >>>= 1;
+      bits -= 1;
+      //---//
+
+      switch ((hold & 0x03)/*BITS(2)*/) {
+      case 0:                             /* stored block */
+        //Tracev((stderr, "inflate:     stored block%s\n",
+        //        state.last ? " (last)" : ""));
+        state.mode = STORED;
+        break;
+      case 1:                             /* fixed block */
+        fixedtables(state);
+        //Tracev((stderr, "inflate:     fixed codes block%s\n",
+        //        state.last ? " (last)" : ""));
+        state.mode = LEN_;             /* decode codes */
+        if (flush === Z_TREES) {
+          //--- DROPBITS(2) ---//
+          hold >>>= 2;
+          bits -= 2;
+          //---//
+          break inf_leave;
+        }
+        break;
+      case 2:                             /* dynamic block */
+        //Tracev((stderr, "inflate:     dynamic codes block%s\n",
+        //        state.last ? " (last)" : ""));
+        state.mode = TABLE;
+        break;
+      case 3:
+        strm.msg = 'invalid block type';
+        state.mode = BAD;
+      }
+      //--- DROPBITS(2) ---//
+      hold >>>= 2;
+      bits -= 2;
+      //---//
+      break;
+    case STORED:
+      //--- BYTEBITS() ---// /* go to byte boundary */
+      hold >>>= bits & 7;
+      bits -= bits & 7;
+      //---//
+      //=== NEEDBITS(32); */
+      while (bits < 32) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {
+        strm.msg = 'invalid stored block lengths';
+        state.mode = BAD;
+        break;
+      }
+      state.length = hold & 0xffff;
+      //Tracev((stderr, "inflate:       stored length %u\n",
+      //        state.length));
+      //=== INITBITS();
+      hold = 0;
+      bits = 0;
+      //===//
+      state.mode = COPY_;
+      if (flush === Z_TREES) { break inf_leave; }
+      /* falls through */
+    case COPY_:
+      state.mode = COPY;
+      /* falls through */
+    case COPY:
+      copy = state.length;
+      if (copy) {
+        if (copy > have) { copy = have; }
+        if (copy > left) { copy = left; }
+        if (copy === 0) { break inf_leave; }
+        //--- zmemcpy(put, next, copy); ---
+        utils.arraySet(output, input, next, copy, put);
+        //---//
+        have -= copy;
+        next += copy;
+        left -= copy;
+        put += copy;
+        state.length -= copy;
+        break;
+      }
+      //Tracev((stderr, "inflate:       stored end\n"));
+      state.mode = TYPE;
+      break;
+    case TABLE:
+      //=== NEEDBITS(14); */
+      while (bits < 14) {
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+      }
+      //===//
+      state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;
+      //--- DROPBITS(5) ---//
+      hold >>>= 5;
+      bits -= 5;
+      //---//
+      state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;
+      //--- DROPBITS(5) ---//
+      hold >>>= 5;
+      bits -= 5;
+      //---//
+      state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;
+      //--- DROPBITS(4) ---//
+      hold >>>= 4;
+      bits -= 4;
+      //---//
+//#ifndef PKZIP_BUG_WORKAROUND
+      if (state.nlen > 286 || state.ndist > 30) {
+        strm.msg = 'too many length or distance symbols';
+        state.mode = BAD;
+        break;
+      }
+//#endif
+      //Tracev((stderr, "inflate:       table sizes ok\n"));
+      state.have = 0;
+      state.mode = LENLENS;
+      /* falls through */
+    case LENLENS:
+      while (state.have < state.ncode) {
+        //=== NEEDBITS(3);
+        while (bits < 3) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);
+        //--- DROPBITS(3) ---//
+        hold >>>= 3;
+        bits -= 3;
+        //---//
+      }
+      while (state.have < 19) {
+        state.lens[order[state.have++]] = 0;
+      }
+      // We have separate tables & no pointers. 2 commented lines below not needed.
+      //state.next = state.codes;
+      //state.lencode = state.next;
+      // Switch to use dynamic table
+      state.lencode = state.lendyn;
+      state.lenbits = 7;
+
+      opts = {bits: state.lenbits};
+      ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
+      state.lenbits = opts.bits;
+
+      if (ret) {
+        strm.msg = 'invalid code lengths set';
+        state.mode = BAD;
+        break;
+      }
+      //Tracev((stderr, "inflate:       code lengths ok\n"));
+      state.have = 0;
+      state.mode = CODELENS;
+      /* falls through */
+    case CODELENS:
+      while (state.have < state.nlen + state.ndist) {
+        for (;;) {
+          here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/
+          here_bits = here >>> 24;
+          here_op = (here >>> 16) & 0xff;
+          here_val = here & 0xffff;
+
+          if ((here_bits) <= bits) { break; }
+          //--- PULLBYTE() ---//
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+          //---//
+        }
+        if (here_val < 16) {
+          //--- DROPBITS(here.bits) ---//
+          hold >>>= here_bits;
+          bits -= here_bits;
+          //---//
+          state.lens[state.have++] = here_val;
+        }
+        else {
+          if (here_val === 16) {
+            //=== NEEDBITS(here.bits + 2);
+            n = here_bits + 2;
+            while (bits < n) {
+              if (have === 0) { break inf_leave; }
+              have--;
+              hold += input[next++] << bits;
+              bits += 8;
+            }
+            //===//
+            //--- DROPBITS(here.bits) ---//
+            hold >>>= here_bits;
+            bits -= here_bits;
+            //---//
+            if (state.have === 0) {
+              strm.msg = 'invalid bit length repeat';
+              state.mode = BAD;
+              break;
+            }
+            len = state.lens[state.have - 1];
+            copy = 3 + (hold & 0x03);//BITS(2);
+            //--- DROPBITS(2) ---//
+            hold >>>= 2;
+            bits -= 2;
+            //---//
+          }
+          else if (here_val === 17) {
+            //=== NEEDBITS(here.bits + 3);
+            n = here_bits + 3;
+            while (bits < n) {
+              if (have === 0) { break inf_leave; }
+              have--;
+              hold += input[next++] << bits;
+              bits += 8;
+            }
+            //===//
+            //--- DROPBITS(here.bits) ---//
+            hold >>>= here_bits;
+            bits -= here_bits;
+            //---//
+            len = 0;
+            copy = 3 + (hold & 0x07);//BITS(3);
+            //--- DROPBITS(3) ---//
+            hold >>>= 3;
+            bits -= 3;
+            //---//
+          }
+          else {
+            //=== NEEDBITS(here.bits + 7);
+            n = here_bits + 7;
+            while (bits < n) {
+              if (have === 0) { break inf_leave; }
+              have--;
+              hold += input[next++] << bits;
+              bits += 8;
+            }
+            //===//
+            //--- DROPBITS(here.bits) ---//
+            hold >>>= here_bits;
+            bits -= here_bits;
+            //---//
+            len = 0;
+            copy = 11 + (hold & 0x7f);//BITS(7);
+            //--- DROPBITS(7) ---//
+            hold >>>= 7;
+            bits -= 7;
+            //---//
+          }
+          if (state.have + copy > state.nlen + state.ndist) {
+            strm.msg = 'invalid bit length repeat';
+            state.mode = BAD;
+            break;
+          }
+          while (copy--) {
+            state.lens[state.have++] = len;
+          }
+        }
+      }
+
+      /* handle error breaks in while */
+      if (state.mode === BAD) { break; }
+
+      /* check for end-of-block code (better have one) */
+      if (state.lens[256] === 0) {
+        strm.msg = 'invalid code -- missing end-of-block';
+        state.mode = BAD;
+        break;
+      }
+
+      /* build code tables -- note: do not change the lenbits or distbits
+         values here (9 and 6) without reading the comments in inftrees.h
+         concerning the ENOUGH constants, which depend on those values */
+      state.lenbits = 9;
+
+      opts = {bits: state.lenbits};
+      ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
+      // We have separate tables & no pointers. 2 commented lines below not needed.
+      // state.next_index = opts.table_index;
+      state.lenbits = opts.bits;
+      // state.lencode = state.next;
+
+      if (ret) {
+        strm.msg = 'invalid literal/lengths set';
+        state.mode = BAD;
+        break;
+      }
+
+      state.distbits = 6;
+      //state.distcode.copy(state.codes);
+      // Switch to use dynamic table
+      state.distcode = state.distdyn;
+      opts = {bits: state.distbits};
+      ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
+      // We have separate tables & no pointers. 2 commented lines below not needed.
+      // state.next_index = opts.table_index;
+      state.distbits = opts.bits;
+      // state.distcode = state.next;
+
+      if (ret) {
+        strm.msg = 'invalid distances set';
+        state.mode = BAD;
+        break;
+      }
+      //Tracev((stderr, 'inflate:       codes ok\n'));
+      state.mode = LEN_;
+      if (flush === Z_TREES) { break inf_leave; }
+      /* falls through */
+    case LEN_:
+      state.mode = LEN;
+      /* falls through */
+    case LEN:
+      if (have >= 6 && left >= 258) {
+        //--- RESTORE() ---
+        strm.next_out = put;
+        strm.avail_out = left;
+        strm.next_in = next;
+        strm.avail_in = have;
+        state.hold = hold;
+        state.bits = bits;
+        //---
+        inflate_fast(strm, _out);
+        //--- LOAD() ---
+        put = strm.next_out;
+        output = strm.output;
+        left = strm.avail_out;
+        next = strm.next_in;
+        input = strm.input;
+        have = strm.avail_in;
+        hold = state.hold;
+        bits = state.bits;
+        //---
+
+        if (state.mode === TYPE) {
+          state.back = -1;
+        }
+        break;
+      }
+      state.back = 0;
+      for (;;) {
+        here = state.lencode[hold & ((1 << state.lenbits) -1)];  /*BITS(state.lenbits)*/
+        here_bits = here >>> 24;
+        here_op = (here >>> 16) & 0xff;
+        here_val = here & 0xffff;
+
+        if (here_bits <= bits) { break; }
+        //--- PULLBYTE() ---//
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+        //---//
+      }
+      if (here_op && (here_op & 0xf0) === 0) {
+        last_bits = here_bits;
+        last_op = here_op;
+        last_val = here_val;
+        for (;;) {
+          here = state.lencode[last_val +
+                  ((hold & ((1 << (last_bits + last_op)) -1))/*BITS(last.bits + last.op)*/ >> last_bits)];
+          here_bits = here >>> 24;
+          here_op = (here >>> 16) & 0xff;
+          here_val = here & 0xffff;
+
+          if ((last_bits + here_bits) <= bits) { break; }
+          //--- PULLBYTE() ---//
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+          //---//
+        }
+        //--- DROPBITS(last.bits) ---//
+        hold >>>= last_bits;
+        bits -= last_bits;
+        //---//
+        state.back += last_bits;
+      }
+      //--- DROPBITS(here.bits) ---//
+      hold >>>= here_bits;
+      bits -= here_bits;
+      //---//
+      state.back += here_bits;
+      state.length = here_val;
+      if (here_op === 0) {
+        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+        //        "inflate:         literal '%c'\n" :
+        //        "inflate:         literal 0x%02x\n", here.val));
+        state.mode = LIT;
+        break;
+      }
+      if (here_op & 32) {
+        //Tracevv((stderr, "inflate:         end of block\n"));
+        state.back = -1;
+        state.mode = TYPE;
+        break;
+      }
+      if (here_op & 64) {
+        strm.msg = 'invalid literal/length code';
+        state.mode = BAD;
+        break;
+      }
+      state.extra = here_op & 15;
+      state.mode = LENEXT;
+      /* falls through */
+    case LENEXT:
+      if (state.extra) {
+        //=== NEEDBITS(state.extra);
+        n = state.extra;
+        while (bits < n) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.length += hold & ((1 << state.extra) -1)/*BITS(state.extra)*/;
+        //--- DROPBITS(state.extra) ---//
+        hold >>>= state.extra;
+        bits -= state.extra;
+        //---//
+        state.back += state.extra;
+      }
+      //Tracevv((stderr, "inflate:         length %u\n", state.length));
+      state.was = state.length;
+      state.mode = DIST;
+      /* falls through */
+    case DIST:
+      for (;;) {
+        here = state.distcode[hold & ((1 << state.distbits) -1)];/*BITS(state.distbits)*/
+        here_bits = here >>> 24;
+        here_op = (here >>> 16) & 0xff;
+        here_val = here & 0xffff;
+
+        if ((here_bits) <= bits) { break; }
+        //--- PULLBYTE() ---//
+        if (have === 0) { break inf_leave; }
+        have--;
+        hold += input[next++] << bits;
+        bits += 8;
+        //---//
+      }
+      if ((here_op & 0xf0) === 0) {
+        last_bits = here_bits;
+        last_op = here_op;
+        last_val = here_val;
+        for (;;) {
+          here = state.distcode[last_val +
+                  ((hold & ((1 << (last_bits + last_op)) -1))/*BITS(last.bits + last.op)*/ >> last_bits)];
+          here_bits = here >>> 24;
+          here_op = (here >>> 16) & 0xff;
+          here_val = here & 0xffff;
+
+          if ((last_bits + here_bits) <= bits) { break; }
+          //--- PULLBYTE() ---//
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+          //---//
+        }
+        //--- DROPBITS(last.bits) ---//
+        hold >>>= last_bits;
+        bits -= last_bits;
+        //---//
+        state.back += last_bits;
+      }
+      //--- DROPBITS(here.bits) ---//
+      hold >>>= here_bits;
+      bits -= here_bits;
+      //---//
+      state.back += here_bits;
+      if (here_op & 64) {
+        strm.msg = 'invalid distance code';
+        state.mode = BAD;
+        break;
+      }
+      state.offset = here_val;
+      state.extra = (here_op) & 15;
+      state.mode = DISTEXT;
+      /* falls through */
+    case DISTEXT:
+      if (state.extra) {
+        //=== NEEDBITS(state.extra);
+        n = state.extra;
+        while (bits < n) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.offset += hold & ((1 << state.extra) -1)/*BITS(state.extra)*/;
+        //--- DROPBITS(state.extra) ---//
+        hold >>>= state.extra;
+        bits -= state.extra;
+        //---//
+        state.back += state.extra;
+      }
+//#ifdef INFLATE_STRICT
+      if (state.offset > state.dmax) {
+        strm.msg = 'invalid distance too far back';
+        state.mode = BAD;
+        break;
+      }
+//#endif
+      //Tracevv((stderr, "inflate:         distance %u\n", state.offset));
+      state.mode = MATCH;
+      /* falls through */
+    case MATCH:
+      if (left === 0) { break inf_leave; }
+      copy = _out - left;
+      if (state.offset > copy) {         /* copy from window */
+        copy = state.offset - copy;
+        if (copy > state.whave) {
+          if (state.sane) {
+            strm.msg = 'invalid distance too far back';
+            state.mode = BAD;
+            break;
+          }
+// (!) This block is disabled in zlib defailts,
+// don't enable it for binary compatibility
+//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+//          Trace((stderr, "inflate.c too far\n"));
+//          copy -= state.whave;
+//          if (copy > state.length) { copy = state.length; }
+//          if (copy > left) { copy = left; }
+//          left -= copy;
+//          state.length -= copy;
+//          do {
+//            output[put++] = 0;
+//          } while (--copy);
+//          if (state.length === 0) { state.mode = LEN; }
+//          break;
+//#endif
+        }
+        if (copy > state.wnext) {
+          copy -= state.wnext;
+          from = state.wsize - copy;
+        }
+        else {
+          from = state.wnext - copy;
+        }
+        if (copy > state.length) { copy = state.length; }
+        from_source = state.window;
+      }
+      else {                              /* copy from output */
+        from_source = output;
+        from = put - state.offset;
+        copy = state.length;
+      }
+      if (copy > left) { copy = left; }
+      left -= copy;
+      state.length -= copy;
+      do {
+        output[put++] = from_source[from++];
+      } while (--copy);
+      if (state.length === 0) { state.mode = LEN; }
+      break;
+    case LIT:
+      if (left === 0) { break inf_leave; }
+      output[put++] = state.length;
+      left--;
+      state.mode = LEN;
+      break;
+    case CHECK:
+      if (state.wrap) {
+        //=== NEEDBITS(32);
+        while (bits < 32) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          // Use '|' insdead of '+' to make sure that result is signed
+          hold |= input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        _out -= left;
+        strm.total_out += _out;
+        state.total += _out;
+        if (_out) {
+          strm.adler = state.check =
+              /*UPDATE(state.check, put - _out, _out);*/
+              (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));
+
+        }
+        _out = left;
+        // NB: crc32 stored as signed 32-bit int, ZSWAP32 returns signed too
+        if ((state.flags ? hold : ZSWAP32(hold)) !== state.check) {
+          strm.msg = 'incorrect data check';
+          state.mode = BAD;
+          break;
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        //Tracev((stderr, "inflate:   check matches trailer\n"));
+      }
+      state.mode = LENGTH;
+      /* falls through */
+    case LENGTH:
+      if (state.wrap && state.flags) {
+        //=== NEEDBITS(32);
+        while (bits < 32) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        if (hold !== (state.total & 0xffffffff)) {
+          strm.msg = 'incorrect length check';
+          state.mode = BAD;
+          break;
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        //Tracev((stderr, "inflate:   length matches trailer\n"));
+      }
+      state.mode = DONE;
+      /* falls through */
+    case DONE:
+      ret = Z_STREAM_END;
+      break inf_leave;
+    case BAD:
+      ret = Z_DATA_ERROR;
+      break inf_leave;
+    case MEM:
+      return Z_MEM_ERROR;
+    case SYNC:
+      /* falls through */
+    default:
+      return Z_STREAM_ERROR;
+    }
+  }
+
+  // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave"
+
+  /*
+     Return from inflate(), updating the total counts and the check value.
+     If there was no progress during the inflate() call, return a buffer
+     error.  Call updatewindow() to create and/or update the window state.
+     Note: a memory error from inflate() is non-recoverable.
+   */
+
+  //--- RESTORE() ---
+  strm.next_out = put;
+  strm.avail_out = left;
+  strm.next_in = next;
+  strm.avail_in = have;
+  state.hold = hold;
+  state.bits = bits;
+  //---
+
+  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&
+                      (state.mode < CHECK || flush !== Z_FINISH))) {
+    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {
+      state.mode = MEM;
+      return Z_MEM_ERROR;
+    }
+  }
+  _in -= strm.avail_in;
+  _out -= strm.avail_out;
+  strm.total_in += _in;
+  strm.total_out += _out;
+  state.total += _out;
+  if (state.wrap && _out) {
+    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/
+      (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));
+  }
+  strm.data_type = state.bits + (state.last ? 64 : 0) +
+                    (state.mode === TYPE ? 128 : 0) +
+                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
+  if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {
+    ret = Z_BUF_ERROR;
+  }
+  return ret;
+}
+
+function inflateEnd(strm) {
+
+  if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {
+    return Z_STREAM_ERROR;
+  }
+
+  var state = strm.state;
+  if (state.window) {
+    state.window = null;
+  }
+  strm.state = null;
+  return Z_OK;
+}
+
+function inflateGetHeader(strm, head) {
+  var state;
+
+  /* check state */
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }
+
+  /* save header structure */
+  state.head = head;
+  head.done = false;
+  return Z_OK;
+}
+
+
+exports.inflateReset = inflateReset;
+exports.inflateReset2 = inflateReset2;
+exports.inflateResetKeep = inflateResetKeep;
+exports.inflateInit = inflateInit;
+exports.inflateInit2 = inflateInit2;
+exports.inflate = inflate;
+exports.inflateEnd = inflateEnd;
+exports.inflateGetHeader = inflateGetHeader;
+exports.inflateInfo = 'pako inflate (from Nodeca project)';
+
+/* Not implemented
+exports.inflateCopy = inflateCopy;
+exports.inflateGetDictionary = inflateGetDictionary;
+exports.inflateMark = inflateMark;
+exports.inflatePrime = inflatePrime;
+exports.inflateSetDictionary = inflateSetDictionary;
+exports.inflateSync = inflateSync;
+exports.inflateSyncPoint = inflateSyncPoint;
+exports.inflateUndermine = inflateUndermine;
+*/
+},{"../utils/common":27,"./adler32":29,"./crc32":31,"./inffast":34,"./inftrees":36}],36:[function(_dereq_,module,exports){
+'use strict';
+
+
+var utils = _dereq_('../utils/common');
+
+var MAXBITS = 15;
+var ENOUGH_LENS = 852;
+var ENOUGH_DISTS = 592;
+//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);
+
+var CODES = 0;
+var LENS = 1;
+var DISTS = 2;
+
+var lbase = [ /* Length codes 257..285 base */
+  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
+  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0
+];
+
+var lext = [ /* Length codes 257..285 extra */
+  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
+  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78
+];
+
+var dbase = [ /* Distance codes 0..29 base */
+  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
+  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
+  8193, 12289, 16385, 24577, 0, 0
+];
+
+var dext = [ /* Distance codes 0..29 extra */
+  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
+  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
+  28, 28, 29, 29, 64, 64
+];
+
+module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)
+{
+  var bits = opts.bits;
+      //here = opts.here; /* table entry for duplication */
+
+  var len = 0;               /* a code's length in bits */
+  var sym = 0;               /* index of code symbols */
+  var min = 0, max = 0;          /* minimum and maximum code lengths */
+  var root = 0;              /* number of index bits for root table */
+  var curr = 0;              /* number of index bits for current table */
+  var drop = 0;              /* code bits to drop for sub-table */
+  var left = 0;                   /* number of prefix codes available */
+  var used = 0;              /* code entries in table used */
+  var huff = 0;              /* Huffman code */
+  var incr;              /* for incrementing code, index */
+  var fill;              /* index for replicating entries */
+  var low;               /* low bits for current root entry */
+  var mask;              /* mask for low root bits */
+  var next;             /* next available space in table */
+  var base = null;     /* base value table to use */
+  var base_index = 0;
+//  var shoextra;    /* extra bits table to use */
+  var end;                    /* use base and extra for symbol > end */
+  var count = new utils.Buf16(MAXBITS+1); //[MAXBITS+1];    /* number of codes of each length */
+  var offs = new utils.Buf16(MAXBITS+1); //[MAXBITS+1];     /* offsets in table for each length */
+  var extra = null;
+  var extra_index = 0;
+
+  var here_bits, here_op, here_val;
+
+  /*
+   Process a set of code lengths to create a canonical Huffman code.  The
+   code lengths are lens[0..codes-1].  Each length corresponds to the
+   symbols 0..codes-1.  The Huffman code is generated by first sorting the
+   symbols by length from short to long, and retaining the symbol order
+   for codes with equal lengths.  Then the code starts with all zero bits
+   for the first code of the shortest length, and the codes are integer
+   increments for the same length, and zeros are appended as the length
+   increases.  For the deflate format, these bits are stored backwards
+   from their more natural integer increment ordering, and so when the
+   decoding tables are built in the large loop below, the integer codes
+   are incremented backwards.
+
+   This routine assumes, but does not check, that all of the entries in
+   lens[] are in the range 0..MAXBITS.  The caller must assure this.
+   1..MAXBITS is interpreted as that code length.  zero means that that
+   symbol does not occur in this code.
+
+   The codes are sorted by computing a count of codes for each length,
+   creating from that a table of starting indices for each length in the
+   sorted table, and then entering the symbols in order in the sorted
+   table.  The sorted table is work[], with that space being provided by
+   the caller.
+
+   The length counts are used for other purposes as well, i.e. finding
+   the minimum and maximum length codes, determining if there are any
+   codes at all, checking for a valid set of lengths, and looking ahead
+   at length counts to determine sub-table sizes when building the
+   decoding tables.
+   */
+
+  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
+  for (len = 0; len <= MAXBITS; len++) {
+    count[len] = 0;
+  }
+  for (sym = 0; sym < codes; sym++) {
+    count[lens[lens_index + sym]]++;
+  }
+
+  /* bound code lengths, force root to be within code lengths */
+  root = bits;
+  for (max = MAXBITS; max >= 1; max--) {
+    if (count[max] !== 0) { break; }
+  }
+  if (root > max) {
+    root = max;
+  }
+  if (max === 0) {                     /* no symbols to code at all */
+    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */
+    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;
+    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;
+    table[table_index++] = (1 << 24) | (64 << 16) | 0;
+
+
+    //table.op[opts.table_index] = 64;
+    //table.bits[opts.table_index] = 1;
+    //table.val[opts.table_index++] = 0;
+    table[table_index++] = (1 << 24) | (64 << 16) | 0;
+
+    opts.bits = 1;
+    return 0;     /* no symbols, but wait for decoding to report error */
+  }
+  for (min = 1; min < max; min++) {
+    if (count[min] !== 0) { break; }
+  }
+  if (root < min) {
+    root = min;
+  }
+
+  /* check for an over-subscribed or incomplete set of lengths */
+  left = 1;
+  for (len = 1; len <= MAXBITS; len++) {
+    left <<= 1;
+    left -= count[len];
+    if (left < 0) {
+      return -1;
+    }        /* over-subscribed */
+  }
+  if (left > 0 && (type === CODES || max !== 1)) {
+    return -1;                      /* incomplete set */
+  }
+
+  /* generate offsets into symbol table for each length for sorting */
+  offs[1] = 0;
+  for (len = 1; len < MAXBITS; len++) {
+    offs[len + 1] = offs[len] + count[len];
+  }
+
+  /* sort symbols by length, by symbol order within each length */
+  for (sym = 0; sym < codes; sym++) {
+    if (lens[lens_index + sym] !== 0) {
+      work[offs[lens[lens_index + sym]]++] = sym;
+    }
+  }
+
+  /*
+   Create and fill in decoding tables.  In this loop, the table being
+   filled is at next and has curr index bits.  The code being used is huff
+   with length len.  That code is converted to an index by dropping drop
+   bits off of the bottom.  For codes where len is less than drop + curr,
+   those top drop + curr - len bits are incremented through all values to
+   fill the table with replicated entries.
+
+   root is the number of index bits for the root table.  When len exceeds
+   root, sub-tables are created pointed to by the root entry with an index
+   of the low root bits of huff.  This is saved in low to check for when a
+   new sub-table should be started.  drop is zero when the root table is
+   being filled, and drop is root when sub-tables are being filled.
+
+   When a new sub-table is needed, it is necessary to look ahead in the
+   code lengths to determine what size sub-table is needed.  The length
+   counts are used for this, and so count[] is decremented as codes are
+   entered in the tables.
+
+   used keeps track of how many table entries have been allocated from the
+   provided *table space.  It is checked for LENS and DIST tables against
+   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
+   the initial root table size constants.  See the comments in inftrees.h
+   for more information.
+
+   sym increments through all symbols, and the loop terminates when
+   all codes of length max, i.e. all codes, have been processed.  This
+   routine permits incomplete codes, so another loop after this one fills
+   in the rest of the decoding tables with invalid code markers.
+   */
+
+  /* set up for code type */
+  // poor man optimization - use if-else instead of switch,
+  // to avoid deopts in old v8
+  if (type === CODES) {
+      base = extra = work;    /* dummy value--not used */
+      end = 19;
+  } else if (type === LENS) {
+      base = lbase;
+      base_index -= 257;
+      extra = lext;
+      extra_index -= 257;
+      end = 256;
+  } else {                    /* DISTS */
+      base = dbase;
+      extra = dext;
+      end = -1;
+  }
+
+  /* initialize opts for loop */
+  huff = 0;                   /* starting code */
+  sym = 0;                    /* starting code symbol */
+  len = min;                  /* starting code length */
+  next = table_index;              /* current table to fill in */
+  curr = root;                /* current table index bits */
+  drop = 0;                   /* current bits to drop from code for index */
+  low = -1;                   /* trigger new sub-table when len > root */
+  used = 1 << root;          /* use root table entries */
+  mask = used - 1;            /* mask for comparing low */
+
+  /* check available table space */
+  if ((type === LENS && used > ENOUGH_LENS) ||
+    (type === DISTS && used > ENOUGH_DISTS)) {
+    return 1;
+  }
+
+  var i=0;
+  /* process all codes and make table entries */
+  for (;;) {
+    i++;
+    /* create table entry */
+    here_bits = len - drop;
+    if (work[sym] < end) {
+      here_op = 0;
+      here_val = work[sym];
+    }
+    else if (work[sym] > end) {
+      here_op = extra[extra_index + work[sym]];
+      here_val = base[base_index + work[sym]];
+    }
+    else {
+      here_op = 32 + 64;         /* end of block */
+      here_val = 0;
+    }
+
+    /* replicate for those indices with low len bits equal to huff */
+    incr = 1 << (len - drop);
+    fill = 1 << curr;
+    min = fill;                 /* save offset to next table */
+    do {
+      fill -= incr;
+      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;
+    } while (fill !== 0);
+
+    /* backwards increment the len-bit code huff */
+    incr = 1 << (len - 1);
+    while (huff & incr) {
+      incr >>= 1;
+    }
+    if (incr !== 0) {
+      huff &= incr - 1;
+      huff += incr;
+    } else {
+      huff = 0;
+    }
+
+    /* go to next symbol, update count, len */
+    sym++;
+    if (--count[len] === 0) {
+      if (len === max) { break; }
+      len = lens[lens_index + work[sym]];
+    }
+
+    /* create new sub-table if needed */
+    if (len > root && (huff & mask) !== low) {
+      /* if first time, transition to sub-tables */
+      if (drop === 0) {
+        drop = root;
+      }
+
+      /* increment past last table */
+      next += min;            /* here min is 1 << curr */
+
+      /* determine length of next table */
+      curr = len - drop;
+      left = 1 << curr;
+      while (curr + drop < max) {
+        left -= count[curr + drop];
+        if (left <= 0) { break; }
+        curr++;
+        left <<= 1;
+      }
+
+      /* check for enough space */
+      used += 1 << curr;
+      if ((type === LENS && used > ENOUGH_LENS) ||
+        (type === DISTS && used > ENOUGH_DISTS)) {
+        return 1;
+      }
+
+      /* point entry in root table to sub-table */
+      low = huff & mask;
+      /*table.op[low] = curr;
+      table.bits[low] = root;
+      table.val[low] = next - opts.table_index;*/
+      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;
+    }
+  }
+
+  /* fill in remaining table entry if code is incomplete (guaranteed to have
+   at most one remaining entry, since if the code is incomplete, the
+   maximum code length that was allowed to get this far is one bit) */
+  if (huff !== 0) {
+    //table.op[next + huff] = 64;            /* invalid code marker */
+    //table.bits[next + huff] = len - drop;
+    //table.val[next + huff] = 0;
+    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;
+  }
+
+  /* set return parameters */
+  //opts.table_index += used;
+  opts.bits = root;
+  return 0;
+};
+
+},{"../utils/common":27}],37:[function(_dereq_,module,exports){
+'use strict';
+
+module.exports = {
+  '2':    'need dictionary',     /* Z_NEED_DICT       2  */
+  '1':    'stream end',          /* Z_STREAM_END      1  */
+  '0':    '',                    /* Z_OK              0  */
+  '-1':   'file error',          /* Z_ERRNO         (-1) */
+  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */
+  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */
+  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */
+  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */
+  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */
+};
+},{}],38:[function(_dereq_,module,exports){
+'use strict';
+
+
+var utils = _dereq_('../utils/common');
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+//var Z_FILTERED          = 1;
+//var Z_HUFFMAN_ONLY      = 2;
+//var Z_RLE               = 3;
+var Z_FIXED               = 4;
+//var Z_DEFAULT_STRATEGY  = 0;
+
+/* Possible values of the data_type field (though see inflate()) */
+var Z_BINARY              = 0;
+var Z_TEXT                = 1;
+//var Z_ASCII             = 1; // = Z_TEXT
+var Z_UNKNOWN             = 2;
+
+/*============================================================================*/
+
+
+function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
+
+// From zutil.h
+
+var STORED_BLOCK = 0;
+var STATIC_TREES = 1;
+var DYN_TREES    = 2;
+/* The three kinds of block type */
+
+var MIN_MATCH    = 3;
+var MAX_MATCH    = 258;
+/* The minimum and maximum match lengths */
+
+// From deflate.h
+/* ===========================================================================
+ * Internal compression state.
+ */
+
+var LENGTH_CODES  = 29;
+/* number of length codes, not counting the special END_BLOCK code */
+
+var LITERALS      = 256;
+/* number of literal bytes 0..255 */
+
+var L_CODES       = LITERALS + 1 + LENGTH_CODES;
+/* number of Literal or Length codes, including the END_BLOCK code */
+
+var D_CODES       = 30;
+/* number of distance codes */
+
+var BL_CODES      = 19;
+/* number of codes used to transfer the bit lengths */
+
+var HEAP_SIZE     = 2*L_CODES + 1;
+/* maximum heap size */
+
+var MAX_BITS      = 15;
+/* All codes must not exceed MAX_BITS bits */
+
+var Buf_size      = 16;
+/* size of bit buffer in bi_buf */
+
+
+/* ===========================================================================
+ * Constants
+ */
+
+var MAX_BL_BITS = 7;
+/* Bit length codes must not exceed MAX_BL_BITS bits */
+
+var END_BLOCK   = 256;
+/* end of block literal code */
+
+var REP_3_6     = 16;
+/* repeat previous bit length 3-6 times (2 bits of repeat count) */
+
+var REPZ_3_10   = 17;
+/* repeat a zero length 3-10 times  (3 bits of repeat count) */
+
+var REPZ_11_138 = 18;
+/* repeat a zero length 11-138 times  (7 bits of repeat count) */
+
+var extra_lbits =   /* extra bits for each length code */
+  [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];
+
+var extra_dbits =   /* extra bits for each distance code */
+  [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];
+
+var extra_blbits =  /* extra bits for each bit length code */
+  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];
+
+var bl_order =
+  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];
+/* The lengths of the bit length codes are sent in order of decreasing
+ * probability, to avoid transmitting the lengths for unused bit length codes.
+ */
+
+/* ===========================================================================
+ * Local data. These are initialized only once.
+ */
+
+// We pre-fill arrays with 0 to avoid uninitialized gaps
+
+var DIST_CODE_LEN = 512; /* see definition of array dist_code below */
+
+// !!!! Use flat array insdead of structure, Freq = i*2, Len = i*2+1
+var static_ltree  = new Array((L_CODES+2) * 2);
+zero(static_ltree);
+/* The static literal tree. Since the bit lengths are imposed, there is no
+ * need for the L_CODES extra codes used during heap construction. However
+ * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
+ * below).
+ */
+
+var static_dtree  = new Array(D_CODES * 2);
+zero(static_dtree);
+/* The static distance tree. (Actually a trivial tree since all codes use
+ * 5 bits.)
+ */
+
+var _dist_code    = new Array(DIST_CODE_LEN);
+zero(_dist_code);
+/* Distance codes. The first 256 values correspond to the distances
+ * 3 .. 258, the last 256 values correspond to the top 8 bits of
+ * the 15 bit distances.
+ */
+
+var _length_code  = new Array(MAX_MATCH-MIN_MATCH+1);
+zero(_length_code);
+/* length code for each normalized match length (0 == MIN_MATCH) */
+
+var base_length   = new Array(LENGTH_CODES);
+zero(base_length);
+/* First normalized length for each code (0 = MIN_MATCH) */
+
+var base_dist     = new Array(D_CODES);
+zero(base_dist);
+/* First normalized distance for each code (0 = distance of 1) */
+
+
+var StaticTreeDesc = function (static_tree, extra_bits, extra_base, elems, max_length) {
+
+  this.static_tree  = static_tree;  /* static tree or NULL */
+  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */
+  this.extra_base   = extra_base;   /* base index for extra_bits */
+  this.elems        = elems;        /* max number of elements in the tree */
+  this.max_length   = max_length;   /* max bit length for the codes */
+
+  // show if `static_tree` has data or dummy - needed for monomorphic objects
+  this.has_stree    = static_tree && static_tree.length;
+};
+
+
+var static_l_desc;
+var static_d_desc;
+var static_bl_desc;
+
+
+var TreeDesc = function(dyn_tree, stat_desc) {
+  this.dyn_tree = dyn_tree;     /* the dynamic tree */
+  this.max_code = 0;            /* largest code with non zero frequency */
+  this.stat_desc = stat_desc;   /* the corresponding static tree */
+};
+
+
+
+function d_code(dist) {
+  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
+}
+
+
+/* ===========================================================================
+ * Output a short LSB first on the stream.
+ * IN assertion: there is enough room in pendingBuf.
+ */
+function put_short (s, w) {
+//    put_byte(s, (uch)((w) & 0xff));
+//    put_byte(s, (uch)((ush)(w) >> 8));
+  s.pending_buf[s.pending++] = (w) & 0xff;
+  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;
+}
+
+
+/* ===========================================================================
+ * Send a value on a given number of bits.
+ * IN assertion: length <= 16 and value fits in length bits.
+ */
+function send_bits(s, value, length) {
+  if (s.bi_valid > (Buf_size - length)) {
+    s.bi_buf |= (value << s.bi_valid) & 0xffff;
+    put_short(s, s.bi_buf);
+    s.bi_buf = value >> (Buf_size - s.bi_valid);
+    s.bi_valid += length - Buf_size;
+  } else {
+    s.bi_buf |= (value << s.bi_valid) & 0xffff;
+    s.bi_valid += length;
+  }
+}
+
+
+function send_code(s, c, tree) {
+  send_bits(s, tree[c*2]/*.Code*/, tree[c*2 + 1]/*.Len*/);
+}
+
+
+/* ===========================================================================
+ * Reverse the first len bits of a code, using straightforward code (a faster
+ * method would use a table)
+ * IN assertion: 1 <= len <= 15
+ */
+function bi_reverse(code, len) {
+  var res = 0;
+  do {
+    res |= code & 1;
+    code >>>= 1;
+    res <<= 1;
+  } while (--len > 0);
+  return res >>> 1;
+}
+
+
+/* ===========================================================================
+ * Flush the bit buffer, keeping at most 7 bits in it.
+ */
+function bi_flush(s) {
+  if (s.bi_valid === 16) {
+    put_short(s, s.bi_buf);
+    s.bi_buf = 0;
+    s.bi_valid = 0;
+
+  } else if (s.bi_valid >= 8) {
+    s.pending_buf[s.pending++] = s.bi_buf & 0xff;
+    s.bi_buf >>= 8;
+    s.bi_valid -= 8;
+  }
+}
+
+
+/* ===========================================================================
+ * Compute the optimal bit lengths for a tree and update the total bit length
+ * for the current block.
+ * IN assertion: the fields freq and dad are set, heap[heap_max] and
+ *    above are the tree nodes sorted by increasing frequency.
+ * OUT assertions: the field len is set to the optimal bit length, the
+ *     array bl_count contains the frequencies for each bit length.
+ *     The length opt_len is updated; static_len is also updated if stree is
+ *     not null.
+ */
+function gen_bitlen(s, desc)
+//    deflate_state *s;
+//    tree_desc *desc;    /* the tree descriptor */
+{
+  var tree            = desc.dyn_tree;
+  var max_code        = desc.max_code;
+  var stree           = desc.stat_desc.static_tree;
+  var has_stree       = desc.stat_desc.has_stree;
+  var extra           = desc.stat_desc.extra_bits;
+  var base            = desc.stat_desc.extra_base;
+  var max_length      = desc.stat_desc.max_length;
+  var h;              /* heap index */
+  var n, m;           /* iterate over the tree elements */
+  var bits;           /* bit length */
+  var xbits;          /* extra bits */
+  var f;              /* frequency */
+  var overflow = 0;   /* number of elements with bit length too large */
+
+  for (bits = 0; bits <= MAX_BITS; bits++) {
+    s.bl_count[bits] = 0;
+  }
+
+  /* In a first pass, compute the optimal bit lengths (which may
+   * overflow in the case of the bit length tree).
+   */
+  tree[s.heap[s.heap_max]*2 + 1]/*.Len*/ = 0; /* root of the heap */
+
+  for (h = s.heap_max+1; h < HEAP_SIZE; h++) {
+    n = s.heap[h];
+    bits = tree[tree[n*2 +1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;
+    if (bits > max_length) {
+      bits = max_length;
+      overflow++;
+    }
+    tree[n*2 + 1]/*.Len*/ = bits;
+    /* We overwrite tree[n].Dad which is no longer needed */
+
+    if (n > max_code) { continue; } /* not a leaf node */
+
+    s.bl_count[bits]++;
+    xbits = 0;
+    if (n >= base) {
+      xbits = extra[n-base];
+    }
+    f = tree[n * 2]/*.Freq*/;
+    s.opt_len += f * (bits + xbits);
+    if (has_stree) {
+      s.static_len += f * (stree[n*2 + 1]/*.Len*/ + xbits);
+    }
+  }
+  if (overflow === 0) { return; }
+
+  // Trace((stderr,"\nbit length overflow\n"));
+  /* This happens for example on obj2 and pic of the Calgary corpus */
+
+  /* Find the first bit length which could increase: */
+  do {
+    bits = max_length-1;
+    while (s.bl_count[bits] === 0) { bits--; }
+    s.bl_count[bits]--;      /* move one leaf down the tree */
+    s.bl_count[bits+1] += 2; /* move one overflow item as its brother */
+    s.bl_count[max_length]--;
+    /* The brother of the overflow item also moves one step up,
+     * but this does not affect bl_count[max_length]
+     */
+    overflow -= 2;
+  } while (overflow > 0);
+
+  /* Now recompute all bit lengths, scanning in increasing frequency.
+   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
+   * lengths instead of fixing only the wrong ones. This idea is taken
+   * from 'ar' written by Haruhiko Okumura.)
+   */
+  for (bits = max_length; bits !== 0; bits--) {
+    n = s.bl_count[bits];
+    while (n !== 0) {
+      m = s.heap[--h];
+      if (m > max_code) { continue; }
+      if (tree[m*2 + 1]/*.Len*/ !== bits) {
+        // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
+        s.opt_len += (bits - tree[m*2 + 1]/*.Len*/)*tree[m*2]/*.Freq*/;
+        tree[m*2 + 1]/*.Len*/ = bits;
+      }
+      n--;
+    }
+  }
+}
+
+
+/* ===========================================================================
+ * Generate the codes for a given tree and bit counts (which need not be
+ * optimal).
+ * IN assertion: the array bl_count contains the bit length statistics for
+ * the given tree and the field len is set for all tree elements.
+ * OUT assertion: the field code is set for all tree elements of non
+ *     zero code length.
+ */
+function gen_codes(tree, max_code, bl_count)
+//    ct_data *tree;             /* the tree to decorate */
+//    int max_code;              /* largest code with non zero frequency */
+//    ushf *bl_count;            /* number of codes at each bit length */
+{
+  var next_code = new Array(MAX_BITS+1); /* next code value for each bit length */
+  var code = 0;              /* running code value */
+  var bits;                  /* bit index */
+  var n;                     /* code index */
+
+  /* The distribution counts are first used to generate the code values
+   * without bit reversal.
+   */
+  for (bits = 1; bits <= MAX_BITS; bits++) {
+    next_code[bits] = code = (code + bl_count[bits-1]) << 1;
+  }
+  /* Check that the bit counts in bl_count are consistent. The last code
+   * must be all ones.
+   */
+  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
+  //        "inconsistent bit counts");
+  //Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
+
+  for (n = 0;  n <= max_code; n++) {
+    var len = tree[n*2 + 1]/*.Len*/;
+    if (len === 0) { continue; }
+    /* Now reverse the bits */
+    tree[n*2]/*.Code*/ = bi_reverse(next_code[len]++, len);
+
+    //Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
+    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
+  }
+}
+
+
+/* ===========================================================================
+ * Initialize the various 'constant' tables.
+ */
+function tr_static_init() {
+  var n;        /* iterates over tree elements */
+  var bits;     /* bit counter */
+  var length;   /* length value */
+  var code;     /* code value */
+  var dist;     /* distance index */
+  var bl_count = new Array(MAX_BITS+1);
+  /* number of codes at each bit length for an optimal tree */
+
+  // do check in _tr_init()
+  //if (static_init_done) return;
+
+  /* For some embedded targets, global variables are not initialized: */
+/*#ifdef NO_INIT_GLOBAL_POINTERS
+  static_l_desc.static_tree = static_ltree;
+  static_l_desc.extra_bits = extra_lbits;
+  static_d_desc.static_tree = static_dtree;
+  static_d_desc.extra_bits = extra_dbits;
+  static_bl_desc.extra_bits = extra_blbits;
+#endif*/
+
+  /* Initialize the mapping length (0..255) -> length code (0..28) */
+  length = 0;
+  for (code = 0; code < LENGTH_CODES-1; code++) {
+    base_length[code] = length;
+    for (n = 0; n < (1<<extra_lbits[code]); n++) {
+      _length_code[length++] = code;
+    }
+  }
+  //Assert (length == 256, "tr_static_init: length != 256");
+  /* Note that the length 255 (match length 258) can be represented
+   * in two different ways: code 284 + 5 bits or code 285, so we
+   * overwrite length_code[255] to use the best encoding:
+   */
+  _length_code[length-1] = code;
+
+  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
+  dist = 0;
+  for (code = 0 ; code < 16; code++) {
+    base_dist[code] = dist;
+    for (n = 0; n < (1<<extra_dbits[code]); n++) {
+      _dist_code[dist++] = code;
+    }
+  }
+  //Assert (dist == 256, "tr_static_init: dist != 256");
+  dist >>= 7; /* from now on, all distances are divided by 128 */
+  for ( ; code < D_CODES; code++) {
+    base_dist[code] = dist << 7;
+    for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) {
+      _dist_code[256 + dist++] = code;
+    }
+  }
+  //Assert (dist == 256, "tr_static_init: 256+dist != 512");
+
+  /* Construct the codes of the static literal tree */
+  for (bits = 0; bits <= MAX_BITS; bits++) {
+    bl_count[bits] = 0;
+  }
+
+  n = 0;
+  while (n <= 143) {
+    static_ltree[n*2 + 1]/*.Len*/ = 8;
+    n++;
+    bl_count[8]++;
+  }
+  while (n <= 255) {
+    static_ltree[n*2 + 1]/*.Len*/ = 9;
+    n++;
+    bl_count[9]++;
+  }
+  while (n <= 279) {
+    static_ltree[n*2 + 1]/*.Len*/ = 7;
+    n++;
+    bl_count[7]++;
+  }
+  while (n <= 287) {
+    static_ltree[n*2 + 1]/*.Len*/ = 8;
+    n++;
+    bl_count[8]++;
+  }
+  /* Codes 286 and 287 do not exist, but we must include them in the
+   * tree construction to get a canonical Huffman tree (longest code
+   * all ones)
+   */
+  gen_codes(static_ltree, L_CODES+1, bl_count);
+
+  /* The static distance tree is trivial: */
+  for (n = 0; n < D_CODES; n++) {
+    static_dtree[n*2 + 1]/*.Len*/ = 5;
+    static_dtree[n*2]/*.Code*/ = bi_reverse(n, 5);
+  }
+
+  // Now data ready and we can init static trees
+  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS);
+  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);
+  static_bl_desc =new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);
+
+  //static_init_done = true;
+}
+
+
+/* ===========================================================================
+ * Initialize a new block.
+ */
+function init_block(s) {
+  var n; /* iterates over tree elements */
+
+  /* Initialize the trees. */
+  for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n*2]/*.Freq*/ = 0; }
+  for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n*2]/*.Freq*/ = 0; }
+  for (n = 0; n < BL_CODES; n++) { s.bl_tree[n*2]/*.Freq*/ = 0; }
+
+  s.dyn_ltree[END_BLOCK*2]/*.Freq*/ = 1;
+  s.opt_len = s.static_len = 0;
+  s.last_lit = s.matches = 0;
+}
+
+
+/* ===========================================================================
+ * Flush the bit buffer and align the output on a byte boundary
+ */
+function bi_windup(s)
+{
+  if (s.bi_valid > 8) {
+    put_short(s, s.bi_buf);
+  } else if (s.bi_valid > 0) {
+    //put_byte(s, (Byte)s->bi_buf);
+    s.pending_buf[s.pending++] = s.bi_buf;
+  }
+  s.bi_buf = 0;
+  s.bi_valid = 0;
+}
+
+/* ===========================================================================
+ * Copy a stored block, storing first the length and its
+ * one's complement if requested.
+ */
+function copy_block(s, buf, len, header)
+//DeflateState *s;
+//charf    *buf;    /* the input data */
+//unsigned len;     /* its length */
+//int      header;  /* true if block header must be written */
+{
+  bi_windup(s);        /* align on byte boundary */
+
+  if (header) {
+    put_short(s, len);
+    put_short(s, ~len);
+  }
+//  while (len--) {
+//    put_byte(s, *buf++);
+//  }
+  utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);
+  s.pending += len;
+}
+
+/* ===========================================================================
+ * Compares to subtrees, using the tree depth as tie breaker when
+ * the subtrees have equal frequency. This minimizes the worst case length.
+ */
+function smaller(tree, n, m, depth) {
+  var _n2 = n*2;
+  var _m2 = m*2;
+  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||
+         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));
+}
+
+/* ===========================================================================
+ * Restore the heap property by moving down the tree starting at node k,
+ * exchanging a node with the smallest of its two sons if necessary, stopping
+ * when the heap property is re-established (each father smaller than its
+ * two sons).
+ */
+function pqdownheap(s, tree, k)
+//    deflate_state *s;
+//    ct_data *tree;  /* the tree to restore */
+//    int k;               /* node to move down */
+{
+  var v = s.heap[k];
+  var j = k << 1;  /* left son of k */
+  while (j <= s.heap_len) {
+    /* Set j to the smallest of the two sons: */
+    if (j < s.heap_len &&
+      smaller(tree, s.heap[j+1], s.heap[j], s.depth)) {
+      j++;
+    }
+    /* Exit if v is smaller than both sons */
+    if (smaller(tree, v, s.heap[j], s.depth)) { break; }
+
+    /* Exchange v with the smallest son */
+    s.heap[k] = s.heap[j];
+    k = j;
+
+    /* And continue down the tree, setting j to the left son of k */
+    j <<= 1;
+  }
+  s.heap[k] = v;
+}
+
+
+// inlined manually
+// var SMALLEST = 1;
+
+/* ===========================================================================
+ * Send the block data compressed using the given Huffman trees
+ */
+function compress_block(s, ltree, dtree)
+//    deflate_state *s;
+//    const ct_data *ltree; /* literal tree */
+//    const ct_data *dtree; /* distance tree */
+{
+  var dist;           /* distance of matched string */
+  var lc;             /* match length or unmatched char (if dist == 0) */
+  var lx = 0;         /* running index in l_buf */
+  var code;           /* the code to send */
+  var extra;          /* number of extra bits to send */
+
+  if (s.last_lit !== 0) {
+    do {
+      dist = (s.pending_buf[s.d_buf + lx*2] << 8) | (s.pending_buf[s.d_buf + lx*2 + 1]);
+      lc = s.pending_buf[s.l_buf + lx];
+      lx++;
+
+      if (dist === 0) {
+        send_code(s, lc, ltree); /* send a literal byte */
+        //Tracecv(isgraph(lc), (stderr," '%c' ", lc));
+      } else {
+        /* Here, lc is the match length - MIN_MATCH */
+        code = _length_code[lc];
+        send_code(s, code+LITERALS+1, ltree); /* send the length code */
+        extra = extra_lbits[code];
+        if (extra !== 0) {
+          lc -= base_length[code];
+          send_bits(s, lc, extra);       /* send the extra length bits */
+        }
+        dist--; /* dist is now the match distance - 1 */
+        code = d_code(dist);
+        //Assert (code < D_CODES, "bad d_code");
+
+        send_code(s, code, dtree);       /* send the distance code */
+        extra = extra_dbits[code];
+        if (extra !== 0) {
+          dist -= base_dist[code];
+          send_bits(s, dist, extra);   /* send the extra distance bits */
+        }
+      } /* literal or match pair ? */
+
+      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
+      //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
+      //       "pendingBuf overflow");
+
+    } while (lx < s.last_lit);
+  }
+
+  send_code(s, END_BLOCK, ltree);
+}
+
+
+/* ===========================================================================
+ * Construct one Huffman tree and assigns the code bit strings and lengths.
+ * Update the total bit length for the current block.
+ * IN assertion: the field freq is set for all tree elements.
+ * OUT assertions: the fields len and code are set to the optimal bit length
+ *     and corresponding code. The length opt_len is updated; static_len is
+ *     also updated if stree is not null. The field max_code is set.
+ */
+function build_tree(s, desc)
+//    deflate_state *s;
+//    tree_desc *desc; /* the tree descriptor */
+{
+  var tree     = desc.dyn_tree;
+  var stree    = desc.stat_desc.static_tree;
+  var has_stree = desc.stat_desc.has_stree;
+  var elems    = desc.stat_desc.elems;
+  var n, m;          /* iterate over heap elements */
+  var max_code = -1; /* largest code with non zero frequency */
+  var node;          /* new node being created */
+
+  /* Construct the initial heap, with least frequent element in
+   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
+   * heap[0] is not used.
+   */
+  s.heap_len = 0;
+  s.heap_max = HEAP_SIZE;
+
+  for (n = 0; n < elems; n++) {
+    if (tree[n * 2]/*.Freq*/ !== 0) {
+      s.heap[++s.heap_len] = max_code = n;
+      s.depth[n] = 0;
+
+    } else {
+      tree[n*2 + 1]/*.Len*/ = 0;
+    }
+  }
+
+  /* The pkzip format requires that at least one distance code exists,
+   * and that at least one bit should be sent even if there is only one
+   * possible code. So to avoid special checks later on we force at least
+   * two codes of non zero frequency.
+   */
+  while (s.heap_len < 2) {
+    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);
+    tree[node * 2]/*.Freq*/ = 1;
+    s.depth[node] = 0;
+    s.opt_len--;
+
+    if (has_stree) {
+      s.static_len -= stree[node*2 + 1]/*.Len*/;
+    }
+    /* node is 0 or 1 so it does not have extra bits */
+  }
+  desc.max_code = max_code;
+
+  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
+   * establish sub-heaps of increasing lengths:
+   */
+  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }
+
+  /* Construct the Huffman tree by repeatedly combining the least two
+   * frequent nodes.
+   */
+  node = elems;              /* next internal node of the tree */
+  do {
+    //pqremove(s, tree, n);  /* n = node of least frequency */
+    /*** pqremove ***/
+    n = s.heap[1/*SMALLEST*/];
+    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];
+    pqdownheap(s, tree, 1/*SMALLEST*/);
+    /***/
+
+    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */
+
+    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */
+    s.heap[--s.heap_max] = m;
+
+    /* Create a new node father of n and m */
+    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;
+    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
+    tree[n*2 + 1]/*.Dad*/ = tree[m*2 + 1]/*.Dad*/ = node;
+
+    /* and insert the new node in the heap */
+    s.heap[1/*SMALLEST*/] = node++;
+    pqdownheap(s, tree, 1/*SMALLEST*/);
+
+  } while (s.heap_len >= 2);
+
+  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];
+
+  /* At this point, the fields freq and dad are set. We can now
+   * generate the bit lengths.
+   */
+  gen_bitlen(s, desc);
+
+  /* The field len is now set, we can generate the bit codes */
+  gen_codes(tree, max_code, s.bl_count);
+}
+
+
+/* ===========================================================================
+ * Scan a literal or distance tree to determine the frequencies of the codes
+ * in the bit length tree.
+ */
+function scan_tree(s, tree, max_code)
+//    deflate_state *s;
+//    ct_data *tree;   /* the tree to be scanned */
+//    int max_code;    /* and its largest code of non zero frequency */
+{
+  var n;                     /* iterates over all tree elements */
+  var prevlen = -1;          /* last emitted length */
+  var curlen;                /* length of current code */
+
+  var nextlen = tree[0*2 + 1]/*.Len*/; /* length of next code */
+
+  var count = 0;             /* repeat count of the current code */
+  var max_count = 7;         /* max repeat count */
+  var min_count = 4;         /* min repeat count */
+
+  if (nextlen === 0) {
+    max_count = 138;
+    min_count = 3;
+  }
+  tree[(max_code+1)*2 + 1]/*.Len*/ = 0xffff; /* guard */
+
+  for (n = 0; n <= max_code; n++) {
+    curlen = nextlen;
+    nextlen = tree[(n+1)*2 + 1]/*.Len*/;
+
+    if (++count < max_count && curlen === nextlen) {
+      continue;
+
+    } else if (count < min_count) {
+      s.bl_tree[curlen * 2]/*.Freq*/ += count;
+
+    } else if (curlen !== 0) {
+
+      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }
+      s.bl_tree[REP_3_6*2]/*.Freq*/++;
+
+    } else if (count <= 10) {
+      s.bl_tree[REPZ_3_10*2]/*.Freq*/++;
+
+    } else {
+      s.bl_tree[REPZ_11_138*2]/*.Freq*/++;
+    }
+
+    count = 0;
+    prevlen = curlen;
+
+    if (nextlen === 0) {
+      max_count = 138;
+      min_count = 3;
+
+    } else if (curlen === nextlen) {
+      max_count = 6;
+      min_count = 3;
+
+    } else {
+      max_count = 7;
+      min_count = 4;
+    }
+  }
+}
+
+
+/* ===========================================================================
+ * Send a literal or distance tree in compressed form, using the codes in
+ * bl_tree.
+ */
+function send_tree(s, tree, max_code)
+//    deflate_state *s;
+//    ct_data *tree; /* the tree to be scanned */
+//    int max_code;       /* and its largest code of non zero frequency */
+{
+  var n;                     /* iterates over all tree elements */
+  var prevlen = -1;          /* last emitted length */
+  var curlen;                /* length of current code */
+
+  var nextlen = tree[0*2 + 1]/*.Len*/; /* length of next code */
+
+  var count = 0;             /* repeat count of the current code */
+  var max_count = 7;         /* max repeat count */
+  var min_count = 4;         /* min repeat count */
+
+  /* tree[max_code+1].Len = -1; */  /* guard already set */
+  if (nextlen === 0) {
+    max_count = 138;
+    min_count = 3;
+  }
+
+  for (n = 0; n <= max_code; n++) {
+    curlen = nextlen;
+    nextlen = tree[(n+1)*2 + 1]/*.Len*/;
+
+    if (++count < max_count && curlen === nextlen) {
+      continue;
+
+    } else if (count < min_count) {
+      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);
+
+    } else if (curlen !== 0) {
+      if (curlen !== prevlen) {
+        send_code(s, curlen, s.bl_tree);
+        count--;
+      }
+      //Assert(count >= 3 && count <= 6, " 3_6?");
+      send_code(s, REP_3_6, s.bl_tree);
+      send_bits(s, count-3, 2);
+
+    } else if (count <= 10) {
+      send_code(s, REPZ_3_10, s.bl_tree);
+      send_bits(s, count-3, 3);
+
+    } else {
+      send_code(s, REPZ_11_138, s.bl_tree);
+      send_bits(s, count-11, 7);
+    }
+
+    count = 0;
+    prevlen = curlen;
+    if (nextlen === 0) {
+      max_count = 138;
+      min_count = 3;
+
+    } else if (curlen === nextlen) {
+      max_count = 6;
+      min_count = 3;
+
+    } else {
+      max_count = 7;
+      min_count = 4;
+    }
+  }
+}
+
+
+/* ===========================================================================
+ * Construct the Huffman tree for the bit lengths and return the index in
+ * bl_order of the last bit length code to send.
+ */
+function build_bl_tree(s) {
+  var max_blindex;  /* index of last bit length code of non zero freq */
+
+  /* Determine the bit length frequencies for literal and distance trees */
+  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
+  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);
+
+  /* Build the bit length tree: */
+  build_tree(s, s.bl_desc);
+  /* opt_len now includes the length of the tree representations, except
+   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
+   */
+
+  /* Determine the number of bit length codes to send. The pkzip format
+   * requires that at least 4 bit length codes be sent. (appnote.txt says
+   * 3 but the actual value used is 4.)
+   */
+  for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) {
+    if (s.bl_tree[bl_order[max_blindex]*2 + 1]/*.Len*/ !== 0) {
+      break;
+    }
+  }
+  /* Update opt_len to include the bit length tree and counts */
+  s.opt_len += 3*(max_blindex+1) + 5+5+4;
+  //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
+  //        s->opt_len, s->static_len));
+
+  return max_blindex;
+}
+
+
+/* ===========================================================================
+ * Send the header for a block using dynamic Huffman trees: the counts, the
+ * lengths of the bit length codes, the literal tree and the distance tree.
+ * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
+ */
+function send_all_trees(s, lcodes, dcodes, blcodes)
+//    deflate_state *s;
+//    int lcodes, dcodes, blcodes; /* number of codes for each tree */
+{
+  var rank;                    /* index in bl_order */
+
+  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
+  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
+  //        "too many codes");
+  //Tracev((stderr, "\nbl counts: "));
+  send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */
+  send_bits(s, dcodes-1,   5);
+  send_bits(s, blcodes-4,  4); /* not -3 as stated in appnote.txt */
+  for (rank = 0; rank < blcodes; rank++) {
+    //Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
+    send_bits(s, s.bl_tree[bl_order[rank]*2 + 1]/*.Len*/, 3);
+  }
+  //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
+
+  send_tree(s, s.dyn_ltree, lcodes-1); /* literal tree */
+  //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
+
+  send_tree(s, s.dyn_dtree, dcodes-1); /* distance tree */
+  //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
+}
+
+
+/* ===========================================================================
+ * Check if the data type is TEXT or BINARY, using the following algorithm:
+ * - TEXT if the two conditions below are satisfied:
+ *    a) There are no non-portable control characters belonging to the
+ *       "black list" (0..6, 14..25, 28..31).
+ *    b) There is at least one printable character belonging to the
+ *       "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
+ * - BINARY otherwise.
+ * - The following partially-portable control characters form a
+ *   "gray list" that is ignored in this detection algorithm:
+ *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
+ * IN assertion: the fields Freq of dyn_ltree are set.
+ */
+function detect_data_type(s) {
+  /* black_mask is the bit mask of black-listed bytes
+   * set bits 0..6, 14..25, and 28..31
+   * 0xf3ffc07f = binary 11110011111111111100000001111111
+   */
+  var black_mask = 0xf3ffc07f;
+  var n;
+
+  /* Check for non-textual ("black-listed") bytes. */
+  for (n = 0; n <= 31; n++, black_mask >>>= 1) {
+    if ((black_mask & 1) && (s.dyn_ltree[n*2]/*.Freq*/ !== 0)) {
+      return Z_BINARY;
+    }
+  }
+
+  /* Check for textual ("white-listed") bytes. */
+  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||
+      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {
+    return Z_TEXT;
+  }
+  for (n = 32; n < LITERALS; n++) {
+    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {
+      return Z_TEXT;
+    }
+  }
+
+  /* There are no "black-listed" or "white-listed" bytes:
+   * this stream either is empty or has tolerated ("gray-listed") bytes only.
+   */
+  return Z_BINARY;
+}
+
+
+var static_init_done = false;
+
+/* ===========================================================================
+ * Initialize the tree data structures for a new zlib stream.
+ */
+function _tr_init(s)
+{
+
+  if (!static_init_done) {
+    tr_static_init();
+    static_init_done = true;
+  }
+
+  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);
+  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);
+  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);
+
+  s.bi_buf = 0;
+  s.bi_valid = 0;
+
+  /* Initialize the first block of the first file: */
+  init_block(s);
+}
+
+
+/* ===========================================================================
+ * Send a stored block
+ */
+function _tr_stored_block(s, buf, stored_len, last)
+//DeflateState *s;
+//charf *buf;       /* input block */
+//ulg stored_len;   /* length of input block */
+//int last;         /* one if this is the last block for a file */
+{
+  send_bits(s, (STORED_BLOCK<<1)+(last ? 1 : 0), 3);    /* send block type */
+  copy_block(s, buf, stored_len, true); /* with header */
+}
+
+
+/* ===========================================================================
+ * Send one empty static block to give enough lookahead for inflate.
+ * This takes 10 bits, of which 7 may remain in the bit buffer.
+ */
+function _tr_align(s) {
+  send_bits(s, STATIC_TREES<<1, 3);
+  send_code(s, END_BLOCK, static_ltree);
+  bi_flush(s);
+}
+
+
+/* ===========================================================================
+ * Determine the best encoding for the current block: dynamic trees, static
+ * trees or store, and output the encoded block to the zip file.
+ */
+function _tr_flush_block(s, buf, stored_len, last)
+//DeflateState *s;
+//charf *buf;       /* input block, or NULL if too old */
+//ulg stored_len;   /* length of input block */
+//int last;         /* one if this is the last block for a file */
+{
+  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */
+  var max_blindex = 0;        /* index of last bit length code of non zero freq */
+
+  /* Build the Huffman trees unless a stored block is forced */
+  if (s.level > 0) {
+
+    /* Check if the file is binary or text */
+    if (s.strm.data_type === Z_UNKNOWN) {
+      s.strm.data_type = detect_data_type(s);
+    }
+
+    /* Construct the literal and distance trees */
+    build_tree(s, s.l_desc);
+    // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
+    //        s->static_len));
+
+    build_tree(s, s.d_desc);
+    // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
+    //        s->static_len));
+    /* At this point, opt_len and static_len are the total bit lengths of
+     * the compressed block data, excluding the tree representations.
+     */
+
+    /* Build the bit length tree for the above two trees, and get the index
+     * in bl_order of the last bit length code to send.
+     */
+    max_blindex = build_bl_tree(s);
+
+    /* Determine the best encoding. Compute the block lengths in bytes. */
+    opt_lenb = (s.opt_len+3+7) >>> 3;
+    static_lenb = (s.static_len+3+7) >>> 3;
+
+    // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
+    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
+    //        s->last_lit));
+
+    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }
+
+  } else {
+    // Assert(buf != (char*)0, "lost buf");
+    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
+  }
+
+  if ((stored_len+4 <= opt_lenb) && (buf !== -1)) {
+    /* 4: two words for the lengths */
+
+    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
+     * Otherwise we can't have processed more than WSIZE input bytes since
+     * the last block flush, because compression would have been
+     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
+     * transform a block into a stored block.
+     */
+    _tr_stored_block(s, buf, stored_len, last);
+
+  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {
+
+    send_bits(s, (STATIC_TREES<<1) + (last ? 1 : 0), 3);
+    compress_block(s, static_ltree, static_dtree);
+
+  } else {
+    send_bits(s, (DYN_TREES<<1) + (last ? 1 : 0), 3);
+    send_all_trees(s, s.l_desc.max_code+1, s.d_desc.max_code+1, max_blindex+1);
+    compress_block(s, s.dyn_ltree, s.dyn_dtree);
+  }
+  // Assert (s->compressed_len == s->bits_sent, "bad compressed size");
+  /* The above check is made mod 2^32, for files larger than 512 MB
+   * and uLong implemented on 32 bits.
+   */
+  init_block(s);
+
+  if (last) {
+    bi_windup(s);
+  }
+  // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
+  //       s->compressed_len-7*last));
+}
+
+/* ===========================================================================
+ * Save the match info and tally the frequency counts. Return true if
+ * the current block must be flushed.
+ */
+function _tr_tally(s, dist, lc)
+//    deflate_state *s;
+//    unsigned dist;  /* distance of matched string */
+//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */
+{
+  //var out_length, in_length, dcode;
+
+  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;
+  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;
+
+  s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;
+  s.last_lit++;
+
+  if (dist === 0) {
+    /* lc is the unmatched char */
+    s.dyn_ltree[lc*2]/*.Freq*/++;
+  } else {
+    s.matches++;
+    /* Here, lc is the match length - MIN_MATCH */
+    dist--;             /* dist = match distance - 1 */
+    //Assert((ush)dist < (ush)MAX_DIST(s) &&
+    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
+    //       (ush)d_code(dist) < (ush)D_CODES,  "_tr_tally: bad match");
+
+    s.dyn_ltree[(_length_code[lc]+LITERALS+1) * 2]/*.Freq*/++;
+    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;
+  }
+
+// (!) This block is disabled in zlib defailts,
+// don't enable it for binary compatibility
+
+//#ifdef TRUNCATE_BLOCK
+//  /* Try to guess if it is profitable to stop the current block here */
+//  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {
+//    /* Compute an upper bound for the compressed length */
+//    out_length = s.last_lit*8;
+//    in_length = s.strstart - s.block_start;
+//
+//    for (dcode = 0; dcode < D_CODES; dcode++) {
+//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);
+//    }
+//    out_length >>>= 3;
+//    //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
+//    //       s->last_lit, in_length, out_length,
+//    //       100L - out_length*100L/in_length));
+//    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {
+//      return true;
+//    }
+//  }
+//#endif
+
+  return (s.last_lit === s.lit_bufsize-1);
+  /* We avoid equality with lit_bufsize because of wraparound at 64K
+   * on 16 bit machines and because stored blocks are restricted to
+   * 64K-1 bytes.
+   */
+}
+
+exports._tr_init  = _tr_init;
+exports._tr_stored_block = _tr_stored_block;
+exports._tr_flush_block  = _tr_flush_block;
+exports._tr_tally = _tr_tally;
+exports._tr_align = _tr_align;
+},{"../utils/common":27}],39:[function(_dereq_,module,exports){
+'use strict';
+
+
+function ZStream() {
+  /* next input byte */
+  this.input = null; // JS specific, because we have no pointers
+  this.next_in = 0;
+  /* number of bytes available at input */
+  this.avail_in = 0;
+  /* total number of input bytes read so far */
+  this.total_in = 0;
+  /* next output byte should be put there */
+  this.output = null; // JS specific, because we have no pointers
+  this.next_out = 0;
+  /* remaining free space at output */
+  this.avail_out = 0;
+  /* total number of bytes output so far */
+  this.total_out = 0;
+  /* last error message, NULL if no error */
+  this.msg = ''/*Z_NULL*/;
+  /* not visible by applications */
+  this.state = null;
+  /* best guess about the data type: binary or text */
+  this.data_type = 2/*Z_UNKNOWN*/;
+  /* adler32 value of the uncompressed data */
+  this.adler = 0;
+}
+
+module.exports = ZStream;
+},{}]},{},[9])
+(9)
+});
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jszip.min.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jszip.min.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/jszip.min.js	(revision 101)
@@ -0,0 +1,14 @@
+/*!
+
+JSZip - A Javascript class for generating and reading zip files
+<http://stuartk.com/jszip>
+
+(c) 2009-2014 Stuart Knightley <stuart [at] stuartk.com>
+Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.
+
+JSZip uses the library pako released under the MIT license :
+https://github.com/nodeca/pako/blob/master/LICENSE
+*/
+!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";c.encode=function(a){for(var b,c,e,f,g,h,i,j="",k=0;k<a.length;)b=a.charCodeAt(k++),c=a.charCodeAt(k++),e=a.charCodeAt(k++),f=b>>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j="",k=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");k<a.length;)f=d.indexOf(a.charAt(k++)),g=d.indexOf(a.charAt(k++)),h=d.indexOf(a.charAt(k++)),i=d.indexOf(a.charAt(k++)),b=f<<2|g>>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){"use strict";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){"use strict";c.STORE={magic:"\x00\x00",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a("./flate")},{"./flate":8}],4:[function(a,b){"use strict";var c=a("./utils"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if("undefined"==typeof a||!a.length)return 0;var e="string"!==c.getTypeOf(a);"undefined"==typeof b&&(b=0);var f=0,g=0,h=0;b=-1^b;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{"./utils":21}],5:[function(a,b){"use strict";function c(){this.data=null,this.length=0,this.index=0}var d=a("./utils");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.length<a||0>a)throw new Error("End of data reached (data length = "+this.length+", asked index = "+a+"). Corrupted zip ?")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo("string",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{"./utils":21}],6:[function(a,b,c){"use strict";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.comment=null},{}],7:[function(a,b,c){"use strict";var d=a("./utils");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo("uint8array",a)},c.uint8Array2String=function(a){return d.transformTo("string",a)},c.string2Blob=function(a){var b=d.transformTo("arraybuffer",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{"./utils":21}],8:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,e=a("pako");c.uncompressInputType=d?"uint8array":"array",c.compressInputType=d?"uint8array":"array",c.magic="\b\x00",c.compress=function(a){return e.deflateRaw(a)},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){"use strict";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root="",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)"function"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a("./base64");c.prototype=a("./object"),c.prototype.load=a("./load"),c.support=a("./support"),c.defaults=a("./defaults"),c.utils=a("./deprecatedPublicUtils"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a("./compressions"),b.exports=c},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(a,b){"use strict";var c=a("./base64"),d=a("./zipEntries");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;g<e.length;g++)h=e[g],this.file(h.fileName,h.decompressed,{binary:!0,optimizedBinaryString:!0,date:h.date,dir:h.dir,comment:h.fileComment.length?h.fileComment:null,createFolders:b.createFolders});return f.zipComment.length&&(this.comment=f.zipComment),this}},{"./base64":1,"./zipEntries":22}],11:[function(a,b){(function(a){"use strict";b.exports=function(b,c){return new a(b,c)},b.exports.test=function(b){return a.isBuffer(b)}}).call(this,"undefined"!=typeof Buffer?Buffer:void 0)},{}],12:[function(a,b){"use strict";function c(a){this.data=a,this.length=this.data.length,this.index=0}var d=a("./uint8ArrayReader");c.prototype=new d,c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./uint8ArrayReader":18}],13:[function(a,b){"use strict";var c=a("./support"),d=a("./utils"),e=a("./crc32"),f=a("./signature"),g=a("./defaults"),h=a("./base64"),i=a("./compressions"),j=a("./compressedObject"),k=a("./nodeBuffer"),l=a("./utf8"),m=a("./stringWriter"),n=a("./uint8ArrayWriter"),o=function(a){if(a._data instanceof j&&(a._data=a._data.getContent(),a.options.binary=!0,a.options.base64=!1,"uint8array"===d.getTypeOf(a._data))){var b=a._data;a._data=new Uint8Array(b.length),0!==b.length&&a._data.set(b,0)}return a._data},p=function(a){var b=o(a),e=d.getTypeOf(b);return"string"===e?!a.options.binary&&c.nodebuffer?k(b,"utf-8"):a.asBinary():b},q=function(a){var b=o(this);return null===b||"undefined"==typeof b?"":(this.options.base64&&(b=h.decode(b)),b=a&&this.options.binary?A.utf8decode(b):d.transformTo("string",b),a||this.options.binary||(b=d.transformTo("string",A.utf8encode(b))),b)},r=function(a,b,c){this.name=a,this.dir=c.dir,this.date=c.date,this.comment=c.comment,this._data=b,this.options=c,this._initialMetadata={dir:c.dir,date:c.date}};r.prototype={asText:function(){return q.call(this,!0)},asBinary:function(){return q.call(this,!1)},asNodeBuffer:function(){var a=p(this);return d.transformTo("nodebuffer",a)},asUint8Array:function(){var a=p(this);return d.transformTo("uint8array",a)},asArrayBuffer:function(){return this.asUint8Array().buffer}};var s=function(a,b){var c,d="";for(c=0;b>c;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a<arguments.length;a++)for(b in arguments[a])arguments[a].hasOwnProperty(b)&&"undefined"==typeof c[b]&&(c[b]=arguments[a][b]);return c},u=function(a){return a=a||{},a.base64!==!0||null!==a.binary&&void 0!==a.binary||(a.binary=!0),a=t(a,g),a.date=a.date||new Date,null!==a.compression&&(a.compression=a.compression.toUpperCase()),a},v=function(a,b,c){var e,f=d.getTypeOf(b);if(c=u(c),c.createFolders&&(e=w(a))&&x.call(this,e,!0),c.dir||null===b||"undefined"==typeof b)c.base64=!1,c.binary=!1,b=null;else if("string"===f)c.binary&&!c.base64&&c.optimizedBinaryString!==!0&&(b=d.string2binary(b));else{if(c.base64=!1,c.binary=!0,!(f||b instanceof j))throw new Error("The data of '"+a+"' is in an unsupported format !");"arraybuffer"===f&&(b=d.transformTo("uint8array",b))}var g=new r(a,b,c);return this.files[a]=g,g},w=function(a){"/"==a.slice(-1)&&(a=a.substring(0,a.length-1));var b=a.lastIndexOf("/");return b>0?a.substring(0,b):""},x=function(a,b){return"/"!=a.slice(-1)&&(a+="/"),b="undefined"!=typeof b?b:!1,this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},y=function(a,b){var c,f=new j;return a._data instanceof j?(f.uncompressedSize=a._data.uncompressedSize,f.crc32=a._data.crc32,0===f.uncompressedSize||a.dir?(b=i.STORE,f.compressedContent="",f.crc32=0):a._data.compressionMethod===b.magic?f.compressedContent=a._data.getCompressedContent():(c=a._data.getContent(),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c)))):(c=p(a),(!c||0===c.length||a.dir)&&(b=i.STORE,c=""),f.uncompressedSize=c.length,f.crc32=e(c),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c))),f.compressedSize=f.compressedContent.length,f.compressionMethod=b.magic,f},z=function(a,b,c,g){var h,i,j,k,m=(c.compressedContent,d.transformTo("string",l.utf8encode(b.name))),n=b.comment||"",o=d.transformTo("string",l.utf8encode(n)),p=m.length!==b.name.length,q=o.length!==n.length,r=b.options,t="",u="",v="";j=b._initialMetadata.dir!==b.dir?b.dir:r.dir,k=b._initialMetadata.date!==b.date?b.date:r.date,h=k.getHours(),h<<=6,h|=k.getMinutes(),h<<=5,h|=k.getSeconds()/2,i=k.getFullYear()-1980,i<<=4,i|=k.getMonth()+1,i<<=5,i|=k.getDate(),p&&(u=s(1,1)+s(e(m),4)+m,t+="up"+s(u.length,2)+u),q&&(v=s(1,1)+s(this.crc32(o),4)+o,t+="uc"+s(v.length,2)+v);var w="";w+="\n\x00",w+=p||q?"\x00\b":"\x00\x00",w+=c.compressionMethod,w+=s(h,2),w+=s(i,2),w+=s(c.crc32,4),w+=s(c.compressedSize,4),w+=s(c.uncompressedSize,4),w+=s(m.length,2),w+=s(t.length,2);var x=f.LOCAL_FILE_HEADER+w+m+t,y=f.CENTRAL_FILE_HEADER+"\x00"+w+s(o.length,2)+"\x00\x00\x00\x00"+(j===!0?"\x00\x00\x00":"\x00\x00\x00\x00")+s(g,4)+m+t+o;return{fileRecord:x,dirRecord:y,compressedObject:c}},A={load:function(){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=x.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||("/"!=a.slice(-1)&&(a+="/"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d<c.length;d++)delete this.files[c[d].name];return this},generate:function(a){a=t(a||{},{base64:!0,compression:"STORE",type:"base64",comment:null}),d.checkSupport(a.type);var b,c,e=[],g=0,j=0,k=d.transformTo("string",this.utf8encode(a.comment||this.comment||""));for(var l in this.files)if(this.files.hasOwnProperty(l)){var o=this.files[l],p=o.options.compression||a.compression.toUpperCase(),q=i[p];if(!q)throw new Error(p+" is not a valid compression method !");var r=y.call(this,o,q),u=z.call(this,l,o,r,g);g+=u.fileRecord.length+r.compressedSize,j+=u.dirRecord.length,e.push(u)}var v="";v=f.CENTRAL_DIRECTORY_END+"\x00\x00\x00\x00"+s(e.length,2)+s(e.length,2)+s(j,4)+s(g,4)+s(k.length,2)+k;var w=a.type.toLowerCase();for(b="uint8array"===w||"arraybuffer"===w||"blob"===w||"nodebuffer"===w?new n(g+j+v.length):new m(g+j+v.length),c=0;c<e.length;c++)b.append(e[c].fileRecord),b.append(e[c].compressedObject.compressedContent);for(c=0;c<e.length;c++)b.append(e[c].dirRecord);b.append(v);var x=b.finalize();switch(a.type.toLowerCase()){case"uint8array":case"arraybuffer":case"nodebuffer":return d.transformTo(a.type.toLowerCase(),x);case"blob":return d.arrayBuffer2Blob(d.transformTo("arraybuffer",x));case"base64":return a.base64?h.encode(x):x;default:return x}},crc32:function(a,b){return e(a,b)},utf8encode:function(a){return d.transformTo("string",l.utf8encode(a))},utf8decode:function(a){return l.utf8decode(a)}};b.exports=A},{"./base64":1,"./compressedObject":2,"./compressions":3,"./crc32":4,"./defaults":6,"./nodeBuffer":11,"./signature":14,"./stringWriter":16,"./support":17,"./uint8ArrayWriter":19,"./utf8":20,"./utils":21}],14:[function(a,b,c){"use strict";c.LOCAL_FILE_HEADER="PK",c.CENTRAL_FILE_HEADER="PK",c.CENTRAL_DIRECTORY_END="PK",c.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",c.ZIP64_CENTRAL_DIRECTORY_END="PK",c.DATA_DESCRIPTOR="PK\b"},{}],15:[function(a,b){"use strict";function c(a,b){this.data=a,b||(this.data=e.string2binary(this.data)),this.length=this.data.length,this.index=0}var d=a("./dataReader"),e=a("./utils");c.prototype=new d,c.prototype.byteAt=function(a){return this.data.charCodeAt(a)},c.prototype.lastIndexOfSignature=function(a){return this.data.lastIndexOf(a)},c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5,"./utils":21}],16:[function(a,b){"use strict";var c=a("./utils"),d=function(){this.data=[]};d.prototype={append:function(a){a=c.transformTo("string",a),this.data.push(a)},finalize:function(){return this.data.join("")}},b.exports=d},{"./utils":21}],17:[function(a,b,c){(function(a){"use strict";if(c.base64=!0,c.array=!0,c.string=!0,c.arraybuffer="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array,c.nodebuffer="undefined"!=typeof a,c.uint8array="undefined"!=typeof Uint8Array,"undefined"==typeof ArrayBuffer)c.blob=!1;else{var b=new ArrayBuffer(0);try{c.blob=0===new Blob([b],{type:"application/zip"}).size}catch(d){try{var e=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,f=new e;f.append(b),c.blob=0===f.getBlob("application/zip").size}catch(d){c.blob=!1}}}}).call(this,"undefined"!=typeof Buffer?Buffer:void 0)},{}],18:[function(a,b){"use strict";function c(a){a&&(this.data=a,this.length=this.data.length,this.index=0)}var d=a("./dataReader");c.prototype=new d,c.prototype.byteAt=function(a){return this.data[a]},c.prototype.lastIndexOfSignature=function(a){for(var b=a.charCodeAt(0),c=a.charCodeAt(1),d=a.charCodeAt(2),e=a.charCodeAt(3),f=this.length-4;f>=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5}],19:[function(a,b){"use strict";var c=a("./utils"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo("uint8array",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{"./utils":21}],20:[function(a,b,c){"use strict";for(var d=a("./utils"),e=a("./support"),f=a("./nodeBuffer"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(e=a[b++],128>e)i[c++]=e;else if(f=g[e],f>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,"utf-8"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo("nodebuffer",a).toString("utf-8");a=d.transformTo(e.uint8array?"uint8array":"array",a);for(var b=[],c=0,f=a.length,g=65536;f>c;){var h=j(a,Math.min(c+g,f));b.push(e.uint8array?k(a.subarray(c,h)):k(a.slice(c,h))),c=h}return b.join("")}},{"./nodeBuffer":11,"./support":17,"./utils":21}],21:[function(a,b,c){"use strict";function d(a){return a}function e(a,b){for(var c=0;c<a.length;++c)b[c]=255&a.charCodeAt(c);return b}function f(a){var b=65536,d=[],e=a.length,f=c.getTypeOf(a),g=0,h=!0;try{switch(f){case"uint8array":String.fromCharCode.apply(null,new Uint8Array(0));break;case"nodebuffer":String.fromCharCode.apply(null,j(0))}}catch(i){h=!1}if(!h){for(var k="",l=0;l<a.length;l++)k+=String.fromCharCode(a[l]);return k}for(;e>g&&b>1;)try{d.push("array"===f||"nodebuffer"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(i){b=Math.floor(b/2)}return d.join("")}function g(a,b){for(var c=0;c<a.length;c++)b[c]=a[c];return b}var h=a("./support"),i=a("./compressions"),j=a("./nodeBuffer");c.string2binary=function(a){for(var b="",c=0;c<a.length;c++)b+=String.fromCharCode(255&a.charCodeAt(c));return b},c.arrayBuffer2Blob=function(a){c.checkSupport("blob");try{return new Blob([a],{type:"application/zip"})}catch(b){try{var d=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,e=new d;return e.append(a),e.getBlob("application/zip")}catch(b){throw new Error("Bug : can't construct the Blob.")}}},c.applyFromCharCode=f;var k={};k.string={string:d,array:function(a){return e(a,new Array(a.length))},arraybuffer:function(a){return k.string.uint8array(a).buffer},uint8array:function(a){return e(a,new Uint8Array(a.length))},nodebuffer:function(a){return e(a,j(a.length))}},k.array={string:f,array:d,arraybuffer:function(a){return new Uint8Array(a).buffer},uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(a)}},k.arraybuffer={string:function(a){return f(new Uint8Array(a))},array:function(a){return g(new Uint8Array(a),new Array(a.byteLength))},arraybuffer:d,uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(new Uint8Array(a))}},k.uint8array={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return a.buffer},uint8array:d,nodebuffer:function(a){return j(a)}},k.nodebuffer={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return k.nodebuffer.uint8array(a).buffer},uint8array:function(a){return g(a,new Uint8Array(a.length))},nodebuffer:d},c.transformTo=function(a,b){if(b||(b=""),!a)return b;c.checkSupport(a);var d=c.getTypeOf(b),e=k[d][a](b);return e},c.getTypeOf=function(a){return"string"==typeof a?"string":"[object Array]"===Object.prototype.toString.call(a)?"array":h.nodebuffer&&j.test(a)?"nodebuffer":h.uint8array&&a instanceof Uint8Array?"uint8array":h.arraybuffer&&a instanceof ArrayBuffer?"arraybuffer":void 0},c.checkSupport=function(a){var b=h[a.toLowerCase()];if(!b)throw new Error(a+" is not supported by this browser")},c.MAX_VALUE_16BITS=65535,c.MAX_VALUE_32BITS=-1,c.pretty=function(a){var b,c,d="";for(c=0;c<(a||"").length;c++)b=a.charCodeAt(c),d+="\\x"+(16>b?"0":"")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return"[object RegExp]"===Object.prototype.toString.call(a)}},{"./compressions":3,"./nodeBuffer":11,"./support":17}],22:[function(a,b){"use strict";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a("./stringReader"),e=a("./nodeBufferReader"),f=a("./uint8ArrayReader"),g=a("./utils"),h=a("./signature"),i=a("./zipEntry"),j=a("./support"),k=a("./object");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error("Corrupted zip or bug : unexpected signature ("+g.pretty(b)+", expected "+g.pretty(a)+")")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44,e=0;d>e;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var a,b;for(a=0;a<this.files.length;a++)b=this.files[a],this.reader.setIndex(b.localHeaderOffset),this.checkSignature(h.LOCAL_FILE_HEADER),b.readLocalPart(this.reader),b.handleUTF8()},readCentralDir:function(){var a;for(this.reader.setIndex(this.centralDirOffset);this.reader.readString(4)===h.CENTRAL_FILE_HEADER;)a=new i({zip64:this.zip64},this.loadOptions),a.readCentralPart(this.reader),this.files.push(a)},readEndOfCentral:function(){var a=this.reader.lastIndexOfSignature(h.CENTRAL_DIRECTORY_END);if(-1===a)throw new Error("Corrupted zip : can't find end of central directory");if(this.reader.setIndex(a),this.checkSignature(h.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===g.MAX_VALUE_16BITS||this.diskWithCentralDirStart===g.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===g.MAX_VALUE_16BITS||this.centralDirRecords===g.MAX_VALUE_16BITS||this.centralDirSize===g.MAX_VALUE_32BITS||this.centralDirOffset===g.MAX_VALUE_32BITS){if(this.zip64=!0,a=this.reader.lastIndexOfSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),-1===a)throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");this.reader.setIndex(a),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}},prepareReader:function(a){var b=g.getTypeOf(a);this.reader="string"!==b||j.uint8array?"nodebuffer"===b?new e(a):new f(g.transformTo("uint8array",a)):new d(a,this.loadOptions.optimizedBinaryString)},load:function(a){this.prepareReader(a),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},b.exports=c},{"./nodeBufferReader":12,"./object":13,"./signature":14,"./stringReader":15,"./support":17,"./uint8ArrayReader":18,"./utils":21,"./zipEntry":23}],23:[function(a,b){"use strict";function c(a,b){this.options=a,this.loadOptions=b}var d=a("./stringReader"),e=a("./utils"),f=a("./compressedObject"),g=a("./object");c.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},prepareCompressedContent:function(a,b,c){return function(){var d=a.index;a.setIndex(b);var e=a.readData(c);return a.setIndex(d),e}},prepareContent:function(a,b,c,d,f){return function(){var a=e.transformTo(d.uncompressInputType,this.getCompressedContent()),b=d.uncompress(a);if(b.length!==f)throw new Error("Bug : uncompressed data size mismatch");return b}},readLocalPart:function(a){var b,c;if(a.skip(22),this.fileNameLength=a.readInt(2),c=a.readInt(2),this.fileName=a.readString(this.fileNameLength),a.skip(c),-1==this.compressedSize||-1==this.uncompressedSize)throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize == -1 || uncompressedSize == -1)");if(b=e.findCompression(this.compressionMethod),null===b)throw new Error("Corrupted zip : compression "+e.pretty(this.compressionMethod)+" unknown (inner file : "+this.fileName+")");if(this.decompressed=new f,this.decompressed.compressedSize=this.compressedSize,this.decompressed.uncompressedSize=this.uncompressedSize,this.decompressed.crc32=this.crc32,this.decompressed.compressionMethod=this.compressionMethod,this.decompressed.getCompressedContent=this.prepareCompressedContent(a,a.index,this.compressedSize,b),this.decompressed.getContent=this.prepareContent(a,a.index,this.compressedSize,b,this.uncompressedSize),this.loadOptions.checkCRC32&&(this.decompressed=e.transformTo("string",this.decompressed.getContent()),g.crc32(this.decompressed)!==this.crc32))throw new Error("Corrupted zip : CRC32 mismatch")},readCentralPart:function(a){if(this.versionMadeBy=a.readString(2),this.versionNeeded=a.readInt(2),this.bitFlag=a.readInt(2),this.compressionMethod=a.readString(2),this.date=a.readDate(),this.crc32=a.readInt(4),this.compressedSize=a.readInt(4),this.uncompressedSize=a.readInt(4),this.fileNameLength=a.readInt(2),this.extraFieldsLength=a.readInt(2),this.fileCommentLength=a.readInt(2),this.diskNumberStart=a.readInt(2),this.internalFileAttributes=a.readInt(2),this.externalFileAttributes=a.readInt(4),this.localHeaderOffset=a.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");this.fileName=a.readString(this.fileNameLength),this.readExtraFields(a),this.parseZIP64ExtraField(a),this.fileComment=a.readString(this.fileCommentLength),this.dir=16&this.externalFileAttributes?!0:!1},parseZIP64ExtraField:function(){if(this.extraFields[1]){var a=new d(this.extraFields[1].value);this.uncompressedSize===e.MAX_VALUE_32BITS&&(this.uncompressedSize=a.readInt(8)),this.compressedSize===e.MAX_VALUE_32BITS&&(this.compressedSize=a.readInt(8)),this.localHeaderOffset===e.MAX_VALUE_32BITS&&(this.localHeaderOffset=a.readInt(8)),this.diskNumberStart===e.MAX_VALUE_32BITS&&(this.diskNumberStart=a.readInt(4))}},readExtraFields:function(a){var b,c,d,e=a.index;for(this.extraFields=this.extraFields||{};a.index<e+this.extraFieldsLength;)b=a.readInt(2),c=a.readInt(2),d=a.readString(c),this.extraFields[b]={id:b,length:c,value:d}},handleUTF8:function(){if(this.useUTF8())this.fileName=g.utf8decode(this.fileName),this.fileComment=g.utf8decode(this.fileComment);else{var a=this.findExtraFieldUnicodePath();null!==a&&(this.fileName=a);var b=this.findExtraFieldUnicodeComment();null!==b&&(this.fileComment=b)}},findExtraFieldUnicodePath:function(){var a=this.extraFields[28789];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileName)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null},findExtraFieldUnicodeComment:function(){var a=this.extraFields[25461];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileComment)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null}},b.exports=c},{"./compressedObject":2,"./object":13,"./stringReader":15,"./utils":21}],24:[function(a,b){"use strict";var c=a("./lib/utils/common").assign,d=a("./lib/deflate"),e=a("./lib/inflate"),f=a("./lib/zlib/constants"),g={};c(g,d,e,f),b.exports=g},{"./lib/deflate":25,"./lib/inflate":26,"./lib/utils/common":27,"./lib/zlib/constants":30}],25:[function(a,b,c){"use strict";function d(a,b){var c=new s(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}function f(a,b){return b=b||{},b.gzip=!0,d(a,b)}var g=a("./zlib/deflate.js"),h=a("./utils/common"),i=a("./utils/strings"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=0,m=4,n=0,o=1,p=-1,q=0,r=8,s=function(a){this.options=h.assign({level:p,method:r,chunkSize:16384,windowBits:15,memLevel:8,strategy:q,to:""},a||{});var b=this.options;b.raw&&b.windowBits>0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==n)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)
+};s.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?m:l,e.input="string"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),c=g.deflate(e,d),c!==o&&c!==n)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&d===m)&&this.onData("string"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&c!==o);return d===m?(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===n):!0},s.prototype.onData=function(a){this.chunks.push(a)},s.prototype.onEnd=function(a){a===n&&(this.result="string"===this.options.to?this.chunks.join(""):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=s,c.deflate=d,c.deflateRaw=e,c.gzip=f},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(a,b,c){"use strict";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a("./zlib/inflate.js"),g=a("./utils/common"),h=a("./utils/strings"),i=a("./zlib/constants"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=a("./zlib/gzheader"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:""},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?i.Z_FINISH:i.Z_NO_FLUSH,l.input="string"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),c=f.inflate(l,i.Z_NO_FLUSH),c!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&("string"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d===i.Z_FINISH?(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK):!0},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if("object"!=typeof c)throw new TypeError(c+"must be non-object");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){"use strict";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c="",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a("./common"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(h){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(h){g=!1}for(var i=new e.Buf8(256),j=0;256>j;j++)i[j]=j>=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,h=b||a.length,j=new Array(2*h);for(e=0,c=0;h>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=i[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&h>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+i[a[c]]>b?c:b}},{"./common":27}],29:[function(a,b){"use strict";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){"use strict";function c(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function d(a,b,c,d){var f=e,g=d+c;a=-1^a;for(var h=d;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var e=c();b.exports=d},{}],32:[function(a,b,c){"use strict";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-jb?a.strstart-(a.w_size-jb):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ib,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ib-(m-f),f=m-ib,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-jb)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=hb)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+1])&a.hash_mask;a.insert&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+hb-1])&a.hash_mask,a.prev[f&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=f,f++,a.insert--,!(a.lookahead+a.insert<hb)););}while(a.lookahead<jb&&0!==a.strm.avail_in)}function n(a,b){var c=65535;for(c>a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return sb;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return sb;if(a.strstart-a.block_start>=a.w_size-jb&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?sb:sb}function o(a,b){for(var c,d;;){if(a.lookahead<jb){if(m(a),a.lookahead<jb&&b===H)return sb;if(0===a.lookahead)break}if(c=0,a.lookahead>=hb&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),0!==c&&a.strstart-c<=a.w_size-jb&&(a.match_length=l(a,c)),a.match_length>=hb)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-hb),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=hb){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart;while(0!==--a.match_length);a.strstart++}else a.strstart+=a.match_length,a.match_length=0,a.ins_h=a.window[a.strstart],a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+1])&a.hash_mask;else d=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++;if(d&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=a.strstart<hb-1?a.strstart:hb-1,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function p(a,b){for(var c,d,e;;){if(a.lookahead<jb){if(m(a),a.lookahead<jb&&b===H)return sb;if(0===a.lookahead)break}if(c=0,a.lookahead>=hb&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),a.prev_length=a.match_length,a.prev_match=a.match_start,a.match_length=hb-1,0!==c&&a.prev_length<a.max_lazy_match&&a.strstart-c<=a.w_size-jb&&(a.match_length=l(a,c),a.match_length<=5&&(a.strategy===S||a.match_length===hb&&a.strstart-a.match_start>4096)&&(a.match_length=hb-1)),a.prev_length>=hb&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-hb,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-hb),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart);while(0!==--a.prev_length);if(a.match_available=0,a.match_length=hb-1,a.strstart++,d&&(h(a,!1),0===a.strm.avail_out))return sb}else if(a.match_available){if(d=D._tr_tally(a,0,a.window[a.strstart-1]),d&&h(a,!1),a.strstart++,a.lookahead--,0===a.strm.avail_out)return sb}else a.match_available=1,a.strstart++,a.lookahead--}return a.match_available&&(d=D._tr_tally(a,0,a.window[a.strstart-1]),a.match_available=0),a.insert=a.strstart<hb-1?a.strstart:hb-1,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function q(a,b){for(var c,d,e,f,g=a.window;;){if(a.lookahead<=ib){if(m(a),a.lookahead<=ib&&b===H)return sb;if(0===a.lookahead)break}if(a.match_length=0,a.lookahead>=hb&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ib;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ib-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=hb?(c=D._tr_tally(a,1,a.match_length-hb),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return sb;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=hb-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*fb),this.dyn_dtree=new C.Buf16(2*(2*db+1)),this.bl_tree=new C.Buf16(2*(2*eb+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(gb+1),this.heap=new C.Buf16(2*cb+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*cb+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?lb:qb,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<<i.w_bits,i.w_mask=i.w_size-1,i.hash_bits=f+7,i.hash_size=1<<i.hash_bits,i.hash_mask=i.hash_size-1,i.hash_shift=~~((i.hash_bits+hb-1)/hb),i.window=new C.Buf8(2*i.w_size),i.head=new C.Buf16(i.hash_size),i.prev=new C.Buf16(i.w_size),i.lit_bufsize=1<<f+6,i.pending_buf_size=4*i.lit_bufsize,i.pending_buf=new C.Buf8(i.pending_buf_size),i.d_buf=i.lit_bufsize>>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===rb&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===lb)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=mb):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,wb),h.status=qb);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=kb),m+=31-m%31,h.status=qb,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===mb)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=nb)}else h.status=nb;if(h.status===nb)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.name.length?255&h.gzhead.name.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=ob)}else h.status=ob;if(h.status===ob)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.comment.length?255&h.gzhead.comment.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=pb)}else h.status=pb;if(h.status===pb&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=qb)):h.status=qb),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===rb&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==rb){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===ub||o===vb)&&(h.status=rb),o===sb||o===ub)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===tb&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==lb&&b!==mb&&b!==nb&&b!==ob&&b!==pb&&b!==qb&&b!==rb?d(a,O):(a.state=null,b===qb?d(a,P):M)):O}var B,C=a("../utils/common"),D=a("./trees"),E=a("./adler32"),F=a("./crc32"),G=a("./messages"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,ab=29,bb=256,cb=bb+1+ab,db=30,eb=19,fb=2*cb+1,gb=15,hb=3,ib=258,jb=ib+hb+1,kb=32,lb=42,mb=69,nb=73,ob=91,pb=103,qb=113,rb=666,sb=1,tb=2,ub=3,vb=4,wb=3,xb=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new xb(0,0,0,0,n),new xb(4,4,8,4,o),new xb(4,5,16,8,o),new xb(4,6,32,32,o),new xb(4,4,16,16,p),new xb(8,16,32,32,p),new xb(8,16,128,128,p),new xb(8,32,128,256,p),new xb(32,128,258,1024,p),new xb(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(a,b){"use strict";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){"use strict";var c=30,d=12;b.exports=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;e=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=e.dmax,l=e.wsize,m=e.whave,n=e.wnext,o=e.window,p=e.hold,q=e.bits,r=e.lencode,s=e.distcode,t=(1<<e.lenbits)-1,u=(1<<e.distbits)-1;a:do{15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=r[p&t];b:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<<w)-1)];continue b}if(32&w){e.mode=d;break a}a.msg="invalid literal/length code",e.mode=c;break a}x=65535&v,w&=15,w&&(w>q&&(p+=B[f++]<<q,q+=8),x+=p&(1<<w)-1,p>>>=w,q-=w),15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=s[p&u];c:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<<w)-1)];continue c}a.msg="invalid distance code",e.mode=c;break a}if(y=65535&v,w&=15,w>q&&(p+=B[f++]<<q,q+=8,w>q&&(p+=B[f++]<<q,q+=8)),y+=p&(1<<w)-1,y>k){a.msg="invalid distance too far back",e.mode=c;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&e.sane){a.msg="invalid distance too far back",e.mode=c;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<<q)-1,a.next_in=f,a.next_out=h,a.avail_in=g>f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),e.hold=p,e.bits=q}},{}],35:[function(a,b,c){"use strict";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg="",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(ob),b.distcode=b.distdyn=new r.Buf32(pb),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,rb)}function k(a){if(sb){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),sb=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<<f.wbits,f.wnext=0,f.whave=0,f.window=new r.Buf8(f.wsize)),d>=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whave<f.wsize&&(f.whave+=e))),0}function m(a,b){var c,e,f,g,h,i,j,m,n,o,p,q,ob,pb,qb,rb,sb,tb,ub,vb,wb,xb,yb,zb,Ab=0,Bb=new r.Buf8(4),Cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!a||!a.state||!a.output||!a.input&&0!==a.avail_in)return F;c=a.state,c.mode===V&&(c.mode=W),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,o=i,p=j,xb=C;a:for(;;)switch(c.mode){case K:if(0===c.wrap){c.mode=W;break}for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(2&c.wrap&&35615===m){c.check=0,Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg="incorrect header check",c.mode=lb;break}if((15&m)!==J){a.msg="unknown compression method",c.mode=lb;break}if(m>>>=4,n-=4,wb=(15&m)+8,0===c.wbits)c.wbits=wb;else if(wb>c.wbits){a.msg="invalid window size",c.mode=lb;break}c.dmax=1<<wb,a.adler=c.check=1,c.mode=512&m?T:V,m=0,n=0;break;case L:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.flags=m,(255&c.flags)!==J){a.msg="unknown compression method",c.mode=lb;break}if(57344&c.flags){a.msg="unknown header flags set",c.mode=lb;break}c.head&&(c.head.text=m>>8&1),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.time=m),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,Bb[2]=m>>>16&255,Bb[3]=m>>>24&255,c.check=t(c.check,Bb,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.xflags=255&m,c.head.os=m>>8),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length=m,c.head&&(c.head.extra_len=m),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wb=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wb)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.name+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.comment+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(65535&c.check)){a.msg="header crc mismatch",c.mode=lb;break}m=0,n=0}c.head&&(c.head.hcrc=c.flags>>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}a.adler=c.check=d(m),m=0,n=0,c.mode=U;case U:if(0===c.havedict)return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,E;a.adler=c.check=1,c.mode=V;case V:if(b===A||b===B)break a;case W:if(c.last){m>>>=7&n,n-=7&n,c.mode=ib;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}switch(c.last=1&m,m>>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=bb,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg="invalid block type",c.mode=lb}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if((65535&m)!==(m>>>16^65535)){a.msg="invalid stored block lengths",c.mode=lb;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.nlen=(31&m)+257,m>>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg="too many length or distance symbols",c.mode=lb;break}c.have=0,c.mode=_;case _:for(;c.have<c.ncode;){for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.lens[Cb[c.have++]]=7&m,m>>>=3,n-=3}for(;c.have<19;)c.lens[Cb[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,yb={bits:c.lenbits},xb=v(w,c.lens,0,19,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid code lengths set",c.mode=lb;break}c.have=0,c.mode=ab;case ab:for(;c.have<c.nlen+c.ndist;){for(;Ab=c.lencode[m&(1<<c.lenbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(16>sb)m>>>=qb,n-=qb,c.lens[c.have++]=sb;else{if(16===sb){for(zb=qb+2;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m>>>=qb,n-=qb,0===c.have){a.msg="invalid bit length repeat",c.mode=lb;break}wb=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sb){for(zb=qb+3;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qb,n-=qb,wb=0,q=3+(7&m),m>>>=3,n-=3}else{for(zb=qb+7;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qb,n-=qb,wb=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg="invalid bit length repeat",c.mode=lb;break}for(;q--;)c.lens[c.have++]=wb}}if(c.mode===lb)break;if(0===c.lens[256]){a.msg="invalid code -- missing end-of-block",c.mode=lb;break}if(c.lenbits=9,yb={bits:c.lenbits},xb=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid literal/lengths set",c.mode=lb;break}if(c.distbits=6,c.distcode=c.distdyn,yb={bits:c.distbits},xb=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,yb),c.distbits=yb.bits,xb){a.msg="invalid distances set",c.mode=lb;break}if(c.mode=bb,b===B)break a;case bb:c.mode=cb;case cb:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1);break}for(c.back=0;Ab=c.lencode[m&(1<<c.lenbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(rb&&0===(240&rb)){for(tb=qb,ub=rb,vb=sb;Ab=c.lencode[vb+((m&(1<<tb+ub)-1)>>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,c.length=sb,0===rb){c.mode=hb;break}if(32&rb){c.back=-1,c.mode=V;break}if(64&rb){a.msg="invalid literal/length code",c.mode=lb;break}c.extra=15&rb,c.mode=db;case db:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=eb;case eb:for(;Ab=c.distcode[m&(1<<c.distbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(0===(240&rb)){for(tb=qb,ub=rb,vb=sb;Ab=c.distcode[vb+((m&(1<<tb+ub)-1)>>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,64&rb){a.msg="invalid distance code",c.mode=lb;break}c.offset=sb,c.extra=15&rb,c.mode=fb;case fb:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.offset+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg="invalid distance too far back",c.mode=lb;break}c.mode=gb;case gb:if(0===j)break a;
+if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg="invalid distance too far back",c.mode=lb;break}q>c.wnext?(q-=c.wnext,ob=c.wsize-q):ob=c.wnext-q,q>c.length&&(q=c.length),pb=c.window}else pb=f,ob=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pb[ob++];while(--q);0===c.length&&(c.mode=cb);break;case hb:if(0===j)break a;f[h++]=c.length,j--,c.mode=cb;break;case ib:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<<n,n+=8}if(p-=j,a.total_out+=p,c.total+=p,p&&(a.adler=c.check=c.flags?t(c.check,f,p,h-p):s(c.check,f,p,h-p)),p=j,(c.flags?m:d(m))!==c.check){a.msg="incorrect data check",c.mode=lb;break}m=0,n=0}c.mode=jb;case jb:if(c.wrap&&c.flags){for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(4294967295&c.total)){a.msg="incorrect length check",c.mode=lb;break}m=0,n=0}c.mode=kb;case kb:xb=D;break a;case lb:xb=G;break a;case mb:return H;case nb:default:return F}return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,(c.wsize||p!==a.avail_out&&c.mode<lb&&(c.mode<ib||b!==z))&&l(a,a.output,a.next_out,p-a.avail_out)?(c.mode=mb,H):(o-=a.avail_in,p-=a.avail_out,a.total_in+=o,a.total_out+=p,c.total+=p,c.wrap&&p&&(a.adler=c.check=c.flags?t(c.check,f,p,a.next_out-p):s(c.check,f,p,a.next_out-p)),a.data_type=c.bits+(c.last?64:0)+(c.mode===V?128:0)+(c.mode===bb||c.mode===Y?256:0),(0===o&&0===p||b===z)&&xb===C&&(xb=I),xb)}function n(a){if(!a||!a.state)return F;var b=a.state;return b.window&&(b.window=null),a.state=null,C}function o(a,b){var c;return a&&a.state?(c=a.state,0===(2&c.wrap)?F:(c.head=b,b.done=!1,C)):F}var p,q,r=a("../utils/common"),s=a("./adler32"),t=a("./crc32"),u=a("./inffast"),v=a("./inftrees"),w=0,x=1,y=2,z=4,A=5,B=6,C=0,D=1,E=2,F=-2,G=-3,H=-4,I=-5,J=8,K=1,L=2,M=3,N=4,O=5,P=6,Q=7,R=8,S=9,T=10,U=11,V=12,W=13,X=14,Y=15,Z=16,$=17,_=18,ab=19,bb=20,cb=21,db=22,eb=23,fb=24,gb=25,hb=26,ib=27,jb=28,kb=29,lb=30,mb=31,nb=32,ob=852,pb=592,qb=15,rb=qb,sb=!0;c.inflateReset=g,c.inflateReset2=h,c.inflateResetKeep=f,c.inflateInit=j,c.inflateInit2=i,c.inflate=m,c.inflateEnd=n,c.inflateGetHeader=o,c.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./inffast":34,"./inftrees":36}],36:[function(a,b){"use strict";var c=a("../utils/common"),d=15,e=852,f=592,g=0,h=1,i=2,j=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],k=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],l=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],m=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];b.exports=function(a,b,n,o,p,q,r,s){var t,u,v,w,x,y,z,A,B,C=s.bits,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=null,O=0,P=new c.Buf16(d+1),Q=new c.Buf16(d+1),R=null,S=0;for(D=0;d>=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[n+E]]++;for(H=C,G=d;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;d>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===g||1!==G))return-1;for(Q[1]=0,D=1;d>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[n+E]&&(r[Q[b[n+E]]++]=E);if(a===g?(N=R=r,y=19):a===h?(N=j,O-=257,R=k,S-=257,y=256):(N=l,R=m,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<<H,w=L-1,a===h&&L>e||a===i&&L>f)return 1;for(var T=0;;){T++,z=D-J,r[E]<y?(A=0,B=r[E]):r[E]>y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<<D-J,u=1<<I,F=u;do u-=t,p[x+(M>>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<<D-1;M&t;)t>>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[n+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<<I;G>I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<<I,a===h&&L>e||a===i&&L>f)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{"../utils/common":27}],37:[function(a,b){"use strict";b.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],38:[function(a,b,c){"use strict";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?gb[a]:gb[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>V-c?(a.bi_buf|=b<<a.bi_valid&65535,f(a,a.bi_buf),a.bi_buf=b>>V-a.bi_valid,a.bi_valid+=c-V):(a.bi_buf|=b<<a.bi_valid&65535,a.bi_valid+=c)}function h(a,b,c){g(a,c[2*b],c[2*b+1])}function i(a,b){var c=0;do c|=1&a,a>>>=1,c<<=1;while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;U>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;T>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(U+1),g=0;for(d=1;U>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(U+1);for(c=0,d=0;O-1>d;d++)for(ib[d]=c,a=0;a<1<<_[d];a++)hb[c++]=d;for(hb[c-1]=d,e=0,d=0;16>d;d++)for(jb[d]=e,a=0;a<1<<ab[d];a++)gb[e++]=d;for(e>>=7;R>d;d++)for(jb[d]=e<<7,a=0;a<1<<ab[d]-7;a++)gb[256+e++]=d;for(b=0;U>=b;b++)f[b]=0;for(a=0;143>=a;)eb[2*a+1]=8,a++,f[8]++;for(;255>=a;)eb[2*a+1]=9,a++,f[9]++;for(;279>=a;)eb[2*a+1]=7,a++,f[7]++;for(;287>=a;)eb[2*a+1]=8,a++,f[8]++;for(l(eb,Q+1,f),a=0;R>a;a++)fb[2*a+1]=5,fb[2*a]=i(a,5);kb=new nb(eb,_,P+1,Q,U),lb=new nb(fb,ab,0,R,U),mb=new nb(new Array(0),bb,0,S,W)}function n(a){var b;for(b=0;Q>b;b++)a.dyn_ltree[2*b]=0;for(b=0;R>b;b++)a.dyn_dtree[2*b]=0;for(b=0;S>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*X]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]<a[f]||a[e]===a[f]&&d[b]<=d[c]}function r(a,b,c){for(var d=a.heap[c],e=c<<1;e<=a.heap_len&&(e<a.heap_len&&q(b,a.heap[e+1],a.heap[e],a.depth)&&e++,!q(b,d,a.heap[e],a.depth));)a.heap[c]=a.heap[e],c=e,e<<=1;a.heap[c]=d}function s(a,b,c){var d,f,i,j,k=0;if(0!==a.last_lit)do d=a.pending_buf[a.d_buf+2*k]<<8|a.pending_buf[a.d_buf+2*k+1],f=a.pending_buf[a.l_buf+k],k++,0===d?h(a,f,b):(i=hb[f],h(a,i+P+1,b),j=_[i],0!==j&&(f-=ib[i],g(a,f,j)),d--,i=e(d),h(a,i,c),j=ab[i],0!==j&&(d-=jb[i],g(a,d,j)));while(k<a.last_lit);h(a,X,b)}function t(a,b){var c,d,e,f=b.dyn_tree,g=b.stat_desc.static_tree,h=b.stat_desc.has_stree,i=b.stat_desc.elems,j=-1;for(a.heap_len=0,a.heap_max=T,c=0;i>c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++h<i&&e===g||(j>h?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*Y]++):10>=h?a.bl_tree[2*Z]++:a.bl_tree[2*$]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++j<k&&e===i)){if(l>j){do h(a,e,a.bl_tree);while(0!==--j)}else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,Y,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,Z,a.bl_tree),g(a,j-3,3)):(h(a,$,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=S-1;b>=3&&0===a.bl_tree[2*cb[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*cb[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;P>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){pb||(m(),pb=!0),a.l_desc=new ob(a.dyn_ltree,kb),a.d_desc=new ob(a.dyn_dtree,lb),a.bl_desc=new ob(a.bl_tree,mb),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,X,eb),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,eb,fb)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(hb[c]+P+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a("../utils/common"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=3,N=258,O=29,P=256,Q=P+1+O,R=30,S=19,T=2*Q+1,U=15,V=16,W=7,X=256,Y=16,Z=17,$=18,_=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ab=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],bb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],db=512,eb=new Array(2*(Q+2));d(eb);var fb=new Array(2*R);d(fb);var gb=new Array(db);d(gb);var hb=new Array(N-M+1);d(hb);var ib=new Array(O);d(ib);var jb=new Array(R);d(jb);var kb,lb,mb,nb=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},ob=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},pb=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{"../utils/common":27}],39:[function(a,b){"use strict";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)});
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/linq.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/linq.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/linq.js	(revision 101)
@@ -0,0 +1,2841 @@
+/*--------------------------------------------------------------------------
+ * linq.js - LINQ for JavaScript
+ * ver 3.0.3-Beta4 (Oct. 9th, 2012)
+ *
+ * created and maintained by neuecc <ils@neue.cc>
+ * licensed under MIT License
+ * http://linqjs.codeplex.com/
+ *------------------------------------------------------------------------*/
+
+(function (root, undefined) {
+    // ReadOnly Function
+    var Functions = {
+        Identity: function (x) { return x; },
+        True: function () { return true; },
+        Blank: function () { }
+    };
+
+    // const Type
+    var Types = {
+        Boolean: typeof true,
+        Number: typeof 0,
+        String: typeof "",
+        Object: typeof {},
+        Undefined: typeof undefined,
+        Function: typeof function () { }
+    };
+
+    // private utility methods
+    var Utils = {
+        // Create anonymous function from lambda expression string
+        createLambda: function (expression) {
+            if (expression == null) return Functions.Identity;
+            if (typeof expression == Types.String) {
+                if (expression == "") {
+                    return Functions.Identity;
+                }
+                else if (expression.indexOf("=>") == -1) {
+                    var regexp = new RegExp("[$]+", "g");
+
+                    var maxLength = 0;
+                    var match;
+                    while (match = regexp.exec(expression)) {
+                        var paramNumber = match[0].length;
+                        if (paramNumber > maxLength) {
+                            maxLength = paramNumber;
+                        }
+                    }
+
+                    var argArray = [];
+                    for (var i = 1; i <= maxLength; i++) {
+                        var dollar = "";
+                        for (var j = 0; j < i; j++) {
+                            dollar += "$";
+                        }
+                        argArray.push(dollar);
+                    }
+
+                    var args = Array.prototype.join.call(argArray, ",");
+
+                    return new Function(args, "return " + expression);
+                }
+                else {
+                    var expr = expression.match(/^[(\s]*([^()]*?)[)\s]*=>(.*)/);
+                    return new Function(expr[1], "return " + expr[2]);
+                }
+            }
+            return expression;
+        },
+
+        isIEnumerable: function (obj) {
+            if (typeof Enumerator !== Types.Undefined) {
+                try {
+                    new Enumerator(obj); // check JScript(IE)'s Enumerator
+                    return true;
+                }
+                catch (e) { }
+            }
+
+            return false;
+        },
+
+        // IE8's defineProperty is defined but cannot use, therefore check defineProperties
+        defineProperty: (Object.defineProperties != null)
+            ? function (target, methodName, value) {
+                Object.defineProperty(target, methodName, {
+                    enumerable: false,
+                    configurable: true,
+                    writable: true,
+                    value: value
+                })
+            }
+            : function (target, methodName, value) {
+                target[methodName] = value;
+            },
+
+        compare: function (a, b) {
+            return (a === b) ? 0
+                 : (a > b) ? 1
+                 : -1;
+        },
+
+        dispose: function (obj) {
+            if (obj != null) obj.dispose();
+        }
+    };
+
+    // IEnumerator State
+    var State = { Before: 0, Running: 1, After: 2 };
+
+    // "Enumerator" is conflict JScript's "Enumerator"
+    var IEnumerator = function (initialize, tryGetNext, dispose) {
+        var yielder = new Yielder();
+        var state = State.Before;
+
+        this.current = yielder.current;
+        this.reset = function () { throw new Error('Reset is not supported'); };
+
+        this.moveNext = function () {
+            try {
+                switch (state) {
+                    case State.Before:
+                        state = State.Running;
+                        initialize();
+                        // fall through
+                    case State.Running:
+                        if (tryGetNext.apply(yielder)) {
+                            return true;
+                        }
+                        else {
+                            this.dispose();
+                            return false;
+                        }
+                    case State.After:
+                        return false;
+                }
+            }
+            catch (e) {
+                this.dispose();
+                throw e;
+            }
+        };
+
+        this.dispose = function () {
+            if (state != State.Running) return;
+
+            try {
+                dispose();
+            }
+            finally {
+                state = State.After;
+            }
+        };
+    };
+    var $asm = {};
+    ss.initAssembly($asm, 'linq');
+    ss.initClass(IEnumerator, $asm, {}, null, [ss.IDisposable]);
+
+    // for tryGetNext
+    var Yielder = function () {
+        var current = null;
+        this.current = function () { return current; };
+        this.yieldReturn = function (value) {
+            current = value;
+            return true;
+        };
+        this.yieldBreak = function () {
+            return false;
+        };
+    };
+
+    // Enumerable constuctor
+    var Enumerable = function (getEnumerator) {
+        this.getEnumerator = getEnumerator;
+    };
+    ss.initClass(Enumerable, $asm, {}, null, [ss.IEnumerable]);
+
+    // Utility
+
+    Enumerable.Utils = {}; // container
+
+    Enumerable.Utils.createLambda = function (expression) {
+        return Utils.createLambda(expression);
+    };
+
+    Enumerable.Utils.createEnumerable = function (getEnumerator) {
+        return new Enumerable(getEnumerator);
+    };
+
+    Enumerable.Utils.createEnumerator = function (initialize, tryGetNext, dispose) {
+        return new IEnumerator(initialize, tryGetNext, dispose);
+    };
+
+    Enumerable.Utils.extendTo = function (type) {
+        var typeProto = type.prototype;
+        var enumerableProto;
+
+        if (type === Array) {
+            enumerableProto = ArrayEnumerable.prototype;
+            Utils.defineProperty(typeProto, "getSource", function () {
+                return this;
+            });
+        }
+        else {
+            enumerableProto = Enumerable.prototype;
+            Utils.defineProperty(typeProto, "getEnumerator", function () {
+                return Enumerable.from(this).getEnumerator();
+            });
+        }
+
+        for (var methodName in enumerableProto) {
+            var func = enumerableProto[methodName];
+
+            // already extended
+            if (typeProto[methodName] == func) continue;
+
+            // already defined(example Array#reverse/join/forEach...)
+            if (typeProto[methodName] != null) {
+                methodName = methodName + "ByLinq";
+                if (typeProto[methodName] == func) continue; // recheck
+            }
+
+            if (func instanceof Function) {
+                Utils.defineProperty(typeProto, methodName, func);
+            }
+        }
+    };
+
+    // Generator
+
+    Enumerable.choice = function () // variable argument
+    {
+        var args = arguments;
+
+        return new Enumerable(function () {
+            return new IEnumerator(
+                function () {
+                    args = (args[0] instanceof Array) ? args[0]
+                        : (args[0].getEnumerator != null) ? args[0].toArray()
+                        : args;
+                },
+                function () {
+                    return this.yieldReturn(args[Math.floor(Math.random() * args.length)]);
+                },
+                Functions.Blank);
+        });
+    };
+
+    Enumerable.cycle = function () // variable argument
+    {
+        var args = arguments;
+
+        return new Enumerable(function () {
+            var index = 0;
+            return new IEnumerator(
+                function () {
+                    args = (args[0] instanceof Array) ? args[0]
+                        : (args[0].getEnumerator != null) ? args[0].toArray()
+                        : args;
+                },
+                function () {
+                    if (index >= args.length) index = 0;
+                    return this.yieldReturn(args[index++]);
+                },
+                Functions.Blank);
+        });
+    };
+
+    Enumerable.empty = function () {
+        return new Enumerable(function () {
+            return new IEnumerator(
+                Functions.Blank,
+                function () { return false; },
+                Functions.Blank);
+        });
+    };
+
+    Enumerable.from = function (obj) {
+        if (obj == null) {
+            return Enumerable.empty();
+        }
+        if (obj instanceof Enumerable) {
+            return obj;
+        }
+        if (typeof obj == Types.Number || typeof obj == Types.Boolean) {
+            return Enumerable.repeat(obj, 1);
+        }
+        if (typeof obj == Types.String) {
+            return new Enumerable(function () {
+                var index = 0;
+                return new IEnumerator(
+                    Functions.Blank,
+                    function () {
+                        return (index < obj.length) ? this.yieldReturn(obj.charAt(index++)) : false;
+                    },
+                    Functions.Blank);
+            });
+        }
+        var ienum = ss.safeCast(obj, ss.IEnumerable);
+        if (ienum) {
+            var enumerator;
+            return new Enumerable(function () {
+                return new IEnumerator(
+                    function () { enumerator = ss.getEnumerator(ienum); },
+                    function () {
+                        var ok = enumerator.moveNext();
+                        return ok ? this.yieldReturn(enumerator.current()) : false;
+                    },
+                    function () {
+                        var disposable = ss.safeCast(enumerator, ss.IDisposable);
+                        if (disposable) {
+                            disposable.dispose();
+                        }
+                    }
+                );
+            });
+        }
+
+        if (typeof obj != Types.Function) {
+            // array or array like object
+            if (typeof obj.length == Types.Number) {
+                return new ArrayEnumerable(obj);
+            }
+
+            // JScript's IEnumerable
+            if (!(obj instanceof Object) && Utils.isIEnumerable(obj)) {
+                return new Enumerable(function () {
+                    var isFirst = true;
+                    var enumerator;
+                    return new IEnumerator(
+                        function () { enumerator = new Enumerator(obj); },
+                        function () {
+                            if (isFirst) isFirst = false;
+                            else enumerator.moveNext();
+
+                            return (enumerator.atEnd()) ? false : this.yieldReturn(enumerator.item());
+                        },
+                        Functions.Blank);
+                });
+            }
+
+            // WinMD IIterable<T>
+            if (typeof Windows === Types.Object && typeof obj.first === Types.Function) {
+                return new Enumerable(function () {
+                    var isFirst = true;
+                    var enumerator;
+                    return new IEnumerator(
+                        function () { enumerator = obj.first(); },
+                        function () {
+                            if (isFirst) isFirst = false;
+                            else enumerator.moveNext();
+
+                            return (enumerator.hasCurrent) ? this.yieldReturn(enumerator.current) : this.yieldBreak();
+                        },
+                        Functions.Blank);
+                });
+            }
+        }
+
+        // case function/object : Create keyValuePair[]
+        return new Enumerable(function () {
+            var array = [];
+            var index = 0;
+
+            return new IEnumerator(
+                function () {
+                    for (var key in obj) {
+                        var value = obj[key];
+                        if (!(value instanceof Function) && Object.prototype.hasOwnProperty.call(obj, key)) {
+                            array.push({ key: key, value: value });
+                        }
+                    }
+                },
+                function () {
+                    return (index < array.length)
+                        ? this.yieldReturn(array[index++])
+                        : false;
+                },
+                Functions.Blank);
+        });
+    },
+
+    Enumerable.make = function (element) {
+        return Enumerable.repeat(element, 1);
+    };
+
+    // Overload:function(input, pattern)
+    // Overload:function(input, pattern, flags)
+    Enumerable.matches = function (input, pattern, flags) {
+        if (flags == null) flags = "";
+        if (pattern instanceof RegExp) {
+            flags += (pattern.ignoreCase) ? "i" : "";
+            flags += (pattern.multiline) ? "m" : "";
+            pattern = pattern.source;
+        }
+        if (flags.indexOf("g") === -1) flags += "g";
+
+        return new Enumerable(function () {
+            var regex;
+            return new IEnumerator(
+                function () { regex = new RegExp(pattern, flags); },
+                function () {
+                    var match = regex.exec(input);
+                    return (match) ? this.yieldReturn(match) : false;
+                },
+                Functions.Blank);
+        });
+    };
+
+    // Overload:function(start, count)
+    // Overload:function(start, count, step)
+    Enumerable.range = function (start, count, step) {
+        if (step == null) step = 1;
+
+        return new Enumerable(function () {
+            var value;
+            var index = 0;
+
+            return new IEnumerator(
+                function () { value = start - step; },
+                function () {
+                    return (index++ < count)
+                        ? this.yieldReturn(value += step)
+                        : this.yieldBreak();
+                },
+                Functions.Blank);
+        });
+    };
+
+    // Overload:function(start, count)
+    // Overload:function(start, count, step)
+    Enumerable.rangeDown = function (start, count, step) {
+        if (step == null) step = 1;
+
+        return new Enumerable(function () {
+            var value;
+            var index = 0;
+
+            return new IEnumerator(
+                function () { value = start + step; },
+                function () {
+                    return (index++ < count)
+                        ? this.yieldReturn(value -= step)
+                        : this.yieldBreak();
+                },
+                Functions.Blank);
+        });
+    };
+
+    // Overload:function(start, to)
+    // Overload:function(start, to, step)
+    Enumerable.rangeTo = function (start, to, step) {
+        if (step == null) step = 1;
+
+        if (start < to) {
+            return new Enumerable(function () {
+                var value;
+
+                return new IEnumerator(
+                function () { value = start - step; },
+                function () {
+                    var next = value += step;
+                    return (next <= to)
+                        ? this.yieldReturn(next)
+                        : this.yieldBreak();
+                },
+                Functions.Blank);
+            });
+        }
+        else {
+            return new Enumerable(function () {
+                var value;
+
+                return new IEnumerator(
+                function () { value = start + step; },
+                function () {
+                    var next = value -= step;
+                    return (next >= to)
+                        ? this.yieldReturn(next)
+                        : this.yieldBreak();
+                },
+                Functions.Blank);
+            });
+        }
+    };
+
+    // Overload:function(element)
+    // Overload:function(element, count)
+    Enumerable.repeat = function (element, count) {
+        if (count != null) return Enumerable.repeat(element).take(count);
+
+        return new Enumerable(function () {
+            return new IEnumerator(
+                Functions.Blank,
+                function () { return this.yieldReturn(element); },
+                Functions.Blank);
+        });
+    };
+
+    Enumerable.repeatWithFinalize = function (initializer, finalizer) {
+        initializer = Utils.createLambda(initializer);
+        finalizer = Utils.createLambda(finalizer);
+
+        return new Enumerable(function () {
+            var element;
+            return new IEnumerator(
+                function () { element = initializer(); },
+                function () { return this.yieldReturn(element); },
+                function () {
+                    if (element != null) {
+                        finalizer(element);
+                        element = null;
+                    }
+                });
+        });
+    };
+
+    // Overload:function(func)
+    // Overload:function(func, count)
+    Enumerable.generate = function (func, count) {
+        if (count != null) return Enumerable.generate(func).take(count);
+        func = Utils.createLambda(func);
+
+        return new Enumerable(function () {
+            return new IEnumerator(
+                Functions.Blank,
+                function () { return this.yieldReturn(func()); },
+                Functions.Blank);
+        });
+    };
+
+    // Overload:function()
+    // Overload:function(start)
+    // Overload:function(start, step)
+    Enumerable.toInfinity = function (start, step) {
+        if (start == null) start = 0;
+        if (step == null) step = 1;
+
+        return new Enumerable(function () {
+            var value;
+            return new IEnumerator(
+                function () { value = start - step; },
+                function () { return this.yieldReturn(value += step); },
+                Functions.Blank);
+        });
+    };
+
+    // Overload:function()
+    // Overload:function(start)
+    // Overload:function(start, step)
+    Enumerable.toNegativeInfinity = function (start, step) {
+        if (start == null) start = 0;
+        if (step == null) step = 1;
+
+        return new Enumerable(function () {
+            var value;
+            return new IEnumerator(
+                function () { value = start + step; },
+                function () { return this.yieldReturn(value -= step); },
+                Functions.Blank);
+        });
+    };
+
+    Enumerable.unfold = function (seed, func) {
+        func = Utils.createLambda(func);
+
+        return new Enumerable(function () {
+            var isFirst = true;
+            var value;
+            return new IEnumerator(
+                Functions.Blank,
+                function () {
+                    if (isFirst) {
+                        isFirst = false;
+                        value = seed;
+                        return this.yieldReturn(value);
+                    }
+                    value = func(value);
+                    return this.yieldReturn(value);
+                },
+                Functions.Blank);
+        });
+    };
+
+    Enumerable.defer = function (enumerableFactory) {
+
+        return new Enumerable(function () {
+            var enumerator;
+
+            return new IEnumerator(
+                function () { enumerator = Enumerable.from(enumerableFactory()).getEnumerator(); },
+                function () {
+                    return (enumerator.moveNext())
+                        ? this.yieldReturn(enumerator.current())
+                        : this.yieldBreak();
+                },
+                function () {
+                    Utils.dispose(enumerator);
+                });
+        });
+    };
+
+    // Extension Methods
+
+    /* Projection and Filtering Methods */
+
+    // Overload:function(func)
+    // Overload:function(func, resultSelector<element>)
+    // Overload:function(func, resultSelector<element, nestLevel>)
+    Enumerable.prototype.traverseBreadthFirst = function (func, resultSelector) {
+        var source = this;
+        func = Utils.createLambda(func);
+        resultSelector = Utils.createLambda(resultSelector);
+
+        return new Enumerable(function () {
+            var enumerator;
+            var nestLevel = 0;
+            var buffer = [];
+
+            return new IEnumerator(
+                function () { enumerator = source.getEnumerator(); },
+                function () {
+                    while (true) {
+                        if (enumerator.moveNext()) {
+                            buffer.push(enumerator.current());
+                            return this.yieldReturn(resultSelector(enumerator.current(), nestLevel));
+                        }
+
+                        var next = Enumerable.from(buffer).selectMany(function (x) { return func(x); });
+                        if (!next.any()) {
+                            return false;
+                        }
+                        else {
+                            nestLevel++;
+                            buffer = [];
+                            Utils.dispose(enumerator);
+                            enumerator = next.getEnumerator();
+                        }
+                    }
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    // Overload:function(func)
+    // Overload:function(func, resultSelector<element>)
+    // Overload:function(func, resultSelector<element, nestLevel>)
+    Enumerable.prototype.traverseDepthFirst = function (func, resultSelector) {
+        var source = this;
+        func = Utils.createLambda(func);
+        resultSelector = Utils.createLambda(resultSelector);
+
+        return new Enumerable(function () {
+            var enumeratorStack = [];
+            var enumerator;
+
+            return new IEnumerator(
+                function () { enumerator = source.getEnumerator(); },
+                function () {
+                    while (true) {
+                        if (enumerator.moveNext()) {
+                            var value = resultSelector(enumerator.current(), enumeratorStack.length);
+                            enumeratorStack.push(enumerator);
+                            enumerator = Enumerable.from(func(enumerator.current())).getEnumerator();
+                            return this.yieldReturn(value);
+                        }
+
+                        if (enumeratorStack.length <= 0) return false;
+                        Utils.dispose(enumerator);
+                        enumerator = enumeratorStack.pop();
+                    }
+                },
+                function () {
+                    try {
+                        Utils.dispose(enumerator);
+                    }
+                    finally {
+                        Enumerable.from(enumeratorStack).forEach(function (s) { s.dispose(); });
+                    }
+                });
+        });
+    };
+
+    Enumerable.prototype.flatten = function () {
+        var source = this;
+
+        return new Enumerable(function () {
+            var enumerator;
+            var middleEnumerator = null;
+
+            return new IEnumerator(
+                function () { enumerator = source.getEnumerator(); },
+                function () {
+                    while (true) {
+                        if (middleEnumerator != null) {
+                            if (middleEnumerator.moveNext()) {
+                                return this.yieldReturn(middleEnumerator.current());
+                            }
+                            else {
+                                middleEnumerator = null;
+                            }
+                        }
+
+                        if (enumerator.moveNext()) {
+                            if (enumerator.current() instanceof Array) {
+                                Utils.dispose(middleEnumerator);
+                                middleEnumerator = Enumerable.from(enumerator.current())
+                                    .selectMany(Functions.Identity)
+                                    .flatten()
+                                    .getEnumerator();
+                                continue;
+                            }
+                            else {
+                                return this.yieldReturn(enumerator.current());
+                            }
+                        }
+
+                        return false;
+                    }
+                },
+                function () {
+                    try {
+                        Utils.dispose(enumerator);
+                    }
+                    finally {
+                        Utils.dispose(middleEnumerator);
+                    }
+                });
+        });
+    };
+
+    Enumerable.prototype.pairwise = function (selector) {
+        var source = this;
+        selector = Utils.createLambda(selector);
+
+        return new Enumerable(function () {
+            var enumerator;
+
+            return new IEnumerator(
+                function () {
+                    enumerator = source.getEnumerator();
+                    enumerator.moveNext();
+                },
+                function () {
+                    var prev = enumerator.current();
+                    return (enumerator.moveNext())
+                        ? this.yieldReturn(selector(prev, enumerator.current()))
+                        : false;
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    // Overload:function(func)
+    // Overload:function(seed,func<value,element>)
+    Enumerable.prototype.scan = function (seed, func) {
+        var isUseSeed;
+        if (func == null) {
+            func = Utils.createLambda(seed); // arguments[0]
+            isUseSeed = false;
+        } else {
+            func = Utils.createLambda(func);
+            isUseSeed = true;
+        }
+        var source = this;
+
+        return new Enumerable(function () {
+            var enumerator;
+            var value;
+            var isFirst = true;
+
+            return new IEnumerator(
+                function () { enumerator = source.getEnumerator(); },
+                function () {
+                    if (isFirst) {
+                        isFirst = false;
+                        if (!isUseSeed) {
+                            if (enumerator.moveNext()) {
+                                return this.yieldReturn(value = enumerator.current());
+                            }
+                        }
+                        else {
+                            return this.yieldReturn(value = seed);
+                        }
+                    }
+
+                    return (enumerator.moveNext())
+                        ? this.yieldReturn(value = func(value, enumerator.current()))
+                        : false;
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    // Overload:function(selector<element>)
+    // Overload:function(selector<element,index>)
+    Enumerable.prototype.select = function (selector) {
+        selector = Utils.createLambda(selector);
+
+        if (selector.length <= 1) {
+            return new WhereSelectEnumerable(this, null, selector);
+        }
+        else {
+            var source = this;
+
+            return new Enumerable(function () {
+                var enumerator;
+                var index = 0;
+
+                return new IEnumerator(
+                    function () { enumerator = source.getEnumerator(); },
+                    function () {
+                        return (enumerator.moveNext())
+                            ? this.yieldReturn(selector(enumerator.current(), index++))
+                            : false;
+                    },
+                    function () { Utils.dispose(enumerator); });
+            });
+        }
+    };
+
+    // Overload:function(collectionSelector<element>)
+    // Overload:function(collectionSelector<element,index>)
+    // Overload:function(collectionSelector<element>,resultSelector)
+    // Overload:function(collectionSelector<element,index>,resultSelector)
+    Enumerable.prototype.selectMany = function (collectionSelector, resultSelector) {
+        var source = this;
+        collectionSelector = Utils.createLambda(collectionSelector);
+        if (resultSelector == null) resultSelector = function (a, b) { return b; };
+        resultSelector = Utils.createLambda(resultSelector);
+
+        return new Enumerable(function () {
+            var enumerator;
+            var middleEnumerator = undefined;
+            var index = 0;
+
+            return new IEnumerator(
+                function () { enumerator = source.getEnumerator(); },
+                function () {
+                    if (middleEnumerator === undefined) {
+                        if (!enumerator.moveNext()) return false;
+                    }
+                    do {
+                        if (middleEnumerator == null) {
+                            var middleSeq = collectionSelector(enumerator.current(), index++);
+                            middleEnumerator = Enumerable.from(middleSeq).getEnumerator();
+                        }
+                        if (middleEnumerator.moveNext()) {
+                            return this.yieldReturn(resultSelector(enumerator.current(), middleEnumerator.current()));
+                        }
+                        Utils.dispose(middleEnumerator);
+                        middleEnumerator = null;
+                    } while (enumerator.moveNext());
+                    return false;
+                },
+                function () {
+                    try {
+                        Utils.dispose(enumerator);
+                    }
+                    finally {
+                        Utils.dispose(middleEnumerator);
+                    }
+                });
+        });
+    };
+
+    // Overload:function(predicate<element>)
+    // Overload:function(predicate<element,index>)
+    Enumerable.prototype.where = function (predicate) {
+        predicate = Utils.createLambda(predicate);
+
+        if (predicate.length <= 1) {
+            return new WhereEnumerable(this, predicate);
+        }
+        else {
+            var source = this;
+
+            return new Enumerable(function () {
+                var enumerator;
+                var index = 0;
+
+                return new IEnumerator(
+                    function () { enumerator = source.getEnumerator(); },
+                    function () {
+                        while (enumerator.moveNext()) {
+                            if (predicate(enumerator.current(), index++)) {
+                                return this.yieldReturn(enumerator.current());
+                            }
+                        }
+                        return false;
+                    },
+                    function () { Utils.dispose(enumerator); });
+            });
+        }
+    };
+
+
+    // Overload:function(selector<element>)
+    // Overload:function(selector<element,index>)
+    Enumerable.prototype.choose = function (selector) {
+        selector = Utils.createLambda(selector);
+        var source = this;
+
+        return new Enumerable(function () {
+            var enumerator;
+            var index = 0;
+
+            return new IEnumerator(
+                function () { enumerator = source.getEnumerator(); },
+                function () {
+                    while (enumerator.moveNext()) {
+                        var result = selector(enumerator.current(), index++);
+                        if (result != null) {
+                            return this.yieldReturn(result);
+                        }
+                    }
+                    return this.yieldBreak();
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    Enumerable.prototype.ofType = function (type) {
+        var source = this;
+
+        return new Enumerable(function () {
+            var enumerator;
+
+            return new IEnumerator(
+                function () { enumerator = ss.getEnumerator(source); },
+                function () {
+                    while (enumerator.moveNext()) {
+                        var v = ss.safeCast(enumerator.current(), type);
+                        if (ss.isValue(v)) {
+                            return this.yieldReturn(v);
+                        }
+                    }
+                    return false;
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    // mutiple arguments, last one is selector, others are enumerable
+    Enumerable.prototype.zip = function () {
+        var args = arguments;
+        var selector = Utils.createLambda(arguments[arguments.length - 1]);
+
+        var source = this;
+        // optimized case:argument is 2
+        if (arguments.length == 2) {
+            var second = arguments[0];
+
+            return new Enumerable(function () {
+                var firstEnumerator;
+                var secondEnumerator;
+                var index = 0;
+
+                return new IEnumerator(
+                function () {
+                    firstEnumerator = source.getEnumerator();
+                    secondEnumerator = Enumerable.from(second).getEnumerator();
+                },
+                function () {
+                    if (firstEnumerator.moveNext() && secondEnumerator.moveNext()) {
+                        return this.yieldReturn(selector(firstEnumerator.current(), secondEnumerator.current(), index++));
+                    }
+                    return false;
+                },
+                function () {
+                    try {
+                        Utils.dispose(firstEnumerator);
+                    } finally {
+                        Utils.dispose(secondEnumerator);
+                    }
+                });
+            });
+        }
+        else {
+            return new Enumerable(function () {
+                var enumerators;
+                var index = 0;
+
+                return new IEnumerator(
+                function () {
+                    var array = Enumerable.make(source)
+                        .concat(Enumerable.from(args).takeExceptLast().select(Enumerable.from))
+                        .select(function (x) { return x.getEnumerator() })
+                        .toArray();
+                    enumerators = Enumerable.from(array);
+                },
+                function () {
+                    if (enumerators.all(function (x) { return x.moveNext() })) {
+                        var array = enumerators
+                            .select(function (x) { return x.current() })
+                            .toArray();
+                        array.push(index++);
+                        return this.yieldReturn(selector.apply(null, array));
+                    }
+                    else {
+                        return this.yieldBreak();
+                    }
+                },
+                function () {
+                    Enumerable.from(enumerators).forEach(Utils.dispose);
+                });
+            });
+        }
+    };
+
+    // mutiple arguments
+    Enumerable.prototype.merge = function () {
+        var args = arguments;
+        var source = this;
+
+        return new Enumerable(function () {
+            var enumerators;
+            var index = -1;
+
+            return new IEnumerator(
+                function () {
+                    enumerators = Enumerable.make(source)
+                        .concat(Enumerable.from(args).select(Enumerable.from))
+                        .select(function (x) { return x.getEnumerator() })
+                        .toArray();
+                },
+                function () {
+                    while (enumerators.length > 0) {
+                        index = (index >= enumerators.length - 1) ? 0 : index + 1;
+                        var enumerator = enumerators[index];
+
+                        if (enumerator.moveNext()) {
+                            return this.yieldReturn(enumerator.current());
+                        }
+                        else {
+                            enumerator.dispose();
+                            enumerators.splice(index--, 1);
+                        }
+                    }
+                    return this.yieldBreak();
+                },
+                function () {
+                    Enumerable.from(enumerators).forEach(Utils.dispose);
+                });
+        });
+    };
+
+    /* Join Methods */
+
+    // Overload:function (inner, outerKeySelector, innerKeySelector, resultSelector)
+    // Overload:function (inner, outerKeySelector, innerKeySelector, resultSelector, comparer)
+    Enumerable.prototype.join = function (inner, outerKeySelector, innerKeySelector, resultSelector, comparer) {
+        outerKeySelector = Utils.createLambda(outerKeySelector);
+        innerKeySelector = Utils.createLambda(innerKeySelector);
+        resultSelector = Utils.createLambda(resultSelector);
+        var source = this;
+
+        return new Enumerable(function () {
+            var outerEnumerator;
+            var lookup;
+            var innerElements = null;
+            var innerCount = 0;
+
+            return new IEnumerator(
+                function () {
+                    outerEnumerator = source.getEnumerator();
+                    lookup = Enumerable.from(inner).toLookup(innerKeySelector, Functions.Identity, comparer);
+                },
+                function () {
+                    while (true) {
+                        if (innerElements != null) {
+                            var innerElement = innerElements[innerCount++];
+                            if (innerElement !== undefined) {
+                                return this.yieldReturn(resultSelector(outerEnumerator.current(), innerElement));
+                            }
+
+                            innerElement = null;
+                            innerCount = 0;
+                        }
+
+                        if (outerEnumerator.moveNext()) {
+                            var key = outerKeySelector(outerEnumerator.current());
+                            innerElements = lookup.get(key).toArray();
+                        } else {
+                            return false;
+                        }
+                    }
+                },
+                function () { Utils.dispose(outerEnumerator); });
+        });
+    };
+
+    // Overload:function (inner, outerKeySelector, innerKeySelector, resultSelector)
+    // Overload:function (inner, outerKeySelector, innerKeySelector, resultSelector, comparer)
+    Enumerable.prototype.groupJoin = function (inner, outerKeySelector, innerKeySelector, resultSelector, comparer) {
+        outerKeySelector = Utils.createLambda(outerKeySelector);
+        innerKeySelector = Utils.createLambda(innerKeySelector);
+        resultSelector = Utils.createLambda(resultSelector);
+        var source = this;
+
+        return new Enumerable(function () {
+            var enumerator = source.getEnumerator();
+            var lookup = null;
+
+            return new IEnumerator(
+                function () {
+                    enumerator = source.getEnumerator();
+                    lookup = Enumerable.from(inner).toLookup(innerKeySelector, Functions.Identity, comparer);
+                },
+                function () {
+                    if (enumerator.moveNext()) {
+                        var innerElement = lookup.get(outerKeySelector(enumerator.current()));
+                        return this.yieldReturn(resultSelector(enumerator.current(), innerElement));
+                    }
+                    return false;
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    /* Set Methods */
+
+    Enumerable.prototype.all = function (predicate) {
+        predicate = Utils.createLambda(predicate);
+
+        var result = true;
+        this.forEach(function (x) {
+            if (!predicate(x)) {
+                result = false;
+                return false; // break
+            }
+        });
+        return result;
+    };
+
+    // Overload:function()
+    // Overload:function(predicate)
+    Enumerable.prototype.any = function (predicate) {
+        predicate = Utils.createLambda(predicate);
+
+        var enumerator = this.getEnumerator();
+        try {
+            if (arguments.length == 0) return enumerator.moveNext(); // case:function()
+
+            while (enumerator.moveNext()) // case:function(predicate)
+            {
+                if (predicate(enumerator.current())) return true;
+            }
+            return false;
+        }
+        finally {
+            Utils.dispose(enumerator);
+        }
+    };
+
+    Enumerable.prototype.isEmpty = function () {
+        return !this.any();
+    };
+
+    // multiple arguments
+    Enumerable.prototype.concat = function () {
+        var source = this;
+
+        if (arguments.length == 1) {
+            var second = arguments[0];
+
+            return new Enumerable(function () {
+                var firstEnumerator;
+                var secondEnumerator;
+
+                return new IEnumerator(
+                function () { firstEnumerator = source.getEnumerator(); },
+                function () {
+                    if (secondEnumerator == null) {
+                        if (firstEnumerator.moveNext()) return this.yieldReturn(firstEnumerator.current());
+                        secondEnumerator = Enumerable.from(second).getEnumerator();
+                    }
+                    if (secondEnumerator.moveNext()) return this.yieldReturn(secondEnumerator.current());
+                    return false;
+                },
+                function () {
+                    try {
+                        Utils.dispose(firstEnumerator);
+                    }
+                    finally {
+                        Utils.dispose(secondEnumerator);
+                    }
+                });
+            });
+        }
+        else {
+            var args = arguments;
+
+            return new Enumerable(function () {
+                var enumerators;
+
+                return new IEnumerator(
+                    function () {
+                        enumerators = Enumerable.make(source)
+                            .concat(Enumerable.from(args).select(Enumerable.from))
+                            .select(function (x) { return x.getEnumerator() })
+                            .toArray();
+                    },
+                    function () {
+                        while (enumerators.length > 0) {
+                            var enumerator = enumerators[0];
+
+                            if (enumerator.moveNext()) {
+                                return this.yieldReturn(enumerator.current());
+                            }
+                            else {
+                                enumerator.dispose();
+                                enumerators.splice(0, 1);
+                            }
+                        }
+                        return this.yieldBreak();
+                    },
+                    function () {
+                        Enumerable.from(enumerators).forEach(Utils.dispose);
+                    });
+            });
+        }
+    };
+
+    Enumerable.prototype.insert = function (index, second) {
+        var source = this;
+
+        return new Enumerable(function () {
+            var firstEnumerator;
+            var secondEnumerator;
+            var count = 0;
+            var isEnumerated = false;
+
+            return new IEnumerator(
+                function () {
+                    firstEnumerator = source.getEnumerator();
+                    secondEnumerator = Enumerable.from(second).getEnumerator();
+                },
+                function () {
+                    if (count == index && secondEnumerator.moveNext()) {
+                        isEnumerated = true;
+                        return this.yieldReturn(secondEnumerator.current());
+                    }
+                    if (firstEnumerator.moveNext()) {
+                        count++;
+                        return this.yieldReturn(firstEnumerator.current());
+                    }
+                    if (!isEnumerated && secondEnumerator.moveNext()) {
+                        return this.yieldReturn(secondEnumerator.current());
+                    }
+                    return false;
+                },
+                function () {
+                    try {
+                        Utils.dispose(firstEnumerator);
+                    }
+                    finally {
+                        Utils.dispose(secondEnumerator);
+                    }
+                });
+        });
+    };
+
+    Enumerable.prototype.alternate = function (alternateValueOrSequence) {
+        var source = this;
+
+        return new Enumerable(function () {
+            var buffer;
+            var enumerator;
+            var alternateSequence;
+            var alternateEnumerator;
+
+            return new IEnumerator(
+                function () {
+                    if (alternateValueOrSequence instanceof Array || alternateValueOrSequence.getEnumerator != null) {
+                        alternateSequence = Enumerable.from(Enumerable.from(alternateValueOrSequence).toArray()); // freeze
+                    }
+                    else {
+                        alternateSequence = Enumerable.make(alternateValueOrSequence);
+                    }
+                    enumerator = source.getEnumerator();
+                    if (enumerator.moveNext()) buffer = enumerator.current();
+                },
+                function () {
+                    while (true) {
+                        if (alternateEnumerator != null) {
+                            if (alternateEnumerator.moveNext()) {
+                                return this.yieldReturn(alternateEnumerator.current());
+                            }
+                            else {
+                                alternateEnumerator = null;
+                            }
+                        }
+
+                        if (buffer == null && enumerator.moveNext()) {
+                            buffer = enumerator.current(); // hasNext
+                            alternateEnumerator = alternateSequence.getEnumerator();
+                            continue; // GOTO
+                        }
+                        else if (buffer != null) {
+                            var retVal = buffer;
+                            buffer = null;
+                            return this.yieldReturn(retVal);
+                        }
+
+                        return this.yieldBreak();
+                    }
+                },
+                function () {
+                    try {
+                        Utils.dispose(enumerator);
+                    }
+                    finally {
+                        Utils.dispose(alternateEnumerator);
+                    }
+                });
+        });
+    };
+
+    // Overload:function(value)
+    // Overload:function(value, comparer)
+    Enumerable.prototype.contains = function (value, comparer) {
+        comparer = comparer || ss.EqualityComparer.def;
+        var enumerator = this.getEnumerator();
+        try {
+            while (enumerator.moveNext()) {
+                if (comparer.areEqual(enumerator.current(), value)) return true;
+            }
+            return false;
+        }
+        finally {
+            Utils.dispose(enumerator);
+        }
+    };
+
+    Enumerable.prototype.defaultIfEmpty = function (defaultValue) {
+        var source = this;
+        if (defaultValue === undefined) defaultValue = null;
+
+        return new Enumerable(function () {
+            var enumerator;
+            var isFirst = true;
+
+            return new IEnumerator(
+                function () { enumerator = source.getEnumerator(); },
+                function () {
+                    if (enumerator.moveNext()) {
+                        isFirst = false;
+                        return this.yieldReturn(enumerator.current());
+                    }
+                    else if (isFirst) {
+                        isFirst = false;
+                        return this.yieldReturn(defaultValue);
+                    }
+                    return false;
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    // Overload:function()
+    // Overload:function(comparer)
+    Enumerable.prototype.distinct = function (comparer) {
+        return this.except(Enumerable.empty(), comparer);
+    };
+
+    Enumerable.prototype.distinctUntilChanged = function (compareSelector) {
+        compareSelector = Utils.createLambda(compareSelector);
+        var source = this;
+
+        return new Enumerable(function () {
+            var enumerator;
+            var compareKey;
+            var initial;
+
+            return new IEnumerator(
+                function () {
+                    enumerator = source.getEnumerator();
+                },
+                function () {
+                    while (enumerator.moveNext()) {
+                        var key = compareSelector(enumerator.current());
+
+                        if (initial) {
+                            initial = false;
+                            compareKey = key;
+                            return this.yieldReturn(enumerator.current());
+                        }
+
+                        if (compareKey === key) {
+                            continue;
+                        }
+
+                        compareKey = key;
+                        return this.yieldReturn(enumerator.current());
+                    }
+                    return this.yieldBreak();
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    // Overload:function(second)
+    // Overload:function(second, comparer)
+    Enumerable.prototype.except = function (second, comparer) {
+        var source = this;
+
+        return new Enumerable(function () {
+            var enumerator;
+            var keys;
+
+            return new IEnumerator(
+                function () {
+                    enumerator = source.getEnumerator();
+                    keys = new (ss.makeGenericType(ss.Dictionary$2, [Object, Object]))(null, comparer);
+                    Enumerable.from(second).forEach(function (key) { keys.add(key); });
+                },
+                function () {
+                    while (enumerator.moveNext()) {
+                        var current = enumerator.current();
+                        if (!keys.containsKey(current)) {
+                            keys.add(current);
+                            return this.yieldReturn(current);
+                        }
+                    }
+                    return false;
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    // Overload:function(second)
+    // Overload:function(second, comparer)
+    Enumerable.prototype.intersect = function (second, comparer) {
+        var source = this;
+
+        return new Enumerable(function () {
+            var enumerator;
+            var keys;
+            var outs;
+
+            return new IEnumerator(
+                function () {
+                    enumerator = source.getEnumerator();
+
+                    keys = new (ss.makeGenericType(ss.Dictionary$2, [Object, Object]))(null, comparer);
+                    Enumerable.from(second).forEach(function (key) { keys.add(key); });
+                    outs = new (ss.makeGenericType(ss.Dictionary$2, [Object, Object]))(null, comparer);
+                },
+                function () {
+                    while (enumerator.moveNext()) {
+                        var current = enumerator.current();
+                        if (!outs.containsKey(current) && keys.containsKey(current)) {
+                            outs.add(current);
+                            return this.yieldReturn(current);
+                        }
+                    }
+                    return false;
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    // Overload:function(second)
+    // Overload:function(second, comparer)
+    Enumerable.prototype.sequenceEqual = function (second, comparer) {
+        comparer = comparer || ss.EqualityComparer.def;
+
+        var firstEnumerator = this.getEnumerator();
+        try {
+            var secondEnumerator = Enumerable.from(second).getEnumerator();
+            try {
+                while (firstEnumerator.moveNext()) {
+                    if (!secondEnumerator.moveNext()
+                    || !comparer.areEqual(firstEnumerator.current(), secondEnumerator.current())) {
+                        return false;
+                    }
+                }
+
+                if (secondEnumerator.moveNext()) return false;
+                return true;
+            }
+            finally {
+                Utils.dispose(secondEnumerator);
+            }
+        }
+        finally {
+            Utils.dispose(firstEnumerator);
+        }
+    };
+
+    Enumerable.prototype.union = function (second, comparer) {
+        var source = this;
+
+        return new Enumerable(function () {
+            var firstEnumerator;
+            var secondEnumerator;
+            var keys;
+
+            return new IEnumerator(
+                function () {
+                    firstEnumerator = source.getEnumerator();
+                    keys = new (ss.makeGenericType(ss.Dictionary$2, [Object, Object]))(null, comparer);
+                },
+                function () {
+                    var current;
+                    if (secondEnumerator === undefined) {
+                        while (firstEnumerator.moveNext()) {
+                            current = firstEnumerator.current();
+                            if (!keys.containsKey(current)) {
+                                keys.add(current);
+                                return this.yieldReturn(current);
+                            }
+                        }
+                        secondEnumerator = Enumerable.from(second).getEnumerator();
+                    }
+                    while (secondEnumerator.moveNext()) {
+                        current = secondEnumerator.current();
+                        if (!keys.containsKey(current)) {
+                            keys.add(current);
+                            return this.yieldReturn(current);
+                        }
+                    }
+                    return false;
+                },
+                function () {
+                    try {
+                        Utils.dispose(firstEnumerator);
+                    }
+                    finally {
+                        Utils.dispose(secondEnumerator);
+                    }
+                });
+        });
+    };
+
+    /* Ordering Methods */
+
+    // Overload:function()
+    // Overload:function(keySelector)
+    // Overload:function(keySelector, comparer)
+    Enumerable.prototype.orderBy = function (keySelector, comparer) {
+        return new OrderedEnumerable(this, keySelector, comparer, false);
+    };
+
+    // Overload:function()
+    // Overload:function(keySelector)
+    // Overload:function(keySelector, comparer)
+    Enumerable.prototype.orderByDescending = function (keySelector, comparer) {
+        return new OrderedEnumerable(this, keySelector, comparer, true);
+    };
+
+    Enumerable.prototype.reverse = function () {
+        var source = this;
+
+        return new Enumerable(function () {
+            var buffer;
+            var index;
+
+            return new IEnumerator(
+                function () {
+                    buffer = source.toArray();
+                    index = buffer.length;
+                },
+                function () {
+                    return (index > 0)
+                        ? this.yieldReturn(buffer[--index])
+                        : false;
+                },
+                Functions.Blank);
+        });
+    };
+
+    Enumerable.prototype.shuffle = function () {
+        var source = this;
+
+        return new Enumerable(function () {
+            var buffer;
+
+            return new IEnumerator(
+                function () { buffer = source.toArray(); },
+                function () {
+                    if (buffer.length > 0) {
+                        var i = Math.floor(Math.random() * buffer.length);
+                        return this.yieldReturn(buffer.splice(i, 1)[0]);
+                    }
+                    return false;
+                },
+                Functions.Blank);
+        });
+    };
+
+    Enumerable.prototype.weightedSample = function (weightSelector) {
+        weightSelector = Utils.createLambda(weightSelector);
+        var source = this;
+
+        return new Enumerable(function () {
+            var sortedByBound;
+            var totalWeight = 0;
+
+            return new IEnumerator(
+                function () {
+                    sortedByBound = source
+                        .choose(function (x) {
+                            var weight = weightSelector(x);
+                            if (weight <= 0) return null; // ignore 0
+
+                            totalWeight += weight;
+                            return { value: x, bound: totalWeight };
+                        })
+                        .toArray();
+                },
+                function () {
+                    if (sortedByBound.length > 0) {
+                        var draw = Math.floor(Math.random() * totalWeight) + 1;
+
+                        var lower = -1;
+                        var upper = sortedByBound.length;
+                        while (upper - lower > 1) {
+                            var index = Math.floor((lower + upper) / 2);
+                            if (sortedByBound[index].bound >= draw) {
+                                upper = index;
+                            }
+                            else {
+                                lower = index;
+                            }
+                        }
+
+                        return this.yieldReturn(sortedByBound[upper].value);
+                    }
+
+                    return this.yieldBreak();
+                },
+                Functions.Blank);
+        });
+    };
+
+    /* Grouping Methods */
+
+    // Overload:function(keySelector)
+    // Overload:function(keySelector,elementSelector)
+    // Overload:function(keySelector,elementSelector,resultSelector)
+    // Overload:function(keySelector,elementSelector,resultSelector,comparer)
+    Enumerable.prototype.groupBy = function (keySelector, elementSelector, resultSelector, comparer) {
+        var source = this;
+        keySelector = Utils.createLambda(keySelector);
+        elementSelector = Utils.createLambda(elementSelector);
+        if (resultSelector != null) resultSelector = Utils.createLambda(resultSelector);
+
+        return new Enumerable(function () {
+            var enumerator;
+
+            return new IEnumerator(
+                function () {
+                    enumerator = source.toLookup(keySelector, elementSelector, comparer)
+                        .toEnumerable()
+                        .getEnumerator();
+                },
+                function () {
+                    while (enumerator.moveNext()) {
+                        return (resultSelector == null)
+                            ? this.yieldReturn(enumerator.current())
+                            : this.yieldReturn(resultSelector(enumerator.current().key(), enumerator.current()));
+                    }
+                    return false;
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    // Overload:function(keySelector)
+    // Overload:function(keySelector,elementSelector)
+    // Overload:function(keySelector,elementSelector,resultSelector)
+    // Overload:function(keySelector,elementSelector,resultSelector,comperer)
+    Enumerable.prototype.partitionBy = function (keySelector, elementSelector, resultSelector, comparer) {
+        var source = this;
+        keySelector = Utils.createLambda(keySelector);
+        elementSelector = Utils.createLambda(elementSelector);
+        comparer = comparer || ss.EqualityComparer.def;
+        var hasResultSelector;
+        if (resultSelector == null) {
+            hasResultSelector = false;
+            resultSelector = function (key, group) { return new Grouping(key, group); };
+        }
+        else {
+            hasResultSelector = true;
+            resultSelector = Utils.createLambda(resultSelector);
+        }
+
+        return new Enumerable(function () {
+            var enumerator;
+            var key;
+            var group = [];
+
+            return new IEnumerator(
+                function () {
+                    enumerator = source.getEnumerator();
+                    if (enumerator.moveNext()) {
+                        key = keySelector(enumerator.current());
+                        group.push(elementSelector(enumerator.current()));
+                    }
+                },
+                function () {
+                    var hasNext;
+                    while ((hasNext = enumerator.moveNext()) == true) {
+                        if (comparer.areEqual(key, keySelector(enumerator.current()))) {
+                            group.push(elementSelector(enumerator.current()));
+                        }
+                        else break;
+                    }
+
+                    if (group.length > 0) {
+                        var result = (hasResultSelector)
+                            ? resultSelector(key, Enumerable.from(group))
+                            : resultSelector(key, group);
+                        if (hasNext) {
+                            key = keySelector(enumerator.current());
+                            group = [elementSelector(enumerator.current())];
+                        }
+                        else group = [];
+
+                        return this.yieldReturn(result);
+                    }
+
+                    return false;
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    Enumerable.prototype.buffer = function (count) {
+        var source = this;
+
+        return new Enumerable(function () {
+            var enumerator;
+
+            return new IEnumerator(
+                function () { enumerator = source.getEnumerator(); },
+                function () {
+                    var array = [];
+                    var index = 0;
+                    while (enumerator.moveNext()) {
+                        array.push(enumerator.current());
+                        if (++index >= count) return this.yieldReturn(array);
+                    }
+                    if (array.length > 0) return this.yieldReturn(array);
+                    return false;
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    /* Aggregate Methods */
+
+    // Overload:function(func)
+    // Overload:function(seed,func)
+    // Overload:function(seed,func,resultSelector)
+    Enumerable.prototype.aggregate = function (seed, func, resultSelector) {
+        resultSelector = Utils.createLambda(resultSelector);
+        return resultSelector(this.scan(seed, func, resultSelector).last());
+    };
+
+    // Overload:function()
+    // Overload:function(selector)
+    Enumerable.prototype.average = function (selector) {
+        selector = Utils.createLambda(selector);
+
+        var sum = 0;
+        var count = 0;
+        this.forEach(function (x) {
+            sum += selector(x);
+            ++count;
+        });
+
+        return sum / count;
+    };
+
+    // Overload:function()
+    // Overload:function(predicate)
+    Enumerable.prototype.count = function (predicate) {
+        predicate = (predicate == null) ? Functions.True : Utils.createLambda(predicate);
+
+        var count = 0;
+        this.forEach(function (x, i) {
+            if (predicate(x, i))++count;
+        });
+        return count;
+    };
+
+    // Overload:function()
+    // Overload:function(selector)
+    Enumerable.prototype.max = function (selector) {
+        if (selector == null) selector = Functions.Identity;
+        return this.select(selector).aggregate(function (a, b) { return (a > b) ? a : b; });
+    };
+
+    // Overload:function()
+    // Overload:function(selector)
+    Enumerable.prototype.min = function (selector) {
+        if (selector == null) selector = Functions.Identity;
+        return this.select(selector).aggregate(function (a, b) { return (a < b) ? a : b; });
+    };
+
+    Enumerable.prototype.maxBy = function (keySelector) {
+        keySelector = Utils.createLambda(keySelector);
+        return this.aggregate(function (a, b) { return (keySelector(a) > keySelector(b)) ? a : b; });
+    };
+
+    Enumerable.prototype.minBy = function (keySelector) {
+        keySelector = Utils.createLambda(keySelector);
+        return this.aggregate(function (a, b) { return (keySelector(a) < keySelector(b)) ? a : b; });
+    };
+
+    // Overload:function()
+    // Overload:function(selector)
+    Enumerable.prototype.sum = function (selector) {
+        if (selector == null) selector = Functions.Identity;
+        return this.select(selector).aggregate(0, function (a, b) { return a + b; });
+    };
+
+    /* Paging Methods */
+
+    Enumerable.prototype.elementAt = function (index) {
+        var value;
+        var found = false;
+        this.forEach(function (x, i) {
+            if (i == index) {
+                value = x;
+                found = true;
+                return false;
+            }
+        });
+
+        if (!found) throw new Error("index is less than 0 or greater than or equal to the number of elements in source.");
+        return value;
+    };
+
+    Enumerable.prototype.elementAtOrDefault = function (index, defaultValue) {
+        if (defaultValue === undefined) defaultValue = null;
+        var value;
+        var found = false;
+        this.forEach(function (x, i) {
+            if (i == index) {
+                value = x;
+                found = true;
+                return false;
+            }
+        });
+
+        return (!found) ? defaultValue : value;
+    };
+
+    // Overload:function()
+    // Overload:function(predicate)
+    Enumerable.prototype.first = function (predicate) {
+        if (predicate != null) return this.where(predicate).first();
+
+        var value;
+        var found = false;
+        this.forEach(function (x) {
+            value = x;
+            found = true;
+            return false;
+        });
+
+        if (!found) throw new Error("first:No element satisfies the condition.");
+        return value;
+    };
+
+    Enumerable.prototype.firstOrDefault = function (predicate, defaultValue) {
+        if (defaultValue === undefined) defaultValue = null;
+        if (predicate != null) return this.where(predicate).firstOrDefault(null, defaultValue);
+
+        var value;
+        var found = false;
+        this.forEach(function (x) {
+            value = x;
+            found = true;
+            return false;
+        });
+        return (!found) ? defaultValue : value;
+    };
+
+    // Overload:function()
+    // Overload:function(predicate)
+    Enumerable.prototype.last = function (predicate) {
+        if (predicate != null) return this.where(predicate).last();
+
+        var value;
+        var found = false;
+        this.forEach(function (x) {
+            found = true;
+            value = x;
+        });
+
+        if (!found) throw new Error("last:No element satisfies the condition.");
+        return value;
+    };
+
+    // Overload:function(defaultValue)
+    // Overload:function(defaultValue,predicate)
+    Enumerable.prototype.lastOrDefault = function (predicate, defaultValue) {
+        if (defaultValue === undefined) defaultValue = null;
+        if (predicate != null) return this.where(predicate).lastOrDefault(null, defaultValue);
+
+        var value;
+        var found = false;
+        this.forEach(function (x) {
+            found = true;
+            value = x;
+        });
+        return (!found) ? defaultValue : value;
+    };
+
+    // Overload:function()
+    // Overload:function(predicate)
+    Enumerable.prototype.single = function (predicate) {
+        if (predicate != null) return this.where(predicate).single();
+
+        var value;
+        var found = false;
+        this.forEach(function (x) {
+            if (!found) {
+                found = true;
+                value = x;
+            } else throw new Error("single:sequence contains more than one element.");
+        });
+
+        if (!found) throw new Error("single:No element satisfies the condition.");
+        return value;
+    };
+
+    // Overload:function(defaultValue)
+    // Overload:function(defaultValue,predicate)
+    Enumerable.prototype.singleOrDefault = function (predicate, defaultValue) {
+        if (defaultValue === undefined) defaultValue = null;
+        if (predicate != null) return this.where(predicate).singleOrDefault(null, defaultValue);
+
+        var value;
+        var found = false;
+        this.forEach(function (x) {
+            if (!found) {
+                found = true;
+                value = x;
+            } else throw new Error("single:sequence contains more than one element.");
+        });
+
+        return (!found) ? defaultValue : value;
+    };
+
+    Enumerable.prototype.skip = function (count) {
+        var source = this;
+
+        return new Enumerable(function () {
+            var enumerator;
+            var index = 0;
+
+            return new IEnumerator(
+                function () {
+                    enumerator = source.getEnumerator();
+                    while (index++ < count && enumerator.moveNext()) {
+                    }
+                    ;
+                },
+                function () {
+                    return (enumerator.moveNext())
+                        ? this.yieldReturn(enumerator.current())
+                        : false;
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    // Overload:function(predicate<element>)
+    // Overload:function(predicate<element,index>)
+    Enumerable.prototype.skipWhile = function (predicate) {
+        predicate = Utils.createLambda(predicate);
+        var source = this;
+
+        return new Enumerable(function () {
+            var enumerator;
+            var index = 0;
+            var isSkipEnd = false;
+
+            return new IEnumerator(
+                function () { enumerator = source.getEnumerator(); },
+                function () {
+                    while (!isSkipEnd) {
+                        if (enumerator.moveNext()) {
+                            if (!predicate(enumerator.current(), index++)) {
+                                isSkipEnd = true;
+                                return this.yieldReturn(enumerator.current());
+                            }
+                            continue;
+                        } else return false;
+                    }
+
+                    return (enumerator.moveNext())
+                        ? this.yieldReturn(enumerator.current())
+                        : false;
+
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    Enumerable.prototype.take = function (count) {
+        var source = this;
+
+        return new Enumerable(function () {
+            var enumerator;
+            var index = 0;
+
+            return new IEnumerator(
+                function () { enumerator = source.getEnumerator(); },
+                function () {
+                    return (index++ < count && enumerator.moveNext())
+                        ? this.yieldReturn(enumerator.current())
+                        : false;
+                },
+                function () { Utils.dispose(enumerator); }
+            );
+        });
+    };
+
+    // Overload:function(predicate<element>)
+    // Overload:function(predicate<element,index>)
+    Enumerable.prototype.takeWhile = function (predicate) {
+        predicate = Utils.createLambda(predicate);
+        var source = this;
+
+        return new Enumerable(function () {
+            var enumerator;
+            var index = 0;
+
+            return new IEnumerator(
+                function () { enumerator = source.getEnumerator(); },
+                function () {
+                    return (enumerator.moveNext() && predicate(enumerator.current(), index++))
+                        ? this.yieldReturn(enumerator.current())
+                        : false;
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    // Overload:function()
+    // Overload:function(count)
+    Enumerable.prototype.takeExceptLast = function (count) {
+        if (count == null) count = 1;
+        var source = this;
+
+        return new Enumerable(function () {
+            if (count <= 0) return source.getEnumerator(); // do nothing
+
+            var enumerator;
+            var q = [];
+
+            return new IEnumerator(
+                function () { enumerator = source.getEnumerator(); },
+                function () {
+                    while (enumerator.moveNext()) {
+                        if (q.length == count) {
+                            q.push(enumerator.current());
+                            return this.yieldReturn(q.shift());
+                        }
+                        q.push(enumerator.current());
+                    }
+                    return false;
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    Enumerable.prototype.takeFromLast = function (count) {
+        if (count <= 0 || count == null) return Enumerable.empty();
+        var source = this;
+
+        return new Enumerable(function () {
+            var sourceEnumerator;
+            var enumerator;
+            var q = [];
+
+            return new IEnumerator(
+                function () { sourceEnumerator = source.getEnumerator(); },
+                function () {
+                    while (sourceEnumerator.moveNext()) {
+                        if (q.length == count) q.shift();
+                        q.push(sourceEnumerator.current());
+                    }
+                    if (enumerator == null) {
+                        enumerator = Enumerable.from(q).getEnumerator();
+                    }
+                    return (enumerator.moveNext())
+                        ? this.yieldReturn(enumerator.current())
+                        : false;
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    // Overload:function(item)
+    // Overload:function(item, comparer)
+    // Overload:function(predicate)
+    Enumerable.prototype.indexOf = function (item, comparer) {
+        var found = null;
+
+        // item as predicate
+        if (typeof (item) === Types.Function) {
+            this.forEach(function (x, i) {
+                if (item(x, i)) {
+                    found = i;
+                    return false;
+                }
+            });
+        }
+        else {
+            comparer = comparer || ss.EqualityComparer.def;
+            this.forEach(function (x, i) {
+                if (comparer.areEqual(x, item)) {
+                    found = i;
+                    return false;
+                }
+            });
+        }
+
+        return (found !== null) ? found : -1;
+    };
+
+    // Overload:function(item)
+    // Overload:function(item, comparer)
+    // Overload:function(predicate)
+    Enumerable.prototype.lastIndexOf = function (item, comparer) {
+        var result = -1;
+
+        // item as predicate
+        if (typeof (item) === Types.Function) {
+            this.forEach(function (x, i) {
+                if (item(x, i)) result = i;
+            });
+        }
+        else {
+            comparer = comparer || ss.EqualityComparer.def;
+            this.forEach(function (x, i) {
+                if (comparer.areEqual(x, item)) result = i;
+            });
+        }
+
+        return result;
+    };
+
+    /* Convert Methods */
+
+    Enumerable.prototype.asEnumerable = function () {
+        return Enumerable.from(this);
+    };
+
+    Enumerable.prototype.toArray = function () {
+        var array = [];
+        this.forEach(function (x) { array.push(x); });
+        return array;
+    };
+
+    // Overload:function(keySelector)
+    // Overload:function(keySelector, elementSelector)
+    // Overload:function(keySelector, elementSelector, comparer)
+    Enumerable.prototype.toLookup = function (keySelector, elementSelector, comparer) {
+        keySelector = Utils.createLambda(keySelector);
+        elementSelector = Utils.createLambda(elementSelector);
+
+        var dict = new (ss.makeGenericType(ss.Dictionary$2, [Object, Object]))(null, comparer);
+        var order = [];
+        this.forEach(function (x) {
+            var key = keySelector(x);
+            var element = elementSelector(x);
+
+            var array = { $: null };
+            if (dict.tryGetValue(key, array)) {
+                array.$.push(element);
+            }
+            else {
+                order.push(key);
+                dict.add(key, [element]);
+            }
+        });
+        return new Lookup(dict, order);
+    };
+
+    Enumerable.prototype.toObject = function (keySelector, elementSelector) {
+        keySelector = Utils.createLambda(keySelector);
+        elementSelector = Utils.createLambda(elementSelector);
+
+        var obj = {};
+        this.forEach(function (x) {
+            obj[keySelector(x)] = elementSelector(x);
+        });
+        return obj;
+    };
+
+    // Overload:function(keySelector, elementSelector, keyType, valueType)
+    // Overload:function(keySelector, elementSelector, keyType, valueType, comparer)
+    Enumerable.prototype.toDictionary = function (keySelector, elementSelector, keyType, valueType, comparer) {
+        keySelector = Utils.createLambda(keySelector);
+        elementSelector = Utils.createLambda(elementSelector);
+
+        var dict = new (ss.makeGenericType(ss.Dictionary$2, [keyType, valueType]))(null, comparer);
+        this.forEach(function (x) {
+            dict.add(keySelector(x), elementSelector(x));
+        });
+        return dict;
+    };
+
+    // Overload:function()
+    // Overload:function(replacer)
+    // Overload:function(replacer, space)
+    Enumerable.prototype.toJSONString = function (replacer, space) {
+        if (typeof JSON === Types.Undefined || JSON.stringify == null) {
+            throw new Error("toJSONString can't find JSON.stringify. This works native JSON support Browser or include json2.js");
+        }
+        return JSON.stringify(this.toArray(), replacer, space);
+    };
+
+    // Overload:function()
+    // Overload:function(separator)
+    // Overload:function(separator,selector)
+    Enumerable.prototype.toJoinedString = function (separator, selector) {
+        if (separator == null) separator = "";
+        if (selector == null) selector = Functions.Identity;
+
+        return this.select(selector).toArray().join(separator);
+    };
+
+
+    /* Action Methods */
+
+    // Overload:function(action<element>)
+    // Overload:function(action<element,index>)
+    Enumerable.prototype.doAction = function (action) {
+        var source = this;
+        action = Utils.createLambda(action);
+
+        return new Enumerable(function () {
+            var enumerator;
+            var index = 0;
+
+            return new IEnumerator(
+                function () { enumerator = source.getEnumerator(); },
+                function () {
+                    if (enumerator.moveNext()) {
+                        action(enumerator.current(), index++);
+                        return this.yieldReturn(enumerator.current());
+                    }
+                    return false;
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    // Overload:function(action<element>)
+    // Overload:function(action<element,index>)
+    // Overload:function(func<element,bool>)
+    // Overload:function(func<element,index,bool>)
+    Enumerable.prototype.forEach = function (action) {
+        action = Utils.createLambda(action);
+
+        var index = 0;
+        var enumerator = this.getEnumerator();
+        try {
+            while (enumerator.moveNext()) {
+                if (action(enumerator.current(), index++) === false) break;
+            }
+        } finally {
+            Utils.dispose(enumerator);
+        }
+    };
+
+    // Overload:function()
+    // Overload:function(separator)
+    // Overload:function(separator,selector)
+    Enumerable.prototype.write = function (separator, selector) {
+        if (separator == null) separator = "";
+        selector = Utils.createLambda(selector);
+
+        var isFirst = true;
+        this.forEach(function (item) {
+            if (isFirst) isFirst = false;
+            else document.write(separator);
+            document.write(selector(item));
+        });
+    };
+
+    // Overload:function()
+    // Overload:function(selector)
+    Enumerable.prototype.writeLine = function (selector) {
+        selector = Utils.createLambda(selector);
+
+        this.forEach(function (item) {
+            document.writeln(selector(item) + "<br />");
+        });
+    };
+
+    Enumerable.prototype.force = function () {
+        var enumerator = this.getEnumerator();
+
+        try {
+            while (enumerator.moveNext()) {
+            }
+        }
+        finally {
+            Utils.dispose(enumerator);
+        }
+    };
+
+    /* Functional Methods */
+
+    Enumerable.prototype.letBind = function (func) {
+        func = Utils.createLambda(func);
+        var source = this;
+
+        return new Enumerable(function () {
+            var enumerator;
+
+            return new IEnumerator(
+                function () {
+                    enumerator = Enumerable.from(func(source)).getEnumerator();
+                },
+                function () {
+                    return (enumerator.moveNext())
+                        ? this.yieldReturn(enumerator.current())
+                        : false;
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    Enumerable.prototype.share = function () {
+        var source = this;
+        var sharedEnumerator;
+        var disposed = false;
+
+        return new DisposableEnumerable(function () {
+            return new IEnumerator(
+                function () {
+                    if (sharedEnumerator == null) {
+                        sharedEnumerator = source.getEnumerator();
+                    }
+                },
+                function () {
+                    if (disposed) throw new Error("enumerator is disposed");
+
+                    return (sharedEnumerator.moveNext())
+                        ? this.yieldReturn(sharedEnumerator.current())
+                        : false;
+                },
+                Functions.Blank
+            );
+        }, function () {
+            disposed = true;
+            Utils.dispose(sharedEnumerator);
+        });
+    };
+
+    Enumerable.prototype.memoize = function () {
+        var source = this;
+        var cache;
+        var enumerator;
+        var disposed = false;
+
+        return new DisposableEnumerable(function () {
+            var index = -1;
+
+            return new IEnumerator(
+                function () {
+                    if (enumerator == null) {
+                        enumerator = source.getEnumerator();
+                        cache = [];
+                    }
+                },
+                function () {
+                    if (disposed) throw new Error("enumerator is disposed");
+
+                    index++;
+                    if (cache.length <= index) {
+                        return (enumerator.moveNext())
+                            ? this.yieldReturn(cache[index] = enumerator.current())
+                            : false;
+                    }
+
+                    return this.yieldReturn(cache[index]);
+                },
+                Functions.Blank
+            );
+        }, function () {
+            disposed = true;
+            Utils.dispose(enumerator);
+            cache = null;
+        });
+    };
+
+    /* Error Handling Methods */
+
+    Enumerable.prototype.catchError = function (handler) {
+        handler = Utils.createLambda(handler);
+        var source = this;
+
+        return new Enumerable(function () {
+            var enumerator;
+
+            return new IEnumerator(
+                function () { enumerator = source.getEnumerator(); },
+                function () {
+                    try {
+                        return (enumerator.moveNext())
+                            ? this.yieldReturn(enumerator.current())
+                            : false;
+                    } catch (e) {
+                        handler(e);
+                        return false;
+                    }
+                },
+                function () { Utils.dispose(enumerator); });
+        });
+    };
+
+    Enumerable.prototype.finallyAction = function (finallyAction) {
+        finallyAction = Utils.createLambda(finallyAction);
+        var source = this;
+
+        return new Enumerable(function () {
+            var enumerator;
+
+            return new IEnumerator(
+                function () { enumerator = source.getEnumerator(); },
+                function () {
+                    return (enumerator.moveNext())
+                        ? this.yieldReturn(enumerator.current())
+                        : false;
+                },
+                function () {
+                    try {
+                        Utils.dispose(enumerator);
+                    } finally {
+                        finallyAction();
+                    }
+                });
+        });
+    };
+
+    /* For Debug Methods */
+
+    // Overload:function()
+    // Overload:function(selector)
+    Enumerable.prototype.log = function (selector) {
+        selector = Utils.createLambda(selector);
+
+        return this.doAction(function (item) {
+            if (typeof console !== Types.Undefined) {
+                console.log(selector(item));
+            }
+        });
+    };
+
+    // Overload:function()
+    // Overload:function(message)
+    // Overload:function(message,selector)
+    Enumerable.prototype.trace = function (message, selector) {
+        if (message == null) message = "Trace";
+        selector = Utils.createLambda(selector);
+
+        return this.doAction(function (item) {
+            if (typeof console !== Types.Undefined) {
+                console.log(message, selector(item));
+            }
+        });
+    };
+
+    // private
+
+    var OrderedEnumerable = function (source, keySelector, comparer, descending, parent) {
+        this.source = source;
+        this.keySelector = Utils.createLambda(keySelector);
+        this.comparer = comparer || ss.Comparer.def;
+        this.descending = descending;
+        this.parent = parent;
+    };
+    OrderedEnumerable.prototype = new Enumerable();
+
+    OrderedEnumerable.prototype.createOrderedEnumerable = function (keySelector, comparer, descending) {
+        return new OrderedEnumerable(this.source, keySelector, comparer, descending, this);
+    };
+    OrderedEnumerable.prototype.thenBy = function (keySelector, comparer) {
+        return this.createOrderedEnumerable(keySelector, comparer, false);
+    };
+    OrderedEnumerable.prototype.thenByDescending = function (keySelector, comparer) {
+        return this.createOrderedEnumerable(keySelector, comparer, true);
+    };
+    OrderedEnumerable.prototype.getEnumerator = function () {
+        var self = this;
+        var buffer;
+        var indexes;
+        var index = 0;
+
+        return new IEnumerator(
+            function () {
+                buffer = [];
+                indexes = [];
+                self.source.forEach(function (item, index) {
+                    buffer.push(item);
+                    indexes.push(index);
+                });
+                var sortContext = SortContext.create(self, null);
+                sortContext.GenerateKeys(buffer);
+
+                indexes.sort(function (a, b) { return sortContext.compare(a, b); });
+            },
+            function () {
+                return (index < indexes.length)
+                    ? this.yieldReturn(buffer[indexes[index++]])
+                    : false;
+            },
+            Functions.Blank
+        );
+    };
+
+    var SortContext = function (keySelector, comparer, descending, child) {
+        this.keySelector = keySelector;
+        this.comparer = comparer;
+        this.descending = descending;
+        this.child = child;
+        this.keys = null;
+    };
+    SortContext.create = function (orderedEnumerable, currentContext) {
+        var context = new SortContext(orderedEnumerable.keySelector, orderedEnumerable.comparer, orderedEnumerable.descending, currentContext);
+        if (orderedEnumerable.parent != null) return SortContext.create(orderedEnumerable.parent, context);
+        return context;
+    };
+    SortContext.prototype.GenerateKeys = function (source) {
+        var len = source.length;
+        var keySelector = this.keySelector;
+        var keys = new Array(len);
+        for (var i = 0; i < len; i++) keys[i] = keySelector(source[i]);
+        this.keys = keys;
+
+        if (this.child != null) this.child.GenerateKeys(source);
+    };
+    SortContext.prototype.compare = function (index1, index2) {
+        var comparison = this.comparer.compare(this.keys[index1], this.keys[index2]);
+
+        if (comparison == 0) {
+            if (this.child != null) return this.child.compare(index1, index2);
+            return Utils.compare(index1, index2);
+        }
+
+        return (this.descending) ? -comparison : comparison;
+    };
+
+    var DisposableEnumerable = function (getEnumerator, dispose) {
+        this.dispose = dispose;
+        Enumerable.call(this, getEnumerator);
+    };
+    DisposableEnumerable.prototype = new Enumerable();
+
+    // optimize array or arraylike object
+
+    var ArrayEnumerable = function (source) {
+        this.getSource = function () { return source; };
+    };
+    ArrayEnumerable.prototype = new Enumerable();
+
+    ArrayEnumerable.prototype.any = function (predicate) {
+        return (predicate == null)
+            ? (this.getSource().length > 0)
+            : Enumerable.prototype.any.apply(this, arguments);
+    };
+
+    ArrayEnumerable.prototype.count = function (predicate) {
+        return (predicate == null)
+            ? this.getSource().length
+            : Enumerable.prototype.count.apply(this, arguments);
+    };
+
+    ArrayEnumerable.prototype.elementAt = function (index) {
+        var source = this.getSource();
+        return (0 <= index && index < source.length)
+            ? source[index]
+            : Enumerable.prototype.elementAt.apply(this, arguments);
+    };
+
+    ArrayEnumerable.prototype.elementAtOrDefault = function (index, defaultValue) {
+        if (defaultValue === undefined) defaultValue = null;
+        var source = this.getSource();
+        return (0 <= index && index < source.length)
+            ? source[index]
+            : defaultValue;
+    };
+
+    ArrayEnumerable.prototype.first = function (predicate) {
+        var source = this.getSource();
+        return (predicate == null && source.length > 0)
+            ? source[0]
+            : Enumerable.prototype.first.apply(this, arguments);
+    };
+
+    ArrayEnumerable.prototype.firstOrDefault = function (predicate, defaultValue) {
+        if (defaultValue === undefined) defaultValue = null;
+        if (predicate != null) {
+            return Enumerable.prototype.firstOrDefault.apply(this, arguments);
+        }
+
+        var source = this.getSource();
+        return source.length > 0 ? source[0] : defaultValue;
+    };
+
+    ArrayEnumerable.prototype.last = function (predicate) {
+        var source = this.getSource();
+        return (predicate == null && source.length > 0)
+            ? source[source.length - 1]
+            : Enumerable.prototype.last.apply(this, arguments);
+    };
+
+    ArrayEnumerable.prototype.lastOrDefault = function (predicate, defaultValue) {
+        if (defaultValue === undefined) defaultValue = null;
+        if (predicate != null) {
+            return Enumerable.prototype.lastOrDefault.apply(this, arguments);
+        }
+
+        var source = this.getSource();
+        return source.length > 0 ? source[source.length - 1] : defaultValue;
+    };
+
+    ArrayEnumerable.prototype.skip = function (count) {
+        var source = this.getSource();
+
+        return new Enumerable(function () {
+            var index;
+
+            return new IEnumerator(
+                function () { index = (count < 0) ? 0 : count; },
+                function () {
+                    return (index < source.length)
+                        ? this.yieldReturn(source[index++])
+                        : false;
+                },
+                Functions.Blank);
+        });
+    };
+
+    ArrayEnumerable.prototype.takeExceptLast = function (count) {
+        if (count == null) count = 1;
+        return this.take(this.getSource().length - count);
+    };
+
+    ArrayEnumerable.prototype.takeFromLast = function (count) {
+        return this.skip(this.getSource().length - count);
+    };
+
+    ArrayEnumerable.prototype.reverse = function () {
+        var source = this.getSource();
+
+        return new Enumerable(function () {
+            var index;
+
+            return new IEnumerator(
+                function () {
+                    index = source.length;
+                },
+                function () {
+                    return (index > 0)
+                        ? this.yieldReturn(source[--index])
+                        : false;
+                },
+                Functions.Blank);
+        });
+    };
+
+    ArrayEnumerable.prototype.sequenceEqual = function (second, comparer) {
+        if ((second instanceof ArrayEnumerable || second instanceof Array)
+            && comparer == null
+            && Enumerable.from(second).count() != this.count()) {
+            return false;
+        }
+
+        return Enumerable.prototype.sequenceEqual.apply(this, arguments);
+    };
+
+    ArrayEnumerable.prototype.toJoinedString = function (separator, selector) {
+        var source = this.getSource();
+        if (selector != null || !(source instanceof Array)) {
+            return Enumerable.prototype.toJoinedString.apply(this, arguments);
+        }
+
+        if (separator == null) separator = "";
+        return source.join(separator);
+    };
+
+    ArrayEnumerable.prototype.getEnumerator = function () {
+        return new ss.ArrayEnumerator(this.getSource());
+    };
+
+    // optimization for multiple where and multiple select and whereselect
+
+    var WhereEnumerable = function (source, predicate) {
+        this.prevSource = source;
+        this.prevPredicate = predicate; // predicate.length always <= 1
+    };
+    WhereEnumerable.prototype = new Enumerable();
+
+    WhereEnumerable.prototype.where = function (predicate) {
+        predicate = Utils.createLambda(predicate);
+
+        if (predicate.length <= 1) {
+            var prevPredicate = this.prevPredicate;
+            var composedPredicate = function (x) { return prevPredicate(x) && predicate(x); };
+            return new WhereEnumerable(this.prevSource, composedPredicate);
+        }
+        else {
+            // if predicate use index, can't compose
+            return Enumerable.prototype.where.call(this, predicate);
+        }
+    };
+
+    WhereEnumerable.prototype.select = function (selector) {
+        selector = Utils.createLambda(selector);
+
+        return (selector.length <= 1)
+            ? new WhereSelectEnumerable(this.prevSource, this.prevPredicate, selector)
+            : Enumerable.prototype.select.call(this, selector);
+    };
+
+    WhereEnumerable.prototype.getEnumerator = function () {
+        var predicate = this.prevPredicate;
+        var source = this.prevSource;
+        var enumerator;
+
+        return new IEnumerator(
+            function () { enumerator = source.getEnumerator(); },
+            function () {
+                while (enumerator.moveNext()) {
+                    if (predicate(enumerator.current())) {
+                        return this.yieldReturn(enumerator.current());
+                    }
+                }
+                return false;
+            },
+            function () { Utils.dispose(enumerator); });
+    };
+
+    var WhereSelectEnumerable = function (source, predicate, selector) {
+        this.prevSource = source;
+        this.prevPredicate = predicate; // predicate.length always <= 1 or null
+        this.prevSelector = selector; // selector.length always <= 1
+    };
+    WhereSelectEnumerable.prototype = new Enumerable();
+
+    WhereSelectEnumerable.prototype.where = function (predicate) {
+        predicate = Utils.createLambda(predicate);
+
+        return (predicate.length <= 1)
+            ? new WhereEnumerable(this, predicate)
+            : Enumerable.prototype.where.call(this, predicate);
+    };
+
+    WhereSelectEnumerable.prototype.select = function (selector) {
+        selector = Utils.createLambda(selector);
+
+        if (selector.length <= 1) {
+            var prevSelector = this.prevSelector;
+            var composedSelector = function (x) { return selector(prevSelector(x)); };
+            return new WhereSelectEnumerable(this.prevSource, this.prevPredicate, composedSelector);
+        }
+        else {
+            // if selector use index, can't compose
+            return Enumerable.prototype.select.call(this, selector);
+        }
+    };
+
+    WhereSelectEnumerable.prototype.getEnumerator = function () {
+        var predicate = this.prevPredicate;
+        var selector = this.prevSelector;
+        var source = this.prevSource;
+        var enumerator;
+
+        return new IEnumerator(
+            function () { enumerator = source.getEnumerator(); },
+            function () {
+                while (enumerator.moveNext()) {
+                    if (predicate == null || predicate(enumerator.current())) {
+                        return this.yieldReturn(selector(enumerator.current()));
+                    }
+                }
+                return false;
+            },
+            function () { Utils.dispose(enumerator); });
+    };
+
+    // Collections
+
+    // dictionary = Dictionary<TKey, TValue[]>
+    var Lookup = function (dictionary, order) {
+        this.count = function () {
+            return dictionary.get_count();
+        };
+        this.get = function (key) {
+            var value = { $: null };
+            var success = dictionary.tryGetValue(key, value);
+            return Enumerable.from(success ? value.$ : []);
+        };
+        this.contains = function (key) {
+            return dictionary.containsKey(key);
+        };
+        this.toEnumerable = function () {
+            return Enumerable.from(order).select(function (key) {
+                return new Grouping(key, dictionary.get_item(key));
+            });
+        };
+        this.getEnumerator = function () {
+            return this.toEnumerable().getEnumerator();
+        };
+    };
+    ss.initClass(Lookup, $asm, {}, null, [ss.IEnumerable]);
+
+    var Grouping = function (groupKey, elements) {
+        this.key = function () {
+            return groupKey;
+        };
+        ArrayEnumerable.call(this, elements);
+    };
+    Grouping.prototype = new ArrayEnumerable();
+
+    // module export
+    if (typeof define === Types.Function && define.amd) { // AMD
+        define("linqjs", [], function () { return Enumerable; });
+        root.Enumerable = Enumerable;
+    }
+    else if (typeof module !== Types.Undefined && module.exports) { // Node
+        module.exports = Enumerable;
+        global.Enumerable = Enumerable;
+    }
+    else {
+        root.Enumerable = Enumerable;
+    }
+})(this);
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/linq.min.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/linq.min.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/linq.min.js	(revision 101)
@@ -0,0 +1,1 @@
+(function(q,g){var d={Identity:function(a){return a},True:function(){return true},Blank:function(){}},f={Boolean:typeof true,Number:typeof 0,String:typeof"",Object:typeof{},Undefined:typeof g,Function:typeof function(){}},b={createLambda:function(a){if(a==null)return d.Identity;if(typeof a==f.String)if(a=="")return d.Identity;else if(a.indexOf("=>")==-1){var l=new RegExp("[$]+","g"),b=0,i;while(i=l.exec(a)){var e=i[0].length;if(e>b)b=e}for(var g=[],c=1;c<=b;c++){for(var h="",k=0;k<c;k++)h+="$";g.push(h)}var m=Array.prototype.join.call(g,",");return new Function(m,"return "+a)}else{var j=a.match(/^[(\s]*([^()]*?)[)\s]*=>(.*)/);return new Function(j[1],"return "+j[2])}return a},isIEnumerable:function(a){if(typeof Enumerator!==f.Undefined)try{new Enumerator(a);return true}catch(b){}return false},defineProperty:Object.defineProperties!=null?function(b,a,c){Object.defineProperty(b,a,{enumerable:false,configurable:true,writable:true,value:c})}:function(b,a,c){b[a]=c},compare:function(a,b){return a===b?0:a>b?1:-1},dispose:function(a){a!=null&&a.dispose()}},k={Before:0,Running:1,After:2},c=function(c,d,e){var b=new r,a=k.Before;this.current=b.current;this.reset=function(){throw new Error("Reset is not supported");};this.moveNext=function(){try{switch(a){case k.Before:a=k.Running;c();case k.Running:if(d.apply(b))return true;else{this.dispose();return false}case k.After:return false}}catch(e){this.dispose();throw e;}};this.dispose=function(){if(a!=k.Running)return;try{e()}finally{a=k.After}}},m={};ss.initAssembly(m,"linq");ss.initClass(c,m,{},null,[ss.IDisposable]);var r=function(){var a=null;this.current=function(){return a};this.yieldReturn=function(b){a=b;return true};this.yieldBreak=function(){return false}},a=function(a){this.getEnumerator=a};ss.initClass(a,m,{},null,[ss.IEnumerable]);a.Utils={};a.Utils.createLambda=function(a){return b.createLambda(a)};a.Utils.createEnumerable=function(b){return new a(b)};a.Utils.createEnumerator=function(a,b,d){return new c(a,b,d)};a.Utils.extendTo=function(h){var d=h.prototype,f;if(h===Array){f=e.prototype;b.defineProperty(d,"getSource",function(){return this})}else{f=a.prototype;b.defineProperty(d,"getEnumerator",function(){return a.from(this).getEnumerator()})}for(var c in f){var g=f[c];if(d[c]==g)continue;if(d[c]!=null){c=c+"ByLinq";if(d[c]==g)continue}g instanceof Function&&b.defineProperty(d,c,g)}};a.choice=function(){var b=arguments;return new a(function(){return new c(function(){b=b[0]instanceof Array?b[0]:b[0].getEnumerator!=null?b[0].toArray():b},function(){return this.yieldReturn(b[Math.floor(Math.random()*b.length)])},d.Blank)})};a.cycle=function(){var b=arguments;return new a(function(){var a=0;return new c(function(){b=b[0]instanceof Array?b[0]:b[0].getEnumerator!=null?b[0].toArray():b},function(){if(a>=b.length)a=0;return this.yieldReturn(b[a++])},d.Blank)})};a.empty=function(){return new a(function(){return new c(d.Blank,function(){return false},d.Blank)})};a.from=function(g){if(g==null)return a.empty();if(g instanceof a)return g;if(typeof g==f.Number||typeof g==f.Boolean)return a.repeat(g,1);if(typeof g==f.String)return new a(function(){var a=0;return new c(d.Blank,function(){return a<g.length?this.yieldReturn(g.charAt(a++)):false},d.Blank)});var i=ss.safeCast(g,ss.IEnumerable);if(i){var h;return new a(function(){return new c(function(){h=ss.getEnumerator(i)},function(){var a=h.moveNext();return a?this.yieldReturn(h.current()):false},function(){var a=ss.safeCast(h,ss.IDisposable);a&&a.dispose()})})}if(typeof g!=f.Function){if(typeof g.length==f.Number)return new e(g);if(!(g instanceof Object)&&b.isIEnumerable(g))return new a(function(){var b=true,a;return new c(function(){a=new Enumerator(g)},function(){if(b)b=false;else a.moveNext();return a.atEnd()?false:this.yieldReturn(a.item())},d.Blank)});if(typeof Windows===f.Object&&typeof g.first===f.Function)return new a(function(){var b=true,a;return new c(function(){a=g.first()},function(){if(b)b=false;else a.moveNext();return a.hasCurrent?this.yieldReturn(a.current):this.yieldBreak()},d.Blank)})}return new a(function(){var a=[],b=0;return new c(function(){for(var b in g){var c=g[b];!(c instanceof Function)&&Object.prototype.hasOwnProperty.call(g,b)&&a.push({key:b,value:c})}},function(){return b<a.length?this.yieldReturn(a[b++]):false},d.Blank)})},a.make=function(b){return a.repeat(b,1)};a.matches=function(f,e,b){if(b==null)b="";if(e instanceof RegExp){b+=e.ignoreCase?"i":"";b+=e.multiline?"m":"";e=e.source}if(b.indexOf("g")===-1)b+="g";return new a(function(){var a;return new c(function(){a=new RegExp(e,b)},function(){var b=a.exec(f);return b?this.yieldReturn(b):false},d.Blank)})};a.range=function(f,e,b){if(b==null)b=1;return new a(function(){var a,g=0;return new c(function(){a=f-b},function(){return g++<e?this.yieldReturn(a+=b):this.yieldBreak()},d.Blank)})};a.rangeDown=function(f,e,b){if(b==null)b=1;return new a(function(){var a,g=0;return new c(function(){a=f+b},function(){return g++<e?this.yieldReturn(a-=b):this.yieldBreak()},d.Blank)})};a.rangeTo=function(e,f,b){if(b==null)b=1;return e<f?new a(function(){var a;return new c(function(){a=e-b},function(){var c=a+=b;return c<=f?this.yieldReturn(c):this.yieldBreak()},d.Blank)}):new a(function(){var a;return new c(function(){a=e+b},function(){var c=a-=b;return c>=f?this.yieldReturn(c):this.yieldBreak()},d.Blank)})};a.repeat=function(b,e){return e!=null?a.repeat(b).take(e):new a(function(){return new c(d.Blank,function(){return this.yieldReturn(b)},d.Blank)})};a.repeatWithFinalize=function(d,e){d=b.createLambda(d);e=b.createLambda(e);return new a(function(){var a;return new c(function(){a=d()},function(){return this.yieldReturn(a)},function(){if(a!=null){e(a);a=null}})})};a.generate=function(e,f){if(f!=null)return a.generate(e).take(f);e=b.createLambda(e);return new a(function(){return new c(d.Blank,function(){return this.yieldReturn(e())},d.Blank)})};a.toInfinity=function(e,b){if(e==null)e=0;if(b==null)b=1;return new a(function(){var a;return new c(function(){a=e-b},function(){return this.yieldReturn(a+=b)},d.Blank)})};a.toNegativeInfinity=function(e,b){if(e==null)e=0;if(b==null)b=1;return new a(function(){var a;return new c(function(){a=e+b},function(){return this.yieldReturn(a-=b)},d.Blank)})};a.unfold=function(f,e){e=b.createLambda(e);return new a(function(){var b=true,a;return new c(d.Blank,function(){if(b){b=false;a=f;return this.yieldReturn(a)}a=e(a);return this.yieldReturn(a)},d.Blank)})};a.defer=function(d){return new a(function(){var e;return new c(function(){e=a.from(d()).getEnumerator()},function(){return e.moveNext()?this.yieldReturn(e.current()):this.yieldBreak()},function(){b.dispose(e)})})};a.prototype.traverseBreadthFirst=function(e,d){var f=this;e=b.createLambda(e);d=b.createLambda(d);return new a(function(){var g,i=0,h=[];return new c(function(){g=f.getEnumerator()},function(){while(true){if(g.moveNext()){h.push(g.current());return this.yieldReturn(d(g.current(),i))}var c=a.from(h).selectMany(function(a){return e(a)});if(!c.any())return false;else{i++;h=[];b.dispose(g);g=c.getEnumerator()}}},function(){b.dispose(g)})})};a.prototype.traverseDepthFirst=function(e,d){var f=this;e=b.createLambda(e);d=b.createLambda(d);return new a(function(){var h=[],g;return new c(function(){g=f.getEnumerator()},function(){while(true){if(g.moveNext()){var c=d(g.current(),h.length);h.push(g);g=a.from(e(g.current())).getEnumerator();return this.yieldReturn(c)}if(h.length<=0)return false;b.dispose(g);g=h.pop()}},function(){try{b.dispose(g)}finally{a.from(h).forEach(function(a){a.dispose()})}})})};a.prototype.flatten=function(){var e=this;return new a(function(){var g,f=null;return new c(function(){g=e.getEnumerator()},function(){while(true){if(f!=null)if(f.moveNext())return this.yieldReturn(f.current());else f=null;if(g.moveNext())if(g.current()instanceof Array){b.dispose(f);f=a.from(g.current()).selectMany(d.Identity).flatten().getEnumerator();continue}else return this.yieldReturn(g.current());return false}},function(){try{b.dispose(g)}finally{b.dispose(f)}})})};a.prototype.pairwise=function(d){var e=this;d=b.createLambda(d);return new a(function(){var a;return new c(function(){a=e.getEnumerator();a.moveNext()},function(){var b=a.current();return a.moveNext()?this.yieldReturn(d(b,a.current())):false},function(){b.dispose(a)})})};a.prototype.scan=function(f,d){var e;if(d==null){d=b.createLambda(f);e=false}else{d=b.createLambda(d);e=true}var g=this;return new a(function(){var a,h,i=true;return new c(function(){a=g.getEnumerator()},function(){if(i){i=false;if(!e){if(a.moveNext())return this.yieldReturn(h=a.current())}else return this.yieldReturn(h=f)}return a.moveNext()?this.yieldReturn(h=d(h,a.current())):false},function(){b.dispose(a)})})};a.prototype.select=function(d){d=b.createLambda(d);if(d.length<=1)return new i(this,null,d);else{var e=this;return new a(function(){var a,f=0;return new c(function(){a=e.getEnumerator()},function(){return a.moveNext()?this.yieldReturn(d(a.current(),f++)):false},function(){b.dispose(a)})})}};a.prototype.selectMany=function(e,d){var f=this;e=b.createLambda(e);if(d==null)d=function(b,a){return a};d=b.createLambda(d);return new a(function(){var i,h=g,j=0;return new c(function(){i=f.getEnumerator()},function(){if(h===g)if(!i.moveNext())return false;do{if(h==null){var c=e(i.current(),j++);h=a.from(c).getEnumerator()}if(h.moveNext())return this.yieldReturn(d(i.current(),h.current()));b.dispose(h);h=null}while(i.moveNext());return false},function(){try{b.dispose(i)}finally{b.dispose(h)}})})};a.prototype.where=function(d){d=b.createLambda(d);if(d.length<=1)return new j(this,d);else{var e=this;return new a(function(){var a,f=0;return new c(function(){a=e.getEnumerator()},function(){while(a.moveNext())if(d(a.current(),f++))return this.yieldReturn(a.current());return false},function(){b.dispose(a)})})}};a.prototype.choose=function(d){d=b.createLambda(d);var e=this;return new a(function(){var a,f=0;return new c(function(){a=e.getEnumerator()},function(){while(a.moveNext()){var b=d(a.current(),f++);if(b!=null)return this.yieldReturn(b)}return this.yieldBreak()},function(){b.dispose(a)})})};a.prototype.ofType=function(e){var d=this;return new a(function(){var a;return new c(function(){a=ss.getEnumerator(d)},function(){while(a.moveNext()){var b=ss.safeCast(a.current(),e);if(ss.isValue(b))return this.yieldReturn(b)}return false},function(){b.dispose(a)})})};a.prototype.zip=function(){var g=arguments,d=b.createLambda(arguments[arguments.length-1]),e=this;if(arguments.length==2){var f=arguments[0];return new a(function(){var h,g,i=0;return new c(function(){h=e.getEnumerator();g=a.from(f).getEnumerator()},function(){return h.moveNext()&&g.moveNext()?this.yieldReturn(d(h.current(),g.current(),i++)):false},function(){try{b.dispose(h)}finally{b.dispose(g)}})})}else return new a(function(){var f,h=0;return new c(function(){var b=a.make(e).concat(a.from(g).takeExceptLast().select(a.from)).select(function(a){return a.getEnumerator()}).toArray();f=a.from(b)},function(){if(f.all(function(a){return a.moveNext()})){var a=f.select(function(a){return a.current()}).toArray();a.push(h++);return this.yieldReturn(d.apply(null,a))}else return this.yieldBreak()},function(){a.from(f).forEach(b.dispose)})})};a.prototype.merge=function(){var e=arguments,d=this;return new a(function(){var f,g=-1;return new c(function(){f=a.make(d).concat(a.from(e).select(a.from)).select(function(a){return a.getEnumerator()}).toArray()},function(){while(f.length>0){g=g>=f.length-1?0:g+1;var a=f[g];if(a.moveNext())return this.yieldReturn(a.current());else{a.dispose();f.splice(g--,1)}}return this.yieldBreak()},function(){a.from(f).forEach(b.dispose)})})};a.prototype.join=function(k,f,e,h,i){f=b.createLambda(f);e=b.createLambda(e);h=b.createLambda(h);var j=this;return new a(function(){var l,o,m=null,n=0;return new c(function(){l=j.getEnumerator();o=a.from(k).toLookup(e,d.Identity,i)},function(){while(true){if(m!=null){var a=m[n++];if(a!==g)return this.yieldReturn(h(l.current(),a));a=null;n=0}if(l.moveNext()){var b=f(l.current());m=o.get(b).toArray()}else return false}},function(){b.dispose(l)})})};a.prototype.groupJoin=function(j,f,e,g,i){f=b.createLambda(f);e=b.createLambda(e);g=b.createLambda(g);var h=this;return new a(function(){var k=h.getEnumerator(),l=null;return new c(function(){k=h.getEnumerator();l=a.from(j).toLookup(e,d.Identity,i)},function(){if(k.moveNext()){var a=l.get(f(k.current()));return this.yieldReturn(g(k.current(),a))}return false},function(){b.dispose(k)})})};a.prototype.all=function(a){a=b.createLambda(a);var c=true;this.forEach(function(b){if(!a(b)){c=false;return false}});return c};a.prototype.any=function(c){c=b.createLambda(c);var a=this.getEnumerator();try{if(arguments.length==0)return a.moveNext();while(a.moveNext())if(c(a.current()))return true;return false}finally{b.dispose(a)}};a.prototype.isEmpty=function(){return!this.any()};a.prototype.concat=function(){var d=this;if(arguments.length==1){var e=arguments[0];return new a(function(){var g,f;return new c(function(){g=d.getEnumerator()},function(){if(f==null){if(g.moveNext())return this.yieldReturn(g.current());f=a.from(e).getEnumerator()}return f.moveNext()?this.yieldReturn(f.current()):false},function(){try{b.dispose(g)}finally{b.dispose(f)}})})}else{var f=arguments;return new a(function(){var e;return new c(function(){e=a.make(d).concat(a.from(f).select(a.from)).select(function(a){return a.getEnumerator()}).toArray()},function(){while(e.length>0){var a=e[0];if(a.moveNext())return this.yieldReturn(a.current());else{a.dispose();e.splice(0,1)}}return this.yieldBreak()},function(){a.from(e).forEach(b.dispose)})})}};a.prototype.insert=function(f,d){var e=this;return new a(function(){var h,g,j=0,i=false;return new c(function(){h=e.getEnumerator();g=a.from(d).getEnumerator()},function(){if(j==f&&g.moveNext()){i=true;return this.yieldReturn(g.current())}if(h.moveNext()){j++;return this.yieldReturn(h.current())}return!i&&g.moveNext()?this.yieldReturn(g.current()):false},function(){try{b.dispose(h)}finally{b.dispose(g)}})})};a.prototype.alternate=function(d){var e=this;return new a(function(){var h,g,i,f;return new c(function(){if(d instanceof Array||d.getEnumerator!=null)i=a.from(a.from(d).toArray());else i=a.make(d);g=e.getEnumerator();if(g.moveNext())h=g.current()},function(){while(true){if(f!=null)if(f.moveNext())return this.yieldReturn(f.current());else f=null;if(h==null&&g.moveNext()){h=g.current();f=i.getEnumerator();continue}else if(h!=null){var a=h;h=null;return this.yieldReturn(a)}return this.yieldBreak()}},function(){try{b.dispose(g)}finally{b.dispose(f)}})})};a.prototype.contains=function(d,c){c=c||ss.EqualityComparer.def;var a=this.getEnumerator();try{while(a.moveNext())if(c.areEqual(a.current(),d))return true;return false}finally{b.dispose(a)}};a.prototype.defaultIfEmpty=function(d){var e=this;if(d===g)d=null;return new a(function(){var a,f=true;return new c(function(){a=e.getEnumerator()},function(){if(a.moveNext()){f=false;return this.yieldReturn(a.current())}else if(f){f=false;return this.yieldReturn(d)}return false},function(){b.dispose(a)})})};a.prototype.distinct=function(b){return this.except(a.empty(),b)};a.prototype.distinctUntilChanged=function(d){d=b.createLambda(d);var e=this;return new a(function(){var a,f,g;return new c(function(){a=e.getEnumerator()},function(){while(a.moveNext()){var b=d(a.current());if(g){g=false;f=b;return this.yieldReturn(a.current())}if(f===b)continue;f=b;return this.yieldReturn(a.current())}return this.yieldBreak()},function(){b.dispose(a)})})};a.prototype.except=function(e,d){var f=this;return new a(function(){var g,h;return new c(function(){g=f.getEnumerator();h=new(ss.makeGenericType(ss.Dictionary$2,[Object,Object]))(null,d);a.from(e).forEach(function(a){h.add(a)})},function(){while(g.moveNext()){var a=g.current();if(!h.containsKey(a)){h.add(a);return this.yieldReturn(a)}}return false},function(){b.dispose(g)})})};a.prototype.intersect=function(e,d){var f=this;return new a(function(){var g,h,i;return new c(function(){g=f.getEnumerator();h=new(ss.makeGenericType(ss.Dictionary$2,[Object,Object]))(null,d);a.from(e).forEach(function(a){h.add(a)});i=new(ss.makeGenericType(ss.Dictionary$2,[Object,Object]))(null,d)},function(){while(g.moveNext()){var a=g.current();if(!i.containsKey(a)&&h.containsKey(a)){i.add(a);return this.yieldReturn(a)}}return false},function(){b.dispose(g)})})};a.prototype.sequenceEqual=function(f,e){e=e||ss.EqualityComparer.def;var d=this.getEnumerator();try{var c=a.from(f).getEnumerator();try{while(d.moveNext())if(!c.moveNext()||!e.areEqual(d.current(),c.current()))return false;return c.moveNext()?false:true}finally{b.dispose(c)}}finally{b.dispose(d)}};a.prototype.union=function(e,d){var f=this;return new a(function(){var j,h,i;return new c(function(){j=f.getEnumerator();i=new(ss.makeGenericType(ss.Dictionary$2,[Object,Object]))(null,d)},function(){var b;if(h===g){while(j.moveNext()){b=j.current();if(!i.containsKey(b)){i.add(b);return this.yieldReturn(b)}}h=a.from(e).getEnumerator()}while(h.moveNext()){b=h.current();if(!i.containsKey(b)){i.add(b);return this.yieldReturn(b)}}return false},function(){try{b.dispose(j)}finally{b.dispose(h)}})})};a.prototype.orderBy=function(a,b){return new h(this,a,b,false)};a.prototype.orderByDescending=function(a,b){return new h(this,a,b,true)};a.prototype.reverse=function(){var b=this;return new a(function(){var a,e;return new c(function(){a=b.toArray();e=a.length},function(){return e>0?this.yieldReturn(a[--e]):false},d.Blank)})};a.prototype.shuffle=function(){var b=this;return new a(function(){var a;return new c(function(){a=b.toArray()},function(){if(a.length>0){var b=Math.floor(Math.random()*a.length);return this.yieldReturn(a.splice(b,1)[0])}return false},d.Blank)})};a.prototype.weightedSample=function(e){e=b.createLambda(e);var f=this;return new a(function(){var a,b=0;return new c(function(){a=f.choose(function(c){var a=e(c);if(a<=0)return null;b+=a;return{value:c,bound:b}}).toArray()},function(){if(a.length>0){var f=Math.floor(Math.random()*b)+1,e=-1,c=a.length;while(c-e>1){var d=Math.floor((e+c)/2);if(a[d].bound>=f)c=d;else e=d}return this.yieldReturn(a[c].value)}return this.yieldBreak()},d.Blank)})};a.prototype.groupBy=function(f,e,d,g){var h=this;f=b.createLambda(f);e=b.createLambda(e);if(d!=null)d=b.createLambda(d);return new a(function(){var a;return new c(function(){a=h.toLookup(f,e,g).toEnumerable().getEnumerator()},function(){while(a.moveNext())return d==null?this.yieldReturn(a.current()):this.yieldReturn(d(a.current().key(),a.current()));return false},function(){b.dispose(a)})})};a.prototype.partitionBy=function(f,e,d,h){var i=this;f=b.createLambda(f);e=b.createLambda(e);h=h||ss.EqualityComparer.def;var g;if(d==null){g=false;d=function(b,a){return new o(b,a)}}else{g=true;d=b.createLambda(d)}return new a(function(){var j,l,k=[];return new c(function(){j=i.getEnumerator();if(j.moveNext()){l=f(j.current());k.push(e(j.current()))}},function(){var b;while((b=j.moveNext())==true)if(h.areEqual(l,f(j.current())))k.push(e(j.current()));else break;if(k.length>0){var c=g?d(l,a.from(k)):d(l,k);if(b){l=f(j.current());k=[e(j.current())]}else k=[];return this.yieldReturn(c)}return false},function(){b.dispose(j)})})};a.prototype.buffer=function(e){var d=this;return new a(function(){var a;return new c(function(){a=d.getEnumerator()},function(){var b=[],c=0;while(a.moveNext()){b.push(a.current());if(++c>=e)return this.yieldReturn(b)}return b.length>0?this.yieldReturn(b):false},function(){b.dispose(a)})})};a.prototype.aggregate=function(d,c,a){a=b.createLambda(a);return a(this.scan(d,c,a).last())};a.prototype.average=function(a){a=b.createLambda(a);var d=0,c=0;this.forEach(function(b){d+=a(b);++c});return d/c};a.prototype.count=function(a){a=a==null?d.True:b.createLambda(a);var c=0;this.forEach(function(d,b){if(a(d,b))++c});return c};a.prototype.max=function(a){if(a==null)a=d.Identity;return this.select(a).aggregate(function(a,b){return a>b?a:b})};a.prototype.min=function(a){if(a==null)a=d.Identity;return this.select(a).aggregate(function(a,b){return a<b?a:b})};a.prototype.maxBy=function(a){a=b.createLambda(a);return this.aggregate(function(b,c){return a(b)>a(c)?b:c})};a.prototype.minBy=function(a){a=b.createLambda(a);return this.aggregate(function(b,c){return a(b)<a(c)?b:c})};a.prototype.sum=function(a){if(a==null)a=d.Identity;return this.select(a).aggregate(0,function(a,b){return a+b})};a.prototype.elementAt=function(c){var b,a=false;this.forEach(function(e,d){if(d==c){b=e;a=true;return false}});if(!a)throw new Error("index is less than 0 or greater than or equal to the number of elements in source.");return b};a.prototype.elementAtOrDefault=function(d,a){if(a===g)a=null;var c,b=false;this.forEach(function(e,a){if(a==d){c=e;b=true;return false}});return!b?a:c};a.prototype.first=function(a){if(a!=null)return this.where(a).first();var c,b=false;this.forEach(function(a){c=a;b=true;return false});if(!b)throw new Error("first:No element satisfies the condition.");return c};a.prototype.firstOrDefault=function(b,a){if(a===g)a=null;if(b!=null)return this.where(b).firstOrDefault(null,a);var d,c=false;this.forEach(function(a){d=a;c=true;return false});return!c?a:d};a.prototype.last=function(a){if(a!=null)return this.where(a).last();var c,b=false;this.forEach(function(a){b=true;c=a});if(!b)throw new Error("last:No element satisfies the condition.");return c};a.prototype.lastOrDefault=function(b,a){if(a===g)a=null;if(b!=null)return this.where(b).lastOrDefault(null,a);var d,c=false;this.forEach(function(a){c=true;d=a});return!c?a:d};a.prototype.single=function(b){if(b!=null)return this.where(b).single();var c,a=false;this.forEach(function(b){if(!a){a=true;c=b}else throw new Error("single:sequence contains more than one element.");});if(!a)throw new Error("single:No element satisfies the condition.");return c};a.prototype.singleOrDefault=function(c,a){if(a===g)a=null;if(c!=null)return this.where(c).singleOrDefault(null,a);var d,b=false;this.forEach(function(a){if(!b){b=true;d=a}else throw new Error("single:sequence contains more than one element.");});return!b?a:d};a.prototype.skip=function(e){var d=this;return new a(function(){var a,f=0;return new c(function(){a=d.getEnumerator();while(f++<e&&a.moveNext());},function(){return a.moveNext()?this.yieldReturn(a.current()):false},function(){b.dispose(a)})})};a.prototype.skipWhile=function(d){d=b.createLambda(d);var e=this;return new a(function(){var a,g=0,f=false;return new c(function(){a=e.getEnumerator()},function(){while(!f)if(a.moveNext()){if(!d(a.current(),g++)){f=true;return this.yieldReturn(a.current())}continue}else return false;return a.moveNext()?this.yieldReturn(a.current()):false},function(){b.dispose(a)})})};a.prototype.take=function(e){var d=this;return new a(function(){var a,f=0;return new c(function(){a=d.getEnumerator()},function(){return f++<e&&a.moveNext()?this.yieldReturn(a.current()):false},function(){b.dispose(a)})})};a.prototype.takeWhile=function(d){d=b.createLambda(d);var e=this;return new a(function(){var a,f=0;return new c(function(){a=e.getEnumerator()},function(){return a.moveNext()&&d(a.current(),f++)?this.yieldReturn(a.current()):false},function(){b.dispose(a)})})};a.prototype.takeExceptLast=function(d){if(d==null)d=1;var e=this;return new a(function(){if(d<=0)return e.getEnumerator();var a,f=[];return new c(function(){a=e.getEnumerator()},function(){while(a.moveNext()){if(f.length==d){f.push(a.current());return this.yieldReturn(f.shift())}f.push(a.current())}return false},function(){b.dispose(a)})})};a.prototype.takeFromLast=function(d){if(d<=0||d==null)return a.empty();var e=this;return new a(function(){var h,f,g=[];return new c(function(){h=e.getEnumerator()},function(){while(h.moveNext()){g.length==d&&g.shift();g.push(h.current())}if(f==null)f=a.from(g).getEnumerator();return f.moveNext()?this.yieldReturn(f.current()):false},function(){b.dispose(f)})})};a.prototype.indexOf=function(c,b){var a=null;if(typeof c===f.Function)this.forEach(function(d,b){if(c(d,b)){a=b;return false}});else{b=b||ss.EqualityComparer.def;this.forEach(function(e,d){if(b.areEqual(e,c)){a=d;return false}})}return a!==null?a:-1};a.prototype.lastIndexOf=function(c,a){var b=-1;if(typeof c===f.Function)this.forEach(function(d,a){if(c(d,a))b=a});else{a=a||ss.EqualityComparer.def;this.forEach(function(e,d){if(a.areEqual(e,c))b=d})}return b};a.prototype.asEnumerable=function(){return a.from(this)};a.prototype.toArray=function(){var a=[];this.forEach(function(b){a.push(b)});return a};a.prototype.toLookup=function(c,a,f){c=b.createLambda(c);a=b.createLambda(a);var d=new(ss.makeGenericType(ss.Dictionary$2,[Object,Object]))(null,f),e=[];this.forEach(function(h){var b=c(h),f=a(h),g={$:null};if(d.tryGetValue(b,g))g.$.push(f);else{e.push(b);d.add(b,[f])}});return new p(d,e)};a.prototype.toObject=function(c,a){c=b.createLambda(c);a=b.createLambda(a);var d={};this.forEach(function(b){d[c(b)]=a(b)});return d};a.prototype.toDictionary=function(c,a,g,e,f){c=b.createLambda(c);a=b.createLambda(a);var d=new(ss.makeGenericType(ss.Dictionary$2,[g,e]))(null,f);this.forEach(function(b){d.add(c(b),a(b))});return d};a.prototype.toJSONString=function(a,b){if(typeof JSON===f.Undefined||JSON.stringify==null)throw new Error("toJSONString can't find JSON.stringify. This works native JSON support Browser or include json2.js");return JSON.stringify(this.toArray(),a,b)};a.prototype.toJoinedString=function(a,b){if(a==null)a="";if(b==null)b=d.Identity;return this.select(b).toArray().join(a)};a.prototype.doAction=function(d){var e=this;d=b.createLambda(d);return new a(function(){var a,f=0;return new c(function(){a=e.getEnumerator()},function(){if(a.moveNext()){d(a.current(),f++);return this.yieldReturn(a.current())}return false},function(){b.dispose(a)})})};a.prototype.forEach=function(c){c=b.createLambda(c);var d=0,a=this.getEnumerator();try{while(a.moveNext())if(c(a.current(),d++)===false)break}finally{b.dispose(a)}};a.prototype.write=function(a,c){if(a==null)a="";c=b.createLambda(c);var d=true;this.forEach(function(b){if(d)d=false;else document.write(a);document.write(c(b))})};a.prototype.writeLine=function(a){a=b.createLambda(a);this.forEach(function(b){document.writeln(a(b)+"<br />")})};a.prototype.force=function(){var a=this.getEnumerator();try{while(a.moveNext());}finally{b.dispose(a)}};a.prototype.letBind=function(d){d=b.createLambda(d);var e=this;return new a(function(){var f;return new c(function(){f=a.from(d(e)).getEnumerator()},function(){return f.moveNext()?this.yieldReturn(f.current()):false},function(){b.dispose(f)})})};a.prototype.share=function(){var f=this,a,e=false;return new n(function(){return new c(function(){if(a==null)a=f.getEnumerator()},function(){if(e)throw new Error("enumerator is disposed");return a.moveNext()?this.yieldReturn(a.current()):false},d.Blank)},function(){e=true;b.dispose(a)})};a.prototype.memoize=function(){var g=this,e,a,f=false;return new n(function(){var b=-1;return new c(function(){if(a==null){a=g.getEnumerator();e=[]}},function(){if(f)throw new Error("enumerator is disposed");b++;return e.length<=b?a.moveNext()?this.yieldReturn(e[b]=a.current()):false:this.yieldReturn(e[b])},d.Blank)},function(){f=true;b.dispose(a);e=null})};a.prototype.catchError=function(d){d=b.createLambda(d);var e=this;return new a(function(){var a;return new c(function(){a=e.getEnumerator()},function(){try{return a.moveNext()?this.yieldReturn(a.current()):false}catch(b){d(b);return false}},function(){b.dispose(a)})})};a.prototype.finallyAction=function(d){d=b.createLambda(d);var e=this;return new a(function(){var a;return new c(function(){a=e.getEnumerator()},function(){return a.moveNext()?this.yieldReturn(a.current()):false},function(){try{b.dispose(a)}finally{d()}})})};a.prototype.log=function(a){a=b.createLambda(a);return this.doAction(function(b){typeof console!==f.Undefined&&console.log(a(b))})};a.prototype.trace=function(c,a){if(c==null)c="Trace";a=b.createLambda(a);return this.doAction(function(b){typeof console!==f.Undefined&&console.log(c,a(b))})};var h=function(f,a,d,c,e){this.source=f;this.keySelector=b.createLambda(a);this.comparer=d||ss.Comparer.def;this.descending=c;this.parent=e};h.prototype=new a;h.prototype.createOrderedEnumerable=function(a,c,b){return new h(this.source,a,c,b,this)};h.prototype.thenBy=function(a,b){return this.createOrderedEnumerable(a,b,false)};h.prototype.thenByDescending=function(a,b){return this.createOrderedEnumerable(a,b,true)};h.prototype.getEnumerator=function(){var f=this,b,a,e=0;return new c(function(){b=[];a=[];f.source.forEach(function(d,c){b.push(d);a.push(c)});var c=l.create(f,null);c.GenerateKeys(b);a.sort(function(a,b){return c.compare(a,b)})},function(){return e<a.length?this.yieldReturn(b[a[e++]]):false},d.Blank)};var l=function(a,c,b,d){this.keySelector=a;this.comparer=c;this.descending=b;this.child=d;this.keys=null};l.create=function(a,c){var b=new l(a.keySelector,a.comparer,a.descending,c);return a.parent!=null?l.create(a.parent,b):b};l.prototype.GenerateKeys=function(b){for(var d=b.length,e=this.keySelector,c=new Array(d),a=0;a<d;a++)c[a]=e(b[a]);this.keys=c;this.child!=null&&this.child.GenerateKeys(b)};l.prototype.compare=function(c,d){var a=this.comparer.compare(this.keys[c],this.keys[d]);return a==0?this.child!=null?this.child.compare(c,d):b.compare(c,d):this.descending?-a:a};var n=function(b,c){this.dispose=c;a.call(this,b)};n.prototype=new a;var e=function(a){this.getSource=function(){return a}};e.prototype=new a;e.prototype.any=function(b){return b==null?this.getSource().length>0:a.prototype.any.apply(this,arguments)};e.prototype.count=function(b){return b==null?this.getSource().length:a.prototype.count.apply(this,arguments)};e.prototype.elementAt=function(b){var c=this.getSource();return 0<=b&&b<c.length?c[b]:a.prototype.elementAt.apply(this,arguments)};e.prototype.elementAtOrDefault=function(b,a){if(a===g)a=null;var c=this.getSource();return 0<=b&&b<c.length?c[b]:a};e.prototype.first=function(c){var b=this.getSource();return c==null&&b.length>0?b[0]:a.prototype.first.apply(this,arguments)};e.prototype.firstOrDefault=function(d,b){if(b===g)b=null;if(d!=null)return a.prototype.firstOrDefault.apply(this,arguments);var c=this.getSource();return c.length>0?c[0]:b};e.prototype.last=function(c){var b=this.getSource();return c==null&&b.length>0?b[b.length-1]:a.prototype.last.apply(this,arguments)};e.prototype.lastOrDefault=function(d,b){if(b===g)b=null;if(d!=null)return a.prototype.lastOrDefault.apply(this,arguments);var c=this.getSource();return c.length>0?c[c.length-1]:b};e.prototype.skip=function(e){var b=this.getSource();return new a(function(){var a;return new c(function(){a=e<0?0:e},function(){return a<b.length?this.yieldReturn(b[a++]):false},d.Blank)})};e.prototype.takeExceptLast=function(a){if(a==null)a=1;return this.take(this.getSource().length-a)};e.prototype.takeFromLast=function(a){return this.skip(this.getSource().length-a)};e.prototype.reverse=function(){var b=this.getSource();return new a(function(){var a;return new c(function(){a=b.length},function(){return a>0?this.yieldReturn(b[--a]):false},d.Blank)})};e.prototype.sequenceEqual=function(b,c){return(b instanceof e||b instanceof Array)&&c==null&&a.from(b).count()!=this.count()?false:a.prototype.sequenceEqual.apply(this,arguments)};e.prototype.toJoinedString=function(b,d){var c=this.getSource();if(d!=null||!(c instanceof Array))return a.prototype.toJoinedString.apply(this,arguments);if(b==null)b="";return c.join(b)};e.prototype.getEnumerator=function(){return new ss.ArrayEnumerator(this.getSource())};var j=function(b,a){this.prevSource=b;this.prevPredicate=a};j.prototype=new a;j.prototype.where=function(c){c=b.createLambda(c);if(c.length<=1){var e=this.prevPredicate,d=function(a){return e(a)&&c(a)};return new j(this.prevSource,d)}else return a.prototype.where.call(this,c)};j.prototype.select=function(c){c=b.createLambda(c);return c.length<=1?new i(this.prevSource,this.prevPredicate,c):a.prototype.select.call(this,c)};j.prototype.getEnumerator=function(){var d=this.prevPredicate,e=this.prevSource,a;return new c(function(){a=e.getEnumerator()},function(){while(a.moveNext())if(d(a.current()))return this.yieldReturn(a.current());return false},function(){b.dispose(a)})};var i=function(c,a,b){this.prevSource=c;this.prevPredicate=a;this.prevSelector=b};i.prototype=new a;i.prototype.where=function(c){c=b.createLambda(c);return c.length<=1?new j(this,c):a.prototype.where.call(this,c)};i.prototype.select=function(c){c=b.createLambda(c);if(c.length<=1){var e=this.prevSelector,d=function(a){return c(e(a))};return new i(this.prevSource,this.prevPredicate,d)}else return a.prototype.select.call(this,c)};i.prototype.getEnumerator=function(){var d=this.prevPredicate,e=this.prevSelector,f=this.prevSource,a;return new c(function(){a=f.getEnumerator()},function(){while(a.moveNext())if(d==null||d(a.current()))return this.yieldReturn(e(a.current()));return false},function(){b.dispose(a)})};var p=function(b,c){this.count=function(){return b.get_count()};this.get=function(e){var c={$:null},d=b.tryGetValue(e,c);return a.from(d?c.$:[])};this.contains=function(a){return b.containsKey(a)};this.toEnumerable=function(){return a.from(c).select(function(a){return new o(a,b.get_item(a))})};this.getEnumerator=function(){return this.toEnumerable().getEnumerator()}};ss.initClass(p,m,{},null,[ss.IEnumerable]);var o=function(b,a){this.key=function(){return b};e.call(this,a)};o.prototype=new e;if(typeof define===f.Function&&define.amd){define("linqjs",[],function(){return a});q.Enumerable=a}else if(typeof module!==f.Undefined&&module.exports){module.exports=a;global.Enumerable=a}else q.Enumerable=a})(this)
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/mscorlib.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/mscorlib.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/mscorlib.js	(revision 101)
@@ -0,0 +1,3887 @@
+// SaltarelleCompiler Runtime (http://www.saltarelle-compiler.com)
+// Modified version of Script# Core Runtime (http://projects.nikhilk.net/ScriptSharp)
+
+if (typeof(global) === "undefined") {
+	if (typeof(window) !== "undefined")
+		global = window;
+	else if (typeof(self) !== "undefined")
+		global = self;
+}
+(function(global) {
+"use strict";
+
+var ss = { __assemblies: {} };
+
+ss.initAssembly = function assembly(obj, name, res) {
+	res = res || {};
+	obj.name = name;
+	obj.toString = function() { return this.name; };
+	obj.__types = {};
+	obj.getResourceNames = function() { return Object.keys(res); };
+	obj.getResourceDataBase64 = function(name) { return res[name] || null; };
+	obj.getResourceData = function(name) { var r = res[name]; return r ? ss.dec64(r) : null; };
+	ss.__assemblies[name] = obj;
+};
+ss.initAssembly(ss, 'mscorlib');
+
+ss.load = function ss$load(name) {
+	return ss.__assemblies[name] || require(name);
+};
+
+var enc = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', dec;
+ss.enc64 = function(a, b) {
+	var s = '', i;
+	for (i = 0; i < a.length; i += 3) {
+		var c1 = a[i], c2 = a[i+1], c3 = a[i+2];
+		s += (b && i && !(i%57) ? '\n' : '') + enc[c1 >> 2] + enc[((c1 & 3) << 4) | (c2 >> 4)] + (i < a.length - 1 ? enc[((c2 & 15) << 2) | (c3 >> 6)] : '=') + (i < a.length - 2 ? enc[c3 & 63] : '=');
+	}
+	return s;
+};
+
+ss.dec64 = function(s) {
+	s = s.replace(/\s/g, '');
+	dec = dec || (function() { var o = {'=':-1}; for (var i = 0; i < 64; i++) o[enc[i]] = i; return o; })();
+	var a = Array(Math.max(s.length * 3 / 4 - 2, 0)), i;
+	for (i = 0; i < s.length; i += 4) {
+		var j = i * 3 / 4, c1 = dec[s[i]], c2 = dec[s[i+1]], c3 = dec[s[i+2]], c4 = dec[s[i+3]];
+		a[j] = (c1 << 2) | (c2 >> 4);
+		if (c3 >= 0) a[j+1] = ((c2 & 15) << 4) | (c3 >> 2);
+		if (c4 >= 0) a[j+2] = ((c3 & 3) << 6) | c4;
+	}
+	return a;
+};
+
+ss.getAssemblies = function ss$getAssemblies() {
+	return Object.keys(ss.__assemblies).map(function(n) { return ss.__assemblies[n]; });
+};
+
+ss.isNullOrUndefined = function ss$isNullOrUndefined(o) {
+	return (o === null) || (o === undefined);
+};
+
+ss.isValue = function ss$isValue(o) {
+	return (o !== null) && (o !== undefined);
+};
+
+ss.referenceEquals = function ss$referenceEquals(a, b) {
+	return ss.isValue(a) ? a === b : !ss.isValue(b);
+};
+
+ss.mkdict = function ss$mkdict() {
+	var a = (arguments.length != 1 ? arguments : arguments[0]);
+	var r = {};
+	for (var i = 0; i < a.length; i += 2) {
+		r[a[i]] = a[i + 1];
+	}
+	return r;
+};
+
+ss.clone = function ss$clone(t, o) {
+	return o ? t.$clone(o) : o;
+}
+
+ss.coalesce = function ss$coalesce(a, b) {
+	return ss.isValue(a) ? a : b;
+};
+
+ss.isDate = function ss$isDate(obj) {
+	return Object.prototype.toString.call(obj) === '[object Date]';
+};
+
+ss.isArray = function ss$isArray(obj) {
+	return Object.prototype.toString.call(obj) === '[object Array]';
+};
+
+ss.isTypedArrayType = function ss$isTypedArrayType(type) {
+	return ['Float32Array', 'Float64Array', 'Int8Array', 'Int16Array', 'Int32Array', 'Uint8Array', 'Uint16Array', 'Uint32Array', 'Uint8ClampedArray'].indexOf(ss.getTypeFullName(type)) >= 0;
+};
+
+ss.isArrayOrTypedArray = function ss$isArray(obj) {
+	return ss.isArray(obj) || ss.isTypedArrayType(ss.getInstanceType(obj));
+};
+
+ss.getHashCode = function ss$getHashCode(obj) {
+	if (!ss.isValue(obj))
+		throw new ss_NullReferenceException('Cannot get hash code of null');
+	else if (typeof(obj.getHashCode) === 'function')
+		return obj.getHashCode();
+	else if (typeof(obj) === 'boolean') {
+		return obj ? 1 : 0;
+	}
+	else if (typeof(obj) === 'number') {
+		var s = obj.toExponential();
+		s = s.substr(0, s.indexOf('e'));
+		return parseInt(s.replace('.', ''), 10) & 0xffffffff;
+	}
+	else if (typeof(obj) === 'string') {
+		var res = 0;
+		for (var i = 0; i < obj.length; i++)
+			res = (res * 31 + obj.charCodeAt(i)) & 0xffffffff;
+		return res;
+	}
+	else if (ss.isDate(obj)) {
+		return obj.valueOf() & 0xffffffff;
+	}
+	else {
+		return ss.defaultHashCode(obj);
+	}
+};
+
+ss.defaultHashCode = function ss$defaultHashCode(obj) {
+	return obj.$__hashCode__ || (obj.$__hashCode__ = (Math.random() * 0x100000000) | 0);
+};
+
+ss.equals = function ss$equals(a, b) {
+	if (!ss.isValue(a))
+		throw new ss_NullReferenceException('Object is null');
+	else if (a !== ss && typeof(a.equals) === 'function')
+		return a.equals(b);
+	if (ss.isDate(a) && ss.isDate(b))
+		return a.valueOf() === b.valueOf();
+	else if (typeof(a) === 'function' && typeof(b) === 'function')
+		return ss.delegateEquals(a, b);
+	else if (ss.isNullOrUndefined(a) && ss.isNullOrUndefined(b))
+		return true;
+	else
+		return a === b;
+};
+
+ss.compare = function ss$compare(a, b) {
+	if (!ss.isValue(a))
+		throw new ss_NullReferenceException('Object is null');
+	else if (typeof(a) === 'number' || typeof(a) === 'string' || typeof(a) === 'boolean')
+		return a < b ? -1 : (a > b ? 1 : 0);
+	else if (ss.isDate(a))
+		return ss.compare(a.valueOf(), b.valueOf());
+	else
+		return a.compareTo(b);
+};
+
+ss.equalsT = function ss$equalsT(a, b) {
+	if (!ss.isValue(a))
+		throw new ss_NullReferenceException('Object is null');
+	else if (typeof(a) === 'number' || typeof(a) === 'string' || typeof(a) === 'boolean')
+		return a === b;
+	else if (ss.isDate(a))
+		return a.valueOf() === b.valueOf();
+	else
+		return a.equalsT(b);
+};
+
+ss.staticEquals = function ss$staticEquals(a, b) {
+	if (!ss.isValue(a))
+		return !ss.isValue(b);
+	else
+		return ss.isValue(b) ? ss.equals(a, b) : false;
+};
+
+ss.shallowCopy = function ss$shallowCopy(source, target) {
+	var keys = Object.keys(source);
+	for (var i = 0, l = keys.length; i < l; i++) {
+		var k = keys[i];
+		target[k] = source[k];
+	}
+};
+
+ss.isLower = function ss$isLower(c) {
+	var s = String.fromCharCode(c);
+	return s === s.toLowerCase() && s !== s.toUpperCase();
+};
+
+ss.isUpper = function ss$isUpper(c) {
+	var s = String.fromCharCode(c);
+	return s !== s.toLowerCase() && s === s.toUpperCase();
+};
+
+if (typeof(window) == 'object') {
+	// Browser-specific stuff that could go into the Web assembly, but that assembly does not have an associated JS file.
+	if (!window.Element) {
+		// IE does not have an Element constructor. This implementation should make casting to elements work.
+		window.Element = function() {};
+		window.Element.isInstanceOfType = function(instance) { return instance && typeof instance.constructor === 'undefined' && typeof instance.tagName === 'string'; };
+	}
+	window.Element.__typeName = 'Element';
+	
+	if (!window.XMLHttpRequest) {
+		window.XMLHttpRequest = function() {
+			var progIDs = [ 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP' ];
+	
+			for (var i = 0; i < progIDs.length; i++) {
+				try {
+					var xmlHttp = new ActiveXObject(progIDs[i]);
+					return xmlHttp;
+				}
+				catch (ex) {
+				}
+			}
+	
+			return null;
+		};
+	}
+
+	ss.parseXml = function(markup) {
+		try {
+			if (DOMParser) {
+				var domParser = new DOMParser();
+				return domParser.parseFromString(markup, 'text/xml');
+			}
+			else {
+				var progIDs = [ 'Msxml2.DOMDocument.3.0', 'Msxml2.DOMDocument' ];
+
+				for (var i = 0; i < progIDs.length; i++) {
+					var xmlDOM = new ActiveXObject(progIDs[i]);
+					xmlDOM.async = false;
+					xmlDOM.loadXML(markup);
+					xmlDOM.setProperty('SelectionLanguage', 'XPath');
+					return xmlDOM;
+				}
+			}
+		}
+		catch (ex) {
+		}
+
+		return null;
+	};
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// Object Extensions
+
+ss.clearKeys = function ss$clearKeys(d) {
+	for (var n in d) {
+		if (d.hasOwnProperty(n))
+			delete d[n];
+	}
+};
+
+ss.keyExists = function ss$keyExists(d, key) {
+	return d[key] !== undefined;
+};
+
+if (!Object.keys) {
+	Object.keys = (function() {
+		'use strict';
+		var hasOwnProperty = Object.prototype.hasOwnProperty,
+			hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
+			dontEnums = ['toString','toLocaleString','valueOf','hasOwnProperty','isPrototypeOf','propertyIsEnumerable','constructor'],
+			dontEnumsLength = dontEnums.length;
+
+		return function (obj) {
+			if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {
+				throw new TypeError('Object.keys called on non-object');
+			}
+
+			var result = [], prop, i;
+
+			for (prop in obj) {
+				if (hasOwnProperty.call(obj, prop)) {
+					result.push(prop);
+				}
+			}
+
+			if (hasDontEnumBug) {
+				for (i = 0; i < dontEnumsLength; i++) {
+					if (hasOwnProperty.call(obj, dontEnums[i])) {
+						result.push(dontEnums[i]);
+					}
+				}
+			}
+			return result;
+		};
+	}());
+}
+
+ss.getKeyCount = function ss$getKeyCount(d) {
+	return Object.keys(d).length;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// Type System Implementation
+
+ss.__genericCache = {};
+
+ss._makeGenericTypeName = function ss$_makeGenericTypeName(genericType, typeArguments) {
+	var result = genericType.__typeName;
+	for (var i = 0; i < typeArguments.length; i++)
+		result += (i === 0 ? '[' : ',') + '[' + ss.getTypeQName(typeArguments[i]) + ']';
+	result += ']';
+	return result;
+};
+
+ss.makeGenericType = function ss$makeGenericType(genericType, typeArguments) {
+	var name = ss._makeGenericTypeName(genericType, typeArguments);
+	return ss.__genericCache[name] || genericType.apply(null, typeArguments);
+};
+
+ss.registerGenericClassInstance = function ss$registerGenericClassInstance(instance, genericType, typeArguments, members, baseType, interfaceTypes) {
+	var name = ss._makeGenericTypeName(genericType, typeArguments);
+	ss.__genericCache[name] = instance;
+	instance.__typeName = name;
+	instance.__genericTypeDefinition = genericType;
+	instance.__typeArguments = typeArguments;
+	ss.initClass(instance, genericType.__assembly, members, baseType(), interfaceTypes());
+};
+
+ss.registerGenericInterfaceInstance = function ss$registerGenericInterfaceInstance(instance, genericType, typeArguments, members, baseInterfaces) {
+	var name = ss._makeGenericTypeName(genericType, typeArguments);
+	ss.__genericCache[name] = instance;
+	instance.__typeName = name;
+	instance.__genericTypeDefinition = genericType;
+	instance.__typeArguments = typeArguments;
+	ss.initInterface(instance, genericType.__assembly, members, baseInterfaces());
+};
+
+ss.isGenericTypeDefinition = function ss$isGenericTypeDefinition(type) {
+	return type.__isGenericTypeDefinition || false;
+};
+
+ss.getGenericTypeDefinition = function ss$getGenericTypeDefinition(type) {
+	return type.__genericTypeDefinition || null;
+};
+
+ss.getGenericParameterCount = function ss$getGenericParameterCount(type) {
+	return type.__typeArgumentCount || 0;
+};
+
+ss.getGenericArguments = function ss$getGenericArguments(type) {
+	return type.__typeArguments || null;
+};
+
+ss.setMetadata = function ss$_setMetadata(type, metadata) {
+	if (metadata.members) {
+		for (var i = 0; i < metadata.members.length; i++) {
+			var m = metadata.members[i];
+			m.typeDef = type;
+			if (m.adder) m.adder.typeDef = type;
+			if (m.remover) m.remover.typeDef = type;
+			if (m.getter) m.getter.typeDef = type;
+			if (m.setter) m.setter.typeDef = type;
+		}
+	}
+	type.__metadata = metadata;
+	if (metadata.variance) {
+		type.isAssignableFrom = function(source) {
+			var check = function(target, type) {
+				if (type.__genericTypeDefinition === target.__genericTypeDefinition && type.__typeArguments.length == target.__typeArguments.length) {
+					for (var i = 0; i < target.__typeArguments.length; i++) {
+						var v = target.__metadata.variance[i], t = target.__typeArguments[i], s = type.__typeArguments[i];
+						switch (v) {
+							case 1: if (!ss.isAssignableFrom(t, s)) return false; break;
+							case 2: if (!ss.isAssignableFrom(s, t)) return false; break;
+							default: if (s !== t) return false;
+						}
+					}
+					return true;
+				}
+				return false;
+			};
+
+			if (source.__interface && check(this, source))
+				return true;
+			var ifs = ss.getInterfaces(source);
+			for (var i = 0; i < ifs.length; i++) {
+				if (ifs[i] === this || check(this, ifs[i]))
+					return true;
+			}
+			return false;
+		};
+	}
+}
+
+ss.initClass = function ss$initClass(ctor, asm, members, baseType, interfaces) {
+	ctor.__class = true;
+	ctor.__assembly = asm;
+	if (!ctor.__typeArguments)
+		asm.__types[ctor.__typeName] = ctor;
+	if (baseType && baseType !== Object) {
+		var f = function(){};
+		f.prototype = baseType.prototype;
+		ctor.prototype = new f();
+		ctor.prototype.constructor = ctor;
+	}
+	ss.shallowCopy(members, ctor.prototype);
+	if (interfaces)
+		ctor.__interfaces = interfaces;
+};
+
+ss.initGenericClass = function ss$initGenericClass(ctor, asm, typeArgumentCount) {
+	ctor.__class = true;
+	ctor.__assembly = asm;
+	asm.__types[ctor.__typeName] = ctor;
+	ctor.__typeArgumentCount = typeArgumentCount;
+	ctor.__isGenericTypeDefinition = true;
+};
+
+ss.initInterface = function ss$initInterface(ctor, asm, members, baseInterfaces) {
+	ctor.__interface = true;
+	ctor.__assembly = asm;
+	if (!ctor.__typeArguments)
+		asm.__types[ctor.__typeName] = ctor;
+	if (baseInterfaces)
+		ctor.__interfaces = baseInterfaces;
+	ss.shallowCopy(members, ctor.prototype);
+	ctor.isAssignableFrom = function(type) { return ss.contains(ss.getInterfaces(type), this); };
+};
+
+ss.initGenericInterface = function ss$initGenericClass(ctor, asm, typeArgumentCount) {
+	ctor.__interface = true;
+	ctor.__assembly = asm;
+	asm.__types[ctor.__typeName] = ctor;
+	ctor.__typeArgumentCount = typeArgumentCount;
+	ctor.__isGenericTypeDefinition = true;
+};
+
+ss.initEnum = function ss$initEnum(ctor, asm, members, namedValues) {
+	ctor.__enum = true;
+	ctor.__assembly = asm;
+	asm.__types[ctor.__typeName] = ctor;
+	ss.shallowCopy(members, ctor.prototype);
+	ctor.getDefaultValue = ctor.createInstance = function() { return namedValues ? null : 0; };
+	ctor.isInstanceOfType = function(instance) { return typeof(instance) == (namedValues ? 'string' : 'number'); };
+};
+
+ss.getBaseType = function ss$getBaseType(type) {
+	if (type === Object || type.__interface) {
+		return null;
+	}
+	else if (Object.getPrototypeOf) {
+		return Object.getPrototypeOf(type.prototype).constructor;
+	}
+	else {
+		var p = type.prototype;
+		if (Object.prototype.hasOwnProperty.call(p, 'constructor')) {
+			try {
+				var ownValue = p.constructor;
+				delete p.constructor;
+				return p.constructor;
+			}
+			finally {
+				p.constructor = ownValue;
+			}
+		}
+		return p.constructor;
+	}
+};
+
+ss.getTypeFullName = function ss$getTypeFullName(type) {
+	return type.__typeName || type.name || (type.toString().match(/^\s*function\s*([^\s(]+)/) || [])[1] || 'Object';
+};
+
+ss.getTypeQName = function ss$getTypeFullName(type) {
+	return ss.getTypeFullName(type) + (type.__assembly ? ', ' + type.__assembly.name : '');
+};
+
+ss.getTypeName = function ss$getTypeName(type) {
+	var fullName = ss.getTypeFullName(type);
+	var bIndex = fullName.indexOf('[');
+	var nsIndex = fullName.lastIndexOf('.', bIndex >= 0 ? bIndex : fullName.length);
+	return nsIndex > 0 ? fullName.substr(nsIndex + 1) : fullName;
+};
+
+ss.getTypeNamespace = function ss$getTypeNamespace(type) {
+	var fullName = ss.getTypeFullName(type);
+	var bIndex = fullName.indexOf('[');
+	var nsIndex = fullName.lastIndexOf('.', bIndex >= 0 ? bIndex : fullName.length);
+	return nsIndex > 0 ? fullName.substr(0, nsIndex) : '';
+};
+
+ss.getTypeAssembly = function ss$getTypeAssembly(type) {
+	if (ss.contains([Date, Number, Boolean, String, Function, Array], type))
+		return ss;
+	else
+		return type.__assembly || null;
+};
+
+ss._getAssemblyType = function ss$_getAssemblyType(asm, name) {
+	var result = [];
+	if (asm.__types) {
+		return asm.__types[name] || null;
+	}
+	else {
+		var a = name.split('.');
+		for (var i = 0; i < a.length; i++) {
+			asm = asm[a[i]];
+			if (!ss.isValue(asm))
+				return null;
+		}
+		if (typeof asm !== 'function')
+			return null;
+		return asm;
+	}
+};
+
+ss.getAssemblyTypes = function ss$getAssemblyTypes(asm) {
+	var result = [];
+	if (asm.__types) {
+		for (var t in asm.__types) {
+			if (asm.__types.hasOwnProperty(t))
+				result.push(asm.__types[t]);
+		}
+	}
+	else {
+		var traverse = function(s, n) {
+			for (var c in s) {
+				if (s.hasOwnProperty(c))
+					traverse(s[c], c);
+			}
+			if (typeof(s) === 'function' && ss.isUpper(n.charCodeAt(0)))
+				result.push(s);
+		};
+		traverse(asm, '');
+	}
+	return result;
+};
+
+ss.createAssemblyInstance = function ss$createAssemblyInstance(asm, typeName) {
+	var t = ss.getType(typeName, asm);
+	return t ? ss.createInstance(t) : null;
+};
+
+ss.getInterfaces = function ss$getInterfaces(type) {
+	if (type.__interfaces)
+		return type.__interfaces;
+	else if (type === Date || type === Number)
+		return [ ss_IEquatable, ss_IComparable, ss_IFormattable ];
+	else if (type === Boolean || type === String)
+		return [ ss_IEquatable, ss_IComparable ];
+	else if (type === Array || ss.isTypedArrayType(type))
+		return [ ss_IEnumerable, ss_ICollection, ss_IList ];
+	else
+		return [];
+};
+
+ss.isInstanceOfType = function ss$isInstanceOfType(instance, type) {
+	if (ss.isNullOrUndefined(instance))
+		return false;
+
+	if (typeof(type.isInstanceOfType) === 'function')
+		return type.isInstanceOfType(instance);
+
+	return ss.isAssignableFrom(type, ss.getInstanceType(instance));
+};
+
+ss.isAssignableFrom = function ss$isAssignableFrom(target, type) {
+	return target === type || (typeof(target.isAssignableFrom) === 'function' && target.isAssignableFrom(type)) || type.prototype instanceof target;
+};
+
+ss.isClass = function Type$isClass(type) {
+	return (type.__class == true || type === Array || type === Function || type === RegExp || type === String || type === Error || type === Object);
+};
+
+ss.isEnum = function Type$isEnum(type) {
+	return !!type.__enum;
+};
+
+ss.isFlags = function Type$isFlags(type) {
+	return type.__metadata && type.__metadata.enumFlags || false;
+};
+
+ss.isInterface = function Type$isInterface(type) {
+	return !!type.__interface;
+};
+
+ss.safeCast = function ss$safeCast(instance, type) {
+	if (type === true)
+		return instance;
+	else if (type === false)
+		return null;
+	else
+		return ss.isInstanceOfType(instance, type) ? instance : null;
+};
+
+ss.cast = function ss$cast(instance, type) {
+	if (instance === null || typeof(instance) === 'undefined')
+		return instance;
+	else if (type === true || (type !== false && ss.isInstanceOfType(instance, type)))
+		return instance;
+	throw new ss_InvalidCastException('Cannot cast object to type ' + ss.getTypeFullName(type));
+};
+
+ss.getInstanceType = function ss$getInstanceType(instance) {
+	if (!ss.isValue(instance))
+		throw new ss_NullReferenceException('Cannot get type of null');
+
+	// NOTE: We have to catch exceptions because the constructor
+	//       cannot be looked up on native COM objects
+	try {
+		return instance.constructor;
+	}
+	catch (ex) {
+		return Object;
+	}
+};
+
+ss._getType = function (typeName, asm, re) {
+	var outer = !re;
+	re = re || /[[,\]]/g;
+	var last = re.lastIndex, m = re.exec(typeName), tname, targs = [];
+	if (m) {
+		tname = typeName.substring(last, m.index);
+		switch (m[0]) {
+			case '[':
+				if (typeName[m.index + 1] != '[')
+					return null;
+				for (;;) {
+					re.exec(typeName);
+					var t = ss._getType(typeName, global, re);
+					if (!t)
+						return null;
+					targs.push(t);
+					m = re.exec(typeName);
+					if (m[0] === ']')
+						break;
+					else if (m[0] !== ',')
+						return null;
+				}
+				m = re.exec(typeName);
+				if (m && m[0] === ',') {
+					re.exec(typeName);
+					if (!(asm = ss.__assemblies[(re.lastIndex > 0 ? typeName.substring(m.index + 1, re.lastIndex - 1) : typeName.substring(m.index + 1)).trim()]))
+						return null;
+				}
+				break;
+
+			case ']':
+				break;
+
+			case ',':
+				re.exec(typeName);
+				if (!(asm = ss.__assemblies[(re.lastIndex > 0 ? typeName.substring(m.index + 1, re.lastIndex - 1) : typeName.substring(m.index + 1)).trim()]))
+					return null;
+				break;
+		}
+	}
+	else {
+		tname = typeName.substring(last);
+	}
+
+	if (outer && re.lastIndex)
+		return null;
+
+	var t = ss._getAssemblyType(asm, tname.trim());
+	return targs.length ? ss.makeGenericType(t, targs) : t;
+}
+
+ss.getType = function ss$getType(typeName, asm) {
+	return typeName ? ss._getType(typeName, asm || global) : null;
+};
+
+ss.getDefaultValue = function ss$getDefaultValue(type) {
+	if (typeof(type.getDefaultValue) === 'function')
+		return type.getDefaultValue();
+	else if (type === Boolean)
+		return false;
+	else if (type === Date)
+		return new Date(0);
+	else if (type === Number)
+		return 0;
+	return null;
+};
+
+ss.createInstance = function ss$createInstance(type) {
+	if (typeof(type.createInstance) === 'function')
+		return type.createInstance();
+	else if (type === Boolean)
+		return false;
+	else if (type === Date)
+		return new Date(0);
+	else if (type === Number)
+		return 0;
+	else if (type === String)
+		return '';
+	else
+		return new type();
+};
+
+ss.applyConstructor = function ss$applyConstructor(constructor, args) {
+	var f = function() {
+		constructor.apply(this, args);
+	};
+	f.prototype = constructor.prototype;
+	return new f();
+};
+
+ss.getAttributes = function ss$getAttributes(type, attrType, inherit) {
+	var result = [];
+	if (inherit) {
+		var b = ss.getBaseType(type);
+		if (b) {
+			var a = ss.getAttributes(b, attrType, true);
+			for (var i = 0; i < a.length; i++) {
+				var t = ss.getInstanceType(a[i]);
+				if (!t.__metadata || !t.__metadata.attrNoInherit)
+					result.push(a[i]);
+			}
+		}
+	}
+	if (type.__metadata && type.__metadata.attr) {
+		for (var i = 0; i < type.__metadata.attr.length; i++) {
+			var a = type.__metadata.attr[i];
+			if (attrType == null || ss.isInstanceOfType(a, attrType)) {
+				var t = ss.getInstanceType(a);
+				if (!t.__metadata || !t.__metadata.attrAllowMultiple) {
+					for (var j = result.length - 1; j >= 0; j--) {
+						if (ss.isInstanceOfType(result[j], t))
+							result.splice(j, 1);
+					}
+				}
+				result.push(a);
+			}
+		}
+	}
+	return result;
+};
+
+ss.getMembers = function ss$getMembers(type, memberTypes, bindingAttr, name, params) {
+	var result = [];
+	if ((bindingAttr & 72) == 72 || (bindingAttr & 6) == 4) {
+		var b = ss.getBaseType(type);
+		if (b)
+			result = ss.getMembers(b, memberTypes & ~1, bindingAttr & (bindingAttr & 64 ? 255 : 247) & (bindingAttr & 2 ? 251 : 255), name, params);
+	}
+
+	var f = function(m) {
+		if ((memberTypes & m.type) && (((bindingAttr & 4) && !m.isStatic) || ((bindingAttr & 8) && m.isStatic)) && (!name || m.name === name)) {
+			if (params) {
+				if ((m.params || []).length !== params.length)
+					return;
+				for (var i = 0; i < params.length; i++) {
+					if (params[i] !== m.params[i])
+						return;
+				}
+			}
+			result.push(m);
+		}
+	};
+
+	if (type.__metadata && type.__metadata.members) {
+		for (var i = 0; i < type.__metadata.members.length; i++) {
+			var m = type.__metadata.members[i];
+			f(m);
+			for (var j = 0; j < 4; j++) {
+				var a = ['getter','setter','adder','remover'][j];
+				if (m[a])
+					f(m[a]);
+			}
+		}
+	}
+
+	if (bindingAttr & 256) {
+		while (type) {
+			var r = [];
+			for (var i = 0; i < result.length; i++) {
+				if (result[i].typeDef === type)
+					r.push(result[i]);
+			}
+			if (r.length > 1)
+				throw new ss_AmbiguousMatchException('Ambiguous match');
+			else if (r.length === 1)
+				return r[0];
+			type = ss.getBaseType(type);
+		}
+		return null;
+	}
+
+	return result;
+};
+
+ss.midel = function ss$midel(mi, target, typeArguments) {
+	if (mi.isStatic && !!target)
+		throw new ss_ArgumentException('Cannot specify target for static method');
+	else if (!mi.isStatic && !target)
+		throw new ss_ArgumentException('Must specify target for instance method');
+
+	var method;
+	if (mi.fget) {
+		method = function() { return (mi.isStatic ? mi.typeDef : this)[mi.fget]; };
+	}
+	else if (mi.fset) {
+		method = function(v) { (mi.isStatic ? mi.typeDef : this)[mi.fset] = v; };
+	}
+	else {
+		method = mi.def || (mi.isStatic || mi.sm ? mi.typeDef[mi.sname] : target[mi.sname]);
+
+		if (mi.tpcount) {
+			if (!typeArguments || typeArguments.length !== mi.tpcount)
+				throw new ss_ArgumentException('Wrong number of type arguments');
+			method = method.apply(null, typeArguments);
+		}
+		else {
+			if (typeArguments && typeArguments.length)
+				throw new ss_ArgumentException('Cannot specify type arguments for non-generic method');
+		}
+		if (mi.exp) {
+			var _m1 = method;
+			method = function () { return _m1.apply(this, Array.prototype.slice.call(arguments, 0, arguments.length - 1).concat(arguments[arguments.length - 1])); };
+		}
+		if (mi.sm) {
+			var _m2 = method;
+			method = function() { return _m2.apply(null, [this].concat(Array.prototype.slice.call(arguments))); };
+		}
+	}
+	return ss.mkdel(target, method);
+};
+
+ss.invokeCI = function ss$invokeCI(ci, args) {
+	if (ci.exp)
+		args = args.slice(0, args.length - 1).concat(args[args.length - 1]);
+
+	if (ci.def)
+		return ci.def.apply(null, args);
+	else if (ci.sm)
+		return ci.typeDef[ci.sname].apply(null, args);
+	else
+		return ss.applyConstructor(ci.sname ? ci.typeDef[ci.sname] : ci.typeDef, args);
+};
+
+ss.fieldAccess = function ss$fieldAccess(fi, obj) {
+	if (fi.isStatic && !!obj)
+		throw new ss_ArgumentException('Cannot specify target for static field');
+	else if (!fi.isStatic && !obj)
+		throw new ss_ArgumentException('Must specify target for instance field');
+	obj = fi.isStatic ? fi.typeDef : obj;
+	if (arguments.length === 3)
+		obj[fi.sname] = arguments[2];
+	else
+		return obj[fi.sname];
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// IFormattable
+
+var ss_IFormattable = function IFormattable$() { };
+
+ss_IFormattable.__typeName = 'ss.IFormattable';
+ss.IFormattable = ss_IFormattable;
+ss.initInterface(ss_IFormattable, ss, { format: null });
+
+ss.format = function ss$format(obj, fmt) {
+	if (typeof(obj) === 'number')
+		return ss.formatNumber(obj, fmt);
+	else if (ss.isDate(obj))
+		return ss.formatDate(obj, fmt);
+	else
+		return obj.format(fmt);
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// IComparable
+
+var ss_IComparable = function IComparable$() { };
+
+ss_IComparable.__typeName = 'ss.IComparable';
+ss.IComparable = ss_IComparable;
+ss.initInterface(ss_IComparable, ss, { compareTo: null });
+
+///////////////////////////////////////////////////////////////////////////////
+// IEquatable
+
+var ss_IEquatable = function IEquatable$() { };
+
+ss_IEquatable.__typeName = 'ss.IEquatable';
+ss.IEquatable = ss_IEquatable;
+ss.initInterface(ss_IEquatable, ss, { equalsT: null });
+
+///////////////////////////////////////////////////////////////////////////////
+// Number Extensions
+
+ss.formatNumber = function ss$formatNumber(num, format) {
+	if (ss.isNullOrUndefined(format) || (format.length == 0) || (format == 'i')) {
+		return num.toString();
+	}
+	return ss.netFormatNumber(num, format, ss_CultureInfo.invariantCulture.numberFormat);
+};
+
+ss.localeFormatNumber = function ss$localeFormatNumber(num, format) {
+	if (ss.isNullOrUndefined(format) || (format.length == 0) || (format == 'i')) {
+		return num.toLocaleString();
+	}
+	return ss.netFormatNumber(num, format, ss_CultureInfo.currentCulture.numberFormat);
+};
+
+ss._commaFormatNumber = function ss$_commaFormat(number, groups, decimal, comma) {
+	var decimalPart = null;
+	var decimalIndex = number.indexOf(decimal);
+	if (decimalIndex > 0) {
+		decimalPart = number.substr(decimalIndex);
+		number = number.substr(0, decimalIndex);
+	}
+
+	var negative = ss.startsWithString(number, '-');
+	if (negative) {
+		number = number.substr(1);
+	}
+
+	var groupIndex = 0;
+	var groupSize = groups[groupIndex];
+	if (number.length < groupSize) {
+		return (negative ? '-' : '') + (decimalPart ? number + decimalPart : number);
+	}
+
+	var index = number.length;
+	var s = '';
+	var done = false;
+	while (!done) {
+		var length = groupSize;
+		var startIndex = index - length;
+		if (startIndex < 0) {
+			groupSize += startIndex;
+			length += startIndex;
+			startIndex = 0;
+			done = true;
+		}
+		if (!length) {
+			break;
+		}
+		
+		var part = number.substr(startIndex, length);
+		if (s.length) {
+			s = part + comma + s;
+		}
+		else {
+			s = part;
+		}
+		index -= length;
+
+		if (groupIndex < groups.length - 1) {
+			groupIndex++;
+			groupSize = groups[groupIndex];
+		}
+	}
+
+	if (negative) {
+		s = '-' + s;
+	}    
+	return decimalPart ? s + decimalPart : s;
+};
+
+ss.netFormatNumber = function ss$netFormatNumber(num, format, numberFormat) {
+	var nf = (numberFormat && numberFormat.getFormat(ss_NumberFormatInfo)) || ss_CultureInfo.currentCulture.numberFormat;
+
+	var s = '';    
+	var precision = -1;
+	
+	if (format.length > 1) {
+		precision = parseInt(format.substr(1), 10);
+	}
+
+	var fs = format.charAt(0);
+	switch (fs) {
+		case 'd': case 'D':
+			s = parseInt(Math.abs(num)).toString();
+			if (precision != -1) {
+				s = ss.padLeftString(s, precision, 0x30);
+			}
+			if (num < 0) {
+				s = '-' + s;
+			}
+			break;
+		case 'x': case 'X':
+			s = parseInt(Math.abs(num)).toString(16);
+			if (fs == 'X') {
+				s = s.toUpperCase();
+			}
+			if (precision != -1) {
+				s = ss.padLeftString(s, precision, 0x30);
+			}
+			break;
+		case 'e': case 'E':
+			if (precision == -1) {
+				s = num.toExponential();
+			}
+			else {
+				s = num.toExponential(precision);
+			}
+			if (fs == 'E') {
+				s = s.toUpperCase();
+			}
+			break;
+		case 'f': case 'F':
+		case 'n': case 'N':
+			if (precision == -1) {
+				precision = nf.numberDecimalDigits;
+			}
+			s = num.toFixed(precision).toString();
+			if (precision && (nf.numberDecimalSeparator != '.')) {
+				var index = s.indexOf('.');
+				s = s.substr(0, index) + nf.numberDecimalSeparator + s.substr(index + 1);
+			}
+			if ((fs == 'n') || (fs == 'N')) {
+				s = ss._commaFormatNumber(s, nf.numberGroupSizes, nf.numberDecimalSeparator, nf.numberGroupSeparator);
+			}
+			break;
+		case 'c': case 'C':
+			if (precision == -1) {
+				precision = nf.currencyDecimalDigits;
+			}
+			s = Math.abs(num).toFixed(precision).toString();
+			if (precision && (nf.currencyDecimalSeparator != '.')) {
+				var index = s.indexOf('.');
+				s = s.substr(0, index) + nf.currencyDecimalSeparator + s.substr(index + 1);
+			}
+			s = ss._commaFormatNumber(s, nf.currencyGroupSizes, nf.currencyDecimalSeparator, nf.currencyGroupSeparator);
+			if (num < 0) {
+				s = ss.formatString(nf.currencyNegativePattern, s);
+			}
+			else {
+				s = ss.formatString(nf.currencyPositivePattern, s);
+			}
+			break;
+		case 'p': case 'P':
+			if (precision == -1) {
+				precision = nf.percentDecimalDigits;
+			}
+			s = (Math.abs(num) * 100.0).toFixed(precision).toString();
+			if (precision && (nf.percentDecimalSeparator != '.')) {
+				var index = s.indexOf('.');
+				s = s.substr(0, index) + nf.percentDecimalSeparator + s.substr(index + 1);
+			}
+			s = ss._commaFormatNumber(s, nf.percentGroupSizes, nf.percentDecimalSeparator, nf.percentGroupSeparator);
+			if (num < 0) {
+				s = ss.formatString(nf.percentNegativePattern, s);
+			}
+			else {
+				s = ss.formatString(nf.percentPositivePattern, s);
+			}
+			break;
+	}
+
+	return s;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// String Extensions
+ss.netSplit = function ss$netSplit(s, strings, limit, options) {
+	var re = new RegExp(strings.map(ss.regexpEscape).join('|'), 'g'), res = [], m, i;
+	for (i = 0;; i = re.lastIndex) {
+		if (m = re.exec(s)) {
+			if (options !== 1 || m.index > i) {
+				if (res.length === limit - 1) {
+					res.push(s.substr(i));
+					return res;
+				}
+				else
+					res.push(s.substring(i, m.index));
+			}
+		}
+		else {
+			if (options !== 1 || i !== s.length)
+				res.push(s.substr(i));
+			return res;
+		}
+	}
+};
+
+ss.compareStrings = function ss$compareStrings(s1, s2, ignoreCase) {
+	if (ignoreCase) {
+		if (s1) {
+			s1 = s1.toUpperCase();
+		}
+		if (s2) {
+			s2 = s2.toUpperCase();
+		}
+	}
+	s1 = s1 || '';
+	s2 = s2 || '';
+
+	if (s1 == s2) {
+		return 0;
+	}
+	if (s1 < s2) {
+		return -1;
+	}
+	return 1;
+};
+
+ss.endsWithString = function ss$endsWithString(s, suffix) {
+	if (!suffix.length) {
+		return true;
+	}
+	if (suffix.length > s.length) {
+		return false;
+	}
+	return (s.substr(s.length - suffix.length) == suffix);
+};
+
+ss._formatString = function ss$_formatString(format, values, useLocale) {
+	if (!ss._formatRE) {
+		ss._formatRE = /\{\{|\}\}|\{[^\}\{]+\}/g;
+	}
+
+	return format.replace(ss._formatRE,
+		function(m) {
+			if (m === '{{' || m === '}}')
+				return m.charAt(0);
+			var index = parseInt(m.substr(1), 10);
+			var value = values[index + 1];
+			if (ss.isNullOrUndefined(value)) {
+				return '';
+			}
+			if (ss.isInstanceOfType(value, ss_IFormattable)) {
+				var formatSpec = null;
+				var formatIndex = m.indexOf(':');
+				if (formatIndex > 0) {
+					formatSpec = m.substring(formatIndex + 1, m.length - 1);
+				}
+				return ss.format(value, formatSpec);
+			}
+			else {
+				return useLocale ? value.toLocaleString() : value.toString();
+			}
+		});
+};
+
+ss.formatString = function String$format(format) {
+	return ss._formatString(format, arguments, /* useLocale */ false);
+};
+
+ss.stringFromChar = function ss$stringFromChar(ch, count) {
+	var s = ch;
+	for (var i = 1; i < count; i++) {
+		s += ch;
+	}
+	return s;
+};
+
+ss.htmlDecode = function ss$htmlDecode(s) {
+	return s.replace(/&([^;]+);/g, function(_, e) {
+		if (e[0] === '#')
+			return String.fromCharCode(parseInt(e.substr(1), 10));
+		switch (e) {
+			case 'quot': return '"';
+			case 'apos': return "'";
+			case 'amp': return '&';
+			case 'lt': return '<';
+			case 'gt': return '>';
+			default : return '&' + e + ';';
+		}
+	});
+};
+
+ss.htmlEncode = function ss$htmlEncode(s) {
+	return s.replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+};
+
+ss.jsEncode = function ss$jsEncode(s, q) {
+	s = s.replace(/\\/g, '\\\\').replace(/'/g, "\\'").replace(/"/g, '\\"');
+	return q ? '"' + s + '"' : s;
+};
+
+ss.indexOfAnyString = function ss$indexOfAnyString(s, chars, startIndex, count) {
+	var length = s.length;
+	if (!length) {
+		return -1;
+	}
+
+	chars = String.fromCharCode.apply(null, chars);
+	startIndex = startIndex || 0;
+	count = count || length;
+
+	var endIndex = startIndex + count - 1;
+	if (endIndex >= length) {
+		endIndex = length - 1;
+	}
+
+	for (var i = startIndex; i <= endIndex; i++) {
+		if (chars.indexOf(s.charAt(i)) >= 0) {
+			return i;
+		}
+	}
+	return -1;
+};
+
+ss.insertString = function ss$insertString(s, index, value) {
+	if (!value) {
+		return s;
+	}
+	if (!index) {
+		return value + s;
+	}
+	var s1 = s.substr(0, index);
+	var s2 = s.substr(index);
+	return s1 + value + s2;
+};
+
+ss.isNullOrEmptyString = function ss$isNullOrEmptyString(s) {
+	return !s || !s.length;
+};
+
+ss.lastIndexOfAnyString = function ss$lastIndexOfAnyString(s, chars, startIndex, count) {
+	var length = s.length;
+	if (!length) {
+		return -1;
+	}
+
+	chars = String.fromCharCode.apply(null, chars);
+	startIndex = startIndex || length - 1;
+	count = count || length;
+
+	var endIndex = startIndex - count + 1;
+	if (endIndex < 0) {
+		endIndex = 0;
+	}
+
+	for (var i = startIndex; i >= endIndex; i--) {
+		if (chars.indexOf(s.charAt(i)) >= 0) {
+			return i;
+		}
+	}
+	return -1;
+};
+
+ss.localeFormatString = function ss$localeFormatString(format) {
+	return ss._formatString(format, arguments, /* useLocale */ true);
+};
+
+ss.padLeftString = function ss$padLeftString(s, totalWidth, ch) {
+	if (s.length < totalWidth) {
+		ch = String.fromCharCode(ch || 0x20);
+		return ss.stringFromChar(ch, totalWidth - s.length) + s;
+	}
+	return s;
+};
+
+ss.padRightString = function ss$padRightString(s, totalWidth, ch) {
+	if (s.length < totalWidth) {
+		ch = String.fromCharCode(ch || 0x20);
+		return s + ss.stringFromChar(ch, totalWidth - s.length);
+	}
+	return s;
+};
+
+ss.removeString = function ss$removeString(s, index, count) {
+	if (!count || ((index + count) > this.length)) {
+		return s.substr(0, index);
+	}
+	return s.substr(0, index) + s.substr(index + count);
+};
+
+ss.replaceAllString = function ss$replaceAllString(s, oldValue, newValue) {
+	newValue = newValue || '';
+	return s.split(oldValue).join(newValue);
+};
+
+ss.startsWithString = function ss$startsWithString(s, prefix) {
+	if (!prefix.length) {
+		return true;
+	}
+	if (prefix.length > s.length) {
+		return false;
+	}
+	return (s.substr(0, prefix.length) == prefix);
+};
+
+if (!String.prototype.trim) {
+	String.prototype.trim = function String$trim() {
+		return ss.trimStartString(ss.trimEndString(this));
+	};
+}
+
+ss.trimEndString = function ss$trimEndString(s, chars) {
+	return s.replace(chars ? new RegExp('[' + String.fromCharCode.apply(null, chars) + ']+$') : /\s*$/, '');
+};
+
+ss.trimStartString = function ss$trimStartString(s, chars) {
+	return s.replace(chars ? new RegExp('^[' + String.fromCharCode.apply(null, chars) + ']+') : /^\s*/, '');
+};
+
+ss.trimString = function ss$trimString(s, chars) {
+	return ss.trimStartString(ss.trimEndString(s, chars), chars);
+};
+
+ss.lastIndexOfString = function ss$lastIndexOfString(s, search, startIndex, count) {
+	var index = s.lastIndexOf(search, startIndex);
+	return (index < (startIndex - count + 1)) ? -1 : index;
+};
+
+ss.indexOfString = function ss$indexOfString(s, search, startIndex, count) {
+	var index = s.indexOf(search, startIndex);
+	return ((index + search.length) <= (startIndex + count)) ? index : -1;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// Math Extensions
+
+ss.divRem = function ss$divRem(a, b, result) {
+	var remainder = a % b;
+	result.$ = remainder;
+	return (a - remainder) / b;
+};
+
+ss.round = function ss$round(n, d, rounding) {
+	var m = Math.pow(10, d || 0);
+	n *= m;
+	var sign = (n > 0) | -(n < 0);
+	if (n % 1 === 0.5 * sign) {
+		var f = Math.floor(n);
+		return (f + (rounding ? (sign > 0) : (f % 2 * sign))) / m;
+	}
+
+	return Math.round(n) / m;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// IFormatProvider
+
+var ss_IFormatProvider = function IFormatProvider$() { };
+
+ss_IFormatProvider.__typeName = 'ss.IFormatProvider';
+ss.IFormatProvider = ss_IFormatProvider;
+ss.initInterface(ss_IFormatProvider, ss, { getFormat: null });
+
+///////////////////////////////////////////////////////////////////////////////
+// NumberFormatInfo
+
+var ss_NumberFormatInfo = function NumberFormatInfo$() {
+};
+
+ss_NumberFormatInfo.__typeName = 'ss.NumberFormatInfo';
+ss.NumberFormatInfo = ss_NumberFormatInfo;
+ss.initClass(ss_NumberFormatInfo, ss, {
+	getFormat:  function NumberFormatInfo$getFormat(type) {
+		return (type === ss_NumberFormatInfo) ? this : null;
+	}
+}, null, [ss_IFormatProvider]);
+
+ss_NumberFormatInfo.invariantInfo = new ss_NumberFormatInfo();
+ss.shallowCopy({
+	naNSymbol: 'NaN',
+	negativeSign: '-',
+	positiveSign: '+',
+	negativeInfinitySymbol: '-Infinity',
+	positiveInfinitySymbol: 'Infinity',
+
+	percentSymbol: '%',
+	percentGroupSizes: [3],
+	percentDecimalDigits: 2,
+	percentDecimalSeparator: '.',
+	percentGroupSeparator: ',',
+	percentPositivePattern: 0,
+	percentNegativePattern: 0,
+
+	currencySymbol: '$',
+	currencyGroupSizes: [3],
+	currencyDecimalDigits: 2,
+	currencyDecimalSeparator: '.',
+	currencyGroupSeparator: ',',
+	currencyNegativePattern: 0,
+	currencyPositivePattern: 0,
+
+	numberGroupSizes: [3],
+	numberDecimalDigits: 2,
+	numberDecimalSeparator: '.',
+	numberGroupSeparator: ','
+}, ss_NumberFormatInfo.invariantInfo);
+
+///////////////////////////////////////////////////////////////////////////////
+// DateTimeFormatInfo
+
+var ss_DateTimeFormatInfo = function DateTimeFormatInfo$() {
+};
+
+ss_DateTimeFormatInfo.__typeName = 'ss.DateTimeFormatInfo';
+ss.DateTimeFormatInfo = ss_DateTimeFormatInfo;
+ss.initClass(ss_DateTimeFormatInfo, ss, {
+	getFormat: function DateTimeFormatInfo$getFormat(type) {
+		return type === ss_DateTimeFormatInfo ? this : null;
+	}
+}, null, [ss_IFormatProvider]);
+
+ss_DateTimeFormatInfo.invariantInfo = new ss_DateTimeFormatInfo();
+ss.shallowCopy({
+	amDesignator: 'AM',
+	pmDesignator: 'PM',
+
+	dateSeparator: '/',
+	timeSeparator: ':',
+
+	gmtDateTimePattern: 'ddd, dd MMM yyyy HH:mm:ss \'GMT\'',
+	universalDateTimePattern: 'yyyy-MM-dd HH:mm:ssZ',
+	sortableDateTimePattern: 'yyyy-MM-ddTHH:mm:ss',
+	dateTimePattern: 'dddd, MMMM dd, yyyy h:mm:ss tt',
+
+	longDatePattern: 'dddd, MMMM dd, yyyy',
+	shortDatePattern: 'M/d/yyyy',
+
+	longTimePattern: 'h:mm:ss tt',
+	shortTimePattern: 'h:mm tt',
+
+	firstDayOfWeek: 0,
+	dayNames: ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],
+	shortDayNames: ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],
+	minimizedDayNames: ['Su','Mo','Tu','We','Th','Fr','Sa'],
+
+	monthNames: ['January','February','March','April','May','June','July','August','September','October','November','December',''],
+	shortMonthNames: ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec','']
+}, ss_DateTimeFormatInfo.invariantInfo);
+
+///////////////////////////////////////////////////////////////////////////////
+// Stopwatch
+
+var ss_Stopwatch = function Stopwatch$() {
+	this._stopTime = 0;
+	this._startTime = 0;
+	this.isRunning = false;
+};
+
+ss_Stopwatch.startNew = function  Stopwatch$startNew() {
+	var s = new ss_Stopwatch();
+	s.start();
+	return s;
+};
+
+if (typeof(window) !== 'undefined' && window.performance && window.performance.now) {
+	ss_Stopwatch.frequency = 1e6;
+	ss_Stopwatch.isHighResolution = true;
+	ss_Stopwatch.getTimestamp = function() { return Math.round(window.performance.now() * 1000); };
+}
+else if (typeof(process) !== 'undefined' && process.hrtime) {
+	ss_Stopwatch.frequency = 1e9;
+	ss_Stopwatch.isHighResolution = true;
+	ss_Stopwatch.getTimestamp = function() { var hr = process.hrtime(); return hr[0] * 1e9 + hr[1]; };
+}
+else {
+	ss_Stopwatch.frequency = 1e3;
+	ss_Stopwatch.isHighResolution = false;
+	ss_Stopwatch.getTimestamp = function() { return new Date().valueOf(); };
+}
+
+ss_Stopwatch.__typeName = 'ss.Stopwatch';
+ss.Stopwatch = ss_Stopwatch;
+ss.initClass(ss_Stopwatch, ss, {
+	reset: function Stopwatch$reset() {
+		this._stopTime = this._startTime = ss_Stopwatch.getTimestamp();
+		this.isRunning = false;
+	},
+
+	ticks: function Stopwatch$ticks() {
+		return (this.isRunning ? ss_Stopwatch.getTimestamp() : this._stopTime) - this._startTime;
+	},
+
+	milliseconds: function Stopwatch$milliseconds() {
+		return Math.round(this.ticks() / ss_Stopwatch.frequency * 1000);
+	},
+
+	timeSpan: function Stopwatch$timeSpan() {
+		return new ss_TimeSpan(this.milliseconds() * 10000);
+	},
+
+	start: function Stopwatch$start() {
+		if (this.isRunning)
+			return;
+		this._startTime = ss_Stopwatch.getTimestamp();
+		this.isRunning = true;
+	},
+
+	stop: function Stopwatch$stop() {
+		if (!this.isRunning)
+			return;
+		this._stopTime = ss_Stopwatch.getTimestamp();
+		this.isRunning = false;
+	},
+
+	restart: function Stopwatch$restart() {
+		this.isRunning = false;
+		this.start();
+	}
+});
+
+///////////////////////////////////////////////////////////////////////////////
+// Array Extensions
+
+ss._flatIndex = function ss$_flatIndex(arr, indices) {
+	if (indices.length != (arr._sizes ? arr._sizes.length : 1))
+		throw new ss_ArgumentException('Invalid number of indices');
+
+	if (indices[0] < 0 || indices[0] >= (arr._sizes ? arr._sizes[0] : arr.length))
+		throw new ss_ArgumentException('Index 0 out of range');
+
+	var idx = indices[0];
+	if (arr._sizes) {
+		for (var i = 1; i < arr._sizes.length; i++) {
+			if (indices[i] < 0 || indices[i] >= arr._sizes[i])
+				throw new ss_ArgumentException('Index ' + i + ' out of range');
+			idx = idx * arr._sizes[i] + indices[i];
+		}
+	}
+	return idx;
+};
+
+ss.arrayGet2 = function ss$arrayGet2(arr, indices) {
+	var idx = ss._flatIndex(arr, indices);
+	var r = arr[idx];
+	return typeof r !== 'undefined' ? r : arr._defvalue;
+};
+
+ss.arrayGet = function ss$arrayGet(arr) {
+	return ss.arrayGet2(arr, Array.prototype.slice.call(arguments, 1));
+}
+
+ss.arraySet2 = function ss$arraySet2(arr, value, indices) {
+	var idx = ss._flatIndex(arr, indices);
+	arr[idx] = value;
+};
+
+ss.arraySet = function ss$arraySet() {
+	return ss.arraySet2(arguments[0], arguments[arguments.length - 1], Array.prototype.slice.call(arguments, 1, arguments.length - 1));
+};
+
+ss.arrayRank = function ss$arrayRank(arr) {
+	return arr._sizes ? arr._sizes.length : 1;
+};
+
+ss.arrayLength = function ss$arrayLength(arr, dimension) {
+	if (dimension >= (arr._sizes ? arr._sizes.length : 1))
+		throw new ss_ArgumentException('Invalid dimension');
+	return arr._sizes ? arr._sizes[dimension] : arr.length;
+};
+
+ss.arrayExtract = function ss$arrayExtract(arr, start, count) {
+	if (!ss.isValue(count)) {
+		return arr.slice(start);
+	}
+	return arr.slice(start, start + count);
+};
+
+ss.arrayAddRange = function ss$arrayAddRange(arr, items) {
+	if (items instanceof Array) {
+		arr.push.apply(arr, items);
+	}
+	else {
+		var e = ss.getEnumerator(items);
+		try {
+			while (e.moveNext()) {
+				ss.add(arr, e.current());
+			}
+		}
+		finally {
+			if (ss.isInstanceOfType(e, ss_IDisposable)) {
+				ss.cast(e, ss_IDisposable).dispose();
+			}
+		}
+	}
+};
+
+ss.arrayClone = function ss$arrayClone(arr) {
+	if (arr.length === 1) {
+		return [arr[0]];
+	}
+	else {
+		return Array.apply(null, arr);
+	}
+};
+
+ss.arrayPeekFront = function ss$arrayPeekFront(arr) {
+	if (arr.length)
+		return arr[0];
+	throw new ss_InvalidOperationException('Array is empty');
+};
+
+ss.arrayPeekBack = function ss$arrayPeekBack(arr) {
+	if (arr.length)
+		return arr[arr.length - 1];
+	throw new ss_InvalidOperationException('Array is empty');
+};
+
+ss.indexOfArray = function ss$indexOfArray(arr, item, startIndex) {
+	startIndex = startIndex || 0;
+	for (var i = startIndex; i < arr.length; i++) {
+		if (ss.staticEquals(arr[i], item)) {
+			return i;
+		}
+	}
+	return -1;
+}
+
+ss.arrayInsertRange = function ss$arrayInsertRange(arr, index, items) {
+	if (items instanceof Array) {
+		if (index === 0) {
+			arr.unshift.apply(arr, items);
+		}
+		else {
+			for (var i = 0; i < items.length; i++) {
+				arr.splice(index + i, 0, items[i]);
+			}
+		}
+	}
+	else {
+		var e = ss.getEnumerator(items);
+		try {
+			while (e.moveNext()) {
+				arr.insert(index, e.current());
+				index++;
+			}
+		}
+		finally {
+			if (ss.isInstanceOfType(e, ss_IDisposable)) {
+				ss.cast(e, ss_IDisposable).dispose();
+			}
+		}
+	}
+};
+
+if (!Array.prototype.map) {
+	Array.prototype.map = function Array$map(callback, instance) {
+		var length = this.length;
+		var mapped = new Array(length);
+		for (var i = 0; i < length; i++) {
+			if (i in this) {
+				mapped[i] = callback.call(instance, this[i], i, this);
+			}
+		}
+		return mapped;
+	};
+}
+
+ss.arrayRemoveRange = function ss$arrayRemoveRange(arr, index, count) {
+	arr.splice(index, count);
+};
+
+if (!Array.prototype.some) {
+	Array.prototype.some = function Array$some(callback, instance) {
+		var length = this.length;
+		for (var i = 0; i < length; i++) {
+			if (i in this && callback.call(instance, this[i], i, this)) {
+				return true;
+			}
+		}
+		return false;
+	};
+}
+
+ss.arrayFromEnumerable = function ss$arrayFromEnumerable(enm) {
+	if (!ss.isValue(enm))
+		return null;
+
+	var e = ss.getEnumerator(enm), r = [];
+	try {
+		while (e.moveNext())
+			r.push(e.current());
+	}
+	finally {
+		e.dispose();
+	}
+	return r;
+};
+
+ss.multidimArray = function ss$multidimArray(defvalue, sizes) {
+	var arr = [];
+	arr._defvalue = defvalue;
+	arr._sizes = [arguments[1]];
+	var length = arguments[1];
+	for (var i = 2; i < arguments.length; i++) {
+		length *= arguments[i];
+		arr._sizes[i - 1] = arguments[i];
+	}
+	arr.length = length;
+	return arr;
+};
+
+ss.repeat = function ss$repeat(value, count) {
+	var result = [];
+	for (var i = 0; i < count; i++)
+		result.push(value);
+	return result;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// Date Extensions
+
+ss.utcNow = function ss$utcNow() {
+	var d = new Date();
+	return new Date(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds());
+};
+
+ss.toUTC = function ss$toUniversalTime(d) {
+	return new Date(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds());
+};
+
+ss.fromUTC = function ss$toLocalTime(d) {
+	return new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds()));
+};
+
+ss.today = function ss$today() {
+	var d = new Date();
+	return new Date(d.getFullYear(), d.getMonth(), d.getDate());
+}
+
+ss.formatDate = function ss$formatDate(date, format) {
+	if (ss.isNullOrUndefined(format) || (format.length == 0) || (format == 'i')) {
+		return date.toString();
+	}
+	if (format == 'id') {
+		return date.toDateString();
+	}
+	if (format == 'it') {
+		return date.toTimeString();
+	}
+
+	return ss._netFormatDate(date, format, false);
+};
+
+ss.localeFormatDate = function ss$localeFormatDate(date, format) {
+	if (ss.isNullOrUndefined(format) || (format.length == 0) || (format == 'i')) {
+		return date.toLocaleString();
+	}
+	if (format == 'id') {
+		return date.toLocaleDateString();
+	}
+	if (format == 'it') {
+		return date.toLocaleTimeString();
+	}
+
+	return ss._netFormatDate(date, format, true);
+};
+
+ss._netFormatDate = function ss$_netFormatDate(dt, format, useLocale) {
+	var dtf = useLocale ? ss_CultureInfo.currentCulture.dateTimeFormat : ss_CultureInfo.invariantCulture.dateTimeFormat;
+
+	if (format.length == 1) {
+		switch (format) {
+			case 'f': format = dtf.longDatePattern + ' ' + dtf.shortTimePattern; break;
+			case 'F': format = dtf.dateTimePattern; break;
+
+			case 'd': format = dtf.shortDatePattern; break;
+			case 'D': format = dtf.longDatePattern; break;
+
+			case 't': format = dtf.shortTimePattern; break;
+			case 'T': format = dtf.longTimePattern; break;
+
+			case 'g': format = dtf.shortDatePattern + ' ' + dtf.shortTimePattern; break;
+			case 'G': format = dtf.shortDatePattern + ' ' + dtf.longTimePattern; break;
+
+			case 'R': case 'r':
+				dtf = ss_CultureInfo.InvariantCulture.dateTimeFormat;
+				format = dtf.gmtDateTimePattern;
+				break;
+			case 'u': format = dtf.universalDateTimePattern; break;
+			case 'U':
+				format = dtf.dateTimePattern;
+				dt = new Date(dt.getUTCFullYear(), dt.getUTCMonth(), dt.getUTCDate(),
+							  dt.getUTCHours(), dt.getUTCMinutes(), dt.getUTCSeconds(), dt.getUTCMilliseconds());
+				break;
+
+			case 's': format = dtf.sortableDateTimePattern; break;
+		}
+	}
+
+	if (format.charAt(0) == '%') {
+		format = format.substr(1);
+	}
+
+	if (!Date._formatRE) {
+		Date._formatRE = /'.*?[^\\]'|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z/g;
+	}
+
+	var re = Date._formatRE;
+	var sb = new ss_StringBuilder();
+
+	re.lastIndex = 0;
+	while (true) {
+		var index = re.lastIndex;
+		var match = re.exec(format);
+
+		sb.append(format.slice(index, match ? match.index : format.length));
+		if (!match) {
+			break;
+		}
+
+		var fs = match[0];
+		var part = fs;
+		switch (fs) {
+			case 'dddd':
+				part = dtf.dayNames[dt.getDay()];
+				break;
+			case 'ddd':
+				part = dtf.shortDayNames[dt.getDay()];
+				break;
+			case 'dd':
+				part = ss.padLeftString(dt.getDate().toString(), 2, 0x30);
+				break;
+			case 'd':
+				part = dt.getDate();
+				break;
+			case 'MMMM':
+				part = dtf.monthNames[dt.getMonth()];
+				break;
+			case 'MMM':
+				part = dtf.shortMonthNames[dt.getMonth()];
+				break;
+			case 'MM':
+				part = ss.padLeftString((dt.getMonth() + 1).toString(), 2, 0x30);
+				break;
+			case 'M':
+				part = (dt.getMonth() + 1);
+				break;
+			case 'yyyy':
+				part = dt.getFullYear();
+				break;
+			case 'yy':
+				part = ss.padLeftString((dt.getFullYear() % 100).toString(), 2, 0x30);
+				break;
+			case 'y':
+				part = (dt.getFullYear() % 100);
+				break;
+			case 'h': case 'hh':
+				part = dt.getHours() % 12;
+				if (!part) {
+					part = '12';
+				}
+				else if (fs == 'hh') {
+					part = ss.padLeftString(part.toString(), 2, 0x30);
+				}
+				break;
+			case 'HH':
+				part = ss.padLeftString(dt.getHours().toString(), 2, 0x30);
+				break;
+			case 'H':
+				part = dt.getHours();
+				break;
+			case 'mm':
+				part = ss.padLeftString(dt.getMinutes().toString(), 2, 0x30);
+				break;
+			case 'm':
+				part = dt.getMinutes();
+				break;
+			case 'ss':
+				part = ss.padLeftString(dt.getSeconds().toString(), 2, 0x30);
+				break;
+			case 's':
+				part = dt.getSeconds();
+				break;
+			case 't': case 'tt':
+				part = (dt.getHours() < 12) ? dtf.amDesignator : dtf.pmDesignator;
+				if (fs == 't') {
+					part = part.charAt(0);
+				}
+				break;
+			case 'fff':
+				part = ss.padLeftString(dt.getMilliseconds().toString(), 3, 0x30);
+				break;
+			case 'ff':
+				part = ss.padLeftString(dt.getMilliseconds().toString(), 3).substr(0, 2);
+				break;
+			case 'f':
+				part = ss.padLeftString(dt.getMilliseconds().toString(), 3).charAt(0);
+				break;
+			case 'z':
+				part = dt.getTimezoneOffset() / 60;
+				part = ((part >= 0) ? '-' : '+') + Math.floor(Math.abs(part));
+				break;
+			case 'zz': case 'zzz':
+				part = dt.getTimezoneOffset() / 60;
+				part = ((part >= 0) ? '-' : '+') + Math.floor(ss.padLeftString(Math.abs(part)).toString(), 2, 0x30);
+				if (fs == 'zzz') {
+					part += dtf.timeSeparator + Math.abs(ss.padLeftString(dt.getTimezoneOffset() % 60).toString(), 2, 0x30);
+				}
+				break;
+			default:
+				if (part.charAt(0) == '\'') {
+					part = part.substr(1, part.length - 2).replace(/\\'/g, '\'');
+				}
+				break;
+		}
+		sb.append(part);
+	}
+
+	return sb.toString();
+};
+
+ss._parseExactDate = function ss$_parseExactDate(val, format, provider, utc) {
+	provider = (provider && provider.getFormat(ss_DateTimeFormatInfo)) || ss_CultureInfo.currentCulture.dateTimeFormat;
+	var AM = provider.amDesignator, PM = provider.pmDesignator;
+
+	var _isInteger = function(val) {
+		var digits="1234567890";
+		for (var i=0; i < val.length; i++) {
+			if (digits.indexOf(val.charAt(i))==-1) {
+				return false;
+			}
+		}
+		return true;
+	};
+
+	var _getInt = function(str,i,minlength,maxlength) {
+		for (var x=maxlength; x>=minlength; x--) {
+			var token=str.substring(i,i+x);
+			if (token.length < minlength) {
+				return null;
+			}
+			if (_isInteger(token)) {
+				return token;
+			}
+		}
+		return null;
+	};
+
+	val = val + "";
+	format = format + "";
+	var i_val = 0;
+	var i_format = 0;
+	var c = "";
+	var token = "";
+
+	var year = 0, month = 1, date = 1, hh = 0, mm = 0, _ss = 0, ampm = "";
+		
+	while (i_format < format.length) {
+		// Get next token from format string
+		c = format.charAt(i_format);
+		token = "";
+		while ((format.charAt(i_format) == c) && (i_format < format.length)) {
+			token += format.charAt(i_format++);
+		}
+		// Extract contents of value based on format token
+		if (token=="yyyy" || token=="yy" || token=="y") {
+			if (token == "yyyy")
+				year = _getInt(val, i_val, 4, 4);
+			if (token == "yy")
+				year = _getInt(val, i_val, 2, 2);
+			if (token == "y")
+				year = _getInt(val, i_val, 2, 4);
+
+			if (year == null)
+				return null;
+
+			i_val += year.length;
+			if (year.length == 2) {
+				if (year > 30) {
+					year = 1900 + (year-0);
+				}
+				else {
+					year = 2000 + (year-0);
+				}
+			}
+		}
+		else if (token == "MM" || token == "M") {
+			month = _getInt(val, i_val, token.length, 2);
+			if (month == null || (month < 1) || (month > 12))
+				return null;
+			i_val += month.length;
+		}
+		else if (token=="dd"||token=="d") {
+			date = _getInt(val, i_val, token.length, 2);
+			if (date == null || (date < 1) || (date > 31))
+				return null;
+			i_val += date.length;
+		}
+		else if (token=="hh"||token=="h") {
+			hh = _getInt(val, i_val, token.length, 2);
+			if (hh == null || (hh < 1) || (hh > 12))
+				return null;
+			i_val += hh.length;
+		}
+		else if (token=="HH"||token=="H") {
+			hh = _getInt(val, i_val, token.length, 2);
+			if (hh == null || (hh < 0) || (hh > 23))
+				return null;
+			i_val += hh.length;
+		}
+		else if (token == "mm" || token == "m") {
+			mm = _getInt(val, i_val, token.length, 2);
+			if (mm == null || (mm < 0) || (mm > 59))
+				return null;
+			i_val += mm.length;
+		}
+		else if (token == "ss" || token == "s") {
+			_ss = _getInt(val, i_val, token.length, 2);
+			if (_ss == null || (_ss < 0) || (_ss > 59))
+				return null;
+			i_val += _ss.length;
+		}
+		else if (token == "t") {
+			if (val.substring(i_val, i_val + 1).toLowerCase() == AM.charAt(0).toLowerCase())
+				ampm = AM;
+			else if (val.substring(i_val, i_val + 1).toLowerCase() == PM.charAt(0).toLowerCase())
+				ampm = PM;
+			else
+				return null;
+			i_val += 1;
+		}
+		else if (token == "tt") {
+			if (val.substring(i_val, i_val + 2).toLowerCase() == AM.toLowerCase())
+				ampm = AM;
+			else if (val.substring(i_val,i_val+2).toLowerCase() == PM.toLowerCase())
+				ampm = PM;
+			else
+				return null;
+			i_val += 2;
+		}
+		else {
+			if (val.substring(i_val, i_val + token.length) != token)
+				return null;
+			else
+				i_val += token.length;
+		}
+	}
+	// If there are any trailing characters left in the value, it doesn't match
+	if (i_val != val.length)
+		return null;
+
+	// Is date valid for month?
+	if (month == 2) {
+		// Check for leap year
+		if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { // leap year
+			if (date > 29)
+				return null;
+		}
+		else if (date > 28)
+			return null;
+	}
+	if ((month == 4) || (month == 6) || (month == 9) || (month == 11)) {
+		if (date > 30) {
+			return null;
+		}
+	}
+	// Correct hours value
+	if (hh < 12 && ampm == PM) {
+		hh = hh - 0 + 12;
+	}
+	else if (hh > 11 && ampm == AM) {
+		hh -= 12;
+	}
+
+	if (utc)
+		return new Date(Date.UTC(year, month - 1, date, hh, mm, _ss));
+	else
+		return new Date(year, month - 1, date, hh, mm, _ss);
+};
+
+ss.parseExactDate = function ss$parseExactDate(val, format, provider) {
+	return ss._parseExactDate(val, format, provider, false);
+};
+
+ss.parseExactDateUTC = function ss$parseExactDateUTC(val, format, provider) {
+	return ss._parseExactDate(val, format, provider, true);
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// Function Extensions
+
+ss._delegateContains = function ss$_delegateContains(targets, object, method) {
+	for (var i = 0; i < targets.length; i += 2) {
+		if (targets[i] === object && targets[i + 1] === method) {
+			return true;
+		}
+	}
+	return false;
+};
+
+ss._mkdel = function ss$_mkdel(targets) {
+	var delegate = function() {
+		if (targets.length == 2) {
+			return targets[1].apply(targets[0], arguments);
+		}
+		else {
+			var clone = ss.arrayClone(targets);
+			for (var i = 0; i < clone.length; i += 2) {
+				if (ss._delegateContains(targets, clone[i], clone[i + 1])) {
+					clone[i + 1].apply(clone[i], arguments);
+				}
+			}
+			return null;
+		}
+	};
+	delegate._targets = targets;
+
+	return delegate;
+};
+
+ss.mkdel = function ss$mkdel(object, method) {
+	if (!object) {
+		return method;
+	}
+	return ss._mkdel([object, method]);
+};
+
+ss.delegateCombine = function ss$delegateCombine(delegate1, delegate2) {
+	if (!delegate1) {
+		if (!delegate2._targets) {
+			return ss.mkdel(null, delegate2);
+		}
+		return delegate2;
+	}
+	if (!delegate2) {
+		if (!delegate1._targets) {
+			return ss.mkdel(null, delegate1);
+		}
+		return delegate1;
+	}
+
+	var targets1 = delegate1._targets ? delegate1._targets : [null, delegate1];
+	var targets2 = delegate2._targets ? delegate2._targets : [null, delegate2];
+
+	return ss._mkdel(targets1.concat(targets2));
+};
+
+ss.delegateRemove = function ss$delegateRemove(delegate1, delegate2) {
+	if (!delegate1 || (delegate1 === delegate2)) {
+		return null;
+	}
+	if (!delegate2) {
+		return delegate1;
+	}
+
+	var targets = delegate1._targets;
+	var object = null;
+	var method;
+	if (delegate2._targets) {
+		object = delegate2._targets[0];
+		method = delegate2._targets[1];
+	}
+	else {
+		method = delegate2;
+	}
+
+	for (var i = 0; i < targets.length; i += 2) {
+		if ((targets[i] === object) && (targets[i + 1] === method)) {
+			if (targets.length == 2) {
+				return null;
+			}
+			var t = ss.arrayClone(targets);
+			t.splice(i, 2);
+			return ss._mkdel(t);
+		}
+	}
+
+	return delegate1;
+};
+
+ss.delegateEquals = function ss$delegateEquals(a, b) {
+	if (a === b)
+		return true;
+	if (!a._targets && !b._targets)
+		return false;
+	var ta = a._targets || [null, a], tb = b._targets || [null, b];
+	if (ta.length != tb.length)
+		return false;
+	for (var i = 0; i < ta.length; i++) {
+		if (ta[i] !== tb[i])
+			return false;
+	}
+	return true;
+};
+
+ss.delegateClone = function ss$delegateClone(source) {
+	return source._targets ? ss._mkdel(source._targets) : function() { return source.apply(this, arguments); };
+};
+
+ss.thisFix = function ss$thisFix(source) {
+	return function() {
+		var x = [this];
+		for(var i = 0; i < arguments.length; i++)
+			x.push(arguments[i]);
+		return source.apply(source, x);
+	};
+};
+
+ss.getInvocationList = function ss$getInvocationList(delegate) {
+	if (!delegate._targets)
+		return [delegate];
+	var result = [];
+	for (var i = 0; i < delegate._targets.length; i += 2)
+		result.push(ss.mkdel(delegate._targets[i], delegate._targets[i + 1]));
+	return result;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// RegExp Extensions
+ss.regexpEscape = function ss$regexpEscape(s) {
+	return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// Debug Extensions
+
+ss.Debug = global.Debug || function() {};
+ss.Debug.__typeName = 'Debug';
+
+if (!ss.Debug.writeln) {
+	ss.Debug.writeln = function Debug$writeln(text) {
+		if (global.console) {
+			if (global.console.debug) {
+				global.console.debug(text);
+				return;
+			}
+			else if (global.console.log) {
+				global.console.log(text);
+				return;
+			}
+		}
+		else if (global.opera &&
+			global.opera.postError) {
+			global.opera.postError(text);
+			return;
+		}
+	}
+};
+
+ss.Debug._fail = function Debug$_fail(message) {
+	ss.Debug.writeln(message);
+	debugger;
+};
+
+ss.Debug.assert = function Debug$assert(condition, message) {
+	if (!condition) {
+		message = 'Assert failed: ' + message;
+		if (confirm(message + '\r\n\r\nBreak into debugger?')) {
+			ss.Debug._fail(message);
+		}
+	}
+};
+
+ss.Debug.fail = function Debug$fail(message) {
+	ss.Debug._fail(message);
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// Enum
+
+var ss_Enum = function Enum$() {
+};
+ss_Enum.__typeName = 'ss.Enum';
+ss.Enum = ss_Enum;
+ss.initClass(ss_Enum, ss, {});
+
+ss_Enum.parse = function Enum$parse(enumType, s) {
+	var values = enumType.prototype;
+	if (!ss.isFlags(enumType)) {
+		for (var f in values) {
+			if (f === s) {
+				return values[f];
+			}
+		}
+	}
+	else {
+		var parts = s.split('|');
+		var value = 0;
+		var parsed = true;
+
+		for (var i = parts.length - 1; i >= 0; i--) {
+			var part = parts[i].trim();
+			var found = false;
+
+			for (var f in values) {
+				if (f === part) {
+					value |= values[f];
+					found = true;
+					break;
+				}
+			}
+			if (!found) {
+				parsed = false;
+				break;
+			}
+		}
+
+		if (parsed) {
+			return value;
+		}
+	}
+	throw new ss_ArgumentException('Invalid Enumeration Value');
+};
+
+ss_Enum.toString = function  Enum$toString(enumType, value) {
+	var values = enumType.prototype;
+	if (!ss.isFlags(enumType) || (value === 0)) {
+		for (var i in values) {
+			if (values[i] === value) {
+				return i;
+			}
+		}
+		throw new ss_ArgumentException('Invalid Enumeration Value');
+	}
+	else {
+		var parts = [];
+		for (var i in values) {
+			if (values[i] & value) {
+				ss.add(parts, i);
+			}
+		}
+		if (!parts.length) {
+			throw new ss_ArgumentException('Invalid Enumeration Value');
+		}
+		return parts.join(' | ');
+	}
+};
+
+ss_Enum.getValues = function Enum$getValues(enumType) {
+	var parts = [];
+	var values = enumType.prototype;
+	for (var i in values) {
+		if (values.hasOwnProperty(i))
+			parts.push(values[i]);
+	}
+	return parts;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// CultureInfo
+
+var ss_CultureInfo = function CultureInfo$(name, numberFormat, dateTimeFormat) {
+	this.name = name;
+	this.numberFormat = numberFormat;
+	this.dateTimeFormat = dateTimeFormat;
+};
+
+ss_CultureInfo.__typeName = 'ss.CultureInfo';
+ss.CultureInfo = ss_CultureInfo;
+ss.initClass(ss_CultureInfo, ss, {
+	getFormat:  function CultureInfo$getFormat(type) {
+		switch (type) {
+			case ss_NumberFormatInfo: return this.numberFormat;
+			case ss_DateTimeFormatInfo: return this.dateTimeFormat;
+			default: return null;
+		}
+	}
+}, null, [ss_IFormatProvider]);
+
+ss_CultureInfo.invariantCulture = new ss_CultureInfo('en-US', ss_NumberFormatInfo.invariantInfo, ss_DateTimeFormatInfo.invariantInfo);
+ss_CultureInfo.currentCulture = ss_CultureInfo.invariantCulture;
+
+///////////////////////////////////////////////////////////////////////////////
+// IEnumerator
+
+var ss_IEnumerator = function IEnumerator$() { };
+
+ss_IEnumerator.__typeName = 'ss.IEnumerator';
+ss.IEnumerator = ss_IEnumerator;
+ss.initInterface(ss_IEnumerator, ss, { current: null, moveNext: null, reset: null }, [ss_IDisposable]);
+
+///////////////////////////////////////////////////////////////////////////////
+// IEnumerable
+
+var ss_IEnumerable = function IEnumerable$() { };
+
+ss_IEnumerable.__typeName = 'ss.IEnumerable';
+ss.IEnumerable = ss_IEnumerable;
+ss.initInterface(ss_IEnumerable, ss, { getEnumerator: null });
+ss.getEnumerator = function ss$getEnumerator(obj) {
+	return obj.getEnumerator ? obj.getEnumerator() : new ss_ArrayEnumerator(obj);
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// ICollection
+
+var ss_ICollection = function ICollection$() { };
+
+ss_ICollection.__typeName = 'ss.ICollection';
+ss.ICollection = ss_ICollection;
+ss.initInterface(ss_ICollection, ss, { get_count: null, add: null, clear: null, contains: null, remove: null });
+
+ss.count = function ss$count(obj) {
+	return obj.get_count ? obj.get_count() : obj.length;
+};
+
+ss.add = function ss$add(obj, item) {
+	if (obj.add)
+		obj.add(item);
+	else if (ss.isArray(obj))
+		obj.push(item);
+	else
+		throw new ss_NotSupportedException();
+};
+
+ss.clear = function ss$clear(obj) {
+	if (obj.clear)
+		obj.clear();
+	else if (ss.isArray(obj))
+		obj.length = 0;
+	else
+		throw new ss_NotSupportedException();
+};
+
+ss.remove = function ss$remove(obj, item) {
+	if (obj.remove)
+		return obj.remove(item);
+	else if (ss.isArray(obj)) {
+		var index = ss.indexOf(obj, item);
+		if (index >= 0) {
+			obj.splice(index, 1);
+			return true;
+		}
+		return false;
+	}
+	else
+		throw new ss_NotSupportedException();
+};
+
+ss.contains = function ss$contains(obj, item) {
+	if (obj.contains)
+		return obj.contains(item);
+	else
+		return ss.indexOf(obj, item) >= 0;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// TimeSpan
+
+var ss_TimeSpan = function TimeSpan$(ticks) {
+	this.ticks = ticks || 0;
+};
+
+ss_TimeSpan.getDefaultValue = ss_TimeSpan.createInstance = function TimeSpan$default() {
+	return new ss_TimeSpan(0);
+};
+
+ss_TimeSpan.__typeName = 'ss.TimeSpan';
+ss.TimeSpan = ss_TimeSpan;
+ss.initClass(ss_TimeSpan, ss, {
+	compareTo: function TimeSpan$compareTo(other) {
+		return this.ticks < other.ticks ? -1 : (this.ticks > other.ticks ? 1 : 0);
+	},
+	equals: function TimeSpan$equals(other) {
+		return ss.isInstanceOfType(other, ss_TimeSpan) && other.ticks === this.ticks;
+	},
+	equalsT: function TimeSpan$equalsT(other) {
+		return other.ticks === this.ticks;
+	},
+	toString: function TimeSpan$toString() {
+		var d = function(s, n) { return ss.padLeftString(s + '', n || 2, 48); };
+
+		var ticks = this.ticks;
+		var result = '';
+		if (Math.abs(ticks) >= 864000000000) {
+			result += d((ticks / 864000000000) | 0) + '.';
+			ticks %= 864000000000;
+		}
+		result += d(ticks / 36000000000 | 0) + ':';
+		ticks %= 36000000000;
+		result += d(ticks / 600000000 | 0) + ':';
+		ticks %= 600000000;
+		result += d(ticks / 10000000 | 0);
+		ticks %= 10000000;
+		if (ticks > 0)
+			result += '.' + d(ticks, 7);
+		return result;
+	}
+}, null, [ss_IComparable, ss_IEquatable]);
+ss_TimeSpan.__class = false;
+
+///////////////////////////////////////////////////////////////////////////////
+// IEqualityComparer
+
+var ss_IEqualityComparer = function IEqualityComparer$() { };
+
+ss_IEqualityComparer.__typeName = 'ss.IEqualityComparer';
+ss.IEqualityComparer = ss_IEqualityComparer;
+ss.initInterface(ss_IEqualityComparer, ss, { areEqual: null, getObjectHashCode: null });
+
+///////////////////////////////////////////////////////////////////////////////
+// IComparer
+
+var ss_IComparer = function IComparer$() { };
+
+ss_IComparer.__typeName = 'ss.IComparer';
+ss.IComparer = ss_IComparer;
+ss.initInterface(ss_IComparer, ss, { compare: null });
+
+///////////////////////////////////////////////////////////////////////////////
+// Nullable
+
+ss.unbox = function ss$unbox(instance) {
+	if (!ss.isValue(instance))
+		throw new ss_InvalidOperationException('Nullable object must have a value.');
+	return instance;
+};
+
+var ss_Nullable$1 = function Nullable$1$(T) {
+	var $type = function() {
+	};
+	$type.isInstanceOfType = function(instance) {
+		return ss.isInstanceOfType(instance, T);
+	};
+	ss.registerGenericClassInstance($type, ss_Nullable$1, [T], {}, function() { return null; }, function() { return []; });
+	return $type;
+};
+
+ss_Nullable$1.__typeName = 'ss.Nullable$1';
+ss.Nullable$1 = ss_Nullable$1;
+ss.initGenericClass(ss_Nullable$1, ss, 1);
+
+ss_Nullable$1.eq = function Nullable$eq(a, b) {
+	return !ss.isValue(a) ? !ss.isValue(b) : (a === b);
+};
+
+ss_Nullable$1.ne = function Nullable$eq(a, b) {
+	return !ss.isValue(a) ? ss.isValue(b) : (a !== b);
+};
+
+ss_Nullable$1.le = function Nullable$le(a, b) {
+	return ss.isValue(a) && ss.isValue(b) && a <= b;
+};
+
+ss_Nullable$1.ge = function Nullable$ge(a, b) {
+	return ss.isValue(a) && ss.isValue(b) && a >= b;
+};
+
+ss_Nullable$1.lt = function Nullable$lt(a, b) {
+	return ss.isValue(a) && ss.isValue(b) && a < b;
+};
+
+ss_Nullable$1.gt = function Nullable$gt(a, b) {
+	return ss.isValue(a) && ss.isValue(b) && a > b;
+};
+
+ss_Nullable$1.sub = function Nullable$sub(a, b) {
+	return ss.isValue(a) && ss.isValue(b) ? a - b : null;
+};
+
+ss_Nullable$1.add = function Nullable$add(a, b) {
+	return ss.isValue(a) && ss.isValue(b) ? a + b : null;
+};
+
+ss_Nullable$1.mod = function Nullable$mod(a, b) {
+	return ss.isValue(a) && ss.isValue(b) ? a % b : null;
+};
+
+ss_Nullable$1.div = function Nullable$divf(a, b) {
+	return ss.isValue(a) && ss.isValue(b) ? a / b : null;
+};
+
+ss_Nullable$1.mul = function Nullable$mul(a, b) {
+	return ss.isValue(a) && ss.isValue(b) ? a * b : null;
+};
+
+ss_Nullable$1.band = function Nullable$band(a, b) {
+	return ss.isValue(a) && ss.isValue(b) ? a & b : null;
+};
+
+ss_Nullable$1.bor = function Nullable$bor(a, b) {
+	return ss.isValue(a) && ss.isValue(b) ? a | b : null;
+};
+
+ss_Nullable$1.xor = function Nullable$xor(a, b) {
+	return ss.isValue(a) && ss.isValue(b) ? a ^ b : null;
+};
+
+ss_Nullable$1.shl = function Nullable$shl(a, b) {
+	return ss.isValue(a) && ss.isValue(b) ? a << b : null;
+};
+
+ss_Nullable$1.srs = function Nullable$srs(a, b) {
+	return ss.isValue(a) && ss.isValue(b) ? a >> b : null;
+};
+
+ss_Nullable$1.sru = function Nullable$sru(a, b) {
+	return ss.isValue(a) && ss.isValue(b) ? a >>> b : null;
+};
+
+ss_Nullable$1.and = function Nullable$and(a, b) {
+	if (a === true && b === true)
+		return true;
+	else if (a === false || b === false)
+		return false;
+	else
+		return null;
+};
+
+ss_Nullable$1.or = function Nullable$or(a, b) {
+	if (a === true || b === true)
+		return true;
+	else if (a === false && b === false)
+		return false;
+	else
+		return null;
+};
+
+ss_Nullable$1.not = function Nullable$not(a) {
+	return ss.isValue(a) ? !a : null;
+};
+
+ss_Nullable$1.neg = function Nullable$neg(a) {
+	return ss.isValue(a) ? -a : null;
+};
+
+ss_Nullable$1.pos = function Nullable$pos(a) {
+	return ss.isValue(a) ? +a : null;
+};
+
+ss_Nullable$1.cpl = function Nullable$cpl(a) {
+	return ss.isValue(a) ? ~a : null;
+};
+
+ss_Nullable$1.lift = function Nullable$lift() {
+	for (var i = 0; i < arguments.length; i++) {
+		if (!ss.isValue(arguments[i]))
+			return null;
+	}
+	return arguments[0].apply(null, Array.prototype.slice.call(arguments, 1));
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// IList
+
+var ss_IList = function IList$() { };
+
+ss_IList.__typeName = 'ss.IList';
+ss.IList = ss_IList;
+ss.initInterface(ss_IList, ss, { get_item: null, set_item: null, indexOf: null, insert: null, removeAt: null }, [ss_ICollection, ss_IEnumerable]);
+
+ss.getItem = function ss$getItem(obj, index) {
+	return obj.get_item ? obj.get_item(index) : obj[index];
+}
+
+ss.setItem = function ss$setItem(obj, index, value) {
+	obj.set_item ? obj.set_item(index, value) : (obj[index] = value);
+}
+
+ss.indexOf = function ss$indexOf(obj, item) {
+	if (ss.isArrayOrTypedArray(obj)) {
+		for (var i = 0; i < obj.length; i++) {
+			if (ss.staticEquals(obj[i], item)) {
+				return i;
+			}
+		}
+		return -1;
+	}
+	else
+		return obj.indexOf(item);
+};
+
+ss.insert = function ss$insert(obj, index, item) {
+	if (obj.insert)
+		obj.insert(index, item);
+	else if (ss.isArray(obj))
+		obj.splice(index, 0, item);
+	else
+		throw new ss_NotSupportedException();
+};
+
+ss.removeAt = function ss$removeAt(obj, index) {
+	if (obj.removeAt)
+		obj.removeAt(index);
+	else if (ss.isArray(obj))
+		obj.splice(index, 1);
+	else
+		throw new ss_NotSupportedException();
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// IDictionary
+
+var ss_IDictionary = function IDictionary$() { };
+
+ss_IDictionary.__typeName = 'ss.IDictionary';
+ss.IDictionary = ss_IDictionary;
+ss.initInterface(ss_IDictionary, ss, { get_item: null, set_item: null, get_keys: null, get_values: null, containsKey: null, add: null, remove: null, tryGetValue: null }, [ss_IEnumerable]);
+
+///////////////////////////////////////////////////////////////////////////////
+// Int32
+
+var ss_Int32 = function Int32$() { };
+
+ss_Int32.__typeName = 'ss.Int32';
+ss.Int32 = ss_Int32;
+ss.initClass(ss_Int32, ss, {}, Object, [ ss_IEquatable, ss_IComparable, ss_IFormattable ]);
+ss_Int32.__class = false;
+
+ss_Int32.isInstanceOfType = function Int32$isInstanceOfType(instance) {
+	return typeof(instance) === 'number' && isFinite(instance) && Math.round(instance, 0) == instance;
+};
+
+ss_Int32.getDefaultValue = ss_Int32.createInstance = function Int32$getDefaultValue() {
+	return 0;
+};
+
+ss_Int32.div = function Int32$div(a, b) {
+	if (!ss.isValue(a) || !ss.isValue(b)) return null;
+	if (b === 0) throw new ss_DivideByZeroException();
+	return ss_Int32.trunc(a / b);
+};
+
+ss_Int32.trunc = function Int32$trunc(n) {
+	return ss.isValue(n) ? (n > 0 ? Math.floor(n) : Math.ceil(n)) : null;
+};
+
+ss_Int32.tryParse = function Int32$tryParse(s, result, min, max) {
+	result.$ = 0;
+	if (!/^[+-]?[0-9]+$/.test(s))
+		return 0;
+	var n = parseInt(s, 10);
+	if (n < min || n > max)
+		return false;
+	result.$ = n;
+	return true;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// MutableDateTime
+
+var ss_JsDate = function JsDate$() { };
+
+ss_JsDate.__typeName = 'ss.JsDate';
+ss.JsDate = ss_JsDate;
+ss.initClass(ss_JsDate, ss, {}, Object, [ ss_IEquatable, ss_IComparable ]);
+
+ss_JsDate.createInstance = function JsDate$createInstance() {
+	return new Date();
+};
+
+ss_JsDate.isInstanceOfType = function JsDate$isInstanceOfType(instance) {
+	return instance instanceof Date;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// ArrayEnumerator
+
+var ss_ArrayEnumerator = function ArrayEnumerator$(array) {
+	this._array = array;
+	this._index = -1;
+};
+ss_ArrayEnumerator.__typeName = 'ss.ArrayEnumerator';
+ss.ArrayEnumerator = ss_ArrayEnumerator;
+ss.initClass(ss_ArrayEnumerator, ss, {
+	moveNext: function ArrayEnumerator$moveNext() {
+		this._index++;
+		return (this._index < this._array.length);
+	},
+	reset: function ArrayEnumerator$reset() {
+		this._index = -1;
+	},
+	current: function ArrayEnumerator$current() {
+		if (this._index < 0 || this._index >= this._array.length)
+			throw 'Invalid operation';
+		return this._array[this._index];
+	},
+	dispose: function ArrayEnumerator$dispose() {
+	}
+}, null, [ss_IEnumerator, ss_IDisposable]);
+
+///////////////////////////////////////////////////////////////////////////////
+// ObjectEnumerator
+
+var ss_ObjectEnumerator = function ObjectEnumerator$(o) {
+	this._keys = Object.keys(o);
+	this._index = -1;
+	this._object = o;
+};
+
+ss_ObjectEnumerator.__typeName = 'ss.ObjectEnumerator';
+ss.ObjectEnumerator = ss_ObjectEnumerator;
+ss.initClass(ss_ObjectEnumerator, ss, {
+	moveNext: function ObjectEnumerator$moveNext() {
+		this._index++;
+		return (this._index < this._keys.length);
+	},
+	reset: function ObjectEnumerator$reset() {
+		this._index = -1;
+	},
+	current: function ObjectEnumerator$current() {
+		if (this._index < 0 || this._index >= this._keys.length)
+			throw new ss_InvalidOperationException('Invalid operation');
+		var k = this._keys[this._index];
+		return { key: k, value: this._object[k] };
+	},
+	dispose: function ObjectEnumerator$dispose() {
+	}
+}, null, [ss_IEnumerator, ss_IDisposable]);
+
+///////////////////////////////////////////////////////////////////////////////
+// EqualityComparer
+
+var ss_EqualityComparer = function EqualityComparer$() {
+};
+ss_EqualityComparer.__typeName = 'ss.EqualityComparer';
+ss.EqualityComparer = ss_EqualityComparer;
+ss.initClass(ss_EqualityComparer, ss, {
+	areEqual: function EqualityComparer$areEqual(x, y) {
+		return ss.staticEquals(x, y);
+	},
+	getObjectHashCode: function EqualityComparer$getObjectHashCode(obj) {
+		return ss.isValue(obj) ? ss.getHashCode(obj) : 0;
+	}
+}, null, [ss_IEqualityComparer]);
+ss_EqualityComparer.def = new ss_EqualityComparer();
+
+///////////////////////////////////////////////////////////////////////////////
+// Comparer
+
+var ss_Comparer = function Comparer$(f) {
+	this.f = f;
+};
+
+ss_Comparer.__typeName = 'ss.Comparer';
+ss.Comparer = ss_Comparer;
+ss.initClass(ss_Comparer, ss, {
+	compare: function Comparer$compare(x, y) {
+		return this.f(x, y);
+	}
+}, null, [ss_IComparer]);
+ss_Comparer.def = new ss_Comparer(function Comparer$defaultCompare(a, b) {
+	if (!ss.isValue(a))
+		return !ss.isValue(b)? 0 : -1;
+	else if (!ss.isValue(b))
+		return 1;
+	else
+		return ss.compare(a, b);
+});
+
+///////////////////////////////////////////////////////////////////////////////
+// Dictionary
+var ss_$DictionaryCollection = function $DictionaryCollection$(dict, isKeys) {
+	this._dict = dict;
+	this._isKeys = isKeys;
+};
+
+var ss_Dictionary$2 = function Dictionary$2$(TKey, TValue) {
+	var $type = function(o, cmp) {
+		this.countField = 0;
+		this.buckets = {};
+
+		this.comparer = cmp || ss_EqualityComparer.def;
+
+		if (ss.isInstanceOfType(o, ss_IDictionary)) {
+			var e = ss.getEnumerator(o);
+			try {
+				while (e.moveNext()) {
+					var c = e.current();
+					this.add(c.key, c.value);
+				}
+			}
+			finally {
+				if (ss.isInstanceOfType(e, ss_IDisposable)) {
+					ss.cast(e, ss_IDisposable).dispose();
+				}
+			}
+		}
+		else if (o) {
+			var keys = Object.keys(o);
+			for (var i = 0; i < keys.length; i++) {
+				this.add(keys[i], o[keys[i]]);
+			}
+		}
+	};
+
+	ss.registerGenericClassInstance($type, ss_Dictionary$2, [TKey, TValue], {
+		_setOrAdd: function(key, value, add) {
+			var hash = this.comparer.getObjectHashCode(key);
+			var entry = { key: key, value: value };
+			if (this.buckets.hasOwnProperty(hash)) {
+				var array = this.buckets[hash];
+				for (var i = 0; i < array.length; i++) {
+					if (this.comparer.areEqual(array[i].key, key)) {
+						if (add)
+							throw new ss_ArgumentException('Key ' + key + ' already exists.');
+						array[i] = entry;
+						return;
+					}
+				}
+				array.push(entry);
+			} else {
+				this.buckets[hash] = [entry];
+			}
+			this.countField++;
+		},
+
+		add: function(key, value) {
+			this._setOrAdd(key, value, true);
+		},
+
+		set_item: function(key, value) {
+			this._setOrAdd(key, value, false);
+		},
+
+		_get: function(key) {
+			var hash = this.comparer.getObjectHashCode(key);
+			if (this.buckets.hasOwnProperty(hash)) {
+				var array = this.buckets[hash];
+				for (var i = 0; i < array.length; i++) {
+					var entry = array[i];
+					if (this.comparer.areEqual(entry.key, key))
+						return entry.value !== undefined ? entry.value : null;
+				}
+			}
+			return undefined;
+		},
+
+		get_item: function(key) {
+			var v = this._get(key);
+			if (v === undefined)
+				throw new ss_KeyNotFoundException('Key ' + key + ' does not exist.');
+			return v;
+		},
+
+		tryGetValue: function(key, value) {
+			var v = this._get(key);
+			if (v !== undefined) {
+				value.$ = v;
+				return true;
+			}
+			else {
+				value.$ = ss.getDefaultValue(TValue);
+				return false;
+			}
+		},
+
+		containsKey: function(key) {
+			var hash = this.comparer.getObjectHashCode(key);
+			if (!this.buckets.hasOwnProperty(hash))
+				return false;
+
+			var array = this.buckets[hash];
+			for (var i = 0; i < array.length; i++) {
+				if (this.comparer.areEqual(array[i].key, key))
+					return true;
+			}
+			return false;
+		},
+
+		clear: function() {
+			this.countField = 0;
+			this.buckets = {};
+		},
+
+		remove: function(key) {
+			var hash = this.comparer.getObjectHashCode(key);
+			if (!this.buckets.hasOwnProperty(hash))
+				return false;
+
+			var array = this.buckets[hash];
+			for (var i = 0; i < array.length; i++) {
+				if (this.comparer.areEqual(array[i].key, key)) {
+					array.splice(i, 1);
+					if (array.length == 0) delete this.buckets[hash];
+					this.countField--;
+					return true;
+				}
+			}
+			return false;
+		},
+
+		get_count: function() {
+			return this.countField;
+		},
+
+		_getEnumerator: function(projector) {
+			var bucketKeys = Object.keys(this.buckets), bucketIndex = -1, arrayIndex;
+			return new ss_IteratorBlockEnumerator(function() {
+				if (bucketIndex < 0 || arrayIndex >= (this.buckets[bucketKeys[bucketIndex]].length - 1)) {
+					arrayIndex = -1;
+					bucketIndex++;
+				}
+				if (bucketIndex >= bucketKeys.length)
+					return false;
+				arrayIndex++;
+				return true;
+			}, function() { return projector(this.buckets[bucketKeys[bucketIndex]][arrayIndex]); }, null, this);
+		},
+
+		get_keys: function() {
+			return new ss_$DictionaryCollection(this, true);
+		},
+
+		get_values: function() {
+			return new ss_$DictionaryCollection(this, false);
+		},
+
+		getEnumerator: function() {
+			return this._getEnumerator(function(e) { return e; });
+		}
+	}, function() { return null; }, function() { return [ ss_IDictionary, ss_IEnumerable ]; });
+	return $type;
+};
+
+ss_Dictionary$2.__typeName = 'ss.Dictionary$2';
+ss.Dictionary$2 = ss_Dictionary$2;
+ss.initGenericClass(ss_Dictionary$2, ss, 2);
+ss_$DictionaryCollection.__typeName = 'ss.$DictionaryCollection';
+ss.$DictionaryCollection = ss_$DictionaryCollection;
+ss.initClass(ss_$DictionaryCollection, ss, {
+	get_count: function $DictionaryCollection$get_count() {
+		return this._dict.get_count();
+	},
+	contains: function $DictionaryCollection$contains(v) {
+		if (this._isKeys) {
+			return this._dict.containsKey(v);
+		}
+		else {
+			for (var e in this._dict.buckets) {
+				if (this._dict.buckets.hasOwnProperty(e)) {
+					var bucket = this._dict.buckets[e];
+					for (var i = 0; i < bucket.length; i++) {
+						if (this._dict.comparer.areEqual(bucket[i].value, v))
+							return true;
+					}
+				}
+			}
+			return false;
+		}
+	},
+	getEnumerator: function $DictionaryCollection$getEnumerator(v) {
+		return this._dict._getEnumerator(this._isKeys ? function(e) { return e.key; } : function(e) { return e.value; });
+	},
+	add: function $DictionaryCollection$add(v) {
+		throw new ss_InvalidOperationException('Collection is read-only');
+	},
+	clear: function $DictionaryCollection$clear() {
+		throw new ss_InvalidOperationException('Collection is read-only');
+	},
+	remove: function $DictionaryCollection$remove() {
+		throw new ss_InvalidOperationException('Collection is read-only');
+	}
+}, null, [ss_IEnumerable, ss_ICollection]);
+
+///////////////////////////////////////////////////////////////////////////////
+// IDisposable
+
+var ss_IDisposable = function IDisposable$() { };
+ss_IDisposable.__typeName = 'ss.IDisposable';
+ss.IDisposable = ss_IDisposable;
+ss.initInterface(ss_IDisposable, ss, { dispose: null });
+
+///////////////////////////////////////////////////////////////////////////////
+// StringBuilder
+
+var ss_StringBuilder = function StringBuilder$(s) {
+	this._parts = (ss.isValue(s) && s != '') ? [s] : [];
+	this.length = ss.isValue(s) ? s.length : 0;
+}
+
+ss_StringBuilder.__typeName = 'ss.StringBuilder';
+ss.StringBuilder = ss_StringBuilder;
+ss.initClass(ss_StringBuilder, ss, {
+	append: function StringBuilder$append(o) {
+		if (ss.isValue(o)) {
+			var s = o.toString();
+			ss.add(this._parts, s);
+			this.length += s.length;
+		}
+		return this;
+	},
+
+	appendChar: function StringBuilder$appendChar(c) {
+		return this.append(String.fromCharCode(c));
+	},
+
+	appendLine: function StringBuilder$appendLine(s) {
+		this.append(s);
+		this.append('\r\n');
+		return this;
+	},
+
+	appendLineChar: function StringBuilder$appendLineChar(c) {
+		return this.appendLine(String.fromCharCode(c));
+	},
+
+	clear: function StringBuilder$clear() {
+		this._parts = [];
+		this.length = 0;
+	},
+
+	toString: function StringBuilder$toString() {
+		return this._parts.join('');
+	}
+});
+
+///////////////////////////////////////////////////////////////////////////////
+// Random
+
+var ss_Random = function Random$(seed) {
+	var _seed = (seed === undefined) ? parseInt(Date.now() % 2147483648) : parseInt(Math.abs(seed));
+	this.inext = 0;
+	this.inextp = 21;
+	this.seedArray = new Array(56);
+	for(var i = 0; i < 56; i++)
+		this.seedArray[i] = 0;
+
+	_seed = 161803398 - _seed;
+	if (_seed < 0)
+		_seed += 2147483648;
+	this.seedArray[55] = _seed;
+	var mk = 1;
+	for (var i = 1; i < 55; i++) {
+		var ii = (21 * i) % 55;
+		this.seedArray[ii] = mk;
+		mk = _seed - mk;
+		if (mk < 0)
+			mk += 2147483648;
+
+		_seed = this.seedArray[ii];
+	}
+	for (var j = 1; j < 5; j++) {
+		for (var k = 1; k < 56; k++) {
+			this.seedArray[k] -= this.seedArray[1 + (k + 30) % 55];
+			if (this.seedArray[k] < 0)
+				this.seedArray[k] += 2147483648;
+		}
+	}
+};
+
+ss_Random.__typeName = 'ss.Random';
+ss.Random = ss_Random;
+ss.initClass(ss_Random, ss, {
+	next: function Random$next() {
+		return this.sample() * 2147483648 | 0;
+	},
+	nextMax: function Random$nextMax(max) {
+		return this.sample() * max | 0;
+	},
+	nextMinMax: function Random$nextMinMax(min, max) {
+		return (this.sample() * (max - min) + min) | 0;
+	},
+	nextBytes: function Random$nextBytes(bytes) {
+		for (var i = 0; i < bytes.length; i++)
+			bytes[i] = (this.sample() * 256) | 0;
+	},
+	nextDouble: function Random$nextDouble() {
+		return this.sample();
+	},
+	sample: function Random$sample() {
+		if (++this.inext >= 56)
+			this.inext = 1;
+		if (++this.inextp >= 56)
+			this.inextp = 1;
+
+		var retVal =  this.seedArray[this.inext] - this.seedArray[this.inextp];
+
+		if (retVal < 0)
+			retVal += 2147483648;
+
+		this.seedArray[this.inext] = retVal;
+
+		return retVal * (1.0 / 2147483648);
+	}
+});
+
+///////////////////////////////////////////////////////////////////////////////
+// EventArgs
+
+var ss_EventArgs = function EventArgs$() {
+}
+ss_EventArgs.__typeName = 'ss.EventArgs';
+ss.EventArgs = ss_EventArgs;
+ss.initClass(ss_EventArgs, ss, {});
+
+ss_EventArgs.Empty = new ss_EventArgs();
+
+///////////////////////////////////////////////////////////////////////////////
+// Exception
+
+var ss_Exception = function Exception$(message, innerException) {
+	this._message = message || 'An error occurred.';
+	this._innerException = innerException || null;
+	this._error = new Error();
+}
+
+ss_Exception.__typeName = 'ss.Exception';
+ss.Exception = ss_Exception;
+ss.initClass(ss_Exception, ss, {
+	get_message: function Exception$get_message() {
+		return this._message;
+	},
+	get_innerException: function Exception$get_innerException() {
+		return this._innerException;
+	},
+	get_stack: function Exception$get_stack() {
+		return this._error.stack;
+	}
+});
+
+ss_Exception.wrap = function Exception$wrap(o) {
+	if (ss.isInstanceOfType(o, ss_Exception)) {
+		return o;
+	}
+	else if (o instanceof TypeError) {
+		// TypeError can either be 'cannot read property blah of null/undefined' (proper NullReferenceException), or it can be eg. accessing a non-existent method of an object.
+		// As long as all code is compiled, they should with a very high probability indicate the use of a null reference.
+		return new ss_NullReferenceException(o.message, new ss_JsErrorException(o));
+	}
+	else if (o instanceof RangeError) {
+		return new ss_ArgumentOutOfRangeException(null, o.message, new ss_JsErrorException(o));
+	}
+	else if (o instanceof Error) {
+		return new ss_JsErrorException(o);
+	}
+	else {
+		return new ss_Exception(o.toString());
+	}
+};
+
+////////////////////////////////////////////////////////////////////////////////
+// NotImplementedException
+
+var ss_NotImplementedException = function NotImplementedException$(message, innerException) {
+	ss_Exception.call(this, message || 'The method or operation is not implemented.', innerException);
+};
+ss_NotImplementedException.__typeName = 'ss.NotImplementedException';
+ss.NotImplementedException = ss_NotImplementedException;
+ss.initClass(ss_NotImplementedException, ss, {}, ss_Exception);
+
+////////////////////////////////////////////////////////////////////////////////
+// NotSupportedException
+
+var ss_NotSupportedException = function NotSupportedException$(message, innerException) {
+	ss_Exception.call(this, message || 'Specified method is not supported.', innerException);
+};
+ss_NotSupportedException.__typeName = 'ss.NotSupportedException';
+ss.NotSupportedException = ss_NotSupportedException;
+ss.initClass(ss_NotSupportedException, ss, {}, ss_Exception);
+
+////////////////////////////////////////////////////////////////////////////////
+// AggregateException
+
+var ss_AggregateException = function AggregateException$(message, innerExceptions) {
+	this.innerExceptions = ss.isValue(innerExceptions) ? ss.arrayFromEnumerable(innerExceptions) : [];
+	ss_Exception.call(this, message || 'One or more errors occurred.', this.innerExceptions.length ? this.innerExceptions[0] : null);
+};
+
+ss_AggregateException.__typeName = 'ss.AggregateException';
+ss.AggregateException = ss_AggregateException;
+ss.initClass(ss_AggregateException, ss, {
+	flatten: function  AggregateException$flatten() {
+		var inner = [];
+		for (var i = 0; i < this.innerExceptions.length; i++) {
+			var e = this.innerExceptions[i];
+			if (ss.isInstanceOfType(e, ss_AggregateException)) {
+				inner.push.apply(inner, e.flatten().innerExceptions);
+			}
+			else {
+				inner.push(e);
+			}
+		}
+		return new ss_AggregateException(this._message, inner);
+	}
+}, ss_Exception);
+
+////////////////////////////////////////////////////////////////////////////////
+// PromiseException
+
+var ss_PromiseException = function PromiseException(args, message, innerException) {
+	ss_Exception.call(this, message || (args.length && args[0] ? args[0].toString() : 'An error occurred'), innerException);
+	this.arguments = ss.arrayClone(args);
+};
+
+ss_PromiseException.__typeName = 'ss.PromiseException';
+ss.PromiseException = ss_PromiseException;
+ss.initClass(ss_PromiseException, ss, {
+	get_arguments: function PromiseException$get_arguments() {
+		return this._arguments;
+	}
+}, ss_Exception);
+
+////////////////////////////////////////////////////////////////////////////////
+// JsErrorException
+
+var ss_JsErrorException = function JsErrorException$(error, message, innerException) {
+	ss_Exception.call(this, message || error.message, innerException);
+	this.error = error;
+};
+ss_JsErrorException.__typeName = 'ss.JsErrorException';
+ss.JsErrorException = ss_JsErrorException;
+ss.initClass(ss_JsErrorException, ss, {
+	get_stack: function Exception$get_stack() {
+		return this.error.stack;
+	}
+}, ss_Exception);
+
+////////////////////////////////////////////////////////////////////////////////
+// ArgumentException
+
+var ss_ArgumentException = function ArgumentException$(message, paramName, innerException) {
+	ss_Exception.call(this, message || 'Value does not fall within the expected range.', innerException);
+	this.paramName = paramName || null;
+};
+
+ss_ArgumentException.__typeName = 'ss.ArgumentException';
+ss.ArgumentException = ss_ArgumentException;
+ss.initClass(ss_ArgumentException, ss, {}, ss_Exception);
+
+////////////////////////////////////////////////////////////////////////////////
+// ArgumentNullException
+
+var ss_ArgumentNullException = function ArgumentNullException$(paramName, message, innerException) {
+	if (!message) {
+		message = 'Value cannot be null.';
+		if (paramName)
+			message += '\nParameter name: ' + paramName;
+	}
+
+	ss_ArgumentException.call(this, message, paramName, innerException);
+};
+
+ss_ArgumentNullException.__typeName = 'ss.ArgumentNullException';
+ss.ArgumentNullException = ss_ArgumentNullException;
+ss.initClass(ss_ArgumentNullException, ss, {}, ss_ArgumentException);
+
+////////////////////////////////////////////////////////////////////////////////
+// ArgumentNullException
+
+var ss_ArgumentOutOfRangeException = function ArgumentOutOfRangeException$(paramName, message, innerException, actualValue) {
+	if (!message) {
+		message = 'Value is out of range.';
+		if (paramName)
+			message += '\nParameter name: ' + paramName;
+	}
+
+	ss_ArgumentException.call(this, message, paramName, innerException);
+	this.actualValue = actualValue || null;
+};
+
+ss_ArgumentOutOfRangeException.__typeName = 'ss.ArgumentOutOfRangeException';
+ss.ArgumentOutOfRangeException = ss_ArgumentOutOfRangeException;
+ss.initClass(ss_ArgumentOutOfRangeException, ss, {}, ss_ArgumentException);
+
+////////////////////////////////////////////////////////////////////////////////
+// FormatException
+
+var ss_FormatException = function FormatException$(message, innerException) {
+	ss_Exception.call(this, message || 'Invalid format.', innerException);
+};
+ss_FormatException.__typeName = 'ss.FormatException';
+ss.FormatException = ss_FormatException;
+ss.initClass(ss_FormatException, ss, {}, ss_Exception);
+
+////////////////////////////////////////////////////////////////////////////////
+// DivideByZeroException
+
+var ss_DivideByZeroException = function DivideByZeroException$(message, innerException) {
+	ss_Exception.call(this, message || 'Division by 0.', innerException);
+};
+ss_DivideByZeroException.__typeName = 'ss.DivideByZeroException';
+ss.DivideByZeroException = ss_DivideByZeroException;
+ss.initClass(ss_DivideByZeroException, ss, {}, ss_Exception);
+
+////////////////////////////////////////////////////////////////////////////////
+// InvalidCastException
+
+var ss_InvalidCastException = function InvalidCastException$(message, innerException) {
+	ss_Exception.call(this, message || 'The cast is not valid.', innerException);
+};
+ss_InvalidCastException.__typeName = 'ss.InvalidCastException';
+ss.InvalidCastException = ss_InvalidCastException;
+ss.initClass(ss_InvalidCastException, ss, {}, ss_Exception);
+
+////////////////////////////////////////////////////////////////////////////////
+// InvalidOperationException
+
+var ss_InvalidOperationException = function InvalidOperationException$(message, innerException) {
+	ss_Exception.call(this, message || 'Operation is not valid due to the current state of the object.', innerException);
+};
+ss_InvalidOperationException.__typeName = 'ss.InvalidOperationException';
+ss.InvalidOperationException = ss_InvalidOperationException;
+ss.initClass(ss_InvalidOperationException, ss, {}, ss_Exception);
+
+////////////////////////////////////////////////////////////////////////////////
+// NullReferenceException
+
+var ss_NullReferenceException = function NullReferenceException$(message, innerException) {
+	ss_Exception.call(this, message || 'Object is null.', innerException);
+};
+ss_NullReferenceException.__typeName = 'ss.NullReferenceException';
+ss.NullReferenceException = ss_NullReferenceException;
+ss.initClass(ss_NullReferenceException, ss, {}, ss_Exception);
+
+////////////////////////////////////////////////////////////////////////////////
+// KeyNotFoundException
+
+var ss_KeyNotFoundException = function KeyNotFoundException$(message, innerException) {
+	ss_Exception.call(this, message || 'Key not found.', innerException);
+};
+ss_KeyNotFoundException.__typeName = 'ss.KeyNotFoundException';
+ss.KeyNotFoundException = ss_KeyNotFoundException;
+ss.initClass(ss_KeyNotFoundException, ss, {}, ss_Exception);
+
+////////////////////////////////////////////////////////////////////////////////
+// InvalidOperationException
+
+var ss_AmbiguousMatchException = function AmbiguousMatchException$(message, innerException) {
+	ss_Exception.call(this, message || 'Ambiguous match.', innerException);
+};
+ss_AmbiguousMatchException.__typeName = 'ss.AmbiguousMatchException';
+ss.AmbiguousMatchException = ss_AmbiguousMatchException;
+ss.initClass(ss_AmbiguousMatchException, ss, {}, ss_Exception);
+
+///////////////////////////////////////////////////////////////////////////////
+// IteratorBlockEnumerable
+
+var ss_IteratorBlockEnumerable = function IteratorBlockEnumerable$(getEnumerator, $this) {
+	this._getEnumerator = getEnumerator;
+	this._this = $this;
+};
+
+ss_IteratorBlockEnumerable.__typeName = 'ss.IteratorBlockEnumerable';
+ss.IteratorBlockEnumerable = ss_IteratorBlockEnumerable;
+ss.initClass(ss_IteratorBlockEnumerable, ss, {
+	getEnumerator: function IteratorBlockEnumerable$getEnumerator() {
+		return this._getEnumerator.call(this._this);
+	}
+}, null, [ss_IEnumerable]);
+
+///////////////////////////////////////////////////////////////////////////////
+// IteratorBlockEnumerator
+
+var ss_IteratorBlockEnumerator = function IteratorBlockEnumerator$(moveNext, getCurrent, dispose, $this) {
+	this._moveNext = moveNext;
+	this._getCurrent = getCurrent;
+	this._dispose = dispose;
+	this._this = $this;
+};
+
+ss_IteratorBlockEnumerator.__typeName = 'ss.IteratorBlockEnumerator';
+ss.IteratorBlockEnumerator = ss_IteratorBlockEnumerator;
+ss.initClass(ss_IteratorBlockEnumerator, ss, {
+	moveNext: function IteratorBlockEnumerator$moveNext() {
+		try {
+			return this._moveNext.call(this._this);
+		}
+		catch (ex) {
+			if (this._dispose)
+				this._dispose.call(this._this);
+			throw ex;
+		}
+	},
+	current: function IteratorBlockEnumerator$current() {
+		return this._getCurrent.call(this._this);
+	},
+	reset: function IteratorBlockEnumerator$reset() {
+		throw new ss_NotSupportedException('Reset is not supported.');
+	},
+	dispose: function IteratorBlockEnumerator$dispose() {
+		if (this._dispose)
+			this._dispose.call(this._this);
+	}
+}, null, [ss_IEnumerator, ss_IDisposable]);
+
+///////////////////////////////////////////////////////////////////////////////
+// Lazy
+
+var ss_Lazy = function Lazy$(valueFactory) {
+	this._valueFactory = valueFactory;
+	this.isValueCreated = false;
+};
+ss_Lazy.__typeName = 'ss.Lazy';
+ss.Lazy = ss_Lazy;
+ss.initClass(ss_Lazy, ss, {
+	value: function Lazy$value() {
+		if (!this.isValueCreated) {
+			this._value = this._valueFactory();
+			delete this._valueFactory;
+			this.isValueCreated = true;
+		}
+		return this._value;
+	}
+});
+
+///////////////////////////////////////////////////////////////////////////////
+// Task
+
+var ss_Task = function Task$(action, state) {
+	this._action = action;
+	this._state = state;
+	this.exception = null;
+	this.status = 0;
+	this._thens = [];
+	this._result = null;
+};
+
+ss_Task.delay = function Task$delay(delay) {
+	var tcs = new ss_TaskCompletionSource();
+	setTimeout(function() {
+		tcs.setResult(0);
+	}, delay);
+	return tcs.task;
+};
+
+ss_Task.fromResult = function Task$fromResult(result) {
+	var t = new ss_Task();
+	t.status = 5;
+	t._result = result;
+	return t;
+};
+
+ss_Task.run = function Task$run(f) {
+	var tcs = new ss_TaskCompletionSource();
+	setTimeout(function() {
+		try {
+			tcs.setResult(f());
+		}
+		catch (e) {
+			tcs.setException(ss_Exception.wrap(e));
+		}
+	}, 0);
+	return tcs.task;
+};
+
+ss_Task.whenAll = function Task$whenAll(tasks) {
+	var tcs = new ss_TaskCompletionSource();
+	if (tasks.length === 0) {
+		tcs.setResult([]);
+	}
+	else {
+		var result = new Array(tasks.length), remaining = tasks.length, cancelled = false, exceptions = [];
+		for (var i = 0; i < tasks.length; i++) {
+			(function(i) {
+				tasks[i].continueWith(function(t) {
+					switch (t.status) {
+						case 5:
+							result[i] = t.getResult();
+							break;
+						case 6:
+							cancelled = true;
+							break;
+						case 7:
+							ss.arrayAddRange(exceptions, t.exception.innerExceptions);
+							break;
+						default:
+							throw new ss_InvalidOperationException('Invalid task status ' + t.status);
+					}
+					if (--remaining === 0) {
+						if (exceptions.length > 0)
+							tcs.setException(exceptions);
+						else if (cancelled)
+							tcs.setCanceled();
+						else
+							tcs.setResult(result);
+					}
+				});
+			})(i);
+		}
+	}
+	return tcs.task;
+};
+
+ss_Task.whenAny = function Task$whenAny(tasks) {
+	if (!tasks.length)
+		throw new ss_ArgumentException('Must wait for at least one task', 'tasks');
+
+	var tcs = new ss_TaskCompletionSource();
+	for (var i = 0; i < tasks.length; i++) {
+		tasks[i].continueWith(function(t) {
+			switch (t.status) {
+				case 5:
+					tcs.trySetResult(t);
+					break;
+				case 6:
+					tcs.trySetCanceled();
+					break;
+				case 7:
+					tcs.trySetException(t.exception.innerExceptions);
+					break;
+				default:
+					throw new ss_InvalidOperationException('Invalid task status ' + t.status);
+			}
+		});
+	}
+	return tcs.task;
+};
+
+ss_Task.fromDoneCallback = function Task$fromDoneCallback(t, i, m) {
+	var tcs = new ss_TaskCompletionSource(), args;
+	if (typeof(i) === 'number') {
+		args = Array.prototype.slice.call(arguments, 3);
+		if (i < 0)
+			i += args.length + 1;
+	}
+	else {
+		args = Array.prototype.slice.call(arguments, 2);
+		m = i;
+		i = args.length;
+	}
+
+	var cb = function(v) {
+		tcs.setResult(v);
+	};
+	
+	args = args.slice(0, i).concat(cb, args.slice(i));
+
+	t[m].apply(t, args);
+	return tcs.task;
+};
+
+ss_Task.fromPromise = function Task$fromPromise(p, f) {
+	var tcs = new ss_TaskCompletionSource();
+	if (typeof(f) === 'number')
+		f = (function(i) { return function() { return arguments[i >= 0 ? i : (arguments.length + i)]; }; })(f);
+	else if (typeof(f) !== 'function')
+		f = function() { return Array.prototype.slice.call(arguments, 0); };
+
+	p.then(function() {
+		tcs.setResult(typeof(f) === 'function' ? f.apply(null, arguments) : null);
+	}, function() {
+		tcs.setException(new ss_PromiseException(Array.prototype.slice.call(arguments, 0)));
+	});
+	return tcs.task;
+};
+
+ss_Task.fromNode = function  Task$fromNode(t, f, m) {
+	var tcs = new ss_TaskCompletionSource(), args;
+	if (typeof(f) === 'function') {
+		args = Array.prototype.slice.call(arguments, 3);
+	}
+	else {
+		args = Array.prototype.slice.call(arguments, 2);
+		m = f;
+		f = function() { return arguments[0]; };
+	}
+
+	var cb = function(e) {
+		if (e)
+			tcs.setException(ss_Exception.wrap(e));
+		else
+			tcs.setResult(f.apply(null, Array.prototype.slice.call(arguments, 1)));
+	};
+	
+	args.push(cb);
+
+	t[m].apply(t, args);
+	return tcs.task;
+};
+
+ss_Task.__typeName = 'ss.Task';
+ss.Task = ss_Task;
+ss.initClass(ss_Task, ss, {
+	continueWith: function Task$continueWith(continuation) {
+		var tcs = new ss_TaskCompletionSource();
+		var _this = this;
+		var fn = function() {
+			try {
+				tcs.setResult(continuation(_this));
+			}
+			catch (e) {
+				tcs.setException(ss_Exception.wrap(e));
+			}
+		};
+		if (this.isCompleted()) {
+			setTimeout(fn, 0);
+		}
+		else {
+			this._thens.push(fn);
+		}
+		return tcs.task;
+	},
+	start: function Task$start() {
+		if (this.status !== 0)
+			throw new ss_InvalidOperationException('Task was already started.');
+		var _this = this;
+		this.status = 3;
+		setTimeout(function() {
+			try {
+				var result = _this._action(_this._state);
+				delete _this._action;
+				delete _this._state;
+				_this._complete(result);
+			}
+			catch (e) {
+				_this._fail(new ss_AggregateException(null, [ss_Exception.wrap(e)]));
+			}
+		}, 0);
+	},
+	_runCallbacks: function Task$_runCallbacks() {
+		for (var i = 0; i < this._thens.length; i++)
+			this._thens[i](this);
+		delete this._thens;
+	},
+	_complete: function Task$_complete(result) {
+		if (this.isCompleted())
+			return false;
+		this._result = result;
+		this.status = 5;
+		this._runCallbacks();
+		return true;
+	},
+	_fail: function Task$_fail(exception) {
+		if (this.isCompleted())
+			return false;
+		this.exception = exception;
+		this.status = 7;
+		this._runCallbacks();
+		return true;
+	},
+	_cancel: function Task$_cancel() {
+		if (this.isCompleted())
+			return false;
+		this.status = 6;
+		this._runCallbacks();
+		return true;
+	},
+	isCanceled: function Task$isCanceled() {
+		return this.status === 6;
+	},
+	isCompleted: function Task$isCompleted() {
+		return this.status >= 5;
+	},
+	isFaulted: function Task$isFaulted() {
+		return this.status === 7;
+	},
+	_getResult: function Task$_getResult(await) {
+		switch (this.status) {
+			case 5:
+				return this._result;
+			case 6:
+				throw new ss_InvalidOperationException('Task was cancelled.');
+			case 7:
+				throw await ? this.exception.innerExceptions[0] : this.exception;
+			default:
+				throw new ss_InvalidOperationException('Task is not yet completed.');
+		}
+	},
+	getResult: function Task$getResult() {
+		return this._getResult(false);
+	},
+	getAwaitedResult: function Task$getAwaitedResult() {
+		return this._getResult(true);
+	},
+	dispose: function Task$dispose() {
+	}
+}, null, [ss_IDisposable]);
+
+////////////////////////////////////////////////////////////////////////////////
+// TaskStatus
+var ss_TaskStatus = function() {
+};
+ss_TaskStatus.__typeName = 'ss.TaskStatus';
+ss.TaskStatus = ss_TaskStatus;
+ss.initEnum(ss_TaskStatus, ss, { created: 0, running: 3, ranToCompletion: 5, canceled: 6, faulted: 7 });
+
+///////////////////////////////////////////////////////////////////////////////
+// TaskCompletionSource
+
+var ss_TaskCompletionSource = function TaskCompletionSource$() {
+	this.task = new ss_Task();
+	this.task.status = 3;
+};
+
+ss_TaskCompletionSource.__typeName = 'ss.TaskCompletionSource';
+ss.TaskCompletionSource = ss_TaskCompletionSource;
+ss.initClass(ss_TaskCompletionSource, ss, {
+	setCanceled: function TaskCompletionSource$setCanceled() {
+		if (!this.task._cancel())
+			throw new ss_InvalidOperationException('Task was already completed.');
+	},
+	setResult: function TaskCompletionSource$setResult(result) {
+		if (!this.task._complete(result))
+			throw new ss_InvalidOperationException('Task was already completed.');
+	},
+	setException: function TaskCompletionSource$setException(exception) {
+		if (!this.trySetException(exception))
+			throw new ss_InvalidOperationException('Task was already completed.');
+	},
+	trySetCanceled: function TaskCompletionSource$trySetCanceled() {
+		return this.task._cancel();
+	},
+	trySetResult: function TaskCompletionSource$setResult(result) {
+		return this.task._complete(result);
+	},
+	trySetException: function TaskCompletionSource$setException(exception) {
+		if (ss.isInstanceOfType(exception, ss_Exception))
+			exception = [exception];
+		return this.task._fail(new ss_AggregateException(null, exception));
+	}
+});
+
+///////////////////////////////////////////////////////////////////////////////
+// CancelEventArgs
+
+var ss_CancelEventArgs = function CancelEventArgs$() {
+	ss_EventArgs.call(this);
+	this.cancel = false;
+}
+
+ss_CancelEventArgs.__typeName = 'ss.CancelEventArgs';
+ss.CancelEventArgs = ss_CancelEventArgs;
+ss.initClass(ss_CancelEventArgs, ss, {}, ss_EventArgs);
+
+///////////////////////////////////////////////////////////////////////////////
+// Guid
+
+var ss_Guid = function Guid$() {
+};
+ss_Guid.$valid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/ig;
+ss_Guid.$split = /^(.{8})(.{4})(.{4})(.{4})(.{12})$/;
+ss_Guid.empty = '00000000-0000-0000-0000-000000000000';
+ss_Guid.$rng = new ss_Random();
+
+ss_Guid.__typeName = 'ss.Guid';
+ss.Guid = ss_Guid;
+ss.initClass(ss_Guid, ss, {}, Object, [ ss_IEquatable, ss_IComparable ]);
+ss_Guid.__class = false;
+
+ss_Guid.isInstanceOfType = function Guid$isInstanceOfType(instance) {
+	return typeof(instance) === 'string' && instance.match(ss_Guid.$valid);
+};
+
+ss_Guid.getDefaultValue = ss_Guid.createInstance = function Guid$default() {
+	return ss_Guid.empty;
+};
+
+ss_Guid.parse = function Guid$parse(uuid, format) {
+	var r = {};
+	if (ss_Guid.tryParse(uuid, format, r))
+		return r.$;
+	throw new ss_FormatException('Unable to parse UUID');
+};
+
+ss_Guid.tryParse = function Guid$tryParse(uuid, format, r) {
+	r.$ = ss_Guid.empty;
+	if (!ss.isValue(uuid)) throw new ss_ArgumentNullException('uuid');
+	if (!format) {
+		var m = /^[{(]?([0-9a-f]{8})-?([0-9a-f]{4})-?([0-9a-f]{4})-?([0-9a-f]{4})-?([0-9a-f]{12})[)}]?$/ig.exec(uuid);
+		if (m) {
+			r.$ = m.slice(1).join('-').toLowerCase();
+			return true;
+		}
+	}
+	else {
+		if (format === 'N') {
+			var m = ss_Guid.$split.exec(uuid);
+			if (!m)
+				return false;
+			uuid = m.slice(1).join('-');
+		}
+		else if (format === 'B' || format === 'P') {
+			var b = format === 'B';
+			if (uuid[0] !== (b ? '{' : '(') || uuid[uuid.length - 1] !== (b ? '}' : ')'))
+				return false;
+			uuid = uuid.substr(1, uuid.length - 2);
+		}
+		if (uuid.match(ss_Guid.$valid)) {
+			r.$ = uuid.toLowerCase();
+			return true;
+		}
+	}
+	return false;
+};
+
+ss_Guid.format = function Guid$format(uuid, format) {
+	switch (format) {
+		case 'N': return uuid.replace(/-/g, '');
+		case 'B': return '{' + uuid + '}';
+		case 'P': return '(' + uuid + ')';
+		default : return uuid;
+	}
+}
+
+ss_Guid.fromBytes = function Guid$fromBytes(b) {
+	if (!b || b.length !== 16)
+		throw new ss_ArgumentException('b', 'Must be 16 bytes');
+	var s = b.map(function(x) { return ss.formatNumber(x & 0xff, 'x2'); }).join('');
+	return ss_Guid.$split.exec(s).slice(1).join('-');
+}
+
+ss_Guid.newGuid = function Guid$newGuid() {
+	var a = Array(16);
+	ss_Guid.$rng.nextBytes(a);
+	a[6] = a[6] & 0x0f | 0x40;
+	a[8] = a[8] & 0xbf | 0x80;
+	return ss_Guid.fromBytes(a);
+};
+
+ss_Guid.getBytes = function Guid$getBytes(uuid) {
+	var a = Array(16);
+	var s = uuid.replace(/-/g, '');
+	for (var i = 0; i < 16; i++) {
+		a[i] = parseInt(s.substr(i * 2, 2), 16);
+	}
+	return a;
+};
+
+if (global.ss) {
+	for (var n in ss) {
+		if (ss.hasOwnProperty(n))
+			global.ss[n] = ss[n];
+	}
+}
+else {
+	global.ss = ss;
+}
+})(global);
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/mscorlib.min.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/mscorlib.min.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/mscorlib.min.js	(revision 101)
@@ -0,0 +1,1 @@
+if(typeof global==="undefined")if(typeof window!=="undefined")global=window;else if(typeof self!=="undefined")global=self;(function(j){"use strict";var a={__assemblies:{}};a.initAssembly=function(b,d,c){c=c||{};b.name=d;b.toString=function(){return this.name};b.__types={};b.getResourceNames=function(){return Object.keys(c)};b.getResourceDataBase64=function(a){return c[a]||null};b.getResourceData=function(d){var b=c[d];return b?a.dec64(b):null};a.__assemblies[d]=b};a.initAssembly(a,"mscorlib");a.load=function(b){return a.__assemblies[b]||require(b)};var J="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",E;a.enc64=function(b,g){for(var f="",a=0;a<b.length;a+=3){var c=b[a],d=b[a+1],e=b[a+2];f+=(g&&a&&!(a%57)?"\n":"")+J[c>>2]+J[(c&3)<<4|d>>4]+(a<b.length-1?J[(d&15)<<2|e>>6]:"=")+(a<b.length-2?J[e&63]:"=")}return f};a.dec64=function(a){a=a.replace(/\s/g,"");E=E||function(){for(var b={"=":-1},a=0;a<64;a++)b[J[a]]=a;return b}();for(var c=Array(Math.max(a.length*3/4-2,0)),b=0;b<a.length;b+=4){var e=b*3/4,h=E[a[b]],f=E[a[b+1]],d=E[a[b+2]],g=E[a[b+3]];c[e]=h<<2|f>>4;if(d>=0)c[e+1]=(f&15)<<4|d>>2;if(g>=0)c[e+2]=(d&3)<<6|g}return c};a.getAssemblies=function(){return Object.keys(a.__assemblies).map(function(b){return a.__assemblies[b]})};a.isNullOrUndefined=function(a){return a===null||a===undefined};a.isValue=function(a){return a!==null&&a!==undefined};a.referenceEquals=function(b,c){return a.isValue(b)?b===c:!a.isValue(c)};a.mkdict=function(){for(var b=arguments.length!=1?arguments:arguments[0],c={},a=0;a<b.length;a+=2)c[b[a]]=b[a+1];return c};a.clone=function(b,a){return a?b.$clone(a):a};a.coalesce=function(b,c){return a.isValue(b)?b:c};a.isDate=function(a){return Object.prototype.toString.call(a)==="[object Date]"};a.isArray=function(a){return Object.prototype.toString.call(a)==="[object Array]"};a.isTypedArrayType=function(b){return["Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint16Array","Uint32Array","Uint8ClampedArray"].indexOf(a.getTypeFullName(b))>=0};a.isArrayOrTypedArray=function(b){return a.isArray(b)||a.isTypedArrayType(a.getInstanceType(b))};a.getHashCode=function(b){if(!a.isValue(b))throw new p("Cannot get hash code of null");else if(typeof b.getHashCode==="function")return b.getHashCode();else if(typeof b==="boolean")return b?1:0;else if(typeof b==="number"){var c=b.toExponential();c=c.substr(0,c.indexOf("e"));return parseInt(c.replace(".",""),10)&4294967295}else if(typeof b==="string"){for(var d=0,e=0;e<b.length;e++)d=d*31+b.charCodeAt(e)&4294967295;return d}else return a.isDate(b)?b.valueOf()&4294967295:a.defaultHashCode(b)};a.defaultHashCode=function(a){return a.$__hashCode__||(a.$__hashCode__=Math.random()*4294967296|0)};a.equals=function(b,c){if(!a.isValue(b))throw new p("Object is null");else if(b!==a&&typeof b.equals==="function")return b.equals(c);return a.isDate(b)&&a.isDate(c)?b.valueOf()===c.valueOf():typeof b==="function"&&typeof c==="function"?a.delegateEquals(b,c):a.isNullOrUndefined(b)&&a.isNullOrUndefined(c)?true:b===c};a.compare=function(b,c){if(!a.isValue(b))throw new p("Object is null");else return typeof b==="number"||typeof b==="string"||typeof b==="boolean"?b<c?-1:b>c?1:0:a.isDate(b)?a.compare(b.valueOf(),c.valueOf()):b.compareTo(c)};a.equalsT=function(b,c){if(!a.isValue(b))throw new p("Object is null");else return typeof b==="number"||typeof b==="string"||typeof b==="boolean"?b===c:a.isDate(b)?b.valueOf()===c.valueOf():b.equalsT(c)};a.staticEquals=function(c,b){return!a.isValue(c)?!a.isValue(b):a.isValue(b)?a.equals(c,b):false};a.shallowCopy=function(b,e){for(var c=Object.keys(b),a=0,f=c.length;a<f;a++){var d=c[a];e[d]=b[d]}};a.isLower=function(b){var a=String.fromCharCode(b);return a===a.toLowerCase()&&a!==a.toUpperCase()};a.isUpper=function(b){var a=String.fromCharCode(b);return a!==a.toLowerCase()&&a===a.toUpperCase()};if(typeof window=="object"){if(!window.Element){window.Element=function(){};window.Element.isInstanceOfType=function(a){return a&&typeof a.constructor==="undefined"&&typeof a.tagName==="string"}}window.Element.__typeName="Element";if(!window.XMLHttpRequest)window.XMLHttpRequest=function(){for(var b=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"],a=0;a<b.length;a++)try{return new ActiveXObject(b[a])}catch(d){}return null};a.parseXml=function(d){try{if(DOMParser){var e=new DOMParser;return e.parseFromString(d,"text/xml")}else for(var c=["Msxml2.DOMDocument.3.0","Msxml2.DOMDocument"],b=0;b<c.length;b++){var a=new ActiveXObject(c[b]);a.async=false;a.loadXML(d);a.setProperty("SelectionLanguage","XPath");return a}}catch(f){}return null}}a.clearKeys=function(a){for(var b in a)if(a.hasOwnProperty(b))delete a[b]};a.keyExists=function(b,a){return b[a]!==undefined};if(!Object.keys)Object.keys=function(){"use strict";var b=Object.prototype.hasOwnProperty,d=!{toString:null}.propertyIsEnumerable("toString"),a=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],c=a.length;return function(e){if(typeof e!=="object"&&(typeof e!=="function"||e===null))throw new TypeError("Object.keys called on non-object");var g=[],h,f;for(h in e)b.call(e,h)&&g.push(h);if(d)for(f=0;f<c;f++)b.call(e,a[f])&&g.push(a[f]);return g}}();a.getKeyCount=function(a){return Object.keys(a).length};a.__genericCache={};a._makeGenericTypeName=function(e,d){for(var c=e.__typeName,b=0;b<d.length;b++)c+=(b===0?"[":",")+"["+a.getTypeQName(d[b])+"]";c+="]";return c};a.makeGenericType=function(c,b){var d=a._makeGenericTypeName(c,b);return a.__genericCache[d]||c.apply(null,b)};a.registerGenericClassInstance=function(b,c,d,h,g,f){var e=a._makeGenericTypeName(c,d);a.__genericCache[e]=b;b.__typeName=e;b.__genericTypeDefinition=c;b.__typeArguments=d;a.initClass(b,c.__assembly,h,g(),f())};a.registerGenericInterfaceInstance=function(b,c,d,g,f){var e=a._makeGenericTypeName(c,d);a.__genericCache[e]=b;b.__typeName=e;b.__genericTypeDefinition=c;b.__typeArguments=d;a.initInterface(b,c.__assembly,g,f())};a.isGenericTypeDefinition=function(a){return a.__isGenericTypeDefinition||false};a.getGenericTypeDefinition=function(a){return a.__genericTypeDefinition||null};a.getGenericParameterCount=function(a){return a.__typeArgumentCount||0};a.getGenericArguments=function(a){return a.__typeArguments||null};a.setMetadata=function(c,d){if(d.members)for(var e=0;e<d.members.length;e++){var b=d.members[e];b.typeDef=c;if(b.adder)b.adder.typeDef=c;if(b.remover)b.remover.typeDef=c;if(b.getter)b.getter.typeDef=c;if(b.setter)b.setter.typeDef=c}c.__metadata=d;if(d.variance)c.isAssignableFrom=function(c){var e=function(b,d){if(d.__genericTypeDefinition===b.__genericTypeDefinition&&d.__typeArguments.length==b.__typeArguments.length){for(var c=0;c<b.__typeArguments.length;c++){var g=b.__metadata.variance[c],f=b.__typeArguments[c],e=d.__typeArguments[c];switch(g){case 1:if(!a.isAssignableFrom(f,e))return false;break;case 2:if(!a.isAssignableFrom(e,f))return false;break;default:if(e!==f)return false}}return true}return false};if(c.__interface&&e(this,c))return true;for(var d=a.getInterfaces(c),b=0;b<d.length;b++)if(d[b]===this||e(this,d[b]))return true;return false}};a.initClass=function(b,e,g,c,d){b.__class=true;b.__assembly=e;if(!b.__typeArguments)e.__types[b.__typeName]=b;if(c&&c!==Object){var f=function(){};f.prototype=c.prototype;b.prototype=new f;b.prototype.constructor=b}a.shallowCopy(g,b.prototype);if(d)b.__interfaces=d};a.initGenericClass=function(a,b,c){a.__class=true;a.__assembly=b;b.__types[a.__typeName]=a;a.__typeArgumentCount=c;a.__isGenericTypeDefinition=true};a.initInterface=function(b,d,e,c){b.__interface=true;b.__assembly=d;if(!b.__typeArguments)d.__types[b.__typeName]=b;if(c)b.__interfaces=c;a.shallowCopy(e,b.prototype);b.isAssignableFrom=function(b){return a.contains(a.getInterfaces(b),this)}};a.initGenericInterface=function(a,b,c){a.__interface=true;a.__assembly=b;b.__types[a.__typeName]=a;a.__typeArgumentCount=c;a.__isGenericTypeDefinition=true};a.initEnum=function(b,d,e,c){b.__enum=true;b.__assembly=d;d.__types[b.__typeName]=b;a.shallowCopy(e,b.prototype);b.getDefaultValue=b.createInstance=function(){return c?null:0};b.isInstanceOfType=function(a){return typeof a==(c?"string":"number")}};a.getBaseType=function(b){if(b===Object||b.__interface)return null;else if(Object.getPrototypeOf)return Object.getPrototypeOf(b.prototype).constructor;else{var a=b.prototype;if(Object.prototype.hasOwnProperty.call(a,"constructor"))try{var c=a.constructor;delete a.constructor;return a.constructor}finally{a.constructor=c}return a.constructor}};a.getTypeFullName=function(a){return a.__typeName||a.name||(a.toString().match(/^\s*function\s*([^\s(]+)/)||[])[1]||"Object"};a.getTypeQName=function(b){return a.getTypeFullName(b)+(b.__assembly?", "+b.__assembly.name:"")};a.getTypeName=function(e){var b=a.getTypeFullName(e),d=b.indexOf("["),c=b.lastIndexOf(".",d>=0?d:b.length);return c>0?b.substr(c+1):b};a.getTypeNamespace=function(e){var b=a.getTypeFullName(e),d=b.indexOf("["),c=b.lastIndexOf(".",d>=0?d:b.length);return c>0?b.substr(0,c):""};a.getTypeAssembly=function(b){return a.contains([Date,Number,Boolean,String,Function,Array],b)?a:b.__assembly||null};a._getAssemblyType=function(b,d){var f=[];if(b.__types)return b.__types[d]||null;else{for(var e=d.split("."),c=0;c<e.length;c++){b=b[e[c]];if(!a.isValue(b))return null}return typeof b!=="function"?null:b}};a.getAssemblyTypes=function(b){var c=[];if(b.__types)for(var e in b.__types)b.__types.hasOwnProperty(e)&&c.push(b.__types[e]);else{var d=function(b,f){for(var e in b)b.hasOwnProperty(e)&&d(b[e],e);typeof b==="function"&&a.isUpper(f.charCodeAt(0))&&c.push(b)};d(b,"")}return c};a.createAssemblyInstance=function(d,c){var b=a.getType(c,d);return b?a.createInstance(b):null};a.getInterfaces=function(b){return b.__interfaces?b.__interfaces:b===Date||b===Number?[t,r,A]:b===Boolean||b===String?[t,r]:b===Array||a.isTypedArrayType(b)?[s,B,Z]:[]};a.isInstanceOfType=function(b,c){return a.isNullOrUndefined(b)?false:typeof c.isInstanceOfType==="function"?c.isInstanceOfType(b):a.isAssignableFrom(c,a.getInstanceType(b))};a.isAssignableFrom=function(a,b){return a===b||typeof a.isAssignableFrom==="function"&&a.isAssignableFrom(b)||b.prototype instanceof a};a.isClass=function(a){return a.__class==true||a===Array||a===Function||a===RegExp||a===String||a===Error||a===Object};a.isEnum=function(a){return!!a.__enum};a.isFlags=function(a){return a.__metadata&&a.__metadata.enumFlags||false};a.isInterface=function(a){return!!a.__interface};a.safeCast=function(b,c){return c===true?b:c===false?null:a.isInstanceOfType(b,c)?b:null};a.cast=function(b,c){if(b===null||typeof b==="undefined")return b;else if(c===true||c!==false&&a.isInstanceOfType(b,c))return b;throw new P("Cannot cast object to type "+a.getTypeFullName(c));};a.getInstanceType=function(b){if(!a.isValue(b))throw new p("Cannot get type of null");try{return b.constructor}catch(c){return Object}};a._getType=function(c,h,b){var k=!b;b=b||/[[,\]]/g;var i=b.lastIndex,d=b.exec(c),g,f=[];if(d){g=c.substring(i,d.index);switch(d[0]){case"[":if(c[d.index+1]!="[")return null;for(;true;){b.exec(c);var e=a._getType(c,j,b);if(!e)return null;f.push(e);d=b.exec(c);if(d[0]==="]")break;else if(d[0]!==",")return null}d=b.exec(c);if(d&&d[0]===","){b.exec(c);if(!(h=a.__assemblies[(b.lastIndex>0?c.substring(d.index+1,b.lastIndex-1):c.substring(d.index+1)).trim()]))return null}break;case",":b.exec(c);if(!(h=a.__assemblies[(b.lastIndex>0?c.substring(d.index+1,b.lastIndex-1):c.substring(d.index+1)).trim()]))return null}}else g=c.substring(i);if(k&&b.lastIndex)return null;var e=a._getAssemblyType(h,g.trim());return f.length?a.makeGenericType(e,f):e};a.getType=function(b,c){return b?a._getType(b,c||j):null};a.getDefaultValue=function(a){return typeof a.getDefaultValue==="function"?a.getDefaultValue():a===Boolean?false:a===Date?new Date(0):a===Number?0:null};a.createInstance=function(a){return typeof a.createInstance==="function"?a.createInstance():a===Boolean?false:a===Date?new Date(0):a===Number?0:a===String?"":new a};a.applyConstructor=function(a,c){var b=function(){a.apply(this,c)};b.prototype=a.prototype;return new b};a.getAttributes=function(e,h,j){var c=[];if(j){var i=a.getBaseType(e);if(i)for(var d=a.getAttributes(i,h,true),b=0;b<d.length;b++){var f=a.getInstanceType(d[b]);(!f.__metadata||!f.__metadata.attrNoInherit)&&c.push(d[b])}}if(e.__metadata&&e.__metadata.attr)for(var b=0;b<e.__metadata.attr.length;b++){var d=e.__metadata.attr[b];if(h==null||a.isInstanceOfType(d,h)){var f=a.getInstanceType(d);if(!f.__metadata||!f.__metadata.attrAllowMultiple)for(var g=c.length-1;g>=0;g--)a.isInstanceOfType(c[g],f)&&c.splice(g,1);c.push(d)}}return c};a.getMembers=function(b,k,c,h,f){var e=[];if((c&72)==72||(c&6)==4){var m=a.getBaseType(b);if(m)e=a.getMembers(m,k&~1,c&(c&64?255:247)&(c&2?251:255),h,f)}var n=function(a){if(k&a.type&&(c&4&&!a.isStatic||c&8&&a.isStatic)&&(!h||a.name===h)){if(f){if((a.params||[]).length!==f.length)return;for(var b=0;b<f.length;b++)if(f[b]!==a.params[b])return}e.push(a)}};if(b.__metadata&&b.__metadata.members)for(var d=0;d<b.__metadata.members.length;d++){var j=b.__metadata.members[d];n(j);for(var i=0;i<4;i++){var l=(["getter","setter","adder","remover"])[i];j[l]&&n(j[l])}}if(c&256){while(b){for(var g=[],d=0;d<e.length;d++)e[d].typeDef===b&&g.push(e[d]);if(g.length>1)throw new L("Ambiguous match");else if(g.length===1)return g[0];b=a.getBaseType(b)}return null}return e};a.midel=function(b,f,d){if(b.isStatic&&!!f)throw new e("Cannot specify target for static method");else if(!b.isStatic&&!f)throw new e("Must specify target for instance method");var c;if(b.fget)c=function(){return(b.isStatic?b.typeDef:this)[b.fget]};else if(b.fset)c=function(a){(b.isStatic?b.typeDef:this)[b.fset]=a};else{c=b.def||(b.isStatic||b.sm?b.typeDef[b.sname]:f[b.sname]);if(b.tpcount){if(!d||d.length!==b.tpcount)throw new e("Wrong number of type arguments");c=c.apply(null,d)}else if(d&&d.length)throw new e("Cannot specify type arguments for non-generic method");if(b.exp){var g=c;c=function(){return g.apply(this,Array.prototype.slice.call(arguments,0,arguments.length-1).concat(arguments[arguments.length-1]))}}if(b.sm){var h=c;c=function(){return h.apply(null,[this].concat(Array.prototype.slice.call(arguments)))}}}return a.mkdel(f,c)};a.invokeCI=function(b,c){if(b.exp)c=c.slice(0,c.length-1).concat(c[c.length-1]);return b.def?b.def.apply(null,c):b.sm?b.typeDef[b.sname].apply(null,c):a.applyConstructor(b.sname?b.typeDef[b.sname]:b.typeDef,c)};a.fieldAccess=function(b,a){if(b.isStatic&&!!a)throw new e("Cannot specify target for static field");else if(!b.isStatic&&!a)throw new e("Must specify target for instance field");a=b.isStatic?b.typeDef:a;if(arguments.length===3)a[b.sname]=arguments[2];else return a[b.sname]};var A=function(){};A.__typeName="ss.IFormattable";a.IFormattable=A;a.initInterface(A,a,{format:null});a.format=function(b,c){return typeof b==="number"?a.formatNumber(b,c):a.isDate(b)?a.formatDate(b,c):b.format(c)};var r=function(){};r.__typeName="ss.IComparable";a.IComparable=r;a.initInterface(r,a,{compareTo:null});var t=function(){};t.__typeName="ss.IEquatable";a.IEquatable=t;a.initInterface(t,a,{equalsT:null});a.formatNumber=function(c,b){return a.isNullOrUndefined(b)||b.length==0||b=="i"?c.toString():a.netFormatNumber(c,b,h.invariantCulture.numberFormat)};a.localeFormatNumber=function(c,b){return a.isNullOrUndefined(b)||b.length==0||b=="i"?c.toLocaleString():a.netFormatNumber(c,b,h.currentCulture.numberFormat)};a._commaFormatNumber=function(b,k,o,p){var d=null,i=b.indexOf(o);if(i>0){d=b.substr(i);b=b.substr(0,i)}var j=a.startsWithString(b,"-");if(j)b=b.substr(1);var g=0,h=k[g];if(b.length<h)return(j?"-":"")+(d?b+d:b);var l=b.length,c="",m=false;while(!m){var f=h,e=l-f;if(e<0){h+=e;f+=e;e=0;m=true}if(!f)break;var n=b.substr(e,f);if(c.length)c=n+p+c;else c=n;l-=f;if(g<k.length-1){g++;h=k[g]}}if(j)c="-"+c;return d?c+d:c};a.netFormatNumber=function(e,i,j){var c=j&&j.getFormat(o)||h.currentCulture.numberFormat,b="",d=-1;if(i.length>1)d=parseInt(i.substr(1),10);var g=i.charAt(0);switch(g){case"d":case"D":b=parseInt(Math.abs(e)).toString();if(d!=-1)b=a.padLeftString(b,d,48);if(e<0)b="-"+b;break;case"x":case"X":b=parseInt(Math.abs(e)).toString(16);if(g=="X")b=b.toUpperCase();if(d!=-1)b=a.padLeftString(b,d,48);break;case"e":case"E":if(d==-1)b=e.toExponential();else b=e.toExponential(d);if(g=="E")b=b.toUpperCase();break;case"f":case"F":case"n":case"N":if(d==-1)d=c.numberDecimalDigits;b=e.toFixed(d).toString();if(d&&c.numberDecimalSeparator!="."){var f=b.indexOf(".");b=b.substr(0,f)+c.numberDecimalSeparator+b.substr(f+1)}if(g=="n"||g=="N")b=a._commaFormatNumber(b,c.numberGroupSizes,c.numberDecimalSeparator,c.numberGroupSeparator);break;case"c":case"C":if(d==-1)d=c.currencyDecimalDigits;b=Math.abs(e).toFixed(d).toString();if(d&&c.currencyDecimalSeparator!="."){var f=b.indexOf(".");b=b.substr(0,f)+c.currencyDecimalSeparator+b.substr(f+1)}b=a._commaFormatNumber(b,c.currencyGroupSizes,c.currencyDecimalSeparator,c.currencyGroupSeparator);if(e<0)b=a.formatString(c.currencyNegativePattern,b);else b=a.formatString(c.currencyPositivePattern,b);break;case"p":case"P":if(d==-1)d=c.percentDecimalDigits;b=(Math.abs(e)*100).toFixed(d).toString();if(d&&c.percentDecimalSeparator!="."){var f=b.indexOf(".");b=b.substr(0,f)+c.percentDecimalSeparator+b.substr(f+1)}b=a._commaFormatNumber(b,c.percentGroupSizes,c.percentDecimalSeparator,c.percentGroupSeparator);if(e<0)b=a.formatString(c.percentNegativePattern,b);else b=a.formatString(c.percentPositivePattern,b)}return b};a.netSplit=function(d,h,i,f){for(var g=new RegExp(h.map(a.regexpEscape).join("|"),"g"),b=[],e,c=0;true;c=g.lastIndex)if(e=g.exec(d)){if(f!==1||e.index>c)if(b.length===i-1){b.push(d.substr(c));return b}else b.push(d.substring(c,e.index))}else{(f!==1||c!==d.length)&&b.push(d.substr(c));return b}};a.compareStrings=function(a,b,c){if(c){if(a)a=a.toUpperCase();if(b)b=b.toUpperCase()}a=a||"";b=b||"";return a==b?0:a<b?-1:1};a.endsWithString=function(b,a){return!a.length?true:a.length>b.length?false:b.substr(b.length-a.length)==a};a._formatString=function(c,d,b){if(!a._formatRE)a._formatRE=/\{\{|\}\}|\{[^\}\{]+\}/g;return c.replace(a._formatRE,function(c){if(c==="{{"||c==="}}")return c.charAt(0);var h=parseInt(c.substr(1),10),e=d[h+1];if(a.isNullOrUndefined(e))return"";if(a.isInstanceOfType(e,A)){var g=null,f=c.indexOf(":");if(f>0)g=c.substring(f+1,c.length-1);return a.format(e,g)}else return b?e.toLocaleString():e.toString()})};a.formatString=function(b){return a._formatString(b,arguments,false)};a.stringFromChar=function(a,d){for(var c=a,b=1;b<d;b++)c+=a;return c};a.htmlDecode=function(a){return a.replace(/&([^;]+);/g,function(b,a){if(a[0]==="#")return String.fromCharCode(parseInt(a.substr(1),10));switch(a){case"quot":return'"';case"apos":return"'";case"amp":return"&";case"lt":return"<";case"gt":return">";default:return"&"+a+";"}})};a.htmlEncode=function(a){return a.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")};a.jsEncode=function(a,b){a=a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/"/g,'\\"');return b?'"'+a+'"':a};a.indexOfAnyString=function(g,e,a,f){var b=g.length;if(!b)return-1;e=String.fromCharCode.apply(null,e);a=a||0;f=f||b;var d=a+f-1;if(d>=b)d=b-1;for(var c=a;c<=d;c++)if(e.indexOf(g.charAt(c))>=0)return c;return-1};a.insertString=function(a,b,c){if(!c)return a;if(!b)return c+a;var d=a.substr(0,b),e=a.substr(b);return d+c+e};a.isNullOrEmptyString=function(a){return!a||!a.length};a.lastIndexOfAnyString=function(g,e,a,f){var d=g.length;if(!d)return-1;e=String.fromCharCode.apply(null,e);a=a||d-1;f=f||d;var c=a-f+1;if(c<0)c=0;for(var b=a;b>=c;b--)if(e.indexOf(g.charAt(b))>=0)return b;return-1};a.localeFormatString=function(b){return a._formatString(b,arguments,true)};a.padLeftString=function(b,d,c){if(b.length<d){c=String.fromCharCode(c||32);return a.stringFromChar(c,d-b.length)+b}return b};a.padRightString=function(b,d,c){if(b.length<d){c=String.fromCharCode(c||32);return b+a.stringFromChar(c,d-b.length)}return b};a.removeString=function(c,a,b){return!b||a+b>this.length?c.substr(0,a):c.substr(0,a)+c.substr(a+b)};a.replaceAllString=function(c,b,a){a=a||"";return c.split(b).join(a)};a.startsWithString=function(b,a){return!a.length?true:a.length>b.length?false:b.substr(0,a.length)==a};if(!String.prototype.trim)String.prototype.trim=function(){return a.trimStartString(a.trimEndString(this))};a.trimEndString=function(b,a){return b.replace(a?new RegExp("["+String.fromCharCode.apply(null,a)+"]+$"):/\s*$/,"")};a.trimStartString=function(b,a){return b.replace(a?new RegExp("^["+String.fromCharCode.apply(null,a)+"]+"):/^\s*/,"")};a.trimString=function(c,b){return a.trimStartString(a.trimEndString(c,b),b)};a.lastIndexOfString=function(e,c,a,d){var b=e.lastIndexOf(c,a);return b<a-d+1?-1:b};a.indexOfString=function(e,b,a,d){var c=e.indexOf(b,a);return c+b.length<=a+d?c:-1};a.divRem=function(b,c,d){var a=b%c;d.$=a;return(b-a)/c};a.round=function(a,f,e){var c=Math.pow(10,f||0);a*=c;var b=a>0|-(a<0);if(a%1===.5*b){var d=Math.floor(a);return(d+(e?b>0:d%2*b))/c}return Math.round(a)/c};var z=function(){};z.__typeName="ss.IFormatProvider";a.IFormatProvider=z;a.initInterface(z,a,{getFormat:null});var o=function(){};o.__typeName="ss.NumberFormatInfo";a.NumberFormatInfo=o;a.initClass(o,a,{getFormat:function(a){return a===o?this:null}},null,[z]);o.invariantInfo=new o;a.shallowCopy({naNSymbol:"NaN",negativeSign:"-",positiveSign:"+",negativeInfinitySymbol:"-Infinity",positiveInfinitySymbol:"Infinity",percentSymbol:"%",percentGroupSizes:[3],percentDecimalDigits:2,percentDecimalSeparator:".",percentGroupSeparator:",",percentPositivePattern:0,percentNegativePattern:0,currencySymbol:"$",currencyGroupSizes:[3],currencyDecimalDigits:2,currencyDecimalSeparator:".",currencyGroupSeparator:",",currencyNegativePattern:0,currencyPositivePattern:0,numberGroupSizes:[3],numberDecimalDigits:2,numberDecimalSeparator:".",numberGroupSeparator:","},o.invariantInfo);var n=function(){};n.__typeName="ss.DateTimeFormatInfo";a.DateTimeFormatInfo=n;a.initClass(n,a,{getFormat:function(a){return a===n?this:null}},null,[z]);n.invariantInfo=new n;a.shallowCopy({amDesignator:"AM",pmDesignator:"PM",dateSeparator:"/",timeSeparator:":",gmtDateTimePattern:"ddd, dd MMM yyyy HH:mm:ss 'GMT'",universalDateTimePattern:"yyyy-MM-dd HH:mm:ssZ",sortableDateTimePattern:"yyyy-MM-ddTHH:mm:ss",dateTimePattern:"dddd, MMMM dd, yyyy h:mm:ss tt",longDatePattern:"dddd, MMMM dd, yyyy",shortDatePattern:"M/d/yyyy",longTimePattern:"h:mm:ss tt",shortTimePattern:"h:mm tt",firstDayOfWeek:0,dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],minimizedDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December",""],shortMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""]},n.invariantInfo);var f=function(){this._stopTime=0;this._startTime=0;this.isRunning=false};f.startNew=function(){var a=new f;a.start();return a};if(typeof window!=="undefined"&&window.performance&&window.performance.now){f.frequency=1e6;f.isHighResolution=true;f.getTimestamp=function(){return Math.round(window.performance.now()*1e3)}}else if(typeof process!=="undefined"&&process.hrtime){f.frequency=1e9;f.isHighResolution=true;f.getTimestamp=function(){var a=process.hrtime();return a[0]*1e9+a[1]}}else{f.frequency=1e3;f.isHighResolution=false;f.getTimestamp=function(){return(new Date).valueOf()}}f.__typeName="ss.Stopwatch";a.Stopwatch=f;a.initClass(f,a,{reset:function(){this._stopTime=this._startTime=f.getTimestamp();this.isRunning=false},ticks:function(){return(this.isRunning?f.getTimestamp():this._stopTime)-this._startTime},milliseconds:function(){return Math.round(this.ticks()/f.frequency*1e3)},timeSpan:function(){return new u(this.milliseconds()*1e4)},start:function(){if(this.isRunning)return;this._startTime=f.getTimestamp();this.isRunning=true},stop:function(){if(!this.isRunning)return;this._stopTime=f.getTimestamp();this.isRunning=false},restart:function(){this.isRunning=false;this.start()}});a._flatIndex=function(a,c){if(c.length!=(a._sizes?a._sizes.length:1))throw new e("Invalid number of indices");if(c[0]<0||c[0]>=(a._sizes?a._sizes[0]:a.length))throw new e("Index 0 out of range");var d=c[0];if(a._sizes)for(var b=1;b<a._sizes.length;b++){if(c[b]<0||c[b]>=a._sizes[b])throw new e("Index "+b+" out of range");d=d*a._sizes[b]+c[b]}return d};a.arrayGet2=function(b,d){var e=a._flatIndex(b,d),c=b[e];return typeof c!=="undefined"?c:b._defvalue};a.arrayGet=function(b){return a.arrayGet2(b,Array.prototype.slice.call(arguments,1))};a.arraySet2=function(b,d,c){var e=a._flatIndex(b,c);b[e]=d};a.arraySet=function(){return a.arraySet2(arguments[0],arguments[arguments.length-1],Array.prototype.slice.call(arguments,1,arguments.length-1))};a.arrayRank=function(a){return a._sizes?a._sizes.length:1};a.arrayLength=function(a,b){if(b>=(a._sizes?a._sizes.length:1))throw new e("Invalid dimension");return a._sizes?a._sizes[b]:a.length};a.arrayExtract=function(d,b,c){return!a.isValue(c)?d.slice(b):d.slice(b,b+c)};a.arrayAddRange=function(d,c){if(c instanceof Array)d.push.apply(d,c);else{var b=a.getEnumerator(c);try{while(b.moveNext())a.add(d,b.current())}finally{a.isInstanceOfType(b,i)&&a.cast(b,i).dispose()}}};a.arrayClone=function(a){return a.length===1?[a[0]]:Array.apply(null,a)};a.arrayPeekFront=function(a){if(a.length)return a[0];throw new g("Array is empty");};a.arrayPeekBack=function(a){if(a.length)return a[a.length-1];throw new g("Array is empty");};a.indexOfArray=function(d,e,c){c=c||0;for(var b=c;b<d.length;b++)if(a.staticEquals(d[b],e))return b;return-1};a.arrayInsertRange=function(d,c,b){if(b instanceof Array)if(c===0)d.unshift.apply(d,b);else for(var f=0;f<b.length;f++)d.splice(c+f,0,b[f]);else{var e=a.getEnumerator(b);try{while(e.moveNext()){d.insert(c,e.current());c++}}finally{a.isInstanceOfType(e,i)&&a.cast(e,i).dispose()}}};if(!Array.prototype.map)Array.prototype.map=function(d,e){for(var b=this.length,c=new Array(b),a=0;a<b;a++)if(a in this)c[a]=d.call(e,this[a],a,this);return c};a.arrayRemoveRange=function(c,b,a){c.splice(b,a)};if(!Array.prototype.some)Array.prototype.some=function(b,c){for(var d=this.length,a=0;a<d;a++)if(a in this&&b.call(c,this[a],a,this))return true;return false};a.arrayFromEnumerable=function(c){if(!a.isValue(c))return null;var b=a.getEnumerator(c),d=[];try{while(b.moveNext())d.push(b.current())}finally{b.dispose()}return d};a.multidimArray=function(d){var a=[];a._defvalue=d;a._sizes=[arguments[1]];for(var c=arguments[1],b=2;b<arguments.length;b++){c*=arguments[b];a._sizes[b-1]=arguments[b]}a.length=c;return a};a.repeat=function(d,c){for(var a=[],b=0;b<c;b++)a.push(d);return a};a.utcNow=function(){var a=new Date;return new Date(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),a.getUTCHours(),a.getUTCMinutes(),a.getUTCSeconds(),a.getUTCMilliseconds())};a.toUTC=function(a){return new Date(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),a.getUTCHours(),a.getUTCMinutes(),a.getUTCSeconds(),a.getUTCMilliseconds())};a.fromUTC=function(a){return new Date(Date.UTC(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes(),a.getSeconds(),a.getMilliseconds()))};a.today=function(){var a=new Date;return new Date(a.getFullYear(),a.getMonth(),a.getDate())};a.formatDate=function(c,b){return a.isNullOrUndefined(b)||b.length==0||b=="i"?c.toString():b=="id"?c.toDateString():b=="it"?c.toTimeString():a._netFormatDate(c,b,false)};a.localeFormatDate=function(c,b){return a.isNullOrUndefined(b)||b.length==0||b=="i"?c.toLocaleString():b=="id"?c.toLocaleDateString():b=="it"?c.toLocaleTimeString():a._netFormatDate(c,b,true)};a._netFormatDate=function(c,e,k){var d=k?h.currentCulture.dateTimeFormat:h.invariantCulture.dateTimeFormat;if(e.length==1)switch(e){case"f":e=d.longDatePattern+" "+d.shortTimePattern;break;case"F":e=d.dateTimePattern;break;case"d":e=d.shortDatePattern;break;case"D":e=d.longDatePattern;break;case"t":e=d.shortTimePattern;break;case"T":e=d.longTimePattern;break;case"g":e=d.shortDatePattern+" "+d.shortTimePattern;break;case"G":e=d.shortDatePattern+" "+d.longTimePattern;break;case"R":case"r":d=h.InvariantCulture.dateTimeFormat;e=d.gmtDateTimePattern;break;case"u":e=d.universalDateTimePattern;break;case"U":e=d.dateTimePattern;c=new Date(c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate(),c.getUTCHours(),c.getUTCMinutes(),c.getUTCSeconds(),c.getUTCMilliseconds());break;case"s":e=d.sortableDateTimePattern}if(e.charAt(0)=="%")e=e.substr(1);if(!Date._formatRE)Date._formatRE=/'.*?[^\\]'|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z/g;var i=Date._formatRE,j=new V;i.lastIndex=0;while(true){var l=i.lastIndex,g=i.exec(e);j.append(e.slice(l,g?g.index:e.length));if(!g)break;var f=g[0],b=f;switch(f){case"dddd":b=d.dayNames[c.getDay()];break;case"ddd":b=d.shortDayNames[c.getDay()];break;case"dd":b=a.padLeftString(c.getDate().toString(),2,48);break;case"d":b=c.getDate();break;case"MMMM":b=d.monthNames[c.getMonth()];break;case"MMM":b=d.shortMonthNames[c.getMonth()];break;case"MM":b=a.padLeftString((c.getMonth()+1).toString(),2,48);break;case"M":b=c.getMonth()+1;break;case"yyyy":b=c.getFullYear();break;case"yy":b=a.padLeftString((c.getFullYear()%100).toString(),2,48);break;case"y":b=c.getFullYear()%100;break;case"h":case"hh":b=c.getHours()%12;if(!b)b="12";else if(f=="hh")b=a.padLeftString(b.toString(),2,48);break;case"HH":b=a.padLeftString(c.getHours().toString(),2,48);break;case"H":b=c.getHours();break;case"mm":b=a.padLeftString(c.getMinutes().toString(),2,48);break;case"m":b=c.getMinutes();break;case"ss":b=a.padLeftString(c.getSeconds().toString(),2,48);break;case"s":b=c.getSeconds();break;case"t":case"tt":b=c.getHours()<12?d.amDesignator:d.pmDesignator;if(f=="t")b=b.charAt(0);break;case"fff":b=a.padLeftString(c.getMilliseconds().toString(),3,48);break;case"ff":b=a.padLeftString(c.getMilliseconds().toString(),3).substr(0,2);break;case"f":b=a.padLeftString(c.getMilliseconds().toString(),3).charAt(0);break;case"z":b=c.getTimezoneOffset()/60;b=(b>=0?"-":"+")+Math.floor(Math.abs(b));break;case"zz":case"zzz":b=c.getTimezoneOffset()/60;b=(b>=0?"-":"+")+Math.floor(a.padLeftString(Math.abs(b)).toString(),2,48);if(f=="zzz")b+=d.timeSeparator+Math.abs(a.padLeftString(c.getTimezoneOffset()%60).toString(),2,48);break;default:if(b.charAt(0)=="'")b=b.substr(1,b.length-2).replace(/\\'/g,"'")}j.append(b)}return j.toString()};a._parseExactDate=function(c,j,p,u){p=p&&p.getFormat(n)||h.currentCulture.dateTimeFormat;var q=p.amDesignator,r=p.pmDesignator,t=function(b){for(var c="1234567890",a=0;a<b.length;a++)if(c.indexOf(b.charAt(a))==-1)return false;return true},i=function(f,d,c,e){for(var b=e;b>=c;b--){var a=f.substring(d,d+b);if(a.length<c)return null;if(t(a))return a}return null};c=c+"";j=j+"";var b=0,o=0,s="",a="",e=0,f=1,g=1,d=0,l=0,k=0,m="";while(o<j.length){s=j.charAt(o);a="";while(j.charAt(o)==s&&o<j.length)a+=j.charAt(o++);if(a=="yyyy"||a=="yy"||a=="y"){if(a=="yyyy")e=i(c,b,4,4);if(a=="yy")e=i(c,b,2,2);if(a=="y")e=i(c,b,2,4);if(e==null)return null;b+=e.length;if(e.length==2)if(e>30)e=1900+(e-0);else e=2e3+(e-0)}else if(a=="MM"||a=="M"){f=i(c,b,a.length,2);if(f==null||f<1||f>12)return null;b+=f.length}else if(a=="dd"||a=="d"){g=i(c,b,a.length,2);if(g==null||g<1||g>31)return null;b+=g.length}else if(a=="hh"||a=="h"){d=i(c,b,a.length,2);if(d==null||d<1||d>12)return null;b+=d.length}else if(a=="HH"||a=="H"){d=i(c,b,a.length,2);if(d==null||d<0||d>23)return null;b+=d.length}else if(a=="mm"||a=="m"){l=i(c,b,a.length,2);if(l==null||l<0||l>59)return null;b+=l.length}else if(a=="ss"||a=="s"){k=i(c,b,a.length,2);if(k==null||k<0||k>59)return null;b+=k.length}else if(a=="t"){if(c.substring(b,b+1).toLowerCase()==q.charAt(0).toLowerCase())m=q;else if(c.substring(b,b+1).toLowerCase()==r.charAt(0).toLowerCase())m=r;else return null;b+=1}else if(a=="tt"){if(c.substring(b,b+2).toLowerCase()==q.toLowerCase())m=q;else if(c.substring(b,b+2).toLowerCase()==r.toLowerCase())m=r;else return null;b+=2}else if(c.substring(b,b+a.length)!=a)return null;else b+=a.length}if(b!=c.length)return null;if(f==2)if(e%4==0&&e%100!=0||e%400==0){if(g>29)return null}else if(g>28)return null;if(f==4||f==6||f==9||f==11)if(g>30)return null;if(d<12&&m==r)d=d-0+12;else if(d>11&&m==q)d-=12;return u?new Date(Date.UTC(e,f-1,g,d,l,k)):new Date(e,f-1,g,d,l,k)};a.parseExactDate=function(d,c,b){return a._parseExactDate(d,c,b,false)};a.parseExactDateUTC=function(d,c,b){return a._parseExactDate(d,c,b,true)};a._delegateContains=function(b,d,c){for(var a=0;a<b.length;a+=2)if(b[a]===d&&b[a+1]===c)return true;return false};a._mkdel=function(b){var c=function(){if(b.length==2)return b[1].apply(b[0],arguments);else{for(var d=a.arrayClone(b),c=0;c<d.length;c+=2)a._delegateContains(b,d[c],d[c+1])&&d[c+1].apply(d[c],arguments);return null}};c._targets=b;return c};a.mkdel=function(c,b){return!c?b:a._mkdel([c,b])};a.delegateCombine=function(b,c){if(!b)return!c._targets?a.mkdel(null,c):c;if(!c)return!b._targets?a.mkdel(null,b):b;var d=b._targets?b._targets:[null,b],e=c._targets?c._targets:[null,c];return a._mkdel(d.concat(e))};a.delegateRemove=function(c,b){if(!c||c===b)return null;if(!b)return c;var d=c._targets,g=null,f;if(b._targets){g=b._targets[0];f=b._targets[1]}else f=b;for(var e=0;e<d.length;e+=2)if(d[e]===g&&d[e+1]===f){if(d.length==2)return null;var h=a.arrayClone(d);h.splice(e,2);return a._mkdel(h)}return c};a.delegateEquals=function(a,b){if(a===b)return true;if(!a._targets&&!b._targets)return false;var d=a._targets||[null,a],e=b._targets||[null,b];if(d.length!=e.length)return false;for(var c=0;c<d.length;c++)if(d[c]!==e[c])return false;return true};a.delegateClone=function(b){return b._targets?a._mkdel(b._targets):function(){return b.apply(this,arguments)}};a.thisFix=function(a){return function(){for(var c=[this],b=0;b<arguments.length;b++)c.push(arguments[b]);return a.apply(a,c)}};a.getInvocationList=function(b){if(!b._targets)return[b];for(var d=[],c=0;c<b._targets.length;c+=2)d.push(a.mkdel(b._targets[c],b._targets[c+1]));return d};a.regexpEscape=function(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")};a.Debug=j.Debug||function(){};a.Debug.__typeName="Debug";if(!a.Debug.writeln)a.Debug.writeln=function(a){if(j.console){if(j.console.debug){j.console.debug(a);return}else if(j.console.log){j.console.log(a);return}}else if(j.opera&&j.opera.postError){j.opera.postError(a);return}};a.Debug._fail=function(b){a.Debug.writeln(b)};a.Debug.assert=function(c,b){if(!c){b="Assert failed: "+b;confirm(b+"\r\n\r\nBreak into debugger?")&&a.Debug._fail(b)}};a.Debug.fail=function(b){a.Debug._fail(b)};var D=function(){};D.__typeName="ss.Enum";a.Enum=D;a.initClass(D,a,{});D.parse=function(f,k){var b=f.prototype;if(!a.isFlags(f)){for(var c in b)if(c===k)return b[c]}else{for(var i=k.split("|"),j=0,g=true,d=i.length-1;d>=0;d--){var l=i[d].trim(),h=false;for(var c in b)if(c===l){j|=b[c];h=true;break}if(!h){g=false;break}}if(g)return j}throw new e("Invalid Enumeration Value");};D.toString=function(g,f){var b=g.prototype;if(!a.isFlags(g)||f===0){for(var c in b)if(b[c]===f)return c;throw new e("Invalid Enumeration Value");}else{var d=[];for(var c in b)b[c]&f&&a.add(d,c);if(!d.length)throw new e("Invalid Enumeration Value");return d.join(" | ")}};D.getValues=function(d){var b=[],a=d.prototype;for(var c in a)a.hasOwnProperty(c)&&b.push(a[c]);return b};var h=function(c,b,a){this.name=c;this.numberFormat=b;this.dateTimeFormat=a};h.__typeName="ss.CultureInfo";a.CultureInfo=h;a.initClass(h,a,{getFormat:function(a){switch(a){case o:return this.numberFormat;case n:return this.dateTimeFormat;default:return null}}},null,[z]);h.invariantCulture=new h("en-US",o.invariantInfo,n.invariantInfo);h.currentCulture=h.invariantCulture;var C=function(){};C.__typeName="ss.IEnumerator";a.IEnumerator=C;a.initInterface(C,a,{current:null,moveNext:null,reset:null},[i]);var s=function(){};s.__typeName="ss.IEnumerable";a.IEnumerable=s;a.initInterface(s,a,{getEnumerator:null});a.getEnumerator=function(a){return a.getEnumerator?a.getEnumerator():new T(a)};var B=function(){};B.__typeName="ss.ICollection";a.ICollection=B;a.initInterface(B,a,{get_count:null,add:null,clear:null,contains:null,remove:null});a.count=function(a){return a.get_count?a.get_count():a.length};a.add=function(b,c){if(b.add)b.add(c);else if(a.isArray(b))b.push(c);else throw new q;};a.clear=function(b){if(b.clear)b.clear();else if(a.isArray(b))b.length=0;else throw new q;};a.remove=function(b,d){if(b.remove)return b.remove(d);else if(a.isArray(b)){var c=a.indexOf(b,d);if(c>=0){b.splice(c,1);return true}return false}else throw new q;};a.contains=function(b,c){return b.contains?b.contains(c):a.indexOf(b,c)>=0};var u=function(a){this.ticks=a||0};u.getDefaultValue=u.createInstance=function(){return new u(0)};u.__typeName="ss.TimeSpan";a.TimeSpan=u;a.initClass(u,a,{compareTo:function(a){return this.ticks<a.ticks?-1:this.ticks>a.ticks?1:0},equals:function(b){return a.isInstanceOfType(b,u)&&b.ticks===this.ticks},equalsT:function(a){return a.ticks===this.ticks},toString:function(){var d=function(c,b){return a.padLeftString(c+"",b||2,48)},b=this.ticks,c="";if(Math.abs(b)>=8.64e11){c+=d(b/8.64e11|0)+".";b%=8.64e11}c+=d(b/3.6e10|0)+":";b%=3.6e10;c+=d(b/6e8|0)+":";b%=6e8;c+=d(b/1e7|0);b%=1e7;if(b>0)c+="."+d(b,7);return c}},null,[r,t]);u.__class=false;var R=function(){};R.__typeName="ss.IEqualityComparer";a.IEqualityComparer=R;a.initInterface(R,a,{areEqual:null,getObjectHashCode:null});var X=function(){};X.__typeName="ss.IComparer";a.IComparer=X;a.initInterface(X,a,{compare:null});a.unbox=function(b){if(!a.isValue(b))throw new g("Nullable object must have a value.");return b};var c=function(d){var b=function(){};b.isInstanceOfType=function(b){return a.isInstanceOfType(b,d)};a.registerGenericClassInstance(b,c,[d],{},function(){return null},function(){return[]});return b};c.__typeName="ss.Nullable$1";a.Nullable$1=c;a.initGenericClass(c,a,1);c.eq=function(b,c){return!a.isValue(b)?!a.isValue(c):b===c};c.ne=function(b,c){return!a.isValue(b)?a.isValue(c):b!==c};c.le=function(b,c){return a.isValue(b)&&a.isValue(c)&&b<=c};c.ge=function(b,c){return a.isValue(b)&&a.isValue(c)&&b>=c};c.lt=function(b,c){return a.isValue(b)&&a.isValue(c)&&b<c};c.gt=function(b,c){return a.isValue(b)&&a.isValue(c)&&b>c};c.sub=function(b,c){return a.isValue(b)&&a.isValue(c)?b-c:null};c.add=function(b,c){return a.isValue(b)&&a.isValue(c)?b+c:null};c.mod=function(b,c){return a.isValue(b)&&a.isValue(c)?b%c:null};c.div=function(b,c){return a.isValue(b)&&a.isValue(c)?b/c:null};c.mul=function(b,c){return a.isValue(b)&&a.isValue(c)?b*c:null};c.band=function(b,c){return a.isValue(b)&&a.isValue(c)?b&c:null};c.bor=function(b,c){return a.isValue(b)&&a.isValue(c)?b|c:null};c.xor=function(b,c){return a.isValue(b)&&a.isValue(c)?b^c:null};c.shl=function(b,c){return a.isValue(b)&&a.isValue(c)?b<<c:null};c.srs=function(b,c){return a.isValue(b)&&a.isValue(c)?b>>c:null};c.sru=function(b,c){return a.isValue(b)&&a.isValue(c)?b>>>c:null};c.and=function(a,b){return a===true&&b===true?true:a===false||b===false?false:null};c.or=function(a,b){return a===true||b===true?true:a===false&&b===false?false:null};c.not=function(b){return a.isValue(b)?!b:null};c.neg=function(b){return a.isValue(b)?-b:null};c.pos=function(b){return a.isValue(b)?+b:null};c.cpl=function(b){return a.isValue(b)?~b:null};c.lift=function(){for(var b=0;b<arguments.length;b++)if(!a.isValue(arguments[b]))return null;return arguments[0].apply(null,Array.prototype.slice.call(arguments,1))};var Z=function(){};Z.__typeName="ss.IList";a.IList=Z;a.initInterface(Z,a,{get_item:null,set_item:null,indexOf:null,insert:null,removeAt:null},[B,s]);a.getItem=function(a,b){return a.get_item?a.get_item(b):a[b]};a.setItem=function(a,b,c){a.set_item?a.set_item(b,c):(a[b]=c)};a.indexOf=function(b,d){if(a.isArrayOrTypedArray(b)){for(var c=0;c<b.length;c++)if(a.staticEquals(b[c],d))return c;return-1}else return b.indexOf(d)};a.insert=function(b,c,d){if(b.insert)b.insert(c,d);else if(a.isArray(b))b.splice(c,0,d);else throw new q;};a.removeAt=function(b,c){if(b.removeAt)b.removeAt(c);else if(a.isArray(b))b.splice(c,1);else throw new q;};var G=function(){};G.__typeName="ss.IDictionary";a.IDictionary=G;a.initInterface(G,a,{get_item:null,set_item:null,get_keys:null,get_values:null,containsKey:null,add:null,remove:null,tryGetValue:null},[s]);var m=function(){};m.__typeName="ss.Int32";a.Int32=m;a.initClass(m,a,{},Object,[t,r,A]);m.__class=false;m.isInstanceOfType=function(a){return typeof a==="number"&&isFinite(a)&&Math.round(a,0)==a};m.getDefaultValue=m.createInstance=function(){return 0};m.div=function(c,b){if(!a.isValue(c)||!a.isValue(b))return null;if(b===0)throw new O;return m.trunc(c/b)};m.trunc=function(b){return a.isValue(b)?b>0?Math.floor(b):Math.ceil(b):null};m.tryParse=function(c,b,e,d){b.$=0;if(!/^[+-]?[0-9]+$/.test(c))return 0;var a=parseInt(c,10);if(a<e||a>d)return false;b.$=a;return true};var I=function(){};I.__typeName="ss.JsDate";a.JsDate=I;a.initClass(I,a,{},Object,[t,r]);I.createInstance=function(){return new Date};I.isInstanceOfType=function(a){return a instanceof Date};var T=function(a){this._array=a;this._index=-1};T.__typeName="ss.ArrayEnumerator";a.ArrayEnumerator=T;a.initClass(T,a,{moveNext:function(){this._index++;return this._index<this._array.length},reset:function(){this._index=-1},current:function(){if(this._index<0||this._index>=this._array.length)throw"Invalid operation";return this._array[this._index]},dispose:function(){}},null,[C,i]);var cb=function(a){this._keys=Object.keys(a);this._index=-1;this._object=a};cb.__typeName="ss.ObjectEnumerator";a.ObjectEnumerator=cb;a.initClass(cb,a,{moveNext:function(){this._index++;return this._index<this._keys.length},reset:function(){this._index=-1},current:function(){if(this._index<0||this._index>=this._keys.length)throw new g("Invalid operation");var a=this._keys[this._index];return{key:a,value:this._object[a]}},dispose:function(){}},null,[C,i]);var x=function(){};x.__typeName="ss.EqualityComparer";a.EqualityComparer=x;a.initClass(x,a,{areEqual:function(b,c){return a.staticEquals(b,c)},getObjectHashCode:function(b){return a.isValue(b)?a.getHashCode(b):0}},null,[R]);x.def=new x;var H=function(a){this.f=a};H.__typeName="ss.Comparer";a.Comparer=H;a.initClass(H,a,{compare:function(a,b){return this.f(a,b)}},null,[X]);H.def=new H(function(c,b){return!a.isValue(c)?!a.isValue(b)?0:-1:!a.isValue(b)?1:a.compare(c,b)});var F=function(b,a){this._dict=b;this._isKeys=a},W=function(d,b){var c=function(b,g){this.countField=0;this.buckets={};this.comparer=g||x.def;if(a.isInstanceOfType(b,G)){var c=a.getEnumerator(b);try{while(c.moveNext()){var f=c.current();this.add(f.key,f.value)}}finally{a.isInstanceOfType(c,i)&&a.cast(c,i).dispose()}}else if(b)for(var e=Object.keys(b),d=0;d<e.length;d++)this.add(e[d],b[e[d]])};a.registerGenericClassInstance(c,W,[d,b],{_setOrAdd:function(b,g,h){var f=this.comparer.getObjectHashCode(b),d={key:b,value:g};if(this.buckets.hasOwnProperty(f)){for(var a=this.buckets[f],c=0;c<a.length;c++)if(this.comparer.areEqual(a[c].key,b)){if(h)throw new e("Key "+b+" already exists.");a[c]=d;return}a.push(d)}else this.buckets[f]=[d];this.countField++},add:function(b,a){this._setOrAdd(b,a,true)},set_item:function(b,a){this._setOrAdd(b,a,false)},_get:function(e){var d=this.comparer.getObjectHashCode(e);if(this.buckets.hasOwnProperty(d))for(var c=this.buckets[d],b=0;b<c.length;b++){var a=c[b];if(this.comparer.areEqual(a.key,e))return a.value!==undefined?a.value:null}return undefined},get_item:function(a){var b=this._get(a);if(b===undefined)throw new Q("Key "+a+" does not exist.");return b},tryGetValue:function(e,c){var d=this._get(e);if(d!==undefined){c.$=d;return true}else{c.$=a.getDefaultValue(b);return false}},containsKey:function(d){var c=this.comparer.getObjectHashCode(d);if(!this.buckets.hasOwnProperty(c))return false;for(var b=this.buckets[c],a=0;a<b.length;a++)if(this.comparer.areEqual(b[a].key,d))return true;return false},clear:function(){this.countField=0;this.buckets={}},remove:function(d){var c=this.comparer.getObjectHashCode(d);if(!this.buckets.hasOwnProperty(c))return false;for(var a=this.buckets[c],b=0;b<a.length;b++)if(this.comparer.areEqual(a[b].key,d)){a.splice(b,1);if(a.length==0)delete this.buckets[c];this.countField--;return true}return false},get_count:function(){return this.countField},_getEnumerator:function(d){var c=Object.keys(this.buckets),a=-1,b;return new M(function(){if(a<0||b>=this.buckets[c[a]].length-1){b=-1;a++}if(a>=c.length)return false;b++;return true},function(){return d(this.buckets[c[a]][b])},null,this)},get_keys:function(){return new F(this,true)},get_values:function(){return new F(this,false)},getEnumerator:function(){return this._getEnumerator(function(a){return a})}},function(){return null},function(){return[G,s]});return c};W.__typeName="ss.Dictionary$2";a.Dictionary$2=W;a.initGenericClass(W,a,2);F.__typeName="ss.$DictionaryCollection";a.$DictionaryCollection=F;a.initClass(F,a,{get_count:function(){return this._dict.get_count()},contains:function(d){if(this._isKeys)return this._dict.containsKey(d);else{for(var c in this._dict.buckets)if(this._dict.buckets.hasOwnProperty(c))for(var b=this._dict.buckets[c],a=0;a<b.length;a++)if(this._dict.comparer.areEqual(b[a].value,d))return true;return false}},getEnumerator:function(){return this._dict._getEnumerator(this._isKeys?function(a){return a.key}:function(a){return a.value})},add:function(){throw new g("Collection is read-only");},clear:function(){throw new g("Collection is read-only");},remove:function(){throw new g("Collection is read-only");}},null,[s,B]);var i=function(){};i.__typeName="ss.IDisposable";a.IDisposable=i;a.initInterface(i,a,{dispose:null});var V=function(b){this._parts=a.isValue(b)&&b!=""?[b]:[];this.length=a.isValue(b)?b.length:0};V.__typeName="ss.StringBuilder";a.StringBuilder=V;a.initClass(V,a,{append:function(b){if(a.isValue(b)){var c=b.toString();a.add(this._parts,c);this.length+=c.length}return this},appendChar:function(a){return this.append(String.fromCharCode(a))},appendLine:function(a){this.append(a);this.append("\r\n");return this},appendLineChar:function(a){return this.appendLine(String.fromCharCode(a))},clear:function(){this._parts=[];this.length=0},toString:function(){return this._parts.join("")}});var Y=function(e){var a=e===undefined?parseInt(Date.now()%2147483648):parseInt(Math.abs(e));this.inext=0;this.inextp=21;this.seedArray=new Array(56);for(var b=0;b<56;b++)this.seedArray[b]=0;a=161803398-a;if(a<0)a+=2147483648;this.seedArray[55]=a;for(var d=1,b=1;b<55;b++){var f=21*b%55;this.seedArray[f]=d;d=a-d;if(d<0)d+=2147483648;a=this.seedArray[f]}for(var g=1;g<5;g++)for(var c=1;c<56;c++){this.seedArray[c]-=this.seedArray[1+(c+30)%55];if(this.seedArray[c]<0)this.seedArray[c]+=2147483648}};Y.__typeName="ss.Random";a.Random=Y;a.initClass(Y,a,{next:function(){return this.sample()*2147483648|0},nextMax:function(a){return this.sample()*a|0},nextMinMax:function(a,b){return this.sample()*(b-a)+a|0},nextBytes:function(b){for(var a=0;a<b.length;a++)b[a]=this.sample()*256|0},nextDouble:function(){return this.sample()},sample:function(){if(++this.inext>=56)this.inext=1;if(++this.inextp>=56)this.inextp=1;var a=this.seedArray[this.inext]-this.seedArray[this.inextp];if(a<0)a+=2147483648;this.seedArray[this.inext]=a;return a*(1/2147483648)}});var w=function(){};w.__typeName="ss.EventArgs";a.EventArgs=w;a.initClass(w,a,{});w.Empty=new w;var b=function(b,a){this._message=b||"An error occurred.";this._innerException=a||null;this._error=new Error};b.__typeName="ss.Exception";a.Exception=b;a.initClass(b,a,{get_message:function(){return this._message},get_innerException:function(){return this._innerException},get_stack:function(){return this._error.stack}});b.wrap=function(c){return a.isInstanceOfType(c,b)?c:c instanceof TypeError?new p(c.message,new y(c)):c instanceof RangeError?new K(null,c.message,new y(c)):c instanceof Error?new y(c):new b(c.toString())};var bb=function(c,a){b.call(this,c||"The method or operation is not implemented.",a)};bb.__typeName="ss.NotImplementedException";a.NotImplementedException=bb;a.initClass(bb,a,{},b);var q=function(c,a){b.call(this,c||"Specified method is not supported.",a)};q.__typeName="ss.NotSupportedException";a.NotSupportedException=q;a.initClass(q,a,{},b);var v=function(d,c){this.innerExceptions=a.isValue(c)?a.arrayFromEnumerable(c):[];b.call(this,d||"One or more errors occurred.",this.innerExceptions.length?this.innerExceptions[0]:null)};v.__typeName="ss.AggregateException";a.AggregateException=v;a.initClass(v,a,{flatten:function(){for(var b=[],d=0;d<this.innerExceptions.length;d++){var c=this.innerExceptions[d];if(a.isInstanceOfType(c,v))b.push.apply(b,c.flatten().innerExceptions);else b.push(c)}return new v(this._message,b)}},b);var S=function(c,e,d){b.call(this,e||(c.length&&c[0]?c[0].toString():"An error occurred"),d);this.arguments=a.arrayClone(c)};S.__typeName="ss.PromiseException";a.PromiseException=S;a.initClass(S,a,{get_arguments:function(){return this._arguments}},b);var y=function(a,d,c){b.call(this,d||a.message,c);this.error=a};y.__typeName="ss.JsErrorException";a.JsErrorException=y;a.initClass(y,a,{get_stack:function(){return this.error.stack}},b);var e=function(d,c,a){b.call(this,d||"Value does not fall within the expected range.",a);this.paramName=c||null};e.__typeName="ss.ArgumentException";a.ArgumentException=e;a.initClass(e,a,{},b);var N=function(b,a,c){if(!a){a="Value cannot be null.";if(b)a+="\nParameter name: "+b}e.call(this,a,b,c)};N.__typeName="ss.ArgumentNullException";a.ArgumentNullException=N;a.initClass(N,a,{},e);var K=function(b,a,c,d){if(!a){a="Value is out of range.";if(b)a+="\nParameter name: "+b}e.call(this,a,b,c);this.actualValue=d||null};K.__typeName="ss.ArgumentOutOfRangeException";a.ArgumentOutOfRangeException=K;a.initClass(K,a,{},e);var U=function(c,a){b.call(this,c||"Invalid format.",a)};U.__typeName="ss.FormatException";a.FormatException=U;a.initClass(U,a,{},b);var O=function(c,a){b.call(this,c||"Division by 0.",a)};O.__typeName="ss.DivideByZeroException";a.DivideByZeroException=O;a.initClass(O,a,{},b);var P=function(c,a){b.call(this,c||"The cast is not valid.",a)};P.__typeName="ss.InvalidCastException";a.InvalidCastException=P;a.initClass(P,a,{},b);var g=function(c,a){b.call(this,c||"Operation is not valid due to the current state of the object.",a)};g.__typeName="ss.InvalidOperationException";a.InvalidOperationException=g;a.initClass(g,a,{},b);var p=function(c,a){b.call(this,c||"Object is null.",a)};p.__typeName="ss.NullReferenceException";a.NullReferenceException=p;a.initClass(p,a,{},b);var Q=function(c,a){b.call(this,c||"Key not found.",a)};Q.__typeName="ss.KeyNotFoundException";a.KeyNotFoundException=Q;a.initClass(Q,a,{},b);var L=function(c,a){b.call(this,c||"Ambiguous match.",a)};L.__typeName="ss.AmbiguousMatchException";a.AmbiguousMatchException=L;a.initClass(L,a,{},b);var ab=function(a,b){this._getEnumerator=a;this._this=b};ab.__typeName="ss.IteratorBlockEnumerable";a.IteratorBlockEnumerable=ab;a.initClass(ab,a,{getEnumerator:function(){return this._getEnumerator.call(this._this)}},null,[s]);var M=function(b,a,c,d){this._moveNext=b;this._getCurrent=a;this._dispose=c;this._this=d};M.__typeName="ss.IteratorBlockEnumerator";a.IteratorBlockEnumerator=M;a.initClass(M,a,{moveNext:function(){try{return this._moveNext.call(this._this)}catch(a){this._dispose&&this._dispose.call(this._this);throw a;}},current:function(){return this._getCurrent.call(this._this)},reset:function(){throw new q("Reset is not supported.");},dispose:function(){this._dispose&&this._dispose.call(this._this)}},null,[C,i]);var fb=function(a){this._valueFactory=a;this.isValueCreated=false};fb.__typeName="ss.Lazy";a.Lazy=fb;a.initClass(fb,a,{value:function(){if(!this.isValueCreated){this._value=this._valueFactory();delete this._valueFactory;this.isValueCreated=true}return this._value}});var k=function(a,b){this._action=a;this._state=b;this.exception=null;this.status=0;this._thens=[];this._result=null};k.delay=function(b){var a=new l;setTimeout(function(){a.setResult(0)},b);return a.task};k.fromResult=function(b){var a=new k;a.status=5;a._result=b;return a};k.run=function(c){var a=new l;setTimeout(function(){try{a.setResult(c())}catch(d){a.setException(b.wrap(d))}},0);return a.task};k.whenAll=function(b){var c=new l;if(b.length===0)c.setResult([]);else for(var h=new Array(b.length),i=b.length,f=false,d=[],e=0;e<b.length;e++)(function(e){b[e].continueWith(function(b){switch(b.status){case 5:h[e]=b.getResult();break;case 6:f=true;break;case 7:a.arrayAddRange(d,b.exception.innerExceptions);break;default:throw new g("Invalid task status "+b.status);}if(--i===0)if(d.length>0)c.setException(d);else if(f)c.setCanceled();else c.setResult(h)})})(e);return c.task};k.whenAny=function(b){if(!b.length)throw new e("Must wait for at least one task","tasks");for(var a=new l,c=0;c<b.length;c++)b[c].continueWith(function(b){switch(b.status){case 5:a.trySetResult(b);break;case 6:a.trySetCanceled();break;case 7:a.trySetException(b.exception.innerExceptions);break;default:throw new g("Invalid task status "+b.status);}});return a.task};k.fromDoneCallback=function(e,b,d){var c=new l,a;if(typeof b==="number"){a=Array.prototype.slice.call(arguments,3);if(b<0)b+=a.length+1}else{a=Array.prototype.slice.call(arguments,2);d=b;b=a.length}var f=function(a){c.setResult(a)};a=a.slice(0,b).concat(f,a.slice(b));e[d].apply(e,a);return c.task};k.fromPromise=function(c,a){var b=new l;if(typeof a==="number")a=function(a){return function(){return arguments[a>=0?a:arguments.length+a]}}(a);else if(typeof a!=="function")a=function(){return Array.prototype.slice.call(arguments,0)};c.then(function(){b.setResult(typeof a==="function"?a.apply(null,arguments):null)},function(){b.setException(new S(Array.prototype.slice.call(arguments,0)))});return b.task};k.fromNode=function(f,c,e){var d=new l,a;if(typeof c==="function")a=Array.prototype.slice.call(arguments,3);else{a=Array.prototype.slice.call(arguments,2);e=c;c=function(){return arguments[0]}}var g=function(a){if(a)d.setException(b.wrap(a));else d.setResult(c.apply(null,Array.prototype.slice.call(arguments,1)))};a.push(g);f[e].apply(f,a);return d.task};k.__typeName="ss.Task";a.Task=k;a.initClass(k,a,{continueWith:function(d){var a=new l,e=this,c=function(){try{a.setResult(d(e))}catch(c){a.setException(b.wrap(c))}};if(this.isCompleted())setTimeout(c,0);else this._thens.push(c);return a.task},start:function(){if(this.status!==0)throw new g("Task was already started.");var a=this;this.status=3;setTimeout(function(){try{var c=a._action(a._state);delete a._action;delete a._state;a._complete(c)}catch(d){a._fail(new v(null,[b.wrap(d)]))}},0)},_runCallbacks:function(){for(var a=0;a<this._thens.length;a++)this._thens[a](this);delete this._thens},_complete:function(a){if(this.isCompleted())return false;this._result=a;this.status=5;this._runCallbacks();return true},_fail:function(a){if(this.isCompleted())return false;this.exception=a;this.status=7;this._runCallbacks();return true},_cancel:function(){if(this.isCompleted())return false;this.status=6;this._runCallbacks();return true},isCanceled:function(){return this.status===6},isCompleted:function(){return this.status>=5},isFaulted:function(){return this.status===7},_getResult:function(a){switch(this.status){case 5:return this._result;case 6:throw new g("Task was cancelled.");case 7:throw a?this.exception.innerExceptions[0]:this.exception;default:throw new g("Task is not yet completed.");}},getResult:function(){return this._getResult(false)},getAwaitedResult:function(){return this._getResult(true)},dispose:function(){}},null,[i]);var eb=function(){};eb.__typeName="ss.TaskStatus";a.TaskStatus=eb;a.initEnum(eb,a,{created:0,running:3,ranToCompletion:5,canceled:6,faulted:7});var l=function(){this.task=new k;this.task.status=3};l.__typeName="ss.TaskCompletionSource";a.TaskCompletionSource=l;a.initClass(l,a,{setCanceled:function(){if(!this.task._cancel())throw new g("Task was already completed.");},setResult:function(a){if(!this.task._complete(a))throw new g("Task was already completed.");},setException:function(a){if(!this.trySetException(a))throw new g("Task was already completed.");},trySetCanceled:function(){return this.task._cancel()},trySetResult:function(a){return this.task._complete(a)},trySetException:function(c){if(a.isInstanceOfType(c,b))c=[c];return this.task._fail(new v(null,c))}});var db=function(){w.call(this);this.cancel=false};db.__typeName="ss.CancelEventArgs";a.CancelEventArgs=db;a.initClass(db,a,{},w);var d=function(){};d.$valid=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/ig;d.$split=/^(.{8})(.{4})(.{4})(.{4})(.{12})$/;d.empty="00000000-0000-0000-0000-000000000000";d.$rng=new Y;d.__typeName="ss.Guid";a.Guid=d;a.initClass(d,a,{},Object,[t,r]);d.__class=false;d.isInstanceOfType=function(a){return typeof a==="string"&&a.match(d.$valid)};d.getDefaultValue=d.createInstance=function(){return d.empty};d.parse=function(c,b){var a={};if(d.tryParse(c,b,a))return a.$;throw new U("Unable to parse UUID");};d.tryParse=function(b,c,f){f.$=d.empty;if(!a.isValue(b))throw new N("uuid");if(!c){var e=/^[{(]?([0-9a-f]{8})-?([0-9a-f]{4})-?([0-9a-f]{4})-?([0-9a-f]{4})-?([0-9a-f]{12})[)}]?$/ig.exec(b);if(e){f.$=e.slice(1).join("-").toLowerCase();return true}}else{if(c==="N"){var e=d.$split.exec(b);if(!e)return false;b=e.slice(1).join("-")}else if(c==="B"||c==="P"){var g=c==="B";if(b[0]!==(g?"{":"(")||b[b.length-1]!==(g?"}":")"))return false;b=b.substr(1,b.length-2)}if(b.match(d.$valid)){f.$=b.toLowerCase();return true}}return false};d.format=function(a,b){switch(b){case"N":return a.replace(/-/g,"");case"B":return"{"+a+"}";case"P":return"("+a+")";default:return a}};d.fromBytes=function(b){if(!b||b.length!==16)throw new e("b","Must be 16 bytes");var c=b.map(function(b){return a.formatNumber(b&255,"x2")}).join("");return d.$split.exec(c).slice(1).join("-")};d.newGuid=function(){var a=Array(16);d.$rng.nextBytes(a);a[6]=a[6]&15|64;a[8]=a[8]&191|128;return d.fromBytes(a)};d.getBytes=function(c){for(var b=Array(16),d=c.replace(/-/g,""),a=0;a<16;a++)b[a]=parseInt(d.substr(a*2,2),16);return b};if(j.ss){for(var gb in a)if(a.hasOwnProperty(gb))j.ss[gb]=a[gb]}else j.ss=a})(global)
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/nisews.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/nisews.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/nisews.js	(revision 101)
@@ -0,0 +1,146 @@
+﻿(function() {
+	'use strict';
+	var $asm = {};
+	ss.initAssembly($asm, 'NiseWebSocket');
+	////////////////////////////////////////////////////////////////////////////////
+	// CloseEvent
+	var $CloseEvent = function(code, reason) {
+		this.code = 0;
+		this.reason = null;
+		$NiseEvent.call(this, 'close');
+		this.code = code;
+		this.reason = reason;
+	};
+	$CloseEvent.__typeName = 'CloseEvent';
+	global.CloseEvent = $CloseEvent;
+	////////////////////////////////////////////////////////////////////////////////
+	// MessageEvent
+	var $MessageEvent = function(data) {
+		this.data = null;
+		$NiseEvent.call(this, 'message');
+		this.data = data;
+	};
+	$MessageEvent.__typeName = 'MessageEvent';
+	global.MessageEvent = $MessageEvent;
+	////////////////////////////////////////////////////////////////////////////////
+	// NiseEvent
+	var $NiseEvent = function(type) {
+		this.type = null;
+		this.type = type;
+	};
+	$NiseEvent.__typeName = 'NiseEvent';
+	global.NiseEvent = $NiseEvent;
+	////////////////////////////////////////////////////////////////////////////////
+	// NiseWebSocket
+	var $NiseWebSocket = function(url) {
+		this.$_Url = null;
+		this.$_Protocols = null;
+		this.$_ReadyState = 1;
+		this.$_PollingTimer = 0;
+		this.binaryType = null;
+		this.bufferedAmount = 0;
+		this.extensions = null;
+		this.onclose = null;
+		this.onerror = null;
+		this.onmessage = null;
+		this.onopen = null;
+		this.protocol = null;
+		this.readyState = 0;
+		this.url = null;
+		var opentimer = 0;
+		this.$_ReadyState = 0;
+		this.$_Url = url.replace('ws://', 'http://');
+		opentimer = window.setTimeout(ss.mkdel(this, function() {
+			window.clearTimeout(opentimer);
+			this.$opend();
+		}), 1000);
+	};
+	$NiseWebSocket.__typeName = 'NiseWebSocket';
+	$NiseWebSocket.$ctor1 = function(url, protocols) {
+		$NiseWebSocket.call(this, url);
+		this.$_Protocols = protocols.split(String.fromCharCode(44));
+	};
+	$NiseWebSocket.$ctor2 = function(url, protocols) {
+		$NiseWebSocket.call(this, url);
+		this.$_Protocols = protocols;
+	};
+	global.NiseWebSocket = $NiseWebSocket;
+	ss.initClass($NiseEvent, $asm, {});
+	ss.initClass($CloseEvent, $asm, {}, $NiseEvent);
+	ss.initClass($MessageEvent, $asm, {}, $NiseEvent);
+	ss.initClass($NiseWebSocket, $asm, {
+		$opend: function() {
+			this.$_ReadyState = 1;
+			var oe = new $NiseEvent('open');
+			if (!ss.staticEquals(this.onopen, null)) {
+				this.onopen(oe);
+			}
+			this.$_PollingTimer = window.setInterval(ss.mkdel(this, function() {
+				$.ajax({
+					url: this.$_Url,
+					type: 'POST',
+					dataType: 'json',
+					data: '{"brk_wai":"Polling"}',
+					success: ss.mkdel(this, function(respo, textStatus, request) {
+						if (ss.isValue(respo)) {
+							var e = new $MessageEvent(request.responseText);
+							if (!ss.staticEquals(this.onmessage, null)) {
+								this.onmessage(e);
+							}
+						}
+					}),
+					error: function(request1, textStatus1, error) {
+					}
+				});
+			}), 1000);
+		},
+		close: function() {
+			if (this.$_PollingTimer !== 0) {
+				window.clearInterval(this.$_PollingTimer);
+				this.$_PollingTimer = 0;
+			}
+			var closetimer = 0;
+			this.$_ReadyState = 2;
+			closetimer = window.setTimeout(ss.mkdel(this, function() {
+				window.clearTimeout(closetimer);
+				this.$closed($CloseEvent.closE_NORMAL, '');
+			}), 1000);
+		},
+		$closed: function(code, reason) {
+			this.$_ReadyState = 3;
+			var oe = new $CloseEvent(code, reason);
+			if (!ss.staticEquals(this.onclose, null)) {
+				this.onclose(oe);
+			}
+		},
+		send: function(data) {
+			$.ajax({ url: this.$_Url, type: 'POST', data: data, dataType: 'json', success: ss.mkdel(this, function(respo, textStatus, request) {
+				if (ss.isValue(respo)) {
+					var e = new $MessageEvent(request.responseText);
+					if (!ss.staticEquals(this.onmessage, null)) {
+						this.onmessage(e);
+					}
+				}
+			}), error: ss.mkdel(this, function(request1, textStatus1, error) {
+				var e1 = new $NiseEvent('error');
+				this.onerror(e1);
+			}) });
+		}
+	});
+	$NiseWebSocket.$ctor1.prototype = $NiseWebSocket.$ctor2.prototype = $NiseWebSocket.prototype;
+	(function() {
+		$CloseEvent.closE_NORMAL = 1000;
+		$CloseEvent.closE_GOING_AWAY = 1001;
+		$CloseEvent.closE_PROTOCOL_ERROR = 1002;
+		$CloseEvent.closE_UNSUPPORTED = 1003;
+		$CloseEvent.closE_TOO_LARGE = 1004;
+		$CloseEvent.closE_NO_STATUS = 1005;
+		$CloseEvent.closE_ABNORMAL = 1006;
+	})();
+	(function() {
+		$NiseWebSocket.CLOSED = 3;
+		$NiseWebSocket.CLOSING = 2;
+		$NiseWebSocket.CONNECTING = 0;
+		$NiseWebSocket.OPEN = 1;
+	})();
+})();
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/nisews.min.js
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/nisews.min.js	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/js/nisews.min.js	(revision 101)
@@ -0,0 +1,5 @@
+// Copyright (C) 2015 by TOPPERS Project, Inc., JAPAN
+
+ï»¿(function(){'use strict';var $asm={};ss.initAssembly($asm,'NiseWebSocket');var $CloseEvent=function(code,reason){this.code=0;this.reason=null;$NiseEvent.call(this,'close');this.code=code;this.reason=reason;};$CloseEvent.__typeName='CloseEvent';global.CloseEvent=$CloseEvent;var $MessageEvent=function(data){this.data=null;$NiseEvent.call(this,'message');this.data=data;};$MessageEvent.__typeName='MessageEvent';global.MessageEvent=$MessageEvent;var $NiseEvent=function(type){this.type=null;this.type=type;};$NiseEvent.__typeName='NiseEvent';global.NiseEvent=$NiseEvent;var $NiseWebSocket=function(url){this.$_Url=null;this.$_Protocols=null;this.$_ReadyState=1;this.$_PollingTimer=0;this.binaryType=null;this.bufferedAmount=0;this.extensions=null;this.onclose=null;this.onerror=null;this.onmessage=null;this.onopen=null;this.protocol=null;this.readyState=0;this.url=null;var opentimer=0;this.$_ReadyState=0;this.$_Url=url.replace('ws://','http://');opentimer=window.setTimeout(ss.mkdel(this,function(){window.clearTimeout(opentimer);this.$opend();}),1000);};$NiseWebSocket.__typeName='NiseWebSocket';$NiseWebSocket.$ctor1=function(url,protocols){$NiseWebSocket.call(this,url);this.$_Protocols=protocols.split(String.fromCharCode(44));};$NiseWebSocket.$ctor2=function(url,protocols){$NiseWebSocket.call(this,url);this.$_Protocols=protocols;};global.NiseWebSocket=$NiseWebSocket;ss.initClass($NiseEvent,$asm,{});ss.initClass($CloseEvent,$asm,{},$NiseEvent);ss.initClass($MessageEvent,$asm,{},$NiseEvent);ss.initClass($NiseWebSocket,$asm,{$opend:function(){this.$_ReadyState=1;var oe=new $NiseEvent('open');if(!ss.staticEquals(this.onopen,null)){this.onopen(oe);}
+this.$_PollingTimer=window.setInterval(ss.mkdel(this,function(){$.ajax({url:this.$_Url,type:'POST',dataType:'json',data:'{"brk_wai":"Polling"}',success:ss.mkdel(this,function(respo,textStatus,request){if(ss.isValue(respo)){var e=new $MessageEvent(request.responseText);if(!ss.staticEquals(this.onmessage,null)){this.onmessage(e);}}}),error:function(request1,textStatus1,error){}});}),1000);},close:function(){if(this.$_PollingTimer!==0){window.clearInterval(this.$_PollingTimer);this.$_PollingTimer=0;}
+var closetimer=0;this.$_ReadyState=2;closetimer=window.setTimeout(ss.mkdel(this,function(){window.clearTimeout(closetimer);this.$closed($CloseEvent.closE_NORMAL,'');}),1000);},$closed:function(code,reason){this.$_ReadyState=3;var oe=new $CloseEvent(code,reason);if(!ss.staticEquals(this.onclose,null)){this.onclose(oe);}},send:function(data){$.ajax({url:this.$_Url,type:'POST',data:data,dataType:'json',success:ss.mkdel(this,function(respo,textStatus,request){if(ss.isValue(respo)){var e=new $MessageEvent(request.responseText);if(!ss.staticEquals(this.onmessage,null)){this.onmessage(e);}}}),error:ss.mkdel(this,function(request1,textStatus1,error){var e1=new $NiseEvent('error');this.onerror(e1);})});}});$NiseWebSocket.$ctor1.prototype=$NiseWebSocket.$ctor2.prototype=$NiseWebSocket.prototype;(function(){$CloseEvent.closE_NORMAL=1000;$CloseEvent.closE_GOING_AWAY=1001;$CloseEvent.closE_PROTOCOL_ERROR=1002;$CloseEvent.closE_UNSUPPORTED=1003;$CloseEvent.closE_TOO_LARGE=1004;$CloseEvent.closE_NO_STATUS=1005;$CloseEvent.closE_ABNORMAL=1006;})();(function(){$NiseWebSocket.CLOSED=3;$NiseWebSocket.CLOSING=2;$NiseWebSocket.CONNECTING=0;$NiseWebSocket.OPEN=1;})();})();
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/packages.config
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/packages.config	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/packages.config	(revision 101)
@@ -0,0 +1,7 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Saltarelle.Compiler" version="2.6.2" targetFramework="net45" />
+  <package id="Saltarelle.jQuery" version="1.10.1" targetFramework="net45" />
+  <package id="Saltarelle.Runtime" version="2.6.2" targetFramework="net45" />
+  <package id="Saltarelle.Web" version="3.1.0" targetFramework="net45" />
+</packages>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/themes/ecn-theme.css
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/themes/ecn-theme.css	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/themes/ecn-theme.css	(revision 101)
@@ -0,0 +1,742 @@
+/*!
+* jQuery Mobile 1.4.2
+* Git HEAD hash: 9d9a42a27d0c693e8b5569c3a10d771916af5045 <> Date: Fri Feb 28 2014 17:32:01 UTC
+* http://jquerymobile.com
+*
+* Copyright 2010, 2014 jQuery Foundation, Inc. and other contributors
+* Released under the MIT license.
+* http://jquery.org/license
+*
+*/
+
+
+/* Globals */
+/* Font
+-----------------------------------------------------------------------------------------------------------*/
+html {
+	font-size: 100%;
+}
+body,
+input,
+select,
+textarea,
+button,
+.ui-btn {
+	font-size: 1em;
+	line-height: 1.3;
+	 font-family: sans-serif /*{global-font-family}*/;
+}
+legend,
+.ui-input-text input,
+.ui-input-search input {
+	color: inherit;
+	text-shadow: inherit;
+}
+/* Form labels (overrides font-weight bold in bars, and mini font-size) */
+.ui-mobile label,
+div.ui-controlgroup-label {
+	font-weight: normal;
+	font-size: 16px;
+}
+/* Separators
+-----------------------------------------------------------------------------------------------------------*/
+/* Field contain separator (< 28em) */
+.ui-field-contain {
+	border-bottom-color: #828282;
+	border-bottom-color: rgba(0,0,0,.15);
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+/* Table opt-in classes: strokes between each row, and alternating row stripes */
+/* Classes table-stroke and table-stripe are deprecated in 1.4. */
+.table-stroke thead th,
+.table-stripe thead th,
+.table-stripe tbody tr:last-child {
+	border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */
+	border-bottom: 1px solid rgba(0,0,0,.1);
+}
+.table-stroke tbody th,
+.table-stroke tbody td {
+	border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback  */
+	border-bottom: 1px solid rgba(0,0,0,.05);
+}
+.table-stripe.table-stroke tbody tr:last-child th,
+.table-stripe.table-stroke tbody tr:last-child td {
+	border-bottom: 0;
+}
+.table-stripe tbody tr:nth-child(odd) td,
+.table-stripe tbody tr:nth-child(odd) th {
+	background-color: #eeeeee; /* non-RGBA fallback  */
+	background-color: rgba(0,0,0,.04);
+}
+/* Buttons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn,
+label.ui-btn {
+	font-weight: bold;
+	border-width: 1px;
+	border-style: solid;
+}
+.ui-btn:link {
+	text-decoration: none !important;
+}
+.ui-btn-active {
+	cursor: pointer;
+}
+/* Corner rounding
+-----------------------------------------------------------------------------------------------------------*/
+/* Class ui-btn-corner-all deprecated in 1.4 */
+.ui-corner-all {
+	-webkit-border-radius: .6em /*{global-radii-blocks}*/;
+	border-radius: .6em /*{global-radii-blocks}*/;
+}
+/* Buttons */
+.ui-btn-corner-all,
+.ui-btn.ui-corner-all,
+/* Slider track */
+.ui-slider-track.ui-corner-all,
+/* Flipswitch */
+.ui-flipswitch.ui-corner-all,
+/* Count bubble */
+.ui-li-count {
+	-webkit-border-radius: .3125em /*{global-radii-buttons}*/;
+	border-radius: .3125em /*{global-radii-buttons}*/;
+}
+/* Icon-only buttons */
+.ui-btn-icon-notext.ui-btn-corner-all,
+.ui-btn-icon-notext.ui-corner-all {
+	-webkit-border-radius: 1em;
+	border-radius: 1em;
+}
+/* Radius clip workaround for cleaning up corner trapping */
+.ui-btn-corner-all,
+.ui-corner-all {
+	-webkit-background-clip: padding;
+	background-clip: padding-box;
+}
+/* Popup arrow */
+.ui-popup.ui-corner-all > .ui-popup-arrow-guide {
+	left: .6em /*{global-radii-blocks}*/;
+	right: .6em /*{global-radii-blocks}*/;
+	top: .6em /*{global-radii-blocks}*/;
+	bottom: .6em /*{global-radii-blocks}*/;
+}
+/* Shadow
+-----------------------------------------------------------------------------------------------------------*/
+.ui-shadow {
+	-webkit-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+	-moz-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+	box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+}
+.ui-shadow-inset {
+	-webkit-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+	-moz-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+	box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/;
+}
+.ui-overlay-shadow {
+	-webkit-box-shadow: 0 0 12px 		rgba(0,0,0,.6);
+	-moz-box-shadow: 0 0 12px 			rgba(0,0,0,.6);
+	box-shadow: 0 0 12px 				rgba(0,0,0,.6);
+}
+/* Icons
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after,
+.ui-btn-icon-notext:after {
+	background-color: #666666 /*{global-icon-color}*/;
+	background-color: rgba(0,0,0,.3) /*{global-icon-disc}*/;
+	background-position: center center;
+	background-repeat: no-repeat;
+	-webkit-border-radius: 1em;
+	border-radius: 1em;
+}
+/* Alt icons */
+.ui-alt-icon.ui-btn:after,
+.ui-alt-icon .ui-btn:after,
+html .ui-alt-icon.ui-checkbox-off:after,
+html .ui-alt-icon.ui-radio-off:after,
+html .ui-alt-icon .ui-checkbox-off:after,
+html .ui-alt-icon .ui-radio-off:after {
+	background-color: #666666 /*{global-icon-color}*/;
+	background-color: 					rgba(0,0,0,.15);
+}
+/* No disc */
+.ui-nodisc-icon.ui-btn:after,
+.ui-nodisc-icon .ui-btn:after {
+	background-color: transparent;
+}
+/* Icon shadow */
+.ui-shadow-icon.ui-btn:after,
+.ui-shadow-icon .ui-btn:after {
+	-webkit-box-shadow: 0 1px 0 rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+	-moz-box-shadow: 0 1px 0 rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+	box-shadow: 0 1px 0 rgba(255,255,255,.3) /*{global-icon-shadow}*/;
+}
+/* Checkbox and radio */
+.ui-btn.ui-checkbox-off:after,
+.ui-btn.ui-checkbox-on:after,
+.ui-btn.ui-radio-off:after,
+.ui-btn.ui-radio-on:after {
+	display: block;
+	width: 18px;
+	height: 18px;
+	margin: -9px 2px 0 2px;
+}
+.ui-checkbox-off:after,
+.ui-btn.ui-radio-off:after {
+	filter: Alpha(Opacity=30);
+	opacity: .3;
+}
+.ui-btn.ui-checkbox-off:after,
+.ui-btn.ui-checkbox-on:after {
+	-webkit-border-radius: .1875em;
+	border-radius: .1875em;
+}
+.ui-radio .ui-btn.ui-radio-on:after {
+	background-image: none;
+	background-color: #fff;
+	width: 8px;
+	height: 8px;
+	border-width: 5px;
+	border-style: solid; 
+}
+.ui-alt-icon.ui-btn.ui-radio-on:after,
+.ui-alt-icon .ui-btn.ui-radio-on:after {
+	background-color: #000;
+}
+/* Loader */
+.ui-icon-loading {
+	background: url("../js/images/ajax-loader.gif");
+	background-size: 2.875em 2.875em;
+}
+/* Swatches */
+/* A
+-----------------------------------------------------------------------------------------------------------*/
+/* Bar: Toolbars, dividers, slider track */
+.ui-bar-a,
+.ui-page-theme-a .ui-bar-inherit,
+html .ui-bar-a .ui-bar-inherit,
+html .ui-body-a .ui-bar-inherit,
+html body .ui-group-theme-a .ui-bar-inherit {
+	background-color: #e9e9e9 /*{a-bar-background-color}*/;
+	border-color: #dddddd /*{a-bar-border}*/;
+	color: #333333 /*{a-bar-color}*/;
+	text-shadow: 0 /*{a-bar-shadow-x}*/ 1px /*{a-bar-shadow-y}*/ 0 /*{a-bar-shadow-radius}*/ #eeeeee /*{a-bar-shadow-color}*/;
+	font-weight: bold;
+}
+.ui-bar-a {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Page and overlay */
+.ui-overlay-a,
+.ui-page-theme-a,
+.ui-page-theme-a .ui-panel-wrapper {
+	background-color: #ffffff /*{a-page-background-color}*/;
+	border-color: #ffffff /*{a-page-border}*/;
+	color: #000000 /*{a-page-color}*/;
+	text-shadow: 0 /*{a-page-shadow-x}*/ 1px /*{a-page-shadow-y}*/ 0 /*{a-page-shadow-radius}*/ #eeeeee /*{a-page-shadow-color}*/;
+}
+/* Body: Read-only lists, text inputs, collapsible content */
+.ui-body-a,
+.ui-page-theme-a .ui-body-inherit,
+html .ui-bar-a .ui-body-inherit,
+html .ui-body-a .ui-body-inherit,
+html body .ui-group-theme-a .ui-body-inherit,
+html .ui-panel-page-container-a {
+	background-color: #fafafa /*{a-body-background-color}*/;
+	border-color: #dddddd /*{a-body-border}*/;
+	color: #000000 /*{a-body-color}*/;
+	text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 0 /*{a-body-shadow-radius}*/ #eeeeee /*{a-body-shadow-color}*/;
+}
+.ui-body-a {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Links */
+.ui-page-theme-a a,
+html .ui-bar-a a,
+html .ui-body-a a,
+html body .ui-group-theme-a a {
+	color: #3388cc /*{a-link-color}*/;
+	font-weight: bold;
+}
+.ui-page-theme-a a:visited,
+html .ui-bar-a a:visited,
+html .ui-body-a a:visited,
+html body .ui-group-theme-a a:visited {
+    color: #3388cc /*{a-link-visited}*/;
+}
+.ui-page-theme-a a:hover,
+html .ui-bar-a a:hover,
+html .ui-body-a a:hover,
+html body .ui-group-theme-a a:hover {
+	color: #005599 /*{a-link-hover}*/;
+}
+.ui-page-theme-a a:active,
+html .ui-bar-a a:active,
+html .ui-body-a a:active,
+html body .ui-group-theme-a a:active {
+	color: #005599 /*{a-link-active}*/;
+}
+/* Button up */
+.ui-page-theme-a .ui-btn,
+html .ui-bar-a .ui-btn,
+html .ui-body-a .ui-btn,
+html body .ui-group-theme-a .ui-btn,
+html head + body .ui-btn.ui-btn-a,
+/* Button visited */
+.ui-page-theme-a .ui-btn:visited,
+html .ui-bar-a .ui-btn:visited,
+html .ui-body-a .ui-btn:visited,
+html body .ui-group-theme-a .ui-btn:visited,
+html head + body .ui-btn.ui-btn-a:visited {
+	background-color: #ededed /*{a-bup-background-color}*/;
+	border-color: #dddddd /*{a-bup-border}*/;
+	color: #000000 /*{a-bup-color}*/;
+	text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 0 /*{a-bup-shadow-radius}*/ #eeeeee /*{a-bup-shadow-color}*/;
+}
+/* Button hover */
+.ui-page-theme-a .ui-btn:hover,
+html .ui-bar-a .ui-btn:hover,
+html .ui-body-a .ui-btn:hover,
+html body .ui-group-theme-a .ui-btn:hover,
+html head + body .ui-btn.ui-btn-a:hover {
+	background-color: #FFFFFF /*{a-bhover-background-color}*/;
+	border-color: #dddddd /*{a-bhover-border}*/;
+	color: #000000 /*{a-bhover-color}*/;
+	text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 0 /*{a-bhover-shadow-radius}*/ #eeeeee /*{a-bhover-shadow-color}*/;
+}
+/* Button down */
+.ui-page-theme-a .ui-btn:active,
+html .ui-bar-a .ui-btn:active,
+html .ui-body-a .ui-btn:active,
+html body .ui-group-theme-a .ui-btn:active,
+html head + body .ui-btn.ui-btn-a:active {
+	background-color: #FFFFFF /*{a-bdown-background-color}*/;
+	border-color: #005599 /*{a-bdown-border}*/;
+	color: #000000 /*{a-bdown-color}*/;
+	text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 0 /*{a-bdown-shadow-radius}*/ #eeeeee /*{a-bdown-shadow-color}*/;
+}
+/* Active button */
+.ui-page-theme-a .ui-btn.ui-btn-active,
+html .ui-bar-a .ui-btn.ui-btn-active,
+html .ui-body-a .ui-btn.ui-btn-active,
+html body .ui-group-theme-a .ui-btn.ui-btn-active,
+html head + body .ui-btn.ui-btn-a.ui-btn-active,
+/* Active checkbox icon */
+.ui-page-theme-a .ui-checkbox-on:after,
+html .ui-bar-a .ui-checkbox-on:after,
+html .ui-body-a .ui-checkbox-on:after,
+html body .ui-group-theme-a .ui-checkbox-on:after,
+.ui-btn.ui-checkbox-on.ui-btn-a:after,
+/* Active flipswitch background */
+.ui-page-theme-a .ui-flipswitch-active,
+html .ui-bar-a .ui-flipswitch-active,
+html .ui-body-a .ui-flipswitch-active,
+html body .ui-group-theme-a .ui-flipswitch-active,
+html body .ui-flipswitch.ui-bar-a.ui-flipswitch-active,
+/* Active slider track */
+.ui-page-theme-a .ui-slider-track .ui-btn-active,
+html .ui-bar-a .ui-slider-track .ui-btn-active,
+html .ui-body-a .ui-slider-track .ui-btn-active,
+html body .ui-group-theme-a .ui-slider-track .ui-btn-active,
+html body div.ui-slider-track.ui-body-a .ui-btn-active {
+	background-color: #3388cc /*{a-active-background-color}*/;
+	border-color: #005599 /*{a-active-border}*/;
+	color: #ffffff /*{a-active-color}*/;
+	text-shadow: 0 /*{a-active-shadow-x}*/ 1px /*{a-active-shadow-y}*/ 0 /*{a-active-shadow-radius}*/ #005599 /*{a-active-shadow-color}*/;
+}
+/* Active radio button icon */
+.ui-page-theme-a .ui-radio-on:after,
+html .ui-bar-a .ui-radio-on:after,
+html .ui-body-a .ui-radio-on:after,
+html body .ui-group-theme-a .ui-radio-on:after,
+.ui-btn.ui-radio-on.ui-btn-a:after {
+	border-color: #3388cc /*{a-active-background-color}*/;
+}
+/* Focus */
+.ui-page-theme-a .ui-btn:focus,
+html .ui-bar-a .ui-btn:focus,
+html .ui-body-a .ui-btn:focus,
+html body .ui-group-theme-a .ui-btn:focus,
+html head + body .ui-btn.ui-btn-a:focus,
+/* Focus buttons and text inputs with div wrap */
+.ui-page-theme-a .ui-focus,
+html .ui-bar-a .ui-focus,
+html .ui-body-a .ui-focus,
+html body .ui-group-theme-a .ui-focus,
+html head + body .ui-btn-a.ui-focus,
+html head + body .ui-body-a.ui-focus {
+	-webkit-box-shadow: 0 0 12px #3388cc /*{a-active-background-color}*/;
+	-moz-box-shadow: 0 0 12px #3388cc /*{a-active-background-color}*/;
+	box-shadow: 0 0 12px #3388cc /*{a-active-background-color}*/;
+}
+/* B
+-----------------------------------------------------------------------------------------------------------*/
+/* Bar: Toolbars, dividers, slider track */
+.ui-bar-b,
+.ui-page-theme-b .ui-bar-inherit,
+html .ui-bar-b .ui-bar-inherit,
+html .ui-body-b .ui-bar-inherit,
+html body .ui-group-theme-b .ui-bar-inherit {
+	background-color: #8cc63f /*{b-bar-background-color}*/;
+	border-color: #4d6c22 /*{b-bar-border}*/;
+	color: #ffffff /*{b-bar-color}*/;
+	text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 0 /*{b-bar-shadow-radius}*/ #444444 /*{b-bar-shadow-color}*/;
+	font-weight: bold;
+}
+.ui-bar-b {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Page and overlay */
+.ui-overlay-b,
+.ui-page-theme-b,
+.ui-page-theme-b .ui-panel-wrapper {
+	background-color: #ffffff /*{b-page-background-color}*/;
+	border-color: #ffffff /*{b-page-border}*/;
+	color: #000000 /*{b-page-color}*/;
+	text-shadow: 0 /*{b-page-shadow-x}*/ 1px /*{b-page-shadow-y}*/ 0 /*{b-page-shadow-radius}*/ #eeeeee /*{b-page-shadow-color}*/;
+}
+/* Body: Read-only lists, text inputs, collapsible content */
+.ui-body-b,
+.ui-page-theme-b .ui-body-inherit,
+html .ui-bar-b .ui-body-inherit,
+html .ui-body-b .ui-body-inherit,
+html body .ui-group-theme-b .ui-body-inherit,
+html .ui-panel-page-container-b {
+	background-color: #eff7e4 /*{b-body-background-color}*/;
+	border-color: #4d6c22 /*{b-body-border}*/;
+	color: #000000 /*{b-body-color}*/;
+	text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #eeeeee /*{b-body-shadow-color}*/;
+}
+.ui-body-b {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Links */
+.ui-page-theme-b a,
+html .ui-bar-b a,
+html .ui-body-b a,
+html body .ui-group-theme-b a {
+	color: #6e9e2f /*{b-link-color}*/;
+	font-weight: bold;
+}
+.ui-page-theme-b a:visited,
+html .ui-bar-b a:visited,
+html .ui-body-b a:visited,
+html body .ui-group-theme-b a:visited {
+    color: #47661e /*{b-link-visited}*/;
+}
+.ui-page-theme-b a:hover,
+html .ui-bar-b a:hover,
+html .ui-body-b a:hover,
+html body .ui-group-theme-b a:hover {
+	color: #7eb536 /*{b-link-hover}*/;
+}
+.ui-page-theme-b a:active,
+html .ui-bar-b a:active,
+html .ui-body-b a:active,
+html body .ui-group-theme-b a:active {
+	color: #6e9e2f /*{b-link-active}*/;
+}
+/* Button up */
+.ui-page-theme-b .ui-btn,
+html .ui-bar-b .ui-btn,
+html .ui-body-b .ui-btn,
+html body .ui-group-theme-b .ui-btn,
+html head + body .ui-btn.ui-btn-b,
+/* Button visited */
+.ui-page-theme-b .ui-btn:visited,
+html .ui-bar-b .ui-btn:visited,
+html .ui-body-b .ui-btn:visited,
+html body .ui-group-theme-b .ui-btn:visited,
+html head + body .ui-btn.ui-btn-b:visited {
+	background-color: #d0e8b1 /*{b-bup-background-color}*/;
+	border-color: #727f61 /*{b-bup-border}*/;
+	color: #000000 /*{b-bup-color}*/;
+	text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 0 /*{b-bup-shadow-radius}*/ #eeeeee /*{b-bup-shadow-color}*/;
+}
+/* Button hover */
+.ui-page-theme-b .ui-btn:hover,
+html .ui-bar-b .ui-btn:hover,
+html .ui-body-b .ui-btn:hover,
+html body .ui-group-theme-b .ui-btn:hover,
+html head + body .ui-btn.ui-btn-b:hover {
+	background-color: #efFFcb /*{b-bhover-background-color}*/;
+	border-color: #838c6f /*{b-bhover-border}*/;
+	color: #000000 /*{b-bhover-color}*/;
+	text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 0 /*{b-bhover-shadow-radius}*/ #eeeeee /*{b-bhover-shadow-color}*/;
+}
+/* Button down */
+.ui-page-theme-b .ui-btn:active,
+html .ui-bar-b .ui-btn:active,
+html .ui-body-b .ui-btn:active,
+html body .ui-group-theme-b .ui-btn:active,
+html head + body .ui-btn.ui-btn-b:active {
+	background-color: #efFFcb /*{b-bdown-background-color}*/;
+	border-color: #838c6f /*{b-bdown-border}*/;
+	color: #000000 /*{b-bdown-color}*/;
+	text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 0 /*{b-bdown-shadow-radius}*/ #eeeeee /*{b-bdown-shadow-color}*/;
+}
+/* Active button */
+.ui-page-theme-b .ui-btn.ui-btn-active,
+html .ui-bar-b .ui-btn.ui-btn-active,
+html .ui-body-b .ui-btn.ui-btn-active,
+html body .ui-group-theme-b .ui-btn.ui-btn-active,
+html head + body .ui-btn.ui-btn-b.ui-btn-active,
+/* Active checkbox icon */
+.ui-page-theme-b .ui-checkbox-on:after,
+html .ui-bar-b .ui-checkbox-on:after,
+html .ui-body-b .ui-checkbox-on:after,
+html body .ui-group-theme-b .ui-checkbox-on:after,
+.ui-btn.ui-checkbox-on.ui-btn-b:after,
+/* Active flipswitch background */
+.ui-page-theme-b .ui-flipswitch-active,
+html .ui-bar-b .ui-flipswitch-active,
+html .ui-body-b .ui-flipswitch-active,
+html body .ui-group-theme-b .ui-flipswitch-active,
+html body .ui-flipswitch.ui-bar-b.ui-flipswitch-active,
+/* Active slider track */
+.ui-page-theme-b .ui-slider-track .ui-btn-active,
+html .ui-bar-b .ui-slider-track .ui-btn-active,
+html .ui-body-b .ui-slider-track .ui-btn-active,
+html body .ui-group-theme-b .ui-slider-track .ui-btn-active,
+html body div.ui-slider-track.ui-body-b .ui-btn-active {
+	background-color: #6e9e2f /*{b-active-background-color}*/;
+	border-color: #3c5619 /*{b-active-border}*/;
+	color: #ffffff /*{b-active-color}*/;
+	text-shadow: 0 /*{b-active-shadow-x}*/ 1px /*{b-active-shadow-y}*/ 0 /*{b-active-shadow-radius}*/ #444444 /*{b-active-shadow-color}*/;
+}
+/* Active radio button icon */
+.ui-page-theme-b .ui-radio-on:after,
+html .ui-bar-b .ui-radio-on:after,
+html .ui-body-b .ui-radio-on:after,
+html body .ui-group-theme-b .ui-radio-on:after,
+.ui-btn.ui-radio-on.ui-btn-b:after {
+	border-color: #6e9e2f /*{b-active-background-color}*/;
+}
+/* Focus */
+.ui-page-theme-b .ui-btn:focus,
+html .ui-bar-b .ui-btn:focus,
+html .ui-body-b .ui-btn:focus,
+html body .ui-group-theme-b .ui-btn:focus,
+html head + body .ui-btn.ui-btn-b:focus,
+/* Focus buttons and text inputs with div wrap */
+.ui-page-theme-b .ui-focus,
+html .ui-bar-b .ui-focus,
+html .ui-body-b .ui-focus,
+html body .ui-group-theme-b .ui-focus,
+html head + body .ui-btn-b.ui-focus,
+html head + body .ui-body-b.ui-focus {
+	-webkit-box-shadow: 0 0 12px #6e9e2f /*{b-active-background-color}*/;
+	-moz-box-shadow: 0 0 12px #6e9e2f /*{b-active-background-color}*/;
+	box-shadow: 0 0 12px #6e9e2f /*{b-active-background-color}*/;
+}
+
+
+/* C
+-----------------------------------------------------------------------------------------------------------*/
+/* Bar: Toolbars, dividers, slider track */
+.ui-bar-c,
+.ui-page-theme-c .ui-bar-inherit,
+html .ui-bar-c .ui-bar-inherit,
+html .ui-body-c .ui-bar-inherit,
+html body .ui-group-theme-c .ui-bar-inherit {
+	background-color: #ffd557 /*{c-bar-background-color}*/;
+	border-color: #8c752f /*{c-bar-border}*/;
+	color: #000000 /*{c-bar-color}*/;
+	text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 0 /*{c-bar-shadow-radius}*/ #eeeeee /*{c-bar-shadow-color}*/;
+	font-weight: bold;
+}
+.ui-bar-c {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Page and overlay */
+.ui-overlay-c,
+.ui-page-theme-c,
+.ui-page-theme-c .ui-panel-wrapper {
+	background-color: #ffffff /*{c-page-background-color}*/;
+	border-color: #ffffff /*{c-page-border}*/;
+	color: #000000 /*{c-page-color}*/;
+	text-shadow: 0 /*{c-page-shadow-x}*/ 1px /*{c-page-shadow-y}*/ 0 /*{c-page-shadow-radius}*/ #eeeeee /*{c-page-shadow-color}*/;
+}
+/* Body: Read-only lists, text inputs, collapsible content */
+.ui-body-c,
+.ui-page-theme-c .ui-body-inherit,
+html .ui-bar-c .ui-body-inherit,
+html .ui-body-c .ui-body-inherit,
+html body .ui-group-theme-c .ui-body-inherit,
+html .ui-panel-page-container-c {
+	background-color: #fff9e5 /*{c-body-background-color}*/;
+	border-color: #8c887d /*{c-body-border}*/;
+	color: #000000 /*{c-body-color}*/;
+	text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #eeeeee /*{c-body-shadow-color}*/;
+}
+.ui-body-c {
+	border-width: 1px;
+	border-style: solid;
+}
+/* Links */
+.ui-page-theme-c a,
+html .ui-bar-c a,
+html .ui-body-c a,
+html body .ui-group-theme-c a {
+	color: #fabb00 /*{c-link-color}*/;
+	font-weight: bold;
+}
+.ui-page-theme-c a:visited,
+html .ui-bar-c a:visited,
+html .ui-body-c a:visited,
+html body .ui-group-theme-c a:visited {
+    color: #a27900 /*{c-link-visited}*/;
+}
+.ui-page-theme-c a:hover,
+html .ui-bar-c a:hover,
+html .ui-body-c a:hover,
+html body .ui-group-theme-c a:hover {
+	color: #FFd745 /*{c-link-hover}*/;
+}
+.ui-page-theme-c a:active,
+html .ui-bar-c a:active,
+html .ui-body-c a:active,
+html body .ui-group-theme-c a:active {
+	color: #fabb00 /*{c-link-active}*/;
+}
+/* Button up */
+.ui-page-theme-c .ui-btn,
+html .ui-bar-c .ui-btn,
+html .ui-body-c .ui-btn,
+html body .ui-group-theme-c .ui-btn,
+html head + body .ui-btn.ui-btn-c,
+/* Button visited */
+.ui-page-theme-c .ui-btn:visited,
+html .ui-bar-c .ui-btn:visited,
+html .ui-body-c .ui-btn:visited,
+html body .ui-group-theme-c .ui-btn:visited,
+html head + body .ui-btn.ui-btn-c:visited {
+	background-color: #fff1c7 /*{c-bup-background-color}*/;
+	border-color: #8c846d /*{c-bup-border}*/;
+	color: #000000 /*{c-bup-color}*/;
+	text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 0 /*{c-bup-shadow-radius}*/ #eeeeee /*{c-bup-shadow-color}*/;
+}
+/* Button hover */
+.ui-page-theme-c .ui-btn:hover,
+html .ui-bar-c .ui-btn:hover,
+html .ui-body-c .ui-btn:hover,
+html body .ui-group-theme-c .ui-btn:hover,
+html head + body .ui-btn.ui-btn-c:hover {
+	background-color: #FFFFe4 /*{c-bhover-background-color}*/;
+	border-color: #8c8c7d /*{c-bhover-border}*/;
+	color: #000000 /*{c-bhover-color}*/;
+	text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 0 /*{c-bhover-shadow-radius}*/ #eeeeee /*{c-bhover-shadow-color}*/;
+}
+/* Button down */
+.ui-page-theme-c .ui-btn:active,
+html .ui-bar-c .ui-btn:active,
+html .ui-body-c .ui-btn:active,
+html body .ui-group-theme-c .ui-btn:active,
+html head + body .ui-btn.ui-btn-c:active {
+	background-color: #FFFFe4 /*{c-bdown-background-color}*/;
+	border-color: #8c8c7d /*{c-bdown-border}*/;
+	color: #000000 /*{c-bdown-color}*/;
+	text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 0 /*{c-bdown-shadow-radius}*/ #eeeeee /*{c-bdown-shadow-color}*/;
+}
+/* Active button */
+.ui-page-theme-c .ui-btn.ui-btn-active,
+html .ui-bar-c .ui-btn.ui-btn-active,
+html .ui-body-c .ui-btn.ui-btn-active,
+html body .ui-group-theme-c .ui-btn.ui-btn-active,
+html head + body .ui-btn.ui-btn-c.ui-btn-active,
+/* Active checkbox icon */
+.ui-page-theme-c .ui-checkbox-on:after,
+html .ui-bar-c .ui-checkbox-on:after,
+html .ui-body-c .ui-checkbox-on:after,
+html body .ui-group-theme-c .ui-checkbox-on:after,
+.ui-btn.ui-checkbox-on.ui-btn-c:after,
+/* Active flipswitch background */
+.ui-page-theme-c .ui-flipswitch-active,
+html .ui-bar-c .ui-flipswitch-active,
+html .ui-body-c .ui-flipswitch-active,
+html body .ui-group-theme-c .ui-flipswitch-active,
+html body .ui-flipswitch.ui-bar-c.ui-flipswitch-active,
+/* Active slider track */
+.ui-page-theme-c .ui-slider-track .ui-btn-active,
+html .ui-bar-c .ui-slider-track .ui-btn-active,
+html .ui-body-c .ui-slider-track .ui-btn-active,
+html body .ui-group-theme-c .ui-slider-track .ui-btn-active,
+html body div.ui-slider-track.ui-body-c .ui-btn-active {
+	background-color: #fabb00 /*{c-active-background-color}*/;
+	border-color: #896600 /*{c-active-border}*/;
+	color: #ffffff /*{c-active-color}*/;
+	text-shadow: 0 /*{c-active-shadow-x}*/ 1px /*{c-active-shadow-y}*/ 0 /*{c-active-shadow-radius}*/ #444444 /*{c-active-shadow-color}*/;
+}
+/* Active radio button icon */
+.ui-page-theme-c .ui-radio-on:after,
+html .ui-bar-c .ui-radio-on:after,
+html .ui-body-c .ui-radio-on:after,
+html body .ui-group-theme-c .ui-radio-on:after,
+.ui-btn.ui-radio-on.ui-btn-c:after {
+	border-color: #fabb00 /*{c-active-background-color}*/;
+}
+/* Focus */
+.ui-page-theme-c .ui-btn:focus,
+html .ui-bar-c .ui-btn:focus,
+html .ui-body-c .ui-btn:focus,
+html body .ui-group-theme-c .ui-btn:focus,
+html head + body .ui-btn.ui-btn-c:focus,
+/* Focus buttons and text inputs with div wrap */
+.ui-page-theme-c .ui-focus,
+html .ui-bar-c .ui-focus,
+html .ui-body-c .ui-focus,
+html body .ui-group-theme-c .ui-focus,
+html head + body .ui-btn-c.ui-focus,
+html head + body .ui-body-c.ui-focus {
+	-webkit-box-shadow: 0 0 12px #fabb00 /*{c-active-background-color}*/;
+	-moz-box-shadow: 0 0 12px #fabb00 /*{c-active-background-color}*/;
+	box-shadow: 0 0 12px #fabb00 /*{c-active-background-color}*/;
+}
+
+
+/* Structure */
+/* Disabled
+-----------------------------------------------------------------------------------------------------------*/
+/* Class ui-disabled deprecated in 1.4. :disabled not supported by IE8 so we use [disabled] */
+.ui-disabled,
+.ui-state-disabled,
+button[disabled],
+.ui-select .ui-btn.ui-state-disabled {
+	filter: Alpha(Opacity=30);
+	opacity: .3;
+	cursor: default !important;
+	pointer-events: none;
+}
+/* Focus state outline
+-----------------------------------------------------------------------------------------------------------*/
+.ui-btn:focus,
+.ui-btn.ui-focus {
+	outline: 0;
+}
+/* Unset box-shadow in browsers that don't do it right */
+.ui-noboxshadow .ui-shadow,
+.ui-noboxshadow .ui-shadow-inset,
+.ui-noboxshadow .ui-overlay-shadow,
+.ui-noboxshadow .ui-shadow-icon.ui-btn:after,
+.ui-noboxshadow .ui-shadow-icon .ui-btn:after,
+.ui-noboxshadow .ui-focus,
+.ui-noboxshadow .ui-btn:focus,
+.ui-noboxshadow  input:focus,
+.ui-noboxshadow .ui-panel {
+	-webkit-box-shadow: none !important;
+	-moz-box-shadow: none !important;
+	box-shadow: none !important;
+}
+.ui-noboxshadow .ui-btn:focus,
+.ui-noboxshadow .ui-focus {
+	outline-width: 1px;
+	outline-style: auto;
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/themes/ecn-theme.min.css
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/themes/ecn-theme.min.css	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/themes/ecn-theme.min.css	(revision 101)
@@ -0,0 +1,67 @@
+html{font-size:100%;}
+body,
+input,
+select,
+textarea,
+button,
+.ui-btn{font-size:1em;line-height:1.3;font-family:sans-serif;}
+legend,
+.ui-input-text input,
+.ui-input-search input{color:inherit;text-shadow:inherit;}
+.ui-mobile label,
+div.ui-controlgroup-label{font-weight:normal;font-size:16px;}
+.ui-field-contain{border-bottom-color:#828282;border-bottom-color:rgba(0,0,0,.15);border-bottom-width:1px;border-bottom-style:solid;}
+.table-stroke thead th,
+.table-stripe thead th,
+.table-stripe tbody tr:last-child{border-bottom:1px solid #d6d6d6;border-bottom:1px solid rgba(0,0,0,.1);}
+.table-stroke tbody th,
+.table-stroke tbody td{border-bottom:1px solid #e6e6e6;border-bottom:1px solid rgba(0,0,0,.05);}
+.table-stripe.table-stroke tbody tr:last-child th,
+.table-stripe.table-stroke tbody tr:last-child td{border-bottom:0;}
+.table-stripe tbody tr:nth-child(odd) td,
+.table-stripe tbody tr:nth-child(odd) th{background-color:#eeeeee;background-color:rgba(0,0,0,.04);}
+.ui-btn,
+label.ui-btn{font-weight:bold;border-width:1px;border-style:solid;}
+.ui-btn:link{text-decoration:none !important;}
+.ui-btn-active{cursor:pointer;}
+.ui-corner-all{-webkit-border-radius:.6em;border-radius:.6em;}
+.ui-btn-corner-all,
+.ui-btn.ui-corner-all,
+.ui-slider-track.ui-corner-all,
+.ui-flipswitch.ui-corner-all,
+.ui-li-count{-webkit-border-radius:.3125em;border-radius:.3125em;}
+.ui-btn-icon-notext.ui-btn-corner-all,
+.ui-btn-icon-notext.ui-corner-all{-webkit-border-radius:1em;border-radius:1em;}
+.ui-btn-corner-all,
+.ui-corner-all{-webkit-background-clip:padding;background-clip:padding-box;}
+.ui-popup.ui-corner-all > .ui-popup-arrow-guide{left:.6em;right:.6em;top:.6em;bottom:.6em;}
+.ui-shadow{-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);-moz-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2);}
+.ui-shadow-inset{-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.2);-moz-box-shadow:inset 0 1px 3px rgba(0,0,0,.2);box-shadow:inset 0 1px 3px rgba(0,0,0,.2);}
+.ui-overlay-shadow{-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);-moz-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6);}
+.ui-btn-icon-left:after,
+.ui-btn-icon-right:after,
+.ui-btn-icon-top:after,
+.ui-btn-icon-bottom:after,
+.ui-btn-icon-notext:after{background-color:#666666;background-color:rgba(0,0,0,.3);background-position:center center;background-repeat:no-repeat;-webkit-border-radius:1em;border-radius:1em;}
+.ui-alt-icon.ui-btn:after,
+.ui-alt-icon .ui-btn:after,
+html .ui-alt-icon.ui-checkbox-off:after,
+html .ui-alt-icon.ui-radio-off:after,
+html .ui-alt-icon .ui-checkbox-off:after,
+html .ui-alt-icon .ui-radio-off:after{background-color:#666666;background-color:rgba(0,0,0,.15);}
+.ui-nodisc-icon.ui-btn:after,
+.ui-nodisc-icon .ui-btn:after{background-color:transparent;}
+.ui-shadow-icon.ui-btn:after,
+.ui-shadow-icon .ui-btn:after{-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3);}
+.ui-btn.ui-checkbox-off:after,
+.ui-btn.ui-checkbox-on:after,
+.ui-btn.ui-radio-off:after,
+.ui-btn.ui-radio-on:after{display:block;width:18px;height:18px;margin:-9px 2px 0 2px;}
+.ui-checkbox-off:after,
+.ui-btn.ui-radio-off:after{filter:Alpha(Opacity=30);opacity:.3;}
+.ui-btn.ui-checkbox-off:after,
+.ui-btn.ui-checkbox-on:after{-webkit-border-radius:.1875em;border-radius:.1875em;}
+.ui-radio .ui-btn.ui-radio-on:after{background-image:none;background-color:#fff;width:8px;height:8px;border-width:5px;border-style:solid;}
+.ui-alt-icon.ui-btn.ui-radio-on:after,
+.ui-alt-icon .ui-btn.ui-radio-on:after{background-color:#000;}
+.ui-icon-loading{background:url("../js/images/ajax-loader.gif");background-size:2.875em 2.875em;}.ui-bar-a,.ui-page-theme-a .ui-bar-inherit,html .ui-bar-a .ui-bar-inherit,html .ui-body-a .ui-bar-inherit,html body .ui-group-theme-a .ui-bar-inherit{background-color:#e9e9e9;border-color:#dddddd;color:#333333;text-shadow:0 1px 0 #eeeeee;font-weight:bold;}.ui-bar-a{border-width:1px;border-style:solid;}.ui-overlay-a,.ui-page-theme-a,.ui-page-theme-a .ui-panel-wrapper{background-color:#ffffff;border-color:#ffffff;color:#000000;text-shadow:0 1px 0 #eeeeee;}.ui-body-a,.ui-page-theme-a .ui-body-inherit,html .ui-bar-a .ui-body-inherit,html .ui-body-a .ui-body-inherit,html body .ui-group-theme-a .ui-body-inherit,html .ui-panel-page-container-a{background-color:#fafafa;border-color:#dddddd;color:#000000;text-shadow:0 1px 0 #eeeeee;}.ui-body-a{border-width:1px;border-style:solid;}.ui-page-theme-a a,html .ui-bar-a a,html .ui-body-a a,html body .ui-group-theme-a a{color:#3388cc;font-weight:bold;}.ui-page-theme-a a:visited,html .ui-bar-a a:visited,html .ui-body-a a:visited,html body .ui-group-theme-a a:visited{color:#3388cc;}.ui-page-theme-a a:hover,html .ui-bar-a a:hover,html .ui-body-a a:hover,html body .ui-group-theme-a a:hover{color:#005599;}.ui-page-theme-a a:active,html .ui-bar-a a:active,html .ui-body-a a:active,html body .ui-group-theme-a a:active{color:#005599;}.ui-page-theme-a .ui-btn,html .ui-bar-a .ui-btn,html .ui-body-a .ui-btn,html body .ui-group-theme-a .ui-btn,html head + body .ui-btn.ui-btn-a,.ui-page-theme-a .ui-btn:visited,html .ui-bar-a .ui-btn:visited,html .ui-body-a .ui-btn:visited,html body .ui-group-theme-a .ui-btn:visited,html head + body .ui-btn.ui-btn-a:visited{background-color:#ededed;border-color:#dddddd;color:#000000;text-shadow:0 1px 0 #eeeeee;}.ui-page-theme-a .ui-btn:hover,html .ui-bar-a .ui-btn:hover,html .ui-body-a .ui-btn:hover,html body .ui-group-theme-a .ui-btn:hover,html head + body .ui-btn.ui-btn-a:hover{background-color:#FFFFFF;border-color:#dddddd;color:#000000;text-shadow:0 1px 0 #eeeeee;}.ui-page-theme-a .ui-btn:active,html .ui-bar-a .ui-btn:active,html .ui-body-a .ui-btn:active,html body .ui-group-theme-a .ui-btn:active,html head + body .ui-btn.ui-btn-a:active{background-color:#FFFFFF;border-color:#005599;color:#000000;text-shadow:0 1px 0 #eeeeee;}.ui-page-theme-a .ui-btn.ui-btn-active,html .ui-bar-a .ui-btn.ui-btn-active,html .ui-body-a .ui-btn.ui-btn-active,html body .ui-group-theme-a .ui-btn.ui-btn-active,html head + body .ui-btn.ui-btn-a.ui-btn-active,.ui-page-theme-a .ui-checkbox-on:after,html .ui-bar-a .ui-checkbox-on:after,html .ui-body-a .ui-checkbox-on:after,html body .ui-group-theme-a .ui-checkbox-on:after,.ui-btn.ui-checkbox-on.ui-btn-a:after,.ui-page-theme-a .ui-flipswitch-active,html .ui-bar-a .ui-flipswitch-active,html .ui-body-a .ui-flipswitch-active,html body .ui-group-theme-a .ui-flipswitch-active,html body .ui-flipswitch.ui-bar-a.ui-flipswitch-active,.ui-page-theme-a .ui-slider-track .ui-btn-active,html .ui-bar-a .ui-slider-track .ui-btn-active,html .ui-body-a .ui-slider-track .ui-btn-active,html body .ui-group-theme-a .ui-slider-track .ui-btn-active,html body div.ui-slider-track.ui-body-a .ui-btn-active{background-color:#3388cc;border-color:#005599;color:#ffffff;text-shadow:0 1px 0 #005599;}.ui-page-theme-a .ui-radio-on:after,html .ui-bar-a .ui-radio-on:after,html .ui-body-a .ui-radio-on:after,html body .ui-group-theme-a .ui-radio-on:after,.ui-btn.ui-radio-on.ui-btn-a:after{border-color:#3388cc;}.ui-page-theme-a .ui-btn:focus,html .ui-bar-a .ui-btn:focus,html .ui-body-a .ui-btn:focus,html body .ui-group-theme-a .ui-btn:focus,html head + body .ui-btn.ui-btn-a:focus,.ui-page-theme-a .ui-focus,html .ui-bar-a .ui-focus,html .ui-body-a .ui-focus,html body .ui-group-theme-a .ui-focus,html head + body .ui-btn-a.ui-focus,html head + body .ui-body-a.ui-focus{-webkit-box-shadow:0 0 12px #3388cc;-moz-box-shadow:0 0 12px #3388cc;box-shadow:0 0 12px #3388cc;}.ui-bar-b,.ui-page-theme-b .ui-bar-inherit,html .ui-bar-b .ui-bar-inherit,html .ui-body-b .ui-bar-inherit,html body .ui-group-theme-b .ui-bar-inherit{background-color:#8cc63f;border-color:#4d6c22;color:#ffffff;text-shadow:0 1px 0 #444444;font-weight:bold;}.ui-bar-b{border-width:1px;border-style:solid;}.ui-overlay-b,.ui-page-theme-b,.ui-page-theme-b .ui-panel-wrapper{background-color:#ffffff;border-color:#ffffff;color:#000000;text-shadow:0 1px 0 #eeeeee;}.ui-body-b,.ui-page-theme-b .ui-body-inherit,html .ui-bar-b .ui-body-inherit,html .ui-body-b .ui-body-inherit,html body .ui-group-theme-b .ui-body-inherit,html .ui-panel-page-container-b{background-color:#eff7e4;border-color:#4d6c22;color:#000000;text-shadow:0 1px 0 #eeeeee;}.ui-body-b{border-width:1px;border-style:solid;}.ui-page-theme-b a,html .ui-bar-b a,html .ui-body-b a,html body .ui-group-theme-b a{color:#6e9e2f;font-weight:bold;}.ui-page-theme-b a:visited,html .ui-bar-b a:visited,html .ui-body-b a:visited,html body .ui-group-theme-b a:visited{color:#47661e;}.ui-page-theme-b a:hover,html .ui-bar-b a:hover,html .ui-body-b a:hover,html body .ui-group-theme-b a:hover{color:#7eb536;}.ui-page-theme-b a:active,html .ui-bar-b a:active,html .ui-body-b a:active,html body .ui-group-theme-b a:active{color:#6e9e2f;}.ui-page-theme-b .ui-btn,html .ui-bar-b .ui-btn,html .ui-body-b .ui-btn,html body .ui-group-theme-b .ui-btn,html head + body .ui-btn.ui-btn-b,.ui-page-theme-b .ui-btn:visited,html .ui-bar-b .ui-btn:visited,html .ui-body-b .ui-btn:visited,html body .ui-group-theme-b .ui-btn:visited,html head + body .ui-btn.ui-btn-b:visited{background-color:#d0e8b1;border-color:#727f61;color:#000000;text-shadow:0 1px 0 #eeeeee;}.ui-page-theme-b .ui-btn:hover,html .ui-bar-b .ui-btn:hover,html .ui-body-b .ui-btn:hover,html body .ui-group-theme-b .ui-btn:hover,html head + body .ui-btn.ui-btn-b:hover{background-color:#efFFcb;border-color:#838c6f;color:#000000;text-shadow:0 1px 0 #eeeeee;}.ui-page-theme-b .ui-btn:active,html .ui-bar-b .ui-btn:active,html .ui-body-b .ui-btn:active,html body .ui-group-theme-b .ui-btn:active,html head + body .ui-btn.ui-btn-b:active{background-color:#efFFcb;border-color:#838c6f;color:#000000;text-shadow:0 1px 0 #eeeeee;}.ui-page-theme-b .ui-btn.ui-btn-active,html .ui-bar-b .ui-btn.ui-btn-active,html .ui-body-b .ui-btn.ui-btn-active,html body .ui-group-theme-b .ui-btn.ui-btn-active,html head + body .ui-btn.ui-btn-b.ui-btn-active,.ui-page-theme-b .ui-checkbox-on:after,html .ui-bar-b .ui-checkbox-on:after,html .ui-body-b .ui-checkbox-on:after,html body .ui-group-theme-b .ui-checkbox-on:after,.ui-btn.ui-checkbox-on.ui-btn-b:after,.ui-page-theme-b .ui-flipswitch-active,html .ui-bar-b .ui-flipswitch-active,html .ui-body-b .ui-flipswitch-active,html body .ui-group-theme-b .ui-flipswitch-active,html body .ui-flipswitch.ui-bar-b.ui-flipswitch-active,.ui-page-theme-b .ui-slider-track .ui-btn-active,html .ui-bar-b .ui-slider-track .ui-btn-active,html .ui-body-b .ui-slider-track .ui-btn-active,html body .ui-group-theme-b .ui-slider-track .ui-btn-active,html body div.ui-slider-track.ui-body-b .ui-btn-active{background-color:#6e9e2f;border-color:#3c5619;color:#ffffff;text-shadow:0 1px 0 #444444;}.ui-page-theme-b .ui-radio-on:after,html .ui-bar-b .ui-radio-on:after,html .ui-body-b .ui-radio-on:after,html body .ui-group-theme-b .ui-radio-on:after,.ui-btn.ui-radio-on.ui-btn-b:after{border-color:#6e9e2f;}.ui-page-theme-b .ui-btn:focus,html .ui-bar-b .ui-btn:focus,html .ui-body-b .ui-btn:focus,html body .ui-group-theme-b .ui-btn:focus,html head + body .ui-btn.ui-btn-b:focus,.ui-page-theme-b .ui-focus,html .ui-bar-b .ui-focus,html .ui-body-b .ui-focus,html body .ui-group-theme-b .ui-focus,html head + body .ui-btn-b.ui-focus,html head + body .ui-body-b.ui-focus{-webkit-box-shadow:0 0 12px #6e9e2f;-moz-box-shadow:0 0 12px #6e9e2f;box-shadow:0 0 12px #6e9e2f;}.ui-bar-c,.ui-page-theme-c .ui-bar-inherit,html .ui-bar-c .ui-bar-inherit,html .ui-body-c .ui-bar-inherit,html body .ui-group-theme-c .ui-bar-inherit{background-color:#ffd557;border-color:#8c752f;color:#000000;text-shadow:0 1px 0 #eeeeee;font-weight:bold;}.ui-bar-c{border-width:1px;border-style:solid;}.ui-overlay-c,.ui-page-theme-c,.ui-page-theme-c .ui-panel-wrapper{background-color:#ffffff;border-color:#ffffff;color:#000000;text-shadow:0 1px 0 #eeeeee;}.ui-body-c,.ui-page-theme-c .ui-body-inherit,html .ui-bar-c .ui-body-inherit,html .ui-body-c .ui-body-inherit,html body .ui-group-theme-c .ui-body-inherit,html .ui-panel-page-container-c{background-color:#fff9e5;border-color:#8c887d;color:#000000;text-shadow:0 1px 0 #eeeeee;}.ui-body-c{border-width:1px;border-style:solid;}.ui-page-theme-c a,html .ui-bar-c a,html .ui-body-c a,html body .ui-group-theme-c a{color:#fabb00;font-weight:bold;}.ui-page-theme-c a:visited,html .ui-bar-c a:visited,html .ui-body-c a:visited,html body .ui-group-theme-c a:visited{color:#a27900;}.ui-page-theme-c a:hover,html .ui-bar-c a:hover,html .ui-body-c a:hover,html body .ui-group-theme-c a:hover{color:#FFd745;}.ui-page-theme-c a:active,html .ui-bar-c a:active,html .ui-body-c a:active,html body .ui-group-theme-c a:active{color:#fabb00;}.ui-page-theme-c .ui-btn,html .ui-bar-c .ui-btn,html .ui-body-c .ui-btn,html body .ui-group-theme-c .ui-btn,html head + body .ui-btn.ui-btn-c,.ui-page-theme-c .ui-btn:visited,html .ui-bar-c .ui-btn:visited,html .ui-body-c .ui-btn:visited,html body .ui-group-theme-c .ui-btn:visited,html head + body .ui-btn.ui-btn-c:visited{background-color:#fff1c7;border-color:#8c846d;color:#000000;text-shadow:0 1px 0 #eeeeee;}.ui-page-theme-c .ui-btn:hover,html .ui-bar-c .ui-btn:hover,html .ui-body-c .ui-btn:hover,html body .ui-group-theme-c .ui-btn:hover,html head + body .ui-btn.ui-btn-c:hover{background-color:#FFFFe4;border-color:#8c8c7d;color:#000000;text-shadow:0 1px 0 #eeeeee;}.ui-page-theme-c .ui-btn:active,html .ui-bar-c .ui-btn:active,html .ui-body-c .ui-btn:active,html body .ui-group-theme-c .ui-btn:active,html head + body .ui-btn.ui-btn-c:active{background-color:#FFFFe4;border-color:#8c8c7d;color:#000000;text-shadow:0 1px 0 #eeeeee;}.ui-page-theme-c .ui-btn.ui-btn-active,html .ui-bar-c .ui-btn.ui-btn-active,html .ui-body-c .ui-btn.ui-btn-active,html body .ui-group-theme-c .ui-btn.ui-btn-active,html head + body .ui-btn.ui-btn-c.ui-btn-active,.ui-page-theme-c .ui-checkbox-on:after,html .ui-bar-c .ui-checkbox-on:after,html .ui-body-c .ui-checkbox-on:after,html body .ui-group-theme-c .ui-checkbox-on:after,.ui-btn.ui-checkbox-on.ui-btn-c:after,.ui-page-theme-c .ui-flipswitch-active,html .ui-bar-c .ui-flipswitch-active,html .ui-body-c .ui-flipswitch-active,html body .ui-group-theme-c .ui-flipswitch-active,html body .ui-flipswitch.ui-bar-c.ui-flipswitch-active,.ui-page-theme-c .ui-slider-track .ui-btn-active,html .ui-bar-c .ui-slider-track .ui-btn-active,html .ui-body-c .ui-slider-track .ui-btn-active,html body .ui-group-theme-c .ui-slider-track .ui-btn-active,html body div.ui-slider-track.ui-body-c .ui-btn-active{background-color:#fabb00;border-color:#896600;color:#ffffff;text-shadow:0 1px 0 #444444;}.ui-page-theme-c .ui-radio-on:after,html .ui-bar-c .ui-radio-on:after,html .ui-body-c .ui-radio-on:after,html body .ui-group-theme-c .ui-radio-on:after,.ui-btn.ui-radio-on.ui-btn-c:after{border-color:#fabb00;}.ui-page-theme-c .ui-btn:focus,html .ui-bar-c .ui-btn:focus,html .ui-body-c .ui-btn:focus,html body .ui-group-theme-c .ui-btn:focus,html head + body .ui-btn.ui-btn-c:focus,.ui-page-theme-c .ui-focus,html .ui-bar-c .ui-focus,html .ui-body-c .ui-focus,html body .ui-group-theme-c .ui-focus,html head + body .ui-btn-c.ui-focus,html head + body .ui-body-c.ui-focus{-webkit-box-shadow:0 0 12px #fabb00;-moz-box-shadow:0 0 12px #fabb00;box-shadow:0 0 12px #fabb00;}.ui-disabled,.ui-state-disabled,button[disabled],.ui-select .ui-btn.ui-state-disabled{filter:Alpha(Opacity=30);opacity:.3;cursor:default !important;pointer-events:none;}.ui-btn:focus,.ui-btn.ui-focus{outline:0;}.ui-noboxshadow .ui-shadow,.ui-noboxshadow .ui-shadow-inset,.ui-noboxshadow .ui-overlay-shadow,.ui-noboxshadow .ui-shadow-icon.ui-btn:after,.ui-noboxshadow .ui-shadow-icon .ui-btn:after,.ui-noboxshadow .ui-focus,.ui-noboxshadow .ui-btn:focus,.ui-noboxshadow input:focus,.ui-noboxshadow .ui-panel{-webkit-box-shadow:none !important;-moz-box-shadow:none !important;box-shadow:none !important;}.ui-noboxshadow .ui-btn:focus,.ui-noboxshadow .ui-focus{outline-width:1px;outline-style:auto;}
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/webapi.ashx
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/webapi.ashx	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/webapi.ashx	(revision 101)
@@ -0,0 +1,1 @@
+﻿<%@ WebHandler Language="C#" CodeBehind="webapi.ashx.cs" Class="EcnlCtrlUI.webapi" %>
Index: uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/webapi.ashx.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/webapi.ashx.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/EcnlCtrlUI/webapi.ashx.cs	(revision 101)
@@ -0,0 +1,882 @@
+﻿/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ * 
+ *  上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
+ * 
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
+ * 
+ *  @(#) $Id$
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Net.WebSockets;
+using System.Runtime.Serialization.Json;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Web;
+using System.Web.WebSockets;
+using System.Xml;
+using Codeplex.Data;
+
+namespace EcnlCtrlUI
+{
+	/// <summary>
+	/// webapi の概要の説明です
+	/// </summary>
+	public class webapi : IHttpHandler
+	{
+		public void ProcessRequest(HttpContext context)
+		{
+			if (context.IsWebSocketRequest) {
+				WebSocketHandler handler = new WebSocketHandler();
+				context.AcceptWebSocketRequest(handler.WebSocketRequest);
+			}
+			else if (String.Compare(context.Request.RequestType, "POST", true) == 0) {
+				var json = DynamicJson.Parse(context.Request.InputStream);
+
+				context.Response.ContentType = "application/json";
+
+				if (json.IsArray) {
+					WebSocketHandler handler = new WebSocketHandler();
+					handler.RecvMessage((dynamic[])json, (jsonMsg) => {
+						context.Response.Write("  " + jsonMsg);
+					});
+				}
+			}
+			else {
+				context.Response.ContentType = "text/plain";
+				context.Response.Write("Hello World!!");
+			}
+		}
+
+		public bool IsReusable
+		{
+			get
+			{
+				return false;
+			}
+		}
+	}
+
+	class WebSocketHandler
+	{
+		public delegate void SendHandler(string jsonMsg);
+
+		private static List<WebSocketHandler> connectedHandlers = new List<WebSocketHandler>();
+		private WebSocket webSocket;
+		private SendHandler sendCallback;
+
+		public async Task WebSocketRequest(AspNetWebSocketContext context)
+		{
+			connectedHandlers.Add(this);
+
+			webSocket = context.WebSocket;
+			ArraySegment<byte> buf = new ArraySegment<byte>(new byte[2048]);
+			while (true) {
+				WebSocketReceiveResult res =
+					await webSocket.ReceiveAsync(buf, CancellationToken.None);
+
+				if (res.MessageType == WebSocketMessageType.Close) {
+					// Close Message
+					connectedHandlers.Remove(this);
+					await webSocket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure,
+						"close", CancellationToken.None);
+					break;
+				}
+				else if (res.MessageType == WebSocketMessageType.Text) {
+					// Text Message
+					System.IO.MemoryStream ms = new System.IO.MemoryStream(buf.Array, 0, res.Count);
+					var json = DynamicJson.Parse(ms);
+
+					if (json.IsArray) {
+						RecvMessage((dynamic[])json, SendWebSocket);
+					}
+				}
+			}
+		}
+		public void RecvMessage(dynamic[] wamp, SendHandler sendCallback)
+		{
+			this.sendCallback = sendCallback;
+
+			switch ((int)wamp[0]) {
+			case 1:
+				OnHelow(wamp);
+				break;
+			case 32:
+				OnSubscribe(wamp);
+				break;
+			case 48:
+				OnCall(wamp);
+				break;
+			}
+		}
+
+		private void OnHelow(dynamic[] wamp)
+		{
+			string RealmUri = wamp[1];
+			dynamic Details = wamp[2];
+
+			sendCallback(String.Format("[2,123,{0}]", Details.ToString()));
+		}
+
+		private void OnSubscribe(dynamic[] wamp)
+		{
+			long RequestId = (long)wamp[1];
+			dynamic Options = wamp[2];
+			string TopicUri = wamp[3];
+
+			if (TopicUri == "com.sonycsl.kadecot.echonetlite.topic.GeneralLighting.OperationStatus") {
+				sendCallback(String.Format("[33,{0},789]", RequestId));
+			}
+		}
+
+		private void OnCall(dynamic[] wamp)
+		{
+			long requestId = (long)wamp[1];
+			dynamic options = wamp[2];
+			string procedureUri = wamp[3];
+			dynamic[] arguments = (wamp.Length <= 4) ? null : (dynamic[])wamp[4];
+			dynamic argumentsKw = (wamp.Length <= 5) ? null : wamp[5];
+
+			switch (procedureUri) {
+			case "com.sonycsl.kadecot.provider.procedure.getDeviceList":
+				GetDeviceList(requestId);
+				break;
+			case "com.sonycsl.kadecot.echonetlite.procedure.set":
+				KadecotSet(requestId, (int)options.deviceId, argumentsKw);
+				break;
+			case "com.sonycsl.kadecot.echonetlite.procedure.get":
+				KadecotGet(requestId, (int)options.deviceId, argumentsKw);
+				break;
+			case "jp.toppers.ecnl.procedure.getDeviceInfo":
+				GetDeviceInfo(requestId, (int)options.deviceId);
+				break;
+			case "jp.toppers.ecnl.procedure.set":
+				EsvSet(requestId, (int)options.deviceId, argumentsKw);
+				break;
+			case "jp.toppers.ecnl.procedure.get":
+				EsvGet(requestId, (int)options.deviceId, argumentsKw);
+				break;
+			case "jp.toppers.ecnl.procedure.setget":
+				EsvSetGet(requestId, (int)options.deviceId, argumentsKw);
+				break;
+			case "com.sonycsl.kadecot.arduino.pinMode":
+				PinMode(requestId, argumentsKw);
+				break;
+			case "com.sonycsl.kadecot.arduino.digitalWrite":
+				DigitalWrite(requestId, argumentsKw);
+				break;
+			case "com.sonycsl.kadecot.arduino.digitalRead":
+				DigitalRead(requestId, argumentsKw);
+				break;
+			case "com.sonycsl.kadecot.arduino.analogRead":
+				AnalogRead(requestId, argumentsKw);
+				break;
+			case "com.sonycsl.kadecot.arduino.analogWrite":
+				AnalogWrite(requestId, argumentsKw);
+				break;
+			}
+		}
+
+		private void GetDeviceList(long requestId)
+		{
+			var arg = new
+			{
+				deviceList = new[] {
+					new {
+						description = "GR-SAKURA",
+						deviceId = 1,
+						deviceType = "GrSakura",
+						ip_addr = "192.168.2.124",
+						nickname = "GR-SAKURA",
+						protocol = "arduino",
+						status = true
+					},
+					new { 
+						description = "Controller",
+						deviceId = 2,
+						deviceType = "Controller",
+						ip_addr = "192.168.2.124",
+						nickname = "Controller",
+						protocol = "echonetlite",
+						status = true
+					},
+					new { 
+						description = "HomeAirConditioner",
+						deviceId = 4,
+						deviceType = "HomeAirConditioner",
+						ip_addr = "192.168.2.201",
+						nickname = "HomeAirConditioner",
+						protocol = "echonetlite",
+						status = true
+					},
+					new { 
+						description = "GeneralLighting",
+						deviceId = 5,
+						deviceType = "GeneralLighting",
+						ip_addr = "192.168.2.201",
+						nickname = "GeneralLighting",
+						protocol = "echonetlite",
+						status = true
+					},
+					new { 
+						description = "ElectricallyOperatedShade",
+						deviceId = 6,
+						deviceType = "ElectricallyOperatedShade",
+						ip_addr = "192.168.2.201",
+						nickname = "ElectricallyOperatedShade",
+						protocol = "echonetlite",
+						status = true
+					},
+					new { 
+						description = "TemperatureSensor",
+						deviceId = 7,
+						deviceType = "TemperatureSensor",
+						ip_addr = "192.168.2.201",
+						nickname = "TemperatureSensor",
+						protocol = "echonetlite",
+						status = false
+					},
+					new { 
+						description = "ElectricLock",
+						deviceId = 8,
+						deviceType = "ElectricLock",
+						ip_addr = "192.168.2.201",
+						nickname = "ElectricLock",
+						protocol = "echonetlite",
+						status = false
+					}
+				}
+			};
+
+			sendCallback(String.Format("[50,{0},{1},{2},{3}]",
+				requestId, "{}", "[]", DynamicJson.Serialize(arg)));
+		}
+
+		byte OperationStatus = 0x30;
+
+		private void KadecotSet(long requestId, int deviceId, dynamic argumentsKw)
+		{
+			string arg = DynamicJson.Serialize(DeviceObject.KadecotSet(deviceId, argumentsKw));
+
+			sendCallback(String.Format("[50,{0},{{\"deviceId\":{1}}},{2},{3}]",
+				requestId, deviceId, "[]", arg));
+		}
+
+		private void KadecotGet(long requestId, int deviceId, dynamic argumentsKw)
+		{
+			var result = new
+			{
+				propertyName = "OperationStatus",
+				propertyValue = new byte[] { OperationStatus }
+			};
+			string arg;
+
+			switch (deviceId) {
+			case 2:
+			case 4:
+			case 5:
+			case 6:
+			case 7:
+			case 8:
+				arg = DynamicJson.Serialize(result);
+				break;
+			default:
+				return;
+			}
+			//	arg = DeviceObject.SetDeviceObject(deviceId, argumentsKw);
+
+			sendCallback(String.Format("[50,{0},{{\"deviceId\":{1}}},{2},{3}]",
+				requestId, deviceId, "[]", arg));
+		}
+		/// <summary>
+		/// 機器情報を返します
+		/// </summary>
+		/// <param name="requestId"></param>
+		/// <param name="deviceId"></param>
+		private void GetDeviceInfo(long requestId, int deviceId)
+		{
+			string arg;
+
+			switch (deviceId) {
+			case 2:
+				Debug.WriteLine("case 2");
+				arg = DynamicJson.Serialize(new
+				{
+					x1 = 0x05,
+					x2 = 0xFF,
+					x3 = 0x01,
+					enodid = 0x01,
+					properties = new[] {
+						new { epc = 0x80, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0x81, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0x82, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0x97, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0x88, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0x98, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0x8A, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0x9D, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0x9E, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0x9F, flag = "RULE_SET,RULE_GET,ANNOUNCE" }
+					}
+				});
+				break;
+			case 4:
+				Debug.WriteLine("case 4");
+				arg = DynamicJson.Serialize(
+				new
+				{
+					x1 = 0x01,
+					x2 = 0x30,
+					x3 = 0x01,
+					enodid = 0x03,
+					properties = new[] {
+						new { epc = 0x80, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0xB0, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0x81, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0x82, flag = "RULE_GET" },
+						new { epc = 0xB3, flag = "RULE_SET,RULE_GET" },
+						new { epc = 0x88, flag = "RULE_GET,ANNOUNCE" },
+						new { epc = 0x8A, flag = "RULE_GET" },
+						new { epc = 0x9D, flag = "RULE_GET" },
+						new { epc = 0x9E, flag = "RULE_GET" },
+						new { epc = 0x9F, flag = "RULE_GET" }
+					}
+				});
+				break;
+			case 5:
+				Debug.WriteLine("case 5");
+				arg = DynamicJson.Serialize(new
+				{
+					x1 = 0x02,
+					x2 = 0x90,
+					x3 = 0x01,
+					enodid = 0x03,
+					properties = new[] {
+						new { epc = 0x80, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0x81, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0x82, flag = "RULE_GET" },
+						new { epc = 0xB6, flag = "RULE_SET,RULE_GET" },
+						new { epc = 0x88, flag = "RULE_GET,ANNOUNCE" },
+						new { epc = 0x8A, flag = "RULE_GET" },
+						new { epc = 0x9D, flag = "RULE_GET" },
+						new { epc = 0x9E, flag = "RULE_GET" },
+						new { epc = 0x9F, flag = "RULE_GET" }
+					}
+				});
+				break;
+			case 6:
+				Debug.WriteLine("case 6");
+				arg = DynamicJson.Serialize(new
+				{
+					x1 = 0x02,
+					x2 = 0x60,
+					x3 = 0x01,
+					enodid = 0x03,
+					properties = new[] {
+						new { epc = 0x80, flag = "RULE_GET,ANNOUNCE" },
+						new { epc = 0xE0, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0x81, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0xE1, flag = "RULE_SET,RULE_GET" },
+						new { epc = 0x82, flag = "RULE_GET" },
+						new { epc = 0x88, flag = "RULE_GET,ANNOUNCE" },
+						new { epc = 0x8A, flag = "RULE_GET" },
+						new { epc = 0x9D, flag = "RULE_GET" },
+						new { epc = 0x9E, flag = "RULE_GET" },
+						new { epc = 0x9F, flag = "RULE_GET" }
+					}
+				});
+				break;
+			case 7:
+				Debug.WriteLine("case 7");
+				arg = DynamicJson.Serialize(new
+				{
+					x1 = 0x00,
+					x2 = 0x11,
+					x3 = 0x01,
+					enodid = 0x03,
+					properties = new[] {
+						new { epc = 0x80, flag = "RULE_GET,ANNOUNCE" },
+						new { epc = 0xE0, flag = "RULE_GET" },
+						new { epc = 0x81, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0x82, flag = "RULE_GET" },
+						new { epc = 0x88, flag = "RULE_GET,ANNOUNCE" },
+						new { epc = 0x8A, flag = "RULE_GET" },
+						new { epc = 0x9D, flag = "RULE_GET" },
+						new { epc = 0x9E, flag = "RULE_GET" },
+						new { epc = 0x9F, flag = "RULE_GET" }
+					}
+				});
+				break;
+			case 8:
+				Debug.WriteLine("case 8");
+				arg = DynamicJson.Serialize(new
+				{
+					x1 = 0x02,
+					x2 = 0x6F,
+					x3 = 0x01,
+					enodid = 0x03,
+					properties = new[] {
+						new { epc = 0x80, flag = "RULE_GET,ANNOUNCE" },
+						new { epc = 0xE0, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0x81, flag = "RULE_SET,RULE_GET,ANNOUNCE" },
+						new { epc = 0x82, flag = "RULE_GET" },
+						new { epc = 0xE5, flag = "ANNOUNCE" },
+						new { epc = 0x88, flag = "RULE_GET,ANNOUNCE" },
+						new { epc = 0x8A, flag = "RULE_GET" },
+						new { epc = 0x9D, flag = "RULE_GET" },
+						new { epc = 0x9E, flag = "RULE_GET" },
+						new { epc = 0x9F, flag = "RULE_GET" }
+					}
+				});
+				break;
+			default:
+				Debug.WriteLine("default");
+				return;
+			}
+
+			sendCallback(String.Format("[50,{0},{{\"deviceId\":{1}}},{2},{3}]",
+				requestId, deviceId, "[]", arg));
+		}
+
+		private void EsvGet(long requestId, int deviceId, dynamic argumentsKw)
+		{
+			object arg = DeviceObject.GetDeviceObject(deviceId, argumentsKw);
+
+			if (arg == null)
+				return;
+
+			sendCallback(String.Format("[50,{0},{{\"deviceId\":{1}}},{2},{3}]",
+				requestId, deviceId, "[]", DynamicJson.Serialize(arg)));
+
+		}
+		/// <summary>
+		/// jp.toppers.ecnl.procedure.setが呼び出された時実行します
+		/// </summary>
+		/// <param name="requestId"></param>
+		/// <param name="deviceId"></param>
+		/// <param name="argumentsKw"></param>
+		private void EsvSet(long requestId, int deviceId, dynamic argumentsKw)
+		{
+
+			object arg = DeviceObject.SetDeviceObject(deviceId, argumentsKw);
+			if (arg == null)
+				return;
+
+			sendCallback(String.Format("[50,{0},{{\"deviceId\":{1}}},{2},{3}]",
+				requestId, deviceId, "[]", DynamicJson.Serialize(arg)));
+		}
+
+		private void EsvSetGet(long requestId, int deviceId, dynamic argumentsKw)
+		{
+			object arg = DeviceObject.SetDeviceObject(deviceId, argumentsKw);
+			if (arg == null)
+				return;
+
+			sendCallback(String.Format("[50,{0},{1},{2},{3}]",
+				requestId, "{}", "[]", DynamicJson.Serialize(arg)));
+		}
+
+		private void PinMode(long requestId, dynamic argumentsKw)
+		{
+			dynamic argument = DynamicJson.Parse(((DynamicJson)argumentsKw).ToString());
+			Pin.PinMode[(int)argument.pin] = (string)argument.mode;
+			sendCallback(String.Format("[50,{0},{1},{2},{3}]",
+			requestId, "{\"deviceId\":1}", "[]", "{}"));
+		}
+
+		private void DigitalWrite(long requestId, dynamic argumentsKw)
+		{
+			dynamic argument = DynamicJson.Parse(((DynamicJson)argumentsKw).ToString());
+
+			Pin.Digital[(int)argument.pin] = (string)argument.value;
+			var arg = new { pin = argument.pin, value = argument.value };
+
+			sendCallback(String.Format("[50,{0},{1},{2},{3}]",
+				requestId, "{\"deviceId\":1}", "[]", "{}"));
+		}
+
+		private void DigitalRead(long requestId, dynamic argumentsKw)
+		{
+			dynamic argument = DynamicJson.Parse(((DynamicJson)argumentsKw).ToString());
+			var arg = new { pin = argument.pin, value = Pin.Digital[(int)argument.pin] };
+			sendCallback(String.Format("[50,{0},{1},{2},{3}]",
+				requestId, "{\"deviceId\":1}", "[]", DynamicJson.Serialize(arg)));
+		}
+
+		private void AnalogRead(long requestId, dynamic argumentsKw)
+		{
+			dynamic argument = DynamicJson.Parse(((DynamicJson)argumentsKw).ToString());
+
+			var arg = new { pin = argument.pin, value = Pin.analogRead[(int)argument.pin] };
+			sendCallback(String.Format("[50,{0},{1},{2},{3}]",
+				requestId, "{\"deviceId\":1}", "[]", DynamicJson.Serialize(arg)));
+		}
+
+		private void AnalogWrite(long requestId, dynamic argumentsKw)
+		{
+			dynamic argument = DynamicJson.Parse(((DynamicJson)argumentsKw).ToString());
+			Pin.AnalogWrite[(int)argument.pin] = int.Parse(((double)argument.value).ToString());
+			sendCallback(String.Format("[50,{0},{1},{2},{3}]",
+				requestId, "{\"deviceId\":1}", "[]", "{}"));
+		}
+
+		private void SendWebSocket(string jsonMsg)
+		{
+			ArraySegment<byte> buf = new ArraySegment<byte>(
+				System.Text.Encoding.ASCII.GetBytes(jsonMsg));
+
+			webSocket.SendAsync(buf, WebSocketMessageType.Text,
+				true, CancellationToken.None);
+		}
+	}
+
+	public class Device
+	{
+		public Device(int esv, int sender, string seoj, string deoj, object[] properties)
+		{
+			this.esv = esv;
+			this.sender = sender;
+			this.seoj = seoj;
+			this.deoj = deoj;
+			this.properties = new Properties[properties.Length];
+
+			for (int i = 0; i < properties.Length; i++) {
+				this.properties[i] = new Properties(properties[i]);
+			}
+		}
+
+		public long esv;
+		public int sender;
+		public string seoj;
+		public string deoj;
+		public Properties[] properties;
+		public object GetDevice()
+		{
+			object[] prop = new object[this.properties.Length];
+			for (int i = 0; i < prop.Length; i++) {
+				prop[i] = new { epc = this.properties[i].epc, edt = this.properties[i].edt };
+			}
+
+			object obj = new
+			{
+				esv = this.esv,
+				sender = this.sender,
+				seoj = this.seoj,
+				deoj = this.deoj,
+				properties = prop,
+			};
+			return obj;
+		}
+
+		private object[] GetProperties(int[] epc)
+		{
+			List<object> properties = new List<object>();
+			bool flag = false;
+			for (int i = 0; i < this.properties.Length; i++) {
+				if (epc.Contains(this.properties[i].epc)) {
+					properties.Add(new { epc = this.properties[i].epc, edt = this.properties[i].edt });
+					flag = true;
+				};
+			}
+			DynamicJson.Serialize(properties.ToArray());
+			if (flag) return properties.ToArray();
+			else return null;
+		}
+
+		public object GetDevice(int[] epc)
+		{
+			return new
+			{
+				esv = this.esv,
+				sender = this.sender,
+				seoj = this.seoj,
+				deoj = this.deoj,
+				properties = GetProperties(epc),
+			};
+		}
+
+		public object SetProperties(Properties properties)
+		{
+			for (int i = 0; i < this.properties.Length; i++) {
+				if (this.properties[i].epc == properties.epc) {
+					this.properties[i].edt = properties.edt;
+				}
+			}
+			return GetDevice();
+		}
+
+		public object SetProperties(Properties[] properties)
+		{
+			for (int i = 0; i < properties.Length; i++) {
+				SetProperties(properties[i]);
+			}
+			return GetDevice();
+		}
+
+		public class Properties
+		{
+			public int epc;
+			public string edt;
+			public Properties(object properties)
+			{
+				dynamic prop = (dynamic)properties;
+				this.epc = (int)prop.epc;
+				this.edt = (string)prop.edt;
+			}
+			public Properties(int epc, string edt)
+			{
+				this.epc = epc;
+				this.edt = edt;
+			}
+		}
+	}
+
+	static class Pin
+	{
+		static Pin()
+		{
+			Digital[0] = "HIGH";
+			Digital[1] = "HIGH";
+			Digital[2] = "HIGH";
+			Digital[3] = "HIGH";
+			Digital[4] = "HIGH";
+			Digital[5] = "LOW";
+			Digital[6] = "HIGH";
+			Digital[7] = "HIGH";
+			Digital[8] = "HIGH";
+			Digital[9] = "HIGH";
+			Digital[10] = "HIGH";
+			Digital[11] = "HIGH";
+			Digital[12] = "HIGH";
+			Digital[13] = "HIGH";
+
+			analogRead[14] = 100;
+			analogRead[15] = 200;
+			analogRead[16] = 300;
+			analogRead[17] = 400;
+			analogRead[18] = 500;
+			analogRead[19] = 600;
+		}
+		public static Dictionary<int, string> Digital = new Dictionary<int, string>();
+		public static Dictionary<int, string> PinMode = new Dictionary<int, string>();
+		public static Dictionary<int, int> AnalogWrite = new Dictionary<int, int>();
+		public static Dictionary<int, int> analogRead = new Dictionary<int, int>();
+	}
+
+	static class DeviceObject
+	{
+		public static object KadecotSet(int index, dynamic argumentsKw)
+		{
+			string propertyName = (string)argumentsKw.propertyName;
+			object propertyValue = argumentsKw.propertyValue;
+			string str = propertyValue.ToString();
+			str = str.Replace("[", "");
+			str = str.Replace("]", "");
+			int i = int.Parse(str);
+			int epc;
+
+			if (propertyName == "OperationStatus") {
+				epc = 0x80;
+			}
+			else {
+				epc = Convert.ToInt32(propertyName, 16);
+			}
+			string edt = i.ToString("X2");
+
+			Device device = GetDevice(index);
+			Device.Properties prop = new Device.Properties(epc, edt);
+			device.SetProperties(prop);
+
+			Device set = SetDevice(index, device);
+			return set.GetDevice();
+		}
+		public static Device GetDevice(int index)
+		{
+			switch (index) {
+			case 2:
+				return D2;
+			case 4:
+				return D4;
+			case 5:
+				return D5;
+			case 6:
+				return D6;
+			case 7:
+				return D7;
+			case 8:
+				return D8;
+			default:
+				return null;
+			}
+		}
+		public static Device SetDevice(int index, Device device)
+		{
+			switch (index) {
+			case 2:
+				return D2 = device;
+			case 4:
+				return D4 = device;
+			case 5:
+				return D5 = device;
+			case 6:
+				return D6 = device;
+			case 7:
+				return D7 = device;
+			case 8:
+				return D8 = device;
+			default:
+				return null;
+			}
+		}
+
+		public static object GetDeviceObject(int index, dynamic argumentsKw)
+		{
+			dynamic[] properties = (dynamic[])argumentsKw.properties;
+			int[] epc;
+			Device device = GetDevice(index);
+			if (device == null) {
+				return null;
+			}
+			else {
+				epc = new int[properties.Length];
+				for (int i = 0; i < epc.Length; i++) {
+					epc[i] = (int)properties[i].epc;
+				}
+				return device.GetDevice(epc);
+			}
+		}
+
+		public static object SetDeviceObject(int index, dynamic argumentsKw)
+		{
+			dynamic[] properties = (dynamic[])argumentsKw.properties;
+			Device device = GetDevice(index);
+			Device.Properties prop;
+			for (int i = 0; i < properties.Length; i++) {
+				prop = new Device.Properties((int)properties[i].epc, (string)properties[i].edt);
+				device.SetProperties(prop);
+			}
+
+			Device set = SetDevice(index, device);
+			return set.GetDevice();
+		}
+
+		public static Device D2 = new Device(0x72, 1, "05FF01", "0EF001", new[] {
+			new {epc = 0xB6, edt = "41"},
+			new {epc = 0x9F, edt = "0B808182888A97989D9E9FB6"},
+			new {epc = 0x9E, edt = "0580819798B6"},
+			new {epc = 0x9D, edt = "03808188"},
+			new {epc = 0x98, edt = "20000000"},
+			new {epc = 0x97, edt = "0000"},
+			new {epc = 0x8A, edt = "0000B3"},
+			new {epc = 0x88, edt = "41"},
+			new {epc = 0x82, edt = "00004300"},
+			new {epc = 0x81, edt = "00"},
+			new {epc = 0x80, edt = "30"}
+		});
+
+		public static Device D4 = new Device(0x72, 3, "013001", "0EF001", new[] {
+			new {epc = 0xB6, edt = "41"},
+			new {epc = 0x9F, edt = "0B808182888A97989D9E9FB6"},
+			new {epc = 0x9E, edt = "0580819798B6"},
+			new {epc = 0x9D, edt = "03808188"},
+			new {epc = 0x98, edt = "07DF0000"},
+			new {epc = 0x97, edt = "0000"},
+			new {epc = 0x8A, edt = "0000B3"},
+			new {epc = 0x88, edt = "41"},
+			new {epc = 0x82, edt = "00004300"},
+			new {epc = 0x81, edt = "00"},
+			new {epc = 0x80, edt = "30"}
+		});
+
+		public static Device D5 = new Device(0x72, 3, "029001", "0EF001", new[] {
+			new {epc = 0xB6, edt = "41"},
+			new {epc = 0x9F, edt = "0B808182888A97989D9E9FB6"},
+			new {epc = 0x9E, edt = "0580819798B6"},
+			new {epc = 0x9D, edt = "03808188"},
+			new {epc = 0x98, edt = "20000000"},
+			new {epc = 0x97, edt = "0000"},
+			new {epc = 0x8A, edt = "0000B3"},
+			new {epc = 0x88, edt = "41"},
+			new {epc = 0x82, edt = "00004300"},
+			new {epc = 0x81, edt = "00"},
+			new {epc = 0x80, edt = "30"},
+			new {epc = 0xB0, edt = "53"},
+			new {epc = 0xB1, edt = "42"}
+		});
+
+		public static Device D6 = new Device(0x72, 3, "026001", "0EF001", new[] {
+			new {epc = 0xB6, edt = "41"},
+			new {epc = 0x9F, edt = "0B808182888A97989D9E9FB6"},
+			new {epc = 0x9E, edt = "0580819798B6"},
+			new {epc = 0x9D, edt = "03808188"},
+			new {epc = 0x98, edt = "20000000"},
+			new {epc = 0x97, edt = "0000"},
+			new {epc = 0x8A, edt = "0000B3"},
+			new {epc = 0x88, edt = "41"},
+			new {epc = 0x82, edt = "00004300"},
+			new {epc = 0x81, edt = "00"},
+			new {epc = 0x80, edt = "30"}
+		});
+
+		public static Device D7 = new Device(0x72, 3, "001101", "0EF001", new[] {
+			new {epc = 0xB6, edt = "41"},
+			new {epc = 0x9F, edt = "0B808182888A97989D9E9FB6"},
+			new {epc = 0x9E, edt = "0580819798B6"},
+			new {epc = 0x9D, edt = "03808188"},
+			new {epc = 0x98, edt = "07DF0000"},
+			new {epc = 0x97, edt = "0000"},
+			new {epc = 0x8A, edt = "0000B3"},
+			new {epc = 0x88, edt = "41"},
+			new {epc = 0x82, edt = "00004300"},
+			new {epc = 0x81, edt = "00"},
+			new {epc = 0x80, edt = "30"}
+		});
+
+		public static Device D8 = new Device(0x72, 3, "026F01", "0EF001", new[] {
+			new {epc = 0xB6, edt = "41"},
+			new {epc = 0x9F, edt = "0B808182888A97989D9E9FB6"},
+			new {epc = 0x9E, edt = "0580819798B6"},
+			new {epc = 0x9D, edt = "03808188"},
+			new {epc = 0x98, edt = "20000000"},
+			new {epc = 0x97, edt = "0000"},
+			new {epc = 0x8A, edt = "0000B3"},
+			new {epc = 0x88, edt = "41"},
+			new {epc = 0x82, edt = "00004300"},
+			new {epc = 0x81, edt = "00"},
+			new {epc = 0x80, edt = "30"},
+			new {epc = 0xB0, edt = "53"},
+			new {epc = 0xB1, edt = "42"}
+		});
+	}
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/NiseWebSocket.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/NiseWebSocket.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/NiseWebSocket.cs	(revision 101)
@@ -0,0 +1,192 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Html;
+using System.Net.WebSockets;
+using System.Runtime.CompilerServices;
+using System.Web;
+using jQueryApi;
+
+public class NiseEvent
+{
+	public string type;
+
+	public NiseEvent(string type)
+	{
+		this.type = type;
+	}
+}
+
+public class MessageEvent : NiseEvent
+{
+	public string data;
+
+	public MessageEvent(string data)
+		: base("message")
+	{
+		this.data = data;
+	}
+}
+
+public class CloseEvent : NiseEvent
+{
+	public const ushort CLOSE_NORMAL = 1000;
+	public const ushort CLOSE_GOING_AWAY = 1001;
+	public const ushort CLOSE_PROTOCOL_ERROR = 1002;
+	public const ushort CLOSE_UNSUPPORTED = 1003;
+	public const ushort CLOSE_TOO_LARGE = 1004;
+	public const ushort CLOSE_NO_STATUS = 1005;
+	public const ushort CLOSE_ABNORMAL = 1006;
+
+	public ushort code;
+	public string reason;
+
+	public CloseEvent(ushort code, string reason)
+		: base("close")
+	{
+		this.code = code;
+		this.reason = reason;
+	}
+}
+
+public delegate void NiseHtmlEventHandler(NiseEvent @event);
+
+public class NiseWebSocket
+{
+	public const ushort CLOSED = (ushort)ReadyState.Closed;
+	public const ushort CLOSING = (ushort)ReadyState.Closing;
+	public const ushort CONNECTING = (ushort)ReadyState.Connecting;
+	public const ushort OPEN = (ushort)ReadyState.Open;
+
+	string _Url;
+	string[] _Protocols;
+	ReadyState _ReadyState = ReadyState.Open;
+	int _PollingTimer;
+
+	public NiseWebSocket(string url)
+	{
+		int opentimer = 0;
+		_ReadyState = ReadyState.Connecting;
+		_Url = url.ReplaceFirst("ws://", "http://");
+		opentimer = Window.SetTimeout(() =>
+		{
+			Window.ClearTimeout(opentimer);
+			Opend();
+		}, 1000);
+	}
+
+	private void Opend()
+	{
+		_ReadyState = ReadyState.Open;
+		NiseEvent oe = new NiseEvent("open");
+		if (OnOpen != null)
+			OnOpen(oe);
+
+		_PollingTimer = Window.SetInterval(() =>
+		{
+			jQuery.Ajax(new jQueryAjaxOptions()
+			{
+				Url = _Url,
+				Type = "POST",
+				DataType = "json",
+				Data = "{\"brk_wai\":\"Polling\"}",
+				Success = (respo, textStatus, request) =>
+				{
+					if (respo != null) {
+						MessageEvent e = new MessageEvent(request.ResponseText);
+						if (OnMessage != null)
+							OnMessage(e);
+					}
+				},
+				Error = (request, textStatus, error) =>
+				{
+				}
+			});
+		}, 1000);
+	}
+
+	public NiseWebSocket(string url, string protocols)
+		: this(url)
+	{
+		_Protocols = protocols.Split(',');
+	}
+
+	public NiseWebSocket(string url, string[] protocols)
+		: this(url)
+	{
+		_Protocols = protocols;
+	}
+
+	[IntrinsicProperty]
+	public BinaryType BinaryType { get; set; }
+	[IntrinsicProperty]
+	public int BufferedAmount { get; private set; }
+	[IntrinsicProperty]
+	public string Extensions { get; private set; }
+	[IntrinsicProperty]
+	[ScriptName("onclose")]
+	public NiseHtmlEventHandler OnClose { get; set; }
+	[IntrinsicProperty]
+	[ScriptName("onerror")]
+	public NiseHtmlEventHandler OnError { get; set; }
+	[IntrinsicProperty]
+	[ScriptName("onmessage")]
+	public NiseHtmlEventHandler OnMessage { get; set; }
+	[IntrinsicProperty]
+	[ScriptName("onopen")]
+	public NiseHtmlEventHandler OnOpen { get; set; }
+	[IntrinsicProperty]
+	public string Protocol { get { return String.Join(",", _Protocols); } }
+	[IntrinsicProperty]
+	public ReadyState ReadyState { get { return _ReadyState; } }
+	[IntrinsicProperty]
+	public string Url { get { return _Url; } }
+
+	public void Close()
+	{
+		if (_PollingTimer != 0) {
+			Window.ClearInterval(_PollingTimer);
+			_PollingTimer = 0;
+		}
+
+		int closetimer = 0;
+		_ReadyState = ReadyState.Closing;
+
+		closetimer = Window.SetTimeout(() =>
+		{
+			Window.ClearTimeout(closetimer);
+			Closed(CloseEvent.CLOSE_NORMAL, "");
+		}, 1000);
+	}
+
+	private void Closed(ushort code, string reason)
+	{
+		_ReadyState = ReadyState.Closed;
+		CloseEvent oe = new CloseEvent(code, reason);
+		if (OnClose != null)
+			OnClose(oe);
+	}
+
+	public void Send(string data)
+	{
+		jQuery.Ajax(new jQueryAjaxOptions()
+		{
+			Url = _Url,
+			Type = "POST",
+			Data = data,
+			DataType = "json",
+			Success = (respo, textStatus, request) =>
+			{
+				if (respo != null) {
+					MessageEvent e = new MessageEvent(request.ResponseText);
+					if (OnMessage != null)
+						OnMessage(e);
+				}
+			},
+			Error = (request, textStatus, error) =>
+			{
+				NiseEvent e = new NiseEvent("error");
+				OnError(e);
+			}
+		});
+	}
+}
Index: uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/NiseWebSocket.csproj
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/NiseWebSocket.csproj	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/NiseWebSocket.csproj	(revision 101)
@@ -0,0 +1,108 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>
+    </ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{81B67899-0985-4AEA-B520-54FC639844B4}</ProjectGuid>
+    <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>nisews</RootNamespace>
+    <AssemblyName>NiseWebSocket</AssemblyName>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <UseIISExpress>true</UseIISExpress>
+    <IISExpressSSLPort />
+    <IISExpressAnonymousAuthentication />
+    <IISExpressWindowsAuthentication />
+    <IISExpressUseClassicPipelineMode />
+    <NoStdLib>True</NoStdLib>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Content Include="Web.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="NiseWebSocket.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="packages.config" />
+    <None Include="Web.Debug.config">
+      <DependentUpon>Web.config</DependentUpon>
+    </None>
+    <None Include="Web.Release.config">
+      <DependentUpon>Web.config</DependentUpon>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Reference Include="mscorlib">
+      <HintPath>$(SolutionDir)packages\Saltarelle.Runtime.2.6.2\tools\Assemblies\mscorlib.dll</HintPath>
+    </Reference>
+    <Reference Include="Saltarelle.Web">
+      <HintPath>..\packages\Saltarelle.Web.3.1.0\lib\Saltarelle.Web.dll</HintPath>
+    </Reference>
+    <Reference Include="Saltarelle.Linq">
+      <HintPath>..\packages\Saltarelle.Linq.2.4.0\lib\Saltarelle.Linq.dll</HintPath>
+    </Reference>
+    <Reference Include="Saltarelle.jQuery">
+      <HintPath>..\packages\Saltarelle.jQuery.1.10.1\lib\Saltarelle.jQuery.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <PropertyGroup>
+    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
+    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
+  </PropertyGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" Condition="!Exists('$(SolutionDir)packages\Saltarelle.Compiler.2.6.2\tools\Saltarelle.Compiler.targets')" />
+  <Import Project="$(SolutionDir)packages\Saltarelle.Compiler.2.6.2\tools\Saltarelle.Compiler.targets" Condition="Exists('$(SolutionDir)packages\Saltarelle.Compiler.2.6.2\tools\Saltarelle.Compiler.targets')" />
+  <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
+  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
+        <WebProjectProperties>
+          <UseIIS>True</UseIIS>
+          <AutoAssignPort>True</AutoAssignPort>
+          <DevelopmentServerPort>0</DevelopmentServerPort>
+          <DevelopmentServerVPath>/</DevelopmentServerVPath>
+          <IISUrl>http://localhost:51941/</IISUrl>
+          <NTLMAuthentication>False</NTLMAuthentication>
+          <UseCustomServer>False</UseCustomServer>
+          <CustomServerUrl>
+          </CustomServerUrl>
+          <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
+        </WebProjectProperties>
+      </FlavorProperties>
+    </VisualStudio>
+  </ProjectExtensions>
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(ProjectDir)$(OutDir)$(TargetName).js" "$(SolutionDir)EcnlCtrlUI\js\nisews.js"
+$(SolutionDir)tools\jsmin &lt; "$(ProjectDir)$(OutDir)$(TargetName).js" &gt; "$(SolutionDir)EcnlCtrlUI\js\nisews.min.js" "Copyright (C) 2015 by TOPPERS Project, Inc., JAPAN"</PostBuildEvent>
+  </PropertyGroup>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/Properties/AssemblyInfo.cs
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/Properties/AssemblyInfo.cs	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/Properties/AssemblyInfo.cs	(revision 101)
@@ -0,0 +1,35 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// アセンブリに関する一般情報は、以下の属性セットによって 
+// 制御されます。アセンブリに関連付けられている情報を変更するには、
+// これらの属性値を変更します。
+[assembly: AssemblyTitle("NiseWebSocket")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("NiseWebSocket")]
+[assembly: AssemblyCopyright("Copyright (C)  2015")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// ComVisible を false に設定すると、 
+// COM コンポーネントがこのアセンブリ内のその型を認識できなくなります。
+// COM からこのアセンブリ内の型にアクセスする必要がある場合は、その型の ComVisible 属性を true に設定してください。
+//[assembly: ComVisible(false)]
+
+// このプロジェクトが COM に公開される場合、次の GUID がタイプ ライブラリの ID になります。
+//[assembly: Guid("7bbd3cde-6397-4d49-a070-35f80de507cc")]
+
+// アセンブリのバージョン情報は、以下の 4 つの値で構成されています:
+//
+//      メジャー バージョン
+//      マイナー バージョン 
+//      ビルド番号
+//      リビジョン
+//
+// すべての値を指定するか、下のように "*" を使ってリビジョンおよびビルド番号を 
+// 既定値にすることができます:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/Web.Debug.config
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/Web.Debug.config	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/Web.Debug.config	(revision 101)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- web.config å¤æã®è©³ç´°ã«ã¤ãã¦ã¯ãhttp://go.microsoft.com/fwlink/?LinkId=125889 ãåç
+§ãã¦ãã ããã -->
+
+<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
+  <!--
+    æ¬¡ã®ä¾ã§ã¯ã"MyDB" ã¨ããå¤ãæã¤ "name" å±æ§ã "Match" ã­ã±ã¼ã¿ã¼ã§
+    è¦ã¤ãã£ãå ´åã«ã®ã¿ã"SetAttributes" å¤æã«ãã£ã¦ "connectionString" ã®
+    å¤ã "ReleaseSQLServer" ãä½¿ç¨ããããã«å¤æ´ããã¾ãã
+    
+    <connectionStrings>
+      <add name="MyDB" 
+        connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" 
+        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
+    </connectionStrings>
+  -->
+  <system.web>
+    <!--
+      
+      æ¬¡ã®ä¾ã§ã¯ãweb.config ãã¡ã¤ã«ã® <customErrors> ã»ã¯ã·ã§ã³å
+¨ä½ã 
+      "Replace" å¤æã«ãã£ã¦ç½®ãæãããã¾ãã
+      <system.web> ãã¼ãã«ã¯ customErrors ã»ã¯ã·ã§ã³ã 1 ã¤ãããªãããã
+      "xdt:Locator" å±æ§ãä½¿ç¨ããå¿
+è¦ã¯ããã¾ããã
+      
+      <customErrors defaultRedirect="GenericError.htm"
+        mode="RemoteOnly" xdt:Transform="Replace">
+        <error statusCode="500" redirect="InternalError.htm"/>
+      </customErrors>
+    >
+    -->
+  </system.web>
+</configuration>
Index: uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/Web.Release.config
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/Web.Release.config	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/Web.Release.config	(revision 101)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- web.config å¤æã®è©³ç´°ã«ã¤ãã¦ã¯ãhttp://go.microsoft.com/fwlink/?LinkId=125889 ãåç
+§ãã¦ãã ããã -->
+
+<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
+  <!--
+    æ¬¡ã®ä¾ã§ã¯ã"MyDB" ã¨ããå¤ãæã¤ "name" å±æ§ã "Match" ã­ã±ã¼ã¿ã¼ã§
+    è¦ã¤ãã£ãå ´åã«ã®ã¿ã"SetAttributes" å¤æã«ãã£ã¦ "connectionString" ã®
+    å¤ã "ReleaseSQLServer" ãä½¿ç¨ããããã«å¤æ´ããã¾ãã
+    
+    <connectionStrings>
+      <add name="MyDB" 
+        connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" 
+        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
+    </connectionStrings>
+  -->
+  <system.web>
+    <compilation xdt:Transform="RemoveAttributes(debug)" />
+    <!--
+      
+      æ¬¡ã®ä¾ã§ã¯ãweb.config ãã¡ã¤ã«ã® <customErrors> ã»ã¯ã·ã§ã³å
+¨ä½ã 
+      "Replace" å¤æã«ãã£ã¦ç½®ãæãããã¾ãã
+      <system.web> ãã¼ãã«ã¯ customErrors ã»ã¯ã·ã§ã³ã 1 ã¤ãããªãããã
+      "xdt:Locator" å±æ§ãä½¿ç¨ããå¿
+è¦ã¯ããã¾ããã
+      
+      <customErrors defaultRedirect="GenericError.htm"
+        mode="RemoteOnly" xdt:Transform="Replace">
+        <error statusCode="500" redirect="InternalError.htm"/>
+      </customErrors>
+    >
+    -->
+  </system.web>
+</configuration>
Index: uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/Web.config
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/Web.config	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/Web.config	(revision 101)
@@ -0,0 +1,14 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  ASP.NET アプリケーションの構成方法の詳細については、
+  http://go.microsoft.com/fwlink/?LinkId=169433 を参照してください
+  -->
+
+<configuration>
+    <system.web>
+      <compilation debug="true" targetFramework="4.5" />
+      <httpRuntime targetFramework="4.5" />
+    </system.web>
+
+</configuration>
Index: uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/packages.config
===================================================================
--- uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/packages.config	(revision 101)
+++ uKadecot/trunk/tools/EcnlControllerUI/NiseWebSocket/packages.config	(revision 101)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Saltarelle.Compiler" version="2.6.2" targetFramework="net45" />
+  <package id="Saltarelle.Linq" version="2.4.0" targetFramework="net45" />
+  <package id="Saltarelle.Runtime" version="2.6.2" targetFramework="net45" />
+</packages>
Index: uKadecot/trunk/tools/KadecotNames/KadecotNames.sln
===================================================================
--- uKadecot/trunk/tools/KadecotNames/KadecotNames.sln	(revision 101)
+++ uKadecot/trunk/tools/KadecotNames/KadecotNames.sln	(revision 101)
@@ -0,0 +1,30 @@
+﻿
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KadecotNames", "KadecotNames\KadecotNames.csproj", "{B75A9F32-DE4C-437F-89E1-7FB30FCB3D41}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|Mixed Platforms = Debug|Mixed Platforms
+		Debug|Win32 = Debug|Win32
+		Release|Any CPU = Release|Any CPU
+		Release|Mixed Platforms = Release|Mixed Platforms
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{B75A9F32-DE4C-437F-89E1-7FB30FCB3D41}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B75A9F32-DE4C-437F-89E1-7FB30FCB3D41}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B75A9F32-DE4C-437F-89E1-7FB30FCB3D41}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{B75A9F32-DE4C-437F-89E1-7FB30FCB3D41}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{B75A9F32-DE4C-437F-89E1-7FB30FCB3D41}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{B75A9F32-DE4C-437F-89E1-7FB30FCB3D41}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B75A9F32-DE4C-437F-89E1-7FB30FCB3D41}.Release|Any CPU.Build.0 = Release|Any CPU
+		{B75A9F32-DE4C-437F-89E1-7FB30FCB3D41}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{B75A9F32-DE4C-437F-89E1-7FB30FCB3D41}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{B75A9F32-DE4C-437F-89E1-7FB30FCB3D41}.Release|Win32.ActiveCfg = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
Index: uKadecot/trunk/tools/KadecotNames/KadecotNames/App.config
===================================================================
--- uKadecot/trunk/tools/KadecotNames/KadecotNames/App.config	(revision 101)
+++ uKadecot/trunk/tools/KadecotNames/KadecotNames/App.config	(revision 101)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <startup> 
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+    </startup>
+</configuration>
Index: uKadecot/trunk/tools/KadecotNames/KadecotNames/DynamicJson.cs
===================================================================
--- uKadecot/trunk/tools/KadecotNames/KadecotNames/DynamicJson.cs	(revision 101)
+++ uKadecot/trunk/tools/KadecotNames/KadecotNames/DynamicJson.cs	(revision 101)
@@ -0,0 +1,431 @@
+﻿/*--------------------------------------------------------------------------
+* DynamicJson
+* ver 1.2.0.0 (May. 21th, 2010)
+*
+* created and maintained by neuecc <ils@neue.cc>
+* licensed under Microsoft Public License(Ms-PL)
+* http://neue.cc/
+* http://dynamicjson.codeplex.com/
+*--------------------------------------------------------------------------*/
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Dynamic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.Serialization.Json;
+using System.Text;
+using System.Xml;
+using System.Xml.Linq;
+
+namespace Codeplex.Data
+{
+    public class DynamicJson : DynamicObject
+    {
+        private enum JsonType
+        {
+            @string, number, boolean, @object, array, @null
+        }
+
+        // public static methods
+
+        /// <summary>from JsonSring to DynamicJson</summary>
+        public static dynamic Parse(string json)
+        {
+            return Parse(json, Encoding.Unicode);
+        }
+
+        /// <summary>from JsonSring to DynamicJson</summary>
+        public static dynamic Parse(string json, Encoding encoding)
+        {
+            using (var reader = JsonReaderWriterFactory.CreateJsonReader(encoding.GetBytes(json), XmlDictionaryReaderQuotas.Max))
+            {
+                return ToValue(XElement.Load(reader));
+            }
+        }
+
+        /// <summary>from JsonSringStream to DynamicJson</summary>
+        public static dynamic Parse(Stream stream)
+        {
+            using (var reader = JsonReaderWriterFactory.CreateJsonReader(stream, XmlDictionaryReaderQuotas.Max))
+            {
+                return ToValue(XElement.Load(reader));
+            }
+        }
+
+        /// <summary>from JsonSringStream to DynamicJson</summary>
+        public static dynamic Parse(Stream stream, Encoding encoding)
+        {
+            using (var reader = JsonReaderWriterFactory.CreateJsonReader(stream, encoding, XmlDictionaryReaderQuotas.Max, _ => { }))
+            {
+                return ToValue(XElement.Load(reader));
+            }
+        }
+
+        /// <summary>create JsonSring from primitive or IEnumerable or Object({public property name:property value})</summary>
+        public static string Serialize(object obj)
+        {
+            return CreateJsonString(new XStreamingElement("root", CreateTypeAttr(GetJsonType(obj)), CreateJsonNode(obj)));
+        }
+
+        // private static methods
+
+        private static dynamic ToValue(XElement element)
+        {
+            var type = (JsonType)Enum.Parse(typeof(JsonType), element.Attribute("type").Value);
+            switch (type)
+            {
+                case JsonType.boolean:
+                    return (bool)element;
+                case JsonType.number:
+                    return (double)element;
+                case JsonType.@string:
+                    return (string)element;
+                case JsonType.@object:
+                case JsonType.array:
+                    return new DynamicJson(element, type);
+                case JsonType.@null:
+                default:
+                    return null;
+            }
+        }
+
+        private static JsonType GetJsonType(object obj)
+        {
+            if (obj == null) return JsonType.@null;
+
+            switch (Type.GetTypeCode(obj.GetType()))
+            {
+                case TypeCode.Boolean:
+                    return JsonType.boolean;
+                case TypeCode.String:
+                case TypeCode.Char:
+                case TypeCode.DateTime:
+                    return JsonType.@string;
+                case TypeCode.Int16:
+                case TypeCode.Int32:
+                case TypeCode.Int64:
+                case TypeCode.UInt16:
+                case TypeCode.UInt32:
+                case TypeCode.UInt64:
+                case TypeCode.Single:
+                case TypeCode.Double:
+                case TypeCode.Decimal:
+                case TypeCode.SByte:
+                case TypeCode.Byte:
+                    return JsonType.number;
+                case TypeCode.Object:
+                    return (obj is IEnumerable) ? JsonType.array : JsonType.@object;
+                case TypeCode.DBNull:
+                case TypeCode.Empty:
+                default:
+                    return JsonType.@null;
+            }
+        }
+
+        private static XAttribute CreateTypeAttr(JsonType type)
+        {
+            return new XAttribute("type", type.ToString());
+        }
+
+        private static object CreateJsonNode(object obj)
+        {
+            var type = GetJsonType(obj);
+            switch (type)
+            {
+                case JsonType.@string:
+                case JsonType.number:
+                    return obj;
+                case JsonType.boolean:
+                    return obj.ToString().ToLower();
+                case JsonType.@object:
+                    return CreateXObject(obj);
+                case JsonType.array:
+                    return CreateXArray(obj as IEnumerable);
+                case JsonType.@null:
+                default:
+                    return null;
+            }
+        }
+
+        private static IEnumerable<XStreamingElement> CreateXArray<T>(T obj) where T : IEnumerable
+        {
+            return obj.Cast<object>()
+                .Select(o => new XStreamingElement("item", CreateTypeAttr(GetJsonType(o)), CreateJsonNode(o)));
+        }
+
+        private static IEnumerable<XStreamingElement> CreateXObject(object obj)
+        {
+            return obj.GetType()
+                .GetProperties(BindingFlags.Public | BindingFlags.Instance)
+                .Select(pi => new { Name = pi.Name, Value = pi.GetValue(obj, null) })
+                .Select(a => new XStreamingElement(a.Name, CreateTypeAttr(GetJsonType(a.Value)), CreateJsonNode(a.Value)));
+        }
+
+        private static string CreateJsonString(XStreamingElement element)
+        {
+            using (var ms = new MemoryStream())
+            using (var writer = JsonReaderWriterFactory.CreateJsonWriter(ms, Encoding.Unicode))
+            {
+                element.WriteTo(writer);
+                writer.Flush();
+                return Encoding.Unicode.GetString(ms.ToArray());
+            }
+        }
+
+        // dynamic structure represents JavaScript Object/Array
+
+        readonly XElement xml;
+        readonly JsonType jsonType;
+
+        /// <summary>create blank JSObject</summary>
+        public DynamicJson()
+        {
+            xml = new XElement("root", CreateTypeAttr(JsonType.@object));
+            jsonType = JsonType.@object;
+        }
+
+        private DynamicJson(XElement element, JsonType type)
+        {
+            Debug.Assert(type == JsonType.array || type == JsonType.@object);
+
+            xml = element;
+            jsonType = type;
+        }
+
+        public bool IsObject { get { return jsonType == JsonType.@object; } }
+
+        public bool IsArray { get { return jsonType == JsonType.array; } }
+
+        /// <summary>has property or not</summary>
+        public bool IsDefined(string name)
+        {
+            return IsObject && (xml.Element(name) != null);
+        }
+
+        /// <summary>has property or not</summary>
+        public bool IsDefined(int index)
+        {
+            return IsArray && (xml.Elements().ElementAtOrDefault(index) != null);
+        }
+
+        /// <summary>delete property</summary>
+        public bool Delete(string name)
+        {
+            var elem = xml.Element(name);
+            if (elem != null)
+            {
+                elem.Remove();
+                return true;
+            }
+            else return false;
+        }
+
+        /// <summary>delete property</summary>
+        public bool Delete(int index)
+        {
+            var elem = xml.Elements().ElementAtOrDefault(index);
+            if (elem != null)
+            {
+                elem.Remove();
+                return true;
+            }
+            else return false;
+        }
+
+        /// <summary>mapping to Array or Class by Public PropertyName</summary>
+        public T Deserialize<T>()
+        {
+            return (T)Deserialize(typeof(T));
+        }
+
+        private object Deserialize(Type type)
+        {
+            return (IsArray) ? DeserializeArray(type) : DeserializeObject(type);
+        }
+
+        private dynamic DeserializeValue(XElement element, Type elementType)
+        {
+            var value = ToValue(element);
+            if (value is DynamicJson)
+            {
+                value = ((DynamicJson)value).Deserialize(elementType);
+            }
+            return Convert.ChangeType(value, elementType);
+        }
+
+        private object DeserializeObject(Type targetType)
+        {
+            var result = Activator.CreateInstance(targetType);
+            var dict = targetType.GetProperties(BindingFlags.Public | BindingFlags.Instance)
+                .Where(p => p.CanWrite)
+                .ToDictionary(pi => pi.Name, pi => pi);
+            foreach (var item in xml.Elements())
+            {
+                PropertyInfo propertyInfo;
+                if (!dict.TryGetValue(item.Name.LocalName, out propertyInfo)) continue;
+                var value = DeserializeValue(item, propertyInfo.PropertyType);
+                propertyInfo.SetValue(result, value, null);
+            }
+            return result;
+        }
+
+        private object DeserializeArray(Type targetType)
+        {
+            if (targetType.IsArray) // Foo[]
+            {
+                var elemType = targetType.GetElementType();
+                dynamic array = Array.CreateInstance(elemType, xml.Elements().Count());
+                var index = 0;
+                foreach (var item in xml.Elements())
+                {
+                    array[index++] = DeserializeValue(item, elemType);
+                }
+                return array;
+            }
+            else // List<Foo>
+            {
+                var elemType = targetType.GetGenericArguments()[0];
+                dynamic list = Activator.CreateInstance(targetType);
+                foreach (var item in xml.Elements())
+                {
+                    list.Add(DeserializeValue(item, elemType));
+                }
+                return list;
+            }
+        }
+
+        // Delete
+        public override bool TryInvoke(InvokeBinder binder, object[] args, out object result)
+        {
+            result = (IsArray)
+                ? Delete((int)args[0])
+                : Delete((string)args[0]);
+            return true;
+        }
+
+        // IsDefined, if has args then TryGetMember
+        public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
+        {
+            if (args.Length > 0)
+            {
+                result = null;
+                return false;
+            }
+
+            result = IsDefined(binder.Name);
+            return true;
+        }
+
+        // Deserialize or foreach(IEnumerable)
+        public override bool TryConvert(ConvertBinder binder, out object result)
+        {
+            if (binder.Type == typeof(IEnumerable) || binder.Type == typeof(object[]))
+            {
+                var ie = (IsArray)
+                    ? xml.Elements().Select(x => ToValue(x))
+                    : xml.Elements().Select(x => (dynamic)new KeyValuePair<string, object>(x.Name.LocalName, ToValue(x)));
+                result = (binder.Type == typeof(object[])) ? ie.ToArray() : ie;
+            }
+            else
+            {
+                result = Deserialize(binder.Type);
+            }
+            return true;
+        }
+
+        private bool TryGet(XElement element, out object result)
+        {
+            if (element == null)
+            {
+                result = null;
+                return false;
+            }
+
+            result = ToValue(element);
+            return true;
+        }
+
+        public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result)
+        {
+            return (IsArray)
+                ? TryGet(xml.Elements().ElementAtOrDefault((int)indexes[0]), out result)
+                : TryGet(xml.Element((string)indexes[0]), out result);
+        }
+
+        public override bool TryGetMember(GetMemberBinder binder, out object result)
+        {
+            return (IsArray)
+                ? TryGet(xml.Elements().ElementAtOrDefault(int.Parse(binder.Name)), out result)
+                : TryGet(xml.Element(binder.Name), out result);
+        }
+
+        private bool TrySet(string name, object value)
+        {
+            var type = GetJsonType(value);
+            var element = xml.Element(name);
+            if (element == null)
+            {
+                xml.Add(new XElement(name, CreateTypeAttr(type), CreateJsonNode(value)));
+            }
+            else
+            {
+                element.Attribute("type").Value = type.ToString();
+                element.ReplaceNodes(CreateJsonNode(value));
+            }
+
+            return true;
+        }
+
+        private bool TrySet(int index, object value)
+        {
+            var type = GetJsonType(value);
+            var e = xml.Elements().ElementAtOrDefault(index);
+            if (e == null)
+            {
+                xml.Add(new XElement("item", CreateTypeAttr(type), CreateJsonNode(value)));
+            }
+            else
+            {
+                e.Attribute("type").Value = type.ToString();
+                e.ReplaceNodes(CreateJsonNode(value));
+            }
+
+            return true;
+        }
+
+        public override bool TrySetIndex(SetIndexBinder binder, object[] indexes, object value)
+        {
+            return (IsArray)
+                ? TrySet((int)indexes[0], value)
+                : TrySet((string)indexes[0], value);
+        }
+
+        public override bool TrySetMember(SetMemberBinder binder, object value)
+        {
+            return (IsArray)
+                ? TrySet(int.Parse(binder.Name), value)
+                : TrySet(binder.Name, value);
+        }
+
+        public override IEnumerable<string> GetDynamicMemberNames()
+        {
+            return (IsArray)
+                ? xml.Elements().Select((x, i) => i.ToString())
+                : xml.Elements().Select(x => x.Name.LocalName);
+        }
+
+        /// <summary>Serialize to JsonString</summary>
+        public override string ToString()
+        {
+            // <foo type="null"></foo> is can't serialize. replace to <foo type="null" />
+            foreach (var elem in xml.Descendants().Where(x => x.Attribute("type").Value == "null"))
+            {
+                elem.RemoveNodes();
+            }
+            return CreateJsonString(new XStreamingElement("root", CreateTypeAttr(jsonType), xml.Elements()));
+        }
+    }
+}
Index: uKadecot/trunk/tools/KadecotNames/KadecotNames/KadecotNames.csproj
===================================================================
--- uKadecot/trunk/tools/KadecotNames/KadecotNames/KadecotNames.csproj	(revision 101)
+++ uKadecot/trunk/tools/KadecotNames/KadecotNames/KadecotNames.csproj	(revision 101)
@@ -0,0 +1,60 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{B75A9F32-DE4C-437F-89E1-7FB30FCB3D41}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>KadecotNames</RootNamespace>
+    <AssemblyName>KadecotNames</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Runtime.Serialization" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="DynamicJson.cs" />
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: uKadecot/trunk/tools/KadecotNames/KadecotNames/Program.cs
===================================================================
--- uKadecot/trunk/tools/KadecotNames/KadecotNames/Program.cs	(revision 101)
+++ uKadecot/trunk/tools/KadecotNames/KadecotNames/Program.cs	(revision 101)
@@ -0,0 +1,891 @@
+﻿using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using Codeplex.Data;
+
+namespace KadecotNames
+{
+	class Program
+	{
+		delegate int GetDataLenCallBack<T>(CharNode<T> node);
+		delegate void SetDataCallBack<T>(CharNode<T> node, byte[] data, int pos);
+
+		static void Main(string[] args)
+		{
+			if (!File.Exists("KadecotDevices.json")) {
+				WebClient wc = new WebClient();
+				wc.Proxy = WebRequest.GetSystemWebProxy();
+				wc.BaseAddress = "http://app.kadecot.net/docs/ProcTopic/echo_devices/";
+				MemoryStream devicesJson = new MemoryStream(wc.DownloadData("devices.json"));
+				var devices = DynamicJson.Parse(devicesJson);
+				List<KadecotDevice> devList = new List<KadecotDevice>();
+
+				foreach (var dev in devices.data) {
+					KadecotDevice kd = new KadecotDevice(dev);
+					devList.Add(kd);
+				}
+
+				foreach (var dev in devList) {
+					MemoryStream deviceJson = new MemoryStream(wc.DownloadData(dev.DeviceName + ".json"));
+					var device = DynamicJson.Parse(deviceJson);
+					foreach (var prop in device.methods) {
+						KadecotProperty kp = new KadecotProperty(prop);
+						dev.Properties.Add(kp);
+					}
+				}
+
+				string result = DynamicJson.Serialize(devList);
+				result = FormatJson(result);
+				result = result.Replace(":undefined,", ":\"undefined\",");
+				result = result.Replace(":mandatory,", ":\"mandatory\",");
+				result = result.Replace(":optional,", ":\"optional\",");
+				using (FileStream fs = new FileStream("KadecotDevices.json", FileMode.Create, FileAccess.Write)) {
+					byte[] data = Encoding.UTF8.GetBytes(result);
+					fs.Write(data, 0, data.Length);
+				}
+			}
+
+			if (File.Exists("KadecotDevices.json")) {
+				dynamic json;
+				var devices = new SortedDictionary<string, KadecotDevice>();
+				var properties = new SortedDictionary<string, SortedList<byte, List<KadecotProperty>>>();
+
+				using (FileStream fs = new FileStream("KadecotDevices.json", FileMode.Open, FileAccess.Read)) {
+					json = DynamicJson.Parse(fs);
+				}
+
+				foreach (var dev in json) {
+					var device = new KadecotDevice(dev, true);
+					devices.Add(device.DeviceName + "\0", device);
+
+					foreach (var prop in dev.Properties) {
+						var property = new KadecotProperty(device, prop);
+
+						device.Properties.Add(property);
+
+						SortedList<byte, List<KadecotProperty>> props;
+						if (properties.TryGetValue(property.Name + "\0", out props)) {
+							List<KadecotProperty> list;
+							if (props.TryGetValue(property.Epc, out list)) {
+								list.Add(property);
+							}
+							else {
+								list = new List<KadecotProperty>();
+								list.Add(property);
+								props.Add(property.Epc, list);
+							}
+						}
+						else {
+							props = new SortedList<byte, List<KadecotProperty>>();
+							var list = new List<KadecotProperty>();
+							list.Add(property);
+							props.Add(property.Epc, list);
+							properties.Add(property.Name + "\0", props);
+						}
+					}
+				}
+
+				var devTree = new CharNode<KadecotDevice>('\0');
+				foreach (var dev in devices) {
+					AddNode(devTree, 0, dev);
+				}
+
+				ReduceLink(devTree);
+
+				int len = SetPosition(devTree, 0, (p) => { return 2; });
+				byte[] devTable = new byte[len];
+				SetData(devTree, devTable, (node, _data, pos) =>
+				{
+					_data[pos++] = (byte)(node.Value.DeviceType >> 8);
+					_data[pos++] = (byte)(node.Value.DeviceType & 0xFF);
+				});
+
+				using (FileStream fs = new FileStream("KadecotNames.bin", FileMode.Create, FileAccess.Write)) {
+					byte[] hdr = new byte[2];
+					hdr[0] = (byte)(len >> 8);
+					hdr[1] = (byte)(len & 0xFF);
+					fs.Write(hdr, 0, hdr.Length);
+					fs.Write(devTable, 0, devTable.Length);
+				}
+
+				var devCodeTree = new CharNode<List<ushort>>();
+
+				foreach (var dev in devices.Values) {
+					char[] name = (dev.DeviceName + "\0").ToCharArray();
+					List<ushort> pankuzu = new List<ushort>();
+					ushort devCode = get_device_type(devTable, devTable.Length, name, name.Length - 1, pankuzu);
+					if (dev.DeviceType != devCode)
+						System.Diagnostics.Debugger.Break();
+
+					StringBuilder devType = new StringBuilder();
+					for (int i = 0x8000; i > 0; i >>= 1) {
+						devType.Append(((devCode & i) != 0) ? '1' : '0');
+					}
+
+					AddNode(devCodeTree, 0, new KeyValuePair<string, List<ushort>>(devType.ToString(), pankuzu));
+				}
+
+				ReduceLink(devCodeTree);
+
+				len = SetPosUShort(devCodeTree, 0, (p) => { return 1 + 2 * p.Value.Count; });
+				byte[] devCodeTable = new byte[len];
+				devCodeTable[0] = (byte)devCodeTree.Chara.Count;
+				SetDataUShort(devCodeTree, 0, devCodeTable, (node, _data, pos) =>
+				{
+					_data[pos++] = (byte)(node.Value.Count);
+					foreach (var devNamePos in node.Value) {
+						_data[pos++] = (byte)(devNamePos >> 8);
+						_data[pos++] = (byte)(devNamePos & 0xFF);
+					}
+				});
+
+				using (FileStream fs = new FileStream("KadecotNames.bin", FileMode.Open, FileAccess.Write)) {
+					fs.Position = fs.Length;
+					byte[] hdr = new byte[2];
+					hdr[0] = (byte)(len >> 8);
+					hdr[1] = (byte)(len & 0xFF);
+					fs.Write(hdr, 0, hdr.Length);
+					fs.Write(devCodeTable, 0, devCodeTable.Length);
+				}
+
+				foreach (var dev in devices.Values) {
+					char[] buf = new char[256];
+					if (!get_device_type_name(devCodeTable, devCodeTable.Length, dev.DeviceType, devTable, devTable.Length, buf, buf.Length))
+						System.Diagnostics.Debugger.Break();
+
+					int nulchr = 0;
+					foreach (var c in buf) {
+						nulchr++;
+						if (c == '\0')
+							break;
+					}
+					string text = new String(buf, 0, nulchr);
+					if (text != (dev.DeviceName + "\0"))
+						System.Diagnostics.Debugger.Break();
+				}
+
+				var propTree = new CharNode<SortedList<byte, List<KadecotProperty>>>('\0');
+				foreach (var prop in properties) {
+					AddNode(propTree, 0, prop);
+				}
+
+				ReduceLink(propTree);
+
+				len = SetPosition(propTree, 0, PropertyTableDataLen);
+				byte[] propTable = new byte[len];
+				SetData(propTree, propTable, PropertyTableData);
+
+				using (FileStream fs = new FileStream("KadecotNames.bin", FileMode.Open, FileAccess.Write)) {
+					fs.Position = fs.Length;
+					byte[] hdr = new byte[2];
+					hdr[0] = (byte)(len >> 8);
+					hdr[1] = (byte)(len & 0xFF);
+					fs.Write(hdr, 0, hdr.Length);
+					fs.Write(propTable, 0, propTable.Length);
+				}
+
+				var epcTree = new CharNode<List<ushort>>();
+
+				foreach (var dev in devices.Values) {
+					foreach (var prop in dev.Properties) {
+						char[] name = (prop.Name + "\0").ToCharArray();
+						List<ushort> pankuzu = new List<ushort>();
+						byte epc = get_property_code(propTable, propTable.Length, name, name.Length - 1, dev.DeviceType, pankuzu);
+						if (prop.Epc != epc)
+							System.Diagnostics.Debugger.Break();
+
+						StringBuilder devType = new StringBuilder();
+						for (int i = 0x80; i > 0; i >>= 1) {
+							devType.Append(((epc & i) != 0) ? '1' : '0');
+						}
+
+						AddNode(epcTree, 0, new KeyValuePair<string, List<ushort>>(devType.ToString(), pankuzu));
+					}
+				}
+
+				ReduceLink(epcTree);
+
+				len = SetPosByte(epcTree, 0, (p) => { return 1 + 2 * p.Value.Count; });
+				byte[] epcTable = new byte[len];
+				epcTable[0] = (byte)epcTree.Chara.Count;
+				SetDataByte(epcTree, 0, epcTable, (node, _data, pos) =>
+				{
+					_data[pos++] = (byte)(node.Value.Count);
+					foreach (var devNamePos in node.Value) {
+						_data[pos++] = (byte)(devNamePos >> 8);
+						_data[pos++] = (byte)(devNamePos & 0xFF);
+					}
+				});
+			}
+		}
+
+		private const string INDENT_STRING = "\t";
+
+		static string FormatJson(string json)
+		{
+			int indentation = 0;
+			int quoteCount = 0;
+			var result =
+				from ch in json
+				let quotes = ch == '"' ? quoteCount++ : quoteCount
+				let lineBreak = ch == ',' && quotes % 2 == 0 ? ch + Environment.NewLine + String.Concat(Enumerable.Repeat(INDENT_STRING, indentation)) : null
+				let openChar = (ch == '{' || ch == '[') && quotes % 2 == 0 ? ch + Environment.NewLine + String.Concat(Enumerable.Repeat(INDENT_STRING, ++indentation)) : ch.ToString()
+				let closeChar = (ch == '}' || ch == ']') && quotes % 2 == 0 ? Environment.NewLine + String.Concat(Enumerable.Repeat(INDENT_STRING, (--indentation < 0) ? 0 : indentation)) + ch : ch.ToString()
+				select (lineBreak == null) ? ((openChar.Length > 1) ? openChar : closeChar) : lineBreak;
+
+			return String.Concat(result);
+		}
+
+		private static void AddNode<T>(CharNode<T> parent, int pos, KeyValuePair<string, T> dev)
+		{
+			if (dev.Key.Length <= pos) {
+				parent.Value = dev.Value;
+				return;
+			}
+
+			var item = parent.Children;
+			char c = dev.Key[pos];
+			var node = item.FirstOrDefault((n) => { return n.Chara[0] == c; });
+			if (node != null) {
+				AddNode(node, pos + 1, dev);
+			}
+			else {
+				node = new CharNode<T>(dev.Key[pos]);
+				item.Add(node);
+				AddNode(node, pos + 1, dev);
+			}
+		}
+
+		private static void ReduceLink<T>(CharNode<T> parent)
+		{
+			foreach (var node in parent.Children) {
+				ReduceLink(node);
+			}
+
+			if (parent.Children.Count != 1)
+				return;
+
+			var child = parent.Children[0];
+			parent.Children.Clear();
+			parent.Children.AddRange(child.Children);
+			parent.Chara.AddRange(child.Chara);
+			parent.Value = child.Value;
+		}
+
+		private static int SetPosition<T>(CharNode<T> parent, int pos, GetDataLenCallBack<T> cb)
+		{
+			parent.Position = pos;
+
+			pos += 1/*branch count*/;
+
+			// 末端のノード
+			if (parent.Children.Count == 0) {
+				/* data */
+				pos += cb(parent);
+				return pos;
+			}
+
+			// 分岐テーブル
+			foreach (var node in parent.Children) {
+				pos += 1/*string length*/ + node.Chara.Count + 2/*nextpos*/;
+			}
+
+			foreach (var node in parent.Children) {
+				pos = SetPosition(node, pos, cb);
+			}
+
+			return pos;
+		}
+
+		private static void SetData<T>(CharNode<T> parent, byte[] data, SetDataCallBack<T> cb)
+		{
+			int pos = parent.Position;
+			byte count = (byte)parent.Children.Count;
+
+			// branch count
+			data[pos++] = count;
+
+			// 末端のノード
+			if (count == 0) {
+				cb(parent, data, pos);
+				return;
+			}
+
+			foreach (var node in parent.Children) {
+				// string length
+				data[pos++] = (byte)node.Chara.Count;
+				foreach (var c in node.Chara) {
+					data[pos++] = (byte)c;
+				}
+				// nextpos
+				data[pos++] = (byte)((node.Position >> 8) & 0xFF);
+				data[pos++] = (byte)(node.Position & 0xFF);
+
+				SetData(node, data, cb);
+			}
+		}
+
+		private static int PropertyTableDataLen(CharNode<SortedList<byte, List<KadecotProperty>>> parent)
+		{
+			if (parent.Value.Count == 1)
+				return 2;
+
+			int count = 0;
+			var list = new List<List<KadecotProperty>>();
+			foreach (var tmp in parent.Value.Values) {
+				count += tmp.Count;
+				list.Add(tmp);
+			}
+			list.Sort((p1, p2) => { return p1.Count - p2.Count; });
+			List<KadecotProperty> max = list[list.Count - 1];
+			list.RemoveAt(list.Count - 1);
+
+			// 最大個数のプロパティ名称の一群はそれ以外として省く。
+			count -= max.Count;
+
+			return 2 * count/*devTypes*/ + (1/*count*/ + 1/*EPC*/) * list.Count + 1/*count=0*/+ 1/*その他のEPC*/;
+		}
+
+		private static void PropertyTableData(CharNode<SortedList<byte, List<KadecotProperty>>> parent, byte[] _data, int pos)
+		{
+			if (parent.Value.Count == 1) {
+				_data[pos++] = 0;
+				_data[pos++] = parent.Value.Values[0][0].Epc;
+				return;
+			}
+
+			var list = new List<List<KadecotProperty>>(parent.Value.Values);
+			list.Sort((p1, p2) => { return p1.Count - p2.Count; });
+			List<KadecotProperty> max = list[list.Count - 1];
+			list.RemoveAt(list.Count - 1);
+
+			foreach (var tmp in list) {
+				_data[pos++] = (byte)tmp.Count;
+				foreach (var p in tmp) {
+					_data[pos++] = (byte)(p.Owner.DeviceType >> 8);
+					_data[pos++] = (byte)(p.Owner.DeviceType & 0xFF);
+				}
+				_data[pos++] = tmp[0].Epc;
+			}
+			_data[pos++] = 0;
+			_data[pos++] = max[0].Epc;
+		}
+
+		private static int SetPosByte<T>(CharNode<T> node, int pos, GetDataLenCallBack<T> cb)
+		{
+			node.Position = pos;
+
+			pos += 1/* bit mask */ + 1/* bit pattern */ + 2/* unmatchpos */;
+
+			/* data */
+			if (node.Children.Count == 0)
+				pos += cb(node);
+
+			foreach (var child in node.Children) {
+				pos = SetPosByte(child, pos, cb);
+			}
+
+			node.Next = pos;
+
+			return pos;
+		}
+
+		private static void SetDataByte<T>(CharNode<T> node, int bitPos, byte[] data, SetDataCallBack<T> cb)
+		{
+			int pos = node.Position;
+			int unmatchpos;
+
+			unmatchpos = node.Next;
+
+			byte mask = 0, bits = 0;
+			for (byte i = 0; i < node.Chara.Count; i++) {
+				mask |= (byte)(0x8000 >> (bitPos + i));
+				if (node.Chara[i] == '1')
+					bits |= (byte)(0x8000 >> (bitPos + i));
+			}
+			// bit mask
+			data[pos++] = mask;
+			// bit pattern
+			data[pos++] = bits;
+			// unmatchpos
+			data[pos++] = (byte)((unmatchpos >> 8) & 0xFF);
+			data[pos++] = (byte)(unmatchpos & 0xFF);
+
+			if (node.Children.Count == 0) {
+				// data
+				cb(node, data, pos);
+				return;
+			}
+
+			// 次の分岐を処理
+			bitPos += node.Chara.Count;
+			foreach (var child in node.Children) {
+				SetDataByte(child, bitPos, data, cb);
+			}
+		}
+
+		private static int SetPosUShort<T>(CharNode<T> node, int pos, GetDataLenCallBack<T> cb)
+		{
+			node.Position = pos;
+
+			pos += 2/* bit mask */ + 2/* bit pattern */ + 2/* unmatchpos */;
+
+			/* data */
+			if (node.Children.Count == 0)
+				pos += cb(node);
+
+			foreach (var child in node.Children) {
+				pos = SetPosUShort(child, pos, cb);
+			}
+
+			node.Next = pos;
+
+			return pos;
+		}
+
+		private static void SetDataUShort<T>(CharNode<T> node, int bitPos, byte[] data, SetDataCallBack<T> cb)
+		{
+			int pos = node.Position;
+			int unmatchpos;
+
+			unmatchpos = node.Next;
+
+			ushort mask = 0, bits = 0;
+			for (ushort i = 0; i < node.Chara.Count; i++) {
+				mask |= (ushort)(0x8000 >> (bitPos + i));
+				if (node.Chara[i] == '1')
+					bits |= (ushort)(0x8000 >> (bitPos + i));
+			}
+			// bit mask
+			data[pos++] = (byte)(mask >> 8);
+			data[pos++] = (byte)(mask & 0xFF);
+			// bit pattern
+			data[pos++] = (byte)(bits >> 8);
+			data[pos++] = (byte)(bits & 0xFF);
+			// unmatchpos
+			data[pos++] = (byte)((unmatchpos >> 8) & 0xFF);
+			data[pos++] = (byte)(unmatchpos & 0xFF);
+
+			if (node.Children.Count == 0) {
+				// data
+				cb(node, data, pos);
+				return;
+			}
+
+			// 次の分岐を処理
+			bitPos += node.Chara.Count;
+			foreach (var child in node.Children) {
+				SetDataUShort(child, bitPos, data, cb);
+			}
+		}
+
+		static ushort get_device_type(byte[] table, int len, char[] name, int nameLen, List<ushort> pankuzu)
+		{
+			int pos = 0, nextpos, i = 0;
+			byte count;
+			ushort DeviceType;
+
+			while (pos < len) {
+				/* branch count */
+				count = table[pos++];
+
+				/* 末端のノード */
+				if (count == 0) {
+					/* NULL文字も含めたサイズ */
+					if (i != (nameLen + 1))
+						return 0;
+
+					DeviceType = (ushort)(table[pos++] << 8);
+					DeviceType |= table[pos++];
+
+					return DeviceType;
+				}
+
+				for (; ; ) {
+					int length, start = pos, j, k;
+					/* string length */
+					length = table[pos++];
+					for (j = 0, k = i; j < length; j++, k++) {
+						/* NULL文字も含めたチェック */
+						if ((k > nameLen) || (table[pos++] != name[k])) {
+							pos = start + 1 + length + 2;
+							goto nextnode;
+						}
+					}
+					i += length;
+
+					/* nextpos */
+					nextpos = table[pos++] << 8;
+					nextpos |= table[pos++];
+
+					pos = nextpos;
+					pankuzu.Add((ushort)start);
+					break;
+				nextnode:
+					count--;
+					if (count == 0)
+						return 0;
+					continue;
+				}
+			}
+
+			return 0;
+		}
+
+		static bool get_device_type_name(byte[] table, int len, ushort deviceType, byte[] strtable, int stablelen, char[] buf, int bufLen)
+		{
+			int pos = 0, unmatchpos;
+
+			while (pos < len) {
+				ushort mask, ptrn;
+				/* bit mask */
+				mask = (ushort)(table[pos++] << 8);
+				mask |= table[pos++];
+				/* bit pattarn */
+				ptrn = (ushort)(table[pos++] << 8);
+				ptrn |= table[pos++];
+				/* unmatchpos */
+				unmatchpos = table[pos++] << 8;
+				unmatchpos |= table[pos++];
+
+				if ((mask & deviceType) != ptrn) {
+					if (unmatchpos == 0)
+						return false;
+					pos = unmatchpos;
+					continue;
+				}
+
+				/* 末端のノード */
+				if ((mask & 0x0001) != 0) {
+					int bufpos = 0;
+					int count = table[pos++];
+					for (int j = 0; j < count; j++) {
+						int substr;
+						substr = (ushort)(table[pos++] << 8);
+						substr |= table[pos++];
+
+						if (substr > stablelen)
+							return false;
+
+						int strlen = strtable[substr++];
+						if ((substr + strlen) > stablelen)
+							return false;
+
+						int end = bufpos + strlen;
+						if (end > bufLen)
+							return false;
+
+						for (; bufpos < end; bufpos++) {
+							buf[bufpos] = (char)strtable[substr++];
+						}
+					}
+
+					return true;
+				}
+			}
+
+			return false;
+		}
+
+		static byte get_property_code(byte[] table, int len, char[] name,
+			int nameLen, ushort devType, List<ushort> pankuzu)
+		{
+			int pos = 0, nextpos, i = 0;
+			byte count;
+			byte epc;
+
+			while (pos < len) {
+				/* branch count */
+				count = table[pos++];
+
+				/* 末端のノード */
+				if (count == 0) {
+					/* NULL文字も含めたサイズ */
+					if (i != (nameLen + 1))
+						return 0;
+
+					epc = get_prop_code(table, len, name, nameLen, devType, pos);
+					return epc;
+				}
+
+				for (; ; ) {
+					int length, start = pos, j, k;
+					/* string length */
+					length = table[pos++];
+					for (j = 0, k = i; j < length; j++, k++) {
+						/* NULL文字も含めたチェック */
+						if ((k > nameLen) || (table[pos++] != name[k])) {
+							pos = start + 1 + length + 2;
+							goto nextnode;
+						}
+					}
+					i += length;
+
+					/* nextpos */
+					nextpos = table[pos++] << 8;
+					nextpos |= table[pos++];
+
+					pos = nextpos;
+					pankuzu.Add((ushort)start);
+					break;
+				nextnode:
+					count--;
+					if (count == 0)
+						return 0;
+					continue;
+				}
+			}
+
+			return 0;
+		}
+
+		static byte get_prop_code(byte[] table, int len, char[] name,
+			int nameLen, ushort devType, int pos)
+		{
+			int i, start;
+			byte count;
+			byte epc;
+			ushort type;
+
+			while (pos < len) {
+				/* branch count */
+				count = table[pos++];
+
+				/* 末端のノード */
+				if (count == 0) {
+					epc = table[pos++];
+					return epc;
+				}
+
+				start = pos;
+				for (i = 0; i < count; i++) {
+					type = (ushort)(table[pos++] << 8);
+					type |= table[pos++];
+					if (type == devType) {
+						epc = table[start + 2 * count];
+						return epc;
+					}
+				}
+				pos++;
+			}
+
+			epc = table[pos];
+			return epc;
+		}
+	}
+
+	public class KadecotDevice
+	{
+		private string m_Protocol;
+		private ushort m_DeviceType;
+		private string m_DeviceName;
+		private List<KadecotProperty> m_Properties = new List<KadecotProperty>();
+
+		public KadecotDevice(dynamic json)
+		{
+			m_Protocol = json.protocol;
+			m_DeviceType = UInt16.Parse(
+				((string)json.deviceType).Substring(2, 4),
+				System.Globalization.NumberStyles.AllowHexSpecifier);
+			m_DeviceName = json.deviceName;
+		}
+
+		public KadecotDevice(dynamic json, bool dummy)
+		{
+			m_Protocol = json.Protocol;
+			m_DeviceType = (ushort)json.DeviceType;
+			m_DeviceName = json.DeviceName;
+		}
+
+		public string Protocol
+		{
+			get { return m_Protocol; }
+			set { m_Protocol = value; }
+		}
+
+		public ushort DeviceType
+		{
+			get { return m_DeviceType; }
+			set { m_DeviceType = value; }
+		}
+
+		public string DeviceName
+		{
+			get { return m_DeviceName; }
+			set { m_DeviceName = value; }
+		}
+
+		public List<KadecotProperty> Properties
+		{
+			get { return m_Properties; }
+		}
+	}
+
+	public enum PropertyAttribute
+	{
+		undefined,
+		mandatory,
+		optional,
+	}
+
+	public class KadecotProperty
+	{
+		private KadecotDevice m_Owner;
+		private string m_Name;
+		private byte m_Epc;
+		private byte[] m_Size;
+		private byte m_MaxSize;
+		private PropertyAttribute m_Announce;
+		private PropertyAttribute m_Set;
+		private PropertyAttribute m_Get;
+		private string m_Document;
+		private string m_SizeDisp;
+
+		public KadecotProperty(dynamic json)
+		{
+			m_Name = Regex.Replace((string)json.name, "([^0-9A-Za-z_]+)", "");
+			m_Epc = Byte.Parse(((string)json.epc).Substring(2, 2),
+				System.Globalization.NumberStyles.AllowHexSpecifier);
+			var temp1 = (string)json.size;
+			if (temp1.StartsWith("Max")) {
+				Byte.TryParse(temp1.Substring(3, temp1.Length - 3), out m_MaxSize);
+			}
+			else {
+				var temp = (temp1).Split(new[] { "or" }, StringSplitOptions.RemoveEmptyEntries);
+				var temp2 = new List<byte>();
+				foreach (var p in temp) {
+					byte size;
+					if (Byte.TryParse(p, out size)) {
+						temp2.Add(size);
+					}
+				}
+				m_Size = temp2.ToArray();
+			}
+			m_Announce = GetAttribute((string)json.announce);
+			m_Set = GetAttribute((string)json.set);
+			m_Get = GetAttribute((string)json.get);
+			m_Document = json.doc;
+		}
+
+		public KadecotProperty(KadecotDevice owner, dynamic json)
+		{
+			m_Owner = owner;
+			m_Name = json.Name;
+			m_Epc = (byte)json.Epc;
+			m_Size = (byte[])json.Size;
+			m_MaxSize = (byte)json.MaxSize;
+			m_Announce = GetAttribute((string)json.Announce);
+			m_Set = GetAttribute((string)json.Set);
+			m_Get = GetAttribute((string)json.Get);
+			m_Document = json.Document;
+
+			if (m_Size == null) {
+				m_SizeDisp = "Max" + m_MaxSize;
+			}
+			else if (m_Size.Length == 1) {
+				m_SizeDisp = m_Size[0].ToString();
+			}
+			else if (m_Size.Length == 1) {
+				List<string> temp = new List<string>();
+				foreach (var size in m_Size) {
+					temp.Add(size.ToString());
+				}
+				m_SizeDisp = "Max" + String.Join("or", temp);
+			}
+		}
+
+		public KadecotDevice Owner
+		{
+			get { return m_Owner; }
+		}
+
+		public string Name
+		{
+			get { return m_Name; }
+		}
+
+		public byte Epc
+		{
+			get { return m_Epc; }
+		}
+
+		public byte[] Size
+		{
+			get { return m_Size; }
+		}
+
+		public byte MaxSize
+		{
+			get { return m_MaxSize; }
+		}
+
+		public PropertyAttribute Announce
+		{
+			get { return m_Announce; }
+		}
+
+		public PropertyAttribute Set
+		{
+			get { return m_Set; }
+		}
+
+		public PropertyAttribute Get
+		{
+			get { return m_Get; }
+		}
+
+		public string Document
+		{
+			get { return m_Document; }
+		}
+
+		public static PropertyAttribute GetAttribute(string p)
+		{
+			switch (p.ToLower()) {
+			case "undefined":
+				return PropertyAttribute.undefined;
+			case "mandatory":
+				return PropertyAttribute.mandatory;
+			case "optional":
+				return PropertyAttribute.optional;
+			default:
+				throw new Exception();
+			}
+		}
+
+		public string SizeDisp { get { return m_SizeDisp; } }
+	}
+
+	public class CharNode<T>
+	{
+		public List<char> Chara = new List<char>();
+		public List<CharNode<T>> Children = new List<CharNode<T>>();
+		public T Value;
+		public int Position;
+		public int Next;
+
+		public CharNode()
+		{
+		}
+
+		public CharNode(char chara)
+		{
+			Chara.Add(chara);
+		}
+
+		public override string ToString()
+		{
+			var chars = new List<string>();
+			foreach (var child in Children) {
+				chars.Add(new String(child.Chara.ToArray()));
+			}
+
+			return String.Format("{0}{{{1}}}", Chara, String.Join(", ", chars));
+		}
+	}
+}
Index: uKadecot/trunk/tools/KadecotNames/KadecotNames/Properties/AssemblyInfo.cs
===================================================================
--- uKadecot/trunk/tools/KadecotNames/KadecotNames/Properties/AssemblyInfo.cs	(revision 101)
+++ uKadecot/trunk/tools/KadecotNames/KadecotNames/Properties/AssemblyInfo.cs	(revision 101)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。
+// アセンブリに関連付けられている情報を変更するには、
+// これらの属性値を変更してください。
+[assembly: AssemblyTitle("KadecotNames")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("KadecotNames")]
+[assembly: AssemblyCopyright("Copyright ©  2015")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// ComVisible を false に設定すると、その型はこのアセンブリ内で COM コンポーネントから 
+// 参照不可能になります。COM からこのアセンブリ内の型にアクセスする場合は、
+// その型の ComVisible 属性を true に設定してください。
+[assembly: ComVisible(false)]
+
+// 次の GUID は、このプロジェクトが COM に公開される場合の、typelib の ID です
+[assembly: Guid("1a284a4e-88ea-47a5-abb7-709e89b20242")]
+
+// アセンブリのバージョン情報は、以下の 4 つの値で構成されています:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を 
+// 既定値にすることができます:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: uKadecot/trunk/tools/makefsdata/diskio.c
===================================================================
--- uKadecot/trunk/tools/makefsdata/diskio.c	(revision 101)
+++ uKadecot/trunk/tools/makefsdata/diskio.c	(revision 101)
@@ -0,0 +1,391 @@
+/*-----------------------------------------------------------------------*/
+/* Low level disk control module for Win32              (C)ChaN, 2013    */
+/*-----------------------------------------------------------------------*/
+
+#include <windows.h>
+#include <tchar.h>
+#include <winioctl.h>
+#include <stdio.h>
+#include "diskio.h"
+#include "ff.h"
+
+
+#define MAX_DRIVES	1	/* Max number of physical drives to be used */
+
+#define SZ_RAMDISK	768	/* Size of RAM disk [kB] */
+#define SS_RAMDISK	512	/* Sector size of RAM disk [byte] */
+
+
+/*--------------------------------------------------------------------------
+
+   Module Private Functions
+
+---------------------------------------------------------------------------*/
+
+#define	BUFSIZE 262144UL	/* Size of data transfer buffer */
+
+typedef struct {
+	DSTATUS	status;
+	WORD sz_sector;
+	DWORD n_sectors;
+	HANDLE h_drive;
+} STAT;
+
+static HANDLE hMutex, hTmrThread;
+static int Drives;
+
+static volatile STAT Stat[MAX_DRIVES];
+
+
+static DWORD TmrThreadID;
+
+static BYTE *Buffer, *RamDisk;	/* Poiter to the data transfer buffer and ramdisk */
+
+
+/*-----------------------------------------------------------------------*/
+/* Timer Functions                                                       */
+/*-----------------------------------------------------------------------*/
+
+
+DWORD WINAPI tmr_thread (LPVOID parms)
+{
+	DWORD dw;
+	int drv;
+
+
+	for (;;) {
+		Sleep(100);
+		for (drv = 1; drv < Drives; drv++) {
+			Sleep(1);
+			if (Stat[drv].h_drive == INVALID_HANDLE_VALUE || Stat[drv].status & STA_NOINIT || WaitForSingleObject(hMutex, 100) != WAIT_OBJECT_0) continue;
+
+			if (!DeviceIoControl(Stat[drv].h_drive, IOCTL_STORAGE_CHECK_VERIFY, 0, 0, 0, 0, &dw, 0))
+				Stat[drv].status |= STA_NOINIT;
+			ReleaseMutex(hMutex);
+			Sleep(100);
+		}
+	}
+}
+
+
+
+int get_status (
+	BYTE pdrv
+)
+{
+	volatile STAT *stat = &Stat[pdrv];
+	HANDLE h = stat->h_drive;
+	DISK_GEOMETRY parms;
+	DWORD dw;
+
+
+	if (pdrv == 0) {	/* RAMDISK */
+		stat->sz_sector = SS_RAMDISK;
+		if (stat->sz_sector < _MIN_SS || stat->sz_sector > _MAX_SS) return 0;
+		stat->n_sectors = SZ_RAMDISK * 1024 / SS_RAMDISK;
+		stat->status = 0;
+		return 1;
+	}
+
+	/* Get physical drive parameters */
+	if (   !DeviceIoControl(h, IOCTL_STORAGE_CHECK_VERIFY, 0, 0, 0, 0, &dw, 0)
+		|| !DeviceIoControl(h, IOCTL_DISK_GET_DRIVE_GEOMETRY, 0, 0, &parms, sizeof parms, &dw, 0)) {
+		stat->status = STA_NOINIT;
+		return 0;
+	}
+
+	stat->sz_sector = (WORD)parms.BytesPerSector;
+	if (stat->sz_sector < _MIN_SS || stat->sz_sector > _MAX_SS) return 0;
+	stat->n_sectors = parms.SectorsPerTrack * parms.TracksPerCylinder * (DWORD)parms.Cylinders.QuadPart; //(DWORD)(part.PartitionLength.QuadPart / parms.BytesPerSector);
+	stat->status = DeviceIoControl(h, IOCTL_DISK_IS_WRITABLE, 0, 0, 0, 0, &dw, 0) ? 0 : STA_PROTECT;
+
+	return 1;
+}
+
+
+
+
+/*--------------------------------------------------------------------------
+
+   Public Functions
+
+---------------------------------------------------------------------------*/
+
+
+/*-----------------------------------------------------------------------*/
+/* Initialize Windows disk accesss layer                                 */
+/*-----------------------------------------------------------------------*/
+
+int assign_drives (void)
+{
+	BYTE pdrv, ndrv;
+	TCHAR str[30];
+	HANDLE h;
+	OSVERSIONINFO vinfo = { sizeof (OSVERSIONINFO) };
+
+
+	hMutex = CreateMutex(0, 0, 0);
+	if (hMutex == INVALID_HANDLE_VALUE) return 0;
+
+	Buffer = VirtualAlloc(0, BUFSIZE, MEM_COMMIT, PAGE_READWRITE);
+	if (!Buffer) return 0;
+
+	RamDisk = VirtualAlloc(0, SZ_RAMDISK * 1024, MEM_COMMIT, PAGE_READWRITE);
+	if (!RamDisk) return 0;
+
+	//if (GetVersionEx(&vinfo) == FALSE) return 0;
+	//ndrv = vinfo.dwMajorVersion > 5 ? 1 : MAX_DRIVES;
+	ndrv = 1;
+
+	for (pdrv = 0; pdrv < ndrv; pdrv++) {
+		if (pdrv) {	/* \\.\PhysicalDrive1 and later are mapped to disk funtion. */
+			_stprintf_s(str, sizeof(str), _T("\\\\.\\PhysicalDrive%u"), pdrv);
+			h = CreateFile(str, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING, 0);
+			if (h == INVALID_HANDLE_VALUE) break;
+			Stat[pdrv].h_drive = h;
+		} else {	/* \\.\PhysicalDrive0 is not mapped to disk function and map a RAM disk instead. */
+			_stprintf_s(str, sizeof(str), _T("RAM Disk"));
+		}
+		_tprintf(_T("PD#%u <== %s"), pdrv, str);
+		if (get_status(pdrv))
+			_tprintf(_T(" (%uMB, %u bytes * %u sectors)\n"), (UINT)((LONGLONG)Stat[pdrv].sz_sector * Stat[pdrv].n_sectors / 1024 / 1024), Stat[pdrv].sz_sector, Stat[pdrv].n_sectors);
+		else
+			_tprintf(_T(" (Not Ready)\n"));
+	}
+
+	hTmrThread = CreateThread(0, 0, tmr_thread, 0, 0, &TmrThreadID);
+	if (hTmrThread == INVALID_HANDLE_VALUE) pdrv = 0;
+
+	if (ndrv > 1) {
+		if (pdrv == 1)
+			_tprintf(_T("\nYou must run the program as Administrator to access the physical drives.\n"));
+	} else {
+		_tprintf(_T("\nOn the Windows Vista and later, you cannot access the physical drives.\n")
+				 _T("Use Windows NT/2k/XP instead.\n"));
+	}
+
+	Drives = pdrv;
+	return pdrv;
+}
+
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Initialize Disk Drive                                                 */
+/*-----------------------------------------------------------------------*/
+
+DSTATUS disk_initialize (
+	BYTE pdrv		/* Physical drive nmuber */
+)
+{
+	DSTATUS sta;
+
+
+	if (WaitForSingleObject(hMutex, 5000) != WAIT_OBJECT_0)
+		return STA_NOINIT;
+
+	if (pdrv >= Drives) {
+		sta = STA_NOINIT;
+	} else {
+		get_status(pdrv);
+		sta = Stat[pdrv].status;
+	}
+
+	ReleaseMutex(hMutex);
+	return sta;
+}
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Get Disk Status                                                       */
+/*-----------------------------------------------------------------------*/
+
+DSTATUS disk_status (
+	BYTE pdrv		/* Physical drive nmuber (0) */
+)
+{
+	DSTATUS sta;
+
+
+	if (pdrv >= Drives) {
+		sta = STA_NOINIT;
+	} else {
+		sta = Stat[pdrv].status;
+	}
+
+	return sta;
+}
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Read Sector(s)                                                        */
+/*-----------------------------------------------------------------------*/
+
+DRESULT disk_read (
+	BYTE pdrv,			/* Physical drive nmuber (0) */
+	BYTE *buff,			/* Pointer to the data buffer to store read data */
+	DWORD sector,		/* Start sector number (LBA) */
+	UINT count			/* Number of sectors to read */
+)
+{
+	DWORD nc, rnc;
+	LARGE_INTEGER ofs;
+	DSTATUS res;
+
+
+	if (pdrv >= Drives || Stat[pdrv].status & STA_NOINIT || WaitForSingleObject(hMutex, 3000) != WAIT_OBJECT_0)
+		return RES_NOTRDY;
+
+	nc = (DWORD)count * Stat[pdrv].sz_sector;
+	ofs.QuadPart = (LONGLONG)sector * Stat[pdrv].sz_sector;
+	if (pdrv) {
+		if (nc > BUFSIZE) {
+			res = RES_PARERR;
+		} else {
+			if (SetFilePointer(Stat[pdrv].h_drive, ofs.LowPart, &ofs.HighPart, FILE_BEGIN) != ofs.LowPart) {
+				res = RES_ERROR;
+			} else {
+				if (!ReadFile(Stat[pdrv].h_drive, Buffer, nc, &rnc, 0) || nc != rnc) {
+					res = RES_ERROR;
+				} else {
+					memcpy(buff, Buffer, nc);
+					res = RES_OK;
+				}
+			}
+		}
+	} else {
+		memcpy(buff, RamDisk + ofs.LowPart, nc);
+		res = RES_OK;		
+	}
+
+	ReleaseMutex(hMutex);
+	return res;
+}
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Write Sector(s)                                                       */
+/*-----------------------------------------------------------------------*/
+
+DRESULT disk_write (
+	BYTE pdrv,			/* Physical drive nmuber (0) */
+	const BYTE *buff,	/* Pointer to the data to be written */
+	DWORD sector,		/* Start sector number (LBA) */
+	UINT count			/* Number of sectors to write */
+)
+{
+	DWORD nc, rnc;
+	LARGE_INTEGER ofs;
+	DRESULT res;
+
+
+	if (pdrv >= Drives || Stat[pdrv].status & STA_NOINIT || WaitForSingleObject(hMutex, 3000) != WAIT_OBJECT_0)
+		return RES_NOTRDY;
+
+	res = RES_OK;
+	if (Stat[pdrv].status & STA_PROTECT) {
+		res = RES_WRPRT;
+	} else {
+		nc = (DWORD)count * Stat[pdrv].sz_sector;
+		if (nc > BUFSIZE)
+			res = RES_PARERR;
+	}
+
+	ofs.QuadPart = (LONGLONG)sector * Stat[pdrv].sz_sector;
+	if (pdrv) {
+		if (res == RES_OK) {
+			if (SetFilePointer(Stat[pdrv].h_drive, ofs.LowPart, &ofs.HighPart, FILE_BEGIN) != ofs.LowPart) {
+				res = RES_ERROR;
+			} else {
+				memcpy(Buffer, buff, nc);
+				if (!WriteFile(Stat[pdrv].h_drive, Buffer, nc, &rnc, 0) || nc != rnc)
+					res = RES_ERROR;
+			}
+		}
+	} else {
+		memcpy(RamDisk + ofs.LowPart, buff, nc);
+		res = RES_OK;		
+	}
+
+	ReleaseMutex(hMutex);
+	return res;
+}
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Miscellaneous Functions                                               */
+/*-----------------------------------------------------------------------*/
+
+DRESULT disk_ioctl (
+	BYTE pdrv,		/* Physical drive nmuber (0) */
+	BYTE ctrl,		/* Control code */
+	void *buff		/* Buffer to send/receive data block */
+)
+{
+	DRESULT res = RES_PARERR;
+
+
+	if (pdrv >= Drives || (Stat[pdrv].status & STA_NOINIT))
+		return RES_NOTRDY;
+
+	switch (ctrl) {
+	case CTRL_SYNC:
+		res = RES_OK;
+		break;
+
+	case GET_SECTOR_COUNT:
+		*(DWORD*)buff = Stat[pdrv].n_sectors;
+		res = RES_OK;
+		break;
+
+	case GET_SECTOR_SIZE:
+		*(WORD*)buff = Stat[pdrv].sz_sector;
+		res = RES_OK;
+		break;
+
+	case GET_BLOCK_SIZE:
+		*(DWORD*)buff = 128;
+		res = RES_OK;
+		break;
+
+	case 200:
+		{
+			HANDLE h;
+			DWORD br;
+
+			h = CreateFile((TCHAR*)buff, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
+			if (!pdrv && h != INVALID_HANDLE_VALUE) {
+				if (ReadFile(h, RamDisk, SZ_RAMDISK * 1024, &br, 0))
+					res = RES_OK;
+				CloseHandle(h);
+			}
+		}
+		break;
+
+	case 201:
+		{
+			HANDLE h;
+			DWORD br;
+
+			h = CreateFile((TCHAR*)buff, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
+			if(!pdrv && h != INVALID_HANDLE_VALUE) {
+				if (WriteFile(h, RamDisk, SZ_RAMDISK * 1024, &br, 0))
+					res = RES_OK;
+				CloseHandle(h);
+			}
+		}
+		break;
+
+	}
+
+	return res;
+}
+
+
+
Index: uKadecot/trunk/tools/makefsdata/diskio.h
===================================================================
--- uKadecot/trunk/tools/makefsdata/diskio.h	(revision 101)
+++ uKadecot/trunk/tools/makefsdata/diskio.h	(revision 101)
@@ -0,0 +1,83 @@
+/*-----------------------------------------------------------------------/
+/  Low level disk interface modlue include file   (C)ChaN, 2014          /
+/-----------------------------------------------------------------------*/
+
+#ifndef _DISKIO_DEFINED
+#define _DISKIO_DEFINED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define _USE_WRITE	1	/* 1: Enable disk_write function */
+#define _USE_IOCTL	1	/* 1: Enable disk_ioctl fucntion */
+
+#include "integer.h"
+
+
+/* Status of Disk Functions */
+typedef BYTE	DSTATUS;
+
+/* Results of Disk Functions */
+typedef enum {
+	RES_OK = 0,		/* 0: Successful */
+	RES_ERROR,		/* 1: R/W Error */
+	RES_WRPRT,		/* 2: Write Protected */
+	RES_NOTRDY,		/* 3: Not Ready */
+	RES_PARERR		/* 4: Invalid Parameter */
+} DRESULT;
+
+
+/*---------------------------------------*/
+/* Prototypes for disk control functions */
+
+
+DSTATUS disk_status (BYTE pdrv);
+DSTATUS disk_initialize (BYTE pdrv);
+DRESULT disk_read (BYTE pdrv, BYTE* buff, DWORD sector, UINT count);
+DRESULT disk_write (BYTE pdrv, const BYTE* buff, DWORD sector, UINT count);
+DRESULT disk_ioctl (BYTE pdrv, BYTE cmd, void* buff);
+
+
+/* Disk Status Bits (DSTATUS) */
+
+#define STA_NOINIT		0x01	/* Drive not initialized */
+#define STA_NODISK		0x02	/* No medium in the drive */
+#define STA_PROTECT		0x04	/* Write protected */
+
+
+/* Command code for disk_ioctrl fucntion */
+
+/* Generic command (Used by FatFs) */
+#define CTRL_SYNC			0	/* Complete pending write process (needed at _FS_READONLY == 0) */
+#define GET_SECTOR_COUNT	1	/* Get media size (needed at _USE_MKFS == 1) */
+#define GET_SECTOR_SIZE		2	/* Get sector size (needed at _MAX_SS != _MIN_SS) */
+#define GET_BLOCK_SIZE		3	/* Get erase block size (needed at _USE_MKFS == 1) */
+#define CTRL_TRIM			4	/* Inform device that the data on the block of sectors is no longer used (needed at _USE_TRIM == 1) */
+
+/* Generic command (Not used by FatFs) */
+#define CTRL_FORMAT			5	/* Create physical format on the media */
+#define CTRL_POWER_IDLE		6	/* Put the device idle state */
+#define CTRL_POWER_OFF		7	/* Put the device off state */
+#define CTRL_LOCK			8	/* Lock media removal */
+#define CTRL_UNLOCK			9	/* Unlock media removal */
+#define CTRL_EJECT			10	/* Eject media */
+
+/* MMC/SDC specific command (Not used by FatFs) */
+#define MMC_GET_TYPE		50	/* Get card type */
+#define MMC_GET_CSD			51	/* Get CSD */
+#define MMC_GET_CID			52	/* Get CID */
+#define MMC_GET_OCR			53	/* Get OCR */
+#define MMC_GET_SDSTAT		54	/* Get SD status */
+
+/* ATA/CF specific command (Not used by FatFs) */
+#define ATA_GET_REV			60	/* Get F/W revision */
+#define ATA_GET_MODEL		61	/* Get model name */
+#define ATA_GET_SN			62	/* Get serial number */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: uKadecot/trunk/tools/makefsdata/ff.c
===================================================================
--- uKadecot/trunk/tools/makefsdata/ff.c	(revision 101)
+++ uKadecot/trunk/tools/makefsdata/ff.c	(revision 101)
@@ -0,0 +1,4612 @@
+/*----------------------------------------------------------------------------/
+/  FatFs - FAT file system module  R0.10c                (C)ChaN, 2014
+/-----------------------------------------------------------------------------/
+/ FatFs module is a generic FAT file system module for small embedded systems.
+/ This is a free software that opened for education, research and commercial
+/ developments under license policy of following terms.
+/
+/  Copyright (C) 2014, ChaN, all right reserved.
+/
+/ * The FatFs module is a free software and there is NO WARRANTY.
+/ * No restriction on use. You can use, modify and redistribute it for
+/   personal, non-profit or commercial products UNDER YOUR RESPONSIBILITY.
+/ * Redistributions of source code must retain the above copyright notice.
+/
+/-----------------------------------------------------------------------------/
+/ Feb 26,'06 R0.00  Prototype.
+/
+/ Apr 29,'06 R0.01  First stable version.
+/
+/ Jun 01,'06 R0.02  Added FAT12 support.
+/                   Removed unbuffered mode.
+/                   Fixed a problem on small (<32M) partition.
+/ Jun 10,'06 R0.02a Added a configuration option (_FS_MINIMUM).
+/
+/ Sep 22,'06 R0.03  Added f_rename().
+/                   Changed option _FS_MINIMUM to _FS_MINIMIZE.
+/ Dec 11,'06 R0.03a Improved cluster scan algorithm to write files fast.
+/                   Fixed f_mkdir() creates incorrect directory on FAT32.
+/
+/ Feb 04,'07 R0.04  Supported multiple drive system.
+/                   Changed some interfaces for multiple drive system.
+/                   Changed f_mountdrv() to f_mount().
+/                   Added f_mkfs().
+/ Apr 01,'07 R0.04a Supported multiple partitions on a physical drive.
+/                   Added a capability of extending file size to f_lseek().
+/                   Added minimization level 3.
+/                   Fixed an endian sensitive code in f_mkfs().
+/ May 05,'07 R0.04b Added a configuration option _USE_NTFLAG.
+/                   Added FSINFO support.
+/                   Fixed DBCS name can result FR_INVALID_NAME.
+/                   Fixed short seek (<= csize) collapses the file object.
+/
+/ Aug 25,'07 R0.05  Changed arguments of f_read(), f_write() and f_mkfs().
+/                   Fixed f_mkfs() on FAT32 creates incorrect FSINFO.
+/                   Fixed f_mkdir() on FAT32 creates incorrect directory.
+/ Feb 03,'08 R0.05a Added f_truncate() and f_utime().
+/                   Fixed off by one error at FAT sub-type determination.
+/                   Fixed btr in f_read() can be mistruncated.
+/                   Fixed cached sector is not flushed when create and close without write.
+/
+/ Apr 01,'08 R0.06  Added fputc(), fputs(), fprintf() and fgets().
+/                   Improved performance of f_lseek() on moving to the same or following cluster.
+/
+/ Apr 01,'09 R0.07  Merged Tiny-FatFs as a configuration option. (_FS_TINY)
+/                   Added long file name feature.
+/                   Added multiple code page feature.
+/                   Added re-entrancy for multitask operation.
+/                   Added auto cluster size selection to f_mkfs().
+/                   Added rewind option to f_readdir().
+/                   Changed result code of critical errors.
+/                   Renamed string functions to avoid name collision.
+/ Apr 14,'09 R0.07a Separated out OS dependent code on reentrant cfg.
+/                   Added multiple sector size feature.
+/ Jun 21,'09 R0.07c Fixed f_unlink() can return FR_OK on error.
+/                   Fixed wrong cache control in f_lseek().
+/                   Added relative path feature.
+/                   Added f_chdir() and f_chdrive().
+/                   Added proper case conversion to extended character.
+/ Nov 03,'09 R0.07e Separated out configuration options from ff.h to ffconf.h.
+/                   Fixed f_unlink() fails to remove a sub-directory on _FS_RPATH.
+/                   Fixed name matching error on the 13 character boundary.
+/                   Added a configuration option, _LFN_UNICODE.
+/                   Changed f_readdir() to return the SFN with always upper case on non-LFN cfg.
+/
+/ May 15,'10 R0.08  Added a memory configuration option. (_USE_LFN = 3)
+/                   Added file lock feature. (_FS_SHARE)
+/                   Added fast seek feature. (_USE_FASTSEEK)
+/                   Changed some types on the API, XCHAR->TCHAR.
+/                   Changed .fname in the FILINFO structure on Unicode cfg.
+/                   String functions support UTF-8 encoding files on Unicode cfg.
+/ Aug 16,'10 R0.08a Added f_getcwd().
+/                   Added sector erase feature. (_USE_ERASE)
+/                   Moved file lock semaphore table from fs object to the bss.
+/                   Fixed a wrong directory entry is created on non-LFN cfg when the given name contains ';'.
+/                   Fixed f_mkfs() creates wrong FAT32 volume.
+/ Jan 15,'11 R0.08b Fast seek feature is also applied to f_read() and f_write().
+/                   f_lseek() reports required table size on creating CLMP.
+/                   Extended format syntax of f_printf().
+/                   Ignores duplicated directory separators in given path name.
+/
+/ Sep 06,'11 R0.09  f_mkfs() supports multiple partition to complete the multiple partition feature.
+/                   Added f_fdisk().
+/ Aug 27,'12 R0.09a Changed f_open() and f_opendir() reject null object pointer to avoid crash.
+/                   Changed option name _FS_SHARE to _FS_LOCK.
+/                   Fixed assertion failure due to OS/2 EA on FAT12/16 volume.
+/ Jan 24,'13 R0.09b Added f_setlabel() and f_getlabel().
+/
+/ Oct 02,'13 R0.10  Added selection of character encoding on the file. (_STRF_ENCODE)
+/                   Added f_closedir().
+/                   Added forced full FAT scan for f_getfree(). (_FS_NOFSINFO)
+/                   Added forced mount feature with changes of f_mount().
+/                   Improved behavior of volume auto detection.
+/                   Improved write throughput of f_puts() and f_printf().
+/                   Changed argument of f_chdrive(), f_mkfs(), disk_read() and disk_write().
+/                   Fixed f_write() can be truncated when the file size is close to 4GB.
+/                   Fixed f_open(), f_mkdir() and f_setlabel() can return incorrect error code.
+/ Jan 15,'14 R0.10a Added arbitrary strings as drive number in the path name. (_STR_VOLUME_ID)
+/                   Added a configuration option of minimum sector size. (_MIN_SS)
+/                   2nd argument of f_rename() can have a drive number and it will be ignored.
+/                   Fixed f_mount() with forced mount fails when drive number is >= 1.
+/                   Fixed f_close() invalidates the file object without volume lock.
+/                   Fixed f_closedir() returns but the volume lock is left acquired.
+/                   Fixed creation of an entry with LFN fails on too many SFN collisions.
+/ May 19,'14 R0.10b Fixed a hard error in the disk I/O layer can collapse the directory entry.
+/                   Fixed LFN entry is not deleted on delete/rename an object with lossy converted SFN.
+/ Nov 09,'14 R0.10c Added a configuration option for the platforms without RTC. (_FS_NORTC)
+/                   Fixed volume label created by Mac OS X cannot be retrieved with f_getlabel().
+/                   Fixed a potential problem of FAT access that can appear on disk error.
+/                   Fixed null pointer dereference on attempting to delete the root direcotry.
+/ Patch1 applied.
+/ Patch2 applied.
+/---------------------------------------------------------------------------*/
+
+#include "ff.h"			/* Declarations of FatFs API */
+#include "diskio.h"		/* Declarations of disk I/O functions */
+
+
+
+
+/*--------------------------------------------------------------------------
+
+   Module Private Definitions
+
+---------------------------------------------------------------------------*/
+
+#if _FATFS != 80376	/* Revision ID */
+#error Wrong include file (ff.h).
+#endif
+
+
+/* Reentrancy related */
+#if _FS_REENTRANT
+#if _USE_LFN == 1
+#error Static LFN work area cannot be used at thread-safe configuration
+#endif
+#define	ENTER_FF(fs)		{ if (!lock_fs(fs)) return FR_TIMEOUT; }
+#define	LEAVE_FF(fs, res)	{ unlock_fs(fs, res); return res; }
+#else
+#define	ENTER_FF(fs)
+#define LEAVE_FF(fs, res)	return res
+#endif
+
+#define	ABORT(fs, res)		{ fp->err = (BYTE)(res); LEAVE_FF(fs, res); }
+
+
+/* Definitions of sector size */
+#if (_MAX_SS < _MIN_SS) || (_MAX_SS != 512 && _MAX_SS != 1024 && _MAX_SS != 2048 && _MAX_SS != 4096) || (_MIN_SS != 512 && _MIN_SS != 1024 && _MIN_SS != 2048 && _MIN_SS != 4096)
+#error Wrong sector size configuration
+#endif
+#if _MAX_SS == _MIN_SS
+#define	SS(fs)	((UINT)_MAX_SS)	/* Fixed sector size */
+#else
+#define	SS(fs)	((fs)->ssize)	/* Variable sector size */
+#endif
+
+
+/* Timestamp feature */
+#if _FS_NORTC == 1
+#if _NORTC_YEAR < 1980 || _NORTC_YEAR > 2107 || _NORTC_MON < 1 || _NORTC_MON > 12 || _NORTC_MDAY < 1 || _NORTC_MDAY > 31
+#error Invalid _FS_NORTC settings
+#endif
+#define GET_FATTIME()	((DWORD)(_NORTC_YEAR - 1980) << 25 | (DWORD)_NORTC_MON << 21 | (DWORD)_NORTC_MDAY << 16)
+#else
+#define GET_FATTIME()	get_fattime()
+#endif
+
+
+/* File access control feature */
+#if _FS_LOCK
+#if _FS_READONLY
+#error _FS_LOCK must be 0 at read-only configuration
+#endif
+typedef struct {
+	FATFS *fs;		/* Object ID 1, volume (NULL:blank entry) */
+	DWORD clu;		/* Object ID 2, directory (0:root) */
+	WORD idx;		/* Object ID 3, directory index */
+	WORD ctr;		/* Object open counter, 0:none, 0x01..0xFF:read mode open count, 0x100:write mode */
+} FILESEM;
+#endif
+
+
+
+/* DBCS code ranges and SBCS extend character conversion table */
+
+#if _CODE_PAGE == 932	/* Japanese Shift-JIS */
+#define _DF1S	0x81	/* DBC 1st byte range 1 start */
+#define _DF1E	0x9F	/* DBC 1st byte range 1 end */
+#define _DF2S	0xE0	/* DBC 1st byte range 2 start */
+#define _DF2E	0xFC	/* DBC 1st byte range 2 end */
+#define _DS1S	0x40	/* DBC 2nd byte range 1 start */
+#define _DS1E	0x7E	/* DBC 2nd byte range 1 end */
+#define _DS2S	0x80	/* DBC 2nd byte range 2 start */
+#define _DS2E	0xFC	/* DBC 2nd byte range 2 end */
+
+#elif _CODE_PAGE == 936	/* Simplified Chinese GBK */
+#define _DF1S	0x81
+#define _DF1E	0xFE
+#define _DS1S	0x40
+#define _DS1E	0x7E
+#define _DS2S	0x80
+#define _DS2E	0xFE
+
+#elif _CODE_PAGE == 949	/* Korean */
+#define _DF1S	0x81
+#define _DF1E	0xFE
+#define _DS1S	0x41
+#define _DS1E	0x5A
+#define _DS2S	0x61
+#define _DS2E	0x7A
+#define _DS3S	0x81
+#define _DS3E	0xFE
+
+#elif _CODE_PAGE == 950	/* Traditional Chinese Big5 */
+#define _DF1S	0x81
+#define _DF1E	0xFE
+#define _DS1S	0x40
+#define _DS1E	0x7E
+#define _DS2S	0xA1
+#define _DS2E	0xFE
+
+#elif _CODE_PAGE == 437	/* U.S. (OEM) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x9A,0x90,0x41,0x8E,0x41,0x8F,0x80,0x45,0x45,0x45,0x49,0x49,0x49,0x8E,0x8F,0x90,0x92,0x92,0x4F,0x99,0x4F,0x55,0x55,0x59,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
+				0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 720	/* Arabic (OEM) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x81,0x45,0x41,0x84,0x41,0x86,0x43,0x45,0x45,0x45,0x49,0x49,0x8D,0x8E,0x8F,0x90,0x92,0x92,0x93,0x94,0x95,0x49,0x49,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
+				0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 737	/* Greek (OEM) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x92,0x92,0x93,0x94,0x95,0x96,0x97,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, \
+				0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0xAA,0x92,0x93,0x94,0x95,0x96,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0x97,0xEA,0xEB,0xEC,0xE4,0xED,0xEE,0xE7,0xE8,0xF1,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 775	/* Baltic (OEM) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x9A,0x91,0xA0,0x8E,0x95,0x8F,0x80,0xAD,0xED,0x8A,0x8A,0xA1,0x8D,0x8E,0x8F,0x90,0x92,0x92,0xE2,0x99,0x95,0x96,0x97,0x97,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9F, \
+				0xA0,0xA1,0xE0,0xA3,0xA3,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xB5,0xB6,0xB7,0xB8,0xBD,0xBE,0xC6,0xC7,0xA5,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE3,0xE8,0xE8,0xEA,0xEA,0xEE,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 850	/* Multilingual Latin 1 (OEM) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xB7,0x8F,0x80,0xD2,0xD3,0xD4,0xD8,0xD7,0xDE,0x8E,0x8F,0x90,0x92,0x92,0xE2,0x99,0xE3,0xEA,0xEB,0x59,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9F, \
+				0xB5,0xD6,0xE0,0xE9,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE7,0xE7,0xE9,0xEA,0xEB,0xED,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 852	/* Latin 2 (OEM) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xDE,0x8F,0x80,0x9D,0xD3,0x8A,0x8A,0xD7,0x8D,0x8E,0x8F,0x90,0x91,0x91,0xE2,0x99,0x95,0x95,0x97,0x97,0x99,0x9A,0x9B,0x9B,0x9D,0x9E,0x9F, \
+				0xB5,0xD6,0xE0,0xE9,0xA4,0xA4,0xA6,0xA6,0xA8,0xA8,0xAA,0x8D,0xAC,0xB8,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBD,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC6,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD1,0xD1,0xD2,0xD3,0xD2,0xD5,0xD6,0xD7,0xB7,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE3,0xD5,0xE6,0xE6,0xE8,0xE9,0xE8,0xEB,0xED,0xED,0xDD,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xEB,0xFC,0xFC,0xFE,0xFF}
+
+#elif _CODE_PAGE == 855	/* Cyrillic (OEM) */
+#define _DF1S	0
+#define _EXCVT {0x81,0x81,0x83,0x83,0x85,0x85,0x87,0x87,0x89,0x89,0x8B,0x8B,0x8D,0x8D,0x8F,0x8F,0x91,0x91,0x93,0x93,0x95,0x95,0x97,0x97,0x99,0x99,0x9B,0x9B,0x9D,0x9D,0x9F,0x9F, \
+				0xA1,0xA1,0xA3,0xA3,0xA5,0xA5,0xA7,0xA7,0xA9,0xA9,0xAB,0xAB,0xAD,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB6,0xB6,0xB8,0xB8,0xB9,0xBA,0xBB,0xBC,0xBE,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD1,0xD1,0xD3,0xD3,0xD5,0xD5,0xD7,0xD7,0xDD,0xD9,0xDA,0xDB,0xDC,0xDD,0xE0,0xDF, \
+				0xE0,0xE2,0xE2,0xE4,0xE4,0xE6,0xE6,0xE8,0xE8,0xEA,0xEA,0xEC,0xEC,0xEE,0xEE,0xEF,0xF0,0xF2,0xF2,0xF4,0xF4,0xF6,0xF6,0xF8,0xF8,0xFA,0xFA,0xFC,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 857	/* Turkish (OEM) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xB7,0x8F,0x80,0xD2,0xD3,0xD4,0xD8,0xD7,0x98,0x8E,0x8F,0x90,0x92,0x92,0xE2,0x99,0xE3,0xEA,0xEB,0x98,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9E, \
+				0xB5,0xD6,0xE0,0xE9,0xA5,0xA5,0xA6,0xA6,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xDE,0x59,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 858	/* Multilingual Latin 1 + Euro (OEM) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xB7,0x8F,0x80,0xD2,0xD3,0xD4,0xD8,0xD7,0xDE,0x8E,0x8F,0x90,0x92,0x92,0xE2,0x99,0xE3,0xEA,0xEB,0x59,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9F, \
+				0xB5,0xD6,0xE0,0xE9,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD1,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE7,0xE7,0xE9,0xEA,0xEB,0xED,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 862	/* Hebrew (OEM) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
+				0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0x21,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 866	/* Russian (OEM) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
+				0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0x90,0x91,0x92,0x93,0x9d,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xF0,0xF0,0xF2,0xF2,0xF4,0xF4,0xF6,0xF6,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 874	/* Thai (OEM, Windows) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
+				0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 1250 /* Central Europe (Windows) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x8A,0x9B,0x8C,0x8D,0x8E,0x8F, \
+				0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xA3,0xB4,0xB5,0xB6,0xB7,0xB8,0xA5,0xAA,0xBB,0xBC,0xBD,0xBC,0xAF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xF7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xFF}
+
+#elif _CODE_PAGE == 1251 /* Cyrillic (Windows) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x81,0x82,0x82,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x80,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x8A,0x9B,0x8C,0x8D,0x8E,0x8F, \
+				0xA0,0xA2,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB2,0xA5,0xB5,0xB6,0xB7,0xA8,0xB9,0xAA,0xBB,0xA3,0xBD,0xBD,0xAF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF}
+
+#elif _CODE_PAGE == 1252 /* Latin 1 (Windows) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xAd,0x9B,0x8C,0x9D,0xAE,0x9F, \
+				0xA0,0x21,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xF7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0x9F}
+
+#elif _CODE_PAGE == 1253 /* Greek (Windows) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
+				0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xA2,0xB8,0xB9,0xBA, \
+				0xE0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xF2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xFB,0xBC,0xFD,0xBF,0xFF}
+
+#elif _CODE_PAGE == 1254 /* Turkish (Windows) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x8A,0x9B,0x8C,0x9D,0x9E,0x9F, \
+				0xA0,0x21,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xF7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0x9F}
+
+#elif _CODE_PAGE == 1255 /* Hebrew (Windows) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
+				0xA0,0x21,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 1256 /* Arabic (Windows) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x8C,0x9D,0x9E,0x9F, \
+				0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0x41,0xE1,0x41,0xE3,0xE4,0xE5,0xE6,0x43,0x45,0x45,0x45,0x45,0xEC,0xED,0x49,0x49,0xF0,0xF1,0xF2,0xF3,0x4F,0xF5,0xF6,0xF7,0xF8,0x55,0xFA,0x55,0x55,0xFD,0xFE,0xFF}
+
+#elif _CODE_PAGE == 1257 /* Baltic (Windows) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \
+				0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xA8,0xB9,0xAA,0xBB,0xBC,0xBD,0xBE,0xAF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xF7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xFF}
+
+#elif _CODE_PAGE == 1258 /* Vietnam (OEM, Windows) */
+#define _DF1S	0
+#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0xAC,0x9D,0x9E,0x9F, \
+				0xA0,0x21,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \
+				0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xEC,0xCD,0xCE,0xCF,0xD0,0xD1,0xF2,0xD3,0xD4,0xD5,0xD6,0xF7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xFE,0x9F}
+
+#elif _CODE_PAGE == 1	/* ASCII (for only non-LFN cfg) */
+#if _USE_LFN
+#error Cannot use LFN feature without valid code page.
+#endif
+#define _DF1S	0
+
+#else
+#error Unknown code page
+
+#endif
+
+
+/* Character code support macros */
+#define IsUpper(c)	(((c)>='A')&&((c)<='Z'))
+#define IsLower(c)	(((c)>='a')&&((c)<='z'))
+#define IsDigit(c)	(((c)>='0')&&((c)<='9'))
+
+#if _DF1S		/* Code page is DBCS */
+
+#ifdef _DF2S	/* Two 1st byte areas */
+#define IsDBCS1(c)	(((BYTE)(c) >= _DF1S && (BYTE)(c) <= _DF1E) || ((BYTE)(c) >= _DF2S && (BYTE)(c) <= _DF2E))
+#else			/* One 1st byte area */
+#define IsDBCS1(c)	((BYTE)(c) >= _DF1S && (BYTE)(c) <= _DF1E)
+#endif
+
+#ifdef _DS3S	/* Three 2nd byte areas */
+#define IsDBCS2(c)	(((BYTE)(c) >= _DS1S && (BYTE)(c) <= _DS1E) || ((BYTE)(c) >= _DS2S && (BYTE)(c) <= _DS2E) || ((BYTE)(c) >= _DS3S && (BYTE)(c) <= _DS3E))
+#else			/* Two 2nd byte areas */
+#define IsDBCS2(c)	(((BYTE)(c) >= _DS1S && (BYTE)(c) <= _DS1E) || ((BYTE)(c) >= _DS2S && (BYTE)(c) <= _DS2E))
+#endif
+
+#else			/* Code page is SBCS */
+
+#define IsDBCS1(c)	0
+#define IsDBCS2(c)	0
+
+#endif /* _DF1S */
+
+
+/* Name status flags */
+#define NSFLAG		11		/* Index of name status byte in fn[] */
+#define NS_LOSS		0x01	/* Out of 8.3 format */
+#define NS_LFN		0x02	/* Force to create LFN entry */
+#define NS_LAST		0x04	/* Last segment */
+#define NS_BODY		0x08	/* Lower case flag (body) */
+#define NS_EXT		0x10	/* Lower case flag (ext) */
+#define NS_DOT		0x20	/* Dot entry */
+
+
+/* FAT sub-type boundaries (Differ from specs but correct for real DOS/Windows) */
+#define MIN_FAT16	4086U	/* Minimum number of clusters as FAT16 */
+#define	MIN_FAT32	65526U	/* Minimum number of clusters as FAT32 */
+
+
+/* FatFs refers the members in the FAT structures as byte array instead of
+/ structure member because the structure is not binary compatible between
+/ different platforms */
+
+#define BS_jmpBoot			0		/* x86 jump instruction (3) */
+#define BS_OEMName			3		/* OEM name (8) */
+#define BPB_BytsPerSec		11		/* Sector size [byte] (2) */
+#define BPB_SecPerClus		13		/* Cluster size [sector] (1) */
+#define BPB_RsvdSecCnt		14		/* Size of reserved area [sector] (2) */
+#define BPB_NumFATs			16		/* Number of FAT copies (1) */
+#define BPB_RootEntCnt		17		/* Number of root directory entries for FAT12/16 (2) */
+#define BPB_TotSec16		19		/* Volume size [sector] (2) */
+#define BPB_Media			21		/* Media descriptor (1) */
+#define BPB_FATSz16			22		/* FAT size [sector] (2) */
+#define BPB_SecPerTrk		24		/* Track size [sector] (2) */
+#define BPB_NumHeads		26		/* Number of heads (2) */
+#define BPB_HiddSec			28		/* Number of special hidden sectors (4) */
+#define BPB_TotSec32		32		/* Volume size [sector] (4) */
+#define BS_DrvNum			36		/* Physical drive number (2) */
+#define BS_BootSig			38		/* Extended boot signature (1) */
+#define BS_VolID			39		/* Volume serial number (4) */
+#define BS_VolLab			43		/* Volume label (8) */
+#define BS_FilSysType		54		/* File system type (1) */
+#define BPB_FATSz32			36		/* FAT size [sector] (4) */
+#define BPB_ExtFlags		40		/* Extended flags (2) */
+#define BPB_FSVer			42		/* File system version (2) */
+#define BPB_RootClus		44		/* Root directory first cluster (4) */
+#define BPB_FSInfo			48		/* Offset of FSINFO sector (2) */
+#define BPB_BkBootSec		50		/* Offset of backup boot sector (2) */
+#define BS_DrvNum32			64		/* Physical drive number (2) */
+#define BS_BootSig32		66		/* Extended boot signature (1) */
+#define BS_VolID32			67		/* Volume serial number (4) */
+#define BS_VolLab32			71		/* Volume label (8) */
+#define BS_FilSysType32		82		/* File system type (1) */
+#define	FSI_LeadSig			0		/* FSI: Leading signature (4) */
+#define	FSI_StrucSig		484		/* FSI: Structure signature (4) */
+#define	FSI_Free_Count		488		/* FSI: Number of free clusters (4) */
+#define	FSI_Nxt_Free		492		/* FSI: Last allocated cluster (4) */
+#define MBR_Table			446		/* MBR: Partition table offset (2) */
+#define	SZ_PTE				16		/* MBR: Size of a partition table entry */
+#define BS_55AA				510		/* Signature word (2) */
+
+#define	DIR_Name			0		/* Short file name (11) */
+#define	DIR_Attr			11		/* Attribute (1) */
+#define	DIR_NTres			12		/* NT flag (1) */
+#define DIR_CrtTimeTenth	13		/* Created time sub-second (1) */
+#define	DIR_CrtTime			14		/* Created time (2) */
+#define	DIR_CrtDate			16		/* Created date (2) */
+#define DIR_LstAccDate		18		/* Last accessed date (2) */
+#define	DIR_FstClusHI		20		/* Higher 16-bit of first cluster (2) */
+#define	DIR_WrtTime			22		/* Modified time (2) */
+#define	DIR_WrtDate			24		/* Modified date (2) */
+#define	DIR_FstClusLO		26		/* Lower 16-bit of first cluster (2) */
+#define	DIR_FileSize		28		/* File size (4) */
+#define	LDIR_Ord			0		/* LFN entry order and LLE flag (1) */
+#define	LDIR_Attr			11		/* LFN attribute (1) */
+#define	LDIR_Type			12		/* LFN type (1) */
+#define	LDIR_Chksum			13		/* Sum of corresponding SFN entry */
+#define	LDIR_FstClusLO		26		/* Filled by zero (0) */
+#define	SZ_DIR				32		/* Size of a directory entry */
+#define	LLE					0x40	/* Last long entry flag in LDIR_Ord */
+#define	DDE					0xE5	/* Deleted directory entry mark in DIR_Name[0] */
+#define	NDDE				0x05	/* Replacement of the character collides with DDE */
+
+
+
+
+/*------------------------------------------------------------*/
+/* Module private work area                                   */
+/*------------------------------------------------------------*/
+/* Remark: Uninitialized variables with static duration are
+/  guaranteed zero/null at start-up. If not, either the linker
+/  or start-up routine being used is out of ANSI-C standard.
+*/
+
+#if _VOLUMES < 1 || _VOLUMES > 9
+#error Wrong _VOLUMES setting
+#endif
+static FATFS *FatFs[_VOLUMES];	/* Pointer to the file system objects (logical drives) */
+static WORD Fsid;				/* File system mount ID */
+
+#if _FS_RPATH && _VOLUMES >= 2
+static BYTE CurrVol;			/* Current drive */
+#endif
+
+#if _FS_LOCK
+static FILESEM Files[_FS_LOCK];	/* Open object lock semaphores */
+#endif
+
+#if _USE_LFN == 0			/* Non LFN feature */
+#define	DEF_NAMEBUF			BYTE sfn[12]
+#define INIT_BUF(dobj)		(dobj).fn = sfn
+#define	FREE_BUF()
+#else
+#if _MAX_LFN < 12 || _MAX_LFN > 255
+#error Wrong _MAX_LFN setting
+#endif
+#if _USE_LFN == 1			/* LFN feature with static working buffer */
+static WCHAR LfnBuf[_MAX_LFN+1];
+#define	DEF_NAMEBUF			BYTE sfn[12]
+#define INIT_BUF(dobj)		{ (dobj).fn = sfn; (dobj).lfn = LfnBuf; }
+#define	FREE_BUF()
+#elif _USE_LFN == 2 		/* LFN feature with dynamic working buffer on the stack */
+#define	DEF_NAMEBUF			BYTE sfn[12]; WCHAR lbuf[_MAX_LFN+1]
+#define INIT_BUF(dobj)		{ (dobj).fn = sfn; (dobj).lfn = lbuf; }
+#define	FREE_BUF()
+#elif _USE_LFN == 3 		/* LFN feature with dynamic working buffer on the heap */
+#define	DEF_NAMEBUF			BYTE sfn[12]; WCHAR *lfn
+#define INIT_BUF(dobj)		{ lfn = ff_memalloc((_MAX_LFN + 1) * 2); if (!lfn) LEAVE_FF((dobj).fs, FR_NOT_ENOUGH_CORE); (dobj).lfn = lfn; (dobj).fn = sfn; }
+#define	FREE_BUF()			ff_memfree(lfn)
+#else
+#error Wrong _USE_LFN setting
+#endif
+#endif
+
+#ifdef _EXCVT
+static const BYTE ExCvt[] = _EXCVT;	/* Upper conversion table for extended characters */
+#endif
+
+
+
+
+
+
+/*--------------------------------------------------------------------------
+
+   Module Private Functions
+
+---------------------------------------------------------------------------*/
+
+
+/*-----------------------------------------------------------------------*/
+/* String functions                                                      */
+/*-----------------------------------------------------------------------*/
+
+/* Copy memory to memory */
+static
+void mem_cpy (void* dst, const void* src, UINT cnt) {
+	BYTE *d = (BYTE*)dst;
+	const BYTE *s = (const BYTE*)src;
+
+#if _WORD_ACCESS == 1
+	while (cnt >= sizeof (int)) {
+		*(int*)d = *(int*)s;
+		d += sizeof (int); s += sizeof (int);
+		cnt -= sizeof (int);
+	}
+#endif
+	while (cnt--)
+		*d++ = *s++;
+}
+
+/* Fill memory */
+static
+void mem_set (void* dst, int val, UINT cnt) {
+	BYTE *d = (BYTE*)dst;
+
+	while (cnt--)
+		*d++ = (BYTE)val;
+}
+
+/* Compare memory to memory */
+static
+int mem_cmp (const void* dst, const void* src, UINT cnt) {
+	const BYTE *d = (const BYTE *)dst, *s = (const BYTE *)src;
+	int r = 0;
+
+	while (cnt-- && (r = *d++ - *s++) == 0) ;
+	return r;
+}
+
+/* Check if chr is contained in the string */
+static
+int chk_chr (const char* str, int chr) {
+	while (*str && *str != chr) str++;
+	return *str;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Request/Release grant to access the volume                            */
+/*-----------------------------------------------------------------------*/
+#if _FS_REENTRANT
+static
+int lock_fs (
+	FATFS* fs		/* File system object */
+)
+{
+	return ff_req_grant(fs->sobj);
+}
+
+
+static
+void unlock_fs (
+	FATFS* fs,		/* File system object */
+	FRESULT res		/* Result code to be returned */
+)
+{
+	if (fs &&
+		res != FR_NOT_ENABLED &&
+		res != FR_INVALID_DRIVE &&
+		res != FR_INVALID_OBJECT &&
+		res != FR_TIMEOUT) {
+		ff_rel_grant(fs->sobj);
+	}
+}
+#endif
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* File lock control functions                                           */
+/*-----------------------------------------------------------------------*/
+#if _FS_LOCK
+
+static
+FRESULT chk_lock (	/* Check if the file can be accessed */
+	DIR* dp,		/* Directory object pointing the file to be checked */
+	int acc			/* Desired access type (0:Read, 1:Write, 2:Delete/Rename) */
+)
+{
+	UINT i, be;
+
+	/* Search file semaphore table */
+	for (i = be = 0; i < _FS_LOCK; i++) {
+		if (Files[i].fs) {	/* Existing entry */
+			if (Files[i].fs == dp->fs &&	 	/* Check if the object matched with an open object */
+				Files[i].clu == dp->sclust &&
+				Files[i].idx == dp->index) break;
+		} else {			/* Blank entry */
+			be = 1;
+		}
+	}
+	if (i == _FS_LOCK)	/* The object is not opened */
+		return (be || acc == 2) ? FR_OK : FR_TOO_MANY_OPEN_FILES;	/* Is there a blank entry for new object? */
+
+	/* The object has been opened. Reject any open against writing file and all write mode open */
+	return (acc || Files[i].ctr == 0x100) ? FR_LOCKED : FR_OK;
+}
+
+
+static
+int enq_lock (void)	/* Check if an entry is available for a new object */
+{
+	UINT i;
+
+	for (i = 0; i < _FS_LOCK && Files[i].fs; i++) ;
+	return (i == _FS_LOCK) ? 0 : 1;
+}
+
+
+static
+UINT inc_lock (	/* Increment object open counter and returns its index (0:Internal error) */
+	DIR* dp,	/* Directory object pointing the file to register or increment */
+	int acc		/* Desired access (0:Read, 1:Write, 2:Delete/Rename) */
+)
+{
+	UINT i;
+
+
+	for (i = 0; i < _FS_LOCK; i++) {	/* Find the object */
+		if (Files[i].fs == dp->fs &&
+			Files[i].clu == dp->sclust &&
+			Files[i].idx == dp->index) break;
+	}
+
+	if (i == _FS_LOCK) {				/* Not opened. Register it as new. */
+		for (i = 0; i < _FS_LOCK && Files[i].fs; i++) ;
+		if (i == _FS_LOCK) return 0;	/* No free entry to register (int err) */
+		Files[i].fs = dp->fs;
+		Files[i].clu = dp->sclust;
+		Files[i].idx = dp->index;
+		Files[i].ctr = 0;
+	}
+
+	if (acc && Files[i].ctr) return 0;	/* Access violation (int err) */
+
+	Files[i].ctr = acc ? 0x100 : Files[i].ctr + 1;	/* Set semaphore value */
+
+	return i + 1;
+}
+
+
+static
+FRESULT dec_lock (	/* Decrement object open counter */
+	UINT i			/* Semaphore index (1..) */
+)
+{
+	WORD n;
+	FRESULT res;
+
+
+	if (--i < _FS_LOCK) {	/* Shift index number origin from 0 */
+		n = Files[i].ctr;
+		if (n == 0x100) n = 0;		/* If write mode open, delete the entry */
+		if (n) n--;					/* Decrement read mode open count */
+		Files[i].ctr = n;
+		if (!n) Files[i].fs = 0;	/* Delete the entry if open count gets zero */
+		res = FR_OK;
+	} else {
+		res = FR_INT_ERR;			/* Invalid index nunber */
+	}
+	return res;
+}
+
+
+static
+void clear_lock (	/* Clear lock entries of the volume */
+	FATFS *fs
+)
+{
+	UINT i;
+
+	for (i = 0; i < _FS_LOCK; i++) {
+		if (Files[i].fs == fs) Files[i].fs = 0;
+	}
+}
+#endif
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Move/Flush disk access window in the file system object               */
+/*-----------------------------------------------------------------------*/
+#if !_FS_READONLY
+static
+FRESULT sync_window (
+	FATFS* fs		/* File system object */
+)
+{
+	DWORD wsect;
+	UINT nf;
+	FRESULT res = FR_OK;
+
+
+	if (fs->wflag) {	/* Write back the sector if it is dirty */
+		wsect = fs->winsect;	/* Current sector number */
+		if (disk_write(fs->drv, fs->win, wsect, 1) != RES_OK) {
+			res = FR_DISK_ERR;
+		} else {
+			fs->wflag = 0;
+			if (wsect - fs->fatbase < fs->fsize) {		/* Is it in the FAT area? */
+				for (nf = fs->n_fats; nf >= 2; nf--) {	/* Reflect the change to all FAT copies */
+					wsect += fs->fsize;
+					disk_write(fs->drv, fs->win, wsect, 1);
+				}
+			}
+		}
+	}
+	return res;
+}
+#endif
+
+
+static
+FRESULT move_window (
+	FATFS* fs,		/* File system object */
+	DWORD sector	/* Sector number to make appearance in the fs->win[] */
+)
+{
+	FRESULT res = FR_OK;
+
+
+	if (sector != fs->winsect) {	/* Window offset changed? */
+#if !_FS_READONLY
+		res = sync_window(fs);		/* Write-back changes */
+#endif
+		if (res == FR_OK) {			/* Fill sector window with new data */
+			if (disk_read(fs->drv, fs->win, sector, 1) != RES_OK) {
+				sector = 0xFFFFFFFF;	/* Invalidate window if data is not reliable */
+				res = FR_DISK_ERR;
+			}
+			fs->winsect = sector;
+		}
+	}
+	return res;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Synchronize file system and strage device                             */
+/*-----------------------------------------------------------------------*/
+#if !_FS_READONLY
+static
+FRESULT sync_fs (	/* FR_OK: successful, FR_DISK_ERR: failed */
+	FATFS* fs		/* File system object */
+)
+{
+	FRESULT res;
+
+
+	res = sync_window(fs);
+	if (res == FR_OK) {
+		/* Update FSINFO sector if needed */
+		if (fs->fs_type == FS_FAT32 && fs->fsi_flag == 1) {
+			/* Create FSINFO structure */
+			mem_set(fs->win, 0, SS(fs));
+			ST_WORD(fs->win+BS_55AA, 0xAA55);
+			ST_DWORD(fs->win+FSI_LeadSig, 0x41615252);
+			ST_DWORD(fs->win+FSI_StrucSig, 0x61417272);
+			ST_DWORD(fs->win+FSI_Free_Count, fs->free_clust);
+			ST_DWORD(fs->win+FSI_Nxt_Free, fs->last_clust);
+			/* Write it into the FSINFO sector */
+			fs->winsect = fs->volbase + 1;
+			disk_write(fs->drv, fs->win, fs->winsect, 1);
+			fs->fsi_flag = 0;
+		}
+		/* Make sure that no pending write process in the physical drive */
+		if (disk_ioctl(fs->drv, CTRL_SYNC, 0) != RES_OK)
+			res = FR_DISK_ERR;
+	}
+
+	return res;
+}
+#endif
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Get sector# from cluster#                                             */
+/*-----------------------------------------------------------------------*/
+/* Hidden API for hacks and disk tools */
+
+DWORD clust2sect (	/* !=0: Sector number, 0: Failed - invalid cluster# */
+	FATFS* fs,		/* File system object */
+	DWORD clst		/* Cluster# to be converted */
+)
+{
+	clst -= 2;
+	if (clst >= fs->n_fatent - 2) return 0;		/* Invalid cluster# */
+	return clst * fs->csize + fs->database;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* FAT access - Read value of a FAT entry                                */
+/*-----------------------------------------------------------------------*/
+/* Hidden API for hacks and disk tools */
+
+DWORD get_fat (	/* 0xFFFFFFFF:Disk error, 1:Internal error, 2..0x0FFFFFFF:Cluster status */
+	FATFS* fs,	/* File system object */
+	DWORD clst	/* FAT item index (cluster#) to get the value */
+)
+{
+	UINT wc, bc;
+	BYTE *p;
+	DWORD val;
+
+
+	if (clst < 2 || clst >= fs->n_fatent) {	/* Check range */
+		val = 1;	/* Internal error */
+
+	} else {
+		val = 0xFFFFFFFF;	/* Default value falls on disk error */
+
+		switch (fs->fs_type) {
+		case FS_FAT12 :
+			bc = (UINT)clst; bc += bc / 2;
+			if (move_window(fs, fs->fatbase + (bc / SS(fs))) != FR_OK) break;
+			wc = fs->win[bc++ % SS(fs)];
+			if (move_window(fs, fs->fatbase + (bc / SS(fs))) != FR_OK) break;
+			wc |= fs->win[bc % SS(fs)] << 8;
+			val = clst & 1 ? wc >> 4 : (wc & 0xFFF);
+			break;
+
+		case FS_FAT16 :
+			if (move_window(fs, fs->fatbase + (clst / (SS(fs) / 2))) != FR_OK) break;
+			p = &fs->win[clst * 2 % SS(fs)];
+			val = LD_WORD(p);
+			break;
+
+		case FS_FAT32 :
+			if (move_window(fs, fs->fatbase + (clst / (SS(fs) / 4))) != FR_OK) break;
+			p = &fs->win[clst * 4 % SS(fs)];
+			val = LD_DWORD(p) & 0x0FFFFFFF;
+			break;
+
+		default:
+			val = 1;	/* Internal error */
+		}
+	}
+
+	return val;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* FAT access - Change value of a FAT entry                              */
+/*-----------------------------------------------------------------------*/
+/* Hidden API for hacks and disk tools */
+
+#if !_FS_READONLY
+FRESULT put_fat (
+	FATFS* fs,	/* File system object */
+	DWORD clst,	/* FAT item index (cluster#) to be set */
+	DWORD val	/* New value to mark the cluster */
+)
+{
+	UINT bc;
+	BYTE *p;
+	FRESULT res;
+
+
+	if (clst < 2 || clst >= fs->n_fatent) {	/* Check range */
+		res = FR_INT_ERR;
+
+	} else {
+		switch (fs->fs_type) {
+		case FS_FAT12 :
+			bc = (UINT)clst; bc += bc / 2;
+			res = move_window(fs, fs->fatbase + (bc / SS(fs)));
+			if (res != FR_OK) break;
+			p = &fs->win[bc++ % SS(fs)];
+			*p = (clst & 1) ? ((*p & 0x0F) | ((BYTE)val << 4)) : (BYTE)val;
+			fs->wflag = 1;
+			res = move_window(fs, fs->fatbase + (bc / SS(fs)));
+			if (res != FR_OK) break;
+			p = &fs->win[bc % SS(fs)];
+			*p = (clst & 1) ? (BYTE)(val >> 4) : ((*p & 0xF0) | ((BYTE)(val >> 8) & 0x0F));
+			fs->wflag = 1;
+			break;
+
+		case FS_FAT16 :
+			res = move_window(fs, fs->fatbase + (clst / (SS(fs) / 2)));
+			if (res != FR_OK) break;
+			p = &fs->win[clst * 2 % SS(fs)];
+			ST_WORD(p, (WORD)val);
+			fs->wflag = 1;
+			break;
+
+		case FS_FAT32 :
+			res = move_window(fs, fs->fatbase + (clst / (SS(fs) / 4)));
+			if (res != FR_OK) break;
+			p = &fs->win[clst * 4 % SS(fs)];
+			val |= LD_DWORD(p) & 0xF0000000;
+			ST_DWORD(p, val);
+			fs->wflag = 1;
+			break;
+
+		default :
+			res = FR_INT_ERR;
+		}
+	}
+
+	return res;
+}
+#endif /* !_FS_READONLY */
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* FAT handling - Remove a cluster chain                                 */
+/*-----------------------------------------------------------------------*/
+#if !_FS_READONLY
+static
+FRESULT remove_chain (
+	FATFS* fs,			/* File system object */
+	DWORD clst			/* Cluster# to remove a chain from */
+)
+{
+	FRESULT res;
+	DWORD nxt;
+#if _USE_TRIM
+	DWORD scl = clst, ecl = clst, rt[2];
+#endif
+
+	if (clst < 2 || clst >= fs->n_fatent) {	/* Check range */
+		res = FR_INT_ERR;
+
+	} else {
+		res = FR_OK;
+		while (clst < fs->n_fatent) {			/* Not a last link? */
+			nxt = get_fat(fs, clst);			/* Get cluster status */
+			if (nxt == 0) break;				/* Empty cluster? */
+			if (nxt == 1) { res = FR_INT_ERR; break; }	/* Internal error? */
+			if (nxt == 0xFFFFFFFF) { res = FR_DISK_ERR; break; }	/* Disk error? */
+			res = put_fat(fs, clst, 0);			/* Mark the cluster "empty" */
+			if (res != FR_OK) break;
+			if (fs->free_clust != 0xFFFFFFFF) {	/* Update FSINFO */
+				fs->free_clust++;
+				fs->fsi_flag |= 1;
+			}
+#if _USE_TRIM
+			if (ecl + 1 == nxt) {	/* Is next cluster contiguous? */
+				ecl = nxt;
+			} else {				/* End of contiguous clusters */ 
+				rt[0] = clust2sect(fs, scl);					/* Start sector */
+				rt[1] = clust2sect(fs, ecl) + fs->csize - 1;	/* End sector */
+				disk_ioctl(fs->drv, CTRL_TRIM, rt);				/* Erase the block */
+				scl = ecl = nxt;
+			}
+#endif
+			clst = nxt;	/* Next cluster */
+		}
+	}
+
+	return res;
+}
+#endif
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* FAT handling - Stretch or Create a cluster chain                      */
+/*-----------------------------------------------------------------------*/
+#if !_FS_READONLY
+static
+DWORD create_chain (	/* 0:No free cluster, 1:Internal error, 0xFFFFFFFF:Disk error, >=2:New cluster# */
+	FATFS* fs,			/* File system object */
+	DWORD clst			/* Cluster# to stretch. 0 means create a new chain. */
+)
+{
+	DWORD cs, ncl, scl;
+	FRESULT res;
+
+
+	if (clst == 0) {		/* Create a new chain */
+		scl = fs->last_clust;			/* Get suggested start point */
+		if (!scl || scl >= fs->n_fatent) scl = 1;
+	}
+	else {					/* Stretch the current chain */
+		cs = get_fat(fs, clst);			/* Check the cluster status */
+		if (cs < 2) return 1;			/* Invalid value */
+		if (cs == 0xFFFFFFFF) return cs;	/* A disk error occurred */
+		if (cs < fs->n_fatent) return cs;	/* It is already followed by next cluster */
+		scl = clst;
+	}
+
+	ncl = scl;				/* Start cluster */
+	for (;;) {
+		ncl++;							/* Next cluster */
+		if (ncl >= fs->n_fatent) {		/* Check wrap around */
+			ncl = 2;
+			if (ncl > scl) return 0;	/* No free cluster */
+		}
+		cs = get_fat(fs, ncl);			/* Get the cluster status */
+		if (cs == 0) break;				/* Found a free cluster */
+		if (cs == 0xFFFFFFFF || cs == 1)/* An error occurred */
+			return cs;
+		if (ncl == scl) return 0;		/* No free cluster */
+	}
+
+	res = put_fat(fs, ncl, 0x0FFFFFFF);	/* Mark the new cluster "last link" */
+	if (res == FR_OK && clst != 0) {
+		res = put_fat(fs, clst, ncl);	/* Link it to the previous one if needed */
+	}
+	if (res == FR_OK) {
+		fs->last_clust = ncl;			/* Update FSINFO */
+		if (fs->free_clust != 0xFFFFFFFF) {
+			fs->free_clust--;
+			fs->fsi_flag |= 1;
+		}
+	} else {
+		ncl = (res == FR_DISK_ERR) ? 0xFFFFFFFF : 1;
+	}
+
+	return ncl;		/* Return new cluster number or error code */
+}
+#endif /* !_FS_READONLY */
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* FAT handling - Convert offset into cluster with link map table        */
+/*-----------------------------------------------------------------------*/
+
+#if _USE_FASTSEEK
+static
+DWORD clmt_clust (	/* <2:Error, >=2:Cluster number */
+	FIL* fp,		/* Pointer to the file object */
+	DWORD ofs		/* File offset to be converted to cluster# */
+)
+{
+	DWORD cl, ncl, *tbl;
+
+
+	tbl = fp->cltbl + 1;	/* Top of CLMT */
+	cl = ofs / SS(fp->fs) / fp->fs->csize;	/* Cluster order from top of the file */
+	for (;;) {
+		ncl = *tbl++;			/* Number of cluters in the fragment */
+		if (!ncl) return 0;		/* End of table? (error) */
+		if (cl < ncl) break;	/* In this fragment? */
+		cl -= ncl; tbl++;		/* Next fragment */
+	}
+	return cl + *tbl;	/* Return the cluster number */
+}
+#endif	/* _USE_FASTSEEK */
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Directory handling - Set directory index                              */
+/*-----------------------------------------------------------------------*/
+
+static
+FRESULT dir_sdi (
+	DIR* dp,		/* Pointer to directory object */
+	UINT idx		/* Index of directory table */
+)
+{
+	DWORD clst, sect;
+	UINT ic;
+
+
+	dp->index = (WORD)idx;	/* Current index */
+	clst = dp->sclust;		/* Table start cluster (0:root) */
+	if (clst == 1 || clst >= dp->fs->n_fatent)	/* Check start cluster range */
+		return FR_INT_ERR;
+	if (!clst && dp->fs->fs_type == FS_FAT32)	/* Replace cluster# 0 with root cluster# if in FAT32 */
+		clst = dp->fs->dirbase;
+
+	if (clst == 0) {	/* Static table (root-directory in FAT12/16) */
+		if (idx >= dp->fs->n_rootdir)	/* Is index out of range? */
+			return FR_INT_ERR;
+		sect = dp->fs->dirbase;
+	}
+	else {				/* Dynamic table (root-directory in FAT32 or sub-directory) */
+		ic = SS(dp->fs) / SZ_DIR * dp->fs->csize;	/* Entries per cluster */
+		while (idx >= ic) {	/* Follow cluster chain */
+			clst = get_fat(dp->fs, clst);				/* Get next cluster */
+			if (clst == 0xFFFFFFFF) return FR_DISK_ERR;	/* Disk error */
+			if (clst < 2 || clst >= dp->fs->n_fatent)	/* Reached to end of table or internal error */
+				return FR_INT_ERR;
+			idx -= ic;
+		}
+		sect = clust2sect(dp->fs, clst);
+	}
+	dp->clust = clst;	/* Current cluster# */
+	if (!sect) return FR_INT_ERR;
+	dp->sect = sect + idx / (SS(dp->fs) / SZ_DIR);					/* Sector# of the directory entry */
+	dp->dir = dp->fs->win + (idx % (SS(dp->fs) / SZ_DIR)) * SZ_DIR;	/* Ptr to the entry in the sector */
+
+	return FR_OK;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Directory handling - Move directory table index next                  */
+/*-----------------------------------------------------------------------*/
+
+static
+FRESULT dir_next (	/* FR_OK:Succeeded, FR_NO_FILE:End of table, FR_DENIED:Could not stretch */
+	DIR* dp,		/* Pointer to the directory object */
+	int stretch		/* 0: Do not stretch table, 1: Stretch table if needed */
+)
+{
+	DWORD clst;
+	UINT i;
+
+
+	i = dp->index + 1;
+	if (!(i & 0xFFFF) || !dp->sect)	/* Report EOT when index has reached 65535 */
+		return FR_NO_FILE;
+
+	if (!(i % (SS(dp->fs) / SZ_DIR))) {	/* Sector changed? */
+		dp->sect++;					/* Next sector */
+
+		if (!dp->clust) {		/* Static table */
+			if (i >= dp->fs->n_rootdir)	/* Report EOT if it reached end of static table */
+				return FR_NO_FILE;
+		}
+		else {					/* Dynamic table */
+			if (((i / (SS(dp->fs) / SZ_DIR)) & (dp->fs->csize - 1)) == 0) {	/* Cluster changed? */
+				clst = get_fat(dp->fs, dp->clust);				/* Get next cluster */
+				if (clst <= 1) return FR_INT_ERR;
+				if (clst == 0xFFFFFFFF) return FR_DISK_ERR;
+				if (clst >= dp->fs->n_fatent) {					/* If it reached end of dynamic table, */
+#if !_FS_READONLY
+					UINT c;
+					if (!stretch) return FR_NO_FILE;			/* If do not stretch, report EOT */
+					clst = create_chain(dp->fs, dp->clust);		/* Stretch cluster chain */
+					if (clst == 0) return FR_DENIED;			/* No free cluster */
+					if (clst == 1) return FR_INT_ERR;
+					if (clst == 0xFFFFFFFF) return FR_DISK_ERR;
+					/* Clean-up stretched table */
+					if (sync_window(dp->fs)) return FR_DISK_ERR;/* Flush disk access window */
+					mem_set(dp->fs->win, 0, SS(dp->fs));		/* Clear window buffer */
+					dp->fs->winsect = clust2sect(dp->fs, clst);	/* Cluster start sector */
+					for (c = 0; c < dp->fs->csize; c++) {		/* Fill the new cluster with 0 */
+						dp->fs->wflag = 1;
+						if (sync_window(dp->fs)) return FR_DISK_ERR;
+						dp->fs->winsect++;
+					}
+					dp->fs->winsect -= c;						/* Rewind window offset */
+#else
+					if (!stretch) return FR_NO_FILE;			/* If do not stretch, report EOT (this is to suppress warning) */
+					return FR_NO_FILE;							/* Report EOT */
+#endif
+				}
+				dp->clust = clst;				/* Initialize data for new cluster */
+				dp->sect = clust2sect(dp->fs, clst);
+			}
+		}
+	}
+
+	dp->index = (WORD)i;	/* Current index */
+	dp->dir = dp->fs->win + (i % (SS(dp->fs) / SZ_DIR)) * SZ_DIR;	/* Current entry in the window */
+
+	return FR_OK;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Directory handling - Reserve directory entry                          */
+/*-----------------------------------------------------------------------*/
+
+#if !_FS_READONLY
+static
+FRESULT dir_alloc (
+	DIR* dp,	/* Pointer to the directory object */
+	UINT nent	/* Number of contiguous entries to allocate (1-21) */
+)
+{
+	FRESULT res;
+	UINT n;
+
+
+	res = dir_sdi(dp, 0);
+	if (res == FR_OK) {
+		n = 0;
+		do {
+			res = move_window(dp->fs, dp->sect);
+			if (res != FR_OK) break;
+			if (dp->dir[0] == DDE || dp->dir[0] == 0) {	/* Is it a free entry? */
+				if (++n == nent) break;	/* A block of contiguous free entries is found */
+			} else {
+				n = 0;					/* Not a blank entry. Restart to search */
+			}
+			res = dir_next(dp, 1);		/* Next entry with table stretch enabled */
+		} while (res == FR_OK);
+	}
+	if (res == FR_NO_FILE) res = FR_DENIED;	/* No directory entry to allocate */
+	return res;
+}
+#endif
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Directory handling - Load/Store start cluster number                  */
+/*-----------------------------------------------------------------------*/
+
+static
+DWORD ld_clust (
+	FATFS* fs,	/* Pointer to the fs object */
+	BYTE* dir	/* Pointer to the directory entry */
+)
+{
+	DWORD cl;
+
+	cl = LD_WORD(dir+DIR_FstClusLO);
+	if (fs->fs_type == FS_FAT32)
+		cl |= (DWORD)LD_WORD(dir+DIR_FstClusHI) << 16;
+
+	return cl;
+}
+
+
+#if !_FS_READONLY
+static
+void st_clust (
+	BYTE* dir,	/* Pointer to the directory entry */
+	DWORD cl	/* Value to be set */
+)
+{
+	ST_WORD(dir+DIR_FstClusLO, cl);
+	ST_WORD(dir+DIR_FstClusHI, cl >> 16);
+}
+#endif
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* LFN handling - Test/Pick/Fit an LFN segment from/to directory entry   */
+/*-----------------------------------------------------------------------*/
+#if _USE_LFN
+static
+const BYTE LfnOfs[] = {1,3,5,7,9,14,16,18,20,22,24,28,30};	/* Offset of LFN characters in the directory entry */
+
+
+static
+int cmp_lfn (			/* 1:Matched, 0:Not matched */
+	WCHAR* lfnbuf,		/* Pointer to the LFN to be compared */
+	BYTE* dir			/* Pointer to the directory entry containing a part of LFN */
+)
+{
+	UINT i, s;
+	WCHAR wc, uc;
+
+
+	i = ((dir[LDIR_Ord] & ~LLE) - 1) * 13;	/* Get offset in the LFN buffer */
+	s = 0; wc = 1;
+	do {
+		uc = LD_WORD(dir+LfnOfs[s]);	/* Pick an LFN character from the entry */
+		if (wc) {	/* Last character has not been processed */
+			wc = ff_wtoupper(uc);		/* Convert it to upper case */
+			if (i >= _MAX_LFN || wc != ff_wtoupper(lfnbuf[i++]))	/* Compare it */
+				return 0;				/* Not matched */
+		} else {
+			if (uc != 0xFFFF) return 0;	/* Check filler */
+		}
+	} while (++s < 13);				/* Repeat until all characters in the entry are checked */
+
+	if ((dir[LDIR_Ord] & LLE) && wc && lfnbuf[i])	/* Last segment matched but different length */
+		return 0;
+
+	return 1;						/* The part of LFN matched */
+}
+
+
+
+static
+int pick_lfn (			/* 1:Succeeded, 0:Buffer overflow */
+	WCHAR* lfnbuf,		/* Pointer to the Unicode-LFN buffer */
+	BYTE* dir			/* Pointer to the directory entry */
+)
+{
+	UINT i, s;
+	WCHAR wc, uc;
+
+
+	i = ((dir[LDIR_Ord] & 0x3F) - 1) * 13;	/* Offset in the LFN buffer */
+
+	s = 0; wc = 1;
+	do {
+		uc = LD_WORD(dir+LfnOfs[s]);		/* Pick an LFN character from the entry */
+		if (wc) {	/* Last character has not been processed */
+			if (i >= _MAX_LFN) return 0;	/* Buffer overflow? */
+			lfnbuf[i++] = wc = uc;			/* Store it */
+		} else {
+			if (uc != 0xFFFF) return 0;		/* Check filler */
+		}
+	} while (++s < 13);						/* Read all character in the entry */
+
+	if (dir[LDIR_Ord] & LLE) {				/* Put terminator if it is the last LFN part */
+		if (i >= _MAX_LFN) return 0;		/* Buffer overflow? */
+		lfnbuf[i] = 0;
+	}
+
+	return 1;
+}
+
+
+#if !_FS_READONLY
+static
+void fit_lfn (
+	const WCHAR* lfnbuf,	/* Pointer to the LFN buffer */
+	BYTE* dir,				/* Pointer to the directory entry */
+	BYTE ord,				/* LFN order (1-20) */
+	BYTE sum				/* SFN sum */
+)
+{
+	UINT i, s;
+	WCHAR wc;
+
+
+	dir[LDIR_Chksum] = sum;			/* Set check sum */
+	dir[LDIR_Attr] = AM_LFN;		/* Set attribute. LFN entry */
+	dir[LDIR_Type] = 0;
+	ST_WORD(dir+LDIR_FstClusLO, 0);
+
+	i = (ord - 1) * 13;				/* Get offset in the LFN buffer */
+	s = wc = 0;
+	do {
+		if (wc != 0xFFFF) wc = lfnbuf[i++];	/* Get an effective character */
+		ST_WORD(dir+LfnOfs[s], wc);	/* Put it */
+		if (!wc) wc = 0xFFFF;		/* Padding characters following last character */
+	} while (++s < 13);
+	if (wc == 0xFFFF || !lfnbuf[i]) ord |= LLE;	/* Bottom LFN part is the start of LFN sequence */
+	dir[LDIR_Ord] = ord;			/* Set the LFN order */
+}
+
+#endif
+#endif
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Create numbered name                                                  */
+/*-----------------------------------------------------------------------*/
+#if _USE_LFN
+static
+void gen_numname (
+	BYTE* dst,			/* Pointer to the buffer to store numbered SFN */
+	const BYTE* src,	/* Pointer to SFN */
+	const WCHAR* lfn,	/* Pointer to LFN */
+	UINT seq			/* Sequence number */
+)
+{
+	BYTE ns[8], c;
+	UINT i, j;
+
+
+	mem_cpy(dst, src, 11);
+
+	if (seq > 5) {	/* On many collisions, generate a hash number instead of sequential number */
+		WCHAR wc;
+		DWORD sr = seq;
+
+		while (*lfn) {	/* Create a CRC */
+			wc = *lfn++;
+			for (i = 0; i < 16; i++) {
+				sr = (sr << 1) + (wc & 1);
+				wc >>= 1;
+				if (sr & 0x10000) sr ^= 0x11021;
+			}
+		}
+		seq = (UINT)sr;
+	}
+
+	/* itoa (hexdecimal) */
+	i = 7;
+	do {
+		c = (seq % 16) + '0';
+		if (c > '9') c += 7;
+		ns[i--] = c;
+		seq /= 16;
+	} while (seq);
+	ns[i] = '~';
+
+	/* Append the number */
+	for (j = 0; j < i && dst[j] != ' '; j++) {
+		if (IsDBCS1(dst[j])) {
+			if (j == i - 1) break;
+			j++;
+		}
+	}
+	do {
+		dst[j++] = (i < 8) ? ns[i++] : ' ';
+	} while (j < 8);
+}
+#endif
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Calculate sum of an SFN                                               */
+/*-----------------------------------------------------------------------*/
+#if _USE_LFN
+static
+BYTE sum_sfn (
+	const BYTE* dir		/* Pointer to the SFN entry */
+)
+{
+	BYTE sum = 0;
+	UINT n = 11;
+
+	do sum = (sum >> 1) + (sum << 7) + *dir++; while (--n);
+	return sum;
+}
+#endif
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Directory handling - Find an object in the directory                  */
+/*-----------------------------------------------------------------------*/
+
+static
+FRESULT dir_find (
+	DIR* dp			/* Pointer to the directory object linked to the file name */
+)
+{
+	FRESULT res;
+	BYTE c, *dir;
+#if _USE_LFN
+	BYTE a, ord, sum;
+#endif
+
+	res = dir_sdi(dp, 0);			/* Rewind directory object */
+	if (res != FR_OK) return res;
+
+#if _USE_LFN
+	ord = sum = 0xFF; dp->lfn_idx = 0xFFFF;	/* Reset LFN sequence */
+#endif
+	do {
+		res = move_window(dp->fs, dp->sect);
+		if (res != FR_OK) break;
+		dir = dp->dir;					/* Ptr to the directory entry of current index */
+		c = dir[DIR_Name];
+		if (c == 0) { res = FR_NO_FILE; break; }	/* Reached to end of table */
+#if _USE_LFN	/* LFN configuration */
+		a = dir[DIR_Attr] & AM_MASK;
+		if (c == DDE || ((a & AM_VOL) && a != AM_LFN)) {	/* An entry without valid data */
+			ord = 0xFF; dp->lfn_idx = 0xFFFF;	/* Reset LFN sequence */
+		} else {
+			if (a == AM_LFN) {			/* An LFN entry is found */
+				if (dp->lfn) {
+					if (c & LLE) {		/* Is it start of LFN sequence? */
+						sum = dir[LDIR_Chksum];
+						c &= ~LLE; ord = c;	/* LFN start order */
+						dp->lfn_idx = dp->index;	/* Start index of LFN */
+					}
+					/* Check validity of the LFN entry and compare it with given name */
+					ord = (c == ord && sum == dir[LDIR_Chksum] && cmp_lfn(dp->lfn, dir)) ? ord - 1 : 0xFF;
+				}
+			} else {					/* An SFN entry is found */
+				if (!ord && sum == sum_sfn(dir)) break;	/* LFN matched? */
+				if (!(dp->fn[NSFLAG] & NS_LOSS) && !mem_cmp(dir, dp->fn, 11)) break;	/* SFN matched? */
+				ord = 0xFF; dp->lfn_idx = 0xFFFF;	/* Reset LFN sequence */
+			}
+		}
+#else		/* Non LFN configuration */
+		if (!(dir[DIR_Attr] & AM_VOL) && !mem_cmp(dir, dp->fn, 11)) /* Is it a valid entry? */
+			break;
+#endif
+		res = dir_next(dp, 0);		/* Next entry */
+	} while (res == FR_OK);
+
+	return res;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Read an object from the directory                                     */
+/*-----------------------------------------------------------------------*/
+#if _FS_MINIMIZE <= 1 || _USE_LABEL || _FS_RPATH >= 2
+static
+FRESULT dir_read (
+	DIR* dp,		/* Pointer to the directory object */
+	int vol			/* Filtered by 0:file/directory or 1:volume label */
+)
+{
+	FRESULT res;
+	BYTE a, c, *dir;
+#if _USE_LFN
+	BYTE ord = 0xFF, sum = 0xFF;
+#endif
+
+	res = FR_NO_FILE;
+	while (dp->sect) {
+		res = move_window(dp->fs, dp->sect);
+		if (res != FR_OK) break;
+		dir = dp->dir;					/* Ptr to the directory entry of current index */
+		c = dir[DIR_Name];
+		if (c == 0) { res = FR_NO_FILE; break; }	/* Reached to end of table */
+		a = dir[DIR_Attr] & AM_MASK;
+#if _USE_LFN	/* LFN configuration */
+		if (c == DDE || (!_FS_RPATH && c == '.') || (int)((a & ~AM_ARC) == AM_VOL) != vol) {	/* An entry without valid data */
+			ord = 0xFF;
+		} else {
+			if (a == AM_LFN) {			/* An LFN entry is found */
+				if (c & LLE) {			/* Is it start of LFN sequence? */
+					sum = dir[LDIR_Chksum];
+					c &= ~LLE; ord = c;
+					dp->lfn_idx = dp->index;
+				}
+				/* Check LFN validity and capture it */
+				ord = (c == ord && sum == dir[LDIR_Chksum] && pick_lfn(dp->lfn, dir)) ? ord - 1 : 0xFF;
+			} else {					/* An SFN entry is found */
+				if (ord || sum != sum_sfn(dir))	/* Is there a valid LFN? */
+					dp->lfn_idx = 0xFFFF;		/* It has no LFN. */
+				break;
+			}
+		}
+#else		/* Non LFN configuration */
+		if (c != DDE && (_FS_RPATH || c != '.') && a != AM_LFN && (int)((a & ~AM_ARC) == AM_VOL) == vol)	/* Is it a valid entry? */
+			break;
+#endif
+		res = dir_next(dp, 0);				/* Next entry */
+		if (res != FR_OK) break;
+	}
+
+	if (res != FR_OK) dp->sect = 0;
+
+	return res;
+}
+#endif	/* _FS_MINIMIZE <= 1 || _USE_LABEL || _FS_RPATH >= 2 */
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Register an object to the directory                                   */
+/*-----------------------------------------------------------------------*/
+#if !_FS_READONLY
+static
+FRESULT dir_register (	/* FR_OK:Successful, FR_DENIED:No free entry or too many SFN collision, FR_DISK_ERR:Disk error */
+	DIR* dp				/* Target directory with object name to be created */
+)
+{
+	FRESULT res;
+#if _USE_LFN	/* LFN configuration */
+	UINT n, nent;
+	BYTE sn[12], *fn, sum;
+	WCHAR *lfn;
+
+
+	fn = dp->fn; lfn = dp->lfn;
+	mem_cpy(sn, fn, 12);
+
+	if (_FS_RPATH && (sn[NSFLAG] & NS_DOT))		/* Cannot create dot entry */
+		return FR_INVALID_NAME;
+
+	if (sn[NSFLAG] & NS_LOSS) {			/* When LFN is out of 8.3 format, generate a numbered name */
+		fn[NSFLAG] = 0; dp->lfn = 0;			/* Find only SFN */
+		for (n = 1; n < 100; n++) {
+			gen_numname(fn, sn, lfn, n);	/* Generate a numbered name */
+			res = dir_find(dp);				/* Check if the name collides with existing SFN */
+			if (res != FR_OK) break;
+		}
+		if (n == 100) return FR_DENIED;		/* Abort if too many collisions */
+		if (res != FR_NO_FILE) return res;	/* Abort if the result is other than 'not collided' */
+		fn[NSFLAG] = sn[NSFLAG]; dp->lfn = lfn;
+	}
+
+	if (sn[NSFLAG] & NS_LFN) {			/* When LFN is to be created, allocate entries for an SFN + LFNs. */
+		for (n = 0; lfn[n]; n++) ;
+		nent = (n + 25) / 13;
+	} else {						/* Otherwise allocate an entry for an SFN  */
+		nent = 1;
+	}
+	res = dir_alloc(dp, nent);		/* Allocate entries */
+
+	if (res == FR_OK && --nent) {	/* Set LFN entry if needed */
+		res = dir_sdi(dp, dp->index - nent);
+		if (res == FR_OK) {
+			sum = sum_sfn(dp->fn);	/* Sum value of the SFN tied to the LFN */
+			do {					/* Store LFN entries in bottom first */
+				res = move_window(dp->fs, dp->sect);
+				if (res != FR_OK) break;
+				fit_lfn(dp->lfn, dp->dir, (BYTE)nent, sum);
+				dp->fs->wflag = 1;
+				res = dir_next(dp, 0);	/* Next entry */
+			} while (res == FR_OK && --nent);
+		}
+	}
+#else	/* Non LFN configuration */
+	res = dir_alloc(dp, 1);		/* Allocate an entry for SFN */
+#endif
+
+	if (res == FR_OK) {				/* Set SFN entry */
+		res = move_window(dp->fs, dp->sect);
+		if (res == FR_OK) {
+			mem_set(dp->dir, 0, SZ_DIR);	/* Clean the entry */
+			mem_cpy(dp->dir, dp->fn, 11);	/* Put SFN */
+#if _USE_LFN
+			dp->dir[DIR_NTres] = dp->fn[NSFLAG] & (NS_BODY | NS_EXT);	/* Put NT flag */
+#endif
+			dp->fs->wflag = 1;
+		}
+	}
+
+	return res;
+}
+#endif /* !_FS_READONLY */
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Remove an object from the directory                                   */
+/*-----------------------------------------------------------------------*/
+#if !_FS_READONLY && !_FS_MINIMIZE
+static
+FRESULT dir_remove (	/* FR_OK: Successful, FR_DISK_ERR: A disk error */
+	DIR* dp				/* Directory object pointing the entry to be removed */
+)
+{
+	FRESULT res;
+#if _USE_LFN	/* LFN configuration */
+	UINT i;
+
+	i = dp->index;	/* SFN index */
+	res = dir_sdi(dp, (dp->lfn_idx == 0xFFFF) ? i : dp->lfn_idx);	/* Goto the SFN or top of the LFN entries */
+	if (res == FR_OK) {
+		do {
+			res = move_window(dp->fs, dp->sect);
+			if (res != FR_OK) break;
+			mem_set(dp->dir, 0, SZ_DIR);	/* Clear and mark the entry "deleted" */
+			*dp->dir = DDE;
+			dp->fs->wflag = 1;
+			if (dp->index >= i) break;	/* When reached SFN, all entries of the object has been deleted. */
+			res = dir_next(dp, 0);		/* Next entry */
+		} while (res == FR_OK);
+		if (res == FR_NO_FILE) res = FR_INT_ERR;
+	}
+
+#else			/* Non LFN configuration */
+	res = dir_sdi(dp, dp->index);
+	if (res == FR_OK) {
+		res = move_window(dp->fs, dp->sect);
+		if (res == FR_OK) {
+			mem_set(dp->dir, 0, SZ_DIR);	/* Clear and mark the entry "deleted" */
+			*dp->dir = DDE;
+			dp->fs->wflag = 1;
+		}
+	}
+#endif
+
+	return res;
+}
+#endif /* !_FS_READONLY */
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Get file information from directory entry                             */
+/*-----------------------------------------------------------------------*/
+#if _FS_MINIMIZE <= 1 || _FS_RPATH >= 2
+static
+void get_fileinfo (		/* No return code */
+	DIR* dp,			/* Pointer to the directory object */
+	FILINFO* fno	 	/* Pointer to the file information to be filled */
+)
+{
+	UINT i;
+	TCHAR *p, c;
+
+
+	p = fno->fname;
+	if (dp->sect) {		/* Get SFN */
+		BYTE *dir = dp->dir;
+
+		i = 0;
+		while (i < 11) {		/* Copy name body and extension */
+			c = (TCHAR)dir[i++];
+			if (c == ' ') continue;			/* Skip padding spaces */
+			if (c == NDDE) c = (TCHAR)DDE;	/* Restore replaced DDE character */
+			if (i == 9) *p++ = '.';			/* Insert a . if extension is exist */
+#if _USE_LFN
+			if (IsUpper(c) && (dir[DIR_NTres] & (i >= 9 ? NS_EXT : NS_BODY)))
+				c += 0x20;			/* To lower */
+#if _LFN_UNICODE
+			if (IsDBCS1(c) && i != 8 && i != 11 && IsDBCS2(dir[i]))
+				c = c << 8 | dir[i++];
+			c = ff_convert(c, 1);	/* OEM -> Unicode */
+			if (!c) c = '?';
+#endif
+#endif
+			*p++ = c;
+		}
+		fno->fattrib = dir[DIR_Attr];				/* Attribute */
+		fno->fsize = LD_DWORD(dir+DIR_FileSize);	/* Size */
+		fno->fdate = LD_WORD(dir+DIR_WrtDate);		/* Date */
+		fno->ftime = LD_WORD(dir+DIR_WrtTime);		/* Time */
+	}
+	*p = 0;		/* Terminate SFN string by a \0 */
+
+#if _USE_LFN
+	if (fno->lfname) {
+		WCHAR w, *lfn;
+
+		i = 0; p = fno->lfname;
+		if (dp->sect && fno->lfsize && dp->lfn_idx != 0xFFFF) {	/* Get LFN if available */
+			lfn = dp->lfn;
+			while ((w = *lfn++) != 0) {		/* Get an LFN character */
+#if !_LFN_UNICODE
+				w = ff_convert(w, 0);		/* Unicode -> OEM */
+				if (!w) { i = 0; break; }	/* No LFN if it could not be converted */
+				if (_DF1S && w >= 0x100)	/* Put 1st byte if it is a DBC (always false on SBCS cfg) */
+					p[i++] = (TCHAR)(w >> 8);
+#endif
+				if (i >= fno->lfsize - 1) { i = 0; break; }	/* No LFN if buffer overflow */
+				p[i++] = (TCHAR)w;
+			}
+		}
+		p[i] = 0;	/* Terminate LFN string by a \0 */
+	}
+#endif
+}
+#endif /* _FS_MINIMIZE <= 1 || _FS_RPATH >= 2*/
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Pick a segment and create the object name in directory form           */
+/*-----------------------------------------------------------------------*/
+
+static
+FRESULT create_name (
+	DIR* dp,			/* Pointer to the directory object */
+	const TCHAR** path	/* Pointer to pointer to the segment in the path string */
+)
+{
+#if _USE_LFN	/* LFN configuration */
+	BYTE b, cf;
+	WCHAR w, *lfn;
+	UINT i, ni, si, di;
+	const TCHAR *p;
+
+	/* Create LFN in Unicode */
+	for (p = *path; *p == '/' || *p == '\\'; p++) ;	/* Strip duplicated separator */
+	lfn = dp->lfn;
+	si = di = 0;
+	for (;;) {
+		w = p[si++];					/* Get a character */
+		if (w < ' ' || w == '/' || w == '\\') break;	/* Break on end of segment */
+		if (di >= _MAX_LFN)				/* Reject too long name */
+			return FR_INVALID_NAME;
+#if !_LFN_UNICODE
+		w &= 0xFF;
+		if (IsDBCS1(w)) {				/* Check if it is a DBC 1st byte (always false on SBCS cfg) */
+			b = (BYTE)p[si++];			/* Get 2nd byte */
+			if (!IsDBCS2(b))
+				return FR_INVALID_NAME;	/* Reject invalid sequence */
+			w = (w << 8) + b;			/* Create a DBC */
+		}
+		w = ff_convert(w, 1);			/* Convert ANSI/OEM to Unicode */
+		if (!w) return FR_INVALID_NAME;	/* Reject invalid code */
+#endif
+		if (w < 0x80 && chk_chr("\"*:<>\?|\x7F", w)) /* Reject illegal characters for LFN */
+			return FR_INVALID_NAME;
+		lfn[di++] = w;					/* Store the Unicode character */
+	}
+	*path = &p[si];						/* Return pointer to the next segment */
+	cf = (w < ' ') ? NS_LAST : 0;		/* Set last segment flag if end of path */
+#if _FS_RPATH
+	if ((di == 1 && lfn[di-1] == '.') || /* Is this a dot entry? */
+		(di == 2 && lfn[di-1] == '.' && lfn[di-2] == '.')) {
+		lfn[di] = 0;
+		for (i = 0; i < 11; i++)
+			dp->fn[i] = (i < di) ? '.' : ' ';
+		dp->fn[i] = cf | NS_DOT;		/* This is a dot entry */
+		return FR_OK;
+	}
+#endif
+	while (di) {						/* Strip trailing spaces and dots */
+		w = lfn[di-1];
+		if (w != ' ' && w != '.') break;
+		di--;
+	}
+	if (!di) return FR_INVALID_NAME;	/* Reject nul string */
+
+	lfn[di] = 0;						/* LFN is created */
+
+	/* Create SFN in directory form */
+	mem_set(dp->fn, ' ', 11);
+	for (si = 0; lfn[si] == ' ' || lfn[si] == '.'; si++) ;	/* Strip leading spaces and dots */
+	if (si) cf |= NS_LOSS | NS_LFN;
+	while (di && lfn[di - 1] != '.') di--;	/* Find extension (di<=si: no extension) */
+
+	b = i = 0; ni = 8;
+	for (;;) {
+		w = lfn[si++];					/* Get an LFN character */
+		if (!w) break;					/* Break on end of the LFN */
+		if (w == ' ' || (w == '.' && si != di)) {	/* Remove spaces and dots */
+			cf |= NS_LOSS | NS_LFN; continue;
+		}
+
+		if (i >= ni || si == di) {		/* Extension or end of SFN */
+			if (ni == 11) {				/* Long extension */
+				cf |= NS_LOSS | NS_LFN; break;
+			}
+			if (si != di) cf |= NS_LOSS | NS_LFN;	/* Out of 8.3 format */
+			if (si > di) break;			/* No extension */
+			si = di; i = 8; ni = 11;	/* Enter extension section */
+			b <<= 2; continue;
+		}
+
+		if (w >= 0x80) {				/* Non ASCII character */
+#ifdef _EXCVT
+			w = ff_convert(w, 0);		/* Unicode -> OEM code */
+			if (w) w = ExCvt[w - 0x80];	/* Convert extended character to upper (SBCS) */
+#else
+			w = ff_convert(ff_wtoupper(w), 0);	/* Upper converted Unicode -> OEM code */
+#endif
+			cf |= NS_LFN;				/* Force create LFN entry */
+		}
+
+		if (_DF1S && w >= 0x100) {		/* Double byte character (always false on SBCS cfg) */
+			if (i >= ni - 1) {
+				cf |= NS_LOSS | NS_LFN; i = ni; continue;
+			}
+			dp->fn[i++] = (BYTE)(w >> 8);
+		} else {						/* Single byte character */
+			if (!w || chk_chr("+,;=[]", w)) {	/* Replace illegal characters for SFN */
+				w = '_'; cf |= NS_LOSS | NS_LFN;/* Lossy conversion */
+			} else {
+				if (IsUpper(w)) {		/* ASCII large capital */
+					b |= 2;
+				} else {
+					if (IsLower(w)) {	/* ASCII small capital */
+						b |= 1; w -= 0x20;
+					}
+				}
+			}
+		}
+		dp->fn[i++] = (BYTE)w;
+	}
+
+	if (dp->fn[0] == DDE) dp->fn[0] = NDDE;	/* If the first character collides with deleted mark, replace it with 0x05 */
+
+	if (ni == 8) b <<= 2;
+	if ((b & 0x0C) == 0x0C || (b & 0x03) == 0x03)	/* Create LFN entry when there are composite capitals */
+		cf |= NS_LFN;
+	if (!(cf & NS_LFN)) {						/* When LFN is in 8.3 format without extended character, NT flags are created */
+		if ((b & 0x03) == 0x01) cf |= NS_EXT;	/* NT flag (Extension has only small capital) */
+		if ((b & 0x0C) == 0x04) cf |= NS_BODY;	/* NT flag (Filename has only small capital) */
+	}
+
+	dp->fn[NSFLAG] = cf;	/* SFN is created */
+
+	return FR_OK;
+
+
+#else	/* Non-LFN configuration */
+	BYTE b, c, d, *sfn;
+	UINT ni, si, i;
+	const char *p;
+
+	/* Create file name in directory form */
+	for (p = *path; *p == '/' || *p == '\\'; p++) ;	/* Strip duplicated separator */
+	sfn = dp->fn;
+	mem_set(sfn, ' ', 11);
+	si = i = b = 0; ni = 8;
+#if _FS_RPATH
+	if (p[si] == '.') { /* Is this a dot entry? */
+		for (;;) {
+			c = (BYTE)p[si++];
+			if (c != '.' || si >= 3) break;
+			sfn[i++] = c;
+		}
+		if (c != '/' && c != '\\' && c > ' ') return FR_INVALID_NAME;
+		*path = &p[si];									/* Return pointer to the next segment */
+		sfn[NSFLAG] = (c <= ' ') ? NS_LAST | NS_DOT : NS_DOT;	/* Set last segment flag if end of path */
+		return FR_OK;
+	}
+#endif
+	for (;;) {
+		c = (BYTE)p[si++];
+		if (c <= ' ' || c == '/' || c == '\\') break;	/* Break on end of segment */
+		if (c == '.' || i >= ni) {
+			if (ni != 8 || c != '.') return FR_INVALID_NAME;
+			i = 8; ni = 11;
+			b <<= 2; continue;
+		}
+		if (c >= 0x80) {				/* Extended character? */
+			b |= 3;						/* Eliminate NT flag */
+#ifdef _EXCVT
+			c = ExCvt[c - 0x80];		/* To upper extended characters (SBCS cfg) */
+#else
+#if !_DF1S
+			return FR_INVALID_NAME;		/* Reject extended characters (ASCII cfg) */
+#endif
+#endif
+		}
+		if (IsDBCS1(c)) {				/* Check if it is a DBC 1st byte (always false on SBCS cfg) */
+			d = (BYTE)p[si++];			/* Get 2nd byte */
+			if (!IsDBCS2(d) || i >= ni - 1)	/* Reject invalid DBC */
+				return FR_INVALID_NAME;
+			sfn[i++] = c;
+			sfn[i++] = d;
+		} else {						/* Single byte code */
+			if (chk_chr("\"*+,:;<=>\?[]|\x7F", c))	/* Reject illegal chrs for SFN */
+				return FR_INVALID_NAME;
+			if (IsUpper(c)) {			/* ASCII large capital? */
+				b |= 2;
+			} else {
+				if (IsLower(c)) {		/* ASCII small capital? */
+					b |= 1; c -= 0x20;
+				}
+			}
+			sfn[i++] = c;
+		}
+	}
+	*path = &p[si];						/* Return pointer to the next segment */
+	c = (c <= ' ') ? NS_LAST : 0;		/* Set last segment flag if end of path */
+
+	if (!i) return FR_INVALID_NAME;		/* Reject nul string */
+	if (sfn[0] == DDE) sfn[0] = NDDE;	/* When first character collides with DDE, replace it with 0x05 */
+
+	if (ni == 8) b <<= 2;
+	if ((b & 0x03) == 0x01) c |= NS_EXT;	/* NT flag (Name extension has only small capital) */
+	if ((b & 0x0C) == 0x04) c |= NS_BODY;	/* NT flag (Name body has only small capital) */
+
+	sfn[NSFLAG] = c;		/* Store NT flag, File name is created */
+
+	return FR_OK;
+#endif
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Follow a file path                                                    */
+/*-----------------------------------------------------------------------*/
+
+static
+FRESULT follow_path (	/* FR_OK(0): successful, !=0: error code */
+	DIR* dp,			/* Directory object to return last directory and found object */
+	const TCHAR* path	/* Full-path string to find a file or directory */
+)
+{
+	FRESULT res;
+	BYTE *dir, ns;
+
+
+#if _FS_RPATH
+	if (*path == '/' || *path == '\\') {	/* There is a heading separator */
+		path++;	dp->sclust = 0;				/* Strip it and start from the root directory */
+	} else {								/* No heading separator */
+		dp->sclust = dp->fs->cdir;			/* Start from the current directory */
+	}
+#else
+	if (*path == '/' || *path == '\\')		/* Strip heading separator if exist */
+		path++;
+	dp->sclust = 0;							/* Always start from the root directory */
+#endif
+
+	if ((UINT)*path < ' ') {				/* Null path name is the origin directory itself */
+		res = dir_sdi(dp, 0);
+		dp->dir = 0;
+	} else {								/* Follow path */
+		for (;;) {
+			res = create_name(dp, &path);	/* Get a segment name of the path */
+			if (res != FR_OK) break;
+			res = dir_find(dp);				/* Find an object with the sagment name */
+			ns = dp->fn[NSFLAG];
+			if (res != FR_OK) {				/* Failed to find the object */
+				if (res == FR_NO_FILE) {	/* Object is not found */
+					if (_FS_RPATH && (ns & NS_DOT)) {	/* If dot entry is not exist, */
+						dp->sclust = 0; dp->dir = 0;	/* it is the root directory and stay there */
+						if (!(ns & NS_LAST)) continue;	/* Continue to follow if not last segment */
+						res = FR_OK;					/* Ended at the root directroy. Function completed. */
+					} else {							/* Could not find the object */
+						if (!(ns & NS_LAST)) res = FR_NO_PATH;	/* Adjust error code if not last segment */
+					}
+				}
+				break;
+			}
+			if (ns & NS_LAST) break;			/* Last segment matched. Function completed. */
+			dir = dp->dir;						/* Follow the sub-directory */
+			if (!(dir[DIR_Attr] & AM_DIR)) {	/* It is not a sub-directory and cannot follow */
+				res = FR_NO_PATH; break;
+			}
+			dp->sclust = ld_clust(dp->fs, dir);
+		}
+	}
+
+	return res;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Get logical drive number from path name                               */
+/*-----------------------------------------------------------------------*/
+
+static
+int get_ldnumber (		/* Returns logical drive number (-1:invalid drive) */
+	const TCHAR** path	/* Pointer to pointer to the path name */
+)
+{
+	const TCHAR *tp, *tt;
+	UINT i;
+	int vol = -1;
+
+
+	if (*path) {	/* If the pointer is not a null */
+		for (tt = *path; (UINT)*tt >= (_USE_LFN ? ' ' : '!') && *tt != ':'; tt++) ;	/* Find ':' in the path */
+		if (*tt == ':') {	/* If a ':' is exist in the path name */
+			tp = *path;
+			i = *tp++ - '0'; 
+			if (i < 10 && tp == tt) {	/* Is there a numeric drive id? */
+				if (i < _VOLUMES) {	/* If a drive id is found, get the value and strip it */
+					vol = (int)i;
+					*path = ++tt;
+				}
+			} else {	/* No numeric drive number */
+#if _STR_VOLUME_ID		/* Find string drive id */
+				static const char* const str[] = {_VOLUME_STRS};
+				const char *sp;
+				char c;
+				TCHAR tc;
+
+				i = 0; tt++;
+				do {
+					sp = str[i]; tp = *path;
+					do {	/* Compare a string drive id with path name */
+						c = *sp++; tc = *tp++;
+						if (IsLower(tc)) tc -= 0x20;
+					} while (c && (TCHAR)c == tc);
+				} while ((c || tp != tt) && ++i < _VOLUMES);	/* Repeat for each id until pattern match */
+				if (i < _VOLUMES) {	/* If a drive id is found, get the value and strip it */
+					vol = (int)i;
+					*path = tt;
+				}
+#endif
+			}
+			return vol;
+		}
+#if _FS_RPATH && _VOLUMES >= 2
+		vol = CurrVol;	/* Current drive */
+#else
+		vol = 0;		/* Drive 0 */
+#endif
+	}
+	return vol;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Load a sector and check if it is an FAT boot sector                   */
+/*-----------------------------------------------------------------------*/
+
+static
+BYTE check_fs (	/* 0:FAT boor sector, 1:Valid boor sector but not FAT, 2:Not a boot sector, 3:Disk error */
+	FATFS* fs,	/* File system object */
+	DWORD sect	/* Sector# (lba) to check if it is an FAT boot record or not */
+)
+{
+	fs->wflag = 0; fs->winsect = 0xFFFFFFFF;	/* Invaidate window */
+	if (move_window(fs, sect) != FR_OK)			/* Load boot record */
+		return 3;
+
+	if (LD_WORD(&fs->win[BS_55AA]) != 0xAA55)	/* Check boot record signature (always placed at offset 510 even if the sector size is >512) */
+		return 2;
+
+	if ((LD_DWORD(&fs->win[BS_FilSysType]) & 0xFFFFFF) == 0x544146)		/* Check "FAT" string */
+		return 0;
+	if ((LD_DWORD(&fs->win[BS_FilSysType32]) & 0xFFFFFF) == 0x544146)	/* Check "FAT" string */
+		return 0;
+
+	return 1;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Find logical drive and check if the volume is mounted                 */
+/*-----------------------------------------------------------------------*/
+
+static
+FRESULT find_volume (	/* FR_OK(0): successful, !=0: any error occurred */
+	FATFS** rfs,		/* Pointer to pointer to the found file system object */
+	const TCHAR** path,	/* Pointer to pointer to the path name (drive number) */
+	BYTE wmode			/* !=0: Check write protection for write access */
+)
+{
+	BYTE fmt;
+	int vol;
+	DSTATUS stat;
+	DWORD bsect, fasize, tsect, sysect, nclst, szbfat;
+	WORD nrsv;
+	FATFS *fs;
+
+
+	/* Get logical drive number from the path name */
+	*rfs = 0;
+	vol = get_ldnumber(path);
+	if (vol < 0) return FR_INVALID_DRIVE;
+
+	/* Check if the file system object is valid or not */
+	fs = FatFs[vol];					/* Get pointer to the file system object */
+	if (!fs) return FR_NOT_ENABLED;		/* Is the file system object available? */
+
+	ENTER_FF(fs);						/* Lock the volume */
+	*rfs = fs;							/* Return pointer to the file system object */
+
+	if (fs->fs_type) {					/* If the volume has been mounted */
+		stat = disk_status(fs->drv);
+		if (!(stat & STA_NOINIT)) {		/* and the physical drive is kept initialized */
+			if (!_FS_READONLY && wmode && (stat & STA_PROTECT))	/* Check write protection if needed */
+				return FR_WRITE_PROTECTED;
+			return FR_OK;				/* The file system object is valid */
+		}
+	}
+
+	/* The file system object is not valid. */
+	/* Following code attempts to mount the volume. (analyze BPB and initialize the fs object) */
+
+	fs->fs_type = 0;					/* Clear the file system object */
+	fs->drv = LD2PD(vol);				/* Bind the logical drive and a physical drive */
+	stat = disk_initialize(fs->drv);	/* Initialize the physical drive */
+	if (stat & STA_NOINIT)				/* Check if the initialization succeeded */
+		return FR_NOT_READY;			/* Failed to initialize due to no medium or hard error */
+	if (!_FS_READONLY && wmode && (stat & STA_PROTECT))	/* Check disk write protection if needed */
+		return FR_WRITE_PROTECTED;
+#if _MAX_SS != _MIN_SS						/* Get sector size (multiple sector size cfg only) */
+	if (disk_ioctl(fs->drv, GET_SECTOR_SIZE, &SS(fs)) != RES_OK
+		|| SS(fs) < _MIN_SS || SS(fs) > _MAX_SS) return FR_DISK_ERR;
+#endif
+	/* Find an FAT partition on the drive. Supports only generic partitioning, FDISK and SFD. */
+	bsect = 0;
+	fmt = check_fs(fs, bsect);					/* Load sector 0 and check if it is an FAT boot sector as SFD */
+	if (fmt == 1 || (!fmt && (LD2PT(vol)))) {	/* Not an FAT boot sector or forced partition number */
+		UINT i;
+		DWORD br[4];
+
+		for (i = 0; i < 4; i++) {			/* Get partition offset */
+			BYTE *pt = fs->win+MBR_Table + i * SZ_PTE;
+			br[i] = pt[4] ? LD_DWORD(&pt[8]) : 0;
+		}
+		i = LD2PT(vol);						/* Partition number: 0:auto, 1-4:forced */
+		if (i) i--;
+		do {								/* Find an FAT volume */
+			bsect = br[i];
+			fmt = bsect ? check_fs(fs, bsect) : 2;	/* Check the partition */
+		} while (!LD2PT(vol) && fmt && ++i < 4);
+	}
+	if (fmt == 3) return FR_DISK_ERR;		/* An error occured in the disk I/O layer */
+	if (fmt) return FR_NO_FILESYSTEM;		/* No FAT volume is found */
+
+	/* An FAT volume is found. Following code initializes the file system object */
+
+	if (LD_WORD(fs->win+BPB_BytsPerSec) != SS(fs))		/* (BPB_BytsPerSec must be equal to the physical sector size) */
+		return FR_NO_FILESYSTEM;
+
+	fasize = LD_WORD(fs->win+BPB_FATSz16);				/* Number of sectors per FAT */
+	if (!fasize) fasize = LD_DWORD(fs->win+BPB_FATSz32);
+	fs->fsize = fasize;
+
+	fs->n_fats = fs->win[BPB_NumFATs];					/* Number of FAT copies */
+	if (fs->n_fats != 1 && fs->n_fats != 2)				/* (Must be 1 or 2) */
+		return FR_NO_FILESYSTEM;
+	fasize *= fs->n_fats;								/* Number of sectors for FAT area */
+
+	fs->csize = fs->win[BPB_SecPerClus];				/* Number of sectors per cluster */
+	if (!fs->csize || (fs->csize & (fs->csize - 1)))	/* (Must be power of 2) */
+		return FR_NO_FILESYSTEM;
+
+	fs->n_rootdir = LD_WORD(fs->win+BPB_RootEntCnt);	/* Number of root directory entries */
+	if (fs->n_rootdir % (SS(fs) / SZ_DIR))				/* (Must be sector aligned) */
+		return FR_NO_FILESYSTEM;
+
+	tsect = LD_WORD(fs->win+BPB_TotSec16);				/* Number of sectors on the volume */
+	if (!tsect) tsect = LD_DWORD(fs->win+BPB_TotSec32);
+
+	nrsv = LD_WORD(fs->win+BPB_RsvdSecCnt);				/* Number of reserved sectors */
+	if (!nrsv) return FR_NO_FILESYSTEM;					/* (Must not be 0) */
+
+	/* Determine the FAT sub type */
+	sysect = nrsv + fasize + fs->n_rootdir / (SS(fs) / SZ_DIR);	/* RSV+FAT+DIR */
+	if (tsect < sysect) return FR_NO_FILESYSTEM;		/* (Invalid volume size) */
+	nclst = (tsect - sysect) / fs->csize;				/* Number of clusters */
+	if (!nclst) return FR_NO_FILESYSTEM;				/* (Invalid volume size) */
+	fmt = FS_FAT12;
+	if (nclst >= MIN_FAT16) fmt = FS_FAT16;
+	if (nclst >= MIN_FAT32) fmt = FS_FAT32;
+
+	/* Boundaries and Limits */
+	fs->n_fatent = nclst + 2;							/* Number of FAT entries */
+	fs->volbase = bsect;								/* Volume start sector */
+	fs->fatbase = bsect + nrsv; 						/* FAT start sector */
+	fs->database = bsect + sysect;						/* Data start sector */
+	if (fmt == FS_FAT32) {
+		if (fs->n_rootdir) return FR_NO_FILESYSTEM;		/* (BPB_RootEntCnt must be 0) */
+		fs->dirbase = LD_DWORD(fs->win+BPB_RootClus);	/* Root directory start cluster */
+		szbfat = fs->n_fatent * 4;						/* (Needed FAT size) */
+	} else {
+		if (!fs->n_rootdir)	return FR_NO_FILESYSTEM;	/* (BPB_RootEntCnt must not be 0) */
+		fs->dirbase = fs->fatbase + fasize;				/* Root directory start sector */
+		szbfat = (fmt == FS_FAT16) ?					/* (Needed FAT size) */
+			fs->n_fatent * 2 : fs->n_fatent * 3 / 2 + (fs->n_fatent & 1);
+	}
+	if (fs->fsize < (szbfat + (SS(fs) - 1)) / SS(fs))	/* (BPB_FATSz must not be less than the size needed) */
+		return FR_NO_FILESYSTEM;
+
+#if !_FS_READONLY
+	/* Initialize cluster allocation information */
+	fs->last_clust = fs->free_clust = 0xFFFFFFFF;
+
+	/* Get fsinfo if available */
+	fs->fsi_flag = 0x80;
+#if (_FS_NOFSINFO & 3) != 3
+	if (fmt == FS_FAT32				/* Enable FSINFO only if FAT32 and BPB_FSInfo is 1 */
+		&& LD_WORD(fs->win+BPB_FSInfo) == 1
+		&& move_window(fs, bsect + 1) == FR_OK)
+	{
+		fs->fsi_flag = 0;
+		if (LD_WORD(fs->win+BS_55AA) == 0xAA55	/* Load FSINFO data if available */
+			&& LD_DWORD(fs->win+FSI_LeadSig) == 0x41615252
+			&& LD_DWORD(fs->win+FSI_StrucSig) == 0x61417272)
+		{
+#if (_FS_NOFSINFO & 1) == 0
+			fs->free_clust = LD_DWORD(fs->win+FSI_Free_Count);
+#endif
+#if (_FS_NOFSINFO & 2) == 0
+			fs->last_clust = LD_DWORD(fs->win+FSI_Nxt_Free);
+#endif
+		}
+	}
+#endif
+#endif
+	fs->fs_type = fmt;	/* FAT sub-type */
+	fs->id = ++Fsid;	/* File system mount ID */
+#if _FS_RPATH
+	fs->cdir = 0;		/* Set current directory to root */
+#endif
+#if _FS_LOCK			/* Clear file lock semaphores */
+	clear_lock(fs);
+#endif
+
+	return FR_OK;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Check if the file/directory object is valid or not                    */
+/*-----------------------------------------------------------------------*/
+
+static
+FRESULT validate (	/* FR_OK(0): The object is valid, !=0: Invalid */
+	void* obj		/* Pointer to the object FIL/DIR to check validity */
+)
+{
+	FIL *fil = (FIL*)obj;	/* Assuming offset of .fs and .id in the FIL/DIR structure is identical */
+
+
+	if (!fil || !fil->fs || !fil->fs->fs_type || fil->fs->id != fil->id)
+		return FR_INVALID_OBJECT;
+
+	ENTER_FF(fil->fs);		/* Lock file system */
+
+	if (disk_status(fil->fs->drv) & STA_NOINIT)
+		return FR_NOT_READY;
+
+	return FR_OK;
+}
+
+
+
+
+/*--------------------------------------------------------------------------
+
+   Public Functions
+
+--------------------------------------------------------------------------*/
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Mount/Unmount a Logical Drive                                         */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_mount (
+	FATFS* fs,			/* Pointer to the file system object (NULL:unmount)*/
+	const TCHAR* path,	/* Logical drive number to be mounted/unmounted */
+	BYTE opt			/* 0:Do not mount (delayed mount), 1:Mount immediately */
+)
+{
+	FATFS *cfs;
+	int vol;
+	FRESULT res;
+	const TCHAR *rp = path;
+
+
+	vol = get_ldnumber(&rp);
+	if (vol < 0) return FR_INVALID_DRIVE;
+	cfs = FatFs[vol];					/* Pointer to fs object */
+
+	if (cfs) {
+#if _FS_LOCK
+		clear_lock(cfs);
+#endif
+#if _FS_REENTRANT						/* Discard sync object of the current volume */
+		if (!ff_del_syncobj(cfs->sobj)) return FR_INT_ERR;
+#endif
+		cfs->fs_type = 0;				/* Clear old fs object */
+	}
+
+	if (fs) {
+		fs->fs_type = 0;				/* Clear new fs object */
+#if _FS_REENTRANT						/* Create sync object for the new volume */
+		if (!ff_cre_syncobj((BYTE)vol, &fs->sobj)) return FR_INT_ERR;
+#endif
+	}
+	FatFs[vol] = fs;					/* Register new fs object */
+
+	if (!fs || opt != 1) return FR_OK;	/* Do not mount now, it will be mounted later */
+
+	res = find_volume(&fs, &path, 0);	/* Force mounted the volume */
+	LEAVE_FF(fs, res);
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Open or Create a File                                                 */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_open (
+	FIL* fp,			/* Pointer to the blank file object */
+	const TCHAR* path,	/* Pointer to the file name */
+	BYTE mode			/* Access mode and file open mode flags */
+)
+{
+	FRESULT res;
+	DIR dj;
+	BYTE *dir;
+	DEF_NAMEBUF;
+
+
+	if (!fp) return FR_INVALID_OBJECT;
+	fp->fs = 0;			/* Clear file object */
+
+	/* Get logical drive number */
+#if !_FS_READONLY
+	mode &= FA_READ | FA_WRITE | FA_CREATE_ALWAYS | FA_OPEN_ALWAYS | FA_CREATE_NEW;
+	res = find_volume(&dj.fs, &path, (BYTE)(mode & ~FA_READ));
+#else
+	mode &= FA_READ;
+	res = find_volume(&dj.fs, &path, 0);
+#endif
+	if (res == FR_OK) {
+		INIT_BUF(dj);
+		res = follow_path(&dj, path);	/* Follow the file path */
+		dir = dj.dir;
+#if !_FS_READONLY	/* R/W configuration */
+		if (res == FR_OK) {
+			if (!dir)	/* Default directory itself */
+				res = FR_INVALID_NAME;
+#if _FS_LOCK
+			else
+				res = chk_lock(&dj, (mode & ~FA_READ) ? 1 : 0);
+#endif
+		}
+		/* Create or Open a file */
+		if (mode & (FA_CREATE_ALWAYS | FA_OPEN_ALWAYS | FA_CREATE_NEW)) {
+			DWORD dw, cl;
+
+			if (res != FR_OK) {					/* No file, create new */
+				if (res == FR_NO_FILE)			/* There is no file to open, create a new entry */
+#if _FS_LOCK
+					res = enq_lock() ? dir_register(&dj) : FR_TOO_MANY_OPEN_FILES;
+#else
+					res = dir_register(&dj);
+#endif
+				mode |= FA_CREATE_ALWAYS;		/* File is created */
+				dir = dj.dir;					/* New entry */
+			}
+			else {								/* Any object is already existing */
+				if (dir[DIR_Attr] & (AM_RDO | AM_DIR)) {	/* Cannot overwrite it (R/O or DIR) */
+					res = FR_DENIED;
+				} else {
+					if (mode & FA_CREATE_NEW)	/* Cannot create as new file */
+						res = FR_EXIST;
+				}
+			}
+			if (res == FR_OK && (mode & FA_CREATE_ALWAYS)) {	/* Truncate it if overwrite mode */
+				dw = GET_FATTIME();				/* Created time */
+				ST_DWORD(dir+DIR_CrtTime, dw);
+				dir[DIR_Attr] = 0;				/* Reset attribute */
+				ST_DWORD(dir+DIR_FileSize, 0);	/* size = 0 */
+				cl = ld_clust(dj.fs, dir);		/* Get start cluster */
+				st_clust(dir, 0);				/* cluster = 0 */
+				dj.fs->wflag = 1;
+				if (cl) {						/* Remove the cluster chain if exist */
+					dw = dj.fs->winsect;
+					res = remove_chain(dj.fs, cl);
+					if (res == FR_OK) {
+						dj.fs->last_clust = cl - 1;	/* Reuse the cluster hole */
+						res = move_window(dj.fs, dw);
+					}
+				}
+			}
+		}
+		else {	/* Open an existing file */
+			if (res == FR_OK) {					/* Follow succeeded */
+				if (dir[DIR_Attr] & AM_DIR) {	/* It is a directory */
+					res = FR_NO_FILE;
+				} else {
+					if ((mode & FA_WRITE) && (dir[DIR_Attr] & AM_RDO)) /* R/O violation */
+						res = FR_DENIED;
+				}
+			}
+		}
+		if (res == FR_OK) {
+			if (mode & FA_CREATE_ALWAYS)		/* Set file change flag if created or overwritten */
+				mode |= FA__WRITTEN;
+			fp->dir_sect = dj.fs->winsect;		/* Pointer to the directory entry */
+			fp->dir_ptr = dir;
+#if _FS_LOCK
+			fp->lockid = inc_lock(&dj, (mode & ~FA_READ) ? 1 : 0);
+			if (!fp->lockid) res = FR_INT_ERR;
+#endif
+		}
+
+#else				/* R/O configuration */
+		if (res == FR_OK) {					/* Follow succeeded */
+			dir = dj.dir;
+			if (!dir) {						/* Current directory itself */
+				res = FR_INVALID_NAME;
+			} else {
+				if (dir[DIR_Attr] & AM_DIR)	/* It is a directory */
+					res = FR_NO_FILE;
+			}
+		}
+#endif
+		FREE_BUF();
+
+		if (res == FR_OK) {
+			fp->flag = mode;					/* File access mode */
+			fp->err = 0;						/* Clear error flag */
+			fp->sclust = ld_clust(dj.fs, dir);	/* File start cluster */
+			fp->fsize = LD_DWORD(dir+DIR_FileSize);	/* File size */
+			fp->fptr = 0;						/* File pointer */
+			fp->dsect = 0;
+#if _USE_FASTSEEK
+			fp->cltbl = 0;						/* Normal seek mode */
+#endif
+			fp->fs = dj.fs;	 					/* Validate file object */
+			fp->id = fp->fs->id;
+		}
+	}
+
+	LEAVE_FF(dj.fs, res);
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Read File                                                             */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_read (
+	FIL* fp, 		/* Pointer to the file object */
+	void* buff,		/* Pointer to data buffer */
+	UINT btr,		/* Number of bytes to read */
+	UINT* br		/* Pointer to number of bytes read */
+)
+{
+	FRESULT res;
+	DWORD clst, sect, remain;
+	UINT rcnt, cc;
+	BYTE csect, *rbuff = (BYTE*)buff;
+
+
+	*br = 0;	/* Clear read byte counter */
+
+	res = validate(fp);							/* Check validity */
+	if (res != FR_OK) LEAVE_FF(fp->fs, res);
+	if (fp->err)								/* Check error */
+		LEAVE_FF(fp->fs, (FRESULT)fp->err);
+	if (!(fp->flag & FA_READ)) 					/* Check access mode */
+		LEAVE_FF(fp->fs, FR_DENIED);
+	remain = fp->fsize - fp->fptr;
+	if (btr > remain) btr = (UINT)remain;		/* Truncate btr by remaining bytes */
+
+	for ( ;  btr;								/* Repeat until all data read */
+		rbuff += rcnt, fp->fptr += rcnt, *br += rcnt, btr -= rcnt) {
+		if ((fp->fptr % SS(fp->fs)) == 0) {		/* On the sector boundary? */
+			csect = (BYTE)(fp->fptr / SS(fp->fs) & (fp->fs->csize - 1));	/* Sector offset in the cluster */
+			if (!csect) {						/* On the cluster boundary? */
+				if (fp->fptr == 0) {			/* On the top of the file? */
+					clst = fp->sclust;			/* Follow from the origin */
+				} else {						/* Middle or end of the file */
+#if _USE_FASTSEEK
+					if (fp->cltbl)
+						clst = clmt_clust(fp, fp->fptr);	/* Get cluster# from the CLMT */
+					else
+#endif
+						clst = get_fat(fp->fs, fp->clust);	/* Follow cluster chain on the FAT */
+				}
+				if (clst < 2) ABORT(fp->fs, FR_INT_ERR);
+				if (clst == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
+				fp->clust = clst;				/* Update current cluster */
+			}
+			sect = clust2sect(fp->fs, fp->clust);	/* Get current sector */
+			if (!sect) ABORT(fp->fs, FR_INT_ERR);
+			sect += csect;
+			cc = btr / SS(fp->fs);				/* When remaining bytes >= sector size, */
+			if (cc) {							/* Read maximum contiguous sectors directly */
+				if (csect + cc > fp->fs->csize)	/* Clip at cluster boundary */
+					cc = fp->fs->csize - csect;
+				if (disk_read(fp->fs->drv, rbuff, sect, cc) != RES_OK)
+					ABORT(fp->fs, FR_DISK_ERR);
+#if !_FS_READONLY && _FS_MINIMIZE <= 2			/* Replace one of the read sectors with cached data if it contains a dirty sector */
+#if _FS_TINY
+				if (fp->fs->wflag && fp->fs->winsect - sect < cc)
+					mem_cpy(rbuff + ((fp->fs->winsect - sect) * SS(fp->fs)), fp->fs->win, SS(fp->fs));
+#else
+				if ((fp->flag & FA__DIRTY) && fp->dsect - sect < cc)
+					mem_cpy(rbuff + ((fp->dsect - sect) * SS(fp->fs)), fp->buf, SS(fp->fs));
+#endif
+#endif
+				rcnt = SS(fp->fs) * cc;			/* Number of bytes transferred */
+				continue;
+			}
+#if !_FS_TINY
+			if (fp->dsect != sect) {			/* Load data sector if not in cache */
+#if !_FS_READONLY
+				if (fp->flag & FA__DIRTY) {		/* Write-back dirty sector cache */
+					if (disk_write(fp->fs->drv, fp->buf, fp->dsect, 1) != RES_OK)
+						ABORT(fp->fs, FR_DISK_ERR);
+					fp->flag &= ~FA__DIRTY;
+				}
+#endif
+				if (disk_read(fp->fs->drv, fp->buf, sect, 1) != RES_OK)	/* Fill sector cache */
+					ABORT(fp->fs, FR_DISK_ERR);
+			}
+#endif
+			fp->dsect = sect;
+		}
+		rcnt = SS(fp->fs) - ((UINT)fp->fptr % SS(fp->fs));	/* Get partial sector data from sector buffer */
+		if (rcnt > btr) rcnt = btr;
+#if _FS_TINY
+		if (move_window(fp->fs, fp->dsect) != FR_OK)		/* Move sector window */
+			ABORT(fp->fs, FR_DISK_ERR);
+		mem_cpy(rbuff, &fp->fs->win[fp->fptr % SS(fp->fs)], rcnt);	/* Pick partial sector */
+#else
+		mem_cpy(rbuff, &fp->buf[fp->fptr % SS(fp->fs)], rcnt);	/* Pick partial sector */
+#endif
+	}
+
+	LEAVE_FF(fp->fs, FR_OK);
+}
+
+
+
+
+#if !_FS_READONLY
+/*-----------------------------------------------------------------------*/
+/* Write File                                                            */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_write (
+	FIL* fp,			/* Pointer to the file object */
+	const void *buff,	/* Pointer to the data to be written */
+	UINT btw,			/* Number of bytes to write */
+	UINT* bw			/* Pointer to number of bytes written */
+)
+{
+	FRESULT res;
+	DWORD clst, sect;
+	UINT wcnt, cc;
+	const BYTE *wbuff = (const BYTE*)buff;
+	BYTE csect;
+
+
+	*bw = 0;	/* Clear write byte counter */
+
+	res = validate(fp);						/* Check validity */
+	if (res != FR_OK) LEAVE_FF(fp->fs, res);
+	if (fp->err)							/* Check error */
+		LEAVE_FF(fp->fs, (FRESULT)fp->err);
+	if (!(fp->flag & FA_WRITE))				/* Check access mode */
+		LEAVE_FF(fp->fs, FR_DENIED);
+	if (fp->fptr + btw < fp->fptr) btw = 0;	/* File size cannot reach 4GB */
+
+	for ( ;  btw;							/* Repeat until all data written */
+		wbuff += wcnt, fp->fptr += wcnt, *bw += wcnt, btw -= wcnt) {
+		if ((fp->fptr % SS(fp->fs)) == 0) {	/* On the sector boundary? */
+			csect = (BYTE)(fp->fptr / SS(fp->fs) & (fp->fs->csize - 1));	/* Sector offset in the cluster */
+			if (!csect) {					/* On the cluster boundary? */
+				if (fp->fptr == 0) {		/* On the top of the file? */
+					clst = fp->sclust;		/* Follow from the origin */
+					if (clst == 0)			/* When no cluster is allocated, */
+						clst = create_chain(fp->fs, 0);	/* Create a new cluster chain */
+				} else {					/* Middle or end of the file */
+#if _USE_FASTSEEK
+					if (fp->cltbl)
+						clst = clmt_clust(fp, fp->fptr);	/* Get cluster# from the CLMT */
+					else
+#endif
+						clst = create_chain(fp->fs, fp->clust);	/* Follow or stretch cluster chain on the FAT */
+				}
+				if (clst == 0) break;		/* Could not allocate a new cluster (disk full) */
+				if (clst == 1) ABORT(fp->fs, FR_INT_ERR);
+				if (clst == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
+				fp->clust = clst;			/* Update current cluster */
+				if (fp->sclust == 0) fp->sclust = clst;	/* Set start cluster if the first write */
+			}
+#if _FS_TINY
+			if (fp->fs->winsect == fp->dsect && sync_window(fp->fs))	/* Write-back sector cache */
+				ABORT(fp->fs, FR_DISK_ERR);
+#else
+			if (fp->flag & FA__DIRTY) {		/* Write-back sector cache */
+				if (disk_write(fp->fs->drv, fp->buf, fp->dsect, 1) != RES_OK)
+					ABORT(fp->fs, FR_DISK_ERR);
+				fp->flag &= ~FA__DIRTY;
+			}
+#endif
+			sect = clust2sect(fp->fs, fp->clust);	/* Get current sector */
+			if (!sect) ABORT(fp->fs, FR_INT_ERR);
+			sect += csect;
+			cc = btw / SS(fp->fs);			/* When remaining bytes >= sector size, */
+			if (cc) {						/* Write maximum contiguous sectors directly */
+				if (csect + cc > fp->fs->csize)	/* Clip at cluster boundary */
+					cc = fp->fs->csize - csect;
+				if (disk_write(fp->fs->drv, wbuff, sect, cc) != RES_OK)
+					ABORT(fp->fs, FR_DISK_ERR);
+#if _FS_MINIMIZE <= 2
+#if _FS_TINY
+				if (fp->fs->winsect - sect < cc) {	/* Refill sector cache if it gets invalidated by the direct write */
+					mem_cpy(fp->fs->win, wbuff + ((fp->fs->winsect - sect) * SS(fp->fs)), SS(fp->fs));
+					fp->fs->wflag = 0;
+				}
+#else
+				if (fp->dsect - sect < cc) { /* Refill sector cache if it gets invalidated by the direct write */
+					mem_cpy(fp->buf, wbuff + ((fp->dsect - sect) * SS(fp->fs)), SS(fp->fs));
+					fp->flag &= ~FA__DIRTY;
+				}
+#endif
+#endif
+				wcnt = SS(fp->fs) * cc;		/* Number of bytes transferred */
+				continue;
+			}
+#if _FS_TINY
+			if (fp->fptr >= fp->fsize) {	/* Avoid silly cache filling at growing edge */
+				if (sync_window(fp->fs)) ABORT(fp->fs, FR_DISK_ERR);
+				fp->fs->winsect = sect;
+			}
+#else
+			if (fp->dsect != sect) {		/* Fill sector cache with file data */
+				if (fp->fptr < fp->fsize &&
+					disk_read(fp->fs->drv, fp->buf, sect, 1) != RES_OK)
+						ABORT(fp->fs, FR_DISK_ERR);
+			}
+#endif
+			fp->dsect = sect;
+		}
+		wcnt = SS(fp->fs) - ((UINT)fp->fptr % SS(fp->fs));/* Put partial sector into file I/O buffer */
+		if (wcnt > btw) wcnt = btw;
+#if _FS_TINY
+		if (move_window(fp->fs, fp->dsect) != FR_OK)	/* Move sector window */
+			ABORT(fp->fs, FR_DISK_ERR);
+		mem_cpy(&fp->fs->win[fp->fptr % SS(fp->fs)], wbuff, wcnt);	/* Fit partial sector */
+		fp->fs->wflag = 1;
+#else
+		mem_cpy(&fp->buf[fp->fptr % SS(fp->fs)], wbuff, wcnt);	/* Fit partial sector */
+		fp->flag |= FA__DIRTY;
+#endif
+	}
+
+	if (fp->fptr > fp->fsize) fp->fsize = fp->fptr;	/* Update file size if needed */
+	fp->flag |= FA__WRITTEN;						/* Set file change flag */
+
+	LEAVE_FF(fp->fs, FR_OK);
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Synchronize the File                                                  */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_sync (
+	FIL* fp		/* Pointer to the file object */
+)
+{
+	FRESULT res;
+	DWORD tm;
+	BYTE *dir;
+
+
+	res = validate(fp);					/* Check validity of the object */
+	if (res == FR_OK) {
+		if (fp->flag & FA__WRITTEN) {	/* Has the file been written? */
+			/* Write-back dirty buffer */
+#if !_FS_TINY
+			if (fp->flag & FA__DIRTY) {
+				if (disk_write(fp->fs->drv, fp->buf, fp->dsect, 1) != RES_OK)
+					LEAVE_FF(fp->fs, FR_DISK_ERR);
+				fp->flag &= ~FA__DIRTY;
+			}
+#endif
+			/* Update the directory entry */
+			res = move_window(fp->fs, fp->dir_sect);
+			if (res == FR_OK) {
+				dir = fp->dir_ptr;
+				dir[DIR_Attr] |= AM_ARC;					/* Set archive bit */
+				ST_DWORD(dir+DIR_FileSize, fp->fsize);		/* Update file size */
+				st_clust(dir, fp->sclust);					/* Update start cluster */
+				tm = GET_FATTIME();							/* Update updated time */
+				ST_DWORD(dir+DIR_WrtTime, tm);
+				ST_WORD(dir+DIR_LstAccDate, 0);
+				fp->flag &= ~FA__WRITTEN;
+				fp->fs->wflag = 1;
+				res = sync_fs(fp->fs);
+			}
+		}
+	}
+
+	LEAVE_FF(fp->fs, res);
+}
+
+#endif /* !_FS_READONLY */
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Close File                                                            */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_close (
+	FIL *fp		/* Pointer to the file object to be closed */
+)
+{
+	FRESULT res;
+
+
+#if !_FS_READONLY
+	res = f_sync(fp);					/* Flush cached data */
+	if (res == FR_OK)
+#endif
+	{
+		res = validate(fp);				/* Lock volume */
+		if (res == FR_OK) {
+#if _FS_REENTRANT
+			FATFS *fs = fp->fs;
+#endif
+#if _FS_LOCK
+			res = dec_lock(fp->lockid);	/* Decrement file open counter */
+			if (res == FR_OK)
+#endif
+				fp->fs = 0;				/* Invalidate file object */
+#if _FS_REENTRANT
+			unlock_fs(fs, FR_OK);		/* Unlock volume */
+#endif
+		}
+	}
+	return res;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Change Current Directory or Current Drive, Get Current Directory      */
+/*-----------------------------------------------------------------------*/
+
+#if _FS_RPATH >= 1
+#if _VOLUMES >= 2
+FRESULT f_chdrive (
+	const TCHAR* path		/* Drive number */
+)
+{
+	int vol;
+
+
+	vol = get_ldnumber(&path);
+	if (vol < 0) return FR_INVALID_DRIVE;
+
+	CurrVol = (BYTE)vol;
+
+	return FR_OK;
+}
+#endif
+
+
+FRESULT f_chdir (
+	const TCHAR* path	/* Pointer to the directory path */
+)
+{
+	FRESULT res;
+	DIR dj;
+	DEF_NAMEBUF;
+
+
+	/* Get logical drive number */
+	res = find_volume(&dj.fs, &path, 0);
+	if (res == FR_OK) {
+		INIT_BUF(dj);
+		res = follow_path(&dj, path);		/* Follow the path */
+		FREE_BUF();
+		if (res == FR_OK) {					/* Follow completed */
+			if (!dj.dir) {
+				dj.fs->cdir = dj.sclust;	/* Start directory itself */
+			} else {
+				if (dj.dir[DIR_Attr] & AM_DIR)	/* Reached to the directory */
+					dj.fs->cdir = ld_clust(dj.fs, dj.dir);
+				else
+					res = FR_NO_PATH;		/* Reached but a file */
+			}
+		}
+		if (res == FR_NO_FILE) res = FR_NO_PATH;
+	}
+
+	LEAVE_FF(dj.fs, res);
+}
+
+
+#if _FS_RPATH >= 2
+FRESULT f_getcwd (
+	TCHAR* buff,	/* Pointer to the directory path */
+	UINT len		/* Size of path */
+)
+{
+	FRESULT res;
+	DIR dj;
+	UINT i, n;
+	DWORD ccl;
+	TCHAR *tp;
+	FILINFO fno;
+	DEF_NAMEBUF;
+
+
+	*buff = 0;
+	/* Get logical drive number */
+	res = find_volume(&dj.fs, (const TCHAR**)&buff, 0);	/* Get current volume */
+	if (res == FR_OK) {
+		INIT_BUF(dj);
+		i = len;			/* Bottom of buffer (directory stack base) */
+		dj.sclust = dj.fs->cdir;			/* Start to follow upper directory from current directory */
+		while ((ccl = dj.sclust) != 0) {	/* Repeat while current directory is a sub-directory */
+			res = dir_sdi(&dj, 1);			/* Get parent directory */
+			if (res != FR_OK) break;
+			res = dir_read(&dj, 0);
+			if (res != FR_OK) break;
+			dj.sclust = ld_clust(dj.fs, dj.dir);	/* Goto parent directory */
+			res = dir_sdi(&dj, 0);
+			if (res != FR_OK) break;
+			do {							/* Find the entry links to the child directory */
+				res = dir_read(&dj, 0);
+				if (res != FR_OK) break;
+				if (ccl == ld_clust(dj.fs, dj.dir)) break;	/* Found the entry */
+				res = dir_next(&dj, 0);	
+			} while (res == FR_OK);
+			if (res == FR_NO_FILE) res = FR_INT_ERR;/* It cannot be 'not found'. */
+			if (res != FR_OK) break;
+#if _USE_LFN
+			fno.lfname = buff;
+			fno.lfsize = i;
+#endif
+			get_fileinfo(&dj, &fno);		/* Get the directory name and push it to the buffer */
+			tp = fno.fname;
+#if _USE_LFN
+			if (*buff) tp = buff;
+#endif
+			for (n = 0; tp[n]; n++) ;
+			if (i < n + 3) {
+				res = FR_NOT_ENOUGH_CORE; break;
+			}
+			while (n) buff[--i] = tp[--n];
+			buff[--i] = '/';
+		}
+		tp = buff;
+		if (res == FR_OK) {
+#if _VOLUMES >= 2
+			*tp++ = '0' + CurrVol;			/* Put drive number */
+			*tp++ = ':';
+#endif
+			if (i == len) {					/* Root-directory */
+				*tp++ = '/';
+			} else {						/* Sub-directroy */
+				do		/* Add stacked path str */
+					*tp++ = buff[i++];
+				while (i < len);
+			}
+		}
+		*tp = 0;
+		FREE_BUF();
+	}
+
+	LEAVE_FF(dj.fs, res);
+}
+#endif /* _FS_RPATH >= 2 */
+#endif /* _FS_RPATH >= 1 */
+
+
+
+#if _FS_MINIMIZE <= 2
+/*-----------------------------------------------------------------------*/
+/* Seek File R/W Pointer                                                 */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_lseek (
+	FIL* fp,		/* Pointer to the file object */
+	DWORD ofs		/* File pointer from top of file */
+)
+{
+	FRESULT res;
+
+
+	res = validate(fp);					/* Check validity of the object */
+	if (res != FR_OK) LEAVE_FF(fp->fs, res);
+	if (fp->err)						/* Check error */
+		LEAVE_FF(fp->fs, (FRESULT)fp->err);
+
+#if _USE_FASTSEEK
+	if (fp->cltbl) {	/* Fast seek */
+		DWORD cl, pcl, ncl, tcl, dsc, tlen, ulen, *tbl;
+
+		if (ofs == CREATE_LINKMAP) {	/* Create CLMT */
+			tbl = fp->cltbl;
+			tlen = *tbl++; ulen = 2;	/* Given table size and required table size */
+			cl = fp->sclust;			/* Top of the chain */
+			if (cl) {
+				do {
+					/* Get a fragment */
+					tcl = cl; ncl = 0; ulen += 2;	/* Top, length and used items */
+					do {
+						pcl = cl; ncl++;
+						cl = get_fat(fp->fs, cl);
+						if (cl <= 1) ABORT(fp->fs, FR_INT_ERR);
+						if (cl == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
+					} while (cl == pcl + 1);
+					if (ulen <= tlen) {		/* Store the length and top of the fragment */
+						*tbl++ = ncl; *tbl++ = tcl;
+					}
+				} while (cl < fp->fs->n_fatent);	/* Repeat until end of chain */
+			}
+			*fp->cltbl = ulen;	/* Number of items used */
+			if (ulen <= tlen)
+				*tbl = 0;		/* Terminate table */
+			else
+				res = FR_NOT_ENOUGH_CORE;	/* Given table size is smaller than required */
+
+		} else {						/* Fast seek */
+			if (ofs > fp->fsize)		/* Clip offset at the file size */
+				ofs = fp->fsize;
+			fp->fptr = ofs;				/* Set file pointer */
+			if (ofs) {
+				fp->clust = clmt_clust(fp, ofs - 1);
+				dsc = clust2sect(fp->fs, fp->clust);
+				if (!dsc) ABORT(fp->fs, FR_INT_ERR);
+				dsc += (ofs - 1) / SS(fp->fs) & (fp->fs->csize - 1);
+				if (fp->fptr % SS(fp->fs) && dsc != fp->dsect) {	/* Refill sector cache if needed */
+#if !_FS_TINY
+#if !_FS_READONLY
+					if (fp->flag & FA__DIRTY) {		/* Write-back dirty sector cache */
+						if (disk_write(fp->fs->drv, fp->buf, fp->dsect, 1) != RES_OK)
+							ABORT(fp->fs, FR_DISK_ERR);
+						fp->flag &= ~FA__DIRTY;
+					}
+#endif
+					if (disk_read(fp->fs->drv, fp->buf, dsc, 1) != RES_OK)	/* Load current sector */
+						ABORT(fp->fs, FR_DISK_ERR);
+#endif
+					fp->dsect = dsc;
+				}
+			}
+		}
+	} else
+#endif
+
+	/* Normal Seek */
+	{
+		DWORD clst, bcs, nsect, ifptr;
+
+		if (ofs > fp->fsize					/* In read-only mode, clip offset with the file size */
+#if !_FS_READONLY
+			 && !(fp->flag & FA_WRITE)
+#endif
+			) ofs = fp->fsize;
+
+		ifptr = fp->fptr;
+		fp->fptr = nsect = 0;
+		if (ofs) {
+			bcs = (DWORD)fp->fs->csize * SS(fp->fs);	/* Cluster size (byte) */
+			if (ifptr > 0 &&
+				(ofs - 1) / bcs >= (ifptr - 1) / bcs) {	/* When seek to same or following cluster, */
+				fp->fptr = (ifptr - 1) & ~(bcs - 1);	/* start from the current cluster */
+				ofs -= fp->fptr;
+				clst = fp->clust;
+			} else {									/* When seek to back cluster, */
+				clst = fp->sclust;						/* start from the first cluster */
+#if !_FS_READONLY
+				if (clst == 0) {						/* If no cluster chain, create a new chain */
+					clst = create_chain(fp->fs, 0);
+					if (clst == 1) ABORT(fp->fs, FR_INT_ERR);
+					if (clst == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
+					fp->sclust = clst;
+				}
+#endif
+				fp->clust = clst;
+			}
+			if (clst != 0) {
+				while (ofs > bcs) {						/* Cluster following loop */
+#if !_FS_READONLY
+					if (fp->flag & FA_WRITE) {			/* Check if in write mode or not */
+						clst = create_chain(fp->fs, clst);	/* Force stretch if in write mode */
+						if (clst == 0) {				/* When disk gets full, clip file size */
+							ofs = bcs; break;
+						}
+					} else
+#endif
+						clst = get_fat(fp->fs, clst);	/* Follow cluster chain if not in write mode */
+					if (clst == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
+					if (clst <= 1 || clst >= fp->fs->n_fatent) ABORT(fp->fs, FR_INT_ERR);
+					fp->clust = clst;
+					fp->fptr += bcs;
+					ofs -= bcs;
+				}
+				fp->fptr += ofs;
+				if (ofs % SS(fp->fs)) {
+					nsect = clust2sect(fp->fs, clst);	/* Current sector */
+					if (!nsect) ABORT(fp->fs, FR_INT_ERR);
+					nsect += ofs / SS(fp->fs);
+				}
+			}
+		}
+		if (fp->fptr % SS(fp->fs) && nsect != fp->dsect) {	/* Fill sector cache if needed */
+#if !_FS_TINY
+#if !_FS_READONLY
+			if (fp->flag & FA__DIRTY) {			/* Write-back dirty sector cache */
+				if (disk_write(fp->fs->drv, fp->buf, fp->dsect, 1) != RES_OK)
+					ABORT(fp->fs, FR_DISK_ERR);
+				fp->flag &= ~FA__DIRTY;
+			}
+#endif
+			if (disk_read(fp->fs->drv, fp->buf, nsect, 1) != RES_OK)	/* Fill sector cache */
+				ABORT(fp->fs, FR_DISK_ERR);
+#endif
+			fp->dsect = nsect;
+		}
+#if !_FS_READONLY
+		if (fp->fptr > fp->fsize) {			/* Set file change flag if the file size is extended */
+			fp->fsize = fp->fptr;
+			fp->flag |= FA__WRITTEN;
+		}
+#endif
+	}
+
+	LEAVE_FF(fp->fs, res);
+}
+
+
+
+#if _FS_MINIMIZE <= 1
+/*-----------------------------------------------------------------------*/
+/* Create a Directory Object                                             */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_opendir (
+	DIR* dp,			/* Pointer to directory object to create */
+	const TCHAR* path	/* Pointer to the directory path */
+)
+{
+	FRESULT res;
+	FATFS* fs;
+	DEF_NAMEBUF;
+
+
+	if (!dp) return FR_INVALID_OBJECT;
+
+	/* Get logical drive number */
+	res = find_volume(&fs, &path, 0);
+	if (res == FR_OK) {
+		dp->fs = fs;
+		INIT_BUF(*dp);
+		res = follow_path(dp, path);			/* Follow the path to the directory */
+		FREE_BUF();
+		if (res == FR_OK) {						/* Follow completed */
+			if (dp->dir) {						/* It is not the origin directory itself */
+				if (dp->dir[DIR_Attr] & AM_DIR)	/* The object is a sub directory */
+					dp->sclust = ld_clust(fs, dp->dir);
+				else							/* The object is a file */
+					res = FR_NO_PATH;
+			}
+			if (res == FR_OK) {
+				dp->id = fs->id;
+				res = dir_sdi(dp, 0);			/* Rewind directory */
+#if _FS_LOCK
+				if (res == FR_OK) {
+					if (dp->sclust) {
+						dp->lockid = inc_lock(dp, 0);	/* Lock the sub directory */
+						if (!dp->lockid)
+							res = FR_TOO_MANY_OPEN_FILES;
+					} else {
+						dp->lockid = 0;	/* Root directory need not to be locked */
+					}
+				}
+#endif
+			}
+		}
+		if (res == FR_NO_FILE) res = FR_NO_PATH;
+	}
+	if (res != FR_OK) dp->fs = 0;		/* Invalidate the directory object if function faild */
+
+	LEAVE_FF(fs, res);
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Close Directory                                                       */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_closedir (
+	DIR *dp		/* Pointer to the directory object to be closed */
+)
+{
+	FRESULT res;
+
+
+	res = validate(dp);
+	if (res == FR_OK) {
+#if _FS_REENTRANT
+		FATFS *fs = dp->fs;
+#endif
+#if _FS_LOCK
+		if (dp->lockid)				/* Decrement sub-directory open counter */
+			res = dec_lock(dp->lockid);
+		if (res == FR_OK)
+#endif
+			dp->fs = 0;				/* Invalidate directory object */
+#if _FS_REENTRANT
+		unlock_fs(fs, FR_OK);		/* Unlock volume */
+#endif
+	}
+	return res;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Read Directory Entries in Sequence                                    */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_readdir (
+	DIR* dp,			/* Pointer to the open directory object */
+	FILINFO* fno		/* Pointer to file information to return */
+)
+{
+	FRESULT res;
+	DEF_NAMEBUF;
+
+
+	res = validate(dp);						/* Check validity of the object */
+	if (res == FR_OK) {
+		if (!fno) {
+			res = dir_sdi(dp, 0);			/* Rewind the directory object */
+		} else {
+			INIT_BUF(*dp);
+			res = dir_read(dp, 0);			/* Read an item */
+			if (res == FR_NO_FILE) {		/* Reached end of directory */
+				dp->sect = 0;
+				res = FR_OK;
+			}
+			if (res == FR_OK) {				/* A valid entry is found */
+				get_fileinfo(dp, fno);		/* Get the object information */
+				res = dir_next(dp, 0);		/* Increment index for next */
+				if (res == FR_NO_FILE) {
+					dp->sect = 0;
+					res = FR_OK;
+				}
+			}
+			FREE_BUF();
+		}
+	}
+
+	LEAVE_FF(dp->fs, res);
+}
+
+
+
+#if _FS_MINIMIZE == 0
+/*-----------------------------------------------------------------------*/
+/* Get File Status                                                       */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_stat (
+	const TCHAR* path,	/* Pointer to the file path */
+	FILINFO* fno		/* Pointer to file information to return */
+)
+{
+	FRESULT res;
+	DIR dj;
+	DEF_NAMEBUF;
+
+
+	/* Get logical drive number */
+	res = find_volume(&dj.fs, &path, 0);
+	if (res == FR_OK) {
+		INIT_BUF(dj);
+		res = follow_path(&dj, path);	/* Follow the file path */
+		if (res == FR_OK) {				/* Follow completed */
+			if (dj.dir) {		/* Found an object */
+				if (fno) get_fileinfo(&dj, fno);
+			} else {			/* It is root directory */
+				res = FR_INVALID_NAME;
+			}
+		}
+		FREE_BUF();
+	}
+
+	LEAVE_FF(dj.fs, res);
+}
+
+
+
+#if !_FS_READONLY
+/*-----------------------------------------------------------------------*/
+/* Get Number of Free Clusters                                           */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_getfree (
+	const TCHAR* path,	/* Path name of the logical drive number */
+	DWORD* nclst,		/* Pointer to a variable to return number of free clusters */
+	FATFS** fatfs		/* Pointer to return pointer to corresponding file system object */
+)
+{
+	FRESULT res;
+	FATFS *fs;
+	DWORD n, clst, sect, stat;
+	UINT i;
+	BYTE fat, *p;
+
+
+	/* Get logical drive number */
+	res = find_volume(fatfs, &path, 0);
+	fs = *fatfs;
+	if (res == FR_OK) {
+		/* If free_clust is valid, return it without full cluster scan */
+		if (fs->free_clust <= fs->n_fatent - 2) {
+			*nclst = fs->free_clust;
+		} else {
+			/* Get number of free clusters */
+			fat = fs->fs_type;
+			n = 0;
+			if (fat == FS_FAT12) {
+				clst = 2;
+				do {
+					stat = get_fat(fs, clst);
+					if (stat == 0xFFFFFFFF) { res = FR_DISK_ERR; break; }
+					if (stat == 1) { res = FR_INT_ERR; break; }
+					if (stat == 0) n++;
+				} while (++clst < fs->n_fatent);
+			} else {
+				clst = fs->n_fatent;
+				sect = fs->fatbase;
+				i = 0; p = 0;
+				do {
+					if (!i) {
+						res = move_window(fs, sect++);
+						if (res != FR_OK) break;
+						p = fs->win;
+						i = SS(fs);
+					}
+					if (fat == FS_FAT16) {
+						if (LD_WORD(p) == 0) n++;
+						p += 2; i -= 2;
+					} else {
+						if ((LD_DWORD(p) & 0x0FFFFFFF) == 0) n++;
+						p += 4; i -= 4;
+					}
+				} while (--clst);
+			}
+			fs->free_clust = n;
+			fs->fsi_flag |= 1;
+			*nclst = n;
+		}
+	}
+	LEAVE_FF(fs, res);
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Truncate File                                                         */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_truncate (
+	FIL* fp		/* Pointer to the file object */
+)
+{
+	FRESULT res;
+	DWORD ncl;
+
+
+	res = validate(fp);						/* Check validity of the object */
+	if (res == FR_OK) {
+		if (fp->err) {						/* Check error */
+			res = (FRESULT)fp->err;
+		} else {
+			if (!(fp->flag & FA_WRITE))		/* Check access mode */
+				res = FR_DENIED;
+		}
+	}
+	if (res == FR_OK) {
+		if (fp->fsize > fp->fptr) {
+			fp->fsize = fp->fptr;	/* Set file size to current R/W point */
+			fp->flag |= FA__WRITTEN;
+			if (fp->fptr == 0) {	/* When set file size to zero, remove entire cluster chain */
+				res = remove_chain(fp->fs, fp->sclust);
+				fp->sclust = 0;
+			} else {				/* When truncate a part of the file, remove remaining clusters */
+				ncl = get_fat(fp->fs, fp->clust);
+				res = FR_OK;
+				if (ncl == 0xFFFFFFFF) res = FR_DISK_ERR;
+				if (ncl == 1) res = FR_INT_ERR;
+				if (res == FR_OK && ncl < fp->fs->n_fatent) {
+					res = put_fat(fp->fs, fp->clust, 0x0FFFFFFF);
+					if (res == FR_OK) res = remove_chain(fp->fs, ncl);
+				}
+			}
+#if !_FS_TINY
+			if (res == FR_OK && (fp->flag & FA__DIRTY)) {
+				if (disk_write(fp->fs->drv, fp->buf, fp->dsect, 1) != RES_OK)
+					res = FR_DISK_ERR;
+				else
+					fp->flag &= ~FA__DIRTY;
+			}
+#endif
+		}
+		if (res != FR_OK) fp->err = (FRESULT)res;
+	}
+
+	LEAVE_FF(fp->fs, res);
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Delete a File or Directory                                            */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_unlink (
+	const TCHAR* path		/* Pointer to the file or directory path */
+)
+{
+	FRESULT res;
+	DIR dj, sdj;
+	BYTE *dir;
+	DWORD dclst = 0;
+	DEF_NAMEBUF;
+
+
+	/* Get logical drive number */
+	res = find_volume(&dj.fs, &path, 1);
+	if (res == FR_OK) {
+		INIT_BUF(dj);
+		res = follow_path(&dj, path);		/* Follow the file path */
+		if (_FS_RPATH && res == FR_OK && (dj.fn[NSFLAG] & NS_DOT))
+			res = FR_INVALID_NAME;			/* Cannot remove dot entry */
+#if _FS_LOCK
+		if (res == FR_OK) res = chk_lock(&dj, 2);	/* Cannot remove open object */
+#endif
+		if (res == FR_OK) {					/* The object is accessible */
+			dir = dj.dir;
+			if (!dir) {
+				res = FR_INVALID_NAME;		/* Cannot remove the origin directory */
+			} else {
+				if (dir[DIR_Attr] & AM_RDO)
+					res = FR_DENIED;		/* Cannot remove R/O object */
+			}
+			if (res == FR_OK) {
+				dclst = ld_clust(dj.fs, dir);
+				if (dir[DIR_Attr] & AM_DIR) {	/* Is it a sub-dir? */
+					if (!dclst) {
+						res = FR_INT_ERR;
+					} else {					/* Make sure the sub-directory is empty */
+						mem_cpy(&sdj, &dj, sizeof (DIR));
+						sdj.sclust = dclst;
+						res = dir_sdi(&sdj, 2);		/* Exclude dot entries */
+						if (res == FR_OK) {
+							res = dir_read(&sdj, 0);	/* Read an item */
+							if (res == FR_OK		/* Not empty directory */
+#if _FS_RPATH
+							|| dclst == dj.fs->cdir	/* or current directory */
+#endif
+							) res = FR_DENIED;
+							if (res == FR_NO_FILE) res = FR_OK;	/* It is empty */
+						}
+					}
+				}
+			}
+			if (res == FR_OK) {
+				res = dir_remove(&dj);		/* Remove the directory entry */
+				if (res == FR_OK && dclst)	/* Remove the cluster chain if exist */
+					res = remove_chain(dj.fs, dclst);
+				if (res == FR_OK) res = sync_fs(dj.fs);
+			}
+		}
+		FREE_BUF();
+	}
+
+	LEAVE_FF(dj.fs, res);
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Create a Directory                                                    */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_mkdir (
+	const TCHAR* path		/* Pointer to the directory path */
+)
+{
+	FRESULT res;
+	DIR dj;
+	BYTE *dir, n;
+	DWORD dsc, dcl, pcl, tm = GET_FATTIME();
+	DEF_NAMEBUF;
+
+
+	/* Get logical drive number */
+	res = find_volume(&dj.fs, &path, 1);
+	if (res == FR_OK) {
+		INIT_BUF(dj);
+		res = follow_path(&dj, path);			/* Follow the file path */
+		if (res == FR_OK) res = FR_EXIST;		/* Any object with same name is already existing */
+		if (_FS_RPATH && res == FR_NO_FILE && (dj.fn[NSFLAG] & NS_DOT))
+			res = FR_INVALID_NAME;
+		if (res == FR_NO_FILE) {				/* Can create a new directory */
+			dcl = create_chain(dj.fs, 0);		/* Allocate a cluster for the new directory table */
+			res = FR_OK;
+			if (dcl == 0) res = FR_DENIED;		/* No space to allocate a new cluster */
+			if (dcl == 1) res = FR_INT_ERR;
+			if (dcl == 0xFFFFFFFF) res = FR_DISK_ERR;
+			if (res == FR_OK)					/* Flush FAT */
+				res = sync_window(dj.fs);
+			if (res == FR_OK) {					/* Initialize the new directory table */
+				dsc = clust2sect(dj.fs, dcl);
+				dir = dj.fs->win;
+				mem_set(dir, 0, SS(dj.fs));
+				mem_set(dir+DIR_Name, ' ', 11);	/* Create "." entry */
+				dir[DIR_Name] = '.';
+				dir[DIR_Attr] = AM_DIR;
+				ST_DWORD(dir+DIR_WrtTime, tm);
+				st_clust(dir, dcl);
+				mem_cpy(dir+SZ_DIR, dir, SZ_DIR); 	/* Create ".." entry */
+				dir[SZ_DIR+1] = '.'; pcl = dj.sclust;
+				if (dj.fs->fs_type == FS_FAT32 && pcl == dj.fs->dirbase)
+					pcl = 0;
+				st_clust(dir+SZ_DIR, pcl);
+				for (n = dj.fs->csize; n; n--) {	/* Write dot entries and clear following sectors */
+					dj.fs->winsect = dsc++;
+					dj.fs->wflag = 1;
+					res = sync_window(dj.fs);
+					if (res != FR_OK) break;
+					mem_set(dir, 0, SS(dj.fs));
+				}
+			}
+			if (res == FR_OK) res = dir_register(&dj);	/* Register the object to the directoy */
+			if (res != FR_OK) {
+				remove_chain(dj.fs, dcl);			/* Could not register, remove cluster chain */
+			} else {
+				dir = dj.dir;
+				dir[DIR_Attr] = AM_DIR;				/* Attribute */
+				ST_DWORD(dir+DIR_WrtTime, tm);		/* Created time */
+				st_clust(dir, dcl);					/* Table start cluster */
+				dj.fs->wflag = 1;
+				res = sync_fs(dj.fs);
+			}
+		}
+		FREE_BUF();
+	}
+
+	LEAVE_FF(dj.fs, res);
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Change Attribute                                                      */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_chmod (
+	const TCHAR* path,	/* Pointer to the file path */
+	BYTE value,			/* Attribute bits */
+	BYTE mask			/* Attribute mask to change */
+)
+{
+	FRESULT res;
+	DIR dj;
+	BYTE *dir;
+	DEF_NAMEBUF;
+
+
+	/* Get logical drive number */
+	res = find_volume(&dj.fs, &path, 1);
+	if (res == FR_OK) {
+		INIT_BUF(dj);
+		res = follow_path(&dj, path);		/* Follow the file path */
+		FREE_BUF();
+		if (_FS_RPATH && res == FR_OK && (dj.fn[NSFLAG] & NS_DOT))
+			res = FR_INVALID_NAME;
+		if (res == FR_OK) {
+			dir = dj.dir;
+			if (!dir) {						/* Is it a root directory? */
+				res = FR_INVALID_NAME;
+			} else {						/* File or sub directory */
+				mask &= AM_RDO|AM_HID|AM_SYS|AM_ARC;	/* Valid attribute mask */
+				dir[DIR_Attr] = (value & mask) | (dir[DIR_Attr] & (BYTE)~mask);	/* Apply attribute change */
+				dj.fs->wflag = 1;
+				res = sync_fs(dj.fs);
+			}
+		}
+	}
+
+	LEAVE_FF(dj.fs, res);
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Rename File/Directory                                                 */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_rename (
+	const TCHAR* path_old,	/* Pointer to the object to be renamed */
+	const TCHAR* path_new	/* Pointer to the new name */
+)
+{
+	FRESULT res;
+	DIR djo, djn;
+	BYTE buf[21], *dir;
+	DWORD dw;
+	DEF_NAMEBUF;
+
+
+	/* Get logical drive number of the source object */
+	res = find_volume(&djo.fs, &path_old, 1);
+	if (res == FR_OK) {
+		djn.fs = djo.fs;
+		INIT_BUF(djo);
+		res = follow_path(&djo, path_old);		/* Check old object */
+		if (_FS_RPATH && res == FR_OK && (djo.fn[NSFLAG] & NS_DOT))
+			res = FR_INVALID_NAME;
+#if _FS_LOCK
+		if (res == FR_OK) res = chk_lock(&djo, 2);
+#endif
+		if (res == FR_OK) {						/* Old object is found */
+			if (!djo.dir) {						/* Is root dir? */
+				res = FR_NO_FILE;
+			} else {
+				mem_cpy(buf, djo.dir+DIR_Attr, 21);		/* Save the object information except name */
+				mem_cpy(&djn, &djo, sizeof (DIR));		/* Duplicate the directory object */
+				if (get_ldnumber(&path_new) >= 0)		/* Snip drive number off and ignore it */
+					res = follow_path(&djn, path_new);	/* and make sure if new object name is not conflicting */
+				else
+					res = FR_INVALID_DRIVE;
+				if (res == FR_OK) res = FR_EXIST;		/* The new object name is already existing */
+				if (res == FR_NO_FILE) { 				/* It is a valid path and no name collision */
+/* Start of critical section that any interruption can cause a cross-link */
+					res = dir_register(&djn);			/* Register the new entry */
+					if (res == FR_OK) {
+						dir = djn.dir;					/* Copy object information except name */
+						mem_cpy(dir+13, buf+2, 19);
+						dir[DIR_Attr] = buf[0] | AM_ARC;
+						djo.fs->wflag = 1;
+						if ((dir[DIR_Attr] & AM_DIR) && djo.sclust != djn.sclust) {	/* Update .. entry in the directory if needed */
+							dw = clust2sect(djo.fs, ld_clust(djo.fs, dir));
+							if (!dw) {
+								res = FR_INT_ERR;
+							} else {
+								res = move_window(djo.fs, dw);
+								dir = djo.fs->win+SZ_DIR;	/* .. entry */
+								if (res == FR_OK && dir[1] == '.') {
+									st_clust(dir, djn.sclust);
+									djo.fs->wflag = 1;
+								}
+							}
+						}
+						if (res == FR_OK) {
+							res = dir_remove(&djo);		/* Remove old entry */
+							if (res == FR_OK)
+								res = sync_fs(djo.fs);
+						}
+					}
+/* End of critical section */
+				}
+			}
+		}
+		FREE_BUF();
+	}
+
+	LEAVE_FF(djo.fs, res);
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Change Timestamp                                                      */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_utime (
+	const TCHAR* path,	/* Pointer to the file/directory name */
+	const FILINFO* fno	/* Pointer to the time stamp to be set */
+)
+{
+	FRESULT res;
+	DIR dj;
+	BYTE *dir;
+	DEF_NAMEBUF;
+
+
+	/* Get logical drive number */
+	res = find_volume(&dj.fs, &path, 1);
+	if (res == FR_OK) {
+		INIT_BUF(dj);
+		res = follow_path(&dj, path);	/* Follow the file path */
+		FREE_BUF();
+		if (_FS_RPATH && res == FR_OK && (dj.fn[NSFLAG] & NS_DOT))
+			res = FR_INVALID_NAME;
+		if (res == FR_OK) {
+			dir = dj.dir;
+			if (!dir) {					/* Root directory */
+				res = FR_INVALID_NAME;
+			} else {					/* File or sub-directory */
+				ST_WORD(dir+DIR_WrtTime, fno->ftime);
+				ST_WORD(dir+DIR_WrtDate, fno->fdate);
+				dj.fs->wflag = 1;
+				res = sync_fs(dj.fs);
+			}
+		}
+	}
+
+	LEAVE_FF(dj.fs, res);
+}
+
+#endif /* !_FS_READONLY */
+#endif /* _FS_MINIMIZE == 0 */
+#endif /* _FS_MINIMIZE <= 1 */
+#endif /* _FS_MINIMIZE <= 2 */
+
+
+
+#if _USE_LABEL
+/*-----------------------------------------------------------------------*/
+/* Get volume label                                                      */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_getlabel (
+	const TCHAR* path,	/* Path name of the logical drive number */
+	TCHAR* label,		/* Pointer to a buffer to return the volume label */
+	DWORD* vsn			/* Pointer to a variable to return the volume serial number */
+)
+{
+	FRESULT res;
+	DIR dj;
+	UINT i, j;
+
+
+	/* Get logical drive number */
+	res = find_volume(&dj.fs, &path, 0);
+
+	/* Get volume label */
+	if (res == FR_OK && label) {
+		dj.sclust = 0;					/* Open root directory */
+		res = dir_sdi(&dj, 0);
+		if (res == FR_OK) {
+			res = dir_read(&dj, 1);		/* Get an entry with AM_VOL */
+			if (res == FR_OK) {			/* A volume label is exist */
+#if _USE_LFN && _LFN_UNICODE
+				WCHAR w;
+				i = j = 0;
+				do {
+					w = (i < 11) ? dj.dir[i++] : ' ';
+					if (IsDBCS1(w) && i < 11 && IsDBCS2(dj.dir[i]))
+						w = w << 8 | dj.dir[i++];
+					label[j++] = ff_convert(w, 1);	/* OEM -> Unicode */
+				} while (j < 11);
+#else
+				mem_cpy(label, dj.dir, 11);
+#endif
+				j = 11;
+				do {
+					label[j] = 0;
+					if (!j) break;
+				} while (label[--j] == ' ');
+			}
+			if (res == FR_NO_FILE) {	/* No label, return nul string */
+				label[0] = 0;
+				res = FR_OK;
+			}
+		}
+	}
+
+	/* Get volume serial number */
+	if (res == FR_OK && vsn) {
+		res = move_window(dj.fs, dj.fs->volbase);
+		if (res == FR_OK) {
+			i = dj.fs->fs_type == FS_FAT32 ? BS_VolID32 : BS_VolID;
+			*vsn = LD_DWORD(&dj.fs->win[i]);
+		}
+	}
+
+	LEAVE_FF(dj.fs, res);
+}
+
+
+
+#if !_FS_READONLY
+/*-----------------------------------------------------------------------*/
+/* Set volume label                                                      */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_setlabel (
+	const TCHAR* label	/* Pointer to the volume label to set */
+)
+{
+	FRESULT res;
+	DIR dj;
+	BYTE vn[11];
+	UINT i, j, sl;
+	WCHAR w;
+	DWORD tm;
+
+
+	/* Get logical drive number */
+	res = find_volume(&dj.fs, &label, 1);
+	if (res) LEAVE_FF(dj.fs, res);
+
+	/* Create a volume label in directory form */
+	vn[0] = 0;
+	for (sl = 0; label[sl]; sl++) ;				/* Get name length */
+	for ( ; sl && label[sl-1] == ' '; sl--) ;	/* Remove trailing spaces */
+	if (sl) {	/* Create volume label in directory form */
+		i = j = 0;
+		do {
+#if _USE_LFN && _LFN_UNICODE
+			w = ff_convert(ff_wtoupper(label[i++]), 0);
+#else
+			w = (BYTE)label[i++];
+			if (IsDBCS1(w))
+				w = (j < 10 && i < sl && IsDBCS2(label[i])) ? w << 8 | (BYTE)label[i++] : 0;
+#if _USE_LFN
+			w = ff_convert(ff_wtoupper(ff_convert(w, 1)), 0);
+#else
+			if (IsLower(w)) w -= 0x20;			/* To upper ASCII characters */
+#ifdef _EXCVT
+			if (w >= 0x80) w = ExCvt[w - 0x80];	/* To upper extended characters (SBCS cfg) */
+#else
+			if (!_DF1S && w >= 0x80) w = 0;		/* Reject extended characters (ASCII cfg) */
+#endif
+#endif
+#endif
+			if (!w || chk_chr("\"*+,.:;<=>\?[]|\x7F", w) || j >= (UINT)((w >= 0x100) ? 10 : 11)) /* Reject invalid characters for volume label */
+				LEAVE_FF(dj.fs, FR_INVALID_NAME);
+			if (w >= 0x100) vn[j++] = (BYTE)(w >> 8);
+			vn[j++] = (BYTE)w;
+		} while (i < sl);
+		while (j < 11) vn[j++] = ' ';
+	}
+
+	/* Set volume label */
+	dj.sclust = 0;					/* Open root directory */
+	res = dir_sdi(&dj, 0);
+	if (res == FR_OK) {
+		res = dir_read(&dj, 1);		/* Get an entry with AM_VOL */
+		if (res == FR_OK) {			/* A volume label is found */
+			if (vn[0]) {
+				mem_cpy(dj.dir, vn, 11);	/* Change the volume label name */
+				tm = GET_FATTIME();
+				ST_DWORD(dj.dir+DIR_WrtTime, tm);
+			} else {
+				dj.dir[0] = DDE;			/* Remove the volume label */
+			}
+			dj.fs->wflag = 1;
+			res = sync_fs(dj.fs);
+		} else {					/* No volume label is found or error */
+			if (res == FR_NO_FILE) {
+				res = FR_OK;
+				if (vn[0]) {				/* Create volume label as new */
+					res = dir_alloc(&dj, 1);	/* Allocate an entry for volume label */
+					if (res == FR_OK) {
+						mem_set(dj.dir, 0, SZ_DIR);	/* Set volume label */
+						mem_cpy(dj.dir, vn, 11);
+						dj.dir[DIR_Attr] = AM_VOL;
+						tm = GET_FATTIME();
+						ST_DWORD(dj.dir+DIR_WrtTime, tm);
+						dj.fs->wflag = 1;
+						res = sync_fs(dj.fs);
+					}
+				}
+			}
+		}
+	}
+
+	LEAVE_FF(dj.fs, res);
+}
+
+#endif /* !_FS_READONLY */
+#endif /* _USE_LABEL */
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Forward data to the stream directly (available on only tiny cfg)      */
+/*-----------------------------------------------------------------------*/
+#if _USE_FORWARD && _FS_TINY
+
+FRESULT f_forward (
+	FIL* fp, 						/* Pointer to the file object */
+	UINT (*func)(const BYTE*,UINT),	/* Pointer to the streaming function */
+	UINT btf,						/* Number of bytes to forward */
+	UINT* bf						/* Pointer to number of bytes forwarded */
+)
+{
+	FRESULT res;
+	DWORD remain, clst, sect;
+	UINT rcnt;
+	BYTE csect;
+
+
+	*bf = 0;	/* Clear transfer byte counter */
+
+	res = validate(fp);								/* Check validity of the object */
+	if (res != FR_OK) LEAVE_FF(fp->fs, res);
+	if (fp->err)									/* Check error */
+		LEAVE_FF(fp->fs, (FRESULT)fp->err);
+	if (!(fp->flag & FA_READ))						/* Check access mode */
+		LEAVE_FF(fp->fs, FR_DENIED);
+
+	remain = fp->fsize - fp->fptr;
+	if (btf > remain) btf = (UINT)remain;			/* Truncate btf by remaining bytes */
+
+	for ( ;  btf && (*func)(0, 0);					/* Repeat until all data transferred or stream becomes busy */
+		fp->fptr += rcnt, *bf += rcnt, btf -= rcnt) {
+		csect = (BYTE)(fp->fptr / SS(fp->fs) & (fp->fs->csize - 1));	/* Sector offset in the cluster */
+		if ((fp->fptr % SS(fp->fs)) == 0) {			/* On the sector boundary? */
+			if (!csect) {							/* On the cluster boundary? */
+				clst = (fp->fptr == 0) ?			/* On the top of the file? */
+					fp->sclust : get_fat(fp->fs, fp->clust);
+				if (clst <= 1) ABORT(fp->fs, FR_INT_ERR);
+				if (clst == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
+				fp->clust = clst;					/* Update current cluster */
+			}
+		}
+		sect = clust2sect(fp->fs, fp->clust);		/* Get current data sector */
+		if (!sect) ABORT(fp->fs, FR_INT_ERR);
+		sect += csect;
+		if (move_window(fp->fs, sect) != FR_OK)		/* Move sector window */
+			ABORT(fp->fs, FR_DISK_ERR);
+		fp->dsect = sect;
+		rcnt = SS(fp->fs) - (WORD)(fp->fptr % SS(fp->fs));	/* Forward data from sector window */
+		if (rcnt > btf) rcnt = btf;
+		rcnt = (*func)(&fp->fs->win[(WORD)fp->fptr % SS(fp->fs)], rcnt);
+		if (!rcnt) ABORT(fp->fs, FR_INT_ERR);
+	}
+
+	LEAVE_FF(fp->fs, FR_OK);
+}
+#endif /* _USE_FORWARD */
+
+
+
+#if _USE_MKFS && !_FS_READONLY
+/*-----------------------------------------------------------------------*/
+/* Create File System on the Drive                                       */
+/*-----------------------------------------------------------------------*/
+#define N_ROOTDIR	512		/* Number of root directory entries for FAT12/16 */
+#define N_FATS		1		/* Number of FATs (1 or 2) */
+
+
+FRESULT f_mkfs (
+	const TCHAR* path,	/* Logical drive number */
+	BYTE sfd,			/* Partitioning rule 0:FDISK, 1:SFD */
+	UINT au				/* Size of allocation unit in unit of byte or sector */
+)
+{
+	static const WORD vst[] = { 1024,   512,  256,  128,   64,    32,   16,    8,    4,    2,   0};
+	static const WORD cst[] = {32768, 16384, 8192, 4096, 2048, 16384, 8192, 4096, 2048, 1024, 512};
+	int vol;
+	BYTE fmt, md, sys, *tbl, pdrv, part;
+	DWORD n_clst, vs, n, wsect;
+	UINT i;
+	DWORD b_vol, b_fat, b_dir, b_data;	/* LBA */
+	DWORD n_vol, n_rsv, n_fat, n_dir;	/* Size */
+	FATFS *fs;
+	DSTATUS stat;
+
+
+	/* Check mounted drive and clear work area */
+	if (sfd > 1) return FR_INVALID_PARAMETER;
+	vol = get_ldnumber(&path);
+	if (vol < 0) return FR_INVALID_DRIVE;
+	fs = FatFs[vol];
+	if (!fs) return FR_NOT_ENABLED;
+	fs->fs_type = 0;
+	pdrv = LD2PD(vol);	/* Physical drive */
+	part = LD2PT(vol);	/* Partition (0:auto detect, 1-4:get from partition table)*/
+
+	/* Get disk statics */
+	stat = disk_initialize(pdrv);
+	if (stat & STA_NOINIT) return FR_NOT_READY;
+	if (stat & STA_PROTECT) return FR_WRITE_PROTECTED;
+#if _MAX_SS != _MIN_SS		/* Get disk sector size */
+	if (disk_ioctl(pdrv, GET_SECTOR_SIZE, &SS(fs)) != RES_OK || SS(fs) > _MAX_SS || SS(fs) < _MIN_SS)
+		return FR_DISK_ERR;
+#endif
+	if (_MULTI_PARTITION && part) {
+		/* Get partition information from partition table in the MBR */
+		if (disk_read(pdrv, fs->win, 0, 1) != RES_OK) return FR_DISK_ERR;
+		if (LD_WORD(fs->win+BS_55AA) != 0xAA55) return FR_MKFS_ABORTED;
+		tbl = &fs->win[MBR_Table + (part - 1) * SZ_PTE];
+		if (!tbl[4]) return FR_MKFS_ABORTED;	/* No partition? */
+		b_vol = LD_DWORD(tbl+8);	/* Volume start sector */
+		n_vol = LD_DWORD(tbl+12);	/* Volume size */
+	} else {
+		/* Create a partition in this function */
+		if (disk_ioctl(pdrv, GET_SECTOR_COUNT, &n_vol) != RES_OK || n_vol < 128)
+			return FR_DISK_ERR;
+		b_vol = (sfd) ? 0 : 63;		/* Volume start sector */
+		n_vol -= b_vol;				/* Volume size */
+	}
+
+	if (au & (au - 1)) au = 0;
+	if (!au) {						/* AU auto selection */
+		vs = n_vol / (2000 / (SS(fs) / 512));
+		for (i = 0; vs < vst[i]; i++) ;
+		au = cst[i];
+	}
+	if (au >= _MIN_SS) au /= SS(fs);	/* Number of sectors per cluster */
+	if (!au) au = 1;
+	if (au > 128) au = 128;
+
+	/* Pre-compute number of clusters and FAT sub-type */
+	n_clst = n_vol / au;
+	fmt = FS_FAT12;
+	if (n_clst >= MIN_FAT16) fmt = FS_FAT16;
+	if (n_clst >= MIN_FAT32) fmt = FS_FAT32;
+
+	/* Determine offset and size of FAT structure */
+	if (fmt == FS_FAT32) {
+		n_fat = ((n_clst * 4) + 8 + SS(fs) - 1) / SS(fs);
+		n_rsv = 32;
+		n_dir = 0;
+	} else {
+		n_fat = (fmt == FS_FAT12) ? (n_clst * 3 + 1) / 2 + 3 : (n_clst * 2) + 4;
+		n_fat = (n_fat + SS(fs) - 1) / SS(fs);
+		n_rsv = 1;
+		n_dir = (DWORD)N_ROOTDIR * SZ_DIR / SS(fs);
+	}
+	b_fat = b_vol + n_rsv;				/* FAT area start sector */
+	b_dir = b_fat + n_fat * N_FATS;		/* Directory area start sector */
+	b_data = b_dir + n_dir;				/* Data area start sector */
+	if (n_vol < b_data + au - b_vol) return FR_MKFS_ABORTED;	/* Too small volume */
+
+	/* Align data start sector to erase block boundary (for flash memory media) */
+	if (disk_ioctl(pdrv, GET_BLOCK_SIZE, &n) != RES_OK || !n || n > 32768) n = 1;
+	n = (b_data + n - 1) & ~(n - 1);	/* Next nearest erase block from current data start */
+	n = (n - b_data) / N_FATS;
+	if (fmt == FS_FAT32) {		/* FAT32: Move FAT offset */
+		n_rsv += n;
+		b_fat += n;
+	} else {					/* FAT12/16: Expand FAT size */
+		n_fat += n;
+	}
+
+	/* Determine number of clusters and final check of validity of the FAT sub-type */
+	n_clst = (n_vol - n_rsv - n_fat * N_FATS - n_dir) / au;
+	if (   (fmt == FS_FAT16 && n_clst < MIN_FAT16)
+		|| (fmt == FS_FAT32 && n_clst < MIN_FAT32))
+		return FR_MKFS_ABORTED;
+
+	/* Determine system ID in the partition table */
+	if (fmt == FS_FAT32) {
+		sys = 0x0C;		/* FAT32X */
+	} else {
+		if (fmt == FS_FAT12 && n_vol < 0x10000) {
+			sys = 0x01;	/* FAT12(<65536) */
+		} else {
+			sys = (n_vol < 0x10000) ? 0x04 : 0x06;	/* FAT16(<65536) : FAT12/16(>=65536) */
+		}
+	}
+
+	if (_MULTI_PARTITION && part) {
+		/* Update system ID in the partition table */
+		tbl = &fs->win[MBR_Table + (part - 1) * SZ_PTE];
+		tbl[4] = sys;
+		if (disk_write(pdrv, fs->win, 0, 1) != RES_OK)	/* Write it to teh MBR */
+			return FR_DISK_ERR;
+		md = 0xF8;
+	} else {
+		if (sfd) {	/* No partition table (SFD) */
+			md = 0xF0;
+		} else {	/* Create partition table (FDISK) */
+			mem_set(fs->win, 0, SS(fs));
+			tbl = fs->win+MBR_Table;	/* Create partition table for single partition in the drive */
+			tbl[1] = 1;						/* Partition start head */
+			tbl[2] = 1;						/* Partition start sector */
+			tbl[3] = 0;						/* Partition start cylinder */
+			tbl[4] = sys;					/* System type */
+			tbl[5] = 254;					/* Partition end head */
+			n = (b_vol + n_vol) / 63 / 255;
+			tbl[6] = (BYTE)(n >> 2 | 63);	/* Partition end sector */
+			tbl[7] = (BYTE)n;				/* End cylinder */
+			ST_DWORD(tbl+8, 63);			/* Partition start in LBA */
+			ST_DWORD(tbl+12, n_vol);		/* Partition size in LBA */
+			ST_WORD(fs->win+BS_55AA, 0xAA55);	/* MBR signature */
+			if (disk_write(pdrv, fs->win, 0, 1) != RES_OK)	/* Write it to the MBR */
+				return FR_DISK_ERR;
+			md = 0xF8;
+		}
+	}
+
+	/* Create BPB in the VBR */
+	tbl = fs->win;							/* Clear sector */
+	mem_set(tbl, 0, SS(fs));
+	mem_cpy(tbl, "\xEB\xFE\x90" "MSDOS5.0", 11);/* Boot jump code, OEM name */
+	i = SS(fs);								/* Sector size */
+	ST_WORD(tbl+BPB_BytsPerSec, i);
+	tbl[BPB_SecPerClus] = (BYTE)au;			/* Sectors per cluster */
+	ST_WORD(tbl+BPB_RsvdSecCnt, n_rsv);		/* Reserved sectors */
+	tbl[BPB_NumFATs] = N_FATS;				/* Number of FATs */
+	i = (fmt == FS_FAT32) ? 0 : N_ROOTDIR;	/* Number of root directory entries */
+	ST_WORD(tbl+BPB_RootEntCnt, i);
+	if (n_vol < 0x10000) {					/* Number of total sectors */
+		ST_WORD(tbl+BPB_TotSec16, n_vol);
+	} else {
+		ST_DWORD(tbl+BPB_TotSec32, n_vol);
+	}
+	tbl[BPB_Media] = md;					/* Media descriptor */
+	ST_WORD(tbl+BPB_SecPerTrk, 63);			/* Number of sectors per track */
+	ST_WORD(tbl+BPB_NumHeads, 255);			/* Number of heads */
+	ST_DWORD(tbl+BPB_HiddSec, b_vol);		/* Hidden sectors */
+	n = GET_FATTIME();						/* Use current time as VSN */
+	if (fmt == FS_FAT32) {
+		ST_DWORD(tbl+BS_VolID32, n);		/* VSN */
+		ST_DWORD(tbl+BPB_FATSz32, n_fat);	/* Number of sectors per FAT */
+		ST_DWORD(tbl+BPB_RootClus, 2);		/* Root directory start cluster (2) */
+		ST_WORD(tbl+BPB_FSInfo, 1);			/* FSINFO record offset (VBR+1) */
+		ST_WORD(tbl+BPB_BkBootSec, 6);		/* Backup boot record offset (VBR+6) */
+		tbl[BS_DrvNum32] = 0x80;			/* Drive number */
+		tbl[BS_BootSig32] = 0x29;			/* Extended boot signature */
+		mem_cpy(tbl+BS_VolLab32, "NO NAME    " "FAT32   ", 19);	/* Volume label, FAT signature */
+	} else {
+		ST_DWORD(tbl+BS_VolID, n);			/* VSN */
+		ST_WORD(tbl+BPB_FATSz16, n_fat);	/* Number of sectors per FAT */
+		tbl[BS_DrvNum] = 0x80;				/* Drive number */
+		tbl[BS_BootSig] = 0x29;				/* Extended boot signature */
+		mem_cpy(tbl+BS_VolLab, "NO NAME    " "FAT     ", 19);	/* Volume label, FAT signature */
+	}
+	ST_WORD(tbl+BS_55AA, 0xAA55);			/* Signature (Offset is fixed here regardless of sector size) */
+	if (disk_write(pdrv, tbl, b_vol, 1) != RES_OK)	/* Write it to the VBR sector */
+		return FR_DISK_ERR;
+	if (fmt == FS_FAT32)					/* Write backup VBR if needed (VBR+6) */
+		disk_write(pdrv, tbl, b_vol + 6, 1);
+
+	/* Initialize FAT area */
+	wsect = b_fat;
+	for (i = 0; i < N_FATS; i++) {		/* Initialize each FAT copy */
+		mem_set(tbl, 0, SS(fs));			/* 1st sector of the FAT  */
+		n = md;								/* Media descriptor byte */
+		if (fmt != FS_FAT32) {
+			n |= (fmt == FS_FAT12) ? 0x00FFFF00 : 0xFFFFFF00;
+			ST_DWORD(tbl+0, n);				/* Reserve cluster #0-1 (FAT12/16) */
+		} else {
+			n |= 0xFFFFFF00;
+			ST_DWORD(tbl+0, n);				/* Reserve cluster #0-1 (FAT32) */
+			ST_DWORD(tbl+4, 0xFFFFFFFF);
+			ST_DWORD(tbl+8, 0x0FFFFFFF);	/* Reserve cluster #2 for root directory */
+		}
+		if (disk_write(pdrv, tbl, wsect++, 1) != RES_OK)
+			return FR_DISK_ERR;
+		mem_set(tbl, 0, SS(fs));			/* Fill following FAT entries with zero */
+		for (n = 1; n < n_fat; n++) {		/* This loop may take a time on FAT32 volume due to many single sector writes */
+			if (disk_write(pdrv, tbl, wsect++, 1) != RES_OK)
+				return FR_DISK_ERR;
+		}
+	}
+
+	/* Initialize root directory */
+	i = (fmt == FS_FAT32) ? au : (UINT)n_dir;
+	do {
+		if (disk_write(pdrv, tbl, wsect++, 1) != RES_OK)
+			return FR_DISK_ERR;
+	} while (--i);
+
+#if _USE_TRIM	/* Erase data area if needed */
+	{
+		DWORD eb[2];
+
+		eb[0] = wsect; eb[1] = wsect + (n_clst - ((fmt == FS_FAT32) ? 1 : 0)) * au - 1;
+		disk_ioctl(pdrv, CTRL_TRIM, eb);
+	}
+#endif
+
+	/* Create FSINFO if needed */
+	if (fmt == FS_FAT32) {
+		ST_DWORD(tbl+FSI_LeadSig, 0x41615252);
+		ST_DWORD(tbl+FSI_StrucSig, 0x61417272);
+		ST_DWORD(tbl+FSI_Free_Count, n_clst - 1);	/* Number of free clusters */
+		ST_DWORD(tbl+FSI_Nxt_Free, 2);				/* Last allocated cluster# */
+		ST_WORD(tbl+BS_55AA, 0xAA55);
+		disk_write(pdrv, tbl, b_vol + 1, 1);	/* Write original (VBR+1) */
+		disk_write(pdrv, tbl, b_vol + 7, 1);	/* Write backup (VBR+7) */
+	}
+
+	return (disk_ioctl(pdrv, CTRL_SYNC, 0) == RES_OK) ? FR_OK : FR_DISK_ERR;
+}
+
+
+
+#if _MULTI_PARTITION
+/*-----------------------------------------------------------------------*/
+/* Divide Physical Drive                                                 */
+/*-----------------------------------------------------------------------*/
+
+FRESULT f_fdisk (
+	BYTE pdrv,			/* Physical drive number */
+	const DWORD szt[],	/* Pointer to the size table for each partitions */
+	void* work			/* Pointer to the working buffer */
+)
+{
+	UINT i, n, sz_cyl, tot_cyl, b_cyl, e_cyl, p_cyl;
+	BYTE s_hd, e_hd, *p, *buf = (BYTE*)work;
+	DSTATUS stat;
+	DWORD sz_disk, sz_part, s_part;
+
+
+	stat = disk_initialize(pdrv);
+	if (stat & STA_NOINIT) return FR_NOT_READY;
+	if (stat & STA_PROTECT) return FR_WRITE_PROTECTED;
+	if (disk_ioctl(pdrv, GET_SECTOR_COUNT, &sz_disk)) return FR_DISK_ERR;
+
+	/* Determine CHS in the table regardless of the drive geometry */
+	for (n = 16; n < 256 && sz_disk / n / 63 > 1024; n *= 2) ;
+	if (n == 256) n--;
+	e_hd = n - 1;
+	sz_cyl = 63 * n;
+	tot_cyl = sz_disk / sz_cyl;
+
+	/* Create partition table */
+	mem_set(buf, 0, _MAX_SS);
+	p = buf + MBR_Table; b_cyl = 0;
+	for (i = 0; i < 4; i++, p += SZ_PTE) {
+		p_cyl = (szt[i] <= 100U) ? (DWORD)tot_cyl * szt[i] / 100 : szt[i] / sz_cyl;
+		if (!p_cyl) continue;
+		s_part = (DWORD)sz_cyl * b_cyl;
+		sz_part = (DWORD)sz_cyl * p_cyl;
+		if (i == 0) {	/* Exclude first track of cylinder 0 */
+			s_hd = 1;
+			s_part += 63; sz_part -= 63;
+		} else {
+			s_hd = 0;
+		}
+		e_cyl = b_cyl + p_cyl - 1;
+		if (e_cyl >= tot_cyl) return FR_INVALID_PARAMETER;
+
+		/* Set partition table */
+		p[1] = s_hd;						/* Start head */
+		p[2] = (BYTE)((b_cyl >> 2) + 1);	/* Start sector */
+		p[3] = (BYTE)b_cyl;					/* Start cylinder */
+		p[4] = 0x06;						/* System type (temporary setting) */
+		p[5] = e_hd;						/* End head */
+		p[6] = (BYTE)((e_cyl >> 2) + 63);	/* End sector */
+		p[7] = (BYTE)e_cyl;					/* End cylinder */
+		ST_DWORD(p + 8, s_part);			/* Start sector in LBA */
+		ST_DWORD(p + 12, sz_part);			/* Partition size */
+
+		/* Next partition */
+		b_cyl += p_cyl;
+	}
+	ST_WORD(p, 0xAA55);
+
+	/* Write it to the MBR */
+	return (disk_write(pdrv, buf, 0, 1) != RES_OK || disk_ioctl(pdrv, CTRL_SYNC, 0) != RES_OK) ? FR_DISK_ERR : FR_OK;
+}
+
+
+#endif /* _MULTI_PARTITION */
+#endif /* _USE_MKFS && !_FS_READONLY */
+
+
+
+
+#if _USE_STRFUNC
+/*-----------------------------------------------------------------------*/
+/* Get a string from the file                                            */
+/*-----------------------------------------------------------------------*/
+
+TCHAR* f_gets (
+	TCHAR* buff,	/* Pointer to the string buffer to read */
+	int len,		/* Size of string buffer (characters) */
+	FIL* fp			/* Pointer to the file object */
+)
+{
+	int n = 0;
+	TCHAR c, *p = buff;
+	BYTE s[2];
+	UINT rc;
+
+
+	while (n < len - 1) {	/* Read characters until buffer gets filled */
+#if _USE_LFN && _LFN_UNICODE
+#if _STRF_ENCODE == 3		/* Read a character in UTF-8 */
+		f_read(fp, s, 1, &rc);
+		if (rc != 1) break;
+		c = s[0];
+		if (c >= 0x80) {
+			if (c < 0xC0) continue;	/* Skip stray trailer */
+			if (c < 0xE0) {			/* Two-byte sequence */
+				f_read(fp, s, 1, &rc);
+				if (rc != 1) break;
+				c = (c & 0x1F) << 6 | (s[0] & 0x3F);
+				if (c < 0x80) c = '?';
+			} else {
+				if (c < 0xF0) {		/* Three-byte sequence */
+					f_read(fp, s, 2, &rc);
+					if (rc != 2) break;
+					c = c << 12 | (s[0] & 0x3F) << 6 | (s[1] & 0x3F);
+					if (c < 0x800) c = '?';
+				} else {			/* Reject four-byte sequence */
+					c = '?';
+				}
+			}
+		}
+#elif _STRF_ENCODE == 2		/* Read a character in UTF-16BE */
+		f_read(fp, s, 2, &rc);
+		if (rc != 2) break;
+		c = s[1] + (s[0] << 8);
+#elif _STRF_ENCODE == 1		/* Read a character in UTF-16LE */
+		f_read(fp, s, 2, &rc);
+		if (rc != 2) break;
+		c = s[0] + (s[1] << 8);
+#else						/* Read a character in ANSI/OEM */
+		f_read(fp, s, 1, &rc);
+		if (rc != 1) break;
+		c = s[0];
+		if (IsDBCS1(c)) {
+			f_read(fp, s, 1, &rc);
+			if (rc != 1) break;
+			c = (c << 8) + s[0];
+		}
+		c = ff_convert(c, 1);	/* OEM -> Unicode */
+		if (!c) c = '?';
+#endif
+#else						/* Read a character without conversion */
+		f_read(fp, s, 1, &rc);
+		if (rc != 1) break;
+		c = s[0];
+#endif
+		if (_USE_STRFUNC == 2 && c == '\r') continue;	/* Strip '\r' */
+		*p++ = c;
+		n++;
+		if (c == '\n') break;		/* Break on EOL */
+	}
+	*p = 0;
+	return n ? buff : 0;			/* When no data read (eof or error), return with error. */
+}
+
+
+
+#if !_FS_READONLY
+#include <stdarg.h>
+/*-----------------------------------------------------------------------*/
+/* Put a character to the file                                           */
+/*-----------------------------------------------------------------------*/
+
+typedef struct {
+	FIL* fp;
+	int idx, nchr;
+	BYTE buf[64];
+} putbuff;
+
+
+static
+void putc_bfd (
+	putbuff* pb,
+	TCHAR c
+)
+{
+	UINT bw;
+	int i;
+
+
+	if (_USE_STRFUNC == 2 && c == '\n')	 /* LF -> CRLF conversion */
+		putc_bfd(pb, '\r');
+
+	i = pb->idx;	/* Buffer write index (-1:error) */
+	if (i < 0) return;
+
+#if _USE_LFN && _LFN_UNICODE
+#if _STRF_ENCODE == 3			/* Write a character in UTF-8 */
+	if (c < 0x80) {				/* 7-bit */
+		pb->buf[i++] = (BYTE)c;
+	} else {
+		if (c < 0x800) {		/* 11-bit */
+			pb->buf[i++] = (BYTE)(0xC0 | c >> 6);
+		} else {				/* 16-bit */
+			pb->buf[i++] = (BYTE)(0xE0 | c >> 12);
+			pb->buf[i++] = (BYTE)(0x80 | (c >> 6 & 0x3F));
+		}
+		pb->buf[i++] = (BYTE)(0x80 | (c & 0x3F));
+	}
+#elif _STRF_ENCODE == 2			/* Write a character in UTF-16BE */
+	pb->buf[i++] = (BYTE)(c >> 8);
+	pb->buf[i++] = (BYTE)c;
+#elif _STRF_ENCODE == 1			/* Write a character in UTF-16LE */
+	pb->buf[i++] = (BYTE)c;
+	pb->buf[i++] = (BYTE)(c >> 8);
+#else							/* Write a character in ANSI/OEM */
+	c = ff_convert(c, 0);	/* Unicode -> OEM */
+	if (!c) c = '?';
+	if (c >= 0x100)
+		pb->buf[i++] = (BYTE)(c >> 8);
+	pb->buf[i++] = (BYTE)c;
+#endif
+#else							/* Write a character without conversion */
+	pb->buf[i++] = (BYTE)c;
+#endif
+
+	if (i >= (int)(sizeof pb->buf) - 3) {	/* Write buffered characters to the file */
+		f_write(pb->fp, pb->buf, (UINT)i, &bw);
+		i = (bw == (UINT)i) ? 0 : -1;
+	}
+	pb->idx = i;
+	pb->nchr++;
+}
+
+
+
+int f_putc (
+	TCHAR c,	/* A character to be output */
+	FIL* fp		/* Pointer to the file object */
+)
+{
+	putbuff pb;
+	UINT nw;
+
+
+	pb.fp = fp;			/* Initialize output buffer */
+	pb.nchr = pb.idx = 0;
+
+	putc_bfd(&pb, c);	/* Put a character */
+
+	if (   pb.idx >= 0	/* Flush buffered characters to the file */
+		&& f_write(pb.fp, pb.buf, (UINT)pb.idx, &nw) == FR_OK
+		&& (UINT)pb.idx == nw) return pb.nchr;
+	return EOF;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Put a string to the file                                              */
+/*-----------------------------------------------------------------------*/
+
+int f_puts (
+	const TCHAR* str,	/* Pointer to the string to be output */
+	FIL* fp				/* Pointer to the file object */
+)
+{
+	putbuff pb;
+	UINT nw;
+
+
+	pb.fp = fp;				/* Initialize output buffer */
+	pb.nchr = pb.idx = 0;
+
+	while (*str)			/* Put the string */
+		putc_bfd(&pb, *str++);
+
+	if (   pb.idx >= 0		/* Flush buffered characters to the file */
+		&& f_write(pb.fp, pb.buf, (UINT)pb.idx, &nw) == FR_OK
+		&& (UINT)pb.idx == nw) return pb.nchr;
+	return EOF;
+}
+
+
+
+
+/*-----------------------------------------------------------------------*/
+/* Put a formatted string to the file                                    */
+/*-----------------------------------------------------------------------*/
+
+int f_printf (
+	FIL* fp,			/* Pointer to the file object */
+	const TCHAR* fmt,	/* Pointer to the format string */
+	...					/* Optional arguments... */
+)
+{
+	va_list arp;
+	BYTE f, r;
+	UINT nw, i, j, w;
+	DWORD v;
+	TCHAR c, d, s[16], *p;
+	putbuff pb;
+
+
+	pb.fp = fp;				/* Initialize output buffer */
+	pb.nchr = pb.idx = 0;
+
+	va_start(arp, fmt);
+
+	for (;;) {
+		c = *fmt++;
+		if (c == 0) break;			/* End of string */
+		if (c != '%') {				/* Non escape character */
+			putc_bfd(&pb, c);
+			continue;
+		}
+		w = f = 0;
+		c = *fmt++;
+		if (c == '0') {				/* Flag: '0' padding */
+			f = 1; c = *fmt++;
+		} else {
+			if (c == '-') {			/* Flag: left justified */
+				f = 2; c = *fmt++;
+			}
+		}
+		while (IsDigit(c)) {		/* Precision */
+			w = w * 10 + c - '0';
+			c = *fmt++;
+		}
+		if (c == 'l' || c == 'L') {	/* Prefix: Size is long int */
+			f |= 4; c = *fmt++;
+		}
+		if (!c) break;
+		d = c;
+		if (IsLower(d)) d -= 0x20;
+		switch (d) {				/* Type is... */
+		case 'S' :					/* String */
+			p = va_arg(arp, TCHAR*);
+			for (j = 0; p[j]; j++) ;
+			if (!(f & 2)) {
+				while (j++ < w) putc_bfd(&pb, ' ');
+			}
+			while (*p) putc_bfd(&pb, *p++);
+			while (j++ < w) putc_bfd(&pb, ' ');
+			continue;
+		case 'C' :					/* Character */
+			putc_bfd(&pb, (TCHAR)va_arg(arp, int)); continue;
+		case 'B' :					/* Binary */
+			r = 2; break;
+		case 'O' :					/* Octal */
+			r = 8; break;
+		case 'D' :					/* Signed decimal */
+		case 'U' :					/* Unsigned decimal */
+			r = 10; break;
+		case 'X' :					/* Hexdecimal */
+			r = 16; break;
+		default:					/* Unknown type (pass-through) */
+			putc_bfd(&pb, c); continue;
+		}
+
+		/* Get an argument and put it in numeral */
+		v = (f & 4) ? (DWORD)va_arg(arp, long) : ((d == 'D') ? (DWORD)(long)va_arg(arp, int) : (DWORD)va_arg(arp, unsigned int));
+		if (d == 'D' && (v & 0x80000000)) {
+			v = 0 - v;
+			f |= 8;
+		}
+		i = 0;
+		do {
+			d = (TCHAR)(v % r); v /= r;
+			if (d > 9) d += (c == 'x') ? 0x27 : 0x07;
+			s[i++] = d + '0';
+		} while (v && i < sizeof s / sizeof s[0]);
+		if (f & 8) s[i++] = '-';
+		j = i; d = (f & 1) ? '0' : ' ';
+		while (!(f & 2) && j++ < w) putc_bfd(&pb, d);
+		do putc_bfd(&pb, s[--i]); while (i);
+		while (j++ < w) putc_bfd(&pb, d);
+	}
+
+	va_end(arp);
+
+	if (   pb.idx >= 0		/* Flush buffered characters to the file */
+		&& f_write(pb.fp, pb.buf, (UINT)pb.idx, &nw) == FR_OK
+		&& (UINT)pb.idx == nw) return pb.nchr;
+	return EOF;
+}
+
+#endif /* !_FS_READONLY */
+#endif /* _USE_STRFUNC */
Index: uKadecot/trunk/tools/makefsdata/ff.h
===================================================================
--- uKadecot/trunk/tools/makefsdata/ff.h	(revision 101)
+++ uKadecot/trunk/tools/makefsdata/ff.h	(revision 101)
@@ -0,0 +1,341 @@
+/*---------------------------------------------------------------------------/
+/  FatFs - FAT file system module include file  R0.10c    (C)ChaN, 2014
+/----------------------------------------------------------------------------/
+/ FatFs module is a generic FAT file system module for small embedded systems.
+/ This is a free software that opened for education, research and commercial
+/ developments under license policy of following terms.
+/
+/  Copyright (C) 2014, ChaN, all right reserved.
+/
+/ * The FatFs module is a free software and there is NO WARRANTY.
+/ * No restriction on use. You can use, modify and redistribute it for
+/   personal, non-profit or commercial product UNDER YOUR RESPONSIBILITY.
+/ * Redistributions of source code must retain the above copyright notice.
+/
+/----------------------------------------------------------------------------*/
+
+#ifndef _FATFS
+#define _FATFS	80376	/* Revision ID */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "integer.h"	/* Basic integer types */
+#include "ffconf.h"		/* FatFs configuration options */
+#if _FATFS != _FFCONF
+#error Wrong configuration file (ffconf.h).
+#endif
+
+
+
+/* Definitions of volume management */
+
+#if _MULTI_PARTITION		/* Multiple partition configuration */
+typedef struct {
+	BYTE pd;	/* Physical drive number */
+	BYTE pt;	/* Partition: 0:Auto detect, 1-4:Forced partition) */
+} PARTITION;
+extern PARTITION VolToPart[];	/* Volume - Partition resolution table */
+#define LD2PD(vol) (VolToPart[vol].pd)	/* Get physical drive number */
+#define LD2PT(vol) (VolToPart[vol].pt)	/* Get partition index */
+
+#else							/* Single partition configuration */
+#define LD2PD(vol) (BYTE)(vol)	/* Each logical drive is bound to the same physical drive number */
+#define LD2PT(vol) 0			/* Find first valid partition or in SFD */
+
+#endif
+
+
+
+/* Type of path name strings on FatFs API */
+
+#if _LFN_UNICODE			/* Unicode string */
+#if !_USE_LFN
+#error _LFN_UNICODE must be 0 at non-LFN cfg.
+#endif
+#ifndef _INC_TCHAR
+typedef WCHAR TCHAR;
+#define _T(x) L ## x
+#define _TEXT(x) L ## x
+#endif
+
+#else						/* ANSI/OEM string */
+#ifndef _INC_TCHAR
+typedef char TCHAR;
+#define _T(x) x
+#define _TEXT(x) x
+#endif
+
+#endif
+
+
+
+/* File system object structure (FATFS) */
+
+typedef struct {
+	BYTE	fs_type;		/* FAT sub-type (0:Not mounted) */
+	BYTE	drv;			/* Physical drive number */
+	BYTE	csize;			/* Sectors per cluster (1,2,4...128) */
+	BYTE	n_fats;			/* Number of FAT copies (1 or 2) */
+	BYTE	wflag;			/* win[] flag (b0:dirty) */
+	BYTE	fsi_flag;		/* FSINFO flags (b7:disabled, b0:dirty) */
+	WORD	id;				/* File system mount ID */
+	WORD	n_rootdir;		/* Number of root directory entries (FAT12/16) */
+#if _MAX_SS != _MIN_SS
+	WORD	ssize;			/* Bytes per sector (512, 1024, 2048 or 4096) */
+#endif
+#if _FS_REENTRANT
+	_SYNC_t	sobj;			/* Identifier of sync object */
+#endif
+#if !_FS_READONLY
+	DWORD	last_clust;		/* Last allocated cluster */
+	DWORD	free_clust;		/* Number of free clusters */
+#endif
+#if _FS_RPATH
+	DWORD	cdir;			/* Current directory start cluster (0:root) */
+#endif
+	DWORD	n_fatent;		/* Number of FAT entries, = number of clusters + 2 */
+	DWORD	fsize;			/* Sectors per FAT */
+	DWORD	volbase;		/* Volume start sector */
+	DWORD	fatbase;		/* FAT start sector */
+	DWORD	dirbase;		/* Root directory start sector (FAT32:Cluster#) */
+	DWORD	database;		/* Data start sector */
+	DWORD	winsect;		/* Current sector appearing in the win[] */
+	BYTE	win[_MAX_SS];	/* Disk access window for Directory, FAT (and file data at tiny cfg) */
+} FATFS;
+
+
+
+/* File object structure (FIL) */
+
+typedef struct {
+	FATFS*	fs;				/* Pointer to the related file system object (**do not change order**) */
+	WORD	id;				/* Owner file system mount ID (**do not change order**) */
+	BYTE	flag;			/* Status flags */
+	BYTE	err;			/* Abort flag (error code) */
+	DWORD	fptr;			/* File read/write pointer (Zeroed on file open) */
+	DWORD	fsize;			/* File size */
+	DWORD	sclust;			/* File start cluster (0:no cluster chain, always 0 when fsize is 0) */
+	DWORD	clust;			/* Current cluster of fpter (not valid when fprt is 0) */
+	DWORD	dsect;			/* Sector number appearing in buf[] (0:invalid) */
+#if !_FS_READONLY
+	DWORD	dir_sect;		/* Sector number containing the directory entry */
+	BYTE*	dir_ptr;		/* Pointer to the directory entry in the win[] */
+#endif
+#if _USE_FASTSEEK
+	DWORD*	cltbl;			/* Pointer to the cluster link map table (Nulled on file open) */
+#endif
+#if _FS_LOCK
+	UINT	lockid;			/* File lock ID origin from 1 (index of file semaphore table Files[]) */
+#endif
+#if !_FS_TINY
+	BYTE	buf[_MAX_SS];	/* File private data read/write window */
+#endif
+} FIL;
+
+
+
+/* Directory object structure (DIR) */
+
+typedef struct {
+	FATFS*	fs;				/* Pointer to the owner file system object (**do not change order**) */
+	WORD	id;				/* Owner file system mount ID (**do not change order**) */
+	WORD	index;			/* Current read/write index number */
+	DWORD	sclust;			/* Table start cluster (0:Root dir) */
+	DWORD	clust;			/* Current cluster */
+	DWORD	sect;			/* Current sector */
+	BYTE*	dir;			/* Pointer to the current SFN entry in the win[] */
+	BYTE*	fn;				/* Pointer to the SFN (in/out) {file[8],ext[3],status[1]} */
+#if _FS_LOCK
+	UINT	lockid;			/* File lock ID (index of file semaphore table Files[]) */
+#endif
+#if _USE_LFN
+	WCHAR*	lfn;			/* Pointer to the LFN working buffer */
+	WORD	lfn_idx;		/* Last matched LFN index number (0xFFFF:No LFN) */
+#endif
+} DIR;
+
+
+
+/* File status structure (FILINFO) */
+
+typedef struct {
+	DWORD	fsize;			/* File size */
+	WORD	fdate;			/* Last modified date */
+	WORD	ftime;			/* Last modified time */
+	BYTE	fattrib;		/* Attribute */
+	TCHAR	fname[13];		/* Short file name (8.3 format) */
+#if _USE_LFN
+	TCHAR*	lfname;			/* Pointer to the LFN buffer */
+	UINT 	lfsize;			/* Size of LFN buffer in TCHAR */
+#endif
+} FILINFO;
+
+
+
+/* File function return code (FRESULT) */
+
+typedef enum {
+	FR_OK = 0,				/* (0) Succeeded */
+	FR_DISK_ERR,			/* (1) A hard error occurred in the low level disk I/O layer */
+	FR_INT_ERR,				/* (2) Assertion failed */
+	FR_NOT_READY,			/* (3) The physical drive cannot work */
+	FR_NO_FILE,				/* (4) Could not find the file */
+	FR_NO_PATH,				/* (5) Could not find the path */
+	FR_INVALID_NAME,		/* (6) The path name format is invalid */
+	FR_DENIED,				/* (7) Access denied due to prohibited access or directory full */
+	FR_EXIST,				/* (8) Access denied due to prohibited access */
+	FR_INVALID_OBJECT,		/* (9) The file/directory object is invalid */
+	FR_WRITE_PROTECTED,		/* (10) The physical drive is write protected */
+	FR_INVALID_DRIVE,		/* (11) The logical drive number is invalid */
+	FR_NOT_ENABLED,			/* (12) The volume has no work area */
+	FR_NO_FILESYSTEM,		/* (13) There is no valid FAT volume */
+	FR_MKFS_ABORTED,		/* (14) The f_mkfs() aborted due to any parameter error */
+	FR_TIMEOUT,				/* (15) Could not get a grant to access the volume within defined period */
+	FR_LOCKED,				/* (16) The operation is rejected according to the file sharing policy */
+	FR_NOT_ENOUGH_CORE,		/* (17) LFN working buffer could not be allocated */
+	FR_TOO_MANY_OPEN_FILES,	/* (18) Number of open files > _FS_SHARE */
+	FR_INVALID_PARAMETER	/* (19) Given parameter is invalid */
+} FRESULT;
+
+
+
+/*--------------------------------------------------------------*/
+/* FatFs module application interface                           */
+
+FRESULT f_open (FIL* fp, const TCHAR* path, BYTE mode);				/* Open or create a file */
+FRESULT f_close (FIL* fp);											/* Close an open file object */
+FRESULT f_read (FIL* fp, void* buff, UINT btr, UINT* br);			/* Read data from a file */
+FRESULT f_write (FIL* fp, const void* buff, UINT btw, UINT* bw);	/* Write data to a file */
+FRESULT f_forward (FIL* fp, UINT(*func)(const BYTE*,UINT), UINT btf, UINT* bf);	/* Forward data to the stream */
+FRESULT f_lseek (FIL* fp, DWORD ofs);								/* Move file pointer of a file object */
+FRESULT f_truncate (FIL* fp);										/* Truncate file */
+FRESULT f_sync (FIL* fp);											/* Flush cached data of a writing file */
+FRESULT f_opendir (DIR* dp, const TCHAR* path);						/* Open a directory */
+FRESULT f_closedir (DIR* dp);										/* Close an open directory */
+FRESULT f_readdir (DIR* dp, FILINFO* fno);							/* Read a directory item */
+FRESULT f_mkdir (const TCHAR* path);								/* Create a sub directory */
+FRESULT f_unlink (const TCHAR* path);								/* Delete an existing file or directory */
+FRESULT f_rename (const TCHAR* path_old, const TCHAR* path_new);	/* Rename/Move a file or directory */
+FRESULT f_stat (const TCHAR* path, FILINFO* fno);					/* Get file status */
+FRESULT f_chmod (const TCHAR* path, BYTE value, BYTE mask);			/* Change attribute of the file/dir */
+FRESULT f_utime (const TCHAR* path, const FILINFO* fno);			/* Change times-tamp of the file/dir */
+FRESULT f_chdir (const TCHAR* path);								/* Change current directory */
+FRESULT f_chdrive (const TCHAR* path);								/* Change current drive */
+FRESULT f_getcwd (TCHAR* buff, UINT len);							/* Get current directory */
+FRESULT f_getfree (const TCHAR* path, DWORD* nclst, FATFS** fatfs);	/* Get number of free clusters on the drive */
+FRESULT f_getlabel (const TCHAR* path, TCHAR* label, DWORD* vsn);	/* Get volume label */
+FRESULT f_setlabel (const TCHAR* label);							/* Set volume label */
+FRESULT f_mount (FATFS* fs, const TCHAR* path, BYTE opt);			/* Mount/Unmount a logical drive */
+FRESULT f_mkfs (const TCHAR* path, BYTE sfd, UINT au);				/* Create a file system on the volume */
+FRESULT f_fdisk (BYTE pdrv, const DWORD szt[], void* work);			/* Divide a physical drive into some partitions */
+int f_putc (TCHAR c, FIL* fp);										/* Put a character to the file */
+int f_puts (const TCHAR* str, FIL* cp);								/* Put a string to the file */
+int f_printf (FIL* fp, const TCHAR* str, ...);						/* Put a formatted string to the file */
+TCHAR* f_gets (TCHAR* buff, int len, FIL* fp);						/* Get a string from the file */
+
+#define f_eof(fp) ((int)((fp)->fptr == (fp)->fsize))
+#define f_error(fp) ((fp)->err)
+#define f_tell(fp) ((fp)->fptr)
+#define f_size(fp) ((fp)->fsize)
+
+#ifndef EOF
+#define EOF (-1)
+#endif
+
+
+
+
+/*--------------------------------------------------------------*/
+/* Additional user defined functions                            */
+
+/* RTC function */
+#if !_FS_READONLY && !_FS_NORTC
+DWORD get_fattime (void);
+#endif
+
+/* Unicode support functions */
+#if _USE_LFN							/* Unicode - OEM code conversion */
+WCHAR ff_convert (WCHAR chr, UINT dir);	/* OEM-Unicode bidirectional conversion */
+WCHAR ff_wtoupper (WCHAR chr);			/* Unicode upper-case conversion */
+#if _USE_LFN == 3						/* Memory functions */
+void* ff_memalloc (UINT msize);			/* Allocate memory block */
+void ff_memfree (void* mblock);			/* Free memory block */
+#endif
+#endif
+
+/* Sync functions */
+#if _FS_REENTRANT
+int ff_cre_syncobj (BYTE vol, _SYNC_t* sobj);	/* Create a sync object */
+int ff_req_grant (_SYNC_t sobj);				/* Lock sync object */
+void ff_rel_grant (_SYNC_t sobj);				/* Unlock sync object */
+int ff_del_syncobj (_SYNC_t sobj);				/* Delete a sync object */
+#endif
+
+
+
+
+/*--------------------------------------------------------------*/
+/* Flags and offset address                                     */
+
+
+/* File access control and file status flags (FIL.flag) */
+
+#define	FA_READ				0x01
+#define	FA_OPEN_EXISTING	0x00
+
+#if !_FS_READONLY
+#define	FA_WRITE			0x02
+#define	FA_CREATE_NEW		0x04
+#define	FA_CREATE_ALWAYS	0x08
+#define	FA_OPEN_ALWAYS		0x10
+#define FA__WRITTEN			0x20
+#define FA__DIRTY			0x40
+#endif
+
+
+/* FAT sub type (FATFS.fs_type) */
+
+#define FS_FAT12	1
+#define FS_FAT16	2
+#define FS_FAT32	3
+
+
+/* File attribute bits for directory entry */
+
+#define	AM_RDO	0x01	/* Read only */
+#define	AM_HID	0x02	/* Hidden */
+#define	AM_SYS	0x04	/* System */
+#define	AM_VOL	0x08	/* Volume label */
+#define AM_LFN	0x0F	/* LFN entry */
+#define AM_DIR	0x10	/* Directory */
+#define AM_ARC	0x20	/* Archive */
+#define AM_MASK	0x3F	/* Mask of defined bits */
+
+
+/* Fast seek feature */
+#define CREATE_LINKMAP	0xFFFFFFFF
+
+
+
+/*--------------------------------*/
+/* Multi-byte word access macros  */
+
+#if _WORD_ACCESS == 1	/* Enable word access to the FAT structure */
+#define	LD_WORD(ptr)		(WORD)(*(WORD*)(BYTE*)(ptr))
+#define	LD_DWORD(ptr)		(DWORD)(*(DWORD*)(BYTE*)(ptr))
+#define	ST_WORD(ptr,val)	*(WORD*)(BYTE*)(ptr)=(WORD)(val)
+#define	ST_DWORD(ptr,val)	*(DWORD*)(BYTE*)(ptr)=(DWORD)(val)
+#else					/* Use byte-by-byte access to the FAT structure */
+#define	LD_WORD(ptr)		(WORD)(((WORD)*((BYTE*)(ptr)+1)<<8)|(WORD)*(BYTE*)(ptr))
+#define	LD_DWORD(ptr)		(DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr))
+#define	ST_WORD(ptr,val)	*(BYTE*)(ptr)=(BYTE)(val); *((BYTE*)(ptr)+1)=(BYTE)((WORD)(val)>>8)
+#define	ST_DWORD(ptr,val)	*(BYTE*)(ptr)=(BYTE)(val); *((BYTE*)(ptr)+1)=(BYTE)((WORD)(val)>>8); *((BYTE*)(ptr)+2)=(BYTE)((DWORD)(val)>>16); *((BYTE*)(ptr)+3)=(BYTE)((DWORD)(val)>>24)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FATFS */
Index: uKadecot/trunk/tools/makefsdata/ffconf.h
===================================================================
--- uKadecot/trunk/tools/makefsdata/ffconf.h	(revision 101)
+++ uKadecot/trunk/tools/makefsdata/ffconf.h	(revision 101)
@@ -0,0 +1,270 @@
+/*---------------------------------------------------------------------------/
+/  FatFs - FAT file system module configuration file  R0.10c (C)ChaN, 2014
+/---------------------------------------------------------------------------*/
+
+#define _FFCONF 80376	/* Revision ID */
+
+/*---------------------------------------------------------------------------/
+/ Functions and Buffer Configurations
+/---------------------------------------------------------------------------*/
+
+#define	_FS_TINY		0
+/* This option switches tiny buffer configuration. (0:Normal or 1:Tiny)
+/  At the tiny configuration, size of the file object (FIL) is reduced _MAX_SS
+/  bytes. Instead of private sector buffer eliminated from the file object,
+/  common sector buffer in the file system object (FATFS) is used for the file
+/  data transfer. */
+
+
+#define _FS_READONLY	0
+/* This option switches read-only configuration. (0:Read/Write or 1:Read-only)
+/  Read-only configuration removes basic writing API functions, f_write(),
+/  f_sync(), f_unlink(), f_mkdir(), f_chmod(), f_rename(), f_truncate(),
+/  f_getfree() and optional writing functions as well. */
+
+
+#define _FS_MINIMIZE	0
+/* This option defines minimization level to remove some API functions.
+/
+/   0: All basic functions are enabled.
+/   1: f_stat(), f_getfree(), f_unlink(), f_mkdir(), f_chmod(), f_utime(),
+/      f_truncate() and f_rename() function are removed.
+/   2: f_opendir(), f_readdir() and f_closedir() are removed in addition to 1.
+/   3: f_lseek() function is removed in addition to 2. */
+
+
+#define	_USE_STRFUNC	2
+/* This option switches string functions, f_gets(), f_putc(), f_puts() and
+/  f_printf().
+/
+/  0: Disable string functions.
+/  1: Enable without LF-CRLF conversion.
+/  2: Enable with LF-CRLF conversion. */
+
+
+#define	_USE_MKFS		1
+/* This option switches f_mkfs() function. (0:Disable or 1:Enable)
+/  To enable it, also _FS_READONLY need to be set to 0. */
+
+
+#define	_USE_FASTSEEK	0
+/* This option switches fast seek feature. (0:Disable or 1:Enable) */
+
+
+#define _USE_LABEL		1
+/* This option switches volume label functions, f_getlabel() and f_setlabel().
+/  (0:Disable or 1:Enable) */
+
+
+#define	_USE_FORWARD	0
+/* This option switches f_forward() function. (0:Disable or 1:Enable) */
+/* To enable it, also _FS_TINY need to be set to 1. */
+
+
+/*---------------------------------------------------------------------------/
+/ Locale and Namespace Configurations
+/---------------------------------------------------------------------------*/
+
+#define _CODE_PAGE	932
+/* This option specifies the OEM code page to be used on the target system.
+/  Incorrect setting of the code page can cause a file open failure.
+/
+/   932  - Japanese Shift_JIS (DBCS, OEM, Windows)
+/   936  - Simplified Chinese GBK (DBCS, OEM, Windows)
+/   949  - Korean (DBCS, OEM, Windows)
+/   950  - Traditional Chinese Big5 (DBCS, OEM, Windows)
+/   1250 - Central Europe (Windows)
+/   1251 - Cyrillic (Windows)
+/   1252 - Latin 1 (Windows)
+/   1253 - Greek (Windows)
+/   1254 - Turkish (Windows)
+/   1255 - Hebrew (Windows)
+/   1256 - Arabic (Windows)
+/   1257 - Baltic (Windows)
+/   1258 - Vietnam (OEM, Windows)
+/   437  - U.S. (OEM)
+/   720  - Arabic (OEM)
+/   737  - Greek (OEM)
+/   775  - Baltic (OEM)
+/   850  - Multilingual Latin 1 (OEM)
+/   858  - Multilingual Latin 1 + Euro (OEM)
+/   852  - Latin 2 (OEM)
+/   855  - Cyrillic (OEM)
+/   866  - Russian (OEM)
+/   857  - Turkish (OEM)
+/   862  - Hebrew (OEM)
+/   874  - Thai (OEM, Windows)
+/   1    - ASCII (No extended character. Valid for only non-LFN configuration.) */
+
+
+#define	_USE_LFN	1
+#define	_MAX_LFN	255
+/* The _USE_LFN option switches the LFN feature.
+/
+/   0: Disable LFN feature. _MAX_LFN has no effect.
+/   1: Enable LFN with static working buffer on the BSS. Always NOT thread-safe.
+/   2: Enable LFN with dynamic working buffer on the STACK.
+/   3: Enable LFN with dynamic working buffer on the HEAP.
+/
+/  When enable the LFN feature, Unicode handling functions (option/unicode.c) must
+/  be added to the project. The LFN working buffer occupies (_MAX_LFN + 1) * 2 bytes.
+/  When use stack for the working buffer, take care on stack overflow. When use heap
+/  memory for the working buffer, memory management functions, ff_memalloc() and
+/  ff_memfree(), must be added to the project. */
+
+
+#define	_LFN_UNICODE	0
+/* This option switches character encoding on the API. (0:ANSI/OEM or 1:Unicode)
+/  To use Unicode string for the path name, enable LFN feature and set _LFN_UNICODE
+/  to 1. This option also affects behavior of string I/O functions. */
+
+
+#define _STRF_ENCODE	3
+/* When _LFN_UNICODE is 1, this option selects the character encoding on the file to
+/  be read/written via string I/O functions, f_gets(), f_putc(), f_puts and f_printf().
+/
+/  0: ANSI/OEM
+/  1: UTF-16LE
+/  2: UTF-16BE
+/  3: UTF-8
+/
+/  When _LFN_UNICODE is 0, this option has no effect. */
+
+
+#define _FS_RPATH	2
+/* This option configures relative path feature.
+/
+/   0: Disable relative path feature and remove related functions.
+/   1: Enable relative path feature. f_chdir() and f_chdrive() are available.
+/   2: f_getcwd() function is available in addition to 1.
+/
+/  Note that directory items read via f_readdir() are affected by this option. */
+
+
+/*---------------------------------------------------------------------------/
+/ Drive/Volume Configurations
+/---------------------------------------------------------------------------*/
+
+#define _VOLUMES	8
+/* Number of volumes (logical drives) to be used. */
+
+
+#define _STR_VOLUME_ID	0
+#define _VOLUME_STRS	"RAM","NAND","CF","SD1","SD2","USB1","USB2","USB3"
+/* _STR_VOLUME_ID option switches string volume ID feature.
+/  When _STR_VOLUME_ID is set to 1, also pre-defined strings can be used as drive
+/  number in the path name. _VOLUME_STRS defines the drive ID strings for each
+/  logical drives. Number of items must be equal to _VOLUMES. Valid characters for
+/  the drive ID strings are: A-Z and 0-9. */
+
+
+#define	_MULTI_PARTITION	0
+/* This option switches multi-partition feature. By default (0), each logical drive
+/  number is bound to the same physical drive number and only an FAT volume found on
+/  the physical drive will be mounted. When multi-partition feature is enabled (1),
+/  each logical drive number is bound to arbitrary physical drive and partition
+/  listed in the VolToPart[]. Also f_fdisk() funciton will be enabled. */
+
+
+#define	_MIN_SS		512
+#define	_MAX_SS		2048
+/* These options configure the range of sector size to be supported. (512, 1024,
+/  2048 or 4096) Always set both 512 for most systems, all type of memory cards and
+/  harddisk. But a larger value may be required for on-board flash memory and some
+/  type of optical media. When _MAX_SS is larger than _MIN_SS, FatFs is configured
+/  to variable sector size and GET_SECTOR_SIZE command must be implemented to the
+/  disk_ioctl() function. */
+
+
+#define	_USE_TRIM	0
+/* This option switches ATA-TRIM feature. (0:Disable or 1:Enable)
+/  To enable Trim feature, also CTRL_TRIM command should be implemented to the
+/  disk_ioctl() function. */
+
+
+#define _FS_NOFSINFO	0
+/* If you need to know correct free space on the FAT32 volume, set bit 0 of this
+/  option, and f_getfree() function at first time after volume mount will force
+/  a full FAT scan. Bit 1 controls the use of last allocated cluster number.
+/
+/  bit0=0: Use free cluster count in the FSINFO if available.
+/  bit0=1: Do not trust free cluster count in the FSINFO.
+/  bit1=0: Use last allocated cluster number in the FSINFO if available.
+/  bit1=1: Do not trust last allocated cluster number in the FSINFO.
+*/
+
+
+
+/*---------------------------------------------------------------------------/
+/ System Configurations
+/---------------------------------------------------------------------------*/
+
+#define _FS_NORTC	0
+#define _NORTC_MON	10
+#define _NORTC_MDAY	15
+#define _NORTC_YEAR	2014
+/* The _FS_NORTC option switches timestamp feature. If the system does not have
+/  an RTC function or valid timestamp is not needed, set _FS_NORTC to 1 to disable
+/  the timestamp feature. All objects modified by FatFs will have a fixed timestamp
+/  defined by _NORTC_MON, _NORTC_MDAY and _NORTC_YEAR.
+/  When timestamp feature is enabled (_FS_NORTC	== 0), get_fattime() function need
+/  to be added to the project to read current time form RTC. _NORTC_MON,
+/  _NORTC_MDAY and _NORTC_YEAR have no effect. 
+/  These options have no effect at read-only configuration (_FS_READONLY == 1). */
+
+
+#define	_FS_LOCK	0
+/* The _FS_LOCK option switches file lock feature to control duplicated file open
+/  and illegal operation to open objects. This option must be 0 when _FS_READONLY
+/  is 1.
+/
+/  0:  Disable file lock feature. To avoid volume corruption, application program
+/      should avoid illegal open, remove and rename to the open objects.
+/  >0: Enable file lock feature. The value defines how many files/sub-directories
+/      can be opened simultaneously under file lock control. Note that the file
+/      lock feature is independent of re-entrancy. */
+
+
+#define _FS_REENTRANT	0
+#define _FS_TIMEOUT		1000
+#define	_SYNC_t			HANDLE
+/* The _FS_REENTRANT option switches the re-entrancy (thread safe) of the FatFs
+/  module itself. Note that regardless of this option, file access to different
+/  volume is always re-entrant and volume control functions, f_mount(), f_mkfs()
+/  and f_fdisk() function, are always not re-entrant. Only file/directory access
+/  to the same volume is under control of this feature.
+/
+/   0: Disable re-entrancy. _FS_TIMEOUT and _SYNC_t have no effect.
+/   1: Enable re-entrancy. Also user provided synchronization handlers,
+/      ff_req_grant(), ff_rel_grant(), ff_del_syncobj() and ff_cre_syncobj()
+/      function, must be added to the project. Samples are available in
+/      option/syscall.c.
+/
+/  The _FS_TIMEOUT defines timeout period in unit of time tick.
+/  The _SYNC_t defines O/S dependent sync object type. e.g. HANDLE, ID, OS_EVENT*,
+/  SemaphoreHandle_t and etc.. */
+
+
+#define _WORD_ACCESS	1
+/* The _WORD_ACCESS option is an only platform dependent option. It defines
+/  which access method is used to the word data on the FAT volume.
+/
+/   0: Byte-by-byte access. Always compatible with all platforms.
+/   1: Word access. Do not choose this unless under both the following conditions.
+/
+/  * Address misaligned memory access is always allowed to ALL instructions.
+/  * Byte order on the memory is little-endian.
+/
+/  If it is the case, _WORD_ACCESS can also be set to 1 to reduce code size.
+/  Following table shows allowable settings of some processor types.
+/
+/   ARM7TDMI    0           ColdFire    0           V850E       0
+/   Cortex-M3   0           Z80         0/1         V850ES      0/1
+/   Cortex-M0   0           x86         0/1         TLCS-870    0/1
+/   AVR         0/1         RX600(LE)   0/1         TLCS-900    0/1
+/   AVR32       0           RL78        0           R32C        0
+/   PIC18       0/1         SH-2        0           M16C        0/1
+/   PIC24       0           H8S         0           MSP430      0
+/   PIC32       0           H8/300H     0           8051        0/1
+*/
+
Index: uKadecot/trunk/tools/makefsdata/integer.h
===================================================================
--- uKadecot/trunk/tools/makefsdata/integer.h	(revision 101)
+++ uKadecot/trunk/tools/makefsdata/integer.h	(revision 101)
@@ -0,0 +1,33 @@
+/*-------------------------------------------*/
+/* Integer type definitions for FatFs module */
+/*-------------------------------------------*/
+
+#ifndef _FF_INTEGER
+#define _FF_INTEGER
+
+#ifdef _WIN32	/* FatFs development platform */
+
+#include <windows.h>
+#include <tchar.h>
+
+#else			/* Embedded platform */
+
+/* This type MUST be 8 bit */
+typedef unsigned char	BYTE;
+
+/* These types MUST be 16 bit */
+typedef short			SHORT;
+typedef unsigned short	WORD;
+typedef unsigned short	WCHAR;
+
+/* These types MUST be 16 bit or 32 bit */
+typedef int				INT;
+typedef unsigned int	UINT;
+
+/* These types MUST be 32 bit */
+typedef long			LONG;
+typedef unsigned long	DWORD;
+
+#endif
+
+#endif
Index: uKadecot/trunk/tools/makefsdata/main.c
===================================================================
--- uKadecot/trunk/tools/makefsdata/main.c	(revision 101)
+++ uKadecot/trunk/tools/makefsdata/main.c	(revision 101)
@@ -0,0 +1,456 @@
+/*------------------------------------------------------------------------/
+/  The Main Development Bench of FatFs Module
+/-------------------------------------------------------------------------/
+/
+/  Copyright (C) 2014, ChaN, all right reserved.
+/
+/ * This software is a free software and there is NO WARRANTY.
+/ * No restriction on use. You can use, modify and redistribute it for
+/   personal, non-profit or commercial products UNDER YOUR RESPONSIBILITY.
+/ * Redistributions of source code must retain the above copyright notice.
+/
+/-------------------------------------------------------------------------*/
+
+
+#include <string.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <locale.h>
+#include "diskio.h"
+#include "ff.h"
+#include "zlib.h"
+
+int assign_drives(void);
+
+
+#ifdef UNICODE
+#if !_LFN_UNICODE
+#error Configuration mismatch. _LFN_UNICODE must be 1.
+#endif
+#else
+#if _LFN_UNICODE
+#error Configuration mismatch. _LFN_UNICODE must be 0.
+#endif
+#endif
+
+
+
+#if _MULTI_PARTITION	/* Volume - partition resolution table (Example) */
+PARTITION VolToPart[] = {
+	{ 0, 0 },	/* "0:" <== Disk# 0, auto detect */
+	{ 1, 0 },	/* "1:" <== Disk# 1, auto detect */
+	{ 2, 0 },	/* "2:" <== Disk# 2, auto detect */
+	{ 3, 1 },	/* "3:" <== Disk# 3, 1st partition */
+	{ 3, 2 },	/* "4:" <== Disk# 3, 2nd partition */
+	{ 3, 3 },	/* "5:" <== Disk# 3, 3rd partition */
+	{ 4, 0 },	/* "6:" <== Disk# 4, auto detect */
+	{ 5, 0 }	/* "7:" <== Disk# 5, auto detect */
+};
+#endif
+
+
+/*---------------------------------------------------------*/
+/* Work Area                                               */
+/*---------------------------------------------------------*/
+
+
+LONGLONG AccSize;			/* Work register for scan_files() */
+WORD AccFiles, AccDirs;
+FILINFO Finfo;
+#if _USE_LFN
+TCHAR LFName[256];
+#endif
+
+TCHAR Line[300];			/* Console input/output buffer */
+HANDLE hCon, hKey;
+
+FATFS FatFs[_VOLUMES];		/* File system object for logical drive */
+BYTE InBuff[262144];		/* Working buffer */
+BYTE OutBuff[262144];		/* Working buffer */
+
+#if _USE_FASTSEEK
+DWORD SeekTbl[16];			/* Link map table for fast seek feature */
+#endif
+
+
+/*---------------------------------------------------------*/
+/* User Provided RTC Function for FatFs module             */
+/*---------------------------------------------------------*/
+/* This is a real time clock service to be called from     */
+/* FatFs module. Any valid time must be returned even if   */
+/* the system does not support an RTC.                     */
+/* This function is not required in read-only cfg.         */
+
+DWORD get_fattime(void)
+{
+	SYSTEMTIME tm;
+
+	/* Get local time */
+	GetLocalTime(&tm);
+
+	/* Pack date and time into a DWORD variable */
+	return 	  ((DWORD)(tm.wYear - 1980) << 25)
+		| ((DWORD)tm.wMonth << 21)
+		| ((DWORD)tm.wDay << 16)
+		| (WORD)(tm.wHour << 11)
+		| (WORD)(tm.wMinute << 5)
+		| (WORD)(tm.wSecond >> 1);
+}
+
+
+
+/*--------------------------------------------------------------------------*/
+/* Monitor                                                                  */
+
+/*----------------------------------------------*/
+/* Get a value of the string                    */
+/*----------------------------------------------*/
+/*	"123 -5   0x3ff 0b1111 0377  w "
+^                           1st call returns 123 and next ptr
+^                        2nd call returns -5 and next ptr
+^                3rd call returns 1023 and next ptr
+^         4th call returns 15 and next ptr
+^    5th call returns 255 and next ptr
+^ 6th call fails and returns 0
+*/
+
+int xatoi(			/* 0:Failed, 1:Successful */
+	TCHAR **str,	/* Pointer to pointer to the string */
+	long *res		/* Pointer to a valiable to store the value */
+	)
+{
+	unsigned long val;
+	unsigned char r, s = 0;
+	TCHAR c;
+
+
+	*res = 0;
+	while((c = **str) == ' ') (*str)++;	/* Skip leading spaces */
+
+	if(c == '-') {		/* negative? */
+		s = 1;
+		c = *(++(*str));
+	}
+
+	if(c == '0') {
+		c = *(++(*str));
+		switch(c) {
+		case 'x':		/* hexdecimal */
+			r = 16; c = *(++(*str));
+			break;
+		case 'b':		/* binary */
+			r = 2; c = *(++(*str));
+			break;
+		default:
+			if(c <= ' ') return 1;	/* single zero */
+			if(c < '0' || c > '9') return 0;	/* invalid char */
+			r = 8;		/* octal */
+		}
+	}
+	else {
+		if(c < '0' || c > '9') return 0;	/* EOL or invalid char */
+		r = 10;			/* decimal */
+	}
+
+	val = 0;
+	while(c > ' ') {
+		if(c >= 'a') c -= 0x20;
+		c -= '0';
+		if(c >= 17) {
+			c -= 7;
+			if(c <= 9) return 0;	/* invalid char */
+		}
+		if(c >= r) return 0;		/* invalid char for current radix */
+		val = val * r + c;
+		c = *(++(*str));
+	}
+	if(s) val = 0 - val;			/* apply sign if needed */
+
+	*res = val;
+	return 1;
+}
+
+
+/*----------------------------------------------*/
+/* Dump a block of byte array                   */
+
+void put_dump(
+	const unsigned char* buff,	/* Pointer to the byte array to be dumped */
+	unsigned long addr,			/* Heading address value */
+	int cnt						/* Number of bytes to be dumped */
+	)
+{
+	int i;
+
+
+	_tprintf(_T("%08lX:"), addr);
+
+	for(i = 0; i < cnt; i++)
+		_tprintf(_T(" %02X"), buff[i]);
+
+	_puttchar(' ');
+	for(i = 0; i < cnt; i++)
+		_puttchar((TCHAR)((buff[i] >= ' ' && buff[i] <= '~') ? buff[i] : '.'));
+
+	_puttchar('\n');
+}
+
+void put_rc(const TCHAR *func, FRESULT rc)
+{
+	const TCHAR *p =
+		_T("OK\0DISK_ERR\0INT_ERR\0NOT_READY\0NO_FILE\0NO_PATH\0INVALID_NAME\0")
+		_T("DENIED\0EXIST\0INVALID_OBJECT\0WRITE_PROTECTED\0INVALID_DRIVE\0")
+		_T("NOT_ENABLED\0NO_FILE_SYSTEM\0MKFS_ABORTED\0TIMEOUT\0LOCKED\0")
+		_T("NOT_ENOUGH_CORE\0TOO_MANY_OPEN_FILES\0");
+	FRESULT i;
+
+	for(i = 0; i != rc && *p; i++) {
+		while(*p++);
+	}
+	_tprintf(_T("%s() =>%u FR_%s\n"), func, (UINT)rc, p);
+}
+
+void xcopy(TCHAR *path)
+{
+	TCHAR subpath[_MAX_PATH];
+	TCHAR temp[_MAX_PATH];
+	WIN32_FIND_DATA lp;
+	FRESULT res;
+	FIL file[2];			/* File objects */
+	DWORD len, wlen;
+	UINT s2, cnt;
+	HANDLE h;
+	FILINFO fi;
+	SYSTEMTIME st;
+	z_stream stream;
+
+	_tcscpy_s(temp, sizeof(temp), path);
+	h = FindFirstFile(temp, &lp);
+	if(h == INVALID_HANDLE_VALUE)
+		return;
+
+	temp[strlen(temp) - 1] = '\0';
+	do
+	{
+		if((lp.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
+			&& strcmp(lp.cFileName, "..") != 0 && strcmp(lp.cFileName, ".") != 0)
+		{
+			if((res = f_mkdir(lp.cFileName)) != RES_OK)
+				put_rc("f_mkdir", res);
+
+			FileTimeToSystemTime(&lp.ftLastWriteTime, &st);
+			fi.fdate = (WORD)(((st.wYear - 1980) * 512U) | st.wMonth * 32U | st.wDay);
+			fi.ftime = (WORD)(st.wHour * 2048U | st.wMinute * 32U | st.wSecond / 2U);
+			if((res = f_utime(lp.cFileName, &fi)) != RES_OK)
+				put_rc("f_utime", res);
+
+			_stprintf_s(subpath, sizeof(subpath), _T("%s%s\\*"), temp, lp.cFileName);
+			if((res = f_chdir(lp.cFileName)) != RES_OK)
+				put_rc("f_chdir", res);
+			xcopy(subpath);
+			if((res = f_chdir(_T(".."))) != RES_OK)
+				put_rc("f_chdir", res);
+		}
+		if((lp.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != FILE_ATTRIBUTE_DIRECTORY)
+		{
+			HANDLE fh;
+
+			res = -1;
+			_stprintf_s(subpath, sizeof(subpath), "%s%s", temp, lp.cFileName);
+			fh = CreateFile(subpath, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
+			if(fh != INVALID_HANDLE_VALUE) {
+				if(ReadFile(fh, InBuff, sizeof InBuff, &len, 0))
+					res = FR_OK;
+				CloseHandle(fh);
+			}
+
+			while (res == FR_OK) {
+				/* ³k */
+				memset(&stream, 0, sizeof(stream));
+				/* allocate deflate memory, set up for gzip compression */
+				stream.zalloc = Z_NULL;
+				stream.zfree = Z_NULL;
+				stream.opaque = Z_NULL;
+				stream.next_in = InBuff;
+				stream.avail_in = len;
+				stream.next_out = OutBuff;
+				stream.avail_out = sizeof(OutBuff);
+				res = deflateInit2(&stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED,
+					MAX_WBITS + 16, MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY);
+				if (res != Z_OK) {
+					_tprintf(_T("out of memory %d"), res);
+					break;
+				}
+
+				res = deflate(&stream, Z_FULL_FLUSH);
+				if (res == Z_STREAM_ERROR) {
+					_tprintf(_T("internal error: deflate stream corrupt %d"), res);
+					break;
+				}
+
+				deflateEnd(&stream);
+
+				len = stream.total_out;
+				break;
+			}
+
+			if(res == FR_OK){
+				if((res = f_open(&file[0], lp.cFileName, FA_CREATE_ALWAYS | FA_WRITE)) != RES_OK)
+					put_rc("f_open", res);
+				wlen = 0;
+				while(len) {
+					if((UINT)len >= sizeof OutBuff) {
+						cnt = sizeof OutBuff;
+						len -= sizeof OutBuff;
+					}
+					else {
+						cnt = len;
+						len = 0;
+					}
+					res = f_write(&file[0], OutBuff, cnt, &s2);
+					if(res != FR_OK) {
+						put_rc("f_write", res);
+						break;
+					}
+					wlen += s2;
+					if(cnt != s2)
+						break;
+				}
+				_tprintf(_T("%lu bytes written.\n"), wlen);
+				if((res = f_close(&file[0])) != RES_OK)
+					put_rc("f_close", res);
+
+				if((res = f_chmod(lp.cFileName, AM_RDO | AM_ARC, AM_RDO | AM_ARC | AM_SYS | AM_HID)) != RES_OK)
+					put_rc("f_chmod", res);
+
+				FileTimeToSystemTime(&lp.ftLastWriteTime, &st);
+				fi.fdate = (WORD)(((st.wYear - 1980) * 512U) | st.wMonth * 32U | st.wDay);
+				fi.ftime = (WORD)(st.wHour * 2048U | st.wMinute * 32U | st.wSecond / 2U);
+				if((res = f_utime(lp.cFileName, &fi)) != RES_OK)
+					put_rc("f_utime", res);
+			}
+		}
+	} while(FindNextFile(h, &lp));
+
+	FindClose(h);
+}
+
+FRESULT scan_files (
+	char* path,        /* Start node to be scanned (also used as work area) */
+	int size
+)
+{
+	FRESULT res;
+	FILINFO fno;
+	DIR dir;
+	int i;
+	char *fn;   /* This function assumes non-Unicode configuration */
+#if _USE_LFN
+	static char lfn[_MAX_LFN + 1];   /* Buffer to store the LFN */
+	fno.lfname = lfn;
+	fno.lfsize = sizeof lfn;
+#endif
+
+	res = f_opendir(&dir, path);                       /* Open the directory */
+	if (res == FR_OK) {
+		i = strlen(path);
+		for (;;) {
+			res = f_readdir(&dir, &fno);                   /* Read a directory item */
+			if (res != FR_OK || fno.fname[0] == 0) break;  /* Break on error or end of dir */
+			if (fno.fname[0] == '.') continue;             /* Ignore dot entry */
+#if _USE_LFN
+			fn = *fno.lfname ? fno.lfname : fno.fname;
+#else
+			fn = fno.fname;
+#endif
+			if (fno.fattrib & AM_DIR) {                    /* It is a directory */
+				sprintf_s(&path[i], size -i, "/%s", fn);
+				res = scan_files(path, size);
+				path[i] = 0;
+				if (res != FR_OK) break;
+			} else {                                       /* It is a file. */
+				printf("%s/%s\n", path, fn);
+			}
+		}
+		f_closedir(&dir);
+	}
+
+	return res;
+}
+
+int _tmain(int argc, TCHAR *argv[])
+{
+	TCHAR pool[50];
+	FRESULT res;
+	BYTE pdrv = 0;
+	WORD w;
+	DWORD dw;
+	char path[256] = ".";
+	FATFS *fs;
+	DWORD fre_clust, fre_sect, tot_sect;
+
+	_stprintf_s(pool, sizeof(pool), _T(".%u"), _CODE_PAGE);
+	_tsetlocale(LC_CTYPE, pool);
+
+	_tprintf(_T("FatFs module test monitor (%s, CP:%u/%s)\n\n"),
+		_USE_LFN ? _T("LFN") : _T("SFN"),
+		_CODE_PAGE,
+		_LFN_UNICODE ? _T("Unicode") : _T("ANSI"));
+
+	_stprintf_s(pool, sizeof(pool), _T("FatFs debug console (%s, CP:%u/%s)"),
+		_USE_LFN ? _T("LFN") : _T("SFN"),
+		_CODE_PAGE,
+		_LFN_UNICODE ? _T("Unicode") : _T("ANSI"));
+	SetConsoleTitle(pool);
+
+	assign_drives();	/* Find physical drives on the PC */
+
+#if _MULTI_PARTITION
+	_tprintf(_T("\nMultiple partition feature is enabled. Each logical drive is tied to the patition as follows:\n"));
+	for(cnt = 0; cnt < sizeof VolToPart / sizeof(PARTITION); cnt++) {
+		const TCHAR *pn[] = { _T("auto detect"), _T("1st partition"), _T("2nd partition"), _T("3rd partition"), _T("4th partition") };
+
+		_tprintf(_T("\"%u:\" <== Disk# %u, %s\n"), cnt, VolToPart[cnt].pd, pn[VolToPart[cnt].pt]);
+	}
+	_tprintf(_T("\n"));
+#else
+	_tprintf(_T("\nMultiple partition feature is disabled.\nEach logical drive is tied to the same physical drive number.\n\n"));
+#endif
+
+#if _USE_LFN
+	Finfo.lfname = LFName;
+	Finfo.lfsize = sizeof LFName;
+#endif
+
+	res = disk_initialize(pdrv);
+	_tprintf(_T("rc=%d\n"), res);
+	if(disk_ioctl(pdrv, GET_SECTOR_SIZE, &w) == RES_OK)
+		_tprintf(_T("Sector size = %u\n"), w);
+	if(disk_ioctl(pdrv, GET_SECTOR_COUNT, &dw) == RES_OK)
+		_tprintf(_T("Number of sectors = %u\n"), dw);
+
+	if((res = f_mount(&FatFs[0], _T(""), 0)) != RES_OK)
+		put_rc("f_mount", res);
+
+	if((res = f_mkfs(_T(""), 1, 0)) != RES_OK)
+		put_rc("f_mkfs", res);
+
+	xcopy(_T("httpd-fs\\*"));
+
+	if(disk_ioctl(0, 201, _T("httpd-fs.bin")) == RES_OK)
+		_tprintf(_T("Ok\n"));
+
+	if((res = scan_files(path, sizeof(path))) != RES_OK)
+		put_rc("scan_files", res);
+
+	/* Get volume information and free clusters of drive 1 */
+	if(f_getfree(_T("0:"), &fre_clust, &fs) == RES_OK){
+		/* Get total sectors and free sectors */
+		tot_sect = (fs->n_fatent - 2) * fs->csize;
+		fre_sect = fre_clust * fs->csize;
+
+		/* Print the free space (assuming 512 bytes/sector) */
+		_tprintf(_T("%10lu KB total drive space.\n%10lu KB available.\n"),
+			tot_sect / 2, fre_sect / 2);;
+	}
+}
Index: uKadecot/trunk/tools/makefsdata/makefsdata.sln
===================================================================
--- uKadecot/trunk/tools/makefsdata/makefsdata.sln	(revision 101)
+++ uKadecot/trunk/tools/makefsdata/makefsdata.sln	(revision 101)
@@ -0,0 +1,28 @@
+﻿
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.31101.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makefsdata", "makefsdata.vcxproj", "{5F923912-3171-4047-9C5A-37E352D460F5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "..\zlib\zlib.vcxproj", "{3FBC7619-AF55-4664-89F5-FE1D40BBB323}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{5F923912-3171-4047-9C5A-37E352D460F5}.Debug|Win32.ActiveCfg = Debug|Win32
+		{5F923912-3171-4047-9C5A-37E352D460F5}.Debug|Win32.Build.0 = Debug|Win32
+		{5F923912-3171-4047-9C5A-37E352D460F5}.Release|Win32.ActiveCfg = Release|Win32
+		{5F923912-3171-4047-9C5A-37E352D460F5}.Release|Win32.Build.0 = Release|Win32
+		{3FBC7619-AF55-4664-89F5-FE1D40BBB323}.Debug|Win32.ActiveCfg = Debug|Win32
+		{3FBC7619-AF55-4664-89F5-FE1D40BBB323}.Debug|Win32.Build.0 = Debug|Win32
+		{3FBC7619-AF55-4664-89F5-FE1D40BBB323}.Release|Win32.ActiveCfg = Release|Win32
+		{3FBC7619-AF55-4664-89F5-FE1D40BBB323}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
Index: uKadecot/trunk/tools/makefsdata/makefsdata.vcxproj
===================================================================
--- uKadecot/trunk/tools/makefsdata/makefsdata.vcxproj	(revision 101)
+++ uKadecot/trunk/tools/makefsdata/makefsdata.vcxproj	(revision 101)
@@ -0,0 +1,107 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{5F923912-3171-4047-9C5A-37E352D460F5}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>makefsdata</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v110</PlatformToolset>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v110</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <AdditionalIncludeDirectories>..\zlib</AdditionalIncludeDirectories>
+      <TreatSpecificWarningsAsErrors>4003;4005;4007;4010;4013;4015;4020;4022;4024;4028;4029;4031;4033;4034;4042;4047;4048;4049;4056;4067;4074;4079;4083;4088;4089;4090;4091;4094;4096;4098;4099;4113;4715;4716</TreatSpecificWarningsAsErrors>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\zlib</AdditionalIncludeDirectories>
+      <TreatSpecificWarningsAsErrors>4003;4005;4007;4010;4013;4015;4020;4022;4024;4028;4029;4031;4033;4034;4042;4047;4048;4049;4056;4067;4074;4079;4083;4088;4089;4090;4091;4094;4096;4098;4099;4113;4715;4716</TreatSpecificWarningsAsErrors>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <Text Include="ReadMe.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="diskio.c" />
+    <ClCompile Include="ff.c" />
+    <ClCompile Include="main.c" />
+    <ClCompile Include="option\syscall.c" />
+    <ClCompile Include="option\unicode.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="diskio.h" />
+    <ClInclude Include="ff.h" />
+    <ClInclude Include="ffconf.h" />
+    <ClInclude Include="integer.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\zlib\zlib.vcxproj">
+      <Project>{3fbc7619-af55-4664-89f5-fe1d40bbb323}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
Index: uKadecot/trunk/tools/makefsdata/makefsdata.vcxproj.filters
===================================================================
--- uKadecot/trunk/tools/makefsdata/makefsdata.vcxproj.filters	(revision 101)
+++ uKadecot/trunk/tools/makefsdata/makefsdata.vcxproj.filters	(revision 101)
@@ -0,0 +1,51 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="ソース ファイル">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="ヘッダー ファイル">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="リソース ファイル">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Text Include="ReadMe.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="diskio.c">
+      <Filter>ソース ファイル</Filter>
+    </ClCompile>
+    <ClCompile Include="ff.c">
+      <Filter>ソース ファイル</Filter>
+    </ClCompile>
+    <ClCompile Include="option\syscall.c">
+      <Filter>ソース ファイル</Filter>
+    </ClCompile>
+    <ClCompile Include="option\unicode.c">
+      <Filter>ソース ファイル</Filter>
+    </ClCompile>
+    <ClCompile Include="main.c">
+      <Filter>ソース ファイル</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="diskio.h">
+      <Filter>ヘッダー ファイル</Filter>
+    </ClInclude>
+    <ClInclude Include="ff.h">
+      <Filter>ヘッダー ファイル</Filter>
+    </ClInclude>
+    <ClInclude Include="ffconf.h">
+      <Filter>ヘッダー ファイル</Filter>
+    </ClInclude>
+    <ClInclude Include="integer.h">
+      <Filter>ヘッダー ファイル</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
Index: uKadecot/trunk/tools/makefsdata/mod_deflate.c
===================================================================
--- uKadecot/trunk/tools/makefsdata/mod_deflate.c	(revision 101)
+++ uKadecot/trunk/tools/makefsdata/mod_deflate.c	(revision 101)
@@ -0,0 +1,1347 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * mod_deflate.c: Perform deflate content-encoding on the fly
+ *
+ * Written by Ian Holsman, Justin Erenkrantz, and Nick Kew
+ */
+
+/*
+ * Portions of this software are based upon zlib code by Jean-loup Gailly
+ * (zlib functions gz_open and gzwrite, check_header)
+ */
+
+/* zlib flags */
+#define ASCII_FLAG   0x01 /* bit 0 set: file probably ascii text */
+#define HEAD_CRC     0x02 /* bit 1 set: header CRC present */
+#define EXTRA_FIELD  0x04 /* bit 2 set: extra field present */
+#define ORIG_NAME    0x08 /* bit 3 set: original file name present */
+#define COMMENT      0x10 /* bit 4 set: file comment present */
+#define RESERVED     0xE0 /* bits 5..7: reserved */
+
+
+#include "httpd.h"
+#include "http_config.h"
+#include "http_log.h"
+#include "apr_lib.h"
+#include "apr_strings.h"
+#include "apr_general.h"
+#include "util_filter.h"
+#include "apr_buckets.h"
+#include "http_request.h"
+#define APR_WANT_STRFUNC
+#include "apr_want.h"
+
+#include "zlib.h"
+
+static const char deflateFilterName[] = "DEFLATE";
+module AP_MODULE_DECLARE_DATA deflate_module;
+
+typedef struct deflate_filter_config_t
+{
+    int windowSize;
+    int memlevel;
+    int compressionlevel;
+    apr_size_t bufferSize;
+    char *note_ratio_name;
+    char *note_input_name;
+    char *note_output_name;
+} deflate_filter_config;
+
+/* RFC 1952 Section 2.3 defines the gzip header:
+ *
+ * +---+---+---+---+---+---+---+---+---+---+
+ * |ID1|ID2|CM |FLG|     MTIME     |XFL|OS |
+ * +---+---+---+---+---+---+---+---+---+---+
+ */
+static const char gzip_header[10] =
+{ '\037', '\213', Z_DEFLATED, 0,
+  0, 0, 0, 0, /* mtime */
+  0, 0x03 /* Unix OS_CODE */
+};
+
+/* magic header */
+static const char deflate_magic[2] = { '\037', '\213' };
+
+/* windowsize is negative to suppress Zlib header */
+#define DEFAULT_COMPRESSION Z_DEFAULT_COMPRESSION
+#define DEFAULT_WINDOWSIZE -15
+#define DEFAULT_MEMLEVEL 9
+#define DEFAULT_BUFFERSIZE 8096
+
+
+/* Check whether a request is gzipped, so we can un-gzip it.
+ * If a request has multiple encodings, we need the gzip
+ * to be the outermost non-identity encoding.
+ */
+static int check_gzip(request_rec *r, apr_table_t *hdrs1, apr_table_t *hdrs2)
+{
+    int found = 0;
+    apr_table_t *hdrs = hdrs1;
+    const char *encoding = apr_table_get(hdrs, "Content-Encoding");
+
+    if (!encoding && (hdrs2 != NULL)) {
+        /* the output filter has two tables and a content_encoding to check */
+        encoding = apr_table_get(hdrs2, "Content-Encoding");
+        hdrs = hdrs2;
+        if (!encoding) {
+            encoding = r->content_encoding;
+            hdrs = NULL;
+        }
+    }
+    if (encoding && *encoding) {
+
+        /* check the usual/simple case first */
+        if (!strcasecmp(encoding, "gzip")
+            || !strcasecmp(encoding, "x-gzip")) {
+            found = 1;
+            if (hdrs) {
+                apr_table_unset(hdrs, "Content-Encoding");
+            }
+            else {
+                r->content_encoding = NULL;
+            }
+        }
+        else if (ap_strchr_c(encoding, ',') != NULL) {
+            /* If the outermost encoding isn't gzip, there's nowt
+             * we can do.  So only check the last non-identity token
+             */
+            char *new_encoding = apr_pstrdup(r->pool, encoding);
+            char *ptr;
+            for(;;) {
+                char *token = ap_strrchr(new_encoding, ',');
+                if (!token) {        /* gzip:identity or other:identity */
+                    if (!strcasecmp(new_encoding, "gzip")
+                        || !strcasecmp(new_encoding, "x-gzip")) {
+                        found = 1;
+                        if (hdrs) {
+                            apr_table_unset(hdrs, "Content-Encoding");
+                        }
+                        else {
+                            r->content_encoding = NULL;
+                        }
+                    }
+                    break; /* seen all tokens */
+                }
+                for (ptr=token+1; apr_isspace(*ptr); ++ptr);
+                if (!strcasecmp(ptr, "gzip")
+                    || !strcasecmp(ptr, "x-gzip")) {
+                    *token = '\0';
+                    if (hdrs) {
+                        apr_table_setn(hdrs, "Content-Encoding", new_encoding);
+                    }
+                    else {
+                        r->content_encoding = new_encoding;
+                    }
+                    found = 1;
+                }
+                else if (!ptr[0] || !strcasecmp(ptr, "identity")) {
+                    *token = '\0';
+                    continue; /* strip the token and find the next one */
+                }
+                break; /* found a non-identity token */
+            }
+        }
+    }
+    return found;
+}
+
+/* Outputs a long in LSB order to the given file
+ * only the bottom 4 bits are required for the deflate file format.
+ */
+static void putLong(unsigned char *string, unsigned long x)
+{
+    string[0] = (unsigned char)(x & 0xff);
+    string[1] = (unsigned char)((x & 0xff00) >> 8);
+    string[2] = (unsigned char)((x & 0xff0000) >> 16);
+    string[3] = (unsigned char)((x & 0xff000000) >> 24);
+}
+
+/* Inputs a string and returns a long.
+ */
+static unsigned long getLong(unsigned char *string)
+{
+    return ((unsigned long)string[0])
+          | (((unsigned long)string[1]) << 8)
+          | (((unsigned long)string[2]) << 16)
+          | (((unsigned long)string[3]) << 24);
+}
+
+static void *create_deflate_server_config(apr_pool_t *p, server_rec *s)
+{
+    deflate_filter_config *c = apr_pcalloc(p, sizeof *c);
+
+    c->memlevel   = DEFAULT_MEMLEVEL;
+    c->windowSize = DEFAULT_WINDOWSIZE;
+    c->bufferSize = DEFAULT_BUFFERSIZE;
+    c->compressionlevel = DEFAULT_COMPRESSION;
+
+    return c;
+}
+
+static const char *deflate_set_window_size(cmd_parms *cmd, void *dummy,
+                                           const char *arg)
+{
+    deflate_filter_config *c = ap_get_module_config(cmd->server->module_config,
+                                                    &deflate_module);
+    int i;
+
+    i = atoi(arg);
+
+    if (i < 1 || i > 15)
+        return "DeflateWindowSize must be between 1 and 15";
+
+    c->windowSize = i * -1;
+
+    return NULL;
+}
+
+static const char *deflate_set_buffer_size(cmd_parms *cmd, void *dummy,
+                                           const char *arg)
+{
+    deflate_filter_config *c = ap_get_module_config(cmd->server->module_config,
+                                                    &deflate_module);
+    int n = atoi(arg);
+
+    if (n <= 0) {
+        return "DeflateBufferSize should be positive";
+    }
+
+    c->bufferSize = (apr_size_t)n;
+
+    return NULL;
+}
+static const char *deflate_set_note(cmd_parms *cmd, void *dummy,
+                                    const char *arg1, const char *arg2)
+{
+    deflate_filter_config *c = ap_get_module_config(cmd->server->module_config,
+                                                    &deflate_module);
+
+    if (arg2 == NULL) {
+        c->note_ratio_name = apr_pstrdup(cmd->pool, arg1);
+    }
+    else if (!strcasecmp(arg1, "ratio")) {
+        c->note_ratio_name = apr_pstrdup(cmd->pool, arg2);
+    }
+    else if (!strcasecmp(arg1, "input")) {
+        c->note_input_name = apr_pstrdup(cmd->pool, arg2);
+    }
+    else if (!strcasecmp(arg1, "output")) {
+        c->note_output_name = apr_pstrdup(cmd->pool, arg2);
+    }
+    else {
+        return apr_psprintf(cmd->pool, "Unknown note type %s", arg1);
+    }
+
+    return NULL;
+}
+
+static const char *deflate_set_memlevel(cmd_parms *cmd, void *dummy,
+                                        const char *arg)
+{
+    deflate_filter_config *c = ap_get_module_config(cmd->server->module_config,
+                                                    &deflate_module);
+    int i;
+
+    i = atoi(arg);
+
+    if (i < 1 || i > 9)
+        return "DeflateMemLevel must be between 1 and 9";
+
+    c->memlevel = i;
+
+    return NULL;
+}
+
+static const char *deflate_set_compressionlevel(cmd_parms *cmd, void *dummy,
+                                        const char *arg)
+{
+    deflate_filter_config *c = ap_get_module_config(cmd->server->module_config,
+                                                    &deflate_module);
+    int i;
+
+    i = atoi(arg);
+
+    if (i < 1 || i > 9)
+        return "Compression Level must be between 1 and 9";
+
+    c->compressionlevel = i;
+
+    return NULL;
+}
+
+typedef struct deflate_ctx_t
+{
+    z_stream stream;
+    unsigned char *buffer;
+    unsigned long crc;
+    apr_bucket_brigade *bb, *proc_bb;
+    int (*libz_end_func)(z_streamp);
+    unsigned char *validation_buffer;
+    apr_size_t validation_buffer_length;
+} deflate_ctx;
+
+/* Number of validation bytes (CRC and length) after the compressed data */
+#define VALIDATION_SIZE 8
+/* Do not update ctx->crc, see comment in flush_libz_buffer */
+#define NO_UPDATE_CRC 0
+/* Do update ctx->crc, see comment in flush_libz_buffer */
+#define UPDATE_CRC 1
+
+static int flush_libz_buffer(deflate_ctx *ctx, deflate_filter_config *c,
+                             struct apr_bucket_alloc_t *bucket_alloc,
+                             int (*libz_func)(z_streamp, int), int flush,
+                             int crc)
+{
+    int zRC = Z_OK;
+    int done = 0;
+    unsigned int deflate_len;
+    apr_bucket *b;
+
+    for (;;) {
+         deflate_len = c->bufferSize - ctx->stream.avail_out;
+
+         if (deflate_len != 0) {
+             /*
+              * Do we need to update ctx->crc? Usually this is the case for
+              * inflate action where we need to do a crc on the output, whereas
+              * in the deflate case we need to do a crc on the input
+              */
+             if (crc) {
+                 ctx->crc = crc32(ctx->crc, (const Bytef *)ctx->buffer,
+                                  deflate_len);
+             }
+             b = apr_bucket_heap_create((char *)ctx->buffer,
+                                        deflate_len, NULL,
+                                        bucket_alloc);
+             APR_BRIGADE_INSERT_TAIL(ctx->bb, b);
+             ctx->stream.next_out = ctx->buffer;
+             ctx->stream.avail_out = c->bufferSize;
+         }
+
+         if (done)
+             break;
+
+         zRC = libz_func(&ctx->stream, flush);
+
+         /*
+          * We can ignore Z_BUF_ERROR because:
+          * When we call libz_func we can assume that
+          *
+          * - avail_in is zero (due to the surrounding code that calls
+          *   flush_libz_buffer)
+          * - avail_out is non zero due to our actions some lines above
+          *
+          * So the only reason for Z_BUF_ERROR is that the internal libz
+          * buffers are now empty and thus we called libz_func one time
+          * too often. This does not hurt. It simply says that we are done.
+          */
+         if (zRC == Z_BUF_ERROR) {
+             zRC = Z_OK;
+             break;
+         }
+
+         done = (ctx->stream.avail_out != 0 || zRC == Z_STREAM_END);
+
+         if (zRC != Z_OK && zRC != Z_STREAM_END)
+             break;
+    }
+    return zRC;
+}
+
+static apr_status_t deflate_ctx_cleanup(void *data)
+{
+    deflate_ctx *ctx = (deflate_ctx *)data;
+
+    if (ctx)
+        ctx->libz_end_func(&ctx->stream);
+    return APR_SUCCESS;
+}
+
+static apr_status_t deflate_out_filter(ap_filter_t *f,
+                                       apr_bucket_brigade *bb)
+{
+    apr_bucket *e;
+    request_rec *r = f->r;
+    deflate_ctx *ctx = f->ctx;
+    int zRC;
+    deflate_filter_config *c;
+
+    /* Do nothing if asked to filter nothing. */
+    if (APR_BRIGADE_EMPTY(bb)) {
+        return ap_pass_brigade(f->next, bb);
+    }
+
+    c = ap_get_module_config(r->server->module_config,
+                             &deflate_module);
+
+    /* If we don't have a context, we need to ensure that it is okay to send
+     * the deflated content.  If we have a context, that means we've done
+     * this before and we liked it.
+     * This could be not so nice if we always fail.  But, if we succeed,
+     * we're in better shape.
+     */
+    if (!ctx) {
+        char *token;
+        const char *encoding;
+
+        /* only work on main request/no subrequests */
+        if (r->main != NULL) {
+            ap_remove_output_filter(f);
+            return ap_pass_brigade(f->next, bb);
+        }
+
+        /* some browsers might have problems, so set no-gzip
+         * (with browsermatch) for them
+         */
+        if (apr_table_get(r->subprocess_env, "no-gzip")) {
+            ap_remove_output_filter(f);
+            return ap_pass_brigade(f->next, bb);
+        }
+
+        /* We can't operate on Content-Ranges */
+        if (apr_table_get(r->headers_out, "Content-Range") != NULL) {
+            ap_remove_output_filter(f);
+            return ap_pass_brigade(f->next, bb);
+        }
+
+        /* Some browsers might have problems with content types
+         * other than text/html, so set gzip-only-text/html
+         * (with browsermatch) for them
+         */
+        if (r->content_type == NULL
+             || strncmp(r->content_type, "text/html", 9)) {
+            const char *env_value = apr_table_get(r->subprocess_env,
+                                                  "gzip-only-text/html");
+            if ( env_value && (strcmp(env_value,"1") == 0) ) {
+                ap_remove_output_filter(f);
+                return ap_pass_brigade(f->next, bb);
+            }
+        }
+
+        /* Let's see what our current Content-Encoding is.
+         * If it's already encoded, don't compress again.
+         * (We could, but let's not.)
+         */
+        encoding = apr_table_get(r->headers_out, "Content-Encoding");
+        if (encoding) {
+            const char *err_enc;
+
+            err_enc = apr_table_get(r->err_headers_out, "Content-Encoding");
+            if (err_enc) {
+                encoding = apr_pstrcat(r->pool, encoding, ",", err_enc, NULL);
+            }
+        }
+        else {
+            encoding = apr_table_get(r->err_headers_out, "Content-Encoding");
+        }
+
+        if (r->content_encoding) {
+            encoding = encoding ? apr_pstrcat(r->pool, encoding, ",",
+                                              r->content_encoding, NULL)
+                                : r->content_encoding;
+        }
+
+        if (encoding) {
+            const char *tmp = encoding;
+
+            token = ap_get_token(r->pool, &tmp, 0);
+            while (token && *token) {
+                /* stolen from mod_negotiation: */
+                if (strcmp(token, "identity") && strcmp(token, "7bit") &&
+                    strcmp(token, "8bit") && strcmp(token, "binary")) {
+
+                    ap_remove_output_filter(f);
+                    return ap_pass_brigade(f->next, bb);
+                }
+
+                /* Otherwise, skip token */
+                if (*tmp) {
+                    ++tmp;
+                }
+                token = (*tmp) ? ap_get_token(r->pool, &tmp, 0) : NULL;
+            }
+        }
+
+        /* Even if we don't accept this request based on it not having
+         * the Accept-Encoding, we need to note that we were looking
+         * for this header and downstream proxies should be aware of that.
+         */
+        apr_table_mergen(r->headers_out, "Vary", "Accept-Encoding");
+
+        /* force-gzip will just force it out regardless if the browser
+         * can actually do anything with it.
+         */
+        if (!apr_table_get(r->subprocess_env, "force-gzip")) {
+            const char *accepts;
+            /* if they don't have the line, then they can't play */
+            accepts = apr_table_get(r->headers_in, "Accept-Encoding");
+            if (accepts == NULL) {
+                ap_remove_output_filter(f);
+                return ap_pass_brigade(f->next, bb);
+            }
+
+            token = ap_get_token(r->pool, &accepts, 0);
+            while (token && token[0] && strcasecmp(token, "gzip")) {
+                /* skip parameters, XXX: ;q=foo evaluation? */
+                while (*accepts == ';') {
+                    ++accepts;
+                    token = ap_get_token(r->pool, &accepts, 1);
+                }
+
+                /* retrieve next token */
+                if (*accepts == ',') {
+                    ++accepts;
+                }
+                token = (*accepts) ? ap_get_token(r->pool, &accepts, 0) : NULL;
+            }
+
+            /* No acceptable token found. */
+            if (token == NULL || token[0] == '\0') {
+                ap_remove_output_filter(f);
+                return ap_pass_brigade(f->next, bb);
+            }
+        }
+
+        /* For a 304 or 204 response there is no entity included in
+         * the response and hence nothing to deflate. */
+        if (r->status == HTTP_NOT_MODIFIED || r->status == HTTP_NO_CONTENT) {
+            ap_remove_output_filter(f);
+            return ap_pass_brigade(f->next, bb);
+        }
+
+        /* We're cool with filtering this. */
+        ctx = f->ctx = apr_pcalloc(r->pool, sizeof(*ctx));
+        ctx->bb = apr_brigade_create(r->pool, f->c->bucket_alloc);
+        ctx->buffer = apr_palloc(r->pool, c->bufferSize);
+        ctx->libz_end_func = deflateEnd;
+
+        zRC = deflateInit2(&ctx->stream, c->compressionlevel, Z_DEFLATED,
+                           c->windowSize, c->memlevel,
+                           Z_DEFAULT_STRATEGY);
+
+        if (zRC != Z_OK) {
+            deflateEnd(&ctx->stream);
+            ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
+                          "unable to init Zlib: "
+                          "deflateInit2 returned %d: URL %s",
+                          zRC, r->uri);
+            /*
+             * Remove ourselves as it does not make sense to return:
+             * We are not able to init libz and pass data down the chain
+             * uncompressed.
+             */
+            ap_remove_output_filter(f);
+            return ap_pass_brigade(f->next, bb);
+        }
+        /*
+         * Register a cleanup function to ensure that we cleanup the internal
+         * libz resources.
+         */
+        apr_pool_cleanup_register(r->pool, ctx, deflate_ctx_cleanup,
+                                  apr_pool_cleanup_null);
+
+        /* add immortal gzip header */
+        e = apr_bucket_immortal_create(gzip_header, sizeof gzip_header,
+                                       f->c->bucket_alloc);
+        APR_BRIGADE_INSERT_TAIL(ctx->bb, e);
+
+        /* If the entire Content-Encoding is "identity", we can replace it. */
+        if (!encoding || !strcasecmp(encoding, "identity")) {
+            apr_table_setn(r->headers_out, "Content-Encoding", "gzip");
+        }
+        else {
+            apr_table_mergen(r->headers_out, "Content-Encoding", "gzip");
+        }
+        apr_table_unset(r->headers_out, "Content-Length");
+        apr_table_unset(r->headers_out, "Content-MD5");
+
+        /* initialize deflate output buffer */
+        ctx->stream.next_out = ctx->buffer;
+        ctx->stream.avail_out = c->bufferSize;
+    }
+
+    while (!APR_BRIGADE_EMPTY(bb))
+    {
+        const char *data;
+        apr_bucket *b;
+        apr_size_t len;
+
+        e = APR_BRIGADE_FIRST(bb);
+
+        if (APR_BUCKET_IS_EOS(e)) {
+            char *buf;
+
+            ctx->stream.avail_in = 0; /* should be zero already anyway */
+            /* flush the remaining data from the zlib buffers */
+            flush_libz_buffer(ctx, c, f->c->bucket_alloc, deflate, Z_FINISH,
+                              NO_UPDATE_CRC);
+
+            buf = apr_palloc(r->pool, VALIDATION_SIZE);
+            putLong((unsigned char *)&buf[0], ctx->crc);
+            putLong((unsigned char *)&buf[4], ctx->stream.total_in);
+
+            b = apr_bucket_pool_create(buf, VALIDATION_SIZE, r->pool,
+                                       f->c->bucket_alloc);
+            APR_BRIGADE_INSERT_TAIL(ctx->bb, b);
+            ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
+                          "Zlib: Compressed %ld to %ld : URL %s",
+                          ctx->stream.total_in, ctx->stream.total_out, r->uri);
+
+            /* leave notes for logging */
+            if (c->note_input_name) {
+                apr_table_setn(r->notes, c->note_input_name,
+                               (ctx->stream.total_in > 0)
+                                ? apr_off_t_toa(r->pool,
+                                                ctx->stream.total_in)
+                                : "-");
+            }
+
+            if (c->note_output_name) {
+                apr_table_setn(r->notes, c->note_output_name,
+                               (ctx->stream.total_in > 0)
+                                ? apr_off_t_toa(r->pool,
+                                                ctx->stream.total_out)
+                                : "-");
+            }
+
+            if (c->note_ratio_name) {
+                apr_table_setn(r->notes, c->note_ratio_name,
+                               (ctx->stream.total_in > 0)
+                                ? apr_itoa(r->pool,
+                                           (int)(ctx->stream.total_out
+                                                 * 100
+                                                 / ctx->stream.total_in))
+                                : "-");
+            }
+
+            deflateEnd(&ctx->stream);
+            /* No need for cleanup any longer */
+            apr_pool_cleanup_kill(r->pool, ctx, deflate_ctx_cleanup);
+
+            /* Remove EOS from the old list, and insert into the new. */
+            APR_BUCKET_REMOVE(e);
+            APR_BRIGADE_INSERT_TAIL(ctx->bb, e);
+
+            /* Okay, we've seen the EOS.
+             * Time to pass it along down the chain.
+             */
+            return ap_pass_brigade(f->next, ctx->bb);
+        }
+
+        if (APR_BUCKET_IS_FLUSH(e)) {
+            apr_status_t rv;
+
+            /* flush the remaining data from the zlib buffers */
+            zRC = flush_libz_buffer(ctx, c, f->c->bucket_alloc, deflate,
+                                    Z_SYNC_FLUSH, NO_UPDATE_CRC);
+            if (zRC != Z_OK) {
+                return APR_EGENERAL;
+            }
+
+            /* Remove flush bucket from old brigade anf insert into the new. */
+            APR_BUCKET_REMOVE(e);
+            APR_BRIGADE_INSERT_TAIL(ctx->bb, e);
+            rv = ap_pass_brigade(f->next, ctx->bb);
+            if (rv != APR_SUCCESS) {
+                return rv;
+            }
+            continue;
+        }
+
+        if (APR_BUCKET_IS_METADATA(e)) {
+            /*
+             * Remove meta data bucket from old brigade and insert into the
+             * new.
+             */
+            APR_BUCKET_REMOVE(e);
+            APR_BRIGADE_INSERT_TAIL(ctx->bb, e);
+            continue;
+        }
+
+        /* read */
+        apr_bucket_read(e, &data, &len, APR_BLOCK_READ);
+
+        /* This crc32 function is from zlib. */
+        ctx->crc = crc32(ctx->crc, (const Bytef *)data, len);
+
+        /* write */
+        ctx->stream.next_in = (unsigned char *)data; /* We just lost const-ness,
+                                                      * but we'll just have to
+                                                      * trust zlib */
+        ctx->stream.avail_in = len;
+
+        while (ctx->stream.avail_in != 0) {
+            if (ctx->stream.avail_out == 0) {
+                apr_status_t rv;
+
+                ctx->stream.next_out = ctx->buffer;
+                len = c->bufferSize - ctx->stream.avail_out;
+
+                b = apr_bucket_heap_create((char *)ctx->buffer, len,
+                                           NULL, f->c->bucket_alloc);
+                APR_BRIGADE_INSERT_TAIL(ctx->bb, b);
+                ctx->stream.avail_out = c->bufferSize;
+                /* Send what we have right now to the next filter. */
+                rv = ap_pass_brigade(f->next, ctx->bb);
+                if (rv != APR_SUCCESS) {
+                    return rv;
+                }
+            }
+
+            zRC = deflate(&(ctx->stream), Z_NO_FLUSH);
+
+            if (zRC != Z_OK) {
+                return APR_EGENERAL;
+            }
+        }
+
+        apr_bucket_delete(e);
+    }
+
+    apr_brigade_cleanup(bb);
+    return APR_SUCCESS;
+}
+
+/* This is the deflate input filter (inflates).  */
+static apr_status_t deflate_in_filter(ap_filter_t *f,
+                                      apr_bucket_brigade *bb,
+                                      ap_input_mode_t mode,
+                                      apr_read_type_e block,
+                                      apr_off_t readbytes)
+{
+    apr_bucket *bkt;
+    request_rec *r = f->r;
+    deflate_ctx *ctx = f->ctx;
+    int zRC;
+    apr_status_t rv;
+    deflate_filter_config *c;
+
+    /* just get out of the way of things we don't want. */
+    if (mode != AP_MODE_READBYTES) {
+        return ap_get_brigade(f->next, bb, mode, block, readbytes);
+    }
+
+    c = ap_get_module_config(r->server->module_config, &deflate_module);
+
+    if (!ctx) {
+        char deflate_hdr[10];
+        apr_size_t len;
+
+        /* only work on main request/no subrequests */
+        if (!ap_is_initial_req(r)) {
+            ap_remove_input_filter(f);
+            return ap_get_brigade(f->next, bb, mode, block, readbytes);
+        }
+
+        /* We can't operate on Content-Ranges */
+        if (apr_table_get(r->headers_in, "Content-Range") != NULL) {
+            ap_remove_input_filter(f);
+            return ap_get_brigade(f->next, bb, mode, block, readbytes);
+        }
+
+        /* Check whether request body is gzipped.
+         *
+         * If it is, we're transforming the contents, invalidating
+         * some request headers including Content-Encoding.
+         *
+         * If not, we just remove ourself.
+         */
+        if (check_gzip(r, r->headers_in, NULL) == 0) {
+            ap_remove_input_filter(f);
+            return ap_get_brigade(f->next, bb, mode, block, readbytes);
+        }
+
+        f->ctx = ctx = apr_pcalloc(f->r->pool, sizeof(*ctx));
+        ctx->bb = apr_brigade_create(r->pool, f->c->bucket_alloc);
+        ctx->proc_bb = apr_brigade_create(r->pool, f->c->bucket_alloc);
+        ctx->buffer = apr_palloc(r->pool, c->bufferSize);
+
+        rv = ap_get_brigade(f->next, ctx->bb, AP_MODE_READBYTES, block, 10);
+        if (rv != APR_SUCCESS) {
+            return rv;
+        }
+
+        apr_table_unset(r->headers_in, "Content-Length");
+        apr_table_unset(r->headers_in, "Content-MD5");
+
+        len = 10;
+        rv = apr_brigade_flatten(ctx->bb, deflate_hdr, &len);
+        if (rv != APR_SUCCESS) {
+            return rv;
+        }
+
+        /* We didn't get the magic bytes. */
+        if (len != 10 ||
+            deflate_hdr[0] != deflate_magic[0] ||
+            deflate_hdr[1] != deflate_magic[1]) {
+            return APR_EGENERAL;
+        }
+
+        /* We can't handle flags for now. */
+        if (deflate_hdr[3] != 0) {
+            return APR_EGENERAL;
+        }
+
+        zRC = inflateInit2(&ctx->stream, c->windowSize);
+
+        if (zRC != Z_OK) {
+            f->ctx = NULL;
+            inflateEnd(&ctx->stream);
+            ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
+                          "unable to init Zlib: "
+                          "inflateInit2 returned %d: URL %s",
+                          zRC, r->uri);
+            ap_remove_input_filter(f);
+            return ap_get_brigade(f->next, bb, mode, block, readbytes);
+        }
+
+        /* initialize deflate output buffer */
+        ctx->stream.next_out = ctx->buffer;
+        ctx->stream.avail_out = c->bufferSize;
+
+        apr_brigade_cleanup(ctx->bb);
+    }
+
+    if (APR_BRIGADE_EMPTY(ctx->proc_bb)) {
+        rv = ap_get_brigade(f->next, ctx->bb, mode, block, readbytes);
+
+        if (rv != APR_SUCCESS) {
+            /* What about APR_EAGAIN errors? */
+            inflateEnd(&ctx->stream);
+            return rv;
+        }
+
+        for (bkt = APR_BRIGADE_FIRST(ctx->bb);
+             bkt != APR_BRIGADE_SENTINEL(ctx->bb);
+             bkt = APR_BUCKET_NEXT(bkt))
+        {
+            const char *data;
+            apr_size_t len;
+
+            /* If we actually see the EOS, that means we screwed up! */
+            if (APR_BUCKET_IS_EOS(bkt)) {
+                inflateEnd(&ctx->stream);
+                return APR_EGENERAL;
+            }
+
+            if (APR_BUCKET_IS_FLUSH(bkt)) {
+                apr_bucket *tmp_heap;
+                zRC = inflate(&(ctx->stream), Z_SYNC_FLUSH);
+                if (zRC != Z_OK) {
+                    inflateEnd(&ctx->stream);
+                    return APR_EGENERAL;
+                }
+
+                ctx->stream.next_out = ctx->buffer;
+                len = c->bufferSize - ctx->stream.avail_out;
+
+                ctx->crc = crc32(ctx->crc, (const Bytef *)ctx->buffer, len);
+                tmp_heap = apr_bucket_heap_create((char *)ctx->buffer, len,
+                                                 NULL, f->c->bucket_alloc);
+                APR_BRIGADE_INSERT_TAIL(ctx->proc_bb, tmp_heap);
+                ctx->stream.avail_out = c->bufferSize;
+
+                /* Move everything to the returning brigade. */
+                APR_BUCKET_REMOVE(bkt);
+                APR_BRIGADE_CONCAT(bb, ctx->bb);
+                break;
+            }
+
+            /* read */
+            apr_bucket_read(bkt, &data, &len, APR_BLOCK_READ);
+
+            /* pass through zlib inflate. */
+            ctx->stream.next_in = (unsigned char *)data;
+            ctx->stream.avail_in = len;
+
+            zRC = Z_OK;
+
+            while (ctx->stream.avail_in != 0) {
+                if (ctx->stream.avail_out == 0) {
+                    apr_bucket *tmp_heap;
+                    ctx->stream.next_out = ctx->buffer;
+                    len = c->bufferSize - ctx->stream.avail_out;
+
+                    ctx->crc = crc32(ctx->crc, (const Bytef *)ctx->buffer, len);
+                    tmp_heap = apr_bucket_heap_create((char *)ctx->buffer, len,
+                                                      NULL, f->c->bucket_alloc);
+                    APR_BRIGADE_INSERT_TAIL(ctx->proc_bb, tmp_heap);
+                    ctx->stream.avail_out = c->bufferSize;
+                }
+
+                zRC = inflate(&ctx->stream, Z_NO_FLUSH);
+
+                if (zRC == Z_STREAM_END) {
+                    break;
+                }
+
+                if (zRC != Z_OK) {
+                    inflateEnd(&ctx->stream);
+                    return APR_EGENERAL;
+                }
+            }
+            if (zRC == Z_STREAM_END) {
+                apr_bucket *tmp_heap, *eos;
+
+                ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
+                              "Zlib: Inflated %ld to %ld : URL %s",
+                              ctx->stream.total_in, ctx->stream.total_out,
+                              r->uri);
+
+                len = c->bufferSize - ctx->stream.avail_out;
+
+                ctx->crc = crc32(ctx->crc, (const Bytef *)ctx->buffer, len);
+                tmp_heap = apr_bucket_heap_create((char *)ctx->buffer, len,
+                                                  NULL, f->c->bucket_alloc);
+                APR_BRIGADE_INSERT_TAIL(ctx->proc_bb, tmp_heap);
+                ctx->stream.avail_out = c->bufferSize;
+
+                /* Is the remaining 8 bytes already in the avail stream? */
+                if (ctx->stream.avail_in >= 8) {
+                    unsigned long compCRC, compLen;
+                    compCRC = getLong(ctx->stream.next_in);
+                    if (ctx->crc != compCRC) {
+                        inflateEnd(&ctx->stream);
+                        return APR_EGENERAL;
+                    }
+                    ctx->stream.next_in += 4;
+                    compLen = getLong(ctx->stream.next_in);
+                    if (ctx->stream.total_out != compLen) {
+                        inflateEnd(&ctx->stream);
+                        return APR_EGENERAL;
+                    }
+                }
+                else {
+                    /* FIXME: We need to grab the 8 verification bytes
+                     * from the wire! */
+                    inflateEnd(&ctx->stream);
+                    return APR_EGENERAL;
+                }
+
+                inflateEnd(&ctx->stream);
+
+                eos = apr_bucket_eos_create(f->c->bucket_alloc);
+                APR_BRIGADE_INSERT_TAIL(ctx->proc_bb, eos);
+                break;
+            }
+
+        }
+        apr_brigade_cleanup(ctx->bb);
+    }
+
+    /* If we are about to return nothing for a 'blocking' read and we have
+     * some data in our zlib buffer, flush it out so we can return something.
+     */
+    if (block == APR_BLOCK_READ &&
+        APR_BRIGADE_EMPTY(ctx->proc_bb) &&
+        ctx->stream.avail_out < c->bufferSize) {
+        apr_bucket *tmp_heap;
+        apr_size_t len;
+        ctx->stream.next_out = ctx->buffer;
+        len = c->bufferSize - ctx->stream.avail_out;
+
+        ctx->crc = crc32(ctx->crc, (const Bytef *)ctx->buffer, len);
+        tmp_heap = apr_bucket_heap_create((char *)ctx->buffer, len,
+                                          NULL, f->c->bucket_alloc);
+        APR_BRIGADE_INSERT_TAIL(ctx->proc_bb, tmp_heap);
+        ctx->stream.avail_out = c->bufferSize;
+    }
+
+    if (!APR_BRIGADE_EMPTY(ctx->proc_bb)) {
+        apr_bucket_brigade *newbb;
+
+        /* May return APR_INCOMPLETE which is fine by us. */
+        apr_brigade_partition(ctx->proc_bb, readbytes, &bkt);
+
+        newbb = apr_brigade_split(ctx->proc_bb, bkt);
+        APR_BRIGADE_CONCAT(bb, ctx->proc_bb);
+        APR_BRIGADE_CONCAT(ctx->proc_bb, newbb);
+    }
+
+    return APR_SUCCESS;
+}
+
+
+/* Filter to inflate for a content-transforming proxy.  */
+static apr_status_t inflate_out_filter(ap_filter_t *f,
+                                      apr_bucket_brigade *bb)
+{
+    int zlib_method;
+    int zlib_flags;
+    int inflate_init = 1;
+    apr_bucket *e;
+    request_rec *r = f->r;
+    deflate_ctx *ctx = f->ctx;
+    int zRC;
+    apr_status_t rv;
+    deflate_filter_config *c;
+
+    /* Do nothing if asked to filter nothing. */
+    if (APR_BRIGADE_EMPTY(bb)) {
+        return ap_pass_brigade(f->next, bb);
+    }
+
+    c = ap_get_module_config(r->server->module_config, &deflate_module);
+
+    if (!ctx) {
+
+        /* only work on main request/no subrequests */
+        if (!ap_is_initial_req(r)) {
+            ap_remove_output_filter(f);
+            return ap_pass_brigade(f->next, bb);
+        }
+
+        /* We can't operate on Content-Ranges */
+        if (apr_table_get(r->headers_out, "Content-Range") != NULL) {
+            ap_remove_output_filter(f);
+            return ap_pass_brigade(f->next, bb);
+        }
+
+        /*
+         * Let's see what our current Content-Encoding is.
+         * Only inflate if gzipped.
+         */
+        if (check_gzip(r, r->headers_out, r->err_headers_out) == 0) {
+            ap_remove_output_filter(f);
+            return ap_pass_brigade(f->next, bb);
+        }
+
+        /* No need to inflate HEAD or 204/304 */
+        if (APR_BUCKET_IS_EOS(APR_BRIGADE_FIRST(bb))) {
+            ap_remove_output_filter(f);
+            return ap_pass_brigade(f->next, bb);
+        }
+
+        f->ctx = ctx = apr_pcalloc(f->r->pool, sizeof(*ctx));
+        ctx->bb = apr_brigade_create(r->pool, f->c->bucket_alloc);
+        ctx->buffer = apr_palloc(r->pool, c->bufferSize);
+        ctx->libz_end_func = inflateEnd;
+        ctx->validation_buffer = NULL;
+        ctx->validation_buffer_length = 0;
+
+        zRC = inflateInit2(&ctx->stream, c->windowSize);
+
+        if (zRC != Z_OK) {
+            f->ctx = NULL;
+            inflateEnd(&ctx->stream);
+            ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
+                          "unable to init Zlib: "
+                          "inflateInit2 returned %d: URL %s",
+                          zRC, r->uri);
+            /*
+             * Remove ourselves as it does not make sense to return:
+             * We are not able to init libz and pass data down the chain
+             * compressed.
+             */
+            ap_remove_output_filter(f);
+            return ap_pass_brigade(f->next, bb);
+        }
+
+        /*
+         * Register a cleanup function to ensure that we cleanup the internal
+         * libz resources.
+         */
+        apr_pool_cleanup_register(r->pool, ctx, deflate_ctx_cleanup,
+                                  apr_pool_cleanup_null);
+
+        /* these are unlikely to be set anyway, but ... */
+        apr_table_unset(r->headers_out, "Content-Length");
+        apr_table_unset(r->headers_out, "Content-MD5");
+
+        /* initialize inflate output buffer */
+        ctx->stream.next_out = ctx->buffer;
+        ctx->stream.avail_out = c->bufferSize;
+
+        inflate_init = 0;
+    }
+
+    while (!APR_BRIGADE_EMPTY(bb))
+    {
+        const char *data;
+        apr_bucket *b;
+        apr_size_t len;
+
+        e = APR_BRIGADE_FIRST(bb);
+
+        if (APR_BUCKET_IS_EOS(e)) {
+            /*
+             * We are really done now. Ensure that we never return here, even
+             * if a second EOS bucket falls down the chain. Thus remove
+             * ourselves.
+             */
+            ap_remove_output_filter(f);
+            /* should be zero already anyway */
+            ctx->stream.avail_in = 0;
+            /*
+             * Flush the remaining data from the zlib buffers. It is correct
+             * to use Z_SYNC_FLUSH in this case and not Z_FINISH as in the
+             * deflate case. In the inflate case Z_FINISH requires to have a
+             * large enough output buffer to put ALL data in otherwise it
+             * fails, whereas in the deflate case you can empty a filled output
+             * buffer and call it again until no more output can be created.
+             */
+            flush_libz_buffer(ctx, c, f->c->bucket_alloc, inflate, Z_SYNC_FLUSH,
+                              UPDATE_CRC);
+            ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
+                          "Zlib: Inflated %ld to %ld : URL %s",
+                          ctx->stream.total_in, ctx->stream.total_out, r->uri);
+
+            if (ctx->validation_buffer_length == VALIDATION_SIZE) {
+                unsigned long compCRC, compLen;
+                compCRC = getLong(ctx->validation_buffer);
+                if (ctx->crc != compCRC) {
+                    ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
+                                  "Zlib: Checksum of inflated stream invalid");
+                    return APR_EGENERAL;
+                }
+                ctx->validation_buffer += VALIDATION_SIZE / 2;
+                compLen = getLong(ctx->validation_buffer);
+                if (ctx->stream.total_out != compLen) {
+                    ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
+                                  "Zlib: Length of inflated stream invalid");
+                    return APR_EGENERAL;
+                }
+            }
+            else {
+                ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
+                              "Zlib: Validation bytes not present");
+                return APR_EGENERAL;
+            }
+
+            inflateEnd(&ctx->stream);
+            /* No need for cleanup any longer */
+            apr_pool_cleanup_kill(r->pool, ctx, deflate_ctx_cleanup);
+
+            /* Remove EOS from the old list, and insert into the new. */
+            APR_BUCKET_REMOVE(e);
+            APR_BRIGADE_INSERT_TAIL(ctx->bb, e);
+
+            /*
+             * Okay, we've seen the EOS.
+             * Time to pass it along down the chain.
+             */
+            return ap_pass_brigade(f->next, ctx->bb);
+        }
+
+        if (APR_BUCKET_IS_FLUSH(e)) {
+            apr_status_t rv;
+
+            /* flush the remaining data from the zlib buffers */
+            zRC = flush_libz_buffer(ctx, c, f->c->bucket_alloc, inflate,
+                                    Z_SYNC_FLUSH, UPDATE_CRC);
+            if (zRC != Z_OK) {
+                return APR_EGENERAL;
+            }
+
+            /* Remove flush bucket from old brigade anf insert into the new. */
+            APR_BUCKET_REMOVE(e);
+            APR_BRIGADE_INSERT_TAIL(ctx->bb, e);
+            rv = ap_pass_brigade(f->next, ctx->bb);
+            if (rv != APR_SUCCESS) {
+                return rv;
+            }
+            continue;
+        }
+
+        if (APR_BUCKET_IS_METADATA(e)) {
+            /*
+             * Remove meta data bucket from old brigade and insert into the
+             * new.
+             */
+            APR_BUCKET_REMOVE(e);
+            APR_BRIGADE_INSERT_TAIL(ctx->bb, e);
+            continue;
+        }
+
+        /* read */
+        apr_bucket_read(e, &data, &len, APR_BLOCK_READ);
+
+        /* first bucket contains zlib header */
+        if (!inflate_init++) {
+            if (len < 10) {
+                ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
+                              "Insufficient data for inflate");
+                return APR_EGENERAL;
+            }
+            else  {
+                zlib_method = data[2];
+                zlib_flags = data[3];
+                if (zlib_method != Z_DEFLATED) {
+                    ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
+                                  "inflate: data not deflated!");
+                    ap_remove_output_filter(f);
+                    return ap_pass_brigade(f->next, bb);
+                }
+                if (data[0] != deflate_magic[0] ||
+                    data[1] != deflate_magic[1] ||
+                    (zlib_flags & RESERVED) != 0) {
+                        ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
+                                      "inflate: bad header");
+                    return APR_EGENERAL ;
+                }
+                data += 10 ;
+                len -= 10 ;
+           }
+           if (zlib_flags & EXTRA_FIELD) {
+               unsigned int bytes = (unsigned int)(data[0]);
+               bytes += ((unsigned int)(data[1])) << 8;
+               bytes += 2;
+               if (len < bytes) {
+                   ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
+                                 "inflate: extra field too big (not "
+                                 "supported)");
+                   return APR_EGENERAL;
+               }
+               data += bytes;
+               len -= bytes;
+           }
+           if (zlib_flags & ORIG_NAME) {
+               while (len-- && *data++);
+           }
+           if (zlib_flags & COMMENT) {
+               while (len-- && *data++);
+           }
+           if (zlib_flags & HEAD_CRC) {
+                len -= 2;
+                data += 2;
+           }
+        }
+
+        /* pass through zlib inflate. */
+        ctx->stream.next_in = (unsigned char *)data;
+        ctx->stream.avail_in = len;
+
+        if (ctx->validation_buffer) {
+            if (ctx->validation_buffer_length < VALIDATION_SIZE) {
+                apr_size_t copy_size;
+
+                copy_size = VALIDATION_SIZE - ctx->validation_buffer_length;
+                if (copy_size > ctx->stream.avail_in)
+                    copy_size = ctx->stream.avail_in;
+                memcpy(ctx->validation_buffer + ctx->validation_buffer_length,
+                       ctx->stream.next_in, copy_size);
+                /* Saved copy_size bytes */
+                ctx->stream.avail_in -= copy_size;
+                ctx->validation_buffer_length += copy_size;
+            }
+            if (ctx->stream.avail_in) {
+                ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
+                              "Zlib: %d bytes of garbage at the end of "
+                              "compressed stream.", ctx->stream.avail_in);
+                /*
+                 * There is nothing worth consuming for zlib left, because it is
+                 * either garbage data or the data has been copied to the
+                 * validation buffer (processing validation data is no business
+                 * for zlib). So set ctx->stream.avail_in to zero to indicate
+                 * this to the following while loop.
+                 */
+                ctx->stream.avail_in = 0;
+            }
+        }
+
+        zRC = Z_OK;
+
+        while (ctx->stream.avail_in != 0) {
+            if (ctx->stream.avail_out == 0) {
+
+                ctx->stream.next_out = ctx->buffer;
+                len = c->bufferSize - ctx->stream.avail_out;
+
+                ctx->crc = crc32(ctx->crc, (const Bytef *)ctx->buffer, len);
+                b = apr_bucket_heap_create((char *)ctx->buffer, len,
+                                           NULL, f->c->bucket_alloc);
+                APR_BRIGADE_INSERT_TAIL(ctx->bb, b);
+                ctx->stream.avail_out = c->bufferSize;
+                /* Send what we have right now to the next filter. */
+                rv = ap_pass_brigade(f->next, ctx->bb);
+                if (rv != APR_SUCCESS) {
+                    return rv;
+                }
+            }
+
+            zRC = inflate(&ctx->stream, Z_NO_FLUSH);
+
+            if (zRC == Z_STREAM_END) {
+                /*
+                 * We have inflated all data. Now try to capture the
+                 * validation bytes. We may not have them all available
+                 * right now, but capture what is there.
+                 */
+                ctx->validation_buffer = apr_pcalloc(f->r->pool,
+                                                     VALIDATION_SIZE);
+                if (ctx->stream.avail_in > VALIDATION_SIZE) {
+                    ctx->validation_buffer_length = VALIDATION_SIZE;
+                    ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
+                                  "Zlib: %d bytes of garbage at the end of "
+                                  "compressed stream.",
+                                  ctx->stream.avail_in - VALIDATION_SIZE);
+                } else if (ctx->stream.avail_in > 0) {
+                           ctx->validation_buffer_length = ctx->stream.avail_in;
+                }
+                if (ctx->validation_buffer_length)
+                    memcpy(ctx->validation_buffer, ctx->stream.next_in,
+                           ctx->validation_buffer_length);
+                break;
+            }
+
+            if (zRC != Z_OK) {
+                return APR_EGENERAL;
+            }
+        }
+
+        apr_bucket_delete(e);
+    }
+
+    apr_brigade_cleanup(bb);
+    return APR_SUCCESS;
+}
+
+#define PROTO_FLAGS AP_FILTER_PROTO_CHANGE|AP_FILTER_PROTO_CHANGE_LENGTH
+static void register_hooks(apr_pool_t *p)
+{
+    ap_register_output_filter(deflateFilterName, deflate_out_filter, NULL,
+                              AP_FTYPE_CONTENT_SET);
+    ap_register_output_filter("INFLATE", inflate_out_filter, NULL,
+                              AP_FTYPE_RESOURCE-1);
+    ap_register_input_filter(deflateFilterName, deflate_in_filter, NULL,
+                              AP_FTYPE_CONTENT_SET);
+}
+
+static const command_rec deflate_filter_cmds[] = {
+    AP_INIT_TAKE12("DeflateFilterNote", deflate_set_note, NULL, RSRC_CONF,
+                  "Set a note to report on compression ratio"),
+    AP_INIT_TAKE1("DeflateWindowSize", deflate_set_window_size, NULL,
+                  RSRC_CONF, "Set the Deflate window size (1-15)"),
+    AP_INIT_TAKE1("DeflateBufferSize", deflate_set_buffer_size, NULL, RSRC_CONF,
+                  "Set the Deflate Buffer Size"),
+    AP_INIT_TAKE1("DeflateMemLevel", deflate_set_memlevel, NULL, RSRC_CONF,
+                  "Set the Deflate Memory Level (1-9)"),
+    AP_INIT_TAKE1("DeflateCompressionLevel", deflate_set_compressionlevel, NULL, RSRC_CONF,
+                  "Set the Deflate Compression Level (1-9)"),
+    {NULL}
+};
+
+module AP_MODULE_DECLARE_DATA deflate_module = {
+    STANDARD20_MODULE_STUFF,
+    NULL,                         /* dir config creater */
+    NULL,                         /* dir merger --- default is to override */
+    create_deflate_server_config, /* server config */
+    NULL,                         /* merge server config */
+    deflate_filter_cmds,          /* command table */
+    register_hooks                /* register hooks */
+};
Index: uKadecot/trunk/tools/makefsdata/option/cc932.c
===================================================================
--- uKadecot/trunk/tools/makefsdata/option/cc932.c	(revision 101)
+++ uKadecot/trunk/tools/makefsdata/option/cc932.c	(revision 101)
@@ -0,0 +1,3798 @@
+/*------------------------------------------------------------------------*/
+/* Unicode - OEM code bidirectional converter  (C)ChaN, 2009              */
+/*                                                                        */
+/* CP932 (Japanese Shift-JIS)                                             */
+/*------------------------------------------------------------------------*/
+
+#include "../ff.h"
+
+#define _TINY_TABLE	0
+
+#if !_USE_LFN || _CODE_PAGE != 932
+#error This file is not needed in current configuration. Remove from the project.
+#endif
+
+
+static
+const WCHAR uni2sjis[] = {
+/*  Unicode - Sjis, Unicode - Sjis, Unicode - Sjis, Unicode - Sjis, */
+	0x00A7, 0x8198, 0x00A8, 0x814E, 0x00B0, 0x818B, 0x00B1, 0x817D,
+	0x00B4, 0x814C, 0x00B6, 0x81F7, 0x00D7, 0x817E, 0x00F7, 0x8180,
+	0x0391, 0x839F, 0x0392, 0x83A0, 0x0393, 0x83A1, 0x0394, 0x83A2,
+	0x0395, 0x83A3, 0x0396, 0x83A4, 0x0397, 0x83A5, 0x0398, 0x83A6,
+	0x0399, 0x83A7, 0x039A, 0x83A8, 0x039B, 0x83A9, 0x039C, 0x83AA,
+	0x039D, 0x83AB, 0x039E, 0x83AC, 0x039F, 0x83AD, 0x03A0, 0x83AE,
+	0x03A1, 0x83AF, 0x03A3, 0x83B0, 0x03A4, 0x83B1, 0x03A5, 0x83B2,
+	0x03A6, 0x83B3, 0x03A7, 0x83B4, 0x03A8, 0x83B5, 0x03A9, 0x83B6,
+	0x03B1, 0x83BF, 0x03B2, 0x83C0, 0x03B3, 0x83C1, 0x03B4, 0x83C2,
+	0x03B5, 0x83C3, 0x03B6, 0x83C4, 0x03B7, 0x83C5, 0x03B8, 0x83C6,
+	0x03B9, 0x83C7, 0x03BA, 0x83C8, 0x03BB, 0x83C9, 0x03BC, 0x83CA,
+	0x03BD, 0x83CB, 0x03BE, 0x83CC, 0x03BF, 0x83CD, 0x03C0, 0x83CE,
+	0x03C1, 0x83CF, 0x03C3, 0x83D0, 0x03C4, 0x83D1, 0x03C5, 0x83D2,
+	0x03C6, 0x83D3, 0x03C7, 0x83D4, 0x03C8, 0x83D5, 0x03C9, 0x83D6,
+	0x0401, 0x8446, 0x0410, 0x8440, 0x0411, 0x8441, 0x0412, 0x8442,
+	0x0413, 0x8443, 0x0414, 0x8444, 0x0415, 0x8445, 0x0416, 0x8447,
+	0x0417, 0x8448, 0x0418, 0x8449, 0x0419, 0x844A, 0x041A, 0x844B,
+	0x041B, 0x844C, 0x041C, 0x844D, 0x041D, 0x844E, 0x041E, 0x844F,
+	0x041F, 0x8450, 0x0420, 0x8451, 0x0421, 0x8452, 0x0422, 0x8453,
+	0x0423, 0x8454, 0x0424, 0x8455, 0x0425, 0x8456, 0x0426, 0x8457,
+	0x0427, 0x8458, 0x0428, 0x8459, 0x0429, 0x845A, 0x042A, 0x845B,
+	0x042B, 0x845C, 0x042C, 0x845D, 0x042D, 0x845E, 0x042E, 0x845F,
+	0x042F, 0x8460, 0x0430, 0x8470, 0x0431, 0x8471, 0x0432, 0x8472,
+	0x0433, 0x8473, 0x0434, 0x8474, 0x0435, 0x8475, 0x0436, 0x8477,
+	0x0437, 0x8478, 0x0438, 0x8479, 0x0439, 0x847A, 0x043A, 0x847B,
+	0x043B, 0x847C, 0x043C, 0x847D, 0x043D, 0x847E, 0x043E, 0x8480,
+	0x043F, 0x8481, 0x0440, 0x8482, 0x0441, 0x8483, 0x0442, 0x8484,
+	0x0443, 0x8485, 0x0444, 0x8486, 0x0445, 0x8487, 0x0446, 0x8488,
+	0x0447, 0x8489, 0x0448, 0x848A, 0x0449, 0x848B, 0x044A, 0x848C,
+	0x044B, 0x848D, 0x044C, 0x848E, 0x044D, 0x848F, 0x044E, 0x8490,
+	0x044F, 0x8491, 0x0451, 0x8476, 0x2010, 0x815D, 0x2015, 0x815C,
+	0x2018, 0x8165, 0x2019, 0x8166, 0x201C, 0x8167, 0x201D, 0x8168,
+	0x2020, 0x81F5, 0x2021, 0x81F6, 0x2025, 0x8164, 0x2026, 0x8163,
+	0x2030, 0x81F1, 0x2032, 0x818C, 0x2033, 0x818D, 0x203B, 0x81A6,
+	0x2103, 0x818E, 0x2116, 0x8782, 0x2121, 0x8784, 0x212B, 0x81F0,
+	0x2160, 0x8754, 0x2161, 0x8755, 0x2162, 0x8756, 0x2163, 0x8757,
+	0x2164, 0x8758, 0x2165, 0x8759, 0x2166, 0x875A, 0x2167, 0x875B,
+	0x2168, 0x875C, 0x2169, 0x875D, 0x2170, 0xFA40, 0x2171, 0xFA41,
+	0x2172, 0xFA42, 0x2173, 0xFA43, 0x2174, 0xFA44, 0x2175, 0xFA45,
+	0x2176, 0xFA46, 0x2177, 0xFA47, 0x2178, 0xFA48, 0x2179, 0xFA49,
+	0x2190, 0x81A9, 0x2191, 0x81AA, 0x2192, 0x81A8, 0x2193, 0x81AB,
+	0x21D2, 0x81CB, 0x21D4, 0x81CC, 0x2200, 0x81CD, 0x2202, 0x81DD,
+	0x2203, 0x81CE, 0x2207, 0x81DE, 0x2208, 0x81B8, 0x220B, 0x81B9,
+	0x2211, 0x8794, 0x221A, 0x81E3, 0x221D, 0x81E5, 0x221E, 0x8187,
+	0x221F, 0x8798, 0x2220, 0x81DA, 0x2225, 0x8161, 0x2227, 0x81C8,
+	0x2228, 0x81C9, 0x2229, 0x81BF, 0x222A, 0x81BE, 0x222B, 0x81E7,
+	0x222C, 0x81E8, 0x222E, 0x8793, 0x2234, 0x8188, 0x2235, 0x81E6,
+	0x223D, 0x81E4, 0x2252, 0x81E0, 0x2260, 0x8182, 0x2261, 0x81DF,
+	0x2266, 0x8185, 0x2267, 0x8186, 0x226A, 0x81E1, 0x226B, 0x81E2,
+	0x2282, 0x81BC, 0x2283, 0x81BD, 0x2286, 0x81BA, 0x2287, 0x81BB,
+	0x22A5, 0x81DB, 0x22BF, 0x8799, 0x2312, 0x81DC, 0x2460, 0x8740,
+	0x2461, 0x8741, 0x2462, 0x8742, 0x2463, 0x8743, 0x2464, 0x8744,
+	0x2465, 0x8745, 0x2466, 0x8746, 0x2467, 0x8747, 0x2468, 0x8748,
+	0x2469, 0x8749, 0x246A, 0x874A, 0x246B, 0x874B, 0x246C, 0x874C,
+	0x246D, 0x874D, 0x246E, 0x874E, 0x246F, 0x874F, 0x2470, 0x8750,
+	0x2471, 0x8751, 0x2472, 0x8752, 0x2473, 0x8753, 0x2500, 0x849F,
+	0x2501, 0x84AA, 0x2502, 0x84A0, 0x2503, 0x84AB, 0x250C, 0x84A1,
+	0x250F, 0x84AC, 0x2510, 0x84A2, 0x2513, 0x84AD, 0x2514, 0x84A4,
+	0x2517, 0x84AF, 0x2518, 0x84A3, 0x251B, 0x84AE, 0x251C, 0x84A5,
+	0x251D, 0x84BA, 0x2520, 0x84B5, 0x2523, 0x84B0, 0x2524, 0x84A7,
+	0x2525, 0x84BC, 0x2528, 0x84B7, 0x252B, 0x84B2, 0x252C, 0x84A6,
+	0x252F, 0x84B6, 0x2530, 0x84BB, 0x2533, 0x84B1, 0x2534, 0x84A8,
+	0x2537, 0x84B8, 0x2538, 0x84BD, 0x253B, 0x84B3, 0x253C, 0x84A9,
+	0x253F, 0x84B9, 0x2542, 0x84BE, 0x254B, 0x84B4, 0x25A0, 0x81A1,
+	0x25A1, 0x81A0, 0x25B2, 0x81A3, 0x25B3, 0x81A2, 0x25BC, 0x81A5,
+	0x25BD, 0x81A4, 0x25C6, 0x819F, 0x25C7, 0x819E, 0x25CB, 0x819B,
+	0x25CE, 0x819D, 0x25CF, 0x819C, 0x25EF, 0x81FC, 0x2605, 0x819A,
+	0x2606, 0x8199, 0x2640, 0x818A, 0x2642, 0x8189, 0x266A, 0x81F4,
+	0x266D, 0x81F3, 0x266F, 0x81F2, 0x3000, 0x8140, 0x3001, 0x8141,
+	0x3002, 0x8142, 0x3003, 0x8156, 0x3005, 0x8158, 0x3006, 0x8159,
+	0x3007, 0x815A, 0x3008, 0x8171, 0x3009, 0x8172, 0x300A, 0x8173,
+	0x300B, 0x8174, 0x300C, 0x8175, 0x300D, 0x8176, 0x300E, 0x8177,
+	0x300F, 0x8178, 0x3010, 0x8179, 0x3011, 0x817A, 0x3012, 0x81A7,
+	0x3013, 0x81AC, 0x3014, 0x816B, 0x3015, 0x816C, 0x301D, 0x8780,
+	0x301F, 0x8781, 0x3041, 0x829F, 0x3042, 0x82A0, 0x3043, 0x82A1,
+	0x3044, 0x82A2, 0x3045, 0x82A3, 0x3046, 0x82A4, 0x3047, 0x82A5,
+	0x3048, 0x82A6, 0x3049, 0x82A7, 0x304A, 0x82A8, 0x304B, 0x82A9,
+	0x304C, 0x82AA, 0x304D, 0x82AB, 0x304E, 0x82AC, 0x304F, 0x82AD,
+	0x3050, 0x82AE, 0x3051, 0x82AF, 0x3052, 0x82B0, 0x3053, 0x82B1,
+	0x3054, 0x82B2, 0x3055, 0x82B3, 0x3056, 0x82B4, 0x3057, 0x82B5,
+	0x3058, 0x82B6, 0x3059, 0x82B7, 0x305A, 0x82B8, 0x305B, 0x82B9,
+	0x305C, 0x82BA, 0x305D, 0x82BB, 0x305E, 0x82BC, 0x305F, 0x82BD,
+	0x3060, 0x82BE, 0x3061, 0x82BF, 0x3062, 0x82C0, 0x3063, 0x82C1,
+	0x3064, 0x82C2, 0x3065, 0x82C3, 0x3066, 0x82C4, 0x3067, 0x82C5,
+	0x3068, 0x82C6, 0x3069, 0x82C7, 0x306A, 0x82C8, 0x306B, 0x82C9,
+	0x306C, 0x82CA, 0x306D, 0x82CB, 0x306E, 0x82CC, 0x306F, 0x82CD,
+	0x3070, 0x82CE, 0x3071, 0x82CF, 0x3072, 0x82D0, 0x3073, 0x82D1,
+	0x3074, 0x82D2, 0x3075, 0x82D3, 0x3076, 0x82D4, 0x3077, 0x82D5,
+	0x3078, 0x82D6, 0x3079, 0x82D7, 0x307A, 0x82D8, 0x307B, 0x82D9,
+	0x307C, 0x82DA, 0x307D, 0x82DB, 0x307E, 0x82DC, 0x307F, 0x82DD,
+	0x3080, 0x82DE, 0x3081, 0x82DF, 0x3082, 0x82E0, 0x3083, 0x82E1,
+	0x3084, 0x82E2, 0x3085, 0x82E3, 0x3086, 0x82E4, 0x3087, 0x82E5,
+	0x3088, 0x82E6, 0x3089, 0x82E7, 0x308A, 0x82E8, 0x308B, 0x82E9,
+	0x308C, 0x82EA, 0x308D, 0x82EB, 0x308E, 0x82EC, 0x308F, 0x82ED,
+	0x3090, 0x82EE, 0x3091, 0x82EF, 0x3092, 0x82F0, 0x3093, 0x82F1,
+	0x309B, 0x814A, 0x309C, 0x814B, 0x309D, 0x8154,
+	0x309E, 0x8155, 0x30A1, 0x8340, 0x30A2, 0x8341, 0x30A3, 0x8342,
+	0x30A4, 0x8343, 0x30A5, 0x8344, 0x30A6, 0x8345, 0x30A7, 0x8346,
+	0x30A8, 0x8347, 0x30A9, 0x8348, 0x30AA, 0x8349, 0x30AB, 0x834A,
+	0x30AC, 0x834B, 0x30AD, 0x834C, 0x30AE, 0x834D, 0x30AF, 0x834E,
+	0x30B0, 0x834F, 0x30B1, 0x8350, 0x30B2, 0x8351, 0x30B3, 0x8352,
+	0x30B4, 0x8353, 0x30B5, 0x8354, 0x30B6, 0x8355, 0x30B7, 0x8356,
+	0x30B8, 0x8357, 0x30B9, 0x8358, 0x30BA, 0x8359, 0x30BB, 0x835A,
+	0x30BC, 0x835B, 0x30BD, 0x835C, 0x30BE, 0x835D, 0x30BF, 0x835E,
+	0x30C0, 0x835F, 0x30C1, 0x8360, 0x30C2, 0x8361, 0x30C3, 0x8362,
+	0x30C4, 0x8363, 0x30C5, 0x8364, 0x30C6, 0x8365, 0x30C7, 0x8366,
+	0x30C8, 0x8367, 0x30C9, 0x8368, 0x30CA, 0x8369, 0x30CB, 0x836A,
+	0x30CC, 0x836B, 0x30CD, 0x836C, 0x30CE, 0x836D, 0x30CF, 0x836E,
+	0x30D0, 0x836F, 0x30D1, 0x8370, 0x30D2, 0x8371, 0x30D3, 0x8372,
+	0x30D4, 0x8373, 0x30D5, 0x8374, 0x30D6, 0x8375, 0x30D7, 0x8376,
+	0x30D8, 0x8377, 0x30D9, 0x8378, 0x30DA, 0x8379, 0x30DB, 0x837A,
+	0x30DC, 0x837B, 0x30DD, 0x837C, 0x30DE, 0x837D, 0x30DF, 0x837E,
+	0x30E0, 0x8380, 0x30E1, 0x8381, 0x30E2, 0x8382, 0x30E3, 0x8383,
+	0x30E4, 0x8384, 0x30E5, 0x8385, 0x30E6, 0x8386, 0x30E7, 0x8387,
+	0x30E8, 0x8388, 0x30E9, 0x8389, 0x30EA, 0x838A, 0x30EB, 0x838B,
+	0x30EC, 0x838C, 0x30ED, 0x838D, 0x30EE, 0x838E, 0x30EF, 0x838F,
+	0x30F0, 0x8390, 0x30F1, 0x8391, 0x30F2, 0x8392, 0x30F3, 0x8393,
+	0x30F4, 0x8394, 0x30F5, 0x8395, 0x30F6, 0x8396, 0x30FB, 0x8145,
+	0x30FC, 0x815B, 0x30FD, 0x8152, 0x30FE, 0x8153, 0x3231, 0x878A,
+	0x3232, 0x878B, 0x3239, 0x878C, 0x32A4, 0x8785, 0x32A5, 0x8786,
+	0x32A6, 0x8787, 0x32A7, 0x8788, 0x32A8, 0x8789, 0x3303, 0x8765,
+	0x330D, 0x8769, 0x3314, 0x8760, 0x3318, 0x8763, 0x3322, 0x8761,
+	0x3323, 0x876B, 0x3326, 0x876A, 0x3327, 0x8764, 0x332B, 0x876C,
+	0x3336, 0x8766, 0x333B, 0x876E, 0x3349, 0x875F, 0x334A, 0x876D,
+	0x334D, 0x8762, 0x3351, 0x8767, 0x3357, 0x8768, 0x337B, 0x877E,
+	0x337C, 0x878F, 0x337D, 0x878E, 0x337E, 0x878D, 0x338E, 0x8772,
+	0x338F, 0x8773, 0x339C, 0x876F, 0x339D, 0x8770, 0x339E, 0x8771,
+	0x33A1, 0x8775, 0x33C4, 0x8774, 0x33CD, 0x8783, 0x4E00, 0x88EA,
+	0x4E01, 0x929A, 0x4E03, 0x8EB5, 0x4E07, 0x969C, 0x4E08, 0x8FE4,
+	0x4E09, 0x8E4F, 0x4E0A, 0x8FE3, 0x4E0B, 0x89BA, 0x4E0D, 0x9573,
+	0x4E0E, 0x975E, 0x4E10, 0x98A0, 0x4E11, 0x894E, 0x4E14, 0x8A8E,
+	0x4E15, 0x98A1, 0x4E16, 0x90A2, 0x4E17, 0x99C0, 0x4E18, 0x8B75,
+	0x4E19, 0x95B8, 0x4E1E, 0x8FE5, 0x4E21, 0x97BC, 0x4E26, 0x95C0,
+	0x4E28, 0xFA68, 0x4E2A, 0x98A2, 0x4E2D, 0x9286, 0x4E31, 0x98A3,
+	0x4E32, 0x8BF8, 0x4E36, 0x98A4, 0x4E38, 0x8ADB, 0x4E39, 0x924F,
+	0x4E3B, 0x8EE5, 0x4E3C, 0x98A5, 0x4E3F, 0x98A6, 0x4E42, 0x98A7,
+	0x4E43, 0x9454, 0x4E45, 0x8B76, 0x4E4B, 0x9456, 0x4E4D, 0x93E1,
+	0x4E4E, 0x8CC1, 0x4E4F, 0x9652, 0x4E55, 0xE568, 0x4E56, 0x98A8,
+	0x4E57, 0x8FE6, 0x4E58, 0x98A9, 0x4E59, 0x89B3, 0x4E5D, 0x8BE3,
+	0x4E5E, 0x8CEE, 0x4E5F, 0x96E7, 0x4E62, 0x9BA4, 0x4E71, 0x9790,
+	0x4E73, 0x93FB, 0x4E7E, 0x8AA3, 0x4E80, 0x8B54, 0x4E82, 0x98AA,
+	0x4E85, 0x98AB, 0x4E86, 0x97B9, 0x4E88, 0x975C, 0x4E89, 0x9188,
+	0x4E8A, 0x98AD, 0x4E8B, 0x8E96, 0x4E8C, 0x93F1, 0x4E8E, 0x98B0,
+	0x4E91, 0x895D, 0x4E92, 0x8CDD, 0x4E94, 0x8CDC, 0x4E95, 0x88E4,
+	0x4E98, 0x986A, 0x4E99, 0x9869, 0x4E9B, 0x8DB1, 0x4E9C, 0x889F,
+	0x4E9E, 0x98B1, 0x4E9F, 0x98B2, 0x4EA0, 0x98B3, 0x4EA1, 0x9653,
+	0x4EA2, 0x98B4, 0x4EA4, 0x8CF0, 0x4EA5, 0x88E5, 0x4EA6, 0x9692,
+	0x4EA8, 0x8B9C, 0x4EAB, 0x8B9D, 0x4EAC, 0x8B9E, 0x4EAD, 0x92E0,
+	0x4EAE, 0x97BA, 0x4EB0, 0x98B5, 0x4EB3, 0x98B6, 0x4EB6, 0x98B7,
+	0x4EBA, 0x906C, 0x4EC0, 0x8F59, 0x4EC1, 0x906D, 0x4EC2, 0x98BC,
+	0x4EC4, 0x98BA, 0x4EC6, 0x98BB, 0x4EC7, 0x8B77, 0x4ECA, 0x8DA1,
+	0x4ECB, 0x89EE, 0x4ECD, 0x98B9, 0x4ECE, 0x98B8, 0x4ECF, 0x95A7,
+	0x4ED4, 0x8E65, 0x4ED5, 0x8E64, 0x4ED6, 0x91BC, 0x4ED7, 0x98BD,
+	0x4ED8, 0x9574, 0x4ED9, 0x90E5, 0x4EDD, 0x8157, 0x4EDE, 0x98BE,
+	0x4EDF, 0x98C0, 0x4EE1, 0xFA69, 0x4EE3, 0x91E3, 0x4EE4, 0x97DF,
+	0x4EE5, 0x88C8, 0x4EED, 0x98BF, 0x4EEE, 0x89BC, 0x4EF0, 0x8BC2,
+	0x4EF2, 0x9287, 0x4EF6, 0x8C8F, 0x4EF7, 0x98C1, 0x4EFB, 0x9443,
+	0x4EFC, 0xFA6A, 0x4F00, 0xFA6B, 0x4F01, 0x8AE9, 0x4F03, 0xFA6C,
+	0x4F09, 0x98C2, 0x4F0A, 0x88C9, 0x4F0D, 0x8CDE, 0x4F0E, 0x8AEA,
+	0x4F0F, 0x959A, 0x4F10, 0x94B0, 0x4F11, 0x8B78, 0x4F1A, 0x89EF,
+	0x4F1C, 0x98E5, 0x4F1D, 0x9360, 0x4F2F, 0x948C, 0x4F30, 0x98C4,
+	0x4F34, 0x94BA, 0x4F36, 0x97E0, 0x4F38, 0x904C, 0x4F39, 0xFA6D,
+	0x4F3A, 0x8E66, 0x4F3C, 0x8E97, 0x4F3D, 0x89BE, 0x4F43, 0x92CF,
+	0x4F46, 0x9241, 0x4F47, 0x98C8, 0x4F4D, 0x88CA, 0x4F4E, 0x92E1,
+	0x4F4F, 0x8F5A, 0x4F50, 0x8DB2, 0x4F51, 0x9743, 0x4F53, 0x91CC,
+	0x4F55, 0x89BD, 0x4F56, 0xFA6E, 0x4F57, 0x98C7, 0x4F59, 0x975D,
+	0x4F5A, 0x98C3, 0x4F5B, 0x98C5, 0x4F5C, 0x8DEC, 0x4F5D, 0x98C6,
+	0x4F5E, 0x9B43, 0x4F69, 0x98CE, 0x4F6F, 0x98D1, 0x4F70, 0x98CF,
+	0x4F73, 0x89C0, 0x4F75, 0x95B9, 0x4F76, 0x98C9, 0x4F7B, 0x98CD,
+	0x4F7C, 0x8CF1, 0x4F7F, 0x8E67, 0x4F83, 0x8AA4, 0x4F86, 0x98D2,
+	0x4F88, 0x98CA, 0x4F8A, 0xFA70, 0x4F8B, 0x97E1, 0x4F8D, 0x8E98,
+	0x4F8F, 0x98CB, 0x4F91, 0x98D0, 0x4F92, 0xFA6F, 0x4F94, 0xFA72,
+	0x4F96, 0x98D3, 0x4F98, 0x98CC, 0x4F9A, 0xFA71, 0x4F9B, 0x8B9F,
+	0x4F9D, 0x88CB, 0x4FA0, 0x8BA0, 0x4FA1, 0x89BF, 0x4FAB, 0x9B44,
+	0x4FAD, 0x9699, 0x4FAE, 0x958E, 0x4FAF, 0x8CF2, 0x4FB5, 0x904E,
+	0x4FB6, 0x97B5, 0x4FBF, 0x95D6, 0x4FC2, 0x8C57, 0x4FC3, 0x91A3,
+	0x4FC4, 0x89E2, 0x4FC9, 0xFA61, 0x4FCA, 0x8F72, 0x4FCD, 0xFA73,
+	0x4FCE, 0x98D7, 0x4FD0, 0x98DC, 0x4FD1, 0x98DA, 0x4FD4, 0x98D5,
+	0x4FD7, 0x91AD, 0x4FD8, 0x98D8, 0x4FDA, 0x98DB, 0x4FDB, 0x98D9,
+	0x4FDD, 0x95DB, 0x4FDF, 0x98D6, 0x4FE1, 0x904D, 0x4FE3, 0x9693,
+	0x4FE4, 0x98DD, 0x4FE5, 0x98DE, 0x4FEE, 0x8F43, 0x4FEF, 0x98EB,
+	0x4FF3, 0x946F, 0x4FF5, 0x9555, 0x4FF6, 0x98E6, 0x4FF8, 0x95EE,
+	0x4FFA, 0x89B4, 0x4FFE, 0x98EA, 0x4FFF, 0xFA76, 0x5005, 0x98E4,
+	0x5006, 0x98ED, 0x5009, 0x9171, 0x500B, 0x8CC2, 0x500D, 0x947B,
+	0x500F, 0xE0C5, 0x5011, 0x98EC, 0x5012, 0x937C, 0x5014, 0x98E1,
+	0x5016, 0x8CF4, 0x5019, 0x8CF3, 0x501A, 0x98DF, 0x501E, 0xFA77,
+	0x501F, 0x8ED8, 0x5021, 0x98E7, 0x5022, 0xFA75, 0x5023, 0x95ED,
+	0x5024, 0x926C, 0x5025, 0x98E3, 0x5026, 0x8C91, 0x5028, 0x98E0,
+	0x5029, 0x98E8, 0x502A, 0x98E2, 0x502B, 0x97CF, 0x502C, 0x98E9,
+	0x502D, 0x9860, 0x5036, 0x8BE4, 0x5039, 0x8C90, 0x5040, 0xFA74,
+	0x5042, 0xFA7A, 0x5043, 0x98EE, 0x5046, 0xFA78, 0x5047, 0x98EF,
+	0x5048, 0x98F3, 0x5049, 0x88CC, 0x504F, 0x95CE, 0x5050, 0x98F2,
+	0x5055, 0x98F1, 0x5056, 0x98F5, 0x505A, 0x98F4, 0x505C, 0x92E2,
+	0x5065, 0x8C92, 0x506C, 0x98F6, 0x5070, 0xFA79, 0x5072, 0x8EC3,
+	0x5074, 0x91A4, 0x5075, 0x92E3, 0x5076, 0x8BF4, 0x5078, 0x98F7,
+	0x507D, 0x8B55, 0x5080, 0x98F8, 0x5085, 0x98FA, 0x508D, 0x9654,
+	0x5091, 0x8C86, 0x5094, 0xFA7B, 0x5098, 0x8E50, 0x5099, 0x94F5,
+	0x509A, 0x98F9, 0x50AC, 0x8DC3, 0x50AD, 0x9762, 0x50B2, 0x98FC,
+	0x50B3, 0x9942, 0x50B4, 0x98FB, 0x50B5, 0x8DC2, 0x50B7, 0x8F9D,
+	0x50BE, 0x8C58, 0x50C2, 0x9943, 0x50C5, 0x8BCD, 0x50C9, 0x9940,
+	0x50CA, 0x9941, 0x50CD, 0x93AD, 0x50CF, 0x919C, 0x50D1, 0x8BA1,
+	0x50D5, 0x966C, 0x50D6, 0x9944, 0x50D8, 0xFA7D, 0x50DA, 0x97BB,
+	0x50DE, 0x9945, 0x50E3, 0x9948, 0x50E5, 0x9946, 0x50E7, 0x916D,
+	0x50ED, 0x9947, 0x50EE, 0x9949, 0x50F4, 0xFA7C, 0x50F5, 0x994B,
+	0x50F9, 0x994A, 0x50FB, 0x95C6, 0x5100, 0x8B56, 0x5101, 0x994D,
+	0x5102, 0x994E, 0x5104, 0x89AD, 0x5109, 0x994C, 0x5112, 0x8EF2,
+	0x5114, 0x9951, 0x5115, 0x9950, 0x5116, 0x994F, 0x5118, 0x98D4,
+	0x511A, 0x9952, 0x511F, 0x8F9E, 0x5121, 0x9953, 0x512A, 0x9744,
+	0x5132, 0x96D7, 0x5137, 0x9955, 0x513A, 0x9954, 0x513B, 0x9957,
+	0x513C, 0x9956, 0x513F, 0x9958, 0x5140, 0x9959, 0x5141, 0x88F2,
+	0x5143, 0x8CB3, 0x5144, 0x8C5A, 0x5145, 0x8F5B, 0x5146, 0x929B,
+	0x5147, 0x8BA2, 0x5148, 0x90E6, 0x5149, 0x8CF5, 0x514A, 0xFA7E,
+	0x514B, 0x8D8E, 0x514C, 0x995B, 0x514D, 0x96C6, 0x514E, 0x9365,
+	0x5150, 0x8E99, 0x5152, 0x995A, 0x5154, 0x995C, 0x515A, 0x937D,
+	0x515C, 0x8A95, 0x5162, 0x995D, 0x5164, 0xFA80, 0x5165, 0x93FC,
+	0x5168, 0x9153, 0x5169, 0x995F, 0x516A, 0x9960, 0x516B, 0x94AA,
+	0x516C, 0x8CF6, 0x516D, 0x985A, 0x516E, 0x9961, 0x5171, 0x8BA4,
+	0x5175, 0x95BA, 0x5176, 0x91B4, 0x5177, 0x8BEF, 0x5178, 0x9354,
+	0x517C, 0x8C93, 0x5180, 0x9962, 0x5182, 0x9963, 0x5185, 0x93E0,
+	0x5186, 0x897E, 0x5189, 0x9966, 0x518A, 0x8DFB, 0x518C, 0x9965,
+	0x518D, 0x8DC4, 0x518F, 0x9967, 0x5190, 0xE3EC, 0x5191, 0x9968,
+	0x5192, 0x9660, 0x5193, 0x9969, 0x5195, 0x996A, 0x5196, 0x996B,
+	0x5197, 0x8FE7, 0x5199, 0x8ECA, 0x519D, 0xFA81, 0x51A0, 0x8AA5,
+	0x51A2, 0x996E, 0x51A4, 0x996C, 0x51A5, 0x96BB, 0x51A6, 0x996D,
+	0x51A8, 0x9579, 0x51A9, 0x996F, 0x51AA, 0x9970, 0x51AB, 0x9971,
+	0x51AC, 0x937E, 0x51B0, 0x9975, 0x51B1, 0x9973, 0x51B2, 0x9974,
+	0x51B3, 0x9972, 0x51B4, 0x8DE1, 0x51B5, 0x9976, 0x51B6, 0x96E8,
+	0x51B7, 0x97E2, 0x51BD, 0x9977, 0x51BE, 0xFA82, 0x51C4, 0x90A6,
+	0x51C5, 0x9978, 0x51C6, 0x8F79, 0x51C9, 0x9979, 0x51CB, 0x929C,
+	0x51CC, 0x97BD, 0x51CD, 0x9380, 0x51D6, 0x99C3, 0x51DB, 0x997A,
+	0x51DC, 0xEAA3, 0x51DD, 0x8BC3, 0x51E0, 0x997B, 0x51E1, 0x967D,
+	0x51E6, 0x8F88, 0x51E7, 0x91FA, 0x51E9, 0x997D, 0x51EA, 0x93E2,
+	0x51EC, 0xFA83, 0x51ED, 0x997E, 0x51F0, 0x9980, 0x51F1, 0x8A4D,
+	0x51F5, 0x9981, 0x51F6, 0x8BA5, 0x51F8, 0x93CA, 0x51F9, 0x899A,
+	0x51FA, 0x8F6F, 0x51FD, 0x949F, 0x51FE, 0x9982, 0x5200, 0x9381,
+	0x5203, 0x906E, 0x5204, 0x9983, 0x5206, 0x95AA, 0x5207, 0x90D8,
+	0x5208, 0x8AA0, 0x520A, 0x8AA7, 0x520B, 0x9984, 0x520E, 0x9986,
+	0x5211, 0x8C59, 0x5214, 0x9985, 0x5215, 0xFA84, 0x5217, 0x97F1,
+	0x521D, 0x8F89, 0x5224, 0x94BB, 0x5225, 0x95CA, 0x5227, 0x9987,
+	0x5229, 0x9798, 0x522A, 0x9988, 0x522E, 0x9989, 0x5230, 0x939E,
+	0x5233, 0x998A, 0x5236, 0x90A7, 0x5237, 0x8DFC, 0x5238, 0x8C94,
+	0x5239, 0x998B, 0x523A, 0x8E68, 0x523B, 0x8D8F, 0x5243, 0x92E4,
+	0x5244, 0x998D, 0x5247, 0x91A5, 0x524A, 0x8DED, 0x524B, 0x998E,
+	0x524C, 0x998F, 0x524D, 0x914F, 0x524F, 0x998C, 0x5254, 0x9991,
+	0x5256, 0x9655, 0x525B, 0x8D84, 0x525E, 0x9990, 0x5263, 0x8C95,
+	0x5264, 0x8DDC, 0x5265, 0x948D, 0x5269, 0x9994, 0x526A, 0x9992,
+	0x526F, 0x959B, 0x5270, 0x8FE8, 0x5271, 0x999B, 0x5272, 0x8A84,
+	0x5273, 0x9995, 0x5274, 0x9993, 0x5275, 0x916E, 0x527D, 0x9997,
+	0x527F, 0x9996, 0x5283, 0x8A63, 0x5287, 0x8C80, 0x5288, 0x999C,
+	0x5289, 0x97AB, 0x528D, 0x9998, 0x5291, 0x999D, 0x5292, 0x999A,
+	0x5294, 0x9999, 0x529B, 0x97CD, 0x529C, 0xFA85, 0x529F, 0x8CF7,
+	0x52A0, 0x89C1, 0x52A3, 0x97F2, 0x52A6, 0xFA86, 0x52A9, 0x8F95,
+	0x52AA, 0x9377, 0x52AB, 0x8D85, 0x52AC, 0x99A0, 0x52AD, 0x99A1,
+	0x52AF, 0xFB77, 0x52B1, 0x97E3, 0x52B4, 0x984A, 0x52B5, 0x99A3,
+	0x52B9, 0x8CF8, 0x52BC, 0x99A2, 0x52BE, 0x8A4E, 0x52C0, 0xFA87,
+	0x52C1, 0x99A4, 0x52C3, 0x9675, 0x52C5, 0x92BA, 0x52C7, 0x9745,
+	0x52C9, 0x95D7, 0x52CD, 0x99A5, 0x52D2, 0xE8D3, 0x52D5, 0x93AE,
+	0x52D7, 0x99A6, 0x52D8, 0x8AA8, 0x52D9, 0x96B1, 0x52DB, 0xFA88,
+	0x52DD, 0x8F9F, 0x52DE, 0x99A7, 0x52DF, 0x95E5, 0x52E0, 0x99AB,
+	0x52E2, 0x90A8, 0x52E3, 0x99A8, 0x52E4, 0x8BCE, 0x52E6, 0x99A9,
+	0x52E7, 0x8AA9, 0x52F2, 0x8C4D, 0x52F3, 0x99AC, 0x52F5, 0x99AD,
+	0x52F8, 0x99AE, 0x52F9, 0x99AF, 0x52FA, 0x8ED9, 0x52FE, 0x8CF9,
+	0x52FF, 0x96DC, 0x5300, 0xFA89, 0x5301, 0x96E6, 0x5302, 0x93F5,
+	0x5305, 0x95EF, 0x5306, 0x99B0, 0x5307, 0xFA8A, 0x5308, 0x99B1,
+	0x530D, 0x99B3, 0x530F, 0x99B5, 0x5310, 0x99B4, 0x5315, 0x99B6,
+	0x5316, 0x89BB, 0x5317, 0x966B, 0x5319, 0x8DFA, 0x531A, 0x99B7,
+	0x531D, 0x9178, 0x5320, 0x8FA0, 0x5321, 0x8BA7, 0x5323, 0x99B8,
+	0x5324, 0xFA8B, 0x532A, 0x94D9, 0x532F, 0x99B9, 0x5331, 0x99BA,
+	0x5333, 0x99BB, 0x5338, 0x99BC, 0x5339, 0x9543, 0x533A, 0x8BE6,
+	0x533B, 0x88E3, 0x533F, 0x93BD, 0x5340, 0x99BD, 0x5341, 0x8F5C,
+	0x5343, 0x90E7, 0x5345, 0x99BF, 0x5346, 0x99BE, 0x5347, 0x8FA1,
+	0x5348, 0x8CDF, 0x5349, 0x99C1, 0x534A, 0x94BC, 0x534D, 0x99C2,
+	0x5351, 0x94DA, 0x5352, 0x91B2, 0x5353, 0x91EC, 0x5354, 0x8BA6,
+	0x5357, 0x93EC, 0x5358, 0x9250, 0x535A, 0x948E, 0x535C, 0x966D,
+	0x535E, 0x99C4, 0x5360, 0x90E8, 0x5366, 0x8C54, 0x5369, 0x99C5,
+	0x536E, 0x99C6, 0x536F, 0x894B, 0x5370, 0x88F3, 0x5371, 0x8AEB,
+	0x5372, 0xFA8C, 0x5373, 0x91A6, 0x5374, 0x8B70, 0x5375, 0x9791,
+	0x5377, 0x99C9, 0x5378, 0x89B5, 0x537B, 0x99C8, 0x537F, 0x8BA8,
+	0x5382, 0x99CA, 0x5384, 0x96EF, 0x5393, 0xFA8D, 0x5396, 0x99CB,
+	0x5398, 0x97D0, 0x539A, 0x8CFA, 0x539F, 0x8CB4, 0x53A0, 0x99CC,
+	0x53A5, 0x99CE, 0x53A6, 0x99CD, 0x53A8, 0x907E, 0x53A9, 0x8958,
+	0x53AD, 0x897D, 0x53AE, 0x99CF, 0x53B0, 0x99D0, 0x53B2, 0xFA8E,
+	0x53B3, 0x8CB5, 0x53B6, 0x99D1, 0x53BB, 0x8B8E, 0x53C2, 0x8E51,
+	0x53C3, 0x99D2, 0x53C8, 0x9694, 0x53C9, 0x8DB3, 0x53CA, 0x8B79,
+	0x53CB, 0x9746, 0x53CC, 0x916F, 0x53CD, 0x94BD, 0x53CE, 0x8EFB,
+	0x53D4, 0x8F66, 0x53D6, 0x8EE6, 0x53D7, 0x8EF3, 0x53D9, 0x8F96,
+	0x53DB, 0x94BE, 0x53DD, 0xFA8F, 0x53DF, 0x99D5, 0x53E1, 0x8962,
+	0x53E2, 0x9170, 0x53E3, 0x8CFB, 0x53E4, 0x8CC3, 0x53E5, 0x8BE5,
+	0x53E8, 0x99D9, 0x53E9, 0x9240, 0x53EA, 0x91FC, 0x53EB, 0x8BA9,
+	0x53EC, 0x8FA2, 0x53ED, 0x99DA, 0x53EE, 0x99D8, 0x53EF, 0x89C2,
+	0x53F0, 0x91E4, 0x53F1, 0x8EB6, 0x53F2, 0x8E6A, 0x53F3, 0x8945,
+	0x53F6, 0x8A90, 0x53F7, 0x8D86, 0x53F8, 0x8E69, 0x53FA, 0x99DB,
+	0x5401, 0x99DC, 0x5403, 0x8B68, 0x5404, 0x8A65, 0x5408, 0x8D87,
+	0x5409, 0x8B67, 0x540A, 0x92DD, 0x540B, 0x8944, 0x540C, 0x93AF,
+	0x540D, 0x96BC, 0x540E, 0x8D40, 0x540F, 0x9799, 0x5410, 0x9366,
+	0x5411, 0x8CFC, 0x541B, 0x8C4E, 0x541D, 0x99E5, 0x541F, 0x8BE1,
+	0x5420, 0x9669, 0x5426, 0x94DB, 0x5429, 0x99E4, 0x542B, 0x8ADC,
+	0x542C, 0x99DF, 0x542D, 0x99E0, 0x542E, 0x99E2, 0x5436, 0x99E3,
+	0x5438, 0x8B7A, 0x5439, 0x9081, 0x543B, 0x95AB, 0x543C, 0x99E1,
+	0x543D, 0x99DD, 0x543E, 0x8CE1, 0x5440, 0x99DE, 0x5442, 0x9843,
+	0x5446, 0x95F0, 0x5448, 0x92E6, 0x5449, 0x8CE0, 0x544A, 0x8D90,
+	0x544E, 0x99E6, 0x5451, 0x93DB, 0x545F, 0x99EA, 0x5468, 0x8EFC,
+	0x546A, 0x8EF4, 0x5470, 0x99ED, 0x5471, 0x99EB, 0x5473, 0x96A1,
+	0x5475, 0x99E8, 0x5476, 0x99F1, 0x5477, 0x99EC, 0x547B, 0x99EF,
+	0x547C, 0x8CC4, 0x547D, 0x96BD, 0x5480, 0x99F0, 0x5484, 0x99F2,
+	0x5486, 0x99F4, 0x548A, 0xFA92, 0x548B, 0x8DEE, 0x548C, 0x9861,
+	0x548E, 0x99E9, 0x548F, 0x99E7, 0x5490, 0x99F3, 0x5492, 0x99EE,
+	0x549C, 0xFA91, 0x54A2, 0x99F6, 0x54A4, 0x9A42, 0x54A5, 0x99F8,
+	0x54A8, 0x99FC, 0x54A9, 0xFA93, 0x54AB, 0x9A40, 0x54AC, 0x99F9,
+	0x54AF, 0x9A5D, 0x54B2, 0x8DE7, 0x54B3, 0x8A50, 0x54B8, 0x99F7,
+	0x54BC, 0x9A44, 0x54BD, 0x88F4, 0x54BE, 0x9A43, 0x54C0, 0x88A3,
+	0x54C1, 0x9569, 0x54C2, 0x9A41, 0x54C4, 0x99FA, 0x54C7, 0x99F5,
+	0x54C8, 0x99FB, 0x54C9, 0x8DC6, 0x54D8, 0x9A45, 0x54E1, 0x88F5,
+	0x54E2, 0x9A4E, 0x54E5, 0x9A46, 0x54E6, 0x9A47, 0x54E8, 0x8FA3,
+	0x54E9, 0x9689, 0x54ED, 0x9A4C, 0x54EE, 0x9A4B, 0x54F2, 0x934E,
+	0x54FA, 0x9A4D, 0x54FD, 0x9A4A, 0x54FF, 0xFA94, 0x5504, 0x8953,
+	0x5506, 0x8DB4, 0x5507, 0x904F, 0x550F, 0x9A48, 0x5510, 0x9382,
+	0x5514, 0x9A49, 0x5516, 0x88A0, 0x552E, 0x9A53, 0x552F, 0x9742,
+	0x5531, 0x8FA5, 0x5533, 0x9A59, 0x5538, 0x9A58, 0x5539, 0x9A4F,
+	0x553E, 0x91C1, 0x5540, 0x9A50, 0x5544, 0x91ED, 0x5545, 0x9A55,
+	0x5546, 0x8FA4, 0x554C, 0x9A52, 0x554F, 0x96E2, 0x5553, 0x8C5B,
+	0x5556, 0x9A56, 0x5557, 0x9A57, 0x555C, 0x9A54, 0x555D, 0x9A5A,
+	0x5563, 0x9A51, 0x557B, 0x9A60, 0x557C, 0x9A65, 0x557E, 0x9A61,
+	0x5580, 0x9A5C, 0x5583, 0x9A66, 0x5584, 0x9150, 0x5586, 0xFA95,
+	0x5587, 0x9A68, 0x5589, 0x8D41, 0x558A, 0x9A5E, 0x558B, 0x929D,
+	0x5598, 0x9A62, 0x5599, 0x9A5B, 0x559A, 0x8AAB, 0x559C, 0x8AEC,
+	0x559D, 0x8A85, 0x559E, 0x9A63, 0x559F, 0x9A5F, 0x55A7, 0x8C96,
+	0x55A8, 0x9A69, 0x55A9, 0x9A67, 0x55AA, 0x9172, 0x55AB, 0x8B69,
+	0x55AC, 0x8BAA, 0x55AE, 0x9A64, 0x55B0, 0x8BF2, 0x55B6, 0x8963,
+	0x55C4, 0x9A6D, 0x55C5, 0x9A6B, 0x55C7, 0x9AA5, 0x55D4, 0x9A70,
+	0x55DA, 0x9A6A, 0x55DC, 0x9A6E, 0x55DF, 0x9A6C, 0x55E3, 0x8E6B,
+	0x55E4, 0x9A6F, 0x55F7, 0x9A72, 0x55F9, 0x9A77, 0x55FD, 0x9A75,
+	0x55FE, 0x9A74, 0x5606, 0x9251, 0x5609, 0x89C3, 0x5614, 0x9A71,
+	0x5616, 0x9A73, 0x5617, 0x8FA6, 0x5618, 0x8952, 0x561B, 0x9A76,
+	0x5629, 0x89DC, 0x562F, 0x9A82, 0x5631, 0x8FFA, 0x5632, 0x9A7D,
+	0x5634, 0x9A7B, 0x5636, 0x9A7C, 0x5638, 0x9A7E, 0x5642, 0x895C,
+	0x564C, 0x9158, 0x564E, 0x9A78, 0x5650, 0x9A79, 0x565B, 0x8A9A,
+	0x5664, 0x9A81, 0x5668, 0x8AED, 0x566A, 0x9A84, 0x566B, 0x9A80,
+	0x566C, 0x9A83, 0x5674, 0x95AC, 0x5678, 0x93D3, 0x567A, 0x94B6,
+	0x5680, 0x9A86, 0x5686, 0x9A85, 0x5687, 0x8A64, 0x568A, 0x9A87,
+	0x568F, 0x9A8A, 0x5694, 0x9A89, 0x56A0, 0x9A88, 0x56A2, 0x9458,
+	0x56A5, 0x9A8B, 0x56AE, 0x9A8C, 0x56B4, 0x9A8E, 0x56B6, 0x9A8D,
+	0x56BC, 0x9A90, 0x56C0, 0x9A93, 0x56C1, 0x9A91, 0x56C2, 0x9A8F,
+	0x56C3, 0x9A92, 0x56C8, 0x9A94, 0x56CE, 0x9A95, 0x56D1, 0x9A96,
+	0x56D3, 0x9A97, 0x56D7, 0x9A98, 0x56D8, 0x9964, 0x56DA, 0x8EFA,
+	0x56DB, 0x8E6C, 0x56DE, 0x89F1, 0x56E0, 0x88F6, 0x56E3, 0x9263,
+	0x56EE, 0x9A99, 0x56F0, 0x8DA2, 0x56F2, 0x88CD, 0x56F3, 0x907D,
+	0x56F9, 0x9A9A, 0x56FA, 0x8CC5, 0x56FD, 0x8D91, 0x56FF, 0x9A9C,
+	0x5700, 0x9A9B, 0x5703, 0x95DE, 0x5704, 0x9A9D, 0x5708, 0x9A9F,
+	0x5709, 0x9A9E, 0x570B, 0x9AA0, 0x570D, 0x9AA1, 0x570F, 0x8C97,
+	0x5712, 0x8980, 0x5713, 0x9AA2, 0x5716, 0x9AA4, 0x5718, 0x9AA3,
+	0x571C, 0x9AA6, 0x571F, 0x9379, 0x5726, 0x9AA7, 0x5727, 0x88B3,
+	0x5728, 0x8DDD, 0x572D, 0x8C5C, 0x5730, 0x926E, 0x5737, 0x9AA8,
+	0x5738, 0x9AA9, 0x573B, 0x9AAB, 0x5740, 0x9AAC, 0x5742, 0x8DE2,
+	0x5747, 0x8BCF, 0x574A, 0x9656, 0x574E, 0x9AAA, 0x574F, 0x9AAD,
+	0x5750, 0x8DBF, 0x5751, 0x8D42, 0x5759, 0xFA96, 0x5761, 0x9AB1,
+	0x5764, 0x8DA3, 0x5765, 0xFA97, 0x5766, 0x9252, 0x5769, 0x9AAE,
+	0x576A, 0x92D8, 0x577F, 0x9AB2, 0x5782, 0x9082, 0x5788, 0x9AB0,
+	0x5789, 0x9AB3, 0x578B, 0x8C5E, 0x5793, 0x9AB4, 0x57A0, 0x9AB5,
+	0x57A2, 0x8D43, 0x57A3, 0x8A5F, 0x57A4, 0x9AB7, 0x57AA, 0x9AB8,
+	0x57AC, 0xFA98, 0x57B0, 0x9AB9, 0x57B3, 0x9AB6, 0x57C0, 0x9AAF,
+	0x57C3, 0x9ABA, 0x57C6, 0x9ABB, 0x57C7, 0xFA9A, 0x57C8, 0xFA99,
+	0x57CB, 0x9684, 0x57CE, 0x8FE9, 0x57D2, 0x9ABD, 0x57D3, 0x9ABE,
+	0x57D4, 0x9ABC, 0x57D6, 0x9AC0, 0x57DC, 0x9457, 0x57DF, 0x88E6,
+	0x57E0, 0x9575, 0x57E3, 0x9AC1, 0x57F4, 0x8FFB, 0x57F7, 0x8EB7,
+	0x57F9, 0x947C, 0x57FA, 0x8AEE, 0x57FC, 0x8DE9, 0x5800, 0x9678,
+	0x5802, 0x93B0, 0x5805, 0x8C98, 0x5806, 0x91CD, 0x580A, 0x9ABF,
+	0x580B, 0x9AC2, 0x5815, 0x91C2, 0x5819, 0x9AC3, 0x581D, 0x9AC4,
+	0x5821, 0x9AC6, 0x5824, 0x92E7, 0x582A, 0x8AAC, 0x582F, 0xEA9F,
+	0x5830, 0x8981, 0x5831, 0x95F1, 0x5834, 0x8FEA, 0x5835, 0x9367,
+	0x583A, 0x8DE4, 0x583D, 0x9ACC, 0x5840, 0x95BB, 0x5841, 0x97DB,
+	0x584A, 0x89F2, 0x584B, 0x9AC8, 0x5851, 0x9159, 0x5852, 0x9ACB,
+	0x5854, 0x9383, 0x5857, 0x9368, 0x5858, 0x9384, 0x5859, 0x94B7,
+	0x585A, 0x92CB, 0x585E, 0x8DC7, 0x5862, 0x9AC7, 0x5869, 0x8996,
+	0x586B, 0x9355, 0x5870, 0x9AC9, 0x5872, 0x9AC5, 0x5875, 0x906F,
+	0x5879, 0x9ACD, 0x587E, 0x8F6D, 0x5883, 0x8BAB, 0x5885, 0x9ACE,
+	0x5893, 0x95E6, 0x5897, 0x919D, 0x589C, 0x92C4, 0x589E, 0xFA9D,
+	0x589F, 0x9AD0, 0x58A8, 0x966E, 0x58AB, 0x9AD1, 0x58AE, 0x9AD6,
+	0x58B2, 0xFA9E, 0x58B3, 0x95AD, 0x58B8, 0x9AD5, 0x58B9, 0x9ACF,
+	0x58BA, 0x9AD2, 0x58BB, 0x9AD4, 0x58BE, 0x8DA4, 0x58C1, 0x95C7,
+	0x58C5, 0x9AD7, 0x58C7, 0x9264, 0x58CA, 0x89F3, 0x58CC, 0x8FEB,
+	0x58D1, 0x9AD9, 0x58D3, 0x9AD8, 0x58D5, 0x8D88, 0x58D7, 0x9ADA,
+	0x58D8, 0x9ADC, 0x58D9, 0x9ADB, 0x58DC, 0x9ADE, 0x58DE, 0x9AD3,
+	0x58DF, 0x9AE0, 0x58E4, 0x9ADF, 0x58E5, 0x9ADD, 0x58EB, 0x8E6D,
+	0x58EC, 0x9070, 0x58EE, 0x9173, 0x58EF, 0x9AE1, 0x58F0, 0x90BA,
+	0x58F1, 0x88EB, 0x58F2, 0x9484, 0x58F7, 0x92D9, 0x58F9, 0x9AE3,
+	0x58FA, 0x9AE2, 0x58FB, 0x9AE4, 0x58FC, 0x9AE5, 0x58FD, 0x9AE6,
+	0x5902, 0x9AE7, 0x5909, 0x95CF, 0x590A, 0x9AE8, 0x590B, 0xFA9F,
+	0x590F, 0x89C4, 0x5910, 0x9AE9, 0x5915, 0x975B, 0x5916, 0x8A4F,
+	0x5918, 0x99C7, 0x5919, 0x8F67, 0x591A, 0x91BD, 0x591B, 0x9AEA,
+	0x591C, 0x96E9, 0x5922, 0x96B2, 0x5925, 0x9AEC, 0x5927, 0x91E5,
+	0x5929, 0x9356, 0x592A, 0x91BE, 0x592B, 0x9576, 0x592C, 0x9AED,
+	0x592D, 0x9AEE, 0x592E, 0x899B, 0x5931, 0x8EB8, 0x5932, 0x9AEF,
+	0x5937, 0x88CE, 0x5938, 0x9AF0, 0x593E, 0x9AF1, 0x5944, 0x8982,
+	0x5947, 0x8AEF, 0x5948, 0x93DE, 0x5949, 0x95F2, 0x594E, 0x9AF5,
+	0x594F, 0x9174, 0x5950, 0x9AF4, 0x5951, 0x8C5F, 0x5953, 0xFAA0,
+	0x5954, 0x967A, 0x5955, 0x9AF3, 0x5957, 0x9385, 0x5958, 0x9AF7,
+	0x595A, 0x9AF6, 0x595B, 0xFAA1, 0x595D, 0xFAA2, 0x5960, 0x9AF9,
+	0x5962, 0x9AF8, 0x5963, 0xFAA3, 0x5965, 0x899C, 0x5967, 0x9AFA,
+	0x5968, 0x8FA7, 0x5969, 0x9AFC, 0x596A, 0x9244, 0x596C, 0x9AFB,
+	0x596E, 0x95B1, 0x5973, 0x8F97, 0x5974, 0x937A, 0x5978, 0x9B40,
+	0x597D, 0x8D44, 0x5981, 0x9B41, 0x5982, 0x9440, 0x5983, 0x94DC,
+	0x5984, 0x96CF, 0x598A, 0x9444, 0x598D, 0x9B4A, 0x5993, 0x8B57,
+	0x5996, 0x9764, 0x5999, 0x96AD, 0x599B, 0x9BAA, 0x599D, 0x9B42,
+	0x59A3, 0x9B45, 0x59A4, 0xFAA4, 0x59A5, 0x91C3, 0x59A8, 0x9657,
+	0x59AC, 0x9369, 0x59B2, 0x9B46, 0x59B9, 0x9685, 0x59BA, 0xFAA5,
+	0x59BB, 0x8DC8, 0x59BE, 0x8FA8, 0x59C6, 0x9B47, 0x59C9, 0x8E6F,
+	0x59CB, 0x8E6E, 0x59D0, 0x88B7, 0x59D1, 0x8CC6, 0x59D3, 0x90A9,
+	0x59D4, 0x88CF, 0x59D9, 0x9B4B, 0x59DA, 0x9B4C, 0x59DC, 0x9B49,
+	0x59E5, 0x8957, 0x59E6, 0x8AAD, 0x59E8, 0x9B48, 0x59EA, 0x96C3,
+	0x59EB, 0x9550, 0x59F6, 0x88A6, 0x59FB, 0x88F7, 0x59FF, 0x8E70,
+	0x5A01, 0x88D0, 0x5A03, 0x88A1, 0x5A09, 0x9B51, 0x5A11, 0x9B4F,
+	0x5A18, 0x96BA, 0x5A1A, 0x9B52, 0x5A1C, 0x9B50, 0x5A1F, 0x9B4E,
+	0x5A20, 0x9050, 0x5A25, 0x9B4D, 0x5A29, 0x95D8, 0x5A2F, 0x8CE2,
+	0x5A35, 0x9B56, 0x5A36, 0x9B57, 0x5A3C, 0x8FA9, 0x5A40, 0x9B53,
+	0x5A41, 0x984B, 0x5A46, 0x946B, 0x5A49, 0x9B55, 0x5A5A, 0x8DA5,
+	0x5A62, 0x9B58, 0x5A66, 0x9577, 0x5A6A, 0x9B59, 0x5A6C, 0x9B54,
+	0x5A7F, 0x96B9, 0x5A92, 0x947D, 0x5A9A, 0x9B5A, 0x5A9B, 0x9551,
+	0x5ABC, 0x9B5B, 0x5ABD, 0x9B5F, 0x5ABE, 0x9B5C, 0x5AC1, 0x89C5,
+	0x5AC2, 0x9B5E, 0x5AC9, 0x8EB9, 0x5ACB, 0x9B5D, 0x5ACC, 0x8C99,
+	0x5AD0, 0x9B6B, 0x5AD6, 0x9B64, 0x5AD7, 0x9B61, 0x5AE1, 0x9284,
+	0x5AE3, 0x9B60, 0x5AE6, 0x9B62, 0x5AE9, 0x9B63, 0x5AFA, 0x9B65,
+	0x5AFB, 0x9B66, 0x5B09, 0x8AF0, 0x5B0B, 0x9B68, 0x5B0C, 0x9B67,
+	0x5B16, 0x9B69, 0x5B22, 0x8FEC, 0x5B2A, 0x9B6C, 0x5B2C, 0x92DA,
+	0x5B30, 0x8964, 0x5B32, 0x9B6A, 0x5B36, 0x9B6D, 0x5B3E, 0x9B6E,
+	0x5B40, 0x9B71, 0x5B43, 0x9B6F, 0x5B45, 0x9B70, 0x5B50, 0x8E71,
+	0x5B51, 0x9B72, 0x5B54, 0x8D45, 0x5B55, 0x9B73, 0x5B56, 0xFAA6,
+	0x5B57, 0x8E9A, 0x5B58, 0x91B6, 0x5B5A, 0x9B74, 0x5B5B, 0x9B75,
+	0x5B5C, 0x8E79, 0x5B5D, 0x8D46, 0x5B5F, 0x96D0, 0x5B63, 0x8B47,
+	0x5B64, 0x8CC7, 0x5B65, 0x9B76, 0x5B66, 0x8A77, 0x5B69, 0x9B77,
+	0x5B6B, 0x91B7, 0x5B70, 0x9B78, 0x5B71, 0x9BA1, 0x5B73, 0x9B79,
+	0x5B75, 0x9B7A, 0x5B78, 0x9B7B, 0x5B7A, 0x9B7D, 0x5B80, 0x9B7E,
+	0x5B83, 0x9B80, 0x5B85, 0x91EE, 0x5B87, 0x8946, 0x5B88, 0x8EE7,
+	0x5B89, 0x88C0, 0x5B8B, 0x9176, 0x5B8C, 0x8AAE, 0x5B8D, 0x8EB3,
+	0x5B8F, 0x8D47, 0x5B95, 0x9386, 0x5B97, 0x8F40, 0x5B98, 0x8AAF,
+	0x5B99, 0x9288, 0x5B9A, 0x92E8, 0x5B9B, 0x88B6, 0x5B9C, 0x8B58,
+	0x5B9D, 0x95F3, 0x5B9F, 0x8EC0, 0x5BA2, 0x8B71, 0x5BA3, 0x90E9,
+	0x5BA4, 0x8EBA, 0x5BA5, 0x9747, 0x5BA6, 0x9B81, 0x5BAE, 0x8B7B,
+	0x5BB0, 0x8DC9, 0x5BB3, 0x8A51, 0x5BB4, 0x8983, 0x5BB5, 0x8FAA,
+	0x5BB6, 0x89C6, 0x5BB8, 0x9B82, 0x5BB9, 0x9765, 0x5BBF, 0x8F68,
+	0x5BC0, 0xFAA7, 0x5BC2, 0x8EE2, 0x5BC3, 0x9B83, 0x5BC4, 0x8AF1,
+	0x5BC5, 0x93D0, 0x5BC6, 0x96A7, 0x5BC7, 0x9B84, 0x5BC9, 0x9B85,
+	0x5BCC, 0x9578, 0x5BD0, 0x9B87, 0x5BD2, 0x8AA6, 0x5BD3, 0x8BF5,
+	0x5BD4, 0x9B86, 0x5BD8, 0xFAA9, 0x5BDB, 0x8AB0, 0x5BDD, 0x9051,
+	0x5BDE, 0x9B8B, 0x5BDF, 0x8E40, 0x5BE1, 0x89C7, 0x5BE2, 0x9B8A,
+	0x5BE4, 0x9B88, 0x5BE5, 0x9B8C, 0x5BE6, 0x9B89, 0x5BE7, 0x944A,
+	0x5BE8, 0x9ECB, 0x5BE9, 0x9052, 0x5BEB, 0x9B8D, 0x5BEC, 0xFAAA,
+	0x5BEE, 0x97BE, 0x5BF0, 0x9B8E, 0x5BF3, 0x9B90, 0x5BF5, 0x929E,
+	0x5BF6, 0x9B8F, 0x5BF8, 0x90A1, 0x5BFA, 0x8E9B, 0x5BFE, 0x91CE,
+	0x5BFF, 0x8EF5, 0x5C01, 0x9595, 0x5C02, 0x90EA, 0x5C04, 0x8ECB,
+	0x5C05, 0x9B91, 0x5C06, 0x8FAB, 0x5C07, 0x9B92, 0x5C08, 0x9B93,
+	0x5C09, 0x88D1, 0x5C0A, 0x91B8, 0x5C0B, 0x9071, 0x5C0D, 0x9B94,
+	0x5C0E, 0x93B1, 0x5C0F, 0x8FAC, 0x5C11, 0x8FAD, 0x5C13, 0x9B95,
+	0x5C16, 0x90EB, 0x5C1A, 0x8FAE, 0x5C1E, 0xFAAB, 0x5C20, 0x9B96,
+	0x5C22, 0x9B97, 0x5C24, 0x96DE, 0x5C28, 0x9B98, 0x5C2D, 0x8BC4,
+	0x5C31, 0x8F41, 0x5C38, 0x9B99, 0x5C39, 0x9B9A, 0x5C3A, 0x8EDA,
+	0x5C3B, 0x904B, 0x5C3C, 0x93F2, 0x5C3D, 0x9073, 0x5C3E, 0x94F6,
+	0x5C3F, 0x9441, 0x5C40, 0x8BC7, 0x5C41, 0x9B9B, 0x5C45, 0x8B8F,
+	0x5C46, 0x9B9C, 0x5C48, 0x8BFC, 0x5C4A, 0x93CD, 0x5C4B, 0x89AE,
+	0x5C4D, 0x8E72, 0x5C4E, 0x9B9D, 0x5C4F, 0x9BA0, 0x5C50, 0x9B9F,
+	0x5C51, 0x8BFB, 0x5C53, 0x9B9E, 0x5C55, 0x9357, 0x5C5E, 0x91AE,
+	0x5C60, 0x936A, 0x5C61, 0x8EC6, 0x5C64, 0x9177, 0x5C65, 0x979A,
+	0x5C6C, 0x9BA2, 0x5C6E, 0x9BA3, 0x5C6F, 0x93D4, 0x5C71, 0x8E52,
+	0x5C76, 0x9BA5, 0x5C79, 0x9BA6, 0x5C8C, 0x9BA7, 0x5C90, 0x8AF2,
+	0x5C91, 0x9BA8, 0x5C94, 0x9BA9, 0x5CA1, 0x89AA, 0x5CA6, 0xFAAC,
+	0x5CA8, 0x915A, 0x5CA9, 0x8AE2, 0x5CAB, 0x9BAB, 0x5CAC, 0x96A6,
+	0x5CB1, 0x91D0, 0x5CB3, 0x8A78, 0x5CB6, 0x9BAD, 0x5CB7, 0x9BAF,
+	0x5CB8, 0x8ADD, 0x5CBA, 0xFAAD, 0x5CBB, 0x9BAC, 0x5CBC, 0x9BAE,
+	0x5CBE, 0x9BB1, 0x5CC5, 0x9BB0, 0x5CC7, 0x9BB2, 0x5CD9, 0x9BB3,
+	0x5CE0, 0x93BB, 0x5CE1, 0x8BAC, 0x5CE8, 0x89E3, 0x5CE9, 0x9BB4,
+	0x5CEA, 0x9BB9, 0x5CED, 0x9BB7, 0x5CEF, 0x95F5, 0x5CF0, 0x95F4,
+	0x5CF5, 0xFAAE, 0x5CF6, 0x9387, 0x5CFA, 0x9BB6, 0x5CFB, 0x8F73,
+	0x5CFD, 0x9BB5, 0x5D07, 0x9092, 0x5D0B, 0x9BBA, 0x5D0E, 0x8DE8,
+	0x5D11, 0x9BC0, 0x5D14, 0x9BC1, 0x5D15, 0x9BBB, 0x5D16, 0x8A52,
+	0x5D17, 0x9BBC, 0x5D18, 0x9BC5, 0x5D19, 0x9BC4, 0x5D1A, 0x9BC3,
+	0x5D1B, 0x9BBF, 0x5D1F, 0x9BBE, 0x5D22, 0x9BC2, 0x5D27, 0xFAAF,
+	0x5D29, 0x95F6, 0x5D42, 0xFAB2, 0x5D4B, 0x9BC9, 0x5D4C, 0x9BC6,
+	0x5D4E, 0x9BC8, 0x5D50, 0x9792, 0x5D52, 0x9BC7, 0x5D53, 0xFAB0,
+	0x5D5C, 0x9BBD, 0x5D69, 0x9093, 0x5D6C, 0x9BCA, 0x5D6D, 0xFAB3,
+	0x5D6F, 0x8DB5, 0x5D73, 0x9BCB, 0x5D76, 0x9BCC, 0x5D82, 0x9BCF,
+	0x5D84, 0x9BCE, 0x5D87, 0x9BCD, 0x5D8B, 0x9388, 0x5D8C, 0x9BB8,
+	0x5D90, 0x9BD5, 0x5D9D, 0x9BD1, 0x5DA2, 0x9BD0, 0x5DAC, 0x9BD2,
+	0x5DAE, 0x9BD3, 0x5DB7, 0x9BD6, 0x5DB8, 0xFAB4, 0x5DB9, 0xFAB5,
+	0x5DBA, 0x97E4, 0x5DBC, 0x9BD7, 0x5DBD, 0x9BD4, 0x5DC9, 0x9BD8,
+	0x5DCC, 0x8ADE, 0x5DCD, 0x9BD9, 0x5DD0, 0xFAB6, 0x5DD2, 0x9BDB,
+	0x5DD3, 0x9BDA, 0x5DD6, 0x9BDC, 0x5DDB, 0x9BDD, 0x5DDD, 0x90EC,
+	0x5DDE, 0x8F42, 0x5DE1, 0x8F84, 0x5DE3, 0x9183, 0x5DE5, 0x8D48,
+	0x5DE6, 0x8DB6, 0x5DE7, 0x8D49, 0x5DE8, 0x8B90, 0x5DEB, 0x9BDE,
+	0x5DEE, 0x8DB7, 0x5DF1, 0x8CC8, 0x5DF2, 0x9BDF, 0x5DF3, 0x96A4,
+	0x5DF4, 0x9462, 0x5DF5, 0x9BE0, 0x5DF7, 0x8D4A, 0x5DFB, 0x8AAA,
+	0x5DFD, 0x9246, 0x5DFE, 0x8BD0, 0x5E02, 0x8E73, 0x5E03, 0x957A,
+	0x5E06, 0x94BF, 0x5E0B, 0x9BE1, 0x5E0C, 0x8AF3, 0x5E11, 0x9BE4,
+	0x5E16, 0x929F, 0x5E19, 0x9BE3, 0x5E1A, 0x9BE2, 0x5E1B, 0x9BE5,
+	0x5E1D, 0x92E9, 0x5E25, 0x9083, 0x5E2B, 0x8E74, 0x5E2D, 0x90C8,
+	0x5E2F, 0x91D1, 0x5E30, 0x8B41, 0x5E33, 0x92A0, 0x5E36, 0x9BE6,
+	0x5E37, 0x9BE7, 0x5E38, 0x8FED, 0x5E3D, 0x9658, 0x5E40, 0x9BEA,
+	0x5E43, 0x9BE9, 0x5E44, 0x9BE8, 0x5E45, 0x959D, 0x5E47, 0x9BF1,
+	0x5E4C, 0x9679, 0x5E4E, 0x9BEB, 0x5E54, 0x9BED, 0x5E55, 0x968B,
+	0x5E57, 0x9BEC, 0x5E5F, 0x9BEE, 0x5E61, 0x94A6, 0x5E62, 0x9BEF,
+	0x5E63, 0x95BC, 0x5E64, 0x9BF0, 0x5E72, 0x8AB1, 0x5E73, 0x95BD,
+	0x5E74, 0x944E, 0x5E75, 0x9BF2, 0x5E76, 0x9BF3, 0x5E78, 0x8D4B,
+	0x5E79, 0x8AB2, 0x5E7A, 0x9BF4, 0x5E7B, 0x8CB6, 0x5E7C, 0x9763,
+	0x5E7D, 0x9748, 0x5E7E, 0x8AF4, 0x5E7F, 0x9BF6, 0x5E81, 0x92A1,
+	0x5E83, 0x8D4C, 0x5E84, 0x8FAF, 0x5E87, 0x94DD, 0x5E8A, 0x8FB0,
+	0x5E8F, 0x8F98, 0x5E95, 0x92EA, 0x5E96, 0x95F7, 0x5E97, 0x9358,
+	0x5E9A, 0x8D4D, 0x5E9C, 0x957B, 0x5EA0, 0x9BF7, 0x5EA6, 0x9378,
+	0x5EA7, 0x8DC0, 0x5EAB, 0x8CC9, 0x5EAD, 0x92EB, 0x5EB5, 0x88C1,
+	0x5EB6, 0x8F8E, 0x5EB7, 0x8D4E, 0x5EB8, 0x9766, 0x5EC1, 0x9BF8,
+	0x5EC2, 0x9BF9, 0x5EC3, 0x9470, 0x5EC8, 0x9BFA, 0x5EC9, 0x97F5,
+	0x5ECA, 0x984C, 0x5ECF, 0x9BFC, 0x5ED0, 0x9BFB, 0x5ED3, 0x8A66,
+	0x5ED6, 0x9C40, 0x5EDA, 0x9C43, 0x5EDB, 0x9C44, 0x5EDD, 0x9C42,
+	0x5EDF, 0x955F, 0x5EE0, 0x8FB1, 0x5EE1, 0x9C46, 0x5EE2, 0x9C45,
+	0x5EE3, 0x9C41, 0x5EE8, 0x9C47, 0x5EE9, 0x9C48, 0x5EEC, 0x9C49,
+	0x5EF0, 0x9C4C, 0x5EF1, 0x9C4A, 0x5EF3, 0x9C4B, 0x5EF4, 0x9C4D,
+	0x5EF6, 0x8984, 0x5EF7, 0x92EC, 0x5EF8, 0x9C4E, 0x5EFA, 0x8C9A,
+	0x5EFB, 0x89F4, 0x5EFC, 0x9455, 0x5EFE, 0x9C4F, 0x5EFF, 0x93F9,
+	0x5F01, 0x95D9, 0x5F03, 0x9C50, 0x5F04, 0x984D, 0x5F09, 0x9C51,
+	0x5F0A, 0x95BE, 0x5F0B, 0x9C54, 0x5F0C, 0x989F, 0x5F0D, 0x98AF,
+	0x5F0F, 0x8EAE, 0x5F10, 0x93F3, 0x5F11, 0x9C55, 0x5F13, 0x8B7C,
+	0x5F14, 0x92A2, 0x5F15, 0x88F8, 0x5F16, 0x9C56, 0x5F17, 0x95A4,
+	0x5F18, 0x8D4F, 0x5F1B, 0x926F, 0x5F1F, 0x92ED, 0x5F21, 0xFAB7,
+	0x5F25, 0x96ED, 0x5F26, 0x8CB7, 0x5F27, 0x8CCA, 0x5F29, 0x9C57,
+	0x5F2D, 0x9C58, 0x5F2F, 0x9C5E, 0x5F31, 0x8EE3, 0x5F34, 0xFAB8,
+	0x5F35, 0x92A3, 0x5F37, 0x8BAD, 0x5F38, 0x9C59, 0x5F3C, 0x954A,
+	0x5F3E, 0x9265, 0x5F41, 0x9C5A, 0x5F45, 0xFA67, 0x5F48, 0x9C5B,
+	0x5F4A, 0x8BAE, 0x5F4C, 0x9C5C, 0x5F4E, 0x9C5D, 0x5F51, 0x9C5F,
+	0x5F53, 0x9396, 0x5F56, 0x9C60, 0x5F57, 0x9C61, 0x5F59, 0x9C62,
+	0x5F5C, 0x9C53, 0x5F5D, 0x9C52, 0x5F61, 0x9C63, 0x5F62, 0x8C60,
+	0x5F66, 0x9546, 0x5F67, 0xFAB9, 0x5F69, 0x8DCA, 0x5F6A, 0x9556,
+	0x5F6B, 0x92A4, 0x5F6C, 0x956A, 0x5F6D, 0x9C64, 0x5F70, 0x8FB2,
+	0x5F71, 0x8965, 0x5F73, 0x9C65, 0x5F77, 0x9C66, 0x5F79, 0x96F0,
+	0x5F7C, 0x94DE, 0x5F7F, 0x9C69, 0x5F80, 0x899D, 0x5F81, 0x90AA,
+	0x5F82, 0x9C68, 0x5F83, 0x9C67, 0x5F84, 0x8C61, 0x5F85, 0x91D2,
+	0x5F87, 0x9C6D, 0x5F88, 0x9C6B, 0x5F8A, 0x9C6A, 0x5F8B, 0x97A5,
+	0x5F8C, 0x8CE3, 0x5F90, 0x8F99, 0x5F91, 0x9C6C, 0x5F92, 0x936B,
+	0x5F93, 0x8F5D, 0x5F97, 0x93BE, 0x5F98, 0x9C70, 0x5F99, 0x9C6F,
+	0x5F9E, 0x9C6E, 0x5FA0, 0x9C71, 0x5FA1, 0x8CE4, 0x5FA8, 0x9C72,
+	0x5FA9, 0x959C, 0x5FAA, 0x8F7A, 0x5FAD, 0x9C73, 0x5FAE, 0x94F7,
+	0x5FB3, 0x93BF, 0x5FB4, 0x92A5, 0x5FB7, 0xFABA, 0x5FB9, 0x934F,
+	0x5FBC, 0x9C74, 0x5FBD, 0x8B4A, 0x5FC3, 0x9053, 0x5FC5, 0x954B,
+	0x5FCC, 0x8AF5, 0x5FCD, 0x9445, 0x5FD6, 0x9C75, 0x5FD7, 0x8E75,
+	0x5FD8, 0x9659, 0x5FD9, 0x965A, 0x5FDC, 0x899E, 0x5FDD, 0x9C7A,
+	0x5FDE, 0xFABB, 0x5FE0, 0x9289, 0x5FE4, 0x9C77, 0x5FEB, 0x89F5,
+	0x5FF0, 0x9CAB, 0x5FF1, 0x9C79, 0x5FF5, 0x944F, 0x5FF8, 0x9C78,
+	0x5FFB, 0x9C76, 0x5FFD, 0x8D9A, 0x5FFF, 0x9C7C, 0x600E, 0x9C83,
+	0x600F, 0x9C89, 0x6010, 0x9C81, 0x6012, 0x937B, 0x6015, 0x9C86,
+	0x6016, 0x957C, 0x6019, 0x9C80, 0x601B, 0x9C85, 0x601C, 0x97E5,
+	0x601D, 0x8E76, 0x6020, 0x91D3, 0x6021, 0x9C7D, 0x6025, 0x8B7D,
+	0x6026, 0x9C88, 0x6027, 0x90AB, 0x6028, 0x8985, 0x6029, 0x9C82,
+	0x602A, 0x89F6, 0x602B, 0x9C87, 0x602F, 0x8BAF, 0x6031, 0x9C84,
+	0x603A, 0x9C8A, 0x6041, 0x9C8C, 0x6042, 0x9C96, 0x6043, 0x9C94,
+	0x6046, 0x9C91, 0x604A, 0x9C90, 0x604B, 0x97F6, 0x604D, 0x9C92,
+	0x6050, 0x8BB0, 0x6052, 0x8D50, 0x6055, 0x8F9A, 0x6059, 0x9C99,
+	0x605A, 0x9C8B, 0x605D, 0xFABC, 0x605F, 0x9C8F, 0x6060, 0x9C7E,
+	0x6062, 0x89F8, 0x6063, 0x9C93, 0x6064, 0x9C95, 0x6065, 0x9270,
+	0x6068, 0x8DA6, 0x6069, 0x89B6, 0x606A, 0x9C8D, 0x606B, 0x9C98,
+	0x606C, 0x9C97, 0x606D, 0x8BB1, 0x606F, 0x91A7, 0x6070, 0x8A86,
+	0x6075, 0x8C62, 0x6077, 0x9C8E, 0x6081, 0x9C9A, 0x6083, 0x9C9D,
+	0x6084, 0x9C9F, 0x6085, 0xFABD, 0x6089, 0x8EBB, 0x608A, 0xFABE,
+	0x608B, 0x9CA5, 0x608C, 0x92EE, 0x608D, 0x9C9B, 0x6092, 0x9CA3,
+	0x6094, 0x89F7, 0x6096, 0x9CA1, 0x6097, 0x9CA2, 0x609A, 0x9C9E,
+	0x609B, 0x9CA0, 0x609F, 0x8CE5, 0x60A0, 0x9749, 0x60A3, 0x8AB3,
+	0x60A6, 0x8978, 0x60A7, 0x9CA4, 0x60A9, 0x9459, 0x60AA, 0x88AB,
+	0x60B2, 0x94DF, 0x60B3, 0x9C7B, 0x60B4, 0x9CAA, 0x60B5, 0x9CAE,
+	0x60B6, 0x96E3, 0x60B8, 0x9CA7, 0x60BC, 0x9389, 0x60BD, 0x9CAC,
+	0x60C5, 0x8FEE, 0x60C6, 0x9CAD, 0x60C7, 0x93D5, 0x60D1, 0x9866,
+	0x60D3, 0x9CA9, 0x60D5, 0xFAC0, 0x60D8, 0x9CAF, 0x60DA, 0x8D9B,
+	0x60DC, 0x90C9, 0x60DE, 0xFABF, 0x60DF, 0x88D2, 0x60E0, 0x9CA8,
+	0x60E1, 0x9CA6, 0x60E3, 0x9179, 0x60E7, 0x9C9C, 0x60E8, 0x8E53,
+	0x60F0, 0x91C4, 0x60F1, 0x9CBB, 0x60F2, 0xFAC2, 0x60F3, 0x917A,
+	0x60F4, 0x9CB6, 0x60F6, 0x9CB3, 0x60F7, 0x9CB4, 0x60F9, 0x8EE4,
+	0x60FA, 0x9CB7, 0x60FB, 0x9CBA, 0x6100, 0x9CB5, 0x6101, 0x8F44,
+	0x6103, 0x9CB8, 0x6106, 0x9CB2, 0x6108, 0x96FA, 0x6109, 0x96F9,
+	0x610D, 0x9CBC, 0x610E, 0x9CBD, 0x610F, 0x88D3, 0x6111, 0xFAC3,
+	0x6115, 0x9CB1, 0x611A, 0x8BF0, 0x611B, 0x88A4, 0x611F, 0x8AB4,
+	0x6120, 0xFAC1, 0x6121, 0x9CB9, 0x6127, 0x9CC1, 0x6128, 0x9CC0,
+	0x612C, 0x9CC5, 0x6130, 0xFAC5, 0x6134, 0x9CC6, 0x6137, 0xFAC4,
+	0x613C, 0x9CC4, 0x613D, 0x9CC7, 0x613E, 0x9CBF, 0x613F, 0x9CC3,
+	0x6142, 0x9CC8, 0x6144, 0x9CC9, 0x6147, 0x9CBE, 0x6148, 0x8E9C,
+	0x614A, 0x9CC2, 0x614B, 0x91D4, 0x614C, 0x8D51, 0x614D, 0x9CB0,
+	0x614E, 0x9054, 0x6153, 0x9CD6, 0x6155, 0x95E7, 0x6158, 0x9CCC,
+	0x6159, 0x9CCD, 0x615A, 0x9CCE, 0x615D, 0x9CD5, 0x615F, 0x9CD4,
+	0x6162, 0x969D, 0x6163, 0x8AB5, 0x6165, 0x9CD2, 0x6167, 0x8C64,
+	0x6168, 0x8A53, 0x616B, 0x9CCF, 0x616E, 0x97B6, 0x616F, 0x9CD1,
+	0x6170, 0x88D4, 0x6171, 0x9CD3, 0x6173, 0x9CCA, 0x6174, 0x9CD0,
+	0x6175, 0x9CD7, 0x6176, 0x8C63, 0x6177, 0x9CCB, 0x617E, 0x977C,
+	0x6182, 0x974A, 0x6187, 0x9CDA, 0x618A, 0x9CDE, 0x618E, 0x919E,
+	0x6190, 0x97F7, 0x6191, 0x9CDF, 0x6194, 0x9CDC, 0x6196, 0x9CD9,
+	0x6198, 0xFAC6, 0x6199, 0x9CD8, 0x619A, 0x9CDD, 0x61A4, 0x95AE,
+	0x61A7, 0x93B2, 0x61A9, 0x8C65, 0x61AB, 0x9CE0, 0x61AC, 0x9CDB,
+	0x61AE, 0x9CE1, 0x61B2, 0x8C9B, 0x61B6, 0x89AF, 0x61BA, 0x9CE9,
+	0x61BE, 0x8AB6, 0x61C3, 0x9CE7, 0x61C6, 0x9CE8, 0x61C7, 0x8DA7,
+	0x61C8, 0x9CE6, 0x61C9, 0x9CE4, 0x61CA, 0x9CE3, 0x61CB, 0x9CEA,
+	0x61CC, 0x9CE2, 0x61CD, 0x9CEC, 0x61D0, 0x89F9, 0x61E3, 0x9CEE,
+	0x61E6, 0x9CED, 0x61F2, 0x92A6, 0x61F4, 0x9CF1, 0x61F6, 0x9CEF,
+	0x61F7, 0x9CE5, 0x61F8, 0x8C9C, 0x61FA, 0x9CF0, 0x61FC, 0x9CF4,
+	0x61FD, 0x9CF3, 0x61FE, 0x9CF5, 0x61FF, 0x9CF2, 0x6200, 0x9CF6,
+	0x6208, 0x9CF7, 0x6209, 0x9CF8, 0x620A, 0x95E8, 0x620C, 0x9CFA,
+	0x620D, 0x9CF9, 0x620E, 0x8F5E, 0x6210, 0x90AC, 0x6211, 0x89E4,
+	0x6212, 0x89FA, 0x6213, 0xFAC7, 0x6214, 0x9CFB, 0x6216, 0x88BD,
+	0x621A, 0x90CA, 0x621B, 0x9CFC, 0x621D, 0xE6C1, 0x621E, 0x9D40,
+	0x621F, 0x8C81, 0x6221, 0x9D41, 0x6226, 0x90ED, 0x622A, 0x9D42,
+	0x622E, 0x9D43, 0x622F, 0x8B59, 0x6230, 0x9D44, 0x6232, 0x9D45,
+	0x6233, 0x9D46, 0x6234, 0x91D5, 0x6238, 0x8CCB, 0x623B, 0x96DF,
+	0x623F, 0x965B, 0x6240, 0x8F8A, 0x6241, 0x9D47, 0x6247, 0x90EE,
+	0x6248, 0xE7BB, 0x6249, 0x94E0, 0x624B, 0x8EE8, 0x624D, 0x8DCB,
+	0x624E, 0x9D48, 0x6253, 0x91C5, 0x6255, 0x95A5, 0x6258, 0x91EF,
+	0x625B, 0x9D4B, 0x625E, 0x9D49, 0x6260, 0x9D4C, 0x6263, 0x9D4A,
+	0x6268, 0x9D4D, 0x626E, 0x95AF, 0x6271, 0x88B5, 0x6276, 0x957D,
+	0x6279, 0x94E1, 0x627C, 0x9D4E, 0x627E, 0x9D51, 0x627F, 0x8FB3,
+	0x6280, 0x8B5A, 0x6282, 0x9D4F, 0x6283, 0x9D56, 0x6284, 0x8FB4,
+	0x6289, 0x9D50, 0x628A, 0x9463, 0x6291, 0x977D, 0x6292, 0x9D52,
+	0x6293, 0x9D53, 0x6294, 0x9D57, 0x6295, 0x938A, 0x6296, 0x9D54,
+	0x6297, 0x8D52, 0x6298, 0x90DC, 0x629B, 0x9D65, 0x629C, 0x94B2,
+	0x629E, 0x91F0, 0x62A6, 0xFAC8, 0x62AB, 0x94E2, 0x62AC, 0x9DAB,
+	0x62B1, 0x95F8, 0x62B5, 0x92EF, 0x62B9, 0x9695, 0x62BB, 0x9D5A,
+	0x62BC, 0x899F, 0x62BD, 0x928A, 0x62C2, 0x9D63, 0x62C5, 0x9253,
+	0x62C6, 0x9D5D, 0x62C7, 0x9D64, 0x62C8, 0x9D5F, 0x62C9, 0x9D66,
+	0x62CA, 0x9D62, 0x62CC, 0x9D61, 0x62CD, 0x948F, 0x62CF, 0x9D5B,
+	0x62D0, 0x89FB, 0x62D1, 0x9D59, 0x62D2, 0x8B91, 0x62D3, 0x91F1,
+	0x62D4, 0x9D55, 0x62D7, 0x9D58, 0x62D8, 0x8D53, 0x62D9, 0x90D9,
+	0x62DB, 0x8FB5, 0x62DC, 0x9D60, 0x62DD, 0x9471, 0x62E0, 0x8B92,
+	0x62E1, 0x8A67, 0x62EC, 0x8A87, 0x62ED, 0x9040, 0x62EE, 0x9D68,
+	0x62EF, 0x9D6D, 0x62F1, 0x9D69, 0x62F3, 0x8C9D, 0x62F5, 0x9D6E,
+	0x62F6, 0x8E41, 0x62F7, 0x8D89, 0x62FE, 0x8F45, 0x62FF, 0x9D5C,
+	0x6301, 0x8E9D, 0x6302, 0x9D6B, 0x6307, 0x8E77, 0x6308, 0x9D6C,
+	0x6309, 0x88C2, 0x630C, 0x9D67, 0x6311, 0x92A7, 0x6319, 0x8B93,
+	0x631F, 0x8BB2, 0x6327, 0x9D6A, 0x6328, 0x88A5, 0x632B, 0x8DC1,
+	0x632F, 0x9055, 0x633A, 0x92F0, 0x633D, 0x94D2, 0x633E, 0x9D70,
+	0x633F, 0x917D, 0x6349, 0x91A8, 0x634C, 0x8E4A, 0x634D, 0x9D71,
+	0x634F, 0x9D73, 0x6350, 0x9D6F, 0x6355, 0x95DF, 0x6357, 0x92BB,
+	0x635C, 0x917B, 0x6367, 0x95F9, 0x6368, 0x8ECC, 0x6369, 0x9D80,
+	0x636B, 0x9D7E, 0x636E, 0x9098, 0x6372, 0x8C9E, 0x6376, 0x9D78,
+	0x6377, 0x8FB7, 0x637A, 0x93E6, 0x637B, 0x9450, 0x6380, 0x9D76,
+	0x6383, 0x917C, 0x6388, 0x8EF6, 0x6389, 0x9D7B, 0x638C, 0x8FB6,
+	0x638E, 0x9D75, 0x638F, 0x9D7A, 0x6392, 0x9472, 0x6396, 0x9D74,
+	0x6398, 0x8C40, 0x639B, 0x8A7C, 0x639F, 0x9D7C, 0x63A0, 0x97A9,
+	0x63A1, 0x8DCC, 0x63A2, 0x9254, 0x63A3, 0x9D79, 0x63A5, 0x90DA,
+	0x63A7, 0x8D54, 0x63A8, 0x9084, 0x63A9, 0x8986, 0x63AA, 0x915B,
+	0x63AB, 0x9D77, 0x63AC, 0x8B64, 0x63B2, 0x8C66, 0x63B4, 0x92CD,
+	0x63B5, 0x9D7D, 0x63BB, 0x917E, 0x63BE, 0x9D81, 0x63C0, 0x9D83,
+	0x63C3, 0x91B5, 0x63C4, 0x9D89, 0x63C6, 0x9D84, 0x63C9, 0x9D86,
+	0x63CF, 0x9560, 0x63D0, 0x92F1, 0x63D2, 0x9D87, 0x63D6, 0x974B,
+	0x63DA, 0x9767, 0x63DB, 0x8AB7, 0x63E1, 0x88AC, 0x63E3, 0x9D85,
+	0x63E9, 0x9D82, 0x63EE, 0x8AF6, 0x63F4, 0x8987, 0x63F5, 0xFAC9,
+	0x63F6, 0x9D88, 0x63FA, 0x9768, 0x6406, 0x9D8C, 0x640D, 0x91B9,
+	0x640F, 0x9D93, 0x6413, 0x9D8D, 0x6416, 0x9D8A, 0x6417, 0x9D91,
+	0x641C, 0x9D72, 0x6426, 0x9D8E, 0x6428, 0x9D92, 0x642C, 0x94C0,
+	0x642D, 0x938B, 0x6434, 0x9D8B, 0x6436, 0x9D8F, 0x643A, 0x8C67,
+	0x643E, 0x8DEF, 0x6442, 0x90DB, 0x644E, 0x9D97, 0x6458, 0x9345,
+	0x6460, 0xFACA, 0x6467, 0x9D94, 0x6469, 0x9680, 0x646F, 0x9D95,
+	0x6476, 0x9D96, 0x6478, 0x96CC, 0x647A, 0x90A0, 0x6483, 0x8C82,
+	0x6488, 0x9D9D, 0x6492, 0x8E54, 0x6493, 0x9D9A, 0x6495, 0x9D99,
+	0x649A, 0x9451, 0x649D, 0xFACB, 0x649E, 0x93B3, 0x64A4, 0x9350,
+	0x64A5, 0x9D9B, 0x64A9, 0x9D9C, 0x64AB, 0x958F, 0x64AD, 0x9464,
+	0x64AE, 0x8E42, 0x64B0, 0x90EF, 0x64B2, 0x966F, 0x64B9, 0x8A68,
+	0x64BB, 0x9DA3, 0x64BC, 0x9D9E, 0x64C1, 0x9769, 0x64C2, 0x9DA5,
+	0x64C5, 0x9DA1, 0x64C7, 0x9DA2, 0x64CD, 0x9180, 0x64CE, 0xFACC,
+	0x64D2, 0x9DA0, 0x64D4, 0x9D5E, 0x64D8, 0x9DA4, 0x64DA, 0x9D9F,
+	0x64E0, 0x9DA9, 0x64E1, 0x9DAA, 0x64E2, 0x9346, 0x64E3, 0x9DAC,
+	0x64E6, 0x8E43, 0x64E7, 0x9DA7, 0x64EC, 0x8B5B, 0x64EF, 0x9DAD,
+	0x64F1, 0x9DA6, 0x64F2, 0x9DB1, 0x64F4, 0x9DB0, 0x64F6, 0x9DAF,
+	0x64FA, 0x9DB2, 0x64FD, 0x9DB4, 0x64FE, 0x8FEF, 0x6500, 0x9DB3,
+	0x6505, 0x9DB7, 0x6518, 0x9DB5, 0x651C, 0x9DB6, 0x651D, 0x9D90,
+	0x6523, 0x9DB9, 0x6524, 0x9DB8, 0x652A, 0x9D98, 0x652B, 0x9DBA,
+	0x652C, 0x9DAE, 0x652F, 0x8E78, 0x6534, 0x9DBB, 0x6535, 0x9DBC,
+	0x6536, 0x9DBE, 0x6537, 0x9DBD, 0x6538, 0x9DBF, 0x6539, 0x89FC,
+	0x653B, 0x8D55, 0x653E, 0x95FA, 0x653F, 0x90AD, 0x6545, 0x8CCC,
+	0x6548, 0x9DC1, 0x654D, 0x9DC4, 0x654E, 0xFACD, 0x654F, 0x9571,
+	0x6551, 0x8B7E, 0x6555, 0x9DC3, 0x6556, 0x9DC2, 0x6557, 0x9473,
+	0x6558, 0x9DC5, 0x6559, 0x8BB3, 0x655D, 0x9DC7, 0x655E, 0x9DC6,
+	0x6562, 0x8AB8, 0x6563, 0x8E55, 0x6566, 0x93D6, 0x656C, 0x8C68,
+	0x6570, 0x9094, 0x6572, 0x9DC8, 0x6574, 0x90AE, 0x6575, 0x9347,
+	0x6577, 0x957E, 0x6578, 0x9DC9, 0x6582, 0x9DCA, 0x6583, 0x9DCB,
+	0x6587, 0x95B6, 0x6588, 0x9B7C, 0x6589, 0x90C4, 0x658C, 0x956B,
+	0x658E, 0x8DD6, 0x6590, 0x94E3, 0x6591, 0x94C1, 0x6597, 0x936C,
+	0x6599, 0x97BF, 0x659B, 0x9DCD, 0x659C, 0x8ECE, 0x659F, 0x9DCE,
+	0x65A1, 0x88B4, 0x65A4, 0x8BD2, 0x65A5, 0x90CB, 0x65A7, 0x9580,
+	0x65AB, 0x9DCF, 0x65AC, 0x8E61, 0x65AD, 0x9266, 0x65AF, 0x8E7A,
+	0x65B0, 0x9056, 0x65B7, 0x9DD0, 0x65B9, 0x95FB, 0x65BC, 0x8997,
+	0x65BD, 0x8E7B, 0x65C1, 0x9DD3, 0x65C3, 0x9DD1, 0x65C4, 0x9DD4,
+	0x65C5, 0x97B7, 0x65C6, 0x9DD2, 0x65CB, 0x90F9, 0x65CC, 0x9DD5,
+	0x65CF, 0x91B0, 0x65D2, 0x9DD6, 0x65D7, 0x8AF8, 0x65D9, 0x9DD8,
+	0x65DB, 0x9DD7, 0x65E0, 0x9DD9, 0x65E1, 0x9DDA, 0x65E2, 0x8AF9,
+	0x65E5, 0x93FA, 0x65E6, 0x9255, 0x65E7, 0x8B8C, 0x65E8, 0x8E7C,
+	0x65E9, 0x9181, 0x65EC, 0x8F7B, 0x65ED, 0x88AE, 0x65F1, 0x9DDB,
+	0x65FA, 0x89A0, 0x65FB, 0x9DDF, 0x6600, 0xFACE, 0x6602, 0x8D56,
+	0x6603, 0x9DDE, 0x6606, 0x8DA9, 0x6607, 0x8FB8, 0x6609, 0xFAD1,
+	0x660A, 0x9DDD, 0x660C, 0x8FB9, 0x660E, 0x96BE, 0x660F, 0x8DA8,
+	0x6613, 0x88D5, 0x6614, 0x90CC, 0x6615, 0xFACF, 0x661C, 0x9DE4,
+	0x661E, 0xFAD3, 0x661F, 0x90AF, 0x6620, 0x8966, 0x6624, 0xFAD4,
+	0x6625, 0x8F74, 0x6627, 0x9686, 0x6628, 0x8DF0, 0x662D, 0x8FBA,
+	0x662E, 0xFAD2, 0x662F, 0x90A5, 0x6631, 0xFA63, 0x6634, 0x9DE3,
+	0x6635, 0x9DE1, 0x6636, 0x9DE2, 0x663B, 0xFAD0, 0x663C, 0x928B,
+	0x663F, 0x9E45, 0x6641, 0x9DE8, 0x6642, 0x8E9E, 0x6643, 0x8D57,
+	0x6644, 0x9DE6, 0x6649, 0x9DE7, 0x664B, 0x9057, 0x664F, 0x9DE5,
+	0x6652, 0x8E4E, 0x6657, 0xFAD6, 0x6659, 0xFAD7, 0x665D, 0x9DEA,
+	0x665E, 0x9DE9, 0x665F, 0x9DEE, 0x6662, 0x9DEF, 0x6664, 0x9DEB,
+	0x6665, 0xFAD5, 0x6666, 0x8A41, 0x6667, 0x9DEC, 0x6668, 0x9DED,
+	0x6669, 0x94D3, 0x666E, 0x9581, 0x666F, 0x8C69, 0x6670, 0x9DF0,
+	0x6673, 0xFAD9, 0x6674, 0x90B0, 0x6676, 0x8FBB, 0x667A, 0x9271,
+	0x6681, 0x8BC5, 0x6683, 0x9DF1, 0x6684, 0x9DF5, 0x6687, 0x89C9,
+	0x6688, 0x9DF2, 0x6689, 0x9DF4, 0x668E, 0x9DF3, 0x6691, 0x8F8B,
+	0x6696, 0x9267, 0x6697, 0x88C3, 0x6698, 0x9DF6, 0x6699, 0xFADA,
+	0x669D, 0x9DF7, 0x66A0, 0xFADB, 0x66A2, 0x92A8, 0x66A6, 0x97EF,
+	0x66AB, 0x8E62, 0x66AE, 0x95E9, 0x66B2, 0xFADC, 0x66B4, 0x965C,
+	0x66B8, 0x9E41, 0x66B9, 0x9DF9, 0x66BC, 0x9DFC, 0x66BE, 0x9DFB,
+	0x66BF, 0xFADD, 0x66C1, 0x9DF8, 0x66C4, 0x9E40, 0x66C7, 0x93DC,
+	0x66C9, 0x9DFA, 0x66D6, 0x9E42, 0x66D9, 0x8F8C, 0x66DA, 0x9E43,
+	0x66DC, 0x976A, 0x66DD, 0x9498, 0x66E0, 0x9E44, 0x66E6, 0x9E46,
+	0x66E9, 0x9E47, 0x66F0, 0x9E48, 0x66F2, 0x8BC8, 0x66F3, 0x8967,
+	0x66F4, 0x8D58, 0x66F5, 0x9E49, 0x66F7, 0x9E4A, 0x66F8, 0x8F91,
+	0x66F9, 0x9182, 0x66FA, 0xFADE, 0x66FB, 0xFA66, 0x66FC, 0x99D6,
+	0x66FD, 0x915D, 0x66FE, 0x915C, 0x66FF, 0x91D6, 0x6700, 0x8DC5,
+	0x6703, 0x98F0, 0x6708, 0x8C8E, 0x6709, 0x974C, 0x670B, 0x95FC,
+	0x670D, 0x959E, 0x670E, 0xFADF, 0x670F, 0x9E4B, 0x6714, 0x8DF1,
+	0x6715, 0x92BD, 0x6716, 0x9E4C, 0x6717, 0x984E, 0x671B, 0x965D,
+	0x671D, 0x92A9, 0x671E, 0x9E4D, 0x671F, 0x8AFA, 0x6726, 0x9E4E,
+	0x6727, 0x9E4F, 0x6728, 0x96D8, 0x672A, 0x96A2, 0x672B, 0x9696,
+	0x672C, 0x967B, 0x672D, 0x8E44, 0x672E, 0x9E51, 0x6731, 0x8EE9,
+	0x6734, 0x9670, 0x6736, 0x9E53, 0x6737, 0x9E56, 0x6738, 0x9E55,
+	0x673A, 0x8AF7, 0x673D, 0x8B80, 0x673F, 0x9E52, 0x6741, 0x9E54,
+	0x6746, 0x9E57, 0x6749, 0x9099, 0x674E, 0x979B, 0x674F, 0x88C7,
+	0x6750, 0x8DDE, 0x6751, 0x91BA, 0x6753, 0x8EDB, 0x6756, 0x8FF1,
+	0x6759, 0x9E5A, 0x675C, 0x936D, 0x675E, 0x9E58, 0x675F, 0x91A9,
+	0x6760, 0x9E59, 0x6761, 0x8FF0, 0x6762, 0x96DB, 0x6763, 0x9E5B,
+	0x6764, 0x9E5C, 0x6765, 0x9788, 0x6766, 0xFAE1, 0x676A, 0x9E61,
+	0x676D, 0x8D59, 0x676F, 0x9474, 0x6770, 0x9E5E, 0x6771, 0x938C,
+	0x6772, 0x9DDC, 0x6773, 0x9DE0, 0x6775, 0x8B6E, 0x6777, 0x9466,
+	0x677C, 0x9E60, 0x677E, 0x8FBC, 0x677F, 0x94C2, 0x6785, 0x9E66,
+	0x6787, 0x94F8, 0x6789, 0x9E5D, 0x678B, 0x9E63, 0x678C, 0x9E62,
+	0x6790, 0x90CD, 0x6795, 0x968D, 0x6797, 0x97D1, 0x679A, 0x9687,
+	0x679C, 0x89CA, 0x679D, 0x8E7D, 0x67A0, 0x9867, 0x67A1, 0x9E65,
+	0x67A2, 0x9095, 0x67A6, 0x9E64, 0x67A9, 0x9E5F, 0x67AF, 0x8CCD,
+	0x67B3, 0x9E6B, 0x67B4, 0x9E69, 0x67B6, 0x89CB, 0x67B7, 0x9E67,
+	0x67B8, 0x9E6D, 0x67B9, 0x9E73, 0x67BB, 0xFAE2, 0x67C0, 0xFAE4,
+	0x67C1, 0x91C6, 0x67C4, 0x95BF, 0x67C6, 0x9E75, 0x67CA, 0x9541,
+	0x67CE, 0x9E74, 0x67CF, 0x9490, 0x67D0, 0x965E, 0x67D1, 0x8AB9,
+	0x67D3, 0x90F5, 0x67D4, 0x8F5F, 0x67D8, 0x92D1, 0x67DA, 0x974D,
+	0x67DD, 0x9E70, 0x67DE, 0x9E6F, 0x67E2, 0x9E71, 0x67E4, 0x9E6E,
+	0x67E7, 0x9E76, 0x67E9, 0x9E6C, 0x67EC, 0x9E6A, 0x67EE, 0x9E72,
+	0x67EF, 0x9E68, 0x67F1, 0x928C, 0x67F3, 0x96F6, 0x67F4, 0x8EC4,
+	0x67F5, 0x8DF2, 0x67FB, 0x8DB8, 0x67FE, 0x968F, 0x67FF, 0x8A60,
+	0x6801, 0xFAE5, 0x6802, 0x92CC, 0x6803, 0x93C8, 0x6804, 0x8968,
+	0x6813, 0x90F0, 0x6816, 0x90B2, 0x6817, 0x8C49, 0x681E, 0x9E78,
+	0x6821, 0x8D5A, 0x6822, 0x8A9C, 0x6829, 0x9E7A, 0x682A, 0x8A94,
+	0x682B, 0x9E81, 0x6832, 0x9E7D, 0x6834, 0x90F1, 0x6838, 0x8A6A,
+	0x6839, 0x8DAA, 0x683C, 0x8A69, 0x683D, 0x8DCD, 0x6840, 0x9E7B,
+	0x6841, 0x8C85, 0x6842, 0x8C6A, 0x6843, 0x938D, 0x6844, 0xFAE6,
+	0x6846, 0x9E79, 0x6848, 0x88C4, 0x684D, 0x9E7C, 0x684E, 0x9E7E,
+	0x6850, 0x8BCB, 0x6851, 0x8C4B, 0x6852, 0xFAE3, 0x6853, 0x8ABA,
+	0x6854, 0x8B6A, 0x6859, 0x9E82, 0x685C, 0x8DF7, 0x685D, 0x9691,
+	0x685F, 0x8E56, 0x6863, 0x9E83, 0x6867, 0x954F, 0x6874, 0x9E8F,
+	0x6876, 0x89B1, 0x6877, 0x9E84, 0x687E, 0x9E95, 0x687F, 0x9E85,
+	0x6881, 0x97C0, 0x6883, 0x9E8C, 0x6885, 0x947E, 0x688D, 0x9E94,
+	0x688F, 0x9E87, 0x6893, 0x88B2, 0x6894, 0x9E89, 0x6897, 0x8D5B,
+	0x689B, 0x9E8B, 0x689D, 0x9E8A, 0x689F, 0x9E86, 0x68A0, 0x9E91,
+	0x68A2, 0x8FBD, 0x68A6, 0x9AEB, 0x68A7, 0x8CE6, 0x68A8, 0x979C,
+	0x68AD, 0x9E88, 0x68AF, 0x92F2, 0x68B0, 0x8A42, 0x68B1, 0x8DAB,
+	0x68B3, 0x9E80, 0x68B5, 0x9E90, 0x68B6, 0x8A81, 0x68B9, 0x9E8E,
+	0x68BA, 0x9E92, 0x68BC, 0x938E, 0x68C4, 0x8AFC, 0x68C6, 0x9EB0,
+	0x68C8, 0xFA64, 0x68C9, 0x96C7, 0x68CA, 0x9E97, 0x68CB, 0x8AFB,
+	0x68CD, 0x9E9E, 0x68CF, 0xFAE7, 0x68D2, 0x965F, 0x68D4, 0x9E9F,
+	0x68D5, 0x9EA1, 0x68D7, 0x9EA5, 0x68D8, 0x9E99, 0x68DA, 0x9249,
+	0x68DF, 0x938F, 0x68E0, 0x9EA9, 0x68E1, 0x9E9C, 0x68E3, 0x9EA6,
+	0x68E7, 0x9EA0, 0x68EE, 0x9058, 0x68EF, 0x9EAA, 0x68F2, 0x90B1,
+	0x68F9, 0x9EA8, 0x68FA, 0x8ABB, 0x6900, 0x986F, 0x6901, 0x9E96,
+	0x6904, 0x9EA4, 0x6905, 0x88D6, 0x6908, 0x9E98, 0x690B, 0x96B8,
+	0x690C, 0x9E9D, 0x690D, 0x9041, 0x690E, 0x92C5, 0x690F, 0x9E93,
+	0x6912, 0x9EA3, 0x6919, 0x909A, 0x691A, 0x9EAD, 0x691B, 0x8A91,
+	0x691C, 0x8C9F, 0x6921, 0x9EAF, 0x6922, 0x9E9A, 0x6923, 0x9EAE,
+	0x6925, 0x9EA7, 0x6926, 0x9E9B, 0x6928, 0x9EAB, 0x692A, 0x9EAC,
+	0x6930, 0x9EBD, 0x6934, 0x93CC, 0x6936, 0x9EA2, 0x6939, 0x9EB9,
+	0x693D, 0x9EBB, 0x693F, 0x92D6, 0x694A, 0x976B, 0x6953, 0x9596,
+	0x6954, 0x9EB6, 0x6955, 0x91C8, 0x6959, 0x9EBC, 0x695A, 0x915E,
+	0x695C, 0x9EB3, 0x695D, 0x9EC0, 0x695E, 0x9EBF, 0x6960, 0x93ED,
+	0x6961, 0x9EBE, 0x6962, 0x93E8, 0x6968, 0xFAE9, 0x696A, 0x9EC2,
+	0x696B, 0x9EB5, 0x696D, 0x8BC6, 0x696E, 0x9EB8, 0x696F, 0x8F7C,
+	0x6973, 0x9480, 0x6974, 0x9EBA, 0x6975, 0x8BC9, 0x6977, 0x9EB2,
+	0x6978, 0x9EB4, 0x6979, 0x9EB1, 0x697C, 0x984F, 0x697D, 0x8A79,
+	0x697E, 0x9EB7, 0x6981, 0x9EC1, 0x6982, 0x8A54, 0x698A, 0x8DE5,
+	0x698E, 0x897C, 0x6991, 0x9ED2, 0x6994, 0x9850, 0x6995, 0x9ED5,
+	0x6998, 0xFAEB, 0x699B, 0x9059, 0x699C, 0x9ED4, 0x69A0, 0x9ED3,
+	0x69A7, 0x9ED0, 0x69AE, 0x9EC4, 0x69B1, 0x9EE1, 0x69B2, 0x9EC3,
+	0x69B4, 0x9ED6, 0x69BB, 0x9ECE, 0x69BE, 0x9EC9, 0x69BF, 0x9EC6,
+	0x69C1, 0x9EC7, 0x69C3, 0x9ECF, 0x69C7, 0xEAA0, 0x69CA, 0x9ECC,
+	0x69CB, 0x8D5C, 0x69CC, 0x92C6, 0x69CD, 0x9184, 0x69CE, 0x9ECA,
+	0x69D0, 0x9EC5, 0x69D3, 0x9EC8, 0x69D8, 0x976C, 0x69D9, 0x968A,
+	0x69DD, 0x9ECD, 0x69DE, 0x9ED7, 0x69E2, 0xFAEC, 0x69E7, 0x9EDF,
+	0x69E8, 0x9ED8, 0x69EB, 0x9EE5, 0x69ED, 0x9EE3, 0x69F2, 0x9EDE,
+	0x69F9, 0x9EDD, 0x69FB, 0x92CE, 0x69FD, 0x9185, 0x69FF, 0x9EDB,
+	0x6A02, 0x9ED9, 0x6A05, 0x9EE0, 0x6A0A, 0x9EE6, 0x6A0B, 0x94F3,
+	0x6A0C, 0x9EEC, 0x6A12, 0x9EE7, 0x6A13, 0x9EEA, 0x6A14, 0x9EE4,
+	0x6A17, 0x9294, 0x6A19, 0x9557, 0x6A1B, 0x9EDA, 0x6A1E, 0x9EE2,
+	0x6A1F, 0x8FBE, 0x6A21, 0x96CD, 0x6A22, 0x9EF6, 0x6A23, 0x9EE9,
+	0x6A29, 0x8CA0, 0x6A2A, 0x89A1, 0x6A2B, 0x8A7E, 0x6A2E, 0x9ED1,
+	0x6A30, 0xFAED, 0x6A35, 0x8FBF, 0x6A36, 0x9EEE, 0x6A38, 0x9EF5,
+	0x6A39, 0x8EF7, 0x6A3A, 0x8A92, 0x6A3D, 0x924D, 0x6A44, 0x9EEB,
+	0x6A46, 0xFAEF, 0x6A47, 0x9EF0, 0x6A48, 0x9EF4, 0x6A4B, 0x8BB4,
+	0x6A58, 0x8B6B, 0x6A59, 0x9EF2, 0x6A5F, 0x8B40, 0x6A61, 0x93C9,
+	0x6A62, 0x9EF1, 0x6A66, 0x9EF3, 0x6A6B, 0xFAEE, 0x6A72, 0x9EED,
+	0x6A73, 0xFAF0, 0x6A78, 0x9EEF, 0x6A7E, 0xFAF1, 0x6A7F, 0x8A80,
+	0x6A80, 0x9268, 0x6A84, 0x9EFA, 0x6A8D, 0x9EF8, 0x6A8E, 0x8CE7,
+	0x6A90, 0x9EF7, 0x6A97, 0x9F40, 0x6A9C, 0x9E77, 0x6AA0, 0x9EF9,
+	0x6AA2, 0x9EFB, 0x6AA3, 0x9EFC, 0x6AAA, 0x9F4B, 0x6AAC, 0x9F47,
+	0x6AAE, 0x9E8D, 0x6AB3, 0x9F46, 0x6AB8, 0x9F45, 0x6ABB, 0x9F42,
+	0x6AC1, 0x9EE8, 0x6AC2, 0x9F44, 0x6AC3, 0x9F43, 0x6AD1, 0x9F49,
+	0x6AD3, 0x9845, 0x6ADA, 0x9F4C, 0x6ADB, 0x8BF9, 0x6ADE, 0x9F48,
+	0x6ADF, 0x9F4A, 0x6AE2, 0xFAF2, 0x6AE4, 0xFAF3, 0x6AE8, 0x94A5,
+	0x6AEA, 0x9F4D, 0x6AFA, 0x9F51, 0x6AFB, 0x9F4E, 0x6B04, 0x9793,
+	0x6B05, 0x9F4F, 0x6B0A, 0x9EDC, 0x6B12, 0x9F52, 0x6B16, 0x9F53,
+	0x6B1D, 0x8954, 0x6B1F, 0x9F55, 0x6B20, 0x8C87, 0x6B21, 0x8E9F,
+	0x6B23, 0x8BD3, 0x6B27, 0x89A2, 0x6B32, 0x977E, 0x6B37, 0x9F57,
+	0x6B38, 0x9F56, 0x6B39, 0x9F59, 0x6B3A, 0x8B5C, 0x6B3D, 0x8BD4,
+	0x6B3E, 0x8ABC, 0x6B43, 0x9F5C, 0x6B47, 0x9F5B, 0x6B49, 0x9F5D,
+	0x6B4C, 0x89CC, 0x6B4E, 0x9256, 0x6B50, 0x9F5E, 0x6B53, 0x8ABD,
+	0x6B54, 0x9F60, 0x6B59, 0x9F5F, 0x6B5B, 0x9F61, 0x6B5F, 0x9F62,
+	0x6B61, 0x9F63, 0x6B62, 0x8E7E, 0x6B63, 0x90B3, 0x6B64, 0x8D9F,
+	0x6B66, 0x9590, 0x6B69, 0x95E0, 0x6B6A, 0x9863, 0x6B6F, 0x8E95,
+	0x6B73, 0x8DCE, 0x6B74, 0x97F0, 0x6B78, 0x9F64, 0x6B79, 0x9F65,
+	0x6B7B, 0x8E80, 0x6B7F, 0x9F66, 0x6B80, 0x9F67, 0x6B83, 0x9F69,
+	0x6B84, 0x9F68, 0x6B86, 0x9677, 0x6B89, 0x8F7D, 0x6B8A, 0x8EEA,
+	0x6B8B, 0x8E63, 0x6B8D, 0x9F6A, 0x6B95, 0x9F6C, 0x6B96, 0x9042,
+	0x6B98, 0x9F6B, 0x6B9E, 0x9F6D, 0x6BA4, 0x9F6E, 0x6BAA, 0x9F6F,
+	0x6BAB, 0x9F70, 0x6BAF, 0x9F71, 0x6BB1, 0x9F73, 0x6BB2, 0x9F72,
+	0x6BB3, 0x9F74, 0x6BB4, 0x89A3, 0x6BB5, 0x9269, 0x6BB7, 0x9F75,
+	0x6BBA, 0x8E45, 0x6BBB, 0x8A6B, 0x6BBC, 0x9F76, 0x6BBF, 0x9361,
+	0x6BC0, 0x9ACA, 0x6BC5, 0x8B42, 0x6BC6, 0x9F77, 0x6BCB, 0x9F78,
+	0x6BCD, 0x95EA, 0x6BCE, 0x9688, 0x6BD2, 0x93C5, 0x6BD3, 0x9F79,
+	0x6BD4, 0x94E4, 0x6BD6, 0xFAF4, 0x6BD8, 0x94F9, 0x6BDB, 0x96D1,
+	0x6BDF, 0x9F7A, 0x6BEB, 0x9F7C, 0x6BEC, 0x9F7B, 0x6BEF, 0x9F7E,
+	0x6BF3, 0x9F7D, 0x6C08, 0x9F81, 0x6C0F, 0x8E81, 0x6C11, 0x96AF,
+	0x6C13, 0x9F82, 0x6C14, 0x9F83, 0x6C17, 0x8B43, 0x6C1B, 0x9F84,
+	0x6C23, 0x9F86, 0x6C24, 0x9F85, 0x6C34, 0x9085, 0x6C37, 0x9558,
+	0x6C38, 0x8969, 0x6C3E, 0x94C3, 0x6C3F, 0xFAF5, 0x6C40, 0x92F3,
+	0x6C41, 0x8F60, 0x6C42, 0x8B81, 0x6C4E, 0x94C4, 0x6C50, 0x8EAC,
+	0x6C55, 0x9F88, 0x6C57, 0x8ABE, 0x6C5A, 0x8998, 0x6C5C, 0xFAF6,
+	0x6C5D, 0x93F0, 0x6C5E, 0x9F87, 0x6C5F, 0x8D5D, 0x6C60, 0x9272,
+	0x6C62, 0x9F89, 0x6C68, 0x9F91, 0x6C6A, 0x9F8A, 0x6C6F, 0xFAF8,
+	0x6C70, 0x91BF, 0x6C72, 0x8B82, 0x6C73, 0x9F92, 0x6C7A, 0x8C88,
+	0x6C7D, 0x8B44, 0x6C7E, 0x9F90, 0x6C81, 0x9F8E, 0x6C82, 0x9F8B,
+	0x6C83, 0x9780, 0x6C86, 0xFAF7, 0x6C88, 0x92BE, 0x6C8C, 0x93D7,
+	0x6C8D, 0x9F8C, 0x6C90, 0x9F94, 0x6C92, 0x9F93, 0x6C93, 0x8C42,
+	0x6C96, 0x89AB, 0x6C99, 0x8DB9, 0x6C9A, 0x9F8D, 0x6C9B, 0x9F8F,
+	0x6CA1, 0x9676, 0x6CA2, 0x91F2, 0x6CAB, 0x9697, 0x6CAE, 0x9F9C,
+	0x6CB1, 0x9F9D, 0x6CB3, 0x89CD, 0x6CB8, 0x95A6, 0x6CB9, 0x96FB,
+	0x6CBA, 0x9F9F, 0x6CBB, 0x8EA1, 0x6CBC, 0x8FC0, 0x6CBD, 0x9F98,
+	0x6CBE, 0x9F9E, 0x6CBF, 0x8988, 0x6CC1, 0x8BB5, 0x6CC4, 0x9F95,
+	0x6CC5, 0x9F9A, 0x6CC9, 0x90F2, 0x6CCA, 0x9491, 0x6CCC, 0x94E5,
+	0x6CD3, 0x9F97, 0x6CD5, 0x9640, 0x6CD7, 0x9F99, 0x6CD9, 0x9FA2,
+	0x6CDA, 0xFAF9, 0x6CDB, 0x9FA0, 0x6CDD, 0x9F9B, 0x6CE1, 0x9641,
+	0x6CE2, 0x9467, 0x6CE3, 0x8B83, 0x6CE5, 0x9344, 0x6CE8, 0x928D,
+	0x6CEA, 0x9FA3, 0x6CEF, 0x9FA1, 0x6CF0, 0x91D7, 0x6CF1, 0x9F96,
+	0x6CF3, 0x896A, 0x6D04, 0xFAFA, 0x6D0B, 0x976D, 0x6D0C, 0x9FAE,
+	0x6D12, 0x9FAD, 0x6D17, 0x90F4, 0x6D19, 0x9FAA, 0x6D1B, 0x978C,
+	0x6D1E, 0x93B4, 0x6D1F, 0x9FA4, 0x6D25, 0x92C3, 0x6D29, 0x896B,
+	0x6D2A, 0x8D5E, 0x6D2B, 0x9FA7, 0x6D32, 0x8F46, 0x6D33, 0x9FAC,
+	0x6D35, 0x9FAB, 0x6D36, 0x9FA6, 0x6D38, 0x9FA9, 0x6D3B, 0x8A88,
+	0x6D3D, 0x9FA8, 0x6D3E, 0x9468, 0x6D41, 0x97AC, 0x6D44, 0x8FF2,
+	0x6D45, 0x90F3, 0x6D59, 0x9FB4, 0x6D5A, 0x9FB2, 0x6D5C, 0x956C,
+	0x6D63, 0x9FAF, 0x6D64, 0x9FB1, 0x6D66, 0x8959, 0x6D69, 0x8D5F,
+	0x6D6A, 0x9851, 0x6D6C, 0x8A5C, 0x6D6E, 0x9582, 0x6D6F, 0xFAFC,
+	0x6D74, 0x9781, 0x6D77, 0x8A43, 0x6D78, 0x905A, 0x6D79, 0x9FB3,
+	0x6D85, 0x9FB8, 0x6D87, 0xFAFB, 0x6D88, 0x8FC1, 0x6D8C, 0x974F,
+	0x6D8E, 0x9FB5, 0x6D93, 0x9FB0, 0x6D95, 0x9FB6, 0x6D96, 0xFB40,
+	0x6D99, 0x97DC, 0x6D9B, 0x9393, 0x6D9C, 0x93C0, 0x6DAC, 0xFB41,
+	0x6DAF, 0x8A55, 0x6DB2, 0x8974, 0x6DB5, 0x9FBC, 0x6DB8, 0x9FBF,
+	0x6DBC, 0x97C1, 0x6DC0, 0x9784, 0x6DC5, 0x9FC6, 0x6DC6, 0x9FC0,
+	0x6DC7, 0x9FBD, 0x6DCB, 0x97D2, 0x6DCC, 0x9FC3, 0x6DCF, 0xFB42,
+	0x6DD1, 0x8F69, 0x6DD2, 0x9FC5, 0x6DD5, 0x9FCA, 0x6DD8, 0x9391,
+	0x6DD9, 0x9FC8, 0x6DDE, 0x9FC2, 0x6DE1, 0x9257, 0x6DE4, 0x9FC9,
+	0x6DE6, 0x9FBE, 0x6DE8, 0x9FC4, 0x6DEA, 0x9FCB, 0x6DEB, 0x88FA,
+	0x6DEC, 0x9FC1, 0x6DEE, 0x9FCC, 0x6DF1, 0x905B, 0x6DF2, 0xFB44,
+	0x6DF3, 0x8F7E, 0x6DF5, 0x95A3, 0x6DF7, 0x8DAC, 0x6DF8, 0xFB43,
+	0x6DF9, 0x9FB9, 0x6DFA, 0x9FC7, 0x6DFB, 0x9359, 0x6DFC, 0xFB45,
+	0x6E05, 0x90B4, 0x6E07, 0x8A89, 0x6E08, 0x8DCF, 0x6E09, 0x8FC2,
+	0x6E0A, 0x9FBB, 0x6E0B, 0x8F61, 0x6E13, 0x8C6B, 0x6E15, 0x9FBA,
+	0x6E19, 0x9FD0, 0x6E1A, 0x8F8D, 0x6E1B, 0x8CB8, 0x6E1D, 0x9FDF,
+	0x6E1F, 0x9FD9, 0x6E20, 0x8B94, 0x6E21, 0x936E, 0x6E23, 0x9FD4,
+	0x6E24, 0x9FDD, 0x6E25, 0x88AD, 0x6E26, 0x8951, 0x6E27, 0xFB48,
+	0x6E29, 0x89B7, 0x6E2B, 0x9FD6, 0x6E2C, 0x91AA, 0x6E2D, 0x9FCD,
+	0x6E2E, 0x9FCF, 0x6E2F, 0x8D60, 0x6E38, 0x9FE0, 0x6E39, 0xFB46,
+	0x6E3A, 0x9FDB, 0x6E3C, 0xFB49, 0x6E3E, 0x9FD3, 0x6E43, 0x9FDA,
+	0x6E4A, 0x96A9, 0x6E4D, 0x9FD8, 0x6E4E, 0x9FDC, 0x6E56, 0x8CCE,
+	0x6E58, 0x8FC3, 0x6E5B, 0x9258, 0x6E5C, 0xFB47, 0x6E5F, 0x9FD2,
+	0x6E67, 0x974E, 0x6E6B, 0x9FD5, 0x6E6E, 0x9FCE, 0x6E6F, 0x9392,
+	0x6E72, 0x9FD1, 0x6E76, 0x9FD7, 0x6E7E, 0x9870, 0x6E7F, 0x8EBC,
+	0x6E80, 0x969E, 0x6E82, 0x9FE1, 0x6E8C, 0x94AC, 0x6E8F, 0x9FED,
+	0x6E90, 0x8CB9, 0x6E96, 0x8F80, 0x6E98, 0x9FE3, 0x6E9C, 0x97AD,
+	0x6E9D, 0x8D61, 0x6E9F, 0x9FF0, 0x6EA2, 0x88EC, 0x6EA5, 0x9FEE,
+	0x6EAA, 0x9FE2, 0x6EAF, 0x9FE8, 0x6EB2, 0x9FEA, 0x6EB6, 0x976E,
+	0x6EB7, 0x9FE5, 0x6EBA, 0x934D, 0x6EBD, 0x9FE7, 0x6EBF, 0xFB4A,
+	0x6EC2, 0x9FEF, 0x6EC4, 0x9FE9, 0x6EC5, 0x96C5, 0x6EC9, 0x9FE4,
+	0x6ECB, 0x8EA0, 0x6ECC, 0x9FFC, 0x6ED1, 0x8A8A, 0x6ED3, 0x9FE6,
+	0x6ED4, 0x9FEB, 0x6ED5, 0x9FEC, 0x6EDD, 0x91EA, 0x6EDE, 0x91D8,
+	0x6EEC, 0x9FF4, 0x6EEF, 0x9FFA, 0x6EF2, 0x9FF8, 0x6EF4, 0x9348,
+	0x6EF7, 0xE042, 0x6EF8, 0x9FF5, 0x6EFE, 0x9FF6, 0x6EFF, 0x9FDE,
+	0x6F01, 0x8B99, 0x6F02, 0x9559, 0x6F06, 0x8EBD, 0x6F09, 0x8D97,
+	0x6F0F, 0x9852, 0x6F11, 0x9FF2, 0x6F13, 0xE041, 0x6F14, 0x8989,
+	0x6F15, 0x9186, 0x6F20, 0x9499, 0x6F22, 0x8ABF, 0x6F23, 0x97F8,
+	0x6F2B, 0x969F, 0x6F2C, 0x92D0, 0x6F31, 0x9FF9, 0x6F32, 0x9FFB,
+	0x6F38, 0x9151, 0x6F3E, 0xE040, 0x6F3F, 0x9FF7, 0x6F41, 0x9FF1,
+	0x6F45, 0x8AC1, 0x6F54, 0x8C89, 0x6F58, 0xE04E, 0x6F5B, 0xE049,
+	0x6F5C, 0x90F6, 0x6F5F, 0x8A83, 0x6F64, 0x8F81, 0x6F66, 0xE052,
+	0x6F6D, 0xE04B, 0x6F6E, 0x92AA, 0x6F6F, 0xE048, 0x6F70, 0x92D7,
+	0x6F74, 0xE06B, 0x6F78, 0xE045, 0x6F7A, 0xE044, 0x6F7C, 0xE04D,
+	0x6F80, 0xE047, 0x6F81, 0xE046, 0x6F82, 0xE04C, 0x6F84, 0x909F,
+	0x6F86, 0xE043, 0x6F88, 0xFB4B, 0x6F8E, 0xE04F, 0x6F91, 0xE050,
+	0x6F97, 0x8AC0, 0x6FA1, 0xE055, 0x6FA3, 0xE054, 0x6FA4, 0xE056,
+	0x6FAA, 0xE059, 0x6FB1, 0x9362, 0x6FB3, 0xE053, 0x6FB5, 0xFB4C,
+	0x6FB9, 0xE057, 0x6FC0, 0x8C83, 0x6FC1, 0x91F7, 0x6FC2, 0xE051,
+	0x6FC3, 0x945A, 0x6FC6, 0xE058, 0x6FD4, 0xE05D, 0x6FD5, 0xE05B,
+	0x6FD8, 0xE05E, 0x6FDB, 0xE061, 0x6FDF, 0xE05A, 0x6FE0, 0x8D8A,
+	0x6FE1, 0x9447, 0x6FE4, 0x9FB7, 0x6FEB, 0x9794, 0x6FEC, 0xE05C,
+	0x6FEE, 0xE060, 0x6FEF, 0x91F3, 0x6FF1, 0xE05F, 0x6FF3, 0xE04A,
+	0x6FF5, 0xFB4D, 0x6FF6, 0xE889, 0x6FFA, 0xE064, 0x6FFE, 0xE068,
+	0x7001, 0xE066, 0x7005, 0xFB4E, 0x7007, 0xFB4F, 0x7009, 0xE062,
+	0x700B, 0xE063, 0x700F, 0xE067, 0x7011, 0xE065, 0x7015, 0x956D,
+	0x7018, 0xE06D, 0x701A, 0xE06A, 0x701B, 0xE069, 0x701D, 0xE06C,
+	0x701E, 0x93D2, 0x701F, 0xE06E, 0x7026, 0x9295, 0x7027, 0x91EB,
+	0x7028, 0xFB50, 0x702C, 0x90A3, 0x7030, 0xE06F, 0x7032, 0xE071,
+	0x703E, 0xE070, 0x704C, 0x9FF3, 0x7051, 0xE072, 0x7058, 0x93E5,
+	0x7063, 0xE073, 0x706B, 0x89CE, 0x706F, 0x9394, 0x7070, 0x8A44,
+	0x7078, 0x8B84, 0x707C, 0x8EDC, 0x707D, 0x8DD0, 0x7085, 0xFB51,
+	0x7089, 0x9846, 0x708A, 0x9086, 0x708E, 0x898A, 0x7092, 0xE075,
+	0x7099, 0xE074, 0x70AB, 0xFB52, 0x70AC, 0xE078, 0x70AD, 0x9259,
+	0x70AE, 0xE07B, 0x70AF, 0xE076, 0x70B3, 0xE07A, 0x70B8, 0xE079,
+	0x70B9, 0x935F, 0x70BA, 0x88D7, 0x70BB, 0xFA62, 0x70C8, 0x97F3,
+	0x70CB, 0xE07D, 0x70CF, 0x8947, 0x70D9, 0xE080, 0x70DD, 0xE07E,
+	0x70DF, 0xE07C, 0x70F1, 0xE077, 0x70F9, 0x9642, 0x70FD, 0xE082,
+	0x7104, 0xFB54, 0x7109, 0xE081, 0x710F, 0xFB53, 0x7114, 0x898B,
+	0x7119, 0xE084, 0x711A, 0x95B0, 0x711C, 0xE083, 0x7121, 0x96B3,
+	0x7126, 0x8FC5, 0x7136, 0x9152, 0x713C, 0x8FC4, 0x7146, 0xFB56,
+	0x7147, 0xFB57, 0x7149, 0x97F9, 0x714C, 0xE08A, 0x714E, 0x90F7,
+	0x7155, 0xE086, 0x7156, 0xE08B, 0x7159, 0x898C, 0x715C, 0xFB55,
+	0x7162, 0xE089, 0x7164, 0x9481, 0x7165, 0xE085, 0x7166, 0xE088,
+	0x7167, 0x8FC6, 0x7169, 0x94CF, 0x716C, 0xE08C, 0x716E, 0x8ECF,
+	0x717D, 0x90F8, 0x7184, 0xE08F, 0x7188, 0xE087, 0x718A, 0x8C46,
+	0x718F, 0xE08D, 0x7194, 0x976F, 0x7195, 0xE090, 0x7199, 0xEAA4,
+	0x719F, 0x8F6E, 0x71A8, 0xE091, 0x71AC, 0xE092, 0x71B1, 0x944D,
+	0x71B9, 0xE094, 0x71BE, 0xE095, 0x71C1, 0xFB59, 0x71C3, 0x9452,
+	0x71C8, 0x9395, 0x71C9, 0xE097, 0x71CE, 0xE099, 0x71D0, 0x97D3,
+	0x71D2, 0xE096, 0x71D4, 0xE098, 0x71D5, 0x898D, 0x71D7, 0xE093,
+	0x71DF, 0x9A7A, 0x71E0, 0xE09A, 0x71E5, 0x9187, 0x71E6, 0x8E57,
+	0x71E7, 0xE09C, 0x71EC, 0xE09B, 0x71ED, 0x9043, 0x71EE, 0x99D7,
+	0x71F5, 0xE09D, 0x71F9, 0xE09F, 0x71FB, 0xE08E, 0x71FC, 0xE09E,
+	0x71FE, 0xFB5A, 0x71FF, 0xE0A0, 0x7206, 0x949A, 0x720D, 0xE0A1,
+	0x7210, 0xE0A2, 0x721B, 0xE0A3, 0x7228, 0xE0A4, 0x722A, 0x92DC,
+	0x722C, 0xE0A6, 0x722D, 0xE0A5, 0x7230, 0xE0A7, 0x7232, 0xE0A8,
+	0x7235, 0x8EDD, 0x7236, 0x9583, 0x723A, 0x96EA, 0x723B, 0xE0A9,
+	0x723C, 0xE0AA, 0x723D, 0x9175, 0x723E, 0x8EA2, 0x723F, 0xE0AB,
+	0x7240, 0xE0AC, 0x7246, 0xE0AD, 0x7247, 0x95D0, 0x7248, 0x94C5,
+	0x724B, 0xE0AE, 0x724C, 0x9476, 0x7252, 0x92AB, 0x7258, 0xE0AF,
+	0x7259, 0x89E5, 0x725B, 0x8B8D, 0x725D, 0x96C4, 0x725F, 0x96B4,
+	0x7261, 0x89B2, 0x7262, 0x9853, 0x7267, 0x9671, 0x7269, 0x95A8,
+	0x7272, 0x90B5, 0x7274, 0xE0B0, 0x7279, 0x93C1, 0x727D, 0x8CA1,
+	0x727E, 0xE0B1, 0x7280, 0x8DD2, 0x7281, 0xE0B3, 0x7282, 0xE0B2,
+	0x7287, 0xE0B4, 0x7292, 0xE0B5, 0x7296, 0xE0B6, 0x72A0, 0x8B5D,
+	0x72A2, 0xE0B7, 0x72A7, 0xE0B8, 0x72AC, 0x8CA2, 0x72AF, 0x94C6,
+	0x72B1, 0xFB5B, 0x72B2, 0xE0BA, 0x72B6, 0x8FF3, 0x72B9, 0xE0B9,
+	0x72BE, 0xFB5C, 0x72C2, 0x8BB6, 0x72C3, 0xE0BB, 0x72C4, 0xE0BD,
+	0x72C6, 0xE0BC, 0x72CE, 0xE0BE, 0x72D0, 0x8CCF, 0x72D2, 0xE0BF,
+	0x72D7, 0x8BE7, 0x72D9, 0x915F, 0x72DB, 0x8D9D, 0x72E0, 0xE0C1,
+	0x72E1, 0xE0C2, 0x72E2, 0xE0C0, 0x72E9, 0x8EEB, 0x72EC, 0x93C6,
+	0x72ED, 0x8BB7, 0x72F7, 0xE0C4, 0x72F8, 0x924B, 0x72F9, 0xE0C3,
+	0x72FC, 0x9854, 0x72FD, 0x9482, 0x730A, 0xE0C7, 0x7316, 0xE0C9,
+	0x7317, 0xE0C6, 0x731B, 0x96D2, 0x731C, 0xE0C8, 0x731D, 0xE0CA,
+	0x731F, 0x97C2, 0x7324, 0xFB5D, 0x7325, 0xE0CE, 0x7329, 0xE0CD,
+	0x732A, 0x9296, 0x732B, 0x944C, 0x732E, 0x8CA3, 0x732F, 0xE0CC,
+	0x7334, 0xE0CB, 0x7336, 0x9750, 0x7337, 0x9751, 0x733E, 0xE0CF,
+	0x733F, 0x898E, 0x7344, 0x8D96, 0x7345, 0x8E82, 0x734E, 0xE0D0,
+	0x734F, 0xE0D1, 0x7357, 0xE0D3, 0x7363, 0x8F62, 0x7368, 0xE0D5,
+	0x736A, 0xE0D4, 0x7370, 0xE0D6, 0x7372, 0x8A6C, 0x7375, 0xE0D8,
+	0x7377, 0xFB5F, 0x7378, 0xE0D7, 0x737A, 0xE0DA, 0x737B, 0xE0D9,
+	0x7384, 0x8CBA, 0x7387, 0x97A6, 0x7389, 0x8BCA, 0x738B, 0x89A4,
+	0x7396, 0x8BE8, 0x73A9, 0x8ADF, 0x73B2, 0x97E6, 0x73B3, 0xE0DC,
+	0x73BB, 0xE0DE, 0x73BD, 0xFB60, 0x73C0, 0xE0DF, 0x73C2, 0x89CF,
+	0x73C8, 0xE0DB, 0x73C9, 0xFB61, 0x73CA, 0x8E58, 0x73CD, 0x92BF,
+	0x73CE, 0xE0DD, 0x73D2, 0xFB64, 0x73D6, 0xFB62, 0x73DE, 0xE0E2,
+	0x73E0, 0x8EEC, 0x73E3, 0xFB63, 0x73E5, 0xE0E0, 0x73EA, 0x8C5D,
+	0x73ED, 0x94C7, 0x73EE, 0xE0E1, 0x73F1, 0xE0FC, 0x73F5, 0xFB66,
+	0x73F8, 0xE0E7, 0x73FE, 0x8CBB, 0x7403, 0x8B85, 0x7405, 0xE0E4,
+	0x7406, 0x979D, 0x7407, 0xFB65, 0x7409, 0x97AE, 0x7422, 0x91F4,
+	0x7425, 0xE0E6, 0x7426, 0xFB67, 0x7429, 0xFB69, 0x742A, 0xFB68,
+	0x742E, 0xFB6A, 0x7432, 0xE0E8, 0x7433, 0x97D4, 0x7434, 0x8BD5,
+	0x7435, 0x94FA, 0x7436, 0x9469, 0x743A, 0xE0E9, 0x743F, 0xE0EB,
+	0x7441, 0xE0EE, 0x7455, 0xE0EA, 0x7459, 0xE0ED, 0x745A, 0x8CE8,
+	0x745B, 0x896C, 0x745C, 0xE0EF, 0x745E, 0x9090, 0x745F, 0xE0EC,
+	0x7460, 0x97DA, 0x7462, 0xFB6B, 0x7463, 0xE0F2, 0x7464, 0xEAA2,
+	0x7469, 0xE0F0, 0x746A, 0xE0F3, 0x746F, 0xE0E5, 0x7470, 0xE0F1,
+	0x7473, 0x8DBA, 0x7476, 0xE0F4, 0x747E, 0xE0F5, 0x7483, 0x979E,
+	0x7489, 0xFB6C, 0x748B, 0xE0F6, 0x749E, 0xE0F7, 0x749F, 0xFB6D,
+	0x74A2, 0xE0E3, 0x74A7, 0xE0F8, 0x74B0, 0x8AC2, 0x74BD, 0x8EA3,
+	0x74CA, 0xE0F9, 0x74CF, 0xE0FA, 0x74D4, 0xE0FB, 0x74DC, 0x895A,
+	0x74E0, 0xE140, 0x74E2, 0x955A, 0x74E3, 0xE141, 0x74E6, 0x8AA2,
+	0x74E7, 0xE142, 0x74E9, 0xE143, 0x74EE, 0xE144, 0x74F0, 0xE146,
+	0x74F1, 0xE147, 0x74F2, 0xE145, 0x74F6, 0x9572, 0x74F7, 0xE149,
+	0x74F8, 0xE148, 0x7501, 0xFB6E, 0x7503, 0xE14B, 0x7504, 0xE14A,
+	0x7505, 0xE14C, 0x750C, 0xE14D, 0x750D, 0xE14F, 0x750E, 0xE14E,
+	0x7511, 0x8D99, 0x7513, 0xE151, 0x7515, 0xE150, 0x7518, 0x8AC3,
+	0x751A, 0x9072, 0x751C, 0x935B, 0x751E, 0xE152, 0x751F, 0x90B6,
+	0x7523, 0x8E59, 0x7525, 0x8999, 0x7526, 0xE153, 0x7528, 0x9770,
+	0x752B, 0x95E1, 0x752C, 0xE154, 0x752F, 0xFAA8, 0x7530, 0x9363,
+	0x7531, 0x9752, 0x7532, 0x8D62, 0x7533, 0x905C, 0x7537, 0x926A,
+	0x7538, 0x99B2, 0x753A, 0x92AC, 0x753B, 0x89E6, 0x753C, 0xE155,
+	0x7544, 0xE156, 0x7546, 0xE15B, 0x7549, 0xE159, 0x754A, 0xE158,
+	0x754B, 0x9DC0, 0x754C, 0x8A45, 0x754D, 0xE157, 0x754F, 0x88D8,
+	0x7551, 0x94A8, 0x7554, 0x94C8, 0x7559, 0x97AF, 0x755A, 0xE15C,
+	0x755B, 0xE15A, 0x755C, 0x927B, 0x755D, 0x90A4, 0x7560, 0x94A9,
+	0x7562, 0x954C, 0x7564, 0xE15E, 0x7565, 0x97AA, 0x7566, 0x8C6C,
+	0x7567, 0xE15F, 0x7569, 0xE15D, 0x756A, 0x94D4, 0x756B, 0xE160,
+	0x756D, 0xE161, 0x756F, 0xFB6F, 0x7570, 0x88D9, 0x7573, 0x8FF4,
+	0x7574, 0xE166, 0x7576, 0xE163, 0x7577, 0x93EB, 0x7578, 0xE162,
+	0x757F, 0x8B45, 0x7582, 0xE169, 0x7586, 0xE164, 0x7587, 0xE165,
+	0x7589, 0xE168, 0x758A, 0xE167, 0x758B, 0x9544, 0x758E, 0x9161,
+	0x758F, 0x9160, 0x7591, 0x8B5E, 0x7594, 0xE16A, 0x759A, 0xE16B,
+	0x759D, 0xE16C, 0x75A3, 0xE16E, 0x75A5, 0xE16D, 0x75AB, 0x8975,
+	0x75B1, 0xE176, 0x75B2, 0x94E6, 0x75B3, 0xE170, 0x75B5, 0xE172,
+	0x75B8, 0xE174, 0x75B9, 0x905D, 0x75BC, 0xE175, 0x75BD, 0xE173,
+	0x75BE, 0x8EBE, 0x75C2, 0xE16F, 0x75C3, 0xE171, 0x75C5, 0x9561,
+	0x75C7, 0x8FC7, 0x75CA, 0xE178, 0x75CD, 0xE177, 0x75D2, 0xE179,
+	0x75D4, 0x8EA4, 0x75D5, 0x8DAD, 0x75D8, 0x9397, 0x75D9, 0xE17A,
+	0x75DB, 0x92C9, 0x75DE, 0xE17C, 0x75E2, 0x979F, 0x75E3, 0xE17B,
+	0x75E9, 0x9189, 0x75F0, 0xE182, 0x75F2, 0xE184, 0x75F3, 0xE185,
+	0x75F4, 0x9273, 0x75FA, 0xE183, 0x75FC, 0xE180, 0x75FE, 0xE17D,
+	0x75FF, 0xE17E, 0x7601, 0xE181, 0x7609, 0xE188, 0x760B, 0xE186,
+	0x760D, 0xE187, 0x761F, 0xE189, 0x7620, 0xE18B, 0x7621, 0xE18C,
+	0x7622, 0xE18D, 0x7624, 0xE18E, 0x7627, 0xE18A, 0x7630, 0xE190,
+	0x7634, 0xE18F, 0x763B, 0xE191, 0x7642, 0x97C3, 0x7646, 0xE194,
+	0x7647, 0xE192, 0x7648, 0xE193, 0x764C, 0x8AE0, 0x7652, 0x96FC,
+	0x7656, 0x95C8, 0x7658, 0xE196, 0x765C, 0xE195, 0x7661, 0xE197,
+	0x7662, 0xE198, 0x7667, 0xE19C, 0x7668, 0xE199, 0x7669, 0xE19A,
+	0x766A, 0xE19B, 0x766C, 0xE19D, 0x7670, 0xE19E, 0x7672, 0xE19F,
+	0x7676, 0xE1A0, 0x7678, 0xE1A1, 0x767A, 0x94AD, 0x767B, 0x936F,
+	0x767C, 0xE1A2, 0x767D, 0x9492, 0x767E, 0x9553, 0x7680, 0xE1A3,
+	0x7682, 0xFB70, 0x7683, 0xE1A4, 0x7684, 0x9349, 0x7686, 0x8A46,
+	0x7687, 0x8D63, 0x7688, 0xE1A5, 0x768B, 0xE1A6, 0x768E, 0xE1A7,
+	0x7690, 0x8E48, 0x7693, 0xE1A9, 0x7696, 0xE1A8, 0x7699, 0xE1AA,
+	0x769A, 0xE1AB, 0x769B, 0xFB73, 0x769C, 0xFB71, 0x769E, 0xFB72,
+	0x76A6, 0xFB74, 0x76AE, 0x94E7, 0x76B0, 0xE1AC, 0x76B4, 0xE1AD,
+	0x76B7, 0xEA89, 0x76B8, 0xE1AE, 0x76B9, 0xE1AF, 0x76BA, 0xE1B0,
+	0x76BF, 0x8E4D, 0x76C2, 0xE1B1, 0x76C3, 0x9475, 0x76C6, 0x967E,
+	0x76C8, 0x896D, 0x76CA, 0x8976, 0x76CD, 0xE1B2, 0x76D2, 0xE1B4,
+	0x76D6, 0xE1B3, 0x76D7, 0x9390, 0x76DB, 0x90B7, 0x76DC, 0x9F58,
+	0x76DE, 0xE1B5, 0x76DF, 0x96BF, 0x76E1, 0xE1B6, 0x76E3, 0x8AC4,
+	0x76E4, 0x94D5, 0x76E5, 0xE1B7, 0x76E7, 0xE1B8, 0x76EA, 0xE1B9,
+	0x76EE, 0x96DA, 0x76F2, 0x96D3, 0x76F4, 0x92BC, 0x76F8, 0x918A,
+	0x76FB, 0xE1BB, 0x76FE, 0x8F82, 0x7701, 0x8FC8, 0x7704, 0xE1BE,
+	0x7707, 0xE1BD, 0x7708, 0xE1BC, 0x7709, 0x94FB, 0x770B, 0x8AC5,
+	0x770C, 0x8CA7, 0x771B, 0xE1C4, 0x771E, 0xE1C1, 0x771F, 0x905E,
+	0x7720, 0x96B0, 0x7724, 0xE1C0, 0x7725, 0xE1C2, 0x7726, 0xE1C3,
+	0x7729, 0xE1BF, 0x7737, 0xE1C5, 0x7738, 0xE1C6, 0x773A, 0x92AD,
+	0x773C, 0x8AE1, 0x7740, 0x9285, 0x7746, 0xFB76, 0x7747, 0xE1C7,
+	0x775A, 0xE1C8, 0x775B, 0xE1CB, 0x7761, 0x9087, 0x7763, 0x93C2,
+	0x7765, 0xE1CC, 0x7766, 0x9672, 0x7768, 0xE1C9, 0x776B, 0xE1CA,
+	0x7779, 0xE1CF, 0x777E, 0xE1CE, 0x777F, 0xE1CD, 0x778B, 0xE1D1,
+	0x778E, 0xE1D0, 0x7791, 0xE1D2, 0x779E, 0xE1D4, 0x77A0, 0xE1D3,
+	0x77A5, 0x95CB, 0x77AC, 0x8F75, 0x77AD, 0x97C4, 0x77B0, 0xE1D5,
+	0x77B3, 0x93B5, 0x77B6, 0xE1D6, 0x77B9, 0xE1D7, 0x77BB, 0xE1DB,
+	0x77BC, 0xE1D9, 0x77BD, 0xE1DA, 0x77BF, 0xE1D8, 0x77C7, 0xE1DC,
+	0x77CD, 0xE1DD, 0x77D7, 0xE1DE, 0x77DA, 0xE1DF, 0x77DB, 0x96B5,
+	0x77DC, 0xE1E0, 0x77E2, 0x96EE, 0x77E3, 0xE1E1, 0x77E5, 0x926D,
+	0x77E7, 0x948A, 0x77E9, 0x8BE9, 0x77ED, 0x925A, 0x77EE, 0xE1E2,
+	0x77EF, 0x8BB8, 0x77F3, 0x90CE, 0x77FC, 0xE1E3, 0x7802, 0x8DBB,
+	0x780C, 0xE1E4, 0x7812, 0xE1E5, 0x7814, 0x8CA4, 0x7815, 0x8DD3,
+	0x7820, 0xE1E7, 0x7821, 0xFB78, 0x7825, 0x9375, 0x7826, 0x8DD4,
+	0x7827, 0x8B6D, 0x7832, 0x9643, 0x7834, 0x946A, 0x783A, 0x9376,
+	0x783F, 0x8D7B, 0x7845, 0xE1E9, 0x784E, 0xFB79, 0x785D, 0x8FC9,
+	0x7864, 0xFB7A, 0x786B, 0x97B0, 0x786C, 0x8D64, 0x786F, 0x8CA5,
+	0x7872, 0x94A1, 0x7874, 0xE1EB, 0x787A, 0xFB7B, 0x787C, 0xE1ED,
+	0x7881, 0x8CE9, 0x7886, 0xE1EC, 0x7887, 0x92F4, 0x788C, 0xE1EF,
+	0x788D, 0x8A56, 0x788E, 0xE1EA, 0x7891, 0x94E8, 0x7893, 0x894F,
+	0x7895, 0x8DEA, 0x7897, 0x9871, 0x789A, 0xE1EE, 0x78A3, 0xE1F0,
+	0x78A7, 0x95C9, 0x78A9, 0x90D7, 0x78AA, 0xE1F2, 0x78AF, 0xE1F3,
+	0x78B5, 0xE1F1, 0x78BA, 0x8A6D, 0x78BC, 0xE1F9, 0x78BE, 0xE1F8,
+	0x78C1, 0x8EA5, 0x78C5, 0xE1FA, 0x78C6, 0xE1F5, 0x78CA, 0xE1FB,
+	0x78CB, 0xE1F6, 0x78D0, 0x94D6, 0x78D1, 0xE1F4, 0x78D4, 0xE1F7,
+	0x78DA, 0xE241, 0x78E7, 0xE240, 0x78E8, 0x9681, 0x78EC, 0xE1FC,
+	0x78EF, 0x88E9, 0x78F4, 0xE243, 0x78FD, 0xE242, 0x7901, 0x8FCA,
+	0x7907, 0xE244, 0x790E, 0x9162, 0x7911, 0xE246, 0x7912, 0xE245,
+	0x7919, 0xE247, 0x7926, 0xE1E6, 0x792A, 0xE1E8, 0x792B, 0xE249,
+	0x792C, 0xE248, 0x7930, 0xFB7C, 0x793A, 0x8EA6, 0x793C, 0x97E7,
+	0x793E, 0x8ED0, 0x7940, 0xE24A, 0x7941, 0x8C56, 0x7947, 0x8B5F,
+	0x7948, 0x8B46, 0x7949, 0x8E83, 0x7950, 0x9753, 0x7953, 0xE250,
+	0x7955, 0xE24F, 0x7956, 0x9163, 0x7957, 0xE24C, 0x795A, 0xE24E,
+	0x795D, 0x8F6A, 0x795E, 0x905F, 0x795F, 0xE24D, 0x7960, 0xE24B,
+	0x7962, 0x9449, 0x7965, 0x8FCB, 0x7968, 0x955B, 0x796D, 0x8DD5,
+	0x7977, 0x9398, 0x797A, 0xE251, 0x797F, 0xE252, 0x7980, 0xE268,
+	0x7981, 0x8BD6, 0x7984, 0x985C, 0x7985, 0x9154, 0x798A, 0xE253,
+	0x798D, 0x89D0, 0x798E, 0x92F5, 0x798F, 0x959F, 0x7994, 0xFB81,
+	0x799B, 0xFB83, 0x799D, 0xE254, 0x79A6, 0x8B9A, 0x79A7, 0xE255,
+	0x79AA, 0xE257, 0x79AE, 0xE258, 0x79B0, 0x9448, 0x79B3, 0xE259,
+	0x79B9, 0xE25A, 0x79BA, 0xE25B, 0x79BD, 0x8BD7, 0x79BE, 0x89D1,
+	0x79BF, 0x93C3, 0x79C0, 0x8F47, 0x79C1, 0x8E84, 0x79C9, 0xE25C,
+	0x79CB, 0x8F48, 0x79D1, 0x89C8, 0x79D2, 0x9562, 0x79D5, 0xE25D,
+	0x79D8, 0x94E9, 0x79DF, 0x9164, 0x79E1, 0xE260, 0x79E3, 0xE261,
+	0x79E4, 0x9489, 0x79E6, 0x9060, 0x79E7, 0xE25E, 0x79E9, 0x9281,
+	0x79EC, 0xE25F, 0x79F0, 0x8FCC, 0x79FB, 0x88DA, 0x7A00, 0x8B48,
+	0x7A08, 0xE262, 0x7A0B, 0x92F6, 0x7A0D, 0xE263, 0x7A0E, 0x90C5,
+	0x7A14, 0x96AB, 0x7A17, 0x9542, 0x7A18, 0xE264, 0x7A19, 0xE265,
+	0x7A1A, 0x9274, 0x7A1C, 0x97C5, 0x7A1F, 0xE267, 0x7A20, 0xE266,
+	0x7A2E, 0x8EED, 0x7A31, 0xE269, 0x7A32, 0x88EE, 0x7A37, 0xE26C,
+	0x7A3B, 0xE26A, 0x7A3C, 0x89D2, 0x7A3D, 0x8C6D, 0x7A3E, 0xE26B,
+	0x7A3F, 0x8D65, 0x7A40, 0x8D92, 0x7A42, 0x95E4, 0x7A43, 0xE26D,
+	0x7A46, 0x9673, 0x7A49, 0xE26F, 0x7A4D, 0x90CF, 0x7A4E, 0x896E,
+	0x7A4F, 0x89B8, 0x7A50, 0x88AA, 0x7A57, 0xE26E, 0x7A61, 0xE270,
+	0x7A62, 0xE271, 0x7A63, 0x8FF5, 0x7A69, 0xE272, 0x7A6B, 0x8A6E,
+	0x7A70, 0xE274, 0x7A74, 0x8C8A, 0x7A76, 0x8B86, 0x7A79, 0xE275,
+	0x7A7A, 0x8BF3, 0x7A7D, 0xE276, 0x7A7F, 0x90FA, 0x7A81, 0x93CB,
+	0x7A83, 0x90DE, 0x7A84, 0x8DF3, 0x7A88, 0xE277, 0x7A92, 0x9282,
+	0x7A93, 0x918B, 0x7A95, 0xE279, 0x7A96, 0xE27B, 0x7A97, 0xE278,
+	0x7A98, 0xE27A, 0x7A9F, 0x8C41, 0x7AA9, 0xE27C, 0x7AAA, 0x8C45,
+	0x7AAE, 0x8B87, 0x7AAF, 0x9771, 0x7AB0, 0xE27E, 0x7AB6, 0xE280,
+	0x7ABA, 0x894D, 0x7ABF, 0xE283, 0x7AC3, 0x8A96, 0x7AC4, 0xE282,
+	0x7AC5, 0xE281, 0x7AC7, 0xE285, 0x7AC8, 0xE27D, 0x7ACA, 0xE286,
+	0x7ACB, 0x97A7, 0x7ACD, 0xE287, 0x7ACF, 0xE288, 0x7AD1, 0xFB84,
+	0x7AD2, 0x9AF2, 0x7AD3, 0xE28A, 0x7AD5, 0xE289, 0x7AD9, 0xE28B,
+	0x7ADA, 0xE28C, 0x7ADC, 0x97B3, 0x7ADD, 0xE28D, 0x7ADF, 0xE8ED,
+	0x7AE0, 0x8FCD, 0x7AE1, 0xE28E, 0x7AE2, 0xE28F, 0x7AE3, 0x8F76,
+	0x7AE5, 0x93B6, 0x7AE6, 0xE290, 0x7AE7, 0xFB85, 0x7AEA, 0x9247,
+	0x7AEB, 0xFB87, 0x7AED, 0xE291, 0x7AEF, 0x925B, 0x7AF0, 0xE292,
+	0x7AF6, 0x8BA3, 0x7AF8, 0x995E, 0x7AF9, 0x927C, 0x7AFA, 0x8EB1,
+	0x7AFF, 0x8AC6, 0x7B02, 0xE293, 0x7B04, 0xE2A0, 0x7B06, 0xE296,
+	0x7B08, 0x8B88, 0x7B0A, 0xE295, 0x7B0B, 0xE2A2, 0x7B0F, 0xE294,
+	0x7B11, 0x8FCE, 0x7B18, 0xE298, 0x7B19, 0xE299, 0x7B1B, 0x934A,
+	0x7B1E, 0xE29A, 0x7B20, 0x8A7D, 0x7B25, 0x9079, 0x7B26, 0x9584,
+	0x7B28, 0xE29C, 0x7B2C, 0x91E6, 0x7B33, 0xE297, 0x7B35, 0xE29B,
+	0x7B36, 0xE29D, 0x7B39, 0x8DF9, 0x7B45, 0xE2A4, 0x7B46, 0x954D,
+	0x7B48, 0x94A4, 0x7B49, 0x9399, 0x7B4B, 0x8BD8, 0x7B4C, 0xE2A3,
+	0x7B4D, 0xE2A1, 0x7B4F, 0x94B3, 0x7B50, 0xE29E, 0x7B51, 0x927D,
+	0x7B52, 0x939B, 0x7B54, 0x939A, 0x7B56, 0x8DF4, 0x7B5D, 0xE2B6,
+	0x7B65, 0xE2A6, 0x7B67, 0xE2A8, 0x7B6C, 0xE2AB, 0x7B6E, 0xE2AC,
+	0x7B70, 0xE2A9, 0x7B71, 0xE2AA, 0x7B74, 0xE2A7, 0x7B75, 0xE2A5,
+	0x7B7A, 0xE29F, 0x7B86, 0x95CD, 0x7B87, 0x89D3, 0x7B8B, 0xE2B3,
+	0x7B8D, 0xE2B0, 0x7B8F, 0xE2B5, 0x7B92, 0xE2B4, 0x7B94, 0x9493,
+	0x7B95, 0x96A5, 0x7B97, 0x8E5A, 0x7B98, 0xE2AE, 0x7B99, 0xE2B7,
+	0x7B9A, 0xE2B2, 0x7B9C, 0xE2B1, 0x7B9D, 0xE2AD, 0x7B9E, 0xFB88,
+	0x7B9F, 0xE2AF, 0x7BA1, 0x8AC7, 0x7BAA, 0x925C, 0x7BAD, 0x90FB,
+	0x7BB1, 0x94A0, 0x7BB4, 0xE2BC, 0x7BB8, 0x94A2, 0x7BC0, 0x90DF,
+	0x7BC1, 0xE2B9, 0x7BC4, 0x94CD, 0x7BC6, 0xE2BD, 0x7BC7, 0x95D1,
+	0x7BC9, 0x927A, 0x7BCB, 0xE2B8, 0x7BCC, 0xE2BA, 0x7BCF, 0xE2BB,
+	0x7BDD, 0xE2BE, 0x7BE0, 0x8EC2, 0x7BE4, 0x93C4, 0x7BE5, 0xE2C3,
+	0x7BE6, 0xE2C2, 0x7BE9, 0xE2BF, 0x7BED, 0x9855, 0x7BF3, 0xE2C8,
+	0x7BF6, 0xE2CC, 0x7BF7, 0xE2C9, 0x7C00, 0xE2C5, 0x7C07, 0xE2C6,
+	0x7C0D, 0xE2CB, 0x7C11, 0xE2C0, 0x7C12, 0x99D3, 0x7C13, 0xE2C7,
+	0x7C14, 0xE2C1, 0x7C17, 0xE2CA, 0x7C1F, 0xE2D0, 0x7C21, 0x8AC8,
+	0x7C23, 0xE2CD, 0x7C27, 0xE2CE, 0x7C2A, 0xE2CF, 0x7C2B, 0xE2D2,
+	0x7C37, 0xE2D1, 0x7C38, 0x94F4, 0x7C3D, 0xE2D3, 0x7C3E, 0x97FA,
+	0x7C3F, 0x95EB, 0x7C40, 0xE2D8, 0x7C43, 0xE2D5, 0x7C4C, 0xE2D4,
+	0x7C4D, 0x90D0, 0x7C4F, 0xE2D7, 0x7C50, 0xE2D9, 0x7C54, 0xE2D6,
+	0x7C56, 0xE2DD, 0x7C58, 0xE2DA, 0x7C5F, 0xE2DB, 0x7C60, 0xE2C4,
+	0x7C64, 0xE2DC, 0x7C65, 0xE2DE, 0x7C6C, 0xE2DF, 0x7C73, 0x95C4,
+	0x7C75, 0xE2E0, 0x7C7E, 0x96E0, 0x7C81, 0x8BCC, 0x7C82, 0x8C48,
+	0x7C83, 0xE2E1, 0x7C89, 0x95B2, 0x7C8B, 0x9088, 0x7C8D, 0x96AE,
+	0x7C90, 0xE2E2, 0x7C92, 0x97B1, 0x7C95, 0x9494, 0x7C97, 0x9165,
+	0x7C98, 0x9453, 0x7C9B, 0x8F6C, 0x7C9F, 0x88BE, 0x7CA1, 0xE2E7,
+	0x7CA2, 0xE2E5, 0x7CA4, 0xE2E3, 0x7CA5, 0x8A9F, 0x7CA7, 0x8FCF,
+	0x7CA8, 0xE2E8, 0x7CAB, 0xE2E6, 0x7CAD, 0xE2E4, 0x7CAE, 0xE2EC,
+	0x7CB1, 0xE2EB, 0x7CB2, 0xE2EA, 0x7CB3, 0xE2E9, 0x7CB9, 0xE2ED,
+	0x7CBD, 0xE2EE, 0x7CBE, 0x90B8, 0x7CC0, 0xE2EF, 0x7CC2, 0xE2F1,
+	0x7CC5, 0xE2F0, 0x7CCA, 0x8CD0, 0x7CCE, 0x9157, 0x7CD2, 0xE2F3,
+	0x7CD6, 0x939C, 0x7CD8, 0xE2F2, 0x7CDC, 0xE2F4, 0x7CDE, 0x95B3,
+	0x7CDF, 0x918C, 0x7CE0, 0x8D66, 0x7CE2, 0xE2F5, 0x7CE7, 0x97C6,
+	0x7CEF, 0xE2F7, 0x7CF2, 0xE2F8, 0x7CF4, 0xE2F9, 0x7CF6, 0xE2FA,
+	0x7CF8, 0x8E85, 0x7CFA, 0xE2FB, 0x7CFB, 0x8C6E, 0x7CFE, 0x8B8A,
+	0x7D00, 0x8B49, 0x7D02, 0xE340, 0x7D04, 0x96F1, 0x7D05, 0x8D67,
+	0x7D06, 0xE2FC, 0x7D0A, 0xE343, 0x7D0B, 0x96E4, 0x7D0D, 0x945B,
+	0x7D10, 0x9552, 0x7D14, 0x8F83, 0x7D15, 0xE342, 0x7D17, 0x8ED1,
+	0x7D18, 0x8D68, 0x7D19, 0x8E86, 0x7D1A, 0x8B89, 0x7D1B, 0x95B4,
+	0x7D1C, 0xE341, 0x7D20, 0x9166, 0x7D21, 0x9661, 0x7D22, 0x8DF5,
+	0x7D2B, 0x8E87, 0x7D2C, 0x92DB, 0x7D2E, 0xE346, 0x7D2F, 0x97DD,
+	0x7D30, 0x8DD7, 0x7D32, 0xE347, 0x7D33, 0x9061, 0x7D35, 0xE349,
+	0x7D39, 0x8FD0, 0x7D3A, 0x8DAE, 0x7D3F, 0xE348, 0x7D42, 0x8F49,
+	0x7D43, 0x8CBC, 0x7D44, 0x9167, 0x7D45, 0xE344, 0x7D46, 0xE34A,
+	0x7D48, 0xFB8A, 0x7D4B, 0xE345, 0x7D4C, 0x8C6F, 0x7D4E, 0xE34D,
+	0x7D4F, 0xE351, 0x7D50, 0x8C8B, 0x7D56, 0xE34C, 0x7D5B, 0xE355,
+	0x7D5C, 0xFB8B, 0x7D5E, 0x8D69, 0x7D61, 0x978D, 0x7D62, 0x88BA,
+	0x7D63, 0xE352, 0x7D66, 0x8B8B, 0x7D68, 0xE34F, 0x7D6E, 0xE350,
+	0x7D71, 0x939D, 0x7D72, 0xE34E, 0x7D73, 0xE34B, 0x7D75, 0x8A47,
+	0x7D76, 0x90E2, 0x7D79, 0x8CA6, 0x7D7D, 0xE357, 0x7D89, 0xE354,
+	0x7D8F, 0xE356, 0x7D93, 0xE353, 0x7D99, 0x8C70, 0x7D9A, 0x91B1,
+	0x7D9B, 0xE358, 0x7D9C, 0x918E, 0x7D9F, 0xE365, 0x7DA0, 0xFB8D,
+	0x7DA2, 0xE361, 0x7DA3, 0xE35B, 0x7DAB, 0xE35F, 0x7DAC, 0x8EF8,
+	0x7DAD, 0x88DB, 0x7DAE, 0xE35A, 0x7DAF, 0xE362, 0x7DB0, 0xE366,
+	0x7DB1, 0x8D6A, 0x7DB2, 0x96D4, 0x7DB4, 0x92D4, 0x7DB5, 0xE35C,
+	0x7DB7, 0xFB8C, 0x7DB8, 0xE364, 0x7DBA, 0xE359, 0x7DBB, 0x925D,
+	0x7DBD, 0xE35E, 0x7DBE, 0x88BB, 0x7DBF, 0x96C8, 0x7DC7, 0xE35D,
+	0x7DCA, 0x8BD9, 0x7DCB, 0x94EA, 0x7DCF, 0x918D, 0x7DD1, 0x97CE,
+	0x7DD2, 0x8F8F, 0x7DD5, 0xE38E, 0x7DD6, 0xFB8E, 0x7DD8, 0xE367,
+	0x7DDA, 0x90FC, 0x7DDC, 0xE363, 0x7DDD, 0xE368, 0x7DDE, 0xE36A,
+	0x7DE0, 0x92F7, 0x7DE1, 0xE36D, 0x7DE4, 0xE369, 0x7DE8, 0x95D2,
+	0x7DE9, 0x8AC9, 0x7DEC, 0x96C9, 0x7DEF, 0x88DC, 0x7DF2, 0xE36C,
+	0x7DF4, 0x97FB, 0x7DFB, 0xE36B, 0x7E01, 0x898F, 0x7E04, 0x93EA,
+	0x7E05, 0xE36E, 0x7E09, 0xE375, 0x7E0A, 0xE36F, 0x7E0B, 0xE376,
+	0x7E12, 0xE372, 0x7E1B, 0x949B, 0x7E1E, 0x8EC8, 0x7E1F, 0xE374,
+	0x7E21, 0xE371, 0x7E22, 0xE377, 0x7E23, 0xE370, 0x7E26, 0x8F63,
+	0x7E2B, 0x9644, 0x7E2E, 0x8F6B, 0x7E31, 0xE373, 0x7E32, 0xE380,
+	0x7E35, 0xE37B, 0x7E37, 0xE37E, 0x7E39, 0xE37C, 0x7E3A, 0xE381,
+	0x7E3B, 0xE37A, 0x7E3D, 0xE360, 0x7E3E, 0x90D1, 0x7E41, 0x94C9,
+	0x7E43, 0xE37D, 0x7E46, 0xE378, 0x7E4A, 0x9140, 0x7E4B, 0x8C71,
+	0x7E4D, 0x8F4A, 0x7E52, 0xFB8F, 0x7E54, 0x9044, 0x7E55, 0x9155,
+	0x7E56, 0xE384, 0x7E59, 0xE386, 0x7E5A, 0xE387, 0x7E5D, 0xE383,
+	0x7E5E, 0xE385, 0x7E66, 0xE379, 0x7E67, 0xE382, 0x7E69, 0xE38A,
+	0x7E6A, 0xE389, 0x7E6D, 0x969A, 0x7E70, 0x8C4A, 0x7E79, 0xE388,
+	0x7E7B, 0xE38C, 0x7E7C, 0xE38B, 0x7E7D, 0xE38F, 0x7E7F, 0xE391,
+	0x7E82, 0x8E5B, 0x7E83, 0xE38D, 0x7E88, 0xE392, 0x7E89, 0xE393,
+	0x7E8A, 0xFA5C, 0x7E8C, 0xE394, 0x7E8E, 0xE39A, 0x7E8F, 0x935A,
+	0x7E90, 0xE396, 0x7E92, 0xE395, 0x7E93, 0xE397, 0x7E94, 0xE398,
+	0x7E96, 0xE399, 0x7E9B, 0xE39B, 0x7E9C, 0xE39C, 0x7F36, 0x8ACA,
+	0x7F38, 0xE39D, 0x7F3A, 0xE39E, 0x7F45, 0xE39F, 0x7F47, 0xFB90,
+	0x7F4C, 0xE3A0, 0x7F4D, 0xE3A1, 0x7F4E, 0xE3A2, 0x7F50, 0xE3A3,
+	0x7F51, 0xE3A4, 0x7F54, 0xE3A6, 0x7F55, 0xE3A5, 0x7F58, 0xE3A7,
+	0x7F5F, 0xE3A8, 0x7F60, 0xE3A9, 0x7F67, 0xE3AC, 0x7F68, 0xE3AA,
+	0x7F69, 0xE3AB, 0x7F6A, 0x8DDF, 0x7F6B, 0x8C72, 0x7F6E, 0x9275,
+	0x7F70, 0x94B1, 0x7F72, 0x8F90, 0x7F75, 0x946C, 0x7F77, 0x94EB,
+	0x7F78, 0xE3AD, 0x7F79, 0x9CEB, 0x7F82, 0xE3AE, 0x7F83, 0xE3B0,
+	0x7F85, 0x9785, 0x7F86, 0xE3AF, 0x7F87, 0xE3B2, 0x7F88, 0xE3B1,
+	0x7F8A, 0x9772, 0x7F8C, 0xE3B3, 0x7F8E, 0x94FC, 0x7F94, 0xE3B4,
+	0x7F9A, 0xE3B7, 0x7F9D, 0xE3B6, 0x7F9E, 0xE3B5, 0x7FA1, 0xFB91,
+	0x7FA3, 0xE3B8, 0x7FA4, 0x8C51, 0x7FA8, 0x9141, 0x7FA9, 0x8B60,
+	0x7FAE, 0xE3BC, 0x7FAF, 0xE3B9, 0x7FB2, 0xE3BA, 0x7FB6, 0xE3BD,
+	0x7FB8, 0xE3BE, 0x7FB9, 0xE3BB, 0x7FBD, 0x8948, 0x7FC1, 0x89A5,
+	0x7FC5, 0xE3C0, 0x7FC6, 0xE3C1, 0x7FCA, 0xE3C2, 0x7FCC, 0x9782,
+	0x7FD2, 0x8F4B, 0x7FD4, 0xE3C4, 0x7FD5, 0xE3C3, 0x7FE0, 0x9089,
+	0x7FE1, 0xE3C5, 0x7FE6, 0xE3C6, 0x7FE9, 0xE3C7, 0x7FEB, 0x8AE3,
+	0x7FF0, 0x8ACB, 0x7FF3, 0xE3C8, 0x7FF9, 0xE3C9, 0x7FFB, 0x967C,
+	0x7FFC, 0x9783, 0x8000, 0x9773, 0x8001, 0x9856, 0x8003, 0x8D6C,
+	0x8004, 0xE3CC, 0x8005, 0x8ED2, 0x8006, 0xE3CB, 0x800B, 0xE3CD,
+	0x800C, 0x8EA7, 0x8010, 0x91CF, 0x8012, 0xE3CE, 0x8015, 0x8D6B,
+	0x8017, 0x96D5, 0x8018, 0xE3CF, 0x8019, 0xE3D0, 0x801C, 0xE3D1,
+	0x8021, 0xE3D2, 0x8028, 0xE3D3, 0x8033, 0x8EA8, 0x8036, 0x96EB,
+	0x803B, 0xE3D5, 0x803D, 0x925E, 0x803F, 0xE3D4, 0x8046, 0xE3D7,
+	0x804A, 0xE3D6, 0x8052, 0xE3D8, 0x8056, 0x90B9, 0x8058, 0xE3D9,
+	0x805A, 0xE3DA, 0x805E, 0x95B7, 0x805F, 0xE3DB, 0x8061, 0x918F,
+	0x8062, 0xE3DC, 0x8068, 0xE3DD, 0x806F, 0x97FC, 0x8070, 0xE3E0,
+	0x8072, 0xE3DF, 0x8073, 0xE3DE, 0x8074, 0x92AE, 0x8076, 0xE3E1,
+	0x8077, 0x9045, 0x8079, 0xE3E2, 0x807D, 0xE3E3, 0x807E, 0x9857,
+	0x807F, 0xE3E4, 0x8084, 0xE3E5, 0x8085, 0xE3E7, 0x8086, 0xE3E6,
+	0x8087, 0x94A3, 0x8089, 0x93F7, 0x808B, 0x985D, 0x808C, 0x94A7,
+	0x8093, 0xE3E9, 0x8096, 0x8FD1, 0x8098, 0x9549, 0x809A, 0xE3EA,
+	0x809B, 0xE3E8, 0x809D, 0x8ACC, 0x80A1, 0x8CD2, 0x80A2, 0x8E88,
+	0x80A5, 0x94EC, 0x80A9, 0x8CA8, 0x80AA, 0x9662, 0x80AC, 0xE3ED,
+	0x80AD, 0xE3EB, 0x80AF, 0x8D6D, 0x80B1, 0x8D6E, 0x80B2, 0x88E7,
+	0x80B4, 0x8DE6, 0x80BA, 0x9478, 0x80C3, 0x88DD, 0x80C4, 0xE3F2,
+	0x80C6, 0x925F, 0x80CC, 0x9477, 0x80CE, 0x91D9, 0x80D6, 0xE3F4,
+	0x80D9, 0xE3F0, 0x80DA, 0xE3F3, 0x80DB, 0xE3EE, 0x80DD, 0xE3F1,
+	0x80DE, 0x9645, 0x80E1, 0x8CD3, 0x80E4, 0x88FB, 0x80E5, 0xE3EF,
+	0x80EF, 0xE3F6, 0x80F1, 0xE3F7, 0x80F4, 0x93B7, 0x80F8, 0x8BB9,
+	0x80FC, 0xE445, 0x80FD, 0x945C, 0x8102, 0x8E89, 0x8105, 0x8BBA,
+	0x8106, 0x90C6, 0x8107, 0x9865, 0x8108, 0x96AC, 0x8109, 0xE3F5,
+	0x810A, 0x90D2, 0x811A, 0x8B72, 0x811B, 0xE3F8, 0x8123, 0xE3FA,
+	0x8129, 0xE3F9, 0x812F, 0xE3FB, 0x8131, 0x9245, 0x8133, 0x945D,
+	0x8139, 0x92AF, 0x813E, 0xE442, 0x8146, 0xE441, 0x814B, 0xE3FC,
+	0x814E, 0x9074, 0x8150, 0x9585, 0x8151, 0xE444, 0x8153, 0xE443,
+	0x8154, 0x8D6F, 0x8155, 0x9872, 0x815F, 0xE454, 0x8165, 0xE448,
+	0x8166, 0xE449, 0x816B, 0x8EEE, 0x816E, 0xE447, 0x8170, 0x8D98,
+	0x8171, 0xE446, 0x8174, 0xE44A, 0x8178, 0x92B0, 0x8179, 0x95A0,
+	0x817A, 0x9142, 0x817F, 0x91DA, 0x8180, 0xE44E, 0x8182, 0xE44F,
+	0x8183, 0xE44B, 0x8188, 0xE44C, 0x818A, 0xE44D, 0x818F, 0x8D70,
+	0x8193, 0xE455, 0x8195, 0xE451, 0x819A, 0x9586, 0x819C, 0x968C,
+	0x819D, 0x9547, 0x81A0, 0xE450, 0x81A3, 0xE453, 0x81A4, 0xE452,
+	0x81A8, 0x9663, 0x81A9, 0xE456, 0x81B0, 0xE457, 0x81B3, 0x9156,
+	0x81B5, 0xE458, 0x81B8, 0xE45A, 0x81BA, 0xE45E, 0x81BD, 0xE45B,
+	0x81BE, 0xE459, 0x81BF, 0x945E, 0x81C0, 0xE45C, 0x81C2, 0xE45D,
+	0x81C6, 0x89B0, 0x81C8, 0xE464, 0x81C9, 0xE45F, 0x81CD, 0xE460,
+	0x81D1, 0xE461, 0x81D3, 0x919F, 0x81D8, 0xE463, 0x81D9, 0xE462,
+	0x81DA, 0xE465, 0x81DF, 0xE466, 0x81E0, 0xE467, 0x81E3, 0x9062,
+	0x81E5, 0x89E7, 0x81E7, 0xE468, 0x81E8, 0x97D5, 0x81EA, 0x8EA9,
+	0x81ED, 0x8F4C, 0x81F3, 0x8E8A, 0x81F4, 0x9276, 0x81FA, 0xE469,
+	0x81FB, 0xE46A, 0x81FC, 0x8950, 0x81FE, 0xE46B, 0x8201, 0xE46C,
+	0x8202, 0xE46D, 0x8205, 0xE46E, 0x8207, 0xE46F, 0x8208, 0x8BBB,
+	0x8209, 0x9DA8, 0x820A, 0xE470, 0x820C, 0x90E3, 0x820D, 0xE471,
+	0x820E, 0x8EC9, 0x8210, 0xE472, 0x8212, 0x98AE, 0x8216, 0xE473,
+	0x8217, 0x95DC, 0x8218, 0x8ADA, 0x821B, 0x9143, 0x821C, 0x8F77,
+	0x821E, 0x9591, 0x821F, 0x8F4D, 0x8229, 0xE474, 0x822A, 0x8D71,
+	0x822B, 0xE475, 0x822C, 0x94CA, 0x822E, 0xE484, 0x8233, 0xE477,
+	0x8235, 0x91C7, 0x8236, 0x9495, 0x8237, 0x8CBD, 0x8238, 0xE476,
+	0x8239, 0x9144, 0x8240, 0xE478, 0x8247, 0x92F8, 0x8258, 0xE47A,
+	0x8259, 0xE479, 0x825A, 0xE47C, 0x825D, 0xE47B, 0x825F, 0xE47D,
+	0x8262, 0xE480, 0x8264, 0xE47E, 0x8266, 0x8ACD, 0x8268, 0xE481,
+	0x826A, 0xE482, 0x826B, 0xE483, 0x826E, 0x8DAF, 0x826F, 0x97C7,
+	0x8271, 0xE485, 0x8272, 0x9046, 0x8276, 0x8990, 0x8277, 0xE486,
+	0x8278, 0xE487, 0x827E, 0xE488, 0x828B, 0x88F0, 0x828D, 0xE489,
+	0x8292, 0xE48A, 0x8299, 0x9587, 0x829D, 0x8EC5, 0x829F, 0xE48C,
+	0x82A5, 0x8A48, 0x82A6, 0x88B0, 0x82AB, 0xE48B, 0x82AC, 0xE48E,
+	0x82AD, 0x946D, 0x82AF, 0x9063, 0x82B1, 0x89D4, 0x82B3, 0x9646,
+	0x82B8, 0x8C7C, 0x82B9, 0x8BDA, 0x82BB, 0xE48D, 0x82BD, 0x89E8,
+	0x82C5, 0x8AA1, 0x82D1, 0x8991, 0x82D2, 0xE492, 0x82D3, 0x97E8,
+	0x82D4, 0x91DB, 0x82D7, 0x9563, 0x82D9, 0xE49E, 0x82DB, 0x89D5,
+	0x82DC, 0xE49C, 0x82DE, 0xE49A, 0x82DF, 0xE491, 0x82E1, 0xE48F,
+	0x82E3, 0xE490, 0x82E5, 0x8EE1, 0x82E6, 0x8BEA, 0x82E7, 0x9297,
+	0x82EB, 0x93CF, 0x82F1, 0x8970, 0x82F3, 0xE494, 0x82F4, 0xE493,
+	0x82F9, 0xE499, 0x82FA, 0xE495, 0x82FB, 0xE498, 0x8301, 0xFB93,
+	0x8302, 0x96CE, 0x8303, 0xE497, 0x8304, 0x89D6, 0x8305, 0x8A9D,
+	0x8306, 0xE49B, 0x8309, 0xE49D, 0x830E, 0x8C73, 0x8316, 0xE4A1,
+	0x8317, 0xE4AA, 0x8318, 0xE4AB, 0x831C, 0x88A9, 0x8323, 0xE4B2,
+	0x8328, 0x88EF, 0x832B, 0xE4A9, 0x832F, 0xE4A8, 0x8331, 0xE4A3,
+	0x8332, 0xE4A2, 0x8334, 0xE4A0, 0x8335, 0xE49F, 0x8336, 0x9283,
+	0x8338, 0x91F9, 0x8339, 0xE4A5, 0x8340, 0xE4A4, 0x8345, 0xE4A7,
+	0x8349, 0x9190, 0x834A, 0x8C74, 0x834F, 0x8960, 0x8350, 0xE4A6,
+	0x8352, 0x8D72, 0x8358, 0x9191, 0x8362, 0xFB94, 0x8373, 0xE4B8,
+	0x8375, 0xE4B9, 0x8377, 0x89D7, 0x837B, 0x89AC, 0x837C, 0xE4B6,
+	0x837F, 0xFB95, 0x8385, 0xE4AC, 0x8387, 0xE4B4, 0x8389, 0xE4BB,
+	0x838A, 0xE4B5, 0x838E, 0xE4B3, 0x8393, 0xE496, 0x8396, 0xE4B1,
+	0x839A, 0xE4AD, 0x839E, 0x8ACE, 0x839F, 0xE4AF, 0x83A0, 0xE4BA,
+	0x83A2, 0xE4B0, 0x83A8, 0xE4BC, 0x83AA, 0xE4AE, 0x83AB, 0x949C,
+	0x83B1, 0x9789, 0x83B5, 0xE4B7, 0x83BD, 0xE4CD, 0x83C1, 0xE4C5,
+	0x83C5, 0x909B, 0x83C7, 0xFB96, 0x83CA, 0x8B65, 0x83CC, 0x8BDB,
+	0x83CE, 0xE4C0, 0x83D3, 0x89D9, 0x83D6, 0x8FD2, 0x83D8, 0xE4C3,
+	0x83DC, 0x8DD8, 0x83DF, 0x9370, 0x83E0, 0xE4C8, 0x83E9, 0x95EC,
+	0x83EB, 0xE4BF, 0x83EF, 0x89D8, 0x83F0, 0x8CD4, 0x83F1, 0x9548,
+	0x83F2, 0xE4C9, 0x83F4, 0xE4BD, 0x83F6, 0xFB97, 0x83F7, 0xE4C6,
+	0x83FB, 0xE4D0, 0x83FD, 0xE4C1, 0x8403, 0xE4C2, 0x8404, 0x93B8,
+	0x8407, 0xE4C7, 0x840B, 0xE4C4, 0x840C, 0x9647, 0x840D, 0xE4CA,
+	0x840E, 0x88DE, 0x8413, 0xE4BE, 0x8420, 0xE4CC, 0x8422, 0xE4CB,
+	0x8429, 0x948B, 0x842A, 0xE4D2, 0x842C, 0xE4DD, 0x8431, 0x8A9E,
+	0x8435, 0xE4E0, 0x8438, 0xE4CE, 0x843C, 0xE4D3, 0x843D, 0x978E,
+	0x8446, 0xE4DC, 0x8448, 0xFB98, 0x8449, 0x9774, 0x844E, 0x97A8,
+	0x8457, 0x9298, 0x845B, 0x8A8B, 0x8461, 0x9592, 0x8462, 0xE4E2,
+	0x8463, 0x939F, 0x8466, 0x88AF, 0x8469, 0xE4DB, 0x846B, 0xE4D7,
+	0x846C, 0x9192, 0x846D, 0xE4D1, 0x846E, 0xE4D9, 0x846F, 0xE4DE,
+	0x8471, 0x944B, 0x8475, 0x88A8, 0x8477, 0xE4D6, 0x8479, 0xE4DF,
+	0x847A, 0x9598, 0x8482, 0xE4DA, 0x8484, 0xE4D5, 0x848B, 0x8FD3,
+	0x8490, 0x8F4E, 0x8494, 0x8EAA, 0x8499, 0x96D6, 0x849C, 0x9566,
+	0x849F, 0xE4E5, 0x84A1, 0xE4EE, 0x84AD, 0xE4D8, 0x84B2, 0x8A97,
+	0x84B4, 0xFB99, 0x84B8, 0x8FF6, 0x84B9, 0xE4E3, 0x84BB, 0xE4E8,
+	0x84BC, 0x9193, 0x84BF, 0xE4E4, 0x84C1, 0xE4EB, 0x84C4, 0x927E,
+	0x84C6, 0xE4EC, 0x84C9, 0x9775, 0x84CA, 0xE4E1, 0x84CB, 0x8A57,
+	0x84CD, 0xE4E7, 0x84D0, 0xE4EA, 0x84D1, 0x96AA, 0x84D6, 0xE4ED,
+	0x84D9, 0xE4E6, 0x84DA, 0xE4E9, 0x84DC, 0xFA60, 0x84EC, 0x9648,
+	0x84EE, 0x9840, 0x84F4, 0xE4F1, 0x84FC, 0xE4F8, 0x84FF, 0xE4F0,
+	0x8500, 0x8EC1, 0x8506, 0xE4CF, 0x8511, 0x95CC, 0x8513, 0x96A0,
+	0x8514, 0xE4F7, 0x8515, 0xE4F6, 0x8517, 0xE4F2, 0x8518, 0xE4F3,
+	0x851A, 0x8955, 0x851F, 0xE4F5, 0x8521, 0xE4EF, 0x8526, 0x92D3,
+	0x852C, 0xE4F4, 0x852D, 0x88FC, 0x8535, 0x91A0, 0x853D, 0x95C1,
+	0x8540, 0xE4F9, 0x8541, 0xE540, 0x8543, 0x94D7, 0x8548, 0xE4FC,
+	0x8549, 0x8FD4, 0x854A, 0x8EC7, 0x854B, 0xE542, 0x854E, 0x8BBC,
+	0x8553, 0xFB9A, 0x8555, 0xE543, 0x8557, 0x9599, 0x8558, 0xE4FB,
+	0x8559, 0xFB9B, 0x855A, 0xE4D4, 0x8563, 0xE4FA, 0x8568, 0x986E,
+	0x8569, 0x93A0, 0x856A, 0x9593, 0x856B, 0xFB9C, 0x856D, 0xE54A,
+	0x8577, 0xE550, 0x857E, 0xE551, 0x8580, 0xE544, 0x8584, 0x9496,
+	0x8587, 0xE54E, 0x8588, 0xE546, 0x858A, 0xE548, 0x8590, 0xE552,
+	0x8591, 0xE547, 0x8594, 0xE54B, 0x8597, 0x8992, 0x8599, 0x93E3,
+	0x859B, 0xE54C, 0x859C, 0xE54F, 0x85A4, 0xE545, 0x85A6, 0x9145,
+	0x85A8, 0xE549, 0x85A9, 0x8E46, 0x85AA, 0x9064, 0x85AB, 0x8C4F,
+	0x85AC, 0x96F2, 0x85AE, 0x96F7, 0x85AF, 0x8F92, 0x85B0, 0xFB9E,
+	0x85B9, 0xE556, 0x85BA, 0xE554, 0x85C1, 0x986D, 0x85C9, 0xE553,
+	0x85CD, 0x9795, 0x85CF, 0xE555, 0x85D0, 0xE557, 0x85D5, 0xE558,
+	0x85DC, 0xE55B, 0x85DD, 0xE559, 0x85E4, 0x93A1, 0x85E5, 0xE55A,
+	0x85E9, 0x94CB, 0x85EA, 0xE54D, 0x85F7, 0x8F93, 0x85F9, 0xE55C,
+	0x85FA, 0xE561, 0x85FB, 0x9194, 0x85FE, 0xE560, 0x8602, 0xE541,
+	0x8606, 0xE562, 0x8607, 0x9168, 0x860A, 0xE55D, 0x860B, 0xE55F,
+	0x8613, 0xE55E, 0x8616, 0x9F50, 0x8617, 0x9F41, 0x861A, 0xE564,
+	0x8622, 0xE563, 0x862D, 0x9796, 0x862F, 0xE1BA, 0x8630, 0xE565,
+	0x863F, 0xE566, 0x864D, 0xE567, 0x864E, 0x8CD5, 0x8650, 0x8B73,
+	0x8654, 0xE569, 0x8655, 0x997C, 0x865A, 0x8B95, 0x865C, 0x97B8,
+	0x865E, 0x8BF1, 0x865F, 0xE56A, 0x8667, 0xE56B, 0x866B, 0x928E,
+	0x8671, 0xE56C, 0x8679, 0x93F8, 0x867B, 0x88B8, 0x868A, 0x89E1,
+	0x868B, 0xE571, 0x868C, 0xE572, 0x8693, 0xE56D, 0x8695, 0x8E5C,
+	0x86A3, 0xE56E, 0x86A4, 0x9461, 0x86A9, 0xE56F, 0x86AA, 0xE570,
+	0x86AB, 0xE57A, 0x86AF, 0xE574, 0x86B0, 0xE577, 0x86B6, 0xE573,
+	0x86C4, 0xE575, 0x86C6, 0xE576, 0x86C7, 0x8ED6, 0x86C9, 0xE578,
+	0x86CB, 0x9260, 0x86CD, 0x8C75, 0x86CE, 0x8A61, 0x86D4, 0xE57B,
+	0x86D9, 0x8A5E, 0x86DB, 0xE581, 0x86DE, 0xE57C, 0x86DF, 0xE580,
+	0x86E4, 0x94B8, 0x86E9, 0xE57D, 0x86EC, 0xE57E, 0x86ED, 0x9567,
+	0x86EE, 0x94D8, 0x86EF, 0xE582, 0x86F8, 0x91FB, 0x86F9, 0xE58C,
+	0x86FB, 0xE588, 0x86FE, 0x89E9, 0x8700, 0xE586, 0x8702, 0x9649,
+	0x8703, 0xE587, 0x8706, 0xE584, 0x8708, 0xE585, 0x8709, 0xE58A,
+	0x870A, 0xE58D, 0x870D, 0xE58B, 0x8711, 0xE589, 0x8712, 0xE583,
+	0x8718, 0x9277, 0x871A, 0xE594, 0x871C, 0x96A8, 0x8725, 0xE592,
+	0x8729, 0xE593, 0x8734, 0xE58E, 0x8737, 0xE590, 0x873B, 0xE591,
+	0x873F, 0xE58F, 0x8749, 0x90E4, 0x874B, 0x9858, 0x874C, 0xE598,
+	0x874E, 0xE599, 0x8753, 0xE59F, 0x8755, 0x9049, 0x8757, 0xE59B,
+	0x8759, 0xE59E, 0x875F, 0xE596, 0x8760, 0xE595, 0x8763, 0xE5A0,
+	0x8766, 0x89DA, 0x8768, 0xE59C, 0x876A, 0xE5A1, 0x876E, 0xE59D,
+	0x8774, 0xE59A, 0x8776, 0x92B1, 0x8778, 0xE597, 0x877F, 0x9488,
+	0x8782, 0xE5A5, 0x878D, 0x975A, 0x879F, 0xE5A4, 0x87A2, 0xE5A3,
+	0x87AB, 0xE5AC, 0x87AF, 0xE5A6, 0x87B3, 0xE5AE, 0x87BA, 0x9786,
+	0x87BB, 0xE5B1, 0x87BD, 0xE5A8, 0x87C0, 0xE5A9, 0x87C4, 0xE5AD,
+	0x87C6, 0xE5B0, 0x87C7, 0xE5AF, 0x87CB, 0xE5A7, 0x87D0, 0xE5AA,
+	0x87D2, 0xE5BB, 0x87E0, 0xE5B4, 0x87EF, 0xE5B2, 0x87F2, 0xE5B3,
+	0x87F6, 0xE5B8, 0x87F7, 0xE5B9, 0x87F9, 0x8A49, 0x87FB, 0x8B61,
+	0x87FE, 0xE5B7, 0x8805, 0xE5A2, 0x8807, 0xFBA1, 0x880D, 0xE5B6,
+	0x880E, 0xE5BA, 0x880F, 0xE5B5, 0x8811, 0xE5BC, 0x8815, 0xE5BE,
+	0x8816, 0xE5BD, 0x8821, 0xE5C0, 0x8822, 0xE5BF, 0x8823, 0xE579,
+	0x8827, 0xE5C4, 0x8831, 0xE5C1, 0x8836, 0xE5C2, 0x8839, 0xE5C3,
+	0x883B, 0xE5C5, 0x8840, 0x8C8C, 0x8842, 0xE5C7, 0x8844, 0xE5C6,
+	0x8846, 0x8F4F, 0x884C, 0x8D73, 0x884D, 0x9FA5, 0x8852, 0xE5C8,
+	0x8853, 0x8F70, 0x8857, 0x8A58, 0x8859, 0xE5C9, 0x885B, 0x8971,
+	0x885D, 0x8FD5, 0x885E, 0xE5CA, 0x8861, 0x8D74, 0x8862, 0xE5CB,
+	0x8863, 0x88DF, 0x8868, 0x955C, 0x886B, 0xE5CC, 0x8870, 0x908A,
+	0x8872, 0xE5D3, 0x8875, 0xE5D0, 0x8877, 0x928F, 0x887D, 0xE5D1,
+	0x887E, 0xE5CE, 0x887F, 0x8BDC, 0x8881, 0xE5CD, 0x8882, 0xE5D4,
+	0x8888, 0x8C55, 0x888B, 0x91DC, 0x888D, 0xE5DA, 0x8892, 0xE5D6,
+	0x8896, 0x91B3, 0x8897, 0xE5D5, 0x8899, 0xE5D8, 0x889E, 0xE5CF,
+	0x88A2, 0xE5D9, 0x88A4, 0xE5DB, 0x88AB, 0x94ED, 0x88AE, 0xE5D7,
+	0x88B0, 0xE5DC, 0x88B1, 0xE5DE, 0x88B4, 0x8CD1, 0x88B5, 0xE5D2,
+	0x88B7, 0x88BF, 0x88BF, 0xE5DD, 0x88C1, 0x8DD9, 0x88C2, 0x97F4,
+	0x88C3, 0xE5DF, 0x88C4, 0xE5E0, 0x88C5, 0x9195, 0x88CF, 0x97A0,
+	0x88D4, 0xE5E1, 0x88D5, 0x9754, 0x88D8, 0xE5E2, 0x88D9, 0xE5E3,
+	0x88DC, 0x95E2, 0x88DD, 0xE5E4, 0x88DF, 0x8DBE, 0x88E1, 0x97A1,
+	0x88E8, 0xE5E9, 0x88F2, 0xE5EA, 0x88F3, 0x8FD6, 0x88F4, 0xE5E8,
+	0x88F5, 0xFBA2, 0x88F8, 0x9787, 0x88F9, 0xE5E5, 0x88FC, 0xE5E7,
+	0x88FD, 0x90BB, 0x88FE, 0x909E, 0x8902, 0xE5E6, 0x8904, 0xE5EB,
+	0x8907, 0x95A1, 0x890A, 0xE5ED, 0x890C, 0xE5EC, 0x8910, 0x8A8C,
+	0x8912, 0x964A, 0x8913, 0xE5EE, 0x891C, 0xFA5D, 0x891D, 0xE5FA,
+	0x891E, 0xE5F0, 0x8925, 0xE5F1, 0x892A, 0xE5F2, 0x892B, 0xE5F3,
+	0x8936, 0xE5F7, 0x8938, 0xE5F8, 0x893B, 0xE5F6, 0x8941, 0xE5F4,
+	0x8943, 0xE5EF, 0x8944, 0xE5F5, 0x894C, 0xE5F9, 0x894D, 0xE8B5,
+	0x8956, 0x89A6, 0x895E, 0xE5FC, 0x895F, 0x8BDD, 0x8960, 0xE5FB,
+	0x8964, 0xE641, 0x8966, 0xE640, 0x896A, 0xE643, 0x896D, 0xE642,
+	0x896F, 0xE644, 0x8972, 0x8F50, 0x8974, 0xE645, 0x8977, 0xE646,
+	0x897E, 0xE647, 0x897F, 0x90BC, 0x8981, 0x9776, 0x8983, 0xE648,
+	0x8986, 0x95A2, 0x8987, 0x9465, 0x8988, 0xE649, 0x898A, 0xE64A,
+	0x898B, 0x8CA9, 0x898F, 0x8B4B, 0x8993, 0xE64B, 0x8996, 0x8E8B,
+	0x8997, 0x9460, 0x8998, 0xE64C, 0x899A, 0x8A6F, 0x89A1, 0xE64D,
+	0x89A6, 0xE64F, 0x89A7, 0x9797, 0x89A9, 0xE64E, 0x89AA, 0x9065,
+	0x89AC, 0xE650, 0x89AF, 0xE651, 0x89B2, 0xE652, 0x89B3, 0x8ACF,
+	0x89BA, 0xE653, 0x89BD, 0xE654, 0x89BF, 0xE655, 0x89C0, 0xE656,
+	0x89D2, 0x8A70, 0x89DA, 0xE657, 0x89DC, 0xE658, 0x89DD, 0xE659,
+	0x89E3, 0x89F0, 0x89E6, 0x9047, 0x89E7, 0xE65A, 0x89F4, 0xE65B,
+	0x89F8, 0xE65C, 0x8A00, 0x8CBE, 0x8A02, 0x92F9, 0x8A03, 0xE65D,
+	0x8A08, 0x8C76, 0x8A0A, 0x9075, 0x8A0C, 0xE660, 0x8A0E, 0x93A2,
+	0x8A10, 0xE65F, 0x8A12, 0xFBA3, 0x8A13, 0x8C50, 0x8A16, 0xE65E,
+	0x8A17, 0x91F5, 0x8A18, 0x8B4C, 0x8A1B, 0xE661, 0x8A1D, 0xE662,
+	0x8A1F, 0x8FD7, 0x8A23, 0x8C8D, 0x8A25, 0xE663, 0x8A2A, 0x964B,
+	0x8A2D, 0x90DD, 0x8A31, 0x8B96, 0x8A33, 0x96F3, 0x8A34, 0x9169,
+	0x8A36, 0xE664, 0x8A37, 0xFBA4, 0x8A3A, 0x9066, 0x8A3B, 0x9290,
+	0x8A3C, 0x8FD8, 0x8A41, 0xE665, 0x8A46, 0xE668, 0x8A48, 0xE669,
+	0x8A50, 0x8DBC, 0x8A51, 0x91C0, 0x8A52, 0xE667, 0x8A54, 0x8FD9,
+	0x8A55, 0x955D, 0x8A5B, 0xE666, 0x8A5E, 0x8E8C, 0x8A60, 0x8972,
+	0x8A62, 0xE66D, 0x8A63, 0x8C77, 0x8A66, 0x8E8E, 0x8A69, 0x8E8D,
+	0x8A6B, 0x986C, 0x8A6C, 0xE66C, 0x8A6D, 0xE66B, 0x8A6E, 0x9146,
+	0x8A70, 0x8B6C, 0x8A71, 0x9862, 0x8A72, 0x8A59, 0x8A73, 0x8FDA,
+	0x8A79, 0xFBA5, 0x8A7C, 0xE66A, 0x8A82, 0xE66F, 0x8A84, 0xE670,
+	0x8A85, 0xE66E, 0x8A87, 0x8CD6, 0x8A89, 0x975F, 0x8A8C, 0x8E8F,
+	0x8A8D, 0x9446, 0x8A91, 0xE673, 0x8A93, 0x90BE, 0x8A95, 0x9261,
+	0x8A98, 0x9755, 0x8A9A, 0xE676, 0x8A9E, 0x8CEA, 0x8AA0, 0x90BD,
+	0x8AA1, 0xE672, 0x8AA3, 0xE677, 0x8AA4, 0x8CEB, 0x8AA5, 0xE674,
+	0x8AA6, 0xE675, 0x8AA7, 0xFBA6, 0x8AA8, 0xE671, 0x8AAC, 0x90E0,
+	0x8AAD, 0x93C7, 0x8AB0, 0x924E, 0x8AB2, 0x89DB, 0x8AB9, 0x94EE,
+	0x8ABC, 0x8B62, 0x8ABE, 0xFBA7, 0x8ABF, 0x92B2, 0x8AC2, 0xE67A,
+	0x8AC4, 0xE678, 0x8AC7, 0x926B, 0x8ACB, 0x90BF, 0x8ACC, 0x8AD0,
+	0x8ACD, 0xE679, 0x8ACF, 0x907A, 0x8AD2, 0x97C8, 0x8AD6, 0x985F,
+	0x8ADA, 0xE67B, 0x8ADB, 0xE687, 0x8ADC, 0x92B3, 0x8ADE, 0xE686,
+	0x8ADF, 0xFBA8, 0x8AE0, 0xE683, 0x8AE1, 0xE68B, 0x8AE2, 0xE684,
+	0x8AE4, 0xE680, 0x8AE6, 0x92FA, 0x8AE7, 0xE67E, 0x8AEB, 0xE67C,
+	0x8AED, 0x9740, 0x8AEE, 0x8E90, 0x8AF1, 0xE681, 0x8AF3, 0xE67D,
+	0x8AF6, 0xFBAA, 0x8AF7, 0xE685, 0x8AF8, 0x8F94, 0x8AFA, 0x8CBF,
+	0x8AFE, 0x91F8, 0x8B00, 0x9664, 0x8B01, 0x8979, 0x8B02, 0x88E0,
+	0x8B04, 0x93A3, 0x8B07, 0xE689, 0x8B0C, 0xE688, 0x8B0E, 0x93E4,
+	0x8B10, 0xE68D, 0x8B14, 0xE682, 0x8B16, 0xE68C, 0x8B17, 0xE68E,
+	0x8B19, 0x8CAA, 0x8B1A, 0xE68A, 0x8B1B, 0x8D75, 0x8B1D, 0x8ED3,
+	0x8B20, 0xE68F, 0x8B21, 0x9777, 0x8B26, 0xE692, 0x8B28, 0xE695,
+	0x8B2B, 0xE693, 0x8B2C, 0x9554, 0x8B33, 0xE690, 0x8B39, 0x8BDE,
+	0x8B3E, 0xE694, 0x8B41, 0xE696, 0x8B49, 0xE69A, 0x8B4C, 0xE697,
+	0x8B4E, 0xE699, 0x8B4F, 0xE698, 0x8B53, 0xFBAB, 0x8B56, 0xE69B,
+	0x8B58, 0x8EAF, 0x8B5A, 0xE69D, 0x8B5B, 0xE69C, 0x8B5C, 0x9588,
+	0x8B5F, 0xE69F, 0x8B66, 0x8C78, 0x8B6B, 0xE69E, 0x8B6C, 0xE6A0,
+	0x8B6F, 0xE6A1, 0x8B70, 0x8B63, 0x8B71, 0xE3BF, 0x8B72, 0x8FF7,
+	0x8B74, 0xE6A2, 0x8B77, 0x8CEC, 0x8B7D, 0xE6A3, 0x8B7F, 0xFBAC,
+	0x8B80, 0xE6A4, 0x8B83, 0x8E5D, 0x8B8A, 0x9DCC, 0x8B8C, 0xE6A5,
+	0x8B8E, 0xE6A6, 0x8B90, 0x8F51, 0x8B92, 0xE6A7, 0x8B93, 0xE6A8,
+	0x8B96, 0xE6A9, 0x8B99, 0xE6AA, 0x8B9A, 0xE6AB, 0x8C37, 0x924A,
+	0x8C3A, 0xE6AC, 0x8C3F, 0xE6AE, 0x8C41, 0xE6AD, 0x8C46, 0x93A4,
+	0x8C48, 0xE6AF, 0x8C4A, 0x964C, 0x8C4C, 0xE6B0, 0x8C4E, 0xE6B1,
+	0x8C50, 0xE6B2, 0x8C55, 0xE6B3, 0x8C5A, 0x93D8, 0x8C61, 0x8FDB,
+	0x8C62, 0xE6B4, 0x8C6A, 0x8D8B, 0x8C6B, 0x98AC, 0x8C6C, 0xE6B5,
+	0x8C78, 0xE6B6, 0x8C79, 0x955E, 0x8C7A, 0xE6B7, 0x8C7C, 0xE6BF,
+	0x8C82, 0xE6B8, 0x8C85, 0xE6BA, 0x8C89, 0xE6B9, 0x8C8A, 0xE6BB,
+	0x8C8C, 0x9665, 0x8C8D, 0xE6BC, 0x8C8E, 0xE6BD, 0x8C94, 0xE6BE,
+	0x8C98, 0xE6C0, 0x8C9D, 0x8A4C, 0x8C9E, 0x92E5, 0x8CA0, 0x9589,
+	0x8CA1, 0x8DE0, 0x8CA2, 0x8D76, 0x8CA7, 0x956E, 0x8CA8, 0x89DD,
+	0x8CA9, 0x94CC, 0x8CAA, 0xE6C3, 0x8CAB, 0x8AD1, 0x8CAC, 0x90D3,
+	0x8CAD, 0xE6C2, 0x8CAE, 0xE6C7, 0x8CAF, 0x9299, 0x8CB0, 0x96E1,
+	0x8CB2, 0xE6C5, 0x8CB3, 0xE6C6, 0x8CB4, 0x8B4D, 0x8CB6, 0xE6C8,
+	0x8CB7, 0x9483, 0x8CB8, 0x91DD, 0x8CBB, 0x94EF, 0x8CBC, 0x935C,
+	0x8CBD, 0xE6C4, 0x8CBF, 0x9666, 0x8CC0, 0x89EA, 0x8CC1, 0xE6CA,
+	0x8CC2, 0x9847, 0x8CC3, 0x92C0, 0x8CC4, 0x9864, 0x8CC7, 0x8E91,
+	0x8CC8, 0xE6C9, 0x8CCA, 0x91AF, 0x8CCD, 0xE6DA, 0x8CCE, 0x9147,
+	0x8CD1, 0x93F6, 0x8CD3, 0x956F, 0x8CDA, 0xE6CD, 0x8CDB, 0x8E5E,
+	0x8CDC, 0x8E92, 0x8CDE, 0x8FDC, 0x8CE0, 0x9485, 0x8CE2, 0x8CAB,
+	0x8CE3, 0xE6CC, 0x8CE4, 0xE6CB, 0x8CE6, 0x958A, 0x8CEA, 0x8EBF,
+	0x8CED, 0x9371, 0x8CF0, 0xFBAD, 0x8CF4, 0xFBAE, 0x8CFA, 0xE6CF,
+	0x8CFB, 0xE6D0, 0x8CFC, 0x8D77, 0x8CFD, 0xE6CE, 0x8D04, 0xE6D1,
+	0x8D05, 0xE6D2, 0x8D07, 0xE6D4, 0x8D08, 0x91A1, 0x8D0A, 0xE6D3,
+	0x8D0B, 0x8AE4, 0x8D0D, 0xE6D6, 0x8D0F, 0xE6D5, 0x8D10, 0xE6D7,
+	0x8D12, 0xFBAF, 0x8D13, 0xE6D9, 0x8D14, 0xE6DB, 0x8D16, 0xE6DC,
+	0x8D64, 0x90D4, 0x8D66, 0x8ECD, 0x8D67, 0xE6DD, 0x8D6B, 0x8A71,
+	0x8D6D, 0xE6DE, 0x8D70, 0x9196, 0x8D71, 0xE6DF, 0x8D73, 0xE6E0,
+	0x8D74, 0x958B, 0x8D76, 0xFBB0, 0x8D77, 0x8B4E, 0x8D81, 0xE6E1,
+	0x8D85, 0x92B4, 0x8D8A, 0x897A, 0x8D99, 0xE6E2, 0x8DA3, 0x8EEF,
+	0x8DA8, 0x9096, 0x8DB3, 0x91AB, 0x8DBA, 0xE6E5, 0x8DBE, 0xE6E4,
+	0x8DC2, 0xE6E3, 0x8DCB, 0xE6EB, 0x8DCC, 0xE6E9, 0x8DCF, 0xE6E6,
+	0x8DD6, 0xE6E8, 0x8DDA, 0xE6E7, 0x8DDB, 0xE6EA, 0x8DDD, 0x8B97,
+	0x8DDF, 0xE6EE, 0x8DE1, 0x90D5, 0x8DE3, 0xE6EF, 0x8DE8, 0x8CD7,
+	0x8DEA, 0xE6EC, 0x8DEB, 0xE6ED, 0x8DEF, 0x9848, 0x8DF3, 0x92B5,
+	0x8DF5, 0x9148, 0x8DFC, 0xE6F0, 0x8DFF, 0xE6F3, 0x8E08, 0xE6F1,
+	0x8E09, 0xE6F2, 0x8E0A, 0x9778, 0x8E0F, 0x93A5, 0x8E10, 0xE6F6,
+	0x8E1D, 0xE6F4, 0x8E1E, 0xE6F5, 0x8E1F, 0xE6F7, 0x8E2A, 0xE748,
+	0x8E30, 0xE6FA, 0x8E34, 0xE6FB, 0x8E35, 0xE6F9, 0x8E42, 0xE6F8,
+	0x8E44, 0x92FB, 0x8E47, 0xE740, 0x8E48, 0xE744, 0x8E49, 0xE741,
+	0x8E4A, 0xE6FC, 0x8E4C, 0xE742, 0x8E50, 0xE743, 0x8E55, 0xE74A,
+	0x8E59, 0xE745, 0x8E5F, 0x90D6, 0x8E60, 0xE747, 0x8E63, 0xE749,
+	0x8E64, 0xE746, 0x8E72, 0xE74C, 0x8E74, 0x8F52, 0x8E76, 0xE74B,
+	0x8E7C, 0xE74D, 0x8E81, 0xE74E, 0x8E84, 0xE751, 0x8E85, 0xE750,
+	0x8E87, 0xE74F, 0x8E8A, 0xE753, 0x8E8B, 0xE752, 0x8E8D, 0x96F4,
+	0x8E91, 0xE755, 0x8E93, 0xE754, 0x8E94, 0xE756, 0x8E99, 0xE757,
+	0x8EA1, 0xE759, 0x8EAA, 0xE758, 0x8EAB, 0x9067, 0x8EAC, 0xE75A,
+	0x8EAF, 0x8BEB, 0x8EB0, 0xE75B, 0x8EB1, 0xE75D, 0x8EBE, 0xE75E,
+	0x8EC5, 0xE75F, 0x8EC6, 0xE75C, 0x8EC8, 0xE760, 0x8ECA, 0x8ED4,
+	0x8ECB, 0xE761, 0x8ECC, 0x8B4F, 0x8ECD, 0x8C52, 0x8ECF, 0xFBB2,
+	0x8ED2, 0x8CAC, 0x8EDB, 0xE762, 0x8EDF, 0x93EE, 0x8EE2, 0x935D,
+	0x8EE3, 0xE763, 0x8EEB, 0xE766, 0x8EF8, 0x8EB2, 0x8EFB, 0xE765,
+	0x8EFC, 0xE764, 0x8EFD, 0x8C79, 0x8EFE, 0xE767, 0x8F03, 0x8A72,
+	0x8F05, 0xE769, 0x8F09, 0x8DDA, 0x8F0A, 0xE768, 0x8F0C, 0xE771,
+	0x8F12, 0xE76B, 0x8F13, 0xE76D, 0x8F14, 0x95E3, 0x8F15, 0xE76A,
+	0x8F19, 0xE76C, 0x8F1B, 0xE770, 0x8F1C, 0xE76E, 0x8F1D, 0x8B50,
+	0x8F1F, 0xE76F, 0x8F26, 0xE772, 0x8F29, 0x9479, 0x8F2A, 0x97D6,
+	0x8F2F, 0x8F53, 0x8F33, 0xE773, 0x8F38, 0x9741, 0x8F39, 0xE775,
+	0x8F3B, 0xE774, 0x8F3E, 0xE778, 0x8F3F, 0x9760, 0x8F42, 0xE777,
+	0x8F44, 0x8A8D, 0x8F45, 0xE776, 0x8F46, 0xE77B, 0x8F49, 0xE77A,
+	0x8F4C, 0xE779, 0x8F4D, 0x9351, 0x8F4E, 0xE77C, 0x8F57, 0xE77D,
+	0x8F5C, 0xE77E, 0x8F5F, 0x8D8C, 0x8F61, 0x8C44, 0x8F62, 0xE780,
+	0x8F63, 0xE781, 0x8F64, 0xE782, 0x8F9B, 0x9068, 0x8F9C, 0xE783,
+	0x8F9E, 0x8EAB, 0x8F9F, 0xE784, 0x8FA3, 0xE785, 0x8FA7, 0x999F,
+	0x8FA8, 0x999E, 0x8FAD, 0xE786, 0x8FAE, 0xE390, 0x8FAF, 0xE787,
+	0x8FB0, 0x9243, 0x8FB1, 0x904A, 0x8FB2, 0x945F, 0x8FB7, 0xE788,
+	0x8FBA, 0x95D3, 0x8FBB, 0x92D2, 0x8FBC, 0x8D9E, 0x8FBF, 0x9248,
+	0x8FC2, 0x8949, 0x8FC4, 0x9698, 0x8FC5, 0x9076, 0x8FCE, 0x8C7D,
+	0x8FD1, 0x8BDF, 0x8FD4, 0x95D4, 0x8FDA, 0xE789, 0x8FE2, 0xE78B,
+	0x8FE5, 0xE78A, 0x8FE6, 0x89DE, 0x8FE9, 0x93F4, 0x8FEA, 0xE78C,
+	0x8FEB, 0x9497, 0x8FED, 0x9352, 0x8FEF, 0xE78D, 0x8FF0, 0x8F71,
+	0x8FF4, 0xE78F, 0x8FF7, 0x96C0, 0x8FF8, 0xE79E, 0x8FF9, 0xE791,
+	0x8FFA, 0xE792, 0x8FFD, 0x92C7, 0x9000, 0x91DE, 0x9001, 0x9197,
+	0x9003, 0x93A6, 0x9005, 0xE790, 0x9006, 0x8B74, 0x900B, 0xE799,
+	0x900D, 0xE796, 0x900E, 0xE7A3, 0x900F, 0x93A7, 0x9010, 0x9280,
+	0x9011, 0xE793, 0x9013, 0x92FC, 0x9014, 0x9372, 0x9015, 0xE794,
+	0x9016, 0xE798, 0x9017, 0x9080, 0x9019, 0x9487, 0x901A, 0x92CA,
+	0x901D, 0x90C0, 0x901E, 0xE797, 0x901F, 0x91AC, 0x9020, 0x91A2,
+	0x9021, 0xE795, 0x9022, 0x88A7, 0x9023, 0x9841, 0x9027, 0xE79A,
+	0x902E, 0x91DF, 0x9031, 0x8F54, 0x9032, 0x9069, 0x9035, 0xE79C,
+	0x9036, 0xE79B, 0x9038, 0x88ED, 0x9039, 0xE79D, 0x903C, 0x954E,
+	0x903E, 0xE7A5, 0x9041, 0x93D9, 0x9042, 0x908B, 0x9045, 0x9278,
+	0x9047, 0x8BF6, 0x9049, 0xE7A4, 0x904A, 0x9756, 0x904B, 0x895E,
+	0x904D, 0x95D5, 0x904E, 0x89DF, 0x904F, 0xE79F, 0x9050, 0xE7A0,
+	0x9051, 0xE7A1, 0x9052, 0xE7A2, 0x9053, 0x93B9, 0x9054, 0x9242,
+	0x9055, 0x88E1, 0x9056, 0xE7A6, 0x9058, 0xE7A7, 0x9059, 0xEAA1,
+	0x905C, 0x91BB, 0x905E, 0xE7A8, 0x9060, 0x8993, 0x9061, 0x916B,
+	0x9063, 0x8CAD, 0x9065, 0x9779, 0x9067, 0xFBB5, 0x9068, 0xE7A9,
+	0x9069, 0x934B, 0x906D, 0x9198, 0x906E, 0x8ED5, 0x906F, 0xE7AA,
+	0x9072, 0xE7AD, 0x9075, 0x8F85, 0x9076, 0xE7AB, 0x9077, 0x914A,
+	0x9078, 0x9149, 0x907A, 0x88E2, 0x907C, 0x97C9, 0x907D, 0xE7AF,
+	0x907F, 0x94F0, 0x9080, 0xE7B1, 0x9081, 0xE7B0, 0x9082, 0xE7AE,
+	0x9083, 0xE284, 0x9084, 0x8AD2, 0x9087, 0xE78E, 0x9089, 0xE7B3,
+	0x908A, 0xE7B2, 0x908F, 0xE7B4, 0x9091, 0x9757, 0x90A3, 0x93DF,
+	0x90A6, 0x964D, 0x90A8, 0xE7B5, 0x90AA, 0x8ED7, 0x90AF, 0xE7B6,
+	0x90B1, 0xE7B7, 0x90B5, 0xE7B8, 0x90B8, 0x9340, 0x90C1, 0x88E8,
+	0x90CA, 0x8D78, 0x90CE, 0x9859, 0x90DB, 0xE7BC, 0x90DE, 0xFBB6,
+	0x90E1, 0x8C53, 0x90E2, 0xE7B9, 0x90E4, 0xE7BA, 0x90E8, 0x9594,
+	0x90ED, 0x8A73, 0x90F5, 0x9758, 0x90F7, 0x8BBD, 0x90FD, 0x9373,
+	0x9102, 0xE7BD, 0x9112, 0xE7BE, 0x9115, 0xFBB8, 0x9119, 0xE7BF,
+	0x9127, 0xFBB9, 0x912D, 0x9341, 0x9130, 0xE7C1, 0x9132, 0xE7C0,
+	0x9149, 0x93D1, 0x914A, 0xE7C2, 0x914B, 0x8F55, 0x914C, 0x8EDE,
+	0x914D, 0x947A, 0x914E, 0x9291, 0x9152, 0x8EF0, 0x9154, 0x908C,
+	0x9156, 0xE7C3, 0x9158, 0xE7C4, 0x9162, 0x907C, 0x9163, 0xE7C5,
+	0x9165, 0xE7C6, 0x9169, 0xE7C7, 0x916A, 0x978F, 0x916C, 0x8F56,
+	0x9172, 0xE7C9, 0x9173, 0xE7C8, 0x9175, 0x8D79, 0x9177, 0x8D93,
+	0x9178, 0x8E5F, 0x9182, 0xE7CC, 0x9187, 0x8F86, 0x9189, 0xE7CB,
+	0x918B, 0xE7CA, 0x918D, 0x91E7, 0x9190, 0x8CED, 0x9192, 0x90C1,
+	0x9197, 0x94AE, 0x919C, 0x8F58, 0x91A2, 0xE7CD, 0x91A4, 0x8FDD,
+	0x91AA, 0xE7D0, 0x91AB, 0xE7CE, 0x91AF, 0xE7CF, 0x91B4, 0xE7D2,
+	0x91B5, 0xE7D1, 0x91B8, 0x8FF8, 0x91BA, 0xE7D3, 0x91C0, 0xE7D4,
+	0x91C1, 0xE7D5, 0x91C6, 0x94CE, 0x91C7, 0x8DD1, 0x91C8, 0x8EDF,
+	0x91C9, 0xE7D6, 0x91CB, 0xE7D7, 0x91CC, 0x97A2, 0x91CD, 0x8F64,
+	0x91CE, 0x96EC, 0x91CF, 0x97CA, 0x91D0, 0xE7D8, 0x91D1, 0x8BE0,
+	0x91D6, 0xE7D9, 0x91D7, 0xFBBB, 0x91D8, 0x9342, 0x91DA, 0xFBBA,
+	0x91DB, 0xE7DC, 0x91DC, 0x8A98, 0x91DD, 0x906A, 0x91DE, 0xFBBC,
+	0x91DF, 0xE7DA, 0x91E1, 0xE7DB, 0x91E3, 0x92DE, 0x91E4, 0xFBBF,
+	0x91E5, 0xFBC0, 0x91E6, 0x9674, 0x91E7, 0x8BFA, 0x91ED, 0xFBBD,
+	0x91EE, 0xFBBE, 0x91F5, 0xE7DE, 0x91F6, 0xE7DF, 0x91FC, 0xE7DD,
+	0x91FF, 0xE7E1, 0x9206, 0xFBC1, 0x920A, 0xFBC3, 0x920D, 0x93DD,
+	0x920E, 0x8A62, 0x9210, 0xFBC2, 0x9211, 0xE7E5, 0x9214, 0xE7E2,
+	0x9215, 0xE7E4, 0x921E, 0xE7E0, 0x9229, 0xE86E, 0x922C, 0xE7E3,
+	0x9234, 0x97E9, 0x9237, 0x8CD8, 0x9239, 0xFBCA, 0x923A, 0xFBC4,
+	0x923C, 0xFBC6, 0x923F, 0xE7ED, 0x9240, 0xFBC5, 0x9244, 0x9353,
+	0x9245, 0xE7E8, 0x9248, 0xE7EB, 0x9249, 0xE7E9, 0x924B, 0xE7EE,
+	0x924E, 0xFBC7, 0x9250, 0xE7EF, 0x9251, 0xFBC9, 0x9257, 0xE7E7,
+	0x9259, 0xFBC8, 0x925A, 0xE7F4, 0x925B, 0x8994, 0x925E, 0xE7E6,
+	0x9262, 0x94AB, 0x9264, 0xE7EA, 0x9266, 0x8FDE, 0x9267, 0xFBCB,
+	0x9271, 0x8D7A, 0x9277, 0xFBCD, 0x9278, 0xFBCE, 0x927E, 0x9667,
+	0x9280, 0x8BE2, 0x9283, 0x8F65, 0x9285, 0x93BA, 0x9288, 0xFA5F,
+	0x9291, 0x914C, 0x9293, 0xE7F2, 0x9295, 0xE7EC, 0x9296, 0xE7F1,
+	0x9298, 0x96C1, 0x929A, 0x92B6, 0x929B, 0xE7F3, 0x929C, 0xE7F0,
+	0x92A7, 0xFBCC, 0x92AD, 0x914B, 0x92B7, 0xE7F7, 0x92B9, 0xE7F6,
+	0x92CF, 0xE7F5, 0x92D0, 0xFBD2, 0x92D2, 0x964E, 0x92D3, 0xFBD6,
+	0x92D5, 0xFBD4, 0x92D7, 0xFBD0, 0x92D9, 0xFBD1, 0x92E0, 0xFBD5,
+	0x92E4, 0x8F9B, 0x92E7, 0xFBCF, 0x92E9, 0xE7F8, 0x92EA, 0x95DD,
+	0x92ED, 0x8973, 0x92F2, 0x9565, 0x92F3, 0x9292, 0x92F8, 0x8B98,
+	0x92F9, 0xFA65, 0x92FA, 0xE7FA, 0x92FB, 0xFBD9, 0x92FC, 0x8D7C,
+	0x92FF, 0xFBDC, 0x9302, 0xFBDE, 0x9306, 0x8E4B, 0x930F, 0xE7F9,
+	0x9310, 0x908D, 0x9318, 0x908E, 0x9319, 0xE840, 0x931A, 0xE842,
+	0x931D, 0xFBDD, 0x931E, 0xFBDB, 0x9320, 0x8FF9, 0x9321, 0xFBD8,
+	0x9322, 0xE841, 0x9323, 0xE843, 0x9325, 0xFBD7, 0x9326, 0x8BD1,
+	0x9328, 0x9564, 0x932B, 0x8EE0, 0x932C, 0x9842, 0x932E, 0xE7FC,
+	0x932F, 0x8DF6, 0x9332, 0x985E, 0x9335, 0xE845, 0x933A, 0xE844,
+	0x933B, 0xE846, 0x9344, 0xE7FB, 0x9348, 0xFA5E, 0x934B, 0x93E7,
+	0x934D, 0x9374, 0x9354, 0x92D5, 0x9356, 0xE84B, 0x9357, 0xFBE0,
+	0x935B, 0x9262, 0x935C, 0xE847, 0x9360, 0xE848, 0x936C, 0x8C4C,
+	0x936E, 0xE84A, 0x9370, 0xFBDF, 0x9375, 0x8CAE, 0x937C, 0xE849,
+	0x937E, 0x8FDF, 0x938C, 0x8A99, 0x9394, 0xE84F, 0x9396, 0x8DBD,
+	0x9397, 0x9199, 0x939A, 0x92C8, 0x93A4, 0xFBE1, 0x93A7, 0x8A5A,
+	0x93AC, 0xE84D, 0x93AD, 0xE84E, 0x93AE, 0x92C1, 0x93B0, 0xE84C,
+	0x93B9, 0xE850, 0x93C3, 0xE856, 0x93C6, 0xFBE2, 0x93C8, 0xE859,
+	0x93D0, 0xE858, 0x93D1, 0x934C, 0x93D6, 0xE851, 0x93D7, 0xE852,
+	0x93D8, 0xE855, 0x93DD, 0xE857, 0x93DE, 0xFBE3, 0x93E1, 0x8BBE,
+	0x93E4, 0xE85A, 0x93E5, 0xE854, 0x93E8, 0xE853, 0x93F8, 0xFBE4,
+	0x9403, 0xE85E, 0x9407, 0xE85F, 0x9410, 0xE860, 0x9413, 0xE85D,
+	0x9414, 0xE85C, 0x9418, 0x8FE0, 0x9419, 0x93A8, 0x941A, 0xE85B,
+	0x9421, 0xE864, 0x942B, 0xE862, 0x9431, 0xFBE5, 0x9435, 0xE863,
+	0x9436, 0xE861, 0x9438, 0x91F6, 0x943A, 0xE865, 0x9441, 0xE866,
+	0x9444, 0xE868, 0x9445, 0xFBE6, 0x9448, 0xFBE7, 0x9451, 0x8AD3,
+	0x9452, 0xE867, 0x9453, 0x96F8, 0x945A, 0xE873, 0x945B, 0xE869,
+	0x945E, 0xE86C, 0x9460, 0xE86A, 0x9462, 0xE86B, 0x946A, 0xE86D,
+	0x9470, 0xE86F, 0x9475, 0xE870, 0x9477, 0xE871, 0x947C, 0xE874,
+	0x947D, 0xE872, 0x947E, 0xE875, 0x947F, 0xE877, 0x9481, 0xE876,
+	0x9577, 0x92B7, 0x9580, 0x96E5, 0x9582, 0xE878, 0x9583, 0x914D,
+	0x9587, 0xE879, 0x9589, 0x95C2, 0x958A, 0xE87A, 0x958B, 0x8A4A,
+	0x958F, 0x895B, 0x9591, 0x8AD5, 0x9592, 0xFBE8, 0x9593, 0x8AD4,
+	0x9594, 0xE87B, 0x9596, 0xE87C, 0x9598, 0xE87D, 0x9599, 0xE87E,
+	0x95A0, 0xE880, 0x95A2, 0x8AD6, 0x95A3, 0x8A74, 0x95A4, 0x8D7D,
+	0x95A5, 0x94B4, 0x95A7, 0xE882, 0x95A8, 0xE881, 0x95AD, 0xE883,
+	0x95B2, 0x897B, 0x95B9, 0xE886, 0x95BB, 0xE885, 0x95BC, 0xE884,
+	0x95BE, 0xE887, 0x95C3, 0xE88A, 0x95C7, 0x88C5, 0x95CA, 0xE888,
+	0x95CC, 0xE88C, 0x95CD, 0xE88B, 0x95D4, 0xE88E, 0x95D5, 0xE88D,
+	0x95D6, 0xE88F, 0x95D8, 0x93AC, 0x95DC, 0xE890, 0x95E1, 0xE891,
+	0x95E2, 0xE893, 0x95E5, 0xE892, 0x961C, 0x958C, 0x9621, 0xE894,
+	0x9628, 0xE895, 0x962A, 0x8DE3, 0x962E, 0xE896, 0x962F, 0xE897,
+	0x9632, 0x9668, 0x963B, 0x916A, 0x963F, 0x88A2, 0x9640, 0x91C9,
+	0x9642, 0xE898, 0x9644, 0x958D, 0x964B, 0xE89B, 0x964C, 0xE899,
+	0x964D, 0x8D7E, 0x964F, 0xE89A, 0x9650, 0x8CC0, 0x965B, 0x95C3,
+	0x965C, 0xE89D, 0x965D, 0xE89F, 0x965E, 0xE89E, 0x965F, 0xE8A0,
+	0x9662, 0x8940, 0x9663, 0x9077, 0x9664, 0x8F9C, 0x9665, 0x8AD7,
+	0x9666, 0xE8A1, 0x966A, 0x9486, 0x966C, 0xE8A3, 0x9670, 0x8941,
+	0x9672, 0xE8A2, 0x9673, 0x92C2, 0x9675, 0x97CB, 0x9676, 0x93A9,
+	0x9677, 0xE89C, 0x9678, 0x97A4, 0x967A, 0x8CAF, 0x967D, 0x977A,
+	0x9685, 0x8BF7, 0x9686, 0x97B2, 0x9688, 0x8C47, 0x968A, 0x91E0,
+	0x968B, 0xE440, 0x968D, 0xE8A4, 0x968E, 0x8A4B, 0x968F, 0x908F,
+	0x9694, 0x8A75, 0x9695, 0xE8A6, 0x9697, 0xE8A7, 0x9698, 0xE8A5,
+	0x9699, 0x8C84, 0x969B, 0x8DDB, 0x969C, 0x8FE1, 0x969D, 0xFBEB,
+	0x96A0, 0x8942, 0x96A3, 0x97D7, 0x96A7, 0xE8A9, 0x96A8, 0xE7AC,
+	0x96AA, 0xE8A8, 0x96AF, 0xFBEC, 0x96B0, 0xE8AC, 0x96B1, 0xE8AA,
+	0x96B2, 0xE8AB, 0x96B4, 0xE8AD, 0x96B6, 0xE8AE, 0x96B7, 0x97EA,
+	0x96B8, 0xE8AF, 0x96B9, 0xE8B0, 0x96BB, 0x90C7, 0x96BC, 0x94B9,
+	0x96C0, 0x909D, 0x96C1, 0x8AE5, 0x96C4, 0x9759, 0x96C5, 0x89EB,
+	0x96C6, 0x8F57, 0x96C7, 0x8CD9, 0x96C9, 0xE8B3, 0x96CB, 0xE8B2,
+	0x96CC, 0x8E93, 0x96CD, 0xE8B4, 0x96CE, 0xE8B1, 0x96D1, 0x8E47,
+	0x96D5, 0xE8B8, 0x96D6, 0xE5AB, 0x96D9, 0x99D4, 0x96DB, 0x9097,
+	0x96DC, 0xE8B6, 0x96E2, 0x97A3, 0x96E3, 0x93EF, 0x96E8, 0x894A,
+	0x96EA, 0x90E1, 0x96EB, 0x8EB4, 0x96F0, 0x95B5, 0x96F2, 0x895F,
+	0x96F6, 0x97EB, 0x96F7, 0x978B, 0x96F9, 0xE8B9, 0x96FB, 0x9364,
+	0x9700, 0x8EF9, 0x9704, 0xE8BA, 0x9706, 0xE8BB, 0x9707, 0x906B,
+	0x9708, 0xE8BC, 0x970A, 0x97EC, 0x970D, 0xE8B7, 0x970E, 0xE8BE,
+	0x970F, 0xE8C0, 0x9711, 0xE8BF, 0x9713, 0xE8BD, 0x9716, 0xE8C1,
+	0x9719, 0xE8C2, 0x971C, 0x919A, 0x971E, 0x89E0, 0x9724, 0xE8C3,
+	0x9727, 0x96B6, 0x972A, 0xE8C4, 0x9730, 0xE8C5, 0x9732, 0x9849,
+	0x9733, 0xFBED, 0x9738, 0x9E50, 0x9739, 0xE8C6, 0x973B, 0xFBEE,
+	0x973D, 0xE8C7, 0x973E, 0xE8C8, 0x9742, 0xE8CC, 0x9743, 0xFBEF,
+	0x9744, 0xE8C9, 0x9746, 0xE8CA, 0x9748, 0xE8CB, 0x9749, 0xE8CD,
+	0x974D, 0xFBF0, 0x974F, 0xFBF1, 0x9751, 0xFBF2, 0x9752, 0x90C2,
+	0x9755, 0xFBF3, 0x9756, 0x96F5, 0x9759, 0x90C3, 0x975C, 0xE8CE,
+	0x975E, 0x94F1, 0x9760, 0xE8CF, 0x9761, 0xEA72, 0x9762, 0x96CA,
+	0x9764, 0xE8D0, 0x9766, 0xE8D1, 0x9768, 0xE8D2, 0x9769, 0x8A76,
+	0x976B, 0xE8D4, 0x976D, 0x9078, 0x9771, 0xE8D5, 0x9774, 0x8C43,
+	0x9779, 0xE8D6, 0x977A, 0xE8DA, 0x977C, 0xE8D8, 0x9781, 0xE8D9,
+	0x9784, 0x8A93, 0x9785, 0xE8D7, 0x9786, 0xE8DB, 0x978B, 0xE8DC,
+	0x978D, 0x88C6, 0x978F, 0xE8DD, 0x9790, 0xE8DE, 0x9798, 0x8FE2,
+	0x979C, 0xE8DF, 0x97A0, 0x8B66, 0x97A3, 0xE8E2, 0x97A6, 0xE8E1,
+	0x97A8, 0xE8E0, 0x97AB, 0xE691, 0x97AD, 0x95DA, 0x97B3, 0xE8E3,
+	0x97B4, 0xE8E4, 0x97C3, 0xE8E5, 0x97C6, 0xE8E6, 0x97C8, 0xE8E7,
+	0x97CB, 0xE8E8, 0x97D3, 0x8AD8, 0x97DC, 0xE8E9, 0x97ED, 0xE8EA,
+	0x97EE, 0x9442, 0x97F2, 0xE8EC, 0x97F3, 0x89B9, 0x97F5, 0xE8EF,
+	0x97F6, 0xE8EE, 0x97FB, 0x8943, 0x97FF, 0x8BBF, 0x9801, 0x95C5,
+	0x9802, 0x92B8, 0x9803, 0x8DA0, 0x9805, 0x8D80, 0x9806, 0x8F87,
+	0x9808, 0x907B, 0x980C, 0xE8F1, 0x980F, 0xE8F0, 0x9810, 0x9761,
+	0x9811, 0x8AE6, 0x9812, 0x94D0, 0x9813, 0x93DA, 0x9817, 0x909C,
+	0x9818, 0x97CC, 0x981A, 0x8C7A, 0x9821, 0xE8F4, 0x9824, 0xE8F3,
+	0x982C, 0x966A, 0x982D, 0x93AA, 0x9834, 0x896F, 0x9837, 0xE8F5,
+	0x9838, 0xE8F2, 0x983B, 0x9570, 0x983C, 0x978A, 0x983D, 0xE8F6,
+	0x9846, 0xE8F7, 0x984B, 0xE8F9, 0x984C, 0x91E8, 0x984D, 0x8A7A,
+	0x984E, 0x8A7B, 0x984F, 0xE8F8, 0x9854, 0x8AE7, 0x9855, 0x8CB0,
+	0x9857, 0xFBF4, 0x9858, 0x8AE8, 0x985B, 0x935E, 0x985E, 0x97DE,
+	0x9865, 0xFBF5, 0x9867, 0x8CDA, 0x986B, 0xE8FA, 0x986F, 0xE8FB,
+	0x9870, 0xE8FC, 0x9871, 0xE940, 0x9873, 0xE942, 0x9874, 0xE941,
+	0x98A8, 0x9597, 0x98AA, 0xE943, 0x98AF, 0xE944, 0x98B1, 0xE945,
+	0x98B6, 0xE946, 0x98C3, 0xE948, 0x98C4, 0xE947, 0x98C6, 0xE949,
+	0x98DB, 0x94F2, 0x98DC, 0xE3CA, 0x98DF, 0x9048, 0x98E2, 0x8B51,
+	0x98E9, 0xE94A, 0x98EB, 0xE94B, 0x98ED, 0x99AA, 0x98EE, 0x9F5A,
+	0x98EF, 0x94D1, 0x98F2, 0x88F9, 0x98F4, 0x88B9, 0x98FC, 0x8E94,
+	0x98FD, 0x964F, 0x98FE, 0x8FFC, 0x9903, 0xE94C, 0x9905, 0x96DD,
+	0x9909, 0xE94D, 0x990A, 0x977B, 0x990C, 0x8961, 0x9910, 0x8E60,
+	0x9912, 0xE94E, 0x9913, 0x89EC, 0x9914, 0xE94F, 0x9918, 0xE950,
+	0x991D, 0xE952, 0x991E, 0xE953, 0x9920, 0xE955, 0x9921, 0xE951,
+	0x9924, 0xE954, 0x9927, 0xFBF8, 0x9928, 0x8AD9, 0x992C, 0xE956,
+	0x992E, 0xE957, 0x993D, 0xE958, 0x993E, 0xE959, 0x9942, 0xE95A,
+	0x9945, 0xE95C, 0x9949, 0xE95B, 0x994B, 0xE95E, 0x994C, 0xE961,
+	0x9950, 0xE95D, 0x9951, 0xE95F, 0x9952, 0xE960, 0x9955, 0xE962,
+	0x9957, 0x8BC0, 0x9996, 0x8EF1, 0x9997, 0xE963, 0x9998, 0xE964,
+	0x9999, 0x8D81, 0x999E, 0xFBFA, 0x99A5, 0xE965, 0x99A8, 0x8A5D,
+	0x99AC, 0x946E, 0x99AD, 0xE966, 0x99AE, 0xE967, 0x99B3, 0x9279,
+	0x99B4, 0x93E9, 0x99BC, 0xE968, 0x99C1, 0x949D, 0x99C4, 0x91CA,
+	0x99C5, 0x8977, 0x99C6, 0x8BEC, 0x99C8, 0x8BED, 0x99D0, 0x9293,
+	0x99D1, 0xE96D, 0x99D2, 0x8BEE, 0x99D5, 0x89ED, 0x99D8, 0xE96C,
+	0x99DB, 0xE96A, 0x99DD, 0xE96B, 0x99DF, 0xE969, 0x99E2, 0xE977,
+	0x99ED, 0xE96E, 0x99EE, 0xE96F, 0x99F1, 0xE970, 0x99F2, 0xE971,
+	0x99F8, 0xE973, 0x99FB, 0xE972, 0x99FF, 0x8F78, 0x9A01, 0xE974,
+	0x9A05, 0xE976, 0x9A0E, 0x8B52, 0x9A0F, 0xE975, 0x9A12, 0x919B,
+	0x9A13, 0x8CB1, 0x9A19, 0xE978, 0x9A28, 0x91CB, 0x9A2B, 0xE979,
+	0x9A30, 0x93AB, 0x9A37, 0xE97A, 0x9A3E, 0xE980, 0x9A40, 0xE97D,
+	0x9A42, 0xE97C, 0x9A43, 0xE97E, 0x9A45, 0xE97B, 0x9A4D, 0xE982,
+	0x9A4E, 0xFBFB, 0x9A55, 0xE981, 0x9A57, 0xE984, 0x9A5A, 0x8BC1,
+	0x9A5B, 0xE983, 0x9A5F, 0xE985, 0x9A62, 0xE986, 0x9A64, 0xE988,
+	0x9A65, 0xE987, 0x9A69, 0xE989, 0x9A6A, 0xE98B, 0x9A6B, 0xE98A,
+	0x9AA8, 0x8D9C, 0x9AAD, 0xE98C, 0x9AB0, 0xE98D, 0x9AB8, 0x8A5B,
+	0x9ABC, 0xE98E, 0x9AC0, 0xE98F, 0x9AC4, 0x9091, 0x9ACF, 0xE990,
+	0x9AD1, 0xE991, 0x9AD3, 0xE992, 0x9AD4, 0xE993, 0x9AD8, 0x8D82,
+	0x9AD9, 0xFBFC, 0x9ADC, 0xFC40, 0x9ADE, 0xE994, 0x9ADF, 0xE995,
+	0x9AE2, 0xE996, 0x9AE3, 0xE997, 0x9AE6, 0xE998, 0x9AEA, 0x94AF,
+	0x9AEB, 0xE99A, 0x9AED, 0x9545, 0x9AEE, 0xE99B, 0x9AEF, 0xE999,
+	0x9AF1, 0xE99D, 0x9AF4, 0xE99C, 0x9AF7, 0xE99E, 0x9AFB, 0xE99F,
+	0x9B06, 0xE9A0, 0x9B18, 0xE9A1, 0x9B1A, 0xE9A2, 0x9B1F, 0xE9A3,
+	0x9B22, 0xE9A4, 0x9B23, 0xE9A5, 0x9B25, 0xE9A6, 0x9B27, 0xE9A7,
+	0x9B28, 0xE9A8, 0x9B29, 0xE9A9, 0x9B2A, 0xE9AA, 0x9B2E, 0xE9AB,
+	0x9B2F, 0xE9AC, 0x9B31, 0x9F54, 0x9B32, 0xE9AD, 0x9B3B, 0xE2F6,
+	0x9B3C, 0x8B53, 0x9B41, 0x8A40, 0x9B42, 0x8DB0, 0x9B43, 0xE9AF,
+	0x9B44, 0xE9AE, 0x9B45, 0x96A3, 0x9B4D, 0xE9B1, 0x9B4E, 0xE9B2,
+	0x9B4F, 0xE9B0, 0x9B51, 0xE9B3, 0x9B54, 0x9682, 0x9B58, 0xE9B4,
+	0x9B5A, 0x8B9B, 0x9B6F, 0x9844, 0x9B72, 0xFC42, 0x9B74, 0xE9B5,
+	0x9B75, 0xFC41, 0x9B83, 0xE9B7, 0x9B8E, 0x88BC, 0x9B8F, 0xFC43,
+	0x9B91, 0xE9B8, 0x9B92, 0x95A9, 0x9B93, 0xE9B6, 0x9B96, 0xE9B9,
+	0x9B97, 0xE9BA, 0x9B9F, 0xE9BB, 0x9BA0, 0xE9BC, 0x9BA8, 0xE9BD,
+	0x9BAA, 0x968E, 0x9BAB, 0x8E4C, 0x9BAD, 0x8DF8, 0x9BAE, 0x914E,
+	0x9BB1, 0xFC44, 0x9BB4, 0xE9BE, 0x9BB9, 0xE9C1, 0x9BBB, 0xFC45,
+	0x9BC0, 0xE9BF, 0x9BC6, 0xE9C2, 0x9BC9, 0x8CEF, 0x9BCA, 0xE9C0,
+	0x9BCF, 0xE9C3, 0x9BD1, 0xE9C4, 0x9BD2, 0xE9C5, 0x9BD4, 0xE9C9,
+	0x9BD6, 0x8E49, 0x9BDB, 0x91E2, 0x9BE1, 0xE9CA, 0x9BE2, 0xE9C7,
+	0x9BE3, 0xE9C6, 0x9BE4, 0xE9C8, 0x9BE8, 0x8C7E, 0x9BF0, 0xE9CE,
+	0x9BF1, 0xE9CD, 0x9BF2, 0xE9CC, 0x9BF5, 0x88B1, 0x9C00, 0xFC46,
+	0x9C04, 0xE9D8, 0x9C06, 0xE9D4, 0x9C08, 0xE9D5, 0x9C09, 0xE9D1,
+	0x9C0A, 0xE9D7, 0x9C0C, 0xE9D3, 0x9C0D, 0x8A82, 0x9C10, 0x986B,
+	0x9C12, 0xE9D6, 0x9C13, 0xE9D2, 0x9C14, 0xE9D0, 0x9C15, 0xE9CF,
+	0x9C1B, 0xE9DA, 0x9C21, 0xE9DD, 0x9C24, 0xE9DC, 0x9C25, 0xE9DB,
+	0x9C2D, 0x9568, 0x9C2E, 0xE9D9, 0x9C2F, 0x88F1, 0x9C30, 0xE9DE,
+	0x9C32, 0xE9E0, 0x9C39, 0x8A8F, 0x9C3A, 0xE9CB, 0x9C3B, 0x8956,
+	0x9C3E, 0xE9E2, 0x9C46, 0xE9E1, 0x9C47, 0xE9DF, 0x9C48, 0x924C,
+	0x9C52, 0x9690, 0x9C57, 0x97D8, 0x9C5A, 0xE9E3, 0x9C60, 0xE9E4,
+	0x9C67, 0xE9E5, 0x9C76, 0xE9E6, 0x9C78, 0xE9E7, 0x9CE5, 0x92B9,
+	0x9CE7, 0xE9E8, 0x9CE9, 0x94B5, 0x9CEB, 0xE9ED, 0x9CEC, 0xE9E9,
+	0x9CF0, 0xE9EA, 0x9CF3, 0x9650, 0x9CF4, 0x96C2, 0x9CF6, 0x93CE,
+	0x9D03, 0xE9EE, 0x9D06, 0xE9EF, 0x9D07, 0x93BC, 0x9D08, 0xE9EC,
+	0x9D09, 0xE9EB, 0x9D0E, 0x89A8, 0x9D12, 0xE9F7, 0x9D15, 0xE9F6,
+	0x9D1B, 0x8995, 0x9D1F, 0xE9F4, 0x9D23, 0xE9F3, 0x9D26, 0xE9F1,
+	0x9D28, 0x8A9B, 0x9D2A, 0xE9F0, 0x9D2B, 0x8EB0, 0x9D2C, 0x89A7,
+	0x9D3B, 0x8D83, 0x9D3E, 0xE9FA, 0x9D3F, 0xE9F9, 0x9D41, 0xE9F8,
+	0x9D44, 0xE9F5, 0x9D46, 0xE9FB, 0x9D48, 0xE9FC, 0x9D50, 0xEA44,
+	0x9D51, 0xEA43, 0x9D59, 0xEA45, 0x9D5C, 0x894C, 0x9D5D, 0xEA40,
+	0x9D5E, 0xEA41, 0x9D60, 0x8D94, 0x9D61, 0x96B7, 0x9D64, 0xEA42,
+	0x9D6B, 0xFC48, 0x9D6C, 0x9651, 0x9D6F, 0xEA4A, 0x9D70, 0xFC47,
+	0x9D72, 0xEA46, 0x9D7A, 0xEA4B, 0x9D87, 0xEA48, 0x9D89, 0xEA47,
+	0x9D8F, 0x8C7B, 0x9D9A, 0xEA4C, 0x9DA4, 0xEA4D, 0x9DA9, 0xEA4E,
+	0x9DAB, 0xEA49, 0x9DAF, 0xE9F2, 0x9DB2, 0xEA4F, 0x9DB4, 0x92DF,
+	0x9DB8, 0xEA53, 0x9DBA, 0xEA54, 0x9DBB, 0xEA52, 0x9DC1, 0xEA51,
+	0x9DC2, 0xEA57, 0x9DC4, 0xEA50, 0x9DC6, 0xEA55, 0x9DCF, 0xEA56,
+	0x9DD3, 0xEA59, 0x9DD9, 0xEA58, 0x9DE6, 0xEA5B, 0x9DED, 0xEA5C,
+	0x9DEF, 0xEA5D, 0x9DF2, 0x9868, 0x9DF8, 0xEA5A, 0x9DF9, 0x91E9,
+	0x9DFA, 0x8DEB, 0x9DFD, 0xEA5E, 0x9E19, 0xFC4A, 0x9E1A, 0xEA5F,
+	0x9E1B, 0xEA60, 0x9E1E, 0xEA61, 0x9E75, 0xEA62, 0x9E78, 0x8CB2,
+	0x9E79, 0xEA63, 0x9E7D, 0xEA64, 0x9E7F, 0x8EAD, 0x9E81, 0xEA65,
+	0x9E88, 0xEA66, 0x9E8B, 0xEA67, 0x9E8C, 0xEA68, 0x9E91, 0xEA6B,
+	0x9E92, 0xEA69, 0x9E93, 0x985B, 0x9E95, 0xEA6A, 0x9E97, 0x97ED,
+	0x9E9D, 0xEA6C, 0x9E9F, 0x97D9, 0x9EA5, 0xEA6D, 0x9EA6, 0x949E,
+	0x9EA9, 0xEA6E, 0x9EAA, 0xEA70, 0x9EAD, 0xEA71, 0x9EB8, 0xEA6F,
+	0x9EB9, 0x8D8D, 0x9EBA, 0x96CB, 0x9EBB, 0x9683, 0x9EBC, 0x9BF5,
+	0x9EBE, 0x9F80, 0x9EBF, 0x969B, 0x9EC4, 0x89A9, 0x9ECC, 0xEA73,
+	0x9ECD, 0x8B6F, 0x9ECE, 0xEA74, 0x9ECF, 0xEA75, 0x9ED0, 0xEA76,
+	0x9ED1, 0xFC4B, 0x9ED2, 0x8D95, 0x9ED4, 0xEA77, 0x9ED8, 0xE0D2,
+	0x9ED9, 0x96D9, 0x9EDB, 0x91E1, 0x9EDC, 0xEA78, 0x9EDD, 0xEA7A,
+	0x9EDE, 0xEA79, 0x9EE0, 0xEA7B, 0x9EE5, 0xEA7C, 0x9EE8, 0xEA7D,
+	0x9EEF, 0xEA7E, 0x9EF4, 0xEA80, 0x9EF6, 0xEA81, 0x9EF7, 0xEA82,
+	0x9EF9, 0xEA83, 0x9EFB, 0xEA84, 0x9EFC, 0xEA85, 0x9EFD, 0xEA86,
+	0x9F07, 0xEA87, 0x9F08, 0xEA88, 0x9F0E, 0x9343, 0x9F13, 0x8CDB,
+	0x9F15, 0xEA8A, 0x9F20, 0x916C, 0x9F21, 0xEA8B, 0x9F2C, 0xEA8C,
+	0x9F3B, 0x9540, 0x9F3E, 0xEA8D, 0x9F4A, 0xEA8E, 0x9F4B, 0xE256,
+	0x9F4E, 0xE6D8, 0x9F4F, 0xE8EB, 0x9F52, 0xEA8F, 0x9F54, 0xEA90,
+	0x9F5F, 0xEA92, 0x9F60, 0xEA93, 0x9F61, 0xEA94, 0x9F62, 0x97EE,
+	0x9F63, 0xEA91, 0x9F66, 0xEA95, 0x9F67, 0xEA96, 0x9F6A, 0xEA98,
+	0x9F6C, 0xEA97, 0x9F72, 0xEA9A, 0x9F76, 0xEA9B, 0x9F77, 0xEA99,
+	0x9F8D, 0x97B4, 0x9F95, 0xEA9C, 0x9F9C, 0xEA9D, 0x9F9D, 0xE273,
+	0x9FA0, 0xEA9E, 0xF929, 0xFAE0, 0xF9DC, 0xFBE9, 0xFA0E, 0xFA90,
+	0xFA0F, 0xFA9B, 0xFA10, 0xFA9C, 0xFA11, 0xFAB1, 0xFA12, 0xFAD8,
+	0xFA13, 0xFAE8, 0xFA14, 0xFAEA, 0xFA15, 0xFB58, 0xFA16, 0xFB5E,
+	0xFA17, 0xFB75, 0xFA18, 0xFB7D, 0xFA19, 0xFB7E, 0xFA1A, 0xFB80,
+	0xFA1B, 0xFB82, 0xFA1C, 0xFB86, 0xFA1D, 0xFB89, 0xFA1E, 0xFB92,
+	0xFA1F, 0xFB9D, 0xFA20, 0xFB9F, 0xFA21, 0xFBA0, 0xFA22, 0xFBA9,
+	0xFA23, 0xFBB1, 0xFA24, 0xFBB3, 0xFA25, 0xFBB4, 0xFA26, 0xFBB7,
+	0xFA27, 0xFBD3, 0xFA28, 0xFBDA, 0xFA29, 0xFBEA, 0xFA2A, 0xFBF6,
+	0xFA2B, 0xFBF7, 0xFA2C, 0xFBF9, 0xFA2D, 0xFC49, 0xFF01, 0x8149,
+	0xFF02, 0xFA57, 0xFF03, 0x8194, 0xFF04, 0x8190, 0xFF05, 0x8193,
+	0xFF06, 0x8195, 0xFF07, 0xFA56, 0xFF08, 0x8169, 0xFF09, 0x816A,
+	0xFF0A, 0x8196, 0xFF0B, 0x817B, 0xFF0C, 0x8143, 0xFF0D, 0x817C,
+	0xFF0E, 0x8144, 0xFF0F, 0x815E, 0xFF10, 0x824F, 0xFF11, 0x8250,
+	0xFF12, 0x8251, 0xFF13, 0x8252, 0xFF14, 0x8253, 0xFF15, 0x8254,
+	0xFF16, 0x8255, 0xFF17, 0x8256, 0xFF18, 0x8257, 0xFF19, 0x8258,
+	0xFF1A, 0x8146, 0xFF1B, 0x8147, 0xFF1C, 0x8183, 0xFF1D, 0x8181,
+	0xFF1E, 0x8184, 0xFF1F, 0x8148, 0xFF20, 0x8197, 0xFF21, 0x8260,
+	0xFF22, 0x8261, 0xFF23, 0x8262, 0xFF24, 0x8263, 0xFF25, 0x8264,
+	0xFF26, 0x8265, 0xFF27, 0x8266, 0xFF28, 0x8267, 0xFF29, 0x8268,
+	0xFF2A, 0x8269, 0xFF2B, 0x826A, 0xFF2C, 0x826B, 0xFF2D, 0x826C,
+	0xFF2E, 0x826D, 0xFF2F, 0x826E, 0xFF30, 0x826F, 0xFF31, 0x8270,
+	0xFF32, 0x8271, 0xFF33, 0x8272, 0xFF34, 0x8273, 0xFF35, 0x8274,
+	0xFF36, 0x8275, 0xFF37, 0x8276, 0xFF38, 0x8277, 0xFF39, 0x8278,
+	0xFF3A, 0x8279, 0xFF3B, 0x816D, 0xFF3C, 0x815F, 0xFF3D, 0x816E,
+	0xFF3E, 0x814F, 0xFF3F, 0x8151, 0xFF40, 0x814D, 0xFF41, 0x8281,
+	0xFF42, 0x8282, 0xFF43, 0x8283, 0xFF44, 0x8284, 0xFF45, 0x8285,
+	0xFF46, 0x8286, 0xFF47, 0x8287, 0xFF48, 0x8288, 0xFF49, 0x8289,
+	0xFF4A, 0x828A, 0xFF4B, 0x828B, 0xFF4C, 0x828C, 0xFF4D, 0x828D,
+	0xFF4E, 0x828E, 0xFF4F, 0x828F, 0xFF50, 0x8290, 0xFF51, 0x8291,
+	0xFF52, 0x8292, 0xFF53, 0x8293, 0xFF54, 0x8294, 0xFF55, 0x8295,
+	0xFF56, 0x8296, 0xFF57, 0x8297, 0xFF58, 0x8298, 0xFF59, 0x8299,
+	0xFF5A, 0x829A, 0xFF5B, 0x816F, 0xFF5C, 0x8162, 0xFF5D, 0x8170,
+	0xFF5E, 0x8160, 0xFF61, 0x00A1, 0xFF62, 0x00A2, 0xFF63, 0x00A3,
+	0xFF64, 0x00A4, 0xFF65, 0x00A5, 0xFF66, 0x00A6, 0xFF67, 0x00A7,
+	0xFF68, 0x00A8, 0xFF69, 0x00A9, 0xFF6A, 0x00AA, 0xFF6B, 0x00AB,
+	0xFF6C, 0x00AC, 0xFF6D, 0x00AD, 0xFF6E, 0x00AE, 0xFF6F, 0x00AF,
+	0xFF70, 0x00B0, 0xFF71, 0x00B1, 0xFF72, 0x00B2, 0xFF73, 0x00B3,
+	0xFF74, 0x00B4, 0xFF75, 0x00B5, 0xFF76, 0x00B6, 0xFF77, 0x00B7,
+	0xFF78, 0x00B8, 0xFF79, 0x00B9, 0xFF7A, 0x00BA, 0xFF7B, 0x00BB,
+	0xFF7C, 0x00BC, 0xFF7D, 0x00BD, 0xFF7E, 0x00BE, 0xFF7F, 0x00BF,
+	0xFF80, 0x00C0, 0xFF81, 0x00C1, 0xFF82, 0x00C2, 0xFF83, 0x00C3,
+	0xFF84, 0x00C4, 0xFF85, 0x00C5, 0xFF86, 0x00C6, 0xFF87, 0x00C7,
+	0xFF88, 0x00C8, 0xFF89, 0x00C9, 0xFF8A, 0x00CA, 0xFF8B, 0x00CB,
+	0xFF8C, 0x00CC, 0xFF8D, 0x00CD, 0xFF8E, 0x00CE, 0xFF8F, 0x00CF,
+	0xFF90, 0x00D0, 0xFF91, 0x00D1, 0xFF92, 0x00D2, 0xFF93, 0x00D3,
+	0xFF94, 0x00D4, 0xFF95, 0x00D5, 0xFF96, 0x00D6, 0xFF97, 0x00D7,
+	0xFF98, 0x00D8, 0xFF99, 0x00D9, 0xFF9A, 0x00DA, 0xFF9B, 0x00DB,
+	0xFF9C, 0x00DC, 0xFF9D, 0x00DD, 0xFF9E, 0x00DE, 0xFF9F, 0x00DF,
+	0xFFE0, 0x8191, 0xFFE1, 0x8192, 0xFFE2, 0x81CA, 0xFFE3, 0x8150,
+	0xFFE4, 0xFA55, 0xFFE5, 0x818F, 0, 0
+};
+
+#if !_TINY_TABLE
+static
+const WCHAR sjis2uni[] = {
+/*	SJIS - Unicode, SJIS - Unicode, SJIS - Unicode, SJIS - Unicode, */
+	0x00A1, 0xFF61, 0x00A2, 0xFF62, 0x00A3, 0xFF63, 0x00A4, 0xFF64,
+	0x00A5, 0xFF65, 0x00A6, 0xFF66, 0x00A7, 0xFF67, 0x00A8, 0xFF68,
+	0x00A9, 0xFF69, 0x00AA, 0xFF6A, 0x00AB, 0xFF6B, 0x00AC, 0xFF6C,
+	0x00AD, 0xFF6D, 0x00AE, 0xFF6E, 0x00AF, 0xFF6F, 0x00B0, 0xFF70,
+	0x00B1, 0xFF71, 0x00B2, 0xFF72, 0x00B3, 0xFF73, 0x00B4, 0xFF74,
+	0x00B5, 0xFF75, 0x00B6, 0xFF76, 0x00B7, 0xFF77, 0x00B8, 0xFF78,
+	0x00B9, 0xFF79, 0x00BA, 0xFF7A, 0x00BB, 0xFF7B, 0x00BC, 0xFF7C,
+	0x00BD, 0xFF7D, 0x00BE, 0xFF7E, 0x00BF, 0xFF7F, 0x00C0, 0xFF80,
+	0x00C1, 0xFF81, 0x00C2, 0xFF82, 0x00C3, 0xFF83, 0x00C4, 0xFF84,
+	0x00C5, 0xFF85, 0x00C6, 0xFF86, 0x00C7, 0xFF87, 0x00C8, 0xFF88,
+	0x00C9, 0xFF89, 0x00CA, 0xFF8A, 0x00CB, 0xFF8B, 0x00CC, 0xFF8C,
+	0x00CD, 0xFF8D, 0x00CE, 0xFF8E, 0x00CF, 0xFF8F, 0x00D0, 0xFF90,
+	0x00D1, 0xFF91, 0x00D2, 0xFF92, 0x00D3, 0xFF93, 0x00D4, 0xFF94,
+	0x00D5, 0xFF95, 0x00D6, 0xFF96, 0x00D7, 0xFF97, 0x00D8, 0xFF98,
+	0x00D9, 0xFF99, 0x00DA, 0xFF9A, 0x00DB, 0xFF9B, 0x00DC, 0xFF9C,
+	0x00DD, 0xFF9D, 0x00DE, 0xFF9E, 0x00DF, 0xFF9F, 0x8140, 0x3000,
+	0x8141, 0x3001, 0x8142, 0x3002, 0x8143, 0xFF0C, 0x8144, 0xFF0E,
+	0x8145, 0x30FB, 0x8146, 0xFF1A, 0x8147, 0xFF1B, 0x8148, 0xFF1F,
+	0x8149, 0xFF01, 0x814A, 0x309B, 0x814B, 0x309C, 0x814C, 0x00B4,
+	0x814D, 0xFF40, 0x814E, 0x00A8, 0x814F, 0xFF3E, 0x8150, 0xFFE3,
+	0x8151, 0xFF3F, 0x8152, 0x30FD, 0x8153, 0x30FE, 0x8154, 0x309D,
+	0x8155, 0x309E, 0x8156, 0x3003, 0x8157, 0x4EDD, 0x8158, 0x3005,
+	0x8159, 0x3006, 0x815A, 0x3007, 0x815B, 0x30FC, 0x815C, 0x2015,
+	0x815D, 0x2010, 0x815E, 0xFF0F, 0x815F, 0xFF3C, 0x8160, 0xFF5E,
+	0x8161, 0x2225, 0x8162, 0xFF5C, 0x8163, 0x2026, 0x8164, 0x2025,
+	0x8165, 0x2018, 0x8166, 0x2019, 0x8167, 0x201C, 0x8168, 0x201D,
+	0x8169, 0xFF08, 0x816A, 0xFF09, 0x816B, 0x3014, 0x816C, 0x3015,
+	0x816D, 0xFF3B, 0x816E, 0xFF3D, 0x816F, 0xFF5B, 0x8170, 0xFF5D,
+	0x8171, 0x3008, 0x8172, 0x3009, 0x8173, 0x300A, 0x8174, 0x300B,
+	0x8175, 0x300C, 0x8176, 0x300D, 0x8177, 0x300E, 0x8178, 0x300F,
+	0x8179, 0x3010, 0x817A, 0x3011, 0x817B, 0xFF0B, 0x817C, 0xFF0D,
+	0x817D, 0x00B1, 0x817E, 0x00D7, 0x8180, 0x00F7, 0x8181, 0xFF1D,
+	0x8182, 0x2260, 0x8183, 0xFF1C, 0x8184, 0xFF1E, 0x8185, 0x2266,
+	0x8186, 0x2267, 0x8187, 0x221E, 0x8188, 0x2234, 0x8189, 0x2642,
+	0x818A, 0x2640, 0x818B, 0x00B0, 0x818C, 0x2032, 0x818D, 0x2033,
+	0x818E, 0x2103, 0x818F, 0xFFE5, 0x8190, 0xFF04, 0x8191, 0xFFE0,
+	0x8192, 0xFFE1, 0x8193, 0xFF05, 0x8194, 0xFF03, 0x8195, 0xFF06,
+	0x8196, 0xFF0A, 0x8197, 0xFF20, 0x8198, 0x00A7, 0x8199, 0x2606,
+	0x819A, 0x2605, 0x819B, 0x25CB, 0x819C, 0x25CF, 0x819D, 0x25CE,
+	0x819E, 0x25C7, 0x819F, 0x25C6, 0x81A0, 0x25A1, 0x81A1, 0x25A0,
+	0x81A2, 0x25B3, 0x81A3, 0x25B2, 0x81A4, 0x25BD, 0x81A5, 0x25BC,
+	0x81A6, 0x203B, 0x81A7, 0x3012, 0x81A8, 0x2192, 0x81A9, 0x2190,
+	0x81AA, 0x2191, 0x81AB, 0x2193, 0x81AC, 0x3013, 0x81B8, 0x2208,
+	0x81B9, 0x220B, 0x81BA, 0x2286, 0x81BB, 0x2287, 0x81BC, 0x2282,
+	0x81BD, 0x2283, 0x81BE, 0x222A, 0x81BF, 0x2229, 0x81C8, 0x2227,
+	0x81C9, 0x2228, 0x81CA, 0xFFE2, 0x81CB, 0x21D2, 0x81CC, 0x21D4,
+	0x81CD, 0x2200, 0x81CE, 0x2203, 0x81DA, 0x2220, 0x81DB, 0x22A5,
+	0x81DC, 0x2312, 0x81DD, 0x2202, 0x81DE, 0x2207, 0x81DF, 0x2261,
+	0x81E0, 0x2252, 0x81E1, 0x226A, 0x81E2, 0x226B, 0x81E3, 0x221A,
+	0x81E4, 0x223D, 0x81E5, 0x221D, 0x81E6, 0x2235, 0x81E7, 0x222B,
+	0x81E8, 0x222C, 0x81F0, 0x212B, 0x81F1, 0x2030, 0x81F2, 0x266F,
+	0x81F3, 0x266D, 0x81F4, 0x266A, 0x81F5, 0x2020, 0x81F6, 0x2021,
+	0x81F7, 0x00B6, 0x81FC, 0x25EF, 0x824F, 0xFF10, 0x8250, 0xFF11,
+	0x8251, 0xFF12, 0x8252, 0xFF13, 0x8253, 0xFF14, 0x8254, 0xFF15,
+	0x8255, 0xFF16, 0x8256, 0xFF17, 0x8257, 0xFF18, 0x8258, 0xFF19,
+	0x8260, 0xFF21, 0x8261, 0xFF22, 0x8262, 0xFF23, 0x8263, 0xFF24,
+	0x8264, 0xFF25, 0x8265, 0xFF26, 0x8266, 0xFF27, 0x8267, 0xFF28,
+	0x8268, 0xFF29, 0x8269, 0xFF2A, 0x826A, 0xFF2B, 0x826B, 0xFF2C,
+	0x826C, 0xFF2D, 0x826D, 0xFF2E, 0x826E, 0xFF2F, 0x826F, 0xFF30,
+	0x8270, 0xFF31, 0x8271, 0xFF32, 0x8272, 0xFF33, 0x8273, 0xFF34,
+	0x8274, 0xFF35, 0x8275, 0xFF36, 0x8276, 0xFF37, 0x8277, 0xFF38,
+	0x8278, 0xFF39, 0x8279, 0xFF3A, 0x8281, 0xFF41, 0x8282, 0xFF42,
+	0x8283, 0xFF43, 0x8284, 0xFF44, 0x8285, 0xFF45, 0x8286, 0xFF46,
+	0x8287, 0xFF47, 0x8288, 0xFF48, 0x8289, 0xFF49, 0x828A, 0xFF4A,
+	0x828B, 0xFF4B, 0x828C, 0xFF4C, 0x828D, 0xFF4D, 0x828E, 0xFF4E,
+	0x828F, 0xFF4F, 0x8290, 0xFF50, 0x8291, 0xFF51, 0x8292, 0xFF52,
+	0x8293, 0xFF53, 0x8294, 0xFF54, 0x8295, 0xFF55, 0x8296, 0xFF56,
+	0x8297, 0xFF57, 0x8298, 0xFF58, 0x8299, 0xFF59, 0x829A, 0xFF5A,
+	0x829F, 0x3041, 0x82A0, 0x3042, 0x82A1, 0x3043, 0x82A2, 0x3044,
+	0x82A3, 0x3045, 0x82A4, 0x3046, 0x82A5, 0x3047, 0x82A6, 0x3048,
+	0x82A7, 0x3049, 0x82A8, 0x304A, 0x82A9, 0x304B, 0x82AA, 0x304C,
+	0x82AB, 0x304D, 0x82AC, 0x304E, 0x82AD, 0x304F, 0x82AE, 0x3050,
+	0x82AF, 0x3051, 0x82B0, 0x3052, 0x82B1, 0x3053, 0x82B2, 0x3054,
+	0x82B3, 0x3055, 0x82B4, 0x3056, 0x82B5, 0x3057, 0x82B6, 0x3058,
+	0x82B7, 0x3059, 0x82B8, 0x305A, 0x82B9, 0x305B, 0x82BA, 0x305C,
+	0x82BB, 0x305D, 0x82BC, 0x305E, 0x82BD, 0x305F, 0x82BE, 0x3060,
+	0x82BF, 0x3061, 0x82C0, 0x3062, 0x82C1, 0x3063, 0x82C2, 0x3064,
+	0x82C3, 0x3065, 0x82C4, 0x3066, 0x82C5, 0x3067, 0x82C6, 0x3068,
+	0x82C7, 0x3069, 0x82C8, 0x306A, 0x82C9, 0x306B, 0x82CA, 0x306C,
+	0x82CB, 0x306D, 0x82CC, 0x306E, 0x82CD, 0x306F, 0x82CE, 0x3070,
+	0x82CF, 0x3071, 0x82D0, 0x3072, 0x82D1, 0x3073, 0x82D2, 0x3074,
+	0x82D3, 0x3075, 0x82D4, 0x3076, 0x82D5, 0x3077, 0x82D6, 0x3078,
+	0x82D7, 0x3079, 0x82D8, 0x307A, 0x82D9, 0x307B, 0x82DA, 0x307C,
+	0x82DB, 0x307D, 0x82DC, 0x307E, 0x82DD, 0x307F, 0x82DE, 0x3080,
+	0x82DF, 0x3081, 0x82E0, 0x3082, 0x82E1, 0x3083, 0x82E2, 0x3084,
+	0x82E3, 0x3085, 0x82E4, 0x3086, 0x82E5, 0x3087, 0x82E6, 0x3088,
+	0x82E7, 0x3089, 0x82E8, 0x308A, 0x82E9, 0x308B, 0x82EA, 0x308C,
+	0x82EB, 0x308D, 0x82EC, 0x308E, 0x82ED, 0x308F, 0x82EE, 0x3090,
+	0x82EF, 0x3091, 0x82F0, 0x3092, 0x82F1, 0x3093, 0x8340, 0x30A1,
+	0x8341, 0x30A2, 0x8342, 0x30A3, 0x8343, 0x30A4, 0x8344, 0x30A5,
+	0x8345, 0x30A6, 0x8346, 0x30A7, 0x8347, 0x30A8, 0x8348, 0x30A9,
+	0x8349, 0x30AA, 0x834A, 0x30AB, 0x834B, 0x30AC, 0x834C, 0x30AD,
+	0x834D, 0x30AE, 0x834E, 0x30AF, 0x834F, 0x30B0, 0x8350, 0x30B1,
+	0x8351, 0x30B2, 0x8352, 0x30B3, 0x8353, 0x30B4, 0x8354, 0x30B5,
+	0x8355, 0x30B6, 0x8356, 0x30B7, 0x8357, 0x30B8, 0x8358, 0x30B9,
+	0x8359, 0x30BA, 0x835A, 0x30BB, 0x835B, 0x30BC, 0x835C, 0x30BD,
+	0x835D, 0x30BE, 0x835E, 0x30BF, 0x835F, 0x30C0, 0x8360, 0x30C1,
+	0x8361, 0x30C2, 0x8362, 0x30C3, 0x8363, 0x30C4, 0x8364, 0x30C5,
+	0x8365, 0x30C6, 0x8366, 0x30C7, 0x8367, 0x30C8, 0x8368, 0x30C9,
+	0x8369, 0x30CA, 0x836A, 0x30CB, 0x836B, 0x30CC, 0x836C, 0x30CD,
+	0x836D, 0x30CE, 0x836E, 0x30CF, 0x836F, 0x30D0, 0x8370, 0x30D1,
+	0x8371, 0x30D2, 0x8372, 0x30D3, 0x8373, 0x30D4, 0x8374, 0x30D5,
+	0x8375, 0x30D6, 0x8376, 0x30D7, 0x8377, 0x30D8, 0x8378, 0x30D9,
+	0x8379, 0x30DA, 0x837A, 0x30DB, 0x837B, 0x30DC, 0x837C, 0x30DD,
+	0x837D, 0x30DE, 0x837E, 0x30DF, 0x8380, 0x30E0, 0x8381, 0x30E1,
+	0x8382, 0x30E2, 0x8383, 0x30E3, 0x8384, 0x30E4, 0x8385, 0x30E5,
+	0x8386, 0x30E6, 0x8387, 0x30E7, 0x8388, 0x30E8, 0x8389, 0x30E9,
+	0x838A, 0x30EA, 0x838B, 0x30EB, 0x838C, 0x30EC, 0x838D, 0x30ED,
+	0x838E, 0x30EE, 0x838F, 0x30EF, 0x8390, 0x30F0, 0x8391, 0x30F1,
+	0x8392, 0x30F2, 0x8393, 0x30F3, 0x8394, 0x30F4,
+	0x8395, 0x30F5, 0x8396, 0x30F6, 0x839F, 0x0391, 0x83A0, 0x0392,
+	0x83A1, 0x0393, 0x83A2, 0x0394, 0x83A3, 0x0395, 0x83A4, 0x0396,
+	0x83A5, 0x0397, 0x83A6, 0x0398, 0x83A7, 0x0399, 0x83A8, 0x039A,
+	0x83A9, 0x039B, 0x83AA, 0x039C, 0x83AB, 0x039D, 0x83AC, 0x039E,
+	0x83AD, 0x039F, 0x83AE, 0x03A0, 0x83AF, 0x03A1, 0x83B0, 0x03A3,
+	0x83B1, 0x03A4, 0x83B2, 0x03A5, 0x83B3, 0x03A6, 0x83B4, 0x03A7,
+	0x83B5, 0x03A8, 0x83B6, 0x03A9, 0x83BF, 0x03B1, 0x83C0, 0x03B2,
+	0x83C1, 0x03B3, 0x83C2, 0x03B4, 0x83C3, 0x03B5, 0x83C4, 0x03B6,
+	0x83C5, 0x03B7, 0x83C6, 0x03B8, 0x83C7, 0x03B9, 0x83C8, 0x03BA,
+	0x83C9, 0x03BB, 0x83CA, 0x03BC, 0x83CB, 0x03BD, 0x83CC, 0x03BE,
+	0x83CD, 0x03BF, 0x83CE, 0x03C0, 0x83CF, 0x03C1, 0x83D0, 0x03C3,
+	0x83D1, 0x03C4, 0x83D2, 0x03C5, 0x83D3, 0x03C6, 0x83D4, 0x03C7,
+	0x83D5, 0x03C8, 0x83D6, 0x03C9, 0x8440, 0x0410, 0x8441, 0x0411,
+	0x8442, 0x0412, 0x8443, 0x0413, 0x8444, 0x0414, 0x8445, 0x0415,
+	0x8446, 0x0401, 0x8447, 0x0416, 0x8448, 0x0417, 0x8449, 0x0418,
+	0x844A, 0x0419, 0x844B, 0x041A, 0x844C, 0x041B, 0x844D, 0x041C,
+	0x844E, 0x041D, 0x844F, 0x041E, 0x8450, 0x041F, 0x8451, 0x0420,
+	0x8452, 0x0421, 0x8453, 0x0422, 0x8454, 0x0423, 0x8455, 0x0424,
+	0x8456, 0x0425, 0x8457, 0x0426, 0x8458, 0x0427, 0x8459, 0x0428,
+	0x845A, 0x0429, 0x845B, 0x042A, 0x845C, 0x042B, 0x845D, 0x042C,
+	0x845E, 0x042D, 0x845F, 0x042E, 0x8460, 0x042F, 0x8470, 0x0430,
+	0x8471, 0x0431, 0x8472, 0x0432, 0x8473, 0x0433, 0x8474, 0x0434,
+	0x8475, 0x0435, 0x8476, 0x0451, 0x8477, 0x0436, 0x8478, 0x0437,
+	0x8479, 0x0438, 0x847A, 0x0439, 0x847B, 0x043A, 0x847C, 0x043B,
+	0x847D, 0x043C, 0x847E, 0x043D, 0x8480, 0x043E, 0x8481, 0x043F,
+	0x8482, 0x0440, 0x8483, 0x0441, 0x8484, 0x0442, 0x8485, 0x0443,
+	0x8486, 0x0444, 0x8487, 0x0445, 0x8488, 0x0446, 0x8489, 0x0447,
+	0x848A, 0x0448, 0x848B, 0x0449, 0x848C, 0x044A, 0x848D, 0x044B,
+	0x848E, 0x044C, 0x848F, 0x044D, 0x8490, 0x044E, 0x8491, 0x044F,
+	0x849F, 0x2500, 0x84A0, 0x2502, 0x84A1, 0x250C, 0x84A2, 0x2510,
+	0x84A3, 0x2518, 0x84A4, 0x2514, 0x84A5, 0x251C, 0x84A6, 0x252C,
+	0x84A7, 0x2524, 0x84A8, 0x2534, 0x84A9, 0x253C, 0x84AA, 0x2501,
+	0x84AB, 0x2503, 0x84AC, 0x250F, 0x84AD, 0x2513, 0x84AE, 0x251B,
+	0x84AF, 0x2517, 0x84B0, 0x2523, 0x84B1, 0x2533, 0x84B2, 0x252B,
+	0x84B3, 0x253B, 0x84B4, 0x254B, 0x84B5, 0x2520, 0x84B6, 0x252F,
+	0x84B7, 0x2528, 0x84B8, 0x2537, 0x84B9, 0x253F, 0x84BA, 0x251D,
+	0x84BB, 0x2530, 0x84BC, 0x2525, 0x84BD, 0x2538, 0x84BE, 0x2542,
+	0x8740, 0x2460, 0x8741, 0x2461, 0x8742, 0x2462, 0x8743, 0x2463,
+	0x8744, 0x2464, 0x8745, 0x2465, 0x8746, 0x2466, 0x8747, 0x2467,
+	0x8748, 0x2468, 0x8749, 0x2469, 0x874A, 0x246A, 0x874B, 0x246B,
+	0x874C, 0x246C, 0x874D, 0x246D, 0x874E, 0x246E, 0x874F, 0x246F,
+	0x8750, 0x2470, 0x8751, 0x2471, 0x8752, 0x2472, 0x8753, 0x2473,
+	0x8754, 0x2160, 0x8755, 0x2161, 0x8756, 0x2162, 0x8757, 0x2163,
+	0x8758, 0x2164, 0x8759, 0x2165, 0x875A, 0x2166, 0x875B, 0x2167,
+	0x875C, 0x2168, 0x875D, 0x2169, 0x875F, 0x3349, 0x8760, 0x3314,
+	0x8761, 0x3322, 0x8762, 0x334D, 0x8763, 0x3318, 0x8764, 0x3327,
+	0x8765, 0x3303, 0x8766, 0x3336, 0x8767, 0x3351, 0x8768, 0x3357,
+	0x8769, 0x330D, 0x876A, 0x3326, 0x876B, 0x3323, 0x876C, 0x332B,
+	0x876D, 0x334A, 0x876E, 0x333B, 0x876F, 0x339C, 0x8770, 0x339D,
+	0x8771, 0x339E, 0x8772, 0x338E, 0x8773, 0x338F, 0x8774, 0x33C4,
+	0x8775, 0x33A1, 0x877E, 0x337B, 0x8780, 0x301D, 0x8781, 0x301F,
+	0x8782, 0x2116, 0x8783, 0x33CD, 0x8784, 0x2121, 0x8785, 0x32A4,
+	0x8786, 0x32A5, 0x8787, 0x32A6, 0x8788, 0x32A7, 0x8789, 0x32A8,
+	0x878A, 0x3231, 0x878B, 0x3232, 0x878C, 0x3239, 0x878D, 0x337E,
+	0x878E, 0x337D, 0x878F, 0x337C, 0x8793, 0x222E, 0x8794, 0x2211,
+	0x8798, 0x221F, 0x8799, 0x22BF, 0x889F, 0x4E9C, 0x88A0, 0x5516,
+	0x88A1, 0x5A03, 0x88A2, 0x963F, 0x88A3, 0x54C0, 0x88A4, 0x611B,
+	0x88A5, 0x6328, 0x88A6, 0x59F6, 0x88A7, 0x9022, 0x88A8, 0x8475,
+	0x88A9, 0x831C, 0x88AA, 0x7A50, 0x88AB, 0x60AA, 0x88AC, 0x63E1,
+	0x88AD, 0x6E25, 0x88AE, 0x65ED, 0x88AF, 0x8466, 0x88B0, 0x82A6,
+	0x88B1, 0x9BF5, 0x88B2, 0x6893, 0x88B3, 0x5727, 0x88B4, 0x65A1,
+	0x88B5, 0x6271, 0x88B6, 0x5B9B, 0x88B7, 0x59D0, 0x88B8, 0x867B,
+	0x88B9, 0x98F4, 0x88BA, 0x7D62, 0x88BB, 0x7DBE, 0x88BC, 0x9B8E,
+	0x88BD, 0x6216, 0x88BE, 0x7C9F, 0x88BF, 0x88B7, 0x88C0, 0x5B89,
+	0x88C1, 0x5EB5, 0x88C2, 0x6309, 0x88C3, 0x6697, 0x88C4, 0x6848,
+	0x88C5, 0x95C7, 0x88C6, 0x978D, 0x88C7, 0x674F, 0x88C8, 0x4EE5,
+	0x88C9, 0x4F0A, 0x88CA, 0x4F4D, 0x88CB, 0x4F9D, 0x88CC, 0x5049,
+	0x88CD, 0x56F2, 0x88CE, 0x5937, 0x88CF, 0x59D4, 0x88D0, 0x5A01,
+	0x88D1, 0x5C09, 0x88D2, 0x60DF, 0x88D3, 0x610F, 0x88D4, 0x6170,
+	0x88D5, 0x6613, 0x88D6, 0x6905, 0x88D7, 0x70BA, 0x88D8, 0x754F,
+	0x88D9, 0x7570, 0x88DA, 0x79FB, 0x88DB, 0x7DAD, 0x88DC, 0x7DEF,
+	0x88DD, 0x80C3, 0x88DE, 0x840E, 0x88DF, 0x8863, 0x88E0, 0x8B02,
+	0x88E1, 0x9055, 0x88E2, 0x907A, 0x88E3, 0x533B, 0x88E4, 0x4E95,
+	0x88E5, 0x4EA5, 0x88E6, 0x57DF, 0x88E7, 0x80B2, 0x88E8, 0x90C1,
+	0x88E9, 0x78EF, 0x88EA, 0x4E00, 0x88EB, 0x58F1, 0x88EC, 0x6EA2,
+	0x88ED, 0x9038, 0x88EE, 0x7A32, 0x88EF, 0x8328, 0x88F0, 0x828B,
+	0x88F1, 0x9C2F, 0x88F2, 0x5141, 0x88F3, 0x5370, 0x88F4, 0x54BD,
+	0x88F5, 0x54E1, 0x88F6, 0x56E0, 0x88F7, 0x59FB, 0x88F8, 0x5F15,
+	0x88F9, 0x98F2, 0x88FA, 0x6DEB, 0x88FB, 0x80E4, 0x88FC, 0x852D,
+	0x8940, 0x9662, 0x8941, 0x9670, 0x8942, 0x96A0, 0x8943, 0x97FB,
+	0x8944, 0x540B, 0x8945, 0x53F3, 0x8946, 0x5B87, 0x8947, 0x70CF,
+	0x8948, 0x7FBD, 0x8949, 0x8FC2, 0x894A, 0x96E8, 0x894B, 0x536F,
+	0x894C, 0x9D5C, 0x894D, 0x7ABA, 0x894E, 0x4E11, 0x894F, 0x7893,
+	0x8950, 0x81FC, 0x8951, 0x6E26, 0x8952, 0x5618, 0x8953, 0x5504,
+	0x8954, 0x6B1D, 0x8955, 0x851A, 0x8956, 0x9C3B, 0x8957, 0x59E5,
+	0x8958, 0x53A9, 0x8959, 0x6D66, 0x895A, 0x74DC, 0x895B, 0x958F,
+	0x895C, 0x5642, 0x895D, 0x4E91, 0x895E, 0x904B, 0x895F, 0x96F2,
+	0x8960, 0x834F, 0x8961, 0x990C, 0x8962, 0x53E1, 0x8963, 0x55B6,
+	0x8964, 0x5B30, 0x8965, 0x5F71, 0x8966, 0x6620, 0x8967, 0x66F3,
+	0x8968, 0x6804, 0x8969, 0x6C38, 0x896A, 0x6CF3, 0x896B, 0x6D29,
+	0x896C, 0x745B, 0x896D, 0x76C8, 0x896E, 0x7A4E, 0x896F, 0x9834,
+	0x8970, 0x82F1, 0x8971, 0x885B, 0x8972, 0x8A60, 0x8973, 0x92ED,
+	0x8974, 0x6DB2, 0x8975, 0x75AB, 0x8976, 0x76CA, 0x8977, 0x99C5,
+	0x8978, 0x60A6, 0x8979, 0x8B01, 0x897A, 0x8D8A, 0x897B, 0x95B2,
+	0x897C, 0x698E, 0x897D, 0x53AD, 0x897E, 0x5186, 0x8980, 0x5712,
+	0x8981, 0x5830, 0x8982, 0x5944, 0x8983, 0x5BB4, 0x8984, 0x5EF6,
+	0x8985, 0x6028, 0x8986, 0x63A9, 0x8987, 0x63F4, 0x8988, 0x6CBF,
+	0x8989, 0x6F14, 0x898A, 0x708E, 0x898B, 0x7114, 0x898C, 0x7159,
+	0x898D, 0x71D5, 0x898E, 0x733F, 0x898F, 0x7E01, 0x8990, 0x8276,
+	0x8991, 0x82D1, 0x8992, 0x8597, 0x8993, 0x9060, 0x8994, 0x925B,
+	0x8995, 0x9D1B, 0x8996, 0x5869, 0x8997, 0x65BC, 0x8998, 0x6C5A,
+	0x8999, 0x7525, 0x899A, 0x51F9, 0x899B, 0x592E, 0x899C, 0x5965,
+	0x899D, 0x5F80, 0x899E, 0x5FDC, 0x899F, 0x62BC, 0x89A0, 0x65FA,
+	0x89A1, 0x6A2A, 0x89A2, 0x6B27, 0x89A3, 0x6BB4, 0x89A4, 0x738B,
+	0x89A5, 0x7FC1, 0x89A6, 0x8956, 0x89A7, 0x9D2C, 0x89A8, 0x9D0E,
+	0x89A9, 0x9EC4, 0x89AA, 0x5CA1, 0x89AB, 0x6C96, 0x89AC, 0x837B,
+	0x89AD, 0x5104, 0x89AE, 0x5C4B, 0x89AF, 0x61B6, 0x89B0, 0x81C6,
+	0x89B1, 0x6876, 0x89B2, 0x7261, 0x89B3, 0x4E59, 0x89B4, 0x4FFA,
+	0x89B5, 0x5378, 0x89B6, 0x6069, 0x89B7, 0x6E29, 0x89B8, 0x7A4F,
+	0x89B9, 0x97F3, 0x89BA, 0x4E0B, 0x89BB, 0x5316, 0x89BC, 0x4EEE,
+	0x89BD, 0x4F55, 0x89BE, 0x4F3D, 0x89BF, 0x4FA1, 0x89C0, 0x4F73,
+	0x89C1, 0x52A0, 0x89C2, 0x53EF, 0x89C3, 0x5609, 0x89C4, 0x590F,
+	0x89C5, 0x5AC1, 0x89C6, 0x5BB6, 0x89C7, 0x5BE1, 0x89C8, 0x79D1,
+	0x89C9, 0x6687, 0x89CA, 0x679C, 0x89CB, 0x67B6, 0x89CC, 0x6B4C,
+	0x89CD, 0x6CB3, 0x89CE, 0x706B, 0x89CF, 0x73C2, 0x89D0, 0x798D,
+	0x89D1, 0x79BE, 0x89D2, 0x7A3C, 0x89D3, 0x7B87, 0x89D4, 0x82B1,
+	0x89D5, 0x82DB, 0x89D6, 0x8304, 0x89D7, 0x8377, 0x89D8, 0x83EF,
+	0x89D9, 0x83D3, 0x89DA, 0x8766, 0x89DB, 0x8AB2, 0x89DC, 0x5629,
+	0x89DD, 0x8CA8, 0x89DE, 0x8FE6, 0x89DF, 0x904E, 0x89E0, 0x971E,
+	0x89E1, 0x868A, 0x89E2, 0x4FC4, 0x89E3, 0x5CE8, 0x89E4, 0x6211,
+	0x89E5, 0x7259, 0x89E6, 0x753B, 0x89E7, 0x81E5, 0x89E8, 0x82BD,
+	0x89E9, 0x86FE, 0x89EA, 0x8CC0, 0x89EB, 0x96C5, 0x89EC, 0x9913,
+	0x89ED, 0x99D5, 0x89EE, 0x4ECB, 0x89EF, 0x4F1A, 0x89F0, 0x89E3,
+	0x89F1, 0x56DE, 0x89F2, 0x584A, 0x89F3, 0x58CA, 0x89F4, 0x5EFB,
+	0x89F5, 0x5FEB, 0x89F6, 0x602A, 0x89F7, 0x6094, 0x89F8, 0x6062,
+	0x89F9, 0x61D0, 0x89FA, 0x6212, 0x89FB, 0x62D0, 0x89FC, 0x6539,
+	0x8A40, 0x9B41, 0x8A41, 0x6666, 0x8A42, 0x68B0, 0x8A43, 0x6D77,
+	0x8A44, 0x7070, 0x8A45, 0x754C, 0x8A46, 0x7686, 0x8A47, 0x7D75,
+	0x8A48, 0x82A5, 0x8A49, 0x87F9, 0x8A4A, 0x958B, 0x8A4B, 0x968E,
+	0x8A4C, 0x8C9D, 0x8A4D, 0x51F1, 0x8A4E, 0x52BE, 0x8A4F, 0x5916,
+	0x8A50, 0x54B3, 0x8A51, 0x5BB3, 0x8A52, 0x5D16, 0x8A53, 0x6168,
+	0x8A54, 0x6982, 0x8A55, 0x6DAF, 0x8A56, 0x788D, 0x8A57, 0x84CB,
+	0x8A58, 0x8857, 0x8A59, 0x8A72, 0x8A5A, 0x93A7, 0x8A5B, 0x9AB8,
+	0x8A5C, 0x6D6C, 0x8A5D, 0x99A8, 0x8A5E, 0x86D9, 0x8A5F, 0x57A3,
+	0x8A60, 0x67FF, 0x8A61, 0x86CE, 0x8A62, 0x920E, 0x8A63, 0x5283,
+	0x8A64, 0x5687, 0x8A65, 0x5404, 0x8A66, 0x5ED3, 0x8A67, 0x62E1,
+	0x8A68, 0x64B9, 0x8A69, 0x683C, 0x8A6A, 0x6838, 0x8A6B, 0x6BBB,
+	0x8A6C, 0x7372, 0x8A6D, 0x78BA, 0x8A6E, 0x7A6B, 0x8A6F, 0x899A,
+	0x8A70, 0x89D2, 0x8A71, 0x8D6B, 0x8A72, 0x8F03, 0x8A73, 0x90ED,
+	0x8A74, 0x95A3, 0x8A75, 0x9694, 0x8A76, 0x9769, 0x8A77, 0x5B66,
+	0x8A78, 0x5CB3, 0x8A79, 0x697D, 0x8A7A, 0x984D, 0x8A7B, 0x984E,
+	0x8A7C, 0x639B, 0x8A7D, 0x7B20, 0x8A7E, 0x6A2B, 0x8A80, 0x6A7F,
+	0x8A81, 0x68B6, 0x8A82, 0x9C0D, 0x8A83, 0x6F5F, 0x8A84, 0x5272,
+	0x8A85, 0x559D, 0x8A86, 0x6070, 0x8A87, 0x62EC, 0x8A88, 0x6D3B,
+	0x8A89, 0x6E07, 0x8A8A, 0x6ED1, 0x8A8B, 0x845B, 0x8A8C, 0x8910,
+	0x8A8D, 0x8F44, 0x8A8E, 0x4E14, 0x8A8F, 0x9C39, 0x8A90, 0x53F6,
+	0x8A91, 0x691B, 0x8A92, 0x6A3A, 0x8A93, 0x9784, 0x8A94, 0x682A,
+	0x8A95, 0x515C, 0x8A96, 0x7AC3, 0x8A97, 0x84B2, 0x8A98, 0x91DC,
+	0x8A99, 0x938C, 0x8A9A, 0x565B, 0x8A9B, 0x9D28, 0x8A9C, 0x6822,
+	0x8A9D, 0x8305, 0x8A9E, 0x8431, 0x8A9F, 0x7CA5, 0x8AA0, 0x5208,
+	0x8AA1, 0x82C5, 0x8AA2, 0x74E6, 0x8AA3, 0x4E7E, 0x8AA4, 0x4F83,
+	0x8AA5, 0x51A0, 0x8AA6, 0x5BD2, 0x8AA7, 0x520A, 0x8AA8, 0x52D8,
+	0x8AA9, 0x52E7, 0x8AAA, 0x5DFB, 0x8AAB, 0x559A, 0x8AAC, 0x582A,
+	0x8AAD, 0x59E6, 0x8AAE, 0x5B8C, 0x8AAF, 0x5B98, 0x8AB0, 0x5BDB,
+	0x8AB1, 0x5E72, 0x8AB2, 0x5E79, 0x8AB3, 0x60A3, 0x8AB4, 0x611F,
+	0x8AB5, 0x6163, 0x8AB6, 0x61BE, 0x8AB7, 0x63DB, 0x8AB8, 0x6562,
+	0x8AB9, 0x67D1, 0x8ABA, 0x6853, 0x8ABB, 0x68FA, 0x8ABC, 0x6B3E,
+	0x8ABD, 0x6B53, 0x8ABE, 0x6C57, 0x8ABF, 0x6F22, 0x8AC0, 0x6F97,
+	0x8AC1, 0x6F45, 0x8AC2, 0x74B0, 0x8AC3, 0x7518, 0x8AC4, 0x76E3,
+	0x8AC5, 0x770B, 0x8AC6, 0x7AFF, 0x8AC7, 0x7BA1, 0x8AC8, 0x7C21,
+	0x8AC9, 0x7DE9, 0x8ACA, 0x7F36, 0x8ACB, 0x7FF0, 0x8ACC, 0x809D,
+	0x8ACD, 0x8266, 0x8ACE, 0x839E, 0x8ACF, 0x89B3, 0x8AD0, 0x8ACC,
+	0x8AD1, 0x8CAB, 0x8AD2, 0x9084, 0x8AD3, 0x9451, 0x8AD4, 0x9593,
+	0x8AD5, 0x9591, 0x8AD6, 0x95A2, 0x8AD7, 0x9665, 0x8AD8, 0x97D3,
+	0x8AD9, 0x9928, 0x8ADA, 0x8218, 0x8ADB, 0x4E38, 0x8ADC, 0x542B,
+	0x8ADD, 0x5CB8, 0x8ADE, 0x5DCC, 0x8ADF, 0x73A9, 0x8AE0, 0x764C,
+	0x8AE1, 0x773C, 0x8AE2, 0x5CA9, 0x8AE3, 0x7FEB, 0x8AE4, 0x8D0B,
+	0x8AE5, 0x96C1, 0x8AE6, 0x9811, 0x8AE7, 0x9854, 0x8AE8, 0x9858,
+	0x8AE9, 0x4F01, 0x8AEA, 0x4F0E, 0x8AEB, 0x5371, 0x8AEC, 0x559C,
+	0x8AED, 0x5668, 0x8AEE, 0x57FA, 0x8AEF, 0x5947, 0x8AF0, 0x5B09,
+	0x8AF1, 0x5BC4, 0x8AF2, 0x5C90, 0x8AF3, 0x5E0C, 0x8AF4, 0x5E7E,
+	0x8AF5, 0x5FCC, 0x8AF6, 0x63EE, 0x8AF7, 0x673A, 0x8AF8, 0x65D7,
+	0x8AF9, 0x65E2, 0x8AFA, 0x671F, 0x8AFB, 0x68CB, 0x8AFC, 0x68C4,
+	0x8B40, 0x6A5F, 0x8B41, 0x5E30, 0x8B42, 0x6BC5, 0x8B43, 0x6C17,
+	0x8B44, 0x6C7D, 0x8B45, 0x757F, 0x8B46, 0x7948, 0x8B47, 0x5B63,
+	0x8B48, 0x7A00, 0x8B49, 0x7D00, 0x8B4A, 0x5FBD, 0x8B4B, 0x898F,
+	0x8B4C, 0x8A18, 0x8B4D, 0x8CB4, 0x8B4E, 0x8D77, 0x8B4F, 0x8ECC,
+	0x8B50, 0x8F1D, 0x8B51, 0x98E2, 0x8B52, 0x9A0E, 0x8B53, 0x9B3C,
+	0x8B54, 0x4E80, 0x8B55, 0x507D, 0x8B56, 0x5100, 0x8B57, 0x5993,
+	0x8B58, 0x5B9C, 0x8B59, 0x622F, 0x8B5A, 0x6280, 0x8B5B, 0x64EC,
+	0x8B5C, 0x6B3A, 0x8B5D, 0x72A0, 0x8B5E, 0x7591, 0x8B5F, 0x7947,
+	0x8B60, 0x7FA9, 0x8B61, 0x87FB, 0x8B62, 0x8ABC, 0x8B63, 0x8B70,
+	0x8B64, 0x63AC, 0x8B65, 0x83CA, 0x8B66, 0x97A0, 0x8B67, 0x5409,
+	0x8B68, 0x5403, 0x8B69, 0x55AB, 0x8B6A, 0x6854, 0x8B6B, 0x6A58,
+	0x8B6C, 0x8A70, 0x8B6D, 0x7827, 0x8B6E, 0x6775, 0x8B6F, 0x9ECD,
+	0x8B70, 0x5374, 0x8B71, 0x5BA2, 0x8B72, 0x811A, 0x8B73, 0x8650,
+	0x8B74, 0x9006, 0x8B75, 0x4E18, 0x8B76, 0x4E45, 0x8B77, 0x4EC7,
+	0x8B78, 0x4F11, 0x8B79, 0x53CA, 0x8B7A, 0x5438, 0x8B7B, 0x5BAE,
+	0x8B7C, 0x5F13, 0x8B7D, 0x6025, 0x8B7E, 0x6551, 0x8B80, 0x673D,
+	0x8B81, 0x6C42, 0x8B82, 0x6C72, 0x8B83, 0x6CE3, 0x8B84, 0x7078,
+	0x8B85, 0x7403, 0x8B86, 0x7A76, 0x8B87, 0x7AAE, 0x8B88, 0x7B08,
+	0x8B89, 0x7D1A, 0x8B8A, 0x7CFE, 0x8B8B, 0x7D66, 0x8B8C, 0x65E7,
+	0x8B8D, 0x725B, 0x8B8E, 0x53BB, 0x8B8F, 0x5C45, 0x8B90, 0x5DE8,
+	0x8B91, 0x62D2, 0x8B92, 0x62E0, 0x8B93, 0x6319, 0x8B94, 0x6E20,
+	0x8B95, 0x865A, 0x8B96, 0x8A31, 0x8B97, 0x8DDD, 0x8B98, 0x92F8,
+	0x8B99, 0x6F01, 0x8B9A, 0x79A6, 0x8B9B, 0x9B5A, 0x8B9C, 0x4EA8,
+	0x8B9D, 0x4EAB, 0x8B9E, 0x4EAC, 0x8B9F, 0x4F9B, 0x8BA0, 0x4FA0,
+	0x8BA1, 0x50D1, 0x8BA2, 0x5147, 0x8BA3, 0x7AF6, 0x8BA4, 0x5171,
+	0x8BA5, 0x51F6, 0x8BA6, 0x5354, 0x8BA7, 0x5321, 0x8BA8, 0x537F,
+	0x8BA9, 0x53EB, 0x8BAA, 0x55AC, 0x8BAB, 0x5883, 0x8BAC, 0x5CE1,
+	0x8BAD, 0x5F37, 0x8BAE, 0x5F4A, 0x8BAF, 0x602F, 0x8BB0, 0x6050,
+	0x8BB1, 0x606D, 0x8BB2, 0x631F, 0x8BB3, 0x6559, 0x8BB4, 0x6A4B,
+	0x8BB5, 0x6CC1, 0x8BB6, 0x72C2, 0x8BB7, 0x72ED, 0x8BB8, 0x77EF,
+	0x8BB9, 0x80F8, 0x8BBA, 0x8105, 0x8BBB, 0x8208, 0x8BBC, 0x854E,
+	0x8BBD, 0x90F7, 0x8BBE, 0x93E1, 0x8BBF, 0x97FF, 0x8BC0, 0x9957,
+	0x8BC1, 0x9A5A, 0x8BC2, 0x4EF0, 0x8BC3, 0x51DD, 0x8BC4, 0x5C2D,
+	0x8BC5, 0x6681, 0x8BC6, 0x696D, 0x8BC7, 0x5C40, 0x8BC8, 0x66F2,
+	0x8BC9, 0x6975, 0x8BCA, 0x7389, 0x8BCB, 0x6850, 0x8BCC, 0x7C81,
+	0x8BCD, 0x50C5, 0x8BCE, 0x52E4, 0x8BCF, 0x5747, 0x8BD0, 0x5DFE,
+	0x8BD1, 0x9326, 0x8BD2, 0x65A4, 0x8BD3, 0x6B23, 0x8BD4, 0x6B3D,
+	0x8BD5, 0x7434, 0x8BD6, 0x7981, 0x8BD7, 0x79BD, 0x8BD8, 0x7B4B,
+	0x8BD9, 0x7DCA, 0x8BDA, 0x82B9, 0x8BDB, 0x83CC, 0x8BDC, 0x887F,
+	0x8BDD, 0x895F, 0x8BDE, 0x8B39, 0x8BDF, 0x8FD1, 0x8BE0, 0x91D1,
+	0x8BE1, 0x541F, 0x8BE2, 0x9280, 0x8BE3, 0x4E5D, 0x8BE4, 0x5036,
+	0x8BE5, 0x53E5, 0x8BE6, 0x533A, 0x8BE7, 0x72D7, 0x8BE8, 0x7396,
+	0x8BE9, 0x77E9, 0x8BEA, 0x82E6, 0x8BEB, 0x8EAF, 0x8BEC, 0x99C6,
+	0x8BED, 0x99C8, 0x8BEE, 0x99D2, 0x8BEF, 0x5177, 0x8BF0, 0x611A,
+	0x8BF1, 0x865E, 0x8BF2, 0x55B0, 0x8BF3, 0x7A7A, 0x8BF4, 0x5076,
+	0x8BF5, 0x5BD3, 0x8BF6, 0x9047, 0x8BF7, 0x9685, 0x8BF8, 0x4E32,
+	0x8BF9, 0x6ADB, 0x8BFA, 0x91E7, 0x8BFB, 0x5C51, 0x8BFC, 0x5C48,
+	0x8C40, 0x6398, 0x8C41, 0x7A9F, 0x8C42, 0x6C93, 0x8C43, 0x9774,
+	0x8C44, 0x8F61, 0x8C45, 0x7AAA, 0x8C46, 0x718A, 0x8C47, 0x9688,
+	0x8C48, 0x7C82, 0x8C49, 0x6817, 0x8C4A, 0x7E70, 0x8C4B, 0x6851,
+	0x8C4C, 0x936C, 0x8C4D, 0x52F2, 0x8C4E, 0x541B, 0x8C4F, 0x85AB,
+	0x8C50, 0x8A13, 0x8C51, 0x7FA4, 0x8C52, 0x8ECD, 0x8C53, 0x90E1,
+	0x8C54, 0x5366, 0x8C55, 0x8888, 0x8C56, 0x7941, 0x8C57, 0x4FC2,
+	0x8C58, 0x50BE, 0x8C59, 0x5211, 0x8C5A, 0x5144, 0x8C5B, 0x5553,
+	0x8C5C, 0x572D, 0x8C5D, 0x73EA, 0x8C5E, 0x578B, 0x8C5F, 0x5951,
+	0x8C60, 0x5F62, 0x8C61, 0x5F84, 0x8C62, 0x6075, 0x8C63, 0x6176,
+	0x8C64, 0x6167, 0x8C65, 0x61A9, 0x8C66, 0x63B2, 0x8C67, 0x643A,
+	0x8C68, 0x656C, 0x8C69, 0x666F, 0x8C6A, 0x6842, 0x8C6B, 0x6E13,
+	0x8C6C, 0x7566, 0x8C6D, 0x7A3D, 0x8C6E, 0x7CFB, 0x8C6F, 0x7D4C,
+	0x8C70, 0x7D99, 0x8C71, 0x7E4B, 0x8C72, 0x7F6B, 0x8C73, 0x830E,
+	0x8C74, 0x834A, 0x8C75, 0x86CD, 0x8C76, 0x8A08, 0x8C77, 0x8A63,
+	0x8C78, 0x8B66, 0x8C79, 0x8EFD, 0x8C7A, 0x981A, 0x8C7B, 0x9D8F,
+	0x8C7C, 0x82B8, 0x8C7D, 0x8FCE, 0x8C7E, 0x9BE8, 0x8C80, 0x5287,
+	0x8C81, 0x621F, 0x8C82, 0x6483, 0x8C83, 0x6FC0, 0x8C84, 0x9699,
+	0x8C85, 0x6841, 0x8C86, 0x5091, 0x8C87, 0x6B20, 0x8C88, 0x6C7A,
+	0x8C89, 0x6F54, 0x8C8A, 0x7A74, 0x8C8B, 0x7D50, 0x8C8C, 0x8840,
+	0x8C8D, 0x8A23, 0x8C8E, 0x6708, 0x8C8F, 0x4EF6, 0x8C90, 0x5039,
+	0x8C91, 0x5026, 0x8C92, 0x5065, 0x8C93, 0x517C, 0x8C94, 0x5238,
+	0x8C95, 0x5263, 0x8C96, 0x55A7, 0x8C97, 0x570F, 0x8C98, 0x5805,
+	0x8C99, 0x5ACC, 0x8C9A, 0x5EFA, 0x8C9B, 0x61B2, 0x8C9C, 0x61F8,
+	0x8C9D, 0x62F3, 0x8C9E, 0x6372, 0x8C9F, 0x691C, 0x8CA0, 0x6A29,
+	0x8CA1, 0x727D, 0x8CA2, 0x72AC, 0x8CA3, 0x732E, 0x8CA4, 0x7814,
+	0x8CA5, 0x786F, 0x8CA6, 0x7D79, 0x8CA7, 0x770C, 0x8CA8, 0x80A9,
+	0x8CA9, 0x898B, 0x8CAA, 0x8B19, 0x8CAB, 0x8CE2, 0x8CAC, 0x8ED2,
+	0x8CAD, 0x9063, 0x8CAE, 0x9375, 0x8CAF, 0x967A, 0x8CB0, 0x9855,
+	0x8CB1, 0x9A13, 0x8CB2, 0x9E78, 0x8CB3, 0x5143, 0x8CB4, 0x539F,
+	0x8CB5, 0x53B3, 0x8CB6, 0x5E7B, 0x8CB7, 0x5F26, 0x8CB8, 0x6E1B,
+	0x8CB9, 0x6E90, 0x8CBA, 0x7384, 0x8CBB, 0x73FE, 0x8CBC, 0x7D43,
+	0x8CBD, 0x8237, 0x8CBE, 0x8A00, 0x8CBF, 0x8AFA, 0x8CC0, 0x9650,
+	0x8CC1, 0x4E4E, 0x8CC2, 0x500B, 0x8CC3, 0x53E4, 0x8CC4, 0x547C,
+	0x8CC5, 0x56FA, 0x8CC6, 0x59D1, 0x8CC7, 0x5B64, 0x8CC8, 0x5DF1,
+	0x8CC9, 0x5EAB, 0x8CCA, 0x5F27, 0x8CCB, 0x6238, 0x8CCC, 0x6545,
+	0x8CCD, 0x67AF, 0x8CCE, 0x6E56, 0x8CCF, 0x72D0, 0x8CD0, 0x7CCA,
+	0x8CD1, 0x88B4, 0x8CD2, 0x80A1, 0x8CD3, 0x80E1, 0x8CD4, 0x83F0,
+	0x8CD5, 0x864E, 0x8CD6, 0x8A87, 0x8CD7, 0x8DE8, 0x8CD8, 0x9237,
+	0x8CD9, 0x96C7, 0x8CDA, 0x9867, 0x8CDB, 0x9F13, 0x8CDC, 0x4E94,
+	0x8CDD, 0x4E92, 0x8CDE, 0x4F0D, 0x8CDF, 0x5348, 0x8CE0, 0x5449,
+	0x8CE1, 0x543E, 0x8CE2, 0x5A2F, 0x8CE3, 0x5F8C, 0x8CE4, 0x5FA1,
+	0x8CE5, 0x609F, 0x8CE6, 0x68A7, 0x8CE7, 0x6A8E, 0x8CE8, 0x745A,
+	0x8CE9, 0x7881, 0x8CEA, 0x8A9E, 0x8CEB, 0x8AA4, 0x8CEC, 0x8B77,
+	0x8CED, 0x9190, 0x8CEE, 0x4E5E, 0x8CEF, 0x9BC9, 0x8CF0, 0x4EA4,
+	0x8CF1, 0x4F7C, 0x8CF2, 0x4FAF, 0x8CF3, 0x5019, 0x8CF4, 0x5016,
+	0x8CF5, 0x5149, 0x8CF6, 0x516C, 0x8CF7, 0x529F, 0x8CF8, 0x52B9,
+	0x8CF9, 0x52FE, 0x8CFA, 0x539A, 0x8CFB, 0x53E3, 0x8CFC, 0x5411,
+	0x8D40, 0x540E, 0x8D41, 0x5589, 0x8D42, 0x5751, 0x8D43, 0x57A2,
+	0x8D44, 0x597D, 0x8D45, 0x5B54, 0x8D46, 0x5B5D, 0x8D47, 0x5B8F,
+	0x8D48, 0x5DE5, 0x8D49, 0x5DE7, 0x8D4A, 0x5DF7, 0x8D4B, 0x5E78,
+	0x8D4C, 0x5E83, 0x8D4D, 0x5E9A, 0x8D4E, 0x5EB7, 0x8D4F, 0x5F18,
+	0x8D50, 0x6052, 0x8D51, 0x614C, 0x8D52, 0x6297, 0x8D53, 0x62D8,
+	0x8D54, 0x63A7, 0x8D55, 0x653B, 0x8D56, 0x6602, 0x8D57, 0x6643,
+	0x8D58, 0x66F4, 0x8D59, 0x676D, 0x8D5A, 0x6821, 0x8D5B, 0x6897,
+	0x8D5C, 0x69CB, 0x8D5D, 0x6C5F, 0x8D5E, 0x6D2A, 0x8D5F, 0x6D69,
+	0x8D60, 0x6E2F, 0x8D61, 0x6E9D, 0x8D62, 0x7532, 0x8D63, 0x7687,
+	0x8D64, 0x786C, 0x8D65, 0x7A3F, 0x8D66, 0x7CE0, 0x8D67, 0x7D05,
+	0x8D68, 0x7D18, 0x8D69, 0x7D5E, 0x8D6A, 0x7DB1, 0x8D6B, 0x8015,
+	0x8D6C, 0x8003, 0x8D6D, 0x80AF, 0x8D6E, 0x80B1, 0x8D6F, 0x8154,
+	0x8D70, 0x818F, 0x8D71, 0x822A, 0x8D72, 0x8352, 0x8D73, 0x884C,
+	0x8D74, 0x8861, 0x8D75, 0x8B1B, 0x8D76, 0x8CA2, 0x8D77, 0x8CFC,
+	0x8D78, 0x90CA, 0x8D79, 0x9175, 0x8D7A, 0x9271, 0x8D7B, 0x783F,
+	0x8D7C, 0x92FC, 0x8D7D, 0x95A4, 0x8D7E, 0x964D, 0x8D80, 0x9805,
+	0x8D81, 0x9999, 0x8D82, 0x9AD8, 0x8D83, 0x9D3B, 0x8D84, 0x525B,
+	0x8D85, 0x52AB, 0x8D86, 0x53F7, 0x8D87, 0x5408, 0x8D88, 0x58D5,
+	0x8D89, 0x62F7, 0x8D8A, 0x6FE0, 0x8D8B, 0x8C6A, 0x8D8C, 0x8F5F,
+	0x8D8D, 0x9EB9, 0x8D8E, 0x514B, 0x8D8F, 0x523B, 0x8D90, 0x544A,
+	0x8D91, 0x56FD, 0x8D92, 0x7A40, 0x8D93, 0x9177, 0x8D94, 0x9D60,
+	0x8D95, 0x9ED2, 0x8D96, 0x7344, 0x8D97, 0x6F09, 0x8D98, 0x8170,
+	0x8D99, 0x7511, 0x8D9A, 0x5FFD, 0x8D9B, 0x60DA, 0x8D9C, 0x9AA8,
+	0x8D9D, 0x72DB, 0x8D9E, 0x8FBC, 0x8D9F, 0x6B64, 0x8DA0, 0x9803,
+	0x8DA1, 0x4ECA, 0x8DA2, 0x56F0, 0x8DA3, 0x5764, 0x8DA4, 0x58BE,
+	0x8DA5, 0x5A5A, 0x8DA6, 0x6068, 0x8DA7, 0x61C7, 0x8DA8, 0x660F,
+	0x8DA9, 0x6606, 0x8DAA, 0x6839, 0x8DAB, 0x68B1, 0x8DAC, 0x6DF7,
+	0x8DAD, 0x75D5, 0x8DAE, 0x7D3A, 0x8DAF, 0x826E, 0x8DB0, 0x9B42,
+	0x8DB1, 0x4E9B, 0x8DB2, 0x4F50, 0x8DB3, 0x53C9, 0x8DB4, 0x5506,
+	0x8DB5, 0x5D6F, 0x8DB6, 0x5DE6, 0x8DB7, 0x5DEE, 0x8DB8, 0x67FB,
+	0x8DB9, 0x6C99, 0x8DBA, 0x7473, 0x8DBB, 0x7802, 0x8DBC, 0x8A50,
+	0x8DBD, 0x9396, 0x8DBE, 0x88DF, 0x8DBF, 0x5750, 0x8DC0, 0x5EA7,
+	0x8DC1, 0x632B, 0x8DC2, 0x50B5, 0x8DC3, 0x50AC, 0x8DC4, 0x518D,
+	0x8DC5, 0x6700, 0x8DC6, 0x54C9, 0x8DC7, 0x585E, 0x8DC8, 0x59BB,
+	0x8DC9, 0x5BB0, 0x8DCA, 0x5F69, 0x8DCB, 0x624D, 0x8DCC, 0x63A1,
+	0x8DCD, 0x683D, 0x8DCE, 0x6B73, 0x8DCF, 0x6E08, 0x8DD0, 0x707D,
+	0x8DD1, 0x91C7, 0x8DD2, 0x7280, 0x8DD3, 0x7815, 0x8DD4, 0x7826,
+	0x8DD5, 0x796D, 0x8DD6, 0x658E, 0x8DD7, 0x7D30, 0x8DD8, 0x83DC,
+	0x8DD9, 0x88C1, 0x8DDA, 0x8F09, 0x8DDB, 0x969B, 0x8DDC, 0x5264,
+	0x8DDD, 0x5728, 0x8DDE, 0x6750, 0x8DDF, 0x7F6A, 0x8DE0, 0x8CA1,
+	0x8DE1, 0x51B4, 0x8DE2, 0x5742, 0x8DE3, 0x962A, 0x8DE4, 0x583A,
+	0x8DE5, 0x698A, 0x8DE6, 0x80B4, 0x8DE7, 0x54B2, 0x8DE8, 0x5D0E,
+	0x8DE9, 0x57FC, 0x8DEA, 0x7895, 0x8DEB, 0x9DFA, 0x8DEC, 0x4F5C,
+	0x8DED, 0x524A, 0x8DEE, 0x548B, 0x8DEF, 0x643E, 0x8DF0, 0x6628,
+	0x8DF1, 0x6714, 0x8DF2, 0x67F5, 0x8DF3, 0x7A84, 0x8DF4, 0x7B56,
+	0x8DF5, 0x7D22, 0x8DF6, 0x932F, 0x8DF7, 0x685C, 0x8DF8, 0x9BAD,
+	0x8DF9, 0x7B39, 0x8DFA, 0x5319, 0x8DFB, 0x518A, 0x8DFC, 0x5237,
+	0x8E40, 0x5BDF, 0x8E41, 0x62F6, 0x8E42, 0x64AE, 0x8E43, 0x64E6,
+	0x8E44, 0x672D, 0x8E45, 0x6BBA, 0x8E46, 0x85A9, 0x8E47, 0x96D1,
+	0x8E48, 0x7690, 0x8E49, 0x9BD6, 0x8E4A, 0x634C, 0x8E4B, 0x9306,
+	0x8E4C, 0x9BAB, 0x8E4D, 0x76BF, 0x8E4E, 0x6652, 0x8E4F, 0x4E09,
+	0x8E50, 0x5098, 0x8E51, 0x53C2, 0x8E52, 0x5C71, 0x8E53, 0x60E8,
+	0x8E54, 0x6492, 0x8E55, 0x6563, 0x8E56, 0x685F, 0x8E57, 0x71E6,
+	0x8E58, 0x73CA, 0x8E59, 0x7523, 0x8E5A, 0x7B97, 0x8E5B, 0x7E82,
+	0x8E5C, 0x8695, 0x8E5D, 0x8B83, 0x8E5E, 0x8CDB, 0x8E5F, 0x9178,
+	0x8E60, 0x9910, 0x8E61, 0x65AC, 0x8E62, 0x66AB, 0x8E63, 0x6B8B,
+	0x8E64, 0x4ED5, 0x8E65, 0x4ED4, 0x8E66, 0x4F3A, 0x8E67, 0x4F7F,
+	0x8E68, 0x523A, 0x8E69, 0x53F8, 0x8E6A, 0x53F2, 0x8E6B, 0x55E3,
+	0x8E6C, 0x56DB, 0x8E6D, 0x58EB, 0x8E6E, 0x59CB, 0x8E6F, 0x59C9,
+	0x8E70, 0x59FF, 0x8E71, 0x5B50, 0x8E72, 0x5C4D, 0x8E73, 0x5E02,
+	0x8E74, 0x5E2B, 0x8E75, 0x5FD7, 0x8E76, 0x601D, 0x8E77, 0x6307,
+	0x8E78, 0x652F, 0x8E79, 0x5B5C, 0x8E7A, 0x65AF, 0x8E7B, 0x65BD,
+	0x8E7C, 0x65E8, 0x8E7D, 0x679D, 0x8E7E, 0x6B62, 0x8E80, 0x6B7B,
+	0x8E81, 0x6C0F, 0x8E82, 0x7345, 0x8E83, 0x7949, 0x8E84, 0x79C1,
+	0x8E85, 0x7CF8, 0x8E86, 0x7D19, 0x8E87, 0x7D2B, 0x8E88, 0x80A2,
+	0x8E89, 0x8102, 0x8E8A, 0x81F3, 0x8E8B, 0x8996, 0x8E8C, 0x8A5E,
+	0x8E8D, 0x8A69, 0x8E8E, 0x8A66, 0x8E8F, 0x8A8C, 0x8E90, 0x8AEE,
+	0x8E91, 0x8CC7, 0x8E92, 0x8CDC, 0x8E93, 0x96CC, 0x8E94, 0x98FC,
+	0x8E95, 0x6B6F, 0x8E96, 0x4E8B, 0x8E97, 0x4F3C, 0x8E98, 0x4F8D,
+	0x8E99, 0x5150, 0x8E9A, 0x5B57, 0x8E9B, 0x5BFA, 0x8E9C, 0x6148,
+	0x8E9D, 0x6301, 0x8E9E, 0x6642, 0x8E9F, 0x6B21, 0x8EA0, 0x6ECB,
+	0x8EA1, 0x6CBB, 0x8EA2, 0x723E, 0x8EA3, 0x74BD, 0x8EA4, 0x75D4,
+	0x8EA5, 0x78C1, 0x8EA6, 0x793A, 0x8EA7, 0x800C, 0x8EA8, 0x8033,
+	0x8EA9, 0x81EA, 0x8EAA, 0x8494, 0x8EAB, 0x8F9E, 0x8EAC, 0x6C50,
+	0x8EAD, 0x9E7F, 0x8EAE, 0x5F0F, 0x8EAF, 0x8B58, 0x8EB0, 0x9D2B,
+	0x8EB1, 0x7AFA, 0x8EB2, 0x8EF8, 0x8EB3, 0x5B8D, 0x8EB4, 0x96EB,
+	0x8EB5, 0x4E03, 0x8EB6, 0x53F1, 0x8EB7, 0x57F7, 0x8EB8, 0x5931,
+	0x8EB9, 0x5AC9, 0x8EBA, 0x5BA4, 0x8EBB, 0x6089, 0x8EBC, 0x6E7F,
+	0x8EBD, 0x6F06, 0x8EBE, 0x75BE, 0x8EBF, 0x8CEA, 0x8EC0, 0x5B9F,
+	0x8EC1, 0x8500, 0x8EC2, 0x7BE0, 0x8EC3, 0x5072, 0x8EC4, 0x67F4,
+	0x8EC5, 0x829D, 0x8EC6, 0x5C61, 0x8EC7, 0x854A, 0x8EC8, 0x7E1E,
+	0x8EC9, 0x820E, 0x8ECA, 0x5199, 0x8ECB, 0x5C04, 0x8ECC, 0x6368,
+	0x8ECD, 0x8D66, 0x8ECE, 0x659C, 0x8ECF, 0x716E, 0x8ED0, 0x793E,
+	0x8ED1, 0x7D17, 0x8ED2, 0x8005, 0x8ED3, 0x8B1D, 0x8ED4, 0x8ECA,
+	0x8ED5, 0x906E, 0x8ED6, 0x86C7, 0x8ED7, 0x90AA, 0x8ED8, 0x501F,
+	0x8ED9, 0x52FA, 0x8EDA, 0x5C3A, 0x8EDB, 0x6753, 0x8EDC, 0x707C,
+	0x8EDD, 0x7235, 0x8EDE, 0x914C, 0x8EDF, 0x91C8, 0x8EE0, 0x932B,
+	0x8EE1, 0x82E5, 0x8EE2, 0x5BC2, 0x8EE3, 0x5F31, 0x8EE4, 0x60F9,
+	0x8EE5, 0x4E3B, 0x8EE6, 0x53D6, 0x8EE7, 0x5B88, 0x8EE8, 0x624B,
+	0x8EE9, 0x6731, 0x8EEA, 0x6B8A, 0x8EEB, 0x72E9, 0x8EEC, 0x73E0,
+	0x8EED, 0x7A2E, 0x8EEE, 0x816B, 0x8EEF, 0x8DA3, 0x8EF0, 0x9152,
+	0x8EF1, 0x9996, 0x8EF2, 0x5112, 0x8EF3, 0x53D7, 0x8EF4, 0x546A,
+	0x8EF5, 0x5BFF, 0x8EF6, 0x6388, 0x8EF7, 0x6A39, 0x8EF8, 0x7DAC,
+	0x8EF9, 0x9700, 0x8EFA, 0x56DA, 0x8EFB, 0x53CE, 0x8EFC, 0x5468,
+	0x8F40, 0x5B97, 0x8F41, 0x5C31, 0x8F42, 0x5DDE, 0x8F43, 0x4FEE,
+	0x8F44, 0x6101, 0x8F45, 0x62FE, 0x8F46, 0x6D32, 0x8F47, 0x79C0,
+	0x8F48, 0x79CB, 0x8F49, 0x7D42, 0x8F4A, 0x7E4D, 0x8F4B, 0x7FD2,
+	0x8F4C, 0x81ED, 0x8F4D, 0x821F, 0x8F4E, 0x8490, 0x8F4F, 0x8846,
+	0x8F50, 0x8972, 0x8F51, 0x8B90, 0x8F52, 0x8E74, 0x8F53, 0x8F2F,
+	0x8F54, 0x9031, 0x8F55, 0x914B, 0x8F56, 0x916C, 0x8F57, 0x96C6,
+	0x8F58, 0x919C, 0x8F59, 0x4EC0, 0x8F5A, 0x4F4F, 0x8F5B, 0x5145,
+	0x8F5C, 0x5341, 0x8F5D, 0x5F93, 0x8F5E, 0x620E, 0x8F5F, 0x67D4,
+	0x8F60, 0x6C41, 0x8F61, 0x6E0B, 0x8F62, 0x7363, 0x8F63, 0x7E26,
+	0x8F64, 0x91CD, 0x8F65, 0x9283, 0x8F66, 0x53D4, 0x8F67, 0x5919,
+	0x8F68, 0x5BBF, 0x8F69, 0x6DD1, 0x8F6A, 0x795D, 0x8F6B, 0x7E2E,
+	0x8F6C, 0x7C9B, 0x8F6D, 0x587E, 0x8F6E, 0x719F, 0x8F6F, 0x51FA,
+	0x8F70, 0x8853, 0x8F71, 0x8FF0, 0x8F72, 0x4FCA, 0x8F73, 0x5CFB,
+	0x8F74, 0x6625, 0x8F75, 0x77AC, 0x8F76, 0x7AE3, 0x8F77, 0x821C,
+	0x8F78, 0x99FF, 0x8F79, 0x51C6, 0x8F7A, 0x5FAA, 0x8F7B, 0x65EC,
+	0x8F7C, 0x696F, 0x8F7D, 0x6B89, 0x8F7E, 0x6DF3, 0x8F80, 0x6E96,
+	0x8F81, 0x6F64, 0x8F82, 0x76FE, 0x8F83, 0x7D14, 0x8F84, 0x5DE1,
+	0x8F85, 0x9075, 0x8F86, 0x9187, 0x8F87, 0x9806, 0x8F88, 0x51E6,
+	0x8F89, 0x521D, 0x8F8A, 0x6240, 0x8F8B, 0x6691, 0x8F8C, 0x66D9,
+	0x8F8D, 0x6E1A, 0x8F8E, 0x5EB6, 0x8F8F, 0x7DD2, 0x8F90, 0x7F72,
+	0x8F91, 0x66F8, 0x8F92, 0x85AF, 0x8F93, 0x85F7, 0x8F94, 0x8AF8,
+	0x8F95, 0x52A9, 0x8F96, 0x53D9, 0x8F97, 0x5973, 0x8F98, 0x5E8F,
+	0x8F99, 0x5F90, 0x8F9A, 0x6055, 0x8F9B, 0x92E4, 0x8F9C, 0x9664,
+	0x8F9D, 0x50B7, 0x8F9E, 0x511F, 0x8F9F, 0x52DD, 0x8FA0, 0x5320,
+	0x8FA1, 0x5347, 0x8FA2, 0x53EC, 0x8FA3, 0x54E8, 0x8FA4, 0x5546,
+	0x8FA5, 0x5531, 0x8FA6, 0x5617, 0x8FA7, 0x5968, 0x8FA8, 0x59BE,
+	0x8FA9, 0x5A3C, 0x8FAA, 0x5BB5, 0x8FAB, 0x5C06, 0x8FAC, 0x5C0F,
+	0x8FAD, 0x5C11, 0x8FAE, 0x5C1A, 0x8FAF, 0x5E84, 0x8FB0, 0x5E8A,
+	0x8FB1, 0x5EE0, 0x8FB2, 0x5F70, 0x8FB3, 0x627F, 0x8FB4, 0x6284,
+	0x8FB5, 0x62DB, 0x8FB6, 0x638C, 0x8FB7, 0x6377, 0x8FB8, 0x6607,
+	0x8FB9, 0x660C, 0x8FBA, 0x662D, 0x8FBB, 0x6676, 0x8FBC, 0x677E,
+	0x8FBD, 0x68A2, 0x8FBE, 0x6A1F, 0x8FBF, 0x6A35, 0x8FC0, 0x6CBC,
+	0x8FC1, 0x6D88, 0x8FC2, 0x6E09, 0x8FC3, 0x6E58, 0x8FC4, 0x713C,
+	0x8FC5, 0x7126, 0x8FC6, 0x7167, 0x8FC7, 0x75C7, 0x8FC8, 0x7701,
+	0x8FC9, 0x785D, 0x8FCA, 0x7901, 0x8FCB, 0x7965, 0x8FCC, 0x79F0,
+	0x8FCD, 0x7AE0, 0x8FCE, 0x7B11, 0x8FCF, 0x7CA7, 0x8FD0, 0x7D39,
+	0x8FD1, 0x8096, 0x8FD2, 0x83D6, 0x8FD3, 0x848B, 0x8FD4, 0x8549,
+	0x8FD5, 0x885D, 0x8FD6, 0x88F3, 0x8FD7, 0x8A1F, 0x8FD8, 0x8A3C,
+	0x8FD9, 0x8A54, 0x8FDA, 0x8A73, 0x8FDB, 0x8C61, 0x8FDC, 0x8CDE,
+	0x8FDD, 0x91A4, 0x8FDE, 0x9266, 0x8FDF, 0x937E, 0x8FE0, 0x9418,
+	0x8FE1, 0x969C, 0x8FE2, 0x9798, 0x8FE3, 0x4E0A, 0x8FE4, 0x4E08,
+	0x8FE5, 0x4E1E, 0x8FE6, 0x4E57, 0x8FE7, 0x5197, 0x8FE8, 0x5270,
+	0x8FE9, 0x57CE, 0x8FEA, 0x5834, 0x8FEB, 0x58CC, 0x8FEC, 0x5B22,
+	0x8FED, 0x5E38, 0x8FEE, 0x60C5, 0x8FEF, 0x64FE, 0x8FF0, 0x6761,
+	0x8FF1, 0x6756, 0x8FF2, 0x6D44, 0x8FF3, 0x72B6, 0x8FF4, 0x7573,
+	0x8FF5, 0x7A63, 0x8FF6, 0x84B8, 0x8FF7, 0x8B72, 0x8FF8, 0x91B8,
+	0x8FF9, 0x9320, 0x8FFA, 0x5631, 0x8FFB, 0x57F4, 0x8FFC, 0x98FE,
+	0x9040, 0x62ED, 0x9041, 0x690D, 0x9042, 0x6B96, 0x9043, 0x71ED,
+	0x9044, 0x7E54, 0x9045, 0x8077, 0x9046, 0x8272, 0x9047, 0x89E6,
+	0x9048, 0x98DF, 0x9049, 0x8755, 0x904A, 0x8FB1, 0x904B, 0x5C3B,
+	0x904C, 0x4F38, 0x904D, 0x4FE1, 0x904E, 0x4FB5, 0x904F, 0x5507,
+	0x9050, 0x5A20, 0x9051, 0x5BDD, 0x9052, 0x5BE9, 0x9053, 0x5FC3,
+	0x9054, 0x614E, 0x9055, 0x632F, 0x9056, 0x65B0, 0x9057, 0x664B,
+	0x9058, 0x68EE, 0x9059, 0x699B, 0x905A, 0x6D78, 0x905B, 0x6DF1,
+	0x905C, 0x7533, 0x905D, 0x75B9, 0x905E, 0x771F, 0x905F, 0x795E,
+	0x9060, 0x79E6, 0x9061, 0x7D33, 0x9062, 0x81E3, 0x9063, 0x82AF,
+	0x9064, 0x85AA, 0x9065, 0x89AA, 0x9066, 0x8A3A, 0x9067, 0x8EAB,
+	0x9068, 0x8F9B, 0x9069, 0x9032, 0x906A, 0x91DD, 0x906B, 0x9707,
+	0x906C, 0x4EBA, 0x906D, 0x4EC1, 0x906E, 0x5203, 0x906F, 0x5875,
+	0x9070, 0x58EC, 0x9071, 0x5C0B, 0x9072, 0x751A, 0x9073, 0x5C3D,
+	0x9074, 0x814E, 0x9075, 0x8A0A, 0x9076, 0x8FC5, 0x9077, 0x9663,
+	0x9078, 0x976D, 0x9079, 0x7B25, 0x907A, 0x8ACF, 0x907B, 0x9808,
+	0x907C, 0x9162, 0x907D, 0x56F3, 0x907E, 0x53A8, 0x9080, 0x9017,
+	0x9081, 0x5439, 0x9082, 0x5782, 0x9083, 0x5E25, 0x9084, 0x63A8,
+	0x9085, 0x6C34, 0x9086, 0x708A, 0x9087, 0x7761, 0x9088, 0x7C8B,
+	0x9089, 0x7FE0, 0x908A, 0x8870, 0x908B, 0x9042, 0x908C, 0x9154,
+	0x908D, 0x9310, 0x908E, 0x9318, 0x908F, 0x968F, 0x9090, 0x745E,
+	0x9091, 0x9AC4, 0x9092, 0x5D07, 0x9093, 0x5D69, 0x9094, 0x6570,
+	0x9095, 0x67A2, 0x9096, 0x8DA8, 0x9097, 0x96DB, 0x9098, 0x636E,
+	0x9099, 0x6749, 0x909A, 0x6919, 0x909B, 0x83C5, 0x909C, 0x9817,
+	0x909D, 0x96C0, 0x909E, 0x88FE, 0x909F, 0x6F84, 0x90A0, 0x647A,
+	0x90A1, 0x5BF8, 0x90A2, 0x4E16, 0x90A3, 0x702C, 0x90A4, 0x755D,
+	0x90A5, 0x662F, 0x90A6, 0x51C4, 0x90A7, 0x5236, 0x90A8, 0x52E2,
+	0x90A9, 0x59D3, 0x90AA, 0x5F81, 0x90AB, 0x6027, 0x90AC, 0x6210,
+	0x90AD, 0x653F, 0x90AE, 0x6574, 0x90AF, 0x661F, 0x90B0, 0x6674,
+	0x90B1, 0x68F2, 0x90B2, 0x6816, 0x90B3, 0x6B63, 0x90B4, 0x6E05,
+	0x90B5, 0x7272, 0x90B6, 0x751F, 0x90B7, 0x76DB, 0x90B8, 0x7CBE,
+	0x90B9, 0x8056, 0x90BA, 0x58F0, 0x90BB, 0x88FD, 0x90BC, 0x897F,
+	0x90BD, 0x8AA0, 0x90BE, 0x8A93, 0x90BF, 0x8ACB, 0x90C0, 0x901D,
+	0x90C1, 0x9192, 0x90C2, 0x9752, 0x90C3, 0x9759, 0x90C4, 0x6589,
+	0x90C5, 0x7A0E, 0x90C6, 0x8106, 0x90C7, 0x96BB, 0x90C8, 0x5E2D,
+	0x90C9, 0x60DC, 0x90CA, 0x621A, 0x90CB, 0x65A5, 0x90CC, 0x6614,
+	0x90CD, 0x6790, 0x90CE, 0x77F3, 0x90CF, 0x7A4D, 0x90D0, 0x7C4D,
+	0x90D1, 0x7E3E, 0x90D2, 0x810A, 0x90D3, 0x8CAC, 0x90D4, 0x8D64,
+	0x90D5, 0x8DE1, 0x90D6, 0x8E5F, 0x90D7, 0x78A9, 0x90D8, 0x5207,
+	0x90D9, 0x62D9, 0x90DA, 0x63A5, 0x90DB, 0x6442, 0x90DC, 0x6298,
+	0x90DD, 0x8A2D, 0x90DE, 0x7A83, 0x90DF, 0x7BC0, 0x90E0, 0x8AAC,
+	0x90E1, 0x96EA, 0x90E2, 0x7D76, 0x90E3, 0x820C, 0x90E4, 0x8749,
+	0x90E5, 0x4ED9, 0x90E6, 0x5148, 0x90E7, 0x5343, 0x90E8, 0x5360,
+	0x90E9, 0x5BA3, 0x90EA, 0x5C02, 0x90EB, 0x5C16, 0x90EC, 0x5DDD,
+	0x90ED, 0x6226, 0x90EE, 0x6247, 0x90EF, 0x64B0, 0x90F0, 0x6813,
+	0x90F1, 0x6834, 0x90F2, 0x6CC9, 0x90F3, 0x6D45, 0x90F4, 0x6D17,
+	0x90F5, 0x67D3, 0x90F6, 0x6F5C, 0x90F7, 0x714E, 0x90F8, 0x717D,
+	0x90F9, 0x65CB, 0x90FA, 0x7A7F, 0x90FB, 0x7BAD, 0x90FC, 0x7DDA,
+	0x9140, 0x7E4A, 0x9141, 0x7FA8, 0x9142, 0x817A, 0x9143, 0x821B,
+	0x9144, 0x8239, 0x9145, 0x85A6, 0x9146, 0x8A6E, 0x9147, 0x8CCE,
+	0x9148, 0x8DF5, 0x9149, 0x9078, 0x914A, 0x9077, 0x914B, 0x92AD,
+	0x914C, 0x9291, 0x914D, 0x9583, 0x914E, 0x9BAE, 0x914F, 0x524D,
+	0x9150, 0x5584, 0x9151, 0x6F38, 0x9152, 0x7136, 0x9153, 0x5168,
+	0x9154, 0x7985, 0x9155, 0x7E55, 0x9156, 0x81B3, 0x9157, 0x7CCE,
+	0x9158, 0x564C, 0x9159, 0x5851, 0x915A, 0x5CA8, 0x915B, 0x63AA,
+	0x915C, 0x66FE, 0x915D, 0x66FD, 0x915E, 0x695A, 0x915F, 0x72D9,
+	0x9160, 0x758F, 0x9161, 0x758E, 0x9162, 0x790E, 0x9163, 0x7956,
+	0x9164, 0x79DF, 0x9165, 0x7C97, 0x9166, 0x7D20, 0x9167, 0x7D44,
+	0x9168, 0x8607, 0x9169, 0x8A34, 0x916A, 0x963B, 0x916B, 0x9061,
+	0x916C, 0x9F20, 0x916D, 0x50E7, 0x916E, 0x5275, 0x916F, 0x53CC,
+	0x9170, 0x53E2, 0x9171, 0x5009, 0x9172, 0x55AA, 0x9173, 0x58EE,
+	0x9174, 0x594F, 0x9175, 0x723D, 0x9176, 0x5B8B, 0x9177, 0x5C64,
+	0x9178, 0x531D, 0x9179, 0x60E3, 0x917A, 0x60F3, 0x917B, 0x635C,
+	0x917C, 0x6383, 0x917D, 0x633F, 0x917E, 0x63BB, 0x9180, 0x64CD,
+	0x9181, 0x65E9, 0x9182, 0x66F9, 0x9183, 0x5DE3, 0x9184, 0x69CD,
+	0x9185, 0x69FD, 0x9186, 0x6F15, 0x9187, 0x71E5, 0x9188, 0x4E89,
+	0x9189, 0x75E9, 0x918A, 0x76F8, 0x918B, 0x7A93, 0x918C, 0x7CDF,
+	0x918D, 0x7DCF, 0x918E, 0x7D9C, 0x918F, 0x8061, 0x9190, 0x8349,
+	0x9191, 0x8358, 0x9192, 0x846C, 0x9193, 0x84BC, 0x9194, 0x85FB,
+	0x9195, 0x88C5, 0x9196, 0x8D70, 0x9197, 0x9001, 0x9198, 0x906D,
+	0x9199, 0x9397, 0x919A, 0x971C, 0x919B, 0x9A12, 0x919C, 0x50CF,
+	0x919D, 0x5897, 0x919E, 0x618E, 0x919F, 0x81D3, 0x91A0, 0x8535,
+	0x91A1, 0x8D08, 0x91A2, 0x9020, 0x91A3, 0x4FC3, 0x91A4, 0x5074,
+	0x91A5, 0x5247, 0x91A6, 0x5373, 0x91A7, 0x606F, 0x91A8, 0x6349,
+	0x91A9, 0x675F, 0x91AA, 0x6E2C, 0x91AB, 0x8DB3, 0x91AC, 0x901F,
+	0x91AD, 0x4FD7, 0x91AE, 0x5C5E, 0x91AF, 0x8CCA, 0x91B0, 0x65CF,
+	0x91B1, 0x7D9A, 0x91B2, 0x5352, 0x91B3, 0x8896, 0x91B4, 0x5176,
+	0x91B5, 0x63C3, 0x91B6, 0x5B58, 0x91B7, 0x5B6B, 0x91B8, 0x5C0A,
+	0x91B9, 0x640D, 0x91BA, 0x6751, 0x91BB, 0x905C, 0x91BC, 0x4ED6,
+	0x91BD, 0x591A, 0x91BE, 0x592A, 0x91BF, 0x6C70, 0x91C0, 0x8A51,
+	0x91C1, 0x553E, 0x91C2, 0x5815, 0x91C3, 0x59A5, 0x91C4, 0x60F0,
+	0x91C5, 0x6253, 0x91C6, 0x67C1, 0x91C7, 0x8235, 0x91C8, 0x6955,
+	0x91C9, 0x9640, 0x91CA, 0x99C4, 0x91CB, 0x9A28, 0x91CC, 0x4F53,
+	0x91CD, 0x5806, 0x91CE, 0x5BFE, 0x91CF, 0x8010, 0x91D0, 0x5CB1,
+	0x91D1, 0x5E2F, 0x91D2, 0x5F85, 0x91D3, 0x6020, 0x91D4, 0x614B,
+	0x91D5, 0x6234, 0x91D6, 0x66FF, 0x91D7, 0x6CF0, 0x91D8, 0x6EDE,
+	0x91D9, 0x80CE, 0x91DA, 0x817F, 0x91DB, 0x82D4, 0x91DC, 0x888B,
+	0x91DD, 0x8CB8, 0x91DE, 0x9000, 0x91DF, 0x902E, 0x91E0, 0x968A,
+	0x91E1, 0x9EDB, 0x91E2, 0x9BDB, 0x91E3, 0x4EE3, 0x91E4, 0x53F0,
+	0x91E5, 0x5927, 0x91E6, 0x7B2C, 0x91E7, 0x918D, 0x91E8, 0x984C,
+	0x91E9, 0x9DF9, 0x91EA, 0x6EDD, 0x91EB, 0x7027, 0x91EC, 0x5353,
+	0x91ED, 0x5544, 0x91EE, 0x5B85, 0x91EF, 0x6258, 0x91F0, 0x629E,
+	0x91F1, 0x62D3, 0x91F2, 0x6CA2, 0x91F3, 0x6FEF, 0x91F4, 0x7422,
+	0x91F5, 0x8A17, 0x91F6, 0x9438, 0x91F7, 0x6FC1, 0x91F8, 0x8AFE,
+	0x91F9, 0x8338, 0x91FA, 0x51E7, 0x91FB, 0x86F8, 0x91FC, 0x53EA,
+	0x9240, 0x53E9, 0x9241, 0x4F46, 0x9242, 0x9054, 0x9243, 0x8FB0,
+	0x9244, 0x596A, 0x9245, 0x8131, 0x9246, 0x5DFD, 0x9247, 0x7AEA,
+	0x9248, 0x8FBF, 0x9249, 0x68DA, 0x924A, 0x8C37, 0x924B, 0x72F8,
+	0x924C, 0x9C48, 0x924D, 0x6A3D, 0x924E, 0x8AB0, 0x924F, 0x4E39,
+	0x9250, 0x5358, 0x9251, 0x5606, 0x9252, 0x5766, 0x9253, 0x62C5,
+	0x9254, 0x63A2, 0x9255, 0x65E6, 0x9256, 0x6B4E, 0x9257, 0x6DE1,
+	0x9258, 0x6E5B, 0x9259, 0x70AD, 0x925A, 0x77ED, 0x925B, 0x7AEF,
+	0x925C, 0x7BAA, 0x925D, 0x7DBB, 0x925E, 0x803D, 0x925F, 0x80C6,
+	0x9260, 0x86CB, 0x9261, 0x8A95, 0x9262, 0x935B, 0x9263, 0x56E3,
+	0x9264, 0x58C7, 0x9265, 0x5F3E, 0x9266, 0x65AD, 0x9267, 0x6696,
+	0x9268, 0x6A80, 0x9269, 0x6BB5, 0x926A, 0x7537, 0x926B, 0x8AC7,
+	0x926C, 0x5024, 0x926D, 0x77E5, 0x926E, 0x5730, 0x926F, 0x5F1B,
+	0x9270, 0x6065, 0x9271, 0x667A, 0x9272, 0x6C60, 0x9273, 0x75F4,
+	0x9274, 0x7A1A, 0x9275, 0x7F6E, 0x9276, 0x81F4, 0x9277, 0x8718,
+	0x9278, 0x9045, 0x9279, 0x99B3, 0x927A, 0x7BC9, 0x927B, 0x755C,
+	0x927C, 0x7AF9, 0x927D, 0x7B51, 0x927E, 0x84C4, 0x9280, 0x9010,
+	0x9281, 0x79E9, 0x9282, 0x7A92, 0x9283, 0x8336, 0x9284, 0x5AE1,
+	0x9285, 0x7740, 0x9286, 0x4E2D, 0x9287, 0x4EF2, 0x9288, 0x5B99,
+	0x9289, 0x5FE0, 0x928A, 0x62BD, 0x928B, 0x663C, 0x928C, 0x67F1,
+	0x928D, 0x6CE8, 0x928E, 0x866B, 0x928F, 0x8877, 0x9290, 0x8A3B,
+	0x9291, 0x914E, 0x9292, 0x92F3, 0x9293, 0x99D0, 0x9294, 0x6A17,
+	0x9295, 0x7026, 0x9296, 0x732A, 0x9297, 0x82E7, 0x9298, 0x8457,
+	0x9299, 0x8CAF, 0x929A, 0x4E01, 0x929B, 0x5146, 0x929C, 0x51CB,
+	0x929D, 0x558B, 0x929E, 0x5BF5, 0x929F, 0x5E16, 0x92A0, 0x5E33,
+	0x92A1, 0x5E81, 0x92A2, 0x5F14, 0x92A3, 0x5F35, 0x92A4, 0x5F6B,
+	0x92A5, 0x5FB4, 0x92A6, 0x61F2, 0x92A7, 0x6311, 0x92A8, 0x66A2,
+	0x92A9, 0x671D, 0x92AA, 0x6F6E, 0x92AB, 0x7252, 0x92AC, 0x753A,
+	0x92AD, 0x773A, 0x92AE, 0x8074, 0x92AF, 0x8139, 0x92B0, 0x8178,
+	0x92B1, 0x8776, 0x92B2, 0x8ABF, 0x92B3, 0x8ADC, 0x92B4, 0x8D85,
+	0x92B5, 0x8DF3, 0x92B6, 0x929A, 0x92B7, 0x9577, 0x92B8, 0x9802,
+	0x92B9, 0x9CE5, 0x92BA, 0x52C5, 0x92BB, 0x6357, 0x92BC, 0x76F4,
+	0x92BD, 0x6715, 0x92BE, 0x6C88, 0x92BF, 0x73CD, 0x92C0, 0x8CC3,
+	0x92C1, 0x93AE, 0x92C2, 0x9673, 0x92C3, 0x6D25, 0x92C4, 0x589C,
+	0x92C5, 0x690E, 0x92C6, 0x69CC, 0x92C7, 0x8FFD, 0x92C8, 0x939A,
+	0x92C9, 0x75DB, 0x92CA, 0x901A, 0x92CB, 0x585A, 0x92CC, 0x6802,
+	0x92CD, 0x63B4, 0x92CE, 0x69FB, 0x92CF, 0x4F43, 0x92D0, 0x6F2C,
+	0x92D1, 0x67D8, 0x92D2, 0x8FBB, 0x92D3, 0x8526, 0x92D4, 0x7DB4,
+	0x92D5, 0x9354, 0x92D6, 0x693F, 0x92D7, 0x6F70, 0x92D8, 0x576A,
+	0x92D9, 0x58F7, 0x92DA, 0x5B2C, 0x92DB, 0x7D2C, 0x92DC, 0x722A,
+	0x92DD, 0x540A, 0x92DE, 0x91E3, 0x92DF, 0x9DB4, 0x92E0, 0x4EAD,
+	0x92E1, 0x4F4E, 0x92E2, 0x505C, 0x92E3, 0x5075, 0x92E4, 0x5243,
+	0x92E5, 0x8C9E, 0x92E6, 0x5448, 0x92E7, 0x5824, 0x92E8, 0x5B9A,
+	0x92E9, 0x5E1D, 0x92EA, 0x5E95, 0x92EB, 0x5EAD, 0x92EC, 0x5EF7,
+	0x92ED, 0x5F1F, 0x92EE, 0x608C, 0x92EF, 0x62B5, 0x92F0, 0x633A,
+	0x92F1, 0x63D0, 0x92F2, 0x68AF, 0x92F3, 0x6C40, 0x92F4, 0x7887,
+	0x92F5, 0x798E, 0x92F6, 0x7A0B, 0x92F7, 0x7DE0, 0x92F8, 0x8247,
+	0x92F9, 0x8A02, 0x92FA, 0x8AE6, 0x92FB, 0x8E44, 0x92FC, 0x9013,
+	0x9340, 0x90B8, 0x9341, 0x912D, 0x9342, 0x91D8, 0x9343, 0x9F0E,
+	0x9344, 0x6CE5, 0x9345, 0x6458, 0x9346, 0x64E2, 0x9347, 0x6575,
+	0x9348, 0x6EF4, 0x9349, 0x7684, 0x934A, 0x7B1B, 0x934B, 0x9069,
+	0x934C, 0x93D1, 0x934D, 0x6EBA, 0x934E, 0x54F2, 0x934F, 0x5FB9,
+	0x9350, 0x64A4, 0x9351, 0x8F4D, 0x9352, 0x8FED, 0x9353, 0x9244,
+	0x9354, 0x5178, 0x9355, 0x586B, 0x9356, 0x5929, 0x9357, 0x5C55,
+	0x9358, 0x5E97, 0x9359, 0x6DFB, 0x935A, 0x7E8F, 0x935B, 0x751C,
+	0x935C, 0x8CBC, 0x935D, 0x8EE2, 0x935E, 0x985B, 0x935F, 0x70B9,
+	0x9360, 0x4F1D, 0x9361, 0x6BBF, 0x9362, 0x6FB1, 0x9363, 0x7530,
+	0x9364, 0x96FB, 0x9365, 0x514E, 0x9366, 0x5410, 0x9367, 0x5835,
+	0x9368, 0x5857, 0x9369, 0x59AC, 0x936A, 0x5C60, 0x936B, 0x5F92,
+	0x936C, 0x6597, 0x936D, 0x675C, 0x936E, 0x6E21, 0x936F, 0x767B,
+	0x9370, 0x83DF, 0x9371, 0x8CED, 0x9372, 0x9014, 0x9373, 0x90FD,
+	0x9374, 0x934D, 0x9375, 0x7825, 0x9376, 0x783A, 0x9377, 0x52AA,
+	0x9378, 0x5EA6, 0x9379, 0x571F, 0x937A, 0x5974, 0x937B, 0x6012,
+	0x937C, 0x5012, 0x937D, 0x515A, 0x937E, 0x51AC, 0x9380, 0x51CD,
+	0x9381, 0x5200, 0x9382, 0x5510, 0x9383, 0x5854, 0x9384, 0x5858,
+	0x9385, 0x5957, 0x9386, 0x5B95, 0x9387, 0x5CF6, 0x9388, 0x5D8B,
+	0x9389, 0x60BC, 0x938A, 0x6295, 0x938B, 0x642D, 0x938C, 0x6771,
+	0x938D, 0x6843, 0x938E, 0x68BC, 0x938F, 0x68DF, 0x9390, 0x76D7,
+	0x9391, 0x6DD8, 0x9392, 0x6E6F, 0x9393, 0x6D9B, 0x9394, 0x706F,
+	0x9395, 0x71C8, 0x9396, 0x5F53, 0x9397, 0x75D8, 0x9398, 0x7977,
+	0x9399, 0x7B49, 0x939A, 0x7B54, 0x939B, 0x7B52, 0x939C, 0x7CD6,
+	0x939D, 0x7D71, 0x939E, 0x5230, 0x939F, 0x8463, 0x93A0, 0x8569,
+	0x93A1, 0x85E4, 0x93A2, 0x8A0E, 0x93A3, 0x8B04, 0x93A4, 0x8C46,
+	0x93A5, 0x8E0F, 0x93A6, 0x9003, 0x93A7, 0x900F, 0x93A8, 0x9419,
+	0x93A9, 0x9676, 0x93AA, 0x982D, 0x93AB, 0x9A30, 0x93AC, 0x95D8,
+	0x93AD, 0x50CD, 0x93AE, 0x52D5, 0x93AF, 0x540C, 0x93B0, 0x5802,
+	0x93B1, 0x5C0E, 0x93B2, 0x61A7, 0x93B3, 0x649E, 0x93B4, 0x6D1E,
+	0x93B5, 0x77B3, 0x93B6, 0x7AE5, 0x93B7, 0x80F4, 0x93B8, 0x8404,
+	0x93B9, 0x9053, 0x93BA, 0x9285, 0x93BB, 0x5CE0, 0x93BC, 0x9D07,
+	0x93BD, 0x533F, 0x93BE, 0x5F97, 0x93BF, 0x5FB3, 0x93C0, 0x6D9C,
+	0x93C1, 0x7279, 0x93C2, 0x7763, 0x93C3, 0x79BF, 0x93C4, 0x7BE4,
+	0x93C5, 0x6BD2, 0x93C6, 0x72EC, 0x93C7, 0x8AAD, 0x93C8, 0x6803,
+	0x93C9, 0x6A61, 0x93CA, 0x51F8, 0x93CB, 0x7A81, 0x93CC, 0x6934,
+	0x93CD, 0x5C4A, 0x93CE, 0x9CF6, 0x93CF, 0x82EB, 0x93D0, 0x5BC5,
+	0x93D1, 0x9149, 0x93D2, 0x701E, 0x93D3, 0x5678, 0x93D4, 0x5C6F,
+	0x93D5, 0x60C7, 0x93D6, 0x6566, 0x93D7, 0x6C8C, 0x93D8, 0x8C5A,
+	0x93D9, 0x9041, 0x93DA, 0x9813, 0x93DB, 0x5451, 0x93DC, 0x66C7,
+	0x93DD, 0x920D, 0x93DE, 0x5948, 0x93DF, 0x90A3, 0x93E0, 0x5185,
+	0x93E1, 0x4E4D, 0x93E2, 0x51EA, 0x93E3, 0x8599, 0x93E4, 0x8B0E,
+	0x93E5, 0x7058, 0x93E6, 0x637A, 0x93E7, 0x934B, 0x93E8, 0x6962,
+	0x93E9, 0x99B4, 0x93EA, 0x7E04, 0x93EB, 0x7577, 0x93EC, 0x5357,
+	0x93ED, 0x6960, 0x93EE, 0x8EDF, 0x93EF, 0x96E3, 0x93F0, 0x6C5D,
+	0x93F1, 0x4E8C, 0x93F2, 0x5C3C, 0x93F3, 0x5F10, 0x93F4, 0x8FE9,
+	0x93F5, 0x5302, 0x93F6, 0x8CD1, 0x93F7, 0x8089, 0x93F8, 0x8679,
+	0x93F9, 0x5EFF, 0x93FA, 0x65E5, 0x93FB, 0x4E73, 0x93FC, 0x5165,
+	0x9440, 0x5982, 0x9441, 0x5C3F, 0x9442, 0x97EE, 0x9443, 0x4EFB,
+	0x9444, 0x598A, 0x9445, 0x5FCD, 0x9446, 0x8A8D, 0x9447, 0x6FE1,
+	0x9448, 0x79B0, 0x9449, 0x7962, 0x944A, 0x5BE7, 0x944B, 0x8471,
+	0x944C, 0x732B, 0x944D, 0x71B1, 0x944E, 0x5E74, 0x944F, 0x5FF5,
+	0x9450, 0x637B, 0x9451, 0x649A, 0x9452, 0x71C3, 0x9453, 0x7C98,
+	0x9454, 0x4E43, 0x9455, 0x5EFC, 0x9456, 0x4E4B, 0x9457, 0x57DC,
+	0x9458, 0x56A2, 0x9459, 0x60A9, 0x945A, 0x6FC3, 0x945B, 0x7D0D,
+	0x945C, 0x80FD, 0x945D, 0x8133, 0x945E, 0x81BF, 0x945F, 0x8FB2,
+	0x9460, 0x8997, 0x9461, 0x86A4, 0x9462, 0x5DF4, 0x9463, 0x628A,
+	0x9464, 0x64AD, 0x9465, 0x8987, 0x9466, 0x6777, 0x9467, 0x6CE2,
+	0x9468, 0x6D3E, 0x9469, 0x7436, 0x946A, 0x7834, 0x946B, 0x5A46,
+	0x946C, 0x7F75, 0x946D, 0x82AD, 0x946E, 0x99AC, 0x946F, 0x4FF3,
+	0x9470, 0x5EC3, 0x9471, 0x62DD, 0x9472, 0x6392, 0x9473, 0x6557,
+	0x9474, 0x676F, 0x9475, 0x76C3, 0x9476, 0x724C, 0x9477, 0x80CC,
+	0x9478, 0x80BA, 0x9479, 0x8F29, 0x947A, 0x914D, 0x947B, 0x500D,
+	0x947C, 0x57F9, 0x947D, 0x5A92, 0x947E, 0x6885, 0x9480, 0x6973,
+	0x9481, 0x7164, 0x9482, 0x72FD, 0x9483, 0x8CB7, 0x9484, 0x58F2,
+	0x9485, 0x8CE0, 0x9486, 0x966A, 0x9487, 0x9019, 0x9488, 0x877F,
+	0x9489, 0x79E4, 0x948A, 0x77E7, 0x948B, 0x8429, 0x948C, 0x4F2F,
+	0x948D, 0x5265, 0x948E, 0x535A, 0x948F, 0x62CD, 0x9490, 0x67CF,
+	0x9491, 0x6CCA, 0x9492, 0x767D, 0x9493, 0x7B94, 0x9494, 0x7C95,
+	0x9495, 0x8236, 0x9496, 0x8584, 0x9497, 0x8FEB, 0x9498, 0x66DD,
+	0x9499, 0x6F20, 0x949A, 0x7206, 0x949B, 0x7E1B, 0x949C, 0x83AB,
+	0x949D, 0x99C1, 0x949E, 0x9EA6, 0x949F, 0x51FD, 0x94A0, 0x7BB1,
+	0x94A1, 0x7872, 0x94A2, 0x7BB8, 0x94A3, 0x8087, 0x94A4, 0x7B48,
+	0x94A5, 0x6AE8, 0x94A6, 0x5E61, 0x94A7, 0x808C, 0x94A8, 0x7551,
+	0x94A9, 0x7560, 0x94AA, 0x516B, 0x94AB, 0x9262, 0x94AC, 0x6E8C,
+	0x94AD, 0x767A, 0x94AE, 0x9197, 0x94AF, 0x9AEA, 0x94B0, 0x4F10,
+	0x94B1, 0x7F70, 0x94B2, 0x629C, 0x94B3, 0x7B4F, 0x94B4, 0x95A5,
+	0x94B5, 0x9CE9, 0x94B6, 0x567A, 0x94B7, 0x5859, 0x94B8, 0x86E4,
+	0x94B9, 0x96BC, 0x94BA, 0x4F34, 0x94BB, 0x5224, 0x94BC, 0x534A,
+	0x94BD, 0x53CD, 0x94BE, 0x53DB, 0x94BF, 0x5E06, 0x94C0, 0x642C,
+	0x94C1, 0x6591, 0x94C2, 0x677F, 0x94C3, 0x6C3E, 0x94C4, 0x6C4E,
+	0x94C5, 0x7248, 0x94C6, 0x72AF, 0x94C7, 0x73ED, 0x94C8, 0x7554,
+	0x94C9, 0x7E41, 0x94CA, 0x822C, 0x94CB, 0x85E9, 0x94CC, 0x8CA9,
+	0x94CD, 0x7BC4, 0x94CE, 0x91C6, 0x94CF, 0x7169, 0x94D0, 0x9812,
+	0x94D1, 0x98EF, 0x94D2, 0x633D, 0x94D3, 0x6669, 0x94D4, 0x756A,
+	0x94D5, 0x76E4, 0x94D6, 0x78D0, 0x94D7, 0x8543, 0x94D8, 0x86EE,
+	0x94D9, 0x532A, 0x94DA, 0x5351, 0x94DB, 0x5426, 0x94DC, 0x5983,
+	0x94DD, 0x5E87, 0x94DE, 0x5F7C, 0x94DF, 0x60B2, 0x94E0, 0x6249,
+	0x94E1, 0x6279, 0x94E2, 0x62AB, 0x94E3, 0x6590, 0x94E4, 0x6BD4,
+	0x94E5, 0x6CCC, 0x94E6, 0x75B2, 0x94E7, 0x76AE, 0x94E8, 0x7891,
+	0x94E9, 0x79D8, 0x94EA, 0x7DCB, 0x94EB, 0x7F77, 0x94EC, 0x80A5,
+	0x94ED, 0x88AB, 0x94EE, 0x8AB9, 0x94EF, 0x8CBB, 0x94F0, 0x907F,
+	0x94F1, 0x975E, 0x94F2, 0x98DB, 0x94F3, 0x6A0B, 0x94F4, 0x7C38,
+	0x94F5, 0x5099, 0x94F6, 0x5C3E, 0x94F7, 0x5FAE, 0x94F8, 0x6787,
+	0x94F9, 0x6BD8, 0x94FA, 0x7435, 0x94FB, 0x7709, 0x94FC, 0x7F8E,
+	0x9540, 0x9F3B, 0x9541, 0x67CA, 0x9542, 0x7A17, 0x9543, 0x5339,
+	0x9544, 0x758B, 0x9545, 0x9AED, 0x9546, 0x5F66, 0x9547, 0x819D,
+	0x9548, 0x83F1, 0x9549, 0x8098, 0x954A, 0x5F3C, 0x954B, 0x5FC5,
+	0x954C, 0x7562, 0x954D, 0x7B46, 0x954E, 0x903C, 0x954F, 0x6867,
+	0x9550, 0x59EB, 0x9551, 0x5A9B, 0x9552, 0x7D10, 0x9553, 0x767E,
+	0x9554, 0x8B2C, 0x9555, 0x4FF5, 0x9556, 0x5F6A, 0x9557, 0x6A19,
+	0x9558, 0x6C37, 0x9559, 0x6F02, 0x955A, 0x74E2, 0x955B, 0x7968,
+	0x955C, 0x8868, 0x955D, 0x8A55, 0x955E, 0x8C79, 0x955F, 0x5EDF,
+	0x9560, 0x63CF, 0x9561, 0x75C5, 0x9562, 0x79D2, 0x9563, 0x82D7,
+	0x9564, 0x9328, 0x9565, 0x92F2, 0x9566, 0x849C, 0x9567, 0x86ED,
+	0x9568, 0x9C2D, 0x9569, 0x54C1, 0x956A, 0x5F6C, 0x956B, 0x658C,
+	0x956C, 0x6D5C, 0x956D, 0x7015, 0x956E, 0x8CA7, 0x956F, 0x8CD3,
+	0x9570, 0x983B, 0x9571, 0x654F, 0x9572, 0x74F6, 0x9573, 0x4E0D,
+	0x9574, 0x4ED8, 0x9575, 0x57E0, 0x9576, 0x592B, 0x9577, 0x5A66,
+	0x9578, 0x5BCC, 0x9579, 0x51A8, 0x957A, 0x5E03, 0x957B, 0x5E9C,
+	0x957C, 0x6016, 0x957D, 0x6276, 0x957E, 0x6577, 0x9580, 0x65A7,
+	0x9581, 0x666E, 0x9582, 0x6D6E, 0x9583, 0x7236, 0x9584, 0x7B26,
+	0x9585, 0x8150, 0x9586, 0x819A, 0x9587, 0x8299, 0x9588, 0x8B5C,
+	0x9589, 0x8CA0, 0x958A, 0x8CE6, 0x958B, 0x8D74, 0x958C, 0x961C,
+	0x958D, 0x9644, 0x958E, 0x4FAE, 0x958F, 0x64AB, 0x9590, 0x6B66,
+	0x9591, 0x821E, 0x9592, 0x8461, 0x9593, 0x856A, 0x9594, 0x90E8,
+	0x9595, 0x5C01, 0x9596, 0x6953, 0x9597, 0x98A8, 0x9598, 0x847A,
+	0x9599, 0x8557, 0x959A, 0x4F0F, 0x959B, 0x526F, 0x959C, 0x5FA9,
+	0x959D, 0x5E45, 0x959E, 0x670D, 0x959F, 0x798F, 0x95A0, 0x8179,
+	0x95A1, 0x8907, 0x95A2, 0x8986, 0x95A3, 0x6DF5, 0x95A4, 0x5F17,
+	0x95A5, 0x6255, 0x95A6, 0x6CB8, 0x95A7, 0x4ECF, 0x95A8, 0x7269,
+	0x95A9, 0x9B92, 0x95AA, 0x5206, 0x95AB, 0x543B, 0x95AC, 0x5674,
+	0x95AD, 0x58B3, 0x95AE, 0x61A4, 0x95AF, 0x626E, 0x95B0, 0x711A,
+	0x95B1, 0x596E, 0x95B2, 0x7C89, 0x95B3, 0x7CDE, 0x95B4, 0x7D1B,
+	0x95B5, 0x96F0, 0x95B6, 0x6587, 0x95B7, 0x805E, 0x95B8, 0x4E19,
+	0x95B9, 0x4F75, 0x95BA, 0x5175, 0x95BB, 0x5840, 0x95BC, 0x5E63,
+	0x95BD, 0x5E73, 0x95BE, 0x5F0A, 0x95BF, 0x67C4, 0x95C0, 0x4E26,
+	0x95C1, 0x853D, 0x95C2, 0x9589, 0x95C3, 0x965B, 0x95C4, 0x7C73,
+	0x95C5, 0x9801, 0x95C6, 0x50FB, 0x95C7, 0x58C1, 0x95C8, 0x7656,
+	0x95C9, 0x78A7, 0x95CA, 0x5225, 0x95CB, 0x77A5, 0x95CC, 0x8511,
+	0x95CD, 0x7B86, 0x95CE, 0x504F, 0x95CF, 0x5909, 0x95D0, 0x7247,
+	0x95D1, 0x7BC7, 0x95D2, 0x7DE8, 0x95D3, 0x8FBA, 0x95D4, 0x8FD4,
+	0x95D5, 0x904D, 0x95D6, 0x4FBF, 0x95D7, 0x52C9, 0x95D8, 0x5A29,
+	0x95D9, 0x5F01, 0x95DA, 0x97AD, 0x95DB, 0x4FDD, 0x95DC, 0x8217,
+	0x95DD, 0x92EA, 0x95DE, 0x5703, 0x95DF, 0x6355, 0x95E0, 0x6B69,
+	0x95E1, 0x752B, 0x95E2, 0x88DC, 0x95E3, 0x8F14, 0x95E4, 0x7A42,
+	0x95E5, 0x52DF, 0x95E6, 0x5893, 0x95E7, 0x6155, 0x95E8, 0x620A,
+	0x95E9, 0x66AE, 0x95EA, 0x6BCD, 0x95EB, 0x7C3F, 0x95EC, 0x83E9,
+	0x95ED, 0x5023, 0x95EE, 0x4FF8, 0x95EF, 0x5305, 0x95F0, 0x5446,
+	0x95F1, 0x5831, 0x95F2, 0x5949, 0x95F3, 0x5B9D, 0x95F4, 0x5CF0,
+	0x95F5, 0x5CEF, 0x95F6, 0x5D29, 0x95F7, 0x5E96, 0x95F8, 0x62B1,
+	0x95F9, 0x6367, 0x95FA, 0x653E, 0x95FB, 0x65B9, 0x95FC, 0x670B,
+	0x9640, 0x6CD5, 0x9641, 0x6CE1, 0x9642, 0x70F9, 0x9643, 0x7832,
+	0x9644, 0x7E2B, 0x9645, 0x80DE, 0x9646, 0x82B3, 0x9647, 0x840C,
+	0x9648, 0x84EC, 0x9649, 0x8702, 0x964A, 0x8912, 0x964B, 0x8A2A,
+	0x964C, 0x8C4A, 0x964D, 0x90A6, 0x964E, 0x92D2, 0x964F, 0x98FD,
+	0x9650, 0x9CF3, 0x9651, 0x9D6C, 0x9652, 0x4E4F, 0x9653, 0x4EA1,
+	0x9654, 0x508D, 0x9655, 0x5256, 0x9656, 0x574A, 0x9657, 0x59A8,
+	0x9658, 0x5E3D, 0x9659, 0x5FD8, 0x965A, 0x5FD9, 0x965B, 0x623F,
+	0x965C, 0x66B4, 0x965D, 0x671B, 0x965E, 0x67D0, 0x965F, 0x68D2,
+	0x9660, 0x5192, 0x9661, 0x7D21, 0x9662, 0x80AA, 0x9663, 0x81A8,
+	0x9664, 0x8B00, 0x9665, 0x8C8C, 0x9666, 0x8CBF, 0x9667, 0x927E,
+	0x9668, 0x9632, 0x9669, 0x5420, 0x966A, 0x982C, 0x966B, 0x5317,
+	0x966C, 0x50D5, 0x966D, 0x535C, 0x966E, 0x58A8, 0x966F, 0x64B2,
+	0x9670, 0x6734, 0x9671, 0x7267, 0x9672, 0x7766, 0x9673, 0x7A46,
+	0x9674, 0x91E6, 0x9675, 0x52C3, 0x9676, 0x6CA1, 0x9677, 0x6B86,
+	0x9678, 0x5800, 0x9679, 0x5E4C, 0x967A, 0x5954, 0x967B, 0x672C,
+	0x967C, 0x7FFB, 0x967D, 0x51E1, 0x967E, 0x76C6, 0x9680, 0x6469,
+	0x9681, 0x78E8, 0x9682, 0x9B54, 0x9683, 0x9EBB, 0x9684, 0x57CB,
+	0x9685, 0x59B9, 0x9686, 0x6627, 0x9687, 0x679A, 0x9688, 0x6BCE,
+	0x9689, 0x54E9, 0x968A, 0x69D9, 0x968B, 0x5E55, 0x968C, 0x819C,
+	0x968D, 0x6795, 0x968E, 0x9BAA, 0x968F, 0x67FE, 0x9690, 0x9C52,
+	0x9691, 0x685D, 0x9692, 0x4EA6, 0x9693, 0x4FE3, 0x9694, 0x53C8,
+	0x9695, 0x62B9, 0x9696, 0x672B, 0x9697, 0x6CAB, 0x9698, 0x8FC4,
+	0x9699, 0x4FAD, 0x969A, 0x7E6D, 0x969B, 0x9EBF, 0x969C, 0x4E07,
+	0x969D, 0x6162, 0x969E, 0x6E80, 0x969F, 0x6F2B, 0x96A0, 0x8513,
+	0x96A1, 0x5473, 0x96A2, 0x672A, 0x96A3, 0x9B45, 0x96A4, 0x5DF3,
+	0x96A5, 0x7B95, 0x96A6, 0x5CAC, 0x96A7, 0x5BC6, 0x96A8, 0x871C,
+	0x96A9, 0x6E4A, 0x96AA, 0x84D1, 0x96AB, 0x7A14, 0x96AC, 0x8108,
+	0x96AD, 0x5999, 0x96AE, 0x7C8D, 0x96AF, 0x6C11, 0x96B0, 0x7720,
+	0x96B1, 0x52D9, 0x96B2, 0x5922, 0x96B3, 0x7121, 0x96B4, 0x725F,
+	0x96B5, 0x77DB, 0x96B6, 0x9727, 0x96B7, 0x9D61, 0x96B8, 0x690B,
+	0x96B9, 0x5A7F, 0x96BA, 0x5A18, 0x96BB, 0x51A5, 0x96BC, 0x540D,
+	0x96BD, 0x547D, 0x96BE, 0x660E, 0x96BF, 0x76DF, 0x96C0, 0x8FF7,
+	0x96C1, 0x9298, 0x96C2, 0x9CF4, 0x96C3, 0x59EA, 0x96C4, 0x725D,
+	0x96C5, 0x6EC5, 0x96C6, 0x514D, 0x96C7, 0x68C9, 0x96C8, 0x7DBF,
+	0x96C9, 0x7DEC, 0x96CA, 0x9762, 0x96CB, 0x9EBA, 0x96CC, 0x6478,
+	0x96CD, 0x6A21, 0x96CE, 0x8302, 0x96CF, 0x5984, 0x96D0, 0x5B5F,
+	0x96D1, 0x6BDB, 0x96D2, 0x731B, 0x96D3, 0x76F2, 0x96D4, 0x7DB2,
+	0x96D5, 0x8017, 0x96D6, 0x8499, 0x96D7, 0x5132, 0x96D8, 0x6728,
+	0x96D9, 0x9ED9, 0x96DA, 0x76EE, 0x96DB, 0x6762, 0x96DC, 0x52FF,
+	0x96DD, 0x9905, 0x96DE, 0x5C24, 0x96DF, 0x623B, 0x96E0, 0x7C7E,
+	0x96E1, 0x8CB0, 0x96E2, 0x554F, 0x96E3, 0x60B6, 0x96E4, 0x7D0B,
+	0x96E5, 0x9580, 0x96E6, 0x5301, 0x96E7, 0x4E5F, 0x96E8, 0x51B6,
+	0x96E9, 0x591C, 0x96EA, 0x723A, 0x96EB, 0x8036, 0x96EC, 0x91CE,
+	0x96ED, 0x5F25, 0x96EE, 0x77E2, 0x96EF, 0x5384, 0x96F0, 0x5F79,
+	0x96F1, 0x7D04, 0x96F2, 0x85AC, 0x96F3, 0x8A33, 0x96F4, 0x8E8D,
+	0x96F5, 0x9756, 0x96F6, 0x67F3, 0x96F7, 0x85AE, 0x96F8, 0x9453,
+	0x96F9, 0x6109, 0x96FA, 0x6108, 0x96FB, 0x6CB9, 0x96FC, 0x7652,
+	0x9740, 0x8AED, 0x9741, 0x8F38, 0x9742, 0x552F, 0x9743, 0x4F51,
+	0x9744, 0x512A, 0x9745, 0x52C7, 0x9746, 0x53CB, 0x9747, 0x5BA5,
+	0x9748, 0x5E7D, 0x9749, 0x60A0, 0x974A, 0x6182, 0x974B, 0x63D6,
+	0x974C, 0x6709, 0x974D, 0x67DA, 0x974E, 0x6E67, 0x974F, 0x6D8C,
+	0x9750, 0x7336, 0x9751, 0x7337, 0x9752, 0x7531, 0x9753, 0x7950,
+	0x9754, 0x88D5, 0x9755, 0x8A98, 0x9756, 0x904A, 0x9757, 0x9091,
+	0x9758, 0x90F5, 0x9759, 0x96C4, 0x975A, 0x878D, 0x975B, 0x5915,
+	0x975C, 0x4E88, 0x975D, 0x4F59, 0x975E, 0x4E0E, 0x975F, 0x8A89,
+	0x9760, 0x8F3F, 0x9761, 0x9810, 0x9762, 0x50AD, 0x9763, 0x5E7C,
+	0x9764, 0x5996, 0x9765, 0x5BB9, 0x9766, 0x5EB8, 0x9767, 0x63DA,
+	0x9768, 0x63FA, 0x9769, 0x64C1, 0x976A, 0x66DC, 0x976B, 0x694A,
+	0x976C, 0x69D8, 0x976D, 0x6D0B, 0x976E, 0x6EB6, 0x976F, 0x7194,
+	0x9770, 0x7528, 0x9771, 0x7AAF, 0x9772, 0x7F8A, 0x9773, 0x8000,
+	0x9774, 0x8449, 0x9775, 0x84C9, 0x9776, 0x8981, 0x9777, 0x8B21,
+	0x9778, 0x8E0A, 0x9779, 0x9065, 0x977A, 0x967D, 0x977B, 0x990A,
+	0x977C, 0x617E, 0x977D, 0x6291, 0x977E, 0x6B32, 0x9780, 0x6C83,
+	0x9781, 0x6D74, 0x9782, 0x7FCC, 0x9783, 0x7FFC, 0x9784, 0x6DC0,
+	0x9785, 0x7F85, 0x9786, 0x87BA, 0x9787, 0x88F8, 0x9788, 0x6765,
+	0x9789, 0x83B1, 0x978A, 0x983C, 0x978B, 0x96F7, 0x978C, 0x6D1B,
+	0x978D, 0x7D61, 0x978E, 0x843D, 0x978F, 0x916A, 0x9790, 0x4E71,
+	0x9791, 0x5375, 0x9792, 0x5D50, 0x9793, 0x6B04, 0x9794, 0x6FEB,
+	0x9795, 0x85CD, 0x9796, 0x862D, 0x9797, 0x89A7, 0x9798, 0x5229,
+	0x9799, 0x540F, 0x979A, 0x5C65, 0x979B, 0x674E, 0x979C, 0x68A8,
+	0x979D, 0x7406, 0x979E, 0x7483, 0x979F, 0x75E2, 0x97A0, 0x88CF,
+	0x97A1, 0x88E1, 0x97A2, 0x91CC, 0x97A3, 0x96E2, 0x97A4, 0x9678,
+	0x97A5, 0x5F8B, 0x97A6, 0x7387, 0x97A7, 0x7ACB, 0x97A8, 0x844E,
+	0x97A9, 0x63A0, 0x97AA, 0x7565, 0x97AB, 0x5289, 0x97AC, 0x6D41,
+	0x97AD, 0x6E9C, 0x97AE, 0x7409, 0x97AF, 0x7559, 0x97B0, 0x786B,
+	0x97B1, 0x7C92, 0x97B2, 0x9686, 0x97B3, 0x7ADC, 0x97B4, 0x9F8D,
+	0x97B5, 0x4FB6, 0x97B6, 0x616E, 0x97B7, 0x65C5, 0x97B8, 0x865C,
+	0x97B9, 0x4E86, 0x97BA, 0x4EAE, 0x97BB, 0x50DA, 0x97BC, 0x4E21,
+	0x97BD, 0x51CC, 0x97BE, 0x5BEE, 0x97BF, 0x6599, 0x97C0, 0x6881,
+	0x97C1, 0x6DBC, 0x97C2, 0x731F, 0x97C3, 0x7642, 0x97C4, 0x77AD,
+	0x97C5, 0x7A1C, 0x97C6, 0x7CE7, 0x97C7, 0x826F, 0x97C8, 0x8AD2,
+	0x97C9, 0x907C, 0x97CA, 0x91CF, 0x97CB, 0x9675, 0x97CC, 0x9818,
+	0x97CD, 0x529B, 0x97CE, 0x7DD1, 0x97CF, 0x502B, 0x97D0, 0x5398,
+	0x97D1, 0x6797, 0x97D2, 0x6DCB, 0x97D3, 0x71D0, 0x97D4, 0x7433,
+	0x97D5, 0x81E8, 0x97D6, 0x8F2A, 0x97D7, 0x96A3, 0x97D8, 0x9C57,
+	0x97D9, 0x9E9F, 0x97DA, 0x7460, 0x97DB, 0x5841, 0x97DC, 0x6D99,
+	0x97DD, 0x7D2F, 0x97DE, 0x985E, 0x97DF, 0x4EE4, 0x97E0, 0x4F36,
+	0x97E1, 0x4F8B, 0x97E2, 0x51B7, 0x97E3, 0x52B1, 0x97E4, 0x5DBA,
+	0x97E5, 0x601C, 0x97E6, 0x73B2, 0x97E7, 0x793C, 0x97E8, 0x82D3,
+	0x97E9, 0x9234, 0x97EA, 0x96B7, 0x97EB, 0x96F6, 0x97EC, 0x970A,
+	0x97ED, 0x9E97, 0x97EE, 0x9F62, 0x97EF, 0x66A6, 0x97F0, 0x6B74,
+	0x97F1, 0x5217, 0x97F2, 0x52A3, 0x97F3, 0x70C8, 0x97F4, 0x88C2,
+	0x97F5, 0x5EC9, 0x97F6, 0x604B, 0x97F7, 0x6190, 0x97F8, 0x6F23,
+	0x97F9, 0x7149, 0x97FA, 0x7C3E, 0x97FB, 0x7DF4, 0x97FC, 0x806F,
+	0x9840, 0x84EE, 0x9841, 0x9023, 0x9842, 0x932C, 0x9843, 0x5442,
+	0x9844, 0x9B6F, 0x9845, 0x6AD3, 0x9846, 0x7089, 0x9847, 0x8CC2,
+	0x9848, 0x8DEF, 0x9849, 0x9732, 0x984A, 0x52B4, 0x984B, 0x5A41,
+	0x984C, 0x5ECA, 0x984D, 0x5F04, 0x984E, 0x6717, 0x984F, 0x697C,
+	0x9850, 0x6994, 0x9851, 0x6D6A, 0x9852, 0x6F0F, 0x9853, 0x7262,
+	0x9854, 0x72FC, 0x9855, 0x7BED, 0x9856, 0x8001, 0x9857, 0x807E,
+	0x9858, 0x874B, 0x9859, 0x90CE, 0x985A, 0x516D, 0x985B, 0x9E93,
+	0x985C, 0x7984, 0x985D, 0x808B, 0x985E, 0x9332, 0x985F, 0x8AD6,
+	0x9860, 0x502D, 0x9861, 0x548C, 0x9862, 0x8A71, 0x9863, 0x6B6A,
+	0x9864, 0x8CC4, 0x9865, 0x8107, 0x9866, 0x60D1, 0x9867, 0x67A0,
+	0x9868, 0x9DF2, 0x9869, 0x4E99, 0x986A, 0x4E98, 0x986B, 0x9C10,
+	0x986C, 0x8A6B, 0x986D, 0x85C1, 0x986E, 0x8568, 0x986F, 0x6900,
+	0x9870, 0x6E7E, 0x9871, 0x7897, 0x9872, 0x8155, 0x989F, 0x5F0C,
+	0x98A0, 0x4E10, 0x98A1, 0x4E15, 0x98A2, 0x4E2A, 0x98A3, 0x4E31,
+	0x98A4, 0x4E36, 0x98A5, 0x4E3C, 0x98A6, 0x4E3F, 0x98A7, 0x4E42,
+	0x98A8, 0x4E56, 0x98A9, 0x4E58, 0x98AA, 0x4E82, 0x98AB, 0x4E85,
+	0x98AC, 0x8C6B, 0x98AD, 0x4E8A, 0x98AE, 0x8212, 0x98AF, 0x5F0D,
+	0x98B0, 0x4E8E, 0x98B1, 0x4E9E, 0x98B2, 0x4E9F, 0x98B3, 0x4EA0,
+	0x98B4, 0x4EA2, 0x98B5, 0x4EB0, 0x98B6, 0x4EB3, 0x98B7, 0x4EB6,
+	0x98B8, 0x4ECE, 0x98B9, 0x4ECD, 0x98BA, 0x4EC4, 0x98BB, 0x4EC6,
+	0x98BC, 0x4EC2, 0x98BD, 0x4ED7, 0x98BE, 0x4EDE, 0x98BF, 0x4EED,
+	0x98C0, 0x4EDF, 0x98C1, 0x4EF7, 0x98C2, 0x4F09, 0x98C3, 0x4F5A,
+	0x98C4, 0x4F30, 0x98C5, 0x4F5B, 0x98C6, 0x4F5D, 0x98C7, 0x4F57,
+	0x98C8, 0x4F47, 0x98C9, 0x4F76, 0x98CA, 0x4F88, 0x98CB, 0x4F8F,
+	0x98CC, 0x4F98, 0x98CD, 0x4F7B, 0x98CE, 0x4F69, 0x98CF, 0x4F70,
+	0x98D0, 0x4F91, 0x98D1, 0x4F6F, 0x98D2, 0x4F86, 0x98D3, 0x4F96,
+	0x98D4, 0x5118, 0x98D5, 0x4FD4, 0x98D6, 0x4FDF, 0x98D7, 0x4FCE,
+	0x98D8, 0x4FD8, 0x98D9, 0x4FDB, 0x98DA, 0x4FD1, 0x98DB, 0x4FDA,
+	0x98DC, 0x4FD0, 0x98DD, 0x4FE4, 0x98DE, 0x4FE5, 0x98DF, 0x501A,
+	0x98E0, 0x5028, 0x98E1, 0x5014, 0x98E2, 0x502A, 0x98E3, 0x5025,
+	0x98E4, 0x5005, 0x98E5, 0x4F1C, 0x98E6, 0x4FF6, 0x98E7, 0x5021,
+	0x98E8, 0x5029, 0x98E9, 0x502C, 0x98EA, 0x4FFE, 0x98EB, 0x4FEF,
+	0x98EC, 0x5011, 0x98ED, 0x5006, 0x98EE, 0x5043, 0x98EF, 0x5047,
+	0x98F0, 0x6703, 0x98F1, 0x5055, 0x98F2, 0x5050, 0x98F3, 0x5048,
+	0x98F4, 0x505A, 0x98F5, 0x5056, 0x98F6, 0x506C, 0x98F7, 0x5078,
+	0x98F8, 0x5080, 0x98F9, 0x509A, 0x98FA, 0x5085, 0x98FB, 0x50B4,
+	0x98FC, 0x50B2, 0x9940, 0x50C9, 0x9941, 0x50CA, 0x9942, 0x50B3,
+	0x9943, 0x50C2, 0x9944, 0x50D6, 0x9945, 0x50DE, 0x9946, 0x50E5,
+	0x9947, 0x50ED, 0x9948, 0x50E3, 0x9949, 0x50EE, 0x994A, 0x50F9,
+	0x994B, 0x50F5, 0x994C, 0x5109, 0x994D, 0x5101, 0x994E, 0x5102,
+	0x994F, 0x5116, 0x9950, 0x5115, 0x9951, 0x5114, 0x9952, 0x511A,
+	0x9953, 0x5121, 0x9954, 0x513A, 0x9955, 0x5137, 0x9956, 0x513C,
+	0x9957, 0x513B, 0x9958, 0x513F, 0x9959, 0x5140, 0x995A, 0x5152,
+	0x995B, 0x514C, 0x995C, 0x5154, 0x995D, 0x5162, 0x995E, 0x7AF8,
+	0x995F, 0x5169, 0x9960, 0x516A, 0x9961, 0x516E, 0x9962, 0x5180,
+	0x9963, 0x5182, 0x9964, 0x56D8, 0x9965, 0x518C, 0x9966, 0x5189,
+	0x9967, 0x518F, 0x9968, 0x5191, 0x9969, 0x5193, 0x996A, 0x5195,
+	0x996B, 0x5196, 0x996C, 0x51A4, 0x996D, 0x51A6, 0x996E, 0x51A2,
+	0x996F, 0x51A9, 0x9970, 0x51AA, 0x9971, 0x51AB, 0x9972, 0x51B3,
+	0x9973, 0x51B1, 0x9974, 0x51B2, 0x9975, 0x51B0, 0x9976, 0x51B5,
+	0x9977, 0x51BD, 0x9978, 0x51C5, 0x9979, 0x51C9, 0x997A, 0x51DB,
+	0x997B, 0x51E0, 0x997C, 0x8655, 0x997D, 0x51E9, 0x997E, 0x51ED,
+	0x9980, 0x51F0, 0x9981, 0x51F5, 0x9982, 0x51FE, 0x9983, 0x5204,
+	0x9984, 0x520B, 0x9985, 0x5214, 0x9986, 0x520E, 0x9987, 0x5227,
+	0x9988, 0x522A, 0x9989, 0x522E, 0x998A, 0x5233, 0x998B, 0x5239,
+	0x998C, 0x524F, 0x998D, 0x5244, 0x998E, 0x524B, 0x998F, 0x524C,
+	0x9990, 0x525E, 0x9991, 0x5254, 0x9992, 0x526A, 0x9993, 0x5274,
+	0x9994, 0x5269, 0x9995, 0x5273, 0x9996, 0x527F, 0x9997, 0x527D,
+	0x9998, 0x528D, 0x9999, 0x5294, 0x999A, 0x5292, 0x999B, 0x5271,
+	0x999C, 0x5288, 0x999D, 0x5291, 0x999E, 0x8FA8, 0x999F, 0x8FA7,
+	0x99A0, 0x52AC, 0x99A1, 0x52AD, 0x99A2, 0x52BC, 0x99A3, 0x52B5,
+	0x99A4, 0x52C1, 0x99A5, 0x52CD, 0x99A6, 0x52D7, 0x99A7, 0x52DE,
+	0x99A8, 0x52E3, 0x99A9, 0x52E6, 0x99AA, 0x98ED, 0x99AB, 0x52E0,
+	0x99AC, 0x52F3, 0x99AD, 0x52F5, 0x99AE, 0x52F8, 0x99AF, 0x52F9,
+	0x99B0, 0x5306, 0x99B1, 0x5308, 0x99B2, 0x7538, 0x99B3, 0x530D,
+	0x99B4, 0x5310, 0x99B5, 0x530F, 0x99B6, 0x5315, 0x99B7, 0x531A,
+	0x99B8, 0x5323, 0x99B9, 0x532F, 0x99BA, 0x5331, 0x99BB, 0x5333,
+	0x99BC, 0x5338, 0x99BD, 0x5340, 0x99BE, 0x5346, 0x99BF, 0x5345,
+	0x99C0, 0x4E17, 0x99C1, 0x5349, 0x99C2, 0x534D, 0x99C3, 0x51D6,
+	0x99C4, 0x535E, 0x99C5, 0x5369, 0x99C6, 0x536E, 0x99C7, 0x5918,
+	0x99C8, 0x537B, 0x99C9, 0x5377, 0x99CA, 0x5382, 0x99CB, 0x5396,
+	0x99CC, 0x53A0, 0x99CD, 0x53A6, 0x99CE, 0x53A5, 0x99CF, 0x53AE,
+	0x99D0, 0x53B0, 0x99D1, 0x53B6, 0x99D2, 0x53C3, 0x99D3, 0x7C12,
+	0x99D4, 0x96D9, 0x99D5, 0x53DF, 0x99D6, 0x66FC, 0x99D7, 0x71EE,
+	0x99D8, 0x53EE, 0x99D9, 0x53E8, 0x99DA, 0x53ED, 0x99DB, 0x53FA,
+	0x99DC, 0x5401, 0x99DD, 0x543D, 0x99DE, 0x5440, 0x99DF, 0x542C,
+	0x99E0, 0x542D, 0x99E1, 0x543C, 0x99E2, 0x542E, 0x99E3, 0x5436,
+	0x99E4, 0x5429, 0x99E5, 0x541D, 0x99E6, 0x544E, 0x99E7, 0x548F,
+	0x99E8, 0x5475, 0x99E9, 0x548E, 0x99EA, 0x545F, 0x99EB, 0x5471,
+	0x99EC, 0x5477, 0x99ED, 0x5470, 0x99EE, 0x5492, 0x99EF, 0x547B,
+	0x99F0, 0x5480, 0x99F1, 0x5476, 0x99F2, 0x5484, 0x99F3, 0x5490,
+	0x99F4, 0x5486, 0x99F5, 0x54C7, 0x99F6, 0x54A2, 0x99F7, 0x54B8,
+	0x99F8, 0x54A5, 0x99F9, 0x54AC, 0x99FA, 0x54C4, 0x99FB, 0x54C8,
+	0x99FC, 0x54A8, 0x9A40, 0x54AB, 0x9A41, 0x54C2, 0x9A42, 0x54A4,
+	0x9A43, 0x54BE, 0x9A44, 0x54BC, 0x9A45, 0x54D8, 0x9A46, 0x54E5,
+	0x9A47, 0x54E6, 0x9A48, 0x550F, 0x9A49, 0x5514, 0x9A4A, 0x54FD,
+	0x9A4B, 0x54EE, 0x9A4C, 0x54ED, 0x9A4D, 0x54FA, 0x9A4E, 0x54E2,
+	0x9A4F, 0x5539, 0x9A50, 0x5540, 0x9A51, 0x5563, 0x9A52, 0x554C,
+	0x9A53, 0x552E, 0x9A54, 0x555C, 0x9A55, 0x5545, 0x9A56, 0x5556,
+	0x9A57, 0x5557, 0x9A58, 0x5538, 0x9A59, 0x5533, 0x9A5A, 0x555D,
+	0x9A5B, 0x5599, 0x9A5C, 0x5580, 0x9A5D, 0x54AF, 0x9A5E, 0x558A,
+	0x9A5F, 0x559F, 0x9A60, 0x557B, 0x9A61, 0x557E, 0x9A62, 0x5598,
+	0x9A63, 0x559E, 0x9A64, 0x55AE, 0x9A65, 0x557C, 0x9A66, 0x5583,
+	0x9A67, 0x55A9, 0x9A68, 0x5587, 0x9A69, 0x55A8, 0x9A6A, 0x55DA,
+	0x9A6B, 0x55C5, 0x9A6C, 0x55DF, 0x9A6D, 0x55C4, 0x9A6E, 0x55DC,
+	0x9A6F, 0x55E4, 0x9A70, 0x55D4, 0x9A71, 0x5614, 0x9A72, 0x55F7,
+	0x9A73, 0x5616, 0x9A74, 0x55FE, 0x9A75, 0x55FD, 0x9A76, 0x561B,
+	0x9A77, 0x55F9, 0x9A78, 0x564E, 0x9A79, 0x5650, 0x9A7A, 0x71DF,
+	0x9A7B, 0x5634, 0x9A7C, 0x5636, 0x9A7D, 0x5632, 0x9A7E, 0x5638,
+	0x9A80, 0x566B, 0x9A81, 0x5664, 0x9A82, 0x562F, 0x9A83, 0x566C,
+	0x9A84, 0x566A, 0x9A85, 0x5686, 0x9A86, 0x5680, 0x9A87, 0x568A,
+	0x9A88, 0x56A0, 0x9A89, 0x5694, 0x9A8A, 0x568F, 0x9A8B, 0x56A5,
+	0x9A8C, 0x56AE, 0x9A8D, 0x56B6, 0x9A8E, 0x56B4, 0x9A8F, 0x56C2,
+	0x9A90, 0x56BC, 0x9A91, 0x56C1, 0x9A92, 0x56C3, 0x9A93, 0x56C0,
+	0x9A94, 0x56C8, 0x9A95, 0x56CE, 0x9A96, 0x56D1, 0x9A97, 0x56D3,
+	0x9A98, 0x56D7, 0x9A99, 0x56EE, 0x9A9A, 0x56F9, 0x9A9B, 0x5700,
+	0x9A9C, 0x56FF, 0x9A9D, 0x5704, 0x9A9E, 0x5709, 0x9A9F, 0x5708,
+	0x9AA0, 0x570B, 0x9AA1, 0x570D, 0x9AA2, 0x5713, 0x9AA3, 0x5718,
+	0x9AA4, 0x5716, 0x9AA5, 0x55C7, 0x9AA6, 0x571C, 0x9AA7, 0x5726,
+	0x9AA8, 0x5737, 0x9AA9, 0x5738, 0x9AAA, 0x574E, 0x9AAB, 0x573B,
+	0x9AAC, 0x5740, 0x9AAD, 0x574F, 0x9AAE, 0x5769, 0x9AAF, 0x57C0,
+	0x9AB0, 0x5788, 0x9AB1, 0x5761, 0x9AB2, 0x577F, 0x9AB3, 0x5789,
+	0x9AB4, 0x5793, 0x9AB5, 0x57A0, 0x9AB6, 0x57B3, 0x9AB7, 0x57A4,
+	0x9AB8, 0x57AA, 0x9AB9, 0x57B0, 0x9ABA, 0x57C3, 0x9ABB, 0x57C6,
+	0x9ABC, 0x57D4, 0x9ABD, 0x57D2, 0x9ABE, 0x57D3, 0x9ABF, 0x580A,
+	0x9AC0, 0x57D6, 0x9AC1, 0x57E3, 0x9AC2, 0x580B, 0x9AC3, 0x5819,
+	0x9AC4, 0x581D, 0x9AC5, 0x5872, 0x9AC6, 0x5821, 0x9AC7, 0x5862,
+	0x9AC8, 0x584B, 0x9AC9, 0x5870, 0x9ACA, 0x6BC0, 0x9ACB, 0x5852,
+	0x9ACC, 0x583D, 0x9ACD, 0x5879, 0x9ACE, 0x5885, 0x9ACF, 0x58B9,
+	0x9AD0, 0x589F, 0x9AD1, 0x58AB, 0x9AD2, 0x58BA, 0x9AD3, 0x58DE,
+	0x9AD4, 0x58BB, 0x9AD5, 0x58B8, 0x9AD6, 0x58AE, 0x9AD7, 0x58C5,
+	0x9AD8, 0x58D3, 0x9AD9, 0x58D1, 0x9ADA, 0x58D7, 0x9ADB, 0x58D9,
+	0x9ADC, 0x58D8, 0x9ADD, 0x58E5, 0x9ADE, 0x58DC, 0x9ADF, 0x58E4,
+	0x9AE0, 0x58DF, 0x9AE1, 0x58EF, 0x9AE2, 0x58FA, 0x9AE3, 0x58F9,
+	0x9AE4, 0x58FB, 0x9AE5, 0x58FC, 0x9AE6, 0x58FD, 0x9AE7, 0x5902,
+	0x9AE8, 0x590A, 0x9AE9, 0x5910, 0x9AEA, 0x591B, 0x9AEB, 0x68A6,
+	0x9AEC, 0x5925, 0x9AED, 0x592C, 0x9AEE, 0x592D, 0x9AEF, 0x5932,
+	0x9AF0, 0x5938, 0x9AF1, 0x593E, 0x9AF2, 0x7AD2, 0x9AF3, 0x5955,
+	0x9AF4, 0x5950, 0x9AF5, 0x594E, 0x9AF6, 0x595A, 0x9AF7, 0x5958,
+	0x9AF8, 0x5962, 0x9AF9, 0x5960, 0x9AFA, 0x5967, 0x9AFB, 0x596C,
+	0x9AFC, 0x5969, 0x9B40, 0x5978, 0x9B41, 0x5981, 0x9B42, 0x599D,
+	0x9B43, 0x4F5E, 0x9B44, 0x4FAB, 0x9B45, 0x59A3, 0x9B46, 0x59B2,
+	0x9B47, 0x59C6, 0x9B48, 0x59E8, 0x9B49, 0x59DC, 0x9B4A, 0x598D,
+	0x9B4B, 0x59D9, 0x9B4C, 0x59DA, 0x9B4D, 0x5A25, 0x9B4E, 0x5A1F,
+	0x9B4F, 0x5A11, 0x9B50, 0x5A1C, 0x9B51, 0x5A09, 0x9B52, 0x5A1A,
+	0x9B53, 0x5A40, 0x9B54, 0x5A6C, 0x9B55, 0x5A49, 0x9B56, 0x5A35,
+	0x9B57, 0x5A36, 0x9B58, 0x5A62, 0x9B59, 0x5A6A, 0x9B5A, 0x5A9A,
+	0x9B5B, 0x5ABC, 0x9B5C, 0x5ABE, 0x9B5D, 0x5ACB, 0x9B5E, 0x5AC2,
+	0x9B5F, 0x5ABD, 0x9B60, 0x5AE3, 0x9B61, 0x5AD7, 0x9B62, 0x5AE6,
+	0x9B63, 0x5AE9, 0x9B64, 0x5AD6, 0x9B65, 0x5AFA, 0x9B66, 0x5AFB,
+	0x9B67, 0x5B0C, 0x9B68, 0x5B0B, 0x9B69, 0x5B16, 0x9B6A, 0x5B32,
+	0x9B6B, 0x5AD0, 0x9B6C, 0x5B2A, 0x9B6D, 0x5B36, 0x9B6E, 0x5B3E,
+	0x9B6F, 0x5B43, 0x9B70, 0x5B45, 0x9B71, 0x5B40, 0x9B72, 0x5B51,
+	0x9B73, 0x5B55, 0x9B74, 0x5B5A, 0x9B75, 0x5B5B, 0x9B76, 0x5B65,
+	0x9B77, 0x5B69, 0x9B78, 0x5B70, 0x9B79, 0x5B73, 0x9B7A, 0x5B75,
+	0x9B7B, 0x5B78, 0x9B7C, 0x6588, 0x9B7D, 0x5B7A, 0x9B7E, 0x5B80,
+	0x9B80, 0x5B83, 0x9B81, 0x5BA6, 0x9B82, 0x5BB8, 0x9B83, 0x5BC3,
+	0x9B84, 0x5BC7, 0x9B85, 0x5BC9, 0x9B86, 0x5BD4, 0x9B87, 0x5BD0,
+	0x9B88, 0x5BE4, 0x9B89, 0x5BE6, 0x9B8A, 0x5BE2, 0x9B8B, 0x5BDE,
+	0x9B8C, 0x5BE5, 0x9B8D, 0x5BEB, 0x9B8E, 0x5BF0, 0x9B8F, 0x5BF6,
+	0x9B90, 0x5BF3, 0x9B91, 0x5C05, 0x9B92, 0x5C07, 0x9B93, 0x5C08,
+	0x9B94, 0x5C0D, 0x9B95, 0x5C13, 0x9B96, 0x5C20, 0x9B97, 0x5C22,
+	0x9B98, 0x5C28, 0x9B99, 0x5C38, 0x9B9A, 0x5C39, 0x9B9B, 0x5C41,
+	0x9B9C, 0x5C46, 0x9B9D, 0x5C4E, 0x9B9E, 0x5C53, 0x9B9F, 0x5C50,
+	0x9BA0, 0x5C4F, 0x9BA1, 0x5B71, 0x9BA2, 0x5C6C, 0x9BA3, 0x5C6E,
+	0x9BA4, 0x4E62, 0x9BA5, 0x5C76, 0x9BA6, 0x5C79, 0x9BA7, 0x5C8C,
+	0x9BA8, 0x5C91, 0x9BA9, 0x5C94, 0x9BAA, 0x599B, 0x9BAB, 0x5CAB,
+	0x9BAC, 0x5CBB, 0x9BAD, 0x5CB6, 0x9BAE, 0x5CBC, 0x9BAF, 0x5CB7,
+	0x9BB0, 0x5CC5, 0x9BB1, 0x5CBE, 0x9BB2, 0x5CC7, 0x9BB3, 0x5CD9,
+	0x9BB4, 0x5CE9, 0x9BB5, 0x5CFD, 0x9BB6, 0x5CFA, 0x9BB7, 0x5CED,
+	0x9BB8, 0x5D8C, 0x9BB9, 0x5CEA, 0x9BBA, 0x5D0B, 0x9BBB, 0x5D15,
+	0x9BBC, 0x5D17, 0x9BBD, 0x5D5C, 0x9BBE, 0x5D1F, 0x9BBF, 0x5D1B,
+	0x9BC0, 0x5D11, 0x9BC1, 0x5D14, 0x9BC2, 0x5D22, 0x9BC3, 0x5D1A,
+	0x9BC4, 0x5D19, 0x9BC5, 0x5D18, 0x9BC6, 0x5D4C, 0x9BC7, 0x5D52,
+	0x9BC8, 0x5D4E, 0x9BC9, 0x5D4B, 0x9BCA, 0x5D6C, 0x9BCB, 0x5D73,
+	0x9BCC, 0x5D76, 0x9BCD, 0x5D87, 0x9BCE, 0x5D84, 0x9BCF, 0x5D82,
+	0x9BD0, 0x5DA2, 0x9BD1, 0x5D9D, 0x9BD2, 0x5DAC, 0x9BD3, 0x5DAE,
+	0x9BD4, 0x5DBD, 0x9BD5, 0x5D90, 0x9BD6, 0x5DB7, 0x9BD7, 0x5DBC,
+	0x9BD8, 0x5DC9, 0x9BD9, 0x5DCD, 0x9BDA, 0x5DD3, 0x9BDB, 0x5DD2,
+	0x9BDC, 0x5DD6, 0x9BDD, 0x5DDB, 0x9BDE, 0x5DEB, 0x9BDF, 0x5DF2,
+	0x9BE0, 0x5DF5, 0x9BE1, 0x5E0B, 0x9BE2, 0x5E1A, 0x9BE3, 0x5E19,
+	0x9BE4, 0x5E11, 0x9BE5, 0x5E1B, 0x9BE6, 0x5E36, 0x9BE7, 0x5E37,
+	0x9BE8, 0x5E44, 0x9BE9, 0x5E43, 0x9BEA, 0x5E40, 0x9BEB, 0x5E4E,
+	0x9BEC, 0x5E57, 0x9BED, 0x5E54, 0x9BEE, 0x5E5F, 0x9BEF, 0x5E62,
+	0x9BF0, 0x5E64, 0x9BF1, 0x5E47, 0x9BF2, 0x5E75, 0x9BF3, 0x5E76,
+	0x9BF4, 0x5E7A, 0x9BF5, 0x9EBC, 0x9BF6, 0x5E7F, 0x9BF7, 0x5EA0,
+	0x9BF8, 0x5EC1, 0x9BF9, 0x5EC2, 0x9BFA, 0x5EC8, 0x9BFB, 0x5ED0,
+	0x9BFC, 0x5ECF, 0x9C40, 0x5ED6, 0x9C41, 0x5EE3, 0x9C42, 0x5EDD,
+	0x9C43, 0x5EDA, 0x9C44, 0x5EDB, 0x9C45, 0x5EE2, 0x9C46, 0x5EE1,
+	0x9C47, 0x5EE8, 0x9C48, 0x5EE9, 0x9C49, 0x5EEC, 0x9C4A, 0x5EF1,
+	0x9C4B, 0x5EF3, 0x9C4C, 0x5EF0, 0x9C4D, 0x5EF4, 0x9C4E, 0x5EF8,
+	0x9C4F, 0x5EFE, 0x9C50, 0x5F03, 0x9C51, 0x5F09, 0x9C52, 0x5F5D,
+	0x9C53, 0x5F5C, 0x9C54, 0x5F0B, 0x9C55, 0x5F11, 0x9C56, 0x5F16,
+	0x9C57, 0x5F29, 0x9C58, 0x5F2D, 0x9C59, 0x5F38, 0x9C5A, 0x5F41,
+	0x9C5B, 0x5F48, 0x9C5C, 0x5F4C, 0x9C5D, 0x5F4E, 0x9C5E, 0x5F2F,
+	0x9C5F, 0x5F51, 0x9C60, 0x5F56, 0x9C61, 0x5F57, 0x9C62, 0x5F59,
+	0x9C63, 0x5F61, 0x9C64, 0x5F6D, 0x9C65, 0x5F73, 0x9C66, 0x5F77,
+	0x9C67, 0x5F83, 0x9C68, 0x5F82, 0x9C69, 0x5F7F, 0x9C6A, 0x5F8A,
+	0x9C6B, 0x5F88, 0x9C6C, 0x5F91, 0x9C6D, 0x5F87, 0x9C6E, 0x5F9E,
+	0x9C6F, 0x5F99, 0x9C70, 0x5F98, 0x9C71, 0x5FA0, 0x9C72, 0x5FA8,
+	0x9C73, 0x5FAD, 0x9C74, 0x5FBC, 0x9C75, 0x5FD6, 0x9C76, 0x5FFB,
+	0x9C77, 0x5FE4, 0x9C78, 0x5FF8, 0x9C79, 0x5FF1, 0x9C7A, 0x5FDD,
+	0x9C7B, 0x60B3, 0x9C7C, 0x5FFF, 0x9C7D, 0x6021, 0x9C7E, 0x6060,
+	0x9C80, 0x6019, 0x9C81, 0x6010, 0x9C82, 0x6029, 0x9C83, 0x600E,
+	0x9C84, 0x6031, 0x9C85, 0x601B, 0x9C86, 0x6015, 0x9C87, 0x602B,
+	0x9C88, 0x6026, 0x9C89, 0x600F, 0x9C8A, 0x603A, 0x9C8B, 0x605A,
+	0x9C8C, 0x6041, 0x9C8D, 0x606A, 0x9C8E, 0x6077, 0x9C8F, 0x605F,
+	0x9C90, 0x604A, 0x9C91, 0x6046, 0x9C92, 0x604D, 0x9C93, 0x6063,
+	0x9C94, 0x6043, 0x9C95, 0x6064, 0x9C96, 0x6042, 0x9C97, 0x606C,
+	0x9C98, 0x606B, 0x9C99, 0x6059, 0x9C9A, 0x6081, 0x9C9B, 0x608D,
+	0x9C9C, 0x60E7, 0x9C9D, 0x6083, 0x9C9E, 0x609A, 0x9C9F, 0x6084,
+	0x9CA0, 0x609B, 0x9CA1, 0x6096, 0x9CA2, 0x6097, 0x9CA3, 0x6092,
+	0x9CA4, 0x60A7, 0x9CA5, 0x608B, 0x9CA6, 0x60E1, 0x9CA7, 0x60B8,
+	0x9CA8, 0x60E0, 0x9CA9, 0x60D3, 0x9CAA, 0x60B4, 0x9CAB, 0x5FF0,
+	0x9CAC, 0x60BD, 0x9CAD, 0x60C6, 0x9CAE, 0x60B5, 0x9CAF, 0x60D8,
+	0x9CB0, 0x614D, 0x9CB1, 0x6115, 0x9CB2, 0x6106, 0x9CB3, 0x60F6,
+	0x9CB4, 0x60F7, 0x9CB5, 0x6100, 0x9CB6, 0x60F4, 0x9CB7, 0x60FA,
+	0x9CB8, 0x6103, 0x9CB9, 0x6121, 0x9CBA, 0x60FB, 0x9CBB, 0x60F1,
+	0x9CBC, 0x610D, 0x9CBD, 0x610E, 0x9CBE, 0x6147, 0x9CBF, 0x613E,
+	0x9CC0, 0x6128, 0x9CC1, 0x6127, 0x9CC2, 0x614A, 0x9CC3, 0x613F,
+	0x9CC4, 0x613C, 0x9CC5, 0x612C, 0x9CC6, 0x6134, 0x9CC7, 0x613D,
+	0x9CC8, 0x6142, 0x9CC9, 0x6144, 0x9CCA, 0x6173, 0x9CCB, 0x6177,
+	0x9CCC, 0x6158, 0x9CCD, 0x6159, 0x9CCE, 0x615A, 0x9CCF, 0x616B,
+	0x9CD0, 0x6174, 0x9CD1, 0x616F, 0x9CD2, 0x6165, 0x9CD3, 0x6171,
+	0x9CD4, 0x615F, 0x9CD5, 0x615D, 0x9CD6, 0x6153, 0x9CD7, 0x6175,
+	0x9CD8, 0x6199, 0x9CD9, 0x6196, 0x9CDA, 0x6187, 0x9CDB, 0x61AC,
+	0x9CDC, 0x6194, 0x9CDD, 0x619A, 0x9CDE, 0x618A, 0x9CDF, 0x6191,
+	0x9CE0, 0x61AB, 0x9CE1, 0x61AE, 0x9CE2, 0x61CC, 0x9CE3, 0x61CA,
+	0x9CE4, 0x61C9, 0x9CE5, 0x61F7, 0x9CE6, 0x61C8, 0x9CE7, 0x61C3,
+	0x9CE8, 0x61C6, 0x9CE9, 0x61BA, 0x9CEA, 0x61CB, 0x9CEB, 0x7F79,
+	0x9CEC, 0x61CD, 0x9CED, 0x61E6, 0x9CEE, 0x61E3, 0x9CEF, 0x61F6,
+	0x9CF0, 0x61FA, 0x9CF1, 0x61F4, 0x9CF2, 0x61FF, 0x9CF3, 0x61FD,
+	0x9CF4, 0x61FC, 0x9CF5, 0x61FE, 0x9CF6, 0x6200, 0x9CF7, 0x6208,
+	0x9CF8, 0x6209, 0x9CF9, 0x620D, 0x9CFA, 0x620C, 0x9CFB, 0x6214,
+	0x9CFC, 0x621B, 0x9D40, 0x621E, 0x9D41, 0x6221, 0x9D42, 0x622A,
+	0x9D43, 0x622E, 0x9D44, 0x6230, 0x9D45, 0x6232, 0x9D46, 0x6233,
+	0x9D47, 0x6241, 0x9D48, 0x624E, 0x9D49, 0x625E, 0x9D4A, 0x6263,
+	0x9D4B, 0x625B, 0x9D4C, 0x6260, 0x9D4D, 0x6268, 0x9D4E, 0x627C,
+	0x9D4F, 0x6282, 0x9D50, 0x6289, 0x9D51, 0x627E, 0x9D52, 0x6292,
+	0x9D53, 0x6293, 0x9D54, 0x6296, 0x9D55, 0x62D4, 0x9D56, 0x6283,
+	0x9D57, 0x6294, 0x9D58, 0x62D7, 0x9D59, 0x62D1, 0x9D5A, 0x62BB,
+	0x9D5B, 0x62CF, 0x9D5C, 0x62FF, 0x9D5D, 0x62C6, 0x9D5E, 0x64D4,
+	0x9D5F, 0x62C8, 0x9D60, 0x62DC, 0x9D61, 0x62CC, 0x9D62, 0x62CA,
+	0x9D63, 0x62C2, 0x9D64, 0x62C7, 0x9D65, 0x629B, 0x9D66, 0x62C9,
+	0x9D67, 0x630C, 0x9D68, 0x62EE, 0x9D69, 0x62F1, 0x9D6A, 0x6327,
+	0x9D6B, 0x6302, 0x9D6C, 0x6308, 0x9D6D, 0x62EF, 0x9D6E, 0x62F5,
+	0x9D6F, 0x6350, 0x9D70, 0x633E, 0x9D71, 0x634D, 0x9D72, 0x641C,
+	0x9D73, 0x634F, 0x9D74, 0x6396, 0x9D75, 0x638E, 0x9D76, 0x6380,
+	0x9D77, 0x63AB, 0x9D78, 0x6376, 0x9D79, 0x63A3, 0x9D7A, 0x638F,
+	0x9D7B, 0x6389, 0x9D7C, 0x639F, 0x9D7D, 0x63B5, 0x9D7E, 0x636B,
+	0x9D80, 0x6369, 0x9D81, 0x63BE, 0x9D82, 0x63E9, 0x9D83, 0x63C0,
+	0x9D84, 0x63C6, 0x9D85, 0x63E3, 0x9D86, 0x63C9, 0x9D87, 0x63D2,
+	0x9D88, 0x63F6, 0x9D89, 0x63C4, 0x9D8A, 0x6416, 0x9D8B, 0x6434,
+	0x9D8C, 0x6406, 0x9D8D, 0x6413, 0x9D8E, 0x6426, 0x9D8F, 0x6436,
+	0x9D90, 0x651D, 0x9D91, 0x6417, 0x9D92, 0x6428, 0x9D93, 0x640F,
+	0x9D94, 0x6467, 0x9D95, 0x646F, 0x9D96, 0x6476, 0x9D97, 0x644E,
+	0x9D98, 0x652A, 0x9D99, 0x6495, 0x9D9A, 0x6493, 0x9D9B, 0x64A5,
+	0x9D9C, 0x64A9, 0x9D9D, 0x6488, 0x9D9E, 0x64BC, 0x9D9F, 0x64DA,
+	0x9DA0, 0x64D2, 0x9DA1, 0x64C5, 0x9DA2, 0x64C7, 0x9DA3, 0x64BB,
+	0x9DA4, 0x64D8, 0x9DA5, 0x64C2, 0x9DA6, 0x64F1, 0x9DA7, 0x64E7,
+	0x9DA8, 0x8209, 0x9DA9, 0x64E0, 0x9DAA, 0x64E1, 0x9DAB, 0x62AC,
+	0x9DAC, 0x64E3, 0x9DAD, 0x64EF, 0x9DAE, 0x652C, 0x9DAF, 0x64F6,
+	0x9DB0, 0x64F4, 0x9DB1, 0x64F2, 0x9DB2, 0x64FA, 0x9DB3, 0x6500,
+	0x9DB4, 0x64FD, 0x9DB5, 0x6518, 0x9DB6, 0x651C, 0x9DB7, 0x6505,
+	0x9DB8, 0x6524, 0x9DB9, 0x6523, 0x9DBA, 0x652B, 0x9DBB, 0x6534,
+	0x9DBC, 0x6535, 0x9DBD, 0x6537, 0x9DBE, 0x6536, 0x9DBF, 0x6538,
+	0x9DC0, 0x754B, 0x9DC1, 0x6548, 0x9DC2, 0x6556, 0x9DC3, 0x6555,
+	0x9DC4, 0x654D, 0x9DC5, 0x6558, 0x9DC6, 0x655E, 0x9DC7, 0x655D,
+	0x9DC8, 0x6572, 0x9DC9, 0x6578, 0x9DCA, 0x6582, 0x9DCB, 0x6583,
+	0x9DCC, 0x8B8A, 0x9DCD, 0x659B, 0x9DCE, 0x659F, 0x9DCF, 0x65AB,
+	0x9DD0, 0x65B7, 0x9DD1, 0x65C3, 0x9DD2, 0x65C6, 0x9DD3, 0x65C1,
+	0x9DD4, 0x65C4, 0x9DD5, 0x65CC, 0x9DD6, 0x65D2, 0x9DD7, 0x65DB,
+	0x9DD8, 0x65D9, 0x9DD9, 0x65E0, 0x9DDA, 0x65E1, 0x9DDB, 0x65F1,
+	0x9DDC, 0x6772, 0x9DDD, 0x660A, 0x9DDE, 0x6603, 0x9DDF, 0x65FB,
+	0x9DE0, 0x6773, 0x9DE1, 0x6635, 0x9DE2, 0x6636, 0x9DE3, 0x6634,
+	0x9DE4, 0x661C, 0x9DE5, 0x664F, 0x9DE6, 0x6644, 0x9DE7, 0x6649,
+	0x9DE8, 0x6641, 0x9DE9, 0x665E, 0x9DEA, 0x665D, 0x9DEB, 0x6664,
+	0x9DEC, 0x6667, 0x9DED, 0x6668, 0x9DEE, 0x665F, 0x9DEF, 0x6662,
+	0x9DF0, 0x6670, 0x9DF1, 0x6683, 0x9DF2, 0x6688, 0x9DF3, 0x668E,
+	0x9DF4, 0x6689, 0x9DF5, 0x6684, 0x9DF6, 0x6698, 0x9DF7, 0x669D,
+	0x9DF8, 0x66C1, 0x9DF9, 0x66B9, 0x9DFA, 0x66C9, 0x9DFB, 0x66BE,
+	0x9DFC, 0x66BC, 0x9E40, 0x66C4, 0x9E41, 0x66B8, 0x9E42, 0x66D6,
+	0x9E43, 0x66DA, 0x9E44, 0x66E0, 0x9E45, 0x663F, 0x9E46, 0x66E6,
+	0x9E47, 0x66E9, 0x9E48, 0x66F0, 0x9E49, 0x66F5, 0x9E4A, 0x66F7,
+	0x9E4B, 0x670F, 0x9E4C, 0x6716, 0x9E4D, 0x671E, 0x9E4E, 0x6726,
+	0x9E4F, 0x6727, 0x9E50, 0x9738, 0x9E51, 0x672E, 0x9E52, 0x673F,
+	0x9E53, 0x6736, 0x9E54, 0x6741, 0x9E55, 0x6738, 0x9E56, 0x6737,
+	0x9E57, 0x6746, 0x9E58, 0x675E, 0x9E59, 0x6760, 0x9E5A, 0x6759,
+	0x9E5B, 0x6763, 0x9E5C, 0x6764, 0x9E5D, 0x6789, 0x9E5E, 0x6770,
+	0x9E5F, 0x67A9, 0x9E60, 0x677C, 0x9E61, 0x676A, 0x9E62, 0x678C,
+	0x9E63, 0x678B, 0x9E64, 0x67A6, 0x9E65, 0x67A1, 0x9E66, 0x6785,
+	0x9E67, 0x67B7, 0x9E68, 0x67EF, 0x9E69, 0x67B4, 0x9E6A, 0x67EC,
+	0x9E6B, 0x67B3, 0x9E6C, 0x67E9, 0x9E6D, 0x67B8, 0x9E6E, 0x67E4,
+	0x9E6F, 0x67DE, 0x9E70, 0x67DD, 0x9E71, 0x67E2, 0x9E72, 0x67EE,
+	0x9E73, 0x67B9, 0x9E74, 0x67CE, 0x9E75, 0x67C6, 0x9E76, 0x67E7,
+	0x9E77, 0x6A9C, 0x9E78, 0x681E, 0x9E79, 0x6846, 0x9E7A, 0x6829,
+	0x9E7B, 0x6840, 0x9E7C, 0x684D, 0x9E7D, 0x6832, 0x9E7E, 0x684E,
+	0x9E80, 0x68B3, 0x9E81, 0x682B, 0x9E82, 0x6859, 0x9E83, 0x6863,
+	0x9E84, 0x6877, 0x9E85, 0x687F, 0x9E86, 0x689F, 0x9E87, 0x688F,
+	0x9E88, 0x68AD, 0x9E89, 0x6894, 0x9E8A, 0x689D, 0x9E8B, 0x689B,
+	0x9E8C, 0x6883, 0x9E8D, 0x6AAE, 0x9E8E, 0x68B9, 0x9E8F, 0x6874,
+	0x9E90, 0x68B5, 0x9E91, 0x68A0, 0x9E92, 0x68BA, 0x9E93, 0x690F,
+	0x9E94, 0x688D, 0x9E95, 0x687E, 0x9E96, 0x6901, 0x9E97, 0x68CA,
+	0x9E98, 0x6908, 0x9E99, 0x68D8, 0x9E9A, 0x6922, 0x9E9B, 0x6926,
+	0x9E9C, 0x68E1, 0x9E9D, 0x690C, 0x9E9E, 0x68CD, 0x9E9F, 0x68D4,
+	0x9EA0, 0x68E7, 0x9EA1, 0x68D5, 0x9EA2, 0x6936, 0x9EA3, 0x6912,
+	0x9EA4, 0x6904, 0x9EA5, 0x68D7, 0x9EA6, 0x68E3, 0x9EA7, 0x6925,
+	0x9EA8, 0x68F9, 0x9EA9, 0x68E0, 0x9EAA, 0x68EF, 0x9EAB, 0x6928,
+	0x9EAC, 0x692A, 0x9EAD, 0x691A, 0x9EAE, 0x6923, 0x9EAF, 0x6921,
+	0x9EB0, 0x68C6, 0x9EB1, 0x6979, 0x9EB2, 0x6977, 0x9EB3, 0x695C,
+	0x9EB4, 0x6978, 0x9EB5, 0x696B, 0x9EB6, 0x6954, 0x9EB7, 0x697E,
+	0x9EB8, 0x696E, 0x9EB9, 0x6939, 0x9EBA, 0x6974, 0x9EBB, 0x693D,
+	0x9EBC, 0x6959, 0x9EBD, 0x6930, 0x9EBE, 0x6961, 0x9EBF, 0x695E,
+	0x9EC0, 0x695D, 0x9EC1, 0x6981, 0x9EC2, 0x696A, 0x9EC3, 0x69B2,
+	0x9EC4, 0x69AE, 0x9EC5, 0x69D0, 0x9EC6, 0x69BF, 0x9EC7, 0x69C1,
+	0x9EC8, 0x69D3, 0x9EC9, 0x69BE, 0x9ECA, 0x69CE, 0x9ECB, 0x5BE8,
+	0x9ECC, 0x69CA, 0x9ECD, 0x69DD, 0x9ECE, 0x69BB, 0x9ECF, 0x69C3,
+	0x9ED0, 0x69A7, 0x9ED1, 0x6A2E, 0x9ED2, 0x6991, 0x9ED3, 0x69A0,
+	0x9ED4, 0x699C, 0x9ED5, 0x6995, 0x9ED6, 0x69B4, 0x9ED7, 0x69DE,
+	0x9ED8, 0x69E8, 0x9ED9, 0x6A02, 0x9EDA, 0x6A1B, 0x9EDB, 0x69FF,
+	0x9EDC, 0x6B0A, 0x9EDD, 0x69F9, 0x9EDE, 0x69F2, 0x9EDF, 0x69E7,
+	0x9EE0, 0x6A05, 0x9EE1, 0x69B1, 0x9EE2, 0x6A1E, 0x9EE3, 0x69ED,
+	0x9EE4, 0x6A14, 0x9EE5, 0x69EB, 0x9EE6, 0x6A0A, 0x9EE7, 0x6A12,
+	0x9EE8, 0x6AC1, 0x9EE9, 0x6A23, 0x9EEA, 0x6A13, 0x9EEB, 0x6A44,
+	0x9EEC, 0x6A0C, 0x9EED, 0x6A72, 0x9EEE, 0x6A36, 0x9EEF, 0x6A78,
+	0x9EF0, 0x6A47, 0x9EF1, 0x6A62, 0x9EF2, 0x6A59, 0x9EF3, 0x6A66,
+	0x9EF4, 0x6A48, 0x9EF5, 0x6A38, 0x9EF6, 0x6A22, 0x9EF7, 0x6A90,
+	0x9EF8, 0x6A8D, 0x9EF9, 0x6AA0, 0x9EFA, 0x6A84, 0x9EFB, 0x6AA2,
+	0x9EFC, 0x6AA3, 0x9F40, 0x6A97, 0x9F41, 0x8617, 0x9F42, 0x6ABB,
+	0x9F43, 0x6AC3, 0x9F44, 0x6AC2, 0x9F45, 0x6AB8, 0x9F46, 0x6AB3,
+	0x9F47, 0x6AAC, 0x9F48, 0x6ADE, 0x9F49, 0x6AD1, 0x9F4A, 0x6ADF,
+	0x9F4B, 0x6AAA, 0x9F4C, 0x6ADA, 0x9F4D, 0x6AEA, 0x9F4E, 0x6AFB,
+	0x9F4F, 0x6B05, 0x9F50, 0x8616, 0x9F51, 0x6AFA, 0x9F52, 0x6B12,
+	0x9F53, 0x6B16, 0x9F54, 0x9B31, 0x9F55, 0x6B1F, 0x9F56, 0x6B38,
+	0x9F57, 0x6B37, 0x9F58, 0x76DC, 0x9F59, 0x6B39, 0x9F5A, 0x98EE,
+	0x9F5B, 0x6B47, 0x9F5C, 0x6B43, 0x9F5D, 0x6B49, 0x9F5E, 0x6B50,
+	0x9F5F, 0x6B59, 0x9F60, 0x6B54, 0x9F61, 0x6B5B, 0x9F62, 0x6B5F,
+	0x9F63, 0x6B61, 0x9F64, 0x6B78, 0x9F65, 0x6B79, 0x9F66, 0x6B7F,
+	0x9F67, 0x6B80, 0x9F68, 0x6B84, 0x9F69, 0x6B83, 0x9F6A, 0x6B8D,
+	0x9F6B, 0x6B98, 0x9F6C, 0x6B95, 0x9F6D, 0x6B9E, 0x9F6E, 0x6BA4,
+	0x9F6F, 0x6BAA, 0x9F70, 0x6BAB, 0x9F71, 0x6BAF, 0x9F72, 0x6BB2,
+	0x9F73, 0x6BB1, 0x9F74, 0x6BB3, 0x9F75, 0x6BB7, 0x9F76, 0x6BBC,
+	0x9F77, 0x6BC6, 0x9F78, 0x6BCB, 0x9F79, 0x6BD3, 0x9F7A, 0x6BDF,
+	0x9F7B, 0x6BEC, 0x9F7C, 0x6BEB, 0x9F7D, 0x6BF3, 0x9F7E, 0x6BEF,
+	0x9F80, 0x9EBE, 0x9F81, 0x6C08, 0x9F82, 0x6C13, 0x9F83, 0x6C14,
+	0x9F84, 0x6C1B, 0x9F85, 0x6C24, 0x9F86, 0x6C23, 0x9F87, 0x6C5E,
+	0x9F88, 0x6C55, 0x9F89, 0x6C62, 0x9F8A, 0x6C6A, 0x9F8B, 0x6C82,
+	0x9F8C, 0x6C8D, 0x9F8D, 0x6C9A, 0x9F8E, 0x6C81, 0x9F8F, 0x6C9B,
+	0x9F90, 0x6C7E, 0x9F91, 0x6C68, 0x9F92, 0x6C73, 0x9F93, 0x6C92,
+	0x9F94, 0x6C90, 0x9F95, 0x6CC4, 0x9F96, 0x6CF1, 0x9F97, 0x6CD3,
+	0x9F98, 0x6CBD, 0x9F99, 0x6CD7, 0x9F9A, 0x6CC5, 0x9F9B, 0x6CDD,
+	0x9F9C, 0x6CAE, 0x9F9D, 0x6CB1, 0x9F9E, 0x6CBE, 0x9F9F, 0x6CBA,
+	0x9FA0, 0x6CDB, 0x9FA1, 0x6CEF, 0x9FA2, 0x6CD9, 0x9FA3, 0x6CEA,
+	0x9FA4, 0x6D1F, 0x9FA5, 0x884D, 0x9FA6, 0x6D36, 0x9FA7, 0x6D2B,
+	0x9FA8, 0x6D3D, 0x9FA9, 0x6D38, 0x9FAA, 0x6D19, 0x9FAB, 0x6D35,
+	0x9FAC, 0x6D33, 0x9FAD, 0x6D12, 0x9FAE, 0x6D0C, 0x9FAF, 0x6D63,
+	0x9FB0, 0x6D93, 0x9FB1, 0x6D64, 0x9FB2, 0x6D5A, 0x9FB3, 0x6D79,
+	0x9FB4, 0x6D59, 0x9FB5, 0x6D8E, 0x9FB6, 0x6D95, 0x9FB7, 0x6FE4,
+	0x9FB8, 0x6D85, 0x9FB9, 0x6DF9, 0x9FBA, 0x6E15, 0x9FBB, 0x6E0A,
+	0x9FBC, 0x6DB5, 0x9FBD, 0x6DC7, 0x9FBE, 0x6DE6, 0x9FBF, 0x6DB8,
+	0x9FC0, 0x6DC6, 0x9FC1, 0x6DEC, 0x9FC2, 0x6DDE, 0x9FC3, 0x6DCC,
+	0x9FC4, 0x6DE8, 0x9FC5, 0x6DD2, 0x9FC6, 0x6DC5, 0x9FC7, 0x6DFA,
+	0x9FC8, 0x6DD9, 0x9FC9, 0x6DE4, 0x9FCA, 0x6DD5, 0x9FCB, 0x6DEA,
+	0x9FCC, 0x6DEE, 0x9FCD, 0x6E2D, 0x9FCE, 0x6E6E, 0x9FCF, 0x6E2E,
+	0x9FD0, 0x6E19, 0x9FD1, 0x6E72, 0x9FD2, 0x6E5F, 0x9FD3, 0x6E3E,
+	0x9FD4, 0x6E23, 0x9FD5, 0x6E6B, 0x9FD6, 0x6E2B, 0x9FD7, 0x6E76,
+	0x9FD8, 0x6E4D, 0x9FD9, 0x6E1F, 0x9FDA, 0x6E43, 0x9FDB, 0x6E3A,
+	0x9FDC, 0x6E4E, 0x9FDD, 0x6E24, 0x9FDE, 0x6EFF, 0x9FDF, 0x6E1D,
+	0x9FE0, 0x6E38, 0x9FE1, 0x6E82, 0x9FE2, 0x6EAA, 0x9FE3, 0x6E98,
+	0x9FE4, 0x6EC9, 0x9FE5, 0x6EB7, 0x9FE6, 0x6ED3, 0x9FE7, 0x6EBD,
+	0x9FE8, 0x6EAF, 0x9FE9, 0x6EC4, 0x9FEA, 0x6EB2, 0x9FEB, 0x6ED4,
+	0x9FEC, 0x6ED5, 0x9FED, 0x6E8F, 0x9FEE, 0x6EA5, 0x9FEF, 0x6EC2,
+	0x9FF0, 0x6E9F, 0x9FF1, 0x6F41, 0x9FF2, 0x6F11, 0x9FF3, 0x704C,
+	0x9FF4, 0x6EEC, 0x9FF5, 0x6EF8, 0x9FF6, 0x6EFE, 0x9FF7, 0x6F3F,
+	0x9FF8, 0x6EF2, 0x9FF9, 0x6F31, 0x9FFA, 0x6EEF, 0x9FFB, 0x6F32,
+	0x9FFC, 0x6ECC, 0xE040, 0x6F3E, 0xE041, 0x6F13, 0xE042, 0x6EF7,
+	0xE043, 0x6F86, 0xE044, 0x6F7A, 0xE045, 0x6F78, 0xE046, 0x6F81,
+	0xE047, 0x6F80, 0xE048, 0x6F6F, 0xE049, 0x6F5B, 0xE04A, 0x6FF3,
+	0xE04B, 0x6F6D, 0xE04C, 0x6F82, 0xE04D, 0x6F7C, 0xE04E, 0x6F58,
+	0xE04F, 0x6F8E, 0xE050, 0x6F91, 0xE051, 0x6FC2, 0xE052, 0x6F66,
+	0xE053, 0x6FB3, 0xE054, 0x6FA3, 0xE055, 0x6FA1, 0xE056, 0x6FA4,
+	0xE057, 0x6FB9, 0xE058, 0x6FC6, 0xE059, 0x6FAA, 0xE05A, 0x6FDF,
+	0xE05B, 0x6FD5, 0xE05C, 0x6FEC, 0xE05D, 0x6FD4, 0xE05E, 0x6FD8,
+	0xE05F, 0x6FF1, 0xE060, 0x6FEE, 0xE061, 0x6FDB, 0xE062, 0x7009,
+	0xE063, 0x700B, 0xE064, 0x6FFA, 0xE065, 0x7011, 0xE066, 0x7001,
+	0xE067, 0x700F, 0xE068, 0x6FFE, 0xE069, 0x701B, 0xE06A, 0x701A,
+	0xE06B, 0x6F74, 0xE06C, 0x701D, 0xE06D, 0x7018, 0xE06E, 0x701F,
+	0xE06F, 0x7030, 0xE070, 0x703E, 0xE071, 0x7032, 0xE072, 0x7051,
+	0xE073, 0x7063, 0xE074, 0x7099, 0xE075, 0x7092, 0xE076, 0x70AF,
+	0xE077, 0x70F1, 0xE078, 0x70AC, 0xE079, 0x70B8, 0xE07A, 0x70B3,
+	0xE07B, 0x70AE, 0xE07C, 0x70DF, 0xE07D, 0x70CB, 0xE07E, 0x70DD,
+	0xE080, 0x70D9, 0xE081, 0x7109, 0xE082, 0x70FD, 0xE083, 0x711C,
+	0xE084, 0x7119, 0xE085, 0x7165, 0xE086, 0x7155, 0xE087, 0x7188,
+	0xE088, 0x7166, 0xE089, 0x7162, 0xE08A, 0x714C, 0xE08B, 0x7156,
+	0xE08C, 0x716C, 0xE08D, 0x718F, 0xE08E, 0x71FB, 0xE08F, 0x7184,
+	0xE090, 0x7195, 0xE091, 0x71A8, 0xE092, 0x71AC, 0xE093, 0x71D7,
+	0xE094, 0x71B9, 0xE095, 0x71BE, 0xE096, 0x71D2, 0xE097, 0x71C9,
+	0xE098, 0x71D4, 0xE099, 0x71CE, 0xE09A, 0x71E0, 0xE09B, 0x71EC,
+	0xE09C, 0x71E7, 0xE09D, 0x71F5, 0xE09E, 0x71FC, 0xE09F, 0x71F9,
+	0xE0A0, 0x71FF, 0xE0A1, 0x720D, 0xE0A2, 0x7210, 0xE0A3, 0x721B,
+	0xE0A4, 0x7228, 0xE0A5, 0x722D, 0xE0A6, 0x722C, 0xE0A7, 0x7230,
+	0xE0A8, 0x7232, 0xE0A9, 0x723B, 0xE0AA, 0x723C, 0xE0AB, 0x723F,
+	0xE0AC, 0x7240, 0xE0AD, 0x7246, 0xE0AE, 0x724B, 0xE0AF, 0x7258,
+	0xE0B0, 0x7274, 0xE0B1, 0x727E, 0xE0B2, 0x7282, 0xE0B3, 0x7281,
+	0xE0B4, 0x7287, 0xE0B5, 0x7292, 0xE0B6, 0x7296, 0xE0B7, 0x72A2,
+	0xE0B8, 0x72A7, 0xE0B9, 0x72B9, 0xE0BA, 0x72B2, 0xE0BB, 0x72C3,
+	0xE0BC, 0x72C6, 0xE0BD, 0x72C4, 0xE0BE, 0x72CE, 0xE0BF, 0x72D2,
+	0xE0C0, 0x72E2, 0xE0C1, 0x72E0, 0xE0C2, 0x72E1, 0xE0C3, 0x72F9,
+	0xE0C4, 0x72F7, 0xE0C5, 0x500F, 0xE0C6, 0x7317, 0xE0C7, 0x730A,
+	0xE0C8, 0x731C, 0xE0C9, 0x7316, 0xE0CA, 0x731D, 0xE0CB, 0x7334,
+	0xE0CC, 0x732F, 0xE0CD, 0x7329, 0xE0CE, 0x7325, 0xE0CF, 0x733E,
+	0xE0D0, 0x734E, 0xE0D1, 0x734F, 0xE0D2, 0x9ED8, 0xE0D3, 0x7357,
+	0xE0D4, 0x736A, 0xE0D5, 0x7368, 0xE0D6, 0x7370, 0xE0D7, 0x7378,
+	0xE0D8, 0x7375, 0xE0D9, 0x737B, 0xE0DA, 0x737A, 0xE0DB, 0x73C8,
+	0xE0DC, 0x73B3, 0xE0DD, 0x73CE, 0xE0DE, 0x73BB, 0xE0DF, 0x73C0,
+	0xE0E0, 0x73E5, 0xE0E1, 0x73EE, 0xE0E2, 0x73DE, 0xE0E3, 0x74A2,
+	0xE0E4, 0x7405, 0xE0E5, 0x746F, 0xE0E6, 0x7425, 0xE0E7, 0x73F8,
+	0xE0E8, 0x7432, 0xE0E9, 0x743A, 0xE0EA, 0x7455, 0xE0EB, 0x743F,
+	0xE0EC, 0x745F, 0xE0ED, 0x7459, 0xE0EE, 0x7441, 0xE0EF, 0x745C,
+	0xE0F0, 0x7469, 0xE0F1, 0x7470, 0xE0F2, 0x7463, 0xE0F3, 0x746A,
+	0xE0F4, 0x7476, 0xE0F5, 0x747E, 0xE0F6, 0x748B, 0xE0F7, 0x749E,
+	0xE0F8, 0x74A7, 0xE0F9, 0x74CA, 0xE0FA, 0x74CF, 0xE0FB, 0x74D4,
+	0xE0FC, 0x73F1, 0xE140, 0x74E0, 0xE141, 0x74E3, 0xE142, 0x74E7,
+	0xE143, 0x74E9, 0xE144, 0x74EE, 0xE145, 0x74F2, 0xE146, 0x74F0,
+	0xE147, 0x74F1, 0xE148, 0x74F8, 0xE149, 0x74F7, 0xE14A, 0x7504,
+	0xE14B, 0x7503, 0xE14C, 0x7505, 0xE14D, 0x750C, 0xE14E, 0x750E,
+	0xE14F, 0x750D, 0xE150, 0x7515, 0xE151, 0x7513, 0xE152, 0x751E,
+	0xE153, 0x7526, 0xE154, 0x752C, 0xE155, 0x753C, 0xE156, 0x7544,
+	0xE157, 0x754D, 0xE158, 0x754A, 0xE159, 0x7549, 0xE15A, 0x755B,
+	0xE15B, 0x7546, 0xE15C, 0x755A, 0xE15D, 0x7569, 0xE15E, 0x7564,
+	0xE15F, 0x7567, 0xE160, 0x756B, 0xE161, 0x756D, 0xE162, 0x7578,
+	0xE163, 0x7576, 0xE164, 0x7586, 0xE165, 0x7587, 0xE166, 0x7574,
+	0xE167, 0x758A, 0xE168, 0x7589, 0xE169, 0x7582, 0xE16A, 0x7594,
+	0xE16B, 0x759A, 0xE16C, 0x759D, 0xE16D, 0x75A5, 0xE16E, 0x75A3,
+	0xE16F, 0x75C2, 0xE170, 0x75B3, 0xE171, 0x75C3, 0xE172, 0x75B5,
+	0xE173, 0x75BD, 0xE174, 0x75B8, 0xE175, 0x75BC, 0xE176, 0x75B1,
+	0xE177, 0x75CD, 0xE178, 0x75CA, 0xE179, 0x75D2, 0xE17A, 0x75D9,
+	0xE17B, 0x75E3, 0xE17C, 0x75DE, 0xE17D, 0x75FE, 0xE17E, 0x75FF,
+	0xE180, 0x75FC, 0xE181, 0x7601, 0xE182, 0x75F0, 0xE183, 0x75FA,
+	0xE184, 0x75F2, 0xE185, 0x75F3, 0xE186, 0x760B, 0xE187, 0x760D,
+	0xE188, 0x7609, 0xE189, 0x761F, 0xE18A, 0x7627, 0xE18B, 0x7620,
+	0xE18C, 0x7621, 0xE18D, 0x7622, 0xE18E, 0x7624, 0xE18F, 0x7634,
+	0xE190, 0x7630, 0xE191, 0x763B, 0xE192, 0x7647, 0xE193, 0x7648,
+	0xE194, 0x7646, 0xE195, 0x765C, 0xE196, 0x7658, 0xE197, 0x7661,
+	0xE198, 0x7662, 0xE199, 0x7668, 0xE19A, 0x7669, 0xE19B, 0x766A,
+	0xE19C, 0x7667, 0xE19D, 0x766C, 0xE19E, 0x7670, 0xE19F, 0x7672,
+	0xE1A0, 0x7676, 0xE1A1, 0x7678, 0xE1A2, 0x767C, 0xE1A3, 0x7680,
+	0xE1A4, 0x7683, 0xE1A5, 0x7688, 0xE1A6, 0x768B, 0xE1A7, 0x768E,
+	0xE1A8, 0x7696, 0xE1A9, 0x7693, 0xE1AA, 0x7699, 0xE1AB, 0x769A,
+	0xE1AC, 0x76B0, 0xE1AD, 0x76B4, 0xE1AE, 0x76B8, 0xE1AF, 0x76B9,
+	0xE1B0, 0x76BA, 0xE1B1, 0x76C2, 0xE1B2, 0x76CD, 0xE1B3, 0x76D6,
+	0xE1B4, 0x76D2, 0xE1B5, 0x76DE, 0xE1B6, 0x76E1, 0xE1B7, 0x76E5,
+	0xE1B8, 0x76E7, 0xE1B9, 0x76EA, 0xE1BA, 0x862F, 0xE1BB, 0x76FB,
+	0xE1BC, 0x7708, 0xE1BD, 0x7707, 0xE1BE, 0x7704, 0xE1BF, 0x7729,
+	0xE1C0, 0x7724, 0xE1C1, 0x771E, 0xE1C2, 0x7725, 0xE1C3, 0x7726,
+	0xE1C4, 0x771B, 0xE1C5, 0x7737, 0xE1C6, 0x7738, 0xE1C7, 0x7747,
+	0xE1C8, 0x775A, 0xE1C9, 0x7768, 0xE1CA, 0x776B, 0xE1CB, 0x775B,
+	0xE1CC, 0x7765, 0xE1CD, 0x777F, 0xE1CE, 0x777E, 0xE1CF, 0x7779,
+	0xE1D0, 0x778E, 0xE1D1, 0x778B, 0xE1D2, 0x7791, 0xE1D3, 0x77A0,
+	0xE1D4, 0x779E, 0xE1D5, 0x77B0, 0xE1D6, 0x77B6, 0xE1D7, 0x77B9,
+	0xE1D8, 0x77BF, 0xE1D9, 0x77BC, 0xE1DA, 0x77BD, 0xE1DB, 0x77BB,
+	0xE1DC, 0x77C7, 0xE1DD, 0x77CD, 0xE1DE, 0x77D7, 0xE1DF, 0x77DA,
+	0xE1E0, 0x77DC, 0xE1E1, 0x77E3, 0xE1E2, 0x77EE, 0xE1E3, 0x77FC,
+	0xE1E4, 0x780C, 0xE1E5, 0x7812, 0xE1E6, 0x7926, 0xE1E7, 0x7820,
+	0xE1E8, 0x792A, 0xE1E9, 0x7845, 0xE1EA, 0x788E, 0xE1EB, 0x7874,
+	0xE1EC, 0x7886, 0xE1ED, 0x787C, 0xE1EE, 0x789A, 0xE1EF, 0x788C,
+	0xE1F0, 0x78A3, 0xE1F1, 0x78B5, 0xE1F2, 0x78AA, 0xE1F3, 0x78AF,
+	0xE1F4, 0x78D1, 0xE1F5, 0x78C6, 0xE1F6, 0x78CB, 0xE1F7, 0x78D4,
+	0xE1F8, 0x78BE, 0xE1F9, 0x78BC, 0xE1FA, 0x78C5, 0xE1FB, 0x78CA,
+	0xE1FC, 0x78EC, 0xE240, 0x78E7, 0xE241, 0x78DA, 0xE242, 0x78FD,
+	0xE243, 0x78F4, 0xE244, 0x7907, 0xE245, 0x7912, 0xE246, 0x7911,
+	0xE247, 0x7919, 0xE248, 0x792C, 0xE249, 0x792B, 0xE24A, 0x7940,
+	0xE24B, 0x7960, 0xE24C, 0x7957, 0xE24D, 0x795F, 0xE24E, 0x795A,
+	0xE24F, 0x7955, 0xE250, 0x7953, 0xE251, 0x797A, 0xE252, 0x797F,
+	0xE253, 0x798A, 0xE254, 0x799D, 0xE255, 0x79A7, 0xE256, 0x9F4B,
+	0xE257, 0x79AA, 0xE258, 0x79AE, 0xE259, 0x79B3, 0xE25A, 0x79B9,
+	0xE25B, 0x79BA, 0xE25C, 0x79C9, 0xE25D, 0x79D5, 0xE25E, 0x79E7,
+	0xE25F, 0x79EC, 0xE260, 0x79E1, 0xE261, 0x79E3, 0xE262, 0x7A08,
+	0xE263, 0x7A0D, 0xE264, 0x7A18, 0xE265, 0x7A19, 0xE266, 0x7A20,
+	0xE267, 0x7A1F, 0xE268, 0x7980, 0xE269, 0x7A31, 0xE26A, 0x7A3B,
+	0xE26B, 0x7A3E, 0xE26C, 0x7A37, 0xE26D, 0x7A43, 0xE26E, 0x7A57,
+	0xE26F, 0x7A49, 0xE270, 0x7A61, 0xE271, 0x7A62, 0xE272, 0x7A69,
+	0xE273, 0x9F9D, 0xE274, 0x7A70, 0xE275, 0x7A79, 0xE276, 0x7A7D,
+	0xE277, 0x7A88, 0xE278, 0x7A97, 0xE279, 0x7A95, 0xE27A, 0x7A98,
+	0xE27B, 0x7A96, 0xE27C, 0x7AA9, 0xE27D, 0x7AC8, 0xE27E, 0x7AB0,
+	0xE280, 0x7AB6, 0xE281, 0x7AC5, 0xE282, 0x7AC4, 0xE283, 0x7ABF,
+	0xE284, 0x9083, 0xE285, 0x7AC7, 0xE286, 0x7ACA, 0xE287, 0x7ACD,
+	0xE288, 0x7ACF, 0xE289, 0x7AD5, 0xE28A, 0x7AD3, 0xE28B, 0x7AD9,
+	0xE28C, 0x7ADA, 0xE28D, 0x7ADD, 0xE28E, 0x7AE1, 0xE28F, 0x7AE2,
+	0xE290, 0x7AE6, 0xE291, 0x7AED, 0xE292, 0x7AF0, 0xE293, 0x7B02,
+	0xE294, 0x7B0F, 0xE295, 0x7B0A, 0xE296, 0x7B06, 0xE297, 0x7B33,
+	0xE298, 0x7B18, 0xE299, 0x7B19, 0xE29A, 0x7B1E, 0xE29B, 0x7B35,
+	0xE29C, 0x7B28, 0xE29D, 0x7B36, 0xE29E, 0x7B50, 0xE29F, 0x7B7A,
+	0xE2A0, 0x7B04, 0xE2A1, 0x7B4D, 0xE2A2, 0x7B0B, 0xE2A3, 0x7B4C,
+	0xE2A4, 0x7B45, 0xE2A5, 0x7B75, 0xE2A6, 0x7B65, 0xE2A7, 0x7B74,
+	0xE2A8, 0x7B67, 0xE2A9, 0x7B70, 0xE2AA, 0x7B71, 0xE2AB, 0x7B6C,
+	0xE2AC, 0x7B6E, 0xE2AD, 0x7B9D, 0xE2AE, 0x7B98, 0xE2AF, 0x7B9F,
+	0xE2B0, 0x7B8D, 0xE2B1, 0x7B9C, 0xE2B2, 0x7B9A, 0xE2B3, 0x7B8B,
+	0xE2B4, 0x7B92, 0xE2B5, 0x7B8F, 0xE2B6, 0x7B5D, 0xE2B7, 0x7B99,
+	0xE2B8, 0x7BCB, 0xE2B9, 0x7BC1, 0xE2BA, 0x7BCC, 0xE2BB, 0x7BCF,
+	0xE2BC, 0x7BB4, 0xE2BD, 0x7BC6, 0xE2BE, 0x7BDD, 0xE2BF, 0x7BE9,
+	0xE2C0, 0x7C11, 0xE2C1, 0x7C14, 0xE2C2, 0x7BE6, 0xE2C3, 0x7BE5,
+	0xE2C4, 0x7C60, 0xE2C5, 0x7C00, 0xE2C6, 0x7C07, 0xE2C7, 0x7C13,
+	0xE2C8, 0x7BF3, 0xE2C9, 0x7BF7, 0xE2CA, 0x7C17, 0xE2CB, 0x7C0D,
+	0xE2CC, 0x7BF6, 0xE2CD, 0x7C23, 0xE2CE, 0x7C27, 0xE2CF, 0x7C2A,
+	0xE2D0, 0x7C1F, 0xE2D1, 0x7C37, 0xE2D2, 0x7C2B, 0xE2D3, 0x7C3D,
+	0xE2D4, 0x7C4C, 0xE2D5, 0x7C43, 0xE2D6, 0x7C54, 0xE2D7, 0x7C4F,
+	0xE2D8, 0x7C40, 0xE2D9, 0x7C50, 0xE2DA, 0x7C58, 0xE2DB, 0x7C5F,
+	0xE2DC, 0x7C64, 0xE2DD, 0x7C56, 0xE2DE, 0x7C65, 0xE2DF, 0x7C6C,
+	0xE2E0, 0x7C75, 0xE2E1, 0x7C83, 0xE2E2, 0x7C90, 0xE2E3, 0x7CA4,
+	0xE2E4, 0x7CAD, 0xE2E5, 0x7CA2, 0xE2E6, 0x7CAB, 0xE2E7, 0x7CA1,
+	0xE2E8, 0x7CA8, 0xE2E9, 0x7CB3, 0xE2EA, 0x7CB2, 0xE2EB, 0x7CB1,
+	0xE2EC, 0x7CAE, 0xE2ED, 0x7CB9, 0xE2EE, 0x7CBD, 0xE2EF, 0x7CC0,
+	0xE2F0, 0x7CC5, 0xE2F1, 0x7CC2, 0xE2F2, 0x7CD8, 0xE2F3, 0x7CD2,
+	0xE2F4, 0x7CDC, 0xE2F5, 0x7CE2, 0xE2F6, 0x9B3B, 0xE2F7, 0x7CEF,
+	0xE2F8, 0x7CF2, 0xE2F9, 0x7CF4, 0xE2FA, 0x7CF6, 0xE2FB, 0x7CFA,
+	0xE2FC, 0x7D06, 0xE340, 0x7D02, 0xE341, 0x7D1C, 0xE342, 0x7D15,
+	0xE343, 0x7D0A, 0xE344, 0x7D45, 0xE345, 0x7D4B, 0xE346, 0x7D2E,
+	0xE347, 0x7D32, 0xE348, 0x7D3F, 0xE349, 0x7D35, 0xE34A, 0x7D46,
+	0xE34B, 0x7D73, 0xE34C, 0x7D56, 0xE34D, 0x7D4E, 0xE34E, 0x7D72,
+	0xE34F, 0x7D68, 0xE350, 0x7D6E, 0xE351, 0x7D4F, 0xE352, 0x7D63,
+	0xE353, 0x7D93, 0xE354, 0x7D89, 0xE355, 0x7D5B, 0xE356, 0x7D8F,
+	0xE357, 0x7D7D, 0xE358, 0x7D9B, 0xE359, 0x7DBA, 0xE35A, 0x7DAE,
+	0xE35B, 0x7DA3, 0xE35C, 0x7DB5, 0xE35D, 0x7DC7, 0xE35E, 0x7DBD,
+	0xE35F, 0x7DAB, 0xE360, 0x7E3D, 0xE361, 0x7DA2, 0xE362, 0x7DAF,
+	0xE363, 0x7DDC, 0xE364, 0x7DB8, 0xE365, 0x7D9F, 0xE366, 0x7DB0,
+	0xE367, 0x7DD8, 0xE368, 0x7DDD, 0xE369, 0x7DE4, 0xE36A, 0x7DDE,
+	0xE36B, 0x7DFB, 0xE36C, 0x7DF2, 0xE36D, 0x7DE1, 0xE36E, 0x7E05,
+	0xE36F, 0x7E0A, 0xE370, 0x7E23, 0xE371, 0x7E21, 0xE372, 0x7E12,
+	0xE373, 0x7E31, 0xE374, 0x7E1F, 0xE375, 0x7E09, 0xE376, 0x7E0B,
+	0xE377, 0x7E22, 0xE378, 0x7E46, 0xE379, 0x7E66, 0xE37A, 0x7E3B,
+	0xE37B, 0x7E35, 0xE37C, 0x7E39, 0xE37D, 0x7E43, 0xE37E, 0x7E37,
+	0xE380, 0x7E32, 0xE381, 0x7E3A, 0xE382, 0x7E67, 0xE383, 0x7E5D,
+	0xE384, 0x7E56, 0xE385, 0x7E5E, 0xE386, 0x7E59, 0xE387, 0x7E5A,
+	0xE388, 0x7E79, 0xE389, 0x7E6A, 0xE38A, 0x7E69, 0xE38B, 0x7E7C,
+	0xE38C, 0x7E7B, 0xE38D, 0x7E83, 0xE38E, 0x7DD5, 0xE38F, 0x7E7D,
+	0xE390, 0x8FAE, 0xE391, 0x7E7F, 0xE392, 0x7E88, 0xE393, 0x7E89,
+	0xE394, 0x7E8C, 0xE395, 0x7E92, 0xE396, 0x7E90, 0xE397, 0x7E93,
+	0xE398, 0x7E94, 0xE399, 0x7E96, 0xE39A, 0x7E8E, 0xE39B, 0x7E9B,
+	0xE39C, 0x7E9C, 0xE39D, 0x7F38, 0xE39E, 0x7F3A, 0xE39F, 0x7F45,
+	0xE3A0, 0x7F4C, 0xE3A1, 0x7F4D, 0xE3A2, 0x7F4E, 0xE3A3, 0x7F50,
+	0xE3A4, 0x7F51, 0xE3A5, 0x7F55, 0xE3A6, 0x7F54, 0xE3A7, 0x7F58,
+	0xE3A8, 0x7F5F, 0xE3A9, 0x7F60, 0xE3AA, 0x7F68, 0xE3AB, 0x7F69,
+	0xE3AC, 0x7F67, 0xE3AD, 0x7F78, 0xE3AE, 0x7F82, 0xE3AF, 0x7F86,
+	0xE3B0, 0x7F83, 0xE3B1, 0x7F88, 0xE3B2, 0x7F87, 0xE3B3, 0x7F8C,
+	0xE3B4, 0x7F94, 0xE3B5, 0x7F9E, 0xE3B6, 0x7F9D, 0xE3B7, 0x7F9A,
+	0xE3B8, 0x7FA3, 0xE3B9, 0x7FAF, 0xE3BA, 0x7FB2, 0xE3BB, 0x7FB9,
+	0xE3BC, 0x7FAE, 0xE3BD, 0x7FB6, 0xE3BE, 0x7FB8, 0xE3BF, 0x8B71,
+	0xE3C0, 0x7FC5, 0xE3C1, 0x7FC6, 0xE3C2, 0x7FCA, 0xE3C3, 0x7FD5,
+	0xE3C4, 0x7FD4, 0xE3C5, 0x7FE1, 0xE3C6, 0x7FE6, 0xE3C7, 0x7FE9,
+	0xE3C8, 0x7FF3, 0xE3C9, 0x7FF9, 0xE3CA, 0x98DC, 0xE3CB, 0x8006,
+	0xE3CC, 0x8004, 0xE3CD, 0x800B, 0xE3CE, 0x8012, 0xE3CF, 0x8018,
+	0xE3D0, 0x8019, 0xE3D1, 0x801C, 0xE3D2, 0x8021, 0xE3D3, 0x8028,
+	0xE3D4, 0x803F, 0xE3D5, 0x803B, 0xE3D6, 0x804A, 0xE3D7, 0x8046,
+	0xE3D8, 0x8052, 0xE3D9, 0x8058, 0xE3DA, 0x805A, 0xE3DB, 0x805F,
+	0xE3DC, 0x8062, 0xE3DD, 0x8068, 0xE3DE, 0x8073, 0xE3DF, 0x8072,
+	0xE3E0, 0x8070, 0xE3E1, 0x8076, 0xE3E2, 0x8079, 0xE3E3, 0x807D,
+	0xE3E4, 0x807F, 0xE3E5, 0x8084, 0xE3E6, 0x8086, 0xE3E7, 0x8085,
+	0xE3E8, 0x809B, 0xE3E9, 0x8093, 0xE3EA, 0x809A, 0xE3EB, 0x80AD,
+	0xE3EC, 0x5190, 0xE3ED, 0x80AC, 0xE3EE, 0x80DB, 0xE3EF, 0x80E5,
+	0xE3F0, 0x80D9, 0xE3F1, 0x80DD, 0xE3F2, 0x80C4, 0xE3F3, 0x80DA,
+	0xE3F4, 0x80D6, 0xE3F5, 0x8109, 0xE3F6, 0x80EF, 0xE3F7, 0x80F1,
+	0xE3F8, 0x811B, 0xE3F9, 0x8129, 0xE3FA, 0x8123, 0xE3FB, 0x812F,
+	0xE3FC, 0x814B, 0xE440, 0x968B, 0xE441, 0x8146, 0xE442, 0x813E,
+	0xE443, 0x8153, 0xE444, 0x8151, 0xE445, 0x80FC, 0xE446, 0x8171,
+	0xE447, 0x816E, 0xE448, 0x8165, 0xE449, 0x8166, 0xE44A, 0x8174,
+	0xE44B, 0x8183, 0xE44C, 0x8188, 0xE44D, 0x818A, 0xE44E, 0x8180,
+	0xE44F, 0x8182, 0xE450, 0x81A0, 0xE451, 0x8195, 0xE452, 0x81A4,
+	0xE453, 0x81A3, 0xE454, 0x815F, 0xE455, 0x8193, 0xE456, 0x81A9,
+	0xE457, 0x81B0, 0xE458, 0x81B5, 0xE459, 0x81BE, 0xE45A, 0x81B8,
+	0xE45B, 0x81BD, 0xE45C, 0x81C0, 0xE45D, 0x81C2, 0xE45E, 0x81BA,
+	0xE45F, 0x81C9, 0xE460, 0x81CD, 0xE461, 0x81D1, 0xE462, 0x81D9,
+	0xE463, 0x81D8, 0xE464, 0x81C8, 0xE465, 0x81DA, 0xE466, 0x81DF,
+	0xE467, 0x81E0, 0xE468, 0x81E7, 0xE469, 0x81FA, 0xE46A, 0x81FB,
+	0xE46B, 0x81FE, 0xE46C, 0x8201, 0xE46D, 0x8202, 0xE46E, 0x8205,
+	0xE46F, 0x8207, 0xE470, 0x820A, 0xE471, 0x820D, 0xE472, 0x8210,
+	0xE473, 0x8216, 0xE474, 0x8229, 0xE475, 0x822B, 0xE476, 0x8238,
+	0xE477, 0x8233, 0xE478, 0x8240, 0xE479, 0x8259, 0xE47A, 0x8258,
+	0xE47B, 0x825D, 0xE47C, 0x825A, 0xE47D, 0x825F, 0xE47E, 0x8264,
+	0xE480, 0x8262, 0xE481, 0x8268, 0xE482, 0x826A, 0xE483, 0x826B,
+	0xE484, 0x822E, 0xE485, 0x8271, 0xE486, 0x8277, 0xE487, 0x8278,
+	0xE488, 0x827E, 0xE489, 0x828D, 0xE48A, 0x8292, 0xE48B, 0x82AB,
+	0xE48C, 0x829F, 0xE48D, 0x82BB, 0xE48E, 0x82AC, 0xE48F, 0x82E1,
+	0xE490, 0x82E3, 0xE491, 0x82DF, 0xE492, 0x82D2, 0xE493, 0x82F4,
+	0xE494, 0x82F3, 0xE495, 0x82FA, 0xE496, 0x8393, 0xE497, 0x8303,
+	0xE498, 0x82FB, 0xE499, 0x82F9, 0xE49A, 0x82DE, 0xE49B, 0x8306,
+	0xE49C, 0x82DC, 0xE49D, 0x8309, 0xE49E, 0x82D9, 0xE49F, 0x8335,
+	0xE4A0, 0x8334, 0xE4A1, 0x8316, 0xE4A2, 0x8332, 0xE4A3, 0x8331,
+	0xE4A4, 0x8340, 0xE4A5, 0x8339, 0xE4A6, 0x8350, 0xE4A7, 0x8345,
+	0xE4A8, 0x832F, 0xE4A9, 0x832B, 0xE4AA, 0x8317, 0xE4AB, 0x8318,
+	0xE4AC, 0x8385, 0xE4AD, 0x839A, 0xE4AE, 0x83AA, 0xE4AF, 0x839F,
+	0xE4B0, 0x83A2, 0xE4B1, 0x8396, 0xE4B2, 0x8323, 0xE4B3, 0x838E,
+	0xE4B4, 0x8387, 0xE4B5, 0x838A, 0xE4B6, 0x837C, 0xE4B7, 0x83B5,
+	0xE4B8, 0x8373, 0xE4B9, 0x8375, 0xE4BA, 0x83A0, 0xE4BB, 0x8389,
+	0xE4BC, 0x83A8, 0xE4BD, 0x83F4, 0xE4BE, 0x8413, 0xE4BF, 0x83EB,
+	0xE4C0, 0x83CE, 0xE4C1, 0x83FD, 0xE4C2, 0x8403, 0xE4C3, 0x83D8,
+	0xE4C4, 0x840B, 0xE4C5, 0x83C1, 0xE4C6, 0x83F7, 0xE4C7, 0x8407,
+	0xE4C8, 0x83E0, 0xE4C9, 0x83F2, 0xE4CA, 0x840D, 0xE4CB, 0x8422,
+	0xE4CC, 0x8420, 0xE4CD, 0x83BD, 0xE4CE, 0x8438, 0xE4CF, 0x8506,
+	0xE4D0, 0x83FB, 0xE4D1, 0x846D, 0xE4D2, 0x842A, 0xE4D3, 0x843C,
+	0xE4D4, 0x855A, 0xE4D5, 0x8484, 0xE4D6, 0x8477, 0xE4D7, 0x846B,
+	0xE4D8, 0x84AD, 0xE4D9, 0x846E, 0xE4DA, 0x8482, 0xE4DB, 0x8469,
+	0xE4DC, 0x8446, 0xE4DD, 0x842C, 0xE4DE, 0x846F, 0xE4DF, 0x8479,
+	0xE4E0, 0x8435, 0xE4E1, 0x84CA, 0xE4E2, 0x8462, 0xE4E3, 0x84B9,
+	0xE4E4, 0x84BF, 0xE4E5, 0x849F, 0xE4E6, 0x84D9, 0xE4E7, 0x84CD,
+	0xE4E8, 0x84BB, 0xE4E9, 0x84DA, 0xE4EA, 0x84D0, 0xE4EB, 0x84C1,
+	0xE4EC, 0x84C6, 0xE4ED, 0x84D6, 0xE4EE, 0x84A1, 0xE4EF, 0x8521,
+	0xE4F0, 0x84FF, 0xE4F1, 0x84F4, 0xE4F2, 0x8517, 0xE4F3, 0x8518,
+	0xE4F4, 0x852C, 0xE4F5, 0x851F, 0xE4F6, 0x8515, 0xE4F7, 0x8514,
+	0xE4F8, 0x84FC, 0xE4F9, 0x8540, 0xE4FA, 0x8563, 0xE4FB, 0x8558,
+	0xE4FC, 0x8548, 0xE540, 0x8541, 0xE541, 0x8602, 0xE542, 0x854B,
+	0xE543, 0x8555, 0xE544, 0x8580, 0xE545, 0x85A4, 0xE546, 0x8588,
+	0xE547, 0x8591, 0xE548, 0x858A, 0xE549, 0x85A8, 0xE54A, 0x856D,
+	0xE54B, 0x8594, 0xE54C, 0x859B, 0xE54D, 0x85EA, 0xE54E, 0x8587,
+	0xE54F, 0x859C, 0xE550, 0x8577, 0xE551, 0x857E, 0xE552, 0x8590,
+	0xE553, 0x85C9, 0xE554, 0x85BA, 0xE555, 0x85CF, 0xE556, 0x85B9,
+	0xE557, 0x85D0, 0xE558, 0x85D5, 0xE559, 0x85DD, 0xE55A, 0x85E5,
+	0xE55B, 0x85DC, 0xE55C, 0x85F9, 0xE55D, 0x860A, 0xE55E, 0x8613,
+	0xE55F, 0x860B, 0xE560, 0x85FE, 0xE561, 0x85FA, 0xE562, 0x8606,
+	0xE563, 0x8622, 0xE564, 0x861A, 0xE565, 0x8630, 0xE566, 0x863F,
+	0xE567, 0x864D, 0xE568, 0x4E55, 0xE569, 0x8654, 0xE56A, 0x865F,
+	0xE56B, 0x8667, 0xE56C, 0x8671, 0xE56D, 0x8693, 0xE56E, 0x86A3,
+	0xE56F, 0x86A9, 0xE570, 0x86AA, 0xE571, 0x868B, 0xE572, 0x868C,
+	0xE573, 0x86B6, 0xE574, 0x86AF, 0xE575, 0x86C4, 0xE576, 0x86C6,
+	0xE577, 0x86B0, 0xE578, 0x86C9, 0xE579, 0x8823, 0xE57A, 0x86AB,
+	0xE57B, 0x86D4, 0xE57C, 0x86DE, 0xE57D, 0x86E9, 0xE57E, 0x86EC,
+	0xE580, 0x86DF, 0xE581, 0x86DB, 0xE582, 0x86EF, 0xE583, 0x8712,
+	0xE584, 0x8706, 0xE585, 0x8708, 0xE586, 0x8700, 0xE587, 0x8703,
+	0xE588, 0x86FB, 0xE589, 0x8711, 0xE58A, 0x8709, 0xE58B, 0x870D,
+	0xE58C, 0x86F9, 0xE58D, 0x870A, 0xE58E, 0x8734, 0xE58F, 0x873F,
+	0xE590, 0x8737, 0xE591, 0x873B, 0xE592, 0x8725, 0xE593, 0x8729,
+	0xE594, 0x871A, 0xE595, 0x8760, 0xE596, 0x875F, 0xE597, 0x8778,
+	0xE598, 0x874C, 0xE599, 0x874E, 0xE59A, 0x8774, 0xE59B, 0x8757,
+	0xE59C, 0x8768, 0xE59D, 0x876E, 0xE59E, 0x8759, 0xE59F, 0x8753,
+	0xE5A0, 0x8763, 0xE5A1, 0x876A, 0xE5A2, 0x8805, 0xE5A3, 0x87A2,
+	0xE5A4, 0x879F, 0xE5A5, 0x8782, 0xE5A6, 0x87AF, 0xE5A7, 0x87CB,
+	0xE5A8, 0x87BD, 0xE5A9, 0x87C0, 0xE5AA, 0x87D0, 0xE5AB, 0x96D6,
+	0xE5AC, 0x87AB, 0xE5AD, 0x87C4, 0xE5AE, 0x87B3, 0xE5AF, 0x87C7,
+	0xE5B0, 0x87C6, 0xE5B1, 0x87BB, 0xE5B2, 0x87EF, 0xE5B3, 0x87F2,
+	0xE5B4, 0x87E0, 0xE5B5, 0x880F, 0xE5B6, 0x880D, 0xE5B7, 0x87FE,
+	0xE5B8, 0x87F6, 0xE5B9, 0x87F7, 0xE5BA, 0x880E, 0xE5BB, 0x87D2,
+	0xE5BC, 0x8811, 0xE5BD, 0x8816, 0xE5BE, 0x8815, 0xE5BF, 0x8822,
+	0xE5C0, 0x8821, 0xE5C1, 0x8831, 0xE5C2, 0x8836, 0xE5C3, 0x8839,
+	0xE5C4, 0x8827, 0xE5C5, 0x883B, 0xE5C6, 0x8844, 0xE5C7, 0x8842,
+	0xE5C8, 0x8852, 0xE5C9, 0x8859, 0xE5CA, 0x885E, 0xE5CB, 0x8862,
+	0xE5CC, 0x886B, 0xE5CD, 0x8881, 0xE5CE, 0x887E, 0xE5CF, 0x889E,
+	0xE5D0, 0x8875, 0xE5D1, 0x887D, 0xE5D2, 0x88B5, 0xE5D3, 0x8872,
+	0xE5D4, 0x8882, 0xE5D5, 0x8897, 0xE5D6, 0x8892, 0xE5D7, 0x88AE,
+	0xE5D8, 0x8899, 0xE5D9, 0x88A2, 0xE5DA, 0x888D, 0xE5DB, 0x88A4,
+	0xE5DC, 0x88B0, 0xE5DD, 0x88BF, 0xE5DE, 0x88B1, 0xE5DF, 0x88C3,
+	0xE5E0, 0x88C4, 0xE5E1, 0x88D4, 0xE5E2, 0x88D8, 0xE5E3, 0x88D9,
+	0xE5E4, 0x88DD, 0xE5E5, 0x88F9, 0xE5E6, 0x8902, 0xE5E7, 0x88FC,
+	0xE5E8, 0x88F4, 0xE5E9, 0x88E8, 0xE5EA, 0x88F2, 0xE5EB, 0x8904,
+	0xE5EC, 0x890C, 0xE5ED, 0x890A, 0xE5EE, 0x8913, 0xE5EF, 0x8943,
+	0xE5F0, 0x891E, 0xE5F1, 0x8925, 0xE5F2, 0x892A, 0xE5F3, 0x892B,
+	0xE5F4, 0x8941, 0xE5F5, 0x8944, 0xE5F6, 0x893B, 0xE5F7, 0x8936,
+	0xE5F8, 0x8938, 0xE5F9, 0x894C, 0xE5FA, 0x891D, 0xE5FB, 0x8960,
+	0xE5FC, 0x895E, 0xE640, 0x8966, 0xE641, 0x8964, 0xE642, 0x896D,
+	0xE643, 0x896A, 0xE644, 0x896F, 0xE645, 0x8974, 0xE646, 0x8977,
+	0xE647, 0x897E, 0xE648, 0x8983, 0xE649, 0x8988, 0xE64A, 0x898A,
+	0xE64B, 0x8993, 0xE64C, 0x8998, 0xE64D, 0x89A1, 0xE64E, 0x89A9,
+	0xE64F, 0x89A6, 0xE650, 0x89AC, 0xE651, 0x89AF, 0xE652, 0x89B2,
+	0xE653, 0x89BA, 0xE654, 0x89BD, 0xE655, 0x89BF, 0xE656, 0x89C0,
+	0xE657, 0x89DA, 0xE658, 0x89DC, 0xE659, 0x89DD, 0xE65A, 0x89E7,
+	0xE65B, 0x89F4, 0xE65C, 0x89F8, 0xE65D, 0x8A03, 0xE65E, 0x8A16,
+	0xE65F, 0x8A10, 0xE660, 0x8A0C, 0xE661, 0x8A1B, 0xE662, 0x8A1D,
+	0xE663, 0x8A25, 0xE664, 0x8A36, 0xE665, 0x8A41, 0xE666, 0x8A5B,
+	0xE667, 0x8A52, 0xE668, 0x8A46, 0xE669, 0x8A48, 0xE66A, 0x8A7C,
+	0xE66B, 0x8A6D, 0xE66C, 0x8A6C, 0xE66D, 0x8A62, 0xE66E, 0x8A85,
+	0xE66F, 0x8A82, 0xE670, 0x8A84, 0xE671, 0x8AA8, 0xE672, 0x8AA1,
+	0xE673, 0x8A91, 0xE674, 0x8AA5, 0xE675, 0x8AA6, 0xE676, 0x8A9A,
+	0xE677, 0x8AA3, 0xE678, 0x8AC4, 0xE679, 0x8ACD, 0xE67A, 0x8AC2,
+	0xE67B, 0x8ADA, 0xE67C, 0x8AEB, 0xE67D, 0x8AF3, 0xE67E, 0x8AE7,
+	0xE680, 0x8AE4, 0xE681, 0x8AF1, 0xE682, 0x8B14, 0xE683, 0x8AE0,
+	0xE684, 0x8AE2, 0xE685, 0x8AF7, 0xE686, 0x8ADE, 0xE687, 0x8ADB,
+	0xE688, 0x8B0C, 0xE689, 0x8B07, 0xE68A, 0x8B1A, 0xE68B, 0x8AE1,
+	0xE68C, 0x8B16, 0xE68D, 0x8B10, 0xE68E, 0x8B17, 0xE68F, 0x8B20,
+	0xE690, 0x8B33, 0xE691, 0x97AB, 0xE692, 0x8B26, 0xE693, 0x8B2B,
+	0xE694, 0x8B3E, 0xE695, 0x8B28, 0xE696, 0x8B41, 0xE697, 0x8B4C,
+	0xE698, 0x8B4F, 0xE699, 0x8B4E, 0xE69A, 0x8B49, 0xE69B, 0x8B56,
+	0xE69C, 0x8B5B, 0xE69D, 0x8B5A, 0xE69E, 0x8B6B, 0xE69F, 0x8B5F,
+	0xE6A0, 0x8B6C, 0xE6A1, 0x8B6F, 0xE6A2, 0x8B74, 0xE6A3, 0x8B7D,
+	0xE6A4, 0x8B80, 0xE6A5, 0x8B8C, 0xE6A6, 0x8B8E, 0xE6A7, 0x8B92,
+	0xE6A8, 0x8B93, 0xE6A9, 0x8B96, 0xE6AA, 0x8B99, 0xE6AB, 0x8B9A,
+	0xE6AC, 0x8C3A, 0xE6AD, 0x8C41, 0xE6AE, 0x8C3F, 0xE6AF, 0x8C48,
+	0xE6B0, 0x8C4C, 0xE6B1, 0x8C4E, 0xE6B2, 0x8C50, 0xE6B3, 0x8C55,
+	0xE6B4, 0x8C62, 0xE6B5, 0x8C6C, 0xE6B6, 0x8C78, 0xE6B7, 0x8C7A,
+	0xE6B8, 0x8C82, 0xE6B9, 0x8C89, 0xE6BA, 0x8C85, 0xE6BB, 0x8C8A,
+	0xE6BC, 0x8C8D, 0xE6BD, 0x8C8E, 0xE6BE, 0x8C94, 0xE6BF, 0x8C7C,
+	0xE6C0, 0x8C98, 0xE6C1, 0x621D, 0xE6C2, 0x8CAD, 0xE6C3, 0x8CAA,
+	0xE6C4, 0x8CBD, 0xE6C5, 0x8CB2, 0xE6C6, 0x8CB3, 0xE6C7, 0x8CAE,
+	0xE6C8, 0x8CB6, 0xE6C9, 0x8CC8, 0xE6CA, 0x8CC1, 0xE6CB, 0x8CE4,
+	0xE6CC, 0x8CE3, 0xE6CD, 0x8CDA, 0xE6CE, 0x8CFD, 0xE6CF, 0x8CFA,
+	0xE6D0, 0x8CFB, 0xE6D1, 0x8D04, 0xE6D2, 0x8D05, 0xE6D3, 0x8D0A,
+	0xE6D4, 0x8D07, 0xE6D5, 0x8D0F, 0xE6D6, 0x8D0D, 0xE6D7, 0x8D10,
+	0xE6D8, 0x9F4E, 0xE6D9, 0x8D13, 0xE6DA, 0x8CCD, 0xE6DB, 0x8D14,
+	0xE6DC, 0x8D16, 0xE6DD, 0x8D67, 0xE6DE, 0x8D6D, 0xE6DF, 0x8D71,
+	0xE6E0, 0x8D73, 0xE6E1, 0x8D81, 0xE6E2, 0x8D99, 0xE6E3, 0x8DC2,
+	0xE6E4, 0x8DBE, 0xE6E5, 0x8DBA, 0xE6E6, 0x8DCF, 0xE6E7, 0x8DDA,
+	0xE6E8, 0x8DD6, 0xE6E9, 0x8DCC, 0xE6EA, 0x8DDB, 0xE6EB, 0x8DCB,
+	0xE6EC, 0x8DEA, 0xE6ED, 0x8DEB, 0xE6EE, 0x8DDF, 0xE6EF, 0x8DE3,
+	0xE6F0, 0x8DFC, 0xE6F1, 0x8E08, 0xE6F2, 0x8E09, 0xE6F3, 0x8DFF,
+	0xE6F4, 0x8E1D, 0xE6F5, 0x8E1E, 0xE6F6, 0x8E10, 0xE6F7, 0x8E1F,
+	0xE6F8, 0x8E42, 0xE6F9, 0x8E35, 0xE6FA, 0x8E30, 0xE6FB, 0x8E34,
+	0xE6FC, 0x8E4A, 0xE740, 0x8E47, 0xE741, 0x8E49, 0xE742, 0x8E4C,
+	0xE743, 0x8E50, 0xE744, 0x8E48, 0xE745, 0x8E59, 0xE746, 0x8E64,
+	0xE747, 0x8E60, 0xE748, 0x8E2A, 0xE749, 0x8E63, 0xE74A, 0x8E55,
+	0xE74B, 0x8E76, 0xE74C, 0x8E72, 0xE74D, 0x8E7C, 0xE74E, 0x8E81,
+	0xE74F, 0x8E87, 0xE750, 0x8E85, 0xE751, 0x8E84, 0xE752, 0x8E8B,
+	0xE753, 0x8E8A, 0xE754, 0x8E93, 0xE755, 0x8E91, 0xE756, 0x8E94,
+	0xE757, 0x8E99, 0xE758, 0x8EAA, 0xE759, 0x8EA1, 0xE75A, 0x8EAC,
+	0xE75B, 0x8EB0, 0xE75C, 0x8EC6, 0xE75D, 0x8EB1, 0xE75E, 0x8EBE,
+	0xE75F, 0x8EC5, 0xE760, 0x8EC8, 0xE761, 0x8ECB, 0xE762, 0x8EDB,
+	0xE763, 0x8EE3, 0xE764, 0x8EFC, 0xE765, 0x8EFB, 0xE766, 0x8EEB,
+	0xE767, 0x8EFE, 0xE768, 0x8F0A, 0xE769, 0x8F05, 0xE76A, 0x8F15,
+	0xE76B, 0x8F12, 0xE76C, 0x8F19, 0xE76D, 0x8F13, 0xE76E, 0x8F1C,
+	0xE76F, 0x8F1F, 0xE770, 0x8F1B, 0xE771, 0x8F0C, 0xE772, 0x8F26,
+	0xE773, 0x8F33, 0xE774, 0x8F3B, 0xE775, 0x8F39, 0xE776, 0x8F45,
+	0xE777, 0x8F42, 0xE778, 0x8F3E, 0xE779, 0x8F4C, 0xE77A, 0x8F49,
+	0xE77B, 0x8F46, 0xE77C, 0x8F4E, 0xE77D, 0x8F57, 0xE77E, 0x8F5C,
+	0xE780, 0x8F62, 0xE781, 0x8F63, 0xE782, 0x8F64, 0xE783, 0x8F9C,
+	0xE784, 0x8F9F, 0xE785, 0x8FA3, 0xE786, 0x8FAD, 0xE787, 0x8FAF,
+	0xE788, 0x8FB7, 0xE789, 0x8FDA, 0xE78A, 0x8FE5, 0xE78B, 0x8FE2,
+	0xE78C, 0x8FEA, 0xE78D, 0x8FEF, 0xE78E, 0x9087, 0xE78F, 0x8FF4,
+	0xE790, 0x9005, 0xE791, 0x8FF9, 0xE792, 0x8FFA, 0xE793, 0x9011,
+	0xE794, 0x9015, 0xE795, 0x9021, 0xE796, 0x900D, 0xE797, 0x901E,
+	0xE798, 0x9016, 0xE799, 0x900B, 0xE79A, 0x9027, 0xE79B, 0x9036,
+	0xE79C, 0x9035, 0xE79D, 0x9039, 0xE79E, 0x8FF8, 0xE79F, 0x904F,
+	0xE7A0, 0x9050, 0xE7A1, 0x9051, 0xE7A2, 0x9052, 0xE7A3, 0x900E,
+	0xE7A4, 0x9049, 0xE7A5, 0x903E, 0xE7A6, 0x9056, 0xE7A7, 0x9058,
+	0xE7A8, 0x905E, 0xE7A9, 0x9068, 0xE7AA, 0x906F, 0xE7AB, 0x9076,
+	0xE7AC, 0x96A8, 0xE7AD, 0x9072, 0xE7AE, 0x9082, 0xE7AF, 0x907D,
+	0xE7B0, 0x9081, 0xE7B1, 0x9080, 0xE7B2, 0x908A, 0xE7B3, 0x9089,
+	0xE7B4, 0x908F, 0xE7B5, 0x90A8, 0xE7B6, 0x90AF, 0xE7B7, 0x90B1,
+	0xE7B8, 0x90B5, 0xE7B9, 0x90E2, 0xE7BA, 0x90E4, 0xE7BB, 0x6248,
+	0xE7BC, 0x90DB, 0xE7BD, 0x9102, 0xE7BE, 0x9112, 0xE7BF, 0x9119,
+	0xE7C0, 0x9132, 0xE7C1, 0x9130, 0xE7C2, 0x914A, 0xE7C3, 0x9156,
+	0xE7C4, 0x9158, 0xE7C5, 0x9163, 0xE7C6, 0x9165, 0xE7C7, 0x9169,
+	0xE7C8, 0x9173, 0xE7C9, 0x9172, 0xE7CA, 0x918B, 0xE7CB, 0x9189,
+	0xE7CC, 0x9182, 0xE7CD, 0x91A2, 0xE7CE, 0x91AB, 0xE7CF, 0x91AF,
+	0xE7D0, 0x91AA, 0xE7D1, 0x91B5, 0xE7D2, 0x91B4, 0xE7D3, 0x91BA,
+	0xE7D4, 0x91C0, 0xE7D5, 0x91C1, 0xE7D6, 0x91C9, 0xE7D7, 0x91CB,
+	0xE7D8, 0x91D0, 0xE7D9, 0x91D6, 0xE7DA, 0x91DF, 0xE7DB, 0x91E1,
+	0xE7DC, 0x91DB, 0xE7DD, 0x91FC, 0xE7DE, 0x91F5, 0xE7DF, 0x91F6,
+	0xE7E0, 0x921E, 0xE7E1, 0x91FF, 0xE7E2, 0x9214, 0xE7E3, 0x922C,
+	0xE7E4, 0x9215, 0xE7E5, 0x9211, 0xE7E6, 0x925E, 0xE7E7, 0x9257,
+	0xE7E8, 0x9245, 0xE7E9, 0x9249, 0xE7EA, 0x9264, 0xE7EB, 0x9248,
+	0xE7EC, 0x9295, 0xE7ED, 0x923F, 0xE7EE, 0x924B, 0xE7EF, 0x9250,
+	0xE7F0, 0x929C, 0xE7F1, 0x9296, 0xE7F2, 0x9293, 0xE7F3, 0x929B,
+	0xE7F4, 0x925A, 0xE7F5, 0x92CF, 0xE7F6, 0x92B9, 0xE7F7, 0x92B7,
+	0xE7F8, 0x92E9, 0xE7F9, 0x930F, 0xE7FA, 0x92FA, 0xE7FB, 0x9344,
+	0xE7FC, 0x932E, 0xE840, 0x9319, 0xE841, 0x9322, 0xE842, 0x931A,
+	0xE843, 0x9323, 0xE844, 0x933A, 0xE845, 0x9335, 0xE846, 0x933B,
+	0xE847, 0x935C, 0xE848, 0x9360, 0xE849, 0x937C, 0xE84A, 0x936E,
+	0xE84B, 0x9356, 0xE84C, 0x93B0, 0xE84D, 0x93AC, 0xE84E, 0x93AD,
+	0xE84F, 0x9394, 0xE850, 0x93B9, 0xE851, 0x93D6, 0xE852, 0x93D7,
+	0xE853, 0x93E8, 0xE854, 0x93E5, 0xE855, 0x93D8, 0xE856, 0x93C3,
+	0xE857, 0x93DD, 0xE858, 0x93D0, 0xE859, 0x93C8, 0xE85A, 0x93E4,
+	0xE85B, 0x941A, 0xE85C, 0x9414, 0xE85D, 0x9413, 0xE85E, 0x9403,
+	0xE85F, 0x9407, 0xE860, 0x9410, 0xE861, 0x9436, 0xE862, 0x942B,
+	0xE863, 0x9435, 0xE864, 0x9421, 0xE865, 0x943A, 0xE866, 0x9441,
+	0xE867, 0x9452, 0xE868, 0x9444, 0xE869, 0x945B, 0xE86A, 0x9460,
+	0xE86B, 0x9462, 0xE86C, 0x945E, 0xE86D, 0x946A, 0xE86E, 0x9229,
+	0xE86F, 0x9470, 0xE870, 0x9475, 0xE871, 0x9477, 0xE872, 0x947D,
+	0xE873, 0x945A, 0xE874, 0x947C, 0xE875, 0x947E, 0xE876, 0x9481,
+	0xE877, 0x947F, 0xE878, 0x9582, 0xE879, 0x9587, 0xE87A, 0x958A,
+	0xE87B, 0x9594, 0xE87C, 0x9596, 0xE87D, 0x9598, 0xE87E, 0x9599,
+	0xE880, 0x95A0, 0xE881, 0x95A8, 0xE882, 0x95A7, 0xE883, 0x95AD,
+	0xE884, 0x95BC, 0xE885, 0x95BB, 0xE886, 0x95B9, 0xE887, 0x95BE,
+	0xE888, 0x95CA, 0xE889, 0x6FF6, 0xE88A, 0x95C3, 0xE88B, 0x95CD,
+	0xE88C, 0x95CC, 0xE88D, 0x95D5, 0xE88E, 0x95D4, 0xE88F, 0x95D6,
+	0xE890, 0x95DC, 0xE891, 0x95E1, 0xE892, 0x95E5, 0xE893, 0x95E2,
+	0xE894, 0x9621, 0xE895, 0x9628, 0xE896, 0x962E, 0xE897, 0x962F,
+	0xE898, 0x9642, 0xE899, 0x964C, 0xE89A, 0x964F, 0xE89B, 0x964B,
+	0xE89C, 0x9677, 0xE89D, 0x965C, 0xE89E, 0x965E, 0xE89F, 0x965D,
+	0xE8A0, 0x965F, 0xE8A1, 0x9666, 0xE8A2, 0x9672, 0xE8A3, 0x966C,
+	0xE8A4, 0x968D, 0xE8A5, 0x9698, 0xE8A6, 0x9695, 0xE8A7, 0x9697,
+	0xE8A8, 0x96AA, 0xE8A9, 0x96A7, 0xE8AA, 0x96B1, 0xE8AB, 0x96B2,
+	0xE8AC, 0x96B0, 0xE8AD, 0x96B4, 0xE8AE, 0x96B6, 0xE8AF, 0x96B8,
+	0xE8B0, 0x96B9, 0xE8B1, 0x96CE, 0xE8B2, 0x96CB, 0xE8B3, 0x96C9,
+	0xE8B4, 0x96CD, 0xE8B5, 0x894D, 0xE8B6, 0x96DC, 0xE8B7, 0x970D,
+	0xE8B8, 0x96D5, 0xE8B9, 0x96F9, 0xE8BA, 0x9704, 0xE8BB, 0x9706,
+	0xE8BC, 0x9708, 0xE8BD, 0x9713, 0xE8BE, 0x970E, 0xE8BF, 0x9711,
+	0xE8C0, 0x970F, 0xE8C1, 0x9716, 0xE8C2, 0x9719, 0xE8C3, 0x9724,
+	0xE8C4, 0x972A, 0xE8C5, 0x9730, 0xE8C6, 0x9739, 0xE8C7, 0x973D,
+	0xE8C8, 0x973E, 0xE8C9, 0x9744, 0xE8CA, 0x9746, 0xE8CB, 0x9748,
+	0xE8CC, 0x9742, 0xE8CD, 0x9749, 0xE8CE, 0x975C, 0xE8CF, 0x9760,
+	0xE8D0, 0x9764, 0xE8D1, 0x9766, 0xE8D2, 0x9768, 0xE8D3, 0x52D2,
+	0xE8D4, 0x976B, 0xE8D5, 0x9771, 0xE8D6, 0x9779, 0xE8D7, 0x9785,
+	0xE8D8, 0x977C, 0xE8D9, 0x9781, 0xE8DA, 0x977A, 0xE8DB, 0x9786,
+	0xE8DC, 0x978B, 0xE8DD, 0x978F, 0xE8DE, 0x9790, 0xE8DF, 0x979C,
+	0xE8E0, 0x97A8, 0xE8E1, 0x97A6, 0xE8E2, 0x97A3, 0xE8E3, 0x97B3,
+	0xE8E4, 0x97B4, 0xE8E5, 0x97C3, 0xE8E6, 0x97C6, 0xE8E7, 0x97C8,
+	0xE8E8, 0x97CB, 0xE8E9, 0x97DC, 0xE8EA, 0x97ED, 0xE8EB, 0x9F4F,
+	0xE8EC, 0x97F2, 0xE8ED, 0x7ADF, 0xE8EE, 0x97F6, 0xE8EF, 0x97F5,
+	0xE8F0, 0x980F, 0xE8F1, 0x980C, 0xE8F2, 0x9838, 0xE8F3, 0x9824,
+	0xE8F4, 0x9821, 0xE8F5, 0x9837, 0xE8F6, 0x983D, 0xE8F7, 0x9846,
+	0xE8F8, 0x984F, 0xE8F9, 0x984B, 0xE8FA, 0x986B, 0xE8FB, 0x986F,
+	0xE8FC, 0x9870, 0xE940, 0x9871, 0xE941, 0x9874, 0xE942, 0x9873,
+	0xE943, 0x98AA, 0xE944, 0x98AF, 0xE945, 0x98B1, 0xE946, 0x98B6,
+	0xE947, 0x98C4, 0xE948, 0x98C3, 0xE949, 0x98C6, 0xE94A, 0x98E9,
+	0xE94B, 0x98EB, 0xE94C, 0x9903, 0xE94D, 0x9909, 0xE94E, 0x9912,
+	0xE94F, 0x9914, 0xE950, 0x9918, 0xE951, 0x9921, 0xE952, 0x991D,
+	0xE953, 0x991E, 0xE954, 0x9924, 0xE955, 0x9920, 0xE956, 0x992C,
+	0xE957, 0x992E, 0xE958, 0x993D, 0xE959, 0x993E, 0xE95A, 0x9942,
+	0xE95B, 0x9949, 0xE95C, 0x9945, 0xE95D, 0x9950, 0xE95E, 0x994B,
+	0xE95F, 0x9951, 0xE960, 0x9952, 0xE961, 0x994C, 0xE962, 0x9955,
+	0xE963, 0x9997, 0xE964, 0x9998, 0xE965, 0x99A5, 0xE966, 0x99AD,
+	0xE967, 0x99AE, 0xE968, 0x99BC, 0xE969, 0x99DF, 0xE96A, 0x99DB,
+	0xE96B, 0x99DD, 0xE96C, 0x99D8, 0xE96D, 0x99D1, 0xE96E, 0x99ED,
+	0xE96F, 0x99EE, 0xE970, 0x99F1, 0xE971, 0x99F2, 0xE972, 0x99FB,
+	0xE973, 0x99F8, 0xE974, 0x9A01, 0xE975, 0x9A0F, 0xE976, 0x9A05,
+	0xE977, 0x99E2, 0xE978, 0x9A19, 0xE979, 0x9A2B, 0xE97A, 0x9A37,
+	0xE97B, 0x9A45, 0xE97C, 0x9A42, 0xE97D, 0x9A40, 0xE97E, 0x9A43,
+	0xE980, 0x9A3E, 0xE981, 0x9A55, 0xE982, 0x9A4D, 0xE983, 0x9A5B,
+	0xE984, 0x9A57, 0xE985, 0x9A5F, 0xE986, 0x9A62, 0xE987, 0x9A65,
+	0xE988, 0x9A64, 0xE989, 0x9A69, 0xE98A, 0x9A6B, 0xE98B, 0x9A6A,
+	0xE98C, 0x9AAD, 0xE98D, 0x9AB0, 0xE98E, 0x9ABC, 0xE98F, 0x9AC0,
+	0xE990, 0x9ACF, 0xE991, 0x9AD1, 0xE992, 0x9AD3, 0xE993, 0x9AD4,
+	0xE994, 0x9ADE, 0xE995, 0x9ADF, 0xE996, 0x9AE2, 0xE997, 0x9AE3,
+	0xE998, 0x9AE6, 0xE999, 0x9AEF, 0xE99A, 0x9AEB, 0xE99B, 0x9AEE,
+	0xE99C, 0x9AF4, 0xE99D, 0x9AF1, 0xE99E, 0x9AF7, 0xE99F, 0x9AFB,
+	0xE9A0, 0x9B06, 0xE9A1, 0x9B18, 0xE9A2, 0x9B1A, 0xE9A3, 0x9B1F,
+	0xE9A4, 0x9B22, 0xE9A5, 0x9B23, 0xE9A6, 0x9B25, 0xE9A7, 0x9B27,
+	0xE9A8, 0x9B28, 0xE9A9, 0x9B29, 0xE9AA, 0x9B2A, 0xE9AB, 0x9B2E,
+	0xE9AC, 0x9B2F, 0xE9AD, 0x9B32, 0xE9AE, 0x9B44, 0xE9AF, 0x9B43,
+	0xE9B0, 0x9B4F, 0xE9B1, 0x9B4D, 0xE9B2, 0x9B4E, 0xE9B3, 0x9B51,
+	0xE9B4, 0x9B58, 0xE9B5, 0x9B74, 0xE9B6, 0x9B93, 0xE9B7, 0x9B83,
+	0xE9B8, 0x9B91, 0xE9B9, 0x9B96, 0xE9BA, 0x9B97, 0xE9BB, 0x9B9F,
+	0xE9BC, 0x9BA0, 0xE9BD, 0x9BA8, 0xE9BE, 0x9BB4, 0xE9BF, 0x9BC0,
+	0xE9C0, 0x9BCA, 0xE9C1, 0x9BB9, 0xE9C2, 0x9BC6, 0xE9C3, 0x9BCF,
+	0xE9C4, 0x9BD1, 0xE9C5, 0x9BD2, 0xE9C6, 0x9BE3, 0xE9C7, 0x9BE2,
+	0xE9C8, 0x9BE4, 0xE9C9, 0x9BD4, 0xE9CA, 0x9BE1, 0xE9CB, 0x9C3A,
+	0xE9CC, 0x9BF2, 0xE9CD, 0x9BF1, 0xE9CE, 0x9BF0, 0xE9CF, 0x9C15,
+	0xE9D0, 0x9C14, 0xE9D1, 0x9C09, 0xE9D2, 0x9C13, 0xE9D3, 0x9C0C,
+	0xE9D4, 0x9C06, 0xE9D5, 0x9C08, 0xE9D6, 0x9C12, 0xE9D7, 0x9C0A,
+	0xE9D8, 0x9C04, 0xE9D9, 0x9C2E, 0xE9DA, 0x9C1B, 0xE9DB, 0x9C25,
+	0xE9DC, 0x9C24, 0xE9DD, 0x9C21, 0xE9DE, 0x9C30, 0xE9DF, 0x9C47,
+	0xE9E0, 0x9C32, 0xE9E1, 0x9C46, 0xE9E2, 0x9C3E, 0xE9E3, 0x9C5A,
+	0xE9E4, 0x9C60, 0xE9E5, 0x9C67, 0xE9E6, 0x9C76, 0xE9E7, 0x9C78,
+	0xE9E8, 0x9CE7, 0xE9E9, 0x9CEC, 0xE9EA, 0x9CF0, 0xE9EB, 0x9D09,
+	0xE9EC, 0x9D08, 0xE9ED, 0x9CEB, 0xE9EE, 0x9D03, 0xE9EF, 0x9D06,
+	0xE9F0, 0x9D2A, 0xE9F1, 0x9D26, 0xE9F2, 0x9DAF, 0xE9F3, 0x9D23,
+	0xE9F4, 0x9D1F, 0xE9F5, 0x9D44, 0xE9F6, 0x9D15, 0xE9F7, 0x9D12,
+	0xE9F8, 0x9D41, 0xE9F9, 0x9D3F, 0xE9FA, 0x9D3E, 0xE9FB, 0x9D46,
+	0xE9FC, 0x9D48, 0xEA40, 0x9D5D, 0xEA41, 0x9D5E, 0xEA42, 0x9D64,
+	0xEA43, 0x9D51, 0xEA44, 0x9D50, 0xEA45, 0x9D59, 0xEA46, 0x9D72,
+	0xEA47, 0x9D89, 0xEA48, 0x9D87, 0xEA49, 0x9DAB, 0xEA4A, 0x9D6F,
+	0xEA4B, 0x9D7A, 0xEA4C, 0x9D9A, 0xEA4D, 0x9DA4, 0xEA4E, 0x9DA9,
+	0xEA4F, 0x9DB2, 0xEA50, 0x9DC4, 0xEA51, 0x9DC1, 0xEA52, 0x9DBB,
+	0xEA53, 0x9DB8, 0xEA54, 0x9DBA, 0xEA55, 0x9DC6, 0xEA56, 0x9DCF,
+	0xEA57, 0x9DC2, 0xEA58, 0x9DD9, 0xEA59, 0x9DD3, 0xEA5A, 0x9DF8,
+	0xEA5B, 0x9DE6, 0xEA5C, 0x9DED, 0xEA5D, 0x9DEF, 0xEA5E, 0x9DFD,
+	0xEA5F, 0x9E1A, 0xEA60, 0x9E1B, 0xEA61, 0x9E1E, 0xEA62, 0x9E75,
+	0xEA63, 0x9E79, 0xEA64, 0x9E7D, 0xEA65, 0x9E81, 0xEA66, 0x9E88,
+	0xEA67, 0x9E8B, 0xEA68, 0x9E8C, 0xEA69, 0x9E92, 0xEA6A, 0x9E95,
+	0xEA6B, 0x9E91, 0xEA6C, 0x9E9D, 0xEA6D, 0x9EA5, 0xEA6E, 0x9EA9,
+	0xEA6F, 0x9EB8, 0xEA70, 0x9EAA, 0xEA71, 0x9EAD, 0xEA72, 0x9761,
+	0xEA73, 0x9ECC, 0xEA74, 0x9ECE, 0xEA75, 0x9ECF, 0xEA76, 0x9ED0,
+	0xEA77, 0x9ED4, 0xEA78, 0x9EDC, 0xEA79, 0x9EDE, 0xEA7A, 0x9EDD,
+	0xEA7B, 0x9EE0, 0xEA7C, 0x9EE5, 0xEA7D, 0x9EE8, 0xEA7E, 0x9EEF,
+	0xEA80, 0x9EF4, 0xEA81, 0x9EF6, 0xEA82, 0x9EF7, 0xEA83, 0x9EF9,
+	0xEA84, 0x9EFB, 0xEA85, 0x9EFC, 0xEA86, 0x9EFD, 0xEA87, 0x9F07,
+	0xEA88, 0x9F08, 0xEA89, 0x76B7, 0xEA8A, 0x9F15, 0xEA8B, 0x9F21,
+	0xEA8C, 0x9F2C, 0xEA8D, 0x9F3E, 0xEA8E, 0x9F4A, 0xEA8F, 0x9F52,
+	0xEA90, 0x9F54, 0xEA91, 0x9F63, 0xEA92, 0x9F5F, 0xEA93, 0x9F60,
+	0xEA94, 0x9F61, 0xEA95, 0x9F66, 0xEA96, 0x9F67, 0xEA97, 0x9F6C,
+	0xEA98, 0x9F6A, 0xEA99, 0x9F77, 0xEA9A, 0x9F72, 0xEA9B, 0x9F76,
+	0xEA9C, 0x9F95, 0xEA9D, 0x9F9C, 0xEA9E, 0x9FA0, 0xEA9F, 0x582F,
+	0xEAA0, 0x69C7, 0xEAA1, 0x9059, 0xEAA2, 0x7464, 0xEAA3, 0x51DC,
+	0xEAA4, 0x7199, 0xFA40, 0x2170, 0xFA41, 0x2171, 0xFA42, 0x2172,
+	0xFA43, 0x2173, 0xFA44, 0x2174, 0xFA45, 0x2175, 0xFA46, 0x2176,
+	0xFA47, 0x2177, 0xFA48, 0x2178, 0xFA49, 0x2179, 0xFA55, 0xFFE4,
+	0xFA56, 0xFF07, 0xFA57, 0xFF02, 0xFA5C, 0x7E8A, 0xFA5D, 0x891C,
+	0xFA5E, 0x9348, 0xFA5F, 0x9288, 0xFA60, 0x84DC, 0xFA61, 0x4FC9,
+	0xFA62, 0x70BB, 0xFA63, 0x6631, 0xFA64, 0x68C8, 0xFA65, 0x92F9,
+	0xFA66, 0x66FB, 0xFA67, 0x5F45, 0xFA68, 0x4E28, 0xFA69, 0x4EE1,
+	0xFA6A, 0x4EFC, 0xFA6B, 0x4F00, 0xFA6C, 0x4F03, 0xFA6D, 0x4F39,
+	0xFA6E, 0x4F56, 0xFA6F, 0x4F92, 0xFA70, 0x4F8A, 0xFA71, 0x4F9A,
+	0xFA72, 0x4F94, 0xFA73, 0x4FCD, 0xFA74, 0x5040, 0xFA75, 0x5022,
+	0xFA76, 0x4FFF, 0xFA77, 0x501E, 0xFA78, 0x5046, 0xFA79, 0x5070,
+	0xFA7A, 0x5042, 0xFA7B, 0x5094, 0xFA7C, 0x50F4, 0xFA7D, 0x50D8,
+	0xFA7E, 0x514A, 0xFA80, 0x5164, 0xFA81, 0x519D, 0xFA82, 0x51BE,
+	0xFA83, 0x51EC, 0xFA84, 0x5215, 0xFA85, 0x529C, 0xFA86, 0x52A6,
+	0xFA87, 0x52C0, 0xFA88, 0x52DB, 0xFA89, 0x5300, 0xFA8A, 0x5307,
+	0xFA8B, 0x5324, 0xFA8C, 0x5372, 0xFA8D, 0x5393, 0xFA8E, 0x53B2,
+	0xFA8F, 0x53DD, 0xFA90, 0xFA0E, 0xFA91, 0x549C, 0xFA92, 0x548A,
+	0xFA93, 0x54A9, 0xFA94, 0x54FF, 0xFA95, 0x5586, 0xFA96, 0x5759,
+	0xFA97, 0x5765, 0xFA98, 0x57AC, 0xFA99, 0x57C8, 0xFA9A, 0x57C7,
+	0xFA9B, 0xFA0F, 0xFA9C, 0xFA10, 0xFA9D, 0x589E, 0xFA9E, 0x58B2,
+	0xFA9F, 0x590B, 0xFAA0, 0x5953, 0xFAA1, 0x595B, 0xFAA2, 0x595D,
+	0xFAA3, 0x5963, 0xFAA4, 0x59A4, 0xFAA5, 0x59BA, 0xFAA6, 0x5B56,
+	0xFAA7, 0x5BC0, 0xFAA8, 0x752F, 0xFAA9, 0x5BD8, 0xFAAA, 0x5BEC,
+	0xFAAB, 0x5C1E, 0xFAAC, 0x5CA6, 0xFAAD, 0x5CBA, 0xFAAE, 0x5CF5,
+	0xFAAF, 0x5D27, 0xFAB0, 0x5D53, 0xFAB1, 0xFA11, 0xFAB2, 0x5D42,
+	0xFAB3, 0x5D6D, 0xFAB4, 0x5DB8, 0xFAB5, 0x5DB9, 0xFAB6, 0x5DD0,
+	0xFAB7, 0x5F21, 0xFAB8, 0x5F34, 0xFAB9, 0x5F67, 0xFABA, 0x5FB7,
+	0xFABB, 0x5FDE, 0xFABC, 0x605D, 0xFABD, 0x6085, 0xFABE, 0x608A,
+	0xFABF, 0x60DE, 0xFAC0, 0x60D5, 0xFAC1, 0x6120, 0xFAC2, 0x60F2,
+	0xFAC3, 0x6111, 0xFAC4, 0x6137, 0xFAC5, 0x6130, 0xFAC6, 0x6198,
+	0xFAC7, 0x6213, 0xFAC8, 0x62A6, 0xFAC9, 0x63F5, 0xFACA, 0x6460,
+	0xFACB, 0x649D, 0xFACC, 0x64CE, 0xFACD, 0x654E, 0xFACE, 0x6600,
+	0xFACF, 0x6615, 0xFAD0, 0x663B, 0xFAD1, 0x6609, 0xFAD2, 0x662E,
+	0xFAD3, 0x661E, 0xFAD4, 0x6624, 0xFAD5, 0x6665, 0xFAD6, 0x6657,
+	0xFAD7, 0x6659, 0xFAD8, 0xFA12, 0xFAD9, 0x6673, 0xFADA, 0x6699,
+	0xFADB, 0x66A0, 0xFADC, 0x66B2, 0xFADD, 0x66BF, 0xFADE, 0x66FA,
+	0xFADF, 0x670E, 0xFAE0, 0xF929, 0xFAE1, 0x6766, 0xFAE2, 0x67BB,
+	0xFAE3, 0x6852, 0xFAE4, 0x67C0, 0xFAE5, 0x6801, 0xFAE6, 0x6844,
+	0xFAE7, 0x68CF, 0xFAE8, 0xFA13, 0xFAE9, 0x6968, 0xFAEA, 0xFA14,
+	0xFAEB, 0x6998, 0xFAEC, 0x69E2, 0xFAED, 0x6A30, 0xFAEE, 0x6A6B,
+	0xFAEF, 0x6A46, 0xFAF0, 0x6A73, 0xFAF1, 0x6A7E, 0xFAF2, 0x6AE2,
+	0xFAF3, 0x6AE4, 0xFAF4, 0x6BD6, 0xFAF5, 0x6C3F, 0xFAF6, 0x6C5C,
+	0xFAF7, 0x6C86, 0xFAF8, 0x6C6F, 0xFAF9, 0x6CDA, 0xFAFA, 0x6D04,
+	0xFAFB, 0x6D87, 0xFAFC, 0x6D6F, 0xFB40, 0x6D96, 0xFB41, 0x6DAC,
+	0xFB42, 0x6DCF, 0xFB43, 0x6DF8, 0xFB44, 0x6DF2, 0xFB45, 0x6DFC,
+	0xFB46, 0x6E39, 0xFB47, 0x6E5C, 0xFB48, 0x6E27, 0xFB49, 0x6E3C,
+	0xFB4A, 0x6EBF, 0xFB4B, 0x6F88, 0xFB4C, 0x6FB5, 0xFB4D, 0x6FF5,
+	0xFB4E, 0x7005, 0xFB4F, 0x7007, 0xFB50, 0x7028, 0xFB51, 0x7085,
+	0xFB52, 0x70AB, 0xFB53, 0x710F, 0xFB54, 0x7104, 0xFB55, 0x715C,
+	0xFB56, 0x7146, 0xFB57, 0x7147, 0xFB58, 0xFA15, 0xFB59, 0x71C1,
+	0xFB5A, 0x71FE, 0xFB5B, 0x72B1, 0xFB5C, 0x72BE, 0xFB5D, 0x7324,
+	0xFB5E, 0xFA16, 0xFB5F, 0x7377, 0xFB60, 0x73BD, 0xFB61, 0x73C9,
+	0xFB62, 0x73D6, 0xFB63, 0x73E3, 0xFB64, 0x73D2, 0xFB65, 0x7407,
+	0xFB66, 0x73F5, 0xFB67, 0x7426, 0xFB68, 0x742A, 0xFB69, 0x7429,
+	0xFB6A, 0x742E, 0xFB6B, 0x7462, 0xFB6C, 0x7489, 0xFB6D, 0x749F,
+	0xFB6E, 0x7501, 0xFB6F, 0x756F, 0xFB70, 0x7682, 0xFB71, 0x769C,
+	0xFB72, 0x769E, 0xFB73, 0x769B, 0xFB74, 0x76A6, 0xFB75, 0xFA17,
+	0xFB76, 0x7746, 0xFB77, 0x52AF, 0xFB78, 0x7821, 0xFB79, 0x784E,
+	0xFB7A, 0x7864, 0xFB7B, 0x787A, 0xFB7C, 0x7930, 0xFB7D, 0xFA18,
+	0xFB7E, 0xFA19, 0xFB80, 0xFA1A, 0xFB81, 0x7994, 0xFB82, 0xFA1B,
+	0xFB83, 0x799B, 0xFB84, 0x7AD1, 0xFB85, 0x7AE7, 0xFB86, 0xFA1C,
+	0xFB87, 0x7AEB, 0xFB88, 0x7B9E, 0xFB89, 0xFA1D, 0xFB8A, 0x7D48,
+	0xFB8B, 0x7D5C, 0xFB8C, 0x7DB7, 0xFB8D, 0x7DA0, 0xFB8E, 0x7DD6,
+	0xFB8F, 0x7E52, 0xFB90, 0x7F47, 0xFB91, 0x7FA1, 0xFB92, 0xFA1E,
+	0xFB93, 0x8301, 0xFB94, 0x8362, 0xFB95, 0x837F, 0xFB96, 0x83C7,
+	0xFB97, 0x83F6, 0xFB98, 0x8448, 0xFB99, 0x84B4, 0xFB9A, 0x8553,
+	0xFB9B, 0x8559, 0xFB9C, 0x856B, 0xFB9D, 0xFA1F, 0xFB9E, 0x85B0,
+	0xFB9F, 0xFA20, 0xFBA0, 0xFA21, 0xFBA1, 0x8807, 0xFBA2, 0x88F5,
+	0xFBA3, 0x8A12, 0xFBA4, 0x8A37, 0xFBA5, 0x8A79, 0xFBA6, 0x8AA7,
+	0xFBA7, 0x8ABE, 0xFBA8, 0x8ADF, 0xFBA9, 0xFA22, 0xFBAA, 0x8AF6,
+	0xFBAB, 0x8B53, 0xFBAC, 0x8B7F, 0xFBAD, 0x8CF0, 0xFBAE, 0x8CF4,
+	0xFBAF, 0x8D12, 0xFBB0, 0x8D76, 0xFBB1, 0xFA23, 0xFBB2, 0x8ECF,
+	0xFBB3, 0xFA24, 0xFBB4, 0xFA25, 0xFBB5, 0x9067, 0xFBB6, 0x90DE,
+	0xFBB7, 0xFA26, 0xFBB8, 0x9115, 0xFBB9, 0x9127, 0xFBBA, 0x91DA,
+	0xFBBB, 0x91D7, 0xFBBC, 0x91DE, 0xFBBD, 0x91ED, 0xFBBE, 0x91EE,
+	0xFBBF, 0x91E4, 0xFBC0, 0x91E5, 0xFBC1, 0x9206, 0xFBC2, 0x9210,
+	0xFBC3, 0x920A, 0xFBC4, 0x923A, 0xFBC5, 0x9240, 0xFBC6, 0x923C,
+	0xFBC7, 0x924E, 0xFBC8, 0x9259, 0xFBC9, 0x9251, 0xFBCA, 0x9239,
+	0xFBCB, 0x9267, 0xFBCC, 0x92A7, 0xFBCD, 0x9277, 0xFBCE, 0x9278,
+	0xFBCF, 0x92E7, 0xFBD0, 0x92D7, 0xFBD1, 0x92D9, 0xFBD2, 0x92D0,
+	0xFBD3, 0xFA27, 0xFBD4, 0x92D5, 0xFBD5, 0x92E0, 0xFBD6, 0x92D3,
+	0xFBD7, 0x9325, 0xFBD8, 0x9321, 0xFBD9, 0x92FB, 0xFBDA, 0xFA28,
+	0xFBDB, 0x931E, 0xFBDC, 0x92FF, 0xFBDD, 0x931D, 0xFBDE, 0x9302,
+	0xFBDF, 0x9370, 0xFBE0, 0x9357, 0xFBE1, 0x93A4, 0xFBE2, 0x93C6,
+	0xFBE3, 0x93DE, 0xFBE4, 0x93F8, 0xFBE5, 0x9431, 0xFBE6, 0x9445,
+	0xFBE7, 0x9448, 0xFBE8, 0x9592, 0xFBE9, 0xF9DC, 0xFBEA, 0xFA29,
+	0xFBEB, 0x969D, 0xFBEC, 0x96AF, 0xFBED, 0x9733, 0xFBEE, 0x973B,
+	0xFBEF, 0x9743, 0xFBF0, 0x974D, 0xFBF1, 0x974F, 0xFBF2, 0x9751,
+	0xFBF3, 0x9755, 0xFBF4, 0x9857, 0xFBF5, 0x9865, 0xFBF6, 0xFA2A,
+	0xFBF7, 0xFA2B, 0xFBF8, 0x9927, 0xFBF9, 0xFA2C, 0xFBFA, 0x999E,
+	0xFBFB, 0x9A4E, 0xFBFC, 0x9AD9, 0xFC40, 0x9ADC, 0xFC41, 0x9B75,
+	0xFC42, 0x9B72, 0xFC43, 0x9B8F, 0xFC44, 0x9BB1, 0xFC45, 0x9BBB,
+	0xFC46, 0x9C00, 0xFC47, 0x9D70, 0xFC48, 0x9D6B, 0xFC49, 0xFA2D,
+	0xFC4A, 0x9E19, 0xFC4B, 0x9ED1, 0, 0
+};
+#endif
+
+
+
+WCHAR ff_convert (	/* Converted code, 0 means conversion error */
+	WCHAR	chr,	/* Character code to be converted */
+	UINT	dir		/* 0: Unicode to OEMCP, 1: OEMCP to Unicode */
+)
+{
+	const WCHAR *p;
+	WCHAR c;
+	int i, n, li, hi;
+
+
+	if (chr <= 0x80) {	/* ASCII */
+		c = chr;
+	} else {
+#if !_TINY_TABLE
+		if (dir) {		/* OEMCP to unicode */
+			p = sjis2uni;
+			hi = sizeof sjis2uni / 4 - 1;
+		} else {		/* Unicode to OEMCP */
+			p = uni2sjis;
+			hi = sizeof uni2sjis / 4 - 1;
+		}
+		li = 0;
+		for (n = 16; n; n--) {
+			i = li + (hi - li) / 2;
+			if (chr == p[i * 2]) break;
+			if (chr > p[i * 2])
+				li = i;
+			else
+				hi = i;
+		}
+		c = n ? p[i * 2 + 1] : 0;
+#else
+		if (dir) {		/* OEMCP to unicode (Incremental search)*/
+			p = &uni2sjis[1];
+			do {
+				c = *p;
+				p += 2;
+			} while (c && c != chr);
+			p -= 3;
+			c = *p;
+		} else {		/* Unicode to OEMCP */
+			li = 0; hi = sizeof uni2sjis / 4 - 1;
+			for (n = 16; n; n--) {
+				i = li + (hi - li) / 2;
+				if (chr == uni2sjis[i * 2]) break;
+				if (chr > uni2sjis[i * 2])
+					li = i;
+				else
+					hi = i;
+			}
+			c = n ? uni2sjis[i * 2 + 1] : 0;
+		}
+#endif
+	}
+
+	return c;
+}
+
+
+
+WCHAR ff_wtoupper (	/* Upper converted character */
+	WCHAR chr		/* Input character */
+)
+{
+	static const WCHAR tbl_lower[] = { 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0xA1, 0x00A2, 0x00A3, 0x00A5, 0x00AC, 0x00AF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0x0FF, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x137, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x148, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x17E, 0x192, 0x3B1, 0x3B2, 0x3B3, 0x3B4, 0x3B5, 0x3B6, 0x3B7, 0x3B8, 0x3B9, 0x3BA, 0x3BB, 0x3BC, 0x3BD, 0x3BE, 0x3BF, 0x3C0, 0x3C1, 0x3C3, 0x3C4, 0x3C5, 0x3C6, 0x3C7, 0x3C8, 0x3C9, 0x3CA, 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437, 0x438, 0x439, 0x43A, 0x43B, 0x43C, 0x43D, 0x43E, 0x43F, 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, 0x448, 0x449, 0x44A, 0x44B, 0x44C, 0x44D, 0x44E, 0x44F, 0x451, 0x452, 0x453, 0x454, 0x455, 0x456, 0x457, 0x458, 0x459, 0x45A, 0x45B, 0x45C, 0x45E, 0x45F, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x217A, 0x217B, 0x217C, 0x217D, 0x217E, 0x217F, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0 };
+	static const WCHAR tbl_upper[] = { 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x21, 0xFFE0, 0xFFE1, 0xFFE5, 0xFFE2, 0xFFE3, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0x178, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x179, 0x17B, 0x17D, 0x191, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397, 0x398, 0x399, 0x39A, 0x39B, 0x39C, 0x39D, 0x39E, 0x39F, 0x3A0, 0x3A1, 0x3A3, 0x3A4, 0x3A5, 0x3A6, 0x3A7, 0x3A8, 0x3A9, 0x3AA, 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41A, 0x41B, 0x41C, 0x41D, 0x41E, 0x41F, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42A, 0x42B, 0x42C, 0x42D, 0x42E, 0x42F, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x407, 0x408, 0x409, 0x40A, 0x40B, 0x40C, 0x40E, 0x40F, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216A, 0x216B, 0x216C, 0x216D, 0x216E, 0x216F, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0 };
+	int i;
+
+
+	for (i = 0; tbl_lower[i] && chr != tbl_lower[i]; i++) ;
+
+	return tbl_lower[i] ? tbl_upper[i] : chr;
+}
Index: uKadecot/trunk/tools/makefsdata/option/cc936.c
===================================================================
--- uKadecot/trunk/tools/makefsdata/option/cc936.c	(revision 101)
+++ uKadecot/trunk/tools/makefsdata/option/cc936.c	(revision 101)
@@ -0,0 +1,10973 @@
+/*------------------------------------------------------------------------*/
+/* Unicode - OEM code bidirectional converter  (C)ChaN, 2009              */
+/*                                                                        */
+/* CP936 (Simplified Chinese GBK)                                         */
+/*------------------------------------------------------------------------*/
+
+#include "../ff.h"
+
+
+#if !_USE_LFN || _CODE_PAGE != 936
+#error This file is not needed in current configuration. Remove from the project.
+#endif
+
+static
+const WCHAR uni2oem[] = {
+/*  Unicode - OEM,  Unicode - OEM,  Unicode - OEM,  Unicode - OEM */
+	0x00A4, 0xA1E8, 0x00A7, 0xA1EC, 0x00A8, 0xA1A7, 0x00B0, 0xA1E3,
+	0x00B1, 0xA1C0, 0x00B7, 0xA1A4, 0x00D7, 0xA1C1, 0x00E0, 0xA8A4,
+	0x00E1, 0xA8A2, 0x00E8, 0xA8A8, 0x00E9, 0xA8A6, 0x00EA, 0xA8BA,
+	0x00EC, 0xA8AC, 0x00ED, 0xA8AA, 0x00F2, 0xA8B0, 0x00F3, 0xA8AE,
+	0x00F7, 0xA1C2, 0x00F9, 0xA8B4, 0x00FA, 0xA8B2, 0x00FC, 0xA8B9,
+	0x0101, 0xA8A1, 0x0113, 0xA8A5, 0x011B, 0xA8A7, 0x012B, 0xA8A9,
+	0x0144, 0xA8BD, 0x0148, 0xA8BE, 0x014D, 0xA8AD, 0x016B, 0xA8B1,
+	0x01CE, 0xA8A3, 0x01D0, 0xA8AB, 0x01D2, 0xA8AF, 0x01D4, 0xA8B3,
+	0x01D6, 0xA8B5, 0x01D8, 0xA8B6, 0x01DA, 0xA8B7, 0x01DC, 0xA8B8,
+	0x0251, 0xA8BB, 0x0261, 0xA8C0, 0x02C7, 0xA1A6, 0x02C9, 0xA1A5,
+	0x02CA, 0xA840, 0x02CB, 0xA841, 0x02D9, 0xA842, 0x0391, 0xA6A1,
+	0x0392, 0xA6A2, 0x0393, 0xA6A3, 0x0394, 0xA6A4, 0x0395, 0xA6A5,
+	0x0396, 0xA6A6, 0x0397, 0xA6A7, 0x0398, 0xA6A8, 0x0399, 0xA6A9,
+	0x039A, 0xA6AA, 0x039B, 0xA6AB, 0x039C, 0xA6AC, 0x039D, 0xA6AD,
+	0x039E, 0xA6AE, 0x039F, 0xA6AF, 0x03A0, 0xA6B0, 0x03A1, 0xA6B1,
+	0x03A3, 0xA6B2, 0x03A4, 0xA6B3, 0x03A5, 0xA6B4, 0x03A6, 0xA6B5,
+	0x03A7, 0xA6B6, 0x03A8, 0xA6B7, 0x03A9, 0xA6B8, 0x03B1, 0xA6C1,
+	0x03B2, 0xA6C2, 0x03B3, 0xA6C3, 0x03B4, 0xA6C4, 0x03B5, 0xA6C5,
+	0x03B6, 0xA6C6, 0x03B7, 0xA6C7, 0x03B8, 0xA6C8, 0x03B9, 0xA6C9,
+	0x03BA, 0xA6CA, 0x03BB, 0xA6CB, 0x03BC, 0xA6CC, 0x03BD, 0xA6CD,
+	0x03BE, 0xA6CE, 0x03BF, 0xA6CF, 0x03C0, 0xA6D0, 0x03C1, 0xA6D1,
+	0x03C3, 0xA6D2, 0x03C4, 0xA6D3, 0x03C5, 0xA6D4, 0x03C6, 0xA6D5,
+	0x03C7, 0xA6D6, 0x03C8, 0xA6D7, 0x03C9, 0xA6D8, 0x0401, 0xA7A7,
+	0x0410, 0xA7A1, 0x0411, 0xA7A2, 0x0412, 0xA7A3, 0x0413, 0xA7A4,
+	0x0414, 0xA7A5, 0x0415, 0xA7A6, 0x0416, 0xA7A8, 0x0417, 0xA7A9,
+	0x0418, 0xA7AA, 0x0419, 0xA7AB, 0x041A, 0xA7AC, 0x041B, 0xA7AD,
+	0x041C, 0xA7AE, 0x041D, 0xA7AF, 0x041E, 0xA7B0, 0x041F, 0xA7B1,
+	0x0420, 0xA7B2, 0x0421, 0xA7B3, 0x0422, 0xA7B4, 0x0423, 0xA7B5,
+	0x0424, 0xA7B6, 0x0425, 0xA7B7, 0x0426, 0xA7B8, 0x0427, 0xA7B9,
+	0x0428, 0xA7BA, 0x0429, 0xA7BB, 0x042A, 0xA7BC, 0x042B, 0xA7BD,
+	0x042C, 0xA7BE, 0x042D, 0xA7BF, 0x042E, 0xA7C0, 0x042F, 0xA7C1,
+	0x0430, 0xA7D1, 0x0431, 0xA7D2, 0x0432, 0xA7D3, 0x0433, 0xA7D4,
+	0x0434, 0xA7D5, 0x0435, 0xA7D6, 0x0436, 0xA7D8, 0x0437, 0xA7D9,
+	0x0438, 0xA7DA, 0x0439, 0xA7DB, 0x043A, 0xA7DC, 0x043B, 0xA7DD,
+	0x043C, 0xA7DE, 0x043D, 0xA7DF, 0x043E, 0xA7E0, 0x043F, 0xA7E1,
+	0x0440, 0xA7E2, 0x0441, 0xA7E3, 0x0442, 0xA7E4, 0x0443, 0xA7E5,
+	0x0444, 0xA7E6, 0x0445, 0xA7E7, 0x0446, 0xA7E8, 0x0447, 0xA7E9,
+	0x0448, 0xA7EA, 0x0449, 0xA7EB, 0x044A, 0xA7EC, 0x044B, 0xA7ED,
+	0x044C, 0xA7EE, 0x044D, 0xA7EF, 0x044E, 0xA7F0, 0x044F, 0xA7F1,
+	0x0451, 0xA7D7, 0x2010, 0xA95C, 0x2013, 0xA843, 0x2014, 0xA1AA,
+	0x2015, 0xA844, 0x2016, 0xA1AC, 0x2018, 0xA1AE, 0x2019, 0xA1AF,
+	0x201C, 0xA1B0, 0x201D, 0xA1B1, 0x2025, 0xA845, 0x2026, 0xA1AD,
+	0x2030, 0xA1EB, 0x2032, 0xA1E4, 0x2033, 0xA1E5, 0x2035, 0xA846,
+	0x203B, 0xA1F9, 0x20AC, 0x0080, 0x2103, 0xA1E6, 0x2105, 0xA847,
+	0x2109, 0xA848, 0x2116, 0xA1ED, 0x2121, 0xA959, 0x2160, 0xA2F1,
+	0x2161, 0xA2F2, 0x2162, 0xA2F3, 0x2163, 0xA2F4, 0x2164, 0xA2F5,
+	0x2165, 0xA2F6, 0x2166, 0xA2F7, 0x2167, 0xA2F8, 0x2168, 0xA2F9,
+	0x2169, 0xA2FA, 0x216A, 0xA2FB, 0x216B, 0xA2FC, 0x2170, 0xA2A1,
+	0x2171, 0xA2A2, 0x2172, 0xA2A3, 0x2173, 0xA2A4, 0x2174, 0xA2A5,
+	0x2175, 0xA2A6, 0x2176, 0xA2A7, 0x2177, 0xA2A8, 0x2178, 0xA2A9,
+	0x2179, 0xA2AA, 0x2190, 0xA1FB, 0x2191, 0xA1FC, 0x2192, 0xA1FA,
+	0x2193, 0xA1FD, 0x2196, 0xA849, 0x2197, 0xA84A, 0x2198, 0xA84B,
+	0x2199, 0xA84C, 0x2208, 0xA1CA, 0x220F, 0xA1C7, 0x2211, 0xA1C6,
+	0x2215, 0xA84D, 0x221A, 0xA1CC, 0x221D, 0xA1D8, 0x221E, 0xA1DE,
+	0x221F, 0xA84E, 0x2220, 0xA1CF, 0x2223, 0xA84F, 0x2225, 0xA1CE,
+	0x2227, 0xA1C4, 0x2228, 0xA1C5, 0x2229, 0xA1C9, 0x222A, 0xA1C8,
+	0x222B, 0xA1D2, 0x222E, 0xA1D3, 0x2234, 0xA1E0, 0x2235, 0xA1DF,
+	0x2236, 0xA1C3, 0x2237, 0xA1CB, 0x223D, 0xA1D7, 0x2248, 0xA1D6,
+	0x224C, 0xA1D5, 0x2252, 0xA850, 0x2260, 0xA1D9, 0x2261, 0xA1D4,
+	0x2264, 0xA1DC, 0x2265, 0xA1DD, 0x2266, 0xA851, 0x2267, 0xA852,
+	0x226E, 0xA1DA, 0x226F, 0xA1DB, 0x2295, 0xA892, 0x2299, 0xA1D1,
+	0x22A5, 0xA1CD, 0x22BF, 0xA853, 0x2312, 0xA1D0, 0x2460, 0xA2D9,
+	0x2461, 0xA2DA, 0x2462, 0xA2DB, 0x2463, 0xA2DC, 0x2464, 0xA2DD,
+	0x2465, 0xA2DE, 0x2466, 0xA2DF, 0x2467, 0xA2E0, 0x2468, 0xA2E1,
+	0x2469, 0xA2E2, 0x2474, 0xA2C5, 0x2475, 0xA2C6, 0x2476, 0xA2C7,
+	0x2477, 0xA2C8, 0x2478, 0xA2C9, 0x2479, 0xA2CA, 0x247A, 0xA2CB,
+	0x247B, 0xA2CC, 0x247C, 0xA2CD, 0x247D, 0xA2CE, 0x247E, 0xA2CF,
+	0x247F, 0xA2D0, 0x2480, 0xA2D1, 0x2481, 0xA2D2, 0x2482, 0xA2D3,
+	0x2483, 0xA2D4, 0x2484, 0xA2D5, 0x2485, 0xA2D6, 0x2486, 0xA2D7,
+	0x2487, 0xA2D8, 0x2488, 0xA2B1, 0x2489, 0xA2B2, 0x248A, 0xA2B3,
+	0x248B, 0xA2B4, 0x248C, 0xA2B5, 0x248D, 0xA2B6, 0x248E, 0xA2B7,
+	0x248F, 0xA2B8, 0x2490, 0xA2B9, 0x2491, 0xA2BA, 0x2492, 0xA2BB,
+	0x2493, 0xA2BC, 0x2494, 0xA2BD, 0x2495, 0xA2BE, 0x2496, 0xA2BF,
+	0x2497, 0xA2C0, 0x2498, 0xA2C1, 0x2499, 0xA2C2, 0x249A, 0xA2C3,
+	0x249B, 0xA2C4, 0x2500, 0xA9A4, 0x2501, 0xA9A5, 0x2502, 0xA9A6,
+	0x2503, 0xA9A7, 0x2504, 0xA9A8, 0x2505, 0xA9A9, 0x2506, 0xA9AA,
+	0x2507, 0xA9AB, 0x2508, 0xA9AC, 0x2509, 0xA9AD, 0x250A, 0xA9AE,
+	0x250B, 0xA9AF, 0x250C, 0xA9B0, 0x250D, 0xA9B1, 0x250E, 0xA9B2,
+	0x250F, 0xA9B3, 0x2510, 0xA9B4, 0x2511, 0xA9B5, 0x2512, 0xA9B6,
+	0x2513, 0xA9B7, 0x2514, 0xA9B8, 0x2515, 0xA9B9, 0x2516, 0xA9BA,
+	0x2517, 0xA9BB, 0x2518, 0xA9BC, 0x2519, 0xA9BD, 0x251A, 0xA9BE,
+	0x251B, 0xA9BF, 0x251C, 0xA9C0, 0x251D, 0xA9C1, 0x251E, 0xA9C2,
+	0x251F, 0xA9C3, 0x2520, 0xA9C4, 0x2521, 0xA9C5, 0x2522, 0xA9C6,
+	0x2523, 0xA9C7, 0x2524, 0xA9C8, 0x2525, 0xA9C9, 0x2526, 0xA9CA,
+	0x2527, 0xA9CB, 0x2528, 0xA9CC, 0x2529, 0xA9CD, 0x252A, 0xA9CE,
+	0x252B, 0xA9CF, 0x252C, 0xA9D0, 0x252D, 0xA9D1, 0x252E, 0xA9D2,
+	0x252F, 0xA9D3, 0x2530, 0xA9D4, 0x2531, 0xA9D5, 0x2532, 0xA9D6,
+	0x2533, 0xA9D7, 0x2534, 0xA9D8, 0x2535, 0xA9D9, 0x2536, 0xA9DA,
+	0x2537, 0xA9DB, 0x2538, 0xA9DC, 0x2539, 0xA9DD, 0x253A, 0xA9DE,
+	0x253B, 0xA9DF, 0x253C, 0xA9E0, 0x253D, 0xA9E1, 0x253E, 0xA9E2,
+	0x253F, 0xA9E3, 0x2540, 0xA9E4, 0x2541, 0xA9E5, 0x2542, 0xA9E6,
+	0x2543, 0xA9E7, 0x2544, 0xA9E8, 0x2545, 0xA9E9, 0x2546, 0xA9EA,
+	0x2547, 0xA9EB, 0x2548, 0xA9EC, 0x2549, 0xA9ED, 0x254A, 0xA9EE,
+	0x254B, 0xA9EF, 0x2550, 0xA854, 0x2551, 0xA855, 0x2552, 0xA856,
+	0x2553, 0xA857, 0x2554, 0xA858, 0x2555, 0xA859, 0x2556, 0xA85A,
+	0x2557, 0xA85B, 0x2558, 0xA85C, 0x2559, 0xA85D, 0x255A, 0xA85E,
+	0x255B, 0xA85F, 0x255C, 0xA860, 0x255D, 0xA861, 0x255E, 0xA862,
+	0x255F, 0xA863, 0x2560, 0xA864, 0x2561, 0xA865, 0x2562, 0xA866,
+	0x2563, 0xA867, 0x2564, 0xA868, 0x2565, 0xA869, 0x2566, 0xA86A,
+	0x2567, 0xA86B, 0x2568, 0xA86C, 0x2569, 0xA86D, 0x256A, 0xA86E,
+	0x256B, 0xA86F, 0x256C, 0xA870, 0x256D, 0xA871, 0x256E, 0xA872,
+	0x256F, 0xA873, 0x2570, 0xA874, 0x2571, 0xA875, 0x2572, 0xA876,
+	0x2573, 0xA877, 0x2581, 0xA878, 0x2582, 0xA879, 0x2583, 0xA87A,
+	0x2584, 0xA87B, 0x2585, 0xA87C, 0x2586, 0xA87D, 0x2587, 0xA87E,
+	0x2588, 0xA880, 0x2589, 0xA881, 0x258A, 0xA882, 0x258B, 0xA883,
+	0x258C, 0xA884, 0x258D, 0xA885, 0x258E, 0xA886, 0x258F, 0xA887,
+	0x2593, 0xA888, 0x2594, 0xA889, 0x2595, 0xA88A, 0x25A0, 0xA1F6,
+	0x25A1, 0xA1F5, 0x25B2, 0xA1F8, 0x25B3, 0xA1F7, 0x25BC, 0xA88B,
+	0x25BD, 0xA88C, 0x25C6, 0xA1F4, 0x25C7, 0xA1F3, 0x25CB, 0xA1F0,
+	0x25CE, 0xA1F2, 0x25CF, 0xA1F1, 0x25E2, 0xA88D, 0x25E3, 0xA88E,
+	0x25E4, 0xA88F, 0x25E5, 0xA890, 0x2605, 0xA1EF, 0x2606, 0xA1EE,
+	0x2609, 0xA891, 0x2640, 0xA1E2, 0x2642, 0xA1E1, 0x3000, 0xA1A1,
+	0x3001, 0xA1A2, 0x3002, 0xA1A3, 0x3003, 0xA1A8, 0x3005, 0xA1A9,
+	0x3006, 0xA965, 0x3007, 0xA996, 0x3008, 0xA1B4, 0x3009, 0xA1B5,
+	0x300A, 0xA1B6, 0x300B, 0xA1B7, 0x300C, 0xA1B8, 0x300D, 0xA1B9,
+	0x300E, 0xA1BA, 0x300F, 0xA1BB, 0x3010, 0xA1BE, 0x3011, 0xA1BF,
+	0x3012, 0xA893, 0x3013, 0xA1FE, 0x3014, 0xA1B2, 0x3015, 0xA1B3,
+	0x3016, 0xA1BC, 0x3017, 0xA1BD, 0x301D, 0xA894, 0x301E, 0xA895,
+	0x3021, 0xA940, 0x3022, 0xA941, 0x3023, 0xA942, 0x3024, 0xA943,
+	0x3025, 0xA944, 0x3026, 0xA945, 0x3027, 0xA946, 0x3028, 0xA947,
+	0x3029, 0xA948, 0x3041, 0xA4A1, 0x3042, 0xA4A2, 0x3043, 0xA4A3,
+	0x3044, 0xA4A4, 0x3045, 0xA4A5, 0x3046, 0xA4A6, 0x3047, 0xA4A7,
+	0x3048, 0xA4A8, 0x3049, 0xA4A9, 0x304A, 0xA4AA, 0x304B, 0xA4AB,
+	0x304C, 0xA4AC, 0x304D, 0xA4AD, 0x304E, 0xA4AE, 0x304F, 0xA4AF,
+	0x3050, 0xA4B0, 0x3051, 0xA4B1, 0x3052, 0xA4B2, 0x3053, 0xA4B3,
+	0x3054, 0xA4B4, 0x3055, 0xA4B5, 0x3056, 0xA4B6, 0x3057, 0xA4B7,
+	0x3058, 0xA4B8, 0x3059, 0xA4B9, 0x305A, 0xA4BA, 0x305B, 0xA4BB,
+	0x305C, 0xA4BC, 0x305D, 0xA4BD, 0x305E, 0xA4BE, 0x305F, 0xA4BF,
+	0x3060, 0xA4C0, 0x3061, 0xA4C1, 0x3062, 0xA4C2, 0x3063, 0xA4C3,
+	0x3064, 0xA4C4, 0x3065, 0xA4C5, 0x3066, 0xA4C6, 0x3067, 0xA4C7,
+	0x3068, 0xA4C8, 0x3069, 0xA4C9, 0x306A, 0xA4CA, 0x306B, 0xA4CB,
+	0x306C, 0xA4CC, 0x306D, 0xA4CD, 0x306E, 0xA4CE, 0x306F, 0xA4CF,
+	0x3070, 0xA4D0, 0x3071, 0xA4D1, 0x3072, 0xA4D2, 0x3073, 0xA4D3,
+	0x3074, 0xA4D4, 0x3075, 0xA4D5, 0x3076, 0xA4D6, 0x3077, 0xA4D7,
+	0x3078, 0xA4D8, 0x3079, 0xA4D9, 0x307A, 0xA4DA, 0x307B, 0xA4DB,
+	0x307C, 0xA4DC, 0x307D, 0xA4DD, 0x307E, 0xA4DE, 0x307F, 0xA4DF,
+	0x3080, 0xA4E0, 0x3081, 0xA4E1, 0x3082, 0xA4E2, 0x3083, 0xA4E3,
+	0x3084, 0xA4E4, 0x3085, 0xA4E5, 0x3086, 0xA4E6, 0x3087, 0xA4E7,
+	0x3088, 0xA4E8, 0x3089, 0xA4E9, 0x308A, 0xA4EA, 0x308B, 0xA4EB,
+	0x308C, 0xA4EC, 0x308D, 0xA4ED, 0x308E, 0xA4EE, 0x308F, 0xA4EF,
+	0x3090, 0xA4F0, 0x3091, 0xA4F1, 0x3092, 0xA4F2, 0x3093, 0xA4F3,
+	0x309B, 0xA961, 0x309C, 0xA962, 0x309D, 0xA966, 0x309E, 0xA967,
+	0x30A1, 0xA5A1, 0x30A2, 0xA5A2, 0x30A3, 0xA5A3, 0x30A4, 0xA5A4,
+	0x30A5, 0xA5A5, 0x30A6, 0xA5A6, 0x30A7, 0xA5A7, 0x30A8, 0xA5A8,
+	0x30A9, 0xA5A9, 0x30AA, 0xA5AA, 0x30AB, 0xA5AB, 0x30AC, 0xA5AC,
+	0x30AD, 0xA5AD, 0x30AE, 0xA5AE, 0x30AF, 0xA5AF, 0x30B0, 0xA5B0,
+	0x30B1, 0xA5B1, 0x30B2, 0xA5B2, 0x30B3, 0xA5B3, 0x30B4, 0xA5B4,
+	0x30B5, 0xA5B5, 0x30B6, 0xA5B6, 0x30B7, 0xA5B7, 0x30B8, 0xA5B8,
+	0x30B9, 0xA5B9, 0x30BA, 0xA5BA, 0x30BB, 0xA5BB, 0x30BC, 0xA5BC,
+	0x30BD, 0xA5BD, 0x30BE, 0xA5BE, 0x30BF, 0xA5BF, 0x30C0, 0xA5C0,
+	0x30C1, 0xA5C1, 0x30C2, 0xA5C2, 0x30C3, 0xA5C3, 0x30C4, 0xA5C4,
+	0x30C5, 0xA5C5, 0x30C6, 0xA5C6, 0x30C7, 0xA5C7, 0x30C8, 0xA5C8,
+	0x30C9, 0xA5C9, 0x30CA, 0xA5CA, 0x30CB, 0xA5CB, 0x30CC, 0xA5CC,
+	0x30CD, 0xA5CD, 0x30CE, 0xA5CE, 0x30CF, 0xA5CF, 0x30D0, 0xA5D0,
+	0x30D1, 0xA5D1, 0x30D2, 0xA5D2, 0x30D3, 0xA5D3, 0x30D4, 0xA5D4,
+	0x30D5, 0xA5D5, 0x30D6, 0xA5D6, 0x30D7, 0xA5D7, 0x30D8, 0xA5D8,
+	0x30D9, 0xA5D9, 0x30DA, 0xA5DA, 0x30DB, 0xA5DB, 0x30DC, 0xA5DC,
+	0x30DD, 0xA5DD, 0x30DE, 0xA5DE, 0x30DF, 0xA5DF, 0x30E0, 0xA5E0,
+	0x30E1, 0xA5E1, 0x30E2, 0xA5E2, 0x30E3, 0xA5E3, 0x30E4, 0xA5E4,
+	0x30E5, 0xA5E5, 0x30E6, 0xA5E6, 0x30E7, 0xA5E7, 0x30E8, 0xA5E8,
+	0x30E9, 0xA5E9, 0x30EA, 0xA5EA, 0x30EB, 0xA5EB, 0x30EC, 0xA5EC,
+	0x30ED, 0xA5ED, 0x30EE, 0xA5EE, 0x30EF, 0xA5EF, 0x30F0, 0xA5F0,
+	0x30F1, 0xA5F1, 0x30F2, 0xA5F2, 0x30F3, 0xA5F3, 0x30F4, 0xA5F4,
+	0x30F5, 0xA5F5, 0x30F6, 0xA5F6, 0x30FC, 0xA960, 0x30FD, 0xA963,
+	0x30FE, 0xA964, 0x3105, 0xA8C5, 0x3106, 0xA8C6, 0x3107, 0xA8C7,
+	0x3108, 0xA8C8, 0x3109, 0xA8C9, 0x310A, 0xA8CA, 0x310B, 0xA8CB,
+	0x310C, 0xA8CC, 0x310D, 0xA8CD, 0x310E, 0xA8CE, 0x310F, 0xA8CF,
+	0x3110, 0xA8D0, 0x3111, 0xA8D1, 0x3112, 0xA8D2, 0x3113, 0xA8D3,
+	0x3114, 0xA8D4, 0x3115, 0xA8D5, 0x3116, 0xA8D6, 0x3117, 0xA8D7,
+	0x3118, 0xA8D8, 0x3119, 0xA8D9, 0x311A, 0xA8DA, 0x311B, 0xA8DB,
+	0x311C, 0xA8DC, 0x311D, 0xA8DD, 0x311E, 0xA8DE, 0x311F, 0xA8DF,
+	0x3120, 0xA8E0, 0x3121, 0xA8E1, 0x3122, 0xA8E2, 0x3123, 0xA8E3,
+	0x3124, 0xA8E4, 0x3125, 0xA8E5, 0x3126, 0xA8E6, 0x3127, 0xA8E7,
+	0x3128, 0xA8E8, 0x3129, 0xA8E9, 0x3220, 0xA2E5, 0x3221, 0xA2E6,
+	0x3222, 0xA2E7, 0x3223, 0xA2E8, 0x3224, 0xA2E9, 0x3225, 0xA2EA,
+	0x3226, 0xA2EB, 0x3227, 0xA2EC, 0x3228, 0xA2ED, 0x3229, 0xA2EE,
+	0x3231, 0xA95A, 0x32A3, 0xA949, 0x338E, 0xA94A, 0x338F, 0xA94B,
+	0x339C, 0xA94C, 0x339D, 0xA94D, 0x339E, 0xA94E, 0x33A1, 0xA94F,
+	0x33C4, 0xA950, 0x33CE, 0xA951, 0x33D1, 0xA952, 0x33D2, 0xA953,
+	0x33D5, 0xA954, 0x4E00, 0xD2BB, 0x4E01, 0xB6A1, 0x4E02, 0x8140,
+	0x4E03, 0xC6DF, 0x4E04, 0x8141, 0x4E05, 0x8142, 0x4E06, 0x8143,
+	0x4E07, 0xCDF2, 0x4E08, 0xD5C9, 0x4E09, 0xC8FD, 0x4E0A, 0xC9CF,
+	0x4E0B, 0xCFC2, 0x4E0C, 0xD8A2, 0x4E0D, 0xB2BB, 0x4E0E, 0xD3EB,
+	0x4E0F, 0x8144, 0x4E10, 0xD8A4, 0x4E11, 0xB3F3, 0x4E12, 0x8145,
+	0x4E13, 0xD7A8, 0x4E14, 0xC7D2, 0x4E15, 0xD8A7, 0x4E16, 0xCAC0,
+	0x4E17, 0x8146, 0x4E18, 0xC7F0, 0x4E19, 0xB1FB, 0x4E1A, 0xD2B5,
+	0x4E1B, 0xB4D4, 0x4E1C, 0xB6AB, 0x4E1D, 0xCBBF, 0x4E1E, 0xD8A9,
+	0x4E1F, 0x8147, 0x4E20, 0x8148, 0x4E21, 0x8149, 0x4E22, 0xB6AA,
+	0x4E23, 0x814A, 0x4E24, 0xC1BD, 0x4E25, 0xD1CF, 0x4E26, 0x814B,
+	0x4E27, 0xC9A5, 0x4E28, 0xD8AD, 0x4E29, 0x814C, 0x4E2A, 0xB8F6,
+	0x4E2B, 0xD1BE, 0x4E2C, 0xE3DC, 0x4E2D, 0xD6D0, 0x4E2E, 0x814D,
+	0x4E2F, 0x814E, 0x4E30, 0xB7E1, 0x4E31, 0x814F, 0x4E32, 0xB4AE,
+	0x4E33, 0x8150, 0x4E34, 0xC1D9, 0x4E35, 0x8151, 0x4E36, 0xD8BC,
+	0x4E37, 0x8152, 0x4E38, 0xCDE8, 0x4E39, 0xB5A4, 0x4E3A, 0xCEAA,
+	0x4E3B, 0xD6F7, 0x4E3C, 0x8153, 0x4E3D, 0xC0F6, 0x4E3E, 0xBED9,
+	0x4E3F, 0xD8AF, 0x4E40, 0x8154, 0x4E41, 0x8155, 0x4E42, 0x8156,
+	0x4E43, 0xC4CB, 0x4E44, 0x8157, 0x4E45, 0xBEC3, 0x4E46, 0x8158,
+	0x4E47, 0xD8B1, 0x4E48, 0xC3B4, 0x4E49, 0xD2E5, 0x4E4A, 0x8159,
+	0x4E4B, 0xD6AE, 0x4E4C, 0xCEDA, 0x4E4D, 0xD5A7, 0x4E4E, 0xBAF5,
+	0x4E4F, 0xB7A6, 0x4E50, 0xC0D6, 0x4E51, 0x815A, 0x4E52, 0xC6B9,
+	0x4E53, 0xC5D2, 0x4E54, 0xC7C7, 0x4E55, 0x815B, 0x4E56, 0xB9D4,
+	0x4E57, 0x815C, 0x4E58, 0xB3CB, 0x4E59, 0xD2D2, 0x4E5A, 0x815D,
+	0x4E5B, 0x815E, 0x4E5C, 0xD8BF, 0x4E5D, 0xBEC5, 0x4E5E, 0xC6F2,
+	0x4E5F, 0xD2B2, 0x4E60, 0xCFB0, 0x4E61, 0xCFE7, 0x4E62, 0x815F,
+	0x4E63, 0x8160, 0x4E64, 0x8161, 0x4E65, 0x8162, 0x4E66, 0xCAE9,
+	0x4E67, 0x8163, 0x4E68, 0x8164, 0x4E69, 0xD8C0, 0x4E6A, 0x8165,
+	0x4E6B, 0x8166, 0x4E6C, 0x8167, 0x4E6D, 0x8168, 0x4E6E, 0x8169,
+	0x4E6F, 0x816A, 0x4E70, 0xC2F2, 0x4E71, 0xC2D2, 0x4E72, 0x816B,
+	0x4E73, 0xC8E9, 0x4E74, 0x816C, 0x4E75, 0x816D, 0x4E76, 0x816E,
+	0x4E77, 0x816F, 0x4E78, 0x8170, 0x4E79, 0x8171, 0x4E7A, 0x8172,
+	0x4E7B, 0x8173, 0x4E7C, 0x8174, 0x4E7D, 0x8175, 0x4E7E, 0xC7AC,
+	0x4E7F, 0x8176, 0x4E80, 0x8177, 0x4E81, 0x8178, 0x4E82, 0x8179,
+	0x4E83, 0x817A, 0x4E84, 0x817B, 0x4E85, 0x817C, 0x4E86, 0xC1CB,
+	0x4E87, 0x817D, 0x4E88, 0xD3E8, 0x4E89, 0xD5F9, 0x4E8A, 0x817E,
+	0x4E8B, 0xCAC2, 0x4E8C, 0xB6FE, 0x4E8D, 0xD8A1, 0x4E8E, 0xD3DA,
+	0x4E8F, 0xBFF7, 0x4E90, 0x8180, 0x4E91, 0xD4C6, 0x4E92, 0xBBA5,
+	0x4E93, 0xD8C1, 0x4E94, 0xCEE5, 0x4E95, 0xBEAE, 0x4E96, 0x8181,
+	0x4E97, 0x8182, 0x4E98, 0xD8A8, 0x4E99, 0x8183, 0x4E9A, 0xD1C7,
+	0x4E9B, 0xD0A9, 0x4E9C, 0x8184, 0x4E9D, 0x8185, 0x4E9E, 0x8186,
+	0x4E9F, 0xD8BD, 0x4EA0, 0xD9EF, 0x4EA1, 0xCDF6, 0x4EA2, 0xBFBA,
+	0x4EA3, 0x8187, 0x4EA4, 0xBDBB, 0x4EA5, 0xBAA5, 0x4EA6, 0xD2E0,
+	0x4EA7, 0xB2FA, 0x4EA8, 0xBAE0, 0x4EA9, 0xC4B6, 0x4EAA, 0x8188,
+	0x4EAB, 0xCFED, 0x4EAC, 0xBEA9, 0x4EAD, 0xCDA4, 0x4EAE, 0xC1C1,
+	0x4EAF, 0x8189, 0x4EB0, 0x818A, 0x4EB1, 0x818B, 0x4EB2, 0xC7D7,
+	0x4EB3, 0xD9F1, 0x4EB4, 0x818C, 0x4EB5, 0xD9F4, 0x4EB6, 0x818D,
+	0x4EB7, 0x818E, 0x4EB8, 0x818F, 0x4EB9, 0x8190, 0x4EBA, 0xC8CB,
+	0x4EBB, 0xD8E9, 0x4EBC, 0x8191, 0x4EBD, 0x8192, 0x4EBE, 0x8193,
+	0x4EBF, 0xD2DA, 0x4EC0, 0xCAB2, 0x4EC1, 0xC8CA, 0x4EC2, 0xD8EC,
+	0x4EC3, 0xD8EA, 0x4EC4, 0xD8C6, 0x4EC5, 0xBDF6, 0x4EC6, 0xC6CD,
+	0x4EC7, 0xB3F0, 0x4EC8, 0x8194, 0x4EC9, 0xD8EB, 0x4ECA, 0xBDF1,
+	0x4ECB, 0xBDE9, 0x4ECC, 0x8195, 0x4ECD, 0xC8D4, 0x4ECE, 0xB4D3,
+	0x4ECF, 0x8196, 0x4ED0, 0x8197, 0x4ED1, 0xC2D8, 0x4ED2, 0x8198,
+	0x4ED3, 0xB2D6, 0x4ED4, 0xD7D0, 0x4ED5, 0xCACB, 0x4ED6, 0xCBFB,
+	0x4ED7, 0xD5CC, 0x4ED8, 0xB8B6, 0x4ED9, 0xCFC9, 0x4EDA, 0x8199,
+	0x4EDB, 0x819A, 0x4EDC, 0x819B, 0x4EDD, 0xD9DA, 0x4EDE, 0xD8F0,
+	0x4EDF, 0xC7AA, 0x4EE0, 0x819C, 0x4EE1, 0xD8EE, 0x4EE2, 0x819D,
+	0x4EE3, 0xB4FA, 0x4EE4, 0xC1EE, 0x4EE5, 0xD2D4, 0x4EE6, 0x819E,
+	0x4EE7, 0x819F, 0x4EE8, 0xD8ED, 0x4EE9, 0x81A0, 0x4EEA, 0xD2C7,
+	0x4EEB, 0xD8EF, 0x4EEC, 0xC3C7, 0x4EED, 0x81A1, 0x4EEE, 0x81A2,
+	0x4EEF, 0x81A3, 0x4EF0, 0xD1F6, 0x4EF1, 0x81A4, 0x4EF2, 0xD6D9,
+	0x4EF3, 0xD8F2, 0x4EF4, 0x81A5, 0x4EF5, 0xD8F5, 0x4EF6, 0xBCFE,
+	0x4EF7, 0xBCDB, 0x4EF8, 0x81A6, 0x4EF9, 0x81A7, 0x4EFA, 0x81A8,
+	0x4EFB, 0xC8CE, 0x4EFC, 0x81A9, 0x4EFD, 0xB7DD, 0x4EFE, 0x81AA,
+	0x4EFF, 0xB7C2, 0x4F00, 0x81AB, 0x4F01, 0xC6F3, 0x4F02, 0x81AC,
+	0x4F03, 0x81AD, 0x4F04, 0x81AE, 0x4F05, 0x81AF, 0x4F06, 0x81B0,
+	0x4F07, 0x81B1, 0x4F08, 0x81B2, 0x4F09, 0xD8F8, 0x4F0A, 0xD2C1,
+	0x4F0B, 0x81B3, 0x4F0C, 0x81B4, 0x4F0D, 0xCEE9, 0x4F0E, 0xBCBF,
+	0x4F0F, 0xB7FC, 0x4F10, 0xB7A5, 0x4F11, 0xD0DD, 0x4F12, 0x81B5,
+	0x4F13, 0x81B6, 0x4F14, 0x81B7, 0x4F15, 0x81B8, 0x4F16, 0x81B9,
+	0x4F17, 0xD6DA, 0x4F18, 0xD3C5, 0x4F19, 0xBBEF, 0x4F1A, 0xBBE1,
+	0x4F1B, 0xD8F1, 0x4F1C, 0x81BA, 0x4F1D, 0x81BB, 0x4F1E, 0xC9A1,
+	0x4F1F, 0xCEB0, 0x4F20, 0xB4AB, 0x4F21, 0x81BC, 0x4F22, 0xD8F3,
+	0x4F23, 0x81BD, 0x4F24, 0xC9CB, 0x4F25, 0xD8F6, 0x4F26, 0xC2D7,
+	0x4F27, 0xD8F7, 0x4F28, 0x81BE, 0x4F29, 0x81BF, 0x4F2A, 0xCEB1,
+	0x4F2B, 0xD8F9, 0x4F2C, 0x81C0, 0x4F2D, 0x81C1, 0x4F2E, 0x81C2,
+	0x4F2F, 0xB2AE, 0x4F30, 0xB9C0, 0x4F31, 0x81C3, 0x4F32, 0xD9A3,
+	0x4F33, 0x81C4, 0x4F34, 0xB0E9, 0x4F35, 0x81C5, 0x4F36, 0xC1E6,
+	0x4F37, 0x81C6, 0x4F38, 0xC9EC, 0x4F39, 0x81C7, 0x4F3A, 0xCBC5,
+	0x4F3B, 0x81C8, 0x4F3C, 0xCBC6, 0x4F3D, 0xD9A4, 0x4F3E, 0x81C9,
+	0x4F3F, 0x81CA, 0x4F40, 0x81CB, 0x4F41, 0x81CC, 0x4F42, 0x81CD,
+	0x4F43, 0xB5E8, 0x4F44, 0x81CE, 0x4F45, 0x81CF, 0x4F46, 0xB5AB,
+	0x4F47, 0x81D0, 0x4F48, 0x81D1, 0x4F49, 0x81D2, 0x4F4A, 0x81D3,
+	0x4F4B, 0x81D4, 0x4F4C, 0x81D5, 0x4F4D, 0xCEBB, 0x4F4E, 0xB5CD,
+	0x4F4F, 0xD7A1, 0x4F50, 0xD7F4, 0x4F51, 0xD3D3, 0x4F52, 0x81D6,
+	0x4F53, 0xCCE5, 0x4F54, 0x81D7, 0x4F55, 0xBACE, 0x4F56, 0x81D8,
+	0x4F57, 0xD9A2, 0x4F58, 0xD9DC, 0x4F59, 0xD3E0, 0x4F5A, 0xD8FD,
+	0x4F5B, 0xB7F0, 0x4F5C, 0xD7F7, 0x4F5D, 0xD8FE, 0x4F5E, 0xD8FA,
+	0x4F5F, 0xD9A1, 0x4F60, 0xC4E3, 0x4F61, 0x81D9, 0x4F62, 0x81DA,
+	0x4F63, 0xD3B6, 0x4F64, 0xD8F4, 0x4F65, 0xD9DD, 0x4F66, 0x81DB,
+	0x4F67, 0xD8FB, 0x4F68, 0x81DC, 0x4F69, 0xC5E5, 0x4F6A, 0x81DD,
+	0x4F6B, 0x81DE, 0x4F6C, 0xC0D0, 0x4F6D, 0x81DF, 0x4F6E, 0x81E0,
+	0x4F6F, 0xD1F0, 0x4F70, 0xB0DB, 0x4F71, 0x81E1, 0x4F72, 0x81E2,
+	0x4F73, 0xBCD1, 0x4F74, 0xD9A6, 0x4F75, 0x81E3, 0x4F76, 0xD9A5,
+	0x4F77, 0x81E4, 0x4F78, 0x81E5, 0x4F79, 0x81E6, 0x4F7A, 0x81E7,
+	0x4F7B, 0xD9AC, 0x4F7C, 0xD9AE, 0x4F7D, 0x81E8, 0x4F7E, 0xD9AB,
+	0x4F7F, 0xCAB9, 0x4F80, 0x81E9, 0x4F81, 0x81EA, 0x4F82, 0x81EB,
+	0x4F83, 0xD9A9, 0x4F84, 0xD6B6, 0x4F85, 0x81EC, 0x4F86, 0x81ED,
+	0x4F87, 0x81EE, 0x4F88, 0xB3DE, 0x4F89, 0xD9A8, 0x4F8A, 0x81EF,
+	0x4F8B, 0xC0FD, 0x4F8C, 0x81F0, 0x4F8D, 0xCACC, 0x4F8E, 0x81F1,
+	0x4F8F, 0xD9AA, 0x4F90, 0x81F2, 0x4F91, 0xD9A7, 0x4F92, 0x81F3,
+	0x4F93, 0x81F4, 0x4F94, 0xD9B0, 0x4F95, 0x81F5, 0x4F96, 0x81F6,
+	0x4F97, 0xB6B1, 0x4F98, 0x81F7, 0x4F99, 0x81F8, 0x4F9A, 0x81F9,
+	0x4F9B, 0xB9A9, 0x4F9C, 0x81FA, 0x4F9D, 0xD2C0, 0x4F9E, 0x81FB,
+	0x4F9F, 0x81FC, 0x4FA0, 0xCFC0, 0x4FA1, 0x81FD, 0x4FA2, 0x81FE,
+	0x4FA3, 0xC2C2, 0x4FA4, 0x8240, 0x4FA5, 0xBDC4, 0x4FA6, 0xD5EC,
+	0x4FA7, 0xB2E0, 0x4FA8, 0xC7C8, 0x4FA9, 0xBFEB, 0x4FAA, 0xD9AD,
+	0x4FAB, 0x8241, 0x4FAC, 0xD9AF, 0x4FAD, 0x8242, 0x4FAE, 0xCEEA,
+	0x4FAF, 0xBAEE, 0x4FB0, 0x8243, 0x4FB1, 0x8244, 0x4FB2, 0x8245,
+	0x4FB3, 0x8246, 0x4FB4, 0x8247, 0x4FB5, 0xC7D6, 0x4FB6, 0x8248,
+	0x4FB7, 0x8249, 0x4FB8, 0x824A, 0x4FB9, 0x824B, 0x4FBA, 0x824C,
+	0x4FBB, 0x824D, 0x4FBC, 0x824E, 0x4FBD, 0x824F, 0x4FBE, 0x8250,
+	0x4FBF, 0xB1E3, 0x4FC0, 0x8251, 0x4FC1, 0x8252, 0x4FC2, 0x8253,
+	0x4FC3, 0xB4D9, 0x4FC4, 0xB6ED, 0x4FC5, 0xD9B4, 0x4FC6, 0x8254,
+	0x4FC7, 0x8255, 0x4FC8, 0x8256, 0x4FC9, 0x8257, 0x4FCA, 0xBFA1,
+	0x4FCB, 0x8258, 0x4FCC, 0x8259, 0x4FCD, 0x825A, 0x4FCE, 0xD9DE,
+	0x4FCF, 0xC7CE, 0x4FD0, 0xC0FE, 0x4FD1, 0xD9B8, 0x4FD2, 0x825B,
+	0x4FD3, 0x825C, 0x4FD4, 0x825D, 0x4FD5, 0x825E, 0x4FD6, 0x825F,
+	0x4FD7, 0xCBD7, 0x4FD8, 0xB7FD, 0x4FD9, 0x8260, 0x4FDA, 0xD9B5,
+	0x4FDB, 0x8261, 0x4FDC, 0xD9B7, 0x4FDD, 0xB1A3, 0x4FDE, 0xD3E1,
+	0x4FDF, 0xD9B9, 0x4FE0, 0x8262, 0x4FE1, 0xD0C5, 0x4FE2, 0x8263,
+	0x4FE3, 0xD9B6, 0x4FE4, 0x8264, 0x4FE5, 0x8265, 0x4FE6, 0xD9B1,
+	0x4FE7, 0x8266, 0x4FE8, 0xD9B2, 0x4FE9, 0xC1A9, 0x4FEA, 0xD9B3,
+	0x4FEB, 0x8267, 0x4FEC, 0x8268, 0x4FED, 0xBCF3, 0x4FEE, 0xD0DE,
+	0x4FEF, 0xB8A9, 0x4FF0, 0x8269, 0x4FF1, 0xBEE3, 0x4FF2, 0x826A,
+	0x4FF3, 0xD9BD, 0x4FF4, 0x826B, 0x4FF5, 0x826C, 0x4FF6, 0x826D,
+	0x4FF7, 0x826E, 0x4FF8, 0xD9BA, 0x4FF9, 0x826F, 0x4FFA, 0xB0B3,
+	0x4FFB, 0x8270, 0x4FFC, 0x8271, 0x4FFD, 0x8272, 0x4FFE, 0xD9C2,
+	0x4FFF, 0x8273, 0x5000, 0x8274, 0x5001, 0x8275, 0x5002, 0x8276,
+	0x5003, 0x8277, 0x5004, 0x8278, 0x5005, 0x8279, 0x5006, 0x827A,
+	0x5007, 0x827B, 0x5008, 0x827C, 0x5009, 0x827D, 0x500A, 0x827E,
+	0x500B, 0x8280, 0x500C, 0xD9C4, 0x500D, 0xB1B6, 0x500E, 0x8281,
+	0x500F, 0xD9BF, 0x5010, 0x8282, 0x5011, 0x8283, 0x5012, 0xB5B9,
+	0x5013, 0x8284, 0x5014, 0xBEF3, 0x5015, 0x8285, 0x5016, 0x8286,
+	0x5017, 0x8287, 0x5018, 0xCCC8, 0x5019, 0xBAF2, 0x501A, 0xD2D0,
+	0x501B, 0x8288, 0x501C, 0xD9C3, 0x501D, 0x8289, 0x501E, 0x828A,
+	0x501F, 0xBDE8, 0x5020, 0x828B, 0x5021, 0xB3AB, 0x5022, 0x828C,
+	0x5023, 0x828D, 0x5024, 0x828E, 0x5025, 0xD9C5, 0x5026, 0xBEEB,
+	0x5027, 0x828F, 0x5028, 0xD9C6, 0x5029, 0xD9BB, 0x502A, 0xC4DF,
+	0x502B, 0x8290, 0x502C, 0xD9BE, 0x502D, 0xD9C1, 0x502E, 0xD9C0,
+	0x502F, 0x8291, 0x5030, 0x8292, 0x5031, 0x8293, 0x5032, 0x8294,
+	0x5033, 0x8295, 0x5034, 0x8296, 0x5035, 0x8297, 0x5036, 0x8298,
+	0x5037, 0x8299, 0x5038, 0x829A, 0x5039, 0x829B, 0x503A, 0xD5AE,
+	0x503B, 0x829C, 0x503C, 0xD6B5, 0x503D, 0x829D, 0x503E, 0xC7E3,
+	0x503F, 0x829E, 0x5040, 0x829F, 0x5041, 0x82A0, 0x5042, 0x82A1,
+	0x5043, 0xD9C8, 0x5044, 0x82A2, 0x5045, 0x82A3, 0x5046, 0x82A4,
+	0x5047, 0xBCD9, 0x5048, 0xD9CA, 0x5049, 0x82A5, 0x504A, 0x82A6,
+	0x504B, 0x82A7, 0x504C, 0xD9BC, 0x504D, 0x82A8, 0x504E, 0xD9CB,
+	0x504F, 0xC6AB, 0x5050, 0x82A9, 0x5051, 0x82AA, 0x5052, 0x82AB,
+	0x5053, 0x82AC, 0x5054, 0x82AD, 0x5055, 0xD9C9, 0x5056, 0x82AE,
+	0x5057, 0x82AF, 0x5058, 0x82B0, 0x5059, 0x82B1, 0x505A, 0xD7F6,
+	0x505B, 0x82B2, 0x505C, 0xCDA3, 0x505D, 0x82B3, 0x505E, 0x82B4,
+	0x505F, 0x82B5, 0x5060, 0x82B6, 0x5061, 0x82B7, 0x5062, 0x82B8,
+	0x5063, 0x82B9, 0x5064, 0x82BA, 0x5065, 0xBDA1, 0x5066, 0x82BB,
+	0x5067, 0x82BC, 0x5068, 0x82BD, 0x5069, 0x82BE, 0x506A, 0x82BF,
+	0x506B, 0x82C0, 0x506C, 0xD9CC, 0x506D, 0x82C1, 0x506E, 0x82C2,
+	0x506F, 0x82C3, 0x5070, 0x82C4, 0x5071, 0x82C5, 0x5072, 0x82C6,
+	0x5073, 0x82C7, 0x5074, 0x82C8, 0x5075, 0x82C9, 0x5076, 0xC5BC,
+	0x5077, 0xCDB5, 0x5078, 0x82CA, 0x5079, 0x82CB, 0x507A, 0x82CC,
+	0x507B, 0xD9CD, 0x507C, 0x82CD, 0x507D, 0x82CE, 0x507E, 0xD9C7,
+	0x507F, 0xB3A5, 0x5080, 0xBFFE, 0x5081, 0x82CF, 0x5082, 0x82D0,
+	0x5083, 0x82D1, 0x5084, 0x82D2, 0x5085, 0xB8B5, 0x5086, 0x82D3,
+	0x5087, 0x82D4, 0x5088, 0xC0FC, 0x5089, 0x82D5, 0x508A, 0x82D6,
+	0x508B, 0x82D7, 0x508C, 0x82D8, 0x508D, 0xB0F8, 0x508E, 0x82D9,
+	0x508F, 0x82DA, 0x5090, 0x82DB, 0x5091, 0x82DC, 0x5092, 0x82DD,
+	0x5093, 0x82DE, 0x5094, 0x82DF, 0x5095, 0x82E0, 0x5096, 0x82E1,
+	0x5097, 0x82E2, 0x5098, 0x82E3, 0x5099, 0x82E4, 0x509A, 0x82E5,
+	0x509B, 0x82E6, 0x509C, 0x82E7, 0x509D, 0x82E8, 0x509E, 0x82E9,
+	0x509F, 0x82EA, 0x50A0, 0x82EB, 0x50A1, 0x82EC, 0x50A2, 0x82ED,
+	0x50A3, 0xB4F6, 0x50A4, 0x82EE, 0x50A5, 0xD9CE, 0x50A6, 0x82EF,
+	0x50A7, 0xD9CF, 0x50A8, 0xB4A2, 0x50A9, 0xD9D0, 0x50AA, 0x82F0,
+	0x50AB, 0x82F1, 0x50AC, 0xB4DF, 0x50AD, 0x82F2, 0x50AE, 0x82F3,
+	0x50AF, 0x82F4, 0x50B0, 0x82F5, 0x50B1, 0x82F6, 0x50B2, 0xB0C1,
+	0x50B3, 0x82F7, 0x50B4, 0x82F8, 0x50B5, 0x82F9, 0x50B6, 0x82FA,
+	0x50B7, 0x82FB, 0x50B8, 0x82FC, 0x50B9, 0x82FD, 0x50BA, 0xD9D1,
+	0x50BB, 0xC9B5, 0x50BC, 0x82FE, 0x50BD, 0x8340, 0x50BE, 0x8341,
+	0x50BF, 0x8342, 0x50C0, 0x8343, 0x50C1, 0x8344, 0x50C2, 0x8345,
+	0x50C3, 0x8346, 0x50C4, 0x8347, 0x50C5, 0x8348, 0x50C6, 0x8349,
+	0x50C7, 0x834A, 0x50C8, 0x834B, 0x50C9, 0x834C, 0x50CA, 0x834D,
+	0x50CB, 0x834E, 0x50CC, 0x834F, 0x50CD, 0x8350, 0x50CE, 0x8351,
+	0x50CF, 0xCFF1, 0x50D0, 0x8352, 0x50D1, 0x8353, 0x50D2, 0x8354,
+	0x50D3, 0x8355, 0x50D4, 0x8356, 0x50D5, 0x8357, 0x50D6, 0xD9D2,
+	0x50D7, 0x8358, 0x50D8, 0x8359, 0x50D9, 0x835A, 0x50DA, 0xC1C5,
+	0x50DB, 0x835B, 0x50DC, 0x835C, 0x50DD, 0x835D, 0x50DE, 0x835E,
+	0x50DF, 0x835F, 0x50E0, 0x8360, 0x50E1, 0x8361, 0x50E2, 0x8362,
+	0x50E3, 0x8363, 0x50E4, 0x8364, 0x50E5, 0x8365, 0x50E6, 0xD9D6,
+	0x50E7, 0xC9AE, 0x50E8, 0x8366, 0x50E9, 0x8367, 0x50EA, 0x8368,
+	0x50EB, 0x8369, 0x50EC, 0xD9D5, 0x50ED, 0xD9D4, 0x50EE, 0xD9D7,
+	0x50EF, 0x836A, 0x50F0, 0x836B, 0x50F1, 0x836C, 0x50F2, 0x836D,
+	0x50F3, 0xCBDB, 0x50F4, 0x836E, 0x50F5, 0xBDA9, 0x50F6, 0x836F,
+	0x50F7, 0x8370, 0x50F8, 0x8371, 0x50F9, 0x8372, 0x50FA, 0x8373,
+	0x50FB, 0xC6A7, 0x50FC, 0x8374, 0x50FD, 0x8375, 0x50FE, 0x8376,
+	0x50FF, 0x8377, 0x5100, 0x8378, 0x5101, 0x8379, 0x5102, 0x837A,
+	0x5103, 0x837B, 0x5104, 0x837C, 0x5105, 0x837D, 0x5106, 0xD9D3,
+	0x5107, 0xD9D8, 0x5108, 0x837E, 0x5109, 0x8380, 0x510A, 0x8381,
+	0x510B, 0xD9D9, 0x510C, 0x8382, 0x510D, 0x8383, 0x510E, 0x8384,
+	0x510F, 0x8385, 0x5110, 0x8386, 0x5111, 0x8387, 0x5112, 0xC8E5,
+	0x5113, 0x8388, 0x5114, 0x8389, 0x5115, 0x838A, 0x5116, 0x838B,
+	0x5117, 0x838C, 0x5118, 0x838D, 0x5119, 0x838E, 0x511A, 0x838F,
+	0x511B, 0x8390, 0x511C, 0x8391, 0x511D, 0x8392, 0x511E, 0x8393,
+	0x511F, 0x8394, 0x5120, 0x8395, 0x5121, 0xC0DC, 0x5122, 0x8396,
+	0x5123, 0x8397, 0x5124, 0x8398, 0x5125, 0x8399, 0x5126, 0x839A,
+	0x5127, 0x839B, 0x5128, 0x839C, 0x5129, 0x839D, 0x512A, 0x839E,
+	0x512B, 0x839F, 0x512C, 0x83A0, 0x512D, 0x83A1, 0x512E, 0x83A2,
+	0x512F, 0x83A3, 0x5130, 0x83A4, 0x5131, 0x83A5, 0x5132, 0x83A6,
+	0x5133, 0x83A7, 0x5134, 0x83A8, 0x5135, 0x83A9, 0x5136, 0x83AA,
+	0x5137, 0x83AB, 0x5138, 0x83AC, 0x5139, 0x83AD, 0x513A, 0x83AE,
+	0x513B, 0x83AF, 0x513C, 0x83B0, 0x513D, 0x83B1, 0x513E, 0x83B2,
+	0x513F, 0xB6F9, 0x5140, 0xD8A3, 0x5141, 0xD4CA, 0x5142, 0x83B3,
+	0x5143, 0xD4AA, 0x5144, 0xD0D6, 0x5145, 0xB3E4, 0x5146, 0xD5D7,
+	0x5147, 0x83B4, 0x5148, 0xCFC8, 0x5149, 0xB9E2, 0x514A, 0x83B5,
+	0x514B, 0xBFCB, 0x514C, 0x83B6, 0x514D, 0xC3E2, 0x514E, 0x83B7,
+	0x514F, 0x83B8, 0x5150, 0x83B9, 0x5151, 0xB6D2, 0x5152, 0x83BA,
+	0x5153, 0x83BB, 0x5154, 0xCDC3, 0x5155, 0xD9EE, 0x5156, 0xD9F0,
+	0x5157, 0x83BC, 0x5158, 0x83BD, 0x5159, 0x83BE, 0x515A, 0xB5B3,
+	0x515B, 0x83BF, 0x515C, 0xB6B5, 0x515D, 0x83C0, 0x515E, 0x83C1,
+	0x515F, 0x83C2, 0x5160, 0x83C3, 0x5161, 0x83C4, 0x5162, 0xBEA4,
+	0x5163, 0x83C5, 0x5164, 0x83C6, 0x5165, 0xC8EB, 0x5166, 0x83C7,
+	0x5167, 0x83C8, 0x5168, 0xC8AB, 0x5169, 0x83C9, 0x516A, 0x83CA,
+	0x516B, 0xB0CB, 0x516C, 0xB9AB, 0x516D, 0xC1F9, 0x516E, 0xD9E2,
+	0x516F, 0x83CB, 0x5170, 0xC0BC, 0x5171, 0xB9B2, 0x5172, 0x83CC,
+	0x5173, 0xB9D8, 0x5174, 0xD0CB, 0x5175, 0xB1F8, 0x5176, 0xC6E4,
+	0x5177, 0xBEDF, 0x5178, 0xB5E4, 0x5179, 0xD7C8, 0x517A, 0x83CD,
+	0x517B, 0xD1F8, 0x517C, 0xBCE6, 0x517D, 0xCADE, 0x517E, 0x83CE,
+	0x517F, 0x83CF, 0x5180, 0xBCBD, 0x5181, 0xD9E6, 0x5182, 0xD8E7,
+	0x5183, 0x83D0, 0x5184, 0x83D1, 0x5185, 0xC4DA, 0x5186, 0x83D2,
+	0x5187, 0x83D3, 0x5188, 0xB8D4, 0x5189, 0xC8BD, 0x518A, 0x83D4,
+	0x518B, 0x83D5, 0x518C, 0xB2E1, 0x518D, 0xD4D9, 0x518E, 0x83D6,
+	0x518F, 0x83D7, 0x5190, 0x83D8, 0x5191, 0x83D9, 0x5192, 0xC3B0,
+	0x5193, 0x83DA, 0x5194, 0x83DB, 0x5195, 0xC3E1, 0x5196, 0xDAA2,
+	0x5197, 0xC8DF, 0x5198, 0x83DC, 0x5199, 0xD0B4, 0x519A, 0x83DD,
+	0x519B, 0xBEFC, 0x519C, 0xC5A9, 0x519D, 0x83DE, 0x519E, 0x83DF,
+	0x519F, 0x83E0, 0x51A0, 0xB9DA, 0x51A1, 0x83E1, 0x51A2, 0xDAA3,
+	0x51A3, 0x83E2, 0x51A4, 0xD4A9, 0x51A5, 0xDAA4, 0x51A6, 0x83E3,
+	0x51A7, 0x83E4, 0x51A8, 0x83E5, 0x51A9, 0x83E6, 0x51AA, 0x83E7,
+	0x51AB, 0xD9FB, 0x51AC, 0xB6AC, 0x51AD, 0x83E8, 0x51AE, 0x83E9,
+	0x51AF, 0xB7EB, 0x51B0, 0xB1F9, 0x51B1, 0xD9FC, 0x51B2, 0xB3E5,
+	0x51B3, 0xBEF6, 0x51B4, 0x83EA, 0x51B5, 0xBFF6, 0x51B6, 0xD2B1,
+	0x51B7, 0xC0E4, 0x51B8, 0x83EB, 0x51B9, 0x83EC, 0x51BA, 0x83ED,
+	0x51BB, 0xB6B3, 0x51BC, 0xD9FE, 0x51BD, 0xD9FD, 0x51BE, 0x83EE,
+	0x51BF, 0x83EF, 0x51C0, 0xBEBB, 0x51C1, 0x83F0, 0x51C2, 0x83F1,
+	0x51C3, 0x83F2, 0x51C4, 0xC6E0, 0x51C5, 0x83F3, 0x51C6, 0xD7BC,
+	0x51C7, 0xDAA1, 0x51C8, 0x83F4, 0x51C9, 0xC1B9, 0x51CA, 0x83F5,
+	0x51CB, 0xB5F2, 0x51CC, 0xC1E8, 0x51CD, 0x83F6, 0x51CE, 0x83F7,
+	0x51CF, 0xBCF5, 0x51D0, 0x83F8, 0x51D1, 0xB4D5, 0x51D2, 0x83F9,
+	0x51D3, 0x83FA, 0x51D4, 0x83FB, 0x51D5, 0x83FC, 0x51D6, 0x83FD,
+	0x51D7, 0x83FE, 0x51D8, 0x8440, 0x51D9, 0x8441, 0x51DA, 0x8442,
+	0x51DB, 0xC1DD, 0x51DC, 0x8443, 0x51DD, 0xC4FD, 0x51DE, 0x8444,
+	0x51DF, 0x8445, 0x51E0, 0xBCB8, 0x51E1, 0xB7B2, 0x51E2, 0x8446,
+	0x51E3, 0x8447, 0x51E4, 0xB7EF, 0x51E5, 0x8448, 0x51E6, 0x8449,
+	0x51E7, 0x844A, 0x51E8, 0x844B, 0x51E9, 0x844C, 0x51EA, 0x844D,
+	0x51EB, 0xD9EC, 0x51EC, 0x844E, 0x51ED, 0xC6BE, 0x51EE, 0x844F,
+	0x51EF, 0xBFAD, 0x51F0, 0xBBCB, 0x51F1, 0x8450, 0x51F2, 0x8451,
+	0x51F3, 0xB5CA, 0x51F4, 0x8452, 0x51F5, 0xDBC9, 0x51F6, 0xD0D7,
+	0x51F7, 0x8453, 0x51F8, 0xCDB9, 0x51F9, 0xB0BC, 0x51FA, 0xB3F6,
+	0x51FB, 0xBBF7, 0x51FC, 0xDBCA, 0x51FD, 0xBAAF, 0x51FE, 0x8454,
+	0x51FF, 0xD4E4, 0x5200, 0xB5B6, 0x5201, 0xB5F3, 0x5202, 0xD8D6,
+	0x5203, 0xC8D0, 0x5204, 0x8455, 0x5205, 0x8456, 0x5206, 0xB7D6,
+	0x5207, 0xC7D0, 0x5208, 0xD8D7, 0x5209, 0x8457, 0x520A, 0xBFAF,
+	0x520B, 0x8458, 0x520C, 0x8459, 0x520D, 0xDBBB, 0x520E, 0xD8D8,
+	0x520F, 0x845A, 0x5210, 0x845B, 0x5211, 0xD0CC, 0x5212, 0xBBAE,
+	0x5213, 0x845C, 0x5214, 0x845D, 0x5215, 0x845E, 0x5216, 0xEBBE,
+	0x5217, 0xC1D0, 0x5218, 0xC1F5, 0x5219, 0xD4F2, 0x521A, 0xB8D5,
+	0x521B, 0xB4B4, 0x521C, 0x845F, 0x521D, 0xB3F5, 0x521E, 0x8460,
+	0x521F, 0x8461, 0x5220, 0xC9BE, 0x5221, 0x8462, 0x5222, 0x8463,
+	0x5223, 0x8464, 0x5224, 0xC5D0, 0x5225, 0x8465, 0x5226, 0x8466,
+	0x5227, 0x8467, 0x5228, 0xC5D9, 0x5229, 0xC0FB, 0x522A, 0x8468,
+	0x522B, 0xB1F0, 0x522C, 0x8469, 0x522D, 0xD8D9, 0x522E, 0xB9CE,
+	0x522F, 0x846A, 0x5230, 0xB5BD, 0x5231, 0x846B, 0x5232, 0x846C,
+	0x5233, 0xD8DA, 0x5234, 0x846D, 0x5235, 0x846E, 0x5236, 0xD6C6,
+	0x5237, 0xCBA2, 0x5238, 0xC8AF, 0x5239, 0xC9B2, 0x523A, 0xB4CC,
+	0x523B, 0xBFCC, 0x523C, 0x846F, 0x523D, 0xB9F4, 0x523E, 0x8470,
+	0x523F, 0xD8DB, 0x5240, 0xD8DC, 0x5241, 0xB6E7, 0x5242, 0xBCC1,
+	0x5243, 0xCCEA, 0x5244, 0x8471, 0x5245, 0x8472, 0x5246, 0x8473,
+	0x5247, 0x8474, 0x5248, 0x8475, 0x5249, 0x8476, 0x524A, 0xCFF7,
+	0x524B, 0x8477, 0x524C, 0xD8DD, 0x524D, 0xC7B0, 0x524E, 0x8478,
+	0x524F, 0x8479, 0x5250, 0xB9D0, 0x5251, 0xBDA3, 0x5252, 0x847A,
+	0x5253, 0x847B, 0x5254, 0xCCDE, 0x5255, 0x847C, 0x5256, 0xC6CA,
+	0x5257, 0x847D, 0x5258, 0x847E, 0x5259, 0x8480, 0x525A, 0x8481,
+	0x525B, 0x8482, 0x525C, 0xD8E0, 0x525D, 0x8483, 0x525E, 0xD8DE,
+	0x525F, 0x8484, 0x5260, 0x8485, 0x5261, 0xD8DF, 0x5262, 0x8486,
+	0x5263, 0x8487, 0x5264, 0x8488, 0x5265, 0xB0FE, 0x5266, 0x8489,
+	0x5267, 0xBEE7, 0x5268, 0x848A, 0x5269, 0xCAA3, 0x526A, 0xBCF4,
+	0x526B, 0x848B, 0x526C, 0x848C, 0x526D, 0x848D, 0x526E, 0x848E,
+	0x526F, 0xB8B1, 0x5270, 0x848F, 0x5271, 0x8490, 0x5272, 0xB8EE,
+	0x5273, 0x8491, 0x5274, 0x8492, 0x5275, 0x8493, 0x5276, 0x8494,
+	0x5277, 0x8495, 0x5278, 0x8496, 0x5279, 0x8497, 0x527A, 0x8498,
+	0x527B, 0x8499, 0x527C, 0x849A, 0x527D, 0xD8E2, 0x527E, 0x849B,
+	0x527F, 0xBDCB, 0x5280, 0x849C, 0x5281, 0xD8E4, 0x5282, 0xD8E3,
+	0x5283, 0x849D, 0x5284, 0x849E, 0x5285, 0x849F, 0x5286, 0x84A0,
+	0x5287, 0x84A1, 0x5288, 0xC5FC, 0x5289, 0x84A2, 0x528A, 0x84A3,
+	0x528B, 0x84A4, 0x528C, 0x84A5, 0x528D, 0x84A6, 0x528E, 0x84A7,
+	0x528F, 0x84A8, 0x5290, 0xD8E5, 0x5291, 0x84A9, 0x5292, 0x84AA,
+	0x5293, 0xD8E6, 0x5294, 0x84AB, 0x5295, 0x84AC, 0x5296, 0x84AD,
+	0x5297, 0x84AE, 0x5298, 0x84AF, 0x5299, 0x84B0, 0x529A, 0x84B1,
+	0x529B, 0xC1A6, 0x529C, 0x84B2, 0x529D, 0xC8B0, 0x529E, 0xB0EC,
+	0x529F, 0xB9A6, 0x52A0, 0xBCD3, 0x52A1, 0xCEF1, 0x52A2, 0xDBBD,
+	0x52A3, 0xC1D3, 0x52A4, 0x84B3, 0x52A5, 0x84B4, 0x52A6, 0x84B5,
+	0x52A7, 0x84B6, 0x52A8, 0xB6AF, 0x52A9, 0xD6FA, 0x52AA, 0xC5AC,
+	0x52AB, 0xBDD9, 0x52AC, 0xDBBE, 0x52AD, 0xDBBF, 0x52AE, 0x84B7,
+	0x52AF, 0x84B8, 0x52B0, 0x84B9, 0x52B1, 0xC0F8, 0x52B2, 0xBEA2,
+	0x52B3, 0xC0CD, 0x52B4, 0x84BA, 0x52B5, 0x84BB, 0x52B6, 0x84BC,
+	0x52B7, 0x84BD, 0x52B8, 0x84BE, 0x52B9, 0x84BF, 0x52BA, 0x84C0,
+	0x52BB, 0x84C1, 0x52BC, 0x84C2, 0x52BD, 0x84C3, 0x52BE, 0xDBC0,
+	0x52BF, 0xCAC6, 0x52C0, 0x84C4, 0x52C1, 0x84C5, 0x52C2, 0x84C6,
+	0x52C3, 0xB2AA, 0x52C4, 0x84C7, 0x52C5, 0x84C8, 0x52C6, 0x84C9,
+	0x52C7, 0xD3C2, 0x52C8, 0x84CA, 0x52C9, 0xC3E3, 0x52CA, 0x84CB,
+	0x52CB, 0xD1AB, 0x52CC, 0x84CC, 0x52CD, 0x84CD, 0x52CE, 0x84CE,
+	0x52CF, 0x84CF, 0x52D0, 0xDBC2, 0x52D1, 0x84D0, 0x52D2, 0xC0D5,
+	0x52D3, 0x84D1, 0x52D4, 0x84D2, 0x52D5, 0x84D3, 0x52D6, 0xDBC3,
+	0x52D7, 0x84D4, 0x52D8, 0xBFB1, 0x52D9, 0x84D5, 0x52DA, 0x84D6,
+	0x52DB, 0x84D7, 0x52DC, 0x84D8, 0x52DD, 0x84D9, 0x52DE, 0x84DA,
+	0x52DF, 0xC4BC, 0x52E0, 0x84DB, 0x52E1, 0x84DC, 0x52E2, 0x84DD,
+	0x52E3, 0x84DE, 0x52E4, 0xC7DA, 0x52E5, 0x84DF, 0x52E6, 0x84E0,
+	0x52E7, 0x84E1, 0x52E8, 0x84E2, 0x52E9, 0x84E3, 0x52EA, 0x84E4,
+	0x52EB, 0x84E5, 0x52EC, 0x84E6, 0x52ED, 0x84E7, 0x52EE, 0x84E8,
+	0x52EF, 0x84E9, 0x52F0, 0xDBC4, 0x52F1, 0x84EA, 0x52F2, 0x84EB,
+	0x52F3, 0x84EC, 0x52F4, 0x84ED, 0x52F5, 0x84EE, 0x52F6, 0x84EF,
+	0x52F7, 0x84F0, 0x52F8, 0x84F1, 0x52F9, 0xD9E8, 0x52FA, 0xC9D7,
+	0x52FB, 0x84F2, 0x52FC, 0x84F3, 0x52FD, 0x84F4, 0x52FE, 0xB9B4,
+	0x52FF, 0xCEF0, 0x5300, 0xD4C8, 0x5301, 0x84F5, 0x5302, 0x84F6,
+	0x5303, 0x84F7, 0x5304, 0x84F8, 0x5305, 0xB0FC, 0x5306, 0xB4D2,
+	0x5307, 0x84F9, 0x5308, 0xD0D9, 0x5309, 0x84FA, 0x530A, 0x84FB,
+	0x530B, 0x84FC, 0x530C, 0x84FD, 0x530D, 0xD9E9, 0x530E, 0x84FE,
+	0x530F, 0xDECB, 0x5310, 0xD9EB, 0x5311, 0x8540, 0x5312, 0x8541,
+	0x5313, 0x8542, 0x5314, 0x8543, 0x5315, 0xD8B0, 0x5316, 0xBBAF,
+	0x5317, 0xB1B1, 0x5318, 0x8544, 0x5319, 0xB3D7, 0x531A, 0xD8CE,
+	0x531B, 0x8545, 0x531C, 0x8546, 0x531D, 0xD4D1, 0x531E, 0x8547,
+	0x531F, 0x8548, 0x5320, 0xBDB3, 0x5321, 0xBFEF, 0x5322, 0x8549,
+	0x5323, 0xCFBB, 0x5324, 0x854A, 0x5325, 0x854B, 0x5326, 0xD8D0,
+	0x5327, 0x854C, 0x5328, 0x854D, 0x5329, 0x854E, 0x532A, 0xB7CB,
+	0x532B, 0x854F, 0x532C, 0x8550, 0x532D, 0x8551, 0x532E, 0xD8D1,
+	0x532F, 0x8552, 0x5330, 0x8553, 0x5331, 0x8554, 0x5332, 0x8555,
+	0x5333, 0x8556, 0x5334, 0x8557, 0x5335, 0x8558, 0x5336, 0x8559,
+	0x5337, 0x855A, 0x5338, 0x855B, 0x5339, 0xC6A5, 0x533A, 0xC7F8,
+	0x533B, 0xD2BD, 0x533C, 0x855C, 0x533D, 0x855D, 0x533E, 0xD8D2,
+	0x533F, 0xC4E4, 0x5340, 0x855E, 0x5341, 0xCAAE, 0x5342, 0x855F,
+	0x5343, 0xC7A7, 0x5344, 0x8560, 0x5345, 0xD8A6, 0x5346, 0x8561,
+	0x5347, 0xC9FD, 0x5348, 0xCEE7, 0x5349, 0xBBDC, 0x534A, 0xB0EB,
+	0x534B, 0x8562, 0x534C, 0x8563, 0x534D, 0x8564, 0x534E, 0xBBAA,
+	0x534F, 0xD0AD, 0x5350, 0x8565, 0x5351, 0xB1B0, 0x5352, 0xD7E4,
+	0x5353, 0xD7BF, 0x5354, 0x8566, 0x5355, 0xB5A5, 0x5356, 0xC2F4,
+	0x5357, 0xC4CF, 0x5358, 0x8567, 0x5359, 0x8568, 0x535A, 0xB2A9,
+	0x535B, 0x8569, 0x535C, 0xB2B7, 0x535D, 0x856A, 0x535E, 0xB1E5,
+	0x535F, 0xDFB2, 0x5360, 0xD5BC, 0x5361, 0xBFA8, 0x5362, 0xC2AC,
+	0x5363, 0xD8D5, 0x5364, 0xC2B1, 0x5365, 0x856B, 0x5366, 0xD8D4,
+	0x5367, 0xCED4, 0x5368, 0x856C, 0x5369, 0xDAE0, 0x536A, 0x856D,
+	0x536B, 0xCEC0, 0x536C, 0x856E, 0x536D, 0x856F, 0x536E, 0xD8B4,
+	0x536F, 0xC3AE, 0x5370, 0xD3A1, 0x5371, 0xCEA3, 0x5372, 0x8570,
+	0x5373, 0xBCB4, 0x5374, 0xC8B4, 0x5375, 0xC2D1, 0x5376, 0x8571,
+	0x5377, 0xBEED, 0x5378, 0xD0B6, 0x5379, 0x8572, 0x537A, 0xDAE1,
+	0x537B, 0x8573, 0x537C, 0x8574, 0x537D, 0x8575, 0x537E, 0x8576,
+	0x537F, 0xC7E4, 0x5380, 0x8577, 0x5381, 0x8578, 0x5382, 0xB3A7,
+	0x5383, 0x8579, 0x5384, 0xB6F2, 0x5385, 0xCCFC, 0x5386, 0xC0FA,
+	0x5387, 0x857A, 0x5388, 0x857B, 0x5389, 0xC0F7, 0x538A, 0x857C,
+	0x538B, 0xD1B9, 0x538C, 0xD1E1, 0x538D, 0xD8C7, 0x538E, 0x857D,
+	0x538F, 0x857E, 0x5390, 0x8580, 0x5391, 0x8581, 0x5392, 0x8582,
+	0x5393, 0x8583, 0x5394, 0x8584, 0x5395, 0xB2DE, 0x5396, 0x8585,
+	0x5397, 0x8586, 0x5398, 0xC0E5, 0x5399, 0x8587, 0x539A, 0xBAF1,
+	0x539B, 0x8588, 0x539C, 0x8589, 0x539D, 0xD8C8, 0x539E, 0x858A,
+	0x539F, 0xD4AD, 0x53A0, 0x858B, 0x53A1, 0x858C, 0x53A2, 0xCFE1,
+	0x53A3, 0xD8C9, 0x53A4, 0x858D, 0x53A5, 0xD8CA, 0x53A6, 0xCFC3,
+	0x53A7, 0x858E, 0x53A8, 0xB3F8, 0x53A9, 0xBEC7, 0x53AA, 0x858F,
+	0x53AB, 0x8590, 0x53AC, 0x8591, 0x53AD, 0x8592, 0x53AE, 0xD8CB,
+	0x53AF, 0x8593, 0x53B0, 0x8594, 0x53B1, 0x8595, 0x53B2, 0x8596,
+	0x53B3, 0x8597, 0x53B4, 0x8598, 0x53B5, 0x8599, 0x53B6, 0xDBCC,
+	0x53B7, 0x859A, 0x53B8, 0x859B, 0x53B9, 0x859C, 0x53BA, 0x859D,
+	0x53BB, 0xC8A5, 0x53BC, 0x859E, 0x53BD, 0x859F, 0x53BE, 0x85A0,
+	0x53BF, 0xCFD8, 0x53C0, 0x85A1, 0x53C1, 0xC8FE, 0x53C2, 0xB2CE,
+	0x53C3, 0x85A2, 0x53C4, 0x85A3, 0x53C5, 0x85A4, 0x53C6, 0x85A5,
+	0x53C7, 0x85A6, 0x53C8, 0xD3D6, 0x53C9, 0xB2E6, 0x53CA, 0xBCB0,
+	0x53CB, 0xD3D1, 0x53CC, 0xCBAB, 0x53CD, 0xB7B4, 0x53CE, 0x85A7,
+	0x53CF, 0x85A8, 0x53D0, 0x85A9, 0x53D1, 0xB7A2, 0x53D2, 0x85AA,
+	0x53D3, 0x85AB, 0x53D4, 0xCAE5, 0x53D5, 0x85AC, 0x53D6, 0xC8A1,
+	0x53D7, 0xCADC, 0x53D8, 0xB1E4, 0x53D9, 0xD0F0, 0x53DA, 0x85AD,
+	0x53DB, 0xC5D1, 0x53DC, 0x85AE, 0x53DD, 0x85AF, 0x53DE, 0x85B0,
+	0x53DF, 0xDBC5, 0x53E0, 0xB5FE, 0x53E1, 0x85B1, 0x53E2, 0x85B2,
+	0x53E3, 0xBFDA, 0x53E4, 0xB9C5, 0x53E5, 0xBEE4, 0x53E6, 0xC1ED,
+	0x53E7, 0x85B3, 0x53E8, 0xDFB6, 0x53E9, 0xDFB5, 0x53EA, 0xD6BB,
+	0x53EB, 0xBDD0, 0x53EC, 0xD5D9, 0x53ED, 0xB0C8, 0x53EE, 0xB6A3,
+	0x53EF, 0xBFC9, 0x53F0, 0xCCA8, 0x53F1, 0xDFB3, 0x53F2, 0xCAB7,
+	0x53F3, 0xD3D2, 0x53F4, 0x85B4, 0x53F5, 0xD8CF, 0x53F6, 0xD2B6,
+	0x53F7, 0xBAC5, 0x53F8, 0xCBBE, 0x53F9, 0xCCBE, 0x53FA, 0x85B5,
+	0x53FB, 0xDFB7, 0x53FC, 0xB5F0, 0x53FD, 0xDFB4, 0x53FE, 0x85B6,
+	0x53FF, 0x85B7, 0x5400, 0x85B8, 0x5401, 0xD3F5, 0x5402, 0x85B9,
+	0x5403, 0xB3D4, 0x5404, 0xB8F7, 0x5405, 0x85BA, 0x5406, 0xDFBA,
+	0x5407, 0x85BB, 0x5408, 0xBACF, 0x5409, 0xBCAA, 0x540A, 0xB5F5,
+	0x540B, 0x85BC, 0x540C, 0xCDAC, 0x540D, 0xC3FB, 0x540E, 0xBAF3,
+	0x540F, 0xC0F4, 0x5410, 0xCDC2, 0x5411, 0xCFF2, 0x5412, 0xDFB8,
+	0x5413, 0xCFC5, 0x5414, 0x85BD, 0x5415, 0xC2C0, 0x5416, 0xDFB9,
+	0x5417, 0xC2F0, 0x5418, 0x85BE, 0x5419, 0x85BF, 0x541A, 0x85C0,
+	0x541B, 0xBEFD, 0x541C, 0x85C1, 0x541D, 0xC1DF, 0x541E, 0xCDCC,
+	0x541F, 0xD2F7, 0x5420, 0xB7CD, 0x5421, 0xDFC1, 0x5422, 0x85C2,
+	0x5423, 0xDFC4, 0x5424, 0x85C3, 0x5425, 0x85C4, 0x5426, 0xB7F1,
+	0x5427, 0xB0C9, 0x5428, 0xB6D6, 0x5429, 0xB7D4, 0x542A, 0x85C5,
+	0x542B, 0xBAAC, 0x542C, 0xCCFD, 0x542D, 0xBFD4, 0x542E, 0xCBB1,
+	0x542F, 0xC6F4, 0x5430, 0x85C6, 0x5431, 0xD6A8, 0x5432, 0xDFC5,
+	0x5433, 0x85C7, 0x5434, 0xCEE2, 0x5435, 0xB3B3, 0x5436, 0x85C8,
+	0x5437, 0x85C9, 0x5438, 0xCEFC, 0x5439, 0xB4B5, 0x543A, 0x85CA,
+	0x543B, 0xCEC7, 0x543C, 0xBAF0, 0x543D, 0x85CB, 0x543E, 0xCEE1,
+	0x543F, 0x85CC, 0x5440, 0xD1BD, 0x5441, 0x85CD, 0x5442, 0x85CE,
+	0x5443, 0xDFC0, 0x5444, 0x85CF, 0x5445, 0x85D0, 0x5446, 0xB4F4,
+	0x5447, 0x85D1, 0x5448, 0xB3CA, 0x5449, 0x85D2, 0x544A, 0xB8E6,
+	0x544B, 0xDFBB, 0x544C, 0x85D3, 0x544D, 0x85D4, 0x544E, 0x85D5,
+	0x544F, 0x85D6, 0x5450, 0xC4C5, 0x5451, 0x85D7, 0x5452, 0xDFBC,
+	0x5453, 0xDFBD, 0x5454, 0xDFBE, 0x5455, 0xC5BB, 0x5456, 0xDFBF,
+	0x5457, 0xDFC2, 0x5458, 0xD4B1, 0x5459, 0xDFC3, 0x545A, 0x85D8,
+	0x545B, 0xC7BA, 0x545C, 0xCED8, 0x545D, 0x85D9, 0x545E, 0x85DA,
+	0x545F, 0x85DB, 0x5460, 0x85DC, 0x5461, 0x85DD, 0x5462, 0xC4D8,
+	0x5463, 0x85DE, 0x5464, 0xDFCA, 0x5465, 0x85DF, 0x5466, 0xDFCF,
+	0x5467, 0x85E0, 0x5468, 0xD6DC, 0x5469, 0x85E1, 0x546A, 0x85E2,
+	0x546B, 0x85E3, 0x546C, 0x85E4, 0x546D, 0x85E5, 0x546E, 0x85E6,
+	0x546F, 0x85E7, 0x5470, 0x85E8, 0x5471, 0xDFC9, 0x5472, 0xDFDA,
+	0x5473, 0xCEB6, 0x5474, 0x85E9, 0x5475, 0xBAC7, 0x5476, 0xDFCE,
+	0x5477, 0xDFC8, 0x5478, 0xC5DE, 0x5479, 0x85EA, 0x547A, 0x85EB,
+	0x547B, 0xC9EB, 0x547C, 0xBAF4, 0x547D, 0xC3FC, 0x547E, 0x85EC,
+	0x547F, 0x85ED, 0x5480, 0xBED7, 0x5481, 0x85EE, 0x5482, 0xDFC6,
+	0x5483, 0x85EF, 0x5484, 0xDFCD, 0x5485, 0x85F0, 0x5486, 0xC5D8,
+	0x5487, 0x85F1, 0x5488, 0x85F2, 0x5489, 0x85F3, 0x548A, 0x85F4,
+	0x548B, 0xD5A6, 0x548C, 0xBACD, 0x548D, 0x85F5, 0x548E, 0xBECC,
+	0x548F, 0xD3BD, 0x5490, 0xB8C0, 0x5491, 0x85F6, 0x5492, 0xD6E4,
+	0x5493, 0x85F7, 0x5494, 0xDFC7, 0x5495, 0xB9BE, 0x5496, 0xBFA7,
+	0x5497, 0x85F8, 0x5498, 0x85F9, 0x5499, 0xC1FC, 0x549A, 0xDFCB,
+	0x549B, 0xDFCC, 0x549C, 0x85FA, 0x549D, 0xDFD0, 0x549E, 0x85FB,
+	0x549F, 0x85FC, 0x54A0, 0x85FD, 0x54A1, 0x85FE, 0x54A2, 0x8640,
+	0x54A3, 0xDFDB, 0x54A4, 0xDFE5, 0x54A5, 0x8641, 0x54A6, 0xDFD7,
+	0x54A7, 0xDFD6, 0x54A8, 0xD7C9, 0x54A9, 0xDFE3, 0x54AA, 0xDFE4,
+	0x54AB, 0xE5EB, 0x54AC, 0xD2A7, 0x54AD, 0xDFD2, 0x54AE, 0x8642,
+	0x54AF, 0xBFA9, 0x54B0, 0x8643, 0x54B1, 0xD4DB, 0x54B2, 0x8644,
+	0x54B3, 0xBFC8, 0x54B4, 0xDFD4, 0x54B5, 0x8645, 0x54B6, 0x8646,
+	0x54B7, 0x8647, 0x54B8, 0xCFCC, 0x54B9, 0x8648, 0x54BA, 0x8649,
+	0x54BB, 0xDFDD, 0x54BC, 0x864A, 0x54BD, 0xD1CA, 0x54BE, 0x864B,
+	0x54BF, 0xDFDE, 0x54C0, 0xB0A7, 0x54C1, 0xC6B7, 0x54C2, 0xDFD3,
+	0x54C3, 0x864C, 0x54C4, 0xBAE5, 0x54C5, 0x864D, 0x54C6, 0xB6DF,
+	0x54C7, 0xCDDB, 0x54C8, 0xB9FE, 0x54C9, 0xD4D5, 0x54CA, 0x864E,
+	0x54CB, 0x864F, 0x54CC, 0xDFDF, 0x54CD, 0xCFEC, 0x54CE, 0xB0A5,
+	0x54CF, 0xDFE7, 0x54D0, 0xDFD1, 0x54D1, 0xD1C6, 0x54D2, 0xDFD5,
+	0x54D3, 0xDFD8, 0x54D4, 0xDFD9, 0x54D5, 0xDFDC, 0x54D6, 0x8650,
+	0x54D7, 0xBBA9, 0x54D8, 0x8651, 0x54D9, 0xDFE0, 0x54DA, 0xDFE1,
+	0x54DB, 0x8652, 0x54DC, 0xDFE2, 0x54DD, 0xDFE6, 0x54DE, 0xDFE8,
+	0x54DF, 0xD3B4, 0x54E0, 0x8653, 0x54E1, 0x8654, 0x54E2, 0x8655,
+	0x54E3, 0x8656, 0x54E4, 0x8657, 0x54E5, 0xB8E7, 0x54E6, 0xC5B6,
+	0x54E7, 0xDFEA, 0x54E8, 0xC9DA, 0x54E9, 0xC1A8, 0x54EA, 0xC4C4,
+	0x54EB, 0x8658, 0x54EC, 0x8659, 0x54ED, 0xBFDE, 0x54EE, 0xCFF8,
+	0x54EF, 0x865A, 0x54F0, 0x865B, 0x54F1, 0x865C, 0x54F2, 0xD5DC,
+	0x54F3, 0xDFEE, 0x54F4, 0x865D, 0x54F5, 0x865E, 0x54F6, 0x865F,
+	0x54F7, 0x8660, 0x54F8, 0x8661, 0x54F9, 0x8662, 0x54FA, 0xB2B8,
+	0x54FB, 0x8663, 0x54FC, 0xBADF, 0x54FD, 0xDFEC, 0x54FE, 0x8664,
+	0x54FF, 0xDBC1, 0x5500, 0x8665, 0x5501, 0xD1E4, 0x5502, 0x8666,
+	0x5503, 0x8667, 0x5504, 0x8668, 0x5505, 0x8669, 0x5506, 0xCBF4,
+	0x5507, 0xB4BD, 0x5508, 0x866A, 0x5509, 0xB0A6, 0x550A, 0x866B,
+	0x550B, 0x866C, 0x550C, 0x866D, 0x550D, 0x866E, 0x550E, 0x866F,
+	0x550F, 0xDFF1, 0x5510, 0xCCC6, 0x5511, 0xDFF2, 0x5512, 0x8670,
+	0x5513, 0x8671, 0x5514, 0xDFED, 0x5515, 0x8672, 0x5516, 0x8673,
+	0x5517, 0x8674, 0x5518, 0x8675, 0x5519, 0x8676, 0x551A, 0x8677,
+	0x551B, 0xDFE9, 0x551C, 0x8678, 0x551D, 0x8679, 0x551E, 0x867A,
+	0x551F, 0x867B, 0x5520, 0xDFEB, 0x5521, 0x867C, 0x5522, 0xDFEF,
+	0x5523, 0xDFF0, 0x5524, 0xBBBD, 0x5525, 0x867D, 0x5526, 0x867E,
+	0x5527, 0xDFF3, 0x5528, 0x8680, 0x5529, 0x8681, 0x552A, 0xDFF4,
+	0x552B, 0x8682, 0x552C, 0xBBA3, 0x552D, 0x8683, 0x552E, 0xCADB,
+	0x552F, 0xCEA8, 0x5530, 0xE0A7, 0x5531, 0xB3AA, 0x5532, 0x8684,
+	0x5533, 0xE0A6, 0x5534, 0x8685, 0x5535, 0x8686, 0x5536, 0x8687,
+	0x5537, 0xE0A1, 0x5538, 0x8688, 0x5539, 0x8689, 0x553A, 0x868A,
+	0x553B, 0x868B, 0x553C, 0xDFFE, 0x553D, 0x868C, 0x553E, 0xCDD9,
+	0x553F, 0xDFFC, 0x5540, 0x868D, 0x5541, 0xDFFA, 0x5542, 0x868E,
+	0x5543, 0xBFD0, 0x5544, 0xD7C4, 0x5545, 0x868F, 0x5546, 0xC9CC,
+	0x5547, 0x8690, 0x5548, 0x8691, 0x5549, 0xDFF8, 0x554A, 0xB0A1,
+	0x554B, 0x8692, 0x554C, 0x8693, 0x554D, 0x8694, 0x554E, 0x8695,
+	0x554F, 0x8696, 0x5550, 0xDFFD, 0x5551, 0x8697, 0x5552, 0x8698,
+	0x5553, 0x8699, 0x5554, 0x869A, 0x5555, 0xDFFB, 0x5556, 0xE0A2,
+	0x5557, 0x869B, 0x5558, 0x869C, 0x5559, 0x869D, 0x555A, 0x869E,
+	0x555B, 0x869F, 0x555C, 0xE0A8, 0x555D, 0x86A0, 0x555E, 0x86A1,
+	0x555F, 0x86A2, 0x5560, 0x86A3, 0x5561, 0xB7C8, 0x5562, 0x86A4,
+	0x5563, 0x86A5, 0x5564, 0xC6A1, 0x5565, 0xC9B6, 0x5566, 0xC0B2,
+	0x5567, 0xDFF5, 0x5568, 0x86A6, 0x5569, 0x86A7, 0x556A, 0xC5BE,
+	0x556B, 0x86A8, 0x556C, 0xD8C4, 0x556D, 0xDFF9, 0x556E, 0xC4F6,
+	0x556F, 0x86A9, 0x5570, 0x86AA, 0x5571, 0x86AB, 0x5572, 0x86AC,
+	0x5573, 0x86AD, 0x5574, 0x86AE, 0x5575, 0xE0A3, 0x5576, 0xE0A4,
+	0x5577, 0xE0A5, 0x5578, 0xD0A5, 0x5579, 0x86AF, 0x557A, 0x86B0,
+	0x557B, 0xE0B4, 0x557C, 0xCCE4, 0x557D, 0x86B1, 0x557E, 0xE0B1,
+	0x557F, 0x86B2, 0x5580, 0xBFA6, 0x5581, 0xE0AF, 0x5582, 0xCEB9,
+	0x5583, 0xE0AB, 0x5584, 0xC9C6, 0x5585, 0x86B3, 0x5586, 0x86B4,
+	0x5587, 0xC0AE, 0x5588, 0xE0AE, 0x5589, 0xBAED, 0x558A, 0xBAB0,
+	0x558B, 0xE0A9, 0x558C, 0x86B5, 0x558D, 0x86B6, 0x558E, 0x86B7,
+	0x558F, 0xDFF6, 0x5590, 0x86B8, 0x5591, 0xE0B3, 0x5592, 0x86B9,
+	0x5593, 0x86BA, 0x5594, 0xE0B8, 0x5595, 0x86BB, 0x5596, 0x86BC,
+	0x5597, 0x86BD, 0x5598, 0xB4AD, 0x5599, 0xE0B9, 0x559A, 0x86BE,
+	0x559B, 0x86BF, 0x559C, 0xCFB2, 0x559D, 0xBAC8, 0x559E, 0x86C0,
+	0x559F, 0xE0B0, 0x55A0, 0x86C1, 0x55A1, 0x86C2, 0x55A2, 0x86C3,
+	0x55A3, 0x86C4, 0x55A4, 0x86C5, 0x55A5, 0x86C6, 0x55A6, 0x86C7,
+	0x55A7, 0xD0FA, 0x55A8, 0x86C8, 0x55A9, 0x86C9, 0x55AA, 0x86CA,
+	0x55AB, 0x86CB, 0x55AC, 0x86CC, 0x55AD, 0x86CD, 0x55AE, 0x86CE,
+	0x55AF, 0x86CF, 0x55B0, 0x86D0, 0x55B1, 0xE0AC, 0x55B2, 0x86D1,
+	0x55B3, 0xD4FB, 0x55B4, 0x86D2, 0x55B5, 0xDFF7, 0x55B6, 0x86D3,
+	0x55B7, 0xC5E7, 0x55B8, 0x86D4, 0x55B9, 0xE0AD, 0x55BA, 0x86D5,
+	0x55BB, 0xD3F7, 0x55BC, 0x86D6, 0x55BD, 0xE0B6, 0x55BE, 0xE0B7,
+	0x55BF, 0x86D7, 0x55C0, 0x86D8, 0x55C1, 0x86D9, 0x55C2, 0x86DA,
+	0x55C3, 0x86DB, 0x55C4, 0xE0C4, 0x55C5, 0xD0E1, 0x55C6, 0x86DC,
+	0x55C7, 0x86DD, 0x55C8, 0x86DE, 0x55C9, 0xE0BC, 0x55CA, 0x86DF,
+	0x55CB, 0x86E0, 0x55CC, 0xE0C9, 0x55CD, 0xE0CA, 0x55CE, 0x86E1,
+	0x55CF, 0x86E2, 0x55D0, 0x86E3, 0x55D1, 0xE0BE, 0x55D2, 0xE0AA,
+	0x55D3, 0xC9A4, 0x55D4, 0xE0C1, 0x55D5, 0x86E4, 0x55D6, 0xE0B2,
+	0x55D7, 0x86E5, 0x55D8, 0x86E6, 0x55D9, 0x86E7, 0x55DA, 0x86E8,
+	0x55DB, 0x86E9, 0x55DC, 0xCAC8, 0x55DD, 0xE0C3, 0x55DE, 0x86EA,
+	0x55DF, 0xE0B5, 0x55E0, 0x86EB, 0x55E1, 0xCECB, 0x55E2, 0x86EC,
+	0x55E3, 0xCBC3, 0x55E4, 0xE0CD, 0x55E5, 0xE0C6, 0x55E6, 0xE0C2,
+	0x55E7, 0x86ED, 0x55E8, 0xE0CB, 0x55E9, 0x86EE, 0x55EA, 0xE0BA,
+	0x55EB, 0xE0BF, 0x55EC, 0xE0C0, 0x55ED, 0x86EF, 0x55EE, 0x86F0,
+	0x55EF, 0xE0C5, 0x55F0, 0x86F1, 0x55F1, 0x86F2, 0x55F2, 0xE0C7,
+	0x55F3, 0xE0C8, 0x55F4, 0x86F3, 0x55F5, 0xE0CC, 0x55F6, 0x86F4,
+	0x55F7, 0xE0BB, 0x55F8, 0x86F5, 0x55F9, 0x86F6, 0x55FA, 0x86F7,
+	0x55FB, 0x86F8, 0x55FC, 0x86F9, 0x55FD, 0xCBD4, 0x55FE, 0xE0D5,
+	0x55FF, 0x86FA, 0x5600, 0xE0D6, 0x5601, 0xE0D2, 0x5602, 0x86FB,
+	0x5603, 0x86FC, 0x5604, 0x86FD, 0x5605, 0x86FE, 0x5606, 0x8740,
+	0x5607, 0x8741, 0x5608, 0xE0D0, 0x5609, 0xBCCE, 0x560A, 0x8742,
+	0x560B, 0x8743, 0x560C, 0xE0D1, 0x560D, 0x8744, 0x560E, 0xB8C2,
+	0x560F, 0xD8C5, 0x5610, 0x8745, 0x5611, 0x8746, 0x5612, 0x8747,
+	0x5613, 0x8748, 0x5614, 0x8749, 0x5615, 0x874A, 0x5616, 0x874B,
+	0x5617, 0x874C, 0x5618, 0xD0EA, 0x5619, 0x874D, 0x561A, 0x874E,
+	0x561B, 0xC2EF, 0x561C, 0x874F, 0x561D, 0x8750, 0x561E, 0xE0CF,
+	0x561F, 0xE0BD, 0x5620, 0x8751, 0x5621, 0x8752, 0x5622, 0x8753,
+	0x5623, 0xE0D4, 0x5624, 0xE0D3, 0x5625, 0x8754, 0x5626, 0x8755,
+	0x5627, 0xE0D7, 0x5628, 0x8756, 0x5629, 0x8757, 0x562A, 0x8758,
+	0x562B, 0x8759, 0x562C, 0xE0DC, 0x562D, 0xE0D8, 0x562E, 0x875A,
+	0x562F, 0x875B, 0x5630, 0x875C, 0x5631, 0xD6F6, 0x5632, 0xB3B0,
+	0x5633, 0x875D, 0x5634, 0xD7EC, 0x5635, 0x875E, 0x5636, 0xCBBB,
+	0x5637, 0x875F, 0x5638, 0x8760, 0x5639, 0xE0DA, 0x563A, 0x8761,
+	0x563B, 0xCEFB, 0x563C, 0x8762, 0x563D, 0x8763, 0x563E, 0x8764,
+	0x563F, 0xBAD9, 0x5640, 0x8765, 0x5641, 0x8766, 0x5642, 0x8767,
+	0x5643, 0x8768, 0x5644, 0x8769, 0x5645, 0x876A, 0x5646, 0x876B,
+	0x5647, 0x876C, 0x5648, 0x876D, 0x5649, 0x876E, 0x564A, 0x876F,
+	0x564B, 0x8770, 0x564C, 0xE0E1, 0x564D, 0xE0DD, 0x564E, 0xD2AD,
+	0x564F, 0x8771, 0x5650, 0x8772, 0x5651, 0x8773, 0x5652, 0x8774,
+	0x5653, 0x8775, 0x5654, 0xE0E2, 0x5655, 0x8776, 0x5656, 0x8777,
+	0x5657, 0xE0DB, 0x5658, 0xE0D9, 0x5659, 0xE0DF, 0x565A, 0x8778,
+	0x565B, 0x8779, 0x565C, 0xE0E0, 0x565D, 0x877A, 0x565E, 0x877B,
+	0x565F, 0x877C, 0x5660, 0x877D, 0x5661, 0x877E, 0x5662, 0xE0DE,
+	0x5663, 0x8780, 0x5664, 0xE0E4, 0x5665, 0x8781, 0x5666, 0x8782,
+	0x5667, 0x8783, 0x5668, 0xC6F7, 0x5669, 0xD8AC, 0x566A, 0xD4EB,
+	0x566B, 0xE0E6, 0x566C, 0xCAC9, 0x566D, 0x8784, 0x566E, 0x8785,
+	0x566F, 0x8786, 0x5670, 0x8787, 0x5671, 0xE0E5, 0x5672, 0x8788,
+	0x5673, 0x8789, 0x5674, 0x878A, 0x5675, 0x878B, 0x5676, 0xB8C1,
+	0x5677, 0x878C, 0x5678, 0x878D, 0x5679, 0x878E, 0x567A, 0x878F,
+	0x567B, 0xE0E7, 0x567C, 0xE0E8, 0x567D, 0x8790, 0x567E, 0x8791,
+	0x567F, 0x8792, 0x5680, 0x8793, 0x5681, 0x8794, 0x5682, 0x8795,
+	0x5683, 0x8796, 0x5684, 0x8797, 0x5685, 0xE0E9, 0x5686, 0xE0E3,
+	0x5687, 0x8798, 0x5688, 0x8799, 0x5689, 0x879A, 0x568A, 0x879B,
+	0x568B, 0x879C, 0x568C, 0x879D, 0x568D, 0x879E, 0x568E, 0xBABF,
+	0x568F, 0xCCE7, 0x5690, 0x879F, 0x5691, 0x87A0, 0x5692, 0x87A1,
+	0x5693, 0xE0EA, 0x5694, 0x87A2, 0x5695, 0x87A3, 0x5696, 0x87A4,
+	0x5697, 0x87A5, 0x5698, 0x87A6, 0x5699, 0x87A7, 0x569A, 0x87A8,
+	0x569B, 0x87A9, 0x569C, 0x87AA, 0x569D, 0x87AB, 0x569E, 0x87AC,
+	0x569F, 0x87AD, 0x56A0, 0x87AE, 0x56A1, 0x87AF, 0x56A2, 0x87B0,
+	0x56A3, 0xCFF9, 0x56A4, 0x87B1, 0x56A5, 0x87B2, 0x56A6, 0x87B3,
+	0x56A7, 0x87B4, 0x56A8, 0x87B5, 0x56A9, 0x87B6, 0x56AA, 0x87B7,
+	0x56AB, 0x87B8, 0x56AC, 0x87B9, 0x56AD, 0x87BA, 0x56AE, 0x87BB,
+	0x56AF, 0xE0EB, 0x56B0, 0x87BC, 0x56B1, 0x87BD, 0x56B2, 0x87BE,
+	0x56B3, 0x87BF, 0x56B4, 0x87C0, 0x56B5, 0x87C1, 0x56B6, 0x87C2,
+	0x56B7, 0xC8C2, 0x56B8, 0x87C3, 0x56B9, 0x87C4, 0x56BA, 0x87C5,
+	0x56BB, 0x87C6, 0x56BC, 0xBDC0, 0x56BD, 0x87C7, 0x56BE, 0x87C8,
+	0x56BF, 0x87C9, 0x56C0, 0x87CA, 0x56C1, 0x87CB, 0x56C2, 0x87CC,
+	0x56C3, 0x87CD, 0x56C4, 0x87CE, 0x56C5, 0x87CF, 0x56C6, 0x87D0,
+	0x56C7, 0x87D1, 0x56C8, 0x87D2, 0x56C9, 0x87D3, 0x56CA, 0xC4D2,
+	0x56CB, 0x87D4, 0x56CC, 0x87D5, 0x56CD, 0x87D6, 0x56CE, 0x87D7,
+	0x56CF, 0x87D8, 0x56D0, 0x87D9, 0x56D1, 0x87DA, 0x56D2, 0x87DB,
+	0x56D3, 0x87DC, 0x56D4, 0xE0EC, 0x56D5, 0x87DD, 0x56D6, 0x87DE,
+	0x56D7, 0xE0ED, 0x56D8, 0x87DF, 0x56D9, 0x87E0, 0x56DA, 0xC7F4,
+	0x56DB, 0xCBC4, 0x56DC, 0x87E1, 0x56DD, 0xE0EE, 0x56DE, 0xBBD8,
+	0x56DF, 0xD8B6, 0x56E0, 0xD2F2, 0x56E1, 0xE0EF, 0x56E2, 0xCDC5,
+	0x56E3, 0x87E2, 0x56E4, 0xB6DA, 0x56E5, 0x87E3, 0x56E6, 0x87E4,
+	0x56E7, 0x87E5, 0x56E8, 0x87E6, 0x56E9, 0x87E7, 0x56EA, 0x87E8,
+	0x56EB, 0xE0F1, 0x56EC, 0x87E9, 0x56ED, 0xD4B0, 0x56EE, 0x87EA,
+	0x56EF, 0x87EB, 0x56F0, 0xC0A7, 0x56F1, 0xB4D1, 0x56F2, 0x87EC,
+	0x56F3, 0x87ED, 0x56F4, 0xCEA7, 0x56F5, 0xE0F0, 0x56F6, 0x87EE,
+	0x56F7, 0x87EF, 0x56F8, 0x87F0, 0x56F9, 0xE0F2, 0x56FA, 0xB9CC,
+	0x56FB, 0x87F1, 0x56FC, 0x87F2, 0x56FD, 0xB9FA, 0x56FE, 0xCDBC,
+	0x56FF, 0xE0F3, 0x5700, 0x87F3, 0x5701, 0x87F4, 0x5702, 0x87F5,
+	0x5703, 0xC6D4, 0x5704, 0xE0F4, 0x5705, 0x87F6, 0x5706, 0xD4B2,
+	0x5707, 0x87F7, 0x5708, 0xC8A6, 0x5709, 0xE0F6, 0x570A, 0xE0F5,
+	0x570B, 0x87F8, 0x570C, 0x87F9, 0x570D, 0x87FA, 0x570E, 0x87FB,
+	0x570F, 0x87FC, 0x5710, 0x87FD, 0x5711, 0x87FE, 0x5712, 0x8840,
+	0x5713, 0x8841, 0x5714, 0x8842, 0x5715, 0x8843, 0x5716, 0x8844,
+	0x5717, 0x8845, 0x5718, 0x8846, 0x5719, 0x8847, 0x571A, 0x8848,
+	0x571B, 0x8849, 0x571C, 0xE0F7, 0x571D, 0x884A, 0x571E, 0x884B,
+	0x571F, 0xCDC1, 0x5720, 0x884C, 0x5721, 0x884D, 0x5722, 0x884E,
+	0x5723, 0xCAA5, 0x5724, 0x884F, 0x5725, 0x8850, 0x5726, 0x8851,
+	0x5727, 0x8852, 0x5728, 0xD4DA, 0x5729, 0xDBD7, 0x572A, 0xDBD9,
+	0x572B, 0x8853, 0x572C, 0xDBD8, 0x572D, 0xB9E7, 0x572E, 0xDBDC,
+	0x572F, 0xDBDD, 0x5730, 0xB5D8, 0x5731, 0x8854, 0x5732, 0x8855,
+	0x5733, 0xDBDA, 0x5734, 0x8856, 0x5735, 0x8857, 0x5736, 0x8858,
+	0x5737, 0x8859, 0x5738, 0x885A, 0x5739, 0xDBDB, 0x573A, 0xB3A1,
+	0x573B, 0xDBDF, 0x573C, 0x885B, 0x573D, 0x885C, 0x573E, 0xBBF8,
+	0x573F, 0x885D, 0x5740, 0xD6B7, 0x5741, 0x885E, 0x5742, 0xDBE0,
+	0x5743, 0x885F, 0x5744, 0x8860, 0x5745, 0x8861, 0x5746, 0x8862,
+	0x5747, 0xBEF9, 0x5748, 0x8863, 0x5749, 0x8864, 0x574A, 0xB7BB,
+	0x574B, 0x8865, 0x574C, 0xDBD0, 0x574D, 0xCCAE, 0x574E, 0xBFB2,
+	0x574F, 0xBBB5, 0x5750, 0xD7F8, 0x5751, 0xBFD3, 0x5752, 0x8866,
+	0x5753, 0x8867, 0x5754, 0x8868, 0x5755, 0x8869, 0x5756, 0x886A,
+	0x5757, 0xBFE9, 0x5758, 0x886B, 0x5759, 0x886C, 0x575A, 0xBCE1,
+	0x575B, 0xCCB3, 0x575C, 0xDBDE, 0x575D, 0xB0D3, 0x575E, 0xCEEB,
+	0x575F, 0xB7D8, 0x5760, 0xD7B9, 0x5761, 0xC6C2, 0x5762, 0x886D,
+	0x5763, 0x886E, 0x5764, 0xC0A4, 0x5765, 0x886F, 0x5766, 0xCCB9,
+	0x5767, 0x8870, 0x5768, 0xDBE7, 0x5769, 0xDBE1, 0x576A, 0xC6BA,
+	0x576B, 0xDBE3, 0x576C, 0x8871, 0x576D, 0xDBE8, 0x576E, 0x8872,
+	0x576F, 0xC5F7, 0x5770, 0x8873, 0x5771, 0x8874, 0x5772, 0x8875,
+	0x5773, 0xDBEA, 0x5774, 0x8876, 0x5775, 0x8877, 0x5776, 0xDBE9,
+	0x5777, 0xBFC0, 0x5778, 0x8878, 0x5779, 0x8879, 0x577A, 0x887A,
+	0x577B, 0xDBE6, 0x577C, 0xDBE5, 0x577D, 0x887B, 0x577E, 0x887C,
+	0x577F, 0x887D, 0x5780, 0x887E, 0x5781, 0x8880, 0x5782, 0xB4B9,
+	0x5783, 0xC0AC, 0x5784, 0xC2A2, 0x5785, 0xDBE2, 0x5786, 0xDBE4,
+	0x5787, 0x8881, 0x5788, 0x8882, 0x5789, 0x8883, 0x578A, 0x8884,
+	0x578B, 0xD0CD, 0x578C, 0xDBED, 0x578D, 0x8885, 0x578E, 0x8886,
+	0x578F, 0x8887, 0x5790, 0x8888, 0x5791, 0x8889, 0x5792, 0xC0DD,
+	0x5793, 0xDBF2, 0x5794, 0x888A, 0x5795, 0x888B, 0x5796, 0x888C,
+	0x5797, 0x888D, 0x5798, 0x888E, 0x5799, 0x888F, 0x579A, 0x8890,
+	0x579B, 0xB6E2, 0x579C, 0x8891, 0x579D, 0x8892, 0x579E, 0x8893,
+	0x579F, 0x8894, 0x57A0, 0xDBF3, 0x57A1, 0xDBD2, 0x57A2, 0xB9B8,
+	0x57A3, 0xD4AB, 0x57A4, 0xDBEC, 0x57A5, 0x8895, 0x57A6, 0xBFD1,
+	0x57A7, 0xDBF0, 0x57A8, 0x8896, 0x57A9, 0xDBD1, 0x57AA, 0x8897,
+	0x57AB, 0xB5E6, 0x57AC, 0x8898, 0x57AD, 0xDBEB, 0x57AE, 0xBFE5,
+	0x57AF, 0x8899, 0x57B0, 0x889A, 0x57B1, 0x889B, 0x57B2, 0xDBEE,
+	0x57B3, 0x889C, 0x57B4, 0xDBF1, 0x57B5, 0x889D, 0x57B6, 0x889E,
+	0x57B7, 0x889F, 0x57B8, 0xDBF9, 0x57B9, 0x88A0, 0x57BA, 0x88A1,
+	0x57BB, 0x88A2, 0x57BC, 0x88A3, 0x57BD, 0x88A4, 0x57BE, 0x88A5,
+	0x57BF, 0x88A6, 0x57C0, 0x88A7, 0x57C1, 0x88A8, 0x57C2, 0xB9A1,
+	0x57C3, 0xB0A3, 0x57C4, 0x88A9, 0x57C5, 0x88AA, 0x57C6, 0x88AB,
+	0x57C7, 0x88AC, 0x57C8, 0x88AD, 0x57C9, 0x88AE, 0x57CA, 0x88AF,
+	0x57CB, 0xC2F1, 0x57CC, 0x88B0, 0x57CD, 0x88B1, 0x57CE, 0xB3C7,
+	0x57CF, 0xDBEF, 0x57D0, 0x88B2, 0x57D1, 0x88B3, 0x57D2, 0xDBF8,
+	0x57D3, 0x88B4, 0x57D4, 0xC6D2, 0x57D5, 0xDBF4, 0x57D6, 0x88B5,
+	0x57D7, 0x88B6, 0x57D8, 0xDBF5, 0x57D9, 0xDBF7, 0x57DA, 0xDBF6,
+	0x57DB, 0x88B7, 0x57DC, 0x88B8, 0x57DD, 0xDBFE, 0x57DE, 0x88B9,
+	0x57DF, 0xD3F2, 0x57E0, 0xB2BA, 0x57E1, 0x88BA, 0x57E2, 0x88BB,
+	0x57E3, 0x88BC, 0x57E4, 0xDBFD, 0x57E5, 0x88BD, 0x57E6, 0x88BE,
+	0x57E7, 0x88BF, 0x57E8, 0x88C0, 0x57E9, 0x88C1, 0x57EA, 0x88C2,
+	0x57EB, 0x88C3, 0x57EC, 0x88C4, 0x57ED, 0xDCA4, 0x57EE, 0x88C5,
+	0x57EF, 0xDBFB, 0x57F0, 0x88C6, 0x57F1, 0x88C7, 0x57F2, 0x88C8,
+	0x57F3, 0x88C9, 0x57F4, 0xDBFA, 0x57F5, 0x88CA, 0x57F6, 0x88CB,
+	0x57F7, 0x88CC, 0x57F8, 0xDBFC, 0x57F9, 0xC5E0, 0x57FA, 0xBBF9,
+	0x57FB, 0x88CD, 0x57FC, 0x88CE, 0x57FD, 0xDCA3, 0x57FE, 0x88CF,
+	0x57FF, 0x88D0, 0x5800, 0xDCA5, 0x5801, 0x88D1, 0x5802, 0xCCC3,
+	0x5803, 0x88D2, 0x5804, 0x88D3, 0x5805, 0x88D4, 0x5806, 0xB6D1,
+	0x5807, 0xDDC0, 0x5808, 0x88D5, 0x5809, 0x88D6, 0x580A, 0x88D7,
+	0x580B, 0xDCA1, 0x580C, 0x88D8, 0x580D, 0xDCA2, 0x580E, 0x88D9,
+	0x580F, 0x88DA, 0x5810, 0x88DB, 0x5811, 0xC7B5, 0x5812, 0x88DC,
+	0x5813, 0x88DD, 0x5814, 0x88DE, 0x5815, 0xB6E9, 0x5816, 0x88DF,
+	0x5817, 0x88E0, 0x5818, 0x88E1, 0x5819, 0xDCA7, 0x581A, 0x88E2,
+	0x581B, 0x88E3, 0x581C, 0x88E4, 0x581D, 0x88E5, 0x581E, 0xDCA6,
+	0x581F, 0x88E6, 0x5820, 0xDCA9, 0x5821, 0xB1A4, 0x5822, 0x88E7,
+	0x5823, 0x88E8, 0x5824, 0xB5CC, 0x5825, 0x88E9, 0x5826, 0x88EA,
+	0x5827, 0x88EB, 0x5828, 0x88EC, 0x5829, 0x88ED, 0x582A, 0xBFB0,
+	0x582B, 0x88EE, 0x582C, 0x88EF, 0x582D, 0x88F0, 0x582E, 0x88F1,
+	0x582F, 0x88F2, 0x5830, 0xD1DF, 0x5831, 0x88F3, 0x5832, 0x88F4,
+	0x5833, 0x88F5, 0x5834, 0x88F6, 0x5835, 0xB6C2, 0x5836, 0x88F7,
+	0x5837, 0x88F8, 0x5838, 0x88F9, 0x5839, 0x88FA, 0x583A, 0x88FB,
+	0x583B, 0x88FC, 0x583C, 0x88FD, 0x583D, 0x88FE, 0x583E, 0x8940,
+	0x583F, 0x8941, 0x5840, 0x8942, 0x5841, 0x8943, 0x5842, 0x8944,
+	0x5843, 0x8945, 0x5844, 0xDCA8, 0x5845, 0x8946, 0x5846, 0x8947,
+	0x5847, 0x8948, 0x5848, 0x8949, 0x5849, 0x894A, 0x584A, 0x894B,
+	0x584B, 0x894C, 0x584C, 0xCBFA, 0x584D, 0xEBF3, 0x584E, 0x894D,
+	0x584F, 0x894E, 0x5850, 0x894F, 0x5851, 0xCBDC, 0x5852, 0x8950,
+	0x5853, 0x8951, 0x5854, 0xCBFE, 0x5855, 0x8952, 0x5856, 0x8953,
+	0x5857, 0x8954, 0x5858, 0xCCC1, 0x5859, 0x8955, 0x585A, 0x8956,
+	0x585B, 0x8957, 0x585C, 0x8958, 0x585D, 0x8959, 0x585E, 0xC8FB,
+	0x585F, 0x895A, 0x5860, 0x895B, 0x5861, 0x895C, 0x5862, 0x895D,
+	0x5863, 0x895E, 0x5864, 0x895F, 0x5865, 0xDCAA, 0x5866, 0x8960,
+	0x5867, 0x8961, 0x5868, 0x8962, 0x5869, 0x8963, 0x586A, 0x8964,
+	0x586B, 0xCCEE, 0x586C, 0xDCAB, 0x586D, 0x8965, 0x586E, 0x8966,
+	0x586F, 0x8967, 0x5870, 0x8968, 0x5871, 0x8969, 0x5872, 0x896A,
+	0x5873, 0x896B, 0x5874, 0x896C, 0x5875, 0x896D, 0x5876, 0x896E,
+	0x5877, 0x896F, 0x5878, 0x8970, 0x5879, 0x8971, 0x587A, 0x8972,
+	0x587B, 0x8973, 0x587C, 0x8974, 0x587D, 0x8975, 0x587E, 0xDBD3,
+	0x587F, 0x8976, 0x5880, 0xDCAF, 0x5881, 0xDCAC, 0x5882, 0x8977,
+	0x5883, 0xBEB3, 0x5884, 0x8978, 0x5885, 0xCAFB, 0x5886, 0x8979,
+	0x5887, 0x897A, 0x5888, 0x897B, 0x5889, 0xDCAD, 0x588A, 0x897C,
+	0x588B, 0x897D, 0x588C, 0x897E, 0x588D, 0x8980, 0x588E, 0x8981,
+	0x588F, 0x8982, 0x5890, 0x8983, 0x5891, 0x8984, 0x5892, 0xC9CA,
+	0x5893, 0xC4B9, 0x5894, 0x8985, 0x5895, 0x8986, 0x5896, 0x8987,
+	0x5897, 0x8988, 0x5898, 0x8989, 0x5899, 0xC7BD, 0x589A, 0xDCAE,
+	0x589B, 0x898A, 0x589C, 0x898B, 0x589D, 0x898C, 0x589E, 0xD4F6,
+	0x589F, 0xD0E6, 0x58A0, 0x898D, 0x58A1, 0x898E, 0x58A2, 0x898F,
+	0x58A3, 0x8990, 0x58A4, 0x8991, 0x58A5, 0x8992, 0x58A6, 0x8993,
+	0x58A7, 0x8994, 0x58A8, 0xC4AB, 0x58A9, 0xB6D5, 0x58AA, 0x8995,
+	0x58AB, 0x8996, 0x58AC, 0x8997, 0x58AD, 0x8998, 0x58AE, 0x8999,
+	0x58AF, 0x899A, 0x58B0, 0x899B, 0x58B1, 0x899C, 0x58B2, 0x899D,
+	0x58B3, 0x899E, 0x58B4, 0x899F, 0x58B5, 0x89A0, 0x58B6, 0x89A1,
+	0x58B7, 0x89A2, 0x58B8, 0x89A3, 0x58B9, 0x89A4, 0x58BA, 0x89A5,
+	0x58BB, 0x89A6, 0x58BC, 0xDBD4, 0x58BD, 0x89A7, 0x58BE, 0x89A8,
+	0x58BF, 0x89A9, 0x58C0, 0x89AA, 0x58C1, 0xB1DA, 0x58C2, 0x89AB,
+	0x58C3, 0x89AC, 0x58C4, 0x89AD, 0x58C5, 0xDBD5, 0x58C6, 0x89AE,
+	0x58C7, 0x89AF, 0x58C8, 0x89B0, 0x58C9, 0x89B1, 0x58CA, 0x89B2,
+	0x58CB, 0x89B3, 0x58CC, 0x89B4, 0x58CD, 0x89B5, 0x58CE, 0x89B6,
+	0x58CF, 0x89B7, 0x58D0, 0x89B8, 0x58D1, 0xDBD6, 0x58D2, 0x89B9,
+	0x58D3, 0x89BA, 0x58D4, 0x89BB, 0x58D5, 0xBABE, 0x58D6, 0x89BC,
+	0x58D7, 0x89BD, 0x58D8, 0x89BE, 0x58D9, 0x89BF, 0x58DA, 0x89C0,
+	0x58DB, 0x89C1, 0x58DC, 0x89C2, 0x58DD, 0x89C3, 0x58DE, 0x89C4,
+	0x58DF, 0x89C5, 0x58E0, 0x89C6, 0x58E1, 0x89C7, 0x58E2, 0x89C8,
+	0x58E3, 0x89C9, 0x58E4, 0xC8C0, 0x58E5, 0x89CA, 0x58E6, 0x89CB,
+	0x58E7, 0x89CC, 0x58E8, 0x89CD, 0x58E9, 0x89CE, 0x58EA, 0x89CF,
+	0x58EB, 0xCABF, 0x58EC, 0xC8C9, 0x58ED, 0x89D0, 0x58EE, 0xD7B3,
+	0x58EF, 0x89D1, 0x58F0, 0xC9F9, 0x58F1, 0x89D2, 0x58F2, 0x89D3,
+	0x58F3, 0xBFC7, 0x58F4, 0x89D4, 0x58F5, 0x89D5, 0x58F6, 0xBAF8,
+	0x58F7, 0x89D6, 0x58F8, 0x89D7, 0x58F9, 0xD2BC, 0x58FA, 0x89D8,
+	0x58FB, 0x89D9, 0x58FC, 0x89DA, 0x58FD, 0x89DB, 0x58FE, 0x89DC,
+	0x58FF, 0x89DD, 0x5900, 0x89DE, 0x5901, 0x89DF, 0x5902, 0xE2BA,
+	0x5903, 0x89E0, 0x5904, 0xB4A6, 0x5905, 0x89E1, 0x5906, 0x89E2,
+	0x5907, 0xB1B8, 0x5908, 0x89E3, 0x5909, 0x89E4, 0x590A, 0x89E5,
+	0x590B, 0x89E6, 0x590C, 0x89E7, 0x590D, 0xB8B4, 0x590E, 0x89E8,
+	0x590F, 0xCFC4, 0x5910, 0x89E9, 0x5911, 0x89EA, 0x5912, 0x89EB,
+	0x5913, 0x89EC, 0x5914, 0xD9E7, 0x5915, 0xCFA6, 0x5916, 0xCDE2,
+	0x5917, 0x89ED, 0x5918, 0x89EE, 0x5919, 0xD9ED, 0x591A, 0xB6E0,
+	0x591B, 0x89EF, 0x591C, 0xD2B9, 0x591D, 0x89F0, 0x591E, 0x89F1,
+	0x591F, 0xB9BB, 0x5920, 0x89F2, 0x5921, 0x89F3, 0x5922, 0x89F4,
+	0x5923, 0x89F5, 0x5924, 0xE2B9, 0x5925, 0xE2B7, 0x5926, 0x89F6,
+	0x5927, 0xB4F3, 0x5928, 0x89F7, 0x5929, 0xCCEC, 0x592A, 0xCCAB,
+	0x592B, 0xB7F2, 0x592C, 0x89F8, 0x592D, 0xD8B2, 0x592E, 0xD1EB,
+	0x592F, 0xBABB, 0x5930, 0x89F9, 0x5931, 0xCAA7, 0x5932, 0x89FA,
+	0x5933, 0x89FB, 0x5934, 0xCDB7, 0x5935, 0x89FC, 0x5936, 0x89FD,
+	0x5937, 0xD2C4, 0x5938, 0xBFE4, 0x5939, 0xBCD0, 0x593A, 0xB6E1,
+	0x593B, 0x89FE, 0x593C, 0xDEC5, 0x593D, 0x8A40, 0x593E, 0x8A41,
+	0x593F, 0x8A42, 0x5940, 0x8A43, 0x5941, 0xDEC6, 0x5942, 0xDBBC,
+	0x5943, 0x8A44, 0x5944, 0xD1D9, 0x5945, 0x8A45, 0x5946, 0x8A46,
+	0x5947, 0xC6E6, 0x5948, 0xC4CE, 0x5949, 0xB7EE, 0x594A, 0x8A47,
+	0x594B, 0xB7DC, 0x594C, 0x8A48, 0x594D, 0x8A49, 0x594E, 0xBFFC,
+	0x594F, 0xD7E0, 0x5950, 0x8A4A, 0x5951, 0xC6F5, 0x5952, 0x8A4B,
+	0x5953, 0x8A4C, 0x5954, 0xB1BC, 0x5955, 0xDEC8, 0x5956, 0xBDB1,
+	0x5957, 0xCCD7, 0x5958, 0xDECA, 0x5959, 0x8A4D, 0x595A, 0xDEC9,
+	0x595B, 0x8A4E, 0x595C, 0x8A4F, 0x595D, 0x8A50, 0x595E, 0x8A51,
+	0x595F, 0x8A52, 0x5960, 0xB5EC, 0x5961, 0x8A53, 0x5962, 0xC9DD,
+	0x5963, 0x8A54, 0x5964, 0x8A55, 0x5965, 0xB0C2, 0x5966, 0x8A56,
+	0x5967, 0x8A57, 0x5968, 0x8A58, 0x5969, 0x8A59, 0x596A, 0x8A5A,
+	0x596B, 0x8A5B, 0x596C, 0x8A5C, 0x596D, 0x8A5D, 0x596E, 0x8A5E,
+	0x596F, 0x8A5F, 0x5970, 0x8A60, 0x5971, 0x8A61, 0x5972, 0x8A62,
+	0x5973, 0xC5AE, 0x5974, 0xC5AB, 0x5975, 0x8A63, 0x5976, 0xC4CC,
+	0x5977, 0x8A64, 0x5978, 0xBCE9, 0x5979, 0xCBFD, 0x597A, 0x8A65,
+	0x597B, 0x8A66, 0x597C, 0x8A67, 0x597D, 0xBAC3, 0x597E, 0x8A68,
+	0x597F, 0x8A69, 0x5980, 0x8A6A, 0x5981, 0xE5F9, 0x5982, 0xC8E7,
+	0x5983, 0xE5FA, 0x5984, 0xCDFD, 0x5985, 0x8A6B, 0x5986, 0xD7B1,
+	0x5987, 0xB8BE, 0x5988, 0xC2E8, 0x5989, 0x8A6C, 0x598A, 0xC8D1,
+	0x598B, 0x8A6D, 0x598C, 0x8A6E, 0x598D, 0xE5FB, 0x598E, 0x8A6F,
+	0x598F, 0x8A70, 0x5990, 0x8A71, 0x5991, 0x8A72, 0x5992, 0xB6CA,
+	0x5993, 0xBCCB, 0x5994, 0x8A73, 0x5995, 0x8A74, 0x5996, 0xD1FD,
+	0x5997, 0xE6A1, 0x5998, 0x8A75, 0x5999, 0xC3EE, 0x599A, 0x8A76,
+	0x599B, 0x8A77, 0x599C, 0x8A78, 0x599D, 0x8A79, 0x599E, 0xE6A4,
+	0x599F, 0x8A7A, 0x59A0, 0x8A7B, 0x59A1, 0x8A7C, 0x59A2, 0x8A7D,
+	0x59A3, 0xE5FE, 0x59A4, 0xE6A5, 0x59A5, 0xCDD7, 0x59A6, 0x8A7E,
+	0x59A7, 0x8A80, 0x59A8, 0xB7C1, 0x59A9, 0xE5FC, 0x59AA, 0xE5FD,
+	0x59AB, 0xE6A3, 0x59AC, 0x8A81, 0x59AD, 0x8A82, 0x59AE, 0xC4DD,
+	0x59AF, 0xE6A8, 0x59B0, 0x8A83, 0x59B1, 0x8A84, 0x59B2, 0xE6A7,
+	0x59B3, 0x8A85, 0x59B4, 0x8A86, 0x59B5, 0x8A87, 0x59B6, 0x8A88,
+	0x59B7, 0x8A89, 0x59B8, 0x8A8A, 0x59B9, 0xC3C3, 0x59BA, 0x8A8B,
+	0x59BB, 0xC6DE, 0x59BC, 0x8A8C, 0x59BD, 0x8A8D, 0x59BE, 0xE6AA,
+	0x59BF, 0x8A8E, 0x59C0, 0x8A8F, 0x59C1, 0x8A90, 0x59C2, 0x8A91,
+	0x59C3, 0x8A92, 0x59C4, 0x8A93, 0x59C5, 0x8A94, 0x59C6, 0xC4B7,
+	0x59C7, 0x8A95, 0x59C8, 0x8A96, 0x59C9, 0x8A97, 0x59CA, 0xE6A2,
+	0x59CB, 0xCABC, 0x59CC, 0x8A98, 0x59CD, 0x8A99, 0x59CE, 0x8A9A,
+	0x59CF, 0x8A9B, 0x59D0, 0xBDE3, 0x59D1, 0xB9C3, 0x59D2, 0xE6A6,
+	0x59D3, 0xD0D5, 0x59D4, 0xCEAF, 0x59D5, 0x8A9C, 0x59D6, 0x8A9D,
+	0x59D7, 0xE6A9, 0x59D8, 0xE6B0, 0x59D9, 0x8A9E, 0x59DA, 0xD2A6,
+	0x59DB, 0x8A9F, 0x59DC, 0xBDAA, 0x59DD, 0xE6AD, 0x59DE, 0x8AA0,
+	0x59DF, 0x8AA1, 0x59E0, 0x8AA2, 0x59E1, 0x8AA3, 0x59E2, 0x8AA4,
+	0x59E3, 0xE6AF, 0x59E4, 0x8AA5, 0x59E5, 0xC0D1, 0x59E6, 0x8AA6,
+	0x59E7, 0x8AA7, 0x59E8, 0xD2CC, 0x59E9, 0x8AA8, 0x59EA, 0x8AA9,
+	0x59EB, 0x8AAA, 0x59EC, 0xBCA7, 0x59ED, 0x8AAB, 0x59EE, 0x8AAC,
+	0x59EF, 0x8AAD, 0x59F0, 0x8AAE, 0x59F1, 0x8AAF, 0x59F2, 0x8AB0,
+	0x59F3, 0x8AB1, 0x59F4, 0x8AB2, 0x59F5, 0x8AB3, 0x59F6, 0x8AB4,
+	0x59F7, 0x8AB5, 0x59F8, 0x8AB6, 0x59F9, 0xE6B1, 0x59FA, 0x8AB7,
+	0x59FB, 0xD2F6, 0x59FC, 0x8AB8, 0x59FD, 0x8AB9, 0x59FE, 0x8ABA,
+	0x59FF, 0xD7CB, 0x5A00, 0x8ABB, 0x5A01, 0xCDFE, 0x5A02, 0x8ABC,
+	0x5A03, 0xCDDE, 0x5A04, 0xC2A6, 0x5A05, 0xE6AB, 0x5A06, 0xE6AC,
+	0x5A07, 0xBDBF, 0x5A08, 0xE6AE, 0x5A09, 0xE6B3, 0x5A0A, 0x8ABD,
+	0x5A0B, 0x8ABE, 0x5A0C, 0xE6B2, 0x5A0D, 0x8ABF, 0x5A0E, 0x8AC0,
+	0x5A0F, 0x8AC1, 0x5A10, 0x8AC2, 0x5A11, 0xE6B6, 0x5A12, 0x8AC3,
+	0x5A13, 0xE6B8, 0x5A14, 0x8AC4, 0x5A15, 0x8AC5, 0x5A16, 0x8AC6,
+	0x5A17, 0x8AC7, 0x5A18, 0xC4EF, 0x5A19, 0x8AC8, 0x5A1A, 0x8AC9,
+	0x5A1B, 0x8ACA, 0x5A1C, 0xC4C8, 0x5A1D, 0x8ACB, 0x5A1E, 0x8ACC,
+	0x5A1F, 0xBEEA, 0x5A20, 0xC9EF, 0x5A21, 0x8ACD, 0x5A22, 0x8ACE,
+	0x5A23, 0xE6B7, 0x5A24, 0x8ACF, 0x5A25, 0xB6F0, 0x5A26, 0x8AD0,
+	0x5A27, 0x8AD1, 0x5A28, 0x8AD2, 0x5A29, 0xC3E4, 0x5A2A, 0x8AD3,
+	0x5A2B, 0x8AD4, 0x5A2C, 0x8AD5, 0x5A2D, 0x8AD6, 0x5A2E, 0x8AD7,
+	0x5A2F, 0x8AD8, 0x5A30, 0x8AD9, 0x5A31, 0xD3E9, 0x5A32, 0xE6B4,
+	0x5A33, 0x8ADA, 0x5A34, 0xE6B5, 0x5A35, 0x8ADB, 0x5A36, 0xC8A2,
+	0x5A37, 0x8ADC, 0x5A38, 0x8ADD, 0x5A39, 0x8ADE, 0x5A3A, 0x8ADF,
+	0x5A3B, 0x8AE0, 0x5A3C, 0xE6BD, 0x5A3D, 0x8AE1, 0x5A3E, 0x8AE2,
+	0x5A3F, 0x8AE3, 0x5A40, 0xE6B9, 0x5A41, 0x8AE4, 0x5A42, 0x8AE5,
+	0x5A43, 0x8AE6, 0x5A44, 0x8AE7, 0x5A45, 0x8AE8, 0x5A46, 0xC6C5,
+	0x5A47, 0x8AE9, 0x5A48, 0x8AEA, 0x5A49, 0xCDF1, 0x5A4A, 0xE6BB,
+	0x5A4B, 0x8AEB, 0x5A4C, 0x8AEC, 0x5A4D, 0x8AED, 0x5A4E, 0x8AEE,
+	0x5A4F, 0x8AEF, 0x5A50, 0x8AF0, 0x5A51, 0x8AF1, 0x5A52, 0x8AF2,
+	0x5A53, 0x8AF3, 0x5A54, 0x8AF4, 0x5A55, 0xE6BC, 0x5A56, 0x8AF5,
+	0x5A57, 0x8AF6, 0x5A58, 0x8AF7, 0x5A59, 0x8AF8, 0x5A5A, 0xBBE9,
+	0x5A5B, 0x8AF9, 0x5A5C, 0x8AFA, 0x5A5D, 0x8AFB, 0x5A5E, 0x8AFC,
+	0x5A5F, 0x8AFD, 0x5A60, 0x8AFE, 0x5A61, 0x8B40, 0x5A62, 0xE6BE,
+	0x5A63, 0x8B41, 0x5A64, 0x8B42, 0x5A65, 0x8B43, 0x5A66, 0x8B44,
+	0x5A67, 0xE6BA, 0x5A68, 0x8B45, 0x5A69, 0x8B46, 0x5A6A, 0xC0B7,
+	0x5A6B, 0x8B47, 0x5A6C, 0x8B48, 0x5A6D, 0x8B49, 0x5A6E, 0x8B4A,
+	0x5A6F, 0x8B4B, 0x5A70, 0x8B4C, 0x5A71, 0x8B4D, 0x5A72, 0x8B4E,
+	0x5A73, 0x8B4F, 0x5A74, 0xD3A4, 0x5A75, 0xE6BF, 0x5A76, 0xC9F4,
+	0x5A77, 0xE6C3, 0x5A78, 0x8B50, 0x5A79, 0x8B51, 0x5A7A, 0xE6C4,
+	0x5A7B, 0x8B52, 0x5A7C, 0x8B53, 0x5A7D, 0x8B54, 0x5A7E, 0x8B55,
+	0x5A7F, 0xD0F6, 0x5A80, 0x8B56, 0x5A81, 0x8B57, 0x5A82, 0x8B58,
+	0x5A83, 0x8B59, 0x5A84, 0x8B5A, 0x5A85, 0x8B5B, 0x5A86, 0x8B5C,
+	0x5A87, 0x8B5D, 0x5A88, 0x8B5E, 0x5A89, 0x8B5F, 0x5A8A, 0x8B60,
+	0x5A8B, 0x8B61, 0x5A8C, 0x8B62, 0x5A8D, 0x8B63, 0x5A8E, 0x8B64,
+	0x5A8F, 0x8B65, 0x5A90, 0x8B66, 0x5A91, 0x8B67, 0x5A92, 0xC3BD,
+	0x5A93, 0x8B68, 0x5A94, 0x8B69, 0x5A95, 0x8B6A, 0x5A96, 0x8B6B,
+	0x5A97, 0x8B6C, 0x5A98, 0x8B6D, 0x5A99, 0x8B6E, 0x5A9A, 0xC3C4,
+	0x5A9B, 0xE6C2, 0x5A9C, 0x8B6F, 0x5A9D, 0x8B70, 0x5A9E, 0x8B71,
+	0x5A9F, 0x8B72, 0x5AA0, 0x8B73, 0x5AA1, 0x8B74, 0x5AA2, 0x8B75,
+	0x5AA3, 0x8B76, 0x5AA4, 0x8B77, 0x5AA5, 0x8B78, 0x5AA6, 0x8B79,
+	0x5AA7, 0x8B7A, 0x5AA8, 0x8B7B, 0x5AA9, 0x8B7C, 0x5AAA, 0xE6C1,
+	0x5AAB, 0x8B7D, 0x5AAC, 0x8B7E, 0x5AAD, 0x8B80, 0x5AAE, 0x8B81,
+	0x5AAF, 0x8B82, 0x5AB0, 0x8B83, 0x5AB1, 0x8B84, 0x5AB2, 0xE6C7,
+	0x5AB3, 0xCFB1, 0x5AB4, 0x8B85, 0x5AB5, 0xEBF4, 0x5AB6, 0x8B86,
+	0x5AB7, 0x8B87, 0x5AB8, 0xE6CA, 0x5AB9, 0x8B88, 0x5ABA, 0x8B89,
+	0x5ABB, 0x8B8A, 0x5ABC, 0x8B8B, 0x5ABD, 0x8B8C, 0x5ABE, 0xE6C5,
+	0x5ABF, 0x8B8D, 0x5AC0, 0x8B8E, 0x5AC1, 0xBCDE, 0x5AC2, 0xC9A9,
+	0x5AC3, 0x8B8F, 0x5AC4, 0x8B90, 0x5AC5, 0x8B91, 0x5AC6, 0x8B92,
+	0x5AC7, 0x8B93, 0x5AC8, 0x8B94, 0x5AC9, 0xBCB5, 0x5ACA, 0x8B95,
+	0x5ACB, 0x8B96, 0x5ACC, 0xCFD3, 0x5ACD, 0x8B97, 0x5ACE, 0x8B98,
+	0x5ACF, 0x8B99, 0x5AD0, 0x8B9A, 0x5AD1, 0x8B9B, 0x5AD2, 0xE6C8,
+	0x5AD3, 0x8B9C, 0x5AD4, 0xE6C9, 0x5AD5, 0x8B9D, 0x5AD6, 0xE6CE,
+	0x5AD7, 0x8B9E, 0x5AD8, 0xE6D0, 0x5AD9, 0x8B9F, 0x5ADA, 0x8BA0,
+	0x5ADB, 0x8BA1, 0x5ADC, 0xE6D1, 0x5ADD, 0x8BA2, 0x5ADE, 0x8BA3,
+	0x5ADF, 0x8BA4, 0x5AE0, 0xE6CB, 0x5AE1, 0xB5D5, 0x5AE2, 0x8BA5,
+	0x5AE3, 0xE6CC, 0x5AE4, 0x8BA6, 0x5AE5, 0x8BA7, 0x5AE6, 0xE6CF,
+	0x5AE7, 0x8BA8, 0x5AE8, 0x8BA9, 0x5AE9, 0xC4DB, 0x5AEA, 0x8BAA,
+	0x5AEB, 0xE6C6, 0x5AEC, 0x8BAB, 0x5AED, 0x8BAC, 0x5AEE, 0x8BAD,
+	0x5AEF, 0x8BAE, 0x5AF0, 0x8BAF, 0x5AF1, 0xE6CD, 0x5AF2, 0x8BB0,
+	0x5AF3, 0x8BB1, 0x5AF4, 0x8BB2, 0x5AF5, 0x8BB3, 0x5AF6, 0x8BB4,
+	0x5AF7, 0x8BB5, 0x5AF8, 0x8BB6, 0x5AF9, 0x8BB7, 0x5AFA, 0x8BB8,
+	0x5AFB, 0x8BB9, 0x5AFC, 0x8BBA, 0x5AFD, 0x8BBB, 0x5AFE, 0x8BBC,
+	0x5AFF, 0x8BBD, 0x5B00, 0x8BBE, 0x5B01, 0x8BBF, 0x5B02, 0x8BC0,
+	0x5B03, 0x8BC1, 0x5B04, 0x8BC2, 0x5B05, 0x8BC3, 0x5B06, 0x8BC4,
+	0x5B07, 0x8BC5, 0x5B08, 0x8BC6, 0x5B09, 0xE6D2, 0x5B0A, 0x8BC7,
+	0x5B0B, 0x8BC8, 0x5B0C, 0x8BC9, 0x5B0D, 0x8BCA, 0x5B0E, 0x8BCB,
+	0x5B0F, 0x8BCC, 0x5B10, 0x8BCD, 0x5B11, 0x8BCE, 0x5B12, 0x8BCF,
+	0x5B13, 0x8BD0, 0x5B14, 0x8BD1, 0x5B15, 0x8BD2, 0x5B16, 0xE6D4,
+	0x5B17, 0xE6D3, 0x5B18, 0x8BD3, 0x5B19, 0x8BD4, 0x5B1A, 0x8BD5,
+	0x5B1B, 0x8BD6, 0x5B1C, 0x8BD7, 0x5B1D, 0x8BD8, 0x5B1E, 0x8BD9,
+	0x5B1F, 0x8BDA, 0x5B20, 0x8BDB, 0x5B21, 0x8BDC, 0x5B22, 0x8BDD,
+	0x5B23, 0x8BDE, 0x5B24, 0x8BDF, 0x5B25, 0x8BE0, 0x5B26, 0x8BE1,
+	0x5B27, 0x8BE2, 0x5B28, 0x8BE3, 0x5B29, 0x8BE4, 0x5B2A, 0x8BE5,
+	0x5B2B, 0x8BE6, 0x5B2C, 0x8BE7, 0x5B2D, 0x8BE8, 0x5B2E, 0x8BE9,
+	0x5B2F, 0x8BEA, 0x5B30, 0x8BEB, 0x5B31, 0x8BEC, 0x5B32, 0xE6D5,
+	0x5B33, 0x8BED, 0x5B34, 0xD9F8, 0x5B35, 0x8BEE, 0x5B36, 0x8BEF,
+	0x5B37, 0xE6D6, 0x5B38, 0x8BF0, 0x5B39, 0x8BF1, 0x5B3A, 0x8BF2,
+	0x5B3B, 0x8BF3, 0x5B3C, 0x8BF4, 0x5B3D, 0x8BF5, 0x5B3E, 0x8BF6,
+	0x5B3F, 0x8BF7, 0x5B40, 0xE6D7, 0x5B41, 0x8BF8, 0x5B42, 0x8BF9,
+	0x5B43, 0x8BFA, 0x5B44, 0x8BFB, 0x5B45, 0x8BFC, 0x5B46, 0x8BFD,
+	0x5B47, 0x8BFE, 0x5B48, 0x8C40, 0x5B49, 0x8C41, 0x5B4A, 0x8C42,
+	0x5B4B, 0x8C43, 0x5B4C, 0x8C44, 0x5B4D, 0x8C45, 0x5B4E, 0x8C46,
+	0x5B4F, 0x8C47, 0x5B50, 0xD7D3, 0x5B51, 0xE6DD, 0x5B52, 0x8C48,
+	0x5B53, 0xE6DE, 0x5B54, 0xBFD7, 0x5B55, 0xD4D0, 0x5B56, 0x8C49,
+	0x5B57, 0xD7D6, 0x5B58, 0xB4E6, 0x5B59, 0xCBEF, 0x5B5A, 0xE6DA,
+	0x5B5B, 0xD8C3, 0x5B5C, 0xD7CE, 0x5B5D, 0xD0A2, 0x5B5E, 0x8C4A,
+	0x5B5F, 0xC3CF, 0x5B60, 0x8C4B, 0x5B61, 0x8C4C, 0x5B62, 0xE6DF,
+	0x5B63, 0xBCBE, 0x5B64, 0xB9C2, 0x5B65, 0xE6DB, 0x5B66, 0xD1A7,
+	0x5B67, 0x8C4D, 0x5B68, 0x8C4E, 0x5B69, 0xBAA2, 0x5B6A, 0xC2CF,
+	0x5B6B, 0x8C4F, 0x5B6C, 0xD8AB, 0x5B6D, 0x8C50, 0x5B6E, 0x8C51,
+	0x5B6F, 0x8C52, 0x5B70, 0xCAEB, 0x5B71, 0xE5EE, 0x5B72, 0x8C53,
+	0x5B73, 0xE6DC, 0x5B74, 0x8C54, 0x5B75, 0xB7F5, 0x5B76, 0x8C55,
+	0x5B77, 0x8C56, 0x5B78, 0x8C57, 0x5B79, 0x8C58, 0x5B7A, 0xC8E6,
+	0x5B7B, 0x8C59, 0x5B7C, 0x8C5A, 0x5B7D, 0xC4F5, 0x5B7E, 0x8C5B,
+	0x5B7F, 0x8C5C, 0x5B80, 0xE5B2, 0x5B81, 0xC4FE, 0x5B82, 0x8C5D,
+	0x5B83, 0xCBFC, 0x5B84, 0xE5B3, 0x5B85, 0xD5AC, 0x5B86, 0x8C5E,
+	0x5B87, 0xD3EE, 0x5B88, 0xCAD8, 0x5B89, 0xB0B2, 0x5B8A, 0x8C5F,
+	0x5B8B, 0xCBCE, 0x5B8C, 0xCDEA, 0x5B8D, 0x8C60, 0x5B8E, 0x8C61,
+	0x5B8F, 0xBAEA, 0x5B90, 0x8C62, 0x5B91, 0x8C63, 0x5B92, 0x8C64,
+	0x5B93, 0xE5B5, 0x5B94, 0x8C65, 0x5B95, 0xE5B4, 0x5B96, 0x8C66,
+	0x5B97, 0xD7DA, 0x5B98, 0xB9D9, 0x5B99, 0xD6E6, 0x5B9A, 0xB6A8,
+	0x5B9B, 0xCDF0, 0x5B9C, 0xD2CB, 0x5B9D, 0xB1A6, 0x5B9E, 0xCAB5,
+	0x5B9F, 0x8C67, 0x5BA0, 0xB3E8, 0x5BA1, 0xC9F3, 0x5BA2, 0xBFCD,
+	0x5BA3, 0xD0FB, 0x5BA4, 0xCAD2, 0x5BA5, 0xE5B6, 0x5BA6, 0xBBC2,
+	0x5BA7, 0x8C68, 0x5BA8, 0x8C69, 0x5BA9, 0x8C6A, 0x5BAA, 0xCFDC,
+	0x5BAB, 0xB9AC, 0x5BAC, 0x8C6B, 0x5BAD, 0x8C6C, 0x5BAE, 0x8C6D,
+	0x5BAF, 0x8C6E, 0x5BB0, 0xD4D7, 0x5BB1, 0x8C6F, 0x5BB2, 0x8C70,
+	0x5BB3, 0xBAA6, 0x5BB4, 0xD1E7, 0x5BB5, 0xCFFC, 0x5BB6, 0xBCD2,
+	0x5BB7, 0x8C71, 0x5BB8, 0xE5B7, 0x5BB9, 0xC8DD, 0x5BBA, 0x8C72,
+	0x5BBB, 0x8C73, 0x5BBC, 0x8C74, 0x5BBD, 0xBFED, 0x5BBE, 0xB1F6,
+	0x5BBF, 0xCBDE, 0x5BC0, 0x8C75, 0x5BC1, 0x8C76, 0x5BC2, 0xBCC5,
+	0x5BC3, 0x8C77, 0x5BC4, 0xBCC4, 0x5BC5, 0xD2FA, 0x5BC6, 0xC3DC,
+	0x5BC7, 0xBFDC, 0x5BC8, 0x8C78, 0x5BC9, 0x8C79, 0x5BCA, 0x8C7A,
+	0x5BCB, 0x8C7B, 0x5BCC, 0xB8BB, 0x5BCD, 0x8C7C, 0x5BCE, 0x8C7D,
+	0x5BCF, 0x8C7E, 0x5BD0, 0xC3C2, 0x5BD1, 0x8C80, 0x5BD2, 0xBAAE,
+	0x5BD3, 0xD4A2, 0x5BD4, 0x8C81, 0x5BD5, 0x8C82, 0x5BD6, 0x8C83,
+	0x5BD7, 0x8C84, 0x5BD8, 0x8C85, 0x5BD9, 0x8C86, 0x5BDA, 0x8C87,
+	0x5BDB, 0x8C88, 0x5BDC, 0x8C89, 0x5BDD, 0xC7DE, 0x5BDE, 0xC4AF,
+	0x5BDF, 0xB2EC, 0x5BE0, 0x8C8A, 0x5BE1, 0xB9D1, 0x5BE2, 0x8C8B,
+	0x5BE3, 0x8C8C, 0x5BE4, 0xE5BB, 0x5BE5, 0xC1C8, 0x5BE6, 0x8C8D,
+	0x5BE7, 0x8C8E, 0x5BE8, 0xD5AF, 0x5BE9, 0x8C8F, 0x5BEA, 0x8C90,
+	0x5BEB, 0x8C91, 0x5BEC, 0x8C92, 0x5BED, 0x8C93, 0x5BEE, 0xE5BC,
+	0x5BEF, 0x8C94, 0x5BF0, 0xE5BE, 0x5BF1, 0x8C95, 0x5BF2, 0x8C96,
+	0x5BF3, 0x8C97, 0x5BF4, 0x8C98, 0x5BF5, 0x8C99, 0x5BF6, 0x8C9A,
+	0x5BF7, 0x8C9B, 0x5BF8, 0xB4E7, 0x5BF9, 0xB6D4, 0x5BFA, 0xCBC2,
+	0x5BFB, 0xD1B0, 0x5BFC, 0xB5BC, 0x5BFD, 0x8C9C, 0x5BFE, 0x8C9D,
+	0x5BFF, 0xCAD9, 0x5C00, 0x8C9E, 0x5C01, 0xB7E2, 0x5C02, 0x8C9F,
+	0x5C03, 0x8CA0, 0x5C04, 0xC9E4, 0x5C05, 0x8CA1, 0x5C06, 0xBDAB,
+	0x5C07, 0x8CA2, 0x5C08, 0x8CA3, 0x5C09, 0xCEBE, 0x5C0A, 0xD7F0,
+	0x5C0B, 0x8CA4, 0x5C0C, 0x8CA5, 0x5C0D, 0x8CA6, 0x5C0E, 0x8CA7,
+	0x5C0F, 0xD0A1, 0x5C10, 0x8CA8, 0x5C11, 0xC9D9, 0x5C12, 0x8CA9,
+	0x5C13, 0x8CAA, 0x5C14, 0xB6FB, 0x5C15, 0xE6D8, 0x5C16, 0xBCE2,
+	0x5C17, 0x8CAB, 0x5C18, 0xB3BE, 0x5C19, 0x8CAC, 0x5C1A, 0xC9D0,
+	0x5C1B, 0x8CAD, 0x5C1C, 0xE6D9, 0x5C1D, 0xB3A2, 0x5C1E, 0x8CAE,
+	0x5C1F, 0x8CAF, 0x5C20, 0x8CB0, 0x5C21, 0x8CB1, 0x5C22, 0xDECC,
+	0x5C23, 0x8CB2, 0x5C24, 0xD3C8, 0x5C25, 0xDECD, 0x5C26, 0x8CB3,
+	0x5C27, 0xD2A2, 0x5C28, 0x8CB4, 0x5C29, 0x8CB5, 0x5C2A, 0x8CB6,
+	0x5C2B, 0x8CB7, 0x5C2C, 0xDECE, 0x5C2D, 0x8CB8, 0x5C2E, 0x8CB9,
+	0x5C2F, 0x8CBA, 0x5C30, 0x8CBB, 0x5C31, 0xBECD, 0x5C32, 0x8CBC,
+	0x5C33, 0x8CBD, 0x5C34, 0xDECF, 0x5C35, 0x8CBE, 0x5C36, 0x8CBF,
+	0x5C37, 0x8CC0, 0x5C38, 0xCAAC, 0x5C39, 0xD2FC, 0x5C3A, 0xB3DF,
+	0x5C3B, 0xE5EA, 0x5C3C, 0xC4E1, 0x5C3D, 0xBEA1, 0x5C3E, 0xCEB2,
+	0x5C3F, 0xC4F2, 0x5C40, 0xBED6, 0x5C41, 0xC6A8, 0x5C42, 0xB2E3,
+	0x5C43, 0x8CC1, 0x5C44, 0x8CC2, 0x5C45, 0xBED3, 0x5C46, 0x8CC3,
+	0x5C47, 0x8CC4, 0x5C48, 0xC7FC, 0x5C49, 0xCCEB, 0x5C4A, 0xBDEC,
+	0x5C4B, 0xCEDD, 0x5C4C, 0x8CC5, 0x5C4D, 0x8CC6, 0x5C4E, 0xCABA,
+	0x5C4F, 0xC6C1, 0x5C50, 0xE5EC, 0x5C51, 0xD0BC, 0x5C52, 0x8CC7,
+	0x5C53, 0x8CC8, 0x5C54, 0x8CC9, 0x5C55, 0xD5B9, 0x5C56, 0x8CCA,
+	0x5C57, 0x8CCB, 0x5C58, 0x8CCC, 0x5C59, 0xE5ED, 0x5C5A, 0x8CCD,
+	0x5C5B, 0x8CCE, 0x5C5C, 0x8CCF, 0x5C5D, 0x8CD0, 0x5C5E, 0xCAF4,
+	0x5C5F, 0x8CD1, 0x5C60, 0xCDC0, 0x5C61, 0xC2C5, 0x5C62, 0x8CD2,
+	0x5C63, 0xE5EF, 0x5C64, 0x8CD3, 0x5C65, 0xC2C4, 0x5C66, 0xE5F0,
+	0x5C67, 0x8CD4, 0x5C68, 0x8CD5, 0x5C69, 0x8CD6, 0x5C6A, 0x8CD7,
+	0x5C6B, 0x8CD8, 0x5C6C, 0x8CD9, 0x5C6D, 0x8CDA, 0x5C6E, 0xE5F8,
+	0x5C6F, 0xCDCD, 0x5C70, 0x8CDB, 0x5C71, 0xC9BD, 0x5C72, 0x8CDC,
+	0x5C73, 0x8CDD, 0x5C74, 0x8CDE, 0x5C75, 0x8CDF, 0x5C76, 0x8CE0,
+	0x5C77, 0x8CE1, 0x5C78, 0x8CE2, 0x5C79, 0xD2D9, 0x5C7A, 0xE1A8,
+	0x5C7B, 0x8CE3, 0x5C7C, 0x8CE4, 0x5C7D, 0x8CE5, 0x5C7E, 0x8CE6,
+	0x5C7F, 0xD3EC, 0x5C80, 0x8CE7, 0x5C81, 0xCBEA, 0x5C82, 0xC6F1,
+	0x5C83, 0x8CE8, 0x5C84, 0x8CE9, 0x5C85, 0x8CEA, 0x5C86, 0x8CEB,
+	0x5C87, 0x8CEC, 0x5C88, 0xE1AC, 0x5C89, 0x8CED, 0x5C8A, 0x8CEE,
+	0x5C8B, 0x8CEF, 0x5C8C, 0xE1A7, 0x5C8D, 0xE1A9, 0x5C8E, 0x8CF0,
+	0x5C8F, 0x8CF1, 0x5C90, 0xE1AA, 0x5C91, 0xE1AF, 0x5C92, 0x8CF2,
+	0x5C93, 0x8CF3, 0x5C94, 0xB2ED, 0x5C95, 0x8CF4, 0x5C96, 0xE1AB,
+	0x5C97, 0xB8DA, 0x5C98, 0xE1AD, 0x5C99, 0xE1AE, 0x5C9A, 0xE1B0,
+	0x5C9B, 0xB5BA, 0x5C9C, 0xE1B1, 0x5C9D, 0x8CF5, 0x5C9E, 0x8CF6,
+	0x5C9F, 0x8CF7, 0x5CA0, 0x8CF8, 0x5CA1, 0x8CF9, 0x5CA2, 0xE1B3,
+	0x5CA3, 0xE1B8, 0x5CA4, 0x8CFA, 0x5CA5, 0x8CFB, 0x5CA6, 0x8CFC,
+	0x5CA7, 0x8CFD, 0x5CA8, 0x8CFE, 0x5CA9, 0xD1D2, 0x5CAA, 0x8D40,
+	0x5CAB, 0xE1B6, 0x5CAC, 0xE1B5, 0x5CAD, 0xC1EB, 0x5CAE, 0x8D41,
+	0x5CAF, 0x8D42, 0x5CB0, 0x8D43, 0x5CB1, 0xE1B7, 0x5CB2, 0x8D44,
+	0x5CB3, 0xD4C0, 0x5CB4, 0x8D45, 0x5CB5, 0xE1B2, 0x5CB6, 0x8D46,
+	0x5CB7, 0xE1BA, 0x5CB8, 0xB0B6, 0x5CB9, 0x8D47, 0x5CBA, 0x8D48,
+	0x5CBB, 0x8D49, 0x5CBC, 0x8D4A, 0x5CBD, 0xE1B4, 0x5CBE, 0x8D4B,
+	0x5CBF, 0xBFF9, 0x5CC0, 0x8D4C, 0x5CC1, 0xE1B9, 0x5CC2, 0x8D4D,
+	0x5CC3, 0x8D4E, 0x5CC4, 0xE1BB, 0x5CC5, 0x8D4F, 0x5CC6, 0x8D50,
+	0x5CC7, 0x8D51, 0x5CC8, 0x8D52, 0x5CC9, 0x8D53, 0x5CCA, 0x8D54,
+	0x5CCB, 0xE1BE, 0x5CCC, 0x8D55, 0x5CCD, 0x8D56, 0x5CCE, 0x8D57,
+	0x5CCF, 0x8D58, 0x5CD0, 0x8D59, 0x5CD1, 0x8D5A, 0x5CD2, 0xE1BC,
+	0x5CD3, 0x8D5B, 0x5CD4, 0x8D5C, 0x5CD5, 0x8D5D, 0x5CD6, 0x8D5E,
+	0x5CD7, 0x8D5F, 0x5CD8, 0x8D60, 0x5CD9, 0xD6C5, 0x5CDA, 0x8D61,
+	0x5CDB, 0x8D62, 0x5CDC, 0x8D63, 0x5CDD, 0x8D64, 0x5CDE, 0x8D65,
+	0x5CDF, 0x8D66, 0x5CE0, 0x8D67, 0x5CE1, 0xCFBF, 0x5CE2, 0x8D68,
+	0x5CE3, 0x8D69, 0x5CE4, 0xE1BD, 0x5CE5, 0xE1BF, 0x5CE6, 0xC2CD,
+	0x5CE7, 0x8D6A, 0x5CE8, 0xB6EB, 0x5CE9, 0x8D6B, 0x5CEA, 0xD3F8,
+	0x5CEB, 0x8D6C, 0x5CEC, 0x8D6D, 0x5CED, 0xC7CD, 0x5CEE, 0x8D6E,
+	0x5CEF, 0x8D6F, 0x5CF0, 0xB7E5, 0x5CF1, 0x8D70, 0x5CF2, 0x8D71,
+	0x5CF3, 0x8D72, 0x5CF4, 0x8D73, 0x5CF5, 0x8D74, 0x5CF6, 0x8D75,
+	0x5CF7, 0x8D76, 0x5CF8, 0x8D77, 0x5CF9, 0x8D78, 0x5CFA, 0x8D79,
+	0x5CFB, 0xBEFE, 0x5CFC, 0x8D7A, 0x5CFD, 0x8D7B, 0x5CFE, 0x8D7C,
+	0x5CFF, 0x8D7D, 0x5D00, 0x8D7E, 0x5D01, 0x8D80, 0x5D02, 0xE1C0,
+	0x5D03, 0xE1C1, 0x5D04, 0x8D81, 0x5D05, 0x8D82, 0x5D06, 0xE1C7,
+	0x5D07, 0xB3E7, 0x5D08, 0x8D83, 0x5D09, 0x8D84, 0x5D0A, 0x8D85,
+	0x5D0B, 0x8D86, 0x5D0C, 0x8D87, 0x5D0D, 0x8D88, 0x5D0E, 0xC6E9,
+	0x5D0F, 0x8D89, 0x5D10, 0x8D8A, 0x5D11, 0x8D8B, 0x5D12, 0x8D8C,
+	0x5D13, 0x8D8D, 0x5D14, 0xB4DE, 0x5D15, 0x8D8E, 0x5D16, 0xD1C2,
+	0x5D17, 0x8D8F, 0x5D18, 0x8D90, 0x5D19, 0x8D91, 0x5D1A, 0x8D92,
+	0x5D1B, 0xE1C8, 0x5D1C, 0x8D93, 0x5D1D, 0x8D94, 0x5D1E, 0xE1C6,
+	0x5D1F, 0x8D95, 0x5D20, 0x8D96, 0x5D21, 0x8D97, 0x5D22, 0x8D98,
+	0x5D23, 0x8D99, 0x5D24, 0xE1C5, 0x5D25, 0x8D9A, 0x5D26, 0xE1C3,
+	0x5D27, 0xE1C2, 0x5D28, 0x8D9B, 0x5D29, 0xB1C0, 0x5D2A, 0x8D9C,
+	0x5D2B, 0x8D9D, 0x5D2C, 0x8D9E, 0x5D2D, 0xD5B8, 0x5D2E, 0xE1C4,
+	0x5D2F, 0x8D9F, 0x5D30, 0x8DA0, 0x5D31, 0x8DA1, 0x5D32, 0x8DA2,
+	0x5D33, 0x8DA3, 0x5D34, 0xE1CB, 0x5D35, 0x8DA4, 0x5D36, 0x8DA5,
+	0x5D37, 0x8DA6, 0x5D38, 0x8DA7, 0x5D39, 0x8DA8, 0x5D3A, 0x8DA9,
+	0x5D3B, 0x8DAA, 0x5D3C, 0x8DAB, 0x5D3D, 0xE1CC, 0x5D3E, 0xE1CA,
+	0x5D3F, 0x8DAC, 0x5D40, 0x8DAD, 0x5D41, 0x8DAE, 0x5D42, 0x8DAF,
+	0x5D43, 0x8DB0, 0x5D44, 0x8DB1, 0x5D45, 0x8DB2, 0x5D46, 0x8DB3,
+	0x5D47, 0xEFFA, 0x5D48, 0x8DB4, 0x5D49, 0x8DB5, 0x5D4A, 0xE1D3,
+	0x5D4B, 0xE1D2, 0x5D4C, 0xC7B6, 0x5D4D, 0x8DB6, 0x5D4E, 0x8DB7,
+	0x5D4F, 0x8DB8, 0x5D50, 0x8DB9, 0x5D51, 0x8DBA, 0x5D52, 0x8DBB,
+	0x5D53, 0x8DBC, 0x5D54, 0x8DBD, 0x5D55, 0x8DBE, 0x5D56, 0x8DBF,
+	0x5D57, 0x8DC0, 0x5D58, 0xE1C9, 0x5D59, 0x8DC1, 0x5D5A, 0x8DC2,
+	0x5D5B, 0xE1CE, 0x5D5C, 0x8DC3, 0x5D5D, 0xE1D0, 0x5D5E, 0x8DC4,
+	0x5D5F, 0x8DC5, 0x5D60, 0x8DC6, 0x5D61, 0x8DC7, 0x5D62, 0x8DC8,
+	0x5D63, 0x8DC9, 0x5D64, 0x8DCA, 0x5D65, 0x8DCB, 0x5D66, 0x8DCC,
+	0x5D67, 0x8DCD, 0x5D68, 0x8DCE, 0x5D69, 0xE1D4, 0x5D6A, 0x8DCF,
+	0x5D6B, 0xE1D1, 0x5D6C, 0xE1CD, 0x5D6D, 0x8DD0, 0x5D6E, 0x8DD1,
+	0x5D6F, 0xE1CF, 0x5D70, 0x8DD2, 0x5D71, 0x8DD3, 0x5D72, 0x8DD4,
+	0x5D73, 0x8DD5, 0x5D74, 0xE1D5, 0x5D75, 0x8DD6, 0x5D76, 0x8DD7,
+	0x5D77, 0x8DD8, 0x5D78, 0x8DD9, 0x5D79, 0x8DDA, 0x5D7A, 0x8DDB,
+	0x5D7B, 0x8DDC, 0x5D7C, 0x8DDD, 0x5D7D, 0x8DDE, 0x5D7E, 0x8DDF,
+	0x5D7F, 0x8DE0, 0x5D80, 0x8DE1, 0x5D81, 0x8DE2, 0x5D82, 0xE1D6,
+	0x5D83, 0x8DE3, 0x5D84, 0x8DE4, 0x5D85, 0x8DE5, 0x5D86, 0x8DE6,
+	0x5D87, 0x8DE7, 0x5D88, 0x8DE8, 0x5D89, 0x8DE9, 0x5D8A, 0x8DEA,
+	0x5D8B, 0x8DEB, 0x5D8C, 0x8DEC, 0x5D8D, 0x8DED, 0x5D8E, 0x8DEE,
+	0x5D8F, 0x8DEF, 0x5D90, 0x8DF0, 0x5D91, 0x8DF1, 0x5D92, 0x8DF2,
+	0x5D93, 0x8DF3, 0x5D94, 0x8DF4, 0x5D95, 0x8DF5, 0x5D96, 0x8DF6,
+	0x5D97, 0x8DF7, 0x5D98, 0x8DF8, 0x5D99, 0xE1D7, 0x5D9A, 0x8DF9,
+	0x5D9B, 0x8DFA, 0x5D9C, 0x8DFB, 0x5D9D, 0xE1D8, 0x5D9E, 0x8DFC,
+	0x5D9F, 0x8DFD, 0x5DA0, 0x8DFE, 0x5DA1, 0x8E40, 0x5DA2, 0x8E41,
+	0x5DA3, 0x8E42, 0x5DA4, 0x8E43, 0x5DA5, 0x8E44, 0x5DA6, 0x8E45,
+	0x5DA7, 0x8E46, 0x5DA8, 0x8E47, 0x5DA9, 0x8E48, 0x5DAA, 0x8E49,
+	0x5DAB, 0x8E4A, 0x5DAC, 0x8E4B, 0x5DAD, 0x8E4C, 0x5DAE, 0x8E4D,
+	0x5DAF, 0x8E4E, 0x5DB0, 0x8E4F, 0x5DB1, 0x8E50, 0x5DB2, 0x8E51,
+	0x5DB3, 0x8E52, 0x5DB4, 0x8E53, 0x5DB5, 0x8E54, 0x5DB6, 0x8E55,
+	0x5DB7, 0xE1DA, 0x5DB8, 0x8E56, 0x5DB9, 0x8E57, 0x5DBA, 0x8E58,
+	0x5DBB, 0x8E59, 0x5DBC, 0x8E5A, 0x5DBD, 0x8E5B, 0x5DBE, 0x8E5C,
+	0x5DBF, 0x8E5D, 0x5DC0, 0x8E5E, 0x5DC1, 0x8E5F, 0x5DC2, 0x8E60,
+	0x5DC3, 0x8E61, 0x5DC4, 0x8E62, 0x5DC5, 0xE1DB, 0x5DC6, 0x8E63,
+	0x5DC7, 0x8E64, 0x5DC8, 0x8E65, 0x5DC9, 0x8E66, 0x5DCA, 0x8E67,
+	0x5DCB, 0x8E68, 0x5DCC, 0x8E69, 0x5DCD, 0xCEA1, 0x5DCE, 0x8E6A,
+	0x5DCF, 0x8E6B, 0x5DD0, 0x8E6C, 0x5DD1, 0x8E6D, 0x5DD2, 0x8E6E,
+	0x5DD3, 0x8E6F, 0x5DD4, 0x8E70, 0x5DD5, 0x8E71, 0x5DD6, 0x8E72,
+	0x5DD7, 0x8E73, 0x5DD8, 0x8E74, 0x5DD9, 0x8E75, 0x5DDA, 0x8E76,
+	0x5DDB, 0xE7DD, 0x5DDC, 0x8E77, 0x5DDD, 0xB4A8, 0x5DDE, 0xD6DD,
+	0x5DDF, 0x8E78, 0x5DE0, 0x8E79, 0x5DE1, 0xD1B2, 0x5DE2, 0xB3B2,
+	0x5DE3, 0x8E7A, 0x5DE4, 0x8E7B, 0x5DE5, 0xB9A4, 0x5DE6, 0xD7F3,
+	0x5DE7, 0xC7C9, 0x5DE8, 0xBEDE, 0x5DE9, 0xB9AE, 0x5DEA, 0x8E7C,
+	0x5DEB, 0xCED7, 0x5DEC, 0x8E7D, 0x5DED, 0x8E7E, 0x5DEE, 0xB2EE,
+	0x5DEF, 0xDBCF, 0x5DF0, 0x8E80, 0x5DF1, 0xBCBA, 0x5DF2, 0xD2D1,
+	0x5DF3, 0xCBC8, 0x5DF4, 0xB0CD, 0x5DF5, 0x8E81, 0x5DF6, 0x8E82,
+	0x5DF7, 0xCFEF, 0x5DF8, 0x8E83, 0x5DF9, 0x8E84, 0x5DFA, 0x8E85,
+	0x5DFB, 0x8E86, 0x5DFC, 0x8E87, 0x5DFD, 0xD9E3, 0x5DFE, 0xBDED,
+	0x5DFF, 0x8E88, 0x5E00, 0x8E89, 0x5E01, 0xB1D2, 0x5E02, 0xCAD0,
+	0x5E03, 0xB2BC, 0x5E04, 0x8E8A, 0x5E05, 0xCBA7, 0x5E06, 0xB7AB,
+	0x5E07, 0x8E8B, 0x5E08, 0xCAA6, 0x5E09, 0x8E8C, 0x5E0A, 0x8E8D,
+	0x5E0B, 0x8E8E, 0x5E0C, 0xCFA3, 0x5E0D, 0x8E8F, 0x5E0E, 0x8E90,
+	0x5E0F, 0xE0F8, 0x5E10, 0xD5CA, 0x5E11, 0xE0FB, 0x5E12, 0x8E91,
+	0x5E13, 0x8E92, 0x5E14, 0xE0FA, 0x5E15, 0xC5C1, 0x5E16, 0xCCFB,
+	0x5E17, 0x8E93, 0x5E18, 0xC1B1, 0x5E19, 0xE0F9, 0x5E1A, 0xD6E3,
+	0x5E1B, 0xB2AF, 0x5E1C, 0xD6C4, 0x5E1D, 0xB5DB, 0x5E1E, 0x8E94,
+	0x5E1F, 0x8E95, 0x5E20, 0x8E96, 0x5E21, 0x8E97, 0x5E22, 0x8E98,
+	0x5E23, 0x8E99, 0x5E24, 0x8E9A, 0x5E25, 0x8E9B, 0x5E26, 0xB4F8,
+	0x5E27, 0xD6A1, 0x5E28, 0x8E9C, 0x5E29, 0x8E9D, 0x5E2A, 0x8E9E,
+	0x5E2B, 0x8E9F, 0x5E2C, 0x8EA0, 0x5E2D, 0xCFAF, 0x5E2E, 0xB0EF,
+	0x5E2F, 0x8EA1, 0x5E30, 0x8EA2, 0x5E31, 0xE0FC, 0x5E32, 0x8EA3,
+	0x5E33, 0x8EA4, 0x5E34, 0x8EA5, 0x5E35, 0x8EA6, 0x5E36, 0x8EA7,
+	0x5E37, 0xE1A1, 0x5E38, 0xB3A3, 0x5E39, 0x8EA8, 0x5E3A, 0x8EA9,
+	0x5E3B, 0xE0FD, 0x5E3C, 0xE0FE, 0x5E3D, 0xC3B1, 0x5E3E, 0x8EAA,
+	0x5E3F, 0x8EAB, 0x5E40, 0x8EAC, 0x5E41, 0x8EAD, 0x5E42, 0xC3DD,
+	0x5E43, 0x8EAE, 0x5E44, 0xE1A2, 0x5E45, 0xB7F9, 0x5E46, 0x8EAF,
+	0x5E47, 0x8EB0, 0x5E48, 0x8EB1, 0x5E49, 0x8EB2, 0x5E4A, 0x8EB3,
+	0x5E4B, 0x8EB4, 0x5E4C, 0xBBCF, 0x5E4D, 0x8EB5, 0x5E4E, 0x8EB6,
+	0x5E4F, 0x8EB7, 0x5E50, 0x8EB8, 0x5E51, 0x8EB9, 0x5E52, 0x8EBA,
+	0x5E53, 0x8EBB, 0x5E54, 0xE1A3, 0x5E55, 0xC4BB, 0x5E56, 0x8EBC,
+	0x5E57, 0x8EBD, 0x5E58, 0x8EBE, 0x5E59, 0x8EBF, 0x5E5A, 0x8EC0,
+	0x5E5B, 0xE1A4, 0x5E5C, 0x8EC1, 0x5E5D, 0x8EC2, 0x5E5E, 0xE1A5,
+	0x5E5F, 0x8EC3, 0x5E60, 0x8EC4, 0x5E61, 0xE1A6, 0x5E62, 0xB4B1,
+	0x5E63, 0x8EC5, 0x5E64, 0x8EC6, 0x5E65, 0x8EC7, 0x5E66, 0x8EC8,
+	0x5E67, 0x8EC9, 0x5E68, 0x8ECA, 0x5E69, 0x8ECB, 0x5E6A, 0x8ECC,
+	0x5E6B, 0x8ECD, 0x5E6C, 0x8ECE, 0x5E6D, 0x8ECF, 0x5E6E, 0x8ED0,
+	0x5E6F, 0x8ED1, 0x5E70, 0x8ED2, 0x5E71, 0x8ED3, 0x5E72, 0xB8C9,
+	0x5E73, 0xC6BD, 0x5E74, 0xC4EA, 0x5E75, 0x8ED4, 0x5E76, 0xB2A2,
+	0x5E77, 0x8ED5, 0x5E78, 0xD0D2, 0x5E79, 0x8ED6, 0x5E7A, 0xE7DB,
+	0x5E7B, 0xBBC3, 0x5E7C, 0xD3D7, 0x5E7D, 0xD3C4, 0x5E7E, 0x8ED7,
+	0x5E7F, 0xB9E3, 0x5E80, 0xE2CF, 0x5E81, 0x8ED8, 0x5E82, 0x8ED9,
+	0x5E83, 0x8EDA, 0x5E84, 0xD7AF, 0x5E85, 0x8EDB, 0x5E86, 0xC7EC,
+	0x5E87, 0xB1D3, 0x5E88, 0x8EDC, 0x5E89, 0x8EDD, 0x5E8A, 0xB4B2,
+	0x5E8B, 0xE2D1, 0x5E8C, 0x8EDE, 0x5E8D, 0x8EDF, 0x5E8E, 0x8EE0,
+	0x5E8F, 0xD0F2, 0x5E90, 0xC2AE, 0x5E91, 0xE2D0, 0x5E92, 0x8EE1,
+	0x5E93, 0xBFE2, 0x5E94, 0xD3A6, 0x5E95, 0xB5D7, 0x5E96, 0xE2D2,
+	0x5E97, 0xB5EA, 0x5E98, 0x8EE2, 0x5E99, 0xC3ED, 0x5E9A, 0xB8FD,
+	0x5E9B, 0x8EE3, 0x5E9C, 0xB8AE, 0x5E9D, 0x8EE4, 0x5E9E, 0xC5D3,
+	0x5E9F, 0xB7CF, 0x5EA0, 0xE2D4, 0x5EA1, 0x8EE5, 0x5EA2, 0x8EE6,
+	0x5EA3, 0x8EE7, 0x5EA4, 0x8EE8, 0x5EA5, 0xE2D3, 0x5EA6, 0xB6C8,
+	0x5EA7, 0xD7F9, 0x5EA8, 0x8EE9, 0x5EA9, 0x8EEA, 0x5EAA, 0x8EEB,
+	0x5EAB, 0x8EEC, 0x5EAC, 0x8EED, 0x5EAD, 0xCDA5, 0x5EAE, 0x8EEE,
+	0x5EAF, 0x8EEF, 0x5EB0, 0x8EF0, 0x5EB1, 0x8EF1, 0x5EB2, 0x8EF2,
+	0x5EB3, 0xE2D8, 0x5EB4, 0x8EF3, 0x5EB5, 0xE2D6, 0x5EB6, 0xCAFC,
+	0x5EB7, 0xBFB5, 0x5EB8, 0xD3B9, 0x5EB9, 0xE2D5, 0x5EBA, 0x8EF4,
+	0x5EBB, 0x8EF5, 0x5EBC, 0x8EF6, 0x5EBD, 0x8EF7, 0x5EBE, 0xE2D7,
+	0x5EBF, 0x8EF8, 0x5EC0, 0x8EF9, 0x5EC1, 0x8EFA, 0x5EC2, 0x8EFB,
+	0x5EC3, 0x8EFC, 0x5EC4, 0x8EFD, 0x5EC5, 0x8EFE, 0x5EC6, 0x8F40,
+	0x5EC7, 0x8F41, 0x5EC8, 0x8F42, 0x5EC9, 0xC1AE, 0x5ECA, 0xC0C8,
+	0x5ECB, 0x8F43, 0x5ECC, 0x8F44, 0x5ECD, 0x8F45, 0x5ECE, 0x8F46,
+	0x5ECF, 0x8F47, 0x5ED0, 0x8F48, 0x5ED1, 0xE2DB, 0x5ED2, 0xE2DA,
+	0x5ED3, 0xC0AA, 0x5ED4, 0x8F49, 0x5ED5, 0x8F4A, 0x5ED6, 0xC1CE,
+	0x5ED7, 0x8F4B, 0x5ED8, 0x8F4C, 0x5ED9, 0x8F4D, 0x5EDA, 0x8F4E,
+	0x5EDB, 0xE2DC, 0x5EDC, 0x8F4F, 0x5EDD, 0x8F50, 0x5EDE, 0x8F51,
+	0x5EDF, 0x8F52, 0x5EE0, 0x8F53, 0x5EE1, 0x8F54, 0x5EE2, 0x8F55,
+	0x5EE3, 0x8F56, 0x5EE4, 0x8F57, 0x5EE5, 0x8F58, 0x5EE6, 0x8F59,
+	0x5EE7, 0x8F5A, 0x5EE8, 0xE2DD, 0x5EE9, 0x8F5B, 0x5EEA, 0xE2DE,
+	0x5EEB, 0x8F5C, 0x5EEC, 0x8F5D, 0x5EED, 0x8F5E, 0x5EEE, 0x8F5F,
+	0x5EEF, 0x8F60, 0x5EF0, 0x8F61, 0x5EF1, 0x8F62, 0x5EF2, 0x8F63,
+	0x5EF3, 0x8F64, 0x5EF4, 0xDBC8, 0x5EF5, 0x8F65, 0x5EF6, 0xD1D3,
+	0x5EF7, 0xCDA2, 0x5EF8, 0x8F66, 0x5EF9, 0x8F67, 0x5EFA, 0xBDA8,
+	0x5EFB, 0x8F68, 0x5EFC, 0x8F69, 0x5EFD, 0x8F6A, 0x5EFE, 0xDEC3,
+	0x5EFF, 0xD8A5, 0x5F00, 0xBFAA, 0x5F01, 0xDBCD, 0x5F02, 0xD2EC,
+	0x5F03, 0xC6FA, 0x5F04, 0xC5AA, 0x5F05, 0x8F6B, 0x5F06, 0x8F6C,
+	0x5F07, 0x8F6D, 0x5F08, 0xDEC4, 0x5F09, 0x8F6E, 0x5F0A, 0xB1D7,
+	0x5F0B, 0xDFAE, 0x5F0C, 0x8F6F, 0x5F0D, 0x8F70, 0x5F0E, 0x8F71,
+	0x5F0F, 0xCABD, 0x5F10, 0x8F72, 0x5F11, 0xDFB1, 0x5F12, 0x8F73,
+	0x5F13, 0xB9AD, 0x5F14, 0x8F74, 0x5F15, 0xD2FD, 0x5F16, 0x8F75,
+	0x5F17, 0xB8A5, 0x5F18, 0xBAEB, 0x5F19, 0x8F76, 0x5F1A, 0x8F77,
+	0x5F1B, 0xB3DA, 0x5F1C, 0x8F78, 0x5F1D, 0x8F79, 0x5F1E, 0x8F7A,
+	0x5F1F, 0xB5DC, 0x5F20, 0xD5C5, 0x5F21, 0x8F7B, 0x5F22, 0x8F7C,
+	0x5F23, 0x8F7D, 0x5F24, 0x8F7E, 0x5F25, 0xC3D6, 0x5F26, 0xCFD2,
+	0x5F27, 0xBBA1, 0x5F28, 0x8F80, 0x5F29, 0xE5F3, 0x5F2A, 0xE5F2,
+	0x5F2B, 0x8F81, 0x5F2C, 0x8F82, 0x5F2D, 0xE5F4, 0x5F2E, 0x8F83,
+	0x5F2F, 0xCDE4, 0x5F30, 0x8F84, 0x5F31, 0xC8F5, 0x5F32, 0x8F85,
+	0x5F33, 0x8F86, 0x5F34, 0x8F87, 0x5F35, 0x8F88, 0x5F36, 0x8F89,
+	0x5F37, 0x8F8A, 0x5F38, 0x8F8B, 0x5F39, 0xB5AF, 0x5F3A, 0xC7BF,
+	0x5F3B, 0x8F8C, 0x5F3C, 0xE5F6, 0x5F3D, 0x8F8D, 0x5F3E, 0x8F8E,
+	0x5F3F, 0x8F8F, 0x5F40, 0xECB0, 0x5F41, 0x8F90, 0x5F42, 0x8F91,
+	0x5F43, 0x8F92, 0x5F44, 0x8F93, 0x5F45, 0x8F94, 0x5F46, 0x8F95,
+	0x5F47, 0x8F96, 0x5F48, 0x8F97, 0x5F49, 0x8F98, 0x5F4A, 0x8F99,
+	0x5F4B, 0x8F9A, 0x5F4C, 0x8F9B, 0x5F4D, 0x8F9C, 0x5F4E, 0x8F9D,
+	0x5F4F, 0x8F9E, 0x5F50, 0xE5E6, 0x5F51, 0x8F9F, 0x5F52, 0xB9E9,
+	0x5F53, 0xB5B1, 0x5F54, 0x8FA0, 0x5F55, 0xC2BC, 0x5F56, 0xE5E8,
+	0x5F57, 0xE5E7, 0x5F58, 0xE5E9, 0x5F59, 0x8FA1, 0x5F5A, 0x8FA2,
+	0x5F5B, 0x8FA3, 0x5F5C, 0x8FA4, 0x5F5D, 0xD2CD, 0x5F5E, 0x8FA5,
+	0x5F5F, 0x8FA6, 0x5F60, 0x8FA7, 0x5F61, 0xE1EA, 0x5F62, 0xD0CE,
+	0x5F63, 0x8FA8, 0x5F64, 0xCDAE, 0x5F65, 0x8FA9, 0x5F66, 0xD1E5,
+	0x5F67, 0x8FAA, 0x5F68, 0x8FAB, 0x5F69, 0xB2CA, 0x5F6A, 0xB1EB,
+	0x5F6B, 0x8FAC, 0x5F6C, 0xB1F2, 0x5F6D, 0xC5ED, 0x5F6E, 0x8FAD,
+	0x5F6F, 0x8FAE, 0x5F70, 0xD5C3, 0x5F71, 0xD3B0, 0x5F72, 0x8FAF,
+	0x5F73, 0xE1DC, 0x5F74, 0x8FB0, 0x5F75, 0x8FB1, 0x5F76, 0x8FB2,
+	0x5F77, 0xE1DD, 0x5F78, 0x8FB3, 0x5F79, 0xD2DB, 0x5F7A, 0x8FB4,
+	0x5F7B, 0xB3B9, 0x5F7C, 0xB1CB, 0x5F7D, 0x8FB5, 0x5F7E, 0x8FB6,
+	0x5F7F, 0x8FB7, 0x5F80, 0xCDF9, 0x5F81, 0xD5F7, 0x5F82, 0xE1DE,
+	0x5F83, 0x8FB8, 0x5F84, 0xBEB6, 0x5F85, 0xB4FD, 0x5F86, 0x8FB9,
+	0x5F87, 0xE1DF, 0x5F88, 0xBADC, 0x5F89, 0xE1E0, 0x5F8A, 0xBBB2,
+	0x5F8B, 0xC2C9, 0x5F8C, 0xE1E1, 0x5F8D, 0x8FBA, 0x5F8E, 0x8FBB,
+	0x5F8F, 0x8FBC, 0x5F90, 0xD0EC, 0x5F91, 0x8FBD, 0x5F92, 0xCDBD,
+	0x5F93, 0x8FBE, 0x5F94, 0x8FBF, 0x5F95, 0xE1E2, 0x5F96, 0x8FC0,
+	0x5F97, 0xB5C3, 0x5F98, 0xC5C7, 0x5F99, 0xE1E3, 0x5F9A, 0x8FC1,
+	0x5F9B, 0x8FC2, 0x5F9C, 0xE1E4, 0x5F9D, 0x8FC3, 0x5F9E, 0x8FC4,
+	0x5F9F, 0x8FC5, 0x5FA0, 0x8FC6, 0x5FA1, 0xD3F9, 0x5FA2, 0x8FC7,
+	0x5FA3, 0x8FC8, 0x5FA4, 0x8FC9, 0x5FA5, 0x8FCA, 0x5FA6, 0x8FCB,
+	0x5FA7, 0x8FCC, 0x5FA8, 0xE1E5, 0x5FA9, 0x8FCD, 0x5FAA, 0xD1AD,
+	0x5FAB, 0x8FCE, 0x5FAC, 0x8FCF, 0x5FAD, 0xE1E6, 0x5FAE, 0xCEA2,
+	0x5FAF, 0x8FD0, 0x5FB0, 0x8FD1, 0x5FB1, 0x8FD2, 0x5FB2, 0x8FD3,
+	0x5FB3, 0x8FD4, 0x5FB4, 0x8FD5, 0x5FB5, 0xE1E7, 0x5FB6, 0x8FD6,
+	0x5FB7, 0xB5C2, 0x5FB8, 0x8FD7, 0x5FB9, 0x8FD8, 0x5FBA, 0x8FD9,
+	0x5FBB, 0x8FDA, 0x5FBC, 0xE1E8, 0x5FBD, 0xBBD5, 0x5FBE, 0x8FDB,
+	0x5FBF, 0x8FDC, 0x5FC0, 0x8FDD, 0x5FC1, 0x8FDE, 0x5FC2, 0x8FDF,
+	0x5FC3, 0xD0C4, 0x5FC4, 0xE2E0, 0x5FC5, 0xB1D8, 0x5FC6, 0xD2E4,
+	0x5FC7, 0x8FE0, 0x5FC8, 0x8FE1, 0x5FC9, 0xE2E1, 0x5FCA, 0x8FE2,
+	0x5FCB, 0x8FE3, 0x5FCC, 0xBCC9, 0x5FCD, 0xC8CC, 0x5FCE, 0x8FE4,
+	0x5FCF, 0xE2E3, 0x5FD0, 0xECFE, 0x5FD1, 0xECFD, 0x5FD2, 0xDFAF,
+	0x5FD3, 0x8FE5, 0x5FD4, 0x8FE6, 0x5FD5, 0x8FE7, 0x5FD6, 0xE2E2,
+	0x5FD7, 0xD6BE, 0x5FD8, 0xCDFC, 0x5FD9, 0xC3A6, 0x5FDA, 0x8FE8,
+	0x5FDB, 0x8FE9, 0x5FDC, 0x8FEA, 0x5FDD, 0xE3C3, 0x5FDE, 0x8FEB,
+	0x5FDF, 0x8FEC, 0x5FE0, 0xD6D2, 0x5FE1, 0xE2E7, 0x5FE2, 0x8FED,
+	0x5FE3, 0x8FEE, 0x5FE4, 0xE2E8, 0x5FE5, 0x8FEF, 0x5FE6, 0x8FF0,
+	0x5FE7, 0xD3C7, 0x5FE8, 0x8FF1, 0x5FE9, 0x8FF2, 0x5FEA, 0xE2EC,
+	0x5FEB, 0xBFEC, 0x5FEC, 0x8FF3, 0x5FED, 0xE2ED, 0x5FEE, 0xE2E5,
+	0x5FEF, 0x8FF4, 0x5FF0, 0x8FF5, 0x5FF1, 0xB3C0, 0x5FF2, 0x8FF6,
+	0x5FF3, 0x8FF7, 0x5FF4, 0x8FF8, 0x5FF5, 0xC4EE, 0x5FF6, 0x8FF9,
+	0x5FF7, 0x8FFA, 0x5FF8, 0xE2EE, 0x5FF9, 0x8FFB, 0x5FFA, 0x8FFC,
+	0x5FFB, 0xD0C3, 0x5FFC, 0x8FFD, 0x5FFD, 0xBAF6, 0x5FFE, 0xE2E9,
+	0x5FFF, 0xB7DE, 0x6000, 0xBBB3, 0x6001, 0xCCAC, 0x6002, 0xCBCB,
+	0x6003, 0xE2E4, 0x6004, 0xE2E6, 0x6005, 0xE2EA, 0x6006, 0xE2EB,
+	0x6007, 0x8FFE, 0x6008, 0x9040, 0x6009, 0x9041, 0x600A, 0xE2F7,
+	0x600B, 0x9042, 0x600C, 0x9043, 0x600D, 0xE2F4, 0x600E, 0xD4F5,
+	0x600F, 0xE2F3, 0x6010, 0x9044, 0x6011, 0x9045, 0x6012, 0xC5AD,
+	0x6013, 0x9046, 0x6014, 0xD5FA, 0x6015, 0xC5C2, 0x6016, 0xB2C0,
+	0x6017, 0x9047, 0x6018, 0x9048, 0x6019, 0xE2EF, 0x601A, 0x9049,
+	0x601B, 0xE2F2, 0x601C, 0xC1AF, 0x601D, 0xCBBC, 0x601E, 0x904A,
+	0x601F, 0x904B, 0x6020, 0xB5A1, 0x6021, 0xE2F9, 0x6022, 0x904C,
+	0x6023, 0x904D, 0x6024, 0x904E, 0x6025, 0xBCB1, 0x6026, 0xE2F1,
+	0x6027, 0xD0D4, 0x6028, 0xD4B9, 0x6029, 0xE2F5, 0x602A, 0xB9D6,
+	0x602B, 0xE2F6, 0x602C, 0x904F, 0x602D, 0x9050, 0x602E, 0x9051,
+	0x602F, 0xC7D3, 0x6030, 0x9052, 0x6031, 0x9053, 0x6032, 0x9054,
+	0x6033, 0x9055, 0x6034, 0x9056, 0x6035, 0xE2F0, 0x6036, 0x9057,
+	0x6037, 0x9058, 0x6038, 0x9059, 0x6039, 0x905A, 0x603A, 0x905B,
+	0x603B, 0xD7DC, 0x603C, 0xEDA1, 0x603D, 0x905C, 0x603E, 0x905D,
+	0x603F, 0xE2F8, 0x6040, 0x905E, 0x6041, 0xEDA5, 0x6042, 0xE2FE,
+	0x6043, 0xCAD1, 0x6044, 0x905F, 0x6045, 0x9060, 0x6046, 0x9061,
+	0x6047, 0x9062, 0x6048, 0x9063, 0x6049, 0x9064, 0x604A, 0x9065,
+	0x604B, 0xC1B5, 0x604C, 0x9066, 0x604D, 0xBBD0, 0x604E, 0x9067,
+	0x604F, 0x9068, 0x6050, 0xBFD6, 0x6051, 0x9069, 0x6052, 0xBAE3,
+	0x6053, 0x906A, 0x6054, 0x906B, 0x6055, 0xCBA1, 0x6056, 0x906C,
+	0x6057, 0x906D, 0x6058, 0x906E, 0x6059, 0xEDA6, 0x605A, 0xEDA3,
+	0x605B, 0x906F, 0x605C, 0x9070, 0x605D, 0xEDA2, 0x605E, 0x9071,
+	0x605F, 0x9072, 0x6060, 0x9073, 0x6061, 0x9074, 0x6062, 0xBBD6,
+	0x6063, 0xEDA7, 0x6064, 0xD0F4, 0x6065, 0x9075, 0x6066, 0x9076,
+	0x6067, 0xEDA4, 0x6068, 0xBADE, 0x6069, 0xB6F7, 0x606A, 0xE3A1,
+	0x606B, 0xB6B2, 0x606C, 0xCCF1, 0x606D, 0xB9A7, 0x606E, 0x9077,
+	0x606F, 0xCFA2, 0x6070, 0xC7A1, 0x6071, 0x9078, 0x6072, 0x9079,
+	0x6073, 0xBFD2, 0x6074, 0x907A, 0x6075, 0x907B, 0x6076, 0xB6F1,
+	0x6077, 0x907C, 0x6078, 0xE2FA, 0x6079, 0xE2FB, 0x607A, 0xE2FD,
+	0x607B, 0xE2FC, 0x607C, 0xC4D5, 0x607D, 0xE3A2, 0x607E, 0x907D,
+	0x607F, 0xD3C1, 0x6080, 0x907E, 0x6081, 0x9080, 0x6082, 0x9081,
+	0x6083, 0xE3A7, 0x6084, 0xC7C4, 0x6085, 0x9082, 0x6086, 0x9083,
+	0x6087, 0x9084, 0x6088, 0x9085, 0x6089, 0xCFA4, 0x608A, 0x9086,
+	0x608B, 0x9087, 0x608C, 0xE3A9, 0x608D, 0xBAB7, 0x608E, 0x9088,
+	0x608F, 0x9089, 0x6090, 0x908A, 0x6091, 0x908B, 0x6092, 0xE3A8,
+	0x6093, 0x908C, 0x6094, 0xBBDA, 0x6095, 0x908D, 0x6096, 0xE3A3,
+	0x6097, 0x908E, 0x6098, 0x908F, 0x6099, 0x9090, 0x609A, 0xE3A4,
+	0x609B, 0xE3AA, 0x609C, 0x9091, 0x609D, 0xE3A6, 0x609E, 0x9092,
+	0x609F, 0xCEF2, 0x60A0, 0xD3C6, 0x60A1, 0x9093, 0x60A2, 0x9094,
+	0x60A3, 0xBBBC, 0x60A4, 0x9095, 0x60A5, 0x9096, 0x60A6, 0xD4C3,
+	0x60A7, 0x9097, 0x60A8, 0xC4FA, 0x60A9, 0x9098, 0x60AA, 0x9099,
+	0x60AB, 0xEDA8, 0x60AC, 0xD0FC, 0x60AD, 0xE3A5, 0x60AE, 0x909A,
+	0x60AF, 0xC3F5, 0x60B0, 0x909B, 0x60B1, 0xE3AD, 0x60B2, 0xB1AF,
+	0x60B3, 0x909C, 0x60B4, 0xE3B2, 0x60B5, 0x909D, 0x60B6, 0x909E,
+	0x60B7, 0x909F, 0x60B8, 0xBCC2, 0x60B9, 0x90A0, 0x60BA, 0x90A1,
+	0x60BB, 0xE3AC, 0x60BC, 0xB5BF, 0x60BD, 0x90A2, 0x60BE, 0x90A3,
+	0x60BF, 0x90A4, 0x60C0, 0x90A5, 0x60C1, 0x90A6, 0x60C2, 0x90A7,
+	0x60C3, 0x90A8, 0x60C4, 0x90A9, 0x60C5, 0xC7E9, 0x60C6, 0xE3B0,
+	0x60C7, 0x90AA, 0x60C8, 0x90AB, 0x60C9, 0x90AC, 0x60CA, 0xBEAA,
+	0x60CB, 0xCDEF, 0x60CC, 0x90AD, 0x60CD, 0x90AE, 0x60CE, 0x90AF,
+	0x60CF, 0x90B0, 0x60D0, 0x90B1, 0x60D1, 0xBBF3, 0x60D2, 0x90B2,
+	0x60D3, 0x90B3, 0x60D4, 0x90B4, 0x60D5, 0xCCE8, 0x60D6, 0x90B5,
+	0x60D7, 0x90B6, 0x60D8, 0xE3AF, 0x60D9, 0x90B7, 0x60DA, 0xE3B1,
+	0x60DB, 0x90B8, 0x60DC, 0xCFA7, 0x60DD, 0xE3AE, 0x60DE, 0x90B9,
+	0x60DF, 0xCEA9, 0x60E0, 0xBBDD, 0x60E1, 0x90BA, 0x60E2, 0x90BB,
+	0x60E3, 0x90BC, 0x60E4, 0x90BD, 0x60E5, 0x90BE, 0x60E6, 0xB5EB,
+	0x60E7, 0xBEE5, 0x60E8, 0xB2D2, 0x60E9, 0xB3CD, 0x60EA, 0x90BF,
+	0x60EB, 0xB1B9, 0x60EC, 0xE3AB, 0x60ED, 0xB2D1, 0x60EE, 0xB5AC,
+	0x60EF, 0xB9DF, 0x60F0, 0xB6E8, 0x60F1, 0x90C0, 0x60F2, 0x90C1,
+	0x60F3, 0xCFEB, 0x60F4, 0xE3B7, 0x60F5, 0x90C2, 0x60F6, 0xBBCC,
+	0x60F7, 0x90C3, 0x60F8, 0x90C4, 0x60F9, 0xC8C7, 0x60FA, 0xD0CA,
+	0x60FB, 0x90C5, 0x60FC, 0x90C6, 0x60FD, 0x90C7, 0x60FE, 0x90C8,
+	0x60FF, 0x90C9, 0x6100, 0xE3B8, 0x6101, 0xB3EE, 0x6102, 0x90CA,
+	0x6103, 0x90CB, 0x6104, 0x90CC, 0x6105, 0x90CD, 0x6106, 0xEDA9,
+	0x6107, 0x90CE, 0x6108, 0xD3FA, 0x6109, 0xD3E4, 0x610A, 0x90CF,
+	0x610B, 0x90D0, 0x610C, 0x90D1, 0x610D, 0xEDAA, 0x610E, 0xE3B9,
+	0x610F, 0xD2E2, 0x6110, 0x90D2, 0x6111, 0x90D3, 0x6112, 0x90D4,
+	0x6113, 0x90D5, 0x6114, 0x90D6, 0x6115, 0xE3B5, 0x6116, 0x90D7,
+	0x6117, 0x90D8, 0x6118, 0x90D9, 0x6119, 0x90DA, 0x611A, 0xD3DE,
+	0x611B, 0x90DB, 0x611C, 0x90DC, 0x611D, 0x90DD, 0x611E, 0x90DE,
+	0x611F, 0xB8D0, 0x6120, 0xE3B3, 0x6121, 0x90DF, 0x6122, 0x90E0,
+	0x6123, 0xE3B6, 0x6124, 0xB7DF, 0x6125, 0x90E1, 0x6126, 0xE3B4,
+	0x6127, 0xC0A2, 0x6128, 0x90E2, 0x6129, 0x90E3, 0x612A, 0x90E4,
+	0x612B, 0xE3BA, 0x612C, 0x90E5, 0x612D, 0x90E6, 0x612E, 0x90E7,
+	0x612F, 0x90E8, 0x6130, 0x90E9, 0x6131, 0x90EA, 0x6132, 0x90EB,
+	0x6133, 0x90EC, 0x6134, 0x90ED, 0x6135, 0x90EE, 0x6136, 0x90EF,
+	0x6137, 0x90F0, 0x6138, 0x90F1, 0x6139, 0x90F2, 0x613A, 0x90F3,
+	0x613B, 0x90F4, 0x613C, 0x90F5, 0x613D, 0x90F6, 0x613E, 0x90F7,
+	0x613F, 0xD4B8, 0x6140, 0x90F8, 0x6141, 0x90F9, 0x6142, 0x90FA,
+	0x6143, 0x90FB, 0x6144, 0x90FC, 0x6145, 0x90FD, 0x6146, 0x90FE,
+	0x6147, 0x9140, 0x6148, 0xB4C8, 0x6149, 0x9141, 0x614A, 0xE3BB,
+	0x614B, 0x9142, 0x614C, 0xBBC5, 0x614D, 0x9143, 0x614E, 0xC9F7,
+	0x614F, 0x9144, 0x6150, 0x9145, 0x6151, 0xC9E5, 0x6152, 0x9146,
+	0x6153, 0x9147, 0x6154, 0x9148, 0x6155, 0xC4BD, 0x6156, 0x9149,
+	0x6157, 0x914A, 0x6158, 0x914B, 0x6159, 0x914C, 0x615A, 0x914D,
+	0x615B, 0x914E, 0x615C, 0x914F, 0x615D, 0xEDAB, 0x615E, 0x9150,
+	0x615F, 0x9151, 0x6160, 0x9152, 0x6161, 0x9153, 0x6162, 0xC2FD,
+	0x6163, 0x9154, 0x6164, 0x9155, 0x6165, 0x9156, 0x6166, 0x9157,
+	0x6167, 0xBBDB, 0x6168, 0xBFAE, 0x6169, 0x9158, 0x616A, 0x9159,
+	0x616B, 0x915A, 0x616C, 0x915B, 0x616D, 0x915C, 0x616E, 0x915D,
+	0x616F, 0x915E, 0x6170, 0xCEBF, 0x6171, 0x915F, 0x6172, 0x9160,
+	0x6173, 0x9161, 0x6174, 0x9162, 0x6175, 0xE3BC, 0x6176, 0x9163,
+	0x6177, 0xBFB6, 0x6178, 0x9164, 0x6179, 0x9165, 0x617A, 0x9166,
+	0x617B, 0x9167, 0x617C, 0x9168, 0x617D, 0x9169, 0x617E, 0x916A,
+	0x617F, 0x916B, 0x6180, 0x916C, 0x6181, 0x916D, 0x6182, 0x916E,
+	0x6183, 0x916F, 0x6184, 0x9170, 0x6185, 0x9171, 0x6186, 0x9172,
+	0x6187, 0x9173, 0x6188, 0x9174, 0x6189, 0x9175, 0x618A, 0x9176,
+	0x618B, 0xB1EF, 0x618C, 0x9177, 0x618D, 0x9178, 0x618E, 0xD4F7,
+	0x618F, 0x9179, 0x6190, 0x917A, 0x6191, 0x917B, 0x6192, 0x917C,
+	0x6193, 0x917D, 0x6194, 0xE3BE, 0x6195, 0x917E, 0x6196, 0x9180,
+	0x6197, 0x9181, 0x6198, 0x9182, 0x6199, 0x9183, 0x619A, 0x9184,
+	0x619B, 0x9185, 0x619C, 0x9186, 0x619D, 0xEDAD, 0x619E, 0x9187,
+	0x619F, 0x9188, 0x61A0, 0x9189, 0x61A1, 0x918A, 0x61A2, 0x918B,
+	0x61A3, 0x918C, 0x61A4, 0x918D, 0x61A5, 0x918E, 0x61A6, 0x918F,
+	0x61A7, 0xE3BF, 0x61A8, 0xBAA9, 0x61A9, 0xEDAC, 0x61AA, 0x9190,
+	0x61AB, 0x9191, 0x61AC, 0xE3BD, 0x61AD, 0x9192, 0x61AE, 0x9193,
+	0x61AF, 0x9194, 0x61B0, 0x9195, 0x61B1, 0x9196, 0x61B2, 0x9197,
+	0x61B3, 0x9198, 0x61B4, 0x9199, 0x61B5, 0x919A, 0x61B6, 0x919B,
+	0x61B7, 0xE3C0, 0x61B8, 0x919C, 0x61B9, 0x919D, 0x61BA, 0x919E,
+	0x61BB, 0x919F, 0x61BC, 0x91A0, 0x61BD, 0x91A1, 0x61BE, 0xBAB6,
+	0x61BF, 0x91A2, 0x61C0, 0x91A3, 0x61C1, 0x91A4, 0x61C2, 0xB6AE,
+	0x61C3, 0x91A5, 0x61C4, 0x91A6, 0x61C5, 0x91A7, 0x61C6, 0x91A8,
+	0x61C7, 0x91A9, 0x61C8, 0xD0B8, 0x61C9, 0x91AA, 0x61CA, 0xB0C3,
+	0x61CB, 0xEDAE, 0x61CC, 0x91AB, 0x61CD, 0x91AC, 0x61CE, 0x91AD,
+	0x61CF, 0x91AE, 0x61D0, 0x91AF, 0x61D1, 0xEDAF, 0x61D2, 0xC0C1,
+	0x61D3, 0x91B0, 0x61D4, 0xE3C1, 0x61D5, 0x91B1, 0x61D6, 0x91B2,
+	0x61D7, 0x91B3, 0x61D8, 0x91B4, 0x61D9, 0x91B5, 0x61DA, 0x91B6,
+	0x61DB, 0x91B7, 0x61DC, 0x91B8, 0x61DD, 0x91B9, 0x61DE, 0x91BA,
+	0x61DF, 0x91BB, 0x61E0, 0x91BC, 0x61E1, 0x91BD, 0x61E2, 0x91BE,
+	0x61E3, 0x91BF, 0x61E4, 0x91C0, 0x61E5, 0x91C1, 0x61E6, 0xC5B3,
+	0x61E7, 0x91C2, 0x61E8, 0x91C3, 0x61E9, 0x91C4, 0x61EA, 0x91C5,
+	0x61EB, 0x91C6, 0x61EC, 0x91C7, 0x61ED, 0x91C8, 0x61EE, 0x91C9,
+	0x61EF, 0x91CA, 0x61F0, 0x91CB, 0x61F1, 0x91CC, 0x61F2, 0x91CD,
+	0x61F3, 0x91CE, 0x61F4, 0x91CF, 0x61F5, 0xE3C2, 0x61F6, 0x91D0,
+	0x61F7, 0x91D1, 0x61F8, 0x91D2, 0x61F9, 0x91D3, 0x61FA, 0x91D4,
+	0x61FB, 0x91D5, 0x61FC, 0x91D6, 0x61FD, 0x91D7, 0x61FE, 0x91D8,
+	0x61FF, 0xDCB2, 0x6200, 0x91D9, 0x6201, 0x91DA, 0x6202, 0x91DB,
+	0x6203, 0x91DC, 0x6204, 0x91DD, 0x6205, 0x91DE, 0x6206, 0xEDB0,
+	0x6207, 0x91DF, 0x6208, 0xB8EA, 0x6209, 0x91E0, 0x620A, 0xCEEC,
+	0x620B, 0xEAA7, 0x620C, 0xD0E7, 0x620D, 0xCAF9, 0x620E, 0xC8D6,
+	0x620F, 0xCFB7, 0x6210, 0xB3C9, 0x6211, 0xCED2, 0x6212, 0xBDE4,
+	0x6213, 0x91E1, 0x6214, 0x91E2, 0x6215, 0xE3DE, 0x6216, 0xBBF2,
+	0x6217, 0xEAA8, 0x6218, 0xD5BD, 0x6219, 0x91E3, 0x621A, 0xC6DD,
+	0x621B, 0xEAA9, 0x621C, 0x91E4, 0x621D, 0x91E5, 0x621E, 0x91E6,
+	0x621F, 0xEAAA, 0x6220, 0x91E7, 0x6221, 0xEAAC, 0x6222, 0xEAAB,
+	0x6223, 0x91E8, 0x6224, 0xEAAE, 0x6225, 0xEAAD, 0x6226, 0x91E9,
+	0x6227, 0x91EA, 0x6228, 0x91EB, 0x6229, 0x91EC, 0x622A, 0xBDD8,
+	0x622B, 0x91ED, 0x622C, 0xEAAF, 0x622D, 0x91EE, 0x622E, 0xC2BE,
+	0x622F, 0x91EF, 0x6230, 0x91F0, 0x6231, 0x91F1, 0x6232, 0x91F2,
+	0x6233, 0xB4C1, 0x6234, 0xB4F7, 0x6235, 0x91F3, 0x6236, 0x91F4,
+	0x6237, 0xBBA7, 0x6238, 0x91F5, 0x6239, 0x91F6, 0x623A, 0x91F7,
+	0x623B, 0x91F8, 0x623C, 0x91F9, 0x623D, 0xECE6, 0x623E, 0xECE5,
+	0x623F, 0xB7BF, 0x6240, 0xCBF9, 0x6241, 0xB1E2, 0x6242, 0x91FA,
+	0x6243, 0xECE7, 0x6244, 0x91FB, 0x6245, 0x91FC, 0x6246, 0x91FD,
+	0x6247, 0xC9C8, 0x6248, 0xECE8, 0x6249, 0xECE9, 0x624A, 0x91FE,
+	0x624B, 0xCAD6, 0x624C, 0xDED0, 0x624D, 0xB2C5, 0x624E, 0xD4FA,
+	0x624F, 0x9240, 0x6250, 0x9241, 0x6251, 0xC6CB, 0x6252, 0xB0C7,
+	0x6253, 0xB4F2, 0x6254, 0xC8D3, 0x6255, 0x9242, 0x6256, 0x9243,
+	0x6257, 0x9244, 0x6258, 0xCDD0, 0x6259, 0x9245, 0x625A, 0x9246,
+	0x625B, 0xBFB8, 0x625C, 0x9247, 0x625D, 0x9248, 0x625E, 0x9249,
+	0x625F, 0x924A, 0x6260, 0x924B, 0x6261, 0x924C, 0x6262, 0x924D,
+	0x6263, 0xBFDB, 0x6264, 0x924E, 0x6265, 0x924F, 0x6266, 0xC7A4,
+	0x6267, 0xD6B4, 0x6268, 0x9250, 0x6269, 0xC0A9, 0x626A, 0xDED1,
+	0x626B, 0xC9A8, 0x626C, 0xD1EF, 0x626D, 0xC5A4, 0x626E, 0xB0E7,
+	0x626F, 0xB3B6, 0x6270, 0xC8C5, 0x6271, 0x9251, 0x6272, 0x9252,
+	0x6273, 0xB0E2, 0x6274, 0x9253, 0x6275, 0x9254, 0x6276, 0xB7F6,
+	0x6277, 0x9255, 0x6278, 0x9256, 0x6279, 0xC5FA, 0x627A, 0x9257,
+	0x627B, 0x9258, 0x627C, 0xB6F3, 0x627D, 0x9259, 0x627E, 0xD5D2,
+	0x627F, 0xB3D0, 0x6280, 0xBCBC, 0x6281, 0x925A, 0x6282, 0x925B,
+	0x6283, 0x925C, 0x6284, 0xB3AD, 0x6285, 0x925D, 0x6286, 0x925E,
+	0x6287, 0x925F, 0x6288, 0x9260, 0x6289, 0xBEF1, 0x628A, 0xB0D1,
+	0x628B, 0x9261, 0x628C, 0x9262, 0x628D, 0x9263, 0x628E, 0x9264,
+	0x628F, 0x9265, 0x6290, 0x9266, 0x6291, 0xD2D6, 0x6292, 0xCAE3,
+	0x6293, 0xD7A5, 0x6294, 0x9267, 0x6295, 0xCDB6, 0x6296, 0xB6B6,
+	0x6297, 0xBFB9, 0x6298, 0xD5DB, 0x6299, 0x9268, 0x629A, 0xB8A7,
+	0x629B, 0xC5D7, 0x629C, 0x9269, 0x629D, 0x926A, 0x629E, 0x926B,
+	0x629F, 0xDED2, 0x62A0, 0xBFD9, 0x62A1, 0xC2D5, 0x62A2, 0xC7C0,
+	0x62A3, 0x926C, 0x62A4, 0xBBA4, 0x62A5, 0xB1A8, 0x62A6, 0x926D,
+	0x62A7, 0x926E, 0x62A8, 0xC5EA, 0x62A9, 0x926F, 0x62AA, 0x9270,
+	0x62AB, 0xC5FB, 0x62AC, 0xCCA7, 0x62AD, 0x9271, 0x62AE, 0x9272,
+	0x62AF, 0x9273, 0x62B0, 0x9274, 0x62B1, 0xB1A7, 0x62B2, 0x9275,
+	0x62B3, 0x9276, 0x62B4, 0x9277, 0x62B5, 0xB5D6, 0x62B6, 0x9278,
+	0x62B7, 0x9279, 0x62B8, 0x927A, 0x62B9, 0xC4A8, 0x62BA, 0x927B,
+	0x62BB, 0xDED3, 0x62BC, 0xD1BA, 0x62BD, 0xB3E9, 0x62BE, 0x927C,
+	0x62BF, 0xC3F2, 0x62C0, 0x927D, 0x62C1, 0x927E, 0x62C2, 0xB7F7,
+	0x62C3, 0x9280, 0x62C4, 0xD6F4, 0x62C5, 0xB5A3, 0x62C6, 0xB2F0,
+	0x62C7, 0xC4B4, 0x62C8, 0xC4E9, 0x62C9, 0xC0AD, 0x62CA, 0xDED4,
+	0x62CB, 0x9281, 0x62CC, 0xB0E8, 0x62CD, 0xC5C4, 0x62CE, 0xC1E0,
+	0x62CF, 0x9282, 0x62D0, 0xB9D5, 0x62D1, 0x9283, 0x62D2, 0xBEDC,
+	0x62D3, 0xCDD8, 0x62D4, 0xB0CE, 0x62D5, 0x9284, 0x62D6, 0xCDCF,
+	0x62D7, 0xDED6, 0x62D8, 0xBED0, 0x62D9, 0xD7BE, 0x62DA, 0xDED5,
+	0x62DB, 0xD5D0, 0x62DC, 0xB0DD, 0x62DD, 0x9285, 0x62DE, 0x9286,
+	0x62DF, 0xC4E2, 0x62E0, 0x9287, 0x62E1, 0x9288, 0x62E2, 0xC2A3,
+	0x62E3, 0xBCF0, 0x62E4, 0x9289, 0x62E5, 0xD3B5, 0x62E6, 0xC0B9,
+	0x62E7, 0xC5A1, 0x62E8, 0xB2A6, 0x62E9, 0xD4F1, 0x62EA, 0x928A,
+	0x62EB, 0x928B, 0x62EC, 0xC0A8, 0x62ED, 0xCAC3, 0x62EE, 0xDED7,
+	0x62EF, 0xD5FC, 0x62F0, 0x928C, 0x62F1, 0xB9B0, 0x62F2, 0x928D,
+	0x62F3, 0xC8AD, 0x62F4, 0xCBA9, 0x62F5, 0x928E, 0x62F6, 0xDED9,
+	0x62F7, 0xBFBD, 0x62F8, 0x928F, 0x62F9, 0x9290, 0x62FA, 0x9291,
+	0x62FB, 0x9292, 0x62FC, 0xC6B4, 0x62FD, 0xD7A7, 0x62FE, 0xCAB0,
+	0x62FF, 0xC4C3, 0x6300, 0x9293, 0x6301, 0xB3D6, 0x6302, 0xB9D2,
+	0x6303, 0x9294, 0x6304, 0x9295, 0x6305, 0x9296, 0x6306, 0x9297,
+	0x6307, 0xD6B8, 0x6308, 0xEAFC, 0x6309, 0xB0B4, 0x630A, 0x9298,
+	0x630B, 0x9299, 0x630C, 0x929A, 0x630D, 0x929B, 0x630E, 0xBFE6,
+	0x630F, 0x929C, 0x6310, 0x929D, 0x6311, 0xCCF4, 0x6312, 0x929E,
+	0x6313, 0x929F, 0x6314, 0x92A0, 0x6315, 0x92A1, 0x6316, 0xCDDA,
+	0x6317, 0x92A2, 0x6318, 0x92A3, 0x6319, 0x92A4, 0x631A, 0xD6BF,
+	0x631B, 0xC2CE, 0x631C, 0x92A5, 0x631D, 0xCECE, 0x631E, 0xCCA2,
+	0x631F, 0xD0AE, 0x6320, 0xC4D3, 0x6321, 0xB5B2, 0x6322, 0xDED8,
+	0x6323, 0xD5F5, 0x6324, 0xBCB7, 0x6325, 0xBBD3, 0x6326, 0x92A6,
+	0x6327, 0x92A7, 0x6328, 0xB0A4, 0x6329, 0x92A8, 0x632A, 0xC5B2,
+	0x632B, 0xB4EC, 0x632C, 0x92A9, 0x632D, 0x92AA, 0x632E, 0x92AB,
+	0x632F, 0xD5F1, 0x6330, 0x92AC, 0x6331, 0x92AD, 0x6332, 0xEAFD,
+	0x6333, 0x92AE, 0x6334, 0x92AF, 0x6335, 0x92B0, 0x6336, 0x92B1,
+	0x6337, 0x92B2, 0x6338, 0x92B3, 0x6339, 0xDEDA, 0x633A, 0xCDA6,
+	0x633B, 0x92B4, 0x633C, 0x92B5, 0x633D, 0xCDEC, 0x633E, 0x92B6,
+	0x633F, 0x92B7, 0x6340, 0x92B8, 0x6341, 0x92B9, 0x6342, 0xCEE6,
+	0x6343, 0xDEDC, 0x6344, 0x92BA, 0x6345, 0xCDB1, 0x6346, 0xC0A6,
+	0x6347, 0x92BB, 0x6348, 0x92BC, 0x6349, 0xD7BD, 0x634A, 0x92BD,
+	0x634B, 0xDEDB, 0x634C, 0xB0C6, 0x634D, 0xBAB4, 0x634E, 0xC9D3,
+	0x634F, 0xC4F3, 0x6350, 0xBEE8, 0x6351, 0x92BE, 0x6352, 0x92BF,
+	0x6353, 0x92C0, 0x6354, 0x92C1, 0x6355, 0xB2B6, 0x6356, 0x92C2,
+	0x6357, 0x92C3, 0x6358, 0x92C4, 0x6359, 0x92C5, 0x635A, 0x92C6,
+	0x635B, 0x92C7, 0x635C, 0x92C8, 0x635D, 0x92C9, 0x635E, 0xC0CC,
+	0x635F, 0xCBF0, 0x6360, 0x92CA, 0x6361, 0xBCF1, 0x6362, 0xBBBB,
+	0x6363, 0xB5B7, 0x6364, 0x92CB, 0x6365, 0x92CC, 0x6366, 0x92CD,
+	0x6367, 0xC5F5, 0x6368, 0x92CE, 0x6369, 0xDEE6, 0x636A, 0x92CF,
+	0x636B, 0x92D0, 0x636C, 0x92D1, 0x636D, 0xDEE3, 0x636E, 0xBEDD,
+	0x636F, 0x92D2, 0x6370, 0x92D3, 0x6371, 0xDEDF, 0x6372, 0x92D4,
+	0x6373, 0x92D5, 0x6374, 0x92D6, 0x6375, 0x92D7, 0x6376, 0xB4B7,
+	0x6377, 0xBDDD, 0x6378, 0x92D8, 0x6379, 0x92D9, 0x637A, 0xDEE0,
+	0x637B, 0xC4ED, 0x637C, 0x92DA, 0x637D, 0x92DB, 0x637E, 0x92DC,
+	0x637F, 0x92DD, 0x6380, 0xCFC6, 0x6381, 0x92DE, 0x6382, 0xB5E0,
+	0x6383, 0x92DF, 0x6384, 0x92E0, 0x6385, 0x92E1, 0x6386, 0x92E2,
+	0x6387, 0xB6DE, 0x6388, 0xCADA, 0x6389, 0xB5F4, 0x638A, 0xDEE5,
+	0x638B, 0x92E3, 0x638C, 0xD5C6, 0x638D, 0x92E4, 0x638E, 0xDEE1,
+	0x638F, 0xCCCD, 0x6390, 0xC6FE, 0x6391, 0x92E5, 0x6392, 0xC5C5,
+	0x6393, 0x92E6, 0x6394, 0x92E7, 0x6395, 0x92E8, 0x6396, 0xD2B4,
+	0x6397, 0x92E9, 0x6398, 0xBEF2, 0x6399, 0x92EA, 0x639A, 0x92EB,
+	0x639B, 0x92EC, 0x639C, 0x92ED, 0x639D, 0x92EE, 0x639E, 0x92EF,
+	0x639F, 0x92F0, 0x63A0, 0xC2D3, 0x63A1, 0x92F1, 0x63A2, 0xCCBD,
+	0x63A3, 0xB3B8, 0x63A4, 0x92F2, 0x63A5, 0xBDD3, 0x63A6, 0x92F3,
+	0x63A7, 0xBFD8, 0x63A8, 0xCDC6, 0x63A9, 0xD1DA, 0x63AA, 0xB4EB,
+	0x63AB, 0x92F4, 0x63AC, 0xDEE4, 0x63AD, 0xDEDD, 0x63AE, 0xDEE7,
+	0x63AF, 0x92F5, 0x63B0, 0xEAFE, 0x63B1, 0x92F6, 0x63B2, 0x92F7,
+	0x63B3, 0xC2B0, 0x63B4, 0xDEE2, 0x63B5, 0x92F8, 0x63B6, 0x92F9,
+	0x63B7, 0xD6C0, 0x63B8, 0xB5A7, 0x63B9, 0x92FA, 0x63BA, 0xB2F4,
+	0x63BB, 0x92FB, 0x63BC, 0xDEE8, 0x63BD, 0x92FC, 0x63BE, 0xDEF2,
+	0x63BF, 0x92FD, 0x63C0, 0x92FE, 0x63C1, 0x9340, 0x63C2, 0x9341,
+	0x63C3, 0x9342, 0x63C4, 0xDEED, 0x63C5, 0x9343, 0x63C6, 0xDEF1,
+	0x63C7, 0x9344, 0x63C8, 0x9345, 0x63C9, 0xC8E0, 0x63CA, 0x9346,
+	0x63CB, 0x9347, 0x63CC, 0x9348, 0x63CD, 0xD7E1, 0x63CE, 0xDEEF,
+	0x63CF, 0xC3E8, 0x63D0, 0xCCE1, 0x63D1, 0x9349, 0x63D2, 0xB2E5,
+	0x63D3, 0x934A, 0x63D4, 0x934B, 0x63D5, 0x934C, 0x63D6, 0xD2BE,
+	0x63D7, 0x934D, 0x63D8, 0x934E, 0x63D9, 0x934F, 0x63DA, 0x9350,
+	0x63DB, 0x9351, 0x63DC, 0x9352, 0x63DD, 0x9353, 0x63DE, 0xDEEE,
+	0x63DF, 0x9354, 0x63E0, 0xDEEB, 0x63E1, 0xCED5, 0x63E2, 0x9355,
+	0x63E3, 0xB4A7, 0x63E4, 0x9356, 0x63E5, 0x9357, 0x63E6, 0x9358,
+	0x63E7, 0x9359, 0x63E8, 0x935A, 0x63E9, 0xBFAB, 0x63EA, 0xBEBE,
+	0x63EB, 0x935B, 0x63EC, 0x935C, 0x63ED, 0xBDD2, 0x63EE, 0x935D,
+	0x63EF, 0x935E, 0x63F0, 0x935F, 0x63F1, 0x9360, 0x63F2, 0xDEE9,
+	0x63F3, 0x9361, 0x63F4, 0xD4AE, 0x63F5, 0x9362, 0x63F6, 0xDEDE,
+	0x63F7, 0x9363, 0x63F8, 0xDEEA, 0x63F9, 0x9364, 0x63FA, 0x9365,
+	0x63FB, 0x9366, 0x63FC, 0x9367, 0x63FD, 0xC0BF, 0x63FE, 0x9368,
+	0x63FF, 0xDEEC, 0x6400, 0xB2F3, 0x6401, 0xB8E9, 0x6402, 0xC2A7,
+	0x6403, 0x9369, 0x6404, 0x936A, 0x6405, 0xBDC1, 0x6406, 0x936B,
+	0x6407, 0x936C, 0x6408, 0x936D, 0x6409, 0x936E, 0x640A, 0x936F,
+	0x640B, 0xDEF5, 0x640C, 0xDEF8, 0x640D, 0x9370, 0x640E, 0x9371,
+	0x640F, 0xB2AB, 0x6410, 0xB4A4, 0x6411, 0x9372, 0x6412, 0x9373,
+	0x6413, 0xB4EA, 0x6414, 0xC9A6, 0x6415, 0x9374, 0x6416, 0x9375,
+	0x6417, 0x9376, 0x6418, 0x9377, 0x6419, 0x9378, 0x641A, 0x9379,
+	0x641B, 0xDEF6, 0x641C, 0xCBD1, 0x641D, 0x937A, 0x641E, 0xB8E3,
+	0x641F, 0x937B, 0x6420, 0xDEF7, 0x6421, 0xDEFA, 0x6422, 0x937C,
+	0x6423, 0x937D, 0x6424, 0x937E, 0x6425, 0x9380, 0x6426, 0xDEF9,
+	0x6427, 0x9381, 0x6428, 0x9382, 0x6429, 0x9383, 0x642A, 0xCCC2,
+	0x642B, 0x9384, 0x642C, 0xB0E1, 0x642D, 0xB4EE, 0x642E, 0x9385,
+	0x642F, 0x9386, 0x6430, 0x9387, 0x6431, 0x9388, 0x6432, 0x9389,
+	0x6433, 0x938A, 0x6434, 0xE5BA, 0x6435, 0x938B, 0x6436, 0x938C,
+	0x6437, 0x938D, 0x6438, 0x938E, 0x6439, 0x938F, 0x643A, 0xD0AF,
+	0x643B, 0x9390, 0x643C, 0x9391, 0x643D, 0xB2EB, 0x643E, 0x9392,
+	0x643F, 0xEBA1, 0x6440, 0x9393, 0x6441, 0xDEF4, 0x6442, 0x9394,
+	0x6443, 0x9395, 0x6444, 0xC9E3, 0x6445, 0xDEF3, 0x6446, 0xB0DA,
+	0x6447, 0xD2A1, 0x6448, 0xB1F7, 0x6449, 0x9396, 0x644A, 0xCCAF,
+	0x644B, 0x9397, 0x644C, 0x9398, 0x644D, 0x9399, 0x644E, 0x939A,
+	0x644F, 0x939B, 0x6450, 0x939C, 0x6451, 0x939D, 0x6452, 0xDEF0,
+	0x6453, 0x939E, 0x6454, 0xCBA4, 0x6455, 0x939F, 0x6456, 0x93A0,
+	0x6457, 0x93A1, 0x6458, 0xD5AA, 0x6459, 0x93A2, 0x645A, 0x93A3,
+	0x645B, 0x93A4, 0x645C, 0x93A5, 0x645D, 0x93A6, 0x645E, 0xDEFB,
+	0x645F, 0x93A7, 0x6460, 0x93A8, 0x6461, 0x93A9, 0x6462, 0x93AA,
+	0x6463, 0x93AB, 0x6464, 0x93AC, 0x6465, 0x93AD, 0x6466, 0x93AE,
+	0x6467, 0xB4DD, 0x6468, 0x93AF, 0x6469, 0xC4A6, 0x646A, 0x93B0,
+	0x646B, 0x93B1, 0x646C, 0x93B2, 0x646D, 0xDEFD, 0x646E, 0x93B3,
+	0x646F, 0x93B4, 0x6470, 0x93B5, 0x6471, 0x93B6, 0x6472, 0x93B7,
+	0x6473, 0x93B8, 0x6474, 0x93B9, 0x6475, 0x93BA, 0x6476, 0x93BB,
+	0x6477, 0x93BC, 0x6478, 0xC3FE, 0x6479, 0xC4A1, 0x647A, 0xDFA1,
+	0x647B, 0x93BD, 0x647C, 0x93BE, 0x647D, 0x93BF, 0x647E, 0x93C0,
+	0x647F, 0x93C1, 0x6480, 0x93C2, 0x6481, 0x93C3, 0x6482, 0xC1CC,
+	0x6483, 0x93C4, 0x6484, 0xDEFC, 0x6485, 0xBEEF, 0x6486, 0x93C5,
+	0x6487, 0xC6B2, 0x6488, 0x93C6, 0x6489, 0x93C7, 0x648A, 0x93C8,
+	0x648B, 0x93C9, 0x648C, 0x93CA, 0x648D, 0x93CB, 0x648E, 0x93CC,
+	0x648F, 0x93CD, 0x6490, 0x93CE, 0x6491, 0xB3C5, 0x6492, 0xC8F6,
+	0x6493, 0x93CF, 0x6494, 0x93D0, 0x6495, 0xCBBA, 0x6496, 0xDEFE,
+	0x6497, 0x93D1, 0x6498, 0x93D2, 0x6499, 0xDFA4, 0x649A, 0x93D3,
+	0x649B, 0x93D4, 0x649C, 0x93D5, 0x649D, 0x93D6, 0x649E, 0xD7B2,
+	0x649F, 0x93D7, 0x64A0, 0x93D8, 0x64A1, 0x93D9, 0x64A2, 0x93DA,
+	0x64A3, 0x93DB, 0x64A4, 0xB3B7, 0x64A5, 0x93DC, 0x64A6, 0x93DD,
+	0x64A7, 0x93DE, 0x64A8, 0x93DF, 0x64A9, 0xC1C3, 0x64AA, 0x93E0,
+	0x64AB, 0x93E1, 0x64AC, 0xC7CB, 0x64AD, 0xB2A5, 0x64AE, 0xB4E9,
+	0x64AF, 0x93E2, 0x64B0, 0xD7AB, 0x64B1, 0x93E3, 0x64B2, 0x93E4,
+	0x64B3, 0x93E5, 0x64B4, 0x93E6, 0x64B5, 0xC4EC, 0x64B6, 0x93E7,
+	0x64B7, 0xDFA2, 0x64B8, 0xDFA3, 0x64B9, 0x93E8, 0x64BA, 0xDFA5,
+	0x64BB, 0x93E9, 0x64BC, 0xBAB3, 0x64BD, 0x93EA, 0x64BE, 0x93EB,
+	0x64BF, 0x93EC, 0x64C0, 0xDFA6, 0x64C1, 0x93ED, 0x64C2, 0xC0DE,
+	0x64C3, 0x93EE, 0x64C4, 0x93EF, 0x64C5, 0xC9C3, 0x64C6, 0x93F0,
+	0x64C7, 0x93F1, 0x64C8, 0x93F2, 0x64C9, 0x93F3, 0x64CA, 0x93F4,
+	0x64CB, 0x93F5, 0x64CC, 0x93F6, 0x64CD, 0xB2D9, 0x64CE, 0xC7E6,
+	0x64CF, 0x93F7, 0x64D0, 0xDFA7, 0x64D1, 0x93F8, 0x64D2, 0xC7DC,
+	0x64D3, 0x93F9, 0x64D4, 0x93FA, 0x64D5, 0x93FB, 0x64D6, 0x93FC,
+	0x64D7, 0xDFA8, 0x64D8, 0xEBA2, 0x64D9, 0x93FD, 0x64DA, 0x93FE,
+	0x64DB, 0x9440, 0x64DC, 0x9441, 0x64DD, 0x9442, 0x64DE, 0xCBD3,
+	0x64DF, 0x9443, 0x64E0, 0x9444, 0x64E1, 0x9445, 0x64E2, 0xDFAA,
+	0x64E3, 0x9446, 0x64E4, 0xDFA9, 0x64E5, 0x9447, 0x64E6, 0xB2C1,
+	0x64E7, 0x9448, 0x64E8, 0x9449, 0x64E9, 0x944A, 0x64EA, 0x944B,
+	0x64EB, 0x944C, 0x64EC, 0x944D, 0x64ED, 0x944E, 0x64EE, 0x944F,
+	0x64EF, 0x9450, 0x64F0, 0x9451, 0x64F1, 0x9452, 0x64F2, 0x9453,
+	0x64F3, 0x9454, 0x64F4, 0x9455, 0x64F5, 0x9456, 0x64F6, 0x9457,
+	0x64F7, 0x9458, 0x64F8, 0x9459, 0x64F9, 0x945A, 0x64FA, 0x945B,
+	0x64FB, 0x945C, 0x64FC, 0x945D, 0x64FD, 0x945E, 0x64FE, 0x945F,
+	0x64FF, 0x9460, 0x6500, 0xC5CA, 0x6501, 0x9461, 0x6502, 0x9462,
+	0x6503, 0x9463, 0x6504, 0x9464, 0x6505, 0x9465, 0x6506, 0x9466,
+	0x6507, 0x9467, 0x6508, 0x9468, 0x6509, 0xDFAB, 0x650A, 0x9469,
+	0x650B, 0x946A, 0x650C, 0x946B, 0x650D, 0x946C, 0x650E, 0x946D,
+	0x650F, 0x946E, 0x6510, 0x946F, 0x6511, 0x9470, 0x6512, 0xD4DC,
+	0x6513, 0x9471, 0x6514, 0x9472, 0x6515, 0x9473, 0x6516, 0x9474,
+	0x6517, 0x9475, 0x6518, 0xC8C1, 0x6519, 0x9476, 0x651A, 0x9477,
+	0x651B, 0x9478, 0x651C, 0x9479, 0x651D, 0x947A, 0x651E, 0x947B,
+	0x651F, 0x947C, 0x6520, 0x947D, 0x6521, 0x947E, 0x6522, 0x9480,
+	0x6523, 0x9481, 0x6524, 0x9482, 0x6525, 0xDFAC, 0x6526, 0x9483,
+	0x6527, 0x9484, 0x6528, 0x9485, 0x6529, 0x9486, 0x652A, 0x9487,
+	0x652B, 0xBEF0, 0x652C, 0x9488, 0x652D, 0x9489, 0x652E, 0xDFAD,
+	0x652F, 0xD6A7, 0x6530, 0x948A, 0x6531, 0x948B, 0x6532, 0x948C,
+	0x6533, 0x948D, 0x6534, 0xEAB7, 0x6535, 0xEBB6, 0x6536, 0xCAD5,
+	0x6537, 0x948E, 0x6538, 0xD8FC, 0x6539, 0xB8C4, 0x653A, 0x948F,
+	0x653B, 0xB9A5, 0x653C, 0x9490, 0x653D, 0x9491, 0x653E, 0xB7C5,
+	0x653F, 0xD5FE, 0x6540, 0x9492, 0x6541, 0x9493, 0x6542, 0x9494,
+	0x6543, 0x9495, 0x6544, 0x9496, 0x6545, 0xB9CA, 0x6546, 0x9497,
+	0x6547, 0x9498, 0x6548, 0xD0A7, 0x6549, 0xF4CD, 0x654A, 0x9499,
+	0x654B, 0x949A, 0x654C, 0xB5D0, 0x654D, 0x949B, 0x654E, 0x949C,
+	0x654F, 0xC3F4, 0x6550, 0x949D, 0x6551, 0xBEC8, 0x6552, 0x949E,
+	0x6553, 0x949F, 0x6554, 0x94A0, 0x6555, 0xEBB7, 0x6556, 0xB0BD,
+	0x6557, 0x94A1, 0x6558, 0x94A2, 0x6559, 0xBDCC, 0x655A, 0x94A3,
+	0x655B, 0xC1B2, 0x655C, 0x94A4, 0x655D, 0xB1D6, 0x655E, 0xB3A8,
+	0x655F, 0x94A5, 0x6560, 0x94A6, 0x6561, 0x94A7, 0x6562, 0xB8D2,
+	0x6563, 0xC9A2, 0x6564, 0x94A8, 0x6565, 0x94A9, 0x6566, 0xB6D8,
+	0x6567, 0x94AA, 0x6568, 0x94AB, 0x6569, 0x94AC, 0x656A, 0x94AD,
+	0x656B, 0xEBB8, 0x656C, 0xBEB4, 0x656D, 0x94AE, 0x656E, 0x94AF,
+	0x656F, 0x94B0, 0x6570, 0xCAFD, 0x6571, 0x94B1, 0x6572, 0xC7C3,
+	0x6573, 0x94B2, 0x6574, 0xD5FB, 0x6575, 0x94B3, 0x6576, 0x94B4,
+	0x6577, 0xB7F3, 0x6578, 0x94B5, 0x6579, 0x94B6, 0x657A, 0x94B7,
+	0x657B, 0x94B8, 0x657C, 0x94B9, 0x657D, 0x94BA, 0x657E, 0x94BB,
+	0x657F, 0x94BC, 0x6580, 0x94BD, 0x6581, 0x94BE, 0x6582, 0x94BF,
+	0x6583, 0x94C0, 0x6584, 0x94C1, 0x6585, 0x94C2, 0x6586, 0x94C3,
+	0x6587, 0xCEC4, 0x6588, 0x94C4, 0x6589, 0x94C5, 0x658A, 0x94C6,
+	0x658B, 0xD5AB, 0x658C, 0xB1F3, 0x658D, 0x94C7, 0x658E, 0x94C8,
+	0x658F, 0x94C9, 0x6590, 0xECB3, 0x6591, 0xB0DF, 0x6592, 0x94CA,
+	0x6593, 0xECB5, 0x6594, 0x94CB, 0x6595, 0x94CC, 0x6596, 0x94CD,
+	0x6597, 0xB6B7, 0x6598, 0x94CE, 0x6599, 0xC1CF, 0x659A, 0x94CF,
+	0x659B, 0xF5FA, 0x659C, 0xD0B1, 0x659D, 0x94D0, 0x659E, 0x94D1,
+	0x659F, 0xD5E5, 0x65A0, 0x94D2, 0x65A1, 0xCED3, 0x65A2, 0x94D3,
+	0x65A3, 0x94D4, 0x65A4, 0xBDEF, 0x65A5, 0xB3E2, 0x65A6, 0x94D5,
+	0x65A7, 0xB8AB, 0x65A8, 0x94D6, 0x65A9, 0xD5B6, 0x65AA, 0x94D7,
+	0x65AB, 0xEDBD, 0x65AC, 0x94D8, 0x65AD, 0xB6CF, 0x65AE, 0x94D9,
+	0x65AF, 0xCBB9, 0x65B0, 0xD0C2, 0x65B1, 0x94DA, 0x65B2, 0x94DB,
+	0x65B3, 0x94DC, 0x65B4, 0x94DD, 0x65B5, 0x94DE, 0x65B6, 0x94DF,
+	0x65B7, 0x94E0, 0x65B8, 0x94E1, 0x65B9, 0xB7BD, 0x65BA, 0x94E2,
+	0x65BB, 0x94E3, 0x65BC, 0xECB6, 0x65BD, 0xCAA9, 0x65BE, 0x94E4,
+	0x65BF, 0x94E5, 0x65C0, 0x94E6, 0x65C1, 0xC5D4, 0x65C2, 0x94E7,
+	0x65C3, 0xECB9, 0x65C4, 0xECB8, 0x65C5, 0xC2C3, 0x65C6, 0xECB7,
+	0x65C7, 0x94E8, 0x65C8, 0x94E9, 0x65C9, 0x94EA, 0x65CA, 0x94EB,
+	0x65CB, 0xD0FD, 0x65CC, 0xECBA, 0x65CD, 0x94EC, 0x65CE, 0xECBB,
+	0x65CF, 0xD7E5, 0x65D0, 0x94ED, 0x65D1, 0x94EE, 0x65D2, 0xECBC,
+	0x65D3, 0x94EF, 0x65D4, 0x94F0, 0x65D5, 0x94F1, 0x65D6, 0xECBD,
+	0x65D7, 0xC6EC, 0x65D8, 0x94F2, 0x65D9, 0x94F3, 0x65DA, 0x94F4,
+	0x65DB, 0x94F5, 0x65DC, 0x94F6, 0x65DD, 0x94F7, 0x65DE, 0x94F8,
+	0x65DF, 0x94F9, 0x65E0, 0xCEDE, 0x65E1, 0x94FA, 0x65E2, 0xBCC8,
+	0x65E3, 0x94FB, 0x65E4, 0x94FC, 0x65E5, 0xC8D5, 0x65E6, 0xB5A9,
+	0x65E7, 0xBEC9, 0x65E8, 0xD6BC, 0x65E9, 0xD4E7, 0x65EA, 0x94FD,
+	0x65EB, 0x94FE, 0x65EC, 0xD1AE, 0x65ED, 0xD0F1, 0x65EE, 0xEAB8,
+	0x65EF, 0xEAB9, 0x65F0, 0xEABA, 0x65F1, 0xBAB5, 0x65F2, 0x9540,
+	0x65F3, 0x9541, 0x65F4, 0x9542, 0x65F5, 0x9543, 0x65F6, 0xCAB1,
+	0x65F7, 0xBFF5, 0x65F8, 0x9544, 0x65F9, 0x9545, 0x65FA, 0xCDFA,
+	0x65FB, 0x9546, 0x65FC, 0x9547, 0x65FD, 0x9548, 0x65FE, 0x9549,
+	0x65FF, 0x954A, 0x6600, 0xEAC0, 0x6601, 0x954B, 0x6602, 0xB0BA,
+	0x6603, 0xEABE, 0x6604, 0x954C, 0x6605, 0x954D, 0x6606, 0xC0A5,
+	0x6607, 0x954E, 0x6608, 0x954F, 0x6609, 0x9550, 0x660A, 0xEABB,
+	0x660B, 0x9551, 0x660C, 0xB2FD, 0x660D, 0x9552, 0x660E, 0xC3F7,
+	0x660F, 0xBBE8, 0x6610, 0x9553, 0x6611, 0x9554, 0x6612, 0x9555,
+	0x6613, 0xD2D7, 0x6614, 0xCEF4, 0x6615, 0xEABF, 0x6616, 0x9556,
+	0x6617, 0x9557, 0x6618, 0x9558, 0x6619, 0xEABC, 0x661A, 0x9559,
+	0x661B, 0x955A, 0x661C, 0x955B, 0x661D, 0xEAC3, 0x661E, 0x955C,
+	0x661F, 0xD0C7, 0x6620, 0xD3B3, 0x6621, 0x955D, 0x6622, 0x955E,
+	0x6623, 0x955F, 0x6624, 0x9560, 0x6625, 0xB4BA, 0x6626, 0x9561,
+	0x6627, 0xC3C1, 0x6628, 0xD7F2, 0x6629, 0x9562, 0x662A, 0x9563,
+	0x662B, 0x9564, 0x662C, 0x9565, 0x662D, 0xD5D1, 0x662E, 0x9566,
+	0x662F, 0xCAC7, 0x6630, 0x9567, 0x6631, 0xEAC5, 0x6632, 0x9568,
+	0x6633, 0x9569, 0x6634, 0xEAC4, 0x6635, 0xEAC7, 0x6636, 0xEAC6,
+	0x6637, 0x956A, 0x6638, 0x956B, 0x6639, 0x956C, 0x663A, 0x956D,
+	0x663B, 0x956E, 0x663C, 0xD6E7, 0x663D, 0x956F, 0x663E, 0xCFD4,
+	0x663F, 0x9570, 0x6640, 0x9571, 0x6641, 0xEACB, 0x6642, 0x9572,
+	0x6643, 0xBBCE, 0x6644, 0x9573, 0x6645, 0x9574, 0x6646, 0x9575,
+	0x6647, 0x9576, 0x6648, 0x9577, 0x6649, 0x9578, 0x664A, 0x9579,
+	0x664B, 0xBDFA, 0x664C, 0xC9CE, 0x664D, 0x957A, 0x664E, 0x957B,
+	0x664F, 0xEACC, 0x6650, 0x957C, 0x6651, 0x957D, 0x6652, 0xC9B9,
+	0x6653, 0xCFFE, 0x6654, 0xEACA, 0x6655, 0xD4CE, 0x6656, 0xEACD,
+	0x6657, 0xEACF, 0x6658, 0x957E, 0x6659, 0x9580, 0x665A, 0xCDED,
+	0x665B, 0x9581, 0x665C, 0x9582, 0x665D, 0x9583, 0x665E, 0x9584,
+	0x665F, 0xEAC9, 0x6660, 0x9585, 0x6661, 0xEACE, 0x6662, 0x9586,
+	0x6663, 0x9587, 0x6664, 0xCEEE, 0x6665, 0x9588, 0x6666, 0xBBDE,
+	0x6667, 0x9589, 0x6668, 0xB3BF, 0x6669, 0x958A, 0x666A, 0x958B,
+	0x666B, 0x958C, 0x666C, 0x958D, 0x666D, 0x958E, 0x666E, 0xC6D5,
+	0x666F, 0xBEB0, 0x6670, 0xCEFA, 0x6671, 0x958F, 0x6672, 0x9590,
+	0x6673, 0x9591, 0x6674, 0xC7E7, 0x6675, 0x9592, 0x6676, 0xBEA7,
+	0x6677, 0xEAD0, 0x6678, 0x9593, 0x6679, 0x9594, 0x667A, 0xD6C7,
+	0x667B, 0x9595, 0x667C, 0x9596, 0x667D, 0x9597, 0x667E, 0xC1C0,
+	0x667F, 0x9598, 0x6680, 0x9599, 0x6681, 0x959A, 0x6682, 0xD4DD,
+	0x6683, 0x959B, 0x6684, 0xEAD1, 0x6685, 0x959C, 0x6686, 0x959D,
+	0x6687, 0xCFBE, 0x6688, 0x959E, 0x6689, 0x959F, 0x668A, 0x95A0,
+	0x668B, 0x95A1, 0x668C, 0xEAD2, 0x668D, 0x95A2, 0x668E, 0x95A3,
+	0x668F, 0x95A4, 0x6690, 0x95A5, 0x6691, 0xCAEE, 0x6692, 0x95A6,
+	0x6693, 0x95A7, 0x6694, 0x95A8, 0x6695, 0x95A9, 0x6696, 0xC5AF,
+	0x6697, 0xB0B5, 0x6698, 0x95AA, 0x6699, 0x95AB, 0x669A, 0x95AC,
+	0x669B, 0x95AD, 0x669C, 0x95AE, 0x669D, 0xEAD4, 0x669E, 0x95AF,
+	0x669F, 0x95B0, 0x66A0, 0x95B1, 0x66A1, 0x95B2, 0x66A2, 0x95B3,
+	0x66A3, 0x95B4, 0x66A4, 0x95B5, 0x66A5, 0x95B6, 0x66A6, 0x95B7,
+	0x66A7, 0xEAD3, 0x66A8, 0xF4DF, 0x66A9, 0x95B8, 0x66AA, 0x95B9,
+	0x66AB, 0x95BA, 0x66AC, 0x95BB, 0x66AD, 0x95BC, 0x66AE, 0xC4BA,
+	0x66AF, 0x95BD, 0x66B0, 0x95BE, 0x66B1, 0x95BF, 0x66B2, 0x95C0,
+	0x66B3, 0x95C1, 0x66B4, 0xB1A9, 0x66B5, 0x95C2, 0x66B6, 0x95C3,
+	0x66B7, 0x95C4, 0x66B8, 0x95C5, 0x66B9, 0xE5DF, 0x66BA, 0x95C6,
+	0x66BB, 0x95C7, 0x66BC, 0x95C8, 0x66BD, 0x95C9, 0x66BE, 0xEAD5,
+	0x66BF, 0x95CA, 0x66C0, 0x95CB, 0x66C1, 0x95CC, 0x66C2, 0x95CD,
+	0x66C3, 0x95CE, 0x66C4, 0x95CF, 0x66C5, 0x95D0, 0x66C6, 0x95D1,
+	0x66C7, 0x95D2, 0x66C8, 0x95D3, 0x66C9, 0x95D4, 0x66CA, 0x95D5,
+	0x66CB, 0x95D6, 0x66CC, 0x95D7, 0x66CD, 0x95D8, 0x66CE, 0x95D9,
+	0x66CF, 0x95DA, 0x66D0, 0x95DB, 0x66D1, 0x95DC, 0x66D2, 0x95DD,
+	0x66D3, 0x95DE, 0x66D4, 0x95DF, 0x66D5, 0x95E0, 0x66D6, 0x95E1,
+	0x66D7, 0x95E2, 0x66D8, 0x95E3, 0x66D9, 0xCAEF, 0x66DA, 0x95E4,
+	0x66DB, 0xEAD6, 0x66DC, 0xEAD7, 0x66DD, 0xC6D8, 0x66DE, 0x95E5,
+	0x66DF, 0x95E6, 0x66E0, 0x95E7, 0x66E1, 0x95E8, 0x66E2, 0x95E9,
+	0x66E3, 0x95EA, 0x66E4, 0x95EB, 0x66E5, 0x95EC, 0x66E6, 0xEAD8,
+	0x66E7, 0x95ED, 0x66E8, 0x95EE, 0x66E9, 0xEAD9, 0x66EA, 0x95EF,
+	0x66EB, 0x95F0, 0x66EC, 0x95F1, 0x66ED, 0x95F2, 0x66EE, 0x95F3,
+	0x66EF, 0x95F4, 0x66F0, 0xD4BB, 0x66F1, 0x95F5, 0x66F2, 0xC7FA,
+	0x66F3, 0xD2B7, 0x66F4, 0xB8FC, 0x66F5, 0x95F6, 0x66F6, 0x95F7,
+	0x66F7, 0xEAC2, 0x66F8, 0x95F8, 0x66F9, 0xB2DC, 0x66FA, 0x95F9,
+	0x66FB, 0x95FA, 0x66FC, 0xC2FC, 0x66FD, 0x95FB, 0x66FE, 0xD4F8,
+	0x66FF, 0xCCE6, 0x6700, 0xD7EE, 0x6701, 0x95FC, 0x6702, 0x95FD,
+	0x6703, 0x95FE, 0x6704, 0x9640, 0x6705, 0x9641, 0x6706, 0x9642,
+	0x6707, 0x9643, 0x6708, 0xD4C2, 0x6709, 0xD3D0, 0x670A, 0xEBC3,
+	0x670B, 0xC5F3, 0x670C, 0x9644, 0x670D, 0xB7FE, 0x670E, 0x9645,
+	0x670F, 0x9646, 0x6710, 0xEBD4, 0x6711, 0x9647, 0x6712, 0x9648,
+	0x6713, 0x9649, 0x6714, 0xCBB7, 0x6715, 0xEBDE, 0x6716, 0x964A,
+	0x6717, 0xC0CA, 0x6718, 0x964B, 0x6719, 0x964C, 0x671A, 0x964D,
+	0x671B, 0xCDFB, 0x671C, 0x964E, 0x671D, 0xB3AF, 0x671E, 0x964F,
+	0x671F, 0xC6DA, 0x6720, 0x9650, 0x6721, 0x9651, 0x6722, 0x9652,
+	0x6723, 0x9653, 0x6724, 0x9654, 0x6725, 0x9655, 0x6726, 0xEBFC,
+	0x6727, 0x9656, 0x6728, 0xC4BE, 0x6729, 0x9657, 0x672A, 0xCEB4,
+	0x672B, 0xC4A9, 0x672C, 0xB1BE, 0x672D, 0xD4FD, 0x672E, 0x9658,
+	0x672F, 0xCAF5, 0x6730, 0x9659, 0x6731, 0xD6EC, 0x6732, 0x965A,
+	0x6733, 0x965B, 0x6734, 0xC6D3, 0x6735, 0xB6E4, 0x6736, 0x965C,
+	0x6737, 0x965D, 0x6738, 0x965E, 0x6739, 0x965F, 0x673A, 0xBBFA,
+	0x673B, 0x9660, 0x673C, 0x9661, 0x673D, 0xD0E0, 0x673E, 0x9662,
+	0x673F, 0x9663, 0x6740, 0xC9B1, 0x6741, 0x9664, 0x6742, 0xD4D3,
+	0x6743, 0xC8A8, 0x6744, 0x9665, 0x6745, 0x9666, 0x6746, 0xB8CB,
+	0x6747, 0x9667, 0x6748, 0xE8BE, 0x6749, 0xC9BC, 0x674A, 0x9668,
+	0x674B, 0x9669, 0x674C, 0xE8BB, 0x674D, 0x966A, 0x674E, 0xC0EE,
+	0x674F, 0xD0D3, 0x6750, 0xB2C4, 0x6751, 0xB4E5, 0x6752, 0x966B,
+	0x6753, 0xE8BC, 0x6754, 0x966C, 0x6755, 0x966D, 0x6756, 0xD5C8,
+	0x6757, 0x966E, 0x6758, 0x966F, 0x6759, 0x9670, 0x675A, 0x9671,
+	0x675B, 0x9672, 0x675C, 0xB6C5, 0x675D, 0x9673, 0x675E, 0xE8BD,
+	0x675F, 0xCAF8, 0x6760, 0xB8DC, 0x6761, 0xCCF5, 0x6762, 0x9674,
+	0x6763, 0x9675, 0x6764, 0x9676, 0x6765, 0xC0B4, 0x6766, 0x9677,
+	0x6767, 0x9678, 0x6768, 0xD1EE, 0x6769, 0xE8BF, 0x676A, 0xE8C2,
+	0x676B, 0x9679, 0x676C, 0x967A, 0x676D, 0xBABC, 0x676E, 0x967B,
+	0x676F, 0xB1AD, 0x6770, 0xBDDC, 0x6771, 0x967C, 0x6772, 0xEABD,
+	0x6773, 0xE8C3, 0x6774, 0x967D, 0x6775, 0xE8C6, 0x6776, 0x967E,
+	0x6777, 0xE8CB, 0x6778, 0x9680, 0x6779, 0x9681, 0x677A, 0x9682,
+	0x677B, 0x9683, 0x677C, 0xE8CC, 0x677D, 0x9684, 0x677E, 0xCBC9,
+	0x677F, 0xB0E5, 0x6780, 0x9685, 0x6781, 0xBCAB, 0x6782, 0x9686,
+	0x6783, 0x9687, 0x6784, 0xB9B9, 0x6785, 0x9688, 0x6786, 0x9689,
+	0x6787, 0xE8C1, 0x6788, 0x968A, 0x6789, 0xCDF7, 0x678A, 0x968B,
+	0x678B, 0xE8CA, 0x678C, 0x968C, 0x678D, 0x968D, 0x678E, 0x968E,
+	0x678F, 0x968F, 0x6790, 0xCEF6, 0x6791, 0x9690, 0x6792, 0x9691,
+	0x6793, 0x9692, 0x6794, 0x9693, 0x6795, 0xD5ED, 0x6796, 0x9694,
+	0x6797, 0xC1D6, 0x6798, 0xE8C4, 0x6799, 0x9695, 0x679A, 0xC3B6,
+	0x679B, 0x9696, 0x679C, 0xB9FB, 0x679D, 0xD6A6, 0x679E, 0xE8C8,
+	0x679F, 0x9697, 0x67A0, 0x9698, 0x67A1, 0x9699, 0x67A2, 0xCAE0,
+	0x67A3, 0xD4E6, 0x67A4, 0x969A, 0x67A5, 0xE8C0, 0x67A6, 0x969B,
+	0x67A7, 0xE8C5, 0x67A8, 0xE8C7, 0x67A9, 0x969C, 0x67AA, 0xC7B9,
+	0x67AB, 0xB7E3, 0x67AC, 0x969D, 0x67AD, 0xE8C9, 0x67AE, 0x969E,
+	0x67AF, 0xBFDD, 0x67B0, 0xE8D2, 0x67B1, 0x969F, 0x67B2, 0x96A0,
+	0x67B3, 0xE8D7, 0x67B4, 0x96A1, 0x67B5, 0xE8D5, 0x67B6, 0xBCDC,
+	0x67B7, 0xBCCF, 0x67B8, 0xE8DB, 0x67B9, 0x96A2, 0x67BA, 0x96A3,
+	0x67BB, 0x96A4, 0x67BC, 0x96A5, 0x67BD, 0x96A6, 0x67BE, 0x96A7,
+	0x67BF, 0x96A8, 0x67C0, 0x96A9, 0x67C1, 0xE8DE, 0x67C2, 0x96AA,
+	0x67C3, 0xE8DA, 0x67C4, 0xB1FA, 0x67C5, 0x96AB, 0x67C6, 0x96AC,
+	0x67C7, 0x96AD, 0x67C8, 0x96AE, 0x67C9, 0x96AF, 0x67CA, 0x96B0,
+	0x67CB, 0x96B1, 0x67CC, 0x96B2, 0x67CD, 0x96B3, 0x67CE, 0x96B4,
+	0x67CF, 0xB0D8, 0x67D0, 0xC4B3, 0x67D1, 0xB8CC, 0x67D2, 0xC6E2,
+	0x67D3, 0xC8BE, 0x67D4, 0xC8E1, 0x67D5, 0x96B5, 0x67D6, 0x96B6,
+	0x67D7, 0x96B7, 0x67D8, 0xE8CF, 0x67D9, 0xE8D4, 0x67DA, 0xE8D6,
+	0x67DB, 0x96B8, 0x67DC, 0xB9F1, 0x67DD, 0xE8D8, 0x67DE, 0xD7F5,
+	0x67DF, 0x96B9, 0x67E0, 0xC4FB, 0x67E1, 0x96BA, 0x67E2, 0xE8DC,
+	0x67E3, 0x96BB, 0x67E4, 0x96BC, 0x67E5, 0xB2E9, 0x67E6, 0x96BD,
+	0x67E7, 0x96BE, 0x67E8, 0x96BF, 0x67E9, 0xE8D1, 0x67EA, 0x96C0,
+	0x67EB, 0x96C1, 0x67EC, 0xBCED, 0x67ED, 0x96C2, 0x67EE, 0x96C3,
+	0x67EF, 0xBFC2, 0x67F0, 0xE8CD, 0x67F1, 0xD6F9, 0x67F2, 0x96C4,
+	0x67F3, 0xC1F8, 0x67F4, 0xB2F1, 0x67F5, 0x96C5, 0x67F6, 0x96C6,
+	0x67F7, 0x96C7, 0x67F8, 0x96C8, 0x67F9, 0x96C9, 0x67FA, 0x96CA,
+	0x67FB, 0x96CB, 0x67FC, 0x96CC, 0x67FD, 0xE8DF, 0x67FE, 0x96CD,
+	0x67FF, 0xCAC1, 0x6800, 0xE8D9, 0x6801, 0x96CE, 0x6802, 0x96CF,
+	0x6803, 0x96D0, 0x6804, 0x96D1, 0x6805, 0xD5A4, 0x6806, 0x96D2,
+	0x6807, 0xB1EA, 0x6808, 0xD5BB, 0x6809, 0xE8CE, 0x680A, 0xE8D0,
+	0x680B, 0xB6B0, 0x680C, 0xE8D3, 0x680D, 0x96D3, 0x680E, 0xE8DD,
+	0x680F, 0xC0B8, 0x6810, 0x96D4, 0x6811, 0xCAF7, 0x6812, 0x96D5,
+	0x6813, 0xCBA8, 0x6814, 0x96D6, 0x6815, 0x96D7, 0x6816, 0xC6DC,
+	0x6817, 0xC0F5, 0x6818, 0x96D8, 0x6819, 0x96D9, 0x681A, 0x96DA,
+	0x681B, 0x96DB, 0x681C, 0x96DC, 0x681D, 0xE8E9, 0x681E, 0x96DD,
+	0x681F, 0x96DE, 0x6820, 0x96DF, 0x6821, 0xD0A3, 0x6822, 0x96E0,
+	0x6823, 0x96E1, 0x6824, 0x96E2, 0x6825, 0x96E3, 0x6826, 0x96E4,
+	0x6827, 0x96E5, 0x6828, 0x96E6, 0x6829, 0xE8F2, 0x682A, 0xD6EA,
+	0x682B, 0x96E7, 0x682C, 0x96E8, 0x682D, 0x96E9, 0x682E, 0x96EA,
+	0x682F, 0x96EB, 0x6830, 0x96EC, 0x6831, 0x96ED, 0x6832, 0xE8E0,
+	0x6833, 0xE8E1, 0x6834, 0x96EE, 0x6835, 0x96EF, 0x6836, 0x96F0,
+	0x6837, 0xD1F9, 0x6838, 0xBACB, 0x6839, 0xB8F9, 0x683A, 0x96F1,
+	0x683B, 0x96F2, 0x683C, 0xB8F1, 0x683D, 0xD4D4, 0x683E, 0xE8EF,
+	0x683F, 0x96F3, 0x6840, 0xE8EE, 0x6841, 0xE8EC, 0x6842, 0xB9F0,
+	0x6843, 0xCCD2, 0x6844, 0xE8E6, 0x6845, 0xCEA6, 0x6846, 0xBFF2,
+	0x6847, 0x96F4, 0x6848, 0xB0B8, 0x6849, 0xE8F1, 0x684A, 0xE8F0,
+	0x684B, 0x96F5, 0x684C, 0xD7C0, 0x684D, 0x96F6, 0x684E, 0xE8E4,
+	0x684F, 0x96F7, 0x6850, 0xCDA9, 0x6851, 0xC9A3, 0x6852, 0x96F8,
+	0x6853, 0xBBB8, 0x6854, 0xBDDB, 0x6855, 0xE8EA, 0x6856, 0x96F9,
+	0x6857, 0x96FA, 0x6858, 0x96FB, 0x6859, 0x96FC, 0x685A, 0x96FD,
+	0x685B, 0x96FE, 0x685C, 0x9740, 0x685D, 0x9741, 0x685E, 0x9742,
+	0x685F, 0x9743, 0x6860, 0xE8E2, 0x6861, 0xE8E3, 0x6862, 0xE8E5,
+	0x6863, 0xB5B5, 0x6864, 0xE8E7, 0x6865, 0xC7C5, 0x6866, 0xE8EB,
+	0x6867, 0xE8ED, 0x6868, 0xBDB0, 0x6869, 0xD7AE, 0x686A, 0x9744,
+	0x686B, 0xE8F8, 0x686C, 0x9745, 0x686D, 0x9746, 0x686E, 0x9747,
+	0x686F, 0x9748, 0x6870, 0x9749, 0x6871, 0x974A, 0x6872, 0x974B,
+	0x6873, 0x974C, 0x6874, 0xE8F5, 0x6875, 0x974D, 0x6876, 0xCDB0,
+	0x6877, 0xE8F6, 0x6878, 0x974E, 0x6879, 0x974F, 0x687A, 0x9750,
+	0x687B, 0x9751, 0x687C, 0x9752, 0x687D, 0x9753, 0x687E, 0x9754,
+	0x687F, 0x9755, 0x6880, 0x9756, 0x6881, 0xC1BA, 0x6882, 0x9757,
+	0x6883, 0xE8E8, 0x6884, 0x9758, 0x6885, 0xC3B7, 0x6886, 0xB0F0,
+	0x6887, 0x9759, 0x6888, 0x975A, 0x6889, 0x975B, 0x688A, 0x975C,
+	0x688B, 0x975D, 0x688C, 0x975E, 0x688D, 0x975F, 0x688E, 0x9760,
+	0x688F, 0xE8F4, 0x6890, 0x9761, 0x6891, 0x9762, 0x6892, 0x9763,
+	0x6893, 0xE8F7, 0x6894, 0x9764, 0x6895, 0x9765, 0x6896, 0x9766,
+	0x6897, 0xB9A3, 0x6898, 0x9767, 0x6899, 0x9768, 0x689A, 0x9769,
+	0x689B, 0x976A, 0x689C, 0x976B, 0x689D, 0x976C, 0x689E, 0x976D,
+	0x689F, 0x976E, 0x68A0, 0x976F, 0x68A1, 0x9770, 0x68A2, 0xC9D2,
+	0x68A3, 0x9771, 0x68A4, 0x9772, 0x68A5, 0x9773, 0x68A6, 0xC3CE,
+	0x68A7, 0xCEE0, 0x68A8, 0xC0E6, 0x68A9, 0x9774, 0x68AA, 0x9775,
+	0x68AB, 0x9776, 0x68AC, 0x9777, 0x68AD, 0xCBF3, 0x68AE, 0x9778,
+	0x68AF, 0xCCDD, 0x68B0, 0xD0B5, 0x68B1, 0x9779, 0x68B2, 0x977A,
+	0x68B3, 0xCAE1, 0x68B4, 0x977B, 0x68B5, 0xE8F3, 0x68B6, 0x977C,
+	0x68B7, 0x977D, 0x68B8, 0x977E, 0x68B9, 0x9780, 0x68BA, 0x9781,
+	0x68BB, 0x9782, 0x68BC, 0x9783, 0x68BD, 0x9784, 0x68BE, 0x9785,
+	0x68BF, 0x9786, 0x68C0, 0xBCEC, 0x68C1, 0x9787, 0x68C2, 0xE8F9,
+	0x68C3, 0x9788, 0x68C4, 0x9789, 0x68C5, 0x978A, 0x68C6, 0x978B,
+	0x68C7, 0x978C, 0x68C8, 0x978D, 0x68C9, 0xC3DE, 0x68CA, 0x978E,
+	0x68CB, 0xC6E5, 0x68CC, 0x978F, 0x68CD, 0xB9F7, 0x68CE, 0x9790,
+	0x68CF, 0x9791, 0x68D0, 0x9792, 0x68D1, 0x9793, 0x68D2, 0xB0F4,
+	0x68D3, 0x9794, 0x68D4, 0x9795, 0x68D5, 0xD7D8, 0x68D6, 0x9796,
+	0x68D7, 0x9797, 0x68D8, 0xBCAC, 0x68D9, 0x9798, 0x68DA, 0xC5EF,
+	0x68DB, 0x9799, 0x68DC, 0x979A, 0x68DD, 0x979B, 0x68DE, 0x979C,
+	0x68DF, 0x979D, 0x68E0, 0xCCC4, 0x68E1, 0x979E, 0x68E2, 0x979F,
+	0x68E3, 0xE9A6, 0x68E4, 0x97A0, 0x68E5, 0x97A1, 0x68E6, 0x97A2,
+	0x68E7, 0x97A3, 0x68E8, 0x97A4, 0x68E9, 0x97A5, 0x68EA, 0x97A6,
+	0x68EB, 0x97A7, 0x68EC, 0x97A8, 0x68ED, 0x97A9, 0x68EE, 0xC9AD,
+	0x68EF, 0x97AA, 0x68F0, 0xE9A2, 0x68F1, 0xC0E2, 0x68F2, 0x97AB,
+	0x68F3, 0x97AC, 0x68F4, 0x97AD, 0x68F5, 0xBFC3, 0x68F6, 0x97AE,
+	0x68F7, 0x97AF, 0x68F8, 0x97B0, 0x68F9, 0xE8FE, 0x68FA, 0xB9D7,
+	0x68FB, 0x97B1, 0x68FC, 0xE8FB, 0x68FD, 0x97B2, 0x68FE, 0x97B3,
+	0x68FF, 0x97B4, 0x6900, 0x97B5, 0x6901, 0xE9A4, 0x6902, 0x97B6,
+	0x6903, 0x97B7, 0x6904, 0x97B8, 0x6905, 0xD2CE, 0x6906, 0x97B9,
+	0x6907, 0x97BA, 0x6908, 0x97BB, 0x6909, 0x97BC, 0x690A, 0x97BD,
+	0x690B, 0xE9A3, 0x690C, 0x97BE, 0x690D, 0xD6B2, 0x690E, 0xD7B5,
+	0x690F, 0x97BF, 0x6910, 0xE9A7, 0x6911, 0x97C0, 0x6912, 0xBDB7,
+	0x6913, 0x97C1, 0x6914, 0x97C2, 0x6915, 0x97C3, 0x6916, 0x97C4,
+	0x6917, 0x97C5, 0x6918, 0x97C6, 0x6919, 0x97C7, 0x691A, 0x97C8,
+	0x691B, 0x97C9, 0x691C, 0x97CA, 0x691D, 0x97CB, 0x691E, 0x97CC,
+	0x691F, 0xE8FC, 0x6920, 0xE8FD, 0x6921, 0x97CD, 0x6922, 0x97CE,
+	0x6923, 0x97CF, 0x6924, 0xE9A1, 0x6925, 0x97D0, 0x6926, 0x97D1,
+	0x6927, 0x97D2, 0x6928, 0x97D3, 0x6929, 0x97D4, 0x692A, 0x97D5,
+	0x692B, 0x97D6, 0x692C, 0x97D7, 0x692D, 0xCDD6, 0x692E, 0x97D8,
+	0x692F, 0x97D9, 0x6930, 0xD2AC, 0x6931, 0x97DA, 0x6932, 0x97DB,
+	0x6933, 0x97DC, 0x6934, 0xE9B2, 0x6935, 0x97DD, 0x6936, 0x97DE,
+	0x6937, 0x97DF, 0x6938, 0x97E0, 0x6939, 0xE9A9, 0x693A, 0x97E1,
+	0x693B, 0x97E2, 0x693C, 0x97E3, 0x693D, 0xB4AA, 0x693E, 0x97E4,
+	0x693F, 0xB4BB, 0x6940, 0x97E5, 0x6941, 0x97E6, 0x6942, 0xE9AB,
+	0x6943, 0x97E7, 0x6944, 0x97E8, 0x6945, 0x97E9, 0x6946, 0x97EA,
+	0x6947, 0x97EB, 0x6948, 0x97EC, 0x6949, 0x97ED, 0x694A, 0x97EE,
+	0x694B, 0x97EF, 0x694C, 0x97F0, 0x694D, 0x97F1, 0x694E, 0x97F2,
+	0x694F, 0x97F3, 0x6950, 0x97F4, 0x6951, 0x97F5, 0x6952, 0x97F6,
+	0x6953, 0x97F7, 0x6954, 0xD0A8, 0x6955, 0x97F8, 0x6956, 0x97F9,
+	0x6957, 0xE9A5, 0x6958, 0x97FA, 0x6959, 0x97FB, 0x695A, 0xB3FE,
+	0x695B, 0x97FC, 0x695C, 0x97FD, 0x695D, 0xE9AC, 0x695E, 0xC0E3,
+	0x695F, 0x97FE, 0x6960, 0xE9AA, 0x6961, 0x9840, 0x6962, 0x9841,
+	0x6963, 0xE9B9, 0x6964, 0x9842, 0x6965, 0x9843, 0x6966, 0xE9B8,
+	0x6967, 0x9844, 0x6968, 0x9845, 0x6969, 0x9846, 0x696A, 0x9847,
+	0x696B, 0xE9AE, 0x696C, 0x9848, 0x696D, 0x9849, 0x696E, 0xE8FA,
+	0x696F, 0x984A, 0x6970, 0x984B, 0x6971, 0xE9A8, 0x6972, 0x984C,
+	0x6973, 0x984D, 0x6974, 0x984E, 0x6975, 0x984F, 0x6976, 0x9850,
+	0x6977, 0xBFAC, 0x6978, 0xE9B1, 0x6979, 0xE9BA, 0x697A, 0x9851,
+	0x697B, 0x9852, 0x697C, 0xC2A5, 0x697D, 0x9853, 0x697E, 0x9854,
+	0x697F, 0x9855, 0x6980, 0xE9AF, 0x6981, 0x9856, 0x6982, 0xB8C5,
+	0x6983, 0x9857, 0x6984, 0xE9AD, 0x6985, 0x9858, 0x6986, 0xD3DC,
+	0x6987, 0xE9B4, 0x6988, 0xE9B5, 0x6989, 0xE9B7, 0x698A, 0x9859,
+	0x698B, 0x985A, 0x698C, 0x985B, 0x698D, 0xE9C7, 0x698E, 0x985C,
+	0x698F, 0x985D, 0x6990, 0x985E, 0x6991, 0x985F, 0x6992, 0x9860,
+	0x6993, 0x9861, 0x6994, 0xC0C6, 0x6995, 0xE9C5, 0x6996, 0x9862,
+	0x6997, 0x9863, 0x6998, 0xE9B0, 0x6999, 0x9864, 0x699A, 0x9865,
+	0x699B, 0xE9BB, 0x699C, 0xB0F1, 0x699D, 0x9866, 0x699E, 0x9867,
+	0x699F, 0x9868, 0x69A0, 0x9869, 0x69A1, 0x986A, 0x69A2, 0x986B,
+	0x69A3, 0x986C, 0x69A4, 0x986D, 0x69A5, 0x986E, 0x69A6, 0x986F,
+	0x69A7, 0xE9BC, 0x69A8, 0xD5A5, 0x69A9, 0x9870, 0x69AA, 0x9871,
+	0x69AB, 0xE9BE, 0x69AC, 0x9872, 0x69AD, 0xE9BF, 0x69AE, 0x9873,
+	0x69AF, 0x9874, 0x69B0, 0x9875, 0x69B1, 0xE9C1, 0x69B2, 0x9876,
+	0x69B3, 0x9877, 0x69B4, 0xC1F1, 0x69B5, 0x9878, 0x69B6, 0x9879,
+	0x69B7, 0xC8B6, 0x69B8, 0x987A, 0x69B9, 0x987B, 0x69BA, 0x987C,
+	0x69BB, 0xE9BD, 0x69BC, 0x987D, 0x69BD, 0x987E, 0x69BE, 0x9880,
+	0x69BF, 0x9881, 0x69C0, 0x9882, 0x69C1, 0xE9C2, 0x69C2, 0x9883,
+	0x69C3, 0x9884, 0x69C4, 0x9885, 0x69C5, 0x9886, 0x69C6, 0x9887,
+	0x69C7, 0x9888, 0x69C8, 0x9889, 0x69C9, 0x988A, 0x69CA, 0xE9C3,
+	0x69CB, 0x988B, 0x69CC, 0xE9B3, 0x69CD, 0x988C, 0x69CE, 0xE9B6,
+	0x69CF, 0x988D, 0x69D0, 0xBBB1, 0x69D1, 0x988E, 0x69D2, 0x988F,
+	0x69D3, 0x9890, 0x69D4, 0xE9C0, 0x69D5, 0x9891, 0x69D6, 0x9892,
+	0x69D7, 0x9893, 0x69D8, 0x9894, 0x69D9, 0x9895, 0x69DA, 0x9896,
+	0x69DB, 0xBCF7, 0x69DC, 0x9897, 0x69DD, 0x9898, 0x69DE, 0x9899,
+	0x69DF, 0xE9C4, 0x69E0, 0xE9C6, 0x69E1, 0x989A, 0x69E2, 0x989B,
+	0x69E3, 0x989C, 0x69E4, 0x989D, 0x69E5, 0x989E, 0x69E6, 0x989F,
+	0x69E7, 0x98A0, 0x69E8, 0x98A1, 0x69E9, 0x98A2, 0x69EA, 0x98A3,
+	0x69EB, 0x98A4, 0x69EC, 0x98A5, 0x69ED, 0xE9CA, 0x69EE, 0x98A6,
+	0x69EF, 0x98A7, 0x69F0, 0x98A8, 0x69F1, 0x98A9, 0x69F2, 0xE9CE,
+	0x69F3, 0x98AA, 0x69F4, 0x98AB, 0x69F5, 0x98AC, 0x69F6, 0x98AD,
+	0x69F7, 0x98AE, 0x69F8, 0x98AF, 0x69F9, 0x98B0, 0x69FA, 0x98B1,
+	0x69FB, 0x98B2, 0x69FC, 0x98B3, 0x69FD, 0xB2DB, 0x69FE, 0x98B4,
+	0x69FF, 0xE9C8, 0x6A00, 0x98B5, 0x6A01, 0x98B6, 0x6A02, 0x98B7,
+	0x6A03, 0x98B8, 0x6A04, 0x98B9, 0x6A05, 0x98BA, 0x6A06, 0x98BB,
+	0x6A07, 0x98BC, 0x6A08, 0x98BD, 0x6A09, 0x98BE, 0x6A0A, 0xB7AE,
+	0x6A0B, 0x98BF, 0x6A0C, 0x98C0, 0x6A0D, 0x98C1, 0x6A0E, 0x98C2,
+	0x6A0F, 0x98C3, 0x6A10, 0x98C4, 0x6A11, 0x98C5, 0x6A12, 0x98C6,
+	0x6A13, 0x98C7, 0x6A14, 0x98C8, 0x6A15, 0x98C9, 0x6A16, 0x98CA,
+	0x6A17, 0xE9CB, 0x6A18, 0xE9CC, 0x6A19, 0x98CB, 0x6A1A, 0x98CC,
+	0x6A1B, 0x98CD, 0x6A1C, 0x98CE, 0x6A1D, 0x98CF, 0x6A1E, 0x98D0,
+	0x6A1F, 0xD5C1, 0x6A20, 0x98D1, 0x6A21, 0xC4A3, 0x6A22, 0x98D2,
+	0x6A23, 0x98D3, 0x6A24, 0x98D4, 0x6A25, 0x98D5, 0x6A26, 0x98D6,
+	0x6A27, 0x98D7, 0x6A28, 0xE9D8, 0x6A29, 0x98D8, 0x6A2A, 0xBAE1,
+	0x6A2B, 0x98D9, 0x6A2C, 0x98DA, 0x6A2D, 0x98DB, 0x6A2E, 0x98DC,
+	0x6A2F, 0xE9C9, 0x6A30, 0x98DD, 0x6A31, 0xD3A3, 0x6A32, 0x98DE,
+	0x6A33, 0x98DF, 0x6A34, 0x98E0, 0x6A35, 0xE9D4, 0x6A36, 0x98E1,
+	0x6A37, 0x98E2, 0x6A38, 0x98E3, 0x6A39, 0x98E4, 0x6A3A, 0x98E5,
+	0x6A3B, 0x98E6, 0x6A3C, 0x98E7, 0x6A3D, 0xE9D7, 0x6A3E, 0xE9D0,
+	0x6A3F, 0x98E8, 0x6A40, 0x98E9, 0x6A41, 0x98EA, 0x6A42, 0x98EB,
+	0x6A43, 0x98EC, 0x6A44, 0xE9CF, 0x6A45, 0x98ED, 0x6A46, 0x98EE,
+	0x6A47, 0xC7C1, 0x6A48, 0x98EF, 0x6A49, 0x98F0, 0x6A4A, 0x98F1,
+	0x6A4B, 0x98F2, 0x6A4C, 0x98F3, 0x6A4D, 0x98F4, 0x6A4E, 0x98F5,
+	0x6A4F, 0x98F6, 0x6A50, 0xE9D2, 0x6A51, 0x98F7, 0x6A52, 0x98F8,
+	0x6A53, 0x98F9, 0x6A54, 0x98FA, 0x6A55, 0x98FB, 0x6A56, 0x98FC,
+	0x6A57, 0x98FD, 0x6A58, 0xE9D9, 0x6A59, 0xB3C8, 0x6A5A, 0x98FE,
+	0x6A5B, 0xE9D3, 0x6A5C, 0x9940, 0x6A5D, 0x9941, 0x6A5E, 0x9942,
+	0x6A5F, 0x9943, 0x6A60, 0x9944, 0x6A61, 0xCFF0, 0x6A62, 0x9945,
+	0x6A63, 0x9946, 0x6A64, 0x9947, 0x6A65, 0xE9CD, 0x6A66, 0x9948,
+	0x6A67, 0x9949, 0x6A68, 0x994A, 0x6A69, 0x994B, 0x6A6A, 0x994C,
+	0x6A6B, 0x994D, 0x6A6C, 0x994E, 0x6A6D, 0x994F, 0x6A6E, 0x9950,
+	0x6A6F, 0x9951, 0x6A70, 0x9952, 0x6A71, 0xB3F7, 0x6A72, 0x9953,
+	0x6A73, 0x9954, 0x6A74, 0x9955, 0x6A75, 0x9956, 0x6A76, 0x9957,
+	0x6A77, 0x9958, 0x6A78, 0x9959, 0x6A79, 0xE9D6, 0x6A7A, 0x995A,
+	0x6A7B, 0x995B, 0x6A7C, 0xE9DA, 0x6A7D, 0x995C, 0x6A7E, 0x995D,
+	0x6A7F, 0x995E, 0x6A80, 0xCCB4, 0x6A81, 0x995F, 0x6A82, 0x9960,
+	0x6A83, 0x9961, 0x6A84, 0xCFAD, 0x6A85, 0x9962, 0x6A86, 0x9963,
+	0x6A87, 0x9964, 0x6A88, 0x9965, 0x6A89, 0x9966, 0x6A8A, 0x9967,
+	0x6A8B, 0x9968, 0x6A8C, 0x9969, 0x6A8D, 0x996A, 0x6A8E, 0xE9D5,
+	0x6A8F, 0x996B, 0x6A90, 0xE9DC, 0x6A91, 0xE9DB, 0x6A92, 0x996C,
+	0x6A93, 0x996D, 0x6A94, 0x996E, 0x6A95, 0x996F, 0x6A96, 0x9970,
+	0x6A97, 0xE9DE, 0x6A98, 0x9971, 0x6A99, 0x9972, 0x6A9A, 0x9973,
+	0x6A9B, 0x9974, 0x6A9C, 0x9975, 0x6A9D, 0x9976, 0x6A9E, 0x9977,
+	0x6A9F, 0x9978, 0x6AA0, 0xE9D1, 0x6AA1, 0x9979, 0x6AA2, 0x997A,
+	0x6AA3, 0x997B, 0x6AA4, 0x997C, 0x6AA5, 0x997D, 0x6AA6, 0x997E,
+	0x6AA7, 0x9980, 0x6AA8, 0x9981, 0x6AA9, 0xE9DD, 0x6AAA, 0x9982,
+	0x6AAB, 0xE9DF, 0x6AAC, 0xC3CA, 0x6AAD, 0x9983, 0x6AAE, 0x9984,
+	0x6AAF, 0x9985, 0x6AB0, 0x9986, 0x6AB1, 0x9987, 0x6AB2, 0x9988,
+	0x6AB3, 0x9989, 0x6AB4, 0x998A, 0x6AB5, 0x998B, 0x6AB6, 0x998C,
+	0x6AB7, 0x998D, 0x6AB8, 0x998E, 0x6AB9, 0x998F, 0x6ABA, 0x9990,
+	0x6ABB, 0x9991, 0x6ABC, 0x9992, 0x6ABD, 0x9993, 0x6ABE, 0x9994,
+	0x6ABF, 0x9995, 0x6AC0, 0x9996, 0x6AC1, 0x9997, 0x6AC2, 0x9998,
+	0x6AC3, 0x9999, 0x6AC4, 0x999A, 0x6AC5, 0x999B, 0x6AC6, 0x999C,
+	0x6AC7, 0x999D, 0x6AC8, 0x999E, 0x6AC9, 0x999F, 0x6ACA, 0x99A0,
+	0x6ACB, 0x99A1, 0x6ACC, 0x99A2, 0x6ACD, 0x99A3, 0x6ACE, 0x99A4,
+	0x6ACF, 0x99A5, 0x6AD0, 0x99A6, 0x6AD1, 0x99A7, 0x6AD2, 0x99A8,
+	0x6AD3, 0x99A9, 0x6AD4, 0x99AA, 0x6AD5, 0x99AB, 0x6AD6, 0x99AC,
+	0x6AD7, 0x99AD, 0x6AD8, 0x99AE, 0x6AD9, 0x99AF, 0x6ADA, 0x99B0,
+	0x6ADB, 0x99B1, 0x6ADC, 0x99B2, 0x6ADD, 0x99B3, 0x6ADE, 0x99B4,
+	0x6ADF, 0x99B5, 0x6AE0, 0x99B6, 0x6AE1, 0x99B7, 0x6AE2, 0x99B8,
+	0x6AE3, 0x99B9, 0x6AE4, 0x99BA, 0x6AE5, 0x99BB, 0x6AE6, 0x99BC,
+	0x6AE7, 0x99BD, 0x6AE8, 0x99BE, 0x6AE9, 0x99BF, 0x6AEA, 0x99C0,
+	0x6AEB, 0x99C1, 0x6AEC, 0x99C2, 0x6AED, 0x99C3, 0x6AEE, 0x99C4,
+	0x6AEF, 0x99C5, 0x6AF0, 0x99C6, 0x6AF1, 0x99C7, 0x6AF2, 0x99C8,
+	0x6AF3, 0x99C9, 0x6AF4, 0x99CA, 0x6AF5, 0x99CB, 0x6AF6, 0x99CC,
+	0x6AF7, 0x99CD, 0x6AF8, 0x99CE, 0x6AF9, 0x99CF, 0x6AFA, 0x99D0,
+	0x6AFB, 0x99D1, 0x6AFC, 0x99D2, 0x6AFD, 0x99D3, 0x6AFE, 0x99D4,
+	0x6AFF, 0x99D5, 0x6B00, 0x99D6, 0x6B01, 0x99D7, 0x6B02, 0x99D8,
+	0x6B03, 0x99D9, 0x6B04, 0x99DA, 0x6B05, 0x99DB, 0x6B06, 0x99DC,
+	0x6B07, 0x99DD, 0x6B08, 0x99DE, 0x6B09, 0x99DF, 0x6B0A, 0x99E0,
+	0x6B0B, 0x99E1, 0x6B0C, 0x99E2, 0x6B0D, 0x99E3, 0x6B0E, 0x99E4,
+	0x6B0F, 0x99E5, 0x6B10, 0x99E6, 0x6B11, 0x99E7, 0x6B12, 0x99E8,
+	0x6B13, 0x99E9, 0x6B14, 0x99EA, 0x6B15, 0x99EB, 0x6B16, 0x99EC,
+	0x6B17, 0x99ED, 0x6B18, 0x99EE, 0x6B19, 0x99EF, 0x6B1A, 0x99F0,
+	0x6B1B, 0x99F1, 0x6B1C, 0x99F2, 0x6B1D, 0x99F3, 0x6B1E, 0x99F4,
+	0x6B1F, 0x99F5, 0x6B20, 0xC7B7, 0x6B21, 0xB4CE, 0x6B22, 0xBBB6,
+	0x6B23, 0xD0C0, 0x6B24, 0xECA3, 0x6B25, 0x99F6, 0x6B26, 0x99F7,
+	0x6B27, 0xC5B7, 0x6B28, 0x99F8, 0x6B29, 0x99F9, 0x6B2A, 0x99FA,
+	0x6B2B, 0x99FB, 0x6B2C, 0x99FC, 0x6B2D, 0x99FD, 0x6B2E, 0x99FE,
+	0x6B2F, 0x9A40, 0x6B30, 0x9A41, 0x6B31, 0x9A42, 0x6B32, 0xD3FB,
+	0x6B33, 0x9A43, 0x6B34, 0x9A44, 0x6B35, 0x9A45, 0x6B36, 0x9A46,
+	0x6B37, 0xECA4, 0x6B38, 0x9A47, 0x6B39, 0xECA5, 0x6B3A, 0xC6DB,
+	0x6B3B, 0x9A48, 0x6B3C, 0x9A49, 0x6B3D, 0x9A4A, 0x6B3E, 0xBFEE,
+	0x6B3F, 0x9A4B, 0x6B40, 0x9A4C, 0x6B41, 0x9A4D, 0x6B42, 0x9A4E,
+	0x6B43, 0xECA6, 0x6B44, 0x9A4F, 0x6B45, 0x9A50, 0x6B46, 0xECA7,
+	0x6B47, 0xD0AA, 0x6B48, 0x9A51, 0x6B49, 0xC7B8, 0x6B4A, 0x9A52,
+	0x6B4B, 0x9A53, 0x6B4C, 0xB8E8, 0x6B4D, 0x9A54, 0x6B4E, 0x9A55,
+	0x6B4F, 0x9A56, 0x6B50, 0x9A57, 0x6B51, 0x9A58, 0x6B52, 0x9A59,
+	0x6B53, 0x9A5A, 0x6B54, 0x9A5B, 0x6B55, 0x9A5C, 0x6B56, 0x9A5D,
+	0x6B57, 0x9A5E, 0x6B58, 0x9A5F, 0x6B59, 0xECA8, 0x6B5A, 0x9A60,
+	0x6B5B, 0x9A61, 0x6B5C, 0x9A62, 0x6B5D, 0x9A63, 0x6B5E, 0x9A64,
+	0x6B5F, 0x9A65, 0x6B60, 0x9A66, 0x6B61, 0x9A67, 0x6B62, 0xD6B9,
+	0x6B63, 0xD5FD, 0x6B64, 0xB4CB, 0x6B65, 0xB2BD, 0x6B66, 0xCEE4,
+	0x6B67, 0xC6E7, 0x6B68, 0x9A68, 0x6B69, 0x9A69, 0x6B6A, 0xCDE1,
+	0x6B6B, 0x9A6A, 0x6B6C, 0x9A6B, 0x6B6D, 0x9A6C, 0x6B6E, 0x9A6D,
+	0x6B6F, 0x9A6E, 0x6B70, 0x9A6F, 0x6B71, 0x9A70, 0x6B72, 0x9A71,
+	0x6B73, 0x9A72, 0x6B74, 0x9A73, 0x6B75, 0x9A74, 0x6B76, 0x9A75,
+	0x6B77, 0x9A76, 0x6B78, 0x9A77, 0x6B79, 0xB4F5, 0x6B7A, 0x9A78,
+	0x6B7B, 0xCBC0, 0x6B7C, 0xBCDF, 0x6B7D, 0x9A79, 0x6B7E, 0x9A7A,
+	0x6B7F, 0x9A7B, 0x6B80, 0x9A7C, 0x6B81, 0xE9E2, 0x6B82, 0xE9E3,
+	0x6B83, 0xD1EA, 0x6B84, 0xE9E5, 0x6B85, 0x9A7D, 0x6B86, 0xB4F9,
+	0x6B87, 0xE9E4, 0x6B88, 0x9A7E, 0x6B89, 0xD1B3, 0x6B8A, 0xCAE2,
+	0x6B8B, 0xB2D0, 0x6B8C, 0x9A80, 0x6B8D, 0xE9E8, 0x6B8E, 0x9A81,
+	0x6B8F, 0x9A82, 0x6B90, 0x9A83, 0x6B91, 0x9A84, 0x6B92, 0xE9E6,
+	0x6B93, 0xE9E7, 0x6B94, 0x9A85, 0x6B95, 0x9A86, 0x6B96, 0xD6B3,
+	0x6B97, 0x9A87, 0x6B98, 0x9A88, 0x6B99, 0x9A89, 0x6B9A, 0xE9E9,
+	0x6B9B, 0xE9EA, 0x6B9C, 0x9A8A, 0x6B9D, 0x9A8B, 0x6B9E, 0x9A8C,
+	0x6B9F, 0x9A8D, 0x6BA0, 0x9A8E, 0x6BA1, 0xE9EB, 0x6BA2, 0x9A8F,
+	0x6BA3, 0x9A90, 0x6BA4, 0x9A91, 0x6BA5, 0x9A92, 0x6BA6, 0x9A93,
+	0x6BA7, 0x9A94, 0x6BA8, 0x9A95, 0x6BA9, 0x9A96, 0x6BAA, 0xE9EC,
+	0x6BAB, 0x9A97, 0x6BAC, 0x9A98, 0x6BAD, 0x9A99, 0x6BAE, 0x9A9A,
+	0x6BAF, 0x9A9B, 0x6BB0, 0x9A9C, 0x6BB1, 0x9A9D, 0x6BB2, 0x9A9E,
+	0x6BB3, 0xECAF, 0x6BB4, 0xC5B9, 0x6BB5, 0xB6CE, 0x6BB6, 0x9A9F,
+	0x6BB7, 0xD2F3, 0x6BB8, 0x9AA0, 0x6BB9, 0x9AA1, 0x6BBA, 0x9AA2,
+	0x6BBB, 0x9AA3, 0x6BBC, 0x9AA4, 0x6BBD, 0x9AA5, 0x6BBE, 0x9AA6,
+	0x6BBF, 0xB5EE, 0x6BC0, 0x9AA7, 0x6BC1, 0xBBD9, 0x6BC2, 0xECB1,
+	0x6BC3, 0x9AA8, 0x6BC4, 0x9AA9, 0x6BC5, 0xD2E3, 0x6BC6, 0x9AAA,
+	0x6BC7, 0x9AAB, 0x6BC8, 0x9AAC, 0x6BC9, 0x9AAD, 0x6BCA, 0x9AAE,
+	0x6BCB, 0xCEE3, 0x6BCC, 0x9AAF, 0x6BCD, 0xC4B8, 0x6BCE, 0x9AB0,
+	0x6BCF, 0xC3BF, 0x6BD0, 0x9AB1, 0x6BD1, 0x9AB2, 0x6BD2, 0xB6BE,
+	0x6BD3, 0xD8B9, 0x6BD4, 0xB1C8, 0x6BD5, 0xB1CF, 0x6BD6, 0xB1D1,
+	0x6BD7, 0xC5FE, 0x6BD8, 0x9AB3, 0x6BD9, 0xB1D0, 0x6BDA, 0x9AB4,
+	0x6BDB, 0xC3AB, 0x6BDC, 0x9AB5, 0x6BDD, 0x9AB6, 0x6BDE, 0x9AB7,
+	0x6BDF, 0x9AB8, 0x6BE0, 0x9AB9, 0x6BE1, 0xD5B1, 0x6BE2, 0x9ABA,
+	0x6BE3, 0x9ABB, 0x6BE4, 0x9ABC, 0x6BE5, 0x9ABD, 0x6BE6, 0x9ABE,
+	0x6BE7, 0x9ABF, 0x6BE8, 0x9AC0, 0x6BE9, 0x9AC1, 0x6BEA, 0xEBA4,
+	0x6BEB, 0xBAC1, 0x6BEC, 0x9AC2, 0x6BED, 0x9AC3, 0x6BEE, 0x9AC4,
+	0x6BEF, 0xCCBA, 0x6BF0, 0x9AC5, 0x6BF1, 0x9AC6, 0x6BF2, 0x9AC7,
+	0x6BF3, 0xEBA5, 0x6BF4, 0x9AC8, 0x6BF5, 0xEBA7, 0x6BF6, 0x9AC9,
+	0x6BF7, 0x9ACA, 0x6BF8, 0x9ACB, 0x6BF9, 0xEBA8, 0x6BFA, 0x9ACC,
+	0x6BFB, 0x9ACD, 0x6BFC, 0x9ACE, 0x6BFD, 0xEBA6, 0x6BFE, 0x9ACF,
+	0x6BFF, 0x9AD0, 0x6C00, 0x9AD1, 0x6C01, 0x9AD2, 0x6C02, 0x9AD3,
+	0x6C03, 0x9AD4, 0x6C04, 0x9AD5, 0x6C05, 0xEBA9, 0x6C06, 0xEBAB,
+	0x6C07, 0xEBAA, 0x6C08, 0x9AD6, 0x6C09, 0x9AD7, 0x6C0A, 0x9AD8,
+	0x6C0B, 0x9AD9, 0x6C0C, 0x9ADA, 0x6C0D, 0xEBAC, 0x6C0E, 0x9ADB,
+	0x6C0F, 0xCACF, 0x6C10, 0xD8B5, 0x6C11, 0xC3F1, 0x6C12, 0x9ADC,
+	0x6C13, 0xC3A5, 0x6C14, 0xC6F8, 0x6C15, 0xEBAD, 0x6C16, 0xC4CA,
+	0x6C17, 0x9ADD, 0x6C18, 0xEBAE, 0x6C19, 0xEBAF, 0x6C1A, 0xEBB0,
+	0x6C1B, 0xB7D5, 0x6C1C, 0x9ADE, 0x6C1D, 0x9ADF, 0x6C1E, 0x9AE0,
+	0x6C1F, 0xB7FA, 0x6C20, 0x9AE1, 0x6C21, 0xEBB1, 0x6C22, 0xC7E2,
+	0x6C23, 0x9AE2, 0x6C24, 0xEBB3, 0x6C25, 0x9AE3, 0x6C26, 0xBAA4,
+	0x6C27, 0xD1F5, 0x6C28, 0xB0B1, 0x6C29, 0xEBB2, 0x6C2A, 0xEBB4,
+	0x6C2B, 0x9AE4, 0x6C2C, 0x9AE5, 0x6C2D, 0x9AE6, 0x6C2E, 0xB5AA,
+	0x6C2F, 0xC2C8, 0x6C30, 0xC7E8, 0x6C31, 0x9AE7, 0x6C32, 0xEBB5,
+	0x6C33, 0x9AE8, 0x6C34, 0xCBAE, 0x6C35, 0xE3DF, 0x6C36, 0x9AE9,
+	0x6C37, 0x9AEA, 0x6C38, 0xD3C0, 0x6C39, 0x9AEB, 0x6C3A, 0x9AEC,
+	0x6C3B, 0x9AED, 0x6C3C, 0x9AEE, 0x6C3D, 0xD9DB, 0x6C3E, 0x9AEF,
+	0x6C3F, 0x9AF0, 0x6C40, 0xCDA1, 0x6C41, 0xD6AD, 0x6C42, 0xC7F3,
+	0x6C43, 0x9AF1, 0x6C44, 0x9AF2, 0x6C45, 0x9AF3, 0x6C46, 0xD9E0,
+	0x6C47, 0xBBE3, 0x6C48, 0x9AF4, 0x6C49, 0xBABA, 0x6C4A, 0xE3E2,
+	0x6C4B, 0x9AF5, 0x6C4C, 0x9AF6, 0x6C4D, 0x9AF7, 0x6C4E, 0x9AF8,
+	0x6C4F, 0x9AF9, 0x6C50, 0xCFAB, 0x6C51, 0x9AFA, 0x6C52, 0x9AFB,
+	0x6C53, 0x9AFC, 0x6C54, 0xE3E0, 0x6C55, 0xC9C7, 0x6C56, 0x9AFD,
+	0x6C57, 0xBAB9, 0x6C58, 0x9AFE, 0x6C59, 0x9B40, 0x6C5A, 0x9B41,
+	0x6C5B, 0xD1B4, 0x6C5C, 0xE3E1, 0x6C5D, 0xC8EA, 0x6C5E, 0xB9AF,
+	0x6C5F, 0xBDAD, 0x6C60, 0xB3D8, 0x6C61, 0xCEDB, 0x6C62, 0x9B42,
+	0x6C63, 0x9B43, 0x6C64, 0xCCC0, 0x6C65, 0x9B44, 0x6C66, 0x9B45,
+	0x6C67, 0x9B46, 0x6C68, 0xE3E8, 0x6C69, 0xE3E9, 0x6C6A, 0xCDF4,
+	0x6C6B, 0x9B47, 0x6C6C, 0x9B48, 0x6C6D, 0x9B49, 0x6C6E, 0x9B4A,
+	0x6C6F, 0x9B4B, 0x6C70, 0xCCAD, 0x6C71, 0x9B4C, 0x6C72, 0xBCB3,
+	0x6C73, 0x9B4D, 0x6C74, 0xE3EA, 0x6C75, 0x9B4E, 0x6C76, 0xE3EB,
+	0x6C77, 0x9B4F, 0x6C78, 0x9B50, 0x6C79, 0xD0DA, 0x6C7A, 0x9B51,
+	0x6C7B, 0x9B52, 0x6C7C, 0x9B53, 0x6C7D, 0xC6FB, 0x6C7E, 0xB7DA,
+	0x6C7F, 0x9B54, 0x6C80, 0x9B55, 0x6C81, 0xC7DF, 0x6C82, 0xD2CA,
+	0x6C83, 0xCED6, 0x6C84, 0x9B56, 0x6C85, 0xE3E4, 0x6C86, 0xE3EC,
+	0x6C87, 0x9B57, 0x6C88, 0xC9F2, 0x6C89, 0xB3C1, 0x6C8A, 0x9B58,
+	0x6C8B, 0x9B59, 0x6C8C, 0xE3E7, 0x6C8D, 0x9B5A, 0x6C8E, 0x9B5B,
+	0x6C8F, 0xC6E3, 0x6C90, 0xE3E5, 0x6C91, 0x9B5C, 0x6C92, 0x9B5D,
+	0x6C93, 0xEDB3, 0x6C94, 0xE3E6, 0x6C95, 0x9B5E, 0x6C96, 0x9B5F,
+	0x6C97, 0x9B60, 0x6C98, 0x9B61, 0x6C99, 0xC9B3, 0x6C9A, 0x9B62,
+	0x6C9B, 0xC5E6, 0x6C9C, 0x9B63, 0x6C9D, 0x9B64, 0x6C9E, 0x9B65,
+	0x6C9F, 0xB9B5, 0x6CA0, 0x9B66, 0x6CA1, 0xC3BB, 0x6CA2, 0x9B67,
+	0x6CA3, 0xE3E3, 0x6CA4, 0xC5BD, 0x6CA5, 0xC1A4, 0x6CA6, 0xC2D9,
+	0x6CA7, 0xB2D7, 0x6CA8, 0x9B68, 0x6CA9, 0xE3ED, 0x6CAA, 0xBBA6,
+	0x6CAB, 0xC4AD, 0x6CAC, 0x9B69, 0x6CAD, 0xE3F0, 0x6CAE, 0xBEDA,
+	0x6CAF, 0x9B6A, 0x6CB0, 0x9B6B, 0x6CB1, 0xE3FB, 0x6CB2, 0xE3F5,
+	0x6CB3, 0xBAD3, 0x6CB4, 0x9B6C, 0x6CB5, 0x9B6D, 0x6CB6, 0x9B6E,
+	0x6CB7, 0x9B6F, 0x6CB8, 0xB7D0, 0x6CB9, 0xD3CD, 0x6CBA, 0x9B70,
+	0x6CBB, 0xD6CE, 0x6CBC, 0xD5D3, 0x6CBD, 0xB9C1, 0x6CBE, 0xD5B4,
+	0x6CBF, 0xD1D8, 0x6CC0, 0x9B71, 0x6CC1, 0x9B72, 0x6CC2, 0x9B73,
+	0x6CC3, 0x9B74, 0x6CC4, 0xD0B9, 0x6CC5, 0xC7F6, 0x6CC6, 0x9B75,
+	0x6CC7, 0x9B76, 0x6CC8, 0x9B77, 0x6CC9, 0xC8AA, 0x6CCA, 0xB2B4,
+	0x6CCB, 0x9B78, 0x6CCC, 0xC3DA, 0x6CCD, 0x9B79, 0x6CCE, 0x9B7A,
+	0x6CCF, 0x9B7B, 0x6CD0, 0xE3EE, 0x6CD1, 0x9B7C, 0x6CD2, 0x9B7D,
+	0x6CD3, 0xE3FC, 0x6CD4, 0xE3EF, 0x6CD5, 0xB7A8, 0x6CD6, 0xE3F7,
+	0x6CD7, 0xE3F4, 0x6CD8, 0x9B7E, 0x6CD9, 0x9B80, 0x6CDA, 0x9B81,
+	0x6CDB, 0xB7BA, 0x6CDC, 0x9B82, 0x6CDD, 0x9B83, 0x6CDE, 0xC5A2,
+	0x6CDF, 0x9B84, 0x6CE0, 0xE3F6, 0x6CE1, 0xC5DD, 0x6CE2, 0xB2A8,
+	0x6CE3, 0xC6FC, 0x6CE4, 0x9B85, 0x6CE5, 0xC4E0, 0x6CE6, 0x9B86,
+	0x6CE7, 0x9B87, 0x6CE8, 0xD7A2, 0x6CE9, 0x9B88, 0x6CEA, 0xC0E1,
+	0x6CEB, 0xE3F9, 0x6CEC, 0x9B89, 0x6CED, 0x9B8A, 0x6CEE, 0xE3FA,
+	0x6CEF, 0xE3FD, 0x6CF0, 0xCCA9, 0x6CF1, 0xE3F3, 0x6CF2, 0x9B8B,
+	0x6CF3, 0xD3BE, 0x6CF4, 0x9B8C, 0x6CF5, 0xB1C3, 0x6CF6, 0xEDB4,
+	0x6CF7, 0xE3F1, 0x6CF8, 0xE3F2, 0x6CF9, 0x9B8D, 0x6CFA, 0xE3F8,
+	0x6CFB, 0xD0BA, 0x6CFC, 0xC6C3, 0x6CFD, 0xD4F3, 0x6CFE, 0xE3FE,
+	0x6CFF, 0x9B8E, 0x6D00, 0x9B8F, 0x6D01, 0xBDE0, 0x6D02, 0x9B90,
+	0x6D03, 0x9B91, 0x6D04, 0xE4A7, 0x6D05, 0x9B92, 0x6D06, 0x9B93,
+	0x6D07, 0xE4A6, 0x6D08, 0x9B94, 0x6D09, 0x9B95, 0x6D0A, 0x9B96,
+	0x6D0B, 0xD1F3, 0x6D0C, 0xE4A3, 0x6D0D, 0x9B97, 0x6D0E, 0xE4A9,
+	0x6D0F, 0x9B98, 0x6D10, 0x9B99, 0x6D11, 0x9B9A, 0x6D12, 0xC8F7,
+	0x6D13, 0x9B9B, 0x6D14, 0x9B9C, 0x6D15, 0x9B9D, 0x6D16, 0x9B9E,
+	0x6D17, 0xCFB4, 0x6D18, 0x9B9F, 0x6D19, 0xE4A8, 0x6D1A, 0xE4AE,
+	0x6D1B, 0xC2E5, 0x6D1C, 0x9BA0, 0x6D1D, 0x9BA1, 0x6D1E, 0xB6B4,
+	0x6D1F, 0x9BA2, 0x6D20, 0x9BA3, 0x6D21, 0x9BA4, 0x6D22, 0x9BA5,
+	0x6D23, 0x9BA6, 0x6D24, 0x9BA7, 0x6D25, 0xBDF2, 0x6D26, 0x9BA8,
+	0x6D27, 0xE4A2, 0x6D28, 0x9BA9, 0x6D29, 0x9BAA, 0x6D2A, 0xBAE9,
+	0x6D2B, 0xE4AA, 0x6D2C, 0x9BAB, 0x6D2D, 0x9BAC, 0x6D2E, 0xE4AC,
+	0x6D2F, 0x9BAD, 0x6D30, 0x9BAE, 0x6D31, 0xB6FD, 0x6D32, 0xD6DE,
+	0x6D33, 0xE4B2, 0x6D34, 0x9BAF, 0x6D35, 0xE4AD, 0x6D36, 0x9BB0,
+	0x6D37, 0x9BB1, 0x6D38, 0x9BB2, 0x6D39, 0xE4A1, 0x6D3A, 0x9BB3,
+	0x6D3B, 0xBBEE, 0x6D3C, 0xCDDD, 0x6D3D, 0xC7A2, 0x6D3E, 0xC5C9,
+	0x6D3F, 0x9BB4, 0x6D40, 0x9BB5, 0x6D41, 0xC1F7, 0x6D42, 0x9BB6,
+	0x6D43, 0xE4A4, 0x6D44, 0x9BB7, 0x6D45, 0xC7B3, 0x6D46, 0xBDAC,
+	0x6D47, 0xBDBD, 0x6D48, 0xE4A5, 0x6D49, 0x9BB8, 0x6D4A, 0xD7C7,
+	0x6D4B, 0xB2E2, 0x6D4C, 0x9BB9, 0x6D4D, 0xE4AB, 0x6D4E, 0xBCC3,
+	0x6D4F, 0xE4AF, 0x6D50, 0x9BBA, 0x6D51, 0xBBEB, 0x6D52, 0xE4B0,
+	0x6D53, 0xC5A8, 0x6D54, 0xE4B1, 0x6D55, 0x9BBB, 0x6D56, 0x9BBC,
+	0x6D57, 0x9BBD, 0x6D58, 0x9BBE, 0x6D59, 0xD5E3, 0x6D5A, 0xBFA3,
+	0x6D5B, 0x9BBF, 0x6D5C, 0xE4BA, 0x6D5D, 0x9BC0, 0x6D5E, 0xE4B7,
+	0x6D5F, 0x9BC1, 0x6D60, 0xE4BB, 0x6D61, 0x9BC2, 0x6D62, 0x9BC3,
+	0x6D63, 0xE4BD, 0x6D64, 0x9BC4, 0x6D65, 0x9BC5, 0x6D66, 0xC6D6,
+	0x6D67, 0x9BC6, 0x6D68, 0x9BC7, 0x6D69, 0xBAC6, 0x6D6A, 0xC0CB,
+	0x6D6B, 0x9BC8, 0x6D6C, 0x9BC9, 0x6D6D, 0x9BCA, 0x6D6E, 0xB8A1,
+	0x6D6F, 0xE4B4, 0x6D70, 0x9BCB, 0x6D71, 0x9BCC, 0x6D72, 0x9BCD,
+	0x6D73, 0x9BCE, 0x6D74, 0xD4A1, 0x6D75, 0x9BCF, 0x6D76, 0x9BD0,
+	0x6D77, 0xBAA3, 0x6D78, 0xBDFE, 0x6D79, 0x9BD1, 0x6D7A, 0x9BD2,
+	0x6D7B, 0x9BD3, 0x6D7C, 0xE4BC, 0x6D7D, 0x9BD4, 0x6D7E, 0x9BD5,
+	0x6D7F, 0x9BD6, 0x6D80, 0x9BD7, 0x6D81, 0x9BD8, 0x6D82, 0xCDBF,
+	0x6D83, 0x9BD9, 0x6D84, 0x9BDA, 0x6D85, 0xC4F9, 0x6D86, 0x9BDB,
+	0x6D87, 0x9BDC, 0x6D88, 0xCFFB, 0x6D89, 0xC9E6, 0x6D8A, 0x9BDD,
+	0x6D8B, 0x9BDE, 0x6D8C, 0xD3BF, 0x6D8D, 0x9BDF, 0x6D8E, 0xCFD1,
+	0x6D8F, 0x9BE0, 0x6D90, 0x9BE1, 0x6D91, 0xE4B3, 0x6D92, 0x9BE2,
+	0x6D93, 0xE4B8, 0x6D94, 0xE4B9, 0x6D95, 0xCCE9, 0x6D96, 0x9BE3,
+	0x6D97, 0x9BE4, 0x6D98, 0x9BE5, 0x6D99, 0x9BE6, 0x6D9A, 0x9BE7,
+	0x6D9B, 0xCCCE, 0x6D9C, 0x9BE8, 0x6D9D, 0xC0D4, 0x6D9E, 0xE4B5,
+	0x6D9F, 0xC1B0, 0x6DA0, 0xE4B6, 0x6DA1, 0xCED0, 0x6DA2, 0x9BE9,
+	0x6DA3, 0xBBC1, 0x6DA4, 0xB5D3, 0x6DA5, 0x9BEA, 0x6DA6, 0xC8F3,
+	0x6DA7, 0xBDA7, 0x6DA8, 0xD5C7, 0x6DA9, 0xC9AC, 0x6DAA, 0xB8A2,
+	0x6DAB, 0xE4CA, 0x6DAC, 0x9BEB, 0x6DAD, 0x9BEC, 0x6DAE, 0xE4CC,
+	0x6DAF, 0xD1C4, 0x6DB0, 0x9BED, 0x6DB1, 0x9BEE, 0x6DB2, 0xD2BA,
+	0x6DB3, 0x9BEF, 0x6DB4, 0x9BF0, 0x6DB5, 0xBAAD, 0x6DB6, 0x9BF1,
+	0x6DB7, 0x9BF2, 0x6DB8, 0xBAD4, 0x6DB9, 0x9BF3, 0x6DBA, 0x9BF4,
+	0x6DBB, 0x9BF5, 0x6DBC, 0x9BF6, 0x6DBD, 0x9BF7, 0x6DBE, 0x9BF8,
+	0x6DBF, 0xE4C3, 0x6DC0, 0xB5ED, 0x6DC1, 0x9BF9, 0x6DC2, 0x9BFA,
+	0x6DC3, 0x9BFB, 0x6DC4, 0xD7CD, 0x6DC5, 0xE4C0, 0x6DC6, 0xCFFD,
+	0x6DC7, 0xE4BF, 0x6DC8, 0x9BFC, 0x6DC9, 0x9BFD, 0x6DCA, 0x9BFE,
+	0x6DCB, 0xC1DC, 0x6DCC, 0xCCCA, 0x6DCD, 0x9C40, 0x6DCE, 0x9C41,
+	0x6DCF, 0x9C42, 0x6DD0, 0x9C43, 0x6DD1, 0xCAE7, 0x6DD2, 0x9C44,
+	0x6DD3, 0x9C45, 0x6DD4, 0x9C46, 0x6DD5, 0x9C47, 0x6DD6, 0xC4D7,
+	0x6DD7, 0x9C48, 0x6DD8, 0xCCD4, 0x6DD9, 0xE4C8, 0x6DDA, 0x9C49,
+	0x6DDB, 0x9C4A, 0x6DDC, 0x9C4B, 0x6DDD, 0xE4C7, 0x6DDE, 0xE4C1,
+	0x6DDF, 0x9C4C, 0x6DE0, 0xE4C4, 0x6DE1, 0xB5AD, 0x6DE2, 0x9C4D,
+	0x6DE3, 0x9C4E, 0x6DE4, 0xD3D9, 0x6DE5, 0x9C4F, 0x6DE6, 0xE4C6,
+	0x6DE7, 0x9C50, 0x6DE8, 0x9C51, 0x6DE9, 0x9C52, 0x6DEA, 0x9C53,
+	0x6DEB, 0xD2F9, 0x6DEC, 0xB4E3, 0x6DED, 0x9C54, 0x6DEE, 0xBBB4,
+	0x6DEF, 0x9C55, 0x6DF0, 0x9C56, 0x6DF1, 0xC9EE, 0x6DF2, 0x9C57,
+	0x6DF3, 0xB4BE, 0x6DF4, 0x9C58, 0x6DF5, 0x9C59, 0x6DF6, 0x9C5A,
+	0x6DF7, 0xBBEC, 0x6DF8, 0x9C5B, 0x6DF9, 0xD1CD, 0x6DFA, 0x9C5C,
+	0x6DFB, 0xCCED, 0x6DFC, 0xEDB5, 0x6DFD, 0x9C5D, 0x6DFE, 0x9C5E,
+	0x6DFF, 0x9C5F, 0x6E00, 0x9C60, 0x6E01, 0x9C61, 0x6E02, 0x9C62,
+	0x6E03, 0x9C63, 0x6E04, 0x9C64, 0x6E05, 0xC7E5, 0x6E06, 0x9C65,
+	0x6E07, 0x9C66, 0x6E08, 0x9C67, 0x6E09, 0x9C68, 0x6E0A, 0xD4A8,
+	0x6E0B, 0x9C69, 0x6E0C, 0xE4CB, 0x6E0D, 0xD7D5, 0x6E0E, 0xE4C2,
+	0x6E0F, 0x9C6A, 0x6E10, 0xBDA5, 0x6E11, 0xE4C5, 0x6E12, 0x9C6B,
+	0x6E13, 0x9C6C, 0x6E14, 0xD3E6, 0x6E15, 0x9C6D, 0x6E16, 0xE4C9,
+	0x6E17, 0xC9F8, 0x6E18, 0x9C6E, 0x6E19, 0x9C6F, 0x6E1A, 0xE4BE,
+	0x6E1B, 0x9C70, 0x6E1C, 0x9C71, 0x6E1D, 0xD3E5, 0x6E1E, 0x9C72,
+	0x6E1F, 0x9C73, 0x6E20, 0xC7FE, 0x6E21, 0xB6C9, 0x6E22, 0x9C74,
+	0x6E23, 0xD4FC, 0x6E24, 0xB2B3, 0x6E25, 0xE4D7, 0x6E26, 0x9C75,
+	0x6E27, 0x9C76, 0x6E28, 0x9C77, 0x6E29, 0xCEC2, 0x6E2A, 0x9C78,
+	0x6E2B, 0xE4CD, 0x6E2C, 0x9C79, 0x6E2D, 0xCEBC, 0x6E2E, 0x9C7A,
+	0x6E2F, 0xB8DB, 0x6E30, 0x9C7B, 0x6E31, 0x9C7C, 0x6E32, 0xE4D6,
+	0x6E33, 0x9C7D, 0x6E34, 0xBFCA, 0x6E35, 0x9C7E, 0x6E36, 0x9C80,
+	0x6E37, 0x9C81, 0x6E38, 0xD3CE, 0x6E39, 0x9C82, 0x6E3A, 0xC3EC,
+	0x6E3B, 0x9C83, 0x6E3C, 0x9C84, 0x6E3D, 0x9C85, 0x6E3E, 0x9C86,
+	0x6E3F, 0x9C87, 0x6E40, 0x9C88, 0x6E41, 0x9C89, 0x6E42, 0x9C8A,
+	0x6E43, 0xC5C8, 0x6E44, 0xE4D8, 0x6E45, 0x9C8B, 0x6E46, 0x9C8C,
+	0x6E47, 0x9C8D, 0x6E48, 0x9C8E, 0x6E49, 0x9C8F, 0x6E4A, 0x9C90,
+	0x6E4B, 0x9C91, 0x6E4C, 0x9C92, 0x6E4D, 0xCDC4, 0x6E4E, 0xE4CF,
+	0x6E4F, 0x9C93, 0x6E50, 0x9C94, 0x6E51, 0x9C95, 0x6E52, 0x9C96,
+	0x6E53, 0xE4D4, 0x6E54, 0xE4D5, 0x6E55, 0x9C97, 0x6E56, 0xBAFE,
+	0x6E57, 0x9C98, 0x6E58, 0xCFE6, 0x6E59, 0x9C99, 0x6E5A, 0x9C9A,
+	0x6E5B, 0xD5BF, 0x6E5C, 0x9C9B, 0x6E5D, 0x9C9C, 0x6E5E, 0x9C9D,
+	0x6E5F, 0xE4D2, 0x6E60, 0x9C9E, 0x6E61, 0x9C9F, 0x6E62, 0x9CA0,
+	0x6E63, 0x9CA1, 0x6E64, 0x9CA2, 0x6E65, 0x9CA3, 0x6E66, 0x9CA4,
+	0x6E67, 0x9CA5, 0x6E68, 0x9CA6, 0x6E69, 0x9CA7, 0x6E6A, 0x9CA8,
+	0x6E6B, 0xE4D0, 0x6E6C, 0x9CA9, 0x6E6D, 0x9CAA, 0x6E6E, 0xE4CE,
+	0x6E6F, 0x9CAB, 0x6E70, 0x9CAC, 0x6E71, 0x9CAD, 0x6E72, 0x9CAE,
+	0x6E73, 0x9CAF, 0x6E74, 0x9CB0, 0x6E75, 0x9CB1, 0x6E76, 0x9CB2,
+	0x6E77, 0x9CB3, 0x6E78, 0x9CB4, 0x6E79, 0x9CB5, 0x6E7A, 0x9CB6,
+	0x6E7B, 0x9CB7, 0x6E7C, 0x9CB8, 0x6E7D, 0x9CB9, 0x6E7E, 0xCDE5,
+	0x6E7F, 0xCAAA, 0x6E80, 0x9CBA, 0x6E81, 0x9CBB, 0x6E82, 0x9CBC,
+	0x6E83, 0xC0A3, 0x6E84, 0x9CBD, 0x6E85, 0xBDA6, 0x6E86, 0xE4D3,
+	0x6E87, 0x9CBE, 0x6E88, 0x9CBF, 0x6E89, 0xB8C8, 0x6E8A, 0x9CC0,
+	0x6E8B, 0x9CC1, 0x6E8C, 0x9CC2, 0x6E8D, 0x9CC3, 0x6E8E, 0x9CC4,
+	0x6E8F, 0xE4E7, 0x6E90, 0xD4B4, 0x6E91, 0x9CC5, 0x6E92, 0x9CC6,
+	0x6E93, 0x9CC7, 0x6E94, 0x9CC8, 0x6E95, 0x9CC9, 0x6E96, 0x9CCA,
+	0x6E97, 0x9CCB, 0x6E98, 0xE4DB, 0x6E99, 0x9CCC, 0x6E9A, 0x9CCD,
+	0x6E9B, 0x9CCE, 0x6E9C, 0xC1EF, 0x6E9D, 0x9CCF, 0x6E9E, 0x9CD0,
+	0x6E9F, 0xE4E9, 0x6EA0, 0x9CD1, 0x6EA1, 0x9CD2, 0x6EA2, 0xD2E7,
+	0x6EA3, 0x9CD3, 0x6EA4, 0x9CD4, 0x6EA5, 0xE4DF, 0x6EA6, 0x9CD5,
+	0x6EA7, 0xE4E0, 0x6EA8, 0x9CD6, 0x6EA9, 0x9CD7, 0x6EAA, 0xCFAA,
+	0x6EAB, 0x9CD8, 0x6EAC, 0x9CD9, 0x6EAD, 0x9CDA, 0x6EAE, 0x9CDB,
+	0x6EAF, 0xCBDD, 0x6EB0, 0x9CDC, 0x6EB1, 0xE4DA, 0x6EB2, 0xE4D1,
+	0x6EB3, 0x9CDD, 0x6EB4, 0xE4E5, 0x6EB5, 0x9CDE, 0x6EB6, 0xC8DC,
+	0x6EB7, 0xE4E3, 0x6EB8, 0x9CDF, 0x6EB9, 0x9CE0, 0x6EBA, 0xC4E7,
+	0x6EBB, 0xE4E2, 0x6EBC, 0x9CE1, 0x6EBD, 0xE4E1, 0x6EBE, 0x9CE2,
+	0x6EBF, 0x9CE3, 0x6EC0, 0x9CE4, 0x6EC1, 0xB3FC, 0x6EC2, 0xE4E8,
+	0x6EC3, 0x9CE5, 0x6EC4, 0x9CE6, 0x6EC5, 0x9CE7, 0x6EC6, 0x9CE8,
+	0x6EC7, 0xB5E1, 0x6EC8, 0x9CE9, 0x6EC9, 0x9CEA, 0x6ECA, 0x9CEB,
+	0x6ECB, 0xD7CC, 0x6ECC, 0x9CEC, 0x6ECD, 0x9CED, 0x6ECE, 0x9CEE,
+	0x6ECF, 0xE4E6, 0x6ED0, 0x9CEF, 0x6ED1, 0xBBAC, 0x6ED2, 0x9CF0,
+	0x6ED3, 0xD7D2, 0x6ED4, 0xCCCF, 0x6ED5, 0xEBF8, 0x6ED6, 0x9CF1,
+	0x6ED7, 0xE4E4, 0x6ED8, 0x9CF2, 0x6ED9, 0x9CF3, 0x6EDA, 0xB9F6,
+	0x6EDB, 0x9CF4, 0x6EDC, 0x9CF5, 0x6EDD, 0x9CF6, 0x6EDE, 0xD6CD,
+	0x6EDF, 0xE4D9, 0x6EE0, 0xE4DC, 0x6EE1, 0xC2FA, 0x6EE2, 0xE4DE,
+	0x6EE3, 0x9CF7, 0x6EE4, 0xC2CB, 0x6EE5, 0xC0C4, 0x6EE6, 0xC2D0,
+	0x6EE7, 0x9CF8, 0x6EE8, 0xB1F5, 0x6EE9, 0xCCB2, 0x6EEA, 0x9CF9,
+	0x6EEB, 0x9CFA, 0x6EEC, 0x9CFB, 0x6EED, 0x9CFC, 0x6EEE, 0x9CFD,
+	0x6EEF, 0x9CFE, 0x6EF0, 0x9D40, 0x6EF1, 0x9D41, 0x6EF2, 0x9D42,
+	0x6EF3, 0x9D43, 0x6EF4, 0xB5CE, 0x6EF5, 0x9D44, 0x6EF6, 0x9D45,
+	0x6EF7, 0x9D46, 0x6EF8, 0x9D47, 0x6EF9, 0xE4EF, 0x6EFA, 0x9D48,
+	0x6EFB, 0x9D49, 0x6EFC, 0x9D4A, 0x6EFD, 0x9D4B, 0x6EFE, 0x9D4C,
+	0x6EFF, 0x9D4D, 0x6F00, 0x9D4E, 0x6F01, 0x9D4F, 0x6F02, 0xC6AF,
+	0x6F03, 0x9D50, 0x6F04, 0x9D51, 0x6F05, 0x9D52, 0x6F06, 0xC6E1,
+	0x6F07, 0x9D53, 0x6F08, 0x9D54, 0x6F09, 0xE4F5, 0x6F0A, 0x9D55,
+	0x6F0B, 0x9D56, 0x6F0C, 0x9D57, 0x6F0D, 0x9D58, 0x6F0E, 0x9D59,
+	0x6F0F, 0xC2A9, 0x6F10, 0x9D5A, 0x6F11, 0x9D5B, 0x6F12, 0x9D5C,
+	0x6F13, 0xC0EC, 0x6F14, 0xD1DD, 0x6F15, 0xE4EE, 0x6F16, 0x9D5D,
+	0x6F17, 0x9D5E, 0x6F18, 0x9D5F, 0x6F19, 0x9D60, 0x6F1A, 0x9D61,
+	0x6F1B, 0x9D62, 0x6F1C, 0x9D63, 0x6F1D, 0x9D64, 0x6F1E, 0x9D65,
+	0x6F1F, 0x9D66, 0x6F20, 0xC4AE, 0x6F21, 0x9D67, 0x6F22, 0x9D68,
+	0x6F23, 0x9D69, 0x6F24, 0xE4ED, 0x6F25, 0x9D6A, 0x6F26, 0x9D6B,
+	0x6F27, 0x9D6C, 0x6F28, 0x9D6D, 0x6F29, 0xE4F6, 0x6F2A, 0xE4F4,
+	0x6F2B, 0xC2FE, 0x6F2C, 0x9D6E, 0x6F2D, 0xE4DD, 0x6F2E, 0x9D6F,
+	0x6F2F, 0xE4F0, 0x6F30, 0x9D70, 0x6F31, 0xCAFE, 0x6F32, 0x9D71,
+	0x6F33, 0xD5C4, 0x6F34, 0x9D72, 0x6F35, 0x9D73, 0x6F36, 0xE4F1,
+	0x6F37, 0x9D74, 0x6F38, 0x9D75, 0x6F39, 0x9D76, 0x6F3A, 0x9D77,
+	0x6F3B, 0x9D78, 0x6F3C, 0x9D79, 0x6F3D, 0x9D7A, 0x6F3E, 0xD1FA,
+	0x6F3F, 0x9D7B, 0x6F40, 0x9D7C, 0x6F41, 0x9D7D, 0x6F42, 0x9D7E,
+	0x6F43, 0x9D80, 0x6F44, 0x9D81, 0x6F45, 0x9D82, 0x6F46, 0xE4EB,
+	0x6F47, 0xE4EC, 0x6F48, 0x9D83, 0x6F49, 0x9D84, 0x6F4A, 0x9D85,
+	0x6F4B, 0xE4F2, 0x6F4C, 0x9D86, 0x6F4D, 0xCEAB, 0x6F4E, 0x9D87,
+	0x6F4F, 0x9D88, 0x6F50, 0x9D89, 0x6F51, 0x9D8A, 0x6F52, 0x9D8B,
+	0x6F53, 0x9D8C, 0x6F54, 0x9D8D, 0x6F55, 0x9D8E, 0x6F56, 0x9D8F,
+	0x6F57, 0x9D90, 0x6F58, 0xC5CB, 0x6F59, 0x9D91, 0x6F5A, 0x9D92,
+	0x6F5B, 0x9D93, 0x6F5C, 0xC7B1, 0x6F5D, 0x9D94, 0x6F5E, 0xC2BA,
+	0x6F5F, 0x9D95, 0x6F60, 0x9D96, 0x6F61, 0x9D97, 0x6F62, 0xE4EA,
+	0x6F63, 0x9D98, 0x6F64, 0x9D99, 0x6F65, 0x9D9A, 0x6F66, 0xC1CA,
+	0x6F67, 0x9D9B, 0x6F68, 0x9D9C, 0x6F69, 0x9D9D, 0x6F6A, 0x9D9E,
+	0x6F6B, 0x9D9F, 0x6F6C, 0x9DA0, 0x6F6D, 0xCCB6, 0x6F6E, 0xB3B1,
+	0x6F6F, 0x9DA1, 0x6F70, 0x9DA2, 0x6F71, 0x9DA3, 0x6F72, 0xE4FB,
+	0x6F73, 0x9DA4, 0x6F74, 0xE4F3, 0x6F75, 0x9DA5, 0x6F76, 0x9DA6,
+	0x6F77, 0x9DA7, 0x6F78, 0xE4FA, 0x6F79, 0x9DA8, 0x6F7A, 0xE4FD,
+	0x6F7B, 0x9DA9, 0x6F7C, 0xE4FC, 0x6F7D, 0x9DAA, 0x6F7E, 0x9DAB,
+	0x6F7F, 0x9DAC, 0x6F80, 0x9DAD, 0x6F81, 0x9DAE, 0x6F82, 0x9DAF,
+	0x6F83, 0x9DB0, 0x6F84, 0xB3CE, 0x6F85, 0x9DB1, 0x6F86, 0x9DB2,
+	0x6F87, 0x9DB3, 0x6F88, 0xB3BA, 0x6F89, 0xE4F7, 0x6F8A, 0x9DB4,
+	0x6F8B, 0x9DB5, 0x6F8C, 0xE4F9, 0x6F8D, 0xE4F8, 0x6F8E, 0xC5EC,
+	0x6F8F, 0x9DB6, 0x6F90, 0x9DB7, 0x6F91, 0x9DB8, 0x6F92, 0x9DB9,
+	0x6F93, 0x9DBA, 0x6F94, 0x9DBB, 0x6F95, 0x9DBC, 0x6F96, 0x9DBD,
+	0x6F97, 0x9DBE, 0x6F98, 0x9DBF, 0x6F99, 0x9DC0, 0x6F9A, 0x9DC1,
+	0x6F9B, 0x9DC2, 0x6F9C, 0xC0BD, 0x6F9D, 0x9DC3, 0x6F9E, 0x9DC4,
+	0x6F9F, 0x9DC5, 0x6FA0, 0x9DC6, 0x6FA1, 0xD4E8, 0x6FA2, 0x9DC7,
+	0x6FA3, 0x9DC8, 0x6FA4, 0x9DC9, 0x6FA5, 0x9DCA, 0x6FA6, 0x9DCB,
+	0x6FA7, 0xE5A2, 0x6FA8, 0x9DCC, 0x6FA9, 0x9DCD, 0x6FAA, 0x9DCE,
+	0x6FAB, 0x9DCF, 0x6FAC, 0x9DD0, 0x6FAD, 0x9DD1, 0x6FAE, 0x9DD2,
+	0x6FAF, 0x9DD3, 0x6FB0, 0x9DD4, 0x6FB1, 0x9DD5, 0x6FB2, 0x9DD6,
+	0x6FB3, 0xB0C4, 0x6FB4, 0x9DD7, 0x6FB5, 0x9DD8, 0x6FB6, 0xE5A4,
+	0x6FB7, 0x9DD9, 0x6FB8, 0x9DDA, 0x6FB9, 0xE5A3, 0x6FBA, 0x9DDB,
+	0x6FBB, 0x9DDC, 0x6FBC, 0x9DDD, 0x6FBD, 0x9DDE, 0x6FBE, 0x9DDF,
+	0x6FBF, 0x9DE0, 0x6FC0, 0xBCA4, 0x6FC1, 0x9DE1, 0x6FC2, 0xE5A5,
+	0x6FC3, 0x9DE2, 0x6FC4, 0x9DE3, 0x6FC5, 0x9DE4, 0x6FC6, 0x9DE5,
+	0x6FC7, 0x9DE6, 0x6FC8, 0x9DE7, 0x6FC9, 0xE5A1, 0x6FCA, 0x9DE8,
+	0x6FCB, 0x9DE9, 0x6FCC, 0x9DEA, 0x6FCD, 0x9DEB, 0x6FCE, 0x9DEC,
+	0x6FCF, 0x9DED, 0x6FD0, 0x9DEE, 0x6FD1, 0xE4FE, 0x6FD2, 0xB1F4,
+	0x6FD3, 0x9DEF, 0x6FD4, 0x9DF0, 0x6FD5, 0x9DF1, 0x6FD6, 0x9DF2,
+	0x6FD7, 0x9DF3, 0x6FD8, 0x9DF4, 0x6FD9, 0x9DF5, 0x6FDA, 0x9DF6,
+	0x6FDB, 0x9DF7, 0x6FDC, 0x9DF8, 0x6FDD, 0x9DF9, 0x6FDE, 0xE5A8,
+	0x6FDF, 0x9DFA, 0x6FE0, 0xE5A9, 0x6FE1, 0xE5A6, 0x6FE2, 0x9DFB,
+	0x6FE3, 0x9DFC, 0x6FE4, 0x9DFD, 0x6FE5, 0x9DFE, 0x6FE6, 0x9E40,
+	0x6FE7, 0x9E41, 0x6FE8, 0x9E42, 0x6FE9, 0x9E43, 0x6FEA, 0x9E44,
+	0x6FEB, 0x9E45, 0x6FEC, 0x9E46, 0x6FED, 0x9E47, 0x6FEE, 0xE5A7,
+	0x6FEF, 0xE5AA, 0x6FF0, 0x9E48, 0x6FF1, 0x9E49, 0x6FF2, 0x9E4A,
+	0x6FF3, 0x9E4B, 0x6FF4, 0x9E4C, 0x6FF5, 0x9E4D, 0x6FF6, 0x9E4E,
+	0x6FF7, 0x9E4F, 0x6FF8, 0x9E50, 0x6FF9, 0x9E51, 0x6FFA, 0x9E52,
+	0x6FFB, 0x9E53, 0x6FFC, 0x9E54, 0x6FFD, 0x9E55, 0x6FFE, 0x9E56,
+	0x6FFF, 0x9E57, 0x7000, 0x9E58, 0x7001, 0x9E59, 0x7002, 0x9E5A,
+	0x7003, 0x9E5B, 0x7004, 0x9E5C, 0x7005, 0x9E5D, 0x7006, 0x9E5E,
+	0x7007, 0x9E5F, 0x7008, 0x9E60, 0x7009, 0x9E61, 0x700A, 0x9E62,
+	0x700B, 0x9E63, 0x700C, 0x9E64, 0x700D, 0x9E65, 0x700E, 0x9E66,
+	0x700F, 0x9E67, 0x7010, 0x9E68, 0x7011, 0xC6D9, 0x7012, 0x9E69,
+	0x7013, 0x9E6A, 0x7014, 0x9E6B, 0x7015, 0x9E6C, 0x7016, 0x9E6D,
+	0x7017, 0x9E6E, 0x7018, 0x9E6F, 0x7019, 0x9E70, 0x701A, 0xE5AB,
+	0x701B, 0xE5AD, 0x701C, 0x9E71, 0x701D, 0x9E72, 0x701E, 0x9E73,
+	0x701F, 0x9E74, 0x7020, 0x9E75, 0x7021, 0x9E76, 0x7022, 0x9E77,
+	0x7023, 0xE5AC, 0x7024, 0x9E78, 0x7025, 0x9E79, 0x7026, 0x9E7A,
+	0x7027, 0x9E7B, 0x7028, 0x9E7C, 0x7029, 0x9E7D, 0x702A, 0x9E7E,
+	0x702B, 0x9E80, 0x702C, 0x9E81, 0x702D, 0x9E82, 0x702E, 0x9E83,
+	0x702F, 0x9E84, 0x7030, 0x9E85, 0x7031, 0x9E86, 0x7032, 0x9E87,
+	0x7033, 0x9E88, 0x7034, 0x9E89, 0x7035, 0xE5AF, 0x7036, 0x9E8A,
+	0x7037, 0x9E8B, 0x7038, 0x9E8C, 0x7039, 0xE5AE, 0x703A, 0x9E8D,
+	0x703B, 0x9E8E, 0x703C, 0x9E8F, 0x703D, 0x9E90, 0x703E, 0x9E91,
+	0x703F, 0x9E92, 0x7040, 0x9E93, 0x7041, 0x9E94, 0x7042, 0x9E95,
+	0x7043, 0x9E96, 0x7044, 0x9E97, 0x7045, 0x9E98, 0x7046, 0x9E99,
+	0x7047, 0x9E9A, 0x7048, 0x9E9B, 0x7049, 0x9E9C, 0x704A, 0x9E9D,
+	0x704B, 0x9E9E, 0x704C, 0xB9E0, 0x704D, 0x9E9F, 0x704E, 0x9EA0,
+	0x704F, 0xE5B0, 0x7050, 0x9EA1, 0x7051, 0x9EA2, 0x7052, 0x9EA3,
+	0x7053, 0x9EA4, 0x7054, 0x9EA5, 0x7055, 0x9EA6, 0x7056, 0x9EA7,
+	0x7057, 0x9EA8, 0x7058, 0x9EA9, 0x7059, 0x9EAA, 0x705A, 0x9EAB,
+	0x705B, 0x9EAC, 0x705C, 0x9EAD, 0x705D, 0x9EAE, 0x705E, 0xE5B1,
+	0x705F, 0x9EAF, 0x7060, 0x9EB0, 0x7061, 0x9EB1, 0x7062, 0x9EB2,
+	0x7063, 0x9EB3, 0x7064, 0x9EB4, 0x7065, 0x9EB5, 0x7066, 0x9EB6,
+	0x7067, 0x9EB7, 0x7068, 0x9EB8, 0x7069, 0x9EB9, 0x706A, 0x9EBA,
+	0x706B, 0xBBF0, 0x706C, 0xECE1, 0x706D, 0xC3F0, 0x706E, 0x9EBB,
+	0x706F, 0xB5C6, 0x7070, 0xBBD2, 0x7071, 0x9EBC, 0x7072, 0x9EBD,
+	0x7073, 0x9EBE, 0x7074, 0x9EBF, 0x7075, 0xC1E9, 0x7076, 0xD4EE,
+	0x7077, 0x9EC0, 0x7078, 0xBEC4, 0x7079, 0x9EC1, 0x707A, 0x9EC2,
+	0x707B, 0x9EC3, 0x707C, 0xD7C6, 0x707D, 0x9EC4, 0x707E, 0xD4D6,
+	0x707F, 0xB2D3, 0x7080, 0xECBE, 0x7081, 0x9EC5, 0x7082, 0x9EC6,
+	0x7083, 0x9EC7, 0x7084, 0x9EC8, 0x7085, 0xEAC1, 0x7086, 0x9EC9,
+	0x7087, 0x9ECA, 0x7088, 0x9ECB, 0x7089, 0xC2AF, 0x708A, 0xB4B6,
+	0x708B, 0x9ECC, 0x708C, 0x9ECD, 0x708D, 0x9ECE, 0x708E, 0xD1D7,
+	0x708F, 0x9ECF, 0x7090, 0x9ED0, 0x7091, 0x9ED1, 0x7092, 0xB3B4,
+	0x7093, 0x9ED2, 0x7094, 0xC8B2, 0x7095, 0xBFBB, 0x7096, 0xECC0,
+	0x7097, 0x9ED3, 0x7098, 0x9ED4, 0x7099, 0xD6CB, 0x709A, 0x9ED5,
+	0x709B, 0x9ED6, 0x709C, 0xECBF, 0x709D, 0xECC1, 0x709E, 0x9ED7,
+	0x709F, 0x9ED8, 0x70A0, 0x9ED9, 0x70A1, 0x9EDA, 0x70A2, 0x9EDB,
+	0x70A3, 0x9EDC, 0x70A4, 0x9EDD, 0x70A5, 0x9EDE, 0x70A6, 0x9EDF,
+	0x70A7, 0x9EE0, 0x70A8, 0x9EE1, 0x70A9, 0x9EE2, 0x70AA, 0x9EE3,
+	0x70AB, 0xECC5, 0x70AC, 0xBEE6, 0x70AD, 0xCCBF, 0x70AE, 0xC5DA,
+	0x70AF, 0xBEBC, 0x70B0, 0x9EE4, 0x70B1, 0xECC6, 0x70B2, 0x9EE5,
+	0x70B3, 0xB1FE, 0x70B4, 0x9EE6, 0x70B5, 0x9EE7, 0x70B6, 0x9EE8,
+	0x70B7, 0xECC4, 0x70B8, 0xD5A8, 0x70B9, 0xB5E3, 0x70BA, 0x9EE9,
+	0x70BB, 0xECC2, 0x70BC, 0xC1B6, 0x70BD, 0xB3E3, 0x70BE, 0x9EEA,
+	0x70BF, 0x9EEB, 0x70C0, 0xECC3, 0x70C1, 0xCBB8, 0x70C2, 0xC0C3,
+	0x70C3, 0xCCFE, 0x70C4, 0x9EEC, 0x70C5, 0x9EED, 0x70C6, 0x9EEE,
+	0x70C7, 0x9EEF, 0x70C8, 0xC1D2, 0x70C9, 0x9EF0, 0x70CA, 0xECC8,
+	0x70CB, 0x9EF1, 0x70CC, 0x9EF2, 0x70CD, 0x9EF3, 0x70CE, 0x9EF4,
+	0x70CF, 0x9EF5, 0x70D0, 0x9EF6, 0x70D1, 0x9EF7, 0x70D2, 0x9EF8,
+	0x70D3, 0x9EF9, 0x70D4, 0x9EFA, 0x70D5, 0x9EFB, 0x70D6, 0x9EFC,
+	0x70D7, 0x9EFD, 0x70D8, 0xBAE6, 0x70D9, 0xC0D3, 0x70DA, 0x9EFE,
+	0x70DB, 0xD6F2, 0x70DC, 0x9F40, 0x70DD, 0x9F41, 0x70DE, 0x9F42,
+	0x70DF, 0xD1CC, 0x70E0, 0x9F43, 0x70E1, 0x9F44, 0x70E2, 0x9F45,
+	0x70E3, 0x9F46, 0x70E4, 0xBFBE, 0x70E5, 0x9F47, 0x70E6, 0xB7B3,
+	0x70E7, 0xC9D5, 0x70E8, 0xECC7, 0x70E9, 0xBBE2, 0x70EA, 0x9F48,
+	0x70EB, 0xCCCC, 0x70EC, 0xBDFD, 0x70ED, 0xC8C8, 0x70EE, 0x9F49,
+	0x70EF, 0xCFA9, 0x70F0, 0x9F4A, 0x70F1, 0x9F4B, 0x70F2, 0x9F4C,
+	0x70F3, 0x9F4D, 0x70F4, 0x9F4E, 0x70F5, 0x9F4F, 0x70F6, 0x9F50,
+	0x70F7, 0xCDE9, 0x70F8, 0x9F51, 0x70F9, 0xC5EB, 0x70FA, 0x9F52,
+	0x70FB, 0x9F53, 0x70FC, 0x9F54, 0x70FD, 0xB7E9, 0x70FE, 0x9F55,
+	0x70FF, 0x9F56, 0x7100, 0x9F57, 0x7101, 0x9F58, 0x7102, 0x9F59,
+	0x7103, 0x9F5A, 0x7104, 0x9F5B, 0x7105, 0x9F5C, 0x7106, 0x9F5D,
+	0x7107, 0x9F5E, 0x7108, 0x9F5F, 0x7109, 0xD1C9, 0x710A, 0xBAB8,
+	0x710B, 0x9F60, 0x710C, 0x9F61, 0x710D, 0x9F62, 0x710E, 0x9F63,
+	0x710F, 0x9F64, 0x7110, 0xECC9, 0x7111, 0x9F65, 0x7112, 0x9F66,
+	0x7113, 0xECCA, 0x7114, 0x9F67, 0x7115, 0xBBC0, 0x7116, 0xECCB,
+	0x7117, 0x9F68, 0x7118, 0xECE2, 0x7119, 0xB1BA, 0x711A, 0xB7D9,
+	0x711B, 0x9F69, 0x711C, 0x9F6A, 0x711D, 0x9F6B, 0x711E, 0x9F6C,
+	0x711F, 0x9F6D, 0x7120, 0x9F6E, 0x7121, 0x9F6F, 0x7122, 0x9F70,
+	0x7123, 0x9F71, 0x7124, 0x9F72, 0x7125, 0x9F73, 0x7126, 0xBDB9,
+	0x7127, 0x9F74, 0x7128, 0x9F75, 0x7129, 0x9F76, 0x712A, 0x9F77,
+	0x712B, 0x9F78, 0x712C, 0x9F79, 0x712D, 0x9F7A, 0x712E, 0x9F7B,
+	0x712F, 0xECCC, 0x7130, 0xD1E6, 0x7131, 0xECCD, 0x7132, 0x9F7C,
+	0x7133, 0x9F7D, 0x7134, 0x9F7E, 0x7135, 0x9F80, 0x7136, 0xC8BB,
+	0x7137, 0x9F81, 0x7138, 0x9F82, 0x7139, 0x9F83, 0x713A, 0x9F84,
+	0x713B, 0x9F85, 0x713C, 0x9F86, 0x713D, 0x9F87, 0x713E, 0x9F88,
+	0x713F, 0x9F89, 0x7140, 0x9F8A, 0x7141, 0x9F8B, 0x7142, 0x9F8C,
+	0x7143, 0x9F8D, 0x7144, 0x9F8E, 0x7145, 0xECD1, 0x7146, 0x9F8F,
+	0x7147, 0x9F90, 0x7148, 0x9F91, 0x7149, 0x9F92, 0x714A, 0xECD3,
+	0x714B, 0x9F93, 0x714C, 0xBBCD, 0x714D, 0x9F94, 0x714E, 0xBCE5,
+	0x714F, 0x9F95, 0x7150, 0x9F96, 0x7151, 0x9F97, 0x7152, 0x9F98,
+	0x7153, 0x9F99, 0x7154, 0x9F9A, 0x7155, 0x9F9B, 0x7156, 0x9F9C,
+	0x7157, 0x9F9D, 0x7158, 0x9F9E, 0x7159, 0x9F9F, 0x715A, 0x9FA0,
+	0x715B, 0x9FA1, 0x715C, 0xECCF, 0x715D, 0x9FA2, 0x715E, 0xC9B7,
+	0x715F, 0x9FA3, 0x7160, 0x9FA4, 0x7161, 0x9FA5, 0x7162, 0x9FA6,
+	0x7163, 0x9FA7, 0x7164, 0xC3BA, 0x7165, 0x9FA8, 0x7166, 0xECE3,
+	0x7167, 0xD5D5, 0x7168, 0xECD0, 0x7169, 0x9FA9, 0x716A, 0x9FAA,
+	0x716B, 0x9FAB, 0x716C, 0x9FAC, 0x716D, 0x9FAD, 0x716E, 0xD6F3,
+	0x716F, 0x9FAE, 0x7170, 0x9FAF, 0x7171, 0x9FB0, 0x7172, 0xECD2,
+	0x7173, 0xECCE, 0x7174, 0x9FB1, 0x7175, 0x9FB2, 0x7176, 0x9FB3,
+	0x7177, 0x9FB4, 0x7178, 0xECD4, 0x7179, 0x9FB5, 0x717A, 0xECD5,
+	0x717B, 0x9FB6, 0x717C, 0x9FB7, 0x717D, 0xC9BF, 0x717E, 0x9FB8,
+	0x717F, 0x9FB9, 0x7180, 0x9FBA, 0x7181, 0x9FBB, 0x7182, 0x9FBC,
+	0x7183, 0x9FBD, 0x7184, 0xCFA8, 0x7185, 0x9FBE, 0x7186, 0x9FBF,
+	0x7187, 0x9FC0, 0x7188, 0x9FC1, 0x7189, 0x9FC2, 0x718A, 0xD0DC,
+	0x718B, 0x9FC3, 0x718C, 0x9FC4, 0x718D, 0x9FC5, 0x718E, 0x9FC6,
+	0x718F, 0xD1AC, 0x7190, 0x9FC7, 0x7191, 0x9FC8, 0x7192, 0x9FC9,
+	0x7193, 0x9FCA, 0x7194, 0xC8DB, 0x7195, 0x9FCB, 0x7196, 0x9FCC,
+	0x7197, 0x9FCD, 0x7198, 0xECD6, 0x7199, 0xCEF5, 0x719A, 0x9FCE,
+	0x719B, 0x9FCF, 0x719C, 0x9FD0, 0x719D, 0x9FD1, 0x719E, 0x9FD2,
+	0x719F, 0xCAEC, 0x71A0, 0xECDA, 0x71A1, 0x9FD3, 0x71A2, 0x9FD4,
+	0x71A3, 0x9FD5, 0x71A4, 0x9FD6, 0x71A5, 0x9FD7, 0x71A6, 0x9FD8,
+	0x71A7, 0x9FD9, 0x71A8, 0xECD9, 0x71A9, 0x9FDA, 0x71AA, 0x9FDB,
+	0x71AB, 0x9FDC, 0x71AC, 0xB0BE, 0x71AD, 0x9FDD, 0x71AE, 0x9FDE,
+	0x71AF, 0x9FDF, 0x71B0, 0x9FE0, 0x71B1, 0x9FE1, 0x71B2, 0x9FE2,
+	0x71B3, 0xECD7, 0x71B4, 0x9FE3, 0x71B5, 0xECD8, 0x71B6, 0x9FE4,
+	0x71B7, 0x9FE5, 0x71B8, 0x9FE6, 0x71B9, 0xECE4, 0x71BA, 0x9FE7,
+	0x71BB, 0x9FE8, 0x71BC, 0x9FE9, 0x71BD, 0x9FEA, 0x71BE, 0x9FEB,
+	0x71BF, 0x9FEC, 0x71C0, 0x9FED, 0x71C1, 0x9FEE, 0x71C2, 0x9FEF,
+	0x71C3, 0xC8BC, 0x71C4, 0x9FF0, 0x71C5, 0x9FF1, 0x71C6, 0x9FF2,
+	0x71C7, 0x9FF3, 0x71C8, 0x9FF4, 0x71C9, 0x9FF5, 0x71CA, 0x9FF6,
+	0x71CB, 0x9FF7, 0x71CC, 0x9FF8, 0x71CD, 0x9FF9, 0x71CE, 0xC1C7,
+	0x71CF, 0x9FFA, 0x71D0, 0x9FFB, 0x71D1, 0x9FFC, 0x71D2, 0x9FFD,
+	0x71D3, 0x9FFE, 0x71D4, 0xECDC, 0x71D5, 0xD1E0, 0x71D6, 0xA040,
+	0x71D7, 0xA041, 0x71D8, 0xA042, 0x71D9, 0xA043, 0x71DA, 0xA044,
+	0x71DB, 0xA045, 0x71DC, 0xA046, 0x71DD, 0xA047, 0x71DE, 0xA048,
+	0x71DF, 0xA049, 0x71E0, 0xECDB, 0x71E1, 0xA04A, 0x71E2, 0xA04B,
+	0x71E3, 0xA04C, 0x71E4, 0xA04D, 0x71E5, 0xD4EF, 0x71E6, 0xA04E,
+	0x71E7, 0xECDD, 0x71E8, 0xA04F, 0x71E9, 0xA050, 0x71EA, 0xA051,
+	0x71EB, 0xA052, 0x71EC, 0xA053, 0x71ED, 0xA054, 0x71EE, 0xDBC6,
+	0x71EF, 0xA055, 0x71F0, 0xA056, 0x71F1, 0xA057, 0x71F2, 0xA058,
+	0x71F3, 0xA059, 0x71F4, 0xA05A, 0x71F5, 0xA05B, 0x71F6, 0xA05C,
+	0x71F7, 0xA05D, 0x71F8, 0xA05E, 0x71F9, 0xECDE, 0x71FA, 0xA05F,
+	0x71FB, 0xA060, 0x71FC, 0xA061, 0x71FD, 0xA062, 0x71FE, 0xA063,
+	0x71FF, 0xA064, 0x7200, 0xA065, 0x7201, 0xA066, 0x7202, 0xA067,
+	0x7203, 0xA068, 0x7204, 0xA069, 0x7205, 0xA06A, 0x7206, 0xB1AC,
+	0x7207, 0xA06B, 0x7208, 0xA06C, 0x7209, 0xA06D, 0x720A, 0xA06E,
+	0x720B, 0xA06F, 0x720C, 0xA070, 0x720D, 0xA071, 0x720E, 0xA072,
+	0x720F, 0xA073, 0x7210, 0xA074, 0x7211, 0xA075, 0x7212, 0xA076,
+	0x7213, 0xA077, 0x7214, 0xA078, 0x7215, 0xA079, 0x7216, 0xA07A,
+	0x7217, 0xA07B, 0x7218, 0xA07C, 0x7219, 0xA07D, 0x721A, 0xA07E,
+	0x721B, 0xA080, 0x721C, 0xA081, 0x721D, 0xECDF, 0x721E, 0xA082,
+	0x721F, 0xA083, 0x7220, 0xA084, 0x7221, 0xA085, 0x7222, 0xA086,
+	0x7223, 0xA087, 0x7224, 0xA088, 0x7225, 0xA089, 0x7226, 0xA08A,
+	0x7227, 0xA08B, 0x7228, 0xECE0, 0x7229, 0xA08C, 0x722A, 0xD7A6,
+	0x722B, 0xA08D, 0x722C, 0xC5C0, 0x722D, 0xA08E, 0x722E, 0xA08F,
+	0x722F, 0xA090, 0x7230, 0xEBBC, 0x7231, 0xB0AE, 0x7232, 0xA091,
+	0x7233, 0xA092, 0x7234, 0xA093, 0x7235, 0xBEF4, 0x7236, 0xB8B8,
+	0x7237, 0xD2AF, 0x7238, 0xB0D6, 0x7239, 0xB5F9, 0x723A, 0xA094,
+	0x723B, 0xD8B3, 0x723C, 0xA095, 0x723D, 0xCBAC, 0x723E, 0xA096,
+	0x723F, 0xE3DD, 0x7240, 0xA097, 0x7241, 0xA098, 0x7242, 0xA099,
+	0x7243, 0xA09A, 0x7244, 0xA09B, 0x7245, 0xA09C, 0x7246, 0xA09D,
+	0x7247, 0xC6AC, 0x7248, 0xB0E6, 0x7249, 0xA09E, 0x724A, 0xA09F,
+	0x724B, 0xA0A0, 0x724C, 0xC5C6, 0x724D, 0xEBB9, 0x724E, 0xA0A1,
+	0x724F, 0xA0A2, 0x7250, 0xA0A3, 0x7251, 0xA0A4, 0x7252, 0xEBBA,
+	0x7253, 0xA0A5, 0x7254, 0xA0A6, 0x7255, 0xA0A7, 0x7256, 0xEBBB,
+	0x7257, 0xA0A8, 0x7258, 0xA0A9, 0x7259, 0xD1C0, 0x725A, 0xA0AA,
+	0x725B, 0xC5A3, 0x725C, 0xA0AB, 0x725D, 0xEAF2, 0x725E, 0xA0AC,
+	0x725F, 0xC4B2, 0x7260, 0xA0AD, 0x7261, 0xC4B5, 0x7262, 0xC0CE,
+	0x7263, 0xA0AE, 0x7264, 0xA0AF, 0x7265, 0xA0B0, 0x7266, 0xEAF3,
+	0x7267, 0xC4C1, 0x7268, 0xA0B1, 0x7269, 0xCEEF, 0x726A, 0xA0B2,
+	0x726B, 0xA0B3, 0x726C, 0xA0B4, 0x726D, 0xA0B5, 0x726E, 0xEAF0,
+	0x726F, 0xEAF4, 0x7270, 0xA0B6, 0x7271, 0xA0B7, 0x7272, 0xC9FC,
+	0x7273, 0xA0B8, 0x7274, 0xA0B9, 0x7275, 0xC7A3, 0x7276, 0xA0BA,
+	0x7277, 0xA0BB, 0x7278, 0xA0BC, 0x7279, 0xCCD8, 0x727A, 0xCEFE,
+	0x727B, 0xA0BD, 0x727C, 0xA0BE, 0x727D, 0xA0BF, 0x727E, 0xEAF5,
+	0x727F, 0xEAF6, 0x7280, 0xCFAC, 0x7281, 0xC0E7, 0x7282, 0xA0C0,
+	0x7283, 0xA0C1, 0x7284, 0xEAF7, 0x7285, 0xA0C2, 0x7286, 0xA0C3,
+	0x7287, 0xA0C4, 0x7288, 0xA0C5, 0x7289, 0xA0C6, 0x728A, 0xB6BF,
+	0x728B, 0xEAF8, 0x728C, 0xA0C7, 0x728D, 0xEAF9, 0x728E, 0xA0C8,
+	0x728F, 0xEAFA, 0x7290, 0xA0C9, 0x7291, 0xA0CA, 0x7292, 0xEAFB,
+	0x7293, 0xA0CB, 0x7294, 0xA0CC, 0x7295, 0xA0CD, 0x7296, 0xA0CE,
+	0x7297, 0xA0CF, 0x7298, 0xA0D0, 0x7299, 0xA0D1, 0x729A, 0xA0D2,
+	0x729B, 0xA0D3, 0x729C, 0xA0D4, 0x729D, 0xA0D5, 0x729E, 0xA0D6,
+	0x729F, 0xEAF1, 0x72A0, 0xA0D7, 0x72A1, 0xA0D8, 0x72A2, 0xA0D9,
+	0x72A3, 0xA0DA, 0x72A4, 0xA0DB, 0x72A5, 0xA0DC, 0x72A6, 0xA0DD,
+	0x72A7, 0xA0DE, 0x72A8, 0xA0DF, 0x72A9, 0xA0E0, 0x72AA, 0xA0E1,
+	0x72AB, 0xA0E2, 0x72AC, 0xC8AE, 0x72AD, 0xE1EB, 0x72AE, 0xA0E3,
+	0x72AF, 0xB7B8, 0x72B0, 0xE1EC, 0x72B1, 0xA0E4, 0x72B2, 0xA0E5,
+	0x72B3, 0xA0E6, 0x72B4, 0xE1ED, 0x72B5, 0xA0E7, 0x72B6, 0xD7B4,
+	0x72B7, 0xE1EE, 0x72B8, 0xE1EF, 0x72B9, 0xD3CC, 0x72BA, 0xA0E8,
+	0x72BB, 0xA0E9, 0x72BC, 0xA0EA, 0x72BD, 0xA0EB, 0x72BE, 0xA0EC,
+	0x72BF, 0xA0ED, 0x72C0, 0xA0EE, 0x72C1, 0xE1F1, 0x72C2, 0xBFF1,
+	0x72C3, 0xE1F0, 0x72C4, 0xB5D2, 0x72C5, 0xA0EF, 0x72C6, 0xA0F0,
+	0x72C7, 0xA0F1, 0x72C8, 0xB1B7, 0x72C9, 0xA0F2, 0x72CA, 0xA0F3,
+	0x72CB, 0xA0F4, 0x72CC, 0xA0F5, 0x72CD, 0xE1F3, 0x72CE, 0xE1F2,
+	0x72CF, 0xA0F6, 0x72D0, 0xBAFC, 0x72D1, 0xA0F7, 0x72D2, 0xE1F4,
+	0x72D3, 0xA0F8, 0x72D4, 0xA0F9, 0x72D5, 0xA0FA, 0x72D6, 0xA0FB,
+	0x72D7, 0xB9B7, 0x72D8, 0xA0FC, 0x72D9, 0xBED1, 0x72DA, 0xA0FD,
+	0x72DB, 0xA0FE, 0x72DC, 0xAA40, 0x72DD, 0xAA41, 0x72DE, 0xC4FC,
+	0x72DF, 0xAA42, 0x72E0, 0xBADD, 0x72E1, 0xBDC6, 0x72E2, 0xAA43,
+	0x72E3, 0xAA44, 0x72E4, 0xAA45, 0x72E5, 0xAA46, 0x72E6, 0xAA47,
+	0x72E7, 0xAA48, 0x72E8, 0xE1F5, 0x72E9, 0xE1F7, 0x72EA, 0xAA49,
+	0x72EB, 0xAA4A, 0x72EC, 0xB6C0, 0x72ED, 0xCFC1, 0x72EE, 0xCAA8,
+	0x72EF, 0xE1F6, 0x72F0, 0xD5F8, 0x72F1, 0xD3FC, 0x72F2, 0xE1F8,
+	0x72F3, 0xE1FC, 0x72F4, 0xE1F9, 0x72F5, 0xAA4B, 0x72F6, 0xAA4C,
+	0x72F7, 0xE1FA, 0x72F8, 0xC0EA, 0x72F9, 0xAA4D, 0x72FA, 0xE1FE,
+	0x72FB, 0xE2A1, 0x72FC, 0xC0C7, 0x72FD, 0xAA4E, 0x72FE, 0xAA4F,
+	0x72FF, 0xAA50, 0x7300, 0xAA51, 0x7301, 0xE1FB, 0x7302, 0xAA52,
+	0x7303, 0xE1FD, 0x7304, 0xAA53, 0x7305, 0xAA54, 0x7306, 0xAA55,
+	0x7307, 0xAA56, 0x7308, 0xAA57, 0x7309, 0xAA58, 0x730A, 0xE2A5,
+	0x730B, 0xAA59, 0x730C, 0xAA5A, 0x730D, 0xAA5B, 0x730E, 0xC1D4,
+	0x730F, 0xAA5C, 0x7310, 0xAA5D, 0x7311, 0xAA5E, 0x7312, 0xAA5F,
+	0x7313, 0xE2A3, 0x7314, 0xAA60, 0x7315, 0xE2A8, 0x7316, 0xB2FE,
+	0x7317, 0xE2A2, 0x7318, 0xAA61, 0x7319, 0xAA62, 0x731A, 0xAA63,
+	0x731B, 0xC3CD, 0x731C, 0xB2C2, 0x731D, 0xE2A7, 0x731E, 0xE2A6,
+	0x731F, 0xAA64, 0x7320, 0xAA65, 0x7321, 0xE2A4, 0x7322, 0xE2A9,
+	0x7323, 0xAA66, 0x7324, 0xAA67, 0x7325, 0xE2AB, 0x7326, 0xAA68,
+	0x7327, 0xAA69, 0x7328, 0xAA6A, 0x7329, 0xD0C9, 0x732A, 0xD6ED,
+	0x732B, 0xC3A8, 0x732C, 0xE2AC, 0x732D, 0xAA6B, 0x732E, 0xCFD7,
+	0x732F, 0xAA6C, 0x7330, 0xAA6D, 0x7331, 0xE2AE, 0x7332, 0xAA6E,
+	0x7333, 0xAA6F, 0x7334, 0xBAEF, 0x7335, 0xAA70, 0x7336, 0xAA71,
+	0x7337, 0xE9E0, 0x7338, 0xE2AD, 0x7339, 0xE2AA, 0x733A, 0xAA72,
+	0x733B, 0xAA73, 0x733C, 0xAA74, 0x733D, 0xAA75, 0x733E, 0xBBAB,
+	0x733F, 0xD4B3, 0x7340, 0xAA76, 0x7341, 0xAA77, 0x7342, 0xAA78,
+	0x7343, 0xAA79, 0x7344, 0xAA7A, 0x7345, 0xAA7B, 0x7346, 0xAA7C,
+	0x7347, 0xAA7D, 0x7348, 0xAA7E, 0x7349, 0xAA80, 0x734A, 0xAA81,
+	0x734B, 0xAA82, 0x734C, 0xAA83, 0x734D, 0xE2B0, 0x734E, 0xAA84,
+	0x734F, 0xAA85, 0x7350, 0xE2AF, 0x7351, 0xAA86, 0x7352, 0xE9E1,
+	0x7353, 0xAA87, 0x7354, 0xAA88, 0x7355, 0xAA89, 0x7356, 0xAA8A,
+	0x7357, 0xE2B1, 0x7358, 0xAA8B, 0x7359, 0xAA8C, 0x735A, 0xAA8D,
+	0x735B, 0xAA8E, 0x735C, 0xAA8F, 0x735D, 0xAA90, 0x735E, 0xAA91,
+	0x735F, 0xAA92, 0x7360, 0xE2B2, 0x7361, 0xAA93, 0x7362, 0xAA94,
+	0x7363, 0xAA95, 0x7364, 0xAA96, 0x7365, 0xAA97, 0x7366, 0xAA98,
+	0x7367, 0xAA99, 0x7368, 0xAA9A, 0x7369, 0xAA9B, 0x736A, 0xAA9C,
+	0x736B, 0xAA9D, 0x736C, 0xE2B3, 0x736D, 0xCCA1, 0x736E, 0xAA9E,
+	0x736F, 0xE2B4, 0x7370, 0xAA9F, 0x7371, 0xAAA0, 0x7372, 0xAB40,
+	0x7373, 0xAB41, 0x7374, 0xAB42, 0x7375, 0xAB43, 0x7376, 0xAB44,
+	0x7377, 0xAB45, 0x7378, 0xAB46, 0x7379, 0xAB47, 0x737A, 0xAB48,
+	0x737B, 0xAB49, 0x737C, 0xAB4A, 0x737D, 0xAB4B, 0x737E, 0xE2B5,
+	0x737F, 0xAB4C, 0x7380, 0xAB4D, 0x7381, 0xAB4E, 0x7382, 0xAB4F,
+	0x7383, 0xAB50, 0x7384, 0xD0FE, 0x7385, 0xAB51, 0x7386, 0xAB52,
+	0x7387, 0xC2CA, 0x7388, 0xAB53, 0x7389, 0xD3F1, 0x738A, 0xAB54,
+	0x738B, 0xCDF5, 0x738C, 0xAB55, 0x738D, 0xAB56, 0x738E, 0xE7E0,
+	0x738F, 0xAB57, 0x7390, 0xAB58, 0x7391, 0xE7E1, 0x7392, 0xAB59,
+	0x7393, 0xAB5A, 0x7394, 0xAB5B, 0x7395, 0xAB5C, 0x7396, 0xBEC1,
+	0x7397, 0xAB5D, 0x7398, 0xAB5E, 0x7399, 0xAB5F, 0x739A, 0xAB60,
+	0x739B, 0xC2EA, 0x739C, 0xAB61, 0x739D, 0xAB62, 0x739E, 0xAB63,
+	0x739F, 0xE7E4, 0x73A0, 0xAB64, 0x73A1, 0xAB65, 0x73A2, 0xE7E3,
+	0x73A3, 0xAB66, 0x73A4, 0xAB67, 0x73A5, 0xAB68, 0x73A6, 0xAB69,
+	0x73A7, 0xAB6A, 0x73A8, 0xAB6B, 0x73A9, 0xCDE6, 0x73AA, 0xAB6C,
+	0x73AB, 0xC3B5, 0x73AC, 0xAB6D, 0x73AD, 0xAB6E, 0x73AE, 0xE7E2,
+	0x73AF, 0xBBB7, 0x73B0, 0xCFD6, 0x73B1, 0xAB6F, 0x73B2, 0xC1E1,
+	0x73B3, 0xE7E9, 0x73B4, 0xAB70, 0x73B5, 0xAB71, 0x73B6, 0xAB72,
+	0x73B7, 0xE7E8, 0x73B8, 0xAB73, 0x73B9, 0xAB74, 0x73BA, 0xE7F4,
+	0x73BB, 0xB2A3, 0x73BC, 0xAB75, 0x73BD, 0xAB76, 0x73BE, 0xAB77,
+	0x73BF, 0xAB78, 0x73C0, 0xE7EA, 0x73C1, 0xAB79, 0x73C2, 0xE7E6,
+	0x73C3, 0xAB7A, 0x73C4, 0xAB7B, 0x73C5, 0xAB7C, 0x73C6, 0xAB7D,
+	0x73C7, 0xAB7E, 0x73C8, 0xE7EC, 0x73C9, 0xE7EB, 0x73CA, 0xC9BA,
+	0x73CB, 0xAB80, 0x73CC, 0xAB81, 0x73CD, 0xD5E4, 0x73CE, 0xAB82,
+	0x73CF, 0xE7E5, 0x73D0, 0xB7A9, 0x73D1, 0xE7E7, 0x73D2, 0xAB83,
+	0x73D3, 0xAB84, 0x73D4, 0xAB85, 0x73D5, 0xAB86, 0x73D6, 0xAB87,
+	0x73D7, 0xAB88, 0x73D8, 0xAB89, 0x73D9, 0xE7EE, 0x73DA, 0xAB8A,
+	0x73DB, 0xAB8B, 0x73DC, 0xAB8C, 0x73DD, 0xAB8D, 0x73DE, 0xE7F3,
+	0x73DF, 0xAB8E, 0x73E0, 0xD6E9, 0x73E1, 0xAB8F, 0x73E2, 0xAB90,
+	0x73E3, 0xAB91, 0x73E4, 0xAB92, 0x73E5, 0xE7ED, 0x73E6, 0xAB93,
+	0x73E7, 0xE7F2, 0x73E8, 0xAB94, 0x73E9, 0xE7F1, 0x73EA, 0xAB95,
+	0x73EB, 0xAB96, 0x73EC, 0xAB97, 0x73ED, 0xB0E0, 0x73EE, 0xAB98,
+	0x73EF, 0xAB99, 0x73F0, 0xAB9A, 0x73F1, 0xAB9B, 0x73F2, 0xE7F5,
+	0x73F3, 0xAB9C, 0x73F4, 0xAB9D, 0x73F5, 0xAB9E, 0x73F6, 0xAB9F,
+	0x73F7, 0xABA0, 0x73F8, 0xAC40, 0x73F9, 0xAC41, 0x73FA, 0xAC42,
+	0x73FB, 0xAC43, 0x73FC, 0xAC44, 0x73FD, 0xAC45, 0x73FE, 0xAC46,
+	0x73FF, 0xAC47, 0x7400, 0xAC48, 0x7401, 0xAC49, 0x7402, 0xAC4A,
+	0x7403, 0xC7F2, 0x7404, 0xAC4B, 0x7405, 0xC0C5, 0x7406, 0xC0ED,
+	0x7407, 0xAC4C, 0x7408, 0xAC4D, 0x7409, 0xC1F0, 0x740A, 0xE7F0,
+	0x740B, 0xAC4E, 0x740C, 0xAC4F, 0x740D, 0xAC50, 0x740E, 0xAC51,
+	0x740F, 0xE7F6, 0x7410, 0xCBF6, 0x7411, 0xAC52, 0x7412, 0xAC53,
+	0x7413, 0xAC54, 0x7414, 0xAC55, 0x7415, 0xAC56, 0x7416, 0xAC57,
+	0x7417, 0xAC58, 0x7418, 0xAC59, 0x7419, 0xAC5A, 0x741A, 0xE8A2,
+	0x741B, 0xE8A1, 0x741C, 0xAC5B, 0x741D, 0xAC5C, 0x741E, 0xAC5D,
+	0x741F, 0xAC5E, 0x7420, 0xAC5F, 0x7421, 0xAC60, 0x7422, 0xD7C1,
+	0x7423, 0xAC61, 0x7424, 0xAC62, 0x7425, 0xE7FA, 0x7426, 0xE7F9,
+	0x7427, 0xAC63, 0x7428, 0xE7FB, 0x7429, 0xAC64, 0x742A, 0xE7F7,
+	0x742B, 0xAC65, 0x742C, 0xE7FE, 0x742D, 0xAC66, 0x742E, 0xE7FD,
+	0x742F, 0xAC67, 0x7430, 0xE7FC, 0x7431, 0xAC68, 0x7432, 0xAC69,
+	0x7433, 0xC1D5, 0x7434, 0xC7D9, 0x7435, 0xC5FD, 0x7436, 0xC5C3,
+	0x7437, 0xAC6A, 0x7438, 0xAC6B, 0x7439, 0xAC6C, 0x743A, 0xAC6D,
+	0x743B, 0xAC6E, 0x743C, 0xC7ED, 0x743D, 0xAC6F, 0x743E, 0xAC70,
+	0x743F, 0xAC71, 0x7440, 0xAC72, 0x7441, 0xE8A3, 0x7442, 0xAC73,
+	0x7443, 0xAC74, 0x7444, 0xAC75, 0x7445, 0xAC76, 0x7446, 0xAC77,
+	0x7447, 0xAC78, 0x7448, 0xAC79, 0x7449, 0xAC7A, 0x744A, 0xAC7B,
+	0x744B, 0xAC7C, 0x744C, 0xAC7D, 0x744D, 0xAC7E, 0x744E, 0xAC80,
+	0x744F, 0xAC81, 0x7450, 0xAC82, 0x7451, 0xAC83, 0x7452, 0xAC84,
+	0x7453, 0xAC85, 0x7454, 0xAC86, 0x7455, 0xE8A6, 0x7456, 0xAC87,
+	0x7457, 0xE8A5, 0x7458, 0xAC88, 0x7459, 0xE8A7, 0x745A, 0xBAF7,
+	0x745B, 0xE7F8, 0x745C, 0xE8A4, 0x745D, 0xAC89, 0x745E, 0xC8F0,
+	0x745F, 0xC9AA, 0x7460, 0xAC8A, 0x7461, 0xAC8B, 0x7462, 0xAC8C,
+	0x7463, 0xAC8D, 0x7464, 0xAC8E, 0x7465, 0xAC8F, 0x7466, 0xAC90,
+	0x7467, 0xAC91, 0x7468, 0xAC92, 0x7469, 0xAC93, 0x746A, 0xAC94,
+	0x746B, 0xAC95, 0x746C, 0xAC96, 0x746D, 0xE8A9, 0x746E, 0xAC97,
+	0x746F, 0xAC98, 0x7470, 0xB9E5, 0x7471, 0xAC99, 0x7472, 0xAC9A,
+	0x7473, 0xAC9B, 0x7474, 0xAC9C, 0x7475, 0xAC9D, 0x7476, 0xD1FE,
+	0x7477, 0xE8A8, 0x7478, 0xAC9E, 0x7479, 0xAC9F, 0x747A, 0xACA0,
+	0x747B, 0xAD40, 0x747C, 0xAD41, 0x747D, 0xAD42, 0x747E, 0xE8AA,
+	0x747F, 0xAD43, 0x7480, 0xE8AD, 0x7481, 0xE8AE, 0x7482, 0xAD44,
+	0x7483, 0xC1A7, 0x7484, 0xAD45, 0x7485, 0xAD46, 0x7486, 0xAD47,
+	0x7487, 0xE8AF, 0x7488, 0xAD48, 0x7489, 0xAD49, 0x748A, 0xAD4A,
+	0x748B, 0xE8B0, 0x748C, 0xAD4B, 0x748D, 0xAD4C, 0x748E, 0xE8AC,
+	0x748F, 0xAD4D, 0x7490, 0xE8B4, 0x7491, 0xAD4E, 0x7492, 0xAD4F,
+	0x7493, 0xAD50, 0x7494, 0xAD51, 0x7495, 0xAD52, 0x7496, 0xAD53,
+	0x7497, 0xAD54, 0x7498, 0xAD55, 0x7499, 0xAD56, 0x749A, 0xAD57,
+	0x749B, 0xAD58, 0x749C, 0xE8AB, 0x749D, 0xAD59, 0x749E, 0xE8B1,
+	0x749F, 0xAD5A, 0x74A0, 0xAD5B, 0x74A1, 0xAD5C, 0x74A2, 0xAD5D,
+	0x74A3, 0xAD5E, 0x74A4, 0xAD5F, 0x74A5, 0xAD60, 0x74A6, 0xAD61,
+	0x74A7, 0xE8B5, 0x74A8, 0xE8B2, 0x74A9, 0xE8B3, 0x74AA, 0xAD62,
+	0x74AB, 0xAD63, 0x74AC, 0xAD64, 0x74AD, 0xAD65, 0x74AE, 0xAD66,
+	0x74AF, 0xAD67, 0x74B0, 0xAD68, 0x74B1, 0xAD69, 0x74B2, 0xAD6A,
+	0x74B3, 0xAD6B, 0x74B4, 0xAD6C, 0x74B5, 0xAD6D, 0x74B6, 0xAD6E,
+	0x74B7, 0xAD6F, 0x74B8, 0xAD70, 0x74B9, 0xAD71, 0x74BA, 0xE8B7,
+	0x74BB, 0xAD72, 0x74BC, 0xAD73, 0x74BD, 0xAD74, 0x74BE, 0xAD75,
+	0x74BF, 0xAD76, 0x74C0, 0xAD77, 0x74C1, 0xAD78, 0x74C2, 0xAD79,
+	0x74C3, 0xAD7A, 0x74C4, 0xAD7B, 0x74C5, 0xAD7C, 0x74C6, 0xAD7D,
+	0x74C7, 0xAD7E, 0x74C8, 0xAD80, 0x74C9, 0xAD81, 0x74CA, 0xAD82,
+	0x74CB, 0xAD83, 0x74CC, 0xAD84, 0x74CD, 0xAD85, 0x74CE, 0xAD86,
+	0x74CF, 0xAD87, 0x74D0, 0xAD88, 0x74D1, 0xAD89, 0x74D2, 0xE8B6,
+	0x74D3, 0xAD8A, 0x74D4, 0xAD8B, 0x74D5, 0xAD8C, 0x74D6, 0xAD8D,
+	0x74D7, 0xAD8E, 0x74D8, 0xAD8F, 0x74D9, 0xAD90, 0x74DA, 0xAD91,
+	0x74DB, 0xAD92, 0x74DC, 0xB9CF, 0x74DD, 0xAD93, 0x74DE, 0xF0AC,
+	0x74DF, 0xAD94, 0x74E0, 0xF0AD, 0x74E1, 0xAD95, 0x74E2, 0xC6B0,
+	0x74E3, 0xB0EA, 0x74E4, 0xC8BF, 0x74E5, 0xAD96, 0x74E6, 0xCDDF,
+	0x74E7, 0xAD97, 0x74E8, 0xAD98, 0x74E9, 0xAD99, 0x74EA, 0xAD9A,
+	0x74EB, 0xAD9B, 0x74EC, 0xAD9C, 0x74ED, 0xAD9D, 0x74EE, 0xCECD,
+	0x74EF, 0xEAB1, 0x74F0, 0xAD9E, 0x74F1, 0xAD9F, 0x74F2, 0xADA0,
+	0x74F3, 0xAE40, 0x74F4, 0xEAB2, 0x74F5, 0xAE41, 0x74F6, 0xC6BF,
+	0x74F7, 0xB4C9, 0x74F8, 0xAE42, 0x74F9, 0xAE43, 0x74FA, 0xAE44,
+	0x74FB, 0xAE45, 0x74FC, 0xAE46, 0x74FD, 0xAE47, 0x74FE, 0xAE48,
+	0x74FF, 0xEAB3, 0x7500, 0xAE49, 0x7501, 0xAE4A, 0x7502, 0xAE4B,
+	0x7503, 0xAE4C, 0x7504, 0xD5E7, 0x7505, 0xAE4D, 0x7506, 0xAE4E,
+	0x7507, 0xAE4F, 0x7508, 0xAE50, 0x7509, 0xAE51, 0x750A, 0xAE52,
+	0x750B, 0xAE53, 0x750C, 0xAE54, 0x750D, 0xDDF9, 0x750E, 0xAE55,
+	0x750F, 0xEAB4, 0x7510, 0xAE56, 0x7511, 0xEAB5, 0x7512, 0xAE57,
+	0x7513, 0xEAB6, 0x7514, 0xAE58, 0x7515, 0xAE59, 0x7516, 0xAE5A,
+	0x7517, 0xAE5B, 0x7518, 0xB8CA, 0x7519, 0xDFB0, 0x751A, 0xC9F5,
+	0x751B, 0xAE5C, 0x751C, 0xCCF0, 0x751D, 0xAE5D, 0x751E, 0xAE5E,
+	0x751F, 0xC9FA, 0x7520, 0xAE5F, 0x7521, 0xAE60, 0x7522, 0xAE61,
+	0x7523, 0xAE62, 0x7524, 0xAE63, 0x7525, 0xC9FB, 0x7526, 0xAE64,
+	0x7527, 0xAE65, 0x7528, 0xD3C3, 0x7529, 0xCBA6, 0x752A, 0xAE66,
+	0x752B, 0xB8A6, 0x752C, 0xF0AE, 0x752D, 0xB1C2, 0x752E, 0xAE67,
+	0x752F, 0xE5B8, 0x7530, 0xCCEF, 0x7531, 0xD3C9, 0x7532, 0xBCD7,
+	0x7533, 0xC9EA, 0x7534, 0xAE68, 0x7535, 0xB5E7, 0x7536, 0xAE69,
+	0x7537, 0xC4D0, 0x7538, 0xB5E9, 0x7539, 0xAE6A, 0x753A, 0xEEAE,
+	0x753B, 0xBBAD, 0x753C, 0xAE6B, 0x753D, 0xAE6C, 0x753E, 0xE7DE,
+	0x753F, 0xAE6D, 0x7540, 0xEEAF, 0x7541, 0xAE6E, 0x7542, 0xAE6F,
+	0x7543, 0xAE70, 0x7544, 0xAE71, 0x7545, 0xB3A9, 0x7546, 0xAE72,
+	0x7547, 0xAE73, 0x7548, 0xEEB2, 0x7549, 0xAE74, 0x754A, 0xAE75,
+	0x754B, 0xEEB1, 0x754C, 0xBDE7, 0x754D, 0xAE76, 0x754E, 0xEEB0,
+	0x754F, 0xCEB7, 0x7550, 0xAE77, 0x7551, 0xAE78, 0x7552, 0xAE79,
+	0x7553, 0xAE7A, 0x7554, 0xC5CF, 0x7555, 0xAE7B, 0x7556, 0xAE7C,
+	0x7557, 0xAE7D, 0x7558, 0xAE7E, 0x7559, 0xC1F4, 0x755A, 0xDBCE,
+	0x755B, 0xEEB3, 0x755C, 0xD0F3, 0x755D, 0xAE80, 0x755E, 0xAE81,
+	0x755F, 0xAE82, 0x7560, 0xAE83, 0x7561, 0xAE84, 0x7562, 0xAE85,
+	0x7563, 0xAE86, 0x7564, 0xAE87, 0x7565, 0xC2D4, 0x7566, 0xC6E8,
+	0x7567, 0xAE88, 0x7568, 0xAE89, 0x7569, 0xAE8A, 0x756A, 0xB7AC,
+	0x756B, 0xAE8B, 0x756C, 0xAE8C, 0x756D, 0xAE8D, 0x756E, 0xAE8E,
+	0x756F, 0xAE8F, 0x7570, 0xAE90, 0x7571, 0xAE91, 0x7572, 0xEEB4,
+	0x7573, 0xAE92, 0x7574, 0xB3EB, 0x7575, 0xAE93, 0x7576, 0xAE94,
+	0x7577, 0xAE95, 0x7578, 0xBBFB, 0x7579, 0xEEB5, 0x757A, 0xAE96,
+	0x757B, 0xAE97, 0x757C, 0xAE98, 0x757D, 0xAE99, 0x757E, 0xAE9A,
+	0x757F, 0xE7DC, 0x7580, 0xAE9B, 0x7581, 0xAE9C, 0x7582, 0xAE9D,
+	0x7583, 0xEEB6, 0x7584, 0xAE9E, 0x7585, 0xAE9F, 0x7586, 0xBDAE,
+	0x7587, 0xAEA0, 0x7588, 0xAF40, 0x7589, 0xAF41, 0x758A, 0xAF42,
+	0x758B, 0xF1E2, 0x758C, 0xAF43, 0x758D, 0xAF44, 0x758E, 0xAF45,
+	0x758F, 0xCAE8, 0x7590, 0xAF46, 0x7591, 0xD2C9, 0x7592, 0xF0DA,
+	0x7593, 0xAF47, 0x7594, 0xF0DB, 0x7595, 0xAF48, 0x7596, 0xF0DC,
+	0x7597, 0xC1C6, 0x7598, 0xAF49, 0x7599, 0xB8ED, 0x759A, 0xBECE,
+	0x759B, 0xAF4A, 0x759C, 0xAF4B, 0x759D, 0xF0DE, 0x759E, 0xAF4C,
+	0x759F, 0xC5B1, 0x75A0, 0xF0DD, 0x75A1, 0xD1F1, 0x75A2, 0xAF4D,
+	0x75A3, 0xF0E0, 0x75A4, 0xB0CC, 0x75A5, 0xBDEA, 0x75A6, 0xAF4E,
+	0x75A7, 0xAF4F, 0x75A8, 0xAF50, 0x75A9, 0xAF51, 0x75AA, 0xAF52,
+	0x75AB, 0xD2DF, 0x75AC, 0xF0DF, 0x75AD, 0xAF53, 0x75AE, 0xB4AF,
+	0x75AF, 0xB7E8, 0x75B0, 0xF0E6, 0x75B1, 0xF0E5, 0x75B2, 0xC6A3,
+	0x75B3, 0xF0E1, 0x75B4, 0xF0E2, 0x75B5, 0xB4C3, 0x75B6, 0xAF54,
+	0x75B7, 0xAF55, 0x75B8, 0xF0E3, 0x75B9, 0xD5EE, 0x75BA, 0xAF56,
+	0x75BB, 0xAF57, 0x75BC, 0xCCDB, 0x75BD, 0xBED2, 0x75BE, 0xBCB2,
+	0x75BF, 0xAF58, 0x75C0, 0xAF59, 0x75C1, 0xAF5A, 0x75C2, 0xF0E8,
+	0x75C3, 0xF0E7, 0x75C4, 0xF0E4, 0x75C5, 0xB2A1, 0x75C6, 0xAF5B,
+	0x75C7, 0xD6A2, 0x75C8, 0xD3B8, 0x75C9, 0xBEB7, 0x75CA, 0xC8AC,
+	0x75CB, 0xAF5C, 0x75CC, 0xAF5D, 0x75CD, 0xF0EA, 0x75CE, 0xAF5E,
+	0x75CF, 0xAF5F, 0x75D0, 0xAF60, 0x75D1, 0xAF61, 0x75D2, 0xD1F7,
+	0x75D3, 0xAF62, 0x75D4, 0xD6CC, 0x75D5, 0xBADB, 0x75D6, 0xF0E9,
+	0x75D7, 0xAF63, 0x75D8, 0xB6BB, 0x75D9, 0xAF64, 0x75DA, 0xAF65,
+	0x75DB, 0xCDB4, 0x75DC, 0xAF66, 0x75DD, 0xAF67, 0x75DE, 0xC6A6,
+	0x75DF, 0xAF68, 0x75E0, 0xAF69, 0x75E1, 0xAF6A, 0x75E2, 0xC1A1,
+	0x75E3, 0xF0EB, 0x75E4, 0xF0EE, 0x75E5, 0xAF6B, 0x75E6, 0xF0ED,
+	0x75E7, 0xF0F0, 0x75E8, 0xF0EC, 0x75E9, 0xAF6C, 0x75EA, 0xBBBE,
+	0x75EB, 0xF0EF, 0x75EC, 0xAF6D, 0x75ED, 0xAF6E, 0x75EE, 0xAF6F,
+	0x75EF, 0xAF70, 0x75F0, 0xCCB5, 0x75F1, 0xF0F2, 0x75F2, 0xAF71,
+	0x75F3, 0xAF72, 0x75F4, 0xB3D5, 0x75F5, 0xAF73, 0x75F6, 0xAF74,
+	0x75F7, 0xAF75, 0x75F8, 0xAF76, 0x75F9, 0xB1D4, 0x75FA, 0xAF77,
+	0x75FB, 0xAF78, 0x75FC, 0xF0F3, 0x75FD, 0xAF79, 0x75FE, 0xAF7A,
+	0x75FF, 0xF0F4, 0x7600, 0xF0F6, 0x7601, 0xB4E1, 0x7602, 0xAF7B,
+	0x7603, 0xF0F1, 0x7604, 0xAF7C, 0x7605, 0xF0F7, 0x7606, 0xAF7D,
+	0x7607, 0xAF7E, 0x7608, 0xAF80, 0x7609, 0xAF81, 0x760A, 0xF0FA,
+	0x760B, 0xAF82, 0x760C, 0xF0F8, 0x760D, 0xAF83, 0x760E, 0xAF84,
+	0x760F, 0xAF85, 0x7610, 0xF0F5, 0x7611, 0xAF86, 0x7612, 0xAF87,
+	0x7613, 0xAF88, 0x7614, 0xAF89, 0x7615, 0xF0FD, 0x7616, 0xAF8A,
+	0x7617, 0xF0F9, 0x7618, 0xF0FC, 0x7619, 0xF0FE, 0x761A, 0xAF8B,
+	0x761B, 0xF1A1, 0x761C, 0xAF8C, 0x761D, 0xAF8D, 0x761E, 0xAF8E,
+	0x761F, 0xCEC1, 0x7620, 0xF1A4, 0x7621, 0xAF8F, 0x7622, 0xF1A3,
+	0x7623, 0xAF90, 0x7624, 0xC1F6, 0x7625, 0xF0FB, 0x7626, 0xCADD,
+	0x7627, 0xAF91, 0x7628, 0xAF92, 0x7629, 0xB4F1, 0x762A, 0xB1F1,
+	0x762B, 0xCCB1, 0x762C, 0xAF93, 0x762D, 0xF1A6, 0x762E, 0xAF94,
+	0x762F, 0xAF95, 0x7630, 0xF1A7, 0x7631, 0xAF96, 0x7632, 0xAF97,
+	0x7633, 0xF1AC, 0x7634, 0xD5CE, 0x7635, 0xF1A9, 0x7636, 0xAF98,
+	0x7637, 0xAF99, 0x7638, 0xC8B3, 0x7639, 0xAF9A, 0x763A, 0xAF9B,
+	0x763B, 0xAF9C, 0x763C, 0xF1A2, 0x763D, 0xAF9D, 0x763E, 0xF1AB,
+	0x763F, 0xF1A8, 0x7640, 0xF1A5, 0x7641, 0xAF9E, 0x7642, 0xAF9F,
+	0x7643, 0xF1AA, 0x7644, 0xAFA0, 0x7645, 0xB040, 0x7646, 0xB041,
+	0x7647, 0xB042, 0x7648, 0xB043, 0x7649, 0xB044, 0x764A, 0xB045,
+	0x764B, 0xB046, 0x764C, 0xB0A9, 0x764D, 0xF1AD, 0x764E, 0xB047,
+	0x764F, 0xB048, 0x7650, 0xB049, 0x7651, 0xB04A, 0x7652, 0xB04B,
+	0x7653, 0xB04C, 0x7654, 0xF1AF, 0x7655, 0xB04D, 0x7656, 0xF1B1,
+	0x7657, 0xB04E, 0x7658, 0xB04F, 0x7659, 0xB050, 0x765A, 0xB051,
+	0x765B, 0xB052, 0x765C, 0xF1B0, 0x765D, 0xB053, 0x765E, 0xF1AE,
+	0x765F, 0xB054, 0x7660, 0xB055, 0x7661, 0xB056, 0x7662, 0xB057,
+	0x7663, 0xD1A2, 0x7664, 0xB058, 0x7665, 0xB059, 0x7666, 0xB05A,
+	0x7667, 0xB05B, 0x7668, 0xB05C, 0x7669, 0xB05D, 0x766A, 0xB05E,
+	0x766B, 0xF1B2, 0x766C, 0xB05F, 0x766D, 0xB060, 0x766E, 0xB061,
+	0x766F, 0xF1B3, 0x7670, 0xB062, 0x7671, 0xB063, 0x7672, 0xB064,
+	0x7673, 0xB065, 0x7674, 0xB066, 0x7675, 0xB067, 0x7676, 0xB068,
+	0x7677, 0xB069, 0x7678, 0xB9EF, 0x7679, 0xB06A, 0x767A, 0xB06B,
+	0x767B, 0xB5C7, 0x767C, 0xB06C, 0x767D, 0xB0D7, 0x767E, 0xB0D9,
+	0x767F, 0xB06D, 0x7680, 0xB06E, 0x7681, 0xB06F, 0x7682, 0xD4ED,
+	0x7683, 0xB070, 0x7684, 0xB5C4, 0x7685, 0xB071, 0x7686, 0xBDD4,
+	0x7687, 0xBBCA, 0x7688, 0xF0A7, 0x7689, 0xB072, 0x768A, 0xB073,
+	0x768B, 0xB8DE, 0x768C, 0xB074, 0x768D, 0xB075, 0x768E, 0xF0A8,
+	0x768F, 0xB076, 0x7690, 0xB077, 0x7691, 0xB0A8, 0x7692, 0xB078,
+	0x7693, 0xF0A9, 0x7694, 0xB079, 0x7695, 0xB07A, 0x7696, 0xCDEE,
+	0x7697, 0xB07B, 0x7698, 0xB07C, 0x7699, 0xF0AA, 0x769A, 0xB07D,
+	0x769B, 0xB07E, 0x769C, 0xB080, 0x769D, 0xB081, 0x769E, 0xB082,
+	0x769F, 0xB083, 0x76A0, 0xB084, 0x76A1, 0xB085, 0x76A2, 0xB086,
+	0x76A3, 0xB087, 0x76A4, 0xF0AB, 0x76A5, 0xB088, 0x76A6, 0xB089,
+	0x76A7, 0xB08A, 0x76A8, 0xB08B, 0x76A9, 0xB08C, 0x76AA, 0xB08D,
+	0x76AB, 0xB08E, 0x76AC, 0xB08F, 0x76AD, 0xB090, 0x76AE, 0xC6A4,
+	0x76AF, 0xB091, 0x76B0, 0xB092, 0x76B1, 0xD6E5, 0x76B2, 0xF1E4,
+	0x76B3, 0xB093, 0x76B4, 0xF1E5, 0x76B5, 0xB094, 0x76B6, 0xB095,
+	0x76B7, 0xB096, 0x76B8, 0xB097, 0x76B9, 0xB098, 0x76BA, 0xB099,
+	0x76BB, 0xB09A, 0x76BC, 0xB09B, 0x76BD, 0xB09C, 0x76BE, 0xB09D,
+	0x76BF, 0xC3F3, 0x76C0, 0xB09E, 0x76C1, 0xB09F, 0x76C2, 0xD3DB,
+	0x76C3, 0xB0A0, 0x76C4, 0xB140, 0x76C5, 0xD6D1, 0x76C6, 0xC5E8,
+	0x76C7, 0xB141, 0x76C8, 0xD3AF, 0x76C9, 0xB142, 0x76CA, 0xD2E6,
+	0x76CB, 0xB143, 0x76CC, 0xB144, 0x76CD, 0xEEC1, 0x76CE, 0xB0BB,
+	0x76CF, 0xD5B5, 0x76D0, 0xD1CE, 0x76D1, 0xBCE0, 0x76D2, 0xBAD0,
+	0x76D3, 0xB145, 0x76D4, 0xBFF8, 0x76D5, 0xB146, 0x76D6, 0xB8C7,
+	0x76D7, 0xB5C1, 0x76D8, 0xC5CC, 0x76D9, 0xB147, 0x76DA, 0xB148,
+	0x76DB, 0xCAA2, 0x76DC, 0xB149, 0x76DD, 0xB14A, 0x76DE, 0xB14B,
+	0x76DF, 0xC3CB, 0x76E0, 0xB14C, 0x76E1, 0xB14D, 0x76E2, 0xB14E,
+	0x76E3, 0xB14F, 0x76E4, 0xB150, 0x76E5, 0xEEC2, 0x76E6, 0xB151,
+	0x76E7, 0xB152, 0x76E8, 0xB153, 0x76E9, 0xB154, 0x76EA, 0xB155,
+	0x76EB, 0xB156, 0x76EC, 0xB157, 0x76ED, 0xB158, 0x76EE, 0xC4BF,
+	0x76EF, 0xB6A2, 0x76F0, 0xB159, 0x76F1, 0xEDEC, 0x76F2, 0xC3A4,
+	0x76F3, 0xB15A, 0x76F4, 0xD6B1, 0x76F5, 0xB15B, 0x76F6, 0xB15C,
+	0x76F7, 0xB15D, 0x76F8, 0xCFE0, 0x76F9, 0xEDEF, 0x76FA, 0xB15E,
+	0x76FB, 0xB15F, 0x76FC, 0xC5CE, 0x76FD, 0xB160, 0x76FE, 0xB6DC,
+	0x76FF, 0xB161, 0x7700, 0xB162, 0x7701, 0xCAA1, 0x7702, 0xB163,
+	0x7703, 0xB164, 0x7704, 0xEDED, 0x7705, 0xB165, 0x7706, 0xB166,
+	0x7707, 0xEDF0, 0x7708, 0xEDF1, 0x7709, 0xC3BC, 0x770A, 0xB167,
+	0x770B, 0xBFB4, 0x770C, 0xB168, 0x770D, 0xEDEE, 0x770E, 0xB169,
+	0x770F, 0xB16A, 0x7710, 0xB16B, 0x7711, 0xB16C, 0x7712, 0xB16D,
+	0x7713, 0xB16E, 0x7714, 0xB16F, 0x7715, 0xB170, 0x7716, 0xB171,
+	0x7717, 0xB172, 0x7718, 0xB173, 0x7719, 0xEDF4, 0x771A, 0xEDF2,
+	0x771B, 0xB174, 0x771C, 0xB175, 0x771D, 0xB176, 0x771E, 0xB177,
+	0x771F, 0xD5E6, 0x7720, 0xC3DF, 0x7721, 0xB178, 0x7722, 0xEDF3,
+	0x7723, 0xB179, 0x7724, 0xB17A, 0x7725, 0xB17B, 0x7726, 0xEDF6,
+	0x7727, 0xB17C, 0x7728, 0xD5A3, 0x7729, 0xD1A3, 0x772A, 0xB17D,
+	0x772B, 0xB17E, 0x772C, 0xB180, 0x772D, 0xEDF5, 0x772E, 0xB181,
+	0x772F, 0xC3D0, 0x7730, 0xB182, 0x7731, 0xB183, 0x7732, 0xB184,
+	0x7733, 0xB185, 0x7734, 0xB186, 0x7735, 0xEDF7, 0x7736, 0xBFF4,
+	0x7737, 0xBEEC, 0x7738, 0xEDF8, 0x7739, 0xB187, 0x773A, 0xCCF7,
+	0x773B, 0xB188, 0x773C, 0xD1DB, 0x773D, 0xB189, 0x773E, 0xB18A,
+	0x773F, 0xB18B, 0x7740, 0xD7C5, 0x7741, 0xD5F6, 0x7742, 0xB18C,
+	0x7743, 0xEDFC, 0x7744, 0xB18D, 0x7745, 0xB18E, 0x7746, 0xB18F,
+	0x7747, 0xEDFB, 0x7748, 0xB190, 0x7749, 0xB191, 0x774A, 0xB192,
+	0x774B, 0xB193, 0x774C, 0xB194, 0x774D, 0xB195, 0x774E, 0xB196,
+	0x774F, 0xB197, 0x7750, 0xEDF9, 0x7751, 0xEDFA, 0x7752, 0xB198,
+	0x7753, 0xB199, 0x7754, 0xB19A, 0x7755, 0xB19B, 0x7756, 0xB19C,
+	0x7757, 0xB19D, 0x7758, 0xB19E, 0x7759, 0xB19F, 0x775A, 0xEDFD,
+	0x775B, 0xBEA6, 0x775C, 0xB1A0, 0x775D, 0xB240, 0x775E, 0xB241,
+	0x775F, 0xB242, 0x7760, 0xB243, 0x7761, 0xCBAF, 0x7762, 0xEEA1,
+	0x7763, 0xB6BD, 0x7764, 0xB244, 0x7765, 0xEEA2, 0x7766, 0xC4C0,
+	0x7767, 0xB245, 0x7768, 0xEDFE, 0x7769, 0xB246, 0x776A, 0xB247,
+	0x776B, 0xBDDE, 0x776C, 0xB2C7, 0x776D, 0xB248, 0x776E, 0xB249,
+	0x776F, 0xB24A, 0x7770, 0xB24B, 0x7771, 0xB24C, 0x7772, 0xB24D,
+	0x7773, 0xB24E, 0x7774, 0xB24F, 0x7775, 0xB250, 0x7776, 0xB251,
+	0x7777, 0xB252, 0x7778, 0xB253, 0x7779, 0xB6C3, 0x777A, 0xB254,
+	0x777B, 0xB255, 0x777C, 0xB256, 0x777D, 0xEEA5, 0x777E, 0xD8BA,
+	0x777F, 0xEEA3, 0x7780, 0xEEA6, 0x7781, 0xB257, 0x7782, 0xB258,
+	0x7783, 0xB259, 0x7784, 0xC3E9, 0x7785, 0xB3F2, 0x7786, 0xB25A,
+	0x7787, 0xB25B, 0x7788, 0xB25C, 0x7789, 0xB25D, 0x778A, 0xB25E,
+	0x778B, 0xB25F, 0x778C, 0xEEA7, 0x778D, 0xEEA4, 0x778E, 0xCFB9,
+	0x778F, 0xB260, 0x7790, 0xB261, 0x7791, 0xEEA8, 0x7792, 0xC2F7,
+	0x7793, 0xB262, 0x7794, 0xB263, 0x7795, 0xB264, 0x7796, 0xB265,
+	0x7797, 0xB266, 0x7798, 0xB267, 0x7799, 0xB268, 0x779A, 0xB269,
+	0x779B, 0xB26A, 0x779C, 0xB26B, 0x779D, 0xB26C, 0x779E, 0xB26D,
+	0x779F, 0xEEA9, 0x77A0, 0xEEAA, 0x77A1, 0xB26E, 0x77A2, 0xDEAB,
+	0x77A3, 0xB26F, 0x77A4, 0xB270, 0x77A5, 0xC6B3, 0x77A6, 0xB271,
+	0x77A7, 0xC7C6, 0x77A8, 0xB272, 0x77A9, 0xD6F5, 0x77AA, 0xB5C9,
+	0x77AB, 0xB273, 0x77AC, 0xCBB2, 0x77AD, 0xB274, 0x77AE, 0xB275,
+	0x77AF, 0xB276, 0x77B0, 0xEEAB, 0x77B1, 0xB277, 0x77B2, 0xB278,
+	0x77B3, 0xCDAB, 0x77B4, 0xB279, 0x77B5, 0xEEAC, 0x77B6, 0xB27A,
+	0x77B7, 0xB27B, 0x77B8, 0xB27C, 0x77B9, 0xB27D, 0x77BA, 0xB27E,
+	0x77BB, 0xD5B0, 0x77BC, 0xB280, 0x77BD, 0xEEAD, 0x77BE, 0xB281,
+	0x77BF, 0xF6C4, 0x77C0, 0xB282, 0x77C1, 0xB283, 0x77C2, 0xB284,
+	0x77C3, 0xB285, 0x77C4, 0xB286, 0x77C5, 0xB287, 0x77C6, 0xB288,
+	0x77C7, 0xB289, 0x77C8, 0xB28A, 0x77C9, 0xB28B, 0x77CA, 0xB28C,
+	0x77CB, 0xB28D, 0x77CC, 0xB28E, 0x77CD, 0xDBC7, 0x77CE, 0xB28F,
+	0x77CF, 0xB290, 0x77D0, 0xB291, 0x77D1, 0xB292, 0x77D2, 0xB293,
+	0x77D3, 0xB294, 0x77D4, 0xB295, 0x77D5, 0xB296, 0x77D6, 0xB297,
+	0x77D7, 0xB4A3, 0x77D8, 0xB298, 0x77D9, 0xB299, 0x77DA, 0xB29A,
+	0x77DB, 0xC3AC, 0x77DC, 0xF1E6, 0x77DD, 0xB29B, 0x77DE, 0xB29C,
+	0x77DF, 0xB29D, 0x77E0, 0xB29E, 0x77E1, 0xB29F, 0x77E2, 0xCAB8,
+	0x77E3, 0xD2D3, 0x77E4, 0xB2A0, 0x77E5, 0xD6AA, 0x77E6, 0xB340,
+	0x77E7, 0xEFF2, 0x77E8, 0xB341, 0x77E9, 0xBED8, 0x77EA, 0xB342,
+	0x77EB, 0xBDC3, 0x77EC, 0xEFF3, 0x77ED, 0xB6CC, 0x77EE, 0xB0AB,
+	0x77EF, 0xB343, 0x77F0, 0xB344, 0x77F1, 0xB345, 0x77F2, 0xB346,
+	0x77F3, 0xCAAF, 0x77F4, 0xB347, 0x77F5, 0xB348, 0x77F6, 0xEDB6,
+	0x77F7, 0xB349, 0x77F8, 0xEDB7, 0x77F9, 0xB34A, 0x77FA, 0xB34B,
+	0x77FB, 0xB34C, 0x77FC, 0xB34D, 0x77FD, 0xCEF9, 0x77FE, 0xB7AF,
+	0x77FF, 0xBFF3, 0x7800, 0xEDB8, 0x7801, 0xC2EB, 0x7802, 0xC9B0,
+	0x7803, 0xB34E, 0x7804, 0xB34F, 0x7805, 0xB350, 0x7806, 0xB351,
+	0x7807, 0xB352, 0x7808, 0xB353, 0x7809, 0xEDB9, 0x780A, 0xB354,
+	0x780B, 0xB355, 0x780C, 0xC6F6, 0x780D, 0xBFB3, 0x780E, 0xB356,
+	0x780F, 0xB357, 0x7810, 0xB358, 0x7811, 0xEDBC, 0x7812, 0xC5F8,
+	0x7813, 0xB359, 0x7814, 0xD1D0, 0x7815, 0xB35A, 0x7816, 0xD7A9,
+	0x7817, 0xEDBA, 0x7818, 0xEDBB, 0x7819, 0xB35B, 0x781A, 0xD1E2,
+	0x781B, 0xB35C, 0x781C, 0xEDBF, 0x781D, 0xEDC0, 0x781E, 0xB35D,
+	0x781F, 0xEDC4, 0x7820, 0xB35E, 0x7821, 0xB35F, 0x7822, 0xB360,
+	0x7823, 0xEDC8, 0x7824, 0xB361, 0x7825, 0xEDC6, 0x7826, 0xEDCE,
+	0x7827, 0xD5E8, 0x7828, 0xB362, 0x7829, 0xEDC9, 0x782A, 0xB363,
+	0x782B, 0xB364, 0x782C, 0xEDC7, 0x782D, 0xEDBE, 0x782E, 0xB365,
+	0x782F, 0xB366, 0x7830, 0xC5E9, 0x7831, 0xB367, 0x7832, 0xB368,
+	0x7833, 0xB369, 0x7834, 0xC6C6, 0x7835, 0xB36A, 0x7836, 0xB36B,
+	0x7837, 0xC9E9, 0x7838, 0xD4D2, 0x7839, 0xEDC1, 0x783A, 0xEDC2,
+	0x783B, 0xEDC3, 0x783C, 0xEDC5, 0x783D, 0xB36C, 0x783E, 0xC0F9,
+	0x783F, 0xB36D, 0x7840, 0xB4A1, 0x7841, 0xB36E, 0x7842, 0xB36F,
+	0x7843, 0xB370, 0x7844, 0xB371, 0x7845, 0xB9E8, 0x7846, 0xB372,
+	0x7847, 0xEDD0, 0x7848, 0xB373, 0x7849, 0xB374, 0x784A, 0xB375,
+	0x784B, 0xB376, 0x784C, 0xEDD1, 0x784D, 0xB377, 0x784E, 0xEDCA,
+	0x784F, 0xB378, 0x7850, 0xEDCF, 0x7851, 0xB379, 0x7852, 0xCEF8,
+	0x7853, 0xB37A, 0x7854, 0xB37B, 0x7855, 0xCBB6, 0x7856, 0xEDCC,
+	0x7857, 0xEDCD, 0x7858, 0xB37C, 0x7859, 0xB37D, 0x785A, 0xB37E,
+	0x785B, 0xB380, 0x785C, 0xB381, 0x785D, 0xCFF5, 0x785E, 0xB382,
+	0x785F, 0xB383, 0x7860, 0xB384, 0x7861, 0xB385, 0x7862, 0xB386,
+	0x7863, 0xB387, 0x7864, 0xB388, 0x7865, 0xB389, 0x7866, 0xB38A,
+	0x7867, 0xB38B, 0x7868, 0xB38C, 0x7869, 0xB38D, 0x786A, 0xEDD2,
+	0x786B, 0xC1F2, 0x786C, 0xD3B2, 0x786D, 0xEDCB, 0x786E, 0xC8B7,
+	0x786F, 0xB38E, 0x7870, 0xB38F, 0x7871, 0xB390, 0x7872, 0xB391,
+	0x7873, 0xB392, 0x7874, 0xB393, 0x7875, 0xB394, 0x7876, 0xB395,
+	0x7877, 0xBCEF, 0x7878, 0xB396, 0x7879, 0xB397, 0x787A, 0xB398,
+	0x787B, 0xB399, 0x787C, 0xC5F0, 0x787D, 0xB39A, 0x787E, 0xB39B,
+	0x787F, 0xB39C, 0x7880, 0xB39D, 0x7881, 0xB39E, 0x7882, 0xB39F,
+	0x7883, 0xB3A0, 0x7884, 0xB440, 0x7885, 0xB441, 0x7886, 0xB442,
+	0x7887, 0xEDD6, 0x7888, 0xB443, 0x7889, 0xB5EF, 0x788A, 0xB444,
+	0x788B, 0xB445, 0x788C, 0xC2B5, 0x788D, 0xB0AD, 0x788E, 0xCBE9,
+	0x788F, 0xB446, 0x7890, 0xB447, 0x7891, 0xB1AE, 0x7892, 0xB448,
+	0x7893, 0xEDD4, 0x7894, 0xB449, 0x7895, 0xB44A, 0x7896, 0xB44B,
+	0x7897, 0xCDEB, 0x7898, 0xB5E2, 0x7899, 0xB44C, 0x789A, 0xEDD5,
+	0x789B, 0xEDD3, 0x789C, 0xEDD7, 0x789D, 0xB44D, 0x789E, 0xB44E,
+	0x789F, 0xB5FA, 0x78A0, 0xB44F, 0x78A1, 0xEDD8, 0x78A2, 0xB450,
+	0x78A3, 0xEDD9, 0x78A4, 0xB451, 0x78A5, 0xEDDC, 0x78A6, 0xB452,
+	0x78A7, 0xB1CC, 0x78A8, 0xB453, 0x78A9, 0xB454, 0x78AA, 0xB455,
+	0x78AB, 0xB456, 0x78AC, 0xB457, 0x78AD, 0xB458, 0x78AE, 0xB459,
+	0x78AF, 0xB45A, 0x78B0, 0xC5F6, 0x78B1, 0xBCEE, 0x78B2, 0xEDDA,
+	0x78B3, 0xCCBC, 0x78B4, 0xB2EA, 0x78B5, 0xB45B, 0x78B6, 0xB45C,
+	0x78B7, 0xB45D, 0x78B8, 0xB45E, 0x78B9, 0xEDDB, 0x78BA, 0xB45F,
+	0x78BB, 0xB460, 0x78BC, 0xB461, 0x78BD, 0xB462, 0x78BE, 0xC4EB,
+	0x78BF, 0xB463, 0x78C0, 0xB464, 0x78C1, 0xB4C5, 0x78C2, 0xB465,
+	0x78C3, 0xB466, 0x78C4, 0xB467, 0x78C5, 0xB0F5, 0x78C6, 0xB468,
+	0x78C7, 0xB469, 0x78C8, 0xB46A, 0x78C9, 0xEDDF, 0x78CA, 0xC0DA,
+	0x78CB, 0xB4E8, 0x78CC, 0xB46B, 0x78CD, 0xB46C, 0x78CE, 0xB46D,
+	0x78CF, 0xB46E, 0x78D0, 0xC5CD, 0x78D1, 0xB46F, 0x78D2, 0xB470,
+	0x78D3, 0xB471, 0x78D4, 0xEDDD, 0x78D5, 0xBFC4, 0x78D6, 0xB472,
+	0x78D7, 0xB473, 0x78D8, 0xB474, 0x78D9, 0xEDDE, 0x78DA, 0xB475,
+	0x78DB, 0xB476, 0x78DC, 0xB477, 0x78DD, 0xB478, 0x78DE, 0xB479,
+	0x78DF, 0xB47A, 0x78E0, 0xB47B, 0x78E1, 0xB47C, 0x78E2, 0xB47D,
+	0x78E3, 0xB47E, 0x78E4, 0xB480, 0x78E5, 0xB481, 0x78E6, 0xB482,
+	0x78E7, 0xB483, 0x78E8, 0xC4A5, 0x78E9, 0xB484, 0x78EA, 0xB485,
+	0x78EB, 0xB486, 0x78EC, 0xEDE0, 0x78ED, 0xB487, 0x78EE, 0xB488,
+	0x78EF, 0xB489, 0x78F0, 0xB48A, 0x78F1, 0xB48B, 0x78F2, 0xEDE1,
+	0x78F3, 0xB48C, 0x78F4, 0xEDE3, 0x78F5, 0xB48D, 0x78F6, 0xB48E,
+	0x78F7, 0xC1D7, 0x78F8, 0xB48F, 0x78F9, 0xB490, 0x78FA, 0xBBC7,
+	0x78FB, 0xB491, 0x78FC, 0xB492, 0x78FD, 0xB493, 0x78FE, 0xB494,
+	0x78FF, 0xB495, 0x7900, 0xB496, 0x7901, 0xBDB8, 0x7902, 0xB497,
+	0x7903, 0xB498, 0x7904, 0xB499, 0x7905, 0xEDE2, 0x7906, 0xB49A,
+	0x7907, 0xB49B, 0x7908, 0xB49C, 0x7909, 0xB49D, 0x790A, 0xB49E,
+	0x790B, 0xB49F, 0x790C, 0xB4A0, 0x790D, 0xB540, 0x790E, 0xB541,
+	0x790F, 0xB542, 0x7910, 0xB543, 0x7911, 0xB544, 0x7912, 0xB545,
+	0x7913, 0xEDE4, 0x7914, 0xB546, 0x7915, 0xB547, 0x7916, 0xB548,
+	0x7917, 0xB549, 0x7918, 0xB54A, 0x7919, 0xB54B, 0x791A, 0xB54C,
+	0x791B, 0xB54D, 0x791C, 0xB54E, 0x791D, 0xB54F, 0x791E, 0xEDE6,
+	0x791F, 0xB550, 0x7920, 0xB551, 0x7921, 0xB552, 0x7922, 0xB553,
+	0x7923, 0xB554, 0x7924, 0xEDE5, 0x7925, 0xB555, 0x7926, 0xB556,
+	0x7927, 0xB557, 0x7928, 0xB558, 0x7929, 0xB559, 0x792A, 0xB55A,
+	0x792B, 0xB55B, 0x792C, 0xB55C, 0x792D, 0xB55D, 0x792E, 0xB55E,
+	0x792F, 0xB55F, 0x7930, 0xB560, 0x7931, 0xB561, 0x7932, 0xB562,
+	0x7933, 0xB563, 0x7934, 0xEDE7, 0x7935, 0xB564, 0x7936, 0xB565,
+	0x7937, 0xB566, 0x7938, 0xB567, 0x7939, 0xB568, 0x793A, 0xCABE,
+	0x793B, 0xECEA, 0x793C, 0xC0F1, 0x793D, 0xB569, 0x793E, 0xC9E7,
+	0x793F, 0xB56A, 0x7940, 0xECEB, 0x7941, 0xC6EE, 0x7942, 0xB56B,
+	0x7943, 0xB56C, 0x7944, 0xB56D, 0x7945, 0xB56E, 0x7946, 0xECEC,
+	0x7947, 0xB56F, 0x7948, 0xC6ED, 0x7949, 0xECED, 0x794A, 0xB570,
+	0x794B, 0xB571, 0x794C, 0xB572, 0x794D, 0xB573, 0x794E, 0xB574,
+	0x794F, 0xB575, 0x7950, 0xB576, 0x7951, 0xB577, 0x7952, 0xB578,
+	0x7953, 0xECF0, 0x7954, 0xB579, 0x7955, 0xB57A, 0x7956, 0xD7E6,
+	0x7957, 0xECF3, 0x7958, 0xB57B, 0x7959, 0xB57C, 0x795A, 0xECF1,
+	0x795B, 0xECEE, 0x795C, 0xECEF, 0x795D, 0xD7A3, 0x795E, 0xC9F1,
+	0x795F, 0xCBEE, 0x7960, 0xECF4, 0x7961, 0xB57D, 0x7962, 0xECF2,
+	0x7963, 0xB57E, 0x7964, 0xB580, 0x7965, 0xCFE9, 0x7966, 0xB581,
+	0x7967, 0xECF6, 0x7968, 0xC6B1, 0x7969, 0xB582, 0x796A, 0xB583,
+	0x796B, 0xB584, 0x796C, 0xB585, 0x796D, 0xBCC0, 0x796E, 0xB586,
+	0x796F, 0xECF5, 0x7970, 0xB587, 0x7971, 0xB588, 0x7972, 0xB589,
+	0x7973, 0xB58A, 0x7974, 0xB58B, 0x7975, 0xB58C, 0x7976, 0xB58D,
+	0x7977, 0xB5BB, 0x7978, 0xBBF6, 0x7979, 0xB58E, 0x797A, 0xECF7,
+	0x797B, 0xB58F, 0x797C, 0xB590, 0x797D, 0xB591, 0x797E, 0xB592,
+	0x797F, 0xB593, 0x7980, 0xD9F7, 0x7981, 0xBDFB, 0x7982, 0xB594,
+	0x7983, 0xB595, 0x7984, 0xC2BB, 0x7985, 0xECF8, 0x7986, 0xB596,
+	0x7987, 0xB597, 0x7988, 0xB598, 0x7989, 0xB599, 0x798A, 0xECF9,
+	0x798B, 0xB59A, 0x798C, 0xB59B, 0x798D, 0xB59C, 0x798E, 0xB59D,
+	0x798F, 0xB8A3, 0x7990, 0xB59E, 0x7991, 0xB59F, 0x7992, 0xB5A0,
+	0x7993, 0xB640, 0x7994, 0xB641, 0x7995, 0xB642, 0x7996, 0xB643,
+	0x7997, 0xB644, 0x7998, 0xB645, 0x7999, 0xB646, 0x799A, 0xECFA,
+	0x799B, 0xB647, 0x799C, 0xB648, 0x799D, 0xB649, 0x799E, 0xB64A,
+	0x799F, 0xB64B, 0x79A0, 0xB64C, 0x79A1, 0xB64D, 0x79A2, 0xB64E,
+	0x79A3, 0xB64F, 0x79A4, 0xB650, 0x79A5, 0xB651, 0x79A6, 0xB652,
+	0x79A7, 0xECFB, 0x79A8, 0xB653, 0x79A9, 0xB654, 0x79AA, 0xB655,
+	0x79AB, 0xB656, 0x79AC, 0xB657, 0x79AD, 0xB658, 0x79AE, 0xB659,
+	0x79AF, 0xB65A, 0x79B0, 0xB65B, 0x79B1, 0xB65C, 0x79B2, 0xB65D,
+	0x79B3, 0xECFC, 0x79B4, 0xB65E, 0x79B5, 0xB65F, 0x79B6, 0xB660,
+	0x79B7, 0xB661, 0x79B8, 0xB662, 0x79B9, 0xD3ED, 0x79BA, 0xD8AE,
+	0x79BB, 0xC0EB, 0x79BC, 0xB663, 0x79BD, 0xC7DD, 0x79BE, 0xBACC,
+	0x79BF, 0xB664, 0x79C0, 0xD0E3, 0x79C1, 0xCBBD, 0x79C2, 0xB665,
+	0x79C3, 0xCDBA, 0x79C4, 0xB666, 0x79C5, 0xB667, 0x79C6, 0xB8D1,
+	0x79C7, 0xB668, 0x79C8, 0xB669, 0x79C9, 0xB1FC, 0x79CA, 0xB66A,
+	0x79CB, 0xC7EF, 0x79CC, 0xB66B, 0x79CD, 0xD6D6, 0x79CE, 0xB66C,
+	0x79CF, 0xB66D, 0x79D0, 0xB66E, 0x79D1, 0xBFC6, 0x79D2, 0xC3EB,
+	0x79D3, 0xB66F, 0x79D4, 0xB670, 0x79D5, 0xEFF5, 0x79D6, 0xB671,
+	0x79D7, 0xB672, 0x79D8, 0xC3D8, 0x79D9, 0xB673, 0x79DA, 0xB674,
+	0x79DB, 0xB675, 0x79DC, 0xB676, 0x79DD, 0xB677, 0x79DE, 0xB678,
+	0x79DF, 0xD7E2, 0x79E0, 0xB679, 0x79E1, 0xB67A, 0x79E2, 0xB67B,
+	0x79E3, 0xEFF7, 0x79E4, 0xB3D3, 0x79E5, 0xB67C, 0x79E6, 0xC7D8,
+	0x79E7, 0xD1ED, 0x79E8, 0xB67D, 0x79E9, 0xD6C8, 0x79EA, 0xB67E,
+	0x79EB, 0xEFF8, 0x79EC, 0xB680, 0x79ED, 0xEFF6, 0x79EE, 0xB681,
+	0x79EF, 0xBBFD, 0x79F0, 0xB3C6, 0x79F1, 0xB682, 0x79F2, 0xB683,
+	0x79F3, 0xB684, 0x79F4, 0xB685, 0x79F5, 0xB686, 0x79F6, 0xB687,
+	0x79F7, 0xB688, 0x79F8, 0xBDD5, 0x79F9, 0xB689, 0x79FA, 0xB68A,
+	0x79FB, 0xD2C6, 0x79FC, 0xB68B, 0x79FD, 0xBBE0, 0x79FE, 0xB68C,
+	0x79FF, 0xB68D, 0x7A00, 0xCFA1, 0x7A01, 0xB68E, 0x7A02, 0xEFFC,
+	0x7A03, 0xEFFB, 0x7A04, 0xB68F, 0x7A05, 0xB690, 0x7A06, 0xEFF9,
+	0x7A07, 0xB691, 0x7A08, 0xB692, 0x7A09, 0xB693, 0x7A0A, 0xB694,
+	0x7A0B, 0xB3CC, 0x7A0C, 0xB695, 0x7A0D, 0xC9D4, 0x7A0E, 0xCBB0,
+	0x7A0F, 0xB696, 0x7A10, 0xB697, 0x7A11, 0xB698, 0x7A12, 0xB699,
+	0x7A13, 0xB69A, 0x7A14, 0xEFFE, 0x7A15, 0xB69B, 0x7A16, 0xB69C,
+	0x7A17, 0xB0DE, 0x7A18, 0xB69D, 0x7A19, 0xB69E, 0x7A1A, 0xD6C9,
+	0x7A1B, 0xB69F, 0x7A1C, 0xB6A0, 0x7A1D, 0xB740, 0x7A1E, 0xEFFD,
+	0x7A1F, 0xB741, 0x7A20, 0xB3ED, 0x7A21, 0xB742, 0x7A22, 0xB743,
+	0x7A23, 0xF6D5, 0x7A24, 0xB744, 0x7A25, 0xB745, 0x7A26, 0xB746,
+	0x7A27, 0xB747, 0x7A28, 0xB748, 0x7A29, 0xB749, 0x7A2A, 0xB74A,
+	0x7A2B, 0xB74B, 0x7A2C, 0xB74C, 0x7A2D, 0xB74D, 0x7A2E, 0xB74E,
+	0x7A2F, 0xB74F, 0x7A30, 0xB750, 0x7A31, 0xB751, 0x7A32, 0xB752,
+	0x7A33, 0xCEC8, 0x7A34, 0xB753, 0x7A35, 0xB754, 0x7A36, 0xB755,
+	0x7A37, 0xF0A2, 0x7A38, 0xB756, 0x7A39, 0xF0A1, 0x7A3A, 0xB757,
+	0x7A3B, 0xB5BE, 0x7A3C, 0xBCDA, 0x7A3D, 0xBBFC, 0x7A3E, 0xB758,
+	0x7A3F, 0xB8E5, 0x7A40, 0xB759, 0x7A41, 0xB75A, 0x7A42, 0xB75B,
+	0x7A43, 0xB75C, 0x7A44, 0xB75D, 0x7A45, 0xB75E, 0x7A46, 0xC4C2,
+	0x7A47, 0xB75F, 0x7A48, 0xB760, 0x7A49, 0xB761, 0x7A4A, 0xB762,
+	0x7A4B, 0xB763, 0x7A4C, 0xB764, 0x7A4D, 0xB765, 0x7A4E, 0xB766,
+	0x7A4F, 0xB767, 0x7A50, 0xB768, 0x7A51, 0xF0A3, 0x7A52, 0xB769,
+	0x7A53, 0xB76A, 0x7A54, 0xB76B, 0x7A55, 0xB76C, 0x7A56, 0xB76D,
+	0x7A57, 0xCBEB, 0x7A58, 0xB76E, 0x7A59, 0xB76F, 0x7A5A, 0xB770,
+	0x7A5B, 0xB771, 0x7A5C, 0xB772, 0x7A5D, 0xB773, 0x7A5E, 0xB774,
+	0x7A5F, 0xB775, 0x7A60, 0xB776, 0x7A61, 0xB777, 0x7A62, 0xB778,
+	0x7A63, 0xB779, 0x7A64, 0xB77A, 0x7A65, 0xB77B, 0x7A66, 0xB77C,
+	0x7A67, 0xB77D, 0x7A68, 0xB77E, 0x7A69, 0xB780, 0x7A6A, 0xB781,
+	0x7A6B, 0xB782, 0x7A6C, 0xB783, 0x7A6D, 0xB784, 0x7A6E, 0xB785,
+	0x7A6F, 0xB786, 0x7A70, 0xF0A6, 0x7A71, 0xB787, 0x7A72, 0xB788,
+	0x7A73, 0xB789, 0x7A74, 0xD1A8, 0x7A75, 0xB78A, 0x7A76, 0xBEBF,
+	0x7A77, 0xC7EE, 0x7A78, 0xF1B6, 0x7A79, 0xF1B7, 0x7A7A, 0xBFD5,
+	0x7A7B, 0xB78B, 0x7A7C, 0xB78C, 0x7A7D, 0xB78D, 0x7A7E, 0xB78E,
+	0x7A7F, 0xB4A9, 0x7A80, 0xF1B8, 0x7A81, 0xCDBB, 0x7A82, 0xB78F,
+	0x7A83, 0xC7D4, 0x7A84, 0xD5AD, 0x7A85, 0xB790, 0x7A86, 0xF1B9,
+	0x7A87, 0xB791, 0x7A88, 0xF1BA, 0x7A89, 0xB792, 0x7A8A, 0xB793,
+	0x7A8B, 0xB794, 0x7A8C, 0xB795, 0x7A8D, 0xC7CF, 0x7A8E, 0xB796,
+	0x7A8F, 0xB797, 0x7A90, 0xB798, 0x7A91, 0xD2A4, 0x7A92, 0xD6CF,
+	0x7A93, 0xB799, 0x7A94, 0xB79A, 0x7A95, 0xF1BB, 0x7A96, 0xBDD1,
+	0x7A97, 0xB4B0, 0x7A98, 0xBEBD, 0x7A99, 0xB79B, 0x7A9A, 0xB79C,
+	0x7A9B, 0xB79D, 0x7A9C, 0xB4DC, 0x7A9D, 0xCED1, 0x7A9E, 0xB79E,
+	0x7A9F, 0xBFDF, 0x7AA0, 0xF1BD, 0x7AA1, 0xB79F, 0x7AA2, 0xB7A0,
+	0x7AA3, 0xB840, 0x7AA4, 0xB841, 0x7AA5, 0xBFFA, 0x7AA6, 0xF1BC,
+	0x7AA7, 0xB842, 0x7AA8, 0xF1BF, 0x7AA9, 0xB843, 0x7AAA, 0xB844,
+	0x7AAB, 0xB845, 0x7AAC, 0xF1BE, 0x7AAD, 0xF1C0, 0x7AAE, 0xB846,
+	0x7AAF, 0xB847, 0x7AB0, 0xB848, 0x7AB1, 0xB849, 0x7AB2, 0xB84A,
+	0x7AB3, 0xF1C1, 0x7AB4, 0xB84B, 0x7AB5, 0xB84C, 0x7AB6, 0xB84D,
+	0x7AB7, 0xB84E, 0x7AB8, 0xB84F, 0x7AB9, 0xB850, 0x7ABA, 0xB851,
+	0x7ABB, 0xB852, 0x7ABC, 0xB853, 0x7ABD, 0xB854, 0x7ABE, 0xB855,
+	0x7ABF, 0xC1FE, 0x7AC0, 0xB856, 0x7AC1, 0xB857, 0x7AC2, 0xB858,
+	0x7AC3, 0xB859, 0x7AC4, 0xB85A, 0x7AC5, 0xB85B, 0x7AC6, 0xB85C,
+	0x7AC7, 0xB85D, 0x7AC8, 0xB85E, 0x7AC9, 0xB85F, 0x7ACA, 0xB860,
+	0x7ACB, 0xC1A2, 0x7ACC, 0xB861, 0x7ACD, 0xB862, 0x7ACE, 0xB863,
+	0x7ACF, 0xB864, 0x7AD0, 0xB865, 0x7AD1, 0xB866, 0x7AD2, 0xB867,
+	0x7AD3, 0xB868, 0x7AD4, 0xB869, 0x7AD5, 0xB86A, 0x7AD6, 0xCAFA,
+	0x7AD7, 0xB86B, 0x7AD8, 0xB86C, 0x7AD9, 0xD5BE, 0x7ADA, 0xB86D,
+	0x7ADB, 0xB86E, 0x7ADC, 0xB86F, 0x7ADD, 0xB870, 0x7ADE, 0xBEBA,
+	0x7ADF, 0xBEB9, 0x7AE0, 0xD5C2, 0x7AE1, 0xB871, 0x7AE2, 0xB872,
+	0x7AE3, 0xBFA2, 0x7AE4, 0xB873, 0x7AE5, 0xCDAF, 0x7AE6, 0xF1B5,
+	0x7AE7, 0xB874, 0x7AE8, 0xB875, 0x7AE9, 0xB876, 0x7AEA, 0xB877,
+	0x7AEB, 0xB878, 0x7AEC, 0xB879, 0x7AED, 0xBDDF, 0x7AEE, 0xB87A,
+	0x7AEF, 0xB6CB, 0x7AF0, 0xB87B, 0x7AF1, 0xB87C, 0x7AF2, 0xB87D,
+	0x7AF3, 0xB87E, 0x7AF4, 0xB880, 0x7AF5, 0xB881, 0x7AF6, 0xB882,
+	0x7AF7, 0xB883, 0x7AF8, 0xB884, 0x7AF9, 0xD6F1, 0x7AFA, 0xF3C3,
+	0x7AFB, 0xB885, 0x7AFC, 0xB886, 0x7AFD, 0xF3C4, 0x7AFE, 0xB887,
+	0x7AFF, 0xB8CD, 0x7B00, 0xB888, 0x7B01, 0xB889, 0x7B02, 0xB88A,
+	0x7B03, 0xF3C6, 0x7B04, 0xF3C7, 0x7B05, 0xB88B, 0x7B06, 0xB0CA,
+	0x7B07, 0xB88C, 0x7B08, 0xF3C5, 0x7B09, 0xB88D, 0x7B0A, 0xF3C9,
+	0x7B0B, 0xCBF1, 0x7B0C, 0xB88E, 0x7B0D, 0xB88F, 0x7B0E, 0xB890,
+	0x7B0F, 0xF3CB, 0x7B10, 0xB891, 0x7B11, 0xD0A6, 0x7B12, 0xB892,
+	0x7B13, 0xB893, 0x7B14, 0xB1CA, 0x7B15, 0xF3C8, 0x7B16, 0xB894,
+	0x7B17, 0xB895, 0x7B18, 0xB896, 0x7B19, 0xF3CF, 0x7B1A, 0xB897,
+	0x7B1B, 0xB5D1, 0x7B1C, 0xB898, 0x7B1D, 0xB899, 0x7B1E, 0xF3D7,
+	0x7B1F, 0xB89A, 0x7B20, 0xF3D2, 0x7B21, 0xB89B, 0x7B22, 0xB89C,
+	0x7B23, 0xB89D, 0x7B24, 0xF3D4, 0x7B25, 0xF3D3, 0x7B26, 0xB7FB,
+	0x7B27, 0xB89E, 0x7B28, 0xB1BF, 0x7B29, 0xB89F, 0x7B2A, 0xF3CE,
+	0x7B2B, 0xF3CA, 0x7B2C, 0xB5DA, 0x7B2D, 0xB8A0, 0x7B2E, 0xF3D0,
+	0x7B2F, 0xB940, 0x7B30, 0xB941, 0x7B31, 0xF3D1, 0x7B32, 0xB942,
+	0x7B33, 0xF3D5, 0x7B34, 0xB943, 0x7B35, 0xB944, 0x7B36, 0xB945,
+	0x7B37, 0xB946, 0x7B38, 0xF3CD, 0x7B39, 0xB947, 0x7B3A, 0xBCE3,
+	0x7B3B, 0xB948, 0x7B3C, 0xC1FD, 0x7B3D, 0xB949, 0x7B3E, 0xF3D6,
+	0x7B3F, 0xB94A, 0x7B40, 0xB94B, 0x7B41, 0xB94C, 0x7B42, 0xB94D,
+	0x7B43, 0xB94E, 0x7B44, 0xB94F, 0x7B45, 0xF3DA, 0x7B46, 0xB950,
+	0x7B47, 0xF3CC, 0x7B48, 0xB951, 0x7B49, 0xB5C8, 0x7B4A, 0xB952,
+	0x7B4B, 0xBDEE, 0x7B4C, 0xF3DC, 0x7B4D, 0xB953, 0x7B4E, 0xB954,
+	0x7B4F, 0xB7A4, 0x7B50, 0xBFF0, 0x7B51, 0xD6FE, 0x7B52, 0xCDB2,
+	0x7B53, 0xB955, 0x7B54, 0xB4F0, 0x7B55, 0xB956, 0x7B56, 0xB2DF,
+	0x7B57, 0xB957, 0x7B58, 0xF3D8, 0x7B59, 0xB958, 0x7B5A, 0xF3D9,
+	0x7B5B, 0xC9B8, 0x7B5C, 0xB959, 0x7B5D, 0xF3DD, 0x7B5E, 0xB95A,
+	0x7B5F, 0xB95B, 0x7B60, 0xF3DE, 0x7B61, 0xB95C, 0x7B62, 0xF3E1,
+	0x7B63, 0xB95D, 0x7B64, 0xB95E, 0x7B65, 0xB95F, 0x7B66, 0xB960,
+	0x7B67, 0xB961, 0x7B68, 0xB962, 0x7B69, 0xB963, 0x7B6A, 0xB964,
+	0x7B6B, 0xB965, 0x7B6C, 0xB966, 0x7B6D, 0xB967, 0x7B6E, 0xF3DF,
+	0x7B6F, 0xB968, 0x7B70, 0xB969, 0x7B71, 0xF3E3, 0x7B72, 0xF3E2,
+	0x7B73, 0xB96A, 0x7B74, 0xB96B, 0x7B75, 0xF3DB, 0x7B76, 0xB96C,
+	0x7B77, 0xBFEA, 0x7B78, 0xB96D, 0x7B79, 0xB3EF, 0x7B7A, 0xB96E,
+	0x7B7B, 0xF3E0, 0x7B7C, 0xB96F, 0x7B7D, 0xB970, 0x7B7E, 0xC7A9,
+	0x7B7F, 0xB971, 0x7B80, 0xBCF2, 0x7B81, 0xB972, 0x7B82, 0xB973,
+	0x7B83, 0xB974, 0x7B84, 0xB975, 0x7B85, 0xF3EB, 0x7B86, 0xB976,
+	0x7B87, 0xB977, 0x7B88, 0xB978, 0x7B89, 0xB979, 0x7B8A, 0xB97A,
+	0x7B8B, 0xB97B, 0x7B8C, 0xB97C, 0x7B8D, 0xB9BF, 0x7B8E, 0xB97D,
+	0x7B8F, 0xB97E, 0x7B90, 0xF3E4, 0x7B91, 0xB980, 0x7B92, 0xB981,
+	0x7B93, 0xB982, 0x7B94, 0xB2AD, 0x7B95, 0xBBFE, 0x7B96, 0xB983,
+	0x7B97, 0xCBE3, 0x7B98, 0xB984, 0x7B99, 0xB985, 0x7B9A, 0xB986,
+	0x7B9B, 0xB987, 0x7B9C, 0xF3ED, 0x7B9D, 0xF3E9, 0x7B9E, 0xB988,
+	0x7B9F, 0xB989, 0x7BA0, 0xB98A, 0x7BA1, 0xB9DC, 0x7BA2, 0xF3EE,
+	0x7BA3, 0xB98B, 0x7BA4, 0xB98C, 0x7BA5, 0xB98D, 0x7BA6, 0xF3E5,
+	0x7BA7, 0xF3E6, 0x7BA8, 0xF3EA, 0x7BA9, 0xC2E1, 0x7BAA, 0xF3EC,
+	0x7BAB, 0xF3EF, 0x7BAC, 0xF3E8, 0x7BAD, 0xBCFD, 0x7BAE, 0xB98E,
+	0x7BAF, 0xB98F, 0x7BB0, 0xB990, 0x7BB1, 0xCFE4, 0x7BB2, 0xB991,
+	0x7BB3, 0xB992, 0x7BB4, 0xF3F0, 0x7BB5, 0xB993, 0x7BB6, 0xB994,
+	0x7BB7, 0xB995, 0x7BB8, 0xF3E7, 0x7BB9, 0xB996, 0x7BBA, 0xB997,
+	0x7BBB, 0xB998, 0x7BBC, 0xB999, 0x7BBD, 0xB99A, 0x7BBE, 0xB99B,
+	0x7BBF, 0xB99C, 0x7BC0, 0xB99D, 0x7BC1, 0xF3F2, 0x7BC2, 0xB99E,
+	0x7BC3, 0xB99F, 0x7BC4, 0xB9A0, 0x7BC5, 0xBA40, 0x7BC6, 0xD7AD,
+	0x7BC7, 0xC6AA, 0x7BC8, 0xBA41, 0x7BC9, 0xBA42, 0x7BCA, 0xBA43,
+	0x7BCB, 0xBA44, 0x7BCC, 0xF3F3, 0x7BCD, 0xBA45, 0x7BCE, 0xBA46,
+	0x7BCF, 0xBA47, 0x7BD0, 0xBA48, 0x7BD1, 0xF3F1, 0x7BD2, 0xBA49,
+	0x7BD3, 0xC2A8, 0x7BD4, 0xBA4A, 0x7BD5, 0xBA4B, 0x7BD6, 0xBA4C,
+	0x7BD7, 0xBA4D, 0x7BD8, 0xBA4E, 0x7BD9, 0xB8DD, 0x7BDA, 0xF3F5,
+	0x7BDB, 0xBA4F, 0x7BDC, 0xBA50, 0x7BDD, 0xF3F4, 0x7BDE, 0xBA51,
+	0x7BDF, 0xBA52, 0x7BE0, 0xBA53, 0x7BE1, 0xB4DB, 0x7BE2, 0xBA54,
+	0x7BE3, 0xBA55, 0x7BE4, 0xBA56, 0x7BE5, 0xF3F6, 0x7BE6, 0xF3F7,
+	0x7BE7, 0xBA57, 0x7BE8, 0xBA58, 0x7BE9, 0xBA59, 0x7BEA, 0xF3F8,
+	0x7BEB, 0xBA5A, 0x7BEC, 0xBA5B, 0x7BED, 0xBA5C, 0x7BEE, 0xC0BA,
+	0x7BEF, 0xBA5D, 0x7BF0, 0xBA5E, 0x7BF1, 0xC0E9, 0x7BF2, 0xBA5F,
+	0x7BF3, 0xBA60, 0x7BF4, 0xBA61, 0x7BF5, 0xBA62, 0x7BF6, 0xBA63,
+	0x7BF7, 0xC5F1, 0x7BF8, 0xBA64, 0x7BF9, 0xBA65, 0x7BFA, 0xBA66,
+	0x7BFB, 0xBA67, 0x7BFC, 0xF3FB, 0x7BFD, 0xBA68, 0x7BFE, 0xF3FA,
+	0x7BFF, 0xBA69, 0x7C00, 0xBA6A, 0x7C01, 0xBA6B, 0x7C02, 0xBA6C,
+	0x7C03, 0xBA6D, 0x7C04, 0xBA6E, 0x7C05, 0xBA6F, 0x7C06, 0xBA70,
+	0x7C07, 0xB4D8, 0x7C08, 0xBA71, 0x7C09, 0xBA72, 0x7C0A, 0xBA73,
+	0x7C0B, 0xF3FE, 0x7C0C, 0xF3F9, 0x7C0D, 0xBA74, 0x7C0E, 0xBA75,
+	0x7C0F, 0xF3FC, 0x7C10, 0xBA76, 0x7C11, 0xBA77, 0x7C12, 0xBA78,
+	0x7C13, 0xBA79, 0x7C14, 0xBA7A, 0x7C15, 0xBA7B, 0x7C16, 0xF3FD,
+	0x7C17, 0xBA7C, 0x7C18, 0xBA7D, 0x7C19, 0xBA7E, 0x7C1A, 0xBA80,
+	0x7C1B, 0xBA81, 0x7C1C, 0xBA82, 0x7C1D, 0xBA83, 0x7C1E, 0xBA84,
+	0x7C1F, 0xF4A1, 0x7C20, 0xBA85, 0x7C21, 0xBA86, 0x7C22, 0xBA87,
+	0x7C23, 0xBA88, 0x7C24, 0xBA89, 0x7C25, 0xBA8A, 0x7C26, 0xF4A3,
+	0x7C27, 0xBBC9, 0x7C28, 0xBA8B, 0x7C29, 0xBA8C, 0x7C2A, 0xF4A2,
+	0x7C2B, 0xBA8D, 0x7C2C, 0xBA8E, 0x7C2D, 0xBA8F, 0x7C2E, 0xBA90,
+	0x7C2F, 0xBA91, 0x7C30, 0xBA92, 0x7C31, 0xBA93, 0x7C32, 0xBA94,
+	0x7C33, 0xBA95, 0x7C34, 0xBA96, 0x7C35, 0xBA97, 0x7C36, 0xBA98,
+	0x7C37, 0xBA99, 0x7C38, 0xF4A4, 0x7C39, 0xBA9A, 0x7C3A, 0xBA9B,
+	0x7C3B, 0xBA9C, 0x7C3C, 0xBA9D, 0x7C3D, 0xBA9E, 0x7C3E, 0xBA9F,
+	0x7C3F, 0xB2BE, 0x7C40, 0xF4A6, 0x7C41, 0xF4A5, 0x7C42, 0xBAA0,
+	0x7C43, 0xBB40, 0x7C44, 0xBB41, 0x7C45, 0xBB42, 0x7C46, 0xBB43,
+	0x7C47, 0xBB44, 0x7C48, 0xBB45, 0x7C49, 0xBB46, 0x7C4A, 0xBB47,
+	0x7C4B, 0xBB48, 0x7C4C, 0xBB49, 0x7C4D, 0xBCAE, 0x7C4E, 0xBB4A,
+	0x7C4F, 0xBB4B, 0x7C50, 0xBB4C, 0x7C51, 0xBB4D, 0x7C52, 0xBB4E,
+	0x7C53, 0xBB4F, 0x7C54, 0xBB50, 0x7C55, 0xBB51, 0x7C56, 0xBB52,
+	0x7C57, 0xBB53, 0x7C58, 0xBB54, 0x7C59, 0xBB55, 0x7C5A, 0xBB56,
+	0x7C5B, 0xBB57, 0x7C5C, 0xBB58, 0x7C5D, 0xBB59, 0x7C5E, 0xBB5A,
+	0x7C5F, 0xBB5B, 0x7C60, 0xBB5C, 0x7C61, 0xBB5D, 0x7C62, 0xBB5E,
+	0x7C63, 0xBB5F, 0x7C64, 0xBB60, 0x7C65, 0xBB61, 0x7C66, 0xBB62,
+	0x7C67, 0xBB63, 0x7C68, 0xBB64, 0x7C69, 0xBB65, 0x7C6A, 0xBB66,
+	0x7C6B, 0xBB67, 0x7C6C, 0xBB68, 0x7C6D, 0xBB69, 0x7C6E, 0xBB6A,
+	0x7C6F, 0xBB6B, 0x7C70, 0xBB6C, 0x7C71, 0xBB6D, 0x7C72, 0xBB6E,
+	0x7C73, 0xC3D7, 0x7C74, 0xD9E1, 0x7C75, 0xBB6F, 0x7C76, 0xBB70,
+	0x7C77, 0xBB71, 0x7C78, 0xBB72, 0x7C79, 0xBB73, 0x7C7A, 0xBB74,
+	0x7C7B, 0xC0E0, 0x7C7C, 0xF4CC, 0x7C7D, 0xD7D1, 0x7C7E, 0xBB75,
+	0x7C7F, 0xBB76, 0x7C80, 0xBB77, 0x7C81, 0xBB78, 0x7C82, 0xBB79,
+	0x7C83, 0xBB7A, 0x7C84, 0xBB7B, 0x7C85, 0xBB7C, 0x7C86, 0xBB7D,
+	0x7C87, 0xBB7E, 0x7C88, 0xBB80, 0x7C89, 0xB7DB, 0x7C8A, 0xBB81,
+	0x7C8B, 0xBB82, 0x7C8C, 0xBB83, 0x7C8D, 0xBB84, 0x7C8E, 0xBB85,
+	0x7C8F, 0xBB86, 0x7C90, 0xBB87, 0x7C91, 0xF4CE, 0x7C92, 0xC1A3,
+	0x7C93, 0xBB88, 0x7C94, 0xBB89, 0x7C95, 0xC6C9, 0x7C96, 0xBB8A,
+	0x7C97, 0xB4D6, 0x7C98, 0xD5B3, 0x7C99, 0xBB8B, 0x7C9A, 0xBB8C,
+	0x7C9B, 0xBB8D, 0x7C9C, 0xF4D0, 0x7C9D, 0xF4CF, 0x7C9E, 0xF4D1,
+	0x7C9F, 0xCBDA, 0x7CA0, 0xBB8E, 0x7CA1, 0xBB8F, 0x7CA2, 0xF4D2,
+	0x7CA3, 0xBB90, 0x7CA4, 0xD4C1, 0x7CA5, 0xD6E0, 0x7CA6, 0xBB91,
+	0x7CA7, 0xBB92, 0x7CA8, 0xBB93, 0x7CA9, 0xBB94, 0x7CAA, 0xB7E0,
+	0x7CAB, 0xBB95, 0x7CAC, 0xBB96, 0x7CAD, 0xBB97, 0x7CAE, 0xC1B8,
+	0x7CAF, 0xBB98, 0x7CB0, 0xBB99, 0x7CB1, 0xC1BB, 0x7CB2, 0xF4D3,
+	0x7CB3, 0xBEAC, 0x7CB4, 0xBB9A, 0x7CB5, 0xBB9B, 0x7CB6, 0xBB9C,
+	0x7CB7, 0xBB9D, 0x7CB8, 0xBB9E, 0x7CB9, 0xB4E2, 0x7CBA, 0xBB9F,
+	0x7CBB, 0xBBA0, 0x7CBC, 0xF4D4, 0x7CBD, 0xF4D5, 0x7CBE, 0xBEAB,
+	0x7CBF, 0xBC40, 0x7CC0, 0xBC41, 0x7CC1, 0xF4D6, 0x7CC2, 0xBC42,
+	0x7CC3, 0xBC43, 0x7CC4, 0xBC44, 0x7CC5, 0xF4DB, 0x7CC6, 0xBC45,
+	0x7CC7, 0xF4D7, 0x7CC8, 0xF4DA, 0x7CC9, 0xBC46, 0x7CCA, 0xBAFD,
+	0x7CCB, 0xBC47, 0x7CCC, 0xF4D8, 0x7CCD, 0xF4D9, 0x7CCE, 0xBC48,
+	0x7CCF, 0xBC49, 0x7CD0, 0xBC4A, 0x7CD1, 0xBC4B, 0x7CD2, 0xBC4C,
+	0x7CD3, 0xBC4D, 0x7CD4, 0xBC4E, 0x7CD5, 0xB8E2, 0x7CD6, 0xCCC7,
+	0x7CD7, 0xF4DC, 0x7CD8, 0xBC4F, 0x7CD9, 0xB2DA, 0x7CDA, 0xBC50,
+	0x7CDB, 0xBC51, 0x7CDC, 0xC3D3, 0x7CDD, 0xBC52, 0x7CDE, 0xBC53,
+	0x7CDF, 0xD4E3, 0x7CE0, 0xBFB7, 0x7CE1, 0xBC54, 0x7CE2, 0xBC55,
+	0x7CE3, 0xBC56, 0x7CE4, 0xBC57, 0x7CE5, 0xBC58, 0x7CE6, 0xBC59,
+	0x7CE7, 0xBC5A, 0x7CE8, 0xF4DD, 0x7CE9, 0xBC5B, 0x7CEA, 0xBC5C,
+	0x7CEB, 0xBC5D, 0x7CEC, 0xBC5E, 0x7CED, 0xBC5F, 0x7CEE, 0xBC60,
+	0x7CEF, 0xC5B4, 0x7CF0, 0xBC61, 0x7CF1, 0xBC62, 0x7CF2, 0xBC63,
+	0x7CF3, 0xBC64, 0x7CF4, 0xBC65, 0x7CF5, 0xBC66, 0x7CF6, 0xBC67,
+	0x7CF7, 0xBC68, 0x7CF8, 0xF4E9, 0x7CF9, 0xBC69, 0x7CFA, 0xBC6A,
+	0x7CFB, 0xCFB5, 0x7CFC, 0xBC6B, 0x7CFD, 0xBC6C, 0x7CFE, 0xBC6D,
+	0x7CFF, 0xBC6E, 0x7D00, 0xBC6F, 0x7D01, 0xBC70, 0x7D02, 0xBC71,
+	0x7D03, 0xBC72, 0x7D04, 0xBC73, 0x7D05, 0xBC74, 0x7D06, 0xBC75,
+	0x7D07, 0xBC76, 0x7D08, 0xBC77, 0x7D09, 0xBC78, 0x7D0A, 0xCEC9,
+	0x7D0B, 0xBC79, 0x7D0C, 0xBC7A, 0x7D0D, 0xBC7B, 0x7D0E, 0xBC7C,
+	0x7D0F, 0xBC7D, 0x7D10, 0xBC7E, 0x7D11, 0xBC80, 0x7D12, 0xBC81,
+	0x7D13, 0xBC82, 0x7D14, 0xBC83, 0x7D15, 0xBC84, 0x7D16, 0xBC85,
+	0x7D17, 0xBC86, 0x7D18, 0xBC87, 0x7D19, 0xBC88, 0x7D1A, 0xBC89,
+	0x7D1B, 0xBC8A, 0x7D1C, 0xBC8B, 0x7D1D, 0xBC8C, 0x7D1E, 0xBC8D,
+	0x7D1F, 0xBC8E, 0x7D20, 0xCBD8, 0x7D21, 0xBC8F, 0x7D22, 0xCBF7,
+	0x7D23, 0xBC90, 0x7D24, 0xBC91, 0x7D25, 0xBC92, 0x7D26, 0xBC93,
+	0x7D27, 0xBDF4, 0x7D28, 0xBC94, 0x7D29, 0xBC95, 0x7D2A, 0xBC96,
+	0x7D2B, 0xD7CF, 0x7D2C, 0xBC97, 0x7D2D, 0xBC98, 0x7D2E, 0xBC99,
+	0x7D2F, 0xC0DB, 0x7D30, 0xBC9A, 0x7D31, 0xBC9B, 0x7D32, 0xBC9C,
+	0x7D33, 0xBC9D, 0x7D34, 0xBC9E, 0x7D35, 0xBC9F, 0x7D36, 0xBCA0,
+	0x7D37, 0xBD40, 0x7D38, 0xBD41, 0x7D39, 0xBD42, 0x7D3A, 0xBD43,
+	0x7D3B, 0xBD44, 0x7D3C, 0xBD45, 0x7D3D, 0xBD46, 0x7D3E, 0xBD47,
+	0x7D3F, 0xBD48, 0x7D40, 0xBD49, 0x7D41, 0xBD4A, 0x7D42, 0xBD4B,
+	0x7D43, 0xBD4C, 0x7D44, 0xBD4D, 0x7D45, 0xBD4E, 0x7D46, 0xBD4F,
+	0x7D47, 0xBD50, 0x7D48, 0xBD51, 0x7D49, 0xBD52, 0x7D4A, 0xBD53,
+	0x7D4B, 0xBD54, 0x7D4C, 0xBD55, 0x7D4D, 0xBD56, 0x7D4E, 0xBD57,
+	0x7D4F, 0xBD58, 0x7D50, 0xBD59, 0x7D51, 0xBD5A, 0x7D52, 0xBD5B,
+	0x7D53, 0xBD5C, 0x7D54, 0xBD5D, 0x7D55, 0xBD5E, 0x7D56, 0xBD5F,
+	0x7D57, 0xBD60, 0x7D58, 0xBD61, 0x7D59, 0xBD62, 0x7D5A, 0xBD63,
+	0x7D5B, 0xBD64, 0x7D5C, 0xBD65, 0x7D5D, 0xBD66, 0x7D5E, 0xBD67,
+	0x7D5F, 0xBD68, 0x7D60, 0xBD69, 0x7D61, 0xBD6A, 0x7D62, 0xBD6B,
+	0x7D63, 0xBD6C, 0x7D64, 0xBD6D, 0x7D65, 0xBD6E, 0x7D66, 0xBD6F,
+	0x7D67, 0xBD70, 0x7D68, 0xBD71, 0x7D69, 0xBD72, 0x7D6A, 0xBD73,
+	0x7D6B, 0xBD74, 0x7D6C, 0xBD75, 0x7D6D, 0xBD76, 0x7D6E, 0xD0F5,
+	0x7D6F, 0xBD77, 0x7D70, 0xBD78, 0x7D71, 0xBD79, 0x7D72, 0xBD7A,
+	0x7D73, 0xBD7B, 0x7D74, 0xBD7C, 0x7D75, 0xBD7D, 0x7D76, 0xBD7E,
+	0x7D77, 0xF4EA, 0x7D78, 0xBD80, 0x7D79, 0xBD81, 0x7D7A, 0xBD82,
+	0x7D7B, 0xBD83, 0x7D7C, 0xBD84, 0x7D7D, 0xBD85, 0x7D7E, 0xBD86,
+	0x7D7F, 0xBD87, 0x7D80, 0xBD88, 0x7D81, 0xBD89, 0x7D82, 0xBD8A,
+	0x7D83, 0xBD8B, 0x7D84, 0xBD8C, 0x7D85, 0xBD8D, 0x7D86, 0xBD8E,
+	0x7D87, 0xBD8F, 0x7D88, 0xBD90, 0x7D89, 0xBD91, 0x7D8A, 0xBD92,
+	0x7D8B, 0xBD93, 0x7D8C, 0xBD94, 0x7D8D, 0xBD95, 0x7D8E, 0xBD96,
+	0x7D8F, 0xBD97, 0x7D90, 0xBD98, 0x7D91, 0xBD99, 0x7D92, 0xBD9A,
+	0x7D93, 0xBD9B, 0x7D94, 0xBD9C, 0x7D95, 0xBD9D, 0x7D96, 0xBD9E,
+	0x7D97, 0xBD9F, 0x7D98, 0xBDA0, 0x7D99, 0xBE40, 0x7D9A, 0xBE41,
+	0x7D9B, 0xBE42, 0x7D9C, 0xBE43, 0x7D9D, 0xBE44, 0x7D9E, 0xBE45,
+	0x7D9F, 0xBE46, 0x7DA0, 0xBE47, 0x7DA1, 0xBE48, 0x7DA2, 0xBE49,
+	0x7DA3, 0xBE4A, 0x7DA4, 0xBE4B, 0x7DA5, 0xBE4C, 0x7DA6, 0xF4EB,
+	0x7DA7, 0xBE4D, 0x7DA8, 0xBE4E, 0x7DA9, 0xBE4F, 0x7DAA, 0xBE50,
+	0x7DAB, 0xBE51, 0x7DAC, 0xBE52, 0x7DAD, 0xBE53, 0x7DAE, 0xF4EC,
+	0x7DAF, 0xBE54, 0x7DB0, 0xBE55, 0x7DB1, 0xBE56, 0x7DB2, 0xBE57,
+	0x7DB3, 0xBE58, 0x7DB4, 0xBE59, 0x7DB5, 0xBE5A, 0x7DB6, 0xBE5B,
+	0x7DB7, 0xBE5C, 0x7DB8, 0xBE5D, 0x7DB9, 0xBE5E, 0x7DBA, 0xBE5F,
+	0x7DBB, 0xBE60, 0x7DBC, 0xBE61, 0x7DBD, 0xBE62, 0x7DBE, 0xBE63,
+	0x7DBF, 0xBE64, 0x7DC0, 0xBE65, 0x7DC1, 0xBE66, 0x7DC2, 0xBE67,
+	0x7DC3, 0xBE68, 0x7DC4, 0xBE69, 0x7DC5, 0xBE6A, 0x7DC6, 0xBE6B,
+	0x7DC7, 0xBE6C, 0x7DC8, 0xBE6D, 0x7DC9, 0xBE6E, 0x7DCA, 0xBE6F,
+	0x7DCB, 0xBE70, 0x7DCC, 0xBE71, 0x7DCD, 0xBE72, 0x7DCE, 0xBE73,
+	0x7DCF, 0xBE74, 0x7DD0, 0xBE75, 0x7DD1, 0xBE76, 0x7DD2, 0xBE77,
+	0x7DD3, 0xBE78, 0x7DD4, 0xBE79, 0x7DD5, 0xBE7A, 0x7DD6, 0xBE7B,
+	0x7DD7, 0xBE7C, 0x7DD8, 0xBE7D, 0x7DD9, 0xBE7E, 0x7DDA, 0xBE80,
+	0x7DDB, 0xBE81, 0x7DDC, 0xBE82, 0x7DDD, 0xBE83, 0x7DDE, 0xBE84,
+	0x7DDF, 0xBE85, 0x7DE0, 0xBE86, 0x7DE1, 0xBE87, 0x7DE2, 0xBE88,
+	0x7DE3, 0xBE89, 0x7DE4, 0xBE8A, 0x7DE5, 0xBE8B, 0x7DE6, 0xBE8C,
+	0x7DE7, 0xBE8D, 0x7DE8, 0xBE8E, 0x7DE9, 0xBE8F, 0x7DEA, 0xBE90,
+	0x7DEB, 0xBE91, 0x7DEC, 0xBE92, 0x7DED, 0xBE93, 0x7DEE, 0xBE94,
+	0x7DEF, 0xBE95, 0x7DF0, 0xBE96, 0x7DF1, 0xBE97, 0x7DF2, 0xBE98,
+	0x7DF3, 0xBE99, 0x7DF4, 0xBE9A, 0x7DF5, 0xBE9B, 0x7DF6, 0xBE9C,
+	0x7DF7, 0xBE9D, 0x7DF8, 0xBE9E, 0x7DF9, 0xBE9F, 0x7DFA, 0xBEA0,
+	0x7DFB, 0xBF40, 0x7DFC, 0xBF41, 0x7DFD, 0xBF42, 0x7DFE, 0xBF43,
+	0x7DFF, 0xBF44, 0x7E00, 0xBF45, 0x7E01, 0xBF46, 0x7E02, 0xBF47,
+	0x7E03, 0xBF48, 0x7E04, 0xBF49, 0x7E05, 0xBF4A, 0x7E06, 0xBF4B,
+	0x7E07, 0xBF4C, 0x7E08, 0xBF4D, 0x7E09, 0xBF4E, 0x7E0A, 0xBF4F,
+	0x7E0B, 0xBF50, 0x7E0C, 0xBF51, 0x7E0D, 0xBF52, 0x7E0E, 0xBF53,
+	0x7E0F, 0xBF54, 0x7E10, 0xBF55, 0x7E11, 0xBF56, 0x7E12, 0xBF57,
+	0x7E13, 0xBF58, 0x7E14, 0xBF59, 0x7E15, 0xBF5A, 0x7E16, 0xBF5B,
+	0x7E17, 0xBF5C, 0x7E18, 0xBF5D, 0x7E19, 0xBF5E, 0x7E1A, 0xBF5F,
+	0x7E1B, 0xBF60, 0x7E1C, 0xBF61, 0x7E1D, 0xBF62, 0x7E1E, 0xBF63,
+	0x7E1F, 0xBF64, 0x7E20, 0xBF65, 0x7E21, 0xBF66, 0x7E22, 0xBF67,
+	0x7E23, 0xBF68, 0x7E24, 0xBF69, 0x7E25, 0xBF6A, 0x7E26, 0xBF6B,
+	0x7E27, 0xBF6C, 0x7E28, 0xBF6D, 0x7E29, 0xBF6E, 0x7E2A, 0xBF6F,
+	0x7E2B, 0xBF70, 0x7E2C, 0xBF71, 0x7E2D, 0xBF72, 0x7E2E, 0xBF73,
+	0x7E2F, 0xBF74, 0x7E30, 0xBF75, 0x7E31, 0xBF76, 0x7E32, 0xBF77,
+	0x7E33, 0xBF78, 0x7E34, 0xBF79, 0x7E35, 0xBF7A, 0x7E36, 0xBF7B,
+	0x7E37, 0xBF7C, 0x7E38, 0xBF7D, 0x7E39, 0xBF7E, 0x7E3A, 0xBF80,
+	0x7E3B, 0xF7E3, 0x7E3C, 0xBF81, 0x7E3D, 0xBF82, 0x7E3E, 0xBF83,
+	0x7E3F, 0xBF84, 0x7E40, 0xBF85, 0x7E41, 0xB7B1, 0x7E42, 0xBF86,
+	0x7E43, 0xBF87, 0x7E44, 0xBF88, 0x7E45, 0xBF89, 0x7E46, 0xBF8A,
+	0x7E47, 0xF4ED, 0x7E48, 0xBF8B, 0x7E49, 0xBF8C, 0x7E4A, 0xBF8D,
+	0x7E4B, 0xBF8E, 0x7E4C, 0xBF8F, 0x7E4D, 0xBF90, 0x7E4E, 0xBF91,
+	0x7E4F, 0xBF92, 0x7E50, 0xBF93, 0x7E51, 0xBF94, 0x7E52, 0xBF95,
+	0x7E53, 0xBF96, 0x7E54, 0xBF97, 0x7E55, 0xBF98, 0x7E56, 0xBF99,
+	0x7E57, 0xBF9A, 0x7E58, 0xBF9B, 0x7E59, 0xBF9C, 0x7E5A, 0xBF9D,
+	0x7E5B, 0xBF9E, 0x7E5C, 0xBF9F, 0x7E5D, 0xBFA0, 0x7E5E, 0xC040,
+	0x7E5F, 0xC041, 0x7E60, 0xC042, 0x7E61, 0xC043, 0x7E62, 0xC044,
+	0x7E63, 0xC045, 0x7E64, 0xC046, 0x7E65, 0xC047, 0x7E66, 0xC048,
+	0x7E67, 0xC049, 0x7E68, 0xC04A, 0x7E69, 0xC04B, 0x7E6A, 0xC04C,
+	0x7E6B, 0xC04D, 0x7E6C, 0xC04E, 0x7E6D, 0xC04F, 0x7E6E, 0xC050,
+	0x7E6F, 0xC051, 0x7E70, 0xC052, 0x7E71, 0xC053, 0x7E72, 0xC054,
+	0x7E73, 0xC055, 0x7E74, 0xC056, 0x7E75, 0xC057, 0x7E76, 0xC058,
+	0x7E77, 0xC059, 0x7E78, 0xC05A, 0x7E79, 0xC05B, 0x7E7A, 0xC05C,
+	0x7E7B, 0xC05D, 0x7E7C, 0xC05E, 0x7E7D, 0xC05F, 0x7E7E, 0xC060,
+	0x7E7F, 0xC061, 0x7E80, 0xC062, 0x7E81, 0xC063, 0x7E82, 0xD7EB,
+	0x7E83, 0xC064, 0x7E84, 0xC065, 0x7E85, 0xC066, 0x7E86, 0xC067,
+	0x7E87, 0xC068, 0x7E88, 0xC069, 0x7E89, 0xC06A, 0x7E8A, 0xC06B,
+	0x7E8B, 0xC06C, 0x7E8C, 0xC06D, 0x7E8D, 0xC06E, 0x7E8E, 0xC06F,
+	0x7E8F, 0xC070, 0x7E90, 0xC071, 0x7E91, 0xC072, 0x7E92, 0xC073,
+	0x7E93, 0xC074, 0x7E94, 0xC075, 0x7E95, 0xC076, 0x7E96, 0xC077,
+	0x7E97, 0xC078, 0x7E98, 0xC079, 0x7E99, 0xC07A, 0x7E9A, 0xC07B,
+	0x7E9B, 0xF4EE, 0x7E9C, 0xC07C, 0x7E9D, 0xC07D, 0x7E9E, 0xC07E,
+	0x7E9F, 0xE6F9, 0x7EA0, 0xBEC0, 0x7EA1, 0xE6FA, 0x7EA2, 0xBAEC,
+	0x7EA3, 0xE6FB, 0x7EA4, 0xCFCB, 0x7EA5, 0xE6FC, 0x7EA6, 0xD4BC,
+	0x7EA7, 0xBCB6, 0x7EA8, 0xE6FD, 0x7EA9, 0xE6FE, 0x7EAA, 0xBCCD,
+	0x7EAB, 0xC8D2, 0x7EAC, 0xCEB3, 0x7EAD, 0xE7A1, 0x7EAE, 0xC080,
+	0x7EAF, 0xB4BF, 0x7EB0, 0xE7A2, 0x7EB1, 0xC9B4, 0x7EB2, 0xB8D9,
+	0x7EB3, 0xC4C9, 0x7EB4, 0xC081, 0x7EB5, 0xD7DD, 0x7EB6, 0xC2DA,
+	0x7EB7, 0xB7D7, 0x7EB8, 0xD6BD, 0x7EB9, 0xCEC6, 0x7EBA, 0xB7C4,
+	0x7EBB, 0xC082, 0x7EBC, 0xC083, 0x7EBD, 0xC5A6, 0x7EBE, 0xE7A3,
+	0x7EBF, 0xCFDF, 0x7EC0, 0xE7A4, 0x7EC1, 0xE7A5, 0x7EC2, 0xE7A6,
+	0x7EC3, 0xC1B7, 0x7EC4, 0xD7E9, 0x7EC5, 0xC9F0, 0x7EC6, 0xCFB8,
+	0x7EC7, 0xD6AF, 0x7EC8, 0xD6D5, 0x7EC9, 0xE7A7, 0x7ECA, 0xB0ED,
+	0x7ECB, 0xE7A8, 0x7ECC, 0xE7A9, 0x7ECD, 0xC9DC, 0x7ECE, 0xD2EF,
+	0x7ECF, 0xBEAD, 0x7ED0, 0xE7AA, 0x7ED1, 0xB0F3, 0x7ED2, 0xC8DE,
+	0x7ED3, 0xBDE1, 0x7ED4, 0xE7AB, 0x7ED5, 0xC8C6, 0x7ED6, 0xC084,
+	0x7ED7, 0xE7AC, 0x7ED8, 0xBBE6, 0x7ED9, 0xB8F8, 0x7EDA, 0xD1A4,
+	0x7EDB, 0xE7AD, 0x7EDC, 0xC2E7, 0x7EDD, 0xBEF8, 0x7EDE, 0xBDCA,
+	0x7EDF, 0xCDB3, 0x7EE0, 0xE7AE, 0x7EE1, 0xE7AF, 0x7EE2, 0xBEEE,
+	0x7EE3, 0xD0E5, 0x7EE4, 0xC085, 0x7EE5, 0xCBE7, 0x7EE6, 0xCCD0,
+	0x7EE7, 0xBCCC, 0x7EE8, 0xE7B0, 0x7EE9, 0xBCA8, 0x7EEA, 0xD0F7,
+	0x7EEB, 0xE7B1, 0x7EEC, 0xC086, 0x7EED, 0xD0F8, 0x7EEE, 0xE7B2,
+	0x7EEF, 0xE7B3, 0x7EF0, 0xB4C2, 0x7EF1, 0xE7B4, 0x7EF2, 0xE7B5,
+	0x7EF3, 0xC9FE, 0x7EF4, 0xCEAC, 0x7EF5, 0xC3E0, 0x7EF6, 0xE7B7,
+	0x7EF7, 0xB1C1, 0x7EF8, 0xB3F1, 0x7EF9, 0xC087, 0x7EFA, 0xE7B8,
+	0x7EFB, 0xE7B9, 0x7EFC, 0xD7DB, 0x7EFD, 0xD5C0, 0x7EFE, 0xE7BA,
+	0x7EFF, 0xC2CC, 0x7F00, 0xD7BA, 0x7F01, 0xE7BB, 0x7F02, 0xE7BC,
+	0x7F03, 0xE7BD, 0x7F04, 0xBCEA, 0x7F05, 0xC3E5, 0x7F06, 0xC0C2,
+	0x7F07, 0xE7BE, 0x7F08, 0xE7BF, 0x7F09, 0xBCA9, 0x7F0A, 0xC088,
+	0x7F0B, 0xE7C0, 0x7F0C, 0xE7C1, 0x7F0D, 0xE7B6, 0x7F0E, 0xB6D0,
+	0x7F0F, 0xE7C2, 0x7F10, 0xC089, 0x7F11, 0xE7C3, 0x7F12, 0xE7C4,
+	0x7F13, 0xBBBA, 0x7F14, 0xB5DE, 0x7F15, 0xC2C6, 0x7F16, 0xB1E0,
+	0x7F17, 0xE7C5, 0x7F18, 0xD4B5, 0x7F19, 0xE7C6, 0x7F1A, 0xB8BF,
+	0x7F1B, 0xE7C8, 0x7F1C, 0xE7C7, 0x7F1D, 0xB7EC, 0x7F1E, 0xC08A,
+	0x7F1F, 0xE7C9, 0x7F20, 0xB2F8, 0x7F21, 0xE7CA, 0x7F22, 0xE7CB,
+	0x7F23, 0xE7CC, 0x7F24, 0xE7CD, 0x7F25, 0xE7CE, 0x7F26, 0xE7CF,
+	0x7F27, 0xE7D0, 0x7F28, 0xD3A7, 0x7F29, 0xCBF5, 0x7F2A, 0xE7D1,
+	0x7F2B, 0xE7D2, 0x7F2C, 0xE7D3, 0x7F2D, 0xE7D4, 0x7F2E, 0xC9C9,
+	0x7F2F, 0xE7D5, 0x7F30, 0xE7D6, 0x7F31, 0xE7D7, 0x7F32, 0xE7D8,
+	0x7F33, 0xE7D9, 0x7F34, 0xBDC9, 0x7F35, 0xE7DA, 0x7F36, 0xF3BE,
+	0x7F37, 0xC08B, 0x7F38, 0xB8D7, 0x7F39, 0xC08C, 0x7F3A, 0xC8B1,
+	0x7F3B, 0xC08D, 0x7F3C, 0xC08E, 0x7F3D, 0xC08F, 0x7F3E, 0xC090,
+	0x7F3F, 0xC091, 0x7F40, 0xC092, 0x7F41, 0xC093, 0x7F42, 0xF3BF,
+	0x7F43, 0xC094, 0x7F44, 0xF3C0, 0x7F45, 0xF3C1, 0x7F46, 0xC095,
+	0x7F47, 0xC096, 0x7F48, 0xC097, 0x7F49, 0xC098, 0x7F4A, 0xC099,
+	0x7F4B, 0xC09A, 0x7F4C, 0xC09B, 0x7F4D, 0xC09C, 0x7F4E, 0xC09D,
+	0x7F4F, 0xC09E, 0x7F50, 0xB9DE, 0x7F51, 0xCDF8, 0x7F52, 0xC09F,
+	0x7F53, 0xC0A0, 0x7F54, 0xD8E8, 0x7F55, 0xBAB1, 0x7F56, 0xC140,
+	0x7F57, 0xC2DE, 0x7F58, 0xEEB7, 0x7F59, 0xC141, 0x7F5A, 0xB7A3,
+	0x7F5B, 0xC142, 0x7F5C, 0xC143, 0x7F5D, 0xC144, 0x7F5E, 0xC145,
+	0x7F5F, 0xEEB9, 0x7F60, 0xC146, 0x7F61, 0xEEB8, 0x7F62, 0xB0D5,
+	0x7F63, 0xC147, 0x7F64, 0xC148, 0x7F65, 0xC149, 0x7F66, 0xC14A,
+	0x7F67, 0xC14B, 0x7F68, 0xEEBB, 0x7F69, 0xD5D6, 0x7F6A, 0xD7EF,
+	0x7F6B, 0xC14C, 0x7F6C, 0xC14D, 0x7F6D, 0xC14E, 0x7F6E, 0xD6C3,
+	0x7F6F, 0xC14F, 0x7F70, 0xC150, 0x7F71, 0xEEBD, 0x7F72, 0xCAF0,
+	0x7F73, 0xC151, 0x7F74, 0xEEBC, 0x7F75, 0xC152, 0x7F76, 0xC153,
+	0x7F77, 0xC154, 0x7F78, 0xC155, 0x7F79, 0xEEBE, 0x7F7A, 0xC156,
+	0x7F7B, 0xC157, 0x7F7C, 0xC158, 0x7F7D, 0xC159, 0x7F7E, 0xEEC0,
+	0x7F7F, 0xC15A, 0x7F80, 0xC15B, 0x7F81, 0xEEBF, 0x7F82, 0xC15C,
+	0x7F83, 0xC15D, 0x7F84, 0xC15E, 0x7F85, 0xC15F, 0x7F86, 0xC160,
+	0x7F87, 0xC161, 0x7F88, 0xC162, 0x7F89, 0xC163, 0x7F8A, 0xD1F2,
+	0x7F8B, 0xC164, 0x7F8C, 0xC7BC, 0x7F8D, 0xC165, 0x7F8E, 0xC3C0,
+	0x7F8F, 0xC166, 0x7F90, 0xC167, 0x7F91, 0xC168, 0x7F92, 0xC169,
+	0x7F93, 0xC16A, 0x7F94, 0xB8E1, 0x7F95, 0xC16B, 0x7F96, 0xC16C,
+	0x7F97, 0xC16D, 0x7F98, 0xC16E, 0x7F99, 0xC16F, 0x7F9A, 0xC1E7,
+	0x7F9B, 0xC170, 0x7F9C, 0xC171, 0x7F9D, 0xF4C6, 0x7F9E, 0xD0DF,
+	0x7F9F, 0xF4C7, 0x7FA0, 0xC172, 0x7FA1, 0xCFDB, 0x7FA2, 0xC173,
+	0x7FA3, 0xC174, 0x7FA4, 0xC8BA, 0x7FA5, 0xC175, 0x7FA6, 0xC176,
+	0x7FA7, 0xF4C8, 0x7FA8, 0xC177, 0x7FA9, 0xC178, 0x7FAA, 0xC179,
+	0x7FAB, 0xC17A, 0x7FAC, 0xC17B, 0x7FAD, 0xC17C, 0x7FAE, 0xC17D,
+	0x7FAF, 0xF4C9, 0x7FB0, 0xF4CA, 0x7FB1, 0xC17E, 0x7FB2, 0xF4CB,
+	0x7FB3, 0xC180, 0x7FB4, 0xC181, 0x7FB5, 0xC182, 0x7FB6, 0xC183,
+	0x7FB7, 0xC184, 0x7FB8, 0xD9FA, 0x7FB9, 0xB8FE, 0x7FBA, 0xC185,
+	0x7FBB, 0xC186, 0x7FBC, 0xE5F1, 0x7FBD, 0xD3F0, 0x7FBE, 0xC187,
+	0x7FBF, 0xF4E0, 0x7FC0, 0xC188, 0x7FC1, 0xCECC, 0x7FC2, 0xC189,
+	0x7FC3, 0xC18A, 0x7FC4, 0xC18B, 0x7FC5, 0xB3E1, 0x7FC6, 0xC18C,
+	0x7FC7, 0xC18D, 0x7FC8, 0xC18E, 0x7FC9, 0xC18F, 0x7FCA, 0xF1B4,
+	0x7FCB, 0xC190, 0x7FCC, 0xD2EE, 0x7FCD, 0xC191, 0x7FCE, 0xF4E1,
+	0x7FCF, 0xC192, 0x7FD0, 0xC193, 0x7FD1, 0xC194, 0x7FD2, 0xC195,
+	0x7FD3, 0xC196, 0x7FD4, 0xCFE8, 0x7FD5, 0xF4E2, 0x7FD6, 0xC197,
+	0x7FD7, 0xC198, 0x7FD8, 0xC7CC, 0x7FD9, 0xC199, 0x7FDA, 0xC19A,
+	0x7FDB, 0xC19B, 0x7FDC, 0xC19C, 0x7FDD, 0xC19D, 0x7FDE, 0xC19E,
+	0x7FDF, 0xB5D4, 0x7FE0, 0xB4E4, 0x7FE1, 0xF4E4, 0x7FE2, 0xC19F,
+	0x7FE3, 0xC1A0, 0x7FE4, 0xC240, 0x7FE5, 0xF4E3, 0x7FE6, 0xF4E5,
+	0x7FE7, 0xC241, 0x7FE8, 0xC242, 0x7FE9, 0xF4E6, 0x7FEA, 0xC243,
+	0x7FEB, 0xC244, 0x7FEC, 0xC245, 0x7FED, 0xC246, 0x7FEE, 0xF4E7,
+	0x7FEF, 0xC247, 0x7FF0, 0xBAB2, 0x7FF1, 0xB0BF, 0x7FF2, 0xC248,
+	0x7FF3, 0xF4E8, 0x7FF4, 0xC249, 0x7FF5, 0xC24A, 0x7FF6, 0xC24B,
+	0x7FF7, 0xC24C, 0x7FF8, 0xC24D, 0x7FF9, 0xC24E, 0x7FFA, 0xC24F,
+	0x7FFB, 0xB7AD, 0x7FFC, 0xD2ED, 0x7FFD, 0xC250, 0x7FFE, 0xC251,
+	0x7FFF, 0xC252, 0x8000, 0xD2AB, 0x8001, 0xC0CF, 0x8002, 0xC253,
+	0x8003, 0xBFBC, 0x8004, 0xEBA3, 0x8005, 0xD5DF, 0x8006, 0xEAC8,
+	0x8007, 0xC254, 0x8008, 0xC255, 0x8009, 0xC256, 0x800A, 0xC257,
+	0x800B, 0xF1F3, 0x800C, 0xB6F8, 0x800D, 0xCBA3, 0x800E, 0xC258,
+	0x800F, 0xC259, 0x8010, 0xC4CD, 0x8011, 0xC25A, 0x8012, 0xF1E7,
+	0x8013, 0xC25B, 0x8014, 0xF1E8, 0x8015, 0xB8FB, 0x8016, 0xF1E9,
+	0x8017, 0xBAC4, 0x8018, 0xD4C5, 0x8019, 0xB0D2, 0x801A, 0xC25C,
+	0x801B, 0xC25D, 0x801C, 0xF1EA, 0x801D, 0xC25E, 0x801E, 0xC25F,
+	0x801F, 0xC260, 0x8020, 0xF1EB, 0x8021, 0xC261, 0x8022, 0xF1EC,
+	0x8023, 0xC262, 0x8024, 0xC263, 0x8025, 0xF1ED, 0x8026, 0xF1EE,
+	0x8027, 0xF1EF, 0x8028, 0xF1F1, 0x8029, 0xF1F0, 0x802A, 0xC5D5,
+	0x802B, 0xC264, 0x802C, 0xC265, 0x802D, 0xC266, 0x802E, 0xC267,
+	0x802F, 0xC268, 0x8030, 0xC269, 0x8031, 0xF1F2, 0x8032, 0xC26A,
+	0x8033, 0xB6FA, 0x8034, 0xC26B, 0x8035, 0xF1F4, 0x8036, 0xD2AE,
+	0x8037, 0xDEC7, 0x8038, 0xCBCA, 0x8039, 0xC26C, 0x803A, 0xC26D,
+	0x803B, 0xB3DC, 0x803C, 0xC26E, 0x803D, 0xB5A2, 0x803E, 0xC26F,
+	0x803F, 0xB9A2, 0x8040, 0xC270, 0x8041, 0xC271, 0x8042, 0xC4F4,
+	0x8043, 0xF1F5, 0x8044, 0xC272, 0x8045, 0xC273, 0x8046, 0xF1F6,
+	0x8047, 0xC274, 0x8048, 0xC275, 0x8049, 0xC276, 0x804A, 0xC1C4,
+	0x804B, 0xC1FB, 0x804C, 0xD6B0, 0x804D, 0xF1F7, 0x804E, 0xC277,
+	0x804F, 0xC278, 0x8050, 0xC279, 0x8051, 0xC27A, 0x8052, 0xF1F8,
+	0x8053, 0xC27B, 0x8054, 0xC1AA, 0x8055, 0xC27C, 0x8056, 0xC27D,
+	0x8057, 0xC27E, 0x8058, 0xC6B8, 0x8059, 0xC280, 0x805A, 0xBEDB,
+	0x805B, 0xC281, 0x805C, 0xC282, 0x805D, 0xC283, 0x805E, 0xC284,
+	0x805F, 0xC285, 0x8060, 0xC286, 0x8061, 0xC287, 0x8062, 0xC288,
+	0x8063, 0xC289, 0x8064, 0xC28A, 0x8065, 0xC28B, 0x8066, 0xC28C,
+	0x8067, 0xC28D, 0x8068, 0xC28E, 0x8069, 0xF1F9, 0x806A, 0xB4CF,
+	0x806B, 0xC28F, 0x806C, 0xC290, 0x806D, 0xC291, 0x806E, 0xC292,
+	0x806F, 0xC293, 0x8070, 0xC294, 0x8071, 0xF1FA, 0x8072, 0xC295,
+	0x8073, 0xC296, 0x8074, 0xC297, 0x8075, 0xC298, 0x8076, 0xC299,
+	0x8077, 0xC29A, 0x8078, 0xC29B, 0x8079, 0xC29C, 0x807A, 0xC29D,
+	0x807B, 0xC29E, 0x807C, 0xC29F, 0x807D, 0xC2A0, 0x807E, 0xC340,
+	0x807F, 0xEDB2, 0x8080, 0xEDB1, 0x8081, 0xC341, 0x8082, 0xC342,
+	0x8083, 0xCBE0, 0x8084, 0xD2DE, 0x8085, 0xC343, 0x8086, 0xCBC1,
+	0x8087, 0xD5D8, 0x8088, 0xC344, 0x8089, 0xC8E2, 0x808A, 0xC345,
+	0x808B, 0xC0DF, 0x808C, 0xBCA1, 0x808D, 0xC346, 0x808E, 0xC347,
+	0x808F, 0xC348, 0x8090, 0xC349, 0x8091, 0xC34A, 0x8092, 0xC34B,
+	0x8093, 0xEBC1, 0x8094, 0xC34C, 0x8095, 0xC34D, 0x8096, 0xD0A4,
+	0x8097, 0xC34E, 0x8098, 0xD6E2, 0x8099, 0xC34F, 0x809A, 0xB6C7,
+	0x809B, 0xB8D8, 0x809C, 0xEBC0, 0x809D, 0xB8CE, 0x809E, 0xC350,
+	0x809F, 0xEBBF, 0x80A0, 0xB3A6, 0x80A1, 0xB9C9, 0x80A2, 0xD6AB,
+	0x80A3, 0xC351, 0x80A4, 0xB7F4, 0x80A5, 0xB7CA, 0x80A6, 0xC352,
+	0x80A7, 0xC353, 0x80A8, 0xC354, 0x80A9, 0xBCE7, 0x80AA, 0xB7BE,
+	0x80AB, 0xEBC6, 0x80AC, 0xC355, 0x80AD, 0xEBC7, 0x80AE, 0xB0B9,
+	0x80AF, 0xBFCF, 0x80B0, 0xC356, 0x80B1, 0xEBC5, 0x80B2, 0xD3FD,
+	0x80B3, 0xC357, 0x80B4, 0xEBC8, 0x80B5, 0xC358, 0x80B6, 0xC359,
+	0x80B7, 0xEBC9, 0x80B8, 0xC35A, 0x80B9, 0xC35B, 0x80BA, 0xB7CE,
+	0x80BB, 0xC35C, 0x80BC, 0xEBC2, 0x80BD, 0xEBC4, 0x80BE, 0xC9F6,
+	0x80BF, 0xD6D7, 0x80C0, 0xD5CD, 0x80C1, 0xD0B2, 0x80C2, 0xEBCF,
+	0x80C3, 0xCEB8, 0x80C4, 0xEBD0, 0x80C5, 0xC35D, 0x80C6, 0xB5A8,
+	0x80C7, 0xC35E, 0x80C8, 0xC35F, 0x80C9, 0xC360, 0x80CA, 0xC361,
+	0x80CB, 0xC362, 0x80CC, 0xB1B3, 0x80CD, 0xEBD2, 0x80CE, 0xCCA5,
+	0x80CF, 0xC363, 0x80D0, 0xC364, 0x80D1, 0xC365, 0x80D2, 0xC366,
+	0x80D3, 0xC367, 0x80D4, 0xC368, 0x80D5, 0xC369, 0x80D6, 0xC5D6,
+	0x80D7, 0xEBD3, 0x80D8, 0xC36A, 0x80D9, 0xEBD1, 0x80DA, 0xC5DF,
+	0x80DB, 0xEBCE, 0x80DC, 0xCAA4, 0x80DD, 0xEBD5, 0x80DE, 0xB0FB,
+	0x80DF, 0xC36B, 0x80E0, 0xC36C, 0x80E1, 0xBAFA, 0x80E2, 0xC36D,
+	0x80E3, 0xC36E, 0x80E4, 0xD8B7, 0x80E5, 0xF1E3, 0x80E6, 0xC36F,
+	0x80E7, 0xEBCA, 0x80E8, 0xEBCB, 0x80E9, 0xEBCC, 0x80EA, 0xEBCD,
+	0x80EB, 0xEBD6, 0x80EC, 0xE6C0, 0x80ED, 0xEBD9, 0x80EE, 0xC370,
+	0x80EF, 0xBFE8, 0x80F0, 0xD2C8, 0x80F1, 0xEBD7, 0x80F2, 0xEBDC,
+	0x80F3, 0xB8EC, 0x80F4, 0xEBD8, 0x80F5, 0xC371, 0x80F6, 0xBDBA,
+	0x80F7, 0xC372, 0x80F8, 0xD0D8, 0x80F9, 0xC373, 0x80FA, 0xB0B7,
+	0x80FB, 0xC374, 0x80FC, 0xEBDD, 0x80FD, 0xC4DC, 0x80FE, 0xC375,
+	0x80FF, 0xC376, 0x8100, 0xC377, 0x8101, 0xC378, 0x8102, 0xD6AC,
+	0x8103, 0xC379, 0x8104, 0xC37A, 0x8105, 0xC37B, 0x8106, 0xB4E0,
+	0x8107, 0xC37C, 0x8108, 0xC37D, 0x8109, 0xC2F6, 0x810A, 0xBCB9,
+	0x810B, 0xC37E, 0x810C, 0xC380, 0x810D, 0xEBDA, 0x810E, 0xEBDB,
+	0x810F, 0xD4E0, 0x8110, 0xC6EA, 0x8111, 0xC4D4, 0x8112, 0xEBDF,
+	0x8113, 0xC5A7, 0x8114, 0xD9F5, 0x8115, 0xC381, 0x8116, 0xB2B1,
+	0x8117, 0xC382, 0x8118, 0xEBE4, 0x8119, 0xC383, 0x811A, 0xBDC5,
+	0x811B, 0xC384, 0x811C, 0xC385, 0x811D, 0xC386, 0x811E, 0xEBE2,
+	0x811F, 0xC387, 0x8120, 0xC388, 0x8121, 0xC389, 0x8122, 0xC38A,
+	0x8123, 0xC38B, 0x8124, 0xC38C, 0x8125, 0xC38D, 0x8126, 0xC38E,
+	0x8127, 0xC38F, 0x8128, 0xC390, 0x8129, 0xC391, 0x812A, 0xC392,
+	0x812B, 0xC393, 0x812C, 0xEBE3, 0x812D, 0xC394, 0x812E, 0xC395,
+	0x812F, 0xB8AC, 0x8130, 0xC396, 0x8131, 0xCDD1, 0x8132, 0xEBE5,
+	0x8133, 0xC397, 0x8134, 0xC398, 0x8135, 0xC399, 0x8136, 0xEBE1,
+	0x8137, 0xC39A, 0x8138, 0xC1B3, 0x8139, 0xC39B, 0x813A, 0xC39C,
+	0x813B, 0xC39D, 0x813C, 0xC39E, 0x813D, 0xC39F, 0x813E, 0xC6A2,
+	0x813F, 0xC3A0, 0x8140, 0xC440, 0x8141, 0xC441, 0x8142, 0xC442,
+	0x8143, 0xC443, 0x8144, 0xC444, 0x8145, 0xC445, 0x8146, 0xCCF3,
+	0x8147, 0xC446, 0x8148, 0xEBE6, 0x8149, 0xC447, 0x814A, 0xC0B0,
+	0x814B, 0xD2B8, 0x814C, 0xEBE7, 0x814D, 0xC448, 0x814E, 0xC449,
+	0x814F, 0xC44A, 0x8150, 0xB8AF, 0x8151, 0xB8AD, 0x8152, 0xC44B,
+	0x8153, 0xEBE8, 0x8154, 0xC7BB, 0x8155, 0xCDF3, 0x8156, 0xC44C,
+	0x8157, 0xC44D, 0x8158, 0xC44E, 0x8159, 0xEBEA, 0x815A, 0xEBEB,
+	0x815B, 0xC44F, 0x815C, 0xC450, 0x815D, 0xC451, 0x815E, 0xC452,
+	0x815F, 0xC453, 0x8160, 0xEBED, 0x8161, 0xC454, 0x8162, 0xC455,
+	0x8163, 0xC456, 0x8164, 0xC457, 0x8165, 0xD0C8, 0x8166, 0xC458,
+	0x8167, 0xEBF2, 0x8168, 0xC459, 0x8169, 0xEBEE, 0x816A, 0xC45A,
+	0x816B, 0xC45B, 0x816C, 0xC45C, 0x816D, 0xEBF1, 0x816E, 0xC8F9,
+	0x816F, 0xC45D, 0x8170, 0xD1FC, 0x8171, 0xEBEC, 0x8172, 0xC45E,
+	0x8173, 0xC45F, 0x8174, 0xEBE9, 0x8175, 0xC460, 0x8176, 0xC461,
+	0x8177, 0xC462, 0x8178, 0xC463, 0x8179, 0xB8B9, 0x817A, 0xCFD9,
+	0x817B, 0xC4E5, 0x817C, 0xEBEF, 0x817D, 0xEBF0, 0x817E, 0xCCDA,
+	0x817F, 0xCDC8, 0x8180, 0xB0F2, 0x8181, 0xC464, 0x8182, 0xEBF6,
+	0x8183, 0xC465, 0x8184, 0xC466, 0x8185, 0xC467, 0x8186, 0xC468,
+	0x8187, 0xC469, 0x8188, 0xEBF5, 0x8189, 0xC46A, 0x818A, 0xB2B2,
+	0x818B, 0xC46B, 0x818C, 0xC46C, 0x818D, 0xC46D, 0x818E, 0xC46E,
+	0x818F, 0xB8E0, 0x8190, 0xC46F, 0x8191, 0xEBF7, 0x8192, 0xC470,
+	0x8193, 0xC471, 0x8194, 0xC472, 0x8195, 0xC473, 0x8196, 0xC474,
+	0x8197, 0xC475, 0x8198, 0xB1EC, 0x8199, 0xC476, 0x819A, 0xC477,
+	0x819B, 0xCCC5, 0x819C, 0xC4A4, 0x819D, 0xCFA5, 0x819E, 0xC478,
+	0x819F, 0xC479, 0x81A0, 0xC47A, 0x81A1, 0xC47B, 0x81A2, 0xC47C,
+	0x81A3, 0xEBF9, 0x81A4, 0xC47D, 0x81A5, 0xC47E, 0x81A6, 0xECA2,
+	0x81A7, 0xC480, 0x81A8, 0xC5F2, 0x81A9, 0xC481, 0x81AA, 0xEBFA,
+	0x81AB, 0xC482, 0x81AC, 0xC483, 0x81AD, 0xC484, 0x81AE, 0xC485,
+	0x81AF, 0xC486, 0x81B0, 0xC487, 0x81B1, 0xC488, 0x81B2, 0xC489,
+	0x81B3, 0xC9C5, 0x81B4, 0xC48A, 0x81B5, 0xC48B, 0x81B6, 0xC48C,
+	0x81B7, 0xC48D, 0x81B8, 0xC48E, 0x81B9, 0xC48F, 0x81BA, 0xE2DF,
+	0x81BB, 0xEBFE, 0x81BC, 0xC490, 0x81BD, 0xC491, 0x81BE, 0xC492,
+	0x81BF, 0xC493, 0x81C0, 0xCDCE, 0x81C1, 0xECA1, 0x81C2, 0xB1DB,
+	0x81C3, 0xD3B7, 0x81C4, 0xC494, 0x81C5, 0xC495, 0x81C6, 0xD2DC,
+	0x81C7, 0xC496, 0x81C8, 0xC497, 0x81C9, 0xC498, 0x81CA, 0xEBFD,
+	0x81CB, 0xC499, 0x81CC, 0xEBFB, 0x81CD, 0xC49A, 0x81CE, 0xC49B,
+	0x81CF, 0xC49C, 0x81D0, 0xC49D, 0x81D1, 0xC49E, 0x81D2, 0xC49F,
+	0x81D3, 0xC4A0, 0x81D4, 0xC540, 0x81D5, 0xC541, 0x81D6, 0xC542,
+	0x81D7, 0xC543, 0x81D8, 0xC544, 0x81D9, 0xC545, 0x81DA, 0xC546,
+	0x81DB, 0xC547, 0x81DC, 0xC548, 0x81DD, 0xC549, 0x81DE, 0xC54A,
+	0x81DF, 0xC54B, 0x81E0, 0xC54C, 0x81E1, 0xC54D, 0x81E2, 0xC54E,
+	0x81E3, 0xB3BC, 0x81E4, 0xC54F, 0x81E5, 0xC550, 0x81E6, 0xC551,
+	0x81E7, 0xEAB0, 0x81E8, 0xC552, 0x81E9, 0xC553, 0x81EA, 0xD7D4,
+	0x81EB, 0xC554, 0x81EC, 0xF4AB, 0x81ED, 0xB3F4, 0x81EE, 0xC555,
+	0x81EF, 0xC556, 0x81F0, 0xC557, 0x81F1, 0xC558, 0x81F2, 0xC559,
+	0x81F3, 0xD6C1, 0x81F4, 0xD6C2, 0x81F5, 0xC55A, 0x81F6, 0xC55B,
+	0x81F7, 0xC55C, 0x81F8, 0xC55D, 0x81F9, 0xC55E, 0x81FA, 0xC55F,
+	0x81FB, 0xD5E9, 0x81FC, 0xBECA, 0x81FD, 0xC560, 0x81FE, 0xF4A7,
+	0x81FF, 0xC561, 0x8200, 0xD2A8, 0x8201, 0xF4A8, 0x8202, 0xF4A9,
+	0x8203, 0xC562, 0x8204, 0xF4AA, 0x8205, 0xBECB, 0x8206, 0xD3DF,
+	0x8207, 0xC563, 0x8208, 0xC564, 0x8209, 0xC565, 0x820A, 0xC566,
+	0x820B, 0xC567, 0x820C, 0xC9E0, 0x820D, 0xC9E1, 0x820E, 0xC568,
+	0x820F, 0xC569, 0x8210, 0xF3C2, 0x8211, 0xC56A, 0x8212, 0xCAE6,
+	0x8213, 0xC56B, 0x8214, 0xCCF2, 0x8215, 0xC56C, 0x8216, 0xC56D,
+	0x8217, 0xC56E, 0x8218, 0xC56F, 0x8219, 0xC570, 0x821A, 0xC571,
+	0x821B, 0xE2B6, 0x821C, 0xCBB4, 0x821D, 0xC572, 0x821E, 0xCEE8,
+	0x821F, 0xD6DB, 0x8220, 0xC573, 0x8221, 0xF4AD, 0x8222, 0xF4AE,
+	0x8223, 0xF4AF, 0x8224, 0xC574, 0x8225, 0xC575, 0x8226, 0xC576,
+	0x8227, 0xC577, 0x8228, 0xF4B2, 0x8229, 0xC578, 0x822A, 0xBABD,
+	0x822B, 0xF4B3, 0x822C, 0xB0E3, 0x822D, 0xF4B0, 0x822E, 0xC579,
+	0x822F, 0xF4B1, 0x8230, 0xBDA2, 0x8231, 0xB2D5, 0x8232, 0xC57A,
+	0x8233, 0xF4B6, 0x8234, 0xF4B7, 0x8235, 0xB6E6, 0x8236, 0xB2B0,
+	0x8237, 0xCFCF, 0x8238, 0xF4B4, 0x8239, 0xB4AC, 0x823A, 0xC57B,
+	0x823B, 0xF4B5, 0x823C, 0xC57C, 0x823D, 0xC57D, 0x823E, 0xF4B8,
+	0x823F, 0xC57E, 0x8240, 0xC580, 0x8241, 0xC581, 0x8242, 0xC582,
+	0x8243, 0xC583, 0x8244, 0xF4B9, 0x8245, 0xC584, 0x8246, 0xC585,
+	0x8247, 0xCDA7, 0x8248, 0xC586, 0x8249, 0xF4BA, 0x824A, 0xC587,
+	0x824B, 0xF4BB, 0x824C, 0xC588, 0x824D, 0xC589, 0x824E, 0xC58A,
+	0x824F, 0xF4BC, 0x8250, 0xC58B, 0x8251, 0xC58C, 0x8252, 0xC58D,
+	0x8253, 0xC58E, 0x8254, 0xC58F, 0x8255, 0xC590, 0x8256, 0xC591,
+	0x8257, 0xC592, 0x8258, 0xCBD2, 0x8259, 0xC593, 0x825A, 0xF4BD,
+	0x825B, 0xC594, 0x825C, 0xC595, 0x825D, 0xC596, 0x825E, 0xC597,
+	0x825F, 0xF4BE, 0x8260, 0xC598, 0x8261, 0xC599, 0x8262, 0xC59A,
+	0x8263, 0xC59B, 0x8264, 0xC59C, 0x8265, 0xC59D, 0x8266, 0xC59E,
+	0x8267, 0xC59F, 0x8268, 0xF4BF, 0x8269, 0xC5A0, 0x826A, 0xC640,
+	0x826B, 0xC641, 0x826C, 0xC642, 0x826D, 0xC643, 0x826E, 0xF4DE,
+	0x826F, 0xC1BC, 0x8270, 0xBCE8, 0x8271, 0xC644, 0x8272, 0xC9AB,
+	0x8273, 0xD1DE, 0x8274, 0xE5F5, 0x8275, 0xC645, 0x8276, 0xC646,
+	0x8277, 0xC647, 0x8278, 0xC648, 0x8279, 0xDCB3, 0x827A, 0xD2D5,
+	0x827B, 0xC649, 0x827C, 0xC64A, 0x827D, 0xDCB4, 0x827E, 0xB0AC,
+	0x827F, 0xDCB5, 0x8280, 0xC64B, 0x8281, 0xC64C, 0x8282, 0xBDDA,
+	0x8283, 0xC64D, 0x8284, 0xDCB9, 0x8285, 0xC64E, 0x8286, 0xC64F,
+	0x8287, 0xC650, 0x8288, 0xD8C2, 0x8289, 0xC651, 0x828A, 0xDCB7,
+	0x828B, 0xD3F3, 0x828C, 0xC652, 0x828D, 0xC9D6, 0x828E, 0xDCBA,
+	0x828F, 0xDCB6, 0x8290, 0xC653, 0x8291, 0xDCBB, 0x8292, 0xC3A2,
+	0x8293, 0xC654, 0x8294, 0xC655, 0x8295, 0xC656, 0x8296, 0xC657,
+	0x8297, 0xDCBC, 0x8298, 0xDCC5, 0x8299, 0xDCBD, 0x829A, 0xC658,
+	0x829B, 0xC659, 0x829C, 0xCEDF, 0x829D, 0xD6A5, 0x829E, 0xC65A,
+	0x829F, 0xDCCF, 0x82A0, 0xC65B, 0x82A1, 0xDCCD, 0x82A2, 0xC65C,
+	0x82A3, 0xC65D, 0x82A4, 0xDCD2, 0x82A5, 0xBDE6, 0x82A6, 0xC2AB,
+	0x82A7, 0xC65E, 0x82A8, 0xDCB8, 0x82A9, 0xDCCB, 0x82AA, 0xDCCE,
+	0x82AB, 0xDCBE, 0x82AC, 0xB7D2, 0x82AD, 0xB0C5, 0x82AE, 0xDCC7,
+	0x82AF, 0xD0BE, 0x82B0, 0xDCC1, 0x82B1, 0xBBA8, 0x82B2, 0xC65F,
+	0x82B3, 0xB7BC, 0x82B4, 0xDCCC, 0x82B5, 0xC660, 0x82B6, 0xC661,
+	0x82B7, 0xDCC6, 0x82B8, 0xDCBF, 0x82B9, 0xC7DB, 0x82BA, 0xC662,
+	0x82BB, 0xC663, 0x82BC, 0xC664, 0x82BD, 0xD1BF, 0x82BE, 0xDCC0,
+	0x82BF, 0xC665, 0x82C0, 0xC666, 0x82C1, 0xDCCA, 0x82C2, 0xC667,
+	0x82C3, 0xC668, 0x82C4, 0xDCD0, 0x82C5, 0xC669, 0x82C6, 0xC66A,
+	0x82C7, 0xCEAD, 0x82C8, 0xDCC2, 0x82C9, 0xC66B, 0x82CA, 0xDCC3,
+	0x82CB, 0xDCC8, 0x82CC, 0xDCC9, 0x82CD, 0xB2D4, 0x82CE, 0xDCD1,
+	0x82CF, 0xCBD5, 0x82D0, 0xC66C, 0x82D1, 0xD4B7, 0x82D2, 0xDCDB,
+	0x82D3, 0xDCDF, 0x82D4, 0xCCA6, 0x82D5, 0xDCE6, 0x82D6, 0xC66D,
+	0x82D7, 0xC3E7, 0x82D8, 0xDCDC, 0x82D9, 0xC66E, 0x82DA, 0xC66F,
+	0x82DB, 0xBFC1, 0x82DC, 0xDCD9, 0x82DD, 0xC670, 0x82DE, 0xB0FA,
+	0x82DF, 0xB9B6, 0x82E0, 0xDCE5, 0x82E1, 0xDCD3, 0x82E2, 0xC671,
+	0x82E3, 0xDCC4, 0x82E4, 0xDCD6, 0x82E5, 0xC8F4, 0x82E6, 0xBFE0,
+	0x82E7, 0xC672, 0x82E8, 0xC673, 0x82E9, 0xC674, 0x82EA, 0xC675,
+	0x82EB, 0xC9BB, 0x82EC, 0xC676, 0x82ED, 0xC677, 0x82EE, 0xC678,
+	0x82EF, 0xB1BD, 0x82F0, 0xC679, 0x82F1, 0xD3A2, 0x82F2, 0xC67A,
+	0x82F3, 0xC67B, 0x82F4, 0xDCDA, 0x82F5, 0xC67C, 0x82F6, 0xC67D,
+	0x82F7, 0xDCD5, 0x82F8, 0xC67E, 0x82F9, 0xC6BB, 0x82FA, 0xC680,
+	0x82FB, 0xDCDE, 0x82FC, 0xC681, 0x82FD, 0xC682, 0x82FE, 0xC683,
+	0x82FF, 0xC684, 0x8300, 0xC685, 0x8301, 0xD7C2, 0x8302, 0xC3AF,
+	0x8303, 0xB7B6, 0x8304, 0xC7D1, 0x8305, 0xC3A9, 0x8306, 0xDCE2,
+	0x8307, 0xDCD8, 0x8308, 0xDCEB, 0x8309, 0xDCD4, 0x830A, 0xC686,
+	0x830B, 0xC687, 0x830C, 0xDCDD, 0x830D, 0xC688, 0x830E, 0xBEA5,
+	0x830F, 0xDCD7, 0x8310, 0xC689, 0x8311, 0xDCE0, 0x8312, 0xC68A,
+	0x8313, 0xC68B, 0x8314, 0xDCE3, 0x8315, 0xDCE4, 0x8316, 0xC68C,
+	0x8317, 0xDCF8, 0x8318, 0xC68D, 0x8319, 0xC68E, 0x831A, 0xDCE1,
+	0x831B, 0xDDA2, 0x831C, 0xDCE7, 0x831D, 0xC68F, 0x831E, 0xC690,
+	0x831F, 0xC691, 0x8320, 0xC692, 0x8321, 0xC693, 0x8322, 0xC694,
+	0x8323, 0xC695, 0x8324, 0xC696, 0x8325, 0xC697, 0x8326, 0xC698,
+	0x8327, 0xBCEB, 0x8328, 0xB4C4, 0x8329, 0xC699, 0x832A, 0xC69A,
+	0x832B, 0xC3A3, 0x832C, 0xB2E7, 0x832D, 0xDCFA, 0x832E, 0xC69B,
+	0x832F, 0xDCF2, 0x8330, 0xC69C, 0x8331, 0xDCEF, 0x8332, 0xC69D,
+	0x8333, 0xDCFC, 0x8334, 0xDCEE, 0x8335, 0xD2F0, 0x8336, 0xB2E8,
+	0x8337, 0xC69E, 0x8338, 0xC8D7, 0x8339, 0xC8E3, 0x833A, 0xDCFB,
+	0x833B, 0xC69F, 0x833C, 0xDCED, 0x833D, 0xC6A0, 0x833E, 0xC740,
+	0x833F, 0xC741, 0x8340, 0xDCF7, 0x8341, 0xC742, 0x8342, 0xC743,
+	0x8343, 0xDCF5, 0x8344, 0xC744, 0x8345, 0xC745, 0x8346, 0xBEA3,
+	0x8347, 0xDCF4, 0x8348, 0xC746, 0x8349, 0xB2DD, 0x834A, 0xC747,
+	0x834B, 0xC748, 0x834C, 0xC749, 0x834D, 0xC74A, 0x834E, 0xC74B,
+	0x834F, 0xDCF3, 0x8350, 0xBCF6, 0x8351, 0xDCE8, 0x8352, 0xBBC4,
+	0x8353, 0xC74C, 0x8354, 0xC0F3, 0x8355, 0xC74D, 0x8356, 0xC74E,
+	0x8357, 0xC74F, 0x8358, 0xC750, 0x8359, 0xC751, 0x835A, 0xBCD4,
+	0x835B, 0xDCE9, 0x835C, 0xDCEA, 0x835D, 0xC752, 0x835E, 0xDCF1,
+	0x835F, 0xDCF6, 0x8360, 0xDCF9, 0x8361, 0xB5B4, 0x8362, 0xC753,
+	0x8363, 0xC8D9, 0x8364, 0xBBE7, 0x8365, 0xDCFE, 0x8366, 0xDCFD,
+	0x8367, 0xD3AB, 0x8368, 0xDDA1, 0x8369, 0xDDA3, 0x836A, 0xDDA5,
+	0x836B, 0xD2F1, 0x836C, 0xDDA4, 0x836D, 0xDDA6, 0x836E, 0xDDA7,
+	0x836F, 0xD2A9, 0x8370, 0xC754, 0x8371, 0xC755, 0x8372, 0xC756,
+	0x8373, 0xC757, 0x8374, 0xC758, 0x8375, 0xC759, 0x8376, 0xC75A,
+	0x8377, 0xBAC9, 0x8378, 0xDDA9, 0x8379, 0xC75B, 0x837A, 0xC75C,
+	0x837B, 0xDDB6, 0x837C, 0xDDB1, 0x837D, 0xDDB4, 0x837E, 0xC75D,
+	0x837F, 0xC75E, 0x8380, 0xC75F, 0x8381, 0xC760, 0x8382, 0xC761,
+	0x8383, 0xC762, 0x8384, 0xC763, 0x8385, 0xDDB0, 0x8386, 0xC6CE,
+	0x8387, 0xC764, 0x8388, 0xC765, 0x8389, 0xC0F2, 0x838A, 0xC766,
+	0x838B, 0xC767, 0x838C, 0xC768, 0x838D, 0xC769, 0x838E, 0xC9AF,
+	0x838F, 0xC76A, 0x8390, 0xC76B, 0x8391, 0xC76C, 0x8392, 0xDCEC,
+	0x8393, 0xDDAE, 0x8394, 0xC76D, 0x8395, 0xC76E, 0x8396, 0xC76F,
+	0x8397, 0xC770, 0x8398, 0xDDB7, 0x8399, 0xC771, 0x839A, 0xC772,
+	0x839B, 0xDCF0, 0x839C, 0xDDAF, 0x839D, 0xC773, 0x839E, 0xDDB8,
+	0x839F, 0xC774, 0x83A0, 0xDDAC, 0x83A1, 0xC775, 0x83A2, 0xC776,
+	0x83A3, 0xC777, 0x83A4, 0xC778, 0x83A5, 0xC779, 0x83A6, 0xC77A,
+	0x83A7, 0xC77B, 0x83A8, 0xDDB9, 0x83A9, 0xDDB3, 0x83AA, 0xDDAD,
+	0x83AB, 0xC4AA, 0x83AC, 0xC77C, 0x83AD, 0xC77D, 0x83AE, 0xC77E,
+	0x83AF, 0xC780, 0x83B0, 0xDDA8, 0x83B1, 0xC0B3, 0x83B2, 0xC1AB,
+	0x83B3, 0xDDAA, 0x83B4, 0xDDAB, 0x83B5, 0xC781, 0x83B6, 0xDDB2,
+	0x83B7, 0xBBF1, 0x83B8, 0xDDB5, 0x83B9, 0xD3A8, 0x83BA, 0xDDBA,
+	0x83BB, 0xC782, 0x83BC, 0xDDBB, 0x83BD, 0xC3A7, 0x83BE, 0xC783,
+	0x83BF, 0xC784, 0x83C0, 0xDDD2, 0x83C1, 0xDDBC, 0x83C2, 0xC785,
+	0x83C3, 0xC786, 0x83C4, 0xC787, 0x83C5, 0xDDD1, 0x83C6, 0xC788,
+	0x83C7, 0xB9BD, 0x83C8, 0xC789, 0x83C9, 0xC78A, 0x83CA, 0xBED5,
+	0x83CB, 0xC78B, 0x83CC, 0xBEFA, 0x83CD, 0xC78C, 0x83CE, 0xC78D,
+	0x83CF, 0xBACA, 0x83D0, 0xC78E, 0x83D1, 0xC78F, 0x83D2, 0xC790,
+	0x83D3, 0xC791, 0x83D4, 0xDDCA, 0x83D5, 0xC792, 0x83D6, 0xDDC5,
+	0x83D7, 0xC793, 0x83D8, 0xDDBF, 0x83D9, 0xC794, 0x83DA, 0xC795,
+	0x83DB, 0xC796, 0x83DC, 0xB2CB, 0x83DD, 0xDDC3, 0x83DE, 0xC797,
+	0x83DF, 0xDDCB, 0x83E0, 0xB2A4, 0x83E1, 0xDDD5, 0x83E2, 0xC798,
+	0x83E3, 0xC799, 0x83E4, 0xC79A, 0x83E5, 0xDDBE, 0x83E6, 0xC79B,
+	0x83E7, 0xC79C, 0x83E8, 0xC79D, 0x83E9, 0xC6D0, 0x83EA, 0xDDD0,
+	0x83EB, 0xC79E, 0x83EC, 0xC79F, 0x83ED, 0xC7A0, 0x83EE, 0xC840,
+	0x83EF, 0xC841, 0x83F0, 0xDDD4, 0x83F1, 0xC1E2, 0x83F2, 0xB7C6,
+	0x83F3, 0xC842, 0x83F4, 0xC843, 0x83F5, 0xC844, 0x83F6, 0xC845,
+	0x83F7, 0xC846, 0x83F8, 0xDDCE, 0x83F9, 0xDDCF, 0x83FA, 0xC847,
+	0x83FB, 0xC848, 0x83FC, 0xC849, 0x83FD, 0xDDC4, 0x83FE, 0xC84A,
+	0x83FF, 0xC84B, 0x8400, 0xC84C, 0x8401, 0xDDBD, 0x8402, 0xC84D,
+	0x8403, 0xDDCD, 0x8404, 0xCCD1, 0x8405, 0xC84E, 0x8406, 0xDDC9,
+	0x8407, 0xC84F, 0x8408, 0xC850, 0x8409, 0xC851, 0x840A, 0xC852,
+	0x840B, 0xDDC2, 0x840C, 0xC3C8, 0x840D, 0xC6BC, 0x840E, 0xCEAE,
+	0x840F, 0xDDCC, 0x8410, 0xC853, 0x8411, 0xDDC8, 0x8412, 0xC854,
+	0x8413, 0xC855, 0x8414, 0xC856, 0x8415, 0xC857, 0x8416, 0xC858,
+	0x8417, 0xC859, 0x8418, 0xDDC1, 0x8419, 0xC85A, 0x841A, 0xC85B,
+	0x841B, 0xC85C, 0x841C, 0xDDC6, 0x841D, 0xC2DC, 0x841E, 0xC85D,
+	0x841F, 0xC85E, 0x8420, 0xC85F, 0x8421, 0xC860, 0x8422, 0xC861,
+	0x8423, 0xC862, 0x8424, 0xD3A9, 0x8425, 0xD3AA, 0x8426, 0xDDD3,
+	0x8427, 0xCFF4, 0x8428, 0xC8F8, 0x8429, 0xC863, 0x842A, 0xC864,
+	0x842B, 0xC865, 0x842C, 0xC866, 0x842D, 0xC867, 0x842E, 0xC868,
+	0x842F, 0xC869, 0x8430, 0xC86A, 0x8431, 0xDDE6, 0x8432, 0xC86B,
+	0x8433, 0xC86C, 0x8434, 0xC86D, 0x8435, 0xC86E, 0x8436, 0xC86F,
+	0x8437, 0xC870, 0x8438, 0xDDC7, 0x8439, 0xC871, 0x843A, 0xC872,
+	0x843B, 0xC873, 0x843C, 0xDDE0, 0x843D, 0xC2E4, 0x843E, 0xC874,
+	0x843F, 0xC875, 0x8440, 0xC876, 0x8441, 0xC877, 0x8442, 0xC878,
+	0x8443, 0xC879, 0x8444, 0xC87A, 0x8445, 0xC87B, 0x8446, 0xDDE1,
+	0x8447, 0xC87C, 0x8448, 0xC87D, 0x8449, 0xC87E, 0x844A, 0xC880,
+	0x844B, 0xC881, 0x844C, 0xC882, 0x844D, 0xC883, 0x844E, 0xC884,
+	0x844F, 0xC885, 0x8450, 0xC886, 0x8451, 0xDDD7, 0x8452, 0xC887,
+	0x8453, 0xC888, 0x8454, 0xC889, 0x8455, 0xC88A, 0x8456, 0xC88B,
+	0x8457, 0xD6F8, 0x8458, 0xC88C, 0x8459, 0xDDD9, 0x845A, 0xDDD8,
+	0x845B, 0xB8F0, 0x845C, 0xDDD6, 0x845D, 0xC88D, 0x845E, 0xC88E,
+	0x845F, 0xC88F, 0x8460, 0xC890, 0x8461, 0xC6CF, 0x8462, 0xC891,
+	0x8463, 0xB6AD, 0x8464, 0xC892, 0x8465, 0xC893, 0x8466, 0xC894,
+	0x8467, 0xC895, 0x8468, 0xC896, 0x8469, 0xDDE2, 0x846A, 0xC897,
+	0x846B, 0xBAF9, 0x846C, 0xD4E1, 0x846D, 0xDDE7, 0x846E, 0xC898,
+	0x846F, 0xC899, 0x8470, 0xC89A, 0x8471, 0xB4D0, 0x8472, 0xC89B,
+	0x8473, 0xDDDA, 0x8474, 0xC89C, 0x8475, 0xBFFB, 0x8476, 0xDDE3,
+	0x8477, 0xC89D, 0x8478, 0xDDDF, 0x8479, 0xC89E, 0x847A, 0xDDDD,
+	0x847B, 0xC89F, 0x847C, 0xC8A0, 0x847D, 0xC940, 0x847E, 0xC941,
+	0x847F, 0xC942, 0x8480, 0xC943, 0x8481, 0xC944, 0x8482, 0xB5D9,
+	0x8483, 0xC945, 0x8484, 0xC946, 0x8485, 0xC947, 0x8486, 0xC948,
+	0x8487, 0xDDDB, 0x8488, 0xDDDC, 0x8489, 0xDDDE, 0x848A, 0xC949,
+	0x848B, 0xBDAF, 0x848C, 0xDDE4, 0x848D, 0xC94A, 0x848E, 0xDDE5,
+	0x848F, 0xC94B, 0x8490, 0xC94C, 0x8491, 0xC94D, 0x8492, 0xC94E,
+	0x8493, 0xC94F, 0x8494, 0xC950, 0x8495, 0xC951, 0x8496, 0xC952,
+	0x8497, 0xDDF5, 0x8498, 0xC953, 0x8499, 0xC3C9, 0x849A, 0xC954,
+	0x849B, 0xC955, 0x849C, 0xCBE2, 0x849D, 0xC956, 0x849E, 0xC957,
+	0x849F, 0xC958, 0x84A0, 0xC959, 0x84A1, 0xDDF2, 0x84A2, 0xC95A,
+	0x84A3, 0xC95B, 0x84A4, 0xC95C, 0x84A5, 0xC95D, 0x84A6, 0xC95E,
+	0x84A7, 0xC95F, 0x84A8, 0xC960, 0x84A9, 0xC961, 0x84AA, 0xC962,
+	0x84AB, 0xC963, 0x84AC, 0xC964, 0x84AD, 0xC965, 0x84AE, 0xC966,
+	0x84AF, 0xD8E1, 0x84B0, 0xC967, 0x84B1, 0xC968, 0x84B2, 0xC6D1,
+	0x84B3, 0xC969, 0x84B4, 0xDDF4, 0x84B5, 0xC96A, 0x84B6, 0xC96B,
+	0x84B7, 0xC96C, 0x84B8, 0xD5F4, 0x84B9, 0xDDF3, 0x84BA, 0xDDF0,
+	0x84BB, 0xC96D, 0x84BC, 0xC96E, 0x84BD, 0xDDEC, 0x84BE, 0xC96F,
+	0x84BF, 0xDDEF, 0x84C0, 0xC970, 0x84C1, 0xDDE8, 0x84C2, 0xC971,
+	0x84C3, 0xC972, 0x84C4, 0xD0EE, 0x84C5, 0xC973, 0x84C6, 0xC974,
+	0x84C7, 0xC975, 0x84C8, 0xC976, 0x84C9, 0xC8D8, 0x84CA, 0xDDEE,
+	0x84CB, 0xC977, 0x84CC, 0xC978, 0x84CD, 0xDDE9, 0x84CE, 0xC979,
+	0x84CF, 0xC97A, 0x84D0, 0xDDEA, 0x84D1, 0xCBF2, 0x84D2, 0xC97B,
+	0x84D3, 0xDDED, 0x84D4, 0xC97C, 0x84D5, 0xC97D, 0x84D6, 0xB1CD,
+	0x84D7, 0xC97E, 0x84D8, 0xC980, 0x84D9, 0xC981, 0x84DA, 0xC982,
+	0x84DB, 0xC983, 0x84DC, 0xC984, 0x84DD, 0xC0B6, 0x84DE, 0xC985,
+	0x84DF, 0xBCBB, 0x84E0, 0xDDF1, 0x84E1, 0xC986, 0x84E2, 0xC987,
+	0x84E3, 0xDDF7, 0x84E4, 0xC988, 0x84E5, 0xDDF6, 0x84E6, 0xDDEB,
+	0x84E7, 0xC989, 0x84E8, 0xC98A, 0x84E9, 0xC98B, 0x84EA, 0xC98C,
+	0x84EB, 0xC98D, 0x84EC, 0xC5EE, 0x84ED, 0xC98E, 0x84EE, 0xC98F,
+	0x84EF, 0xC990, 0x84F0, 0xDDFB, 0x84F1, 0xC991, 0x84F2, 0xC992,
+	0x84F3, 0xC993, 0x84F4, 0xC994, 0x84F5, 0xC995, 0x84F6, 0xC996,
+	0x84F7, 0xC997, 0x84F8, 0xC998, 0x84F9, 0xC999, 0x84FA, 0xC99A,
+	0x84FB, 0xC99B, 0x84FC, 0xDEA4, 0x84FD, 0xC99C, 0x84FE, 0xC99D,
+	0x84FF, 0xDEA3, 0x8500, 0xC99E, 0x8501, 0xC99F, 0x8502, 0xC9A0,
+	0x8503, 0xCA40, 0x8504, 0xCA41, 0x8505, 0xCA42, 0x8506, 0xCA43,
+	0x8507, 0xCA44, 0x8508, 0xCA45, 0x8509, 0xCA46, 0x850A, 0xCA47,
+	0x850B, 0xCA48, 0x850C, 0xDDF8, 0x850D, 0xCA49, 0x850E, 0xCA4A,
+	0x850F, 0xCA4B, 0x8510, 0xCA4C, 0x8511, 0xC3EF, 0x8512, 0xCA4D,
+	0x8513, 0xC2FB, 0x8514, 0xCA4E, 0x8515, 0xCA4F, 0x8516, 0xCA50,
+	0x8517, 0xD5E1, 0x8518, 0xCA51, 0x8519, 0xCA52, 0x851A, 0xCEB5,
+	0x851B, 0xCA53, 0x851C, 0xCA54, 0x851D, 0xCA55, 0x851E, 0xCA56,
+	0x851F, 0xDDFD, 0x8520, 0xCA57, 0x8521, 0xB2CC, 0x8522, 0xCA58,
+	0x8523, 0xCA59, 0x8524, 0xCA5A, 0x8525, 0xCA5B, 0x8526, 0xCA5C,
+	0x8527, 0xCA5D, 0x8528, 0xCA5E, 0x8529, 0xCA5F, 0x852A, 0xCA60,
+	0x852B, 0xC4E8, 0x852C, 0xCADF, 0x852D, 0xCA61, 0x852E, 0xCA62,
+	0x852F, 0xCA63, 0x8530, 0xCA64, 0x8531, 0xCA65, 0x8532, 0xCA66,
+	0x8533, 0xCA67, 0x8534, 0xCA68, 0x8535, 0xCA69, 0x8536, 0xCA6A,
+	0x8537, 0xC7BE, 0x8538, 0xDDFA, 0x8539, 0xDDFC, 0x853A, 0xDDFE,
+	0x853B, 0xDEA2, 0x853C, 0xB0AA, 0x853D, 0xB1CE, 0x853E, 0xCA6B,
+	0x853F, 0xCA6C, 0x8540, 0xCA6D, 0x8541, 0xCA6E, 0x8542, 0xCA6F,
+	0x8543, 0xDEAC, 0x8544, 0xCA70, 0x8545, 0xCA71, 0x8546, 0xCA72,
+	0x8547, 0xCA73, 0x8548, 0xDEA6, 0x8549, 0xBDB6, 0x854A, 0xC8EF,
+	0x854B, 0xCA74, 0x854C, 0xCA75, 0x854D, 0xCA76, 0x854E, 0xCA77,
+	0x854F, 0xCA78, 0x8550, 0xCA79, 0x8551, 0xCA7A, 0x8552, 0xCA7B,
+	0x8553, 0xCA7C, 0x8554, 0xCA7D, 0x8555, 0xCA7E, 0x8556, 0xDEA1,
+	0x8557, 0xCA80, 0x8558, 0xCA81, 0x8559, 0xDEA5, 0x855A, 0xCA82,
+	0x855B, 0xCA83, 0x855C, 0xCA84, 0x855D, 0xCA85, 0x855E, 0xDEA9,
+	0x855F, 0xCA86, 0x8560, 0xCA87, 0x8561, 0xCA88, 0x8562, 0xCA89,
+	0x8563, 0xCA8A, 0x8564, 0xDEA8, 0x8565, 0xCA8B, 0x8566, 0xCA8C,
+	0x8567, 0xCA8D, 0x8568, 0xDEA7, 0x8569, 0xCA8E, 0x856A, 0xCA8F,
+	0x856B, 0xCA90, 0x856C, 0xCA91, 0x856D, 0xCA92, 0x856E, 0xCA93,
+	0x856F, 0xCA94, 0x8570, 0xCA95, 0x8571, 0xCA96, 0x8572, 0xDEAD,
+	0x8573, 0xCA97, 0x8574, 0xD4CC, 0x8575, 0xCA98, 0x8576, 0xCA99,
+	0x8577, 0xCA9A, 0x8578, 0xCA9B, 0x8579, 0xDEB3, 0x857A, 0xDEAA,
+	0x857B, 0xDEAE, 0x857C, 0xCA9C, 0x857D, 0xCA9D, 0x857E, 0xC0D9,
+	0x857F, 0xCA9E, 0x8580, 0xCA9F, 0x8581, 0xCAA0, 0x8582, 0xCB40,
+	0x8583, 0xCB41, 0x8584, 0xB1A1, 0x8585, 0xDEB6, 0x8586, 0xCB42,
+	0x8587, 0xDEB1, 0x8588, 0xCB43, 0x8589, 0xCB44, 0x858A, 0xCB45,
+	0x858B, 0xCB46, 0x858C, 0xCB47, 0x858D, 0xCB48, 0x858E, 0xCB49,
+	0x858F, 0xDEB2, 0x8590, 0xCB4A, 0x8591, 0xCB4B, 0x8592, 0xCB4C,
+	0x8593, 0xCB4D, 0x8594, 0xCB4E, 0x8595, 0xCB4F, 0x8596, 0xCB50,
+	0x8597, 0xCB51, 0x8598, 0xCB52, 0x8599, 0xCB53, 0x859A, 0xCB54,
+	0x859B, 0xD1A6, 0x859C, 0xDEB5, 0x859D, 0xCB55, 0x859E, 0xCB56,
+	0x859F, 0xCB57, 0x85A0, 0xCB58, 0x85A1, 0xCB59, 0x85A2, 0xCB5A,
+	0x85A3, 0xCB5B, 0x85A4, 0xDEAF, 0x85A5, 0xCB5C, 0x85A6, 0xCB5D,
+	0x85A7, 0xCB5E, 0x85A8, 0xDEB0, 0x85A9, 0xCB5F, 0x85AA, 0xD0BD,
+	0x85AB, 0xCB60, 0x85AC, 0xCB61, 0x85AD, 0xCB62, 0x85AE, 0xDEB4,
+	0x85AF, 0xCAED, 0x85B0, 0xDEB9, 0x85B1, 0xCB63, 0x85B2, 0xCB64,
+	0x85B3, 0xCB65, 0x85B4, 0xCB66, 0x85B5, 0xCB67, 0x85B6, 0xCB68,
+	0x85B7, 0xDEB8, 0x85B8, 0xCB69, 0x85B9, 0xDEB7, 0x85BA, 0xCB6A,
+	0x85BB, 0xCB6B, 0x85BC, 0xCB6C, 0x85BD, 0xCB6D, 0x85BE, 0xCB6E,
+	0x85BF, 0xCB6F, 0x85C0, 0xCB70, 0x85C1, 0xDEBB, 0x85C2, 0xCB71,
+	0x85C3, 0xCB72, 0x85C4, 0xCB73, 0x85C5, 0xCB74, 0x85C6, 0xCB75,
+	0x85C7, 0xCB76, 0x85C8, 0xCB77, 0x85C9, 0xBDE5, 0x85CA, 0xCB78,
+	0x85CB, 0xCB79, 0x85CC, 0xCB7A, 0x85CD, 0xCB7B, 0x85CE, 0xCB7C,
+	0x85CF, 0xB2D8, 0x85D0, 0xC3EA, 0x85D1, 0xCB7D, 0x85D2, 0xCB7E,
+	0x85D3, 0xDEBA, 0x85D4, 0xCB80, 0x85D5, 0xC5BA, 0x85D6, 0xCB81,
+	0x85D7, 0xCB82, 0x85D8, 0xCB83, 0x85D9, 0xCB84, 0x85DA, 0xCB85,
+	0x85DB, 0xCB86, 0x85DC, 0xDEBC, 0x85DD, 0xCB87, 0x85DE, 0xCB88,
+	0x85DF, 0xCB89, 0x85E0, 0xCB8A, 0x85E1, 0xCB8B, 0x85E2, 0xCB8C,
+	0x85E3, 0xCB8D, 0x85E4, 0xCCD9, 0x85E5, 0xCB8E, 0x85E6, 0xCB8F,
+	0x85E7, 0xCB90, 0x85E8, 0xCB91, 0x85E9, 0xB7AA, 0x85EA, 0xCB92,
+	0x85EB, 0xCB93, 0x85EC, 0xCB94, 0x85ED, 0xCB95, 0x85EE, 0xCB96,
+	0x85EF, 0xCB97, 0x85F0, 0xCB98, 0x85F1, 0xCB99, 0x85F2, 0xCB9A,
+	0x85F3, 0xCB9B, 0x85F4, 0xCB9C, 0x85F5, 0xCB9D, 0x85F6, 0xCB9E,
+	0x85F7, 0xCB9F, 0x85F8, 0xCBA0, 0x85F9, 0xCC40, 0x85FA, 0xCC41,
+	0x85FB, 0xD4E5, 0x85FC, 0xCC42, 0x85FD, 0xCC43, 0x85FE, 0xCC44,
+	0x85FF, 0xDEBD, 0x8600, 0xCC45, 0x8601, 0xCC46, 0x8602, 0xCC47,
+	0x8603, 0xCC48, 0x8604, 0xCC49, 0x8605, 0xDEBF, 0x8606, 0xCC4A,
+	0x8607, 0xCC4B, 0x8608, 0xCC4C, 0x8609, 0xCC4D, 0x860A, 0xCC4E,
+	0x860B, 0xCC4F, 0x860C, 0xCC50, 0x860D, 0xCC51, 0x860E, 0xCC52,
+	0x860F, 0xCC53, 0x8610, 0xCC54, 0x8611, 0xC4A2, 0x8612, 0xCC55,
+	0x8613, 0xCC56, 0x8614, 0xCC57, 0x8615, 0xCC58, 0x8616, 0xDEC1,
+	0x8617, 0xCC59, 0x8618, 0xCC5A, 0x8619, 0xCC5B, 0x861A, 0xCC5C,
+	0x861B, 0xCC5D, 0x861C, 0xCC5E, 0x861D, 0xCC5F, 0x861E, 0xCC60,
+	0x861F, 0xCC61, 0x8620, 0xCC62, 0x8621, 0xCC63, 0x8622, 0xCC64,
+	0x8623, 0xCC65, 0x8624, 0xCC66, 0x8625, 0xCC67, 0x8626, 0xCC68,
+	0x8627, 0xDEBE, 0x8628, 0xCC69, 0x8629, 0xDEC0, 0x862A, 0xCC6A,
+	0x862B, 0xCC6B, 0x862C, 0xCC6C, 0x862D, 0xCC6D, 0x862E, 0xCC6E,
+	0x862F, 0xCC6F, 0x8630, 0xCC70, 0x8631, 0xCC71, 0x8632, 0xCC72,
+	0x8633, 0xCC73, 0x8634, 0xCC74, 0x8635, 0xCC75, 0x8636, 0xCC76,
+	0x8637, 0xCC77, 0x8638, 0xD5BA, 0x8639, 0xCC78, 0x863A, 0xCC79,
+	0x863B, 0xCC7A, 0x863C, 0xDEC2, 0x863D, 0xCC7B, 0x863E, 0xCC7C,
+	0x863F, 0xCC7D, 0x8640, 0xCC7E, 0x8641, 0xCC80, 0x8642, 0xCC81,
+	0x8643, 0xCC82, 0x8644, 0xCC83, 0x8645, 0xCC84, 0x8646, 0xCC85,
+	0x8647, 0xCC86, 0x8648, 0xCC87, 0x8649, 0xCC88, 0x864A, 0xCC89,
+	0x864B, 0xCC8A, 0x864C, 0xCC8B, 0x864D, 0xF2AE, 0x864E, 0xBBA2,
+	0x864F, 0xC2B2, 0x8650, 0xC5B0, 0x8651, 0xC2C7, 0x8652, 0xCC8C,
+	0x8653, 0xCC8D, 0x8654, 0xF2AF, 0x8655, 0xCC8E, 0x8656, 0xCC8F,
+	0x8657, 0xCC90, 0x8658, 0xCC91, 0x8659, 0xCC92, 0x865A, 0xD0E9,
+	0x865B, 0xCC93, 0x865C, 0xCC94, 0x865D, 0xCC95, 0x865E, 0xD3DD,
+	0x865F, 0xCC96, 0x8660, 0xCC97, 0x8661, 0xCC98, 0x8662, 0xEBBD,
+	0x8663, 0xCC99, 0x8664, 0xCC9A, 0x8665, 0xCC9B, 0x8666, 0xCC9C,
+	0x8667, 0xCC9D, 0x8668, 0xCC9E, 0x8669, 0xCC9F, 0x866A, 0xCCA0,
+	0x866B, 0xB3E6, 0x866C, 0xF2B0, 0x866D, 0xCD40, 0x866E, 0xF2B1,
+	0x866F, 0xCD41, 0x8670, 0xCD42, 0x8671, 0xCAAD, 0x8672, 0xCD43,
+	0x8673, 0xCD44, 0x8674, 0xCD45, 0x8675, 0xCD46, 0x8676, 0xCD47,
+	0x8677, 0xCD48, 0x8678, 0xCD49, 0x8679, 0xBAE7, 0x867A, 0xF2B3,
+	0x867B, 0xF2B5, 0x867C, 0xF2B4, 0x867D, 0xCBE4, 0x867E, 0xCFBA,
+	0x867F, 0xF2B2, 0x8680, 0xCAB4, 0x8681, 0xD2CF, 0x8682, 0xC2EC,
+	0x8683, 0xCD4A, 0x8684, 0xCD4B, 0x8685, 0xCD4C, 0x8686, 0xCD4D,
+	0x8687, 0xCD4E, 0x8688, 0xCD4F, 0x8689, 0xCD50, 0x868A, 0xCEC3,
+	0x868B, 0xF2B8, 0x868C, 0xB0F6, 0x868D, 0xF2B7, 0x868E, 0xCD51,
+	0x868F, 0xCD52, 0x8690, 0xCD53, 0x8691, 0xCD54, 0x8692, 0xCD55,
+	0x8693, 0xF2BE, 0x8694, 0xCD56, 0x8695, 0xB2CF, 0x8696, 0xCD57,
+	0x8697, 0xCD58, 0x8698, 0xCD59, 0x8699, 0xCD5A, 0x869A, 0xCD5B,
+	0x869B, 0xCD5C, 0x869C, 0xD1C1, 0x869D, 0xF2BA, 0x869E, 0xCD5D,
+	0x869F, 0xCD5E, 0x86A0, 0xCD5F, 0x86A1, 0xCD60, 0x86A2, 0xCD61,
+	0x86A3, 0xF2BC, 0x86A4, 0xD4E9, 0x86A5, 0xCD62, 0x86A6, 0xCD63,
+	0x86A7, 0xF2BB, 0x86A8, 0xF2B6, 0x86A9, 0xF2BF, 0x86AA, 0xF2BD,
+	0x86AB, 0xCD64, 0x86AC, 0xF2B9, 0x86AD, 0xCD65, 0x86AE, 0xCD66,
+	0x86AF, 0xF2C7, 0x86B0, 0xF2C4, 0x86B1, 0xF2C6, 0x86B2, 0xCD67,
+	0x86B3, 0xCD68, 0x86B4, 0xF2CA, 0x86B5, 0xF2C2, 0x86B6, 0xF2C0,
+	0x86B7, 0xCD69, 0x86B8, 0xCD6A, 0x86B9, 0xCD6B, 0x86BA, 0xF2C5,
+	0x86BB, 0xCD6C, 0x86BC, 0xCD6D, 0x86BD, 0xCD6E, 0x86BE, 0xCD6F,
+	0x86BF, 0xCD70, 0x86C0, 0xD6FB, 0x86C1, 0xCD71, 0x86C2, 0xCD72,
+	0x86C3, 0xCD73, 0x86C4, 0xF2C1, 0x86C5, 0xCD74, 0x86C6, 0xC7F9,
+	0x86C7, 0xC9DF, 0x86C8, 0xCD75, 0x86C9, 0xF2C8, 0x86CA, 0xB9C6,
+	0x86CB, 0xB5B0, 0x86CC, 0xCD76, 0x86CD, 0xCD77, 0x86CE, 0xF2C3,
+	0x86CF, 0xF2C9, 0x86D0, 0xF2D0, 0x86D1, 0xF2D6, 0x86D2, 0xCD78,
+	0x86D3, 0xCD79, 0x86D4, 0xBBD7, 0x86D5, 0xCD7A, 0x86D6, 0xCD7B,
+	0x86D7, 0xCD7C, 0x86D8, 0xF2D5, 0x86D9, 0xCDDC, 0x86DA, 0xCD7D,
+	0x86DB, 0xD6EB, 0x86DC, 0xCD7E, 0x86DD, 0xCD80, 0x86DE, 0xF2D2,
+	0x86DF, 0xF2D4, 0x86E0, 0xCD81, 0x86E1, 0xCD82, 0x86E2, 0xCD83,
+	0x86E3, 0xCD84, 0x86E4, 0xB8F2, 0x86E5, 0xCD85, 0x86E6, 0xCD86,
+	0x86E7, 0xCD87, 0x86E8, 0xCD88, 0x86E9, 0xF2CB, 0x86EA, 0xCD89,
+	0x86EB, 0xCD8A, 0x86EC, 0xCD8B, 0x86ED, 0xF2CE, 0x86EE, 0xC2F9,
+	0x86EF, 0xCD8C, 0x86F0, 0xD5DD, 0x86F1, 0xF2CC, 0x86F2, 0xF2CD,
+	0x86F3, 0xF2CF, 0x86F4, 0xF2D3, 0x86F5, 0xCD8D, 0x86F6, 0xCD8E,
+	0x86F7, 0xCD8F, 0x86F8, 0xF2D9, 0x86F9, 0xD3BC, 0x86FA, 0xCD90,
+	0x86FB, 0xCD91, 0x86FC, 0xCD92, 0x86FD, 0xCD93, 0x86FE, 0xB6EA,
+	0x86FF, 0xCD94, 0x8700, 0xCAF1, 0x8701, 0xCD95, 0x8702, 0xB7E4,
+	0x8703, 0xF2D7, 0x8704, 0xCD96, 0x8705, 0xCD97, 0x8706, 0xCD98,
+	0x8707, 0xF2D8, 0x8708, 0xF2DA, 0x8709, 0xF2DD, 0x870A, 0xF2DB,
+	0x870B, 0xCD99, 0x870C, 0xCD9A, 0x870D, 0xF2DC, 0x870E, 0xCD9B,
+	0x870F, 0xCD9C, 0x8710, 0xCD9D, 0x8711, 0xCD9E, 0x8712, 0xD1D1,
+	0x8713, 0xF2D1, 0x8714, 0xCD9F, 0x8715, 0xCDC9, 0x8716, 0xCDA0,
+	0x8717, 0xCECF, 0x8718, 0xD6A9, 0x8719, 0xCE40, 0x871A, 0xF2E3,
+	0x871B, 0xCE41, 0x871C, 0xC3DB, 0x871D, 0xCE42, 0x871E, 0xF2E0,
+	0x871F, 0xCE43, 0x8720, 0xCE44, 0x8721, 0xC0AF, 0x8722, 0xF2EC,
+	0x8723, 0xF2DE, 0x8724, 0xCE45, 0x8725, 0xF2E1, 0x8726, 0xCE46,
+	0x8727, 0xCE47, 0x8728, 0xCE48, 0x8729, 0xF2E8, 0x872A, 0xCE49,
+	0x872B, 0xCE4A, 0x872C, 0xCE4B, 0x872D, 0xCE4C, 0x872E, 0xF2E2,
+	0x872F, 0xCE4D, 0x8730, 0xCE4E, 0x8731, 0xF2E7, 0x8732, 0xCE4F,
+	0x8733, 0xCE50, 0x8734, 0xF2E6, 0x8735, 0xCE51, 0x8736, 0xCE52,
+	0x8737, 0xF2E9, 0x8738, 0xCE53, 0x8739, 0xCE54, 0x873A, 0xCE55,
+	0x873B, 0xF2DF, 0x873C, 0xCE56, 0x873D, 0xCE57, 0x873E, 0xF2E4,
+	0x873F, 0xF2EA, 0x8740, 0xCE58, 0x8741, 0xCE59, 0x8742, 0xCE5A,
+	0x8743, 0xCE5B, 0x8744, 0xCE5C, 0x8745, 0xCE5D, 0x8746, 0xCE5E,
+	0x8747, 0xD3AC, 0x8748, 0xF2E5, 0x8749, 0xB2F5, 0x874A, 0xCE5F,
+	0x874B, 0xCE60, 0x874C, 0xF2F2, 0x874D, 0xCE61, 0x874E, 0xD0AB,
+	0x874F, 0xCE62, 0x8750, 0xCE63, 0x8751, 0xCE64, 0x8752, 0xCE65,
+	0x8753, 0xF2F5, 0x8754, 0xCE66, 0x8755, 0xCE67, 0x8756, 0xCE68,
+	0x8757, 0xBBC8, 0x8758, 0xCE69, 0x8759, 0xF2F9, 0x875A, 0xCE6A,
+	0x875B, 0xCE6B, 0x875C, 0xCE6C, 0x875D, 0xCE6D, 0x875E, 0xCE6E,
+	0x875F, 0xCE6F, 0x8760, 0xF2F0, 0x8761, 0xCE70, 0x8762, 0xCE71,
+	0x8763, 0xF2F6, 0x8764, 0xF2F8, 0x8765, 0xF2FA, 0x8766, 0xCE72,
+	0x8767, 0xCE73, 0x8768, 0xCE74, 0x8769, 0xCE75, 0x876A, 0xCE76,
+	0x876B, 0xCE77, 0x876C, 0xCE78, 0x876D, 0xCE79, 0x876E, 0xF2F3,
+	0x876F, 0xCE7A, 0x8770, 0xF2F1, 0x8771, 0xCE7B, 0x8772, 0xCE7C,
+	0x8773, 0xCE7D, 0x8774, 0xBAFB, 0x8775, 0xCE7E, 0x8776, 0xB5FB,
+	0x8777, 0xCE80, 0x8778, 0xCE81, 0x8779, 0xCE82, 0x877A, 0xCE83,
+	0x877B, 0xF2EF, 0x877C, 0xF2F7, 0x877D, 0xF2ED, 0x877E, 0xF2EE,
+	0x877F, 0xCE84, 0x8780, 0xCE85, 0x8781, 0xCE86, 0x8782, 0xF2EB,
+	0x8783, 0xF3A6, 0x8784, 0xCE87, 0x8785, 0xF3A3, 0x8786, 0xCE88,
+	0x8787, 0xCE89, 0x8788, 0xF3A2, 0x8789, 0xCE8A, 0x878A, 0xCE8B,
+	0x878B, 0xF2F4, 0x878C, 0xCE8C, 0x878D, 0xC8DA, 0x878E, 0xCE8D,
+	0x878F, 0xCE8E, 0x8790, 0xCE8F, 0x8791, 0xCE90, 0x8792, 0xCE91,
+	0x8793, 0xF2FB, 0x8794, 0xCE92, 0x8795, 0xCE93, 0x8796, 0xCE94,
+	0x8797, 0xF3A5, 0x8798, 0xCE95, 0x8799, 0xCE96, 0x879A, 0xCE97,
+	0x879B, 0xCE98, 0x879C, 0xCE99, 0x879D, 0xCE9A, 0x879E, 0xCE9B,
+	0x879F, 0xC3F8, 0x87A0, 0xCE9C, 0x87A1, 0xCE9D, 0x87A2, 0xCE9E,
+	0x87A3, 0xCE9F, 0x87A4, 0xCEA0, 0x87A5, 0xCF40, 0x87A6, 0xCF41,
+	0x87A7, 0xCF42, 0x87A8, 0xF2FD, 0x87A9, 0xCF43, 0x87AA, 0xCF44,
+	0x87AB, 0xF3A7, 0x87AC, 0xF3A9, 0x87AD, 0xF3A4, 0x87AE, 0xCF45,
+	0x87AF, 0xF2FC, 0x87B0, 0xCF46, 0x87B1, 0xCF47, 0x87B2, 0xCF48,
+	0x87B3, 0xF3AB, 0x87B4, 0xCF49, 0x87B5, 0xF3AA, 0x87B6, 0xCF4A,
+	0x87B7, 0xCF4B, 0x87B8, 0xCF4C, 0x87B9, 0xCF4D, 0x87BA, 0xC2DD,
+	0x87BB, 0xCF4E, 0x87BC, 0xCF4F, 0x87BD, 0xF3AE, 0x87BE, 0xCF50,
+	0x87BF, 0xCF51, 0x87C0, 0xF3B0, 0x87C1, 0xCF52, 0x87C2, 0xCF53,
+	0x87C3, 0xCF54, 0x87C4, 0xCF55, 0x87C5, 0xCF56, 0x87C6, 0xF3A1,
+	0x87C7, 0xCF57, 0x87C8, 0xCF58, 0x87C9, 0xCF59, 0x87CA, 0xF3B1,
+	0x87CB, 0xF3AC, 0x87CC, 0xCF5A, 0x87CD, 0xCF5B, 0x87CE, 0xCF5C,
+	0x87CF, 0xCF5D, 0x87D0, 0xCF5E, 0x87D1, 0xF3AF, 0x87D2, 0xF2FE,
+	0x87D3, 0xF3AD, 0x87D4, 0xCF5F, 0x87D5, 0xCF60, 0x87D6, 0xCF61,
+	0x87D7, 0xCF62, 0x87D8, 0xCF63, 0x87D9, 0xCF64, 0x87DA, 0xCF65,
+	0x87DB, 0xF3B2, 0x87DC, 0xCF66, 0x87DD, 0xCF67, 0x87DE, 0xCF68,
+	0x87DF, 0xCF69, 0x87E0, 0xF3B4, 0x87E1, 0xCF6A, 0x87E2, 0xCF6B,
+	0x87E3, 0xCF6C, 0x87E4, 0xCF6D, 0x87E5, 0xF3A8, 0x87E6, 0xCF6E,
+	0x87E7, 0xCF6F, 0x87E8, 0xCF70, 0x87E9, 0xCF71, 0x87EA, 0xF3B3,
+	0x87EB, 0xCF72, 0x87EC, 0xCF73, 0x87ED, 0xCF74, 0x87EE, 0xF3B5,
+	0x87EF, 0xCF75, 0x87F0, 0xCF76, 0x87F1, 0xCF77, 0x87F2, 0xCF78,
+	0x87F3, 0xCF79, 0x87F4, 0xCF7A, 0x87F5, 0xCF7B, 0x87F6, 0xCF7C,
+	0x87F7, 0xCF7D, 0x87F8, 0xCF7E, 0x87F9, 0xD0B7, 0x87FA, 0xCF80,
+	0x87FB, 0xCF81, 0x87FC, 0xCF82, 0x87FD, 0xCF83, 0x87FE, 0xF3B8,
+	0x87FF, 0xCF84, 0x8800, 0xCF85, 0x8801, 0xCF86, 0x8802, 0xCF87,
+	0x8803, 0xD9F9, 0x8804, 0xCF88, 0x8805, 0xCF89, 0x8806, 0xCF8A,
+	0x8807, 0xCF8B, 0x8808, 0xCF8C, 0x8809, 0xCF8D, 0x880A, 0xF3B9,
+	0x880B, 0xCF8E, 0x880C, 0xCF8F, 0x880D, 0xCF90, 0x880E, 0xCF91,
+	0x880F, 0xCF92, 0x8810, 0xCF93, 0x8811, 0xCF94, 0x8812, 0xCF95,
+	0x8813, 0xF3B7, 0x8814, 0xCF96, 0x8815, 0xC8E4, 0x8816, 0xF3B6,
+	0x8817, 0xCF97, 0x8818, 0xCF98, 0x8819, 0xCF99, 0x881A, 0xCF9A,
+	0x881B, 0xF3BA, 0x881C, 0xCF9B, 0x881D, 0xCF9C, 0x881E, 0xCF9D,
+	0x881F, 0xCF9E, 0x8820, 0xCF9F, 0x8821, 0xF3BB, 0x8822, 0xB4C0,
+	0x8823, 0xCFA0, 0x8824, 0xD040, 0x8825, 0xD041, 0x8826, 0xD042,
+	0x8827, 0xD043, 0x8828, 0xD044, 0x8829, 0xD045, 0x882A, 0xD046,
+	0x882B, 0xD047, 0x882C, 0xD048, 0x882D, 0xD049, 0x882E, 0xD04A,
+	0x882F, 0xD04B, 0x8830, 0xD04C, 0x8831, 0xD04D, 0x8832, 0xEEC3,
+	0x8833, 0xD04E, 0x8834, 0xD04F, 0x8835, 0xD050, 0x8836, 0xD051,
+	0x8837, 0xD052, 0x8838, 0xD053, 0x8839, 0xF3BC, 0x883A, 0xD054,
+	0x883B, 0xD055, 0x883C, 0xF3BD, 0x883D, 0xD056, 0x883E, 0xD057,
+	0x883F, 0xD058, 0x8840, 0xD1AA, 0x8841, 0xD059, 0x8842, 0xD05A,
+	0x8843, 0xD05B, 0x8844, 0xF4AC, 0x8845, 0xD0C6, 0x8846, 0xD05C,
+	0x8847, 0xD05D, 0x8848, 0xD05E, 0x8849, 0xD05F, 0x884A, 0xD060,
+	0x884B, 0xD061, 0x884C, 0xD0D0, 0x884D, 0xD1DC, 0x884E, 0xD062,
+	0x884F, 0xD063, 0x8850, 0xD064, 0x8851, 0xD065, 0x8852, 0xD066,
+	0x8853, 0xD067, 0x8854, 0xCFCE, 0x8855, 0xD068, 0x8856, 0xD069,
+	0x8857, 0xBDD6, 0x8858, 0xD06A, 0x8859, 0xD1C3, 0x885A, 0xD06B,
+	0x885B, 0xD06C, 0x885C, 0xD06D, 0x885D, 0xD06E, 0x885E, 0xD06F,
+	0x885F, 0xD070, 0x8860, 0xD071, 0x8861, 0xBAE2, 0x8862, 0xE1E9,
+	0x8863, 0xD2C2, 0x8864, 0xF1C2, 0x8865, 0xB2B9, 0x8866, 0xD072,
+	0x8867, 0xD073, 0x8868, 0xB1ED, 0x8869, 0xF1C3, 0x886A, 0xD074,
+	0x886B, 0xC9C0, 0x886C, 0xB3C4, 0x886D, 0xD075, 0x886E, 0xD9F2,
+	0x886F, 0xD076, 0x8870, 0xCBA5, 0x8871, 0xD077, 0x8872, 0xF1C4,
+	0x8873, 0xD078, 0x8874, 0xD079, 0x8875, 0xD07A, 0x8876, 0xD07B,
+	0x8877, 0xD6D4, 0x8878, 0xD07C, 0x8879, 0xD07D, 0x887A, 0xD07E,
+	0x887B, 0xD080, 0x887C, 0xD081, 0x887D, 0xF1C5, 0x887E, 0xF4C0,
+	0x887F, 0xF1C6, 0x8880, 0xD082, 0x8881, 0xD4AC, 0x8882, 0xF1C7,
+	0x8883, 0xD083, 0x8884, 0xB0C0, 0x8885, 0xF4C1, 0x8886, 0xD084,
+	0x8887, 0xD085, 0x8888, 0xF4C2, 0x8889, 0xD086, 0x888A, 0xD087,
+	0x888B, 0xB4FC, 0x888C, 0xD088, 0x888D, 0xC5DB, 0x888E, 0xD089,
+	0x888F, 0xD08A, 0x8890, 0xD08B, 0x8891, 0xD08C, 0x8892, 0xCCBB,
+	0x8893, 0xD08D, 0x8894, 0xD08E, 0x8895, 0xD08F, 0x8896, 0xD0E4,
+	0x8897, 0xD090, 0x8898, 0xD091, 0x8899, 0xD092, 0x889A, 0xD093,
+	0x889B, 0xD094, 0x889C, 0xCDE0, 0x889D, 0xD095, 0x889E, 0xD096,
+	0x889F, 0xD097, 0x88A0, 0xD098, 0x88A1, 0xD099, 0x88A2, 0xF1C8,
+	0x88A3, 0xD09A, 0x88A4, 0xD9F3, 0x88A5, 0xD09B, 0x88A6, 0xD09C,
+	0x88A7, 0xD09D, 0x88A8, 0xD09E, 0x88A9, 0xD09F, 0x88AA, 0xD0A0,
+	0x88AB, 0xB1BB, 0x88AC, 0xD140, 0x88AD, 0xCFAE, 0x88AE, 0xD141,
+	0x88AF, 0xD142, 0x88B0, 0xD143, 0x88B1, 0xB8A4, 0x88B2, 0xD144,
+	0x88B3, 0xD145, 0x88B4, 0xD146, 0x88B5, 0xD147, 0x88B6, 0xD148,
+	0x88B7, 0xF1CA, 0x88B8, 0xD149, 0x88B9, 0xD14A, 0x88BA, 0xD14B,
+	0x88BB, 0xD14C, 0x88BC, 0xF1CB, 0x88BD, 0xD14D, 0x88BE, 0xD14E,
+	0x88BF, 0xD14F, 0x88C0, 0xD150, 0x88C1, 0xB2C3, 0x88C2, 0xC1D1,
+	0x88C3, 0xD151, 0x88C4, 0xD152, 0x88C5, 0xD7B0, 0x88C6, 0xF1C9,
+	0x88C7, 0xD153, 0x88C8, 0xD154, 0x88C9, 0xF1CC, 0x88CA, 0xD155,
+	0x88CB, 0xD156, 0x88CC, 0xD157, 0x88CD, 0xD158, 0x88CE, 0xF1CE,
+	0x88CF, 0xD159, 0x88D0, 0xD15A, 0x88D1, 0xD15B, 0x88D2, 0xD9F6,
+	0x88D3, 0xD15C, 0x88D4, 0xD2E1, 0x88D5, 0xD4A3, 0x88D6, 0xD15D,
+	0x88D7, 0xD15E, 0x88D8, 0xF4C3, 0x88D9, 0xC8B9, 0x88DA, 0xD15F,
+	0x88DB, 0xD160, 0x88DC, 0xD161, 0x88DD, 0xD162, 0x88DE, 0xD163,
+	0x88DF, 0xF4C4, 0x88E0, 0xD164, 0x88E1, 0xD165, 0x88E2, 0xF1CD,
+	0x88E3, 0xF1CF, 0x88E4, 0xBFE3, 0x88E5, 0xF1D0, 0x88E6, 0xD166,
+	0x88E7, 0xD167, 0x88E8, 0xF1D4, 0x88E9, 0xD168, 0x88EA, 0xD169,
+	0x88EB, 0xD16A, 0x88EC, 0xD16B, 0x88ED, 0xD16C, 0x88EE, 0xD16D,
+	0x88EF, 0xD16E, 0x88F0, 0xF1D6, 0x88F1, 0xF1D1, 0x88F2, 0xD16F,
+	0x88F3, 0xC9D1, 0x88F4, 0xC5E1, 0x88F5, 0xD170, 0x88F6, 0xD171,
+	0x88F7, 0xD172, 0x88F8, 0xC2E3, 0x88F9, 0xB9FC, 0x88FA, 0xD173,
+	0x88FB, 0xD174, 0x88FC, 0xF1D3, 0x88FD, 0xD175, 0x88FE, 0xF1D5,
+	0x88FF, 0xD176, 0x8900, 0xD177, 0x8901, 0xD178, 0x8902, 0xB9D3,
+	0x8903, 0xD179, 0x8904, 0xD17A, 0x8905, 0xD17B, 0x8906, 0xD17C,
+	0x8907, 0xD17D, 0x8908, 0xD17E, 0x8909, 0xD180, 0x890A, 0xF1DB,
+	0x890B, 0xD181, 0x890C, 0xD182, 0x890D, 0xD183, 0x890E, 0xD184,
+	0x890F, 0xD185, 0x8910, 0xBAD6, 0x8911, 0xD186, 0x8912, 0xB0FD,
+	0x8913, 0xF1D9, 0x8914, 0xD187, 0x8915, 0xD188, 0x8916, 0xD189,
+	0x8917, 0xD18A, 0x8918, 0xD18B, 0x8919, 0xF1D8, 0x891A, 0xF1D2,
+	0x891B, 0xF1DA, 0x891C, 0xD18C, 0x891D, 0xD18D, 0x891E, 0xD18E,
+	0x891F, 0xD18F, 0x8920, 0xD190, 0x8921, 0xF1D7, 0x8922, 0xD191,
+	0x8923, 0xD192, 0x8924, 0xD193, 0x8925, 0xC8EC, 0x8926, 0xD194,
+	0x8927, 0xD195, 0x8928, 0xD196, 0x8929, 0xD197, 0x892A, 0xCDCA,
+	0x892B, 0xF1DD, 0x892C, 0xD198, 0x892D, 0xD199, 0x892E, 0xD19A,
+	0x892F, 0xD19B, 0x8930, 0xE5BD, 0x8931, 0xD19C, 0x8932, 0xD19D,
+	0x8933, 0xD19E, 0x8934, 0xF1DC, 0x8935, 0xD19F, 0x8936, 0xF1DE,
+	0x8937, 0xD1A0, 0x8938, 0xD240, 0x8939, 0xD241, 0x893A, 0xD242,
+	0x893B, 0xD243, 0x893C, 0xD244, 0x893D, 0xD245, 0x893E, 0xD246,
+	0x893F, 0xD247, 0x8940, 0xD248, 0x8941, 0xF1DF, 0x8942, 0xD249,
+	0x8943, 0xD24A, 0x8944, 0xCFE5, 0x8945, 0xD24B, 0x8946, 0xD24C,
+	0x8947, 0xD24D, 0x8948, 0xD24E, 0x8949, 0xD24F, 0x894A, 0xD250,
+	0x894B, 0xD251, 0x894C, 0xD252, 0x894D, 0xD253, 0x894E, 0xD254,
+	0x894F, 0xD255, 0x8950, 0xD256, 0x8951, 0xD257, 0x8952, 0xD258,
+	0x8953, 0xD259, 0x8954, 0xD25A, 0x8955, 0xD25B, 0x8956, 0xD25C,
+	0x8957, 0xD25D, 0x8958, 0xD25E, 0x8959, 0xD25F, 0x895A, 0xD260,
+	0x895B, 0xD261, 0x895C, 0xD262, 0x895D, 0xD263, 0x895E, 0xF4C5,
+	0x895F, 0xBDF3, 0x8960, 0xD264, 0x8961, 0xD265, 0x8962, 0xD266,
+	0x8963, 0xD267, 0x8964, 0xD268, 0x8965, 0xD269, 0x8966, 0xF1E0,
+	0x8967, 0xD26A, 0x8968, 0xD26B, 0x8969, 0xD26C, 0x896A, 0xD26D,
+	0x896B, 0xD26E, 0x896C, 0xD26F, 0x896D, 0xD270, 0x896E, 0xD271,
+	0x896F, 0xD272, 0x8970, 0xD273, 0x8971, 0xD274, 0x8972, 0xD275,
+	0x8973, 0xD276, 0x8974, 0xD277, 0x8975, 0xD278, 0x8976, 0xD279,
+	0x8977, 0xD27A, 0x8978, 0xD27B, 0x8979, 0xD27C, 0x897A, 0xD27D,
+	0x897B, 0xF1E1, 0x897C, 0xD27E, 0x897D, 0xD280, 0x897E, 0xD281,
+	0x897F, 0xCEF7, 0x8980, 0xD282, 0x8981, 0xD2AA, 0x8982, 0xD283,
+	0x8983, 0xF1FB, 0x8984, 0xD284, 0x8985, 0xD285, 0x8986, 0xB8B2,
+	0x8987, 0xD286, 0x8988, 0xD287, 0x8989, 0xD288, 0x898A, 0xD289,
+	0x898B, 0xD28A, 0x898C, 0xD28B, 0x898D, 0xD28C, 0x898E, 0xD28D,
+	0x898F, 0xD28E, 0x8990, 0xD28F, 0x8991, 0xD290, 0x8992, 0xD291,
+	0x8993, 0xD292, 0x8994, 0xD293, 0x8995, 0xD294, 0x8996, 0xD295,
+	0x8997, 0xD296, 0x8998, 0xD297, 0x8999, 0xD298, 0x899A, 0xD299,
+	0x899B, 0xD29A, 0x899C, 0xD29B, 0x899D, 0xD29C, 0x899E, 0xD29D,
+	0x899F, 0xD29E, 0x89A0, 0xD29F, 0x89A1, 0xD2A0, 0x89A2, 0xD340,
+	0x89A3, 0xD341, 0x89A4, 0xD342, 0x89A5, 0xD343, 0x89A6, 0xD344,
+	0x89A7, 0xD345, 0x89A8, 0xD346, 0x89A9, 0xD347, 0x89AA, 0xD348,
+	0x89AB, 0xD349, 0x89AC, 0xD34A, 0x89AD, 0xD34B, 0x89AE, 0xD34C,
+	0x89AF, 0xD34D, 0x89B0, 0xD34E, 0x89B1, 0xD34F, 0x89B2, 0xD350,
+	0x89B3, 0xD351, 0x89B4, 0xD352, 0x89B5, 0xD353, 0x89B6, 0xD354,
+	0x89B7, 0xD355, 0x89B8, 0xD356, 0x89B9, 0xD357, 0x89BA, 0xD358,
+	0x89BB, 0xD359, 0x89BC, 0xD35A, 0x89BD, 0xD35B, 0x89BE, 0xD35C,
+	0x89BF, 0xD35D, 0x89C0, 0xD35E, 0x89C1, 0xBCFB, 0x89C2, 0xB9DB,
+	0x89C3, 0xD35F, 0x89C4, 0xB9E6, 0x89C5, 0xC3D9, 0x89C6, 0xCAD3,
+	0x89C7, 0xEAE8, 0x89C8, 0xC0C0, 0x89C9, 0xBEF5, 0x89CA, 0xEAE9,
+	0x89CB, 0xEAEA, 0x89CC, 0xEAEB, 0x89CD, 0xD360, 0x89CE, 0xEAEC,
+	0x89CF, 0xEAED, 0x89D0, 0xEAEE, 0x89D1, 0xEAEF, 0x89D2, 0xBDC7,
+	0x89D3, 0xD361, 0x89D4, 0xD362, 0x89D5, 0xD363, 0x89D6, 0xF5FB,
+	0x89D7, 0xD364, 0x89D8, 0xD365, 0x89D9, 0xD366, 0x89DA, 0xF5FD,
+	0x89DB, 0xD367, 0x89DC, 0xF5FE, 0x89DD, 0xD368, 0x89DE, 0xF5FC,
+	0x89DF, 0xD369, 0x89E0, 0xD36A, 0x89E1, 0xD36B, 0x89E2, 0xD36C,
+	0x89E3, 0xBDE2, 0x89E4, 0xD36D, 0x89E5, 0xF6A1, 0x89E6, 0xB4A5,
+	0x89E7, 0xD36E, 0x89E8, 0xD36F, 0x89E9, 0xD370, 0x89EA, 0xD371,
+	0x89EB, 0xF6A2, 0x89EC, 0xD372, 0x89ED, 0xD373, 0x89EE, 0xD374,
+	0x89EF, 0xF6A3, 0x89F0, 0xD375, 0x89F1, 0xD376, 0x89F2, 0xD377,
+	0x89F3, 0xECB2, 0x89F4, 0xD378, 0x89F5, 0xD379, 0x89F6, 0xD37A,
+	0x89F7, 0xD37B, 0x89F8, 0xD37C, 0x89F9, 0xD37D, 0x89FA, 0xD37E,
+	0x89FB, 0xD380, 0x89FC, 0xD381, 0x89FD, 0xD382, 0x89FE, 0xD383,
+	0x89FF, 0xD384, 0x8A00, 0xD1D4, 0x8A01, 0xD385, 0x8A02, 0xD386,
+	0x8A03, 0xD387, 0x8A04, 0xD388, 0x8A05, 0xD389, 0x8A06, 0xD38A,
+	0x8A07, 0xD9EA, 0x8A08, 0xD38B, 0x8A09, 0xD38C, 0x8A0A, 0xD38D,
+	0x8A0B, 0xD38E, 0x8A0C, 0xD38F, 0x8A0D, 0xD390, 0x8A0E, 0xD391,
+	0x8A0F, 0xD392, 0x8A10, 0xD393, 0x8A11, 0xD394, 0x8A12, 0xD395,
+	0x8A13, 0xD396, 0x8A14, 0xD397, 0x8A15, 0xD398, 0x8A16, 0xD399,
+	0x8A17, 0xD39A, 0x8A18, 0xD39B, 0x8A19, 0xD39C, 0x8A1A, 0xD39D,
+	0x8A1B, 0xD39E, 0x8A1C, 0xD39F, 0x8A1D, 0xD3A0, 0x8A1E, 0xD440,
+	0x8A1F, 0xD441, 0x8A20, 0xD442, 0x8A21, 0xD443, 0x8A22, 0xD444,
+	0x8A23, 0xD445, 0x8A24, 0xD446, 0x8A25, 0xD447, 0x8A26, 0xD448,
+	0x8A27, 0xD449, 0x8A28, 0xD44A, 0x8A29, 0xD44B, 0x8A2A, 0xD44C,
+	0x8A2B, 0xD44D, 0x8A2C, 0xD44E, 0x8A2D, 0xD44F, 0x8A2E, 0xD450,
+	0x8A2F, 0xD451, 0x8A30, 0xD452, 0x8A31, 0xD453, 0x8A32, 0xD454,
+	0x8A33, 0xD455, 0x8A34, 0xD456, 0x8A35, 0xD457, 0x8A36, 0xD458,
+	0x8A37, 0xD459, 0x8A38, 0xD45A, 0x8A39, 0xD45B, 0x8A3A, 0xD45C,
+	0x8A3B, 0xD45D, 0x8A3C, 0xD45E, 0x8A3D, 0xD45F, 0x8A3E, 0xF6A4,
+	0x8A3F, 0xD460, 0x8A40, 0xD461, 0x8A41, 0xD462, 0x8A42, 0xD463,
+	0x8A43, 0xD464, 0x8A44, 0xD465, 0x8A45, 0xD466, 0x8A46, 0xD467,
+	0x8A47, 0xD468, 0x8A48, 0xEEBA, 0x8A49, 0xD469, 0x8A4A, 0xD46A,
+	0x8A4B, 0xD46B, 0x8A4C, 0xD46C, 0x8A4D, 0xD46D, 0x8A4E, 0xD46E,
+	0x8A4F, 0xD46F, 0x8A50, 0xD470, 0x8A51, 0xD471, 0x8A52, 0xD472,
+	0x8A53, 0xD473, 0x8A54, 0xD474, 0x8A55, 0xD475, 0x8A56, 0xD476,
+	0x8A57, 0xD477, 0x8A58, 0xD478, 0x8A59, 0xD479, 0x8A5A, 0xD47A,
+	0x8A5B, 0xD47B, 0x8A5C, 0xD47C, 0x8A5D, 0xD47D, 0x8A5E, 0xD47E,
+	0x8A5F, 0xD480, 0x8A60, 0xD481, 0x8A61, 0xD482, 0x8A62, 0xD483,
+	0x8A63, 0xD484, 0x8A64, 0xD485, 0x8A65, 0xD486, 0x8A66, 0xD487,
+	0x8A67, 0xD488, 0x8A68, 0xD489, 0x8A69, 0xD48A, 0x8A6A, 0xD48B,
+	0x8A6B, 0xD48C, 0x8A6C, 0xD48D, 0x8A6D, 0xD48E, 0x8A6E, 0xD48F,
+	0x8A6F, 0xD490, 0x8A70, 0xD491, 0x8A71, 0xD492, 0x8A72, 0xD493,
+	0x8A73, 0xD494, 0x8A74, 0xD495, 0x8A75, 0xD496, 0x8A76, 0xD497,
+	0x8A77, 0xD498, 0x8A78, 0xD499, 0x8A79, 0xD5B2, 0x8A7A, 0xD49A,
+	0x8A7B, 0xD49B, 0x8A7C, 0xD49C, 0x8A7D, 0xD49D, 0x8A7E, 0xD49E,
+	0x8A7F, 0xD49F, 0x8A80, 0xD4A0, 0x8A81, 0xD540, 0x8A82, 0xD541,
+	0x8A83, 0xD542, 0x8A84, 0xD543, 0x8A85, 0xD544, 0x8A86, 0xD545,
+	0x8A87, 0xD546, 0x8A88, 0xD547, 0x8A89, 0xD3FE, 0x8A8A, 0xCCDC,
+	0x8A8B, 0xD548, 0x8A8C, 0xD549, 0x8A8D, 0xD54A, 0x8A8E, 0xD54B,
+	0x8A8F, 0xD54C, 0x8A90, 0xD54D, 0x8A91, 0xD54E, 0x8A92, 0xD54F,
+	0x8A93, 0xCAC4, 0x8A94, 0xD550, 0x8A95, 0xD551, 0x8A96, 0xD552,
+	0x8A97, 0xD553, 0x8A98, 0xD554, 0x8A99, 0xD555, 0x8A9A, 0xD556,
+	0x8A9B, 0xD557, 0x8A9C, 0xD558, 0x8A9D, 0xD559, 0x8A9E, 0xD55A,
+	0x8A9F, 0xD55B, 0x8AA0, 0xD55C, 0x8AA1, 0xD55D, 0x8AA2, 0xD55E,
+	0x8AA3, 0xD55F, 0x8AA4, 0xD560, 0x8AA5, 0xD561, 0x8AA6, 0xD562,
+	0x8AA7, 0xD563, 0x8AA8, 0xD564, 0x8AA9, 0xD565, 0x8AAA, 0xD566,
+	0x8AAB, 0xD567, 0x8AAC, 0xD568, 0x8AAD, 0xD569, 0x8AAE, 0xD56A,
+	0x8AAF, 0xD56B, 0x8AB0, 0xD56C, 0x8AB1, 0xD56D, 0x8AB2, 0xD56E,
+	0x8AB3, 0xD56F, 0x8AB4, 0xD570, 0x8AB5, 0xD571, 0x8AB6, 0xD572,
+	0x8AB7, 0xD573, 0x8AB8, 0xD574, 0x8AB9, 0xD575, 0x8ABA, 0xD576,
+	0x8ABB, 0xD577, 0x8ABC, 0xD578, 0x8ABD, 0xD579, 0x8ABE, 0xD57A,
+	0x8ABF, 0xD57B, 0x8AC0, 0xD57C, 0x8AC1, 0xD57D, 0x8AC2, 0xD57E,
+	0x8AC3, 0xD580, 0x8AC4, 0xD581, 0x8AC5, 0xD582, 0x8AC6, 0xD583,
+	0x8AC7, 0xD584, 0x8AC8, 0xD585, 0x8AC9, 0xD586, 0x8ACA, 0xD587,
+	0x8ACB, 0xD588, 0x8ACC, 0xD589, 0x8ACD, 0xD58A, 0x8ACE, 0xD58B,
+	0x8ACF, 0xD58C, 0x8AD0, 0xD58D, 0x8AD1, 0xD58E, 0x8AD2, 0xD58F,
+	0x8AD3, 0xD590, 0x8AD4, 0xD591, 0x8AD5, 0xD592, 0x8AD6, 0xD593,
+	0x8AD7, 0xD594, 0x8AD8, 0xD595, 0x8AD9, 0xD596, 0x8ADA, 0xD597,
+	0x8ADB, 0xD598, 0x8ADC, 0xD599, 0x8ADD, 0xD59A, 0x8ADE, 0xD59B,
+	0x8ADF, 0xD59C, 0x8AE0, 0xD59D, 0x8AE1, 0xD59E, 0x8AE2, 0xD59F,
+	0x8AE3, 0xD5A0, 0x8AE4, 0xD640, 0x8AE5, 0xD641, 0x8AE6, 0xD642,
+	0x8AE7, 0xD643, 0x8AE8, 0xD644, 0x8AE9, 0xD645, 0x8AEA, 0xD646,
+	0x8AEB, 0xD647, 0x8AEC, 0xD648, 0x8AED, 0xD649, 0x8AEE, 0xD64A,
+	0x8AEF, 0xD64B, 0x8AF0, 0xD64C, 0x8AF1, 0xD64D, 0x8AF2, 0xD64E,
+	0x8AF3, 0xD64F, 0x8AF4, 0xD650, 0x8AF5, 0xD651, 0x8AF6, 0xD652,
+	0x8AF7, 0xD653, 0x8AF8, 0xD654, 0x8AF9, 0xD655, 0x8AFA, 0xD656,
+	0x8AFB, 0xD657, 0x8AFC, 0xD658, 0x8AFD, 0xD659, 0x8AFE, 0xD65A,
+	0x8AFF, 0xD65B, 0x8B00, 0xD65C, 0x8B01, 0xD65D, 0x8B02, 0xD65E,
+	0x8B03, 0xD65F, 0x8B04, 0xD660, 0x8B05, 0xD661, 0x8B06, 0xD662,
+	0x8B07, 0xE5C0, 0x8B08, 0xD663, 0x8B09, 0xD664, 0x8B0A, 0xD665,
+	0x8B0B, 0xD666, 0x8B0C, 0xD667, 0x8B0D, 0xD668, 0x8B0E, 0xD669,
+	0x8B0F, 0xD66A, 0x8B10, 0xD66B, 0x8B11, 0xD66C, 0x8B12, 0xD66D,
+	0x8B13, 0xD66E, 0x8B14, 0xD66F, 0x8B15, 0xD670, 0x8B16, 0xD671,
+	0x8B17, 0xD672, 0x8B18, 0xD673, 0x8B19, 0xD674, 0x8B1A, 0xD675,
+	0x8B1B, 0xD676, 0x8B1C, 0xD677, 0x8B1D, 0xD678, 0x8B1E, 0xD679,
+	0x8B1F, 0xD67A, 0x8B20, 0xD67B, 0x8B21, 0xD67C, 0x8B22, 0xD67D,
+	0x8B23, 0xD67E, 0x8B24, 0xD680, 0x8B25, 0xD681, 0x8B26, 0xF6A5,
+	0x8B27, 0xD682, 0x8B28, 0xD683, 0x8B29, 0xD684, 0x8B2A, 0xD685,
+	0x8B2B, 0xD686, 0x8B2C, 0xD687, 0x8B2D, 0xD688, 0x8B2E, 0xD689,
+	0x8B2F, 0xD68A, 0x8B30, 0xD68B, 0x8B31, 0xD68C, 0x8B32, 0xD68D,
+	0x8B33, 0xD68E, 0x8B34, 0xD68F, 0x8B35, 0xD690, 0x8B36, 0xD691,
+	0x8B37, 0xD692, 0x8B38, 0xD693, 0x8B39, 0xD694, 0x8B3A, 0xD695,
+	0x8B3B, 0xD696, 0x8B3C, 0xD697, 0x8B3D, 0xD698, 0x8B3E, 0xD699,
+	0x8B3F, 0xD69A, 0x8B40, 0xD69B, 0x8B41, 0xD69C, 0x8B42, 0xD69D,
+	0x8B43, 0xD69E, 0x8B44, 0xD69F, 0x8B45, 0xD6A0, 0x8B46, 0xD740,
+	0x8B47, 0xD741, 0x8B48, 0xD742, 0x8B49, 0xD743, 0x8B4A, 0xD744,
+	0x8B4B, 0xD745, 0x8B4C, 0xD746, 0x8B4D, 0xD747, 0x8B4E, 0xD748,
+	0x8B4F, 0xD749, 0x8B50, 0xD74A, 0x8B51, 0xD74B, 0x8B52, 0xD74C,
+	0x8B53, 0xD74D, 0x8B54, 0xD74E, 0x8B55, 0xD74F, 0x8B56, 0xD750,
+	0x8B57, 0xD751, 0x8B58, 0xD752, 0x8B59, 0xD753, 0x8B5A, 0xD754,
+	0x8B5B, 0xD755, 0x8B5C, 0xD756, 0x8B5D, 0xD757, 0x8B5E, 0xD758,
+	0x8B5F, 0xD759, 0x8B60, 0xD75A, 0x8B61, 0xD75B, 0x8B62, 0xD75C,
+	0x8B63, 0xD75D, 0x8B64, 0xD75E, 0x8B65, 0xD75F, 0x8B66, 0xBEAF,
+	0x8B67, 0xD760, 0x8B68, 0xD761, 0x8B69, 0xD762, 0x8B6A, 0xD763,
+	0x8B6B, 0xD764, 0x8B6C, 0xC6A9, 0x8B6D, 0xD765, 0x8B6E, 0xD766,
+	0x8B6F, 0xD767, 0x8B70, 0xD768, 0x8B71, 0xD769, 0x8B72, 0xD76A,
+	0x8B73, 0xD76B, 0x8B74, 0xD76C, 0x8B75, 0xD76D, 0x8B76, 0xD76E,
+	0x8B77, 0xD76F, 0x8B78, 0xD770, 0x8B79, 0xD771, 0x8B7A, 0xD772,
+	0x8B7B, 0xD773, 0x8B7C, 0xD774, 0x8B7D, 0xD775, 0x8B7E, 0xD776,
+	0x8B7F, 0xD777, 0x8B80, 0xD778, 0x8B81, 0xD779, 0x8B82, 0xD77A,
+	0x8B83, 0xD77B, 0x8B84, 0xD77C, 0x8B85, 0xD77D, 0x8B86, 0xD77E,
+	0x8B87, 0xD780, 0x8B88, 0xD781, 0x8B89, 0xD782, 0x8B8A, 0xD783,
+	0x8B8B, 0xD784, 0x8B8C, 0xD785, 0x8B8D, 0xD786, 0x8B8E, 0xD787,
+	0x8B8F, 0xD788, 0x8B90, 0xD789, 0x8B91, 0xD78A, 0x8B92, 0xD78B,
+	0x8B93, 0xD78C, 0x8B94, 0xD78D, 0x8B95, 0xD78E, 0x8B96, 0xD78F,
+	0x8B97, 0xD790, 0x8B98, 0xD791, 0x8B99, 0xD792, 0x8B9A, 0xD793,
+	0x8B9B, 0xD794, 0x8B9C, 0xD795, 0x8B9D, 0xD796, 0x8B9E, 0xD797,
+	0x8B9F, 0xD798, 0x8BA0, 0xDAA5, 0x8BA1, 0xBCC6, 0x8BA2, 0xB6A9,
+	0x8BA3, 0xB8BC, 0x8BA4, 0xC8CF, 0x8BA5, 0xBCA5, 0x8BA6, 0xDAA6,
+	0x8BA7, 0xDAA7, 0x8BA8, 0xCCD6, 0x8BA9, 0xC8C3, 0x8BAA, 0xDAA8,
+	0x8BAB, 0xC6FD, 0x8BAC, 0xD799, 0x8BAD, 0xD1B5, 0x8BAE, 0xD2E9,
+	0x8BAF, 0xD1B6, 0x8BB0, 0xBCC7, 0x8BB1, 0xD79A, 0x8BB2, 0xBDB2,
+	0x8BB3, 0xBBE4, 0x8BB4, 0xDAA9, 0x8BB5, 0xDAAA, 0x8BB6, 0xD1C8,
+	0x8BB7, 0xDAAB, 0x8BB8, 0xD0ED, 0x8BB9, 0xB6EF, 0x8BBA, 0xC2DB,
+	0x8BBB, 0xD79B, 0x8BBC, 0xCBCF, 0x8BBD, 0xB7ED, 0x8BBE, 0xC9E8,
+	0x8BBF, 0xB7C3, 0x8BC0, 0xBEF7, 0x8BC1, 0xD6A4, 0x8BC2, 0xDAAC,
+	0x8BC3, 0xDAAD, 0x8BC4, 0xC6C0, 0x8BC5, 0xD7E7, 0x8BC6, 0xCAB6,
+	0x8BC7, 0xD79C, 0x8BC8, 0xD5A9, 0x8BC9, 0xCBDF, 0x8BCA, 0xD5EF,
+	0x8BCB, 0xDAAE, 0x8BCC, 0xD6DF, 0x8BCD, 0xB4CA, 0x8BCE, 0xDAB0,
+	0x8BCF, 0xDAAF, 0x8BD0, 0xD79D, 0x8BD1, 0xD2EB, 0x8BD2, 0xDAB1,
+	0x8BD3, 0xDAB2, 0x8BD4, 0xDAB3, 0x8BD5, 0xCAD4, 0x8BD6, 0xDAB4,
+	0x8BD7, 0xCAAB, 0x8BD8, 0xDAB5, 0x8BD9, 0xDAB6, 0x8BDA, 0xB3CF,
+	0x8BDB, 0xD6EF, 0x8BDC, 0xDAB7, 0x8BDD, 0xBBB0, 0x8BDE, 0xB5AE,
+	0x8BDF, 0xDAB8, 0x8BE0, 0xDAB9, 0x8BE1, 0xB9EE, 0x8BE2, 0xD1AF,
+	0x8BE3, 0xD2E8, 0x8BE4, 0xDABA, 0x8BE5, 0xB8C3, 0x8BE6, 0xCFEA,
+	0x8BE7, 0xB2EF, 0x8BE8, 0xDABB, 0x8BE9, 0xDABC, 0x8BEA, 0xD79E,
+	0x8BEB, 0xBDEB, 0x8BEC, 0xCEDC, 0x8BED, 0xD3EF, 0x8BEE, 0xDABD,
+	0x8BEF, 0xCEF3, 0x8BF0, 0xDABE, 0x8BF1, 0xD3D5, 0x8BF2, 0xBBE5,
+	0x8BF3, 0xDABF, 0x8BF4, 0xCBB5, 0x8BF5, 0xCBD0, 0x8BF6, 0xDAC0,
+	0x8BF7, 0xC7EB, 0x8BF8, 0xD6EE, 0x8BF9, 0xDAC1, 0x8BFA, 0xC5B5,
+	0x8BFB, 0xB6C1, 0x8BFC, 0xDAC2, 0x8BFD, 0xB7CC, 0x8BFE, 0xBFCE,
+	0x8BFF, 0xDAC3, 0x8C00, 0xDAC4, 0x8C01, 0xCBAD, 0x8C02, 0xDAC5,
+	0x8C03, 0xB5F7, 0x8C04, 0xDAC6, 0x8C05, 0xC1C2, 0x8C06, 0xD7BB,
+	0x8C07, 0xDAC7, 0x8C08, 0xCCB8, 0x8C09, 0xD79F, 0x8C0A, 0xD2EA,
+	0x8C0B, 0xC4B1, 0x8C0C, 0xDAC8, 0x8C0D, 0xB5FD, 0x8C0E, 0xBBD1,
+	0x8C0F, 0xDAC9, 0x8C10, 0xD0B3, 0x8C11, 0xDACA, 0x8C12, 0xDACB,
+	0x8C13, 0xCEBD, 0x8C14, 0xDACC, 0x8C15, 0xDACD, 0x8C16, 0xDACE,
+	0x8C17, 0xB2F7, 0x8C18, 0xDAD1, 0x8C19, 0xDACF, 0x8C1A, 0xD1E8,
+	0x8C1B, 0xDAD0, 0x8C1C, 0xC3D5, 0x8C1D, 0xDAD2, 0x8C1E, 0xD7A0,
+	0x8C1F, 0xDAD3, 0x8C20, 0xDAD4, 0x8C21, 0xDAD5, 0x8C22, 0xD0BB,
+	0x8C23, 0xD2A5, 0x8C24, 0xB0F9, 0x8C25, 0xDAD6, 0x8C26, 0xC7AB,
+	0x8C27, 0xDAD7, 0x8C28, 0xBDF7, 0x8C29, 0xC3A1, 0x8C2A, 0xDAD8,
+	0x8C2B, 0xDAD9, 0x8C2C, 0xC3FD, 0x8C2D, 0xCCB7, 0x8C2E, 0xDADA,
+	0x8C2F, 0xDADB, 0x8C30, 0xC0BE, 0x8C31, 0xC6D7, 0x8C32, 0xDADC,
+	0x8C33, 0xDADD, 0x8C34, 0xC7B4, 0x8C35, 0xDADE, 0x8C36, 0xDADF,
+	0x8C37, 0xB9C8, 0x8C38, 0xD840, 0x8C39, 0xD841, 0x8C3A, 0xD842,
+	0x8C3B, 0xD843, 0x8C3C, 0xD844, 0x8C3D, 0xD845, 0x8C3E, 0xD846,
+	0x8C3F, 0xD847, 0x8C40, 0xD848, 0x8C41, 0xBBED, 0x8C42, 0xD849,
+	0x8C43, 0xD84A, 0x8C44, 0xD84B, 0x8C45, 0xD84C, 0x8C46, 0xB6B9,
+	0x8C47, 0xF4F8, 0x8C48, 0xD84D, 0x8C49, 0xF4F9, 0x8C4A, 0xD84E,
+	0x8C4B, 0xD84F, 0x8C4C, 0xCDE3, 0x8C4D, 0xD850, 0x8C4E, 0xD851,
+	0x8C4F, 0xD852, 0x8C50, 0xD853, 0x8C51, 0xD854, 0x8C52, 0xD855,
+	0x8C53, 0xD856, 0x8C54, 0xD857, 0x8C55, 0xF5B9, 0x8C56, 0xD858,
+	0x8C57, 0xD859, 0x8C58, 0xD85A, 0x8C59, 0xD85B, 0x8C5A, 0xEBE0,
+	0x8C5B, 0xD85C, 0x8C5C, 0xD85D, 0x8C5D, 0xD85E, 0x8C5E, 0xD85F,
+	0x8C5F, 0xD860, 0x8C60, 0xD861, 0x8C61, 0xCFF3, 0x8C62, 0xBBBF,
+	0x8C63, 0xD862, 0x8C64, 0xD863, 0x8C65, 0xD864, 0x8C66, 0xD865,
+	0x8C67, 0xD866, 0x8C68, 0xD867, 0x8C69, 0xD868, 0x8C6A, 0xBAC0,
+	0x8C6B, 0xD4A5, 0x8C6C, 0xD869, 0x8C6D, 0xD86A, 0x8C6E, 0xD86B,
+	0x8C6F, 0xD86C, 0x8C70, 0xD86D, 0x8C71, 0xD86E, 0x8C72, 0xD86F,
+	0x8C73, 0xE1D9, 0x8C74, 0xD870, 0x8C75, 0xD871, 0x8C76, 0xD872,
+	0x8C77, 0xD873, 0x8C78, 0xF5F4, 0x8C79, 0xB1AA, 0x8C7A, 0xB2F2,
+	0x8C7B, 0xD874, 0x8C7C, 0xD875, 0x8C7D, 0xD876, 0x8C7E, 0xD877,
+	0x8C7F, 0xD878, 0x8C80, 0xD879, 0x8C81, 0xD87A, 0x8C82, 0xF5F5,
+	0x8C83, 0xD87B, 0x8C84, 0xD87C, 0x8C85, 0xF5F7, 0x8C86, 0xD87D,
+	0x8C87, 0xD87E, 0x8C88, 0xD880, 0x8C89, 0xBAD1, 0x8C8A, 0xF5F6,
+	0x8C8B, 0xD881, 0x8C8C, 0xC3B2, 0x8C8D, 0xD882, 0x8C8E, 0xD883,
+	0x8C8F, 0xD884, 0x8C90, 0xD885, 0x8C91, 0xD886, 0x8C92, 0xD887,
+	0x8C93, 0xD888, 0x8C94, 0xF5F9, 0x8C95, 0xD889, 0x8C96, 0xD88A,
+	0x8C97, 0xD88B, 0x8C98, 0xF5F8, 0x8C99, 0xD88C, 0x8C9A, 0xD88D,
+	0x8C9B, 0xD88E, 0x8C9C, 0xD88F, 0x8C9D, 0xD890, 0x8C9E, 0xD891,
+	0x8C9F, 0xD892, 0x8CA0, 0xD893, 0x8CA1, 0xD894, 0x8CA2, 0xD895,
+	0x8CA3, 0xD896, 0x8CA4, 0xD897, 0x8CA5, 0xD898, 0x8CA6, 0xD899,
+	0x8CA7, 0xD89A, 0x8CA8, 0xD89B, 0x8CA9, 0xD89C, 0x8CAA, 0xD89D,
+	0x8CAB, 0xD89E, 0x8CAC, 0xD89F, 0x8CAD, 0xD8A0, 0x8CAE, 0xD940,
+	0x8CAF, 0xD941, 0x8CB0, 0xD942, 0x8CB1, 0xD943, 0x8CB2, 0xD944,
+	0x8CB3, 0xD945, 0x8CB4, 0xD946, 0x8CB5, 0xD947, 0x8CB6, 0xD948,
+	0x8CB7, 0xD949, 0x8CB8, 0xD94A, 0x8CB9, 0xD94B, 0x8CBA, 0xD94C,
+	0x8CBB, 0xD94D, 0x8CBC, 0xD94E, 0x8CBD, 0xD94F, 0x8CBE, 0xD950,
+	0x8CBF, 0xD951, 0x8CC0, 0xD952, 0x8CC1, 0xD953, 0x8CC2, 0xD954,
+	0x8CC3, 0xD955, 0x8CC4, 0xD956, 0x8CC5, 0xD957, 0x8CC6, 0xD958,
+	0x8CC7, 0xD959, 0x8CC8, 0xD95A, 0x8CC9, 0xD95B, 0x8CCA, 0xD95C,
+	0x8CCB, 0xD95D, 0x8CCC, 0xD95E, 0x8CCD, 0xD95F, 0x8CCE, 0xD960,
+	0x8CCF, 0xD961, 0x8CD0, 0xD962, 0x8CD1, 0xD963, 0x8CD2, 0xD964,
+	0x8CD3, 0xD965, 0x8CD4, 0xD966, 0x8CD5, 0xD967, 0x8CD6, 0xD968,
+	0x8CD7, 0xD969, 0x8CD8, 0xD96A, 0x8CD9, 0xD96B, 0x8CDA, 0xD96C,
+	0x8CDB, 0xD96D, 0x8CDC, 0xD96E, 0x8CDD, 0xD96F, 0x8CDE, 0xD970,
+	0x8CDF, 0xD971, 0x8CE0, 0xD972, 0x8CE1, 0xD973, 0x8CE2, 0xD974,
+	0x8CE3, 0xD975, 0x8CE4, 0xD976, 0x8CE5, 0xD977, 0x8CE6, 0xD978,
+	0x8CE7, 0xD979, 0x8CE8, 0xD97A, 0x8CE9, 0xD97B, 0x8CEA, 0xD97C,
+	0x8CEB, 0xD97D, 0x8CEC, 0xD97E, 0x8CED, 0xD980, 0x8CEE, 0xD981,
+	0x8CEF, 0xD982, 0x8CF0, 0xD983, 0x8CF1, 0xD984, 0x8CF2, 0xD985,
+	0x8CF3, 0xD986, 0x8CF4, 0xD987, 0x8CF5, 0xD988, 0x8CF6, 0xD989,
+	0x8CF7, 0xD98A, 0x8CF8, 0xD98B, 0x8CF9, 0xD98C, 0x8CFA, 0xD98D,
+	0x8CFB, 0xD98E, 0x8CFC, 0xD98F, 0x8CFD, 0xD990, 0x8CFE, 0xD991,
+	0x8CFF, 0xD992, 0x8D00, 0xD993, 0x8D01, 0xD994, 0x8D02, 0xD995,
+	0x8D03, 0xD996, 0x8D04, 0xD997, 0x8D05, 0xD998, 0x8D06, 0xD999,
+	0x8D07, 0xD99A, 0x8D08, 0xD99B, 0x8D09, 0xD99C, 0x8D0A, 0xD99D,
+	0x8D0B, 0xD99E, 0x8D0C, 0xD99F, 0x8D0D, 0xD9A0, 0x8D0E, 0xDA40,
+	0x8D0F, 0xDA41, 0x8D10, 0xDA42, 0x8D11, 0xDA43, 0x8D12, 0xDA44,
+	0x8D13, 0xDA45, 0x8D14, 0xDA46, 0x8D15, 0xDA47, 0x8D16, 0xDA48,
+	0x8D17, 0xDA49, 0x8D18, 0xDA4A, 0x8D19, 0xDA4B, 0x8D1A, 0xDA4C,
+	0x8D1B, 0xDA4D, 0x8D1C, 0xDA4E, 0x8D1D, 0xB1B4, 0x8D1E, 0xD5EA,
+	0x8D1F, 0xB8BA, 0x8D20, 0xDA4F, 0x8D21, 0xB9B1, 0x8D22, 0xB2C6,
+	0x8D23, 0xD4F0, 0x8D24, 0xCFCD, 0x8D25, 0xB0DC, 0x8D26, 0xD5CB,
+	0x8D27, 0xBBF5, 0x8D28, 0xD6CA, 0x8D29, 0xB7B7, 0x8D2A, 0xCCB0,
+	0x8D2B, 0xC6B6, 0x8D2C, 0xB1E1, 0x8D2D, 0xB9BA, 0x8D2E, 0xD6FC,
+	0x8D2F, 0xB9E1, 0x8D30, 0xB7A1, 0x8D31, 0xBCFA, 0x8D32, 0xEADA,
+	0x8D33, 0xEADB, 0x8D34, 0xCCF9, 0x8D35, 0xB9F3, 0x8D36, 0xEADC,
+	0x8D37, 0xB4FB, 0x8D38, 0xC3B3, 0x8D39, 0xB7D1, 0x8D3A, 0xBAD8,
+	0x8D3B, 0xEADD, 0x8D3C, 0xD4F4, 0x8D3D, 0xEADE, 0x8D3E, 0xBCD6,
+	0x8D3F, 0xBBDF, 0x8D40, 0xEADF, 0x8D41, 0xC1DE, 0x8D42, 0xC2B8,
+	0x8D43, 0xD4DF, 0x8D44, 0xD7CA, 0x8D45, 0xEAE0, 0x8D46, 0xEAE1,
+	0x8D47, 0xEAE4, 0x8D48, 0xEAE2, 0x8D49, 0xEAE3, 0x8D4A, 0xC9DE,
+	0x8D4B, 0xB8B3, 0x8D4C, 0xB6C4, 0x8D4D, 0xEAE5, 0x8D4E, 0xCAEA,
+	0x8D4F, 0xC9CD, 0x8D50, 0xB4CD, 0x8D51, 0xDA50, 0x8D52, 0xDA51,
+	0x8D53, 0xE2D9, 0x8D54, 0xC5E2, 0x8D55, 0xEAE6, 0x8D56, 0xC0B5,
+	0x8D57, 0xDA52, 0x8D58, 0xD7B8, 0x8D59, 0xEAE7, 0x8D5A, 0xD7AC,
+	0x8D5B, 0xC8FC, 0x8D5C, 0xD8D3, 0x8D5D, 0xD8CD, 0x8D5E, 0xD4DE,
+	0x8D5F, 0xDA53, 0x8D60, 0xD4F9, 0x8D61, 0xC9C4, 0x8D62, 0xD3AE,
+	0x8D63, 0xB8D3, 0x8D64, 0xB3E0, 0x8D65, 0xDA54, 0x8D66, 0xC9E2,
+	0x8D67, 0xF4F6, 0x8D68, 0xDA55, 0x8D69, 0xDA56, 0x8D6A, 0xDA57,
+	0x8D6B, 0xBAD5, 0x8D6C, 0xDA58, 0x8D6D, 0xF4F7, 0x8D6E, 0xDA59,
+	0x8D6F, 0xDA5A, 0x8D70, 0xD7DF, 0x8D71, 0xDA5B, 0x8D72, 0xDA5C,
+	0x8D73, 0xF4F1, 0x8D74, 0xB8B0, 0x8D75, 0xD5D4, 0x8D76, 0xB8CF,
+	0x8D77, 0xC6F0, 0x8D78, 0xDA5D, 0x8D79, 0xDA5E, 0x8D7A, 0xDA5F,
+	0x8D7B, 0xDA60, 0x8D7C, 0xDA61, 0x8D7D, 0xDA62, 0x8D7E, 0xDA63,
+	0x8D7F, 0xDA64, 0x8D80, 0xDA65, 0x8D81, 0xB3C3, 0x8D82, 0xDA66,
+	0x8D83, 0xDA67, 0x8D84, 0xF4F2, 0x8D85, 0xB3AC, 0x8D86, 0xDA68,
+	0x8D87, 0xDA69, 0x8D88, 0xDA6A, 0x8D89, 0xDA6B, 0x8D8A, 0xD4BD,
+	0x8D8B, 0xC7F7, 0x8D8C, 0xDA6C, 0x8D8D, 0xDA6D, 0x8D8E, 0xDA6E,
+	0x8D8F, 0xDA6F, 0x8D90, 0xDA70, 0x8D91, 0xF4F4, 0x8D92, 0xDA71,
+	0x8D93, 0xDA72, 0x8D94, 0xF4F3, 0x8D95, 0xDA73, 0x8D96, 0xDA74,
+	0x8D97, 0xDA75, 0x8D98, 0xDA76, 0x8D99, 0xDA77, 0x8D9A, 0xDA78,
+	0x8D9B, 0xDA79, 0x8D9C, 0xDA7A, 0x8D9D, 0xDA7B, 0x8D9E, 0xDA7C,
+	0x8D9F, 0xCCCB, 0x8DA0, 0xDA7D, 0x8DA1, 0xDA7E, 0x8DA2, 0xDA80,
+	0x8DA3, 0xC8A4, 0x8DA4, 0xDA81, 0x8DA5, 0xDA82, 0x8DA6, 0xDA83,
+	0x8DA7, 0xDA84, 0x8DA8, 0xDA85, 0x8DA9, 0xDA86, 0x8DAA, 0xDA87,
+	0x8DAB, 0xDA88, 0x8DAC, 0xDA89, 0x8DAD, 0xDA8A, 0x8DAE, 0xDA8B,
+	0x8DAF, 0xDA8C, 0x8DB0, 0xDA8D, 0x8DB1, 0xF4F5, 0x8DB2, 0xDA8E,
+	0x8DB3, 0xD7E3, 0x8DB4, 0xC5BF, 0x8DB5, 0xF5C0, 0x8DB6, 0xDA8F,
+	0x8DB7, 0xDA90, 0x8DB8, 0xF5BB, 0x8DB9, 0xDA91, 0x8DBA, 0xF5C3,
+	0x8DBB, 0xDA92, 0x8DBC, 0xF5C2, 0x8DBD, 0xDA93, 0x8DBE, 0xD6BA,
+	0x8DBF, 0xF5C1, 0x8DC0, 0xDA94, 0x8DC1, 0xDA95, 0x8DC2, 0xDA96,
+	0x8DC3, 0xD4BE, 0x8DC4, 0xF5C4, 0x8DC5, 0xDA97, 0x8DC6, 0xF5CC,
+	0x8DC7, 0xDA98, 0x8DC8, 0xDA99, 0x8DC9, 0xDA9A, 0x8DCA, 0xDA9B,
+	0x8DCB, 0xB0CF, 0x8DCC, 0xB5F8, 0x8DCD, 0xDA9C, 0x8DCE, 0xF5C9,
+	0x8DCF, 0xF5CA, 0x8DD0, 0xDA9D, 0x8DD1, 0xC5DC, 0x8DD2, 0xDA9E,
+	0x8DD3, 0xDA9F, 0x8DD4, 0xDAA0, 0x8DD5, 0xDB40, 0x8DD6, 0xF5C5,
+	0x8DD7, 0xF5C6, 0x8DD8, 0xDB41, 0x8DD9, 0xDB42, 0x8DDA, 0xF5C7,
+	0x8DDB, 0xF5CB, 0x8DDC, 0xDB43, 0x8DDD, 0xBEE0, 0x8DDE, 0xF5C8,
+	0x8DDF, 0xB8FA, 0x8DE0, 0xDB44, 0x8DE1, 0xDB45, 0x8DE2, 0xDB46,
+	0x8DE3, 0xF5D0, 0x8DE4, 0xF5D3, 0x8DE5, 0xDB47, 0x8DE6, 0xDB48,
+	0x8DE7, 0xDB49, 0x8DE8, 0xBFE7, 0x8DE9, 0xDB4A, 0x8DEA, 0xB9F2,
+	0x8DEB, 0xF5BC, 0x8DEC, 0xF5CD, 0x8DED, 0xDB4B, 0x8DEE, 0xDB4C,
+	0x8DEF, 0xC2B7, 0x8DF0, 0xDB4D, 0x8DF1, 0xDB4E, 0x8DF2, 0xDB4F,
+	0x8DF3, 0xCCF8, 0x8DF4, 0xDB50, 0x8DF5, 0xBCF9, 0x8DF6, 0xDB51,
+	0x8DF7, 0xF5CE, 0x8DF8, 0xF5CF, 0x8DF9, 0xF5D1, 0x8DFA, 0xB6E5,
+	0x8DFB, 0xF5D2, 0x8DFC, 0xDB52, 0x8DFD, 0xF5D5, 0x8DFE, 0xDB53,
+	0x8DFF, 0xDB54, 0x8E00, 0xDB55, 0x8E01, 0xDB56, 0x8E02, 0xDB57,
+	0x8E03, 0xDB58, 0x8E04, 0xDB59, 0x8E05, 0xF5BD, 0x8E06, 0xDB5A,
+	0x8E07, 0xDB5B, 0x8E08, 0xDB5C, 0x8E09, 0xF5D4, 0x8E0A, 0xD3BB,
+	0x8E0B, 0xDB5D, 0x8E0C, 0xB3EC, 0x8E0D, 0xDB5E, 0x8E0E, 0xDB5F,
+	0x8E0F, 0xCCA4, 0x8E10, 0xDB60, 0x8E11, 0xDB61, 0x8E12, 0xDB62,
+	0x8E13, 0xDB63, 0x8E14, 0xF5D6, 0x8E15, 0xDB64, 0x8E16, 0xDB65,
+	0x8E17, 0xDB66, 0x8E18, 0xDB67, 0x8E19, 0xDB68, 0x8E1A, 0xDB69,
+	0x8E1B, 0xDB6A, 0x8E1C, 0xDB6B, 0x8E1D, 0xF5D7, 0x8E1E, 0xBEE1,
+	0x8E1F, 0xF5D8, 0x8E20, 0xDB6C, 0x8E21, 0xDB6D, 0x8E22, 0xCCDF,
+	0x8E23, 0xF5DB, 0x8E24, 0xDB6E, 0x8E25, 0xDB6F, 0x8E26, 0xDB70,
+	0x8E27, 0xDB71, 0x8E28, 0xDB72, 0x8E29, 0xB2C8, 0x8E2A, 0xD7D9,
+	0x8E2B, 0xDB73, 0x8E2C, 0xF5D9, 0x8E2D, 0xDB74, 0x8E2E, 0xF5DA,
+	0x8E2F, 0xF5DC, 0x8E30, 0xDB75, 0x8E31, 0xF5E2, 0x8E32, 0xDB76,
+	0x8E33, 0xDB77, 0x8E34, 0xDB78, 0x8E35, 0xF5E0, 0x8E36, 0xDB79,
+	0x8E37, 0xDB7A, 0x8E38, 0xDB7B, 0x8E39, 0xF5DF, 0x8E3A, 0xF5DD,
+	0x8E3B, 0xDB7C, 0x8E3C, 0xDB7D, 0x8E3D, 0xF5E1, 0x8E3E, 0xDB7E,
+	0x8E3F, 0xDB80, 0x8E40, 0xF5DE, 0x8E41, 0xF5E4, 0x8E42, 0xF5E5,
+	0x8E43, 0xDB81, 0x8E44, 0xCCE3, 0x8E45, 0xDB82, 0x8E46, 0xDB83,
+	0x8E47, 0xE5BF, 0x8E48, 0xB5B8, 0x8E49, 0xF5E3, 0x8E4A, 0xF5E8,
+	0x8E4B, 0xCCA3, 0x8E4C, 0xDB84, 0x8E4D, 0xDB85, 0x8E4E, 0xDB86,
+	0x8E4F, 0xDB87, 0x8E50, 0xDB88, 0x8E51, 0xF5E6, 0x8E52, 0xF5E7,
+	0x8E53, 0xDB89, 0x8E54, 0xDB8A, 0x8E55, 0xDB8B, 0x8E56, 0xDB8C,
+	0x8E57, 0xDB8D, 0x8E58, 0xDB8E, 0x8E59, 0xF5BE, 0x8E5A, 0xDB8F,
+	0x8E5B, 0xDB90, 0x8E5C, 0xDB91, 0x8E5D, 0xDB92, 0x8E5E, 0xDB93,
+	0x8E5F, 0xDB94, 0x8E60, 0xDB95, 0x8E61, 0xDB96, 0x8E62, 0xDB97,
+	0x8E63, 0xDB98, 0x8E64, 0xDB99, 0x8E65, 0xDB9A, 0x8E66, 0xB1C4,
+	0x8E67, 0xDB9B, 0x8E68, 0xDB9C, 0x8E69, 0xF5BF, 0x8E6A, 0xDB9D,
+	0x8E6B, 0xDB9E, 0x8E6C, 0xB5C5, 0x8E6D, 0xB2E4, 0x8E6E, 0xDB9F,
+	0x8E6F, 0xF5EC, 0x8E70, 0xF5E9, 0x8E71, 0xDBA0, 0x8E72, 0xB6D7,
+	0x8E73, 0xDC40, 0x8E74, 0xF5ED, 0x8E75, 0xDC41, 0x8E76, 0xF5EA,
+	0x8E77, 0xDC42, 0x8E78, 0xDC43, 0x8E79, 0xDC44, 0x8E7A, 0xDC45,
+	0x8E7B, 0xDC46, 0x8E7C, 0xF5EB, 0x8E7D, 0xDC47, 0x8E7E, 0xDC48,
+	0x8E7F, 0xB4DA, 0x8E80, 0xDC49, 0x8E81, 0xD4EA, 0x8E82, 0xDC4A,
+	0x8E83, 0xDC4B, 0x8E84, 0xDC4C, 0x8E85, 0xF5EE, 0x8E86, 0xDC4D,
+	0x8E87, 0xB3F9, 0x8E88, 0xDC4E, 0x8E89, 0xDC4F, 0x8E8A, 0xDC50,
+	0x8E8B, 0xDC51, 0x8E8C, 0xDC52, 0x8E8D, 0xDC53, 0x8E8E, 0xDC54,
+	0x8E8F, 0xF5EF, 0x8E90, 0xF5F1, 0x8E91, 0xDC55, 0x8E92, 0xDC56,
+	0x8E93, 0xDC57, 0x8E94, 0xF5F0, 0x8E95, 0xDC58, 0x8E96, 0xDC59,
+	0x8E97, 0xDC5A, 0x8E98, 0xDC5B, 0x8E99, 0xDC5C, 0x8E9A, 0xDC5D,
+	0x8E9B, 0xDC5E, 0x8E9C, 0xF5F2, 0x8E9D, 0xDC5F, 0x8E9E, 0xF5F3,
+	0x8E9F, 0xDC60, 0x8EA0, 0xDC61, 0x8EA1, 0xDC62, 0x8EA2, 0xDC63,
+	0x8EA3, 0xDC64, 0x8EA4, 0xDC65, 0x8EA5, 0xDC66, 0x8EA6, 0xDC67,
+	0x8EA7, 0xDC68, 0x8EA8, 0xDC69, 0x8EA9, 0xDC6A, 0x8EAA, 0xDC6B,
+	0x8EAB, 0xC9ED, 0x8EAC, 0xB9AA, 0x8EAD, 0xDC6C, 0x8EAE, 0xDC6D,
+	0x8EAF, 0xC7FB, 0x8EB0, 0xDC6E, 0x8EB1, 0xDC6F, 0x8EB2, 0xB6E3,
+	0x8EB3, 0xDC70, 0x8EB4, 0xDC71, 0x8EB5, 0xDC72, 0x8EB6, 0xDC73,
+	0x8EB7, 0xDC74, 0x8EB8, 0xDC75, 0x8EB9, 0xDC76, 0x8EBA, 0xCCC9,
+	0x8EBB, 0xDC77, 0x8EBC, 0xDC78, 0x8EBD, 0xDC79, 0x8EBE, 0xDC7A,
+	0x8EBF, 0xDC7B, 0x8EC0, 0xDC7C, 0x8EC1, 0xDC7D, 0x8EC2, 0xDC7E,
+	0x8EC3, 0xDC80, 0x8EC4, 0xDC81, 0x8EC5, 0xDC82, 0x8EC6, 0xDC83,
+	0x8EC7, 0xDC84, 0x8EC8, 0xDC85, 0x8EC9, 0xDC86, 0x8ECA, 0xDC87,
+	0x8ECB, 0xDC88, 0x8ECC, 0xDC89, 0x8ECD, 0xDC8A, 0x8ECE, 0xEAA6,
+	0x8ECF, 0xDC8B, 0x8ED0, 0xDC8C, 0x8ED1, 0xDC8D, 0x8ED2, 0xDC8E,
+	0x8ED3, 0xDC8F, 0x8ED4, 0xDC90, 0x8ED5, 0xDC91, 0x8ED6, 0xDC92,
+	0x8ED7, 0xDC93, 0x8ED8, 0xDC94, 0x8ED9, 0xDC95, 0x8EDA, 0xDC96,
+	0x8EDB, 0xDC97, 0x8EDC, 0xDC98, 0x8EDD, 0xDC99, 0x8EDE, 0xDC9A,
+	0x8EDF, 0xDC9B, 0x8EE0, 0xDC9C, 0x8EE1, 0xDC9D, 0x8EE2, 0xDC9E,
+	0x8EE3, 0xDC9F, 0x8EE4, 0xDCA0, 0x8EE5, 0xDD40, 0x8EE6, 0xDD41,
+	0x8EE7, 0xDD42, 0x8EE8, 0xDD43, 0x8EE9, 0xDD44, 0x8EEA, 0xDD45,
+	0x8EEB, 0xDD46, 0x8EEC, 0xDD47, 0x8EED, 0xDD48, 0x8EEE, 0xDD49,
+	0x8EEF, 0xDD4A, 0x8EF0, 0xDD4B, 0x8EF1, 0xDD4C, 0x8EF2, 0xDD4D,
+	0x8EF3, 0xDD4E, 0x8EF4, 0xDD4F, 0x8EF5, 0xDD50, 0x8EF6, 0xDD51,
+	0x8EF7, 0xDD52, 0x8EF8, 0xDD53, 0x8EF9, 0xDD54, 0x8EFA, 0xDD55,
+	0x8EFB, 0xDD56, 0x8EFC, 0xDD57, 0x8EFD, 0xDD58, 0x8EFE, 0xDD59,
+	0x8EFF, 0xDD5A, 0x8F00, 0xDD5B, 0x8F01, 0xDD5C, 0x8F02, 0xDD5D,
+	0x8F03, 0xDD5E, 0x8F04, 0xDD5F, 0x8F05, 0xDD60, 0x8F06, 0xDD61,
+	0x8F07, 0xDD62, 0x8F08, 0xDD63, 0x8F09, 0xDD64, 0x8F0A, 0xDD65,
+	0x8F0B, 0xDD66, 0x8F0C, 0xDD67, 0x8F0D, 0xDD68, 0x8F0E, 0xDD69,
+	0x8F0F, 0xDD6A, 0x8F10, 0xDD6B, 0x8F11, 0xDD6C, 0x8F12, 0xDD6D,
+	0x8F13, 0xDD6E, 0x8F14, 0xDD6F, 0x8F15, 0xDD70, 0x8F16, 0xDD71,
+	0x8F17, 0xDD72, 0x8F18, 0xDD73, 0x8F19, 0xDD74, 0x8F1A, 0xDD75,
+	0x8F1B, 0xDD76, 0x8F1C, 0xDD77, 0x8F1D, 0xDD78, 0x8F1E, 0xDD79,
+	0x8F1F, 0xDD7A, 0x8F20, 0xDD7B, 0x8F21, 0xDD7C, 0x8F22, 0xDD7D,
+	0x8F23, 0xDD7E, 0x8F24, 0xDD80, 0x8F25, 0xDD81, 0x8F26, 0xDD82,
+	0x8F27, 0xDD83, 0x8F28, 0xDD84, 0x8F29, 0xDD85, 0x8F2A, 0xDD86,
+	0x8F2B, 0xDD87, 0x8F2C, 0xDD88, 0x8F2D, 0xDD89, 0x8F2E, 0xDD8A,
+	0x8F2F, 0xDD8B, 0x8F30, 0xDD8C, 0x8F31, 0xDD8D, 0x8F32, 0xDD8E,
+	0x8F33, 0xDD8F, 0x8F34, 0xDD90, 0x8F35, 0xDD91, 0x8F36, 0xDD92,
+	0x8F37, 0xDD93, 0x8F38, 0xDD94, 0x8F39, 0xDD95, 0x8F3A, 0xDD96,
+	0x8F3B, 0xDD97, 0x8F3C, 0xDD98, 0x8F3D, 0xDD99, 0x8F3E, 0xDD9A,
+	0x8F3F, 0xDD9B, 0x8F40, 0xDD9C, 0x8F41, 0xDD9D, 0x8F42, 0xDD9E,
+	0x8F43, 0xDD9F, 0x8F44, 0xDDA0, 0x8F45, 0xDE40, 0x8F46, 0xDE41,
+	0x8F47, 0xDE42, 0x8F48, 0xDE43, 0x8F49, 0xDE44, 0x8F4A, 0xDE45,
+	0x8F4B, 0xDE46, 0x8F4C, 0xDE47, 0x8F4D, 0xDE48, 0x8F4E, 0xDE49,
+	0x8F4F, 0xDE4A, 0x8F50, 0xDE4B, 0x8F51, 0xDE4C, 0x8F52, 0xDE4D,
+	0x8F53, 0xDE4E, 0x8F54, 0xDE4F, 0x8F55, 0xDE50, 0x8F56, 0xDE51,
+	0x8F57, 0xDE52, 0x8F58, 0xDE53, 0x8F59, 0xDE54, 0x8F5A, 0xDE55,
+	0x8F5B, 0xDE56, 0x8F5C, 0xDE57, 0x8F5D, 0xDE58, 0x8F5E, 0xDE59,
+	0x8F5F, 0xDE5A, 0x8F60, 0xDE5B, 0x8F61, 0xDE5C, 0x8F62, 0xDE5D,
+	0x8F63, 0xDE5E, 0x8F64, 0xDE5F, 0x8F65, 0xDE60, 0x8F66, 0xB3B5,
+	0x8F67, 0xD4FE, 0x8F68, 0xB9EC, 0x8F69, 0xD0F9, 0x8F6A, 0xDE61,
+	0x8F6B, 0xE9ED, 0x8F6C, 0xD7AA, 0x8F6D, 0xE9EE, 0x8F6E, 0xC2D6,
+	0x8F6F, 0xC8ED, 0x8F70, 0xBAE4, 0x8F71, 0xE9EF, 0x8F72, 0xE9F0,
+	0x8F73, 0xE9F1, 0x8F74, 0xD6E1, 0x8F75, 0xE9F2, 0x8F76, 0xE9F3,
+	0x8F77, 0xE9F5, 0x8F78, 0xE9F4, 0x8F79, 0xE9F6, 0x8F7A, 0xE9F7,
+	0x8F7B, 0xC7E1, 0x8F7C, 0xE9F8, 0x8F7D, 0xD4D8, 0x8F7E, 0xE9F9,
+	0x8F7F, 0xBDCE, 0x8F80, 0xDE62, 0x8F81, 0xE9FA, 0x8F82, 0xE9FB,
+	0x8F83, 0xBDCF, 0x8F84, 0xE9FC, 0x8F85, 0xB8A8, 0x8F86, 0xC1BE,
+	0x8F87, 0xE9FD, 0x8F88, 0xB1B2, 0x8F89, 0xBBD4, 0x8F8A, 0xB9F5,
+	0x8F8B, 0xE9FE, 0x8F8C, 0xDE63, 0x8F8D, 0xEAA1, 0x8F8E, 0xEAA2,
+	0x8F8F, 0xEAA3, 0x8F90, 0xB7F8, 0x8F91, 0xBCAD, 0x8F92, 0xDE64,
+	0x8F93, 0xCAE4, 0x8F94, 0xE0CE, 0x8F95, 0xD4AF, 0x8F96, 0xCFBD,
+	0x8F97, 0xD5B7, 0x8F98, 0xEAA4, 0x8F99, 0xD5DE, 0x8F9A, 0xEAA5,
+	0x8F9B, 0xD0C1, 0x8F9C, 0xB9BC, 0x8F9D, 0xDE65, 0x8F9E, 0xB4C7,
+	0x8F9F, 0xB1D9, 0x8FA0, 0xDE66, 0x8FA1, 0xDE67, 0x8FA2, 0xDE68,
+	0x8FA3, 0xC0B1, 0x8FA4, 0xDE69, 0x8FA5, 0xDE6A, 0x8FA6, 0xDE6B,
+	0x8FA7, 0xDE6C, 0x8FA8, 0xB1E6, 0x8FA9, 0xB1E7, 0x8FAA, 0xDE6D,
+	0x8FAB, 0xB1E8, 0x8FAC, 0xDE6E, 0x8FAD, 0xDE6F, 0x8FAE, 0xDE70,
+	0x8FAF, 0xDE71, 0x8FB0, 0xB3BD, 0x8FB1, 0xC8E8, 0x8FB2, 0xDE72,
+	0x8FB3, 0xDE73, 0x8FB4, 0xDE74, 0x8FB5, 0xDE75, 0x8FB6, 0xE5C1,
+	0x8FB7, 0xDE76, 0x8FB8, 0xDE77, 0x8FB9, 0xB1DF, 0x8FBA, 0xDE78,
+	0x8FBB, 0xDE79, 0x8FBC, 0xDE7A, 0x8FBD, 0xC1C9, 0x8FBE, 0xB4EF,
+	0x8FBF, 0xDE7B, 0x8FC0, 0xDE7C, 0x8FC1, 0xC7A8, 0x8FC2, 0xD3D8,
+	0x8FC3, 0xDE7D, 0x8FC4, 0xC6F9, 0x8FC5, 0xD1B8, 0x8FC6, 0xDE7E,
+	0x8FC7, 0xB9FD, 0x8FC8, 0xC2F5, 0x8FC9, 0xDE80, 0x8FCA, 0xDE81,
+	0x8FCB, 0xDE82, 0x8FCC, 0xDE83, 0x8FCD, 0xDE84, 0x8FCE, 0xD3AD,
+	0x8FCF, 0xDE85, 0x8FD0, 0xD4CB, 0x8FD1, 0xBDFC, 0x8FD2, 0xDE86,
+	0x8FD3, 0xE5C2, 0x8FD4, 0xB7B5, 0x8FD5, 0xE5C3, 0x8FD6, 0xDE87,
+	0x8FD7, 0xDE88, 0x8FD8, 0xBBB9, 0x8FD9, 0xD5E2, 0x8FDA, 0xDE89,
+	0x8FDB, 0xBDF8, 0x8FDC, 0xD4B6, 0x8FDD, 0xCEA5, 0x8FDE, 0xC1AC,
+	0x8FDF, 0xB3D9, 0x8FE0, 0xDE8A, 0x8FE1, 0xDE8B, 0x8FE2, 0xCCF6,
+	0x8FE3, 0xDE8C, 0x8FE4, 0xE5C6, 0x8FE5, 0xE5C4, 0x8FE6, 0xE5C8,
+	0x8FE7, 0xDE8D, 0x8FE8, 0xE5CA, 0x8FE9, 0xE5C7, 0x8FEA, 0xB5CF,
+	0x8FEB, 0xC6C8, 0x8FEC, 0xDE8E, 0x8FED, 0xB5FC, 0x8FEE, 0xE5C5,
+	0x8FEF, 0xDE8F, 0x8FF0, 0xCAF6, 0x8FF1, 0xDE90, 0x8FF2, 0xDE91,
+	0x8FF3, 0xE5C9, 0x8FF4, 0xDE92, 0x8FF5, 0xDE93, 0x8FF6, 0xDE94,
+	0x8FF7, 0xC3D4, 0x8FF8, 0xB1C5, 0x8FF9, 0xBCA3, 0x8FFA, 0xDE95,
+	0x8FFB, 0xDE96, 0x8FFC, 0xDE97, 0x8FFD, 0xD7B7, 0x8FFE, 0xDE98,
+	0x8FFF, 0xDE99, 0x9000, 0xCDCB, 0x9001, 0xCBCD, 0x9002, 0xCACA,
+	0x9003, 0xCCD3, 0x9004, 0xE5CC, 0x9005, 0xE5CB, 0x9006, 0xC4E6,
+	0x9007, 0xDE9A, 0x9008, 0xDE9B, 0x9009, 0xD1A1, 0x900A, 0xD1B7,
+	0x900B, 0xE5CD, 0x900C, 0xDE9C, 0x900D, 0xE5D0, 0x900E, 0xDE9D,
+	0x900F, 0xCDB8, 0x9010, 0xD6F0, 0x9011, 0xE5CF, 0x9012, 0xB5DD,
+	0x9013, 0xDE9E, 0x9014, 0xCDBE, 0x9015, 0xDE9F, 0x9016, 0xE5D1,
+	0x9017, 0xB6BA, 0x9018, 0xDEA0, 0x9019, 0xDF40, 0x901A, 0xCDA8,
+	0x901B, 0xB9E4, 0x901C, 0xDF41, 0x901D, 0xCAC5, 0x901E, 0xB3D1,
+	0x901F, 0xCBD9, 0x9020, 0xD4EC, 0x9021, 0xE5D2, 0x9022, 0xB7EA,
+	0x9023, 0xDF42, 0x9024, 0xDF43, 0x9025, 0xDF44, 0x9026, 0xE5CE,
+	0x9027, 0xDF45, 0x9028, 0xDF46, 0x9029, 0xDF47, 0x902A, 0xDF48,
+	0x902B, 0xDF49, 0x902C, 0xDF4A, 0x902D, 0xE5D5, 0x902E, 0xB4FE,
+	0x902F, 0xE5D6, 0x9030, 0xDF4B, 0x9031, 0xDF4C, 0x9032, 0xDF4D,
+	0x9033, 0xDF4E, 0x9034, 0xDF4F, 0x9035, 0xE5D3, 0x9036, 0xE5D4,
+	0x9037, 0xDF50, 0x9038, 0xD2DD, 0x9039, 0xDF51, 0x903A, 0xDF52,
+	0x903B, 0xC2DF, 0x903C, 0xB1C6, 0x903D, 0xDF53, 0x903E, 0xD3E2,
+	0x903F, 0xDF54, 0x9040, 0xDF55, 0x9041, 0xB6DD, 0x9042, 0xCBEC,
+	0x9043, 0xDF56, 0x9044, 0xE5D7, 0x9045, 0xDF57, 0x9046, 0xDF58,
+	0x9047, 0xD3F6, 0x9048, 0xDF59, 0x9049, 0xDF5A, 0x904A, 0xDF5B,
+	0x904B, 0xDF5C, 0x904C, 0xDF5D, 0x904D, 0xB1E9, 0x904E, 0xDF5E,
+	0x904F, 0xB6F4, 0x9050, 0xE5DA, 0x9051, 0xE5D8, 0x9052, 0xE5D9,
+	0x9053, 0xB5C0, 0x9054, 0xDF5F, 0x9055, 0xDF60, 0x9056, 0xDF61,
+	0x9057, 0xD2C5, 0x9058, 0xE5DC, 0x9059, 0xDF62, 0x905A, 0xDF63,
+	0x905B, 0xE5DE, 0x905C, 0xDF64, 0x905D, 0xDF65, 0x905E, 0xDF66,
+	0x905F, 0xDF67, 0x9060, 0xDF68, 0x9061, 0xDF69, 0x9062, 0xE5DD,
+	0x9063, 0xC7B2, 0x9064, 0xDF6A, 0x9065, 0xD2A3, 0x9066, 0xDF6B,
+	0x9067, 0xDF6C, 0x9068, 0xE5DB, 0x9069, 0xDF6D, 0x906A, 0xDF6E,
+	0x906B, 0xDF6F, 0x906C, 0xDF70, 0x906D, 0xD4E2, 0x906E, 0xD5DA,
+	0x906F, 0xDF71, 0x9070, 0xDF72, 0x9071, 0xDF73, 0x9072, 0xDF74,
+	0x9073, 0xDF75, 0x9074, 0xE5E0, 0x9075, 0xD7F1, 0x9076, 0xDF76,
+	0x9077, 0xDF77, 0x9078, 0xDF78, 0x9079, 0xDF79, 0x907A, 0xDF7A,
+	0x907B, 0xDF7B, 0x907C, 0xDF7C, 0x907D, 0xE5E1, 0x907E, 0xDF7D,
+	0x907F, 0xB1DC, 0x9080, 0xD1FB, 0x9081, 0xDF7E, 0x9082, 0xE5E2,
+	0x9083, 0xE5E4, 0x9084, 0xDF80, 0x9085, 0xDF81, 0x9086, 0xDF82,
+	0x9087, 0xDF83, 0x9088, 0xE5E3, 0x9089, 0xDF84, 0x908A, 0xDF85,
+	0x908B, 0xE5E5, 0x908C, 0xDF86, 0x908D, 0xDF87, 0x908E, 0xDF88,
+	0x908F, 0xDF89, 0x9090, 0xDF8A, 0x9091, 0xD2D8, 0x9092, 0xDF8B,
+	0x9093, 0xB5CB, 0x9094, 0xDF8C, 0x9095, 0xE7DF, 0x9096, 0xDF8D,
+	0x9097, 0xDAF5, 0x9098, 0xDF8E, 0x9099, 0xDAF8, 0x909A, 0xDF8F,
+	0x909B, 0xDAF6, 0x909C, 0xDF90, 0x909D, 0xDAF7, 0x909E, 0xDF91,
+	0x909F, 0xDF92, 0x90A0, 0xDF93, 0x90A1, 0xDAFA, 0x90A2, 0xD0CF,
+	0x90A3, 0xC4C7, 0x90A4, 0xDF94, 0x90A5, 0xDF95, 0x90A6, 0xB0EE,
+	0x90A7, 0xDF96, 0x90A8, 0xDF97, 0x90A9, 0xDF98, 0x90AA, 0xD0B0,
+	0x90AB, 0xDF99, 0x90AC, 0xDAF9, 0x90AD, 0xDF9A, 0x90AE, 0xD3CA,
+	0x90AF, 0xBAAA, 0x90B0, 0xDBA2, 0x90B1, 0xC7F1, 0x90B2, 0xDF9B,
+	0x90B3, 0xDAFC, 0x90B4, 0xDAFB, 0x90B5, 0xC9DB, 0x90B6, 0xDAFD,
+	0x90B7, 0xDF9C, 0x90B8, 0xDBA1, 0x90B9, 0xD7DE, 0x90BA, 0xDAFE,
+	0x90BB, 0xC1DA, 0x90BC, 0xDF9D, 0x90BD, 0xDF9E, 0x90BE, 0xDBA5,
+	0x90BF, 0xDF9F, 0x90C0, 0xDFA0, 0x90C1, 0xD3F4, 0x90C2, 0xE040,
+	0x90C3, 0xE041, 0x90C4, 0xDBA7, 0x90C5, 0xDBA4, 0x90C6, 0xE042,
+	0x90C7, 0xDBA8, 0x90C8, 0xE043, 0x90C9, 0xE044, 0x90CA, 0xBDBC,
+	0x90CB, 0xE045, 0x90CC, 0xE046, 0x90CD, 0xE047, 0x90CE, 0xC0C9,
+	0x90CF, 0xDBA3, 0x90D0, 0xDBA6, 0x90D1, 0xD6A3, 0x90D2, 0xE048,
+	0x90D3, 0xDBA9, 0x90D4, 0xE049, 0x90D5, 0xE04A, 0x90D6, 0xE04B,
+	0x90D7, 0xDBAD, 0x90D8, 0xE04C, 0x90D9, 0xE04D, 0x90DA, 0xE04E,
+	0x90DB, 0xDBAE, 0x90DC, 0xDBAC, 0x90DD, 0xBAC2, 0x90DE, 0xE04F,
+	0x90DF, 0xE050, 0x90E0, 0xE051, 0x90E1, 0xBFA4, 0x90E2, 0xDBAB,
+	0x90E3, 0xE052, 0x90E4, 0xE053, 0x90E5, 0xE054, 0x90E6, 0xDBAA,
+	0x90E7, 0xD4C7, 0x90E8, 0xB2BF, 0x90E9, 0xE055, 0x90EA, 0xE056,
+	0x90EB, 0xDBAF, 0x90EC, 0xE057, 0x90ED, 0xB9F9, 0x90EE, 0xE058,
+	0x90EF, 0xDBB0, 0x90F0, 0xE059, 0x90F1, 0xE05A, 0x90F2, 0xE05B,
+	0x90F3, 0xE05C, 0x90F4, 0xB3BB, 0x90F5, 0xE05D, 0x90F6, 0xE05E,
+	0x90F7, 0xE05F, 0x90F8, 0xB5A6, 0x90F9, 0xE060, 0x90FA, 0xE061,
+	0x90FB, 0xE062, 0x90FC, 0xE063, 0x90FD, 0xB6BC, 0x90FE, 0xDBB1,
+	0x90FF, 0xE064, 0x9100, 0xE065, 0x9101, 0xE066, 0x9102, 0xB6F5,
+	0x9103, 0xE067, 0x9104, 0xDBB2, 0x9105, 0xE068, 0x9106, 0xE069,
+	0x9107, 0xE06A, 0x9108, 0xE06B, 0x9109, 0xE06C, 0x910A, 0xE06D,
+	0x910B, 0xE06E, 0x910C, 0xE06F, 0x910D, 0xE070, 0x910E, 0xE071,
+	0x910F, 0xE072, 0x9110, 0xE073, 0x9111, 0xE074, 0x9112, 0xE075,
+	0x9113, 0xE076, 0x9114, 0xE077, 0x9115, 0xE078, 0x9116, 0xE079,
+	0x9117, 0xE07A, 0x9118, 0xE07B, 0x9119, 0xB1C9, 0x911A, 0xE07C,
+	0x911B, 0xE07D, 0x911C, 0xE07E, 0x911D, 0xE080, 0x911E, 0xDBB4,
+	0x911F, 0xE081, 0x9120, 0xE082, 0x9121, 0xE083, 0x9122, 0xDBB3,
+	0x9123, 0xDBB5, 0x9124, 0xE084, 0x9125, 0xE085, 0x9126, 0xE086,
+	0x9127, 0xE087, 0x9128, 0xE088, 0x9129, 0xE089, 0x912A, 0xE08A,
+	0x912B, 0xE08B, 0x912C, 0xE08C, 0x912D, 0xE08D, 0x912E, 0xE08E,
+	0x912F, 0xDBB7, 0x9130, 0xE08F, 0x9131, 0xDBB6, 0x9132, 0xE090,
+	0x9133, 0xE091, 0x9134, 0xE092, 0x9135, 0xE093, 0x9136, 0xE094,
+	0x9137, 0xE095, 0x9138, 0xE096, 0x9139, 0xDBB8, 0x913A, 0xE097,
+	0x913B, 0xE098, 0x913C, 0xE099, 0x913D, 0xE09A, 0x913E, 0xE09B,
+	0x913F, 0xE09C, 0x9140, 0xE09D, 0x9141, 0xE09E, 0x9142, 0xE09F,
+	0x9143, 0xDBB9, 0x9144, 0xE0A0, 0x9145, 0xE140, 0x9146, 0xDBBA,
+	0x9147, 0xE141, 0x9148, 0xE142, 0x9149, 0xD3CF, 0x914A, 0xF4FA,
+	0x914B, 0xC7F5, 0x914C, 0xD7C3, 0x914D, 0xC5E4, 0x914E, 0xF4FC,
+	0x914F, 0xF4FD, 0x9150, 0xF4FB, 0x9151, 0xE143, 0x9152, 0xBEC6,
+	0x9153, 0xE144, 0x9154, 0xE145, 0x9155, 0xE146, 0x9156, 0xE147,
+	0x9157, 0xD0EF, 0x9158, 0xE148, 0x9159, 0xE149, 0x915A, 0xB7D3,
+	0x915B, 0xE14A, 0x915C, 0xE14B, 0x915D, 0xD4CD, 0x915E, 0xCCAA,
+	0x915F, 0xE14C, 0x9160, 0xE14D, 0x9161, 0xF5A2, 0x9162, 0xF5A1,
+	0x9163, 0xBAA8, 0x9164, 0xF4FE, 0x9165, 0xCBD6, 0x9166, 0xE14E,
+	0x9167, 0xE14F, 0x9168, 0xE150, 0x9169, 0xF5A4, 0x916A, 0xC0D2,
+	0x916B, 0xE151, 0x916C, 0xB3EA, 0x916D, 0xE152, 0x916E, 0xCDAA,
+	0x916F, 0xF5A5, 0x9170, 0xF5A3, 0x9171, 0xBDB4, 0x9172, 0xF5A8,
+	0x9173, 0xE153, 0x9174, 0xF5A9, 0x9175, 0xBDCD, 0x9176, 0xC3B8,
+	0x9177, 0xBFE1, 0x9178, 0xCBE1, 0x9179, 0xF5AA, 0x917A, 0xE154,
+	0x917B, 0xE155, 0x917C, 0xE156, 0x917D, 0xF5A6, 0x917E, 0xF5A7,
+	0x917F, 0xC4F0, 0x9180, 0xE157, 0x9181, 0xE158, 0x9182, 0xE159,
+	0x9183, 0xE15A, 0x9184, 0xE15B, 0x9185, 0xF5AC, 0x9186, 0xE15C,
+	0x9187, 0xB4BC, 0x9188, 0xE15D, 0x9189, 0xD7ED, 0x918A, 0xE15E,
+	0x918B, 0xB4D7, 0x918C, 0xF5AB, 0x918D, 0xF5AE, 0x918E, 0xE15F,
+	0x918F, 0xE160, 0x9190, 0xF5AD, 0x9191, 0xF5AF, 0x9192, 0xD0D1,
+	0x9193, 0xE161, 0x9194, 0xE162, 0x9195, 0xE163, 0x9196, 0xE164,
+	0x9197, 0xE165, 0x9198, 0xE166, 0x9199, 0xE167, 0x919A, 0xC3D1,
+	0x919B, 0xC8A9, 0x919C, 0xE168, 0x919D, 0xE169, 0x919E, 0xE16A,
+	0x919F, 0xE16B, 0x91A0, 0xE16C, 0x91A1, 0xE16D, 0x91A2, 0xF5B0,
+	0x91A3, 0xF5B1, 0x91A4, 0xE16E, 0x91A5, 0xE16F, 0x91A6, 0xE170,
+	0x91A7, 0xE171, 0x91A8, 0xE172, 0x91A9, 0xE173, 0x91AA, 0xF5B2,
+	0x91AB, 0xE174, 0x91AC, 0xE175, 0x91AD, 0xF5B3, 0x91AE, 0xF5B4,
+	0x91AF, 0xF5B5, 0x91B0, 0xE176, 0x91B1, 0xE177, 0x91B2, 0xE178,
+	0x91B3, 0xE179, 0x91B4, 0xF5B7, 0x91B5, 0xF5B6, 0x91B6, 0xE17A,
+	0x91B7, 0xE17B, 0x91B8, 0xE17C, 0x91B9, 0xE17D, 0x91BA, 0xF5B8,
+	0x91BB, 0xE17E, 0x91BC, 0xE180, 0x91BD, 0xE181, 0x91BE, 0xE182,
+	0x91BF, 0xE183, 0x91C0, 0xE184, 0x91C1, 0xE185, 0x91C2, 0xE186,
+	0x91C3, 0xE187, 0x91C4, 0xE188, 0x91C5, 0xE189, 0x91C6, 0xE18A,
+	0x91C7, 0xB2C9, 0x91C8, 0xE18B, 0x91C9, 0xD3D4, 0x91CA, 0xCACD,
+	0x91CB, 0xE18C, 0x91CC, 0xC0EF, 0x91CD, 0xD6D8, 0x91CE, 0xD2B0,
+	0x91CF, 0xC1BF, 0x91D0, 0xE18D, 0x91D1, 0xBDF0, 0x91D2, 0xE18E,
+	0x91D3, 0xE18F, 0x91D4, 0xE190, 0x91D5, 0xE191, 0x91D6, 0xE192,
+	0x91D7, 0xE193, 0x91D8, 0xE194, 0x91D9, 0xE195, 0x91DA, 0xE196,
+	0x91DB, 0xE197, 0x91DC, 0xB8AA, 0x91DD, 0xE198, 0x91DE, 0xE199,
+	0x91DF, 0xE19A, 0x91E0, 0xE19B, 0x91E1, 0xE19C, 0x91E2, 0xE19D,
+	0x91E3, 0xE19E, 0x91E4, 0xE19F, 0x91E5, 0xE1A0, 0x91E6, 0xE240,
+	0x91E7, 0xE241, 0x91E8, 0xE242, 0x91E9, 0xE243, 0x91EA, 0xE244,
+	0x91EB, 0xE245, 0x91EC, 0xE246, 0x91ED, 0xE247, 0x91EE, 0xE248,
+	0x91EF, 0xE249, 0x91F0, 0xE24A, 0x91F1, 0xE24B, 0x91F2, 0xE24C,
+	0x91F3, 0xE24D, 0x91F4, 0xE24E, 0x91F5, 0xE24F, 0x91F6, 0xE250,
+	0x91F7, 0xE251, 0x91F8, 0xE252, 0x91F9, 0xE253, 0x91FA, 0xE254,
+	0x91FB, 0xE255, 0x91FC, 0xE256, 0x91FD, 0xE257, 0x91FE, 0xE258,
+	0x91FF, 0xE259, 0x9200, 0xE25A, 0x9201, 0xE25B, 0x9202, 0xE25C,
+	0x9203, 0xE25D, 0x9204, 0xE25E, 0x9205, 0xE25F, 0x9206, 0xE260,
+	0x9207, 0xE261, 0x9208, 0xE262, 0x9209, 0xE263, 0x920A, 0xE264,
+	0x920B, 0xE265, 0x920C, 0xE266, 0x920D, 0xE267, 0x920E, 0xE268,
+	0x920F, 0xE269, 0x9210, 0xE26A, 0x9211, 0xE26B, 0x9212, 0xE26C,
+	0x9213, 0xE26D, 0x9214, 0xE26E, 0x9215, 0xE26F, 0x9216, 0xE270,
+	0x9217, 0xE271, 0x9218, 0xE272, 0x9219, 0xE273, 0x921A, 0xE274,
+	0x921B, 0xE275, 0x921C, 0xE276, 0x921D, 0xE277, 0x921E, 0xE278,
+	0x921F, 0xE279, 0x9220, 0xE27A, 0x9221, 0xE27B, 0x9222, 0xE27C,
+	0x9223, 0xE27D, 0x9224, 0xE27E, 0x9225, 0xE280, 0x9226, 0xE281,
+	0x9227, 0xE282, 0x9228, 0xE283, 0x9229, 0xE284, 0x922A, 0xE285,
+	0x922B, 0xE286, 0x922C, 0xE287, 0x922D, 0xE288, 0x922E, 0xE289,
+	0x922F, 0xE28A, 0x9230, 0xE28B, 0x9231, 0xE28C, 0x9232, 0xE28D,
+	0x9233, 0xE28E, 0x9234, 0xE28F, 0x9235, 0xE290, 0x9236, 0xE291,
+	0x9237, 0xE292, 0x9238, 0xE293, 0x9239, 0xE294, 0x923A, 0xE295,
+	0x923B, 0xE296, 0x923C, 0xE297, 0x923D, 0xE298, 0x923E, 0xE299,
+	0x923F, 0xE29A, 0x9240, 0xE29B, 0x9241, 0xE29C, 0x9242, 0xE29D,
+	0x9243, 0xE29E, 0x9244, 0xE29F, 0x9245, 0xE2A0, 0x9246, 0xE340,
+	0x9247, 0xE341, 0x9248, 0xE342, 0x9249, 0xE343, 0x924A, 0xE344,
+	0x924B, 0xE345, 0x924C, 0xE346, 0x924D, 0xE347, 0x924E, 0xE348,
+	0x924F, 0xE349, 0x9250, 0xE34A, 0x9251, 0xE34B, 0x9252, 0xE34C,
+	0x9253, 0xE34D, 0x9254, 0xE34E, 0x9255, 0xE34F, 0x9256, 0xE350,
+	0x9257, 0xE351, 0x9258, 0xE352, 0x9259, 0xE353, 0x925A, 0xE354,
+	0x925B, 0xE355, 0x925C, 0xE356, 0x925D, 0xE357, 0x925E, 0xE358,
+	0x925F, 0xE359, 0x9260, 0xE35A, 0x9261, 0xE35B, 0x9262, 0xE35C,
+	0x9263, 0xE35D, 0x9264, 0xE35E, 0x9265, 0xE35F, 0x9266, 0xE360,
+	0x9267, 0xE361, 0x9268, 0xE362, 0x9269, 0xE363, 0x926A, 0xE364,
+	0x926B, 0xE365, 0x926C, 0xE366, 0x926D, 0xE367, 0x926E, 0xE368,
+	0x926F, 0xE369, 0x9270, 0xE36A, 0x9271, 0xE36B, 0x9272, 0xE36C,
+	0x9273, 0xE36D, 0x9274, 0xBCF8, 0x9275, 0xE36E, 0x9276, 0xE36F,
+	0x9277, 0xE370, 0x9278, 0xE371, 0x9279, 0xE372, 0x927A, 0xE373,
+	0x927B, 0xE374, 0x927C, 0xE375, 0x927D, 0xE376, 0x927E, 0xE377,
+	0x927F, 0xE378, 0x9280, 0xE379, 0x9281, 0xE37A, 0x9282, 0xE37B,
+	0x9283, 0xE37C, 0x9284, 0xE37D, 0x9285, 0xE37E, 0x9286, 0xE380,
+	0x9287, 0xE381, 0x9288, 0xE382, 0x9289, 0xE383, 0x928A, 0xE384,
+	0x928B, 0xE385, 0x928C, 0xE386, 0x928D, 0xE387, 0x928E, 0xF6C6,
+	0x928F, 0xE388, 0x9290, 0xE389, 0x9291, 0xE38A, 0x9292, 0xE38B,
+	0x9293, 0xE38C, 0x9294, 0xE38D, 0x9295, 0xE38E, 0x9296, 0xE38F,
+	0x9297, 0xE390, 0x9298, 0xE391, 0x9299, 0xE392, 0x929A, 0xE393,
+	0x929B, 0xE394, 0x929C, 0xE395, 0x929D, 0xE396, 0x929E, 0xE397,
+	0x929F, 0xE398, 0x92A0, 0xE399, 0x92A1, 0xE39A, 0x92A2, 0xE39B,
+	0x92A3, 0xE39C, 0x92A4, 0xE39D, 0x92A5, 0xE39E, 0x92A6, 0xE39F,
+	0x92A7, 0xE3A0, 0x92A8, 0xE440, 0x92A9, 0xE441, 0x92AA, 0xE442,
+	0x92AB, 0xE443, 0x92AC, 0xE444, 0x92AD, 0xE445, 0x92AE, 0xF6C7,
+	0x92AF, 0xE446, 0x92B0, 0xE447, 0x92B1, 0xE448, 0x92B2, 0xE449,
+	0x92B3, 0xE44A, 0x92B4, 0xE44B, 0x92B5, 0xE44C, 0x92B6, 0xE44D,
+	0x92B7, 0xE44E, 0x92B8, 0xE44F, 0x92B9, 0xE450, 0x92BA, 0xE451,
+	0x92BB, 0xE452, 0x92BC, 0xE453, 0x92BD, 0xE454, 0x92BE, 0xE455,
+	0x92BF, 0xE456, 0x92C0, 0xE457, 0x92C1, 0xE458, 0x92C2, 0xE459,
+	0x92C3, 0xE45A, 0x92C4, 0xE45B, 0x92C5, 0xE45C, 0x92C6, 0xE45D,
+	0x92C7, 0xE45E, 0x92C8, 0xF6C8, 0x92C9, 0xE45F, 0x92CA, 0xE460,
+	0x92CB, 0xE461, 0x92CC, 0xE462, 0x92CD, 0xE463, 0x92CE, 0xE464,
+	0x92CF, 0xE465, 0x92D0, 0xE466, 0x92D1, 0xE467, 0x92D2, 0xE468,
+	0x92D3, 0xE469, 0x92D4, 0xE46A, 0x92D5, 0xE46B, 0x92D6, 0xE46C,
+	0x92D7, 0xE46D, 0x92D8, 0xE46E, 0x92D9, 0xE46F, 0x92DA, 0xE470,
+	0x92DB, 0xE471, 0x92DC, 0xE472, 0x92DD, 0xE473, 0x92DE, 0xE474,
+	0x92DF, 0xE475, 0x92E0, 0xE476, 0x92E1, 0xE477, 0x92E2, 0xE478,
+	0x92E3, 0xE479, 0x92E4, 0xE47A, 0x92E5, 0xE47B, 0x92E6, 0xE47C,
+	0x92E7, 0xE47D, 0x92E8, 0xE47E, 0x92E9, 0xE480, 0x92EA, 0xE481,
+	0x92EB, 0xE482, 0x92EC, 0xE483, 0x92ED, 0xE484, 0x92EE, 0xE485,
+	0x92EF, 0xE486, 0x92F0, 0xE487, 0x92F1, 0xE488, 0x92F2, 0xE489,
+	0x92F3, 0xE48A, 0x92F4, 0xE48B, 0x92F5, 0xE48C, 0x92F6, 0xE48D,
+	0x92F7, 0xE48E, 0x92F8, 0xE48F, 0x92F9, 0xE490, 0x92FA, 0xE491,
+	0x92FB, 0xE492, 0x92FC, 0xE493, 0x92FD, 0xE494, 0x92FE, 0xE495,
+	0x92FF, 0xE496, 0x9300, 0xE497, 0x9301, 0xE498, 0x9302, 0xE499,
+	0x9303, 0xE49A, 0x9304, 0xE49B, 0x9305, 0xE49C, 0x9306, 0xE49D,
+	0x9307, 0xE49E, 0x9308, 0xE49F, 0x9309, 0xE4A0, 0x930A, 0xE540,
+	0x930B, 0xE541, 0x930C, 0xE542, 0x930D, 0xE543, 0x930E, 0xE544,
+	0x930F, 0xE545, 0x9310, 0xE546, 0x9311, 0xE547, 0x9312, 0xE548,
+	0x9313, 0xE549, 0x9314, 0xE54A, 0x9315, 0xE54B, 0x9316, 0xE54C,
+	0x9317, 0xE54D, 0x9318, 0xE54E, 0x9319, 0xE54F, 0x931A, 0xE550,
+	0x931B, 0xE551, 0x931C, 0xE552, 0x931D, 0xE553, 0x931E, 0xE554,
+	0x931F, 0xE555, 0x9320, 0xE556, 0x9321, 0xE557, 0x9322, 0xE558,
+	0x9323, 0xE559, 0x9324, 0xE55A, 0x9325, 0xE55B, 0x9326, 0xE55C,
+	0x9327, 0xE55D, 0x9328, 0xE55E, 0x9329, 0xE55F, 0x932A, 0xE560,
+	0x932B, 0xE561, 0x932C, 0xE562, 0x932D, 0xE563, 0x932E, 0xE564,
+	0x932F, 0xE565, 0x9330, 0xE566, 0x9331, 0xE567, 0x9332, 0xE568,
+	0x9333, 0xE569, 0x9334, 0xE56A, 0x9335, 0xE56B, 0x9336, 0xE56C,
+	0x9337, 0xE56D, 0x9338, 0xE56E, 0x9339, 0xE56F, 0x933A, 0xE570,
+	0x933B, 0xE571, 0x933C, 0xE572, 0x933D, 0xE573, 0x933E, 0xF6C9,
+	0x933F, 0xE574, 0x9340, 0xE575, 0x9341, 0xE576, 0x9342, 0xE577,
+	0x9343, 0xE578, 0x9344, 0xE579, 0x9345, 0xE57A, 0x9346, 0xE57B,
+	0x9347, 0xE57C, 0x9348, 0xE57D, 0x9349, 0xE57E, 0x934A, 0xE580,
+	0x934B, 0xE581, 0x934C, 0xE582, 0x934D, 0xE583, 0x934E, 0xE584,
+	0x934F, 0xE585, 0x9350, 0xE586, 0x9351, 0xE587, 0x9352, 0xE588,
+	0x9353, 0xE589, 0x9354, 0xE58A, 0x9355, 0xE58B, 0x9356, 0xE58C,
+	0x9357, 0xE58D, 0x9358, 0xE58E, 0x9359, 0xE58F, 0x935A, 0xE590,
+	0x935B, 0xE591, 0x935C, 0xE592, 0x935D, 0xE593, 0x935E, 0xE594,
+	0x935F, 0xE595, 0x9360, 0xE596, 0x9361, 0xE597, 0x9362, 0xE598,
+	0x9363, 0xE599, 0x9364, 0xE59A, 0x9365, 0xE59B, 0x9366, 0xE59C,
+	0x9367, 0xE59D, 0x9368, 0xE59E, 0x9369, 0xE59F, 0x936A, 0xF6CA,
+	0x936B, 0xE5A0, 0x936C, 0xE640, 0x936D, 0xE641, 0x936E, 0xE642,
+	0x936F, 0xE643, 0x9370, 0xE644, 0x9371, 0xE645, 0x9372, 0xE646,
+	0x9373, 0xE647, 0x9374, 0xE648, 0x9375, 0xE649, 0x9376, 0xE64A,
+	0x9377, 0xE64B, 0x9378, 0xE64C, 0x9379, 0xE64D, 0x937A, 0xE64E,
+	0x937B, 0xE64F, 0x937C, 0xE650, 0x937D, 0xE651, 0x937E, 0xE652,
+	0x937F, 0xE653, 0x9380, 0xE654, 0x9381, 0xE655, 0x9382, 0xE656,
+	0x9383, 0xE657, 0x9384, 0xE658, 0x9385, 0xE659, 0x9386, 0xE65A,
+	0x9387, 0xE65B, 0x9388, 0xE65C, 0x9389, 0xE65D, 0x938A, 0xE65E,
+	0x938B, 0xE65F, 0x938C, 0xE660, 0x938D, 0xE661, 0x938E, 0xE662,
+	0x938F, 0xF6CC, 0x9390, 0xE663, 0x9391, 0xE664, 0x9392, 0xE665,
+	0x9393, 0xE666, 0x9394, 0xE667, 0x9395, 0xE668, 0x9396, 0xE669,
+	0x9397, 0xE66A, 0x9398, 0xE66B, 0x9399, 0xE66C, 0x939A, 0xE66D,
+	0x939B, 0xE66E, 0x939C, 0xE66F, 0x939D, 0xE670, 0x939E, 0xE671,
+	0x939F, 0xE672, 0x93A0, 0xE673, 0x93A1, 0xE674, 0x93A2, 0xE675,
+	0x93A3, 0xE676, 0x93A4, 0xE677, 0x93A5, 0xE678, 0x93A6, 0xE679,
+	0x93A7, 0xE67A, 0x93A8, 0xE67B, 0x93A9, 0xE67C, 0x93AA, 0xE67D,
+	0x93AB, 0xE67E, 0x93AC, 0xE680, 0x93AD, 0xE681, 0x93AE, 0xE682,
+	0x93AF, 0xE683, 0x93B0, 0xE684, 0x93B1, 0xE685, 0x93B2, 0xE686,
+	0x93B3, 0xE687, 0x93B4, 0xE688, 0x93B5, 0xE689, 0x93B6, 0xE68A,
+	0x93B7, 0xE68B, 0x93B8, 0xE68C, 0x93B9, 0xE68D, 0x93BA, 0xE68E,
+	0x93BB, 0xE68F, 0x93BC, 0xE690, 0x93BD, 0xE691, 0x93BE, 0xE692,
+	0x93BF, 0xE693, 0x93C0, 0xE694, 0x93C1, 0xE695, 0x93C2, 0xE696,
+	0x93C3, 0xE697, 0x93C4, 0xE698, 0x93C5, 0xE699, 0x93C6, 0xE69A,
+	0x93C7, 0xE69B, 0x93C8, 0xE69C, 0x93C9, 0xE69D, 0x93CA, 0xF6CB,
+	0x93CB, 0xE69E, 0x93CC, 0xE69F, 0x93CD, 0xE6A0, 0x93CE, 0xE740,
+	0x93CF, 0xE741, 0x93D0, 0xE742, 0x93D1, 0xE743, 0x93D2, 0xE744,
+	0x93D3, 0xE745, 0x93D4, 0xE746, 0x93D5, 0xE747, 0x93D6, 0xF7E9,
+	0x93D7, 0xE748, 0x93D8, 0xE749, 0x93D9, 0xE74A, 0x93DA, 0xE74B,
+	0x93DB, 0xE74C, 0x93DC, 0xE74D, 0x93DD, 0xE74E, 0x93DE, 0xE74F,
+	0x93DF, 0xE750, 0x93E0, 0xE751, 0x93E1, 0xE752, 0x93E2, 0xE753,
+	0x93E3, 0xE754, 0x93E4, 0xE755, 0x93E5, 0xE756, 0x93E6, 0xE757,
+	0x93E7, 0xE758, 0x93E8, 0xE759, 0x93E9, 0xE75A, 0x93EA, 0xE75B,
+	0x93EB, 0xE75C, 0x93EC, 0xE75D, 0x93ED, 0xE75E, 0x93EE, 0xE75F,
+	0x93EF, 0xE760, 0x93F0, 0xE761, 0x93F1, 0xE762, 0x93F2, 0xE763,
+	0x93F3, 0xE764, 0x93F4, 0xE765, 0x93F5, 0xE766, 0x93F6, 0xE767,
+	0x93F7, 0xE768, 0x93F8, 0xE769, 0x93F9, 0xE76A, 0x93FA, 0xE76B,
+	0x93FB, 0xE76C, 0x93FC, 0xE76D, 0x93FD, 0xE76E, 0x93FE, 0xE76F,
+	0x93FF, 0xE770, 0x9400, 0xE771, 0x9401, 0xE772, 0x9402, 0xE773,
+	0x9403, 0xE774, 0x9404, 0xE775, 0x9405, 0xE776, 0x9406, 0xE777,
+	0x9407, 0xE778, 0x9408, 0xE779, 0x9409, 0xE77A, 0x940A, 0xE77B,
+	0x940B, 0xE77C, 0x940C, 0xE77D, 0x940D, 0xE77E, 0x940E, 0xE780,
+	0x940F, 0xE781, 0x9410, 0xE782, 0x9411, 0xE783, 0x9412, 0xE784,
+	0x9413, 0xE785, 0x9414, 0xE786, 0x9415, 0xE787, 0x9416, 0xE788,
+	0x9417, 0xE789, 0x9418, 0xE78A, 0x9419, 0xE78B, 0x941A, 0xE78C,
+	0x941B, 0xE78D, 0x941C, 0xE78E, 0x941D, 0xE78F, 0x941E, 0xE790,
+	0x941F, 0xE791, 0x9420, 0xE792, 0x9421, 0xE793, 0x9422, 0xE794,
+	0x9423, 0xE795, 0x9424, 0xE796, 0x9425, 0xE797, 0x9426, 0xE798,
+	0x9427, 0xE799, 0x9428, 0xE79A, 0x9429, 0xE79B, 0x942A, 0xE79C,
+	0x942B, 0xE79D, 0x942C, 0xE79E, 0x942D, 0xE79F, 0x942E, 0xE7A0,
+	0x942F, 0xE840, 0x9430, 0xE841, 0x9431, 0xE842, 0x9432, 0xE843,
+	0x9433, 0xE844, 0x9434, 0xE845, 0x9435, 0xE846, 0x9436, 0xE847,
+	0x9437, 0xE848, 0x9438, 0xE849, 0x9439, 0xE84A, 0x943A, 0xE84B,
+	0x943B, 0xE84C, 0x943C, 0xE84D, 0x943D, 0xE84E, 0x943E, 0xF6CD,
+	0x943F, 0xE84F, 0x9440, 0xE850, 0x9441, 0xE851, 0x9442, 0xE852,
+	0x9443, 0xE853, 0x9444, 0xE854, 0x9445, 0xE855, 0x9446, 0xE856,
+	0x9447, 0xE857, 0x9448, 0xE858, 0x9449, 0xE859, 0x944A, 0xE85A,
+	0x944B, 0xE85B, 0x944C, 0xE85C, 0x944D, 0xE85D, 0x944E, 0xE85E,
+	0x944F, 0xE85F, 0x9450, 0xE860, 0x9451, 0xE861, 0x9452, 0xE862,
+	0x9453, 0xE863, 0x9454, 0xE864, 0x9455, 0xE865, 0x9456, 0xE866,
+	0x9457, 0xE867, 0x9458, 0xE868, 0x9459, 0xE869, 0x945A, 0xE86A,
+	0x945B, 0xE86B, 0x945C, 0xE86C, 0x945D, 0xE86D, 0x945E, 0xE86E,
+	0x945F, 0xE86F, 0x9460, 0xE870, 0x9461, 0xE871, 0x9462, 0xE872,
+	0x9463, 0xE873, 0x9464, 0xE874, 0x9465, 0xE875, 0x9466, 0xE876,
+	0x9467, 0xE877, 0x9468, 0xE878, 0x9469, 0xE879, 0x946A, 0xE87A,
+	0x946B, 0xF6CE, 0x946C, 0xE87B, 0x946D, 0xE87C, 0x946E, 0xE87D,
+	0x946F, 0xE87E, 0x9470, 0xE880, 0x9471, 0xE881, 0x9472, 0xE882,
+	0x9473, 0xE883, 0x9474, 0xE884, 0x9475, 0xE885, 0x9476, 0xE886,
+	0x9477, 0xE887, 0x9478, 0xE888, 0x9479, 0xE889, 0x947A, 0xE88A,
+	0x947B, 0xE88B, 0x947C, 0xE88C, 0x947D, 0xE88D, 0x947E, 0xE88E,
+	0x947F, 0xE88F, 0x9480, 0xE890, 0x9481, 0xE891, 0x9482, 0xE892,
+	0x9483, 0xE893, 0x9484, 0xE894, 0x9485, 0xEEC4, 0x9486, 0xEEC5,
+	0x9487, 0xEEC6, 0x9488, 0xD5EB, 0x9489, 0xB6A4, 0x948A, 0xEEC8,
+	0x948B, 0xEEC7, 0x948C, 0xEEC9, 0x948D, 0xEECA, 0x948E, 0xC7A5,
+	0x948F, 0xEECB, 0x9490, 0xEECC, 0x9491, 0xE895, 0x9492, 0xB7B0,
+	0x9493, 0xB5F6, 0x9494, 0xEECD, 0x9495, 0xEECF, 0x9496, 0xE896,
+	0x9497, 0xEECE, 0x9498, 0xE897, 0x9499, 0xB8C6, 0x949A, 0xEED0,
+	0x949B, 0xEED1, 0x949C, 0xEED2, 0x949D, 0xB6DB, 0x949E, 0xB3AE,
+	0x949F, 0xD6D3, 0x94A0, 0xC4C6, 0x94A1, 0xB1B5, 0x94A2, 0xB8D6,
+	0x94A3, 0xEED3, 0x94A4, 0xEED4, 0x94A5, 0xD4BF, 0x94A6, 0xC7D5,
+	0x94A7, 0xBEFB, 0x94A8, 0xCED9, 0x94A9, 0xB9B3, 0x94AA, 0xEED6,
+	0x94AB, 0xEED5, 0x94AC, 0xEED8, 0x94AD, 0xEED7, 0x94AE, 0xC5A5,
+	0x94AF, 0xEED9, 0x94B0, 0xEEDA, 0x94B1, 0xC7AE, 0x94B2, 0xEEDB,
+	0x94B3, 0xC7AF, 0x94B4, 0xEEDC, 0x94B5, 0xB2A7, 0x94B6, 0xEEDD,
+	0x94B7, 0xEEDE, 0x94B8, 0xEEDF, 0x94B9, 0xEEE0, 0x94BA, 0xEEE1,
+	0x94BB, 0xD7EA, 0x94BC, 0xEEE2, 0x94BD, 0xEEE3, 0x94BE, 0xBCD8,
+	0x94BF, 0xEEE4, 0x94C0, 0xD3CB, 0x94C1, 0xCCFA, 0x94C2, 0xB2AC,
+	0x94C3, 0xC1E5, 0x94C4, 0xEEE5, 0x94C5, 0xC7A6, 0x94C6, 0xC3AD,
+	0x94C7, 0xE898, 0x94C8, 0xEEE6, 0x94C9, 0xEEE7, 0x94CA, 0xEEE8,
+	0x94CB, 0xEEE9, 0x94CC, 0xEEEA, 0x94CD, 0xEEEB, 0x94CE, 0xEEEC,
+	0x94CF, 0xE899, 0x94D0, 0xEEED, 0x94D1, 0xEEEE, 0x94D2, 0xEEEF,
+	0x94D3, 0xE89A, 0x94D4, 0xE89B, 0x94D5, 0xEEF0, 0x94D6, 0xEEF1,
+	0x94D7, 0xEEF2, 0x94D8, 0xEEF4, 0x94D9, 0xEEF3, 0x94DA, 0xE89C,
+	0x94DB, 0xEEF5, 0x94DC, 0xCDAD, 0x94DD, 0xC2C1, 0x94DE, 0xEEF6,
+	0x94DF, 0xEEF7, 0x94E0, 0xEEF8, 0x94E1, 0xD5A1, 0x94E2, 0xEEF9,
+	0x94E3, 0xCFB3, 0x94E4, 0xEEFA, 0x94E5, 0xEEFB, 0x94E6, 0xE89D,
+	0x94E7, 0xEEFC, 0x94E8, 0xEEFD, 0x94E9, 0xEFA1, 0x94EA, 0xEEFE,
+	0x94EB, 0xEFA2, 0x94EC, 0xB8F5, 0x94ED, 0xC3FA, 0x94EE, 0xEFA3,
+	0x94EF, 0xEFA4, 0x94F0, 0xBDC2, 0x94F1, 0xD2BF, 0x94F2, 0xB2F9,
+	0x94F3, 0xEFA5, 0x94F4, 0xEFA6, 0x94F5, 0xEFA7, 0x94F6, 0xD2F8,
+	0x94F7, 0xEFA8, 0x94F8, 0xD6FD, 0x94F9, 0xEFA9, 0x94FA, 0xC6CC,
+	0x94FB, 0xE89E, 0x94FC, 0xEFAA, 0x94FD, 0xEFAB, 0x94FE, 0xC1B4,
+	0x94FF, 0xEFAC, 0x9500, 0xCFFA, 0x9501, 0xCBF8, 0x9502, 0xEFAE,
+	0x9503, 0xEFAD, 0x9504, 0xB3FA, 0x9505, 0xB9F8, 0x9506, 0xEFAF,
+	0x9507, 0xEFB0, 0x9508, 0xD0E2, 0x9509, 0xEFB1, 0x950A, 0xEFB2,
+	0x950B, 0xB7E6, 0x950C, 0xD0BF, 0x950D, 0xEFB3, 0x950E, 0xEFB4,
+	0x950F, 0xEFB5, 0x9510, 0xC8F1, 0x9511, 0xCCE0, 0x9512, 0xEFB6,
+	0x9513, 0xEFB7, 0x9514, 0xEFB8, 0x9515, 0xEFB9, 0x9516, 0xEFBA,
+	0x9517, 0xD5E0, 0x9518, 0xEFBB, 0x9519, 0xB4ED, 0x951A, 0xC3AA,
+	0x951B, 0xEFBC, 0x951C, 0xE89F, 0x951D, 0xEFBD, 0x951E, 0xEFBE,
+	0x951F, 0xEFBF, 0x9520, 0xE8A0, 0x9521, 0xCEFD, 0x9522, 0xEFC0,
+	0x9523, 0xC2E0, 0x9524, 0xB4B8, 0x9525, 0xD7B6, 0x9526, 0xBDF5,
+	0x9527, 0xE940, 0x9528, 0xCFC7, 0x9529, 0xEFC3, 0x952A, 0xEFC1,
+	0x952B, 0xEFC2, 0x952C, 0xEFC4, 0x952D, 0xB6A7, 0x952E, 0xBCFC,
+	0x952F, 0xBEE2, 0x9530, 0xC3CC, 0x9531, 0xEFC5, 0x9532, 0xEFC6,
+	0x9533, 0xE941, 0x9534, 0xEFC7, 0x9535, 0xEFCF, 0x9536, 0xEFC8,
+	0x9537, 0xEFC9, 0x9538, 0xEFCA, 0x9539, 0xC7C2, 0x953A, 0xEFF1,
+	0x953B, 0xB6CD, 0x953C, 0xEFCB, 0x953D, 0xE942, 0x953E, 0xEFCC,
+	0x953F, 0xEFCD, 0x9540, 0xB6C6, 0x9541, 0xC3BE, 0x9542, 0xEFCE,
+	0x9543, 0xE943, 0x9544, 0xEFD0, 0x9545, 0xEFD1, 0x9546, 0xEFD2,
+	0x9547, 0xD5F2, 0x9548, 0xE944, 0x9549, 0xEFD3, 0x954A, 0xC4F7,
+	0x954B, 0xE945, 0x954C, 0xEFD4, 0x954D, 0xC4F8, 0x954E, 0xEFD5,
+	0x954F, 0xEFD6, 0x9550, 0xB8E4, 0x9551, 0xB0F7, 0x9552, 0xEFD7,
+	0x9553, 0xEFD8, 0x9554, 0xEFD9, 0x9555, 0xE946, 0x9556, 0xEFDA,
+	0x9557, 0xEFDB, 0x9558, 0xEFDC, 0x9559, 0xEFDD, 0x955A, 0xE947,
+	0x955B, 0xEFDE, 0x955C, 0xBEB5, 0x955D, 0xEFE1, 0x955E, 0xEFDF,
+	0x955F, 0xEFE0, 0x9560, 0xE948, 0x9561, 0xEFE2, 0x9562, 0xEFE3,
+	0x9563, 0xC1CD, 0x9564, 0xEFE4, 0x9565, 0xEFE5, 0x9566, 0xEFE6,
+	0x9567, 0xEFE7, 0x9568, 0xEFE8, 0x9569, 0xEFE9, 0x956A, 0xEFEA,
+	0x956B, 0xEFEB, 0x956C, 0xEFEC, 0x956D, 0xC0D8, 0x956E, 0xE949,
+	0x956F, 0xEFED, 0x9570, 0xC1AD, 0x9571, 0xEFEE, 0x9572, 0xEFEF,
+	0x9573, 0xEFF0, 0x9574, 0xE94A, 0x9575, 0xE94B, 0x9576, 0xCFE2,
+	0x9577, 0xE94C, 0x9578, 0xE94D, 0x9579, 0xE94E, 0x957A, 0xE94F,
+	0x957B, 0xE950, 0x957C, 0xE951, 0x957D, 0xE952, 0x957E, 0xE953,
+	0x957F, 0xB3A4, 0x9580, 0xE954, 0x9581, 0xE955, 0x9582, 0xE956,
+	0x9583, 0xE957, 0x9584, 0xE958, 0x9585, 0xE959, 0x9586, 0xE95A,
+	0x9587, 0xE95B, 0x9588, 0xE95C, 0x9589, 0xE95D, 0x958A, 0xE95E,
+	0x958B, 0xE95F, 0x958C, 0xE960, 0x958D, 0xE961, 0x958E, 0xE962,
+	0x958F, 0xE963, 0x9590, 0xE964, 0x9591, 0xE965, 0x9592, 0xE966,
+	0x9593, 0xE967, 0x9594, 0xE968, 0x9595, 0xE969, 0x9596, 0xE96A,
+	0x9597, 0xE96B, 0x9598, 0xE96C, 0x9599, 0xE96D, 0x959A, 0xE96E,
+	0x959B, 0xE96F, 0x959C, 0xE970, 0x959D, 0xE971, 0x959E, 0xE972,
+	0x959F, 0xE973, 0x95A0, 0xE974, 0x95A1, 0xE975, 0x95A2, 0xE976,
+	0x95A3, 0xE977, 0x95A4, 0xE978, 0x95A5, 0xE979, 0x95A6, 0xE97A,
+	0x95A7, 0xE97B, 0x95A8, 0xE97C, 0x95A9, 0xE97D, 0x95AA, 0xE97E,
+	0x95AB, 0xE980, 0x95AC, 0xE981, 0x95AD, 0xE982, 0x95AE, 0xE983,
+	0x95AF, 0xE984, 0x95B0, 0xE985, 0x95B1, 0xE986, 0x95B2, 0xE987,
+	0x95B3, 0xE988, 0x95B4, 0xE989, 0x95B5, 0xE98A, 0x95B6, 0xE98B,
+	0x95B7, 0xE98C, 0x95B8, 0xE98D, 0x95B9, 0xE98E, 0x95BA, 0xE98F,
+	0x95BB, 0xE990, 0x95BC, 0xE991, 0x95BD, 0xE992, 0x95BE, 0xE993,
+	0x95BF, 0xE994, 0x95C0, 0xE995, 0x95C1, 0xE996, 0x95C2, 0xE997,
+	0x95C3, 0xE998, 0x95C4, 0xE999, 0x95C5, 0xE99A, 0x95C6, 0xE99B,
+	0x95C7, 0xE99C, 0x95C8, 0xE99D, 0x95C9, 0xE99E, 0x95CA, 0xE99F,
+	0x95CB, 0xE9A0, 0x95CC, 0xEA40, 0x95CD, 0xEA41, 0x95CE, 0xEA42,
+	0x95CF, 0xEA43, 0x95D0, 0xEA44, 0x95D1, 0xEA45, 0x95D2, 0xEA46,
+	0x95D3, 0xEA47, 0x95D4, 0xEA48, 0x95D5, 0xEA49, 0x95D6, 0xEA4A,
+	0x95D7, 0xEA4B, 0x95D8, 0xEA4C, 0x95D9, 0xEA4D, 0x95DA, 0xEA4E,
+	0x95DB, 0xEA4F, 0x95DC, 0xEA50, 0x95DD, 0xEA51, 0x95DE, 0xEA52,
+	0x95DF, 0xEA53, 0x95E0, 0xEA54, 0x95E1, 0xEA55, 0x95E2, 0xEA56,
+	0x95E3, 0xEA57, 0x95E4, 0xEA58, 0x95E5, 0xEA59, 0x95E6, 0xEA5A,
+	0x95E7, 0xEA5B, 0x95E8, 0xC3C5, 0x95E9, 0xE3C5, 0x95EA, 0xC9C1,
+	0x95EB, 0xE3C6, 0x95EC, 0xEA5C, 0x95ED, 0xB1D5, 0x95EE, 0xCECA,
+	0x95EF, 0xB4B3, 0x95F0, 0xC8F2, 0x95F1, 0xE3C7, 0x95F2, 0xCFD0,
+	0x95F3, 0xE3C8, 0x95F4, 0xBCE4, 0x95F5, 0xE3C9, 0x95F6, 0xE3CA,
+	0x95F7, 0xC3C6, 0x95F8, 0xD5A2, 0x95F9, 0xC4D6, 0x95FA, 0xB9EB,
+	0x95FB, 0xCEC5, 0x95FC, 0xE3CB, 0x95FD, 0xC3F6, 0x95FE, 0xE3CC,
+	0x95FF, 0xEA5D, 0x9600, 0xB7A7, 0x9601, 0xB8F3, 0x9602, 0xBAD2,
+	0x9603, 0xE3CD, 0x9604, 0xE3CE, 0x9605, 0xD4C4, 0x9606, 0xE3CF,
+	0x9607, 0xEA5E, 0x9608, 0xE3D0, 0x9609, 0xD1CB, 0x960A, 0xE3D1,
+	0x960B, 0xE3D2, 0x960C, 0xE3D3, 0x960D, 0xE3D4, 0x960E, 0xD1D6,
+	0x960F, 0xE3D5, 0x9610, 0xB2FB, 0x9611, 0xC0BB, 0x9612, 0xE3D6,
+	0x9613, 0xEA5F, 0x9614, 0xC0AB, 0x9615, 0xE3D7, 0x9616, 0xE3D8,
+	0x9617, 0xE3D9, 0x9618, 0xEA60, 0x9619, 0xE3DA, 0x961A, 0xE3DB,
+	0x961B, 0xEA61, 0x961C, 0xB8B7, 0x961D, 0xDAE2, 0x961E, 0xEA62,
+	0x961F, 0xB6D3, 0x9620, 0xEA63, 0x9621, 0xDAE4, 0x9622, 0xDAE3,
+	0x9623, 0xEA64, 0x9624, 0xEA65, 0x9625, 0xEA66, 0x9626, 0xEA67,
+	0x9627, 0xEA68, 0x9628, 0xEA69, 0x9629, 0xEA6A, 0x962A, 0xDAE6,
+	0x962B, 0xEA6B, 0x962C, 0xEA6C, 0x962D, 0xEA6D, 0x962E, 0xC8EE,
+	0x962F, 0xEA6E, 0x9630, 0xEA6F, 0x9631, 0xDAE5, 0x9632, 0xB7C0,
+	0x9633, 0xD1F4, 0x9634, 0xD2F5, 0x9635, 0xD5F3, 0x9636, 0xBDD7,
+	0x9637, 0xEA70, 0x9638, 0xEA71, 0x9639, 0xEA72, 0x963A, 0xEA73,
+	0x963B, 0xD7E8, 0x963C, 0xDAE8, 0x963D, 0xDAE7, 0x963E, 0xEA74,
+	0x963F, 0xB0A2, 0x9640, 0xCDD3, 0x9641, 0xEA75, 0x9642, 0xDAE9,
+	0x9643, 0xEA76, 0x9644, 0xB8BD, 0x9645, 0xBCCA, 0x9646, 0xC2BD,
+	0x9647, 0xC2A4, 0x9648, 0xB3C2, 0x9649, 0xDAEA, 0x964A, 0xEA77,
+	0x964B, 0xC2AA, 0x964C, 0xC4B0, 0x964D, 0xBDB5, 0x964E, 0xEA78,
+	0x964F, 0xEA79, 0x9650, 0xCFDE, 0x9651, 0xEA7A, 0x9652, 0xEA7B,
+	0x9653, 0xEA7C, 0x9654, 0xDAEB, 0x9655, 0xC9C2, 0x9656, 0xEA7D,
+	0x9657, 0xEA7E, 0x9658, 0xEA80, 0x9659, 0xEA81, 0x965A, 0xEA82,
+	0x965B, 0xB1DD, 0x965C, 0xEA83, 0x965D, 0xEA84, 0x965E, 0xEA85,
+	0x965F, 0xDAEC, 0x9660, 0xEA86, 0x9661, 0xB6B8, 0x9662, 0xD4BA,
+	0x9663, 0xEA87, 0x9664, 0xB3FD, 0x9665, 0xEA88, 0x9666, 0xEA89,
+	0x9667, 0xDAED, 0x9668, 0xD4C9, 0x9669, 0xCFD5, 0x966A, 0xC5E3,
+	0x966B, 0xEA8A, 0x966C, 0xDAEE, 0x966D, 0xEA8B, 0x966E, 0xEA8C,
+	0x966F, 0xEA8D, 0x9670, 0xEA8E, 0x9671, 0xEA8F, 0x9672, 0xDAEF,
+	0x9673, 0xEA90, 0x9674, 0xDAF0, 0x9675, 0xC1EA, 0x9676, 0xCCD5,
+	0x9677, 0xCFDD, 0x9678, 0xEA91, 0x9679, 0xEA92, 0x967A, 0xEA93,
+	0x967B, 0xEA94, 0x967C, 0xEA95, 0x967D, 0xEA96, 0x967E, 0xEA97,
+	0x967F, 0xEA98, 0x9680, 0xEA99, 0x9681, 0xEA9A, 0x9682, 0xEA9B,
+	0x9683, 0xEA9C, 0x9684, 0xEA9D, 0x9685, 0xD3E7, 0x9686, 0xC2A1,
+	0x9687, 0xEA9E, 0x9688, 0xDAF1, 0x9689, 0xEA9F, 0x968A, 0xEAA0,
+	0x968B, 0xCBE5, 0x968C, 0xEB40, 0x968D, 0xDAF2, 0x968E, 0xEB41,
+	0x968F, 0xCBE6, 0x9690, 0xD2FE, 0x9691, 0xEB42, 0x9692, 0xEB43,
+	0x9693, 0xEB44, 0x9694, 0xB8F4, 0x9695, 0xEB45, 0x9696, 0xEB46,
+	0x9697, 0xDAF3, 0x9698, 0xB0AF, 0x9699, 0xCFB6, 0x969A, 0xEB47,
+	0x969B, 0xEB48, 0x969C, 0xD5CF, 0x969D, 0xEB49, 0x969E, 0xEB4A,
+	0x969F, 0xEB4B, 0x96A0, 0xEB4C, 0x96A1, 0xEB4D, 0x96A2, 0xEB4E,
+	0x96A3, 0xEB4F, 0x96A4, 0xEB50, 0x96A5, 0xEB51, 0x96A6, 0xEB52,
+	0x96A7, 0xCBED, 0x96A8, 0xEB53, 0x96A9, 0xEB54, 0x96AA, 0xEB55,
+	0x96AB, 0xEB56, 0x96AC, 0xEB57, 0x96AD, 0xEB58, 0x96AE, 0xEB59,
+	0x96AF, 0xEB5A, 0x96B0, 0xDAF4, 0x96B1, 0xEB5B, 0x96B2, 0xEB5C,
+	0x96B3, 0xE3C4, 0x96B4, 0xEB5D, 0x96B5, 0xEB5E, 0x96B6, 0xC1A5,
+	0x96B7, 0xEB5F, 0x96B8, 0xEB60, 0x96B9, 0xF6BF, 0x96BA, 0xEB61,
+	0x96BB, 0xEB62, 0x96BC, 0xF6C0, 0x96BD, 0xF6C1, 0x96BE, 0xC4D1,
+	0x96BF, 0xEB63, 0x96C0, 0xC8B8, 0x96C1, 0xD1E3, 0x96C2, 0xEB64,
+	0x96C3, 0xEB65, 0x96C4, 0xD0DB, 0x96C5, 0xD1C5, 0x96C6, 0xBCAF,
+	0x96C7, 0xB9CD, 0x96C8, 0xEB66, 0x96C9, 0xEFF4, 0x96CA, 0xEB67,
+	0x96CB, 0xEB68, 0x96CC, 0xB4C6, 0x96CD, 0xD3BA, 0x96CE, 0xF6C2,
+	0x96CF, 0xB3FB, 0x96D0, 0xEB69, 0x96D1, 0xEB6A, 0x96D2, 0xF6C3,
+	0x96D3, 0xEB6B, 0x96D4, 0xEB6C, 0x96D5, 0xB5F1, 0x96D6, 0xEB6D,
+	0x96D7, 0xEB6E, 0x96D8, 0xEB6F, 0x96D9, 0xEB70, 0x96DA, 0xEB71,
+	0x96DB, 0xEB72, 0x96DC, 0xEB73, 0x96DD, 0xEB74, 0x96DE, 0xEB75,
+	0x96DF, 0xEB76, 0x96E0, 0xF6C5, 0x96E1, 0xEB77, 0x96E2, 0xEB78,
+	0x96E3, 0xEB79, 0x96E4, 0xEB7A, 0x96E5, 0xEB7B, 0x96E6, 0xEB7C,
+	0x96E7, 0xEB7D, 0x96E8, 0xD3EA, 0x96E9, 0xF6A7, 0x96EA, 0xD1A9,
+	0x96EB, 0xEB7E, 0x96EC, 0xEB80, 0x96ED, 0xEB81, 0x96EE, 0xEB82,
+	0x96EF, 0xF6A9, 0x96F0, 0xEB83, 0x96F1, 0xEB84, 0x96F2, 0xEB85,
+	0x96F3, 0xF6A8, 0x96F4, 0xEB86, 0x96F5, 0xEB87, 0x96F6, 0xC1E3,
+	0x96F7, 0xC0D7, 0x96F8, 0xEB88, 0x96F9, 0xB1A2, 0x96FA, 0xEB89,
+	0x96FB, 0xEB8A, 0x96FC, 0xEB8B, 0x96FD, 0xEB8C, 0x96FE, 0xCEED,
+	0x96FF, 0xEB8D, 0x9700, 0xD0E8, 0x9701, 0xF6AB, 0x9702, 0xEB8E,
+	0x9703, 0xEB8F, 0x9704, 0xCFF6, 0x9705, 0xEB90, 0x9706, 0xF6AA,
+	0x9707, 0xD5F0, 0x9708, 0xF6AC, 0x9709, 0xC3B9, 0x970A, 0xEB91,
+	0x970B, 0xEB92, 0x970C, 0xEB93, 0x970D, 0xBBF4, 0x970E, 0xF6AE,
+	0x970F, 0xF6AD, 0x9710, 0xEB94, 0x9711, 0xEB95, 0x9712, 0xEB96,
+	0x9713, 0xC4DE, 0x9714, 0xEB97, 0x9715, 0xEB98, 0x9716, 0xC1D8,
+	0x9717, 0xEB99, 0x9718, 0xEB9A, 0x9719, 0xEB9B, 0x971A, 0xEB9C,
+	0x971B, 0xEB9D, 0x971C, 0xCBAA, 0x971D, 0xEB9E, 0x971E, 0xCFBC,
+	0x971F, 0xEB9F, 0x9720, 0xEBA0, 0x9721, 0xEC40, 0x9722, 0xEC41,
+	0x9723, 0xEC42, 0x9724, 0xEC43, 0x9725, 0xEC44, 0x9726, 0xEC45,
+	0x9727, 0xEC46, 0x9728, 0xEC47, 0x9729, 0xEC48, 0x972A, 0xF6AF,
+	0x972B, 0xEC49, 0x972C, 0xEC4A, 0x972D, 0xF6B0, 0x972E, 0xEC4B,
+	0x972F, 0xEC4C, 0x9730, 0xF6B1, 0x9731, 0xEC4D, 0x9732, 0xC2B6,
+	0x9733, 0xEC4E, 0x9734, 0xEC4F, 0x9735, 0xEC50, 0x9736, 0xEC51,
+	0x9737, 0xEC52, 0x9738, 0xB0D4, 0x9739, 0xC5F9, 0x973A, 0xEC53,
+	0x973B, 0xEC54, 0x973C, 0xEC55, 0x973D, 0xEC56, 0x973E, 0xF6B2,
+	0x973F, 0xEC57, 0x9740, 0xEC58, 0x9741, 0xEC59, 0x9742, 0xEC5A,
+	0x9743, 0xEC5B, 0x9744, 0xEC5C, 0x9745, 0xEC5D, 0x9746, 0xEC5E,
+	0x9747, 0xEC5F, 0x9748, 0xEC60, 0x9749, 0xEC61, 0x974A, 0xEC62,
+	0x974B, 0xEC63, 0x974C, 0xEC64, 0x974D, 0xEC65, 0x974E, 0xEC66,
+	0x974F, 0xEC67, 0x9750, 0xEC68, 0x9751, 0xEC69, 0x9752, 0xC7E0,
+	0x9753, 0xF6A6, 0x9754, 0xEC6A, 0x9755, 0xEC6B, 0x9756, 0xBEB8,
+	0x9757, 0xEC6C, 0x9758, 0xEC6D, 0x9759, 0xBEB2, 0x975A, 0xEC6E,
+	0x975B, 0xB5E5, 0x975C, 0xEC6F, 0x975D, 0xEC70, 0x975E, 0xB7C7,
+	0x975F, 0xEC71, 0x9760, 0xBFBF, 0x9761, 0xC3D2, 0x9762, 0xC3E6,
+	0x9763, 0xEC72, 0x9764, 0xEC73, 0x9765, 0xD8CC, 0x9766, 0xEC74,
+	0x9767, 0xEC75, 0x9768, 0xEC76, 0x9769, 0xB8EF, 0x976A, 0xEC77,
+	0x976B, 0xEC78, 0x976C, 0xEC79, 0x976D, 0xEC7A, 0x976E, 0xEC7B,
+	0x976F, 0xEC7C, 0x9770, 0xEC7D, 0x9771, 0xEC7E, 0x9772, 0xEC80,
+	0x9773, 0xBDF9, 0x9774, 0xD1A5, 0x9775, 0xEC81, 0x9776, 0xB0D0,
+	0x9777, 0xEC82, 0x9778, 0xEC83, 0x9779, 0xEC84, 0x977A, 0xEC85,
+	0x977B, 0xEC86, 0x977C, 0xF7B0, 0x977D, 0xEC87, 0x977E, 0xEC88,
+	0x977F, 0xEC89, 0x9780, 0xEC8A, 0x9781, 0xEC8B, 0x9782, 0xEC8C,
+	0x9783, 0xEC8D, 0x9784, 0xEC8E, 0x9785, 0xF7B1, 0x9786, 0xEC8F,
+	0x9787, 0xEC90, 0x9788, 0xEC91, 0x9789, 0xEC92, 0x978A, 0xEC93,
+	0x978B, 0xD0AC, 0x978C, 0xEC94, 0x978D, 0xB0B0, 0x978E, 0xEC95,
+	0x978F, 0xEC96, 0x9790, 0xEC97, 0x9791, 0xF7B2, 0x9792, 0xF7B3,
+	0x9793, 0xEC98, 0x9794, 0xF7B4, 0x9795, 0xEC99, 0x9796, 0xEC9A,
+	0x9797, 0xEC9B, 0x9798, 0xC7CA, 0x9799, 0xEC9C, 0x979A, 0xEC9D,
+	0x979B, 0xEC9E, 0x979C, 0xEC9F, 0x979D, 0xECA0, 0x979E, 0xED40,
+	0x979F, 0xED41, 0x97A0, 0xBECF, 0x97A1, 0xED42, 0x97A2, 0xED43,
+	0x97A3, 0xF7B7, 0x97A4, 0xED44, 0x97A5, 0xED45, 0x97A6, 0xED46,
+	0x97A7, 0xED47, 0x97A8, 0xED48, 0x97A9, 0xED49, 0x97AA, 0xED4A,
+	0x97AB, 0xF7B6, 0x97AC, 0xED4B, 0x97AD, 0xB1DE, 0x97AE, 0xED4C,
+	0x97AF, 0xF7B5, 0x97B0, 0xED4D, 0x97B1, 0xED4E, 0x97B2, 0xF7B8,
+	0x97B3, 0xED4F, 0x97B4, 0xF7B9, 0x97B5, 0xED50, 0x97B6, 0xED51,
+	0x97B7, 0xED52, 0x97B8, 0xED53, 0x97B9, 0xED54, 0x97BA, 0xED55,
+	0x97BB, 0xED56, 0x97BC, 0xED57, 0x97BD, 0xED58, 0x97BE, 0xED59,
+	0x97BF, 0xED5A, 0x97C0, 0xED5B, 0x97C1, 0xED5C, 0x97C2, 0xED5D,
+	0x97C3, 0xED5E, 0x97C4, 0xED5F, 0x97C5, 0xED60, 0x97C6, 0xED61,
+	0x97C7, 0xED62, 0x97C8, 0xED63, 0x97C9, 0xED64, 0x97CA, 0xED65,
+	0x97CB, 0xED66, 0x97CC, 0xED67, 0x97CD, 0xED68, 0x97CE, 0xED69,
+	0x97CF, 0xED6A, 0x97D0, 0xED6B, 0x97D1, 0xED6C, 0x97D2, 0xED6D,
+	0x97D3, 0xED6E, 0x97D4, 0xED6F, 0x97D5, 0xED70, 0x97D6, 0xED71,
+	0x97D7, 0xED72, 0x97D8, 0xED73, 0x97D9, 0xED74, 0x97DA, 0xED75,
+	0x97DB, 0xED76, 0x97DC, 0xED77, 0x97DD, 0xED78, 0x97DE, 0xED79,
+	0x97DF, 0xED7A, 0x97E0, 0xED7B, 0x97E1, 0xED7C, 0x97E2, 0xED7D,
+	0x97E3, 0xED7E, 0x97E4, 0xED80, 0x97E5, 0xED81, 0x97E6, 0xCEA4,
+	0x97E7, 0xC8CD, 0x97E8, 0xED82, 0x97E9, 0xBAAB, 0x97EA, 0xE8B8,
+	0x97EB, 0xE8B9, 0x97EC, 0xE8BA, 0x97ED, 0xBEC2, 0x97EE, 0xED83,
+	0x97EF, 0xED84, 0x97F0, 0xED85, 0x97F1, 0xED86, 0x97F2, 0xED87,
+	0x97F3, 0xD2F4, 0x97F4, 0xED88, 0x97F5, 0xD4CF, 0x97F6, 0xC9D8,
+	0x97F7, 0xED89, 0x97F8, 0xED8A, 0x97F9, 0xED8B, 0x97FA, 0xED8C,
+	0x97FB, 0xED8D, 0x97FC, 0xED8E, 0x97FD, 0xED8F, 0x97FE, 0xED90,
+	0x97FF, 0xED91, 0x9800, 0xED92, 0x9801, 0xED93, 0x9802, 0xED94,
+	0x9803, 0xED95, 0x9804, 0xED96, 0x9805, 0xED97, 0x9806, 0xED98,
+	0x9807, 0xED99, 0x9808, 0xED9A, 0x9809, 0xED9B, 0x980A, 0xED9C,
+	0x980B, 0xED9D, 0x980C, 0xED9E, 0x980D, 0xED9F, 0x980E, 0xEDA0,
+	0x980F, 0xEE40, 0x9810, 0xEE41, 0x9811, 0xEE42, 0x9812, 0xEE43,
+	0x9813, 0xEE44, 0x9814, 0xEE45, 0x9815, 0xEE46, 0x9816, 0xEE47,
+	0x9817, 0xEE48, 0x9818, 0xEE49, 0x9819, 0xEE4A, 0x981A, 0xEE4B,
+	0x981B, 0xEE4C, 0x981C, 0xEE4D, 0x981D, 0xEE4E, 0x981E, 0xEE4F,
+	0x981F, 0xEE50, 0x9820, 0xEE51, 0x9821, 0xEE52, 0x9822, 0xEE53,
+	0x9823, 0xEE54, 0x9824, 0xEE55, 0x9825, 0xEE56, 0x9826, 0xEE57,
+	0x9827, 0xEE58, 0x9828, 0xEE59, 0x9829, 0xEE5A, 0x982A, 0xEE5B,
+	0x982B, 0xEE5C, 0x982C, 0xEE5D, 0x982D, 0xEE5E, 0x982E, 0xEE5F,
+	0x982F, 0xEE60, 0x9830, 0xEE61, 0x9831, 0xEE62, 0x9832, 0xEE63,
+	0x9833, 0xEE64, 0x9834, 0xEE65, 0x9835, 0xEE66, 0x9836, 0xEE67,
+	0x9837, 0xEE68, 0x9838, 0xEE69, 0x9839, 0xEE6A, 0x983A, 0xEE6B,
+	0x983B, 0xEE6C, 0x983C, 0xEE6D, 0x983D, 0xEE6E, 0x983E, 0xEE6F,
+	0x983F, 0xEE70, 0x9840, 0xEE71, 0x9841, 0xEE72, 0x9842, 0xEE73,
+	0x9843, 0xEE74, 0x9844, 0xEE75, 0x9845, 0xEE76, 0x9846, 0xEE77,
+	0x9847, 0xEE78, 0x9848, 0xEE79, 0x9849, 0xEE7A, 0x984A, 0xEE7B,
+	0x984B, 0xEE7C, 0x984C, 0xEE7D, 0x984D, 0xEE7E, 0x984E, 0xEE80,
+	0x984F, 0xEE81, 0x9850, 0xEE82, 0x9851, 0xEE83, 0x9852, 0xEE84,
+	0x9853, 0xEE85, 0x9854, 0xEE86, 0x9855, 0xEE87, 0x9856, 0xEE88,
+	0x9857, 0xEE89, 0x9858, 0xEE8A, 0x9859, 0xEE8B, 0x985A, 0xEE8C,
+	0x985B, 0xEE8D, 0x985C, 0xEE8E, 0x985D, 0xEE8F, 0x985E, 0xEE90,
+	0x985F, 0xEE91, 0x9860, 0xEE92, 0x9861, 0xEE93, 0x9862, 0xEE94,
+	0x9863, 0xEE95, 0x9864, 0xEE96, 0x9865, 0xEE97, 0x9866, 0xEE98,
+	0x9867, 0xEE99, 0x9868, 0xEE9A, 0x9869, 0xEE9B, 0x986A, 0xEE9C,
+	0x986B, 0xEE9D, 0x986C, 0xEE9E, 0x986D, 0xEE9F, 0x986E, 0xEEA0,
+	0x986F, 0xEF40, 0x9870, 0xEF41, 0x9871, 0xEF42, 0x9872, 0xEF43,
+	0x9873, 0xEF44, 0x9874, 0xEF45, 0x9875, 0xD2B3, 0x9876, 0xB6A5,
+	0x9877, 0xC7EA, 0x9878, 0xF1FC, 0x9879, 0xCFEE, 0x987A, 0xCBB3,
+	0x987B, 0xD0EB, 0x987C, 0xE7EF, 0x987D, 0xCDE7, 0x987E, 0xB9CB,
+	0x987F, 0xB6D9, 0x9880, 0xF1FD, 0x9881, 0xB0E4, 0x9882, 0xCBCC,
+	0x9883, 0xF1FE, 0x9884, 0xD4A4, 0x9885, 0xC2AD, 0x9886, 0xC1EC,
+	0x9887, 0xC6C4, 0x9888, 0xBEB1, 0x9889, 0xF2A1, 0x988A, 0xBCD5,
+	0x988B, 0xEF46, 0x988C, 0xF2A2, 0x988D, 0xF2A3, 0x988E, 0xEF47,
+	0x988F, 0xF2A4, 0x9890, 0xD2C3, 0x9891, 0xC6B5, 0x9892, 0xEF48,
+	0x9893, 0xCDC7, 0x9894, 0xF2A5, 0x9895, 0xEF49, 0x9896, 0xD3B1,
+	0x9897, 0xBFC5, 0x9898, 0xCCE2, 0x9899, 0xEF4A, 0x989A, 0xF2A6,
+	0x989B, 0xF2A7, 0x989C, 0xD1D5, 0x989D, 0xB6EE, 0x989E, 0xF2A8,
+	0x989F, 0xF2A9, 0x98A0, 0xB5DF, 0x98A1, 0xF2AA, 0x98A2, 0xF2AB,
+	0x98A3, 0xEF4B, 0x98A4, 0xB2FC, 0x98A5, 0xF2AC, 0x98A6, 0xF2AD,
+	0x98A7, 0xC8A7, 0x98A8, 0xEF4C, 0x98A9, 0xEF4D, 0x98AA, 0xEF4E,
+	0x98AB, 0xEF4F, 0x98AC, 0xEF50, 0x98AD, 0xEF51, 0x98AE, 0xEF52,
+	0x98AF, 0xEF53, 0x98B0, 0xEF54, 0x98B1, 0xEF55, 0x98B2, 0xEF56,
+	0x98B3, 0xEF57, 0x98B4, 0xEF58, 0x98B5, 0xEF59, 0x98B6, 0xEF5A,
+	0x98B7, 0xEF5B, 0x98B8, 0xEF5C, 0x98B9, 0xEF5D, 0x98BA, 0xEF5E,
+	0x98BB, 0xEF5F, 0x98BC, 0xEF60, 0x98BD, 0xEF61, 0x98BE, 0xEF62,
+	0x98BF, 0xEF63, 0x98C0, 0xEF64, 0x98C1, 0xEF65, 0x98C2, 0xEF66,
+	0x98C3, 0xEF67, 0x98C4, 0xEF68, 0x98C5, 0xEF69, 0x98C6, 0xEF6A,
+	0x98C7, 0xEF6B, 0x98C8, 0xEF6C, 0x98C9, 0xEF6D, 0x98CA, 0xEF6E,
+	0x98CB, 0xEF6F, 0x98CC, 0xEF70, 0x98CD, 0xEF71, 0x98CE, 0xB7E7,
+	0x98CF, 0xEF72, 0x98D0, 0xEF73, 0x98D1, 0xECA9, 0x98D2, 0xECAA,
+	0x98D3, 0xECAB, 0x98D4, 0xEF74, 0x98D5, 0xECAC, 0x98D6, 0xEF75,
+	0x98D7, 0xEF76, 0x98D8, 0xC6AE, 0x98D9, 0xECAD, 0x98DA, 0xECAE,
+	0x98DB, 0xEF77, 0x98DC, 0xEF78, 0x98DD, 0xEF79, 0x98DE, 0xB7C9,
+	0x98DF, 0xCAB3, 0x98E0, 0xEF7A, 0x98E1, 0xEF7B, 0x98E2, 0xEF7C,
+	0x98E3, 0xEF7D, 0x98E4, 0xEF7E, 0x98E5, 0xEF80, 0x98E6, 0xEF81,
+	0x98E7, 0xE2B8, 0x98E8, 0xF7CF, 0x98E9, 0xEF82, 0x98EA, 0xEF83,
+	0x98EB, 0xEF84, 0x98EC, 0xEF85, 0x98ED, 0xEF86, 0x98EE, 0xEF87,
+	0x98EF, 0xEF88, 0x98F0, 0xEF89, 0x98F1, 0xEF8A, 0x98F2, 0xEF8B,
+	0x98F3, 0xEF8C, 0x98F4, 0xEF8D, 0x98F5, 0xEF8E, 0x98F6, 0xEF8F,
+	0x98F7, 0xEF90, 0x98F8, 0xEF91, 0x98F9, 0xEF92, 0x98FA, 0xEF93,
+	0x98FB, 0xEF94, 0x98FC, 0xEF95, 0x98FD, 0xEF96, 0x98FE, 0xEF97,
+	0x98FF, 0xEF98, 0x9900, 0xEF99, 0x9901, 0xEF9A, 0x9902, 0xEF9B,
+	0x9903, 0xEF9C, 0x9904, 0xEF9D, 0x9905, 0xEF9E, 0x9906, 0xEF9F,
+	0x9907, 0xEFA0, 0x9908, 0xF040, 0x9909, 0xF041, 0x990A, 0xF042,
+	0x990B, 0xF043, 0x990C, 0xF044, 0x990D, 0xF7D0, 0x990E, 0xF045,
+	0x990F, 0xF046, 0x9910, 0xB2CD, 0x9911, 0xF047, 0x9912, 0xF048,
+	0x9913, 0xF049, 0x9914, 0xF04A, 0x9915, 0xF04B, 0x9916, 0xF04C,
+	0x9917, 0xF04D, 0x9918, 0xF04E, 0x9919, 0xF04F, 0x991A, 0xF050,
+	0x991B, 0xF051, 0x991C, 0xF052, 0x991D, 0xF053, 0x991E, 0xF054,
+	0x991F, 0xF055, 0x9920, 0xF056, 0x9921, 0xF057, 0x9922, 0xF058,
+	0x9923, 0xF059, 0x9924, 0xF05A, 0x9925, 0xF05B, 0x9926, 0xF05C,
+	0x9927, 0xF05D, 0x9928, 0xF05E, 0x9929, 0xF05F, 0x992A, 0xF060,
+	0x992B, 0xF061, 0x992C, 0xF062, 0x992D, 0xF063, 0x992E, 0xF7D1,
+	0x992F, 0xF064, 0x9930, 0xF065, 0x9931, 0xF066, 0x9932, 0xF067,
+	0x9933, 0xF068, 0x9934, 0xF069, 0x9935, 0xF06A, 0x9936, 0xF06B,
+	0x9937, 0xF06C, 0x9938, 0xF06D, 0x9939, 0xF06E, 0x993A, 0xF06F,
+	0x993B, 0xF070, 0x993C, 0xF071, 0x993D, 0xF072, 0x993E, 0xF073,
+	0x993F, 0xF074, 0x9940, 0xF075, 0x9941, 0xF076, 0x9942, 0xF077,
+	0x9943, 0xF078, 0x9944, 0xF079, 0x9945, 0xF07A, 0x9946, 0xF07B,
+	0x9947, 0xF07C, 0x9948, 0xF07D, 0x9949, 0xF07E, 0x994A, 0xF080,
+	0x994B, 0xF081, 0x994C, 0xF082, 0x994D, 0xF083, 0x994E, 0xF084,
+	0x994F, 0xF085, 0x9950, 0xF086, 0x9951, 0xF087, 0x9952, 0xF088,
+	0x9953, 0xF089, 0x9954, 0xF7D3, 0x9955, 0xF7D2, 0x9956, 0xF08A,
+	0x9957, 0xF08B, 0x9958, 0xF08C, 0x9959, 0xF08D, 0x995A, 0xF08E,
+	0x995B, 0xF08F, 0x995C, 0xF090, 0x995D, 0xF091, 0x995E, 0xF092,
+	0x995F, 0xF093, 0x9960, 0xF094, 0x9961, 0xF095, 0x9962, 0xF096,
+	0x9963, 0xE2BB, 0x9964, 0xF097, 0x9965, 0xBCA2, 0x9966, 0xF098,
+	0x9967, 0xE2BC, 0x9968, 0xE2BD, 0x9969, 0xE2BE, 0x996A, 0xE2BF,
+	0x996B, 0xE2C0, 0x996C, 0xE2C1, 0x996D, 0xB7B9, 0x996E, 0xD2FB,
+	0x996F, 0xBDA4, 0x9970, 0xCACE, 0x9971, 0xB1A5, 0x9972, 0xCBC7,
+	0x9973, 0xF099, 0x9974, 0xE2C2, 0x9975, 0xB6FC, 0x9976, 0xC8C4,
+	0x9977, 0xE2C3, 0x9978, 0xF09A, 0x9979, 0xF09B, 0x997A, 0xBDC8,
+	0x997B, 0xF09C, 0x997C, 0xB1FD, 0x997D, 0xE2C4, 0x997E, 0xF09D,
+	0x997F, 0xB6F6, 0x9980, 0xE2C5, 0x9981, 0xC4D9, 0x9982, 0xF09E,
+	0x9983, 0xF09F, 0x9984, 0xE2C6, 0x9985, 0xCFDA, 0x9986, 0xB9DD,
+	0x9987, 0xE2C7, 0x9988, 0xC0A1, 0x9989, 0xF0A0, 0x998A, 0xE2C8,
+	0x998B, 0xB2F6, 0x998C, 0xF140, 0x998D, 0xE2C9, 0x998E, 0xF141,
+	0x998F, 0xC1F3, 0x9990, 0xE2CA, 0x9991, 0xE2CB, 0x9992, 0xC2F8,
+	0x9993, 0xE2CC, 0x9994, 0xE2CD, 0x9995, 0xE2CE, 0x9996, 0xCAD7,
+	0x9997, 0xD8B8, 0x9998, 0xD9E5, 0x9999, 0xCFE3, 0x999A, 0xF142,
+	0x999B, 0xF143, 0x999C, 0xF144, 0x999D, 0xF145, 0x999E, 0xF146,
+	0x999F, 0xF147, 0x99A0, 0xF148, 0x99A1, 0xF149, 0x99A2, 0xF14A,
+	0x99A3, 0xF14B, 0x99A4, 0xF14C, 0x99A5, 0xF0A5, 0x99A6, 0xF14D,
+	0x99A7, 0xF14E, 0x99A8, 0xDCB0, 0x99A9, 0xF14F, 0x99AA, 0xF150,
+	0x99AB, 0xF151, 0x99AC, 0xF152, 0x99AD, 0xF153, 0x99AE, 0xF154,
+	0x99AF, 0xF155, 0x99B0, 0xF156, 0x99B1, 0xF157, 0x99B2, 0xF158,
+	0x99B3, 0xF159, 0x99B4, 0xF15A, 0x99B5, 0xF15B, 0x99B6, 0xF15C,
+	0x99B7, 0xF15D, 0x99B8, 0xF15E, 0x99B9, 0xF15F, 0x99BA, 0xF160,
+	0x99BB, 0xF161, 0x99BC, 0xF162, 0x99BD, 0xF163, 0x99BE, 0xF164,
+	0x99BF, 0xF165, 0x99C0, 0xF166, 0x99C1, 0xF167, 0x99C2, 0xF168,
+	0x99C3, 0xF169, 0x99C4, 0xF16A, 0x99C5, 0xF16B, 0x99C6, 0xF16C,
+	0x99C7, 0xF16D, 0x99C8, 0xF16E, 0x99C9, 0xF16F, 0x99CA, 0xF170,
+	0x99CB, 0xF171, 0x99CC, 0xF172, 0x99CD, 0xF173, 0x99CE, 0xF174,
+	0x99CF, 0xF175, 0x99D0, 0xF176, 0x99D1, 0xF177, 0x99D2, 0xF178,
+	0x99D3, 0xF179, 0x99D4, 0xF17A, 0x99D5, 0xF17B, 0x99D6, 0xF17C,
+	0x99D7, 0xF17D, 0x99D8, 0xF17E, 0x99D9, 0xF180, 0x99DA, 0xF181,
+	0x99DB, 0xF182, 0x99DC, 0xF183, 0x99DD, 0xF184, 0x99DE, 0xF185,
+	0x99DF, 0xF186, 0x99E0, 0xF187, 0x99E1, 0xF188, 0x99E2, 0xF189,
+	0x99E3, 0xF18A, 0x99E4, 0xF18B, 0x99E5, 0xF18C, 0x99E6, 0xF18D,
+	0x99E7, 0xF18E, 0x99E8, 0xF18F, 0x99E9, 0xF190, 0x99EA, 0xF191,
+	0x99EB, 0xF192, 0x99EC, 0xF193, 0x99ED, 0xF194, 0x99EE, 0xF195,
+	0x99EF, 0xF196, 0x99F0, 0xF197, 0x99F1, 0xF198, 0x99F2, 0xF199,
+	0x99F3, 0xF19A, 0x99F4, 0xF19B, 0x99F5, 0xF19C, 0x99F6, 0xF19D,
+	0x99F7, 0xF19E, 0x99F8, 0xF19F, 0x99F9, 0xF1A0, 0x99FA, 0xF240,
+	0x99FB, 0xF241, 0x99FC, 0xF242, 0x99FD, 0xF243, 0x99FE, 0xF244,
+	0x99FF, 0xF245, 0x9A00, 0xF246, 0x9A01, 0xF247, 0x9A02, 0xF248,
+	0x9A03, 0xF249, 0x9A04, 0xF24A, 0x9A05, 0xF24B, 0x9A06, 0xF24C,
+	0x9A07, 0xF24D, 0x9A08, 0xF24E, 0x9A09, 0xF24F, 0x9A0A, 0xF250,
+	0x9A0B, 0xF251, 0x9A0C, 0xF252, 0x9A0D, 0xF253, 0x9A0E, 0xF254,
+	0x9A0F, 0xF255, 0x9A10, 0xF256, 0x9A11, 0xF257, 0x9A12, 0xF258,
+	0x9A13, 0xF259, 0x9A14, 0xF25A, 0x9A15, 0xF25B, 0x9A16, 0xF25C,
+	0x9A17, 0xF25D, 0x9A18, 0xF25E, 0x9A19, 0xF25F, 0x9A1A, 0xF260,
+	0x9A1B, 0xF261, 0x9A1C, 0xF262, 0x9A1D, 0xF263, 0x9A1E, 0xF264,
+	0x9A1F, 0xF265, 0x9A20, 0xF266, 0x9A21, 0xF267, 0x9A22, 0xF268,
+	0x9A23, 0xF269, 0x9A24, 0xF26A, 0x9A25, 0xF26B, 0x9A26, 0xF26C,
+	0x9A27, 0xF26D, 0x9A28, 0xF26E, 0x9A29, 0xF26F, 0x9A2A, 0xF270,
+	0x9A2B, 0xF271, 0x9A2C, 0xF272, 0x9A2D, 0xF273, 0x9A2E, 0xF274,
+	0x9A2F, 0xF275, 0x9A30, 0xF276, 0x9A31, 0xF277, 0x9A32, 0xF278,
+	0x9A33, 0xF279, 0x9A34, 0xF27A, 0x9A35, 0xF27B, 0x9A36, 0xF27C,
+	0x9A37, 0xF27D, 0x9A38, 0xF27E, 0x9A39, 0xF280, 0x9A3A, 0xF281,
+	0x9A3B, 0xF282, 0x9A3C, 0xF283, 0x9A3D, 0xF284, 0x9A3E, 0xF285,
+	0x9A3F, 0xF286, 0x9A40, 0xF287, 0x9A41, 0xF288, 0x9A42, 0xF289,
+	0x9A43, 0xF28A, 0x9A44, 0xF28B, 0x9A45, 0xF28C, 0x9A46, 0xF28D,
+	0x9A47, 0xF28E, 0x9A48, 0xF28F, 0x9A49, 0xF290, 0x9A4A, 0xF291,
+	0x9A4B, 0xF292, 0x9A4C, 0xF293, 0x9A4D, 0xF294, 0x9A4E, 0xF295,
+	0x9A4F, 0xF296, 0x9A50, 0xF297, 0x9A51, 0xF298, 0x9A52, 0xF299,
+	0x9A53, 0xF29A, 0x9A54, 0xF29B, 0x9A55, 0xF29C, 0x9A56, 0xF29D,
+	0x9A57, 0xF29E, 0x9A58, 0xF29F, 0x9A59, 0xF2A0, 0x9A5A, 0xF340,
+	0x9A5B, 0xF341, 0x9A5C, 0xF342, 0x9A5D, 0xF343, 0x9A5E, 0xF344,
+	0x9A5F, 0xF345, 0x9A60, 0xF346, 0x9A61, 0xF347, 0x9A62, 0xF348,
+	0x9A63, 0xF349, 0x9A64, 0xF34A, 0x9A65, 0xF34B, 0x9A66, 0xF34C,
+	0x9A67, 0xF34D, 0x9A68, 0xF34E, 0x9A69, 0xF34F, 0x9A6A, 0xF350,
+	0x9A6B, 0xF351, 0x9A6C, 0xC2ED, 0x9A6D, 0xD4A6, 0x9A6E, 0xCDD4,
+	0x9A6F, 0xD1B1, 0x9A70, 0xB3DB, 0x9A71, 0xC7FD, 0x9A72, 0xF352,
+	0x9A73, 0xB2B5, 0x9A74, 0xC2BF, 0x9A75, 0xE6E0, 0x9A76, 0xCABB,
+	0x9A77, 0xE6E1, 0x9A78, 0xE6E2, 0x9A79, 0xBED4, 0x9A7A, 0xE6E3,
+	0x9A7B, 0xD7A4, 0x9A7C, 0xCDD5, 0x9A7D, 0xE6E5, 0x9A7E, 0xBCDD,
+	0x9A7F, 0xE6E4, 0x9A80, 0xE6E6, 0x9A81, 0xE6E7, 0x9A82, 0xC2EE,
+	0x9A83, 0xF353, 0x9A84, 0xBDBE, 0x9A85, 0xE6E8, 0x9A86, 0xC2E6,
+	0x9A87, 0xBAA7, 0x9A88, 0xE6E9, 0x9A89, 0xF354, 0x9A8A, 0xE6EA,
+	0x9A8B, 0xB3D2, 0x9A8C, 0xD1E9, 0x9A8D, 0xF355, 0x9A8E, 0xF356,
+	0x9A8F, 0xBFA5, 0x9A90, 0xE6EB, 0x9A91, 0xC6EF, 0x9A92, 0xE6EC,
+	0x9A93, 0xE6ED, 0x9A94, 0xF357, 0x9A95, 0xF358, 0x9A96, 0xE6EE,
+	0x9A97, 0xC6AD, 0x9A98, 0xE6EF, 0x9A99, 0xF359, 0x9A9A, 0xC9A7,
+	0x9A9B, 0xE6F0, 0x9A9C, 0xE6F1, 0x9A9D, 0xE6F2, 0x9A9E, 0xE5B9,
+	0x9A9F, 0xE6F3, 0x9AA0, 0xE6F4, 0x9AA1, 0xC2E2, 0x9AA2, 0xE6F5,
+	0x9AA3, 0xE6F6, 0x9AA4, 0xD6E8, 0x9AA5, 0xE6F7, 0x9AA6, 0xF35A,
+	0x9AA7, 0xE6F8, 0x9AA8, 0xB9C7, 0x9AA9, 0xF35B, 0x9AAA, 0xF35C,
+	0x9AAB, 0xF35D, 0x9AAC, 0xF35E, 0x9AAD, 0xF35F, 0x9AAE, 0xF360,
+	0x9AAF, 0xF361, 0x9AB0, 0xF7BB, 0x9AB1, 0xF7BA, 0x9AB2, 0xF362,
+	0x9AB3, 0xF363, 0x9AB4, 0xF364, 0x9AB5, 0xF365, 0x9AB6, 0xF7BE,
+	0x9AB7, 0xF7BC, 0x9AB8, 0xBAA1, 0x9AB9, 0xF366, 0x9ABA, 0xF7BF,
+	0x9ABB, 0xF367, 0x9ABC, 0xF7C0, 0x9ABD, 0xF368, 0x9ABE, 0xF369,
+	0x9ABF, 0xF36A, 0x9AC0, 0xF7C2, 0x9AC1, 0xF7C1, 0x9AC2, 0xF7C4,
+	0x9AC3, 0xF36B, 0x9AC4, 0xF36C, 0x9AC5, 0xF7C3, 0x9AC6, 0xF36D,
+	0x9AC7, 0xF36E, 0x9AC8, 0xF36F, 0x9AC9, 0xF370, 0x9ACA, 0xF371,
+	0x9ACB, 0xF7C5, 0x9ACC, 0xF7C6, 0x9ACD, 0xF372, 0x9ACE, 0xF373,
+	0x9ACF, 0xF374, 0x9AD0, 0xF375, 0x9AD1, 0xF7C7, 0x9AD2, 0xF376,
+	0x9AD3, 0xCBE8, 0x9AD4, 0xF377, 0x9AD5, 0xF378, 0x9AD6, 0xF379,
+	0x9AD7, 0xF37A, 0x9AD8, 0xB8DF, 0x9AD9, 0xF37B, 0x9ADA, 0xF37C,
+	0x9ADB, 0xF37D, 0x9ADC, 0xF37E, 0x9ADD, 0xF380, 0x9ADE, 0xF381,
+	0x9ADF, 0xF7D4, 0x9AE0, 0xF382, 0x9AE1, 0xF7D5, 0x9AE2, 0xF383,
+	0x9AE3, 0xF384, 0x9AE4, 0xF385, 0x9AE5, 0xF386, 0x9AE6, 0xF7D6,
+	0x9AE7, 0xF387, 0x9AE8, 0xF388, 0x9AE9, 0xF389, 0x9AEA, 0xF38A,
+	0x9AEB, 0xF7D8, 0x9AEC, 0xF38B, 0x9AED, 0xF7DA, 0x9AEE, 0xF38C,
+	0x9AEF, 0xF7D7, 0x9AF0, 0xF38D, 0x9AF1, 0xF38E, 0x9AF2, 0xF38F,
+	0x9AF3, 0xF390, 0x9AF4, 0xF391, 0x9AF5, 0xF392, 0x9AF6, 0xF393,
+	0x9AF7, 0xF394, 0x9AF8, 0xF395, 0x9AF9, 0xF7DB, 0x9AFA, 0xF396,
+	0x9AFB, 0xF7D9, 0x9AFC, 0xF397, 0x9AFD, 0xF398, 0x9AFE, 0xF399,
+	0x9AFF, 0xF39A, 0x9B00, 0xF39B, 0x9B01, 0xF39C, 0x9B02, 0xF39D,
+	0x9B03, 0xD7D7, 0x9B04, 0xF39E, 0x9B05, 0xF39F, 0x9B06, 0xF3A0,
+	0x9B07, 0xF440, 0x9B08, 0xF7DC, 0x9B09, 0xF441, 0x9B0A, 0xF442,
+	0x9B0B, 0xF443, 0x9B0C, 0xF444, 0x9B0D, 0xF445, 0x9B0E, 0xF446,
+	0x9B0F, 0xF7DD, 0x9B10, 0xF447, 0x9B11, 0xF448, 0x9B12, 0xF449,
+	0x9B13, 0xF7DE, 0x9B14, 0xF44A, 0x9B15, 0xF44B, 0x9B16, 0xF44C,
+	0x9B17, 0xF44D, 0x9B18, 0xF44E, 0x9B19, 0xF44F, 0x9B1A, 0xF450,
+	0x9B1B, 0xF451, 0x9B1C, 0xF452, 0x9B1D, 0xF453, 0x9B1E, 0xF454,
+	0x9B1F, 0xF7DF, 0x9B20, 0xF455, 0x9B21, 0xF456, 0x9B22, 0xF457,
+	0x9B23, 0xF7E0, 0x9B24, 0xF458, 0x9B25, 0xF459, 0x9B26, 0xF45A,
+	0x9B27, 0xF45B, 0x9B28, 0xF45C, 0x9B29, 0xF45D, 0x9B2A, 0xF45E,
+	0x9B2B, 0xF45F, 0x9B2C, 0xF460, 0x9B2D, 0xF461, 0x9B2E, 0xF462,
+	0x9B2F, 0xDBCB, 0x9B30, 0xF463, 0x9B31, 0xF464, 0x9B32, 0xD8AA,
+	0x9B33, 0xF465, 0x9B34, 0xF466, 0x9B35, 0xF467, 0x9B36, 0xF468,
+	0x9B37, 0xF469, 0x9B38, 0xF46A, 0x9B39, 0xF46B, 0x9B3A, 0xF46C,
+	0x9B3B, 0xE5F7, 0x9B3C, 0xB9ED, 0x9B3D, 0xF46D, 0x9B3E, 0xF46E,
+	0x9B3F, 0xF46F, 0x9B40, 0xF470, 0x9B41, 0xBFFD, 0x9B42, 0xBBEA,
+	0x9B43, 0xF7C9, 0x9B44, 0xC6C7, 0x9B45, 0xF7C8, 0x9B46, 0xF471,
+	0x9B47, 0xF7CA, 0x9B48, 0xF7CC, 0x9B49, 0xF7CB, 0x9B4A, 0xF472,
+	0x9B4B, 0xF473, 0x9B4C, 0xF474, 0x9B4D, 0xF7CD, 0x9B4E, 0xF475,
+	0x9B4F, 0xCEBA, 0x9B50, 0xF476, 0x9B51, 0xF7CE, 0x9B52, 0xF477,
+	0x9B53, 0xF478, 0x9B54, 0xC4A7, 0x9B55, 0xF479, 0x9B56, 0xF47A,
+	0x9B57, 0xF47B, 0x9B58, 0xF47C, 0x9B59, 0xF47D, 0x9B5A, 0xF47E,
+	0x9B5B, 0xF480, 0x9B5C, 0xF481, 0x9B5D, 0xF482, 0x9B5E, 0xF483,
+	0x9B5F, 0xF484, 0x9B60, 0xF485, 0x9B61, 0xF486, 0x9B62, 0xF487,
+	0x9B63, 0xF488, 0x9B64, 0xF489, 0x9B65, 0xF48A, 0x9B66, 0xF48B,
+	0x9B67, 0xF48C, 0x9B68, 0xF48D, 0x9B69, 0xF48E, 0x9B6A, 0xF48F,
+	0x9B6B, 0xF490, 0x9B6C, 0xF491, 0x9B6D, 0xF492, 0x9B6E, 0xF493,
+	0x9B6F, 0xF494, 0x9B70, 0xF495, 0x9B71, 0xF496, 0x9B72, 0xF497,
+	0x9B73, 0xF498, 0x9B74, 0xF499, 0x9B75, 0xF49A, 0x9B76, 0xF49B,
+	0x9B77, 0xF49C, 0x9B78, 0xF49D, 0x9B79, 0xF49E, 0x9B7A, 0xF49F,
+	0x9B7B, 0xF4A0, 0x9B7C, 0xF540, 0x9B7D, 0xF541, 0x9B7E, 0xF542,
+	0x9B7F, 0xF543, 0x9B80, 0xF544, 0x9B81, 0xF545, 0x9B82, 0xF546,
+	0x9B83, 0xF547, 0x9B84, 0xF548, 0x9B85, 0xF549, 0x9B86, 0xF54A,
+	0x9B87, 0xF54B, 0x9B88, 0xF54C, 0x9B89, 0xF54D, 0x9B8A, 0xF54E,
+	0x9B8B, 0xF54F, 0x9B8C, 0xF550, 0x9B8D, 0xF551, 0x9B8E, 0xF552,
+	0x9B8F, 0xF553, 0x9B90, 0xF554, 0x9B91, 0xF555, 0x9B92, 0xF556,
+	0x9B93, 0xF557, 0x9B94, 0xF558, 0x9B95, 0xF559, 0x9B96, 0xF55A,
+	0x9B97, 0xF55B, 0x9B98, 0xF55C, 0x9B99, 0xF55D, 0x9B9A, 0xF55E,
+	0x9B9B, 0xF55F, 0x9B9C, 0xF560, 0x9B9D, 0xF561, 0x9B9E, 0xF562,
+	0x9B9F, 0xF563, 0x9BA0, 0xF564, 0x9BA1, 0xF565, 0x9BA2, 0xF566,
+	0x9BA3, 0xF567, 0x9BA4, 0xF568, 0x9BA5, 0xF569, 0x9BA6, 0xF56A,
+	0x9BA7, 0xF56B, 0x9BA8, 0xF56C, 0x9BA9, 0xF56D, 0x9BAA, 0xF56E,
+	0x9BAB, 0xF56F, 0x9BAC, 0xF570, 0x9BAD, 0xF571, 0x9BAE, 0xF572,
+	0x9BAF, 0xF573, 0x9BB0, 0xF574, 0x9BB1, 0xF575, 0x9BB2, 0xF576,
+	0x9BB3, 0xF577, 0x9BB4, 0xF578, 0x9BB5, 0xF579, 0x9BB6, 0xF57A,
+	0x9BB7, 0xF57B, 0x9BB8, 0xF57C, 0x9BB9, 0xF57D, 0x9BBA, 0xF57E,
+	0x9BBB, 0xF580, 0x9BBC, 0xF581, 0x9BBD, 0xF582, 0x9BBE, 0xF583,
+	0x9BBF, 0xF584, 0x9BC0, 0xF585, 0x9BC1, 0xF586, 0x9BC2, 0xF587,
+	0x9BC3, 0xF588, 0x9BC4, 0xF589, 0x9BC5, 0xF58A, 0x9BC6, 0xF58B,
+	0x9BC7, 0xF58C, 0x9BC8, 0xF58D, 0x9BC9, 0xF58E, 0x9BCA, 0xF58F,
+	0x9BCB, 0xF590, 0x9BCC, 0xF591, 0x9BCD, 0xF592, 0x9BCE, 0xF593,
+	0x9BCF, 0xF594, 0x9BD0, 0xF595, 0x9BD1, 0xF596, 0x9BD2, 0xF597,
+	0x9BD3, 0xF598, 0x9BD4, 0xF599, 0x9BD5, 0xF59A, 0x9BD6, 0xF59B,
+	0x9BD7, 0xF59C, 0x9BD8, 0xF59D, 0x9BD9, 0xF59E, 0x9BDA, 0xF59F,
+	0x9BDB, 0xF5A0, 0x9BDC, 0xF640, 0x9BDD, 0xF641, 0x9BDE, 0xF642,
+	0x9BDF, 0xF643, 0x9BE0, 0xF644, 0x9BE1, 0xF645, 0x9BE2, 0xF646,
+	0x9BE3, 0xF647, 0x9BE4, 0xF648, 0x9BE5, 0xF649, 0x9BE6, 0xF64A,
+	0x9BE7, 0xF64B, 0x9BE8, 0xF64C, 0x9BE9, 0xF64D, 0x9BEA, 0xF64E,
+	0x9BEB, 0xF64F, 0x9BEC, 0xF650, 0x9BED, 0xF651, 0x9BEE, 0xF652,
+	0x9BEF, 0xF653, 0x9BF0, 0xF654, 0x9BF1, 0xF655, 0x9BF2, 0xF656,
+	0x9BF3, 0xF657, 0x9BF4, 0xF658, 0x9BF5, 0xF659, 0x9BF6, 0xF65A,
+	0x9BF7, 0xF65B, 0x9BF8, 0xF65C, 0x9BF9, 0xF65D, 0x9BFA, 0xF65E,
+	0x9BFB, 0xF65F, 0x9BFC, 0xF660, 0x9BFD, 0xF661, 0x9BFE, 0xF662,
+	0x9BFF, 0xF663, 0x9C00, 0xF664, 0x9C01, 0xF665, 0x9C02, 0xF666,
+	0x9C03, 0xF667, 0x9C04, 0xF668, 0x9C05, 0xF669, 0x9C06, 0xF66A,
+	0x9C07, 0xF66B, 0x9C08, 0xF66C, 0x9C09, 0xF66D, 0x9C0A, 0xF66E,
+	0x9C0B, 0xF66F, 0x9C0C, 0xF670, 0x9C0D, 0xF671, 0x9C0E, 0xF672,
+	0x9C0F, 0xF673, 0x9C10, 0xF674, 0x9C11, 0xF675, 0x9C12, 0xF676,
+	0x9C13, 0xF677, 0x9C14, 0xF678, 0x9C15, 0xF679, 0x9C16, 0xF67A,
+	0x9C17, 0xF67B, 0x9C18, 0xF67C, 0x9C19, 0xF67D, 0x9C1A, 0xF67E,
+	0x9C1B, 0xF680, 0x9C1C, 0xF681, 0x9C1D, 0xF682, 0x9C1E, 0xF683,
+	0x9C1F, 0xF684, 0x9C20, 0xF685, 0x9C21, 0xF686, 0x9C22, 0xF687,
+	0x9C23, 0xF688, 0x9C24, 0xF689, 0x9C25, 0xF68A, 0x9C26, 0xF68B,
+	0x9C27, 0xF68C, 0x9C28, 0xF68D, 0x9C29, 0xF68E, 0x9C2A, 0xF68F,
+	0x9C2B, 0xF690, 0x9C2C, 0xF691, 0x9C2D, 0xF692, 0x9C2E, 0xF693,
+	0x9C2F, 0xF694, 0x9C30, 0xF695, 0x9C31, 0xF696, 0x9C32, 0xF697,
+	0x9C33, 0xF698, 0x9C34, 0xF699, 0x9C35, 0xF69A, 0x9C36, 0xF69B,
+	0x9C37, 0xF69C, 0x9C38, 0xF69D, 0x9C39, 0xF69E, 0x9C3A, 0xF69F,
+	0x9C3B, 0xF6A0, 0x9C3C, 0xF740, 0x9C3D, 0xF741, 0x9C3E, 0xF742,
+	0x9C3F, 0xF743, 0x9C40, 0xF744, 0x9C41, 0xF745, 0x9C42, 0xF746,
+	0x9C43, 0xF747, 0x9C44, 0xF748, 0x9C45, 0xF749, 0x9C46, 0xF74A,
+	0x9C47, 0xF74B, 0x9C48, 0xF74C, 0x9C49, 0xF74D, 0x9C4A, 0xF74E,
+	0x9C4B, 0xF74F, 0x9C4C, 0xF750, 0x9C4D, 0xF751, 0x9C4E, 0xF752,
+	0x9C4F, 0xF753, 0x9C50, 0xF754, 0x9C51, 0xF755, 0x9C52, 0xF756,
+	0x9C53, 0xF757, 0x9C54, 0xF758, 0x9C55, 0xF759, 0x9C56, 0xF75A,
+	0x9C57, 0xF75B, 0x9C58, 0xF75C, 0x9C59, 0xF75D, 0x9C5A, 0xF75E,
+	0x9C5B, 0xF75F, 0x9C5C, 0xF760, 0x9C5D, 0xF761, 0x9C5E, 0xF762,
+	0x9C5F, 0xF763, 0x9C60, 0xF764, 0x9C61, 0xF765, 0x9C62, 0xF766,
+	0x9C63, 0xF767, 0x9C64, 0xF768, 0x9C65, 0xF769, 0x9C66, 0xF76A,
+	0x9C67, 0xF76B, 0x9C68, 0xF76C, 0x9C69, 0xF76D, 0x9C6A, 0xF76E,
+	0x9C6B, 0xF76F, 0x9C6C, 0xF770, 0x9C6D, 0xF771, 0x9C6E, 0xF772,
+	0x9C6F, 0xF773, 0x9C70, 0xF774, 0x9C71, 0xF775, 0x9C72, 0xF776,
+	0x9C73, 0xF777, 0x9C74, 0xF778, 0x9C75, 0xF779, 0x9C76, 0xF77A,
+	0x9C77, 0xF77B, 0x9C78, 0xF77C, 0x9C79, 0xF77D, 0x9C7A, 0xF77E,
+	0x9C7B, 0xF780, 0x9C7C, 0xD3E3, 0x9C7D, 0xF781, 0x9C7E, 0xF782,
+	0x9C7F, 0xF6CF, 0x9C80, 0xF783, 0x9C81, 0xC2B3, 0x9C82, 0xF6D0,
+	0x9C83, 0xF784, 0x9C84, 0xF785, 0x9C85, 0xF6D1, 0x9C86, 0xF6D2,
+	0x9C87, 0xF6D3, 0x9C88, 0xF6D4, 0x9C89, 0xF786, 0x9C8A, 0xF787,
+	0x9C8B, 0xF6D6, 0x9C8C, 0xF788, 0x9C8D, 0xB1AB, 0x9C8E, 0xF6D7,
+	0x9C8F, 0xF789, 0x9C90, 0xF6D8, 0x9C91, 0xF6D9, 0x9C92, 0xF6DA,
+	0x9C93, 0xF78A, 0x9C94, 0xF6DB, 0x9C95, 0xF6DC, 0x9C96, 0xF78B,
+	0x9C97, 0xF78C, 0x9C98, 0xF78D, 0x9C99, 0xF78E, 0x9C9A, 0xF6DD,
+	0x9C9B, 0xF6DE, 0x9C9C, 0xCFCA, 0x9C9D, 0xF78F, 0x9C9E, 0xF6DF,
+	0x9C9F, 0xF6E0, 0x9CA0, 0xF6E1, 0x9CA1, 0xF6E2, 0x9CA2, 0xF6E3,
+	0x9CA3, 0xF6E4, 0x9CA4, 0xC0F0, 0x9CA5, 0xF6E5, 0x9CA6, 0xF6E6,
+	0x9CA7, 0xF6E7, 0x9CA8, 0xF6E8, 0x9CA9, 0xF6E9, 0x9CAA, 0xF790,
+	0x9CAB, 0xF6EA, 0x9CAC, 0xF791, 0x9CAD, 0xF6EB, 0x9CAE, 0xF6EC,
+	0x9CAF, 0xF792, 0x9CB0, 0xF6ED, 0x9CB1, 0xF6EE, 0x9CB2, 0xF6EF,
+	0x9CB3, 0xF6F0, 0x9CB4, 0xF6F1, 0x9CB5, 0xF6F2, 0x9CB6, 0xF6F3,
+	0x9CB7, 0xF6F4, 0x9CB8, 0xBEA8, 0x9CB9, 0xF793, 0x9CBA, 0xF6F5,
+	0x9CBB, 0xF6F6, 0x9CBC, 0xF6F7, 0x9CBD, 0xF6F8, 0x9CBE, 0xF794,
+	0x9CBF, 0xF795, 0x9CC0, 0xF796, 0x9CC1, 0xF797, 0x9CC2, 0xF798,
+	0x9CC3, 0xC8FA, 0x9CC4, 0xF6F9, 0x9CC5, 0xF6FA, 0x9CC6, 0xF6FB,
+	0x9CC7, 0xF6FC, 0x9CC8, 0xF799, 0x9CC9, 0xF79A, 0x9CCA, 0xF6FD,
+	0x9CCB, 0xF6FE, 0x9CCC, 0xF7A1, 0x9CCD, 0xF7A2, 0x9CCE, 0xF7A3,
+	0x9CCF, 0xF7A4, 0x9CD0, 0xF7A5, 0x9CD1, 0xF79B, 0x9CD2, 0xF79C,
+	0x9CD3, 0xF7A6, 0x9CD4, 0xF7A7, 0x9CD5, 0xF7A8, 0x9CD6, 0xB1EE,
+	0x9CD7, 0xF7A9, 0x9CD8, 0xF7AA, 0x9CD9, 0xF7AB, 0x9CDA, 0xF79D,
+	0x9CDB, 0xF79E, 0x9CDC, 0xF7AC, 0x9CDD, 0xF7AD, 0x9CDE, 0xC1DB,
+	0x9CDF, 0xF7AE, 0x9CE0, 0xF79F, 0x9CE1, 0xF7A0, 0x9CE2, 0xF7AF,
+	0x9CE3, 0xF840, 0x9CE4, 0xF841, 0x9CE5, 0xF842, 0x9CE6, 0xF843,
+	0x9CE7, 0xF844, 0x9CE8, 0xF845, 0x9CE9, 0xF846, 0x9CEA, 0xF847,
+	0x9CEB, 0xF848, 0x9CEC, 0xF849, 0x9CED, 0xF84A, 0x9CEE, 0xF84B,
+	0x9CEF, 0xF84C, 0x9CF0, 0xF84D, 0x9CF1, 0xF84E, 0x9CF2, 0xF84F,
+	0x9CF3, 0xF850, 0x9CF4, 0xF851, 0x9CF5, 0xF852, 0x9CF6, 0xF853,
+	0x9CF7, 0xF854, 0x9CF8, 0xF855, 0x9CF9, 0xF856, 0x9CFA, 0xF857,
+	0x9CFB, 0xF858, 0x9CFC, 0xF859, 0x9CFD, 0xF85A, 0x9CFE, 0xF85B,
+	0x9CFF, 0xF85C, 0x9D00, 0xF85D, 0x9D01, 0xF85E, 0x9D02, 0xF85F,
+	0x9D03, 0xF860, 0x9D04, 0xF861, 0x9D05, 0xF862, 0x9D06, 0xF863,
+	0x9D07, 0xF864, 0x9D08, 0xF865, 0x9D09, 0xF866, 0x9D0A, 0xF867,
+	0x9D0B, 0xF868, 0x9D0C, 0xF869, 0x9D0D, 0xF86A, 0x9D0E, 0xF86B,
+	0x9D0F, 0xF86C, 0x9D10, 0xF86D, 0x9D11, 0xF86E, 0x9D12, 0xF86F,
+	0x9D13, 0xF870, 0x9D14, 0xF871, 0x9D15, 0xF872, 0x9D16, 0xF873,
+	0x9D17, 0xF874, 0x9D18, 0xF875, 0x9D19, 0xF876, 0x9D1A, 0xF877,
+	0x9D1B, 0xF878, 0x9D1C, 0xF879, 0x9D1D, 0xF87A, 0x9D1E, 0xF87B,
+	0x9D1F, 0xF87C, 0x9D20, 0xF87D, 0x9D21, 0xF87E, 0x9D22, 0xF880,
+	0x9D23, 0xF881, 0x9D24, 0xF882, 0x9D25, 0xF883, 0x9D26, 0xF884,
+	0x9D27, 0xF885, 0x9D28, 0xF886, 0x9D29, 0xF887, 0x9D2A, 0xF888,
+	0x9D2B, 0xF889, 0x9D2C, 0xF88A, 0x9D2D, 0xF88B, 0x9D2E, 0xF88C,
+	0x9D2F, 0xF88D, 0x9D30, 0xF88E, 0x9D31, 0xF88F, 0x9D32, 0xF890,
+	0x9D33, 0xF891, 0x9D34, 0xF892, 0x9D35, 0xF893, 0x9D36, 0xF894,
+	0x9D37, 0xF895, 0x9D38, 0xF896, 0x9D39, 0xF897, 0x9D3A, 0xF898,
+	0x9D3B, 0xF899, 0x9D3C, 0xF89A, 0x9D3D, 0xF89B, 0x9D3E, 0xF89C,
+	0x9D3F, 0xF89D, 0x9D40, 0xF89E, 0x9D41, 0xF89F, 0x9D42, 0xF8A0,
+	0x9D43, 0xF940, 0x9D44, 0xF941, 0x9D45, 0xF942, 0x9D46, 0xF943,
+	0x9D47, 0xF944, 0x9D48, 0xF945, 0x9D49, 0xF946, 0x9D4A, 0xF947,
+	0x9D4B, 0xF948, 0x9D4C, 0xF949, 0x9D4D, 0xF94A, 0x9D4E, 0xF94B,
+	0x9D4F, 0xF94C, 0x9D50, 0xF94D, 0x9D51, 0xF94E, 0x9D52, 0xF94F,
+	0x9D53, 0xF950, 0x9D54, 0xF951, 0x9D55, 0xF952, 0x9D56, 0xF953,
+	0x9D57, 0xF954, 0x9D58, 0xF955, 0x9D59, 0xF956, 0x9D5A, 0xF957,
+	0x9D5B, 0xF958, 0x9D5C, 0xF959, 0x9D5D, 0xF95A, 0x9D5E, 0xF95B,
+	0x9D5F, 0xF95C, 0x9D60, 0xF95D, 0x9D61, 0xF95E, 0x9D62, 0xF95F,
+	0x9D63, 0xF960, 0x9D64, 0xF961, 0x9D65, 0xF962, 0x9D66, 0xF963,
+	0x9D67, 0xF964, 0x9D68, 0xF965, 0x9D69, 0xF966, 0x9D6A, 0xF967,
+	0x9D6B, 0xF968, 0x9D6C, 0xF969, 0x9D6D, 0xF96A, 0x9D6E, 0xF96B,
+	0x9D6F, 0xF96C, 0x9D70, 0xF96D, 0x9D71, 0xF96E, 0x9D72, 0xF96F,
+	0x9D73, 0xF970, 0x9D74, 0xF971, 0x9D75, 0xF972, 0x9D76, 0xF973,
+	0x9D77, 0xF974, 0x9D78, 0xF975, 0x9D79, 0xF976, 0x9D7A, 0xF977,
+	0x9D7B, 0xF978, 0x9D7C, 0xF979, 0x9D7D, 0xF97A, 0x9D7E, 0xF97B,
+	0x9D7F, 0xF97C, 0x9D80, 0xF97D, 0x9D81, 0xF97E, 0x9D82, 0xF980,
+	0x9D83, 0xF981, 0x9D84, 0xF982, 0x9D85, 0xF983, 0x9D86, 0xF984,
+	0x9D87, 0xF985, 0x9D88, 0xF986, 0x9D89, 0xF987, 0x9D8A, 0xF988,
+	0x9D8B, 0xF989, 0x9D8C, 0xF98A, 0x9D8D, 0xF98B, 0x9D8E, 0xF98C,
+	0x9D8F, 0xF98D, 0x9D90, 0xF98E, 0x9D91, 0xF98F, 0x9D92, 0xF990,
+	0x9D93, 0xF991, 0x9D94, 0xF992, 0x9D95, 0xF993, 0x9D96, 0xF994,
+	0x9D97, 0xF995, 0x9D98, 0xF996, 0x9D99, 0xF997, 0x9D9A, 0xF998,
+	0x9D9B, 0xF999, 0x9D9C, 0xF99A, 0x9D9D, 0xF99B, 0x9D9E, 0xF99C,
+	0x9D9F, 0xF99D, 0x9DA0, 0xF99E, 0x9DA1, 0xF99F, 0x9DA2, 0xF9A0,
+	0x9DA3, 0xFA40, 0x9DA4, 0xFA41, 0x9DA5, 0xFA42, 0x9DA6, 0xFA43,
+	0x9DA7, 0xFA44, 0x9DA8, 0xFA45, 0x9DA9, 0xFA46, 0x9DAA, 0xFA47,
+	0x9DAB, 0xFA48, 0x9DAC, 0xFA49, 0x9DAD, 0xFA4A, 0x9DAE, 0xFA4B,
+	0x9DAF, 0xFA4C, 0x9DB0, 0xFA4D, 0x9DB1, 0xFA4E, 0x9DB2, 0xFA4F,
+	0x9DB3, 0xFA50, 0x9DB4, 0xFA51, 0x9DB5, 0xFA52, 0x9DB6, 0xFA53,
+	0x9DB7, 0xFA54, 0x9DB8, 0xFA55, 0x9DB9, 0xFA56, 0x9DBA, 0xFA57,
+	0x9DBB, 0xFA58, 0x9DBC, 0xFA59, 0x9DBD, 0xFA5A, 0x9DBE, 0xFA5B,
+	0x9DBF, 0xFA5C, 0x9DC0, 0xFA5D, 0x9DC1, 0xFA5E, 0x9DC2, 0xFA5F,
+	0x9DC3, 0xFA60, 0x9DC4, 0xFA61, 0x9DC5, 0xFA62, 0x9DC6, 0xFA63,
+	0x9DC7, 0xFA64, 0x9DC8, 0xFA65, 0x9DC9, 0xFA66, 0x9DCA, 0xFA67,
+	0x9DCB, 0xFA68, 0x9DCC, 0xFA69, 0x9DCD, 0xFA6A, 0x9DCE, 0xFA6B,
+	0x9DCF, 0xFA6C, 0x9DD0, 0xFA6D, 0x9DD1, 0xFA6E, 0x9DD2, 0xFA6F,
+	0x9DD3, 0xFA70, 0x9DD4, 0xFA71, 0x9DD5, 0xFA72, 0x9DD6, 0xFA73,
+	0x9DD7, 0xFA74, 0x9DD8, 0xFA75, 0x9DD9, 0xFA76, 0x9DDA, 0xFA77,
+	0x9DDB, 0xFA78, 0x9DDC, 0xFA79, 0x9DDD, 0xFA7A, 0x9DDE, 0xFA7B,
+	0x9DDF, 0xFA7C, 0x9DE0, 0xFA7D, 0x9DE1, 0xFA7E, 0x9DE2, 0xFA80,
+	0x9DE3, 0xFA81, 0x9DE4, 0xFA82, 0x9DE5, 0xFA83, 0x9DE6, 0xFA84,
+	0x9DE7, 0xFA85, 0x9DE8, 0xFA86, 0x9DE9, 0xFA87, 0x9DEA, 0xFA88,
+	0x9DEB, 0xFA89, 0x9DEC, 0xFA8A, 0x9DED, 0xFA8B, 0x9DEE, 0xFA8C,
+	0x9DEF, 0xFA8D, 0x9DF0, 0xFA8E, 0x9DF1, 0xFA8F, 0x9DF2, 0xFA90,
+	0x9DF3, 0xFA91, 0x9DF4, 0xFA92, 0x9DF5, 0xFA93, 0x9DF6, 0xFA94,
+	0x9DF7, 0xFA95, 0x9DF8, 0xFA96, 0x9DF9, 0xFA97, 0x9DFA, 0xFA98,
+	0x9DFB, 0xFA99, 0x9DFC, 0xFA9A, 0x9DFD, 0xFA9B, 0x9DFE, 0xFA9C,
+	0x9DFF, 0xFA9D, 0x9E00, 0xFA9E, 0x9E01, 0xFA9F, 0x9E02, 0xFAA0,
+	0x9E03, 0xFB40, 0x9E04, 0xFB41, 0x9E05, 0xFB42, 0x9E06, 0xFB43,
+	0x9E07, 0xFB44, 0x9E08, 0xFB45, 0x9E09, 0xFB46, 0x9E0A, 0xFB47,
+	0x9E0B, 0xFB48, 0x9E0C, 0xFB49, 0x9E0D, 0xFB4A, 0x9E0E, 0xFB4B,
+	0x9E0F, 0xFB4C, 0x9E10, 0xFB4D, 0x9E11, 0xFB4E, 0x9E12, 0xFB4F,
+	0x9E13, 0xFB50, 0x9E14, 0xFB51, 0x9E15, 0xFB52, 0x9E16, 0xFB53,
+	0x9E17, 0xFB54, 0x9E18, 0xFB55, 0x9E19, 0xFB56, 0x9E1A, 0xFB57,
+	0x9E1B, 0xFB58, 0x9E1C, 0xFB59, 0x9E1D, 0xFB5A, 0x9E1E, 0xFB5B,
+	0x9E1F, 0xC4F1, 0x9E20, 0xF0AF, 0x9E21, 0xBCA6, 0x9E22, 0xF0B0,
+	0x9E23, 0xC3F9, 0x9E24, 0xFB5C, 0x9E25, 0xC5B8, 0x9E26, 0xD1BB,
+	0x9E27, 0xFB5D, 0x9E28, 0xF0B1, 0x9E29, 0xF0B2, 0x9E2A, 0xF0B3,
+	0x9E2B, 0xF0B4, 0x9E2C, 0xF0B5, 0x9E2D, 0xD1BC, 0x9E2E, 0xFB5E,
+	0x9E2F, 0xD1EC, 0x9E30, 0xFB5F, 0x9E31, 0xF0B7, 0x9E32, 0xF0B6,
+	0x9E33, 0xD4A7, 0x9E34, 0xFB60, 0x9E35, 0xCDD2, 0x9E36, 0xF0B8,
+	0x9E37, 0xF0BA, 0x9E38, 0xF0B9, 0x9E39, 0xF0BB, 0x9E3A, 0xF0BC,
+	0x9E3B, 0xFB61, 0x9E3C, 0xFB62, 0x9E3D, 0xB8EB, 0x9E3E, 0xF0BD,
+	0x9E3F, 0xBAE8, 0x9E40, 0xFB63, 0x9E41, 0xF0BE, 0x9E42, 0xF0BF,
+	0x9E43, 0xBEE9, 0x9E44, 0xF0C0, 0x9E45, 0xB6EC, 0x9E46, 0xF0C1,
+	0x9E47, 0xF0C2, 0x9E48, 0xF0C3, 0x9E49, 0xF0C4, 0x9E4A, 0xC8B5,
+	0x9E4B, 0xF0C5, 0x9E4C, 0xF0C6, 0x9E4D, 0xFB64, 0x9E4E, 0xF0C7,
+	0x9E4F, 0xC5F4, 0x9E50, 0xFB65, 0x9E51, 0xF0C8, 0x9E52, 0xFB66,
+	0x9E53, 0xFB67, 0x9E54, 0xFB68, 0x9E55, 0xF0C9, 0x9E56, 0xFB69,
+	0x9E57, 0xF0CA, 0x9E58, 0xF7BD, 0x9E59, 0xFB6A, 0x9E5A, 0xF0CB,
+	0x9E5B, 0xF0CC, 0x9E5C, 0xF0CD, 0x9E5D, 0xFB6B, 0x9E5E, 0xF0CE,
+	0x9E5F, 0xFB6C, 0x9E60, 0xFB6D, 0x9E61, 0xFB6E, 0x9E62, 0xFB6F,
+	0x9E63, 0xF0CF, 0x9E64, 0xBAD7, 0x9E65, 0xFB70, 0x9E66, 0xF0D0,
+	0x9E67, 0xF0D1, 0x9E68, 0xF0D2, 0x9E69, 0xF0D3, 0x9E6A, 0xF0D4,
+	0x9E6B, 0xF0D5, 0x9E6C, 0xF0D6, 0x9E6D, 0xF0D8, 0x9E6E, 0xFB71,
+	0x9E6F, 0xFB72, 0x9E70, 0xD3A5, 0x9E71, 0xF0D7, 0x9E72, 0xFB73,
+	0x9E73, 0xF0D9, 0x9E74, 0xFB74, 0x9E75, 0xFB75, 0x9E76, 0xFB76,
+	0x9E77, 0xFB77, 0x9E78, 0xFB78, 0x9E79, 0xFB79, 0x9E7A, 0xFB7A,
+	0x9E7B, 0xFB7B, 0x9E7C, 0xFB7C, 0x9E7D, 0xFB7D, 0x9E7E, 0xF5BA,
+	0x9E7F, 0xC2B9, 0x9E80, 0xFB7E, 0x9E81, 0xFB80, 0x9E82, 0xF7E4,
+	0x9E83, 0xFB81, 0x9E84, 0xFB82, 0x9E85, 0xFB83, 0x9E86, 0xFB84,
+	0x9E87, 0xF7E5, 0x9E88, 0xF7E6, 0x9E89, 0xFB85, 0x9E8A, 0xFB86,
+	0x9E8B, 0xF7E7, 0x9E8C, 0xFB87, 0x9E8D, 0xFB88, 0x9E8E, 0xFB89,
+	0x9E8F, 0xFB8A, 0x9E90, 0xFB8B, 0x9E91, 0xFB8C, 0x9E92, 0xF7E8,
+	0x9E93, 0xC2B4, 0x9E94, 0xFB8D, 0x9E95, 0xFB8E, 0x9E96, 0xFB8F,
+	0x9E97, 0xFB90, 0x9E98, 0xFB91, 0x9E99, 0xFB92, 0x9E9A, 0xFB93,
+	0x9E9B, 0xFB94, 0x9E9C, 0xFB95, 0x9E9D, 0xF7EA, 0x9E9E, 0xFB96,
+	0x9E9F, 0xF7EB, 0x9EA0, 0xFB97, 0x9EA1, 0xFB98, 0x9EA2, 0xFB99,
+	0x9EA3, 0xFB9A, 0x9EA4, 0xFB9B, 0x9EA5, 0xFB9C, 0x9EA6, 0xC2F3,
+	0x9EA7, 0xFB9D, 0x9EA8, 0xFB9E, 0x9EA9, 0xFB9F, 0x9EAA, 0xFBA0,
+	0x9EAB, 0xFC40, 0x9EAC, 0xFC41, 0x9EAD, 0xFC42, 0x9EAE, 0xFC43,
+	0x9EAF, 0xFC44, 0x9EB0, 0xFC45, 0x9EB1, 0xFC46, 0x9EB2, 0xFC47,
+	0x9EB3, 0xFC48, 0x9EB4, 0xF4F0, 0x9EB5, 0xFC49, 0x9EB6, 0xFC4A,
+	0x9EB7, 0xFC4B, 0x9EB8, 0xF4EF, 0x9EB9, 0xFC4C, 0x9EBA, 0xFC4D,
+	0x9EBB, 0xC2E9, 0x9EBC, 0xFC4E, 0x9EBD, 0xF7E1, 0x9EBE, 0xF7E2,
+	0x9EBF, 0xFC4F, 0x9EC0, 0xFC50, 0x9EC1, 0xFC51, 0x9EC2, 0xFC52,
+	0x9EC3, 0xFC53, 0x9EC4, 0xBBC6, 0x9EC5, 0xFC54, 0x9EC6, 0xFC55,
+	0x9EC7, 0xFC56, 0x9EC8, 0xFC57, 0x9EC9, 0xD9E4, 0x9ECA, 0xFC58,
+	0x9ECB, 0xFC59, 0x9ECC, 0xFC5A, 0x9ECD, 0xCAF2, 0x9ECE, 0xC0E8,
+	0x9ECF, 0xF0A4, 0x9ED0, 0xFC5B, 0x9ED1, 0xBADA, 0x9ED2, 0xFC5C,
+	0x9ED3, 0xFC5D, 0x9ED4, 0xC7AD, 0x9ED5, 0xFC5E, 0x9ED6, 0xFC5F,
+	0x9ED7, 0xFC60, 0x9ED8, 0xC4AC, 0x9ED9, 0xFC61, 0x9EDA, 0xFC62,
+	0x9EDB, 0xF7EC, 0x9EDC, 0xF7ED, 0x9EDD, 0xF7EE, 0x9EDE, 0xFC63,
+	0x9EDF, 0xF7F0, 0x9EE0, 0xF7EF, 0x9EE1, 0xFC64, 0x9EE2, 0xF7F1,
+	0x9EE3, 0xFC65, 0x9EE4, 0xFC66, 0x9EE5, 0xF7F4, 0x9EE6, 0xFC67,
+	0x9EE7, 0xF7F3, 0x9EE8, 0xFC68, 0x9EE9, 0xF7F2, 0x9EEA, 0xF7F5,
+	0x9EEB, 0xFC69, 0x9EEC, 0xFC6A, 0x9EED, 0xFC6B, 0x9EEE, 0xFC6C,
+	0x9EEF, 0xF7F6, 0x9EF0, 0xFC6D, 0x9EF1, 0xFC6E, 0x9EF2, 0xFC6F,
+	0x9EF3, 0xFC70, 0x9EF4, 0xFC71, 0x9EF5, 0xFC72, 0x9EF6, 0xFC73,
+	0x9EF7, 0xFC74, 0x9EF8, 0xFC75, 0x9EF9, 0xEDE9, 0x9EFA, 0xFC76,
+	0x9EFB, 0xEDEA, 0x9EFC, 0xEDEB, 0x9EFD, 0xFC77, 0x9EFE, 0xF6BC,
+	0x9EFF, 0xFC78, 0x9F00, 0xFC79, 0x9F01, 0xFC7A, 0x9F02, 0xFC7B,
+	0x9F03, 0xFC7C, 0x9F04, 0xFC7D, 0x9F05, 0xFC7E, 0x9F06, 0xFC80,
+	0x9F07, 0xFC81, 0x9F08, 0xFC82, 0x9F09, 0xFC83, 0x9F0A, 0xFC84,
+	0x9F0B, 0xF6BD, 0x9F0C, 0xFC85, 0x9F0D, 0xF6BE, 0x9F0E, 0xB6A6,
+	0x9F0F, 0xFC86, 0x9F10, 0xD8BE, 0x9F11, 0xFC87, 0x9F12, 0xFC88,
+	0x9F13, 0xB9C4, 0x9F14, 0xFC89, 0x9F15, 0xFC8A, 0x9F16, 0xFC8B,
+	0x9F17, 0xD8BB, 0x9F18, 0xFC8C, 0x9F19, 0xDCB1, 0x9F1A, 0xFC8D,
+	0x9F1B, 0xFC8E, 0x9F1C, 0xFC8F, 0x9F1D, 0xFC90, 0x9F1E, 0xFC91,
+	0x9F1F, 0xFC92, 0x9F20, 0xCAF3, 0x9F21, 0xFC93, 0x9F22, 0xF7F7,
+	0x9F23, 0xFC94, 0x9F24, 0xFC95, 0x9F25, 0xFC96, 0x9F26, 0xFC97,
+	0x9F27, 0xFC98, 0x9F28, 0xFC99, 0x9F29, 0xFC9A, 0x9F2A, 0xFC9B,
+	0x9F2B, 0xFC9C, 0x9F2C, 0xF7F8, 0x9F2D, 0xFC9D, 0x9F2E, 0xFC9E,
+	0x9F2F, 0xF7F9, 0x9F30, 0xFC9F, 0x9F31, 0xFCA0, 0x9F32, 0xFD40,
+	0x9F33, 0xFD41, 0x9F34, 0xFD42, 0x9F35, 0xFD43, 0x9F36, 0xFD44,
+	0x9F37, 0xF7FB, 0x9F38, 0xFD45, 0x9F39, 0xF7FA, 0x9F3A, 0xFD46,
+	0x9F3B, 0xB1C7, 0x9F3C, 0xFD47, 0x9F3D, 0xF7FC, 0x9F3E, 0xF7FD,
+	0x9F3F, 0xFD48, 0x9F40, 0xFD49, 0x9F41, 0xFD4A, 0x9F42, 0xFD4B,
+	0x9F43, 0xFD4C, 0x9F44, 0xF7FE, 0x9F45, 0xFD4D, 0x9F46, 0xFD4E,
+	0x9F47, 0xFD4F, 0x9F48, 0xFD50, 0x9F49, 0xFD51, 0x9F4A, 0xFD52,
+	0x9F4B, 0xFD53, 0x9F4C, 0xFD54, 0x9F4D, 0xFD55, 0x9F4E, 0xFD56,
+	0x9F4F, 0xFD57, 0x9F50, 0xC6EB, 0x9F51, 0xECB4, 0x9F52, 0xFD58,
+	0x9F53, 0xFD59, 0x9F54, 0xFD5A, 0x9F55, 0xFD5B, 0x9F56, 0xFD5C,
+	0x9F57, 0xFD5D, 0x9F58, 0xFD5E, 0x9F59, 0xFD5F, 0x9F5A, 0xFD60,
+	0x9F5B, 0xFD61, 0x9F5C, 0xFD62, 0x9F5D, 0xFD63, 0x9F5E, 0xFD64,
+	0x9F5F, 0xFD65, 0x9F60, 0xFD66, 0x9F61, 0xFD67, 0x9F62, 0xFD68,
+	0x9F63, 0xFD69, 0x9F64, 0xFD6A, 0x9F65, 0xFD6B, 0x9F66, 0xFD6C,
+	0x9F67, 0xFD6D, 0x9F68, 0xFD6E, 0x9F69, 0xFD6F, 0x9F6A, 0xFD70,
+	0x9F6B, 0xFD71, 0x9F6C, 0xFD72, 0x9F6D, 0xFD73, 0x9F6E, 0xFD74,
+	0x9F6F, 0xFD75, 0x9F70, 0xFD76, 0x9F71, 0xFD77, 0x9F72, 0xFD78,
+	0x9F73, 0xFD79, 0x9F74, 0xFD7A, 0x9F75, 0xFD7B, 0x9F76, 0xFD7C,
+	0x9F77, 0xFD7D, 0x9F78, 0xFD7E, 0x9F79, 0xFD80, 0x9F7A, 0xFD81,
+	0x9F7B, 0xFD82, 0x9F7C, 0xFD83, 0x9F7D, 0xFD84, 0x9F7E, 0xFD85,
+	0x9F7F, 0xB3DD, 0x9F80, 0xF6B3, 0x9F81, 0xFD86, 0x9F82, 0xFD87,
+	0x9F83, 0xF6B4, 0x9F84, 0xC1E4, 0x9F85, 0xF6B5, 0x9F86, 0xF6B6,
+	0x9F87, 0xF6B7, 0x9F88, 0xF6B8, 0x9F89, 0xF6B9, 0x9F8A, 0xF6BA,
+	0x9F8B, 0xC8A3, 0x9F8C, 0xF6BB, 0x9F8D, 0xFD88, 0x9F8E, 0xFD89,
+	0x9F8F, 0xFD8A, 0x9F90, 0xFD8B, 0x9F91, 0xFD8C, 0x9F92, 0xFD8D,
+	0x9F93, 0xFD8E, 0x9F94, 0xFD8F, 0x9F95, 0xFD90, 0x9F96, 0xFD91,
+	0x9F97, 0xFD92, 0x9F98, 0xFD93, 0x9F99, 0xC1FA, 0x9F9A, 0xB9A8,
+	0x9F9B, 0xEDE8, 0x9F9C, 0xFD94, 0x9F9D, 0xFD95, 0x9F9E, 0xFD96,
+	0x9F9F, 0xB9EA, 0x9FA0, 0xD9DF, 0x9FA1, 0xFD97, 0x9FA2, 0xFD98,
+	0x9FA3, 0xFD99, 0x9FA4, 0xFD9A, 0x9FA5, 0xFD9B, 0xF92C, 0xFD9C,
+	0xF979, 0xFD9D, 0xF995, 0xFD9E, 0xF9E7, 0xFD9F, 0xF9F1, 0xFDA0,
+	0xFA0C, 0xFE40, 0xFA0D, 0xFE41, 0xFA0E, 0xFE42, 0xFA0F, 0xFE43,
+	0xFA11, 0xFE44, 0xFA13, 0xFE45, 0xFA14, 0xFE46, 0xFA18, 0xFE47,
+	0xFA1F, 0xFE48, 0xFA20, 0xFE49, 0xFA21, 0xFE4A, 0xFA23, 0xFE4B,
+	0xFA24, 0xFE4C, 0xFA27, 0xFE4D, 0xFA28, 0xFE4E, 0xFA29, 0xFE4F,
+	0xFE30, 0xA955, 0xFE31, 0xA6F2, 0xFE33, 0xA6F4, 0xFE34, 0xA6F5,
+	0xFE35, 0xA6E0, 0xFE36, 0xA6E1, 0xFE37, 0xA6F0, 0xFE38, 0xA6F1,
+	0xFE39, 0xA6E2, 0xFE3A, 0xA6E3, 0xFE3B, 0xA6EE, 0xFE3C, 0xA6EF,
+	0xFE3D, 0xA6E6, 0xFE3E, 0xA6E7, 0xFE3F, 0xA6E4, 0xFE40, 0xA6E5,
+	0xFE41, 0xA6E8, 0xFE42, 0xA6E9, 0xFE43, 0xA6EA, 0xFE44, 0xA6EB,
+	0xFE49, 0xA968, 0xFE4A, 0xA969, 0xFE4B, 0xA96A, 0xFE4C, 0xA96B,
+	0xFE4D, 0xA96C, 0xFE4E, 0xA96D, 0xFE4F, 0xA96E, 0xFE50, 0xA96F,
+	0xFE51, 0xA970, 0xFE52, 0xA971, 0xFE54, 0xA972, 0xFE55, 0xA973,
+	0xFE56, 0xA974, 0xFE57, 0xA975, 0xFE59, 0xA976, 0xFE5A, 0xA977,
+	0xFE5B, 0xA978, 0xFE5C, 0xA979, 0xFE5D, 0xA97A, 0xFE5E, 0xA97B,
+	0xFE5F, 0xA97C, 0xFE60, 0xA97D, 0xFE61, 0xA97E, 0xFE62, 0xA980,
+	0xFE63, 0xA981, 0xFE64, 0xA982, 0xFE65, 0xA983, 0xFE66, 0xA984,
+	0xFE68, 0xA985, 0xFE69, 0xA986, 0xFE6A, 0xA987, 0xFE6B, 0xA988,
+	0xFF01, 0xA3A1, 0xFF02, 0xA3A2, 0xFF03, 0xA3A3, 0xFF04, 0xA1E7,
+	0xFF05, 0xA3A5, 0xFF06, 0xA3A6, 0xFF07, 0xA3A7, 0xFF08, 0xA3A8,
+	0xFF09, 0xA3A9, 0xFF0A, 0xA3AA, 0xFF0B, 0xA3AB, 0xFF0C, 0xA3AC,
+	0xFF0D, 0xA3AD, 0xFF0E, 0xA3AE, 0xFF0F, 0xA3AF, 0xFF10, 0xA3B0,
+	0xFF11, 0xA3B1, 0xFF12, 0xA3B2, 0xFF13, 0xA3B3, 0xFF14, 0xA3B4,
+	0xFF15, 0xA3B5, 0xFF16, 0xA3B6, 0xFF17, 0xA3B7, 0xFF18, 0xA3B8,
+	0xFF19, 0xA3B9, 0xFF1A, 0xA3BA, 0xFF1B, 0xA3BB, 0xFF1C, 0xA3BC,
+	0xFF1D, 0xA3BD, 0xFF1E, 0xA3BE, 0xFF1F, 0xA3BF, 0xFF20, 0xA3C0,
+	0xFF21, 0xA3C1, 0xFF22, 0xA3C2, 0xFF23, 0xA3C3, 0xFF24, 0xA3C4,
+	0xFF25, 0xA3C5, 0xFF26, 0xA3C6, 0xFF27, 0xA3C7, 0xFF28, 0xA3C8,
+	0xFF29, 0xA3C9, 0xFF2A, 0xA3CA, 0xFF2B, 0xA3CB, 0xFF2C, 0xA3CC,
+	0xFF2D, 0xA3CD, 0xFF2E, 0xA3CE, 0xFF2F, 0xA3CF, 0xFF30, 0xA3D0,
+	0xFF31, 0xA3D1, 0xFF32, 0xA3D2, 0xFF33, 0xA3D3, 0xFF34, 0xA3D4,
+	0xFF35, 0xA3D5, 0xFF36, 0xA3D6, 0xFF37, 0xA3D7, 0xFF38, 0xA3D8,
+	0xFF39, 0xA3D9, 0xFF3A, 0xA3DA, 0xFF3B, 0xA3DB, 0xFF3C, 0xA3DC,
+	0xFF3D, 0xA3DD, 0xFF3E, 0xA3DE, 0xFF3F, 0xA3DF, 0xFF40, 0xA3E0,
+	0xFF41, 0xA3E1, 0xFF42, 0xA3E2, 0xFF43, 0xA3E3, 0xFF44, 0xA3E4,
+	0xFF45, 0xA3E5, 0xFF46, 0xA3E6, 0xFF47, 0xA3E7, 0xFF48, 0xA3E8,
+	0xFF49, 0xA3E9, 0xFF4A, 0xA3EA, 0xFF4B, 0xA3EB, 0xFF4C, 0xA3EC,
+	0xFF4D, 0xA3ED, 0xFF4E, 0xA3EE, 0xFF4F, 0xA3EF, 0xFF50, 0xA3F0,
+	0xFF51, 0xA3F1, 0xFF52, 0xA3F2, 0xFF53, 0xA3F3, 0xFF54, 0xA3F4,
+	0xFF55, 0xA3F5, 0xFF56, 0xA3F6, 0xFF57, 0xA3F7, 0xFF58, 0xA3F8,
+	0xFF59, 0xA3F9, 0xFF5A, 0xA3FA, 0xFF5B, 0xA3FB, 0xFF5C, 0xA3FC,
+	0xFF5D, 0xA3FD, 0xFF5E, 0xA1AB, 0xFFE0, 0xA1E9, 0xFFE1, 0xA1EA,
+	0xFFE2, 0xA956, 0xFFE3, 0xA3FE, 0xFFE4, 0xA957, 0xFFE5, 0xA3A4,
+	0, 0
+};
+
+static
+const WCHAR oem2uni[] = {
+/*	OEM - Unicode,  OEM - Unicode,  OEM - Unicode,  OEM - Unicode */
+	0x0080, 0x20AC, 0x8140, 0x4E02, 0x8141, 0x4E04, 0x8142, 0x4E05,
+	0x8143, 0x4E06, 0x8144, 0x4E0F, 0x8145, 0x4E12, 0x8146, 0x4E17,
+	0x8147, 0x4E1F, 0x8148, 0x4E20, 0x8149, 0x4E21, 0x814A, 0x4E23,
+	0x814B, 0x4E26, 0x814C, 0x4E29, 0x814D, 0x4E2E, 0x814E, 0x4E2F,
+	0x814F, 0x4E31, 0x8150, 0x4E33, 0x8151, 0x4E35, 0x8152, 0x4E37,
+	0x8153, 0x4E3C, 0x8154, 0x4E40, 0x8155, 0x4E41, 0x8156, 0x4E42,
+	0x8157, 0x4E44, 0x8158, 0x4E46, 0x8159, 0x4E4A, 0x815A, 0x4E51,
+	0x815B, 0x4E55, 0x815C, 0x4E57, 0x815D, 0x4E5A, 0x815E, 0x4E5B,
+	0x815F, 0x4E62, 0x8160, 0x4E63, 0x8161, 0x4E64, 0x8162, 0x4E65,
+	0x8163, 0x4E67, 0x8164, 0x4E68, 0x8165, 0x4E6A, 0x8166, 0x4E6B,
+	0x8167, 0x4E6C, 0x8168, 0x4E6D, 0x8169, 0x4E6E, 0x816A, 0x4E6F,
+	0x816B, 0x4E72, 0x816C, 0x4E74, 0x816D, 0x4E75, 0x816E, 0x4E76,
+	0x816F, 0x4E77, 0x8170, 0x4E78, 0x8171, 0x4E79, 0x8172, 0x4E7A,
+	0x8173, 0x4E7B, 0x8174, 0x4E7C, 0x8175, 0x4E7D, 0x8176, 0x4E7F,
+	0x8177, 0x4E80, 0x8178, 0x4E81, 0x8179, 0x4E82, 0x817A, 0x4E83,
+	0x817B, 0x4E84, 0x817C, 0x4E85, 0x817D, 0x4E87, 0x817E, 0x4E8A,
+	0x8180, 0x4E90, 0x8181, 0x4E96, 0x8182, 0x4E97, 0x8183, 0x4E99,
+	0x8184, 0x4E9C, 0x8185, 0x4E9D, 0x8186, 0x4E9E, 0x8187, 0x4EA3,
+	0x8188, 0x4EAA, 0x8189, 0x4EAF, 0x818A, 0x4EB0, 0x818B, 0x4EB1,
+	0x818C, 0x4EB4, 0x818D, 0x4EB6, 0x818E, 0x4EB7, 0x818F, 0x4EB8,
+	0x8190, 0x4EB9, 0x8191, 0x4EBC, 0x8192, 0x4EBD, 0x8193, 0x4EBE,
+	0x8194, 0x4EC8, 0x8195, 0x4ECC, 0x8196, 0x4ECF, 0x8197, 0x4ED0,
+	0x8198, 0x4ED2, 0x8199, 0x4EDA, 0x819A, 0x4EDB, 0x819B, 0x4EDC,
+	0x819C, 0x4EE0, 0x819D, 0x4EE2, 0x819E, 0x4EE6, 0x819F, 0x4EE7,
+	0x81A0, 0x4EE9, 0x81A1, 0x4EED, 0x81A2, 0x4EEE, 0x81A3, 0x4EEF,
+	0x81A4, 0x4EF1, 0x81A5, 0x4EF4, 0x81A6, 0x4EF8, 0x81A7, 0x4EF9,
+	0x81A8, 0x4EFA, 0x81A9, 0x4EFC, 0x81AA, 0x4EFE, 0x81AB, 0x4F00,
+	0x81AC, 0x4F02, 0x81AD, 0x4F03, 0x81AE, 0x4F04, 0x81AF, 0x4F05,
+	0x81B0, 0x4F06, 0x81B1, 0x4F07, 0x81B2, 0x4F08, 0x81B3, 0x4F0B,
+	0x81B4, 0x4F0C, 0x81B5, 0x4F12, 0x81B6, 0x4F13, 0x81B7, 0x4F14,
+	0x81B8, 0x4F15, 0x81B9, 0x4F16, 0x81BA, 0x4F1C, 0x81BB, 0x4F1D,
+	0x81BC, 0x4F21, 0x81BD, 0x4F23, 0x81BE, 0x4F28, 0x81BF, 0x4F29,
+	0x81C0, 0x4F2C, 0x81C1, 0x4F2D, 0x81C2, 0x4F2E, 0x81C3, 0x4F31,
+	0x81C4, 0x4F33, 0x81C5, 0x4F35, 0x81C6, 0x4F37, 0x81C7, 0x4F39,
+	0x81C8, 0x4F3B, 0x81C9, 0x4F3E, 0x81CA, 0x4F3F, 0x81CB, 0x4F40,
+	0x81CC, 0x4F41, 0x81CD, 0x4F42, 0x81CE, 0x4F44, 0x81CF, 0x4F45,
+	0x81D0, 0x4F47, 0x81D1, 0x4F48, 0x81D2, 0x4F49, 0x81D3, 0x4F4A,
+	0x81D4, 0x4F4B, 0x81D5, 0x4F4C, 0x81D6, 0x4F52, 0x81D7, 0x4F54,
+	0x81D8, 0x4F56, 0x81D9, 0x4F61, 0x81DA, 0x4F62, 0x81DB, 0x4F66,
+	0x81DC, 0x4F68, 0x81DD, 0x4F6A, 0x81DE, 0x4F6B, 0x81DF, 0x4F6D,
+	0x81E0, 0x4F6E, 0x81E1, 0x4F71, 0x81E2, 0x4F72, 0x81E3, 0x4F75,
+	0x81E4, 0x4F77, 0x81E5, 0x4F78, 0x81E6, 0x4F79, 0x81E7, 0x4F7A,
+	0x81E8, 0x4F7D, 0x81E9, 0x4F80, 0x81EA, 0x4F81, 0x81EB, 0x4F82,
+	0x81EC, 0x4F85, 0x81ED, 0x4F86, 0x81EE, 0x4F87, 0x81EF, 0x4F8A,
+	0x81F0, 0x4F8C, 0x81F1, 0x4F8E, 0x81F2, 0x4F90, 0x81F3, 0x4F92,
+	0x81F4, 0x4F93, 0x81F5, 0x4F95, 0x81F6, 0x4F96, 0x81F7, 0x4F98,
+	0x81F8, 0x4F99, 0x81F9, 0x4F9A, 0x81FA, 0x4F9C, 0x81FB, 0x4F9E,
+	0x81FC, 0x4F9F, 0x81FD, 0x4FA1, 0x81FE, 0x4FA2, 0x8240, 0x4FA4,
+	0x8241, 0x4FAB, 0x8242, 0x4FAD, 0x8243, 0x4FB0, 0x8244, 0x4FB1,
+	0x8245, 0x4FB2, 0x8246, 0x4FB3, 0x8247, 0x4FB4, 0x8248, 0x4FB6,
+	0x8249, 0x4FB7, 0x824A, 0x4FB8, 0x824B, 0x4FB9, 0x824C, 0x4FBA,
+	0x824D, 0x4FBB, 0x824E, 0x4FBC, 0x824F, 0x4FBD, 0x8250, 0x4FBE,
+	0x8251, 0x4FC0, 0x8252, 0x4FC1, 0x8253, 0x4FC2, 0x8254, 0x4FC6,
+	0x8255, 0x4FC7, 0x8256, 0x4FC8, 0x8257, 0x4FC9, 0x8258, 0x4FCB,
+	0x8259, 0x4FCC, 0x825A, 0x4FCD, 0x825B, 0x4FD2, 0x825C, 0x4FD3,
+	0x825D, 0x4FD4, 0x825E, 0x4FD5, 0x825F, 0x4FD6, 0x8260, 0x4FD9,
+	0x8261, 0x4FDB, 0x8262, 0x4FE0, 0x8263, 0x4FE2, 0x8264, 0x4FE4,
+	0x8265, 0x4FE5, 0x8266, 0x4FE7, 0x8267, 0x4FEB, 0x8268, 0x4FEC,
+	0x8269, 0x4FF0, 0x826A, 0x4FF2, 0x826B, 0x4FF4, 0x826C, 0x4FF5,
+	0x826D, 0x4FF6, 0x826E, 0x4FF7, 0x826F, 0x4FF9, 0x8270, 0x4FFB,
+	0x8271, 0x4FFC, 0x8272, 0x4FFD, 0x8273, 0x4FFF, 0x8274, 0x5000,
+	0x8275, 0x5001, 0x8276, 0x5002, 0x8277, 0x5003, 0x8278, 0x5004,
+	0x8279, 0x5005, 0x827A, 0x5006, 0x827B, 0x5007, 0x827C, 0x5008,
+	0x827D, 0x5009, 0x827E, 0x500A, 0x8280, 0x500B, 0x8281, 0x500E,
+	0x8282, 0x5010, 0x8283, 0x5011, 0x8284, 0x5013, 0x8285, 0x5015,
+	0x8286, 0x5016, 0x8287, 0x5017, 0x8288, 0x501B, 0x8289, 0x501D,
+	0x828A, 0x501E, 0x828B, 0x5020, 0x828C, 0x5022, 0x828D, 0x5023,
+	0x828E, 0x5024, 0x828F, 0x5027, 0x8290, 0x502B, 0x8291, 0x502F,
+	0x8292, 0x5030, 0x8293, 0x5031, 0x8294, 0x5032, 0x8295, 0x5033,
+	0x8296, 0x5034, 0x8297, 0x5035, 0x8298, 0x5036, 0x8299, 0x5037,
+	0x829A, 0x5038, 0x829B, 0x5039, 0x829C, 0x503B, 0x829D, 0x503D,
+	0x829E, 0x503F, 0x829F, 0x5040, 0x82A0, 0x5041, 0x82A1, 0x5042,
+	0x82A2, 0x5044, 0x82A3, 0x5045, 0x82A4, 0x5046, 0x82A5, 0x5049,
+	0x82A6, 0x504A, 0x82A7, 0x504B, 0x82A8, 0x504D, 0x82A9, 0x5050,
+	0x82AA, 0x5051, 0x82AB, 0x5052, 0x82AC, 0x5053, 0x82AD, 0x5054,
+	0x82AE, 0x5056, 0x82AF, 0x5057, 0x82B0, 0x5058, 0x82B1, 0x5059,
+	0x82B2, 0x505B, 0x82B3, 0x505D, 0x82B4, 0x505E, 0x82B5, 0x505F,
+	0x82B6, 0x5060, 0x82B7, 0x5061, 0x82B8, 0x5062, 0x82B9, 0x5063,
+	0x82BA, 0x5064, 0x82BB, 0x5066, 0x82BC, 0x5067, 0x82BD, 0x5068,
+	0x82BE, 0x5069, 0x82BF, 0x506A, 0x82C0, 0x506B, 0x82C1, 0x506D,
+	0x82C2, 0x506E, 0x82C3, 0x506F, 0x82C4, 0x5070, 0x82C5, 0x5071,
+	0x82C6, 0x5072, 0x82C7, 0x5073, 0x82C8, 0x5074, 0x82C9, 0x5075,
+	0x82CA, 0x5078, 0x82CB, 0x5079, 0x82CC, 0x507A, 0x82CD, 0x507C,
+	0x82CE, 0x507D, 0x82CF, 0x5081, 0x82D0, 0x5082, 0x82D1, 0x5083,
+	0x82D2, 0x5084, 0x82D3, 0x5086, 0x82D4, 0x5087, 0x82D5, 0x5089,
+	0x82D6, 0x508A, 0x82D7, 0x508B, 0x82D8, 0x508C, 0x82D9, 0x508E,
+	0x82DA, 0x508F, 0x82DB, 0x5090, 0x82DC, 0x5091, 0x82DD, 0x5092,
+	0x82DE, 0x5093, 0x82DF, 0x5094, 0x82E0, 0x5095, 0x82E1, 0x5096,
+	0x82E2, 0x5097, 0x82E3, 0x5098, 0x82E4, 0x5099, 0x82E5, 0x509A,
+	0x82E6, 0x509B, 0x82E7, 0x509C, 0x82E8, 0x509D, 0x82E9, 0x509E,
+	0x82EA, 0x509F, 0x82EB, 0x50A0, 0x82EC, 0x50A1, 0x82ED, 0x50A2,
+	0x82EE, 0x50A4, 0x82EF, 0x50A6, 0x82F0, 0x50AA, 0x82F1, 0x50AB,
+	0x82F2, 0x50AD, 0x82F3, 0x50AE, 0x82F4, 0x50AF, 0x82F5, 0x50B0,
+	0x82F6, 0x50B1, 0x82F7, 0x50B3, 0x82F8, 0x50B4, 0x82F9, 0x50B5,
+	0x82FA, 0x50B6, 0x82FB, 0x50B7, 0x82FC, 0x50B8, 0x82FD, 0x50B9,
+	0x82FE, 0x50BC, 0x8340, 0x50BD, 0x8341, 0x50BE, 0x8342, 0x50BF,
+	0x8343, 0x50C0, 0x8344, 0x50C1, 0x8345, 0x50C2, 0x8346, 0x50C3,
+	0x8347, 0x50C4, 0x8348, 0x50C5, 0x8349, 0x50C6, 0x834A, 0x50C7,
+	0x834B, 0x50C8, 0x834C, 0x50C9, 0x834D, 0x50CA, 0x834E, 0x50CB,
+	0x834F, 0x50CC, 0x8350, 0x50CD, 0x8351, 0x50CE, 0x8352, 0x50D0,
+	0x8353, 0x50D1, 0x8354, 0x50D2, 0x8355, 0x50D3, 0x8356, 0x50D4,
+	0x8357, 0x50D5, 0x8358, 0x50D7, 0x8359, 0x50D8, 0x835A, 0x50D9,
+	0x835B, 0x50DB, 0x835C, 0x50DC, 0x835D, 0x50DD, 0x835E, 0x50DE,
+	0x835F, 0x50DF, 0x8360, 0x50E0, 0x8361, 0x50E1, 0x8362, 0x50E2,
+	0x8363, 0x50E3, 0x8364, 0x50E4, 0x8365, 0x50E5, 0x8366, 0x50E8,
+	0x8367, 0x50E9, 0x8368, 0x50EA, 0x8369, 0x50EB, 0x836A, 0x50EF,
+	0x836B, 0x50F0, 0x836C, 0x50F1, 0x836D, 0x50F2, 0x836E, 0x50F4,
+	0x836F, 0x50F6, 0x8370, 0x50F7, 0x8371, 0x50F8, 0x8372, 0x50F9,
+	0x8373, 0x50FA, 0x8374, 0x50FC, 0x8375, 0x50FD, 0x8376, 0x50FE,
+	0x8377, 0x50FF, 0x8378, 0x5100, 0x8379, 0x5101, 0x837A, 0x5102,
+	0x837B, 0x5103, 0x837C, 0x5104, 0x837D, 0x5105, 0x837E, 0x5108,
+	0x8380, 0x5109, 0x8381, 0x510A, 0x8382, 0x510C, 0x8383, 0x510D,
+	0x8384, 0x510E, 0x8385, 0x510F, 0x8386, 0x5110, 0x8387, 0x5111,
+	0x8388, 0x5113, 0x8389, 0x5114, 0x838A, 0x5115, 0x838B, 0x5116,
+	0x838C, 0x5117, 0x838D, 0x5118, 0x838E, 0x5119, 0x838F, 0x511A,
+	0x8390, 0x511B, 0x8391, 0x511C, 0x8392, 0x511D, 0x8393, 0x511E,
+	0x8394, 0x511F, 0x8395, 0x5120, 0x8396, 0x5122, 0x8397, 0x5123,
+	0x8398, 0x5124, 0x8399, 0x5125, 0x839A, 0x5126, 0x839B, 0x5127,
+	0x839C, 0x5128, 0x839D, 0x5129, 0x839E, 0x512A, 0x839F, 0x512B,
+	0x83A0, 0x512C, 0x83A1, 0x512D, 0x83A2, 0x512E, 0x83A3, 0x512F,
+	0x83A4, 0x5130, 0x83A5, 0x5131, 0x83A6, 0x5132, 0x83A7, 0x5133,
+	0x83A8, 0x5134, 0x83A9, 0x5135, 0x83AA, 0x5136, 0x83AB, 0x5137,
+	0x83AC, 0x5138, 0x83AD, 0x5139, 0x83AE, 0x513A, 0x83AF, 0x513B,
+	0x83B0, 0x513C, 0x83B1, 0x513D, 0x83B2, 0x513E, 0x83B3, 0x5142,
+	0x83B4, 0x5147, 0x83B5, 0x514A, 0x83B6, 0x514C, 0x83B7, 0x514E,
+	0x83B8, 0x514F, 0x83B9, 0x5150, 0x83BA, 0x5152, 0x83BB, 0x5153,
+	0x83BC, 0x5157, 0x83BD, 0x5158, 0x83BE, 0x5159, 0x83BF, 0x515B,
+	0x83C0, 0x515D, 0x83C1, 0x515E, 0x83C2, 0x515F, 0x83C3, 0x5160,
+	0x83C4, 0x5161, 0x83C5, 0x5163, 0x83C6, 0x5164, 0x83C7, 0x5166,
+	0x83C8, 0x5167, 0x83C9, 0x5169, 0x83CA, 0x516A, 0x83CB, 0x516F,
+	0x83CC, 0x5172, 0x83CD, 0x517A, 0x83CE, 0x517E, 0x83CF, 0x517F,
+	0x83D0, 0x5183, 0x83D1, 0x5184, 0x83D2, 0x5186, 0x83D3, 0x5187,
+	0x83D4, 0x518A, 0x83D5, 0x518B, 0x83D6, 0x518E, 0x83D7, 0x518F,
+	0x83D8, 0x5190, 0x83D9, 0x5191, 0x83DA, 0x5193, 0x83DB, 0x5194,
+	0x83DC, 0x5198, 0x83DD, 0x519A, 0x83DE, 0x519D, 0x83DF, 0x519E,
+	0x83E0, 0x519F, 0x83E1, 0x51A1, 0x83E2, 0x51A3, 0x83E3, 0x51A6,
+	0x83E4, 0x51A7, 0x83E5, 0x51A8, 0x83E6, 0x51A9, 0x83E7, 0x51AA,
+	0x83E8, 0x51AD, 0x83E9, 0x51AE, 0x83EA, 0x51B4, 0x83EB, 0x51B8,
+	0x83EC, 0x51B9, 0x83ED, 0x51BA, 0x83EE, 0x51BE, 0x83EF, 0x51BF,
+	0x83F0, 0x51C1, 0x83F1, 0x51C2, 0x83F2, 0x51C3, 0x83F3, 0x51C5,
+	0x83F4, 0x51C8, 0x83F5, 0x51CA, 0x83F6, 0x51CD, 0x83F7, 0x51CE,
+	0x83F8, 0x51D0, 0x83F9, 0x51D2, 0x83FA, 0x51D3, 0x83FB, 0x51D4,
+	0x83FC, 0x51D5, 0x83FD, 0x51D6, 0x83FE, 0x51D7, 0x8440, 0x51D8,
+	0x8441, 0x51D9, 0x8442, 0x51DA, 0x8443, 0x51DC, 0x8444, 0x51DE,
+	0x8445, 0x51DF, 0x8446, 0x51E2, 0x8447, 0x51E3, 0x8448, 0x51E5,
+	0x8449, 0x51E6, 0x844A, 0x51E7, 0x844B, 0x51E8, 0x844C, 0x51E9,
+	0x844D, 0x51EA, 0x844E, 0x51EC, 0x844F, 0x51EE, 0x8450, 0x51F1,
+	0x8451, 0x51F2, 0x8452, 0x51F4, 0x8453, 0x51F7, 0x8454, 0x51FE,
+	0x8455, 0x5204, 0x8456, 0x5205, 0x8457, 0x5209, 0x8458, 0x520B,
+	0x8459, 0x520C, 0x845A, 0x520F, 0x845B, 0x5210, 0x845C, 0x5213,
+	0x845D, 0x5214, 0x845E, 0x5215, 0x845F, 0x521C, 0x8460, 0x521E,
+	0x8461, 0x521F, 0x8462, 0x5221, 0x8463, 0x5222, 0x8464, 0x5223,
+	0x8465, 0x5225, 0x8466, 0x5226, 0x8467, 0x5227, 0x8468, 0x522A,
+	0x8469, 0x522C, 0x846A, 0x522F, 0x846B, 0x5231, 0x846C, 0x5232,
+	0x846D, 0x5234, 0x846E, 0x5235, 0x846F, 0x523C, 0x8470, 0x523E,
+	0x8471, 0x5244, 0x8472, 0x5245, 0x8473, 0x5246, 0x8474, 0x5247,
+	0x8475, 0x5248, 0x8476, 0x5249, 0x8477, 0x524B, 0x8478, 0x524E,
+	0x8479, 0x524F, 0x847A, 0x5252, 0x847B, 0x5253, 0x847C, 0x5255,
+	0x847D, 0x5257, 0x847E, 0x5258, 0x8480, 0x5259, 0x8481, 0x525A,
+	0x8482, 0x525B, 0x8483, 0x525D, 0x8484, 0x525F, 0x8485, 0x5260,
+	0x8486, 0x5262, 0x8487, 0x5263, 0x8488, 0x5264, 0x8489, 0x5266,
+	0x848A, 0x5268, 0x848B, 0x526B, 0x848C, 0x526C, 0x848D, 0x526D,
+	0x848E, 0x526E, 0x848F, 0x5270, 0x8490, 0x5271, 0x8491, 0x5273,
+	0x8492, 0x5274, 0x8493, 0x5275, 0x8494, 0x5276, 0x8495, 0x5277,
+	0x8496, 0x5278, 0x8497, 0x5279, 0x8498, 0x527A, 0x8499, 0x527B,
+	0x849A, 0x527C, 0x849B, 0x527E, 0x849C, 0x5280, 0x849D, 0x5283,
+	0x849E, 0x5284, 0x849F, 0x5285, 0x84A0, 0x5286, 0x84A1, 0x5287,
+	0x84A2, 0x5289, 0x84A3, 0x528A, 0x84A4, 0x528B, 0x84A5, 0x528C,
+	0x84A6, 0x528D, 0x84A7, 0x528E, 0x84A8, 0x528F, 0x84A9, 0x5291,
+	0x84AA, 0x5292, 0x84AB, 0x5294, 0x84AC, 0x5295, 0x84AD, 0x5296,
+	0x84AE, 0x5297, 0x84AF, 0x5298, 0x84B0, 0x5299, 0x84B1, 0x529A,
+	0x84B2, 0x529C, 0x84B3, 0x52A4, 0x84B4, 0x52A5, 0x84B5, 0x52A6,
+	0x84B6, 0x52A7, 0x84B7, 0x52AE, 0x84B8, 0x52AF, 0x84B9, 0x52B0,
+	0x84BA, 0x52B4, 0x84BB, 0x52B5, 0x84BC, 0x52B6, 0x84BD, 0x52B7,
+	0x84BE, 0x52B8, 0x84BF, 0x52B9, 0x84C0, 0x52BA, 0x84C1, 0x52BB,
+	0x84C2, 0x52BC, 0x84C3, 0x52BD, 0x84C4, 0x52C0, 0x84C5, 0x52C1,
+	0x84C6, 0x52C2, 0x84C7, 0x52C4, 0x84C8, 0x52C5, 0x84C9, 0x52C6,
+	0x84CA, 0x52C8, 0x84CB, 0x52CA, 0x84CC, 0x52CC, 0x84CD, 0x52CD,
+	0x84CE, 0x52CE, 0x84CF, 0x52CF, 0x84D0, 0x52D1, 0x84D1, 0x52D3,
+	0x84D2, 0x52D4, 0x84D3, 0x52D5, 0x84D4, 0x52D7, 0x84D5, 0x52D9,
+	0x84D6, 0x52DA, 0x84D7, 0x52DB, 0x84D8, 0x52DC, 0x84D9, 0x52DD,
+	0x84DA, 0x52DE, 0x84DB, 0x52E0, 0x84DC, 0x52E1, 0x84DD, 0x52E2,
+	0x84DE, 0x52E3, 0x84DF, 0x52E5, 0x84E0, 0x52E6, 0x84E1, 0x52E7,
+	0x84E2, 0x52E8, 0x84E3, 0x52E9, 0x84E4, 0x52EA, 0x84E5, 0x52EB,
+	0x84E6, 0x52EC, 0x84E7, 0x52ED, 0x84E8, 0x52EE, 0x84E9, 0x52EF,
+	0x84EA, 0x52F1, 0x84EB, 0x52F2, 0x84EC, 0x52F3, 0x84ED, 0x52F4,
+	0x84EE, 0x52F5, 0x84EF, 0x52F6, 0x84F0, 0x52F7, 0x84F1, 0x52F8,
+	0x84F2, 0x52FB, 0x84F3, 0x52FC, 0x84F4, 0x52FD, 0x84F5, 0x5301,
+	0x84F6, 0x5302, 0x84F7, 0x5303, 0x84F8, 0x5304, 0x84F9, 0x5307,
+	0x84FA, 0x5309, 0x84FB, 0x530A, 0x84FC, 0x530B, 0x84FD, 0x530C,
+	0x84FE, 0x530E, 0x8540, 0x5311, 0x8541, 0x5312, 0x8542, 0x5313,
+	0x8543, 0x5314, 0x8544, 0x5318, 0x8545, 0x531B, 0x8546, 0x531C,
+	0x8547, 0x531E, 0x8548, 0x531F, 0x8549, 0x5322, 0x854A, 0x5324,
+	0x854B, 0x5325, 0x854C, 0x5327, 0x854D, 0x5328, 0x854E, 0x5329,
+	0x854F, 0x532B, 0x8550, 0x532C, 0x8551, 0x532D, 0x8552, 0x532F,
+	0x8553, 0x5330, 0x8554, 0x5331, 0x8555, 0x5332, 0x8556, 0x5333,
+	0x8557, 0x5334, 0x8558, 0x5335, 0x8559, 0x5336, 0x855A, 0x5337,
+	0x855B, 0x5338, 0x855C, 0x533C, 0x855D, 0x533D, 0x855E, 0x5340,
+	0x855F, 0x5342, 0x8560, 0x5344, 0x8561, 0x5346, 0x8562, 0x534B,
+	0x8563, 0x534C, 0x8564, 0x534D, 0x8565, 0x5350, 0x8566, 0x5354,
+	0x8567, 0x5358, 0x8568, 0x5359, 0x8569, 0x535B, 0x856A, 0x535D,
+	0x856B, 0x5365, 0x856C, 0x5368, 0x856D, 0x536A, 0x856E, 0x536C,
+	0x856F, 0x536D, 0x8570, 0x5372, 0x8571, 0x5376, 0x8572, 0x5379,
+	0x8573, 0x537B, 0x8574, 0x537C, 0x8575, 0x537D, 0x8576, 0x537E,
+	0x8577, 0x5380, 0x8578, 0x5381, 0x8579, 0x5383, 0x857A, 0x5387,
+	0x857B, 0x5388, 0x857C, 0x538A, 0x857D, 0x538E, 0x857E, 0x538F,
+	0x8580, 0x5390, 0x8581, 0x5391, 0x8582, 0x5392, 0x8583, 0x5393,
+	0x8584, 0x5394, 0x8585, 0x5396, 0x8586, 0x5397, 0x8587, 0x5399,
+	0x8588, 0x539B, 0x8589, 0x539C, 0x858A, 0x539E, 0x858B, 0x53A0,
+	0x858C, 0x53A1, 0x858D, 0x53A4, 0x858E, 0x53A7, 0x858F, 0x53AA,
+	0x8590, 0x53AB, 0x8591, 0x53AC, 0x8592, 0x53AD, 0x8593, 0x53AF,
+	0x8594, 0x53B0, 0x8595, 0x53B1, 0x8596, 0x53B2, 0x8597, 0x53B3,
+	0x8598, 0x53B4, 0x8599, 0x53B5, 0x859A, 0x53B7, 0x859B, 0x53B8,
+	0x859C, 0x53B9, 0x859D, 0x53BA, 0x859E, 0x53BC, 0x859F, 0x53BD,
+	0x85A0, 0x53BE, 0x85A1, 0x53C0, 0x85A2, 0x53C3, 0x85A3, 0x53C4,
+	0x85A4, 0x53C5, 0x85A5, 0x53C6, 0x85A6, 0x53C7, 0x85A7, 0x53CE,
+	0x85A8, 0x53CF, 0x85A9, 0x53D0, 0x85AA, 0x53D2, 0x85AB, 0x53D3,
+	0x85AC, 0x53D5, 0x85AD, 0x53DA, 0x85AE, 0x53DC, 0x85AF, 0x53DD,
+	0x85B0, 0x53DE, 0x85B1, 0x53E1, 0x85B2, 0x53E2, 0x85B3, 0x53E7,
+	0x85B4, 0x53F4, 0x85B5, 0x53FA, 0x85B6, 0x53FE, 0x85B7, 0x53FF,
+	0x85B8, 0x5400, 0x85B9, 0x5402, 0x85BA, 0x5405, 0x85BB, 0x5407,
+	0x85BC, 0x540B, 0x85BD, 0x5414, 0x85BE, 0x5418, 0x85BF, 0x5419,
+	0x85C0, 0x541A, 0x85C1, 0x541C, 0x85C2, 0x5422, 0x85C3, 0x5424,
+	0x85C4, 0x5425, 0x85C5, 0x542A, 0x85C6, 0x5430, 0x85C7, 0x5433,
+	0x85C8, 0x5436, 0x85C9, 0x5437, 0x85CA, 0x543A, 0x85CB, 0x543D,
+	0x85CC, 0x543F, 0x85CD, 0x5441, 0x85CE, 0x5442, 0x85CF, 0x5444,
+	0x85D0, 0x5445, 0x85D1, 0x5447, 0x85D2, 0x5449, 0x85D3, 0x544C,
+	0x85D4, 0x544D, 0x85D5, 0x544E, 0x85D6, 0x544F, 0x85D7, 0x5451,
+	0x85D8, 0x545A, 0x85D9, 0x545D, 0x85DA, 0x545E, 0x85DB, 0x545F,
+	0x85DC, 0x5460, 0x85DD, 0x5461, 0x85DE, 0x5463, 0x85DF, 0x5465,
+	0x85E0, 0x5467, 0x85E1, 0x5469, 0x85E2, 0x546A, 0x85E3, 0x546B,
+	0x85E4, 0x546C, 0x85E5, 0x546D, 0x85E6, 0x546E, 0x85E7, 0x546F,
+	0x85E8, 0x5470, 0x85E9, 0x5474, 0x85EA, 0x5479, 0x85EB, 0x547A,
+	0x85EC, 0x547E, 0x85ED, 0x547F, 0x85EE, 0x5481, 0x85EF, 0x5483,
+	0x85F0, 0x5485, 0x85F1, 0x5487, 0x85F2, 0x5488, 0x85F3, 0x5489,
+	0x85F4, 0x548A, 0x85F5, 0x548D, 0x85F6, 0x5491, 0x85F7, 0x5493,
+	0x85F8, 0x5497, 0x85F9, 0x5498, 0x85FA, 0x549C, 0x85FB, 0x549E,
+	0x85FC, 0x549F, 0x85FD, 0x54A0, 0x85FE, 0x54A1, 0x8640, 0x54A2,
+	0x8641, 0x54A5, 0x8642, 0x54AE, 0x8643, 0x54B0, 0x8644, 0x54B2,
+	0x8645, 0x54B5, 0x8646, 0x54B6, 0x8647, 0x54B7, 0x8648, 0x54B9,
+	0x8649, 0x54BA, 0x864A, 0x54BC, 0x864B, 0x54BE, 0x864C, 0x54C3,
+	0x864D, 0x54C5, 0x864E, 0x54CA, 0x864F, 0x54CB, 0x8650, 0x54D6,
+	0x8651, 0x54D8, 0x8652, 0x54DB, 0x8653, 0x54E0, 0x8654, 0x54E1,
+	0x8655, 0x54E2, 0x8656, 0x54E3, 0x8657, 0x54E4, 0x8658, 0x54EB,
+	0x8659, 0x54EC, 0x865A, 0x54EF, 0x865B, 0x54F0, 0x865C, 0x54F1,
+	0x865D, 0x54F4, 0x865E, 0x54F5, 0x865F, 0x54F6, 0x8660, 0x54F7,
+	0x8661, 0x54F8, 0x8662, 0x54F9, 0x8663, 0x54FB, 0x8664, 0x54FE,
+	0x8665, 0x5500, 0x8666, 0x5502, 0x8667, 0x5503, 0x8668, 0x5504,
+	0x8669, 0x5505, 0x866A, 0x5508, 0x866B, 0x550A, 0x866C, 0x550B,
+	0x866D, 0x550C, 0x866E, 0x550D, 0x866F, 0x550E, 0x8670, 0x5512,
+	0x8671, 0x5513, 0x8672, 0x5515, 0x8673, 0x5516, 0x8674, 0x5517,
+	0x8675, 0x5518, 0x8676, 0x5519, 0x8677, 0x551A, 0x8678, 0x551C,
+	0x8679, 0x551D, 0x867A, 0x551E, 0x867B, 0x551F, 0x867C, 0x5521,
+	0x867D, 0x5525, 0x867E, 0x5526, 0x8680, 0x5528, 0x8681, 0x5529,
+	0x8682, 0x552B, 0x8683, 0x552D, 0x8684, 0x5532, 0x8685, 0x5534,
+	0x8686, 0x5535, 0x8687, 0x5536, 0x8688, 0x5538, 0x8689, 0x5539,
+	0x868A, 0x553A, 0x868B, 0x553B, 0x868C, 0x553D, 0x868D, 0x5540,
+	0x868E, 0x5542, 0x868F, 0x5545, 0x8690, 0x5547, 0x8691, 0x5548,
+	0x8692, 0x554B, 0x8693, 0x554C, 0x8694, 0x554D, 0x8695, 0x554E,
+	0x8696, 0x554F, 0x8697, 0x5551, 0x8698, 0x5552, 0x8699, 0x5553,
+	0x869A, 0x5554, 0x869B, 0x5557, 0x869C, 0x5558, 0x869D, 0x5559,
+	0x869E, 0x555A, 0x869F, 0x555B, 0x86A0, 0x555D, 0x86A1, 0x555E,
+	0x86A2, 0x555F, 0x86A3, 0x5560, 0x86A4, 0x5562, 0x86A5, 0x5563,
+	0x86A6, 0x5568, 0x86A7, 0x5569, 0x86A8, 0x556B, 0x86A9, 0x556F,
+	0x86AA, 0x5570, 0x86AB, 0x5571, 0x86AC, 0x5572, 0x86AD, 0x5573,
+	0x86AE, 0x5574, 0x86AF, 0x5579, 0x86B0, 0x557A, 0x86B1, 0x557D,
+	0x86B2, 0x557F, 0x86B3, 0x5585, 0x86B4, 0x5586, 0x86B5, 0x558C,
+	0x86B6, 0x558D, 0x86B7, 0x558E, 0x86B8, 0x5590, 0x86B9, 0x5592,
+	0x86BA, 0x5593, 0x86BB, 0x5595, 0x86BC, 0x5596, 0x86BD, 0x5597,
+	0x86BE, 0x559A, 0x86BF, 0x559B, 0x86C0, 0x559E, 0x86C1, 0x55A0,
+	0x86C2, 0x55A1, 0x86C3, 0x55A2, 0x86C4, 0x55A3, 0x86C5, 0x55A4,
+	0x86C6, 0x55A5, 0x86C7, 0x55A6, 0x86C8, 0x55A8, 0x86C9, 0x55A9,
+	0x86CA, 0x55AA, 0x86CB, 0x55AB, 0x86CC, 0x55AC, 0x86CD, 0x55AD,
+	0x86CE, 0x55AE, 0x86CF, 0x55AF, 0x86D0, 0x55B0, 0x86D1, 0x55B2,
+	0x86D2, 0x55B4, 0x86D3, 0x55B6, 0x86D4, 0x55B8, 0x86D5, 0x55BA,
+	0x86D6, 0x55BC, 0x86D7, 0x55BF, 0x86D8, 0x55C0, 0x86D9, 0x55C1,
+	0x86DA, 0x55C2, 0x86DB, 0x55C3, 0x86DC, 0x55C6, 0x86DD, 0x55C7,
+	0x86DE, 0x55C8, 0x86DF, 0x55CA, 0x86E0, 0x55CB, 0x86E1, 0x55CE,
+	0x86E2, 0x55CF, 0x86E3, 0x55D0, 0x86E4, 0x55D5, 0x86E5, 0x55D7,
+	0x86E6, 0x55D8, 0x86E7, 0x55D9, 0x86E8, 0x55DA, 0x86E9, 0x55DB,
+	0x86EA, 0x55DE, 0x86EB, 0x55E0, 0x86EC, 0x55E2, 0x86ED, 0x55E7,
+	0x86EE, 0x55E9, 0x86EF, 0x55ED, 0x86F0, 0x55EE, 0x86F1, 0x55F0,
+	0x86F2, 0x55F1, 0x86F3, 0x55F4, 0x86F4, 0x55F6, 0x86F5, 0x55F8,
+	0x86F6, 0x55F9, 0x86F7, 0x55FA, 0x86F8, 0x55FB, 0x86F9, 0x55FC,
+	0x86FA, 0x55FF, 0x86FB, 0x5602, 0x86FC, 0x5603, 0x86FD, 0x5604,
+	0x86FE, 0x5605, 0x8740, 0x5606, 0x8741, 0x5607, 0x8742, 0x560A,
+	0x8743, 0x560B, 0x8744, 0x560D, 0x8745, 0x5610, 0x8746, 0x5611,
+	0x8747, 0x5612, 0x8748, 0x5613, 0x8749, 0x5614, 0x874A, 0x5615,
+	0x874B, 0x5616, 0x874C, 0x5617, 0x874D, 0x5619, 0x874E, 0x561A,
+	0x874F, 0x561C, 0x8750, 0x561D, 0x8751, 0x5620, 0x8752, 0x5621,
+	0x8753, 0x5622, 0x8754, 0x5625, 0x8755, 0x5626, 0x8756, 0x5628,
+	0x8757, 0x5629, 0x8758, 0x562A, 0x8759, 0x562B, 0x875A, 0x562E,
+	0x875B, 0x562F, 0x875C, 0x5630, 0x875D, 0x5633, 0x875E, 0x5635,
+	0x875F, 0x5637, 0x8760, 0x5638, 0x8761, 0x563A, 0x8762, 0x563C,
+	0x8763, 0x563D, 0x8764, 0x563E, 0x8765, 0x5640, 0x8766, 0x5641,
+	0x8767, 0x5642, 0x8768, 0x5643, 0x8769, 0x5644, 0x876A, 0x5645,
+	0x876B, 0x5646, 0x876C, 0x5647, 0x876D, 0x5648, 0x876E, 0x5649,
+	0x876F, 0x564A, 0x8770, 0x564B, 0x8771, 0x564F, 0x8772, 0x5650,
+	0x8773, 0x5651, 0x8774, 0x5652, 0x8775, 0x5653, 0x8776, 0x5655,
+	0x8777, 0x5656, 0x8778, 0x565A, 0x8779, 0x565B, 0x877A, 0x565D,
+	0x877B, 0x565E, 0x877C, 0x565F, 0x877D, 0x5660, 0x877E, 0x5661,
+	0x8780, 0x5663, 0x8781, 0x5665, 0x8782, 0x5666, 0x8783, 0x5667,
+	0x8784, 0x566D, 0x8785, 0x566E, 0x8786, 0x566F, 0x8787, 0x5670,
+	0x8788, 0x5672, 0x8789, 0x5673, 0x878A, 0x5674, 0x878B, 0x5675,
+	0x878C, 0x5677, 0x878D, 0x5678, 0x878E, 0x5679, 0x878F, 0x567A,
+	0x8790, 0x567D, 0x8791, 0x567E, 0x8792, 0x567F, 0x8793, 0x5680,
+	0x8794, 0x5681, 0x8795, 0x5682, 0x8796, 0x5683, 0x8797, 0x5684,
+	0x8798, 0x5687, 0x8799, 0x5688, 0x879A, 0x5689, 0x879B, 0x568A,
+	0x879C, 0x568B, 0x879D, 0x568C, 0x879E, 0x568D, 0x879F, 0x5690,
+	0x87A0, 0x5691, 0x87A1, 0x5692, 0x87A2, 0x5694, 0x87A3, 0x5695,
+	0x87A4, 0x5696, 0x87A5, 0x5697, 0x87A6, 0x5698, 0x87A7, 0x5699,
+	0x87A8, 0x569A, 0x87A9, 0x569B, 0x87AA, 0x569C, 0x87AB, 0x569D,
+	0x87AC, 0x569E, 0x87AD, 0x569F, 0x87AE, 0x56A0, 0x87AF, 0x56A1,
+	0x87B0, 0x56A2, 0x87B1, 0x56A4, 0x87B2, 0x56A5, 0x87B3, 0x56A6,
+	0x87B4, 0x56A7, 0x87B5, 0x56A8, 0x87B6, 0x56A9, 0x87B7, 0x56AA,
+	0x87B8, 0x56AB, 0x87B9, 0x56AC, 0x87BA, 0x56AD, 0x87BB, 0x56AE,
+	0x87BC, 0x56B0, 0x87BD, 0x56B1, 0x87BE, 0x56B2, 0x87BF, 0x56B3,
+	0x87C0, 0x56B4, 0x87C1, 0x56B5, 0x87C2, 0x56B6, 0x87C3, 0x56B8,
+	0x87C4, 0x56B9, 0x87C5, 0x56BA, 0x87C6, 0x56BB, 0x87C7, 0x56BD,
+	0x87C8, 0x56BE, 0x87C9, 0x56BF, 0x87CA, 0x56C0, 0x87CB, 0x56C1,
+	0x87CC, 0x56C2, 0x87CD, 0x56C3, 0x87CE, 0x56C4, 0x87CF, 0x56C5,
+	0x87D0, 0x56C6, 0x87D1, 0x56C7, 0x87D2, 0x56C8, 0x87D3, 0x56C9,
+	0x87D4, 0x56CB, 0x87D5, 0x56CC, 0x87D6, 0x56CD, 0x87D7, 0x56CE,
+	0x87D8, 0x56CF, 0x87D9, 0x56D0, 0x87DA, 0x56D1, 0x87DB, 0x56D2,
+	0x87DC, 0x56D3, 0x87DD, 0x56D5, 0x87DE, 0x56D6, 0x87DF, 0x56D8,
+	0x87E0, 0x56D9, 0x87E1, 0x56DC, 0x87E2, 0x56E3, 0x87E3, 0x56E5,
+	0x87E4, 0x56E6, 0x87E5, 0x56E7, 0x87E6, 0x56E8, 0x87E7, 0x56E9,
+	0x87E8, 0x56EA, 0x87E9, 0x56EC, 0x87EA, 0x56EE, 0x87EB, 0x56EF,
+	0x87EC, 0x56F2, 0x87ED, 0x56F3, 0x87EE, 0x56F6, 0x87EF, 0x56F7,
+	0x87F0, 0x56F8, 0x87F1, 0x56FB, 0x87F2, 0x56FC, 0x87F3, 0x5700,
+	0x87F4, 0x5701, 0x87F5, 0x5702, 0x87F6, 0x5705, 0x87F7, 0x5707,
+	0x87F8, 0x570B, 0x87F9, 0x570C, 0x87FA, 0x570D, 0x87FB, 0x570E,
+	0x87FC, 0x570F, 0x87FD, 0x5710, 0x87FE, 0x5711, 0x8840, 0x5712,
+	0x8841, 0x5713, 0x8842, 0x5714, 0x8843, 0x5715, 0x8844, 0x5716,
+	0x8845, 0x5717, 0x8846, 0x5718, 0x8847, 0x5719, 0x8848, 0x571A,
+	0x8849, 0x571B, 0x884A, 0x571D, 0x884B, 0x571E, 0x884C, 0x5720,
+	0x884D, 0x5721, 0x884E, 0x5722, 0x884F, 0x5724, 0x8850, 0x5725,
+	0x8851, 0x5726, 0x8852, 0x5727, 0x8853, 0x572B, 0x8854, 0x5731,
+	0x8855, 0x5732, 0x8856, 0x5734, 0x8857, 0x5735, 0x8858, 0x5736,
+	0x8859, 0x5737, 0x885A, 0x5738, 0x885B, 0x573C, 0x885C, 0x573D,
+	0x885D, 0x573F, 0x885E, 0x5741, 0x885F, 0x5743, 0x8860, 0x5744,
+	0x8861, 0x5745, 0x8862, 0x5746, 0x8863, 0x5748, 0x8864, 0x5749,
+	0x8865, 0x574B, 0x8866, 0x5752, 0x8867, 0x5753, 0x8868, 0x5754,
+	0x8869, 0x5755, 0x886A, 0x5756, 0x886B, 0x5758, 0x886C, 0x5759,
+	0x886D, 0x5762, 0x886E, 0x5763, 0x886F, 0x5765, 0x8870, 0x5767,
+	0x8871, 0x576C, 0x8872, 0x576E, 0x8873, 0x5770, 0x8874, 0x5771,
+	0x8875, 0x5772, 0x8876, 0x5774, 0x8877, 0x5775, 0x8878, 0x5778,
+	0x8879, 0x5779, 0x887A, 0x577A, 0x887B, 0x577D, 0x887C, 0x577E,
+	0x887D, 0x577F, 0x887E, 0x5780, 0x8880, 0x5781, 0x8881, 0x5787,
+	0x8882, 0x5788, 0x8883, 0x5789, 0x8884, 0x578A, 0x8885, 0x578D,
+	0x8886, 0x578E, 0x8887, 0x578F, 0x8888, 0x5790, 0x8889, 0x5791,
+	0x888A, 0x5794, 0x888B, 0x5795, 0x888C, 0x5796, 0x888D, 0x5797,
+	0x888E, 0x5798, 0x888F, 0x5799, 0x8890, 0x579A, 0x8891, 0x579C,
+	0x8892, 0x579D, 0x8893, 0x579E, 0x8894, 0x579F, 0x8895, 0x57A5,
+	0x8896, 0x57A8, 0x8897, 0x57AA, 0x8898, 0x57AC, 0x8899, 0x57AF,
+	0x889A, 0x57B0, 0x889B, 0x57B1, 0x889C, 0x57B3, 0x889D, 0x57B5,
+	0x889E, 0x57B6, 0x889F, 0x57B7, 0x88A0, 0x57B9, 0x88A1, 0x57BA,
+	0x88A2, 0x57BB, 0x88A3, 0x57BC, 0x88A4, 0x57BD, 0x88A5, 0x57BE,
+	0x88A6, 0x57BF, 0x88A7, 0x57C0, 0x88A8, 0x57C1, 0x88A9, 0x57C4,
+	0x88AA, 0x57C5, 0x88AB, 0x57C6, 0x88AC, 0x57C7, 0x88AD, 0x57C8,
+	0x88AE, 0x57C9, 0x88AF, 0x57CA, 0x88B0, 0x57CC, 0x88B1, 0x57CD,
+	0x88B2, 0x57D0, 0x88B3, 0x57D1, 0x88B4, 0x57D3, 0x88B5, 0x57D6,
+	0x88B6, 0x57D7, 0x88B7, 0x57DB, 0x88B8, 0x57DC, 0x88B9, 0x57DE,
+	0x88BA, 0x57E1, 0x88BB, 0x57E2, 0x88BC, 0x57E3, 0x88BD, 0x57E5,
+	0x88BE, 0x57E6, 0x88BF, 0x57E7, 0x88C0, 0x57E8, 0x88C1, 0x57E9,
+	0x88C2, 0x57EA, 0x88C3, 0x57EB, 0x88C4, 0x57EC, 0x88C5, 0x57EE,
+	0x88C6, 0x57F0, 0x88C7, 0x57F1, 0x88C8, 0x57F2, 0x88C9, 0x57F3,
+	0x88CA, 0x57F5, 0x88CB, 0x57F6, 0x88CC, 0x57F7, 0x88CD, 0x57FB,
+	0x88CE, 0x57FC, 0x88CF, 0x57FE, 0x88D0, 0x57FF, 0x88D1, 0x5801,
+	0x88D2, 0x5803, 0x88D3, 0x5804, 0x88D4, 0x5805, 0x88D5, 0x5808,
+	0x88D6, 0x5809, 0x88D7, 0x580A, 0x88D8, 0x580C, 0x88D9, 0x580E,
+	0x88DA, 0x580F, 0x88DB, 0x5810, 0x88DC, 0x5812, 0x88DD, 0x5813,
+	0x88DE, 0x5814, 0x88DF, 0x5816, 0x88E0, 0x5817, 0x88E1, 0x5818,
+	0x88E2, 0x581A, 0x88E3, 0x581B, 0x88E4, 0x581C, 0x88E5, 0x581D,
+	0x88E6, 0x581F, 0x88E7, 0x5822, 0x88E8, 0x5823, 0x88E9, 0x5825,
+	0x88EA, 0x5826, 0x88EB, 0x5827, 0x88EC, 0x5828, 0x88ED, 0x5829,
+	0x88EE, 0x582B, 0x88EF, 0x582C, 0x88F0, 0x582D, 0x88F1, 0x582E,
+	0x88F2, 0x582F, 0x88F3, 0x5831, 0x88F4, 0x5832, 0x88F5, 0x5833,
+	0x88F6, 0x5834, 0x88F7, 0x5836, 0x88F8, 0x5837, 0x88F9, 0x5838,
+	0x88FA, 0x5839, 0x88FB, 0x583A, 0x88FC, 0x583B, 0x88FD, 0x583C,
+	0x88FE, 0x583D, 0x8940, 0x583E, 0x8941, 0x583F, 0x8942, 0x5840,
+	0x8943, 0x5841, 0x8944, 0x5842, 0x8945, 0x5843, 0x8946, 0x5845,
+	0x8947, 0x5846, 0x8948, 0x5847, 0x8949, 0x5848, 0x894A, 0x5849,
+	0x894B, 0x584A, 0x894C, 0x584B, 0x894D, 0x584E, 0x894E, 0x584F,
+	0x894F, 0x5850, 0x8950, 0x5852, 0x8951, 0x5853, 0x8952, 0x5855,
+	0x8953, 0x5856, 0x8954, 0x5857, 0x8955, 0x5859, 0x8956, 0x585A,
+	0x8957, 0x585B, 0x8958, 0x585C, 0x8959, 0x585D, 0x895A, 0x585F,
+	0x895B, 0x5860, 0x895C, 0x5861, 0x895D, 0x5862, 0x895E, 0x5863,
+	0x895F, 0x5864, 0x8960, 0x5866, 0x8961, 0x5867, 0x8962, 0x5868,
+	0x8963, 0x5869, 0x8964, 0x586A, 0x8965, 0x586D, 0x8966, 0x586E,
+	0x8967, 0x586F, 0x8968, 0x5870, 0x8969, 0x5871, 0x896A, 0x5872,
+	0x896B, 0x5873, 0x896C, 0x5874, 0x896D, 0x5875, 0x896E, 0x5876,
+	0x896F, 0x5877, 0x8970, 0x5878, 0x8971, 0x5879, 0x8972, 0x587A,
+	0x8973, 0x587B, 0x8974, 0x587C, 0x8975, 0x587D, 0x8976, 0x587F,
+	0x8977, 0x5882, 0x8978, 0x5884, 0x8979, 0x5886, 0x897A, 0x5887,
+	0x897B, 0x5888, 0x897C, 0x588A, 0x897D, 0x588B, 0x897E, 0x588C,
+	0x8980, 0x588D, 0x8981, 0x588E, 0x8982, 0x588F, 0x8983, 0x5890,
+	0x8984, 0x5891, 0x8985, 0x5894, 0x8986, 0x5895, 0x8987, 0x5896,
+	0x8988, 0x5897, 0x8989, 0x5898, 0x898A, 0x589B, 0x898B, 0x589C,
+	0x898C, 0x589D, 0x898D, 0x58A0, 0x898E, 0x58A1, 0x898F, 0x58A2,
+	0x8990, 0x58A3, 0x8991, 0x58A4, 0x8992, 0x58A5, 0x8993, 0x58A6,
+	0x8994, 0x58A7, 0x8995, 0x58AA, 0x8996, 0x58AB, 0x8997, 0x58AC,
+	0x8998, 0x58AD, 0x8999, 0x58AE, 0x899A, 0x58AF, 0x899B, 0x58B0,
+	0x899C, 0x58B1, 0x899D, 0x58B2, 0x899E, 0x58B3, 0x899F, 0x58B4,
+	0x89A0, 0x58B5, 0x89A1, 0x58B6, 0x89A2, 0x58B7, 0x89A3, 0x58B8,
+	0x89A4, 0x58B9, 0x89A5, 0x58BA, 0x89A6, 0x58BB, 0x89A7, 0x58BD,
+	0x89A8, 0x58BE, 0x89A9, 0x58BF, 0x89AA, 0x58C0, 0x89AB, 0x58C2,
+	0x89AC, 0x58C3, 0x89AD, 0x58C4, 0x89AE, 0x58C6, 0x89AF, 0x58C7,
+	0x89B0, 0x58C8, 0x89B1, 0x58C9, 0x89B2, 0x58CA, 0x89B3, 0x58CB,
+	0x89B4, 0x58CC, 0x89B5, 0x58CD, 0x89B6, 0x58CE, 0x89B7, 0x58CF,
+	0x89B8, 0x58D0, 0x89B9, 0x58D2, 0x89BA, 0x58D3, 0x89BB, 0x58D4,
+	0x89BC, 0x58D6, 0x89BD, 0x58D7, 0x89BE, 0x58D8, 0x89BF, 0x58D9,
+	0x89C0, 0x58DA, 0x89C1, 0x58DB, 0x89C2, 0x58DC, 0x89C3, 0x58DD,
+	0x89C4, 0x58DE, 0x89C5, 0x58DF, 0x89C6, 0x58E0, 0x89C7, 0x58E1,
+	0x89C8, 0x58E2, 0x89C9, 0x58E3, 0x89CA, 0x58E5, 0x89CB, 0x58E6,
+	0x89CC, 0x58E7, 0x89CD, 0x58E8, 0x89CE, 0x58E9, 0x89CF, 0x58EA,
+	0x89D0, 0x58ED, 0x89D1, 0x58EF, 0x89D2, 0x58F1, 0x89D3, 0x58F2,
+	0x89D4, 0x58F4, 0x89D5, 0x58F5, 0x89D6, 0x58F7, 0x89D7, 0x58F8,
+	0x89D8, 0x58FA, 0x89D9, 0x58FB, 0x89DA, 0x58FC, 0x89DB, 0x58FD,
+	0x89DC, 0x58FE, 0x89DD, 0x58FF, 0x89DE, 0x5900, 0x89DF, 0x5901,
+	0x89E0, 0x5903, 0x89E1, 0x5905, 0x89E2, 0x5906, 0x89E3, 0x5908,
+	0x89E4, 0x5909, 0x89E5, 0x590A, 0x89E6, 0x590B, 0x89E7, 0x590C,
+	0x89E8, 0x590E, 0x89E9, 0x5910, 0x89EA, 0x5911, 0x89EB, 0x5912,
+	0x89EC, 0x5913, 0x89ED, 0x5917, 0x89EE, 0x5918, 0x89EF, 0x591B,
+	0x89F0, 0x591D, 0x89F1, 0x591E, 0x89F2, 0x5920, 0x89F3, 0x5921,
+	0x89F4, 0x5922, 0x89F5, 0x5923, 0x89F6, 0x5926, 0x89F7, 0x5928,
+	0x89F8, 0x592C, 0x89F9, 0x5930, 0x89FA, 0x5932, 0x89FB, 0x5933,
+	0x89FC, 0x5935, 0x89FD, 0x5936, 0x89FE, 0x593B, 0x8A40, 0x593D,
+	0x8A41, 0x593E, 0x8A42, 0x593F, 0x8A43, 0x5940, 0x8A44, 0x5943,
+	0x8A45, 0x5945, 0x8A46, 0x5946, 0x8A47, 0x594A, 0x8A48, 0x594C,
+	0x8A49, 0x594D, 0x8A4A, 0x5950, 0x8A4B, 0x5952, 0x8A4C, 0x5953,
+	0x8A4D, 0x5959, 0x8A4E, 0x595B, 0x8A4F, 0x595C, 0x8A50, 0x595D,
+	0x8A51, 0x595E, 0x8A52, 0x595F, 0x8A53, 0x5961, 0x8A54, 0x5963,
+	0x8A55, 0x5964, 0x8A56, 0x5966, 0x8A57, 0x5967, 0x8A58, 0x5968,
+	0x8A59, 0x5969, 0x8A5A, 0x596A, 0x8A5B, 0x596B, 0x8A5C, 0x596C,
+	0x8A5D, 0x596D, 0x8A5E, 0x596E, 0x8A5F, 0x596F, 0x8A60, 0x5970,
+	0x8A61, 0x5971, 0x8A62, 0x5972, 0x8A63, 0x5975, 0x8A64, 0x5977,
+	0x8A65, 0x597A, 0x8A66, 0x597B, 0x8A67, 0x597C, 0x8A68, 0x597E,
+	0x8A69, 0x597F, 0x8A6A, 0x5980, 0x8A6B, 0x5985, 0x8A6C, 0x5989,
+	0x8A6D, 0x598B, 0x8A6E, 0x598C, 0x8A6F, 0x598E, 0x8A70, 0x598F,
+	0x8A71, 0x5990, 0x8A72, 0x5991, 0x8A73, 0x5994, 0x8A74, 0x5995,
+	0x8A75, 0x5998, 0x8A76, 0x599A, 0x8A77, 0x599B, 0x8A78, 0x599C,
+	0x8A79, 0x599D, 0x8A7A, 0x599F, 0x8A7B, 0x59A0, 0x8A7C, 0x59A1,
+	0x8A7D, 0x59A2, 0x8A7E, 0x59A6, 0x8A80, 0x59A7, 0x8A81, 0x59AC,
+	0x8A82, 0x59AD, 0x8A83, 0x59B0, 0x8A84, 0x59B1, 0x8A85, 0x59B3,
+	0x8A86, 0x59B4, 0x8A87, 0x59B5, 0x8A88, 0x59B6, 0x8A89, 0x59B7,
+	0x8A8A, 0x59B8, 0x8A8B, 0x59BA, 0x8A8C, 0x59BC, 0x8A8D, 0x59BD,
+	0x8A8E, 0x59BF, 0x8A8F, 0x59C0, 0x8A90, 0x59C1, 0x8A91, 0x59C2,
+	0x8A92, 0x59C3, 0x8A93, 0x59C4, 0x8A94, 0x59C5, 0x8A95, 0x59C7,
+	0x8A96, 0x59C8, 0x8A97, 0x59C9, 0x8A98, 0x59CC, 0x8A99, 0x59CD,
+	0x8A9A, 0x59CE, 0x8A9B, 0x59CF, 0x8A9C, 0x59D5, 0x8A9D, 0x59D6,
+	0x8A9E, 0x59D9, 0x8A9F, 0x59DB, 0x8AA0, 0x59DE, 0x8AA1, 0x59DF,
+	0x8AA2, 0x59E0, 0x8AA3, 0x59E1, 0x8AA4, 0x59E2, 0x8AA5, 0x59E4,
+	0x8AA6, 0x59E6, 0x8AA7, 0x59E7, 0x8AA8, 0x59E9, 0x8AA9, 0x59EA,
+	0x8AAA, 0x59EB, 0x8AAB, 0x59ED, 0x8AAC, 0x59EE, 0x8AAD, 0x59EF,
+	0x8AAE, 0x59F0, 0x8AAF, 0x59F1, 0x8AB0, 0x59F2, 0x8AB1, 0x59F3,
+	0x8AB2, 0x59F4, 0x8AB3, 0x59F5, 0x8AB4, 0x59F6, 0x8AB5, 0x59F7,
+	0x8AB6, 0x59F8, 0x8AB7, 0x59FA, 0x8AB8, 0x59FC, 0x8AB9, 0x59FD,
+	0x8ABA, 0x59FE, 0x8ABB, 0x5A00, 0x8ABC, 0x5A02, 0x8ABD, 0x5A0A,
+	0x8ABE, 0x5A0B, 0x8ABF, 0x5A0D, 0x8AC0, 0x5A0E, 0x8AC1, 0x5A0F,
+	0x8AC2, 0x5A10, 0x8AC3, 0x5A12, 0x8AC4, 0x5A14, 0x8AC5, 0x5A15,
+	0x8AC6, 0x5A16, 0x8AC7, 0x5A17, 0x8AC8, 0x5A19, 0x8AC9, 0x5A1A,
+	0x8ACA, 0x5A1B, 0x8ACB, 0x5A1D, 0x8ACC, 0x5A1E, 0x8ACD, 0x5A21,
+	0x8ACE, 0x5A22, 0x8ACF, 0x5A24, 0x8AD0, 0x5A26, 0x8AD1, 0x5A27,
+	0x8AD2, 0x5A28, 0x8AD3, 0x5A2A, 0x8AD4, 0x5A2B, 0x8AD5, 0x5A2C,
+	0x8AD6, 0x5A2D, 0x8AD7, 0x5A2E, 0x8AD8, 0x5A2F, 0x8AD9, 0x5A30,
+	0x8ADA, 0x5A33, 0x8ADB, 0x5A35, 0x8ADC, 0x5A37, 0x8ADD, 0x5A38,
+	0x8ADE, 0x5A39, 0x8ADF, 0x5A3A, 0x8AE0, 0x5A3B, 0x8AE1, 0x5A3D,
+	0x8AE2, 0x5A3E, 0x8AE3, 0x5A3F, 0x8AE4, 0x5A41, 0x8AE5, 0x5A42,
+	0x8AE6, 0x5A43, 0x8AE7, 0x5A44, 0x8AE8, 0x5A45, 0x8AE9, 0x5A47,
+	0x8AEA, 0x5A48, 0x8AEB, 0x5A4B, 0x8AEC, 0x5A4C, 0x8AED, 0x5A4D,
+	0x8AEE, 0x5A4E, 0x8AEF, 0x5A4F, 0x8AF0, 0x5A50, 0x8AF1, 0x5A51,
+	0x8AF2, 0x5A52, 0x8AF3, 0x5A53, 0x8AF4, 0x5A54, 0x8AF5, 0x5A56,
+	0x8AF6, 0x5A57, 0x8AF7, 0x5A58, 0x8AF8, 0x5A59, 0x8AF9, 0x5A5B,
+	0x8AFA, 0x5A5C, 0x8AFB, 0x5A5D, 0x8AFC, 0x5A5E, 0x8AFD, 0x5A5F,
+	0x8AFE, 0x5A60, 0x8B40, 0x5A61, 0x8B41, 0x5A63, 0x8B42, 0x5A64,
+	0x8B43, 0x5A65, 0x8B44, 0x5A66, 0x8B45, 0x5A68, 0x8B46, 0x5A69,
+	0x8B47, 0x5A6B, 0x8B48, 0x5A6C, 0x8B49, 0x5A6D, 0x8B4A, 0x5A6E,
+	0x8B4B, 0x5A6F, 0x8B4C, 0x5A70, 0x8B4D, 0x5A71, 0x8B4E, 0x5A72,
+	0x8B4F, 0x5A73, 0x8B50, 0x5A78, 0x8B51, 0x5A79, 0x8B52, 0x5A7B,
+	0x8B53, 0x5A7C, 0x8B54, 0x5A7D, 0x8B55, 0x5A7E, 0x8B56, 0x5A80,
+	0x8B57, 0x5A81, 0x8B58, 0x5A82, 0x8B59, 0x5A83, 0x8B5A, 0x5A84,
+	0x8B5B, 0x5A85, 0x8B5C, 0x5A86, 0x8B5D, 0x5A87, 0x8B5E, 0x5A88,
+	0x8B5F, 0x5A89, 0x8B60, 0x5A8A, 0x8B61, 0x5A8B, 0x8B62, 0x5A8C,
+	0x8B63, 0x5A8D, 0x8B64, 0x5A8E, 0x8B65, 0x5A8F, 0x8B66, 0x5A90,
+	0x8B67, 0x5A91, 0x8B68, 0x5A93, 0x8B69, 0x5A94, 0x8B6A, 0x5A95,
+	0x8B6B, 0x5A96, 0x8B6C, 0x5A97, 0x8B6D, 0x5A98, 0x8B6E, 0x5A99,
+	0x8B6F, 0x5A9C, 0x8B70, 0x5A9D, 0x8B71, 0x5A9E, 0x8B72, 0x5A9F,
+	0x8B73, 0x5AA0, 0x8B74, 0x5AA1, 0x8B75, 0x5AA2, 0x8B76, 0x5AA3,
+	0x8B77, 0x5AA4, 0x8B78, 0x5AA5, 0x8B79, 0x5AA6, 0x8B7A, 0x5AA7,
+	0x8B7B, 0x5AA8, 0x8B7C, 0x5AA9, 0x8B7D, 0x5AAB, 0x8B7E, 0x5AAC,
+	0x8B80, 0x5AAD, 0x8B81, 0x5AAE, 0x8B82, 0x5AAF, 0x8B83, 0x5AB0,
+	0x8B84, 0x5AB1, 0x8B85, 0x5AB4, 0x8B86, 0x5AB6, 0x8B87, 0x5AB7,
+	0x8B88, 0x5AB9, 0x8B89, 0x5ABA, 0x8B8A, 0x5ABB, 0x8B8B, 0x5ABC,
+	0x8B8C, 0x5ABD, 0x8B8D, 0x5ABF, 0x8B8E, 0x5AC0, 0x8B8F, 0x5AC3,
+	0x8B90, 0x5AC4, 0x8B91, 0x5AC5, 0x8B92, 0x5AC6, 0x8B93, 0x5AC7,
+	0x8B94, 0x5AC8, 0x8B95, 0x5ACA, 0x8B96, 0x5ACB, 0x8B97, 0x5ACD,
+	0x8B98, 0x5ACE, 0x8B99, 0x5ACF, 0x8B9A, 0x5AD0, 0x8B9B, 0x5AD1,
+	0x8B9C, 0x5AD3, 0x8B9D, 0x5AD5, 0x8B9E, 0x5AD7, 0x8B9F, 0x5AD9,
+	0x8BA0, 0x5ADA, 0x8BA1, 0x5ADB, 0x8BA2, 0x5ADD, 0x8BA3, 0x5ADE,
+	0x8BA4, 0x5ADF, 0x8BA5, 0x5AE2, 0x8BA6, 0x5AE4, 0x8BA7, 0x5AE5,
+	0x8BA8, 0x5AE7, 0x8BA9, 0x5AE8, 0x8BAA, 0x5AEA, 0x8BAB, 0x5AEC,
+	0x8BAC, 0x5AED, 0x8BAD, 0x5AEE, 0x8BAE, 0x5AEF, 0x8BAF, 0x5AF0,
+	0x8BB0, 0x5AF2, 0x8BB1, 0x5AF3, 0x8BB2, 0x5AF4, 0x8BB3, 0x5AF5,
+	0x8BB4, 0x5AF6, 0x8BB5, 0x5AF7, 0x8BB6, 0x5AF8, 0x8BB7, 0x5AF9,
+	0x8BB8, 0x5AFA, 0x8BB9, 0x5AFB, 0x8BBA, 0x5AFC, 0x8BBB, 0x5AFD,
+	0x8BBC, 0x5AFE, 0x8BBD, 0x5AFF, 0x8BBE, 0x5B00, 0x8BBF, 0x5B01,
+	0x8BC0, 0x5B02, 0x8BC1, 0x5B03, 0x8BC2, 0x5B04, 0x8BC3, 0x5B05,
+	0x8BC4, 0x5B06, 0x8BC5, 0x5B07, 0x8BC6, 0x5B08, 0x8BC7, 0x5B0A,
+	0x8BC8, 0x5B0B, 0x8BC9, 0x5B0C, 0x8BCA, 0x5B0D, 0x8BCB, 0x5B0E,
+	0x8BCC, 0x5B0F, 0x8BCD, 0x5B10, 0x8BCE, 0x5B11, 0x8BCF, 0x5B12,
+	0x8BD0, 0x5B13, 0x8BD1, 0x5B14, 0x8BD2, 0x5B15, 0x8BD3, 0x5B18,
+	0x8BD4, 0x5B19, 0x8BD5, 0x5B1A, 0x8BD6, 0x5B1B, 0x8BD7, 0x5B1C,
+	0x8BD8, 0x5B1D, 0x8BD9, 0x5B1E, 0x8BDA, 0x5B1F, 0x8BDB, 0x5B20,
+	0x8BDC, 0x5B21, 0x8BDD, 0x5B22, 0x8BDE, 0x5B23, 0x8BDF, 0x5B24,
+	0x8BE0, 0x5B25, 0x8BE1, 0x5B26, 0x8BE2, 0x5B27, 0x8BE3, 0x5B28,
+	0x8BE4, 0x5B29, 0x8BE5, 0x5B2A, 0x8BE6, 0x5B2B, 0x8BE7, 0x5B2C,
+	0x8BE8, 0x5B2D, 0x8BE9, 0x5B2E, 0x8BEA, 0x5B2F, 0x8BEB, 0x5B30,
+	0x8BEC, 0x5B31, 0x8BED, 0x5B33, 0x8BEE, 0x5B35, 0x8BEF, 0x5B36,
+	0x8BF0, 0x5B38, 0x8BF1, 0x5B39, 0x8BF2, 0x5B3A, 0x8BF3, 0x5B3B,
+	0x8BF4, 0x5B3C, 0x8BF5, 0x5B3D, 0x8BF6, 0x5B3E, 0x8BF7, 0x5B3F,
+	0x8BF8, 0x5B41, 0x8BF9, 0x5B42, 0x8BFA, 0x5B43, 0x8BFB, 0x5B44,
+	0x8BFC, 0x5B45, 0x8BFD, 0x5B46, 0x8BFE, 0x5B47, 0x8C40, 0x5B48,
+	0x8C41, 0x5B49, 0x8C42, 0x5B4A, 0x8C43, 0x5B4B, 0x8C44, 0x5B4C,
+	0x8C45, 0x5B4D, 0x8C46, 0x5B4E, 0x8C47, 0x5B4F, 0x8C48, 0x5B52,
+	0x8C49, 0x5B56, 0x8C4A, 0x5B5E, 0x8C4B, 0x5B60, 0x8C4C, 0x5B61,
+	0x8C4D, 0x5B67, 0x8C4E, 0x5B68, 0x8C4F, 0x5B6B, 0x8C50, 0x5B6D,
+	0x8C51, 0x5B6E, 0x8C52, 0x5B6F, 0x8C53, 0x5B72, 0x8C54, 0x5B74,
+	0x8C55, 0x5B76, 0x8C56, 0x5B77, 0x8C57, 0x5B78, 0x8C58, 0x5B79,
+	0x8C59, 0x5B7B, 0x8C5A, 0x5B7C, 0x8C5B, 0x5B7E, 0x8C5C, 0x5B7F,
+	0x8C5D, 0x5B82, 0x8C5E, 0x5B86, 0x8C5F, 0x5B8A, 0x8C60, 0x5B8D,
+	0x8C61, 0x5B8E, 0x8C62, 0x5B90, 0x8C63, 0x5B91, 0x8C64, 0x5B92,
+	0x8C65, 0x5B94, 0x8C66, 0x5B96, 0x8C67, 0x5B9F, 0x8C68, 0x5BA7,
+	0x8C69, 0x5BA8, 0x8C6A, 0x5BA9, 0x8C6B, 0x5BAC, 0x8C6C, 0x5BAD,
+	0x8C6D, 0x5BAE, 0x8C6E, 0x5BAF, 0x8C6F, 0x5BB1, 0x8C70, 0x5BB2,
+	0x8C71, 0x5BB7, 0x8C72, 0x5BBA, 0x8C73, 0x5BBB, 0x8C74, 0x5BBC,
+	0x8C75, 0x5BC0, 0x8C76, 0x5BC1, 0x8C77, 0x5BC3, 0x8C78, 0x5BC8,
+	0x8C79, 0x5BC9, 0x8C7A, 0x5BCA, 0x8C7B, 0x5BCB, 0x8C7C, 0x5BCD,
+	0x8C7D, 0x5BCE, 0x8C7E, 0x5BCF, 0x8C80, 0x5BD1, 0x8C81, 0x5BD4,
+	0x8C82, 0x5BD5, 0x8C83, 0x5BD6, 0x8C84, 0x5BD7, 0x8C85, 0x5BD8,
+	0x8C86, 0x5BD9, 0x8C87, 0x5BDA, 0x8C88, 0x5BDB, 0x8C89, 0x5BDC,
+	0x8C8A, 0x5BE0, 0x8C8B, 0x5BE2, 0x8C8C, 0x5BE3, 0x8C8D, 0x5BE6,
+	0x8C8E, 0x5BE7, 0x8C8F, 0x5BE9, 0x8C90, 0x5BEA, 0x8C91, 0x5BEB,
+	0x8C92, 0x5BEC, 0x8C93, 0x5BED, 0x8C94, 0x5BEF, 0x8C95, 0x5BF1,
+	0x8C96, 0x5BF2, 0x8C97, 0x5BF3, 0x8C98, 0x5BF4, 0x8C99, 0x5BF5,
+	0x8C9A, 0x5BF6, 0x8C9B, 0x5BF7, 0x8C9C, 0x5BFD, 0x8C9D, 0x5BFE,
+	0x8C9E, 0x5C00, 0x8C9F, 0x5C02, 0x8CA0, 0x5C03, 0x8CA1, 0x5C05,
+	0x8CA2, 0x5C07, 0x8CA3, 0x5C08, 0x8CA4, 0x5C0B, 0x8CA5, 0x5C0C,
+	0x8CA6, 0x5C0D, 0x8CA7, 0x5C0E, 0x8CA8, 0x5C10, 0x8CA9, 0x5C12,
+	0x8CAA, 0x5C13, 0x8CAB, 0x5C17, 0x8CAC, 0x5C19, 0x8CAD, 0x5C1B,
+	0x8CAE, 0x5C1E, 0x8CAF, 0x5C1F, 0x8CB0, 0x5C20, 0x8CB1, 0x5C21,
+	0x8CB2, 0x5C23, 0x8CB3, 0x5C26, 0x8CB4, 0x5C28, 0x8CB5, 0x5C29,
+	0x8CB6, 0x5C2A, 0x8CB7, 0x5C2B, 0x8CB8, 0x5C2D, 0x8CB9, 0x5C2E,
+	0x8CBA, 0x5C2F, 0x8CBB, 0x5C30, 0x8CBC, 0x5C32, 0x8CBD, 0x5C33,
+	0x8CBE, 0x5C35, 0x8CBF, 0x5C36, 0x8CC0, 0x5C37, 0x8CC1, 0x5C43,
+	0x8CC2, 0x5C44, 0x8CC3, 0x5C46, 0x8CC4, 0x5C47, 0x8CC5, 0x5C4C,
+	0x8CC6, 0x5C4D, 0x8CC7, 0x5C52, 0x8CC8, 0x5C53, 0x8CC9, 0x5C54,
+	0x8CCA, 0x5C56, 0x8CCB, 0x5C57, 0x8CCC, 0x5C58, 0x8CCD, 0x5C5A,
+	0x8CCE, 0x5C5B, 0x8CCF, 0x5C5C, 0x8CD0, 0x5C5D, 0x8CD1, 0x5C5F,
+	0x8CD2, 0x5C62, 0x8CD3, 0x5C64, 0x8CD4, 0x5C67, 0x8CD5, 0x5C68,
+	0x8CD6, 0x5C69, 0x8CD7, 0x5C6A, 0x8CD8, 0x5C6B, 0x8CD9, 0x5C6C,
+	0x8CDA, 0x5C6D, 0x8CDB, 0x5C70, 0x8CDC, 0x5C72, 0x8CDD, 0x5C73,
+	0x8CDE, 0x5C74, 0x8CDF, 0x5C75, 0x8CE0, 0x5C76, 0x8CE1, 0x5C77,
+	0x8CE2, 0x5C78, 0x8CE3, 0x5C7B, 0x8CE4, 0x5C7C, 0x8CE5, 0x5C7D,
+	0x8CE6, 0x5C7E, 0x8CE7, 0x5C80, 0x8CE8, 0x5C83, 0x8CE9, 0x5C84,
+	0x8CEA, 0x5C85, 0x8CEB, 0x5C86, 0x8CEC, 0x5C87, 0x8CED, 0x5C89,
+	0x8CEE, 0x5C8A, 0x8CEF, 0x5C8B, 0x8CF0, 0x5C8E, 0x8CF1, 0x5C8F,
+	0x8CF2, 0x5C92, 0x8CF3, 0x5C93, 0x8CF4, 0x5C95, 0x8CF5, 0x5C9D,
+	0x8CF6, 0x5C9E, 0x8CF7, 0x5C9F, 0x8CF8, 0x5CA0, 0x8CF9, 0x5CA1,
+	0x8CFA, 0x5CA4, 0x8CFB, 0x5CA5, 0x8CFC, 0x5CA6, 0x8CFD, 0x5CA7,
+	0x8CFE, 0x5CA8, 0x8D40, 0x5CAA, 0x8D41, 0x5CAE, 0x8D42, 0x5CAF,
+	0x8D43, 0x5CB0, 0x8D44, 0x5CB2, 0x8D45, 0x5CB4, 0x8D46, 0x5CB6,
+	0x8D47, 0x5CB9, 0x8D48, 0x5CBA, 0x8D49, 0x5CBB, 0x8D4A, 0x5CBC,
+	0x8D4B, 0x5CBE, 0x8D4C, 0x5CC0, 0x8D4D, 0x5CC2, 0x8D4E, 0x5CC3,
+	0x8D4F, 0x5CC5, 0x8D50, 0x5CC6, 0x8D51, 0x5CC7, 0x8D52, 0x5CC8,
+	0x8D53, 0x5CC9, 0x8D54, 0x5CCA, 0x8D55, 0x5CCC, 0x8D56, 0x5CCD,
+	0x8D57, 0x5CCE, 0x8D58, 0x5CCF, 0x8D59, 0x5CD0, 0x8D5A, 0x5CD1,
+	0x8D5B, 0x5CD3, 0x8D5C, 0x5CD4, 0x8D5D, 0x5CD5, 0x8D5E, 0x5CD6,
+	0x8D5F, 0x5CD7, 0x8D60, 0x5CD8, 0x8D61, 0x5CDA, 0x8D62, 0x5CDB,
+	0x8D63, 0x5CDC, 0x8D64, 0x5CDD, 0x8D65, 0x5CDE, 0x8D66, 0x5CDF,
+	0x8D67, 0x5CE0, 0x8D68, 0x5CE2, 0x8D69, 0x5CE3, 0x8D6A, 0x5CE7,
+	0x8D6B, 0x5CE9, 0x8D6C, 0x5CEB, 0x8D6D, 0x5CEC, 0x8D6E, 0x5CEE,
+	0x8D6F, 0x5CEF, 0x8D70, 0x5CF1, 0x8D71, 0x5CF2, 0x8D72, 0x5CF3,
+	0x8D73, 0x5CF4, 0x8D74, 0x5CF5, 0x8D75, 0x5CF6, 0x8D76, 0x5CF7,
+	0x8D77, 0x5CF8, 0x8D78, 0x5CF9, 0x8D79, 0x5CFA, 0x8D7A, 0x5CFC,
+	0x8D7B, 0x5CFD, 0x8D7C, 0x5CFE, 0x8D7D, 0x5CFF, 0x8D7E, 0x5D00,
+	0x8D80, 0x5D01, 0x8D81, 0x5D04, 0x8D82, 0x5D05, 0x8D83, 0x5D08,
+	0x8D84, 0x5D09, 0x8D85, 0x5D0A, 0x8D86, 0x5D0B, 0x8D87, 0x5D0C,
+	0x8D88, 0x5D0D, 0x8D89, 0x5D0F, 0x8D8A, 0x5D10, 0x8D8B, 0x5D11,
+	0x8D8C, 0x5D12, 0x8D8D, 0x5D13, 0x8D8E, 0x5D15, 0x8D8F, 0x5D17,
+	0x8D90, 0x5D18, 0x8D91, 0x5D19, 0x8D92, 0x5D1A, 0x8D93, 0x5D1C,
+	0x8D94, 0x5D1D, 0x8D95, 0x5D1F, 0x8D96, 0x5D20, 0x8D97, 0x5D21,
+	0x8D98, 0x5D22, 0x8D99, 0x5D23, 0x8D9A, 0x5D25, 0x8D9B, 0x5D28,
+	0x8D9C, 0x5D2A, 0x8D9D, 0x5D2B, 0x8D9E, 0x5D2C, 0x8D9F, 0x5D2F,
+	0x8DA0, 0x5D30, 0x8DA1, 0x5D31, 0x8DA2, 0x5D32, 0x8DA3, 0x5D33,
+	0x8DA4, 0x5D35, 0x8DA5, 0x5D36, 0x8DA6, 0x5D37, 0x8DA7, 0x5D38,
+	0x8DA8, 0x5D39, 0x8DA9, 0x5D3A, 0x8DAA, 0x5D3B, 0x8DAB, 0x5D3C,
+	0x8DAC, 0x5D3F, 0x8DAD, 0x5D40, 0x8DAE, 0x5D41, 0x8DAF, 0x5D42,
+	0x8DB0, 0x5D43, 0x8DB1, 0x5D44, 0x8DB2, 0x5D45, 0x8DB3, 0x5D46,
+	0x8DB4, 0x5D48, 0x8DB5, 0x5D49, 0x8DB6, 0x5D4D, 0x8DB7, 0x5D4E,
+	0x8DB8, 0x5D4F, 0x8DB9, 0x5D50, 0x8DBA, 0x5D51, 0x8DBB, 0x5D52,
+	0x8DBC, 0x5D53, 0x8DBD, 0x5D54, 0x8DBE, 0x5D55, 0x8DBF, 0x5D56,
+	0x8DC0, 0x5D57, 0x8DC1, 0x5D59, 0x8DC2, 0x5D5A, 0x8DC3, 0x5D5C,
+	0x8DC4, 0x5D5E, 0x8DC5, 0x5D5F, 0x8DC6, 0x5D60, 0x8DC7, 0x5D61,
+	0x8DC8, 0x5D62, 0x8DC9, 0x5D63, 0x8DCA, 0x5D64, 0x8DCB, 0x5D65,
+	0x8DCC, 0x5D66, 0x8DCD, 0x5D67, 0x8DCE, 0x5D68, 0x8DCF, 0x5D6A,
+	0x8DD0, 0x5D6D, 0x8DD1, 0x5D6E, 0x8DD2, 0x5D70, 0x8DD3, 0x5D71,
+	0x8DD4, 0x5D72, 0x8DD5, 0x5D73, 0x8DD6, 0x5D75, 0x8DD7, 0x5D76,
+	0x8DD8, 0x5D77, 0x8DD9, 0x5D78, 0x8DDA, 0x5D79, 0x8DDB, 0x5D7A,
+	0x8DDC, 0x5D7B, 0x8DDD, 0x5D7C, 0x8DDE, 0x5D7D, 0x8DDF, 0x5D7E,
+	0x8DE0, 0x5D7F, 0x8DE1, 0x5D80, 0x8DE2, 0x5D81, 0x8DE3, 0x5D83,
+	0x8DE4, 0x5D84, 0x8DE5, 0x5D85, 0x8DE6, 0x5D86, 0x8DE7, 0x5D87,
+	0x8DE8, 0x5D88, 0x8DE9, 0x5D89, 0x8DEA, 0x5D8A, 0x8DEB, 0x5D8B,
+	0x8DEC, 0x5D8C, 0x8DED, 0x5D8D, 0x8DEE, 0x5D8E, 0x8DEF, 0x5D8F,
+	0x8DF0, 0x5D90, 0x8DF1, 0x5D91, 0x8DF2, 0x5D92, 0x8DF3, 0x5D93,
+	0x8DF4, 0x5D94, 0x8DF5, 0x5D95, 0x8DF6, 0x5D96, 0x8DF7, 0x5D97,
+	0x8DF8, 0x5D98, 0x8DF9, 0x5D9A, 0x8DFA, 0x5D9B, 0x8DFB, 0x5D9C,
+	0x8DFC, 0x5D9E, 0x8DFD, 0x5D9F, 0x8DFE, 0x5DA0, 0x8E40, 0x5DA1,
+	0x8E41, 0x5DA2, 0x8E42, 0x5DA3, 0x8E43, 0x5DA4, 0x8E44, 0x5DA5,
+	0x8E45, 0x5DA6, 0x8E46, 0x5DA7, 0x8E47, 0x5DA8, 0x8E48, 0x5DA9,
+	0x8E49, 0x5DAA, 0x8E4A, 0x5DAB, 0x8E4B, 0x5DAC, 0x8E4C, 0x5DAD,
+	0x8E4D, 0x5DAE, 0x8E4E, 0x5DAF, 0x8E4F, 0x5DB0, 0x8E50, 0x5DB1,
+	0x8E51, 0x5DB2, 0x8E52, 0x5DB3, 0x8E53, 0x5DB4, 0x8E54, 0x5DB5,
+	0x8E55, 0x5DB6, 0x8E56, 0x5DB8, 0x8E57, 0x5DB9, 0x8E58, 0x5DBA,
+	0x8E59, 0x5DBB, 0x8E5A, 0x5DBC, 0x8E5B, 0x5DBD, 0x8E5C, 0x5DBE,
+	0x8E5D, 0x5DBF, 0x8E5E, 0x5DC0, 0x8E5F, 0x5DC1, 0x8E60, 0x5DC2,
+	0x8E61, 0x5DC3, 0x8E62, 0x5DC4, 0x8E63, 0x5DC6, 0x8E64, 0x5DC7,
+	0x8E65, 0x5DC8, 0x8E66, 0x5DC9, 0x8E67, 0x5DCA, 0x8E68, 0x5DCB,
+	0x8E69, 0x5DCC, 0x8E6A, 0x5DCE, 0x8E6B, 0x5DCF, 0x8E6C, 0x5DD0,
+	0x8E6D, 0x5DD1, 0x8E6E, 0x5DD2, 0x8E6F, 0x5DD3, 0x8E70, 0x5DD4,
+	0x8E71, 0x5DD5, 0x8E72, 0x5DD6, 0x8E73, 0x5DD7, 0x8E74, 0x5DD8,
+	0x8E75, 0x5DD9, 0x8E76, 0x5DDA, 0x8E77, 0x5DDC, 0x8E78, 0x5DDF,
+	0x8E79, 0x5DE0, 0x8E7A, 0x5DE3, 0x8E7B, 0x5DE4, 0x8E7C, 0x5DEA,
+	0x8E7D, 0x5DEC, 0x8E7E, 0x5DED, 0x8E80, 0x5DF0, 0x8E81, 0x5DF5,
+	0x8E82, 0x5DF6, 0x8E83, 0x5DF8, 0x8E84, 0x5DF9, 0x8E85, 0x5DFA,
+	0x8E86, 0x5DFB, 0x8E87, 0x5DFC, 0x8E88, 0x5DFF, 0x8E89, 0x5E00,
+	0x8E8A, 0x5E04, 0x8E8B, 0x5E07, 0x8E8C, 0x5E09, 0x8E8D, 0x5E0A,
+	0x8E8E, 0x5E0B, 0x8E8F, 0x5E0D, 0x8E90, 0x5E0E, 0x8E91, 0x5E12,
+	0x8E92, 0x5E13, 0x8E93, 0x5E17, 0x8E94, 0x5E1E, 0x8E95, 0x5E1F,
+	0x8E96, 0x5E20, 0x8E97, 0x5E21, 0x8E98, 0x5E22, 0x8E99, 0x5E23,
+	0x8E9A, 0x5E24, 0x8E9B, 0x5E25, 0x8E9C, 0x5E28, 0x8E9D, 0x5E29,
+	0x8E9E, 0x5E2A, 0x8E9F, 0x5E2B, 0x8EA0, 0x5E2C, 0x8EA1, 0x5E2F,
+	0x8EA2, 0x5E30, 0x8EA3, 0x5E32, 0x8EA4, 0x5E33, 0x8EA5, 0x5E34,
+	0x8EA6, 0x5E35, 0x8EA7, 0x5E36, 0x8EA8, 0x5E39, 0x8EA9, 0x5E3A,
+	0x8EAA, 0x5E3E, 0x8EAB, 0x5E3F, 0x8EAC, 0x5E40, 0x8EAD, 0x5E41,
+	0x8EAE, 0x5E43, 0x8EAF, 0x5E46, 0x8EB0, 0x5E47, 0x8EB1, 0x5E48,
+	0x8EB2, 0x5E49, 0x8EB3, 0x5E4A, 0x8EB4, 0x5E4B, 0x8EB5, 0x5E4D,
+	0x8EB6, 0x5E4E, 0x8EB7, 0x5E4F, 0x8EB8, 0x5E50, 0x8EB9, 0x5E51,
+	0x8EBA, 0x5E52, 0x8EBB, 0x5E53, 0x8EBC, 0x5E56, 0x8EBD, 0x5E57,
+	0x8EBE, 0x5E58, 0x8EBF, 0x5E59, 0x8EC0, 0x5E5A, 0x8EC1, 0x5E5C,
+	0x8EC2, 0x5E5D, 0x8EC3, 0x5E5F, 0x8EC4, 0x5E60, 0x8EC5, 0x5E63,
+	0x8EC6, 0x5E64, 0x8EC7, 0x5E65, 0x8EC8, 0x5E66, 0x8EC9, 0x5E67,
+	0x8ECA, 0x5E68, 0x8ECB, 0x5E69, 0x8ECC, 0x5E6A, 0x8ECD, 0x5E6B,
+	0x8ECE, 0x5E6C, 0x8ECF, 0x5E6D, 0x8ED0, 0x5E6E, 0x8ED1, 0x5E6F,
+	0x8ED2, 0x5E70, 0x8ED3, 0x5E71, 0x8ED4, 0x5E75, 0x8ED5, 0x5E77,
+	0x8ED6, 0x5E79, 0x8ED7, 0x5E7E, 0x8ED8, 0x5E81, 0x8ED9, 0x5E82,
+	0x8EDA, 0x5E83, 0x8EDB, 0x5E85, 0x8EDC, 0x5E88, 0x8EDD, 0x5E89,
+	0x8EDE, 0x5E8C, 0x8EDF, 0x5E8D, 0x8EE0, 0x5E8E, 0x8EE1, 0x5E92,
+	0x8EE2, 0x5E98, 0x8EE3, 0x5E9B, 0x8EE4, 0x5E9D, 0x8EE5, 0x5EA1,
+	0x8EE6, 0x5EA2, 0x8EE7, 0x5EA3, 0x8EE8, 0x5EA4, 0x8EE9, 0x5EA8,
+	0x8EEA, 0x5EA9, 0x8EEB, 0x5EAA, 0x8EEC, 0x5EAB, 0x8EED, 0x5EAC,
+	0x8EEE, 0x5EAE, 0x8EEF, 0x5EAF, 0x8EF0, 0x5EB0, 0x8EF1, 0x5EB1,
+	0x8EF2, 0x5EB2, 0x8EF3, 0x5EB4, 0x8EF4, 0x5EBA, 0x8EF5, 0x5EBB,
+	0x8EF6, 0x5EBC, 0x8EF7, 0x5EBD, 0x8EF8, 0x5EBF, 0x8EF9, 0x5EC0,
+	0x8EFA, 0x5EC1, 0x8EFB, 0x5EC2, 0x8EFC, 0x5EC3, 0x8EFD, 0x5EC4,
+	0x8EFE, 0x5EC5, 0x8F40, 0x5EC6, 0x8F41, 0x5EC7, 0x8F42, 0x5EC8,
+	0x8F43, 0x5ECB, 0x8F44, 0x5ECC, 0x8F45, 0x5ECD, 0x8F46, 0x5ECE,
+	0x8F47, 0x5ECF, 0x8F48, 0x5ED0, 0x8F49, 0x5ED4, 0x8F4A, 0x5ED5,
+	0x8F4B, 0x5ED7, 0x8F4C, 0x5ED8, 0x8F4D, 0x5ED9, 0x8F4E, 0x5EDA,
+	0x8F4F, 0x5EDC, 0x8F50, 0x5EDD, 0x8F51, 0x5EDE, 0x8F52, 0x5EDF,
+	0x8F53, 0x5EE0, 0x8F54, 0x5EE1, 0x8F55, 0x5EE2, 0x8F56, 0x5EE3,
+	0x8F57, 0x5EE4, 0x8F58, 0x5EE5, 0x8F59, 0x5EE6, 0x8F5A, 0x5EE7,
+	0x8F5B, 0x5EE9, 0x8F5C, 0x5EEB, 0x8F5D, 0x5EEC, 0x8F5E, 0x5EED,
+	0x8F5F, 0x5EEE, 0x8F60, 0x5EEF, 0x8F61, 0x5EF0, 0x8F62, 0x5EF1,
+	0x8F63, 0x5EF2, 0x8F64, 0x5EF3, 0x8F65, 0x5EF5, 0x8F66, 0x5EF8,
+	0x8F67, 0x5EF9, 0x8F68, 0x5EFB, 0x8F69, 0x5EFC, 0x8F6A, 0x5EFD,
+	0x8F6B, 0x5F05, 0x8F6C, 0x5F06, 0x8F6D, 0x5F07, 0x8F6E, 0x5F09,
+	0x8F6F, 0x5F0C, 0x8F70, 0x5F0D, 0x8F71, 0x5F0E, 0x8F72, 0x5F10,
+	0x8F73, 0x5F12, 0x8F74, 0x5F14, 0x8F75, 0x5F16, 0x8F76, 0x5F19,
+	0x8F77, 0x5F1A, 0x8F78, 0x5F1C, 0x8F79, 0x5F1D, 0x8F7A, 0x5F1E,
+	0x8F7B, 0x5F21, 0x8F7C, 0x5F22, 0x8F7D, 0x5F23, 0x8F7E, 0x5F24,
+	0x8F80, 0x5F28, 0x8F81, 0x5F2B, 0x8F82, 0x5F2C, 0x8F83, 0x5F2E,
+	0x8F84, 0x5F30, 0x8F85, 0x5F32, 0x8F86, 0x5F33, 0x8F87, 0x5F34,
+	0x8F88, 0x5F35, 0x8F89, 0x5F36, 0x8F8A, 0x5F37, 0x8F8B, 0x5F38,
+	0x8F8C, 0x5F3B, 0x8F8D, 0x5F3D, 0x8F8E, 0x5F3E, 0x8F8F, 0x5F3F,
+	0x8F90, 0x5F41, 0x8F91, 0x5F42, 0x8F92, 0x5F43, 0x8F93, 0x5F44,
+	0x8F94, 0x5F45, 0x8F95, 0x5F46, 0x8F96, 0x5F47, 0x8F97, 0x5F48,
+	0x8F98, 0x5F49, 0x8F99, 0x5F4A, 0x8F9A, 0x5F4B, 0x8F9B, 0x5F4C,
+	0x8F9C, 0x5F4D, 0x8F9D, 0x5F4E, 0x8F9E, 0x5F4F, 0x8F9F, 0x5F51,
+	0x8FA0, 0x5F54, 0x8FA1, 0x5F59, 0x8FA2, 0x5F5A, 0x8FA3, 0x5F5B,
+	0x8FA4, 0x5F5C, 0x8FA5, 0x5F5E, 0x8FA6, 0x5F5F, 0x8FA7, 0x5F60,
+	0x8FA8, 0x5F63, 0x8FA9, 0x5F65, 0x8FAA, 0x5F67, 0x8FAB, 0x5F68,
+	0x8FAC, 0x5F6B, 0x8FAD, 0x5F6E, 0x8FAE, 0x5F6F, 0x8FAF, 0x5F72,
+	0x8FB0, 0x5F74, 0x8FB1, 0x5F75, 0x8FB2, 0x5F76, 0x8FB3, 0x5F78,
+	0x8FB4, 0x5F7A, 0x8FB5, 0x5F7D, 0x8FB6, 0x5F7E, 0x8FB7, 0x5F7F,
+	0x8FB8, 0x5F83, 0x8FB9, 0x5F86, 0x8FBA, 0x5F8D, 0x8FBB, 0x5F8E,
+	0x8FBC, 0x5F8F, 0x8FBD, 0x5F91, 0x8FBE, 0x5F93, 0x8FBF, 0x5F94,
+	0x8FC0, 0x5F96, 0x8FC1, 0x5F9A, 0x8FC2, 0x5F9B, 0x8FC3, 0x5F9D,
+	0x8FC4, 0x5F9E, 0x8FC5, 0x5F9F, 0x8FC6, 0x5FA0, 0x8FC7, 0x5FA2,
+	0x8FC8, 0x5FA3, 0x8FC9, 0x5FA4, 0x8FCA, 0x5FA5, 0x8FCB, 0x5FA6,
+	0x8FCC, 0x5FA7, 0x8FCD, 0x5FA9, 0x8FCE, 0x5FAB, 0x8FCF, 0x5FAC,
+	0x8FD0, 0x5FAF, 0x8FD1, 0x5FB0, 0x8FD2, 0x5FB1, 0x8FD3, 0x5FB2,
+	0x8FD4, 0x5FB3, 0x8FD5, 0x5FB4, 0x8FD6, 0x5FB6, 0x8FD7, 0x5FB8,
+	0x8FD8, 0x5FB9, 0x8FD9, 0x5FBA, 0x8FDA, 0x5FBB, 0x8FDB, 0x5FBE,
+	0x8FDC, 0x5FBF, 0x8FDD, 0x5FC0, 0x8FDE, 0x5FC1, 0x8FDF, 0x5FC2,
+	0x8FE0, 0x5FC7, 0x8FE1, 0x5FC8, 0x8FE2, 0x5FCA, 0x8FE3, 0x5FCB,
+	0x8FE4, 0x5FCE, 0x8FE5, 0x5FD3, 0x8FE6, 0x5FD4, 0x8FE7, 0x5FD5,
+	0x8FE8, 0x5FDA, 0x8FE9, 0x5FDB, 0x8FEA, 0x5FDC, 0x8FEB, 0x5FDE,
+	0x8FEC, 0x5FDF, 0x8FED, 0x5FE2, 0x8FEE, 0x5FE3, 0x8FEF, 0x5FE5,
+	0x8FF0, 0x5FE6, 0x8FF1, 0x5FE8, 0x8FF2, 0x5FE9, 0x8FF3, 0x5FEC,
+	0x8FF4, 0x5FEF, 0x8FF5, 0x5FF0, 0x8FF6, 0x5FF2, 0x8FF7, 0x5FF3,
+	0x8FF8, 0x5FF4, 0x8FF9, 0x5FF6, 0x8FFA, 0x5FF7, 0x8FFB, 0x5FF9,
+	0x8FFC, 0x5FFA, 0x8FFD, 0x5FFC, 0x8FFE, 0x6007, 0x9040, 0x6008,
+	0x9041, 0x6009, 0x9042, 0x600B, 0x9043, 0x600C, 0x9044, 0x6010,
+	0x9045, 0x6011, 0x9046, 0x6013, 0x9047, 0x6017, 0x9048, 0x6018,
+	0x9049, 0x601A, 0x904A, 0x601E, 0x904B, 0x601F, 0x904C, 0x6022,
+	0x904D, 0x6023, 0x904E, 0x6024, 0x904F, 0x602C, 0x9050, 0x602D,
+	0x9051, 0x602E, 0x9052, 0x6030, 0x9053, 0x6031, 0x9054, 0x6032,
+	0x9055, 0x6033, 0x9056, 0x6034, 0x9057, 0x6036, 0x9058, 0x6037,
+	0x9059, 0x6038, 0x905A, 0x6039, 0x905B, 0x603A, 0x905C, 0x603D,
+	0x905D, 0x603E, 0x905E, 0x6040, 0x905F, 0x6044, 0x9060, 0x6045,
+	0x9061, 0x6046, 0x9062, 0x6047, 0x9063, 0x6048, 0x9064, 0x6049,
+	0x9065, 0x604A, 0x9066, 0x604C, 0x9067, 0x604E, 0x9068, 0x604F,
+	0x9069, 0x6051, 0x906A, 0x6053, 0x906B, 0x6054, 0x906C, 0x6056,
+	0x906D, 0x6057, 0x906E, 0x6058, 0x906F, 0x605B, 0x9070, 0x605C,
+	0x9071, 0x605E, 0x9072, 0x605F, 0x9073, 0x6060, 0x9074, 0x6061,
+	0x9075, 0x6065, 0x9076, 0x6066, 0x9077, 0x606E, 0x9078, 0x6071,
+	0x9079, 0x6072, 0x907A, 0x6074, 0x907B, 0x6075, 0x907C, 0x6077,
+	0x907D, 0x607E, 0x907E, 0x6080, 0x9080, 0x6081, 0x9081, 0x6082,
+	0x9082, 0x6085, 0x9083, 0x6086, 0x9084, 0x6087, 0x9085, 0x6088,
+	0x9086, 0x608A, 0x9087, 0x608B, 0x9088, 0x608E, 0x9089, 0x608F,
+	0x908A, 0x6090, 0x908B, 0x6091, 0x908C, 0x6093, 0x908D, 0x6095,
+	0x908E, 0x6097, 0x908F, 0x6098, 0x9090, 0x6099, 0x9091, 0x609C,
+	0x9092, 0x609E, 0x9093, 0x60A1, 0x9094, 0x60A2, 0x9095, 0x60A4,
+	0x9096, 0x60A5, 0x9097, 0x60A7, 0x9098, 0x60A9, 0x9099, 0x60AA,
+	0x909A, 0x60AE, 0x909B, 0x60B0, 0x909C, 0x60B3, 0x909D, 0x60B5,
+	0x909E, 0x60B6, 0x909F, 0x60B7, 0x90A0, 0x60B9, 0x90A1, 0x60BA,
+	0x90A2, 0x60BD, 0x90A3, 0x60BE, 0x90A4, 0x60BF, 0x90A5, 0x60C0,
+	0x90A6, 0x60C1, 0x90A7, 0x60C2, 0x90A8, 0x60C3, 0x90A9, 0x60C4,
+	0x90AA, 0x60C7, 0x90AB, 0x60C8, 0x90AC, 0x60C9, 0x90AD, 0x60CC,
+	0x90AE, 0x60CD, 0x90AF, 0x60CE, 0x90B0, 0x60CF, 0x90B1, 0x60D0,
+	0x90B2, 0x60D2, 0x90B3, 0x60D3, 0x90B4, 0x60D4, 0x90B5, 0x60D6,
+	0x90B6, 0x60D7, 0x90B7, 0x60D9, 0x90B8, 0x60DB, 0x90B9, 0x60DE,
+	0x90BA, 0x60E1, 0x90BB, 0x60E2, 0x90BC, 0x60E3, 0x90BD, 0x60E4,
+	0x90BE, 0x60E5, 0x90BF, 0x60EA, 0x90C0, 0x60F1, 0x90C1, 0x60F2,
+	0x90C2, 0x60F5, 0x90C3, 0x60F7, 0x90C4, 0x60F8, 0x90C5, 0x60FB,
+	0x90C6, 0x60FC, 0x90C7, 0x60FD, 0x90C8, 0x60FE, 0x90C9, 0x60FF,
+	0x90CA, 0x6102, 0x90CB, 0x6103, 0x90CC, 0x6104, 0x90CD, 0x6105,
+	0x90CE, 0x6107, 0x90CF, 0x610A, 0x90D0, 0x610B, 0x90D1, 0x610C,
+	0x90D2, 0x6110, 0x90D3, 0x6111, 0x90D4, 0x6112, 0x90D5, 0x6113,
+	0x90D6, 0x6114, 0x90D7, 0x6116, 0x90D8, 0x6117, 0x90D9, 0x6118,
+	0x90DA, 0x6119, 0x90DB, 0x611B, 0x90DC, 0x611C, 0x90DD, 0x611D,
+	0x90DE, 0x611E, 0x90DF, 0x6121, 0x90E0, 0x6122, 0x90E1, 0x6125,
+	0x90E2, 0x6128, 0x90E3, 0x6129, 0x90E4, 0x612A, 0x90E5, 0x612C,
+	0x90E6, 0x612D, 0x90E7, 0x612E, 0x90E8, 0x612F, 0x90E9, 0x6130,
+	0x90EA, 0x6131, 0x90EB, 0x6132, 0x90EC, 0x6133, 0x90ED, 0x6134,
+	0x90EE, 0x6135, 0x90EF, 0x6136, 0x90F0, 0x6137, 0x90F1, 0x6138,
+	0x90F2, 0x6139, 0x90F3, 0x613A, 0x90F4, 0x613B, 0x90F5, 0x613C,
+	0x90F6, 0x613D, 0x90F7, 0x613E, 0x90F8, 0x6140, 0x90F9, 0x6141,
+	0x90FA, 0x6142, 0x90FB, 0x6143, 0x90FC, 0x6144, 0x90FD, 0x6145,
+	0x90FE, 0x6146, 0x9140, 0x6147, 0x9141, 0x6149, 0x9142, 0x614B,
+	0x9143, 0x614D, 0x9144, 0x614F, 0x9145, 0x6150, 0x9146, 0x6152,
+	0x9147, 0x6153, 0x9148, 0x6154, 0x9149, 0x6156, 0x914A, 0x6157,
+	0x914B, 0x6158, 0x914C, 0x6159, 0x914D, 0x615A, 0x914E, 0x615B,
+	0x914F, 0x615C, 0x9150, 0x615E, 0x9151, 0x615F, 0x9152, 0x6160,
+	0x9153, 0x6161, 0x9154, 0x6163, 0x9155, 0x6164, 0x9156, 0x6165,
+	0x9157, 0x6166, 0x9158, 0x6169, 0x9159, 0x616A, 0x915A, 0x616B,
+	0x915B, 0x616C, 0x915C, 0x616D, 0x915D, 0x616E, 0x915E, 0x616F,
+	0x915F, 0x6171, 0x9160, 0x6172, 0x9161, 0x6173, 0x9162, 0x6174,
+	0x9163, 0x6176, 0x9164, 0x6178, 0x9165, 0x6179, 0x9166, 0x617A,
+	0x9167, 0x617B, 0x9168, 0x617C, 0x9169, 0x617D, 0x916A, 0x617E,
+	0x916B, 0x617F, 0x916C, 0x6180, 0x916D, 0x6181, 0x916E, 0x6182,
+	0x916F, 0x6183, 0x9170, 0x6184, 0x9171, 0x6185, 0x9172, 0x6186,
+	0x9173, 0x6187, 0x9174, 0x6188, 0x9175, 0x6189, 0x9176, 0x618A,
+	0x9177, 0x618C, 0x9178, 0x618D, 0x9179, 0x618F, 0x917A, 0x6190,
+	0x917B, 0x6191, 0x917C, 0x6192, 0x917D, 0x6193, 0x917E, 0x6195,
+	0x9180, 0x6196, 0x9181, 0x6197, 0x9182, 0x6198, 0x9183, 0x6199,
+	0x9184, 0x619A, 0x9185, 0x619B, 0x9186, 0x619C, 0x9187, 0x619E,
+	0x9188, 0x619F, 0x9189, 0x61A0, 0x918A, 0x61A1, 0x918B, 0x61A2,
+	0x918C, 0x61A3, 0x918D, 0x61A4, 0x918E, 0x61A5, 0x918F, 0x61A6,
+	0x9190, 0x61AA, 0x9191, 0x61AB, 0x9192, 0x61AD, 0x9193, 0x61AE,
+	0x9194, 0x61AF, 0x9195, 0x61B0, 0x9196, 0x61B1, 0x9197, 0x61B2,
+	0x9198, 0x61B3, 0x9199, 0x61B4, 0x919A, 0x61B5, 0x919B, 0x61B6,
+	0x919C, 0x61B8, 0x919D, 0x61B9, 0x919E, 0x61BA, 0x919F, 0x61BB,
+	0x91A0, 0x61BC, 0x91A1, 0x61BD, 0x91A2, 0x61BF, 0x91A3, 0x61C0,
+	0x91A4, 0x61C1, 0x91A5, 0x61C3, 0x91A6, 0x61C4, 0x91A7, 0x61C5,
+	0x91A8, 0x61C6, 0x91A9, 0x61C7, 0x91AA, 0x61C9, 0x91AB, 0x61CC,
+	0x91AC, 0x61CD, 0x91AD, 0x61CE, 0x91AE, 0x61CF, 0x91AF, 0x61D0,
+	0x91B0, 0x61D3, 0x91B1, 0x61D5, 0x91B2, 0x61D6, 0x91B3, 0x61D7,
+	0x91B4, 0x61D8, 0x91B5, 0x61D9, 0x91B6, 0x61DA, 0x91B7, 0x61DB,
+	0x91B8, 0x61DC, 0x91B9, 0x61DD, 0x91BA, 0x61DE, 0x91BB, 0x61DF,
+	0x91BC, 0x61E0, 0x91BD, 0x61E1, 0x91BE, 0x61E2, 0x91BF, 0x61E3,
+	0x91C0, 0x61E4, 0x91C1, 0x61E5, 0x91C2, 0x61E7, 0x91C3, 0x61E8,
+	0x91C4, 0x61E9, 0x91C5, 0x61EA, 0x91C6, 0x61EB, 0x91C7, 0x61EC,
+	0x91C8, 0x61ED, 0x91C9, 0x61EE, 0x91CA, 0x61EF, 0x91CB, 0x61F0,
+	0x91CC, 0x61F1, 0x91CD, 0x61F2, 0x91CE, 0x61F3, 0x91CF, 0x61F4,
+	0x91D0, 0x61F6, 0x91D1, 0x61F7, 0x91D2, 0x61F8, 0x91D3, 0x61F9,
+	0x91D4, 0x61FA, 0x91D5, 0x61FB, 0x91D6, 0x61FC, 0x91D7, 0x61FD,
+	0x91D8, 0x61FE, 0x91D9, 0x6200, 0x91DA, 0x6201, 0x91DB, 0x6202,
+	0x91DC, 0x6203, 0x91DD, 0x6204, 0x91DE, 0x6205, 0x91DF, 0x6207,
+	0x91E0, 0x6209, 0x91E1, 0x6213, 0x91E2, 0x6214, 0x91E3, 0x6219,
+	0x91E4, 0x621C, 0x91E5, 0x621D, 0x91E6, 0x621E, 0x91E7, 0x6220,
+	0x91E8, 0x6223, 0x91E9, 0x6226, 0x91EA, 0x6227, 0x91EB, 0x6228,
+	0x91EC, 0x6229, 0x91ED, 0x622B, 0x91EE, 0x622D, 0x91EF, 0x622F,
+	0x91F0, 0x6230, 0x91F1, 0x6231, 0x91F2, 0x6232, 0x91F3, 0x6235,
+	0x91F4, 0x6236, 0x91F5, 0x6238, 0x91F6, 0x6239, 0x91F7, 0x623A,
+	0x91F8, 0x623B, 0x91F9, 0x623C, 0x91FA, 0x6242, 0x91FB, 0x6244,
+	0x91FC, 0x6245, 0x91FD, 0x6246, 0x91FE, 0x624A, 0x9240, 0x624F,
+	0x9241, 0x6250, 0x9242, 0x6255, 0x9243, 0x6256, 0x9244, 0x6257,
+	0x9245, 0x6259, 0x9246, 0x625A, 0x9247, 0x625C, 0x9248, 0x625D,
+	0x9249, 0x625E, 0x924A, 0x625F, 0x924B, 0x6260, 0x924C, 0x6261,
+	0x924D, 0x6262, 0x924E, 0x6264, 0x924F, 0x6265, 0x9250, 0x6268,
+	0x9251, 0x6271, 0x9252, 0x6272, 0x9253, 0x6274, 0x9254, 0x6275,
+	0x9255, 0x6277, 0x9256, 0x6278, 0x9257, 0x627A, 0x9258, 0x627B,
+	0x9259, 0x627D, 0x925A, 0x6281, 0x925B, 0x6282, 0x925C, 0x6283,
+	0x925D, 0x6285, 0x925E, 0x6286, 0x925F, 0x6287, 0x9260, 0x6288,
+	0x9261, 0x628B, 0x9262, 0x628C, 0x9263, 0x628D, 0x9264, 0x628E,
+	0x9265, 0x628F, 0x9266, 0x6290, 0x9267, 0x6294, 0x9268, 0x6299,
+	0x9269, 0x629C, 0x926A, 0x629D, 0x926B, 0x629E, 0x926C, 0x62A3,
+	0x926D, 0x62A6, 0x926E, 0x62A7, 0x926F, 0x62A9, 0x9270, 0x62AA,
+	0x9271, 0x62AD, 0x9272, 0x62AE, 0x9273, 0x62AF, 0x9274, 0x62B0,
+	0x9275, 0x62B2, 0x9276, 0x62B3, 0x9277, 0x62B4, 0x9278, 0x62B6,
+	0x9279, 0x62B7, 0x927A, 0x62B8, 0x927B, 0x62BA, 0x927C, 0x62BE,
+	0x927D, 0x62C0, 0x927E, 0x62C1, 0x9280, 0x62C3, 0x9281, 0x62CB,
+	0x9282, 0x62CF, 0x9283, 0x62D1, 0x9284, 0x62D5, 0x9285, 0x62DD,
+	0x9286, 0x62DE, 0x9287, 0x62E0, 0x9288, 0x62E1, 0x9289, 0x62E4,
+	0x928A, 0x62EA, 0x928B, 0x62EB, 0x928C, 0x62F0, 0x928D, 0x62F2,
+	0x928E, 0x62F5, 0x928F, 0x62F8, 0x9290, 0x62F9, 0x9291, 0x62FA,
+	0x9292, 0x62FB, 0x9293, 0x6300, 0x9294, 0x6303, 0x9295, 0x6304,
+	0x9296, 0x6305, 0x9297, 0x6306, 0x9298, 0x630A, 0x9299, 0x630B,
+	0x929A, 0x630C, 0x929B, 0x630D, 0x929C, 0x630F, 0x929D, 0x6310,
+	0x929E, 0x6312, 0x929F, 0x6313, 0x92A0, 0x6314, 0x92A1, 0x6315,
+	0x92A2, 0x6317, 0x92A3, 0x6318, 0x92A4, 0x6319, 0x92A5, 0x631C,
+	0x92A6, 0x6326, 0x92A7, 0x6327, 0x92A8, 0x6329, 0x92A9, 0x632C,
+	0x92AA, 0x632D, 0x92AB, 0x632E, 0x92AC, 0x6330, 0x92AD, 0x6331,
+	0x92AE, 0x6333, 0x92AF, 0x6334, 0x92B0, 0x6335, 0x92B1, 0x6336,
+	0x92B2, 0x6337, 0x92B3, 0x6338, 0x92B4, 0x633B, 0x92B5, 0x633C,
+	0x92B6, 0x633E, 0x92B7, 0x633F, 0x92B8, 0x6340, 0x92B9, 0x6341,
+	0x92BA, 0x6344, 0x92BB, 0x6347, 0x92BC, 0x6348, 0x92BD, 0x634A,
+	0x92BE, 0x6351, 0x92BF, 0x6352, 0x92C0, 0x6353, 0x92C1, 0x6354,
+	0x92C2, 0x6356, 0x92C3, 0x6357, 0x92C4, 0x6358, 0x92C5, 0x6359,
+	0x92C6, 0x635A, 0x92C7, 0x635B, 0x92C8, 0x635C, 0x92C9, 0x635D,
+	0x92CA, 0x6360, 0x92CB, 0x6364, 0x92CC, 0x6365, 0x92CD, 0x6366,
+	0x92CE, 0x6368, 0x92CF, 0x636A, 0x92D0, 0x636B, 0x92D1, 0x636C,
+	0x92D2, 0x636F, 0x92D3, 0x6370, 0x92D4, 0x6372, 0x92D5, 0x6373,
+	0x92D6, 0x6374, 0x92D7, 0x6375, 0x92D8, 0x6378, 0x92D9, 0x6379,
+	0x92DA, 0x637C, 0x92DB, 0x637D, 0x92DC, 0x637E, 0x92DD, 0x637F,
+	0x92DE, 0x6381, 0x92DF, 0x6383, 0x92E0, 0x6384, 0x92E1, 0x6385,
+	0x92E2, 0x6386, 0x92E3, 0x638B, 0x92E4, 0x638D, 0x92E5, 0x6391,
+	0x92E6, 0x6393, 0x92E7, 0x6394, 0x92E8, 0x6395, 0x92E9, 0x6397,
+	0x92EA, 0x6399, 0x92EB, 0x639A, 0x92EC, 0x639B, 0x92ED, 0x639C,
+	0x92EE, 0x639D, 0x92EF, 0x639E, 0x92F0, 0x639F, 0x92F1, 0x63A1,
+	0x92F2, 0x63A4, 0x92F3, 0x63A6, 0x92F4, 0x63AB, 0x92F5, 0x63AF,
+	0x92F6, 0x63B1, 0x92F7, 0x63B2, 0x92F8, 0x63B5, 0x92F9, 0x63B6,
+	0x92FA, 0x63B9, 0x92FB, 0x63BB, 0x92FC, 0x63BD, 0x92FD, 0x63BF,
+	0x92FE, 0x63C0, 0x9340, 0x63C1, 0x9341, 0x63C2, 0x9342, 0x63C3,
+	0x9343, 0x63C5, 0x9344, 0x63C7, 0x9345, 0x63C8, 0x9346, 0x63CA,
+	0x9347, 0x63CB, 0x9348, 0x63CC, 0x9349, 0x63D1, 0x934A, 0x63D3,
+	0x934B, 0x63D4, 0x934C, 0x63D5, 0x934D, 0x63D7, 0x934E, 0x63D8,
+	0x934F, 0x63D9, 0x9350, 0x63DA, 0x9351, 0x63DB, 0x9352, 0x63DC,
+	0x9353, 0x63DD, 0x9354, 0x63DF, 0x9355, 0x63E2, 0x9356, 0x63E4,
+	0x9357, 0x63E5, 0x9358, 0x63E6, 0x9359, 0x63E7, 0x935A, 0x63E8,
+	0x935B, 0x63EB, 0x935C, 0x63EC, 0x935D, 0x63EE, 0x935E, 0x63EF,
+	0x935F, 0x63F0, 0x9360, 0x63F1, 0x9361, 0x63F3, 0x9362, 0x63F5,
+	0x9363, 0x63F7, 0x9364, 0x63F9, 0x9365, 0x63FA, 0x9366, 0x63FB,
+	0x9367, 0x63FC, 0x9368, 0x63FE, 0x9369, 0x6403, 0x936A, 0x6404,
+	0x936B, 0x6406, 0x936C, 0x6407, 0x936D, 0x6408, 0x936E, 0x6409,
+	0x936F, 0x640A, 0x9370, 0x640D, 0x9371, 0x640E, 0x9372, 0x6411,
+	0x9373, 0x6412, 0x9374, 0x6415, 0x9375, 0x6416, 0x9376, 0x6417,
+	0x9377, 0x6418, 0x9378, 0x6419, 0x9379, 0x641A, 0x937A, 0x641D,
+	0x937B, 0x641F, 0x937C, 0x6422, 0x937D, 0x6423, 0x937E, 0x6424,
+	0x9380, 0x6425, 0x9381, 0x6427, 0x9382, 0x6428, 0x9383, 0x6429,
+	0x9384, 0x642B, 0x9385, 0x642E, 0x9386, 0x642F, 0x9387, 0x6430,
+	0x9388, 0x6431, 0x9389, 0x6432, 0x938A, 0x6433, 0x938B, 0x6435,
+	0x938C, 0x6436, 0x938D, 0x6437, 0x938E, 0x6438, 0x938F, 0x6439,
+	0x9390, 0x643B, 0x9391, 0x643C, 0x9392, 0x643E, 0x9393, 0x6440,
+	0x9394, 0x6442, 0x9395, 0x6443, 0x9396, 0x6449, 0x9397, 0x644B,
+	0x9398, 0x644C, 0x9399, 0x644D, 0x939A, 0x644E, 0x939B, 0x644F,
+	0x939C, 0x6450, 0x939D, 0x6451, 0x939E, 0x6453, 0x939F, 0x6455,
+	0x93A0, 0x6456, 0x93A1, 0x6457, 0x93A2, 0x6459, 0x93A3, 0x645A,
+	0x93A4, 0x645B, 0x93A5, 0x645C, 0x93A6, 0x645D, 0x93A7, 0x645F,
+	0x93A8, 0x6460, 0x93A9, 0x6461, 0x93AA, 0x6462, 0x93AB, 0x6463,
+	0x93AC, 0x6464, 0x93AD, 0x6465, 0x93AE, 0x6466, 0x93AF, 0x6468,
+	0x93B0, 0x646A, 0x93B1, 0x646B, 0x93B2, 0x646C, 0x93B3, 0x646E,
+	0x93B4, 0x646F, 0x93B5, 0x6470, 0x93B6, 0x6471, 0x93B7, 0x6472,
+	0x93B8, 0x6473, 0x93B9, 0x6474, 0x93BA, 0x6475, 0x93BB, 0x6476,
+	0x93BC, 0x6477, 0x93BD, 0x647B, 0x93BE, 0x647C, 0x93BF, 0x647D,
+	0x93C0, 0x647E, 0x93C1, 0x647F, 0x93C2, 0x6480, 0x93C3, 0x6481,
+	0x93C4, 0x6483, 0x93C5, 0x6486, 0x93C6, 0x6488, 0x93C7, 0x6489,
+	0x93C8, 0x648A, 0x93C9, 0x648B, 0x93CA, 0x648C, 0x93CB, 0x648D,
+	0x93CC, 0x648E, 0x93CD, 0x648F, 0x93CE, 0x6490, 0x93CF, 0x6493,
+	0x93D0, 0x6494, 0x93D1, 0x6497, 0x93D2, 0x6498, 0x93D3, 0x649A,
+	0x93D4, 0x649B, 0x93D5, 0x649C, 0x93D6, 0x649D, 0x93D7, 0x649F,
+	0x93D8, 0x64A0, 0x93D9, 0x64A1, 0x93DA, 0x64A2, 0x93DB, 0x64A3,
+	0x93DC, 0x64A5, 0x93DD, 0x64A6, 0x93DE, 0x64A7, 0x93DF, 0x64A8,
+	0x93E0, 0x64AA, 0x93E1, 0x64AB, 0x93E2, 0x64AF, 0x93E3, 0x64B1,
+	0x93E4, 0x64B2, 0x93E5, 0x64B3, 0x93E6, 0x64B4, 0x93E7, 0x64B6,
+	0x93E8, 0x64B9, 0x93E9, 0x64BB, 0x93EA, 0x64BD, 0x93EB, 0x64BE,
+	0x93EC, 0x64BF, 0x93ED, 0x64C1, 0x93EE, 0x64C3, 0x93EF, 0x64C4,
+	0x93F0, 0x64C6, 0x93F1, 0x64C7, 0x93F2, 0x64C8, 0x93F3, 0x64C9,
+	0x93F4, 0x64CA, 0x93F5, 0x64CB, 0x93F6, 0x64CC, 0x93F7, 0x64CF,
+	0x93F8, 0x64D1, 0x93F9, 0x64D3, 0x93FA, 0x64D4, 0x93FB, 0x64D5,
+	0x93FC, 0x64D6, 0x93FD, 0x64D9, 0x93FE, 0x64DA, 0x9440, 0x64DB,
+	0x9441, 0x64DC, 0x9442, 0x64DD, 0x9443, 0x64DF, 0x9444, 0x64E0,
+	0x9445, 0x64E1, 0x9446, 0x64E3, 0x9447, 0x64E5, 0x9448, 0x64E7,
+	0x9449, 0x64E8, 0x944A, 0x64E9, 0x944B, 0x64EA, 0x944C, 0x64EB,
+	0x944D, 0x64EC, 0x944E, 0x64ED, 0x944F, 0x64EE, 0x9450, 0x64EF,
+	0x9451, 0x64F0, 0x9452, 0x64F1, 0x9453, 0x64F2, 0x9454, 0x64F3,
+	0x9455, 0x64F4, 0x9456, 0x64F5, 0x9457, 0x64F6, 0x9458, 0x64F7,
+	0x9459, 0x64F8, 0x945A, 0x64F9, 0x945B, 0x64FA, 0x945C, 0x64FB,
+	0x945D, 0x64FC, 0x945E, 0x64FD, 0x945F, 0x64FE, 0x9460, 0x64FF,
+	0x9461, 0x6501, 0x9462, 0x6502, 0x9463, 0x6503, 0x9464, 0x6504,
+	0x9465, 0x6505, 0x9466, 0x6506, 0x9467, 0x6507, 0x9468, 0x6508,
+	0x9469, 0x650A, 0x946A, 0x650B, 0x946B, 0x650C, 0x946C, 0x650D,
+	0x946D, 0x650E, 0x946E, 0x650F, 0x946F, 0x6510, 0x9470, 0x6511,
+	0x9471, 0x6513, 0x9472, 0x6514, 0x9473, 0x6515, 0x9474, 0x6516,
+	0x9475, 0x6517, 0x9476, 0x6519, 0x9477, 0x651A, 0x9478, 0x651B,
+	0x9479, 0x651C, 0x947A, 0x651D, 0x947B, 0x651E, 0x947C, 0x651F,
+	0x947D, 0x6520, 0x947E, 0x6521, 0x9480, 0x6522, 0x9481, 0x6523,
+	0x9482, 0x6524, 0x9483, 0x6526, 0x9484, 0x6527, 0x9485, 0x6528,
+	0x9486, 0x6529, 0x9487, 0x652A, 0x9488, 0x652C, 0x9489, 0x652D,
+	0x948A, 0x6530, 0x948B, 0x6531, 0x948C, 0x6532, 0x948D, 0x6533,
+	0x948E, 0x6537, 0x948F, 0x653A, 0x9490, 0x653C, 0x9491, 0x653D,
+	0x9492, 0x6540, 0x9493, 0x6541, 0x9494, 0x6542, 0x9495, 0x6543,
+	0x9496, 0x6544, 0x9497, 0x6546, 0x9498, 0x6547, 0x9499, 0x654A,
+	0x949A, 0x654B, 0x949B, 0x654D, 0x949C, 0x654E, 0x949D, 0x6550,
+	0x949E, 0x6552, 0x949F, 0x6553, 0x94A0, 0x6554, 0x94A1, 0x6557,
+	0x94A2, 0x6558, 0x94A3, 0x655A, 0x94A4, 0x655C, 0x94A5, 0x655F,
+	0x94A6, 0x6560, 0x94A7, 0x6561, 0x94A8, 0x6564, 0x94A9, 0x6565,
+	0x94AA, 0x6567, 0x94AB, 0x6568, 0x94AC, 0x6569, 0x94AD, 0x656A,
+	0x94AE, 0x656D, 0x94AF, 0x656E, 0x94B0, 0x656F, 0x94B1, 0x6571,
+	0x94B2, 0x6573, 0x94B3, 0x6575, 0x94B4, 0x6576, 0x94B5, 0x6578,
+	0x94B6, 0x6579, 0x94B7, 0x657A, 0x94B8, 0x657B, 0x94B9, 0x657C,
+	0x94BA, 0x657D, 0x94BB, 0x657E, 0x94BC, 0x657F, 0x94BD, 0x6580,
+	0x94BE, 0x6581, 0x94BF, 0x6582, 0x94C0, 0x6583, 0x94C1, 0x6584,
+	0x94C2, 0x6585, 0x94C3, 0x6586, 0x94C4, 0x6588, 0x94C5, 0x6589,
+	0x94C6, 0x658A, 0x94C7, 0x658D, 0x94C8, 0x658E, 0x94C9, 0x658F,
+	0x94CA, 0x6592, 0x94CB, 0x6594, 0x94CC, 0x6595, 0x94CD, 0x6596,
+	0x94CE, 0x6598, 0x94CF, 0x659A, 0x94D0, 0x659D, 0x94D1, 0x659E,
+	0x94D2, 0x65A0, 0x94D3, 0x65A2, 0x94D4, 0x65A3, 0x94D5, 0x65A6,
+	0x94D6, 0x65A8, 0x94D7, 0x65AA, 0x94D8, 0x65AC, 0x94D9, 0x65AE,
+	0x94DA, 0x65B1, 0x94DB, 0x65B2, 0x94DC, 0x65B3, 0x94DD, 0x65B4,
+	0x94DE, 0x65B5, 0x94DF, 0x65B6, 0x94E0, 0x65B7, 0x94E1, 0x65B8,
+	0x94E2, 0x65BA, 0x94E3, 0x65BB, 0x94E4, 0x65BE, 0x94E5, 0x65BF,
+	0x94E6, 0x65C0, 0x94E7, 0x65C2, 0x94E8, 0x65C7, 0x94E9, 0x65C8,
+	0x94EA, 0x65C9, 0x94EB, 0x65CA, 0x94EC, 0x65CD, 0x94ED, 0x65D0,
+	0x94EE, 0x65D1, 0x94EF, 0x65D3, 0x94F0, 0x65D4, 0x94F1, 0x65D5,
+	0x94F2, 0x65D8, 0x94F3, 0x65D9, 0x94F4, 0x65DA, 0x94F5, 0x65DB,
+	0x94F6, 0x65DC, 0x94F7, 0x65DD, 0x94F8, 0x65DE, 0x94F9, 0x65DF,
+	0x94FA, 0x65E1, 0x94FB, 0x65E3, 0x94FC, 0x65E4, 0x94FD, 0x65EA,
+	0x94FE, 0x65EB, 0x9540, 0x65F2, 0x9541, 0x65F3, 0x9542, 0x65F4,
+	0x9543, 0x65F5, 0x9544, 0x65F8, 0x9545, 0x65F9, 0x9546, 0x65FB,
+	0x9547, 0x65FC, 0x9548, 0x65FD, 0x9549, 0x65FE, 0x954A, 0x65FF,
+	0x954B, 0x6601, 0x954C, 0x6604, 0x954D, 0x6605, 0x954E, 0x6607,
+	0x954F, 0x6608, 0x9550, 0x6609, 0x9551, 0x660B, 0x9552, 0x660D,
+	0x9553, 0x6610, 0x9554, 0x6611, 0x9555, 0x6612, 0x9556, 0x6616,
+	0x9557, 0x6617, 0x9558, 0x6618, 0x9559, 0x661A, 0x955A, 0x661B,
+	0x955B, 0x661C, 0x955C, 0x661E, 0x955D, 0x6621, 0x955E, 0x6622,
+	0x955F, 0x6623, 0x9560, 0x6624, 0x9561, 0x6626, 0x9562, 0x6629,
+	0x9563, 0x662A, 0x9564, 0x662B, 0x9565, 0x662C, 0x9566, 0x662E,
+	0x9567, 0x6630, 0x9568, 0x6632, 0x9569, 0x6633, 0x956A, 0x6637,
+	0x956B, 0x6638, 0x956C, 0x6639, 0x956D, 0x663A, 0x956E, 0x663B,
+	0x956F, 0x663D, 0x9570, 0x663F, 0x9571, 0x6640, 0x9572, 0x6642,
+	0x9573, 0x6644, 0x9574, 0x6645, 0x9575, 0x6646, 0x9576, 0x6647,
+	0x9577, 0x6648, 0x9578, 0x6649, 0x9579, 0x664A, 0x957A, 0x664D,
+	0x957B, 0x664E, 0x957C, 0x6650, 0x957D, 0x6651, 0x957E, 0x6658,
+	0x9580, 0x6659, 0x9581, 0x665B, 0x9582, 0x665C, 0x9583, 0x665D,
+	0x9584, 0x665E, 0x9585, 0x6660, 0x9586, 0x6662, 0x9587, 0x6663,
+	0x9588, 0x6665, 0x9589, 0x6667, 0x958A, 0x6669, 0x958B, 0x666A,
+	0x958C, 0x666B, 0x958D, 0x666C, 0x958E, 0x666D, 0x958F, 0x6671,
+	0x9590, 0x6672, 0x9591, 0x6673, 0x9592, 0x6675, 0x9593, 0x6678,
+	0x9594, 0x6679, 0x9595, 0x667B, 0x9596, 0x667C, 0x9597, 0x667D,
+	0x9598, 0x667F, 0x9599, 0x6680, 0x959A, 0x6681, 0x959B, 0x6683,
+	0x959C, 0x6685, 0x959D, 0x6686, 0x959E, 0x6688, 0x959F, 0x6689,
+	0x95A0, 0x668A, 0x95A1, 0x668B, 0x95A2, 0x668D, 0x95A3, 0x668E,
+	0x95A4, 0x668F, 0x95A5, 0x6690, 0x95A6, 0x6692, 0x95A7, 0x6693,
+	0x95A8, 0x6694, 0x95A9, 0x6695, 0x95AA, 0x6698, 0x95AB, 0x6699,
+	0x95AC, 0x669A, 0x95AD, 0x669B, 0x95AE, 0x669C, 0x95AF, 0x669E,
+	0x95B0, 0x669F, 0x95B1, 0x66A0, 0x95B2, 0x66A1, 0x95B3, 0x66A2,
+	0x95B4, 0x66A3, 0x95B5, 0x66A4, 0x95B6, 0x66A5, 0x95B7, 0x66A6,
+	0x95B8, 0x66A9, 0x95B9, 0x66AA, 0x95BA, 0x66AB, 0x95BB, 0x66AC,
+	0x95BC, 0x66AD, 0x95BD, 0x66AF, 0x95BE, 0x66B0, 0x95BF, 0x66B1,
+	0x95C0, 0x66B2, 0x95C1, 0x66B3, 0x95C2, 0x66B5, 0x95C3, 0x66B6,
+	0x95C4, 0x66B7, 0x95C5, 0x66B8, 0x95C6, 0x66BA, 0x95C7, 0x66BB,
+	0x95C8, 0x66BC, 0x95C9, 0x66BD, 0x95CA, 0x66BF, 0x95CB, 0x66C0,
+	0x95CC, 0x66C1, 0x95CD, 0x66C2, 0x95CE, 0x66C3, 0x95CF, 0x66C4,
+	0x95D0, 0x66C5, 0x95D1, 0x66C6, 0x95D2, 0x66C7, 0x95D3, 0x66C8,
+	0x95D4, 0x66C9, 0x95D5, 0x66CA, 0x95D6, 0x66CB, 0x95D7, 0x66CC,
+	0x95D8, 0x66CD, 0x95D9, 0x66CE, 0x95DA, 0x66CF, 0x95DB, 0x66D0,
+	0x95DC, 0x66D1, 0x95DD, 0x66D2, 0x95DE, 0x66D3, 0x95DF, 0x66D4,
+	0x95E0, 0x66D5, 0x95E1, 0x66D6, 0x95E2, 0x66D7, 0x95E3, 0x66D8,
+	0x95E4, 0x66DA, 0x95E5, 0x66DE, 0x95E6, 0x66DF, 0x95E7, 0x66E0,
+	0x95E8, 0x66E1, 0x95E9, 0x66E2, 0x95EA, 0x66E3, 0x95EB, 0x66E4,
+	0x95EC, 0x66E5, 0x95ED, 0x66E7, 0x95EE, 0x66E8, 0x95EF, 0x66EA,
+	0x95F0, 0x66EB, 0x95F1, 0x66EC, 0x95F2, 0x66ED, 0x95F3, 0x66EE,
+	0x95F4, 0x66EF, 0x95F5, 0x66F1, 0x95F6, 0x66F5, 0x95F7, 0x66F6,
+	0x95F8, 0x66F8, 0x95F9, 0x66FA, 0x95FA, 0x66FB, 0x95FB, 0x66FD,
+	0x95FC, 0x6701, 0x95FD, 0x6702, 0x95FE, 0x6703, 0x9640, 0x6704,
+	0x9641, 0x6705, 0x9642, 0x6706, 0x9643, 0x6707, 0x9644, 0x670C,
+	0x9645, 0x670E, 0x9646, 0x670F, 0x9647, 0x6711, 0x9648, 0x6712,
+	0x9649, 0x6713, 0x964A, 0x6716, 0x964B, 0x6718, 0x964C, 0x6719,
+	0x964D, 0x671A, 0x964E, 0x671C, 0x964F, 0x671E, 0x9650, 0x6720,
+	0x9651, 0x6721, 0x9652, 0x6722, 0x9653, 0x6723, 0x9654, 0x6724,
+	0x9655, 0x6725, 0x9656, 0x6727, 0x9657, 0x6729, 0x9658, 0x672E,
+	0x9659, 0x6730, 0x965A, 0x6732, 0x965B, 0x6733, 0x965C, 0x6736,
+	0x965D, 0x6737, 0x965E, 0x6738, 0x965F, 0x6739, 0x9660, 0x673B,
+	0x9661, 0x673C, 0x9662, 0x673E, 0x9663, 0x673F, 0x9664, 0x6741,
+	0x9665, 0x6744, 0x9666, 0x6745, 0x9667, 0x6747, 0x9668, 0x674A,
+	0x9669, 0x674B, 0x966A, 0x674D, 0x966B, 0x6752, 0x966C, 0x6754,
+	0x966D, 0x6755, 0x966E, 0x6757, 0x966F, 0x6758, 0x9670, 0x6759,
+	0x9671, 0x675A, 0x9672, 0x675B, 0x9673, 0x675D, 0x9674, 0x6762,
+	0x9675, 0x6763, 0x9676, 0x6764, 0x9677, 0x6766, 0x9678, 0x6767,
+	0x9679, 0x676B, 0x967A, 0x676C, 0x967B, 0x676E, 0x967C, 0x6771,
+	0x967D, 0x6774, 0x967E, 0x6776, 0x9680, 0x6778, 0x9681, 0x6779,
+	0x9682, 0x677A, 0x9683, 0x677B, 0x9684, 0x677D, 0x9685, 0x6780,
+	0x9686, 0x6782, 0x9687, 0x6783, 0x9688, 0x6785, 0x9689, 0x6786,
+	0x968A, 0x6788, 0x968B, 0x678A, 0x968C, 0x678C, 0x968D, 0x678D,
+	0x968E, 0x678E, 0x968F, 0x678F, 0x9690, 0x6791, 0x9691, 0x6792,
+	0x9692, 0x6793, 0x9693, 0x6794, 0x9694, 0x6796, 0x9695, 0x6799,
+	0x9696, 0x679B, 0x9697, 0x679F, 0x9698, 0x67A0, 0x9699, 0x67A1,
+	0x969A, 0x67A4, 0x969B, 0x67A6, 0x969C, 0x67A9, 0x969D, 0x67AC,
+	0x969E, 0x67AE, 0x969F, 0x67B1, 0x96A0, 0x67B2, 0x96A1, 0x67B4,
+	0x96A2, 0x67B9, 0x96A3, 0x67BA, 0x96A4, 0x67BB, 0x96A5, 0x67BC,
+	0x96A6, 0x67BD, 0x96A7, 0x67BE, 0x96A8, 0x67BF, 0x96A9, 0x67C0,
+	0x96AA, 0x67C2, 0x96AB, 0x67C5, 0x96AC, 0x67C6, 0x96AD, 0x67C7,
+	0x96AE, 0x67C8, 0x96AF, 0x67C9, 0x96B0, 0x67CA, 0x96B1, 0x67CB,
+	0x96B2, 0x67CC, 0x96B3, 0x67CD, 0x96B4, 0x67CE, 0x96B5, 0x67D5,
+	0x96B6, 0x67D6, 0x96B7, 0x67D7, 0x96B8, 0x67DB, 0x96B9, 0x67DF,
+	0x96BA, 0x67E1, 0x96BB, 0x67E3, 0x96BC, 0x67E4, 0x96BD, 0x67E6,
+	0x96BE, 0x67E7, 0x96BF, 0x67E8, 0x96C0, 0x67EA, 0x96C1, 0x67EB,
+	0x96C2, 0x67ED, 0x96C3, 0x67EE, 0x96C4, 0x67F2, 0x96C5, 0x67F5,
+	0x96C6, 0x67F6, 0x96C7, 0x67F7, 0x96C8, 0x67F8, 0x96C9, 0x67F9,
+	0x96CA, 0x67FA, 0x96CB, 0x67FB, 0x96CC, 0x67FC, 0x96CD, 0x67FE,
+	0x96CE, 0x6801, 0x96CF, 0x6802, 0x96D0, 0x6803, 0x96D1, 0x6804,
+	0x96D2, 0x6806, 0x96D3, 0x680D, 0x96D4, 0x6810, 0x96D5, 0x6812,
+	0x96D6, 0x6814, 0x96D7, 0x6815, 0x96D8, 0x6818, 0x96D9, 0x6819,
+	0x96DA, 0x681A, 0x96DB, 0x681B, 0x96DC, 0x681C, 0x96DD, 0x681E,
+	0x96DE, 0x681F, 0x96DF, 0x6820, 0x96E0, 0x6822, 0x96E1, 0x6823,
+	0x96E2, 0x6824, 0x96E3, 0x6825, 0x96E4, 0x6826, 0x96E5, 0x6827,
+	0x96E6, 0x6828, 0x96E7, 0x682B, 0x96E8, 0x682C, 0x96E9, 0x682D,
+	0x96EA, 0x682E, 0x96EB, 0x682F, 0x96EC, 0x6830, 0x96ED, 0x6831,
+	0x96EE, 0x6834, 0x96EF, 0x6835, 0x96F0, 0x6836, 0x96F1, 0x683A,
+	0x96F2, 0x683B, 0x96F3, 0x683F, 0x96F4, 0x6847, 0x96F5, 0x684B,
+	0x96F6, 0x684D, 0x96F7, 0x684F, 0x96F8, 0x6852, 0x96F9, 0x6856,
+	0x96FA, 0x6857, 0x96FB, 0x6858, 0x96FC, 0x6859, 0x96FD, 0x685A,
+	0x96FE, 0x685B, 0x9740, 0x685C, 0x9741, 0x685D, 0x9742, 0x685E,
+	0x9743, 0x685F, 0x9744, 0x686A, 0x9745, 0x686C, 0x9746, 0x686D,
+	0x9747, 0x686E, 0x9748, 0x686F, 0x9749, 0x6870, 0x974A, 0x6871,
+	0x974B, 0x6872, 0x974C, 0x6873, 0x974D, 0x6875, 0x974E, 0x6878,
+	0x974F, 0x6879, 0x9750, 0x687A, 0x9751, 0x687B, 0x9752, 0x687C,
+	0x9753, 0x687D, 0x9754, 0x687E, 0x9755, 0x687F, 0x9756, 0x6880,
+	0x9757, 0x6882, 0x9758, 0x6884, 0x9759, 0x6887, 0x975A, 0x6888,
+	0x975B, 0x6889, 0x975C, 0x688A, 0x975D, 0x688B, 0x975E, 0x688C,
+	0x975F, 0x688D, 0x9760, 0x688E, 0x9761, 0x6890, 0x9762, 0x6891,
+	0x9763, 0x6892, 0x9764, 0x6894, 0x9765, 0x6895, 0x9766, 0x6896,
+	0x9767, 0x6898, 0x9768, 0x6899, 0x9769, 0x689A, 0x976A, 0x689B,
+	0x976B, 0x689C, 0x976C, 0x689D, 0x976D, 0x689E, 0x976E, 0x689F,
+	0x976F, 0x68A0, 0x9770, 0x68A1, 0x9771, 0x68A3, 0x9772, 0x68A4,
+	0x9773, 0x68A5, 0x9774, 0x68A9, 0x9775, 0x68AA, 0x9776, 0x68AB,
+	0x9777, 0x68AC, 0x9778, 0x68AE, 0x9779, 0x68B1, 0x977A, 0x68B2,
+	0x977B, 0x68B4, 0x977C, 0x68B6, 0x977D, 0x68B7, 0x977E, 0x68B8,
+	0x9780, 0x68B9, 0x9781, 0x68BA, 0x9782, 0x68BB, 0x9783, 0x68BC,
+	0x9784, 0x68BD, 0x9785, 0x68BE, 0x9786, 0x68BF, 0x9787, 0x68C1,
+	0x9788, 0x68C3, 0x9789, 0x68C4, 0x978A, 0x68C5, 0x978B, 0x68C6,
+	0x978C, 0x68C7, 0x978D, 0x68C8, 0x978E, 0x68CA, 0x978F, 0x68CC,
+	0x9790, 0x68CE, 0x9791, 0x68CF, 0x9792, 0x68D0, 0x9793, 0x68D1,
+	0x9794, 0x68D3, 0x9795, 0x68D4, 0x9796, 0x68D6, 0x9797, 0x68D7,
+	0x9798, 0x68D9, 0x9799, 0x68DB, 0x979A, 0x68DC, 0x979B, 0x68DD,
+	0x979C, 0x68DE, 0x979D, 0x68DF, 0x979E, 0x68E1, 0x979F, 0x68E2,
+	0x97A0, 0x68E4, 0x97A1, 0x68E5, 0x97A2, 0x68E6, 0x97A3, 0x68E7,
+	0x97A4, 0x68E8, 0x97A5, 0x68E9, 0x97A6, 0x68EA, 0x97A7, 0x68EB,
+	0x97A8, 0x68EC, 0x97A9, 0x68ED, 0x97AA, 0x68EF, 0x97AB, 0x68F2,
+	0x97AC, 0x68F3, 0x97AD, 0x68F4, 0x97AE, 0x68F6, 0x97AF, 0x68F7,
+	0x97B0, 0x68F8, 0x97B1, 0x68FB, 0x97B2, 0x68FD, 0x97B3, 0x68FE,
+	0x97B4, 0x68FF, 0x97B5, 0x6900, 0x97B6, 0x6902, 0x97B7, 0x6903,
+	0x97B8, 0x6904, 0x97B9, 0x6906, 0x97BA, 0x6907, 0x97BB, 0x6908,
+	0x97BC, 0x6909, 0x97BD, 0x690A, 0x97BE, 0x690C, 0x97BF, 0x690F,
+	0x97C0, 0x6911, 0x97C1, 0x6913, 0x97C2, 0x6914, 0x97C3, 0x6915,
+	0x97C4, 0x6916, 0x97C5, 0x6917, 0x97C6, 0x6918, 0x97C7, 0x6919,
+	0x97C8, 0x691A, 0x97C9, 0x691B, 0x97CA, 0x691C, 0x97CB, 0x691D,
+	0x97CC, 0x691E, 0x97CD, 0x6921, 0x97CE, 0x6922, 0x97CF, 0x6923,
+	0x97D0, 0x6925, 0x97D1, 0x6926, 0x97D2, 0x6927, 0x97D3, 0x6928,
+	0x97D4, 0x6929, 0x97D5, 0x692A, 0x97D6, 0x692B, 0x97D7, 0x692C,
+	0x97D8, 0x692E, 0x97D9, 0x692F, 0x97DA, 0x6931, 0x97DB, 0x6932,
+	0x97DC, 0x6933, 0x97DD, 0x6935, 0x97DE, 0x6936, 0x97DF, 0x6937,
+	0x97E0, 0x6938, 0x97E1, 0x693A, 0x97E2, 0x693B, 0x97E3, 0x693C,
+	0x97E4, 0x693E, 0x97E5, 0x6940, 0x97E6, 0x6941, 0x97E7, 0x6943,
+	0x97E8, 0x6944, 0x97E9, 0x6945, 0x97EA, 0x6946, 0x97EB, 0x6947,
+	0x97EC, 0x6948, 0x97ED, 0x6949, 0x97EE, 0x694A, 0x97EF, 0x694B,
+	0x97F0, 0x694C, 0x97F1, 0x694D, 0x97F2, 0x694E, 0x97F3, 0x694F,
+	0x97F4, 0x6950, 0x97F5, 0x6951, 0x97F6, 0x6952, 0x97F7, 0x6953,
+	0x97F8, 0x6955, 0x97F9, 0x6956, 0x97FA, 0x6958, 0x97FB, 0x6959,
+	0x97FC, 0x695B, 0x97FD, 0x695C, 0x97FE, 0x695F, 0x9840, 0x6961,
+	0x9841, 0x6962, 0x9842, 0x6964, 0x9843, 0x6965, 0x9844, 0x6967,
+	0x9845, 0x6968, 0x9846, 0x6969, 0x9847, 0x696A, 0x9848, 0x696C,
+	0x9849, 0x696D, 0x984A, 0x696F, 0x984B, 0x6970, 0x984C, 0x6972,
+	0x984D, 0x6973, 0x984E, 0x6974, 0x984F, 0x6975, 0x9850, 0x6976,
+	0x9851, 0x697A, 0x9852, 0x697B, 0x9853, 0x697D, 0x9854, 0x697E,
+	0x9855, 0x697F, 0x9856, 0x6981, 0x9857, 0x6983, 0x9858, 0x6985,
+	0x9859, 0x698A, 0x985A, 0x698B, 0x985B, 0x698C, 0x985C, 0x698E,
+	0x985D, 0x698F, 0x985E, 0x6990, 0x985F, 0x6991, 0x9860, 0x6992,
+	0x9861, 0x6993, 0x9862, 0x6996, 0x9863, 0x6997, 0x9864, 0x6999,
+	0x9865, 0x699A, 0x9866, 0x699D, 0x9867, 0x699E, 0x9868, 0x699F,
+	0x9869, 0x69A0, 0x986A, 0x69A1, 0x986B, 0x69A2, 0x986C, 0x69A3,
+	0x986D, 0x69A4, 0x986E, 0x69A5, 0x986F, 0x69A6, 0x9870, 0x69A9,
+	0x9871, 0x69AA, 0x9872, 0x69AC, 0x9873, 0x69AE, 0x9874, 0x69AF,
+	0x9875, 0x69B0, 0x9876, 0x69B2, 0x9877, 0x69B3, 0x9878, 0x69B5,
+	0x9879, 0x69B6, 0x987A, 0x69B8, 0x987B, 0x69B9, 0x987C, 0x69BA,
+	0x987D, 0x69BC, 0x987E, 0x69BD, 0x9880, 0x69BE, 0x9881, 0x69BF,
+	0x9882, 0x69C0, 0x9883, 0x69C2, 0x9884, 0x69C3, 0x9885, 0x69C4,
+	0x9886, 0x69C5, 0x9887, 0x69C6, 0x9888, 0x69C7, 0x9889, 0x69C8,
+	0x988A, 0x69C9, 0x988B, 0x69CB, 0x988C, 0x69CD, 0x988D, 0x69CF,
+	0x988E, 0x69D1, 0x988F, 0x69D2, 0x9890, 0x69D3, 0x9891, 0x69D5,
+	0x9892, 0x69D6, 0x9893, 0x69D7, 0x9894, 0x69D8, 0x9895, 0x69D9,
+	0x9896, 0x69DA, 0x9897, 0x69DC, 0x9898, 0x69DD, 0x9899, 0x69DE,
+	0x989A, 0x69E1, 0x989B, 0x69E2, 0x989C, 0x69E3, 0x989D, 0x69E4,
+	0x989E, 0x69E5, 0x989F, 0x69E6, 0x98A0, 0x69E7, 0x98A1, 0x69E8,
+	0x98A2, 0x69E9, 0x98A3, 0x69EA, 0x98A4, 0x69EB, 0x98A5, 0x69EC,
+	0x98A6, 0x69EE, 0x98A7, 0x69EF, 0x98A8, 0x69F0, 0x98A9, 0x69F1,
+	0x98AA, 0x69F3, 0x98AB, 0x69F4, 0x98AC, 0x69F5, 0x98AD, 0x69F6,
+	0x98AE, 0x69F7, 0x98AF, 0x69F8, 0x98B0, 0x69F9, 0x98B1, 0x69FA,
+	0x98B2, 0x69FB, 0x98B3, 0x69FC, 0x98B4, 0x69FE, 0x98B5, 0x6A00,
+	0x98B6, 0x6A01, 0x98B7, 0x6A02, 0x98B8, 0x6A03, 0x98B9, 0x6A04,
+	0x98BA, 0x6A05, 0x98BB, 0x6A06, 0x98BC, 0x6A07, 0x98BD, 0x6A08,
+	0x98BE, 0x6A09, 0x98BF, 0x6A0B, 0x98C0, 0x6A0C, 0x98C1, 0x6A0D,
+	0x98C2, 0x6A0E, 0x98C3, 0x6A0F, 0x98C4, 0x6A10, 0x98C5, 0x6A11,
+	0x98C6, 0x6A12, 0x98C7, 0x6A13, 0x98C8, 0x6A14, 0x98C9, 0x6A15,
+	0x98CA, 0x6A16, 0x98CB, 0x6A19, 0x98CC, 0x6A1A, 0x98CD, 0x6A1B,
+	0x98CE, 0x6A1C, 0x98CF, 0x6A1D, 0x98D0, 0x6A1E, 0x98D1, 0x6A20,
+	0x98D2, 0x6A22, 0x98D3, 0x6A23, 0x98D4, 0x6A24, 0x98D5, 0x6A25,
+	0x98D6, 0x6A26, 0x98D7, 0x6A27, 0x98D8, 0x6A29, 0x98D9, 0x6A2B,
+	0x98DA, 0x6A2C, 0x98DB, 0x6A2D, 0x98DC, 0x6A2E, 0x98DD, 0x6A30,
+	0x98DE, 0x6A32, 0x98DF, 0x6A33, 0x98E0, 0x6A34, 0x98E1, 0x6A36,
+	0x98E2, 0x6A37, 0x98E3, 0x6A38, 0x98E4, 0x6A39, 0x98E5, 0x6A3A,
+	0x98E6, 0x6A3B, 0x98E7, 0x6A3C, 0x98E8, 0x6A3F, 0x98E9, 0x6A40,
+	0x98EA, 0x6A41, 0x98EB, 0x6A42, 0x98EC, 0x6A43, 0x98ED, 0x6A45,
+	0x98EE, 0x6A46, 0x98EF, 0x6A48, 0x98F0, 0x6A49, 0x98F1, 0x6A4A,
+	0x98F2, 0x6A4B, 0x98F3, 0x6A4C, 0x98F4, 0x6A4D, 0x98F5, 0x6A4E,
+	0x98F6, 0x6A4F, 0x98F7, 0x6A51, 0x98F8, 0x6A52, 0x98F9, 0x6A53,
+	0x98FA, 0x6A54, 0x98FB, 0x6A55, 0x98FC, 0x6A56, 0x98FD, 0x6A57,
+	0x98FE, 0x6A5A, 0x9940, 0x6A5C, 0x9941, 0x6A5D, 0x9942, 0x6A5E,
+	0x9943, 0x6A5F, 0x9944, 0x6A60, 0x9945, 0x6A62, 0x9946, 0x6A63,
+	0x9947, 0x6A64, 0x9948, 0x6A66, 0x9949, 0x6A67, 0x994A, 0x6A68,
+	0x994B, 0x6A69, 0x994C, 0x6A6A, 0x994D, 0x6A6B, 0x994E, 0x6A6C,
+	0x994F, 0x6A6D, 0x9950, 0x6A6E, 0x9951, 0x6A6F, 0x9952, 0x6A70,
+	0x9953, 0x6A72, 0x9954, 0x6A73, 0x9955, 0x6A74, 0x9956, 0x6A75,
+	0x9957, 0x6A76, 0x9958, 0x6A77, 0x9959, 0x6A78, 0x995A, 0x6A7A,
+	0x995B, 0x6A7B, 0x995C, 0x6A7D, 0x995D, 0x6A7E, 0x995E, 0x6A7F,
+	0x995F, 0x6A81, 0x9960, 0x6A82, 0x9961, 0x6A83, 0x9962, 0x6A85,
+	0x9963, 0x6A86, 0x9964, 0x6A87, 0x9965, 0x6A88, 0x9966, 0x6A89,
+	0x9967, 0x6A8A, 0x9968, 0x6A8B, 0x9969, 0x6A8C, 0x996A, 0x6A8D,
+	0x996B, 0x6A8F, 0x996C, 0x6A92, 0x996D, 0x6A93, 0x996E, 0x6A94,
+	0x996F, 0x6A95, 0x9970, 0x6A96, 0x9971, 0x6A98, 0x9972, 0x6A99,
+	0x9973, 0x6A9A, 0x9974, 0x6A9B, 0x9975, 0x6A9C, 0x9976, 0x6A9D,
+	0x9977, 0x6A9E, 0x9978, 0x6A9F, 0x9979, 0x6AA1, 0x997A, 0x6AA2,
+	0x997B, 0x6AA3, 0x997C, 0x6AA4, 0x997D, 0x6AA5, 0x997E, 0x6AA6,
+	0x9980, 0x6AA7, 0x9981, 0x6AA8, 0x9982, 0x6AAA, 0x9983, 0x6AAD,
+	0x9984, 0x6AAE, 0x9985, 0x6AAF, 0x9986, 0x6AB0, 0x9987, 0x6AB1,
+	0x9988, 0x6AB2, 0x9989, 0x6AB3, 0x998A, 0x6AB4, 0x998B, 0x6AB5,
+	0x998C, 0x6AB6, 0x998D, 0x6AB7, 0x998E, 0x6AB8, 0x998F, 0x6AB9,
+	0x9990, 0x6ABA, 0x9991, 0x6ABB, 0x9992, 0x6ABC, 0x9993, 0x6ABD,
+	0x9994, 0x6ABE, 0x9995, 0x6ABF, 0x9996, 0x6AC0, 0x9997, 0x6AC1,
+	0x9998, 0x6AC2, 0x9999, 0x6AC3, 0x999A, 0x6AC4, 0x999B, 0x6AC5,
+	0x999C, 0x6AC6, 0x999D, 0x6AC7, 0x999E, 0x6AC8, 0x999F, 0x6AC9,
+	0x99A0, 0x6ACA, 0x99A1, 0x6ACB, 0x99A2, 0x6ACC, 0x99A3, 0x6ACD,
+	0x99A4, 0x6ACE, 0x99A5, 0x6ACF, 0x99A6, 0x6AD0, 0x99A7, 0x6AD1,
+	0x99A8, 0x6AD2, 0x99A9, 0x6AD3, 0x99AA, 0x6AD4, 0x99AB, 0x6AD5,
+	0x99AC, 0x6AD6, 0x99AD, 0x6AD7, 0x99AE, 0x6AD8, 0x99AF, 0x6AD9,
+	0x99B0, 0x6ADA, 0x99B1, 0x6ADB, 0x99B2, 0x6ADC, 0x99B3, 0x6ADD,
+	0x99B4, 0x6ADE, 0x99B5, 0x6ADF, 0x99B6, 0x6AE0, 0x99B7, 0x6AE1,
+	0x99B8, 0x6AE2, 0x99B9, 0x6AE3, 0x99BA, 0x6AE4, 0x99BB, 0x6AE5,
+	0x99BC, 0x6AE6, 0x99BD, 0x6AE7, 0x99BE, 0x6AE8, 0x99BF, 0x6AE9,
+	0x99C0, 0x6AEA, 0x99C1, 0x6AEB, 0x99C2, 0x6AEC, 0x99C3, 0x6AED,
+	0x99C4, 0x6AEE, 0x99C5, 0x6AEF, 0x99C6, 0x6AF0, 0x99C7, 0x6AF1,
+	0x99C8, 0x6AF2, 0x99C9, 0x6AF3, 0x99CA, 0x6AF4, 0x99CB, 0x6AF5,
+	0x99CC, 0x6AF6, 0x99CD, 0x6AF7, 0x99CE, 0x6AF8, 0x99CF, 0x6AF9,
+	0x99D0, 0x6AFA, 0x99D1, 0x6AFB, 0x99D2, 0x6AFC, 0x99D3, 0x6AFD,
+	0x99D4, 0x6AFE, 0x99D5, 0x6AFF, 0x99D6, 0x6B00, 0x99D7, 0x6B01,
+	0x99D8, 0x6B02, 0x99D9, 0x6B03, 0x99DA, 0x6B04, 0x99DB, 0x6B05,
+	0x99DC, 0x6B06, 0x99DD, 0x6B07, 0x99DE, 0x6B08, 0x99DF, 0x6B09,
+	0x99E0, 0x6B0A, 0x99E1, 0x6B0B, 0x99E2, 0x6B0C, 0x99E3, 0x6B0D,
+	0x99E4, 0x6B0E, 0x99E5, 0x6B0F, 0x99E6, 0x6B10, 0x99E7, 0x6B11,
+	0x99E8, 0x6B12, 0x99E9, 0x6B13, 0x99EA, 0x6B14, 0x99EB, 0x6B15,
+	0x99EC, 0x6B16, 0x99ED, 0x6B17, 0x99EE, 0x6B18, 0x99EF, 0x6B19,
+	0x99F0, 0x6B1A, 0x99F1, 0x6B1B, 0x99F2, 0x6B1C, 0x99F3, 0x6B1D,
+	0x99F4, 0x6B1E, 0x99F5, 0x6B1F, 0x99F6, 0x6B25, 0x99F7, 0x6B26,
+	0x99F8, 0x6B28, 0x99F9, 0x6B29, 0x99FA, 0x6B2A, 0x99FB, 0x6B2B,
+	0x99FC, 0x6B2C, 0x99FD, 0x6B2D, 0x99FE, 0x6B2E, 0x9A40, 0x6B2F,
+	0x9A41, 0x6B30, 0x9A42, 0x6B31, 0x9A43, 0x6B33, 0x9A44, 0x6B34,
+	0x9A45, 0x6B35, 0x9A46, 0x6B36, 0x9A47, 0x6B38, 0x9A48, 0x6B3B,
+	0x9A49, 0x6B3C, 0x9A4A, 0x6B3D, 0x9A4B, 0x6B3F, 0x9A4C, 0x6B40,
+	0x9A4D, 0x6B41, 0x9A4E, 0x6B42, 0x9A4F, 0x6B44, 0x9A50, 0x6B45,
+	0x9A51, 0x6B48, 0x9A52, 0x6B4A, 0x9A53, 0x6B4B, 0x9A54, 0x6B4D,
+	0x9A55, 0x6B4E, 0x9A56, 0x6B4F, 0x9A57, 0x6B50, 0x9A58, 0x6B51,
+	0x9A59, 0x6B52, 0x9A5A, 0x6B53, 0x9A5B, 0x6B54, 0x9A5C, 0x6B55,
+	0x9A5D, 0x6B56, 0x9A5E, 0x6B57, 0x9A5F, 0x6B58, 0x9A60, 0x6B5A,
+	0x9A61, 0x6B5B, 0x9A62, 0x6B5C, 0x9A63, 0x6B5D, 0x9A64, 0x6B5E,
+	0x9A65, 0x6B5F, 0x9A66, 0x6B60, 0x9A67, 0x6B61, 0x9A68, 0x6B68,
+	0x9A69, 0x6B69, 0x9A6A, 0x6B6B, 0x9A6B, 0x6B6C, 0x9A6C, 0x6B6D,
+	0x9A6D, 0x6B6E, 0x9A6E, 0x6B6F, 0x9A6F, 0x6B70, 0x9A70, 0x6B71,
+	0x9A71, 0x6B72, 0x9A72, 0x6B73, 0x9A73, 0x6B74, 0x9A74, 0x6B75,
+	0x9A75, 0x6B76, 0x9A76, 0x6B77, 0x9A77, 0x6B78, 0x9A78, 0x6B7A,
+	0x9A79, 0x6B7D, 0x9A7A, 0x6B7E, 0x9A7B, 0x6B7F, 0x9A7C, 0x6B80,
+	0x9A7D, 0x6B85, 0x9A7E, 0x6B88, 0x9A80, 0x6B8C, 0x9A81, 0x6B8E,
+	0x9A82, 0x6B8F, 0x9A83, 0x6B90, 0x9A84, 0x6B91, 0x9A85, 0x6B94,
+	0x9A86, 0x6B95, 0x9A87, 0x6B97, 0x9A88, 0x6B98, 0x9A89, 0x6B99,
+	0x9A8A, 0x6B9C, 0x9A8B, 0x6B9D, 0x9A8C, 0x6B9E, 0x9A8D, 0x6B9F,
+	0x9A8E, 0x6BA0, 0x9A8F, 0x6BA2, 0x9A90, 0x6BA3, 0x9A91, 0x6BA4,
+	0x9A92, 0x6BA5, 0x9A93, 0x6BA6, 0x9A94, 0x6BA7, 0x9A95, 0x6BA8,
+	0x9A96, 0x6BA9, 0x9A97, 0x6BAB, 0x9A98, 0x6BAC, 0x9A99, 0x6BAD,
+	0x9A9A, 0x6BAE, 0x9A9B, 0x6BAF, 0x9A9C, 0x6BB0, 0x9A9D, 0x6BB1,
+	0x9A9E, 0x6BB2, 0x9A9F, 0x6BB6, 0x9AA0, 0x6BB8, 0x9AA1, 0x6BB9,
+	0x9AA2, 0x6BBA, 0x9AA3, 0x6BBB, 0x9AA4, 0x6BBC, 0x9AA5, 0x6BBD,
+	0x9AA6, 0x6BBE, 0x9AA7, 0x6BC0, 0x9AA8, 0x6BC3, 0x9AA9, 0x6BC4,
+	0x9AAA, 0x6BC6, 0x9AAB, 0x6BC7, 0x9AAC, 0x6BC8, 0x9AAD, 0x6BC9,
+	0x9AAE, 0x6BCA, 0x9AAF, 0x6BCC, 0x9AB0, 0x6BCE, 0x9AB1, 0x6BD0,
+	0x9AB2, 0x6BD1, 0x9AB3, 0x6BD8, 0x9AB4, 0x6BDA, 0x9AB5, 0x6BDC,
+	0x9AB6, 0x6BDD, 0x9AB7, 0x6BDE, 0x9AB8, 0x6BDF, 0x9AB9, 0x6BE0,
+	0x9ABA, 0x6BE2, 0x9ABB, 0x6BE3, 0x9ABC, 0x6BE4, 0x9ABD, 0x6BE5,
+	0x9ABE, 0x6BE6, 0x9ABF, 0x6BE7, 0x9AC0, 0x6BE8, 0x9AC1, 0x6BE9,
+	0x9AC2, 0x6BEC, 0x9AC3, 0x6BED, 0x9AC4, 0x6BEE, 0x9AC5, 0x6BF0,
+	0x9AC6, 0x6BF1, 0x9AC7, 0x6BF2, 0x9AC8, 0x6BF4, 0x9AC9, 0x6BF6,
+	0x9ACA, 0x6BF7, 0x9ACB, 0x6BF8, 0x9ACC, 0x6BFA, 0x9ACD, 0x6BFB,
+	0x9ACE, 0x6BFC, 0x9ACF, 0x6BFE, 0x9AD0, 0x6BFF, 0x9AD1, 0x6C00,
+	0x9AD2, 0x6C01, 0x9AD3, 0x6C02, 0x9AD4, 0x6C03, 0x9AD5, 0x6C04,
+	0x9AD6, 0x6C08, 0x9AD7, 0x6C09, 0x9AD8, 0x6C0A, 0x9AD9, 0x6C0B,
+	0x9ADA, 0x6C0C, 0x9ADB, 0x6C0E, 0x9ADC, 0x6C12, 0x9ADD, 0x6C17,
+	0x9ADE, 0x6C1C, 0x9ADF, 0x6C1D, 0x9AE0, 0x6C1E, 0x9AE1, 0x6C20,
+	0x9AE2, 0x6C23, 0x9AE3, 0x6C25, 0x9AE4, 0x6C2B, 0x9AE5, 0x6C2C,
+	0x9AE6, 0x6C2D, 0x9AE7, 0x6C31, 0x9AE8, 0x6C33, 0x9AE9, 0x6C36,
+	0x9AEA, 0x6C37, 0x9AEB, 0x6C39, 0x9AEC, 0x6C3A, 0x9AED, 0x6C3B,
+	0x9AEE, 0x6C3C, 0x9AEF, 0x6C3E, 0x9AF0, 0x6C3F, 0x9AF1, 0x6C43,
+	0x9AF2, 0x6C44, 0x9AF3, 0x6C45, 0x9AF4, 0x6C48, 0x9AF5, 0x6C4B,
+	0x9AF6, 0x6C4C, 0x9AF7, 0x6C4D, 0x9AF8, 0x6C4E, 0x9AF9, 0x6C4F,
+	0x9AFA, 0x6C51, 0x9AFB, 0x6C52, 0x9AFC, 0x6C53, 0x9AFD, 0x6C56,
+	0x9AFE, 0x6C58, 0x9B40, 0x6C59, 0x9B41, 0x6C5A, 0x9B42, 0x6C62,
+	0x9B43, 0x6C63, 0x9B44, 0x6C65, 0x9B45, 0x6C66, 0x9B46, 0x6C67,
+	0x9B47, 0x6C6B, 0x9B48, 0x6C6C, 0x9B49, 0x6C6D, 0x9B4A, 0x6C6E,
+	0x9B4B, 0x6C6F, 0x9B4C, 0x6C71, 0x9B4D, 0x6C73, 0x9B4E, 0x6C75,
+	0x9B4F, 0x6C77, 0x9B50, 0x6C78, 0x9B51, 0x6C7A, 0x9B52, 0x6C7B,
+	0x9B53, 0x6C7C, 0x9B54, 0x6C7F, 0x9B55, 0x6C80, 0x9B56, 0x6C84,
+	0x9B57, 0x6C87, 0x9B58, 0x6C8A, 0x9B59, 0x6C8B, 0x9B5A, 0x6C8D,
+	0x9B5B, 0x6C8E, 0x9B5C, 0x6C91, 0x9B5D, 0x6C92, 0x9B5E, 0x6C95,
+	0x9B5F, 0x6C96, 0x9B60, 0x6C97, 0x9B61, 0x6C98, 0x9B62, 0x6C9A,
+	0x9B63, 0x6C9C, 0x9B64, 0x6C9D, 0x9B65, 0x6C9E, 0x9B66, 0x6CA0,
+	0x9B67, 0x6CA2, 0x9B68, 0x6CA8, 0x9B69, 0x6CAC, 0x9B6A, 0x6CAF,
+	0x9B6B, 0x6CB0, 0x9B6C, 0x6CB4, 0x9B6D, 0x6CB5, 0x9B6E, 0x6CB6,
+	0x9B6F, 0x6CB7, 0x9B70, 0x6CBA, 0x9B71, 0x6CC0, 0x9B72, 0x6CC1,
+	0x9B73, 0x6CC2, 0x9B74, 0x6CC3, 0x9B75, 0x6CC6, 0x9B76, 0x6CC7,
+	0x9B77, 0x6CC8, 0x9B78, 0x6CCB, 0x9B79, 0x6CCD, 0x9B7A, 0x6CCE,
+	0x9B7B, 0x6CCF, 0x9B7C, 0x6CD1, 0x9B7D, 0x6CD2, 0x9B7E, 0x6CD8,
+	0x9B80, 0x6CD9, 0x9B81, 0x6CDA, 0x9B82, 0x6CDC, 0x9B83, 0x6CDD,
+	0x9B84, 0x6CDF, 0x9B85, 0x6CE4, 0x9B86, 0x6CE6, 0x9B87, 0x6CE7,
+	0x9B88, 0x6CE9, 0x9B89, 0x6CEC, 0x9B8A, 0x6CED, 0x9B8B, 0x6CF2,
+	0x9B8C, 0x6CF4, 0x9B8D, 0x6CF9, 0x9B8E, 0x6CFF, 0x9B8F, 0x6D00,
+	0x9B90, 0x6D02, 0x9B91, 0x6D03, 0x9B92, 0x6D05, 0x9B93, 0x6D06,
+	0x9B94, 0x6D08, 0x9B95, 0x6D09, 0x9B96, 0x6D0A, 0x9B97, 0x6D0D,
+	0x9B98, 0x6D0F, 0x9B99, 0x6D10, 0x9B9A, 0x6D11, 0x9B9B, 0x6D13,
+	0x9B9C, 0x6D14, 0x9B9D, 0x6D15, 0x9B9E, 0x6D16, 0x9B9F, 0x6D18,
+	0x9BA0, 0x6D1C, 0x9BA1, 0x6D1D, 0x9BA2, 0x6D1F, 0x9BA3, 0x6D20,
+	0x9BA4, 0x6D21, 0x9BA5, 0x6D22, 0x9BA6, 0x6D23, 0x9BA7, 0x6D24,
+	0x9BA8, 0x6D26, 0x9BA9, 0x6D28, 0x9BAA, 0x6D29, 0x9BAB, 0x6D2C,
+	0x9BAC, 0x6D2D, 0x9BAD, 0x6D2F, 0x9BAE, 0x6D30, 0x9BAF, 0x6D34,
+	0x9BB0, 0x6D36, 0x9BB1, 0x6D37, 0x9BB2, 0x6D38, 0x9BB3, 0x6D3A,
+	0x9BB4, 0x6D3F, 0x9BB5, 0x6D40, 0x9BB6, 0x6D42, 0x9BB7, 0x6D44,
+	0x9BB8, 0x6D49, 0x9BB9, 0x6D4C, 0x9BBA, 0x6D50, 0x9BBB, 0x6D55,
+	0x9BBC, 0x6D56, 0x9BBD, 0x6D57, 0x9BBE, 0x6D58, 0x9BBF, 0x6D5B,
+	0x9BC0, 0x6D5D, 0x9BC1, 0x6D5F, 0x9BC2, 0x6D61, 0x9BC3, 0x6D62,
+	0x9BC4, 0x6D64, 0x9BC5, 0x6D65, 0x9BC6, 0x6D67, 0x9BC7, 0x6D68,
+	0x9BC8, 0x6D6B, 0x9BC9, 0x6D6C, 0x9BCA, 0x6D6D, 0x9BCB, 0x6D70,
+	0x9BCC, 0x6D71, 0x9BCD, 0x6D72, 0x9BCE, 0x6D73, 0x9BCF, 0x6D75,
+	0x9BD0, 0x6D76, 0x9BD1, 0x6D79, 0x9BD2, 0x6D7A, 0x9BD3, 0x6D7B,
+	0x9BD4, 0x6D7D, 0x9BD5, 0x6D7E, 0x9BD6, 0x6D7F, 0x9BD7, 0x6D80,
+	0x9BD8, 0x6D81, 0x9BD9, 0x6D83, 0x9BDA, 0x6D84, 0x9BDB, 0x6D86,
+	0x9BDC, 0x6D87, 0x9BDD, 0x6D8A, 0x9BDE, 0x6D8B, 0x9BDF, 0x6D8D,
+	0x9BE0, 0x6D8F, 0x9BE1, 0x6D90, 0x9BE2, 0x6D92, 0x9BE3, 0x6D96,
+	0x9BE4, 0x6D97, 0x9BE5, 0x6D98, 0x9BE6, 0x6D99, 0x9BE7, 0x6D9A,
+	0x9BE8, 0x6D9C, 0x9BE9, 0x6DA2, 0x9BEA, 0x6DA5, 0x9BEB, 0x6DAC,
+	0x9BEC, 0x6DAD, 0x9BED, 0x6DB0, 0x9BEE, 0x6DB1, 0x9BEF, 0x6DB3,
+	0x9BF0, 0x6DB4, 0x9BF1, 0x6DB6, 0x9BF2, 0x6DB7, 0x9BF3, 0x6DB9,
+	0x9BF4, 0x6DBA, 0x9BF5, 0x6DBB, 0x9BF6, 0x6DBC, 0x9BF7, 0x6DBD,
+	0x9BF8, 0x6DBE, 0x9BF9, 0x6DC1, 0x9BFA, 0x6DC2, 0x9BFB, 0x6DC3,
+	0x9BFC, 0x6DC8, 0x9BFD, 0x6DC9, 0x9BFE, 0x6DCA, 0x9C40, 0x6DCD,
+	0x9C41, 0x6DCE, 0x9C42, 0x6DCF, 0x9C43, 0x6DD0, 0x9C44, 0x6DD2,
+	0x9C45, 0x6DD3, 0x9C46, 0x6DD4, 0x9C47, 0x6DD5, 0x9C48, 0x6DD7,
+	0x9C49, 0x6DDA, 0x9C4A, 0x6DDB, 0x9C4B, 0x6DDC, 0x9C4C, 0x6DDF,
+	0x9C4D, 0x6DE2, 0x9C4E, 0x6DE3, 0x9C4F, 0x6DE5, 0x9C50, 0x6DE7,
+	0x9C51, 0x6DE8, 0x9C52, 0x6DE9, 0x9C53, 0x6DEA, 0x9C54, 0x6DED,
+	0x9C55, 0x6DEF, 0x9C56, 0x6DF0, 0x9C57, 0x6DF2, 0x9C58, 0x6DF4,
+	0x9C59, 0x6DF5, 0x9C5A, 0x6DF6, 0x9C5B, 0x6DF8, 0x9C5C, 0x6DFA,
+	0x9C5D, 0x6DFD, 0x9C5E, 0x6DFE, 0x9C5F, 0x6DFF, 0x9C60, 0x6E00,
+	0x9C61, 0x6E01, 0x9C62, 0x6E02, 0x9C63, 0x6E03, 0x9C64, 0x6E04,
+	0x9C65, 0x6E06, 0x9C66, 0x6E07, 0x9C67, 0x6E08, 0x9C68, 0x6E09,
+	0x9C69, 0x6E0B, 0x9C6A, 0x6E0F, 0x9C6B, 0x6E12, 0x9C6C, 0x6E13,
+	0x9C6D, 0x6E15, 0x9C6E, 0x6E18, 0x9C6F, 0x6E19, 0x9C70, 0x6E1B,
+	0x9C71, 0x6E1C, 0x9C72, 0x6E1E, 0x9C73, 0x6E1F, 0x9C74, 0x6E22,
+	0x9C75, 0x6E26, 0x9C76, 0x6E27, 0x9C77, 0x6E28, 0x9C78, 0x6E2A,
+	0x9C79, 0x6E2C, 0x9C7A, 0x6E2E, 0x9C7B, 0x6E30, 0x9C7C, 0x6E31,
+	0x9C7D, 0x6E33, 0x9C7E, 0x6E35, 0x9C80, 0x6E36, 0x9C81, 0x6E37,
+	0x9C82, 0x6E39, 0x9C83, 0x6E3B, 0x9C84, 0x6E3C, 0x9C85, 0x6E3D,
+	0x9C86, 0x6E3E, 0x9C87, 0x6E3F, 0x9C88, 0x6E40, 0x9C89, 0x6E41,
+	0x9C8A, 0x6E42, 0x9C8B, 0x6E45, 0x9C8C, 0x6E46, 0x9C8D, 0x6E47,
+	0x9C8E, 0x6E48, 0x9C8F, 0x6E49, 0x9C90, 0x6E4A, 0x9C91, 0x6E4B,
+	0x9C92, 0x6E4C, 0x9C93, 0x6E4F, 0x9C94, 0x6E50, 0x9C95, 0x6E51,
+	0x9C96, 0x6E52, 0x9C97, 0x6E55, 0x9C98, 0x6E57, 0x9C99, 0x6E59,
+	0x9C9A, 0x6E5A, 0x9C9B, 0x6E5C, 0x9C9C, 0x6E5D, 0x9C9D, 0x6E5E,
+	0x9C9E, 0x6E60, 0x9C9F, 0x6E61, 0x9CA0, 0x6E62, 0x9CA1, 0x6E63,
+	0x9CA2, 0x6E64, 0x9CA3, 0x6E65, 0x9CA4, 0x6E66, 0x9CA5, 0x6E67,
+	0x9CA6, 0x6E68, 0x9CA7, 0x6E69, 0x9CA8, 0x6E6A, 0x9CA9, 0x6E6C,
+	0x9CAA, 0x6E6D, 0x9CAB, 0x6E6F, 0x9CAC, 0x6E70, 0x9CAD, 0x6E71,
+	0x9CAE, 0x6E72, 0x9CAF, 0x6E73, 0x9CB0, 0x6E74, 0x9CB1, 0x6E75,
+	0x9CB2, 0x6E76, 0x9CB3, 0x6E77, 0x9CB4, 0x6E78, 0x9CB5, 0x6E79,
+	0x9CB6, 0x6E7A, 0x9CB7, 0x6E7B, 0x9CB8, 0x6E7C, 0x9CB9, 0x6E7D,
+	0x9CBA, 0x6E80, 0x9CBB, 0x6E81, 0x9CBC, 0x6E82, 0x9CBD, 0x6E84,
+	0x9CBE, 0x6E87, 0x9CBF, 0x6E88, 0x9CC0, 0x6E8A, 0x9CC1, 0x6E8B,
+	0x9CC2, 0x6E8C, 0x9CC3, 0x6E8D, 0x9CC4, 0x6E8E, 0x9CC5, 0x6E91,
+	0x9CC6, 0x6E92, 0x9CC7, 0x6E93, 0x9CC8, 0x6E94, 0x9CC9, 0x6E95,
+	0x9CCA, 0x6E96, 0x9CCB, 0x6E97, 0x9CCC, 0x6E99, 0x9CCD, 0x6E9A,
+	0x9CCE, 0x6E9B, 0x9CCF, 0x6E9D, 0x9CD0, 0x6E9E, 0x9CD1, 0x6EA0,
+	0x9CD2, 0x6EA1, 0x9CD3, 0x6EA3, 0x9CD4, 0x6EA4, 0x9CD5, 0x6EA6,
+	0x9CD6, 0x6EA8, 0x9CD7, 0x6EA9, 0x9CD8, 0x6EAB, 0x9CD9, 0x6EAC,
+	0x9CDA, 0x6EAD, 0x9CDB, 0x6EAE, 0x9CDC, 0x6EB0, 0x9CDD, 0x6EB3,
+	0x9CDE, 0x6EB5, 0x9CDF, 0x6EB8, 0x9CE0, 0x6EB9, 0x9CE1, 0x6EBC,
+	0x9CE2, 0x6EBE, 0x9CE3, 0x6EBF, 0x9CE4, 0x6EC0, 0x9CE5, 0x6EC3,
+	0x9CE6, 0x6EC4, 0x9CE7, 0x6EC5, 0x9CE8, 0x6EC6, 0x9CE9, 0x6EC8,
+	0x9CEA, 0x6EC9, 0x9CEB, 0x6ECA, 0x9CEC, 0x6ECC, 0x9CED, 0x6ECD,
+	0x9CEE, 0x6ECE, 0x9CEF, 0x6ED0, 0x9CF0, 0x6ED2, 0x9CF1, 0x6ED6,
+	0x9CF2, 0x6ED8, 0x9CF3, 0x6ED9, 0x9CF4, 0x6EDB, 0x9CF5, 0x6EDC,
+	0x9CF6, 0x6EDD, 0x9CF7, 0x6EE3, 0x9CF8, 0x6EE7, 0x9CF9, 0x6EEA,
+	0x9CFA, 0x6EEB, 0x9CFB, 0x6EEC, 0x9CFC, 0x6EED, 0x9CFD, 0x6EEE,
+	0x9CFE, 0x6EEF, 0x9D40, 0x6EF0, 0x9D41, 0x6EF1, 0x9D42, 0x6EF2,
+	0x9D43, 0x6EF3, 0x9D44, 0x6EF5, 0x9D45, 0x6EF6, 0x9D46, 0x6EF7,
+	0x9D47, 0x6EF8, 0x9D48, 0x6EFA, 0x9D49, 0x6EFB, 0x9D4A, 0x6EFC,
+	0x9D4B, 0x6EFD, 0x9D4C, 0x6EFE, 0x9D4D, 0x6EFF, 0x9D4E, 0x6F00,
+	0x9D4F, 0x6F01, 0x9D50, 0x6F03, 0x9D51, 0x6F04, 0x9D52, 0x6F05,
+	0x9D53, 0x6F07, 0x9D54, 0x6F08, 0x9D55, 0x6F0A, 0x9D56, 0x6F0B,
+	0x9D57, 0x6F0C, 0x9D58, 0x6F0D, 0x9D59, 0x6F0E, 0x9D5A, 0x6F10,
+	0x9D5B, 0x6F11, 0x9D5C, 0x6F12, 0x9D5D, 0x6F16, 0x9D5E, 0x6F17,
+	0x9D5F, 0x6F18, 0x9D60, 0x6F19, 0x9D61, 0x6F1A, 0x9D62, 0x6F1B,
+	0x9D63, 0x6F1C, 0x9D64, 0x6F1D, 0x9D65, 0x6F1E, 0x9D66, 0x6F1F,
+	0x9D67, 0x6F21, 0x9D68, 0x6F22, 0x9D69, 0x6F23, 0x9D6A, 0x6F25,
+	0x9D6B, 0x6F26, 0x9D6C, 0x6F27, 0x9D6D, 0x6F28, 0x9D6E, 0x6F2C,
+	0x9D6F, 0x6F2E, 0x9D70, 0x6F30, 0x9D71, 0x6F32, 0x9D72, 0x6F34,
+	0x9D73, 0x6F35, 0x9D74, 0x6F37, 0x9D75, 0x6F38, 0x9D76, 0x6F39,
+	0x9D77, 0x6F3A, 0x9D78, 0x6F3B, 0x9D79, 0x6F3C, 0x9D7A, 0x6F3D,
+	0x9D7B, 0x6F3F, 0x9D7C, 0x6F40, 0x9D7D, 0x6F41, 0x9D7E, 0x6F42,
+	0x9D80, 0x6F43, 0x9D81, 0x6F44, 0x9D82, 0x6F45, 0x9D83, 0x6F48,
+	0x9D84, 0x6F49, 0x9D85, 0x6F4A, 0x9D86, 0x6F4C, 0x9D87, 0x6F4E,
+	0x9D88, 0x6F4F, 0x9D89, 0x6F50, 0x9D8A, 0x6F51, 0x9D8B, 0x6F52,
+	0x9D8C, 0x6F53, 0x9D8D, 0x6F54, 0x9D8E, 0x6F55, 0x9D8F, 0x6F56,
+	0x9D90, 0x6F57, 0x9D91, 0x6F59, 0x9D92, 0x6F5A, 0x9D93, 0x6F5B,
+	0x9D94, 0x6F5D, 0x9D95, 0x6F5F, 0x9D96, 0x6F60, 0x9D97, 0x6F61,
+	0x9D98, 0x6F63, 0x9D99, 0x6F64, 0x9D9A, 0x6F65, 0x9D9B, 0x6F67,
+	0x9D9C, 0x6F68, 0x9D9D, 0x6F69, 0x9D9E, 0x6F6A, 0x9D9F, 0x6F6B,
+	0x9DA0, 0x6F6C, 0x9DA1, 0x6F6F, 0x9DA2, 0x6F70, 0x9DA3, 0x6F71,
+	0x9DA4, 0x6F73, 0x9DA5, 0x6F75, 0x9DA6, 0x6F76, 0x9DA7, 0x6F77,
+	0x9DA8, 0x6F79, 0x9DA9, 0x6F7B, 0x9DAA, 0x6F7D, 0x9DAB, 0x6F7E,
+	0x9DAC, 0x6F7F, 0x9DAD, 0x6F80, 0x9DAE, 0x6F81, 0x9DAF, 0x6F82,
+	0x9DB0, 0x6F83, 0x9DB1, 0x6F85, 0x9DB2, 0x6F86, 0x9DB3, 0x6F87,
+	0x9DB4, 0x6F8A, 0x9DB5, 0x6F8B, 0x9DB6, 0x6F8F, 0x9DB7, 0x6F90,
+	0x9DB8, 0x6F91, 0x9DB9, 0x6F92, 0x9DBA, 0x6F93, 0x9DBB, 0x6F94,
+	0x9DBC, 0x6F95, 0x9DBD, 0x6F96, 0x9DBE, 0x6F97, 0x9DBF, 0x6F98,
+	0x9DC0, 0x6F99, 0x9DC1, 0x6F9A, 0x9DC2, 0x6F9B, 0x9DC3, 0x6F9D,
+	0x9DC4, 0x6F9E, 0x9DC5, 0x6F9F, 0x9DC6, 0x6FA0, 0x9DC7, 0x6FA2,
+	0x9DC8, 0x6FA3, 0x9DC9, 0x6FA4, 0x9DCA, 0x6FA5, 0x9DCB, 0x6FA6,
+	0x9DCC, 0x6FA8, 0x9DCD, 0x6FA9, 0x9DCE, 0x6FAA, 0x9DCF, 0x6FAB,
+	0x9DD0, 0x6FAC, 0x9DD1, 0x6FAD, 0x9DD2, 0x6FAE, 0x9DD3, 0x6FAF,
+	0x9DD4, 0x6FB0, 0x9DD5, 0x6FB1, 0x9DD6, 0x6FB2, 0x9DD7, 0x6FB4,
+	0x9DD8, 0x6FB5, 0x9DD9, 0x6FB7, 0x9DDA, 0x6FB8, 0x9DDB, 0x6FBA,
+	0x9DDC, 0x6FBB, 0x9DDD, 0x6FBC, 0x9DDE, 0x6FBD, 0x9DDF, 0x6FBE,
+	0x9DE0, 0x6FBF, 0x9DE1, 0x6FC1, 0x9DE2, 0x6FC3, 0x9DE3, 0x6FC4,
+	0x9DE4, 0x6FC5, 0x9DE5, 0x6FC6, 0x9DE6, 0x6FC7, 0x9DE7, 0x6FC8,
+	0x9DE8, 0x6FCA, 0x9DE9, 0x6FCB, 0x9DEA, 0x6FCC, 0x9DEB, 0x6FCD,
+	0x9DEC, 0x6FCE, 0x9DED, 0x6FCF, 0x9DEE, 0x6FD0, 0x9DEF, 0x6FD3,
+	0x9DF0, 0x6FD4, 0x9DF1, 0x6FD5, 0x9DF2, 0x6FD6, 0x9DF3, 0x6FD7,
+	0x9DF4, 0x6FD8, 0x9DF5, 0x6FD9, 0x9DF6, 0x6FDA, 0x9DF7, 0x6FDB,
+	0x9DF8, 0x6FDC, 0x9DF9, 0x6FDD, 0x9DFA, 0x6FDF, 0x9DFB, 0x6FE2,
+	0x9DFC, 0x6FE3, 0x9DFD, 0x6FE4, 0x9DFE, 0x6FE5, 0x9E40, 0x6FE6,
+	0x9E41, 0x6FE7, 0x9E42, 0x6FE8, 0x9E43, 0x6FE9, 0x9E44, 0x6FEA,
+	0x9E45, 0x6FEB, 0x9E46, 0x6FEC, 0x9E47, 0x6FED, 0x9E48, 0x6FF0,
+	0x9E49, 0x6FF1, 0x9E4A, 0x6FF2, 0x9E4B, 0x6FF3, 0x9E4C, 0x6FF4,
+	0x9E4D, 0x6FF5, 0x9E4E, 0x6FF6, 0x9E4F, 0x6FF7, 0x9E50, 0x6FF8,
+	0x9E51, 0x6FF9, 0x9E52, 0x6FFA, 0x9E53, 0x6FFB, 0x9E54, 0x6FFC,
+	0x9E55, 0x6FFD, 0x9E56, 0x6FFE, 0x9E57, 0x6FFF, 0x9E58, 0x7000,
+	0x9E59, 0x7001, 0x9E5A, 0x7002, 0x9E5B, 0x7003, 0x9E5C, 0x7004,
+	0x9E5D, 0x7005, 0x9E5E, 0x7006, 0x9E5F, 0x7007, 0x9E60, 0x7008,
+	0x9E61, 0x7009, 0x9E62, 0x700A, 0x9E63, 0x700B, 0x9E64, 0x700C,
+	0x9E65, 0x700D, 0x9E66, 0x700E, 0x9E67, 0x700F, 0x9E68, 0x7010,
+	0x9E69, 0x7012, 0x9E6A, 0x7013, 0x9E6B, 0x7014, 0x9E6C, 0x7015,
+	0x9E6D, 0x7016, 0x9E6E, 0x7017, 0x9E6F, 0x7018, 0x9E70, 0x7019,
+	0x9E71, 0x701C, 0x9E72, 0x701D, 0x9E73, 0x701E, 0x9E74, 0x701F,
+	0x9E75, 0x7020, 0x9E76, 0x7021, 0x9E77, 0x7022, 0x9E78, 0x7024,
+	0x9E79, 0x7025, 0x9E7A, 0x7026, 0x9E7B, 0x7027, 0x9E7C, 0x7028,
+	0x9E7D, 0x7029, 0x9E7E, 0x702A, 0x9E80, 0x702B, 0x9E81, 0x702C,
+	0x9E82, 0x702D, 0x9E83, 0x702E, 0x9E84, 0x702F, 0x9E85, 0x7030,
+	0x9E86, 0x7031, 0x9E87, 0x7032, 0x9E88, 0x7033, 0x9E89, 0x7034,
+	0x9E8A, 0x7036, 0x9E8B, 0x7037, 0x9E8C, 0x7038, 0x9E8D, 0x703A,
+	0x9E8E, 0x703B, 0x9E8F, 0x703C, 0x9E90, 0x703D, 0x9E91, 0x703E,
+	0x9E92, 0x703F, 0x9E93, 0x7040, 0x9E94, 0x7041, 0x9E95, 0x7042,
+	0x9E96, 0x7043, 0x9E97, 0x7044, 0x9E98, 0x7045, 0x9E99, 0x7046,
+	0x9E9A, 0x7047, 0x9E9B, 0x7048, 0x9E9C, 0x7049, 0x9E9D, 0x704A,
+	0x9E9E, 0x704B, 0x9E9F, 0x704D, 0x9EA0, 0x704E, 0x9EA1, 0x7050,
+	0x9EA2, 0x7051, 0x9EA3, 0x7052, 0x9EA4, 0x7053, 0x9EA5, 0x7054,
+	0x9EA6, 0x7055, 0x9EA7, 0x7056, 0x9EA8, 0x7057, 0x9EA9, 0x7058,
+	0x9EAA, 0x7059, 0x9EAB, 0x705A, 0x9EAC, 0x705B, 0x9EAD, 0x705C,
+	0x9EAE, 0x705D, 0x9EAF, 0x705F, 0x9EB0, 0x7060, 0x9EB1, 0x7061,
+	0x9EB2, 0x7062, 0x9EB3, 0x7063, 0x9EB4, 0x7064, 0x9EB5, 0x7065,
+	0x9EB6, 0x7066, 0x9EB7, 0x7067, 0x9EB8, 0x7068, 0x9EB9, 0x7069,
+	0x9EBA, 0x706A, 0x9EBB, 0x706E, 0x9EBC, 0x7071, 0x9EBD, 0x7072,
+	0x9EBE, 0x7073, 0x9EBF, 0x7074, 0x9EC0, 0x7077, 0x9EC1, 0x7079,
+	0x9EC2, 0x707A, 0x9EC3, 0x707B, 0x9EC4, 0x707D, 0x9EC5, 0x7081,
+	0x9EC6, 0x7082, 0x9EC7, 0x7083, 0x9EC8, 0x7084, 0x9EC9, 0x7086,
+	0x9ECA, 0x7087, 0x9ECB, 0x7088, 0x9ECC, 0x708B, 0x9ECD, 0x708C,
+	0x9ECE, 0x708D, 0x9ECF, 0x708F, 0x9ED0, 0x7090, 0x9ED1, 0x7091,
+	0x9ED2, 0x7093, 0x9ED3, 0x7097, 0x9ED4, 0x7098, 0x9ED5, 0x709A,
+	0x9ED6, 0x709B, 0x9ED7, 0x709E, 0x9ED8, 0x709F, 0x9ED9, 0x70A0,
+	0x9EDA, 0x70A1, 0x9EDB, 0x70A2, 0x9EDC, 0x70A3, 0x9EDD, 0x70A4,
+	0x9EDE, 0x70A5, 0x9EDF, 0x70A6, 0x9EE0, 0x70A7, 0x9EE1, 0x70A8,
+	0x9EE2, 0x70A9, 0x9EE3, 0x70AA, 0x9EE4, 0x70B0, 0x9EE5, 0x70B2,
+	0x9EE6, 0x70B4, 0x9EE7, 0x70B5, 0x9EE8, 0x70B6, 0x9EE9, 0x70BA,
+	0x9EEA, 0x70BE, 0x9EEB, 0x70BF, 0x9EEC, 0x70C4, 0x9EED, 0x70C5,
+	0x9EEE, 0x70C6, 0x9EEF, 0x70C7, 0x9EF0, 0x70C9, 0x9EF1, 0x70CB,
+	0x9EF2, 0x70CC, 0x9EF3, 0x70CD, 0x9EF4, 0x70CE, 0x9EF5, 0x70CF,
+	0x9EF6, 0x70D0, 0x9EF7, 0x70D1, 0x9EF8, 0x70D2, 0x9EF9, 0x70D3,
+	0x9EFA, 0x70D4, 0x9EFB, 0x70D5, 0x9EFC, 0x70D6, 0x9EFD, 0x70D7,
+	0x9EFE, 0x70DA, 0x9F40, 0x70DC, 0x9F41, 0x70DD, 0x9F42, 0x70DE,
+	0x9F43, 0x70E0, 0x9F44, 0x70E1, 0x9F45, 0x70E2, 0x9F46, 0x70E3,
+	0x9F47, 0x70E5, 0x9F48, 0x70EA, 0x9F49, 0x70EE, 0x9F4A, 0x70F0,
+	0x9F4B, 0x70F1, 0x9F4C, 0x70F2, 0x9F4D, 0x70F3, 0x9F4E, 0x70F4,
+	0x9F4F, 0x70F5, 0x9F50, 0x70F6, 0x9F51, 0x70F8, 0x9F52, 0x70FA,
+	0x9F53, 0x70FB, 0x9F54, 0x70FC, 0x9F55, 0x70FE, 0x9F56, 0x70FF,
+	0x9F57, 0x7100, 0x9F58, 0x7101, 0x9F59, 0x7102, 0x9F5A, 0x7103,
+	0x9F5B, 0x7104, 0x9F5C, 0x7105, 0x9F5D, 0x7106, 0x9F5E, 0x7107,
+	0x9F5F, 0x7108, 0x9F60, 0x710B, 0x9F61, 0x710C, 0x9F62, 0x710D,
+	0x9F63, 0x710E, 0x9F64, 0x710F, 0x9F65, 0x7111, 0x9F66, 0x7112,
+	0x9F67, 0x7114, 0x9F68, 0x7117, 0x9F69, 0x711B, 0x9F6A, 0x711C,
+	0x9F6B, 0x711D, 0x9F6C, 0x711E, 0x9F6D, 0x711F, 0x9F6E, 0x7120,
+	0x9F6F, 0x7121, 0x9F70, 0x7122, 0x9F71, 0x7123, 0x9F72, 0x7124,
+	0x9F73, 0x7125, 0x9F74, 0x7127, 0x9F75, 0x7128, 0x9F76, 0x7129,
+	0x9F77, 0x712A, 0x9F78, 0x712B, 0x9F79, 0x712C, 0x9F7A, 0x712D,
+	0x9F7B, 0x712E, 0x9F7C, 0x7132, 0x9F7D, 0x7133, 0x9F7E, 0x7134,
+	0x9F80, 0x7135, 0x9F81, 0x7137, 0x9F82, 0x7138, 0x9F83, 0x7139,
+	0x9F84, 0x713A, 0x9F85, 0x713B, 0x9F86, 0x713C, 0x9F87, 0x713D,
+	0x9F88, 0x713E, 0x9F89, 0x713F, 0x9F8A, 0x7140, 0x9F8B, 0x7141,
+	0x9F8C, 0x7142, 0x9F8D, 0x7143, 0x9F8E, 0x7144, 0x9F8F, 0x7146,
+	0x9F90, 0x7147, 0x9F91, 0x7148, 0x9F92, 0x7149, 0x9F93, 0x714B,
+	0x9F94, 0x714D, 0x9F95, 0x714F, 0x9F96, 0x7150, 0x9F97, 0x7151,
+	0x9F98, 0x7152, 0x9F99, 0x7153, 0x9F9A, 0x7154, 0x9F9B, 0x7155,
+	0x9F9C, 0x7156, 0x9F9D, 0x7157, 0x9F9E, 0x7158, 0x9F9F, 0x7159,
+	0x9FA0, 0x715A, 0x9FA1, 0x715B, 0x9FA2, 0x715D, 0x9FA3, 0x715F,
+	0x9FA4, 0x7160, 0x9FA5, 0x7161, 0x9FA6, 0x7162, 0x9FA7, 0x7163,
+	0x9FA8, 0x7165, 0x9FA9, 0x7169, 0x9FAA, 0x716A, 0x9FAB, 0x716B,
+	0x9FAC, 0x716C, 0x9FAD, 0x716D, 0x9FAE, 0x716F, 0x9FAF, 0x7170,
+	0x9FB0, 0x7171, 0x9FB1, 0x7174, 0x9FB2, 0x7175, 0x9FB3, 0x7176,
+	0x9FB4, 0x7177, 0x9FB5, 0x7179, 0x9FB6, 0x717B, 0x9FB7, 0x717C,
+	0x9FB8, 0x717E, 0x9FB9, 0x717F, 0x9FBA, 0x7180, 0x9FBB, 0x7181,
+	0x9FBC, 0x7182, 0x9FBD, 0x7183, 0x9FBE, 0x7185, 0x9FBF, 0x7186,
+	0x9FC0, 0x7187, 0x9FC1, 0x7188, 0x9FC2, 0x7189, 0x9FC3, 0x718B,
+	0x9FC4, 0x718C, 0x9FC5, 0x718D, 0x9FC6, 0x718E, 0x9FC7, 0x7190,
+	0x9FC8, 0x7191, 0x9FC9, 0x7192, 0x9FCA, 0x7193, 0x9FCB, 0x7195,
+	0x9FCC, 0x7196, 0x9FCD, 0x7197, 0x9FCE, 0x719A, 0x9FCF, 0x719B,
+	0x9FD0, 0x719C, 0x9FD1, 0x719D, 0x9FD2, 0x719E, 0x9FD3, 0x71A1,
+	0x9FD4, 0x71A2, 0x9FD5, 0x71A3, 0x9FD6, 0x71A4, 0x9FD7, 0x71A5,
+	0x9FD8, 0x71A6, 0x9FD9, 0x71A7, 0x9FDA, 0x71A9, 0x9FDB, 0x71AA,
+	0x9FDC, 0x71AB, 0x9FDD, 0x71AD, 0x9FDE, 0x71AE, 0x9FDF, 0x71AF,
+	0x9FE0, 0x71B0, 0x9FE1, 0x71B1, 0x9FE2, 0x71B2, 0x9FE3, 0x71B4,
+	0x9FE4, 0x71B6, 0x9FE5, 0x71B7, 0x9FE6, 0x71B8, 0x9FE7, 0x71BA,
+	0x9FE8, 0x71BB, 0x9FE9, 0x71BC, 0x9FEA, 0x71BD, 0x9FEB, 0x71BE,
+	0x9FEC, 0x71BF, 0x9FED, 0x71C0, 0x9FEE, 0x71C1, 0x9FEF, 0x71C2,
+	0x9FF0, 0x71C4, 0x9FF1, 0x71C5, 0x9FF2, 0x71C6, 0x9FF3, 0x71C7,
+	0x9FF4, 0x71C8, 0x9FF5, 0x71C9, 0x9FF6, 0x71CA, 0x9FF7, 0x71CB,
+	0x9FF8, 0x71CC, 0x9FF9, 0x71CD, 0x9FFA, 0x71CF, 0x9FFB, 0x71D0,
+	0x9FFC, 0x71D1, 0x9FFD, 0x71D2, 0x9FFE, 0x71D3, 0xA040, 0x71D6,
+	0xA041, 0x71D7, 0xA042, 0x71D8, 0xA043, 0x71D9, 0xA044, 0x71DA,
+	0xA045, 0x71DB, 0xA046, 0x71DC, 0xA047, 0x71DD, 0xA048, 0x71DE,
+	0xA049, 0x71DF, 0xA04A, 0x71E1, 0xA04B, 0x71E2, 0xA04C, 0x71E3,
+	0xA04D, 0x71E4, 0xA04E, 0x71E6, 0xA04F, 0x71E8, 0xA050, 0x71E9,
+	0xA051, 0x71EA, 0xA052, 0x71EB, 0xA053, 0x71EC, 0xA054, 0x71ED,
+	0xA055, 0x71EF, 0xA056, 0x71F0, 0xA057, 0x71F1, 0xA058, 0x71F2,
+	0xA059, 0x71F3, 0xA05A, 0x71F4, 0xA05B, 0x71F5, 0xA05C, 0x71F6,
+	0xA05D, 0x71F7, 0xA05E, 0x71F8, 0xA05F, 0x71FA, 0xA060, 0x71FB,
+	0xA061, 0x71FC, 0xA062, 0x71FD, 0xA063, 0x71FE, 0xA064, 0x71FF,
+	0xA065, 0x7200, 0xA066, 0x7201, 0xA067, 0x7202, 0xA068, 0x7203,
+	0xA069, 0x7204, 0xA06A, 0x7205, 0xA06B, 0x7207, 0xA06C, 0x7208,
+	0xA06D, 0x7209, 0xA06E, 0x720A, 0xA06F, 0x720B, 0xA070, 0x720C,
+	0xA071, 0x720D, 0xA072, 0x720E, 0xA073, 0x720F, 0xA074, 0x7210,
+	0xA075, 0x7211, 0xA076, 0x7212, 0xA077, 0x7213, 0xA078, 0x7214,
+	0xA079, 0x7215, 0xA07A, 0x7216, 0xA07B, 0x7217, 0xA07C, 0x7218,
+	0xA07D, 0x7219, 0xA07E, 0x721A, 0xA080, 0x721B, 0xA081, 0x721C,
+	0xA082, 0x721E, 0xA083, 0x721F, 0xA084, 0x7220, 0xA085, 0x7221,
+	0xA086, 0x7222, 0xA087, 0x7223, 0xA088, 0x7224, 0xA089, 0x7225,
+	0xA08A, 0x7226, 0xA08B, 0x7227, 0xA08C, 0x7229, 0xA08D, 0x722B,
+	0xA08E, 0x722D, 0xA08F, 0x722E, 0xA090, 0x722F, 0xA091, 0x7232,
+	0xA092, 0x7233, 0xA093, 0x7234, 0xA094, 0x723A, 0xA095, 0x723C,
+	0xA096, 0x723E, 0xA097, 0x7240, 0xA098, 0x7241, 0xA099, 0x7242,
+	0xA09A, 0x7243, 0xA09B, 0x7244, 0xA09C, 0x7245, 0xA09D, 0x7246,
+	0xA09E, 0x7249, 0xA09F, 0x724A, 0xA0A0, 0x724B, 0xA0A1, 0x724E,
+	0xA0A2, 0x724F, 0xA0A3, 0x7250, 0xA0A4, 0x7251, 0xA0A5, 0x7253,
+	0xA0A6, 0x7254, 0xA0A7, 0x7255, 0xA0A8, 0x7257, 0xA0A9, 0x7258,
+	0xA0AA, 0x725A, 0xA0AB, 0x725C, 0xA0AC, 0x725E, 0xA0AD, 0x7260,
+	0xA0AE, 0x7263, 0xA0AF, 0x7264, 0xA0B0, 0x7265, 0xA0B1, 0x7268,
+	0xA0B2, 0x726A, 0xA0B3, 0x726B, 0xA0B4, 0x726C, 0xA0B5, 0x726D,
+	0xA0B6, 0x7270, 0xA0B7, 0x7271, 0xA0B8, 0x7273, 0xA0B9, 0x7274,
+	0xA0BA, 0x7276, 0xA0BB, 0x7277, 0xA0BC, 0x7278, 0xA0BD, 0x727B,
+	0xA0BE, 0x727C, 0xA0BF, 0x727D, 0xA0C0, 0x7282, 0xA0C1, 0x7283,
+	0xA0C2, 0x7285, 0xA0C3, 0x7286, 0xA0C4, 0x7287, 0xA0C5, 0x7288,
+	0xA0C6, 0x7289, 0xA0C7, 0x728C, 0xA0C8, 0x728E, 0xA0C9, 0x7290,
+	0xA0CA, 0x7291, 0xA0CB, 0x7293, 0xA0CC, 0x7294, 0xA0CD, 0x7295,
+	0xA0CE, 0x7296, 0xA0CF, 0x7297, 0xA0D0, 0x7298, 0xA0D1, 0x7299,
+	0xA0D2, 0x729A, 0xA0D3, 0x729B, 0xA0D4, 0x729C, 0xA0D5, 0x729D,
+	0xA0D6, 0x729E, 0xA0D7, 0x72A0, 0xA0D8, 0x72A1, 0xA0D9, 0x72A2,
+	0xA0DA, 0x72A3, 0xA0DB, 0x72A4, 0xA0DC, 0x72A5, 0xA0DD, 0x72A6,
+	0xA0DE, 0x72A7, 0xA0DF, 0x72A8, 0xA0E0, 0x72A9, 0xA0E1, 0x72AA,
+	0xA0E2, 0x72AB, 0xA0E3, 0x72AE, 0xA0E4, 0x72B1, 0xA0E5, 0x72B2,
+	0xA0E6, 0x72B3, 0xA0E7, 0x72B5, 0xA0E8, 0x72BA, 0xA0E9, 0x72BB,
+	0xA0EA, 0x72BC, 0xA0EB, 0x72BD, 0xA0EC, 0x72BE, 0xA0ED, 0x72BF,
+	0xA0EE, 0x72C0, 0xA0EF, 0x72C5, 0xA0F0, 0x72C6, 0xA0F1, 0x72C7,
+	0xA0F2, 0x72C9, 0xA0F3, 0x72CA, 0xA0F4, 0x72CB, 0xA0F5, 0x72CC,
+	0xA0F6, 0x72CF, 0xA0F7, 0x72D1, 0xA0F8, 0x72D3, 0xA0F9, 0x72D4,
+	0xA0FA, 0x72D5, 0xA0FB, 0x72D6, 0xA0FC, 0x72D8, 0xA0FD, 0x72DA,
+	0xA0FE, 0x72DB, 0xA1A1, 0x3000, 0xA1A2, 0x3001, 0xA1A3, 0x3002,
+	0xA1A4, 0x00B7, 0xA1A5, 0x02C9, 0xA1A6, 0x02C7, 0xA1A7, 0x00A8,
+	0xA1A8, 0x3003, 0xA1A9, 0x3005, 0xA1AA, 0x2014, 0xA1AB, 0xFF5E,
+	0xA1AC, 0x2016, 0xA1AD, 0x2026, 0xA1AE, 0x2018, 0xA1AF, 0x2019,
+	0xA1B0, 0x201C, 0xA1B1, 0x201D, 0xA1B2, 0x3014, 0xA1B3, 0x3015,
+	0xA1B4, 0x3008, 0xA1B5, 0x3009, 0xA1B6, 0x300A, 0xA1B7, 0x300B,
+	0xA1B8, 0x300C, 0xA1B9, 0x300D, 0xA1BA, 0x300E, 0xA1BB, 0x300F,
+	0xA1BC, 0x3016, 0xA1BD, 0x3017, 0xA1BE, 0x3010, 0xA1BF, 0x3011,
+	0xA1C0, 0x00B1, 0xA1C1, 0x00D7, 0xA1C2, 0x00F7, 0xA1C3, 0x2236,
+	0xA1C4, 0x2227, 0xA1C5, 0x2228, 0xA1C6, 0x2211, 0xA1C7, 0x220F,
+	0xA1C8, 0x222A, 0xA1C9, 0x2229, 0xA1CA, 0x2208, 0xA1CB, 0x2237,
+	0xA1CC, 0x221A, 0xA1CD, 0x22A5, 0xA1CE, 0x2225, 0xA1CF, 0x2220,
+	0xA1D0, 0x2312, 0xA1D1, 0x2299, 0xA1D2, 0x222B, 0xA1D3, 0x222E,
+	0xA1D4, 0x2261, 0xA1D5, 0x224C, 0xA1D6, 0x2248, 0xA1D7, 0x223D,
+	0xA1D8, 0x221D, 0xA1D9, 0x2260, 0xA1DA, 0x226E, 0xA1DB, 0x226F,
+	0xA1DC, 0x2264, 0xA1DD, 0x2265, 0xA1DE, 0x221E, 0xA1DF, 0x2235,
+	0xA1E0, 0x2234, 0xA1E1, 0x2642, 0xA1E2, 0x2640, 0xA1E3, 0x00B0,
+	0xA1E4, 0x2032, 0xA1E5, 0x2033, 0xA1E6, 0x2103, 0xA1E7, 0xFF04,
+	0xA1E8, 0x00A4, 0xA1E9, 0xFFE0, 0xA1EA, 0xFFE1, 0xA1EB, 0x2030,
+	0xA1EC, 0x00A7, 0xA1ED, 0x2116, 0xA1EE, 0x2606, 0xA1EF, 0x2605,
+	0xA1F0, 0x25CB, 0xA1F1, 0x25CF, 0xA1F2, 0x25CE, 0xA1F3, 0x25C7,
+	0xA1F4, 0x25C6, 0xA1F5, 0x25A1, 0xA1F6, 0x25A0, 0xA1F7, 0x25B3,
+	0xA1F8, 0x25B2, 0xA1F9, 0x203B, 0xA1FA, 0x2192, 0xA1FB, 0x2190,
+	0xA1FC, 0x2191, 0xA1FD, 0x2193, 0xA1FE, 0x3013, 0xA2A1, 0x2170,
+	0xA2A2, 0x2171, 0xA2A3, 0x2172, 0xA2A4, 0x2173, 0xA2A5, 0x2174,
+	0xA2A6, 0x2175, 0xA2A7, 0x2176, 0xA2A8, 0x2177, 0xA2A9, 0x2178,
+	0xA2AA, 0x2179, 0xA2B1, 0x2488, 0xA2B2, 0x2489, 0xA2B3, 0x248A,
+	0xA2B4, 0x248B, 0xA2B5, 0x248C, 0xA2B6, 0x248D, 0xA2B7, 0x248E,
+	0xA2B8, 0x248F, 0xA2B9, 0x2490, 0xA2BA, 0x2491, 0xA2BB, 0x2492,
+	0xA2BC, 0x2493, 0xA2BD, 0x2494, 0xA2BE, 0x2495, 0xA2BF, 0x2496,
+	0xA2C0, 0x2497, 0xA2C1, 0x2498, 0xA2C2, 0x2499, 0xA2C3, 0x249A,
+	0xA2C4, 0x249B, 0xA2C5, 0x2474, 0xA2C6, 0x2475, 0xA2C7, 0x2476,
+	0xA2C8, 0x2477, 0xA2C9, 0x2478, 0xA2CA, 0x2479, 0xA2CB, 0x247A,
+	0xA2CC, 0x247B, 0xA2CD, 0x247C, 0xA2CE, 0x247D, 0xA2CF, 0x247E,
+	0xA2D0, 0x247F, 0xA2D1, 0x2480, 0xA2D2, 0x2481, 0xA2D3, 0x2482,
+	0xA2D4, 0x2483, 0xA2D5, 0x2484, 0xA2D6, 0x2485, 0xA2D7, 0x2486,
+	0xA2D8, 0x2487, 0xA2D9, 0x2460, 0xA2DA, 0x2461, 0xA2DB, 0x2462,
+	0xA2DC, 0x2463, 0xA2DD, 0x2464, 0xA2DE, 0x2465, 0xA2DF, 0x2466,
+	0xA2E0, 0x2467, 0xA2E1, 0x2468, 0xA2E2, 0x2469, 0xA2E5, 0x3220,
+	0xA2E6, 0x3221, 0xA2E7, 0x3222, 0xA2E8, 0x3223, 0xA2E9, 0x3224,
+	0xA2EA, 0x3225, 0xA2EB, 0x3226, 0xA2EC, 0x3227, 0xA2ED, 0x3228,
+	0xA2EE, 0x3229, 0xA2F1, 0x2160, 0xA2F2, 0x2161, 0xA2F3, 0x2162,
+	0xA2F4, 0x2163, 0xA2F5, 0x2164, 0xA2F6, 0x2165, 0xA2F7, 0x2166,
+	0xA2F8, 0x2167, 0xA2F9, 0x2168, 0xA2FA, 0x2169, 0xA2FB, 0x216A,
+	0xA2FC, 0x216B, 0xA3A1, 0xFF01, 0xA3A2, 0xFF02, 0xA3A3, 0xFF03,
+	0xA3A4, 0xFFE5, 0xA3A5, 0xFF05, 0xA3A6, 0xFF06, 0xA3A7, 0xFF07,
+	0xA3A8, 0xFF08, 0xA3A9, 0xFF09, 0xA3AA, 0xFF0A, 0xA3AB, 0xFF0B,
+	0xA3AC, 0xFF0C, 0xA3AD, 0xFF0D, 0xA3AE, 0xFF0E, 0xA3AF, 0xFF0F,
+	0xA3B0, 0xFF10, 0xA3B1, 0xFF11, 0xA3B2, 0xFF12, 0xA3B3, 0xFF13,
+	0xA3B4, 0xFF14, 0xA3B5, 0xFF15, 0xA3B6, 0xFF16, 0xA3B7, 0xFF17,
+	0xA3B8, 0xFF18, 0xA3B9, 0xFF19, 0xA3BA, 0xFF1A, 0xA3BB, 0xFF1B,
+	0xA3BC, 0xFF1C, 0xA3BD, 0xFF1D, 0xA3BE, 0xFF1E, 0xA3BF, 0xFF1F,
+	0xA3C0, 0xFF20, 0xA3C1, 0xFF21, 0xA3C2, 0xFF22, 0xA3C3, 0xFF23,
+	0xA3C4, 0xFF24, 0xA3C5, 0xFF25, 0xA3C6, 0xFF26, 0xA3C7, 0xFF27,
+	0xA3C8, 0xFF28, 0xA3C9, 0xFF29, 0xA3CA, 0xFF2A, 0xA3CB, 0xFF2B,
+	0xA3CC, 0xFF2C, 0xA3CD, 0xFF2D, 0xA3CE, 0xFF2E, 0xA3CF, 0xFF2F,
+	0xA3D0, 0xFF30, 0xA3D1, 0xFF31, 0xA3D2, 0xFF32, 0xA3D3, 0xFF33,
+	0xA3D4, 0xFF34, 0xA3D5, 0xFF35, 0xA3D6, 0xFF36, 0xA3D7, 0xFF37,
+	0xA3D8, 0xFF38, 0xA3D9, 0xFF39, 0xA3DA, 0xFF3A, 0xA3DB, 0xFF3B,
+	0xA3DC, 0xFF3C, 0xA3DD, 0xFF3D, 0xA3DE, 0xFF3E, 0xA3DF, 0xFF3F,
+	0xA3E0, 0xFF40, 0xA3E1, 0xFF41, 0xA3E2, 0xFF42, 0xA3E3, 0xFF43,
+	0xA3E4, 0xFF44, 0xA3E5, 0xFF45, 0xA3E6, 0xFF46, 0xA3E7, 0xFF47,
+	0xA3E8, 0xFF48, 0xA3E9, 0xFF49, 0xA3EA, 0xFF4A, 0xA3EB, 0xFF4B,
+	0xA3EC, 0xFF4C, 0xA3ED, 0xFF4D, 0xA3EE, 0xFF4E, 0xA3EF, 0xFF4F,
+	0xA3F0, 0xFF50, 0xA3F1, 0xFF51, 0xA3F2, 0xFF52, 0xA3F3, 0xFF53,
+	0xA3F4, 0xFF54, 0xA3F5, 0xFF55, 0xA3F6, 0xFF56, 0xA3F7, 0xFF57,
+	0xA3F8, 0xFF58, 0xA3F9, 0xFF59, 0xA3FA, 0xFF5A, 0xA3FB, 0xFF5B,
+	0xA3FC, 0xFF5C, 0xA3FD, 0xFF5D, 0xA3FE, 0xFFE3, 0xA4A1, 0x3041,
+	0xA4A2, 0x3042, 0xA4A3, 0x3043, 0xA4A4, 0x3044, 0xA4A5, 0x3045,
+	0xA4A6, 0x3046, 0xA4A7, 0x3047, 0xA4A8, 0x3048, 0xA4A9, 0x3049,
+	0xA4AA, 0x304A, 0xA4AB, 0x304B, 0xA4AC, 0x304C, 0xA4AD, 0x304D,
+	0xA4AE, 0x304E, 0xA4AF, 0x304F, 0xA4B0, 0x3050, 0xA4B1, 0x3051,
+	0xA4B2, 0x3052, 0xA4B3, 0x3053, 0xA4B4, 0x3054, 0xA4B5, 0x3055,
+	0xA4B6, 0x3056, 0xA4B7, 0x3057, 0xA4B8, 0x3058, 0xA4B9, 0x3059,
+	0xA4BA, 0x305A, 0xA4BB, 0x305B, 0xA4BC, 0x305C, 0xA4BD, 0x305D,
+	0xA4BE, 0x305E, 0xA4BF, 0x305F, 0xA4C0, 0x3060, 0xA4C1, 0x3061,
+	0xA4C2, 0x3062, 0xA4C3, 0x3063, 0xA4C4, 0x3064, 0xA4C5, 0x3065,
+	0xA4C6, 0x3066, 0xA4C7, 0x3067, 0xA4C8, 0x3068, 0xA4C9, 0x3069,
+	0xA4CA, 0x306A, 0xA4CB, 0x306B, 0xA4CC, 0x306C, 0xA4CD, 0x306D,
+	0xA4CE, 0x306E, 0xA4CF, 0x306F, 0xA4D0, 0x3070, 0xA4D1, 0x3071,
+	0xA4D2, 0x3072, 0xA4D3, 0x3073, 0xA4D4, 0x3074, 0xA4D5, 0x3075,
+	0xA4D6, 0x3076, 0xA4D7, 0x3077, 0xA4D8, 0x3078, 0xA4D9, 0x3079,
+	0xA4DA, 0x307A, 0xA4DB, 0x307B, 0xA4DC, 0x307C, 0xA4DD, 0x307D,
+	0xA4DE, 0x307E, 0xA4DF, 0x307F, 0xA4E0, 0x3080, 0xA4E1, 0x3081,
+	0xA4E2, 0x3082, 0xA4E3, 0x3083, 0xA4E4, 0x3084, 0xA4E5, 0x3085,
+	0xA4E6, 0x3086, 0xA4E7, 0x3087, 0xA4E8, 0x3088, 0xA4E9, 0x3089,
+	0xA4EA, 0x308A, 0xA4EB, 0x308B, 0xA4EC, 0x308C, 0xA4ED, 0x308D,
+	0xA4EE, 0x308E, 0xA4EF, 0x308F, 0xA4F0, 0x3090, 0xA4F1, 0x3091,
+	0xA4F2, 0x3092, 0xA4F3, 0x3093, 0xA5A1, 0x30A1, 0xA5A2, 0x30A2,
+	0xA5A3, 0x30A3, 0xA5A4, 0x30A4, 0xA5A5, 0x30A5, 0xA5A6, 0x30A6,
+	0xA5A7, 0x30A7, 0xA5A8, 0x30A8, 0xA5A9, 0x30A9, 0xA5AA, 0x30AA,
+	0xA5AB, 0x30AB, 0xA5AC, 0x30AC, 0xA5AD, 0x30AD, 0xA5AE, 0x30AE,
+	0xA5AF, 0x30AF, 0xA5B0, 0x30B0, 0xA5B1, 0x30B1, 0xA5B2, 0x30B2,
+	0xA5B3, 0x30B3, 0xA5B4, 0x30B4, 0xA5B5, 0x30B5, 0xA5B6, 0x30B6,
+	0xA5B7, 0x30B7, 0xA5B8, 0x30B8, 0xA5B9, 0x30B9, 0xA5BA, 0x30BA,
+	0xA5BB, 0x30BB, 0xA5BC, 0x30BC, 0xA5BD, 0x30BD, 0xA5BE, 0x30BE,
+	0xA5BF, 0x30BF, 0xA5C0, 0x30C0, 0xA5C1, 0x30C1, 0xA5C2, 0x30C2,
+	0xA5C3, 0x30C3, 0xA5C4, 0x30C4, 0xA5C5, 0x30C5, 0xA5C6, 0x30C6,
+	0xA5C7, 0x30C7, 0xA5C8, 0x30C8, 0xA5C9, 0x30C9, 0xA5CA, 0x30CA,
+	0xA5CB, 0x30CB, 0xA5CC, 0x30CC, 0xA5CD, 0x30CD, 0xA5CE, 0x30CE,
+	0xA5CF, 0x30CF, 0xA5D0, 0x30D0, 0xA5D1, 0x30D1, 0xA5D2, 0x30D2,
+	0xA5D3, 0x30D3, 0xA5D4, 0x30D4, 0xA5D5, 0x30D5, 0xA5D6, 0x30D6,
+	0xA5D7, 0x30D7, 0xA5D8, 0x30D8, 0xA5D9, 0x30D9, 0xA5DA, 0x30DA,
+	0xA5DB, 0x30DB, 0xA5DC, 0x30DC, 0xA5DD, 0x30DD, 0xA5DE, 0x30DE,
+	0xA5DF, 0x30DF, 0xA5E0, 0x30E0, 0xA5E1, 0x30E1, 0xA5E2, 0x30E2,
+	0xA5E3, 0x30E3, 0xA5E4, 0x30E4, 0xA5E5, 0x30E5, 0xA5E6, 0x30E6,
+	0xA5E7, 0x30E7, 0xA5E8, 0x30E8, 0xA5E9, 0x30E9, 0xA5EA, 0x30EA,
+	0xA5EB, 0x30EB, 0xA5EC, 0x30EC, 0xA5ED, 0x30ED, 0xA5EE, 0x30EE,
+	0xA5EF, 0x30EF, 0xA5F0, 0x30F0, 0xA5F1, 0x30F1, 0xA5F2, 0x30F2,
+	0xA5F3, 0x30F3, 0xA5F4, 0x30F4, 0xA5F5, 0x30F5, 0xA5F6, 0x30F6,
+	0xA6A1, 0x0391, 0xA6A2, 0x0392, 0xA6A3, 0x0393, 0xA6A4, 0x0394,
+	0xA6A5, 0x0395, 0xA6A6, 0x0396, 0xA6A7, 0x0397, 0xA6A8, 0x0398,
+	0xA6A9, 0x0399, 0xA6AA, 0x039A, 0xA6AB, 0x039B, 0xA6AC, 0x039C,
+	0xA6AD, 0x039D, 0xA6AE, 0x039E, 0xA6AF, 0x039F, 0xA6B0, 0x03A0,
+	0xA6B1, 0x03A1, 0xA6B2, 0x03A3, 0xA6B3, 0x03A4, 0xA6B4, 0x03A5,
+	0xA6B5, 0x03A6, 0xA6B6, 0x03A7, 0xA6B7, 0x03A8, 0xA6B8, 0x03A9,
+	0xA6C1, 0x03B1, 0xA6C2, 0x03B2, 0xA6C3, 0x03B3, 0xA6C4, 0x03B4,
+	0xA6C5, 0x03B5, 0xA6C6, 0x03B6, 0xA6C7, 0x03B7, 0xA6C8, 0x03B8,
+	0xA6C9, 0x03B9, 0xA6CA, 0x03BA, 0xA6CB, 0x03BB, 0xA6CC, 0x03BC,
+	0xA6CD, 0x03BD, 0xA6CE, 0x03BE, 0xA6CF, 0x03BF, 0xA6D0, 0x03C0,
+	0xA6D1, 0x03C1, 0xA6D2, 0x03C3, 0xA6D3, 0x03C4, 0xA6D4, 0x03C5,
+	0xA6D5, 0x03C6, 0xA6D6, 0x03C7, 0xA6D7, 0x03C8, 0xA6D8, 0x03C9,
+	0xA6E0, 0xFE35, 0xA6E1, 0xFE36, 0xA6E2, 0xFE39, 0xA6E3, 0xFE3A,
+	0xA6E4, 0xFE3F, 0xA6E5, 0xFE40, 0xA6E6, 0xFE3D, 0xA6E7, 0xFE3E,
+	0xA6E8, 0xFE41, 0xA6E9, 0xFE42, 0xA6EA, 0xFE43, 0xA6EB, 0xFE44,
+	0xA6EE, 0xFE3B, 0xA6EF, 0xFE3C, 0xA6F0, 0xFE37, 0xA6F1, 0xFE38,
+	0xA6F2, 0xFE31, 0xA6F4, 0xFE33, 0xA6F5, 0xFE34, 0xA7A1, 0x0410,
+	0xA7A2, 0x0411, 0xA7A3, 0x0412, 0xA7A4, 0x0413, 0xA7A5, 0x0414,
+	0xA7A6, 0x0415, 0xA7A7, 0x0401, 0xA7A8, 0x0416, 0xA7A9, 0x0417,
+	0xA7AA, 0x0418, 0xA7AB, 0x0419, 0xA7AC, 0x041A, 0xA7AD, 0x041B,
+	0xA7AE, 0x041C, 0xA7AF, 0x041D, 0xA7B0, 0x041E, 0xA7B1, 0x041F,
+	0xA7B2, 0x0420, 0xA7B3, 0x0421, 0xA7B4, 0x0422, 0xA7B5, 0x0423,
+	0xA7B6, 0x0424, 0xA7B7, 0x0425, 0xA7B8, 0x0426, 0xA7B9, 0x0427,
+	0xA7BA, 0x0428, 0xA7BB, 0x0429, 0xA7BC, 0x042A, 0xA7BD, 0x042B,
+	0xA7BE, 0x042C, 0xA7BF, 0x042D, 0xA7C0, 0x042E, 0xA7C1, 0x042F,
+	0xA7D1, 0x0430, 0xA7D2, 0x0431, 0xA7D3, 0x0432, 0xA7D4, 0x0433,
+	0xA7D5, 0x0434, 0xA7D6, 0x0435, 0xA7D7, 0x0451, 0xA7D8, 0x0436,
+	0xA7D9, 0x0437, 0xA7DA, 0x0438, 0xA7DB, 0x0439, 0xA7DC, 0x043A,
+	0xA7DD, 0x043B, 0xA7DE, 0x043C, 0xA7DF, 0x043D, 0xA7E0, 0x043E,
+	0xA7E1, 0x043F, 0xA7E2, 0x0440, 0xA7E3, 0x0441, 0xA7E4, 0x0442,
+	0xA7E5, 0x0443, 0xA7E6, 0x0444, 0xA7E7, 0x0445, 0xA7E8, 0x0446,
+	0xA7E9, 0x0447, 0xA7EA, 0x0448, 0xA7EB, 0x0449, 0xA7EC, 0x044A,
+	0xA7ED, 0x044B, 0xA7EE, 0x044C, 0xA7EF, 0x044D, 0xA7F0, 0x044E,
+	0xA7F1, 0x044F, 0xA840, 0x02CA, 0xA841, 0x02CB, 0xA842, 0x02D9,
+	0xA843, 0x2013, 0xA844, 0x2015, 0xA845, 0x2025, 0xA846, 0x2035,
+	0xA847, 0x2105, 0xA848, 0x2109, 0xA849, 0x2196, 0xA84A, 0x2197,
+	0xA84B, 0x2198, 0xA84C, 0x2199, 0xA84D, 0x2215, 0xA84E, 0x221F,
+	0xA84F, 0x2223, 0xA850, 0x2252, 0xA851, 0x2266, 0xA852, 0x2267,
+	0xA853, 0x22BF, 0xA854, 0x2550, 0xA855, 0x2551, 0xA856, 0x2552,
+	0xA857, 0x2553, 0xA858, 0x2554, 0xA859, 0x2555, 0xA85A, 0x2556,
+	0xA85B, 0x2557, 0xA85C, 0x2558, 0xA85D, 0x2559, 0xA85E, 0x255A,
+	0xA85F, 0x255B, 0xA860, 0x255C, 0xA861, 0x255D, 0xA862, 0x255E,
+	0xA863, 0x255F, 0xA864, 0x2560, 0xA865, 0x2561, 0xA866, 0x2562,
+	0xA867, 0x2563, 0xA868, 0x2564, 0xA869, 0x2565, 0xA86A, 0x2566,
+	0xA86B, 0x2567, 0xA86C, 0x2568, 0xA86D, 0x2569, 0xA86E, 0x256A,
+	0xA86F, 0x256B, 0xA870, 0x256C, 0xA871, 0x256D, 0xA872, 0x256E,
+	0xA873, 0x256F, 0xA874, 0x2570, 0xA875, 0x2571, 0xA876, 0x2572,
+	0xA877, 0x2573, 0xA878, 0x2581, 0xA879, 0x2582, 0xA87A, 0x2583,
+	0xA87B, 0x2584, 0xA87C, 0x2585, 0xA87D, 0x2586, 0xA87E, 0x2587,
+	0xA880, 0x2588, 0xA881, 0x2589, 0xA882, 0x258A, 0xA883, 0x258B,
+	0xA884, 0x258C, 0xA885, 0x258D, 0xA886, 0x258E, 0xA887, 0x258F,
+	0xA888, 0x2593, 0xA889, 0x2594, 0xA88A, 0x2595, 0xA88B, 0x25BC,
+	0xA88C, 0x25BD, 0xA88D, 0x25E2, 0xA88E, 0x25E3, 0xA88F, 0x25E4,
+	0xA890, 0x25E5, 0xA891, 0x2609, 0xA892, 0x2295, 0xA893, 0x3012,
+	0xA894, 0x301D, 0xA895, 0x301E, 0xA8A1, 0x0101, 0xA8A2, 0x00E1,
+	0xA8A3, 0x01CE, 0xA8A4, 0x00E0, 0xA8A5, 0x0113, 0xA8A6, 0x00E9,
+	0xA8A7, 0x011B, 0xA8A8, 0x00E8, 0xA8A9, 0x012B, 0xA8AA, 0x00ED,
+	0xA8AB, 0x01D0, 0xA8AC, 0x00EC, 0xA8AD, 0x014D, 0xA8AE, 0x00F3,
+	0xA8AF, 0x01D2, 0xA8B0, 0x00F2, 0xA8B1, 0x016B, 0xA8B2, 0x00FA,
+	0xA8B3, 0x01D4, 0xA8B4, 0x00F9, 0xA8B5, 0x01D6, 0xA8B6, 0x01D8,
+	0xA8B7, 0x01DA, 0xA8B8, 0x01DC, 0xA8B9, 0x00FC, 0xA8BA, 0x00EA,
+	0xA8BB, 0x0251, 0xA8BD, 0x0144, 0xA8BE, 0x0148, 0xA8C0, 0x0261,
+	0xA8C5, 0x3105, 0xA8C6, 0x3106, 0xA8C7, 0x3107, 0xA8C8, 0x3108,
+	0xA8C9, 0x3109, 0xA8CA, 0x310A, 0xA8CB, 0x310B, 0xA8CC, 0x310C,
+	0xA8CD, 0x310D, 0xA8CE, 0x310E, 0xA8CF, 0x310F, 0xA8D0, 0x3110,
+	0xA8D1, 0x3111, 0xA8D2, 0x3112, 0xA8D3, 0x3113, 0xA8D4, 0x3114,
+	0xA8D5, 0x3115, 0xA8D6, 0x3116, 0xA8D7, 0x3117, 0xA8D8, 0x3118,
+	0xA8D9, 0x3119, 0xA8DA, 0x311A, 0xA8DB, 0x311B, 0xA8DC, 0x311C,
+	0xA8DD, 0x311D, 0xA8DE, 0x311E, 0xA8DF, 0x311F, 0xA8E0, 0x3120,
+	0xA8E1, 0x3121, 0xA8E2, 0x3122, 0xA8E3, 0x3123, 0xA8E4, 0x3124,
+	0xA8E5, 0x3125, 0xA8E6, 0x3126, 0xA8E7, 0x3127, 0xA8E8, 0x3128,
+	0xA8E9, 0x3129, 0xA940, 0x3021, 0xA941, 0x3022, 0xA942, 0x3023,
+	0xA943, 0x3024, 0xA944, 0x3025, 0xA945, 0x3026, 0xA946, 0x3027,
+	0xA947, 0x3028, 0xA948, 0x3029, 0xA949, 0x32A3, 0xA94A, 0x338E,
+	0xA94B, 0x338F, 0xA94C, 0x339C, 0xA94D, 0x339D, 0xA94E, 0x339E,
+	0xA94F, 0x33A1, 0xA950, 0x33C4, 0xA951, 0x33CE, 0xA952, 0x33D1,
+	0xA953, 0x33D2, 0xA954, 0x33D5, 0xA955, 0xFE30, 0xA956, 0xFFE2,
+	0xA957, 0xFFE4, 0xA959, 0x2121, 0xA95A, 0x3231, 0xA95C, 0x2010,
+	0xA960, 0x30FC, 0xA961, 0x309B, 0xA962, 0x309C, 0xA963, 0x30FD,
+	0xA964, 0x30FE, 0xA965, 0x3006, 0xA966, 0x309D, 0xA967, 0x309E,
+	0xA968, 0xFE49, 0xA969, 0xFE4A, 0xA96A, 0xFE4B, 0xA96B, 0xFE4C,
+	0xA96C, 0xFE4D, 0xA96D, 0xFE4E, 0xA96E, 0xFE4F, 0xA96F, 0xFE50,
+	0xA970, 0xFE51, 0xA971, 0xFE52, 0xA972, 0xFE54, 0xA973, 0xFE55,
+	0xA974, 0xFE56, 0xA975, 0xFE57, 0xA976, 0xFE59, 0xA977, 0xFE5A,
+	0xA978, 0xFE5B, 0xA979, 0xFE5C, 0xA97A, 0xFE5D, 0xA97B, 0xFE5E,
+	0xA97C, 0xFE5F, 0xA97D, 0xFE60, 0xA97E, 0xFE61, 0xA980, 0xFE62,
+	0xA981, 0xFE63, 0xA982, 0xFE64, 0xA983, 0xFE65, 0xA984, 0xFE66,
+	0xA985, 0xFE68, 0xA986, 0xFE69, 0xA987, 0xFE6A, 0xA988, 0xFE6B,
+	0xA996, 0x3007, 0xA9A4, 0x2500, 0xA9A5, 0x2501, 0xA9A6, 0x2502,
+	0xA9A7, 0x2503, 0xA9A8, 0x2504, 0xA9A9, 0x2505, 0xA9AA, 0x2506,
+	0xA9AB, 0x2507, 0xA9AC, 0x2508, 0xA9AD, 0x2509, 0xA9AE, 0x250A,
+	0xA9AF, 0x250B, 0xA9B0, 0x250C, 0xA9B1, 0x250D, 0xA9B2, 0x250E,
+	0xA9B3, 0x250F, 0xA9B4, 0x2510, 0xA9B5, 0x2511, 0xA9B6, 0x2512,
+	0xA9B7, 0x2513, 0xA9B8, 0x2514, 0xA9B9, 0x2515, 0xA9BA, 0x2516,
+	0xA9BB, 0x2517, 0xA9BC, 0x2518, 0xA9BD, 0x2519, 0xA9BE, 0x251A,
+	0xA9BF, 0x251B, 0xA9C0, 0x251C, 0xA9C1, 0x251D, 0xA9C2, 0x251E,
+	0xA9C3, 0x251F, 0xA9C4, 0x2520, 0xA9C5, 0x2521, 0xA9C6, 0x2522,
+	0xA9C7, 0x2523, 0xA9C8, 0x2524, 0xA9C9, 0x2525, 0xA9CA, 0x2526,
+	0xA9CB, 0x2527, 0xA9CC, 0x2528, 0xA9CD, 0x2529, 0xA9CE, 0x252A,
+	0xA9CF, 0x252B, 0xA9D0, 0x252C, 0xA9D1, 0x252D, 0xA9D2, 0x252E,
+	0xA9D3, 0x252F, 0xA9D4, 0x2530, 0xA9D5, 0x2531, 0xA9D6, 0x2532,
+	0xA9D7, 0x2533, 0xA9D8, 0x2534, 0xA9D9, 0x2535, 0xA9DA, 0x2536,
+	0xA9DB, 0x2537, 0xA9DC, 0x2538, 0xA9DD, 0x2539, 0xA9DE, 0x253A,
+	0xA9DF, 0x253B, 0xA9E0, 0x253C, 0xA9E1, 0x253D, 0xA9E2, 0x253E,
+	0xA9E3, 0x253F, 0xA9E4, 0x2540, 0xA9E5, 0x2541, 0xA9E6, 0x2542,
+	0xA9E7, 0x2543, 0xA9E8, 0x2544, 0xA9E9, 0x2545, 0xA9EA, 0x2546,
+	0xA9EB, 0x2547, 0xA9EC, 0x2548, 0xA9ED, 0x2549, 0xA9EE, 0x254A,
+	0xA9EF, 0x254B, 0xAA40, 0x72DC, 0xAA41, 0x72DD, 0xAA42, 0x72DF,
+	0xAA43, 0x72E2, 0xAA44, 0x72E3, 0xAA45, 0x72E4, 0xAA46, 0x72E5,
+	0xAA47, 0x72E6, 0xAA48, 0x72E7, 0xAA49, 0x72EA, 0xAA4A, 0x72EB,
+	0xAA4B, 0x72F5, 0xAA4C, 0x72F6, 0xAA4D, 0x72F9, 0xAA4E, 0x72FD,
+	0xAA4F, 0x72FE, 0xAA50, 0x72FF, 0xAA51, 0x7300, 0xAA52, 0x7302,
+	0xAA53, 0x7304, 0xAA54, 0x7305, 0xAA55, 0x7306, 0xAA56, 0x7307,
+	0xAA57, 0x7308, 0xAA58, 0x7309, 0xAA59, 0x730B, 0xAA5A, 0x730C,
+	0xAA5B, 0x730D, 0xAA5C, 0x730F, 0xAA5D, 0x7310, 0xAA5E, 0x7311,
+	0xAA5F, 0x7312, 0xAA60, 0x7314, 0xAA61, 0x7318, 0xAA62, 0x7319,
+	0xAA63, 0x731A, 0xAA64, 0x731F, 0xAA65, 0x7320, 0xAA66, 0x7323,
+	0xAA67, 0x7324, 0xAA68, 0x7326, 0xAA69, 0x7327, 0xAA6A, 0x7328,
+	0xAA6B, 0x732D, 0xAA6C, 0x732F, 0xAA6D, 0x7330, 0xAA6E, 0x7332,
+	0xAA6F, 0x7333, 0xAA70, 0x7335, 0xAA71, 0x7336, 0xAA72, 0x733A,
+	0xAA73, 0x733B, 0xAA74, 0x733C, 0xAA75, 0x733D, 0xAA76, 0x7340,
+	0xAA77, 0x7341, 0xAA78, 0x7342, 0xAA79, 0x7343, 0xAA7A, 0x7344,
+	0xAA7B, 0x7345, 0xAA7C, 0x7346, 0xAA7D, 0x7347, 0xAA7E, 0x7348,
+	0xAA80, 0x7349, 0xAA81, 0x734A, 0xAA82, 0x734B, 0xAA83, 0x734C,
+	0xAA84, 0x734E, 0xAA85, 0x734F, 0xAA86, 0x7351, 0xAA87, 0x7353,
+	0xAA88, 0x7354, 0xAA89, 0x7355, 0xAA8A, 0x7356, 0xAA8B, 0x7358,
+	0xAA8C, 0x7359, 0xAA8D, 0x735A, 0xAA8E, 0x735B, 0xAA8F, 0x735C,
+	0xAA90, 0x735D, 0xAA91, 0x735E, 0xAA92, 0x735F, 0xAA93, 0x7361,
+	0xAA94, 0x7362, 0xAA95, 0x7363, 0xAA96, 0x7364, 0xAA97, 0x7365,
+	0xAA98, 0x7366, 0xAA99, 0x7367, 0xAA9A, 0x7368, 0xAA9B, 0x7369,
+	0xAA9C, 0x736A, 0xAA9D, 0x736B, 0xAA9E, 0x736E, 0xAA9F, 0x7370,
+	0xAAA0, 0x7371, 0xAB40, 0x7372, 0xAB41, 0x7373, 0xAB42, 0x7374,
+	0xAB43, 0x7375, 0xAB44, 0x7376, 0xAB45, 0x7377, 0xAB46, 0x7378,
+	0xAB47, 0x7379, 0xAB48, 0x737A, 0xAB49, 0x737B, 0xAB4A, 0x737C,
+	0xAB4B, 0x737D, 0xAB4C, 0x737F, 0xAB4D, 0x7380, 0xAB4E, 0x7381,
+	0xAB4F, 0x7382, 0xAB50, 0x7383, 0xAB51, 0x7385, 0xAB52, 0x7386,
+	0xAB53, 0x7388, 0xAB54, 0x738A, 0xAB55, 0x738C, 0xAB56, 0x738D,
+	0xAB57, 0x738F, 0xAB58, 0x7390, 0xAB59, 0x7392, 0xAB5A, 0x7393,
+	0xAB5B, 0x7394, 0xAB5C, 0x7395, 0xAB5D, 0x7397, 0xAB5E, 0x7398,
+	0xAB5F, 0x7399, 0xAB60, 0x739A, 0xAB61, 0x739C, 0xAB62, 0x739D,
+	0xAB63, 0x739E, 0xAB64, 0x73A0, 0xAB65, 0x73A1, 0xAB66, 0x73A3,
+	0xAB67, 0x73A4, 0xAB68, 0x73A5, 0xAB69, 0x73A6, 0xAB6A, 0x73A7,
+	0xAB6B, 0x73A8, 0xAB6C, 0x73AA, 0xAB6D, 0x73AC, 0xAB6E, 0x73AD,
+	0xAB6F, 0x73B1, 0xAB70, 0x73B4, 0xAB71, 0x73B5, 0xAB72, 0x73B6,
+	0xAB73, 0x73B8, 0xAB74, 0x73B9, 0xAB75, 0x73BC, 0xAB76, 0x73BD,
+	0xAB77, 0x73BE, 0xAB78, 0x73BF, 0xAB79, 0x73C1, 0xAB7A, 0x73C3,
+	0xAB7B, 0x73C4, 0xAB7C, 0x73C5, 0xAB7D, 0x73C6, 0xAB7E, 0x73C7,
+	0xAB80, 0x73CB, 0xAB81, 0x73CC, 0xAB82, 0x73CE, 0xAB83, 0x73D2,
+	0xAB84, 0x73D3, 0xAB85, 0x73D4, 0xAB86, 0x73D5, 0xAB87, 0x73D6,
+	0xAB88, 0x73D7, 0xAB89, 0x73D8, 0xAB8A, 0x73DA, 0xAB8B, 0x73DB,
+	0xAB8C, 0x73DC, 0xAB8D, 0x73DD, 0xAB8E, 0x73DF, 0xAB8F, 0x73E1,
+	0xAB90, 0x73E2, 0xAB91, 0x73E3, 0xAB92, 0x73E4, 0xAB93, 0x73E6,
+	0xAB94, 0x73E8, 0xAB95, 0x73EA, 0xAB96, 0x73EB, 0xAB97, 0x73EC,
+	0xAB98, 0x73EE, 0xAB99, 0x73EF, 0xAB9A, 0x73F0, 0xAB9B, 0x73F1,
+	0xAB9C, 0x73F3, 0xAB9D, 0x73F4, 0xAB9E, 0x73F5, 0xAB9F, 0x73F6,
+	0xABA0, 0x73F7, 0xAC40, 0x73F8, 0xAC41, 0x73F9, 0xAC42, 0x73FA,
+	0xAC43, 0x73FB, 0xAC44, 0x73FC, 0xAC45, 0x73FD, 0xAC46, 0x73FE,
+	0xAC47, 0x73FF, 0xAC48, 0x7400, 0xAC49, 0x7401, 0xAC4A, 0x7402,
+	0xAC4B, 0x7404, 0xAC4C, 0x7407, 0xAC4D, 0x7408, 0xAC4E, 0x740B,
+	0xAC4F, 0x740C, 0xAC50, 0x740D, 0xAC51, 0x740E, 0xAC52, 0x7411,
+	0xAC53, 0x7412, 0xAC54, 0x7413, 0xAC55, 0x7414, 0xAC56, 0x7415,
+	0xAC57, 0x7416, 0xAC58, 0x7417, 0xAC59, 0x7418, 0xAC5A, 0x7419,
+	0xAC5B, 0x741C, 0xAC5C, 0x741D, 0xAC5D, 0x741E, 0xAC5E, 0x741F,
+	0xAC5F, 0x7420, 0xAC60, 0x7421, 0xAC61, 0x7423, 0xAC62, 0x7424,
+	0xAC63, 0x7427, 0xAC64, 0x7429, 0xAC65, 0x742B, 0xAC66, 0x742D,
+	0xAC67, 0x742F, 0xAC68, 0x7431, 0xAC69, 0x7432, 0xAC6A, 0x7437,
+	0xAC6B, 0x7438, 0xAC6C, 0x7439, 0xAC6D, 0x743A, 0xAC6E, 0x743B,
+	0xAC6F, 0x743D, 0xAC70, 0x743E, 0xAC71, 0x743F, 0xAC72, 0x7440,
+	0xAC73, 0x7442, 0xAC74, 0x7443, 0xAC75, 0x7444, 0xAC76, 0x7445,
+	0xAC77, 0x7446, 0xAC78, 0x7447, 0xAC79, 0x7448, 0xAC7A, 0x7449,
+	0xAC7B, 0x744A, 0xAC7C, 0x744B, 0xAC7D, 0x744C, 0xAC7E, 0x744D,
+	0xAC80, 0x744E, 0xAC81, 0x744F, 0xAC82, 0x7450, 0xAC83, 0x7451,
+	0xAC84, 0x7452, 0xAC85, 0x7453, 0xAC86, 0x7454, 0xAC87, 0x7456,
+	0xAC88, 0x7458, 0xAC89, 0x745D, 0xAC8A, 0x7460, 0xAC8B, 0x7461,
+	0xAC8C, 0x7462, 0xAC8D, 0x7463, 0xAC8E, 0x7464, 0xAC8F, 0x7465,
+	0xAC90, 0x7466, 0xAC91, 0x7467, 0xAC92, 0x7468, 0xAC93, 0x7469,
+	0xAC94, 0x746A, 0xAC95, 0x746B, 0xAC96, 0x746C, 0xAC97, 0x746E,
+	0xAC98, 0x746F, 0xAC99, 0x7471, 0xAC9A, 0x7472, 0xAC9B, 0x7473,
+	0xAC9C, 0x7474, 0xAC9D, 0x7475, 0xAC9E, 0x7478, 0xAC9F, 0x7479,
+	0xACA0, 0x747A, 0xAD40, 0x747B, 0xAD41, 0x747C, 0xAD42, 0x747D,
+	0xAD43, 0x747F, 0xAD44, 0x7482, 0xAD45, 0x7484, 0xAD46, 0x7485,
+	0xAD47, 0x7486, 0xAD48, 0x7488, 0xAD49, 0x7489, 0xAD4A, 0x748A,
+	0xAD4B, 0x748C, 0xAD4C, 0x748D, 0xAD4D, 0x748F, 0xAD4E, 0x7491,
+	0xAD4F, 0x7492, 0xAD50, 0x7493, 0xAD51, 0x7494, 0xAD52, 0x7495,
+	0xAD53, 0x7496, 0xAD54, 0x7497, 0xAD55, 0x7498, 0xAD56, 0x7499,
+	0xAD57, 0x749A, 0xAD58, 0x749B, 0xAD59, 0x749D, 0xAD5A, 0x749F,
+	0xAD5B, 0x74A0, 0xAD5C, 0x74A1, 0xAD5D, 0x74A2, 0xAD5E, 0x74A3,
+	0xAD5F, 0x74A4, 0xAD60, 0x74A5, 0xAD61, 0x74A6, 0xAD62, 0x74AA,
+	0xAD63, 0x74AB, 0xAD64, 0x74AC, 0xAD65, 0x74AD, 0xAD66, 0x74AE,
+	0xAD67, 0x74AF, 0xAD68, 0x74B0, 0xAD69, 0x74B1, 0xAD6A, 0x74B2,
+	0xAD6B, 0x74B3, 0xAD6C, 0x74B4, 0xAD6D, 0x74B5, 0xAD6E, 0x74B6,
+	0xAD6F, 0x74B7, 0xAD70, 0x74B8, 0xAD71, 0x74B9, 0xAD72, 0x74BB,
+	0xAD73, 0x74BC, 0xAD74, 0x74BD, 0xAD75, 0x74BE, 0xAD76, 0x74BF,
+	0xAD77, 0x74C0, 0xAD78, 0x74C1, 0xAD79, 0x74C2, 0xAD7A, 0x74C3,
+	0xAD7B, 0x74C4, 0xAD7C, 0x74C5, 0xAD7D, 0x74C6, 0xAD7E, 0x74C7,
+	0xAD80, 0x74C8, 0xAD81, 0x74C9, 0xAD82, 0x74CA, 0xAD83, 0x74CB,
+	0xAD84, 0x74CC, 0xAD85, 0x74CD, 0xAD86, 0x74CE, 0xAD87, 0x74CF,
+	0xAD88, 0x74D0, 0xAD89, 0x74D1, 0xAD8A, 0x74D3, 0xAD8B, 0x74D4,
+	0xAD8C, 0x74D5, 0xAD8D, 0x74D6, 0xAD8E, 0x74D7, 0xAD8F, 0x74D8,
+	0xAD90, 0x74D9, 0xAD91, 0x74DA, 0xAD92, 0x74DB, 0xAD93, 0x74DD,
+	0xAD94, 0x74DF, 0xAD95, 0x74E1, 0xAD96, 0x74E5, 0xAD97, 0x74E7,
+	0xAD98, 0x74E8, 0xAD99, 0x74E9, 0xAD9A, 0x74EA, 0xAD9B, 0x74EB,
+	0xAD9C, 0x74EC, 0xAD9D, 0x74ED, 0xAD9E, 0x74F0, 0xAD9F, 0x74F1,
+	0xADA0, 0x74F2, 0xAE40, 0x74F3, 0xAE41, 0x74F5, 0xAE42, 0x74F8,
+	0xAE43, 0x74F9, 0xAE44, 0x74FA, 0xAE45, 0x74FB, 0xAE46, 0x74FC,
+	0xAE47, 0x74FD, 0xAE48, 0x74FE, 0xAE49, 0x7500, 0xAE4A, 0x7501,
+	0xAE4B, 0x7502, 0xAE4C, 0x7503, 0xAE4D, 0x7505, 0xAE4E, 0x7506,
+	0xAE4F, 0x7507, 0xAE50, 0x7508, 0xAE51, 0x7509, 0xAE52, 0x750A,
+	0xAE53, 0x750B, 0xAE54, 0x750C, 0xAE55, 0x750E, 0xAE56, 0x7510,
+	0xAE57, 0x7512, 0xAE58, 0x7514, 0xAE59, 0x7515, 0xAE5A, 0x7516,
+	0xAE5B, 0x7517, 0xAE5C, 0x751B, 0xAE5D, 0x751D, 0xAE5E, 0x751E,
+	0xAE5F, 0x7520, 0xAE60, 0x7521, 0xAE61, 0x7522, 0xAE62, 0x7523,
+	0xAE63, 0x7524, 0xAE64, 0x7526, 0xAE65, 0x7527, 0xAE66, 0x752A,
+	0xAE67, 0x752E, 0xAE68, 0x7534, 0xAE69, 0x7536, 0xAE6A, 0x7539,
+	0xAE6B, 0x753C, 0xAE6C, 0x753D, 0xAE6D, 0x753F, 0xAE6E, 0x7541,
+	0xAE6F, 0x7542, 0xAE70, 0x7543, 0xAE71, 0x7544, 0xAE72, 0x7546,
+	0xAE73, 0x7547, 0xAE74, 0x7549, 0xAE75, 0x754A, 0xAE76, 0x754D,
+	0xAE77, 0x7550, 0xAE78, 0x7551, 0xAE79, 0x7552, 0xAE7A, 0x7553,
+	0xAE7B, 0x7555, 0xAE7C, 0x7556, 0xAE7D, 0x7557, 0xAE7E, 0x7558,
+	0xAE80, 0x755D, 0xAE81, 0x755E, 0xAE82, 0x755F, 0xAE83, 0x7560,
+	0xAE84, 0x7561, 0xAE85, 0x7562, 0xAE86, 0x7563, 0xAE87, 0x7564,
+	0xAE88, 0x7567, 0xAE89, 0x7568, 0xAE8A, 0x7569, 0xAE8B, 0x756B,
+	0xAE8C, 0x756C, 0xAE8D, 0x756D, 0xAE8E, 0x756E, 0xAE8F, 0x756F,
+	0xAE90, 0x7570, 0xAE91, 0x7571, 0xAE92, 0x7573, 0xAE93, 0x7575,
+	0xAE94, 0x7576, 0xAE95, 0x7577, 0xAE96, 0x757A, 0xAE97, 0x757B,
+	0xAE98, 0x757C, 0xAE99, 0x757D, 0xAE9A, 0x757E, 0xAE9B, 0x7580,
+	0xAE9C, 0x7581, 0xAE9D, 0x7582, 0xAE9E, 0x7584, 0xAE9F, 0x7585,
+	0xAEA0, 0x7587, 0xAF40, 0x7588, 0xAF41, 0x7589, 0xAF42, 0x758A,
+	0xAF43, 0x758C, 0xAF44, 0x758D, 0xAF45, 0x758E, 0xAF46, 0x7590,
+	0xAF47, 0x7593, 0xAF48, 0x7595, 0xAF49, 0x7598, 0xAF4A, 0x759B,
+	0xAF4B, 0x759C, 0xAF4C, 0x759E, 0xAF4D, 0x75A2, 0xAF4E, 0x75A6,
+	0xAF4F, 0x75A7, 0xAF50, 0x75A8, 0xAF51, 0x75A9, 0xAF52, 0x75AA,
+	0xAF53, 0x75AD, 0xAF54, 0x75B6, 0xAF55, 0x75B7, 0xAF56, 0x75BA,
+	0xAF57, 0x75BB, 0xAF58, 0x75BF, 0xAF59, 0x75C0, 0xAF5A, 0x75C1,
+	0xAF5B, 0x75C6, 0xAF5C, 0x75CB, 0xAF5D, 0x75CC, 0xAF5E, 0x75CE,
+	0xAF5F, 0x75CF, 0xAF60, 0x75D0, 0xAF61, 0x75D1, 0xAF62, 0x75D3,
+	0xAF63, 0x75D7, 0xAF64, 0x75D9, 0xAF65, 0x75DA, 0xAF66, 0x75DC,
+	0xAF67, 0x75DD, 0xAF68, 0x75DF, 0xAF69, 0x75E0, 0xAF6A, 0x75E1,
+	0xAF6B, 0x75E5, 0xAF6C, 0x75E9, 0xAF6D, 0x75EC, 0xAF6E, 0x75ED,
+	0xAF6F, 0x75EE, 0xAF70, 0x75EF, 0xAF71, 0x75F2, 0xAF72, 0x75F3,
+	0xAF73, 0x75F5, 0xAF74, 0x75F6, 0xAF75, 0x75F7, 0xAF76, 0x75F8,
+	0xAF77, 0x75FA, 0xAF78, 0x75FB, 0xAF79, 0x75FD, 0xAF7A, 0x75FE,
+	0xAF7B, 0x7602, 0xAF7C, 0x7604, 0xAF7D, 0x7606, 0xAF7E, 0x7607,
+	0xAF80, 0x7608, 0xAF81, 0x7609, 0xAF82, 0x760B, 0xAF83, 0x760D,
+	0xAF84, 0x760E, 0xAF85, 0x760F, 0xAF86, 0x7611, 0xAF87, 0x7612,
+	0xAF88, 0x7613, 0xAF89, 0x7614, 0xAF8A, 0x7616, 0xAF8B, 0x761A,
+	0xAF8C, 0x761C, 0xAF8D, 0x761D, 0xAF8E, 0x761E, 0xAF8F, 0x7621,
+	0xAF90, 0x7623, 0xAF91, 0x7627, 0xAF92, 0x7628, 0xAF93, 0x762C,
+	0xAF94, 0x762E, 0xAF95, 0x762F, 0xAF96, 0x7631, 0xAF97, 0x7632,
+	0xAF98, 0x7636, 0xAF99, 0x7637, 0xAF9A, 0x7639, 0xAF9B, 0x763A,
+	0xAF9C, 0x763B, 0xAF9D, 0x763D, 0xAF9E, 0x7641, 0xAF9F, 0x7642,
+	0xAFA0, 0x7644, 0xB040, 0x7645, 0xB041, 0x7646, 0xB042, 0x7647,
+	0xB043, 0x7648, 0xB044, 0x7649, 0xB045, 0x764A, 0xB046, 0x764B,
+	0xB047, 0x764E, 0xB048, 0x764F, 0xB049, 0x7650, 0xB04A, 0x7651,
+	0xB04B, 0x7652, 0xB04C, 0x7653, 0xB04D, 0x7655, 0xB04E, 0x7657,
+	0xB04F, 0x7658, 0xB050, 0x7659, 0xB051, 0x765A, 0xB052, 0x765B,
+	0xB053, 0x765D, 0xB054, 0x765F, 0xB055, 0x7660, 0xB056, 0x7661,
+	0xB057, 0x7662, 0xB058, 0x7664, 0xB059, 0x7665, 0xB05A, 0x7666,
+	0xB05B, 0x7667, 0xB05C, 0x7668, 0xB05D, 0x7669, 0xB05E, 0x766A,
+	0xB05F, 0x766C, 0xB060, 0x766D, 0xB061, 0x766E, 0xB062, 0x7670,
+	0xB063, 0x7671, 0xB064, 0x7672, 0xB065, 0x7673, 0xB066, 0x7674,
+	0xB067, 0x7675, 0xB068, 0x7676, 0xB069, 0x7677, 0xB06A, 0x7679,
+	0xB06B, 0x767A, 0xB06C, 0x767C, 0xB06D, 0x767F, 0xB06E, 0x7680,
+	0xB06F, 0x7681, 0xB070, 0x7683, 0xB071, 0x7685, 0xB072, 0x7689,
+	0xB073, 0x768A, 0xB074, 0x768C, 0xB075, 0x768D, 0xB076, 0x768F,
+	0xB077, 0x7690, 0xB078, 0x7692, 0xB079, 0x7694, 0xB07A, 0x7695,
+	0xB07B, 0x7697, 0xB07C, 0x7698, 0xB07D, 0x769A, 0xB07E, 0x769B,
+	0xB080, 0x769C, 0xB081, 0x769D, 0xB082, 0x769E, 0xB083, 0x769F,
+	0xB084, 0x76A0, 0xB085, 0x76A1, 0xB086, 0x76A2, 0xB087, 0x76A3,
+	0xB088, 0x76A5, 0xB089, 0x76A6, 0xB08A, 0x76A7, 0xB08B, 0x76A8,
+	0xB08C, 0x76A9, 0xB08D, 0x76AA, 0xB08E, 0x76AB, 0xB08F, 0x76AC,
+	0xB090, 0x76AD, 0xB091, 0x76AF, 0xB092, 0x76B0, 0xB093, 0x76B3,
+	0xB094, 0x76B5, 0xB095, 0x76B6, 0xB096, 0x76B7, 0xB097, 0x76B8,
+	0xB098, 0x76B9, 0xB099, 0x76BA, 0xB09A, 0x76BB, 0xB09B, 0x76BC,
+	0xB09C, 0x76BD, 0xB09D, 0x76BE, 0xB09E, 0x76C0, 0xB09F, 0x76C1,
+	0xB0A0, 0x76C3, 0xB0A1, 0x554A, 0xB0A2, 0x963F, 0xB0A3, 0x57C3,
+	0xB0A4, 0x6328, 0xB0A5, 0x54CE, 0xB0A6, 0x5509, 0xB0A7, 0x54C0,
+	0xB0A8, 0x7691, 0xB0A9, 0x764C, 0xB0AA, 0x853C, 0xB0AB, 0x77EE,
+	0xB0AC, 0x827E, 0xB0AD, 0x788D, 0xB0AE, 0x7231, 0xB0AF, 0x9698,
+	0xB0B0, 0x978D, 0xB0B1, 0x6C28, 0xB0B2, 0x5B89, 0xB0B3, 0x4FFA,
+	0xB0B4, 0x6309, 0xB0B5, 0x6697, 0xB0B6, 0x5CB8, 0xB0B7, 0x80FA,
+	0xB0B8, 0x6848, 0xB0B9, 0x80AE, 0xB0BA, 0x6602, 0xB0BB, 0x76CE,
+	0xB0BC, 0x51F9, 0xB0BD, 0x6556, 0xB0BE, 0x71AC, 0xB0BF, 0x7FF1,
+	0xB0C0, 0x8884, 0xB0C1, 0x50B2, 0xB0C2, 0x5965, 0xB0C3, 0x61CA,
+	0xB0C4, 0x6FB3, 0xB0C5, 0x82AD, 0xB0C6, 0x634C, 0xB0C7, 0x6252,
+	0xB0C8, 0x53ED, 0xB0C9, 0x5427, 0xB0CA, 0x7B06, 0xB0CB, 0x516B,
+	0xB0CC, 0x75A4, 0xB0CD, 0x5DF4, 0xB0CE, 0x62D4, 0xB0CF, 0x8DCB,
+	0xB0D0, 0x9776, 0xB0D1, 0x628A, 0xB0D2, 0x8019, 0xB0D3, 0x575D,
+	0xB0D4, 0x9738, 0xB0D5, 0x7F62, 0xB0D6, 0x7238, 0xB0D7, 0x767D,
+	0xB0D8, 0x67CF, 0xB0D9, 0x767E, 0xB0DA, 0x6446, 0xB0DB, 0x4F70,
+	0xB0DC, 0x8D25, 0xB0DD, 0x62DC, 0xB0DE, 0x7A17, 0xB0DF, 0x6591,
+	0xB0E0, 0x73ED, 0xB0E1, 0x642C, 0xB0E2, 0x6273, 0xB0E3, 0x822C,
+	0xB0E4, 0x9881, 0xB0E5, 0x677F, 0xB0E6, 0x7248, 0xB0E7, 0x626E,
+	0xB0E8, 0x62CC, 0xB0E9, 0x4F34, 0xB0EA, 0x74E3, 0xB0EB, 0x534A,
+	0xB0EC, 0x529E, 0xB0ED, 0x7ECA, 0xB0EE, 0x90A6, 0xB0EF, 0x5E2E,
+	0xB0F0, 0x6886, 0xB0F1, 0x699C, 0xB0F2, 0x8180, 0xB0F3, 0x7ED1,
+	0xB0F4, 0x68D2, 0xB0F5, 0x78C5, 0xB0F6, 0x868C, 0xB0F7, 0x9551,
+	0xB0F8, 0x508D, 0xB0F9, 0x8C24, 0xB0FA, 0x82DE, 0xB0FB, 0x80DE,
+	0xB0FC, 0x5305, 0xB0FD, 0x8912, 0xB0FE, 0x5265, 0xB140, 0x76C4,
+	0xB141, 0x76C7, 0xB142, 0x76C9, 0xB143, 0x76CB, 0xB144, 0x76CC,
+	0xB145, 0x76D3, 0xB146, 0x76D5, 0xB147, 0x76D9, 0xB148, 0x76DA,
+	0xB149, 0x76DC, 0xB14A, 0x76DD, 0xB14B, 0x76DE, 0xB14C, 0x76E0,
+	0xB14D, 0x76E1, 0xB14E, 0x76E2, 0xB14F, 0x76E3, 0xB150, 0x76E4,
+	0xB151, 0x76E6, 0xB152, 0x76E7, 0xB153, 0x76E8, 0xB154, 0x76E9,
+	0xB155, 0x76EA, 0xB156, 0x76EB, 0xB157, 0x76EC, 0xB158, 0x76ED,
+	0xB159, 0x76F0, 0xB15A, 0x76F3, 0xB15B, 0x76F5, 0xB15C, 0x76F6,
+	0xB15D, 0x76F7, 0xB15E, 0x76FA, 0xB15F, 0x76FB, 0xB160, 0x76FD,
+	0xB161, 0x76FF, 0xB162, 0x7700, 0xB163, 0x7702, 0xB164, 0x7703,
+	0xB165, 0x7705, 0xB166, 0x7706, 0xB167, 0x770A, 0xB168, 0x770C,
+	0xB169, 0x770E, 0xB16A, 0x770F, 0xB16B, 0x7710, 0xB16C, 0x7711,
+	0xB16D, 0x7712, 0xB16E, 0x7713, 0xB16F, 0x7714, 0xB170, 0x7715,
+	0xB171, 0x7716, 0xB172, 0x7717, 0xB173, 0x7718, 0xB174, 0x771B,
+	0xB175, 0x771C, 0xB176, 0x771D, 0xB177, 0x771E, 0xB178, 0x7721,
+	0xB179, 0x7723, 0xB17A, 0x7724, 0xB17B, 0x7725, 0xB17C, 0x7727,
+	0xB17D, 0x772A, 0xB17E, 0x772B, 0xB180, 0x772C, 0xB181, 0x772E,
+	0xB182, 0x7730, 0xB183, 0x7731, 0xB184, 0x7732, 0xB185, 0x7733,
+	0xB186, 0x7734, 0xB187, 0x7739, 0xB188, 0x773B, 0xB189, 0x773D,
+	0xB18A, 0x773E, 0xB18B, 0x773F, 0xB18C, 0x7742, 0xB18D, 0x7744,
+	0xB18E, 0x7745, 0xB18F, 0x7746, 0xB190, 0x7748, 0xB191, 0x7749,
+	0xB192, 0x774A, 0xB193, 0x774B, 0xB194, 0x774C, 0xB195, 0x774D,
+	0xB196, 0x774E, 0xB197, 0x774F, 0xB198, 0x7752, 0xB199, 0x7753,
+	0xB19A, 0x7754, 0xB19B, 0x7755, 0xB19C, 0x7756, 0xB19D, 0x7757,
+	0xB19E, 0x7758, 0xB19F, 0x7759, 0xB1A0, 0x775C, 0xB1A1, 0x8584,
+	0xB1A2, 0x96F9, 0xB1A3, 0x4FDD, 0xB1A4, 0x5821, 0xB1A5, 0x9971,
+	0xB1A6, 0x5B9D, 0xB1A7, 0x62B1, 0xB1A8, 0x62A5, 0xB1A9, 0x66B4,
+	0xB1AA, 0x8C79, 0xB1AB, 0x9C8D, 0xB1AC, 0x7206, 0xB1AD, 0x676F,
+	0xB1AE, 0x7891, 0xB1AF, 0x60B2, 0xB1B0, 0x5351, 0xB1B1, 0x5317,
+	0xB1B2, 0x8F88, 0xB1B3, 0x80CC, 0xB1B4, 0x8D1D, 0xB1B5, 0x94A1,
+	0xB1B6, 0x500D, 0xB1B7, 0x72C8, 0xB1B8, 0x5907, 0xB1B9, 0x60EB,
+	0xB1BA, 0x7119, 0xB1BB, 0x88AB, 0xB1BC, 0x5954, 0xB1BD, 0x82EF,
+	0xB1BE, 0x672C, 0xB1BF, 0x7B28, 0xB1C0, 0x5D29, 0xB1C1, 0x7EF7,
+	0xB1C2, 0x752D, 0xB1C3, 0x6CF5, 0xB1C4, 0x8E66, 0xB1C5, 0x8FF8,
+	0xB1C6, 0x903C, 0xB1C7, 0x9F3B, 0xB1C8, 0x6BD4, 0xB1C9, 0x9119,
+	0xB1CA, 0x7B14, 0xB1CB, 0x5F7C, 0xB1CC, 0x78A7, 0xB1CD, 0x84D6,
+	0xB1CE, 0x853D, 0xB1CF, 0x6BD5, 0xB1D0, 0x6BD9, 0xB1D1, 0x6BD6,
+	0xB1D2, 0x5E01, 0xB1D3, 0x5E87, 0xB1D4, 0x75F9, 0xB1D5, 0x95ED,
+	0xB1D6, 0x655D, 0xB1D7, 0x5F0A, 0xB1D8, 0x5FC5, 0xB1D9, 0x8F9F,
+	0xB1DA, 0x58C1, 0xB1DB, 0x81C2, 0xB1DC, 0x907F, 0xB1DD, 0x965B,
+	0xB1DE, 0x97AD, 0xB1DF, 0x8FB9, 0xB1E0, 0x7F16, 0xB1E1, 0x8D2C,
+	0xB1E2, 0x6241, 0xB1E3, 0x4FBF, 0xB1E4, 0x53D8, 0xB1E5, 0x535E,
+	0xB1E6, 0x8FA8, 0xB1E7, 0x8FA9, 0xB1E8, 0x8FAB, 0xB1E9, 0x904D,
+	0xB1EA, 0x6807, 0xB1EB, 0x5F6A, 0xB1EC, 0x8198, 0xB1ED, 0x8868,
+	0xB1EE, 0x9CD6, 0xB1EF, 0x618B, 0xB1F0, 0x522B, 0xB1F1, 0x762A,
+	0xB1F2, 0x5F6C, 0xB1F3, 0x658C, 0xB1F4, 0x6FD2, 0xB1F5, 0x6EE8,
+	0xB1F6, 0x5BBE, 0xB1F7, 0x6448, 0xB1F8, 0x5175, 0xB1F9, 0x51B0,
+	0xB1FA, 0x67C4, 0xB1FB, 0x4E19, 0xB1FC, 0x79C9, 0xB1FD, 0x997C,
+	0xB1FE, 0x70B3, 0xB240, 0x775D, 0xB241, 0x775E, 0xB242, 0x775F,
+	0xB243, 0x7760, 0xB244, 0x7764, 0xB245, 0x7767, 0xB246, 0x7769,
+	0xB247, 0x776A, 0xB248, 0x776D, 0xB249, 0x776E, 0xB24A, 0x776F,
+	0xB24B, 0x7770, 0xB24C, 0x7771, 0xB24D, 0x7772, 0xB24E, 0x7773,
+	0xB24F, 0x7774, 0xB250, 0x7775, 0xB251, 0x7776, 0xB252, 0x7777,
+	0xB253, 0x7778, 0xB254, 0x777A, 0xB255, 0x777B, 0xB256, 0x777C,
+	0xB257, 0x7781, 0xB258, 0x7782, 0xB259, 0x7783, 0xB25A, 0x7786,
+	0xB25B, 0x7787, 0xB25C, 0x7788, 0xB25D, 0x7789, 0xB25E, 0x778A,
+	0xB25F, 0x778B, 0xB260, 0x778F, 0xB261, 0x7790, 0xB262, 0x7793,
+	0xB263, 0x7794, 0xB264, 0x7795, 0xB265, 0x7796, 0xB266, 0x7797,
+	0xB267, 0x7798, 0xB268, 0x7799, 0xB269, 0x779A, 0xB26A, 0x779B,
+	0xB26B, 0x779C, 0xB26C, 0x779D, 0xB26D, 0x779E, 0xB26E, 0x77A1,
+	0xB26F, 0x77A3, 0xB270, 0x77A4, 0xB271, 0x77A6, 0xB272, 0x77A8,
+	0xB273, 0x77AB, 0xB274, 0x77AD, 0xB275, 0x77AE, 0xB276, 0x77AF,
+	0xB277, 0x77B1, 0xB278, 0x77B2, 0xB279, 0x77B4, 0xB27A, 0x77B6,
+	0xB27B, 0x77B7, 0xB27C, 0x77B8, 0xB27D, 0x77B9, 0xB27E, 0x77BA,
+	0xB280, 0x77BC, 0xB281, 0x77BE, 0xB282, 0x77C0, 0xB283, 0x77C1,
+	0xB284, 0x77C2, 0xB285, 0x77C3, 0xB286, 0x77C4, 0xB287, 0x77C5,
+	0xB288, 0x77C6, 0xB289, 0x77C7, 0xB28A, 0x77C8, 0xB28B, 0x77C9,
+	0xB28C, 0x77CA, 0xB28D, 0x77CB, 0xB28E, 0x77CC, 0xB28F, 0x77CE,
+	0xB290, 0x77CF, 0xB291, 0x77D0, 0xB292, 0x77D1, 0xB293, 0x77D2,
+	0xB294, 0x77D3, 0xB295, 0x77D4, 0xB296, 0x77D5, 0xB297, 0x77D6,
+	0xB298, 0x77D8, 0xB299, 0x77D9, 0xB29A, 0x77DA, 0xB29B, 0x77DD,
+	0xB29C, 0x77DE, 0xB29D, 0x77DF, 0xB29E, 0x77E0, 0xB29F, 0x77E1,
+	0xB2A0, 0x77E4, 0xB2A1, 0x75C5, 0xB2A2, 0x5E76, 0xB2A3, 0x73BB,
+	0xB2A4, 0x83E0, 0xB2A5, 0x64AD, 0xB2A6, 0x62E8, 0xB2A7, 0x94B5,
+	0xB2A8, 0x6CE2, 0xB2A9, 0x535A, 0xB2AA, 0x52C3, 0xB2AB, 0x640F,
+	0xB2AC, 0x94C2, 0xB2AD, 0x7B94, 0xB2AE, 0x4F2F, 0xB2AF, 0x5E1B,
+	0xB2B0, 0x8236, 0xB2B1, 0x8116, 0xB2B2, 0x818A, 0xB2B3, 0x6E24,
+	0xB2B4, 0x6CCA, 0xB2B5, 0x9A73, 0xB2B6, 0x6355, 0xB2B7, 0x535C,
+	0xB2B8, 0x54FA, 0xB2B9, 0x8865, 0xB2BA, 0x57E0, 0xB2BB, 0x4E0D,
+	0xB2BC, 0x5E03, 0xB2BD, 0x6B65, 0xB2BE, 0x7C3F, 0xB2BF, 0x90E8,
+	0xB2C0, 0x6016, 0xB2C1, 0x64E6, 0xB2C2, 0x731C, 0xB2C3, 0x88C1,
+	0xB2C4, 0x6750, 0xB2C5, 0x624D, 0xB2C6, 0x8D22, 0xB2C7, 0x776C,
+	0xB2C8, 0x8E29, 0xB2C9, 0x91C7, 0xB2CA, 0x5F69, 0xB2CB, 0x83DC,
+	0xB2CC, 0x8521, 0xB2CD, 0x9910, 0xB2CE, 0x53C2, 0xB2CF, 0x8695,
+	0xB2D0, 0x6B8B, 0xB2D1, 0x60ED, 0xB2D2, 0x60E8, 0xB2D3, 0x707F,
+	0xB2D4, 0x82CD, 0xB2D5, 0x8231, 0xB2D6, 0x4ED3, 0xB2D7, 0x6CA7,
+	0xB2D8, 0x85CF, 0xB2D9, 0x64CD, 0xB2DA, 0x7CD9, 0xB2DB, 0x69FD,
+	0xB2DC, 0x66F9, 0xB2DD, 0x8349, 0xB2DE, 0x5395, 0xB2DF, 0x7B56,
+	0xB2E0, 0x4FA7, 0xB2E1, 0x518C, 0xB2E2, 0x6D4B, 0xB2E3, 0x5C42,
+	0xB2E4, 0x8E6D, 0xB2E5, 0x63D2, 0xB2E6, 0x53C9, 0xB2E7, 0x832C,
+	0xB2E8, 0x8336, 0xB2E9, 0x67E5, 0xB2EA, 0x78B4, 0xB2EB, 0x643D,
+	0xB2EC, 0x5BDF, 0xB2ED, 0x5C94, 0xB2EE, 0x5DEE, 0xB2EF, 0x8BE7,
+	0xB2F0, 0x62C6, 0xB2F1, 0x67F4, 0xB2F2, 0x8C7A, 0xB2F3, 0x6400,
+	0xB2F4, 0x63BA, 0xB2F5, 0x8749, 0xB2F6, 0x998B, 0xB2F7, 0x8C17,
+	0xB2F8, 0x7F20, 0xB2F9, 0x94F2, 0xB2FA, 0x4EA7, 0xB2FB, 0x9610,
+	0xB2FC, 0x98A4, 0xB2FD, 0x660C, 0xB2FE, 0x7316, 0xB340, 0x77E6,
+	0xB341, 0x77E8, 0xB342, 0x77EA, 0xB343, 0x77EF, 0xB344, 0x77F0,
+	0xB345, 0x77F1, 0xB346, 0x77F2, 0xB347, 0x77F4, 0xB348, 0x77F5,
+	0xB349, 0x77F7, 0xB34A, 0x77F9, 0xB34B, 0x77FA, 0xB34C, 0x77FB,
+	0xB34D, 0x77FC, 0xB34E, 0x7803, 0xB34F, 0x7804, 0xB350, 0x7805,
+	0xB351, 0x7806, 0xB352, 0x7807, 0xB353, 0x7808, 0xB354, 0x780A,
+	0xB355, 0x780B, 0xB356, 0x780E, 0xB357, 0x780F, 0xB358, 0x7810,
+	0xB359, 0x7813, 0xB35A, 0x7815, 0xB35B, 0x7819, 0xB35C, 0x781B,
+	0xB35D, 0x781E, 0xB35E, 0x7820, 0xB35F, 0x7821, 0xB360, 0x7822,
+	0xB361, 0x7824, 0xB362, 0x7828, 0xB363, 0x782A, 0xB364, 0x782B,
+	0xB365, 0x782E, 0xB366, 0x782F, 0xB367, 0x7831, 0xB368, 0x7832,
+	0xB369, 0x7833, 0xB36A, 0x7835, 0xB36B, 0x7836, 0xB36C, 0x783D,
+	0xB36D, 0x783F, 0xB36E, 0x7841, 0xB36F, 0x7842, 0xB370, 0x7843,
+	0xB371, 0x7844, 0xB372, 0x7846, 0xB373, 0x7848, 0xB374, 0x7849,
+	0xB375, 0x784A, 0xB376, 0x784B, 0xB377, 0x784D, 0xB378, 0x784F,
+	0xB379, 0x7851, 0xB37A, 0x7853, 0xB37B, 0x7854, 0xB37C, 0x7858,
+	0xB37D, 0x7859, 0xB37E, 0x785A, 0xB380, 0x785B, 0xB381, 0x785C,
+	0xB382, 0x785E, 0xB383, 0x785F, 0xB384, 0x7860, 0xB385, 0x7861,
+	0xB386, 0x7862, 0xB387, 0x7863, 0xB388, 0x7864, 0xB389, 0x7865,
+	0xB38A, 0x7866, 0xB38B, 0x7867, 0xB38C, 0x7868, 0xB38D, 0x7869,
+	0xB38E, 0x786F, 0xB38F, 0x7870, 0xB390, 0x7871, 0xB391, 0x7872,
+	0xB392, 0x7873, 0xB393, 0x7874, 0xB394, 0x7875, 0xB395, 0x7876,
+	0xB396, 0x7878, 0xB397, 0x7879, 0xB398, 0x787A, 0xB399, 0x787B,
+	0xB39A, 0x787D, 0xB39B, 0x787E, 0xB39C, 0x787F, 0xB39D, 0x7880,
+	0xB39E, 0x7881, 0xB39F, 0x7882, 0xB3A0, 0x7883, 0xB3A1, 0x573A,
+	0xB3A2, 0x5C1D, 0xB3A3, 0x5E38, 0xB3A4, 0x957F, 0xB3A5, 0x507F,
+	0xB3A6, 0x80A0, 0xB3A7, 0x5382, 0xB3A8, 0x655E, 0xB3A9, 0x7545,
+	0xB3AA, 0x5531, 0xB3AB, 0x5021, 0xB3AC, 0x8D85, 0xB3AD, 0x6284,
+	0xB3AE, 0x949E, 0xB3AF, 0x671D, 0xB3B0, 0x5632, 0xB3B1, 0x6F6E,
+	0xB3B2, 0x5DE2, 0xB3B3, 0x5435, 0xB3B4, 0x7092, 0xB3B5, 0x8F66,
+	0xB3B6, 0x626F, 0xB3B7, 0x64A4, 0xB3B8, 0x63A3, 0xB3B9, 0x5F7B,
+	0xB3BA, 0x6F88, 0xB3BB, 0x90F4, 0xB3BC, 0x81E3, 0xB3BD, 0x8FB0,
+	0xB3BE, 0x5C18, 0xB3BF, 0x6668, 0xB3C0, 0x5FF1, 0xB3C1, 0x6C89,
+	0xB3C2, 0x9648, 0xB3C3, 0x8D81, 0xB3C4, 0x886C, 0xB3C5, 0x6491,
+	0xB3C6, 0x79F0, 0xB3C7, 0x57CE, 0xB3C8, 0x6A59, 0xB3C9, 0x6210,
+	0xB3CA, 0x5448, 0xB3CB, 0x4E58, 0xB3CC, 0x7A0B, 0xB3CD, 0x60E9,
+	0xB3CE, 0x6F84, 0xB3CF, 0x8BDA, 0xB3D0, 0x627F, 0xB3D1, 0x901E,
+	0xB3D2, 0x9A8B, 0xB3D3, 0x79E4, 0xB3D4, 0x5403, 0xB3D5, 0x75F4,
+	0xB3D6, 0x6301, 0xB3D7, 0x5319, 0xB3D8, 0x6C60, 0xB3D9, 0x8FDF,
+	0xB3DA, 0x5F1B, 0xB3DB, 0x9A70, 0xB3DC, 0x803B, 0xB3DD, 0x9F7F,
+	0xB3DE, 0x4F88, 0xB3DF, 0x5C3A, 0xB3E0, 0x8D64, 0xB3E1, 0x7FC5,
+	0xB3E2, 0x65A5, 0xB3E3, 0x70BD, 0xB3E4, 0x5145, 0xB3E5, 0x51B2,
+	0xB3E6, 0x866B, 0xB3E7, 0x5D07, 0xB3E8, 0x5BA0, 0xB3E9, 0x62BD,
+	0xB3EA, 0x916C, 0xB3EB, 0x7574, 0xB3EC, 0x8E0C, 0xB3ED, 0x7A20,
+	0xB3EE, 0x6101, 0xB3EF, 0x7B79, 0xB3F0, 0x4EC7, 0xB3F1, 0x7EF8,
+	0xB3F2, 0x7785, 0xB3F3, 0x4E11, 0xB3F4, 0x81ED, 0xB3F5, 0x521D,
+	0xB3F6, 0x51FA, 0xB3F7, 0x6A71, 0xB3F8, 0x53A8, 0xB3F9, 0x8E87,
+	0xB3FA, 0x9504, 0xB3FB, 0x96CF, 0xB3FC, 0x6EC1, 0xB3FD, 0x9664,
+	0xB3FE, 0x695A, 0xB440, 0x7884, 0xB441, 0x7885, 0xB442, 0x7886,
+	0xB443, 0x7888, 0xB444, 0x788A, 0xB445, 0x788B, 0xB446, 0x788F,
+	0xB447, 0x7890, 0xB448, 0x7892, 0xB449, 0x7894, 0xB44A, 0x7895,
+	0xB44B, 0x7896, 0xB44C, 0x7899, 0xB44D, 0x789D, 0xB44E, 0x789E,
+	0xB44F, 0x78A0, 0xB450, 0x78A2, 0xB451, 0x78A4, 0xB452, 0x78A6,
+	0xB453, 0x78A8, 0xB454, 0x78A9, 0xB455, 0x78AA, 0xB456, 0x78AB,
+	0xB457, 0x78AC, 0xB458, 0x78AD, 0xB459, 0x78AE, 0xB45A, 0x78AF,
+	0xB45B, 0x78B5, 0xB45C, 0x78B6, 0xB45D, 0x78B7, 0xB45E, 0x78B8,
+	0xB45F, 0x78BA, 0xB460, 0x78BB, 0xB461, 0x78BC, 0xB462, 0x78BD,
+	0xB463, 0x78BF, 0xB464, 0x78C0, 0xB465, 0x78C2, 0xB466, 0x78C3,
+	0xB467, 0x78C4, 0xB468, 0x78C6, 0xB469, 0x78C7, 0xB46A, 0x78C8,
+	0xB46B, 0x78CC, 0xB46C, 0x78CD, 0xB46D, 0x78CE, 0xB46E, 0x78CF,
+	0xB46F, 0x78D1, 0xB470, 0x78D2, 0xB471, 0x78D3, 0xB472, 0x78D6,
+	0xB473, 0x78D7, 0xB474, 0x78D8, 0xB475, 0x78DA, 0xB476, 0x78DB,
+	0xB477, 0x78DC, 0xB478, 0x78DD, 0xB479, 0x78DE, 0xB47A, 0x78DF,
+	0xB47B, 0x78E0, 0xB47C, 0x78E1, 0xB47D, 0x78E2, 0xB47E, 0x78E3,
+	0xB480, 0x78E4, 0xB481, 0x78E5, 0xB482, 0x78E6, 0xB483, 0x78E7,
+	0xB484, 0x78E9, 0xB485, 0x78EA, 0xB486, 0x78EB, 0xB487, 0x78ED,
+	0xB488, 0x78EE, 0xB489, 0x78EF, 0xB48A, 0x78F0, 0xB48B, 0x78F1,
+	0xB48C, 0x78F3, 0xB48D, 0x78F5, 0xB48E, 0x78F6, 0xB48F, 0x78F8,
+	0xB490, 0x78F9, 0xB491, 0x78FB, 0xB492, 0x78FC, 0xB493, 0x78FD,
+	0xB494, 0x78FE, 0xB495, 0x78FF, 0xB496, 0x7900, 0xB497, 0x7902,
+	0xB498, 0x7903, 0xB499, 0x7904, 0xB49A, 0x7906, 0xB49B, 0x7907,
+	0xB49C, 0x7908, 0xB49D, 0x7909, 0xB49E, 0x790A, 0xB49F, 0x790B,
+	0xB4A0, 0x790C, 0xB4A1, 0x7840, 0xB4A2, 0x50A8, 0xB4A3, 0x77D7,
+	0xB4A4, 0x6410, 0xB4A5, 0x89E6, 0xB4A6, 0x5904, 0xB4A7, 0x63E3,
+	0xB4A8, 0x5DDD, 0xB4A9, 0x7A7F, 0xB4AA, 0x693D, 0xB4AB, 0x4F20,
+	0xB4AC, 0x8239, 0xB4AD, 0x5598, 0xB4AE, 0x4E32, 0xB4AF, 0x75AE,
+	0xB4B0, 0x7A97, 0xB4B1, 0x5E62, 0xB4B2, 0x5E8A, 0xB4B3, 0x95EF,
+	0xB4B4, 0x521B, 0xB4B5, 0x5439, 0xB4B6, 0x708A, 0xB4B7, 0x6376,
+	0xB4B8, 0x9524, 0xB4B9, 0x5782, 0xB4BA, 0x6625, 0xB4BB, 0x693F,
+	0xB4BC, 0x9187, 0xB4BD, 0x5507, 0xB4BE, 0x6DF3, 0xB4BF, 0x7EAF,
+	0xB4C0, 0x8822, 0xB4C1, 0x6233, 0xB4C2, 0x7EF0, 0xB4C3, 0x75B5,
+	0xB4C4, 0x8328, 0xB4C5, 0x78C1, 0xB4C6, 0x96CC, 0xB4C7, 0x8F9E,
+	0xB4C8, 0x6148, 0xB4C9, 0x74F7, 0xB4CA, 0x8BCD, 0xB4CB, 0x6B64,
+	0xB4CC, 0x523A, 0xB4CD, 0x8D50, 0xB4CE, 0x6B21, 0xB4CF, 0x806A,
+	0xB4D0, 0x8471, 0xB4D1, 0x56F1, 0xB4D2, 0x5306, 0xB4D3, 0x4ECE,
+	0xB4D4, 0x4E1B, 0xB4D5, 0x51D1, 0xB4D6, 0x7C97, 0xB4D7, 0x918B,
+	0xB4D8, 0x7C07, 0xB4D9, 0x4FC3, 0xB4DA, 0x8E7F, 0xB4DB, 0x7BE1,
+	0xB4DC, 0x7A9C, 0xB4DD, 0x6467, 0xB4DE, 0x5D14, 0xB4DF, 0x50AC,
+	0xB4E0, 0x8106, 0xB4E1, 0x7601, 0xB4E2, 0x7CB9, 0xB4E3, 0x6DEC,
+	0xB4E4, 0x7FE0, 0xB4E5, 0x6751, 0xB4E6, 0x5B58, 0xB4E7, 0x5BF8,
+	0xB4E8, 0x78CB, 0xB4E9, 0x64AE, 0xB4EA, 0x6413, 0xB4EB, 0x63AA,
+	0xB4EC, 0x632B, 0xB4ED, 0x9519, 0xB4EE, 0x642D, 0xB4EF, 0x8FBE,
+	0xB4F0, 0x7B54, 0xB4F1, 0x7629, 0xB4F2, 0x6253, 0xB4F3, 0x5927,
+	0xB4F4, 0x5446, 0xB4F5, 0x6B79, 0xB4F6, 0x50A3, 0xB4F7, 0x6234,
+	0xB4F8, 0x5E26, 0xB4F9, 0x6B86, 0xB4FA, 0x4EE3, 0xB4FB, 0x8D37,
+	0xB4FC, 0x888B, 0xB4FD, 0x5F85, 0xB4FE, 0x902E, 0xB540, 0x790D,
+	0xB541, 0x790E, 0xB542, 0x790F, 0xB543, 0x7910, 0xB544, 0x7911,
+	0xB545, 0x7912, 0xB546, 0x7914, 0xB547, 0x7915, 0xB548, 0x7916,
+	0xB549, 0x7917, 0xB54A, 0x7918, 0xB54B, 0x7919, 0xB54C, 0x791A,
+	0xB54D, 0x791B, 0xB54E, 0x791C, 0xB54F, 0x791D, 0xB550, 0x791F,
+	0xB551, 0x7920, 0xB552, 0x7921, 0xB553, 0x7922, 0xB554, 0x7923,
+	0xB555, 0x7925, 0xB556, 0x7926, 0xB557, 0x7927, 0xB558, 0x7928,
+	0xB559, 0x7929, 0xB55A, 0x792A, 0xB55B, 0x792B, 0xB55C, 0x792C,
+	0xB55D, 0x792D, 0xB55E, 0x792E, 0xB55F, 0x792F, 0xB560, 0x7930,
+	0xB561, 0x7931, 0xB562, 0x7932, 0xB563, 0x7933, 0xB564, 0x7935,
+	0xB565, 0x7936, 0xB566, 0x7937, 0xB567, 0x7938, 0xB568, 0x7939,
+	0xB569, 0x793D, 0xB56A, 0x793F, 0xB56B, 0x7942, 0xB56C, 0x7943,
+	0xB56D, 0x7944, 0xB56E, 0x7945, 0xB56F, 0x7947, 0xB570, 0x794A,
+	0xB571, 0x794B, 0xB572, 0x794C, 0xB573, 0x794D, 0xB574, 0x794E,
+	0xB575, 0x794F, 0xB576, 0x7950, 0xB577, 0x7951, 0xB578, 0x7952,
+	0xB579, 0x7954, 0xB57A, 0x7955, 0xB57B, 0x7958, 0xB57C, 0x7959,
+	0xB57D, 0x7961, 0xB57E, 0x7963, 0xB580, 0x7964, 0xB581, 0x7966,
+	0xB582, 0x7969, 0xB583, 0x796A, 0xB584, 0x796B, 0xB585, 0x796C,
+	0xB586, 0x796E, 0xB587, 0x7970, 0xB588, 0x7971, 0xB589, 0x7972,
+	0xB58A, 0x7973, 0xB58B, 0x7974, 0xB58C, 0x7975, 0xB58D, 0x7976,
+	0xB58E, 0x7979, 0xB58F, 0x797B, 0xB590, 0x797C, 0xB591, 0x797D,
+	0xB592, 0x797E, 0xB593, 0x797F, 0xB594, 0x7982, 0xB595, 0x7983,
+	0xB596, 0x7986, 0xB597, 0x7987, 0xB598, 0x7988, 0xB599, 0x7989,
+	0xB59A, 0x798B, 0xB59B, 0x798C, 0xB59C, 0x798D, 0xB59D, 0x798E,
+	0xB59E, 0x7990, 0xB59F, 0x7991, 0xB5A0, 0x7992, 0xB5A1, 0x6020,
+	0xB5A2, 0x803D, 0xB5A3, 0x62C5, 0xB5A4, 0x4E39, 0xB5A5, 0x5355,
+	0xB5A6, 0x90F8, 0xB5A7, 0x63B8, 0xB5A8, 0x80C6, 0xB5A9, 0x65E6,
+	0xB5AA, 0x6C2E, 0xB5AB, 0x4F46, 0xB5AC, 0x60EE, 0xB5AD, 0x6DE1,
+	0xB5AE, 0x8BDE, 0xB5AF, 0x5F39, 0xB5B0, 0x86CB, 0xB5B1, 0x5F53,
+	0xB5B2, 0x6321, 0xB5B3, 0x515A, 0xB5B4, 0x8361, 0xB5B5, 0x6863,
+	0xB5B6, 0x5200, 0xB5B7, 0x6363, 0xB5B8, 0x8E48, 0xB5B9, 0x5012,
+	0xB5BA, 0x5C9B, 0xB5BB, 0x7977, 0xB5BC, 0x5BFC, 0xB5BD, 0x5230,
+	0xB5BE, 0x7A3B, 0xB5BF, 0x60BC, 0xB5C0, 0x9053, 0xB5C1, 0x76D7,
+	0xB5C2, 0x5FB7, 0xB5C3, 0x5F97, 0xB5C4, 0x7684, 0xB5C5, 0x8E6C,
+	0xB5C6, 0x706F, 0xB5C7, 0x767B, 0xB5C8, 0x7B49, 0xB5C9, 0x77AA,
+	0xB5CA, 0x51F3, 0xB5CB, 0x9093, 0xB5CC, 0x5824, 0xB5CD, 0x4F4E,
+	0xB5CE, 0x6EF4, 0xB5CF, 0x8FEA, 0xB5D0, 0x654C, 0xB5D1, 0x7B1B,
+	0xB5D2, 0x72C4, 0xB5D3, 0x6DA4, 0xB5D4, 0x7FDF, 0xB5D5, 0x5AE1,
+	0xB5D6, 0x62B5, 0xB5D7, 0x5E95, 0xB5D8, 0x5730, 0xB5D9, 0x8482,
+	0xB5DA, 0x7B2C, 0xB5DB, 0x5E1D, 0xB5DC, 0x5F1F, 0xB5DD, 0x9012,
+	0xB5DE, 0x7F14, 0xB5DF, 0x98A0, 0xB5E0, 0x6382, 0xB5E1, 0x6EC7,
+	0xB5E2, 0x7898, 0xB5E3, 0x70B9, 0xB5E4, 0x5178, 0xB5E5, 0x975B,
+	0xB5E6, 0x57AB, 0xB5E7, 0x7535, 0xB5E8, 0x4F43, 0xB5E9, 0x7538,
+	0xB5EA, 0x5E97, 0xB5EB, 0x60E6, 0xB5EC, 0x5960, 0xB5ED, 0x6DC0,
+	0xB5EE, 0x6BBF, 0xB5EF, 0x7889, 0xB5F0, 0x53FC, 0xB5F1, 0x96D5,
+	0xB5F2, 0x51CB, 0xB5F3, 0x5201, 0xB5F4, 0x6389, 0xB5F5, 0x540A,
+	0xB5F6, 0x9493, 0xB5F7, 0x8C03, 0xB5F8, 0x8DCC, 0xB5F9, 0x7239,
+	0xB5FA, 0x789F, 0xB5FB, 0x8776, 0xB5FC, 0x8FED, 0xB5FD, 0x8C0D,
+	0xB5FE, 0x53E0, 0xB640, 0x7993, 0xB641, 0x7994, 0xB642, 0x7995,
+	0xB643, 0x7996, 0xB644, 0x7997, 0xB645, 0x7998, 0xB646, 0x7999,
+	0xB647, 0x799B, 0xB648, 0x799C, 0xB649, 0x799D, 0xB64A, 0x799E,
+	0xB64B, 0x799F, 0xB64C, 0x79A0, 0xB64D, 0x79A1, 0xB64E, 0x79A2,
+	0xB64F, 0x79A3, 0xB650, 0x79A4, 0xB651, 0x79A5, 0xB652, 0x79A6,
+	0xB653, 0x79A8, 0xB654, 0x79A9, 0xB655, 0x79AA, 0xB656, 0x79AB,
+	0xB657, 0x79AC, 0xB658, 0x79AD, 0xB659, 0x79AE, 0xB65A, 0x79AF,
+	0xB65B, 0x79B0, 0xB65C, 0x79B1, 0xB65D, 0x79B2, 0xB65E, 0x79B4,
+	0xB65F, 0x79B5, 0xB660, 0x79B6, 0xB661, 0x79B7, 0xB662, 0x79B8,
+	0xB663, 0x79BC, 0xB664, 0x79BF, 0xB665, 0x79C2, 0xB666, 0x79C4,
+	0xB667, 0x79C5, 0xB668, 0x79C7, 0xB669, 0x79C8, 0xB66A, 0x79CA,
+	0xB66B, 0x79CC, 0xB66C, 0x79CE, 0xB66D, 0x79CF, 0xB66E, 0x79D0,
+	0xB66F, 0x79D3, 0xB670, 0x79D4, 0xB671, 0x79D6, 0xB672, 0x79D7,
+	0xB673, 0x79D9, 0xB674, 0x79DA, 0xB675, 0x79DB, 0xB676, 0x79DC,
+	0xB677, 0x79DD, 0xB678, 0x79DE, 0xB679, 0x79E0, 0xB67A, 0x79E1,
+	0xB67B, 0x79E2, 0xB67C, 0x79E5, 0xB67D, 0x79E8, 0xB67E, 0x79EA,
+	0xB680, 0x79EC, 0xB681, 0x79EE, 0xB682, 0x79F1, 0xB683, 0x79F2,
+	0xB684, 0x79F3, 0xB685, 0x79F4, 0xB686, 0x79F5, 0xB687, 0x79F6,
+	0xB688, 0x79F7, 0xB689, 0x79F9, 0xB68A, 0x79FA, 0xB68B, 0x79FC,
+	0xB68C, 0x79FE, 0xB68D, 0x79FF, 0xB68E, 0x7A01, 0xB68F, 0x7A04,
+	0xB690, 0x7A05, 0xB691, 0x7A07, 0xB692, 0x7A08, 0xB693, 0x7A09,
+	0xB694, 0x7A0A, 0xB695, 0x7A0C, 0xB696, 0x7A0F, 0xB697, 0x7A10,
+	0xB698, 0x7A11, 0xB699, 0x7A12, 0xB69A, 0x7A13, 0xB69B, 0x7A15,
+	0xB69C, 0x7A16, 0xB69D, 0x7A18, 0xB69E, 0x7A19, 0xB69F, 0x7A1B,
+	0xB6A0, 0x7A1C, 0xB6A1, 0x4E01, 0xB6A2, 0x76EF, 0xB6A3, 0x53EE,
+	0xB6A4, 0x9489, 0xB6A5, 0x9876, 0xB6A6, 0x9F0E, 0xB6A7, 0x952D,
+	0xB6A8, 0x5B9A, 0xB6A9, 0x8BA2, 0xB6AA, 0x4E22, 0xB6AB, 0x4E1C,
+	0xB6AC, 0x51AC, 0xB6AD, 0x8463, 0xB6AE, 0x61C2, 0xB6AF, 0x52A8,
+	0xB6B0, 0x680B, 0xB6B1, 0x4F97, 0xB6B2, 0x606B, 0xB6B3, 0x51BB,
+	0xB6B4, 0x6D1E, 0xB6B5, 0x515C, 0xB6B6, 0x6296, 0xB6B7, 0x6597,
+	0xB6B8, 0x9661, 0xB6B9, 0x8C46, 0xB6BA, 0x9017, 0xB6BB, 0x75D8,
+	0xB6BC, 0x90FD, 0xB6BD, 0x7763, 0xB6BE, 0x6BD2, 0xB6BF, 0x728A,
+	0xB6C0, 0x72EC, 0xB6C1, 0x8BFB, 0xB6C2, 0x5835, 0xB6C3, 0x7779,
+	0xB6C4, 0x8D4C, 0xB6C5, 0x675C, 0xB6C6, 0x9540, 0xB6C7, 0x809A,
+	0xB6C8, 0x5EA6, 0xB6C9, 0x6E21, 0xB6CA, 0x5992, 0xB6CB, 0x7AEF,
+	0xB6CC, 0x77ED, 0xB6CD, 0x953B, 0xB6CE, 0x6BB5, 0xB6CF, 0x65AD,
+	0xB6D0, 0x7F0E, 0xB6D1, 0x5806, 0xB6D2, 0x5151, 0xB6D3, 0x961F,
+	0xB6D4, 0x5BF9, 0xB6D5, 0x58A9, 0xB6D6, 0x5428, 0xB6D7, 0x8E72,
+	0xB6D8, 0x6566, 0xB6D9, 0x987F, 0xB6DA, 0x56E4, 0xB6DB, 0x949D,
+	0xB6DC, 0x76FE, 0xB6DD, 0x9041, 0xB6DE, 0x6387, 0xB6DF, 0x54C6,
+	0xB6E0, 0x591A, 0xB6E1, 0x593A, 0xB6E2, 0x579B, 0xB6E3, 0x8EB2,
+	0xB6E4, 0x6735, 0xB6E5, 0x8DFA, 0xB6E6, 0x8235, 0xB6E7, 0x5241,
+	0xB6E8, 0x60F0, 0xB6E9, 0x5815, 0xB6EA, 0x86FE, 0xB6EB, 0x5CE8,
+	0xB6EC, 0x9E45, 0xB6ED, 0x4FC4, 0xB6EE, 0x989D, 0xB6EF, 0x8BB9,
+	0xB6F0, 0x5A25, 0xB6F1, 0x6076, 0xB6F2, 0x5384, 0xB6F3, 0x627C,
+	0xB6F4, 0x904F, 0xB6F5, 0x9102, 0xB6F6, 0x997F, 0xB6F7, 0x6069,
+	0xB6F8, 0x800C, 0xB6F9, 0x513F, 0xB6FA, 0x8033, 0xB6FB, 0x5C14,
+	0xB6FC, 0x9975, 0xB6FD, 0x6D31, 0xB6FE, 0x4E8C, 0xB740, 0x7A1D,
+	0xB741, 0x7A1F, 0xB742, 0x7A21, 0xB743, 0x7A22, 0xB744, 0x7A24,
+	0xB745, 0x7A25, 0xB746, 0x7A26, 0xB747, 0x7A27, 0xB748, 0x7A28,
+	0xB749, 0x7A29, 0xB74A, 0x7A2A, 0xB74B, 0x7A2B, 0xB74C, 0x7A2C,
+	0xB74D, 0x7A2D, 0xB74E, 0x7A2E, 0xB74F, 0x7A2F, 0xB750, 0x7A30,
+	0xB751, 0x7A31, 0xB752, 0x7A32, 0xB753, 0x7A34, 0xB754, 0x7A35,
+	0xB755, 0x7A36, 0xB756, 0x7A38, 0xB757, 0x7A3A, 0xB758, 0x7A3E,
+	0xB759, 0x7A40, 0xB75A, 0x7A41, 0xB75B, 0x7A42, 0xB75C, 0x7A43,
+	0xB75D, 0x7A44, 0xB75E, 0x7A45, 0xB75F, 0x7A47, 0xB760, 0x7A48,
+	0xB761, 0x7A49, 0xB762, 0x7A4A, 0xB763, 0x7A4B, 0xB764, 0x7A4C,
+	0xB765, 0x7A4D, 0xB766, 0x7A4E, 0xB767, 0x7A4F, 0xB768, 0x7A50,
+	0xB769, 0x7A52, 0xB76A, 0x7A53, 0xB76B, 0x7A54, 0xB76C, 0x7A55,
+	0xB76D, 0x7A56, 0xB76E, 0x7A58, 0xB76F, 0x7A59, 0xB770, 0x7A5A,
+	0xB771, 0x7A5B, 0xB772, 0x7A5C, 0xB773, 0x7A5D, 0xB774, 0x7A5E,
+	0xB775, 0x7A5F, 0xB776, 0x7A60, 0xB777, 0x7A61, 0xB778, 0x7A62,
+	0xB779, 0x7A63, 0xB77A, 0x7A64, 0xB77B, 0x7A65, 0xB77C, 0x7A66,
+	0xB77D, 0x7A67, 0xB77E, 0x7A68, 0xB780, 0x7A69, 0xB781, 0x7A6A,
+	0xB782, 0x7A6B, 0xB783, 0x7A6C, 0xB784, 0x7A6D, 0xB785, 0x7A6E,
+	0xB786, 0x7A6F, 0xB787, 0x7A71, 0xB788, 0x7A72, 0xB789, 0x7A73,
+	0xB78A, 0x7A75, 0xB78B, 0x7A7B, 0xB78C, 0x7A7C, 0xB78D, 0x7A7D,
+	0xB78E, 0x7A7E, 0xB78F, 0x7A82, 0xB790, 0x7A85, 0xB791, 0x7A87,
+	0xB792, 0x7A89, 0xB793, 0x7A8A, 0xB794, 0x7A8B, 0xB795, 0x7A8C,
+	0xB796, 0x7A8E, 0xB797, 0x7A8F, 0xB798, 0x7A90, 0xB799, 0x7A93,
+	0xB79A, 0x7A94, 0xB79B, 0x7A99, 0xB79C, 0x7A9A, 0xB79D, 0x7A9B,
+	0xB79E, 0x7A9E, 0xB79F, 0x7AA1, 0xB7A0, 0x7AA2, 0xB7A1, 0x8D30,
+	0xB7A2, 0x53D1, 0xB7A3, 0x7F5A, 0xB7A4, 0x7B4F, 0xB7A5, 0x4F10,
+	0xB7A6, 0x4E4F, 0xB7A7, 0x9600, 0xB7A8, 0x6CD5, 0xB7A9, 0x73D0,
+	0xB7AA, 0x85E9, 0xB7AB, 0x5E06, 0xB7AC, 0x756A, 0xB7AD, 0x7FFB,
+	0xB7AE, 0x6A0A, 0xB7AF, 0x77FE, 0xB7B0, 0x9492, 0xB7B1, 0x7E41,
+	0xB7B2, 0x51E1, 0xB7B3, 0x70E6, 0xB7B4, 0x53CD, 0xB7B5, 0x8FD4,
+	0xB7B6, 0x8303, 0xB7B7, 0x8D29, 0xB7B8, 0x72AF, 0xB7B9, 0x996D,
+	0xB7BA, 0x6CDB, 0xB7BB, 0x574A, 0xB7BC, 0x82B3, 0xB7BD, 0x65B9,
+	0xB7BE, 0x80AA, 0xB7BF, 0x623F, 0xB7C0, 0x9632, 0xB7C1, 0x59A8,
+	0xB7C2, 0x4EFF, 0xB7C3, 0x8BBF, 0xB7C4, 0x7EBA, 0xB7C5, 0x653E,
+	0xB7C6, 0x83F2, 0xB7C7, 0x975E, 0xB7C8, 0x5561, 0xB7C9, 0x98DE,
+	0xB7CA, 0x80A5, 0xB7CB, 0x532A, 0xB7CC, 0x8BFD, 0xB7CD, 0x5420,
+	0xB7CE, 0x80BA, 0xB7CF, 0x5E9F, 0xB7D0, 0x6CB8, 0xB7D1, 0x8D39,
+	0xB7D2, 0x82AC, 0xB7D3, 0x915A, 0xB7D4, 0x5429, 0xB7D5, 0x6C1B,
+	0xB7D6, 0x5206, 0xB7D7, 0x7EB7, 0xB7D8, 0x575F, 0xB7D9, 0x711A,
+	0xB7DA, 0x6C7E, 0xB7DB, 0x7C89, 0xB7DC, 0x594B, 0xB7DD, 0x4EFD,
+	0xB7DE, 0x5FFF, 0xB7DF, 0x6124, 0xB7E0, 0x7CAA, 0xB7E1, 0x4E30,
+	0xB7E2, 0x5C01, 0xB7E3, 0x67AB, 0xB7E4, 0x8702, 0xB7E5, 0x5CF0,
+	0xB7E6, 0x950B, 0xB7E7, 0x98CE, 0xB7E8, 0x75AF, 0xB7E9, 0x70FD,
+	0xB7EA, 0x9022, 0xB7EB, 0x51AF, 0xB7EC, 0x7F1D, 0xB7ED, 0x8BBD,
+	0xB7EE, 0x5949, 0xB7EF, 0x51E4, 0xB7F0, 0x4F5B, 0xB7F1, 0x5426,
+	0xB7F2, 0x592B, 0xB7F3, 0x6577, 0xB7F4, 0x80A4, 0xB7F5, 0x5B75,
+	0xB7F6, 0x6276, 0xB7F7, 0x62C2, 0xB7F8, 0x8F90, 0xB7F9, 0x5E45,
+	0xB7FA, 0x6C1F, 0xB7FB, 0x7B26, 0xB7FC, 0x4F0F, 0xB7FD, 0x4FD8,
+	0xB7FE, 0x670D, 0xB840, 0x7AA3, 0xB841, 0x7AA4, 0xB842, 0x7AA7,
+	0xB843, 0x7AA9, 0xB844, 0x7AAA, 0xB845, 0x7AAB, 0xB846, 0x7AAE,
+	0xB847, 0x7AAF, 0xB848, 0x7AB0, 0xB849, 0x7AB1, 0xB84A, 0x7AB2,
+	0xB84B, 0x7AB4, 0xB84C, 0x7AB5, 0xB84D, 0x7AB6, 0xB84E, 0x7AB7,
+	0xB84F, 0x7AB8, 0xB850, 0x7AB9, 0xB851, 0x7ABA, 0xB852, 0x7ABB,
+	0xB853, 0x7ABC, 0xB854, 0x7ABD, 0xB855, 0x7ABE, 0xB856, 0x7AC0,
+	0xB857, 0x7AC1, 0xB858, 0x7AC2, 0xB859, 0x7AC3, 0xB85A, 0x7AC4,
+	0xB85B, 0x7AC5, 0xB85C, 0x7AC6, 0xB85D, 0x7AC7, 0xB85E, 0x7AC8,
+	0xB85F, 0x7AC9, 0xB860, 0x7ACA, 0xB861, 0x7ACC, 0xB862, 0x7ACD,
+	0xB863, 0x7ACE, 0xB864, 0x7ACF, 0xB865, 0x7AD0, 0xB866, 0x7AD1,
+	0xB867, 0x7AD2, 0xB868, 0x7AD3, 0xB869, 0x7AD4, 0xB86A, 0x7AD5,
+	0xB86B, 0x7AD7, 0xB86C, 0x7AD8, 0xB86D, 0x7ADA, 0xB86E, 0x7ADB,
+	0xB86F, 0x7ADC, 0xB870, 0x7ADD, 0xB871, 0x7AE1, 0xB872, 0x7AE2,
+	0xB873, 0x7AE4, 0xB874, 0x7AE7, 0xB875, 0x7AE8, 0xB876, 0x7AE9,
+	0xB877, 0x7AEA, 0xB878, 0x7AEB, 0xB879, 0x7AEC, 0xB87A, 0x7AEE,
+	0xB87B, 0x7AF0, 0xB87C, 0x7AF1, 0xB87D, 0x7AF2, 0xB87E, 0x7AF3,
+	0xB880, 0x7AF4, 0xB881, 0x7AF5, 0xB882, 0x7AF6, 0xB883, 0x7AF7,
+	0xB884, 0x7AF8, 0xB885, 0x7AFB, 0xB886, 0x7AFC, 0xB887, 0x7AFE,
+	0xB888, 0x7B00, 0xB889, 0x7B01, 0xB88A, 0x7B02, 0xB88B, 0x7B05,
+	0xB88C, 0x7B07, 0xB88D, 0x7B09, 0xB88E, 0x7B0C, 0xB88F, 0x7B0D,
+	0xB890, 0x7B0E, 0xB891, 0x7B10, 0xB892, 0x7B12, 0xB893, 0x7B13,
+	0xB894, 0x7B16, 0xB895, 0x7B17, 0xB896, 0x7B18, 0xB897, 0x7B1A,
+	0xB898, 0x7B1C, 0xB899, 0x7B1D, 0xB89A, 0x7B1F, 0xB89B, 0x7B21,
+	0xB89C, 0x7B22, 0xB89D, 0x7B23, 0xB89E, 0x7B27, 0xB89F, 0x7B29,
+	0xB8A0, 0x7B2D, 0xB8A1, 0x6D6E, 0xB8A2, 0x6DAA, 0xB8A3, 0x798F,
+	0xB8A4, 0x88B1, 0xB8A5, 0x5F17, 0xB8A6, 0x752B, 0xB8A7, 0x629A,
+	0xB8A8, 0x8F85, 0xB8A9, 0x4FEF, 0xB8AA, 0x91DC, 0xB8AB, 0x65A7,
+	0xB8AC, 0x812F, 0xB8AD, 0x8151, 0xB8AE, 0x5E9C, 0xB8AF, 0x8150,
+	0xB8B0, 0x8D74, 0xB8B1, 0x526F, 0xB8B2, 0x8986, 0xB8B3, 0x8D4B,
+	0xB8B4, 0x590D, 0xB8B5, 0x5085, 0xB8B6, 0x4ED8, 0xB8B7, 0x961C,
+	0xB8B8, 0x7236, 0xB8B9, 0x8179, 0xB8BA, 0x8D1F, 0xB8BB, 0x5BCC,
+	0xB8BC, 0x8BA3, 0xB8BD, 0x9644, 0xB8BE, 0x5987, 0xB8BF, 0x7F1A,
+	0xB8C0, 0x5490, 0xB8C1, 0x5676, 0xB8C2, 0x560E, 0xB8C3, 0x8BE5,
+	0xB8C4, 0x6539, 0xB8C5, 0x6982, 0xB8C6, 0x9499, 0xB8C7, 0x76D6,
+	0xB8C8, 0x6E89, 0xB8C9, 0x5E72, 0xB8CA, 0x7518, 0xB8CB, 0x6746,
+	0xB8CC, 0x67D1, 0xB8CD, 0x7AFF, 0xB8CE, 0x809D, 0xB8CF, 0x8D76,
+	0xB8D0, 0x611F, 0xB8D1, 0x79C6, 0xB8D2, 0x6562, 0xB8D3, 0x8D63,
+	0xB8D4, 0x5188, 0xB8D5, 0x521A, 0xB8D6, 0x94A2, 0xB8D7, 0x7F38,
+	0xB8D8, 0x809B, 0xB8D9, 0x7EB2, 0xB8DA, 0x5C97, 0xB8DB, 0x6E2F,
+	0xB8DC, 0x6760, 0xB8DD, 0x7BD9, 0xB8DE, 0x768B, 0xB8DF, 0x9AD8,
+	0xB8E0, 0x818F, 0xB8E1, 0x7F94, 0xB8E2, 0x7CD5, 0xB8E3, 0x641E,
+	0xB8E4, 0x9550, 0xB8E5, 0x7A3F, 0xB8E6, 0x544A, 0xB8E7, 0x54E5,
+	0xB8E8, 0x6B4C, 0xB8E9, 0x6401, 0xB8EA, 0x6208, 0xB8EB, 0x9E3D,
+	0xB8EC, 0x80F3, 0xB8ED, 0x7599, 0xB8EE, 0x5272, 0xB8EF, 0x9769,
+	0xB8F0, 0x845B, 0xB8F1, 0x683C, 0xB8F2, 0x86E4, 0xB8F3, 0x9601,
+	0xB8F4, 0x9694, 0xB8F5, 0x94EC, 0xB8F6, 0x4E2A, 0xB8F7, 0x5404,
+	0xB8F8, 0x7ED9, 0xB8F9, 0x6839, 0xB8FA, 0x8DDF, 0xB8FB, 0x8015,
+	0xB8FC, 0x66F4, 0xB8FD, 0x5E9A, 0xB8FE, 0x7FB9, 0xB940, 0x7B2F,
+	0xB941, 0x7B30, 0xB942, 0x7B32, 0xB943, 0x7B34, 0xB944, 0x7B35,
+	0xB945, 0x7B36, 0xB946, 0x7B37, 0xB947, 0x7B39, 0xB948, 0x7B3B,
+	0xB949, 0x7B3D, 0xB94A, 0x7B3F, 0xB94B, 0x7B40, 0xB94C, 0x7B41,
+	0xB94D, 0x7B42, 0xB94E, 0x7B43, 0xB94F, 0x7B44, 0xB950, 0x7B46,
+	0xB951, 0x7B48, 0xB952, 0x7B4A, 0xB953, 0x7B4D, 0xB954, 0x7B4E,
+	0xB955, 0x7B53, 0xB956, 0x7B55, 0xB957, 0x7B57, 0xB958, 0x7B59,
+	0xB959, 0x7B5C, 0xB95A, 0x7B5E, 0xB95B, 0x7B5F, 0xB95C, 0x7B61,
+	0xB95D, 0x7B63, 0xB95E, 0x7B64, 0xB95F, 0x7B65, 0xB960, 0x7B66,
+	0xB961, 0x7B67, 0xB962, 0x7B68, 0xB963, 0x7B69, 0xB964, 0x7B6A,
+	0xB965, 0x7B6B, 0xB966, 0x7B6C, 0xB967, 0x7B6D, 0xB968, 0x7B6F,
+	0xB969, 0x7B70, 0xB96A, 0x7B73, 0xB96B, 0x7B74, 0xB96C, 0x7B76,
+	0xB96D, 0x7B78, 0xB96E, 0x7B7A, 0xB96F, 0x7B7C, 0xB970, 0x7B7D,
+	0xB971, 0x7B7F, 0xB972, 0x7B81, 0xB973, 0x7B82, 0xB974, 0x7B83,
+	0xB975, 0x7B84, 0xB976, 0x7B86, 0xB977, 0x7B87, 0xB978, 0x7B88,
+	0xB979, 0x7B89, 0xB97A, 0x7B8A, 0xB97B, 0x7B8B, 0xB97C, 0x7B8C,
+	0xB97D, 0x7B8E, 0xB97E, 0x7B8F, 0xB980, 0x7B91, 0xB981, 0x7B92,
+	0xB982, 0x7B93, 0xB983, 0x7B96, 0xB984, 0x7B98, 0xB985, 0x7B99,
+	0xB986, 0x7B9A, 0xB987, 0x7B9B, 0xB988, 0x7B9E, 0xB989, 0x7B9F,
+	0xB98A, 0x7BA0, 0xB98B, 0x7BA3, 0xB98C, 0x7BA4, 0xB98D, 0x7BA5,
+	0xB98E, 0x7BAE, 0xB98F, 0x7BAF, 0xB990, 0x7BB0, 0xB991, 0x7BB2,
+	0xB992, 0x7BB3, 0xB993, 0x7BB5, 0xB994, 0x7BB6, 0xB995, 0x7BB7,
+	0xB996, 0x7BB9, 0xB997, 0x7BBA, 0xB998, 0x7BBB, 0xB999, 0x7BBC,
+	0xB99A, 0x7BBD, 0xB99B, 0x7BBE, 0xB99C, 0x7BBF, 0xB99D, 0x7BC0,
+	0xB99E, 0x7BC2, 0xB99F, 0x7BC3, 0xB9A0, 0x7BC4, 0xB9A1, 0x57C2,
+	0xB9A2, 0x803F, 0xB9A3, 0x6897, 0xB9A4, 0x5DE5, 0xB9A5, 0x653B,
+	0xB9A6, 0x529F, 0xB9A7, 0x606D, 0xB9A8, 0x9F9A, 0xB9A9, 0x4F9B,
+	0xB9AA, 0x8EAC, 0xB9AB, 0x516C, 0xB9AC, 0x5BAB, 0xB9AD, 0x5F13,
+	0xB9AE, 0x5DE9, 0xB9AF, 0x6C5E, 0xB9B0, 0x62F1, 0xB9B1, 0x8D21,
+	0xB9B2, 0x5171, 0xB9B3, 0x94A9, 0xB9B4, 0x52FE, 0xB9B5, 0x6C9F,
+	0xB9B6, 0x82DF, 0xB9B7, 0x72D7, 0xB9B8, 0x57A2, 0xB9B9, 0x6784,
+	0xB9BA, 0x8D2D, 0xB9BB, 0x591F, 0xB9BC, 0x8F9C, 0xB9BD, 0x83C7,
+	0xB9BE, 0x5495, 0xB9BF, 0x7B8D, 0xB9C0, 0x4F30, 0xB9C1, 0x6CBD,
+	0xB9C2, 0x5B64, 0xB9C3, 0x59D1, 0xB9C4, 0x9F13, 0xB9C5, 0x53E4,
+	0xB9C6, 0x86CA, 0xB9C7, 0x9AA8, 0xB9C8, 0x8C37, 0xB9C9, 0x80A1,
+	0xB9CA, 0x6545, 0xB9CB, 0x987E, 0xB9CC, 0x56FA, 0xB9CD, 0x96C7,
+	0xB9CE, 0x522E, 0xB9CF, 0x74DC, 0xB9D0, 0x5250, 0xB9D1, 0x5BE1,
+	0xB9D2, 0x6302, 0xB9D3, 0x8902, 0xB9D4, 0x4E56, 0xB9D5, 0x62D0,
+	0xB9D6, 0x602A, 0xB9D7, 0x68FA, 0xB9D8, 0x5173, 0xB9D9, 0x5B98,
+	0xB9DA, 0x51A0, 0xB9DB, 0x89C2, 0xB9DC, 0x7BA1, 0xB9DD, 0x9986,
+	0xB9DE, 0x7F50, 0xB9DF, 0x60EF, 0xB9E0, 0x704C, 0xB9E1, 0x8D2F,
+	0xB9E2, 0x5149, 0xB9E3, 0x5E7F, 0xB9E4, 0x901B, 0xB9E5, 0x7470,
+	0xB9E6, 0x89C4, 0xB9E7, 0x572D, 0xB9E8, 0x7845, 0xB9E9, 0x5F52,
+	0xB9EA, 0x9F9F, 0xB9EB, 0x95FA, 0xB9EC, 0x8F68, 0xB9ED, 0x9B3C,
+	0xB9EE, 0x8BE1, 0xB9EF, 0x7678, 0xB9F0, 0x6842, 0xB9F1, 0x67DC,
+	0xB9F2, 0x8DEA, 0xB9F3, 0x8D35, 0xB9F4, 0x523D, 0xB9F5, 0x8F8A,
+	0xB9F6, 0x6EDA, 0xB9F7, 0x68CD, 0xB9F8, 0x9505, 0xB9F9, 0x90ED,
+	0xB9FA, 0x56FD, 0xB9FB, 0x679C, 0xB9FC, 0x88F9, 0xB9FD, 0x8FC7,
+	0xB9FE, 0x54C8, 0xBA40, 0x7BC5, 0xBA41, 0x7BC8, 0xBA42, 0x7BC9,
+	0xBA43, 0x7BCA, 0xBA44, 0x7BCB, 0xBA45, 0x7BCD, 0xBA46, 0x7BCE,
+	0xBA47, 0x7BCF, 0xBA48, 0x7BD0, 0xBA49, 0x7BD2, 0xBA4A, 0x7BD4,
+	0xBA4B, 0x7BD5, 0xBA4C, 0x7BD6, 0xBA4D, 0x7BD7, 0xBA4E, 0x7BD8,
+	0xBA4F, 0x7BDB, 0xBA50, 0x7BDC, 0xBA51, 0x7BDE, 0xBA52, 0x7BDF,
+	0xBA53, 0x7BE0, 0xBA54, 0x7BE2, 0xBA55, 0x7BE3, 0xBA56, 0x7BE4,
+	0xBA57, 0x7BE7, 0xBA58, 0x7BE8, 0xBA59, 0x7BE9, 0xBA5A, 0x7BEB,
+	0xBA5B, 0x7BEC, 0xBA5C, 0x7BED, 0xBA5D, 0x7BEF, 0xBA5E, 0x7BF0,
+	0xBA5F, 0x7BF2, 0xBA60, 0x7BF3, 0xBA61, 0x7BF4, 0xBA62, 0x7BF5,
+	0xBA63, 0x7BF6, 0xBA64, 0x7BF8, 0xBA65, 0x7BF9, 0xBA66, 0x7BFA,
+	0xBA67, 0x7BFB, 0xBA68, 0x7BFD, 0xBA69, 0x7BFF, 0xBA6A, 0x7C00,
+	0xBA6B, 0x7C01, 0xBA6C, 0x7C02, 0xBA6D, 0x7C03, 0xBA6E, 0x7C04,
+	0xBA6F, 0x7C05, 0xBA70, 0x7C06, 0xBA71, 0x7C08, 0xBA72, 0x7C09,
+	0xBA73, 0x7C0A, 0xBA74, 0x7C0D, 0xBA75, 0x7C0E, 0xBA76, 0x7C10,
+	0xBA77, 0x7C11, 0xBA78, 0x7C12, 0xBA79, 0x7C13, 0xBA7A, 0x7C14,
+	0xBA7B, 0x7C15, 0xBA7C, 0x7C17, 0xBA7D, 0x7C18, 0xBA7E, 0x7C19,
+	0xBA80, 0x7C1A, 0xBA81, 0x7C1B, 0xBA82, 0x7C1C, 0xBA83, 0x7C1D,
+	0xBA84, 0x7C1E, 0xBA85, 0x7C20, 0xBA86, 0x7C21, 0xBA87, 0x7C22,
+	0xBA88, 0x7C23, 0xBA89, 0x7C24, 0xBA8A, 0x7C25, 0xBA8B, 0x7C28,
+	0xBA8C, 0x7C29, 0xBA8D, 0x7C2B, 0xBA8E, 0x7C2C, 0xBA8F, 0x7C2D,
+	0xBA90, 0x7C2E, 0xBA91, 0x7C2F, 0xBA92, 0x7C30, 0xBA93, 0x7C31,
+	0xBA94, 0x7C32, 0xBA95, 0x7C33, 0xBA96, 0x7C34, 0xBA97, 0x7C35,
+	0xBA98, 0x7C36, 0xBA99, 0x7C37, 0xBA9A, 0x7C39, 0xBA9B, 0x7C3A,
+	0xBA9C, 0x7C3B, 0xBA9D, 0x7C3C, 0xBA9E, 0x7C3D, 0xBA9F, 0x7C3E,
+	0xBAA0, 0x7C42, 0xBAA1, 0x9AB8, 0xBAA2, 0x5B69, 0xBAA3, 0x6D77,
+	0xBAA4, 0x6C26, 0xBAA5, 0x4EA5, 0xBAA6, 0x5BB3, 0xBAA7, 0x9A87,
+	0xBAA8, 0x9163, 0xBAA9, 0x61A8, 0xBAAA, 0x90AF, 0xBAAB, 0x97E9,
+	0xBAAC, 0x542B, 0xBAAD, 0x6DB5, 0xBAAE, 0x5BD2, 0xBAAF, 0x51FD,
+	0xBAB0, 0x558A, 0xBAB1, 0x7F55, 0xBAB2, 0x7FF0, 0xBAB3, 0x64BC,
+	0xBAB4, 0x634D, 0xBAB5, 0x65F1, 0xBAB6, 0x61BE, 0xBAB7, 0x608D,
+	0xBAB8, 0x710A, 0xBAB9, 0x6C57, 0xBABA, 0x6C49, 0xBABB, 0x592F,
+	0xBABC, 0x676D, 0xBABD, 0x822A, 0xBABE, 0x58D5, 0xBABF, 0x568E,
+	0xBAC0, 0x8C6A, 0xBAC1, 0x6BEB, 0xBAC2, 0x90DD, 0xBAC3, 0x597D,
+	0xBAC4, 0x8017, 0xBAC5, 0x53F7, 0xBAC6, 0x6D69, 0xBAC7, 0x5475,
+	0xBAC8, 0x559D, 0xBAC9, 0x8377, 0xBACA, 0x83CF, 0xBACB, 0x6838,
+	0xBACC, 0x79BE, 0xBACD, 0x548C, 0xBACE, 0x4F55, 0xBACF, 0x5408,
+	0xBAD0, 0x76D2, 0xBAD1, 0x8C89, 0xBAD2, 0x9602, 0xBAD3, 0x6CB3,
+	0xBAD4, 0x6DB8, 0xBAD5, 0x8D6B, 0xBAD6, 0x8910, 0xBAD7, 0x9E64,
+	0xBAD8, 0x8D3A, 0xBAD9, 0x563F, 0xBADA, 0x9ED1, 0xBADB, 0x75D5,
+	0xBADC, 0x5F88, 0xBADD, 0x72E0, 0xBADE, 0x6068, 0xBADF, 0x54FC,
+	0xBAE0, 0x4EA8, 0xBAE1, 0x6A2A, 0xBAE2, 0x8861, 0xBAE3, 0x6052,
+	0xBAE4, 0x8F70, 0xBAE5, 0x54C4, 0xBAE6, 0x70D8, 0xBAE7, 0x8679,
+	0xBAE8, 0x9E3F, 0xBAE9, 0x6D2A, 0xBAEA, 0x5B8F, 0xBAEB, 0x5F18,
+	0xBAEC, 0x7EA2, 0xBAED, 0x5589, 0xBAEE, 0x4FAF, 0xBAEF, 0x7334,
+	0xBAF0, 0x543C, 0xBAF1, 0x539A, 0xBAF2, 0x5019, 0xBAF3, 0x540E,
+	0xBAF4, 0x547C, 0xBAF5, 0x4E4E, 0xBAF6, 0x5FFD, 0xBAF7, 0x745A,
+	0xBAF8, 0x58F6, 0xBAF9, 0x846B, 0xBAFA, 0x80E1, 0xBAFB, 0x8774,
+	0xBAFC, 0x72D0, 0xBAFD, 0x7CCA, 0xBAFE, 0x6E56, 0xBB40, 0x7C43,
+	0xBB41, 0x7C44, 0xBB42, 0x7C45, 0xBB43, 0x7C46, 0xBB44, 0x7C47,
+	0xBB45, 0x7C48, 0xBB46, 0x7C49, 0xBB47, 0x7C4A, 0xBB48, 0x7C4B,
+	0xBB49, 0x7C4C, 0xBB4A, 0x7C4E, 0xBB4B, 0x7C4F, 0xBB4C, 0x7C50,
+	0xBB4D, 0x7C51, 0xBB4E, 0x7C52, 0xBB4F, 0x7C53, 0xBB50, 0x7C54,
+	0xBB51, 0x7C55, 0xBB52, 0x7C56, 0xBB53, 0x7C57, 0xBB54, 0x7C58,
+	0xBB55, 0x7C59, 0xBB56, 0x7C5A, 0xBB57, 0x7C5B, 0xBB58, 0x7C5C,
+	0xBB59, 0x7C5D, 0xBB5A, 0x7C5E, 0xBB5B, 0x7C5F, 0xBB5C, 0x7C60,
+	0xBB5D, 0x7C61, 0xBB5E, 0x7C62, 0xBB5F, 0x7C63, 0xBB60, 0x7C64,
+	0xBB61, 0x7C65, 0xBB62, 0x7C66, 0xBB63, 0x7C67, 0xBB64, 0x7C68,
+	0xBB65, 0x7C69, 0xBB66, 0x7C6A, 0xBB67, 0x7C6B, 0xBB68, 0x7C6C,
+	0xBB69, 0x7C6D, 0xBB6A, 0x7C6E, 0xBB6B, 0x7C6F, 0xBB6C, 0x7C70,
+	0xBB6D, 0x7C71, 0xBB6E, 0x7C72, 0xBB6F, 0x7C75, 0xBB70, 0x7C76,
+	0xBB71, 0x7C77, 0xBB72, 0x7C78, 0xBB73, 0x7C79, 0xBB74, 0x7C7A,
+	0xBB75, 0x7C7E, 0xBB76, 0x7C7F, 0xBB77, 0x7C80, 0xBB78, 0x7C81,
+	0xBB79, 0x7C82, 0xBB7A, 0x7C83, 0xBB7B, 0x7C84, 0xBB7C, 0x7C85,
+	0xBB7D, 0x7C86, 0xBB7E, 0x7C87, 0xBB80, 0x7C88, 0xBB81, 0x7C8A,
+	0xBB82, 0x7C8B, 0xBB83, 0x7C8C, 0xBB84, 0x7C8D, 0xBB85, 0x7C8E,
+	0xBB86, 0x7C8F, 0xBB87, 0x7C90, 0xBB88, 0x7C93, 0xBB89, 0x7C94,
+	0xBB8A, 0x7C96, 0xBB8B, 0x7C99, 0xBB8C, 0x7C9A, 0xBB8D, 0x7C9B,
+	0xBB8E, 0x7CA0, 0xBB8F, 0x7CA1, 0xBB90, 0x7CA3, 0xBB91, 0x7CA6,
+	0xBB92, 0x7CA7, 0xBB93, 0x7CA8, 0xBB94, 0x7CA9, 0xBB95, 0x7CAB,
+	0xBB96, 0x7CAC, 0xBB97, 0x7CAD, 0xBB98, 0x7CAF, 0xBB99, 0x7CB0,
+	0xBB9A, 0x7CB4, 0xBB9B, 0x7CB5, 0xBB9C, 0x7CB6, 0xBB9D, 0x7CB7,
+	0xBB9E, 0x7CB8, 0xBB9F, 0x7CBA, 0xBBA0, 0x7CBB, 0xBBA1, 0x5F27,
+	0xBBA2, 0x864E, 0xBBA3, 0x552C, 0xBBA4, 0x62A4, 0xBBA5, 0x4E92,
+	0xBBA6, 0x6CAA, 0xBBA7, 0x6237, 0xBBA8, 0x82B1, 0xBBA9, 0x54D7,
+	0xBBAA, 0x534E, 0xBBAB, 0x733E, 0xBBAC, 0x6ED1, 0xBBAD, 0x753B,
+	0xBBAE, 0x5212, 0xBBAF, 0x5316, 0xBBB0, 0x8BDD, 0xBBB1, 0x69D0,
+	0xBBB2, 0x5F8A, 0xBBB3, 0x6000, 0xBBB4, 0x6DEE, 0xBBB5, 0x574F,
+	0xBBB6, 0x6B22, 0xBBB7, 0x73AF, 0xBBB8, 0x6853, 0xBBB9, 0x8FD8,
+	0xBBBA, 0x7F13, 0xBBBB, 0x6362, 0xBBBC, 0x60A3, 0xBBBD, 0x5524,
+	0xBBBE, 0x75EA, 0xBBBF, 0x8C62, 0xBBC0, 0x7115, 0xBBC1, 0x6DA3,
+	0xBBC2, 0x5BA6, 0xBBC3, 0x5E7B, 0xBBC4, 0x8352, 0xBBC5, 0x614C,
+	0xBBC6, 0x9EC4, 0xBBC7, 0x78FA, 0xBBC8, 0x8757, 0xBBC9, 0x7C27,
+	0xBBCA, 0x7687, 0xBBCB, 0x51F0, 0xBBCC, 0x60F6, 0xBBCD, 0x714C,
+	0xBBCE, 0x6643, 0xBBCF, 0x5E4C, 0xBBD0, 0x604D, 0xBBD1, 0x8C0E,
+	0xBBD2, 0x7070, 0xBBD3, 0x6325, 0xBBD4, 0x8F89, 0xBBD5, 0x5FBD,
+	0xBBD6, 0x6062, 0xBBD7, 0x86D4, 0xBBD8, 0x56DE, 0xBBD9, 0x6BC1,
+	0xBBDA, 0x6094, 0xBBDB, 0x6167, 0xBBDC, 0x5349, 0xBBDD, 0x60E0,
+	0xBBDE, 0x6666, 0xBBDF, 0x8D3F, 0xBBE0, 0x79FD, 0xBBE1, 0x4F1A,
+	0xBBE2, 0x70E9, 0xBBE3, 0x6C47, 0xBBE4, 0x8BB3, 0xBBE5, 0x8BF2,
+	0xBBE6, 0x7ED8, 0xBBE7, 0x8364, 0xBBE8, 0x660F, 0xBBE9, 0x5A5A,
+	0xBBEA, 0x9B42, 0xBBEB, 0x6D51, 0xBBEC, 0x6DF7, 0xBBED, 0x8C41,
+	0xBBEE, 0x6D3B, 0xBBEF, 0x4F19, 0xBBF0, 0x706B, 0xBBF1, 0x83B7,
+	0xBBF2, 0x6216, 0xBBF3, 0x60D1, 0xBBF4, 0x970D, 0xBBF5, 0x8D27,
+	0xBBF6, 0x7978, 0xBBF7, 0x51FB, 0xBBF8, 0x573E, 0xBBF9, 0x57FA,
+	0xBBFA, 0x673A, 0xBBFB, 0x7578, 0xBBFC, 0x7A3D, 0xBBFD, 0x79EF,
+	0xBBFE, 0x7B95, 0xBC40, 0x7CBF, 0xBC41, 0x7CC0, 0xBC42, 0x7CC2,
+	0xBC43, 0x7CC3, 0xBC44, 0x7CC4, 0xBC45, 0x7CC6, 0xBC46, 0x7CC9,
+	0xBC47, 0x7CCB, 0xBC48, 0x7CCE, 0xBC49, 0x7CCF, 0xBC4A, 0x7CD0,
+	0xBC4B, 0x7CD1, 0xBC4C, 0x7CD2, 0xBC4D, 0x7CD3, 0xBC4E, 0x7CD4,
+	0xBC4F, 0x7CD8, 0xBC50, 0x7CDA, 0xBC51, 0x7CDB, 0xBC52, 0x7CDD,
+	0xBC53, 0x7CDE, 0xBC54, 0x7CE1, 0xBC55, 0x7CE2, 0xBC56, 0x7CE3,
+	0xBC57, 0x7CE4, 0xBC58, 0x7CE5, 0xBC59, 0x7CE6, 0xBC5A, 0x7CE7,
+	0xBC5B, 0x7CE9, 0xBC5C, 0x7CEA, 0xBC5D, 0x7CEB, 0xBC5E, 0x7CEC,
+	0xBC5F, 0x7CED, 0xBC60, 0x7CEE, 0xBC61, 0x7CF0, 0xBC62, 0x7CF1,
+	0xBC63, 0x7CF2, 0xBC64, 0x7CF3, 0xBC65, 0x7CF4, 0xBC66, 0x7CF5,
+	0xBC67, 0x7CF6, 0xBC68, 0x7CF7, 0xBC69, 0x7CF9, 0xBC6A, 0x7CFA,
+	0xBC6B, 0x7CFC, 0xBC6C, 0x7CFD, 0xBC6D, 0x7CFE, 0xBC6E, 0x7CFF,
+	0xBC6F, 0x7D00, 0xBC70, 0x7D01, 0xBC71, 0x7D02, 0xBC72, 0x7D03,
+	0xBC73, 0x7D04, 0xBC74, 0x7D05, 0xBC75, 0x7D06, 0xBC76, 0x7D07,
+	0xBC77, 0x7D08, 0xBC78, 0x7D09, 0xBC79, 0x7D0B, 0xBC7A, 0x7D0C,
+	0xBC7B, 0x7D0D, 0xBC7C, 0x7D0E, 0xBC7D, 0x7D0F, 0xBC7E, 0x7D10,
+	0xBC80, 0x7D11, 0xBC81, 0x7D12, 0xBC82, 0x7D13, 0xBC83, 0x7D14,
+	0xBC84, 0x7D15, 0xBC85, 0x7D16, 0xBC86, 0x7D17, 0xBC87, 0x7D18,
+	0xBC88, 0x7D19, 0xBC89, 0x7D1A, 0xBC8A, 0x7D1B, 0xBC8B, 0x7D1C,
+	0xBC8C, 0x7D1D, 0xBC8D, 0x7D1E, 0xBC8E, 0x7D1F, 0xBC8F, 0x7D21,
+	0xBC90, 0x7D23, 0xBC91, 0x7D24, 0xBC92, 0x7D25, 0xBC93, 0x7D26,
+	0xBC94, 0x7D28, 0xBC95, 0x7D29, 0xBC96, 0x7D2A, 0xBC97, 0x7D2C,
+	0xBC98, 0x7D2D, 0xBC99, 0x7D2E, 0xBC9A, 0x7D30, 0xBC9B, 0x7D31,
+	0xBC9C, 0x7D32, 0xBC9D, 0x7D33, 0xBC9E, 0x7D34, 0xBC9F, 0x7D35,
+	0xBCA0, 0x7D36, 0xBCA1, 0x808C, 0xBCA2, 0x9965, 0xBCA3, 0x8FF9,
+	0xBCA4, 0x6FC0, 0xBCA5, 0x8BA5, 0xBCA6, 0x9E21, 0xBCA7, 0x59EC,
+	0xBCA8, 0x7EE9, 0xBCA9, 0x7F09, 0xBCAA, 0x5409, 0xBCAB, 0x6781,
+	0xBCAC, 0x68D8, 0xBCAD, 0x8F91, 0xBCAE, 0x7C4D, 0xBCAF, 0x96C6,
+	0xBCB0, 0x53CA, 0xBCB1, 0x6025, 0xBCB2, 0x75BE, 0xBCB3, 0x6C72,
+	0xBCB4, 0x5373, 0xBCB5, 0x5AC9, 0xBCB6, 0x7EA7, 0xBCB7, 0x6324,
+	0xBCB8, 0x51E0, 0xBCB9, 0x810A, 0xBCBA, 0x5DF1, 0xBCBB, 0x84DF,
+	0xBCBC, 0x6280, 0xBCBD, 0x5180, 0xBCBE, 0x5B63, 0xBCBF, 0x4F0E,
+	0xBCC0, 0x796D, 0xBCC1, 0x5242, 0xBCC2, 0x60B8, 0xBCC3, 0x6D4E,
+	0xBCC4, 0x5BC4, 0xBCC5, 0x5BC2, 0xBCC6, 0x8BA1, 0xBCC7, 0x8BB0,
+	0xBCC8, 0x65E2, 0xBCC9, 0x5FCC, 0xBCCA, 0x9645, 0xBCCB, 0x5993,
+	0xBCCC, 0x7EE7, 0xBCCD, 0x7EAA, 0xBCCE, 0x5609, 0xBCCF, 0x67B7,
+	0xBCD0, 0x5939, 0xBCD1, 0x4F73, 0xBCD2, 0x5BB6, 0xBCD3, 0x52A0,
+	0xBCD4, 0x835A, 0xBCD5, 0x988A, 0xBCD6, 0x8D3E, 0xBCD7, 0x7532,
+	0xBCD8, 0x94BE, 0xBCD9, 0x5047, 0xBCDA, 0x7A3C, 0xBCDB, 0x4EF7,
+	0xBCDC, 0x67B6, 0xBCDD, 0x9A7E, 0xBCDE, 0x5AC1, 0xBCDF, 0x6B7C,
+	0xBCE0, 0x76D1, 0xBCE1, 0x575A, 0xBCE2, 0x5C16, 0xBCE3, 0x7B3A,
+	0xBCE4, 0x95F4, 0xBCE5, 0x714E, 0xBCE6, 0x517C, 0xBCE7, 0x80A9,
+	0xBCE8, 0x8270, 0xBCE9, 0x5978, 0xBCEA, 0x7F04, 0xBCEB, 0x8327,
+	0xBCEC, 0x68C0, 0xBCED, 0x67EC, 0xBCEE, 0x78B1, 0xBCEF, 0x7877,
+	0xBCF0, 0x62E3, 0xBCF1, 0x6361, 0xBCF2, 0x7B80, 0xBCF3, 0x4FED,
+	0xBCF4, 0x526A, 0xBCF5, 0x51CF, 0xBCF6, 0x8350, 0xBCF7, 0x69DB,
+	0xBCF8, 0x9274, 0xBCF9, 0x8DF5, 0xBCFA, 0x8D31, 0xBCFB, 0x89C1,
+	0xBCFC, 0x952E, 0xBCFD, 0x7BAD, 0xBCFE, 0x4EF6, 0xBD40, 0x7D37,
+	0xBD41, 0x7D38, 0xBD42, 0x7D39, 0xBD43, 0x7D3A, 0xBD44, 0x7D3B,
+	0xBD45, 0x7D3C, 0xBD46, 0x7D3D, 0xBD47, 0x7D3E, 0xBD48, 0x7D3F,
+	0xBD49, 0x7D40, 0xBD4A, 0x7D41, 0xBD4B, 0x7D42, 0xBD4C, 0x7D43,
+	0xBD4D, 0x7D44, 0xBD4E, 0x7D45, 0xBD4F, 0x7D46, 0xBD50, 0x7D47,
+	0xBD51, 0x7D48, 0xBD52, 0x7D49, 0xBD53, 0x7D4A, 0xBD54, 0x7D4B,
+	0xBD55, 0x7D4C, 0xBD56, 0x7D4D, 0xBD57, 0x7D4E, 0xBD58, 0x7D4F,
+	0xBD59, 0x7D50, 0xBD5A, 0x7D51, 0xBD5B, 0x7D52, 0xBD5C, 0x7D53,
+	0xBD5D, 0x7D54, 0xBD5E, 0x7D55, 0xBD5F, 0x7D56, 0xBD60, 0x7D57,
+	0xBD61, 0x7D58, 0xBD62, 0x7D59, 0xBD63, 0x7D5A, 0xBD64, 0x7D5B,
+	0xBD65, 0x7D5C, 0xBD66, 0x7D5D, 0xBD67, 0x7D5E, 0xBD68, 0x7D5F,
+	0xBD69, 0x7D60, 0xBD6A, 0x7D61, 0xBD6B, 0x7D62, 0xBD6C, 0x7D63,
+	0xBD6D, 0x7D64, 0xBD6E, 0x7D65, 0xBD6F, 0x7D66, 0xBD70, 0x7D67,
+	0xBD71, 0x7D68, 0xBD72, 0x7D69, 0xBD73, 0x7D6A, 0xBD74, 0x7D6B,
+	0xBD75, 0x7D6C, 0xBD76, 0x7D6D, 0xBD77, 0x7D6F, 0xBD78, 0x7D70,
+	0xBD79, 0x7D71, 0xBD7A, 0x7D72, 0xBD7B, 0x7D73, 0xBD7C, 0x7D74,
+	0xBD7D, 0x7D75, 0xBD7E, 0x7D76, 0xBD80, 0x7D78, 0xBD81, 0x7D79,
+	0xBD82, 0x7D7A, 0xBD83, 0x7D7B, 0xBD84, 0x7D7C, 0xBD85, 0x7D7D,
+	0xBD86, 0x7D7E, 0xBD87, 0x7D7F, 0xBD88, 0x7D80, 0xBD89, 0x7D81,
+	0xBD8A, 0x7D82, 0xBD8B, 0x7D83, 0xBD8C, 0x7D84, 0xBD8D, 0x7D85,
+	0xBD8E, 0x7D86, 0xBD8F, 0x7D87, 0xBD90, 0x7D88, 0xBD91, 0x7D89,
+	0xBD92, 0x7D8A, 0xBD93, 0x7D8B, 0xBD94, 0x7D8C, 0xBD95, 0x7D8D,
+	0xBD96, 0x7D8E, 0xBD97, 0x7D8F, 0xBD98, 0x7D90, 0xBD99, 0x7D91,
+	0xBD9A, 0x7D92, 0xBD9B, 0x7D93, 0xBD9C, 0x7D94, 0xBD9D, 0x7D95,
+	0xBD9E, 0x7D96, 0xBD9F, 0x7D97, 0xBDA0, 0x7D98, 0xBDA1, 0x5065,
+	0xBDA2, 0x8230, 0xBDA3, 0x5251, 0xBDA4, 0x996F, 0xBDA5, 0x6E10,
+	0xBDA6, 0x6E85, 0xBDA7, 0x6DA7, 0xBDA8, 0x5EFA, 0xBDA9, 0x50F5,
+	0xBDAA, 0x59DC, 0xBDAB, 0x5C06, 0xBDAC, 0x6D46, 0xBDAD, 0x6C5F,
+	0xBDAE, 0x7586, 0xBDAF, 0x848B, 0xBDB0, 0x6868, 0xBDB1, 0x5956,
+	0xBDB2, 0x8BB2, 0xBDB3, 0x5320, 0xBDB4, 0x9171, 0xBDB5, 0x964D,
+	0xBDB6, 0x8549, 0xBDB7, 0x6912, 0xBDB8, 0x7901, 0xBDB9, 0x7126,
+	0xBDBA, 0x80F6, 0xBDBB, 0x4EA4, 0xBDBC, 0x90CA, 0xBDBD, 0x6D47,
+	0xBDBE, 0x9A84, 0xBDBF, 0x5A07, 0xBDC0, 0x56BC, 0xBDC1, 0x6405,
+	0xBDC2, 0x94F0, 0xBDC3, 0x77EB, 0xBDC4, 0x4FA5, 0xBDC5, 0x811A,
+	0xBDC6, 0x72E1, 0xBDC7, 0x89D2, 0xBDC8, 0x997A, 0xBDC9, 0x7F34,
+	0xBDCA, 0x7EDE, 0xBDCB, 0x527F, 0xBDCC, 0x6559, 0xBDCD, 0x9175,
+	0xBDCE, 0x8F7F, 0xBDCF, 0x8F83, 0xBDD0, 0x53EB, 0xBDD1, 0x7A96,
+	0xBDD2, 0x63ED, 0xBDD3, 0x63A5, 0xBDD4, 0x7686, 0xBDD5, 0x79F8,
+	0xBDD6, 0x8857, 0xBDD7, 0x9636, 0xBDD8, 0x622A, 0xBDD9, 0x52AB,
+	0xBDDA, 0x8282, 0xBDDB, 0x6854, 0xBDDC, 0x6770, 0xBDDD, 0x6377,
+	0xBDDE, 0x776B, 0xBDDF, 0x7AED, 0xBDE0, 0x6D01, 0xBDE1, 0x7ED3,
+	0xBDE2, 0x89E3, 0xBDE3, 0x59D0, 0xBDE4, 0x6212, 0xBDE5, 0x85C9,
+	0xBDE6, 0x82A5, 0xBDE7, 0x754C, 0xBDE8, 0x501F, 0xBDE9, 0x4ECB,
+	0xBDEA, 0x75A5, 0xBDEB, 0x8BEB, 0xBDEC, 0x5C4A, 0xBDED, 0x5DFE,
+	0xBDEE, 0x7B4B, 0xBDEF, 0x65A4, 0xBDF0, 0x91D1, 0xBDF1, 0x4ECA,
+	0xBDF2, 0x6D25, 0xBDF3, 0x895F, 0xBDF4, 0x7D27, 0xBDF5, 0x9526,
+	0xBDF6, 0x4EC5, 0xBDF7, 0x8C28, 0xBDF8, 0x8FDB, 0xBDF9, 0x9773,
+	0xBDFA, 0x664B, 0xBDFB, 0x7981, 0xBDFC, 0x8FD1, 0xBDFD, 0x70EC,
+	0xBDFE, 0x6D78, 0xBE40, 0x7D99, 0xBE41, 0x7D9A, 0xBE42, 0x7D9B,
+	0xBE43, 0x7D9C, 0xBE44, 0x7D9D, 0xBE45, 0x7D9E, 0xBE46, 0x7D9F,
+	0xBE47, 0x7DA0, 0xBE48, 0x7DA1, 0xBE49, 0x7DA2, 0xBE4A, 0x7DA3,
+	0xBE4B, 0x7DA4, 0xBE4C, 0x7DA5, 0xBE4D, 0x7DA7, 0xBE4E, 0x7DA8,
+	0xBE4F, 0x7DA9, 0xBE50, 0x7DAA, 0xBE51, 0x7DAB, 0xBE52, 0x7DAC,
+	0xBE53, 0x7DAD, 0xBE54, 0x7DAF, 0xBE55, 0x7DB0, 0xBE56, 0x7DB1,
+	0xBE57, 0x7DB2, 0xBE58, 0x7DB3, 0xBE59, 0x7DB4, 0xBE5A, 0x7DB5,
+	0xBE5B, 0x7DB6, 0xBE5C, 0x7DB7, 0xBE5D, 0x7DB8, 0xBE5E, 0x7DB9,
+	0xBE5F, 0x7DBA, 0xBE60, 0x7DBB, 0xBE61, 0x7DBC, 0xBE62, 0x7DBD,
+	0xBE63, 0x7DBE, 0xBE64, 0x7DBF, 0xBE65, 0x7DC0, 0xBE66, 0x7DC1,
+	0xBE67, 0x7DC2, 0xBE68, 0x7DC3, 0xBE69, 0x7DC4, 0xBE6A, 0x7DC5,
+	0xBE6B, 0x7DC6, 0xBE6C, 0x7DC7, 0xBE6D, 0x7DC8, 0xBE6E, 0x7DC9,
+	0xBE6F, 0x7DCA, 0xBE70, 0x7DCB, 0xBE71, 0x7DCC, 0xBE72, 0x7DCD,
+	0xBE73, 0x7DCE, 0xBE74, 0x7DCF, 0xBE75, 0x7DD0, 0xBE76, 0x7DD1,
+	0xBE77, 0x7DD2, 0xBE78, 0x7DD3, 0xBE79, 0x7DD4, 0xBE7A, 0x7DD5,
+	0xBE7B, 0x7DD6, 0xBE7C, 0x7DD7, 0xBE7D, 0x7DD8, 0xBE7E, 0x7DD9,
+	0xBE80, 0x7DDA, 0xBE81, 0x7DDB, 0xBE82, 0x7DDC, 0xBE83, 0x7DDD,
+	0xBE84, 0x7DDE, 0xBE85, 0x7DDF, 0xBE86, 0x7DE0, 0xBE87, 0x7DE1,
+	0xBE88, 0x7DE2, 0xBE89, 0x7DE3, 0xBE8A, 0x7DE4, 0xBE8B, 0x7DE5,
+	0xBE8C, 0x7DE6, 0xBE8D, 0x7DE7, 0xBE8E, 0x7DE8, 0xBE8F, 0x7DE9,
+	0xBE90, 0x7DEA, 0xBE91, 0x7DEB, 0xBE92, 0x7DEC, 0xBE93, 0x7DED,
+	0xBE94, 0x7DEE, 0xBE95, 0x7DEF, 0xBE96, 0x7DF0, 0xBE97, 0x7DF1,
+	0xBE98, 0x7DF2, 0xBE99, 0x7DF3, 0xBE9A, 0x7DF4, 0xBE9B, 0x7DF5,
+	0xBE9C, 0x7DF6, 0xBE9D, 0x7DF7, 0xBE9E, 0x7DF8, 0xBE9F, 0x7DF9,
+	0xBEA0, 0x7DFA, 0xBEA1, 0x5C3D, 0xBEA2, 0x52B2, 0xBEA3, 0x8346,
+	0xBEA4, 0x5162, 0xBEA5, 0x830E, 0xBEA6, 0x775B, 0xBEA7, 0x6676,
+	0xBEA8, 0x9CB8, 0xBEA9, 0x4EAC, 0xBEAA, 0x60CA, 0xBEAB, 0x7CBE,
+	0xBEAC, 0x7CB3, 0xBEAD, 0x7ECF, 0xBEAE, 0x4E95, 0xBEAF, 0x8B66,
+	0xBEB0, 0x666F, 0xBEB1, 0x9888, 0xBEB2, 0x9759, 0xBEB3, 0x5883,
+	0xBEB4, 0x656C, 0xBEB5, 0x955C, 0xBEB6, 0x5F84, 0xBEB7, 0x75C9,
+	0xBEB8, 0x9756, 0xBEB9, 0x7ADF, 0xBEBA, 0x7ADE, 0xBEBB, 0x51C0,
+	0xBEBC, 0x70AF, 0xBEBD, 0x7A98, 0xBEBE, 0x63EA, 0xBEBF, 0x7A76,
+	0xBEC0, 0x7EA0, 0xBEC1, 0x7396, 0xBEC2, 0x97ED, 0xBEC3, 0x4E45,
+	0xBEC4, 0x7078, 0xBEC5, 0x4E5D, 0xBEC6, 0x9152, 0xBEC7, 0x53A9,
+	0xBEC8, 0x6551, 0xBEC9, 0x65E7, 0xBECA, 0x81FC, 0xBECB, 0x8205,
+	0xBECC, 0x548E, 0xBECD, 0x5C31, 0xBECE, 0x759A, 0xBECF, 0x97A0,
+	0xBED0, 0x62D8, 0xBED1, 0x72D9, 0xBED2, 0x75BD, 0xBED3, 0x5C45,
+	0xBED4, 0x9A79, 0xBED5, 0x83CA, 0xBED6, 0x5C40, 0xBED7, 0x5480,
+	0xBED8, 0x77E9, 0xBED9, 0x4E3E, 0xBEDA, 0x6CAE, 0xBEDB, 0x805A,
+	0xBEDC, 0x62D2, 0xBEDD, 0x636E, 0xBEDE, 0x5DE8, 0xBEDF, 0x5177,
+	0xBEE0, 0x8DDD, 0xBEE1, 0x8E1E, 0xBEE2, 0x952F, 0xBEE3, 0x4FF1,
+	0xBEE4, 0x53E5, 0xBEE5, 0x60E7, 0xBEE6, 0x70AC, 0xBEE7, 0x5267,
+	0xBEE8, 0x6350, 0xBEE9, 0x9E43, 0xBEEA, 0x5A1F, 0xBEEB, 0x5026,
+	0xBEEC, 0x7737, 0xBEED, 0x5377, 0xBEEE, 0x7EE2, 0xBEEF, 0x6485,
+	0xBEF0, 0x652B, 0xBEF1, 0x6289, 0xBEF2, 0x6398, 0xBEF3, 0x5014,
+	0xBEF4, 0x7235, 0xBEF5, 0x89C9, 0xBEF6, 0x51B3, 0xBEF7, 0x8BC0,
+	0xBEF8, 0x7EDD, 0xBEF9, 0x5747, 0xBEFA, 0x83CC, 0xBEFB, 0x94A7,
+	0xBEFC, 0x519B, 0xBEFD, 0x541B, 0xBEFE, 0x5CFB, 0xBF40, 0x7DFB,
+	0xBF41, 0x7DFC, 0xBF42, 0x7DFD, 0xBF43, 0x7DFE, 0xBF44, 0x7DFF,
+	0xBF45, 0x7E00, 0xBF46, 0x7E01, 0xBF47, 0x7E02, 0xBF48, 0x7E03,
+	0xBF49, 0x7E04, 0xBF4A, 0x7E05, 0xBF4B, 0x7E06, 0xBF4C, 0x7E07,
+	0xBF4D, 0x7E08, 0xBF4E, 0x7E09, 0xBF4F, 0x7E0A, 0xBF50, 0x7E0B,
+	0xBF51, 0x7E0C, 0xBF52, 0x7E0D, 0xBF53, 0x7E0E, 0xBF54, 0x7E0F,
+	0xBF55, 0x7E10, 0xBF56, 0x7E11, 0xBF57, 0x7E12, 0xBF58, 0x7E13,
+	0xBF59, 0x7E14, 0xBF5A, 0x7E15, 0xBF5B, 0x7E16, 0xBF5C, 0x7E17,
+	0xBF5D, 0x7E18, 0xBF5E, 0x7E19, 0xBF5F, 0x7E1A, 0xBF60, 0x7E1B,
+	0xBF61, 0x7E1C, 0xBF62, 0x7E1D, 0xBF63, 0x7E1E, 0xBF64, 0x7E1F,
+	0xBF65, 0x7E20, 0xBF66, 0x7E21, 0xBF67, 0x7E22, 0xBF68, 0x7E23,
+	0xBF69, 0x7E24, 0xBF6A, 0x7E25, 0xBF6B, 0x7E26, 0xBF6C, 0x7E27,
+	0xBF6D, 0x7E28, 0xBF6E, 0x7E29, 0xBF6F, 0x7E2A, 0xBF70, 0x7E2B,
+	0xBF71, 0x7E2C, 0xBF72, 0x7E2D, 0xBF73, 0x7E2E, 0xBF74, 0x7E2F,
+	0xBF75, 0x7E30, 0xBF76, 0x7E31, 0xBF77, 0x7E32, 0xBF78, 0x7E33,
+	0xBF79, 0x7E34, 0xBF7A, 0x7E35, 0xBF7B, 0x7E36, 0xBF7C, 0x7E37,
+	0xBF7D, 0x7E38, 0xBF7E, 0x7E39, 0xBF80, 0x7E3A, 0xBF81, 0x7E3C,
+	0xBF82, 0x7E3D, 0xBF83, 0x7E3E, 0xBF84, 0x7E3F, 0xBF85, 0x7E40,
+	0xBF86, 0x7E42, 0xBF87, 0x7E43, 0xBF88, 0x7E44, 0xBF89, 0x7E45,
+	0xBF8A, 0x7E46, 0xBF8B, 0x7E48, 0xBF8C, 0x7E49, 0xBF8D, 0x7E4A,
+	0xBF8E, 0x7E4B, 0xBF8F, 0x7E4C, 0xBF90, 0x7E4D, 0xBF91, 0x7E4E,
+	0xBF92, 0x7E4F, 0xBF93, 0x7E50, 0xBF94, 0x7E51, 0xBF95, 0x7E52,
+	0xBF96, 0x7E53, 0xBF97, 0x7E54, 0xBF98, 0x7E55, 0xBF99, 0x7E56,
+	0xBF9A, 0x7E57, 0xBF9B, 0x7E58, 0xBF9C, 0x7E59, 0xBF9D, 0x7E5A,
+	0xBF9E, 0x7E5B, 0xBF9F, 0x7E5C, 0xBFA0, 0x7E5D, 0xBFA1, 0x4FCA,
+	0xBFA2, 0x7AE3, 0xBFA3, 0x6D5A, 0xBFA4, 0x90E1, 0xBFA5, 0x9A8F,
+	0xBFA6, 0x5580, 0xBFA7, 0x5496, 0xBFA8, 0x5361, 0xBFA9, 0x54AF,
+	0xBFAA, 0x5F00, 0xBFAB, 0x63E9, 0xBFAC, 0x6977, 0xBFAD, 0x51EF,
+	0xBFAE, 0x6168, 0xBFAF, 0x520A, 0xBFB0, 0x582A, 0xBFB1, 0x52D8,
+	0xBFB2, 0x574E, 0xBFB3, 0x780D, 0xBFB4, 0x770B, 0xBFB5, 0x5EB7,
+	0xBFB6, 0x6177, 0xBFB7, 0x7CE0, 0xBFB8, 0x625B, 0xBFB9, 0x6297,
+	0xBFBA, 0x4EA2, 0xBFBB, 0x7095, 0xBFBC, 0x8003, 0xBFBD, 0x62F7,
+	0xBFBE, 0x70E4, 0xBFBF, 0x9760, 0xBFC0, 0x5777, 0xBFC1, 0x82DB,
+	0xBFC2, 0x67EF, 0xBFC3, 0x68F5, 0xBFC4, 0x78D5, 0xBFC5, 0x9897,
+	0xBFC6, 0x79D1, 0xBFC7, 0x58F3, 0xBFC8, 0x54B3, 0xBFC9, 0x53EF,
+	0xBFCA, 0x6E34, 0xBFCB, 0x514B, 0xBFCC, 0x523B, 0xBFCD, 0x5BA2,
+	0xBFCE, 0x8BFE, 0xBFCF, 0x80AF, 0xBFD0, 0x5543, 0xBFD1, 0x57A6,
+	0xBFD2, 0x6073, 0xBFD3, 0x5751, 0xBFD4, 0x542D, 0xBFD5, 0x7A7A,
+	0xBFD6, 0x6050, 0xBFD7, 0x5B54, 0xBFD8, 0x63A7, 0xBFD9, 0x62A0,
+	0xBFDA, 0x53E3, 0xBFDB, 0x6263, 0xBFDC, 0x5BC7, 0xBFDD, 0x67AF,
+	0xBFDE, 0x54ED, 0xBFDF, 0x7A9F, 0xBFE0, 0x82E6, 0xBFE1, 0x9177,
+	0xBFE2, 0x5E93, 0xBFE3, 0x88E4, 0xBFE4, 0x5938, 0xBFE5, 0x57AE,
+	0xBFE6, 0x630E, 0xBFE7, 0x8DE8, 0xBFE8, 0x80EF, 0xBFE9, 0x5757,
+	0xBFEA, 0x7B77, 0xBFEB, 0x4FA9, 0xBFEC, 0x5FEB, 0xBFED, 0x5BBD,
+	0xBFEE, 0x6B3E, 0xBFEF, 0x5321, 0xBFF0, 0x7B50, 0xBFF1, 0x72C2,
+	0xBFF2, 0x6846, 0xBFF3, 0x77FF, 0xBFF4, 0x7736, 0xBFF5, 0x65F7,
+	0xBFF6, 0x51B5, 0xBFF7, 0x4E8F, 0xBFF8, 0x76D4, 0xBFF9, 0x5CBF,
+	0xBFFA, 0x7AA5, 0xBFFB, 0x8475, 0xBFFC, 0x594E, 0xBFFD, 0x9B41,
+	0xBFFE, 0x5080, 0xC040, 0x7E5E, 0xC041, 0x7E5F, 0xC042, 0x7E60,
+	0xC043, 0x7E61, 0xC044, 0x7E62, 0xC045, 0x7E63, 0xC046, 0x7E64,
+	0xC047, 0x7E65, 0xC048, 0x7E66, 0xC049, 0x7E67, 0xC04A, 0x7E68,
+	0xC04B, 0x7E69, 0xC04C, 0x7E6A, 0xC04D, 0x7E6B, 0xC04E, 0x7E6C,
+	0xC04F, 0x7E6D, 0xC050, 0x7E6E, 0xC051, 0x7E6F, 0xC052, 0x7E70,
+	0xC053, 0x7E71, 0xC054, 0x7E72, 0xC055, 0x7E73, 0xC056, 0x7E74,
+	0xC057, 0x7E75, 0xC058, 0x7E76, 0xC059, 0x7E77, 0xC05A, 0x7E78,
+	0xC05B, 0x7E79, 0xC05C, 0x7E7A, 0xC05D, 0x7E7B, 0xC05E, 0x7E7C,
+	0xC05F, 0x7E7D, 0xC060, 0x7E7E, 0xC061, 0x7E7F, 0xC062, 0x7E80,
+	0xC063, 0x7E81, 0xC064, 0x7E83, 0xC065, 0x7E84, 0xC066, 0x7E85,
+	0xC067, 0x7E86, 0xC068, 0x7E87, 0xC069, 0x7E88, 0xC06A, 0x7E89,
+	0xC06B, 0x7E8A, 0xC06C, 0x7E8B, 0xC06D, 0x7E8C, 0xC06E, 0x7E8D,
+	0xC06F, 0x7E8E, 0xC070, 0x7E8F, 0xC071, 0x7E90, 0xC072, 0x7E91,
+	0xC073, 0x7E92, 0xC074, 0x7E93, 0xC075, 0x7E94, 0xC076, 0x7E95,
+	0xC077, 0x7E96, 0xC078, 0x7E97, 0xC079, 0x7E98, 0xC07A, 0x7E99,
+	0xC07B, 0x7E9A, 0xC07C, 0x7E9C, 0xC07D, 0x7E9D, 0xC07E, 0x7E9E,
+	0xC080, 0x7EAE, 0xC081, 0x7EB4, 0xC082, 0x7EBB, 0xC083, 0x7EBC,
+	0xC084, 0x7ED6, 0xC085, 0x7EE4, 0xC086, 0x7EEC, 0xC087, 0x7EF9,
+	0xC088, 0x7F0A, 0xC089, 0x7F10, 0xC08A, 0x7F1E, 0xC08B, 0x7F37,
+	0xC08C, 0x7F39, 0xC08D, 0x7F3B, 0xC08E, 0x7F3C, 0xC08F, 0x7F3D,
+	0xC090, 0x7F3E, 0xC091, 0x7F3F, 0xC092, 0x7F40, 0xC093, 0x7F41,
+	0xC094, 0x7F43, 0xC095, 0x7F46, 0xC096, 0x7F47, 0xC097, 0x7F48,
+	0xC098, 0x7F49, 0xC099, 0x7F4A, 0xC09A, 0x7F4B, 0xC09B, 0x7F4C,
+	0xC09C, 0x7F4D, 0xC09D, 0x7F4E, 0xC09E, 0x7F4F, 0xC09F, 0x7F52,
+	0xC0A0, 0x7F53, 0xC0A1, 0x9988, 0xC0A2, 0x6127, 0xC0A3, 0x6E83,
+	0xC0A4, 0x5764, 0xC0A5, 0x6606, 0xC0A6, 0x6346, 0xC0A7, 0x56F0,
+	0xC0A8, 0x62EC, 0xC0A9, 0x6269, 0xC0AA, 0x5ED3, 0xC0AB, 0x9614,
+	0xC0AC, 0x5783, 0xC0AD, 0x62C9, 0xC0AE, 0x5587, 0xC0AF, 0x8721,
+	0xC0B0, 0x814A, 0xC0B1, 0x8FA3, 0xC0B2, 0x5566, 0xC0B3, 0x83B1,
+	0xC0B4, 0x6765, 0xC0B5, 0x8D56, 0xC0B6, 0x84DD, 0xC0B7, 0x5A6A,
+	0xC0B8, 0x680F, 0xC0B9, 0x62E6, 0xC0BA, 0x7BEE, 0xC0BB, 0x9611,
+	0xC0BC, 0x5170, 0xC0BD, 0x6F9C, 0xC0BE, 0x8C30, 0xC0BF, 0x63FD,
+	0xC0C0, 0x89C8, 0xC0C1, 0x61D2, 0xC0C2, 0x7F06, 0xC0C3, 0x70C2,
+	0xC0C4, 0x6EE5, 0xC0C5, 0x7405, 0xC0C6, 0x6994, 0xC0C7, 0x72FC,
+	0xC0C8, 0x5ECA, 0xC0C9, 0x90CE, 0xC0CA, 0x6717, 0xC0CB, 0x6D6A,
+	0xC0CC, 0x635E, 0xC0CD, 0x52B3, 0xC0CE, 0x7262, 0xC0CF, 0x8001,
+	0xC0D0, 0x4F6C, 0xC0D1, 0x59E5, 0xC0D2, 0x916A, 0xC0D3, 0x70D9,
+	0xC0D4, 0x6D9D, 0xC0D5, 0x52D2, 0xC0D6, 0x4E50, 0xC0D7, 0x96F7,
+	0xC0D8, 0x956D, 0xC0D9, 0x857E, 0xC0DA, 0x78CA, 0xC0DB, 0x7D2F,
+	0xC0DC, 0x5121, 0xC0DD, 0x5792, 0xC0DE, 0x64C2, 0xC0DF, 0x808B,
+	0xC0E0, 0x7C7B, 0xC0E1, 0x6CEA, 0xC0E2, 0x68F1, 0xC0E3, 0x695E,
+	0xC0E4, 0x51B7, 0xC0E5, 0x5398, 0xC0E6, 0x68A8, 0xC0E7, 0x7281,
+	0xC0E8, 0x9ECE, 0xC0E9, 0x7BF1, 0xC0EA, 0x72F8, 0xC0EB, 0x79BB,
+	0xC0EC, 0x6F13, 0xC0ED, 0x7406, 0xC0EE, 0x674E, 0xC0EF, 0x91CC,
+	0xC0F0, 0x9CA4, 0xC0F1, 0x793C, 0xC0F2, 0x8389, 0xC0F3, 0x8354,
+	0xC0F4, 0x540F, 0xC0F5, 0x6817, 0xC0F6, 0x4E3D, 0xC0F7, 0x5389,
+	0xC0F8, 0x52B1, 0xC0F9, 0x783E, 0xC0FA, 0x5386, 0xC0FB, 0x5229,
+	0xC0FC, 0x5088, 0xC0FD, 0x4F8B, 0xC0FE, 0x4FD0, 0xC140, 0x7F56,
+	0xC141, 0x7F59, 0xC142, 0x7F5B, 0xC143, 0x7F5C, 0xC144, 0x7F5D,
+	0xC145, 0x7F5E, 0xC146, 0x7F60, 0xC147, 0x7F63, 0xC148, 0x7F64,
+	0xC149, 0x7F65, 0xC14A, 0x7F66, 0xC14B, 0x7F67, 0xC14C, 0x7F6B,
+	0xC14D, 0x7F6C, 0xC14E, 0x7F6D, 0xC14F, 0x7F6F, 0xC150, 0x7F70,
+	0xC151, 0x7F73, 0xC152, 0x7F75, 0xC153, 0x7F76, 0xC154, 0x7F77,
+	0xC155, 0x7F78, 0xC156, 0x7F7A, 0xC157, 0x7F7B, 0xC158, 0x7F7C,
+	0xC159, 0x7F7D, 0xC15A, 0x7F7F, 0xC15B, 0x7F80, 0xC15C, 0x7F82,
+	0xC15D, 0x7F83, 0xC15E, 0x7F84, 0xC15F, 0x7F85, 0xC160, 0x7F86,
+	0xC161, 0x7F87, 0xC162, 0x7F88, 0xC163, 0x7F89, 0xC164, 0x7F8B,
+	0xC165, 0x7F8D, 0xC166, 0x7F8F, 0xC167, 0x7F90, 0xC168, 0x7F91,
+	0xC169, 0x7F92, 0xC16A, 0x7F93, 0xC16B, 0x7F95, 0xC16C, 0x7F96,
+	0xC16D, 0x7F97, 0xC16E, 0x7F98, 0xC16F, 0x7F99, 0xC170, 0x7F9B,
+	0xC171, 0x7F9C, 0xC172, 0x7FA0, 0xC173, 0x7FA2, 0xC174, 0x7FA3,
+	0xC175, 0x7FA5, 0xC176, 0x7FA6, 0xC177, 0x7FA8, 0xC178, 0x7FA9,
+	0xC179, 0x7FAA, 0xC17A, 0x7FAB, 0xC17B, 0x7FAC, 0xC17C, 0x7FAD,
+	0xC17D, 0x7FAE, 0xC17E, 0x7FB1, 0xC180, 0x7FB3, 0xC181, 0x7FB4,
+	0xC182, 0x7FB5, 0xC183, 0x7FB6, 0xC184, 0x7FB7, 0xC185, 0x7FBA,
+	0xC186, 0x7FBB, 0xC187, 0x7FBE, 0xC188, 0x7FC0, 0xC189, 0x7FC2,
+	0xC18A, 0x7FC3, 0xC18B, 0x7FC4, 0xC18C, 0x7FC6, 0xC18D, 0x7FC7,
+	0xC18E, 0x7FC8, 0xC18F, 0x7FC9, 0xC190, 0x7FCB, 0xC191, 0x7FCD,
+	0xC192, 0x7FCF, 0xC193, 0x7FD0, 0xC194, 0x7FD1, 0xC195, 0x7FD2,
+	0xC196, 0x7FD3, 0xC197, 0x7FD6, 0xC198, 0x7FD7, 0xC199, 0x7FD9,
+	0xC19A, 0x7FDA, 0xC19B, 0x7FDB, 0xC19C, 0x7FDC, 0xC19D, 0x7FDD,
+	0xC19E, 0x7FDE, 0xC19F, 0x7FE2, 0xC1A0, 0x7FE3, 0xC1A1, 0x75E2,
+	0xC1A2, 0x7ACB, 0xC1A3, 0x7C92, 0xC1A4, 0x6CA5, 0xC1A5, 0x96B6,
+	0xC1A6, 0x529B, 0xC1A7, 0x7483, 0xC1A8, 0x54E9, 0xC1A9, 0x4FE9,
+	0xC1AA, 0x8054, 0xC1AB, 0x83B2, 0xC1AC, 0x8FDE, 0xC1AD, 0x9570,
+	0xC1AE, 0x5EC9, 0xC1AF, 0x601C, 0xC1B0, 0x6D9F, 0xC1B1, 0x5E18,
+	0xC1B2, 0x655B, 0xC1B3, 0x8138, 0xC1B4, 0x94FE, 0xC1B5, 0x604B,
+	0xC1B6, 0x70BC, 0xC1B7, 0x7EC3, 0xC1B8, 0x7CAE, 0xC1B9, 0x51C9,
+	0xC1BA, 0x6881, 0xC1BB, 0x7CB1, 0xC1BC, 0x826F, 0xC1BD, 0x4E24,
+	0xC1BE, 0x8F86, 0xC1BF, 0x91CF, 0xC1C0, 0x667E, 0xC1C1, 0x4EAE,
+	0xC1C2, 0x8C05, 0xC1C3, 0x64A9, 0xC1C4, 0x804A, 0xC1C5, 0x50DA,
+	0xC1C6, 0x7597, 0xC1C7, 0x71CE, 0xC1C8, 0x5BE5, 0xC1C9, 0x8FBD,
+	0xC1CA, 0x6F66, 0xC1CB, 0x4E86, 0xC1CC, 0x6482, 0xC1CD, 0x9563,
+	0xC1CE, 0x5ED6, 0xC1CF, 0x6599, 0xC1D0, 0x5217, 0xC1D1, 0x88C2,
+	0xC1D2, 0x70C8, 0xC1D3, 0x52A3, 0xC1D4, 0x730E, 0xC1D5, 0x7433,
+	0xC1D6, 0x6797, 0xC1D7, 0x78F7, 0xC1D8, 0x9716, 0xC1D9, 0x4E34,
+	0xC1DA, 0x90BB, 0xC1DB, 0x9CDE, 0xC1DC, 0x6DCB, 0xC1DD, 0x51DB,
+	0xC1DE, 0x8D41, 0xC1DF, 0x541D, 0xC1E0, 0x62CE, 0xC1E1, 0x73B2,
+	0xC1E2, 0x83F1, 0xC1E3, 0x96F6, 0xC1E4, 0x9F84, 0xC1E5, 0x94C3,
+	0xC1E6, 0x4F36, 0xC1E7, 0x7F9A, 0xC1E8, 0x51CC, 0xC1E9, 0x7075,
+	0xC1EA, 0x9675, 0xC1EB, 0x5CAD, 0xC1EC, 0x9886, 0xC1ED, 0x53E6,
+	0xC1EE, 0x4EE4, 0xC1EF, 0x6E9C, 0xC1F0, 0x7409, 0xC1F1, 0x69B4,
+	0xC1F2, 0x786B, 0xC1F3, 0x998F, 0xC1F4, 0x7559, 0xC1F5, 0x5218,
+	0xC1F6, 0x7624, 0xC1F7, 0x6D41, 0xC1F8, 0x67F3, 0xC1F9, 0x516D,
+	0xC1FA, 0x9F99, 0xC1FB, 0x804B, 0xC1FC, 0x5499, 0xC1FD, 0x7B3C,
+	0xC1FE, 0x7ABF, 0xC240, 0x7FE4, 0xC241, 0x7FE7, 0xC242, 0x7FE8,
+	0xC243, 0x7FEA, 0xC244, 0x7FEB, 0xC245, 0x7FEC, 0xC246, 0x7FED,
+	0xC247, 0x7FEF, 0xC248, 0x7FF2, 0xC249, 0x7FF4, 0xC24A, 0x7FF5,
+	0xC24B, 0x7FF6, 0xC24C, 0x7FF7, 0xC24D, 0x7FF8, 0xC24E, 0x7FF9,
+	0xC24F, 0x7FFA, 0xC250, 0x7FFD, 0xC251, 0x7FFE, 0xC252, 0x7FFF,
+	0xC253, 0x8002, 0xC254, 0x8007, 0xC255, 0x8008, 0xC256, 0x8009,
+	0xC257, 0x800A, 0xC258, 0x800E, 0xC259, 0x800F, 0xC25A, 0x8011,
+	0xC25B, 0x8013, 0xC25C, 0x801A, 0xC25D, 0x801B, 0xC25E, 0x801D,
+	0xC25F, 0x801E, 0xC260, 0x801F, 0xC261, 0x8021, 0xC262, 0x8023,
+	0xC263, 0x8024, 0xC264, 0x802B, 0xC265, 0x802C, 0xC266, 0x802D,
+	0xC267, 0x802E, 0xC268, 0x802F, 0xC269, 0x8030, 0xC26A, 0x8032,
+	0xC26B, 0x8034, 0xC26C, 0x8039, 0xC26D, 0x803A, 0xC26E, 0x803C,
+	0xC26F, 0x803E, 0xC270, 0x8040, 0xC271, 0x8041, 0xC272, 0x8044,
+	0xC273, 0x8045, 0xC274, 0x8047, 0xC275, 0x8048, 0xC276, 0x8049,
+	0xC277, 0x804E, 0xC278, 0x804F, 0xC279, 0x8050, 0xC27A, 0x8051,
+	0xC27B, 0x8053, 0xC27C, 0x8055, 0xC27D, 0x8056, 0xC27E, 0x8057,
+	0xC280, 0x8059, 0xC281, 0x805B, 0xC282, 0x805C, 0xC283, 0x805D,
+	0xC284, 0x805E, 0xC285, 0x805F, 0xC286, 0x8060, 0xC287, 0x8061,
+	0xC288, 0x8062, 0xC289, 0x8063, 0xC28A, 0x8064, 0xC28B, 0x8065,
+	0xC28C, 0x8066, 0xC28D, 0x8067, 0xC28E, 0x8068, 0xC28F, 0x806B,
+	0xC290, 0x806C, 0xC291, 0x806D, 0xC292, 0x806E, 0xC293, 0x806F,
+	0xC294, 0x8070, 0xC295, 0x8072, 0xC296, 0x8073, 0xC297, 0x8074,
+	0xC298, 0x8075, 0xC299, 0x8076, 0xC29A, 0x8077, 0xC29B, 0x8078,
+	0xC29C, 0x8079, 0xC29D, 0x807A, 0xC29E, 0x807B, 0xC29F, 0x807C,
+	0xC2A0, 0x807D, 0xC2A1, 0x9686, 0xC2A2, 0x5784, 0xC2A3, 0x62E2,
+	0xC2A4, 0x9647, 0xC2A5, 0x697C, 0xC2A6, 0x5A04, 0xC2A7, 0x6402,
+	0xC2A8, 0x7BD3, 0xC2A9, 0x6F0F, 0xC2AA, 0x964B, 0xC2AB, 0x82A6,
+	0xC2AC, 0x5362, 0xC2AD, 0x9885, 0xC2AE, 0x5E90, 0xC2AF, 0x7089,
+	0xC2B0, 0x63B3, 0xC2B1, 0x5364, 0xC2B2, 0x864F, 0xC2B3, 0x9C81,
+	0xC2B4, 0x9E93, 0xC2B5, 0x788C, 0xC2B6, 0x9732, 0xC2B7, 0x8DEF,
+	0xC2B8, 0x8D42, 0xC2B9, 0x9E7F, 0xC2BA, 0x6F5E, 0xC2BB, 0x7984,
+	0xC2BC, 0x5F55, 0xC2BD, 0x9646, 0xC2BE, 0x622E, 0xC2BF, 0x9A74,
+	0xC2C0, 0x5415, 0xC2C1, 0x94DD, 0xC2C2, 0x4FA3, 0xC2C3, 0x65C5,
+	0xC2C4, 0x5C65, 0xC2C5, 0x5C61, 0xC2C6, 0x7F15, 0xC2C7, 0x8651,
+	0xC2C8, 0x6C2F, 0xC2C9, 0x5F8B, 0xC2CA, 0x7387, 0xC2CB, 0x6EE4,
+	0xC2CC, 0x7EFF, 0xC2CD, 0x5CE6, 0xC2CE, 0x631B, 0xC2CF, 0x5B6A,
+	0xC2D0, 0x6EE6, 0xC2D1, 0x5375, 0xC2D2, 0x4E71, 0xC2D3, 0x63A0,
+	0xC2D4, 0x7565, 0xC2D5, 0x62A1, 0xC2D6, 0x8F6E, 0xC2D7, 0x4F26,
+	0xC2D8, 0x4ED1, 0xC2D9, 0x6CA6, 0xC2DA, 0x7EB6, 0xC2DB, 0x8BBA,
+	0xC2DC, 0x841D, 0xC2DD, 0x87BA, 0xC2DE, 0x7F57, 0xC2DF, 0x903B,
+	0xC2E0, 0x9523, 0xC2E1, 0x7BA9, 0xC2E2, 0x9AA1, 0xC2E3, 0x88F8,
+	0xC2E4, 0x843D, 0xC2E5, 0x6D1B, 0xC2E6, 0x9A86, 0xC2E7, 0x7EDC,
+	0xC2E8, 0x5988, 0xC2E9, 0x9EBB, 0xC2EA, 0x739B, 0xC2EB, 0x7801,
+	0xC2EC, 0x8682, 0xC2ED, 0x9A6C, 0xC2EE, 0x9A82, 0xC2EF, 0x561B,
+	0xC2F0, 0x5417, 0xC2F1, 0x57CB, 0xC2F2, 0x4E70, 0xC2F3, 0x9EA6,
+	0xC2F4, 0x5356, 0xC2F5, 0x8FC8, 0xC2F6, 0x8109, 0xC2F7, 0x7792,
+	0xC2F8, 0x9992, 0xC2F9, 0x86EE, 0xC2FA, 0x6EE1, 0xC2FB, 0x8513,
+	0xC2FC, 0x66FC, 0xC2FD, 0x6162, 0xC2FE, 0x6F2B, 0xC340, 0x807E,
+	0xC341, 0x8081, 0xC342, 0x8082, 0xC343, 0x8085, 0xC344, 0x8088,
+	0xC345, 0x808A, 0xC346, 0x808D, 0xC347, 0x808E, 0xC348, 0x808F,
+	0xC349, 0x8090, 0xC34A, 0x8091, 0xC34B, 0x8092, 0xC34C, 0x8094,
+	0xC34D, 0x8095, 0xC34E, 0x8097, 0xC34F, 0x8099, 0xC350, 0x809E,
+	0xC351, 0x80A3, 0xC352, 0x80A6, 0xC353, 0x80A7, 0xC354, 0x80A8,
+	0xC355, 0x80AC, 0xC356, 0x80B0, 0xC357, 0x80B3, 0xC358, 0x80B5,
+	0xC359, 0x80B6, 0xC35A, 0x80B8, 0xC35B, 0x80B9, 0xC35C, 0x80BB,
+	0xC35D, 0x80C5, 0xC35E, 0x80C7, 0xC35F, 0x80C8, 0xC360, 0x80C9,
+	0xC361, 0x80CA, 0xC362, 0x80CB, 0xC363, 0x80CF, 0xC364, 0x80D0,
+	0xC365, 0x80D1, 0xC366, 0x80D2, 0xC367, 0x80D3, 0xC368, 0x80D4,
+	0xC369, 0x80D5, 0xC36A, 0x80D8, 0xC36B, 0x80DF, 0xC36C, 0x80E0,
+	0xC36D, 0x80E2, 0xC36E, 0x80E3, 0xC36F, 0x80E6, 0xC370, 0x80EE,
+	0xC371, 0x80F5, 0xC372, 0x80F7, 0xC373, 0x80F9, 0xC374, 0x80FB,
+	0xC375, 0x80FE, 0xC376, 0x80FF, 0xC377, 0x8100, 0xC378, 0x8101,
+	0xC379, 0x8103, 0xC37A, 0x8104, 0xC37B, 0x8105, 0xC37C, 0x8107,
+	0xC37D, 0x8108, 0xC37E, 0x810B, 0xC380, 0x810C, 0xC381, 0x8115,
+	0xC382, 0x8117, 0xC383, 0x8119, 0xC384, 0x811B, 0xC385, 0x811C,
+	0xC386, 0x811D, 0xC387, 0x811F, 0xC388, 0x8120, 0xC389, 0x8121,
+	0xC38A, 0x8122, 0xC38B, 0x8123, 0xC38C, 0x8124, 0xC38D, 0x8125,
+	0xC38E, 0x8126, 0xC38F, 0x8127, 0xC390, 0x8128, 0xC391, 0x8129,
+	0xC392, 0x812A, 0xC393, 0x812B, 0xC394, 0x812D, 0xC395, 0x812E,
+	0xC396, 0x8130, 0xC397, 0x8133, 0xC398, 0x8134, 0xC399, 0x8135,
+	0xC39A, 0x8137, 0xC39B, 0x8139, 0xC39C, 0x813A, 0xC39D, 0x813B,
+	0xC39E, 0x813C, 0xC39F, 0x813D, 0xC3A0, 0x813F, 0xC3A1, 0x8C29,
+	0xC3A2, 0x8292, 0xC3A3, 0x832B, 0xC3A4, 0x76F2, 0xC3A5, 0x6C13,
+	0xC3A6, 0x5FD9, 0xC3A7, 0x83BD, 0xC3A8, 0x732B, 0xC3A9, 0x8305,
+	0xC3AA, 0x951A, 0xC3AB, 0x6BDB, 0xC3AC, 0x77DB, 0xC3AD, 0x94C6,
+	0xC3AE, 0x536F, 0xC3AF, 0x8302, 0xC3B0, 0x5192, 0xC3B1, 0x5E3D,
+	0xC3B2, 0x8C8C, 0xC3B3, 0x8D38, 0xC3B4, 0x4E48, 0xC3B5, 0x73AB,
+	0xC3B6, 0x679A, 0xC3B7, 0x6885, 0xC3B8, 0x9176, 0xC3B9, 0x9709,
+	0xC3BA, 0x7164, 0xC3BB, 0x6CA1, 0xC3BC, 0x7709, 0xC3BD, 0x5A92,
+	0xC3BE, 0x9541, 0xC3BF, 0x6BCF, 0xC3C0, 0x7F8E, 0xC3C1, 0x6627,
+	0xC3C2, 0x5BD0, 0xC3C3, 0x59B9, 0xC3C4, 0x5A9A, 0xC3C5, 0x95E8,
+	0xC3C6, 0x95F7, 0xC3C7, 0x4EEC, 0xC3C8, 0x840C, 0xC3C9, 0x8499,
+	0xC3CA, 0x6AAC, 0xC3CB, 0x76DF, 0xC3CC, 0x9530, 0xC3CD, 0x731B,
+	0xC3CE, 0x68A6, 0xC3CF, 0x5B5F, 0xC3D0, 0x772F, 0xC3D1, 0x919A,
+	0xC3D2, 0x9761, 0xC3D3, 0x7CDC, 0xC3D4, 0x8FF7, 0xC3D5, 0x8C1C,
+	0xC3D6, 0x5F25, 0xC3D7, 0x7C73, 0xC3D8, 0x79D8, 0xC3D9, 0x89C5,
+	0xC3DA, 0x6CCC, 0xC3DB, 0x871C, 0xC3DC, 0x5BC6, 0xC3DD, 0x5E42,
+	0xC3DE, 0x68C9, 0xC3DF, 0x7720, 0xC3E0, 0x7EF5, 0xC3E1, 0x5195,
+	0xC3E2, 0x514D, 0xC3E3, 0x52C9, 0xC3E4, 0x5A29, 0xC3E5, 0x7F05,
+	0xC3E6, 0x9762, 0xC3E7, 0x82D7, 0xC3E8, 0x63CF, 0xC3E9, 0x7784,
+	0xC3EA, 0x85D0, 0xC3EB, 0x79D2, 0xC3EC, 0x6E3A, 0xC3ED, 0x5E99,
+	0xC3EE, 0x5999, 0xC3EF, 0x8511, 0xC3F0, 0x706D, 0xC3F1, 0x6C11,
+	0xC3F2, 0x62BF, 0xC3F3, 0x76BF, 0xC3F4, 0x654F, 0xC3F5, 0x60AF,
+	0xC3F6, 0x95FD, 0xC3F7, 0x660E, 0xC3F8, 0x879F, 0xC3F9, 0x9E23,
+	0xC3FA, 0x94ED, 0xC3FB, 0x540D, 0xC3FC, 0x547D, 0xC3FD, 0x8C2C,
+	0xC3FE, 0x6478, 0xC440, 0x8140, 0xC441, 0x8141, 0xC442, 0x8142,
+	0xC443, 0x8143, 0xC444, 0x8144, 0xC445, 0x8145, 0xC446, 0x8147,
+	0xC447, 0x8149, 0xC448, 0x814D, 0xC449, 0x814E, 0xC44A, 0x814F,
+	0xC44B, 0x8152, 0xC44C, 0x8156, 0xC44D, 0x8157, 0xC44E, 0x8158,
+	0xC44F, 0x815B, 0xC450, 0x815C, 0xC451, 0x815D, 0xC452, 0x815E,
+	0xC453, 0x815F, 0xC454, 0x8161, 0xC455, 0x8162, 0xC456, 0x8163,
+	0xC457, 0x8164, 0xC458, 0x8166, 0xC459, 0x8168, 0xC45A, 0x816A,
+	0xC45B, 0x816B, 0xC45C, 0x816C, 0xC45D, 0x816F, 0xC45E, 0x8172,
+	0xC45F, 0x8173, 0xC460, 0x8175, 0xC461, 0x8176, 0xC462, 0x8177,
+	0xC463, 0x8178, 0xC464, 0x8181, 0xC465, 0x8183, 0xC466, 0x8184,
+	0xC467, 0x8185, 0xC468, 0x8186, 0xC469, 0x8187, 0xC46A, 0x8189,
+	0xC46B, 0x818B, 0xC46C, 0x818C, 0xC46D, 0x818D, 0xC46E, 0x818E,
+	0xC46F, 0x8190, 0xC470, 0x8192, 0xC471, 0x8193, 0xC472, 0x8194,
+	0xC473, 0x8195, 0xC474, 0x8196, 0xC475, 0x8197, 0xC476, 0x8199,
+	0xC477, 0x819A, 0xC478, 0x819E, 0xC479, 0x819F, 0xC47A, 0x81A0,
+	0xC47B, 0x81A1, 0xC47C, 0x81A2, 0xC47D, 0x81A4, 0xC47E, 0x81A5,
+	0xC480, 0x81A7, 0xC481, 0x81A9, 0xC482, 0x81AB, 0xC483, 0x81AC,
+	0xC484, 0x81AD, 0xC485, 0x81AE, 0xC486, 0x81AF, 0xC487, 0x81B0,
+	0xC488, 0x81B1, 0xC489, 0x81B2, 0xC48A, 0x81B4, 0xC48B, 0x81B5,
+	0xC48C, 0x81B6, 0xC48D, 0x81B7, 0xC48E, 0x81B8, 0xC48F, 0x81B9,
+	0xC490, 0x81BC, 0xC491, 0x81BD, 0xC492, 0x81BE, 0xC493, 0x81BF,
+	0xC494, 0x81C4, 0xC495, 0x81C5, 0xC496, 0x81C7, 0xC497, 0x81C8,
+	0xC498, 0x81C9, 0xC499, 0x81CB, 0xC49A, 0x81CD, 0xC49B, 0x81CE,
+	0xC49C, 0x81CF, 0xC49D, 0x81D0, 0xC49E, 0x81D1, 0xC49F, 0x81D2,
+	0xC4A0, 0x81D3, 0xC4A1, 0x6479, 0xC4A2, 0x8611, 0xC4A3, 0x6A21,
+	0xC4A4, 0x819C, 0xC4A5, 0x78E8, 0xC4A6, 0x6469, 0xC4A7, 0x9B54,
+	0xC4A8, 0x62B9, 0xC4A9, 0x672B, 0xC4AA, 0x83AB, 0xC4AB, 0x58A8,
+	0xC4AC, 0x9ED8, 0xC4AD, 0x6CAB, 0xC4AE, 0x6F20, 0xC4AF, 0x5BDE,
+	0xC4B0, 0x964C, 0xC4B1, 0x8C0B, 0xC4B2, 0x725F, 0xC4B3, 0x67D0,
+	0xC4B4, 0x62C7, 0xC4B5, 0x7261, 0xC4B6, 0x4EA9, 0xC4B7, 0x59C6,
+	0xC4B8, 0x6BCD, 0xC4B9, 0x5893, 0xC4BA, 0x66AE, 0xC4BB, 0x5E55,
+	0xC4BC, 0x52DF, 0xC4BD, 0x6155, 0xC4BE, 0x6728, 0xC4BF, 0x76EE,
+	0xC4C0, 0x7766, 0xC4C1, 0x7267, 0xC4C2, 0x7A46, 0xC4C3, 0x62FF,
+	0xC4C4, 0x54EA, 0xC4C5, 0x5450, 0xC4C6, 0x94A0, 0xC4C7, 0x90A3,
+	0xC4C8, 0x5A1C, 0xC4C9, 0x7EB3, 0xC4CA, 0x6C16, 0xC4CB, 0x4E43,
+	0xC4CC, 0x5976, 0xC4CD, 0x8010, 0xC4CE, 0x5948, 0xC4CF, 0x5357,
+	0xC4D0, 0x7537, 0xC4D1, 0x96BE, 0xC4D2, 0x56CA, 0xC4D3, 0x6320,
+	0xC4D4, 0x8111, 0xC4D5, 0x607C, 0xC4D6, 0x95F9, 0xC4D7, 0x6DD6,
+	0xC4D8, 0x5462, 0xC4D9, 0x9981, 0xC4DA, 0x5185, 0xC4DB, 0x5AE9,
+	0xC4DC, 0x80FD, 0xC4DD, 0x59AE, 0xC4DE, 0x9713, 0xC4DF, 0x502A,
+	0xC4E0, 0x6CE5, 0xC4E1, 0x5C3C, 0xC4E2, 0x62DF, 0xC4E3, 0x4F60,
+	0xC4E4, 0x533F, 0xC4E5, 0x817B, 0xC4E6, 0x9006, 0xC4E7, 0x6EBA,
+	0xC4E8, 0x852B, 0xC4E9, 0x62C8, 0xC4EA, 0x5E74, 0xC4EB, 0x78BE,
+	0xC4EC, 0x64B5, 0xC4ED, 0x637B, 0xC4EE, 0x5FF5, 0xC4EF, 0x5A18,
+	0xC4F0, 0x917F, 0xC4F1, 0x9E1F, 0xC4F2, 0x5C3F, 0xC4F3, 0x634F,
+	0xC4F4, 0x8042, 0xC4F5, 0x5B7D, 0xC4F6, 0x556E, 0xC4F7, 0x954A,
+	0xC4F8, 0x954D, 0xC4F9, 0x6D85, 0xC4FA, 0x60A8, 0xC4FB, 0x67E0,
+	0xC4FC, 0x72DE, 0xC4FD, 0x51DD, 0xC4FE, 0x5B81, 0xC540, 0x81D4,
+	0xC541, 0x81D5, 0xC542, 0x81D6, 0xC543, 0x81D7, 0xC544, 0x81D8,
+	0xC545, 0x81D9, 0xC546, 0x81DA, 0xC547, 0x81DB, 0xC548, 0x81DC,
+	0xC549, 0x81DD, 0xC54A, 0x81DE, 0xC54B, 0x81DF, 0xC54C, 0x81E0,
+	0xC54D, 0x81E1, 0xC54E, 0x81E2, 0xC54F, 0x81E4, 0xC550, 0x81E5,
+	0xC551, 0x81E6, 0xC552, 0x81E8, 0xC553, 0x81E9, 0xC554, 0x81EB,
+	0xC555, 0x81EE, 0xC556, 0x81EF, 0xC557, 0x81F0, 0xC558, 0x81F1,
+	0xC559, 0x81F2, 0xC55A, 0x81F5, 0xC55B, 0x81F6, 0xC55C, 0x81F7,
+	0xC55D, 0x81F8, 0xC55E, 0x81F9, 0xC55F, 0x81FA, 0xC560, 0x81FD,
+	0xC561, 0x81FF, 0xC562, 0x8203, 0xC563, 0x8207, 0xC564, 0x8208,
+	0xC565, 0x8209, 0xC566, 0x820A, 0xC567, 0x820B, 0xC568, 0x820E,
+	0xC569, 0x820F, 0xC56A, 0x8211, 0xC56B, 0x8213, 0xC56C, 0x8215,
+	0xC56D, 0x8216, 0xC56E, 0x8217, 0xC56F, 0x8218, 0xC570, 0x8219,
+	0xC571, 0x821A, 0xC572, 0x821D, 0xC573, 0x8220, 0xC574, 0x8224,
+	0xC575, 0x8225, 0xC576, 0x8226, 0xC577, 0x8227, 0xC578, 0x8229,
+	0xC579, 0x822E, 0xC57A, 0x8232, 0xC57B, 0x823A, 0xC57C, 0x823C,
+	0xC57D, 0x823D, 0xC57E, 0x823F, 0xC580, 0x8240, 0xC581, 0x8241,
+	0xC582, 0x8242, 0xC583, 0x8243, 0xC584, 0x8245, 0xC585, 0x8246,
+	0xC586, 0x8248, 0xC587, 0x824A, 0xC588, 0x824C, 0xC589, 0x824D,
+	0xC58A, 0x824E, 0xC58B, 0x8250, 0xC58C, 0x8251, 0xC58D, 0x8252,
+	0xC58E, 0x8253, 0xC58F, 0x8254, 0xC590, 0x8255, 0xC591, 0x8256,
+	0xC592, 0x8257, 0xC593, 0x8259, 0xC594, 0x825B, 0xC595, 0x825C,
+	0xC596, 0x825D, 0xC597, 0x825E, 0xC598, 0x8260, 0xC599, 0x8261,
+	0xC59A, 0x8262, 0xC59B, 0x8263, 0xC59C, 0x8264, 0xC59D, 0x8265,
+	0xC59E, 0x8266, 0xC59F, 0x8267, 0xC5A0, 0x8269, 0xC5A1, 0x62E7,
+	0xC5A2, 0x6CDE, 0xC5A3, 0x725B, 0xC5A4, 0x626D, 0xC5A5, 0x94AE,
+	0xC5A6, 0x7EBD, 0xC5A7, 0x8113, 0xC5A8, 0x6D53, 0xC5A9, 0x519C,
+	0xC5AA, 0x5F04, 0xC5AB, 0x5974, 0xC5AC, 0x52AA, 0xC5AD, 0x6012,
+	0xC5AE, 0x5973, 0xC5AF, 0x6696, 0xC5B0, 0x8650, 0xC5B1, 0x759F,
+	0xC5B2, 0x632A, 0xC5B3, 0x61E6, 0xC5B4, 0x7CEF, 0xC5B5, 0x8BFA,
+	0xC5B6, 0x54E6, 0xC5B7, 0x6B27, 0xC5B8, 0x9E25, 0xC5B9, 0x6BB4,
+	0xC5BA, 0x85D5, 0xC5BB, 0x5455, 0xC5BC, 0x5076, 0xC5BD, 0x6CA4,
+	0xC5BE, 0x556A, 0xC5BF, 0x8DB4, 0xC5C0, 0x722C, 0xC5C1, 0x5E15,
+	0xC5C2, 0x6015, 0xC5C3, 0x7436, 0xC5C4, 0x62CD, 0xC5C5, 0x6392,
+	0xC5C6, 0x724C, 0xC5C7, 0x5F98, 0xC5C8, 0x6E43, 0xC5C9, 0x6D3E,
+	0xC5CA, 0x6500, 0xC5CB, 0x6F58, 0xC5CC, 0x76D8, 0xC5CD, 0x78D0,
+	0xC5CE, 0x76FC, 0xC5CF, 0x7554, 0xC5D0, 0x5224, 0xC5D1, 0x53DB,
+	0xC5D2, 0x4E53, 0xC5D3, 0x5E9E, 0xC5D4, 0x65C1, 0xC5D5, 0x802A,
+	0xC5D6, 0x80D6, 0xC5D7, 0x629B, 0xC5D8, 0x5486, 0xC5D9, 0x5228,
+	0xC5DA, 0x70AE, 0xC5DB, 0x888D, 0xC5DC, 0x8DD1, 0xC5DD, 0x6CE1,
+	0xC5DE, 0x5478, 0xC5DF, 0x80DA, 0xC5E0, 0x57F9, 0xC5E1, 0x88F4,
+	0xC5E2, 0x8D54, 0xC5E3, 0x966A, 0xC5E4, 0x914D, 0xC5E5, 0x4F69,
+	0xC5E6, 0x6C9B, 0xC5E7, 0x55B7, 0xC5E8, 0x76C6, 0xC5E9, 0x7830,
+	0xC5EA, 0x62A8, 0xC5EB, 0x70F9, 0xC5EC, 0x6F8E, 0xC5ED, 0x5F6D,
+	0xC5EE, 0x84EC, 0xC5EF, 0x68DA, 0xC5F0, 0x787C, 0xC5F1, 0x7BF7,
+	0xC5F2, 0x81A8, 0xC5F3, 0x670B, 0xC5F4, 0x9E4F, 0xC5F5, 0x6367,
+	0xC5F6, 0x78B0, 0xC5F7, 0x576F, 0xC5F8, 0x7812, 0xC5F9, 0x9739,
+	0xC5FA, 0x6279, 0xC5FB, 0x62AB, 0xC5FC, 0x5288, 0xC5FD, 0x7435,
+	0xC5FE, 0x6BD7, 0xC640, 0x826A, 0xC641, 0x826B, 0xC642, 0x826C,
+	0xC643, 0x826D, 0xC644, 0x8271, 0xC645, 0x8275, 0xC646, 0x8276,
+	0xC647, 0x8277, 0xC648, 0x8278, 0xC649, 0x827B, 0xC64A, 0x827C,
+	0xC64B, 0x8280, 0xC64C, 0x8281, 0xC64D, 0x8283, 0xC64E, 0x8285,
+	0xC64F, 0x8286, 0xC650, 0x8287, 0xC651, 0x8289, 0xC652, 0x828C,
+	0xC653, 0x8290, 0xC654, 0x8293, 0xC655, 0x8294, 0xC656, 0x8295,
+	0xC657, 0x8296, 0xC658, 0x829A, 0xC659, 0x829B, 0xC65A, 0x829E,
+	0xC65B, 0x82A0, 0xC65C, 0x82A2, 0xC65D, 0x82A3, 0xC65E, 0x82A7,
+	0xC65F, 0x82B2, 0xC660, 0x82B5, 0xC661, 0x82B6, 0xC662, 0x82BA,
+	0xC663, 0x82BB, 0xC664, 0x82BC, 0xC665, 0x82BF, 0xC666, 0x82C0,
+	0xC667, 0x82C2, 0xC668, 0x82C3, 0xC669, 0x82C5, 0xC66A, 0x82C6,
+	0xC66B, 0x82C9, 0xC66C, 0x82D0, 0xC66D, 0x82D6, 0xC66E, 0x82D9,
+	0xC66F, 0x82DA, 0xC670, 0x82DD, 0xC671, 0x82E2, 0xC672, 0x82E7,
+	0xC673, 0x82E8, 0xC674, 0x82E9, 0xC675, 0x82EA, 0xC676, 0x82EC,
+	0xC677, 0x82ED, 0xC678, 0x82EE, 0xC679, 0x82F0, 0xC67A, 0x82F2,
+	0xC67B, 0x82F3, 0xC67C, 0x82F5, 0xC67D, 0x82F6, 0xC67E, 0x82F8,
+	0xC680, 0x82FA, 0xC681, 0x82FC, 0xC682, 0x82FD, 0xC683, 0x82FE,
+	0xC684, 0x82FF, 0xC685, 0x8300, 0xC686, 0x830A, 0xC687, 0x830B,
+	0xC688, 0x830D, 0xC689, 0x8310, 0xC68A, 0x8312, 0xC68B, 0x8313,
+	0xC68C, 0x8316, 0xC68D, 0x8318, 0xC68E, 0x8319, 0xC68F, 0x831D,
+	0xC690, 0x831E, 0xC691, 0x831F, 0xC692, 0x8320, 0xC693, 0x8321,
+	0xC694, 0x8322, 0xC695, 0x8323, 0xC696, 0x8324, 0xC697, 0x8325,
+	0xC698, 0x8326, 0xC699, 0x8329, 0xC69A, 0x832A, 0xC69B, 0x832E,
+	0xC69C, 0x8330, 0xC69D, 0x8332, 0xC69E, 0x8337, 0xC69F, 0x833B,
+	0xC6A0, 0x833D, 0xC6A1, 0x5564, 0xC6A2, 0x813E, 0xC6A3, 0x75B2,
+	0xC6A4, 0x76AE, 0xC6A5, 0x5339, 0xC6A6, 0x75DE, 0xC6A7, 0x50FB,
+	0xC6A8, 0x5C41, 0xC6A9, 0x8B6C, 0xC6AA, 0x7BC7, 0xC6AB, 0x504F,
+	0xC6AC, 0x7247, 0xC6AD, 0x9A97, 0xC6AE, 0x98D8, 0xC6AF, 0x6F02,
+	0xC6B0, 0x74E2, 0xC6B1, 0x7968, 0xC6B2, 0x6487, 0xC6B3, 0x77A5,
+	0xC6B4, 0x62FC, 0xC6B5, 0x9891, 0xC6B6, 0x8D2B, 0xC6B7, 0x54C1,
+	0xC6B8, 0x8058, 0xC6B9, 0x4E52, 0xC6BA, 0x576A, 0xC6BB, 0x82F9,
+	0xC6BC, 0x840D, 0xC6BD, 0x5E73, 0xC6BE, 0x51ED, 0xC6BF, 0x74F6,
+	0xC6C0, 0x8BC4, 0xC6C1, 0x5C4F, 0xC6C2, 0x5761, 0xC6C3, 0x6CFC,
+	0xC6C4, 0x9887, 0xC6C5, 0x5A46, 0xC6C6, 0x7834, 0xC6C7, 0x9B44,
+	0xC6C8, 0x8FEB, 0xC6C9, 0x7C95, 0xC6CA, 0x5256, 0xC6CB, 0x6251,
+	0xC6CC, 0x94FA, 0xC6CD, 0x4EC6, 0xC6CE, 0x8386, 0xC6CF, 0x8461,
+	0xC6D0, 0x83E9, 0xC6D1, 0x84B2, 0xC6D2, 0x57D4, 0xC6D3, 0x6734,
+	0xC6D4, 0x5703, 0xC6D5, 0x666E, 0xC6D6, 0x6D66, 0xC6D7, 0x8C31,
+	0xC6D8, 0x66DD, 0xC6D9, 0x7011, 0xC6DA, 0x671F, 0xC6DB, 0x6B3A,
+	0xC6DC, 0x6816, 0xC6DD, 0x621A, 0xC6DE, 0x59BB, 0xC6DF, 0x4E03,
+	0xC6E0, 0x51C4, 0xC6E1, 0x6F06, 0xC6E2, 0x67D2, 0xC6E3, 0x6C8F,
+	0xC6E4, 0x5176, 0xC6E5, 0x68CB, 0xC6E6, 0x5947, 0xC6E7, 0x6B67,
+	0xC6E8, 0x7566, 0xC6E9, 0x5D0E, 0xC6EA, 0x8110, 0xC6EB, 0x9F50,
+	0xC6EC, 0x65D7, 0xC6ED, 0x7948, 0xC6EE, 0x7941, 0xC6EF, 0x9A91,
+	0xC6F0, 0x8D77, 0xC6F1, 0x5C82, 0xC6F2, 0x4E5E, 0xC6F3, 0x4F01,
+	0xC6F4, 0x542F, 0xC6F5, 0x5951, 0xC6F6, 0x780C, 0xC6F7, 0x5668,
+	0xC6F8, 0x6C14, 0xC6F9, 0x8FC4, 0xC6FA, 0x5F03, 0xC6FB, 0x6C7D,
+	0xC6FC, 0x6CE3, 0xC6FD, 0x8BAB, 0xC6FE, 0x6390, 0xC740, 0x833E,
+	0xC741, 0x833F, 0xC742, 0x8341, 0xC743, 0x8342, 0xC744, 0x8344,
+	0xC745, 0x8345, 0xC746, 0x8348, 0xC747, 0x834A, 0xC748, 0x834B,
+	0xC749, 0x834C, 0xC74A, 0x834D, 0xC74B, 0x834E, 0xC74C, 0x8353,
+	0xC74D, 0x8355, 0xC74E, 0x8356, 0xC74F, 0x8357, 0xC750, 0x8358,
+	0xC751, 0x8359, 0xC752, 0x835D, 0xC753, 0x8362, 0xC754, 0x8370,
+	0xC755, 0x8371, 0xC756, 0x8372, 0xC757, 0x8373, 0xC758, 0x8374,
+	0xC759, 0x8375, 0xC75A, 0x8376, 0xC75B, 0x8379, 0xC75C, 0x837A,
+	0xC75D, 0x837E, 0xC75E, 0x837F, 0xC75F, 0x8380, 0xC760, 0x8381,
+	0xC761, 0x8382, 0xC762, 0x8383, 0xC763, 0x8384, 0xC764, 0x8387,
+	0xC765, 0x8388, 0xC766, 0x838A, 0xC767, 0x838B, 0xC768, 0x838C,
+	0xC769, 0x838D, 0xC76A, 0x838F, 0xC76B, 0x8390, 0xC76C, 0x8391,
+	0xC76D, 0x8394, 0xC76E, 0x8395, 0xC76F, 0x8396, 0xC770, 0x8397,
+	0xC771, 0x8399, 0xC772, 0x839A, 0xC773, 0x839D, 0xC774, 0x839F,
+	0xC775, 0x83A1, 0xC776, 0x83A2, 0xC777, 0x83A3, 0xC778, 0x83A4,
+	0xC779, 0x83A5, 0xC77A, 0x83A6, 0xC77B, 0x83A7, 0xC77C, 0x83AC,
+	0xC77D, 0x83AD, 0xC77E, 0x83AE, 0xC780, 0x83AF, 0xC781, 0x83B5,
+	0xC782, 0x83BB, 0xC783, 0x83BE, 0xC784, 0x83BF, 0xC785, 0x83C2,
+	0xC786, 0x83C3, 0xC787, 0x83C4, 0xC788, 0x83C6, 0xC789, 0x83C8,
+	0xC78A, 0x83C9, 0xC78B, 0x83CB, 0xC78C, 0x83CD, 0xC78D, 0x83CE,
+	0xC78E, 0x83D0, 0xC78F, 0x83D1, 0xC790, 0x83D2, 0xC791, 0x83D3,
+	0xC792, 0x83D5, 0xC793, 0x83D7, 0xC794, 0x83D9, 0xC795, 0x83DA,
+	0xC796, 0x83DB, 0xC797, 0x83DE, 0xC798, 0x83E2, 0xC799, 0x83E3,
+	0xC79A, 0x83E4, 0xC79B, 0x83E6, 0xC79C, 0x83E7, 0xC79D, 0x83E8,
+	0xC79E, 0x83EB, 0xC79F, 0x83EC, 0xC7A0, 0x83ED, 0xC7A1, 0x6070,
+	0xC7A2, 0x6D3D, 0xC7A3, 0x7275, 0xC7A4, 0x6266, 0xC7A5, 0x948E,
+	0xC7A6, 0x94C5, 0xC7A7, 0x5343, 0xC7A8, 0x8FC1, 0xC7A9, 0x7B7E,
+	0xC7AA, 0x4EDF, 0xC7AB, 0x8C26, 0xC7AC, 0x4E7E, 0xC7AD, 0x9ED4,
+	0xC7AE, 0x94B1, 0xC7AF, 0x94B3, 0xC7B0, 0x524D, 0xC7B1, 0x6F5C,
+	0xC7B2, 0x9063, 0xC7B3, 0x6D45, 0xC7B4, 0x8C34, 0xC7B5, 0x5811,
+	0xC7B6, 0x5D4C, 0xC7B7, 0x6B20, 0xC7B8, 0x6B49, 0xC7B9, 0x67AA,
+	0xC7BA, 0x545B, 0xC7BB, 0x8154, 0xC7BC, 0x7F8C, 0xC7BD, 0x5899,
+	0xC7BE, 0x8537, 0xC7BF, 0x5F3A, 0xC7C0, 0x62A2, 0xC7C1, 0x6A47,
+	0xC7C2, 0x9539, 0xC7C3, 0x6572, 0xC7C4, 0x6084, 0xC7C5, 0x6865,
+	0xC7C6, 0x77A7, 0xC7C7, 0x4E54, 0xC7C8, 0x4FA8, 0xC7C9, 0x5DE7,
+	0xC7CA, 0x9798, 0xC7CB, 0x64AC, 0xC7CC, 0x7FD8, 0xC7CD, 0x5CED,
+	0xC7CE, 0x4FCF, 0xC7CF, 0x7A8D, 0xC7D0, 0x5207, 0xC7D1, 0x8304,
+	0xC7D2, 0x4E14, 0xC7D3, 0x602F, 0xC7D4, 0x7A83, 0xC7D5, 0x94A6,
+	0xC7D6, 0x4FB5, 0xC7D7, 0x4EB2, 0xC7D8, 0x79E6, 0xC7D9, 0x7434,
+	0xC7DA, 0x52E4, 0xC7DB, 0x82B9, 0xC7DC, 0x64D2, 0xC7DD, 0x79BD,
+	0xC7DE, 0x5BDD, 0xC7DF, 0x6C81, 0xC7E0, 0x9752, 0xC7E1, 0x8F7B,
+	0xC7E2, 0x6C22, 0xC7E3, 0x503E, 0xC7E4, 0x537F, 0xC7E5, 0x6E05,
+	0xC7E6, 0x64CE, 0xC7E7, 0x6674, 0xC7E8, 0x6C30, 0xC7E9, 0x60C5,
+	0xC7EA, 0x9877, 0xC7EB, 0x8BF7, 0xC7EC, 0x5E86, 0xC7ED, 0x743C,
+	0xC7EE, 0x7A77, 0xC7EF, 0x79CB, 0xC7F0, 0x4E18, 0xC7F1, 0x90B1,
+	0xC7F2, 0x7403, 0xC7F3, 0x6C42, 0xC7F4, 0x56DA, 0xC7F5, 0x914B,
+	0xC7F6, 0x6CC5, 0xC7F7, 0x8D8B, 0xC7F8, 0x533A, 0xC7F9, 0x86C6,
+	0xC7FA, 0x66F2, 0xC7FB, 0x8EAF, 0xC7FC, 0x5C48, 0xC7FD, 0x9A71,
+	0xC7FE, 0x6E20, 0xC840, 0x83EE, 0xC841, 0x83EF, 0xC842, 0x83F3,
+	0xC843, 0x83F4, 0xC844, 0x83F5, 0xC845, 0x83F6, 0xC846, 0x83F7,
+	0xC847, 0x83FA, 0xC848, 0x83FB, 0xC849, 0x83FC, 0xC84A, 0x83FE,
+	0xC84B, 0x83FF, 0xC84C, 0x8400, 0xC84D, 0x8402, 0xC84E, 0x8405,
+	0xC84F, 0x8407, 0xC850, 0x8408, 0xC851, 0x8409, 0xC852, 0x840A,
+	0xC853, 0x8410, 0xC854, 0x8412, 0xC855, 0x8413, 0xC856, 0x8414,
+	0xC857, 0x8415, 0xC858, 0x8416, 0xC859, 0x8417, 0xC85A, 0x8419,
+	0xC85B, 0x841A, 0xC85C, 0x841B, 0xC85D, 0x841E, 0xC85E, 0x841F,
+	0xC85F, 0x8420, 0xC860, 0x8421, 0xC861, 0x8422, 0xC862, 0x8423,
+	0xC863, 0x8429, 0xC864, 0x842A, 0xC865, 0x842B, 0xC866, 0x842C,
+	0xC867, 0x842D, 0xC868, 0x842E, 0xC869, 0x842F, 0xC86A, 0x8430,
+	0xC86B, 0x8432, 0xC86C, 0x8433, 0xC86D, 0x8434, 0xC86E, 0x8435,
+	0xC86F, 0x8436, 0xC870, 0x8437, 0xC871, 0x8439, 0xC872, 0x843A,
+	0xC873, 0x843B, 0xC874, 0x843E, 0xC875, 0x843F, 0xC876, 0x8440,
+	0xC877, 0x8441, 0xC878, 0x8442, 0xC879, 0x8443, 0xC87A, 0x8444,
+	0xC87B, 0x8445, 0xC87C, 0x8447, 0xC87D, 0x8448, 0xC87E, 0x8449,
+	0xC880, 0x844A, 0xC881, 0x844B, 0xC882, 0x844C, 0xC883, 0x844D,
+	0xC884, 0x844E, 0xC885, 0x844F, 0xC886, 0x8450, 0xC887, 0x8452,
+	0xC888, 0x8453, 0xC889, 0x8454, 0xC88A, 0x8455, 0xC88B, 0x8456,
+	0xC88C, 0x8458, 0xC88D, 0x845D, 0xC88E, 0x845E, 0xC88F, 0x845F,
+	0xC890, 0x8460, 0xC891, 0x8462, 0xC892, 0x8464, 0xC893, 0x8465,
+	0xC894, 0x8466, 0xC895, 0x8467, 0xC896, 0x8468, 0xC897, 0x846A,
+	0xC898, 0x846E, 0xC899, 0x846F, 0xC89A, 0x8470, 0xC89B, 0x8472,
+	0xC89C, 0x8474, 0xC89D, 0x8477, 0xC89E, 0x8479, 0xC89F, 0x847B,
+	0xC8A0, 0x847C, 0xC8A1, 0x53D6, 0xC8A2, 0x5A36, 0xC8A3, 0x9F8B,
+	0xC8A4, 0x8DA3, 0xC8A5, 0x53BB, 0xC8A6, 0x5708, 0xC8A7, 0x98A7,
+	0xC8A8, 0x6743, 0xC8A9, 0x919B, 0xC8AA, 0x6CC9, 0xC8AB, 0x5168,
+	0xC8AC, 0x75CA, 0xC8AD, 0x62F3, 0xC8AE, 0x72AC, 0xC8AF, 0x5238,
+	0xC8B0, 0x529D, 0xC8B1, 0x7F3A, 0xC8B2, 0x7094, 0xC8B3, 0x7638,
+	0xC8B4, 0x5374, 0xC8B5, 0x9E4A, 0xC8B6, 0x69B7, 0xC8B7, 0x786E,
+	0xC8B8, 0x96C0, 0xC8B9, 0x88D9, 0xC8BA, 0x7FA4, 0xC8BB, 0x7136,
+	0xC8BC, 0x71C3, 0xC8BD, 0x5189, 0xC8BE, 0x67D3, 0xC8BF, 0x74E4,
+	0xC8C0, 0x58E4, 0xC8C1, 0x6518, 0xC8C2, 0x56B7, 0xC8C3, 0x8BA9,
+	0xC8C4, 0x9976, 0xC8C5, 0x6270, 0xC8C6, 0x7ED5, 0xC8C7, 0x60F9,
+	0xC8C8, 0x70ED, 0xC8C9, 0x58EC, 0xC8CA, 0x4EC1, 0xC8CB, 0x4EBA,
+	0xC8CC, 0x5FCD, 0xC8CD, 0x97E7, 0xC8CE, 0x4EFB, 0xC8CF, 0x8BA4,
+	0xC8D0, 0x5203, 0xC8D1, 0x598A, 0xC8D2, 0x7EAB, 0xC8D3, 0x6254,
+	0xC8D4, 0x4ECD, 0xC8D5, 0x65E5, 0xC8D6, 0x620E, 0xC8D7, 0x8338,
+	0xC8D8, 0x84C9, 0xC8D9, 0x8363, 0xC8DA, 0x878D, 0xC8DB, 0x7194,
+	0xC8DC, 0x6EB6, 0xC8DD, 0x5BB9, 0xC8DE, 0x7ED2, 0xC8DF, 0x5197,
+	0xC8E0, 0x63C9, 0xC8E1, 0x67D4, 0xC8E2, 0x8089, 0xC8E3, 0x8339,
+	0xC8E4, 0x8815, 0xC8E5, 0x5112, 0xC8E6, 0x5B7A, 0xC8E7, 0x5982,
+	0xC8E8, 0x8FB1, 0xC8E9, 0x4E73, 0xC8EA, 0x6C5D, 0xC8EB, 0x5165,
+	0xC8EC, 0x8925, 0xC8ED, 0x8F6F, 0xC8EE, 0x962E, 0xC8EF, 0x854A,
+	0xC8F0, 0x745E, 0xC8F1, 0x9510, 0xC8F2, 0x95F0, 0xC8F3, 0x6DA6,
+	0xC8F4, 0x82E5, 0xC8F5, 0x5F31, 0xC8F6, 0x6492, 0xC8F7, 0x6D12,
+	0xC8F8, 0x8428, 0xC8F9, 0x816E, 0xC8FA, 0x9CC3, 0xC8FB, 0x585E,
+	0xC8FC, 0x8D5B, 0xC8FD, 0x4E09, 0xC8FE, 0x53C1, 0xC940, 0x847D,
+	0xC941, 0x847E, 0xC942, 0x847F, 0xC943, 0x8480, 0xC944, 0x8481,
+	0xC945, 0x8483, 0xC946, 0x8484, 0xC947, 0x8485, 0xC948, 0x8486,
+	0xC949, 0x848A, 0xC94A, 0x848D, 0xC94B, 0x848F, 0xC94C, 0x8490,
+	0xC94D, 0x8491, 0xC94E, 0x8492, 0xC94F, 0x8493, 0xC950, 0x8494,
+	0xC951, 0x8495, 0xC952, 0x8496, 0xC953, 0x8498, 0xC954, 0x849A,
+	0xC955, 0x849B, 0xC956, 0x849D, 0xC957, 0x849E, 0xC958, 0x849F,
+	0xC959, 0x84A0, 0xC95A, 0x84A2, 0xC95B, 0x84A3, 0xC95C, 0x84A4,
+	0xC95D, 0x84A5, 0xC95E, 0x84A6, 0xC95F, 0x84A7, 0xC960, 0x84A8,
+	0xC961, 0x84A9, 0xC962, 0x84AA, 0xC963, 0x84AB, 0xC964, 0x84AC,
+	0xC965, 0x84AD, 0xC966, 0x84AE, 0xC967, 0x84B0, 0xC968, 0x84B1,
+	0xC969, 0x84B3, 0xC96A, 0x84B5, 0xC96B, 0x84B6, 0xC96C, 0x84B7,
+	0xC96D, 0x84BB, 0xC96E, 0x84BC, 0xC96F, 0x84BE, 0xC970, 0x84C0,
+	0xC971, 0x84C2, 0xC972, 0x84C3, 0xC973, 0x84C5, 0xC974, 0x84C6,
+	0xC975, 0x84C7, 0xC976, 0x84C8, 0xC977, 0x84CB, 0xC978, 0x84CC,
+	0xC979, 0x84CE, 0xC97A, 0x84CF, 0xC97B, 0x84D2, 0xC97C, 0x84D4,
+	0xC97D, 0x84D5, 0xC97E, 0x84D7, 0xC980, 0x84D8, 0xC981, 0x84D9,
+	0xC982, 0x84DA, 0xC983, 0x84DB, 0xC984, 0x84DC, 0xC985, 0x84DE,
+	0xC986, 0x84E1, 0xC987, 0x84E2, 0xC988, 0x84E4, 0xC989, 0x84E7,
+	0xC98A, 0x84E8, 0xC98B, 0x84E9, 0xC98C, 0x84EA, 0xC98D, 0x84EB,
+	0xC98E, 0x84ED, 0xC98F, 0x84EE, 0xC990, 0x84EF, 0xC991, 0x84F1,
+	0xC992, 0x84F2, 0xC993, 0x84F3, 0xC994, 0x84F4, 0xC995, 0x84F5,
+	0xC996, 0x84F6, 0xC997, 0x84F7, 0xC998, 0x84F8, 0xC999, 0x84F9,
+	0xC99A, 0x84FA, 0xC99B, 0x84FB, 0xC99C, 0x84FD, 0xC99D, 0x84FE,
+	0xC99E, 0x8500, 0xC99F, 0x8501, 0xC9A0, 0x8502, 0xC9A1, 0x4F1E,
+	0xC9A2, 0x6563, 0xC9A3, 0x6851, 0xC9A4, 0x55D3, 0xC9A5, 0x4E27,
+	0xC9A6, 0x6414, 0xC9A7, 0x9A9A, 0xC9A8, 0x626B, 0xC9A9, 0x5AC2,
+	0xC9AA, 0x745F, 0xC9AB, 0x8272, 0xC9AC, 0x6DA9, 0xC9AD, 0x68EE,
+	0xC9AE, 0x50E7, 0xC9AF, 0x838E, 0xC9B0, 0x7802, 0xC9B1, 0x6740,
+	0xC9B2, 0x5239, 0xC9B3, 0x6C99, 0xC9B4, 0x7EB1, 0xC9B5, 0x50BB,
+	0xC9B6, 0x5565, 0xC9B7, 0x715E, 0xC9B8, 0x7B5B, 0xC9B9, 0x6652,
+	0xC9BA, 0x73CA, 0xC9BB, 0x82EB, 0xC9BC, 0x6749, 0xC9BD, 0x5C71,
+	0xC9BE, 0x5220, 0xC9BF, 0x717D, 0xC9C0, 0x886B, 0xC9C1, 0x95EA,
+	0xC9C2, 0x9655, 0xC9C3, 0x64C5, 0xC9C4, 0x8D61, 0xC9C5, 0x81B3,
+	0xC9C6, 0x5584, 0xC9C7, 0x6C55, 0xC9C8, 0x6247, 0xC9C9, 0x7F2E,
+	0xC9CA, 0x5892, 0xC9CB, 0x4F24, 0xC9CC, 0x5546, 0xC9CD, 0x8D4F,
+	0xC9CE, 0x664C, 0xC9CF, 0x4E0A, 0xC9D0, 0x5C1A, 0xC9D1, 0x88F3,
+	0xC9D2, 0x68A2, 0xC9D3, 0x634E, 0xC9D4, 0x7A0D, 0xC9D5, 0x70E7,
+	0xC9D6, 0x828D, 0xC9D7, 0x52FA, 0xC9D8, 0x97F6, 0xC9D9, 0x5C11,
+	0xC9DA, 0x54E8, 0xC9DB, 0x90B5, 0xC9DC, 0x7ECD, 0xC9DD, 0x5962,
+	0xC9DE, 0x8D4A, 0xC9DF, 0x86C7, 0xC9E0, 0x820C, 0xC9E1, 0x820D,
+	0xC9E2, 0x8D66, 0xC9E3, 0x6444, 0xC9E4, 0x5C04, 0xC9E5, 0x6151,
+	0xC9E6, 0x6D89, 0xC9E7, 0x793E, 0xC9E8, 0x8BBE, 0xC9E9, 0x7837,
+	0xC9EA, 0x7533, 0xC9EB, 0x547B, 0xC9EC, 0x4F38, 0xC9ED, 0x8EAB,
+	0xC9EE, 0x6DF1, 0xC9EF, 0x5A20, 0xC9F0, 0x7EC5, 0xC9F1, 0x795E,
+	0xC9F2, 0x6C88, 0xC9F3, 0x5BA1, 0xC9F4, 0x5A76, 0xC9F5, 0x751A,
+	0xC9F6, 0x80BE, 0xC9F7, 0x614E, 0xC9F8, 0x6E17, 0xC9F9, 0x58F0,
+	0xC9FA, 0x751F, 0xC9FB, 0x7525, 0xC9FC, 0x7272, 0xC9FD, 0x5347,
+	0xC9FE, 0x7EF3, 0xCA40, 0x8503, 0xCA41, 0x8504, 0xCA42, 0x8505,
+	0xCA43, 0x8506, 0xCA44, 0x8507, 0xCA45, 0x8508, 0xCA46, 0x8509,
+	0xCA47, 0x850A, 0xCA48, 0x850B, 0xCA49, 0x850D, 0xCA4A, 0x850E,
+	0xCA4B, 0x850F, 0xCA4C, 0x8510, 0xCA4D, 0x8512, 0xCA4E, 0x8514,
+	0xCA4F, 0x8515, 0xCA50, 0x8516, 0xCA51, 0x8518, 0xCA52, 0x8519,
+	0xCA53, 0x851B, 0xCA54, 0x851C, 0xCA55, 0x851D, 0xCA56, 0x851E,
+	0xCA57, 0x8520, 0xCA58, 0x8522, 0xCA59, 0x8523, 0xCA5A, 0x8524,
+	0xCA5B, 0x8525, 0xCA5C, 0x8526, 0xCA5D, 0x8527, 0xCA5E, 0x8528,
+	0xCA5F, 0x8529, 0xCA60, 0x852A, 0xCA61, 0x852D, 0xCA62, 0x852E,
+	0xCA63, 0x852F, 0xCA64, 0x8530, 0xCA65, 0x8531, 0xCA66, 0x8532,
+	0xCA67, 0x8533, 0xCA68, 0x8534, 0xCA69, 0x8535, 0xCA6A, 0x8536,
+	0xCA6B, 0x853E, 0xCA6C, 0x853F, 0xCA6D, 0x8540, 0xCA6E, 0x8541,
+	0xCA6F, 0x8542, 0xCA70, 0x8544, 0xCA71, 0x8545, 0xCA72, 0x8546,
+	0xCA73, 0x8547, 0xCA74, 0x854B, 0xCA75, 0x854C, 0xCA76, 0x854D,
+	0xCA77, 0x854E, 0xCA78, 0x854F, 0xCA79, 0x8550, 0xCA7A, 0x8551,
+	0xCA7B, 0x8552, 0xCA7C, 0x8553, 0xCA7D, 0x8554, 0xCA7E, 0x8555,
+	0xCA80, 0x8557, 0xCA81, 0x8558, 0xCA82, 0x855A, 0xCA83, 0x855B,
+	0xCA84, 0x855C, 0xCA85, 0x855D, 0xCA86, 0x855F, 0xCA87, 0x8560,
+	0xCA88, 0x8561, 0xCA89, 0x8562, 0xCA8A, 0x8563, 0xCA8B, 0x8565,
+	0xCA8C, 0x8566, 0xCA8D, 0x8567, 0xCA8E, 0x8569, 0xCA8F, 0x856A,
+	0xCA90, 0x856B, 0xCA91, 0x856C, 0xCA92, 0x856D, 0xCA93, 0x856E,
+	0xCA94, 0x856F, 0xCA95, 0x8570, 0xCA96, 0x8571, 0xCA97, 0x8573,
+	0xCA98, 0x8575, 0xCA99, 0x8576, 0xCA9A, 0x8577, 0xCA9B, 0x8578,
+	0xCA9C, 0x857C, 0xCA9D, 0x857D, 0xCA9E, 0x857F, 0xCA9F, 0x8580,
+	0xCAA0, 0x8581, 0xCAA1, 0x7701, 0xCAA2, 0x76DB, 0xCAA3, 0x5269,
+	0xCAA4, 0x80DC, 0xCAA5, 0x5723, 0xCAA6, 0x5E08, 0xCAA7, 0x5931,
+	0xCAA8, 0x72EE, 0xCAA9, 0x65BD, 0xCAAA, 0x6E7F, 0xCAAB, 0x8BD7,
+	0xCAAC, 0x5C38, 0xCAAD, 0x8671, 0xCAAE, 0x5341, 0xCAAF, 0x77F3,
+	0xCAB0, 0x62FE, 0xCAB1, 0x65F6, 0xCAB2, 0x4EC0, 0xCAB3, 0x98DF,
+	0xCAB4, 0x8680, 0xCAB5, 0x5B9E, 0xCAB6, 0x8BC6, 0xCAB7, 0x53F2,
+	0xCAB8, 0x77E2, 0xCAB9, 0x4F7F, 0xCABA, 0x5C4E, 0xCABB, 0x9A76,
+	0xCABC, 0x59CB, 0xCABD, 0x5F0F, 0xCABE, 0x793A, 0xCABF, 0x58EB,
+	0xCAC0, 0x4E16, 0xCAC1, 0x67FF, 0xCAC2, 0x4E8B, 0xCAC3, 0x62ED,
+	0xCAC4, 0x8A93, 0xCAC5, 0x901D, 0xCAC6, 0x52BF, 0xCAC7, 0x662F,
+	0xCAC8, 0x55DC, 0xCAC9, 0x566C, 0xCACA, 0x9002, 0xCACB, 0x4ED5,
+	0xCACC, 0x4F8D, 0xCACD, 0x91CA, 0xCACE, 0x9970, 0xCACF, 0x6C0F,
+	0xCAD0, 0x5E02, 0xCAD1, 0x6043, 0xCAD2, 0x5BA4, 0xCAD3, 0x89C6,
+	0xCAD4, 0x8BD5, 0xCAD5, 0x6536, 0xCAD6, 0x624B, 0xCAD7, 0x9996,
+	0xCAD8, 0x5B88, 0xCAD9, 0x5BFF, 0xCADA, 0x6388, 0xCADB, 0x552E,
+	0xCADC, 0x53D7, 0xCADD, 0x7626, 0xCADE, 0x517D, 0xCADF, 0x852C,
+	0xCAE0, 0x67A2, 0xCAE1, 0x68B3, 0xCAE2, 0x6B8A, 0xCAE3, 0x6292,
+	0xCAE4, 0x8F93, 0xCAE5, 0x53D4, 0xCAE6, 0x8212, 0xCAE7, 0x6DD1,
+	0xCAE8, 0x758F, 0xCAE9, 0x4E66, 0xCAEA, 0x8D4E, 0xCAEB, 0x5B70,
+	0xCAEC, 0x719F, 0xCAED, 0x85AF, 0xCAEE, 0x6691, 0xCAEF, 0x66D9,
+	0xCAF0, 0x7F72, 0xCAF1, 0x8700, 0xCAF2, 0x9ECD, 0xCAF3, 0x9F20,
+	0xCAF4, 0x5C5E, 0xCAF5, 0x672F, 0xCAF6, 0x8FF0, 0xCAF7, 0x6811,
+	0xCAF8, 0x675F, 0xCAF9, 0x620D, 0xCAFA, 0x7AD6, 0xCAFB, 0x5885,
+	0xCAFC, 0x5EB6, 0xCAFD, 0x6570, 0xCAFE, 0x6F31, 0xCB40, 0x8582,
+	0xCB41, 0x8583, 0xCB42, 0x8586, 0xCB43, 0x8588, 0xCB44, 0x8589,
+	0xCB45, 0x858A, 0xCB46, 0x858B, 0xCB47, 0x858C, 0xCB48, 0x858D,
+	0xCB49, 0x858E, 0xCB4A, 0x8590, 0xCB4B, 0x8591, 0xCB4C, 0x8592,
+	0xCB4D, 0x8593, 0xCB4E, 0x8594, 0xCB4F, 0x8595, 0xCB50, 0x8596,
+	0xCB51, 0x8597, 0xCB52, 0x8598, 0xCB53, 0x8599, 0xCB54, 0x859A,
+	0xCB55, 0x859D, 0xCB56, 0x859E, 0xCB57, 0x859F, 0xCB58, 0x85A0,
+	0xCB59, 0x85A1, 0xCB5A, 0x85A2, 0xCB5B, 0x85A3, 0xCB5C, 0x85A5,
+	0xCB5D, 0x85A6, 0xCB5E, 0x85A7, 0xCB5F, 0x85A9, 0xCB60, 0x85AB,
+	0xCB61, 0x85AC, 0xCB62, 0x85AD, 0xCB63, 0x85B1, 0xCB64, 0x85B2,
+	0xCB65, 0x85B3, 0xCB66, 0x85B4, 0xCB67, 0x85B5, 0xCB68, 0x85B6,
+	0xCB69, 0x85B8, 0xCB6A, 0x85BA, 0xCB6B, 0x85BB, 0xCB6C, 0x85BC,
+	0xCB6D, 0x85BD, 0xCB6E, 0x85BE, 0xCB6F, 0x85BF, 0xCB70, 0x85C0,
+	0xCB71, 0x85C2, 0xCB72, 0x85C3, 0xCB73, 0x85C4, 0xCB74, 0x85C5,
+	0xCB75, 0x85C6, 0xCB76, 0x85C7, 0xCB77, 0x85C8, 0xCB78, 0x85CA,
+	0xCB79, 0x85CB, 0xCB7A, 0x85CC, 0xCB7B, 0x85CD, 0xCB7C, 0x85CE,
+	0xCB7D, 0x85D1, 0xCB7E, 0x85D2, 0xCB80, 0x85D4, 0xCB81, 0x85D6,
+	0xCB82, 0x85D7, 0xCB83, 0x85D8, 0xCB84, 0x85D9, 0xCB85, 0x85DA,
+	0xCB86, 0x85DB, 0xCB87, 0x85DD, 0xCB88, 0x85DE, 0xCB89, 0x85DF,
+	0xCB8A, 0x85E0, 0xCB8B, 0x85E1, 0xCB8C, 0x85E2, 0xCB8D, 0x85E3,
+	0xCB8E, 0x85E5, 0xCB8F, 0x85E6, 0xCB90, 0x85E7, 0xCB91, 0x85E8,
+	0xCB92, 0x85EA, 0xCB93, 0x85EB, 0xCB94, 0x85EC, 0xCB95, 0x85ED,
+	0xCB96, 0x85EE, 0xCB97, 0x85EF, 0xCB98, 0x85F0, 0xCB99, 0x85F1,
+	0xCB9A, 0x85F2, 0xCB9B, 0x85F3, 0xCB9C, 0x85F4, 0xCB9D, 0x85F5,
+	0xCB9E, 0x85F6, 0xCB9F, 0x85F7, 0xCBA0, 0x85F8, 0xCBA1, 0x6055,
+	0xCBA2, 0x5237, 0xCBA3, 0x800D, 0xCBA4, 0x6454, 0xCBA5, 0x8870,
+	0xCBA6, 0x7529, 0xCBA7, 0x5E05, 0xCBA8, 0x6813, 0xCBA9, 0x62F4,
+	0xCBAA, 0x971C, 0xCBAB, 0x53CC, 0xCBAC, 0x723D, 0xCBAD, 0x8C01,
+	0xCBAE, 0x6C34, 0xCBAF, 0x7761, 0xCBB0, 0x7A0E, 0xCBB1, 0x542E,
+	0xCBB2, 0x77AC, 0xCBB3, 0x987A, 0xCBB4, 0x821C, 0xCBB5, 0x8BF4,
+	0xCBB6, 0x7855, 0xCBB7, 0x6714, 0xCBB8, 0x70C1, 0xCBB9, 0x65AF,
+	0xCBBA, 0x6495, 0xCBBB, 0x5636, 0xCBBC, 0x601D, 0xCBBD, 0x79C1,
+	0xCBBE, 0x53F8, 0xCBBF, 0x4E1D, 0xCBC0, 0x6B7B, 0xCBC1, 0x8086,
+	0xCBC2, 0x5BFA, 0xCBC3, 0x55E3, 0xCBC4, 0x56DB, 0xCBC5, 0x4F3A,
+	0xCBC6, 0x4F3C, 0xCBC7, 0x9972, 0xCBC8, 0x5DF3, 0xCBC9, 0x677E,
+	0xCBCA, 0x8038, 0xCBCB, 0x6002, 0xCBCC, 0x9882, 0xCBCD, 0x9001,
+	0xCBCE, 0x5B8B, 0xCBCF, 0x8BBC, 0xCBD0, 0x8BF5, 0xCBD1, 0x641C,
+	0xCBD2, 0x8258, 0xCBD3, 0x64DE, 0xCBD4, 0x55FD, 0xCBD5, 0x82CF,
+	0xCBD6, 0x9165, 0xCBD7, 0x4FD7, 0xCBD8, 0x7D20, 0xCBD9, 0x901F,
+	0xCBDA, 0x7C9F, 0xCBDB, 0x50F3, 0xCBDC, 0x5851, 0xCBDD, 0x6EAF,
+	0xCBDE, 0x5BBF, 0xCBDF, 0x8BC9, 0xCBE0, 0x8083, 0xCBE1, 0x9178,
+	0xCBE2, 0x849C, 0xCBE3, 0x7B97, 0xCBE4, 0x867D, 0xCBE5, 0x968B,
+	0xCBE6, 0x968F, 0xCBE7, 0x7EE5, 0xCBE8, 0x9AD3, 0xCBE9, 0x788E,
+	0xCBEA, 0x5C81, 0xCBEB, 0x7A57, 0xCBEC, 0x9042, 0xCBED, 0x96A7,
+	0xCBEE, 0x795F, 0xCBEF, 0x5B59, 0xCBF0, 0x635F, 0xCBF1, 0x7B0B,
+	0xCBF2, 0x84D1, 0xCBF3, 0x68AD, 0xCBF4, 0x5506, 0xCBF5, 0x7F29,
+	0xCBF6, 0x7410, 0xCBF7, 0x7D22, 0xCBF8, 0x9501, 0xCBF9, 0x6240,
+	0xCBFA, 0x584C, 0xCBFB, 0x4ED6, 0xCBFC, 0x5B83, 0xCBFD, 0x5979,
+	0xCBFE, 0x5854, 0xCC40, 0x85F9, 0xCC41, 0x85FA, 0xCC42, 0x85FC,
+	0xCC43, 0x85FD, 0xCC44, 0x85FE, 0xCC45, 0x8600, 0xCC46, 0x8601,
+	0xCC47, 0x8602, 0xCC48, 0x8603, 0xCC49, 0x8604, 0xCC4A, 0x8606,
+	0xCC4B, 0x8607, 0xCC4C, 0x8608, 0xCC4D, 0x8609, 0xCC4E, 0x860A,
+	0xCC4F, 0x860B, 0xCC50, 0x860C, 0xCC51, 0x860D, 0xCC52, 0x860E,
+	0xCC53, 0x860F, 0xCC54, 0x8610, 0xCC55, 0x8612, 0xCC56, 0x8613,
+	0xCC57, 0x8614, 0xCC58, 0x8615, 0xCC59, 0x8617, 0xCC5A, 0x8618,
+	0xCC5B, 0x8619, 0xCC5C, 0x861A, 0xCC5D, 0x861B, 0xCC5E, 0x861C,
+	0xCC5F, 0x861D, 0xCC60, 0x861E, 0xCC61, 0x861F, 0xCC62, 0x8620,
+	0xCC63, 0x8621, 0xCC64, 0x8622, 0xCC65, 0x8623, 0xCC66, 0x8624,
+	0xCC67, 0x8625, 0xCC68, 0x8626, 0xCC69, 0x8628, 0xCC6A, 0x862A,
+	0xCC6B, 0x862B, 0xCC6C, 0x862C, 0xCC6D, 0x862D, 0xCC6E, 0x862E,
+	0xCC6F, 0x862F, 0xCC70, 0x8630, 0xCC71, 0x8631, 0xCC72, 0x8632,
+	0xCC73, 0x8633, 0xCC74, 0x8634, 0xCC75, 0x8635, 0xCC76, 0x8636,
+	0xCC77, 0x8637, 0xCC78, 0x8639, 0xCC79, 0x863A, 0xCC7A, 0x863B,
+	0xCC7B, 0x863D, 0xCC7C, 0x863E, 0xCC7D, 0x863F, 0xCC7E, 0x8640,
+	0xCC80, 0x8641, 0xCC81, 0x8642, 0xCC82, 0x8643, 0xCC83, 0x8644,
+	0xCC84, 0x8645, 0xCC85, 0x8646, 0xCC86, 0x8647, 0xCC87, 0x8648,
+	0xCC88, 0x8649, 0xCC89, 0x864A, 0xCC8A, 0x864B, 0xCC8B, 0x864C,
+	0xCC8C, 0x8652, 0xCC8D, 0x8653, 0xCC8E, 0x8655, 0xCC8F, 0x8656,
+	0xCC90, 0x8657, 0xCC91, 0x8658, 0xCC92, 0x8659, 0xCC93, 0x865B,
+	0xCC94, 0x865C, 0xCC95, 0x865D, 0xCC96, 0x865F, 0xCC97, 0x8660,
+	0xCC98, 0x8661, 0xCC99, 0x8663, 0xCC9A, 0x8664, 0xCC9B, 0x8665,
+	0xCC9C, 0x8666, 0xCC9D, 0x8667, 0xCC9E, 0x8668, 0xCC9F, 0x8669,
+	0xCCA0, 0x866A, 0xCCA1, 0x736D, 0xCCA2, 0x631E, 0xCCA3, 0x8E4B,
+	0xCCA4, 0x8E0F, 0xCCA5, 0x80CE, 0xCCA6, 0x82D4, 0xCCA7, 0x62AC,
+	0xCCA8, 0x53F0, 0xCCA9, 0x6CF0, 0xCCAA, 0x915E, 0xCCAB, 0x592A,
+	0xCCAC, 0x6001, 0xCCAD, 0x6C70, 0xCCAE, 0x574D, 0xCCAF, 0x644A,
+	0xCCB0, 0x8D2A, 0xCCB1, 0x762B, 0xCCB2, 0x6EE9, 0xCCB3, 0x575B,
+	0xCCB4, 0x6A80, 0xCCB5, 0x75F0, 0xCCB6, 0x6F6D, 0xCCB7, 0x8C2D,
+	0xCCB8, 0x8C08, 0xCCB9, 0x5766, 0xCCBA, 0x6BEF, 0xCCBB, 0x8892,
+	0xCCBC, 0x78B3, 0xCCBD, 0x63A2, 0xCCBE, 0x53F9, 0xCCBF, 0x70AD,
+	0xCCC0, 0x6C64, 0xCCC1, 0x5858, 0xCCC2, 0x642A, 0xCCC3, 0x5802,
+	0xCCC4, 0x68E0, 0xCCC5, 0x819B, 0xCCC6, 0x5510, 0xCCC7, 0x7CD6,
+	0xCCC8, 0x5018, 0xCCC9, 0x8EBA, 0xCCCA, 0x6DCC, 0xCCCB, 0x8D9F,
+	0xCCCC, 0x70EB, 0xCCCD, 0x638F, 0xCCCE, 0x6D9B, 0xCCCF, 0x6ED4,
+	0xCCD0, 0x7EE6, 0xCCD1, 0x8404, 0xCCD2, 0x6843, 0xCCD3, 0x9003,
+	0xCCD4, 0x6DD8, 0xCCD5, 0x9676, 0xCCD6, 0x8BA8, 0xCCD7, 0x5957,
+	0xCCD8, 0x7279, 0xCCD9, 0x85E4, 0xCCDA, 0x817E, 0xCCDB, 0x75BC,
+	0xCCDC, 0x8A8A, 0xCCDD, 0x68AF, 0xCCDE, 0x5254, 0xCCDF, 0x8E22,
+	0xCCE0, 0x9511, 0xCCE1, 0x63D0, 0xCCE2, 0x9898, 0xCCE3, 0x8E44,
+	0xCCE4, 0x557C, 0xCCE5, 0x4F53, 0xCCE6, 0x66FF, 0xCCE7, 0x568F,
+	0xCCE8, 0x60D5, 0xCCE9, 0x6D95, 0xCCEA, 0x5243, 0xCCEB, 0x5C49,
+	0xCCEC, 0x5929, 0xCCED, 0x6DFB, 0xCCEE, 0x586B, 0xCCEF, 0x7530,
+	0xCCF0, 0x751C, 0xCCF1, 0x606C, 0xCCF2, 0x8214, 0xCCF3, 0x8146,
+	0xCCF4, 0x6311, 0xCCF5, 0x6761, 0xCCF6, 0x8FE2, 0xCCF7, 0x773A,
+	0xCCF8, 0x8DF3, 0xCCF9, 0x8D34, 0xCCFA, 0x94C1, 0xCCFB, 0x5E16,
+	0xCCFC, 0x5385, 0xCCFD, 0x542C, 0xCCFE, 0x70C3, 0xCD40, 0x866D,
+	0xCD41, 0x866F, 0xCD42, 0x8670, 0xCD43, 0x8672, 0xCD44, 0x8673,
+	0xCD45, 0x8674, 0xCD46, 0x8675, 0xCD47, 0x8676, 0xCD48, 0x8677,
+	0xCD49, 0x8678, 0xCD4A, 0x8683, 0xCD4B, 0x8684, 0xCD4C, 0x8685,
+	0xCD4D, 0x8686, 0xCD4E, 0x8687, 0xCD4F, 0x8688, 0xCD50, 0x8689,
+	0xCD51, 0x868E, 0xCD52, 0x868F, 0xCD53, 0x8690, 0xCD54, 0x8691,
+	0xCD55, 0x8692, 0xCD56, 0x8694, 0xCD57, 0x8696, 0xCD58, 0x8697,
+	0xCD59, 0x8698, 0xCD5A, 0x8699, 0xCD5B, 0x869A, 0xCD5C, 0x869B,
+	0xCD5D, 0x869E, 0xCD5E, 0x869F, 0xCD5F, 0x86A0, 0xCD60, 0x86A1,
+	0xCD61, 0x86A2, 0xCD62, 0x86A5, 0xCD63, 0x86A6, 0xCD64, 0x86AB,
+	0xCD65, 0x86AD, 0xCD66, 0x86AE, 0xCD67, 0x86B2, 0xCD68, 0x86B3,
+	0xCD69, 0x86B7, 0xCD6A, 0x86B8, 0xCD6B, 0x86B9, 0xCD6C, 0x86BB,
+	0xCD6D, 0x86BC, 0xCD6E, 0x86BD, 0xCD6F, 0x86BE, 0xCD70, 0x86BF,
+	0xCD71, 0x86C1, 0xCD72, 0x86C2, 0xCD73, 0x86C3, 0xCD74, 0x86C5,
+	0xCD75, 0x86C8, 0xCD76, 0x86CC, 0xCD77, 0x86CD, 0xCD78, 0x86D2,
+	0xCD79, 0x86D3, 0xCD7A, 0x86D5, 0xCD7B, 0x86D6, 0xCD7C, 0x86D7,
+	0xCD7D, 0x86DA, 0xCD7E, 0x86DC, 0xCD80, 0x86DD, 0xCD81, 0x86E0,
+	0xCD82, 0x86E1, 0xCD83, 0x86E2, 0xCD84, 0x86E3, 0xCD85, 0x86E5,
+	0xCD86, 0x86E6, 0xCD87, 0x86E7, 0xCD88, 0x86E8, 0xCD89, 0x86EA,
+	0xCD8A, 0x86EB, 0xCD8B, 0x86EC, 0xCD8C, 0x86EF, 0xCD8D, 0x86F5,
+	0xCD8E, 0x86F6, 0xCD8F, 0x86F7, 0xCD90, 0x86FA, 0xCD91, 0x86FB,
+	0xCD92, 0x86FC, 0xCD93, 0x86FD, 0xCD94, 0x86FF, 0xCD95, 0x8701,
+	0xCD96, 0x8704, 0xCD97, 0x8705, 0xCD98, 0x8706, 0xCD99, 0x870B,
+	0xCD9A, 0x870C, 0xCD9B, 0x870E, 0xCD9C, 0x870F, 0xCD9D, 0x8710,
+	0xCD9E, 0x8711, 0xCD9F, 0x8714, 0xCDA0, 0x8716, 0xCDA1, 0x6C40,
+	0xCDA2, 0x5EF7, 0xCDA3, 0x505C, 0xCDA4, 0x4EAD, 0xCDA5, 0x5EAD,
+	0xCDA6, 0x633A, 0xCDA7, 0x8247, 0xCDA8, 0x901A, 0xCDA9, 0x6850,
+	0xCDAA, 0x916E, 0xCDAB, 0x77B3, 0xCDAC, 0x540C, 0xCDAD, 0x94DC,
+	0xCDAE, 0x5F64, 0xCDAF, 0x7AE5, 0xCDB0, 0x6876, 0xCDB1, 0x6345,
+	0xCDB2, 0x7B52, 0xCDB3, 0x7EDF, 0xCDB4, 0x75DB, 0xCDB5, 0x5077,
+	0xCDB6, 0x6295, 0xCDB7, 0x5934, 0xCDB8, 0x900F, 0xCDB9, 0x51F8,
+	0xCDBA, 0x79C3, 0xCDBB, 0x7A81, 0xCDBC, 0x56FE, 0xCDBD, 0x5F92,
+	0xCDBE, 0x9014, 0xCDBF, 0x6D82, 0xCDC0, 0x5C60, 0xCDC1, 0x571F,
+	0xCDC2, 0x5410, 0xCDC3, 0x5154, 0xCDC4, 0x6E4D, 0xCDC5, 0x56E2,
+	0xCDC6, 0x63A8, 0xCDC7, 0x9893, 0xCDC8, 0x817F, 0xCDC9, 0x8715,
+	0xCDCA, 0x892A, 0xCDCB, 0x9000, 0xCDCC, 0x541E, 0xCDCD, 0x5C6F,
+	0xCDCE, 0x81C0, 0xCDCF, 0x62D6, 0xCDD0, 0x6258, 0xCDD1, 0x8131,
+	0xCDD2, 0x9E35, 0xCDD3, 0x9640, 0xCDD4, 0x9A6E, 0xCDD5, 0x9A7C,
+	0xCDD6, 0x692D, 0xCDD7, 0x59A5, 0xCDD8, 0x62D3, 0xCDD9, 0x553E,
+	0xCDDA, 0x6316, 0xCDDB, 0x54C7, 0xCDDC, 0x86D9, 0xCDDD, 0x6D3C,
+	0xCDDE, 0x5A03, 0xCDDF, 0x74E6, 0xCDE0, 0x889C, 0xCDE1, 0x6B6A,
+	0xCDE2, 0x5916, 0xCDE3, 0x8C4C, 0xCDE4, 0x5F2F, 0xCDE5, 0x6E7E,
+	0xCDE6, 0x73A9, 0xCDE7, 0x987D, 0xCDE8, 0x4E38, 0xCDE9, 0x70F7,
+	0xCDEA, 0x5B8C, 0xCDEB, 0x7897, 0xCDEC, 0x633D, 0xCDED, 0x665A,
+	0xCDEE, 0x7696, 0xCDEF, 0x60CB, 0xCDF0, 0x5B9B, 0xCDF1, 0x5A49,
+	0xCDF2, 0x4E07, 0xCDF3, 0x8155, 0xCDF4, 0x6C6A, 0xCDF5, 0x738B,
+	0xCDF6, 0x4EA1, 0xCDF7, 0x6789, 0xCDF8, 0x7F51, 0xCDF9, 0x5F80,
+	0xCDFA, 0x65FA, 0xCDFB, 0x671B, 0xCDFC, 0x5FD8, 0xCDFD, 0x5984,
+	0xCDFE, 0x5A01, 0xCE40, 0x8719, 0xCE41, 0x871B, 0xCE42, 0x871D,
+	0xCE43, 0x871F, 0xCE44, 0x8720, 0xCE45, 0x8724, 0xCE46, 0x8726,
+	0xCE47, 0x8727, 0xCE48, 0x8728, 0xCE49, 0x872A, 0xCE4A, 0x872B,
+	0xCE4B, 0x872C, 0xCE4C, 0x872D, 0xCE4D, 0x872F, 0xCE4E, 0x8730,
+	0xCE4F, 0x8732, 0xCE50, 0x8733, 0xCE51, 0x8735, 0xCE52, 0x8736,
+	0xCE53, 0x8738, 0xCE54, 0x8739, 0xCE55, 0x873A, 0xCE56, 0x873C,
+	0xCE57, 0x873D, 0xCE58, 0x8740, 0xCE59, 0x8741, 0xCE5A, 0x8742,
+	0xCE5B, 0x8743, 0xCE5C, 0x8744, 0xCE5D, 0x8745, 0xCE5E, 0x8746,
+	0xCE5F, 0x874A, 0xCE60, 0x874B, 0xCE61, 0x874D, 0xCE62, 0x874F,
+	0xCE63, 0x8750, 0xCE64, 0x8751, 0xCE65, 0x8752, 0xCE66, 0x8754,
+	0xCE67, 0x8755, 0xCE68, 0x8756, 0xCE69, 0x8758, 0xCE6A, 0x875A,
+	0xCE6B, 0x875B, 0xCE6C, 0x875C, 0xCE6D, 0x875D, 0xCE6E, 0x875E,
+	0xCE6F, 0x875F, 0xCE70, 0x8761, 0xCE71, 0x8762, 0xCE72, 0x8766,
+	0xCE73, 0x8767, 0xCE74, 0x8768, 0xCE75, 0x8769, 0xCE76, 0x876A,
+	0xCE77, 0x876B, 0xCE78, 0x876C, 0xCE79, 0x876D, 0xCE7A, 0x876F,
+	0xCE7B, 0x8771, 0xCE7C, 0x8772, 0xCE7D, 0x8773, 0xCE7E, 0x8775,
+	0xCE80, 0x8777, 0xCE81, 0x8778, 0xCE82, 0x8779, 0xCE83, 0x877A,
+	0xCE84, 0x877F, 0xCE85, 0x8780, 0xCE86, 0x8781, 0xCE87, 0x8784,
+	0xCE88, 0x8786, 0xCE89, 0x8787, 0xCE8A, 0x8789, 0xCE8B, 0x878A,
+	0xCE8C, 0x878C, 0xCE8D, 0x878E, 0xCE8E, 0x878F, 0xCE8F, 0x8790,
+	0xCE90, 0x8791, 0xCE91, 0x8792, 0xCE92, 0x8794, 0xCE93, 0x8795,
+	0xCE94, 0x8796, 0xCE95, 0x8798, 0xCE96, 0x8799, 0xCE97, 0x879A,
+	0xCE98, 0x879B, 0xCE99, 0x879C, 0xCE9A, 0x879D, 0xCE9B, 0x879E,
+	0xCE9C, 0x87A0, 0xCE9D, 0x87A1, 0xCE9E, 0x87A2, 0xCE9F, 0x87A3,
+	0xCEA0, 0x87A4, 0xCEA1, 0x5DCD, 0xCEA2, 0x5FAE, 0xCEA3, 0x5371,
+	0xCEA4, 0x97E6, 0xCEA5, 0x8FDD, 0xCEA6, 0x6845, 0xCEA7, 0x56F4,
+	0xCEA8, 0x552F, 0xCEA9, 0x60DF, 0xCEAA, 0x4E3A, 0xCEAB, 0x6F4D,
+	0xCEAC, 0x7EF4, 0xCEAD, 0x82C7, 0xCEAE, 0x840E, 0xCEAF, 0x59D4,
+	0xCEB0, 0x4F1F, 0xCEB1, 0x4F2A, 0xCEB2, 0x5C3E, 0xCEB3, 0x7EAC,
+	0xCEB4, 0x672A, 0xCEB5, 0x851A, 0xCEB6, 0x5473, 0xCEB7, 0x754F,
+	0xCEB8, 0x80C3, 0xCEB9, 0x5582, 0xCEBA, 0x9B4F, 0xCEBB, 0x4F4D,
+	0xCEBC, 0x6E2D, 0xCEBD, 0x8C13, 0xCEBE, 0x5C09, 0xCEBF, 0x6170,
+	0xCEC0, 0x536B, 0xCEC1, 0x761F, 0xCEC2, 0x6E29, 0xCEC3, 0x868A,
+	0xCEC4, 0x6587, 0xCEC5, 0x95FB, 0xCEC6, 0x7EB9, 0xCEC7, 0x543B,
+	0xCEC8, 0x7A33, 0xCEC9, 0x7D0A, 0xCECA, 0x95EE, 0xCECB, 0x55E1,
+	0xCECC, 0x7FC1, 0xCECD, 0x74EE, 0xCECE, 0x631D, 0xCECF, 0x8717,
+	0xCED0, 0x6DA1, 0xCED1, 0x7A9D, 0xCED2, 0x6211, 0xCED3, 0x65A1,
+	0xCED4, 0x5367, 0xCED5, 0x63E1, 0xCED6, 0x6C83, 0xCED7, 0x5DEB,
+	0xCED8, 0x545C, 0xCED9, 0x94A8, 0xCEDA, 0x4E4C, 0xCEDB, 0x6C61,
+	0xCEDC, 0x8BEC, 0xCEDD, 0x5C4B, 0xCEDE, 0x65E0, 0xCEDF, 0x829C,
+	0xCEE0, 0x68A7, 0xCEE1, 0x543E, 0xCEE2, 0x5434, 0xCEE3, 0x6BCB,
+	0xCEE4, 0x6B66, 0xCEE5, 0x4E94, 0xCEE6, 0x6342, 0xCEE7, 0x5348,
+	0xCEE8, 0x821E, 0xCEE9, 0x4F0D, 0xCEEA, 0x4FAE, 0xCEEB, 0x575E,
+	0xCEEC, 0x620A, 0xCEED, 0x96FE, 0xCEEE, 0x6664, 0xCEEF, 0x7269,
+	0xCEF0, 0x52FF, 0xCEF1, 0x52A1, 0xCEF2, 0x609F, 0xCEF3, 0x8BEF,
+	0xCEF4, 0x6614, 0xCEF5, 0x7199, 0xCEF6, 0x6790, 0xCEF7, 0x897F,
+	0xCEF8, 0x7852, 0xCEF9, 0x77FD, 0xCEFA, 0x6670, 0xCEFB, 0x563B,
+	0xCEFC, 0x5438, 0xCEFD, 0x9521, 0xCEFE, 0x727A, 0xCF40, 0x87A5,
+	0xCF41, 0x87A6, 0xCF42, 0x87A7, 0xCF43, 0x87A9, 0xCF44, 0x87AA,
+	0xCF45, 0x87AE, 0xCF46, 0x87B0, 0xCF47, 0x87B1, 0xCF48, 0x87B2,
+	0xCF49, 0x87B4, 0xCF4A, 0x87B6, 0xCF4B, 0x87B7, 0xCF4C, 0x87B8,
+	0xCF4D, 0x87B9, 0xCF4E, 0x87BB, 0xCF4F, 0x87BC, 0xCF50, 0x87BE,
+	0xCF51, 0x87BF, 0xCF52, 0x87C1, 0xCF53, 0x87C2, 0xCF54, 0x87C3,
+	0xCF55, 0x87C4, 0xCF56, 0x87C5, 0xCF57, 0x87C7, 0xCF58, 0x87C8,
+	0xCF59, 0x87C9, 0xCF5A, 0x87CC, 0xCF5B, 0x87CD, 0xCF5C, 0x87CE,
+	0xCF5D, 0x87CF, 0xCF5E, 0x87D0, 0xCF5F, 0x87D4, 0xCF60, 0x87D5,
+	0xCF61, 0x87D6, 0xCF62, 0x87D7, 0xCF63, 0x87D8, 0xCF64, 0x87D9,
+	0xCF65, 0x87DA, 0xCF66, 0x87DC, 0xCF67, 0x87DD, 0xCF68, 0x87DE,
+	0xCF69, 0x87DF, 0xCF6A, 0x87E1, 0xCF6B, 0x87E2, 0xCF6C, 0x87E3,
+	0xCF6D, 0x87E4, 0xCF6E, 0x87E6, 0xCF6F, 0x87E7, 0xCF70, 0x87E8,
+	0xCF71, 0x87E9, 0xCF72, 0x87EB, 0xCF73, 0x87EC, 0xCF74, 0x87ED,
+	0xCF75, 0x87EF, 0xCF76, 0x87F0, 0xCF77, 0x87F1, 0xCF78, 0x87F2,
+	0xCF79, 0x87F3, 0xCF7A, 0x87F4, 0xCF7B, 0x87F5, 0xCF7C, 0x87F6,
+	0xCF7D, 0x87F7, 0xCF7E, 0x87F8, 0xCF80, 0x87FA, 0xCF81, 0x87FB,
+	0xCF82, 0x87FC, 0xCF83, 0x87FD, 0xCF84, 0x87FF, 0xCF85, 0x8800,
+	0xCF86, 0x8801, 0xCF87, 0x8802, 0xCF88, 0x8804, 0xCF89, 0x8805,
+	0xCF8A, 0x8806, 0xCF8B, 0x8807, 0xCF8C, 0x8808, 0xCF8D, 0x8809,
+	0xCF8E, 0x880B, 0xCF8F, 0x880C, 0xCF90, 0x880D, 0xCF91, 0x880E,
+	0xCF92, 0x880F, 0xCF93, 0x8810, 0xCF94, 0x8811, 0xCF95, 0x8812,
+	0xCF96, 0x8814, 0xCF97, 0x8817, 0xCF98, 0x8818, 0xCF99, 0x8819,
+	0xCF9A, 0x881A, 0xCF9B, 0x881C, 0xCF9C, 0x881D, 0xCF9D, 0x881E,
+	0xCF9E, 0x881F, 0xCF9F, 0x8820, 0xCFA0, 0x8823, 0xCFA1, 0x7A00,
+	0xCFA2, 0x606F, 0xCFA3, 0x5E0C, 0xCFA4, 0x6089, 0xCFA5, 0x819D,
+	0xCFA6, 0x5915, 0xCFA7, 0x60DC, 0xCFA8, 0x7184, 0xCFA9, 0x70EF,
+	0xCFAA, 0x6EAA, 0xCFAB, 0x6C50, 0xCFAC, 0x7280, 0xCFAD, 0x6A84,
+	0xCFAE, 0x88AD, 0xCFAF, 0x5E2D, 0xCFB0, 0x4E60, 0xCFB1, 0x5AB3,
+	0xCFB2, 0x559C, 0xCFB3, 0x94E3, 0xCFB4, 0x6D17, 0xCFB5, 0x7CFB,
+	0xCFB6, 0x9699, 0xCFB7, 0x620F, 0xCFB8, 0x7EC6, 0xCFB9, 0x778E,
+	0xCFBA, 0x867E, 0xCFBB, 0x5323, 0xCFBC, 0x971E, 0xCFBD, 0x8F96,
+	0xCFBE, 0x6687, 0xCFBF, 0x5CE1, 0xCFC0, 0x4FA0, 0xCFC1, 0x72ED,
+	0xCFC2, 0x4E0B, 0xCFC3, 0x53A6, 0xCFC4, 0x590F, 0xCFC5, 0x5413,
+	0xCFC6, 0x6380, 0xCFC7, 0x9528, 0xCFC8, 0x5148, 0xCFC9, 0x4ED9,
+	0xCFCA, 0x9C9C, 0xCFCB, 0x7EA4, 0xCFCC, 0x54B8, 0xCFCD, 0x8D24,
+	0xCFCE, 0x8854, 0xCFCF, 0x8237, 0xCFD0, 0x95F2, 0xCFD1, 0x6D8E,
+	0xCFD2, 0x5F26, 0xCFD3, 0x5ACC, 0xCFD4, 0x663E, 0xCFD5, 0x9669,
+	0xCFD6, 0x73B0, 0xCFD7, 0x732E, 0xCFD8, 0x53BF, 0xCFD9, 0x817A,
+	0xCFDA, 0x9985, 0xCFDB, 0x7FA1, 0xCFDC, 0x5BAA, 0xCFDD, 0x9677,
+	0xCFDE, 0x9650, 0xCFDF, 0x7EBF, 0xCFE0, 0x76F8, 0xCFE1, 0x53A2,
+	0xCFE2, 0x9576, 0xCFE3, 0x9999, 0xCFE4, 0x7BB1, 0xCFE5, 0x8944,
+	0xCFE6, 0x6E58, 0xCFE7, 0x4E61, 0xCFE8, 0x7FD4, 0xCFE9, 0x7965,
+	0xCFEA, 0x8BE6, 0xCFEB, 0x60F3, 0xCFEC, 0x54CD, 0xCFED, 0x4EAB,
+	0xCFEE, 0x9879, 0xCFEF, 0x5DF7, 0xCFF0, 0x6A61, 0xCFF1, 0x50CF,
+	0xCFF2, 0x5411, 0xCFF3, 0x8C61, 0xCFF4, 0x8427, 0xCFF5, 0x785D,
+	0xCFF6, 0x9704, 0xCFF7, 0x524A, 0xCFF8, 0x54EE, 0xCFF9, 0x56A3,
+	0xCFFA, 0x9500, 0xCFFB, 0x6D88, 0xCFFC, 0x5BB5, 0xCFFD, 0x6DC6,
+	0xCFFE, 0x6653, 0xD040, 0x8824, 0xD041, 0x8825, 0xD042, 0x8826,
+	0xD043, 0x8827, 0xD044, 0x8828, 0xD045, 0x8829, 0xD046, 0x882A,
+	0xD047, 0x882B, 0xD048, 0x882C, 0xD049, 0x882D, 0xD04A, 0x882E,
+	0xD04B, 0x882F, 0xD04C, 0x8830, 0xD04D, 0x8831, 0xD04E, 0x8833,
+	0xD04F, 0x8834, 0xD050, 0x8835, 0xD051, 0x8836, 0xD052, 0x8837,
+	0xD053, 0x8838, 0xD054, 0x883A, 0xD055, 0x883B, 0xD056, 0x883D,
+	0xD057, 0x883E, 0xD058, 0x883F, 0xD059, 0x8841, 0xD05A, 0x8842,
+	0xD05B, 0x8843, 0xD05C, 0x8846, 0xD05D, 0x8847, 0xD05E, 0x8848,
+	0xD05F, 0x8849, 0xD060, 0x884A, 0xD061, 0x884B, 0xD062, 0x884E,
+	0xD063, 0x884F, 0xD064, 0x8850, 0xD065, 0x8851, 0xD066, 0x8852,
+	0xD067, 0x8853, 0xD068, 0x8855, 0xD069, 0x8856, 0xD06A, 0x8858,
+	0xD06B, 0x885A, 0xD06C, 0x885B, 0xD06D, 0x885C, 0xD06E, 0x885D,
+	0xD06F, 0x885E, 0xD070, 0x885F, 0xD071, 0x8860, 0xD072, 0x8866,
+	0xD073, 0x8867, 0xD074, 0x886A, 0xD075, 0x886D, 0xD076, 0x886F,
+	0xD077, 0x8871, 0xD078, 0x8873, 0xD079, 0x8874, 0xD07A, 0x8875,
+	0xD07B, 0x8876, 0xD07C, 0x8878, 0xD07D, 0x8879, 0xD07E, 0x887A,
+	0xD080, 0x887B, 0xD081, 0x887C, 0xD082, 0x8880, 0xD083, 0x8883,
+	0xD084, 0x8886, 0xD085, 0x8887, 0xD086, 0x8889, 0xD087, 0x888A,
+	0xD088, 0x888C, 0xD089, 0x888E, 0xD08A, 0x888F, 0xD08B, 0x8890,
+	0xD08C, 0x8891, 0xD08D, 0x8893, 0xD08E, 0x8894, 0xD08F, 0x8895,
+	0xD090, 0x8897, 0xD091, 0x8898, 0xD092, 0x8899, 0xD093, 0x889A,
+	0xD094, 0x889B, 0xD095, 0x889D, 0xD096, 0x889E, 0xD097, 0x889F,
+	0xD098, 0x88A0, 0xD099, 0x88A1, 0xD09A, 0x88A3, 0xD09B, 0x88A5,
+	0xD09C, 0x88A6, 0xD09D, 0x88A7, 0xD09E, 0x88A8, 0xD09F, 0x88A9,
+	0xD0A0, 0x88AA, 0xD0A1, 0x5C0F, 0xD0A2, 0x5B5D, 0xD0A3, 0x6821,
+	0xD0A4, 0x8096, 0xD0A5, 0x5578, 0xD0A6, 0x7B11, 0xD0A7, 0x6548,
+	0xD0A8, 0x6954, 0xD0A9, 0x4E9B, 0xD0AA, 0x6B47, 0xD0AB, 0x874E,
+	0xD0AC, 0x978B, 0xD0AD, 0x534F, 0xD0AE, 0x631F, 0xD0AF, 0x643A,
+	0xD0B0, 0x90AA, 0xD0B1, 0x659C, 0xD0B2, 0x80C1, 0xD0B3, 0x8C10,
+	0xD0B4, 0x5199, 0xD0B5, 0x68B0, 0xD0B6, 0x5378, 0xD0B7, 0x87F9,
+	0xD0B8, 0x61C8, 0xD0B9, 0x6CC4, 0xD0BA, 0x6CFB, 0xD0BB, 0x8C22,
+	0xD0BC, 0x5C51, 0xD0BD, 0x85AA, 0xD0BE, 0x82AF, 0xD0BF, 0x950C,
+	0xD0C0, 0x6B23, 0xD0C1, 0x8F9B, 0xD0C2, 0x65B0, 0xD0C3, 0x5FFB,
+	0xD0C4, 0x5FC3, 0xD0C5, 0x4FE1, 0xD0C6, 0x8845, 0xD0C7, 0x661F,
+	0xD0C8, 0x8165, 0xD0C9, 0x7329, 0xD0CA, 0x60FA, 0xD0CB, 0x5174,
+	0xD0CC, 0x5211, 0xD0CD, 0x578B, 0xD0CE, 0x5F62, 0xD0CF, 0x90A2,
+	0xD0D0, 0x884C, 0xD0D1, 0x9192, 0xD0D2, 0x5E78, 0xD0D3, 0x674F,
+	0xD0D4, 0x6027, 0xD0D5, 0x59D3, 0xD0D6, 0x5144, 0xD0D7, 0x51F6,
+	0xD0D8, 0x80F8, 0xD0D9, 0x5308, 0xD0DA, 0x6C79, 0xD0DB, 0x96C4,
+	0xD0DC, 0x718A, 0xD0DD, 0x4F11, 0xD0DE, 0x4FEE, 0xD0DF, 0x7F9E,
+	0xD0E0, 0x673D, 0xD0E1, 0x55C5, 0xD0E2, 0x9508, 0xD0E3, 0x79C0,
+	0xD0E4, 0x8896, 0xD0E5, 0x7EE3, 0xD0E6, 0x589F, 0xD0E7, 0x620C,
+	0xD0E8, 0x9700, 0xD0E9, 0x865A, 0xD0EA, 0x5618, 0xD0EB, 0x987B,
+	0xD0EC, 0x5F90, 0xD0ED, 0x8BB8, 0xD0EE, 0x84C4, 0xD0EF, 0x9157,
+	0xD0F0, 0x53D9, 0xD0F1, 0x65ED, 0xD0F2, 0x5E8F, 0xD0F3, 0x755C,
+	0xD0F4, 0x6064, 0xD0F5, 0x7D6E, 0xD0F6, 0x5A7F, 0xD0F7, 0x7EEA,
+	0xD0F8, 0x7EED, 0xD0F9, 0x8F69, 0xD0FA, 0x55A7, 0xD0FB, 0x5BA3,
+	0xD0FC, 0x60AC, 0xD0FD, 0x65CB, 0xD0FE, 0x7384, 0xD140, 0x88AC,
+	0xD141, 0x88AE, 0xD142, 0x88AF, 0xD143, 0x88B0, 0xD144, 0x88B2,
+	0xD145, 0x88B3, 0xD146, 0x88B4, 0xD147, 0x88B5, 0xD148, 0x88B6,
+	0xD149, 0x88B8, 0xD14A, 0x88B9, 0xD14B, 0x88BA, 0xD14C, 0x88BB,
+	0xD14D, 0x88BD, 0xD14E, 0x88BE, 0xD14F, 0x88BF, 0xD150, 0x88C0,
+	0xD151, 0x88C3, 0xD152, 0x88C4, 0xD153, 0x88C7, 0xD154, 0x88C8,
+	0xD155, 0x88CA, 0xD156, 0x88CB, 0xD157, 0x88CC, 0xD158, 0x88CD,
+	0xD159, 0x88CF, 0xD15A, 0x88D0, 0xD15B, 0x88D1, 0xD15C, 0x88D3,
+	0xD15D, 0x88D6, 0xD15E, 0x88D7, 0xD15F, 0x88DA, 0xD160, 0x88DB,
+	0xD161, 0x88DC, 0xD162, 0x88DD, 0xD163, 0x88DE, 0xD164, 0x88E0,
+	0xD165, 0x88E1, 0xD166, 0x88E6, 0xD167, 0x88E7, 0xD168, 0x88E9,
+	0xD169, 0x88EA, 0xD16A, 0x88EB, 0xD16B, 0x88EC, 0xD16C, 0x88ED,
+	0xD16D, 0x88EE, 0xD16E, 0x88EF, 0xD16F, 0x88F2, 0xD170, 0x88F5,
+	0xD171, 0x88F6, 0xD172, 0x88F7, 0xD173, 0x88FA, 0xD174, 0x88FB,
+	0xD175, 0x88FD, 0xD176, 0x88FF, 0xD177, 0x8900, 0xD178, 0x8901,
+	0xD179, 0x8903, 0xD17A, 0x8904, 0xD17B, 0x8905, 0xD17C, 0x8906,
+	0xD17D, 0x8907, 0xD17E, 0x8908, 0xD180, 0x8909, 0xD181, 0x890B,
+	0xD182, 0x890C, 0xD183, 0x890D, 0xD184, 0x890E, 0xD185, 0x890F,
+	0xD186, 0x8911, 0xD187, 0x8914, 0xD188, 0x8915, 0xD189, 0x8916,
+	0xD18A, 0x8917, 0xD18B, 0x8918, 0xD18C, 0x891C, 0xD18D, 0x891D,
+	0xD18E, 0x891E, 0xD18F, 0x891F, 0xD190, 0x8920, 0xD191, 0x8922,
+	0xD192, 0x8923, 0xD193, 0x8924, 0xD194, 0x8926, 0xD195, 0x8927,
+	0xD196, 0x8928, 0xD197, 0x8929, 0xD198, 0x892C, 0xD199, 0x892D,
+	0xD19A, 0x892E, 0xD19B, 0x892F, 0xD19C, 0x8931, 0xD19D, 0x8932,
+	0xD19E, 0x8933, 0xD19F, 0x8935, 0xD1A0, 0x8937, 0xD1A1, 0x9009,
+	0xD1A2, 0x7663, 0xD1A3, 0x7729, 0xD1A4, 0x7EDA, 0xD1A5, 0x9774,
+	0xD1A6, 0x859B, 0xD1A7, 0x5B66, 0xD1A8, 0x7A74, 0xD1A9, 0x96EA,
+	0xD1AA, 0x8840, 0xD1AB, 0x52CB, 0xD1AC, 0x718F, 0xD1AD, 0x5FAA,
+	0xD1AE, 0x65EC, 0xD1AF, 0x8BE2, 0xD1B0, 0x5BFB, 0xD1B1, 0x9A6F,
+	0xD1B2, 0x5DE1, 0xD1B3, 0x6B89, 0xD1B4, 0x6C5B, 0xD1B5, 0x8BAD,
+	0xD1B6, 0x8BAF, 0xD1B7, 0x900A, 0xD1B8, 0x8FC5, 0xD1B9, 0x538B,
+	0xD1BA, 0x62BC, 0xD1BB, 0x9E26, 0xD1BC, 0x9E2D, 0xD1BD, 0x5440,
+	0xD1BE, 0x4E2B, 0xD1BF, 0x82BD, 0xD1C0, 0x7259, 0xD1C1, 0x869C,
+	0xD1C2, 0x5D16, 0xD1C3, 0x8859, 0xD1C4, 0x6DAF, 0xD1C5, 0x96C5,
+	0xD1C6, 0x54D1, 0xD1C7, 0x4E9A, 0xD1C8, 0x8BB6, 0xD1C9, 0x7109,
+	0xD1CA, 0x54BD, 0xD1CB, 0x9609, 0xD1CC, 0x70DF, 0xD1CD, 0x6DF9,
+	0xD1CE, 0x76D0, 0xD1CF, 0x4E25, 0xD1D0, 0x7814, 0xD1D1, 0x8712,
+	0xD1D2, 0x5CA9, 0xD1D3, 0x5EF6, 0xD1D4, 0x8A00, 0xD1D5, 0x989C,
+	0xD1D6, 0x960E, 0xD1D7, 0x708E, 0xD1D8, 0x6CBF, 0xD1D9, 0x5944,
+	0xD1DA, 0x63A9, 0xD1DB, 0x773C, 0xD1DC, 0x884D, 0xD1DD, 0x6F14,
+	0xD1DE, 0x8273, 0xD1DF, 0x5830, 0xD1E0, 0x71D5, 0xD1E1, 0x538C,
+	0xD1E2, 0x781A, 0xD1E3, 0x96C1, 0xD1E4, 0x5501, 0xD1E5, 0x5F66,
+	0xD1E6, 0x7130, 0xD1E7, 0x5BB4, 0xD1E8, 0x8C1A, 0xD1E9, 0x9A8C,
+	0xD1EA, 0x6B83, 0xD1EB, 0x592E, 0xD1EC, 0x9E2F, 0xD1ED, 0x79E7,
+	0xD1EE, 0x6768, 0xD1EF, 0x626C, 0xD1F0, 0x4F6F, 0xD1F1, 0x75A1,
+	0xD1F2, 0x7F8A, 0xD1F3, 0x6D0B, 0xD1F4, 0x9633, 0xD1F5, 0x6C27,
+	0xD1F6, 0x4EF0, 0xD1F7, 0x75D2, 0xD1F8, 0x517B, 0xD1F9, 0x6837,
+	0xD1FA, 0x6F3E, 0xD1FB, 0x9080, 0xD1FC, 0x8170, 0xD1FD, 0x5996,
+	0xD1FE, 0x7476, 0xD240, 0x8938, 0xD241, 0x8939, 0xD242, 0x893A,
+	0xD243, 0x893B, 0xD244, 0x893C, 0xD245, 0x893D, 0xD246, 0x893E,
+	0xD247, 0x893F, 0xD248, 0x8940, 0xD249, 0x8942, 0xD24A, 0x8943,
+	0xD24B, 0x8945, 0xD24C, 0x8946, 0xD24D, 0x8947, 0xD24E, 0x8948,
+	0xD24F, 0x8949, 0xD250, 0x894A, 0xD251, 0x894B, 0xD252, 0x894C,
+	0xD253, 0x894D, 0xD254, 0x894E, 0xD255, 0x894F, 0xD256, 0x8950,
+	0xD257, 0x8951, 0xD258, 0x8952, 0xD259, 0x8953, 0xD25A, 0x8954,
+	0xD25B, 0x8955, 0xD25C, 0x8956, 0xD25D, 0x8957, 0xD25E, 0x8958,
+	0xD25F, 0x8959, 0xD260, 0x895A, 0xD261, 0x895B, 0xD262, 0x895C,
+	0xD263, 0x895D, 0xD264, 0x8960, 0xD265, 0x8961, 0xD266, 0x8962,
+	0xD267, 0x8963, 0xD268, 0x8964, 0xD269, 0x8965, 0xD26A, 0x8967,
+	0xD26B, 0x8968, 0xD26C, 0x8969, 0xD26D, 0x896A, 0xD26E, 0x896B,
+	0xD26F, 0x896C, 0xD270, 0x896D, 0xD271, 0x896E, 0xD272, 0x896F,
+	0xD273, 0x8970, 0xD274, 0x8971, 0xD275, 0x8972, 0xD276, 0x8973,
+	0xD277, 0x8974, 0xD278, 0x8975, 0xD279, 0x8976, 0xD27A, 0x8977,
+	0xD27B, 0x8978, 0xD27C, 0x8979, 0xD27D, 0x897A, 0xD27E, 0x897C,
+	0xD280, 0x897D, 0xD281, 0x897E, 0xD282, 0x8980, 0xD283, 0x8982,
+	0xD284, 0x8984, 0xD285, 0x8985, 0xD286, 0x8987, 0xD287, 0x8988,
+	0xD288, 0x8989, 0xD289, 0x898A, 0xD28A, 0x898B, 0xD28B, 0x898C,
+	0xD28C, 0x898D, 0xD28D, 0x898E, 0xD28E, 0x898F, 0xD28F, 0x8990,
+	0xD290, 0x8991, 0xD291, 0x8992, 0xD292, 0x8993, 0xD293, 0x8994,
+	0xD294, 0x8995, 0xD295, 0x8996, 0xD296, 0x8997, 0xD297, 0x8998,
+	0xD298, 0x8999, 0xD299, 0x899A, 0xD29A, 0x899B, 0xD29B, 0x899C,
+	0xD29C, 0x899D, 0xD29D, 0x899E, 0xD29E, 0x899F, 0xD29F, 0x89A0,
+	0xD2A0, 0x89A1, 0xD2A1, 0x6447, 0xD2A2, 0x5C27, 0xD2A3, 0x9065,
+	0xD2A4, 0x7A91, 0xD2A5, 0x8C23, 0xD2A6, 0x59DA, 0xD2A7, 0x54AC,
+	0xD2A8, 0x8200, 0xD2A9, 0x836F, 0xD2AA, 0x8981, 0xD2AB, 0x8000,
+	0xD2AC, 0x6930, 0xD2AD, 0x564E, 0xD2AE, 0x8036, 0xD2AF, 0x7237,
+	0xD2B0, 0x91CE, 0xD2B1, 0x51B6, 0xD2B2, 0x4E5F, 0xD2B3, 0x9875,
+	0xD2B4, 0x6396, 0xD2B5, 0x4E1A, 0xD2B6, 0x53F6, 0xD2B7, 0x66F3,
+	0xD2B8, 0x814B, 0xD2B9, 0x591C, 0xD2BA, 0x6DB2, 0xD2BB, 0x4E00,
+	0xD2BC, 0x58F9, 0xD2BD, 0x533B, 0xD2BE, 0x63D6, 0xD2BF, 0x94F1,
+	0xD2C0, 0x4F9D, 0xD2C1, 0x4F0A, 0xD2C2, 0x8863, 0xD2C3, 0x9890,
+	0xD2C4, 0x5937, 0xD2C5, 0x9057, 0xD2C6, 0x79FB, 0xD2C7, 0x4EEA,
+	0xD2C8, 0x80F0, 0xD2C9, 0x7591, 0xD2CA, 0x6C82, 0xD2CB, 0x5B9C,
+	0xD2CC, 0x59E8, 0xD2CD, 0x5F5D, 0xD2CE, 0x6905, 0xD2CF, 0x8681,
+	0xD2D0, 0x501A, 0xD2D1, 0x5DF2, 0xD2D2, 0x4E59, 0xD2D3, 0x77E3,
+	0xD2D4, 0x4EE5, 0xD2D5, 0x827A, 0xD2D6, 0x6291, 0xD2D7, 0x6613,
+	0xD2D8, 0x9091, 0xD2D9, 0x5C79, 0xD2DA, 0x4EBF, 0xD2DB, 0x5F79,
+	0xD2DC, 0x81C6, 0xD2DD, 0x9038, 0xD2DE, 0x8084, 0xD2DF, 0x75AB,
+	0xD2E0, 0x4EA6, 0xD2E1, 0x88D4, 0xD2E2, 0x610F, 0xD2E3, 0x6BC5,
+	0xD2E4, 0x5FC6, 0xD2E5, 0x4E49, 0xD2E6, 0x76CA, 0xD2E7, 0x6EA2,
+	0xD2E8, 0x8BE3, 0xD2E9, 0x8BAE, 0xD2EA, 0x8C0A, 0xD2EB, 0x8BD1,
+	0xD2EC, 0x5F02, 0xD2ED, 0x7FFC, 0xD2EE, 0x7FCC, 0xD2EF, 0x7ECE,
+	0xD2F0, 0x8335, 0xD2F1, 0x836B, 0xD2F2, 0x56E0, 0xD2F3, 0x6BB7,
+	0xD2F4, 0x97F3, 0xD2F5, 0x9634, 0xD2F6, 0x59FB, 0xD2F7, 0x541F,
+	0xD2F8, 0x94F6, 0xD2F9, 0x6DEB, 0xD2FA, 0x5BC5, 0xD2FB, 0x996E,
+	0xD2FC, 0x5C39, 0xD2FD, 0x5F15, 0xD2FE, 0x9690, 0xD340, 0x89A2,
+	0xD341, 0x89A3, 0xD342, 0x89A4, 0xD343, 0x89A5, 0xD344, 0x89A6,
+	0xD345, 0x89A7, 0xD346, 0x89A8, 0xD347, 0x89A9, 0xD348, 0x89AA,
+	0xD349, 0x89AB, 0xD34A, 0x89AC, 0xD34B, 0x89AD, 0xD34C, 0x89AE,
+	0xD34D, 0x89AF, 0xD34E, 0x89B0, 0xD34F, 0x89B1, 0xD350, 0x89B2,
+	0xD351, 0x89B3, 0xD352, 0x89B4, 0xD353, 0x89B5, 0xD354, 0x89B6,
+	0xD355, 0x89B7, 0xD356, 0x89B8, 0xD357, 0x89B9, 0xD358, 0x89BA,
+	0xD359, 0x89BB, 0xD35A, 0x89BC, 0xD35B, 0x89BD, 0xD35C, 0x89BE,
+	0xD35D, 0x89BF, 0xD35E, 0x89C0, 0xD35F, 0x89C3, 0xD360, 0x89CD,
+	0xD361, 0x89D3, 0xD362, 0x89D4, 0xD363, 0x89D5, 0xD364, 0x89D7,
+	0xD365, 0x89D8, 0xD366, 0x89D9, 0xD367, 0x89DB, 0xD368, 0x89DD,
+	0xD369, 0x89DF, 0xD36A, 0x89E0, 0xD36B, 0x89E1, 0xD36C, 0x89E2,
+	0xD36D, 0x89E4, 0xD36E, 0x89E7, 0xD36F, 0x89E8, 0xD370, 0x89E9,
+	0xD371, 0x89EA, 0xD372, 0x89EC, 0xD373, 0x89ED, 0xD374, 0x89EE,
+	0xD375, 0x89F0, 0xD376, 0x89F1, 0xD377, 0x89F2, 0xD378, 0x89F4,
+	0xD379, 0x89F5, 0xD37A, 0x89F6, 0xD37B, 0x89F7, 0xD37C, 0x89F8,
+	0xD37D, 0x89F9, 0xD37E, 0x89FA, 0xD380, 0x89FB, 0xD381, 0x89FC,
+	0xD382, 0x89FD, 0xD383, 0x89FE, 0xD384, 0x89FF, 0xD385, 0x8A01,
+	0xD386, 0x8A02, 0xD387, 0x8A03, 0xD388, 0x8A04, 0xD389, 0x8A05,
+	0xD38A, 0x8A06, 0xD38B, 0x8A08, 0xD38C, 0x8A09, 0xD38D, 0x8A0A,
+	0xD38E, 0x8A0B, 0xD38F, 0x8A0C, 0xD390, 0x8A0D, 0xD391, 0x8A0E,
+	0xD392, 0x8A0F, 0xD393, 0x8A10, 0xD394, 0x8A11, 0xD395, 0x8A12,
+	0xD396, 0x8A13, 0xD397, 0x8A14, 0xD398, 0x8A15, 0xD399, 0x8A16,
+	0xD39A, 0x8A17, 0xD39B, 0x8A18, 0xD39C, 0x8A19, 0xD39D, 0x8A1A,
+	0xD39E, 0x8A1B, 0xD39F, 0x8A1C, 0xD3A0, 0x8A1D, 0xD3A1, 0x5370,
+	0xD3A2, 0x82F1, 0xD3A3, 0x6A31, 0xD3A4, 0x5A74, 0xD3A5, 0x9E70,
+	0xD3A6, 0x5E94, 0xD3A7, 0x7F28, 0xD3A8, 0x83B9, 0xD3A9, 0x8424,
+	0xD3AA, 0x8425, 0xD3AB, 0x8367, 0xD3AC, 0x8747, 0xD3AD, 0x8FCE,
+	0xD3AE, 0x8D62, 0xD3AF, 0x76C8, 0xD3B0, 0x5F71, 0xD3B1, 0x9896,
+	0xD3B2, 0x786C, 0xD3B3, 0x6620, 0xD3B4, 0x54DF, 0xD3B5, 0x62E5,
+	0xD3B6, 0x4F63, 0xD3B7, 0x81C3, 0xD3B8, 0x75C8, 0xD3B9, 0x5EB8,
+	0xD3BA, 0x96CD, 0xD3BB, 0x8E0A, 0xD3BC, 0x86F9, 0xD3BD, 0x548F,
+	0xD3BE, 0x6CF3, 0xD3BF, 0x6D8C, 0xD3C0, 0x6C38, 0xD3C1, 0x607F,
+	0xD3C2, 0x52C7, 0xD3C3, 0x7528, 0xD3C4, 0x5E7D, 0xD3C5, 0x4F18,
+	0xD3C6, 0x60A0, 0xD3C7, 0x5FE7, 0xD3C8, 0x5C24, 0xD3C9, 0x7531,
+	0xD3CA, 0x90AE, 0xD3CB, 0x94C0, 0xD3CC, 0x72B9, 0xD3CD, 0x6CB9,
+	0xD3CE, 0x6E38, 0xD3CF, 0x9149, 0xD3D0, 0x6709, 0xD3D1, 0x53CB,
+	0xD3D2, 0x53F3, 0xD3D3, 0x4F51, 0xD3D4, 0x91C9, 0xD3D5, 0x8BF1,
+	0xD3D6, 0x53C8, 0xD3D7, 0x5E7C, 0xD3D8, 0x8FC2, 0xD3D9, 0x6DE4,
+	0xD3DA, 0x4E8E, 0xD3DB, 0x76C2, 0xD3DC, 0x6986, 0xD3DD, 0x865E,
+	0xD3DE, 0x611A, 0xD3DF, 0x8206, 0xD3E0, 0x4F59, 0xD3E1, 0x4FDE,
+	0xD3E2, 0x903E, 0xD3E3, 0x9C7C, 0xD3E4, 0x6109, 0xD3E5, 0x6E1D,
+	0xD3E6, 0x6E14, 0xD3E7, 0x9685, 0xD3E8, 0x4E88, 0xD3E9, 0x5A31,
+	0xD3EA, 0x96E8, 0xD3EB, 0x4E0E, 0xD3EC, 0x5C7F, 0xD3ED, 0x79B9,
+	0xD3EE, 0x5B87, 0xD3EF, 0x8BED, 0xD3F0, 0x7FBD, 0xD3F1, 0x7389,
+	0xD3F2, 0x57DF, 0xD3F3, 0x828B, 0xD3F4, 0x90C1, 0xD3F5, 0x5401,
+	0xD3F6, 0x9047, 0xD3F7, 0x55BB, 0xD3F8, 0x5CEA, 0xD3F9, 0x5FA1,
+	0xD3FA, 0x6108, 0xD3FB, 0x6B32, 0xD3FC, 0x72F1, 0xD3FD, 0x80B2,
+	0xD3FE, 0x8A89, 0xD440, 0x8A1E, 0xD441, 0x8A1F, 0xD442, 0x8A20,
+	0xD443, 0x8A21, 0xD444, 0x8A22, 0xD445, 0x8A23, 0xD446, 0x8A24,
+	0xD447, 0x8A25, 0xD448, 0x8A26, 0xD449, 0x8A27, 0xD44A, 0x8A28,
+	0xD44B, 0x8A29, 0xD44C, 0x8A2A, 0xD44D, 0x8A2B, 0xD44E, 0x8A2C,
+	0xD44F, 0x8A2D, 0xD450, 0x8A2E, 0xD451, 0x8A2F, 0xD452, 0x8A30,
+	0xD453, 0x8A31, 0xD454, 0x8A32, 0xD455, 0x8A33, 0xD456, 0x8A34,
+	0xD457, 0x8A35, 0xD458, 0x8A36, 0xD459, 0x8A37, 0xD45A, 0x8A38,
+	0xD45B, 0x8A39, 0xD45C, 0x8A3A, 0xD45D, 0x8A3B, 0xD45E, 0x8A3C,
+	0xD45F, 0x8A3D, 0xD460, 0x8A3F, 0xD461, 0x8A40, 0xD462, 0x8A41,
+	0xD463, 0x8A42, 0xD464, 0x8A43, 0xD465, 0x8A44, 0xD466, 0x8A45,
+	0xD467, 0x8A46, 0xD468, 0x8A47, 0xD469, 0x8A49, 0xD46A, 0x8A4A,
+	0xD46B, 0x8A4B, 0xD46C, 0x8A4C, 0xD46D, 0x8A4D, 0xD46E, 0x8A4E,
+	0xD46F, 0x8A4F, 0xD470, 0x8A50, 0xD471, 0x8A51, 0xD472, 0x8A52,
+	0xD473, 0x8A53, 0xD474, 0x8A54, 0xD475, 0x8A55, 0xD476, 0x8A56,
+	0xD477, 0x8A57, 0xD478, 0x8A58, 0xD479, 0x8A59, 0xD47A, 0x8A5A,
+	0xD47B, 0x8A5B, 0xD47C, 0x8A5C, 0xD47D, 0x8A5D, 0xD47E, 0x8A5E,
+	0xD480, 0x8A5F, 0xD481, 0x8A60, 0xD482, 0x8A61, 0xD483, 0x8A62,
+	0xD484, 0x8A63, 0xD485, 0x8A64, 0xD486, 0x8A65, 0xD487, 0x8A66,
+	0xD488, 0x8A67, 0xD489, 0x8A68, 0xD48A, 0x8A69, 0xD48B, 0x8A6A,
+	0xD48C, 0x8A6B, 0xD48D, 0x8A6C, 0xD48E, 0x8A6D, 0xD48F, 0x8A6E,
+	0xD490, 0x8A6F, 0xD491, 0x8A70, 0xD492, 0x8A71, 0xD493, 0x8A72,
+	0xD494, 0x8A73, 0xD495, 0x8A74, 0xD496, 0x8A75, 0xD497, 0x8A76,
+	0xD498, 0x8A77, 0xD499, 0x8A78, 0xD49A, 0x8A7A, 0xD49B, 0x8A7B,
+	0xD49C, 0x8A7C, 0xD49D, 0x8A7D, 0xD49E, 0x8A7E, 0xD49F, 0x8A7F,
+	0xD4A0, 0x8A80, 0xD4A1, 0x6D74, 0xD4A2, 0x5BD3, 0xD4A3, 0x88D5,
+	0xD4A4, 0x9884, 0xD4A5, 0x8C6B, 0xD4A6, 0x9A6D, 0xD4A7, 0x9E33,
+	0xD4A8, 0x6E0A, 0xD4A9, 0x51A4, 0xD4AA, 0x5143, 0xD4AB, 0x57A3,
+	0xD4AC, 0x8881, 0xD4AD, 0x539F, 0xD4AE, 0x63F4, 0xD4AF, 0x8F95,
+	0xD4B0, 0x56ED, 0xD4B1, 0x5458, 0xD4B2, 0x5706, 0xD4B3, 0x733F,
+	0xD4B4, 0x6E90, 0xD4B5, 0x7F18, 0xD4B6, 0x8FDC, 0xD4B7, 0x82D1,
+	0xD4B8, 0x613F, 0xD4B9, 0x6028, 0xD4BA, 0x9662, 0xD4BB, 0x66F0,
+	0xD4BC, 0x7EA6, 0xD4BD, 0x8D8A, 0xD4BE, 0x8DC3, 0xD4BF, 0x94A5,
+	0xD4C0, 0x5CB3, 0xD4C1, 0x7CA4, 0xD4C2, 0x6708, 0xD4C3, 0x60A6,
+	0xD4C4, 0x9605, 0xD4C5, 0x8018, 0xD4C6, 0x4E91, 0xD4C7, 0x90E7,
+	0xD4C8, 0x5300, 0xD4C9, 0x9668, 0xD4CA, 0x5141, 0xD4CB, 0x8FD0,
+	0xD4CC, 0x8574, 0xD4CD, 0x915D, 0xD4CE, 0x6655, 0xD4CF, 0x97F5,
+	0xD4D0, 0x5B55, 0xD4D1, 0x531D, 0xD4D2, 0x7838, 0xD4D3, 0x6742,
+	0xD4D4, 0x683D, 0xD4D5, 0x54C9, 0xD4D6, 0x707E, 0xD4D7, 0x5BB0,
+	0xD4D8, 0x8F7D, 0xD4D9, 0x518D, 0xD4DA, 0x5728, 0xD4DB, 0x54B1,
+	0xD4DC, 0x6512, 0xD4DD, 0x6682, 0xD4DE, 0x8D5E, 0xD4DF, 0x8D43,
+	0xD4E0, 0x810F, 0xD4E1, 0x846C, 0xD4E2, 0x906D, 0xD4E3, 0x7CDF,
+	0xD4E4, 0x51FF, 0xD4E5, 0x85FB, 0xD4E6, 0x67A3, 0xD4E7, 0x65E9,
+	0xD4E8, 0x6FA1, 0xD4E9, 0x86A4, 0xD4EA, 0x8E81, 0xD4EB, 0x566A,
+	0xD4EC, 0x9020, 0xD4ED, 0x7682, 0xD4EE, 0x7076, 0xD4EF, 0x71E5,
+	0xD4F0, 0x8D23, 0xD4F1, 0x62E9, 0xD4F2, 0x5219, 0xD4F3, 0x6CFD,
+	0xD4F4, 0x8D3C, 0xD4F5, 0x600E, 0xD4F6, 0x589E, 0xD4F7, 0x618E,
+	0xD4F8, 0x66FE, 0xD4F9, 0x8D60, 0xD4FA, 0x624E, 0xD4FB, 0x55B3,
+	0xD4FC, 0x6E23, 0xD4FD, 0x672D, 0xD4FE, 0x8F67, 0xD540, 0x8A81,
+	0xD541, 0x8A82, 0xD542, 0x8A83, 0xD543, 0x8A84, 0xD544, 0x8A85,
+	0xD545, 0x8A86, 0xD546, 0x8A87, 0xD547, 0x8A88, 0xD548, 0x8A8B,
+	0xD549, 0x8A8C, 0xD54A, 0x8A8D, 0xD54B, 0x8A8E, 0xD54C, 0x8A8F,
+	0xD54D, 0x8A90, 0xD54E, 0x8A91, 0xD54F, 0x8A92, 0xD550, 0x8A94,
+	0xD551, 0x8A95, 0xD552, 0x8A96, 0xD553, 0x8A97, 0xD554, 0x8A98,
+	0xD555, 0x8A99, 0xD556, 0x8A9A, 0xD557, 0x8A9B, 0xD558, 0x8A9C,
+	0xD559, 0x8A9D, 0xD55A, 0x8A9E, 0xD55B, 0x8A9F, 0xD55C, 0x8AA0,
+	0xD55D, 0x8AA1, 0xD55E, 0x8AA2, 0xD55F, 0x8AA3, 0xD560, 0x8AA4,
+	0xD561, 0x8AA5, 0xD562, 0x8AA6, 0xD563, 0x8AA7, 0xD564, 0x8AA8,
+	0xD565, 0x8AA9, 0xD566, 0x8AAA, 0xD567, 0x8AAB, 0xD568, 0x8AAC,
+	0xD569, 0x8AAD, 0xD56A, 0x8AAE, 0xD56B, 0x8AAF, 0xD56C, 0x8AB0,
+	0xD56D, 0x8AB1, 0xD56E, 0x8AB2, 0xD56F, 0x8AB3, 0xD570, 0x8AB4,
+	0xD571, 0x8AB5, 0xD572, 0x8AB6, 0xD573, 0x8AB7, 0xD574, 0x8AB8,
+	0xD575, 0x8AB9, 0xD576, 0x8ABA, 0xD577, 0x8ABB, 0xD578, 0x8ABC,
+	0xD579, 0x8ABD, 0xD57A, 0x8ABE, 0xD57B, 0x8ABF, 0xD57C, 0x8AC0,
+	0xD57D, 0x8AC1, 0xD57E, 0x8AC2, 0xD580, 0x8AC3, 0xD581, 0x8AC4,
+	0xD582, 0x8AC5, 0xD583, 0x8AC6, 0xD584, 0x8AC7, 0xD585, 0x8AC8,
+	0xD586, 0x8AC9, 0xD587, 0x8ACA, 0xD588, 0x8ACB, 0xD589, 0x8ACC,
+	0xD58A, 0x8ACD, 0xD58B, 0x8ACE, 0xD58C, 0x8ACF, 0xD58D, 0x8AD0,
+	0xD58E, 0x8AD1, 0xD58F, 0x8AD2, 0xD590, 0x8AD3, 0xD591, 0x8AD4,
+	0xD592, 0x8AD5, 0xD593, 0x8AD6, 0xD594, 0x8AD7, 0xD595, 0x8AD8,
+	0xD596, 0x8AD9, 0xD597, 0x8ADA, 0xD598, 0x8ADB, 0xD599, 0x8ADC,
+	0xD59A, 0x8ADD, 0xD59B, 0x8ADE, 0xD59C, 0x8ADF, 0xD59D, 0x8AE0,
+	0xD59E, 0x8AE1, 0xD59F, 0x8AE2, 0xD5A0, 0x8AE3, 0xD5A1, 0x94E1,
+	0xD5A2, 0x95F8, 0xD5A3, 0x7728, 0xD5A4, 0x6805, 0xD5A5, 0x69A8,
+	0xD5A6, 0x548B, 0xD5A7, 0x4E4D, 0xD5A8, 0x70B8, 0xD5A9, 0x8BC8,
+	0xD5AA, 0x6458, 0xD5AB, 0x658B, 0xD5AC, 0x5B85, 0xD5AD, 0x7A84,
+	0xD5AE, 0x503A, 0xD5AF, 0x5BE8, 0xD5B0, 0x77BB, 0xD5B1, 0x6BE1,
+	0xD5B2, 0x8A79, 0xD5B3, 0x7C98, 0xD5B4, 0x6CBE, 0xD5B5, 0x76CF,
+	0xD5B6, 0x65A9, 0xD5B7, 0x8F97, 0xD5B8, 0x5D2D, 0xD5B9, 0x5C55,
+	0xD5BA, 0x8638, 0xD5BB, 0x6808, 0xD5BC, 0x5360, 0xD5BD, 0x6218,
+	0xD5BE, 0x7AD9, 0xD5BF, 0x6E5B, 0xD5C0, 0x7EFD, 0xD5C1, 0x6A1F,
+	0xD5C2, 0x7AE0, 0xD5C3, 0x5F70, 0xD5C4, 0x6F33, 0xD5C5, 0x5F20,
+	0xD5C6, 0x638C, 0xD5C7, 0x6DA8, 0xD5C8, 0x6756, 0xD5C9, 0x4E08,
+	0xD5CA, 0x5E10, 0xD5CB, 0x8D26, 0xD5CC, 0x4ED7, 0xD5CD, 0x80C0,
+	0xD5CE, 0x7634, 0xD5CF, 0x969C, 0xD5D0, 0x62DB, 0xD5D1, 0x662D,
+	0xD5D2, 0x627E, 0xD5D3, 0x6CBC, 0xD5D4, 0x8D75, 0xD5D5, 0x7167,
+	0xD5D6, 0x7F69, 0xD5D7, 0x5146, 0xD5D8, 0x8087, 0xD5D9, 0x53EC,
+	0xD5DA, 0x906E, 0xD5DB, 0x6298, 0xD5DC, 0x54F2, 0xD5DD, 0x86F0,
+	0xD5DE, 0x8F99, 0xD5DF, 0x8005, 0xD5E0, 0x9517, 0xD5E1, 0x8517,
+	0xD5E2, 0x8FD9, 0xD5E3, 0x6D59, 0xD5E4, 0x73CD, 0xD5E5, 0x659F,
+	0xD5E6, 0x771F, 0xD5E7, 0x7504, 0xD5E8, 0x7827, 0xD5E9, 0x81FB,
+	0xD5EA, 0x8D1E, 0xD5EB, 0x9488, 0xD5EC, 0x4FA6, 0xD5ED, 0x6795,
+	0xD5EE, 0x75B9, 0xD5EF, 0x8BCA, 0xD5F0, 0x9707, 0xD5F1, 0x632F,
+	0xD5F2, 0x9547, 0xD5F3, 0x9635, 0xD5F4, 0x84B8, 0xD5F5, 0x6323,
+	0xD5F6, 0x7741, 0xD5F7, 0x5F81, 0xD5F8, 0x72F0, 0xD5F9, 0x4E89,
+	0xD5FA, 0x6014, 0xD5FB, 0x6574, 0xD5FC, 0x62EF, 0xD5FD, 0x6B63,
+	0xD5FE, 0x653F, 0xD640, 0x8AE4, 0xD641, 0x8AE5, 0xD642, 0x8AE6,
+	0xD643, 0x8AE7, 0xD644, 0x8AE8, 0xD645, 0x8AE9, 0xD646, 0x8AEA,
+	0xD647, 0x8AEB, 0xD648, 0x8AEC, 0xD649, 0x8AED, 0xD64A, 0x8AEE,
+	0xD64B, 0x8AEF, 0xD64C, 0x8AF0, 0xD64D, 0x8AF1, 0xD64E, 0x8AF2,
+	0xD64F, 0x8AF3, 0xD650, 0x8AF4, 0xD651, 0x8AF5, 0xD652, 0x8AF6,
+	0xD653, 0x8AF7, 0xD654, 0x8AF8, 0xD655, 0x8AF9, 0xD656, 0x8AFA,
+	0xD657, 0x8AFB, 0xD658, 0x8AFC, 0xD659, 0x8AFD, 0xD65A, 0x8AFE,
+	0xD65B, 0x8AFF, 0xD65C, 0x8B00, 0xD65D, 0x8B01, 0xD65E, 0x8B02,
+	0xD65F, 0x8B03, 0xD660, 0x8B04, 0xD661, 0x8B05, 0xD662, 0x8B06,
+	0xD663, 0x8B08, 0xD664, 0x8B09, 0xD665, 0x8B0A, 0xD666, 0x8B0B,
+	0xD667, 0x8B0C, 0xD668, 0x8B0D, 0xD669, 0x8B0E, 0xD66A, 0x8B0F,
+	0xD66B, 0x8B10, 0xD66C, 0x8B11, 0xD66D, 0x8B12, 0xD66E, 0x8B13,
+	0xD66F, 0x8B14, 0xD670, 0x8B15, 0xD671, 0x8B16, 0xD672, 0x8B17,
+	0xD673, 0x8B18, 0xD674, 0x8B19, 0xD675, 0x8B1A, 0xD676, 0x8B1B,
+	0xD677, 0x8B1C, 0xD678, 0x8B1D, 0xD679, 0x8B1E, 0xD67A, 0x8B1F,
+	0xD67B, 0x8B20, 0xD67C, 0x8B21, 0xD67D, 0x8B22, 0xD67E, 0x8B23,
+	0xD680, 0x8B24, 0xD681, 0x8B25, 0xD682, 0x8B27, 0xD683, 0x8B28,
+	0xD684, 0x8B29, 0xD685, 0x8B2A, 0xD686, 0x8B2B, 0xD687, 0x8B2C,
+	0xD688, 0x8B2D, 0xD689, 0x8B2E, 0xD68A, 0x8B2F, 0xD68B, 0x8B30,
+	0xD68C, 0x8B31, 0xD68D, 0x8B32, 0xD68E, 0x8B33, 0xD68F, 0x8B34,
+	0xD690, 0x8B35, 0xD691, 0x8B36, 0xD692, 0x8B37, 0xD693, 0x8B38,
+	0xD694, 0x8B39, 0xD695, 0x8B3A, 0xD696, 0x8B3B, 0xD697, 0x8B3C,
+	0xD698, 0x8B3D, 0xD699, 0x8B3E, 0xD69A, 0x8B3F, 0xD69B, 0x8B40,
+	0xD69C, 0x8B41, 0xD69D, 0x8B42, 0xD69E, 0x8B43, 0xD69F, 0x8B44,
+	0xD6A0, 0x8B45, 0xD6A1, 0x5E27, 0xD6A2, 0x75C7, 0xD6A3, 0x90D1,
+	0xD6A4, 0x8BC1, 0xD6A5, 0x829D, 0xD6A6, 0x679D, 0xD6A7, 0x652F,
+	0xD6A8, 0x5431, 0xD6A9, 0x8718, 0xD6AA, 0x77E5, 0xD6AB, 0x80A2,
+	0xD6AC, 0x8102, 0xD6AD, 0x6C41, 0xD6AE, 0x4E4B, 0xD6AF, 0x7EC7,
+	0xD6B0, 0x804C, 0xD6B1, 0x76F4, 0xD6B2, 0x690D, 0xD6B3, 0x6B96,
+	0xD6B4, 0x6267, 0xD6B5, 0x503C, 0xD6B6, 0x4F84, 0xD6B7, 0x5740,
+	0xD6B8, 0x6307, 0xD6B9, 0x6B62, 0xD6BA, 0x8DBE, 0xD6BB, 0x53EA,
+	0xD6BC, 0x65E8, 0xD6BD, 0x7EB8, 0xD6BE, 0x5FD7, 0xD6BF, 0x631A,
+	0xD6C0, 0x63B7, 0xD6C1, 0x81F3, 0xD6C2, 0x81F4, 0xD6C3, 0x7F6E,
+	0xD6C4, 0x5E1C, 0xD6C5, 0x5CD9, 0xD6C6, 0x5236, 0xD6C7, 0x667A,
+	0xD6C8, 0x79E9, 0xD6C9, 0x7A1A, 0xD6CA, 0x8D28, 0xD6CB, 0x7099,
+	0xD6CC, 0x75D4, 0xD6CD, 0x6EDE, 0xD6CE, 0x6CBB, 0xD6CF, 0x7A92,
+	0xD6D0, 0x4E2D, 0xD6D1, 0x76C5, 0xD6D2, 0x5FE0, 0xD6D3, 0x949F,
+	0xD6D4, 0x8877, 0xD6D5, 0x7EC8, 0xD6D6, 0x79CD, 0xD6D7, 0x80BF,
+	0xD6D8, 0x91CD, 0xD6D9, 0x4EF2, 0xD6DA, 0x4F17, 0xD6DB, 0x821F,
+	0xD6DC, 0x5468, 0xD6DD, 0x5DDE, 0xD6DE, 0x6D32, 0xD6DF, 0x8BCC,
+	0xD6E0, 0x7CA5, 0xD6E1, 0x8F74, 0xD6E2, 0x8098, 0xD6E3, 0x5E1A,
+	0xD6E4, 0x5492, 0xD6E5, 0x76B1, 0xD6E6, 0x5B99, 0xD6E7, 0x663C,
+	0xD6E8, 0x9AA4, 0xD6E9, 0x73E0, 0xD6EA, 0x682A, 0xD6EB, 0x86DB,
+	0xD6EC, 0x6731, 0xD6ED, 0x732A, 0xD6EE, 0x8BF8, 0xD6EF, 0x8BDB,
+	0xD6F0, 0x9010, 0xD6F1, 0x7AF9, 0xD6F2, 0x70DB, 0xD6F3, 0x716E,
+	0xD6F4, 0x62C4, 0xD6F5, 0x77A9, 0xD6F6, 0x5631, 0xD6F7, 0x4E3B,
+	0xD6F8, 0x8457, 0xD6F9, 0x67F1, 0xD6FA, 0x52A9, 0xD6FB, 0x86C0,
+	0xD6FC, 0x8D2E, 0xD6FD, 0x94F8, 0xD6FE, 0x7B51, 0xD740, 0x8B46,
+	0xD741, 0x8B47, 0xD742, 0x8B48, 0xD743, 0x8B49, 0xD744, 0x8B4A,
+	0xD745, 0x8B4B, 0xD746, 0x8B4C, 0xD747, 0x8B4D, 0xD748, 0x8B4E,
+	0xD749, 0x8B4F, 0xD74A, 0x8B50, 0xD74B, 0x8B51, 0xD74C, 0x8B52,
+	0xD74D, 0x8B53, 0xD74E, 0x8B54, 0xD74F, 0x8B55, 0xD750, 0x8B56,
+	0xD751, 0x8B57, 0xD752, 0x8B58, 0xD753, 0x8B59, 0xD754, 0x8B5A,
+	0xD755, 0x8B5B, 0xD756, 0x8B5C, 0xD757, 0x8B5D, 0xD758, 0x8B5E,
+	0xD759, 0x8B5F, 0xD75A, 0x8B60, 0xD75B, 0x8B61, 0xD75C, 0x8B62,
+	0xD75D, 0x8B63, 0xD75E, 0x8B64, 0xD75F, 0x8B65, 0xD760, 0x8B67,
+	0xD761, 0x8B68, 0xD762, 0x8B69, 0xD763, 0x8B6A, 0xD764, 0x8B6B,
+	0xD765, 0x8B6D, 0xD766, 0x8B6E, 0xD767, 0x8B6F, 0xD768, 0x8B70,
+	0xD769, 0x8B71, 0xD76A, 0x8B72, 0xD76B, 0x8B73, 0xD76C, 0x8B74,
+	0xD76D, 0x8B75, 0xD76E, 0x8B76, 0xD76F, 0x8B77, 0xD770, 0x8B78,
+	0xD771, 0x8B79, 0xD772, 0x8B7A, 0xD773, 0x8B7B, 0xD774, 0x8B7C,
+	0xD775, 0x8B7D, 0xD776, 0x8B7E, 0xD777, 0x8B7F, 0xD778, 0x8B80,
+	0xD779, 0x8B81, 0xD77A, 0x8B82, 0xD77B, 0x8B83, 0xD77C, 0x8B84,
+	0xD77D, 0x8B85, 0xD77E, 0x8B86, 0xD780, 0x8B87, 0xD781, 0x8B88,
+	0xD782, 0x8B89, 0xD783, 0x8B8A, 0xD784, 0x8B8B, 0xD785, 0x8B8C,
+	0xD786, 0x8B8D, 0xD787, 0x8B8E, 0xD788, 0x8B8F, 0xD789, 0x8B90,
+	0xD78A, 0x8B91, 0xD78B, 0x8B92, 0xD78C, 0x8B93, 0xD78D, 0x8B94,
+	0xD78E, 0x8B95, 0xD78F, 0x8B96, 0xD790, 0x8B97, 0xD791, 0x8B98,
+	0xD792, 0x8B99, 0xD793, 0x8B9A, 0xD794, 0x8B9B, 0xD795, 0x8B9C,
+	0xD796, 0x8B9D, 0xD797, 0x8B9E, 0xD798, 0x8B9F, 0xD799, 0x8BAC,
+	0xD79A, 0x8BB1, 0xD79B, 0x8BBB, 0xD79C, 0x8BC7, 0xD79D, 0x8BD0,
+	0xD79E, 0x8BEA, 0xD79F, 0x8C09, 0xD7A0, 0x8C1E, 0xD7A1, 0x4F4F,
+	0xD7A2, 0x6CE8, 0xD7A3, 0x795D, 0xD7A4, 0x9A7B, 0xD7A5, 0x6293,
+	0xD7A6, 0x722A, 0xD7A7, 0x62FD, 0xD7A8, 0x4E13, 0xD7A9, 0x7816,
+	0xD7AA, 0x8F6C, 0xD7AB, 0x64B0, 0xD7AC, 0x8D5A, 0xD7AD, 0x7BC6,
+	0xD7AE, 0x6869, 0xD7AF, 0x5E84, 0xD7B0, 0x88C5, 0xD7B1, 0x5986,
+	0xD7B2, 0x649E, 0xD7B3, 0x58EE, 0xD7B4, 0x72B6, 0xD7B5, 0x690E,
+	0xD7B6, 0x9525, 0xD7B7, 0x8FFD, 0xD7B8, 0x8D58, 0xD7B9, 0x5760,
+	0xD7BA, 0x7F00, 0xD7BB, 0x8C06, 0xD7BC, 0x51C6, 0xD7BD, 0x6349,
+	0xD7BE, 0x62D9, 0xD7BF, 0x5353, 0xD7C0, 0x684C, 0xD7C1, 0x7422,
+	0xD7C2, 0x8301, 0xD7C3, 0x914C, 0xD7C4, 0x5544, 0xD7C5, 0x7740,
+	0xD7C6, 0x707C, 0xD7C7, 0x6D4A, 0xD7C8, 0x5179, 0xD7C9, 0x54A8,
+	0xD7CA, 0x8D44, 0xD7CB, 0x59FF, 0xD7CC, 0x6ECB, 0xD7CD, 0x6DC4,
+	0xD7CE, 0x5B5C, 0xD7CF, 0x7D2B, 0xD7D0, 0x4ED4, 0xD7D1, 0x7C7D,
+	0xD7D2, 0x6ED3, 0xD7D3, 0x5B50, 0xD7D4, 0x81EA, 0xD7D5, 0x6E0D,
+	0xD7D6, 0x5B57, 0xD7D7, 0x9B03, 0xD7D8, 0x68D5, 0xD7D9, 0x8E2A,
+	0xD7DA, 0x5B97, 0xD7DB, 0x7EFC, 0xD7DC, 0x603B, 0xD7DD, 0x7EB5,
+	0xD7DE, 0x90B9, 0xD7DF, 0x8D70, 0xD7E0, 0x594F, 0xD7E1, 0x63CD,
+	0xD7E2, 0x79DF, 0xD7E3, 0x8DB3, 0xD7E4, 0x5352, 0xD7E5, 0x65CF,
+	0xD7E6, 0x7956, 0xD7E7, 0x8BC5, 0xD7E8, 0x963B, 0xD7E9, 0x7EC4,
+	0xD7EA, 0x94BB, 0xD7EB, 0x7E82, 0xD7EC, 0x5634, 0xD7ED, 0x9189,
+	0xD7EE, 0x6700, 0xD7EF, 0x7F6A, 0xD7F0, 0x5C0A, 0xD7F1, 0x9075,
+	0xD7F2, 0x6628, 0xD7F3, 0x5DE6, 0xD7F4, 0x4F50, 0xD7F5, 0x67DE,
+	0xD7F6, 0x505A, 0xD7F7, 0x4F5C, 0xD7F8, 0x5750, 0xD7F9, 0x5EA7,
+	0xD840, 0x8C38, 0xD841, 0x8C39, 0xD842, 0x8C3A, 0xD843, 0x8C3B,
+	0xD844, 0x8C3C, 0xD845, 0x8C3D, 0xD846, 0x8C3E, 0xD847, 0x8C3F,
+	0xD848, 0x8C40, 0xD849, 0x8C42, 0xD84A, 0x8C43, 0xD84B, 0x8C44,
+	0xD84C, 0x8C45, 0xD84D, 0x8C48, 0xD84E, 0x8C4A, 0xD84F, 0x8C4B,
+	0xD850, 0x8C4D, 0xD851, 0x8C4E, 0xD852, 0x8C4F, 0xD853, 0x8C50,
+	0xD854, 0x8C51, 0xD855, 0x8C52, 0xD856, 0x8C53, 0xD857, 0x8C54,
+	0xD858, 0x8C56, 0xD859, 0x8C57, 0xD85A, 0x8C58, 0xD85B, 0x8C59,
+	0xD85C, 0x8C5B, 0xD85D, 0x8C5C, 0xD85E, 0x8C5D, 0xD85F, 0x8C5E,
+	0xD860, 0x8C5F, 0xD861, 0x8C60, 0xD862, 0x8C63, 0xD863, 0x8C64,
+	0xD864, 0x8C65, 0xD865, 0x8C66, 0xD866, 0x8C67, 0xD867, 0x8C68,
+	0xD868, 0x8C69, 0xD869, 0x8C6C, 0xD86A, 0x8C6D, 0xD86B, 0x8C6E,
+	0xD86C, 0x8C6F, 0xD86D, 0x8C70, 0xD86E, 0x8C71, 0xD86F, 0x8C72,
+	0xD870, 0x8C74, 0xD871, 0x8C75, 0xD872, 0x8C76, 0xD873, 0x8C77,
+	0xD874, 0x8C7B, 0xD875, 0x8C7C, 0xD876, 0x8C7D, 0xD877, 0x8C7E,
+	0xD878, 0x8C7F, 0xD879, 0x8C80, 0xD87A, 0x8C81, 0xD87B, 0x8C83,
+	0xD87C, 0x8C84, 0xD87D, 0x8C86, 0xD87E, 0x8C87, 0xD880, 0x8C88,
+	0xD881, 0x8C8B, 0xD882, 0x8C8D, 0xD883, 0x8C8E, 0xD884, 0x8C8F,
+	0xD885, 0x8C90, 0xD886, 0x8C91, 0xD887, 0x8C92, 0xD888, 0x8C93,
+	0xD889, 0x8C95, 0xD88A, 0x8C96, 0xD88B, 0x8C97, 0xD88C, 0x8C99,
+	0xD88D, 0x8C9A, 0xD88E, 0x8C9B, 0xD88F, 0x8C9C, 0xD890, 0x8C9D,
+	0xD891, 0x8C9E, 0xD892, 0x8C9F, 0xD893, 0x8CA0, 0xD894, 0x8CA1,
+	0xD895, 0x8CA2, 0xD896, 0x8CA3, 0xD897, 0x8CA4, 0xD898, 0x8CA5,
+	0xD899, 0x8CA6, 0xD89A, 0x8CA7, 0xD89B, 0x8CA8, 0xD89C, 0x8CA9,
+	0xD89D, 0x8CAA, 0xD89E, 0x8CAB, 0xD89F, 0x8CAC, 0xD8A0, 0x8CAD,
+	0xD8A1, 0x4E8D, 0xD8A2, 0x4E0C, 0xD8A3, 0x5140, 0xD8A4, 0x4E10,
+	0xD8A5, 0x5EFF, 0xD8A6, 0x5345, 0xD8A7, 0x4E15, 0xD8A8, 0x4E98,
+	0xD8A9, 0x4E1E, 0xD8AA, 0x9B32, 0xD8AB, 0x5B6C, 0xD8AC, 0x5669,
+	0xD8AD, 0x4E28, 0xD8AE, 0x79BA, 0xD8AF, 0x4E3F, 0xD8B0, 0x5315,
+	0xD8B1, 0x4E47, 0xD8B2, 0x592D, 0xD8B3, 0x723B, 0xD8B4, 0x536E,
+	0xD8B5, 0x6C10, 0xD8B6, 0x56DF, 0xD8B7, 0x80E4, 0xD8B8, 0x9997,
+	0xD8B9, 0x6BD3, 0xD8BA, 0x777E, 0xD8BB, 0x9F17, 0xD8BC, 0x4E36,
+	0xD8BD, 0x4E9F, 0xD8BE, 0x9F10, 0xD8BF, 0x4E5C, 0xD8C0, 0x4E69,
+	0xD8C1, 0x4E93, 0xD8C2, 0x8288, 0xD8C3, 0x5B5B, 0xD8C4, 0x556C,
+	0xD8C5, 0x560F, 0xD8C6, 0x4EC4, 0xD8C7, 0x538D, 0xD8C8, 0x539D,
+	0xD8C9, 0x53A3, 0xD8CA, 0x53A5, 0xD8CB, 0x53AE, 0xD8CC, 0x9765,
+	0xD8CD, 0x8D5D, 0xD8CE, 0x531A, 0xD8CF, 0x53F5, 0xD8D0, 0x5326,
+	0xD8D1, 0x532E, 0xD8D2, 0x533E, 0xD8D3, 0x8D5C, 0xD8D4, 0x5366,
+	0xD8D5, 0x5363, 0xD8D6, 0x5202, 0xD8D7, 0x5208, 0xD8D8, 0x520E,
+	0xD8D9, 0x522D, 0xD8DA, 0x5233, 0xD8DB, 0x523F, 0xD8DC, 0x5240,
+	0xD8DD, 0x524C, 0xD8DE, 0x525E, 0xD8DF, 0x5261, 0xD8E0, 0x525C,
+	0xD8E1, 0x84AF, 0xD8E2, 0x527D, 0xD8E3, 0x5282, 0xD8E4, 0x5281,
+	0xD8E5, 0x5290, 0xD8E6, 0x5293, 0xD8E7, 0x5182, 0xD8E8, 0x7F54,
+	0xD8E9, 0x4EBB, 0xD8EA, 0x4EC3, 0xD8EB, 0x4EC9, 0xD8EC, 0x4EC2,
+	0xD8ED, 0x4EE8, 0xD8EE, 0x4EE1, 0xD8EF, 0x4EEB, 0xD8F0, 0x4EDE,
+	0xD8F1, 0x4F1B, 0xD8F2, 0x4EF3, 0xD8F3, 0x4F22, 0xD8F4, 0x4F64,
+	0xD8F5, 0x4EF5, 0xD8F6, 0x4F25, 0xD8F7, 0x4F27, 0xD8F8, 0x4F09,
+	0xD8F9, 0x4F2B, 0xD8FA, 0x4F5E, 0xD8FB, 0x4F67, 0xD8FC, 0x6538,
+	0xD8FD, 0x4F5A, 0xD8FE, 0x4F5D, 0xD940, 0x8CAE, 0xD941, 0x8CAF,
+	0xD942, 0x8CB0, 0xD943, 0x8CB1, 0xD944, 0x8CB2, 0xD945, 0x8CB3,
+	0xD946, 0x8CB4, 0xD947, 0x8CB5, 0xD948, 0x8CB6, 0xD949, 0x8CB7,
+	0xD94A, 0x8CB8, 0xD94B, 0x8CB9, 0xD94C, 0x8CBA, 0xD94D, 0x8CBB,
+	0xD94E, 0x8CBC, 0xD94F, 0x8CBD, 0xD950, 0x8CBE, 0xD951, 0x8CBF,
+	0xD952, 0x8CC0, 0xD953, 0x8CC1, 0xD954, 0x8CC2, 0xD955, 0x8CC3,
+	0xD956, 0x8CC4, 0xD957, 0x8CC5, 0xD958, 0x8CC6, 0xD959, 0x8CC7,
+	0xD95A, 0x8CC8, 0xD95B, 0x8CC9, 0xD95C, 0x8CCA, 0xD95D, 0x8CCB,
+	0xD95E, 0x8CCC, 0xD95F, 0x8CCD, 0xD960, 0x8CCE, 0xD961, 0x8CCF,
+	0xD962, 0x8CD0, 0xD963, 0x8CD1, 0xD964, 0x8CD2, 0xD965, 0x8CD3,
+	0xD966, 0x8CD4, 0xD967, 0x8CD5, 0xD968, 0x8CD6, 0xD969, 0x8CD7,
+	0xD96A, 0x8CD8, 0xD96B, 0x8CD9, 0xD96C, 0x8CDA, 0xD96D, 0x8CDB,
+	0xD96E, 0x8CDC, 0xD96F, 0x8CDD, 0xD970, 0x8CDE, 0xD971, 0x8CDF,
+	0xD972, 0x8CE0, 0xD973, 0x8CE1, 0xD974, 0x8CE2, 0xD975, 0x8CE3,
+	0xD976, 0x8CE4, 0xD977, 0x8CE5, 0xD978, 0x8CE6, 0xD979, 0x8CE7,
+	0xD97A, 0x8CE8, 0xD97B, 0x8CE9, 0xD97C, 0x8CEA, 0xD97D, 0x8CEB,
+	0xD97E, 0x8CEC, 0xD980, 0x8CED, 0xD981, 0x8CEE, 0xD982, 0x8CEF,
+	0xD983, 0x8CF0, 0xD984, 0x8CF1, 0xD985, 0x8CF2, 0xD986, 0x8CF3,
+	0xD987, 0x8CF4, 0xD988, 0x8CF5, 0xD989, 0x8CF6, 0xD98A, 0x8CF7,
+	0xD98B, 0x8CF8, 0xD98C, 0x8CF9, 0xD98D, 0x8CFA, 0xD98E, 0x8CFB,
+	0xD98F, 0x8CFC, 0xD990, 0x8CFD, 0xD991, 0x8CFE, 0xD992, 0x8CFF,
+	0xD993, 0x8D00, 0xD994, 0x8D01, 0xD995, 0x8D02, 0xD996, 0x8D03,
+	0xD997, 0x8D04, 0xD998, 0x8D05, 0xD999, 0x8D06, 0xD99A, 0x8D07,
+	0xD99B, 0x8D08, 0xD99C, 0x8D09, 0xD99D, 0x8D0A, 0xD99E, 0x8D0B,
+	0xD99F, 0x8D0C, 0xD9A0, 0x8D0D, 0xD9A1, 0x4F5F, 0xD9A2, 0x4F57,
+	0xD9A3, 0x4F32, 0xD9A4, 0x4F3D, 0xD9A5, 0x4F76, 0xD9A6, 0x4F74,
+	0xD9A7, 0x4F91, 0xD9A8, 0x4F89, 0xD9A9, 0x4F83, 0xD9AA, 0x4F8F,
+	0xD9AB, 0x4F7E, 0xD9AC, 0x4F7B, 0xD9AD, 0x4FAA, 0xD9AE, 0x4F7C,
+	0xD9AF, 0x4FAC, 0xD9B0, 0x4F94, 0xD9B1, 0x4FE6, 0xD9B2, 0x4FE8,
+	0xD9B3, 0x4FEA, 0xD9B4, 0x4FC5, 0xD9B5, 0x4FDA, 0xD9B6, 0x4FE3,
+	0xD9B7, 0x4FDC, 0xD9B8, 0x4FD1, 0xD9B9, 0x4FDF, 0xD9BA, 0x4FF8,
+	0xD9BB, 0x5029, 0xD9BC, 0x504C, 0xD9BD, 0x4FF3, 0xD9BE, 0x502C,
+	0xD9BF, 0x500F, 0xD9C0, 0x502E, 0xD9C1, 0x502D, 0xD9C2, 0x4FFE,
+	0xD9C3, 0x501C, 0xD9C4, 0x500C, 0xD9C5, 0x5025, 0xD9C6, 0x5028,
+	0xD9C7, 0x507E, 0xD9C8, 0x5043, 0xD9C9, 0x5055, 0xD9CA, 0x5048,
+	0xD9CB, 0x504E, 0xD9CC, 0x506C, 0xD9CD, 0x507B, 0xD9CE, 0x50A5,
+	0xD9CF, 0x50A7, 0xD9D0, 0x50A9, 0xD9D1, 0x50BA, 0xD9D2, 0x50D6,
+	0xD9D3, 0x5106, 0xD9D4, 0x50ED, 0xD9D5, 0x50EC, 0xD9D6, 0x50E6,
+	0xD9D7, 0x50EE, 0xD9D8, 0x5107, 0xD9D9, 0x510B, 0xD9DA, 0x4EDD,
+	0xD9DB, 0x6C3D, 0xD9DC, 0x4F58, 0xD9DD, 0x4F65, 0xD9DE, 0x4FCE,
+	0xD9DF, 0x9FA0, 0xD9E0, 0x6C46, 0xD9E1, 0x7C74, 0xD9E2, 0x516E,
+	0xD9E3, 0x5DFD, 0xD9E4, 0x9EC9, 0xD9E5, 0x9998, 0xD9E6, 0x5181,
+	0xD9E7, 0x5914, 0xD9E8, 0x52F9, 0xD9E9, 0x530D, 0xD9EA, 0x8A07,
+	0xD9EB, 0x5310, 0xD9EC, 0x51EB, 0xD9ED, 0x5919, 0xD9EE, 0x5155,
+	0xD9EF, 0x4EA0, 0xD9F0, 0x5156, 0xD9F1, 0x4EB3, 0xD9F2, 0x886E,
+	0xD9F3, 0x88A4, 0xD9F4, 0x4EB5, 0xD9F5, 0x8114, 0xD9F6, 0x88D2,
+	0xD9F7, 0x7980, 0xD9F8, 0x5B34, 0xD9F9, 0x8803, 0xD9FA, 0x7FB8,
+	0xD9FB, 0x51AB, 0xD9FC, 0x51B1, 0xD9FD, 0x51BD, 0xD9FE, 0x51BC,
+	0xDA40, 0x8D0E, 0xDA41, 0x8D0F, 0xDA42, 0x8D10, 0xDA43, 0x8D11,
+	0xDA44, 0x8D12, 0xDA45, 0x8D13, 0xDA46, 0x8D14, 0xDA47, 0x8D15,
+	0xDA48, 0x8D16, 0xDA49, 0x8D17, 0xDA4A, 0x8D18, 0xDA4B, 0x8D19,
+	0xDA4C, 0x8D1A, 0xDA4D, 0x8D1B, 0xDA4E, 0x8D1C, 0xDA4F, 0x8D20,
+	0xDA50, 0x8D51, 0xDA51, 0x8D52, 0xDA52, 0x8D57, 0xDA53, 0x8D5F,
+	0xDA54, 0x8D65, 0xDA55, 0x8D68, 0xDA56, 0x8D69, 0xDA57, 0x8D6A,
+	0xDA58, 0x8D6C, 0xDA59, 0x8D6E, 0xDA5A, 0x8D6F, 0xDA5B, 0x8D71,
+	0xDA5C, 0x8D72, 0xDA5D, 0x8D78, 0xDA5E, 0x8D79, 0xDA5F, 0x8D7A,
+	0xDA60, 0x8D7B, 0xDA61, 0x8D7C, 0xDA62, 0x8D7D, 0xDA63, 0x8D7E,
+	0xDA64, 0x8D7F, 0xDA65, 0x8D80, 0xDA66, 0x8D82, 0xDA67, 0x8D83,
+	0xDA68, 0x8D86, 0xDA69, 0x8D87, 0xDA6A, 0x8D88, 0xDA6B, 0x8D89,
+	0xDA6C, 0x8D8C, 0xDA6D, 0x8D8D, 0xDA6E, 0x8D8E, 0xDA6F, 0x8D8F,
+	0xDA70, 0x8D90, 0xDA71, 0x8D92, 0xDA72, 0x8D93, 0xDA73, 0x8D95,
+	0xDA74, 0x8D96, 0xDA75, 0x8D97, 0xDA76, 0x8D98, 0xDA77, 0x8D99,
+	0xDA78, 0x8D9A, 0xDA79, 0x8D9B, 0xDA7A, 0x8D9C, 0xDA7B, 0x8D9D,
+	0xDA7C, 0x8D9E, 0xDA7D, 0x8DA0, 0xDA7E, 0x8DA1, 0xDA80, 0x8DA2,
+	0xDA81, 0x8DA4, 0xDA82, 0x8DA5, 0xDA83, 0x8DA6, 0xDA84, 0x8DA7,
+	0xDA85, 0x8DA8, 0xDA86, 0x8DA9, 0xDA87, 0x8DAA, 0xDA88, 0x8DAB,
+	0xDA89, 0x8DAC, 0xDA8A, 0x8DAD, 0xDA8B, 0x8DAE, 0xDA8C, 0x8DAF,
+	0xDA8D, 0x8DB0, 0xDA8E, 0x8DB2, 0xDA8F, 0x8DB6, 0xDA90, 0x8DB7,
+	0xDA91, 0x8DB9, 0xDA92, 0x8DBB, 0xDA93, 0x8DBD, 0xDA94, 0x8DC0,
+	0xDA95, 0x8DC1, 0xDA96, 0x8DC2, 0xDA97, 0x8DC5, 0xDA98, 0x8DC7,
+	0xDA99, 0x8DC8, 0xDA9A, 0x8DC9, 0xDA9B, 0x8DCA, 0xDA9C, 0x8DCD,
+	0xDA9D, 0x8DD0, 0xDA9E, 0x8DD2, 0xDA9F, 0x8DD3, 0xDAA0, 0x8DD4,
+	0xDAA1, 0x51C7, 0xDAA2, 0x5196, 0xDAA3, 0x51A2, 0xDAA4, 0x51A5,
+	0xDAA5, 0x8BA0, 0xDAA6, 0x8BA6, 0xDAA7, 0x8BA7, 0xDAA8, 0x8BAA,
+	0xDAA9, 0x8BB4, 0xDAAA, 0x8BB5, 0xDAAB, 0x8BB7, 0xDAAC, 0x8BC2,
+	0xDAAD, 0x8BC3, 0xDAAE, 0x8BCB, 0xDAAF, 0x8BCF, 0xDAB0, 0x8BCE,
+	0xDAB1, 0x8BD2, 0xDAB2, 0x8BD3, 0xDAB3, 0x8BD4, 0xDAB4, 0x8BD6,
+	0xDAB5, 0x8BD8, 0xDAB6, 0x8BD9, 0xDAB7, 0x8BDC, 0xDAB8, 0x8BDF,
+	0xDAB9, 0x8BE0, 0xDABA, 0x8BE4, 0xDABB, 0x8BE8, 0xDABC, 0x8BE9,
+	0xDABD, 0x8BEE, 0xDABE, 0x8BF0, 0xDABF, 0x8BF3, 0xDAC0, 0x8BF6,
+	0xDAC1, 0x8BF9, 0xDAC2, 0x8BFC, 0xDAC3, 0x8BFF, 0xDAC4, 0x8C00,
+	0xDAC5, 0x8C02, 0xDAC6, 0x8C04, 0xDAC7, 0x8C07, 0xDAC8, 0x8C0C,
+	0xDAC9, 0x8C0F, 0xDACA, 0x8C11, 0xDACB, 0x8C12, 0xDACC, 0x8C14,
+	0xDACD, 0x8C15, 0xDACE, 0x8C16, 0xDACF, 0x8C19, 0xDAD0, 0x8C1B,
+	0xDAD1, 0x8C18, 0xDAD2, 0x8C1D, 0xDAD3, 0x8C1F, 0xDAD4, 0x8C20,
+	0xDAD5, 0x8C21, 0xDAD6, 0x8C25, 0xDAD7, 0x8C27, 0xDAD8, 0x8C2A,
+	0xDAD9, 0x8C2B, 0xDADA, 0x8C2E, 0xDADB, 0x8C2F, 0xDADC, 0x8C32,
+	0xDADD, 0x8C33, 0xDADE, 0x8C35, 0xDADF, 0x8C36, 0xDAE0, 0x5369,
+	0xDAE1, 0x537A, 0xDAE2, 0x961D, 0xDAE3, 0x9622, 0xDAE4, 0x9621,
+	0xDAE5, 0x9631, 0xDAE6, 0x962A, 0xDAE7, 0x963D, 0xDAE8, 0x963C,
+	0xDAE9, 0x9642, 0xDAEA, 0x9649, 0xDAEB, 0x9654, 0xDAEC, 0x965F,
+	0xDAED, 0x9667, 0xDAEE, 0x966C, 0xDAEF, 0x9672, 0xDAF0, 0x9674,
+	0xDAF1, 0x9688, 0xDAF2, 0x968D, 0xDAF3, 0x9697, 0xDAF4, 0x96B0,
+	0xDAF5, 0x9097, 0xDAF6, 0x909B, 0xDAF7, 0x909D, 0xDAF8, 0x9099,
+	0xDAF9, 0x90AC, 0xDAFA, 0x90A1, 0xDAFB, 0x90B4, 0xDAFC, 0x90B3,
+	0xDAFD, 0x90B6, 0xDAFE, 0x90BA, 0xDB40, 0x8DD5, 0xDB41, 0x8DD8,
+	0xDB42, 0x8DD9, 0xDB43, 0x8DDC, 0xDB44, 0x8DE0, 0xDB45, 0x8DE1,
+	0xDB46, 0x8DE2, 0xDB47, 0x8DE5, 0xDB48, 0x8DE6, 0xDB49, 0x8DE7,
+	0xDB4A, 0x8DE9, 0xDB4B, 0x8DED, 0xDB4C, 0x8DEE, 0xDB4D, 0x8DF0,
+	0xDB4E, 0x8DF1, 0xDB4F, 0x8DF2, 0xDB50, 0x8DF4, 0xDB51, 0x8DF6,
+	0xDB52, 0x8DFC, 0xDB53, 0x8DFE, 0xDB54, 0x8DFF, 0xDB55, 0x8E00,
+	0xDB56, 0x8E01, 0xDB57, 0x8E02, 0xDB58, 0x8E03, 0xDB59, 0x8E04,
+	0xDB5A, 0x8E06, 0xDB5B, 0x8E07, 0xDB5C, 0x8E08, 0xDB5D, 0x8E0B,
+	0xDB5E, 0x8E0D, 0xDB5F, 0x8E0E, 0xDB60, 0x8E10, 0xDB61, 0x8E11,
+	0xDB62, 0x8E12, 0xDB63, 0x8E13, 0xDB64, 0x8E15, 0xDB65, 0x8E16,
+	0xDB66, 0x8E17, 0xDB67, 0x8E18, 0xDB68, 0x8E19, 0xDB69, 0x8E1A,
+	0xDB6A, 0x8E1B, 0xDB6B, 0x8E1C, 0xDB6C, 0x8E20, 0xDB6D, 0x8E21,
+	0xDB6E, 0x8E24, 0xDB6F, 0x8E25, 0xDB70, 0x8E26, 0xDB71, 0x8E27,
+	0xDB72, 0x8E28, 0xDB73, 0x8E2B, 0xDB74, 0x8E2D, 0xDB75, 0x8E30,
+	0xDB76, 0x8E32, 0xDB77, 0x8E33, 0xDB78, 0x8E34, 0xDB79, 0x8E36,
+	0xDB7A, 0x8E37, 0xDB7B, 0x8E38, 0xDB7C, 0x8E3B, 0xDB7D, 0x8E3C,
+	0xDB7E, 0x8E3E, 0xDB80, 0x8E3F, 0xDB81, 0x8E43, 0xDB82, 0x8E45,
+	0xDB83, 0x8E46, 0xDB84, 0x8E4C, 0xDB85, 0x8E4D, 0xDB86, 0x8E4E,
+	0xDB87, 0x8E4F, 0xDB88, 0x8E50, 0xDB89, 0x8E53, 0xDB8A, 0x8E54,
+	0xDB8B, 0x8E55, 0xDB8C, 0x8E56, 0xDB8D, 0x8E57, 0xDB8E, 0x8E58,
+	0xDB8F, 0x8E5A, 0xDB90, 0x8E5B, 0xDB91, 0x8E5C, 0xDB92, 0x8E5D,
+	0xDB93, 0x8E5E, 0xDB94, 0x8E5F, 0xDB95, 0x8E60, 0xDB96, 0x8E61,
+	0xDB97, 0x8E62, 0xDB98, 0x8E63, 0xDB99, 0x8E64, 0xDB9A, 0x8E65,
+	0xDB9B, 0x8E67, 0xDB9C, 0x8E68, 0xDB9D, 0x8E6A, 0xDB9E, 0x8E6B,
+	0xDB9F, 0x8E6E, 0xDBA0, 0x8E71, 0xDBA1, 0x90B8, 0xDBA2, 0x90B0,
+	0xDBA3, 0x90CF, 0xDBA4, 0x90C5, 0xDBA5, 0x90BE, 0xDBA6, 0x90D0,
+	0xDBA7, 0x90C4, 0xDBA8, 0x90C7, 0xDBA9, 0x90D3, 0xDBAA, 0x90E6,
+	0xDBAB, 0x90E2, 0xDBAC, 0x90DC, 0xDBAD, 0x90D7, 0xDBAE, 0x90DB,
+	0xDBAF, 0x90EB, 0xDBB0, 0x90EF, 0xDBB1, 0x90FE, 0xDBB2, 0x9104,
+	0xDBB3, 0x9122, 0xDBB4, 0x911E, 0xDBB5, 0x9123, 0xDBB6, 0x9131,
+	0xDBB7, 0x912F, 0xDBB8, 0x9139, 0xDBB9, 0x9143, 0xDBBA, 0x9146,
+	0xDBBB, 0x520D, 0xDBBC, 0x5942, 0xDBBD, 0x52A2, 0xDBBE, 0x52AC,
+	0xDBBF, 0x52AD, 0xDBC0, 0x52BE, 0xDBC1, 0x54FF, 0xDBC2, 0x52D0,
+	0xDBC3, 0x52D6, 0xDBC4, 0x52F0, 0xDBC5, 0x53DF, 0xDBC6, 0x71EE,
+	0xDBC7, 0x77CD, 0xDBC8, 0x5EF4, 0xDBC9, 0x51F5, 0xDBCA, 0x51FC,
+	0xDBCB, 0x9B2F, 0xDBCC, 0x53B6, 0xDBCD, 0x5F01, 0xDBCE, 0x755A,
+	0xDBCF, 0x5DEF, 0xDBD0, 0x574C, 0xDBD1, 0x57A9, 0xDBD2, 0x57A1,
+	0xDBD3, 0x587E, 0xDBD4, 0x58BC, 0xDBD5, 0x58C5, 0xDBD6, 0x58D1,
+	0xDBD7, 0x5729, 0xDBD8, 0x572C, 0xDBD9, 0x572A, 0xDBDA, 0x5733,
+	0xDBDB, 0x5739, 0xDBDC, 0x572E, 0xDBDD, 0x572F, 0xDBDE, 0x575C,
+	0xDBDF, 0x573B, 0xDBE0, 0x5742, 0xDBE1, 0x5769, 0xDBE2, 0x5785,
+	0xDBE3, 0x576B, 0xDBE4, 0x5786, 0xDBE5, 0x577C, 0xDBE6, 0x577B,
+	0xDBE7, 0x5768, 0xDBE8, 0x576D, 0xDBE9, 0x5776, 0xDBEA, 0x5773,
+	0xDBEB, 0x57AD, 0xDBEC, 0x57A4, 0xDBED, 0x578C, 0xDBEE, 0x57B2,
+	0xDBEF, 0x57CF, 0xDBF0, 0x57A7, 0xDBF1, 0x57B4, 0xDBF2, 0x5793,
+	0xDBF3, 0x57A0, 0xDBF4, 0x57D5, 0xDBF5, 0x57D8, 0xDBF6, 0x57DA,
+	0xDBF7, 0x57D9, 0xDBF8, 0x57D2, 0xDBF9, 0x57B8, 0xDBFA, 0x57F4,
+	0xDBFB, 0x57EF, 0xDBFC, 0x57F8, 0xDBFD, 0x57E4, 0xDBFE, 0x57DD,
+	0xDC40, 0x8E73, 0xDC41, 0x8E75, 0xDC42, 0x8E77, 0xDC43, 0x8E78,
+	0xDC44, 0x8E79, 0xDC45, 0x8E7A, 0xDC46, 0x8E7B, 0xDC47, 0x8E7D,
+	0xDC48, 0x8E7E, 0xDC49, 0x8E80, 0xDC4A, 0x8E82, 0xDC4B, 0x8E83,
+	0xDC4C, 0x8E84, 0xDC4D, 0x8E86, 0xDC4E, 0x8E88, 0xDC4F, 0x8E89,
+	0xDC50, 0x8E8A, 0xDC51, 0x8E8B, 0xDC52, 0x8E8C, 0xDC53, 0x8E8D,
+	0xDC54, 0x8E8E, 0xDC55, 0x8E91, 0xDC56, 0x8E92, 0xDC57, 0x8E93,
+	0xDC58, 0x8E95, 0xDC59, 0x8E96, 0xDC5A, 0x8E97, 0xDC5B, 0x8E98,
+	0xDC5C, 0x8E99, 0xDC5D, 0x8E9A, 0xDC5E, 0x8E9B, 0xDC5F, 0x8E9D,
+	0xDC60, 0x8E9F, 0xDC61, 0x8EA0, 0xDC62, 0x8EA1, 0xDC63, 0x8EA2,
+	0xDC64, 0x8EA3, 0xDC65, 0x8EA4, 0xDC66, 0x8EA5, 0xDC67, 0x8EA6,
+	0xDC68, 0x8EA7, 0xDC69, 0x8EA8, 0xDC6A, 0x8EA9, 0xDC6B, 0x8EAA,
+	0xDC6C, 0x8EAD, 0xDC6D, 0x8EAE, 0xDC6E, 0x8EB0, 0xDC6F, 0x8EB1,
+	0xDC70, 0x8EB3, 0xDC71, 0x8EB4, 0xDC72, 0x8EB5, 0xDC73, 0x8EB6,
+	0xDC74, 0x8EB7, 0xDC75, 0x8EB8, 0xDC76, 0x8EB9, 0xDC77, 0x8EBB,
+	0xDC78, 0x8EBC, 0xDC79, 0x8EBD, 0xDC7A, 0x8EBE, 0xDC7B, 0x8EBF,
+	0xDC7C, 0x8EC0, 0xDC7D, 0x8EC1, 0xDC7E, 0x8EC2, 0xDC80, 0x8EC3,
+	0xDC81, 0x8EC4, 0xDC82, 0x8EC5, 0xDC83, 0x8EC6, 0xDC84, 0x8EC7,
+	0xDC85, 0x8EC8, 0xDC86, 0x8EC9, 0xDC87, 0x8ECA, 0xDC88, 0x8ECB,
+	0xDC89, 0x8ECC, 0xDC8A, 0x8ECD, 0xDC8B, 0x8ECF, 0xDC8C, 0x8ED0,
+	0xDC8D, 0x8ED1, 0xDC8E, 0x8ED2, 0xDC8F, 0x8ED3, 0xDC90, 0x8ED4,
+	0xDC91, 0x8ED5, 0xDC92, 0x8ED6, 0xDC93, 0x8ED7, 0xDC94, 0x8ED8,
+	0xDC95, 0x8ED9, 0xDC96, 0x8EDA, 0xDC97, 0x8EDB, 0xDC98, 0x8EDC,
+	0xDC99, 0x8EDD, 0xDC9A, 0x8EDE, 0xDC9B, 0x8EDF, 0xDC9C, 0x8EE0,
+	0xDC9D, 0x8EE1, 0xDC9E, 0x8EE2, 0xDC9F, 0x8EE3, 0xDCA0, 0x8EE4,
+	0xDCA1, 0x580B, 0xDCA2, 0x580D, 0xDCA3, 0x57FD, 0xDCA4, 0x57ED,
+	0xDCA5, 0x5800, 0xDCA6, 0x581E, 0xDCA7, 0x5819, 0xDCA8, 0x5844,
+	0xDCA9, 0x5820, 0xDCAA, 0x5865, 0xDCAB, 0x586C, 0xDCAC, 0x5881,
+	0xDCAD, 0x5889, 0xDCAE, 0x589A, 0xDCAF, 0x5880, 0xDCB0, 0x99A8,
+	0xDCB1, 0x9F19, 0xDCB2, 0x61FF, 0xDCB3, 0x8279, 0xDCB4, 0x827D,
+	0xDCB5, 0x827F, 0xDCB6, 0x828F, 0xDCB7, 0x828A, 0xDCB8, 0x82A8,
+	0xDCB9, 0x8284, 0xDCBA, 0x828E, 0xDCBB, 0x8291, 0xDCBC, 0x8297,
+	0xDCBD, 0x8299, 0xDCBE, 0x82AB, 0xDCBF, 0x82B8, 0xDCC0, 0x82BE,
+	0xDCC1, 0x82B0, 0xDCC2, 0x82C8, 0xDCC3, 0x82CA, 0xDCC4, 0x82E3,
+	0xDCC5, 0x8298, 0xDCC6, 0x82B7, 0xDCC7, 0x82AE, 0xDCC8, 0x82CB,
+	0xDCC9, 0x82CC, 0xDCCA, 0x82C1, 0xDCCB, 0x82A9, 0xDCCC, 0x82B4,
+	0xDCCD, 0x82A1, 0xDCCE, 0x82AA, 0xDCCF, 0x829F, 0xDCD0, 0x82C4,
+	0xDCD1, 0x82CE, 0xDCD2, 0x82A4, 0xDCD3, 0x82E1, 0xDCD4, 0x8309,
+	0xDCD5, 0x82F7, 0xDCD6, 0x82E4, 0xDCD7, 0x830F, 0xDCD8, 0x8307,
+	0xDCD9, 0x82DC, 0xDCDA, 0x82F4, 0xDCDB, 0x82D2, 0xDCDC, 0x82D8,
+	0xDCDD, 0x830C, 0xDCDE, 0x82FB, 0xDCDF, 0x82D3, 0xDCE0, 0x8311,
+	0xDCE1, 0x831A, 0xDCE2, 0x8306, 0xDCE3, 0x8314, 0xDCE4, 0x8315,
+	0xDCE5, 0x82E0, 0xDCE6, 0x82D5, 0xDCE7, 0x831C, 0xDCE8, 0x8351,
+	0xDCE9, 0x835B, 0xDCEA, 0x835C, 0xDCEB, 0x8308, 0xDCEC, 0x8392,
+	0xDCED, 0x833C, 0xDCEE, 0x8334, 0xDCEF, 0x8331, 0xDCF0, 0x839B,
+	0xDCF1, 0x835E, 0xDCF2, 0x832F, 0xDCF3, 0x834F, 0xDCF4, 0x8347,
+	0xDCF5, 0x8343, 0xDCF6, 0x835F, 0xDCF7, 0x8340, 0xDCF8, 0x8317,
+	0xDCF9, 0x8360, 0xDCFA, 0x832D, 0xDCFB, 0x833A, 0xDCFC, 0x8333,
+	0xDCFD, 0x8366, 0xDCFE, 0x8365, 0xDD40, 0x8EE5, 0xDD41, 0x8EE6,
+	0xDD42, 0x8EE7, 0xDD43, 0x8EE8, 0xDD44, 0x8EE9, 0xDD45, 0x8EEA,
+	0xDD46, 0x8EEB, 0xDD47, 0x8EEC, 0xDD48, 0x8EED, 0xDD49, 0x8EEE,
+	0xDD4A, 0x8EEF, 0xDD4B, 0x8EF0, 0xDD4C, 0x8EF1, 0xDD4D, 0x8EF2,
+	0xDD4E, 0x8EF3, 0xDD4F, 0x8EF4, 0xDD50, 0x8EF5, 0xDD51, 0x8EF6,
+	0xDD52, 0x8EF7, 0xDD53, 0x8EF8, 0xDD54, 0x8EF9, 0xDD55, 0x8EFA,
+	0xDD56, 0x8EFB, 0xDD57, 0x8EFC, 0xDD58, 0x8EFD, 0xDD59, 0x8EFE,
+	0xDD5A, 0x8EFF, 0xDD5B, 0x8F00, 0xDD5C, 0x8F01, 0xDD5D, 0x8F02,
+	0xDD5E, 0x8F03, 0xDD5F, 0x8F04, 0xDD60, 0x8F05, 0xDD61, 0x8F06,
+	0xDD62, 0x8F07, 0xDD63, 0x8F08, 0xDD64, 0x8F09, 0xDD65, 0x8F0A,
+	0xDD66, 0x8F0B, 0xDD67, 0x8F0C, 0xDD68, 0x8F0D, 0xDD69, 0x8F0E,
+	0xDD6A, 0x8F0F, 0xDD6B, 0x8F10, 0xDD6C, 0x8F11, 0xDD6D, 0x8F12,
+	0xDD6E, 0x8F13, 0xDD6F, 0x8F14, 0xDD70, 0x8F15, 0xDD71, 0x8F16,
+	0xDD72, 0x8F17, 0xDD73, 0x8F18, 0xDD74, 0x8F19, 0xDD75, 0x8F1A,
+	0xDD76, 0x8F1B, 0xDD77, 0x8F1C, 0xDD78, 0x8F1D, 0xDD79, 0x8F1E,
+	0xDD7A, 0x8F1F, 0xDD7B, 0x8F20, 0xDD7C, 0x8F21, 0xDD7D, 0x8F22,
+	0xDD7E, 0x8F23, 0xDD80, 0x8F24, 0xDD81, 0x8F25, 0xDD82, 0x8F26,
+	0xDD83, 0x8F27, 0xDD84, 0x8F28, 0xDD85, 0x8F29, 0xDD86, 0x8F2A,
+	0xDD87, 0x8F2B, 0xDD88, 0x8F2C, 0xDD89, 0x8F2D, 0xDD8A, 0x8F2E,
+	0xDD8B, 0x8F2F, 0xDD8C, 0x8F30, 0xDD8D, 0x8F31, 0xDD8E, 0x8F32,
+	0xDD8F, 0x8F33, 0xDD90, 0x8F34, 0xDD91, 0x8F35, 0xDD92, 0x8F36,
+	0xDD93, 0x8F37, 0xDD94, 0x8F38, 0xDD95, 0x8F39, 0xDD96, 0x8F3A,
+	0xDD97, 0x8F3B, 0xDD98, 0x8F3C, 0xDD99, 0x8F3D, 0xDD9A, 0x8F3E,
+	0xDD9B, 0x8F3F, 0xDD9C, 0x8F40, 0xDD9D, 0x8F41, 0xDD9E, 0x8F42,
+	0xDD9F, 0x8F43, 0xDDA0, 0x8F44, 0xDDA1, 0x8368, 0xDDA2, 0x831B,
+	0xDDA3, 0x8369, 0xDDA4, 0x836C, 0xDDA5, 0x836A, 0xDDA6, 0x836D,
+	0xDDA7, 0x836E, 0xDDA8, 0x83B0, 0xDDA9, 0x8378, 0xDDAA, 0x83B3,
+	0xDDAB, 0x83B4, 0xDDAC, 0x83A0, 0xDDAD, 0x83AA, 0xDDAE, 0x8393,
+	0xDDAF, 0x839C, 0xDDB0, 0x8385, 0xDDB1, 0x837C, 0xDDB2, 0x83B6,
+	0xDDB3, 0x83A9, 0xDDB4, 0x837D, 0xDDB5, 0x83B8, 0xDDB6, 0x837B,
+	0xDDB7, 0x8398, 0xDDB8, 0x839E, 0xDDB9, 0x83A8, 0xDDBA, 0x83BA,
+	0xDDBB, 0x83BC, 0xDDBC, 0x83C1, 0xDDBD, 0x8401, 0xDDBE, 0x83E5,
+	0xDDBF, 0x83D8, 0xDDC0, 0x5807, 0xDDC1, 0x8418, 0xDDC2, 0x840B,
+	0xDDC3, 0x83DD, 0xDDC4, 0x83FD, 0xDDC5, 0x83D6, 0xDDC6, 0x841C,
+	0xDDC7, 0x8438, 0xDDC8, 0x8411, 0xDDC9, 0x8406, 0xDDCA, 0x83D4,
+	0xDDCB, 0x83DF, 0xDDCC, 0x840F, 0xDDCD, 0x8403, 0xDDCE, 0x83F8,
+	0xDDCF, 0x83F9, 0xDDD0, 0x83EA, 0xDDD1, 0x83C5, 0xDDD2, 0x83C0,
+	0xDDD3, 0x8426, 0xDDD4, 0x83F0, 0xDDD5, 0x83E1, 0xDDD6, 0x845C,
+	0xDDD7, 0x8451, 0xDDD8, 0x845A, 0xDDD9, 0x8459, 0xDDDA, 0x8473,
+	0xDDDB, 0x8487, 0xDDDC, 0x8488, 0xDDDD, 0x847A, 0xDDDE, 0x8489,
+	0xDDDF, 0x8478, 0xDDE0, 0x843C, 0xDDE1, 0x8446, 0xDDE2, 0x8469,
+	0xDDE3, 0x8476, 0xDDE4, 0x848C, 0xDDE5, 0x848E, 0xDDE6, 0x8431,
+	0xDDE7, 0x846D, 0xDDE8, 0x84C1, 0xDDE9, 0x84CD, 0xDDEA, 0x84D0,
+	0xDDEB, 0x84E6, 0xDDEC, 0x84BD, 0xDDED, 0x84D3, 0xDDEE, 0x84CA,
+	0xDDEF, 0x84BF, 0xDDF0, 0x84BA, 0xDDF1, 0x84E0, 0xDDF2, 0x84A1,
+	0xDDF3, 0x84B9, 0xDDF4, 0x84B4, 0xDDF5, 0x8497, 0xDDF6, 0x84E5,
+	0xDDF7, 0x84E3, 0xDDF8, 0x850C, 0xDDF9, 0x750D, 0xDDFA, 0x8538,
+	0xDDFB, 0x84F0, 0xDDFC, 0x8539, 0xDDFD, 0x851F, 0xDDFE, 0x853A,
+	0xDE40, 0x8F45, 0xDE41, 0x8F46, 0xDE42, 0x8F47, 0xDE43, 0x8F48,
+	0xDE44, 0x8F49, 0xDE45, 0x8F4A, 0xDE46, 0x8F4B, 0xDE47, 0x8F4C,
+	0xDE48, 0x8F4D, 0xDE49, 0x8F4E, 0xDE4A, 0x8F4F, 0xDE4B, 0x8F50,
+	0xDE4C, 0x8F51, 0xDE4D, 0x8F52, 0xDE4E, 0x8F53, 0xDE4F, 0x8F54,
+	0xDE50, 0x8F55, 0xDE51, 0x8F56, 0xDE52, 0x8F57, 0xDE53, 0x8F58,
+	0xDE54, 0x8F59, 0xDE55, 0x8F5A, 0xDE56, 0x8F5B, 0xDE57, 0x8F5C,
+	0xDE58, 0x8F5D, 0xDE59, 0x8F5E, 0xDE5A, 0x8F5F, 0xDE5B, 0x8F60,
+	0xDE5C, 0x8F61, 0xDE5D, 0x8F62, 0xDE5E, 0x8F63, 0xDE5F, 0x8F64,
+	0xDE60, 0x8F65, 0xDE61, 0x8F6A, 0xDE62, 0x8F80, 0xDE63, 0x8F8C,
+	0xDE64, 0x8F92, 0xDE65, 0x8F9D, 0xDE66, 0x8FA0, 0xDE67, 0x8FA1,
+	0xDE68, 0x8FA2, 0xDE69, 0x8FA4, 0xDE6A, 0x8FA5, 0xDE6B, 0x8FA6,
+	0xDE6C, 0x8FA7, 0xDE6D, 0x8FAA, 0xDE6E, 0x8FAC, 0xDE6F, 0x8FAD,
+	0xDE70, 0x8FAE, 0xDE71, 0x8FAF, 0xDE72, 0x8FB2, 0xDE73, 0x8FB3,
+	0xDE74, 0x8FB4, 0xDE75, 0x8FB5, 0xDE76, 0x8FB7, 0xDE77, 0x8FB8,
+	0xDE78, 0x8FBA, 0xDE79, 0x8FBB, 0xDE7A, 0x8FBC, 0xDE7B, 0x8FBF,
+	0xDE7C, 0x8FC0, 0xDE7D, 0x8FC3, 0xDE7E, 0x8FC6, 0xDE80, 0x8FC9,
+	0xDE81, 0x8FCA, 0xDE82, 0x8FCB, 0xDE83, 0x8FCC, 0xDE84, 0x8FCD,
+	0xDE85, 0x8FCF, 0xDE86, 0x8FD2, 0xDE87, 0x8FD6, 0xDE88, 0x8FD7,
+	0xDE89, 0x8FDA, 0xDE8A, 0x8FE0, 0xDE8B, 0x8FE1, 0xDE8C, 0x8FE3,
+	0xDE8D, 0x8FE7, 0xDE8E, 0x8FEC, 0xDE8F, 0x8FEF, 0xDE90, 0x8FF1,
+	0xDE91, 0x8FF2, 0xDE92, 0x8FF4, 0xDE93, 0x8FF5, 0xDE94, 0x8FF6,
+	0xDE95, 0x8FFA, 0xDE96, 0x8FFB, 0xDE97, 0x8FFC, 0xDE98, 0x8FFE,
+	0xDE99, 0x8FFF, 0xDE9A, 0x9007, 0xDE9B, 0x9008, 0xDE9C, 0x900C,
+	0xDE9D, 0x900E, 0xDE9E, 0x9013, 0xDE9F, 0x9015, 0xDEA0, 0x9018,
+	0xDEA1, 0x8556, 0xDEA2, 0x853B, 0xDEA3, 0x84FF, 0xDEA4, 0x84FC,
+	0xDEA5, 0x8559, 0xDEA6, 0x8548, 0xDEA7, 0x8568, 0xDEA8, 0x8564,
+	0xDEA9, 0x855E, 0xDEAA, 0x857A, 0xDEAB, 0x77A2, 0xDEAC, 0x8543,
+	0xDEAD, 0x8572, 0xDEAE, 0x857B, 0xDEAF, 0x85A4, 0xDEB0, 0x85A8,
+	0xDEB1, 0x8587, 0xDEB2, 0x858F, 0xDEB3, 0x8579, 0xDEB4, 0x85AE,
+	0xDEB5, 0x859C, 0xDEB6, 0x8585, 0xDEB7, 0x85B9, 0xDEB8, 0x85B7,
+	0xDEB9, 0x85B0, 0xDEBA, 0x85D3, 0xDEBB, 0x85C1, 0xDEBC, 0x85DC,
+	0xDEBD, 0x85FF, 0xDEBE, 0x8627, 0xDEBF, 0x8605, 0xDEC0, 0x8629,
+	0xDEC1, 0x8616, 0xDEC2, 0x863C, 0xDEC3, 0x5EFE, 0xDEC4, 0x5F08,
+	0xDEC5, 0x593C, 0xDEC6, 0x5941, 0xDEC7, 0x8037, 0xDEC8, 0x5955,
+	0xDEC9, 0x595A, 0xDECA, 0x5958, 0xDECB, 0x530F, 0xDECC, 0x5C22,
+	0xDECD, 0x5C25, 0xDECE, 0x5C2C, 0xDECF, 0x5C34, 0xDED0, 0x624C,
+	0xDED1, 0x626A, 0xDED2, 0x629F, 0xDED3, 0x62BB, 0xDED4, 0x62CA,
+	0xDED5, 0x62DA, 0xDED6, 0x62D7, 0xDED7, 0x62EE, 0xDED8, 0x6322,
+	0xDED9, 0x62F6, 0xDEDA, 0x6339, 0xDEDB, 0x634B, 0xDEDC, 0x6343,
+	0xDEDD, 0x63AD, 0xDEDE, 0x63F6, 0xDEDF, 0x6371, 0xDEE0, 0x637A,
+	0xDEE1, 0x638E, 0xDEE2, 0x63B4, 0xDEE3, 0x636D, 0xDEE4, 0x63AC,
+	0xDEE5, 0x638A, 0xDEE6, 0x6369, 0xDEE7, 0x63AE, 0xDEE8, 0x63BC,
+	0xDEE9, 0x63F2, 0xDEEA, 0x63F8, 0xDEEB, 0x63E0, 0xDEEC, 0x63FF,
+	0xDEED, 0x63C4, 0xDEEE, 0x63DE, 0xDEEF, 0x63CE, 0xDEF0, 0x6452,
+	0xDEF1, 0x63C6, 0xDEF2, 0x63BE, 0xDEF3, 0x6445, 0xDEF4, 0x6441,
+	0xDEF5, 0x640B, 0xDEF6, 0x641B, 0xDEF7, 0x6420, 0xDEF8, 0x640C,
+	0xDEF9, 0x6426, 0xDEFA, 0x6421, 0xDEFB, 0x645E, 0xDEFC, 0x6484,
+	0xDEFD, 0x646D, 0xDEFE, 0x6496, 0xDF40, 0x9019, 0xDF41, 0x901C,
+	0xDF42, 0x9023, 0xDF43, 0x9024, 0xDF44, 0x9025, 0xDF45, 0x9027,
+	0xDF46, 0x9028, 0xDF47, 0x9029, 0xDF48, 0x902A, 0xDF49, 0x902B,
+	0xDF4A, 0x902C, 0xDF4B, 0x9030, 0xDF4C, 0x9031, 0xDF4D, 0x9032,
+	0xDF4E, 0x9033, 0xDF4F, 0x9034, 0xDF50, 0x9037, 0xDF51, 0x9039,
+	0xDF52, 0x903A, 0xDF53, 0x903D, 0xDF54, 0x903F, 0xDF55, 0x9040,
+	0xDF56, 0x9043, 0xDF57, 0x9045, 0xDF58, 0x9046, 0xDF59, 0x9048,
+	0xDF5A, 0x9049, 0xDF5B, 0x904A, 0xDF5C, 0x904B, 0xDF5D, 0x904C,
+	0xDF5E, 0x904E, 0xDF5F, 0x9054, 0xDF60, 0x9055, 0xDF61, 0x9056,
+	0xDF62, 0x9059, 0xDF63, 0x905A, 0xDF64, 0x905C, 0xDF65, 0x905D,
+	0xDF66, 0x905E, 0xDF67, 0x905F, 0xDF68, 0x9060, 0xDF69, 0x9061,
+	0xDF6A, 0x9064, 0xDF6B, 0x9066, 0xDF6C, 0x9067, 0xDF6D, 0x9069,
+	0xDF6E, 0x906A, 0xDF6F, 0x906B, 0xDF70, 0x906C, 0xDF71, 0x906F,
+	0xDF72, 0x9070, 0xDF73, 0x9071, 0xDF74, 0x9072, 0xDF75, 0x9073,
+	0xDF76, 0x9076, 0xDF77, 0x9077, 0xDF78, 0x9078, 0xDF79, 0x9079,
+	0xDF7A, 0x907A, 0xDF7B, 0x907B, 0xDF7C, 0x907C, 0xDF7D, 0x907E,
+	0xDF7E, 0x9081, 0xDF80, 0x9084, 0xDF81, 0x9085, 0xDF82, 0x9086,
+	0xDF83, 0x9087, 0xDF84, 0x9089, 0xDF85, 0x908A, 0xDF86, 0x908C,
+	0xDF87, 0x908D, 0xDF88, 0x908E, 0xDF89, 0x908F, 0xDF8A, 0x9090,
+	0xDF8B, 0x9092, 0xDF8C, 0x9094, 0xDF8D, 0x9096, 0xDF8E, 0x9098,
+	0xDF8F, 0x909A, 0xDF90, 0x909C, 0xDF91, 0x909E, 0xDF92, 0x909F,
+	0xDF93, 0x90A0, 0xDF94, 0x90A4, 0xDF95, 0x90A5, 0xDF96, 0x90A7,
+	0xDF97, 0x90A8, 0xDF98, 0x90A9, 0xDF99, 0x90AB, 0xDF9A, 0x90AD,
+	0xDF9B, 0x90B2, 0xDF9C, 0x90B7, 0xDF9D, 0x90BC, 0xDF9E, 0x90BD,
+	0xDF9F, 0x90BF, 0xDFA0, 0x90C0, 0xDFA1, 0x647A, 0xDFA2, 0x64B7,
+	0xDFA3, 0x64B8, 0xDFA4, 0x6499, 0xDFA5, 0x64BA, 0xDFA6, 0x64C0,
+	0xDFA7, 0x64D0, 0xDFA8, 0x64D7, 0xDFA9, 0x64E4, 0xDFAA, 0x64E2,
+	0xDFAB, 0x6509, 0xDFAC, 0x6525, 0xDFAD, 0x652E, 0xDFAE, 0x5F0B,
+	0xDFAF, 0x5FD2, 0xDFB0, 0x7519, 0xDFB1, 0x5F11, 0xDFB2, 0x535F,
+	0xDFB3, 0x53F1, 0xDFB4, 0x53FD, 0xDFB5, 0x53E9, 0xDFB6, 0x53E8,
+	0xDFB7, 0x53FB, 0xDFB8, 0x5412, 0xDFB9, 0x5416, 0xDFBA, 0x5406,
+	0xDFBB, 0x544B, 0xDFBC, 0x5452, 0xDFBD, 0x5453, 0xDFBE, 0x5454,
+	0xDFBF, 0x5456, 0xDFC0, 0x5443, 0xDFC1, 0x5421, 0xDFC2, 0x5457,
+	0xDFC3, 0x5459, 0xDFC4, 0x5423, 0xDFC5, 0x5432, 0xDFC6, 0x5482,
+	0xDFC7, 0x5494, 0xDFC8, 0x5477, 0xDFC9, 0x5471, 0xDFCA, 0x5464,
+	0xDFCB, 0x549A, 0xDFCC, 0x549B, 0xDFCD, 0x5484, 0xDFCE, 0x5476,
+	0xDFCF, 0x5466, 0xDFD0, 0x549D, 0xDFD1, 0x54D0, 0xDFD2, 0x54AD,
+	0xDFD3, 0x54C2, 0xDFD4, 0x54B4, 0xDFD5, 0x54D2, 0xDFD6, 0x54A7,
+	0xDFD7, 0x54A6, 0xDFD8, 0x54D3, 0xDFD9, 0x54D4, 0xDFDA, 0x5472,
+	0xDFDB, 0x54A3, 0xDFDC, 0x54D5, 0xDFDD, 0x54BB, 0xDFDE, 0x54BF,
+	0xDFDF, 0x54CC, 0xDFE0, 0x54D9, 0xDFE1, 0x54DA, 0xDFE2, 0x54DC,
+	0xDFE3, 0x54A9, 0xDFE4, 0x54AA, 0xDFE5, 0x54A4, 0xDFE6, 0x54DD,
+	0xDFE7, 0x54CF, 0xDFE8, 0x54DE, 0xDFE9, 0x551B, 0xDFEA, 0x54E7,
+	0xDFEB, 0x5520, 0xDFEC, 0x54FD, 0xDFED, 0x5514, 0xDFEE, 0x54F3,
+	0xDFEF, 0x5522, 0xDFF0, 0x5523, 0xDFF1, 0x550F, 0xDFF2, 0x5511,
+	0xDFF3, 0x5527, 0xDFF4, 0x552A, 0xDFF5, 0x5567, 0xDFF6, 0x558F,
+	0xDFF7, 0x55B5, 0xDFF8, 0x5549, 0xDFF9, 0x556D, 0xDFFA, 0x5541,
+	0xDFFB, 0x5555, 0xDFFC, 0x553F, 0xDFFD, 0x5550, 0xDFFE, 0x553C,
+	0xE040, 0x90C2, 0xE041, 0x90C3, 0xE042, 0x90C6, 0xE043, 0x90C8,
+	0xE044, 0x90C9, 0xE045, 0x90CB, 0xE046, 0x90CC, 0xE047, 0x90CD,
+	0xE048, 0x90D2, 0xE049, 0x90D4, 0xE04A, 0x90D5, 0xE04B, 0x90D6,
+	0xE04C, 0x90D8, 0xE04D, 0x90D9, 0xE04E, 0x90DA, 0xE04F, 0x90DE,
+	0xE050, 0x90DF, 0xE051, 0x90E0, 0xE052, 0x90E3, 0xE053, 0x90E4,
+	0xE054, 0x90E5, 0xE055, 0x90E9, 0xE056, 0x90EA, 0xE057, 0x90EC,
+	0xE058, 0x90EE, 0xE059, 0x90F0, 0xE05A, 0x90F1, 0xE05B, 0x90F2,
+	0xE05C, 0x90F3, 0xE05D, 0x90F5, 0xE05E, 0x90F6, 0xE05F, 0x90F7,
+	0xE060, 0x90F9, 0xE061, 0x90FA, 0xE062, 0x90FB, 0xE063, 0x90FC,
+	0xE064, 0x90FF, 0xE065, 0x9100, 0xE066, 0x9101, 0xE067, 0x9103,
+	0xE068, 0x9105, 0xE069, 0x9106, 0xE06A, 0x9107, 0xE06B, 0x9108,
+	0xE06C, 0x9109, 0xE06D, 0x910A, 0xE06E, 0x910B, 0xE06F, 0x910C,
+	0xE070, 0x910D, 0xE071, 0x910E, 0xE072, 0x910F, 0xE073, 0x9110,
+	0xE074, 0x9111, 0xE075, 0x9112, 0xE076, 0x9113, 0xE077, 0x9114,
+	0xE078, 0x9115, 0xE079, 0x9116, 0xE07A, 0x9117, 0xE07B, 0x9118,
+	0xE07C, 0x911A, 0xE07D, 0x911B, 0xE07E, 0x911C, 0xE080, 0x911D,
+	0xE081, 0x911F, 0xE082, 0x9120, 0xE083, 0x9121, 0xE084, 0x9124,
+	0xE085, 0x9125, 0xE086, 0x9126, 0xE087, 0x9127, 0xE088, 0x9128,
+	0xE089, 0x9129, 0xE08A, 0x912A, 0xE08B, 0x912B, 0xE08C, 0x912C,
+	0xE08D, 0x912D, 0xE08E, 0x912E, 0xE08F, 0x9130, 0xE090, 0x9132,
+	0xE091, 0x9133, 0xE092, 0x9134, 0xE093, 0x9135, 0xE094, 0x9136,
+	0xE095, 0x9137, 0xE096, 0x9138, 0xE097, 0x913A, 0xE098, 0x913B,
+	0xE099, 0x913C, 0xE09A, 0x913D, 0xE09B, 0x913E, 0xE09C, 0x913F,
+	0xE09D, 0x9140, 0xE09E, 0x9141, 0xE09F, 0x9142, 0xE0A0, 0x9144,
+	0xE0A1, 0x5537, 0xE0A2, 0x5556, 0xE0A3, 0x5575, 0xE0A4, 0x5576,
+	0xE0A5, 0x5577, 0xE0A6, 0x5533, 0xE0A7, 0x5530, 0xE0A8, 0x555C,
+	0xE0A9, 0x558B, 0xE0AA, 0x55D2, 0xE0AB, 0x5583, 0xE0AC, 0x55B1,
+	0xE0AD, 0x55B9, 0xE0AE, 0x5588, 0xE0AF, 0x5581, 0xE0B0, 0x559F,
+	0xE0B1, 0x557E, 0xE0B2, 0x55D6, 0xE0B3, 0x5591, 0xE0B4, 0x557B,
+	0xE0B5, 0x55DF, 0xE0B6, 0x55BD, 0xE0B7, 0x55BE, 0xE0B8, 0x5594,
+	0xE0B9, 0x5599, 0xE0BA, 0x55EA, 0xE0BB, 0x55F7, 0xE0BC, 0x55C9,
+	0xE0BD, 0x561F, 0xE0BE, 0x55D1, 0xE0BF, 0x55EB, 0xE0C0, 0x55EC,
+	0xE0C1, 0x55D4, 0xE0C2, 0x55E6, 0xE0C3, 0x55DD, 0xE0C4, 0x55C4,
+	0xE0C5, 0x55EF, 0xE0C6, 0x55E5, 0xE0C7, 0x55F2, 0xE0C8, 0x55F3,
+	0xE0C9, 0x55CC, 0xE0CA, 0x55CD, 0xE0CB, 0x55E8, 0xE0CC, 0x55F5,
+	0xE0CD, 0x55E4, 0xE0CE, 0x8F94, 0xE0CF, 0x561E, 0xE0D0, 0x5608,
+	0xE0D1, 0x560C, 0xE0D2, 0x5601, 0xE0D3, 0x5624, 0xE0D4, 0x5623,
+	0xE0D5, 0x55FE, 0xE0D6, 0x5600, 0xE0D7, 0x5627, 0xE0D8, 0x562D,
+	0xE0D9, 0x5658, 0xE0DA, 0x5639, 0xE0DB, 0x5657, 0xE0DC, 0x562C,
+	0xE0DD, 0x564D, 0xE0DE, 0x5662, 0xE0DF, 0x5659, 0xE0E0, 0x565C,
+	0xE0E1, 0x564C, 0xE0E2, 0x5654, 0xE0E3, 0x5686, 0xE0E4, 0x5664,
+	0xE0E5, 0x5671, 0xE0E6, 0x566B, 0xE0E7, 0x567B, 0xE0E8, 0x567C,
+	0xE0E9, 0x5685, 0xE0EA, 0x5693, 0xE0EB, 0x56AF, 0xE0EC, 0x56D4,
+	0xE0ED, 0x56D7, 0xE0EE, 0x56DD, 0xE0EF, 0x56E1, 0xE0F0, 0x56F5,
+	0xE0F1, 0x56EB, 0xE0F2, 0x56F9, 0xE0F3, 0x56FF, 0xE0F4, 0x5704,
+	0xE0F5, 0x570A, 0xE0F6, 0x5709, 0xE0F7, 0x571C, 0xE0F8, 0x5E0F,
+	0xE0F9, 0x5E19, 0xE0FA, 0x5E14, 0xE0FB, 0x5E11, 0xE0FC, 0x5E31,
+	0xE0FD, 0x5E3B, 0xE0FE, 0x5E3C, 0xE140, 0x9145, 0xE141, 0x9147,
+	0xE142, 0x9148, 0xE143, 0x9151, 0xE144, 0x9153, 0xE145, 0x9154,
+	0xE146, 0x9155, 0xE147, 0x9156, 0xE148, 0x9158, 0xE149, 0x9159,
+	0xE14A, 0x915B, 0xE14B, 0x915C, 0xE14C, 0x915F, 0xE14D, 0x9160,
+	0xE14E, 0x9166, 0xE14F, 0x9167, 0xE150, 0x9168, 0xE151, 0x916B,
+	0xE152, 0x916D, 0xE153, 0x9173, 0xE154, 0x917A, 0xE155, 0x917B,
+	0xE156, 0x917C, 0xE157, 0x9180, 0xE158, 0x9181, 0xE159, 0x9182,
+	0xE15A, 0x9183, 0xE15B, 0x9184, 0xE15C, 0x9186, 0xE15D, 0x9188,
+	0xE15E, 0x918A, 0xE15F, 0x918E, 0xE160, 0x918F, 0xE161, 0x9193,
+	0xE162, 0x9194, 0xE163, 0x9195, 0xE164, 0x9196, 0xE165, 0x9197,
+	0xE166, 0x9198, 0xE167, 0x9199, 0xE168, 0x919C, 0xE169, 0x919D,
+	0xE16A, 0x919E, 0xE16B, 0x919F, 0xE16C, 0x91A0, 0xE16D, 0x91A1,
+	0xE16E, 0x91A4, 0xE16F, 0x91A5, 0xE170, 0x91A6, 0xE171, 0x91A7,
+	0xE172, 0x91A8, 0xE173, 0x91A9, 0xE174, 0x91AB, 0xE175, 0x91AC,
+	0xE176, 0x91B0, 0xE177, 0x91B1, 0xE178, 0x91B2, 0xE179, 0x91B3,
+	0xE17A, 0x91B6, 0xE17B, 0x91B7, 0xE17C, 0x91B8, 0xE17D, 0x91B9,
+	0xE17E, 0x91BB, 0xE180, 0x91BC, 0xE181, 0x91BD, 0xE182, 0x91BE,
+	0xE183, 0x91BF, 0xE184, 0x91C0, 0xE185, 0x91C1, 0xE186, 0x91C2,
+	0xE187, 0x91C3, 0xE188, 0x91C4, 0xE189, 0x91C5, 0xE18A, 0x91C6,
+	0xE18B, 0x91C8, 0xE18C, 0x91CB, 0xE18D, 0x91D0, 0xE18E, 0x91D2,
+	0xE18F, 0x91D3, 0xE190, 0x91D4, 0xE191, 0x91D5, 0xE192, 0x91D6,
+	0xE193, 0x91D7, 0xE194, 0x91D8, 0xE195, 0x91D9, 0xE196, 0x91DA,
+	0xE197, 0x91DB, 0xE198, 0x91DD, 0xE199, 0x91DE, 0xE19A, 0x91DF,
+	0xE19B, 0x91E0, 0xE19C, 0x91E1, 0xE19D, 0x91E2, 0xE19E, 0x91E3,
+	0xE19F, 0x91E4, 0xE1A0, 0x91E5, 0xE1A1, 0x5E37, 0xE1A2, 0x5E44,
+	0xE1A3, 0x5E54, 0xE1A4, 0x5E5B, 0xE1A5, 0x5E5E, 0xE1A6, 0x5E61,
+	0xE1A7, 0x5C8C, 0xE1A8, 0x5C7A, 0xE1A9, 0x5C8D, 0xE1AA, 0x5C90,
+	0xE1AB, 0x5C96, 0xE1AC, 0x5C88, 0xE1AD, 0x5C98, 0xE1AE, 0x5C99,
+	0xE1AF, 0x5C91, 0xE1B0, 0x5C9A, 0xE1B1, 0x5C9C, 0xE1B2, 0x5CB5,
+	0xE1B3, 0x5CA2, 0xE1B4, 0x5CBD, 0xE1B5, 0x5CAC, 0xE1B6, 0x5CAB,
+	0xE1B7, 0x5CB1, 0xE1B8, 0x5CA3, 0xE1B9, 0x5CC1, 0xE1BA, 0x5CB7,
+	0xE1BB, 0x5CC4, 0xE1BC, 0x5CD2, 0xE1BD, 0x5CE4, 0xE1BE, 0x5CCB,
+	0xE1BF, 0x5CE5, 0xE1C0, 0x5D02, 0xE1C1, 0x5D03, 0xE1C2, 0x5D27,
+	0xE1C3, 0x5D26, 0xE1C4, 0x5D2E, 0xE1C5, 0x5D24, 0xE1C6, 0x5D1E,
+	0xE1C7, 0x5D06, 0xE1C8, 0x5D1B, 0xE1C9, 0x5D58, 0xE1CA, 0x5D3E,
+	0xE1CB, 0x5D34, 0xE1CC, 0x5D3D, 0xE1CD, 0x5D6C, 0xE1CE, 0x5D5B,
+	0xE1CF, 0x5D6F, 0xE1D0, 0x5D5D, 0xE1D1, 0x5D6B, 0xE1D2, 0x5D4B,
+	0xE1D3, 0x5D4A, 0xE1D4, 0x5D69, 0xE1D5, 0x5D74, 0xE1D6, 0x5D82,
+	0xE1D7, 0x5D99, 0xE1D8, 0x5D9D, 0xE1D9, 0x8C73, 0xE1DA, 0x5DB7,
+	0xE1DB, 0x5DC5, 0xE1DC, 0x5F73, 0xE1DD, 0x5F77, 0xE1DE, 0x5F82,
+	0xE1DF, 0x5F87, 0xE1E0, 0x5F89, 0xE1E1, 0x5F8C, 0xE1E2, 0x5F95,
+	0xE1E3, 0x5F99, 0xE1E4, 0x5F9C, 0xE1E5, 0x5FA8, 0xE1E6, 0x5FAD,
+	0xE1E7, 0x5FB5, 0xE1E8, 0x5FBC, 0xE1E9, 0x8862, 0xE1EA, 0x5F61,
+	0xE1EB, 0x72AD, 0xE1EC, 0x72B0, 0xE1ED, 0x72B4, 0xE1EE, 0x72B7,
+	0xE1EF, 0x72B8, 0xE1F0, 0x72C3, 0xE1F1, 0x72C1, 0xE1F2, 0x72CE,
+	0xE1F3, 0x72CD, 0xE1F4, 0x72D2, 0xE1F5, 0x72E8, 0xE1F6, 0x72EF,
+	0xE1F7, 0x72E9, 0xE1F8, 0x72F2, 0xE1F9, 0x72F4, 0xE1FA, 0x72F7,
+	0xE1FB, 0x7301, 0xE1FC, 0x72F3, 0xE1FD, 0x7303, 0xE1FE, 0x72FA,
+	0xE240, 0x91E6, 0xE241, 0x91E7, 0xE242, 0x91E8, 0xE243, 0x91E9,
+	0xE244, 0x91EA, 0xE245, 0x91EB, 0xE246, 0x91EC, 0xE247, 0x91ED,
+	0xE248, 0x91EE, 0xE249, 0x91EF, 0xE24A, 0x91F0, 0xE24B, 0x91F1,
+	0xE24C, 0x91F2, 0xE24D, 0x91F3, 0xE24E, 0x91F4, 0xE24F, 0x91F5,
+	0xE250, 0x91F6, 0xE251, 0x91F7, 0xE252, 0x91F8, 0xE253, 0x91F9,
+	0xE254, 0x91FA, 0xE255, 0x91FB, 0xE256, 0x91FC, 0xE257, 0x91FD,
+	0xE258, 0x91FE, 0xE259, 0x91FF, 0xE25A, 0x9200, 0xE25B, 0x9201,
+	0xE25C, 0x9202, 0xE25D, 0x9203, 0xE25E, 0x9204, 0xE25F, 0x9205,
+	0xE260, 0x9206, 0xE261, 0x9207, 0xE262, 0x9208, 0xE263, 0x9209,
+	0xE264, 0x920A, 0xE265, 0x920B, 0xE266, 0x920C, 0xE267, 0x920D,
+	0xE268, 0x920E, 0xE269, 0x920F, 0xE26A, 0x9210, 0xE26B, 0x9211,
+	0xE26C, 0x9212, 0xE26D, 0x9213, 0xE26E, 0x9214, 0xE26F, 0x9215,
+	0xE270, 0x9216, 0xE271, 0x9217, 0xE272, 0x9218, 0xE273, 0x9219,
+	0xE274, 0x921A, 0xE275, 0x921B, 0xE276, 0x921C, 0xE277, 0x921D,
+	0xE278, 0x921E, 0xE279, 0x921F, 0xE27A, 0x9220, 0xE27B, 0x9221,
+	0xE27C, 0x9222, 0xE27D, 0x9223, 0xE27E, 0x9224, 0xE280, 0x9225,
+	0xE281, 0x9226, 0xE282, 0x9227, 0xE283, 0x9228, 0xE284, 0x9229,
+	0xE285, 0x922A, 0xE286, 0x922B, 0xE287, 0x922C, 0xE288, 0x922D,
+	0xE289, 0x922E, 0xE28A, 0x922F, 0xE28B, 0x9230, 0xE28C, 0x9231,
+	0xE28D, 0x9232, 0xE28E, 0x9233, 0xE28F, 0x9234, 0xE290, 0x9235,
+	0xE291, 0x9236, 0xE292, 0x9237, 0xE293, 0x9238, 0xE294, 0x9239,
+	0xE295, 0x923A, 0xE296, 0x923B, 0xE297, 0x923C, 0xE298, 0x923D,
+	0xE299, 0x923E, 0xE29A, 0x923F, 0xE29B, 0x9240, 0xE29C, 0x9241,
+	0xE29D, 0x9242, 0xE29E, 0x9243, 0xE29F, 0x9244, 0xE2A0, 0x9245,
+	0xE2A1, 0x72FB, 0xE2A2, 0x7317, 0xE2A3, 0x7313, 0xE2A4, 0x7321,
+	0xE2A5, 0x730A, 0xE2A6, 0x731E, 0xE2A7, 0x731D, 0xE2A8, 0x7315,
+	0xE2A9, 0x7322, 0xE2AA, 0x7339, 0xE2AB, 0x7325, 0xE2AC, 0x732C,
+	0xE2AD, 0x7338, 0xE2AE, 0x7331, 0xE2AF, 0x7350, 0xE2B0, 0x734D,
+	0xE2B1, 0x7357, 0xE2B2, 0x7360, 0xE2B3, 0x736C, 0xE2B4, 0x736F,
+	0xE2B5, 0x737E, 0xE2B6, 0x821B, 0xE2B7, 0x5925, 0xE2B8, 0x98E7,
+	0xE2B9, 0x5924, 0xE2BA, 0x5902, 0xE2BB, 0x9963, 0xE2BC, 0x9967,
+	0xE2BD, 0x9968, 0xE2BE, 0x9969, 0xE2BF, 0x996A, 0xE2C0, 0x996B,
+	0xE2C1, 0x996C, 0xE2C2, 0x9974, 0xE2C3, 0x9977, 0xE2C4, 0x997D,
+	0xE2C5, 0x9980, 0xE2C6, 0x9984, 0xE2C7, 0x9987, 0xE2C8, 0x998A,
+	0xE2C9, 0x998D, 0xE2CA, 0x9990, 0xE2CB, 0x9991, 0xE2CC, 0x9993,
+	0xE2CD, 0x9994, 0xE2CE, 0x9995, 0xE2CF, 0x5E80, 0xE2D0, 0x5E91,
+	0xE2D1, 0x5E8B, 0xE2D2, 0x5E96, 0xE2D3, 0x5EA5, 0xE2D4, 0x5EA0,
+	0xE2D5, 0x5EB9, 0xE2D6, 0x5EB5, 0xE2D7, 0x5EBE, 0xE2D8, 0x5EB3,
+	0xE2D9, 0x8D53, 0xE2DA, 0x5ED2, 0xE2DB, 0x5ED1, 0xE2DC, 0x5EDB,
+	0xE2DD, 0x5EE8, 0xE2DE, 0x5EEA, 0xE2DF, 0x81BA, 0xE2E0, 0x5FC4,
+	0xE2E1, 0x5FC9, 0xE2E2, 0x5FD6, 0xE2E3, 0x5FCF, 0xE2E4, 0x6003,
+	0xE2E5, 0x5FEE, 0xE2E6, 0x6004, 0xE2E7, 0x5FE1, 0xE2E8, 0x5FE4,
+	0xE2E9, 0x5FFE, 0xE2EA, 0x6005, 0xE2EB, 0x6006, 0xE2EC, 0x5FEA,
+	0xE2ED, 0x5FED, 0xE2EE, 0x5FF8, 0xE2EF, 0x6019, 0xE2F0, 0x6035,
+	0xE2F1, 0x6026, 0xE2F2, 0x601B, 0xE2F3, 0x600F, 0xE2F4, 0x600D,
+	0xE2F5, 0x6029, 0xE2F6, 0x602B, 0xE2F7, 0x600A, 0xE2F8, 0x603F,
+	0xE2F9, 0x6021, 0xE2FA, 0x6078, 0xE2FB, 0x6079, 0xE2FC, 0x607B,
+	0xE2FD, 0x607A, 0xE2FE, 0x6042, 0xE340, 0x9246, 0xE341, 0x9247,
+	0xE342, 0x9248, 0xE343, 0x9249, 0xE344, 0x924A, 0xE345, 0x924B,
+	0xE346, 0x924C, 0xE347, 0x924D, 0xE348, 0x924E, 0xE349, 0x924F,
+	0xE34A, 0x9250, 0xE34B, 0x9251, 0xE34C, 0x9252, 0xE34D, 0x9253,
+	0xE34E, 0x9254, 0xE34F, 0x9255, 0xE350, 0x9256, 0xE351, 0x9257,
+	0xE352, 0x9258, 0xE353, 0x9259, 0xE354, 0x925A, 0xE355, 0x925B,
+	0xE356, 0x925C, 0xE357, 0x925D, 0xE358, 0x925E, 0xE359, 0x925F,
+	0xE35A, 0x9260, 0xE35B, 0x9261, 0xE35C, 0x9262, 0xE35D, 0x9263,
+	0xE35E, 0x9264, 0xE35F, 0x9265, 0xE360, 0x9266, 0xE361, 0x9267,
+	0xE362, 0x9268, 0xE363, 0x9269, 0xE364, 0x926A, 0xE365, 0x926B,
+	0xE366, 0x926C, 0xE367, 0x926D, 0xE368, 0x926E, 0xE369, 0x926F,
+	0xE36A, 0x9270, 0xE36B, 0x9271, 0xE36C, 0x9272, 0xE36D, 0x9273,
+	0xE36E, 0x9275, 0xE36F, 0x9276, 0xE370, 0x9277, 0xE371, 0x9278,
+	0xE372, 0x9279, 0xE373, 0x927A, 0xE374, 0x927B, 0xE375, 0x927C,
+	0xE376, 0x927D, 0xE377, 0x927E, 0xE378, 0x927F, 0xE379, 0x9280,
+	0xE37A, 0x9281, 0xE37B, 0x9282, 0xE37C, 0x9283, 0xE37D, 0x9284,
+	0xE37E, 0x9285, 0xE380, 0x9286, 0xE381, 0x9287, 0xE382, 0x9288,
+	0xE383, 0x9289, 0xE384, 0x928A, 0xE385, 0x928B, 0xE386, 0x928C,
+	0xE387, 0x928D, 0xE388, 0x928F, 0xE389, 0x9290, 0xE38A, 0x9291,
+	0xE38B, 0x9292, 0xE38C, 0x9293, 0xE38D, 0x9294, 0xE38E, 0x9295,
+	0xE38F, 0x9296, 0xE390, 0x9297, 0xE391, 0x9298, 0xE392, 0x9299,
+	0xE393, 0x929A, 0xE394, 0x929B, 0xE395, 0x929C, 0xE396, 0x929D,
+	0xE397, 0x929E, 0xE398, 0x929F, 0xE399, 0x92A0, 0xE39A, 0x92A1,
+	0xE39B, 0x92A2, 0xE39C, 0x92A3, 0xE39D, 0x92A4, 0xE39E, 0x92A5,
+	0xE39F, 0x92A6, 0xE3A0, 0x92A7, 0xE3A1, 0x606A, 0xE3A2, 0x607D,
+	0xE3A3, 0x6096, 0xE3A4, 0x609A, 0xE3A5, 0x60AD, 0xE3A6, 0x609D,
+	0xE3A7, 0x6083, 0xE3A8, 0x6092, 0xE3A9, 0x608C, 0xE3AA, 0x609B,
+	0xE3AB, 0x60EC, 0xE3AC, 0x60BB, 0xE3AD, 0x60B1, 0xE3AE, 0x60DD,
+	0xE3AF, 0x60D8, 0xE3B0, 0x60C6, 0xE3B1, 0x60DA, 0xE3B2, 0x60B4,
+	0xE3B3, 0x6120, 0xE3B4, 0x6126, 0xE3B5, 0x6115, 0xE3B6, 0x6123,
+	0xE3B7, 0x60F4, 0xE3B8, 0x6100, 0xE3B9, 0x610E, 0xE3BA, 0x612B,
+	0xE3BB, 0x614A, 0xE3BC, 0x6175, 0xE3BD, 0x61AC, 0xE3BE, 0x6194,
+	0xE3BF, 0x61A7, 0xE3C0, 0x61B7, 0xE3C1, 0x61D4, 0xE3C2, 0x61F5,
+	0xE3C3, 0x5FDD, 0xE3C4, 0x96B3, 0xE3C5, 0x95E9, 0xE3C6, 0x95EB,
+	0xE3C7, 0x95F1, 0xE3C8, 0x95F3, 0xE3C9, 0x95F5, 0xE3CA, 0x95F6,
+	0xE3CB, 0x95FC, 0xE3CC, 0x95FE, 0xE3CD, 0x9603, 0xE3CE, 0x9604,
+	0xE3CF, 0x9606, 0xE3D0, 0x9608, 0xE3D1, 0x960A, 0xE3D2, 0x960B,
+	0xE3D3, 0x960C, 0xE3D4, 0x960D, 0xE3D5, 0x960F, 0xE3D6, 0x9612,
+	0xE3D7, 0x9615, 0xE3D8, 0x9616, 0xE3D9, 0x9617, 0xE3DA, 0x9619,
+	0xE3DB, 0x961A, 0xE3DC, 0x4E2C, 0xE3DD, 0x723F, 0xE3DE, 0x6215,
+	0xE3DF, 0x6C35, 0xE3E0, 0x6C54, 0xE3E1, 0x6C5C, 0xE3E2, 0x6C4A,
+	0xE3E3, 0x6CA3, 0xE3E4, 0x6C85, 0xE3E5, 0x6C90, 0xE3E6, 0x6C94,
+	0xE3E7, 0x6C8C, 0xE3E8, 0x6C68, 0xE3E9, 0x6C69, 0xE3EA, 0x6C74,
+	0xE3EB, 0x6C76, 0xE3EC, 0x6C86, 0xE3ED, 0x6CA9, 0xE3EE, 0x6CD0,
+	0xE3EF, 0x6CD4, 0xE3F0, 0x6CAD, 0xE3F1, 0x6CF7, 0xE3F2, 0x6CF8,
+	0xE3F3, 0x6CF1, 0xE3F4, 0x6CD7, 0xE3F5, 0x6CB2, 0xE3F6, 0x6CE0,
+	0xE3F7, 0x6CD6, 0xE3F8, 0x6CFA, 0xE3F9, 0x6CEB, 0xE3FA, 0x6CEE,
+	0xE3FB, 0x6CB1, 0xE3FC, 0x6CD3, 0xE3FD, 0x6CEF, 0xE3FE, 0x6CFE,
+	0xE440, 0x92A8, 0xE441, 0x92A9, 0xE442, 0x92AA, 0xE443, 0x92AB,
+	0xE444, 0x92AC, 0xE445, 0x92AD, 0xE446, 0x92AF, 0xE447, 0x92B0,
+	0xE448, 0x92B1, 0xE449, 0x92B2, 0xE44A, 0x92B3, 0xE44B, 0x92B4,
+	0xE44C, 0x92B5, 0xE44D, 0x92B6, 0xE44E, 0x92B7, 0xE44F, 0x92B8,
+	0xE450, 0x92B9, 0xE451, 0x92BA, 0xE452, 0x92BB, 0xE453, 0x92BC,
+	0xE454, 0x92BD, 0xE455, 0x92BE, 0xE456, 0x92BF, 0xE457, 0x92C0,
+	0xE458, 0x92C1, 0xE459, 0x92C2, 0xE45A, 0x92C3, 0xE45B, 0x92C4,
+	0xE45C, 0x92C5, 0xE45D, 0x92C6, 0xE45E, 0x92C7, 0xE45F, 0x92C9,
+	0xE460, 0x92CA, 0xE461, 0x92CB, 0xE462, 0x92CC, 0xE463, 0x92CD,
+	0xE464, 0x92CE, 0xE465, 0x92CF, 0xE466, 0x92D0, 0xE467, 0x92D1,
+	0xE468, 0x92D2, 0xE469, 0x92D3, 0xE46A, 0x92D4, 0xE46B, 0x92D5,
+	0xE46C, 0x92D6, 0xE46D, 0x92D7, 0xE46E, 0x92D8, 0xE46F, 0x92D9,
+	0xE470, 0x92DA, 0xE471, 0x92DB, 0xE472, 0x92DC, 0xE473, 0x92DD,
+	0xE474, 0x92DE, 0xE475, 0x92DF, 0xE476, 0x92E0, 0xE477, 0x92E1,
+	0xE478, 0x92E2, 0xE479, 0x92E3, 0xE47A, 0x92E4, 0xE47B, 0x92E5,
+	0xE47C, 0x92E6, 0xE47D, 0x92E7, 0xE47E, 0x92E8, 0xE480, 0x92E9,
+	0xE481, 0x92EA, 0xE482, 0x92EB, 0xE483, 0x92EC, 0xE484, 0x92ED,
+	0xE485, 0x92EE, 0xE486, 0x92EF, 0xE487, 0x92F0, 0xE488, 0x92F1,
+	0xE489, 0x92F2, 0xE48A, 0x92F3, 0xE48B, 0x92F4, 0xE48C, 0x92F5,
+	0xE48D, 0x92F6, 0xE48E, 0x92F7, 0xE48F, 0x92F8, 0xE490, 0x92F9,
+	0xE491, 0x92FA, 0xE492, 0x92FB, 0xE493, 0x92FC, 0xE494, 0x92FD,
+	0xE495, 0x92FE, 0xE496, 0x92FF, 0xE497, 0x9300, 0xE498, 0x9301,
+	0xE499, 0x9302, 0xE49A, 0x9303, 0xE49B, 0x9304, 0xE49C, 0x9305,
+	0xE49D, 0x9306, 0xE49E, 0x9307, 0xE49F, 0x9308, 0xE4A0, 0x9309,
+	0xE4A1, 0x6D39, 0xE4A2, 0x6D27, 0xE4A3, 0x6D0C, 0xE4A4, 0x6D43,
+	0xE4A5, 0x6D48, 0xE4A6, 0x6D07, 0xE4A7, 0x6D04, 0xE4A8, 0x6D19,
+	0xE4A9, 0x6D0E, 0xE4AA, 0x6D2B, 0xE4AB, 0x6D4D, 0xE4AC, 0x6D2E,
+	0xE4AD, 0x6D35, 0xE4AE, 0x6D1A, 0xE4AF, 0x6D4F, 0xE4B0, 0x6D52,
+	0xE4B1, 0x6D54, 0xE4B2, 0x6D33, 0xE4B3, 0x6D91, 0xE4B4, 0x6D6F,
+	0xE4B5, 0x6D9E, 0xE4B6, 0x6DA0, 0xE4B7, 0x6D5E, 0xE4B8, 0x6D93,
+	0xE4B9, 0x6D94, 0xE4BA, 0x6D5C, 0xE4BB, 0x6D60, 0xE4BC, 0x6D7C,
+	0xE4BD, 0x6D63, 0xE4BE, 0x6E1A, 0xE4BF, 0x6DC7, 0xE4C0, 0x6DC5,
+	0xE4C1, 0x6DDE, 0xE4C2, 0x6E0E, 0xE4C3, 0x6DBF, 0xE4C4, 0x6DE0,
+	0xE4C5, 0x6E11, 0xE4C6, 0x6DE6, 0xE4C7, 0x6DDD, 0xE4C8, 0x6DD9,
+	0xE4C9, 0x6E16, 0xE4CA, 0x6DAB, 0xE4CB, 0x6E0C, 0xE4CC, 0x6DAE,
+	0xE4CD, 0x6E2B, 0xE4CE, 0x6E6E, 0xE4CF, 0x6E4E, 0xE4D0, 0x6E6B,
+	0xE4D1, 0x6EB2, 0xE4D2, 0x6E5F, 0xE4D3, 0x6E86, 0xE4D4, 0x6E53,
+	0xE4D5, 0x6E54, 0xE4D6, 0x6E32, 0xE4D7, 0x6E25, 0xE4D8, 0x6E44,
+	0xE4D9, 0x6EDF, 0xE4DA, 0x6EB1, 0xE4DB, 0x6E98, 0xE4DC, 0x6EE0,
+	0xE4DD, 0x6F2D, 0xE4DE, 0x6EE2, 0xE4DF, 0x6EA5, 0xE4E0, 0x6EA7,
+	0xE4E1, 0x6EBD, 0xE4E2, 0x6EBB, 0xE4E3, 0x6EB7, 0xE4E4, 0x6ED7,
+	0xE4E5, 0x6EB4, 0xE4E6, 0x6ECF, 0xE4E7, 0x6E8F, 0xE4E8, 0x6EC2,
+	0xE4E9, 0x6E9F, 0xE4EA, 0x6F62, 0xE4EB, 0x6F46, 0xE4EC, 0x6F47,
+	0xE4ED, 0x6F24, 0xE4EE, 0x6F15, 0xE4EF, 0x6EF9, 0xE4F0, 0x6F2F,
+	0xE4F1, 0x6F36, 0xE4F2, 0x6F4B, 0xE4F3, 0x6F74, 0xE4F4, 0x6F2A,
+	0xE4F5, 0x6F09, 0xE4F6, 0x6F29, 0xE4F7, 0x6F89, 0xE4F8, 0x6F8D,
+	0xE4F9, 0x6F8C, 0xE4FA, 0x6F78, 0xE4FB, 0x6F72, 0xE4FC, 0x6F7C,
+	0xE4FD, 0x6F7A, 0xE4FE, 0x6FD1, 0xE540, 0x930A, 0xE541, 0x930B,
+	0xE542, 0x930C, 0xE543, 0x930D, 0xE544, 0x930E, 0xE545, 0x930F,
+	0xE546, 0x9310, 0xE547, 0x9311, 0xE548, 0x9312, 0xE549, 0x9313,
+	0xE54A, 0x9314, 0xE54B, 0x9315, 0xE54C, 0x9316, 0xE54D, 0x9317,
+	0xE54E, 0x9318, 0xE54F, 0x9319, 0xE550, 0x931A, 0xE551, 0x931B,
+	0xE552, 0x931C, 0xE553, 0x931D, 0xE554, 0x931E, 0xE555, 0x931F,
+	0xE556, 0x9320, 0xE557, 0x9321, 0xE558, 0x9322, 0xE559, 0x9323,
+	0xE55A, 0x9324, 0xE55B, 0x9325, 0xE55C, 0x9326, 0xE55D, 0x9327,
+	0xE55E, 0x9328, 0xE55F, 0x9329, 0xE560, 0x932A, 0xE561, 0x932B,
+	0xE562, 0x932C, 0xE563, 0x932D, 0xE564, 0x932E, 0xE565, 0x932F,
+	0xE566, 0x9330, 0xE567, 0x9331, 0xE568, 0x9332, 0xE569, 0x9333,
+	0xE56A, 0x9334, 0xE56B, 0x9335, 0xE56C, 0x9336, 0xE56D, 0x9337,
+	0xE56E, 0x9338, 0xE56F, 0x9339, 0xE570, 0x933A, 0xE571, 0x933B,
+	0xE572, 0x933C, 0xE573, 0x933D, 0xE574, 0x933F, 0xE575, 0x9340,
+	0xE576, 0x9341, 0xE577, 0x9342, 0xE578, 0x9343, 0xE579, 0x9344,
+	0xE57A, 0x9345, 0xE57B, 0x9346, 0xE57C, 0x9347, 0xE57D, 0x9348,
+	0xE57E, 0x9349, 0xE580, 0x934A, 0xE581, 0x934B, 0xE582, 0x934C,
+	0xE583, 0x934D, 0xE584, 0x934E, 0xE585, 0x934F, 0xE586, 0x9350,
+	0xE587, 0x9351, 0xE588, 0x9352, 0xE589, 0x9353, 0xE58A, 0x9354,
+	0xE58B, 0x9355, 0xE58C, 0x9356, 0xE58D, 0x9357, 0xE58E, 0x9358,
+	0xE58F, 0x9359, 0xE590, 0x935A, 0xE591, 0x935B, 0xE592, 0x935C,
+	0xE593, 0x935D, 0xE594, 0x935E, 0xE595, 0x935F, 0xE596, 0x9360,
+	0xE597, 0x9361, 0xE598, 0x9362, 0xE599, 0x9363, 0xE59A, 0x9364,
+	0xE59B, 0x9365, 0xE59C, 0x9366, 0xE59D, 0x9367, 0xE59E, 0x9368,
+	0xE59F, 0x9369, 0xE5A0, 0x936B, 0xE5A1, 0x6FC9, 0xE5A2, 0x6FA7,
+	0xE5A3, 0x6FB9, 0xE5A4, 0x6FB6, 0xE5A5, 0x6FC2, 0xE5A6, 0x6FE1,
+	0xE5A7, 0x6FEE, 0xE5A8, 0x6FDE, 0xE5A9, 0x6FE0, 0xE5AA, 0x6FEF,
+	0xE5AB, 0x701A, 0xE5AC, 0x7023, 0xE5AD, 0x701B, 0xE5AE, 0x7039,
+	0xE5AF, 0x7035, 0xE5B0, 0x704F, 0xE5B1, 0x705E, 0xE5B2, 0x5B80,
+	0xE5B3, 0x5B84, 0xE5B4, 0x5B95, 0xE5B5, 0x5B93, 0xE5B6, 0x5BA5,
+	0xE5B7, 0x5BB8, 0xE5B8, 0x752F, 0xE5B9, 0x9A9E, 0xE5BA, 0x6434,
+	0xE5BB, 0x5BE4, 0xE5BC, 0x5BEE, 0xE5BD, 0x8930, 0xE5BE, 0x5BF0,
+	0xE5BF, 0x8E47, 0xE5C0, 0x8B07, 0xE5C1, 0x8FB6, 0xE5C2, 0x8FD3,
+	0xE5C3, 0x8FD5, 0xE5C4, 0x8FE5, 0xE5C5, 0x8FEE, 0xE5C6, 0x8FE4,
+	0xE5C7, 0x8FE9, 0xE5C8, 0x8FE6, 0xE5C9, 0x8FF3, 0xE5CA, 0x8FE8,
+	0xE5CB, 0x9005, 0xE5CC, 0x9004, 0xE5CD, 0x900B, 0xE5CE, 0x9026,
+	0xE5CF, 0x9011, 0xE5D0, 0x900D, 0xE5D1, 0x9016, 0xE5D2, 0x9021,
+	0xE5D3, 0x9035, 0xE5D4, 0x9036, 0xE5D5, 0x902D, 0xE5D6, 0x902F,
+	0xE5D7, 0x9044, 0xE5D8, 0x9051, 0xE5D9, 0x9052, 0xE5DA, 0x9050,
+	0xE5DB, 0x9068, 0xE5DC, 0x9058, 0xE5DD, 0x9062, 0xE5DE, 0x905B,
+	0xE5DF, 0x66B9, 0xE5E0, 0x9074, 0xE5E1, 0x907D, 0xE5E2, 0x9082,
+	0xE5E3, 0x9088, 0xE5E4, 0x9083, 0xE5E5, 0x908B, 0xE5E6, 0x5F50,
+	0xE5E7, 0x5F57, 0xE5E8, 0x5F56, 0xE5E9, 0x5F58, 0xE5EA, 0x5C3B,
+	0xE5EB, 0x54AB, 0xE5EC, 0x5C50, 0xE5ED, 0x5C59, 0xE5EE, 0x5B71,
+	0xE5EF, 0x5C63, 0xE5F0, 0x5C66, 0xE5F1, 0x7FBC, 0xE5F2, 0x5F2A,
+	0xE5F3, 0x5F29, 0xE5F4, 0x5F2D, 0xE5F5, 0x8274, 0xE5F6, 0x5F3C,
+	0xE5F7, 0x9B3B, 0xE5F8, 0x5C6E, 0xE5F9, 0x5981, 0xE5FA, 0x5983,
+	0xE5FB, 0x598D, 0xE5FC, 0x59A9, 0xE5FD, 0x59AA, 0xE5FE, 0x59A3,
+	0xE640, 0x936C, 0xE641, 0x936D, 0xE642, 0x936E, 0xE643, 0x936F,
+	0xE644, 0x9370, 0xE645, 0x9371, 0xE646, 0x9372, 0xE647, 0x9373,
+	0xE648, 0x9374, 0xE649, 0x9375, 0xE64A, 0x9376, 0xE64B, 0x9377,
+	0xE64C, 0x9378, 0xE64D, 0x9379, 0xE64E, 0x937A, 0xE64F, 0x937B,
+	0xE650, 0x937C, 0xE651, 0x937D, 0xE652, 0x937E, 0xE653, 0x937F,
+	0xE654, 0x9380, 0xE655, 0x9381, 0xE656, 0x9382, 0xE657, 0x9383,
+	0xE658, 0x9384, 0xE659, 0x9385, 0xE65A, 0x9386, 0xE65B, 0x9387,
+	0xE65C, 0x9388, 0xE65D, 0x9389, 0xE65E, 0x938A, 0xE65F, 0x938B,
+	0xE660, 0x938C, 0xE661, 0x938D, 0xE662, 0x938E, 0xE663, 0x9390,
+	0xE664, 0x9391, 0xE665, 0x9392, 0xE666, 0x9393, 0xE667, 0x9394,
+	0xE668, 0x9395, 0xE669, 0x9396, 0xE66A, 0x9397, 0xE66B, 0x9398,
+	0xE66C, 0x9399, 0xE66D, 0x939A, 0xE66E, 0x939B, 0xE66F, 0x939C,
+	0xE670, 0x939D, 0xE671, 0x939E, 0xE672, 0x939F, 0xE673, 0x93A0,
+	0xE674, 0x93A1, 0xE675, 0x93A2, 0xE676, 0x93A3, 0xE677, 0x93A4,
+	0xE678, 0x93A5, 0xE679, 0x93A6, 0xE67A, 0x93A7, 0xE67B, 0x93A8,
+	0xE67C, 0x93A9, 0xE67D, 0x93AA, 0xE67E, 0x93AB, 0xE680, 0x93AC,
+	0xE681, 0x93AD, 0xE682, 0x93AE, 0xE683, 0x93AF, 0xE684, 0x93B0,
+	0xE685, 0x93B1, 0xE686, 0x93B2, 0xE687, 0x93B3, 0xE688, 0x93B4,
+	0xE689, 0x93B5, 0xE68A, 0x93B6, 0xE68B, 0x93B7, 0xE68C, 0x93B8,
+	0xE68D, 0x93B9, 0xE68E, 0x93BA, 0xE68F, 0x93BB, 0xE690, 0x93BC,
+	0xE691, 0x93BD, 0xE692, 0x93BE, 0xE693, 0x93BF, 0xE694, 0x93C0,
+	0xE695, 0x93C1, 0xE696, 0x93C2, 0xE697, 0x93C3, 0xE698, 0x93C4,
+	0xE699, 0x93C5, 0xE69A, 0x93C6, 0xE69B, 0x93C7, 0xE69C, 0x93C8,
+	0xE69D, 0x93C9, 0xE69E, 0x93CB, 0xE69F, 0x93CC, 0xE6A0, 0x93CD,
+	0xE6A1, 0x5997, 0xE6A2, 0x59CA, 0xE6A3, 0x59AB, 0xE6A4, 0x599E,
+	0xE6A5, 0x59A4, 0xE6A6, 0x59D2, 0xE6A7, 0x59B2, 0xE6A8, 0x59AF,
+	0xE6A9, 0x59D7, 0xE6AA, 0x59BE, 0xE6AB, 0x5A05, 0xE6AC, 0x5A06,
+	0xE6AD, 0x59DD, 0xE6AE, 0x5A08, 0xE6AF, 0x59E3, 0xE6B0, 0x59D8,
+	0xE6B1, 0x59F9, 0xE6B2, 0x5A0C, 0xE6B3, 0x5A09, 0xE6B4, 0x5A32,
+	0xE6B5, 0x5A34, 0xE6B6, 0x5A11, 0xE6B7, 0x5A23, 0xE6B8, 0x5A13,
+	0xE6B9, 0x5A40, 0xE6BA, 0x5A67, 0xE6BB, 0x5A4A, 0xE6BC, 0x5A55,
+	0xE6BD, 0x5A3C, 0xE6BE, 0x5A62, 0xE6BF, 0x5A75, 0xE6C0, 0x80EC,
+	0xE6C1, 0x5AAA, 0xE6C2, 0x5A9B, 0xE6C3, 0x5A77, 0xE6C4, 0x5A7A,
+	0xE6C5, 0x5ABE, 0xE6C6, 0x5AEB, 0xE6C7, 0x5AB2, 0xE6C8, 0x5AD2,
+	0xE6C9, 0x5AD4, 0xE6CA, 0x5AB8, 0xE6CB, 0x5AE0, 0xE6CC, 0x5AE3,
+	0xE6CD, 0x5AF1, 0xE6CE, 0x5AD6, 0xE6CF, 0x5AE6, 0xE6D0, 0x5AD8,
+	0xE6D1, 0x5ADC, 0xE6D2, 0x5B09, 0xE6D3, 0x5B17, 0xE6D4, 0x5B16,
+	0xE6D5, 0x5B32, 0xE6D6, 0x5B37, 0xE6D7, 0x5B40, 0xE6D8, 0x5C15,
+	0xE6D9, 0x5C1C, 0xE6DA, 0x5B5A, 0xE6DB, 0x5B65, 0xE6DC, 0x5B73,
+	0xE6DD, 0x5B51, 0xE6DE, 0x5B53, 0xE6DF, 0x5B62, 0xE6E0, 0x9A75,
+	0xE6E1, 0x9A77, 0xE6E2, 0x9A78, 0xE6E3, 0x9A7A, 0xE6E4, 0x9A7F,
+	0xE6E5, 0x9A7D, 0xE6E6, 0x9A80, 0xE6E7, 0x9A81, 0xE6E8, 0x9A85,
+	0xE6E9, 0x9A88, 0xE6EA, 0x9A8A, 0xE6EB, 0x9A90, 0xE6EC, 0x9A92,
+	0xE6ED, 0x9A93, 0xE6EE, 0x9A96, 0xE6EF, 0x9A98, 0xE6F0, 0x9A9B,
+	0xE6F1, 0x9A9C, 0xE6F2, 0x9A9D, 0xE6F3, 0x9A9F, 0xE6F4, 0x9AA0,
+	0xE6F5, 0x9AA2, 0xE6F6, 0x9AA3, 0xE6F7, 0x9AA5, 0xE6F8, 0x9AA7,
+	0xE6F9, 0x7E9F, 0xE6FA, 0x7EA1, 0xE6FB, 0x7EA3, 0xE6FC, 0x7EA5,
+	0xE6FD, 0x7EA8, 0xE6FE, 0x7EA9, 0xE740, 0x93CE, 0xE741, 0x93CF,
+	0xE742, 0x93D0, 0xE743, 0x93D1, 0xE744, 0x93D2, 0xE745, 0x93D3,
+	0xE746, 0x93D4, 0xE747, 0x93D5, 0xE748, 0x93D7, 0xE749, 0x93D8,
+	0xE74A, 0x93D9, 0xE74B, 0x93DA, 0xE74C, 0x93DB, 0xE74D, 0x93DC,
+	0xE74E, 0x93DD, 0xE74F, 0x93DE, 0xE750, 0x93DF, 0xE751, 0x93E0,
+	0xE752, 0x93E1, 0xE753, 0x93E2, 0xE754, 0x93E3, 0xE755, 0x93E4,
+	0xE756, 0x93E5, 0xE757, 0x93E6, 0xE758, 0x93E7, 0xE759, 0x93E8,
+	0xE75A, 0x93E9, 0xE75B, 0x93EA, 0xE75C, 0x93EB, 0xE75D, 0x93EC,
+	0xE75E, 0x93ED, 0xE75F, 0x93EE, 0xE760, 0x93EF, 0xE761, 0x93F0,
+	0xE762, 0x93F1, 0xE763, 0x93F2, 0xE764, 0x93F3, 0xE765, 0x93F4,
+	0xE766, 0x93F5, 0xE767, 0x93F6, 0xE768, 0x93F7, 0xE769, 0x93F8,
+	0xE76A, 0x93F9, 0xE76B, 0x93FA, 0xE76C, 0x93FB, 0xE76D, 0x93FC,
+	0xE76E, 0x93FD, 0xE76F, 0x93FE, 0xE770, 0x93FF, 0xE771, 0x9400,
+	0xE772, 0x9401, 0xE773, 0x9402, 0xE774, 0x9403, 0xE775, 0x9404,
+	0xE776, 0x9405, 0xE777, 0x9406, 0xE778, 0x9407, 0xE779, 0x9408,
+	0xE77A, 0x9409, 0xE77B, 0x940A, 0xE77C, 0x940B, 0xE77D, 0x940C,
+	0xE77E, 0x940D, 0xE780, 0x940E, 0xE781, 0x940F, 0xE782, 0x9410,
+	0xE783, 0x9411, 0xE784, 0x9412, 0xE785, 0x9413, 0xE786, 0x9414,
+	0xE787, 0x9415, 0xE788, 0x9416, 0xE789, 0x9417, 0xE78A, 0x9418,
+	0xE78B, 0x9419, 0xE78C, 0x941A, 0xE78D, 0x941B, 0xE78E, 0x941C,
+	0xE78F, 0x941D, 0xE790, 0x941E, 0xE791, 0x941F, 0xE792, 0x9420,
+	0xE793, 0x9421, 0xE794, 0x9422, 0xE795, 0x9423, 0xE796, 0x9424,
+	0xE797, 0x9425, 0xE798, 0x9426, 0xE799, 0x9427, 0xE79A, 0x9428,
+	0xE79B, 0x9429, 0xE79C, 0x942A, 0xE79D, 0x942B, 0xE79E, 0x942C,
+	0xE79F, 0x942D, 0xE7A0, 0x942E, 0xE7A1, 0x7EAD, 0xE7A2, 0x7EB0,
+	0xE7A3, 0x7EBE, 0xE7A4, 0x7EC0, 0xE7A5, 0x7EC1, 0xE7A6, 0x7EC2,
+	0xE7A7, 0x7EC9, 0xE7A8, 0x7ECB, 0xE7A9, 0x7ECC, 0xE7AA, 0x7ED0,
+	0xE7AB, 0x7ED4, 0xE7AC, 0x7ED7, 0xE7AD, 0x7EDB, 0xE7AE, 0x7EE0,
+	0xE7AF, 0x7EE1, 0xE7B0, 0x7EE8, 0xE7B1, 0x7EEB, 0xE7B2, 0x7EEE,
+	0xE7B3, 0x7EEF, 0xE7B4, 0x7EF1, 0xE7B5, 0x7EF2, 0xE7B6, 0x7F0D,
+	0xE7B7, 0x7EF6, 0xE7B8, 0x7EFA, 0xE7B9, 0x7EFB, 0xE7BA, 0x7EFE,
+	0xE7BB, 0x7F01, 0xE7BC, 0x7F02, 0xE7BD, 0x7F03, 0xE7BE, 0x7F07,
+	0xE7BF, 0x7F08, 0xE7C0, 0x7F0B, 0xE7C1, 0x7F0C, 0xE7C2, 0x7F0F,
+	0xE7C3, 0x7F11, 0xE7C4, 0x7F12, 0xE7C5, 0x7F17, 0xE7C6, 0x7F19,
+	0xE7C7, 0x7F1C, 0xE7C8, 0x7F1B, 0xE7C9, 0x7F1F, 0xE7CA, 0x7F21,
+	0xE7CB, 0x7F22, 0xE7CC, 0x7F23, 0xE7CD, 0x7F24, 0xE7CE, 0x7F25,
+	0xE7CF, 0x7F26, 0xE7D0, 0x7F27, 0xE7D1, 0x7F2A, 0xE7D2, 0x7F2B,
+	0xE7D3, 0x7F2C, 0xE7D4, 0x7F2D, 0xE7D5, 0x7F2F, 0xE7D6, 0x7F30,
+	0xE7D7, 0x7F31, 0xE7D8, 0x7F32, 0xE7D9, 0x7F33, 0xE7DA, 0x7F35,
+	0xE7DB, 0x5E7A, 0xE7DC, 0x757F, 0xE7DD, 0x5DDB, 0xE7DE, 0x753E,
+	0xE7DF, 0x9095, 0xE7E0, 0x738E, 0xE7E1, 0x7391, 0xE7E2, 0x73AE,
+	0xE7E3, 0x73A2, 0xE7E4, 0x739F, 0xE7E5, 0x73CF, 0xE7E6, 0x73C2,
+	0xE7E7, 0x73D1, 0xE7E8, 0x73B7, 0xE7E9, 0x73B3, 0xE7EA, 0x73C0,
+	0xE7EB, 0x73C9, 0xE7EC, 0x73C8, 0xE7ED, 0x73E5, 0xE7EE, 0x73D9,
+	0xE7EF, 0x987C, 0xE7F0, 0x740A, 0xE7F1, 0x73E9, 0xE7F2, 0x73E7,
+	0xE7F3, 0x73DE, 0xE7F4, 0x73BA, 0xE7F5, 0x73F2, 0xE7F6, 0x740F,
+	0xE7F7, 0x742A, 0xE7F8, 0x745B, 0xE7F9, 0x7426, 0xE7FA, 0x7425,
+	0xE7FB, 0x7428, 0xE7FC, 0x7430, 0xE7FD, 0x742E, 0xE7FE, 0x742C,
+	0xE840, 0x942F, 0xE841, 0x9430, 0xE842, 0x9431, 0xE843, 0x9432,
+	0xE844, 0x9433, 0xE845, 0x9434, 0xE846, 0x9435, 0xE847, 0x9436,
+	0xE848, 0x9437, 0xE849, 0x9438, 0xE84A, 0x9439, 0xE84B, 0x943A,
+	0xE84C, 0x943B, 0xE84D, 0x943C, 0xE84E, 0x943D, 0xE84F, 0x943F,
+	0xE850, 0x9440, 0xE851, 0x9441, 0xE852, 0x9442, 0xE853, 0x9443,
+	0xE854, 0x9444, 0xE855, 0x9445, 0xE856, 0x9446, 0xE857, 0x9447,
+	0xE858, 0x9448, 0xE859, 0x9449, 0xE85A, 0x944A, 0xE85B, 0x944B,
+	0xE85C, 0x944C, 0xE85D, 0x944D, 0xE85E, 0x944E, 0xE85F, 0x944F,
+	0xE860, 0x9450, 0xE861, 0x9451, 0xE862, 0x9452, 0xE863, 0x9453,
+	0xE864, 0x9454, 0xE865, 0x9455, 0xE866, 0x9456, 0xE867, 0x9457,
+	0xE868, 0x9458, 0xE869, 0x9459, 0xE86A, 0x945A, 0xE86B, 0x945B,
+	0xE86C, 0x945C, 0xE86D, 0x945D, 0xE86E, 0x945E, 0xE86F, 0x945F,
+	0xE870, 0x9460, 0xE871, 0x9461, 0xE872, 0x9462, 0xE873, 0x9463,
+	0xE874, 0x9464, 0xE875, 0x9465, 0xE876, 0x9466, 0xE877, 0x9467,
+	0xE878, 0x9468, 0xE879, 0x9469, 0xE87A, 0x946A, 0xE87B, 0x946C,
+	0xE87C, 0x946D, 0xE87D, 0x946E, 0xE87E, 0x946F, 0xE880, 0x9470,
+	0xE881, 0x9471, 0xE882, 0x9472, 0xE883, 0x9473, 0xE884, 0x9474,
+	0xE885, 0x9475, 0xE886, 0x9476, 0xE887, 0x9477, 0xE888, 0x9478,
+	0xE889, 0x9479, 0xE88A, 0x947A, 0xE88B, 0x947B, 0xE88C, 0x947C,
+	0xE88D, 0x947D, 0xE88E, 0x947E, 0xE88F, 0x947F, 0xE890, 0x9480,
+	0xE891, 0x9481, 0xE892, 0x9482, 0xE893, 0x9483, 0xE894, 0x9484,
+	0xE895, 0x9491, 0xE896, 0x9496, 0xE897, 0x9498, 0xE898, 0x94C7,
+	0xE899, 0x94CF, 0xE89A, 0x94D3, 0xE89B, 0x94D4, 0xE89C, 0x94DA,
+	0xE89D, 0x94E6, 0xE89E, 0x94FB, 0xE89F, 0x951C, 0xE8A0, 0x9520,
+	0xE8A1, 0x741B, 0xE8A2, 0x741A, 0xE8A3, 0x7441, 0xE8A4, 0x745C,
+	0xE8A5, 0x7457, 0xE8A6, 0x7455, 0xE8A7, 0x7459, 0xE8A8, 0x7477,
+	0xE8A9, 0x746D, 0xE8AA, 0x747E, 0xE8AB, 0x749C, 0xE8AC, 0x748E,
+	0xE8AD, 0x7480, 0xE8AE, 0x7481, 0xE8AF, 0x7487, 0xE8B0, 0x748B,
+	0xE8B1, 0x749E, 0xE8B2, 0x74A8, 0xE8B3, 0x74A9, 0xE8B4, 0x7490,
+	0xE8B5, 0x74A7, 0xE8B6, 0x74D2, 0xE8B7, 0x74BA, 0xE8B8, 0x97EA,
+	0xE8B9, 0x97EB, 0xE8BA, 0x97EC, 0xE8BB, 0x674C, 0xE8BC, 0x6753,
+	0xE8BD, 0x675E, 0xE8BE, 0x6748, 0xE8BF, 0x6769, 0xE8C0, 0x67A5,
+	0xE8C1, 0x6787, 0xE8C2, 0x676A, 0xE8C3, 0x6773, 0xE8C4, 0x6798,
+	0xE8C5, 0x67A7, 0xE8C6, 0x6775, 0xE8C7, 0x67A8, 0xE8C8, 0x679E,
+	0xE8C9, 0x67AD, 0xE8CA, 0x678B, 0xE8CB, 0x6777, 0xE8CC, 0x677C,
+	0xE8CD, 0x67F0, 0xE8CE, 0x6809, 0xE8CF, 0x67D8, 0xE8D0, 0x680A,
+	0xE8D1, 0x67E9, 0xE8D2, 0x67B0, 0xE8D3, 0x680C, 0xE8D4, 0x67D9,
+	0xE8D5, 0x67B5, 0xE8D6, 0x67DA, 0xE8D7, 0x67B3, 0xE8D8, 0x67DD,
+	0xE8D9, 0x6800, 0xE8DA, 0x67C3, 0xE8DB, 0x67B8, 0xE8DC, 0x67E2,
+	0xE8DD, 0x680E, 0xE8DE, 0x67C1, 0xE8DF, 0x67FD, 0xE8E0, 0x6832,
+	0xE8E1, 0x6833, 0xE8E2, 0x6860, 0xE8E3, 0x6861, 0xE8E4, 0x684E,
+	0xE8E5, 0x6862, 0xE8E6, 0x6844, 0xE8E7, 0x6864, 0xE8E8, 0x6883,
+	0xE8E9, 0x681D, 0xE8EA, 0x6855, 0xE8EB, 0x6866, 0xE8EC, 0x6841,
+	0xE8ED, 0x6867, 0xE8EE, 0x6840, 0xE8EF, 0x683E, 0xE8F0, 0x684A,
+	0xE8F1, 0x6849, 0xE8F2, 0x6829, 0xE8F3, 0x68B5, 0xE8F4, 0x688F,
+	0xE8F5, 0x6874, 0xE8F6, 0x6877, 0xE8F7, 0x6893, 0xE8F8, 0x686B,
+	0xE8F9, 0x68C2, 0xE8FA, 0x696E, 0xE8FB, 0x68FC, 0xE8FC, 0x691F,
+	0xE8FD, 0x6920, 0xE8FE, 0x68F9, 0xE940, 0x9527, 0xE941, 0x9533,
+	0xE942, 0x953D, 0xE943, 0x9543, 0xE944, 0x9548, 0xE945, 0x954B,
+	0xE946, 0x9555, 0xE947, 0x955A, 0xE948, 0x9560, 0xE949, 0x956E,
+	0xE94A, 0x9574, 0xE94B, 0x9575, 0xE94C, 0x9577, 0xE94D, 0x9578,
+	0xE94E, 0x9579, 0xE94F, 0x957A, 0xE950, 0x957B, 0xE951, 0x957C,
+	0xE952, 0x957D, 0xE953, 0x957E, 0xE954, 0x9580, 0xE955, 0x9581,
+	0xE956, 0x9582, 0xE957, 0x9583, 0xE958, 0x9584, 0xE959, 0x9585,
+	0xE95A, 0x9586, 0xE95B, 0x9587, 0xE95C, 0x9588, 0xE95D, 0x9589,
+	0xE95E, 0x958A, 0xE95F, 0x958B, 0xE960, 0x958C, 0xE961, 0x958D,
+	0xE962, 0x958E, 0xE963, 0x958F, 0xE964, 0x9590, 0xE965, 0x9591,
+	0xE966, 0x9592, 0xE967, 0x9593, 0xE968, 0x9594, 0xE969, 0x9595,
+	0xE96A, 0x9596, 0xE96B, 0x9597, 0xE96C, 0x9598, 0xE96D, 0x9599,
+	0xE96E, 0x959A, 0xE96F, 0x959B, 0xE970, 0x959C, 0xE971, 0x959D,
+	0xE972, 0x959E, 0xE973, 0x959F, 0xE974, 0x95A0, 0xE975, 0x95A1,
+	0xE976, 0x95A2, 0xE977, 0x95A3, 0xE978, 0x95A4, 0xE979, 0x95A5,
+	0xE97A, 0x95A6, 0xE97B, 0x95A7, 0xE97C, 0x95A8, 0xE97D, 0x95A9,
+	0xE97E, 0x95AA, 0xE980, 0x95AB, 0xE981, 0x95AC, 0xE982, 0x95AD,
+	0xE983, 0x95AE, 0xE984, 0x95AF, 0xE985, 0x95B0, 0xE986, 0x95B1,
+	0xE987, 0x95B2, 0xE988, 0x95B3, 0xE989, 0x95B4, 0xE98A, 0x95B5,
+	0xE98B, 0x95B6, 0xE98C, 0x95B7, 0xE98D, 0x95B8, 0xE98E, 0x95B9,
+	0xE98F, 0x95BA, 0xE990, 0x95BB, 0xE991, 0x95BC, 0xE992, 0x95BD,
+	0xE993, 0x95BE, 0xE994, 0x95BF, 0xE995, 0x95C0, 0xE996, 0x95C1,
+	0xE997, 0x95C2, 0xE998, 0x95C3, 0xE999, 0x95C4, 0xE99A, 0x95C5,
+	0xE99B, 0x95C6, 0xE99C, 0x95C7, 0xE99D, 0x95C8, 0xE99E, 0x95C9,
+	0xE99F, 0x95CA, 0xE9A0, 0x95CB, 0xE9A1, 0x6924, 0xE9A2, 0x68F0,
+	0xE9A3, 0x690B, 0xE9A4, 0x6901, 0xE9A5, 0x6957, 0xE9A6, 0x68E3,
+	0xE9A7, 0x6910, 0xE9A8, 0x6971, 0xE9A9, 0x6939, 0xE9AA, 0x6960,
+	0xE9AB, 0x6942, 0xE9AC, 0x695D, 0xE9AD, 0x6984, 0xE9AE, 0x696B,
+	0xE9AF, 0x6980, 0xE9B0, 0x6998, 0xE9B1, 0x6978, 0xE9B2, 0x6934,
+	0xE9B3, 0x69CC, 0xE9B4, 0x6987, 0xE9B5, 0x6988, 0xE9B6, 0x69CE,
+	0xE9B7, 0x6989, 0xE9B8, 0x6966, 0xE9B9, 0x6963, 0xE9BA, 0x6979,
+	0xE9BB, 0x699B, 0xE9BC, 0x69A7, 0xE9BD, 0x69BB, 0xE9BE, 0x69AB,
+	0xE9BF, 0x69AD, 0xE9C0, 0x69D4, 0xE9C1, 0x69B1, 0xE9C2, 0x69C1,
+	0xE9C3, 0x69CA, 0xE9C4, 0x69DF, 0xE9C5, 0x6995, 0xE9C6, 0x69E0,
+	0xE9C7, 0x698D, 0xE9C8, 0x69FF, 0xE9C9, 0x6A2F, 0xE9CA, 0x69ED,
+	0xE9CB, 0x6A17, 0xE9CC, 0x6A18, 0xE9CD, 0x6A65, 0xE9CE, 0x69F2,
+	0xE9CF, 0x6A44, 0xE9D0, 0x6A3E, 0xE9D1, 0x6AA0, 0xE9D2, 0x6A50,
+	0xE9D3, 0x6A5B, 0xE9D4, 0x6A35, 0xE9D5, 0x6A8E, 0xE9D6, 0x6A79,
+	0xE9D7, 0x6A3D, 0xE9D8, 0x6A28, 0xE9D9, 0x6A58, 0xE9DA, 0x6A7C,
+	0xE9DB, 0x6A91, 0xE9DC, 0x6A90, 0xE9DD, 0x6AA9, 0xE9DE, 0x6A97,
+	0xE9DF, 0x6AAB, 0xE9E0, 0x7337, 0xE9E1, 0x7352, 0xE9E2, 0x6B81,
+	0xE9E3, 0x6B82, 0xE9E4, 0x6B87, 0xE9E5, 0x6B84, 0xE9E6, 0x6B92,
+	0xE9E7, 0x6B93, 0xE9E8, 0x6B8D, 0xE9E9, 0x6B9A, 0xE9EA, 0x6B9B,
+	0xE9EB, 0x6BA1, 0xE9EC, 0x6BAA, 0xE9ED, 0x8F6B, 0xE9EE, 0x8F6D,
+	0xE9EF, 0x8F71, 0xE9F0, 0x8F72, 0xE9F1, 0x8F73, 0xE9F2, 0x8F75,
+	0xE9F3, 0x8F76, 0xE9F4, 0x8F78, 0xE9F5, 0x8F77, 0xE9F6, 0x8F79,
+	0xE9F7, 0x8F7A, 0xE9F8, 0x8F7C, 0xE9F9, 0x8F7E, 0xE9FA, 0x8F81,
+	0xE9FB, 0x8F82, 0xE9FC, 0x8F84, 0xE9FD, 0x8F87, 0xE9FE, 0x8F8B,
+	0xEA40, 0x95CC, 0xEA41, 0x95CD, 0xEA42, 0x95CE, 0xEA43, 0x95CF,
+	0xEA44, 0x95D0, 0xEA45, 0x95D1, 0xEA46, 0x95D2, 0xEA47, 0x95D3,
+	0xEA48, 0x95D4, 0xEA49, 0x95D5, 0xEA4A, 0x95D6, 0xEA4B, 0x95D7,
+	0xEA4C, 0x95D8, 0xEA4D, 0x95D9, 0xEA4E, 0x95DA, 0xEA4F, 0x95DB,
+	0xEA50, 0x95DC, 0xEA51, 0x95DD, 0xEA52, 0x95DE, 0xEA53, 0x95DF,
+	0xEA54, 0x95E0, 0xEA55, 0x95E1, 0xEA56, 0x95E2, 0xEA57, 0x95E3,
+	0xEA58, 0x95E4, 0xEA59, 0x95E5, 0xEA5A, 0x95E6, 0xEA5B, 0x95E7,
+	0xEA5C, 0x95EC, 0xEA5D, 0x95FF, 0xEA5E, 0x9607, 0xEA5F, 0x9613,
+	0xEA60, 0x9618, 0xEA61, 0x961B, 0xEA62, 0x961E, 0xEA63, 0x9620,
+	0xEA64, 0x9623, 0xEA65, 0x9624, 0xEA66, 0x9625, 0xEA67, 0x9626,
+	0xEA68, 0x9627, 0xEA69, 0x9628, 0xEA6A, 0x9629, 0xEA6B, 0x962B,
+	0xEA6C, 0x962C, 0xEA6D, 0x962D, 0xEA6E, 0x962F, 0xEA6F, 0x9630,
+	0xEA70, 0x9637, 0xEA71, 0x9638, 0xEA72, 0x9639, 0xEA73, 0x963A,
+	0xEA74, 0x963E, 0xEA75, 0x9641, 0xEA76, 0x9643, 0xEA77, 0x964A,
+	0xEA78, 0x964E, 0xEA79, 0x964F, 0xEA7A, 0x9651, 0xEA7B, 0x9652,
+	0xEA7C, 0x9653, 0xEA7D, 0x9656, 0xEA7E, 0x9657, 0xEA80, 0x9658,
+	0xEA81, 0x9659, 0xEA82, 0x965A, 0xEA83, 0x965C, 0xEA84, 0x965D,
+	0xEA85, 0x965E, 0xEA86, 0x9660, 0xEA87, 0x9663, 0xEA88, 0x9665,
+	0xEA89, 0x9666, 0xEA8A, 0x966B, 0xEA8B, 0x966D, 0xEA8C, 0x966E,
+	0xEA8D, 0x966F, 0xEA8E, 0x9670, 0xEA8F, 0x9671, 0xEA90, 0x9673,
+	0xEA91, 0x9678, 0xEA92, 0x9679, 0xEA93, 0x967A, 0xEA94, 0x967B,
+	0xEA95, 0x967C, 0xEA96, 0x967D, 0xEA97, 0x967E, 0xEA98, 0x967F,
+	0xEA99, 0x9680, 0xEA9A, 0x9681, 0xEA9B, 0x9682, 0xEA9C, 0x9683,
+	0xEA9D, 0x9684, 0xEA9E, 0x9687, 0xEA9F, 0x9689, 0xEAA0, 0x968A,
+	0xEAA1, 0x8F8D, 0xEAA2, 0x8F8E, 0xEAA3, 0x8F8F, 0xEAA4, 0x8F98,
+	0xEAA5, 0x8F9A, 0xEAA6, 0x8ECE, 0xEAA7, 0x620B, 0xEAA8, 0x6217,
+	0xEAA9, 0x621B, 0xEAAA, 0x621F, 0xEAAB, 0x6222, 0xEAAC, 0x6221,
+	0xEAAD, 0x6225, 0xEAAE, 0x6224, 0xEAAF, 0x622C, 0xEAB0, 0x81E7,
+	0xEAB1, 0x74EF, 0xEAB2, 0x74F4, 0xEAB3, 0x74FF, 0xEAB4, 0x750F,
+	0xEAB5, 0x7511, 0xEAB6, 0x7513, 0xEAB7, 0x6534, 0xEAB8, 0x65EE,
+	0xEAB9, 0x65EF, 0xEABA, 0x65F0, 0xEABB, 0x660A, 0xEABC, 0x6619,
+	0xEABD, 0x6772, 0xEABE, 0x6603, 0xEABF, 0x6615, 0xEAC0, 0x6600,
+	0xEAC1, 0x7085, 0xEAC2, 0x66F7, 0xEAC3, 0x661D, 0xEAC4, 0x6634,
+	0xEAC5, 0x6631, 0xEAC6, 0x6636, 0xEAC7, 0x6635, 0xEAC8, 0x8006,
+	0xEAC9, 0x665F, 0xEACA, 0x6654, 0xEACB, 0x6641, 0xEACC, 0x664F,
+	0xEACD, 0x6656, 0xEACE, 0x6661, 0xEACF, 0x6657, 0xEAD0, 0x6677,
+	0xEAD1, 0x6684, 0xEAD2, 0x668C, 0xEAD3, 0x66A7, 0xEAD4, 0x669D,
+	0xEAD5, 0x66BE, 0xEAD6, 0x66DB, 0xEAD7, 0x66DC, 0xEAD8, 0x66E6,
+	0xEAD9, 0x66E9, 0xEADA, 0x8D32, 0xEADB, 0x8D33, 0xEADC, 0x8D36,
+	0xEADD, 0x8D3B, 0xEADE, 0x8D3D, 0xEADF, 0x8D40, 0xEAE0, 0x8D45,
+	0xEAE1, 0x8D46, 0xEAE2, 0x8D48, 0xEAE3, 0x8D49, 0xEAE4, 0x8D47,
+	0xEAE5, 0x8D4D, 0xEAE6, 0x8D55, 0xEAE7, 0x8D59, 0xEAE8, 0x89C7,
+	0xEAE9, 0x89CA, 0xEAEA, 0x89CB, 0xEAEB, 0x89CC, 0xEAEC, 0x89CE,
+	0xEAED, 0x89CF, 0xEAEE, 0x89D0, 0xEAEF, 0x89D1, 0xEAF0, 0x726E,
+	0xEAF1, 0x729F, 0xEAF2, 0x725D, 0xEAF3, 0x7266, 0xEAF4, 0x726F,
+	0xEAF5, 0x727E, 0xEAF6, 0x727F, 0xEAF7, 0x7284, 0xEAF8, 0x728B,
+	0xEAF9, 0x728D, 0xEAFA, 0x728F, 0xEAFB, 0x7292, 0xEAFC, 0x6308,
+	0xEAFD, 0x6332, 0xEAFE, 0x63B0, 0xEB40, 0x968C, 0xEB41, 0x968E,
+	0xEB42, 0x9691, 0xEB43, 0x9692, 0xEB44, 0x9693, 0xEB45, 0x9695,
+	0xEB46, 0x9696, 0xEB47, 0x969A, 0xEB48, 0x969B, 0xEB49, 0x969D,
+	0xEB4A, 0x969E, 0xEB4B, 0x969F, 0xEB4C, 0x96A0, 0xEB4D, 0x96A1,
+	0xEB4E, 0x96A2, 0xEB4F, 0x96A3, 0xEB50, 0x96A4, 0xEB51, 0x96A5,
+	0xEB52, 0x96A6, 0xEB53, 0x96A8, 0xEB54, 0x96A9, 0xEB55, 0x96AA,
+	0xEB56, 0x96AB, 0xEB57, 0x96AC, 0xEB58, 0x96AD, 0xEB59, 0x96AE,
+	0xEB5A, 0x96AF, 0xEB5B, 0x96B1, 0xEB5C, 0x96B2, 0xEB5D, 0x96B4,
+	0xEB5E, 0x96B5, 0xEB5F, 0x96B7, 0xEB60, 0x96B8, 0xEB61, 0x96BA,
+	0xEB62, 0x96BB, 0xEB63, 0x96BF, 0xEB64, 0x96C2, 0xEB65, 0x96C3,
+	0xEB66, 0x96C8, 0xEB67, 0x96CA, 0xEB68, 0x96CB, 0xEB69, 0x96D0,
+	0xEB6A, 0x96D1, 0xEB6B, 0x96D3, 0xEB6C, 0x96D4, 0xEB6D, 0x96D6,
+	0xEB6E, 0x96D7, 0xEB6F, 0x96D8, 0xEB70, 0x96D9, 0xEB71, 0x96DA,
+	0xEB72, 0x96DB, 0xEB73, 0x96DC, 0xEB74, 0x96DD, 0xEB75, 0x96DE,
+	0xEB76, 0x96DF, 0xEB77, 0x96E1, 0xEB78, 0x96E2, 0xEB79, 0x96E3,
+	0xEB7A, 0x96E4, 0xEB7B, 0x96E5, 0xEB7C, 0x96E6, 0xEB7D, 0x96E7,
+	0xEB7E, 0x96EB, 0xEB80, 0x96EC, 0xEB81, 0x96ED, 0xEB82, 0x96EE,
+	0xEB83, 0x96F0, 0xEB84, 0x96F1, 0xEB85, 0x96F2, 0xEB86, 0x96F4,
+	0xEB87, 0x96F5, 0xEB88, 0x96F8, 0xEB89, 0x96FA, 0xEB8A, 0x96FB,
+	0xEB8B, 0x96FC, 0xEB8C, 0x96FD, 0xEB8D, 0x96FF, 0xEB8E, 0x9702,
+	0xEB8F, 0x9703, 0xEB90, 0x9705, 0xEB91, 0x970A, 0xEB92, 0x970B,
+	0xEB93, 0x970C, 0xEB94, 0x9710, 0xEB95, 0x9711, 0xEB96, 0x9712,
+	0xEB97, 0x9714, 0xEB98, 0x9715, 0xEB99, 0x9717, 0xEB9A, 0x9718,
+	0xEB9B, 0x9719, 0xEB9C, 0x971A, 0xEB9D, 0x971B, 0xEB9E, 0x971D,
+	0xEB9F, 0x971F, 0xEBA0, 0x9720, 0xEBA1, 0x643F, 0xEBA2, 0x64D8,
+	0xEBA3, 0x8004, 0xEBA4, 0x6BEA, 0xEBA5, 0x6BF3, 0xEBA6, 0x6BFD,
+	0xEBA7, 0x6BF5, 0xEBA8, 0x6BF9, 0xEBA9, 0x6C05, 0xEBAA, 0x6C07,
+	0xEBAB, 0x6C06, 0xEBAC, 0x6C0D, 0xEBAD, 0x6C15, 0xEBAE, 0x6C18,
+	0xEBAF, 0x6C19, 0xEBB0, 0x6C1A, 0xEBB1, 0x6C21, 0xEBB2, 0x6C29,
+	0xEBB3, 0x6C24, 0xEBB4, 0x6C2A, 0xEBB5, 0x6C32, 0xEBB6, 0x6535,
+	0xEBB7, 0x6555, 0xEBB8, 0x656B, 0xEBB9, 0x724D, 0xEBBA, 0x7252,
+	0xEBBB, 0x7256, 0xEBBC, 0x7230, 0xEBBD, 0x8662, 0xEBBE, 0x5216,
+	0xEBBF, 0x809F, 0xEBC0, 0x809C, 0xEBC1, 0x8093, 0xEBC2, 0x80BC,
+	0xEBC3, 0x670A, 0xEBC4, 0x80BD, 0xEBC5, 0x80B1, 0xEBC6, 0x80AB,
+	0xEBC7, 0x80AD, 0xEBC8, 0x80B4, 0xEBC9, 0x80B7, 0xEBCA, 0x80E7,
+	0xEBCB, 0x80E8, 0xEBCC, 0x80E9, 0xEBCD, 0x80EA, 0xEBCE, 0x80DB,
+	0xEBCF, 0x80C2, 0xEBD0, 0x80C4, 0xEBD1, 0x80D9, 0xEBD2, 0x80CD,
+	0xEBD3, 0x80D7, 0xEBD4, 0x6710, 0xEBD5, 0x80DD, 0xEBD6, 0x80EB,
+	0xEBD7, 0x80F1, 0xEBD8, 0x80F4, 0xEBD9, 0x80ED, 0xEBDA, 0x810D,
+	0xEBDB, 0x810E, 0xEBDC, 0x80F2, 0xEBDD, 0x80FC, 0xEBDE, 0x6715,
+	0xEBDF, 0x8112, 0xEBE0, 0x8C5A, 0xEBE1, 0x8136, 0xEBE2, 0x811E,
+	0xEBE3, 0x812C, 0xEBE4, 0x8118, 0xEBE5, 0x8132, 0xEBE6, 0x8148,
+	0xEBE7, 0x814C, 0xEBE8, 0x8153, 0xEBE9, 0x8174, 0xEBEA, 0x8159,
+	0xEBEB, 0x815A, 0xEBEC, 0x8171, 0xEBED, 0x8160, 0xEBEE, 0x8169,
+	0xEBEF, 0x817C, 0xEBF0, 0x817D, 0xEBF1, 0x816D, 0xEBF2, 0x8167,
+	0xEBF3, 0x584D, 0xEBF4, 0x5AB5, 0xEBF5, 0x8188, 0xEBF6, 0x8182,
+	0xEBF7, 0x8191, 0xEBF8, 0x6ED5, 0xEBF9, 0x81A3, 0xEBFA, 0x81AA,
+	0xEBFB, 0x81CC, 0xEBFC, 0x6726, 0xEBFD, 0x81CA, 0xEBFE, 0x81BB,
+	0xEC40, 0x9721, 0xEC41, 0x9722, 0xEC42, 0x9723, 0xEC43, 0x9724,
+	0xEC44, 0x9725, 0xEC45, 0x9726, 0xEC46, 0x9727, 0xEC47, 0x9728,
+	0xEC48, 0x9729, 0xEC49, 0x972B, 0xEC4A, 0x972C, 0xEC4B, 0x972E,
+	0xEC4C, 0x972F, 0xEC4D, 0x9731, 0xEC4E, 0x9733, 0xEC4F, 0x9734,
+	0xEC50, 0x9735, 0xEC51, 0x9736, 0xEC52, 0x9737, 0xEC53, 0x973A,
+	0xEC54, 0x973B, 0xEC55, 0x973C, 0xEC56, 0x973D, 0xEC57, 0x973F,
+	0xEC58, 0x9740, 0xEC59, 0x9741, 0xEC5A, 0x9742, 0xEC5B, 0x9743,
+	0xEC5C, 0x9744, 0xEC5D, 0x9745, 0xEC5E, 0x9746, 0xEC5F, 0x9747,
+	0xEC60, 0x9748, 0xEC61, 0x9749, 0xEC62, 0x974A, 0xEC63, 0x974B,
+	0xEC64, 0x974C, 0xEC65, 0x974D, 0xEC66, 0x974E, 0xEC67, 0x974F,
+	0xEC68, 0x9750, 0xEC69, 0x9751, 0xEC6A, 0x9754, 0xEC6B, 0x9755,
+	0xEC6C, 0x9757, 0xEC6D, 0x9758, 0xEC6E, 0x975A, 0xEC6F, 0x975C,
+	0xEC70, 0x975D, 0xEC71, 0x975F, 0xEC72, 0x9763, 0xEC73, 0x9764,
+	0xEC74, 0x9766, 0xEC75, 0x9767, 0xEC76, 0x9768, 0xEC77, 0x976A,
+	0xEC78, 0x976B, 0xEC79, 0x976C, 0xEC7A, 0x976D, 0xEC7B, 0x976E,
+	0xEC7C, 0x976F, 0xEC7D, 0x9770, 0xEC7E, 0x9771, 0xEC80, 0x9772,
+	0xEC81, 0x9775, 0xEC82, 0x9777, 0xEC83, 0x9778, 0xEC84, 0x9779,
+	0xEC85, 0x977A, 0xEC86, 0x977B, 0xEC87, 0x977D, 0xEC88, 0x977E,
+	0xEC89, 0x977F, 0xEC8A, 0x9780, 0xEC8B, 0x9781, 0xEC8C, 0x9782,
+	0xEC8D, 0x9783, 0xEC8E, 0x9784, 0xEC8F, 0x9786, 0xEC90, 0x9787,
+	0xEC91, 0x9788, 0xEC92, 0x9789, 0xEC93, 0x978A, 0xEC94, 0x978C,
+	0xEC95, 0x978E, 0xEC96, 0x978F, 0xEC97, 0x9790, 0xEC98, 0x9793,
+	0xEC99, 0x9795, 0xEC9A, 0x9796, 0xEC9B, 0x9797, 0xEC9C, 0x9799,
+	0xEC9D, 0x979A, 0xEC9E, 0x979B, 0xEC9F, 0x979C, 0xECA0, 0x979D,
+	0xECA1, 0x81C1, 0xECA2, 0x81A6, 0xECA3, 0x6B24, 0xECA4, 0x6B37,
+	0xECA5, 0x6B39, 0xECA6, 0x6B43, 0xECA7, 0x6B46, 0xECA8, 0x6B59,
+	0xECA9, 0x98D1, 0xECAA, 0x98D2, 0xECAB, 0x98D3, 0xECAC, 0x98D5,
+	0xECAD, 0x98D9, 0xECAE, 0x98DA, 0xECAF, 0x6BB3, 0xECB0, 0x5F40,
+	0xECB1, 0x6BC2, 0xECB2, 0x89F3, 0xECB3, 0x6590, 0xECB4, 0x9F51,
+	0xECB5, 0x6593, 0xECB6, 0x65BC, 0xECB7, 0x65C6, 0xECB8, 0x65C4,
+	0xECB9, 0x65C3, 0xECBA, 0x65CC, 0xECBB, 0x65CE, 0xECBC, 0x65D2,
+	0xECBD, 0x65D6, 0xECBE, 0x7080, 0xECBF, 0x709C, 0xECC0, 0x7096,
+	0xECC1, 0x709D, 0xECC2, 0x70BB, 0xECC3, 0x70C0, 0xECC4, 0x70B7,
+	0xECC5, 0x70AB, 0xECC6, 0x70B1, 0xECC7, 0x70E8, 0xECC8, 0x70CA,
+	0xECC9, 0x7110, 0xECCA, 0x7113, 0xECCB, 0x7116, 0xECCC, 0x712F,
+	0xECCD, 0x7131, 0xECCE, 0x7173, 0xECCF, 0x715C, 0xECD0, 0x7168,
+	0xECD1, 0x7145, 0xECD2, 0x7172, 0xECD3, 0x714A, 0xECD4, 0x7178,
+	0xECD5, 0x717A, 0xECD6, 0x7198, 0xECD7, 0x71B3, 0xECD8, 0x71B5,
+	0xECD9, 0x71A8, 0xECDA, 0x71A0, 0xECDB, 0x71E0, 0xECDC, 0x71D4,
+	0xECDD, 0x71E7, 0xECDE, 0x71F9, 0xECDF, 0x721D, 0xECE0, 0x7228,
+	0xECE1, 0x706C, 0xECE2, 0x7118, 0xECE3, 0x7166, 0xECE4, 0x71B9,
+	0xECE5, 0x623E, 0xECE6, 0x623D, 0xECE7, 0x6243, 0xECE8, 0x6248,
+	0xECE9, 0x6249, 0xECEA, 0x793B, 0xECEB, 0x7940, 0xECEC, 0x7946,
+	0xECED, 0x7949, 0xECEE, 0x795B, 0xECEF, 0x795C, 0xECF0, 0x7953,
+	0xECF1, 0x795A, 0xECF2, 0x7962, 0xECF3, 0x7957, 0xECF4, 0x7960,
+	0xECF5, 0x796F, 0xECF6, 0x7967, 0xECF7, 0x797A, 0xECF8, 0x7985,
+	0xECF9, 0x798A, 0xECFA, 0x799A, 0xECFB, 0x79A7, 0xECFC, 0x79B3,
+	0xECFD, 0x5FD1, 0xECFE, 0x5FD0, 0xED40, 0x979E, 0xED41, 0x979F,
+	0xED42, 0x97A1, 0xED43, 0x97A2, 0xED44, 0x97A4, 0xED45, 0x97A5,
+	0xED46, 0x97A6, 0xED47, 0x97A7, 0xED48, 0x97A8, 0xED49, 0x97A9,
+	0xED4A, 0x97AA, 0xED4B, 0x97AC, 0xED4C, 0x97AE, 0xED4D, 0x97B0,
+	0xED4E, 0x97B1, 0xED4F, 0x97B3, 0xED50, 0x97B5, 0xED51, 0x97B6,
+	0xED52, 0x97B7, 0xED53, 0x97B8, 0xED54, 0x97B9, 0xED55, 0x97BA,
+	0xED56, 0x97BB, 0xED57, 0x97BC, 0xED58, 0x97BD, 0xED59, 0x97BE,
+	0xED5A, 0x97BF, 0xED5B, 0x97C0, 0xED5C, 0x97C1, 0xED5D, 0x97C2,
+	0xED5E, 0x97C3, 0xED5F, 0x97C4, 0xED60, 0x97C5, 0xED61, 0x97C6,
+	0xED62, 0x97C7, 0xED63, 0x97C8, 0xED64, 0x97C9, 0xED65, 0x97CA,
+	0xED66, 0x97CB, 0xED67, 0x97CC, 0xED68, 0x97CD, 0xED69, 0x97CE,
+	0xED6A, 0x97CF, 0xED6B, 0x97D0, 0xED6C, 0x97D1, 0xED6D, 0x97D2,
+	0xED6E, 0x97D3, 0xED6F, 0x97D4, 0xED70, 0x97D5, 0xED71, 0x97D6,
+	0xED72, 0x97D7, 0xED73, 0x97D8, 0xED74, 0x97D9, 0xED75, 0x97DA,
+	0xED76, 0x97DB, 0xED77, 0x97DC, 0xED78, 0x97DD, 0xED79, 0x97DE,
+	0xED7A, 0x97DF, 0xED7B, 0x97E0, 0xED7C, 0x97E1, 0xED7D, 0x97E2,
+	0xED7E, 0x97E3, 0xED80, 0x97E4, 0xED81, 0x97E5, 0xED82, 0x97E8,
+	0xED83, 0x97EE, 0xED84, 0x97EF, 0xED85, 0x97F0, 0xED86, 0x97F1,
+	0xED87, 0x97F2, 0xED88, 0x97F4, 0xED89, 0x97F7, 0xED8A, 0x97F8,
+	0xED8B, 0x97F9, 0xED8C, 0x97FA, 0xED8D, 0x97FB, 0xED8E, 0x97FC,
+	0xED8F, 0x97FD, 0xED90, 0x97FE, 0xED91, 0x97FF, 0xED92, 0x9800,
+	0xED93, 0x9801, 0xED94, 0x9802, 0xED95, 0x9803, 0xED96, 0x9804,
+	0xED97, 0x9805, 0xED98, 0x9806, 0xED99, 0x9807, 0xED9A, 0x9808,
+	0xED9B, 0x9809, 0xED9C, 0x980A, 0xED9D, 0x980B, 0xED9E, 0x980C,
+	0xED9F, 0x980D, 0xEDA0, 0x980E, 0xEDA1, 0x603C, 0xEDA2, 0x605D,
+	0xEDA3, 0x605A, 0xEDA4, 0x6067, 0xEDA5, 0x6041, 0xEDA6, 0x6059,
+	0xEDA7, 0x6063, 0xEDA8, 0x60AB, 0xEDA9, 0x6106, 0xEDAA, 0x610D,
+	0xEDAB, 0x615D, 0xEDAC, 0x61A9, 0xEDAD, 0x619D, 0xEDAE, 0x61CB,
+	0xEDAF, 0x61D1, 0xEDB0, 0x6206, 0xEDB1, 0x8080, 0xEDB2, 0x807F,
+	0xEDB3, 0x6C93, 0xEDB4, 0x6CF6, 0xEDB5, 0x6DFC, 0xEDB6, 0x77F6,
+	0xEDB7, 0x77F8, 0xEDB8, 0x7800, 0xEDB9, 0x7809, 0xEDBA, 0x7817,
+	0xEDBB, 0x7818, 0xEDBC, 0x7811, 0xEDBD, 0x65AB, 0xEDBE, 0x782D,
+	0xEDBF, 0x781C, 0xEDC0, 0x781D, 0xEDC1, 0x7839, 0xEDC2, 0x783A,
+	0xEDC3, 0x783B, 0xEDC4, 0x781F, 0xEDC5, 0x783C, 0xEDC6, 0x7825,
+	0xEDC7, 0x782C, 0xEDC8, 0x7823, 0xEDC9, 0x7829, 0xEDCA, 0x784E,
+	0xEDCB, 0x786D, 0xEDCC, 0x7856, 0xEDCD, 0x7857, 0xEDCE, 0x7826,
+	0xEDCF, 0x7850, 0xEDD0, 0x7847, 0xEDD1, 0x784C, 0xEDD2, 0x786A,
+	0xEDD3, 0x789B, 0xEDD4, 0x7893, 0xEDD5, 0x789A, 0xEDD6, 0x7887,
+	0xEDD7, 0x789C, 0xEDD8, 0x78A1, 0xEDD9, 0x78A3, 0xEDDA, 0x78B2,
+	0xEDDB, 0x78B9, 0xEDDC, 0x78A5, 0xEDDD, 0x78D4, 0xEDDE, 0x78D9,
+	0xEDDF, 0x78C9, 0xEDE0, 0x78EC, 0xEDE1, 0x78F2, 0xEDE2, 0x7905,
+	0xEDE3, 0x78F4, 0xEDE4, 0x7913, 0xEDE5, 0x7924, 0xEDE6, 0x791E,
+	0xEDE7, 0x7934, 0xEDE8, 0x9F9B, 0xEDE9, 0x9EF9, 0xEDEA, 0x9EFB,
+	0xEDEB, 0x9EFC, 0xEDEC, 0x76F1, 0xEDED, 0x7704, 0xEDEE, 0x770D,
+	0xEDEF, 0x76F9, 0xEDF0, 0x7707, 0xEDF1, 0x7708, 0xEDF2, 0x771A,
+	0xEDF3, 0x7722, 0xEDF4, 0x7719, 0xEDF5, 0x772D, 0xEDF6, 0x7726,
+	0xEDF7, 0x7735, 0xEDF8, 0x7738, 0xEDF9, 0x7750, 0xEDFA, 0x7751,
+	0xEDFB, 0x7747, 0xEDFC, 0x7743, 0xEDFD, 0x775A, 0xEDFE, 0x7768,
+	0xEE40, 0x980F, 0xEE41, 0x9810, 0xEE42, 0x9811, 0xEE43, 0x9812,
+	0xEE44, 0x9813, 0xEE45, 0x9814, 0xEE46, 0x9815, 0xEE47, 0x9816,
+	0xEE48, 0x9817, 0xEE49, 0x9818, 0xEE4A, 0x9819, 0xEE4B, 0x981A,
+	0xEE4C, 0x981B, 0xEE4D, 0x981C, 0xEE4E, 0x981D, 0xEE4F, 0x981E,
+	0xEE50, 0x981F, 0xEE51, 0x9820, 0xEE52, 0x9821, 0xEE53, 0x9822,
+	0xEE54, 0x9823, 0xEE55, 0x9824, 0xEE56, 0x9825, 0xEE57, 0x9826,
+	0xEE58, 0x9827, 0xEE59, 0x9828, 0xEE5A, 0x9829, 0xEE5B, 0x982A,
+	0xEE5C, 0x982B, 0xEE5D, 0x982C, 0xEE5E, 0x982D, 0xEE5F, 0x982E,
+	0xEE60, 0x982F, 0xEE61, 0x9830, 0xEE62, 0x9831, 0xEE63, 0x9832,
+	0xEE64, 0x9833, 0xEE65, 0x9834, 0xEE66, 0x9835, 0xEE67, 0x9836,
+	0xEE68, 0x9837, 0xEE69, 0x9838, 0xEE6A, 0x9839, 0xEE6B, 0x983A,
+	0xEE6C, 0x983B, 0xEE6D, 0x983C, 0xEE6E, 0x983D, 0xEE6F, 0x983E,
+	0xEE70, 0x983F, 0xEE71, 0x9840, 0xEE72, 0x9841, 0xEE73, 0x9842,
+	0xEE74, 0x9843, 0xEE75, 0x9844, 0xEE76, 0x9845, 0xEE77, 0x9846,
+	0xEE78, 0x9847, 0xEE79, 0x9848, 0xEE7A, 0x9849, 0xEE7B, 0x984A,
+	0xEE7C, 0x984B, 0xEE7D, 0x984C, 0xEE7E, 0x984D, 0xEE80, 0x984E,
+	0xEE81, 0x984F, 0xEE82, 0x9850, 0xEE83, 0x9851, 0xEE84, 0x9852,
+	0xEE85, 0x9853, 0xEE86, 0x9854, 0xEE87, 0x9855, 0xEE88, 0x9856,
+	0xEE89, 0x9857, 0xEE8A, 0x9858, 0xEE8B, 0x9859, 0xEE8C, 0x985A,
+	0xEE8D, 0x985B, 0xEE8E, 0x985C, 0xEE8F, 0x985D, 0xEE90, 0x985E,
+	0xEE91, 0x985F, 0xEE92, 0x9860, 0xEE93, 0x9861, 0xEE94, 0x9862,
+	0xEE95, 0x9863, 0xEE96, 0x9864, 0xEE97, 0x9865, 0xEE98, 0x9866,
+	0xEE99, 0x9867, 0xEE9A, 0x9868, 0xEE9B, 0x9869, 0xEE9C, 0x986A,
+	0xEE9D, 0x986B, 0xEE9E, 0x986C, 0xEE9F, 0x986D, 0xEEA0, 0x986E,
+	0xEEA1, 0x7762, 0xEEA2, 0x7765, 0xEEA3, 0x777F, 0xEEA4, 0x778D,
+	0xEEA5, 0x777D, 0xEEA6, 0x7780, 0xEEA7, 0x778C, 0xEEA8, 0x7791,
+	0xEEA9, 0x779F, 0xEEAA, 0x77A0, 0xEEAB, 0x77B0, 0xEEAC, 0x77B5,
+	0xEEAD, 0x77BD, 0xEEAE, 0x753A, 0xEEAF, 0x7540, 0xEEB0, 0x754E,
+	0xEEB1, 0x754B, 0xEEB2, 0x7548, 0xEEB3, 0x755B, 0xEEB4, 0x7572,
+	0xEEB5, 0x7579, 0xEEB6, 0x7583, 0xEEB7, 0x7F58, 0xEEB8, 0x7F61,
+	0xEEB9, 0x7F5F, 0xEEBA, 0x8A48, 0xEEBB, 0x7F68, 0xEEBC, 0x7F74,
+	0xEEBD, 0x7F71, 0xEEBE, 0x7F79, 0xEEBF, 0x7F81, 0xEEC0, 0x7F7E,
+	0xEEC1, 0x76CD, 0xEEC2, 0x76E5, 0xEEC3, 0x8832, 0xEEC4, 0x9485,
+	0xEEC5, 0x9486, 0xEEC6, 0x9487, 0xEEC7, 0x948B, 0xEEC8, 0x948A,
+	0xEEC9, 0x948C, 0xEECA, 0x948D, 0xEECB, 0x948F, 0xEECC, 0x9490,
+	0xEECD, 0x9494, 0xEECE, 0x9497, 0xEECF, 0x9495, 0xEED0, 0x949A,
+	0xEED1, 0x949B, 0xEED2, 0x949C, 0xEED3, 0x94A3, 0xEED4, 0x94A4,
+	0xEED5, 0x94AB, 0xEED6, 0x94AA, 0xEED7, 0x94AD, 0xEED8, 0x94AC,
+	0xEED9, 0x94AF, 0xEEDA, 0x94B0, 0xEEDB, 0x94B2, 0xEEDC, 0x94B4,
+	0xEEDD, 0x94B6, 0xEEDE, 0x94B7, 0xEEDF, 0x94B8, 0xEEE0, 0x94B9,
+	0xEEE1, 0x94BA, 0xEEE2, 0x94BC, 0xEEE3, 0x94BD, 0xEEE4, 0x94BF,
+	0xEEE5, 0x94C4, 0xEEE6, 0x94C8, 0xEEE7, 0x94C9, 0xEEE8, 0x94CA,
+	0xEEE9, 0x94CB, 0xEEEA, 0x94CC, 0xEEEB, 0x94CD, 0xEEEC, 0x94CE,
+	0xEEED, 0x94D0, 0xEEEE, 0x94D1, 0xEEEF, 0x94D2, 0xEEF0, 0x94D5,
+	0xEEF1, 0x94D6, 0xEEF2, 0x94D7, 0xEEF3, 0x94D9, 0xEEF4, 0x94D8,
+	0xEEF5, 0x94DB, 0xEEF6, 0x94DE, 0xEEF7, 0x94DF, 0xEEF8, 0x94E0,
+	0xEEF9, 0x94E2, 0xEEFA, 0x94E4, 0xEEFB, 0x94E5, 0xEEFC, 0x94E7,
+	0xEEFD, 0x94E8, 0xEEFE, 0x94EA, 0xEF40, 0x986F, 0xEF41, 0x9870,
+	0xEF42, 0x9871, 0xEF43, 0x9872, 0xEF44, 0x9873, 0xEF45, 0x9874,
+	0xEF46, 0x988B, 0xEF47, 0x988E, 0xEF48, 0x9892, 0xEF49, 0x9895,
+	0xEF4A, 0x9899, 0xEF4B, 0x98A3, 0xEF4C, 0x98A8, 0xEF4D, 0x98A9,
+	0xEF4E, 0x98AA, 0xEF4F, 0x98AB, 0xEF50, 0x98AC, 0xEF51, 0x98AD,
+	0xEF52, 0x98AE, 0xEF53, 0x98AF, 0xEF54, 0x98B0, 0xEF55, 0x98B1,
+	0xEF56, 0x98B2, 0xEF57, 0x98B3, 0xEF58, 0x98B4, 0xEF59, 0x98B5,
+	0xEF5A, 0x98B6, 0xEF5B, 0x98B7, 0xEF5C, 0x98B8, 0xEF5D, 0x98B9,
+	0xEF5E, 0x98BA, 0xEF5F, 0x98BB, 0xEF60, 0x98BC, 0xEF61, 0x98BD,
+	0xEF62, 0x98BE, 0xEF63, 0x98BF, 0xEF64, 0x98C0, 0xEF65, 0x98C1,
+	0xEF66, 0x98C2, 0xEF67, 0x98C3, 0xEF68, 0x98C4, 0xEF69, 0x98C5,
+	0xEF6A, 0x98C6, 0xEF6B, 0x98C7, 0xEF6C, 0x98C8, 0xEF6D, 0x98C9,
+	0xEF6E, 0x98CA, 0xEF6F, 0x98CB, 0xEF70, 0x98CC, 0xEF71, 0x98CD,
+	0xEF72, 0x98CF, 0xEF73, 0x98D0, 0xEF74, 0x98D4, 0xEF75, 0x98D6,
+	0xEF76, 0x98D7, 0xEF77, 0x98DB, 0xEF78, 0x98DC, 0xEF79, 0x98DD,
+	0xEF7A, 0x98E0, 0xEF7B, 0x98E1, 0xEF7C, 0x98E2, 0xEF7D, 0x98E3,
+	0xEF7E, 0x98E4, 0xEF80, 0x98E5, 0xEF81, 0x98E6, 0xEF82, 0x98E9,
+	0xEF83, 0x98EA, 0xEF84, 0x98EB, 0xEF85, 0x98EC, 0xEF86, 0x98ED,
+	0xEF87, 0x98EE, 0xEF88, 0x98EF, 0xEF89, 0x98F0, 0xEF8A, 0x98F1,
+	0xEF8B, 0x98F2, 0xEF8C, 0x98F3, 0xEF8D, 0x98F4, 0xEF8E, 0x98F5,
+	0xEF8F, 0x98F6, 0xEF90, 0x98F7, 0xEF91, 0x98F8, 0xEF92, 0x98F9,
+	0xEF93, 0x98FA, 0xEF94, 0x98FB, 0xEF95, 0x98FC, 0xEF96, 0x98FD,
+	0xEF97, 0x98FE, 0xEF98, 0x98FF, 0xEF99, 0x9900, 0xEF9A, 0x9901,
+	0xEF9B, 0x9902, 0xEF9C, 0x9903, 0xEF9D, 0x9904, 0xEF9E, 0x9905,
+	0xEF9F, 0x9906, 0xEFA0, 0x9907, 0xEFA1, 0x94E9, 0xEFA2, 0x94EB,
+	0xEFA3, 0x94EE, 0xEFA4, 0x94EF, 0xEFA5, 0x94F3, 0xEFA6, 0x94F4,
+	0xEFA7, 0x94F5, 0xEFA8, 0x94F7, 0xEFA9, 0x94F9, 0xEFAA, 0x94FC,
+	0xEFAB, 0x94FD, 0xEFAC, 0x94FF, 0xEFAD, 0x9503, 0xEFAE, 0x9502,
+	0xEFAF, 0x9506, 0xEFB0, 0x9507, 0xEFB1, 0x9509, 0xEFB2, 0x950A,
+	0xEFB3, 0x950D, 0xEFB4, 0x950E, 0xEFB5, 0x950F, 0xEFB6, 0x9512,
+	0xEFB7, 0x9513, 0xEFB8, 0x9514, 0xEFB9, 0x9515, 0xEFBA, 0x9516,
+	0xEFBB, 0x9518, 0xEFBC, 0x951B, 0xEFBD, 0x951D, 0xEFBE, 0x951E,
+	0xEFBF, 0x951F, 0xEFC0, 0x9522, 0xEFC1, 0x952A, 0xEFC2, 0x952B,
+	0xEFC3, 0x9529, 0xEFC4, 0x952C, 0xEFC5, 0x9531, 0xEFC6, 0x9532,
+	0xEFC7, 0x9534, 0xEFC8, 0x9536, 0xEFC9, 0x9537, 0xEFCA, 0x9538,
+	0xEFCB, 0x953C, 0xEFCC, 0x953E, 0xEFCD, 0x953F, 0xEFCE, 0x9542,
+	0xEFCF, 0x9535, 0xEFD0, 0x9544, 0xEFD1, 0x9545, 0xEFD2, 0x9546,
+	0xEFD3, 0x9549, 0xEFD4, 0x954C, 0xEFD5, 0x954E, 0xEFD6, 0x954F,
+	0xEFD7, 0x9552, 0xEFD8, 0x9553, 0xEFD9, 0x9554, 0xEFDA, 0x9556,
+	0xEFDB, 0x9557, 0xEFDC, 0x9558, 0xEFDD, 0x9559, 0xEFDE, 0x955B,
+	0xEFDF, 0x955E, 0xEFE0, 0x955F, 0xEFE1, 0x955D, 0xEFE2, 0x9561,
+	0xEFE3, 0x9562, 0xEFE4, 0x9564, 0xEFE5, 0x9565, 0xEFE6, 0x9566,
+	0xEFE7, 0x9567, 0xEFE8, 0x9568, 0xEFE9, 0x9569, 0xEFEA, 0x956A,
+	0xEFEB, 0x956B, 0xEFEC, 0x956C, 0xEFED, 0x956F, 0xEFEE, 0x9571,
+	0xEFEF, 0x9572, 0xEFF0, 0x9573, 0xEFF1, 0x953A, 0xEFF2, 0x77E7,
+	0xEFF3, 0x77EC, 0xEFF4, 0x96C9, 0xEFF5, 0x79D5, 0xEFF6, 0x79ED,
+	0xEFF7, 0x79E3, 0xEFF8, 0x79EB, 0xEFF9, 0x7A06, 0xEFFA, 0x5D47,
+	0xEFFB, 0x7A03, 0xEFFC, 0x7A02, 0xEFFD, 0x7A1E, 0xEFFE, 0x7A14,
+	0xF040, 0x9908, 0xF041, 0x9909, 0xF042, 0x990A, 0xF043, 0x990B,
+	0xF044, 0x990C, 0xF045, 0x990E, 0xF046, 0x990F, 0xF047, 0x9911,
+	0xF048, 0x9912, 0xF049, 0x9913, 0xF04A, 0x9914, 0xF04B, 0x9915,
+	0xF04C, 0x9916, 0xF04D, 0x9917, 0xF04E, 0x9918, 0xF04F, 0x9919,
+	0xF050, 0x991A, 0xF051, 0x991B, 0xF052, 0x991C, 0xF053, 0x991D,
+	0xF054, 0x991E, 0xF055, 0x991F, 0xF056, 0x9920, 0xF057, 0x9921,
+	0xF058, 0x9922, 0xF059, 0x9923, 0xF05A, 0x9924, 0xF05B, 0x9925,
+	0xF05C, 0x9926, 0xF05D, 0x9927, 0xF05E, 0x9928, 0xF05F, 0x9929,
+	0xF060, 0x992A, 0xF061, 0x992B, 0xF062, 0x992C, 0xF063, 0x992D,
+	0xF064, 0x992F, 0xF065, 0x9930, 0xF066, 0x9931, 0xF067, 0x9932,
+	0xF068, 0x9933, 0xF069, 0x9934, 0xF06A, 0x9935, 0xF06B, 0x9936,
+	0xF06C, 0x9937, 0xF06D, 0x9938, 0xF06E, 0x9939, 0xF06F, 0x993A,
+	0xF070, 0x993B, 0xF071, 0x993C, 0xF072, 0x993D, 0xF073, 0x993E,
+	0xF074, 0x993F, 0xF075, 0x9940, 0xF076, 0x9941, 0xF077, 0x9942,
+	0xF078, 0x9943, 0xF079, 0x9944, 0xF07A, 0x9945, 0xF07B, 0x9946,
+	0xF07C, 0x9947, 0xF07D, 0x9948, 0xF07E, 0x9949, 0xF080, 0x994A,
+	0xF081, 0x994B, 0xF082, 0x994C, 0xF083, 0x994D, 0xF084, 0x994E,
+	0xF085, 0x994F, 0xF086, 0x9950, 0xF087, 0x9951, 0xF088, 0x9952,
+	0xF089, 0x9953, 0xF08A, 0x9956, 0xF08B, 0x9957, 0xF08C, 0x9958,
+	0xF08D, 0x9959, 0xF08E, 0x995A, 0xF08F, 0x995B, 0xF090, 0x995C,
+	0xF091, 0x995D, 0xF092, 0x995E, 0xF093, 0x995F, 0xF094, 0x9960,
+	0xF095, 0x9961, 0xF096, 0x9962, 0xF097, 0x9964, 0xF098, 0x9966,
+	0xF099, 0x9973, 0xF09A, 0x9978, 0xF09B, 0x9979, 0xF09C, 0x997B,
+	0xF09D, 0x997E, 0xF09E, 0x9982, 0xF09F, 0x9983, 0xF0A0, 0x9989,
+	0xF0A1, 0x7A39, 0xF0A2, 0x7A37, 0xF0A3, 0x7A51, 0xF0A4, 0x9ECF,
+	0xF0A5, 0x99A5, 0xF0A6, 0x7A70, 0xF0A7, 0x7688, 0xF0A8, 0x768E,
+	0xF0A9, 0x7693, 0xF0AA, 0x7699, 0xF0AB, 0x76A4, 0xF0AC, 0x74DE,
+	0xF0AD, 0x74E0, 0xF0AE, 0x752C, 0xF0AF, 0x9E20, 0xF0B0, 0x9E22,
+	0xF0B1, 0x9E28, 0xF0B2, 0x9E29, 0xF0B3, 0x9E2A, 0xF0B4, 0x9E2B,
+	0xF0B5, 0x9E2C, 0xF0B6, 0x9E32, 0xF0B7, 0x9E31, 0xF0B8, 0x9E36,
+	0xF0B9, 0x9E38, 0xF0BA, 0x9E37, 0xF0BB, 0x9E39, 0xF0BC, 0x9E3A,
+	0xF0BD, 0x9E3E, 0xF0BE, 0x9E41, 0xF0BF, 0x9E42, 0xF0C0, 0x9E44,
+	0xF0C1, 0x9E46, 0xF0C2, 0x9E47, 0xF0C3, 0x9E48, 0xF0C4, 0x9E49,
+	0xF0C5, 0x9E4B, 0xF0C6, 0x9E4C, 0xF0C7, 0x9E4E, 0xF0C8, 0x9E51,
+	0xF0C9, 0x9E55, 0xF0CA, 0x9E57, 0xF0CB, 0x9E5A, 0xF0CC, 0x9E5B,
+	0xF0CD, 0x9E5C, 0xF0CE, 0x9E5E, 0xF0CF, 0x9E63, 0xF0D0, 0x9E66,
+	0xF0D1, 0x9E67, 0xF0D2, 0x9E68, 0xF0D3, 0x9E69, 0xF0D4, 0x9E6A,
+	0xF0D5, 0x9E6B, 0xF0D6, 0x9E6C, 0xF0D7, 0x9E71, 0xF0D8, 0x9E6D,
+	0xF0D9, 0x9E73, 0xF0DA, 0x7592, 0xF0DB, 0x7594, 0xF0DC, 0x7596,
+	0xF0DD, 0x75A0, 0xF0DE, 0x759D, 0xF0DF, 0x75AC, 0xF0E0, 0x75A3,
+	0xF0E1, 0x75B3, 0xF0E2, 0x75B4, 0xF0E3, 0x75B8, 0xF0E4, 0x75C4,
+	0xF0E5, 0x75B1, 0xF0E6, 0x75B0, 0xF0E7, 0x75C3, 0xF0E8, 0x75C2,
+	0xF0E9, 0x75D6, 0xF0EA, 0x75CD, 0xF0EB, 0x75E3, 0xF0EC, 0x75E8,
+	0xF0ED, 0x75E6, 0xF0EE, 0x75E4, 0xF0EF, 0x75EB, 0xF0F0, 0x75E7,
+	0xF0F1, 0x7603, 0xF0F2, 0x75F1, 0xF0F3, 0x75FC, 0xF0F4, 0x75FF,
+	0xF0F5, 0x7610, 0xF0F6, 0x7600, 0xF0F7, 0x7605, 0xF0F8, 0x760C,
+	0xF0F9, 0x7617, 0xF0FA, 0x760A, 0xF0FB, 0x7625, 0xF0FC, 0x7618,
+	0xF0FD, 0x7615, 0xF0FE, 0x7619, 0xF140, 0x998C, 0xF141, 0x998E,
+	0xF142, 0x999A, 0xF143, 0x999B, 0xF144, 0x999C, 0xF145, 0x999D,
+	0xF146, 0x999E, 0xF147, 0x999F, 0xF148, 0x99A0, 0xF149, 0x99A1,
+	0xF14A, 0x99A2, 0xF14B, 0x99A3, 0xF14C, 0x99A4, 0xF14D, 0x99A6,
+	0xF14E, 0x99A7, 0xF14F, 0x99A9, 0xF150, 0x99AA, 0xF151, 0x99AB,
+	0xF152, 0x99AC, 0xF153, 0x99AD, 0xF154, 0x99AE, 0xF155, 0x99AF,
+	0xF156, 0x99B0, 0xF157, 0x99B1, 0xF158, 0x99B2, 0xF159, 0x99B3,
+	0xF15A, 0x99B4, 0xF15B, 0x99B5, 0xF15C, 0x99B6, 0xF15D, 0x99B7,
+	0xF15E, 0x99B8, 0xF15F, 0x99B9, 0xF160, 0x99BA, 0xF161, 0x99BB,
+	0xF162, 0x99BC, 0xF163, 0x99BD, 0xF164, 0x99BE, 0xF165, 0x99BF,
+	0xF166, 0x99C0, 0xF167, 0x99C1, 0xF168, 0x99C2, 0xF169, 0x99C3,
+	0xF16A, 0x99C4, 0xF16B, 0x99C5, 0xF16C, 0x99C6, 0xF16D, 0x99C7,
+	0xF16E, 0x99C8, 0xF16F, 0x99C9, 0xF170, 0x99CA, 0xF171, 0x99CB,
+	0xF172, 0x99CC, 0xF173, 0x99CD, 0xF174, 0x99CE, 0xF175, 0x99CF,
+	0xF176, 0x99D0, 0xF177, 0x99D1, 0xF178, 0x99D2, 0xF179, 0x99D3,
+	0xF17A, 0x99D4, 0xF17B, 0x99D5, 0xF17C, 0x99D6, 0xF17D, 0x99D7,
+	0xF17E, 0x99D8, 0xF180, 0x99D9, 0xF181, 0x99DA, 0xF182, 0x99DB,
+	0xF183, 0x99DC, 0xF184, 0x99DD, 0xF185, 0x99DE, 0xF186, 0x99DF,
+	0xF187, 0x99E0, 0xF188, 0x99E1, 0xF189, 0x99E2, 0xF18A, 0x99E3,
+	0xF18B, 0x99E4, 0xF18C, 0x99E5, 0xF18D, 0x99E6, 0xF18E, 0x99E7,
+	0xF18F, 0x99E8, 0xF190, 0x99E9, 0xF191, 0x99EA, 0xF192, 0x99EB,
+	0xF193, 0x99EC, 0xF194, 0x99ED, 0xF195, 0x99EE, 0xF196, 0x99EF,
+	0xF197, 0x99F0, 0xF198, 0x99F1, 0xF199, 0x99F2, 0xF19A, 0x99F3,
+	0xF19B, 0x99F4, 0xF19C, 0x99F5, 0xF19D, 0x99F6, 0xF19E, 0x99F7,
+	0xF19F, 0x99F8, 0xF1A0, 0x99F9, 0xF1A1, 0x761B, 0xF1A2, 0x763C,
+	0xF1A3, 0x7622, 0xF1A4, 0x7620, 0xF1A5, 0x7640, 0xF1A6, 0x762D,
+	0xF1A7, 0x7630, 0xF1A8, 0x763F, 0xF1A9, 0x7635, 0xF1AA, 0x7643,
+	0xF1AB, 0x763E, 0xF1AC, 0x7633, 0xF1AD, 0x764D, 0xF1AE, 0x765E,
+	0xF1AF, 0x7654, 0xF1B0, 0x765C, 0xF1B1, 0x7656, 0xF1B2, 0x766B,
+	0xF1B3, 0x766F, 0xF1B4, 0x7FCA, 0xF1B5, 0x7AE6, 0xF1B6, 0x7A78,
+	0xF1B7, 0x7A79, 0xF1B8, 0x7A80, 0xF1B9, 0x7A86, 0xF1BA, 0x7A88,
+	0xF1BB, 0x7A95, 0xF1BC, 0x7AA6, 0xF1BD, 0x7AA0, 0xF1BE, 0x7AAC,
+	0xF1BF, 0x7AA8, 0xF1C0, 0x7AAD, 0xF1C1, 0x7AB3, 0xF1C2, 0x8864,
+	0xF1C3, 0x8869, 0xF1C4, 0x8872, 0xF1C5, 0x887D, 0xF1C6, 0x887F,
+	0xF1C7, 0x8882, 0xF1C8, 0x88A2, 0xF1C9, 0x88C6, 0xF1CA, 0x88B7,
+	0xF1CB, 0x88BC, 0xF1CC, 0x88C9, 0xF1CD, 0x88E2, 0xF1CE, 0x88CE,
+	0xF1CF, 0x88E3, 0xF1D0, 0x88E5, 0xF1D1, 0x88F1, 0xF1D2, 0x891A,
+	0xF1D3, 0x88FC, 0xF1D4, 0x88E8, 0xF1D5, 0x88FE, 0xF1D6, 0x88F0,
+	0xF1D7, 0x8921, 0xF1D8, 0x8919, 0xF1D9, 0x8913, 0xF1DA, 0x891B,
+	0xF1DB, 0x890A, 0xF1DC, 0x8934, 0xF1DD, 0x892B, 0xF1DE, 0x8936,
+	0xF1DF, 0x8941, 0xF1E0, 0x8966, 0xF1E1, 0x897B, 0xF1E2, 0x758B,
+	0xF1E3, 0x80E5, 0xF1E4, 0x76B2, 0xF1E5, 0x76B4, 0xF1E6, 0x77DC,
+	0xF1E7, 0x8012, 0xF1E8, 0x8014, 0xF1E9, 0x8016, 0xF1EA, 0x801C,
+	0xF1EB, 0x8020, 0xF1EC, 0x8022, 0xF1ED, 0x8025, 0xF1EE, 0x8026,
+	0xF1EF, 0x8027, 0xF1F0, 0x8029, 0xF1F1, 0x8028, 0xF1F2, 0x8031,
+	0xF1F3, 0x800B, 0xF1F4, 0x8035, 0xF1F5, 0x8043, 0xF1F6, 0x8046,
+	0xF1F7, 0x804D, 0xF1F8, 0x8052, 0xF1F9, 0x8069, 0xF1FA, 0x8071,
+	0xF1FB, 0x8983, 0xF1FC, 0x9878, 0xF1FD, 0x9880, 0xF1FE, 0x9883,
+	0xF240, 0x99FA, 0xF241, 0x99FB, 0xF242, 0x99FC, 0xF243, 0x99FD,
+	0xF244, 0x99FE, 0xF245, 0x99FF, 0xF246, 0x9A00, 0xF247, 0x9A01,
+	0xF248, 0x9A02, 0xF249, 0x9A03, 0xF24A, 0x9A04, 0xF24B, 0x9A05,
+	0xF24C, 0x9A06, 0xF24D, 0x9A07, 0xF24E, 0x9A08, 0xF24F, 0x9A09,
+	0xF250, 0x9A0A, 0xF251, 0x9A0B, 0xF252, 0x9A0C, 0xF253, 0x9A0D,
+	0xF254, 0x9A0E, 0xF255, 0x9A0F, 0xF256, 0x9A10, 0xF257, 0x9A11,
+	0xF258, 0x9A12, 0xF259, 0x9A13, 0xF25A, 0x9A14, 0xF25B, 0x9A15,
+	0xF25C, 0x9A16, 0xF25D, 0x9A17, 0xF25E, 0x9A18, 0xF25F, 0x9A19,
+	0xF260, 0x9A1A, 0xF261, 0x9A1B, 0xF262, 0x9A1C, 0xF263, 0x9A1D,
+	0xF264, 0x9A1E, 0xF265, 0x9A1F, 0xF266, 0x9A20, 0xF267, 0x9A21,
+	0xF268, 0x9A22, 0xF269, 0x9A23, 0xF26A, 0x9A24, 0xF26B, 0x9A25,
+	0xF26C, 0x9A26, 0xF26D, 0x9A27, 0xF26E, 0x9A28, 0xF26F, 0x9A29,
+	0xF270, 0x9A2A, 0xF271, 0x9A2B, 0xF272, 0x9A2C, 0xF273, 0x9A2D,
+	0xF274, 0x9A2E, 0xF275, 0x9A2F, 0xF276, 0x9A30, 0xF277, 0x9A31,
+	0xF278, 0x9A32, 0xF279, 0x9A33, 0xF27A, 0x9A34, 0xF27B, 0x9A35,
+	0xF27C, 0x9A36, 0xF27D, 0x9A37, 0xF27E, 0x9A38, 0xF280, 0x9A39,
+	0xF281, 0x9A3A, 0xF282, 0x9A3B, 0xF283, 0x9A3C, 0xF284, 0x9A3D,
+	0xF285, 0x9A3E, 0xF286, 0x9A3F, 0xF287, 0x9A40, 0xF288, 0x9A41,
+	0xF289, 0x9A42, 0xF28A, 0x9A43, 0xF28B, 0x9A44, 0xF28C, 0x9A45,
+	0xF28D, 0x9A46, 0xF28E, 0x9A47, 0xF28F, 0x9A48, 0xF290, 0x9A49,
+	0xF291, 0x9A4A, 0xF292, 0x9A4B, 0xF293, 0x9A4C, 0xF294, 0x9A4D,
+	0xF295, 0x9A4E, 0xF296, 0x9A4F, 0xF297, 0x9A50, 0xF298, 0x9A51,
+	0xF299, 0x9A52, 0xF29A, 0x9A53, 0xF29B, 0x9A54, 0xF29C, 0x9A55,
+	0xF29D, 0x9A56, 0xF29E, 0x9A57, 0xF29F, 0x9A58, 0xF2A0, 0x9A59,
+	0xF2A1, 0x9889, 0xF2A2, 0x988C, 0xF2A3, 0x988D, 0xF2A4, 0x988F,
+	0xF2A5, 0x9894, 0xF2A6, 0x989A, 0xF2A7, 0x989B, 0xF2A8, 0x989E,
+	0xF2A9, 0x989F, 0xF2AA, 0x98A1, 0xF2AB, 0x98A2, 0xF2AC, 0x98A5,
+	0xF2AD, 0x98A6, 0xF2AE, 0x864D, 0xF2AF, 0x8654, 0xF2B0, 0x866C,
+	0xF2B1, 0x866E, 0xF2B2, 0x867F, 0xF2B3, 0x867A, 0xF2B4, 0x867C,
+	0xF2B5, 0x867B, 0xF2B6, 0x86A8, 0xF2B7, 0x868D, 0xF2B8, 0x868B,
+	0xF2B9, 0x86AC, 0xF2BA, 0x869D, 0xF2BB, 0x86A7, 0xF2BC, 0x86A3,
+	0xF2BD, 0x86AA, 0xF2BE, 0x8693, 0xF2BF, 0x86A9, 0xF2C0, 0x86B6,
+	0xF2C1, 0x86C4, 0xF2C2, 0x86B5, 0xF2C3, 0x86CE, 0xF2C4, 0x86B0,
+	0xF2C5, 0x86BA, 0xF2C6, 0x86B1, 0xF2C7, 0x86AF, 0xF2C8, 0x86C9,
+	0xF2C9, 0x86CF, 0xF2CA, 0x86B4, 0xF2CB, 0x86E9, 0xF2CC, 0x86F1,
+	0xF2CD, 0x86F2, 0xF2CE, 0x86ED, 0xF2CF, 0x86F3, 0xF2D0, 0x86D0,
+	0xF2D1, 0x8713, 0xF2D2, 0x86DE, 0xF2D3, 0x86F4, 0xF2D4, 0x86DF,
+	0xF2D5, 0x86D8, 0xF2D6, 0x86D1, 0xF2D7, 0x8703, 0xF2D8, 0x8707,
+	0xF2D9, 0x86F8, 0xF2DA, 0x8708, 0xF2DB, 0x870A, 0xF2DC, 0x870D,
+	0xF2DD, 0x8709, 0xF2DE, 0x8723, 0xF2DF, 0x873B, 0xF2E0, 0x871E,
+	0xF2E1, 0x8725, 0xF2E2, 0x872E, 0xF2E3, 0x871A, 0xF2E4, 0x873E,
+	0xF2E5, 0x8748, 0xF2E6, 0x8734, 0xF2E7, 0x8731, 0xF2E8, 0x8729,
+	0xF2E9, 0x8737, 0xF2EA, 0x873F, 0xF2EB, 0x8782, 0xF2EC, 0x8722,
+	0xF2ED, 0x877D, 0xF2EE, 0x877E, 0xF2EF, 0x877B, 0xF2F0, 0x8760,
+	0xF2F1, 0x8770, 0xF2F2, 0x874C, 0xF2F3, 0x876E, 0xF2F4, 0x878B,
+	0xF2F5, 0x8753, 0xF2F6, 0x8763, 0xF2F7, 0x877C, 0xF2F8, 0x8764,
+	0xF2F9, 0x8759, 0xF2FA, 0x8765, 0xF2FB, 0x8793, 0xF2FC, 0x87AF,
+	0xF2FD, 0x87A8, 0xF2FE, 0x87D2, 0xF340, 0x9A5A, 0xF341, 0x9A5B,
+	0xF342, 0x9A5C, 0xF343, 0x9A5D, 0xF344, 0x9A5E, 0xF345, 0x9A5F,
+	0xF346, 0x9A60, 0xF347, 0x9A61, 0xF348, 0x9A62, 0xF349, 0x9A63,
+	0xF34A, 0x9A64, 0xF34B, 0x9A65, 0xF34C, 0x9A66, 0xF34D, 0x9A67,
+	0xF34E, 0x9A68, 0xF34F, 0x9A69, 0xF350, 0x9A6A, 0xF351, 0x9A6B,
+	0xF352, 0x9A72, 0xF353, 0x9A83, 0xF354, 0x9A89, 0xF355, 0x9A8D,
+	0xF356, 0x9A8E, 0xF357, 0x9A94, 0xF358, 0x9A95, 0xF359, 0x9A99,
+	0xF35A, 0x9AA6, 0xF35B, 0x9AA9, 0xF35C, 0x9AAA, 0xF35D, 0x9AAB,
+	0xF35E, 0x9AAC, 0xF35F, 0x9AAD, 0xF360, 0x9AAE, 0xF361, 0x9AAF,
+	0xF362, 0x9AB2, 0xF363, 0x9AB3, 0xF364, 0x9AB4, 0xF365, 0x9AB5,
+	0xF366, 0x9AB9, 0xF367, 0x9ABB, 0xF368, 0x9ABD, 0xF369, 0x9ABE,
+	0xF36A, 0x9ABF, 0xF36B, 0x9AC3, 0xF36C, 0x9AC4, 0xF36D, 0x9AC6,
+	0xF36E, 0x9AC7, 0xF36F, 0x9AC8, 0xF370, 0x9AC9, 0xF371, 0x9ACA,
+	0xF372, 0x9ACD, 0xF373, 0x9ACE, 0xF374, 0x9ACF, 0xF375, 0x9AD0,
+	0xF376, 0x9AD2, 0xF377, 0x9AD4, 0xF378, 0x9AD5, 0xF379, 0x9AD6,
+	0xF37A, 0x9AD7, 0xF37B, 0x9AD9, 0xF37C, 0x9ADA, 0xF37D, 0x9ADB,
+	0xF37E, 0x9ADC, 0xF380, 0x9ADD, 0xF381, 0x9ADE, 0xF382, 0x9AE0,
+	0xF383, 0x9AE2, 0xF384, 0x9AE3, 0xF385, 0x9AE4, 0xF386, 0x9AE5,
+	0xF387, 0x9AE7, 0xF388, 0x9AE8, 0xF389, 0x9AE9, 0xF38A, 0x9AEA,
+	0xF38B, 0x9AEC, 0xF38C, 0x9AEE, 0xF38D, 0x9AF0, 0xF38E, 0x9AF1,
+	0xF38F, 0x9AF2, 0xF390, 0x9AF3, 0xF391, 0x9AF4, 0xF392, 0x9AF5,
+	0xF393, 0x9AF6, 0xF394, 0x9AF7, 0xF395, 0x9AF8, 0xF396, 0x9AFA,
+	0xF397, 0x9AFC, 0xF398, 0x9AFD, 0xF399, 0x9AFE, 0xF39A, 0x9AFF,
+	0xF39B, 0x9B00, 0xF39C, 0x9B01, 0xF39D, 0x9B02, 0xF39E, 0x9B04,
+	0xF39F, 0x9B05, 0xF3A0, 0x9B06, 0xF3A1, 0x87C6, 0xF3A2, 0x8788,
+	0xF3A3, 0x8785, 0xF3A4, 0x87AD, 0xF3A5, 0x8797, 0xF3A6, 0x8783,
+	0xF3A7, 0x87AB, 0xF3A8, 0x87E5, 0xF3A9, 0x87AC, 0xF3AA, 0x87B5,
+	0xF3AB, 0x87B3, 0xF3AC, 0x87CB, 0xF3AD, 0x87D3, 0xF3AE, 0x87BD,
+	0xF3AF, 0x87D1, 0xF3B0, 0x87C0, 0xF3B1, 0x87CA, 0xF3B2, 0x87DB,
+	0xF3B3, 0x87EA, 0xF3B4, 0x87E0, 0xF3B5, 0x87EE, 0xF3B6, 0x8816,
+	0xF3B7, 0x8813, 0xF3B8, 0x87FE, 0xF3B9, 0x880A, 0xF3BA, 0x881B,
+	0xF3BB, 0x8821, 0xF3BC, 0x8839, 0xF3BD, 0x883C, 0xF3BE, 0x7F36,
+	0xF3BF, 0x7F42, 0xF3C0, 0x7F44, 0xF3C1, 0x7F45, 0xF3C2, 0x8210,
+	0xF3C3, 0x7AFA, 0xF3C4, 0x7AFD, 0xF3C5, 0x7B08, 0xF3C6, 0x7B03,
+	0xF3C7, 0x7B04, 0xF3C8, 0x7B15, 0xF3C9, 0x7B0A, 0xF3CA, 0x7B2B,
+	0xF3CB, 0x7B0F, 0xF3CC, 0x7B47, 0xF3CD, 0x7B38, 0xF3CE, 0x7B2A,
+	0xF3CF, 0x7B19, 0xF3D0, 0x7B2E, 0xF3D1, 0x7B31, 0xF3D2, 0x7B20,
+	0xF3D3, 0x7B25, 0xF3D4, 0x7B24, 0xF3D5, 0x7B33, 0xF3D6, 0x7B3E,
+	0xF3D7, 0x7B1E, 0xF3D8, 0x7B58, 0xF3D9, 0x7B5A, 0xF3DA, 0x7B45,
+	0xF3DB, 0x7B75, 0xF3DC, 0x7B4C, 0xF3DD, 0x7B5D, 0xF3DE, 0x7B60,
+	0xF3DF, 0x7B6E, 0xF3E0, 0x7B7B, 0xF3E1, 0x7B62, 0xF3E2, 0x7B72,
+	0xF3E3, 0x7B71, 0xF3E4, 0x7B90, 0xF3E5, 0x7BA6, 0xF3E6, 0x7BA7,
+	0xF3E7, 0x7BB8, 0xF3E8, 0x7BAC, 0xF3E9, 0x7B9D, 0xF3EA, 0x7BA8,
+	0xF3EB, 0x7B85, 0xF3EC, 0x7BAA, 0xF3ED, 0x7B9C, 0xF3EE, 0x7BA2,
+	0xF3EF, 0x7BAB, 0xF3F0, 0x7BB4, 0xF3F1, 0x7BD1, 0xF3F2, 0x7BC1,
+	0xF3F3, 0x7BCC, 0xF3F4, 0x7BDD, 0xF3F5, 0x7BDA, 0xF3F6, 0x7BE5,
+	0xF3F7, 0x7BE6, 0xF3F8, 0x7BEA, 0xF3F9, 0x7C0C, 0xF3FA, 0x7BFE,
+	0xF3FB, 0x7BFC, 0xF3FC, 0x7C0F, 0xF3FD, 0x7C16, 0xF3FE, 0x7C0B,
+	0xF440, 0x9B07, 0xF441, 0x9B09, 0xF442, 0x9B0A, 0xF443, 0x9B0B,
+	0xF444, 0x9B0C, 0xF445, 0x9B0D, 0xF446, 0x9B0E, 0xF447, 0x9B10,
+	0xF448, 0x9B11, 0xF449, 0x9B12, 0xF44A, 0x9B14, 0xF44B, 0x9B15,
+	0xF44C, 0x9B16, 0xF44D, 0x9B17, 0xF44E, 0x9B18, 0xF44F, 0x9B19,
+	0xF450, 0x9B1A, 0xF451, 0x9B1B, 0xF452, 0x9B1C, 0xF453, 0x9B1D,
+	0xF454, 0x9B1E, 0xF455, 0x9B20, 0xF456, 0x9B21, 0xF457, 0x9B22,
+	0xF458, 0x9B24, 0xF459, 0x9B25, 0xF45A, 0x9B26, 0xF45B, 0x9B27,
+	0xF45C, 0x9B28, 0xF45D, 0x9B29, 0xF45E, 0x9B2A, 0xF45F, 0x9B2B,
+	0xF460, 0x9B2C, 0xF461, 0x9B2D, 0xF462, 0x9B2E, 0xF463, 0x9B30,
+	0xF464, 0x9B31, 0xF465, 0x9B33, 0xF466, 0x9B34, 0xF467, 0x9B35,
+	0xF468, 0x9B36, 0xF469, 0x9B37, 0xF46A, 0x9B38, 0xF46B, 0x9B39,
+	0xF46C, 0x9B3A, 0xF46D, 0x9B3D, 0xF46E, 0x9B3E, 0xF46F, 0x9B3F,
+	0xF470, 0x9B40, 0xF471, 0x9B46, 0xF472, 0x9B4A, 0xF473, 0x9B4B,
+	0xF474, 0x9B4C, 0xF475, 0x9B4E, 0xF476, 0x9B50, 0xF477, 0x9B52,
+	0xF478, 0x9B53, 0xF479, 0x9B55, 0xF47A, 0x9B56, 0xF47B, 0x9B57,
+	0xF47C, 0x9B58, 0xF47D, 0x9B59, 0xF47E, 0x9B5A, 0xF480, 0x9B5B,
+	0xF481, 0x9B5C, 0xF482, 0x9B5D, 0xF483, 0x9B5E, 0xF484, 0x9B5F,
+	0xF485, 0x9B60, 0xF486, 0x9B61, 0xF487, 0x9B62, 0xF488, 0x9B63,
+	0xF489, 0x9B64, 0xF48A, 0x9B65, 0xF48B, 0x9B66, 0xF48C, 0x9B67,
+	0xF48D, 0x9B68, 0xF48E, 0x9B69, 0xF48F, 0x9B6A, 0xF490, 0x9B6B,
+	0xF491, 0x9B6C, 0xF492, 0x9B6D, 0xF493, 0x9B6E, 0xF494, 0x9B6F,
+	0xF495, 0x9B70, 0xF496, 0x9B71, 0xF497, 0x9B72, 0xF498, 0x9B73,
+	0xF499, 0x9B74, 0xF49A, 0x9B75, 0xF49B, 0x9B76, 0xF49C, 0x9B77,
+	0xF49D, 0x9B78, 0xF49E, 0x9B79, 0xF49F, 0x9B7A, 0xF4A0, 0x9B7B,
+	0xF4A1, 0x7C1F, 0xF4A2, 0x7C2A, 0xF4A3, 0x7C26, 0xF4A4, 0x7C38,
+	0xF4A5, 0x7C41, 0xF4A6, 0x7C40, 0xF4A7, 0x81FE, 0xF4A8, 0x8201,
+	0xF4A9, 0x8202, 0xF4AA, 0x8204, 0xF4AB, 0x81EC, 0xF4AC, 0x8844,
+	0xF4AD, 0x8221, 0xF4AE, 0x8222, 0xF4AF, 0x8223, 0xF4B0, 0x822D,
+	0xF4B1, 0x822F, 0xF4B2, 0x8228, 0xF4B3, 0x822B, 0xF4B4, 0x8238,
+	0xF4B5, 0x823B, 0xF4B6, 0x8233, 0xF4B7, 0x8234, 0xF4B8, 0x823E,
+	0xF4B9, 0x8244, 0xF4BA, 0x8249, 0xF4BB, 0x824B, 0xF4BC, 0x824F,
+	0xF4BD, 0x825A, 0xF4BE, 0x825F, 0xF4BF, 0x8268, 0xF4C0, 0x887E,
+	0xF4C1, 0x8885, 0xF4C2, 0x8888, 0xF4C3, 0x88D8, 0xF4C4, 0x88DF,
+	0xF4C5, 0x895E, 0xF4C6, 0x7F9D, 0xF4C7, 0x7F9F, 0xF4C8, 0x7FA7,
+	0xF4C9, 0x7FAF, 0xF4CA, 0x7FB0, 0xF4CB, 0x7FB2, 0xF4CC, 0x7C7C,
+	0xF4CD, 0x6549, 0xF4CE, 0x7C91, 0xF4CF, 0x7C9D, 0xF4D0, 0x7C9C,
+	0xF4D1, 0x7C9E, 0xF4D2, 0x7CA2, 0xF4D3, 0x7CB2, 0xF4D4, 0x7CBC,
+	0xF4D5, 0x7CBD, 0xF4D6, 0x7CC1, 0xF4D7, 0x7CC7, 0xF4D8, 0x7CCC,
+	0xF4D9, 0x7CCD, 0xF4DA, 0x7CC8, 0xF4DB, 0x7CC5, 0xF4DC, 0x7CD7,
+	0xF4DD, 0x7CE8, 0xF4DE, 0x826E, 0xF4DF, 0x66A8, 0xF4E0, 0x7FBF,
+	0xF4E1, 0x7FCE, 0xF4E2, 0x7FD5, 0xF4E3, 0x7FE5, 0xF4E4, 0x7FE1,
+	0xF4E5, 0x7FE6, 0xF4E6, 0x7FE9, 0xF4E7, 0x7FEE, 0xF4E8, 0x7FF3,
+	0xF4E9, 0x7CF8, 0xF4EA, 0x7D77, 0xF4EB, 0x7DA6, 0xF4EC, 0x7DAE,
+	0xF4ED, 0x7E47, 0xF4EE, 0x7E9B, 0xF4EF, 0x9EB8, 0xF4F0, 0x9EB4,
+	0xF4F1, 0x8D73, 0xF4F2, 0x8D84, 0xF4F3, 0x8D94, 0xF4F4, 0x8D91,
+	0xF4F5, 0x8DB1, 0xF4F6, 0x8D67, 0xF4F7, 0x8D6D, 0xF4F8, 0x8C47,
+	0xF4F9, 0x8C49, 0xF4FA, 0x914A, 0xF4FB, 0x9150, 0xF4FC, 0x914E,
+	0xF4FD, 0x914F, 0xF4FE, 0x9164, 0xF540, 0x9B7C, 0xF541, 0x9B7D,
+	0xF542, 0x9B7E, 0xF543, 0x9B7F, 0xF544, 0x9B80, 0xF545, 0x9B81,
+	0xF546, 0x9B82, 0xF547, 0x9B83, 0xF548, 0x9B84, 0xF549, 0x9B85,
+	0xF54A, 0x9B86, 0xF54B, 0x9B87, 0xF54C, 0x9B88, 0xF54D, 0x9B89,
+	0xF54E, 0x9B8A, 0xF54F, 0x9B8B, 0xF550, 0x9B8C, 0xF551, 0x9B8D,
+	0xF552, 0x9B8E, 0xF553, 0x9B8F, 0xF554, 0x9B90, 0xF555, 0x9B91,
+	0xF556, 0x9B92, 0xF557, 0x9B93, 0xF558, 0x9B94, 0xF559, 0x9B95,
+	0xF55A, 0x9B96, 0xF55B, 0x9B97, 0xF55C, 0x9B98, 0xF55D, 0x9B99,
+	0xF55E, 0x9B9A, 0xF55F, 0x9B9B, 0xF560, 0x9B9C, 0xF561, 0x9B9D,
+	0xF562, 0x9B9E, 0xF563, 0x9B9F, 0xF564, 0x9BA0, 0xF565, 0x9BA1,
+	0xF566, 0x9BA2, 0xF567, 0x9BA3, 0xF568, 0x9BA4, 0xF569, 0x9BA5,
+	0xF56A, 0x9BA6, 0xF56B, 0x9BA7, 0xF56C, 0x9BA8, 0xF56D, 0x9BA9,
+	0xF56E, 0x9BAA, 0xF56F, 0x9BAB, 0xF570, 0x9BAC, 0xF571, 0x9BAD,
+	0xF572, 0x9BAE, 0xF573, 0x9BAF, 0xF574, 0x9BB0, 0xF575, 0x9BB1,
+	0xF576, 0x9BB2, 0xF577, 0x9BB3, 0xF578, 0x9BB4, 0xF579, 0x9BB5,
+	0xF57A, 0x9BB6, 0xF57B, 0x9BB7, 0xF57C, 0x9BB8, 0xF57D, 0x9BB9,
+	0xF57E, 0x9BBA, 0xF580, 0x9BBB, 0xF581, 0x9BBC, 0xF582, 0x9BBD,
+	0xF583, 0x9BBE, 0xF584, 0x9BBF, 0xF585, 0x9BC0, 0xF586, 0x9BC1,
+	0xF587, 0x9BC2, 0xF588, 0x9BC3, 0xF589, 0x9BC4, 0xF58A, 0x9BC5,
+	0xF58B, 0x9BC6, 0xF58C, 0x9BC7, 0xF58D, 0x9BC8, 0xF58E, 0x9BC9,
+	0xF58F, 0x9BCA, 0xF590, 0x9BCB, 0xF591, 0x9BCC, 0xF592, 0x9BCD,
+	0xF593, 0x9BCE, 0xF594, 0x9BCF, 0xF595, 0x9BD0, 0xF596, 0x9BD1,
+	0xF597, 0x9BD2, 0xF598, 0x9BD3, 0xF599, 0x9BD4, 0xF59A, 0x9BD5,
+	0xF59B, 0x9BD6, 0xF59C, 0x9BD7, 0xF59D, 0x9BD8, 0xF59E, 0x9BD9,
+	0xF59F, 0x9BDA, 0xF5A0, 0x9BDB, 0xF5A1, 0x9162, 0xF5A2, 0x9161,
+	0xF5A3, 0x9170, 0xF5A4, 0x9169, 0xF5A5, 0x916F, 0xF5A6, 0x917D,
+	0xF5A7, 0x917E, 0xF5A8, 0x9172, 0xF5A9, 0x9174, 0xF5AA, 0x9179,
+	0xF5AB, 0x918C, 0xF5AC, 0x9185, 0xF5AD, 0x9190, 0xF5AE, 0x918D,
+	0xF5AF, 0x9191, 0xF5B0, 0x91A2, 0xF5B1, 0x91A3, 0xF5B2, 0x91AA,
+	0xF5B3, 0x91AD, 0xF5B4, 0x91AE, 0xF5B5, 0x91AF, 0xF5B6, 0x91B5,
+	0xF5B7, 0x91B4, 0xF5B8, 0x91BA, 0xF5B9, 0x8C55, 0xF5BA, 0x9E7E,
+	0xF5BB, 0x8DB8, 0xF5BC, 0x8DEB, 0xF5BD, 0x8E05, 0xF5BE, 0x8E59,
+	0xF5BF, 0x8E69, 0xF5C0, 0x8DB5, 0xF5C1, 0x8DBF, 0xF5C2, 0x8DBC,
+	0xF5C3, 0x8DBA, 0xF5C4, 0x8DC4, 0xF5C5, 0x8DD6, 0xF5C6, 0x8DD7,
+	0xF5C7, 0x8DDA, 0xF5C8, 0x8DDE, 0xF5C9, 0x8DCE, 0xF5CA, 0x8DCF,
+	0xF5CB, 0x8DDB, 0xF5CC, 0x8DC6, 0xF5CD, 0x8DEC, 0xF5CE, 0x8DF7,
+	0xF5CF, 0x8DF8, 0xF5D0, 0x8DE3, 0xF5D1, 0x8DF9, 0xF5D2, 0x8DFB,
+	0xF5D3, 0x8DE4, 0xF5D4, 0x8E09, 0xF5D5, 0x8DFD, 0xF5D6, 0x8E14,
+	0xF5D7, 0x8E1D, 0xF5D8, 0x8E1F, 0xF5D9, 0x8E2C, 0xF5DA, 0x8E2E,
+	0xF5DB, 0x8E23, 0xF5DC, 0x8E2F, 0xF5DD, 0x8E3A, 0xF5DE, 0x8E40,
+	0xF5DF, 0x8E39, 0xF5E0, 0x8E35, 0xF5E1, 0x8E3D, 0xF5E2, 0x8E31,
+	0xF5E3, 0x8E49, 0xF5E4, 0x8E41, 0xF5E5, 0x8E42, 0xF5E6, 0x8E51,
+	0xF5E7, 0x8E52, 0xF5E8, 0x8E4A, 0xF5E9, 0x8E70, 0xF5EA, 0x8E76,
+	0xF5EB, 0x8E7C, 0xF5EC, 0x8E6F, 0xF5ED, 0x8E74, 0xF5EE, 0x8E85,
+	0xF5EF, 0x8E8F, 0xF5F0, 0x8E94, 0xF5F1, 0x8E90, 0xF5F2, 0x8E9C,
+	0xF5F3, 0x8E9E, 0xF5F4, 0x8C78, 0xF5F5, 0x8C82, 0xF5F6, 0x8C8A,
+	0xF5F7, 0x8C85, 0xF5F8, 0x8C98, 0xF5F9, 0x8C94, 0xF5FA, 0x659B,
+	0xF5FB, 0x89D6, 0xF5FC, 0x89DE, 0xF5FD, 0x89DA, 0xF5FE, 0x89DC,
+	0xF640, 0x9BDC, 0xF641, 0x9BDD, 0xF642, 0x9BDE, 0xF643, 0x9BDF,
+	0xF644, 0x9BE0, 0xF645, 0x9BE1, 0xF646, 0x9BE2, 0xF647, 0x9BE3,
+	0xF648, 0x9BE4, 0xF649, 0x9BE5, 0xF64A, 0x9BE6, 0xF64B, 0x9BE7,
+	0xF64C, 0x9BE8, 0xF64D, 0x9BE9, 0xF64E, 0x9BEA, 0xF64F, 0x9BEB,
+	0xF650, 0x9BEC, 0xF651, 0x9BED, 0xF652, 0x9BEE, 0xF653, 0x9BEF,
+	0xF654, 0x9BF0, 0xF655, 0x9BF1, 0xF656, 0x9BF2, 0xF657, 0x9BF3,
+	0xF658, 0x9BF4, 0xF659, 0x9BF5, 0xF65A, 0x9BF6, 0xF65B, 0x9BF7,
+	0xF65C, 0x9BF8, 0xF65D, 0x9BF9, 0xF65E, 0x9BFA, 0xF65F, 0x9BFB,
+	0xF660, 0x9BFC, 0xF661, 0x9BFD, 0xF662, 0x9BFE, 0xF663, 0x9BFF,
+	0xF664, 0x9C00, 0xF665, 0x9C01, 0xF666, 0x9C02, 0xF667, 0x9C03,
+	0xF668, 0x9C04, 0xF669, 0x9C05, 0xF66A, 0x9C06, 0xF66B, 0x9C07,
+	0xF66C, 0x9C08, 0xF66D, 0x9C09, 0xF66E, 0x9C0A, 0xF66F, 0x9C0B,
+	0xF670, 0x9C0C, 0xF671, 0x9C0D, 0xF672, 0x9C0E, 0xF673, 0x9C0F,
+	0xF674, 0x9C10, 0xF675, 0x9C11, 0xF676, 0x9C12, 0xF677, 0x9C13,
+	0xF678, 0x9C14, 0xF679, 0x9C15, 0xF67A, 0x9C16, 0xF67B, 0x9C17,
+	0xF67C, 0x9C18, 0xF67D, 0x9C19, 0xF67E, 0x9C1A, 0xF680, 0x9C1B,
+	0xF681, 0x9C1C, 0xF682, 0x9C1D, 0xF683, 0x9C1E, 0xF684, 0x9C1F,
+	0xF685, 0x9C20, 0xF686, 0x9C21, 0xF687, 0x9C22, 0xF688, 0x9C23,
+	0xF689, 0x9C24, 0xF68A, 0x9C25, 0xF68B, 0x9C26, 0xF68C, 0x9C27,
+	0xF68D, 0x9C28, 0xF68E, 0x9C29, 0xF68F, 0x9C2A, 0xF690, 0x9C2B,
+	0xF691, 0x9C2C, 0xF692, 0x9C2D, 0xF693, 0x9C2E, 0xF694, 0x9C2F,
+	0xF695, 0x9C30, 0xF696, 0x9C31, 0xF697, 0x9C32, 0xF698, 0x9C33,
+	0xF699, 0x9C34, 0xF69A, 0x9C35, 0xF69B, 0x9C36, 0xF69C, 0x9C37,
+	0xF69D, 0x9C38, 0xF69E, 0x9C39, 0xF69F, 0x9C3A, 0xF6A0, 0x9C3B,
+	0xF6A1, 0x89E5, 0xF6A2, 0x89EB, 0xF6A3, 0x89EF, 0xF6A4, 0x8A3E,
+	0xF6A5, 0x8B26, 0xF6A6, 0x9753, 0xF6A7, 0x96E9, 0xF6A8, 0x96F3,
+	0xF6A9, 0x96EF, 0xF6AA, 0x9706, 0xF6AB, 0x9701, 0xF6AC, 0x9708,
+	0xF6AD, 0x970F, 0xF6AE, 0x970E, 0xF6AF, 0x972A, 0xF6B0, 0x972D,
+	0xF6B1, 0x9730, 0xF6B2, 0x973E, 0xF6B3, 0x9F80, 0xF6B4, 0x9F83,
+	0xF6B5, 0x9F85, 0xF6B6, 0x9F86, 0xF6B7, 0x9F87, 0xF6B8, 0x9F88,
+	0xF6B9, 0x9F89, 0xF6BA, 0x9F8A, 0xF6BB, 0x9F8C, 0xF6BC, 0x9EFE,
+	0xF6BD, 0x9F0B, 0xF6BE, 0x9F0D, 0xF6BF, 0x96B9, 0xF6C0, 0x96BC,
+	0xF6C1, 0x96BD, 0xF6C2, 0x96CE, 0xF6C3, 0x96D2, 0xF6C4, 0x77BF,
+	0xF6C5, 0x96E0, 0xF6C6, 0x928E, 0xF6C7, 0x92AE, 0xF6C8, 0x92C8,
+	0xF6C9, 0x933E, 0xF6CA, 0x936A, 0xF6CB, 0x93CA, 0xF6CC, 0x938F,
+	0xF6CD, 0x943E, 0xF6CE, 0x946B, 0xF6CF, 0x9C7F, 0xF6D0, 0x9C82,
+	0xF6D1, 0x9C85, 0xF6D2, 0x9C86, 0xF6D3, 0x9C87, 0xF6D4, 0x9C88,
+	0xF6D5, 0x7A23, 0xF6D6, 0x9C8B, 0xF6D7, 0x9C8E, 0xF6D8, 0x9C90,
+	0xF6D9, 0x9C91, 0xF6DA, 0x9C92, 0xF6DB, 0x9C94, 0xF6DC, 0x9C95,
+	0xF6DD, 0x9C9A, 0xF6DE, 0x9C9B, 0xF6DF, 0x9C9E, 0xF6E0, 0x9C9F,
+	0xF6E1, 0x9CA0, 0xF6E2, 0x9CA1, 0xF6E3, 0x9CA2, 0xF6E4, 0x9CA3,
+	0xF6E5, 0x9CA5, 0xF6E6, 0x9CA6, 0xF6E7, 0x9CA7, 0xF6E8, 0x9CA8,
+	0xF6E9, 0x9CA9, 0xF6EA, 0x9CAB, 0xF6EB, 0x9CAD, 0xF6EC, 0x9CAE,
+	0xF6ED, 0x9CB0, 0xF6EE, 0x9CB1, 0xF6EF, 0x9CB2, 0xF6F0, 0x9CB3,
+	0xF6F1, 0x9CB4, 0xF6F2, 0x9CB5, 0xF6F3, 0x9CB6, 0xF6F4, 0x9CB7,
+	0xF6F5, 0x9CBA, 0xF6F6, 0x9CBB, 0xF6F7, 0x9CBC, 0xF6F8, 0x9CBD,
+	0xF6F9, 0x9CC4, 0xF6FA, 0x9CC5, 0xF6FB, 0x9CC6, 0xF6FC, 0x9CC7,
+	0xF6FD, 0x9CCA, 0xF6FE, 0x9CCB, 0xF740, 0x9C3C, 0xF741, 0x9C3D,
+	0xF742, 0x9C3E, 0xF743, 0x9C3F, 0xF744, 0x9C40, 0xF745, 0x9C41,
+	0xF746, 0x9C42, 0xF747, 0x9C43, 0xF748, 0x9C44, 0xF749, 0x9C45,
+	0xF74A, 0x9C46, 0xF74B, 0x9C47, 0xF74C, 0x9C48, 0xF74D, 0x9C49,
+	0xF74E, 0x9C4A, 0xF74F, 0x9C4B, 0xF750, 0x9C4C, 0xF751, 0x9C4D,
+	0xF752, 0x9C4E, 0xF753, 0x9C4F, 0xF754, 0x9C50, 0xF755, 0x9C51,
+	0xF756, 0x9C52, 0xF757, 0x9C53, 0xF758, 0x9C54, 0xF759, 0x9C55,
+	0xF75A, 0x9C56, 0xF75B, 0x9C57, 0xF75C, 0x9C58, 0xF75D, 0x9C59,
+	0xF75E, 0x9C5A, 0xF75F, 0x9C5B, 0xF760, 0x9C5C, 0xF761, 0x9C5D,
+	0xF762, 0x9C5E, 0xF763, 0x9C5F, 0xF764, 0x9C60, 0xF765, 0x9C61,
+	0xF766, 0x9C62, 0xF767, 0x9C63, 0xF768, 0x9C64, 0xF769, 0x9C65,
+	0xF76A, 0x9C66, 0xF76B, 0x9C67, 0xF76C, 0x9C68, 0xF76D, 0x9C69,
+	0xF76E, 0x9C6A, 0xF76F, 0x9C6B, 0xF770, 0x9C6C, 0xF771, 0x9C6D,
+	0xF772, 0x9C6E, 0xF773, 0x9C6F, 0xF774, 0x9C70, 0xF775, 0x9C71,
+	0xF776, 0x9C72, 0xF777, 0x9C73, 0xF778, 0x9C74, 0xF779, 0x9C75,
+	0xF77A, 0x9C76, 0xF77B, 0x9C77, 0xF77C, 0x9C78, 0xF77D, 0x9C79,
+	0xF77E, 0x9C7A, 0xF780, 0x9C7B, 0xF781, 0x9C7D, 0xF782, 0x9C7E,
+	0xF783, 0x9C80, 0xF784, 0x9C83, 0xF785, 0x9C84, 0xF786, 0x9C89,
+	0xF787, 0x9C8A, 0xF788, 0x9C8C, 0xF789, 0x9C8F, 0xF78A, 0x9C93,
+	0xF78B, 0x9C96, 0xF78C, 0x9C97, 0xF78D, 0x9C98, 0xF78E, 0x9C99,
+	0xF78F, 0x9C9D, 0xF790, 0x9CAA, 0xF791, 0x9CAC, 0xF792, 0x9CAF,
+	0xF793, 0x9CB9, 0xF794, 0x9CBE, 0xF795, 0x9CBF, 0xF796, 0x9CC0,
+	0xF797, 0x9CC1, 0xF798, 0x9CC2, 0xF799, 0x9CC8, 0xF79A, 0x9CC9,
+	0xF79B, 0x9CD1, 0xF79C, 0x9CD2, 0xF79D, 0x9CDA, 0xF79E, 0x9CDB,
+	0xF79F, 0x9CE0, 0xF7A0, 0x9CE1, 0xF7A1, 0x9CCC, 0xF7A2, 0x9CCD,
+	0xF7A3, 0x9CCE, 0xF7A4, 0x9CCF, 0xF7A5, 0x9CD0, 0xF7A6, 0x9CD3,
+	0xF7A7, 0x9CD4, 0xF7A8, 0x9CD5, 0xF7A9, 0x9CD7, 0xF7AA, 0x9CD8,
+	0xF7AB, 0x9CD9, 0xF7AC, 0x9CDC, 0xF7AD, 0x9CDD, 0xF7AE, 0x9CDF,
+	0xF7AF, 0x9CE2, 0xF7B0, 0x977C, 0xF7B1, 0x9785, 0xF7B2, 0x9791,
+	0xF7B3, 0x9792, 0xF7B4, 0x9794, 0xF7B5, 0x97AF, 0xF7B6, 0x97AB,
+	0xF7B7, 0x97A3, 0xF7B8, 0x97B2, 0xF7B9, 0x97B4, 0xF7BA, 0x9AB1,
+	0xF7BB, 0x9AB0, 0xF7BC, 0x9AB7, 0xF7BD, 0x9E58, 0xF7BE, 0x9AB6,
+	0xF7BF, 0x9ABA, 0xF7C0, 0x9ABC, 0xF7C1, 0x9AC1, 0xF7C2, 0x9AC0,
+	0xF7C3, 0x9AC5, 0xF7C4, 0x9AC2, 0xF7C5, 0x9ACB, 0xF7C6, 0x9ACC,
+	0xF7C7, 0x9AD1, 0xF7C8, 0x9B45, 0xF7C9, 0x9B43, 0xF7CA, 0x9B47,
+	0xF7CB, 0x9B49, 0xF7CC, 0x9B48, 0xF7CD, 0x9B4D, 0xF7CE, 0x9B51,
+	0xF7CF, 0x98E8, 0xF7D0, 0x990D, 0xF7D1, 0x992E, 0xF7D2, 0x9955,
+	0xF7D3, 0x9954, 0xF7D4, 0x9ADF, 0xF7D5, 0x9AE1, 0xF7D6, 0x9AE6,
+	0xF7D7, 0x9AEF, 0xF7D8, 0x9AEB, 0xF7D9, 0x9AFB, 0xF7DA, 0x9AED,
+	0xF7DB, 0x9AF9, 0xF7DC, 0x9B08, 0xF7DD, 0x9B0F, 0xF7DE, 0x9B13,
+	0xF7DF, 0x9B1F, 0xF7E0, 0x9B23, 0xF7E1, 0x9EBD, 0xF7E2, 0x9EBE,
+	0xF7E3, 0x7E3B, 0xF7E4, 0x9E82, 0xF7E5, 0x9E87, 0xF7E6, 0x9E88,
+	0xF7E7, 0x9E8B, 0xF7E8, 0x9E92, 0xF7E9, 0x93D6, 0xF7EA, 0x9E9D,
+	0xF7EB, 0x9E9F, 0xF7EC, 0x9EDB, 0xF7ED, 0x9EDC, 0xF7EE, 0x9EDD,
+	0xF7EF, 0x9EE0, 0xF7F0, 0x9EDF, 0xF7F1, 0x9EE2, 0xF7F2, 0x9EE9,
+	0xF7F3, 0x9EE7, 0xF7F4, 0x9EE5, 0xF7F5, 0x9EEA, 0xF7F6, 0x9EEF,
+	0xF7F7, 0x9F22, 0xF7F8, 0x9F2C, 0xF7F9, 0x9F2F, 0xF7FA, 0x9F39,
+	0xF7FB, 0x9F37, 0xF7FC, 0x9F3D, 0xF7FD, 0x9F3E, 0xF7FE, 0x9F44,
+	0xF840, 0x9CE3, 0xF841, 0x9CE4, 0xF842, 0x9CE5, 0xF843, 0x9CE6,
+	0xF844, 0x9CE7, 0xF845, 0x9CE8, 0xF846, 0x9CE9, 0xF847, 0x9CEA,
+	0xF848, 0x9CEB, 0xF849, 0x9CEC, 0xF84A, 0x9CED, 0xF84B, 0x9CEE,
+	0xF84C, 0x9CEF, 0xF84D, 0x9CF0, 0xF84E, 0x9CF1, 0xF84F, 0x9CF2,
+	0xF850, 0x9CF3, 0xF851, 0x9CF4, 0xF852, 0x9CF5, 0xF853, 0x9CF6,
+	0xF854, 0x9CF7, 0xF855, 0x9CF8, 0xF856, 0x9CF9, 0xF857, 0x9CFA,
+	0xF858, 0x9CFB, 0xF859, 0x9CFC, 0xF85A, 0x9CFD, 0xF85B, 0x9CFE,
+	0xF85C, 0x9CFF, 0xF85D, 0x9D00, 0xF85E, 0x9D01, 0xF85F, 0x9D02,
+	0xF860, 0x9D03, 0xF861, 0x9D04, 0xF862, 0x9D05, 0xF863, 0x9D06,
+	0xF864, 0x9D07, 0xF865, 0x9D08, 0xF866, 0x9D09, 0xF867, 0x9D0A,
+	0xF868, 0x9D0B, 0xF869, 0x9D0C, 0xF86A, 0x9D0D, 0xF86B, 0x9D0E,
+	0xF86C, 0x9D0F, 0xF86D, 0x9D10, 0xF86E, 0x9D11, 0xF86F, 0x9D12,
+	0xF870, 0x9D13, 0xF871, 0x9D14, 0xF872, 0x9D15, 0xF873, 0x9D16,
+	0xF874, 0x9D17, 0xF875, 0x9D18, 0xF876, 0x9D19, 0xF877, 0x9D1A,
+	0xF878, 0x9D1B, 0xF879, 0x9D1C, 0xF87A, 0x9D1D, 0xF87B, 0x9D1E,
+	0xF87C, 0x9D1F, 0xF87D, 0x9D20, 0xF87E, 0x9D21, 0xF880, 0x9D22,
+	0xF881, 0x9D23, 0xF882, 0x9D24, 0xF883, 0x9D25, 0xF884, 0x9D26,
+	0xF885, 0x9D27, 0xF886, 0x9D28, 0xF887, 0x9D29, 0xF888, 0x9D2A,
+	0xF889, 0x9D2B, 0xF88A, 0x9D2C, 0xF88B, 0x9D2D, 0xF88C, 0x9D2E,
+	0xF88D, 0x9D2F, 0xF88E, 0x9D30, 0xF88F, 0x9D31, 0xF890, 0x9D32,
+	0xF891, 0x9D33, 0xF892, 0x9D34, 0xF893, 0x9D35, 0xF894, 0x9D36,
+	0xF895, 0x9D37, 0xF896, 0x9D38, 0xF897, 0x9D39, 0xF898, 0x9D3A,
+	0xF899, 0x9D3B, 0xF89A, 0x9D3C, 0xF89B, 0x9D3D, 0xF89C, 0x9D3E,
+	0xF89D, 0x9D3F, 0xF89E, 0x9D40, 0xF89F, 0x9D41, 0xF8A0, 0x9D42,
+	0xF940, 0x9D43, 0xF941, 0x9D44, 0xF942, 0x9D45, 0xF943, 0x9D46,
+	0xF944, 0x9D47, 0xF945, 0x9D48, 0xF946, 0x9D49, 0xF947, 0x9D4A,
+	0xF948, 0x9D4B, 0xF949, 0x9D4C, 0xF94A, 0x9D4D, 0xF94B, 0x9D4E,
+	0xF94C, 0x9D4F, 0xF94D, 0x9D50, 0xF94E, 0x9D51, 0xF94F, 0x9D52,
+	0xF950, 0x9D53, 0xF951, 0x9D54, 0xF952, 0x9D55, 0xF953, 0x9D56,
+	0xF954, 0x9D57, 0xF955, 0x9D58, 0xF956, 0x9D59, 0xF957, 0x9D5A,
+	0xF958, 0x9D5B, 0xF959, 0x9D5C, 0xF95A, 0x9D5D, 0xF95B, 0x9D5E,
+	0xF95C, 0x9D5F, 0xF95D, 0x9D60, 0xF95E, 0x9D61, 0xF95F, 0x9D62,
+	0xF960, 0x9D63, 0xF961, 0x9D64, 0xF962, 0x9D65, 0xF963, 0x9D66,
+	0xF964, 0x9D67, 0xF965, 0x9D68, 0xF966, 0x9D69, 0xF967, 0x9D6A,
+	0xF968, 0x9D6B, 0xF969, 0x9D6C, 0xF96A, 0x9D6D, 0xF96B, 0x9D6E,
+	0xF96C, 0x9D6F, 0xF96D, 0x9D70, 0xF96E, 0x9D71, 0xF96F, 0x9D72,
+	0xF970, 0x9D73, 0xF971, 0x9D74, 0xF972, 0x9D75, 0xF973, 0x9D76,
+	0xF974, 0x9D77, 0xF975, 0x9D78, 0xF976, 0x9D79, 0xF977, 0x9D7A,
+	0xF978, 0x9D7B, 0xF979, 0x9D7C, 0xF97A, 0x9D7D, 0xF97B, 0x9D7E,
+	0xF97C, 0x9D7F, 0xF97D, 0x9D80, 0xF97E, 0x9D81, 0xF980, 0x9D82,
+	0xF981, 0x9D83, 0xF982, 0x9D84, 0xF983, 0x9D85, 0xF984, 0x9D86,
+	0xF985, 0x9D87, 0xF986, 0x9D88, 0xF987, 0x9D89, 0xF988, 0x9D8A,
+	0xF989, 0x9D8B, 0xF98A, 0x9D8C, 0xF98B, 0x9D8D, 0xF98C, 0x9D8E,
+	0xF98D, 0x9D8F, 0xF98E, 0x9D90, 0xF98F, 0x9D91, 0xF990, 0x9D92,
+	0xF991, 0x9D93, 0xF992, 0x9D94, 0xF993, 0x9D95, 0xF994, 0x9D96,
+	0xF995, 0x9D97, 0xF996, 0x9D98, 0xF997, 0x9D99, 0xF998, 0x9D9A,
+	0xF999, 0x9D9B, 0xF99A, 0x9D9C, 0xF99B, 0x9D9D, 0xF99C, 0x9D9E,
+	0xF99D, 0x9D9F, 0xF99E, 0x9DA0, 0xF99F, 0x9DA1, 0xF9A0, 0x9DA2,
+	0xFA40, 0x9DA3, 0xFA41, 0x9DA4, 0xFA42, 0x9DA5, 0xFA43, 0x9DA6,
+	0xFA44, 0x9DA7, 0xFA45, 0x9DA8, 0xFA46, 0x9DA9, 0xFA47, 0x9DAA,
+	0xFA48, 0x9DAB, 0xFA49, 0x9DAC, 0xFA4A, 0x9DAD, 0xFA4B, 0x9DAE,
+	0xFA4C, 0x9DAF, 0xFA4D, 0x9DB0, 0xFA4E, 0x9DB1, 0xFA4F, 0x9DB2,
+	0xFA50, 0x9DB3, 0xFA51, 0x9DB4, 0xFA52, 0x9DB5, 0xFA53, 0x9DB6,
+	0xFA54, 0x9DB7, 0xFA55, 0x9DB8, 0xFA56, 0x9DB9, 0xFA57, 0x9DBA,
+	0xFA58, 0x9DBB, 0xFA59, 0x9DBC, 0xFA5A, 0x9DBD, 0xFA5B, 0x9DBE,
+	0xFA5C, 0x9DBF, 0xFA5D, 0x9DC0, 0xFA5E, 0x9DC1, 0xFA5F, 0x9DC2,
+	0xFA60, 0x9DC3, 0xFA61, 0x9DC4, 0xFA62, 0x9DC5, 0xFA63, 0x9DC6,
+	0xFA64, 0x9DC7, 0xFA65, 0x9DC8, 0xFA66, 0x9DC9, 0xFA67, 0x9DCA,
+	0xFA68, 0x9DCB, 0xFA69, 0x9DCC, 0xFA6A, 0x9DCD, 0xFA6B, 0x9DCE,
+	0xFA6C, 0x9DCF, 0xFA6D, 0x9DD0, 0xFA6E, 0x9DD1, 0xFA6F, 0x9DD2,
+	0xFA70, 0x9DD3, 0xFA71, 0x9DD4, 0xFA72, 0x9DD5, 0xFA73, 0x9DD6,
+	0xFA74, 0x9DD7, 0xFA75, 0x9DD8, 0xFA76, 0x9DD9, 0xFA77, 0x9DDA,
+	0xFA78, 0x9DDB, 0xFA79, 0x9DDC, 0xFA7A, 0x9DDD, 0xFA7B, 0x9DDE,
+	0xFA7C, 0x9DDF, 0xFA7D, 0x9DE0, 0xFA7E, 0x9DE1, 0xFA80, 0x9DE2,
+	0xFA81, 0x9DE3, 0xFA82, 0x9DE4, 0xFA83, 0x9DE5, 0xFA84, 0x9DE6,
+	0xFA85, 0x9DE7, 0xFA86, 0x9DE8, 0xFA87, 0x9DE9, 0xFA88, 0x9DEA,
+	0xFA89, 0x9DEB, 0xFA8A, 0x9DEC, 0xFA8B, 0x9DED, 0xFA8C, 0x9DEE,
+	0xFA8D, 0x9DEF, 0xFA8E, 0x9DF0, 0xFA8F, 0x9DF1, 0xFA90, 0x9DF2,
+	0xFA91, 0x9DF3, 0xFA92, 0x9DF4, 0xFA93, 0x9DF5, 0xFA94, 0x9DF6,
+	0xFA95, 0x9DF7, 0xFA96, 0x9DF8, 0xFA97, 0x9DF9, 0xFA98, 0x9DFA,
+	0xFA99, 0x9DFB, 0xFA9A, 0x9DFC, 0xFA9B, 0x9DFD, 0xFA9C, 0x9DFE,
+	0xFA9D, 0x9DFF, 0xFA9E, 0x9E00, 0xFA9F, 0x9E01, 0xFAA0, 0x9E02,
+	0xFB40, 0x9E03, 0xFB41, 0x9E04, 0xFB42, 0x9E05, 0xFB43, 0x9E06,
+	0xFB44, 0x9E07, 0xFB45, 0x9E08, 0xFB46, 0x9E09, 0xFB47, 0x9E0A,
+	0xFB48, 0x9E0B, 0xFB49, 0x9E0C, 0xFB4A, 0x9E0D, 0xFB4B, 0x9E0E,
+	0xFB4C, 0x9E0F, 0xFB4D, 0x9E10, 0xFB4E, 0x9E11, 0xFB4F, 0x9E12,
+	0xFB50, 0x9E13, 0xFB51, 0x9E14, 0xFB52, 0x9E15, 0xFB53, 0x9E16,
+	0xFB54, 0x9E17, 0xFB55, 0x9E18, 0xFB56, 0x9E19, 0xFB57, 0x9E1A,
+	0xFB58, 0x9E1B, 0xFB59, 0x9E1C, 0xFB5A, 0x9E1D, 0xFB5B, 0x9E1E,
+	0xFB5C, 0x9E24, 0xFB5D, 0x9E27, 0xFB5E, 0x9E2E, 0xFB5F, 0x9E30,
+	0xFB60, 0x9E34, 0xFB61, 0x9E3B, 0xFB62, 0x9E3C, 0xFB63, 0x9E40,
+	0xFB64, 0x9E4D, 0xFB65, 0x9E50, 0xFB66, 0x9E52, 0xFB67, 0x9E53,
+	0xFB68, 0x9E54, 0xFB69, 0x9E56, 0xFB6A, 0x9E59, 0xFB6B, 0x9E5D,
+	0xFB6C, 0x9E5F, 0xFB6D, 0x9E60, 0xFB6E, 0x9E61, 0xFB6F, 0x9E62,
+	0xFB70, 0x9E65, 0xFB71, 0x9E6E, 0xFB72, 0x9E6F, 0xFB73, 0x9E72,
+	0xFB74, 0x9E74, 0xFB75, 0x9E75, 0xFB76, 0x9E76, 0xFB77, 0x9E77,
+	0xFB78, 0x9E78, 0xFB79, 0x9E79, 0xFB7A, 0x9E7A, 0xFB7B, 0x9E7B,
+	0xFB7C, 0x9E7C, 0xFB7D, 0x9E7D, 0xFB7E, 0x9E80, 0xFB80, 0x9E81,
+	0xFB81, 0x9E83, 0xFB82, 0x9E84, 0xFB83, 0x9E85, 0xFB84, 0x9E86,
+	0xFB85, 0x9E89, 0xFB86, 0x9E8A, 0xFB87, 0x9E8C, 0xFB88, 0x9E8D,
+	0xFB89, 0x9E8E, 0xFB8A, 0x9E8F, 0xFB8B, 0x9E90, 0xFB8C, 0x9E91,
+	0xFB8D, 0x9E94, 0xFB8E, 0x9E95, 0xFB8F, 0x9E96, 0xFB90, 0x9E97,
+	0xFB91, 0x9E98, 0xFB92, 0x9E99, 0xFB93, 0x9E9A, 0xFB94, 0x9E9B,
+	0xFB95, 0x9E9C, 0xFB96, 0x9E9E, 0xFB97, 0x9EA0, 0xFB98, 0x9EA1,
+	0xFB99, 0x9EA2, 0xFB9A, 0x9EA3, 0xFB9B, 0x9EA4, 0xFB9C, 0x9EA5,
+	0xFB9D, 0x9EA7, 0xFB9E, 0x9EA8, 0xFB9F, 0x9EA9, 0xFBA0, 0x9EAA,
+	0xFC40, 0x9EAB, 0xFC41, 0x9EAC, 0xFC42, 0x9EAD, 0xFC43, 0x9EAE,
+	0xFC44, 0x9EAF, 0xFC45, 0x9EB0, 0xFC46, 0x9EB1, 0xFC47, 0x9EB2,
+	0xFC48, 0x9EB3, 0xFC49, 0x9EB5, 0xFC4A, 0x9EB6, 0xFC4B, 0x9EB7,
+	0xFC4C, 0x9EB9, 0xFC4D, 0x9EBA, 0xFC4E, 0x9EBC, 0xFC4F, 0x9EBF,
+	0xFC50, 0x9EC0, 0xFC51, 0x9EC1, 0xFC52, 0x9EC2, 0xFC53, 0x9EC3,
+	0xFC54, 0x9EC5, 0xFC55, 0x9EC6, 0xFC56, 0x9EC7, 0xFC57, 0x9EC8,
+	0xFC58, 0x9ECA, 0xFC59, 0x9ECB, 0xFC5A, 0x9ECC, 0xFC5B, 0x9ED0,
+	0xFC5C, 0x9ED2, 0xFC5D, 0x9ED3, 0xFC5E, 0x9ED5, 0xFC5F, 0x9ED6,
+	0xFC60, 0x9ED7, 0xFC61, 0x9ED9, 0xFC62, 0x9EDA, 0xFC63, 0x9EDE,
+	0xFC64, 0x9EE1, 0xFC65, 0x9EE3, 0xFC66, 0x9EE4, 0xFC67, 0x9EE6,
+	0xFC68, 0x9EE8, 0xFC69, 0x9EEB, 0xFC6A, 0x9EEC, 0xFC6B, 0x9EED,
+	0xFC6C, 0x9EEE, 0xFC6D, 0x9EF0, 0xFC6E, 0x9EF1, 0xFC6F, 0x9EF2,
+	0xFC70, 0x9EF3, 0xFC71, 0x9EF4, 0xFC72, 0x9EF5, 0xFC73, 0x9EF6,
+	0xFC74, 0x9EF7, 0xFC75, 0x9EF8, 0xFC76, 0x9EFA, 0xFC77, 0x9EFD,
+	0xFC78, 0x9EFF, 0xFC79, 0x9F00, 0xFC7A, 0x9F01, 0xFC7B, 0x9F02,
+	0xFC7C, 0x9F03, 0xFC7D, 0x9F04, 0xFC7E, 0x9F05, 0xFC80, 0x9F06,
+	0xFC81, 0x9F07, 0xFC82, 0x9F08, 0xFC83, 0x9F09, 0xFC84, 0x9F0A,
+	0xFC85, 0x9F0C, 0xFC86, 0x9F0F, 0xFC87, 0x9F11, 0xFC88, 0x9F12,
+	0xFC89, 0x9F14, 0xFC8A, 0x9F15, 0xFC8B, 0x9F16, 0xFC8C, 0x9F18,
+	0xFC8D, 0x9F1A, 0xFC8E, 0x9F1B, 0xFC8F, 0x9F1C, 0xFC90, 0x9F1D,
+	0xFC91, 0x9F1E, 0xFC92, 0x9F1F, 0xFC93, 0x9F21, 0xFC94, 0x9F23,
+	0xFC95, 0x9F24, 0xFC96, 0x9F25, 0xFC97, 0x9F26, 0xFC98, 0x9F27,
+	0xFC99, 0x9F28, 0xFC9A, 0x9F29, 0xFC9B, 0x9F2A, 0xFC9C, 0x9F2B,
+	0xFC9D, 0x9F2D, 0xFC9E, 0x9F2E, 0xFC9F, 0x9F30, 0xFCA0, 0x9F31,
+	0xFD40, 0x9F32, 0xFD41, 0x9F33, 0xFD42, 0x9F34, 0xFD43, 0x9F35,
+	0xFD44, 0x9F36, 0xFD45, 0x9F38, 0xFD46, 0x9F3A, 0xFD47, 0x9F3C,
+	0xFD48, 0x9F3F, 0xFD49, 0x9F40, 0xFD4A, 0x9F41, 0xFD4B, 0x9F42,
+	0xFD4C, 0x9F43, 0xFD4D, 0x9F45, 0xFD4E, 0x9F46, 0xFD4F, 0x9F47,
+	0xFD50, 0x9F48, 0xFD51, 0x9F49, 0xFD52, 0x9F4A, 0xFD53, 0x9F4B,
+	0xFD54, 0x9F4C, 0xFD55, 0x9F4D, 0xFD56, 0x9F4E, 0xFD57, 0x9F4F,
+	0xFD58, 0x9F52, 0xFD59, 0x9F53, 0xFD5A, 0x9F54, 0xFD5B, 0x9F55,
+	0xFD5C, 0x9F56, 0xFD5D, 0x9F57, 0xFD5E, 0x9F58, 0xFD5F, 0x9F59,
+	0xFD60, 0x9F5A, 0xFD61, 0x9F5B, 0xFD62, 0x9F5C, 0xFD63, 0x9F5D,
+	0xFD64, 0x9F5E, 0xFD65, 0x9F5F, 0xFD66, 0x9F60, 0xFD67, 0x9F61,
+	0xFD68, 0x9F62, 0xFD69, 0x9F63, 0xFD6A, 0x9F64, 0xFD6B, 0x9F65,
+	0xFD6C, 0x9F66, 0xFD6D, 0x9F67, 0xFD6E, 0x9F68, 0xFD6F, 0x9F69,
+	0xFD70, 0x9F6A, 0xFD71, 0x9F6B, 0xFD72, 0x9F6C, 0xFD73, 0x9F6D,
+	0xFD74, 0x9F6E, 0xFD75, 0x9F6F, 0xFD76, 0x9F70, 0xFD77, 0x9F71,
+	0xFD78, 0x9F72, 0xFD79, 0x9F73, 0xFD7A, 0x9F74, 0xFD7B, 0x9F75,
+	0xFD7C, 0x9F76, 0xFD7D, 0x9F77, 0xFD7E, 0x9F78, 0xFD80, 0x9F79,
+	0xFD81, 0x9F7A, 0xFD82, 0x9F7B, 0xFD83, 0x9F7C, 0xFD84, 0x9F7D,
+	0xFD85, 0x9F7E, 0xFD86, 0x9F81, 0xFD87, 0x9F82, 0xFD88, 0x9F8D,
+	0xFD89, 0x9F8E, 0xFD8A, 0x9F8F, 0xFD8B, 0x9F90, 0xFD8C, 0x9F91,
+	0xFD8D, 0x9F92, 0xFD8E, 0x9F93, 0xFD8F, 0x9F94, 0xFD90, 0x9F95,
+	0xFD91, 0x9F96, 0xFD92, 0x9F97, 0xFD93, 0x9F98, 0xFD94, 0x9F9C,
+	0xFD95, 0x9F9D, 0xFD96, 0x9F9E, 0xFD97, 0x9FA1, 0xFD98, 0x9FA2,
+	0xFD99, 0x9FA3, 0xFD9A, 0x9FA4, 0xFD9B, 0x9FA5, 0xFD9C, 0xF92C,
+	0xFD9D, 0xF979, 0xFD9E, 0xF995, 0xFD9F, 0xF9E7, 0xFDA0, 0xF9F1,
+	0xFE40, 0xFA0C, 0xFE41, 0xFA0D, 0xFE42, 0xFA0E, 0xFE43, 0xFA0F,
+	0xFE44, 0xFA11, 0xFE45, 0xFA13, 0xFE46, 0xFA14, 0xFE47, 0xFA18,
+	0xFE48, 0xFA1F, 0xFE49, 0xFA20, 0xFE4A, 0xFA21, 0xFE4B, 0xFA23,
+	0xFE4C, 0xFA24, 0xFE4D, 0xFA27, 0xFE4E, 0xFA28, 0xFE4F, 0xFA29,
+	0, 0
+};
+
+
+
+WCHAR ff_convert (	/* Converted code, 0 means conversion error */
+	WCHAR	chr,	/* Character code to be converted */
+	UINT	dir		/* 0: Unicode to OEMCP, 1: OEMCP to Unicode */
+)
+{
+	const WCHAR *p;
+	WCHAR c;
+	int i, n, li, hi;
+
+
+	if (chr < 0x80) {	/* ASCII */
+		c = chr;
+	} else {
+		if (dir) {		/* OEMCP to unicode */
+			p = oem2uni;
+			hi = sizeof oem2uni / 4 - 1;
+		} else {		/* Unicode to OEMCP */
+			p = uni2oem;
+			hi = sizeof uni2oem / 4 - 1;
+		}
+		li = 0;
+		for (n = 16; n; n--) {
+			i = li + (hi - li) / 2;
+			if (chr == p[i * 2]) break;
+			if (chr > p[i * 2])
+				li = i;
+			else
+				hi = i;
+		}
+		c = n ? p[i * 2 + 1] : 0;
+	}
+
+	return c;
+}
+
+
+
+WCHAR ff_wtoupper (	/* Upper converted character */
+	WCHAR chr		/* Input character */
+)
+{
+	static const WCHAR tbl_lower[] = { 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0xA1, 0x00A2, 0x00A3, 0x00A5, 0x00AC, 0x00AF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0x0FF, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x137, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x148, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x17E, 0x192, 0x3B1, 0x3B2, 0x3B3, 0x3B4, 0x3B5, 0x3B6, 0x3B7, 0x3B8, 0x3B9, 0x3BA, 0x3BB, 0x3BC, 0x3BD, 0x3BE, 0x3BF, 0x3C0, 0x3C1, 0x3C3, 0x3C4, 0x3C5, 0x3C6, 0x3C7, 0x3C8, 0x3C9, 0x3CA, 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437, 0x438, 0x439, 0x43A, 0x43B, 0x43C, 0x43D, 0x43E, 0x43F, 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, 0x448, 0x449, 0x44A, 0x44B, 0x44C, 0x44D, 0x44E, 0x44F, 0x451, 0x452, 0x453, 0x454, 0x455, 0x456, 0x457, 0x458, 0x459, 0x45A, 0x45B, 0x45C, 0x45E, 0x45F, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x217A, 0x217B, 0x217C, 0x217D, 0x217E, 0x217F, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0 };
+	static const WCHAR tbl_upper[] = { 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x21, 0xFFE0, 0xFFE1, 0xFFE5, 0xFFE2, 0xFFE3, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0x178, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x179, 0x17B, 0x17D, 0x191, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397, 0x398, 0x399, 0x39A, 0x39B, 0x39C, 0x39D, 0x39E, 0x39F, 0x3A0, 0x3A1, 0x3A3, 0x3A4, 0x3A5, 0x3A6, 0x3A7, 0x3A8, 0x3A9, 0x3AA, 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41A, 0x41B, 0x41C, 0x41D, 0x41E, 0x41F, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42A, 0x42B, 0x42C, 0x42D, 0x42E, 0x42F, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x407, 0x408, 0x409, 0x40A, 0x40B, 0x40C, 0x40E, 0x40F, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216A, 0x216B, 0x216C, 0x216D, 0x216E, 0x216F, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0 };
+	int i;
+
+
+	for (i = 0; tbl_lower[i] && chr != tbl_lower[i]; i++) ;
+
+	return tbl_lower[i] ? tbl_upper[i] : chr;
+}
Index: uKadecot/trunk/tools/makefsdata/option/cc949.c
===================================================================
--- uKadecot/trunk/tools/makefsdata/option/cc949.c	(revision 101)
+++ uKadecot/trunk/tools/makefsdata/option/cc949.c	(revision 101)
@@ -0,0 +1,8603 @@
+/*------------------------------------------------------------------------*/
+/* Unicode - OEM code bidirectional converter  (C)ChaN, 2009              */
+/*                                                                        */
+/* CP949 (Korean EUC-KR)                                                  */
+/*------------------------------------------------------------------------*/
+
+#include "../ff.h"
+
+
+#if !_USE_LFN || _CODE_PAGE != 949
+#error This file is not needed in current configuration. Remove from the project.
+#endif
+
+
+static
+const WCHAR uni2oem[] = {
+/*  Unicode - OEM,  Unicode - OEM,  Unicode - OEM,  Unicode - OEM */
+	0x00A1, 0xA2AE, 0x00A4, 0xA2B4, 0x00A7, 0xA1D7, 0x00A8, 0xA1A7,
+	0x00AA, 0xA8A3, 0x00AD, 0xA1A9, 0x00AE, 0xA2E7, 0x00B0, 0xA1C6,
+	0x00B1, 0xA1BE, 0x00B2, 0xA9F7, 0x00B3, 0xA9F8, 0x00B4, 0xA2A5,
+	0x00B6, 0xA2D2, 0x00B7, 0xA1A4, 0x00B8, 0xA2AC, 0x00B9, 0xA9F6,
+	0x00BA, 0xA8AC, 0x00BC, 0xA8F9, 0x00BD, 0xA8F6, 0x00BE, 0xA8FA,
+	0x00BF, 0xA2AF, 0x00C6, 0xA8A1, 0x00D0, 0xA8A2, 0x00D7, 0xA1BF,
+	0x00D8, 0xA8AA, 0x00DE, 0xA8AD, 0x00DF, 0xA9AC, 0x00E6, 0xA9A1,
+	0x00F0, 0xA9A3, 0x00F7, 0xA1C0, 0x00F8, 0xA9AA, 0x00FE, 0xA9AD,
+	0x0111, 0xA9A2, 0x0126, 0xA8A4, 0x0127, 0xA9A4, 0x0131, 0xA9A5,
+	0x0132, 0xA8A6, 0x0133, 0xA9A6, 0x0138, 0xA9A7, 0x013F, 0xA8A8,
+	0x0140, 0xA9A8, 0x0141, 0xA8A9, 0x0142, 0xA9A9, 0x0149, 0xA9B0,
+	0x014A, 0xA8AF, 0x014B, 0xA9AF, 0x0152, 0xA8AB, 0x0153, 0xA9AB,
+	0x0166, 0xA8AE, 0x0167, 0xA9AE, 0x02C7, 0xA2A7, 0x02D0, 0xA2B0,
+	0x02D8, 0xA2A8, 0x02D9, 0xA2AB, 0x02DA, 0xA2AA, 0x02DB, 0xA2AD,
+	0x02DD, 0xA2A9, 0x0391, 0xA5C1, 0x0392, 0xA5C2, 0x0393, 0xA5C3,
+	0x0394, 0xA5C4, 0x0395, 0xA5C5, 0x0396, 0xA5C6, 0x0397, 0xA5C7,
+	0x0398, 0xA5C8, 0x0399, 0xA5C9, 0x039A, 0xA5CA, 0x039B, 0xA5CB,
+	0x039C, 0xA5CC, 0x039D, 0xA5CD, 0x039E, 0xA5CE, 0x039F, 0xA5CF,
+	0x03A0, 0xA5D0, 0x03A1, 0xA5D1, 0x03A3, 0xA5D2, 0x03A4, 0xA5D3,
+	0x03A5, 0xA5D4, 0x03A6, 0xA5D5, 0x03A7, 0xA5D6, 0x03A8, 0xA5D7,
+	0x03A9, 0xA5D8, 0x03B1, 0xA5E1, 0x03B2, 0xA5E2, 0x03B3, 0xA5E3,
+	0x03B4, 0xA5E4, 0x03B5, 0xA5E5, 0x03B6, 0xA5E6, 0x03B7, 0xA5E7,
+	0x03B8, 0xA5E8, 0x03B9, 0xA5E9, 0x03BA, 0xA5EA, 0x03BB, 0xA5EB,
+	0x03BC, 0xA5EC, 0x03BD, 0xA5ED, 0x03BE, 0xA5EE, 0x03BF, 0xA5EF,
+	0x03C0, 0xA5F0, 0x03C1, 0xA5F1, 0x03C3, 0xA5F2, 0x03C4, 0xA5F3,
+	0x03C5, 0xA5F4, 0x03C6, 0xA5F5, 0x03C7, 0xA5F6, 0x03C8, 0xA5F7,
+	0x03C9, 0xA5F8, 0x0401, 0xACA7, 0x0410, 0xACA1, 0x0411, 0xACA2,
+	0x0412, 0xACA3, 0x0413, 0xACA4, 0x0414, 0xACA5, 0x0415, 0xACA6,
+	0x0416, 0xACA8, 0x0417, 0xACA9, 0x0418, 0xACAA, 0x0419, 0xACAB,
+	0x041A, 0xACAC, 0x041B, 0xACAD, 0x041C, 0xACAE, 0x041D, 0xACAF,
+	0x041E, 0xACB0, 0x041F, 0xACB1, 0x0420, 0xACB2, 0x0421, 0xACB3,
+	0x0422, 0xACB4, 0x0423, 0xACB5, 0x0424, 0xACB6, 0x0425, 0xACB7,
+	0x0426, 0xACB8, 0x0427, 0xACB9, 0x0428, 0xACBA, 0x0429, 0xACBB,
+	0x042A, 0xACBC, 0x042B, 0xACBD, 0x042C, 0xACBE, 0x042D, 0xACBF,
+	0x042E, 0xACC0, 0x042F, 0xACC1, 0x0430, 0xACD1, 0x0431, 0xACD2,
+	0x0432, 0xACD3, 0x0433, 0xACD4, 0x0434, 0xACD5, 0x0435, 0xACD6,
+	0x0436, 0xACD8, 0x0437, 0xACD9, 0x0438, 0xACDA, 0x0439, 0xACDB,
+	0x043A, 0xACDC, 0x043B, 0xACDD, 0x043C, 0xACDE, 0x043D, 0xACDF,
+	0x043E, 0xACE0, 0x043F, 0xACE1, 0x0440, 0xACE2, 0x0441, 0xACE3,
+	0x0442, 0xACE4, 0x0443, 0xACE5, 0x0444, 0xACE6, 0x0445, 0xACE7,
+	0x0446, 0xACE8, 0x0447, 0xACE9, 0x0448, 0xACEA, 0x0449, 0xACEB,
+	0x044A, 0xACEC, 0x044B, 0xACED, 0x044C, 0xACEE, 0x044D, 0xACEF,
+	0x044E, 0xACF0, 0x044F, 0xACF1, 0x0451, 0xACD7, 0x2015, 0xA1AA,
+	0x2018, 0xA1AE, 0x2019, 0xA1AF, 0x201C, 0xA1B0, 0x201D, 0xA1B1,
+	0x2020, 0xA2D3, 0x2021, 0xA2D4, 0x2025, 0xA1A5, 0x2026, 0xA1A6,
+	0x2030, 0xA2B6, 0x2032, 0xA1C7, 0x2033, 0xA1C8, 0x203B, 0xA1D8,
+	0x2074, 0xA9F9, 0x207F, 0xA9FA, 0x2081, 0xA9FB, 0x2082, 0xA9FC,
+	0x2083, 0xA9FD, 0x2084, 0xA9FE, 0x20AC, 0xA2E6, 0x2103, 0xA1C9,
+	0x2109, 0xA2B5, 0x2113, 0xA7A4, 0x2116, 0xA2E0, 0x2121, 0xA2E5,
+	0x2122, 0xA2E2, 0x2126, 0xA7D9, 0x212B, 0xA1CA, 0x2153, 0xA8F7,
+	0x2154, 0xA8F8, 0x215B, 0xA8FB, 0x215C, 0xA8FC, 0x215D, 0xA8FD,
+	0x215E, 0xA8FE, 0x2160, 0xA5B0, 0x2161, 0xA5B1, 0x2162, 0xA5B2,
+	0x2163, 0xA5B3, 0x2164, 0xA5B4, 0x2165, 0xA5B5, 0x2166, 0xA5B6,
+	0x2167, 0xA5B7, 0x2168, 0xA5B8, 0x2169, 0xA5B9, 0x2170, 0xA5A1,
+	0x2171, 0xA5A2, 0x2172, 0xA5A3, 0x2173, 0xA5A4, 0x2174, 0xA5A5,
+	0x2175, 0xA5A6, 0x2176, 0xA5A7, 0x2177, 0xA5A8, 0x2178, 0xA5A9,
+	0x2179, 0xA5AA, 0x2190, 0xA1E7, 0x2191, 0xA1E8, 0x2192, 0xA1E6,
+	0x2193, 0xA1E9, 0x2194, 0xA1EA, 0x2195, 0xA2D5, 0x2196, 0xA2D8,
+	0x2197, 0xA2D6, 0x2198, 0xA2D9, 0x2199, 0xA2D7, 0x21D2, 0xA2A1,
+	0x21D4, 0xA2A2, 0x2200, 0xA2A3, 0x2202, 0xA1D3, 0x2203, 0xA2A4,
+	0x2207, 0xA1D4, 0x2208, 0xA1F4, 0x220B, 0xA1F5, 0x220F, 0xA2B3,
+	0x2211, 0xA2B2, 0x221A, 0xA1EE, 0x221D, 0xA1F0, 0x221E, 0xA1C4,
+	0x2220, 0xA1D0, 0x2225, 0xA1AB, 0x2227, 0xA1FC, 0x2228, 0xA1FD,
+	0x2229, 0xA1FB, 0x222A, 0xA1FA, 0x222B, 0xA1F2, 0x222C, 0xA1F3,
+	0x222E, 0xA2B1, 0x2234, 0xA1C5, 0x2235, 0xA1F1, 0x223C, 0xA1AD,
+	0x223D, 0xA1EF, 0x2252, 0xA1D6, 0x2260, 0xA1C1, 0x2261, 0xA1D5,
+	0x2264, 0xA1C2, 0x2265, 0xA1C3, 0x226A, 0xA1EC, 0x226B, 0xA1ED,
+	0x2282, 0xA1F8, 0x2283, 0xA1F9, 0x2286, 0xA1F6, 0x2287, 0xA1F7,
+	0x2299, 0xA2C1, 0x22A5, 0xA1D1, 0x2312, 0xA1D2, 0x2460, 0xA8E7,
+	0x2461, 0xA8E8, 0x2462, 0xA8E9, 0x2463, 0xA8EA, 0x2464, 0xA8EB,
+	0x2465, 0xA8EC, 0x2466, 0xA8ED, 0x2467, 0xA8EE, 0x2468, 0xA8EF,
+	0x2469, 0xA8F0, 0x246A, 0xA8F1, 0x246B, 0xA8F2, 0x246C, 0xA8F3,
+	0x246D, 0xA8F4, 0x246E, 0xA8F5, 0x2474, 0xA9E7, 0x2475, 0xA9E8,
+	0x2476, 0xA9E9, 0x2477, 0xA9EA, 0x2478, 0xA9EB, 0x2479, 0xA9EC,
+	0x247A, 0xA9ED, 0x247B, 0xA9EE, 0x247C, 0xA9EF, 0x247D, 0xA9F0,
+	0x247E, 0xA9F1, 0x247F, 0xA9F2, 0x2480, 0xA9F3, 0x2481, 0xA9F4,
+	0x2482, 0xA9F5, 0x249C, 0xA9CD, 0x249D, 0xA9CE, 0x249E, 0xA9CF,
+	0x249F, 0xA9D0, 0x24A0, 0xA9D1, 0x24A1, 0xA9D2, 0x24A2, 0xA9D3,
+	0x24A3, 0xA9D4, 0x24A4, 0xA9D5, 0x24A5, 0xA9D6, 0x24A6, 0xA9D7,
+	0x24A7, 0xA9D8, 0x24A8, 0xA9D9, 0x24A9, 0xA9DA, 0x24AA, 0xA9DB,
+	0x24AB, 0xA9DC, 0x24AC, 0xA9DD, 0x24AD, 0xA9DE, 0x24AE, 0xA9DF,
+	0x24AF, 0xA9E0, 0x24B0, 0xA9E1, 0x24B1, 0xA9E2, 0x24B2, 0xA9E3,
+	0x24B3, 0xA9E4, 0x24B4, 0xA9E5, 0x24B5, 0xA9E6, 0x24D0, 0xA8CD,
+	0x24D1, 0xA8CE, 0x24D2, 0xA8CF, 0x24D3, 0xA8D0, 0x24D4, 0xA8D1,
+	0x24D5, 0xA8D2, 0x24D6, 0xA8D3, 0x24D7, 0xA8D4, 0x24D8, 0xA8D5,
+	0x24D9, 0xA8D6, 0x24DA, 0xA8D7, 0x24DB, 0xA8D8, 0x24DC, 0xA8D9,
+	0x24DD, 0xA8DA, 0x24DE, 0xA8DB, 0x24DF, 0xA8DC, 0x24E0, 0xA8DD,
+	0x24E1, 0xA8DE, 0x24E2, 0xA8DF, 0x24E3, 0xA8E0, 0x24E4, 0xA8E1,
+	0x24E5, 0xA8E2, 0x24E6, 0xA8E3, 0x24E7, 0xA8E4, 0x24E8, 0xA8E5,
+	0x24E9, 0xA8E6, 0x2500, 0xA6A1, 0x2501, 0xA6AC, 0x2502, 0xA6A2,
+	0x2503, 0xA6AD, 0x250C, 0xA6A3, 0x250D, 0xA6C8, 0x250E, 0xA6C7,
+	0x250F, 0xA6AE, 0x2510, 0xA6A4, 0x2511, 0xA6C2, 0x2512, 0xA6C1,
+	0x2513, 0xA6AF, 0x2514, 0xA6A6, 0x2515, 0xA6C6, 0x2516, 0xA6C5,
+	0x2517, 0xA6B1, 0x2518, 0xA6A5, 0x2519, 0xA6C4, 0x251A, 0xA6C3,
+	0x251B, 0xA6B0, 0x251C, 0xA6A7, 0x251D, 0xA6BC, 0x251E, 0xA6C9,
+	0x251F, 0xA6CA, 0x2520, 0xA6B7, 0x2521, 0xA6CB, 0x2522, 0xA6CC,
+	0x2523, 0xA6B2, 0x2524, 0xA6A9, 0x2525, 0xA6BE, 0x2526, 0xA6CD,
+	0x2527, 0xA6CE, 0x2528, 0xA6B9, 0x2529, 0xA6CF, 0x252A, 0xA6D0,
+	0x252B, 0xA6B4, 0x252C, 0xA6A8, 0x252D, 0xA6D1, 0x252E, 0xA6D2,
+	0x252F, 0xA6B8, 0x2530, 0xA6BD, 0x2531, 0xA6D3, 0x2532, 0xA6D4,
+	0x2533, 0xA6B3, 0x2534, 0xA6AA, 0x2535, 0xA6D5, 0x2536, 0xA6D6,
+	0x2537, 0xA6BA, 0x2538, 0xA6BF, 0x2539, 0xA6D7, 0x253A, 0xA6D8,
+	0x253B, 0xA6B5, 0x253C, 0xA6AB, 0x253D, 0xA6D9, 0x253E, 0xA6DA,
+	0x253F, 0xA6BB, 0x2540, 0xA6DB, 0x2541, 0xA6DC, 0x2542, 0xA6C0,
+	0x2543, 0xA6DD, 0x2544, 0xA6DE, 0x2545, 0xA6DF, 0x2546, 0xA6E0,
+	0x2547, 0xA6E1, 0x2548, 0xA6E2, 0x2549, 0xA6E3, 0x254A, 0xA6E4,
+	0x254B, 0xA6B6, 0x2592, 0xA2C6, 0x25A0, 0xA1E1, 0x25A1, 0xA1E0,
+	0x25A3, 0xA2C3, 0x25A4, 0xA2C7, 0x25A5, 0xA2C8, 0x25A6, 0xA2CB,
+	0x25A7, 0xA2CA, 0x25A8, 0xA2C9, 0x25A9, 0xA2CC, 0x25B2, 0xA1E3,
+	0x25B3, 0xA1E2, 0x25B6, 0xA2BA, 0x25B7, 0xA2B9, 0x25BC, 0xA1E5,
+	0x25BD, 0xA1E4, 0x25C0, 0xA2B8, 0x25C1, 0xA2B7, 0x25C6, 0xA1DF,
+	0x25C7, 0xA1DE, 0x25C8, 0xA2C2, 0x25CB, 0xA1DB, 0x25CE, 0xA1DD,
+	0x25CF, 0xA1DC, 0x25D0, 0xA2C4, 0x25D1, 0xA2C5, 0x2605, 0xA1DA,
+	0x2606, 0xA1D9, 0x260E, 0xA2CF, 0x260F, 0xA2CE, 0x261C, 0xA2D0,
+	0x261E, 0xA2D1, 0x2640, 0xA1CF, 0x2642, 0xA1CE, 0x2660, 0xA2BC,
+	0x2661, 0xA2BD, 0x2663, 0xA2C0, 0x2664, 0xA2BB, 0x2665, 0xA2BE,
+	0x2667, 0xA2BF, 0x2668, 0xA2CD, 0x2669, 0xA2DB, 0x266A, 0xA2DC,
+	0x266C, 0xA2DD, 0x266D, 0xA2DA, 0x3000, 0xA1A1, 0x3001, 0xA1A2,
+	0x3002, 0xA1A3, 0x3003, 0xA1A8, 0x3008, 0xA1B4, 0x3009, 0xA1B5,
+	0x300A, 0xA1B6, 0x300B, 0xA1B7, 0x300C, 0xA1B8, 0x300D, 0xA1B9,
+	0x300E, 0xA1BA, 0x300F, 0xA1BB, 0x3010, 0xA1BC, 0x3011, 0xA1BD,
+	0x3013, 0xA1EB, 0x3014, 0xA1B2, 0x3015, 0xA1B3, 0x3041, 0xAAA1,
+	0x3042, 0xAAA2, 0x3043, 0xAAA3, 0x3044, 0xAAA4, 0x3045, 0xAAA5,
+	0x3046, 0xAAA6, 0x3047, 0xAAA7, 0x3048, 0xAAA8, 0x3049, 0xAAA9,
+	0x304A, 0xAAAA, 0x304B, 0xAAAB, 0x304C, 0xAAAC, 0x304D, 0xAAAD,
+	0x304E, 0xAAAE, 0x304F, 0xAAAF, 0x3050, 0xAAB0, 0x3051, 0xAAB1,
+	0x3052, 0xAAB2, 0x3053, 0xAAB3, 0x3054, 0xAAB4, 0x3055, 0xAAB5,
+	0x3056, 0xAAB6, 0x3057, 0xAAB7, 0x3058, 0xAAB8, 0x3059, 0xAAB9,
+	0x305A, 0xAABA, 0x305B, 0xAABB, 0x305C, 0xAABC, 0x305D, 0xAABD,
+	0x305E, 0xAABE, 0x305F, 0xAABF, 0x3060, 0xAAC0, 0x3061, 0xAAC1,
+	0x3062, 0xAAC2, 0x3063, 0xAAC3, 0x3064, 0xAAC4, 0x3065, 0xAAC5,
+	0x3066, 0xAAC6, 0x3067, 0xAAC7, 0x3068, 0xAAC8, 0x3069, 0xAAC9,
+	0x306A, 0xAACA, 0x306B, 0xAACB, 0x306C, 0xAACC, 0x306D, 0xAACD,
+	0x306E, 0xAACE, 0x306F, 0xAACF, 0x3070, 0xAAD0, 0x3071, 0xAAD1,
+	0x3072, 0xAAD2, 0x3073, 0xAAD3, 0x3074, 0xAAD4, 0x3075, 0xAAD5,
+	0x3076, 0xAAD6, 0x3077, 0xAAD7, 0x3078, 0xAAD8, 0x3079, 0xAAD9,
+	0x307A, 0xAADA, 0x307B, 0xAADB, 0x307C, 0xAADC, 0x307D, 0xAADD,
+	0x307E, 0xAADE, 0x307F, 0xAADF, 0x3080, 0xAAE0, 0x3081, 0xAAE1,
+	0x3082, 0xAAE2, 0x3083, 0xAAE3, 0x3084, 0xAAE4, 0x3085, 0xAAE5,
+	0x3086, 0xAAE6, 0x3087, 0xAAE7, 0x3088, 0xAAE8, 0x3089, 0xAAE9,
+	0x308A, 0xAAEA, 0x308B, 0xAAEB, 0x308C, 0xAAEC, 0x308D, 0xAAED,
+	0x308E, 0xAAEE, 0x308F, 0xAAEF, 0x3090, 0xAAF0, 0x3091, 0xAAF1,
+	0x3092, 0xAAF2, 0x3093, 0xAAF3, 0x30A1, 0xABA1, 0x30A2, 0xABA2,
+	0x30A3, 0xABA3, 0x30A4, 0xABA4, 0x30A5, 0xABA5, 0x30A6, 0xABA6,
+	0x30A7, 0xABA7, 0x30A8, 0xABA8, 0x30A9, 0xABA9, 0x30AA, 0xABAA,
+	0x30AB, 0xABAB, 0x30AC, 0xABAC, 0x30AD, 0xABAD, 0x30AE, 0xABAE,
+	0x30AF, 0xABAF, 0x30B0, 0xABB0, 0x30B1, 0xABB1, 0x30B2, 0xABB2,
+	0x30B3, 0xABB3, 0x30B4, 0xABB4, 0x30B5, 0xABB5, 0x30B6, 0xABB6,
+	0x30B7, 0xABB7, 0x30B8, 0xABB8, 0x30B9, 0xABB9, 0x30BA, 0xABBA,
+	0x30BB, 0xABBB, 0x30BC, 0xABBC, 0x30BD, 0xABBD, 0x30BE, 0xABBE,
+	0x30BF, 0xABBF, 0x30C0, 0xABC0, 0x30C1, 0xABC1, 0x30C2, 0xABC2,
+	0x30C3, 0xABC3, 0x30C4, 0xABC4, 0x30C5, 0xABC5, 0x30C6, 0xABC6,
+	0x30C7, 0xABC7, 0x30C8, 0xABC8, 0x30C9, 0xABC9, 0x30CA, 0xABCA,
+	0x30CB, 0xABCB, 0x30CC, 0xABCC, 0x30CD, 0xABCD, 0x30CE, 0xABCE,
+	0x30CF, 0xABCF, 0x30D0, 0xABD0, 0x30D1, 0xABD1, 0x30D2, 0xABD2,
+	0x30D3, 0xABD3, 0x30D4, 0xABD4, 0x30D5, 0xABD5, 0x30D6, 0xABD6,
+	0x30D7, 0xABD7, 0x30D8, 0xABD8, 0x30D9, 0xABD9, 0x30DA, 0xABDA,
+	0x30DB, 0xABDB, 0x30DC, 0xABDC, 0x30DD, 0xABDD, 0x30DE, 0xABDE,
+	0x30DF, 0xABDF, 0x30E0, 0xABE0, 0x30E1, 0xABE1, 0x30E2, 0xABE2,
+	0x30E3, 0xABE3, 0x30E4, 0xABE4, 0x30E5, 0xABE5, 0x30E6, 0xABE6,
+	0x30E7, 0xABE7, 0x30E8, 0xABE8, 0x30E9, 0xABE9, 0x30EA, 0xABEA,
+	0x30EB, 0xABEB, 0x30EC, 0xABEC, 0x30ED, 0xABED, 0x30EE, 0xABEE,
+	0x30EF, 0xABEF, 0x30F0, 0xABF0, 0x30F1, 0xABF1, 0x30F2, 0xABF2,
+	0x30F3, 0xABF3, 0x30F4, 0xABF4, 0x30F5, 0xABF5, 0x30F6, 0xABF6,
+	0x3131, 0xA4A1, 0x3132, 0xA4A2, 0x3133, 0xA4A3, 0x3134, 0xA4A4,
+	0x3135, 0xA4A5, 0x3136, 0xA4A6, 0x3137, 0xA4A7, 0x3138, 0xA4A8,
+	0x3139, 0xA4A9, 0x313A, 0xA4AA, 0x313B, 0xA4AB, 0x313C, 0xA4AC,
+	0x313D, 0xA4AD, 0x313E, 0xA4AE, 0x313F, 0xA4AF, 0x3140, 0xA4B0,
+	0x3141, 0xA4B1, 0x3142, 0xA4B2, 0x3143, 0xA4B3, 0x3144, 0xA4B4,
+	0x3145, 0xA4B5, 0x3146, 0xA4B6, 0x3147, 0xA4B7, 0x3148, 0xA4B8,
+	0x3149, 0xA4B9, 0x314A, 0xA4BA, 0x314B, 0xA4BB, 0x314C, 0xA4BC,
+	0x314D, 0xA4BD, 0x314E, 0xA4BE, 0x314F, 0xA4BF, 0x3150, 0xA4C0,
+	0x3151, 0xA4C1, 0x3152, 0xA4C2, 0x3153, 0xA4C3, 0x3154, 0xA4C4,
+	0x3155, 0xA4C5, 0x3156, 0xA4C6, 0x3157, 0xA4C7, 0x3158, 0xA4C8,
+	0x3159, 0xA4C9, 0x315A, 0xA4CA, 0x315B, 0xA4CB, 0x315C, 0xA4CC,
+	0x315D, 0xA4CD, 0x315E, 0xA4CE, 0x315F, 0xA4CF, 0x3160, 0xA4D0,
+	0x3161, 0xA4D1, 0x3162, 0xA4D2, 0x3163, 0xA4D3, 0x3164, 0xA4D4,
+	0x3165, 0xA4D5, 0x3166, 0xA4D6, 0x3167, 0xA4D7, 0x3168, 0xA4D8,
+	0x3169, 0xA4D9, 0x316A, 0xA4DA, 0x316B, 0xA4DB, 0x316C, 0xA4DC,
+	0x316D, 0xA4DD, 0x316E, 0xA4DE, 0x316F, 0xA4DF, 0x3170, 0xA4E0,
+	0x3171, 0xA4E1, 0x3172, 0xA4E2, 0x3173, 0xA4E3, 0x3174, 0xA4E4,
+	0x3175, 0xA4E5, 0x3176, 0xA4E6, 0x3177, 0xA4E7, 0x3178, 0xA4E8,
+	0x3179, 0xA4E9, 0x317A, 0xA4EA, 0x317B, 0xA4EB, 0x317C, 0xA4EC,
+	0x317D, 0xA4ED, 0x317E, 0xA4EE, 0x317F, 0xA4EF, 0x3180, 0xA4F0,
+	0x3181, 0xA4F1, 0x3182, 0xA4F2, 0x3183, 0xA4F3, 0x3184, 0xA4F4,
+	0x3185, 0xA4F5, 0x3186, 0xA4F6, 0x3187, 0xA4F7, 0x3188, 0xA4F8,
+	0x3189, 0xA4F9, 0x318A, 0xA4FA, 0x318B, 0xA4FB, 0x318C, 0xA4FC,
+	0x318D, 0xA4FD, 0x318E, 0xA4FE, 0x3200, 0xA9B1, 0x3201, 0xA9B2,
+	0x3202, 0xA9B3, 0x3203, 0xA9B4, 0x3204, 0xA9B5, 0x3205, 0xA9B6,
+	0x3206, 0xA9B7, 0x3207, 0xA9B8, 0x3208, 0xA9B9, 0x3209, 0xA9BA,
+	0x320A, 0xA9BB, 0x320B, 0xA9BC, 0x320C, 0xA9BD, 0x320D, 0xA9BE,
+	0x320E, 0xA9BF, 0x320F, 0xA9C0, 0x3210, 0xA9C1, 0x3211, 0xA9C2,
+	0x3212, 0xA9C3, 0x3213, 0xA9C4, 0x3214, 0xA9C5, 0x3215, 0xA9C6,
+	0x3216, 0xA9C7, 0x3217, 0xA9C8, 0x3218, 0xA9C9, 0x3219, 0xA9CA,
+	0x321A, 0xA9CB, 0x321B, 0xA9CC, 0x321C, 0xA2DF, 0x3260, 0xA8B1,
+	0x3261, 0xA8B2, 0x3262, 0xA8B3, 0x3263, 0xA8B4, 0x3264, 0xA8B5,
+	0x3265, 0xA8B6, 0x3266, 0xA8B7, 0x3267, 0xA8B8, 0x3268, 0xA8B9,
+	0x3269, 0xA8BA, 0x326A, 0xA8BB, 0x326B, 0xA8BC, 0x326C, 0xA8BD,
+	0x326D, 0xA8BE, 0x326E, 0xA8BF, 0x326F, 0xA8C0, 0x3270, 0xA8C1,
+	0x3271, 0xA8C2, 0x3272, 0xA8C3, 0x3273, 0xA8C4, 0x3274, 0xA8C5,
+	0x3275, 0xA8C6, 0x3276, 0xA8C7, 0x3277, 0xA8C8, 0x3278, 0xA8C9,
+	0x3279, 0xA8CA, 0x327A, 0xA8CB, 0x327B, 0xA8CC, 0x327F, 0xA2DE,
+	0x3380, 0xA7C9, 0x3381, 0xA7CA, 0x3382, 0xA7CB, 0x3383, 0xA7CC,
+	0x3384, 0xA7CD, 0x3388, 0xA7BA, 0x3389, 0xA7BB, 0x338A, 0xA7DC,
+	0x338B, 0xA7DD, 0x338C, 0xA7DE, 0x338D, 0xA7B6, 0x338E, 0xA7B7,
+	0x338F, 0xA7B8, 0x3390, 0xA7D4, 0x3391, 0xA7D5, 0x3392, 0xA7D6,
+	0x3393, 0xA7D7, 0x3394, 0xA7D8, 0x3395, 0xA7A1, 0x3396, 0xA7A2,
+	0x3397, 0xA7A3, 0x3398, 0xA7A5, 0x3399, 0xA7AB, 0x339A, 0xA7AC,
+	0x339B, 0xA7AD, 0x339C, 0xA7AE, 0x339D, 0xA7AF, 0x339E, 0xA7B0,
+	0x339F, 0xA7B1, 0x33A0, 0xA7B2, 0x33A1, 0xA7B3, 0x33A2, 0xA7B4,
+	0x33A3, 0xA7A7, 0x33A4, 0xA7A8, 0x33A5, 0xA7A9, 0x33A6, 0xA7AA,
+	0x33A7, 0xA7BD, 0x33A8, 0xA7BE, 0x33A9, 0xA7E5, 0x33AA, 0xA7E6,
+	0x33AB, 0xA7E7, 0x33AC, 0xA7E8, 0x33AD, 0xA7E1, 0x33AE, 0xA7E2,
+	0x33AF, 0xA7E3, 0x33B0, 0xA7BF, 0x33B1, 0xA7C0, 0x33B2, 0xA7C1,
+	0x33B3, 0xA7C2, 0x33B4, 0xA7C3, 0x33B5, 0xA7C4, 0x33B6, 0xA7C5,
+	0x33B7, 0xA7C6, 0x33B8, 0xA7C7, 0x33B9, 0xA7C8, 0x33BA, 0xA7CE,
+	0x33BB, 0xA7CF, 0x33BC, 0xA7D0, 0x33BD, 0xA7D1, 0x33BE, 0xA7D2,
+	0x33BF, 0xA7D3, 0x33C0, 0xA7DA, 0x33C1, 0xA7DB, 0x33C2, 0xA2E3,
+	0x33C3, 0xA7EC, 0x33C4, 0xA7A6, 0x33C5, 0xA7E0, 0x33C6, 0xA7EF,
+	0x33C7, 0xA2E1, 0x33C8, 0xA7BC, 0x33C9, 0xA7ED, 0x33CA, 0xA7B5,
+	0x33CF, 0xA7B9, 0x33D0, 0xA7EA, 0x33D3, 0xA7EB, 0x33D6, 0xA7DF,
+	0x33D8, 0xA2E4, 0x33DB, 0xA7E4, 0x33DC, 0xA7EE, 0x33DD, 0xA7E9,
+	0x4E00, 0xECE9, 0x4E01, 0xEFCB, 0x4E03, 0xF6D2, 0x4E07, 0xD8B2,
+	0x4E08, 0xEDDB, 0x4E09, 0xDFB2, 0x4E0A, 0xDFBE, 0x4E0B, 0xF9BB,
+	0x4E0D, 0xDCF4, 0x4E11, 0xF5E4, 0x4E14, 0xF3A6, 0x4E15, 0xDDE0,
+	0x4E16, 0xE1A6, 0x4E18, 0xCEF8, 0x4E19, 0xDCB0, 0x4E1E, 0xE3AA,
+	0x4E2D, 0xF1E9, 0x4E32, 0xCDFA, 0x4E38, 0xFCAF, 0x4E39, 0xD3A1,
+	0x4E3B, 0xF1AB, 0x4E42, 0xE7D1, 0x4E43, 0xD2AC, 0x4E45, 0xCEF9,
+	0x4E4B, 0xF1FD, 0x4E4D, 0xDEBF, 0x4E4E, 0xFBBA, 0x4E4F, 0xF9B9,
+	0x4E56, 0xCED2, 0x4E58, 0xE3AB, 0x4E59, 0xEBE0, 0x4E5D, 0xCEFA,
+	0x4E5E, 0xCBF7, 0x4E5F, 0xE5A5, 0x4E6B, 0xCAE1, 0x4E6D, 0xD4CC,
+	0x4E73, 0xEAE1, 0x4E76, 0xDCE3, 0x4E77, 0xDFAD, 0x4E7E, 0xCBEB,
+	0x4E82, 0xD5AF, 0x4E86, 0xD6F5, 0x4E88, 0xE5F8, 0x4E8B, 0xDEC0,
+	0x4E8C, 0xECA3, 0x4E8E, 0xE9CD, 0x4E90, 0xEAA7, 0x4E91, 0xE9F6,
+	0x4E92, 0xFBBB, 0x4E94, 0xE7E9, 0x4E95, 0xEFCC, 0x4E98, 0xD0E6,
+	0x4E9B, 0xDEC1, 0x4E9E, 0xE4AC, 0x4EA1, 0xD8CC, 0x4EA2, 0xF9F1,
+	0x4EA4, 0xCEDF, 0x4EA5, 0xFAA4, 0x4EA6, 0xE6B2, 0x4EA8, 0xFAFB,
+	0x4EAB, 0xFABD, 0x4EAC, 0xCCC8, 0x4EAD, 0xEFCD, 0x4EAE, 0xD5D5,
+	0x4EB6, 0xD3A2, 0x4EBA, 0xECD1, 0x4EC0, 0xE4A7, 0x4EC1, 0xECD2,
+	0x4EC4, 0xF6B1, 0x4EC7, 0xCEFB, 0x4ECA, 0xD0D1, 0x4ECB, 0xCBBF,
+	0x4ECD, 0xEDA4, 0x4ED4, 0xEDA8, 0x4ED5, 0xDEC2, 0x4ED6, 0xF6E2,
+	0x4ED7, 0xEDDC, 0x4ED8, 0xDCF5, 0x4ED9, 0xE0B9, 0x4EDD, 0xD4CE,
+	0x4EDF, 0xF4B5, 0x4EE3, 0xD3DB, 0x4EE4, 0xD6B5, 0x4EE5, 0xECA4,
+	0x4EF0, 0xE4E6, 0x4EF2, 0xF1EA, 0x4EF6, 0xCBEC, 0x4EF7, 0xCBC0,
+	0x4EFB, 0xECF2, 0x4F01, 0xD0EA, 0x4F09, 0xF9F2, 0x4F0A, 0xECA5,
+	0x4F0B, 0xD0DF, 0x4F0D, 0xE7EA, 0x4F0E, 0xD0EB, 0x4F0F, 0xDCD1,
+	0x4F10, 0xDBE9, 0x4F11, 0xFDCC, 0x4F2F, 0xDBD7, 0x4F34, 0xDAE1,
+	0x4F36, 0xD6B6, 0x4F38, 0xE3DF, 0x4F3A, 0xDEC3, 0x4F3C, 0xDEC4,
+	0x4F3D, 0xCAA1, 0x4F43, 0xEEEC, 0x4F46, 0xD3A3, 0x4F47, 0xEEB7,
+	0x4F48, 0xF8CF, 0x4F4D, 0xEAC8, 0x4F4E, 0xEEB8, 0x4F4F, 0xF1AC,
+	0x4F50, 0xF1A5, 0x4F51, 0xE9CE, 0x4F55, 0xF9BC, 0x4F59, 0xE5F9,
+	0x4F5A, 0xECEA, 0x4F5B, 0xDDD6, 0x4F5C, 0xEDC2, 0x4F69, 0xF8A5,
+	0x4F6F, 0xE5BA, 0x4F70, 0xDBD8, 0x4F73, 0xCAA2, 0x4F76, 0xD1CD,
+	0x4F7A, 0xEEED, 0x4F7E, 0xECEB, 0x4F7F, 0xDEC5, 0x4F81, 0xE3E0,
+	0x4F83, 0xCAC9, 0x4F84, 0xF2E9, 0x4F86, 0xD5CE, 0x4F88, 0xF6B6,
+	0x4F8A, 0xCEC2, 0x4F8B, 0xD6C7, 0x4F8D, 0xE3B4, 0x4F8F, 0xF1AD,
+	0x4F91, 0xEAE2, 0x4F96, 0xD7C2, 0x4F98, 0xF3A7, 0x4F9B, 0xCDEA,
+	0x4F9D, 0xEBEE, 0x4FAE, 0xD9B2, 0x4FAF, 0xFDA5, 0x4FB5, 0xF6D5,
+	0x4FB6, 0xD5E2, 0x4FBF, 0xF8B5, 0x4FC2, 0xCCF5, 0x4FC3, 0xF5B5,
+	0x4FC4, 0xE4AD, 0x4FC9, 0xE7EB, 0x4FCA, 0xF1D5, 0x4FCE, 0xF0BB,
+	0x4FD1, 0xE9B5, 0x4FD3, 0xCCC9, 0x4FD4, 0xFAD5, 0x4FD7, 0xE1D4,
+	0x4FDA, 0xD7D6, 0x4FDD, 0xDCC1, 0x4FDF, 0xDEC6, 0x4FE0, 0xFAEF,
+	0x4FE1, 0xE3E1, 0x4FEE, 0xE1F3, 0x4FEF, 0xDCF6, 0x4FF1, 0xCEFC,
+	0x4FF3, 0xDBC4, 0x4FF5, 0xF8F1, 0x4FF8, 0xDCE4, 0x4FFA, 0xE5EF,
+	0x5002, 0xDCB1, 0x5006, 0xD5D6, 0x5009, 0xF3DA, 0x500B, 0xCBC1,
+	0x500D, 0xDBC3, 0x5011, 0xD9FA, 0x5012, 0xD3EE, 0x5016, 0xFAB8,
+	0x5019, 0xFDA6, 0x501A, 0xEBEF, 0x501C, 0xF4A6, 0x501E, 0xCCCA,
+	0x501F, 0xF3A8, 0x5021, 0xF3DB, 0x5023, 0xDBA7, 0x5024, 0xF6B7,
+	0x5026, 0xCFE6, 0x5027, 0xF0F2, 0x5028, 0xCBDA, 0x502A, 0xE7D2,
+	0x502B, 0xD7C3, 0x502C, 0xF6F0, 0x502D, 0xE8DE, 0x503B, 0xE5A6,
+	0x5043, 0xE5E7, 0x5047, 0xCAA3, 0x5048, 0xCCA7, 0x5049, 0xEAC9,
+	0x504F, 0xF8B6, 0x5055, 0xFAA5, 0x505A, 0xF1AE, 0x505C, 0xEFCE,
+	0x5065, 0xCBED, 0x5074, 0xF6B0, 0x5075, 0xEFCF, 0x5076, 0xE9CF,
+	0x5078, 0xF7DE, 0x5080, 0xCED3, 0x5085, 0xDCF7, 0x508D, 0xDBA8,
+	0x5091, 0xCBF8, 0x5098, 0xDFA1, 0x5099, 0xDDE1, 0x50AC, 0xF5CA,
+	0x50AD, 0xE9B6, 0x50B2, 0xE7EC, 0x50B3, 0xEEEE, 0x50B5, 0xF3F0,
+	0x50B7, 0xDFBF, 0x50BE, 0xCCCB, 0x50C5, 0xD0C1, 0x50C9, 0xF4D2,
+	0x50CA, 0xE0BA, 0x50CF, 0xDFC0, 0x50D1, 0xCEE0, 0x50D5, 0xDCD2,
+	0x50D6, 0xFDEA, 0x50DA, 0xD6F6, 0x50DE, 0xEACA, 0x50E5, 0xE8E9,
+	0x50E7, 0xE3AC, 0x50ED, 0xF3D0, 0x50F9, 0xCAA4, 0x50FB, 0xDBF8,
+	0x50FF, 0xDEC7, 0x5100, 0xEBF0, 0x5101, 0xF1D6, 0x5104, 0xE5E2,
+	0x5106, 0xCCCC, 0x5109, 0xCBFB, 0x5112, 0xEAE3, 0x511F, 0xDFC1,
+	0x5121, 0xD6ED, 0x512A, 0xE9D0, 0x5132, 0xEEB9, 0x5137, 0xD5E3,
+	0x513A, 0xD1D3, 0x513C, 0xE5F0, 0x5140, 0xE8B4, 0x5141, 0xEBC3,
+	0x5143, 0xEAAA, 0x5144, 0xFAFC, 0x5145, 0xF5F6, 0x5146, 0xF0BC,
+	0x5147, 0xFDD4, 0x5148, 0xE0BB, 0x5149, 0xCEC3, 0x514B, 0xD0BA,
+	0x514C, 0xF7BA, 0x514D, 0xD8F3, 0x514E, 0xF7CD, 0x5152, 0xE4AE,
+	0x515C, 0xD4DF, 0x5162, 0xD0E7, 0x5165, 0xECFD, 0x5167, 0xD2AE,
+	0x5168, 0xEEEF, 0x5169, 0xD5D7, 0x516A, 0xEAE4, 0x516B, 0xF8A2,
+	0x516C, 0xCDEB, 0x516D, 0xD7BF, 0x516E, 0xFBB1, 0x5171, 0xCDEC,
+	0x5175, 0xDCB2, 0x5176, 0xD0EC, 0x5177, 0xCEFD, 0x5178, 0xEEF0,
+	0x517C, 0xCCC2, 0x5180, 0xD0ED, 0x5186, 0xE5F7, 0x518A, 0xF3FC,
+	0x518D, 0xEEA2, 0x5192, 0xD9B3, 0x5195, 0xD8F4, 0x5197, 0xE9B7,
+	0x51A0, 0xCEAE, 0x51A5, 0xD9A2, 0x51AA, 0xD8F1, 0x51AC, 0xD4CF,
+	0x51B6, 0xE5A7, 0x51B7, 0xD5D2, 0x51BD, 0xD6A9, 0x51C4, 0xF4A2,
+	0x51C6, 0xF1D7, 0x51C9, 0xD5D8, 0x51CB, 0xF0BD, 0x51CC, 0xD7D0,
+	0x51CD, 0xD4D0, 0x51DC, 0xD7CF, 0x51DD, 0xEBEA, 0x51DE, 0xFDEB,
+	0x51E1, 0xDBED, 0x51F0, 0xFCC5, 0x51F1, 0xCBC2, 0x51F6, 0xFDD5,
+	0x51F8, 0xF4C8, 0x51F9, 0xE8EA, 0x51FA, 0xF5F3, 0x51FD, 0xF9DE,
+	0x5200, 0xD3EF, 0x5203, 0xECD3, 0x5206, 0xDDC2, 0x5207, 0xEFB7,
+	0x5208, 0xE7D4, 0x520A, 0xCACA, 0x520E, 0xD9FB, 0x5211, 0xFAFD,
+	0x5217, 0xD6AA, 0x521D, 0xF4F8, 0x5224, 0xF7F7, 0x5225, 0xDCAC,
+	0x5229, 0xD7D7, 0x522A, 0xDFA2, 0x522E, 0xCEBE, 0x5230, 0xD3F0,
+	0x5236, 0xF0A4, 0x5237, 0xE1EC, 0x5238, 0xCFE7, 0x5239, 0xF3CB,
+	0x523A, 0xEDA9, 0x523B, 0xCABE, 0x5243, 0xF4EF, 0x5247, 0xF6CE,
+	0x524A, 0xDEFB, 0x524B, 0xD0BB, 0x524C, 0xD5B7, 0x524D, 0xEEF1,
+	0x5254, 0xF4A8, 0x5256, 0xDCF8, 0x525B, 0xCBA7, 0x525D, 0xDACE,
+	0x5261, 0xE0E6, 0x5269, 0xEDA5, 0x526A, 0xEEF2, 0x526F, 0xDCF9,
+	0x5272, 0xF9DC, 0x5275, 0xF3DC, 0x527D, 0xF8F2, 0x527F, 0xF4F9,
+	0x5283, 0xFCF1, 0x5287, 0xD0BC, 0x5288, 0xDBF9, 0x5289, 0xD7B1,
+	0x528D, 0xCBFC, 0x5291, 0xF0A5, 0x5292, 0xCBFD, 0x529B, 0xD5F4,
+	0x529F, 0xCDED, 0x52A0, 0xCAA5, 0x52A3, 0xD6AB, 0x52A4, 0xD0C2,
+	0x52A9, 0xF0BE, 0x52AA, 0xD2BD, 0x52AB, 0xCCA4, 0x52BE, 0xFAB6,
+	0x52C1, 0xCCCD, 0x52C3, 0xDAFA, 0x52C5, 0xF6CF, 0x52C7, 0xE9B8,
+	0x52C9, 0xD8F5, 0x52CD, 0xCCCE, 0x52D2, 0xD7CD, 0x52D5, 0xD4D1,
+	0x52D6, 0xE9ED, 0x52D8, 0xCAEB, 0x52D9, 0xD9E2, 0x52DB, 0xFDB2,
+	0x52DD, 0xE3AD, 0x52DE, 0xD6CC, 0x52DF, 0xD9B4, 0x52E2, 0xE1A7,
+	0x52E3, 0xEED3, 0x52E4, 0xD0C3, 0x52F3, 0xFDB3, 0x52F5, 0xD5E4,
+	0x52F8, 0xCFE8, 0x52FA, 0xEDC3, 0x52FB, 0xD0B2, 0x52FE, 0xCEFE,
+	0x52FF, 0xDAA8, 0x5305, 0xF8D0, 0x5308, 0xFDD6, 0x530D, 0xF8D1,
+	0x530F, 0xF8D2, 0x5310, 0xDCD3, 0x5315, 0xDDE2, 0x5316, 0xFBF9,
+	0x5317, 0xDDC1, 0x5319, 0xE3B5, 0x5320, 0xEDDD, 0x5321, 0xCEC4,
+	0x5323, 0xCBA1, 0x532A, 0xDDE3, 0x532F, 0xFCDD, 0x5339, 0xF9AF,
+	0x533F, 0xD2FB, 0x5340, 0xCFA1, 0x5341, 0xE4A8, 0x5343, 0xF4B6,
+	0x5344, 0xECFE, 0x5347, 0xE3AE, 0x5348, 0xE7ED, 0x5349, 0xFDC1,
+	0x534A, 0xDAE2, 0x534D, 0xD8B3, 0x5351, 0xDDE4, 0x5352, 0xF0EF,
+	0x5353, 0xF6F1, 0x5354, 0xFAF0, 0x5357, 0xD1F5, 0x535A, 0xDACF,
+	0x535C, 0xDCD4, 0x535E, 0xDCA6, 0x5360, 0xEFBF, 0x5366, 0xCECF,
+	0x5368, 0xE0D9, 0x536F, 0xD9D6, 0x5370, 0xECD4, 0x5371, 0xEACB,
+	0x5374, 0xCABF, 0x5375, 0xD5B0, 0x5377, 0xCFE9, 0x537D, 0xF1ED,
+	0x537F, 0xCCCF, 0x5384, 0xE4F8, 0x5393, 0xE4ED, 0x5398, 0xD7D8,
+	0x539A, 0xFDA7, 0x539F, 0xEAAB, 0x53A0, 0xF6B2, 0x53A5, 0xCFF0,
+	0x53A6, 0xF9BD, 0x53AD, 0xE6F4, 0x53BB, 0xCBDB, 0x53C3, 0xF3D1,
+	0x53C8, 0xE9D1, 0x53C9, 0xF3A9, 0x53CA, 0xD0E0, 0x53CB, 0xE9D2,
+	0x53CD, 0xDAE3, 0x53D4, 0xE2D2, 0x53D6, 0xF6A2, 0x53D7, 0xE1F4,
+	0x53DB, 0xDAE4, 0x53E1, 0xE7D5, 0x53E2, 0xF5BF, 0x53E3, 0xCFA2,
+	0x53E4, 0xCDAF, 0x53E5, 0xCFA3, 0x53E9, 0xCDB0, 0x53EA, 0xF1FE,
+	0x53EB, 0xD0A3, 0x53EC, 0xE1AF, 0x53ED, 0xF8A3, 0x53EF, 0xCAA6,
+	0x53F0, 0xF7BB, 0x53F1, 0xF2EA, 0x53F2, 0xDEC8, 0x53F3, 0xE9D3,
+	0x53F8, 0xDEC9, 0x5403, 0xFDDE, 0x5404, 0xCAC0, 0x5408, 0xF9EA,
+	0x5409, 0xD1CE, 0x540A, 0xEED4, 0x540C, 0xD4D2, 0x540D, 0xD9A3,
+	0x540E, 0xFDA8, 0x540F, 0xD7D9, 0x5410, 0xF7CE, 0x5411, 0xFABE,
+	0x541B, 0xCFD6, 0x541D, 0xD7F0, 0x541F, 0xEBE1, 0x5420, 0xF8C5,
+	0x5426, 0xDCFA, 0x5429, 0xDDC3, 0x542B, 0xF9DF, 0x5433, 0xE7EF,
+	0x5438, 0xFDE5, 0x5439, 0xF6A3, 0x543B, 0xD9FC, 0x543C, 0xFDA9,
+	0x543E, 0xE7EE, 0x5442, 0xD5E5, 0x5448, 0xEFD0, 0x544A, 0xCDB1,
+	0x5451, 0xF7A2, 0x5468, 0xF1B2, 0x546A, 0xF1B1, 0x5471, 0xCDB2,
+	0x5473, 0xDAAB, 0x5475, 0xCAA7, 0x547B, 0xE3E2, 0x547C, 0xFBBC,
+	0x547D, 0xD9A4, 0x5480, 0xEEBA, 0x5486, 0xF8D3, 0x548C, 0xFBFA,
+	0x548E, 0xCFA4, 0x5490, 0xDCFB, 0x54A4, 0xF6E3, 0x54A8, 0xEDAA,
+	0x54AB, 0xF2A1, 0x54AC, 0xCEE1, 0x54B3, 0xFAA6, 0x54B8, 0xF9E0,
+	0x54BD, 0xECD6, 0x54C0, 0xE4EE, 0x54C1, 0xF9A1, 0x54C4, 0xFBEF,
+	0x54C8, 0xF9EB, 0x54C9, 0xEEA3, 0x54E1, 0xEAAC, 0x54E5, 0xCAA8,
+	0x54E8, 0xF4FA, 0x54ED, 0xCDD6, 0x54EE, 0xFCF6, 0x54F2, 0xF4C9,
+	0x54FA, 0xF8D4, 0x5504, 0xF8A6, 0x5506, 0xDECA, 0x5507, 0xF2C6,
+	0x550E, 0xD7DA, 0x5510, 0xD3D0, 0x551C, 0xD8C5, 0x552F, 0xEAE6,
+	0x5531, 0xF3DD, 0x5535, 0xE4DA, 0x553E, 0xF6E4, 0x5544, 0xF6F2,
+	0x5546, 0xDFC2, 0x554F, 0xD9FD, 0x5553, 0xCCF6, 0x5556, 0xD3BA,
+	0x555E, 0xE4AF, 0x5563, 0xF9E1, 0x557C, 0xF0A6, 0x5580, 0xCBD3,
+	0x5584, 0xE0BC, 0x5586, 0xF4CA, 0x5587, 0xD4FA, 0x5589, 0xFDAA,
+	0x558A, 0xF9E2, 0x5598, 0xF4B7, 0x5599, 0xFDC2, 0x559A, 0xFCB0,
+	0x559C, 0xFDEC, 0x559D, 0xCAE2, 0x55A7, 0xFDBD, 0x55A9, 0xEAE7,
+	0x55AA, 0xDFC3, 0x55AB, 0xD1D2, 0x55AC, 0xCEE2, 0x55AE, 0xD3A4,
+	0x55C5, 0xFDAB, 0x55C7, 0xDFE0, 0x55D4, 0xF2C7, 0x55DA, 0xE7F0,
+	0x55DC, 0xD0EE, 0x55DF, 0xF3AA, 0x55E3, 0xDECB, 0x55E4, 0xF6B8,
+	0x55FD, 0xE1F5, 0x55FE, 0xF1B3, 0x5606, 0xF7A3, 0x5609, 0xCAA9,
+	0x5614, 0xCFA5, 0x5617, 0xDFC4, 0x562F, 0xE1B0, 0x5632, 0xF0BF,
+	0x5634, 0xF6A4, 0x5636, 0xE3B6, 0x5653, 0xFAC6, 0x5668, 0xD0EF,
+	0x566B, 0xFDED, 0x5674, 0xDDC4, 0x5686, 0xFCF7, 0x56A5, 0xE6BF,
+	0x56AC, 0xDEAD, 0x56AE, 0xFABF, 0x56B4, 0xE5F1, 0x56BC, 0xEDC4,
+	0x56CA, 0xD2A5, 0x56CD, 0xFDEE, 0x56D1, 0xF5B6, 0x56DA, 0xE1F6,
+	0x56DB, 0xDECC, 0x56DE, 0xFCDE, 0x56E0, 0xECD7, 0x56F0, 0xCDDD,
+	0x56F9, 0xD6B7, 0x56FA, 0xCDB3, 0x5703, 0xF8D5, 0x5704, 0xE5D8,
+	0x5708, 0xCFEA, 0x570B, 0xCFD0, 0x570D, 0xEACC, 0x5712, 0xEAAE,
+	0x5713, 0xEAAD, 0x5716, 0xD3F1, 0x5718, 0xD3A5, 0x571F, 0xF7CF,
+	0x5728, 0xEEA4, 0x572D, 0xD0A4, 0x5730, 0xF2A2, 0x573B, 0xD0F0,
+	0x5740, 0xF2A3, 0x5742, 0xF7F8, 0x5747, 0xD0B3, 0x574A, 0xDBA9,
+	0x574D, 0xD3BB, 0x574E, 0xCAEC, 0x5750, 0xF1A6, 0x5751, 0xCBD5,
+	0x5761, 0xF7E7, 0x5764, 0xCDDE, 0x5766, 0xF7A4, 0x576A, 0xF8C0,
+	0x576E, 0xD3DD, 0x5770, 0xCCD0, 0x5775, 0xCFA6, 0x577C, 0xF6F3,
+	0x5782, 0xE1F7, 0x5788, 0xD3DC, 0x578B, 0xFAFE, 0x5793, 0xFAA7,
+	0x57A0, 0xEBD9, 0x57A2, 0xCFA7, 0x57A3, 0xEAAF, 0x57C3, 0xE4EF,
+	0x57C7, 0xE9B9, 0x57C8, 0xF1D8, 0x57CB, 0xD8D8, 0x57CE, 0xE0F2,
+	0x57DF, 0xE6B4, 0x57E0, 0xDCFC, 0x57F0, 0xF3F1, 0x57F4, 0xE3D0,
+	0x57F7, 0xF2FB, 0x57F9, 0xDBC6, 0x57FA, 0xD0F1, 0x57FC, 0xD0F2,
+	0x5800, 0xCFDC, 0x5802, 0xD3D1, 0x5805, 0xCCB1, 0x5806, 0xF7D8,
+	0x5808, 0xCBA8, 0x5809, 0xEBBC, 0x580A, 0xE4BE, 0x581E, 0xF4DC,
+	0x5821, 0xDCC2, 0x5824, 0xF0A7, 0x5827, 0xE6C0, 0x582A, 0xCAED,
+	0x582F, 0xE8EB, 0x5830, 0xE5E8, 0x5831, 0xDCC3, 0x5834, 0xEDDE,
+	0x5835, 0xD3F2, 0x583A, 0xCCF7, 0x584A, 0xCED4, 0x584B, 0xE7AB,
+	0x584F, 0xCBC3, 0x5851, 0xE1B1, 0x5854, 0xF7B2, 0x5857, 0xD3F3,
+	0x5858, 0xD3D2, 0x585A, 0xF5C0, 0x585E, 0xDFDD, 0x5861, 0xEEF3,
+	0x5862, 0xE7F1, 0x5864, 0xFDB4, 0x5875, 0xF2C8, 0x5879, 0xF3D2,
+	0x587C, 0xEEF4, 0x587E, 0xE2D3, 0x5883, 0xCCD1, 0x5885, 0xDFEA,
+	0x5889, 0xE9BA, 0x5893, 0xD9D7, 0x589C, 0xF5CD, 0x589E, 0xF1F2,
+	0x589F, 0xFAC7, 0x58A8, 0xD9F8, 0x58A9, 0xD4C2, 0x58AE, 0xF6E5,
+	0x58B3, 0xDDC5, 0x58BA, 0xE7F2, 0x58BB, 0xEDDF, 0x58BE, 0xCACB,
+	0x58C1, 0xDBFA, 0x58C5, 0xE8B5, 0x58C7, 0xD3A6, 0x58CE, 0xFDB5,
+	0x58D1, 0xF9C9, 0x58D3, 0xE4E2, 0x58D5, 0xFBBD, 0x58D8, 0xD7A4,
+	0x58D9, 0xCEC5, 0x58DE, 0xCED5, 0x58DF, 0xD6E6, 0x58E4, 0xE5BD,
+	0x58EB, 0xDECD, 0x58EC, 0xECF3, 0x58EF, 0xEDE0, 0x58F9, 0xECEC,
+	0x58FA, 0xFBBE, 0x58FB, 0xDFEB, 0x58FD, 0xE1F8, 0x590F, 0xF9BE,
+	0x5914, 0xD0F3, 0x5915, 0xE0AA, 0x5916, 0xE8E2, 0x5919, 0xE2D4,
+	0x591A, 0xD2FD, 0x591C, 0xE5A8, 0x5922, 0xD9D3, 0x5927, 0xD3DE,
+	0x5929, 0xF4B8, 0x592A, 0xF7BC, 0x592B, 0xDCFD, 0x592D, 0xE8EC,
+	0x592E, 0xE4E7, 0x5931, 0xE3F7, 0x5937, 0xECA8, 0x593E, 0xFAF1,
+	0x5944, 0xE5F2, 0x5947, 0xD0F4, 0x5948, 0xD2AF, 0x5949, 0xDCE5,
+	0x594E, 0xD0A5, 0x594F, 0xF1B4, 0x5950, 0xFCB1, 0x5951, 0xCCF8,
+	0x5954, 0xDDC6, 0x5955, 0xFAD1, 0x5957, 0xF7DF, 0x595A, 0xFAA8,
+	0x5960, 0xEEF5, 0x5962, 0xDECE, 0x5967, 0xE7F3, 0x596A, 0xF7AC,
+	0x596B, 0xEBC4, 0x596C, 0xEDE1, 0x596D, 0xE0AB, 0x596E, 0xDDC7,
+	0x5973, 0xD2B3, 0x5974, 0xD2BF, 0x5978, 0xCACC, 0x597D, 0xFBBF,
+	0x5982, 0xE5FD, 0x5983, 0xDDE5, 0x5984, 0xD8CD, 0x598A, 0xECF4,
+	0x5993, 0xD0F5, 0x5996, 0xE8ED, 0x5997, 0xD0D2, 0x5999, 0xD9D8,
+	0x59A5, 0xF6E6, 0x59A8, 0xDBAA, 0x59AC, 0xF7E0, 0x59B9, 0xD8D9,
+	0x59BB, 0xF4A3, 0x59BE, 0xF4DD, 0x59C3, 0xEFD1, 0x59C6, 0xD9B5,
+	0x59C9, 0xEDAB, 0x59CB, 0xE3B7, 0x59D0, 0xEEBB, 0x59D1, 0xCDB4,
+	0x59D3, 0xE0F3, 0x59D4, 0xEACD, 0x59D9, 0xECF5, 0x59DA, 0xE8EE,
+	0x59DC, 0xCBA9, 0x59DD, 0xF1AF, 0x59E6, 0xCACD, 0x59E8, 0xECA9,
+	0x59EA, 0xF2EB, 0x59EC, 0xFDEF, 0x59EE, 0xF9F3, 0x59F8, 0xE6C1,
+	0x59FB, 0xECD8, 0x59FF, 0xEDAC, 0x5A01, 0xEACE, 0x5A03, 0xE8DF,
+	0x5A11, 0xDECF, 0x5A18, 0xD2A6, 0x5A1B, 0xE7F4, 0x5A1C, 0xD1D6,
+	0x5A1F, 0xE6C2, 0x5A20, 0xE3E3, 0x5A25, 0xE4B0, 0x5A29, 0xD8B4,
+	0x5A36, 0xF6A5, 0x5A3C, 0xF3DE, 0x5A41, 0xD7A5, 0x5A46, 0xF7E8,
+	0x5A49, 0xE8C6, 0x5A5A, 0xFBE6, 0x5A62, 0xDDE6, 0x5A66, 0xDCFE,
+	0x5A92, 0xD8DA, 0x5A9A, 0xDAAC, 0x5A9B, 0xEAB0, 0x5AA4, 0xE3B8,
+	0x5AC1, 0xCAAA, 0x5AC2, 0xE1F9, 0x5AC4, 0xEAB1, 0x5AC9, 0xF2EC,
+	0x5ACC, 0xFAEE, 0x5AE1, 0xEED5, 0x5AE6, 0xF9F4, 0x5AE9, 0xD2EC,
+	0x5B05, 0xFBFB, 0x5B09, 0xFDF0, 0x5B0B, 0xE0BD, 0x5B0C, 0xCEE3,
+	0x5B16, 0xF8C6, 0x5B2A, 0xDEAE, 0x5B40, 0xDFC5, 0x5B43, 0xE5BE,
+	0x5B50, 0xEDAD, 0x5B51, 0xFAEA, 0x5B54, 0xCDEE, 0x5B55, 0xEDA6,
+	0x5B57, 0xEDAE, 0x5B58, 0xF0ED, 0x5B5A, 0xDDA1, 0x5B5C, 0xEDAF,
+	0x5B5D, 0xFCF8, 0x5B5F, 0xD8EB, 0x5B63, 0xCCF9, 0x5B64, 0xCDB5,
+	0x5B69, 0xFAA9, 0x5B6B, 0xE1DD, 0x5B70, 0xE2D5, 0x5B71, 0xEDCF,
+	0x5B75, 0xDDA2, 0x5B78, 0xF9CA, 0x5B7A, 0xEAE8, 0x5B7C, 0xE5ED,
+	0x5B85, 0xD3EB, 0x5B87, 0xE9D4, 0x5B88, 0xE1FA, 0x5B89, 0xE4CC,
+	0x5B8B, 0xE1E4, 0x5B8C, 0xE8C7, 0x5B8F, 0xCEDB, 0x5B93, 0xDCD5,
+	0x5B95, 0xF7B5, 0x5B96, 0xFCF3, 0x5B97, 0xF0F3, 0x5B98, 0xCEAF,
+	0x5B99, 0xF1B5, 0x5B9A, 0xEFD2, 0x5B9B, 0xE8C8, 0x5B9C, 0xEBF1,
+	0x5BA2, 0xCBD4, 0x5BA3, 0xE0BE, 0x5BA4, 0xE3F8, 0x5BA5, 0xEAE9,
+	0x5BA6, 0xFCB2, 0x5BAC, 0xE0F4, 0x5BAE, 0xCFE0, 0x5BB0, 0xEEA5,
+	0x5BB3, 0xFAAA, 0x5BB4, 0xE6C3, 0x5BB5, 0xE1B2, 0x5BB6, 0xCAAB,
+	0x5BB8, 0xE3E4, 0x5BB9, 0xE9BB, 0x5BBF, 0xE2D6, 0x5BC0, 0xF3F2,
+	0x5BC2, 0xEED6, 0x5BC3, 0xEAB2, 0x5BC4, 0xD0F6, 0x5BC5, 0xECD9,
+	0x5BC6, 0xDACB, 0x5BC7, 0xCFA8, 0x5BCC, 0xDDA3, 0x5BD0, 0xD8DB,
+	0x5BD2, 0xF9CE, 0x5BD3, 0xE9D5, 0x5BD4, 0xE3D1, 0x5BD7, 0xD2BC,
+	0x5BDE, 0xD8AC, 0x5BDF, 0xF3CC, 0x5BE1, 0xCDFB, 0x5BE2, 0xF6D6,
+	0x5BE4, 0xE7F5, 0x5BE5, 0xE8EF, 0x5BE6, 0xE3F9, 0x5BE7, 0xD2BB,
+	0x5BE8, 0xF3F3, 0x5BE9, 0xE3FB, 0x5BEB, 0xDED0, 0x5BEC, 0xCEB0,
+	0x5BEE, 0xD6F7, 0x5BEF, 0xF1D9, 0x5BF5, 0xF5C1, 0x5BF6, 0xDCC4,
+	0x5BF8, 0xF5BB, 0x5BFA, 0xDED1, 0x5C01, 0xDCE6, 0x5C04, 0xDED2,
+	0x5C07, 0xEDE2, 0x5C08, 0xEEF6, 0x5C09, 0xEACF, 0x5C0A, 0xF0EE,
+	0x5C0B, 0xE3FC, 0x5C0D, 0xD3DF, 0x5C0E, 0xD3F4, 0x5C0F, 0xE1B3,
+	0x5C11, 0xE1B4, 0x5C16, 0xF4D3, 0x5C19, 0xDFC6, 0x5C24, 0xE9D6,
+	0x5C28, 0xDBAB, 0x5C31, 0xF6A6, 0x5C38, 0xE3B9, 0x5C39, 0xEBC5,
+	0x5C3A, 0xF4A9, 0x5C3B, 0xCDB6, 0x5C3C, 0xD2F9, 0x5C3E, 0xDAAD,
+	0x5C3F, 0xD2E3, 0x5C40, 0xCFD1, 0x5C45, 0xCBDC, 0x5C46, 0xCCFA,
+	0x5C48, 0xCFDD, 0x5C4B, 0xE8A9, 0x5C4D, 0xE3BB, 0x5C4E, 0xE3BA,
+	0x5C51, 0xE0DA, 0x5C55, 0xEEF7, 0x5C5B, 0xDCB3, 0x5C60, 0xD3F5,
+	0x5C62, 0xD7A6, 0x5C64, 0xF6B5, 0x5C65, 0xD7DB, 0x5C6C, 0xE1D5,
+	0x5C6F, 0xD4EA, 0x5C71, 0xDFA3, 0x5C79, 0xFDDF, 0x5C90, 0xD0F7,
+	0x5C91, 0xEDD4, 0x5CA1, 0xCBAA, 0x5CA9, 0xE4DB, 0x5CAB, 0xE1FB,
+	0x5CAC, 0xCBA2, 0x5CB1, 0xD3E0, 0x5CB3, 0xE4BF, 0x5CB5, 0xFBC0,
+	0x5CB7, 0xDABE, 0x5CB8, 0xE4CD, 0x5CBA, 0xD6B9, 0x5CBE, 0xEFC0,
+	0x5CC0, 0xE1FC, 0x5CD9, 0xF6B9, 0x5CE0, 0xDFC7, 0x5CE8, 0xE4B1,
+	0x5CEF, 0xDCE7, 0x5CF0, 0xDCE8, 0x5CF4, 0xFAD6, 0x5CF6, 0xD3F6,
+	0x5CFB, 0xF1DA, 0x5CFD, 0xFAF2, 0x5D07, 0xE2FD, 0x5D0D, 0xD5CF,
+	0x5D0E, 0xD0F8, 0x5D11, 0xCDDF, 0x5D14, 0xF5CB, 0x5D16, 0xE4F0,
+	0x5D17, 0xCBAB, 0x5D19, 0xD7C4, 0x5D27, 0xE2FE, 0x5D29, 0xDDDA,
+	0x5D4B, 0xDAAE, 0x5D4C, 0xCAEE, 0x5D50, 0xD5B9, 0x5D69, 0xE3A1,
+	0x5D6C, 0xE8E3, 0x5D6F, 0xF3AB, 0x5D87, 0xCFA9, 0x5D8B, 0xD3F7,
+	0x5D9D, 0xD4F1, 0x5DA0, 0xCEE4, 0x5DA2, 0xE8F2, 0x5DAA, 0xE5F5,
+	0x5DB8, 0xE7AE, 0x5DBA, 0xD6BA, 0x5DBC, 0xDFEC, 0x5DBD, 0xE4C0,
+	0x5DCD, 0xE8E4, 0x5DD2, 0xD8B5, 0x5DD6, 0xE4DC, 0x5DDD, 0xF4B9,
+	0x5DDE, 0xF1B6, 0x5DE1, 0xE2DE, 0x5DE2, 0xE1B5, 0x5DE5, 0xCDEF,
+	0x5DE6, 0xF1A7, 0x5DE7, 0xCEE5, 0x5DE8, 0xCBDD, 0x5DEB, 0xD9E3,
+	0x5DEE, 0xF3AC, 0x5DF1, 0xD0F9, 0x5DF2, 0xECAB, 0x5DF3, 0xDED3,
+	0x5DF4, 0xF7E9, 0x5DF7, 0xF9F5, 0x5DFD, 0xE1DE, 0x5DFE, 0xCBEE,
+	0x5E02, 0xE3BC, 0x5E03, 0xF8D6, 0x5E06, 0xDBEE, 0x5E0C, 0xFDF1,
+	0x5E11, 0xF7B6, 0x5E16, 0xF4DE, 0x5E19, 0xF2ED, 0x5E1B, 0xDBD9,
+	0x5E1D, 0xF0A8, 0x5E25, 0xE1FD, 0x5E2B, 0xDED4, 0x5E2D, 0xE0AC,
+	0x5E33, 0xEDE3, 0x5E36, 0xD3E1, 0x5E38, 0xDFC8, 0x5E3D, 0xD9B6,
+	0x5E3F, 0xFDAC, 0x5E40, 0xEFD3, 0x5E44, 0xE4C1, 0x5E45, 0xF8EB,
+	0x5E47, 0xDBAC, 0x5E4C, 0xFCC6, 0x5E55, 0xD8AD, 0x5E5F, 0xF6BA,
+	0x5E61, 0xDBDF, 0x5E62, 0xD3D3, 0x5E63, 0xF8C7, 0x5E72, 0xCACE,
+	0x5E73, 0xF8C1, 0x5E74, 0xD2B4, 0x5E77, 0xDCB4, 0x5E78, 0xFAB9,
+	0x5E79, 0xCACF, 0x5E7B, 0xFCB3, 0x5E7C, 0xEAEA, 0x5E7D, 0xEAEB,
+	0x5E7E, 0xD0FA, 0x5E84, 0xEDE4, 0x5E87, 0xDDE7, 0x5E8A, 0xDFC9,
+	0x5E8F, 0xDFED, 0x5E95, 0xEEBC, 0x5E97, 0xEFC1, 0x5E9A, 0xCCD2,
+	0x5E9C, 0xDDA4, 0x5EA0, 0xDFCA, 0x5EA6, 0xD3F8, 0x5EA7, 0xF1A8,
+	0x5EAB, 0xCDB7, 0x5EAD, 0xEFD4, 0x5EB5, 0xE4DD, 0x5EB6, 0xDFEE,
+	0x5EB7, 0xCBAC, 0x5EB8, 0xE9BC, 0x5EBE, 0xEAEC, 0x5EC2, 0xDFCB,
+	0x5EC8, 0xF9BF, 0x5EC9, 0xD6AF, 0x5ECA, 0xD5C6, 0x5ED0, 0xCFAA,
+	0x5ED3, 0xCEA9, 0x5ED6, 0xD6F8, 0x5EDA, 0xF1B7, 0x5EDB, 0xEEF8,
+	0x5EDF, 0xD9D9, 0x5EE0, 0xF3DF, 0x5EE2, 0xF8C8, 0x5EE3, 0xCEC6,
+	0x5EEC, 0xD5E6, 0x5EF3, 0xF4E6, 0x5EF6, 0xE6C5, 0x5EF7, 0xEFD5,
+	0x5EFA, 0xCBEF, 0x5EFB, 0xFCDF, 0x5F01, 0xDCA7, 0x5F04, 0xD6E7,
+	0x5F0A, 0xF8C9, 0x5F0F, 0xE3D2, 0x5F11, 0xE3BD, 0x5F13, 0xCFE1,
+	0x5F14, 0xF0C0, 0x5F15, 0xECDA, 0x5F17, 0xDDD7, 0x5F18, 0xFBF0,
+	0x5F1B, 0xECAC, 0x5F1F, 0xF0A9, 0x5F26, 0xFAD7, 0x5F27, 0xFBC1,
+	0x5F29, 0xD2C0, 0x5F31, 0xE5B0, 0x5F35, 0xEDE5, 0x5F3A, 0xCBAD,
+	0x5F3C, 0xF9B0, 0x5F48, 0xF7A5, 0x5F4A, 0xCBAE, 0x5F4C, 0xDAAF,
+	0x5F4E, 0xD8B6, 0x5F56, 0xD3A7, 0x5F57, 0xFBB2, 0x5F59, 0xFDC4,
+	0x5F5B, 0xECAD, 0x5F62, 0xFBA1, 0x5F66, 0xE5E9, 0x5F67, 0xE9EE,
+	0x5F69, 0xF3F4, 0x5F6A, 0xF8F3, 0x5F6B, 0xF0C1, 0x5F6C, 0xDEAF,
+	0x5F6D, 0xF8B0, 0x5F70, 0xF3E0, 0x5F71, 0xE7AF, 0x5F77, 0xDBAD,
+	0x5F79, 0xE6B5, 0x5F7C, 0xF9A8, 0x5F7F, 0xDDD8, 0x5F80, 0xE8D9,
+	0x5F81, 0xEFD6, 0x5F85, 0xD3E2, 0x5F87, 0xE2DF, 0x5F8A, 0xFCE0,
+	0x5F8B, 0xD7C8, 0x5F8C, 0xFDAD, 0x5F90, 0xDFEF, 0x5F91, 0xCCD3,
+	0x5F92, 0xD3F9, 0x5F97, 0xD4F0, 0x5F98, 0xDBC7, 0x5F99, 0xDED5,
+	0x5F9E, 0xF0F4, 0x5FA0, 0xD5D0, 0x5FA1, 0xE5D9, 0x5FA8, 0xFCC7,
+	0x5FA9, 0xDCD6, 0x5FAA, 0xE2E0, 0x5FAE, 0xDAB0, 0x5FB5, 0xF3A3,
+	0x5FB7, 0xD3EC, 0x5FB9, 0xF4CB, 0x5FBD, 0xFDC5, 0x5FC3, 0xE3FD,
+	0x5FC5, 0xF9B1, 0x5FCC, 0xD0FB, 0x5FCD, 0xECDB, 0x5FD6, 0xF5BC,
+	0x5FD7, 0xF2A4, 0x5FD8, 0xD8CE, 0x5FD9, 0xD8CF, 0x5FE0, 0xF5F7,
+	0x5FEB, 0xF6E1, 0x5FF5, 0xD2B7, 0x5FFD, 0xFBEC, 0x5FFF, 0xDDC8,
+	0x600F, 0xE4E8, 0x6012, 0xD2C1, 0x6016, 0xF8D7, 0x601C, 0xD6BB,
+	0x601D, 0xDED6, 0x6020, 0xF7BD, 0x6021, 0xECAE, 0x6025, 0xD0E1,
+	0x6027, 0xE0F5, 0x6028, 0xEAB3, 0x602A, 0xCED6, 0x602F, 0xCCA5,
+	0x6041, 0xECF6, 0x6042, 0xE2E1, 0x6043, 0xE3BE, 0x604D, 0xFCC8,
+	0x6050, 0xCDF0, 0x6052, 0xF9F6, 0x6055, 0xDFF0, 0x6059, 0xE5BF,
+	0x605D, 0xCEBF, 0x6062, 0xFCE1, 0x6063, 0xEDB0, 0x6064, 0xFDD1,
+	0x6065, 0xF6BB, 0x6068, 0xF9CF, 0x6069, 0xEBDA, 0x606A, 0xCAC1,
+	0x606C, 0xD2B8, 0x606D, 0xCDF1, 0x606F, 0xE3D3, 0x6070, 0xFDE6,
+	0x6085, 0xE6ED, 0x6089, 0xE3FA, 0x608C, 0xF0AA, 0x608D, 0xF9D0,
+	0x6094, 0xFCE2, 0x6096, 0xF8A7, 0x609A, 0xE1E5, 0x609B, 0xEEF9,
+	0x609F, 0xE7F6, 0x60A0, 0xEAED, 0x60A3, 0xFCB4, 0x60A4, 0xF5C2,
+	0x60A7, 0xD7DC, 0x60B0, 0xF0F5, 0x60B2, 0xDDE8, 0x60B3, 0xD3ED,
+	0x60B4, 0xF5FC, 0x60B6, 0xDABF, 0x60B8, 0xCCFB, 0x60BC, 0xD3FA,
+	0x60BD, 0xF4A4, 0x60C5, 0xEFD7, 0x60C7, 0xD4C3, 0x60D1, 0xFBE3,
+	0x60DA, 0xFBED, 0x60DC, 0xE0AD, 0x60DF, 0xEAEE, 0x60E0, 0xFBB3,
+	0x60E1, 0xE4C2, 0x60F0, 0xF6E7, 0x60F1, 0xD2DD, 0x60F3, 0xDFCC,
+	0x60F6, 0xFCC9, 0x60F9, 0xE5A9, 0x60FA, 0xE0F6, 0x60FB, 0xF6B3,
+	0x6101, 0xE1FE, 0x6106, 0xCBF0, 0x6108, 0xEAEF, 0x6109, 0xEAF0,
+	0x610D, 0xDAC0, 0x610E, 0xF8B4, 0x610F, 0xEBF2, 0x6115, 0xE4C3,
+	0x611A, 0xE9D7, 0x611B, 0xE4F1, 0x611F, 0xCAEF, 0x6127, 0xCED7,
+	0x6130, 0xFCCA, 0x6134, 0xF3E1, 0x6137, 0xCBC4, 0x613C, 0xE3E5,
+	0x613E, 0xCBC5, 0x613F, 0xEAB4, 0x6142, 0xE9BD, 0x6144, 0xD7C9,
+	0x6147, 0xEBDB, 0x6148, 0xEDB1, 0x614A, 0xCCC3, 0x614B, 0xF7BE,
+	0x614C, 0xFCCB, 0x6153, 0xF8F4, 0x6155, 0xD9B7, 0x6158, 0xF3D3,
+	0x6159, 0xF3D4, 0x615D, 0xF7E4, 0x615F, 0xF7D1, 0x6162, 0xD8B7,
+	0x6163, 0xCEB1, 0x6164, 0xCAC2, 0x6167, 0xFBB4, 0x6168, 0xCBC6,
+	0x616B, 0xF0F6, 0x616E, 0xD5E7, 0x6170, 0xEAD0, 0x6176, 0xCCD4,
+	0x6177, 0xCBAF, 0x617D, 0xF4AA, 0x617E, 0xE9AF, 0x6181, 0xF5C3,
+	0x6182, 0xE9D8, 0x618A, 0xDDE9, 0x618E, 0xF1F3, 0x6190, 0xD5FB,
+	0x6191, 0xDEBB, 0x6194, 0xF4FB, 0x6198, 0xFDF3, 0x6199, 0xFDF2,
+	0x619A, 0xF7A6, 0x61A4, 0xDDC9, 0x61A7, 0xD4D3, 0x61A9, 0xCCA8,
+	0x61AB, 0xDAC1, 0x61AC, 0xCCD5, 0x61AE, 0xD9E4, 0x61B2, 0xFACA,
+	0x61B6, 0xE5E3, 0x61BA, 0xD3BC, 0x61BE, 0xCAF0, 0x61C3, 0xD0C4,
+	0x61C7, 0xCAD0, 0x61C8, 0xFAAB, 0x61C9, 0xEBEB, 0x61CA, 0xE7F8,
+	0x61CB, 0xD9E5, 0x61E6, 0xD1D7, 0x61F2, 0xF3A4, 0x61F6, 0xD4FB,
+	0x61F7, 0xFCE3, 0x61F8, 0xFAD8, 0x61FA, 0xF3D5, 0x61FC, 0xCFAB,
+	0x61FF, 0xEBF3, 0x6200, 0xD5FC, 0x6207, 0xD3D4, 0x6208, 0xCDFC,
+	0x620A, 0xD9E6, 0x620C, 0xE2F9, 0x620D, 0xE2A1, 0x620E, 0xEBD4,
+	0x6210, 0xE0F7, 0x6211, 0xE4B2, 0x6212, 0xCCFC, 0x6216, 0xFBE4,
+	0x621A, 0xF4AB, 0x621F, 0xD0BD, 0x6221, 0xCAF1, 0x622A, 0xEFB8,
+	0x622E, 0xD7C0, 0x6230, 0xEEFA, 0x6231, 0xFDF4, 0x6234, 0xD3E3,
+	0x6236, 0xFBC2, 0x623E, 0xD5E8, 0x623F, 0xDBAE, 0x6240, 0xE1B6,
+	0x6241, 0xF8B7, 0x6247, 0xE0BF, 0x6248, 0xFBC3, 0x6249, 0xDDEA,
+	0x624B, 0xE2A2, 0x624D, 0xEEA6, 0x6253, 0xF6E8, 0x6258, 0xF6F5,
+	0x626E, 0xDDCA, 0x6271, 0xD0E2, 0x6276, 0xDDA6, 0x6279, 0xDDEB,
+	0x627C, 0xE4F9, 0x627F, 0xE3AF, 0x6280, 0xD0FC, 0x6284, 0xF4FC,
+	0x6289, 0xCCBC, 0x628A, 0xF7EA, 0x6291, 0xE5E4, 0x6292, 0xDFF1,
+	0x6295, 0xF7E1, 0x6297, 0xF9F7, 0x6298, 0xEFB9, 0x629B, 0xF8D8,
+	0x62AB, 0xF9A9, 0x62B1, 0xF8D9, 0x62B5, 0xEEBD, 0x62B9, 0xD8C6,
+	0x62BC, 0xE4E3, 0x62BD, 0xF5CE, 0x62C2, 0xDDD9, 0x62C7, 0xD9E7,
+	0x62C8, 0xD2B9, 0x62C9, 0xD5C3, 0x62CC, 0xDAE5, 0x62CD, 0xDAD0,
+	0x62CF, 0xD1D9, 0x62D0, 0xCED8, 0x62D2, 0xCBDE, 0x62D3, 0xF4AC,
+	0x62D4, 0xDAFB, 0x62D6, 0xF6E9, 0x62D7, 0xE8F3, 0x62D8, 0xCFAC,
+	0x62D9, 0xF0F0, 0x62DB, 0xF4FD, 0x62DC, 0xDBC8, 0x62EC, 0xCEC0,
+	0x62ED, 0xE3D4, 0x62EE, 0xD1CF, 0x62EF, 0xF1F5, 0x62F1, 0xCDF2,
+	0x62F3, 0xCFEB, 0x62F7, 0xCDB8, 0x62FE, 0xE3A6, 0x62FF, 0xD1DA,
+	0x6301, 0xF2A5, 0x6307, 0xF2A6, 0x6309, 0xE4CE, 0x6311, 0xD3FB,
+	0x632B, 0xF1A9, 0x632F, 0xF2C9, 0x633A, 0xEFD8, 0x633B, 0xE6C9,
+	0x633D, 0xD8B8, 0x633E, 0xFAF3, 0x6349, 0xF3B5, 0x634C, 0xF8A4,
+	0x634F, 0xD1F3, 0x6350, 0xE6C8, 0x6355, 0xF8DA, 0x6367, 0xDCE9,
+	0x6368, 0xDED7, 0x636E, 0xCBDF, 0x6372, 0xCFEC, 0x6377, 0xF4DF,
+	0x637A, 0xD1F4, 0x637B, 0xD2BA, 0x637F, 0xDFF2, 0x6383, 0xE1B7,
+	0x6388, 0xE2A3, 0x6389, 0xD3FC, 0x638C, 0xEDE6, 0x6392, 0xDBC9,
+	0x6396, 0xE4FA, 0x6398, 0xCFDE, 0x639B, 0xCED0, 0x63A0, 0xD5D3,
+	0x63A1, 0xF3F5, 0x63A2, 0xF7AE, 0x63A5, 0xEFC8, 0x63A7, 0xCDF3,
+	0x63A8, 0xF5CF, 0x63A9, 0xE5F3, 0x63AA, 0xF0C2, 0x63C0, 0xCAD1,
+	0x63C4, 0xEAF1, 0x63C6, 0xD0A6, 0x63CF, 0xD9DA, 0x63D0, 0xF0AB,
+	0x63D6, 0xEBE7, 0x63DA, 0xE5C0, 0x63DB, 0xFCB5, 0x63E1, 0xE4C4,
+	0x63ED, 0xCCA9, 0x63EE, 0xFDC6, 0x63F4, 0xEAB5, 0x63F6, 0xE5AA,
+	0x63F7, 0xDFBA, 0x640D, 0xE1DF, 0x640F, 0xDAD1, 0x6414, 0xE1B8,
+	0x6416, 0xE8F4, 0x6417, 0xD3FD, 0x641C, 0xE2A4, 0x6422, 0xF2CA,
+	0x642C, 0xDAE6, 0x642D, 0xF7B3, 0x643A, 0xFDCD, 0x643E, 0xF3B6,
+	0x6458, 0xEED7, 0x6460, 0xF5C4, 0x6469, 0xD8A4, 0x646F, 0xF2A7,
+	0x6478, 0xD9B8, 0x6479, 0xD9B9, 0x647A, 0xEFC9, 0x6488, 0xD6CE,
+	0x6491, 0xF7CB, 0x6492, 0xDFAE, 0x6493, 0xE8F5, 0x649A, 0xD2B5,
+	0x649E, 0xD3D5, 0x64A4, 0xF4CC, 0x64A5, 0xDAFC, 0x64AB, 0xD9E8,
+	0x64AD, 0xF7EB, 0x64AE, 0xF5C9, 0x64B0, 0xF3BC, 0x64B2, 0xDAD2,
+	0x64BB, 0xD3B5, 0x64C1, 0xE8B6, 0x64C4, 0xD6CF, 0x64C5, 0xF4BA,
+	0x64C7, 0xF7C9, 0x64CA, 0xCCAA, 0x64CD, 0xF0C3, 0x64CE, 0xCCD6,
+	0x64D2, 0xD0D3, 0x64D4, 0xD3BD, 0x64D8, 0xDBFB, 0x64DA, 0xCBE0,
+	0x64E1, 0xD3E4, 0x64E2, 0xF6F7, 0x64E5, 0xD5BA, 0x64E6, 0xF3CD,
+	0x64E7, 0xCBE1, 0x64EC, 0xEBF4, 0x64F2, 0xF4AD, 0x64F4, 0xFCAA,
+	0x64FA, 0xF7EC, 0x64FE, 0xE8F6, 0x6500, 0xDAE7, 0x6504, 0xF7CC,
+	0x6518, 0xE5C1, 0x651D, 0xE0EE, 0x6523, 0xD5FD, 0x652A, 0xCEE6,
+	0x652B, 0xFCAB, 0x652C, 0xD5BB, 0x652F, 0xF2A8, 0x6536, 0xE2A5,
+	0x6537, 0xCDB9, 0x6538, 0xEAF2, 0x6539, 0xCBC7, 0x653B, 0xCDF4,
+	0x653E, 0xDBAF, 0x653F, 0xEFD9, 0x6545, 0xCDBA, 0x6548, 0xFCF9,
+	0x654D, 0xDFF3, 0x654E, 0xCEE7, 0x654F, 0xDAC2, 0x6551, 0xCFAD,
+	0x6556, 0xE7F9, 0x6557, 0xF8A8, 0x655E, 0xF3E2, 0x6562, 0xCAF2,
+	0x6563, 0xDFA4, 0x6566, 0xD4C4, 0x656C, 0xCCD7, 0x656D, 0xE5C2,
+	0x6572, 0xCDBB, 0x6574, 0xEFDA, 0x6575, 0xEED8, 0x6577, 0xDDA7,
+	0x6578, 0xE2A6, 0x657E, 0xE0C0, 0x6582, 0xD6B0, 0x6583, 0xF8CA,
+	0x6585, 0xFCFA, 0x6587, 0xD9FE, 0x658C, 0xDEB0, 0x6590, 0xDDEC,
+	0x6591, 0xDAE8, 0x6597, 0xD4E0, 0x6599, 0xD6F9, 0x659B, 0xCDD7,
+	0x659C, 0xDED8, 0x659F, 0xF2F8, 0x65A1, 0xE4D6, 0x65A4, 0xD0C5,
+	0x65A5, 0xF4AE, 0x65A7, 0xDDA8, 0x65AB, 0xEDC5, 0x65AC, 0xF3D6,
+	0x65AF, 0xDED9, 0x65B0, 0xE3E6, 0x65B7, 0xD3A8, 0x65B9, 0xDBB0,
+	0x65BC, 0xE5DA, 0x65BD, 0xE3BF, 0x65C1, 0xDBB1, 0x65C5, 0xD5E9,
+	0x65CB, 0xE0C1, 0x65CC, 0xEFDB, 0x65CF, 0xF0E9, 0x65D2, 0xD7B2,
+	0x65D7, 0xD0FD, 0x65E0, 0xD9E9, 0x65E3, 0xD0FE, 0x65E5, 0xECED,
+	0x65E6, 0xD3A9, 0x65E8, 0xF2A9, 0x65E9, 0xF0C4, 0x65EC, 0xE2E2,
+	0x65ED, 0xE9EF, 0x65F1, 0xF9D1, 0x65F4, 0xE9D9, 0x65FA, 0xE8DA,
+	0x65FB, 0xDAC3, 0x65FC, 0xDAC4, 0x65FD, 0xD4C5, 0x65FF, 0xE7FA,
+	0x6606, 0xCDE0, 0x6607, 0xE3B0, 0x6609, 0xDBB2, 0x660A, 0xFBC4,
+	0x660C, 0xF3E3, 0x660E, 0xD9A5, 0x660F, 0xFBE7, 0x6610, 0xDDCB,
+	0x6611, 0xD0D4, 0x6613, 0xE6B6, 0x6614, 0xE0AE, 0x6615, 0xFDDA,
+	0x661E, 0xDCB5, 0x661F, 0xE0F8, 0x6620, 0xE7B1, 0x6625, 0xF5F0,
+	0x6627, 0xD8DC, 0x6628, 0xEDC6, 0x662D, 0xE1B9, 0x662F, 0xE3C0,
+	0x6630, 0xF9C0, 0x6631, 0xE9F0, 0x6634, 0xD9DB, 0x6636, 0xF3E4,
+	0x663A, 0xDCB6, 0x663B, 0xE4E9, 0x6641, 0xF0C5, 0x6642, 0xE3C1,
+	0x6643, 0xFCCC, 0x6644, 0xFCCD, 0x6649, 0xF2CB, 0x664B, 0xF2CC,
+	0x664F, 0xE4CF, 0x6659, 0xF1DB, 0x665B, 0xFAD9, 0x665D, 0xF1B8,
+	0x665E, 0xFDF5, 0x665F, 0xE0F9, 0x6664, 0xE7FB, 0x6665, 0xFCB7,
+	0x6666, 0xFCE4, 0x6667, 0xFBC5, 0x6668, 0xE3E7, 0x6669, 0xD8B9,
+	0x666B, 0xF6F8, 0x666E, 0xDCC5, 0x666F, 0xCCD8, 0x6673, 0xE0AF,
+	0x6674, 0xF4E7, 0x6676, 0xEFDC, 0x6677, 0xCFFC, 0x6678, 0xEFDD,
+	0x667A, 0xF2AA, 0x6684, 0xFDBE, 0x6687, 0xCAAC, 0x6688, 0xFDBB,
+	0x6689, 0xFDC7, 0x668E, 0xE7B2, 0x6690, 0xEAD1, 0x6691, 0xDFF4,
+	0x6696, 0xD1EC, 0x6697, 0xE4DE, 0x6698, 0xE5C3, 0x669D, 0xD9A6,
+	0x66A0, 0xCDBC, 0x66A2, 0xF3E5, 0x66AB, 0xEDD5, 0x66AE, 0xD9BA,
+	0x66B2, 0xEDE7, 0x66B3, 0xFBB5, 0x66B4, 0xF8EC, 0x66B9, 0xE0E7,
+	0x66BB, 0xCCD9, 0x66BE, 0xD4C6, 0x66C4, 0xE7A5, 0x66C6, 0xD5F5,
+	0x66C7, 0xD3BE, 0x66C9, 0xFCFB, 0x66D6, 0xE4F2, 0x66D9, 0xDFF5,
+	0x66DC, 0xE8F8, 0x66DD, 0xF8ED, 0x66E0, 0xCEC7, 0x66E6, 0xFDF6,
+	0x66F0, 0xE8D8, 0x66F2, 0xCDD8, 0x66F3, 0xE7D6, 0x66F4, 0xCCDA,
+	0x66F7, 0xCAE3, 0x66F8, 0xDFF6, 0x66F9, 0xF0C7, 0x66FA, 0xF0C6,
+	0x66FC, 0xD8BA, 0x66FE, 0xF1F4, 0x66FF, 0xF4F0, 0x6700, 0xF5CC,
+	0x6703, 0xFCE5, 0x6708, 0xEAC5, 0x6709, 0xEAF3, 0x670B, 0xDDDB,
+	0x670D, 0xDCD7, 0x6714, 0xDEFD, 0x6715, 0xF2F9, 0x6717, 0xD5C7,
+	0x671B, 0xD8D0, 0x671D, 0xF0C8, 0x671E, 0xD1A1, 0x671F, 0xD1A2,
+	0x6726, 0xD9D4, 0x6727, 0xD6E8, 0x6728, 0xD9CA, 0x672A, 0xDAB1,
+	0x672B, 0xD8C7, 0x672C, 0xDCE2, 0x672D, 0xF3CE, 0x672E, 0xF5F4,
+	0x6731, 0xF1B9, 0x6734, 0xDAD3, 0x6736, 0xF6EA, 0x673A, 0xCFF5,
+	0x673D, 0xFDAE, 0x6746, 0xCAD2, 0x6749, 0xDFB4, 0x674E, 0xD7DD,
+	0x674F, 0xFABA, 0x6750, 0xEEA7, 0x6751, 0xF5BD, 0x6753, 0xF8F5,
+	0x6756, 0xEDE8, 0x675C, 0xD4E1, 0x675E, 0xD1A3, 0x675F, 0xE1D6,
+	0x676D, 0xF9F8, 0x676F, 0xDBCA, 0x6770, 0xCBF9, 0x6771, 0xD4D4,
+	0x6773, 0xD9DC, 0x6775, 0xEEBE, 0x6777, 0xF7ED, 0x677B, 0xD2EE,
+	0x677E, 0xE1E6, 0x677F, 0xF7F9, 0x6787, 0xDDED, 0x6789, 0xE8DB,
+	0x678B, 0xDBB3, 0x678F, 0xD1F7, 0x6790, 0xE0B0, 0x6793, 0xD4E2,
+	0x6795, 0xF6D7, 0x6797, 0xD7F9, 0x679A, 0xD8DD, 0x679C, 0xCDFD,
+	0x679D, 0xF2AB, 0x67AF, 0xCDBD, 0x67B0, 0xF8C2, 0x67B3, 0xF2AC,
+	0x67B6, 0xCAAD, 0x67B7, 0xCAAE, 0x67B8, 0xCFAE, 0x67BE, 0xE3C2,
+	0x67C4, 0xDCB7, 0x67CF, 0xDBDA, 0x67D0, 0xD9BB, 0x67D1, 0xCAF3,
+	0x67D2, 0xF6D3, 0x67D3, 0xE6F8, 0x67D4, 0xEAF5, 0x67DA, 0xEAF6,
+	0x67DD, 0xF6F9, 0x67E9, 0xCFAF, 0x67EC, 0xCAD3, 0x67EF, 0xCAAF,
+	0x67F0, 0xD2B0, 0x67F1, 0xF1BA, 0x67F3, 0xD7B3, 0x67F4, 0xE3C3,
+	0x67F5, 0xF3FD, 0x67F6, 0xDEDA, 0x67FB, 0xDEDB, 0x67FE, 0xEFDE,
+	0x6812, 0xE2E3, 0x6813, 0xEEFB, 0x6816, 0xDFF7, 0x6817, 0xD7CA,
+	0x6821, 0xCEE8, 0x6822, 0xDBDB, 0x682A, 0xF1BB, 0x682F, 0xE9F1,
+	0x6838, 0xFAB7, 0x6839, 0xD0C6, 0x683C, 0xCCAB, 0x683D, 0xEEA8,
+	0x6840, 0xCBFA, 0x6841, 0xF9F9, 0x6842, 0xCCFD, 0x6843, 0xD3FE,
+	0x6848, 0xE4D0, 0x684E, 0xF2EE, 0x6850, 0xD4D5, 0x6851, 0xDFCD,
+	0x6853, 0xFCB8, 0x6854, 0xD1D0, 0x686D, 0xF2CD, 0x6876, 0xF7D2,
+	0x687F, 0xCAD4, 0x6881, 0xD5D9, 0x6885, 0xD8DE, 0x688F, 0xCDD9,
+	0x6893, 0xEEA9, 0x6894, 0xF6BC, 0x6897, 0xCCDB, 0x689D, 0xF0C9,
+	0x689F, 0xFCFC, 0x68A1, 0xE8C9, 0x68A2, 0xF4FE, 0x68A7, 0xE7FC,
+	0x68A8, 0xD7DE, 0x68AD, 0xDEDC, 0x68AF, 0xF0AC, 0x68B0, 0xCCFE,
+	0x68B1, 0xCDE1, 0x68B3, 0xE1BA, 0x68B5, 0xDBEF, 0x68B6, 0xDAB2,
+	0x68C4, 0xD1A5, 0x68C5, 0xDCB8, 0x68C9, 0xD8F6, 0x68CB, 0xD1A4,
+	0x68CD, 0xCDE2, 0x68D2, 0xDCEA, 0x68D5, 0xF0F7, 0x68D7, 0xF0CA,
+	0x68D8, 0xD0BE, 0x68DA, 0xDDDC, 0x68DF, 0xD4D6, 0x68E0, 0xD3D6,
+	0x68E7, 0xEDD0, 0x68E8, 0xCDA1, 0x68EE, 0xDFB5, 0x68F2, 0xDFF8,
+	0x68F9, 0xD4A1, 0x68FA, 0xCEB2, 0x6900, 0xE8CA, 0x6905, 0xEBF5,
+	0x690D, 0xE3D5, 0x690E, 0xF5D0, 0x6912, 0xF5A1, 0x6927, 0xD9A7,
+	0x6930, 0xE5AB, 0x693D, 0xE6CB, 0x693F, 0xF5F1, 0x694A, 0xE5C5,
+	0x6953, 0xF9A3, 0x6954, 0xE0DB, 0x6955, 0xF6EB, 0x6957, 0xCBF1,
+	0x6959, 0xD9EA, 0x695A, 0xF5A2, 0x695E, 0xD7D1, 0x6960, 0xD1F8,
+	0x6961, 0xEAF8, 0x6962, 0xEAF9, 0x6963, 0xDAB3, 0x6968, 0xEFDF,
+	0x696B, 0xF1EF, 0x696D, 0xE5F6, 0x696E, 0xEEBF, 0x696F, 0xE2E4,
+	0x6975, 0xD0BF, 0x6977, 0xFAAC, 0x6978, 0xF5D1, 0x6979, 0xE7B3,
+	0x6995, 0xE9BE, 0x699B, 0xF2CE, 0x699C, 0xDBB4, 0x69A5, 0xFCCE,
+	0x69A7, 0xDDEE, 0x69AE, 0xE7B4, 0x69B4, 0xD7B4, 0x69BB, 0xF7B4,
+	0x69C1, 0xCDBE, 0x69C3, 0xDAE9, 0x69CB, 0xCFB0, 0x69CC, 0xF7D9,
+	0x69CD, 0xF3E6, 0x69D0, 0xCED9, 0x69E8, 0xCEAA, 0x69EA, 0xCBC8,
+	0x69FB, 0xD0A7, 0x69FD, 0xF0CB, 0x69FF, 0xD0C7, 0x6A02, 0xE4C5,
+	0x6A0A, 0xDBE0, 0x6A11, 0xD5DA, 0x6A13, 0xD7A7, 0x6A17, 0xEEC0,
+	0x6A19, 0xF8F6, 0x6A1E, 0xF5D2, 0x6A1F, 0xEDE9, 0x6A21, 0xD9BC,
+	0x6A23, 0xE5C6, 0x6A35, 0xF5A3, 0x6A38, 0xDAD4, 0x6A39, 0xE2A7,
+	0x6A3A, 0xFBFC, 0x6A3D, 0xF1DC, 0x6A44, 0xCAF4, 0x6A48, 0xE8FA,
+	0x6A4B, 0xCEE9, 0x6A52, 0xE9F8, 0x6A53, 0xE2E5, 0x6A58, 0xD0B9,
+	0x6A59, 0xD4F2, 0x6A5F, 0xD1A6, 0x6A61, 0xDFCE, 0x6A6B, 0xFCF4,
+	0x6A80, 0xD3AA, 0x6A84, 0xCCAC, 0x6A89, 0xEFE0, 0x6A8D, 0xE5E5,
+	0x6A8E, 0xD0D5, 0x6A97, 0xDBFC, 0x6A9C, 0xFCE6, 0x6AA2, 0xCBFE,
+	0x6AA3, 0xEDEA, 0x6AB3, 0xDEB1, 0x6ABB, 0xF9E3, 0x6AC2, 0xD4A2,
+	0x6AC3, 0xCFF6, 0x6AD3, 0xD6D0, 0x6ADA, 0xD5EA, 0x6ADB, 0xF1EE,
+	0x6AF6, 0xFACB, 0x6AFB, 0xE5A1, 0x6B04, 0xD5B1, 0x6B0A, 0xCFED,
+	0x6B0C, 0xEDEB, 0x6B12, 0xD5B2, 0x6B16, 0xD5BC, 0x6B20, 0xFDE2,
+	0x6B21, 0xF3AD, 0x6B23, 0xFDDB, 0x6B32, 0xE9B0, 0x6B3A, 0xD1A7,
+	0x6B3D, 0xFDE3, 0x6B3E, 0xCEB3, 0x6B46, 0xFDE4, 0x6B47, 0xFACE,
+	0x6B4C, 0xCAB0, 0x6B4E, 0xF7A7, 0x6B50, 0xCFB1, 0x6B5F, 0xE6A2,
+	0x6B61, 0xFCB6, 0x6B62, 0xF2AD, 0x6B63, 0xEFE1, 0x6B64, 0xF3AE,
+	0x6B65, 0xDCC6, 0x6B66, 0xD9EB, 0x6B6A, 0xE8E0, 0x6B72, 0xE1A8,
+	0x6B77, 0xD5F6, 0x6B78, 0xCFFD, 0x6B7B, 0xDEDD, 0x6B7F, 0xD9D1,
+	0x6B83, 0xE4EA, 0x6B84, 0xF2CF, 0x6B86, 0xF7BF, 0x6B89, 0xE2E6,
+	0x6B8A, 0xE2A8, 0x6B96, 0xE3D6, 0x6B98, 0xEDD1, 0x6B9E, 0xE9F9,
+	0x6BAE, 0xD6B1, 0x6BAF, 0xDEB2, 0x6BB2, 0xE0E8, 0x6BB5, 0xD3AB,
+	0x6BB7, 0xEBDC, 0x6BBA, 0xDFAF, 0x6BBC, 0xCAC3, 0x6BBF, 0xEEFC,
+	0x6BC1, 0xFDC3, 0x6BC5, 0xEBF6, 0x6BC6, 0xCFB2, 0x6BCB, 0xD9EC,
+	0x6BCD, 0xD9BD, 0x6BCF, 0xD8DF, 0x6BD2, 0xD4B8, 0x6BD3, 0xEBBE,
+	0x6BD4, 0xDDEF, 0x6BD6, 0xDDF0, 0x6BD7, 0xDDF1, 0x6BD8, 0xDDF2,
+	0x6BDB, 0xD9BE, 0x6BEB, 0xFBC6, 0x6BEC, 0xCFB3, 0x6C08, 0xEEFD,
+	0x6C0F, 0xE4AB, 0x6C11, 0xDAC5, 0x6C13, 0xD8EC, 0x6C23, 0xD1A8,
+	0x6C34, 0xE2A9, 0x6C37, 0xDEBC, 0x6C38, 0xE7B5, 0x6C3E, 0xDBF0,
+	0x6C40, 0xEFE2, 0x6C41, 0xF1F0, 0x6C42, 0xCFB4, 0x6C4E, 0xDBF1,
+	0x6C50, 0xE0B1, 0x6C55, 0xDFA5, 0x6C57, 0xF9D2, 0x6C5A, 0xE7FD,
+	0x6C5D, 0xE6A3, 0x6C5E, 0xFBF1, 0x6C5F, 0xCBB0, 0x6C60, 0xF2AE,
+	0x6C68, 0xCDE7, 0x6C6A, 0xE8DC, 0x6C6D, 0xE7D7, 0x6C70, 0xF7C0,
+	0x6C72, 0xD0E3, 0x6C76, 0xDAA1, 0x6C7A, 0xCCBD, 0x6C7D, 0xD1A9,
+	0x6C7E, 0xDDCC, 0x6C81, 0xE3FE, 0x6C82, 0xD1AA, 0x6C83, 0xE8AA,
+	0x6C85, 0xEAB6, 0x6C86, 0xF9FA, 0x6C87, 0xE6CC, 0x6C88, 0xF6D8,
+	0x6C8C, 0xD4C7, 0x6C90, 0xD9CB, 0x6C92, 0xD9D2, 0x6C93, 0xD3CB,
+	0x6C94, 0xD8F7, 0x6C95, 0xDAA9, 0x6C96, 0xF5F8, 0x6C99, 0xDEDE,
+	0x6C9A, 0xF2AF, 0x6C9B, 0xF8A9, 0x6CAB, 0xD8C8, 0x6CAE, 0xEEC1,
+	0x6CB3, 0xF9C1, 0x6CB8, 0xDDF3, 0x6CB9, 0xEAFA, 0x6CBB, 0xF6BD,
+	0x6CBC, 0xE1BB, 0x6CBD, 0xCDBF, 0x6CBE, 0xF4D4, 0x6CBF, 0xE6CD,
+	0x6CC1, 0xFCCF, 0x6CC2, 0xFBA2, 0x6CC4, 0xE0DC, 0x6CC9, 0xF4BB,
+	0x6CCA, 0xDAD5, 0x6CCC, 0xF9B2, 0x6CD3, 0xFBF2, 0x6CD5, 0xDBF6,
+	0x6CD7, 0xDEDF, 0x6CDB, 0xDBF2, 0x6CE1, 0xF8DC, 0x6CE2, 0xF7EE,
+	0x6CE3, 0xEBE8, 0x6CE5, 0xD2FA, 0x6CE8, 0xF1BC, 0x6CEB, 0xFADA,
+	0x6CEE, 0xDAEA, 0x6CEF, 0xDAC6, 0x6CF0, 0xF7C1, 0x6CF3, 0xE7B6,
+	0x6D0B, 0xE5C7, 0x6D0C, 0xD6AC, 0x6D11, 0xDCC7, 0x6D17, 0xE1A9,
+	0x6D19, 0xE2AA, 0x6D1B, 0xD5A6, 0x6D1E, 0xD4D7, 0x6D25, 0xF2D0,
+	0x6D27, 0xEAFB, 0x6D29, 0xE0DD, 0x6D2A, 0xFBF3, 0x6D32, 0xF1BD,
+	0x6D35, 0xE2E7, 0x6D36, 0xFDD7, 0x6D38, 0xCEC8, 0x6D39, 0xEAB7,
+	0x6D3B, 0xFCC0, 0x6D3D, 0xFDE7, 0x6D3E, 0xF7EF, 0x6D41, 0xD7B5,
+	0x6D59, 0xEFBA, 0x6D5A, 0xF1DD, 0x6D5C, 0xDEB3, 0x6D63, 0xE8CB,
+	0x6D66, 0xF8DD, 0x6D69, 0xFBC7, 0x6D6A, 0xD5C8, 0x6D6C, 0xD7DF,
+	0x6D6E, 0xDDA9, 0x6D74, 0xE9B1, 0x6D77, 0xFAAD, 0x6D78, 0xF6D9,
+	0x6D79, 0xFAF4, 0x6D7F, 0xF8AA, 0x6D85, 0xE6EE, 0x6D87, 0xCCDC,
+	0x6D88, 0xE1BC, 0x6D89, 0xE0EF, 0x6D8C, 0xE9BF, 0x6D8D, 0xFCFD,
+	0x6D8E, 0xE6CE, 0x6D91, 0xE1D7, 0x6D93, 0xE6CF, 0x6D95, 0xF4F1,
+	0x6DAF, 0xE4F3, 0x6DB2, 0xE4FB, 0x6DB5, 0xF9E4, 0x6DC0, 0xEFE3,
+	0x6DC3, 0xCFEE, 0x6DC4, 0xF6BE, 0x6DC5, 0xE0B2, 0x6DC6, 0xFCFE,
+	0x6DC7, 0xD1AB, 0x6DCB, 0xD7FA, 0x6DCF, 0xFBC8, 0x6DD1, 0xE2D7,
+	0x6DD8, 0xD4A3, 0x6DD9, 0xF0F8, 0x6DDA, 0xD7A8, 0x6DDE, 0xE1E7,
+	0x6DE1, 0xD3BF, 0x6DE8, 0xEFE4, 0x6DEA, 0xD7C5, 0x6DEB, 0xEBE2,
+	0x6DEE, 0xFCE7, 0x6DF1, 0xE4A2, 0x6DF3, 0xE2E8, 0x6DF5, 0xE6D0,
+	0x6DF7, 0xFBE8, 0x6DF8, 0xF4E8, 0x6DF9, 0xE5F4, 0x6DFA, 0xF4BC,
+	0x6DFB, 0xF4D5, 0x6E17, 0xDFB6, 0x6E19, 0xFCB9, 0x6E1A, 0xEEC2,
+	0x6E1B, 0xCAF5, 0x6E1F, 0xEFE5, 0x6E20, 0xCBE2, 0x6E21, 0xD4A4,
+	0x6E23, 0xDEE0, 0x6E24, 0xDAFD, 0x6E25, 0xE4C6, 0x6E26, 0xE8BE,
+	0x6E2B, 0xE0DE, 0x6E2C, 0xF6B4, 0x6E2D, 0xEAD2, 0x6E2F, 0xF9FB,
+	0x6E32, 0xE0C2, 0x6E34, 0xCAE4, 0x6E36, 0xE7B7, 0x6E38, 0xEAFD,
+	0x6E3A, 0xD9DD, 0x6E3C, 0xDAB4, 0x6E3D, 0xEEAA, 0x6E3E, 0xFBE9,
+	0x6E43, 0xDBCB, 0x6E44, 0xDAB5, 0x6E4A, 0xF1BE, 0x6E4D, 0xD3AC,
+	0x6E56, 0xFBC9, 0x6E58, 0xDFCF, 0x6E5B, 0xD3C0, 0x6E5C, 0xE3D7,
+	0x6E5E, 0xEFE6, 0x6E5F, 0xFCD0, 0x6E67, 0xE9C0, 0x6E6B, 0xF5D3,
+	0x6E6E, 0xECDC, 0x6E6F, 0xF7B7, 0x6E72, 0xEAB8, 0x6E73, 0xD1F9,
+	0x6E7A, 0xDCC8, 0x6E90, 0xEAB9, 0x6E96, 0xF1DE, 0x6E9C, 0xD7B6,
+	0x6E9D, 0xCFB5, 0x6E9F, 0xD9A8, 0x6EA2, 0xECEE, 0x6EA5, 0xDDAA,
+	0x6EAA, 0xCDA2, 0x6EAB, 0xE8AE, 0x6EAF, 0xE1BD, 0x6EB1, 0xF2D1,
+	0x6EB6, 0xE9C1, 0x6EBA, 0xD2FC, 0x6EC2, 0xDBB5, 0x6EC4, 0xF3E7,
+	0x6EC5, 0xD8FE, 0x6EC9, 0xFCD1, 0x6ECB, 0xEDB2, 0x6ECC, 0xF4AF,
+	0x6ECE, 0xFBA3, 0x6ED1, 0xFCC1, 0x6ED3, 0xEEAB, 0x6ED4, 0xD4A5,
+	0x6EEF, 0xF4F2, 0x6EF4, 0xEED9, 0x6EF8, 0xFBCA, 0x6EFE, 0xCDE3,
+	0x6EFF, 0xD8BB, 0x6F01, 0xE5DB, 0x6F02, 0xF8F7, 0x6F06, 0xF6D4,
+	0x6F0F, 0xD7A9, 0x6F11, 0xCBC9, 0x6F14, 0xE6D1, 0x6F15, 0xF0CC,
+	0x6F20, 0xD8AE, 0x6F22, 0xF9D3, 0x6F23, 0xD5FE, 0x6F2B, 0xD8BC,
+	0x6F2C, 0xF2B0, 0x6F31, 0xE2AB, 0x6F32, 0xF3E8, 0x6F38, 0xEFC2,
+	0x6F3F, 0xEDEC, 0x6F41, 0xE7B8, 0x6F51, 0xDAFE, 0x6F54, 0xCCBE,
+	0x6F57, 0xF2FC, 0x6F58, 0xDAEB, 0x6F5A, 0xE2D8, 0x6F5B, 0xEDD6,
+	0x6F5E, 0xD6D1, 0x6F5F, 0xE0B3, 0x6F62, 0xFCD2, 0x6F64, 0xEBC8,
+	0x6F6D, 0xD3C1, 0x6F6E, 0xF0CD, 0x6F70, 0xCFF7, 0x6F7A, 0xEDD2,
+	0x6F7C, 0xD4D8, 0x6F7D, 0xDCC9, 0x6F7E, 0xD7F1, 0x6F81, 0xDFBB,
+	0x6F84, 0xF3A5, 0x6F88, 0xF4CD, 0x6F8D, 0xF1BF, 0x6F8E, 0xF8B1,
+	0x6F90, 0xE9FA, 0x6F94, 0xFBCB, 0x6F97, 0xCAD5, 0x6FA3, 0xF9D4,
+	0x6FA4, 0xF7CA, 0x6FA7, 0xD6C8, 0x6FAE, 0xFCE8, 0x6FAF, 0xF3BD,
+	0x6FB1, 0xEEFE, 0x6FB3, 0xE7FE, 0x6FB9, 0xD3C2, 0x6FBE, 0xD3B6,
+	0x6FC0, 0xCCAD, 0x6FC1, 0xF6FA, 0x6FC2, 0xD6B2, 0x6FC3, 0xD2D8,
+	0x6FCA, 0xE7D8, 0x6FD5, 0xE3A5, 0x6FDA, 0xE7B9, 0x6FDF, 0xF0AD,
+	0x6FE0, 0xFBCC, 0x6FE1, 0xEBA1, 0x6FE4, 0xD4A6, 0x6FE9, 0xFBCD,
+	0x6FEB, 0xD5BD, 0x6FEC, 0xF1DF, 0x6FEF, 0xF6FB, 0x6FF1, 0xDEB4,
+	0x6FFE, 0xD5EB, 0x7001, 0xE5C8, 0x7005, 0xFBA4, 0x7006, 0xD4B9,
+	0x7009, 0xDEE1, 0x700B, 0xE4A3, 0x700F, 0xD7B7, 0x7011, 0xF8EE,
+	0x7015, 0xDEB5, 0x7018, 0xD6D2, 0x701A, 0xF9D5, 0x701B, 0xE7BA,
+	0x701C, 0xEBD5, 0x701D, 0xD5F7, 0x701E, 0xEFE7, 0x701F, 0xE1BE,
+	0x7023, 0xFAAE, 0x7027, 0xD6E9, 0x7028, 0xD6EE, 0x702F, 0xE7BB,
+	0x7037, 0xECCB, 0x703E, 0xD5B3, 0x704C, 0xCEB4, 0x7050, 0xFBA5,
+	0x7051, 0xE1EE, 0x7058, 0xF7A8, 0x705D, 0xFBCE, 0x7063, 0xD8BD,
+	0x706B, 0xFBFD, 0x7070, 0xFCE9, 0x7078, 0xCFB6, 0x707C, 0xEDC7,
+	0x707D, 0xEEAC, 0x7085, 0xCCDD, 0x708A, 0xF6A7, 0x708E, 0xE6FA,
+	0x7092, 0xF5A4, 0x7098, 0xFDDC, 0x7099, 0xEDB3, 0x709A, 0xCEC9,
+	0x70A1, 0xEFE8, 0x70A4, 0xE1BF, 0x70AB, 0xFADB, 0x70AC, 0xCBE3,
+	0x70AD, 0xF7A9, 0x70AF, 0xFBA6, 0x70B3, 0xDCB9, 0x70B7, 0xF1C0,
+	0x70B8, 0xEDC8, 0x70B9, 0xEFC3, 0x70C8, 0xD6AD, 0x70CB, 0xFDCE,
+	0x70CF, 0xE8A1, 0x70D8, 0xFBF4, 0x70D9, 0xD5A7, 0x70DD, 0xF1F6,
+	0x70DF, 0xE6D3, 0x70F1, 0xCCDE, 0x70F9, 0xF8B2, 0x70FD, 0xDCEB,
+	0x7104, 0xFDB6, 0x7109, 0xE5EA, 0x710C, 0xF1E0, 0x7119, 0xDBCC,
+	0x711A, 0xDDCD, 0x711E, 0xD4C8, 0x7121, 0xD9ED, 0x7126, 0xF5A5,
+	0x7130, 0xE6FB, 0x7136, 0xE6D4, 0x7147, 0xFDC8, 0x7149, 0xD6A1,
+	0x714A, 0xFDBF, 0x714C, 0xFCD3, 0x714E, 0xEFA1, 0x7150, 0xE7BC,
+	0x7156, 0xD1EE, 0x7159, 0xE6D5, 0x715C, 0xE9F2, 0x715E, 0xDFB0,
+	0x7164, 0xD8E0, 0x7165, 0xFCBA, 0x7166, 0xFDAF, 0x7167, 0xF0CE,
+	0x7169, 0xDBE1, 0x716C, 0xE5C9, 0x716E, 0xEDB4, 0x717D, 0xE0C3,
+	0x7184, 0xE3D8, 0x7189, 0xE9FB, 0x718A, 0xEAA8, 0x718F, 0xFDB7,
+	0x7192, 0xFBA7, 0x7194, 0xE9C2, 0x7199, 0xFDF7, 0x719F, 0xE2D9,
+	0x71A2, 0xDCEC, 0x71AC, 0xE8A2, 0x71B1, 0xE6F0, 0x71B9, 0xFDF8,
+	0x71BA, 0xFDF9, 0x71BE, 0xF6BF, 0x71C1, 0xE7A7, 0x71C3, 0xE6D7,
+	0x71C8, 0xD4F3, 0x71C9, 0xD4C9, 0x71CE, 0xD6FA, 0x71D0, 0xD7F2,
+	0x71D2, 0xE1C0, 0x71D4, 0xDBE2, 0x71D5, 0xE6D8, 0x71DF, 0xE7BD,
+	0x71E5, 0xF0CF, 0x71E6, 0xF3BE, 0x71E7, 0xE2AC, 0x71ED, 0xF5B7,
+	0x71EE, 0xE0F0, 0x71FB, 0xFDB8, 0x71FC, 0xE3E8, 0x71FE, 0xD4A7,
+	0x71FF, 0xE8FC, 0x7200, 0xFAD2, 0x7206, 0xF8EF, 0x7210, 0xD6D3,
+	0x721B, 0xD5B4, 0x722A, 0xF0D0, 0x722C, 0xF7F0, 0x722D, 0xEEB3,
+	0x7230, 0xEABA, 0x7232, 0xEAD3, 0x7235, 0xEDC9, 0x7236, 0xDDAB,
+	0x723A, 0xE5AC, 0x723B, 0xFDA1, 0x723D, 0xDFD0, 0x723E, 0xECB3,
+	0x7240, 0xDFD1, 0x7246, 0xEDED, 0x7247, 0xF8B8, 0x7248, 0xF7FA,
+	0x724C, 0xF8AB, 0x7252, 0xF4E0, 0x7258, 0xD4BA, 0x7259, 0xE4B3,
+	0x725B, 0xE9DA, 0x725D, 0xDEB6, 0x725F, 0xD9BF, 0x7261, 0xD9C0,
+	0x7262, 0xD6EF, 0x7267, 0xD9CC, 0x7269, 0xDAAA, 0x7272, 0xDFE5,
+	0x7279, 0xF7E5, 0x727D, 0xCCB2, 0x7280, 0xDFF9, 0x7281, 0xD7E0,
+	0x72A2, 0xD4BB, 0x72A7, 0xFDFA, 0x72AC, 0xCCB3, 0x72AF, 0xDBF3,
+	0x72C0, 0xDFD2, 0x72C2, 0xCECA, 0x72C4, 0xEEDA, 0x72CE, 0xE4E4,
+	0x72D0, 0xFBCF, 0x72D7, 0xCFB7, 0x72D9, 0xEEC3, 0x72E1, 0xCEEA,
+	0x72E9, 0xE2AD, 0x72F8, 0xD7E1, 0x72F9, 0xFAF5, 0x72FC, 0xD5C9,
+	0x72FD, 0xF8AC, 0x730A, 0xE7D9, 0x7316, 0xF3E9, 0x731B, 0xD8ED,
+	0x731C, 0xE3C4, 0x731D, 0xF0F1, 0x7325, 0xE8E5, 0x7329, 0xE0FA,
+	0x732A, 0xEEC4, 0x732B, 0xD9DE, 0x7336, 0xEBA2, 0x7337, 0xEBA3,
+	0x733E, 0xFCC2, 0x733F, 0xEABB, 0x7344, 0xE8AB, 0x7345, 0xDEE2,
+	0x7350, 0xEDEF, 0x7352, 0xE8A3, 0x7357, 0xCFF1, 0x7368, 0xD4BC,
+	0x736A, 0xFCEA, 0x7370, 0xE7BE, 0x7372, 0xFCF2, 0x7375, 0xD6B4,
+	0x7378, 0xE2AE, 0x737A, 0xD3B7, 0x737B, 0xFACC, 0x7384, 0xFADC,
+	0x7386, 0xEDB5, 0x7387, 0xE1E3, 0x7389, 0xE8AC, 0x738B, 0xE8DD,
+	0x738E, 0xEFE9, 0x7394, 0xF4BD, 0x7396, 0xCFB8, 0x7397, 0xE9DB,
+	0x7398, 0xD1AC, 0x739F, 0xDAC7, 0x73A7, 0xEBC9, 0x73A9, 0xE8CC,
+	0x73AD, 0xDEB7, 0x73B2, 0xD6BC, 0x73B3, 0xD3E5, 0x73B9, 0xFADD,
+	0x73C0, 0xDAD6, 0x73C2, 0xCAB1, 0x73C9, 0xDAC8, 0x73CA, 0xDFA6,
+	0x73CC, 0xF9B3, 0x73CD, 0xF2D2, 0x73CF, 0xCAC4, 0x73D6, 0xCECB,
+	0x73D9, 0xCDF5, 0x73DD, 0xFDB0, 0x73DE, 0xD5A8, 0x73E0, 0xF1C1,
+	0x73E3, 0xE2E9, 0x73E4, 0xDCCA, 0x73E5, 0xECB4, 0x73E6, 0xFAC0,
+	0x73E9, 0xFBA8, 0x73EA, 0xD0A8, 0x73ED, 0xDAEC, 0x73F7, 0xD9EE,
+	0x73F9, 0xE0FB, 0x73FD, 0xEFEA, 0x73FE, 0xFADE, 0x7401, 0xE0C4,
+	0x7403, 0xCFB9, 0x7405, 0xD5CA, 0x7406, 0xD7E2, 0x7407, 0xE2AF,
+	0x7409, 0xD7B8, 0x7413, 0xE8CD, 0x741B, 0xF6DA, 0x7420, 0xEFA2,
+	0x7421, 0xE2DA, 0x7422, 0xF6FC, 0x7425, 0xFBD0, 0x7426, 0xD1AD,
+	0x7428, 0xCDE4, 0x742A, 0xD1AE, 0x742B, 0xDCED, 0x742C, 0xE8CE,
+	0x742E, 0xF0F9, 0x742F, 0xCEB5, 0x7430, 0xE6FC, 0x7433, 0xD7FB,
+	0x7434, 0xD0D6, 0x7435, 0xDDF5, 0x7436, 0xF7F1, 0x7438, 0xF6FD,
+	0x743A, 0xDBF7, 0x743F, 0xFBEA, 0x7440, 0xE9DC, 0x7441, 0xD9C1,
+	0x7443, 0xF5F2, 0x7444, 0xE0C5, 0x744B, 0xEAD4, 0x7455, 0xF9C2,
+	0x7457, 0xEABC, 0x7459, 0xD2C5, 0x745A, 0xFBD1, 0x745B, 0xE7C0,
+	0x745C, 0xEBA5, 0x745E, 0xDFFA, 0x745F, 0xE3A2, 0x7460, 0xD7B9,
+	0x7462, 0xE9C3, 0x7464, 0xE8FD, 0x7465, 0xE8AF, 0x7468, 0xF2D3,
+	0x7469, 0xFBA9, 0x746A, 0xD8A5, 0x746F, 0xD5CB, 0x747E, 0xD0C8,
+	0x7482, 0xD1AF, 0x7483, 0xD7E3, 0x7487, 0xE0C6, 0x7489, 0xD6A2,
+	0x748B, 0xEDF0, 0x7498, 0xD7F3, 0x749C, 0xFCD4, 0x749E, 0xDAD7,
+	0x749F, 0xCCDF, 0x74A1, 0xF2D4, 0x74A3, 0xD1B0, 0x74A5, 0xCCE0,
+	0x74A7, 0xDBFD, 0x74A8, 0xF3BF, 0x74AA, 0xF0D1, 0x74B0, 0xFCBB,
+	0x74B2, 0xE2B0, 0x74B5, 0xE6A5, 0x74B9, 0xE2DB, 0x74BD, 0xDFDE,
+	0x74BF, 0xE0C7, 0x74C6, 0xF2EF, 0x74CA, 0xCCE1, 0x74CF, 0xD6EA,
+	0x74D4, 0xE7C2, 0x74D8, 0xCEB6, 0x74DA, 0xF3C0, 0x74DC, 0xCDFE,
+	0x74E0, 0xFBD2, 0x74E2, 0xF8F8, 0x74E3, 0xF7FB, 0x74E6, 0xE8BF,
+	0x74EE, 0xE8B7, 0x74F7, 0xEDB6, 0x7501, 0xDCBA, 0x7504, 0xCCB4,
+	0x7511, 0xF1F7, 0x7515, 0xE8B8, 0x7518, 0xCAF6, 0x751A, 0xE4A4,
+	0x751B, 0xF4D6, 0x751F, 0xDFE6, 0x7523, 0xDFA7, 0x7525, 0xDFE7,
+	0x7526, 0xE1C1, 0x7528, 0xE9C4, 0x752B, 0xDCCB, 0x752C, 0xE9C5,
+	0x7530, 0xEFA3, 0x7531, 0xEBA6, 0x7532, 0xCBA3, 0x7533, 0xE3E9,
+	0x7537, 0xD1FB, 0x7538, 0xEFA4, 0x753A, 0xEFEB, 0x7547, 0xD0B4,
+	0x754C, 0xCDA3, 0x754F, 0xE8E6, 0x7551, 0xEFA5, 0x7553, 0xD3CC,
+	0x7554, 0xDAED, 0x7559, 0xD7BA, 0x755B, 0xF2D5, 0x755C, 0xF5E5,
+	0x755D, 0xD9EF, 0x7562, 0xF9B4, 0x7565, 0xD5D4, 0x7566, 0xFDCF,
+	0x756A, 0xDBE3, 0x756F, 0xF1E1, 0x7570, 0xECB6, 0x7575, 0xFBFE,
+	0x7576, 0xD3D7, 0x7578, 0xD1B1, 0x757A, 0xCBB1, 0x757F, 0xD1B2,
+	0x7586, 0xCBB2, 0x7587, 0xF1C2, 0x758A, 0xF4E1, 0x758B, 0xF9B5,
+	0x758E, 0xE1C3, 0x758F, 0xE1C2, 0x7591, 0xEBF7, 0x759D, 0xDFA8,
+	0x75A5, 0xCBCA, 0x75AB, 0xE6B9, 0x75B1, 0xF8DE, 0x75B2, 0xF9AA,
+	0x75B3, 0xCAF7, 0x75B5, 0xEDB7, 0x75B8, 0xD3B8, 0x75B9, 0xF2D6,
+	0x75BC, 0xD4D9, 0x75BD, 0xEEC5, 0x75BE, 0xF2F0, 0x75C2, 0xCAB2,
+	0x75C5, 0xDCBB, 0x75C7, 0xF1F8, 0x75CD, 0xECB7, 0x75D2, 0xE5CA,
+	0x75D4, 0xF6C0, 0x75D5, 0xFDDD, 0x75D8, 0xD4E3, 0x75D9, 0xCCE2,
+	0x75DB, 0xF7D4, 0x75E2, 0xD7E5, 0x75F0, 0xD3C3, 0x75F2, 0xD8A6,
+	0x75F4, 0xF6C1, 0x75FA, 0xDDF6, 0x75FC, 0xCDC0, 0x7600, 0xE5DC,
+	0x760D, 0xE5CB, 0x7619, 0xE1C4, 0x761F, 0xE8B0, 0x7620, 0xF4B0,
+	0x7621, 0xF3EA, 0x7622, 0xDAEE, 0x7624, 0xD7BB, 0x7626, 0xE2B1,
+	0x763B, 0xD7AA, 0x7642, 0xD6FB, 0x764C, 0xE4DF, 0x764E, 0xCAD6,
+	0x7652, 0xEBA8, 0x7656, 0xDBFE, 0x7661, 0xF6C2, 0x7664, 0xEFBB,
+	0x7669, 0xD4FD, 0x766C, 0xE0C8, 0x7670, 0xE8B9, 0x7672, 0xEFA6,
+	0x7678, 0xCDA4, 0x767B, 0xD4F4, 0x767C, 0xDBA1, 0x767D, 0xDBDC,
+	0x767E, 0xDBDD, 0x7684, 0xEEDC, 0x7686, 0xCBCB, 0x7687, 0xFCD5,
+	0x768E, 0xCEEB, 0x7690, 0xCDC1, 0x7693, 0xFBD3, 0x76AE, 0xF9AB,
+	0x76BA, 0xF5D4, 0x76BF, 0xD9A9, 0x76C2, 0xE9DD, 0x76C3, 0xDBCD,
+	0x76C6, 0xDDCE, 0x76C8, 0xE7C3, 0x76CA, 0xECCC, 0x76D2, 0xF9EC,
+	0x76D6, 0xCBCC, 0x76DB, 0xE0FC, 0x76DC, 0xD4A8, 0x76DE, 0xEDD3,
+	0x76DF, 0xD8EF, 0x76E1, 0xF2D7, 0x76E3, 0xCAF8, 0x76E4, 0xDAEF,
+	0x76E7, 0xD6D4, 0x76EE, 0xD9CD, 0x76F2, 0xD8EE, 0x76F4, 0xF2C1,
+	0x76F8, 0xDFD3, 0x76FC, 0xDAF0, 0x76FE, 0xE2EA, 0x7701, 0xE0FD,
+	0x7704, 0xD8F8, 0x7708, 0xF7AF, 0x7709, 0xDAB6, 0x770B, 0xCAD7,
+	0x771E, 0xF2D8, 0x7720, 0xD8F9, 0x7729, 0xFADF, 0x7737, 0xCFEF,
+	0x7738, 0xD9C2, 0x773A, 0xF0D2, 0x773C, 0xE4D1, 0x7740, 0xF3B7,
+	0x774D, 0xFAE0, 0x775B, 0xEFEC, 0x7761, 0xE2B2, 0x7763, 0xD4BD,
+	0x7766, 0xD9CE, 0x776B, 0xF4E2, 0x7779, 0xD4A9, 0x777E, 0xCDC2,
+	0x777F, 0xE7DA, 0x778B, 0xF2D9, 0x7791, 0xD9AA, 0x779E, 0xD8BE,
+	0x77A5, 0xDCAD, 0x77AC, 0xE2EB, 0x77AD, 0xD6FC, 0x77B0, 0xCAF9,
+	0x77B3, 0xD4DA, 0x77BB, 0xF4D7, 0x77BC, 0xCCA1, 0x77BF, 0xCFBA,
+	0x77D7, 0xF5B8, 0x77DB, 0xD9C3, 0x77DC, 0xD0E8, 0x77E2, 0xE3C5,
+	0x77E3, 0xEBF8, 0x77E5, 0xF2B1, 0x77E9, 0xCFBB, 0x77ED, 0xD3AD,
+	0x77EE, 0xE8E1, 0x77EF, 0xCEEC, 0x77F3, 0xE0B4, 0x7802, 0xDEE3,
+	0x7812, 0xDDF7, 0x7825, 0xF2B2, 0x7826, 0xF3F6, 0x7827, 0xF6DB,
+	0x782C, 0xD7FE, 0x7832, 0xF8DF, 0x7834, 0xF7F2, 0x7845, 0xD0A9,
+	0x784F, 0xE6DA, 0x785D, 0xF5A6, 0x786B, 0xD7BC, 0x786C, 0xCCE3,
+	0x786F, 0xE6DB, 0x787C, 0xDDDD, 0x7881, 0xD1B3, 0x7887, 0xEFED,
+	0x788C, 0xD6DE, 0x788D, 0xE4F4, 0x788E, 0xE1EF, 0x7891, 0xDDF8,
+	0x7897, 0xE8CF, 0x78A3, 0xCAE5, 0x78A7, 0xDCA1, 0x78A9, 0xE0B5,
+	0x78BA, 0xFCAC, 0x78BB, 0xFCAD, 0x78BC, 0xD8A7, 0x78C1, 0xEDB8,
+	0x78C5, 0xDBB6, 0x78CA, 0xD6F0, 0x78CB, 0xF3AF, 0x78CE, 0xCDA5,
+	0x78D0, 0xDAF1, 0x78E8, 0xD8A8, 0x78EC, 0xCCE4, 0x78EF, 0xD1B4,
+	0x78F5, 0xCAD8, 0x78FB, 0xDAF2, 0x7901, 0xF5A7, 0x790E, 0xF5A8,
+	0x7916, 0xE6A6, 0x792A, 0xD5EC, 0x792B, 0xD5F8, 0x792C, 0xDAF3,
+	0x793A, 0xE3C6, 0x793E, 0xDEE4, 0x7940, 0xDEE5, 0x7941, 0xD1B5,
+	0x7947, 0xD1B6, 0x7948, 0xD1B7, 0x7949, 0xF2B3, 0x7950, 0xE9DE,
+	0x7956, 0xF0D3, 0x7957, 0xF2B4, 0x795A, 0xF0D4, 0x795B, 0xCBE4,
+	0x795C, 0xFBD4, 0x795D, 0xF5E6, 0x795E, 0xE3EA, 0x7960, 0xDEE6,
+	0x7965, 0xDFD4, 0x7968, 0xF8F9, 0x796D, 0xF0AE, 0x797A, 0xD1B8,
+	0x797F, 0xD6DF, 0x7981, 0xD0D7, 0x798D, 0xFCA1, 0x798E, 0xEFEE,
+	0x798F, 0xDCD8, 0x7991, 0xE9DF, 0x79A6, 0xE5DD, 0x79A7, 0xFDFB,
+	0x79AA, 0xE0C9, 0x79AE, 0xD6C9, 0x79B1, 0xD4AA, 0x79B3, 0xE5CC,
+	0x79B9, 0xE9E0, 0x79BD, 0xD0D8, 0x79BE, 0xFCA2, 0x79BF, 0xD4BE,
+	0x79C0, 0xE2B3, 0x79C1, 0xDEE7, 0x79C9, 0xDCBC, 0x79CA, 0xD2B6,
+	0x79CB, 0xF5D5, 0x79D1, 0xCEA1, 0x79D2, 0xF5A9, 0x79D5, 0xDDF9,
+	0x79D8, 0xDDFA, 0x79DF, 0xF0D5, 0x79E4, 0xF6DF, 0x79E6, 0xF2DA,
+	0x79E7, 0xE4EB, 0x79E9, 0xF2F1, 0x79FB, 0xECB9, 0x7A00, 0xFDFC,
+	0x7A05, 0xE1AA, 0x7A08, 0xCAD9, 0x7A0B, 0xEFEF, 0x7A0D, 0xF5AA,
+	0x7A14, 0xECF9, 0x7A17, 0xF8AD, 0x7A19, 0xF2C2, 0x7A1A, 0xF6C3,
+	0x7A1C, 0xD7D2, 0x7A1F, 0xF9A2, 0x7A20, 0xF0D6, 0x7A2E, 0xF0FA,
+	0x7A31, 0xF6E0, 0x7A36, 0xE9F3, 0x7A37, 0xF2C3, 0x7A3B, 0xD4AB,
+	0x7A3C, 0xCAB3, 0x7A3D, 0xCDA6, 0x7A3F, 0xCDC3, 0x7A40, 0xCDDA,
+	0x7A46, 0xD9CF, 0x7A49, 0xF6C4, 0x7A4D, 0xEEDD, 0x7A4E, 0xE7C4,
+	0x7A57, 0xE2B4, 0x7A61, 0xDFE2, 0x7A62, 0xE7DB, 0x7A69, 0xE8B1,
+	0x7A6B, 0xFCAE, 0x7A70, 0xE5CD, 0x7A74, 0xFAEB, 0x7A76, 0xCFBC,
+	0x7A79, 0xCFE2, 0x7A7A, 0xCDF6, 0x7A7D, 0xEFF0, 0x7A7F, 0xF4BE,
+	0x7A81, 0xD4CD, 0x7A84, 0xF3B8, 0x7A88, 0xE9A1, 0x7A92, 0xF2F2,
+	0x7A93, 0xF3EB, 0x7A95, 0xF0D7, 0x7A98, 0xCFD7, 0x7A9F, 0xCFDF,
+	0x7AA9, 0xE8C0, 0x7AAA, 0xE8C1, 0x7AAE, 0xCFE3, 0x7AAF, 0xE9A2,
+	0x7ABA, 0xD0AA, 0x7AC4, 0xF3C1, 0x7AC5, 0xD0AB, 0x7AC7, 0xD4E4,
+	0x7ACA, 0xEFBC, 0x7ACB, 0xD8A1, 0x7AD7, 0xD9DF, 0x7AD9, 0xF3D7,
+	0x7ADD, 0xDCBD, 0x7ADF, 0xCCE5, 0x7AE0, 0xEDF1, 0x7AE3, 0xF1E2,
+	0x7AE5, 0xD4DB, 0x7AEA, 0xE2B5, 0x7AED, 0xCAE6, 0x7AEF, 0xD3AE,
+	0x7AF6, 0xCCE6, 0x7AF9, 0xF1D3, 0x7AFA, 0xF5E7, 0x7AFF, 0xCADA,
+	0x7B0F, 0xFBEE, 0x7B11, 0xE1C5, 0x7B19, 0xDFE9, 0x7B1B, 0xEEDE,
+	0x7B1E, 0xF7C2, 0x7B20, 0xD8A2, 0x7B26, 0xDDAC, 0x7B2C, 0xF0AF,
+	0x7B2D, 0xD6BD, 0x7B39, 0xE1AB, 0x7B46, 0xF9B6, 0x7B49, 0xD4F5,
+	0x7B4B, 0xD0C9, 0x7B4C, 0xEFA7, 0x7B4D, 0xE2EC, 0x7B4F, 0xDBEA,
+	0x7B50, 0xCECC, 0x7B51, 0xF5E8, 0x7B52, 0xF7D5, 0x7B54, 0xD3CD,
+	0x7B56, 0xF3FE, 0x7B60, 0xD0B5, 0x7B6C, 0xE0FE, 0x7B6E, 0xDFFB,
+	0x7B75, 0xE6DD, 0x7B7D, 0xE8A4, 0x7B87, 0xCBCD, 0x7B8B, 0xEFA8,
+	0x7B8F, 0xEEB4, 0x7B94, 0xDAD8, 0x7B95, 0xD1B9, 0x7B97, 0xDFA9,
+	0x7B9A, 0xF3B0, 0x7B9D, 0xCCC4, 0x7BA1, 0xCEB7, 0x7BAD, 0xEFA9,
+	0x7BB1, 0xDFD5, 0x7BB4, 0xEDD7, 0x7BB8, 0xEEC6, 0x7BC0, 0xEFBD,
+	0x7BC1, 0xFCD6, 0x7BC4, 0xDBF4, 0x7BC6, 0xEFAA, 0x7BC7, 0xF8B9,
+	0x7BC9, 0xF5E9, 0x7BD2, 0xE3D9, 0x7BE0, 0xE1C6, 0x7BE4, 0xD4BF,
+	0x7BE9, 0xDEE8, 0x7C07, 0xF0EA, 0x7C12, 0xF3C2, 0x7C1E, 0xD3AF,
+	0x7C21, 0xCADB, 0x7C27, 0xFCD7, 0x7C2A, 0xEDD8, 0x7C2B, 0xE1C7,
+	0x7C3D, 0xF4D8, 0x7C3E, 0xD6B3, 0x7C3F, 0xDDAD, 0x7C43, 0xD5BE,
+	0x7C4C, 0xF1C3, 0x7C4D, 0xEEDF, 0x7C60, 0xD6EB, 0x7C64, 0xF4D9,
+	0x7C6C, 0xD7E6, 0x7C73, 0xDAB7, 0x7C83, 0xDDFB, 0x7C89, 0xDDCF,
+	0x7C92, 0xD8A3, 0x7C95, 0xDAD9, 0x7C97, 0xF0D8, 0x7C98, 0xEFC4,
+	0x7C9F, 0xE1D8, 0x7CA5, 0xF1D4, 0x7CA7, 0xEDF2, 0x7CAE, 0xD5DB,
+	0x7CB1, 0xD5DC, 0x7CB2, 0xF3C4, 0x7CB3, 0xCBD7, 0x7CB9, 0xE2B6,
+	0x7CBE, 0xEFF1, 0x7CCA, 0xFBD5, 0x7CD6, 0xD3D8, 0x7CDE, 0xDDD0,
+	0x7CDF, 0xF0D9, 0x7CE0, 0xCBB3, 0x7CE7, 0xD5DD, 0x7CFB, 0xCDA7,
+	0x7CFE, 0xD0AC, 0x7D00, 0xD1BA, 0x7D02, 0xF1C4, 0x7D04, 0xE5B3,
+	0x7D05, 0xFBF5, 0x7D06, 0xE9E1, 0x7D07, 0xFDE0, 0x7D08, 0xFCBC,
+	0x7D0A, 0xDAA2, 0x7D0B, 0xDAA3, 0x7D0D, 0xD2A1, 0x7D10, 0xD2EF,
+	0x7D14, 0xE2ED, 0x7D17, 0xDEE9, 0x7D18, 0xCEDC, 0x7D19, 0xF2B5,
+	0x7D1A, 0xD0E4, 0x7D1B, 0xDDD1, 0x7D20, 0xE1C8, 0x7D21, 0xDBB7,
+	0x7D22, 0xDFE3, 0x7D2B, 0xEDB9, 0x7D2C, 0xF1C5, 0x7D2E, 0xF3CF,
+	0x7D2F, 0xD7AB, 0x7D30, 0xE1AC, 0x7D33, 0xE3EB, 0x7D35, 0xEEC7,
+	0x7D39, 0xE1C9, 0x7D3A, 0xCAFA, 0x7D42, 0xF0FB, 0x7D43, 0xFAE1,
+	0x7D44, 0xF0DA, 0x7D45, 0xCCE7, 0x7D46, 0xDAF4, 0x7D50, 0xCCBF,
+	0x7D5E, 0xCEED, 0x7D61, 0xD5A9, 0x7D62, 0xFAE2, 0x7D66, 0xD0E5,
+	0x7D68, 0xEBD6, 0x7D6A, 0xECDF, 0x7D6E, 0xDFFC, 0x7D71, 0xF7D6,
+	0x7D72, 0xDEEA, 0x7D73, 0xCBB4, 0x7D76, 0xEFBE, 0x7D79, 0xCCB5,
+	0x7D7F, 0xCFBD, 0x7D8E, 0xEFF2, 0x7D8F, 0xE2B7, 0x7D93, 0xCCE8,
+	0x7D9C, 0xF0FC, 0x7DA0, 0xD6E0, 0x7DA2, 0xF1C6, 0x7DAC, 0xE2B8,
+	0x7DAD, 0xEBAB, 0x7DB1, 0xCBB5, 0x7DB2, 0xD8D1, 0x7DB4, 0xF4CE,
+	0x7DB5, 0xF3F7, 0x7DB8, 0xD7C6, 0x7DBA, 0xD1BB, 0x7DBB, 0xF7AA,
+	0x7DBD, 0xEDCA, 0x7DBE, 0xD7D3, 0x7DBF, 0xD8FA, 0x7DC7, 0xF6C5,
+	0x7DCA, 0xD1CC, 0x7DCB, 0xDDFC, 0x7DD6, 0xDFFD, 0x7DD8, 0xF9E5,
+	0x7DDA, 0xE0CA, 0x7DDD, 0xF2FD, 0x7DDE, 0xD3B0, 0x7DE0, 0xF4F3,
+	0x7DE1, 0xDAC9, 0x7DE3, 0xE6DE, 0x7DE8, 0xF8BA, 0x7DE9, 0xE8D0,
+	0x7DEC, 0xD8FB, 0x7DEF, 0xEAD5, 0x7DF4, 0xD6A3, 0x7DFB, 0xF6C6,
+	0x7E09, 0xF2DB, 0x7E0A, 0xE4FC, 0x7E15, 0xE8B2, 0x7E1B, 0xDADA,
+	0x7E1D, 0xF2DC, 0x7E1E, 0xFBD6, 0x7E1F, 0xE9B2, 0x7E21, 0xEEAD,
+	0x7E23, 0xFAE3, 0x7E2B, 0xDCEE, 0x7E2E, 0xF5EA, 0x7E2F, 0xE6E0,
+	0x7E31, 0xF0FD, 0x7E37, 0xD7AC, 0x7E3D, 0xF5C5, 0x7E3E, 0xEEE0,
+	0x7E41, 0xDBE5, 0x7E43, 0xDDDE, 0x7E46, 0xD9F0, 0x7E47, 0xE9A3,
+	0x7E52, 0xF1F9, 0x7E54, 0xF2C4, 0x7E55, 0xE0CB, 0x7E5E, 0xE9A4,
+	0x7E61, 0xE2B9, 0x7E69, 0xE3B1, 0x7E6A, 0xFCEB, 0x7E6B, 0xCDA8,
+	0x7E6D, 0xCCB6, 0x7E70, 0xF0DB, 0x7E79, 0xE6BA, 0x7E7C, 0xCDA9,
+	0x7E82, 0xF3C3, 0x7E8C, 0xE1D9, 0x7E8F, 0xEFAB, 0x7E93, 0xE7C5,
+	0x7E96, 0xE0E9, 0x7E98, 0xF3C5, 0x7E9B, 0xD4C0, 0x7E9C, 0xD5BF,
+	0x7F36, 0xDDAE, 0x7F38, 0xF9FC, 0x7F3A, 0xCCC0, 0x7F4C, 0xE5A2,
+	0x7F50, 0xCEB8, 0x7F54, 0xD8D2, 0x7F55, 0xF9D6, 0x7F6A, 0xF1AA,
+	0x7F6B, 0xCED1, 0x7F6E, 0xF6C7, 0x7F70, 0xDBEB, 0x7F72, 0xDFFE,
+	0x7F75, 0xD8E1, 0x7F77, 0xF7F3, 0x7F79, 0xD7E7, 0x7F85, 0xD4FE,
+	0x7F88, 0xD1BC, 0x7F8A, 0xE5CF, 0x7F8C, 0xCBB6, 0x7F8E, 0xDAB8,
+	0x7F94, 0xCDC4, 0x7F9A, 0xD6BE, 0x7F9E, 0xE2BA, 0x7FA4, 0xCFD8,
+	0x7FA8, 0xE0CC, 0x7FA9, 0xEBF9, 0x7FB2, 0xFDFD, 0x7FB8, 0xD7E8,
+	0x7FB9, 0xCBD8, 0x7FBD, 0xE9E2, 0x7FC1, 0xE8BA, 0x7FC5, 0xE3C7,
+	0x7FCA, 0xECCD, 0x7FCC, 0xECCE, 0x7FCE, 0xD6BF, 0x7FD2, 0xE3A7,
+	0x7FD4, 0xDFD6, 0x7FD5, 0xFDE8, 0x7FDF, 0xEEE1, 0x7FE0, 0xF6A8,
+	0x7FE1, 0xDDFD, 0x7FE9, 0xF8BB, 0x7FEB, 0xE8D1, 0x7FF0, 0xF9D7,
+	0x7FF9, 0xCEEE, 0x7FFC, 0xECCF, 0x8000, 0xE9A5, 0x8001, 0xD6D5,
+	0x8003, 0xCDC5, 0x8005, 0xEDBA, 0x8006, 0xD1BD, 0x8009, 0xCFBE,
+	0x800C, 0xECBB, 0x8010, 0xD2B1, 0x8015, 0xCCE9, 0x8017, 0xD9C4,
+	0x8018, 0xE9FC, 0x802D, 0xD1BE, 0x8033, 0xECBC, 0x8036, 0xE5AD,
+	0x803D, 0xF7B0, 0x803F, 0xCCEA, 0x8043, 0xD3C4, 0x8046, 0xD6C0,
+	0x804A, 0xD6FD, 0x8056, 0xE1A1, 0x8058, 0xDEBD, 0x805A, 0xF6A9,
+	0x805E, 0xDAA4, 0x806F, 0xD6A4, 0x8070, 0xF5C6, 0x8072, 0xE1A2,
+	0x8073, 0xE9C6, 0x8077, 0xF2C5, 0x807D, 0xF4E9, 0x807E, 0xD6EC,
+	0x807F, 0xEBD3, 0x8084, 0xECBD, 0x8085, 0xE2DC, 0x8086, 0xDEEB,
+	0x8087, 0xF0DC, 0x8089, 0xEBBF, 0x808B, 0xD7CE, 0x808C, 0xD1BF,
+	0x8096, 0xF5AB, 0x809B, 0xF9FD, 0x809D, 0xCADC, 0x80A1, 0xCDC6,
+	0x80A2, 0xF2B6, 0x80A5, 0xDDFE, 0x80A9, 0xCCB7, 0x80AA, 0xDBB8,
+	0x80AF, 0xD0E9, 0x80B1, 0xCEDD, 0x80B2, 0xEBC0, 0x80B4, 0xFDA2,
+	0x80BA, 0xF8CB, 0x80C3, 0xEAD6, 0x80C4, 0xF1B0, 0x80CC, 0xDBCE,
+	0x80CE, 0xF7C3, 0x80DA, 0xDBCF, 0x80DB, 0xCBA4, 0x80DE, 0xF8E0,
+	0x80E1, 0xFBD7, 0x80E4, 0xEBCA, 0x80E5, 0xE0A1, 0x80F1, 0xCECD,
+	0x80F4, 0xD4DC, 0x80F8, 0xFDD8, 0x80FD, 0xD2F6, 0x8102, 0xF2B7,
+	0x8105, 0xFAF6, 0x8106, 0xF6AA, 0x8107, 0xFAF7, 0x8108, 0xD8E6,
+	0x810A, 0xF4B1, 0x8118, 0xE8D2, 0x811A, 0xCAC5, 0x811B, 0xCCEB,
+	0x8123, 0xE2EE, 0x8129, 0xE2BB, 0x812B, 0xF7AD, 0x812F, 0xF8E1,
+	0x8139, 0xF3EC, 0x813E, 0xDEA1, 0x814B, 0xE4FD, 0x814E, 0xE3EC,
+	0x8150, 0xDDAF, 0x8151, 0xDDB0, 0x8154, 0xCBB7, 0x8155, 0xE8D3,
+	0x8165, 0xE1A3, 0x8166, 0xD2E0, 0x816B, 0xF0FE, 0x8170, 0xE9A6,
+	0x8171, 0xCBF2, 0x8178, 0xEDF3, 0x8179, 0xDCD9, 0x817A, 0xE0CD,
+	0x817F, 0xF7DA, 0x8180, 0xDBB9, 0x8188, 0xCCAE, 0x818A, 0xDADB,
+	0x818F, 0xCDC7, 0x819A, 0xDDB1, 0x819C, 0xD8AF, 0x819D, 0xE3A3,
+	0x81A0, 0xCEEF, 0x81A3, 0xF2F3, 0x81A8, 0xF8B3, 0x81B3, 0xE0CE,
+	0x81B5, 0xF5FD, 0x81BA, 0xEBEC, 0x81BD, 0xD3C5, 0x81BE, 0xFCEC,
+	0x81BF, 0xD2DB, 0x81C0, 0xD4EB, 0x81C2, 0xDEA2, 0x81C6, 0xE5E6,
+	0x81CD, 0xF0B0, 0x81D8, 0xD5C4, 0x81DF, 0xEDF4, 0x81E3, 0xE3ED,
+	0x81E5, 0xE8C2, 0x81E7, 0xEDF5, 0x81E8, 0xD7FC, 0x81EA, 0xEDBB,
+	0x81ED, 0xF6AB, 0x81F3, 0xF2B8, 0x81F4, 0xF6C8, 0x81FA, 0xD3E6,
+	0x81FB, 0xF2DD, 0x81FC, 0xCFBF, 0x81FE, 0xEBAC, 0x8205, 0xCFC0,
+	0x8207, 0xE6A8, 0x8208, 0xFDE9, 0x820A, 0xCFC1, 0x820C, 0xE0DF,
+	0x820D, 0xDEEC, 0x8212, 0xE0A2, 0x821B, 0xF4BF, 0x821C, 0xE2EF,
+	0x821E, 0xD9F1, 0x821F, 0xF1C7, 0x8221, 0xCBB8, 0x822A, 0xF9FE,
+	0x822B, 0xDBBA, 0x822C, 0xDAF5, 0x8235, 0xF6EC, 0x8236, 0xDADC,
+	0x8237, 0xFAE4, 0x8239, 0xE0CF, 0x8240, 0xDDB2, 0x8245, 0xE6A9,
+	0x8247, 0xEFF3, 0x8259, 0xF3ED, 0x8264, 0xEBFA, 0x8266, 0xF9E6,
+	0x826E, 0xCADD, 0x826F, 0xD5DE, 0x8271, 0xCADE, 0x8272, 0xDFE4,
+	0x8276, 0xE6FD, 0x8278, 0xF5AC, 0x827E, 0xE4F5, 0x828B, 0xE9E3,
+	0x828D, 0xEDCB, 0x828E, 0xCFE4, 0x8292, 0xD8D3, 0x8299, 0xDDB3,
+	0x829A, 0xD4EC, 0x829D, 0xF2B9, 0x829F, 0xDFB7, 0x82A5, 0xCBCE,
+	0x82A6, 0xFBD8, 0x82A9, 0xD0D9, 0x82AC, 0xDDD2, 0x82AD, 0xF7F4,
+	0x82AE, 0xE7DC, 0x82AF, 0xE4A5, 0x82B1, 0xFCA3, 0x82B3, 0xDBBB,
+	0x82B7, 0xF2BA, 0x82B8, 0xE9FD, 0x82B9, 0xD0CA, 0x82BB, 0xF5D6,
+	0x82BC, 0xD9C5, 0x82BD, 0xE4B4, 0x82BF, 0xEDA7, 0x82D1, 0xEABD,
+	0x82D2, 0xE6FE, 0x82D4, 0xF7C4, 0x82D5, 0xF5AD, 0x82D7, 0xD9E0,
+	0x82DB, 0xCAB4, 0x82DE, 0xF8E2, 0x82DF, 0xCFC2, 0x82E1, 0xECBE,
+	0x82E5, 0xE5B4, 0x82E6, 0xCDC8, 0x82E7, 0xEEC8, 0x82F1, 0xE7C8,
+	0x82FD, 0xCDC9, 0x82FE, 0xF9B7, 0x8301, 0xF1E8, 0x8302, 0xD9F2,
+	0x8303, 0xDBF5, 0x8304, 0xCAB5, 0x8305, 0xD9C6, 0x8309, 0xD8C9,
+	0x8317, 0xD9AB, 0x8328, 0xEDBC, 0x832B, 0xD8D4, 0x832F, 0xDCDA,
+	0x8331, 0xE2BC, 0x8334, 0xFCED, 0x8335, 0xECE0, 0x8336, 0xD2FE,
+	0x8338, 0xE9C7, 0x8339, 0xE6AA, 0x8340, 0xE2F0, 0x8347, 0xFABB,
+	0x8349, 0xF5AE, 0x834A, 0xFBAA, 0x834F, 0xECFB, 0x8351, 0xECBF,
+	0x8352, 0xFCD8, 0x8373, 0xD4E5, 0x8377, 0xF9C3, 0x837B, 0xEEE2,
+	0x8389, 0xD7E9, 0x838A, 0xEDF6, 0x838E, 0xDEED, 0x8396, 0xCCEC,
+	0x8398, 0xE3EE, 0x839E, 0xE8D4, 0x83A2, 0xFAF8, 0x83A9, 0xDDB4,
+	0x83AA, 0xE4B5, 0x83AB, 0xD8B0, 0x83BD, 0xD8D5, 0x83C1, 0xF4EA,
+	0x83C5, 0xCEB9, 0x83C9, 0xD6E1, 0x83CA, 0xCFD2, 0x83CC, 0xD0B6,
+	0x83D3, 0xCEA2, 0x83D6, 0xF3EE, 0x83DC, 0xF3F8, 0x83E9, 0xDCCC,
+	0x83EB, 0xD0CB, 0x83EF, 0xFCA4, 0x83F0, 0xCDCA, 0x83F1, 0xD7D4,
+	0x83F2, 0xDEA3, 0x83F4, 0xE4E0, 0x83F9, 0xEEC9, 0x83FD, 0xE2DD,
+	0x8403, 0xF5FE, 0x8404, 0xD4AC, 0x840A, 0xD5D1, 0x840C, 0xD8F0,
+	0x840D, 0xF8C3, 0x840E, 0xEAD7, 0x8429, 0xF5D7, 0x842C, 0xD8BF,
+	0x8431, 0xFDC0, 0x8438, 0xEBAD, 0x843D, 0xD5AA, 0x8449, 0xE7A8,
+	0x8457, 0xEECA, 0x845B, 0xCAE7, 0x8461, 0xF8E3, 0x8463, 0xD4DD,
+	0x8466, 0xEAD8, 0x846B, 0xFBD9, 0x846C, 0xEDF7, 0x846F, 0xE5B5,
+	0x8475, 0xD0AD, 0x847A, 0xF1F1, 0x8490, 0xE2BD, 0x8494, 0xE3C8,
+	0x8499, 0xD9D5, 0x849C, 0xDFAA, 0x84A1, 0xDBBC, 0x84B2, 0xF8E4,
+	0x84B8, 0xF1FA, 0x84BB, 0xE5B6, 0x84BC, 0xF3EF, 0x84BF, 0xFBDA,
+	0x84C0, 0xE1E0, 0x84C2, 0xD9AC, 0x84C4, 0xF5EB, 0x84C6, 0xE0B6,
+	0x84C9, 0xE9C8, 0x84CB, 0xCBCF, 0x84CD, 0xE3C9, 0x84D1, 0xDEEE,
+	0x84DA, 0xE2BE, 0x84EC, 0xDCEF, 0x84EE, 0xD6A5, 0x84F4, 0xE2F1,
+	0x84FC, 0xD6FE, 0x8511, 0xD9A1, 0x8513, 0xD8C0, 0x8514, 0xDCDB,
+	0x8517, 0xEDBD, 0x8518, 0xDFB8, 0x851A, 0xEAA5, 0x851E, 0xD7AD,
+	0x8521, 0xF3F9, 0x8523, 0xEDF8, 0x8525, 0xF5C7, 0x852C, 0xE1CA,
+	0x852D, 0xEBE3, 0x852F, 0xF2DE, 0x853D, 0xF8CC, 0x853F, 0xEAD9,
+	0x8541, 0xD3C6, 0x8543, 0xDBE6, 0x8549, 0xF5AF, 0x854E, 0xCEF0,
+	0x8553, 0xE9FE, 0x8559, 0xFBB6, 0x8563, 0xE2F2, 0x8568, 0xCFF2,
+	0x8569, 0xF7B9, 0x856A, 0xD9F3, 0x856D, 0xE1CB, 0x8584, 0xDADD,
+	0x8587, 0xDAB9, 0x858F, 0xEBFB, 0x8591, 0xCBB9, 0x8594, 0xEDF9,
+	0x859B, 0xE0E0, 0x85A6, 0xF4C0, 0x85A8, 0xFDBC, 0x85A9, 0xDFB1,
+	0x85AA, 0xE3EF, 0x85AF, 0xE0A3, 0x85B0, 0xFDB9, 0x85BA, 0xF0B1,
+	0x85C1, 0xCDCB, 0x85C9, 0xEDBE, 0x85CD, 0xD5C0, 0x85CE, 0xE3F0,
+	0x85CF, 0xEDFA, 0x85D5, 0xE9E4, 0x85DC, 0xD5ED, 0x85DD, 0xE7DD,
+	0x85E4, 0xD4F6, 0x85E5, 0xE5B7, 0x85E9, 0xDBE7, 0x85EA, 0xE2BF,
+	0x85F7, 0xEECB, 0x85FA, 0xD7F4, 0x85FB, 0xF0DD, 0x85FF, 0xCEAB,
+	0x8602, 0xE7DE, 0x8606, 0xD6D6, 0x8607, 0xE1CC, 0x860A, 0xE8B3,
+	0x8616, 0xE5EE, 0x8617, 0xDCA2, 0x861A, 0xE0D0, 0x862D, 0xD5B5,
+	0x863F, 0xD5A1, 0x864E, 0xFBDB, 0x8650, 0xF9CB, 0x8654, 0xCBF3,
+	0x8655, 0xF4A5, 0x865B, 0xFAC8, 0x865C, 0xD6D7, 0x865E, 0xE9E5,
+	0x865F, 0xFBDC, 0x8667, 0xFDD0, 0x8679, 0xFBF6, 0x868A, 0xDAA5,
+	0x868C, 0xDBBD, 0x8693, 0xECE2, 0x86A3, 0xCDF7, 0x86A4, 0xF0DE,
+	0x86A9, 0xF6C9, 0x86C7, 0xDEEF, 0x86CB, 0xD3B1, 0x86D4, 0xFCEE,
+	0x86D9, 0xE8C3, 0x86DB, 0xF1C8, 0x86DF, 0xCEF1, 0x86E4, 0xF9ED,
+	0x86ED, 0xF2F4, 0x86FE, 0xE4B6, 0x8700, 0xF5B9, 0x8702, 0xDCF0,
+	0x8703, 0xE3F1, 0x8708, 0xE8A5, 0x8718, 0xF2BB, 0x871A, 0xDEA4,
+	0x871C, 0xDACC, 0x874E, 0xCAE9, 0x8755, 0xE3DA, 0x8757, 0xFCD9,
+	0x875F, 0xEADA, 0x8766, 0xF9C4, 0x8768, 0xE3A4, 0x8774, 0xFBDD,
+	0x8776, 0xEFCA, 0x8778, 0xE8C4, 0x8782, 0xD5CC, 0x878D, 0xEBD7,
+	0x879F, 0xD9AD, 0x87A2, 0xFBAB, 0x87B3, 0xD3D9, 0x87BA, 0xD5A2,
+	0x87C4, 0xF6DE, 0x87E0, 0xDAF6, 0x87EC, 0xE0D1, 0x87EF, 0xE9A8,
+	0x87F2, 0xF5F9, 0x87F9, 0xFAAF, 0x87FB, 0xEBFC, 0x87FE, 0xE0EA,
+	0x8805, 0xE3B2, 0x881F, 0xD5C5, 0x8822, 0xF1E3, 0x8823, 0xD5EE,
+	0x8831, 0xCDCC, 0x8836, 0xEDD9, 0x883B, 0xD8C1, 0x8840, 0xFAEC,
+	0x8846, 0xF1EB, 0x884C, 0xFABC, 0x884D, 0xE6E2, 0x8852, 0xFAE5,
+	0x8853, 0xE2FA, 0x8857, 0xCAB6, 0x8859, 0xE4B7, 0x885B, 0xEADB,
+	0x885D, 0xF5FA, 0x8861, 0xFBAC, 0x8862, 0xCFC3, 0x8863, 0xEBFD,
+	0x8868, 0xF8FA, 0x886B, 0xDFB9, 0x8870, 0xE1F1, 0x8872, 0xD2A4,
+	0x8877, 0xF5FB, 0x887E, 0xD0DA, 0x887F, 0xD0DB, 0x8881, 0xEABE,
+	0x8882, 0xD9B1, 0x8888, 0xCAB7, 0x888B, 0xD3E7, 0x888D, 0xF8E5,
+	0x8892, 0xD3B2, 0x8896, 0xE2C0, 0x8897, 0xF2DF, 0x889E, 0xCDE5,
+	0x88AB, 0xF9AC, 0x88B4, 0xCDCD, 0x88C1, 0xEEAE, 0x88C2, 0xD6AE,
+	0x88CF, 0xD7EA, 0x88D4, 0xE7E0, 0x88D5, 0xEBAE, 0x88D9, 0xCFD9,
+	0x88DC, 0xDCCD, 0x88DD, 0xEDFB, 0x88DF, 0xDEF0, 0x88E1, 0xD7EB,
+	0x88E8, 0xDEA5, 0x88F3, 0xDFD7, 0x88F4, 0xDBD0, 0x88F5, 0xDBD1,
+	0x88F8, 0xD5A3, 0x88FD, 0xF0B2, 0x8907, 0xDCDC, 0x8910, 0xCAE8,
+	0x8912, 0xF8E6, 0x8913, 0xDCCE, 0x8918, 0xEADC, 0x8919, 0xDBD2,
+	0x8925, 0xE9B3, 0x892A, 0xF7DB, 0x8936, 0xE3A8, 0x8938, 0xD7AE,
+	0x893B, 0xE0E1, 0x8941, 0xCBBA, 0x8944, 0xE5D1, 0x895F, 0xD0DC,
+	0x8964, 0xD5C1, 0x896A, 0xD8CA, 0x8972, 0xE3A9, 0x897F, 0xE0A4,
+	0x8981, 0xE9A9, 0x8983, 0xD3C7, 0x8986, 0xDCDD, 0x8987, 0xF8AE,
+	0x898B, 0xCCB8, 0x898F, 0xD0AE, 0x8993, 0xD8F2, 0x8996, 0xE3CA,
+	0x89A1, 0xCCAF, 0x89A9, 0xD4AD, 0x89AA, 0xF6D1, 0x89B2, 0xD0CC,
+	0x89BA, 0xCAC6, 0x89BD, 0xD5C2, 0x89C0, 0xCEBA, 0x89D2, 0xCAC7,
+	0x89E3, 0xFAB0, 0x89F4, 0xDFD8, 0x89F8, 0xF5BA, 0x8A00, 0xE5EB,
+	0x8A02, 0xEFF4, 0x8A03, 0xDDB5, 0x8A08, 0xCDAA, 0x8A0A, 0xE3F2,
+	0x8A0C, 0xFBF7, 0x8A0E, 0xF7D0, 0x8A13, 0xFDBA, 0x8A16, 0xFDE1,
+	0x8A17, 0xF6FE, 0x8A18, 0xD1C0, 0x8A1B, 0xE8C5, 0x8A1D, 0xE4B8,
+	0x8A1F, 0xE1E8, 0x8A23, 0xCCC1, 0x8A25, 0xD2ED, 0x8A2A, 0xDBBE,
+	0x8A2D, 0xE0E2, 0x8A31, 0xFAC9, 0x8A34, 0xE1CD, 0x8A36, 0xCAB8,
+	0x8A3A, 0xF2E0, 0x8A3B, 0xF1C9, 0x8A50, 0xDEF1, 0x8A54, 0xF0DF,
+	0x8A55, 0xF8C4, 0x8A5B, 0xEECC, 0x8A5E, 0xDEF2, 0x8A60, 0xE7C9,
+	0x8A62, 0xE2F3, 0x8A63, 0xE7E1, 0x8A66, 0xE3CB, 0x8A69, 0xE3CC,
+	0x8A6D, 0xCFF8, 0x8A6E, 0xEFAC, 0x8A70, 0xFDFE, 0x8A71, 0xFCA5,
+	0x8A72, 0xFAB1, 0x8A73, 0xDFD9, 0x8A75, 0xE0D2, 0x8A79, 0xF4DA,
+	0x8A85, 0xF1CA, 0x8A87, 0xCEA3, 0x8A8C, 0xF2BC, 0x8A8D, 0xECE3,
+	0x8A93, 0xE0A5, 0x8A95, 0xF7AB, 0x8A98, 0xEBAF, 0x8A9E, 0xE5DE,
+	0x8AA0, 0xE1A4, 0x8AA1, 0xCDAB, 0x8AA3, 0xD9F4, 0x8AA4, 0xE8A6,
+	0x8AA5, 0xCDCE, 0x8AA6, 0xE1E9, 0x8AA8, 0xFCEF, 0x8AAA, 0xE0E3,
+	0x8AB0, 0xE2C1, 0x8AB2, 0xCEA4, 0x8AB9, 0xDEA6, 0x8ABC, 0xEBFE,
+	0x8ABE, 0xEBDD, 0x8ABF, 0xF0E0, 0x8AC2, 0xF4DB, 0x8AC4, 0xE2F4,
+	0x8AC7, 0xD3C8, 0x8ACB, 0xF4EB, 0x8ACD, 0xEEB5, 0x8ACF, 0xF5D8,
+	0x8AD2, 0xD5DF, 0x8AD6, 0xD6E5, 0x8ADB, 0xEBB0, 0x8ADC, 0xF4E3,
+	0x8AE1, 0xE3CD, 0x8AE6, 0xF4F4, 0x8AE7, 0xFAB2, 0x8AEA, 0xEFF5,
+	0x8AEB, 0xCADF, 0x8AED, 0xEBB1, 0x8AEE, 0xEDBF, 0x8AF1, 0xFDC9,
+	0x8AF6, 0xE4A6, 0x8AF7, 0xF9A4, 0x8AF8, 0xF0B3, 0x8AFA, 0xE5EC,
+	0x8AFE, 0xD1E7, 0x8B00, 0xD9C7, 0x8B01, 0xE4D7, 0x8B02, 0xEADD,
+	0x8B04, 0xD4F7, 0x8B0E, 0xDABA, 0x8B10, 0xDACD, 0x8B14, 0xF9CC,
+	0x8B16, 0xE1DA, 0x8B17, 0xDBBF, 0x8B19, 0xCCC5, 0x8B1A, 0xECD0,
+	0x8B1B, 0xCBBB, 0x8B1D, 0xDEF3, 0x8B20, 0xE9AA, 0x8B28, 0xD9C8,
+	0x8B2B, 0xEEE3, 0x8B2C, 0xD7BD, 0x8B33, 0xCFC4, 0x8B39, 0xD0CD,
+	0x8B41, 0xFCA6, 0x8B49, 0xF1FB, 0x8B4E, 0xFDD2, 0x8B4F, 0xD1C1,
+	0x8B58, 0xE3DB, 0x8B5A, 0xD3C9, 0x8B5C, 0xDCCF, 0x8B66, 0xCCED,
+	0x8B6C, 0xDEA7, 0x8B6F, 0xE6BB, 0x8B70, 0xECA1, 0x8B74, 0xCCB9,
+	0x8B77, 0xFBDE, 0x8B7D, 0xE7E2, 0x8B80, 0xD4C1, 0x8B8A, 0xDCA8,
+	0x8B90, 0xE2C2, 0x8B92, 0xF3D8, 0x8B93, 0xE5D3, 0x8B96, 0xF3D9,
+	0x8B9A, 0xF3C6, 0x8C37, 0xCDDB, 0x8C3F, 0xCDAC, 0x8C41, 0xFCC3,
+	0x8C46, 0xD4E7, 0x8C48, 0xD1C2, 0x8C4A, 0xF9A5, 0x8C4C, 0xE8D5,
+	0x8C55, 0xE3CE, 0x8C5A, 0xD4CA, 0x8C61, 0xDFDA, 0x8C6A, 0xFBDF,
+	0x8C6B, 0xE7E3, 0x8C79, 0xF8FB, 0x8C7A, 0xE3CF, 0x8C82, 0xF5B0,
+	0x8C8A, 0xD8E7, 0x8C8C, 0xD9C9, 0x8C9D, 0xF8AF, 0x8C9E, 0xEFF6,
+	0x8CA0, 0xDDB6, 0x8CA1, 0xEEAF, 0x8CA2, 0xCDF8, 0x8CA7, 0xDEB8,
+	0x8CA8, 0xFCA7, 0x8CA9, 0xF7FC, 0x8CAA, 0xF7B1, 0x8CAB, 0xCEBB,
+	0x8CAC, 0xF4A1, 0x8CAF, 0xEECD, 0x8CB0, 0xE1AE, 0x8CB3, 0xECC3,
+	0x8CB4, 0xCFFE, 0x8CB6, 0xF8BF, 0x8CB7, 0xD8E2, 0x8CB8, 0xD3E8,
+	0x8CBB, 0xDEA8, 0x8CBC, 0xF4E4, 0x8CBD, 0xECC2, 0x8CBF, 0xD9F5,
+	0x8CC0, 0xF9C5, 0x8CC1, 0xDDD3, 0x8CC2, 0xD6F1, 0x8CC3, 0xECFC,
+	0x8CC4, 0xFCF0, 0x8CC7, 0xEDC0, 0x8CC8, 0xCAB9, 0x8CCA, 0xEEE4,
+	0x8CD1, 0xF2E1, 0x8CD3, 0xDEB9, 0x8CDA, 0xD6F2, 0x8CDC, 0xDEF4,
+	0x8CDE, 0xDFDB, 0x8CE0, 0xDBD3, 0x8CE2, 0xFAE7, 0x8CE3, 0xD8E3,
+	0x8CE4, 0xF4C1, 0x8CE6, 0xDDB7, 0x8CEA, 0xF2F5, 0x8CED, 0xD4AE,
+	0x8CF4, 0xD6F3, 0x8CFB, 0xDDB8, 0x8CFC, 0xCFC5, 0x8CFD, 0xDFDF,
+	0x8D04, 0xF2BE, 0x8D05, 0xF6A1, 0x8D07, 0xEBCB, 0x8D08, 0xF1FC,
+	0x8D0A, 0xF3C7, 0x8D0D, 0xE0EB, 0x8D13, 0xEDFC, 0x8D16, 0xE1DB,
+	0x8D64, 0xEEE5, 0x8D66, 0xDEF5, 0x8D6B, 0xFAD3, 0x8D70, 0xF1CB,
+	0x8D73, 0xD0AF, 0x8D74, 0xDDB9, 0x8D77, 0xD1C3, 0x8D85, 0xF5B1,
+	0x8D8A, 0xEAC6, 0x8D99, 0xF0E1, 0x8DA3, 0xF6AC, 0x8DA8, 0xF5D9,
+	0x8DB3, 0xF0EB, 0x8DBA, 0xDDBA, 0x8DBE, 0xF2BF, 0x8DC6, 0xF7C5,
+	0x8DCB, 0xDBA2, 0x8DCC, 0xF2F6, 0x8DCF, 0xCABA, 0x8DDB, 0xF7F5,
+	0x8DDD, 0xCBE5, 0x8DE1, 0xEEE6, 0x8DE3, 0xE0D3, 0x8DE8, 0xCEA5,
+	0x8DEF, 0xD6D8, 0x8DF3, 0xD4AF, 0x8E0A, 0xE9C9, 0x8E0F, 0xD3CE,
+	0x8E10, 0xF4C2, 0x8E1E, 0xCBE6, 0x8E2A, 0xF1A1, 0x8E30, 0xEBB2,
+	0x8E35, 0xF1A2, 0x8E42, 0xEBB3, 0x8E44, 0xF0B4, 0x8E47, 0xCBF4,
+	0x8E48, 0xD4B0, 0x8E49, 0xF3B2, 0x8E4A, 0xFBB7, 0x8E59, 0xF5EC,
+	0x8E5F, 0xEEE7, 0x8E60, 0xF4B2, 0x8E74, 0xF5ED, 0x8E76, 0xCFF3,
+	0x8E81, 0xF0E2, 0x8E87, 0xEECE, 0x8E8A, 0xF1CC, 0x8E8D, 0xE5B8,
+	0x8EAA, 0xD7F5, 0x8EAB, 0xE3F3, 0x8EAC, 0xCFE5, 0x8EC0, 0xCFC6,
+	0x8ECA, 0xF3B3, 0x8ECB, 0xE4D8, 0x8ECC, 0xCFF9, 0x8ECD, 0xCFDA,
+	0x8ED2, 0xFACD, 0x8EDF, 0xE6E3, 0x8EEB, 0xF2E2, 0x8EF8, 0xF5EE,
+	0x8EFB, 0xCABB, 0x8EFE, 0xE3DC, 0x8F03, 0xCEF2, 0x8F05, 0xD6D9,
+	0x8F09, 0xEEB0, 0x8F12, 0xF4E5, 0x8F13, 0xD8C2, 0x8F14, 0xDCD0,
+	0x8F15, 0xCCEE, 0x8F1B, 0xD5E0, 0x8F1C, 0xF6CA, 0x8F1D, 0xFDCA,
+	0x8F1E, 0xD8D6, 0x8F1F, 0xF4CF, 0x8F26, 0xD6A6, 0x8F27, 0xDCBE,
+	0x8F29, 0xDBD4, 0x8F2A, 0xD7C7, 0x8F2F, 0xF2FE, 0x8F33, 0xF1CD,
+	0x8F38, 0xE2C3, 0x8F39, 0xDCDE, 0x8F3B, 0xDCDF, 0x8F3E, 0xEFAD,
+	0x8F3F, 0xE6AB, 0x8F44, 0xF9DD, 0x8F45, 0xEABF, 0x8F49, 0xEFAE,
+	0x8F4D, 0xF4D0, 0x8F4E, 0xCEF3, 0x8F5D, 0xE6AC, 0x8F5F, 0xCEDE,
+	0x8F62, 0xD5F9, 0x8F9B, 0xE3F4, 0x8F9C, 0xCDD0, 0x8FA3, 0xD5B8,
+	0x8FA6, 0xF7FD, 0x8FA8, 0xDCA9, 0x8FAD, 0xDEF6, 0x8FAF, 0xDCAA,
+	0x8FB0, 0xF2E3, 0x8FB1, 0xE9B4, 0x8FB2, 0xD2DC, 0x8FC2, 0xE9E6,
+	0x8FC5, 0xE3F6, 0x8FCE, 0xE7CA, 0x8FD1, 0xD0CE, 0x8FD4, 0xDAF7,
+	0x8FE6, 0xCABC, 0x8FEA, 0xEEE8, 0x8FEB, 0xDADE, 0x8FED, 0xF2F7,
+	0x8FF0, 0xE2FB, 0x8FF2, 0xCCA6, 0x8FF7, 0xDABB, 0x8FF9, 0xEEE9,
+	0x8FFD, 0xF5DA, 0x9000, 0xF7DC, 0x9001, 0xE1EA, 0x9002, 0xCEC1,
+	0x9003, 0xD4B1, 0x9005, 0xFDB1, 0x9006, 0xE6BD, 0x9008, 0xFBAD,
+	0x900B, 0xF8E7, 0x900D, 0xE1CE, 0x900F, 0xF7E2, 0x9010, 0xF5EF,
+	0x9011, 0xCFC7, 0x9014, 0xD4B2, 0x9015, 0xCCEF, 0x9017, 0xD4E8,
+	0x9019, 0xEECF, 0x901A, 0xF7D7, 0x901D, 0xE0A6, 0x901E, 0xD6C1,
+	0x901F, 0xE1DC, 0x9020, 0xF0E3, 0x9021, 0xF1E4, 0x9022, 0xDCF1,
+	0x9023, 0xD6A7, 0x902E, 0xF4F5, 0x9031, 0xF1CE, 0x9032, 0xF2E4,
+	0x9035, 0xD0B0, 0x9038, 0xECEF, 0x903C, 0xF9BA, 0x903E, 0xEBB5,
+	0x9041, 0xD4ED, 0x9042, 0xE2C4, 0x9047, 0xE9E7, 0x904A, 0xEBB4,
+	0x904B, 0xEAA1, 0x904D, 0xF8BC, 0x904E, 0xCEA6, 0x9050, 0xF9C6,
+	0x9051, 0xFCDA, 0x9053, 0xD4B3, 0x9054, 0xD3B9, 0x9055, 0xEADE,
+	0x9059, 0xE9AB, 0x905C, 0xE1E1, 0x905D, 0xD3CF, 0x905E, 0xF4F6,
+	0x9060, 0xEAC0, 0x9061, 0xE1CF, 0x9063, 0xCCBA, 0x9069, 0xEEEA,
+	0x906D, 0xF0E4, 0x906E, 0xF3B4, 0x906F, 0xD4EE, 0x9072, 0xF2C0,
+	0x9075, 0xF1E5, 0x9077, 0xF4C3, 0x9078, 0xE0D4, 0x907A, 0xEBB6,
+	0x907C, 0xD7A1, 0x907D, 0xCBE8, 0x907F, 0xF9AD, 0x9080, 0xE9AD,
+	0x9081, 0xD8E4, 0x9082, 0xFAB3, 0x9083, 0xE2C5, 0x9084, 0xFCBD,
+	0x9087, 0xECC4, 0x9088, 0xD8B1, 0x908A, 0xDCAB, 0x908F, 0xD5A4,
+	0x9091, 0xEBE9, 0x9095, 0xE8BB, 0x9099, 0xD8D7, 0x90A2, 0xFBAE,
+	0x90A3, 0xD1E1, 0x90A6, 0xDBC0, 0x90A8, 0xF5BE, 0x90AA, 0xDEF7,
+	0x90AF, 0xCAFB, 0x90B0, 0xF7C6, 0x90B1, 0xCFC8, 0x90B5, 0xE1D0,
+	0x90B8, 0xEED0, 0x90C1, 0xE9F4, 0x90CA, 0xCEF4, 0x90DE, 0xD5CD,
+	0x90E1, 0xCFDB, 0x90E8, 0xDDBB, 0x90ED, 0xCEAC, 0x90F5, 0xE9E8,
+	0x90FD, 0xD4B4, 0x9102, 0xE4C7, 0x9112, 0xF5DB, 0x9115, 0xFAC1,
+	0x9119, 0xDEA9, 0x9127, 0xD4F8, 0x912D, 0xEFF7, 0x9132, 0xD3B3,
+	0x9149, 0xEBB7, 0x914A, 0xEFF8, 0x914B, 0xF5DC, 0x914C, 0xEDCC,
+	0x914D, 0xDBD5, 0x914E, 0xF1CF, 0x9152, 0xF1D0, 0x9162, 0xF5B2,
+	0x9169, 0xD9AE, 0x916A, 0xD5AC, 0x916C, 0xE2C6, 0x9175, 0xFDA3,
+	0x9177, 0xFBE5, 0x9178, 0xDFAB, 0x9187, 0xE2F5, 0x9189, 0xF6AD,
+	0x918B, 0xF5B3, 0x918D, 0xF0B5, 0x9192, 0xE1A5, 0x919C, 0xF5DD,
+	0x91AB, 0xECA2, 0x91AC, 0xEDFD, 0x91AE, 0xF5B4, 0x91AF, 0xFBB8,
+	0x91B1, 0xDBA3, 0x91B4, 0xD6CA, 0x91B5, 0xCBD9, 0x91C0, 0xE5D4,
+	0x91C7, 0xF3FA, 0x91C9, 0xEBB8, 0x91CB, 0xE0B7, 0x91CC, 0xD7EC,
+	0x91CD, 0xF1EC, 0x91CE, 0xE5AF, 0x91CF, 0xD5E1, 0x91D0, 0xD7ED,
+	0x91D1, 0xD1D1, 0x91D7, 0xE1F2, 0x91D8, 0xEFF9, 0x91DC, 0xDDBC,
+	0x91DD, 0xF6DC, 0x91E3, 0xF0E5, 0x91E7, 0xF4C4, 0x91EA, 0xE9E9,
+	0x91F5, 0xF3FB, 0x920D, 0xD4EF, 0x9210, 0xCCA2, 0x9211, 0xF7FE,
+	0x9212, 0xDFBC, 0x9217, 0xEBCD, 0x921E, 0xD0B7, 0x9234, 0xD6C2,
+	0x923A, 0xE8AD, 0x923F, 0xEFAF, 0x9240, 0xCBA5, 0x9245, 0xCBE9,
+	0x9249, 0xFAE8, 0x9257, 0xCCC6, 0x925B, 0xE6E7, 0x925E, 0xEAC7,
+	0x9262, 0xDBA4, 0x9264, 0xCFC9, 0x9265, 0xE2FC, 0x9266, 0xEFFA,
+	0x9280, 0xEBDE, 0x9283, 0xF5C8, 0x9285, 0xD4DE, 0x9291, 0xE0D5,
+	0x9293, 0xEFB0, 0x9296, 0xE2C7, 0x9298, 0xD9AF, 0x929C, 0xF9E7,
+	0x92B3, 0xE7E5, 0x92B6, 0xCFCA, 0x92B7, 0xE1D1, 0x92B9, 0xE2C8,
+	0x92CC, 0xEFFB, 0x92CF, 0xFAF9, 0x92D2, 0xDCF2, 0x92E4, 0xE0A7,
+	0x92EA, 0xF8E8, 0x92F8, 0xCBEA, 0x92FC, 0xCBBC, 0x9304, 0xD6E2,
+	0x9310, 0xF5DE, 0x9318, 0xF5DF, 0x931A, 0xEEB6, 0x931E, 0xE2F6,
+	0x931F, 0xD3CA, 0x9320, 0xEFFC, 0x9321, 0xD1C4, 0x9322, 0xEFB1,
+	0x9324, 0xD1C5, 0x9326, 0xD0DE, 0x9328, 0xD9E1, 0x932B, 0xE0B8,
+	0x932E, 0xCDD1, 0x932F, 0xF3B9, 0x9348, 0xE7CC, 0x934A, 0xD6A8,
+	0x934B, 0xCEA7, 0x934D, 0xD4B5, 0x9354, 0xE4C8, 0x935B, 0xD3B4,
+	0x936E, 0xEBB9, 0x9375, 0xCBF5, 0x937C, 0xF6DD, 0x937E, 0xF1A3,
+	0x938C, 0xCCC7, 0x9394, 0xE9CA, 0x9396, 0xE1F0, 0x939A, 0xF5E0,
+	0x93A3, 0xFBAF, 0x93A7, 0xCBD1, 0x93AC, 0xFBE0, 0x93AD, 0xF2E5,
+	0x93B0, 0xECF0, 0x93C3, 0xF0EC, 0x93D1, 0xEEEB, 0x93DE, 0xE9CB,
+	0x93E1, 0xCCF0, 0x93E4, 0xD7AF, 0x93F6, 0xF3A1, 0x9404, 0xFCF5,
+	0x9418, 0xF1A4, 0x9425, 0xE0D6, 0x942B, 0xEFB2, 0x9435, 0xF4D1,
+	0x9438, 0xF7A1, 0x9444, 0xF1D1, 0x9451, 0xCAFC, 0x9452, 0xCAFD,
+	0x945B, 0xCECE, 0x947D, 0xF3C8, 0x947F, 0xF3BA, 0x9577, 0xEDFE,
+	0x9580, 0xDAA6, 0x9583, 0xE0EC, 0x9589, 0xF8CD, 0x958B, 0xCBD2,
+	0x958F, 0xEBCE, 0x9591, 0xF9D8, 0x9592, 0xF9D9, 0x9593, 0xCAE0,
+	0x9594, 0xDACA, 0x9598, 0xCBA6, 0x95A3, 0xCAC8, 0x95A4, 0xF9EE,
+	0x95A5, 0xDBEC, 0x95A8, 0xD0B1, 0x95AD, 0xD5EF, 0x95B1, 0xE6F3,
+	0x95BB, 0xE7A2, 0x95BC, 0xE4D9, 0x95C7, 0xE4E1, 0x95CA, 0xFCC4,
+	0x95D4, 0xF9EF, 0x95D5, 0xCFF4, 0x95D6, 0xF7E6, 0x95DC, 0xCEBC,
+	0x95E1, 0xF4C5, 0x95E2, 0xDCA3, 0x961C, 0xDDBD, 0x9621, 0xF4C6,
+	0x962A, 0xF8A1, 0x962E, 0xE8D6, 0x9632, 0xDBC1, 0x963B, 0xF0E6,
+	0x963F, 0xE4B9, 0x9640, 0xF6ED, 0x9642, 0xF9AE, 0x9644, 0xDDBE,
+	0x964B, 0xD7B0, 0x964C, 0xD8E8, 0x964D, 0xCBBD, 0x9650, 0xF9DA,
+	0x965B, 0xF8CE, 0x965C, 0xF9F0, 0x965D, 0xE0ED, 0x965E, 0xE3B3,
+	0x965F, 0xF4B3, 0x9662, 0xEAC2, 0x9663, 0xF2E6, 0x9664, 0xF0B6,
+	0x966A, 0xDBD6, 0x9670, 0xEBE4, 0x9673, 0xF2E7, 0x9675, 0xD7D5,
+	0x9676, 0xD4B6, 0x9677, 0xF9E8, 0x9678, 0xD7C1, 0x967D, 0xE5D5,
+	0x9685, 0xE9EA, 0x9686, 0xD7CC, 0x968A, 0xD3E9, 0x968B, 0xE2C9,
+	0x968D, 0xFCDB, 0x968E, 0xCDAD, 0x9694, 0xCCB0, 0x9695, 0xEAA2,
+	0x9698, 0xE4F6, 0x9699, 0xD0C0, 0x969B, 0xF0B7, 0x969C, 0xEEA1,
+	0x96A3, 0xD7F6, 0x96A7, 0xE2CA, 0x96A8, 0xE2CB, 0x96AA, 0xFACF,
+	0x96B1, 0xEBDF, 0x96B7, 0xD6CB, 0x96BB, 0xF4B4, 0x96C0, 0xEDCD,
+	0x96C1, 0xE4D2, 0x96C4, 0xEAA9, 0x96C5, 0xE4BA, 0x96C6, 0xF3A2,
+	0x96C7, 0xCDD2, 0x96C9, 0xF6CB, 0x96CB, 0xF1E6, 0x96CC, 0xEDC1,
+	0x96CD, 0xE8BC, 0x96CE, 0xEED1, 0x96D5, 0xF0E7, 0x96D6, 0xE2CC,
+	0x96D9, 0xE4AA, 0x96DB, 0xF5E1, 0x96DC, 0xEDDA, 0x96E2, 0xD7EE,
+	0x96E3, 0xD1F1, 0x96E8, 0xE9EB, 0x96E9, 0xE9EC, 0x96EA, 0xE0E4,
+	0x96EF, 0xDAA7, 0x96F0, 0xDDD4, 0x96F2, 0xEAA3, 0x96F6, 0xD6C3,
+	0x96F7, 0xD6F4, 0x96F9, 0xDADF, 0x96FB, 0xEFB3, 0x9700, 0xE2CD,
+	0x9706, 0xEFFD, 0x9707, 0xF2E8, 0x9711, 0xEFC5, 0x9713, 0xE7E7,
+	0x9716, 0xD7FD, 0x9719, 0xE7CE, 0x971C, 0xDFDC, 0x971E, 0xF9C7,
+	0x9727, 0xD9F6, 0x9730, 0xDFAC, 0x9732, 0xD6DA, 0x9739, 0xDCA4,
+	0x973D, 0xF0B8, 0x9742, 0xD5FA, 0x9744, 0xE4F7, 0x9748, 0xD6C4,
+	0x9751, 0xF4EC, 0x9756, 0xEFFE, 0x975C, 0xF0A1, 0x975E, 0xDEAA,
+	0x9761, 0xDABC, 0x9762, 0xD8FC, 0x9769, 0xFAD4, 0x976D, 0xECE5,
+	0x9774, 0xFCA8, 0x9777, 0xECE6, 0x977A, 0xD8CB, 0x978B, 0xFBB9,
+	0x978D, 0xE4D3, 0x978F, 0xCDF9, 0x97A0, 0xCFD3, 0x97A8, 0xCAEA,
+	0x97AB, 0xCFD4, 0x97AD, 0xF8BD, 0x97C6, 0xF4C7, 0x97CB, 0xEADF,
+	0x97D3, 0xF9DB, 0x97DC, 0xD4B7, 0x97F3, 0xEBE5, 0x97F6, 0xE1D2,
+	0x97FB, 0xEAA4, 0x97FF, 0xFAC2, 0x9800, 0xFBE1, 0x9801, 0xFAED,
+	0x9802, 0xF0A2, 0x9803, 0xCCF1, 0x9805, 0xFAA3, 0x9806, 0xE2F7,
+	0x9808, 0xE2CE, 0x980A, 0xE9F5, 0x980C, 0xE1EB, 0x9810, 0xE7E8,
+	0x9811, 0xE8D7, 0x9812, 0xDAF8, 0x9813, 0xD4CB, 0x9817, 0xF7F6,
+	0x9818, 0xD6C5, 0x982D, 0xD4E9, 0x9830, 0xFAFA, 0x9838, 0xCCF2,
+	0x9839, 0xF7DD, 0x983B, 0xDEBA, 0x9846, 0xCEA8, 0x984C, 0xF0B9,
+	0x984D, 0xE4FE, 0x984E, 0xE4C9, 0x9854, 0xE4D4, 0x9858, 0xEAC3,
+	0x985A, 0xEFB4, 0x985E, 0xD7BE, 0x9865, 0xFBE2, 0x9867, 0xCDD3,
+	0x986B, 0xEFB5, 0x986F, 0xFAE9, 0x98A8, 0xF9A6, 0x98AF, 0xDFBD,
+	0x98B1, 0xF7C7, 0x98C4, 0xF8FD, 0x98C7, 0xF8FC, 0x98DB, 0xDEAB,
+	0x98DC, 0xDBE8, 0x98DF, 0xE3DD, 0x98E1, 0xE1E2, 0x98E2, 0xD1C6,
+	0x98ED, 0xF6D0, 0x98EE, 0xEBE6, 0x98EF, 0xDAF9, 0x98F4, 0xECC7,
+	0x98FC, 0xDEF8, 0x98FD, 0xF8E9, 0x98FE, 0xE3DE, 0x9903, 0xCEF5,
+	0x9909, 0xFAC3, 0x990A, 0xE5D7, 0x990C, 0xECC8, 0x9910, 0xF3C9,
+	0x9913, 0xE4BB, 0x9918, 0xE6AE, 0x991E, 0xEFB6, 0x9920, 0xDCBF,
+	0x9928, 0xCEBD, 0x9945, 0xD8C3, 0x9949, 0xD0CF, 0x994B, 0xCFFA,
+	0x994C, 0xF3CA, 0x994D, 0xE0D7, 0x9951, 0xD1C7, 0x9952, 0xE9AE,
+	0x9954, 0xE8BD, 0x9957, 0xFAC4, 0x9996, 0xE2CF, 0x9999, 0xFAC5,
+	0x999D, 0xF9B8, 0x99A5, 0xDCE0, 0x99A8, 0xFBB0, 0x99AC, 0xD8A9,
+	0x99AD, 0xE5DF, 0x99AE, 0xF9A7, 0x99B1, 0xF6EE, 0x99B3, 0xF6CC,
+	0x99B4, 0xE2F8, 0x99B9, 0xECF1, 0x99C1, 0xDAE0, 0x99D0, 0xF1D2,
+	0x99D1, 0xD2CC, 0x99D2, 0xCFCB, 0x99D5, 0xCABD, 0x99D9, 0xDDBF,
+	0x99DD, 0xF6EF, 0x99DF, 0xDEF9, 0x99ED, 0xFAB4, 0x99F1, 0xD5AD,
+	0x99FF, 0xF1E7, 0x9A01, 0xDEBE, 0x9A08, 0xDCC0, 0x9A0E, 0xD1C8,
+	0x9A0F, 0xD1C9, 0x9A19, 0xF8BE, 0x9A2B, 0xCBF6, 0x9A30, 0xD4F9,
+	0x9A36, 0xF5E2, 0x9A37, 0xE1D3, 0x9A40, 0xD8E9, 0x9A43, 0xF8FE,
+	0x9A45, 0xCFCC, 0x9A4D, 0xFDA4, 0x9A55, 0xCEF6, 0x9A57, 0xFAD0,
+	0x9A5A, 0xCCF3, 0x9A5B, 0xE6BE, 0x9A5F, 0xF6AE, 0x9A62, 0xD5F0,
+	0x9A65, 0xD1CA, 0x9A69, 0xFCBE, 0x9A6A, 0xD5F1, 0x9AA8, 0xCDE9,
+	0x9AB8, 0xFAB5, 0x9AD3, 0xE2D0, 0x9AD4, 0xF4F7, 0x9AD8, 0xCDD4,
+	0x9AE5, 0xE7A3, 0x9AEE, 0xDBA5, 0x9B1A, 0xE2D1, 0x9B27, 0xD7A2,
+	0x9B2A, 0xF7E3, 0x9B31, 0xEAA6, 0x9B3C, 0xD0A1, 0x9B41, 0xCEDA,
+	0x9B42, 0xFBEB, 0x9B43, 0xDBA6, 0x9B44, 0xDBDE, 0x9B45, 0xD8E5,
+	0x9B4F, 0xEAE0, 0x9B54, 0xD8AA, 0x9B5A, 0xE5E0, 0x9B6F, 0xD6DB,
+	0x9B8E, 0xEFC6, 0x9B91, 0xF8EA, 0x9B9F, 0xE4D5, 0x9BAB, 0xCEF7,
+	0x9BAE, 0xE0D8, 0x9BC9, 0xD7EF, 0x9BD6, 0xF4ED, 0x9BE4, 0xCDE6,
+	0x9BE8, 0xCCF4, 0x9C0D, 0xF5E3, 0x9C10, 0xE4CA, 0x9C12, 0xDCE1,
+	0x9C15, 0xF9C8, 0x9C25, 0xFCBF, 0x9C32, 0xE8A7, 0x9C3B, 0xD8C4,
+	0x9C47, 0xCBBE, 0x9C49, 0xDCAE, 0x9C57, 0xD7F7, 0x9CE5, 0xF0E8,
+	0x9CE7, 0xDDC0, 0x9CE9, 0xCFCD, 0x9CF3, 0xDCF3, 0x9CF4, 0xD9B0,
+	0x9CF6, 0xE6E9, 0x9D09, 0xE4BC, 0x9D1B, 0xEAC4, 0x9D26, 0xE4EC,
+	0x9D28, 0xE4E5, 0x9D3B, 0xFBF8, 0x9D51, 0xCCBB, 0x9D5D, 0xE4BD,
+	0x9D60, 0xCDDC, 0x9D61, 0xD9F7, 0x9D6C, 0xDDDF, 0x9D72, 0xEDCE,
+	0x9DA9, 0xD9D0, 0x9DAF, 0xE5A3, 0x9DB4, 0xF9CD, 0x9DC4, 0xCDAE,
+	0x9DD7, 0xCFCE, 0x9DF2, 0xF6AF, 0x9DF8, 0xFDD3, 0x9DF9, 0xEBED,
+	0x9DFA, 0xD6DC, 0x9E1A, 0xE5A4, 0x9E1E, 0xD5B6, 0x9E75, 0xD6DD,
+	0x9E79, 0xF9E9, 0x9E7D, 0xE7A4, 0x9E7F, 0xD6E3, 0x9E92, 0xD1CB,
+	0x9E93, 0xD6E4, 0x9E97, 0xD5F2, 0x9E9D, 0xDEFA, 0x9E9F, 0xD7F8,
+	0x9EA5, 0xD8EA, 0x9EB4, 0xCFD5, 0x9EB5, 0xD8FD, 0x9EBB, 0xD8AB,
+	0x9EBE, 0xFDCB, 0x9EC3, 0xFCDC, 0x9ECD, 0xE0A8, 0x9ECE, 0xD5F3,
+	0x9ED1, 0xFDD9, 0x9ED4, 0xCCA3, 0x9ED8, 0xD9F9, 0x9EDB, 0xD3EA,
+	0x9EDC, 0xF5F5, 0x9EDE, 0xEFC7, 0x9EE8, 0xD3DA, 0x9EF4, 0xDABD,
+	0x9F07, 0xE8A8, 0x9F08, 0xDCAF, 0x9F0E, 0xF0A3, 0x9F13, 0xCDD5,
+	0x9F20, 0xE0A9, 0x9F3B, 0xDEAC, 0x9F4A, 0xF0BA, 0x9F4B, 0xEEB1,
+	0x9F4E, 0xEEB2, 0x9F52, 0xF6CD, 0x9F5F, 0xEED2, 0x9F61, 0xD6C6,
+	0x9F67, 0xE0E5, 0x9F6A, 0xF3BB, 0x9F6C, 0xE5E1, 0x9F77, 0xE4CB,
+	0x9F8D, 0xD7A3, 0x9F90, 0xDBC2, 0x9F95, 0xCAFE, 0x9F9C, 0xCFCF,
+	0xAC00, 0xB0A1, 0xAC01, 0xB0A2, 0xAC02, 0x8141, 0xAC03, 0x8142,
+	0xAC04, 0xB0A3, 0xAC05, 0x8143, 0xAC06, 0x8144, 0xAC07, 0xB0A4,
+	0xAC08, 0xB0A5, 0xAC09, 0xB0A6, 0xAC0A, 0xB0A7, 0xAC0B, 0x8145,
+	0xAC0C, 0x8146, 0xAC0D, 0x8147, 0xAC0E, 0x8148, 0xAC0F, 0x8149,
+	0xAC10, 0xB0A8, 0xAC11, 0xB0A9, 0xAC12, 0xB0AA, 0xAC13, 0xB0AB,
+	0xAC14, 0xB0AC, 0xAC15, 0xB0AD, 0xAC16, 0xB0AE, 0xAC17, 0xB0AF,
+	0xAC18, 0x814A, 0xAC19, 0xB0B0, 0xAC1A, 0xB0B1, 0xAC1B, 0xB0B2,
+	0xAC1C, 0xB0B3, 0xAC1D, 0xB0B4, 0xAC1E, 0x814B, 0xAC1F, 0x814C,
+	0xAC20, 0xB0B5, 0xAC21, 0x814D, 0xAC22, 0x814E, 0xAC23, 0x814F,
+	0xAC24, 0xB0B6, 0xAC25, 0x8150, 0xAC26, 0x8151, 0xAC27, 0x8152,
+	0xAC28, 0x8153, 0xAC29, 0x8154, 0xAC2A, 0x8155, 0xAC2B, 0x8156,
+	0xAC2C, 0xB0B7, 0xAC2D, 0xB0B8, 0xAC2E, 0x8157, 0xAC2F, 0xB0B9,
+	0xAC30, 0xB0BA, 0xAC31, 0xB0BB, 0xAC32, 0x8158, 0xAC33, 0x8159,
+	0xAC34, 0x815A, 0xAC35, 0x8161, 0xAC36, 0x8162, 0xAC37, 0x8163,
+	0xAC38, 0xB0BC, 0xAC39, 0xB0BD, 0xAC3A, 0x8164, 0xAC3B, 0x8165,
+	0xAC3C, 0xB0BE, 0xAC3D, 0x8166, 0xAC3E, 0x8167, 0xAC3F, 0x8168,
+	0xAC40, 0xB0BF, 0xAC41, 0x8169, 0xAC42, 0x816A, 0xAC43, 0x816B,
+	0xAC44, 0x816C, 0xAC45, 0x816D, 0xAC46, 0x816E, 0xAC47, 0x816F,
+	0xAC48, 0x8170, 0xAC49, 0x8171, 0xAC4A, 0x8172, 0xAC4B, 0xB0C0,
+	0xAC4C, 0x8173, 0xAC4D, 0xB0C1, 0xAC4E, 0x8174, 0xAC4F, 0x8175,
+	0xAC50, 0x8176, 0xAC51, 0x8177, 0xAC52, 0x8178, 0xAC53, 0x8179,
+	0xAC54, 0xB0C2, 0xAC55, 0x817A, 0xAC56, 0x8181, 0xAC57, 0x8182,
+	0xAC58, 0xB0C3, 0xAC59, 0x8183, 0xAC5A, 0x8184, 0xAC5B, 0x8185,
+	0xAC5C, 0xB0C4, 0xAC5D, 0x8186, 0xAC5E, 0x8187, 0xAC5F, 0x8188,
+	0xAC60, 0x8189, 0xAC61, 0x818A, 0xAC62, 0x818B, 0xAC63, 0x818C,
+	0xAC64, 0x818D, 0xAC65, 0x818E, 0xAC66, 0x818F, 0xAC67, 0x8190,
+	0xAC68, 0x8191, 0xAC69, 0x8192, 0xAC6A, 0x8193, 0xAC6B, 0x8194,
+	0xAC6C, 0x8195, 0xAC6D, 0x8196, 0xAC6E, 0x8197, 0xAC6F, 0x8198,
+	0xAC70, 0xB0C5, 0xAC71, 0xB0C6, 0xAC72, 0x8199, 0xAC73, 0x819A,
+	0xAC74, 0xB0C7, 0xAC75, 0x819B, 0xAC76, 0x819C, 0xAC77, 0xB0C8,
+	0xAC78, 0xB0C9, 0xAC79, 0x819D, 0xAC7A, 0xB0CA, 0xAC7B, 0x819E,
+	0xAC7C, 0x819F, 0xAC7D, 0x81A0, 0xAC7E, 0x81A1, 0xAC7F, 0x81A2,
+	0xAC80, 0xB0CB, 0xAC81, 0xB0CC, 0xAC82, 0x81A3, 0xAC83, 0xB0CD,
+	0xAC84, 0xB0CE, 0xAC85, 0xB0CF, 0xAC86, 0xB0D0, 0xAC87, 0x81A4,
+	0xAC88, 0x81A5, 0xAC89, 0xB0D1, 0xAC8A, 0xB0D2, 0xAC8B, 0xB0D3,
+	0xAC8C, 0xB0D4, 0xAC8D, 0x81A6, 0xAC8E, 0x81A7, 0xAC8F, 0x81A8,
+	0xAC90, 0xB0D5, 0xAC91, 0x81A9, 0xAC92, 0x81AA, 0xAC93, 0x81AB,
+	0xAC94, 0xB0D6, 0xAC95, 0x81AC, 0xAC96, 0x81AD, 0xAC97, 0x81AE,
+	0xAC98, 0x81AF, 0xAC99, 0x81B0, 0xAC9A, 0x81B1, 0xAC9B, 0x81B2,
+	0xAC9C, 0xB0D7, 0xAC9D, 0xB0D8, 0xAC9E, 0x81B3, 0xAC9F, 0xB0D9,
+	0xACA0, 0xB0DA, 0xACA1, 0xB0DB, 0xACA2, 0x81B4, 0xACA3, 0x81B5,
+	0xACA4, 0x81B6, 0xACA5, 0x81B7, 0xACA6, 0x81B8, 0xACA7, 0x81B9,
+	0xACA8, 0xB0DC, 0xACA9, 0xB0DD, 0xACAA, 0xB0DE, 0xACAB, 0x81BA,
+	0xACAC, 0xB0DF, 0xACAD, 0x81BB, 0xACAE, 0x81BC, 0xACAF, 0xB0E0,
+	0xACB0, 0xB0E1, 0xACB1, 0x81BD, 0xACB2, 0x81BE, 0xACB3, 0x81BF,
+	0xACB4, 0x81C0, 0xACB5, 0x81C1, 0xACB6, 0x81C2, 0xACB7, 0x81C3,
+	0xACB8, 0xB0E2, 0xACB9, 0xB0E3, 0xACBA, 0x81C4, 0xACBB, 0xB0E4,
+	0xACBC, 0xB0E5, 0xACBD, 0xB0E6, 0xACBE, 0x81C5, 0xACBF, 0x81C6,
+	0xACC0, 0x81C7, 0xACC1, 0xB0E7, 0xACC2, 0x81C8, 0xACC3, 0x81C9,
+	0xACC4, 0xB0E8, 0xACC5, 0x81CA, 0xACC6, 0x81CB, 0xACC7, 0x81CC,
+	0xACC8, 0xB0E9, 0xACC9, 0x81CD, 0xACCA, 0x81CE, 0xACCB, 0x81CF,
+	0xACCC, 0xB0EA, 0xACCD, 0x81D0, 0xACCE, 0x81D1, 0xACCF, 0x81D2,
+	0xACD0, 0x81D3, 0xACD1, 0x81D4, 0xACD2, 0x81D5, 0xACD3, 0x81D6,
+	0xACD4, 0x81D7, 0xACD5, 0xB0EB, 0xACD6, 0x81D8, 0xACD7, 0xB0EC,
+	0xACD8, 0x81D9, 0xACD9, 0x81DA, 0xACDA, 0x81DB, 0xACDB, 0x81DC,
+	0xACDC, 0x81DD, 0xACDD, 0x81DE, 0xACDE, 0x81DF, 0xACDF, 0x81E0,
+	0xACE0, 0xB0ED, 0xACE1, 0xB0EE, 0xACE2, 0x81E1, 0xACE3, 0x81E2,
+	0xACE4, 0xB0EF, 0xACE5, 0x81E3, 0xACE6, 0x81E4, 0xACE7, 0xB0F0,
+	0xACE8, 0xB0F1, 0xACE9, 0x81E5, 0xACEA, 0xB0F2, 0xACEB, 0x81E6,
+	0xACEC, 0xB0F3, 0xACED, 0x81E7, 0xACEE, 0x81E8, 0xACEF, 0xB0F4,
+	0xACF0, 0xB0F5, 0xACF1, 0xB0F6, 0xACF2, 0x81E9, 0xACF3, 0xB0F7,
+	0xACF4, 0x81EA, 0xACF5, 0xB0F8, 0xACF6, 0xB0F9, 0xACF7, 0x81EB,
+	0xACF8, 0x81EC, 0xACF9, 0x81ED, 0xACFA, 0x81EE, 0xACFB, 0x81EF,
+	0xACFC, 0xB0FA, 0xACFD, 0xB0FB, 0xACFE, 0x81F0, 0xACFF, 0x81F1,
+	0xAD00, 0xB0FC, 0xAD01, 0x81F2, 0xAD02, 0x81F3, 0xAD03, 0x81F4,
+	0xAD04, 0xB0FD, 0xAD05, 0x81F5, 0xAD06, 0xB0FE, 0xAD07, 0x81F6,
+	0xAD08, 0x81F7, 0xAD09, 0x81F8, 0xAD0A, 0x81F9, 0xAD0B, 0x81FA,
+	0xAD0C, 0xB1A1, 0xAD0D, 0xB1A2, 0xAD0E, 0x81FB, 0xAD0F, 0xB1A3,
+	0xAD10, 0x81FC, 0xAD11, 0xB1A4, 0xAD12, 0x81FD, 0xAD13, 0x81FE,
+	0xAD14, 0x8241, 0xAD15, 0x8242, 0xAD16, 0x8243, 0xAD17, 0x8244,
+	0xAD18, 0xB1A5, 0xAD19, 0x8245, 0xAD1A, 0x8246, 0xAD1B, 0x8247,
+	0xAD1C, 0xB1A6, 0xAD1D, 0x8248, 0xAD1E, 0x8249, 0xAD1F, 0x824A,
+	0xAD20, 0xB1A7, 0xAD21, 0x824B, 0xAD22, 0x824C, 0xAD23, 0x824D,
+	0xAD24, 0x824E, 0xAD25, 0x824F, 0xAD26, 0x8250, 0xAD27, 0x8251,
+	0xAD28, 0x8252, 0xAD29, 0xB1A8, 0xAD2A, 0x8253, 0xAD2B, 0x8254,
+	0xAD2C, 0xB1A9, 0xAD2D, 0xB1AA, 0xAD2E, 0x8255, 0xAD2F, 0x8256,
+	0xAD30, 0x8257, 0xAD31, 0x8258, 0xAD32, 0x8259, 0xAD33, 0x825A,
+	0xAD34, 0xB1AB, 0xAD35, 0xB1AC, 0xAD36, 0x8261, 0xAD37, 0x8262,
+	0xAD38, 0xB1AD, 0xAD39, 0x8263, 0xAD3A, 0x8264, 0xAD3B, 0x8265,
+	0xAD3C, 0xB1AE, 0xAD3D, 0x8266, 0xAD3E, 0x8267, 0xAD3F, 0x8268,
+	0xAD40, 0x8269, 0xAD41, 0x826A, 0xAD42, 0x826B, 0xAD43, 0x826C,
+	0xAD44, 0xB1AF, 0xAD45, 0xB1B0, 0xAD46, 0x826D, 0xAD47, 0xB1B1,
+	0xAD48, 0x826E, 0xAD49, 0xB1B2, 0xAD4A, 0x826F, 0xAD4B, 0x8270,
+	0xAD4C, 0x8271, 0xAD4D, 0x8272, 0xAD4E, 0x8273, 0xAD4F, 0x8274,
+	0xAD50, 0xB1B3, 0xAD51, 0x8275, 0xAD52, 0x8276, 0xAD53, 0x8277,
+	0xAD54, 0xB1B4, 0xAD55, 0x8278, 0xAD56, 0x8279, 0xAD57, 0x827A,
+	0xAD58, 0xB1B5, 0xAD59, 0x8281, 0xAD5A, 0x8282, 0xAD5B, 0x8283,
+	0xAD5C, 0x8284, 0xAD5D, 0x8285, 0xAD5E, 0x8286, 0xAD5F, 0x8287,
+	0xAD60, 0x8288, 0xAD61, 0xB1B6, 0xAD62, 0x8289, 0xAD63, 0xB1B7,
+	0xAD64, 0x828A, 0xAD65, 0x828B, 0xAD66, 0x828C, 0xAD67, 0x828D,
+	0xAD68, 0x828E, 0xAD69, 0x828F, 0xAD6A, 0x8290, 0xAD6B, 0x8291,
+	0xAD6C, 0xB1B8, 0xAD6D, 0xB1B9, 0xAD6E, 0x8292, 0xAD6F, 0x8293,
+	0xAD70, 0xB1BA, 0xAD71, 0x8294, 0xAD72, 0x8295, 0xAD73, 0xB1BB,
+	0xAD74, 0xB1BC, 0xAD75, 0xB1BD, 0xAD76, 0xB1BE, 0xAD77, 0x8296,
+	0xAD78, 0x8297, 0xAD79, 0x8298, 0xAD7A, 0x8299, 0xAD7B, 0xB1BF,
+	0xAD7C, 0xB1C0, 0xAD7D, 0xB1C1, 0xAD7E, 0x829A, 0xAD7F, 0xB1C2,
+	0xAD80, 0x829B, 0xAD81, 0xB1C3, 0xAD82, 0xB1C4, 0xAD83, 0x829C,
+	0xAD84, 0x829D, 0xAD85, 0x829E, 0xAD86, 0x829F, 0xAD87, 0x82A0,
+	0xAD88, 0xB1C5, 0xAD89, 0xB1C6, 0xAD8A, 0x82A1, 0xAD8B, 0x82A2,
+	0xAD8C, 0xB1C7, 0xAD8D, 0x82A3, 0xAD8E, 0x82A4, 0xAD8F, 0x82A5,
+	0xAD90, 0xB1C8, 0xAD91, 0x82A6, 0xAD92, 0x82A7, 0xAD93, 0x82A8,
+	0xAD94, 0x82A9, 0xAD95, 0x82AA, 0xAD96, 0x82AB, 0xAD97, 0x82AC,
+	0xAD98, 0x82AD, 0xAD99, 0x82AE, 0xAD9A, 0x82AF, 0xAD9B, 0x82B0,
+	0xAD9C, 0xB1C9, 0xAD9D, 0xB1CA, 0xAD9E, 0x82B1, 0xAD9F, 0x82B2,
+	0xADA0, 0x82B3, 0xADA1, 0x82B4, 0xADA2, 0x82B5, 0xADA3, 0x82B6,
+	0xADA4, 0xB1CB, 0xADA5, 0x82B7, 0xADA6, 0x82B8, 0xADA7, 0x82B9,
+	0xADA8, 0x82BA, 0xADA9, 0x82BB, 0xADAA, 0x82BC, 0xADAB, 0x82BD,
+	0xADAC, 0x82BE, 0xADAD, 0x82BF, 0xADAE, 0x82C0, 0xADAF, 0x82C1,
+	0xADB0, 0x82C2, 0xADB1, 0x82C3, 0xADB2, 0x82C4, 0xADB3, 0x82C5,
+	0xADB4, 0x82C6, 0xADB5, 0x82C7, 0xADB6, 0x82C8, 0xADB7, 0xB1CC,
+	0xADB8, 0x82C9, 0xADB9, 0x82CA, 0xADBA, 0x82CB, 0xADBB, 0x82CC,
+	0xADBC, 0x82CD, 0xADBD, 0x82CE, 0xADBE, 0x82CF, 0xADBF, 0x82D0,
+	0xADC0, 0xB1CD, 0xADC1, 0xB1CE, 0xADC2, 0x82D1, 0xADC3, 0x82D2,
+	0xADC4, 0xB1CF, 0xADC5, 0x82D3, 0xADC6, 0x82D4, 0xADC7, 0x82D5,
+	0xADC8, 0xB1D0, 0xADC9, 0x82D6, 0xADCA, 0x82D7, 0xADCB, 0x82D8,
+	0xADCC, 0x82D9, 0xADCD, 0x82DA, 0xADCE, 0x82DB, 0xADCF, 0x82DC,
+	0xADD0, 0xB1D1, 0xADD1, 0xB1D2, 0xADD2, 0x82DD, 0xADD3, 0xB1D3,
+	0xADD4, 0x82DE, 0xADD5, 0x82DF, 0xADD6, 0x82E0, 0xADD7, 0x82E1,
+	0xADD8, 0x82E2, 0xADD9, 0x82E3, 0xADDA, 0x82E4, 0xADDB, 0x82E5,
+	0xADDC, 0xB1D4, 0xADDD, 0x82E6, 0xADDE, 0x82E7, 0xADDF, 0x82E8,
+	0xADE0, 0xB1D5, 0xADE1, 0x82E9, 0xADE2, 0x82EA, 0xADE3, 0x82EB,
+	0xADE4, 0xB1D6, 0xADE5, 0x82EC, 0xADE6, 0x82ED, 0xADE7, 0x82EE,
+	0xADE8, 0x82EF, 0xADE9, 0x82F0, 0xADEA, 0x82F1, 0xADEB, 0x82F2,
+	0xADEC, 0x82F3, 0xADED, 0x82F4, 0xADEE, 0x82F5, 0xADEF, 0x82F6,
+	0xADF0, 0x82F7, 0xADF1, 0x82F8, 0xADF2, 0x82F9, 0xADF3, 0x82FA,
+	0xADF4, 0x82FB, 0xADF5, 0x82FC, 0xADF6, 0x82FD, 0xADF7, 0x82FE,
+	0xADF8, 0xB1D7, 0xADF9, 0xB1D8, 0xADFA, 0x8341, 0xADFB, 0x8342,
+	0xADFC, 0xB1D9, 0xADFD, 0x8343, 0xADFE, 0x8344, 0xADFF, 0xB1DA,
+	0xAE00, 0xB1DB, 0xAE01, 0xB1DC, 0xAE02, 0x8345, 0xAE03, 0x8346,
+	0xAE04, 0x8347, 0xAE05, 0x8348, 0xAE06, 0x8349, 0xAE07, 0x834A,
+	0xAE08, 0xB1DD, 0xAE09, 0xB1DE, 0xAE0A, 0x834B, 0xAE0B, 0xB1DF,
+	0xAE0C, 0x834C, 0xAE0D, 0xB1E0, 0xAE0E, 0x834D, 0xAE0F, 0x834E,
+	0xAE10, 0x834F, 0xAE11, 0x8350, 0xAE12, 0x8351, 0xAE13, 0x8352,
+	0xAE14, 0xB1E1, 0xAE15, 0x8353, 0xAE16, 0x8354, 0xAE17, 0x8355,
+	0xAE18, 0x8356, 0xAE19, 0x8357, 0xAE1A, 0x8358, 0xAE1B, 0x8359,
+	0xAE1C, 0x835A, 0xAE1D, 0x8361, 0xAE1E, 0x8362, 0xAE1F, 0x8363,
+	0xAE20, 0x8364, 0xAE21, 0x8365, 0xAE22, 0x8366, 0xAE23, 0x8367,
+	0xAE24, 0x8368, 0xAE25, 0x8369, 0xAE26, 0x836A, 0xAE27, 0x836B,
+	0xAE28, 0x836C, 0xAE29, 0x836D, 0xAE2A, 0x836E, 0xAE2B, 0x836F,
+	0xAE2C, 0x8370, 0xAE2D, 0x8371, 0xAE2E, 0x8372, 0xAE2F, 0x8373,
+	0xAE30, 0xB1E2, 0xAE31, 0xB1E3, 0xAE32, 0x8374, 0xAE33, 0x8375,
+	0xAE34, 0xB1E4, 0xAE35, 0x8376, 0xAE36, 0x8377, 0xAE37, 0xB1E5,
+	0xAE38, 0xB1E6, 0xAE39, 0x8378, 0xAE3A, 0xB1E7, 0xAE3B, 0x8379,
+	0xAE3C, 0x837A, 0xAE3D, 0x8381, 0xAE3E, 0x8382, 0xAE3F, 0x8383,
+	0xAE40, 0xB1E8, 0xAE41, 0xB1E9, 0xAE42, 0x8384, 0xAE43, 0xB1EA,
+	0xAE44, 0x8385, 0xAE45, 0xB1EB, 0xAE46, 0xB1EC, 0xAE47, 0x8386,
+	0xAE48, 0x8387, 0xAE49, 0x8388, 0xAE4A, 0xB1ED, 0xAE4B, 0x8389,
+	0xAE4C, 0xB1EE, 0xAE4D, 0xB1EF, 0xAE4E, 0xB1F0, 0xAE4F, 0x838A,
+	0xAE50, 0xB1F1, 0xAE51, 0x838B, 0xAE52, 0x838C, 0xAE53, 0x838D,
+	0xAE54, 0xB1F2, 0xAE55, 0x838E, 0xAE56, 0xB1F3, 0xAE57, 0x838F,
+	0xAE58, 0x8390, 0xAE59, 0x8391, 0xAE5A, 0x8392, 0xAE5B, 0x8393,
+	0xAE5C, 0xB1F4, 0xAE5D, 0xB1F5, 0xAE5E, 0x8394, 0xAE5F, 0xB1F6,
+	0xAE60, 0xB1F7, 0xAE61, 0xB1F8, 0xAE62, 0x8395, 0xAE63, 0x8396,
+	0xAE64, 0x8397, 0xAE65, 0xB1F9, 0xAE66, 0x8398, 0xAE67, 0x8399,
+	0xAE68, 0xB1FA, 0xAE69, 0xB1FB, 0xAE6A, 0x839A, 0xAE6B, 0x839B,
+	0xAE6C, 0xB1FC, 0xAE6D, 0x839C, 0xAE6E, 0x839D, 0xAE6F, 0x839E,
+	0xAE70, 0xB1FD, 0xAE71, 0x839F, 0xAE72, 0x83A0, 0xAE73, 0x83A1,
+	0xAE74, 0x83A2, 0xAE75, 0x83A3, 0xAE76, 0x83A4, 0xAE77, 0x83A5,
+	0xAE78, 0xB1FE, 0xAE79, 0xB2A1, 0xAE7A, 0x83A6, 0xAE7B, 0xB2A2,
+	0xAE7C, 0xB2A3, 0xAE7D, 0xB2A4, 0xAE7E, 0x83A7, 0xAE7F, 0x83A8,
+	0xAE80, 0x83A9, 0xAE81, 0x83AA, 0xAE82, 0x83AB, 0xAE83, 0x83AC,
+	0xAE84, 0xB2A5, 0xAE85, 0xB2A6, 0xAE86, 0x83AD, 0xAE87, 0x83AE,
+	0xAE88, 0x83AF, 0xAE89, 0x83B0, 0xAE8A, 0x83B1, 0xAE8B, 0x83B2,
+	0xAE8C, 0xB2A7, 0xAE8D, 0x83B3, 0xAE8E, 0x83B4, 0xAE8F, 0x83B5,
+	0xAE90, 0x83B6, 0xAE91, 0x83B7, 0xAE92, 0x83B8, 0xAE93, 0x83B9,
+	0xAE94, 0x83BA, 0xAE95, 0x83BB, 0xAE96, 0x83BC, 0xAE97, 0x83BD,
+	0xAE98, 0x83BE, 0xAE99, 0x83BF, 0xAE9A, 0x83C0, 0xAE9B, 0x83C1,
+	0xAE9C, 0x83C2, 0xAE9D, 0x83C3, 0xAE9E, 0x83C4, 0xAE9F, 0x83C5,
+	0xAEA0, 0x83C6, 0xAEA1, 0x83C7, 0xAEA2, 0x83C8, 0xAEA3, 0x83C9,
+	0xAEA4, 0x83CA, 0xAEA5, 0x83CB, 0xAEA6, 0x83CC, 0xAEA7, 0x83CD,
+	0xAEA8, 0x83CE, 0xAEA9, 0x83CF, 0xAEAA, 0x83D0, 0xAEAB, 0x83D1,
+	0xAEAC, 0x83D2, 0xAEAD, 0x83D3, 0xAEAE, 0x83D4, 0xAEAF, 0x83D5,
+	0xAEB0, 0x83D6, 0xAEB1, 0x83D7, 0xAEB2, 0x83D8, 0xAEB3, 0x83D9,
+	0xAEB4, 0x83DA, 0xAEB5, 0x83DB, 0xAEB6, 0x83DC, 0xAEB7, 0x83DD,
+	0xAEB8, 0x83DE, 0xAEB9, 0x83DF, 0xAEBA, 0x83E0, 0xAEBB, 0x83E1,
+	0xAEBC, 0xB2A8, 0xAEBD, 0xB2A9, 0xAEBE, 0xB2AA, 0xAEBF, 0x83E2,
+	0xAEC0, 0xB2AB, 0xAEC1, 0x83E3, 0xAEC2, 0x83E4, 0xAEC3, 0x83E5,
+	0xAEC4, 0xB2AC, 0xAEC5, 0x83E6, 0xAEC6, 0x83E7, 0xAEC7, 0x83E8,
+	0xAEC8, 0x83E9, 0xAEC9, 0x83EA, 0xAECA, 0x83EB, 0xAECB, 0x83EC,
+	0xAECC, 0xB2AD, 0xAECD, 0xB2AE, 0xAECE, 0x83ED, 0xAECF, 0xB2AF,
+	0xAED0, 0xB2B0, 0xAED1, 0xB2B1, 0xAED2, 0x83EE, 0xAED3, 0x83EF,
+	0xAED4, 0x83F0, 0xAED5, 0x83F1, 0xAED6, 0x83F2, 0xAED7, 0x83F3,
+	0xAED8, 0xB2B2, 0xAED9, 0xB2B3, 0xAEDA, 0x83F4, 0xAEDB, 0x83F5,
+	0xAEDC, 0xB2B4, 0xAEDD, 0x83F6, 0xAEDE, 0x83F7, 0xAEDF, 0x83F8,
+	0xAEE0, 0x83F9, 0xAEE1, 0x83FA, 0xAEE2, 0x83FB, 0xAEE3, 0x83FC,
+	0xAEE4, 0x83FD, 0xAEE5, 0x83FE, 0xAEE6, 0x8441, 0xAEE7, 0x8442,
+	0xAEE8, 0xB2B5, 0xAEE9, 0x8443, 0xAEEA, 0x8444, 0xAEEB, 0xB2B6,
+	0xAEEC, 0x8445, 0xAEED, 0xB2B7, 0xAEEE, 0x8446, 0xAEEF, 0x8447,
+	0xAEF0, 0x8448, 0xAEF1, 0x8449, 0xAEF2, 0x844A, 0xAEF3, 0x844B,
+	0xAEF4, 0xB2B8, 0xAEF5, 0x844C, 0xAEF6, 0x844D, 0xAEF7, 0x844E,
+	0xAEF8, 0xB2B9, 0xAEF9, 0x844F, 0xAEFA, 0x8450, 0xAEFB, 0x8451,
+	0xAEFC, 0xB2BA, 0xAEFD, 0x8452, 0xAEFE, 0x8453, 0xAEFF, 0x8454,
+	0xAF00, 0x8455, 0xAF01, 0x8456, 0xAF02, 0x8457, 0xAF03, 0x8458,
+	0xAF04, 0x8459, 0xAF05, 0x845A, 0xAF06, 0x8461, 0xAF07, 0xB2BB,
+	0xAF08, 0xB2BC, 0xAF09, 0x8462, 0xAF0A, 0x8463, 0xAF0B, 0x8464,
+	0xAF0C, 0x8465, 0xAF0D, 0xB2BD, 0xAF0E, 0x8466, 0xAF0F, 0x8467,
+	0xAF10, 0xB2BE, 0xAF11, 0x8468, 0xAF12, 0x8469, 0xAF13, 0x846A,
+	0xAF14, 0x846B, 0xAF15, 0x846C, 0xAF16, 0x846D, 0xAF17, 0x846E,
+	0xAF18, 0x846F, 0xAF19, 0x8470, 0xAF1A, 0x8471, 0xAF1B, 0x8472,
+	0xAF1C, 0x8473, 0xAF1D, 0x8474, 0xAF1E, 0x8475, 0xAF1F, 0x8476,
+	0xAF20, 0x8477, 0xAF21, 0x8478, 0xAF22, 0x8479, 0xAF23, 0x847A,
+	0xAF24, 0x8481, 0xAF25, 0x8482, 0xAF26, 0x8483, 0xAF27, 0x8484,
+	0xAF28, 0x8485, 0xAF29, 0x8486, 0xAF2A, 0x8487, 0xAF2B, 0x8488,
+	0xAF2C, 0xB2BF, 0xAF2D, 0xB2C0, 0xAF2E, 0x8489, 0xAF2F, 0x848A,
+	0xAF30, 0xB2C1, 0xAF31, 0x848B, 0xAF32, 0xB2C2, 0xAF33, 0x848C,
+	0xAF34, 0xB2C3, 0xAF35, 0x848D, 0xAF36, 0x848E, 0xAF37, 0x848F,
+	0xAF38, 0x8490, 0xAF39, 0x8491, 0xAF3A, 0x8492, 0xAF3B, 0x8493,
+	0xAF3C, 0xB2C4, 0xAF3D, 0xB2C5, 0xAF3E, 0x8494, 0xAF3F, 0xB2C6,
+	0xAF40, 0x8495, 0xAF41, 0xB2C7, 0xAF42, 0xB2C8, 0xAF43, 0xB2C9,
+	0xAF44, 0x8496, 0xAF45, 0x8497, 0xAF46, 0x8498, 0xAF47, 0x8499,
+	0xAF48, 0xB2CA, 0xAF49, 0xB2CB, 0xAF4A, 0x849A, 0xAF4B, 0x849B,
+	0xAF4C, 0x849C, 0xAF4D, 0x849D, 0xAF4E, 0x849E, 0xAF4F, 0x849F,
+	0xAF50, 0xB2CC, 0xAF51, 0x84A0, 0xAF52, 0x84A1, 0xAF53, 0x84A2,
+	0xAF54, 0x84A3, 0xAF55, 0x84A4, 0xAF56, 0x84A5, 0xAF57, 0x84A6,
+	0xAF58, 0x84A7, 0xAF59, 0x84A8, 0xAF5A, 0x84A9, 0xAF5B, 0x84AA,
+	0xAF5C, 0xB2CD, 0xAF5D, 0xB2CE, 0xAF5E, 0x84AB, 0xAF5F, 0x84AC,
+	0xAF60, 0x84AD, 0xAF61, 0x84AE, 0xAF62, 0x84AF, 0xAF63, 0x84B0,
+	0xAF64, 0xB2CF, 0xAF65, 0xB2D0, 0xAF66, 0x84B1, 0xAF67, 0x84B2,
+	0xAF68, 0x84B3, 0xAF69, 0x84B4, 0xAF6A, 0x84B5, 0xAF6B, 0x84B6,
+	0xAF6C, 0x84B7, 0xAF6D, 0x84B8, 0xAF6E, 0x84B9, 0xAF6F, 0x84BA,
+	0xAF70, 0x84BB, 0xAF71, 0x84BC, 0xAF72, 0x84BD, 0xAF73, 0x84BE,
+	0xAF74, 0x84BF, 0xAF75, 0x84C0, 0xAF76, 0x84C1, 0xAF77, 0x84C2,
+	0xAF78, 0x84C3, 0xAF79, 0xB2D1, 0xAF7A, 0x84C4, 0xAF7B, 0x84C5,
+	0xAF7C, 0x84C6, 0xAF7D, 0x84C7, 0xAF7E, 0x84C8, 0xAF7F, 0x84C9,
+	0xAF80, 0xB2D2, 0xAF81, 0x84CA, 0xAF82, 0x84CB, 0xAF83, 0x84CC,
+	0xAF84, 0xB2D3, 0xAF85, 0x84CD, 0xAF86, 0x84CE, 0xAF87, 0x84CF,
+	0xAF88, 0xB2D4, 0xAF89, 0x84D0, 0xAF8A, 0x84D1, 0xAF8B, 0x84D2,
+	0xAF8C, 0x84D3, 0xAF8D, 0x84D4, 0xAF8E, 0x84D5, 0xAF8F, 0x84D6,
+	0xAF90, 0xB2D5, 0xAF91, 0xB2D6, 0xAF92, 0x84D7, 0xAF93, 0x84D8,
+	0xAF94, 0x84D9, 0xAF95, 0xB2D7, 0xAF96, 0x84DA, 0xAF97, 0x84DB,
+	0xAF98, 0x84DC, 0xAF99, 0x84DD, 0xAF9A, 0x84DE, 0xAF9B, 0x84DF,
+	0xAF9C, 0xB2D8, 0xAF9D, 0x84E0, 0xAF9E, 0x84E1, 0xAF9F, 0x84E2,
+	0xAFA0, 0x84E3, 0xAFA1, 0x84E4, 0xAFA2, 0x84E5, 0xAFA3, 0x84E6,
+	0xAFA4, 0x84E7, 0xAFA5, 0x84E8, 0xAFA6, 0x84E9, 0xAFA7, 0x84EA,
+	0xAFA8, 0x84EB, 0xAFA9, 0x84EC, 0xAFAA, 0x84ED, 0xAFAB, 0x84EE,
+	0xAFAC, 0x84EF, 0xAFAD, 0x84F0, 0xAFAE, 0x84F1, 0xAFAF, 0x84F2,
+	0xAFB0, 0x84F3, 0xAFB1, 0x84F4, 0xAFB2, 0x84F5, 0xAFB3, 0x84F6,
+	0xAFB4, 0x84F7, 0xAFB5, 0x84F8, 0xAFB6, 0x84F9, 0xAFB7, 0x84FA,
+	0xAFB8, 0xB2D9, 0xAFB9, 0xB2DA, 0xAFBA, 0x84FB, 0xAFBB, 0x84FC,
+	0xAFBC, 0xB2DB, 0xAFBD, 0x84FD, 0xAFBE, 0x84FE, 0xAFBF, 0x8541,
+	0xAFC0, 0xB2DC, 0xAFC1, 0x8542, 0xAFC2, 0x8543, 0xAFC3, 0x8544,
+	0xAFC4, 0x8545, 0xAFC5, 0x8546, 0xAFC6, 0x8547, 0xAFC7, 0xB2DD,
+	0xAFC8, 0xB2DE, 0xAFC9, 0xB2DF, 0xAFCA, 0x8548, 0xAFCB, 0xB2E0,
+	0xAFCC, 0x8549, 0xAFCD, 0xB2E1, 0xAFCE, 0xB2E2, 0xAFCF, 0x854A,
+	0xAFD0, 0x854B, 0xAFD1, 0x854C, 0xAFD2, 0x854D, 0xAFD3, 0x854E,
+	0xAFD4, 0xB2E3, 0xAFD5, 0x854F, 0xAFD6, 0x8550, 0xAFD7, 0x8551,
+	0xAFD8, 0x8552, 0xAFD9, 0x8553, 0xAFDA, 0x8554, 0xAFDB, 0x8555,
+	0xAFDC, 0xB2E4, 0xAFDD, 0x8556, 0xAFDE, 0x8557, 0xAFDF, 0x8558,
+	0xAFE0, 0x8559, 0xAFE1, 0x855A, 0xAFE2, 0x8561, 0xAFE3, 0x8562,
+	0xAFE4, 0x8563, 0xAFE5, 0x8564, 0xAFE6, 0x8565, 0xAFE7, 0x8566,
+	0xAFE8, 0xB2E5, 0xAFE9, 0xB2E6, 0xAFEA, 0x8567, 0xAFEB, 0x8568,
+	0xAFEC, 0x8569, 0xAFED, 0x856A, 0xAFEE, 0x856B, 0xAFEF, 0x856C,
+	0xAFF0, 0xB2E7, 0xAFF1, 0xB2E8, 0xAFF2, 0x856D, 0xAFF3, 0x856E,
+	0xAFF4, 0xB2E9, 0xAFF5, 0x856F, 0xAFF6, 0x8570, 0xAFF7, 0x8571,
+	0xAFF8, 0xB2EA, 0xAFF9, 0x8572, 0xAFFA, 0x8573, 0xAFFB, 0x8574,
+	0xAFFC, 0x8575, 0xAFFD, 0x8576, 0xAFFE, 0x8577, 0xAFFF, 0x8578,
+	0xB000, 0xB2EB, 0xB001, 0xB2EC, 0xB002, 0x8579, 0xB003, 0x857A,
+	0xB004, 0xB2ED, 0xB005, 0x8581, 0xB006, 0x8582, 0xB007, 0x8583,
+	0xB008, 0x8584, 0xB009, 0x8585, 0xB00A, 0x8586, 0xB00B, 0x8587,
+	0xB00C, 0xB2EE, 0xB00D, 0x8588, 0xB00E, 0x8589, 0xB00F, 0x858A,
+	0xB010, 0xB2EF, 0xB011, 0x858B, 0xB012, 0x858C, 0xB013, 0x858D,
+	0xB014, 0xB2F0, 0xB015, 0x858E, 0xB016, 0x858F, 0xB017, 0x8590,
+	0xB018, 0x8591, 0xB019, 0x8592, 0xB01A, 0x8593, 0xB01B, 0x8594,
+	0xB01C, 0xB2F1, 0xB01D, 0xB2F2, 0xB01E, 0x8595, 0xB01F, 0x8596,
+	0xB020, 0x8597, 0xB021, 0x8598, 0xB022, 0x8599, 0xB023, 0x859A,
+	0xB024, 0x859B, 0xB025, 0x859C, 0xB026, 0x859D, 0xB027, 0x859E,
+	0xB028, 0xB2F3, 0xB029, 0x859F, 0xB02A, 0x85A0, 0xB02B, 0x85A1,
+	0xB02C, 0x85A2, 0xB02D, 0x85A3, 0xB02E, 0x85A4, 0xB02F, 0x85A5,
+	0xB030, 0x85A6, 0xB031, 0x85A7, 0xB032, 0x85A8, 0xB033, 0x85A9,
+	0xB034, 0x85AA, 0xB035, 0x85AB, 0xB036, 0x85AC, 0xB037, 0x85AD,
+	0xB038, 0x85AE, 0xB039, 0x85AF, 0xB03A, 0x85B0, 0xB03B, 0x85B1,
+	0xB03C, 0x85B2, 0xB03D, 0x85B3, 0xB03E, 0x85B4, 0xB03F, 0x85B5,
+	0xB040, 0x85B6, 0xB041, 0x85B7, 0xB042, 0x85B8, 0xB043, 0x85B9,
+	0xB044, 0xB2F4, 0xB045, 0xB2F5, 0xB046, 0x85BA, 0xB047, 0x85BB,
+	0xB048, 0xB2F6, 0xB049, 0x85BC, 0xB04A, 0xB2F7, 0xB04B, 0x85BD,
+	0xB04C, 0xB2F8, 0xB04D, 0x85BE, 0xB04E, 0xB2F9, 0xB04F, 0x85BF,
+	0xB050, 0x85C0, 0xB051, 0x85C1, 0xB052, 0x85C2, 0xB053, 0xB2FA,
+	0xB054, 0xB2FB, 0xB055, 0xB2FC, 0xB056, 0x85C3, 0xB057, 0xB2FD,
+	0xB058, 0x85C4, 0xB059, 0xB2FE, 0xB05A, 0x85C5, 0xB05B, 0x85C6,
+	0xB05C, 0x85C7, 0xB05D, 0xB3A1, 0xB05E, 0x85C8, 0xB05F, 0x85C9,
+	0xB060, 0x85CA, 0xB061, 0x85CB, 0xB062, 0x85CC, 0xB063, 0x85CD,
+	0xB064, 0x85CE, 0xB065, 0x85CF, 0xB066, 0x85D0, 0xB067, 0x85D1,
+	0xB068, 0x85D2, 0xB069, 0x85D3, 0xB06A, 0x85D4, 0xB06B, 0x85D5,
+	0xB06C, 0x85D6, 0xB06D, 0x85D7, 0xB06E, 0x85D8, 0xB06F, 0x85D9,
+	0xB070, 0x85DA, 0xB071, 0x85DB, 0xB072, 0x85DC, 0xB073, 0x85DD,
+	0xB074, 0x85DE, 0xB075, 0x85DF, 0xB076, 0x85E0, 0xB077, 0x85E1,
+	0xB078, 0x85E2, 0xB079, 0x85E3, 0xB07A, 0x85E4, 0xB07B, 0x85E5,
+	0xB07C, 0xB3A2, 0xB07D, 0xB3A3, 0xB07E, 0x85E6, 0xB07F, 0x85E7,
+	0xB080, 0xB3A4, 0xB081, 0x85E8, 0xB082, 0x85E9, 0xB083, 0x85EA,
+	0xB084, 0xB3A5, 0xB085, 0x85EB, 0xB086, 0x85EC, 0xB087, 0x85ED,
+	0xB088, 0x85EE, 0xB089, 0x85EF, 0xB08A, 0x85F0, 0xB08B, 0x85F1,
+	0xB08C, 0xB3A6, 0xB08D, 0xB3A7, 0xB08E, 0x85F2, 0xB08F, 0xB3A8,
+	0xB090, 0x85F3, 0xB091, 0xB3A9, 0xB092, 0x85F4, 0xB093, 0x85F5,
+	0xB094, 0x85F6, 0xB095, 0x85F7, 0xB096, 0x85F8, 0xB097, 0x85F9,
+	0xB098, 0xB3AA, 0xB099, 0xB3AB, 0xB09A, 0xB3AC, 0xB09B, 0x85FA,
+	0xB09C, 0xB3AD, 0xB09D, 0x85FB, 0xB09E, 0x85FC, 0xB09F, 0xB3AE,
+	0xB0A0, 0xB3AF, 0xB0A1, 0xB3B0, 0xB0A2, 0xB3B1, 0xB0A3, 0x85FD,
+	0xB0A4, 0x85FE, 0xB0A5, 0x8641, 0xB0A6, 0x8642, 0xB0A7, 0x8643,
+	0xB0A8, 0xB3B2, 0xB0A9, 0xB3B3, 0xB0AA, 0x8644, 0xB0AB, 0xB3B4,
+	0xB0AC, 0xB3B5, 0xB0AD, 0xB3B6, 0xB0AE, 0xB3B7, 0xB0AF, 0xB3B8,
+	0xB0B0, 0x8645, 0xB0B1, 0xB3B9, 0xB0B2, 0x8646, 0xB0B3, 0xB3BA,
+	0xB0B4, 0xB3BB, 0xB0B5, 0xB3BC, 0xB0B6, 0x8647, 0xB0B7, 0x8648,
+	0xB0B8, 0xB3BD, 0xB0B9, 0x8649, 0xB0BA, 0x864A, 0xB0BB, 0x864B,
+	0xB0BC, 0xB3BE, 0xB0BD, 0x864C, 0xB0BE, 0x864D, 0xB0BF, 0x864E,
+	0xB0C0, 0x864F, 0xB0C1, 0x8650, 0xB0C2, 0x8651, 0xB0C3, 0x8652,
+	0xB0C4, 0xB3BF, 0xB0C5, 0xB3C0, 0xB0C6, 0x8653, 0xB0C7, 0xB3C1,
+	0xB0C8, 0xB3C2, 0xB0C9, 0xB3C3, 0xB0CA, 0x8654, 0xB0CB, 0x8655,
+	0xB0CC, 0x8656, 0xB0CD, 0x8657, 0xB0CE, 0x8658, 0xB0CF, 0x8659,
+	0xB0D0, 0xB3C4, 0xB0D1, 0xB3C5, 0xB0D2, 0x865A, 0xB0D3, 0x8661,
+	0xB0D4, 0xB3C6, 0xB0D5, 0x8662, 0xB0D6, 0x8663, 0xB0D7, 0x8664,
+	0xB0D8, 0xB3C7, 0xB0D9, 0x8665, 0xB0DA, 0x8666, 0xB0DB, 0x8667,
+	0xB0DC, 0x8668, 0xB0DD, 0x8669, 0xB0DE, 0x866A, 0xB0DF, 0x866B,
+	0xB0E0, 0xB3C8, 0xB0E1, 0x866C, 0xB0E2, 0x866D, 0xB0E3, 0x866E,
+	0xB0E4, 0x866F, 0xB0E5, 0xB3C9, 0xB0E6, 0x8670, 0xB0E7, 0x8671,
+	0xB0E8, 0x8672, 0xB0E9, 0x8673, 0xB0EA, 0x8674, 0xB0EB, 0x8675,
+	0xB0EC, 0x8676, 0xB0ED, 0x8677, 0xB0EE, 0x8678, 0xB0EF, 0x8679,
+	0xB0F0, 0x867A, 0xB0F1, 0x8681, 0xB0F2, 0x8682, 0xB0F3, 0x8683,
+	0xB0F4, 0x8684, 0xB0F5, 0x8685, 0xB0F6, 0x8686, 0xB0F7, 0x8687,
+	0xB0F8, 0x8688, 0xB0F9, 0x8689, 0xB0FA, 0x868A, 0xB0FB, 0x868B,
+	0xB0FC, 0x868C, 0xB0FD, 0x868D, 0xB0FE, 0x868E, 0xB0FF, 0x868F,
+	0xB100, 0x8690, 0xB101, 0x8691, 0xB102, 0x8692, 0xB103, 0x8693,
+	0xB104, 0x8694, 0xB105, 0x8695, 0xB106, 0x8696, 0xB107, 0x8697,
+	0xB108, 0xB3CA, 0xB109, 0xB3CB, 0xB10A, 0x8698, 0xB10B, 0xB3CC,
+	0xB10C, 0xB3CD, 0xB10D, 0x8699, 0xB10E, 0x869A, 0xB10F, 0x869B,
+	0xB110, 0xB3CE, 0xB111, 0x869C, 0xB112, 0xB3CF, 0xB113, 0xB3D0,
+	0xB114, 0x869D, 0xB115, 0x869E, 0xB116, 0x869F, 0xB117, 0x86A0,
+	0xB118, 0xB3D1, 0xB119, 0xB3D2, 0xB11A, 0x86A1, 0xB11B, 0xB3D3,
+	0xB11C, 0xB3D4, 0xB11D, 0xB3D5, 0xB11E, 0x86A2, 0xB11F, 0x86A3,
+	0xB120, 0x86A4, 0xB121, 0x86A5, 0xB122, 0x86A6, 0xB123, 0xB3D6,
+	0xB124, 0xB3D7, 0xB125, 0xB3D8, 0xB126, 0x86A7, 0xB127, 0x86A8,
+	0xB128, 0xB3D9, 0xB129, 0x86A9, 0xB12A, 0x86AA, 0xB12B, 0x86AB,
+	0xB12C, 0xB3DA, 0xB12D, 0x86AC, 0xB12E, 0x86AD, 0xB12F, 0x86AE,
+	0xB130, 0x86AF, 0xB131, 0x86B0, 0xB132, 0x86B1, 0xB133, 0x86B2,
+	0xB134, 0xB3DB, 0xB135, 0xB3DC, 0xB136, 0x86B3, 0xB137, 0xB3DD,
+	0xB138, 0xB3DE, 0xB139, 0xB3DF, 0xB13A, 0x86B4, 0xB13B, 0x86B5,
+	0xB13C, 0x86B6, 0xB13D, 0x86B7, 0xB13E, 0x86B8, 0xB13F, 0x86B9,
+	0xB140, 0xB3E0, 0xB141, 0xB3E1, 0xB142, 0x86BA, 0xB143, 0x86BB,
+	0xB144, 0xB3E2, 0xB145, 0x86BC, 0xB146, 0x86BD, 0xB147, 0x86BE,
+	0xB148, 0xB3E3, 0xB149, 0x86BF, 0xB14A, 0x86C0, 0xB14B, 0x86C1,
+	0xB14C, 0x86C2, 0xB14D, 0x86C3, 0xB14E, 0x86C4, 0xB14F, 0x86C5,
+	0xB150, 0xB3E4, 0xB151, 0xB3E5, 0xB152, 0x86C6, 0xB153, 0x86C7,
+	0xB154, 0xB3E6, 0xB155, 0xB3E7, 0xB156, 0x86C8, 0xB157, 0x86C9,
+	0xB158, 0xB3E8, 0xB159, 0x86CA, 0xB15A, 0x86CB, 0xB15B, 0x86CC,
+	0xB15C, 0xB3E9, 0xB15D, 0x86CD, 0xB15E, 0x86CE, 0xB15F, 0x86CF,
+	0xB160, 0xB3EA, 0xB161, 0x86D0, 0xB162, 0x86D1, 0xB163, 0x86D2,
+	0xB164, 0x86D3, 0xB165, 0x86D4, 0xB166, 0x86D5, 0xB167, 0x86D6,
+	0xB168, 0x86D7, 0xB169, 0x86D8, 0xB16A, 0x86D9, 0xB16B, 0x86DA,
+	0xB16C, 0x86DB, 0xB16D, 0x86DC, 0xB16E, 0x86DD, 0xB16F, 0x86DE,
+	0xB170, 0x86DF, 0xB171, 0x86E0, 0xB172, 0x86E1, 0xB173, 0x86E2,
+	0xB174, 0x86E3, 0xB175, 0x86E4, 0xB176, 0x86E5, 0xB177, 0x86E6,
+	0xB178, 0xB3EB, 0xB179, 0xB3EC, 0xB17A, 0x86E7, 0xB17B, 0x86E8,
+	0xB17C, 0xB3ED, 0xB17D, 0x86E9, 0xB17E, 0x86EA, 0xB17F, 0x86EB,
+	0xB180, 0xB3EE, 0xB181, 0x86EC, 0xB182, 0xB3EF, 0xB183, 0x86ED,
+	0xB184, 0x86EE, 0xB185, 0x86EF, 0xB186, 0x86F0, 0xB187, 0x86F1,
+	0xB188, 0xB3F0, 0xB189, 0xB3F1, 0xB18A, 0x86F2, 0xB18B, 0xB3F2,
+	0xB18C, 0x86F3, 0xB18D, 0xB3F3, 0xB18E, 0x86F4, 0xB18F, 0x86F5,
+	0xB190, 0x86F6, 0xB191, 0x86F7, 0xB192, 0xB3F4, 0xB193, 0xB3F5,
+	0xB194, 0xB3F6, 0xB195, 0x86F8, 0xB196, 0x86F9, 0xB197, 0x86FA,
+	0xB198, 0xB3F7, 0xB199, 0x86FB, 0xB19A, 0x86FC, 0xB19B, 0x86FD,
+	0xB19C, 0xB3F8, 0xB19D, 0x86FE, 0xB19E, 0x8741, 0xB19F, 0x8742,
+	0xB1A0, 0x8743, 0xB1A1, 0x8744, 0xB1A2, 0x8745, 0xB1A3, 0x8746,
+	0xB1A4, 0x8747, 0xB1A5, 0x8748, 0xB1A6, 0x8749, 0xB1A7, 0x874A,
+	0xB1A8, 0xB3F9, 0xB1A9, 0x874B, 0xB1AA, 0x874C, 0xB1AB, 0x874D,
+	0xB1AC, 0x874E, 0xB1AD, 0x874F, 0xB1AE, 0x8750, 0xB1AF, 0x8751,
+	0xB1B0, 0x8752, 0xB1B1, 0x8753, 0xB1B2, 0x8754, 0xB1B3, 0x8755,
+	0xB1B4, 0x8756, 0xB1B5, 0x8757, 0xB1B6, 0x8758, 0xB1B7, 0x8759,
+	0xB1B8, 0x875A, 0xB1B9, 0x8761, 0xB1BA, 0x8762, 0xB1BB, 0x8763,
+	0xB1BC, 0x8764, 0xB1BD, 0x8765, 0xB1BE, 0x8766, 0xB1BF, 0x8767,
+	0xB1C0, 0x8768, 0xB1C1, 0x8769, 0xB1C2, 0x876A, 0xB1C3, 0x876B,
+	0xB1C4, 0x876C, 0xB1C5, 0x876D, 0xB1C6, 0x876E, 0xB1C7, 0x876F,
+	0xB1C8, 0x8770, 0xB1C9, 0x8771, 0xB1CA, 0x8772, 0xB1CB, 0x8773,
+	0xB1CC, 0xB3FA, 0xB1CD, 0x8774, 0xB1CE, 0x8775, 0xB1CF, 0x8776,
+	0xB1D0, 0xB3FB, 0xB1D1, 0x8777, 0xB1D2, 0x8778, 0xB1D3, 0x8779,
+	0xB1D4, 0xB3FC, 0xB1D5, 0x877A, 0xB1D6, 0x8781, 0xB1D7, 0x8782,
+	0xB1D8, 0x8783, 0xB1D9, 0x8784, 0xB1DA, 0x8785, 0xB1DB, 0x8786,
+	0xB1DC, 0xB3FD, 0xB1DD, 0xB3FE, 0xB1DE, 0x8787, 0xB1DF, 0xB4A1,
+	0xB1E0, 0x8788, 0xB1E1, 0x8789, 0xB1E2, 0x878A, 0xB1E3, 0x878B,
+	0xB1E4, 0x878C, 0xB1E5, 0x878D, 0xB1E6, 0x878E, 0xB1E7, 0x878F,
+	0xB1E8, 0xB4A2, 0xB1E9, 0xB4A3, 0xB1EA, 0x8790, 0xB1EB, 0x8791,
+	0xB1EC, 0xB4A4, 0xB1ED, 0x8792, 0xB1EE, 0x8793, 0xB1EF, 0x8794,
+	0xB1F0, 0xB4A5, 0xB1F1, 0x8795, 0xB1F2, 0x8796, 0xB1F3, 0x8797,
+	0xB1F4, 0x8798, 0xB1F5, 0x8799, 0xB1F6, 0x879A, 0xB1F7, 0x879B,
+	0xB1F8, 0x879C, 0xB1F9, 0xB4A6, 0xB1FA, 0x879D, 0xB1FB, 0xB4A7,
+	0xB1FC, 0x879E, 0xB1FD, 0xB4A8, 0xB1FE, 0x879F, 0xB1FF, 0x87A0,
+	0xB200, 0x87A1, 0xB201, 0x87A2, 0xB202, 0x87A3, 0xB203, 0x87A4,
+	0xB204, 0xB4A9, 0xB205, 0xB4AA, 0xB206, 0x87A5, 0xB207, 0x87A6,
+	0xB208, 0xB4AB, 0xB209, 0x87A7, 0xB20A, 0x87A8, 0xB20B, 0xB4AC,
+	0xB20C, 0xB4AD, 0xB20D, 0x87A9, 0xB20E, 0x87AA, 0xB20F, 0x87AB,
+	0xB210, 0x87AC, 0xB211, 0x87AD, 0xB212, 0x87AE, 0xB213, 0x87AF,
+	0xB214, 0xB4AE, 0xB215, 0xB4AF, 0xB216, 0x87B0, 0xB217, 0xB4B0,
+	0xB218, 0x87B1, 0xB219, 0xB4B1, 0xB21A, 0x87B2, 0xB21B, 0x87B3,
+	0xB21C, 0x87B4, 0xB21D, 0x87B5, 0xB21E, 0x87B6, 0xB21F, 0x87B7,
+	0xB220, 0xB4B2, 0xB221, 0x87B8, 0xB222, 0x87B9, 0xB223, 0x87BA,
+	0xB224, 0x87BB, 0xB225, 0x87BC, 0xB226, 0x87BD, 0xB227, 0x87BE,
+	0xB228, 0x87BF, 0xB229, 0x87C0, 0xB22A, 0x87C1, 0xB22B, 0x87C2,
+	0xB22C, 0x87C3, 0xB22D, 0x87C4, 0xB22E, 0x87C5, 0xB22F, 0x87C6,
+	0xB230, 0x87C7, 0xB231, 0x87C8, 0xB232, 0x87C9, 0xB233, 0x87CA,
+	0xB234, 0xB4B3, 0xB235, 0x87CB, 0xB236, 0x87CC, 0xB237, 0x87CD,
+	0xB238, 0x87CE, 0xB239, 0x87CF, 0xB23A, 0x87D0, 0xB23B, 0x87D1,
+	0xB23C, 0xB4B4, 0xB23D, 0x87D2, 0xB23E, 0x87D3, 0xB23F, 0x87D4,
+	0xB240, 0x87D5, 0xB241, 0x87D6, 0xB242, 0x87D7, 0xB243, 0x87D8,
+	0xB244, 0x87D9, 0xB245, 0x87DA, 0xB246, 0x87DB, 0xB247, 0x87DC,
+	0xB248, 0x87DD, 0xB249, 0x87DE, 0xB24A, 0x87DF, 0xB24B, 0x87E0,
+	0xB24C, 0x87E1, 0xB24D, 0x87E2, 0xB24E, 0x87E3, 0xB24F, 0x87E4,
+	0xB250, 0x87E5, 0xB251, 0x87E6, 0xB252, 0x87E7, 0xB253, 0x87E8,
+	0xB254, 0x87E9, 0xB255, 0x87EA, 0xB256, 0x87EB, 0xB257, 0x87EC,
+	0xB258, 0xB4B5, 0xB259, 0x87ED, 0xB25A, 0x87EE, 0xB25B, 0x87EF,
+	0xB25C, 0xB4B6, 0xB25D, 0x87F0, 0xB25E, 0x87F1, 0xB25F, 0x87F2,
+	0xB260, 0xB4B7, 0xB261, 0x87F3, 0xB262, 0x87F4, 0xB263, 0x87F5,
+	0xB264, 0x87F6, 0xB265, 0x87F7, 0xB266, 0x87F8, 0xB267, 0x87F9,
+	0xB268, 0xB4B8, 0xB269, 0xB4B9, 0xB26A, 0x87FA, 0xB26B, 0x87FB,
+	0xB26C, 0x87FC, 0xB26D, 0x87FD, 0xB26E, 0x87FE, 0xB26F, 0x8841,
+	0xB270, 0x8842, 0xB271, 0x8843, 0xB272, 0x8844, 0xB273, 0x8845,
+	0xB274, 0xB4BA, 0xB275, 0xB4BB, 0xB276, 0x8846, 0xB277, 0x8847,
+	0xB278, 0x8848, 0xB279, 0x8849, 0xB27A, 0x884A, 0xB27B, 0x884B,
+	0xB27C, 0xB4BC, 0xB27D, 0x884C, 0xB27E, 0x884D, 0xB27F, 0x884E,
+	0xB280, 0x884F, 0xB281, 0x8850, 0xB282, 0x8851, 0xB283, 0x8852,
+	0xB284, 0xB4BD, 0xB285, 0xB4BE, 0xB286, 0x8853, 0xB287, 0x8854,
+	0xB288, 0x8855, 0xB289, 0xB4BF, 0xB28A, 0x8856, 0xB28B, 0x8857,
+	0xB28C, 0x8858, 0xB28D, 0x8859, 0xB28E, 0x885A, 0xB28F, 0x8861,
+	0xB290, 0xB4C0, 0xB291, 0xB4C1, 0xB292, 0x8862, 0xB293, 0x8863,
+	0xB294, 0xB4C2, 0xB295, 0x8864, 0xB296, 0x8865, 0xB297, 0x8866,
+	0xB298, 0xB4C3, 0xB299, 0xB4C4, 0xB29A, 0xB4C5, 0xB29B, 0x8867,
+	0xB29C, 0x8868, 0xB29D, 0x8869, 0xB29E, 0x886A, 0xB29F, 0x886B,
+	0xB2A0, 0xB4C6, 0xB2A1, 0xB4C7, 0xB2A2, 0x886C, 0xB2A3, 0xB4C8,
+	0xB2A4, 0x886D, 0xB2A5, 0xB4C9, 0xB2A6, 0xB4CA, 0xB2A7, 0x886E,
+	0xB2A8, 0x886F, 0xB2A9, 0x8870, 0xB2AA, 0xB4CB, 0xB2AB, 0x8871,
+	0xB2AC, 0xB4CC, 0xB2AD, 0x8872, 0xB2AE, 0x8873, 0xB2AF, 0x8874,
+	0xB2B0, 0xB4CD, 0xB2B1, 0x8875, 0xB2B2, 0x8876, 0xB2B3, 0x8877,
+	0xB2B4, 0xB4CE, 0xB2B5, 0x8878, 0xB2B6, 0x8879, 0xB2B7, 0x887A,
+	0xB2B8, 0x8881, 0xB2B9, 0x8882, 0xB2BA, 0x8883, 0xB2BB, 0x8884,
+	0xB2BC, 0x8885, 0xB2BD, 0x8886, 0xB2BE, 0x8887, 0xB2BF, 0x8888,
+	0xB2C0, 0x8889, 0xB2C1, 0x888A, 0xB2C2, 0x888B, 0xB2C3, 0x888C,
+	0xB2C4, 0x888D, 0xB2C5, 0x888E, 0xB2C6, 0x888F, 0xB2C7, 0x8890,
+	0xB2C8, 0xB4CF, 0xB2C9, 0xB4D0, 0xB2CA, 0x8891, 0xB2CB, 0x8892,
+	0xB2CC, 0xB4D1, 0xB2CD, 0x8893, 0xB2CE, 0x8894, 0xB2CF, 0x8895,
+	0xB2D0, 0xB4D2, 0xB2D1, 0x8896, 0xB2D2, 0xB4D3, 0xB2D3, 0x8897,
+	0xB2D4, 0x8898, 0xB2D5, 0x8899, 0xB2D6, 0x889A, 0xB2D7, 0x889B,
+	0xB2D8, 0xB4D4, 0xB2D9, 0xB4D5, 0xB2DA, 0x889C, 0xB2DB, 0xB4D6,
+	0xB2DC, 0x889D, 0xB2DD, 0xB4D7, 0xB2DE, 0x889E, 0xB2DF, 0x889F,
+	0xB2E0, 0x88A0, 0xB2E1, 0x88A1, 0xB2E2, 0xB4D8, 0xB2E3, 0x88A2,
+	0xB2E4, 0xB4D9, 0xB2E5, 0xB4DA, 0xB2E6, 0xB4DB, 0xB2E7, 0x88A3,
+	0xB2E8, 0xB4DC, 0xB2E9, 0x88A4, 0xB2EA, 0x88A5, 0xB2EB, 0xB4DD,
+	0xB2EC, 0xB4DE, 0xB2ED, 0xB4DF, 0xB2EE, 0xB4E0, 0xB2EF, 0xB4E1,
+	0xB2F0, 0x88A6, 0xB2F1, 0x88A7, 0xB2F2, 0x88A8, 0xB2F3, 0xB4E2,
+	0xB2F4, 0xB4E3, 0xB2F5, 0xB4E4, 0xB2F6, 0x88A9, 0xB2F7, 0xB4E5,
+	0xB2F8, 0xB4E6, 0xB2F9, 0xB4E7, 0xB2FA, 0xB4E8, 0xB2FB, 0xB4E9,
+	0xB2FC, 0x88AA, 0xB2FD, 0x88AB, 0xB2FE, 0x88AC, 0xB2FF, 0xB4EA,
+	0xB300, 0xB4EB, 0xB301, 0xB4EC, 0xB302, 0x88AD, 0xB303, 0x88AE,
+	0xB304, 0xB4ED, 0xB305, 0x88AF, 0xB306, 0x88B0, 0xB307, 0x88B1,
+	0xB308, 0xB4EE, 0xB309, 0x88B2, 0xB30A, 0x88B3, 0xB30B, 0x88B4,
+	0xB30C, 0x88B5, 0xB30D, 0x88B6, 0xB30E, 0x88B7, 0xB30F, 0x88B8,
+	0xB310, 0xB4EF, 0xB311, 0xB4F0, 0xB312, 0x88B9, 0xB313, 0xB4F1,
+	0xB314, 0xB4F2, 0xB315, 0xB4F3, 0xB316, 0x88BA, 0xB317, 0x88BB,
+	0xB318, 0x88BC, 0xB319, 0x88BD, 0xB31A, 0x88BE, 0xB31B, 0x88BF,
+	0xB31C, 0xB4F4, 0xB31D, 0x88C0, 0xB31E, 0x88C1, 0xB31F, 0x88C2,
+	0xB320, 0x88C3, 0xB321, 0x88C4, 0xB322, 0x88C5, 0xB323, 0x88C6,
+	0xB324, 0x88C7, 0xB325, 0x88C8, 0xB326, 0x88C9, 0xB327, 0x88CA,
+	0xB328, 0x88CB, 0xB329, 0x88CC, 0xB32A, 0x88CD, 0xB32B, 0x88CE,
+	0xB32C, 0x88CF, 0xB32D, 0x88D0, 0xB32E, 0x88D1, 0xB32F, 0x88D2,
+	0xB330, 0x88D3, 0xB331, 0x88D4, 0xB332, 0x88D5, 0xB333, 0x88D6,
+	0xB334, 0x88D7, 0xB335, 0x88D8, 0xB336, 0x88D9, 0xB337, 0x88DA,
+	0xB338, 0x88DB, 0xB339, 0x88DC, 0xB33A, 0x88DD, 0xB33B, 0x88DE,
+	0xB33C, 0x88DF, 0xB33D, 0x88E0, 0xB33E, 0x88E1, 0xB33F, 0x88E2,
+	0xB340, 0x88E3, 0xB341, 0x88E4, 0xB342, 0x88E5, 0xB343, 0x88E6,
+	0xB344, 0x88E7, 0xB345, 0x88E8, 0xB346, 0x88E9, 0xB347, 0x88EA,
+	0xB348, 0x88EB, 0xB349, 0x88EC, 0xB34A, 0x88ED, 0xB34B, 0x88EE,
+	0xB34C, 0x88EF, 0xB34D, 0x88F0, 0xB34E, 0x88F1, 0xB34F, 0x88F2,
+	0xB350, 0x88F3, 0xB351, 0x88F4, 0xB352, 0x88F5, 0xB353, 0x88F6,
+	0xB354, 0xB4F5, 0xB355, 0xB4F6, 0xB356, 0xB4F7, 0xB357, 0x88F7,
+	0xB358, 0xB4F8, 0xB359, 0x88F8, 0xB35A, 0x88F9, 0xB35B, 0xB4F9,
+	0xB35C, 0xB4FA, 0xB35D, 0x88FA, 0xB35E, 0xB4FB, 0xB35F, 0xB4FC,
+	0xB360, 0x88FB, 0xB361, 0x88FC, 0xB362, 0x88FD, 0xB363, 0x88FE,
+	0xB364, 0xB4FD, 0xB365, 0xB4FE, 0xB366, 0x8941, 0xB367, 0xB5A1,
+	0xB368, 0x8942, 0xB369, 0xB5A2, 0xB36A, 0x8943, 0xB36B, 0xB5A3,
+	0xB36C, 0x8944, 0xB36D, 0x8945, 0xB36E, 0xB5A4, 0xB36F, 0x8946,
+	0xB370, 0xB5A5, 0xB371, 0xB5A6, 0xB372, 0x8947, 0xB373, 0x8948,
+	0xB374, 0xB5A7, 0xB375, 0x8949, 0xB376, 0x894A, 0xB377, 0x894B,
+	0xB378, 0xB5A8, 0xB379, 0x894C, 0xB37A, 0x894D, 0xB37B, 0x894E,
+	0xB37C, 0x894F, 0xB37D, 0x8950, 0xB37E, 0x8951, 0xB37F, 0x8952,
+	0xB380, 0xB5A9, 0xB381, 0xB5AA, 0xB382, 0x8953, 0xB383, 0xB5AB,
+	0xB384, 0xB5AC, 0xB385, 0xB5AD, 0xB386, 0x8954, 0xB387, 0x8955,
+	0xB388, 0x8956, 0xB389, 0x8957, 0xB38A, 0x8958, 0xB38B, 0x8959,
+	0xB38C, 0xB5AE, 0xB38D, 0x895A, 0xB38E, 0x8961, 0xB38F, 0x8962,
+	0xB390, 0xB5AF, 0xB391, 0x8963, 0xB392, 0x8964, 0xB393, 0x8965,
+	0xB394, 0xB5B0, 0xB395, 0x8966, 0xB396, 0x8967, 0xB397, 0x8968,
+	0xB398, 0x8969, 0xB399, 0x896A, 0xB39A, 0x896B, 0xB39B, 0x896C,
+	0xB39C, 0x896D, 0xB39D, 0x896E, 0xB39E, 0x896F, 0xB39F, 0x8970,
+	0xB3A0, 0xB5B1, 0xB3A1, 0xB5B2, 0xB3A2, 0x8971, 0xB3A3, 0x8972,
+	0xB3A4, 0x8973, 0xB3A5, 0x8974, 0xB3A6, 0x8975, 0xB3A7, 0x8976,
+	0xB3A8, 0xB5B3, 0xB3A9, 0x8977, 0xB3AA, 0x8978, 0xB3AB, 0x8979,
+	0xB3AC, 0xB5B4, 0xB3AD, 0x897A, 0xB3AE, 0x8981, 0xB3AF, 0x8982,
+	0xB3B0, 0x8983, 0xB3B1, 0x8984, 0xB3B2, 0x8985, 0xB3B3, 0x8986,
+	0xB3B4, 0x8987, 0xB3B5, 0x8988, 0xB3B6, 0x8989, 0xB3B7, 0x898A,
+	0xB3B8, 0x898B, 0xB3B9, 0x898C, 0xB3BA, 0x898D, 0xB3BB, 0x898E,
+	0xB3BC, 0x898F, 0xB3BD, 0x8990, 0xB3BE, 0x8991, 0xB3BF, 0x8992,
+	0xB3C0, 0x8993, 0xB3C1, 0x8994, 0xB3C2, 0x8995, 0xB3C3, 0x8996,
+	0xB3C4, 0xB5B5, 0xB3C5, 0xB5B6, 0xB3C6, 0x8997, 0xB3C7, 0x8998,
+	0xB3C8, 0xB5B7, 0xB3C9, 0x8999, 0xB3CA, 0x899A, 0xB3CB, 0xB5B8,
+	0xB3CC, 0xB5B9, 0xB3CD, 0x899B, 0xB3CE, 0xB5BA, 0xB3CF, 0x899C,
+	0xB3D0, 0xB5BB, 0xB3D1, 0x899D, 0xB3D2, 0x899E, 0xB3D3, 0x899F,
+	0xB3D4, 0xB5BC, 0xB3D5, 0xB5BD, 0xB3D6, 0x89A0, 0xB3D7, 0xB5BE,
+	0xB3D8, 0x89A1, 0xB3D9, 0xB5BF, 0xB3DA, 0x89A2, 0xB3DB, 0xB5C0,
+	0xB3DC, 0x89A3, 0xB3DD, 0xB5C1, 0xB3DE, 0x89A4, 0xB3DF, 0x89A5,
+	0xB3E0, 0xB5C2, 0xB3E1, 0x89A6, 0xB3E2, 0x89A7, 0xB3E3, 0x89A8,
+	0xB3E4, 0xB5C3, 0xB3E5, 0x89A9, 0xB3E6, 0x89AA, 0xB3E7, 0x89AB,
+	0xB3E8, 0xB5C4, 0xB3E9, 0x89AC, 0xB3EA, 0x89AD, 0xB3EB, 0x89AE,
+	0xB3EC, 0x89AF, 0xB3ED, 0x89B0, 0xB3EE, 0x89B1, 0xB3EF, 0x89B2,
+	0xB3F0, 0x89B3, 0xB3F1, 0x89B4, 0xB3F2, 0x89B5, 0xB3F3, 0x89B6,
+	0xB3F4, 0x89B7, 0xB3F5, 0x89B8, 0xB3F6, 0x89B9, 0xB3F7, 0x89BA,
+	0xB3F8, 0x89BB, 0xB3F9, 0x89BC, 0xB3FA, 0x89BD, 0xB3FB, 0x89BE,
+	0xB3FC, 0xB5C5, 0xB3FD, 0x89BF, 0xB3FE, 0x89C0, 0xB3FF, 0x89C1,
+	0xB400, 0x89C2, 0xB401, 0x89C3, 0xB402, 0x89C4, 0xB403, 0x89C5,
+	0xB404, 0x89C6, 0xB405, 0x89C7, 0xB406, 0x89C8, 0xB407, 0x89C9,
+	0xB408, 0x89CA, 0xB409, 0x89CB, 0xB40A, 0x89CC, 0xB40B, 0x89CD,
+	0xB40C, 0x89CE, 0xB40D, 0x89CF, 0xB40E, 0x89D0, 0xB40F, 0x89D1,
+	0xB410, 0xB5C6, 0xB411, 0x89D2, 0xB412, 0x89D3, 0xB413, 0x89D4,
+	0xB414, 0x89D5, 0xB415, 0x89D6, 0xB416, 0x89D7, 0xB417, 0x89D8,
+	0xB418, 0xB5C7, 0xB419, 0x89D9, 0xB41A, 0x89DA, 0xB41B, 0x89DB,
+	0xB41C, 0xB5C8, 0xB41D, 0x89DC, 0xB41E, 0x89DD, 0xB41F, 0x89DE,
+	0xB420, 0xB5C9, 0xB421, 0x89DF, 0xB422, 0x89E0, 0xB423, 0x89E1,
+	0xB424, 0x89E2, 0xB425, 0x89E3, 0xB426, 0x89E4, 0xB427, 0x89E5,
+	0xB428, 0xB5CA, 0xB429, 0xB5CB, 0xB42A, 0x89E6, 0xB42B, 0xB5CC,
+	0xB42C, 0x89E7, 0xB42D, 0x89E8, 0xB42E, 0x89E9, 0xB42F, 0x89EA,
+	0xB430, 0x89EB, 0xB431, 0x89EC, 0xB432, 0x89ED, 0xB433, 0x89EE,
+	0xB434, 0xB5CD, 0xB435, 0x89EF, 0xB436, 0x89F0, 0xB437, 0x89F1,
+	0xB438, 0x89F2, 0xB439, 0x89F3, 0xB43A, 0x89F4, 0xB43B, 0x89F5,
+	0xB43C, 0x89F6, 0xB43D, 0x89F7, 0xB43E, 0x89F8, 0xB43F, 0x89F9,
+	0xB440, 0x89FA, 0xB441, 0x89FB, 0xB442, 0x89FC, 0xB443, 0x89FD,
+	0xB444, 0x89FE, 0xB445, 0x8A41, 0xB446, 0x8A42, 0xB447, 0x8A43,
+	0xB448, 0x8A44, 0xB449, 0x8A45, 0xB44A, 0x8A46, 0xB44B, 0x8A47,
+	0xB44C, 0x8A48, 0xB44D, 0x8A49, 0xB44E, 0x8A4A, 0xB44F, 0x8A4B,
+	0xB450, 0xB5CE, 0xB451, 0xB5CF, 0xB452, 0x8A4C, 0xB453, 0x8A4D,
+	0xB454, 0xB5D0, 0xB455, 0x8A4E, 0xB456, 0x8A4F, 0xB457, 0x8A50,
+	0xB458, 0xB5D1, 0xB459, 0x8A51, 0xB45A, 0x8A52, 0xB45B, 0x8A53,
+	0xB45C, 0x8A54, 0xB45D, 0x8A55, 0xB45E, 0x8A56, 0xB45F, 0x8A57,
+	0xB460, 0xB5D2, 0xB461, 0xB5D3, 0xB462, 0x8A58, 0xB463, 0xB5D4,
+	0xB464, 0x8A59, 0xB465, 0xB5D5, 0xB466, 0x8A5A, 0xB467, 0x8A61,
+	0xB468, 0x8A62, 0xB469, 0x8A63, 0xB46A, 0x8A64, 0xB46B, 0x8A65,
+	0xB46C, 0xB5D6, 0xB46D, 0x8A66, 0xB46E, 0x8A67, 0xB46F, 0x8A68,
+	0xB470, 0x8A69, 0xB471, 0x8A6A, 0xB472, 0x8A6B, 0xB473, 0x8A6C,
+	0xB474, 0x8A6D, 0xB475, 0x8A6E, 0xB476, 0x8A6F, 0xB477, 0x8A70,
+	0xB478, 0x8A71, 0xB479, 0x8A72, 0xB47A, 0x8A73, 0xB47B, 0x8A74,
+	0xB47C, 0x8A75, 0xB47D, 0x8A76, 0xB47E, 0x8A77, 0xB47F, 0x8A78,
+	0xB480, 0xB5D7, 0xB481, 0x8A79, 0xB482, 0x8A7A, 0xB483, 0x8A81,
+	0xB484, 0x8A82, 0xB485, 0x8A83, 0xB486, 0x8A84, 0xB487, 0x8A85,
+	0xB488, 0xB5D8, 0xB489, 0x8A86, 0xB48A, 0x8A87, 0xB48B, 0x8A88,
+	0xB48C, 0x8A89, 0xB48D, 0x8A8A, 0xB48E, 0x8A8B, 0xB48F, 0x8A8C,
+	0xB490, 0x8A8D, 0xB491, 0x8A8E, 0xB492, 0x8A8F, 0xB493, 0x8A90,
+	0xB494, 0x8A91, 0xB495, 0x8A92, 0xB496, 0x8A93, 0xB497, 0x8A94,
+	0xB498, 0x8A95, 0xB499, 0x8A96, 0xB49A, 0x8A97, 0xB49B, 0x8A98,
+	0xB49C, 0x8A99, 0xB49D, 0xB5D9, 0xB49E, 0x8A9A, 0xB49F, 0x8A9B,
+	0xB4A0, 0x8A9C, 0xB4A1, 0x8A9D, 0xB4A2, 0x8A9E, 0xB4A3, 0x8A9F,
+	0xB4A4, 0xB5DA, 0xB4A5, 0x8AA0, 0xB4A6, 0x8AA1, 0xB4A7, 0x8AA2,
+	0xB4A8, 0xB5DB, 0xB4A9, 0x8AA3, 0xB4AA, 0x8AA4, 0xB4AB, 0x8AA5,
+	0xB4AC, 0xB5DC, 0xB4AD, 0x8AA6, 0xB4AE, 0x8AA7, 0xB4AF, 0x8AA8,
+	0xB4B0, 0x8AA9, 0xB4B1, 0x8AAA, 0xB4B2, 0x8AAB, 0xB4B3, 0x8AAC,
+	0xB4B4, 0x8AAD, 0xB4B5, 0xB5DD, 0xB4B6, 0x8AAE, 0xB4B7, 0xB5DE,
+	0xB4B8, 0x8AAF, 0xB4B9, 0xB5DF, 0xB4BA, 0x8AB0, 0xB4BB, 0x8AB1,
+	0xB4BC, 0x8AB2, 0xB4BD, 0x8AB3, 0xB4BE, 0x8AB4, 0xB4BF, 0x8AB5,
+	0xB4C0, 0xB5E0, 0xB4C1, 0x8AB6, 0xB4C2, 0x8AB7, 0xB4C3, 0x8AB8,
+	0xB4C4, 0xB5E1, 0xB4C5, 0x8AB9, 0xB4C6, 0x8ABA, 0xB4C7, 0x8ABB,
+	0xB4C8, 0xB5E2, 0xB4C9, 0x8ABC, 0xB4CA, 0x8ABD, 0xB4CB, 0x8ABE,
+	0xB4CC, 0x8ABF, 0xB4CD, 0x8AC0, 0xB4CE, 0x8AC1, 0xB4CF, 0x8AC2,
+	0xB4D0, 0xB5E3, 0xB4D1, 0x8AC3, 0xB4D2, 0x8AC4, 0xB4D3, 0x8AC5,
+	0xB4D4, 0x8AC6, 0xB4D5, 0xB5E4, 0xB4D6, 0x8AC7, 0xB4D7, 0x8AC8,
+	0xB4D8, 0x8AC9, 0xB4D9, 0x8ACA, 0xB4DA, 0x8ACB, 0xB4DB, 0x8ACC,
+	0xB4DC, 0xB5E5, 0xB4DD, 0xB5E6, 0xB4DE, 0x8ACD, 0xB4DF, 0x8ACE,
+	0xB4E0, 0xB5E7, 0xB4E1, 0x8ACF, 0xB4E2, 0x8AD0, 0xB4E3, 0xB5E8,
+	0xB4E4, 0xB5E9, 0xB4E5, 0x8AD1, 0xB4E6, 0xB5EA, 0xB4E7, 0x8AD2,
+	0xB4E8, 0x8AD3, 0xB4E9, 0x8AD4, 0xB4EA, 0x8AD5, 0xB4EB, 0x8AD6,
+	0xB4EC, 0xB5EB, 0xB4ED, 0xB5EC, 0xB4EE, 0x8AD7, 0xB4EF, 0xB5ED,
+	0xB4F0, 0x8AD8, 0xB4F1, 0xB5EE, 0xB4F2, 0x8AD9, 0xB4F3, 0x8ADA,
+	0xB4F4, 0x8ADB, 0xB4F5, 0x8ADC, 0xB4F6, 0x8ADD, 0xB4F7, 0x8ADE,
+	0xB4F8, 0xB5EF, 0xB4F9, 0x8ADF, 0xB4FA, 0x8AE0, 0xB4FB, 0x8AE1,
+	0xB4FC, 0x8AE2, 0xB4FD, 0x8AE3, 0xB4FE, 0x8AE4, 0xB4FF, 0x8AE5,
+	0xB500, 0x8AE6, 0xB501, 0x8AE7, 0xB502, 0x8AE8, 0xB503, 0x8AE9,
+	0xB504, 0x8AEA, 0xB505, 0x8AEB, 0xB506, 0x8AEC, 0xB507, 0x8AED,
+	0xB508, 0x8AEE, 0xB509, 0x8AEF, 0xB50A, 0x8AF0, 0xB50B, 0x8AF1,
+	0xB50C, 0x8AF2, 0xB50D, 0x8AF3, 0xB50E, 0x8AF4, 0xB50F, 0x8AF5,
+	0xB510, 0x8AF6, 0xB511, 0x8AF7, 0xB512, 0x8AF8, 0xB513, 0x8AF9,
+	0xB514, 0xB5F0, 0xB515, 0xB5F1, 0xB516, 0x8AFA, 0xB517, 0x8AFB,
+	0xB518, 0xB5F2, 0xB519, 0x8AFC, 0xB51A, 0x8AFD, 0xB51B, 0xB5F3,
+	0xB51C, 0xB5F4, 0xB51D, 0x8AFE, 0xB51E, 0x8B41, 0xB51F, 0x8B42,
+	0xB520, 0x8B43, 0xB521, 0x8B44, 0xB522, 0x8B45, 0xB523, 0x8B46,
+	0xB524, 0xB5F5, 0xB525, 0xB5F6, 0xB526, 0x8B47, 0xB527, 0xB5F7,
+	0xB528, 0xB5F8, 0xB529, 0xB5F9, 0xB52A, 0xB5FA, 0xB52B, 0x8B48,
+	0xB52C, 0x8B49, 0xB52D, 0x8B4A, 0xB52E, 0x8B4B, 0xB52F, 0x8B4C,
+	0xB530, 0xB5FB, 0xB531, 0xB5FC, 0xB532, 0x8B4D, 0xB533, 0x8B4E,
+	0xB534, 0xB5FD, 0xB535, 0x8B4F, 0xB536, 0x8B50, 0xB537, 0x8B51,
+	0xB538, 0xB5FE, 0xB539, 0x8B52, 0xB53A, 0x8B53, 0xB53B, 0x8B54,
+	0xB53C, 0x8B55, 0xB53D, 0x8B56, 0xB53E, 0x8B57, 0xB53F, 0x8B58,
+	0xB540, 0xB6A1, 0xB541, 0xB6A2, 0xB542, 0x8B59, 0xB543, 0xB6A3,
+	0xB544, 0xB6A4, 0xB545, 0xB6A5, 0xB546, 0x8B5A, 0xB547, 0x8B61,
+	0xB548, 0x8B62, 0xB549, 0x8B63, 0xB54A, 0x8B64, 0xB54B, 0xB6A6,
+	0xB54C, 0xB6A7, 0xB54D, 0xB6A8, 0xB54E, 0x8B65, 0xB54F, 0x8B66,
+	0xB550, 0xB6A9, 0xB551, 0x8B67, 0xB552, 0x8B68, 0xB553, 0x8B69,
+	0xB554, 0xB6AA, 0xB555, 0x8B6A, 0xB556, 0x8B6B, 0xB557, 0x8B6C,
+	0xB558, 0x8B6D, 0xB559, 0x8B6E, 0xB55A, 0x8B6F, 0xB55B, 0x8B70,
+	0xB55C, 0xB6AB, 0xB55D, 0xB6AC, 0xB55E, 0x8B71, 0xB55F, 0xB6AD,
+	0xB560, 0xB6AE, 0xB561, 0xB6AF, 0xB562, 0x8B72, 0xB563, 0x8B73,
+	0xB564, 0x8B74, 0xB565, 0x8B75, 0xB566, 0x8B76, 0xB567, 0x8B77,
+	0xB568, 0x8B78, 0xB569, 0x8B79, 0xB56A, 0x8B7A, 0xB56B, 0x8B81,
+	0xB56C, 0x8B82, 0xB56D, 0x8B83, 0xB56E, 0x8B84, 0xB56F, 0x8B85,
+	0xB570, 0x8B86, 0xB571, 0x8B87, 0xB572, 0x8B88, 0xB573, 0x8B89,
+	0xB574, 0x8B8A, 0xB575, 0x8B8B, 0xB576, 0x8B8C, 0xB577, 0x8B8D,
+	0xB578, 0x8B8E, 0xB579, 0x8B8F, 0xB57A, 0x8B90, 0xB57B, 0x8B91,
+	0xB57C, 0x8B92, 0xB57D, 0x8B93, 0xB57E, 0x8B94, 0xB57F, 0x8B95,
+	0xB580, 0x8B96, 0xB581, 0x8B97, 0xB582, 0x8B98, 0xB583, 0x8B99,
+	0xB584, 0x8B9A, 0xB585, 0x8B9B, 0xB586, 0x8B9C, 0xB587, 0x8B9D,
+	0xB588, 0x8B9E, 0xB589, 0x8B9F, 0xB58A, 0x8BA0, 0xB58B, 0x8BA1,
+	0xB58C, 0x8BA2, 0xB58D, 0x8BA3, 0xB58E, 0x8BA4, 0xB58F, 0x8BA5,
+	0xB590, 0x8BA6, 0xB591, 0x8BA7, 0xB592, 0x8BA8, 0xB593, 0x8BA9,
+	0xB594, 0x8BAA, 0xB595, 0x8BAB, 0xB596, 0x8BAC, 0xB597, 0x8BAD,
+	0xB598, 0x8BAE, 0xB599, 0x8BAF, 0xB59A, 0x8BB0, 0xB59B, 0x8BB1,
+	0xB59C, 0x8BB2, 0xB59D, 0x8BB3, 0xB59E, 0x8BB4, 0xB59F, 0x8BB5,
+	0xB5A0, 0xB6B0, 0xB5A1, 0xB6B1, 0xB5A2, 0x8BB6, 0xB5A3, 0x8BB7,
+	0xB5A4, 0xB6B2, 0xB5A5, 0x8BB8, 0xB5A6, 0x8BB9, 0xB5A7, 0x8BBA,
+	0xB5A8, 0xB6B3, 0xB5A9, 0x8BBB, 0xB5AA, 0xB6B4, 0xB5AB, 0xB6B5,
+	0xB5AC, 0x8BBC, 0xB5AD, 0x8BBD, 0xB5AE, 0x8BBE, 0xB5AF, 0x8BBF,
+	0xB5B0, 0xB6B6, 0xB5B1, 0xB6B7, 0xB5B2, 0x8BC0, 0xB5B3, 0xB6B8,
+	0xB5B4, 0xB6B9, 0xB5B5, 0xB6BA, 0xB5B6, 0x8BC1, 0xB5B7, 0x8BC2,
+	0xB5B8, 0x8BC3, 0xB5B9, 0x8BC4, 0xB5BA, 0x8BC5, 0xB5BB, 0xB6BB,
+	0xB5BC, 0xB6BC, 0xB5BD, 0xB6BD, 0xB5BE, 0x8BC6, 0xB5BF, 0x8BC7,
+	0xB5C0, 0xB6BE, 0xB5C1, 0x8BC8, 0xB5C2, 0x8BC9, 0xB5C3, 0x8BCA,
+	0xB5C4, 0xB6BF, 0xB5C5, 0x8BCB, 0xB5C6, 0x8BCC, 0xB5C7, 0x8BCD,
+	0xB5C8, 0x8BCE, 0xB5C9, 0x8BCF, 0xB5CA, 0x8BD0, 0xB5CB, 0x8BD1,
+	0xB5CC, 0xB6C0, 0xB5CD, 0xB6C1, 0xB5CE, 0x8BD2, 0xB5CF, 0xB6C2,
+	0xB5D0, 0xB6C3, 0xB5D1, 0xB6C4, 0xB5D2, 0x8BD3, 0xB5D3, 0x8BD4,
+	0xB5D4, 0x8BD5, 0xB5D5, 0x8BD6, 0xB5D6, 0x8BD7, 0xB5D7, 0x8BD8,
+	0xB5D8, 0xB6C5, 0xB5D9, 0x8BD9, 0xB5DA, 0x8BDA, 0xB5DB, 0x8BDB,
+	0xB5DC, 0x8BDC, 0xB5DD, 0x8BDD, 0xB5DE, 0x8BDE, 0xB5DF, 0x8BDF,
+	0xB5E0, 0x8BE0, 0xB5E1, 0x8BE1, 0xB5E2, 0x8BE2, 0xB5E3, 0x8BE3,
+	0xB5E4, 0x8BE4, 0xB5E5, 0x8BE5, 0xB5E6, 0x8BE6, 0xB5E7, 0x8BE7,
+	0xB5E8, 0x8BE8, 0xB5E9, 0x8BE9, 0xB5EA, 0x8BEA, 0xB5EB, 0x8BEB,
+	0xB5EC, 0xB6C6, 0xB5ED, 0x8BEC, 0xB5EE, 0x8BED, 0xB5EF, 0x8BEE,
+	0xB5F0, 0x8BEF, 0xB5F1, 0x8BF0, 0xB5F2, 0x8BF1, 0xB5F3, 0x8BF2,
+	0xB5F4, 0x8BF3, 0xB5F5, 0x8BF4, 0xB5F6, 0x8BF5, 0xB5F7, 0x8BF6,
+	0xB5F8, 0x8BF7, 0xB5F9, 0x8BF8, 0xB5FA, 0x8BF9, 0xB5FB, 0x8BFA,
+	0xB5FC, 0x8BFB, 0xB5FD, 0x8BFC, 0xB5FE, 0x8BFD, 0xB5FF, 0x8BFE,
+	0xB600, 0x8C41, 0xB601, 0x8C42, 0xB602, 0x8C43, 0xB603, 0x8C44,
+	0xB604, 0x8C45, 0xB605, 0x8C46, 0xB606, 0x8C47, 0xB607, 0x8C48,
+	0xB608, 0x8C49, 0xB609, 0x8C4A, 0xB60A, 0x8C4B, 0xB60B, 0x8C4C,
+	0xB60C, 0x8C4D, 0xB60D, 0x8C4E, 0xB60E, 0x8C4F, 0xB60F, 0x8C50,
+	0xB610, 0xB6C7, 0xB611, 0xB6C8, 0xB612, 0x8C51, 0xB613, 0x8C52,
+	0xB614, 0xB6C9, 0xB615, 0x8C53, 0xB616, 0x8C54, 0xB617, 0x8C55,
+	0xB618, 0xB6CA, 0xB619, 0x8C56, 0xB61A, 0x8C57, 0xB61B, 0x8C58,
+	0xB61C, 0x8C59, 0xB61D, 0x8C5A, 0xB61E, 0x8C61, 0xB61F, 0x8C62,
+	0xB620, 0x8C63, 0xB621, 0x8C64, 0xB622, 0x8C65, 0xB623, 0x8C66,
+	0xB624, 0x8C67, 0xB625, 0xB6CB, 0xB626, 0x8C68, 0xB627, 0x8C69,
+	0xB628, 0x8C6A, 0xB629, 0x8C6B, 0xB62A, 0x8C6C, 0xB62B, 0x8C6D,
+	0xB62C, 0xB6CC, 0xB62D, 0x8C6E, 0xB62E, 0x8C6F, 0xB62F, 0x8C70,
+	0xB630, 0x8C71, 0xB631, 0x8C72, 0xB632, 0x8C73, 0xB633, 0x8C74,
+	0xB634, 0xB6CD, 0xB635, 0x8C75, 0xB636, 0x8C76, 0xB637, 0x8C77,
+	0xB638, 0x8C78, 0xB639, 0x8C79, 0xB63A, 0x8C7A, 0xB63B, 0x8C81,
+	0xB63C, 0x8C82, 0xB63D, 0x8C83, 0xB63E, 0x8C84, 0xB63F, 0x8C85,
+	0xB640, 0x8C86, 0xB641, 0x8C87, 0xB642, 0x8C88, 0xB643, 0x8C89,
+	0xB644, 0x8C8A, 0xB645, 0x8C8B, 0xB646, 0x8C8C, 0xB647, 0x8C8D,
+	0xB648, 0xB6CE, 0xB649, 0x8C8E, 0xB64A, 0x8C8F, 0xB64B, 0x8C90,
+	0xB64C, 0x8C91, 0xB64D, 0x8C92, 0xB64E, 0x8C93, 0xB64F, 0x8C94,
+	0xB650, 0x8C95, 0xB651, 0x8C96, 0xB652, 0x8C97, 0xB653, 0x8C98,
+	0xB654, 0x8C99, 0xB655, 0x8C9A, 0xB656, 0x8C9B, 0xB657, 0x8C9C,
+	0xB658, 0x8C9D, 0xB659, 0x8C9E, 0xB65A, 0x8C9F, 0xB65B, 0x8CA0,
+	0xB65C, 0x8CA1, 0xB65D, 0x8CA2, 0xB65E, 0x8CA3, 0xB65F, 0x8CA4,
+	0xB660, 0x8CA5, 0xB661, 0x8CA6, 0xB662, 0x8CA7, 0xB663, 0x8CA8,
+	0xB664, 0xB6CF, 0xB665, 0x8CA9, 0xB666, 0x8CAA, 0xB667, 0x8CAB,
+	0xB668, 0xB6D0, 0xB669, 0x8CAC, 0xB66A, 0x8CAD, 0xB66B, 0x8CAE,
+	0xB66C, 0x8CAF, 0xB66D, 0x8CB0, 0xB66E, 0x8CB1, 0xB66F, 0x8CB2,
+	0xB670, 0x8CB3, 0xB671, 0x8CB4, 0xB672, 0x8CB5, 0xB673, 0x8CB6,
+	0xB674, 0x8CB7, 0xB675, 0x8CB8, 0xB676, 0x8CB9, 0xB677, 0x8CBA,
+	0xB678, 0x8CBB, 0xB679, 0x8CBC, 0xB67A, 0x8CBD, 0xB67B, 0x8CBE,
+	0xB67C, 0x8CBF, 0xB67D, 0x8CC0, 0xB67E, 0x8CC1, 0xB67F, 0x8CC2,
+	0xB680, 0x8CC3, 0xB681, 0x8CC4, 0xB682, 0x8CC5, 0xB683, 0x8CC6,
+	0xB684, 0x8CC7, 0xB685, 0x8CC8, 0xB686, 0x8CC9, 0xB687, 0x8CCA,
+	0xB688, 0x8CCB, 0xB689, 0x8CCC, 0xB68A, 0x8CCD, 0xB68B, 0x8CCE,
+	0xB68C, 0x8CCF, 0xB68D, 0x8CD0, 0xB68E, 0x8CD1, 0xB68F, 0x8CD2,
+	0xB690, 0x8CD3, 0xB691, 0x8CD4, 0xB692, 0x8CD5, 0xB693, 0x8CD6,
+	0xB694, 0x8CD7, 0xB695, 0x8CD8, 0xB696, 0x8CD9, 0xB697, 0x8CDA,
+	0xB698, 0x8CDB, 0xB699, 0x8CDC, 0xB69A, 0x8CDD, 0xB69B, 0x8CDE,
+	0xB69C, 0xB6D1, 0xB69D, 0xB6D2, 0xB69E, 0x8CDF, 0xB69F, 0x8CE0,
+	0xB6A0, 0xB6D3, 0xB6A1, 0x8CE1, 0xB6A2, 0x8CE2, 0xB6A3, 0x8CE3,
+	0xB6A4, 0xB6D4, 0xB6A5, 0x8CE4, 0xB6A6, 0x8CE5, 0xB6A7, 0x8CE6,
+	0xB6A8, 0x8CE7, 0xB6A9, 0x8CE8, 0xB6AA, 0x8CE9, 0xB6AB, 0xB6D5,
+	0xB6AC, 0xB6D6, 0xB6AD, 0x8CEA, 0xB6AE, 0x8CEB, 0xB6AF, 0x8CEC,
+	0xB6B0, 0x8CED, 0xB6B1, 0xB6D7, 0xB6B2, 0x8CEE, 0xB6B3, 0x8CEF,
+	0xB6B4, 0x8CF0, 0xB6B5, 0x8CF1, 0xB6B6, 0x8CF2, 0xB6B7, 0x8CF3,
+	0xB6B8, 0x8CF4, 0xB6B9, 0x8CF5, 0xB6BA, 0x8CF6, 0xB6BB, 0x8CF7,
+	0xB6BC, 0x8CF8, 0xB6BD, 0x8CF9, 0xB6BE, 0x8CFA, 0xB6BF, 0x8CFB,
+	0xB6C0, 0x8CFC, 0xB6C1, 0x8CFD, 0xB6C2, 0x8CFE, 0xB6C3, 0x8D41,
+	0xB6C4, 0x8D42, 0xB6C5, 0x8D43, 0xB6C6, 0x8D44, 0xB6C7, 0x8D45,
+	0xB6C8, 0x8D46, 0xB6C9, 0x8D47, 0xB6CA, 0x8D48, 0xB6CB, 0x8D49,
+	0xB6CC, 0x8D4A, 0xB6CD, 0x8D4B, 0xB6CE, 0x8D4C, 0xB6CF, 0x8D4D,
+	0xB6D0, 0x8D4E, 0xB6D1, 0x8D4F, 0xB6D2, 0x8D50, 0xB6D3, 0x8D51,
+	0xB6D4, 0xB6D8, 0xB6D5, 0x8D52, 0xB6D6, 0x8D53, 0xB6D7, 0x8D54,
+	0xB6D8, 0x8D55, 0xB6D9, 0x8D56, 0xB6DA, 0x8D57, 0xB6DB, 0x8D58,
+	0xB6DC, 0x8D59, 0xB6DD, 0x8D5A, 0xB6DE, 0x8D61, 0xB6DF, 0x8D62,
+	0xB6E0, 0x8D63, 0xB6E1, 0x8D64, 0xB6E2, 0x8D65, 0xB6E3, 0x8D66,
+	0xB6E4, 0x8D67, 0xB6E5, 0x8D68, 0xB6E6, 0x8D69, 0xB6E7, 0x8D6A,
+	0xB6E8, 0x8D6B, 0xB6E9, 0x8D6C, 0xB6EA, 0x8D6D, 0xB6EB, 0x8D6E,
+	0xB6EC, 0x8D6F, 0xB6ED, 0x8D70, 0xB6EE, 0x8D71, 0xB6EF, 0x8D72,
+	0xB6F0, 0xB6D9, 0xB6F1, 0x8D73, 0xB6F2, 0x8D74, 0xB6F3, 0x8D75,
+	0xB6F4, 0xB6DA, 0xB6F5, 0x8D76, 0xB6F6, 0x8D77, 0xB6F7, 0x8D78,
+	0xB6F8, 0xB6DB, 0xB6F9, 0x8D79, 0xB6FA, 0x8D7A, 0xB6FB, 0x8D81,
+	0xB6FC, 0x8D82, 0xB6FD, 0x8D83, 0xB6FE, 0x8D84, 0xB6FF, 0x8D85,
+	0xB700, 0xB6DC, 0xB701, 0xB6DD, 0xB702, 0x8D86, 0xB703, 0x8D87,
+	0xB704, 0x8D88, 0xB705, 0xB6DE, 0xB706, 0x8D89, 0xB707, 0x8D8A,
+	0xB708, 0x8D8B, 0xB709, 0x8D8C, 0xB70A, 0x8D8D, 0xB70B, 0x8D8E,
+	0xB70C, 0x8D8F, 0xB70D, 0x8D90, 0xB70E, 0x8D91, 0xB70F, 0x8D92,
+	0xB710, 0x8D93, 0xB711, 0x8D94, 0xB712, 0x8D95, 0xB713, 0x8D96,
+	0xB714, 0x8D97, 0xB715, 0x8D98, 0xB716, 0x8D99, 0xB717, 0x8D9A,
+	0xB718, 0x8D9B, 0xB719, 0x8D9C, 0xB71A, 0x8D9D, 0xB71B, 0x8D9E,
+	0xB71C, 0x8D9F, 0xB71D, 0x8DA0, 0xB71E, 0x8DA1, 0xB71F, 0x8DA2,
+	0xB720, 0x8DA3, 0xB721, 0x8DA4, 0xB722, 0x8DA5, 0xB723, 0x8DA6,
+	0xB724, 0x8DA7, 0xB725, 0x8DA8, 0xB726, 0x8DA9, 0xB727, 0x8DAA,
+	0xB728, 0xB6DF, 0xB729, 0xB6E0, 0xB72A, 0x8DAB, 0xB72B, 0x8DAC,
+	0xB72C, 0xB6E1, 0xB72D, 0x8DAD, 0xB72E, 0x8DAE, 0xB72F, 0xB6E2,
+	0xB730, 0xB6E3, 0xB731, 0x8DAF, 0xB732, 0x8DB0, 0xB733, 0x8DB1,
+	0xB734, 0x8DB2, 0xB735, 0x8DB3, 0xB736, 0x8DB4, 0xB737, 0x8DB5,
+	0xB738, 0xB6E4, 0xB739, 0xB6E5, 0xB73A, 0x8DB6, 0xB73B, 0xB6E6,
+	0xB73C, 0x8DB7, 0xB73D, 0x8DB8, 0xB73E, 0x8DB9, 0xB73F, 0x8DBA,
+	0xB740, 0x8DBB, 0xB741, 0x8DBC, 0xB742, 0x8DBD, 0xB743, 0x8DBE,
+	0xB744, 0xB6E7, 0xB745, 0x8DBF, 0xB746, 0x8DC0, 0xB747, 0x8DC1,
+	0xB748, 0xB6E8, 0xB749, 0x8DC2, 0xB74A, 0x8DC3, 0xB74B, 0x8DC4,
+	0xB74C, 0xB6E9, 0xB74D, 0x8DC5, 0xB74E, 0x8DC6, 0xB74F, 0x8DC7,
+	0xB750, 0x8DC8, 0xB751, 0x8DC9, 0xB752, 0x8DCA, 0xB753, 0x8DCB,
+	0xB754, 0xB6EA, 0xB755, 0xB6EB, 0xB756, 0x8DCC, 0xB757, 0x8DCD,
+	0xB758, 0x8DCE, 0xB759, 0x8DCF, 0xB75A, 0x8DD0, 0xB75B, 0x8DD1,
+	0xB75C, 0x8DD2, 0xB75D, 0x8DD3, 0xB75E, 0x8DD4, 0xB75F, 0x8DD5,
+	0xB760, 0xB6EC, 0xB761, 0x8DD6, 0xB762, 0x8DD7, 0xB763, 0x8DD8,
+	0xB764, 0xB6ED, 0xB765, 0x8DD9, 0xB766, 0x8DDA, 0xB767, 0x8DDB,
+	0xB768, 0xB6EE, 0xB769, 0x8DDC, 0xB76A, 0x8DDD, 0xB76B, 0x8DDE,
+	0xB76C, 0x8DDF, 0xB76D, 0x8DE0, 0xB76E, 0x8DE1, 0xB76F, 0x8DE2,
+	0xB770, 0xB6EF, 0xB771, 0xB6F0, 0xB772, 0x8DE3, 0xB773, 0xB6F1,
+	0xB774, 0x8DE4, 0xB775, 0xB6F2, 0xB776, 0x8DE5, 0xB777, 0x8DE6,
+	0xB778, 0x8DE7, 0xB779, 0x8DE8, 0xB77A, 0x8DE9, 0xB77B, 0x8DEA,
+	0xB77C, 0xB6F3, 0xB77D, 0xB6F4, 0xB77E, 0x8DEB, 0xB77F, 0x8DEC,
+	0xB780, 0xB6F5, 0xB781, 0x8DED, 0xB782, 0x8DEE, 0xB783, 0x8DEF,
+	0xB784, 0xB6F6, 0xB785, 0x8DF0, 0xB786, 0x8DF1, 0xB787, 0x8DF2,
+	0xB788, 0x8DF3, 0xB789, 0x8DF4, 0xB78A, 0x8DF5, 0xB78B, 0x8DF6,
+	0xB78C, 0xB6F7, 0xB78D, 0xB6F8, 0xB78E, 0x8DF7, 0xB78F, 0xB6F9,
+	0xB790, 0xB6FA, 0xB791, 0xB6FB, 0xB792, 0xB6FC, 0xB793, 0x8DF8,
+	0xB794, 0x8DF9, 0xB795, 0x8DFA, 0xB796, 0xB6FD, 0xB797, 0xB6FE,
+	0xB798, 0xB7A1, 0xB799, 0xB7A2, 0xB79A, 0x8DFB, 0xB79B, 0x8DFC,
+	0xB79C, 0xB7A3, 0xB79D, 0x8DFD, 0xB79E, 0x8DFE, 0xB79F, 0x8E41,
+	0xB7A0, 0xB7A4, 0xB7A1, 0x8E42, 0xB7A2, 0x8E43, 0xB7A3, 0x8E44,
+	0xB7A4, 0x8E45, 0xB7A5, 0x8E46, 0xB7A6, 0x8E47, 0xB7A7, 0x8E48,
+	0xB7A8, 0xB7A5, 0xB7A9, 0xB7A6, 0xB7AA, 0x8E49, 0xB7AB, 0xB7A7,
+	0xB7AC, 0xB7A8, 0xB7AD, 0xB7A9, 0xB7AE, 0x8E4A, 0xB7AF, 0x8E4B,
+	0xB7B0, 0x8E4C, 0xB7B1, 0x8E4D, 0xB7B2, 0x8E4E, 0xB7B3, 0x8E4F,
+	0xB7B4, 0xB7AA, 0xB7B5, 0xB7AB, 0xB7B6, 0x8E50, 0xB7B7, 0x8E51,
+	0xB7B8, 0xB7AC, 0xB7B9, 0x8E52, 0xB7BA, 0x8E53, 0xB7BB, 0x8E54,
+	0xB7BC, 0x8E55, 0xB7BD, 0x8E56, 0xB7BE, 0x8E57, 0xB7BF, 0x8E58,
+	0xB7C0, 0x8E59, 0xB7C1, 0x8E5A, 0xB7C2, 0x8E61, 0xB7C3, 0x8E62,
+	0xB7C4, 0x8E63, 0xB7C5, 0x8E64, 0xB7C6, 0x8E65, 0xB7C7, 0xB7AD,
+	0xB7C8, 0x8E66, 0xB7C9, 0xB7AE, 0xB7CA, 0x8E67, 0xB7CB, 0x8E68,
+	0xB7CC, 0x8E69, 0xB7CD, 0x8E6A, 0xB7CE, 0x8E6B, 0xB7CF, 0x8E6C,
+	0xB7D0, 0x8E6D, 0xB7D1, 0x8E6E, 0xB7D2, 0x8E6F, 0xB7D3, 0x8E70,
+	0xB7D4, 0x8E71, 0xB7D5, 0x8E72, 0xB7D6, 0x8E73, 0xB7D7, 0x8E74,
+	0xB7D8, 0x8E75, 0xB7D9, 0x8E76, 0xB7DA, 0x8E77, 0xB7DB, 0x8E78,
+	0xB7DC, 0x8E79, 0xB7DD, 0x8E7A, 0xB7DE, 0x8E81, 0xB7DF, 0x8E82,
+	0xB7E0, 0x8E83, 0xB7E1, 0x8E84, 0xB7E2, 0x8E85, 0xB7E3, 0x8E86,
+	0xB7E4, 0x8E87, 0xB7E5, 0x8E88, 0xB7E6, 0x8E89, 0xB7E7, 0x8E8A,
+	0xB7E8, 0x8E8B, 0xB7E9, 0x8E8C, 0xB7EA, 0x8E8D, 0xB7EB, 0x8E8E,
+	0xB7EC, 0xB7AF, 0xB7ED, 0xB7B0, 0xB7EE, 0x8E8F, 0xB7EF, 0x8E90,
+	0xB7F0, 0xB7B1, 0xB7F1, 0x8E91, 0xB7F2, 0x8E92, 0xB7F3, 0x8E93,
+	0xB7F4, 0xB7B2, 0xB7F5, 0x8E94, 0xB7F6, 0x8E95, 0xB7F7, 0x8E96,
+	0xB7F8, 0x8E97, 0xB7F9, 0x8E98, 0xB7FA, 0x8E99, 0xB7FB, 0x8E9A,
+	0xB7FC, 0xB7B3, 0xB7FD, 0xB7B4, 0xB7FE, 0x8E9B, 0xB7FF, 0xB7B5,
+	0xB800, 0xB7B6, 0xB801, 0xB7B7, 0xB802, 0x8E9C, 0xB803, 0x8E9D,
+	0xB804, 0x8E9E, 0xB805, 0x8E9F, 0xB806, 0x8EA0, 0xB807, 0xB7B8,
+	0xB808, 0xB7B9, 0xB809, 0xB7BA, 0xB80A, 0x8EA1, 0xB80B, 0x8EA2,
+	0xB80C, 0xB7BB, 0xB80D, 0x8EA3, 0xB80E, 0x8EA4, 0xB80F, 0x8EA5,
+	0xB810, 0xB7BC, 0xB811, 0x8EA6, 0xB812, 0x8EA7, 0xB813, 0x8EA8,
+	0xB814, 0x8EA9, 0xB815, 0x8EAA, 0xB816, 0x8EAB, 0xB817, 0x8EAC,
+	0xB818, 0xB7BD, 0xB819, 0xB7BE, 0xB81A, 0x8EAD, 0xB81B, 0xB7BF,
+	0xB81C, 0x8EAE, 0xB81D, 0xB7C0, 0xB81E, 0x8EAF, 0xB81F, 0x8EB0,
+	0xB820, 0x8EB1, 0xB821, 0x8EB2, 0xB822, 0x8EB3, 0xB823, 0x8EB4,
+	0xB824, 0xB7C1, 0xB825, 0xB7C2, 0xB826, 0x8EB5, 0xB827, 0x8EB6,
+	0xB828, 0xB7C3, 0xB829, 0x8EB7, 0xB82A, 0x8EB8, 0xB82B, 0x8EB9,
+	0xB82C, 0xB7C4, 0xB82D, 0x8EBA, 0xB82E, 0x8EBB, 0xB82F, 0x8EBC,
+	0xB830, 0x8EBD, 0xB831, 0x8EBE, 0xB832, 0x8EBF, 0xB833, 0x8EC0,
+	0xB834, 0xB7C5, 0xB835, 0xB7C6, 0xB836, 0x8EC1, 0xB837, 0xB7C7,
+	0xB838, 0xB7C8, 0xB839, 0xB7C9, 0xB83A, 0x8EC2, 0xB83B, 0x8EC3,
+	0xB83C, 0x8EC4, 0xB83D, 0x8EC5, 0xB83E, 0x8EC6, 0xB83F, 0x8EC7,
+	0xB840, 0xB7CA, 0xB841, 0x8EC8, 0xB842, 0x8EC9, 0xB843, 0x8ECA,
+	0xB844, 0xB7CB, 0xB845, 0x8ECB, 0xB846, 0x8ECC, 0xB847, 0x8ECD,
+	0xB848, 0x8ECE, 0xB849, 0x8ECF, 0xB84A, 0x8ED0, 0xB84B, 0x8ED1,
+	0xB84C, 0x8ED2, 0xB84D, 0x8ED3, 0xB84E, 0x8ED4, 0xB84F, 0x8ED5,
+	0xB850, 0x8ED6, 0xB851, 0xB7CC, 0xB852, 0x8ED7, 0xB853, 0xB7CD,
+	0xB854, 0x8ED8, 0xB855, 0x8ED9, 0xB856, 0x8EDA, 0xB857, 0x8EDB,
+	0xB858, 0x8EDC, 0xB859, 0x8EDD, 0xB85A, 0x8EDE, 0xB85B, 0x8EDF,
+	0xB85C, 0xB7CE, 0xB85D, 0xB7CF, 0xB85E, 0x8EE0, 0xB85F, 0x8EE1,
+	0xB860, 0xB7D0, 0xB861, 0x8EE2, 0xB862, 0x8EE3, 0xB863, 0x8EE4,
+	0xB864, 0xB7D1, 0xB865, 0x8EE5, 0xB866, 0x8EE6, 0xB867, 0x8EE7,
+	0xB868, 0x8EE8, 0xB869, 0x8EE9, 0xB86A, 0x8EEA, 0xB86B, 0x8EEB,
+	0xB86C, 0xB7D2, 0xB86D, 0xB7D3, 0xB86E, 0x8EEC, 0xB86F, 0xB7D4,
+	0xB870, 0x8EED, 0xB871, 0xB7D5, 0xB872, 0x8EEE, 0xB873, 0x8EEF,
+	0xB874, 0x8EF0, 0xB875, 0x8EF1, 0xB876, 0x8EF2, 0xB877, 0x8EF3,
+	0xB878, 0xB7D6, 0xB879, 0x8EF4, 0xB87A, 0x8EF5, 0xB87B, 0x8EF6,
+	0xB87C, 0xB7D7, 0xB87D, 0x8EF7, 0xB87E, 0x8EF8, 0xB87F, 0x8EF9,
+	0xB880, 0x8EFA, 0xB881, 0x8EFB, 0xB882, 0x8EFC, 0xB883, 0x8EFD,
+	0xB884, 0x8EFE, 0xB885, 0x8F41, 0xB886, 0x8F42, 0xB887, 0x8F43,
+	0xB888, 0x8F44, 0xB889, 0x8F45, 0xB88A, 0x8F46, 0xB88B, 0x8F47,
+	0xB88C, 0x8F48, 0xB88D, 0xB7D8, 0xB88E, 0x8F49, 0xB88F, 0x8F4A,
+	0xB890, 0x8F4B, 0xB891, 0x8F4C, 0xB892, 0x8F4D, 0xB893, 0x8F4E,
+	0xB894, 0x8F4F, 0xB895, 0x8F50, 0xB896, 0x8F51, 0xB897, 0x8F52,
+	0xB898, 0x8F53, 0xB899, 0x8F54, 0xB89A, 0x8F55, 0xB89B, 0x8F56,
+	0xB89C, 0x8F57, 0xB89D, 0x8F58, 0xB89E, 0x8F59, 0xB89F, 0x8F5A,
+	0xB8A0, 0x8F61, 0xB8A1, 0x8F62, 0xB8A2, 0x8F63, 0xB8A3, 0x8F64,
+	0xB8A4, 0x8F65, 0xB8A5, 0x8F66, 0xB8A6, 0x8F67, 0xB8A7, 0x8F68,
+	0xB8A8, 0xB7D9, 0xB8A9, 0x8F69, 0xB8AA, 0x8F6A, 0xB8AB, 0x8F6B,
+	0xB8AC, 0x8F6C, 0xB8AD, 0x8F6D, 0xB8AE, 0x8F6E, 0xB8AF, 0x8F6F,
+	0xB8B0, 0xB7DA, 0xB8B1, 0x8F70, 0xB8B2, 0x8F71, 0xB8B3, 0x8F72,
+	0xB8B4, 0xB7DB, 0xB8B5, 0x8F73, 0xB8B6, 0x8F74, 0xB8B7, 0x8F75,
+	0xB8B8, 0xB7DC, 0xB8B9, 0x8F76, 0xB8BA, 0x8F77, 0xB8BB, 0x8F78,
+	0xB8BC, 0x8F79, 0xB8BD, 0x8F7A, 0xB8BE, 0x8F81, 0xB8BF, 0x8F82,
+	0xB8C0, 0xB7DD, 0xB8C1, 0xB7DE, 0xB8C2, 0x8F83, 0xB8C3, 0xB7DF,
+	0xB8C4, 0x8F84, 0xB8C5, 0xB7E0, 0xB8C6, 0x8F85, 0xB8C7, 0x8F86,
+	0xB8C8, 0x8F87, 0xB8C9, 0x8F88, 0xB8CA, 0x8F89, 0xB8CB, 0x8F8A,
+	0xB8CC, 0xB7E1, 0xB8CD, 0x8F8B, 0xB8CE, 0x8F8C, 0xB8CF, 0x8F8D,
+	0xB8D0, 0xB7E2, 0xB8D1, 0x8F8E, 0xB8D2, 0x8F8F, 0xB8D3, 0x8F90,
+	0xB8D4, 0xB7E3, 0xB8D5, 0x8F91, 0xB8D6, 0x8F92, 0xB8D7, 0x8F93,
+	0xB8D8, 0x8F94, 0xB8D9, 0x8F95, 0xB8DA, 0x8F96, 0xB8DB, 0x8F97,
+	0xB8DC, 0x8F98, 0xB8DD, 0xB7E4, 0xB8DE, 0x8F99, 0xB8DF, 0xB7E5,
+	0xB8E0, 0x8F9A, 0xB8E1, 0xB7E6, 0xB8E2, 0x8F9B, 0xB8E3, 0x8F9C,
+	0xB8E4, 0x8F9D, 0xB8E5, 0x8F9E, 0xB8E6, 0x8F9F, 0xB8E7, 0x8FA0,
+	0xB8E8, 0xB7E7, 0xB8E9, 0xB7E8, 0xB8EA, 0x8FA1, 0xB8EB, 0x8FA2,
+	0xB8EC, 0xB7E9, 0xB8ED, 0x8FA3, 0xB8EE, 0x8FA4, 0xB8EF, 0x8FA5,
+	0xB8F0, 0xB7EA, 0xB8F1, 0x8FA6, 0xB8F2, 0x8FA7, 0xB8F3, 0x8FA8,
+	0xB8F4, 0x8FA9, 0xB8F5, 0x8FAA, 0xB8F6, 0x8FAB, 0xB8F7, 0x8FAC,
+	0xB8F8, 0xB7EB, 0xB8F9, 0xB7EC, 0xB8FA, 0x8FAD, 0xB8FB, 0xB7ED,
+	0xB8FC, 0x8FAE, 0xB8FD, 0xB7EE, 0xB8FE, 0x8FAF, 0xB8FF, 0x8FB0,
+	0xB900, 0x8FB1, 0xB901, 0x8FB2, 0xB902, 0x8FB3, 0xB903, 0x8FB4,
+	0xB904, 0xB7EF, 0xB905, 0x8FB5, 0xB906, 0x8FB6, 0xB907, 0x8FB7,
+	0xB908, 0x8FB8, 0xB909, 0x8FB9, 0xB90A, 0x8FBA, 0xB90B, 0x8FBB,
+	0xB90C, 0x8FBC, 0xB90D, 0x8FBD, 0xB90E, 0x8FBE, 0xB90F, 0x8FBF,
+	0xB910, 0x8FC0, 0xB911, 0x8FC1, 0xB912, 0x8FC2, 0xB913, 0x8FC3,
+	0xB914, 0x8FC4, 0xB915, 0x8FC5, 0xB916, 0x8FC6, 0xB917, 0x8FC7,
+	0xB918, 0xB7F0, 0xB919, 0x8FC8, 0xB91A, 0x8FC9, 0xB91B, 0x8FCA,
+	0xB91C, 0x8FCB, 0xB91D, 0x8FCC, 0xB91E, 0x8FCD, 0xB91F, 0x8FCE,
+	0xB920, 0xB7F1, 0xB921, 0x8FCF, 0xB922, 0x8FD0, 0xB923, 0x8FD1,
+	0xB924, 0x8FD2, 0xB925, 0x8FD3, 0xB926, 0x8FD4, 0xB927, 0x8FD5,
+	0xB928, 0x8FD6, 0xB929, 0x8FD7, 0xB92A, 0x8FD8, 0xB92B, 0x8FD9,
+	0xB92C, 0x8FDA, 0xB92D, 0x8FDB, 0xB92E, 0x8FDC, 0xB92F, 0x8FDD,
+	0xB930, 0x8FDE, 0xB931, 0x8FDF, 0xB932, 0x8FE0, 0xB933, 0x8FE1,
+	0xB934, 0x8FE2, 0xB935, 0x8FE3, 0xB936, 0x8FE4, 0xB937, 0x8FE5,
+	0xB938, 0x8FE6, 0xB939, 0x8FE7, 0xB93A, 0x8FE8, 0xB93B, 0x8FE9,
+	0xB93C, 0xB7F2, 0xB93D, 0xB7F3, 0xB93E, 0x8FEA, 0xB93F, 0x8FEB,
+	0xB940, 0xB7F4, 0xB941, 0x8FEC, 0xB942, 0x8FED, 0xB943, 0x8FEE,
+	0xB944, 0xB7F5, 0xB945, 0x8FEF, 0xB946, 0x8FF0, 0xB947, 0x8FF1,
+	0xB948, 0x8FF2, 0xB949, 0x8FF3, 0xB94A, 0x8FF4, 0xB94B, 0x8FF5,
+	0xB94C, 0xB7F6, 0xB94D, 0x8FF6, 0xB94E, 0x8FF7, 0xB94F, 0xB7F7,
+	0xB950, 0x8FF8, 0xB951, 0xB7F8, 0xB952, 0x8FF9, 0xB953, 0x8FFA,
+	0xB954, 0x8FFB, 0xB955, 0x8FFC, 0xB956, 0x8FFD, 0xB957, 0x8FFE,
+	0xB958, 0xB7F9, 0xB959, 0xB7FA, 0xB95A, 0x9041, 0xB95B, 0x9042,
+	0xB95C, 0xB7FB, 0xB95D, 0x9043, 0xB95E, 0x9044, 0xB95F, 0x9045,
+	0xB960, 0xB7FC, 0xB961, 0x9046, 0xB962, 0x9047, 0xB963, 0x9048,
+	0xB964, 0x9049, 0xB965, 0x904A, 0xB966, 0x904B, 0xB967, 0x904C,
+	0xB968, 0xB7FD, 0xB969, 0xB7FE, 0xB96A, 0x904D, 0xB96B, 0xB8A1,
+	0xB96C, 0x904E, 0xB96D, 0xB8A2, 0xB96E, 0x904F, 0xB96F, 0x9050,
+	0xB970, 0x9051, 0xB971, 0x9052, 0xB972, 0x9053, 0xB973, 0x9054,
+	0xB974, 0xB8A3, 0xB975, 0xB8A4, 0xB976, 0x9055, 0xB977, 0x9056,
+	0xB978, 0xB8A5, 0xB979, 0x9057, 0xB97A, 0x9058, 0xB97B, 0x9059,
+	0xB97C, 0xB8A6, 0xB97D, 0x905A, 0xB97E, 0x9061, 0xB97F, 0x9062,
+	0xB980, 0x9063, 0xB981, 0x9064, 0xB982, 0x9065, 0xB983, 0x9066,
+	0xB984, 0xB8A7, 0xB985, 0xB8A8, 0xB986, 0x9067, 0xB987, 0xB8A9,
+	0xB988, 0x9068, 0xB989, 0xB8AA, 0xB98A, 0xB8AB, 0xB98B, 0x9069,
+	0xB98C, 0x906A, 0xB98D, 0xB8AC, 0xB98E, 0xB8AD, 0xB98F, 0x906B,
+	0xB990, 0x906C, 0xB991, 0x906D, 0xB992, 0x906E, 0xB993, 0x906F,
+	0xB994, 0x9070, 0xB995, 0x9071, 0xB996, 0x9072, 0xB997, 0x9073,
+	0xB998, 0x9074, 0xB999, 0x9075, 0xB99A, 0x9076, 0xB99B, 0x9077,
+	0xB99C, 0x9078, 0xB99D, 0x9079, 0xB99E, 0x907A, 0xB99F, 0x9081,
+	0xB9A0, 0x9082, 0xB9A1, 0x9083, 0xB9A2, 0x9084, 0xB9A3, 0x9085,
+	0xB9A4, 0x9086, 0xB9A5, 0x9087, 0xB9A6, 0x9088, 0xB9A7, 0x9089,
+	0xB9A8, 0x908A, 0xB9A9, 0x908B, 0xB9AA, 0x908C, 0xB9AB, 0x908D,
+	0xB9AC, 0xB8AE, 0xB9AD, 0xB8AF, 0xB9AE, 0x908E, 0xB9AF, 0x908F,
+	0xB9B0, 0xB8B0, 0xB9B1, 0x9090, 0xB9B2, 0x9091, 0xB9B3, 0x9092,
+	0xB9B4, 0xB8B1, 0xB9B5, 0x9093, 0xB9B6, 0x9094, 0xB9B7, 0x9095,
+	0xB9B8, 0x9096, 0xB9B9, 0x9097, 0xB9BA, 0x9098, 0xB9BB, 0x9099,
+	0xB9BC, 0xB8B2, 0xB9BD, 0xB8B3, 0xB9BE, 0x909A, 0xB9BF, 0xB8B4,
+	0xB9C0, 0x909B, 0xB9C1, 0xB8B5, 0xB9C2, 0x909C, 0xB9C3, 0x909D,
+	0xB9C4, 0x909E, 0xB9C5, 0x909F, 0xB9C6, 0x90A0, 0xB9C7, 0x90A1,
+	0xB9C8, 0xB8B6, 0xB9C9, 0xB8B7, 0xB9CA, 0x90A2, 0xB9CB, 0x90A3,
+	0xB9CC, 0xB8B8, 0xB9CD, 0x90A4, 0xB9CE, 0xB8B9, 0xB9CF, 0xB8BA,
+	0xB9D0, 0xB8BB, 0xB9D1, 0xB8BC, 0xB9D2, 0xB8BD, 0xB9D3, 0x90A5,
+	0xB9D4, 0x90A6, 0xB9D5, 0x90A7, 0xB9D6, 0x90A8, 0xB9D7, 0x90A9,
+	0xB9D8, 0xB8BE, 0xB9D9, 0xB8BF, 0xB9DA, 0x90AA, 0xB9DB, 0xB8C0,
+	0xB9DC, 0x90AB, 0xB9DD, 0xB8C1, 0xB9DE, 0xB8C2, 0xB9DF, 0x90AC,
+	0xB9E0, 0x90AD, 0xB9E1, 0xB8C3, 0xB9E2, 0x90AE, 0xB9E3, 0xB8C4,
+	0xB9E4, 0xB8C5, 0xB9E5, 0xB8C6, 0xB9E6, 0x90AF, 0xB9E7, 0x90B0,
+	0xB9E8, 0xB8C7, 0xB9E9, 0x90B1, 0xB9EA, 0x90B2, 0xB9EB, 0x90B3,
+	0xB9EC, 0xB8C8, 0xB9ED, 0x90B4, 0xB9EE, 0x90B5, 0xB9EF, 0x90B6,
+	0xB9F0, 0x90B7, 0xB9F1, 0x90B8, 0xB9F2, 0x90B9, 0xB9F3, 0x90BA,
+	0xB9F4, 0xB8C9, 0xB9F5, 0xB8CA, 0xB9F6, 0x90BB, 0xB9F7, 0xB8CB,
+	0xB9F8, 0xB8CC, 0xB9F9, 0xB8CD, 0xB9FA, 0xB8CE, 0xB9FB, 0x90BC,
+	0xB9FC, 0x90BD, 0xB9FD, 0x90BE, 0xB9FE, 0x90BF, 0xB9FF, 0x90C0,
+	0xBA00, 0xB8CF, 0xBA01, 0xB8D0, 0xBA02, 0x90C1, 0xBA03, 0x90C2,
+	0xBA04, 0x90C3, 0xBA05, 0x90C4, 0xBA06, 0x90C5, 0xBA07, 0x90C6,
+	0xBA08, 0xB8D1, 0xBA09, 0x90C7, 0xBA0A, 0x90C8, 0xBA0B, 0x90C9,
+	0xBA0C, 0x90CA, 0xBA0D, 0x90CB, 0xBA0E, 0x90CC, 0xBA0F, 0x90CD,
+	0xBA10, 0x90CE, 0xBA11, 0x90CF, 0xBA12, 0x90D0, 0xBA13, 0x90D1,
+	0xBA14, 0x90D2, 0xBA15, 0xB8D2, 0xBA16, 0x90D3, 0xBA17, 0x90D4,
+	0xBA18, 0x90D5, 0xBA19, 0x90D6, 0xBA1A, 0x90D7, 0xBA1B, 0x90D8,
+	0xBA1C, 0x90D9, 0xBA1D, 0x90DA, 0xBA1E, 0x90DB, 0xBA1F, 0x90DC,
+	0xBA20, 0x90DD, 0xBA21, 0x90DE, 0xBA22, 0x90DF, 0xBA23, 0x90E0,
+	0xBA24, 0x90E1, 0xBA25, 0x90E2, 0xBA26, 0x90E3, 0xBA27, 0x90E4,
+	0xBA28, 0x90E5, 0xBA29, 0x90E6, 0xBA2A, 0x90E7, 0xBA2B, 0x90E8,
+	0xBA2C, 0x90E9, 0xBA2D, 0x90EA, 0xBA2E, 0x90EB, 0xBA2F, 0x90EC,
+	0xBA30, 0x90ED, 0xBA31, 0x90EE, 0xBA32, 0x90EF, 0xBA33, 0x90F0,
+	0xBA34, 0x90F1, 0xBA35, 0x90F2, 0xBA36, 0x90F3, 0xBA37, 0x90F4,
+	0xBA38, 0xB8D3, 0xBA39, 0xB8D4, 0xBA3A, 0x90F5, 0xBA3B, 0x90F6,
+	0xBA3C, 0xB8D5, 0xBA3D, 0x90F7, 0xBA3E, 0x90F8, 0xBA3F, 0x90F9,
+	0xBA40, 0xB8D6, 0xBA41, 0x90FA, 0xBA42, 0xB8D7, 0xBA43, 0x90FB,
+	0xBA44, 0x90FC, 0xBA45, 0x90FD, 0xBA46, 0x90FE, 0xBA47, 0x9141,
+	0xBA48, 0xB8D8, 0xBA49, 0xB8D9, 0xBA4A, 0x9142, 0xBA4B, 0xB8DA,
+	0xBA4C, 0x9143, 0xBA4D, 0xB8DB, 0xBA4E, 0xB8DC, 0xBA4F, 0x9144,
+	0xBA50, 0x9145, 0xBA51, 0x9146, 0xBA52, 0x9147, 0xBA53, 0xB8DD,
+	0xBA54, 0xB8DE, 0xBA55, 0xB8DF, 0xBA56, 0x9148, 0xBA57, 0x9149,
+	0xBA58, 0xB8E0, 0xBA59, 0x914A, 0xBA5A, 0x914B, 0xBA5B, 0x914C,
+	0xBA5C, 0xB8E1, 0xBA5D, 0x914D, 0xBA5E, 0x914E, 0xBA5F, 0x914F,
+	0xBA60, 0x9150, 0xBA61, 0x9151, 0xBA62, 0x9152, 0xBA63, 0x9153,
+	0xBA64, 0xB8E2, 0xBA65, 0xB8E3, 0xBA66, 0x9154, 0xBA67, 0xB8E4,
+	0xBA68, 0xB8E5, 0xBA69, 0xB8E6, 0xBA6A, 0x9155, 0xBA6B, 0x9156,
+	0xBA6C, 0x9157, 0xBA6D, 0x9158, 0xBA6E, 0x9159, 0xBA6F, 0x915A,
+	0xBA70, 0xB8E7, 0xBA71, 0xB8E8, 0xBA72, 0x9161, 0xBA73, 0x9162,
+	0xBA74, 0xB8E9, 0xBA75, 0x9163, 0xBA76, 0x9164, 0xBA77, 0x9165,
+	0xBA78, 0xB8EA, 0xBA79, 0x9166, 0xBA7A, 0x9167, 0xBA7B, 0x9168,
+	0xBA7C, 0x9169, 0xBA7D, 0x916A, 0xBA7E, 0x916B, 0xBA7F, 0x916C,
+	0xBA80, 0x916D, 0xBA81, 0x916E, 0xBA82, 0x916F, 0xBA83, 0xB8EB,
+	0xBA84, 0xB8EC, 0xBA85, 0xB8ED, 0xBA86, 0x9170, 0xBA87, 0xB8EE,
+	0xBA88, 0x9171, 0xBA89, 0x9172, 0xBA8A, 0x9173, 0xBA8B, 0x9174,
+	0xBA8C, 0xB8EF, 0xBA8D, 0x9175, 0xBA8E, 0x9176, 0xBA8F, 0x9177,
+	0xBA90, 0x9178, 0xBA91, 0x9179, 0xBA92, 0x917A, 0xBA93, 0x9181,
+	0xBA94, 0x9182, 0xBA95, 0x9183, 0xBA96, 0x9184, 0xBA97, 0x9185,
+	0xBA98, 0x9186, 0xBA99, 0x9187, 0xBA9A, 0x9188, 0xBA9B, 0x9189,
+	0xBA9C, 0x918A, 0xBA9D, 0x918B, 0xBA9E, 0x918C, 0xBA9F, 0x918D,
+	0xBAA0, 0x918E, 0xBAA1, 0x918F, 0xBAA2, 0x9190, 0xBAA3, 0x9191,
+	0xBAA4, 0x9192, 0xBAA5, 0x9193, 0xBAA6, 0x9194, 0xBAA7, 0x9195,
+	0xBAA8, 0xB8F0, 0xBAA9, 0xB8F1, 0xBAAA, 0x9196, 0xBAAB, 0xB8F2,
+	0xBAAC, 0xB8F3, 0xBAAD, 0x9197, 0xBAAE, 0x9198, 0xBAAF, 0x9199,
+	0xBAB0, 0xB8F4, 0xBAB1, 0x919A, 0xBAB2, 0xB8F5, 0xBAB3, 0x919B,
+	0xBAB4, 0x919C, 0xBAB5, 0x919D, 0xBAB6, 0x919E, 0xBAB7, 0x919F,
+	0xBAB8, 0xB8F6, 0xBAB9, 0xB8F7, 0xBABA, 0x91A0, 0xBABB, 0xB8F8,
+	0xBABC, 0x91A1, 0xBABD, 0xB8F9, 0xBABE, 0x91A2, 0xBABF, 0x91A3,
+	0xBAC0, 0x91A4, 0xBAC1, 0x91A5, 0xBAC2, 0x91A6, 0xBAC3, 0x91A7,
+	0xBAC4, 0xB8FA, 0xBAC5, 0x91A8, 0xBAC6, 0x91A9, 0xBAC7, 0x91AA,
+	0xBAC8, 0xB8FB, 0xBAC9, 0x91AB, 0xBACA, 0x91AC, 0xBACB, 0x91AD,
+	0xBACC, 0x91AE, 0xBACD, 0x91AF, 0xBACE, 0x91B0, 0xBACF, 0x91B1,
+	0xBAD0, 0x91B2, 0xBAD1, 0x91B3, 0xBAD2, 0x91B4, 0xBAD3, 0x91B5,
+	0xBAD4, 0x91B6, 0xBAD5, 0x91B7, 0xBAD6, 0x91B8, 0xBAD7, 0x91B9,
+	0xBAD8, 0xB8FC, 0xBAD9, 0xB8FD, 0xBADA, 0x91BA, 0xBADB, 0x91BB,
+	0xBADC, 0x91BC, 0xBADD, 0x91BD, 0xBADE, 0x91BE, 0xBADF, 0x91BF,
+	0xBAE0, 0x91C0, 0xBAE1, 0x91C1, 0xBAE2, 0x91C2, 0xBAE3, 0x91C3,
+	0xBAE4, 0x91C4, 0xBAE5, 0x91C5, 0xBAE6, 0x91C6, 0xBAE7, 0x91C7,
+	0xBAE8, 0x91C8, 0xBAE9, 0x91C9, 0xBAEA, 0x91CA, 0xBAEB, 0x91CB,
+	0xBAEC, 0x91CC, 0xBAED, 0x91CD, 0xBAEE, 0x91CE, 0xBAEF, 0x91CF,
+	0xBAF0, 0x91D0, 0xBAF1, 0x91D1, 0xBAF2, 0x91D2, 0xBAF3, 0x91D3,
+	0xBAF4, 0x91D4, 0xBAF5, 0x91D5, 0xBAF6, 0x91D6, 0xBAF7, 0x91D7,
+	0xBAF8, 0x91D8, 0xBAF9, 0x91D9, 0xBAFA, 0x91DA, 0xBAFB, 0x91DB,
+	0xBAFC, 0xB8FE, 0xBAFD, 0x91DC, 0xBAFE, 0x91DD, 0xBAFF, 0x91DE,
+	0xBB00, 0xB9A1, 0xBB01, 0x91DF, 0xBB02, 0x91E0, 0xBB03, 0x91E1,
+	0xBB04, 0xB9A2, 0xBB05, 0x91E2, 0xBB06, 0x91E3, 0xBB07, 0x91E4,
+	0xBB08, 0x91E5, 0xBB09, 0x91E6, 0xBB0A, 0x91E7, 0xBB0B, 0x91E8,
+	0xBB0C, 0x91E9, 0xBB0D, 0xB9A3, 0xBB0E, 0x91EA, 0xBB0F, 0xB9A4,
+	0xBB10, 0x91EB, 0xBB11, 0xB9A5, 0xBB12, 0x91EC, 0xBB13, 0x91ED,
+	0xBB14, 0x91EE, 0xBB15, 0x91EF, 0xBB16, 0x91F0, 0xBB17, 0x91F1,
+	0xBB18, 0xB9A6, 0xBB19, 0x91F2, 0xBB1A, 0x91F3, 0xBB1B, 0x91F4,
+	0xBB1C, 0xB9A7, 0xBB1D, 0x91F5, 0xBB1E, 0x91F6, 0xBB1F, 0x91F7,
+	0xBB20, 0xB9A8, 0xBB21, 0x91F8, 0xBB22, 0x91F9, 0xBB23, 0x91FA,
+	0xBB24, 0x91FB, 0xBB25, 0x91FC, 0xBB26, 0x91FD, 0xBB27, 0x91FE,
+	0xBB28, 0x9241, 0xBB29, 0xB9A9, 0xBB2A, 0x9242, 0xBB2B, 0xB9AA,
+	0xBB2C, 0x9243, 0xBB2D, 0x9244, 0xBB2E, 0x9245, 0xBB2F, 0x9246,
+	0xBB30, 0x9247, 0xBB31, 0x9248, 0xBB32, 0x9249, 0xBB33, 0x924A,
+	0xBB34, 0xB9AB, 0xBB35, 0xB9AC, 0xBB36, 0xB9AD, 0xBB37, 0x924B,
+	0xBB38, 0xB9AE, 0xBB39, 0x924C, 0xBB3A, 0x924D, 0xBB3B, 0xB9AF,
+	0xBB3C, 0xB9B0, 0xBB3D, 0xB9B1, 0xBB3E, 0xB9B2, 0xBB3F, 0x924E,
+	0xBB40, 0x924F, 0xBB41, 0x9250, 0xBB42, 0x9251, 0xBB43, 0x9252,
+	0xBB44, 0xB9B3, 0xBB45, 0xB9B4, 0xBB46, 0x9253, 0xBB47, 0xB9B5,
+	0xBB48, 0x9254, 0xBB49, 0xB9B6, 0xBB4A, 0x9255, 0xBB4B, 0x9256,
+	0xBB4C, 0x9257, 0xBB4D, 0xB9B7, 0xBB4E, 0x9258, 0xBB4F, 0xB9B8,
+	0xBB50, 0xB9B9, 0xBB51, 0x9259, 0xBB52, 0x925A, 0xBB53, 0x9261,
+	0xBB54, 0xB9BA, 0xBB55, 0x9262, 0xBB56, 0x9263, 0xBB57, 0x9264,
+	0xBB58, 0xB9BB, 0xBB59, 0x9265, 0xBB5A, 0x9266, 0xBB5B, 0x9267,
+	0xBB5C, 0x9268, 0xBB5D, 0x9269, 0xBB5E, 0x926A, 0xBB5F, 0x926B,
+	0xBB60, 0x926C, 0xBB61, 0xB9BC, 0xBB62, 0x926D, 0xBB63, 0xB9BD,
+	0xBB64, 0x926E, 0xBB65, 0x926F, 0xBB66, 0x9270, 0xBB67, 0x9271,
+	0xBB68, 0x9272, 0xBB69, 0x9273, 0xBB6A, 0x9274, 0xBB6B, 0x9275,
+	0xBB6C, 0xB9BE, 0xBB6D, 0x9276, 0xBB6E, 0x9277, 0xBB6F, 0x9278,
+	0xBB70, 0x9279, 0xBB71, 0x927A, 0xBB72, 0x9281, 0xBB73, 0x9282,
+	0xBB74, 0x9283, 0xBB75, 0x9284, 0xBB76, 0x9285, 0xBB77, 0x9286,
+	0xBB78, 0x9287, 0xBB79, 0x9288, 0xBB7A, 0x9289, 0xBB7B, 0x928A,
+	0xBB7C, 0x928B, 0xBB7D, 0x928C, 0xBB7E, 0x928D, 0xBB7F, 0x928E,
+	0xBB80, 0x928F, 0xBB81, 0x9290, 0xBB82, 0x9291, 0xBB83, 0x9292,
+	0xBB84, 0x9293, 0xBB85, 0x9294, 0xBB86, 0x9295, 0xBB87, 0x9296,
+	0xBB88, 0xB9BF, 0xBB89, 0x9297, 0xBB8A, 0x9298, 0xBB8B, 0x9299,
+	0xBB8C, 0xB9C0, 0xBB8D, 0x929A, 0xBB8E, 0x929B, 0xBB8F, 0x929C,
+	0xBB90, 0xB9C1, 0xBB91, 0x929D, 0xBB92, 0x929E, 0xBB93, 0x929F,
+	0xBB94, 0x92A0, 0xBB95, 0x92A1, 0xBB96, 0x92A2, 0xBB97, 0x92A3,
+	0xBB98, 0x92A4, 0xBB99, 0x92A5, 0xBB9A, 0x92A6, 0xBB9B, 0x92A7,
+	0xBB9C, 0x92A8, 0xBB9D, 0x92A9, 0xBB9E, 0x92AA, 0xBB9F, 0x92AB,
+	0xBBA0, 0x92AC, 0xBBA1, 0x92AD, 0xBBA2, 0x92AE, 0xBBA3, 0x92AF,
+	0xBBA4, 0xB9C2, 0xBBA5, 0x92B0, 0xBBA6, 0x92B1, 0xBBA7, 0x92B2,
+	0xBBA8, 0xB9C3, 0xBBA9, 0x92B3, 0xBBAA, 0x92B4, 0xBBAB, 0x92B5,
+	0xBBAC, 0xB9C4, 0xBBAD, 0x92B6, 0xBBAE, 0x92B7, 0xBBAF, 0x92B8,
+	0xBBB0, 0x92B9, 0xBBB1, 0x92BA, 0xBBB2, 0x92BB, 0xBBB3, 0x92BC,
+	0xBBB4, 0xB9C5, 0xBBB5, 0x92BD, 0xBBB6, 0x92BE, 0xBBB7, 0xB9C6,
+	0xBBB8, 0x92BF, 0xBBB9, 0x92C0, 0xBBBA, 0x92C1, 0xBBBB, 0x92C2,
+	0xBBBC, 0x92C3, 0xBBBD, 0x92C4, 0xBBBE, 0x92C5, 0xBBBF, 0x92C6,
+	0xBBC0, 0xB9C7, 0xBBC1, 0x92C7, 0xBBC2, 0x92C8, 0xBBC3, 0x92C9,
+	0xBBC4, 0xB9C8, 0xBBC5, 0x92CA, 0xBBC6, 0x92CB, 0xBBC7, 0x92CC,
+	0xBBC8, 0xB9C9, 0xBBC9, 0x92CD, 0xBBCA, 0x92CE, 0xBBCB, 0x92CF,
+	0xBBCC, 0x92D0, 0xBBCD, 0x92D1, 0xBBCE, 0x92D2, 0xBBCF, 0x92D3,
+	0xBBD0, 0xB9CA, 0xBBD1, 0x92D4, 0xBBD2, 0x92D5, 0xBBD3, 0xB9CB,
+	0xBBD4, 0x92D6, 0xBBD5, 0x92D7, 0xBBD6, 0x92D8, 0xBBD7, 0x92D9,
+	0xBBD8, 0x92DA, 0xBBD9, 0x92DB, 0xBBDA, 0x92DC, 0xBBDB, 0x92DD,
+	0xBBDC, 0x92DE, 0xBBDD, 0x92DF, 0xBBDE, 0x92E0, 0xBBDF, 0x92E1,
+	0xBBE0, 0x92E2, 0xBBE1, 0x92E3, 0xBBE2, 0x92E4, 0xBBE3, 0x92E5,
+	0xBBE4, 0x92E6, 0xBBE5, 0x92E7, 0xBBE6, 0x92E8, 0xBBE7, 0x92E9,
+	0xBBE8, 0x92EA, 0xBBE9, 0x92EB, 0xBBEA, 0x92EC, 0xBBEB, 0x92ED,
+	0xBBEC, 0x92EE, 0xBBED, 0x92EF, 0xBBEE, 0x92F0, 0xBBEF, 0x92F1,
+	0xBBF0, 0x92F2, 0xBBF1, 0x92F3, 0xBBF2, 0x92F4, 0xBBF3, 0x92F5,
+	0xBBF4, 0x92F6, 0xBBF5, 0x92F7, 0xBBF6, 0x92F8, 0xBBF7, 0x92F9,
+	0xBBF8, 0xB9CC, 0xBBF9, 0xB9CD, 0xBBFA, 0x92FA, 0xBBFB, 0x92FB,
+	0xBBFC, 0xB9CE, 0xBBFD, 0x92FC, 0xBBFE, 0x92FD, 0xBBFF, 0xB9CF,
+	0xBC00, 0xB9D0, 0xBC01, 0x92FE, 0xBC02, 0xB9D1, 0xBC03, 0x9341,
+	0xBC04, 0x9342, 0xBC05, 0x9343, 0xBC06, 0x9344, 0xBC07, 0x9345,
+	0xBC08, 0xB9D2, 0xBC09, 0xB9D3, 0xBC0A, 0x9346, 0xBC0B, 0xB9D4,
+	0xBC0C, 0xB9D5, 0xBC0D, 0xB9D6, 0xBC0E, 0x9347, 0xBC0F, 0xB9D7,
+	0xBC10, 0x9348, 0xBC11, 0xB9D8, 0xBC12, 0x9349, 0xBC13, 0x934A,
+	0xBC14, 0xB9D9, 0xBC15, 0xB9DA, 0xBC16, 0xB9DB, 0xBC17, 0xB9DC,
+	0xBC18, 0xB9DD, 0xBC19, 0x934B, 0xBC1A, 0x934C, 0xBC1B, 0xB9DE,
+	0xBC1C, 0xB9DF, 0xBC1D, 0xB9E0, 0xBC1E, 0xB9E1, 0xBC1F, 0xB9E2,
+	0xBC20, 0x934D, 0xBC21, 0x934E, 0xBC22, 0x934F, 0xBC23, 0x9350,
+	0xBC24, 0xB9E3, 0xBC25, 0xB9E4, 0xBC26, 0x9351, 0xBC27, 0xB9E5,
+	0xBC28, 0x9352, 0xBC29, 0xB9E6, 0xBC2A, 0x9353, 0xBC2B, 0x9354,
+	0xBC2C, 0x9355, 0xBC2D, 0xB9E7, 0xBC2E, 0x9356, 0xBC2F, 0x9357,
+	0xBC30, 0xB9E8, 0xBC31, 0xB9E9, 0xBC32, 0x9358, 0xBC33, 0x9359,
+	0xBC34, 0xB9EA, 0xBC35, 0x935A, 0xBC36, 0x9361, 0xBC37, 0x9362,
+	0xBC38, 0xB9EB, 0xBC39, 0x9363, 0xBC3A, 0x9364, 0xBC3B, 0x9365,
+	0xBC3C, 0x9366, 0xBC3D, 0x9367, 0xBC3E, 0x9368, 0xBC3F, 0x9369,
+	0xBC40, 0xB9EC, 0xBC41, 0xB9ED, 0xBC42, 0x936A, 0xBC43, 0xB9EE,
+	0xBC44, 0xB9EF, 0xBC45, 0xB9F0, 0xBC46, 0x936B, 0xBC47, 0x936C,
+	0xBC48, 0x936D, 0xBC49, 0xB9F1, 0xBC4A, 0x936E, 0xBC4B, 0x936F,
+	0xBC4C, 0xB9F2, 0xBC4D, 0xB9F3, 0xBC4E, 0x9370, 0xBC4F, 0x9371,
+	0xBC50, 0xB9F4, 0xBC51, 0x9372, 0xBC52, 0x9373, 0xBC53, 0x9374,
+	0xBC54, 0x9375, 0xBC55, 0x9376, 0xBC56, 0x9377, 0xBC57, 0x9378,
+	0xBC58, 0x9379, 0xBC59, 0x937A, 0xBC5A, 0x9381, 0xBC5B, 0x9382,
+	0xBC5C, 0x9383, 0xBC5D, 0xB9F5, 0xBC5E, 0x9384, 0xBC5F, 0x9385,
+	0xBC60, 0x9386, 0xBC61, 0x9387, 0xBC62, 0x9388, 0xBC63, 0x9389,
+	0xBC64, 0x938A, 0xBC65, 0x938B, 0xBC66, 0x938C, 0xBC67, 0x938D,
+	0xBC68, 0x938E, 0xBC69, 0x938F, 0xBC6A, 0x9390, 0xBC6B, 0x9391,
+	0xBC6C, 0x9392, 0xBC6D, 0x9393, 0xBC6E, 0x9394, 0xBC6F, 0x9395,
+	0xBC70, 0x9396, 0xBC71, 0x9397, 0xBC72, 0x9398, 0xBC73, 0x9399,
+	0xBC74, 0x939A, 0xBC75, 0x939B, 0xBC76, 0x939C, 0xBC77, 0x939D,
+	0xBC78, 0x939E, 0xBC79, 0x939F, 0xBC7A, 0x93A0, 0xBC7B, 0x93A1,
+	0xBC7C, 0x93A2, 0xBC7D, 0x93A3, 0xBC7E, 0x93A4, 0xBC7F, 0x93A5,
+	0xBC80, 0x93A6, 0xBC81, 0x93A7, 0xBC82, 0x93A8, 0xBC83, 0x93A9,
+	0xBC84, 0xB9F6, 0xBC85, 0xB9F7, 0xBC86, 0x93AA, 0xBC87, 0x93AB,
+	0xBC88, 0xB9F8, 0xBC89, 0x93AC, 0xBC8A, 0x93AD, 0xBC8B, 0xB9F9,
+	0xBC8C, 0xB9FA, 0xBC8D, 0x93AE, 0xBC8E, 0xB9FB, 0xBC8F, 0x93AF,
+	0xBC90, 0x93B0, 0xBC91, 0x93B1, 0xBC92, 0x93B2, 0xBC93, 0x93B3,
+	0xBC94, 0xB9FC, 0xBC95, 0xB9FD, 0xBC96, 0x93B4, 0xBC97, 0xB9FE,
+	0xBC98, 0x93B5, 0xBC99, 0xBAA1, 0xBC9A, 0xBAA2, 0xBC9B, 0x93B6,
+	0xBC9C, 0x93B7, 0xBC9D, 0x93B8, 0xBC9E, 0x93B9, 0xBC9F, 0x93BA,
+	0xBCA0, 0xBAA3, 0xBCA1, 0xBAA4, 0xBCA2, 0x93BB, 0xBCA3, 0x93BC,
+	0xBCA4, 0xBAA5, 0xBCA5, 0x93BD, 0xBCA6, 0x93BE, 0xBCA7, 0xBAA6,
+	0xBCA8, 0xBAA7, 0xBCA9, 0x93BF, 0xBCAA, 0x93C0, 0xBCAB, 0x93C1,
+	0xBCAC, 0x93C2, 0xBCAD, 0x93C3, 0xBCAE, 0x93C4, 0xBCAF, 0x93C5,
+	0xBCB0, 0xBAA8, 0xBCB1, 0xBAA9, 0xBCB2, 0x93C6, 0xBCB3, 0xBAAA,
+	0xBCB4, 0xBAAB, 0xBCB5, 0xBAAC, 0xBCB6, 0x93C7, 0xBCB7, 0x93C8,
+	0xBCB8, 0x93C9, 0xBCB9, 0x93CA, 0xBCBA, 0x93CB, 0xBCBB, 0x93CC,
+	0xBCBC, 0xBAAD, 0xBCBD, 0xBAAE, 0xBCBE, 0x93CD, 0xBCBF, 0x93CE,
+	0xBCC0, 0xBAAF, 0xBCC1, 0x93CF, 0xBCC2, 0x93D0, 0xBCC3, 0x93D1,
+	0xBCC4, 0xBAB0, 0xBCC5, 0x93D2, 0xBCC6, 0x93D3, 0xBCC7, 0x93D4,
+	0xBCC8, 0x93D5, 0xBCC9, 0x93D6, 0xBCCA, 0x93D7, 0xBCCB, 0x93D8,
+	0xBCCC, 0x93D9, 0xBCCD, 0xBAB1, 0xBCCE, 0x93DA, 0xBCCF, 0xBAB2,
+	0xBCD0, 0xBAB3, 0xBCD1, 0xBAB4, 0xBCD2, 0x93DB, 0xBCD3, 0x93DC,
+	0xBCD4, 0x93DD, 0xBCD5, 0xBAB5, 0xBCD6, 0x93DE, 0xBCD7, 0x93DF,
+	0xBCD8, 0xBAB6, 0xBCD9, 0x93E0, 0xBCDA, 0x93E1, 0xBCDB, 0x93E2,
+	0xBCDC, 0xBAB7, 0xBCDD, 0x93E3, 0xBCDE, 0x93E4, 0xBCDF, 0x93E5,
+	0xBCE0, 0x93E6, 0xBCE1, 0x93E7, 0xBCE2, 0x93E8, 0xBCE3, 0x93E9,
+	0xBCE4, 0x93EA, 0xBCE5, 0x93EB, 0xBCE6, 0x93EC, 0xBCE7, 0x93ED,
+	0xBCE8, 0x93EE, 0xBCE9, 0x93EF, 0xBCEA, 0x93F0, 0xBCEB, 0x93F1,
+	0xBCEC, 0x93F2, 0xBCED, 0x93F3, 0xBCEE, 0x93F4, 0xBCEF, 0x93F5,
+	0xBCF0, 0x93F6, 0xBCF1, 0x93F7, 0xBCF2, 0x93F8, 0xBCF3, 0x93F9,
+	0xBCF4, 0xBAB8, 0xBCF5, 0xBAB9, 0xBCF6, 0xBABA, 0xBCF7, 0x93FA,
+	0xBCF8, 0xBABB, 0xBCF9, 0x93FB, 0xBCFA, 0x93FC, 0xBCFB, 0x93FD,
+	0xBCFC, 0xBABC, 0xBCFD, 0x93FE, 0xBCFE, 0x9441, 0xBCFF, 0x9442,
+	0xBD00, 0x9443, 0xBD01, 0x9444, 0xBD02, 0x9445, 0xBD03, 0x9446,
+	0xBD04, 0xBABD, 0xBD05, 0xBABE, 0xBD06, 0x9447, 0xBD07, 0xBABF,
+	0xBD08, 0x9448, 0xBD09, 0xBAC0, 0xBD0A, 0x9449, 0xBD0B, 0x944A,
+	0xBD0C, 0x944B, 0xBD0D, 0x944C, 0xBD0E, 0x944D, 0xBD0F, 0x944E,
+	0xBD10, 0xBAC1, 0xBD11, 0x944F, 0xBD12, 0x9450, 0xBD13, 0x9451,
+	0xBD14, 0xBAC2, 0xBD15, 0x9452, 0xBD16, 0x9453, 0xBD17, 0x9454,
+	0xBD18, 0x9455, 0xBD19, 0x9456, 0xBD1A, 0x9457, 0xBD1B, 0x9458,
+	0xBD1C, 0x9459, 0xBD1D, 0x945A, 0xBD1E, 0x9461, 0xBD1F, 0x9462,
+	0xBD20, 0x9463, 0xBD21, 0x9464, 0xBD22, 0x9465, 0xBD23, 0x9466,
+	0xBD24, 0xBAC3, 0xBD25, 0x9467, 0xBD26, 0x9468, 0xBD27, 0x9469,
+	0xBD28, 0x946A, 0xBD29, 0x946B, 0xBD2A, 0x946C, 0xBD2B, 0x946D,
+	0xBD2C, 0xBAC4, 0xBD2D, 0x946E, 0xBD2E, 0x946F, 0xBD2F, 0x9470,
+	0xBD30, 0x9471, 0xBD31, 0x9472, 0xBD32, 0x9473, 0xBD33, 0x9474,
+	0xBD34, 0x9475, 0xBD35, 0x9476, 0xBD36, 0x9477, 0xBD37, 0x9478,
+	0xBD38, 0x9479, 0xBD39, 0x947A, 0xBD3A, 0x9481, 0xBD3B, 0x9482,
+	0xBD3C, 0x9483, 0xBD3D, 0x9484, 0xBD3E, 0x9485, 0xBD3F, 0x9486,
+	0xBD40, 0xBAC5, 0xBD41, 0x9487, 0xBD42, 0x9488, 0xBD43, 0x9489,
+	0xBD44, 0x948A, 0xBD45, 0x948B, 0xBD46, 0x948C, 0xBD47, 0x948D,
+	0xBD48, 0xBAC6, 0xBD49, 0xBAC7, 0xBD4A, 0x948E, 0xBD4B, 0x948F,
+	0xBD4C, 0xBAC8, 0xBD4D, 0x9490, 0xBD4E, 0x9491, 0xBD4F, 0x9492,
+	0xBD50, 0xBAC9, 0xBD51, 0x9493, 0xBD52, 0x9494, 0xBD53, 0x9495,
+	0xBD54, 0x9496, 0xBD55, 0x9497, 0xBD56, 0x9498, 0xBD57, 0x9499,
+	0xBD58, 0xBACA, 0xBD59, 0xBACB, 0xBD5A, 0x949A, 0xBD5B, 0x949B,
+	0xBD5C, 0x949C, 0xBD5D, 0x949D, 0xBD5E, 0x949E, 0xBD5F, 0x949F,
+	0xBD60, 0x94A0, 0xBD61, 0x94A1, 0xBD62, 0x94A2, 0xBD63, 0x94A3,
+	0xBD64, 0xBACC, 0xBD65, 0x94A4, 0xBD66, 0x94A5, 0xBD67, 0x94A6,
+	0xBD68, 0xBACD, 0xBD69, 0x94A7, 0xBD6A, 0x94A8, 0xBD6B, 0x94A9,
+	0xBD6C, 0x94AA, 0xBD6D, 0x94AB, 0xBD6E, 0x94AC, 0xBD6F, 0x94AD,
+	0xBD70, 0x94AE, 0xBD71, 0x94AF, 0xBD72, 0x94B0, 0xBD73, 0x94B1,
+	0xBD74, 0x94B2, 0xBD75, 0x94B3, 0xBD76, 0x94B4, 0xBD77, 0x94B5,
+	0xBD78, 0x94B6, 0xBD79, 0x94B7, 0xBD7A, 0x94B8, 0xBD7B, 0x94B9,
+	0xBD7C, 0x94BA, 0xBD7D, 0x94BB, 0xBD7E, 0x94BC, 0xBD7F, 0x94BD,
+	0xBD80, 0xBACE, 0xBD81, 0xBACF, 0xBD82, 0x94BE, 0xBD83, 0x94BF,
+	0xBD84, 0xBAD0, 0xBD85, 0x94C0, 0xBD86, 0x94C1, 0xBD87, 0xBAD1,
+	0xBD88, 0xBAD2, 0xBD89, 0xBAD3, 0xBD8A, 0xBAD4, 0xBD8B, 0x94C2,
+	0xBD8C, 0x94C3, 0xBD8D, 0x94C4, 0xBD8E, 0x94C5, 0xBD8F, 0x94C6,
+	0xBD90, 0xBAD5, 0xBD91, 0xBAD6, 0xBD92, 0x94C7, 0xBD93, 0xBAD7,
+	0xBD94, 0x94C8, 0xBD95, 0xBAD8, 0xBD96, 0x94C9, 0xBD97, 0x94CA,
+	0xBD98, 0x94CB, 0xBD99, 0xBAD9, 0xBD9A, 0xBADA, 0xBD9B, 0x94CC,
+	0xBD9C, 0xBADB, 0xBD9D, 0x94CD, 0xBD9E, 0x94CE, 0xBD9F, 0x94CF,
+	0xBDA0, 0x94D0, 0xBDA1, 0x94D1, 0xBDA2, 0x94D2, 0xBDA3, 0x94D3,
+	0xBDA4, 0xBADC, 0xBDA5, 0x94D4, 0xBDA6, 0x94D5, 0xBDA7, 0x94D6,
+	0xBDA8, 0x94D7, 0xBDA9, 0x94D8, 0xBDAA, 0x94D9, 0xBDAB, 0x94DA,
+	0xBDAC, 0x94DB, 0xBDAD, 0x94DC, 0xBDAE, 0x94DD, 0xBDAF, 0x94DE,
+	0xBDB0, 0xBADD, 0xBDB1, 0x94DF, 0xBDB2, 0x94E0, 0xBDB3, 0x94E1,
+	0xBDB4, 0x94E2, 0xBDB5, 0x94E3, 0xBDB6, 0x94E4, 0xBDB7, 0x94E5,
+	0xBDB8, 0xBADE, 0xBDB9, 0x94E6, 0xBDBA, 0x94E7, 0xBDBB, 0x94E8,
+	0xBDBC, 0x94E9, 0xBDBD, 0x94EA, 0xBDBE, 0x94EB, 0xBDBF, 0x94EC,
+	0xBDC0, 0x94ED, 0xBDC1, 0x94EE, 0xBDC2, 0x94EF, 0xBDC3, 0x94F0,
+	0xBDC4, 0x94F1, 0xBDC5, 0x94F2, 0xBDC6, 0x94F3, 0xBDC7, 0x94F4,
+	0xBDC8, 0x94F5, 0xBDC9, 0x94F6, 0xBDCA, 0x94F7, 0xBDCB, 0x94F8,
+	0xBDCC, 0x94F9, 0xBDCD, 0x94FA, 0xBDCE, 0x94FB, 0xBDCF, 0x94FC,
+	0xBDD0, 0x94FD, 0xBDD1, 0x94FE, 0xBDD2, 0x9541, 0xBDD3, 0x9542,
+	0xBDD4, 0xBADF, 0xBDD5, 0xBAE0, 0xBDD6, 0x9543, 0xBDD7, 0x9544,
+	0xBDD8, 0xBAE1, 0xBDD9, 0x9545, 0xBDDA, 0x9546, 0xBDDB, 0x9547,
+	0xBDDC, 0xBAE2, 0xBDDD, 0x9548, 0xBDDE, 0x9549, 0xBDDF, 0x954A,
+	0xBDE0, 0x954B, 0xBDE1, 0x954C, 0xBDE2, 0x954D, 0xBDE3, 0x954E,
+	0xBDE4, 0x954F, 0xBDE5, 0x9550, 0xBDE6, 0x9551, 0xBDE7, 0x9552,
+	0xBDE8, 0x9553, 0xBDE9, 0xBAE3, 0xBDEA, 0x9554, 0xBDEB, 0x9555,
+	0xBDEC, 0x9556, 0xBDED, 0x9557, 0xBDEE, 0x9558, 0xBDEF, 0x9559,
+	0xBDF0, 0xBAE4, 0xBDF1, 0x955A, 0xBDF2, 0x9561, 0xBDF3, 0x9562,
+	0xBDF4, 0xBAE5, 0xBDF5, 0x9563, 0xBDF6, 0x9564, 0xBDF7, 0x9565,
+	0xBDF8, 0xBAE6, 0xBDF9, 0x9566, 0xBDFA, 0x9567, 0xBDFB, 0x9568,
+	0xBDFC, 0x9569, 0xBDFD, 0x956A, 0xBDFE, 0x956B, 0xBDFF, 0x956C,
+	0xBE00, 0xBAE7, 0xBE01, 0x956D, 0xBE02, 0x956E, 0xBE03, 0xBAE8,
+	0xBE04, 0x956F, 0xBE05, 0xBAE9, 0xBE06, 0x9570, 0xBE07, 0x9571,
+	0xBE08, 0x9572, 0xBE09, 0x9573, 0xBE0A, 0x9574, 0xBE0B, 0x9575,
+	0xBE0C, 0xBAEA, 0xBE0D, 0xBAEB, 0xBE0E, 0x9576, 0xBE0F, 0x9577,
+	0xBE10, 0xBAEC, 0xBE11, 0x9578, 0xBE12, 0x9579, 0xBE13, 0x957A,
+	0xBE14, 0xBAED, 0xBE15, 0x9581, 0xBE16, 0x9582, 0xBE17, 0x9583,
+	0xBE18, 0x9584, 0xBE19, 0x9585, 0xBE1A, 0x9586, 0xBE1B, 0x9587,
+	0xBE1C, 0xBAEE, 0xBE1D, 0xBAEF, 0xBE1E, 0x9588, 0xBE1F, 0xBAF0,
+	0xBE20, 0x9589, 0xBE21, 0x958A, 0xBE22, 0x958B, 0xBE23, 0x958C,
+	0xBE24, 0x958D, 0xBE25, 0x958E, 0xBE26, 0x958F, 0xBE27, 0x9590,
+	0xBE28, 0x9591, 0xBE29, 0x9592, 0xBE2A, 0x9593, 0xBE2B, 0x9594,
+	0xBE2C, 0x9595, 0xBE2D, 0x9596, 0xBE2E, 0x9597, 0xBE2F, 0x9598,
+	0xBE30, 0x9599, 0xBE31, 0x959A, 0xBE32, 0x959B, 0xBE33, 0x959C,
+	0xBE34, 0x959D, 0xBE35, 0x959E, 0xBE36, 0x959F, 0xBE37, 0x95A0,
+	0xBE38, 0x95A1, 0xBE39, 0x95A2, 0xBE3A, 0x95A3, 0xBE3B, 0x95A4,
+	0xBE3C, 0x95A5, 0xBE3D, 0x95A6, 0xBE3E, 0x95A7, 0xBE3F, 0x95A8,
+	0xBE40, 0x95A9, 0xBE41, 0x95AA, 0xBE42, 0x95AB, 0xBE43, 0x95AC,
+	0xBE44, 0xBAF1, 0xBE45, 0xBAF2, 0xBE46, 0x95AD, 0xBE47, 0x95AE,
+	0xBE48, 0xBAF3, 0xBE49, 0x95AF, 0xBE4A, 0x95B0, 0xBE4B, 0x95B1,
+	0xBE4C, 0xBAF4, 0xBE4D, 0x95B2, 0xBE4E, 0xBAF5, 0xBE4F, 0x95B3,
+	0xBE50, 0x95B4, 0xBE51, 0x95B5, 0xBE52, 0x95B6, 0xBE53, 0x95B7,
+	0xBE54, 0xBAF6, 0xBE55, 0xBAF7, 0xBE56, 0x95B8, 0xBE57, 0xBAF8,
+	0xBE58, 0x95B9, 0xBE59, 0xBAF9, 0xBE5A, 0xBAFA, 0xBE5B, 0xBAFB,
+	0xBE5C, 0x95BA, 0xBE5D, 0x95BB, 0xBE5E, 0x95BC, 0xBE5F, 0x95BD,
+	0xBE60, 0xBAFC, 0xBE61, 0xBAFD, 0xBE62, 0x95BE, 0xBE63, 0x95BF,
+	0xBE64, 0xBAFE, 0xBE65, 0x95C0, 0xBE66, 0x95C1, 0xBE67, 0x95C2,
+	0xBE68, 0xBBA1, 0xBE69, 0x95C3, 0xBE6A, 0xBBA2, 0xBE6B, 0x95C4,
+	0xBE6C, 0x95C5, 0xBE6D, 0x95C6, 0xBE6E, 0x95C7, 0xBE6F, 0x95C8,
+	0xBE70, 0xBBA3, 0xBE71, 0xBBA4, 0xBE72, 0x95C9, 0xBE73, 0xBBA5,
+	0xBE74, 0xBBA6, 0xBE75, 0xBBA7, 0xBE76, 0x95CA, 0xBE77, 0x95CB,
+	0xBE78, 0x95CC, 0xBE79, 0x95CD, 0xBE7A, 0x95CE, 0xBE7B, 0xBBA8,
+	0xBE7C, 0xBBA9, 0xBE7D, 0xBBAA, 0xBE7E, 0x95CF, 0xBE7F, 0x95D0,
+	0xBE80, 0xBBAB, 0xBE81, 0x95D1, 0xBE82, 0x95D2, 0xBE83, 0x95D3,
+	0xBE84, 0xBBAC, 0xBE85, 0x95D4, 0xBE86, 0x95D5, 0xBE87, 0x95D6,
+	0xBE88, 0x95D7, 0xBE89, 0x95D8, 0xBE8A, 0x95D9, 0xBE8B, 0x95DA,
+	0xBE8C, 0xBBAD, 0xBE8D, 0xBBAE, 0xBE8E, 0x95DB, 0xBE8F, 0xBBAF,
+	0xBE90, 0xBBB0, 0xBE91, 0xBBB1, 0xBE92, 0x95DC, 0xBE93, 0x95DD,
+	0xBE94, 0x95DE, 0xBE95, 0x95DF, 0xBE96, 0x95E0, 0xBE97, 0x95E1,
+	0xBE98, 0xBBB2, 0xBE99, 0xBBB3, 0xBE9A, 0x95E2, 0xBE9B, 0x95E3,
+	0xBE9C, 0x95E4, 0xBE9D, 0x95E5, 0xBE9E, 0x95E6, 0xBE9F, 0x95E7,
+	0xBEA0, 0x95E8, 0xBEA1, 0x95E9, 0xBEA2, 0x95EA, 0xBEA3, 0x95EB,
+	0xBEA4, 0x95EC, 0xBEA5, 0x95ED, 0xBEA6, 0x95EE, 0xBEA7, 0x95EF,
+	0xBEA8, 0xBBB4, 0xBEA9, 0x95F0, 0xBEAA, 0x95F1, 0xBEAB, 0x95F2,
+	0xBEAC, 0x95F3, 0xBEAD, 0x95F4, 0xBEAE, 0x95F5, 0xBEAF, 0x95F6,
+	0xBEB0, 0x95F7, 0xBEB1, 0x95F8, 0xBEB2, 0x95F9, 0xBEB3, 0x95FA,
+	0xBEB4, 0x95FB, 0xBEB5, 0x95FC, 0xBEB6, 0x95FD, 0xBEB7, 0x95FE,
+	0xBEB8, 0x9641, 0xBEB9, 0x9642, 0xBEBA, 0x9643, 0xBEBB, 0x9644,
+	0xBEBC, 0x9645, 0xBEBD, 0x9646, 0xBEBE, 0x9647, 0xBEBF, 0x9648,
+	0xBEC0, 0x9649, 0xBEC1, 0x964A, 0xBEC2, 0x964B, 0xBEC3, 0x964C,
+	0xBEC4, 0x964D, 0xBEC5, 0x964E, 0xBEC6, 0x964F, 0xBEC7, 0x9650,
+	0xBEC8, 0x9651, 0xBEC9, 0x9652, 0xBECA, 0x9653, 0xBECB, 0x9654,
+	0xBECC, 0x9655, 0xBECD, 0x9656, 0xBECE, 0x9657, 0xBECF, 0x9658,
+	0xBED0, 0xBBB5, 0xBED1, 0xBBB6, 0xBED2, 0x9659, 0xBED3, 0x965A,
+	0xBED4, 0xBBB7, 0xBED5, 0x9661, 0xBED6, 0x9662, 0xBED7, 0xBBB8,
+	0xBED8, 0xBBB9, 0xBED9, 0x9663, 0xBEDA, 0x9664, 0xBEDB, 0x9665,
+	0xBEDC, 0x9666, 0xBEDD, 0x9667, 0xBEDE, 0x9668, 0xBEDF, 0x9669,
+	0xBEE0, 0xBBBA, 0xBEE1, 0x966A, 0xBEE2, 0x966B, 0xBEE3, 0xBBBB,
+	0xBEE4, 0xBBBC, 0xBEE5, 0xBBBD, 0xBEE6, 0x966C, 0xBEE7, 0x966D,
+	0xBEE8, 0x966E, 0xBEE9, 0x966F, 0xBEEA, 0x9670, 0xBEEB, 0x9671,
+	0xBEEC, 0xBBBE, 0xBEED, 0x9672, 0xBEEE, 0x9673, 0xBEEF, 0x9674,
+	0xBEF0, 0x9675, 0xBEF1, 0x9676, 0xBEF2, 0x9677, 0xBEF3, 0x9678,
+	0xBEF4, 0x9679, 0xBEF5, 0x967A, 0xBEF6, 0x9681, 0xBEF7, 0x9682,
+	0xBEF8, 0x9683, 0xBEF9, 0x9684, 0xBEFA, 0x9685, 0xBEFB, 0x9686,
+	0xBEFC, 0x9687, 0xBEFD, 0x9688, 0xBEFE, 0x9689, 0xBEFF, 0x968A,
+	0xBF00, 0x968B, 0xBF01, 0xBBBF, 0xBF02, 0x968C, 0xBF03, 0x968D,
+	0xBF04, 0x968E, 0xBF05, 0x968F, 0xBF06, 0x9690, 0xBF07, 0x9691,
+	0xBF08, 0xBBC0, 0xBF09, 0xBBC1, 0xBF0A, 0x9692, 0xBF0B, 0x9693,
+	0xBF0C, 0x9694, 0xBF0D, 0x9695, 0xBF0E, 0x9696, 0xBF0F, 0x9697,
+	0xBF10, 0x9698, 0xBF11, 0x9699, 0xBF12, 0x969A, 0xBF13, 0x969B,
+	0xBF14, 0x969C, 0xBF15, 0x969D, 0xBF16, 0x969E, 0xBF17, 0x969F,
+	0xBF18, 0xBBC2, 0xBF19, 0xBBC3, 0xBF1A, 0x96A0, 0xBF1B, 0xBBC4,
+	0xBF1C, 0xBBC5, 0xBF1D, 0xBBC6, 0xBF1E, 0x96A1, 0xBF1F, 0x96A2,
+	0xBF20, 0x96A3, 0xBF21, 0x96A4, 0xBF22, 0x96A5, 0xBF23, 0x96A6,
+	0xBF24, 0x96A7, 0xBF25, 0x96A8, 0xBF26, 0x96A9, 0xBF27, 0x96AA,
+	0xBF28, 0x96AB, 0xBF29, 0x96AC, 0xBF2A, 0x96AD, 0xBF2B, 0x96AE,
+	0xBF2C, 0x96AF, 0xBF2D, 0x96B0, 0xBF2E, 0x96B1, 0xBF2F, 0x96B2,
+	0xBF30, 0x96B3, 0xBF31, 0x96B4, 0xBF32, 0x96B5, 0xBF33, 0x96B6,
+	0xBF34, 0x96B7, 0xBF35, 0x96B8, 0xBF36, 0x96B9, 0xBF37, 0x96BA,
+	0xBF38, 0x96BB, 0xBF39, 0x96BC, 0xBF3A, 0x96BD, 0xBF3B, 0x96BE,
+	0xBF3C, 0x96BF, 0xBF3D, 0x96C0, 0xBF3E, 0x96C1, 0xBF3F, 0x96C2,
+	0xBF40, 0xBBC7, 0xBF41, 0xBBC8, 0xBF42, 0x96C3, 0xBF43, 0x96C4,
+	0xBF44, 0xBBC9, 0xBF45, 0x96C5, 0xBF46, 0x96C6, 0xBF47, 0x96C7,
+	0xBF48, 0xBBCA, 0xBF49, 0x96C8, 0xBF4A, 0x96C9, 0xBF4B, 0x96CA,
+	0xBF4C, 0x96CB, 0xBF4D, 0x96CC, 0xBF4E, 0x96CD, 0xBF4F, 0x96CE,
+	0xBF50, 0xBBCB, 0xBF51, 0xBBCC, 0xBF52, 0x96CF, 0xBF53, 0x96D0,
+	0xBF54, 0x96D1, 0xBF55, 0xBBCD, 0xBF56, 0x96D2, 0xBF57, 0x96D3,
+	0xBF58, 0x96D4, 0xBF59, 0x96D5, 0xBF5A, 0x96D6, 0xBF5B, 0x96D7,
+	0xBF5C, 0x96D8, 0xBF5D, 0x96D9, 0xBF5E, 0x96DA, 0xBF5F, 0x96DB,
+	0xBF60, 0x96DC, 0xBF61, 0x96DD, 0xBF62, 0x96DE, 0xBF63, 0x96DF,
+	0xBF64, 0x96E0, 0xBF65, 0x96E1, 0xBF66, 0x96E2, 0xBF67, 0x96E3,
+	0xBF68, 0x96E4, 0xBF69, 0x96E5, 0xBF6A, 0x96E6, 0xBF6B, 0x96E7,
+	0xBF6C, 0x96E8, 0xBF6D, 0x96E9, 0xBF6E, 0x96EA, 0xBF6F, 0x96EB,
+	0xBF70, 0x96EC, 0xBF71, 0x96ED, 0xBF72, 0x96EE, 0xBF73, 0x96EF,
+	0xBF74, 0x96F0, 0xBF75, 0x96F1, 0xBF76, 0x96F2, 0xBF77, 0x96F3,
+	0xBF78, 0x96F4, 0xBF79, 0x96F5, 0xBF7A, 0x96F6, 0xBF7B, 0x96F7,
+	0xBF7C, 0x96F8, 0xBF7D, 0x96F9, 0xBF7E, 0x96FA, 0xBF7F, 0x96FB,
+	0xBF80, 0x96FC, 0xBF81, 0x96FD, 0xBF82, 0x96FE, 0xBF83, 0x9741,
+	0xBF84, 0x9742, 0xBF85, 0x9743, 0xBF86, 0x9744, 0xBF87, 0x9745,
+	0xBF88, 0x9746, 0xBF89, 0x9747, 0xBF8A, 0x9748, 0xBF8B, 0x9749,
+	0xBF8C, 0x974A, 0xBF8D, 0x974B, 0xBF8E, 0x974C, 0xBF8F, 0x974D,
+	0xBF90, 0x974E, 0xBF91, 0x974F, 0xBF92, 0x9750, 0xBF93, 0x9751,
+	0xBF94, 0xBBCE, 0xBF95, 0x9752, 0xBF96, 0x9753, 0xBF97, 0x9754,
+	0xBF98, 0x9755, 0xBF99, 0x9756, 0xBF9A, 0x9757, 0xBF9B, 0x9758,
+	0xBF9C, 0x9759, 0xBF9D, 0x975A, 0xBF9E, 0x9761, 0xBF9F, 0x9762,
+	0xBFA0, 0x9763, 0xBFA1, 0x9764, 0xBFA2, 0x9765, 0xBFA3, 0x9766,
+	0xBFA4, 0x9767, 0xBFA5, 0x9768, 0xBFA6, 0x9769, 0xBFA7, 0x976A,
+	0xBFA8, 0x976B, 0xBFA9, 0x976C, 0xBFAA, 0x976D, 0xBFAB, 0x976E,
+	0xBFAC, 0x976F, 0xBFAD, 0x9770, 0xBFAE, 0x9771, 0xBFAF, 0x9772,
+	0xBFB0, 0xBBCF, 0xBFB1, 0x9773, 0xBFB2, 0x9774, 0xBFB3, 0x9775,
+	0xBFB4, 0x9776, 0xBFB5, 0x9777, 0xBFB6, 0x9778, 0xBFB7, 0x9779,
+	0xBFB8, 0x977A, 0xBFB9, 0x9781, 0xBFBA, 0x9782, 0xBFBB, 0x9783,
+	0xBFBC, 0x9784, 0xBFBD, 0x9785, 0xBFBE, 0x9786, 0xBFBF, 0x9787,
+	0xBFC0, 0x9788, 0xBFC1, 0x9789, 0xBFC2, 0x978A, 0xBFC3, 0x978B,
+	0xBFC4, 0x978C, 0xBFC5, 0xBBD0, 0xBFC6, 0x978D, 0xBFC7, 0x978E,
+	0xBFC8, 0x978F, 0xBFC9, 0x9790, 0xBFCA, 0x9791, 0xBFCB, 0x9792,
+	0xBFCC, 0xBBD1, 0xBFCD, 0xBBD2, 0xBFCE, 0x9793, 0xBFCF, 0x9794,
+	0xBFD0, 0xBBD3, 0xBFD1, 0x9795, 0xBFD2, 0x9796, 0xBFD3, 0x9797,
+	0xBFD4, 0xBBD4, 0xBFD5, 0x9798, 0xBFD6, 0x9799, 0xBFD7, 0x979A,
+	0xBFD8, 0x979B, 0xBFD9, 0x979C, 0xBFDA, 0x979D, 0xBFDB, 0x979E,
+	0xBFDC, 0xBBD5, 0xBFDD, 0x979F, 0xBFDE, 0x97A0, 0xBFDF, 0xBBD6,
+	0xBFE0, 0x97A1, 0xBFE1, 0xBBD7, 0xBFE2, 0x97A2, 0xBFE3, 0x97A3,
+	0xBFE4, 0x97A4, 0xBFE5, 0x97A5, 0xBFE6, 0x97A6, 0xBFE7, 0x97A7,
+	0xBFE8, 0x97A8, 0xBFE9, 0x97A9, 0xBFEA, 0x97AA, 0xBFEB, 0x97AB,
+	0xBFEC, 0x97AC, 0xBFED, 0x97AD, 0xBFEE, 0x97AE, 0xBFEF, 0x97AF,
+	0xBFF0, 0x97B0, 0xBFF1, 0x97B1, 0xBFF2, 0x97B2, 0xBFF3, 0x97B3,
+	0xBFF4, 0x97B4, 0xBFF5, 0x97B5, 0xBFF6, 0x97B6, 0xBFF7, 0x97B7,
+	0xBFF8, 0x97B8, 0xBFF9, 0x97B9, 0xBFFA, 0x97BA, 0xBFFB, 0x97BB,
+	0xBFFC, 0x97BC, 0xBFFD, 0x97BD, 0xBFFE, 0x97BE, 0xBFFF, 0x97BF,
+	0xC000, 0x97C0, 0xC001, 0x97C1, 0xC002, 0x97C2, 0xC003, 0x97C3,
+	0xC004, 0x97C4, 0xC005, 0x97C5, 0xC006, 0x97C6, 0xC007, 0x97C7,
+	0xC008, 0x97C8, 0xC009, 0x97C9, 0xC00A, 0x97CA, 0xC00B, 0x97CB,
+	0xC00C, 0x97CC, 0xC00D, 0x97CD, 0xC00E, 0x97CE, 0xC00F, 0x97CF,
+	0xC010, 0x97D0, 0xC011, 0x97D1, 0xC012, 0x97D2, 0xC013, 0x97D3,
+	0xC014, 0x97D4, 0xC015, 0x97D5, 0xC016, 0x97D6, 0xC017, 0x97D7,
+	0xC018, 0x97D8, 0xC019, 0x97D9, 0xC01A, 0x97DA, 0xC01B, 0x97DB,
+	0xC01C, 0x97DC, 0xC01D, 0x97DD, 0xC01E, 0x97DE, 0xC01F, 0x97DF,
+	0xC020, 0x97E0, 0xC021, 0x97E1, 0xC022, 0x97E2, 0xC023, 0x97E3,
+	0xC024, 0x97E4, 0xC025, 0x97E5, 0xC026, 0x97E6, 0xC027, 0x97E7,
+	0xC028, 0x97E8, 0xC029, 0x97E9, 0xC02A, 0x97EA, 0xC02B, 0x97EB,
+	0xC02C, 0x97EC, 0xC02D, 0x97ED, 0xC02E, 0x97EE, 0xC02F, 0x97EF,
+	0xC030, 0x97F0, 0xC031, 0x97F1, 0xC032, 0x97F2, 0xC033, 0x97F3,
+	0xC034, 0x97F4, 0xC035, 0x97F5, 0xC036, 0x97F6, 0xC037, 0x97F7,
+	0xC038, 0x97F8, 0xC039, 0x97F9, 0xC03A, 0x97FA, 0xC03B, 0x97FB,
+	0xC03C, 0xBBD8, 0xC03D, 0x97FC, 0xC03E, 0x97FD, 0xC03F, 0x97FE,
+	0xC040, 0x9841, 0xC041, 0x9842, 0xC042, 0x9843, 0xC043, 0x9844,
+	0xC044, 0x9845, 0xC045, 0x9846, 0xC046, 0x9847, 0xC047, 0x9848,
+	0xC048, 0x9849, 0xC049, 0x984A, 0xC04A, 0x984B, 0xC04B, 0x984C,
+	0xC04C, 0x984D, 0xC04D, 0x984E, 0xC04E, 0x984F, 0xC04F, 0x9850,
+	0xC050, 0x9851, 0xC051, 0xBBD9, 0xC052, 0x9852, 0xC053, 0x9853,
+	0xC054, 0x9854, 0xC055, 0x9855, 0xC056, 0x9856, 0xC057, 0x9857,
+	0xC058, 0xBBDA, 0xC059, 0x9858, 0xC05A, 0x9859, 0xC05B, 0x985A,
+	0xC05C, 0xBBDB, 0xC05D, 0x9861, 0xC05E, 0x9862, 0xC05F, 0x9863,
+	0xC060, 0xBBDC, 0xC061, 0x9864, 0xC062, 0x9865, 0xC063, 0x9866,
+	0xC064, 0x9867, 0xC065, 0x9868, 0xC066, 0x9869, 0xC067, 0x986A,
+	0xC068, 0xBBDD, 0xC069, 0xBBDE, 0xC06A, 0x986B, 0xC06B, 0x986C,
+	0xC06C, 0x986D, 0xC06D, 0x986E, 0xC06E, 0x986F, 0xC06F, 0x9870,
+	0xC070, 0x9871, 0xC071, 0x9872, 0xC072, 0x9873, 0xC073, 0x9874,
+	0xC074, 0x9875, 0xC075, 0x9876, 0xC076, 0x9877, 0xC077, 0x9878,
+	0xC078, 0x9879, 0xC079, 0x987A, 0xC07A, 0x9881, 0xC07B, 0x9882,
+	0xC07C, 0x9883, 0xC07D, 0x9884, 0xC07E, 0x9885, 0xC07F, 0x9886,
+	0xC080, 0x9887, 0xC081, 0x9888, 0xC082, 0x9889, 0xC083, 0x988A,
+	0xC084, 0x988B, 0xC085, 0x988C, 0xC086, 0x988D, 0xC087, 0x988E,
+	0xC088, 0x988F, 0xC089, 0x9890, 0xC08A, 0x9891, 0xC08B, 0x9892,
+	0xC08C, 0x9893, 0xC08D, 0x9894, 0xC08E, 0x9895, 0xC08F, 0x9896,
+	0xC090, 0xBBDF, 0xC091, 0xBBE0, 0xC092, 0x9897, 0xC093, 0x9898,
+	0xC094, 0xBBE1, 0xC095, 0x9899, 0xC096, 0x989A, 0xC097, 0x989B,
+	0xC098, 0xBBE2, 0xC099, 0x989C, 0xC09A, 0x989D, 0xC09B, 0x989E,
+	0xC09C, 0x989F, 0xC09D, 0x98A0, 0xC09E, 0x98A1, 0xC09F, 0x98A2,
+	0xC0A0, 0xBBE3, 0xC0A1, 0xBBE4, 0xC0A2, 0x98A3, 0xC0A3, 0xBBE5,
+	0xC0A4, 0x98A4, 0xC0A5, 0xBBE6, 0xC0A6, 0x98A5, 0xC0A7, 0x98A6,
+	0xC0A8, 0x98A7, 0xC0A9, 0x98A8, 0xC0AA, 0x98A9, 0xC0AB, 0x98AA,
+	0xC0AC, 0xBBE7, 0xC0AD, 0xBBE8, 0xC0AE, 0x98AB, 0xC0AF, 0xBBE9,
+	0xC0B0, 0xBBEA, 0xC0B1, 0x98AC, 0xC0B2, 0x98AD, 0xC0B3, 0xBBEB,
+	0xC0B4, 0xBBEC, 0xC0B5, 0xBBED, 0xC0B6, 0xBBEE, 0xC0B7, 0x98AE,
+	0xC0B8, 0x98AF, 0xC0B9, 0x98B0, 0xC0BA, 0x98B1, 0xC0BB, 0x98B2,
+	0xC0BC, 0xBBEF, 0xC0BD, 0xBBF0, 0xC0BE, 0x98B3, 0xC0BF, 0xBBF1,
+	0xC0C0, 0xBBF2, 0xC0C1, 0xBBF3, 0xC0C2, 0x98B4, 0xC0C3, 0x98B5,
+	0xC0C4, 0x98B6, 0xC0C5, 0xBBF4, 0xC0C6, 0x98B7, 0xC0C7, 0x98B8,
+	0xC0C8, 0xBBF5, 0xC0C9, 0xBBF6, 0xC0CA, 0x98B9, 0xC0CB, 0x98BA,
+	0xC0CC, 0xBBF7, 0xC0CD, 0x98BB, 0xC0CE, 0x98BC, 0xC0CF, 0x98BD,
+	0xC0D0, 0xBBF8, 0xC0D1, 0x98BE, 0xC0D2, 0x98BF, 0xC0D3, 0x98C0,
+	0xC0D4, 0x98C1, 0xC0D5, 0x98C2, 0xC0D6, 0x98C3, 0xC0D7, 0x98C4,
+	0xC0D8, 0xBBF9, 0xC0D9, 0xBBFA, 0xC0DA, 0x98C5, 0xC0DB, 0xBBFB,
+	0xC0DC, 0xBBFC, 0xC0DD, 0xBBFD, 0xC0DE, 0x98C6, 0xC0DF, 0x98C7,
+	0xC0E0, 0x98C8, 0xC0E1, 0x98C9, 0xC0E2, 0x98CA, 0xC0E3, 0x98CB,
+	0xC0E4, 0xBBFE, 0xC0E5, 0xBCA1, 0xC0E6, 0x98CC, 0xC0E7, 0x98CD,
+	0xC0E8, 0xBCA2, 0xC0E9, 0x98CE, 0xC0EA, 0x98CF, 0xC0EB, 0x98D0,
+	0xC0EC, 0xBCA3, 0xC0ED, 0x98D1, 0xC0EE, 0x98D2, 0xC0EF, 0x98D3,
+	0xC0F0, 0x98D4, 0xC0F1, 0x98D5, 0xC0F2, 0x98D6, 0xC0F3, 0x98D7,
+	0xC0F4, 0xBCA4, 0xC0F5, 0xBCA5, 0xC0F6, 0x98D8, 0xC0F7, 0xBCA6,
+	0xC0F8, 0x98D9, 0xC0F9, 0xBCA7, 0xC0FA, 0x98DA, 0xC0FB, 0x98DB,
+	0xC0FC, 0x98DC, 0xC0FD, 0x98DD, 0xC0FE, 0x98DE, 0xC0FF, 0x98DF,
+	0xC100, 0xBCA8, 0xC101, 0x98E0, 0xC102, 0x98E1, 0xC103, 0x98E2,
+	0xC104, 0xBCA9, 0xC105, 0x98E3, 0xC106, 0x98E4, 0xC107, 0x98E5,
+	0xC108, 0xBCAA, 0xC109, 0x98E6, 0xC10A, 0x98E7, 0xC10B, 0x98E8,
+	0xC10C, 0x98E9, 0xC10D, 0x98EA, 0xC10E, 0x98EB, 0xC10F, 0x98EC,
+	0xC110, 0xBCAB, 0xC111, 0x98ED, 0xC112, 0x98EE, 0xC113, 0x98EF,
+	0xC114, 0x98F0, 0xC115, 0xBCAC, 0xC116, 0x98F1, 0xC117, 0x98F2,
+	0xC118, 0x98F3, 0xC119, 0x98F4, 0xC11A, 0x98F5, 0xC11B, 0x98F6,
+	0xC11C, 0xBCAD, 0xC11D, 0xBCAE, 0xC11E, 0xBCAF, 0xC11F, 0xBCB0,
+	0xC120, 0xBCB1, 0xC121, 0x98F7, 0xC122, 0x98F8, 0xC123, 0xBCB2,
+	0xC124, 0xBCB3, 0xC125, 0x98F9, 0xC126, 0xBCB4, 0xC127, 0xBCB5,
+	0xC128, 0x98FA, 0xC129, 0x98FB, 0xC12A, 0x98FC, 0xC12B, 0x98FD,
+	0xC12C, 0xBCB6, 0xC12D, 0xBCB7, 0xC12E, 0x98FE, 0xC12F, 0xBCB8,
+	0xC130, 0xBCB9, 0xC131, 0xBCBA, 0xC132, 0x9941, 0xC133, 0x9942,
+	0xC134, 0x9943, 0xC135, 0x9944, 0xC136, 0xBCBB, 0xC137, 0x9945,
+	0xC138, 0xBCBC, 0xC139, 0xBCBD, 0xC13A, 0x9946, 0xC13B, 0x9947,
+	0xC13C, 0xBCBE, 0xC13D, 0x9948, 0xC13E, 0x9949, 0xC13F, 0x994A,
+	0xC140, 0xBCBF, 0xC141, 0x994B, 0xC142, 0x994C, 0xC143, 0x994D,
+	0xC144, 0x994E, 0xC145, 0x994F, 0xC146, 0x9950, 0xC147, 0x9951,
+	0xC148, 0xBCC0, 0xC149, 0xBCC1, 0xC14A, 0x9952, 0xC14B, 0xBCC2,
+	0xC14C, 0xBCC3, 0xC14D, 0xBCC4, 0xC14E, 0x9953, 0xC14F, 0x9954,
+	0xC150, 0x9955, 0xC151, 0x9956, 0xC152, 0x9957, 0xC153, 0x9958,
+	0xC154, 0xBCC5, 0xC155, 0xBCC6, 0xC156, 0x9959, 0xC157, 0x995A,
+	0xC158, 0xBCC7, 0xC159, 0x9961, 0xC15A, 0x9962, 0xC15B, 0x9963,
+	0xC15C, 0xBCC8, 0xC15D, 0x9964, 0xC15E, 0x9965, 0xC15F, 0x9966,
+	0xC160, 0x9967, 0xC161, 0x9968, 0xC162, 0x9969, 0xC163, 0x996A,
+	0xC164, 0xBCC9, 0xC165, 0xBCCA, 0xC166, 0x996B, 0xC167, 0xBCCB,
+	0xC168, 0xBCCC, 0xC169, 0xBCCD, 0xC16A, 0x996C, 0xC16B, 0x996D,
+	0xC16C, 0x996E, 0xC16D, 0x996F, 0xC16E, 0x9970, 0xC16F, 0x9971,
+	0xC170, 0xBCCE, 0xC171, 0x9972, 0xC172, 0x9973, 0xC173, 0x9974,
+	0xC174, 0xBCCF, 0xC175, 0x9975, 0xC176, 0x9976, 0xC177, 0x9977,
+	0xC178, 0xBCD0, 0xC179, 0x9978, 0xC17A, 0x9979, 0xC17B, 0x997A,
+	0xC17C, 0x9981, 0xC17D, 0x9982, 0xC17E, 0x9983, 0xC17F, 0x9984,
+	0xC180, 0x9985, 0xC181, 0x9986, 0xC182, 0x9987, 0xC183, 0x9988,
+	0xC184, 0x9989, 0xC185, 0xBCD1, 0xC186, 0x998A, 0xC187, 0x998B,
+	0xC188, 0x998C, 0xC189, 0x998D, 0xC18A, 0x998E, 0xC18B, 0x998F,
+	0xC18C, 0xBCD2, 0xC18D, 0xBCD3, 0xC18E, 0xBCD4, 0xC18F, 0x9990,
+	0xC190, 0xBCD5, 0xC191, 0x9991, 0xC192, 0x9992, 0xC193, 0x9993,
+	0xC194, 0xBCD6, 0xC195, 0x9994, 0xC196, 0xBCD7, 0xC197, 0x9995,
+	0xC198, 0x9996, 0xC199, 0x9997, 0xC19A, 0x9998, 0xC19B, 0x9999,
+	0xC19C, 0xBCD8, 0xC19D, 0xBCD9, 0xC19E, 0x999A, 0xC19F, 0xBCDA,
+	0xC1A0, 0x999B, 0xC1A1, 0xBCDB, 0xC1A2, 0x999C, 0xC1A3, 0x999D,
+	0xC1A4, 0x999E, 0xC1A5, 0xBCDC, 0xC1A6, 0x999F, 0xC1A7, 0x99A0,
+	0xC1A8, 0xBCDD, 0xC1A9, 0xBCDE, 0xC1AA, 0x99A1, 0xC1AB, 0x99A2,
+	0xC1AC, 0xBCDF, 0xC1AD, 0x99A3, 0xC1AE, 0x99A4, 0xC1AF, 0x99A5,
+	0xC1B0, 0xBCE0, 0xC1B1, 0x99A6, 0xC1B2, 0x99A7, 0xC1B3, 0x99A8,
+	0xC1B4, 0x99A9, 0xC1B5, 0x99AA, 0xC1B6, 0x99AB, 0xC1B7, 0x99AC,
+	0xC1B8, 0x99AD, 0xC1B9, 0x99AE, 0xC1BA, 0x99AF, 0xC1BB, 0x99B0,
+	0xC1BC, 0x99B1, 0xC1BD, 0xBCE1, 0xC1BE, 0x99B2, 0xC1BF, 0x99B3,
+	0xC1C0, 0x99B4, 0xC1C1, 0x99B5, 0xC1C2, 0x99B6, 0xC1C3, 0x99B7,
+	0xC1C4, 0xBCE2, 0xC1C5, 0x99B8, 0xC1C6, 0x99B9, 0xC1C7, 0x99BA,
+	0xC1C8, 0xBCE3, 0xC1C9, 0x99BB, 0xC1CA, 0x99BC, 0xC1CB, 0x99BD,
+	0xC1CC, 0xBCE4, 0xC1CD, 0x99BE, 0xC1CE, 0x99BF, 0xC1CF, 0x99C0,
+	0xC1D0, 0x99C1, 0xC1D1, 0x99C2, 0xC1D2, 0x99C3, 0xC1D3, 0x99C4,
+	0xC1D4, 0xBCE5, 0xC1D5, 0x99C5, 0xC1D6, 0x99C6, 0xC1D7, 0xBCE6,
+	0xC1D8, 0xBCE7, 0xC1D9, 0x99C7, 0xC1DA, 0x99C8, 0xC1DB, 0x99C9,
+	0xC1DC, 0x99CA, 0xC1DD, 0x99CB, 0xC1DE, 0x99CC, 0xC1DF, 0x99CD,
+	0xC1E0, 0xBCE8, 0xC1E1, 0x99CE, 0xC1E2, 0x99CF, 0xC1E3, 0x99D0,
+	0xC1E4, 0xBCE9, 0xC1E5, 0x99D1, 0xC1E6, 0x99D2, 0xC1E7, 0x99D3,
+	0xC1E8, 0xBCEA, 0xC1E9, 0x99D4, 0xC1EA, 0x99D5, 0xC1EB, 0x99D6,
+	0xC1EC, 0x99D7, 0xC1ED, 0x99D8, 0xC1EE, 0x99D9, 0xC1EF, 0x99DA,
+	0xC1F0, 0xBCEB, 0xC1F1, 0xBCEC, 0xC1F2, 0x99DB, 0xC1F3, 0xBCED,
+	0xC1F4, 0x99DC, 0xC1F5, 0x99DD, 0xC1F6, 0x99DE, 0xC1F7, 0x99DF,
+	0xC1F8, 0x99E0, 0xC1F9, 0x99E1, 0xC1FA, 0x99E2, 0xC1FB, 0x99E3,
+	0xC1FC, 0xBCEE, 0xC1FD, 0xBCEF, 0xC1FE, 0x99E4, 0xC1FF, 0x99E5,
+	0xC200, 0xBCF0, 0xC201, 0x99E6, 0xC202, 0x99E7, 0xC203, 0x99E8,
+	0xC204, 0xBCF1, 0xC205, 0x99E9, 0xC206, 0x99EA, 0xC207, 0x99EB,
+	0xC208, 0x99EC, 0xC209, 0x99ED, 0xC20A, 0x99EE, 0xC20B, 0x99EF,
+	0xC20C, 0xBCF2, 0xC20D, 0xBCF3, 0xC20E, 0x99F0, 0xC20F, 0xBCF4,
+	0xC210, 0x99F1, 0xC211, 0xBCF5, 0xC212, 0x99F2, 0xC213, 0x99F3,
+	0xC214, 0x99F4, 0xC215, 0x99F5, 0xC216, 0x99F6, 0xC217, 0x99F7,
+	0xC218, 0xBCF6, 0xC219, 0xBCF7, 0xC21A, 0x99F8, 0xC21B, 0x99F9,
+	0xC21C, 0xBCF8, 0xC21D, 0x99FA, 0xC21E, 0x99FB, 0xC21F, 0xBCF9,
+	0xC220, 0xBCFA, 0xC221, 0x99FC, 0xC222, 0x99FD, 0xC223, 0x99FE,
+	0xC224, 0x9A41, 0xC225, 0x9A42, 0xC226, 0x9A43, 0xC227, 0x9A44,
+	0xC228, 0xBCFB, 0xC229, 0xBCFC, 0xC22A, 0x9A45, 0xC22B, 0xBCFD,
+	0xC22C, 0x9A46, 0xC22D, 0xBCFE, 0xC22E, 0x9A47, 0xC22F, 0xBDA1,
+	0xC230, 0x9A48, 0xC231, 0xBDA2, 0xC232, 0xBDA3, 0xC233, 0x9A49,
+	0xC234, 0xBDA4, 0xC235, 0x9A4A, 0xC236, 0x9A4B, 0xC237, 0x9A4C,
+	0xC238, 0x9A4D, 0xC239, 0x9A4E, 0xC23A, 0x9A4F, 0xC23B, 0x9A50,
+	0xC23C, 0x9A51, 0xC23D, 0x9A52, 0xC23E, 0x9A53, 0xC23F, 0x9A54,
+	0xC240, 0x9A55, 0xC241, 0x9A56, 0xC242, 0x9A57, 0xC243, 0x9A58,
+	0xC244, 0x9A59, 0xC245, 0x9A5A, 0xC246, 0x9A61, 0xC247, 0x9A62,
+	0xC248, 0xBDA5, 0xC249, 0x9A63, 0xC24A, 0x9A64, 0xC24B, 0x9A65,
+	0xC24C, 0x9A66, 0xC24D, 0x9A67, 0xC24E, 0x9A68, 0xC24F, 0x9A69,
+	0xC250, 0xBDA6, 0xC251, 0xBDA7, 0xC252, 0x9A6A, 0xC253, 0x9A6B,
+	0xC254, 0xBDA8, 0xC255, 0x9A6C, 0xC256, 0x9A6D, 0xC257, 0x9A6E,
+	0xC258, 0xBDA9, 0xC259, 0x9A6F, 0xC25A, 0x9A70, 0xC25B, 0x9A71,
+	0xC25C, 0x9A72, 0xC25D, 0x9A73, 0xC25E, 0x9A74, 0xC25F, 0x9A75,
+	0xC260, 0xBDAA, 0xC261, 0x9A76, 0xC262, 0x9A77, 0xC263, 0x9A78,
+	0xC264, 0x9A79, 0xC265, 0xBDAB, 0xC266, 0x9A7A, 0xC267, 0x9A81,
+	0xC268, 0x9A82, 0xC269, 0x9A83, 0xC26A, 0x9A84, 0xC26B, 0x9A85,
+	0xC26C, 0xBDAC, 0xC26D, 0xBDAD, 0xC26E, 0x9A86, 0xC26F, 0x9A87,
+	0xC270, 0xBDAE, 0xC271, 0x9A88, 0xC272, 0x9A89, 0xC273, 0x9A8A,
+	0xC274, 0xBDAF, 0xC275, 0x9A8B, 0xC276, 0x9A8C, 0xC277, 0x9A8D,
+	0xC278, 0x9A8E, 0xC279, 0x9A8F, 0xC27A, 0x9A90, 0xC27B, 0x9A91,
+	0xC27C, 0xBDB0, 0xC27D, 0xBDB1, 0xC27E, 0x9A92, 0xC27F, 0xBDB2,
+	0xC280, 0x9A93, 0xC281, 0xBDB3, 0xC282, 0x9A94, 0xC283, 0x9A95,
+	0xC284, 0x9A96, 0xC285, 0x9A97, 0xC286, 0x9A98, 0xC287, 0x9A99,
+	0xC288, 0xBDB4, 0xC289, 0xBDB5, 0xC28A, 0x9A9A, 0xC28B, 0x9A9B,
+	0xC28C, 0x9A9C, 0xC28D, 0x9A9D, 0xC28E, 0x9A9E, 0xC28F, 0x9A9F,
+	0xC290, 0xBDB6, 0xC291, 0x9AA0, 0xC292, 0x9AA1, 0xC293, 0x9AA2,
+	0xC294, 0x9AA3, 0xC295, 0x9AA4, 0xC296, 0x9AA5, 0xC297, 0x9AA6,
+	0xC298, 0xBDB7, 0xC299, 0x9AA7, 0xC29A, 0x9AA8, 0xC29B, 0xBDB8,
+	0xC29C, 0x9AA9, 0xC29D, 0xBDB9, 0xC29E, 0x9AAA, 0xC29F, 0x9AAB,
+	0xC2A0, 0x9AAC, 0xC2A1, 0x9AAD, 0xC2A2, 0x9AAE, 0xC2A3, 0x9AAF,
+	0xC2A4, 0xBDBA, 0xC2A5, 0xBDBB, 0xC2A6, 0x9AB0, 0xC2A7, 0x9AB1,
+	0xC2A8, 0xBDBC, 0xC2A9, 0x9AB2, 0xC2AA, 0x9AB3, 0xC2AB, 0x9AB4,
+	0xC2AC, 0xBDBD, 0xC2AD, 0xBDBE, 0xC2AE, 0x9AB5, 0xC2AF, 0x9AB6,
+	0xC2B0, 0x9AB7, 0xC2B1, 0x9AB8, 0xC2B2, 0x9AB9, 0xC2B3, 0x9ABA,
+	0xC2B4, 0xBDBF, 0xC2B5, 0xBDC0, 0xC2B6, 0x9ABB, 0xC2B7, 0xBDC1,
+	0xC2B8, 0x9ABC, 0xC2B9, 0xBDC2, 0xC2BA, 0x9ABD, 0xC2BB, 0x9ABE,
+	0xC2BC, 0x9ABF, 0xC2BD, 0x9AC0, 0xC2BE, 0x9AC1, 0xC2BF, 0x9AC2,
+	0xC2C0, 0x9AC3, 0xC2C1, 0x9AC4, 0xC2C2, 0x9AC5, 0xC2C3, 0x9AC6,
+	0xC2C4, 0x9AC7, 0xC2C5, 0x9AC8, 0xC2C6, 0x9AC9, 0xC2C7, 0x9ACA,
+	0xC2C8, 0x9ACB, 0xC2C9, 0x9ACC, 0xC2CA, 0x9ACD, 0xC2CB, 0x9ACE,
+	0xC2CC, 0x9ACF, 0xC2CD, 0x9AD0, 0xC2CE, 0x9AD1, 0xC2CF, 0x9AD2,
+	0xC2D0, 0x9AD3, 0xC2D1, 0x9AD4, 0xC2D2, 0x9AD5, 0xC2D3, 0x9AD6,
+	0xC2D4, 0x9AD7, 0xC2D5, 0x9AD8, 0xC2D6, 0x9AD9, 0xC2D7, 0x9ADA,
+	0xC2D8, 0x9ADB, 0xC2D9, 0x9ADC, 0xC2DA, 0x9ADD, 0xC2DB, 0x9ADE,
+	0xC2DC, 0xBDC3, 0xC2DD, 0xBDC4, 0xC2DE, 0x9ADF, 0xC2DF, 0x9AE0,
+	0xC2E0, 0xBDC5, 0xC2E1, 0x9AE1, 0xC2E2, 0x9AE2, 0xC2E3, 0xBDC6,
+	0xC2E4, 0xBDC7, 0xC2E5, 0x9AE3, 0xC2E6, 0x9AE4, 0xC2E7, 0x9AE5,
+	0xC2E8, 0x9AE6, 0xC2E9, 0x9AE7, 0xC2EA, 0x9AE8, 0xC2EB, 0xBDC8,
+	0xC2EC, 0xBDC9, 0xC2ED, 0xBDCA, 0xC2EE, 0x9AE9, 0xC2EF, 0xBDCB,
+	0xC2F0, 0x9AEA, 0xC2F1, 0xBDCC, 0xC2F2, 0x9AEB, 0xC2F3, 0x9AEC,
+	0xC2F4, 0x9AED, 0xC2F5, 0x9AEE, 0xC2F6, 0xBDCD, 0xC2F7, 0x9AEF,
+	0xC2F8, 0xBDCE, 0xC2F9, 0xBDCF, 0xC2FA, 0x9AF0, 0xC2FB, 0xBDD0,
+	0xC2FC, 0xBDD1, 0xC2FD, 0x9AF1, 0xC2FE, 0x9AF2, 0xC2FF, 0x9AF3,
+	0xC300, 0xBDD2, 0xC301, 0x9AF4, 0xC302, 0x9AF5, 0xC303, 0x9AF6,
+	0xC304, 0x9AF7, 0xC305, 0x9AF8, 0xC306, 0x9AF9, 0xC307, 0x9AFA,
+	0xC308, 0xBDD3, 0xC309, 0xBDD4, 0xC30A, 0x9AFB, 0xC30B, 0x9AFC,
+	0xC30C, 0xBDD5, 0xC30D, 0xBDD6, 0xC30E, 0x9AFD, 0xC30F, 0x9AFE,
+	0xC310, 0x9B41, 0xC311, 0x9B42, 0xC312, 0x9B43, 0xC313, 0xBDD7,
+	0xC314, 0xBDD8, 0xC315, 0xBDD9, 0xC316, 0x9B44, 0xC317, 0x9B45,
+	0xC318, 0xBDDA, 0xC319, 0x9B46, 0xC31A, 0x9B47, 0xC31B, 0x9B48,
+	0xC31C, 0xBDDB, 0xC31D, 0x9B49, 0xC31E, 0x9B4A, 0xC31F, 0x9B4B,
+	0xC320, 0x9B4C, 0xC321, 0x9B4D, 0xC322, 0x9B4E, 0xC323, 0x9B4F,
+	0xC324, 0xBDDC, 0xC325, 0xBDDD, 0xC326, 0x9B50, 0xC327, 0x9B51,
+	0xC328, 0xBDDE, 0xC329, 0xBDDF, 0xC32A, 0x9B52, 0xC32B, 0x9B53,
+	0xC32C, 0x9B54, 0xC32D, 0x9B55, 0xC32E, 0x9B56, 0xC32F, 0x9B57,
+	0xC330, 0x9B58, 0xC331, 0x9B59, 0xC332, 0x9B5A, 0xC333, 0x9B61,
+	0xC334, 0x9B62, 0xC335, 0x9B63, 0xC336, 0x9B64, 0xC337, 0x9B65,
+	0xC338, 0x9B66, 0xC339, 0x9B67, 0xC33A, 0x9B68, 0xC33B, 0x9B69,
+	0xC33C, 0x9B6A, 0xC33D, 0x9B6B, 0xC33E, 0x9B6C, 0xC33F, 0x9B6D,
+	0xC340, 0x9B6E, 0xC341, 0x9B6F, 0xC342, 0x9B70, 0xC343, 0x9B71,
+	0xC344, 0x9B72, 0xC345, 0xBDE0, 0xC346, 0x9B73, 0xC347, 0x9B74,
+	0xC348, 0x9B75, 0xC349, 0x9B76, 0xC34A, 0x9B77, 0xC34B, 0x9B78,
+	0xC34C, 0x9B79, 0xC34D, 0x9B7A, 0xC34E, 0x9B81, 0xC34F, 0x9B82,
+	0xC350, 0x9B83, 0xC351, 0x9B84, 0xC352, 0x9B85, 0xC353, 0x9B86,
+	0xC354, 0x9B87, 0xC355, 0x9B88, 0xC356, 0x9B89, 0xC357, 0x9B8A,
+	0xC358, 0x9B8B, 0xC359, 0x9B8C, 0xC35A, 0x9B8D, 0xC35B, 0x9B8E,
+	0xC35C, 0x9B8F, 0xC35D, 0x9B90, 0xC35E, 0x9B91, 0xC35F, 0x9B92,
+	0xC360, 0x9B93, 0xC361, 0x9B94, 0xC362, 0x9B95, 0xC363, 0x9B96,
+	0xC364, 0x9B97, 0xC365, 0x9B98, 0xC366, 0x9B99, 0xC367, 0x9B9A,
+	0xC368, 0xBDE1, 0xC369, 0xBDE2, 0xC36A, 0x9B9B, 0xC36B, 0x9B9C,
+	0xC36C, 0xBDE3, 0xC36D, 0x9B9D, 0xC36E, 0x9B9E, 0xC36F, 0x9B9F,
+	0xC370, 0xBDE4, 0xC371, 0x9BA0, 0xC372, 0xBDE5, 0xC373, 0x9BA1,
+	0xC374, 0x9BA2, 0xC375, 0x9BA3, 0xC376, 0x9BA4, 0xC377, 0x9BA5,
+	0xC378, 0xBDE6, 0xC379, 0xBDE7, 0xC37A, 0x9BA6, 0xC37B, 0x9BA7,
+	0xC37C, 0xBDE8, 0xC37D, 0xBDE9, 0xC37E, 0x9BA8, 0xC37F, 0x9BA9,
+	0xC380, 0x9BAA, 0xC381, 0x9BAB, 0xC382, 0x9BAC, 0xC383, 0x9BAD,
+	0xC384, 0xBDEA, 0xC385, 0x9BAE, 0xC386, 0x9BAF, 0xC387, 0x9BB0,
+	0xC388, 0xBDEB, 0xC389, 0x9BB1, 0xC38A, 0x9BB2, 0xC38B, 0x9BB3,
+	0xC38C, 0xBDEC, 0xC38D, 0x9BB4, 0xC38E, 0x9BB5, 0xC38F, 0x9BB6,
+	0xC390, 0x9BB7, 0xC391, 0x9BB8, 0xC392, 0x9BB9, 0xC393, 0x9BBA,
+	0xC394, 0x9BBB, 0xC395, 0x9BBC, 0xC396, 0x9BBD, 0xC397, 0x9BBE,
+	0xC398, 0x9BBF, 0xC399, 0x9BC0, 0xC39A, 0x9BC1, 0xC39B, 0x9BC2,
+	0xC39C, 0x9BC3, 0xC39D, 0x9BC4, 0xC39E, 0x9BC5, 0xC39F, 0x9BC6,
+	0xC3A0, 0x9BC7, 0xC3A1, 0x9BC8, 0xC3A2, 0x9BC9, 0xC3A3, 0x9BCA,
+	0xC3A4, 0x9BCB, 0xC3A5, 0x9BCC, 0xC3A6, 0x9BCD, 0xC3A7, 0x9BCE,
+	0xC3A8, 0x9BCF, 0xC3A9, 0x9BD0, 0xC3AA, 0x9BD1, 0xC3AB, 0x9BD2,
+	0xC3AC, 0x9BD3, 0xC3AD, 0x9BD4, 0xC3AE, 0x9BD5, 0xC3AF, 0x9BD6,
+	0xC3B0, 0x9BD7, 0xC3B1, 0x9BD8, 0xC3B2, 0x9BD9, 0xC3B3, 0x9BDA,
+	0xC3B4, 0x9BDB, 0xC3B5, 0x9BDC, 0xC3B6, 0x9BDD, 0xC3B7, 0x9BDE,
+	0xC3B8, 0x9BDF, 0xC3B9, 0x9BE0, 0xC3BA, 0x9BE1, 0xC3BB, 0x9BE2,
+	0xC3BC, 0x9BE3, 0xC3BD, 0x9BE4, 0xC3BE, 0x9BE5, 0xC3BF, 0x9BE6,
+	0xC3C0, 0xBDED, 0xC3C1, 0x9BE7, 0xC3C2, 0x9BE8, 0xC3C3, 0x9BE9,
+	0xC3C4, 0x9BEA, 0xC3C5, 0x9BEB, 0xC3C6, 0x9BEC, 0xC3C7, 0x9BED,
+	0xC3C8, 0x9BEE, 0xC3C9, 0x9BEF, 0xC3CA, 0x9BF0, 0xC3CB, 0x9BF1,
+	0xC3CC, 0x9BF2, 0xC3CD, 0x9BF3, 0xC3CE, 0x9BF4, 0xC3CF, 0x9BF5,
+	0xC3D0, 0x9BF6, 0xC3D1, 0x9BF7, 0xC3D2, 0x9BF8, 0xC3D3, 0x9BF9,
+	0xC3D4, 0x9BFA, 0xC3D5, 0x9BFB, 0xC3D6, 0x9BFC, 0xC3D7, 0x9BFD,
+	0xC3D8, 0xBDEE, 0xC3D9, 0xBDEF, 0xC3DA, 0x9BFE, 0xC3DB, 0x9C41,
+	0xC3DC, 0xBDF0, 0xC3DD, 0x9C42, 0xC3DE, 0x9C43, 0xC3DF, 0xBDF1,
+	0xC3E0, 0xBDF2, 0xC3E1, 0x9C44, 0xC3E2, 0xBDF3, 0xC3E3, 0x9C45,
+	0xC3E4, 0x9C46, 0xC3E5, 0x9C47, 0xC3E6, 0x9C48, 0xC3E7, 0x9C49,
+	0xC3E8, 0xBDF4, 0xC3E9, 0xBDF5, 0xC3EA, 0x9C4A, 0xC3EB, 0x9C4B,
+	0xC3EC, 0x9C4C, 0xC3ED, 0xBDF6, 0xC3EE, 0x9C4D, 0xC3EF, 0x9C4E,
+	0xC3F0, 0x9C4F, 0xC3F1, 0x9C50, 0xC3F2, 0x9C51, 0xC3F3, 0x9C52,
+	0xC3F4, 0xBDF7, 0xC3F5, 0xBDF8, 0xC3F6, 0x9C53, 0xC3F7, 0x9C54,
+	0xC3F8, 0xBDF9, 0xC3F9, 0x9C55, 0xC3FA, 0x9C56, 0xC3FB, 0x9C57,
+	0xC3FC, 0x9C58, 0xC3FD, 0x9C59, 0xC3FE, 0x9C5A, 0xC3FF, 0x9C61,
+	0xC400, 0x9C62, 0xC401, 0x9C63, 0xC402, 0x9C64, 0xC403, 0x9C65,
+	0xC404, 0x9C66, 0xC405, 0x9C67, 0xC406, 0x9C68, 0xC407, 0x9C69,
+	0xC408, 0xBDFA, 0xC409, 0x9C6A, 0xC40A, 0x9C6B, 0xC40B, 0x9C6C,
+	0xC40C, 0x9C6D, 0xC40D, 0x9C6E, 0xC40E, 0x9C6F, 0xC40F, 0x9C70,
+	0xC410, 0xBDFB, 0xC411, 0x9C71, 0xC412, 0x9C72, 0xC413, 0x9C73,
+	0xC414, 0x9C74, 0xC415, 0x9C75, 0xC416, 0x9C76, 0xC417, 0x9C77,
+	0xC418, 0x9C78, 0xC419, 0x9C79, 0xC41A, 0x9C7A, 0xC41B, 0x9C81,
+	0xC41C, 0x9C82, 0xC41D, 0x9C83, 0xC41E, 0x9C84, 0xC41F, 0x9C85,
+	0xC420, 0x9C86, 0xC421, 0x9C87, 0xC422, 0x9C88, 0xC423, 0x9C89,
+	0xC424, 0xBDFC, 0xC425, 0x9C8A, 0xC426, 0x9C8B, 0xC427, 0x9C8C,
+	0xC428, 0x9C8D, 0xC429, 0x9C8E, 0xC42A, 0x9C8F, 0xC42B, 0x9C90,
+	0xC42C, 0xBDFD, 0xC42D, 0x9C91, 0xC42E, 0x9C92, 0xC42F, 0x9C93,
+	0xC430, 0xBDFE, 0xC431, 0x9C94, 0xC432, 0x9C95, 0xC433, 0x9C96,
+	0xC434, 0xBEA1, 0xC435, 0x9C97, 0xC436, 0x9C98, 0xC437, 0x9C99,
+	0xC438, 0x9C9A, 0xC439, 0x9C9B, 0xC43A, 0x9C9C, 0xC43B, 0x9C9D,
+	0xC43C, 0xBEA2, 0xC43D, 0xBEA3, 0xC43E, 0x9C9E, 0xC43F, 0x9C9F,
+	0xC440, 0x9CA0, 0xC441, 0x9CA1, 0xC442, 0x9CA2, 0xC443, 0x9CA3,
+	0xC444, 0x9CA4, 0xC445, 0x9CA5, 0xC446, 0x9CA6, 0xC447, 0x9CA7,
+	0xC448, 0xBEA4, 0xC449, 0x9CA8, 0xC44A, 0x9CA9, 0xC44B, 0x9CAA,
+	0xC44C, 0x9CAB, 0xC44D, 0x9CAC, 0xC44E, 0x9CAD, 0xC44F, 0x9CAE,
+	0xC450, 0x9CAF, 0xC451, 0x9CB0, 0xC452, 0x9CB1, 0xC453, 0x9CB2,
+	0xC454, 0x9CB3, 0xC455, 0x9CB4, 0xC456, 0x9CB5, 0xC457, 0x9CB6,
+	0xC458, 0x9CB7, 0xC459, 0x9CB8, 0xC45A, 0x9CB9, 0xC45B, 0x9CBA,
+	0xC45C, 0x9CBB, 0xC45D, 0x9CBC, 0xC45E, 0x9CBD, 0xC45F, 0x9CBE,
+	0xC460, 0x9CBF, 0xC461, 0x9CC0, 0xC462, 0x9CC1, 0xC463, 0x9CC2,
+	0xC464, 0xBEA5, 0xC465, 0xBEA6, 0xC466, 0x9CC3, 0xC467, 0x9CC4,
+	0xC468, 0xBEA7, 0xC469, 0x9CC5, 0xC46A, 0x9CC6, 0xC46B, 0x9CC7,
+	0xC46C, 0xBEA8, 0xC46D, 0x9CC8, 0xC46E, 0x9CC9, 0xC46F, 0x9CCA,
+	0xC470, 0x9CCB, 0xC471, 0x9CCC, 0xC472, 0x9CCD, 0xC473, 0x9CCE,
+	0xC474, 0xBEA9, 0xC475, 0xBEAA, 0xC476, 0x9CCF, 0xC477, 0x9CD0,
+	0xC478, 0x9CD1, 0xC479, 0xBEAB, 0xC47A, 0x9CD2, 0xC47B, 0x9CD3,
+	0xC47C, 0x9CD4, 0xC47D, 0x9CD5, 0xC47E, 0x9CD6, 0xC47F, 0x9CD7,
+	0xC480, 0xBEAC, 0xC481, 0x9CD8, 0xC482, 0x9CD9, 0xC483, 0x9CDA,
+	0xC484, 0x9CDB, 0xC485, 0x9CDC, 0xC486, 0x9CDD, 0xC487, 0x9CDE,
+	0xC488, 0x9CDF, 0xC489, 0x9CE0, 0xC48A, 0x9CE1, 0xC48B, 0x9CE2,
+	0xC48C, 0x9CE3, 0xC48D, 0x9CE4, 0xC48E, 0x9CE5, 0xC48F, 0x9CE6,
+	0xC490, 0x9CE7, 0xC491, 0x9CE8, 0xC492, 0x9CE9, 0xC493, 0x9CEA,
+	0xC494, 0xBEAD, 0xC495, 0x9CEB, 0xC496, 0x9CEC, 0xC497, 0x9CED,
+	0xC498, 0x9CEE, 0xC499, 0x9CEF, 0xC49A, 0x9CF0, 0xC49B, 0x9CF1,
+	0xC49C, 0xBEAE, 0xC49D, 0x9CF2, 0xC49E, 0x9CF3, 0xC49F, 0x9CF4,
+	0xC4A0, 0x9CF5, 0xC4A1, 0x9CF6, 0xC4A2, 0x9CF7, 0xC4A3, 0x9CF8,
+	0xC4A4, 0x9CF9, 0xC4A5, 0x9CFA, 0xC4A6, 0x9CFB, 0xC4A7, 0x9CFC,
+	0xC4A8, 0x9CFD, 0xC4A9, 0x9CFE, 0xC4AA, 0x9D41, 0xC4AB, 0x9D42,
+	0xC4AC, 0x9D43, 0xC4AD, 0x9D44, 0xC4AE, 0x9D45, 0xC4AF, 0x9D46,
+	0xC4B0, 0x9D47, 0xC4B1, 0x9D48, 0xC4B2, 0x9D49, 0xC4B3, 0x9D4A,
+	0xC4B4, 0x9D4B, 0xC4B5, 0x9D4C, 0xC4B6, 0x9D4D, 0xC4B7, 0x9D4E,
+	0xC4B8, 0xBEAF, 0xC4B9, 0x9D4F, 0xC4BA, 0x9D50, 0xC4BB, 0x9D51,
+	0xC4BC, 0xBEB0, 0xC4BD, 0x9D52, 0xC4BE, 0x9D53, 0xC4BF, 0x9D54,
+	0xC4C0, 0x9D55, 0xC4C1, 0x9D56, 0xC4C2, 0x9D57, 0xC4C3, 0x9D58,
+	0xC4C4, 0x9D59, 0xC4C5, 0x9D5A, 0xC4C6, 0x9D61, 0xC4C7, 0x9D62,
+	0xC4C8, 0x9D63, 0xC4C9, 0x9D64, 0xC4CA, 0x9D65, 0xC4CB, 0x9D66,
+	0xC4CC, 0x9D67, 0xC4CD, 0x9D68, 0xC4CE, 0x9D69, 0xC4CF, 0x9D6A,
+	0xC4D0, 0x9D6B, 0xC4D1, 0x9D6C, 0xC4D2, 0x9D6D, 0xC4D3, 0x9D6E,
+	0xC4D4, 0x9D6F, 0xC4D5, 0x9D70, 0xC4D6, 0x9D71, 0xC4D7, 0x9D72,
+	0xC4D8, 0x9D73, 0xC4D9, 0x9D74, 0xC4DA, 0x9D75, 0xC4DB, 0x9D76,
+	0xC4DC, 0x9D77, 0xC4DD, 0x9D78, 0xC4DE, 0x9D79, 0xC4DF, 0x9D7A,
+	0xC4E0, 0x9D81, 0xC4E1, 0x9D82, 0xC4E2, 0x9D83, 0xC4E3, 0x9D84,
+	0xC4E4, 0x9D85, 0xC4E5, 0x9D86, 0xC4E6, 0x9D87, 0xC4E7, 0x9D88,
+	0xC4E8, 0x9D89, 0xC4E9, 0xBEB1, 0xC4EA, 0x9D8A, 0xC4EB, 0x9D8B,
+	0xC4EC, 0x9D8C, 0xC4ED, 0x9D8D, 0xC4EE, 0x9D8E, 0xC4EF, 0x9D8F,
+	0xC4F0, 0xBEB2, 0xC4F1, 0xBEB3, 0xC4F2, 0x9D90, 0xC4F3, 0x9D91,
+	0xC4F4, 0xBEB4, 0xC4F5, 0x9D92, 0xC4F6, 0x9D93, 0xC4F7, 0x9D94,
+	0xC4F8, 0xBEB5, 0xC4F9, 0x9D95, 0xC4FA, 0xBEB6, 0xC4FB, 0x9D96,
+	0xC4FC, 0x9D97, 0xC4FD, 0x9D98, 0xC4FE, 0x9D99, 0xC4FF, 0xBEB7,
+	0xC500, 0xBEB8, 0xC501, 0xBEB9, 0xC502, 0x9D9A, 0xC503, 0x9D9B,
+	0xC504, 0x9D9C, 0xC505, 0x9D9D, 0xC506, 0x9D9E, 0xC507, 0x9D9F,
+	0xC508, 0x9DA0, 0xC509, 0x9DA1, 0xC50A, 0x9DA2, 0xC50B, 0x9DA3,
+	0xC50C, 0xBEBA, 0xC50D, 0x9DA4, 0xC50E, 0x9DA5, 0xC50F, 0x9DA6,
+	0xC510, 0xBEBB, 0xC511, 0x9DA7, 0xC512, 0x9DA8, 0xC513, 0x9DA9,
+	0xC514, 0xBEBC, 0xC515, 0x9DAA, 0xC516, 0x9DAB, 0xC517, 0x9DAC,
+	0xC518, 0x9DAD, 0xC519, 0x9DAE, 0xC51A, 0x9DAF, 0xC51B, 0x9DB0,
+	0xC51C, 0xBEBD, 0xC51D, 0x9DB1, 0xC51E, 0x9DB2, 0xC51F, 0x9DB3,
+	0xC520, 0x9DB4, 0xC521, 0x9DB5, 0xC522, 0x9DB6, 0xC523, 0x9DB7,
+	0xC524, 0x9DB8, 0xC525, 0x9DB9, 0xC526, 0x9DBA, 0xC527, 0x9DBB,
+	0xC528, 0xBEBE, 0xC529, 0xBEBF, 0xC52A, 0x9DBC, 0xC52B, 0x9DBD,
+	0xC52C, 0xBEC0, 0xC52D, 0x9DBE, 0xC52E, 0x9DBF, 0xC52F, 0x9DC0,
+	0xC530, 0xBEC1, 0xC531, 0x9DC1, 0xC532, 0x9DC2, 0xC533, 0x9DC3,
+	0xC534, 0x9DC4, 0xC535, 0x9DC5, 0xC536, 0x9DC6, 0xC537, 0x9DC7,
+	0xC538, 0xBEC2, 0xC539, 0xBEC3, 0xC53A, 0x9DC8, 0xC53B, 0xBEC4,
+	0xC53C, 0x9DC9, 0xC53D, 0xBEC5, 0xC53E, 0x9DCA, 0xC53F, 0x9DCB,
+	0xC540, 0x9DCC, 0xC541, 0x9DCD, 0xC542, 0x9DCE, 0xC543, 0x9DCF,
+	0xC544, 0xBEC6, 0xC545, 0xBEC7, 0xC546, 0x9DD0, 0xC547, 0x9DD1,
+	0xC548, 0xBEC8, 0xC549, 0xBEC9, 0xC54A, 0xBECA, 0xC54B, 0x9DD2,
+	0xC54C, 0xBECB, 0xC54D, 0xBECC, 0xC54E, 0xBECD, 0xC54F, 0x9DD3,
+	0xC550, 0x9DD4, 0xC551, 0x9DD5, 0xC552, 0x9DD6, 0xC553, 0xBECE,
+	0xC554, 0xBECF, 0xC555, 0xBED0, 0xC556, 0x9DD7, 0xC557, 0xBED1,
+	0xC558, 0xBED2, 0xC559, 0xBED3, 0xC55A, 0x9DD8, 0xC55B, 0x9DD9,
+	0xC55C, 0x9DDA, 0xC55D, 0xBED4, 0xC55E, 0xBED5, 0xC55F, 0x9DDB,
+	0xC560, 0xBED6, 0xC561, 0xBED7, 0xC562, 0x9DDC, 0xC563, 0x9DDD,
+	0xC564, 0xBED8, 0xC565, 0x9DDE, 0xC566, 0x9DDF, 0xC567, 0x9DE0,
+	0xC568, 0xBED9, 0xC569, 0x9DE1, 0xC56A, 0x9DE2, 0xC56B, 0x9DE3,
+	0xC56C, 0x9DE4, 0xC56D, 0x9DE5, 0xC56E, 0x9DE6, 0xC56F, 0x9DE7,
+	0xC570, 0xBEDA, 0xC571, 0xBEDB, 0xC572, 0x9DE8, 0xC573, 0xBEDC,
+	0xC574, 0xBEDD, 0xC575, 0xBEDE, 0xC576, 0x9DE9, 0xC577, 0x9DEA,
+	0xC578, 0x9DEB, 0xC579, 0x9DEC, 0xC57A, 0x9DED, 0xC57B, 0x9DEE,
+	0xC57C, 0xBEDF, 0xC57D, 0xBEE0, 0xC57E, 0x9DEF, 0xC57F, 0x9DF0,
+	0xC580, 0xBEE1, 0xC581, 0x9DF1, 0xC582, 0x9DF2, 0xC583, 0x9DF3,
+	0xC584, 0xBEE2, 0xC585, 0x9DF4, 0xC586, 0x9DF5, 0xC587, 0xBEE3,
+	0xC588, 0x9DF6, 0xC589, 0x9DF7, 0xC58A, 0x9DF8, 0xC58B, 0x9DF9,
+	0xC58C, 0xBEE4, 0xC58D, 0xBEE5, 0xC58E, 0x9DFA, 0xC58F, 0xBEE6,
+	0xC590, 0x9DFB, 0xC591, 0xBEE7, 0xC592, 0x9DFC, 0xC593, 0x9DFD,
+	0xC594, 0x9DFE, 0xC595, 0xBEE8, 0xC596, 0x9E41, 0xC597, 0xBEE9,
+	0xC598, 0xBEEA, 0xC599, 0x9E42, 0xC59A, 0x9E43, 0xC59B, 0x9E44,
+	0xC59C, 0xBEEB, 0xC59D, 0x9E45, 0xC59E, 0x9E46, 0xC59F, 0x9E47,
+	0xC5A0, 0xBEEC, 0xC5A1, 0x9E48, 0xC5A2, 0x9E49, 0xC5A3, 0x9E4A,
+	0xC5A4, 0x9E4B, 0xC5A5, 0x9E4C, 0xC5A6, 0x9E4D, 0xC5A7, 0x9E4E,
+	0xC5A8, 0x9E4F, 0xC5A9, 0xBEED, 0xC5AA, 0x9E50, 0xC5AB, 0x9E51,
+	0xC5AC, 0x9E52, 0xC5AD, 0x9E53, 0xC5AE, 0x9E54, 0xC5AF, 0x9E55,
+	0xC5B0, 0x9E56, 0xC5B1, 0x9E57, 0xC5B2, 0x9E58, 0xC5B3, 0x9E59,
+	0xC5B4, 0xBEEE, 0xC5B5, 0xBEEF, 0xC5B6, 0x9E5A, 0xC5B7, 0x9E61,
+	0xC5B8, 0xBEF0, 0xC5B9, 0xBEF1, 0xC5BA, 0x9E62, 0xC5BB, 0xBEF2,
+	0xC5BC, 0xBEF3, 0xC5BD, 0xBEF4, 0xC5BE, 0xBEF5, 0xC5BF, 0x9E63,
+	0xC5C0, 0x9E64, 0xC5C1, 0x9E65, 0xC5C2, 0x9E66, 0xC5C3, 0x9E67,
+	0xC5C4, 0xBEF6, 0xC5C5, 0xBEF7, 0xC5C6, 0xBEF8, 0xC5C7, 0xBEF9,
+	0xC5C8, 0xBEFA, 0xC5C9, 0xBEFB, 0xC5CA, 0xBEFC, 0xC5CB, 0x9E68,
+	0xC5CC, 0xBEFD, 0xC5CD, 0x9E69, 0xC5CE, 0xBEFE, 0xC5CF, 0x9E6A,
+	0xC5D0, 0xBFA1, 0xC5D1, 0xBFA2, 0xC5D2, 0x9E6B, 0xC5D3, 0x9E6C,
+	0xC5D4, 0xBFA3, 0xC5D5, 0x9E6D, 0xC5D6, 0x9E6E, 0xC5D7, 0x9E6F,
+	0xC5D8, 0xBFA4, 0xC5D9, 0x9E70, 0xC5DA, 0x9E71, 0xC5DB, 0x9E72,
+	0xC5DC, 0x9E73, 0xC5DD, 0x9E74, 0xC5DE, 0x9E75, 0xC5DF, 0x9E76,
+	0xC5E0, 0xBFA5, 0xC5E1, 0xBFA6, 0xC5E2, 0x9E77, 0xC5E3, 0xBFA7,
+	0xC5E4, 0x9E78, 0xC5E5, 0xBFA8, 0xC5E6, 0x9E79, 0xC5E7, 0x9E7A,
+	0xC5E8, 0x9E81, 0xC5E9, 0x9E82, 0xC5EA, 0x9E83, 0xC5EB, 0x9E84,
+	0xC5EC, 0xBFA9, 0xC5ED, 0xBFAA, 0xC5EE, 0xBFAB, 0xC5EF, 0x9E85,
+	0xC5F0, 0xBFAC, 0xC5F1, 0x9E86, 0xC5F2, 0x9E87, 0xC5F3, 0x9E88,
+	0xC5F4, 0xBFAD, 0xC5F5, 0x9E89, 0xC5F6, 0xBFAE, 0xC5F7, 0xBFAF,
+	0xC5F8, 0x9E8A, 0xC5F9, 0x9E8B, 0xC5FA, 0x9E8C, 0xC5FB, 0x9E8D,
+	0xC5FC, 0xBFB0, 0xC5FD, 0xBFB1, 0xC5FE, 0xBFB2, 0xC5FF, 0xBFB3,
+	0xC600, 0xBFB4, 0xC601, 0xBFB5, 0xC602, 0x9E8E, 0xC603, 0x9E8F,
+	0xC604, 0x9E90, 0xC605, 0xBFB6, 0xC606, 0xBFB7, 0xC607, 0xBFB8,
+	0xC608, 0xBFB9, 0xC609, 0x9E91, 0xC60A, 0x9E92, 0xC60B, 0x9E93,
+	0xC60C, 0xBFBA, 0xC60D, 0x9E94, 0xC60E, 0x9E95, 0xC60F, 0x9E96,
+	0xC610, 0xBFBB, 0xC611, 0x9E97, 0xC612, 0x9E98, 0xC613, 0x9E99,
+	0xC614, 0x9E9A, 0xC615, 0x9E9B, 0xC616, 0x9E9C, 0xC617, 0x9E9D,
+	0xC618, 0xBFBC, 0xC619, 0xBFBD, 0xC61A, 0x9E9E, 0xC61B, 0xBFBE,
+	0xC61C, 0xBFBF, 0xC61D, 0x9E9F, 0xC61E, 0x9EA0, 0xC61F, 0x9EA1,
+	0xC620, 0x9EA2, 0xC621, 0x9EA3, 0xC622, 0x9EA4, 0xC623, 0x9EA5,
+	0xC624, 0xBFC0, 0xC625, 0xBFC1, 0xC626, 0x9EA6, 0xC627, 0x9EA7,
+	0xC628, 0xBFC2, 0xC629, 0x9EA8, 0xC62A, 0x9EA9, 0xC62B, 0x9EAA,
+	0xC62C, 0xBFC3, 0xC62D, 0xBFC4, 0xC62E, 0xBFC5, 0xC62F, 0x9EAB,
+	0xC630, 0xBFC6, 0xC631, 0x9EAC, 0xC632, 0x9EAD, 0xC633, 0xBFC7,
+	0xC634, 0xBFC8, 0xC635, 0xBFC9, 0xC636, 0x9EAE, 0xC637, 0xBFCA,
+	0xC638, 0x9EAF, 0xC639, 0xBFCB, 0xC63A, 0x9EB0, 0xC63B, 0xBFCC,
+	0xC63C, 0x9EB1, 0xC63D, 0x9EB2, 0xC63E, 0x9EB3, 0xC63F, 0x9EB4,
+	0xC640, 0xBFCD, 0xC641, 0xBFCE, 0xC642, 0x9EB5, 0xC643, 0x9EB6,
+	0xC644, 0xBFCF, 0xC645, 0x9EB7, 0xC646, 0x9EB8, 0xC647, 0x9EB9,
+	0xC648, 0xBFD0, 0xC649, 0x9EBA, 0xC64A, 0x9EBB, 0xC64B, 0x9EBC,
+	0xC64C, 0x9EBD, 0xC64D, 0x9EBE, 0xC64E, 0x9EBF, 0xC64F, 0x9EC0,
+	0xC650, 0xBFD1, 0xC651, 0xBFD2, 0xC652, 0x9EC1, 0xC653, 0xBFD3,
+	0xC654, 0xBFD4, 0xC655, 0xBFD5, 0xC656, 0x9EC2, 0xC657, 0x9EC3,
+	0xC658, 0x9EC4, 0xC659, 0x9EC5, 0xC65A, 0x9EC6, 0xC65B, 0x9EC7,
+	0xC65C, 0xBFD6, 0xC65D, 0xBFD7, 0xC65E, 0x9EC8, 0xC65F, 0x9EC9,
+	0xC660, 0xBFD8, 0xC661, 0x9ECA, 0xC662, 0x9ECB, 0xC663, 0x9ECC,
+	0xC664, 0x9ECD, 0xC665, 0x9ECE, 0xC666, 0x9ECF, 0xC667, 0x9ED0,
+	0xC668, 0x9ED1, 0xC669, 0x9ED2, 0xC66A, 0x9ED3, 0xC66B, 0x9ED4,
+	0xC66C, 0xBFD9, 0xC66D, 0x9ED5, 0xC66E, 0x9ED6, 0xC66F, 0xBFDA,
+	0xC670, 0x9ED7, 0xC671, 0xBFDB, 0xC672, 0x9ED8, 0xC673, 0x9ED9,
+	0xC674, 0x9EDA, 0xC675, 0x9EDB, 0xC676, 0x9EDC, 0xC677, 0x9EDD,
+	0xC678, 0xBFDC, 0xC679, 0xBFDD, 0xC67A, 0x9EDE, 0xC67B, 0x9EDF,
+	0xC67C, 0xBFDE, 0xC67D, 0x9EE0, 0xC67E, 0x9EE1, 0xC67F, 0x9EE2,
+	0xC680, 0xBFDF, 0xC681, 0x9EE3, 0xC682, 0x9EE4, 0xC683, 0x9EE5,
+	0xC684, 0x9EE6, 0xC685, 0x9EE7, 0xC686, 0x9EE8, 0xC687, 0x9EE9,
+	0xC688, 0xBFE0, 0xC689, 0xBFE1, 0xC68A, 0x9EEA, 0xC68B, 0xBFE2,
+	0xC68C, 0x9EEB, 0xC68D, 0xBFE3, 0xC68E, 0x9EEC, 0xC68F, 0x9EED,
+	0xC690, 0x9EEE, 0xC691, 0x9EEF, 0xC692, 0x9EF0, 0xC693, 0x9EF1,
+	0xC694, 0xBFE4, 0xC695, 0xBFE5, 0xC696, 0x9EF2, 0xC697, 0x9EF3,
+	0xC698, 0xBFE6, 0xC699, 0x9EF4, 0xC69A, 0x9EF5, 0xC69B, 0x9EF6,
+	0xC69C, 0xBFE7, 0xC69D, 0x9EF7, 0xC69E, 0x9EF8, 0xC69F, 0x9EF9,
+	0xC6A0, 0x9EFA, 0xC6A1, 0x9EFB, 0xC6A2, 0x9EFC, 0xC6A3, 0x9EFD,
+	0xC6A4, 0xBFE8, 0xC6A5, 0xBFE9, 0xC6A6, 0x9EFE, 0xC6A7, 0xBFEA,
+	0xC6A8, 0x9F41, 0xC6A9, 0xBFEB, 0xC6AA, 0x9F42, 0xC6AB, 0x9F43,
+	0xC6AC, 0x9F44, 0xC6AD, 0x9F45, 0xC6AE, 0x9F46, 0xC6AF, 0x9F47,
+	0xC6B0, 0xBFEC, 0xC6B1, 0xBFED, 0xC6B2, 0x9F48, 0xC6B3, 0x9F49,
+	0xC6B4, 0xBFEE, 0xC6B5, 0x9F4A, 0xC6B6, 0x9F4B, 0xC6B7, 0x9F4C,
+	0xC6B8, 0xBFEF, 0xC6B9, 0xBFF0, 0xC6BA, 0xBFF1, 0xC6BB, 0x9F4D,
+	0xC6BC, 0x9F4E, 0xC6BD, 0x9F4F, 0xC6BE, 0x9F50, 0xC6BF, 0x9F51,
+	0xC6C0, 0xBFF2, 0xC6C1, 0xBFF3, 0xC6C2, 0x9F52, 0xC6C3, 0xBFF4,
+	0xC6C4, 0x9F53, 0xC6C5, 0xBFF5, 0xC6C6, 0x9F54, 0xC6C7, 0x9F55,
+	0xC6C8, 0x9F56, 0xC6C9, 0x9F57, 0xC6CA, 0x9F58, 0xC6CB, 0x9F59,
+	0xC6CC, 0xBFF6, 0xC6CD, 0xBFF7, 0xC6CE, 0x9F5A, 0xC6CF, 0x9F61,
+	0xC6D0, 0xBFF8, 0xC6D1, 0x9F62, 0xC6D2, 0x9F63, 0xC6D3, 0x9F64,
+	0xC6D4, 0xBFF9, 0xC6D5, 0x9F65, 0xC6D6, 0x9F66, 0xC6D7, 0x9F67,
+	0xC6D8, 0x9F68, 0xC6D9, 0x9F69, 0xC6DA, 0x9F6A, 0xC6DB, 0x9F6B,
+	0xC6DC, 0xBFFA, 0xC6DD, 0xBFFB, 0xC6DE, 0x9F6C, 0xC6DF, 0x9F6D,
+	0xC6E0, 0xBFFC, 0xC6E1, 0xBFFD, 0xC6E2, 0x9F6E, 0xC6E3, 0x9F6F,
+	0xC6E4, 0x9F70, 0xC6E5, 0x9F71, 0xC6E6, 0x9F72, 0xC6E7, 0x9F73,
+	0xC6E8, 0xBFFE, 0xC6E9, 0xC0A1, 0xC6EA, 0x9F74, 0xC6EB, 0x9F75,
+	0xC6EC, 0xC0A2, 0xC6ED, 0x9F76, 0xC6EE, 0x9F77, 0xC6EF, 0x9F78,
+	0xC6F0, 0xC0A3, 0xC6F1, 0x9F79, 0xC6F2, 0x9F7A, 0xC6F3, 0x9F81,
+	0xC6F4, 0x9F82, 0xC6F5, 0x9F83, 0xC6F6, 0x9F84, 0xC6F7, 0x9F85,
+	0xC6F8, 0xC0A4, 0xC6F9, 0xC0A5, 0xC6FA, 0x9F86, 0xC6FB, 0x9F87,
+	0xC6FC, 0x9F88, 0xC6FD, 0xC0A6, 0xC6FE, 0x9F89, 0xC6FF, 0x9F8A,
+	0xC700, 0x9F8B, 0xC701, 0x9F8C, 0xC702, 0x9F8D, 0xC703, 0x9F8E,
+	0xC704, 0xC0A7, 0xC705, 0xC0A8, 0xC706, 0x9F8F, 0xC707, 0x9F90,
+	0xC708, 0xC0A9, 0xC709, 0x9F91, 0xC70A, 0x9F92, 0xC70B, 0x9F93,
+	0xC70C, 0xC0AA, 0xC70D, 0x9F94, 0xC70E, 0x9F95, 0xC70F, 0x9F96,
+	0xC710, 0x9F97, 0xC711, 0x9F98, 0xC712, 0x9F99, 0xC713, 0x9F9A,
+	0xC714, 0xC0AB, 0xC715, 0xC0AC, 0xC716, 0x9F9B, 0xC717, 0xC0AD,
+	0xC718, 0x9F9C, 0xC719, 0xC0AE, 0xC71A, 0x9F9D, 0xC71B, 0x9F9E,
+	0xC71C, 0x9F9F, 0xC71D, 0x9FA0, 0xC71E, 0x9FA1, 0xC71F, 0x9FA2,
+	0xC720, 0xC0AF, 0xC721, 0xC0B0, 0xC722, 0x9FA3, 0xC723, 0x9FA4,
+	0xC724, 0xC0B1, 0xC725, 0x9FA5, 0xC726, 0x9FA6, 0xC727, 0x9FA7,
+	0xC728, 0xC0B2, 0xC729, 0x9FA8, 0xC72A, 0x9FA9, 0xC72B, 0x9FAA,
+	0xC72C, 0x9FAB, 0xC72D, 0x9FAC, 0xC72E, 0x9FAD, 0xC72F, 0x9FAE,
+	0xC730, 0xC0B3, 0xC731, 0xC0B4, 0xC732, 0x9FAF, 0xC733, 0xC0B5,
+	0xC734, 0x9FB0, 0xC735, 0xC0B6, 0xC736, 0x9FB1, 0xC737, 0xC0B7,
+	0xC738, 0x9FB2, 0xC739, 0x9FB3, 0xC73A, 0x9FB4, 0xC73B, 0x9FB5,
+	0xC73C, 0xC0B8, 0xC73D, 0xC0B9, 0xC73E, 0x9FB6, 0xC73F, 0x9FB7,
+	0xC740, 0xC0BA, 0xC741, 0x9FB8, 0xC742, 0x9FB9, 0xC743, 0x9FBA,
+	0xC744, 0xC0BB, 0xC745, 0x9FBB, 0xC746, 0x9FBC, 0xC747, 0x9FBD,
+	0xC748, 0x9FBE, 0xC749, 0x9FBF, 0xC74A, 0xC0BC, 0xC74B, 0x9FC0,
+	0xC74C, 0xC0BD, 0xC74D, 0xC0BE, 0xC74E, 0x9FC1, 0xC74F, 0xC0BF,
+	0xC750, 0x9FC2, 0xC751, 0xC0C0, 0xC752, 0xC0C1, 0xC753, 0xC0C2,
+	0xC754, 0xC0C3, 0xC755, 0xC0C4, 0xC756, 0xC0C5, 0xC757, 0xC0C6,
+	0xC758, 0xC0C7, 0xC759, 0x9FC3, 0xC75A, 0x9FC4, 0xC75B, 0x9FC5,
+	0xC75C, 0xC0C8, 0xC75D, 0x9FC6, 0xC75E, 0x9FC7, 0xC75F, 0x9FC8,
+	0xC760, 0xC0C9, 0xC761, 0x9FC9, 0xC762, 0x9FCA, 0xC763, 0x9FCB,
+	0xC764, 0x9FCC, 0xC765, 0x9FCD, 0xC766, 0x9FCE, 0xC767, 0x9FCF,
+	0xC768, 0xC0CA, 0xC769, 0x9FD0, 0xC76A, 0x9FD1, 0xC76B, 0xC0CB,
+	0xC76C, 0x9FD2, 0xC76D, 0x9FD3, 0xC76E, 0x9FD4, 0xC76F, 0x9FD5,
+	0xC770, 0x9FD6, 0xC771, 0x9FD7, 0xC772, 0x9FD8, 0xC773, 0x9FD9,
+	0xC774, 0xC0CC, 0xC775, 0xC0CD, 0xC776, 0x9FDA, 0xC777, 0x9FDB,
+	0xC778, 0xC0CE, 0xC779, 0x9FDC, 0xC77A, 0x9FDD, 0xC77B, 0x9FDE,
+	0xC77C, 0xC0CF, 0xC77D, 0xC0D0, 0xC77E, 0xC0D1, 0xC77F, 0x9FDF,
+	0xC780, 0x9FE0, 0xC781, 0x9FE1, 0xC782, 0x9FE2, 0xC783, 0xC0D2,
+	0xC784, 0xC0D3, 0xC785, 0xC0D4, 0xC786, 0x9FE3, 0xC787, 0xC0D5,
+	0xC788, 0xC0D6, 0xC789, 0xC0D7, 0xC78A, 0xC0D8, 0xC78B, 0x9FE4,
+	0xC78C, 0x9FE5, 0xC78D, 0x9FE6, 0xC78E, 0xC0D9, 0xC78F, 0x9FE7,
+	0xC790, 0xC0DA, 0xC791, 0xC0DB, 0xC792, 0x9FE8, 0xC793, 0x9FE9,
+	0xC794, 0xC0DC, 0xC795, 0x9FEA, 0xC796, 0xC0DD, 0xC797, 0xC0DE,
+	0xC798, 0xC0DF, 0xC799, 0x9FEB, 0xC79A, 0xC0E0, 0xC79B, 0x9FEC,
+	0xC79C, 0x9FED, 0xC79D, 0x9FEE, 0xC79E, 0x9FEF, 0xC79F, 0x9FF0,
+	0xC7A0, 0xC0E1, 0xC7A1, 0xC0E2, 0xC7A2, 0x9FF1, 0xC7A3, 0xC0E3,
+	0xC7A4, 0xC0E4, 0xC7A5, 0xC0E5, 0xC7A6, 0xC0E6, 0xC7A7, 0x9FF2,
+	0xC7A8, 0x9FF3, 0xC7A9, 0x9FF4, 0xC7AA, 0x9FF5, 0xC7AB, 0x9FF6,
+	0xC7AC, 0xC0E7, 0xC7AD, 0xC0E8, 0xC7AE, 0x9FF7, 0xC7AF, 0x9FF8,
+	0xC7B0, 0xC0E9, 0xC7B1, 0x9FF9, 0xC7B2, 0x9FFA, 0xC7B3, 0x9FFB,
+	0xC7B4, 0xC0EA, 0xC7B5, 0x9FFC, 0xC7B6, 0x9FFD, 0xC7B7, 0x9FFE,
+	0xC7B8, 0xA041, 0xC7B9, 0xA042, 0xC7BA, 0xA043, 0xC7BB, 0xA044,
+	0xC7BC, 0xC0EB, 0xC7BD, 0xC0EC, 0xC7BE, 0xA045, 0xC7BF, 0xC0ED,
+	0xC7C0, 0xC0EE, 0xC7C1, 0xC0EF, 0xC7C2, 0xA046, 0xC7C3, 0xA047,
+	0xC7C4, 0xA048, 0xC7C5, 0xA049, 0xC7C6, 0xA04A, 0xC7C7, 0xA04B,
+	0xC7C8, 0xC0F0, 0xC7C9, 0xC0F1, 0xC7CA, 0xA04C, 0xC7CB, 0xA04D,
+	0xC7CC, 0xC0F2, 0xC7CD, 0xA04E, 0xC7CE, 0xC0F3, 0xC7CF, 0xA04F,
+	0xC7D0, 0xC0F4, 0xC7D1, 0xA050, 0xC7D2, 0xA051, 0xC7D3, 0xA052,
+	0xC7D4, 0xA053, 0xC7D5, 0xA054, 0xC7D6, 0xA055, 0xC7D7, 0xA056,
+	0xC7D8, 0xC0F5, 0xC7D9, 0xA057, 0xC7DA, 0xA058, 0xC7DB, 0xA059,
+	0xC7DC, 0xA05A, 0xC7DD, 0xC0F6, 0xC7DE, 0xA061, 0xC7DF, 0xA062,
+	0xC7E0, 0xA063, 0xC7E1, 0xA064, 0xC7E2, 0xA065, 0xC7E3, 0xA066,
+	0xC7E4, 0xC0F7, 0xC7E5, 0xA067, 0xC7E6, 0xA068, 0xC7E7, 0xA069,
+	0xC7E8, 0xC0F8, 0xC7E9, 0xA06A, 0xC7EA, 0xA06B, 0xC7EB, 0xA06C,
+	0xC7EC, 0xC0F9, 0xC7ED, 0xA06D, 0xC7EE, 0xA06E, 0xC7EF, 0xA06F,
+	0xC7F0, 0xA070, 0xC7F1, 0xA071, 0xC7F2, 0xA072, 0xC7F3, 0xA073,
+	0xC7F4, 0xA074, 0xC7F5, 0xA075, 0xC7F6, 0xA076, 0xC7F7, 0xA077,
+	0xC7F8, 0xA078, 0xC7F9, 0xA079, 0xC7FA, 0xA07A, 0xC7FB, 0xA081,
+	0xC7FC, 0xA082, 0xC7FD, 0xA083, 0xC7FE, 0xA084, 0xC7FF, 0xA085,
+	0xC800, 0xC0FA, 0xC801, 0xC0FB, 0xC802, 0xA086, 0xC803, 0xA087,
+	0xC804, 0xC0FC, 0xC805, 0xA088, 0xC806, 0xA089, 0xC807, 0xA08A,
+	0xC808, 0xC0FD, 0xC809, 0xA08B, 0xC80A, 0xC0FE, 0xC80B, 0xA08C,
+	0xC80C, 0xA08D, 0xC80D, 0xA08E, 0xC80E, 0xA08F, 0xC80F, 0xA090,
+	0xC810, 0xC1A1, 0xC811, 0xC1A2, 0xC812, 0xA091, 0xC813, 0xC1A3,
+	0xC814, 0xA092, 0xC815, 0xC1A4, 0xC816, 0xC1A5, 0xC817, 0xA093,
+	0xC818, 0xA094, 0xC819, 0xA095, 0xC81A, 0xA096, 0xC81B, 0xA097,
+	0xC81C, 0xC1A6, 0xC81D, 0xC1A7, 0xC81E, 0xA098, 0xC81F, 0xA099,
+	0xC820, 0xC1A8, 0xC821, 0xA09A, 0xC822, 0xA09B, 0xC823, 0xA09C,
+	0xC824, 0xC1A9, 0xC825, 0xA09D, 0xC826, 0xA09E, 0xC827, 0xA09F,
+	0xC828, 0xA0A0, 0xC829, 0xA0A1, 0xC82A, 0xA0A2, 0xC82B, 0xA0A3,
+	0xC82C, 0xC1AA, 0xC82D, 0xC1AB, 0xC82E, 0xA0A4, 0xC82F, 0xC1AC,
+	0xC830, 0xA0A5, 0xC831, 0xC1AD, 0xC832, 0xA0A6, 0xC833, 0xA0A7,
+	0xC834, 0xA0A8, 0xC835, 0xA0A9, 0xC836, 0xA0AA, 0xC837, 0xA0AB,
+	0xC838, 0xC1AE, 0xC839, 0xA0AC, 0xC83A, 0xA0AD, 0xC83B, 0xA0AE,
+	0xC83C, 0xC1AF, 0xC83D, 0xA0AF, 0xC83E, 0xA0B0, 0xC83F, 0xA0B1,
+	0xC840, 0xC1B0, 0xC841, 0xA0B2, 0xC842, 0xA0B3, 0xC843, 0xA0B4,
+	0xC844, 0xA0B5, 0xC845, 0xA0B6, 0xC846, 0xA0B7, 0xC847, 0xA0B8,
+	0xC848, 0xC1B1, 0xC849, 0xC1B2, 0xC84A, 0xA0B9, 0xC84B, 0xA0BA,
+	0xC84C, 0xC1B3, 0xC84D, 0xC1B4, 0xC84E, 0xA0BB, 0xC84F, 0xA0BC,
+	0xC850, 0xA0BD, 0xC851, 0xA0BE, 0xC852, 0xA0BF, 0xC853, 0xA0C0,
+	0xC854, 0xC1B5, 0xC855, 0xA0C1, 0xC856, 0xA0C2, 0xC857, 0xA0C3,
+	0xC858, 0xA0C4, 0xC859, 0xA0C5, 0xC85A, 0xA0C6, 0xC85B, 0xA0C7,
+	0xC85C, 0xA0C8, 0xC85D, 0xA0C9, 0xC85E, 0xA0CA, 0xC85F, 0xA0CB,
+	0xC860, 0xA0CC, 0xC861, 0xA0CD, 0xC862, 0xA0CE, 0xC863, 0xA0CF,
+	0xC864, 0xA0D0, 0xC865, 0xA0D1, 0xC866, 0xA0D2, 0xC867, 0xA0D3,
+	0xC868, 0xA0D4, 0xC869, 0xA0D5, 0xC86A, 0xA0D6, 0xC86B, 0xA0D7,
+	0xC86C, 0xA0D8, 0xC86D, 0xA0D9, 0xC86E, 0xA0DA, 0xC86F, 0xA0DB,
+	0xC870, 0xC1B6, 0xC871, 0xC1B7, 0xC872, 0xA0DC, 0xC873, 0xA0DD,
+	0xC874, 0xC1B8, 0xC875, 0xA0DE, 0xC876, 0xA0DF, 0xC877, 0xA0E0,
+	0xC878, 0xC1B9, 0xC879, 0xA0E1, 0xC87A, 0xC1BA, 0xC87B, 0xA0E2,
+	0xC87C, 0xA0E3, 0xC87D, 0xA0E4, 0xC87E, 0xA0E5, 0xC87F, 0xA0E6,
+	0xC880, 0xC1BB, 0xC881, 0xC1BC, 0xC882, 0xA0E7, 0xC883, 0xC1BD,
+	0xC884, 0xA0E8, 0xC885, 0xC1BE, 0xC886, 0xC1BF, 0xC887, 0xC1C0,
+	0xC888, 0xA0E9, 0xC889, 0xA0EA, 0xC88A, 0xA0EB, 0xC88B, 0xC1C1,
+	0xC88C, 0xC1C2, 0xC88D, 0xC1C3, 0xC88E, 0xA0EC, 0xC88F, 0xA0ED,
+	0xC890, 0xA0EE, 0xC891, 0xA0EF, 0xC892, 0xA0F0, 0xC893, 0xA0F1,
+	0xC894, 0xC1C4, 0xC895, 0xA0F2, 0xC896, 0xA0F3, 0xC897, 0xA0F4,
+	0xC898, 0xA0F5, 0xC899, 0xA0F6, 0xC89A, 0xA0F7, 0xC89B, 0xA0F8,
+	0xC89C, 0xA0F9, 0xC89D, 0xC1C5, 0xC89E, 0xA0FA, 0xC89F, 0xC1C6,
+	0xC8A0, 0xA0FB, 0xC8A1, 0xC1C7, 0xC8A2, 0xA0FC, 0xC8A3, 0xA0FD,
+	0xC8A4, 0xA0FE, 0xC8A5, 0xA141, 0xC8A6, 0xA142, 0xC8A7, 0xA143,
+	0xC8A8, 0xC1C8, 0xC8A9, 0xA144, 0xC8AA, 0xA145, 0xC8AB, 0xA146,
+	0xC8AC, 0xA147, 0xC8AD, 0xA148, 0xC8AE, 0xA149, 0xC8AF, 0xA14A,
+	0xC8B0, 0xA14B, 0xC8B1, 0xA14C, 0xC8B2, 0xA14D, 0xC8B3, 0xA14E,
+	0xC8B4, 0xA14F, 0xC8B5, 0xA150, 0xC8B6, 0xA151, 0xC8B7, 0xA152,
+	0xC8B8, 0xA153, 0xC8B9, 0xA154, 0xC8BA, 0xA155, 0xC8BB, 0xA156,
+	0xC8BC, 0xC1C9, 0xC8BD, 0xC1CA, 0xC8BE, 0xA157, 0xC8BF, 0xA158,
+	0xC8C0, 0xA159, 0xC8C1, 0xA15A, 0xC8C2, 0xA161, 0xC8C3, 0xA162,
+	0xC8C4, 0xC1CB, 0xC8C5, 0xA163, 0xC8C6, 0xA164, 0xC8C7, 0xA165,
+	0xC8C8, 0xC1CC, 0xC8C9, 0xA166, 0xC8CA, 0xA167, 0xC8CB, 0xA168,
+	0xC8CC, 0xC1CD, 0xC8CD, 0xA169, 0xC8CE, 0xA16A, 0xC8CF, 0xA16B,
+	0xC8D0, 0xA16C, 0xC8D1, 0xA16D, 0xC8D2, 0xA16E, 0xC8D3, 0xA16F,
+	0xC8D4, 0xC1CE, 0xC8D5, 0xC1CF, 0xC8D6, 0xA170, 0xC8D7, 0xC1D0,
+	0xC8D8, 0xA171, 0xC8D9, 0xC1D1, 0xC8DA, 0xA172, 0xC8DB, 0xA173,
+	0xC8DC, 0xA174, 0xC8DD, 0xA175, 0xC8DE, 0xA176, 0xC8DF, 0xA177,
+	0xC8E0, 0xC1D2, 0xC8E1, 0xC1D3, 0xC8E2, 0xA178, 0xC8E3, 0xA179,
+	0xC8E4, 0xC1D4, 0xC8E5, 0xA17A, 0xC8E6, 0xA181, 0xC8E7, 0xA182,
+	0xC8E8, 0xA183, 0xC8E9, 0xA184, 0xC8EA, 0xA185, 0xC8EB, 0xA186,
+	0xC8EC, 0xA187, 0xC8ED, 0xA188, 0xC8EE, 0xA189, 0xC8EF, 0xA18A,
+	0xC8F0, 0xA18B, 0xC8F1, 0xA18C, 0xC8F2, 0xA18D, 0xC8F3, 0xA18E,
+	0xC8F4, 0xA18F, 0xC8F5, 0xC1D5, 0xC8F6, 0xA190, 0xC8F7, 0xA191,
+	0xC8F8, 0xA192, 0xC8F9, 0xA193, 0xC8FA, 0xA194, 0xC8FB, 0xA195,
+	0xC8FC, 0xC1D6, 0xC8FD, 0xC1D7, 0xC8FE, 0xA196, 0xC8FF, 0xA197,
+	0xC900, 0xC1D8, 0xC901, 0xA198, 0xC902, 0xA199, 0xC903, 0xA19A,
+	0xC904, 0xC1D9, 0xC905, 0xC1DA, 0xC906, 0xC1DB, 0xC907, 0xA19B,
+	0xC908, 0xA19C, 0xC909, 0xA19D, 0xC90A, 0xA19E, 0xC90B, 0xA19F,
+	0xC90C, 0xC1DC, 0xC90D, 0xC1DD, 0xC90E, 0xA1A0, 0xC90F, 0xC1DE,
+	0xC910, 0xA241, 0xC911, 0xC1DF, 0xC912, 0xA242, 0xC913, 0xA243,
+	0xC914, 0xA244, 0xC915, 0xA245, 0xC916, 0xA246, 0xC917, 0xA247,
+	0xC918, 0xC1E0, 0xC919, 0xA248, 0xC91A, 0xA249, 0xC91B, 0xA24A,
+	0xC91C, 0xA24B, 0xC91D, 0xA24C, 0xC91E, 0xA24D, 0xC91F, 0xA24E,
+	0xC920, 0xA24F, 0xC921, 0xA250, 0xC922, 0xA251, 0xC923, 0xA252,
+	0xC924, 0xA253, 0xC925, 0xA254, 0xC926, 0xA255, 0xC927, 0xA256,
+	0xC928, 0xA257, 0xC929, 0xA258, 0xC92A, 0xA259, 0xC92B, 0xA25A,
+	0xC92C, 0xC1E1, 0xC92D, 0xA261, 0xC92E, 0xA262, 0xC92F, 0xA263,
+	0xC930, 0xA264, 0xC931, 0xA265, 0xC932, 0xA266, 0xC933, 0xA267,
+	0xC934, 0xC1E2, 0xC935, 0xA268, 0xC936, 0xA269, 0xC937, 0xA26A,
+	0xC938, 0xA26B, 0xC939, 0xA26C, 0xC93A, 0xA26D, 0xC93B, 0xA26E,
+	0xC93C, 0xA26F, 0xC93D, 0xA270, 0xC93E, 0xA271, 0xC93F, 0xA272,
+	0xC940, 0xA273, 0xC941, 0xA274, 0xC942, 0xA275, 0xC943, 0xA276,
+	0xC944, 0xA277, 0xC945, 0xA278, 0xC946, 0xA279, 0xC947, 0xA27A,
+	0xC948, 0xA281, 0xC949, 0xA282, 0xC94A, 0xA283, 0xC94B, 0xA284,
+	0xC94C, 0xA285, 0xC94D, 0xA286, 0xC94E, 0xA287, 0xC94F, 0xA288,
+	0xC950, 0xC1E3, 0xC951, 0xC1E4, 0xC952, 0xA289, 0xC953, 0xA28A,
+	0xC954, 0xC1E5, 0xC955, 0xA28B, 0xC956, 0xA28C, 0xC957, 0xA28D,
+	0xC958, 0xC1E6, 0xC959, 0xA28E, 0xC95A, 0xA28F, 0xC95B, 0xA290,
+	0xC95C, 0xA291, 0xC95D, 0xA292, 0xC95E, 0xA293, 0xC95F, 0xA294,
+	0xC960, 0xC1E7, 0xC961, 0xC1E8, 0xC962, 0xA295, 0xC963, 0xC1E9,
+	0xC964, 0xA296, 0xC965, 0xA297, 0xC966, 0xA298, 0xC967, 0xA299,
+	0xC968, 0xA29A, 0xC969, 0xA29B, 0xC96A, 0xA29C, 0xC96B, 0xA29D,
+	0xC96C, 0xC1EA, 0xC96D, 0xA29E, 0xC96E, 0xA29F, 0xC96F, 0xA2A0,
+	0xC970, 0xC1EB, 0xC971, 0xA341, 0xC972, 0xA342, 0xC973, 0xA343,
+	0xC974, 0xC1EC, 0xC975, 0xA344, 0xC976, 0xA345, 0xC977, 0xA346,
+	0xC978, 0xA347, 0xC979, 0xA348, 0xC97A, 0xA349, 0xC97B, 0xA34A,
+	0xC97C, 0xC1ED, 0xC97D, 0xA34B, 0xC97E, 0xA34C, 0xC97F, 0xA34D,
+	0xC980, 0xA34E, 0xC981, 0xA34F, 0xC982, 0xA350, 0xC983, 0xA351,
+	0xC984, 0xA352, 0xC985, 0xA353, 0xC986, 0xA354, 0xC987, 0xA355,
+	0xC988, 0xC1EE, 0xC989, 0xC1EF, 0xC98A, 0xA356, 0xC98B, 0xA357,
+	0xC98C, 0xC1F0, 0xC98D, 0xA358, 0xC98E, 0xA359, 0xC98F, 0xA35A,
+	0xC990, 0xC1F1, 0xC991, 0xA361, 0xC992, 0xA362, 0xC993, 0xA363,
+	0xC994, 0xA364, 0xC995, 0xA365, 0xC996, 0xA366, 0xC997, 0xA367,
+	0xC998, 0xC1F2, 0xC999, 0xC1F3, 0xC99A, 0xA368, 0xC99B, 0xC1F4,
+	0xC99C, 0xA369, 0xC99D, 0xC1F5, 0xC99E, 0xA36A, 0xC99F, 0xA36B,
+	0xC9A0, 0xA36C, 0xC9A1, 0xA36D, 0xC9A2, 0xA36E, 0xC9A3, 0xA36F,
+	0xC9A4, 0xA370, 0xC9A5, 0xA371, 0xC9A6, 0xA372, 0xC9A7, 0xA373,
+	0xC9A8, 0xA374, 0xC9A9, 0xA375, 0xC9AA, 0xA376, 0xC9AB, 0xA377,
+	0xC9AC, 0xA378, 0xC9AD, 0xA379, 0xC9AE, 0xA37A, 0xC9AF, 0xA381,
+	0xC9B0, 0xA382, 0xC9B1, 0xA383, 0xC9B2, 0xA384, 0xC9B3, 0xA385,
+	0xC9B4, 0xA386, 0xC9B5, 0xA387, 0xC9B6, 0xA388, 0xC9B7, 0xA389,
+	0xC9B8, 0xA38A, 0xC9B9, 0xA38B, 0xC9BA, 0xA38C, 0xC9BB, 0xA38D,
+	0xC9BC, 0xA38E, 0xC9BD, 0xA38F, 0xC9BE, 0xA390, 0xC9BF, 0xA391,
+	0xC9C0, 0xC1F6, 0xC9C1, 0xC1F7, 0xC9C2, 0xA392, 0xC9C3, 0xA393,
+	0xC9C4, 0xC1F8, 0xC9C5, 0xA394, 0xC9C6, 0xA395, 0xC9C7, 0xC1F9,
+	0xC9C8, 0xC1FA, 0xC9C9, 0xA396, 0xC9CA, 0xC1FB, 0xC9CB, 0xA397,
+	0xC9CC, 0xA398, 0xC9CD, 0xA399, 0xC9CE, 0xA39A, 0xC9CF, 0xA39B,
+	0xC9D0, 0xC1FC, 0xC9D1, 0xC1FD, 0xC9D2, 0xA39C, 0xC9D3, 0xC1FE,
+	0xC9D4, 0xA39D, 0xC9D5, 0xC2A1, 0xC9D6, 0xC2A2, 0xC9D7, 0xA39E,
+	0xC9D8, 0xA39F, 0xC9D9, 0xC2A3, 0xC9DA, 0xC2A4, 0xC9DB, 0xA3A0,
+	0xC9DC, 0xC2A5, 0xC9DD, 0xC2A6, 0xC9DE, 0xA441, 0xC9DF, 0xA442,
+	0xC9E0, 0xC2A7, 0xC9E1, 0xA443, 0xC9E2, 0xC2A8, 0xC9E3, 0xA444,
+	0xC9E4, 0xC2A9, 0xC9E5, 0xA445, 0xC9E6, 0xA446, 0xC9E7, 0xC2AA,
+	0xC9E8, 0xA447, 0xC9E9, 0xA448, 0xC9EA, 0xA449, 0xC9EB, 0xA44A,
+	0xC9EC, 0xC2AB, 0xC9ED, 0xC2AC, 0xC9EE, 0xA44B, 0xC9EF, 0xC2AD,
+	0xC9F0, 0xC2AE, 0xC9F1, 0xC2AF, 0xC9F2, 0xA44C, 0xC9F3, 0xA44D,
+	0xC9F4, 0xA44E, 0xC9F5, 0xA44F, 0xC9F6, 0xA450, 0xC9F7, 0xA451,
+	0xC9F8, 0xC2B0, 0xC9F9, 0xC2B1, 0xC9FA, 0xA452, 0xC9FB, 0xA453,
+	0xC9FC, 0xC2B2, 0xC9FD, 0xA454, 0xC9FE, 0xA455, 0xC9FF, 0xA456,
+	0xCA00, 0xC2B3, 0xCA01, 0xA457, 0xCA02, 0xA458, 0xCA03, 0xA459,
+	0xCA04, 0xA45A, 0xCA05, 0xA461, 0xCA06, 0xA462, 0xCA07, 0xA463,
+	0xCA08, 0xC2B4, 0xCA09, 0xC2B5, 0xCA0A, 0xA464, 0xCA0B, 0xC2B6,
+	0xCA0C, 0xC2B7, 0xCA0D, 0xC2B8, 0xCA0E, 0xA465, 0xCA0F, 0xA466,
+	0xCA10, 0xA467, 0xCA11, 0xA468, 0xCA12, 0xA469, 0xCA13, 0xA46A,
+	0xCA14, 0xC2B9, 0xCA15, 0xA46B, 0xCA16, 0xA46C, 0xCA17, 0xA46D,
+	0xCA18, 0xC2BA, 0xCA19, 0xA46E, 0xCA1A, 0xA46F, 0xCA1B, 0xA470,
+	0xCA1C, 0xA471, 0xCA1D, 0xA472, 0xCA1E, 0xA473, 0xCA1F, 0xA474,
+	0xCA20, 0xA475, 0xCA21, 0xA476, 0xCA22, 0xA477, 0xCA23, 0xA478,
+	0xCA24, 0xA479, 0xCA25, 0xA47A, 0xCA26, 0xA481, 0xCA27, 0xA482,
+	0xCA28, 0xA483, 0xCA29, 0xC2BB, 0xCA2A, 0xA484, 0xCA2B, 0xA485,
+	0xCA2C, 0xA486, 0xCA2D, 0xA487, 0xCA2E, 0xA488, 0xCA2F, 0xA489,
+	0xCA30, 0xA48A, 0xCA31, 0xA48B, 0xCA32, 0xA48C, 0xCA33, 0xA48D,
+	0xCA34, 0xA48E, 0xCA35, 0xA48F, 0xCA36, 0xA490, 0xCA37, 0xA491,
+	0xCA38, 0xA492, 0xCA39, 0xA493, 0xCA3A, 0xA494, 0xCA3B, 0xA495,
+	0xCA3C, 0xA496, 0xCA3D, 0xA497, 0xCA3E, 0xA498, 0xCA3F, 0xA499,
+	0xCA40, 0xA49A, 0xCA41, 0xA49B, 0xCA42, 0xA49C, 0xCA43, 0xA49D,
+	0xCA44, 0xA49E, 0xCA45, 0xA49F, 0xCA46, 0xA4A0, 0xCA47, 0xA541,
+	0xCA48, 0xA542, 0xCA49, 0xA543, 0xCA4A, 0xA544, 0xCA4B, 0xA545,
+	0xCA4C, 0xC2BC, 0xCA4D, 0xC2BD, 0xCA4E, 0xA546, 0xCA4F, 0xA547,
+	0xCA50, 0xC2BE, 0xCA51, 0xA548, 0xCA52, 0xA549, 0xCA53, 0xA54A,
+	0xCA54, 0xC2BF, 0xCA55, 0xA54B, 0xCA56, 0xA54C, 0xCA57, 0xA54D,
+	0xCA58, 0xA54E, 0xCA59, 0xA54F, 0xCA5A, 0xA550, 0xCA5B, 0xA551,
+	0xCA5C, 0xC2C0, 0xCA5D, 0xC2C1, 0xCA5E, 0xA552, 0xCA5F, 0xC2C2,
+	0xCA60, 0xC2C3, 0xCA61, 0xC2C4, 0xCA62, 0xA553, 0xCA63, 0xA554,
+	0xCA64, 0xA555, 0xCA65, 0xA556, 0xCA66, 0xA557, 0xCA67, 0xA558,
+	0xCA68, 0xC2C5, 0xCA69, 0xA559, 0xCA6A, 0xA55A, 0xCA6B, 0xA561,
+	0xCA6C, 0xA562, 0xCA6D, 0xA563, 0xCA6E, 0xA564, 0xCA6F, 0xA565,
+	0xCA70, 0xA566, 0xCA71, 0xA567, 0xCA72, 0xA568, 0xCA73, 0xA569,
+	0xCA74, 0xA56A, 0xCA75, 0xA56B, 0xCA76, 0xA56C, 0xCA77, 0xA56D,
+	0xCA78, 0xA56E, 0xCA79, 0xA56F, 0xCA7A, 0xA570, 0xCA7B, 0xA571,
+	0xCA7C, 0xA572, 0xCA7D, 0xC2C6, 0xCA7E, 0xA573, 0xCA7F, 0xA574,
+	0xCA80, 0xA575, 0xCA81, 0xA576, 0xCA82, 0xA577, 0xCA83, 0xA578,
+	0xCA84, 0xC2C7, 0xCA85, 0xA579, 0xCA86, 0xA57A, 0xCA87, 0xA581,
+	0xCA88, 0xA582, 0xCA89, 0xA583, 0xCA8A, 0xA584, 0xCA8B, 0xA585,
+	0xCA8C, 0xA586, 0xCA8D, 0xA587, 0xCA8E, 0xA588, 0xCA8F, 0xA589,
+	0xCA90, 0xA58A, 0xCA91, 0xA58B, 0xCA92, 0xA58C, 0xCA93, 0xA58D,
+	0xCA94, 0xA58E, 0xCA95, 0xA58F, 0xCA96, 0xA590, 0xCA97, 0xA591,
+	0xCA98, 0xC2C8, 0xCA99, 0xA592, 0xCA9A, 0xA593, 0xCA9B, 0xA594,
+	0xCA9C, 0xA595, 0xCA9D, 0xA596, 0xCA9E, 0xA597, 0xCA9F, 0xA598,
+	0xCAA0, 0xA599, 0xCAA1, 0xA59A, 0xCAA2, 0xA59B, 0xCAA3, 0xA59C,
+	0xCAA4, 0xA59D, 0xCAA5, 0xA59E, 0xCAA6, 0xA59F, 0xCAA7, 0xA5A0,
+	0xCAA8, 0xA641, 0xCAA9, 0xA642, 0xCAAA, 0xA643, 0xCAAB, 0xA644,
+	0xCAAC, 0xA645, 0xCAAD, 0xA646, 0xCAAE, 0xA647, 0xCAAF, 0xA648,
+	0xCAB0, 0xA649, 0xCAB1, 0xA64A, 0xCAB2, 0xA64B, 0xCAB3, 0xA64C,
+	0xCAB4, 0xA64D, 0xCAB5, 0xA64E, 0xCAB6, 0xA64F, 0xCAB7, 0xA650,
+	0xCAB8, 0xA651, 0xCAB9, 0xA652, 0xCABA, 0xA653, 0xCABB, 0xA654,
+	0xCABC, 0xC2C9, 0xCABD, 0xC2CA, 0xCABE, 0xA655, 0xCABF, 0xA656,
+	0xCAC0, 0xC2CB, 0xCAC1, 0xA657, 0xCAC2, 0xA658, 0xCAC3, 0xA659,
+	0xCAC4, 0xC2CC, 0xCAC5, 0xA65A, 0xCAC6, 0xA661, 0xCAC7, 0xA662,
+	0xCAC8, 0xA663, 0xCAC9, 0xA664, 0xCACA, 0xA665, 0xCACB, 0xA666,
+	0xCACC, 0xC2CD, 0xCACD, 0xC2CE, 0xCACE, 0xA667, 0xCACF, 0xC2CF,
+	0xCAD0, 0xA668, 0xCAD1, 0xC2D0, 0xCAD2, 0xA669, 0xCAD3, 0xC2D1,
+	0xCAD4, 0xA66A, 0xCAD5, 0xA66B, 0xCAD6, 0xA66C, 0xCAD7, 0xA66D,
+	0xCAD8, 0xC2D2, 0xCAD9, 0xC2D3, 0xCADA, 0xA66E, 0xCADB, 0xA66F,
+	0xCADC, 0xA670, 0xCADD, 0xA671, 0xCADE, 0xA672, 0xCADF, 0xA673,
+	0xCAE0, 0xC2D4, 0xCAE1, 0xA674, 0xCAE2, 0xA675, 0xCAE3, 0xA676,
+	0xCAE4, 0xA677, 0xCAE5, 0xA678, 0xCAE6, 0xA679, 0xCAE7, 0xA67A,
+	0xCAE8, 0xA681, 0xCAE9, 0xA682, 0xCAEA, 0xA683, 0xCAEB, 0xA684,
+	0xCAEC, 0xC2D5, 0xCAED, 0xA685, 0xCAEE, 0xA686, 0xCAEF, 0xA687,
+	0xCAF0, 0xA688, 0xCAF1, 0xA689, 0xCAF2, 0xA68A, 0xCAF3, 0xA68B,
+	0xCAF4, 0xC2D6, 0xCAF5, 0xA68C, 0xCAF6, 0xA68D, 0xCAF7, 0xA68E,
+	0xCAF8, 0xA68F, 0xCAF9, 0xA690, 0xCAFA, 0xA691, 0xCAFB, 0xA692,
+	0xCAFC, 0xA693, 0xCAFD, 0xA694, 0xCAFE, 0xA695, 0xCAFF, 0xA696,
+	0xCB00, 0xA697, 0xCB01, 0xA698, 0xCB02, 0xA699, 0xCB03, 0xA69A,
+	0xCB04, 0xA69B, 0xCB05, 0xA69C, 0xCB06, 0xA69D, 0xCB07, 0xA69E,
+	0xCB08, 0xC2D7, 0xCB09, 0xA69F, 0xCB0A, 0xA6A0, 0xCB0B, 0xA741,
+	0xCB0C, 0xA742, 0xCB0D, 0xA743, 0xCB0E, 0xA744, 0xCB0F, 0xA745,
+	0xCB10, 0xC2D8, 0xCB11, 0xA746, 0xCB12, 0xA747, 0xCB13, 0xA748,
+	0xCB14, 0xC2D9, 0xCB15, 0xA749, 0xCB16, 0xA74A, 0xCB17, 0xA74B,
+	0xCB18, 0xC2DA, 0xCB19, 0xA74C, 0xCB1A, 0xA74D, 0xCB1B, 0xA74E,
+	0xCB1C, 0xA74F, 0xCB1D, 0xA750, 0xCB1E, 0xA751, 0xCB1F, 0xA752,
+	0xCB20, 0xC2DB, 0xCB21, 0xC2DC, 0xCB22, 0xA753, 0xCB23, 0xA754,
+	0xCB24, 0xA755, 0xCB25, 0xA756, 0xCB26, 0xA757, 0xCB27, 0xA758,
+	0xCB28, 0xA759, 0xCB29, 0xA75A, 0xCB2A, 0xA761, 0xCB2B, 0xA762,
+	0xCB2C, 0xA763, 0xCB2D, 0xA764, 0xCB2E, 0xA765, 0xCB2F, 0xA766,
+	0xCB30, 0xA767, 0xCB31, 0xA768, 0xCB32, 0xA769, 0xCB33, 0xA76A,
+	0xCB34, 0xA76B, 0xCB35, 0xA76C, 0xCB36, 0xA76D, 0xCB37, 0xA76E,
+	0xCB38, 0xA76F, 0xCB39, 0xA770, 0xCB3A, 0xA771, 0xCB3B, 0xA772,
+	0xCB3C, 0xA773, 0xCB3D, 0xA774, 0xCB3E, 0xA775, 0xCB3F, 0xA776,
+	0xCB40, 0xA777, 0xCB41, 0xC2DD, 0xCB42, 0xA778, 0xCB43, 0xA779,
+	0xCB44, 0xA77A, 0xCB45, 0xA781, 0xCB46, 0xA782, 0xCB47, 0xA783,
+	0xCB48, 0xC2DE, 0xCB49, 0xC2DF, 0xCB4A, 0xA784, 0xCB4B, 0xA785,
+	0xCB4C, 0xC2E0, 0xCB4D, 0xA786, 0xCB4E, 0xA787, 0xCB4F, 0xA788,
+	0xCB50, 0xC2E1, 0xCB51, 0xA789, 0xCB52, 0xA78A, 0xCB53, 0xA78B,
+	0xCB54, 0xA78C, 0xCB55, 0xA78D, 0xCB56, 0xA78E, 0xCB57, 0xA78F,
+	0xCB58, 0xC2E2, 0xCB59, 0xC2E3, 0xCB5A, 0xA790, 0xCB5B, 0xA791,
+	0xCB5C, 0xA792, 0xCB5D, 0xC2E4, 0xCB5E, 0xA793, 0xCB5F, 0xA794,
+	0xCB60, 0xA795, 0xCB61, 0xA796, 0xCB62, 0xA797, 0xCB63, 0xA798,
+	0xCB64, 0xC2E5, 0xCB65, 0xA799, 0xCB66, 0xA79A, 0xCB67, 0xA79B,
+	0xCB68, 0xA79C, 0xCB69, 0xA79D, 0xCB6A, 0xA79E, 0xCB6B, 0xA79F,
+	0xCB6C, 0xA7A0, 0xCB6D, 0xA841, 0xCB6E, 0xA842, 0xCB6F, 0xA843,
+	0xCB70, 0xA844, 0xCB71, 0xA845, 0xCB72, 0xA846, 0xCB73, 0xA847,
+	0xCB74, 0xA848, 0xCB75, 0xA849, 0xCB76, 0xA84A, 0xCB77, 0xA84B,
+	0xCB78, 0xC2E6, 0xCB79, 0xC2E7, 0xCB7A, 0xA84C, 0xCB7B, 0xA84D,
+	0xCB7C, 0xA84E, 0xCB7D, 0xA84F, 0xCB7E, 0xA850, 0xCB7F, 0xA851,
+	0xCB80, 0xA852, 0xCB81, 0xA853, 0xCB82, 0xA854, 0xCB83, 0xA855,
+	0xCB84, 0xA856, 0xCB85, 0xA857, 0xCB86, 0xA858, 0xCB87, 0xA859,
+	0xCB88, 0xA85A, 0xCB89, 0xA861, 0xCB8A, 0xA862, 0xCB8B, 0xA863,
+	0xCB8C, 0xA864, 0xCB8D, 0xA865, 0xCB8E, 0xA866, 0xCB8F, 0xA867,
+	0xCB90, 0xA868, 0xCB91, 0xA869, 0xCB92, 0xA86A, 0xCB93, 0xA86B,
+	0xCB94, 0xA86C, 0xCB95, 0xA86D, 0xCB96, 0xA86E, 0xCB97, 0xA86F,
+	0xCB98, 0xA870, 0xCB99, 0xA871, 0xCB9A, 0xA872, 0xCB9B, 0xA873,
+	0xCB9C, 0xC2E8, 0xCB9D, 0xA874, 0xCB9E, 0xA875, 0xCB9F, 0xA876,
+	0xCBA0, 0xA877, 0xCBA1, 0xA878, 0xCBA2, 0xA879, 0xCBA3, 0xA87A,
+	0xCBA4, 0xA881, 0xCBA5, 0xA882, 0xCBA6, 0xA883, 0xCBA7, 0xA884,
+	0xCBA8, 0xA885, 0xCBA9, 0xA886, 0xCBAA, 0xA887, 0xCBAB, 0xA888,
+	0xCBAC, 0xA889, 0xCBAD, 0xA88A, 0xCBAE, 0xA88B, 0xCBAF, 0xA88C,
+	0xCBB0, 0xA88D, 0xCBB1, 0xA88E, 0xCBB2, 0xA88F, 0xCBB3, 0xA890,
+	0xCBB4, 0xA891, 0xCBB5, 0xA892, 0xCBB6, 0xA893, 0xCBB7, 0xA894,
+	0xCBB8, 0xC2E9, 0xCBB9, 0xA895, 0xCBBA, 0xA896, 0xCBBB, 0xA897,
+	0xCBBC, 0xA898, 0xCBBD, 0xA899, 0xCBBE, 0xA89A, 0xCBBF, 0xA89B,
+	0xCBC0, 0xA89C, 0xCBC1, 0xA89D, 0xCBC2, 0xA89E, 0xCBC3, 0xA89F,
+	0xCBC4, 0xA8A0, 0xCBC5, 0xA941, 0xCBC6, 0xA942, 0xCBC7, 0xA943,
+	0xCBC8, 0xA944, 0xCBC9, 0xA945, 0xCBCA, 0xA946, 0xCBCB, 0xA947,
+	0xCBCC, 0xA948, 0xCBCD, 0xA949, 0xCBCE, 0xA94A, 0xCBCF, 0xA94B,
+	0xCBD0, 0xA94C, 0xCBD1, 0xA94D, 0xCBD2, 0xA94E, 0xCBD3, 0xA94F,
+	0xCBD4, 0xC2EA, 0xCBD5, 0xA950, 0xCBD6, 0xA951, 0xCBD7, 0xA952,
+	0xCBD8, 0xA953, 0xCBD9, 0xA954, 0xCBDA, 0xA955, 0xCBDB, 0xA956,
+	0xCBDC, 0xA957, 0xCBDD, 0xA958, 0xCBDE, 0xA959, 0xCBDF, 0xA95A,
+	0xCBE0, 0xA961, 0xCBE1, 0xA962, 0xCBE2, 0xA963, 0xCBE3, 0xA964,
+	0xCBE4, 0xC2EB, 0xCBE5, 0xA965, 0xCBE6, 0xA966, 0xCBE7, 0xC2EC,
+	0xCBE8, 0xA967, 0xCBE9, 0xC2ED, 0xCBEA, 0xA968, 0xCBEB, 0xA969,
+	0xCBEC, 0xA96A, 0xCBED, 0xA96B, 0xCBEE, 0xA96C, 0xCBEF, 0xA96D,
+	0xCBF0, 0xA96E, 0xCBF1, 0xA96F, 0xCBF2, 0xA970, 0xCBF3, 0xA971,
+	0xCBF4, 0xA972, 0xCBF5, 0xA973, 0xCBF6, 0xA974, 0xCBF7, 0xA975,
+	0xCBF8, 0xA976, 0xCBF9, 0xA977, 0xCBFA, 0xA978, 0xCBFB, 0xA979,
+	0xCBFC, 0xA97A, 0xCBFD, 0xA981, 0xCBFE, 0xA982, 0xCBFF, 0xA983,
+	0xCC00, 0xA984, 0xCC01, 0xA985, 0xCC02, 0xA986, 0xCC03, 0xA987,
+	0xCC04, 0xA988, 0xCC05, 0xA989, 0xCC06, 0xA98A, 0xCC07, 0xA98B,
+	0xCC08, 0xA98C, 0xCC09, 0xA98D, 0xCC0A, 0xA98E, 0xCC0B, 0xA98F,
+	0xCC0C, 0xC2EE, 0xCC0D, 0xC2EF, 0xCC0E, 0xA990, 0xCC0F, 0xA991,
+	0xCC10, 0xC2F0, 0xCC11, 0xA992, 0xCC12, 0xA993, 0xCC13, 0xA994,
+	0xCC14, 0xC2F1, 0xCC15, 0xA995, 0xCC16, 0xA996, 0xCC17, 0xA997,
+	0xCC18, 0xA998, 0xCC19, 0xA999, 0xCC1A, 0xA99A, 0xCC1B, 0xA99B,
+	0xCC1C, 0xC2F2, 0xCC1D, 0xC2F3, 0xCC1E, 0xA99C, 0xCC1F, 0xA99D,
+	0xCC20, 0xA99E, 0xCC21, 0xC2F4, 0xCC22, 0xC2F5, 0xCC23, 0xA99F,
+	0xCC24, 0xA9A0, 0xCC25, 0xAA41, 0xCC26, 0xAA42, 0xCC27, 0xC2F6,
+	0xCC28, 0xC2F7, 0xCC29, 0xC2F8, 0xCC2A, 0xAA43, 0xCC2B, 0xAA44,
+	0xCC2C, 0xC2F9, 0xCC2D, 0xAA45, 0xCC2E, 0xC2FA, 0xCC2F, 0xAA46,
+	0xCC30, 0xC2FB, 0xCC31, 0xAA47, 0xCC32, 0xAA48, 0xCC33, 0xAA49,
+	0xCC34, 0xAA4A, 0xCC35, 0xAA4B, 0xCC36, 0xAA4C, 0xCC37, 0xAA4D,
+	0xCC38, 0xC2FC, 0xCC39, 0xC2FD, 0xCC3A, 0xAA4E, 0xCC3B, 0xC2FE,
+	0xCC3C, 0xC3A1, 0xCC3D, 0xC3A2, 0xCC3E, 0xC3A3, 0xCC3F, 0xAA4F,
+	0xCC40, 0xAA50, 0xCC41, 0xAA51, 0xCC42, 0xAA52, 0xCC43, 0xAA53,
+	0xCC44, 0xC3A4, 0xCC45, 0xC3A5, 0xCC46, 0xAA54, 0xCC47, 0xAA55,
+	0xCC48, 0xC3A6, 0xCC49, 0xAA56, 0xCC4A, 0xAA57, 0xCC4B, 0xAA58,
+	0xCC4C, 0xC3A7, 0xCC4D, 0xAA59, 0xCC4E, 0xAA5A, 0xCC4F, 0xAA61,
+	0xCC50, 0xAA62, 0xCC51, 0xAA63, 0xCC52, 0xAA64, 0xCC53, 0xAA65,
+	0xCC54, 0xC3A8, 0xCC55, 0xC3A9, 0xCC56, 0xAA66, 0xCC57, 0xC3AA,
+	0xCC58, 0xC3AB, 0xCC59, 0xC3AC, 0xCC5A, 0xAA67, 0xCC5B, 0xAA68,
+	0xCC5C, 0xAA69, 0xCC5D, 0xAA6A, 0xCC5E, 0xAA6B, 0xCC5F, 0xAA6C,
+	0xCC60, 0xC3AD, 0xCC61, 0xAA6D, 0xCC62, 0xAA6E, 0xCC63, 0xAA6F,
+	0xCC64, 0xC3AE, 0xCC65, 0xAA70, 0xCC66, 0xC3AF, 0xCC67, 0xAA71,
+	0xCC68, 0xC3B0, 0xCC69, 0xAA72, 0xCC6A, 0xAA73, 0xCC6B, 0xAA74,
+	0xCC6C, 0xAA75, 0xCC6D, 0xAA76, 0xCC6E, 0xAA77, 0xCC6F, 0xAA78,
+	0xCC70, 0xC3B1, 0xCC71, 0xAA79, 0xCC72, 0xAA7A, 0xCC73, 0xAA81,
+	0xCC74, 0xAA82, 0xCC75, 0xC3B2, 0xCC76, 0xAA83, 0xCC77, 0xAA84,
+	0xCC78, 0xAA85, 0xCC79, 0xAA86, 0xCC7A, 0xAA87, 0xCC7B, 0xAA88,
+	0xCC7C, 0xAA89, 0xCC7D, 0xAA8A, 0xCC7E, 0xAA8B, 0xCC7F, 0xAA8C,
+	0xCC80, 0xAA8D, 0xCC81, 0xAA8E, 0xCC82, 0xAA8F, 0xCC83, 0xAA90,
+	0xCC84, 0xAA91, 0xCC85, 0xAA92, 0xCC86, 0xAA93, 0xCC87, 0xAA94,
+	0xCC88, 0xAA95, 0xCC89, 0xAA96, 0xCC8A, 0xAA97, 0xCC8B, 0xAA98,
+	0xCC8C, 0xAA99, 0xCC8D, 0xAA9A, 0xCC8E, 0xAA9B, 0xCC8F, 0xAA9C,
+	0xCC90, 0xAA9D, 0xCC91, 0xAA9E, 0xCC92, 0xAA9F, 0xCC93, 0xAAA0,
+	0xCC94, 0xAB41, 0xCC95, 0xAB42, 0xCC96, 0xAB43, 0xCC97, 0xAB44,
+	0xCC98, 0xC3B3, 0xCC99, 0xC3B4, 0xCC9A, 0xAB45, 0xCC9B, 0xAB46,
+	0xCC9C, 0xC3B5, 0xCC9D, 0xAB47, 0xCC9E, 0xAB48, 0xCC9F, 0xAB49,
+	0xCCA0, 0xC3B6, 0xCCA1, 0xAB4A, 0xCCA2, 0xAB4B, 0xCCA3, 0xAB4C,
+	0xCCA4, 0xAB4D, 0xCCA5, 0xAB4E, 0xCCA6, 0xAB4F, 0xCCA7, 0xAB50,
+	0xCCA8, 0xC3B7, 0xCCA9, 0xC3B8, 0xCCAA, 0xAB51, 0xCCAB, 0xC3B9,
+	0xCCAC, 0xC3BA, 0xCCAD, 0xC3BB, 0xCCAE, 0xAB52, 0xCCAF, 0xAB53,
+	0xCCB0, 0xAB54, 0xCCB1, 0xAB55, 0xCCB2, 0xAB56, 0xCCB3, 0xAB57,
+	0xCCB4, 0xC3BC, 0xCCB5, 0xC3BD, 0xCCB6, 0xAB58, 0xCCB7, 0xAB59,
+	0xCCB8, 0xC3BE, 0xCCB9, 0xAB5A, 0xCCBA, 0xAB61, 0xCCBB, 0xAB62,
+	0xCCBC, 0xC3BF, 0xCCBD, 0xAB63, 0xCCBE, 0xAB64, 0xCCBF, 0xAB65,
+	0xCCC0, 0xAB66, 0xCCC1, 0xAB67, 0xCCC2, 0xAB68, 0xCCC3, 0xAB69,
+	0xCCC4, 0xC3C0, 0xCCC5, 0xC3C1, 0xCCC6, 0xAB6A, 0xCCC7, 0xC3C2,
+	0xCCC8, 0xAB6B, 0xCCC9, 0xC3C3, 0xCCCA, 0xAB6C, 0xCCCB, 0xAB6D,
+	0xCCCC, 0xAB6E, 0xCCCD, 0xAB6F, 0xCCCE, 0xAB70, 0xCCCF, 0xAB71,
+	0xCCD0, 0xC3C4, 0xCCD1, 0xAB72, 0xCCD2, 0xAB73, 0xCCD3, 0xAB74,
+	0xCCD4, 0xC3C5, 0xCCD5, 0xAB75, 0xCCD6, 0xAB76, 0xCCD7, 0xAB77,
+	0xCCD8, 0xAB78, 0xCCD9, 0xAB79, 0xCCDA, 0xAB7A, 0xCCDB, 0xAB81,
+	0xCCDC, 0xAB82, 0xCCDD, 0xAB83, 0xCCDE, 0xAB84, 0xCCDF, 0xAB85,
+	0xCCE0, 0xAB86, 0xCCE1, 0xAB87, 0xCCE2, 0xAB88, 0xCCE3, 0xAB89,
+	0xCCE4, 0xC3C6, 0xCCE5, 0xAB8A, 0xCCE6, 0xAB8B, 0xCCE7, 0xAB8C,
+	0xCCE8, 0xAB8D, 0xCCE9, 0xAB8E, 0xCCEA, 0xAB8F, 0xCCEB, 0xAB90,
+	0xCCEC, 0xC3C7, 0xCCED, 0xAB91, 0xCCEE, 0xAB92, 0xCCEF, 0xAB93,
+	0xCCF0, 0xC3C8, 0xCCF1, 0xAB94, 0xCCF2, 0xAB95, 0xCCF3, 0xAB96,
+	0xCCF4, 0xAB97, 0xCCF5, 0xAB98, 0xCCF6, 0xAB99, 0xCCF7, 0xAB9A,
+	0xCCF8, 0xAB9B, 0xCCF9, 0xAB9C, 0xCCFA, 0xAB9D, 0xCCFB, 0xAB9E,
+	0xCCFC, 0xAB9F, 0xCCFD, 0xABA0, 0xCCFE, 0xAC41, 0xCCFF, 0xAC42,
+	0xCD00, 0xAC43, 0xCD01, 0xC3C9, 0xCD02, 0xAC44, 0xCD03, 0xAC45,
+	0xCD04, 0xAC46, 0xCD05, 0xAC47, 0xCD06, 0xAC48, 0xCD07, 0xAC49,
+	0xCD08, 0xC3CA, 0xCD09, 0xC3CB, 0xCD0A, 0xAC4A, 0xCD0B, 0xAC4B,
+	0xCD0C, 0xC3CC, 0xCD0D, 0xAC4C, 0xCD0E, 0xAC4D, 0xCD0F, 0xAC4E,
+	0xCD10, 0xC3CD, 0xCD11, 0xAC4F, 0xCD12, 0xAC50, 0xCD13, 0xAC51,
+	0xCD14, 0xAC52, 0xCD15, 0xAC53, 0xCD16, 0xAC54, 0xCD17, 0xAC55,
+	0xCD18, 0xC3CE, 0xCD19, 0xC3CF, 0xCD1A, 0xAC56, 0xCD1B, 0xC3D0,
+	0xCD1C, 0xAC57, 0xCD1D, 0xC3D1, 0xCD1E, 0xAC58, 0xCD1F, 0xAC59,
+	0xCD20, 0xAC5A, 0xCD21, 0xAC61, 0xCD22, 0xAC62, 0xCD23, 0xAC63,
+	0xCD24, 0xC3D2, 0xCD25, 0xAC64, 0xCD26, 0xAC65, 0xCD27, 0xAC66,
+	0xCD28, 0xC3D3, 0xCD29, 0xAC67, 0xCD2A, 0xAC68, 0xCD2B, 0xAC69,
+	0xCD2C, 0xC3D4, 0xCD2D, 0xAC6A, 0xCD2E, 0xAC6B, 0xCD2F, 0xAC6C,
+	0xCD30, 0xAC6D, 0xCD31, 0xAC6E, 0xCD32, 0xAC6F, 0xCD33, 0xAC70,
+	0xCD34, 0xAC71, 0xCD35, 0xAC72, 0xCD36, 0xAC73, 0xCD37, 0xAC74,
+	0xCD38, 0xAC75, 0xCD39, 0xC3D5, 0xCD3A, 0xAC76, 0xCD3B, 0xAC77,
+	0xCD3C, 0xAC78, 0xCD3D, 0xAC79, 0xCD3E, 0xAC7A, 0xCD3F, 0xAC81,
+	0xCD40, 0xAC82, 0xCD41, 0xAC83, 0xCD42, 0xAC84, 0xCD43, 0xAC85,
+	0xCD44, 0xAC86, 0xCD45, 0xAC87, 0xCD46, 0xAC88, 0xCD47, 0xAC89,
+	0xCD48, 0xAC8A, 0xCD49, 0xAC8B, 0xCD4A, 0xAC8C, 0xCD4B, 0xAC8D,
+	0xCD4C, 0xAC8E, 0xCD4D, 0xAC8F, 0xCD4E, 0xAC90, 0xCD4F, 0xAC91,
+	0xCD50, 0xAC92, 0xCD51, 0xAC93, 0xCD52, 0xAC94, 0xCD53, 0xAC95,
+	0xCD54, 0xAC96, 0xCD55, 0xAC97, 0xCD56, 0xAC98, 0xCD57, 0xAC99,
+	0xCD58, 0xAC9A, 0xCD59, 0xAC9B, 0xCD5A, 0xAC9C, 0xCD5B, 0xAC9D,
+	0xCD5C, 0xC3D6, 0xCD5D, 0xAC9E, 0xCD5E, 0xAC9F, 0xCD5F, 0xACA0,
+	0xCD60, 0xC3D7, 0xCD61, 0xAD41, 0xCD62, 0xAD42, 0xCD63, 0xAD43,
+	0xCD64, 0xC3D8, 0xCD65, 0xAD44, 0xCD66, 0xAD45, 0xCD67, 0xAD46,
+	0xCD68, 0xAD47, 0xCD69, 0xAD48, 0xCD6A, 0xAD49, 0xCD6B, 0xAD4A,
+	0xCD6C, 0xC3D9, 0xCD6D, 0xC3DA, 0xCD6E, 0xAD4B, 0xCD6F, 0xC3DB,
+	0xCD70, 0xAD4C, 0xCD71, 0xC3DC, 0xCD72, 0xAD4D, 0xCD73, 0xAD4E,
+	0xCD74, 0xAD4F, 0xCD75, 0xAD50, 0xCD76, 0xAD51, 0xCD77, 0xAD52,
+	0xCD78, 0xC3DD, 0xCD79, 0xAD53, 0xCD7A, 0xAD54, 0xCD7B, 0xAD55,
+	0xCD7C, 0xAD56, 0xCD7D, 0xAD57, 0xCD7E, 0xAD58, 0xCD7F, 0xAD59,
+	0xCD80, 0xAD5A, 0xCD81, 0xAD61, 0xCD82, 0xAD62, 0xCD83, 0xAD63,
+	0xCD84, 0xAD64, 0xCD85, 0xAD65, 0xCD86, 0xAD66, 0xCD87, 0xAD67,
+	0xCD88, 0xC3DE, 0xCD89, 0xAD68, 0xCD8A, 0xAD69, 0xCD8B, 0xAD6A,
+	0xCD8C, 0xAD6B, 0xCD8D, 0xAD6C, 0xCD8E, 0xAD6D, 0xCD8F, 0xAD6E,
+	0xCD90, 0xAD6F, 0xCD91, 0xAD70, 0xCD92, 0xAD71, 0xCD93, 0xAD72,
+	0xCD94, 0xC3DF, 0xCD95, 0xC3E0, 0xCD96, 0xAD73, 0xCD97, 0xAD74,
+	0xCD98, 0xC3E1, 0xCD99, 0xAD75, 0xCD9A, 0xAD76, 0xCD9B, 0xAD77,
+	0xCD9C, 0xC3E2, 0xCD9D, 0xAD78, 0xCD9E, 0xAD79, 0xCD9F, 0xAD7A,
+	0xCDA0, 0xAD81, 0xCDA1, 0xAD82, 0xCDA2, 0xAD83, 0xCDA3, 0xAD84,
+	0xCDA4, 0xC3E3, 0xCDA5, 0xC3E4, 0xCDA6, 0xAD85, 0xCDA7, 0xC3E5,
+	0xCDA8, 0xAD86, 0xCDA9, 0xC3E6, 0xCDAA, 0xAD87, 0xCDAB, 0xAD88,
+	0xCDAC, 0xAD89, 0xCDAD, 0xAD8A, 0xCDAE, 0xAD8B, 0xCDAF, 0xAD8C,
+	0xCDB0, 0xC3E7, 0xCDB1, 0xAD8D, 0xCDB2, 0xAD8E, 0xCDB3, 0xAD8F,
+	0xCDB4, 0xAD90, 0xCDB5, 0xAD91, 0xCDB6, 0xAD92, 0xCDB7, 0xAD93,
+	0xCDB8, 0xAD94, 0xCDB9, 0xAD95, 0xCDBA, 0xAD96, 0xCDBB, 0xAD97,
+	0xCDBC, 0xAD98, 0xCDBD, 0xAD99, 0xCDBE, 0xAD9A, 0xCDBF, 0xAD9B,
+	0xCDC0, 0xAD9C, 0xCDC1, 0xAD9D, 0xCDC2, 0xAD9E, 0xCDC3, 0xAD9F,
+	0xCDC4, 0xC3E8, 0xCDC5, 0xADA0, 0xCDC6, 0xAE41, 0xCDC7, 0xAE42,
+	0xCDC8, 0xAE43, 0xCDC9, 0xAE44, 0xCDCA, 0xAE45, 0xCDCB, 0xAE46,
+	0xCDCC, 0xC3E9, 0xCDCD, 0xAE47, 0xCDCE, 0xAE48, 0xCDCF, 0xAE49,
+	0xCDD0, 0xC3EA, 0xCDD1, 0xAE4A, 0xCDD2, 0xAE4B, 0xCDD3, 0xAE4C,
+	0xCDD4, 0xAE4D, 0xCDD5, 0xAE4E, 0xCDD6, 0xAE4F, 0xCDD7, 0xAE50,
+	0xCDD8, 0xAE51, 0xCDD9, 0xAE52, 0xCDDA, 0xAE53, 0xCDDB, 0xAE54,
+	0xCDDC, 0xAE55, 0xCDDD, 0xAE56, 0xCDDE, 0xAE57, 0xCDDF, 0xAE58,
+	0xCDE0, 0xAE59, 0xCDE1, 0xAE5A, 0xCDE2, 0xAE61, 0xCDE3, 0xAE62,
+	0xCDE4, 0xAE63, 0xCDE5, 0xAE64, 0xCDE6, 0xAE65, 0xCDE7, 0xAE66,
+	0xCDE8, 0xC3EB, 0xCDE9, 0xAE67, 0xCDEA, 0xAE68, 0xCDEB, 0xAE69,
+	0xCDEC, 0xC3EC, 0xCDED, 0xAE6A, 0xCDEE, 0xAE6B, 0xCDEF, 0xAE6C,
+	0xCDF0, 0xC3ED, 0xCDF1, 0xAE6D, 0xCDF2, 0xAE6E, 0xCDF3, 0xAE6F,
+	0xCDF4, 0xAE70, 0xCDF5, 0xAE71, 0xCDF6, 0xAE72, 0xCDF7, 0xAE73,
+	0xCDF8, 0xC3EE, 0xCDF9, 0xC3EF, 0xCDFA, 0xAE74, 0xCDFB, 0xC3F0,
+	0xCDFC, 0xAE75, 0xCDFD, 0xC3F1, 0xCDFE, 0xAE76, 0xCDFF, 0xAE77,
+	0xCE00, 0xAE78, 0xCE01, 0xAE79, 0xCE02, 0xAE7A, 0xCE03, 0xAE81,
+	0xCE04, 0xC3F2, 0xCE05, 0xAE82, 0xCE06, 0xAE83, 0xCE07, 0xAE84,
+	0xCE08, 0xC3F3, 0xCE09, 0xAE85, 0xCE0A, 0xAE86, 0xCE0B, 0xAE87,
+	0xCE0C, 0xC3F4, 0xCE0D, 0xAE88, 0xCE0E, 0xAE89, 0xCE0F, 0xAE8A,
+	0xCE10, 0xAE8B, 0xCE11, 0xAE8C, 0xCE12, 0xAE8D, 0xCE13, 0xAE8E,
+	0xCE14, 0xC3F5, 0xCE15, 0xAE8F, 0xCE16, 0xAE90, 0xCE17, 0xAE91,
+	0xCE18, 0xAE92, 0xCE19, 0xC3F6, 0xCE1A, 0xAE93, 0xCE1B, 0xAE94,
+	0xCE1C, 0xAE95, 0xCE1D, 0xAE96, 0xCE1E, 0xAE97, 0xCE1F, 0xAE98,
+	0xCE20, 0xC3F7, 0xCE21, 0xC3F8, 0xCE22, 0xAE99, 0xCE23, 0xAE9A,
+	0xCE24, 0xC3F9, 0xCE25, 0xAE9B, 0xCE26, 0xAE9C, 0xCE27, 0xAE9D,
+	0xCE28, 0xC3FA, 0xCE29, 0xAE9E, 0xCE2A, 0xAE9F, 0xCE2B, 0xAEA0,
+	0xCE2C, 0xAF41, 0xCE2D, 0xAF42, 0xCE2E, 0xAF43, 0xCE2F, 0xAF44,
+	0xCE30, 0xC3FB, 0xCE31, 0xC3FC, 0xCE32, 0xAF45, 0xCE33, 0xC3FD,
+	0xCE34, 0xAF46, 0xCE35, 0xC3FE, 0xCE36, 0xAF47, 0xCE37, 0xAF48,
+	0xCE38, 0xAF49, 0xCE39, 0xAF4A, 0xCE3A, 0xAF4B, 0xCE3B, 0xAF4C,
+	0xCE3C, 0xAF4D, 0xCE3D, 0xAF4E, 0xCE3E, 0xAF4F, 0xCE3F, 0xAF50,
+	0xCE40, 0xAF51, 0xCE41, 0xAF52, 0xCE42, 0xAF53, 0xCE43, 0xAF54,
+	0xCE44, 0xAF55, 0xCE45, 0xAF56, 0xCE46, 0xAF57, 0xCE47, 0xAF58,
+	0xCE48, 0xAF59, 0xCE49, 0xAF5A, 0xCE4A, 0xAF61, 0xCE4B, 0xAF62,
+	0xCE4C, 0xAF63, 0xCE4D, 0xAF64, 0xCE4E, 0xAF65, 0xCE4F, 0xAF66,
+	0xCE50, 0xAF67, 0xCE51, 0xAF68, 0xCE52, 0xAF69, 0xCE53, 0xAF6A,
+	0xCE54, 0xAF6B, 0xCE55, 0xAF6C, 0xCE56, 0xAF6D, 0xCE57, 0xAF6E,
+	0xCE58, 0xC4A1, 0xCE59, 0xC4A2, 0xCE5A, 0xAF6F, 0xCE5B, 0xAF70,
+	0xCE5C, 0xC4A3, 0xCE5D, 0xAF71, 0xCE5E, 0xAF72, 0xCE5F, 0xC4A4,
+	0xCE60, 0xC4A5, 0xCE61, 0xC4A6, 0xCE62, 0xAF73, 0xCE63, 0xAF74,
+	0xCE64, 0xAF75, 0xCE65, 0xAF76, 0xCE66, 0xAF77, 0xCE67, 0xAF78,
+	0xCE68, 0xC4A7, 0xCE69, 0xC4A8, 0xCE6A, 0xAF79, 0xCE6B, 0xC4A9,
+	0xCE6C, 0xAF7A, 0xCE6D, 0xC4AA, 0xCE6E, 0xAF81, 0xCE6F, 0xAF82,
+	0xCE70, 0xAF83, 0xCE71, 0xAF84, 0xCE72, 0xAF85, 0xCE73, 0xAF86,
+	0xCE74, 0xC4AB, 0xCE75, 0xC4AC, 0xCE76, 0xAF87, 0xCE77, 0xAF88,
+	0xCE78, 0xC4AD, 0xCE79, 0xAF89, 0xCE7A, 0xAF8A, 0xCE7B, 0xAF8B,
+	0xCE7C, 0xC4AE, 0xCE7D, 0xAF8C, 0xCE7E, 0xAF8D, 0xCE7F, 0xAF8E,
+	0xCE80, 0xAF8F, 0xCE81, 0xAF90, 0xCE82, 0xAF91, 0xCE83, 0xAF92,
+	0xCE84, 0xC4AF, 0xCE85, 0xC4B0, 0xCE86, 0xAF93, 0xCE87, 0xC4B1,
+	0xCE88, 0xAF94, 0xCE89, 0xC4B2, 0xCE8A, 0xAF95, 0xCE8B, 0xAF96,
+	0xCE8C, 0xAF97, 0xCE8D, 0xAF98, 0xCE8E, 0xAF99, 0xCE8F, 0xAF9A,
+	0xCE90, 0xC4B3, 0xCE91, 0xC4B4, 0xCE92, 0xAF9B, 0xCE93, 0xAF9C,
+	0xCE94, 0xC4B5, 0xCE95, 0xAF9D, 0xCE96, 0xAF9E, 0xCE97, 0xAF9F,
+	0xCE98, 0xC4B6, 0xCE99, 0xAFA0, 0xCE9A, 0xB041, 0xCE9B, 0xB042,
+	0xCE9C, 0xB043, 0xCE9D, 0xB044, 0xCE9E, 0xB045, 0xCE9F, 0xB046,
+	0xCEA0, 0xC4B7, 0xCEA1, 0xC4B8, 0xCEA2, 0xB047, 0xCEA3, 0xC4B9,
+	0xCEA4, 0xC4BA, 0xCEA5, 0xC4BB, 0xCEA6, 0xB048, 0xCEA7, 0xB049,
+	0xCEA8, 0xB04A, 0xCEA9, 0xB04B, 0xCEAA, 0xB04C, 0xCEAB, 0xB04D,
+	0xCEAC, 0xC4BC, 0xCEAD, 0xC4BD, 0xCEAE, 0xB04E, 0xCEAF, 0xB04F,
+	0xCEB0, 0xB050, 0xCEB1, 0xB051, 0xCEB2, 0xB052, 0xCEB3, 0xB053,
+	0xCEB4, 0xB054, 0xCEB5, 0xB055, 0xCEB6, 0xB056, 0xCEB7, 0xB057,
+	0xCEB8, 0xB058, 0xCEB9, 0xB059, 0xCEBA, 0xB05A, 0xCEBB, 0xB061,
+	0xCEBC, 0xB062, 0xCEBD, 0xB063, 0xCEBE, 0xB064, 0xCEBF, 0xB065,
+	0xCEC0, 0xB066, 0xCEC1, 0xC4BE, 0xCEC2, 0xB067, 0xCEC3, 0xB068,
+	0xCEC4, 0xB069, 0xCEC5, 0xB06A, 0xCEC6, 0xB06B, 0xCEC7, 0xB06C,
+	0xCEC8, 0xB06D, 0xCEC9, 0xB06E, 0xCECA, 0xB06F, 0xCECB, 0xB070,
+	0xCECC, 0xB071, 0xCECD, 0xB072, 0xCECE, 0xB073, 0xCECF, 0xB074,
+	0xCED0, 0xB075, 0xCED1, 0xB076, 0xCED2, 0xB077, 0xCED3, 0xB078,
+	0xCED4, 0xB079, 0xCED5, 0xB07A, 0xCED6, 0xB081, 0xCED7, 0xB082,
+	0xCED8, 0xB083, 0xCED9, 0xB084, 0xCEDA, 0xB085, 0xCEDB, 0xB086,
+	0xCEDC, 0xB087, 0xCEDD, 0xB088, 0xCEDE, 0xB089, 0xCEDF, 0xB08A,
+	0xCEE0, 0xB08B, 0xCEE1, 0xB08C, 0xCEE2, 0xB08D, 0xCEE3, 0xB08E,
+	0xCEE4, 0xC4BF, 0xCEE5, 0xC4C0, 0xCEE6, 0xB08F, 0xCEE7, 0xB090,
+	0xCEE8, 0xC4C1, 0xCEE9, 0xB091, 0xCEEA, 0xB092, 0xCEEB, 0xC4C2,
+	0xCEEC, 0xC4C3, 0xCEED, 0xB093, 0xCEEE, 0xB094, 0xCEEF, 0xB095,
+	0xCEF0, 0xB096, 0xCEF1, 0xB097, 0xCEF2, 0xB098, 0xCEF3, 0xB099,
+	0xCEF4, 0xC4C4, 0xCEF5, 0xC4C5, 0xCEF6, 0xB09A, 0xCEF7, 0xC4C6,
+	0xCEF8, 0xC4C7, 0xCEF9, 0xC4C8, 0xCEFA, 0xB09B, 0xCEFB, 0xB09C,
+	0xCEFC, 0xB09D, 0xCEFD, 0xB09E, 0xCEFE, 0xB09F, 0xCEFF, 0xB0A0,
+	0xCF00, 0xC4C9, 0xCF01, 0xC4CA, 0xCF02, 0xB141, 0xCF03, 0xB142,
+	0xCF04, 0xC4CB, 0xCF05, 0xB143, 0xCF06, 0xB144, 0xCF07, 0xB145,
+	0xCF08, 0xC4CC, 0xCF09, 0xB146, 0xCF0A, 0xB147, 0xCF0B, 0xB148,
+	0xCF0C, 0xB149, 0xCF0D, 0xB14A, 0xCF0E, 0xB14B, 0xCF0F, 0xB14C,
+	0xCF10, 0xC4CD, 0xCF11, 0xC4CE, 0xCF12, 0xB14D, 0xCF13, 0xC4CF,
+	0xCF14, 0xB14E, 0xCF15, 0xC4D0, 0xCF16, 0xB14F, 0xCF17, 0xB150,
+	0xCF18, 0xB151, 0xCF19, 0xB152, 0xCF1A, 0xB153, 0xCF1B, 0xB154,
+	0xCF1C, 0xC4D1, 0xCF1D, 0xB155, 0xCF1E, 0xB156, 0xCF1F, 0xB157,
+	0xCF20, 0xC4D2, 0xCF21, 0xB158, 0xCF22, 0xB159, 0xCF23, 0xB15A,
+	0xCF24, 0xC4D3, 0xCF25, 0xB161, 0xCF26, 0xB162, 0xCF27, 0xB163,
+	0xCF28, 0xB164, 0xCF29, 0xB165, 0xCF2A, 0xB166, 0xCF2B, 0xB167,
+	0xCF2C, 0xC4D4, 0xCF2D, 0xC4D5, 0xCF2E, 0xB168, 0xCF2F, 0xC4D6,
+	0xCF30, 0xC4D7, 0xCF31, 0xC4D8, 0xCF32, 0xB169, 0xCF33, 0xB16A,
+	0xCF34, 0xB16B, 0xCF35, 0xB16C, 0xCF36, 0xB16D, 0xCF37, 0xB16E,
+	0xCF38, 0xC4D9, 0xCF39, 0xB16F, 0xCF3A, 0xB170, 0xCF3B, 0xB171,
+	0xCF3C, 0xB172, 0xCF3D, 0xB173, 0xCF3E, 0xB174, 0xCF3F, 0xB175,
+	0xCF40, 0xB176, 0xCF41, 0xB177, 0xCF42, 0xB178, 0xCF43, 0xB179,
+	0xCF44, 0xB17A, 0xCF45, 0xB181, 0xCF46, 0xB182, 0xCF47, 0xB183,
+	0xCF48, 0xB184, 0xCF49, 0xB185, 0xCF4A, 0xB186, 0xCF4B, 0xB187,
+	0xCF4C, 0xB188, 0xCF4D, 0xB189, 0xCF4E, 0xB18A, 0xCF4F, 0xB18B,
+	0xCF50, 0xB18C, 0xCF51, 0xB18D, 0xCF52, 0xB18E, 0xCF53, 0xB18F,
+	0xCF54, 0xC4DA, 0xCF55, 0xC4DB, 0xCF56, 0xB190, 0xCF57, 0xB191,
+	0xCF58, 0xC4DC, 0xCF59, 0xB192, 0xCF5A, 0xB193, 0xCF5B, 0xB194,
+	0xCF5C, 0xC4DD, 0xCF5D, 0xB195, 0xCF5E, 0xB196, 0xCF5F, 0xB197,
+	0xCF60, 0xB198, 0xCF61, 0xB199, 0xCF62, 0xB19A, 0xCF63, 0xB19B,
+	0xCF64, 0xC4DE, 0xCF65, 0xC4DF, 0xCF66, 0xB19C, 0xCF67, 0xC4E0,
+	0xCF68, 0xB19D, 0xCF69, 0xC4E1, 0xCF6A, 0xB19E, 0xCF6B, 0xB19F,
+	0xCF6C, 0xB1A0, 0xCF6D, 0xB241, 0xCF6E, 0xB242, 0xCF6F, 0xB243,
+	0xCF70, 0xC4E2, 0xCF71, 0xC4E3, 0xCF72, 0xB244, 0xCF73, 0xB245,
+	0xCF74, 0xC4E4, 0xCF75, 0xB246, 0xCF76, 0xB247, 0xCF77, 0xB248,
+	0xCF78, 0xC4E5, 0xCF79, 0xB249, 0xCF7A, 0xB24A, 0xCF7B, 0xB24B,
+	0xCF7C, 0xB24C, 0xCF7D, 0xB24D, 0xCF7E, 0xB24E, 0xCF7F, 0xB24F,
+	0xCF80, 0xC4E6, 0xCF81, 0xB250, 0xCF82, 0xB251, 0xCF83, 0xB252,
+	0xCF84, 0xB253, 0xCF85, 0xC4E7, 0xCF86, 0xB254, 0xCF87, 0xB255,
+	0xCF88, 0xB256, 0xCF89, 0xB257, 0xCF8A, 0xB258, 0xCF8B, 0xB259,
+	0xCF8C, 0xC4E8, 0xCF8D, 0xB25A, 0xCF8E, 0xB261, 0xCF8F, 0xB262,
+	0xCF90, 0xB263, 0xCF91, 0xB264, 0xCF92, 0xB265, 0xCF93, 0xB266,
+	0xCF94, 0xB267, 0xCF95, 0xB268, 0xCF96, 0xB269, 0xCF97, 0xB26A,
+	0xCF98, 0xB26B, 0xCF99, 0xB26C, 0xCF9A, 0xB26D, 0xCF9B, 0xB26E,
+	0xCF9C, 0xB26F, 0xCF9D, 0xB270, 0xCF9E, 0xB271, 0xCF9F, 0xB272,
+	0xCFA0, 0xB273, 0xCFA1, 0xC4E9, 0xCFA2, 0xB274, 0xCFA3, 0xB275,
+	0xCFA4, 0xB276, 0xCFA5, 0xB277, 0xCFA6, 0xB278, 0xCFA7, 0xB279,
+	0xCFA8, 0xC4EA, 0xCFA9, 0xB27A, 0xCFAA, 0xB281, 0xCFAB, 0xB282,
+	0xCFAC, 0xB283, 0xCFAD, 0xB284, 0xCFAE, 0xB285, 0xCFAF, 0xB286,
+	0xCFB0, 0xC4EB, 0xCFB1, 0xB287, 0xCFB2, 0xB288, 0xCFB3, 0xB289,
+	0xCFB4, 0xB28A, 0xCFB5, 0xB28B, 0xCFB6, 0xB28C, 0xCFB7, 0xB28D,
+	0xCFB8, 0xB28E, 0xCFB9, 0xB28F, 0xCFBA, 0xB290, 0xCFBB, 0xB291,
+	0xCFBC, 0xB292, 0xCFBD, 0xB293, 0xCFBE, 0xB294, 0xCFBF, 0xB295,
+	0xCFC0, 0xB296, 0xCFC1, 0xB297, 0xCFC2, 0xB298, 0xCFC3, 0xB299,
+	0xCFC4, 0xC4EC, 0xCFC5, 0xB29A, 0xCFC6, 0xB29B, 0xCFC7, 0xB29C,
+	0xCFC8, 0xB29D, 0xCFC9, 0xB29E, 0xCFCA, 0xB29F, 0xCFCB, 0xB2A0,
+	0xCFCC, 0xB341, 0xCFCD, 0xB342, 0xCFCE, 0xB343, 0xCFCF, 0xB344,
+	0xCFD0, 0xB345, 0xCFD1, 0xB346, 0xCFD2, 0xB347, 0xCFD3, 0xB348,
+	0xCFD4, 0xB349, 0xCFD5, 0xB34A, 0xCFD6, 0xB34B, 0xCFD7, 0xB34C,
+	0xCFD8, 0xB34D, 0xCFD9, 0xB34E, 0xCFDA, 0xB34F, 0xCFDB, 0xB350,
+	0xCFDC, 0xB351, 0xCFDD, 0xB352, 0xCFDE, 0xB353, 0xCFDF, 0xB354,
+	0xCFE0, 0xC4ED, 0xCFE1, 0xC4EE, 0xCFE2, 0xB355, 0xCFE3, 0xB356,
+	0xCFE4, 0xC4EF, 0xCFE5, 0xB357, 0xCFE6, 0xB358, 0xCFE7, 0xB359,
+	0xCFE8, 0xC4F0, 0xCFE9, 0xB35A, 0xCFEA, 0xB361, 0xCFEB, 0xB362,
+	0xCFEC, 0xB363, 0xCFED, 0xB364, 0xCFEE, 0xB365, 0xCFEF, 0xB366,
+	0xCFF0, 0xC4F1, 0xCFF1, 0xC4F2, 0xCFF2, 0xB367, 0xCFF3, 0xC4F3,
+	0xCFF4, 0xB368, 0xCFF5, 0xC4F4, 0xCFF6, 0xB369, 0xCFF7, 0xB36A,
+	0xCFF8, 0xB36B, 0xCFF9, 0xB36C, 0xCFFA, 0xB36D, 0xCFFB, 0xB36E,
+	0xCFFC, 0xC4F5, 0xCFFD, 0xB36F, 0xCFFE, 0xB370, 0xCFFF, 0xB371,
+	0xD000, 0xC4F6, 0xD001, 0xB372, 0xD002, 0xB373, 0xD003, 0xB374,
+	0xD004, 0xC4F7, 0xD005, 0xB375, 0xD006, 0xB376, 0xD007, 0xB377,
+	0xD008, 0xB378, 0xD009, 0xB379, 0xD00A, 0xB37A, 0xD00B, 0xB381,
+	0xD00C, 0xB382, 0xD00D, 0xB383, 0xD00E, 0xB384, 0xD00F, 0xB385,
+	0xD010, 0xB386, 0xD011, 0xC4F8, 0xD012, 0xB387, 0xD013, 0xB388,
+	0xD014, 0xB389, 0xD015, 0xB38A, 0xD016, 0xB38B, 0xD017, 0xB38C,
+	0xD018, 0xC4F9, 0xD019, 0xB38D, 0xD01A, 0xB38E, 0xD01B, 0xB38F,
+	0xD01C, 0xB390, 0xD01D, 0xB391, 0xD01E, 0xB392, 0xD01F, 0xB393,
+	0xD020, 0xB394, 0xD021, 0xB395, 0xD022, 0xB396, 0xD023, 0xB397,
+	0xD024, 0xB398, 0xD025, 0xB399, 0xD026, 0xB39A, 0xD027, 0xB39B,
+	0xD028, 0xB39C, 0xD029, 0xB39D, 0xD02A, 0xB39E, 0xD02B, 0xB39F,
+	0xD02C, 0xB3A0, 0xD02D, 0xC4FA, 0xD02E, 0xB441, 0xD02F, 0xB442,
+	0xD030, 0xB443, 0xD031, 0xB444, 0xD032, 0xB445, 0xD033, 0xB446,
+	0xD034, 0xC4FB, 0xD035, 0xC4FC, 0xD036, 0xB447, 0xD037, 0xB448,
+	0xD038, 0xC4FD, 0xD039, 0xB449, 0xD03A, 0xB44A, 0xD03B, 0xB44B,
+	0xD03C, 0xC4FE, 0xD03D, 0xB44C, 0xD03E, 0xB44D, 0xD03F, 0xB44E,
+	0xD040, 0xB44F, 0xD041, 0xB450, 0xD042, 0xB451, 0xD043, 0xB452,
+	0xD044, 0xC5A1, 0xD045, 0xC5A2, 0xD046, 0xB453, 0xD047, 0xC5A3,
+	0xD048, 0xB454, 0xD049, 0xC5A4, 0xD04A, 0xB455, 0xD04B, 0xB456,
+	0xD04C, 0xB457, 0xD04D, 0xB458, 0xD04E, 0xB459, 0xD04F, 0xB45A,
+	0xD050, 0xC5A5, 0xD051, 0xB461, 0xD052, 0xB462, 0xD053, 0xB463,
+	0xD054, 0xC5A6, 0xD055, 0xB464, 0xD056, 0xB465, 0xD057, 0xB466,
+	0xD058, 0xC5A7, 0xD059, 0xB467, 0xD05A, 0xB468, 0xD05B, 0xB469,
+	0xD05C, 0xB46A, 0xD05D, 0xB46B, 0xD05E, 0xB46C, 0xD05F, 0xB46D,
+	0xD060, 0xC5A8, 0xD061, 0xB46E, 0xD062, 0xB46F, 0xD063, 0xB470,
+	0xD064, 0xB471, 0xD065, 0xB472, 0xD066, 0xB473, 0xD067, 0xB474,
+	0xD068, 0xB475, 0xD069, 0xB476, 0xD06A, 0xB477, 0xD06B, 0xB478,
+	0xD06C, 0xC5A9, 0xD06D, 0xC5AA, 0xD06E, 0xB479, 0xD06F, 0xB47A,
+	0xD070, 0xC5AB, 0xD071, 0xB481, 0xD072, 0xB482, 0xD073, 0xB483,
+	0xD074, 0xC5AC, 0xD075, 0xB484, 0xD076, 0xB485, 0xD077, 0xB486,
+	0xD078, 0xB487, 0xD079, 0xB488, 0xD07A, 0xB489, 0xD07B, 0xB48A,
+	0xD07C, 0xC5AD, 0xD07D, 0xC5AE, 0xD07E, 0xB48B, 0xD07F, 0xB48C,
+	0xD080, 0xB48D, 0xD081, 0xC5AF, 0xD082, 0xB48E, 0xD083, 0xB48F,
+	0xD084, 0xB490, 0xD085, 0xB491, 0xD086, 0xB492, 0xD087, 0xB493,
+	0xD088, 0xB494, 0xD089, 0xB495, 0xD08A, 0xB496, 0xD08B, 0xB497,
+	0xD08C, 0xB498, 0xD08D, 0xB499, 0xD08E, 0xB49A, 0xD08F, 0xB49B,
+	0xD090, 0xB49C, 0xD091, 0xB49D, 0xD092, 0xB49E, 0xD093, 0xB49F,
+	0xD094, 0xB4A0, 0xD095, 0xB541, 0xD096, 0xB542, 0xD097, 0xB543,
+	0xD098, 0xB544, 0xD099, 0xB545, 0xD09A, 0xB546, 0xD09B, 0xB547,
+	0xD09C, 0xB548, 0xD09D, 0xB549, 0xD09E, 0xB54A, 0xD09F, 0xB54B,
+	0xD0A0, 0xB54C, 0xD0A1, 0xB54D, 0xD0A2, 0xB54E, 0xD0A3, 0xB54F,
+	0xD0A4, 0xC5B0, 0xD0A5, 0xC5B1, 0xD0A6, 0xB550, 0xD0A7, 0xB551,
+	0xD0A8, 0xC5B2, 0xD0A9, 0xB552, 0xD0AA, 0xB553, 0xD0AB, 0xB554,
+	0xD0AC, 0xC5B3, 0xD0AD, 0xB555, 0xD0AE, 0xB556, 0xD0AF, 0xB557,
+	0xD0B0, 0xB558, 0xD0B1, 0xB559, 0xD0B2, 0xB55A, 0xD0B3, 0xB561,
+	0xD0B4, 0xC5B4, 0xD0B5, 0xC5B5, 0xD0B6, 0xB562, 0xD0B7, 0xC5B6,
+	0xD0B8, 0xB563, 0xD0B9, 0xC5B7, 0xD0BA, 0xB564, 0xD0BB, 0xB565,
+	0xD0BC, 0xB566, 0xD0BD, 0xB567, 0xD0BE, 0xB568, 0xD0BF, 0xB569,
+	0xD0C0, 0xC5B8, 0xD0C1, 0xC5B9, 0xD0C2, 0xB56A, 0xD0C3, 0xB56B,
+	0xD0C4, 0xC5BA, 0xD0C5, 0xB56C, 0xD0C6, 0xB56D, 0xD0C7, 0xB56E,
+	0xD0C8, 0xC5BB, 0xD0C9, 0xC5BC, 0xD0CA, 0xB56F, 0xD0CB, 0xB570,
+	0xD0CC, 0xB571, 0xD0CD, 0xB572, 0xD0CE, 0xB573, 0xD0CF, 0xB574,
+	0xD0D0, 0xC5BD, 0xD0D1, 0xC5BE, 0xD0D2, 0xB575, 0xD0D3, 0xC5BF,
+	0xD0D4, 0xC5C0, 0xD0D5, 0xC5C1, 0xD0D6, 0xB576, 0xD0D7, 0xB577,
+	0xD0D8, 0xB578, 0xD0D9, 0xB579, 0xD0DA, 0xB57A, 0xD0DB, 0xB581,
+	0xD0DC, 0xC5C2, 0xD0DD, 0xC5C3, 0xD0DE, 0xB582, 0xD0DF, 0xB583,
+	0xD0E0, 0xC5C4, 0xD0E1, 0xB584, 0xD0E2, 0xB585, 0xD0E3, 0xB586,
+	0xD0E4, 0xC5C5, 0xD0E5, 0xB587, 0xD0E6, 0xB588, 0xD0E7, 0xB589,
+	0xD0E8, 0xB58A, 0xD0E9, 0xB58B, 0xD0EA, 0xB58C, 0xD0EB, 0xB58D,
+	0xD0EC, 0xC5C6, 0xD0ED, 0xC5C7, 0xD0EE, 0xB58E, 0xD0EF, 0xC5C8,
+	0xD0F0, 0xC5C9, 0xD0F1, 0xC5CA, 0xD0F2, 0xB58F, 0xD0F3, 0xB590,
+	0xD0F4, 0xB591, 0xD0F5, 0xB592, 0xD0F6, 0xB593, 0xD0F7, 0xB594,
+	0xD0F8, 0xC5CB, 0xD0F9, 0xB595, 0xD0FA, 0xB596, 0xD0FB, 0xB597,
+	0xD0FC, 0xB598, 0xD0FD, 0xB599, 0xD0FE, 0xB59A, 0xD0FF, 0xB59B,
+	0xD100, 0xB59C, 0xD101, 0xB59D, 0xD102, 0xB59E, 0xD103, 0xB59F,
+	0xD104, 0xB5A0, 0xD105, 0xB641, 0xD106, 0xB642, 0xD107, 0xB643,
+	0xD108, 0xB644, 0xD109, 0xB645, 0xD10A, 0xB646, 0xD10B, 0xB647,
+	0xD10C, 0xB648, 0xD10D, 0xC5CC, 0xD10E, 0xB649, 0xD10F, 0xB64A,
+	0xD110, 0xB64B, 0xD111, 0xB64C, 0xD112, 0xB64D, 0xD113, 0xB64E,
+	0xD114, 0xB64F, 0xD115, 0xB650, 0xD116, 0xB651, 0xD117, 0xB652,
+	0xD118, 0xB653, 0xD119, 0xB654, 0xD11A, 0xB655, 0xD11B, 0xB656,
+	0xD11C, 0xB657, 0xD11D, 0xB658, 0xD11E, 0xB659, 0xD11F, 0xB65A,
+	0xD120, 0xB661, 0xD121, 0xB662, 0xD122, 0xB663, 0xD123, 0xB664,
+	0xD124, 0xB665, 0xD125, 0xB666, 0xD126, 0xB667, 0xD127, 0xB668,
+	0xD128, 0xB669, 0xD129, 0xB66A, 0xD12A, 0xB66B, 0xD12B, 0xB66C,
+	0xD12C, 0xB66D, 0xD12D, 0xB66E, 0xD12E, 0xB66F, 0xD12F, 0xB670,
+	0xD130, 0xC5CD, 0xD131, 0xC5CE, 0xD132, 0xB671, 0xD133, 0xB672,
+	0xD134, 0xC5CF, 0xD135, 0xB673, 0xD136, 0xB674, 0xD137, 0xB675,
+	0xD138, 0xC5D0, 0xD139, 0xB676, 0xD13A, 0xC5D1, 0xD13B, 0xB677,
+	0xD13C, 0xB678, 0xD13D, 0xB679, 0xD13E, 0xB67A, 0xD13F, 0xB681,
+	0xD140, 0xC5D2, 0xD141, 0xC5D3, 0xD142, 0xB682, 0xD143, 0xC5D4,
+	0xD144, 0xC5D5, 0xD145, 0xC5D6, 0xD146, 0xB683, 0xD147, 0xB684,
+	0xD148, 0xB685, 0xD149, 0xB686, 0xD14A, 0xB687, 0xD14B, 0xB688,
+	0xD14C, 0xC5D7, 0xD14D, 0xC5D8, 0xD14E, 0xB689, 0xD14F, 0xB68A,
+	0xD150, 0xC5D9, 0xD151, 0xB68B, 0xD152, 0xB68C, 0xD153, 0xB68D,
+	0xD154, 0xC5DA, 0xD155, 0xB68E, 0xD156, 0xB68F, 0xD157, 0xB690,
+	0xD158, 0xB691, 0xD159, 0xB692, 0xD15A, 0xB693, 0xD15B, 0xB694,
+	0xD15C, 0xC5DB, 0xD15D, 0xC5DC, 0xD15E, 0xB695, 0xD15F, 0xC5DD,
+	0xD160, 0xB696, 0xD161, 0xC5DE, 0xD162, 0xB697, 0xD163, 0xB698,
+	0xD164, 0xB699, 0xD165, 0xB69A, 0xD166, 0xB69B, 0xD167, 0xB69C,
+	0xD168, 0xC5DF, 0xD169, 0xB69D, 0xD16A, 0xB69E, 0xD16B, 0xB69F,
+	0xD16C, 0xC5E0, 0xD16D, 0xB6A0, 0xD16E, 0xB741, 0xD16F, 0xB742,
+	0xD170, 0xB743, 0xD171, 0xB744, 0xD172, 0xB745, 0xD173, 0xB746,
+	0xD174, 0xB747, 0xD175, 0xB748, 0xD176, 0xB749, 0xD177, 0xB74A,
+	0xD178, 0xB74B, 0xD179, 0xB74C, 0xD17A, 0xB74D, 0xD17B, 0xB74E,
+	0xD17C, 0xC5E1, 0xD17D, 0xB74F, 0xD17E, 0xB750, 0xD17F, 0xB751,
+	0xD180, 0xB752, 0xD181, 0xB753, 0xD182, 0xB754, 0xD183, 0xB755,
+	0xD184, 0xC5E2, 0xD185, 0xB756, 0xD186, 0xB757, 0xD187, 0xB758,
+	0xD188, 0xC5E3, 0xD189, 0xB759, 0xD18A, 0xB75A, 0xD18B, 0xB761,
+	0xD18C, 0xB762, 0xD18D, 0xB763, 0xD18E, 0xB764, 0xD18F, 0xB765,
+	0xD190, 0xB766, 0xD191, 0xB767, 0xD192, 0xB768, 0xD193, 0xB769,
+	0xD194, 0xB76A, 0xD195, 0xB76B, 0xD196, 0xB76C, 0xD197, 0xB76D,
+	0xD198, 0xB76E, 0xD199, 0xB76F, 0xD19A, 0xB770, 0xD19B, 0xB771,
+	0xD19C, 0xB772, 0xD19D, 0xB773, 0xD19E, 0xB774, 0xD19F, 0xB775,
+	0xD1A0, 0xC5E4, 0xD1A1, 0xC5E5, 0xD1A2, 0xB776, 0xD1A3, 0xB777,
+	0xD1A4, 0xC5E6, 0xD1A5, 0xB778, 0xD1A6, 0xB779, 0xD1A7, 0xB77A,
+	0xD1A8, 0xC5E7, 0xD1A9, 0xB781, 0xD1AA, 0xB782, 0xD1AB, 0xB783,
+	0xD1AC, 0xB784, 0xD1AD, 0xB785, 0xD1AE, 0xB786, 0xD1AF, 0xB787,
+	0xD1B0, 0xC5E8, 0xD1B1, 0xC5E9, 0xD1B2, 0xB788, 0xD1B3, 0xC5EA,
+	0xD1B4, 0xB789, 0xD1B5, 0xC5EB, 0xD1B6, 0xB78A, 0xD1B7, 0xB78B,
+	0xD1B8, 0xB78C, 0xD1B9, 0xB78D, 0xD1BA, 0xC5EC, 0xD1BB, 0xB78E,
+	0xD1BC, 0xC5ED, 0xD1BD, 0xB78F, 0xD1BE, 0xB790, 0xD1BF, 0xB791,
+	0xD1C0, 0xC5EE, 0xD1C1, 0xB792, 0xD1C2, 0xB793, 0xD1C3, 0xB794,
+	0xD1C4, 0xB795, 0xD1C5, 0xB796, 0xD1C6, 0xB797, 0xD1C7, 0xB798,
+	0xD1C8, 0xB799, 0xD1C9, 0xB79A, 0xD1CA, 0xB79B, 0xD1CB, 0xB79C,
+	0xD1CC, 0xB79D, 0xD1CD, 0xB79E, 0xD1CE, 0xB79F, 0xD1CF, 0xB7A0,
+	0xD1D0, 0xB841, 0xD1D1, 0xB842, 0xD1D2, 0xB843, 0xD1D3, 0xB844,
+	0xD1D4, 0xB845, 0xD1D5, 0xB846, 0xD1D6, 0xB847, 0xD1D7, 0xB848,
+	0xD1D8, 0xC5EF, 0xD1D9, 0xB849, 0xD1DA, 0xB84A, 0xD1DB, 0xB84B,
+	0xD1DC, 0xB84C, 0xD1DD, 0xB84D, 0xD1DE, 0xB84E, 0xD1DF, 0xB84F,
+	0xD1E0, 0xB850, 0xD1E1, 0xB851, 0xD1E2, 0xB852, 0xD1E3, 0xB853,
+	0xD1E4, 0xB854, 0xD1E5, 0xB855, 0xD1E6, 0xB856, 0xD1E7, 0xB857,
+	0xD1E8, 0xB858, 0xD1E9, 0xB859, 0xD1EA, 0xB85A, 0xD1EB, 0xB861,
+	0xD1EC, 0xB862, 0xD1ED, 0xB863, 0xD1EE, 0xB864, 0xD1EF, 0xB865,
+	0xD1F0, 0xB866, 0xD1F1, 0xB867, 0xD1F2, 0xB868, 0xD1F3, 0xB869,
+	0xD1F4, 0xC5F0, 0xD1F5, 0xB86A, 0xD1F6, 0xB86B, 0xD1F7, 0xB86C,
+	0xD1F8, 0xC5F1, 0xD1F9, 0xB86D, 0xD1FA, 0xB86E, 0xD1FB, 0xB86F,
+	0xD1FC, 0xB870, 0xD1FD, 0xB871, 0xD1FE, 0xB872, 0xD1FF, 0xB873,
+	0xD200, 0xB874, 0xD201, 0xB875, 0xD202, 0xB876, 0xD203, 0xB877,
+	0xD204, 0xB878, 0xD205, 0xB879, 0xD206, 0xB87A, 0xD207, 0xC5F2,
+	0xD208, 0xB881, 0xD209, 0xC5F3, 0xD20A, 0xB882, 0xD20B, 0xB883,
+	0xD20C, 0xB884, 0xD20D, 0xB885, 0xD20E, 0xB886, 0xD20F, 0xB887,
+	0xD210, 0xC5F4, 0xD211, 0xB888, 0xD212, 0xB889, 0xD213, 0xB88A,
+	0xD214, 0xB88B, 0xD215, 0xB88C, 0xD216, 0xB88D, 0xD217, 0xB88E,
+	0xD218, 0xB88F, 0xD219, 0xB890, 0xD21A, 0xB891, 0xD21B, 0xB892,
+	0xD21C, 0xB893, 0xD21D, 0xB894, 0xD21E, 0xB895, 0xD21F, 0xB896,
+	0xD220, 0xB897, 0xD221, 0xB898, 0xD222, 0xB899, 0xD223, 0xB89A,
+	0xD224, 0xB89B, 0xD225, 0xB89C, 0xD226, 0xB89D, 0xD227, 0xB89E,
+	0xD228, 0xB89F, 0xD229, 0xB8A0, 0xD22A, 0xB941, 0xD22B, 0xB942,
+	0xD22C, 0xC5F5, 0xD22D, 0xC5F6, 0xD22E, 0xB943, 0xD22F, 0xB944,
+	0xD230, 0xC5F7, 0xD231, 0xB945, 0xD232, 0xB946, 0xD233, 0xB947,
+	0xD234, 0xC5F8, 0xD235, 0xB948, 0xD236, 0xB949, 0xD237, 0xB94A,
+	0xD238, 0xB94B, 0xD239, 0xB94C, 0xD23A, 0xB94D, 0xD23B, 0xB94E,
+	0xD23C, 0xC5F9, 0xD23D, 0xC5FA, 0xD23E, 0xB94F, 0xD23F, 0xC5FB,
+	0xD240, 0xB950, 0xD241, 0xC5FC, 0xD242, 0xB951, 0xD243, 0xB952,
+	0xD244, 0xB953, 0xD245, 0xB954, 0xD246, 0xB955, 0xD247, 0xB956,
+	0xD248, 0xC5FD, 0xD249, 0xB957, 0xD24A, 0xB958, 0xD24B, 0xB959,
+	0xD24C, 0xB95A, 0xD24D, 0xB961, 0xD24E, 0xB962, 0xD24F, 0xB963,
+	0xD250, 0xB964, 0xD251, 0xB965, 0xD252, 0xB966, 0xD253, 0xB967,
+	0xD254, 0xB968, 0xD255, 0xB969, 0xD256, 0xB96A, 0xD257, 0xB96B,
+	0xD258, 0xB96C, 0xD259, 0xB96D, 0xD25A, 0xB96E, 0xD25B, 0xB96F,
+	0xD25C, 0xC5FE, 0xD25D, 0xB970, 0xD25E, 0xB971, 0xD25F, 0xB972,
+	0xD260, 0xB973, 0xD261, 0xB974, 0xD262, 0xB975, 0xD263, 0xB976,
+	0xD264, 0xC6A1, 0xD265, 0xB977, 0xD266, 0xB978, 0xD267, 0xB979,
+	0xD268, 0xB97A, 0xD269, 0xB981, 0xD26A, 0xB982, 0xD26B, 0xB983,
+	0xD26C, 0xB984, 0xD26D, 0xB985, 0xD26E, 0xB986, 0xD26F, 0xB987,
+	0xD270, 0xB988, 0xD271, 0xB989, 0xD272, 0xB98A, 0xD273, 0xB98B,
+	0xD274, 0xB98C, 0xD275, 0xB98D, 0xD276, 0xB98E, 0xD277, 0xB98F,
+	0xD278, 0xB990, 0xD279, 0xB991, 0xD27A, 0xB992, 0xD27B, 0xB993,
+	0xD27C, 0xB994, 0xD27D, 0xB995, 0xD27E, 0xB996, 0xD27F, 0xB997,
+	0xD280, 0xC6A2, 0xD281, 0xC6A3, 0xD282, 0xB998, 0xD283, 0xB999,
+	0xD284, 0xC6A4, 0xD285, 0xB99A, 0xD286, 0xB99B, 0xD287, 0xB99C,
+	0xD288, 0xC6A5, 0xD289, 0xB99D, 0xD28A, 0xB99E, 0xD28B, 0xB99F,
+	0xD28C, 0xB9A0, 0xD28D, 0xBA41, 0xD28E, 0xBA42, 0xD28F, 0xBA43,
+	0xD290, 0xC6A6, 0xD291, 0xC6A7, 0xD292, 0xBA44, 0xD293, 0xBA45,
+	0xD294, 0xBA46, 0xD295, 0xC6A8, 0xD296, 0xBA47, 0xD297, 0xBA48,
+	0xD298, 0xBA49, 0xD299, 0xBA4A, 0xD29A, 0xBA4B, 0xD29B, 0xBA4C,
+	0xD29C, 0xC6A9, 0xD29D, 0xBA4D, 0xD29E, 0xBA4E, 0xD29F, 0xBA4F,
+	0xD2A0, 0xC6AA, 0xD2A1, 0xBA50, 0xD2A2, 0xBA51, 0xD2A3, 0xBA52,
+	0xD2A4, 0xC6AB, 0xD2A5, 0xBA53, 0xD2A6, 0xBA54, 0xD2A7, 0xBA55,
+	0xD2A8, 0xBA56, 0xD2A9, 0xBA57, 0xD2AA, 0xBA58, 0xD2AB, 0xBA59,
+	0xD2AC, 0xC6AC, 0xD2AD, 0xBA5A, 0xD2AE, 0xBA61, 0xD2AF, 0xBA62,
+	0xD2B0, 0xBA63, 0xD2B1, 0xC6AD, 0xD2B2, 0xBA64, 0xD2B3, 0xBA65,
+	0xD2B4, 0xBA66, 0xD2B5, 0xBA67, 0xD2B6, 0xBA68, 0xD2B7, 0xBA69,
+	0xD2B8, 0xC6AE, 0xD2B9, 0xC6AF, 0xD2BA, 0xBA6A, 0xD2BB, 0xBA6B,
+	0xD2BC, 0xC6B0, 0xD2BD, 0xBA6C, 0xD2BE, 0xBA6D, 0xD2BF, 0xC6B1,
+	0xD2C0, 0xC6B2, 0xD2C1, 0xBA6E, 0xD2C2, 0xC6B3, 0xD2C3, 0xBA6F,
+	0xD2C4, 0xBA70, 0xD2C5, 0xBA71, 0xD2C6, 0xBA72, 0xD2C7, 0xBA73,
+	0xD2C8, 0xC6B4, 0xD2C9, 0xC6B5, 0xD2CA, 0xBA74, 0xD2CB, 0xC6B6,
+	0xD2CC, 0xBA75, 0xD2CD, 0xBA76, 0xD2CE, 0xBA77, 0xD2CF, 0xBA78,
+	0xD2D0, 0xBA79, 0xD2D1, 0xBA7A, 0xD2D2, 0xBA81, 0xD2D3, 0xBA82,
+	0xD2D4, 0xC6B7, 0xD2D5, 0xBA83, 0xD2D6, 0xBA84, 0xD2D7, 0xBA85,
+	0xD2D8, 0xC6B8, 0xD2D9, 0xBA86, 0xD2DA, 0xBA87, 0xD2DB, 0xBA88,
+	0xD2DC, 0xC6B9, 0xD2DD, 0xBA89, 0xD2DE, 0xBA8A, 0xD2DF, 0xBA8B,
+	0xD2E0, 0xBA8C, 0xD2E1, 0xBA8D, 0xD2E2, 0xBA8E, 0xD2E3, 0xBA8F,
+	0xD2E4, 0xC6BA, 0xD2E5, 0xC6BB, 0xD2E6, 0xBA90, 0xD2E7, 0xBA91,
+	0xD2E8, 0xBA92, 0xD2E9, 0xBA93, 0xD2EA, 0xBA94, 0xD2EB, 0xBA95,
+	0xD2EC, 0xBA96, 0xD2ED, 0xBA97, 0xD2EE, 0xBA98, 0xD2EF, 0xBA99,
+	0xD2F0, 0xC6BC, 0xD2F1, 0xC6BD, 0xD2F2, 0xBA9A, 0xD2F3, 0xBA9B,
+	0xD2F4, 0xC6BE, 0xD2F5, 0xBA9C, 0xD2F6, 0xBA9D, 0xD2F7, 0xBA9E,
+	0xD2F8, 0xC6BF, 0xD2F9, 0xBA9F, 0xD2FA, 0xBAA0, 0xD2FB, 0xBB41,
+	0xD2FC, 0xBB42, 0xD2FD, 0xBB43, 0xD2FE, 0xBB44, 0xD2FF, 0xBB45,
+	0xD300, 0xC6C0, 0xD301, 0xC6C1, 0xD302, 0xBB46, 0xD303, 0xC6C2,
+	0xD304, 0xBB47, 0xD305, 0xC6C3, 0xD306, 0xBB48, 0xD307, 0xBB49,
+	0xD308, 0xBB4A, 0xD309, 0xBB4B, 0xD30A, 0xBB4C, 0xD30B, 0xBB4D,
+	0xD30C, 0xC6C4, 0xD30D, 0xC6C5, 0xD30E, 0xC6C6, 0xD30F, 0xBB4E,
+	0xD310, 0xC6C7, 0xD311, 0xBB4F, 0xD312, 0xBB50, 0xD313, 0xBB51,
+	0xD314, 0xC6C8, 0xD315, 0xBB52, 0xD316, 0xC6C9, 0xD317, 0xBB53,
+	0xD318, 0xBB54, 0xD319, 0xBB55, 0xD31A, 0xBB56, 0xD31B, 0xBB57,
+	0xD31C, 0xC6CA, 0xD31D, 0xC6CB, 0xD31E, 0xBB58, 0xD31F, 0xC6CC,
+	0xD320, 0xC6CD, 0xD321, 0xC6CE, 0xD322, 0xBB59, 0xD323, 0xBB5A,
+	0xD324, 0xBB61, 0xD325, 0xC6CF, 0xD326, 0xBB62, 0xD327, 0xBB63,
+	0xD328, 0xC6D0, 0xD329, 0xC6D1, 0xD32A, 0xBB64, 0xD32B, 0xBB65,
+	0xD32C, 0xC6D2, 0xD32D, 0xBB66, 0xD32E, 0xBB67, 0xD32F, 0xBB68,
+	0xD330, 0xC6D3, 0xD331, 0xBB69, 0xD332, 0xBB6A, 0xD333, 0xBB6B,
+	0xD334, 0xBB6C, 0xD335, 0xBB6D, 0xD336, 0xBB6E, 0xD337, 0xBB6F,
+	0xD338, 0xC6D4, 0xD339, 0xC6D5, 0xD33A, 0xBB70, 0xD33B, 0xC6D6,
+	0xD33C, 0xC6D7, 0xD33D, 0xC6D8, 0xD33E, 0xBB71, 0xD33F, 0xBB72,
+	0xD340, 0xBB73, 0xD341, 0xBB74, 0xD342, 0xBB75, 0xD343, 0xBB76,
+	0xD344, 0xC6D9, 0xD345, 0xC6DA, 0xD346, 0xBB77, 0xD347, 0xBB78,
+	0xD348, 0xBB79, 0xD349, 0xBB7A, 0xD34A, 0xBB81, 0xD34B, 0xBB82,
+	0xD34C, 0xBB83, 0xD34D, 0xBB84, 0xD34E, 0xBB85, 0xD34F, 0xBB86,
+	0xD350, 0xBB87, 0xD351, 0xBB88, 0xD352, 0xBB89, 0xD353, 0xBB8A,
+	0xD354, 0xBB8B, 0xD355, 0xBB8C, 0xD356, 0xBB8D, 0xD357, 0xBB8E,
+	0xD358, 0xBB8F, 0xD359, 0xBB90, 0xD35A, 0xBB91, 0xD35B, 0xBB92,
+	0xD35C, 0xBB93, 0xD35D, 0xBB94, 0xD35E, 0xBB95, 0xD35F, 0xBB96,
+	0xD360, 0xBB97, 0xD361, 0xBB98, 0xD362, 0xBB99, 0xD363, 0xBB9A,
+	0xD364, 0xBB9B, 0xD365, 0xBB9C, 0xD366, 0xBB9D, 0xD367, 0xBB9E,
+	0xD368, 0xBB9F, 0xD369, 0xBBA0, 0xD36A, 0xBC41, 0xD36B, 0xBC42,
+	0xD36C, 0xBC43, 0xD36D, 0xBC44, 0xD36E, 0xBC45, 0xD36F, 0xBC46,
+	0xD370, 0xBC47, 0xD371, 0xBC48, 0xD372, 0xBC49, 0xD373, 0xBC4A,
+	0xD374, 0xBC4B, 0xD375, 0xBC4C, 0xD376, 0xBC4D, 0xD377, 0xBC4E,
+	0xD378, 0xBC4F, 0xD379, 0xBC50, 0xD37A, 0xBC51, 0xD37B, 0xBC52,
+	0xD37C, 0xC6DB, 0xD37D, 0xC6DC, 0xD37E, 0xBC53, 0xD37F, 0xBC54,
+	0xD380, 0xC6DD, 0xD381, 0xBC55, 0xD382, 0xBC56, 0xD383, 0xBC57,
+	0xD384, 0xC6DE, 0xD385, 0xBC58, 0xD386, 0xBC59, 0xD387, 0xBC5A,
+	0xD388, 0xBC61, 0xD389, 0xBC62, 0xD38A, 0xBC63, 0xD38B, 0xBC64,
+	0xD38C, 0xC6DF, 0xD38D, 0xC6E0, 0xD38E, 0xBC65, 0xD38F, 0xC6E1,
+	0xD390, 0xC6E2, 0xD391, 0xC6E3, 0xD392, 0xBC66, 0xD393, 0xBC67,
+	0xD394, 0xBC68, 0xD395, 0xBC69, 0xD396, 0xBC6A, 0xD397, 0xBC6B,
+	0xD398, 0xC6E4, 0xD399, 0xC6E5, 0xD39A, 0xBC6C, 0xD39B, 0xBC6D,
+	0xD39C, 0xC6E6, 0xD39D, 0xBC6E, 0xD39E, 0xBC6F, 0xD39F, 0xBC70,
+	0xD3A0, 0xC6E7, 0xD3A1, 0xBC71, 0xD3A2, 0xBC72, 0xD3A3, 0xBC73,
+	0xD3A4, 0xBC74, 0xD3A5, 0xBC75, 0xD3A6, 0xBC76, 0xD3A7, 0xBC77,
+	0xD3A8, 0xC6E8, 0xD3A9, 0xC6E9, 0xD3AA, 0xBC78, 0xD3AB, 0xC6EA,
+	0xD3AC, 0xBC79, 0xD3AD, 0xC6EB, 0xD3AE, 0xBC7A, 0xD3AF, 0xBC81,
+	0xD3B0, 0xBC82, 0xD3B1, 0xBC83, 0xD3B2, 0xBC84, 0xD3B3, 0xBC85,
+	0xD3B4, 0xC6EC, 0xD3B5, 0xBC86, 0xD3B6, 0xBC87, 0xD3B7, 0xBC88,
+	0xD3B8, 0xC6ED, 0xD3B9, 0xBC89, 0xD3BA, 0xBC8A, 0xD3BB, 0xBC8B,
+	0xD3BC, 0xC6EE, 0xD3BD, 0xBC8C, 0xD3BE, 0xBC8D, 0xD3BF, 0xBC8E,
+	0xD3C0, 0xBC8F, 0xD3C1, 0xBC90, 0xD3C2, 0xBC91, 0xD3C3, 0xBC92,
+	0xD3C4, 0xC6EF, 0xD3C5, 0xC6F0, 0xD3C6, 0xBC93, 0xD3C7, 0xBC94,
+	0xD3C8, 0xC6F1, 0xD3C9, 0xC6F2, 0xD3CA, 0xBC95, 0xD3CB, 0xBC96,
+	0xD3CC, 0xBC97, 0xD3CD, 0xBC98, 0xD3CE, 0xBC99, 0xD3CF, 0xBC9A,
+	0xD3D0, 0xC6F3, 0xD3D1, 0xBC9B, 0xD3D2, 0xBC9C, 0xD3D3, 0xBC9D,
+	0xD3D4, 0xBC9E, 0xD3D5, 0xBC9F, 0xD3D6, 0xBCA0, 0xD3D7, 0xBD41,
+	0xD3D8, 0xC6F4, 0xD3D9, 0xBD42, 0xD3DA, 0xBD43, 0xD3DB, 0xBD44,
+	0xD3DC, 0xBD45, 0xD3DD, 0xBD46, 0xD3DE, 0xBD47, 0xD3DF, 0xBD48,
+	0xD3E0, 0xBD49, 0xD3E1, 0xC6F5, 0xD3E2, 0xBD4A, 0xD3E3, 0xC6F6,
+	0xD3E4, 0xBD4B, 0xD3E5, 0xBD4C, 0xD3E6, 0xBD4D, 0xD3E7, 0xBD4E,
+	0xD3E8, 0xBD4F, 0xD3E9, 0xBD50, 0xD3EA, 0xBD51, 0xD3EB, 0xBD52,
+	0xD3EC, 0xC6F7, 0xD3ED, 0xC6F8, 0xD3EE, 0xBD53, 0xD3EF, 0xBD54,
+	0xD3F0, 0xC6F9, 0xD3F1, 0xBD55, 0xD3F2, 0xBD56, 0xD3F3, 0xBD57,
+	0xD3F4, 0xC6FA, 0xD3F5, 0xBD58, 0xD3F6, 0xBD59, 0xD3F7, 0xBD5A,
+	0xD3F8, 0xBD61, 0xD3F9, 0xBD62, 0xD3FA, 0xBD63, 0xD3FB, 0xBD64,
+	0xD3FC, 0xC6FB, 0xD3FD, 0xC6FC, 0xD3FE, 0xBD65, 0xD3FF, 0xC6FD,
+	0xD400, 0xBD66, 0xD401, 0xC6FE, 0xD402, 0xBD67, 0xD403, 0xBD68,
+	0xD404, 0xBD69, 0xD405, 0xBD6A, 0xD406, 0xBD6B, 0xD407, 0xBD6C,
+	0xD408, 0xC7A1, 0xD409, 0xBD6D, 0xD40A, 0xBD6E, 0xD40B, 0xBD6F,
+	0xD40C, 0xBD70, 0xD40D, 0xBD71, 0xD40E, 0xBD72, 0xD40F, 0xBD73,
+	0xD410, 0xBD74, 0xD411, 0xBD75, 0xD412, 0xBD76, 0xD413, 0xBD77,
+	0xD414, 0xBD78, 0xD415, 0xBD79, 0xD416, 0xBD7A, 0xD417, 0xBD81,
+	0xD418, 0xBD82, 0xD419, 0xBD83, 0xD41A, 0xBD84, 0xD41B, 0xBD85,
+	0xD41C, 0xBD86, 0xD41D, 0xC7A2, 0xD41E, 0xBD87, 0xD41F, 0xBD88,
+	0xD420, 0xBD89, 0xD421, 0xBD8A, 0xD422, 0xBD8B, 0xD423, 0xBD8C,
+	0xD424, 0xBD8D, 0xD425, 0xBD8E, 0xD426, 0xBD8F, 0xD427, 0xBD90,
+	0xD428, 0xBD91, 0xD429, 0xBD92, 0xD42A, 0xBD93, 0xD42B, 0xBD94,
+	0xD42C, 0xBD95, 0xD42D, 0xBD96, 0xD42E, 0xBD97, 0xD42F, 0xBD98,
+	0xD430, 0xBD99, 0xD431, 0xBD9A, 0xD432, 0xBD9B, 0xD433, 0xBD9C,
+	0xD434, 0xBD9D, 0xD435, 0xBD9E, 0xD436, 0xBD9F, 0xD437, 0xBDA0,
+	0xD438, 0xBE41, 0xD439, 0xBE42, 0xD43A, 0xBE43, 0xD43B, 0xBE44,
+	0xD43C, 0xBE45, 0xD43D, 0xBE46, 0xD43E, 0xBE47, 0xD43F, 0xBE48,
+	0xD440, 0xC7A3, 0xD441, 0xBE49, 0xD442, 0xBE4A, 0xD443, 0xBE4B,
+	0xD444, 0xC7A4, 0xD445, 0xBE4C, 0xD446, 0xBE4D, 0xD447, 0xBE4E,
+	0xD448, 0xBE4F, 0xD449, 0xBE50, 0xD44A, 0xBE51, 0xD44B, 0xBE52,
+	0xD44C, 0xBE53, 0xD44D, 0xBE54, 0xD44E, 0xBE55, 0xD44F, 0xBE56,
+	0xD450, 0xBE57, 0xD451, 0xBE58, 0xD452, 0xBE59, 0xD453, 0xBE5A,
+	0xD454, 0xBE61, 0xD455, 0xBE62, 0xD456, 0xBE63, 0xD457, 0xBE64,
+	0xD458, 0xBE65, 0xD459, 0xBE66, 0xD45A, 0xBE67, 0xD45B, 0xBE68,
+	0xD45C, 0xC7A5, 0xD45D, 0xBE69, 0xD45E, 0xBE6A, 0xD45F, 0xBE6B,
+	0xD460, 0xC7A6, 0xD461, 0xBE6C, 0xD462, 0xBE6D, 0xD463, 0xBE6E,
+	0xD464, 0xC7A7, 0xD465, 0xBE6F, 0xD466, 0xBE70, 0xD467, 0xBE71,
+	0xD468, 0xBE72, 0xD469, 0xBE73, 0xD46A, 0xBE74, 0xD46B, 0xBE75,
+	0xD46C, 0xBE76, 0xD46D, 0xC7A8, 0xD46E, 0xBE77, 0xD46F, 0xC7A9,
+	0xD470, 0xBE78, 0xD471, 0xBE79, 0xD472, 0xBE7A, 0xD473, 0xBE81,
+	0xD474, 0xBE82, 0xD475, 0xBE83, 0xD476, 0xBE84, 0xD477, 0xBE85,
+	0xD478, 0xC7AA, 0xD479, 0xC7AB, 0xD47A, 0xBE86, 0xD47B, 0xBE87,
+	0xD47C, 0xC7AC, 0xD47D, 0xBE88, 0xD47E, 0xBE89, 0xD47F, 0xC7AD,
+	0xD480, 0xC7AE, 0xD481, 0xBE8A, 0xD482, 0xC7AF, 0xD483, 0xBE8B,
+	0xD484, 0xBE8C, 0xD485, 0xBE8D, 0xD486, 0xBE8E, 0xD487, 0xBE8F,
+	0xD488, 0xC7B0, 0xD489, 0xC7B1, 0xD48A, 0xBE90, 0xD48B, 0xC7B2,
+	0xD48C, 0xBE91, 0xD48D, 0xC7B3, 0xD48E, 0xBE92, 0xD48F, 0xBE93,
+	0xD490, 0xBE94, 0xD491, 0xBE95, 0xD492, 0xBE96, 0xD493, 0xBE97,
+	0xD494, 0xC7B4, 0xD495, 0xBE98, 0xD496, 0xBE99, 0xD497, 0xBE9A,
+	0xD498, 0xBE9B, 0xD499, 0xBE9C, 0xD49A, 0xBE9D, 0xD49B, 0xBE9E,
+	0xD49C, 0xBE9F, 0xD49D, 0xBEA0, 0xD49E, 0xBF41, 0xD49F, 0xBF42,
+	0xD4A0, 0xBF43, 0xD4A1, 0xBF44, 0xD4A2, 0xBF45, 0xD4A3, 0xBF46,
+	0xD4A4, 0xBF47, 0xD4A5, 0xBF48, 0xD4A6, 0xBF49, 0xD4A7, 0xBF4A,
+	0xD4A8, 0xBF4B, 0xD4A9, 0xC7B5, 0xD4AA, 0xBF4C, 0xD4AB, 0xBF4D,
+	0xD4AC, 0xBF4E, 0xD4AD, 0xBF4F, 0xD4AE, 0xBF50, 0xD4AF, 0xBF51,
+	0xD4B0, 0xBF52, 0xD4B1, 0xBF53, 0xD4B2, 0xBF54, 0xD4B3, 0xBF55,
+	0xD4B4, 0xBF56, 0xD4B5, 0xBF57, 0xD4B6, 0xBF58, 0xD4B7, 0xBF59,
+	0xD4B8, 0xBF5A, 0xD4B9, 0xBF61, 0xD4BA, 0xBF62, 0xD4BB, 0xBF63,
+	0xD4BC, 0xBF64, 0xD4BD, 0xBF65, 0xD4BE, 0xBF66, 0xD4BF, 0xBF67,
+	0xD4C0, 0xBF68, 0xD4C1, 0xBF69, 0xD4C2, 0xBF6A, 0xD4C3, 0xBF6B,
+	0xD4C4, 0xBF6C, 0xD4C5, 0xBF6D, 0xD4C6, 0xBF6E, 0xD4C7, 0xBF6F,
+	0xD4C8, 0xBF70, 0xD4C9, 0xBF71, 0xD4CA, 0xBF72, 0xD4CB, 0xBF73,
+	0xD4CC, 0xC7B6, 0xD4CD, 0xBF74, 0xD4CE, 0xBF75, 0xD4CF, 0xBF76,
+	0xD4D0, 0xC7B7, 0xD4D1, 0xBF77, 0xD4D2, 0xBF78, 0xD4D3, 0xBF79,
+	0xD4D4, 0xC7B8, 0xD4D5, 0xBF7A, 0xD4D6, 0xBF81, 0xD4D7, 0xBF82,
+	0xD4D8, 0xBF83, 0xD4D9, 0xBF84, 0xD4DA, 0xBF85, 0xD4DB, 0xBF86,
+	0xD4DC, 0xC7B9, 0xD4DD, 0xBF87, 0xD4DE, 0xBF88, 0xD4DF, 0xC7BA,
+	0xD4E0, 0xBF89, 0xD4E1, 0xBF8A, 0xD4E2, 0xBF8B, 0xD4E3, 0xBF8C,
+	0xD4E4, 0xBF8D, 0xD4E5, 0xBF8E, 0xD4E6, 0xBF8F, 0xD4E7, 0xBF90,
+	0xD4E8, 0xC7BB, 0xD4E9, 0xBF91, 0xD4EA, 0xBF92, 0xD4EB, 0xBF93,
+	0xD4EC, 0xC7BC, 0xD4ED, 0xBF94, 0xD4EE, 0xBF95, 0xD4EF, 0xBF96,
+	0xD4F0, 0xC7BD, 0xD4F1, 0xBF97, 0xD4F2, 0xBF98, 0xD4F3, 0xBF99,
+	0xD4F4, 0xBF9A, 0xD4F5, 0xBF9B, 0xD4F6, 0xBF9C, 0xD4F7, 0xBF9D,
+	0xD4F8, 0xC7BE, 0xD4F9, 0xBF9E, 0xD4FA, 0xBF9F, 0xD4FB, 0xC7BF,
+	0xD4FC, 0xBFA0, 0xD4FD, 0xC7C0, 0xD4FE, 0xC041, 0xD4FF, 0xC042,
+	0xD500, 0xC043, 0xD501, 0xC044, 0xD502, 0xC045, 0xD503, 0xC046,
+	0xD504, 0xC7C1, 0xD505, 0xC047, 0xD506, 0xC048, 0xD507, 0xC049,
+	0xD508, 0xC7C2, 0xD509, 0xC04A, 0xD50A, 0xC04B, 0xD50B, 0xC04C,
+	0xD50C, 0xC7C3, 0xD50D, 0xC04D, 0xD50E, 0xC04E, 0xD50F, 0xC04F,
+	0xD510, 0xC050, 0xD511, 0xC051, 0xD512, 0xC052, 0xD513, 0xC053,
+	0xD514, 0xC7C4, 0xD515, 0xC7C5, 0xD516, 0xC054, 0xD517, 0xC7C6,
+	0xD518, 0xC055, 0xD519, 0xC056, 0xD51A, 0xC057, 0xD51B, 0xC058,
+	0xD51C, 0xC059, 0xD51D, 0xC05A, 0xD51E, 0xC061, 0xD51F, 0xC062,
+	0xD520, 0xC063, 0xD521, 0xC064, 0xD522, 0xC065, 0xD523, 0xC066,
+	0xD524, 0xC067, 0xD525, 0xC068, 0xD526, 0xC069, 0xD527, 0xC06A,
+	0xD528, 0xC06B, 0xD529, 0xC06C, 0xD52A, 0xC06D, 0xD52B, 0xC06E,
+	0xD52C, 0xC06F, 0xD52D, 0xC070, 0xD52E, 0xC071, 0xD52F, 0xC072,
+	0xD530, 0xC073, 0xD531, 0xC074, 0xD532, 0xC075, 0xD533, 0xC076,
+	0xD534, 0xC077, 0xD535, 0xC078, 0xD536, 0xC079, 0xD537, 0xC07A,
+	0xD538, 0xC081, 0xD539, 0xC082, 0xD53A, 0xC083, 0xD53B, 0xC084,
+	0xD53C, 0xC7C7, 0xD53D, 0xC7C8, 0xD53E, 0xC085, 0xD53F, 0xC086,
+	0xD540, 0xC7C9, 0xD541, 0xC087, 0xD542, 0xC088, 0xD543, 0xC089,
+	0xD544, 0xC7CA, 0xD545, 0xC08A, 0xD546, 0xC08B, 0xD547, 0xC08C,
+	0xD548, 0xC08D, 0xD549, 0xC08E, 0xD54A, 0xC08F, 0xD54B, 0xC090,
+	0xD54C, 0xC7CB, 0xD54D, 0xC7CC, 0xD54E, 0xC091, 0xD54F, 0xC7CD,
+	0xD550, 0xC092, 0xD551, 0xC7CE, 0xD552, 0xC093, 0xD553, 0xC094,
+	0xD554, 0xC095, 0xD555, 0xC096, 0xD556, 0xC097, 0xD557, 0xC098,
+	0xD558, 0xC7CF, 0xD559, 0xC7D0, 0xD55A, 0xC099, 0xD55B, 0xC09A,
+	0xD55C, 0xC7D1, 0xD55D, 0xC09B, 0xD55E, 0xC09C, 0xD55F, 0xC09D,
+	0xD560, 0xC7D2, 0xD561, 0xC09E, 0xD562, 0xC09F, 0xD563, 0xC0A0,
+	0xD564, 0xC141, 0xD565, 0xC7D3, 0xD566, 0xC142, 0xD567, 0xC143,
+	0xD568, 0xC7D4, 0xD569, 0xC7D5, 0xD56A, 0xC144, 0xD56B, 0xC7D6,
+	0xD56C, 0xC145, 0xD56D, 0xC7D7, 0xD56E, 0xC146, 0xD56F, 0xC147,
+	0xD570, 0xC148, 0xD571, 0xC149, 0xD572, 0xC14A, 0xD573, 0xC14B,
+	0xD574, 0xC7D8, 0xD575, 0xC7D9, 0xD576, 0xC14C, 0xD577, 0xC14D,
+	0xD578, 0xC7DA, 0xD579, 0xC14E, 0xD57A, 0xC14F, 0xD57B, 0xC150,
+	0xD57C, 0xC7DB, 0xD57D, 0xC151, 0xD57E, 0xC152, 0xD57F, 0xC153,
+	0xD580, 0xC154, 0xD581, 0xC155, 0xD582, 0xC156, 0xD583, 0xC157,
+	0xD584, 0xC7DC, 0xD585, 0xC7DD, 0xD586, 0xC158, 0xD587, 0xC7DE,
+	0xD588, 0xC7DF, 0xD589, 0xC7E0, 0xD58A, 0xC159, 0xD58B, 0xC15A,
+	0xD58C, 0xC161, 0xD58D, 0xC162, 0xD58E, 0xC163, 0xD58F, 0xC164,
+	0xD590, 0xC7E1, 0xD591, 0xC165, 0xD592, 0xC166, 0xD593, 0xC167,
+	0xD594, 0xC168, 0xD595, 0xC169, 0xD596, 0xC16A, 0xD597, 0xC16B,
+	0xD598, 0xC16C, 0xD599, 0xC16D, 0xD59A, 0xC16E, 0xD59B, 0xC16F,
+	0xD59C, 0xC170, 0xD59D, 0xC171, 0xD59E, 0xC172, 0xD59F, 0xC173,
+	0xD5A0, 0xC174, 0xD5A1, 0xC175, 0xD5A2, 0xC176, 0xD5A3, 0xC177,
+	0xD5A4, 0xC178, 0xD5A5, 0xC7E2, 0xD5A6, 0xC179, 0xD5A7, 0xC17A,
+	0xD5A8, 0xC181, 0xD5A9, 0xC182, 0xD5AA, 0xC183, 0xD5AB, 0xC184,
+	0xD5AC, 0xC185, 0xD5AD, 0xC186, 0xD5AE, 0xC187, 0xD5AF, 0xC188,
+	0xD5B0, 0xC189, 0xD5B1, 0xC18A, 0xD5B2, 0xC18B, 0xD5B3, 0xC18C,
+	0xD5B4, 0xC18D, 0xD5B5, 0xC18E, 0xD5B6, 0xC18F, 0xD5B7, 0xC190,
+	0xD5B8, 0xC191, 0xD5B9, 0xC192, 0xD5BA, 0xC193, 0xD5BB, 0xC194,
+	0xD5BC, 0xC195, 0xD5BD, 0xC196, 0xD5BE, 0xC197, 0xD5BF, 0xC198,
+	0xD5C0, 0xC199, 0xD5C1, 0xC19A, 0xD5C2, 0xC19B, 0xD5C3, 0xC19C,
+	0xD5C4, 0xC19D, 0xD5C5, 0xC19E, 0xD5C6, 0xC19F, 0xD5C7, 0xC1A0,
+	0xD5C8, 0xC7E3, 0xD5C9, 0xC7E4, 0xD5CA, 0xC241, 0xD5CB, 0xC242,
+	0xD5CC, 0xC7E5, 0xD5CD, 0xC243, 0xD5CE, 0xC244, 0xD5CF, 0xC245,
+	0xD5D0, 0xC7E6, 0xD5D1, 0xC246, 0xD5D2, 0xC7E7, 0xD5D3, 0xC247,
+	0xD5D4, 0xC248, 0xD5D5, 0xC249, 0xD5D6, 0xC24A, 0xD5D7, 0xC24B,
+	0xD5D8, 0xC7E8, 0xD5D9, 0xC7E9, 0xD5DA, 0xC24C, 0xD5DB, 0xC7EA,
+	0xD5DC, 0xC24D, 0xD5DD, 0xC7EB, 0xD5DE, 0xC24E, 0xD5DF, 0xC24F,
+	0xD5E0, 0xC250, 0xD5E1, 0xC251, 0xD5E2, 0xC252, 0xD5E3, 0xC253,
+	0xD5E4, 0xC7EC, 0xD5E5, 0xC7ED, 0xD5E6, 0xC254, 0xD5E7, 0xC255,
+	0xD5E8, 0xC7EE, 0xD5E9, 0xC256, 0xD5EA, 0xC257, 0xD5EB, 0xC258,
+	0xD5EC, 0xC7EF, 0xD5ED, 0xC259, 0xD5EE, 0xC25A, 0xD5EF, 0xC261,
+	0xD5F0, 0xC262, 0xD5F1, 0xC263, 0xD5F2, 0xC264, 0xD5F3, 0xC265,
+	0xD5F4, 0xC7F0, 0xD5F5, 0xC7F1, 0xD5F6, 0xC266, 0xD5F7, 0xC7F2,
+	0xD5F8, 0xC267, 0xD5F9, 0xC7F3, 0xD5FA, 0xC268, 0xD5FB, 0xC269,
+	0xD5FC, 0xC26A, 0xD5FD, 0xC26B, 0xD5FE, 0xC26C, 0xD5FF, 0xC26D,
+	0xD600, 0xC7F4, 0xD601, 0xC7F5, 0xD602, 0xC26E, 0xD603, 0xC26F,
+	0xD604, 0xC7F6, 0xD605, 0xC270, 0xD606, 0xC271, 0xD607, 0xC272,
+	0xD608, 0xC7F7, 0xD609, 0xC273, 0xD60A, 0xC274, 0xD60B, 0xC275,
+	0xD60C, 0xC276, 0xD60D, 0xC277, 0xD60E, 0xC278, 0xD60F, 0xC279,
+	0xD610, 0xC7F8, 0xD611, 0xC7F9, 0xD612, 0xC27A, 0xD613, 0xC7FA,
+	0xD614, 0xC7FB, 0xD615, 0xC7FC, 0xD616, 0xC281, 0xD617, 0xC282,
+	0xD618, 0xC283, 0xD619, 0xC284, 0xD61A, 0xC285, 0xD61B, 0xC286,
+	0xD61C, 0xC7FD, 0xD61D, 0xC287, 0xD61E, 0xC288, 0xD61F, 0xC289,
+	0xD620, 0xC7FE, 0xD621, 0xC28A, 0xD622, 0xC28B, 0xD623, 0xC28C,
+	0xD624, 0xC8A1, 0xD625, 0xC28D, 0xD626, 0xC28E, 0xD627, 0xC28F,
+	0xD628, 0xC290, 0xD629, 0xC291, 0xD62A, 0xC292, 0xD62B, 0xC293,
+	0xD62C, 0xC294, 0xD62D, 0xC8A2, 0xD62E, 0xC295, 0xD62F, 0xC296,
+	0xD630, 0xC297, 0xD631, 0xC298, 0xD632, 0xC299, 0xD633, 0xC29A,
+	0xD634, 0xC29B, 0xD635, 0xC29C, 0xD636, 0xC29D, 0xD637, 0xC29E,
+	0xD638, 0xC8A3, 0xD639, 0xC8A4, 0xD63A, 0xC29F, 0xD63B, 0xC2A0,
+	0xD63C, 0xC8A5, 0xD63D, 0xC341, 0xD63E, 0xC342, 0xD63F, 0xC343,
+	0xD640, 0xC8A6, 0xD641, 0xC344, 0xD642, 0xC345, 0xD643, 0xC346,
+	0xD644, 0xC347, 0xD645, 0xC8A7, 0xD646, 0xC348, 0xD647, 0xC349,
+	0xD648, 0xC8A8, 0xD649, 0xC8A9, 0xD64A, 0xC34A, 0xD64B, 0xC8AA,
+	0xD64C, 0xC34B, 0xD64D, 0xC8AB, 0xD64E, 0xC34C, 0xD64F, 0xC34D,
+	0xD650, 0xC34E, 0xD651, 0xC8AC, 0xD652, 0xC34F, 0xD653, 0xC350,
+	0xD654, 0xC8AD, 0xD655, 0xC8AE, 0xD656, 0xC351, 0xD657, 0xC352,
+	0xD658, 0xC8AF, 0xD659, 0xC353, 0xD65A, 0xC354, 0xD65B, 0xC355,
+	0xD65C, 0xC8B0, 0xD65D, 0xC356, 0xD65E, 0xC357, 0xD65F, 0xC358,
+	0xD660, 0xC359, 0xD661, 0xC35A, 0xD662, 0xC361, 0xD663, 0xC362,
+	0xD664, 0xC363, 0xD665, 0xC364, 0xD666, 0xC365, 0xD667, 0xC8B1,
+	0xD668, 0xC366, 0xD669, 0xC8B2, 0xD66A, 0xC367, 0xD66B, 0xC368,
+	0xD66C, 0xC369, 0xD66D, 0xC36A, 0xD66E, 0xC36B, 0xD66F, 0xC36C,
+	0xD670, 0xC8B3, 0xD671, 0xC8B4, 0xD672, 0xC36D, 0xD673, 0xC36E,
+	0xD674, 0xC8B5, 0xD675, 0xC36F, 0xD676, 0xC370, 0xD677, 0xC371,
+	0xD678, 0xC372, 0xD679, 0xC373, 0xD67A, 0xC374, 0xD67B, 0xC375,
+	0xD67C, 0xC376, 0xD67D, 0xC377, 0xD67E, 0xC378, 0xD67F, 0xC379,
+	0xD680, 0xC37A, 0xD681, 0xC381, 0xD682, 0xC382, 0xD683, 0xC8B6,
+	0xD684, 0xC383, 0xD685, 0xC8B7, 0xD686, 0xC384, 0xD687, 0xC385,
+	0xD688, 0xC386, 0xD689, 0xC387, 0xD68A, 0xC388, 0xD68B, 0xC389,
+	0xD68C, 0xC8B8, 0xD68D, 0xC8B9, 0xD68E, 0xC38A, 0xD68F, 0xC38B,
+	0xD690, 0xC8BA, 0xD691, 0xC38C, 0xD692, 0xC38D, 0xD693, 0xC38E,
+	0xD694, 0xC8BB, 0xD695, 0xC38F, 0xD696, 0xC390, 0xD697, 0xC391,
+	0xD698, 0xC392, 0xD699, 0xC393, 0xD69A, 0xC394, 0xD69B, 0xC395,
+	0xD69C, 0xC396, 0xD69D, 0xC8BC, 0xD69E, 0xC397, 0xD69F, 0xC8BD,
+	0xD6A0, 0xC398, 0xD6A1, 0xC8BE, 0xD6A2, 0xC399, 0xD6A3, 0xC39A,
+	0xD6A4, 0xC39B, 0xD6A5, 0xC39C, 0xD6A6, 0xC39D, 0xD6A7, 0xC39E,
+	0xD6A8, 0xC8BF, 0xD6A9, 0xC39F, 0xD6AA, 0xC3A0, 0xD6AB, 0xC441,
+	0xD6AC, 0xC8C0, 0xD6AD, 0xC442, 0xD6AE, 0xC443, 0xD6AF, 0xC444,
+	0xD6B0, 0xC8C1, 0xD6B1, 0xC445, 0xD6B2, 0xC446, 0xD6B3, 0xC447,
+	0xD6B4, 0xC448, 0xD6B5, 0xC449, 0xD6B6, 0xC44A, 0xD6B7, 0xC44B,
+	0xD6B8, 0xC44C, 0xD6B9, 0xC8C2, 0xD6BA, 0xC44D, 0xD6BB, 0xC8C3,
+	0xD6BC, 0xC44E, 0xD6BD, 0xC44F, 0xD6BE, 0xC450, 0xD6BF, 0xC451,
+	0xD6C0, 0xC452, 0xD6C1, 0xC453, 0xD6C2, 0xC454, 0xD6C3, 0xC455,
+	0xD6C4, 0xC8C4, 0xD6C5, 0xC8C5, 0xD6C6, 0xC456, 0xD6C7, 0xC457,
+	0xD6C8, 0xC8C6, 0xD6C9, 0xC458, 0xD6CA, 0xC459, 0xD6CB, 0xC45A,
+	0xD6CC, 0xC8C7, 0xD6CD, 0xC461, 0xD6CE, 0xC462, 0xD6CF, 0xC463,
+	0xD6D0, 0xC464, 0xD6D1, 0xC8C8, 0xD6D2, 0xC465, 0xD6D3, 0xC466,
+	0xD6D4, 0xC8C9, 0xD6D5, 0xC467, 0xD6D6, 0xC468, 0xD6D7, 0xC8CA,
+	0xD6D8, 0xC469, 0xD6D9, 0xC8CB, 0xD6DA, 0xC46A, 0xD6DB, 0xC46B,
+	0xD6DC, 0xC46C, 0xD6DD, 0xC46D, 0xD6DE, 0xC46E, 0xD6DF, 0xC46F,
+	0xD6E0, 0xC8CC, 0xD6E1, 0xC470, 0xD6E2, 0xC471, 0xD6E3, 0xC472,
+	0xD6E4, 0xC8CD, 0xD6E5, 0xC473, 0xD6E6, 0xC474, 0xD6E7, 0xC475,
+	0xD6E8, 0xC8CE, 0xD6E9, 0xC476, 0xD6EA, 0xC477, 0xD6EB, 0xC478,
+	0xD6EC, 0xC479, 0xD6ED, 0xC47A, 0xD6EE, 0xC481, 0xD6EF, 0xC482,
+	0xD6F0, 0xC8CF, 0xD6F1, 0xC483, 0xD6F2, 0xC484, 0xD6F3, 0xC485,
+	0xD6F4, 0xC486, 0xD6F5, 0xC8D0, 0xD6F6, 0xC487, 0xD6F7, 0xC488,
+	0xD6F8, 0xC489, 0xD6F9, 0xC48A, 0xD6FA, 0xC48B, 0xD6FB, 0xC48C,
+	0xD6FC, 0xC8D1, 0xD6FD, 0xC8D2, 0xD6FE, 0xC48D, 0xD6FF, 0xC48E,
+	0xD700, 0xC8D3, 0xD701, 0xC48F, 0xD702, 0xC490, 0xD703, 0xC491,
+	0xD704, 0xC8D4, 0xD705, 0xC492, 0xD706, 0xC493, 0xD707, 0xC494,
+	0xD708, 0xC495, 0xD709, 0xC496, 0xD70A, 0xC497, 0xD70B, 0xC498,
+	0xD70C, 0xC499, 0xD70D, 0xC49A, 0xD70E, 0xC49B, 0xD70F, 0xC49C,
+	0xD710, 0xC49D, 0xD711, 0xC8D5, 0xD712, 0xC49E, 0xD713, 0xC49F,
+	0xD714, 0xC4A0, 0xD715, 0xC541, 0xD716, 0xC542, 0xD717, 0xC543,
+	0xD718, 0xC8D6, 0xD719, 0xC8D7, 0xD71A, 0xC544, 0xD71B, 0xC545,
+	0xD71C, 0xC8D8, 0xD71D, 0xC546, 0xD71E, 0xC547, 0xD71F, 0xC548,
+	0xD720, 0xC8D9, 0xD721, 0xC549, 0xD722, 0xC54A, 0xD723, 0xC54B,
+	0xD724, 0xC54C, 0xD725, 0xC54D, 0xD726, 0xC54E, 0xD727, 0xC54F,
+	0xD728, 0xC8DA, 0xD729, 0xC8DB, 0xD72A, 0xC550, 0xD72B, 0xC8DC,
+	0xD72C, 0xC551, 0xD72D, 0xC8DD, 0xD72E, 0xC552, 0xD72F, 0xC553,
+	0xD730, 0xC554, 0xD731, 0xC555, 0xD732, 0xC556, 0xD733, 0xC557,
+	0xD734, 0xC8DE, 0xD735, 0xC8DF, 0xD736, 0xC558, 0xD737, 0xC559,
+	0xD738, 0xC8E0, 0xD739, 0xC55A, 0xD73A, 0xC561, 0xD73B, 0xC562,
+	0xD73C, 0xC8E1, 0xD73D, 0xC563, 0xD73E, 0xC564, 0xD73F, 0xC565,
+	0xD740, 0xC566, 0xD741, 0xC567, 0xD742, 0xC568, 0xD743, 0xC569,
+	0xD744, 0xC8E2, 0xD745, 0xC56A, 0xD746, 0xC56B, 0xD747, 0xC8E3,
+	0xD748, 0xC56C, 0xD749, 0xC8E4, 0xD74A, 0xC56D, 0xD74B, 0xC56E,
+	0xD74C, 0xC56F, 0xD74D, 0xC570, 0xD74E, 0xC571, 0xD74F, 0xC572,
+	0xD750, 0xC8E5, 0xD751, 0xC8E6, 0xD752, 0xC573, 0xD753, 0xC574,
+	0xD754, 0xC8E7, 0xD755, 0xC575, 0xD756, 0xC8E8, 0xD757, 0xC8E9,
+	0xD758, 0xC8EA, 0xD759, 0xC8EB, 0xD75A, 0xC576, 0xD75B, 0xC577,
+	0xD75C, 0xC578, 0xD75D, 0xC579, 0xD75E, 0xC57A, 0xD75F, 0xC581,
+	0xD760, 0xC8EC, 0xD761, 0xC8ED, 0xD762, 0xC582, 0xD763, 0xC8EE,
+	0xD764, 0xC583, 0xD765, 0xC8EF, 0xD766, 0xC584, 0xD767, 0xC585,
+	0xD768, 0xC586, 0xD769, 0xC8F0, 0xD76A, 0xC587, 0xD76B, 0xC588,
+	0xD76C, 0xC8F1, 0xD76D, 0xC589, 0xD76E, 0xC58A, 0xD76F, 0xC58B,
+	0xD770, 0xC8F2, 0xD771, 0xC58C, 0xD772, 0xC58D, 0xD773, 0xC58E,
+	0xD774, 0xC8F3, 0xD775, 0xC58F, 0xD776, 0xC590, 0xD777, 0xC591,
+	0xD778, 0xC592, 0xD779, 0xC593, 0xD77A, 0xC594, 0xD77B, 0xC595,
+	0xD77C, 0xC8F4, 0xD77D, 0xC8F5, 0xD77E, 0xC596, 0xD77F, 0xC597,
+	0xD780, 0xC598, 0xD781, 0xC8F6, 0xD782, 0xC599, 0xD783, 0xC59A,
+	0xD784, 0xC59B, 0xD785, 0xC59C, 0xD786, 0xC59D, 0xD787, 0xC59E,
+	0xD788, 0xC8F7, 0xD789, 0xC8F8, 0xD78A, 0xC59F, 0xD78B, 0xC5A0,
+	0xD78C, 0xC8F9, 0xD78D, 0xC641, 0xD78E, 0xC642, 0xD78F, 0xC643,
+	0xD790, 0xC8FA, 0xD791, 0xC644, 0xD792, 0xC645, 0xD793, 0xC646,
+	0xD794, 0xC647, 0xD795, 0xC648, 0xD796, 0xC649, 0xD797, 0xC64A,
+	0xD798, 0xC8FB, 0xD799, 0xC8FC, 0xD79A, 0xC64B, 0xD79B, 0xC8FD,
+	0xD79C, 0xC64C, 0xD79D, 0xC8FE, 0xD79E, 0xC64D, 0xD79F, 0xC64E,
+	0xD7A0, 0xC64F, 0xD7A1, 0xC650, 0xD7A2, 0xC651, 0xD7A3, 0xC652,
+	0xF900, 0xCBD0, 0xF901, 0xCBD6, 0xF902, 0xCBE7, 0xF903, 0xCDCF,
+	0xF904, 0xCDE8, 0xF905, 0xCEAD, 0xF906, 0xCFFB, 0xF907, 0xD0A2,
+	0xF908, 0xD0B8, 0xF909, 0xD0D0, 0xF90A, 0xD0DD, 0xF90B, 0xD1D4,
+	0xF90C, 0xD1D5, 0xF90D, 0xD1D8, 0xF90E, 0xD1DB, 0xF90F, 0xD1DC,
+	0xF910, 0xD1DD, 0xF911, 0xD1DE, 0xF912, 0xD1DF, 0xF913, 0xD1E0,
+	0xF914, 0xD1E2, 0xF915, 0xD1E3, 0xF916, 0xD1E4, 0xF917, 0xD1E5,
+	0xF918, 0xD1E6, 0xF919, 0xD1E8, 0xF91A, 0xD1E9, 0xF91B, 0xD1EA,
+	0xF91C, 0xD1EB, 0xF91D, 0xD1ED, 0xF91E, 0xD1EF, 0xF91F, 0xD1F0,
+	0xF920, 0xD1F2, 0xF921, 0xD1F6, 0xF922, 0xD1FA, 0xF923, 0xD1FC,
+	0xF924, 0xD1FD, 0xF925, 0xD1FE, 0xF926, 0xD2A2, 0xF927, 0xD2A3,
+	0xF928, 0xD2A7, 0xF929, 0xD2A8, 0xF92A, 0xD2A9, 0xF92B, 0xD2AA,
+	0xF92C, 0xD2AB, 0xF92D, 0xD2AD, 0xF92E, 0xD2B2, 0xF92F, 0xD2BE,
+	0xF930, 0xD2C2, 0xF931, 0xD2C3, 0xF932, 0xD2C4, 0xF933, 0xD2C6,
+	0xF934, 0xD2C7, 0xF935, 0xD2C8, 0xF936, 0xD2C9, 0xF937, 0xD2CA,
+	0xF938, 0xD2CB, 0xF939, 0xD2CD, 0xF93A, 0xD2CE, 0xF93B, 0xD2CF,
+	0xF93C, 0xD2D0, 0xF93D, 0xD2D1, 0xF93E, 0xD2D2, 0xF93F, 0xD2D3,
+	0xF940, 0xD2D4, 0xF941, 0xD2D5, 0xF942, 0xD2D6, 0xF943, 0xD2D7,
+	0xF944, 0xD2D9, 0xF945, 0xD2DA, 0xF946, 0xD2DE, 0xF947, 0xD2DF,
+	0xF948, 0xD2E1, 0xF949, 0xD2E2, 0xF94A, 0xD2E4, 0xF94B, 0xD2E5,
+	0xF94C, 0xD2E6, 0xF94D, 0xD2E7, 0xF94E, 0xD2E8, 0xF94F, 0xD2E9,
+	0xF950, 0xD2EA, 0xF951, 0xD2EB, 0xF952, 0xD2F0, 0xF953, 0xD2F1,
+	0xF954, 0xD2F2, 0xF955, 0xD2F3, 0xF956, 0xD2F4, 0xF957, 0xD2F5,
+	0xF958, 0xD2F7, 0xF959, 0xD2F8, 0xF95A, 0xD4E6, 0xF95B, 0xD4FC,
+	0xF95C, 0xD5A5, 0xF95D, 0xD5AB, 0xF95E, 0xD5AE, 0xF95F, 0xD6B8,
+	0xF960, 0xD6CD, 0xF961, 0xD7CB, 0xF962, 0xD7E4, 0xF963, 0xDBC5,
+	0xF964, 0xDBE4, 0xF965, 0xDCA5, 0xF966, 0xDDA5, 0xF967, 0xDDD5,
+	0xF968, 0xDDF4, 0xF969, 0xDEFC, 0xF96A, 0xDEFE, 0xF96B, 0xDFB3,
+	0xF96C, 0xDFE1, 0xF96D, 0xDFE8, 0xF96E, 0xE0F1, 0xF96F, 0xE1AD,
+	0xF970, 0xE1ED, 0xF971, 0xE3F5, 0xF972, 0xE4A1, 0xF973, 0xE4A9,
+	0xF974, 0xE5AE, 0xF975, 0xE5B1, 0xF976, 0xE5B2, 0xF977, 0xE5B9,
+	0xF978, 0xE5BB, 0xF979, 0xE5BC, 0xF97A, 0xE5C4, 0xF97B, 0xE5CE,
+	0xF97C, 0xE5D0, 0xF97D, 0xE5D2, 0xF97E, 0xE5D6, 0xF97F, 0xE5FA,
+	0xF980, 0xE5FB, 0xF981, 0xE5FC, 0xF982, 0xE5FE, 0xF983, 0xE6A1,
+	0xF984, 0xE6A4, 0xF985, 0xE6A7, 0xF986, 0xE6AD, 0xF987, 0xE6AF,
+	0xF988, 0xE6B0, 0xF989, 0xE6B1, 0xF98A, 0xE6B3, 0xF98B, 0xE6B7,
+	0xF98C, 0xE6B8, 0xF98D, 0xE6BC, 0xF98E, 0xE6C4, 0xF98F, 0xE6C6,
+	0xF990, 0xE6C7, 0xF991, 0xE6CA, 0xF992, 0xE6D2, 0xF993, 0xE6D6,
+	0xF994, 0xE6D9, 0xF995, 0xE6DC, 0xF996, 0xE6DF, 0xF997, 0xE6E1,
+	0xF998, 0xE6E4, 0xF999, 0xE6E5, 0xF99A, 0xE6E6, 0xF99B, 0xE6E8,
+	0xF99C, 0xE6EA, 0xF99D, 0xE6EB, 0xF99E, 0xE6EC, 0xF99F, 0xE6EF,
+	0xF9A0, 0xE6F1, 0xF9A1, 0xE6F2, 0xF9A2, 0xE6F5, 0xF9A3, 0xE6F6,
+	0xF9A4, 0xE6F7, 0xF9A5, 0xE6F9, 0xF9A6, 0xE7A1, 0xF9A7, 0xE7A6,
+	0xF9A8, 0xE7A9, 0xF9A9, 0xE7AA, 0xF9AA, 0xE7AC, 0xF9AB, 0xE7AD,
+	0xF9AC, 0xE7B0, 0xF9AD, 0xE7BF, 0xF9AE, 0xE7C1, 0xF9AF, 0xE7C6,
+	0xF9B0, 0xE7C7, 0xF9B1, 0xE7CB, 0xF9B2, 0xE7CD, 0xF9B3, 0xE7CF,
+	0xF9B4, 0xE7D0, 0xF9B5, 0xE7D3, 0xF9B6, 0xE7DF, 0xF9B7, 0xE7E4,
+	0xF9B8, 0xE7E6, 0xF9B9, 0xE7F7, 0xF9BA, 0xE8E7, 0xF9BB, 0xE8E8,
+	0xF9BC, 0xE8F0, 0xF9BD, 0xE8F1, 0xF9BE, 0xE8F7, 0xF9BF, 0xE8F9,
+	0xF9C0, 0xE8FB, 0xF9C1, 0xE8FE, 0xF9C2, 0xE9A7, 0xF9C3, 0xE9AC,
+	0xF9C4, 0xE9CC, 0xF9C5, 0xE9F7, 0xF9C6, 0xEAC1, 0xF9C7, 0xEAE5,
+	0xF9C8, 0xEAF4, 0xF9C9, 0xEAF7, 0xF9CA, 0xEAFC, 0xF9CB, 0xEAFE,
+	0xF9CC, 0xEBA4, 0xF9CD, 0xEBA7, 0xF9CE, 0xEBA9, 0xF9CF, 0xEBAA,
+	0xF9D0, 0xEBBA, 0xF9D1, 0xEBBB, 0xF9D2, 0xEBBD, 0xF9D3, 0xEBC1,
+	0xF9D4, 0xEBC2, 0xF9D5, 0xEBC6, 0xF9D6, 0xEBC7, 0xF9D7, 0xEBCC,
+	0xF9D8, 0xEBCF, 0xF9D9, 0xEBD0, 0xF9DA, 0xEBD1, 0xF9DB, 0xEBD2,
+	0xF9DC, 0xEBD8, 0xF9DD, 0xECA6, 0xF9DE, 0xECA7, 0xF9DF, 0xECAA,
+	0xF9E0, 0xECAF, 0xF9E1, 0xECB0, 0xF9E2, 0xECB1, 0xF9E3, 0xECB2,
+	0xF9E4, 0xECB5, 0xF9E5, 0xECB8, 0xF9E6, 0xECBA, 0xF9E7, 0xECC0,
+	0xF9E8, 0xECC1, 0xF9E9, 0xECC5, 0xF9EA, 0xECC6, 0xF9EB, 0xECC9,
+	0xF9EC, 0xECCA, 0xF9ED, 0xECD5, 0xF9EE, 0xECDD, 0xF9EF, 0xECDE,
+	0xF9F0, 0xECE1, 0xF9F1, 0xECE4, 0xF9F2, 0xECE7, 0xF9F3, 0xECE8,
+	0xF9F4, 0xECF7, 0xF9F5, 0xECF8, 0xF9F6, 0xECFA, 0xF9F7, 0xEDA1,
+	0xF9F8, 0xEDA2, 0xF9F9, 0xEDA3, 0xF9FA, 0xEDEE, 0xF9FB, 0xEEDB,
+	0xF9FC, 0xF2BD, 0xF9FD, 0xF2FA, 0xF9FE, 0xF3B1, 0xF9FF, 0xF4A7,
+	0xFA00, 0xF4EE, 0xFA01, 0xF6F4, 0xFA02, 0xF6F6, 0xFA03, 0xF7B8,
+	0xFA04, 0xF7C8, 0xFA05, 0xF7D3, 0xFA06, 0xF8DB, 0xFA07, 0xF8F0,
+	0xFA08, 0xFAA1, 0xFA09, 0xFAA2, 0xFA0A, 0xFAE6, 0xFA0B, 0xFCA9,
+	0xFF01, 0xA3A1, 0xFF02, 0xA3A2, 0xFF03, 0xA3A3, 0xFF04, 0xA3A4,
+	0xFF05, 0xA3A5, 0xFF06, 0xA3A6, 0xFF07, 0xA3A7, 0xFF08, 0xA3A8,
+	0xFF09, 0xA3A9, 0xFF0A, 0xA3AA, 0xFF0B, 0xA3AB, 0xFF0C, 0xA3AC,
+	0xFF0D, 0xA3AD, 0xFF0E, 0xA3AE, 0xFF0F, 0xA3AF, 0xFF10, 0xA3B0,
+	0xFF11, 0xA3B1, 0xFF12, 0xA3B2, 0xFF13, 0xA3B3, 0xFF14, 0xA3B4,
+	0xFF15, 0xA3B5, 0xFF16, 0xA3B6, 0xFF17, 0xA3B7, 0xFF18, 0xA3B8,
+	0xFF19, 0xA3B9, 0xFF1A, 0xA3BA, 0xFF1B, 0xA3BB, 0xFF1C, 0xA3BC,
+	0xFF1D, 0xA3BD, 0xFF1E, 0xA3BE, 0xFF1F, 0xA3BF, 0xFF20, 0xA3C0,
+	0xFF21, 0xA3C1, 0xFF22, 0xA3C2, 0xFF23, 0xA3C3, 0xFF24, 0xA3C4,
+	0xFF25, 0xA3C5, 0xFF26, 0xA3C6, 0xFF27, 0xA3C7, 0xFF28, 0xA3C8,
+	0xFF29, 0xA3C9, 0xFF2A, 0xA3CA, 0xFF2B, 0xA3CB, 0xFF2C, 0xA3CC,
+	0xFF2D, 0xA3CD, 0xFF2E, 0xA3CE, 0xFF2F, 0xA3CF, 0xFF30, 0xA3D0,
+	0xFF31, 0xA3D1, 0xFF32, 0xA3D2, 0xFF33, 0xA3D3, 0xFF34, 0xA3D4,
+	0xFF35, 0xA3D5, 0xFF36, 0xA3D6, 0xFF37, 0xA3D7, 0xFF38, 0xA3D8,
+	0xFF39, 0xA3D9, 0xFF3A, 0xA3DA, 0xFF3B, 0xA3DB, 0xFF3C, 0xA1AC,
+	0xFF3D, 0xA3DD, 0xFF3E, 0xA3DE, 0xFF3F, 0xA3DF, 0xFF40, 0xA3E0,
+	0xFF41, 0xA3E1, 0xFF42, 0xA3E2, 0xFF43, 0xA3E3, 0xFF44, 0xA3E4,
+	0xFF45, 0xA3E5, 0xFF46, 0xA3E6, 0xFF47, 0xA3E7, 0xFF48, 0xA3E8,
+	0xFF49, 0xA3E9, 0xFF4A, 0xA3EA, 0xFF4B, 0xA3EB, 0xFF4C, 0xA3EC,
+	0xFF4D, 0xA3ED, 0xFF4E, 0xA3EE, 0xFF4F, 0xA3EF, 0xFF50, 0xA3F0,
+	0xFF51, 0xA3F1, 0xFF52, 0xA3F2, 0xFF53, 0xA3F3, 0xFF54, 0xA3F4,
+	0xFF55, 0xA3F5, 0xFF56, 0xA3F6, 0xFF57, 0xA3F7, 0xFF58, 0xA3F8,
+	0xFF59, 0xA3F9, 0xFF5A, 0xA3FA, 0xFF5B, 0xA3FB, 0xFF5C, 0xA3FC,
+	0xFF5D, 0xA3FD, 0xFF5E, 0xA2A6, 0xFFE0, 0xA1CB, 0xFFE1, 0xA1CC,
+	0xFFE2, 0xA1FE, 0xFFE3, 0xA3FE, 0xFFE5, 0xA1CD, 0xFFE6, 0xA3DC,
+	0, 0
+};
+
+static
+const WCHAR oem2uni[] = {
+/*	OEM - Unicode,  OEM - Unicode,  OEM - Unicode,  OEM - Unicode */
+	0x8141, 0xAC02, 0x8142, 0xAC03, 0x8143, 0xAC05, 0x8144, 0xAC06,
+	0x8145, 0xAC0B, 0x8146, 0xAC0C, 0x8147, 0xAC0D, 0x8148, 0xAC0E,
+	0x8149, 0xAC0F, 0x814A, 0xAC18, 0x814B, 0xAC1E, 0x814C, 0xAC1F,
+	0x814D, 0xAC21, 0x814E, 0xAC22, 0x814F, 0xAC23, 0x8150, 0xAC25,
+	0x8151, 0xAC26, 0x8152, 0xAC27, 0x8153, 0xAC28, 0x8154, 0xAC29,
+	0x8155, 0xAC2A, 0x8156, 0xAC2B, 0x8157, 0xAC2E, 0x8158, 0xAC32,
+	0x8159, 0xAC33, 0x815A, 0xAC34, 0x8161, 0xAC35, 0x8162, 0xAC36,
+	0x8163, 0xAC37, 0x8164, 0xAC3A, 0x8165, 0xAC3B, 0x8166, 0xAC3D,
+	0x8167, 0xAC3E, 0x8168, 0xAC3F, 0x8169, 0xAC41, 0x816A, 0xAC42,
+	0x816B, 0xAC43, 0x816C, 0xAC44, 0x816D, 0xAC45, 0x816E, 0xAC46,
+	0x816F, 0xAC47, 0x8170, 0xAC48, 0x8171, 0xAC49, 0x8172, 0xAC4A,
+	0x8173, 0xAC4C, 0x8174, 0xAC4E, 0x8175, 0xAC4F, 0x8176, 0xAC50,
+	0x8177, 0xAC51, 0x8178, 0xAC52, 0x8179, 0xAC53, 0x817A, 0xAC55,
+	0x8181, 0xAC56, 0x8182, 0xAC57, 0x8183, 0xAC59, 0x8184, 0xAC5A,
+	0x8185, 0xAC5B, 0x8186, 0xAC5D, 0x8187, 0xAC5E, 0x8188, 0xAC5F,
+	0x8189, 0xAC60, 0x818A, 0xAC61, 0x818B, 0xAC62, 0x818C, 0xAC63,
+	0x818D, 0xAC64, 0x818E, 0xAC65, 0x818F, 0xAC66, 0x8190, 0xAC67,
+	0x8191, 0xAC68, 0x8192, 0xAC69, 0x8193, 0xAC6A, 0x8194, 0xAC6B,
+	0x8195, 0xAC6C, 0x8196, 0xAC6D, 0x8197, 0xAC6E, 0x8198, 0xAC6F,
+	0x8199, 0xAC72, 0x819A, 0xAC73, 0x819B, 0xAC75, 0x819C, 0xAC76,
+	0x819D, 0xAC79, 0x819E, 0xAC7B, 0x819F, 0xAC7C, 0x81A0, 0xAC7D,
+	0x81A1, 0xAC7E, 0x81A2, 0xAC7F, 0x81A3, 0xAC82, 0x81A4, 0xAC87,
+	0x81A5, 0xAC88, 0x81A6, 0xAC8D, 0x81A7, 0xAC8E, 0x81A8, 0xAC8F,
+	0x81A9, 0xAC91, 0x81AA, 0xAC92, 0x81AB, 0xAC93, 0x81AC, 0xAC95,
+	0x81AD, 0xAC96, 0x81AE, 0xAC97, 0x81AF, 0xAC98, 0x81B0, 0xAC99,
+	0x81B1, 0xAC9A, 0x81B2, 0xAC9B, 0x81B3, 0xAC9E, 0x81B4, 0xACA2,
+	0x81B5, 0xACA3, 0x81B6, 0xACA4, 0x81B7, 0xACA5, 0x81B8, 0xACA6,
+	0x81B9, 0xACA7, 0x81BA, 0xACAB, 0x81BB, 0xACAD, 0x81BC, 0xACAE,
+	0x81BD, 0xACB1, 0x81BE, 0xACB2, 0x81BF, 0xACB3, 0x81C0, 0xACB4,
+	0x81C1, 0xACB5, 0x81C2, 0xACB6, 0x81C3, 0xACB7, 0x81C4, 0xACBA,
+	0x81C5, 0xACBE, 0x81C6, 0xACBF, 0x81C7, 0xACC0, 0x81C8, 0xACC2,
+	0x81C9, 0xACC3, 0x81CA, 0xACC5, 0x81CB, 0xACC6, 0x81CC, 0xACC7,
+	0x81CD, 0xACC9, 0x81CE, 0xACCA, 0x81CF, 0xACCB, 0x81D0, 0xACCD,
+	0x81D1, 0xACCE, 0x81D2, 0xACCF, 0x81D3, 0xACD0, 0x81D4, 0xACD1,
+	0x81D5, 0xACD2, 0x81D6, 0xACD3, 0x81D7, 0xACD4, 0x81D8, 0xACD6,
+	0x81D9, 0xACD8, 0x81DA, 0xACD9, 0x81DB, 0xACDA, 0x81DC, 0xACDB,
+	0x81DD, 0xACDC, 0x81DE, 0xACDD, 0x81DF, 0xACDE, 0x81E0, 0xACDF,
+	0x81E1, 0xACE2, 0x81E2, 0xACE3, 0x81E3, 0xACE5, 0x81E4, 0xACE6,
+	0x81E5, 0xACE9, 0x81E6, 0xACEB, 0x81E7, 0xACED, 0x81E8, 0xACEE,
+	0x81E9, 0xACF2, 0x81EA, 0xACF4, 0x81EB, 0xACF7, 0x81EC, 0xACF8,
+	0x81ED, 0xACF9, 0x81EE, 0xACFA, 0x81EF, 0xACFB, 0x81F0, 0xACFE,
+	0x81F1, 0xACFF, 0x81F2, 0xAD01, 0x81F3, 0xAD02, 0x81F4, 0xAD03,
+	0x81F5, 0xAD05, 0x81F6, 0xAD07, 0x81F7, 0xAD08, 0x81F8, 0xAD09,
+	0x81F9, 0xAD0A, 0x81FA, 0xAD0B, 0x81FB, 0xAD0E, 0x81FC, 0xAD10,
+	0x81FD, 0xAD12, 0x81FE, 0xAD13, 0x8241, 0xAD14, 0x8242, 0xAD15,
+	0x8243, 0xAD16, 0x8244, 0xAD17, 0x8245, 0xAD19, 0x8246, 0xAD1A,
+	0x8247, 0xAD1B, 0x8248, 0xAD1D, 0x8249, 0xAD1E, 0x824A, 0xAD1F,
+	0x824B, 0xAD21, 0x824C, 0xAD22, 0x824D, 0xAD23, 0x824E, 0xAD24,
+	0x824F, 0xAD25, 0x8250, 0xAD26, 0x8251, 0xAD27, 0x8252, 0xAD28,
+	0x8253, 0xAD2A, 0x8254, 0xAD2B, 0x8255, 0xAD2E, 0x8256, 0xAD2F,
+	0x8257, 0xAD30, 0x8258, 0xAD31, 0x8259, 0xAD32, 0x825A, 0xAD33,
+	0x8261, 0xAD36, 0x8262, 0xAD37, 0x8263, 0xAD39, 0x8264, 0xAD3A,
+	0x8265, 0xAD3B, 0x8266, 0xAD3D, 0x8267, 0xAD3E, 0x8268, 0xAD3F,
+	0x8269, 0xAD40, 0x826A, 0xAD41, 0x826B, 0xAD42, 0x826C, 0xAD43,
+	0x826D, 0xAD46, 0x826E, 0xAD48, 0x826F, 0xAD4A, 0x8270, 0xAD4B,
+	0x8271, 0xAD4C, 0x8272, 0xAD4D, 0x8273, 0xAD4E, 0x8274, 0xAD4F,
+	0x8275, 0xAD51, 0x8276, 0xAD52, 0x8277, 0xAD53, 0x8278, 0xAD55,
+	0x8279, 0xAD56, 0x827A, 0xAD57, 0x8281, 0xAD59, 0x8282, 0xAD5A,
+	0x8283, 0xAD5B, 0x8284, 0xAD5C, 0x8285, 0xAD5D, 0x8286, 0xAD5E,
+	0x8287, 0xAD5F, 0x8288, 0xAD60, 0x8289, 0xAD62, 0x828A, 0xAD64,
+	0x828B, 0xAD65, 0x828C, 0xAD66, 0x828D, 0xAD67, 0x828E, 0xAD68,
+	0x828F, 0xAD69, 0x8290, 0xAD6A, 0x8291, 0xAD6B, 0x8292, 0xAD6E,
+	0x8293, 0xAD6F, 0x8294, 0xAD71, 0x8295, 0xAD72, 0x8296, 0xAD77,
+	0x8297, 0xAD78, 0x8298, 0xAD79, 0x8299, 0xAD7A, 0x829A, 0xAD7E,
+	0x829B, 0xAD80, 0x829C, 0xAD83, 0x829D, 0xAD84, 0x829E, 0xAD85,
+	0x829F, 0xAD86, 0x82A0, 0xAD87, 0x82A1, 0xAD8A, 0x82A2, 0xAD8B,
+	0x82A3, 0xAD8D, 0x82A4, 0xAD8E, 0x82A5, 0xAD8F, 0x82A6, 0xAD91,
+	0x82A7, 0xAD92, 0x82A8, 0xAD93, 0x82A9, 0xAD94, 0x82AA, 0xAD95,
+	0x82AB, 0xAD96, 0x82AC, 0xAD97, 0x82AD, 0xAD98, 0x82AE, 0xAD99,
+	0x82AF, 0xAD9A, 0x82B0, 0xAD9B, 0x82B1, 0xAD9E, 0x82B2, 0xAD9F,
+	0x82B3, 0xADA0, 0x82B4, 0xADA1, 0x82B5, 0xADA2, 0x82B6, 0xADA3,
+	0x82B7, 0xADA5, 0x82B8, 0xADA6, 0x82B9, 0xADA7, 0x82BA, 0xADA8,
+	0x82BB, 0xADA9, 0x82BC, 0xADAA, 0x82BD, 0xADAB, 0x82BE, 0xADAC,
+	0x82BF, 0xADAD, 0x82C0, 0xADAE, 0x82C1, 0xADAF, 0x82C2, 0xADB0,
+	0x82C3, 0xADB1, 0x82C4, 0xADB2, 0x82C5, 0xADB3, 0x82C6, 0xADB4,
+	0x82C7, 0xADB5, 0x82C8, 0xADB6, 0x82C9, 0xADB8, 0x82CA, 0xADB9,
+	0x82CB, 0xADBA, 0x82CC, 0xADBB, 0x82CD, 0xADBC, 0x82CE, 0xADBD,
+	0x82CF, 0xADBE, 0x82D0, 0xADBF, 0x82D1, 0xADC2, 0x82D2, 0xADC3,
+	0x82D3, 0xADC5, 0x82D4, 0xADC6, 0x82D5, 0xADC7, 0x82D6, 0xADC9,
+	0x82D7, 0xADCA, 0x82D8, 0xADCB, 0x82D9, 0xADCC, 0x82DA, 0xADCD,
+	0x82DB, 0xADCE, 0x82DC, 0xADCF, 0x82DD, 0xADD2, 0x82DE, 0xADD4,
+	0x82DF, 0xADD5, 0x82E0, 0xADD6, 0x82E1, 0xADD7, 0x82E2, 0xADD8,
+	0x82E3, 0xADD9, 0x82E4, 0xADDA, 0x82E5, 0xADDB, 0x82E6, 0xADDD,
+	0x82E7, 0xADDE, 0x82E8, 0xADDF, 0x82E9, 0xADE1, 0x82EA, 0xADE2,
+	0x82EB, 0xADE3, 0x82EC, 0xADE5, 0x82ED, 0xADE6, 0x82EE, 0xADE7,
+	0x82EF, 0xADE8, 0x82F0, 0xADE9, 0x82F1, 0xADEA, 0x82F2, 0xADEB,
+	0x82F3, 0xADEC, 0x82F4, 0xADED, 0x82F5, 0xADEE, 0x82F6, 0xADEF,
+	0x82F7, 0xADF0, 0x82F8, 0xADF1, 0x82F9, 0xADF2, 0x82FA, 0xADF3,
+	0x82FB, 0xADF4, 0x82FC, 0xADF5, 0x82FD, 0xADF6, 0x82FE, 0xADF7,
+	0x8341, 0xADFA, 0x8342, 0xADFB, 0x8343, 0xADFD, 0x8344, 0xADFE,
+	0x8345, 0xAE02, 0x8346, 0xAE03, 0x8347, 0xAE04, 0x8348, 0xAE05,
+	0x8349, 0xAE06, 0x834A, 0xAE07, 0x834B, 0xAE0A, 0x834C, 0xAE0C,
+	0x834D, 0xAE0E, 0x834E, 0xAE0F, 0x834F, 0xAE10, 0x8350, 0xAE11,
+	0x8351, 0xAE12, 0x8352, 0xAE13, 0x8353, 0xAE15, 0x8354, 0xAE16,
+	0x8355, 0xAE17, 0x8356, 0xAE18, 0x8357, 0xAE19, 0x8358, 0xAE1A,
+	0x8359, 0xAE1B, 0x835A, 0xAE1C, 0x8361, 0xAE1D, 0x8362, 0xAE1E,
+	0x8363, 0xAE1F, 0x8364, 0xAE20, 0x8365, 0xAE21, 0x8366, 0xAE22,
+	0x8367, 0xAE23, 0x8368, 0xAE24, 0x8369, 0xAE25, 0x836A, 0xAE26,
+	0x836B, 0xAE27, 0x836C, 0xAE28, 0x836D, 0xAE29, 0x836E, 0xAE2A,
+	0x836F, 0xAE2B, 0x8370, 0xAE2C, 0x8371, 0xAE2D, 0x8372, 0xAE2E,
+	0x8373, 0xAE2F, 0x8374, 0xAE32, 0x8375, 0xAE33, 0x8376, 0xAE35,
+	0x8377, 0xAE36, 0x8378, 0xAE39, 0x8379, 0xAE3B, 0x837A, 0xAE3C,
+	0x8381, 0xAE3D, 0x8382, 0xAE3E, 0x8383, 0xAE3F, 0x8384, 0xAE42,
+	0x8385, 0xAE44, 0x8386, 0xAE47, 0x8387, 0xAE48, 0x8388, 0xAE49,
+	0x8389, 0xAE4B, 0x838A, 0xAE4F, 0x838B, 0xAE51, 0x838C, 0xAE52,
+	0x838D, 0xAE53, 0x838E, 0xAE55, 0x838F, 0xAE57, 0x8390, 0xAE58,
+	0x8391, 0xAE59, 0x8392, 0xAE5A, 0x8393, 0xAE5B, 0x8394, 0xAE5E,
+	0x8395, 0xAE62, 0x8396, 0xAE63, 0x8397, 0xAE64, 0x8398, 0xAE66,
+	0x8399, 0xAE67, 0x839A, 0xAE6A, 0x839B, 0xAE6B, 0x839C, 0xAE6D,
+	0x839D, 0xAE6E, 0x839E, 0xAE6F, 0x839F, 0xAE71, 0x83A0, 0xAE72,
+	0x83A1, 0xAE73, 0x83A2, 0xAE74, 0x83A3, 0xAE75, 0x83A4, 0xAE76,
+	0x83A5, 0xAE77, 0x83A6, 0xAE7A, 0x83A7, 0xAE7E, 0x83A8, 0xAE7F,
+	0x83A9, 0xAE80, 0x83AA, 0xAE81, 0x83AB, 0xAE82, 0x83AC, 0xAE83,
+	0x83AD, 0xAE86, 0x83AE, 0xAE87, 0x83AF, 0xAE88, 0x83B0, 0xAE89,
+	0x83B1, 0xAE8A, 0x83B2, 0xAE8B, 0x83B3, 0xAE8D, 0x83B4, 0xAE8E,
+	0x83B5, 0xAE8F, 0x83B6, 0xAE90, 0x83B7, 0xAE91, 0x83B8, 0xAE92,
+	0x83B9, 0xAE93, 0x83BA, 0xAE94, 0x83BB, 0xAE95, 0x83BC, 0xAE96,
+	0x83BD, 0xAE97, 0x83BE, 0xAE98, 0x83BF, 0xAE99, 0x83C0, 0xAE9A,
+	0x83C1, 0xAE9B, 0x83C2, 0xAE9C, 0x83C3, 0xAE9D, 0x83C4, 0xAE9E,
+	0x83C5, 0xAE9F, 0x83C6, 0xAEA0, 0x83C7, 0xAEA1, 0x83C8, 0xAEA2,
+	0x83C9, 0xAEA3, 0x83CA, 0xAEA4, 0x83CB, 0xAEA5, 0x83CC, 0xAEA6,
+	0x83CD, 0xAEA7, 0x83CE, 0xAEA8, 0x83CF, 0xAEA9, 0x83D0, 0xAEAA,
+	0x83D1, 0xAEAB, 0x83D2, 0xAEAC, 0x83D3, 0xAEAD, 0x83D4, 0xAEAE,
+	0x83D5, 0xAEAF, 0x83D6, 0xAEB0, 0x83D7, 0xAEB1, 0x83D8, 0xAEB2,
+	0x83D9, 0xAEB3, 0x83DA, 0xAEB4, 0x83DB, 0xAEB5, 0x83DC, 0xAEB6,
+	0x83DD, 0xAEB7, 0x83DE, 0xAEB8, 0x83DF, 0xAEB9, 0x83E0, 0xAEBA,
+	0x83E1, 0xAEBB, 0x83E2, 0xAEBF, 0x83E3, 0xAEC1, 0x83E4, 0xAEC2,
+	0x83E5, 0xAEC3, 0x83E6, 0xAEC5, 0x83E7, 0xAEC6, 0x83E8, 0xAEC7,
+	0x83E9, 0xAEC8, 0x83EA, 0xAEC9, 0x83EB, 0xAECA, 0x83EC, 0xAECB,
+	0x83ED, 0xAECE, 0x83EE, 0xAED2, 0x83EF, 0xAED3, 0x83F0, 0xAED4,
+	0x83F1, 0xAED5, 0x83F2, 0xAED6, 0x83F3, 0xAED7, 0x83F4, 0xAEDA,
+	0x83F5, 0xAEDB, 0x83F6, 0xAEDD, 0x83F7, 0xAEDE, 0x83F8, 0xAEDF,
+	0x83F9, 0xAEE0, 0x83FA, 0xAEE1, 0x83FB, 0xAEE2, 0x83FC, 0xAEE3,
+	0x83FD, 0xAEE4, 0x83FE, 0xAEE5, 0x8441, 0xAEE6, 0x8442, 0xAEE7,
+	0x8443, 0xAEE9, 0x8444, 0xAEEA, 0x8445, 0xAEEC, 0x8446, 0xAEEE,
+	0x8447, 0xAEEF, 0x8448, 0xAEF0, 0x8449, 0xAEF1, 0x844A, 0xAEF2,
+	0x844B, 0xAEF3, 0x844C, 0xAEF5, 0x844D, 0xAEF6, 0x844E, 0xAEF7,
+	0x844F, 0xAEF9, 0x8450, 0xAEFA, 0x8451, 0xAEFB, 0x8452, 0xAEFD,
+	0x8453, 0xAEFE, 0x8454, 0xAEFF, 0x8455, 0xAF00, 0x8456, 0xAF01,
+	0x8457, 0xAF02, 0x8458, 0xAF03, 0x8459, 0xAF04, 0x845A, 0xAF05,
+	0x8461, 0xAF06, 0x8462, 0xAF09, 0x8463, 0xAF0A, 0x8464, 0xAF0B,
+	0x8465, 0xAF0C, 0x8466, 0xAF0E, 0x8467, 0xAF0F, 0x8468, 0xAF11,
+	0x8469, 0xAF12, 0x846A, 0xAF13, 0x846B, 0xAF14, 0x846C, 0xAF15,
+	0x846D, 0xAF16, 0x846E, 0xAF17, 0x846F, 0xAF18, 0x8470, 0xAF19,
+	0x8471, 0xAF1A, 0x8472, 0xAF1B, 0x8473, 0xAF1C, 0x8474, 0xAF1D,
+	0x8475, 0xAF1E, 0x8476, 0xAF1F, 0x8477, 0xAF20, 0x8478, 0xAF21,
+	0x8479, 0xAF22, 0x847A, 0xAF23, 0x8481, 0xAF24, 0x8482, 0xAF25,
+	0x8483, 0xAF26, 0x8484, 0xAF27, 0x8485, 0xAF28, 0x8486, 0xAF29,
+	0x8487, 0xAF2A, 0x8488, 0xAF2B, 0x8489, 0xAF2E, 0x848A, 0xAF2F,
+	0x848B, 0xAF31, 0x848C, 0xAF33, 0x848D, 0xAF35, 0x848E, 0xAF36,
+	0x848F, 0xAF37, 0x8490, 0xAF38, 0x8491, 0xAF39, 0x8492, 0xAF3A,
+	0x8493, 0xAF3B, 0x8494, 0xAF3E, 0x8495, 0xAF40, 0x8496, 0xAF44,
+	0x8497, 0xAF45, 0x8498, 0xAF46, 0x8499, 0xAF47, 0x849A, 0xAF4A,
+	0x849B, 0xAF4B, 0x849C, 0xAF4C, 0x849D, 0xAF4D, 0x849E, 0xAF4E,
+	0x849F, 0xAF4F, 0x84A0, 0xAF51, 0x84A1, 0xAF52, 0x84A2, 0xAF53,
+	0x84A3, 0xAF54, 0x84A4, 0xAF55, 0x84A5, 0xAF56, 0x84A6, 0xAF57,
+	0x84A7, 0xAF58, 0x84A8, 0xAF59, 0x84A9, 0xAF5A, 0x84AA, 0xAF5B,
+	0x84AB, 0xAF5E, 0x84AC, 0xAF5F, 0x84AD, 0xAF60, 0x84AE, 0xAF61,
+	0x84AF, 0xAF62, 0x84B0, 0xAF63, 0x84B1, 0xAF66, 0x84B2, 0xAF67,
+	0x84B3, 0xAF68, 0x84B4, 0xAF69, 0x84B5, 0xAF6A, 0x84B6, 0xAF6B,
+	0x84B7, 0xAF6C, 0x84B8, 0xAF6D, 0x84B9, 0xAF6E, 0x84BA, 0xAF6F,
+	0x84BB, 0xAF70, 0x84BC, 0xAF71, 0x84BD, 0xAF72, 0x84BE, 0xAF73,
+	0x84BF, 0xAF74, 0x84C0, 0xAF75, 0x84C1, 0xAF76, 0x84C2, 0xAF77,
+	0x84C3, 0xAF78, 0x84C4, 0xAF7A, 0x84C5, 0xAF7B, 0x84C6, 0xAF7C,
+	0x84C7, 0xAF7D, 0x84C8, 0xAF7E, 0x84C9, 0xAF7F, 0x84CA, 0xAF81,
+	0x84CB, 0xAF82, 0x84CC, 0xAF83, 0x84CD, 0xAF85, 0x84CE, 0xAF86,
+	0x84CF, 0xAF87, 0x84D0, 0xAF89, 0x84D1, 0xAF8A, 0x84D2, 0xAF8B,
+	0x84D3, 0xAF8C, 0x84D4, 0xAF8D, 0x84D5, 0xAF8E, 0x84D6, 0xAF8F,
+	0x84D7, 0xAF92, 0x84D8, 0xAF93, 0x84D9, 0xAF94, 0x84DA, 0xAF96,
+	0x84DB, 0xAF97, 0x84DC, 0xAF98, 0x84DD, 0xAF99, 0x84DE, 0xAF9A,
+	0x84DF, 0xAF9B, 0x84E0, 0xAF9D, 0x84E1, 0xAF9E, 0x84E2, 0xAF9F,
+	0x84E3, 0xAFA0, 0x84E4, 0xAFA1, 0x84E5, 0xAFA2, 0x84E6, 0xAFA3,
+	0x84E7, 0xAFA4, 0x84E8, 0xAFA5, 0x84E9, 0xAFA6, 0x84EA, 0xAFA7,
+	0x84EB, 0xAFA8, 0x84EC, 0xAFA9, 0x84ED, 0xAFAA, 0x84EE, 0xAFAB,
+	0x84EF, 0xAFAC, 0x84F0, 0xAFAD, 0x84F1, 0xAFAE, 0x84F2, 0xAFAF,
+	0x84F3, 0xAFB0, 0x84F4, 0xAFB1, 0x84F5, 0xAFB2, 0x84F6, 0xAFB3,
+	0x84F7, 0xAFB4, 0x84F8, 0xAFB5, 0x84F9, 0xAFB6, 0x84FA, 0xAFB7,
+	0x84FB, 0xAFBA, 0x84FC, 0xAFBB, 0x84FD, 0xAFBD, 0x84FE, 0xAFBE,
+	0x8541, 0xAFBF, 0x8542, 0xAFC1, 0x8543, 0xAFC2, 0x8544, 0xAFC3,
+	0x8545, 0xAFC4, 0x8546, 0xAFC5, 0x8547, 0xAFC6, 0x8548, 0xAFCA,
+	0x8549, 0xAFCC, 0x854A, 0xAFCF, 0x854B, 0xAFD0, 0x854C, 0xAFD1,
+	0x854D, 0xAFD2, 0x854E, 0xAFD3, 0x854F, 0xAFD5, 0x8550, 0xAFD6,
+	0x8551, 0xAFD7, 0x8552, 0xAFD8, 0x8553, 0xAFD9, 0x8554, 0xAFDA,
+	0x8555, 0xAFDB, 0x8556, 0xAFDD, 0x8557, 0xAFDE, 0x8558, 0xAFDF,
+	0x8559, 0xAFE0, 0x855A, 0xAFE1, 0x8561, 0xAFE2, 0x8562, 0xAFE3,
+	0x8563, 0xAFE4, 0x8564, 0xAFE5, 0x8565, 0xAFE6, 0x8566, 0xAFE7,
+	0x8567, 0xAFEA, 0x8568, 0xAFEB, 0x8569, 0xAFEC, 0x856A, 0xAFED,
+	0x856B, 0xAFEE, 0x856C, 0xAFEF, 0x856D, 0xAFF2, 0x856E, 0xAFF3,
+	0x856F, 0xAFF5, 0x8570, 0xAFF6, 0x8571, 0xAFF7, 0x8572, 0xAFF9,
+	0x8573, 0xAFFA, 0x8574, 0xAFFB, 0x8575, 0xAFFC, 0x8576, 0xAFFD,
+	0x8577, 0xAFFE, 0x8578, 0xAFFF, 0x8579, 0xB002, 0x857A, 0xB003,
+	0x8581, 0xB005, 0x8582, 0xB006, 0x8583, 0xB007, 0x8584, 0xB008,
+	0x8585, 0xB009, 0x8586, 0xB00A, 0x8587, 0xB00B, 0x8588, 0xB00D,
+	0x8589, 0xB00E, 0x858A, 0xB00F, 0x858B, 0xB011, 0x858C, 0xB012,
+	0x858D, 0xB013, 0x858E, 0xB015, 0x858F, 0xB016, 0x8590, 0xB017,
+	0x8591, 0xB018, 0x8592, 0xB019, 0x8593, 0xB01A, 0x8594, 0xB01B,
+	0x8595, 0xB01E, 0x8596, 0xB01F, 0x8597, 0xB020, 0x8598, 0xB021,
+	0x8599, 0xB022, 0x859A, 0xB023, 0x859B, 0xB024, 0x859C, 0xB025,
+	0x859D, 0xB026, 0x859E, 0xB027, 0x859F, 0xB029, 0x85A0, 0xB02A,
+	0x85A1, 0xB02B, 0x85A2, 0xB02C, 0x85A3, 0xB02D, 0x85A4, 0xB02E,
+	0x85A5, 0xB02F, 0x85A6, 0xB030, 0x85A7, 0xB031, 0x85A8, 0xB032,
+	0x85A9, 0xB033, 0x85AA, 0xB034, 0x85AB, 0xB035, 0x85AC, 0xB036,
+	0x85AD, 0xB037, 0x85AE, 0xB038, 0x85AF, 0xB039, 0x85B0, 0xB03A,
+	0x85B1, 0xB03B, 0x85B2, 0xB03C, 0x85B3, 0xB03D, 0x85B4, 0xB03E,
+	0x85B5, 0xB03F, 0x85B6, 0xB040, 0x85B7, 0xB041, 0x85B8, 0xB042,
+	0x85B9, 0xB043, 0x85BA, 0xB046, 0x85BB, 0xB047, 0x85BC, 0xB049,
+	0x85BD, 0xB04B, 0x85BE, 0xB04D, 0x85BF, 0xB04F, 0x85C0, 0xB050,
+	0x85C1, 0xB051, 0x85C2, 0xB052, 0x85C3, 0xB056, 0x85C4, 0xB058,
+	0x85C5, 0xB05A, 0x85C6, 0xB05B, 0x85C7, 0xB05C, 0x85C8, 0xB05E,
+	0x85C9, 0xB05F, 0x85CA, 0xB060, 0x85CB, 0xB061, 0x85CC, 0xB062,
+	0x85CD, 0xB063, 0x85CE, 0xB064, 0x85CF, 0xB065, 0x85D0, 0xB066,
+	0x85D1, 0xB067, 0x85D2, 0xB068, 0x85D3, 0xB069, 0x85D4, 0xB06A,
+	0x85D5, 0xB06B, 0x85D6, 0xB06C, 0x85D7, 0xB06D, 0x85D8, 0xB06E,
+	0x85D9, 0xB06F, 0x85DA, 0xB070, 0x85DB, 0xB071, 0x85DC, 0xB072,
+	0x85DD, 0xB073, 0x85DE, 0xB074, 0x85DF, 0xB075, 0x85E0, 0xB076,
+	0x85E1, 0xB077, 0x85E2, 0xB078, 0x85E3, 0xB079, 0x85E4, 0xB07A,
+	0x85E5, 0xB07B, 0x85E6, 0xB07E, 0x85E7, 0xB07F, 0x85E8, 0xB081,
+	0x85E9, 0xB082, 0x85EA, 0xB083, 0x85EB, 0xB085, 0x85EC, 0xB086,
+	0x85ED, 0xB087, 0x85EE, 0xB088, 0x85EF, 0xB089, 0x85F0, 0xB08A,
+	0x85F1, 0xB08B, 0x85F2, 0xB08E, 0x85F3, 0xB090, 0x85F4, 0xB092,
+	0x85F5, 0xB093, 0x85F6, 0xB094, 0x85F7, 0xB095, 0x85F8, 0xB096,
+	0x85F9, 0xB097, 0x85FA, 0xB09B, 0x85FB, 0xB09D, 0x85FC, 0xB09E,
+	0x85FD, 0xB0A3, 0x85FE, 0xB0A4, 0x8641, 0xB0A5, 0x8642, 0xB0A6,
+	0x8643, 0xB0A7, 0x8644, 0xB0AA, 0x8645, 0xB0B0, 0x8646, 0xB0B2,
+	0x8647, 0xB0B6, 0x8648, 0xB0B7, 0x8649, 0xB0B9, 0x864A, 0xB0BA,
+	0x864B, 0xB0BB, 0x864C, 0xB0BD, 0x864D, 0xB0BE, 0x864E, 0xB0BF,
+	0x864F, 0xB0C0, 0x8650, 0xB0C1, 0x8651, 0xB0C2, 0x8652, 0xB0C3,
+	0x8653, 0xB0C6, 0x8654, 0xB0CA, 0x8655, 0xB0CB, 0x8656, 0xB0CC,
+	0x8657, 0xB0CD, 0x8658, 0xB0CE, 0x8659, 0xB0CF, 0x865A, 0xB0D2,
+	0x8661, 0xB0D3, 0x8662, 0xB0D5, 0x8663, 0xB0D6, 0x8664, 0xB0D7,
+	0x8665, 0xB0D9, 0x8666, 0xB0DA, 0x8667, 0xB0DB, 0x8668, 0xB0DC,
+	0x8669, 0xB0DD, 0x866A, 0xB0DE, 0x866B, 0xB0DF, 0x866C, 0xB0E1,
+	0x866D, 0xB0E2, 0x866E, 0xB0E3, 0x866F, 0xB0E4, 0x8670, 0xB0E6,
+	0x8671, 0xB0E7, 0x8672, 0xB0E8, 0x8673, 0xB0E9, 0x8674, 0xB0EA,
+	0x8675, 0xB0EB, 0x8676, 0xB0EC, 0x8677, 0xB0ED, 0x8678, 0xB0EE,
+	0x8679, 0xB0EF, 0x867A, 0xB0F0, 0x8681, 0xB0F1, 0x8682, 0xB0F2,
+	0x8683, 0xB0F3, 0x8684, 0xB0F4, 0x8685, 0xB0F5, 0x8686, 0xB0F6,
+	0x8687, 0xB0F7, 0x8688, 0xB0F8, 0x8689, 0xB0F9, 0x868A, 0xB0FA,
+	0x868B, 0xB0FB, 0x868C, 0xB0FC, 0x868D, 0xB0FD, 0x868E, 0xB0FE,
+	0x868F, 0xB0FF, 0x8690, 0xB100, 0x8691, 0xB101, 0x8692, 0xB102,
+	0x8693, 0xB103, 0x8694, 0xB104, 0x8695, 0xB105, 0x8696, 0xB106,
+	0x8697, 0xB107, 0x8698, 0xB10A, 0x8699, 0xB10D, 0x869A, 0xB10E,
+	0x869B, 0xB10F, 0x869C, 0xB111, 0x869D, 0xB114, 0x869E, 0xB115,
+	0x869F, 0xB116, 0x86A0, 0xB117, 0x86A1, 0xB11A, 0x86A2, 0xB11E,
+	0x86A3, 0xB11F, 0x86A4, 0xB120, 0x86A5, 0xB121, 0x86A6, 0xB122,
+	0x86A7, 0xB126, 0x86A8, 0xB127, 0x86A9, 0xB129, 0x86AA, 0xB12A,
+	0x86AB, 0xB12B, 0x86AC, 0xB12D, 0x86AD, 0xB12E, 0x86AE, 0xB12F,
+	0x86AF, 0xB130, 0x86B0, 0xB131, 0x86B1, 0xB132, 0x86B2, 0xB133,
+	0x86B3, 0xB136, 0x86B4, 0xB13A, 0x86B5, 0xB13B, 0x86B6, 0xB13C,
+	0x86B7, 0xB13D, 0x86B8, 0xB13E, 0x86B9, 0xB13F, 0x86BA, 0xB142,
+	0x86BB, 0xB143, 0x86BC, 0xB145, 0x86BD, 0xB146, 0x86BE, 0xB147,
+	0x86BF, 0xB149, 0x86C0, 0xB14A, 0x86C1, 0xB14B, 0x86C2, 0xB14C,
+	0x86C3, 0xB14D, 0x86C4, 0xB14E, 0x86C5, 0xB14F, 0x86C6, 0xB152,
+	0x86C7, 0xB153, 0x86C8, 0xB156, 0x86C9, 0xB157, 0x86CA, 0xB159,
+	0x86CB, 0xB15A, 0x86CC, 0xB15B, 0x86CD, 0xB15D, 0x86CE, 0xB15E,
+	0x86CF, 0xB15F, 0x86D0, 0xB161, 0x86D1, 0xB162, 0x86D2, 0xB163,
+	0x86D3, 0xB164, 0x86D4, 0xB165, 0x86D5, 0xB166, 0x86D6, 0xB167,
+	0x86D7, 0xB168, 0x86D8, 0xB169, 0x86D9, 0xB16A, 0x86DA, 0xB16B,
+	0x86DB, 0xB16C, 0x86DC, 0xB16D, 0x86DD, 0xB16E, 0x86DE, 0xB16F,
+	0x86DF, 0xB170, 0x86E0, 0xB171, 0x86E1, 0xB172, 0x86E2, 0xB173,
+	0x86E3, 0xB174, 0x86E4, 0xB175, 0x86E5, 0xB176, 0x86E6, 0xB177,
+	0x86E7, 0xB17A, 0x86E8, 0xB17B, 0x86E9, 0xB17D, 0x86EA, 0xB17E,
+	0x86EB, 0xB17F, 0x86EC, 0xB181, 0x86ED, 0xB183, 0x86EE, 0xB184,
+	0x86EF, 0xB185, 0x86F0, 0xB186, 0x86F1, 0xB187, 0x86F2, 0xB18A,
+	0x86F3, 0xB18C, 0x86F4, 0xB18E, 0x86F5, 0xB18F, 0x86F6, 0xB190,
+	0x86F7, 0xB191, 0x86F8, 0xB195, 0x86F9, 0xB196, 0x86FA, 0xB197,
+	0x86FB, 0xB199, 0x86FC, 0xB19A, 0x86FD, 0xB19B, 0x86FE, 0xB19D,
+	0x8741, 0xB19E, 0x8742, 0xB19F, 0x8743, 0xB1A0, 0x8744, 0xB1A1,
+	0x8745, 0xB1A2, 0x8746, 0xB1A3, 0x8747, 0xB1A4, 0x8748, 0xB1A5,
+	0x8749, 0xB1A6, 0x874A, 0xB1A7, 0x874B, 0xB1A9, 0x874C, 0xB1AA,
+	0x874D, 0xB1AB, 0x874E, 0xB1AC, 0x874F, 0xB1AD, 0x8750, 0xB1AE,
+	0x8751, 0xB1AF, 0x8752, 0xB1B0, 0x8753, 0xB1B1, 0x8754, 0xB1B2,
+	0x8755, 0xB1B3, 0x8756, 0xB1B4, 0x8757, 0xB1B5, 0x8758, 0xB1B6,
+	0x8759, 0xB1B7, 0x875A, 0xB1B8, 0x8761, 0xB1B9, 0x8762, 0xB1BA,
+	0x8763, 0xB1BB, 0x8764, 0xB1BC, 0x8765, 0xB1BD, 0x8766, 0xB1BE,
+	0x8767, 0xB1BF, 0x8768, 0xB1C0, 0x8769, 0xB1C1, 0x876A, 0xB1C2,
+	0x876B, 0xB1C3, 0x876C, 0xB1C4, 0x876D, 0xB1C5, 0x876E, 0xB1C6,
+	0x876F, 0xB1C7, 0x8770, 0xB1C8, 0x8771, 0xB1C9, 0x8772, 0xB1CA,
+	0x8773, 0xB1CB, 0x8774, 0xB1CD, 0x8775, 0xB1CE, 0x8776, 0xB1CF,
+	0x8777, 0xB1D1, 0x8778, 0xB1D2, 0x8779, 0xB1D3, 0x877A, 0xB1D5,
+	0x8781, 0xB1D6, 0x8782, 0xB1D7, 0x8783, 0xB1D8, 0x8784, 0xB1D9,
+	0x8785, 0xB1DA, 0x8786, 0xB1DB, 0x8787, 0xB1DE, 0x8788, 0xB1E0,
+	0x8789, 0xB1E1, 0x878A, 0xB1E2, 0x878B, 0xB1E3, 0x878C, 0xB1E4,
+	0x878D, 0xB1E5, 0x878E, 0xB1E6, 0x878F, 0xB1E7, 0x8790, 0xB1EA,
+	0x8791, 0xB1EB, 0x8792, 0xB1ED, 0x8793, 0xB1EE, 0x8794, 0xB1EF,
+	0x8795, 0xB1F1, 0x8796, 0xB1F2, 0x8797, 0xB1F3, 0x8798, 0xB1F4,
+	0x8799, 0xB1F5, 0x879A, 0xB1F6, 0x879B, 0xB1F7, 0x879C, 0xB1F8,
+	0x879D, 0xB1FA, 0x879E, 0xB1FC, 0x879F, 0xB1FE, 0x87A0, 0xB1FF,
+	0x87A1, 0xB200, 0x87A2, 0xB201, 0x87A3, 0xB202, 0x87A4, 0xB203,
+	0x87A5, 0xB206, 0x87A6, 0xB207, 0x87A7, 0xB209, 0x87A8, 0xB20A,
+	0x87A9, 0xB20D, 0x87AA, 0xB20E, 0x87AB, 0xB20F, 0x87AC, 0xB210,
+	0x87AD, 0xB211, 0x87AE, 0xB212, 0x87AF, 0xB213, 0x87B0, 0xB216,
+	0x87B1, 0xB218, 0x87B2, 0xB21A, 0x87B3, 0xB21B, 0x87B4, 0xB21C,
+	0x87B5, 0xB21D, 0x87B6, 0xB21E, 0x87B7, 0xB21F, 0x87B8, 0xB221,
+	0x87B9, 0xB222, 0x87BA, 0xB223, 0x87BB, 0xB224, 0x87BC, 0xB225,
+	0x87BD, 0xB226, 0x87BE, 0xB227, 0x87BF, 0xB228, 0x87C0, 0xB229,
+	0x87C1, 0xB22A, 0x87C2, 0xB22B, 0x87C3, 0xB22C, 0x87C4, 0xB22D,
+	0x87C5, 0xB22E, 0x87C6, 0xB22F, 0x87C7, 0xB230, 0x87C8, 0xB231,
+	0x87C9, 0xB232, 0x87CA, 0xB233, 0x87CB, 0xB235, 0x87CC, 0xB236,
+	0x87CD, 0xB237, 0x87CE, 0xB238, 0x87CF, 0xB239, 0x87D0, 0xB23A,
+	0x87D1, 0xB23B, 0x87D2, 0xB23D, 0x87D3, 0xB23E, 0x87D4, 0xB23F,
+	0x87D5, 0xB240, 0x87D6, 0xB241, 0x87D7, 0xB242, 0x87D8, 0xB243,
+	0x87D9, 0xB244, 0x87DA, 0xB245, 0x87DB, 0xB246, 0x87DC, 0xB247,
+	0x87DD, 0xB248, 0x87DE, 0xB249, 0x87DF, 0xB24A, 0x87E0, 0xB24B,
+	0x87E1, 0xB24C, 0x87E2, 0xB24D, 0x87E3, 0xB24E, 0x87E4, 0xB24F,
+	0x87E5, 0xB250, 0x87E6, 0xB251, 0x87E7, 0xB252, 0x87E8, 0xB253,
+	0x87E9, 0xB254, 0x87EA, 0xB255, 0x87EB, 0xB256, 0x87EC, 0xB257,
+	0x87ED, 0xB259, 0x87EE, 0xB25A, 0x87EF, 0xB25B, 0x87F0, 0xB25D,
+	0x87F1, 0xB25E, 0x87F2, 0xB25F, 0x87F3, 0xB261, 0x87F4, 0xB262,
+	0x87F5, 0xB263, 0x87F6, 0xB264, 0x87F7, 0xB265, 0x87F8, 0xB266,
+	0x87F9, 0xB267, 0x87FA, 0xB26A, 0x87FB, 0xB26B, 0x87FC, 0xB26C,
+	0x87FD, 0xB26D, 0x87FE, 0xB26E, 0x8841, 0xB26F, 0x8842, 0xB270,
+	0x8843, 0xB271, 0x8844, 0xB272, 0x8845, 0xB273, 0x8846, 0xB276,
+	0x8847, 0xB277, 0x8848, 0xB278, 0x8849, 0xB279, 0x884A, 0xB27A,
+	0x884B, 0xB27B, 0x884C, 0xB27D, 0x884D, 0xB27E, 0x884E, 0xB27F,
+	0x884F, 0xB280, 0x8850, 0xB281, 0x8851, 0xB282, 0x8852, 0xB283,
+	0x8853, 0xB286, 0x8854, 0xB287, 0x8855, 0xB288, 0x8856, 0xB28A,
+	0x8857, 0xB28B, 0x8858, 0xB28C, 0x8859, 0xB28D, 0x885A, 0xB28E,
+	0x8861, 0xB28F, 0x8862, 0xB292, 0x8863, 0xB293, 0x8864, 0xB295,
+	0x8865, 0xB296, 0x8866, 0xB297, 0x8867, 0xB29B, 0x8868, 0xB29C,
+	0x8869, 0xB29D, 0x886A, 0xB29E, 0x886B, 0xB29F, 0x886C, 0xB2A2,
+	0x886D, 0xB2A4, 0x886E, 0xB2A7, 0x886F, 0xB2A8, 0x8870, 0xB2A9,
+	0x8871, 0xB2AB, 0x8872, 0xB2AD, 0x8873, 0xB2AE, 0x8874, 0xB2AF,
+	0x8875, 0xB2B1, 0x8876, 0xB2B2, 0x8877, 0xB2B3, 0x8878, 0xB2B5,
+	0x8879, 0xB2B6, 0x887A, 0xB2B7, 0x8881, 0xB2B8, 0x8882, 0xB2B9,
+	0x8883, 0xB2BA, 0x8884, 0xB2BB, 0x8885, 0xB2BC, 0x8886, 0xB2BD,
+	0x8887, 0xB2BE, 0x8888, 0xB2BF, 0x8889, 0xB2C0, 0x888A, 0xB2C1,
+	0x888B, 0xB2C2, 0x888C, 0xB2C3, 0x888D, 0xB2C4, 0x888E, 0xB2C5,
+	0x888F, 0xB2C6, 0x8890, 0xB2C7, 0x8891, 0xB2CA, 0x8892, 0xB2CB,
+	0x8893, 0xB2CD, 0x8894, 0xB2CE, 0x8895, 0xB2CF, 0x8896, 0xB2D1,
+	0x8897, 0xB2D3, 0x8898, 0xB2D4, 0x8899, 0xB2D5, 0x889A, 0xB2D6,
+	0x889B, 0xB2D7, 0x889C, 0xB2DA, 0x889D, 0xB2DC, 0x889E, 0xB2DE,
+	0x889F, 0xB2DF, 0x88A0, 0xB2E0, 0x88A1, 0xB2E1, 0x88A2, 0xB2E3,
+	0x88A3, 0xB2E7, 0x88A4, 0xB2E9, 0x88A5, 0xB2EA, 0x88A6, 0xB2F0,
+	0x88A7, 0xB2F1, 0x88A8, 0xB2F2, 0x88A9, 0xB2F6, 0x88AA, 0xB2FC,
+	0x88AB, 0xB2FD, 0x88AC, 0xB2FE, 0x88AD, 0xB302, 0x88AE, 0xB303,
+	0x88AF, 0xB305, 0x88B0, 0xB306, 0x88B1, 0xB307, 0x88B2, 0xB309,
+	0x88B3, 0xB30A, 0x88B4, 0xB30B, 0x88B5, 0xB30C, 0x88B6, 0xB30D,
+	0x88B7, 0xB30E, 0x88B8, 0xB30F, 0x88B9, 0xB312, 0x88BA, 0xB316,
+	0x88BB, 0xB317, 0x88BC, 0xB318, 0x88BD, 0xB319, 0x88BE, 0xB31A,
+	0x88BF, 0xB31B, 0x88C0, 0xB31D, 0x88C1, 0xB31E, 0x88C2, 0xB31F,
+	0x88C3, 0xB320, 0x88C4, 0xB321, 0x88C5, 0xB322, 0x88C6, 0xB323,
+	0x88C7, 0xB324, 0x88C8, 0xB325, 0x88C9, 0xB326, 0x88CA, 0xB327,
+	0x88CB, 0xB328, 0x88CC, 0xB329, 0x88CD, 0xB32A, 0x88CE, 0xB32B,
+	0x88CF, 0xB32C, 0x88D0, 0xB32D, 0x88D1, 0xB32E, 0x88D2, 0xB32F,
+	0x88D3, 0xB330, 0x88D4, 0xB331, 0x88D5, 0xB332, 0x88D6, 0xB333,
+	0x88D7, 0xB334, 0x88D8, 0xB335, 0x88D9, 0xB336, 0x88DA, 0xB337,
+	0x88DB, 0xB338, 0x88DC, 0xB339, 0x88DD, 0xB33A, 0x88DE, 0xB33B,
+	0x88DF, 0xB33C, 0x88E0, 0xB33D, 0x88E1, 0xB33E, 0x88E2, 0xB33F,
+	0x88E3, 0xB340, 0x88E4, 0xB341, 0x88E5, 0xB342, 0x88E6, 0xB343,
+	0x88E7, 0xB344, 0x88E8, 0xB345, 0x88E9, 0xB346, 0x88EA, 0xB347,
+	0x88EB, 0xB348, 0x88EC, 0xB349, 0x88ED, 0xB34A, 0x88EE, 0xB34B,
+	0x88EF, 0xB34C, 0x88F0, 0xB34D, 0x88F1, 0xB34E, 0x88F2, 0xB34F,
+	0x88F3, 0xB350, 0x88F4, 0xB351, 0x88F5, 0xB352, 0x88F6, 0xB353,
+	0x88F7, 0xB357, 0x88F8, 0xB359, 0x88F9, 0xB35A, 0x88FA, 0xB35D,
+	0x88FB, 0xB360, 0x88FC, 0xB361, 0x88FD, 0xB362, 0x88FE, 0xB363,
+	0x8941, 0xB366, 0x8942, 0xB368, 0x8943, 0xB36A, 0x8944, 0xB36C,
+	0x8945, 0xB36D, 0x8946, 0xB36F, 0x8947, 0xB372, 0x8948, 0xB373,
+	0x8949, 0xB375, 0x894A, 0xB376, 0x894B, 0xB377, 0x894C, 0xB379,
+	0x894D, 0xB37A, 0x894E, 0xB37B, 0x894F, 0xB37C, 0x8950, 0xB37D,
+	0x8951, 0xB37E, 0x8952, 0xB37F, 0x8953, 0xB382, 0x8954, 0xB386,
+	0x8955, 0xB387, 0x8956, 0xB388, 0x8957, 0xB389, 0x8958, 0xB38A,
+	0x8959, 0xB38B, 0x895A, 0xB38D, 0x8961, 0xB38E, 0x8962, 0xB38F,
+	0x8963, 0xB391, 0x8964, 0xB392, 0x8965, 0xB393, 0x8966, 0xB395,
+	0x8967, 0xB396, 0x8968, 0xB397, 0x8969, 0xB398, 0x896A, 0xB399,
+	0x896B, 0xB39A, 0x896C, 0xB39B, 0x896D, 0xB39C, 0x896E, 0xB39D,
+	0x896F, 0xB39E, 0x8970, 0xB39F, 0x8971, 0xB3A2, 0x8972, 0xB3A3,
+	0x8973, 0xB3A4, 0x8974, 0xB3A5, 0x8975, 0xB3A6, 0x8976, 0xB3A7,
+	0x8977, 0xB3A9, 0x8978, 0xB3AA, 0x8979, 0xB3AB, 0x897A, 0xB3AD,
+	0x8981, 0xB3AE, 0x8982, 0xB3AF, 0x8983, 0xB3B0, 0x8984, 0xB3B1,
+	0x8985, 0xB3B2, 0x8986, 0xB3B3, 0x8987, 0xB3B4, 0x8988, 0xB3B5,
+	0x8989, 0xB3B6, 0x898A, 0xB3B7, 0x898B, 0xB3B8, 0x898C, 0xB3B9,
+	0x898D, 0xB3BA, 0x898E, 0xB3BB, 0x898F, 0xB3BC, 0x8990, 0xB3BD,
+	0x8991, 0xB3BE, 0x8992, 0xB3BF, 0x8993, 0xB3C0, 0x8994, 0xB3C1,
+	0x8995, 0xB3C2, 0x8996, 0xB3C3, 0x8997, 0xB3C6, 0x8998, 0xB3C7,
+	0x8999, 0xB3C9, 0x899A, 0xB3CA, 0x899B, 0xB3CD, 0x899C, 0xB3CF,
+	0x899D, 0xB3D1, 0x899E, 0xB3D2, 0x899F, 0xB3D3, 0x89A0, 0xB3D6,
+	0x89A1, 0xB3D8, 0x89A2, 0xB3DA, 0x89A3, 0xB3DC, 0x89A4, 0xB3DE,
+	0x89A5, 0xB3DF, 0x89A6, 0xB3E1, 0x89A7, 0xB3E2, 0x89A8, 0xB3E3,
+	0x89A9, 0xB3E5, 0x89AA, 0xB3E6, 0x89AB, 0xB3E7, 0x89AC, 0xB3E9,
+	0x89AD, 0xB3EA, 0x89AE, 0xB3EB, 0x89AF, 0xB3EC, 0x89B0, 0xB3ED,
+	0x89B1, 0xB3EE, 0x89B2, 0xB3EF, 0x89B3, 0xB3F0, 0x89B4, 0xB3F1,
+	0x89B5, 0xB3F2, 0x89B6, 0xB3F3, 0x89B7, 0xB3F4, 0x89B8, 0xB3F5,
+	0x89B9, 0xB3F6, 0x89BA, 0xB3F7, 0x89BB, 0xB3F8, 0x89BC, 0xB3F9,
+	0x89BD, 0xB3FA, 0x89BE, 0xB3FB, 0x89BF, 0xB3FD, 0x89C0, 0xB3FE,
+	0x89C1, 0xB3FF, 0x89C2, 0xB400, 0x89C3, 0xB401, 0x89C4, 0xB402,
+	0x89C5, 0xB403, 0x89C6, 0xB404, 0x89C7, 0xB405, 0x89C8, 0xB406,
+	0x89C9, 0xB407, 0x89CA, 0xB408, 0x89CB, 0xB409, 0x89CC, 0xB40A,
+	0x89CD, 0xB40B, 0x89CE, 0xB40C, 0x89CF, 0xB40D, 0x89D0, 0xB40E,
+	0x89D1, 0xB40F, 0x89D2, 0xB411, 0x89D3, 0xB412, 0x89D4, 0xB413,
+	0x89D5, 0xB414, 0x89D6, 0xB415, 0x89D7, 0xB416, 0x89D8, 0xB417,
+	0x89D9, 0xB419, 0x89DA, 0xB41A, 0x89DB, 0xB41B, 0x89DC, 0xB41D,
+	0x89DD, 0xB41E, 0x89DE, 0xB41F, 0x89DF, 0xB421, 0x89E0, 0xB422,
+	0x89E1, 0xB423, 0x89E2, 0xB424, 0x89E3, 0xB425, 0x89E4, 0xB426,
+	0x89E5, 0xB427, 0x89E6, 0xB42A, 0x89E7, 0xB42C, 0x89E8, 0xB42D,
+	0x89E9, 0xB42E, 0x89EA, 0xB42F, 0x89EB, 0xB430, 0x89EC, 0xB431,
+	0x89ED, 0xB432, 0x89EE, 0xB433, 0x89EF, 0xB435, 0x89F0, 0xB436,
+	0x89F1, 0xB437, 0x89F2, 0xB438, 0x89F3, 0xB439, 0x89F4, 0xB43A,
+	0x89F5, 0xB43B, 0x89F6, 0xB43C, 0x89F7, 0xB43D, 0x89F8, 0xB43E,
+	0x89F9, 0xB43F, 0x89FA, 0xB440, 0x89FB, 0xB441, 0x89FC, 0xB442,
+	0x89FD, 0xB443, 0x89FE, 0xB444, 0x8A41, 0xB445, 0x8A42, 0xB446,
+	0x8A43, 0xB447, 0x8A44, 0xB448, 0x8A45, 0xB449, 0x8A46, 0xB44A,
+	0x8A47, 0xB44B, 0x8A48, 0xB44C, 0x8A49, 0xB44D, 0x8A4A, 0xB44E,
+	0x8A4B, 0xB44F, 0x8A4C, 0xB452, 0x8A4D, 0xB453, 0x8A4E, 0xB455,
+	0x8A4F, 0xB456, 0x8A50, 0xB457, 0x8A51, 0xB459, 0x8A52, 0xB45A,
+	0x8A53, 0xB45B, 0x8A54, 0xB45C, 0x8A55, 0xB45D, 0x8A56, 0xB45E,
+	0x8A57, 0xB45F, 0x8A58, 0xB462, 0x8A59, 0xB464, 0x8A5A, 0xB466,
+	0x8A61, 0xB467, 0x8A62, 0xB468, 0x8A63, 0xB469, 0x8A64, 0xB46A,
+	0x8A65, 0xB46B, 0x8A66, 0xB46D, 0x8A67, 0xB46E, 0x8A68, 0xB46F,
+	0x8A69, 0xB470, 0x8A6A, 0xB471, 0x8A6B, 0xB472, 0x8A6C, 0xB473,
+	0x8A6D, 0xB474, 0x8A6E, 0xB475, 0x8A6F, 0xB476, 0x8A70, 0xB477,
+	0x8A71, 0xB478, 0x8A72, 0xB479, 0x8A73, 0xB47A, 0x8A74, 0xB47B,
+	0x8A75, 0xB47C, 0x8A76, 0xB47D, 0x8A77, 0xB47E, 0x8A78, 0xB47F,
+	0x8A79, 0xB481, 0x8A7A, 0xB482, 0x8A81, 0xB483, 0x8A82, 0xB484,
+	0x8A83, 0xB485, 0x8A84, 0xB486, 0x8A85, 0xB487, 0x8A86, 0xB489,
+	0x8A87, 0xB48A, 0x8A88, 0xB48B, 0x8A89, 0xB48C, 0x8A8A, 0xB48D,
+	0x8A8B, 0xB48E, 0x8A8C, 0xB48F, 0x8A8D, 0xB490, 0x8A8E, 0xB491,
+	0x8A8F, 0xB492, 0x8A90, 0xB493, 0x8A91, 0xB494, 0x8A92, 0xB495,
+	0x8A93, 0xB496, 0x8A94, 0xB497, 0x8A95, 0xB498, 0x8A96, 0xB499,
+	0x8A97, 0xB49A, 0x8A98, 0xB49B, 0x8A99, 0xB49C, 0x8A9A, 0xB49E,
+	0x8A9B, 0xB49F, 0x8A9C, 0xB4A0, 0x8A9D, 0xB4A1, 0x8A9E, 0xB4A2,
+	0x8A9F, 0xB4A3, 0x8AA0, 0xB4A5, 0x8AA1, 0xB4A6, 0x8AA2, 0xB4A7,
+	0x8AA3, 0xB4A9, 0x8AA4, 0xB4AA, 0x8AA5, 0xB4AB, 0x8AA6, 0xB4AD,
+	0x8AA7, 0xB4AE, 0x8AA8, 0xB4AF, 0x8AA9, 0xB4B0, 0x8AAA, 0xB4B1,
+	0x8AAB, 0xB4B2, 0x8AAC, 0xB4B3, 0x8AAD, 0xB4B4, 0x8AAE, 0xB4B6,
+	0x8AAF, 0xB4B8, 0x8AB0, 0xB4BA, 0x8AB1, 0xB4BB, 0x8AB2, 0xB4BC,
+	0x8AB3, 0xB4BD, 0x8AB4, 0xB4BE, 0x8AB5, 0xB4BF, 0x8AB6, 0xB4C1,
+	0x8AB7, 0xB4C2, 0x8AB8, 0xB4C3, 0x8AB9, 0xB4C5, 0x8ABA, 0xB4C6,
+	0x8ABB, 0xB4C7, 0x8ABC, 0xB4C9, 0x8ABD, 0xB4CA, 0x8ABE, 0xB4CB,
+	0x8ABF, 0xB4CC, 0x8AC0, 0xB4CD, 0x8AC1, 0xB4CE, 0x8AC2, 0xB4CF,
+	0x8AC3, 0xB4D1, 0x8AC4, 0xB4D2, 0x8AC5, 0xB4D3, 0x8AC6, 0xB4D4,
+	0x8AC7, 0xB4D6, 0x8AC8, 0xB4D7, 0x8AC9, 0xB4D8, 0x8ACA, 0xB4D9,
+	0x8ACB, 0xB4DA, 0x8ACC, 0xB4DB, 0x8ACD, 0xB4DE, 0x8ACE, 0xB4DF,
+	0x8ACF, 0xB4E1, 0x8AD0, 0xB4E2, 0x8AD1, 0xB4E5, 0x8AD2, 0xB4E7,
+	0x8AD3, 0xB4E8, 0x8AD4, 0xB4E9, 0x8AD5, 0xB4EA, 0x8AD6, 0xB4EB,
+	0x8AD7, 0xB4EE, 0x8AD8, 0xB4F0, 0x8AD9, 0xB4F2, 0x8ADA, 0xB4F3,
+	0x8ADB, 0xB4F4, 0x8ADC, 0xB4F5, 0x8ADD, 0xB4F6, 0x8ADE, 0xB4F7,
+	0x8ADF, 0xB4F9, 0x8AE0, 0xB4FA, 0x8AE1, 0xB4FB, 0x8AE2, 0xB4FC,
+	0x8AE3, 0xB4FD, 0x8AE4, 0xB4FE, 0x8AE5, 0xB4FF, 0x8AE6, 0xB500,
+	0x8AE7, 0xB501, 0x8AE8, 0xB502, 0x8AE9, 0xB503, 0x8AEA, 0xB504,
+	0x8AEB, 0xB505, 0x8AEC, 0xB506, 0x8AED, 0xB507, 0x8AEE, 0xB508,
+	0x8AEF, 0xB509, 0x8AF0, 0xB50A, 0x8AF1, 0xB50B, 0x8AF2, 0xB50C,
+	0x8AF3, 0xB50D, 0x8AF4, 0xB50E, 0x8AF5, 0xB50F, 0x8AF6, 0xB510,
+	0x8AF7, 0xB511, 0x8AF8, 0xB512, 0x8AF9, 0xB513, 0x8AFA, 0xB516,
+	0x8AFB, 0xB517, 0x8AFC, 0xB519, 0x8AFD, 0xB51A, 0x8AFE, 0xB51D,
+	0x8B41, 0xB51E, 0x8B42, 0xB51F, 0x8B43, 0xB520, 0x8B44, 0xB521,
+	0x8B45, 0xB522, 0x8B46, 0xB523, 0x8B47, 0xB526, 0x8B48, 0xB52B,
+	0x8B49, 0xB52C, 0x8B4A, 0xB52D, 0x8B4B, 0xB52E, 0x8B4C, 0xB52F,
+	0x8B4D, 0xB532, 0x8B4E, 0xB533, 0x8B4F, 0xB535, 0x8B50, 0xB536,
+	0x8B51, 0xB537, 0x8B52, 0xB539, 0x8B53, 0xB53A, 0x8B54, 0xB53B,
+	0x8B55, 0xB53C, 0x8B56, 0xB53D, 0x8B57, 0xB53E, 0x8B58, 0xB53F,
+	0x8B59, 0xB542, 0x8B5A, 0xB546, 0x8B61, 0xB547, 0x8B62, 0xB548,
+	0x8B63, 0xB549, 0x8B64, 0xB54A, 0x8B65, 0xB54E, 0x8B66, 0xB54F,
+	0x8B67, 0xB551, 0x8B68, 0xB552, 0x8B69, 0xB553, 0x8B6A, 0xB555,
+	0x8B6B, 0xB556, 0x8B6C, 0xB557, 0x8B6D, 0xB558, 0x8B6E, 0xB559,
+	0x8B6F, 0xB55A, 0x8B70, 0xB55B, 0x8B71, 0xB55E, 0x8B72, 0xB562,
+	0x8B73, 0xB563, 0x8B74, 0xB564, 0x8B75, 0xB565, 0x8B76, 0xB566,
+	0x8B77, 0xB567, 0x8B78, 0xB568, 0x8B79, 0xB569, 0x8B7A, 0xB56A,
+	0x8B81, 0xB56B, 0x8B82, 0xB56C, 0x8B83, 0xB56D, 0x8B84, 0xB56E,
+	0x8B85, 0xB56F, 0x8B86, 0xB570, 0x8B87, 0xB571, 0x8B88, 0xB572,
+	0x8B89, 0xB573, 0x8B8A, 0xB574, 0x8B8B, 0xB575, 0x8B8C, 0xB576,
+	0x8B8D, 0xB577, 0x8B8E, 0xB578, 0x8B8F, 0xB579, 0x8B90, 0xB57A,
+	0x8B91, 0xB57B, 0x8B92, 0xB57C, 0x8B93, 0xB57D, 0x8B94, 0xB57E,
+	0x8B95, 0xB57F, 0x8B96, 0xB580, 0x8B97, 0xB581, 0x8B98, 0xB582,
+	0x8B99, 0xB583, 0x8B9A, 0xB584, 0x8B9B, 0xB585, 0x8B9C, 0xB586,
+	0x8B9D, 0xB587, 0x8B9E, 0xB588, 0x8B9F, 0xB589, 0x8BA0, 0xB58A,
+	0x8BA1, 0xB58B, 0x8BA2, 0xB58C, 0x8BA3, 0xB58D, 0x8BA4, 0xB58E,
+	0x8BA5, 0xB58F, 0x8BA6, 0xB590, 0x8BA7, 0xB591, 0x8BA8, 0xB592,
+	0x8BA9, 0xB593, 0x8BAA, 0xB594, 0x8BAB, 0xB595, 0x8BAC, 0xB596,
+	0x8BAD, 0xB597, 0x8BAE, 0xB598, 0x8BAF, 0xB599, 0x8BB0, 0xB59A,
+	0x8BB1, 0xB59B, 0x8BB2, 0xB59C, 0x8BB3, 0xB59D, 0x8BB4, 0xB59E,
+	0x8BB5, 0xB59F, 0x8BB6, 0xB5A2, 0x8BB7, 0xB5A3, 0x8BB8, 0xB5A5,
+	0x8BB9, 0xB5A6, 0x8BBA, 0xB5A7, 0x8BBB, 0xB5A9, 0x8BBC, 0xB5AC,
+	0x8BBD, 0xB5AD, 0x8BBE, 0xB5AE, 0x8BBF, 0xB5AF, 0x8BC0, 0xB5B2,
+	0x8BC1, 0xB5B6, 0x8BC2, 0xB5B7, 0x8BC3, 0xB5B8, 0x8BC4, 0xB5B9,
+	0x8BC5, 0xB5BA, 0x8BC6, 0xB5BE, 0x8BC7, 0xB5BF, 0x8BC8, 0xB5C1,
+	0x8BC9, 0xB5C2, 0x8BCA, 0xB5C3, 0x8BCB, 0xB5C5, 0x8BCC, 0xB5C6,
+	0x8BCD, 0xB5C7, 0x8BCE, 0xB5C8, 0x8BCF, 0xB5C9, 0x8BD0, 0xB5CA,
+	0x8BD1, 0xB5CB, 0x8BD2, 0xB5CE, 0x8BD3, 0xB5D2, 0x8BD4, 0xB5D3,
+	0x8BD5, 0xB5D4, 0x8BD6, 0xB5D5, 0x8BD7, 0xB5D6, 0x8BD8, 0xB5D7,
+	0x8BD9, 0xB5D9, 0x8BDA, 0xB5DA, 0x8BDB, 0xB5DB, 0x8BDC, 0xB5DC,
+	0x8BDD, 0xB5DD, 0x8BDE, 0xB5DE, 0x8BDF, 0xB5DF, 0x8BE0, 0xB5E0,
+	0x8BE1, 0xB5E1, 0x8BE2, 0xB5E2, 0x8BE3, 0xB5E3, 0x8BE4, 0xB5E4,
+	0x8BE5, 0xB5E5, 0x8BE6, 0xB5E6, 0x8BE7, 0xB5E7, 0x8BE8, 0xB5E8,
+	0x8BE9, 0xB5E9, 0x8BEA, 0xB5EA, 0x8BEB, 0xB5EB, 0x8BEC, 0xB5ED,
+	0x8BED, 0xB5EE, 0x8BEE, 0xB5EF, 0x8BEF, 0xB5F0, 0x8BF0, 0xB5F1,
+	0x8BF1, 0xB5F2, 0x8BF2, 0xB5F3, 0x8BF3, 0xB5F4, 0x8BF4, 0xB5F5,
+	0x8BF5, 0xB5F6, 0x8BF6, 0xB5F7, 0x8BF7, 0xB5F8, 0x8BF8, 0xB5F9,
+	0x8BF9, 0xB5FA, 0x8BFA, 0xB5FB, 0x8BFB, 0xB5FC, 0x8BFC, 0xB5FD,
+	0x8BFD, 0xB5FE, 0x8BFE, 0xB5FF, 0x8C41, 0xB600, 0x8C42, 0xB601,
+	0x8C43, 0xB602, 0x8C44, 0xB603, 0x8C45, 0xB604, 0x8C46, 0xB605,
+	0x8C47, 0xB606, 0x8C48, 0xB607, 0x8C49, 0xB608, 0x8C4A, 0xB609,
+	0x8C4B, 0xB60A, 0x8C4C, 0xB60B, 0x8C4D, 0xB60C, 0x8C4E, 0xB60D,
+	0x8C4F, 0xB60E, 0x8C50, 0xB60F, 0x8C51, 0xB612, 0x8C52, 0xB613,
+	0x8C53, 0xB615, 0x8C54, 0xB616, 0x8C55, 0xB617, 0x8C56, 0xB619,
+	0x8C57, 0xB61A, 0x8C58, 0xB61B, 0x8C59, 0xB61C, 0x8C5A, 0xB61D,
+	0x8C61, 0xB61E, 0x8C62, 0xB61F, 0x8C63, 0xB620, 0x8C64, 0xB621,
+	0x8C65, 0xB622, 0x8C66, 0xB623, 0x8C67, 0xB624, 0x8C68, 0xB626,
+	0x8C69, 0xB627, 0x8C6A, 0xB628, 0x8C6B, 0xB629, 0x8C6C, 0xB62A,
+	0x8C6D, 0xB62B, 0x8C6E, 0xB62D, 0x8C6F, 0xB62E, 0x8C70, 0xB62F,
+	0x8C71, 0xB630, 0x8C72, 0xB631, 0x8C73, 0xB632, 0x8C74, 0xB633,
+	0x8C75, 0xB635, 0x8C76, 0xB636, 0x8C77, 0xB637, 0x8C78, 0xB638,
+	0x8C79, 0xB639, 0x8C7A, 0xB63A, 0x8C81, 0xB63B, 0x8C82, 0xB63C,
+	0x8C83, 0xB63D, 0x8C84, 0xB63E, 0x8C85, 0xB63F, 0x8C86, 0xB640,
+	0x8C87, 0xB641, 0x8C88, 0xB642, 0x8C89, 0xB643, 0x8C8A, 0xB644,
+	0x8C8B, 0xB645, 0x8C8C, 0xB646, 0x8C8D, 0xB647, 0x8C8E, 0xB649,
+	0x8C8F, 0xB64A, 0x8C90, 0xB64B, 0x8C91, 0xB64C, 0x8C92, 0xB64D,
+	0x8C93, 0xB64E, 0x8C94, 0xB64F, 0x8C95, 0xB650, 0x8C96, 0xB651,
+	0x8C97, 0xB652, 0x8C98, 0xB653, 0x8C99, 0xB654, 0x8C9A, 0xB655,
+	0x8C9B, 0xB656, 0x8C9C, 0xB657, 0x8C9D, 0xB658, 0x8C9E, 0xB659,
+	0x8C9F, 0xB65A, 0x8CA0, 0xB65B, 0x8CA1, 0xB65C, 0x8CA2, 0xB65D,
+	0x8CA3, 0xB65E, 0x8CA4, 0xB65F, 0x8CA5, 0xB660, 0x8CA6, 0xB661,
+	0x8CA7, 0xB662, 0x8CA8, 0xB663, 0x8CA9, 0xB665, 0x8CAA, 0xB666,
+	0x8CAB, 0xB667, 0x8CAC, 0xB669, 0x8CAD, 0xB66A, 0x8CAE, 0xB66B,
+	0x8CAF, 0xB66C, 0x8CB0, 0xB66D, 0x8CB1, 0xB66E, 0x8CB2, 0xB66F,
+	0x8CB3, 0xB670, 0x8CB4, 0xB671, 0x8CB5, 0xB672, 0x8CB6, 0xB673,
+	0x8CB7, 0xB674, 0x8CB8, 0xB675, 0x8CB9, 0xB676, 0x8CBA, 0xB677,
+	0x8CBB, 0xB678, 0x8CBC, 0xB679, 0x8CBD, 0xB67A, 0x8CBE, 0xB67B,
+	0x8CBF, 0xB67C, 0x8CC0, 0xB67D, 0x8CC1, 0xB67E, 0x8CC2, 0xB67F,
+	0x8CC3, 0xB680, 0x8CC4, 0xB681, 0x8CC5, 0xB682, 0x8CC6, 0xB683,
+	0x8CC7, 0xB684, 0x8CC8, 0xB685, 0x8CC9, 0xB686, 0x8CCA, 0xB687,
+	0x8CCB, 0xB688, 0x8CCC, 0xB689, 0x8CCD, 0xB68A, 0x8CCE, 0xB68B,
+	0x8CCF, 0xB68C, 0x8CD0, 0xB68D, 0x8CD1, 0xB68E, 0x8CD2, 0xB68F,
+	0x8CD3, 0xB690, 0x8CD4, 0xB691, 0x8CD5, 0xB692, 0x8CD6, 0xB693,
+	0x8CD7, 0xB694, 0x8CD8, 0xB695, 0x8CD9, 0xB696, 0x8CDA, 0xB697,
+	0x8CDB, 0xB698, 0x8CDC, 0xB699, 0x8CDD, 0xB69A, 0x8CDE, 0xB69B,
+	0x8CDF, 0xB69E, 0x8CE0, 0xB69F, 0x8CE1, 0xB6A1, 0x8CE2, 0xB6A2,
+	0x8CE3, 0xB6A3, 0x8CE4, 0xB6A5, 0x8CE5, 0xB6A6, 0x8CE6, 0xB6A7,
+	0x8CE7, 0xB6A8, 0x8CE8, 0xB6A9, 0x8CE9, 0xB6AA, 0x8CEA, 0xB6AD,
+	0x8CEB, 0xB6AE, 0x8CEC, 0xB6AF, 0x8CED, 0xB6B0, 0x8CEE, 0xB6B2,
+	0x8CEF, 0xB6B3, 0x8CF0, 0xB6B4, 0x8CF1, 0xB6B5, 0x8CF2, 0xB6B6,
+	0x8CF3, 0xB6B7, 0x8CF4, 0xB6B8, 0x8CF5, 0xB6B9, 0x8CF6, 0xB6BA,
+	0x8CF7, 0xB6BB, 0x8CF8, 0xB6BC, 0x8CF9, 0xB6BD, 0x8CFA, 0xB6BE,
+	0x8CFB, 0xB6BF, 0x8CFC, 0xB6C0, 0x8CFD, 0xB6C1, 0x8CFE, 0xB6C2,
+	0x8D41, 0xB6C3, 0x8D42, 0xB6C4, 0x8D43, 0xB6C5, 0x8D44, 0xB6C6,
+	0x8D45, 0xB6C7, 0x8D46, 0xB6C8, 0x8D47, 0xB6C9, 0x8D48, 0xB6CA,
+	0x8D49, 0xB6CB, 0x8D4A, 0xB6CC, 0x8D4B, 0xB6CD, 0x8D4C, 0xB6CE,
+	0x8D4D, 0xB6CF, 0x8D4E, 0xB6D0, 0x8D4F, 0xB6D1, 0x8D50, 0xB6D2,
+	0x8D51, 0xB6D3, 0x8D52, 0xB6D5, 0x8D53, 0xB6D6, 0x8D54, 0xB6D7,
+	0x8D55, 0xB6D8, 0x8D56, 0xB6D9, 0x8D57, 0xB6DA, 0x8D58, 0xB6DB,
+	0x8D59, 0xB6DC, 0x8D5A, 0xB6DD, 0x8D61, 0xB6DE, 0x8D62, 0xB6DF,
+	0x8D63, 0xB6E0, 0x8D64, 0xB6E1, 0x8D65, 0xB6E2, 0x8D66, 0xB6E3,
+	0x8D67, 0xB6E4, 0x8D68, 0xB6E5, 0x8D69, 0xB6E6, 0x8D6A, 0xB6E7,
+	0x8D6B, 0xB6E8, 0x8D6C, 0xB6E9, 0x8D6D, 0xB6EA, 0x8D6E, 0xB6EB,
+	0x8D6F, 0xB6EC, 0x8D70, 0xB6ED, 0x8D71, 0xB6EE, 0x8D72, 0xB6EF,
+	0x8D73, 0xB6F1, 0x8D74, 0xB6F2, 0x8D75, 0xB6F3, 0x8D76, 0xB6F5,
+	0x8D77, 0xB6F6, 0x8D78, 0xB6F7, 0x8D79, 0xB6F9, 0x8D7A, 0xB6FA,
+	0x8D81, 0xB6FB, 0x8D82, 0xB6FC, 0x8D83, 0xB6FD, 0x8D84, 0xB6FE,
+	0x8D85, 0xB6FF, 0x8D86, 0xB702, 0x8D87, 0xB703, 0x8D88, 0xB704,
+	0x8D89, 0xB706, 0x8D8A, 0xB707, 0x8D8B, 0xB708, 0x8D8C, 0xB709,
+	0x8D8D, 0xB70A, 0x8D8E, 0xB70B, 0x8D8F, 0xB70C, 0x8D90, 0xB70D,
+	0x8D91, 0xB70E, 0x8D92, 0xB70F, 0x8D93, 0xB710, 0x8D94, 0xB711,
+	0x8D95, 0xB712, 0x8D96, 0xB713, 0x8D97, 0xB714, 0x8D98, 0xB715,
+	0x8D99, 0xB716, 0x8D9A, 0xB717, 0x8D9B, 0xB718, 0x8D9C, 0xB719,
+	0x8D9D, 0xB71A, 0x8D9E, 0xB71B, 0x8D9F, 0xB71C, 0x8DA0, 0xB71D,
+	0x8DA1, 0xB71E, 0x8DA2, 0xB71F, 0x8DA3, 0xB720, 0x8DA4, 0xB721,
+	0x8DA5, 0xB722, 0x8DA6, 0xB723, 0x8DA7, 0xB724, 0x8DA8, 0xB725,
+	0x8DA9, 0xB726, 0x8DAA, 0xB727, 0x8DAB, 0xB72A, 0x8DAC, 0xB72B,
+	0x8DAD, 0xB72D, 0x8DAE, 0xB72E, 0x8DAF, 0xB731, 0x8DB0, 0xB732,
+	0x8DB1, 0xB733, 0x8DB2, 0xB734, 0x8DB3, 0xB735, 0x8DB4, 0xB736,
+	0x8DB5, 0xB737, 0x8DB6, 0xB73A, 0x8DB7, 0xB73C, 0x8DB8, 0xB73D,
+	0x8DB9, 0xB73E, 0x8DBA, 0xB73F, 0x8DBB, 0xB740, 0x8DBC, 0xB741,
+	0x8DBD, 0xB742, 0x8DBE, 0xB743, 0x8DBF, 0xB745, 0x8DC0, 0xB746,
+	0x8DC1, 0xB747, 0x8DC2, 0xB749, 0x8DC3, 0xB74A, 0x8DC4, 0xB74B,
+	0x8DC5, 0xB74D, 0x8DC6, 0xB74E, 0x8DC7, 0xB74F, 0x8DC8, 0xB750,
+	0x8DC9, 0xB751, 0x8DCA, 0xB752, 0x8DCB, 0xB753, 0x8DCC, 0xB756,
+	0x8DCD, 0xB757, 0x8DCE, 0xB758, 0x8DCF, 0xB759, 0x8DD0, 0xB75A,
+	0x8DD1, 0xB75B, 0x8DD2, 0xB75C, 0x8DD3, 0xB75D, 0x8DD4, 0xB75E,
+	0x8DD5, 0xB75F, 0x8DD6, 0xB761, 0x8DD7, 0xB762, 0x8DD8, 0xB763,
+	0x8DD9, 0xB765, 0x8DDA, 0xB766, 0x8DDB, 0xB767, 0x8DDC, 0xB769,
+	0x8DDD, 0xB76A, 0x8DDE, 0xB76B, 0x8DDF, 0xB76C, 0x8DE0, 0xB76D,
+	0x8DE1, 0xB76E, 0x8DE2, 0xB76F, 0x8DE3, 0xB772, 0x8DE4, 0xB774,
+	0x8DE5, 0xB776, 0x8DE6, 0xB777, 0x8DE7, 0xB778, 0x8DE8, 0xB779,
+	0x8DE9, 0xB77A, 0x8DEA, 0xB77B, 0x8DEB, 0xB77E, 0x8DEC, 0xB77F,
+	0x8DED, 0xB781, 0x8DEE, 0xB782, 0x8DEF, 0xB783, 0x8DF0, 0xB785,
+	0x8DF1, 0xB786, 0x8DF2, 0xB787, 0x8DF3, 0xB788, 0x8DF4, 0xB789,
+	0x8DF5, 0xB78A, 0x8DF6, 0xB78B, 0x8DF7, 0xB78E, 0x8DF8, 0xB793,
+	0x8DF9, 0xB794, 0x8DFA, 0xB795, 0x8DFB, 0xB79A, 0x8DFC, 0xB79B,
+	0x8DFD, 0xB79D, 0x8DFE, 0xB79E, 0x8E41, 0xB79F, 0x8E42, 0xB7A1,
+	0x8E43, 0xB7A2, 0x8E44, 0xB7A3, 0x8E45, 0xB7A4, 0x8E46, 0xB7A5,
+	0x8E47, 0xB7A6, 0x8E48, 0xB7A7, 0x8E49, 0xB7AA, 0x8E4A, 0xB7AE,
+	0x8E4B, 0xB7AF, 0x8E4C, 0xB7B0, 0x8E4D, 0xB7B1, 0x8E4E, 0xB7B2,
+	0x8E4F, 0xB7B3, 0x8E50, 0xB7B6, 0x8E51, 0xB7B7, 0x8E52, 0xB7B9,
+	0x8E53, 0xB7BA, 0x8E54, 0xB7BB, 0x8E55, 0xB7BC, 0x8E56, 0xB7BD,
+	0x8E57, 0xB7BE, 0x8E58, 0xB7BF, 0x8E59, 0xB7C0, 0x8E5A, 0xB7C1,
+	0x8E61, 0xB7C2, 0x8E62, 0xB7C3, 0x8E63, 0xB7C4, 0x8E64, 0xB7C5,
+	0x8E65, 0xB7C6, 0x8E66, 0xB7C8, 0x8E67, 0xB7CA, 0x8E68, 0xB7CB,
+	0x8E69, 0xB7CC, 0x8E6A, 0xB7CD, 0x8E6B, 0xB7CE, 0x8E6C, 0xB7CF,
+	0x8E6D, 0xB7D0, 0x8E6E, 0xB7D1, 0x8E6F, 0xB7D2, 0x8E70, 0xB7D3,
+	0x8E71, 0xB7D4, 0x8E72, 0xB7D5, 0x8E73, 0xB7D6, 0x8E74, 0xB7D7,
+	0x8E75, 0xB7D8, 0x8E76, 0xB7D9, 0x8E77, 0xB7DA, 0x8E78, 0xB7DB,
+	0x8E79, 0xB7DC, 0x8E7A, 0xB7DD, 0x8E81, 0xB7DE, 0x8E82, 0xB7DF,
+	0x8E83, 0xB7E0, 0x8E84, 0xB7E1, 0x8E85, 0xB7E2, 0x8E86, 0xB7E3,
+	0x8E87, 0xB7E4, 0x8E88, 0xB7E5, 0x8E89, 0xB7E6, 0x8E8A, 0xB7E7,
+	0x8E8B, 0xB7E8, 0x8E8C, 0xB7E9, 0x8E8D, 0xB7EA, 0x8E8E, 0xB7EB,
+	0x8E8F, 0xB7EE, 0x8E90, 0xB7EF, 0x8E91, 0xB7F1, 0x8E92, 0xB7F2,
+	0x8E93, 0xB7F3, 0x8E94, 0xB7F5, 0x8E95, 0xB7F6, 0x8E96, 0xB7F7,
+	0x8E97, 0xB7F8, 0x8E98, 0xB7F9, 0x8E99, 0xB7FA, 0x8E9A, 0xB7FB,
+	0x8E9B, 0xB7FE, 0x8E9C, 0xB802, 0x8E9D, 0xB803, 0x8E9E, 0xB804,
+	0x8E9F, 0xB805, 0x8EA0, 0xB806, 0x8EA1, 0xB80A, 0x8EA2, 0xB80B,
+	0x8EA3, 0xB80D, 0x8EA4, 0xB80E, 0x8EA5, 0xB80F, 0x8EA6, 0xB811,
+	0x8EA7, 0xB812, 0x8EA8, 0xB813, 0x8EA9, 0xB814, 0x8EAA, 0xB815,
+	0x8EAB, 0xB816, 0x8EAC, 0xB817, 0x8EAD, 0xB81A, 0x8EAE, 0xB81C,
+	0x8EAF, 0xB81E, 0x8EB0, 0xB81F, 0x8EB1, 0xB820, 0x8EB2, 0xB821,
+	0x8EB3, 0xB822, 0x8EB4, 0xB823, 0x8EB5, 0xB826, 0x8EB6, 0xB827,
+	0x8EB7, 0xB829, 0x8EB8, 0xB82A, 0x8EB9, 0xB82B, 0x8EBA, 0xB82D,
+	0x8EBB, 0xB82E, 0x8EBC, 0xB82F, 0x8EBD, 0xB830, 0x8EBE, 0xB831,
+	0x8EBF, 0xB832, 0x8EC0, 0xB833, 0x8EC1, 0xB836, 0x8EC2, 0xB83A,
+	0x8EC3, 0xB83B, 0x8EC4, 0xB83C, 0x8EC5, 0xB83D, 0x8EC6, 0xB83E,
+	0x8EC7, 0xB83F, 0x8EC8, 0xB841, 0x8EC9, 0xB842, 0x8ECA, 0xB843,
+	0x8ECB, 0xB845, 0x8ECC, 0xB846, 0x8ECD, 0xB847, 0x8ECE, 0xB848,
+	0x8ECF, 0xB849, 0x8ED0, 0xB84A, 0x8ED1, 0xB84B, 0x8ED2, 0xB84C,
+	0x8ED3, 0xB84D, 0x8ED4, 0xB84E, 0x8ED5, 0xB84F, 0x8ED6, 0xB850,
+	0x8ED7, 0xB852, 0x8ED8, 0xB854, 0x8ED9, 0xB855, 0x8EDA, 0xB856,
+	0x8EDB, 0xB857, 0x8EDC, 0xB858, 0x8EDD, 0xB859, 0x8EDE, 0xB85A,
+	0x8EDF, 0xB85B, 0x8EE0, 0xB85E, 0x8EE1, 0xB85F, 0x8EE2, 0xB861,
+	0x8EE3, 0xB862, 0x8EE4, 0xB863, 0x8EE5, 0xB865, 0x8EE6, 0xB866,
+	0x8EE7, 0xB867, 0x8EE8, 0xB868, 0x8EE9, 0xB869, 0x8EEA, 0xB86A,
+	0x8EEB, 0xB86B, 0x8EEC, 0xB86E, 0x8EED, 0xB870, 0x8EEE, 0xB872,
+	0x8EEF, 0xB873, 0x8EF0, 0xB874, 0x8EF1, 0xB875, 0x8EF2, 0xB876,
+	0x8EF3, 0xB877, 0x8EF4, 0xB879, 0x8EF5, 0xB87A, 0x8EF6, 0xB87B,
+	0x8EF7, 0xB87D, 0x8EF8, 0xB87E, 0x8EF9, 0xB87F, 0x8EFA, 0xB880,
+	0x8EFB, 0xB881, 0x8EFC, 0xB882, 0x8EFD, 0xB883, 0x8EFE, 0xB884,
+	0x8F41, 0xB885, 0x8F42, 0xB886, 0x8F43, 0xB887, 0x8F44, 0xB888,
+	0x8F45, 0xB889, 0x8F46, 0xB88A, 0x8F47, 0xB88B, 0x8F48, 0xB88C,
+	0x8F49, 0xB88E, 0x8F4A, 0xB88F, 0x8F4B, 0xB890, 0x8F4C, 0xB891,
+	0x8F4D, 0xB892, 0x8F4E, 0xB893, 0x8F4F, 0xB894, 0x8F50, 0xB895,
+	0x8F51, 0xB896, 0x8F52, 0xB897, 0x8F53, 0xB898, 0x8F54, 0xB899,
+	0x8F55, 0xB89A, 0x8F56, 0xB89B, 0x8F57, 0xB89C, 0x8F58, 0xB89D,
+	0x8F59, 0xB89E, 0x8F5A, 0xB89F, 0x8F61, 0xB8A0, 0x8F62, 0xB8A1,
+	0x8F63, 0xB8A2, 0x8F64, 0xB8A3, 0x8F65, 0xB8A4, 0x8F66, 0xB8A5,
+	0x8F67, 0xB8A6, 0x8F68, 0xB8A7, 0x8F69, 0xB8A9, 0x8F6A, 0xB8AA,
+	0x8F6B, 0xB8AB, 0x8F6C, 0xB8AC, 0x8F6D, 0xB8AD, 0x8F6E, 0xB8AE,
+	0x8F6F, 0xB8AF, 0x8F70, 0xB8B1, 0x8F71, 0xB8B2, 0x8F72, 0xB8B3,
+	0x8F73, 0xB8B5, 0x8F74, 0xB8B6, 0x8F75, 0xB8B7, 0x8F76, 0xB8B9,
+	0x8F77, 0xB8BA, 0x8F78, 0xB8BB, 0x8F79, 0xB8BC, 0x8F7A, 0xB8BD,
+	0x8F81, 0xB8BE, 0x8F82, 0xB8BF, 0x8F83, 0xB8C2, 0x8F84, 0xB8C4,
+	0x8F85, 0xB8C6, 0x8F86, 0xB8C7, 0x8F87, 0xB8C8, 0x8F88, 0xB8C9,
+	0x8F89, 0xB8CA, 0x8F8A, 0xB8CB, 0x8F8B, 0xB8CD, 0x8F8C, 0xB8CE,
+	0x8F8D, 0xB8CF, 0x8F8E, 0xB8D1, 0x8F8F, 0xB8D2, 0x8F90, 0xB8D3,
+	0x8F91, 0xB8D5, 0x8F92, 0xB8D6, 0x8F93, 0xB8D7, 0x8F94, 0xB8D8,
+	0x8F95, 0xB8D9, 0x8F96, 0xB8DA, 0x8F97, 0xB8DB, 0x8F98, 0xB8DC,
+	0x8F99, 0xB8DE, 0x8F9A, 0xB8E0, 0x8F9B, 0xB8E2, 0x8F9C, 0xB8E3,
+	0x8F9D, 0xB8E4, 0x8F9E, 0xB8E5, 0x8F9F, 0xB8E6, 0x8FA0, 0xB8E7,
+	0x8FA1, 0xB8EA, 0x8FA2, 0xB8EB, 0x8FA3, 0xB8ED, 0x8FA4, 0xB8EE,
+	0x8FA5, 0xB8EF, 0x8FA6, 0xB8F1, 0x8FA7, 0xB8F2, 0x8FA8, 0xB8F3,
+	0x8FA9, 0xB8F4, 0x8FAA, 0xB8F5, 0x8FAB, 0xB8F6, 0x8FAC, 0xB8F7,
+	0x8FAD, 0xB8FA, 0x8FAE, 0xB8FC, 0x8FAF, 0xB8FE, 0x8FB0, 0xB8FF,
+	0x8FB1, 0xB900, 0x8FB2, 0xB901, 0x8FB3, 0xB902, 0x8FB4, 0xB903,
+	0x8FB5, 0xB905, 0x8FB6, 0xB906, 0x8FB7, 0xB907, 0x8FB8, 0xB908,
+	0x8FB9, 0xB909, 0x8FBA, 0xB90A, 0x8FBB, 0xB90B, 0x8FBC, 0xB90C,
+	0x8FBD, 0xB90D, 0x8FBE, 0xB90E, 0x8FBF, 0xB90F, 0x8FC0, 0xB910,
+	0x8FC1, 0xB911, 0x8FC2, 0xB912, 0x8FC3, 0xB913, 0x8FC4, 0xB914,
+	0x8FC5, 0xB915, 0x8FC6, 0xB916, 0x8FC7, 0xB917, 0x8FC8, 0xB919,
+	0x8FC9, 0xB91A, 0x8FCA, 0xB91B, 0x8FCB, 0xB91C, 0x8FCC, 0xB91D,
+	0x8FCD, 0xB91E, 0x8FCE, 0xB91F, 0x8FCF, 0xB921, 0x8FD0, 0xB922,
+	0x8FD1, 0xB923, 0x8FD2, 0xB924, 0x8FD3, 0xB925, 0x8FD4, 0xB926,
+	0x8FD5, 0xB927, 0x8FD6, 0xB928, 0x8FD7, 0xB929, 0x8FD8, 0xB92A,
+	0x8FD9, 0xB92B, 0x8FDA, 0xB92C, 0x8FDB, 0xB92D, 0x8FDC, 0xB92E,
+	0x8FDD, 0xB92F, 0x8FDE, 0xB930, 0x8FDF, 0xB931, 0x8FE0, 0xB932,
+	0x8FE1, 0xB933, 0x8FE2, 0xB934, 0x8FE3, 0xB935, 0x8FE4, 0xB936,
+	0x8FE5, 0xB937, 0x8FE6, 0xB938, 0x8FE7, 0xB939, 0x8FE8, 0xB93A,
+	0x8FE9, 0xB93B, 0x8FEA, 0xB93E, 0x8FEB, 0xB93F, 0x8FEC, 0xB941,
+	0x8FED, 0xB942, 0x8FEE, 0xB943, 0x8FEF, 0xB945, 0x8FF0, 0xB946,
+	0x8FF1, 0xB947, 0x8FF2, 0xB948, 0x8FF3, 0xB949, 0x8FF4, 0xB94A,
+	0x8FF5, 0xB94B, 0x8FF6, 0xB94D, 0x8FF7, 0xB94E, 0x8FF8, 0xB950,
+	0x8FF9, 0xB952, 0x8FFA, 0xB953, 0x8FFB, 0xB954, 0x8FFC, 0xB955,
+	0x8FFD, 0xB956, 0x8FFE, 0xB957, 0x9041, 0xB95A, 0x9042, 0xB95B,
+	0x9043, 0xB95D, 0x9044, 0xB95E, 0x9045, 0xB95F, 0x9046, 0xB961,
+	0x9047, 0xB962, 0x9048, 0xB963, 0x9049, 0xB964, 0x904A, 0xB965,
+	0x904B, 0xB966, 0x904C, 0xB967, 0x904D, 0xB96A, 0x904E, 0xB96C,
+	0x904F, 0xB96E, 0x9050, 0xB96F, 0x9051, 0xB970, 0x9052, 0xB971,
+	0x9053, 0xB972, 0x9054, 0xB973, 0x9055, 0xB976, 0x9056, 0xB977,
+	0x9057, 0xB979, 0x9058, 0xB97A, 0x9059, 0xB97B, 0x905A, 0xB97D,
+	0x9061, 0xB97E, 0x9062, 0xB97F, 0x9063, 0xB980, 0x9064, 0xB981,
+	0x9065, 0xB982, 0x9066, 0xB983, 0x9067, 0xB986, 0x9068, 0xB988,
+	0x9069, 0xB98B, 0x906A, 0xB98C, 0x906B, 0xB98F, 0x906C, 0xB990,
+	0x906D, 0xB991, 0x906E, 0xB992, 0x906F, 0xB993, 0x9070, 0xB994,
+	0x9071, 0xB995, 0x9072, 0xB996, 0x9073, 0xB997, 0x9074, 0xB998,
+	0x9075, 0xB999, 0x9076, 0xB99A, 0x9077, 0xB99B, 0x9078, 0xB99C,
+	0x9079, 0xB99D, 0x907A, 0xB99E, 0x9081, 0xB99F, 0x9082, 0xB9A0,
+	0x9083, 0xB9A1, 0x9084, 0xB9A2, 0x9085, 0xB9A3, 0x9086, 0xB9A4,
+	0x9087, 0xB9A5, 0x9088, 0xB9A6, 0x9089, 0xB9A7, 0x908A, 0xB9A8,
+	0x908B, 0xB9A9, 0x908C, 0xB9AA, 0x908D, 0xB9AB, 0x908E, 0xB9AE,
+	0x908F, 0xB9AF, 0x9090, 0xB9B1, 0x9091, 0xB9B2, 0x9092, 0xB9B3,
+	0x9093, 0xB9B5, 0x9094, 0xB9B6, 0x9095, 0xB9B7, 0x9096, 0xB9B8,
+	0x9097, 0xB9B9, 0x9098, 0xB9BA, 0x9099, 0xB9BB, 0x909A, 0xB9BE,
+	0x909B, 0xB9C0, 0x909C, 0xB9C2, 0x909D, 0xB9C3, 0x909E, 0xB9C4,
+	0x909F, 0xB9C5, 0x90A0, 0xB9C6, 0x90A1, 0xB9C7, 0x90A2, 0xB9CA,
+	0x90A3, 0xB9CB, 0x90A4, 0xB9CD, 0x90A5, 0xB9D3, 0x90A6, 0xB9D4,
+	0x90A7, 0xB9D5, 0x90A8, 0xB9D6, 0x90A9, 0xB9D7, 0x90AA, 0xB9DA,
+	0x90AB, 0xB9DC, 0x90AC, 0xB9DF, 0x90AD, 0xB9E0, 0x90AE, 0xB9E2,
+	0x90AF, 0xB9E6, 0x90B0, 0xB9E7, 0x90B1, 0xB9E9, 0x90B2, 0xB9EA,
+	0x90B3, 0xB9EB, 0x90B4, 0xB9ED, 0x90B5, 0xB9EE, 0x90B6, 0xB9EF,
+	0x90B7, 0xB9F0, 0x90B8, 0xB9F1, 0x90B9, 0xB9F2, 0x90BA, 0xB9F3,
+	0x90BB, 0xB9F6, 0x90BC, 0xB9FB, 0x90BD, 0xB9FC, 0x90BE, 0xB9FD,
+	0x90BF, 0xB9FE, 0x90C0, 0xB9FF, 0x90C1, 0xBA02, 0x90C2, 0xBA03,
+	0x90C3, 0xBA04, 0x90C4, 0xBA05, 0x90C5, 0xBA06, 0x90C6, 0xBA07,
+	0x90C7, 0xBA09, 0x90C8, 0xBA0A, 0x90C9, 0xBA0B, 0x90CA, 0xBA0C,
+	0x90CB, 0xBA0D, 0x90CC, 0xBA0E, 0x90CD, 0xBA0F, 0x90CE, 0xBA10,
+	0x90CF, 0xBA11, 0x90D0, 0xBA12, 0x90D1, 0xBA13, 0x90D2, 0xBA14,
+	0x90D3, 0xBA16, 0x90D4, 0xBA17, 0x90D5, 0xBA18, 0x90D6, 0xBA19,
+	0x90D7, 0xBA1A, 0x90D8, 0xBA1B, 0x90D9, 0xBA1C, 0x90DA, 0xBA1D,
+	0x90DB, 0xBA1E, 0x90DC, 0xBA1F, 0x90DD, 0xBA20, 0x90DE, 0xBA21,
+	0x90DF, 0xBA22, 0x90E0, 0xBA23, 0x90E1, 0xBA24, 0x90E2, 0xBA25,
+	0x90E3, 0xBA26, 0x90E4, 0xBA27, 0x90E5, 0xBA28, 0x90E6, 0xBA29,
+	0x90E7, 0xBA2A, 0x90E8, 0xBA2B, 0x90E9, 0xBA2C, 0x90EA, 0xBA2D,
+	0x90EB, 0xBA2E, 0x90EC, 0xBA2F, 0x90ED, 0xBA30, 0x90EE, 0xBA31,
+	0x90EF, 0xBA32, 0x90F0, 0xBA33, 0x90F1, 0xBA34, 0x90F2, 0xBA35,
+	0x90F3, 0xBA36, 0x90F4, 0xBA37, 0x90F5, 0xBA3A, 0x90F6, 0xBA3B,
+	0x90F7, 0xBA3D, 0x90F8, 0xBA3E, 0x90F9, 0xBA3F, 0x90FA, 0xBA41,
+	0x90FB, 0xBA43, 0x90FC, 0xBA44, 0x90FD, 0xBA45, 0x90FE, 0xBA46,
+	0x9141, 0xBA47, 0x9142, 0xBA4A, 0x9143, 0xBA4C, 0x9144, 0xBA4F,
+	0x9145, 0xBA50, 0x9146, 0xBA51, 0x9147, 0xBA52, 0x9148, 0xBA56,
+	0x9149, 0xBA57, 0x914A, 0xBA59, 0x914B, 0xBA5A, 0x914C, 0xBA5B,
+	0x914D, 0xBA5D, 0x914E, 0xBA5E, 0x914F, 0xBA5F, 0x9150, 0xBA60,
+	0x9151, 0xBA61, 0x9152, 0xBA62, 0x9153, 0xBA63, 0x9154, 0xBA66,
+	0x9155, 0xBA6A, 0x9156, 0xBA6B, 0x9157, 0xBA6C, 0x9158, 0xBA6D,
+	0x9159, 0xBA6E, 0x915A, 0xBA6F, 0x9161, 0xBA72, 0x9162, 0xBA73,
+	0x9163, 0xBA75, 0x9164, 0xBA76, 0x9165, 0xBA77, 0x9166, 0xBA79,
+	0x9167, 0xBA7A, 0x9168, 0xBA7B, 0x9169, 0xBA7C, 0x916A, 0xBA7D,
+	0x916B, 0xBA7E, 0x916C, 0xBA7F, 0x916D, 0xBA80, 0x916E, 0xBA81,
+	0x916F, 0xBA82, 0x9170, 0xBA86, 0x9171, 0xBA88, 0x9172, 0xBA89,
+	0x9173, 0xBA8A, 0x9174, 0xBA8B, 0x9175, 0xBA8D, 0x9176, 0xBA8E,
+	0x9177, 0xBA8F, 0x9178, 0xBA90, 0x9179, 0xBA91, 0x917A, 0xBA92,
+	0x9181, 0xBA93, 0x9182, 0xBA94, 0x9183, 0xBA95, 0x9184, 0xBA96,
+	0x9185, 0xBA97, 0x9186, 0xBA98, 0x9187, 0xBA99, 0x9188, 0xBA9A,
+	0x9189, 0xBA9B, 0x918A, 0xBA9C, 0x918B, 0xBA9D, 0x918C, 0xBA9E,
+	0x918D, 0xBA9F, 0x918E, 0xBAA0, 0x918F, 0xBAA1, 0x9190, 0xBAA2,
+	0x9191, 0xBAA3, 0x9192, 0xBAA4, 0x9193, 0xBAA5, 0x9194, 0xBAA6,
+	0x9195, 0xBAA7, 0x9196, 0xBAAA, 0x9197, 0xBAAD, 0x9198, 0xBAAE,
+	0x9199, 0xBAAF, 0x919A, 0xBAB1, 0x919B, 0xBAB3, 0x919C, 0xBAB4,
+	0x919D, 0xBAB5, 0x919E, 0xBAB6, 0x919F, 0xBAB7, 0x91A0, 0xBABA,
+	0x91A1, 0xBABC, 0x91A2, 0xBABE, 0x91A3, 0xBABF, 0x91A4, 0xBAC0,
+	0x91A5, 0xBAC1, 0x91A6, 0xBAC2, 0x91A7, 0xBAC3, 0x91A8, 0xBAC5,
+	0x91A9, 0xBAC6, 0x91AA, 0xBAC7, 0x91AB, 0xBAC9, 0x91AC, 0xBACA,
+	0x91AD, 0xBACB, 0x91AE, 0xBACC, 0x91AF, 0xBACD, 0x91B0, 0xBACE,
+	0x91B1, 0xBACF, 0x91B2, 0xBAD0, 0x91B3, 0xBAD1, 0x91B4, 0xBAD2,
+	0x91B5, 0xBAD3, 0x91B6, 0xBAD4, 0x91B7, 0xBAD5, 0x91B8, 0xBAD6,
+	0x91B9, 0xBAD7, 0x91BA, 0xBADA, 0x91BB, 0xBADB, 0x91BC, 0xBADC,
+	0x91BD, 0xBADD, 0x91BE, 0xBADE, 0x91BF, 0xBADF, 0x91C0, 0xBAE0,
+	0x91C1, 0xBAE1, 0x91C2, 0xBAE2, 0x91C3, 0xBAE3, 0x91C4, 0xBAE4,
+	0x91C5, 0xBAE5, 0x91C6, 0xBAE6, 0x91C7, 0xBAE7, 0x91C8, 0xBAE8,
+	0x91C9, 0xBAE9, 0x91CA, 0xBAEA, 0x91CB, 0xBAEB, 0x91CC, 0xBAEC,
+	0x91CD, 0xBAED, 0x91CE, 0xBAEE, 0x91CF, 0xBAEF, 0x91D0, 0xBAF0,
+	0x91D1, 0xBAF1, 0x91D2, 0xBAF2, 0x91D3, 0xBAF3, 0x91D4, 0xBAF4,
+	0x91D5, 0xBAF5, 0x91D6, 0xBAF6, 0x91D7, 0xBAF7, 0x91D8, 0xBAF8,
+	0x91D9, 0xBAF9, 0x91DA, 0xBAFA, 0x91DB, 0xBAFB, 0x91DC, 0xBAFD,
+	0x91DD, 0xBAFE, 0x91DE, 0xBAFF, 0x91DF, 0xBB01, 0x91E0, 0xBB02,
+	0x91E1, 0xBB03, 0x91E2, 0xBB05, 0x91E3, 0xBB06, 0x91E4, 0xBB07,
+	0x91E5, 0xBB08, 0x91E6, 0xBB09, 0x91E7, 0xBB0A, 0x91E8, 0xBB0B,
+	0x91E9, 0xBB0C, 0x91EA, 0xBB0E, 0x91EB, 0xBB10, 0x91EC, 0xBB12,
+	0x91ED, 0xBB13, 0x91EE, 0xBB14, 0x91EF, 0xBB15, 0x91F0, 0xBB16,
+	0x91F1, 0xBB17, 0x91F2, 0xBB19, 0x91F3, 0xBB1A, 0x91F4, 0xBB1B,
+	0x91F5, 0xBB1D, 0x91F6, 0xBB1E, 0x91F7, 0xBB1F, 0x91F8, 0xBB21,
+	0x91F9, 0xBB22, 0x91FA, 0xBB23, 0x91FB, 0xBB24, 0x91FC, 0xBB25,
+	0x91FD, 0xBB26, 0x91FE, 0xBB27, 0x9241, 0xBB28, 0x9242, 0xBB2A,
+	0x9243, 0xBB2C, 0x9244, 0xBB2D, 0x9245, 0xBB2E, 0x9246, 0xBB2F,
+	0x9247, 0xBB30, 0x9248, 0xBB31, 0x9249, 0xBB32, 0x924A, 0xBB33,
+	0x924B, 0xBB37, 0x924C, 0xBB39, 0x924D, 0xBB3A, 0x924E, 0xBB3F,
+	0x924F, 0xBB40, 0x9250, 0xBB41, 0x9251, 0xBB42, 0x9252, 0xBB43,
+	0x9253, 0xBB46, 0x9254, 0xBB48, 0x9255, 0xBB4A, 0x9256, 0xBB4B,
+	0x9257, 0xBB4C, 0x9258, 0xBB4E, 0x9259, 0xBB51, 0x925A, 0xBB52,
+	0x9261, 0xBB53, 0x9262, 0xBB55, 0x9263, 0xBB56, 0x9264, 0xBB57,
+	0x9265, 0xBB59, 0x9266, 0xBB5A, 0x9267, 0xBB5B, 0x9268, 0xBB5C,
+	0x9269, 0xBB5D, 0x926A, 0xBB5E, 0x926B, 0xBB5F, 0x926C, 0xBB60,
+	0x926D, 0xBB62, 0x926E, 0xBB64, 0x926F, 0xBB65, 0x9270, 0xBB66,
+	0x9271, 0xBB67, 0x9272, 0xBB68, 0x9273, 0xBB69, 0x9274, 0xBB6A,
+	0x9275, 0xBB6B, 0x9276, 0xBB6D, 0x9277, 0xBB6E, 0x9278, 0xBB6F,
+	0x9279, 0xBB70, 0x927A, 0xBB71, 0x9281, 0xBB72, 0x9282, 0xBB73,
+	0x9283, 0xBB74, 0x9284, 0xBB75, 0x9285, 0xBB76, 0x9286, 0xBB77,
+	0x9287, 0xBB78, 0x9288, 0xBB79, 0x9289, 0xBB7A, 0x928A, 0xBB7B,
+	0x928B, 0xBB7C, 0x928C, 0xBB7D, 0x928D, 0xBB7E, 0x928E, 0xBB7F,
+	0x928F, 0xBB80, 0x9290, 0xBB81, 0x9291, 0xBB82, 0x9292, 0xBB83,
+	0x9293, 0xBB84, 0x9294, 0xBB85, 0x9295, 0xBB86, 0x9296, 0xBB87,
+	0x9297, 0xBB89, 0x9298, 0xBB8A, 0x9299, 0xBB8B, 0x929A, 0xBB8D,
+	0x929B, 0xBB8E, 0x929C, 0xBB8F, 0x929D, 0xBB91, 0x929E, 0xBB92,
+	0x929F, 0xBB93, 0x92A0, 0xBB94, 0x92A1, 0xBB95, 0x92A2, 0xBB96,
+	0x92A3, 0xBB97, 0x92A4, 0xBB98, 0x92A5, 0xBB99, 0x92A6, 0xBB9A,
+	0x92A7, 0xBB9B, 0x92A8, 0xBB9C, 0x92A9, 0xBB9D, 0x92AA, 0xBB9E,
+	0x92AB, 0xBB9F, 0x92AC, 0xBBA0, 0x92AD, 0xBBA1, 0x92AE, 0xBBA2,
+	0x92AF, 0xBBA3, 0x92B0, 0xBBA5, 0x92B1, 0xBBA6, 0x92B2, 0xBBA7,
+	0x92B3, 0xBBA9, 0x92B4, 0xBBAA, 0x92B5, 0xBBAB, 0x92B6, 0xBBAD,
+	0x92B7, 0xBBAE, 0x92B8, 0xBBAF, 0x92B9, 0xBBB0, 0x92BA, 0xBBB1,
+	0x92BB, 0xBBB2, 0x92BC, 0xBBB3, 0x92BD, 0xBBB5, 0x92BE, 0xBBB6,
+	0x92BF, 0xBBB8, 0x92C0, 0xBBB9, 0x92C1, 0xBBBA, 0x92C2, 0xBBBB,
+	0x92C3, 0xBBBC, 0x92C4, 0xBBBD, 0x92C5, 0xBBBE, 0x92C6, 0xBBBF,
+	0x92C7, 0xBBC1, 0x92C8, 0xBBC2, 0x92C9, 0xBBC3, 0x92CA, 0xBBC5,
+	0x92CB, 0xBBC6, 0x92CC, 0xBBC7, 0x92CD, 0xBBC9, 0x92CE, 0xBBCA,
+	0x92CF, 0xBBCB, 0x92D0, 0xBBCC, 0x92D1, 0xBBCD, 0x92D2, 0xBBCE,
+	0x92D3, 0xBBCF, 0x92D4, 0xBBD1, 0x92D5, 0xBBD2, 0x92D6, 0xBBD4,
+	0x92D7, 0xBBD5, 0x92D8, 0xBBD6, 0x92D9, 0xBBD7, 0x92DA, 0xBBD8,
+	0x92DB, 0xBBD9, 0x92DC, 0xBBDA, 0x92DD, 0xBBDB, 0x92DE, 0xBBDC,
+	0x92DF, 0xBBDD, 0x92E0, 0xBBDE, 0x92E1, 0xBBDF, 0x92E2, 0xBBE0,
+	0x92E3, 0xBBE1, 0x92E4, 0xBBE2, 0x92E5, 0xBBE3, 0x92E6, 0xBBE4,
+	0x92E7, 0xBBE5, 0x92E8, 0xBBE6, 0x92E9, 0xBBE7, 0x92EA, 0xBBE8,
+	0x92EB, 0xBBE9, 0x92EC, 0xBBEA, 0x92ED, 0xBBEB, 0x92EE, 0xBBEC,
+	0x92EF, 0xBBED, 0x92F0, 0xBBEE, 0x92F1, 0xBBEF, 0x92F2, 0xBBF0,
+	0x92F3, 0xBBF1, 0x92F4, 0xBBF2, 0x92F5, 0xBBF3, 0x92F6, 0xBBF4,
+	0x92F7, 0xBBF5, 0x92F8, 0xBBF6, 0x92F9, 0xBBF7, 0x92FA, 0xBBFA,
+	0x92FB, 0xBBFB, 0x92FC, 0xBBFD, 0x92FD, 0xBBFE, 0x92FE, 0xBC01,
+	0x9341, 0xBC03, 0x9342, 0xBC04, 0x9343, 0xBC05, 0x9344, 0xBC06,
+	0x9345, 0xBC07, 0x9346, 0xBC0A, 0x9347, 0xBC0E, 0x9348, 0xBC10,
+	0x9349, 0xBC12, 0x934A, 0xBC13, 0x934B, 0xBC19, 0x934C, 0xBC1A,
+	0x934D, 0xBC20, 0x934E, 0xBC21, 0x934F, 0xBC22, 0x9350, 0xBC23,
+	0x9351, 0xBC26, 0x9352, 0xBC28, 0x9353, 0xBC2A, 0x9354, 0xBC2B,
+	0x9355, 0xBC2C, 0x9356, 0xBC2E, 0x9357, 0xBC2F, 0x9358, 0xBC32,
+	0x9359, 0xBC33, 0x935A, 0xBC35, 0x9361, 0xBC36, 0x9362, 0xBC37,
+	0x9363, 0xBC39, 0x9364, 0xBC3A, 0x9365, 0xBC3B, 0x9366, 0xBC3C,
+	0x9367, 0xBC3D, 0x9368, 0xBC3E, 0x9369, 0xBC3F, 0x936A, 0xBC42,
+	0x936B, 0xBC46, 0x936C, 0xBC47, 0x936D, 0xBC48, 0x936E, 0xBC4A,
+	0x936F, 0xBC4B, 0x9370, 0xBC4E, 0x9371, 0xBC4F, 0x9372, 0xBC51,
+	0x9373, 0xBC52, 0x9374, 0xBC53, 0x9375, 0xBC54, 0x9376, 0xBC55,
+	0x9377, 0xBC56, 0x9378, 0xBC57, 0x9379, 0xBC58, 0x937A, 0xBC59,
+	0x9381, 0xBC5A, 0x9382, 0xBC5B, 0x9383, 0xBC5C, 0x9384, 0xBC5E,
+	0x9385, 0xBC5F, 0x9386, 0xBC60, 0x9387, 0xBC61, 0x9388, 0xBC62,
+	0x9389, 0xBC63, 0x938A, 0xBC64, 0x938B, 0xBC65, 0x938C, 0xBC66,
+	0x938D, 0xBC67, 0x938E, 0xBC68, 0x938F, 0xBC69, 0x9390, 0xBC6A,
+	0x9391, 0xBC6B, 0x9392, 0xBC6C, 0x9393, 0xBC6D, 0x9394, 0xBC6E,
+	0x9395, 0xBC6F, 0x9396, 0xBC70, 0x9397, 0xBC71, 0x9398, 0xBC72,
+	0x9399, 0xBC73, 0x939A, 0xBC74, 0x939B, 0xBC75, 0x939C, 0xBC76,
+	0x939D, 0xBC77, 0x939E, 0xBC78, 0x939F, 0xBC79, 0x93A0, 0xBC7A,
+	0x93A1, 0xBC7B, 0x93A2, 0xBC7C, 0x93A3, 0xBC7D, 0x93A4, 0xBC7E,
+	0x93A5, 0xBC7F, 0x93A6, 0xBC80, 0x93A7, 0xBC81, 0x93A8, 0xBC82,
+	0x93A9, 0xBC83, 0x93AA, 0xBC86, 0x93AB, 0xBC87, 0x93AC, 0xBC89,
+	0x93AD, 0xBC8A, 0x93AE, 0xBC8D, 0x93AF, 0xBC8F, 0x93B0, 0xBC90,
+	0x93B1, 0xBC91, 0x93B2, 0xBC92, 0x93B3, 0xBC93, 0x93B4, 0xBC96,
+	0x93B5, 0xBC98, 0x93B6, 0xBC9B, 0x93B7, 0xBC9C, 0x93B8, 0xBC9D,
+	0x93B9, 0xBC9E, 0x93BA, 0xBC9F, 0x93BB, 0xBCA2, 0x93BC, 0xBCA3,
+	0x93BD, 0xBCA5, 0x93BE, 0xBCA6, 0x93BF, 0xBCA9, 0x93C0, 0xBCAA,
+	0x93C1, 0xBCAB, 0x93C2, 0xBCAC, 0x93C3, 0xBCAD, 0x93C4, 0xBCAE,
+	0x93C5, 0xBCAF, 0x93C6, 0xBCB2, 0x93C7, 0xBCB6, 0x93C8, 0xBCB7,
+	0x93C9, 0xBCB8, 0x93CA, 0xBCB9, 0x93CB, 0xBCBA, 0x93CC, 0xBCBB,
+	0x93CD, 0xBCBE, 0x93CE, 0xBCBF, 0x93CF, 0xBCC1, 0x93D0, 0xBCC2,
+	0x93D1, 0xBCC3, 0x93D2, 0xBCC5, 0x93D3, 0xBCC6, 0x93D4, 0xBCC7,
+	0x93D5, 0xBCC8, 0x93D6, 0xBCC9, 0x93D7, 0xBCCA, 0x93D8, 0xBCCB,
+	0x93D9, 0xBCCC, 0x93DA, 0xBCCE, 0x93DB, 0xBCD2, 0x93DC, 0xBCD3,
+	0x93DD, 0xBCD4, 0x93DE, 0xBCD6, 0x93DF, 0xBCD7, 0x93E0, 0xBCD9,
+	0x93E1, 0xBCDA, 0x93E2, 0xBCDB, 0x93E3, 0xBCDD, 0x93E4, 0xBCDE,
+	0x93E5, 0xBCDF, 0x93E6, 0xBCE0, 0x93E7, 0xBCE1, 0x93E8, 0xBCE2,
+	0x93E9, 0xBCE3, 0x93EA, 0xBCE4, 0x93EB, 0xBCE5, 0x93EC, 0xBCE6,
+	0x93ED, 0xBCE7, 0x93EE, 0xBCE8, 0x93EF, 0xBCE9, 0x93F0, 0xBCEA,
+	0x93F1, 0xBCEB, 0x93F2, 0xBCEC, 0x93F3, 0xBCED, 0x93F4, 0xBCEE,
+	0x93F5, 0xBCEF, 0x93F6, 0xBCF0, 0x93F7, 0xBCF1, 0x93F8, 0xBCF2,
+	0x93F9, 0xBCF3, 0x93FA, 0xBCF7, 0x93FB, 0xBCF9, 0x93FC, 0xBCFA,
+	0x93FD, 0xBCFB, 0x93FE, 0xBCFD, 0x9441, 0xBCFE, 0x9442, 0xBCFF,
+	0x9443, 0xBD00, 0x9444, 0xBD01, 0x9445, 0xBD02, 0x9446, 0xBD03,
+	0x9447, 0xBD06, 0x9448, 0xBD08, 0x9449, 0xBD0A, 0x944A, 0xBD0B,
+	0x944B, 0xBD0C, 0x944C, 0xBD0D, 0x944D, 0xBD0E, 0x944E, 0xBD0F,
+	0x944F, 0xBD11, 0x9450, 0xBD12, 0x9451, 0xBD13, 0x9452, 0xBD15,
+	0x9453, 0xBD16, 0x9454, 0xBD17, 0x9455, 0xBD18, 0x9456, 0xBD19,
+	0x9457, 0xBD1A, 0x9458, 0xBD1B, 0x9459, 0xBD1C, 0x945A, 0xBD1D,
+	0x9461, 0xBD1E, 0x9462, 0xBD1F, 0x9463, 0xBD20, 0x9464, 0xBD21,
+	0x9465, 0xBD22, 0x9466, 0xBD23, 0x9467, 0xBD25, 0x9468, 0xBD26,
+	0x9469, 0xBD27, 0x946A, 0xBD28, 0x946B, 0xBD29, 0x946C, 0xBD2A,
+	0x946D, 0xBD2B, 0x946E, 0xBD2D, 0x946F, 0xBD2E, 0x9470, 0xBD2F,
+	0x9471, 0xBD30, 0x9472, 0xBD31, 0x9473, 0xBD32, 0x9474, 0xBD33,
+	0x9475, 0xBD34, 0x9476, 0xBD35, 0x9477, 0xBD36, 0x9478, 0xBD37,
+	0x9479, 0xBD38, 0x947A, 0xBD39, 0x9481, 0xBD3A, 0x9482, 0xBD3B,
+	0x9483, 0xBD3C, 0x9484, 0xBD3D, 0x9485, 0xBD3E, 0x9486, 0xBD3F,
+	0x9487, 0xBD41, 0x9488, 0xBD42, 0x9489, 0xBD43, 0x948A, 0xBD44,
+	0x948B, 0xBD45, 0x948C, 0xBD46, 0x948D, 0xBD47, 0x948E, 0xBD4A,
+	0x948F, 0xBD4B, 0x9490, 0xBD4D, 0x9491, 0xBD4E, 0x9492, 0xBD4F,
+	0x9493, 0xBD51, 0x9494, 0xBD52, 0x9495, 0xBD53, 0x9496, 0xBD54,
+	0x9497, 0xBD55, 0x9498, 0xBD56, 0x9499, 0xBD57, 0x949A, 0xBD5A,
+	0x949B, 0xBD5B, 0x949C, 0xBD5C, 0x949D, 0xBD5D, 0x949E, 0xBD5E,
+	0x949F, 0xBD5F, 0x94A0, 0xBD60, 0x94A1, 0xBD61, 0x94A2, 0xBD62,
+	0x94A3, 0xBD63, 0x94A4, 0xBD65, 0x94A5, 0xBD66, 0x94A6, 0xBD67,
+	0x94A7, 0xBD69, 0x94A8, 0xBD6A, 0x94A9, 0xBD6B, 0x94AA, 0xBD6C,
+	0x94AB, 0xBD6D, 0x94AC, 0xBD6E, 0x94AD, 0xBD6F, 0x94AE, 0xBD70,
+	0x94AF, 0xBD71, 0x94B0, 0xBD72, 0x94B1, 0xBD73, 0x94B2, 0xBD74,
+	0x94B3, 0xBD75, 0x94B4, 0xBD76, 0x94B5, 0xBD77, 0x94B6, 0xBD78,
+	0x94B7, 0xBD79, 0x94B8, 0xBD7A, 0x94B9, 0xBD7B, 0x94BA, 0xBD7C,
+	0x94BB, 0xBD7D, 0x94BC, 0xBD7E, 0x94BD, 0xBD7F, 0x94BE, 0xBD82,
+	0x94BF, 0xBD83, 0x94C0, 0xBD85, 0x94C1, 0xBD86, 0x94C2, 0xBD8B,
+	0x94C3, 0xBD8C, 0x94C4, 0xBD8D, 0x94C5, 0xBD8E, 0x94C6, 0xBD8F,
+	0x94C7, 0xBD92, 0x94C8, 0xBD94, 0x94C9, 0xBD96, 0x94CA, 0xBD97,
+	0x94CB, 0xBD98, 0x94CC, 0xBD9B, 0x94CD, 0xBD9D, 0x94CE, 0xBD9E,
+	0x94CF, 0xBD9F, 0x94D0, 0xBDA0, 0x94D1, 0xBDA1, 0x94D2, 0xBDA2,
+	0x94D3, 0xBDA3, 0x94D4, 0xBDA5, 0x94D5, 0xBDA6, 0x94D6, 0xBDA7,
+	0x94D7, 0xBDA8, 0x94D8, 0xBDA9, 0x94D9, 0xBDAA, 0x94DA, 0xBDAB,
+	0x94DB, 0xBDAC, 0x94DC, 0xBDAD, 0x94DD, 0xBDAE, 0x94DE, 0xBDAF,
+	0x94DF, 0xBDB1, 0x94E0, 0xBDB2, 0x94E1, 0xBDB3, 0x94E2, 0xBDB4,
+	0x94E3, 0xBDB5, 0x94E4, 0xBDB6, 0x94E5, 0xBDB7, 0x94E6, 0xBDB9,
+	0x94E7, 0xBDBA, 0x94E8, 0xBDBB, 0x94E9, 0xBDBC, 0x94EA, 0xBDBD,
+	0x94EB, 0xBDBE, 0x94EC, 0xBDBF, 0x94ED, 0xBDC0, 0x94EE, 0xBDC1,
+	0x94EF, 0xBDC2, 0x94F0, 0xBDC3, 0x94F1, 0xBDC4, 0x94F2, 0xBDC5,
+	0x94F3, 0xBDC6, 0x94F4, 0xBDC7, 0x94F5, 0xBDC8, 0x94F6, 0xBDC9,
+	0x94F7, 0xBDCA, 0x94F8, 0xBDCB, 0x94F9, 0xBDCC, 0x94FA, 0xBDCD,
+	0x94FB, 0xBDCE, 0x94FC, 0xBDCF, 0x94FD, 0xBDD0, 0x94FE, 0xBDD1,
+	0x9541, 0xBDD2, 0x9542, 0xBDD3, 0x9543, 0xBDD6, 0x9544, 0xBDD7,
+	0x9545, 0xBDD9, 0x9546, 0xBDDA, 0x9547, 0xBDDB, 0x9548, 0xBDDD,
+	0x9549, 0xBDDE, 0x954A, 0xBDDF, 0x954B, 0xBDE0, 0x954C, 0xBDE1,
+	0x954D, 0xBDE2, 0x954E, 0xBDE3, 0x954F, 0xBDE4, 0x9550, 0xBDE5,
+	0x9551, 0xBDE6, 0x9552, 0xBDE7, 0x9553, 0xBDE8, 0x9554, 0xBDEA,
+	0x9555, 0xBDEB, 0x9556, 0xBDEC, 0x9557, 0xBDED, 0x9558, 0xBDEE,
+	0x9559, 0xBDEF, 0x955A, 0xBDF1, 0x9561, 0xBDF2, 0x9562, 0xBDF3,
+	0x9563, 0xBDF5, 0x9564, 0xBDF6, 0x9565, 0xBDF7, 0x9566, 0xBDF9,
+	0x9567, 0xBDFA, 0x9568, 0xBDFB, 0x9569, 0xBDFC, 0x956A, 0xBDFD,
+	0x956B, 0xBDFE, 0x956C, 0xBDFF, 0x956D, 0xBE01, 0x956E, 0xBE02,
+	0x956F, 0xBE04, 0x9570, 0xBE06, 0x9571, 0xBE07, 0x9572, 0xBE08,
+	0x9573, 0xBE09, 0x9574, 0xBE0A, 0x9575, 0xBE0B, 0x9576, 0xBE0E,
+	0x9577, 0xBE0F, 0x9578, 0xBE11, 0x9579, 0xBE12, 0x957A, 0xBE13,
+	0x9581, 0xBE15, 0x9582, 0xBE16, 0x9583, 0xBE17, 0x9584, 0xBE18,
+	0x9585, 0xBE19, 0x9586, 0xBE1A, 0x9587, 0xBE1B, 0x9588, 0xBE1E,
+	0x9589, 0xBE20, 0x958A, 0xBE21, 0x958B, 0xBE22, 0x958C, 0xBE23,
+	0x958D, 0xBE24, 0x958E, 0xBE25, 0x958F, 0xBE26, 0x9590, 0xBE27,
+	0x9591, 0xBE28, 0x9592, 0xBE29, 0x9593, 0xBE2A, 0x9594, 0xBE2B,
+	0x9595, 0xBE2C, 0x9596, 0xBE2D, 0x9597, 0xBE2E, 0x9598, 0xBE2F,
+	0x9599, 0xBE30, 0x959A, 0xBE31, 0x959B, 0xBE32, 0x959C, 0xBE33,
+	0x959D, 0xBE34, 0x959E, 0xBE35, 0x959F, 0xBE36, 0x95A0, 0xBE37,
+	0x95A1, 0xBE38, 0x95A2, 0xBE39, 0x95A3, 0xBE3A, 0x95A4, 0xBE3B,
+	0x95A5, 0xBE3C, 0x95A6, 0xBE3D, 0x95A7, 0xBE3E, 0x95A8, 0xBE3F,
+	0x95A9, 0xBE40, 0x95AA, 0xBE41, 0x95AB, 0xBE42, 0x95AC, 0xBE43,
+	0x95AD, 0xBE46, 0x95AE, 0xBE47, 0x95AF, 0xBE49, 0x95B0, 0xBE4A,
+	0x95B1, 0xBE4B, 0x95B2, 0xBE4D, 0x95B3, 0xBE4F, 0x95B4, 0xBE50,
+	0x95B5, 0xBE51, 0x95B6, 0xBE52, 0x95B7, 0xBE53, 0x95B8, 0xBE56,
+	0x95B9, 0xBE58, 0x95BA, 0xBE5C, 0x95BB, 0xBE5D, 0x95BC, 0xBE5E,
+	0x95BD, 0xBE5F, 0x95BE, 0xBE62, 0x95BF, 0xBE63, 0x95C0, 0xBE65,
+	0x95C1, 0xBE66, 0x95C2, 0xBE67, 0x95C3, 0xBE69, 0x95C4, 0xBE6B,
+	0x95C5, 0xBE6C, 0x95C6, 0xBE6D, 0x95C7, 0xBE6E, 0x95C8, 0xBE6F,
+	0x95C9, 0xBE72, 0x95CA, 0xBE76, 0x95CB, 0xBE77, 0x95CC, 0xBE78,
+	0x95CD, 0xBE79, 0x95CE, 0xBE7A, 0x95CF, 0xBE7E, 0x95D0, 0xBE7F,
+	0x95D1, 0xBE81, 0x95D2, 0xBE82, 0x95D3, 0xBE83, 0x95D4, 0xBE85,
+	0x95D5, 0xBE86, 0x95D6, 0xBE87, 0x95D7, 0xBE88, 0x95D8, 0xBE89,
+	0x95D9, 0xBE8A, 0x95DA, 0xBE8B, 0x95DB, 0xBE8E, 0x95DC, 0xBE92,
+	0x95DD, 0xBE93, 0x95DE, 0xBE94, 0x95DF, 0xBE95, 0x95E0, 0xBE96,
+	0x95E1, 0xBE97, 0x95E2, 0xBE9A, 0x95E3, 0xBE9B, 0x95E4, 0xBE9C,
+	0x95E5, 0xBE9D, 0x95E6, 0xBE9E, 0x95E7, 0xBE9F, 0x95E8, 0xBEA0,
+	0x95E9, 0xBEA1, 0x95EA, 0xBEA2, 0x95EB, 0xBEA3, 0x95EC, 0xBEA4,
+	0x95ED, 0xBEA5, 0x95EE, 0xBEA6, 0x95EF, 0xBEA7, 0x95F0, 0xBEA9,
+	0x95F1, 0xBEAA, 0x95F2, 0xBEAB, 0x95F3, 0xBEAC, 0x95F4, 0xBEAD,
+	0x95F5, 0xBEAE, 0x95F6, 0xBEAF, 0x95F7, 0xBEB0, 0x95F8, 0xBEB1,
+	0x95F9, 0xBEB2, 0x95FA, 0xBEB3, 0x95FB, 0xBEB4, 0x95FC, 0xBEB5,
+	0x95FD, 0xBEB6, 0x95FE, 0xBEB7, 0x9641, 0xBEB8, 0x9642, 0xBEB9,
+	0x9643, 0xBEBA, 0x9644, 0xBEBB, 0x9645, 0xBEBC, 0x9646, 0xBEBD,
+	0x9647, 0xBEBE, 0x9648, 0xBEBF, 0x9649, 0xBEC0, 0x964A, 0xBEC1,
+	0x964B, 0xBEC2, 0x964C, 0xBEC3, 0x964D, 0xBEC4, 0x964E, 0xBEC5,
+	0x964F, 0xBEC6, 0x9650, 0xBEC7, 0x9651, 0xBEC8, 0x9652, 0xBEC9,
+	0x9653, 0xBECA, 0x9654, 0xBECB, 0x9655, 0xBECC, 0x9656, 0xBECD,
+	0x9657, 0xBECE, 0x9658, 0xBECF, 0x9659, 0xBED2, 0x965A, 0xBED3,
+	0x9661, 0xBED5, 0x9662, 0xBED6, 0x9663, 0xBED9, 0x9664, 0xBEDA,
+	0x9665, 0xBEDB, 0x9666, 0xBEDC, 0x9667, 0xBEDD, 0x9668, 0xBEDE,
+	0x9669, 0xBEDF, 0x966A, 0xBEE1, 0x966B, 0xBEE2, 0x966C, 0xBEE6,
+	0x966D, 0xBEE7, 0x966E, 0xBEE8, 0x966F, 0xBEE9, 0x9670, 0xBEEA,
+	0x9671, 0xBEEB, 0x9672, 0xBEED, 0x9673, 0xBEEE, 0x9674, 0xBEEF,
+	0x9675, 0xBEF0, 0x9676, 0xBEF1, 0x9677, 0xBEF2, 0x9678, 0xBEF3,
+	0x9679, 0xBEF4, 0x967A, 0xBEF5, 0x9681, 0xBEF6, 0x9682, 0xBEF7,
+	0x9683, 0xBEF8, 0x9684, 0xBEF9, 0x9685, 0xBEFA, 0x9686, 0xBEFB,
+	0x9687, 0xBEFC, 0x9688, 0xBEFD, 0x9689, 0xBEFE, 0x968A, 0xBEFF,
+	0x968B, 0xBF00, 0x968C, 0xBF02, 0x968D, 0xBF03, 0x968E, 0xBF04,
+	0x968F, 0xBF05, 0x9690, 0xBF06, 0x9691, 0xBF07, 0x9692, 0xBF0A,
+	0x9693, 0xBF0B, 0x9694, 0xBF0C, 0x9695, 0xBF0D, 0x9696, 0xBF0E,
+	0x9697, 0xBF0F, 0x9698, 0xBF10, 0x9699, 0xBF11, 0x969A, 0xBF12,
+	0x969B, 0xBF13, 0x969C, 0xBF14, 0x969D, 0xBF15, 0x969E, 0xBF16,
+	0x969F, 0xBF17, 0x96A0, 0xBF1A, 0x96A1, 0xBF1E, 0x96A2, 0xBF1F,
+	0x96A3, 0xBF20, 0x96A4, 0xBF21, 0x96A5, 0xBF22, 0x96A6, 0xBF23,
+	0x96A7, 0xBF24, 0x96A8, 0xBF25, 0x96A9, 0xBF26, 0x96AA, 0xBF27,
+	0x96AB, 0xBF28, 0x96AC, 0xBF29, 0x96AD, 0xBF2A, 0x96AE, 0xBF2B,
+	0x96AF, 0xBF2C, 0x96B0, 0xBF2D, 0x96B1, 0xBF2E, 0x96B2, 0xBF2F,
+	0x96B3, 0xBF30, 0x96B4, 0xBF31, 0x96B5, 0xBF32, 0x96B6, 0xBF33,
+	0x96B7, 0xBF34, 0x96B8, 0xBF35, 0x96B9, 0xBF36, 0x96BA, 0xBF37,
+	0x96BB, 0xBF38, 0x96BC, 0xBF39, 0x96BD, 0xBF3A, 0x96BE, 0xBF3B,
+	0x96BF, 0xBF3C, 0x96C0, 0xBF3D, 0x96C1, 0xBF3E, 0x96C2, 0xBF3F,
+	0x96C3, 0xBF42, 0x96C4, 0xBF43, 0x96C5, 0xBF45, 0x96C6, 0xBF46,
+	0x96C7, 0xBF47, 0x96C8, 0xBF49, 0x96C9, 0xBF4A, 0x96CA, 0xBF4B,
+	0x96CB, 0xBF4C, 0x96CC, 0xBF4D, 0x96CD, 0xBF4E, 0x96CE, 0xBF4F,
+	0x96CF, 0xBF52, 0x96D0, 0xBF53, 0x96D1, 0xBF54, 0x96D2, 0xBF56,
+	0x96D3, 0xBF57, 0x96D4, 0xBF58, 0x96D5, 0xBF59, 0x96D6, 0xBF5A,
+	0x96D7, 0xBF5B, 0x96D8, 0xBF5C, 0x96D9, 0xBF5D, 0x96DA, 0xBF5E,
+	0x96DB, 0xBF5F, 0x96DC, 0xBF60, 0x96DD, 0xBF61, 0x96DE, 0xBF62,
+	0x96DF, 0xBF63, 0x96E0, 0xBF64, 0x96E1, 0xBF65, 0x96E2, 0xBF66,
+	0x96E3, 0xBF67, 0x96E4, 0xBF68, 0x96E5, 0xBF69, 0x96E6, 0xBF6A,
+	0x96E7, 0xBF6B, 0x96E8, 0xBF6C, 0x96E9, 0xBF6D, 0x96EA, 0xBF6E,
+	0x96EB, 0xBF6F, 0x96EC, 0xBF70, 0x96ED, 0xBF71, 0x96EE, 0xBF72,
+	0x96EF, 0xBF73, 0x96F0, 0xBF74, 0x96F1, 0xBF75, 0x96F2, 0xBF76,
+	0x96F3, 0xBF77, 0x96F4, 0xBF78, 0x96F5, 0xBF79, 0x96F6, 0xBF7A,
+	0x96F7, 0xBF7B, 0x96F8, 0xBF7C, 0x96F9, 0xBF7D, 0x96FA, 0xBF7E,
+	0x96FB, 0xBF7F, 0x96FC, 0xBF80, 0x96FD, 0xBF81, 0x96FE, 0xBF82,
+	0x9741, 0xBF83, 0x9742, 0xBF84, 0x9743, 0xBF85, 0x9744, 0xBF86,
+	0x9745, 0xBF87, 0x9746, 0xBF88, 0x9747, 0xBF89, 0x9748, 0xBF8A,
+	0x9749, 0xBF8B, 0x974A, 0xBF8C, 0x974B, 0xBF8D, 0x974C, 0xBF8E,
+	0x974D, 0xBF8F, 0x974E, 0xBF90, 0x974F, 0xBF91, 0x9750, 0xBF92,
+	0x9751, 0xBF93, 0x9752, 0xBF95, 0x9753, 0xBF96, 0x9754, 0xBF97,
+	0x9755, 0xBF98, 0x9756, 0xBF99, 0x9757, 0xBF9A, 0x9758, 0xBF9B,
+	0x9759, 0xBF9C, 0x975A, 0xBF9D, 0x9761, 0xBF9E, 0x9762, 0xBF9F,
+	0x9763, 0xBFA0, 0x9764, 0xBFA1, 0x9765, 0xBFA2, 0x9766, 0xBFA3,
+	0x9767, 0xBFA4, 0x9768, 0xBFA5, 0x9769, 0xBFA6, 0x976A, 0xBFA7,
+	0x976B, 0xBFA8, 0x976C, 0xBFA9, 0x976D, 0xBFAA, 0x976E, 0xBFAB,
+	0x976F, 0xBFAC, 0x9770, 0xBFAD, 0x9771, 0xBFAE, 0x9772, 0xBFAF,
+	0x9773, 0xBFB1, 0x9774, 0xBFB2, 0x9775, 0xBFB3, 0x9776, 0xBFB4,
+	0x9777, 0xBFB5, 0x9778, 0xBFB6, 0x9779, 0xBFB7, 0x977A, 0xBFB8,
+	0x9781, 0xBFB9, 0x9782, 0xBFBA, 0x9783, 0xBFBB, 0x9784, 0xBFBC,
+	0x9785, 0xBFBD, 0x9786, 0xBFBE, 0x9787, 0xBFBF, 0x9788, 0xBFC0,
+	0x9789, 0xBFC1, 0x978A, 0xBFC2, 0x978B, 0xBFC3, 0x978C, 0xBFC4,
+	0x978D, 0xBFC6, 0x978E, 0xBFC7, 0x978F, 0xBFC8, 0x9790, 0xBFC9,
+	0x9791, 0xBFCA, 0x9792, 0xBFCB, 0x9793, 0xBFCE, 0x9794, 0xBFCF,
+	0x9795, 0xBFD1, 0x9796, 0xBFD2, 0x9797, 0xBFD3, 0x9798, 0xBFD5,
+	0x9799, 0xBFD6, 0x979A, 0xBFD7, 0x979B, 0xBFD8, 0x979C, 0xBFD9,
+	0x979D, 0xBFDA, 0x979E, 0xBFDB, 0x979F, 0xBFDD, 0x97A0, 0xBFDE,
+	0x97A1, 0xBFE0, 0x97A2, 0xBFE2, 0x97A3, 0xBFE3, 0x97A4, 0xBFE4,
+	0x97A5, 0xBFE5, 0x97A6, 0xBFE6, 0x97A7, 0xBFE7, 0x97A8, 0xBFE8,
+	0x97A9, 0xBFE9, 0x97AA, 0xBFEA, 0x97AB, 0xBFEB, 0x97AC, 0xBFEC,
+	0x97AD, 0xBFED, 0x97AE, 0xBFEE, 0x97AF, 0xBFEF, 0x97B0, 0xBFF0,
+	0x97B1, 0xBFF1, 0x97B2, 0xBFF2, 0x97B3, 0xBFF3, 0x97B4, 0xBFF4,
+	0x97B5, 0xBFF5, 0x97B6, 0xBFF6, 0x97B7, 0xBFF7, 0x97B8, 0xBFF8,
+	0x97B9, 0xBFF9, 0x97BA, 0xBFFA, 0x97BB, 0xBFFB, 0x97BC, 0xBFFC,
+	0x97BD, 0xBFFD, 0x97BE, 0xBFFE, 0x97BF, 0xBFFF, 0x97C0, 0xC000,
+	0x97C1, 0xC001, 0x97C2, 0xC002, 0x97C3, 0xC003, 0x97C4, 0xC004,
+	0x97C5, 0xC005, 0x97C6, 0xC006, 0x97C7, 0xC007, 0x97C8, 0xC008,
+	0x97C9, 0xC009, 0x97CA, 0xC00A, 0x97CB, 0xC00B, 0x97CC, 0xC00C,
+	0x97CD, 0xC00D, 0x97CE, 0xC00E, 0x97CF, 0xC00F, 0x97D0, 0xC010,
+	0x97D1, 0xC011, 0x97D2, 0xC012, 0x97D3, 0xC013, 0x97D4, 0xC014,
+	0x97D5, 0xC015, 0x97D6, 0xC016, 0x97D7, 0xC017, 0x97D8, 0xC018,
+	0x97D9, 0xC019, 0x97DA, 0xC01A, 0x97DB, 0xC01B, 0x97DC, 0xC01C,
+	0x97DD, 0xC01D, 0x97DE, 0xC01E, 0x97DF, 0xC01F, 0x97E0, 0xC020,
+	0x97E1, 0xC021, 0x97E2, 0xC022, 0x97E3, 0xC023, 0x97E4, 0xC024,
+	0x97E5, 0xC025, 0x97E6, 0xC026, 0x97E7, 0xC027, 0x97E8, 0xC028,
+	0x97E9, 0xC029, 0x97EA, 0xC02A, 0x97EB, 0xC02B, 0x97EC, 0xC02C,
+	0x97ED, 0xC02D, 0x97EE, 0xC02E, 0x97EF, 0xC02F, 0x97F0, 0xC030,
+	0x97F1, 0xC031, 0x97F2, 0xC032, 0x97F3, 0xC033, 0x97F4, 0xC034,
+	0x97F5, 0xC035, 0x97F6, 0xC036, 0x97F7, 0xC037, 0x97F8, 0xC038,
+	0x97F9, 0xC039, 0x97FA, 0xC03A, 0x97FB, 0xC03B, 0x97FC, 0xC03D,
+	0x97FD, 0xC03E, 0x97FE, 0xC03F, 0x9841, 0xC040, 0x9842, 0xC041,
+	0x9843, 0xC042, 0x9844, 0xC043, 0x9845, 0xC044, 0x9846, 0xC045,
+	0x9847, 0xC046, 0x9848, 0xC047, 0x9849, 0xC048, 0x984A, 0xC049,
+	0x984B, 0xC04A, 0x984C, 0xC04B, 0x984D, 0xC04C, 0x984E, 0xC04D,
+	0x984F, 0xC04E, 0x9850, 0xC04F, 0x9851, 0xC050, 0x9852, 0xC052,
+	0x9853, 0xC053, 0x9854, 0xC054, 0x9855, 0xC055, 0x9856, 0xC056,
+	0x9857, 0xC057, 0x9858, 0xC059, 0x9859, 0xC05A, 0x985A, 0xC05B,
+	0x9861, 0xC05D, 0x9862, 0xC05E, 0x9863, 0xC05F, 0x9864, 0xC061,
+	0x9865, 0xC062, 0x9866, 0xC063, 0x9867, 0xC064, 0x9868, 0xC065,
+	0x9869, 0xC066, 0x986A, 0xC067, 0x986B, 0xC06A, 0x986C, 0xC06B,
+	0x986D, 0xC06C, 0x986E, 0xC06D, 0x986F, 0xC06E, 0x9870, 0xC06F,
+	0x9871, 0xC070, 0x9872, 0xC071, 0x9873, 0xC072, 0x9874, 0xC073,
+	0x9875, 0xC074, 0x9876, 0xC075, 0x9877, 0xC076, 0x9878, 0xC077,
+	0x9879, 0xC078, 0x987A, 0xC079, 0x9881, 0xC07A, 0x9882, 0xC07B,
+	0x9883, 0xC07C, 0x9884, 0xC07D, 0x9885, 0xC07E, 0x9886, 0xC07F,
+	0x9887, 0xC080, 0x9888, 0xC081, 0x9889, 0xC082, 0x988A, 0xC083,
+	0x988B, 0xC084, 0x988C, 0xC085, 0x988D, 0xC086, 0x988E, 0xC087,
+	0x988F, 0xC088, 0x9890, 0xC089, 0x9891, 0xC08A, 0x9892, 0xC08B,
+	0x9893, 0xC08C, 0x9894, 0xC08D, 0x9895, 0xC08E, 0x9896, 0xC08F,
+	0x9897, 0xC092, 0x9898, 0xC093, 0x9899, 0xC095, 0x989A, 0xC096,
+	0x989B, 0xC097, 0x989C, 0xC099, 0x989D, 0xC09A, 0x989E, 0xC09B,
+	0x989F, 0xC09C, 0x98A0, 0xC09D, 0x98A1, 0xC09E, 0x98A2, 0xC09F,
+	0x98A3, 0xC0A2, 0x98A4, 0xC0A4, 0x98A5, 0xC0A6, 0x98A6, 0xC0A7,
+	0x98A7, 0xC0A8, 0x98A8, 0xC0A9, 0x98A9, 0xC0AA, 0x98AA, 0xC0AB,
+	0x98AB, 0xC0AE, 0x98AC, 0xC0B1, 0x98AD, 0xC0B2, 0x98AE, 0xC0B7,
+	0x98AF, 0xC0B8, 0x98B0, 0xC0B9, 0x98B1, 0xC0BA, 0x98B2, 0xC0BB,
+	0x98B3, 0xC0BE, 0x98B4, 0xC0C2, 0x98B5, 0xC0C3, 0x98B6, 0xC0C4,
+	0x98B7, 0xC0C6, 0x98B8, 0xC0C7, 0x98B9, 0xC0CA, 0x98BA, 0xC0CB,
+	0x98BB, 0xC0CD, 0x98BC, 0xC0CE, 0x98BD, 0xC0CF, 0x98BE, 0xC0D1,
+	0x98BF, 0xC0D2, 0x98C0, 0xC0D3, 0x98C1, 0xC0D4, 0x98C2, 0xC0D5,
+	0x98C3, 0xC0D6, 0x98C4, 0xC0D7, 0x98C5, 0xC0DA, 0x98C6, 0xC0DE,
+	0x98C7, 0xC0DF, 0x98C8, 0xC0E0, 0x98C9, 0xC0E1, 0x98CA, 0xC0E2,
+	0x98CB, 0xC0E3, 0x98CC, 0xC0E6, 0x98CD, 0xC0E7, 0x98CE, 0xC0E9,
+	0x98CF, 0xC0EA, 0x98D0, 0xC0EB, 0x98D1, 0xC0ED, 0x98D2, 0xC0EE,
+	0x98D3, 0xC0EF, 0x98D4, 0xC0F0, 0x98D5, 0xC0F1, 0x98D6, 0xC0F2,
+	0x98D7, 0xC0F3, 0x98D8, 0xC0F6, 0x98D9, 0xC0F8, 0x98DA, 0xC0FA,
+	0x98DB, 0xC0FB, 0x98DC, 0xC0FC, 0x98DD, 0xC0FD, 0x98DE, 0xC0FE,
+	0x98DF, 0xC0FF, 0x98E0, 0xC101, 0x98E1, 0xC102, 0x98E2, 0xC103,
+	0x98E3, 0xC105, 0x98E4, 0xC106, 0x98E5, 0xC107, 0x98E6, 0xC109,
+	0x98E7, 0xC10A, 0x98E8, 0xC10B, 0x98E9, 0xC10C, 0x98EA, 0xC10D,
+	0x98EB, 0xC10E, 0x98EC, 0xC10F, 0x98ED, 0xC111, 0x98EE, 0xC112,
+	0x98EF, 0xC113, 0x98F0, 0xC114, 0x98F1, 0xC116, 0x98F2, 0xC117,
+	0x98F3, 0xC118, 0x98F4, 0xC119, 0x98F5, 0xC11A, 0x98F6, 0xC11B,
+	0x98F7, 0xC121, 0x98F8, 0xC122, 0x98F9, 0xC125, 0x98FA, 0xC128,
+	0x98FB, 0xC129, 0x98FC, 0xC12A, 0x98FD, 0xC12B, 0x98FE, 0xC12E,
+	0x9941, 0xC132, 0x9942, 0xC133, 0x9943, 0xC134, 0x9944, 0xC135,
+	0x9945, 0xC137, 0x9946, 0xC13A, 0x9947, 0xC13B, 0x9948, 0xC13D,
+	0x9949, 0xC13E, 0x994A, 0xC13F, 0x994B, 0xC141, 0x994C, 0xC142,
+	0x994D, 0xC143, 0x994E, 0xC144, 0x994F, 0xC145, 0x9950, 0xC146,
+	0x9951, 0xC147, 0x9952, 0xC14A, 0x9953, 0xC14E, 0x9954, 0xC14F,
+	0x9955, 0xC150, 0x9956, 0xC151, 0x9957, 0xC152, 0x9958, 0xC153,
+	0x9959, 0xC156, 0x995A, 0xC157, 0x9961, 0xC159, 0x9962, 0xC15A,
+	0x9963, 0xC15B, 0x9964, 0xC15D, 0x9965, 0xC15E, 0x9966, 0xC15F,
+	0x9967, 0xC160, 0x9968, 0xC161, 0x9969, 0xC162, 0x996A, 0xC163,
+	0x996B, 0xC166, 0x996C, 0xC16A, 0x996D, 0xC16B, 0x996E, 0xC16C,
+	0x996F, 0xC16D, 0x9970, 0xC16E, 0x9971, 0xC16F, 0x9972, 0xC171,
+	0x9973, 0xC172, 0x9974, 0xC173, 0x9975, 0xC175, 0x9976, 0xC176,
+	0x9977, 0xC177, 0x9978, 0xC179, 0x9979, 0xC17A, 0x997A, 0xC17B,
+	0x9981, 0xC17C, 0x9982, 0xC17D, 0x9983, 0xC17E, 0x9984, 0xC17F,
+	0x9985, 0xC180, 0x9986, 0xC181, 0x9987, 0xC182, 0x9988, 0xC183,
+	0x9989, 0xC184, 0x998A, 0xC186, 0x998B, 0xC187, 0x998C, 0xC188,
+	0x998D, 0xC189, 0x998E, 0xC18A, 0x998F, 0xC18B, 0x9990, 0xC18F,
+	0x9991, 0xC191, 0x9992, 0xC192, 0x9993, 0xC193, 0x9994, 0xC195,
+	0x9995, 0xC197, 0x9996, 0xC198, 0x9997, 0xC199, 0x9998, 0xC19A,
+	0x9999, 0xC19B, 0x999A, 0xC19E, 0x999B, 0xC1A0, 0x999C, 0xC1A2,
+	0x999D, 0xC1A3, 0x999E, 0xC1A4, 0x999F, 0xC1A6, 0x99A0, 0xC1A7,
+	0x99A1, 0xC1AA, 0x99A2, 0xC1AB, 0x99A3, 0xC1AD, 0x99A4, 0xC1AE,
+	0x99A5, 0xC1AF, 0x99A6, 0xC1B1, 0x99A7, 0xC1B2, 0x99A8, 0xC1B3,
+	0x99A9, 0xC1B4, 0x99AA, 0xC1B5, 0x99AB, 0xC1B6, 0x99AC, 0xC1B7,
+	0x99AD, 0xC1B8, 0x99AE, 0xC1B9, 0x99AF, 0xC1BA, 0x99B0, 0xC1BB,
+	0x99B1, 0xC1BC, 0x99B2, 0xC1BE, 0x99B3, 0xC1BF, 0x99B4, 0xC1C0,
+	0x99B5, 0xC1C1, 0x99B6, 0xC1C2, 0x99B7, 0xC1C3, 0x99B8, 0xC1C5,
+	0x99B9, 0xC1C6, 0x99BA, 0xC1C7, 0x99BB, 0xC1C9, 0x99BC, 0xC1CA,
+	0x99BD, 0xC1CB, 0x99BE, 0xC1CD, 0x99BF, 0xC1CE, 0x99C0, 0xC1CF,
+	0x99C1, 0xC1D0, 0x99C2, 0xC1D1, 0x99C3, 0xC1D2, 0x99C4, 0xC1D3,
+	0x99C5, 0xC1D5, 0x99C6, 0xC1D6, 0x99C7, 0xC1D9, 0x99C8, 0xC1DA,
+	0x99C9, 0xC1DB, 0x99CA, 0xC1DC, 0x99CB, 0xC1DD, 0x99CC, 0xC1DE,
+	0x99CD, 0xC1DF, 0x99CE, 0xC1E1, 0x99CF, 0xC1E2, 0x99D0, 0xC1E3,
+	0x99D1, 0xC1E5, 0x99D2, 0xC1E6, 0x99D3, 0xC1E7, 0x99D4, 0xC1E9,
+	0x99D5, 0xC1EA, 0x99D6, 0xC1EB, 0x99D7, 0xC1EC, 0x99D8, 0xC1ED,
+	0x99D9, 0xC1EE, 0x99DA, 0xC1EF, 0x99DB, 0xC1F2, 0x99DC, 0xC1F4,
+	0x99DD, 0xC1F5, 0x99DE, 0xC1F6, 0x99DF, 0xC1F7, 0x99E0, 0xC1F8,
+	0x99E1, 0xC1F9, 0x99E2, 0xC1FA, 0x99E3, 0xC1FB, 0x99E4, 0xC1FE,
+	0x99E5, 0xC1FF, 0x99E6, 0xC201, 0x99E7, 0xC202, 0x99E8, 0xC203,
+	0x99E9, 0xC205, 0x99EA, 0xC206, 0x99EB, 0xC207, 0x99EC, 0xC208,
+	0x99ED, 0xC209, 0x99EE, 0xC20A, 0x99EF, 0xC20B, 0x99F0, 0xC20E,
+	0x99F1, 0xC210, 0x99F2, 0xC212, 0x99F3, 0xC213, 0x99F4, 0xC214,
+	0x99F5, 0xC215, 0x99F6, 0xC216, 0x99F7, 0xC217, 0x99F8, 0xC21A,
+	0x99F9, 0xC21B, 0x99FA, 0xC21D, 0x99FB, 0xC21E, 0x99FC, 0xC221,
+	0x99FD, 0xC222, 0x99FE, 0xC223, 0x9A41, 0xC224, 0x9A42, 0xC225,
+	0x9A43, 0xC226, 0x9A44, 0xC227, 0x9A45, 0xC22A, 0x9A46, 0xC22C,
+	0x9A47, 0xC22E, 0x9A48, 0xC230, 0x9A49, 0xC233, 0x9A4A, 0xC235,
+	0x9A4B, 0xC236, 0x9A4C, 0xC237, 0x9A4D, 0xC238, 0x9A4E, 0xC239,
+	0x9A4F, 0xC23A, 0x9A50, 0xC23B, 0x9A51, 0xC23C, 0x9A52, 0xC23D,
+	0x9A53, 0xC23E, 0x9A54, 0xC23F, 0x9A55, 0xC240, 0x9A56, 0xC241,
+	0x9A57, 0xC242, 0x9A58, 0xC243, 0x9A59, 0xC244, 0x9A5A, 0xC245,
+	0x9A61, 0xC246, 0x9A62, 0xC247, 0x9A63, 0xC249, 0x9A64, 0xC24A,
+	0x9A65, 0xC24B, 0x9A66, 0xC24C, 0x9A67, 0xC24D, 0x9A68, 0xC24E,
+	0x9A69, 0xC24F, 0x9A6A, 0xC252, 0x9A6B, 0xC253, 0x9A6C, 0xC255,
+	0x9A6D, 0xC256, 0x9A6E, 0xC257, 0x9A6F, 0xC259, 0x9A70, 0xC25A,
+	0x9A71, 0xC25B, 0x9A72, 0xC25C, 0x9A73, 0xC25D, 0x9A74, 0xC25E,
+	0x9A75, 0xC25F, 0x9A76, 0xC261, 0x9A77, 0xC262, 0x9A78, 0xC263,
+	0x9A79, 0xC264, 0x9A7A, 0xC266, 0x9A81, 0xC267, 0x9A82, 0xC268,
+	0x9A83, 0xC269, 0x9A84, 0xC26A, 0x9A85, 0xC26B, 0x9A86, 0xC26E,
+	0x9A87, 0xC26F, 0x9A88, 0xC271, 0x9A89, 0xC272, 0x9A8A, 0xC273,
+	0x9A8B, 0xC275, 0x9A8C, 0xC276, 0x9A8D, 0xC277, 0x9A8E, 0xC278,
+	0x9A8F, 0xC279, 0x9A90, 0xC27A, 0x9A91, 0xC27B, 0x9A92, 0xC27E,
+	0x9A93, 0xC280, 0x9A94, 0xC282, 0x9A95, 0xC283, 0x9A96, 0xC284,
+	0x9A97, 0xC285, 0x9A98, 0xC286, 0x9A99, 0xC287, 0x9A9A, 0xC28A,
+	0x9A9B, 0xC28B, 0x9A9C, 0xC28C, 0x9A9D, 0xC28D, 0x9A9E, 0xC28E,
+	0x9A9F, 0xC28F, 0x9AA0, 0xC291, 0x9AA1, 0xC292, 0x9AA2, 0xC293,
+	0x9AA3, 0xC294, 0x9AA4, 0xC295, 0x9AA5, 0xC296, 0x9AA6, 0xC297,
+	0x9AA7, 0xC299, 0x9AA8, 0xC29A, 0x9AA9, 0xC29C, 0x9AAA, 0xC29E,
+	0x9AAB, 0xC29F, 0x9AAC, 0xC2A0, 0x9AAD, 0xC2A1, 0x9AAE, 0xC2A2,
+	0x9AAF, 0xC2A3, 0x9AB0, 0xC2A6, 0x9AB1, 0xC2A7, 0x9AB2, 0xC2A9,
+	0x9AB3, 0xC2AA, 0x9AB4, 0xC2AB, 0x9AB5, 0xC2AE, 0x9AB6, 0xC2AF,
+	0x9AB7, 0xC2B0, 0x9AB8, 0xC2B1, 0x9AB9, 0xC2B2, 0x9ABA, 0xC2B3,
+	0x9ABB, 0xC2B6, 0x9ABC, 0xC2B8, 0x9ABD, 0xC2BA, 0x9ABE, 0xC2BB,
+	0x9ABF, 0xC2BC, 0x9AC0, 0xC2BD, 0x9AC1, 0xC2BE, 0x9AC2, 0xC2BF,
+	0x9AC3, 0xC2C0, 0x9AC4, 0xC2C1, 0x9AC5, 0xC2C2, 0x9AC6, 0xC2C3,
+	0x9AC7, 0xC2C4, 0x9AC8, 0xC2C5, 0x9AC9, 0xC2C6, 0x9ACA, 0xC2C7,
+	0x9ACB, 0xC2C8, 0x9ACC, 0xC2C9, 0x9ACD, 0xC2CA, 0x9ACE, 0xC2CB,
+	0x9ACF, 0xC2CC, 0x9AD0, 0xC2CD, 0x9AD1, 0xC2CE, 0x9AD2, 0xC2CF,
+	0x9AD3, 0xC2D0, 0x9AD4, 0xC2D1, 0x9AD5, 0xC2D2, 0x9AD6, 0xC2D3,
+	0x9AD7, 0xC2D4, 0x9AD8, 0xC2D5, 0x9AD9, 0xC2D6, 0x9ADA, 0xC2D7,
+	0x9ADB, 0xC2D8, 0x9ADC, 0xC2D9, 0x9ADD, 0xC2DA, 0x9ADE, 0xC2DB,
+	0x9ADF, 0xC2DE, 0x9AE0, 0xC2DF, 0x9AE1, 0xC2E1, 0x9AE2, 0xC2E2,
+	0x9AE3, 0xC2E5, 0x9AE4, 0xC2E6, 0x9AE5, 0xC2E7, 0x9AE6, 0xC2E8,
+	0x9AE7, 0xC2E9, 0x9AE8, 0xC2EA, 0x9AE9, 0xC2EE, 0x9AEA, 0xC2F0,
+	0x9AEB, 0xC2F2, 0x9AEC, 0xC2F3, 0x9AED, 0xC2F4, 0x9AEE, 0xC2F5,
+	0x9AEF, 0xC2F7, 0x9AF0, 0xC2FA, 0x9AF1, 0xC2FD, 0x9AF2, 0xC2FE,
+	0x9AF3, 0xC2FF, 0x9AF4, 0xC301, 0x9AF5, 0xC302, 0x9AF6, 0xC303,
+	0x9AF7, 0xC304, 0x9AF8, 0xC305, 0x9AF9, 0xC306, 0x9AFA, 0xC307,
+	0x9AFB, 0xC30A, 0x9AFC, 0xC30B, 0x9AFD, 0xC30E, 0x9AFE, 0xC30F,
+	0x9B41, 0xC310, 0x9B42, 0xC311, 0x9B43, 0xC312, 0x9B44, 0xC316,
+	0x9B45, 0xC317, 0x9B46, 0xC319, 0x9B47, 0xC31A, 0x9B48, 0xC31B,
+	0x9B49, 0xC31D, 0x9B4A, 0xC31E, 0x9B4B, 0xC31F, 0x9B4C, 0xC320,
+	0x9B4D, 0xC321, 0x9B4E, 0xC322, 0x9B4F, 0xC323, 0x9B50, 0xC326,
+	0x9B51, 0xC327, 0x9B52, 0xC32A, 0x9B53, 0xC32B, 0x9B54, 0xC32C,
+	0x9B55, 0xC32D, 0x9B56, 0xC32E, 0x9B57, 0xC32F, 0x9B58, 0xC330,
+	0x9B59, 0xC331, 0x9B5A, 0xC332, 0x9B61, 0xC333, 0x9B62, 0xC334,
+	0x9B63, 0xC335, 0x9B64, 0xC336, 0x9B65, 0xC337, 0x9B66, 0xC338,
+	0x9B67, 0xC339, 0x9B68, 0xC33A, 0x9B69, 0xC33B, 0x9B6A, 0xC33C,
+	0x9B6B, 0xC33D, 0x9B6C, 0xC33E, 0x9B6D, 0xC33F, 0x9B6E, 0xC340,
+	0x9B6F, 0xC341, 0x9B70, 0xC342, 0x9B71, 0xC343, 0x9B72, 0xC344,
+	0x9B73, 0xC346, 0x9B74, 0xC347, 0x9B75, 0xC348, 0x9B76, 0xC349,
+	0x9B77, 0xC34A, 0x9B78, 0xC34B, 0x9B79, 0xC34C, 0x9B7A, 0xC34D,
+	0x9B81, 0xC34E, 0x9B82, 0xC34F, 0x9B83, 0xC350, 0x9B84, 0xC351,
+	0x9B85, 0xC352, 0x9B86, 0xC353, 0x9B87, 0xC354, 0x9B88, 0xC355,
+	0x9B89, 0xC356, 0x9B8A, 0xC357, 0x9B8B, 0xC358, 0x9B8C, 0xC359,
+	0x9B8D, 0xC35A, 0x9B8E, 0xC35B, 0x9B8F, 0xC35C, 0x9B90, 0xC35D,
+	0x9B91, 0xC35E, 0x9B92, 0xC35F, 0x9B93, 0xC360, 0x9B94, 0xC361,
+	0x9B95, 0xC362, 0x9B96, 0xC363, 0x9B97, 0xC364, 0x9B98, 0xC365,
+	0x9B99, 0xC366, 0x9B9A, 0xC367, 0x9B9B, 0xC36A, 0x9B9C, 0xC36B,
+	0x9B9D, 0xC36D, 0x9B9E, 0xC36E, 0x9B9F, 0xC36F, 0x9BA0, 0xC371,
+	0x9BA1, 0xC373, 0x9BA2, 0xC374, 0x9BA3, 0xC375, 0x9BA4, 0xC376,
+	0x9BA5, 0xC377, 0x9BA6, 0xC37A, 0x9BA7, 0xC37B, 0x9BA8, 0xC37E,
+	0x9BA9, 0xC37F, 0x9BAA, 0xC380, 0x9BAB, 0xC381, 0x9BAC, 0xC382,
+	0x9BAD, 0xC383, 0x9BAE, 0xC385, 0x9BAF, 0xC386, 0x9BB0, 0xC387,
+	0x9BB1, 0xC389, 0x9BB2, 0xC38A, 0x9BB3, 0xC38B, 0x9BB4, 0xC38D,
+	0x9BB5, 0xC38E, 0x9BB6, 0xC38F, 0x9BB7, 0xC390, 0x9BB8, 0xC391,
+	0x9BB9, 0xC392, 0x9BBA, 0xC393, 0x9BBB, 0xC394, 0x9BBC, 0xC395,
+	0x9BBD, 0xC396, 0x9BBE, 0xC397, 0x9BBF, 0xC398, 0x9BC0, 0xC399,
+	0x9BC1, 0xC39A, 0x9BC2, 0xC39B, 0x9BC3, 0xC39C, 0x9BC4, 0xC39D,
+	0x9BC5, 0xC39E, 0x9BC6, 0xC39F, 0x9BC7, 0xC3A0, 0x9BC8, 0xC3A1,
+	0x9BC9, 0xC3A2, 0x9BCA, 0xC3A3, 0x9BCB, 0xC3A4, 0x9BCC, 0xC3A5,
+	0x9BCD, 0xC3A6, 0x9BCE, 0xC3A7, 0x9BCF, 0xC3A8, 0x9BD0, 0xC3A9,
+	0x9BD1, 0xC3AA, 0x9BD2, 0xC3AB, 0x9BD3, 0xC3AC, 0x9BD4, 0xC3AD,
+	0x9BD5, 0xC3AE, 0x9BD6, 0xC3AF, 0x9BD7, 0xC3B0, 0x9BD8, 0xC3B1,
+	0x9BD9, 0xC3B2, 0x9BDA, 0xC3B3, 0x9BDB, 0xC3B4, 0x9BDC, 0xC3B5,
+	0x9BDD, 0xC3B6, 0x9BDE, 0xC3B7, 0x9BDF, 0xC3B8, 0x9BE0, 0xC3B9,
+	0x9BE1, 0xC3BA, 0x9BE2, 0xC3BB, 0x9BE3, 0xC3BC, 0x9BE4, 0xC3BD,
+	0x9BE5, 0xC3BE, 0x9BE6, 0xC3BF, 0x9BE7, 0xC3C1, 0x9BE8, 0xC3C2,
+	0x9BE9, 0xC3C3, 0x9BEA, 0xC3C4, 0x9BEB, 0xC3C5, 0x9BEC, 0xC3C6,
+	0x9BED, 0xC3C7, 0x9BEE, 0xC3C8, 0x9BEF, 0xC3C9, 0x9BF0, 0xC3CA,
+	0x9BF1, 0xC3CB, 0x9BF2, 0xC3CC, 0x9BF3, 0xC3CD, 0x9BF4, 0xC3CE,
+	0x9BF5, 0xC3CF, 0x9BF6, 0xC3D0, 0x9BF7, 0xC3D1, 0x9BF8, 0xC3D2,
+	0x9BF9, 0xC3D3, 0x9BFA, 0xC3D4, 0x9BFB, 0xC3D5, 0x9BFC, 0xC3D6,
+	0x9BFD, 0xC3D7, 0x9BFE, 0xC3DA, 0x9C41, 0xC3DB, 0x9C42, 0xC3DD,
+	0x9C43, 0xC3DE, 0x9C44, 0xC3E1, 0x9C45, 0xC3E3, 0x9C46, 0xC3E4,
+	0x9C47, 0xC3E5, 0x9C48, 0xC3E6, 0x9C49, 0xC3E7, 0x9C4A, 0xC3EA,
+	0x9C4B, 0xC3EB, 0x9C4C, 0xC3EC, 0x9C4D, 0xC3EE, 0x9C4E, 0xC3EF,
+	0x9C4F, 0xC3F0, 0x9C50, 0xC3F1, 0x9C51, 0xC3F2, 0x9C52, 0xC3F3,
+	0x9C53, 0xC3F6, 0x9C54, 0xC3F7, 0x9C55, 0xC3F9, 0x9C56, 0xC3FA,
+	0x9C57, 0xC3FB, 0x9C58, 0xC3FC, 0x9C59, 0xC3FD, 0x9C5A, 0xC3FE,
+	0x9C61, 0xC3FF, 0x9C62, 0xC400, 0x9C63, 0xC401, 0x9C64, 0xC402,
+	0x9C65, 0xC403, 0x9C66, 0xC404, 0x9C67, 0xC405, 0x9C68, 0xC406,
+	0x9C69, 0xC407, 0x9C6A, 0xC409, 0x9C6B, 0xC40A, 0x9C6C, 0xC40B,
+	0x9C6D, 0xC40C, 0x9C6E, 0xC40D, 0x9C6F, 0xC40E, 0x9C70, 0xC40F,
+	0x9C71, 0xC411, 0x9C72, 0xC412, 0x9C73, 0xC413, 0x9C74, 0xC414,
+	0x9C75, 0xC415, 0x9C76, 0xC416, 0x9C77, 0xC417, 0x9C78, 0xC418,
+	0x9C79, 0xC419, 0x9C7A, 0xC41A, 0x9C81, 0xC41B, 0x9C82, 0xC41C,
+	0x9C83, 0xC41D, 0x9C84, 0xC41E, 0x9C85, 0xC41F, 0x9C86, 0xC420,
+	0x9C87, 0xC421, 0x9C88, 0xC422, 0x9C89, 0xC423, 0x9C8A, 0xC425,
+	0x9C8B, 0xC426, 0x9C8C, 0xC427, 0x9C8D, 0xC428, 0x9C8E, 0xC429,
+	0x9C8F, 0xC42A, 0x9C90, 0xC42B, 0x9C91, 0xC42D, 0x9C92, 0xC42E,
+	0x9C93, 0xC42F, 0x9C94, 0xC431, 0x9C95, 0xC432, 0x9C96, 0xC433,
+	0x9C97, 0xC435, 0x9C98, 0xC436, 0x9C99, 0xC437, 0x9C9A, 0xC438,
+	0x9C9B, 0xC439, 0x9C9C, 0xC43A, 0x9C9D, 0xC43B, 0x9C9E, 0xC43E,
+	0x9C9F, 0xC43F, 0x9CA0, 0xC440, 0x9CA1, 0xC441, 0x9CA2, 0xC442,
+	0x9CA3, 0xC443, 0x9CA4, 0xC444, 0x9CA5, 0xC445, 0x9CA6, 0xC446,
+	0x9CA7, 0xC447, 0x9CA8, 0xC449, 0x9CA9, 0xC44A, 0x9CAA, 0xC44B,
+	0x9CAB, 0xC44C, 0x9CAC, 0xC44D, 0x9CAD, 0xC44E, 0x9CAE, 0xC44F,
+	0x9CAF, 0xC450, 0x9CB0, 0xC451, 0x9CB1, 0xC452, 0x9CB2, 0xC453,
+	0x9CB3, 0xC454, 0x9CB4, 0xC455, 0x9CB5, 0xC456, 0x9CB6, 0xC457,
+	0x9CB7, 0xC458, 0x9CB8, 0xC459, 0x9CB9, 0xC45A, 0x9CBA, 0xC45B,
+	0x9CBB, 0xC45C, 0x9CBC, 0xC45D, 0x9CBD, 0xC45E, 0x9CBE, 0xC45F,
+	0x9CBF, 0xC460, 0x9CC0, 0xC461, 0x9CC1, 0xC462, 0x9CC2, 0xC463,
+	0x9CC3, 0xC466, 0x9CC4, 0xC467, 0x9CC5, 0xC469, 0x9CC6, 0xC46A,
+	0x9CC7, 0xC46B, 0x9CC8, 0xC46D, 0x9CC9, 0xC46E, 0x9CCA, 0xC46F,
+	0x9CCB, 0xC470, 0x9CCC, 0xC471, 0x9CCD, 0xC472, 0x9CCE, 0xC473,
+	0x9CCF, 0xC476, 0x9CD0, 0xC477, 0x9CD1, 0xC478, 0x9CD2, 0xC47A,
+	0x9CD3, 0xC47B, 0x9CD4, 0xC47C, 0x9CD5, 0xC47D, 0x9CD6, 0xC47E,
+	0x9CD7, 0xC47F, 0x9CD8, 0xC481, 0x9CD9, 0xC482, 0x9CDA, 0xC483,
+	0x9CDB, 0xC484, 0x9CDC, 0xC485, 0x9CDD, 0xC486, 0x9CDE, 0xC487,
+	0x9CDF, 0xC488, 0x9CE0, 0xC489, 0x9CE1, 0xC48A, 0x9CE2, 0xC48B,
+	0x9CE3, 0xC48C, 0x9CE4, 0xC48D, 0x9CE5, 0xC48E, 0x9CE6, 0xC48F,
+	0x9CE7, 0xC490, 0x9CE8, 0xC491, 0x9CE9, 0xC492, 0x9CEA, 0xC493,
+	0x9CEB, 0xC495, 0x9CEC, 0xC496, 0x9CED, 0xC497, 0x9CEE, 0xC498,
+	0x9CEF, 0xC499, 0x9CF0, 0xC49A, 0x9CF1, 0xC49B, 0x9CF2, 0xC49D,
+	0x9CF3, 0xC49E, 0x9CF4, 0xC49F, 0x9CF5, 0xC4A0, 0x9CF6, 0xC4A1,
+	0x9CF7, 0xC4A2, 0x9CF8, 0xC4A3, 0x9CF9, 0xC4A4, 0x9CFA, 0xC4A5,
+	0x9CFB, 0xC4A6, 0x9CFC, 0xC4A7, 0x9CFD, 0xC4A8, 0x9CFE, 0xC4A9,
+	0x9D41, 0xC4AA, 0x9D42, 0xC4AB, 0x9D43, 0xC4AC, 0x9D44, 0xC4AD,
+	0x9D45, 0xC4AE, 0x9D46, 0xC4AF, 0x9D47, 0xC4B0, 0x9D48, 0xC4B1,
+	0x9D49, 0xC4B2, 0x9D4A, 0xC4B3, 0x9D4B, 0xC4B4, 0x9D4C, 0xC4B5,
+	0x9D4D, 0xC4B6, 0x9D4E, 0xC4B7, 0x9D4F, 0xC4B9, 0x9D50, 0xC4BA,
+	0x9D51, 0xC4BB, 0x9D52, 0xC4BD, 0x9D53, 0xC4BE, 0x9D54, 0xC4BF,
+	0x9D55, 0xC4C0, 0x9D56, 0xC4C1, 0x9D57, 0xC4C2, 0x9D58, 0xC4C3,
+	0x9D59, 0xC4C4, 0x9D5A, 0xC4C5, 0x9D61, 0xC4C6, 0x9D62, 0xC4C7,
+	0x9D63, 0xC4C8, 0x9D64, 0xC4C9, 0x9D65, 0xC4CA, 0x9D66, 0xC4CB,
+	0x9D67, 0xC4CC, 0x9D68, 0xC4CD, 0x9D69, 0xC4CE, 0x9D6A, 0xC4CF,
+	0x9D6B, 0xC4D0, 0x9D6C, 0xC4D1, 0x9D6D, 0xC4D2, 0x9D6E, 0xC4D3,
+	0x9D6F, 0xC4D4, 0x9D70, 0xC4D5, 0x9D71, 0xC4D6, 0x9D72, 0xC4D7,
+	0x9D73, 0xC4D8, 0x9D74, 0xC4D9, 0x9D75, 0xC4DA, 0x9D76, 0xC4DB,
+	0x9D77, 0xC4DC, 0x9D78, 0xC4DD, 0x9D79, 0xC4DE, 0x9D7A, 0xC4DF,
+	0x9D81, 0xC4E0, 0x9D82, 0xC4E1, 0x9D83, 0xC4E2, 0x9D84, 0xC4E3,
+	0x9D85, 0xC4E4, 0x9D86, 0xC4E5, 0x9D87, 0xC4E6, 0x9D88, 0xC4E7,
+	0x9D89, 0xC4E8, 0x9D8A, 0xC4EA, 0x9D8B, 0xC4EB, 0x9D8C, 0xC4EC,
+	0x9D8D, 0xC4ED, 0x9D8E, 0xC4EE, 0x9D8F, 0xC4EF, 0x9D90, 0xC4F2,
+	0x9D91, 0xC4F3, 0x9D92, 0xC4F5, 0x9D93, 0xC4F6, 0x9D94, 0xC4F7,
+	0x9D95, 0xC4F9, 0x9D96, 0xC4FB, 0x9D97, 0xC4FC, 0x9D98, 0xC4FD,
+	0x9D99, 0xC4FE, 0x9D9A, 0xC502, 0x9D9B, 0xC503, 0x9D9C, 0xC504,
+	0x9D9D, 0xC505, 0x9D9E, 0xC506, 0x9D9F, 0xC507, 0x9DA0, 0xC508,
+	0x9DA1, 0xC509, 0x9DA2, 0xC50A, 0x9DA3, 0xC50B, 0x9DA4, 0xC50D,
+	0x9DA5, 0xC50E, 0x9DA6, 0xC50F, 0x9DA7, 0xC511, 0x9DA8, 0xC512,
+	0x9DA9, 0xC513, 0x9DAA, 0xC515, 0x9DAB, 0xC516, 0x9DAC, 0xC517,
+	0x9DAD, 0xC518, 0x9DAE, 0xC519, 0x9DAF, 0xC51A, 0x9DB0, 0xC51B,
+	0x9DB1, 0xC51D, 0x9DB2, 0xC51E, 0x9DB3, 0xC51F, 0x9DB4, 0xC520,
+	0x9DB5, 0xC521, 0x9DB6, 0xC522, 0x9DB7, 0xC523, 0x9DB8, 0xC524,
+	0x9DB9, 0xC525, 0x9DBA, 0xC526, 0x9DBB, 0xC527, 0x9DBC, 0xC52A,
+	0x9DBD, 0xC52B, 0x9DBE, 0xC52D, 0x9DBF, 0xC52E, 0x9DC0, 0xC52F,
+	0x9DC1, 0xC531, 0x9DC2, 0xC532, 0x9DC3, 0xC533, 0x9DC4, 0xC534,
+	0x9DC5, 0xC535, 0x9DC6, 0xC536, 0x9DC7, 0xC537, 0x9DC8, 0xC53A,
+	0x9DC9, 0xC53C, 0x9DCA, 0xC53E, 0x9DCB, 0xC53F, 0x9DCC, 0xC540,
+	0x9DCD, 0xC541, 0x9DCE, 0xC542, 0x9DCF, 0xC543, 0x9DD0, 0xC546,
+	0x9DD1, 0xC547, 0x9DD2, 0xC54B, 0x9DD3, 0xC54F, 0x9DD4, 0xC550,
+	0x9DD5, 0xC551, 0x9DD6, 0xC552, 0x9DD7, 0xC556, 0x9DD8, 0xC55A,
+	0x9DD9, 0xC55B, 0x9DDA, 0xC55C, 0x9DDB, 0xC55F, 0x9DDC, 0xC562,
+	0x9DDD, 0xC563, 0x9DDE, 0xC565, 0x9DDF, 0xC566, 0x9DE0, 0xC567,
+	0x9DE1, 0xC569, 0x9DE2, 0xC56A, 0x9DE3, 0xC56B, 0x9DE4, 0xC56C,
+	0x9DE5, 0xC56D, 0x9DE6, 0xC56E, 0x9DE7, 0xC56F, 0x9DE8, 0xC572,
+	0x9DE9, 0xC576, 0x9DEA, 0xC577, 0x9DEB, 0xC578, 0x9DEC, 0xC579,
+	0x9DED, 0xC57A, 0x9DEE, 0xC57B, 0x9DEF, 0xC57E, 0x9DF0, 0xC57F,
+	0x9DF1, 0xC581, 0x9DF2, 0xC582, 0x9DF3, 0xC583, 0x9DF4, 0xC585,
+	0x9DF5, 0xC586, 0x9DF6, 0xC588, 0x9DF7, 0xC589, 0x9DF8, 0xC58A,
+	0x9DF9, 0xC58B, 0x9DFA, 0xC58E, 0x9DFB, 0xC590, 0x9DFC, 0xC592,
+	0x9DFD, 0xC593, 0x9DFE, 0xC594, 0x9E41, 0xC596, 0x9E42, 0xC599,
+	0x9E43, 0xC59A, 0x9E44, 0xC59B, 0x9E45, 0xC59D, 0x9E46, 0xC59E,
+	0x9E47, 0xC59F, 0x9E48, 0xC5A1, 0x9E49, 0xC5A2, 0x9E4A, 0xC5A3,
+	0x9E4B, 0xC5A4, 0x9E4C, 0xC5A5, 0x9E4D, 0xC5A6, 0x9E4E, 0xC5A7,
+	0x9E4F, 0xC5A8, 0x9E50, 0xC5AA, 0x9E51, 0xC5AB, 0x9E52, 0xC5AC,
+	0x9E53, 0xC5AD, 0x9E54, 0xC5AE, 0x9E55, 0xC5AF, 0x9E56, 0xC5B0,
+	0x9E57, 0xC5B1, 0x9E58, 0xC5B2, 0x9E59, 0xC5B3, 0x9E5A, 0xC5B6,
+	0x9E61, 0xC5B7, 0x9E62, 0xC5BA, 0x9E63, 0xC5BF, 0x9E64, 0xC5C0,
+	0x9E65, 0xC5C1, 0x9E66, 0xC5C2, 0x9E67, 0xC5C3, 0x9E68, 0xC5CB,
+	0x9E69, 0xC5CD, 0x9E6A, 0xC5CF, 0x9E6B, 0xC5D2, 0x9E6C, 0xC5D3,
+	0x9E6D, 0xC5D5, 0x9E6E, 0xC5D6, 0x9E6F, 0xC5D7, 0x9E70, 0xC5D9,
+	0x9E71, 0xC5DA, 0x9E72, 0xC5DB, 0x9E73, 0xC5DC, 0x9E74, 0xC5DD,
+	0x9E75, 0xC5DE, 0x9E76, 0xC5DF, 0x9E77, 0xC5E2, 0x9E78, 0xC5E4,
+	0x9E79, 0xC5E6, 0x9E7A, 0xC5E7, 0x9E81, 0xC5E8, 0x9E82, 0xC5E9,
+	0x9E83, 0xC5EA, 0x9E84, 0xC5EB, 0x9E85, 0xC5EF, 0x9E86, 0xC5F1,
+	0x9E87, 0xC5F2, 0x9E88, 0xC5F3, 0x9E89, 0xC5F5, 0x9E8A, 0xC5F8,
+	0x9E8B, 0xC5F9, 0x9E8C, 0xC5FA, 0x9E8D, 0xC5FB, 0x9E8E, 0xC602,
+	0x9E8F, 0xC603, 0x9E90, 0xC604, 0x9E91, 0xC609, 0x9E92, 0xC60A,
+	0x9E93, 0xC60B, 0x9E94, 0xC60D, 0x9E95, 0xC60E, 0x9E96, 0xC60F,
+	0x9E97, 0xC611, 0x9E98, 0xC612, 0x9E99, 0xC613, 0x9E9A, 0xC614,
+	0x9E9B, 0xC615, 0x9E9C, 0xC616, 0x9E9D, 0xC617, 0x9E9E, 0xC61A,
+	0x9E9F, 0xC61D, 0x9EA0, 0xC61E, 0x9EA1, 0xC61F, 0x9EA2, 0xC620,
+	0x9EA3, 0xC621, 0x9EA4, 0xC622, 0x9EA5, 0xC623, 0x9EA6, 0xC626,
+	0x9EA7, 0xC627, 0x9EA8, 0xC629, 0x9EA9, 0xC62A, 0x9EAA, 0xC62B,
+	0x9EAB, 0xC62F, 0x9EAC, 0xC631, 0x9EAD, 0xC632, 0x9EAE, 0xC636,
+	0x9EAF, 0xC638, 0x9EB0, 0xC63A, 0x9EB1, 0xC63C, 0x9EB2, 0xC63D,
+	0x9EB3, 0xC63E, 0x9EB4, 0xC63F, 0x9EB5, 0xC642, 0x9EB6, 0xC643,
+	0x9EB7, 0xC645, 0x9EB8, 0xC646, 0x9EB9, 0xC647, 0x9EBA, 0xC649,
+	0x9EBB, 0xC64A, 0x9EBC, 0xC64B, 0x9EBD, 0xC64C, 0x9EBE, 0xC64D,
+	0x9EBF, 0xC64E, 0x9EC0, 0xC64F, 0x9EC1, 0xC652, 0x9EC2, 0xC656,
+	0x9EC3, 0xC657, 0x9EC4, 0xC658, 0x9EC5, 0xC659, 0x9EC6, 0xC65A,
+	0x9EC7, 0xC65B, 0x9EC8, 0xC65E, 0x9EC9, 0xC65F, 0x9ECA, 0xC661,
+	0x9ECB, 0xC662, 0x9ECC, 0xC663, 0x9ECD, 0xC664, 0x9ECE, 0xC665,
+	0x9ECF, 0xC666, 0x9ED0, 0xC667, 0x9ED1, 0xC668, 0x9ED2, 0xC669,
+	0x9ED3, 0xC66A, 0x9ED4, 0xC66B, 0x9ED5, 0xC66D, 0x9ED6, 0xC66E,
+	0x9ED7, 0xC670, 0x9ED8, 0xC672, 0x9ED9, 0xC673, 0x9EDA, 0xC674,
+	0x9EDB, 0xC675, 0x9EDC, 0xC676, 0x9EDD, 0xC677, 0x9EDE, 0xC67A,
+	0x9EDF, 0xC67B, 0x9EE0, 0xC67D, 0x9EE1, 0xC67E, 0x9EE2, 0xC67F,
+	0x9EE3, 0xC681, 0x9EE4, 0xC682, 0x9EE5, 0xC683, 0x9EE6, 0xC684,
+	0x9EE7, 0xC685, 0x9EE8, 0xC686, 0x9EE9, 0xC687, 0x9EEA, 0xC68A,
+	0x9EEB, 0xC68C, 0x9EEC, 0xC68E, 0x9EED, 0xC68F, 0x9EEE, 0xC690,
+	0x9EEF, 0xC691, 0x9EF0, 0xC692, 0x9EF1, 0xC693, 0x9EF2, 0xC696,
+	0x9EF3, 0xC697, 0x9EF4, 0xC699, 0x9EF5, 0xC69A, 0x9EF6, 0xC69B,
+	0x9EF7, 0xC69D, 0x9EF8, 0xC69E, 0x9EF9, 0xC69F, 0x9EFA, 0xC6A0,
+	0x9EFB, 0xC6A1, 0x9EFC, 0xC6A2, 0x9EFD, 0xC6A3, 0x9EFE, 0xC6A6,
+	0x9F41, 0xC6A8, 0x9F42, 0xC6AA, 0x9F43, 0xC6AB, 0x9F44, 0xC6AC,
+	0x9F45, 0xC6AD, 0x9F46, 0xC6AE, 0x9F47, 0xC6AF, 0x9F48, 0xC6B2,
+	0x9F49, 0xC6B3, 0x9F4A, 0xC6B5, 0x9F4B, 0xC6B6, 0x9F4C, 0xC6B7,
+	0x9F4D, 0xC6BB, 0x9F4E, 0xC6BC, 0x9F4F, 0xC6BD, 0x9F50, 0xC6BE,
+	0x9F51, 0xC6BF, 0x9F52, 0xC6C2, 0x9F53, 0xC6C4, 0x9F54, 0xC6C6,
+	0x9F55, 0xC6C7, 0x9F56, 0xC6C8, 0x9F57, 0xC6C9, 0x9F58, 0xC6CA,
+	0x9F59, 0xC6CB, 0x9F5A, 0xC6CE, 0x9F61, 0xC6CF, 0x9F62, 0xC6D1,
+	0x9F63, 0xC6D2, 0x9F64, 0xC6D3, 0x9F65, 0xC6D5, 0x9F66, 0xC6D6,
+	0x9F67, 0xC6D7, 0x9F68, 0xC6D8, 0x9F69, 0xC6D9, 0x9F6A, 0xC6DA,
+	0x9F6B, 0xC6DB, 0x9F6C, 0xC6DE, 0x9F6D, 0xC6DF, 0x9F6E, 0xC6E2,
+	0x9F6F, 0xC6E3, 0x9F70, 0xC6E4, 0x9F71, 0xC6E5, 0x9F72, 0xC6E6,
+	0x9F73, 0xC6E7, 0x9F74, 0xC6EA, 0x9F75, 0xC6EB, 0x9F76, 0xC6ED,
+	0x9F77, 0xC6EE, 0x9F78, 0xC6EF, 0x9F79, 0xC6F1, 0x9F7A, 0xC6F2,
+	0x9F81, 0xC6F3, 0x9F82, 0xC6F4, 0x9F83, 0xC6F5, 0x9F84, 0xC6F6,
+	0x9F85, 0xC6F7, 0x9F86, 0xC6FA, 0x9F87, 0xC6FB, 0x9F88, 0xC6FC,
+	0x9F89, 0xC6FE, 0x9F8A, 0xC6FF, 0x9F8B, 0xC700, 0x9F8C, 0xC701,
+	0x9F8D, 0xC702, 0x9F8E, 0xC703, 0x9F8F, 0xC706, 0x9F90, 0xC707,
+	0x9F91, 0xC709, 0x9F92, 0xC70A, 0x9F93, 0xC70B, 0x9F94, 0xC70D,
+	0x9F95, 0xC70E, 0x9F96, 0xC70F, 0x9F97, 0xC710, 0x9F98, 0xC711,
+	0x9F99, 0xC712, 0x9F9A, 0xC713, 0x9F9B, 0xC716, 0x9F9C, 0xC718,
+	0x9F9D, 0xC71A, 0x9F9E, 0xC71B, 0x9F9F, 0xC71C, 0x9FA0, 0xC71D,
+	0x9FA1, 0xC71E, 0x9FA2, 0xC71F, 0x9FA3, 0xC722, 0x9FA4, 0xC723,
+	0x9FA5, 0xC725, 0x9FA6, 0xC726, 0x9FA7, 0xC727, 0x9FA8, 0xC729,
+	0x9FA9, 0xC72A, 0x9FAA, 0xC72B, 0x9FAB, 0xC72C, 0x9FAC, 0xC72D,
+	0x9FAD, 0xC72E, 0x9FAE, 0xC72F, 0x9FAF, 0xC732, 0x9FB0, 0xC734,
+	0x9FB1, 0xC736, 0x9FB2, 0xC738, 0x9FB3, 0xC739, 0x9FB4, 0xC73A,
+	0x9FB5, 0xC73B, 0x9FB6, 0xC73E, 0x9FB7, 0xC73F, 0x9FB8, 0xC741,
+	0x9FB9, 0xC742, 0x9FBA, 0xC743, 0x9FBB, 0xC745, 0x9FBC, 0xC746,
+	0x9FBD, 0xC747, 0x9FBE, 0xC748, 0x9FBF, 0xC749, 0x9FC0, 0xC74B,
+	0x9FC1, 0xC74E, 0x9FC2, 0xC750, 0x9FC3, 0xC759, 0x9FC4, 0xC75A,
+	0x9FC5, 0xC75B, 0x9FC6, 0xC75D, 0x9FC7, 0xC75E, 0x9FC8, 0xC75F,
+	0x9FC9, 0xC761, 0x9FCA, 0xC762, 0x9FCB, 0xC763, 0x9FCC, 0xC764,
+	0x9FCD, 0xC765, 0x9FCE, 0xC766, 0x9FCF, 0xC767, 0x9FD0, 0xC769,
+	0x9FD1, 0xC76A, 0x9FD2, 0xC76C, 0x9FD3, 0xC76D, 0x9FD4, 0xC76E,
+	0x9FD5, 0xC76F, 0x9FD6, 0xC770, 0x9FD7, 0xC771, 0x9FD8, 0xC772,
+	0x9FD9, 0xC773, 0x9FDA, 0xC776, 0x9FDB, 0xC777, 0x9FDC, 0xC779,
+	0x9FDD, 0xC77A, 0x9FDE, 0xC77B, 0x9FDF, 0xC77F, 0x9FE0, 0xC780,
+	0x9FE1, 0xC781, 0x9FE2, 0xC782, 0x9FE3, 0xC786, 0x9FE4, 0xC78B,
+	0x9FE5, 0xC78C, 0x9FE6, 0xC78D, 0x9FE7, 0xC78F, 0x9FE8, 0xC792,
+	0x9FE9, 0xC793, 0x9FEA, 0xC795, 0x9FEB, 0xC799, 0x9FEC, 0xC79B,
+	0x9FED, 0xC79C, 0x9FEE, 0xC79D, 0x9FEF, 0xC79E, 0x9FF0, 0xC79F,
+	0x9FF1, 0xC7A2, 0x9FF2, 0xC7A7, 0x9FF3, 0xC7A8, 0x9FF4, 0xC7A9,
+	0x9FF5, 0xC7AA, 0x9FF6, 0xC7AB, 0x9FF7, 0xC7AE, 0x9FF8, 0xC7AF,
+	0x9FF9, 0xC7B1, 0x9FFA, 0xC7B2, 0x9FFB, 0xC7B3, 0x9FFC, 0xC7B5,
+	0x9FFD, 0xC7B6, 0x9FFE, 0xC7B7, 0xA041, 0xC7B8, 0xA042, 0xC7B9,
+	0xA043, 0xC7BA, 0xA044, 0xC7BB, 0xA045, 0xC7BE, 0xA046, 0xC7C2,
+	0xA047, 0xC7C3, 0xA048, 0xC7C4, 0xA049, 0xC7C5, 0xA04A, 0xC7C6,
+	0xA04B, 0xC7C7, 0xA04C, 0xC7CA, 0xA04D, 0xC7CB, 0xA04E, 0xC7CD,
+	0xA04F, 0xC7CF, 0xA050, 0xC7D1, 0xA051, 0xC7D2, 0xA052, 0xC7D3,
+	0xA053, 0xC7D4, 0xA054, 0xC7D5, 0xA055, 0xC7D6, 0xA056, 0xC7D7,
+	0xA057, 0xC7D9, 0xA058, 0xC7DA, 0xA059, 0xC7DB, 0xA05A, 0xC7DC,
+	0xA061, 0xC7DE, 0xA062, 0xC7DF, 0xA063, 0xC7E0, 0xA064, 0xC7E1,
+	0xA065, 0xC7E2, 0xA066, 0xC7E3, 0xA067, 0xC7E5, 0xA068, 0xC7E6,
+	0xA069, 0xC7E7, 0xA06A, 0xC7E9, 0xA06B, 0xC7EA, 0xA06C, 0xC7EB,
+	0xA06D, 0xC7ED, 0xA06E, 0xC7EE, 0xA06F, 0xC7EF, 0xA070, 0xC7F0,
+	0xA071, 0xC7F1, 0xA072, 0xC7F2, 0xA073, 0xC7F3, 0xA074, 0xC7F4,
+	0xA075, 0xC7F5, 0xA076, 0xC7F6, 0xA077, 0xC7F7, 0xA078, 0xC7F8,
+	0xA079, 0xC7F9, 0xA07A, 0xC7FA, 0xA081, 0xC7FB, 0xA082, 0xC7FC,
+	0xA083, 0xC7FD, 0xA084, 0xC7FE, 0xA085, 0xC7FF, 0xA086, 0xC802,
+	0xA087, 0xC803, 0xA088, 0xC805, 0xA089, 0xC806, 0xA08A, 0xC807,
+	0xA08B, 0xC809, 0xA08C, 0xC80B, 0xA08D, 0xC80C, 0xA08E, 0xC80D,
+	0xA08F, 0xC80E, 0xA090, 0xC80F, 0xA091, 0xC812, 0xA092, 0xC814,
+	0xA093, 0xC817, 0xA094, 0xC818, 0xA095, 0xC819, 0xA096, 0xC81A,
+	0xA097, 0xC81B, 0xA098, 0xC81E, 0xA099, 0xC81F, 0xA09A, 0xC821,
+	0xA09B, 0xC822, 0xA09C, 0xC823, 0xA09D, 0xC825, 0xA09E, 0xC826,
+	0xA09F, 0xC827, 0xA0A0, 0xC828, 0xA0A1, 0xC829, 0xA0A2, 0xC82A,
+	0xA0A3, 0xC82B, 0xA0A4, 0xC82E, 0xA0A5, 0xC830, 0xA0A6, 0xC832,
+	0xA0A7, 0xC833, 0xA0A8, 0xC834, 0xA0A9, 0xC835, 0xA0AA, 0xC836,
+	0xA0AB, 0xC837, 0xA0AC, 0xC839, 0xA0AD, 0xC83A, 0xA0AE, 0xC83B,
+	0xA0AF, 0xC83D, 0xA0B0, 0xC83E, 0xA0B1, 0xC83F, 0xA0B2, 0xC841,
+	0xA0B3, 0xC842, 0xA0B4, 0xC843, 0xA0B5, 0xC844, 0xA0B6, 0xC845,
+	0xA0B7, 0xC846, 0xA0B8, 0xC847, 0xA0B9, 0xC84A, 0xA0BA, 0xC84B,
+	0xA0BB, 0xC84E, 0xA0BC, 0xC84F, 0xA0BD, 0xC850, 0xA0BE, 0xC851,
+	0xA0BF, 0xC852, 0xA0C0, 0xC853, 0xA0C1, 0xC855, 0xA0C2, 0xC856,
+	0xA0C3, 0xC857, 0xA0C4, 0xC858, 0xA0C5, 0xC859, 0xA0C6, 0xC85A,
+	0xA0C7, 0xC85B, 0xA0C8, 0xC85C, 0xA0C9, 0xC85D, 0xA0CA, 0xC85E,
+	0xA0CB, 0xC85F, 0xA0CC, 0xC860, 0xA0CD, 0xC861, 0xA0CE, 0xC862,
+	0xA0CF, 0xC863, 0xA0D0, 0xC864, 0xA0D1, 0xC865, 0xA0D2, 0xC866,
+	0xA0D3, 0xC867, 0xA0D4, 0xC868, 0xA0D5, 0xC869, 0xA0D6, 0xC86A,
+	0xA0D7, 0xC86B, 0xA0D8, 0xC86C, 0xA0D9, 0xC86D, 0xA0DA, 0xC86E,
+	0xA0DB, 0xC86F, 0xA0DC, 0xC872, 0xA0DD, 0xC873, 0xA0DE, 0xC875,
+	0xA0DF, 0xC876, 0xA0E0, 0xC877, 0xA0E1, 0xC879, 0xA0E2, 0xC87B,
+	0xA0E3, 0xC87C, 0xA0E4, 0xC87D, 0xA0E5, 0xC87E, 0xA0E6, 0xC87F,
+	0xA0E7, 0xC882, 0xA0E8, 0xC884, 0xA0E9, 0xC888, 0xA0EA, 0xC889,
+	0xA0EB, 0xC88A, 0xA0EC, 0xC88E, 0xA0ED, 0xC88F, 0xA0EE, 0xC890,
+	0xA0EF, 0xC891, 0xA0F0, 0xC892, 0xA0F1, 0xC893, 0xA0F2, 0xC895,
+	0xA0F3, 0xC896, 0xA0F4, 0xC897, 0xA0F5, 0xC898, 0xA0F6, 0xC899,
+	0xA0F7, 0xC89A, 0xA0F8, 0xC89B, 0xA0F9, 0xC89C, 0xA0FA, 0xC89E,
+	0xA0FB, 0xC8A0, 0xA0FC, 0xC8A2, 0xA0FD, 0xC8A3, 0xA0FE, 0xC8A4,
+	0xA141, 0xC8A5, 0xA142, 0xC8A6, 0xA143, 0xC8A7, 0xA144, 0xC8A9,
+	0xA145, 0xC8AA, 0xA146, 0xC8AB, 0xA147, 0xC8AC, 0xA148, 0xC8AD,
+	0xA149, 0xC8AE, 0xA14A, 0xC8AF, 0xA14B, 0xC8B0, 0xA14C, 0xC8B1,
+	0xA14D, 0xC8B2, 0xA14E, 0xC8B3, 0xA14F, 0xC8B4, 0xA150, 0xC8B5,
+	0xA151, 0xC8B6, 0xA152, 0xC8B7, 0xA153, 0xC8B8, 0xA154, 0xC8B9,
+	0xA155, 0xC8BA, 0xA156, 0xC8BB, 0xA157, 0xC8BE, 0xA158, 0xC8BF,
+	0xA159, 0xC8C0, 0xA15A, 0xC8C1, 0xA161, 0xC8C2, 0xA162, 0xC8C3,
+	0xA163, 0xC8C5, 0xA164, 0xC8C6, 0xA165, 0xC8C7, 0xA166, 0xC8C9,
+	0xA167, 0xC8CA, 0xA168, 0xC8CB, 0xA169, 0xC8CD, 0xA16A, 0xC8CE,
+	0xA16B, 0xC8CF, 0xA16C, 0xC8D0, 0xA16D, 0xC8D1, 0xA16E, 0xC8D2,
+	0xA16F, 0xC8D3, 0xA170, 0xC8D6, 0xA171, 0xC8D8, 0xA172, 0xC8DA,
+	0xA173, 0xC8DB, 0xA174, 0xC8DC, 0xA175, 0xC8DD, 0xA176, 0xC8DE,
+	0xA177, 0xC8DF, 0xA178, 0xC8E2, 0xA179, 0xC8E3, 0xA17A, 0xC8E5,
+	0xA181, 0xC8E6, 0xA182, 0xC8E7, 0xA183, 0xC8E8, 0xA184, 0xC8E9,
+	0xA185, 0xC8EA, 0xA186, 0xC8EB, 0xA187, 0xC8EC, 0xA188, 0xC8ED,
+	0xA189, 0xC8EE, 0xA18A, 0xC8EF, 0xA18B, 0xC8F0, 0xA18C, 0xC8F1,
+	0xA18D, 0xC8F2, 0xA18E, 0xC8F3, 0xA18F, 0xC8F4, 0xA190, 0xC8F6,
+	0xA191, 0xC8F7, 0xA192, 0xC8F8, 0xA193, 0xC8F9, 0xA194, 0xC8FA,
+	0xA195, 0xC8FB, 0xA196, 0xC8FE, 0xA197, 0xC8FF, 0xA198, 0xC901,
+	0xA199, 0xC902, 0xA19A, 0xC903, 0xA19B, 0xC907, 0xA19C, 0xC908,
+	0xA19D, 0xC909, 0xA19E, 0xC90A, 0xA19F, 0xC90B, 0xA1A0, 0xC90E,
+	0xA1A1, 0x3000, 0xA1A2, 0x3001, 0xA1A3, 0x3002, 0xA1A4, 0x00B7,
+	0xA1A5, 0x2025, 0xA1A6, 0x2026, 0xA1A7, 0x00A8, 0xA1A8, 0x3003,
+	0xA1A9, 0x00AD, 0xA1AA, 0x2015, 0xA1AB, 0x2225, 0xA1AC, 0xFF3C,
+	0xA1AD, 0x223C, 0xA1AE, 0x2018, 0xA1AF, 0x2019, 0xA1B0, 0x201C,
+	0xA1B1, 0x201D, 0xA1B2, 0x3014, 0xA1B3, 0x3015, 0xA1B4, 0x3008,
+	0xA1B5, 0x3009, 0xA1B6, 0x300A, 0xA1B7, 0x300B, 0xA1B8, 0x300C,
+	0xA1B9, 0x300D, 0xA1BA, 0x300E, 0xA1BB, 0x300F, 0xA1BC, 0x3010,
+	0xA1BD, 0x3011, 0xA1BE, 0x00B1, 0xA1BF, 0x00D7, 0xA1C0, 0x00F7,
+	0xA1C1, 0x2260, 0xA1C2, 0x2264, 0xA1C3, 0x2265, 0xA1C4, 0x221E,
+	0xA1C5, 0x2234, 0xA1C6, 0x00B0, 0xA1C7, 0x2032, 0xA1C8, 0x2033,
+	0xA1C9, 0x2103, 0xA1CA, 0x212B, 0xA1CB, 0xFFE0, 0xA1CC, 0xFFE1,
+	0xA1CD, 0xFFE5, 0xA1CE, 0x2642, 0xA1CF, 0x2640, 0xA1D0, 0x2220,
+	0xA1D1, 0x22A5, 0xA1D2, 0x2312, 0xA1D3, 0x2202, 0xA1D4, 0x2207,
+	0xA1D5, 0x2261, 0xA1D6, 0x2252, 0xA1D7, 0x00A7, 0xA1D8, 0x203B,
+	0xA1D9, 0x2606, 0xA1DA, 0x2605, 0xA1DB, 0x25CB, 0xA1DC, 0x25CF,
+	0xA1DD, 0x25CE, 0xA1DE, 0x25C7, 0xA1DF, 0x25C6, 0xA1E0, 0x25A1,
+	0xA1E1, 0x25A0, 0xA1E2, 0x25B3, 0xA1E3, 0x25B2, 0xA1E4, 0x25BD,
+	0xA1E5, 0x25BC, 0xA1E6, 0x2192, 0xA1E7, 0x2190, 0xA1E8, 0x2191,
+	0xA1E9, 0x2193, 0xA1EA, 0x2194, 0xA1EB, 0x3013, 0xA1EC, 0x226A,
+	0xA1ED, 0x226B, 0xA1EE, 0x221A, 0xA1EF, 0x223D, 0xA1F0, 0x221D,
+	0xA1F1, 0x2235, 0xA1F2, 0x222B, 0xA1F3, 0x222C, 0xA1F4, 0x2208,
+	0xA1F5, 0x220B, 0xA1F6, 0x2286, 0xA1F7, 0x2287, 0xA1F8, 0x2282,
+	0xA1F9, 0x2283, 0xA1FA, 0x222A, 0xA1FB, 0x2229, 0xA1FC, 0x2227,
+	0xA1FD, 0x2228, 0xA1FE, 0xFFE2, 0xA241, 0xC910, 0xA242, 0xC912,
+	0xA243, 0xC913, 0xA244, 0xC914, 0xA245, 0xC915, 0xA246, 0xC916,
+	0xA247, 0xC917, 0xA248, 0xC919, 0xA249, 0xC91A, 0xA24A, 0xC91B,
+	0xA24B, 0xC91C, 0xA24C, 0xC91D, 0xA24D, 0xC91E, 0xA24E, 0xC91F,
+	0xA24F, 0xC920, 0xA250, 0xC921, 0xA251, 0xC922, 0xA252, 0xC923,
+	0xA253, 0xC924, 0xA254, 0xC925, 0xA255, 0xC926, 0xA256, 0xC927,
+	0xA257, 0xC928, 0xA258, 0xC929, 0xA259, 0xC92A, 0xA25A, 0xC92B,
+	0xA261, 0xC92D, 0xA262, 0xC92E, 0xA263, 0xC92F, 0xA264, 0xC930,
+	0xA265, 0xC931, 0xA266, 0xC932, 0xA267, 0xC933, 0xA268, 0xC935,
+	0xA269, 0xC936, 0xA26A, 0xC937, 0xA26B, 0xC938, 0xA26C, 0xC939,
+	0xA26D, 0xC93A, 0xA26E, 0xC93B, 0xA26F, 0xC93C, 0xA270, 0xC93D,
+	0xA271, 0xC93E, 0xA272, 0xC93F, 0xA273, 0xC940, 0xA274, 0xC941,
+	0xA275, 0xC942, 0xA276, 0xC943, 0xA277, 0xC944, 0xA278, 0xC945,
+	0xA279, 0xC946, 0xA27A, 0xC947, 0xA281, 0xC948, 0xA282, 0xC949,
+	0xA283, 0xC94A, 0xA284, 0xC94B, 0xA285, 0xC94C, 0xA286, 0xC94D,
+	0xA287, 0xC94E, 0xA288, 0xC94F, 0xA289, 0xC952, 0xA28A, 0xC953,
+	0xA28B, 0xC955, 0xA28C, 0xC956, 0xA28D, 0xC957, 0xA28E, 0xC959,
+	0xA28F, 0xC95A, 0xA290, 0xC95B, 0xA291, 0xC95C, 0xA292, 0xC95D,
+	0xA293, 0xC95E, 0xA294, 0xC95F, 0xA295, 0xC962, 0xA296, 0xC964,
+	0xA297, 0xC965, 0xA298, 0xC966, 0xA299, 0xC967, 0xA29A, 0xC968,
+	0xA29B, 0xC969, 0xA29C, 0xC96A, 0xA29D, 0xC96B, 0xA29E, 0xC96D,
+	0xA29F, 0xC96E, 0xA2A0, 0xC96F, 0xA2A1, 0x21D2, 0xA2A2, 0x21D4,
+	0xA2A3, 0x2200, 0xA2A4, 0x2203, 0xA2A5, 0x00B4, 0xA2A6, 0xFF5E,
+	0xA2A7, 0x02C7, 0xA2A8, 0x02D8, 0xA2A9, 0x02DD, 0xA2AA, 0x02DA,
+	0xA2AB, 0x02D9, 0xA2AC, 0x00B8, 0xA2AD, 0x02DB, 0xA2AE, 0x00A1,
+	0xA2AF, 0x00BF, 0xA2B0, 0x02D0, 0xA2B1, 0x222E, 0xA2B2, 0x2211,
+	0xA2B3, 0x220F, 0xA2B4, 0x00A4, 0xA2B5, 0x2109, 0xA2B6, 0x2030,
+	0xA2B7, 0x25C1, 0xA2B8, 0x25C0, 0xA2B9, 0x25B7, 0xA2BA, 0x25B6,
+	0xA2BB, 0x2664, 0xA2BC, 0x2660, 0xA2BD, 0x2661, 0xA2BE, 0x2665,
+	0xA2BF, 0x2667, 0xA2C0, 0x2663, 0xA2C1, 0x2299, 0xA2C2, 0x25C8,
+	0xA2C3, 0x25A3, 0xA2C4, 0x25D0, 0xA2C5, 0x25D1, 0xA2C6, 0x2592,
+	0xA2C7, 0x25A4, 0xA2C8, 0x25A5, 0xA2C9, 0x25A8, 0xA2CA, 0x25A7,
+	0xA2CB, 0x25A6, 0xA2CC, 0x25A9, 0xA2CD, 0x2668, 0xA2CE, 0x260F,
+	0xA2CF, 0x260E, 0xA2D0, 0x261C, 0xA2D1, 0x261E, 0xA2D2, 0x00B6,
+	0xA2D3, 0x2020, 0xA2D4, 0x2021, 0xA2D5, 0x2195, 0xA2D6, 0x2197,
+	0xA2D7, 0x2199, 0xA2D8, 0x2196, 0xA2D9, 0x2198, 0xA2DA, 0x266D,
+	0xA2DB, 0x2669, 0xA2DC, 0x266A, 0xA2DD, 0x266C, 0xA2DE, 0x327F,
+	0xA2DF, 0x321C, 0xA2E0, 0x2116, 0xA2E1, 0x33C7, 0xA2E2, 0x2122,
+	0xA2E3, 0x33C2, 0xA2E4, 0x33D8, 0xA2E5, 0x2121, 0xA2E6, 0x20AC,
+	0xA2E7, 0x00AE, 0xA341, 0xC971, 0xA342, 0xC972, 0xA343, 0xC973,
+	0xA344, 0xC975, 0xA345, 0xC976, 0xA346, 0xC977, 0xA347, 0xC978,
+	0xA348, 0xC979, 0xA349, 0xC97A, 0xA34A, 0xC97B, 0xA34B, 0xC97D,
+	0xA34C, 0xC97E, 0xA34D, 0xC97F, 0xA34E, 0xC980, 0xA34F, 0xC981,
+	0xA350, 0xC982, 0xA351, 0xC983, 0xA352, 0xC984, 0xA353, 0xC985,
+	0xA354, 0xC986, 0xA355, 0xC987, 0xA356, 0xC98A, 0xA357, 0xC98B,
+	0xA358, 0xC98D, 0xA359, 0xC98E, 0xA35A, 0xC98F, 0xA361, 0xC991,
+	0xA362, 0xC992, 0xA363, 0xC993, 0xA364, 0xC994, 0xA365, 0xC995,
+	0xA366, 0xC996, 0xA367, 0xC997, 0xA368, 0xC99A, 0xA369, 0xC99C,
+	0xA36A, 0xC99E, 0xA36B, 0xC99F, 0xA36C, 0xC9A0, 0xA36D, 0xC9A1,
+	0xA36E, 0xC9A2, 0xA36F, 0xC9A3, 0xA370, 0xC9A4, 0xA371, 0xC9A5,
+	0xA372, 0xC9A6, 0xA373, 0xC9A7, 0xA374, 0xC9A8, 0xA375, 0xC9A9,
+	0xA376, 0xC9AA, 0xA377, 0xC9AB, 0xA378, 0xC9AC, 0xA379, 0xC9AD,
+	0xA37A, 0xC9AE, 0xA381, 0xC9AF, 0xA382, 0xC9B0, 0xA383, 0xC9B1,
+	0xA384, 0xC9B2, 0xA385, 0xC9B3, 0xA386, 0xC9B4, 0xA387, 0xC9B5,
+	0xA388, 0xC9B6, 0xA389, 0xC9B7, 0xA38A, 0xC9B8, 0xA38B, 0xC9B9,
+	0xA38C, 0xC9BA, 0xA38D, 0xC9BB, 0xA38E, 0xC9BC, 0xA38F, 0xC9BD,
+	0xA390, 0xC9BE, 0xA391, 0xC9BF, 0xA392, 0xC9C2, 0xA393, 0xC9C3,
+	0xA394, 0xC9C5, 0xA395, 0xC9C6, 0xA396, 0xC9C9, 0xA397, 0xC9CB,
+	0xA398, 0xC9CC, 0xA399, 0xC9CD, 0xA39A, 0xC9CE, 0xA39B, 0xC9CF,
+	0xA39C, 0xC9D2, 0xA39D, 0xC9D4, 0xA39E, 0xC9D7, 0xA39F, 0xC9D8,
+	0xA3A0, 0xC9DB, 0xA3A1, 0xFF01, 0xA3A2, 0xFF02, 0xA3A3, 0xFF03,
+	0xA3A4, 0xFF04, 0xA3A5, 0xFF05, 0xA3A6, 0xFF06, 0xA3A7, 0xFF07,
+	0xA3A8, 0xFF08, 0xA3A9, 0xFF09, 0xA3AA, 0xFF0A, 0xA3AB, 0xFF0B,
+	0xA3AC, 0xFF0C, 0xA3AD, 0xFF0D, 0xA3AE, 0xFF0E, 0xA3AF, 0xFF0F,
+	0xA3B0, 0xFF10, 0xA3B1, 0xFF11, 0xA3B2, 0xFF12, 0xA3B3, 0xFF13,
+	0xA3B4, 0xFF14, 0xA3B5, 0xFF15, 0xA3B6, 0xFF16, 0xA3B7, 0xFF17,
+	0xA3B8, 0xFF18, 0xA3B9, 0xFF19, 0xA3BA, 0xFF1A, 0xA3BB, 0xFF1B,
+	0xA3BC, 0xFF1C, 0xA3BD, 0xFF1D, 0xA3BE, 0xFF1E, 0xA3BF, 0xFF1F,
+	0xA3C0, 0xFF20, 0xA3C1, 0xFF21, 0xA3C2, 0xFF22, 0xA3C3, 0xFF23,
+	0xA3C4, 0xFF24, 0xA3C5, 0xFF25, 0xA3C6, 0xFF26, 0xA3C7, 0xFF27,
+	0xA3C8, 0xFF28, 0xA3C9, 0xFF29, 0xA3CA, 0xFF2A, 0xA3CB, 0xFF2B,
+	0xA3CC, 0xFF2C, 0xA3CD, 0xFF2D, 0xA3CE, 0xFF2E, 0xA3CF, 0xFF2F,
+	0xA3D0, 0xFF30, 0xA3D1, 0xFF31, 0xA3D2, 0xFF32, 0xA3D3, 0xFF33,
+	0xA3D4, 0xFF34, 0xA3D5, 0xFF35, 0xA3D6, 0xFF36, 0xA3D7, 0xFF37,
+	0xA3D8, 0xFF38, 0xA3D9, 0xFF39, 0xA3DA, 0xFF3A, 0xA3DB, 0xFF3B,
+	0xA3DC, 0xFFE6, 0xA3DD, 0xFF3D, 0xA3DE, 0xFF3E, 0xA3DF, 0xFF3F,
+	0xA3E0, 0xFF40, 0xA3E1, 0xFF41, 0xA3E2, 0xFF42, 0xA3E3, 0xFF43,
+	0xA3E4, 0xFF44, 0xA3E5, 0xFF45, 0xA3E6, 0xFF46, 0xA3E7, 0xFF47,
+	0xA3E8, 0xFF48, 0xA3E9, 0xFF49, 0xA3EA, 0xFF4A, 0xA3EB, 0xFF4B,
+	0xA3EC, 0xFF4C, 0xA3ED, 0xFF4D, 0xA3EE, 0xFF4E, 0xA3EF, 0xFF4F,
+	0xA3F0, 0xFF50, 0xA3F1, 0xFF51, 0xA3F2, 0xFF52, 0xA3F3, 0xFF53,
+	0xA3F4, 0xFF54, 0xA3F5, 0xFF55, 0xA3F6, 0xFF56, 0xA3F7, 0xFF57,
+	0xA3F8, 0xFF58, 0xA3F9, 0xFF59, 0xA3FA, 0xFF5A, 0xA3FB, 0xFF5B,
+	0xA3FC, 0xFF5C, 0xA3FD, 0xFF5D, 0xA3FE, 0xFFE3, 0xA441, 0xC9DE,
+	0xA442, 0xC9DF, 0xA443, 0xC9E1, 0xA444, 0xC9E3, 0xA445, 0xC9E5,
+	0xA446, 0xC9E6, 0xA447, 0xC9E8, 0xA448, 0xC9E9, 0xA449, 0xC9EA,
+	0xA44A, 0xC9EB, 0xA44B, 0xC9EE, 0xA44C, 0xC9F2, 0xA44D, 0xC9F3,
+	0xA44E, 0xC9F4, 0xA44F, 0xC9F5, 0xA450, 0xC9F6, 0xA451, 0xC9F7,
+	0xA452, 0xC9FA, 0xA453, 0xC9FB, 0xA454, 0xC9FD, 0xA455, 0xC9FE,
+	0xA456, 0xC9FF, 0xA457, 0xCA01, 0xA458, 0xCA02, 0xA459, 0xCA03,
+	0xA45A, 0xCA04, 0xA461, 0xCA05, 0xA462, 0xCA06, 0xA463, 0xCA07,
+	0xA464, 0xCA0A, 0xA465, 0xCA0E, 0xA466, 0xCA0F, 0xA467, 0xCA10,
+	0xA468, 0xCA11, 0xA469, 0xCA12, 0xA46A, 0xCA13, 0xA46B, 0xCA15,
+	0xA46C, 0xCA16, 0xA46D, 0xCA17, 0xA46E, 0xCA19, 0xA46F, 0xCA1A,
+	0xA470, 0xCA1B, 0xA471, 0xCA1C, 0xA472, 0xCA1D, 0xA473, 0xCA1E,
+	0xA474, 0xCA1F, 0xA475, 0xCA20, 0xA476, 0xCA21, 0xA477, 0xCA22,
+	0xA478, 0xCA23, 0xA479, 0xCA24, 0xA47A, 0xCA25, 0xA481, 0xCA26,
+	0xA482, 0xCA27, 0xA483, 0xCA28, 0xA484, 0xCA2A, 0xA485, 0xCA2B,
+	0xA486, 0xCA2C, 0xA487, 0xCA2D, 0xA488, 0xCA2E, 0xA489, 0xCA2F,
+	0xA48A, 0xCA30, 0xA48B, 0xCA31, 0xA48C, 0xCA32, 0xA48D, 0xCA33,
+	0xA48E, 0xCA34, 0xA48F, 0xCA35, 0xA490, 0xCA36, 0xA491, 0xCA37,
+	0xA492, 0xCA38, 0xA493, 0xCA39, 0xA494, 0xCA3A, 0xA495, 0xCA3B,
+	0xA496, 0xCA3C, 0xA497, 0xCA3D, 0xA498, 0xCA3E, 0xA499, 0xCA3F,
+	0xA49A, 0xCA40, 0xA49B, 0xCA41, 0xA49C, 0xCA42, 0xA49D, 0xCA43,
+	0xA49E, 0xCA44, 0xA49F, 0xCA45, 0xA4A0, 0xCA46, 0xA4A1, 0x3131,
+	0xA4A2, 0x3132, 0xA4A3, 0x3133, 0xA4A4, 0x3134, 0xA4A5, 0x3135,
+	0xA4A6, 0x3136, 0xA4A7, 0x3137, 0xA4A8, 0x3138, 0xA4A9, 0x3139,
+	0xA4AA, 0x313A, 0xA4AB, 0x313B, 0xA4AC, 0x313C, 0xA4AD, 0x313D,
+	0xA4AE, 0x313E, 0xA4AF, 0x313F, 0xA4B0, 0x3140, 0xA4B1, 0x3141,
+	0xA4B2, 0x3142, 0xA4B3, 0x3143, 0xA4B4, 0x3144, 0xA4B5, 0x3145,
+	0xA4B6, 0x3146, 0xA4B7, 0x3147, 0xA4B8, 0x3148, 0xA4B9, 0x3149,
+	0xA4BA, 0x314A, 0xA4BB, 0x314B, 0xA4BC, 0x314C, 0xA4BD, 0x314D,
+	0xA4BE, 0x314E, 0xA4BF, 0x314F, 0xA4C0, 0x3150, 0xA4C1, 0x3151,
+	0xA4C2, 0x3152, 0xA4C3, 0x3153, 0xA4C4, 0x3154, 0xA4C5, 0x3155,
+	0xA4C6, 0x3156, 0xA4C7, 0x3157, 0xA4C8, 0x3158, 0xA4C9, 0x3159,
+	0xA4CA, 0x315A, 0xA4CB, 0x315B, 0xA4CC, 0x315C, 0xA4CD, 0x315D,
+	0xA4CE, 0x315E, 0xA4CF, 0x315F, 0xA4D0, 0x3160, 0xA4D1, 0x3161,
+	0xA4D2, 0x3162, 0xA4D3, 0x3163, 0xA4D4, 0x3164, 0xA4D5, 0x3165,
+	0xA4D6, 0x3166, 0xA4D7, 0x3167, 0xA4D8, 0x3168, 0xA4D9, 0x3169,
+	0xA4DA, 0x316A, 0xA4DB, 0x316B, 0xA4DC, 0x316C, 0xA4DD, 0x316D,
+	0xA4DE, 0x316E, 0xA4DF, 0x316F, 0xA4E0, 0x3170, 0xA4E1, 0x3171,
+	0xA4E2, 0x3172, 0xA4E3, 0x3173, 0xA4E4, 0x3174, 0xA4E5, 0x3175,
+	0xA4E6, 0x3176, 0xA4E7, 0x3177, 0xA4E8, 0x3178, 0xA4E9, 0x3179,
+	0xA4EA, 0x317A, 0xA4EB, 0x317B, 0xA4EC, 0x317C, 0xA4ED, 0x317D,
+	0xA4EE, 0x317E, 0xA4EF, 0x317F, 0xA4F0, 0x3180, 0xA4F1, 0x3181,
+	0xA4F2, 0x3182, 0xA4F3, 0x3183, 0xA4F4, 0x3184, 0xA4F5, 0x3185,
+	0xA4F6, 0x3186, 0xA4F7, 0x3187, 0xA4F8, 0x3188, 0xA4F9, 0x3189,
+	0xA4FA, 0x318A, 0xA4FB, 0x318B, 0xA4FC, 0x318C, 0xA4FD, 0x318D,
+	0xA4FE, 0x318E, 0xA541, 0xCA47, 0xA542, 0xCA48, 0xA543, 0xCA49,
+	0xA544, 0xCA4A, 0xA545, 0xCA4B, 0xA546, 0xCA4E, 0xA547, 0xCA4F,
+	0xA548, 0xCA51, 0xA549, 0xCA52, 0xA54A, 0xCA53, 0xA54B, 0xCA55,
+	0xA54C, 0xCA56, 0xA54D, 0xCA57, 0xA54E, 0xCA58, 0xA54F, 0xCA59,
+	0xA550, 0xCA5A, 0xA551, 0xCA5B, 0xA552, 0xCA5E, 0xA553, 0xCA62,
+	0xA554, 0xCA63, 0xA555, 0xCA64, 0xA556, 0xCA65, 0xA557, 0xCA66,
+	0xA558, 0xCA67, 0xA559, 0xCA69, 0xA55A, 0xCA6A, 0xA561, 0xCA6B,
+	0xA562, 0xCA6C, 0xA563, 0xCA6D, 0xA564, 0xCA6E, 0xA565, 0xCA6F,
+	0xA566, 0xCA70, 0xA567, 0xCA71, 0xA568, 0xCA72, 0xA569, 0xCA73,
+	0xA56A, 0xCA74, 0xA56B, 0xCA75, 0xA56C, 0xCA76, 0xA56D, 0xCA77,
+	0xA56E, 0xCA78, 0xA56F, 0xCA79, 0xA570, 0xCA7A, 0xA571, 0xCA7B,
+	0xA572, 0xCA7C, 0xA573, 0xCA7E, 0xA574, 0xCA7F, 0xA575, 0xCA80,
+	0xA576, 0xCA81, 0xA577, 0xCA82, 0xA578, 0xCA83, 0xA579, 0xCA85,
+	0xA57A, 0xCA86, 0xA581, 0xCA87, 0xA582, 0xCA88, 0xA583, 0xCA89,
+	0xA584, 0xCA8A, 0xA585, 0xCA8B, 0xA586, 0xCA8C, 0xA587, 0xCA8D,
+	0xA588, 0xCA8E, 0xA589, 0xCA8F, 0xA58A, 0xCA90, 0xA58B, 0xCA91,
+	0xA58C, 0xCA92, 0xA58D, 0xCA93, 0xA58E, 0xCA94, 0xA58F, 0xCA95,
+	0xA590, 0xCA96, 0xA591, 0xCA97, 0xA592, 0xCA99, 0xA593, 0xCA9A,
+	0xA594, 0xCA9B, 0xA595, 0xCA9C, 0xA596, 0xCA9D, 0xA597, 0xCA9E,
+	0xA598, 0xCA9F, 0xA599, 0xCAA0, 0xA59A, 0xCAA1, 0xA59B, 0xCAA2,
+	0xA59C, 0xCAA3, 0xA59D, 0xCAA4, 0xA59E, 0xCAA5, 0xA59F, 0xCAA6,
+	0xA5A0, 0xCAA7, 0xA5A1, 0x2170, 0xA5A2, 0x2171, 0xA5A3, 0x2172,
+	0xA5A4, 0x2173, 0xA5A5, 0x2174, 0xA5A6, 0x2175, 0xA5A7, 0x2176,
+	0xA5A8, 0x2177, 0xA5A9, 0x2178, 0xA5AA, 0x2179, 0xA5B0, 0x2160,
+	0xA5B1, 0x2161, 0xA5B2, 0x2162, 0xA5B3, 0x2163, 0xA5B4, 0x2164,
+	0xA5B5, 0x2165, 0xA5B6, 0x2166, 0xA5B7, 0x2167, 0xA5B8, 0x2168,
+	0xA5B9, 0x2169, 0xA5C1, 0x0391, 0xA5C2, 0x0392, 0xA5C3, 0x0393,
+	0xA5C4, 0x0394, 0xA5C5, 0x0395, 0xA5C6, 0x0396, 0xA5C7, 0x0397,
+	0xA5C8, 0x0398, 0xA5C9, 0x0399, 0xA5CA, 0x039A, 0xA5CB, 0x039B,
+	0xA5CC, 0x039C, 0xA5CD, 0x039D, 0xA5CE, 0x039E, 0xA5CF, 0x039F,
+	0xA5D0, 0x03A0, 0xA5D1, 0x03A1, 0xA5D2, 0x03A3, 0xA5D3, 0x03A4,
+	0xA5D4, 0x03A5, 0xA5D5, 0x03A6, 0xA5D6, 0x03A7, 0xA5D7, 0x03A8,
+	0xA5D8, 0x03A9, 0xA5E1, 0x03B1, 0xA5E2, 0x03B2, 0xA5E3, 0x03B3,
+	0xA5E4, 0x03B4, 0xA5E5, 0x03B5, 0xA5E6, 0x03B6, 0xA5E7, 0x03B7,
+	0xA5E8, 0x03B8, 0xA5E9, 0x03B9, 0xA5EA, 0x03BA, 0xA5EB, 0x03BB,
+	0xA5EC, 0x03BC, 0xA5ED, 0x03BD, 0xA5EE, 0x03BE, 0xA5EF, 0x03BF,
+	0xA5F0, 0x03C0, 0xA5F1, 0x03C1, 0xA5F2, 0x03C3, 0xA5F3, 0x03C4,
+	0xA5F4, 0x03C5, 0xA5F5, 0x03C6, 0xA5F6, 0x03C7, 0xA5F7, 0x03C8,
+	0xA5F8, 0x03C9, 0xA641, 0xCAA8, 0xA642, 0xCAA9, 0xA643, 0xCAAA,
+	0xA644, 0xCAAB, 0xA645, 0xCAAC, 0xA646, 0xCAAD, 0xA647, 0xCAAE,
+	0xA648, 0xCAAF, 0xA649, 0xCAB0, 0xA64A, 0xCAB1, 0xA64B, 0xCAB2,
+	0xA64C, 0xCAB3, 0xA64D, 0xCAB4, 0xA64E, 0xCAB5, 0xA64F, 0xCAB6,
+	0xA650, 0xCAB7, 0xA651, 0xCAB8, 0xA652, 0xCAB9, 0xA653, 0xCABA,
+	0xA654, 0xCABB, 0xA655, 0xCABE, 0xA656, 0xCABF, 0xA657, 0xCAC1,
+	0xA658, 0xCAC2, 0xA659, 0xCAC3, 0xA65A, 0xCAC5, 0xA661, 0xCAC6,
+	0xA662, 0xCAC7, 0xA663, 0xCAC8, 0xA664, 0xCAC9, 0xA665, 0xCACA,
+	0xA666, 0xCACB, 0xA667, 0xCACE, 0xA668, 0xCAD0, 0xA669, 0xCAD2,
+	0xA66A, 0xCAD4, 0xA66B, 0xCAD5, 0xA66C, 0xCAD6, 0xA66D, 0xCAD7,
+	0xA66E, 0xCADA, 0xA66F, 0xCADB, 0xA670, 0xCADC, 0xA671, 0xCADD,
+	0xA672, 0xCADE, 0xA673, 0xCADF, 0xA674, 0xCAE1, 0xA675, 0xCAE2,
+	0xA676, 0xCAE3, 0xA677, 0xCAE4, 0xA678, 0xCAE5, 0xA679, 0xCAE6,
+	0xA67A, 0xCAE7, 0xA681, 0xCAE8, 0xA682, 0xCAE9, 0xA683, 0xCAEA,
+	0xA684, 0xCAEB, 0xA685, 0xCAED, 0xA686, 0xCAEE, 0xA687, 0xCAEF,
+	0xA688, 0xCAF0, 0xA689, 0xCAF1, 0xA68A, 0xCAF2, 0xA68B, 0xCAF3,
+	0xA68C, 0xCAF5, 0xA68D, 0xCAF6, 0xA68E, 0xCAF7, 0xA68F, 0xCAF8,
+	0xA690, 0xCAF9, 0xA691, 0xCAFA, 0xA692, 0xCAFB, 0xA693, 0xCAFC,
+	0xA694, 0xCAFD, 0xA695, 0xCAFE, 0xA696, 0xCAFF, 0xA697, 0xCB00,
+	0xA698, 0xCB01, 0xA699, 0xCB02, 0xA69A, 0xCB03, 0xA69B, 0xCB04,
+	0xA69C, 0xCB05, 0xA69D, 0xCB06, 0xA69E, 0xCB07, 0xA69F, 0xCB09,
+	0xA6A0, 0xCB0A, 0xA6A1, 0x2500, 0xA6A2, 0x2502, 0xA6A3, 0x250C,
+	0xA6A4, 0x2510, 0xA6A5, 0x2518, 0xA6A6, 0x2514, 0xA6A7, 0x251C,
+	0xA6A8, 0x252C, 0xA6A9, 0x2524, 0xA6AA, 0x2534, 0xA6AB, 0x253C,
+	0xA6AC, 0x2501, 0xA6AD, 0x2503, 0xA6AE, 0x250F, 0xA6AF, 0x2513,
+	0xA6B0, 0x251B, 0xA6B1, 0x2517, 0xA6B2, 0x2523, 0xA6B3, 0x2533,
+	0xA6B4, 0x252B, 0xA6B5, 0x253B, 0xA6B6, 0x254B, 0xA6B7, 0x2520,
+	0xA6B8, 0x252F, 0xA6B9, 0x2528, 0xA6BA, 0x2537, 0xA6BB, 0x253F,
+	0xA6BC, 0x251D, 0xA6BD, 0x2530, 0xA6BE, 0x2525, 0xA6BF, 0x2538,
+	0xA6C0, 0x2542, 0xA6C1, 0x2512, 0xA6C2, 0x2511, 0xA6C3, 0x251A,
+	0xA6C4, 0x2519, 0xA6C5, 0x2516, 0xA6C6, 0x2515, 0xA6C7, 0x250E,
+	0xA6C8, 0x250D, 0xA6C9, 0x251E, 0xA6CA, 0x251F, 0xA6CB, 0x2521,
+	0xA6CC, 0x2522, 0xA6CD, 0x2526, 0xA6CE, 0x2527, 0xA6CF, 0x2529,
+	0xA6D0, 0x252A, 0xA6D1, 0x252D, 0xA6D2, 0x252E, 0xA6D3, 0x2531,
+	0xA6D4, 0x2532, 0xA6D5, 0x2535, 0xA6D6, 0x2536, 0xA6D7, 0x2539,
+	0xA6D8, 0x253A, 0xA6D9, 0x253D, 0xA6DA, 0x253E, 0xA6DB, 0x2540,
+	0xA6DC, 0x2541, 0xA6DD, 0x2543, 0xA6DE, 0x2544, 0xA6DF, 0x2545,
+	0xA6E0, 0x2546, 0xA6E1, 0x2547, 0xA6E2, 0x2548, 0xA6E3, 0x2549,
+	0xA6E4, 0x254A, 0xA741, 0xCB0B, 0xA742, 0xCB0C, 0xA743, 0xCB0D,
+	0xA744, 0xCB0E, 0xA745, 0xCB0F, 0xA746, 0xCB11, 0xA747, 0xCB12,
+	0xA748, 0xCB13, 0xA749, 0xCB15, 0xA74A, 0xCB16, 0xA74B, 0xCB17,
+	0xA74C, 0xCB19, 0xA74D, 0xCB1A, 0xA74E, 0xCB1B, 0xA74F, 0xCB1C,
+	0xA750, 0xCB1D, 0xA751, 0xCB1E, 0xA752, 0xCB1F, 0xA753, 0xCB22,
+	0xA754, 0xCB23, 0xA755, 0xCB24, 0xA756, 0xCB25, 0xA757, 0xCB26,
+	0xA758, 0xCB27, 0xA759, 0xCB28, 0xA75A, 0xCB29, 0xA761, 0xCB2A,
+	0xA762, 0xCB2B, 0xA763, 0xCB2C, 0xA764, 0xCB2D, 0xA765, 0xCB2E,
+	0xA766, 0xCB2F, 0xA767, 0xCB30, 0xA768, 0xCB31, 0xA769, 0xCB32,
+	0xA76A, 0xCB33, 0xA76B, 0xCB34, 0xA76C, 0xCB35, 0xA76D, 0xCB36,
+	0xA76E, 0xCB37, 0xA76F, 0xCB38, 0xA770, 0xCB39, 0xA771, 0xCB3A,
+	0xA772, 0xCB3B, 0xA773, 0xCB3C, 0xA774, 0xCB3D, 0xA775, 0xCB3E,
+	0xA776, 0xCB3F, 0xA777, 0xCB40, 0xA778, 0xCB42, 0xA779, 0xCB43,
+	0xA77A, 0xCB44, 0xA781, 0xCB45, 0xA782, 0xCB46, 0xA783, 0xCB47,
+	0xA784, 0xCB4A, 0xA785, 0xCB4B, 0xA786, 0xCB4D, 0xA787, 0xCB4E,
+	0xA788, 0xCB4F, 0xA789, 0xCB51, 0xA78A, 0xCB52, 0xA78B, 0xCB53,
+	0xA78C, 0xCB54, 0xA78D, 0xCB55, 0xA78E, 0xCB56, 0xA78F, 0xCB57,
+	0xA790, 0xCB5A, 0xA791, 0xCB5B, 0xA792, 0xCB5C, 0xA793, 0xCB5E,
+	0xA794, 0xCB5F, 0xA795, 0xCB60, 0xA796, 0xCB61, 0xA797, 0xCB62,
+	0xA798, 0xCB63, 0xA799, 0xCB65, 0xA79A, 0xCB66, 0xA79B, 0xCB67,
+	0xA79C, 0xCB68, 0xA79D, 0xCB69, 0xA79E, 0xCB6A, 0xA79F, 0xCB6B,
+	0xA7A0, 0xCB6C, 0xA7A1, 0x3395, 0xA7A2, 0x3396, 0xA7A3, 0x3397,
+	0xA7A4, 0x2113, 0xA7A5, 0x3398, 0xA7A6, 0x33C4, 0xA7A7, 0x33A3,
+	0xA7A8, 0x33A4, 0xA7A9, 0x33A5, 0xA7AA, 0x33A6, 0xA7AB, 0x3399,
+	0xA7AC, 0x339A, 0xA7AD, 0x339B, 0xA7AE, 0x339C, 0xA7AF, 0x339D,
+	0xA7B0, 0x339E, 0xA7B1, 0x339F, 0xA7B2, 0x33A0, 0xA7B3, 0x33A1,
+	0xA7B4, 0x33A2, 0xA7B5, 0x33CA, 0xA7B6, 0x338D, 0xA7B7, 0x338E,
+	0xA7B8, 0x338F, 0xA7B9, 0x33CF, 0xA7BA, 0x3388, 0xA7BB, 0x3389,
+	0xA7BC, 0x33C8, 0xA7BD, 0x33A7, 0xA7BE, 0x33A8, 0xA7BF, 0x33B0,
+	0xA7C0, 0x33B1, 0xA7C1, 0x33B2, 0xA7C2, 0x33B3, 0xA7C3, 0x33B4,
+	0xA7C4, 0x33B5, 0xA7C5, 0x33B6, 0xA7C6, 0x33B7, 0xA7C7, 0x33B8,
+	0xA7C8, 0x33B9, 0xA7C9, 0x3380, 0xA7CA, 0x3381, 0xA7CB, 0x3382,
+	0xA7CC, 0x3383, 0xA7CD, 0x3384, 0xA7CE, 0x33BA, 0xA7CF, 0x33BB,
+	0xA7D0, 0x33BC, 0xA7D1, 0x33BD, 0xA7D2, 0x33BE, 0xA7D3, 0x33BF,
+	0xA7D4, 0x3390, 0xA7D5, 0x3391, 0xA7D6, 0x3392, 0xA7D7, 0x3393,
+	0xA7D8, 0x3394, 0xA7D9, 0x2126, 0xA7DA, 0x33C0, 0xA7DB, 0x33C1,
+	0xA7DC, 0x338A, 0xA7DD, 0x338B, 0xA7DE, 0x338C, 0xA7DF, 0x33D6,
+	0xA7E0, 0x33C5, 0xA7E1, 0x33AD, 0xA7E2, 0x33AE, 0xA7E3, 0x33AF,
+	0xA7E4, 0x33DB, 0xA7E5, 0x33A9, 0xA7E6, 0x33AA, 0xA7E7, 0x33AB,
+	0xA7E8, 0x33AC, 0xA7E9, 0x33DD, 0xA7EA, 0x33D0, 0xA7EB, 0x33D3,
+	0xA7EC, 0x33C3, 0xA7ED, 0x33C9, 0xA7EE, 0x33DC, 0xA7EF, 0x33C6,
+	0xA841, 0xCB6D, 0xA842, 0xCB6E, 0xA843, 0xCB6F, 0xA844, 0xCB70,
+	0xA845, 0xCB71, 0xA846, 0xCB72, 0xA847, 0xCB73, 0xA848, 0xCB74,
+	0xA849, 0xCB75, 0xA84A, 0xCB76, 0xA84B, 0xCB77, 0xA84C, 0xCB7A,
+	0xA84D, 0xCB7B, 0xA84E, 0xCB7C, 0xA84F, 0xCB7D, 0xA850, 0xCB7E,
+	0xA851, 0xCB7F, 0xA852, 0xCB80, 0xA853, 0xCB81, 0xA854, 0xCB82,
+	0xA855, 0xCB83, 0xA856, 0xCB84, 0xA857, 0xCB85, 0xA858, 0xCB86,
+	0xA859, 0xCB87, 0xA85A, 0xCB88, 0xA861, 0xCB89, 0xA862, 0xCB8A,
+	0xA863, 0xCB8B, 0xA864, 0xCB8C, 0xA865, 0xCB8D, 0xA866, 0xCB8E,
+	0xA867, 0xCB8F, 0xA868, 0xCB90, 0xA869, 0xCB91, 0xA86A, 0xCB92,
+	0xA86B, 0xCB93, 0xA86C, 0xCB94, 0xA86D, 0xCB95, 0xA86E, 0xCB96,
+	0xA86F, 0xCB97, 0xA870, 0xCB98, 0xA871, 0xCB99, 0xA872, 0xCB9A,
+	0xA873, 0xCB9B, 0xA874, 0xCB9D, 0xA875, 0xCB9E, 0xA876, 0xCB9F,
+	0xA877, 0xCBA0, 0xA878, 0xCBA1, 0xA879, 0xCBA2, 0xA87A, 0xCBA3,
+	0xA881, 0xCBA4, 0xA882, 0xCBA5, 0xA883, 0xCBA6, 0xA884, 0xCBA7,
+	0xA885, 0xCBA8, 0xA886, 0xCBA9, 0xA887, 0xCBAA, 0xA888, 0xCBAB,
+	0xA889, 0xCBAC, 0xA88A, 0xCBAD, 0xA88B, 0xCBAE, 0xA88C, 0xCBAF,
+	0xA88D, 0xCBB0, 0xA88E, 0xCBB1, 0xA88F, 0xCBB2, 0xA890, 0xCBB3,
+	0xA891, 0xCBB4, 0xA892, 0xCBB5, 0xA893, 0xCBB6, 0xA894, 0xCBB7,
+	0xA895, 0xCBB9, 0xA896, 0xCBBA, 0xA897, 0xCBBB, 0xA898, 0xCBBC,
+	0xA899, 0xCBBD, 0xA89A, 0xCBBE, 0xA89B, 0xCBBF, 0xA89C, 0xCBC0,
+	0xA89D, 0xCBC1, 0xA89E, 0xCBC2, 0xA89F, 0xCBC3, 0xA8A0, 0xCBC4,
+	0xA8A1, 0x00C6, 0xA8A2, 0x00D0, 0xA8A3, 0x00AA, 0xA8A4, 0x0126,
+	0xA8A6, 0x0132, 0xA8A8, 0x013F, 0xA8A9, 0x0141, 0xA8AA, 0x00D8,
+	0xA8AB, 0x0152, 0xA8AC, 0x00BA, 0xA8AD, 0x00DE, 0xA8AE, 0x0166,
+	0xA8AF, 0x014A, 0xA8B1, 0x3260, 0xA8B2, 0x3261, 0xA8B3, 0x3262,
+	0xA8B4, 0x3263, 0xA8B5, 0x3264, 0xA8B6, 0x3265, 0xA8B7, 0x3266,
+	0xA8B8, 0x3267, 0xA8B9, 0x3268, 0xA8BA, 0x3269, 0xA8BB, 0x326A,
+	0xA8BC, 0x326B, 0xA8BD, 0x326C, 0xA8BE, 0x326D, 0xA8BF, 0x326E,
+	0xA8C0, 0x326F, 0xA8C1, 0x3270, 0xA8C2, 0x3271, 0xA8C3, 0x3272,
+	0xA8C4, 0x3273, 0xA8C5, 0x3274, 0xA8C6, 0x3275, 0xA8C7, 0x3276,
+	0xA8C8, 0x3277, 0xA8C9, 0x3278, 0xA8CA, 0x3279, 0xA8CB, 0x327A,
+	0xA8CC, 0x327B, 0xA8CD, 0x24D0, 0xA8CE, 0x24D1, 0xA8CF, 0x24D2,
+	0xA8D0, 0x24D3, 0xA8D1, 0x24D4, 0xA8D2, 0x24D5, 0xA8D3, 0x24D6,
+	0xA8D4, 0x24D7, 0xA8D5, 0x24D8, 0xA8D6, 0x24D9, 0xA8D7, 0x24DA,
+	0xA8D8, 0x24DB, 0xA8D9, 0x24DC, 0xA8DA, 0x24DD, 0xA8DB, 0x24DE,
+	0xA8DC, 0x24DF, 0xA8DD, 0x24E0, 0xA8DE, 0x24E1, 0xA8DF, 0x24E2,
+	0xA8E0, 0x24E3, 0xA8E1, 0x24E4, 0xA8E2, 0x24E5, 0xA8E3, 0x24E6,
+	0xA8E4, 0x24E7, 0xA8E5, 0x24E8, 0xA8E6, 0x24E9, 0xA8E7, 0x2460,
+	0xA8E8, 0x2461, 0xA8E9, 0x2462, 0xA8EA, 0x2463, 0xA8EB, 0x2464,
+	0xA8EC, 0x2465, 0xA8ED, 0x2466, 0xA8EE, 0x2467, 0xA8EF, 0x2468,
+	0xA8F0, 0x2469, 0xA8F1, 0x246A, 0xA8F2, 0x246B, 0xA8F3, 0x246C,
+	0xA8F4, 0x246D, 0xA8F5, 0x246E, 0xA8F6, 0x00BD, 0xA8F7, 0x2153,
+	0xA8F8, 0x2154, 0xA8F9, 0x00BC, 0xA8FA, 0x00BE, 0xA8FB, 0x215B,
+	0xA8FC, 0x215C, 0xA8FD, 0x215D, 0xA8FE, 0x215E, 0xA941, 0xCBC5,
+	0xA942, 0xCBC6, 0xA943, 0xCBC7, 0xA944, 0xCBC8, 0xA945, 0xCBC9,
+	0xA946, 0xCBCA, 0xA947, 0xCBCB, 0xA948, 0xCBCC, 0xA949, 0xCBCD,
+	0xA94A, 0xCBCE, 0xA94B, 0xCBCF, 0xA94C, 0xCBD0, 0xA94D, 0xCBD1,
+	0xA94E, 0xCBD2, 0xA94F, 0xCBD3, 0xA950, 0xCBD5, 0xA951, 0xCBD6,
+	0xA952, 0xCBD7, 0xA953, 0xCBD8, 0xA954, 0xCBD9, 0xA955, 0xCBDA,
+	0xA956, 0xCBDB, 0xA957, 0xCBDC, 0xA958, 0xCBDD, 0xA959, 0xCBDE,
+	0xA95A, 0xCBDF, 0xA961, 0xCBE0, 0xA962, 0xCBE1, 0xA963, 0xCBE2,
+	0xA964, 0xCBE3, 0xA965, 0xCBE5, 0xA966, 0xCBE6, 0xA967, 0xCBE8,
+	0xA968, 0xCBEA, 0xA969, 0xCBEB, 0xA96A, 0xCBEC, 0xA96B, 0xCBED,
+	0xA96C, 0xCBEE, 0xA96D, 0xCBEF, 0xA96E, 0xCBF0, 0xA96F, 0xCBF1,
+	0xA970, 0xCBF2, 0xA971, 0xCBF3, 0xA972, 0xCBF4, 0xA973, 0xCBF5,
+	0xA974, 0xCBF6, 0xA975, 0xCBF7, 0xA976, 0xCBF8, 0xA977, 0xCBF9,
+	0xA978, 0xCBFA, 0xA979, 0xCBFB, 0xA97A, 0xCBFC, 0xA981, 0xCBFD,
+	0xA982, 0xCBFE, 0xA983, 0xCBFF, 0xA984, 0xCC00, 0xA985, 0xCC01,
+	0xA986, 0xCC02, 0xA987, 0xCC03, 0xA988, 0xCC04, 0xA989, 0xCC05,
+	0xA98A, 0xCC06, 0xA98B, 0xCC07, 0xA98C, 0xCC08, 0xA98D, 0xCC09,
+	0xA98E, 0xCC0A, 0xA98F, 0xCC0B, 0xA990, 0xCC0E, 0xA991, 0xCC0F,
+	0xA992, 0xCC11, 0xA993, 0xCC12, 0xA994, 0xCC13, 0xA995, 0xCC15,
+	0xA996, 0xCC16, 0xA997, 0xCC17, 0xA998, 0xCC18, 0xA999, 0xCC19,
+	0xA99A, 0xCC1A, 0xA99B, 0xCC1B, 0xA99C, 0xCC1E, 0xA99D, 0xCC1F,
+	0xA99E, 0xCC20, 0xA99F, 0xCC23, 0xA9A0, 0xCC24, 0xA9A1, 0x00E6,
+	0xA9A2, 0x0111, 0xA9A3, 0x00F0, 0xA9A4, 0x0127, 0xA9A5, 0x0131,
+	0xA9A6, 0x0133, 0xA9A7, 0x0138, 0xA9A8, 0x0140, 0xA9A9, 0x0142,
+	0xA9AA, 0x00F8, 0xA9AB, 0x0153, 0xA9AC, 0x00DF, 0xA9AD, 0x00FE,
+	0xA9AE, 0x0167, 0xA9AF, 0x014B, 0xA9B0, 0x0149, 0xA9B1, 0x3200,
+	0xA9B2, 0x3201, 0xA9B3, 0x3202, 0xA9B4, 0x3203, 0xA9B5, 0x3204,
+	0xA9B6, 0x3205, 0xA9B7, 0x3206, 0xA9B8, 0x3207, 0xA9B9, 0x3208,
+	0xA9BA, 0x3209, 0xA9BB, 0x320A, 0xA9BC, 0x320B, 0xA9BD, 0x320C,
+	0xA9BE, 0x320D, 0xA9BF, 0x320E, 0xA9C0, 0x320F, 0xA9C1, 0x3210,
+	0xA9C2, 0x3211, 0xA9C3, 0x3212, 0xA9C4, 0x3213, 0xA9C5, 0x3214,
+	0xA9C6, 0x3215, 0xA9C7, 0x3216, 0xA9C8, 0x3217, 0xA9C9, 0x3218,
+	0xA9CA, 0x3219, 0xA9CB, 0x321A, 0xA9CC, 0x321B, 0xA9CD, 0x249C,
+	0xA9CE, 0x249D, 0xA9CF, 0x249E, 0xA9D0, 0x249F, 0xA9D1, 0x24A0,
+	0xA9D2, 0x24A1, 0xA9D3, 0x24A2, 0xA9D4, 0x24A3, 0xA9D5, 0x24A4,
+	0xA9D6, 0x24A5, 0xA9D7, 0x24A6, 0xA9D8, 0x24A7, 0xA9D9, 0x24A8,
+	0xA9DA, 0x24A9, 0xA9DB, 0x24AA, 0xA9DC, 0x24AB, 0xA9DD, 0x24AC,
+	0xA9DE, 0x24AD, 0xA9DF, 0x24AE, 0xA9E0, 0x24AF, 0xA9E1, 0x24B0,
+	0xA9E2, 0x24B1, 0xA9E3, 0x24B2, 0xA9E4, 0x24B3, 0xA9E5, 0x24B4,
+	0xA9E6, 0x24B5, 0xA9E7, 0x2474, 0xA9E8, 0x2475, 0xA9E9, 0x2476,
+	0xA9EA, 0x2477, 0xA9EB, 0x2478, 0xA9EC, 0x2479, 0xA9ED, 0x247A,
+	0xA9EE, 0x247B, 0xA9EF, 0x247C, 0xA9F0, 0x247D, 0xA9F1, 0x247E,
+	0xA9F2, 0x247F, 0xA9F3, 0x2480, 0xA9F4, 0x2481, 0xA9F5, 0x2482,
+	0xA9F6, 0x00B9, 0xA9F7, 0x00B2, 0xA9F8, 0x00B3, 0xA9F9, 0x2074,
+	0xA9FA, 0x207F, 0xA9FB, 0x2081, 0xA9FC, 0x2082, 0xA9FD, 0x2083,
+	0xA9FE, 0x2084, 0xAA41, 0xCC25, 0xAA42, 0xCC26, 0xAA43, 0xCC2A,
+	0xAA44, 0xCC2B, 0xAA45, 0xCC2D, 0xAA46, 0xCC2F, 0xAA47, 0xCC31,
+	0xAA48, 0xCC32, 0xAA49, 0xCC33, 0xAA4A, 0xCC34, 0xAA4B, 0xCC35,
+	0xAA4C, 0xCC36, 0xAA4D, 0xCC37, 0xAA4E, 0xCC3A, 0xAA4F, 0xCC3F,
+	0xAA50, 0xCC40, 0xAA51, 0xCC41, 0xAA52, 0xCC42, 0xAA53, 0xCC43,
+	0xAA54, 0xCC46, 0xAA55, 0xCC47, 0xAA56, 0xCC49, 0xAA57, 0xCC4A,
+	0xAA58, 0xCC4B, 0xAA59, 0xCC4D, 0xAA5A, 0xCC4E, 0xAA61, 0xCC4F,
+	0xAA62, 0xCC50, 0xAA63, 0xCC51, 0xAA64, 0xCC52, 0xAA65, 0xCC53,
+	0xAA66, 0xCC56, 0xAA67, 0xCC5A, 0xAA68, 0xCC5B, 0xAA69, 0xCC5C,
+	0xAA6A, 0xCC5D, 0xAA6B, 0xCC5E, 0xAA6C, 0xCC5F, 0xAA6D, 0xCC61,
+	0xAA6E, 0xCC62, 0xAA6F, 0xCC63, 0xAA70, 0xCC65, 0xAA71, 0xCC67,
+	0xAA72, 0xCC69, 0xAA73, 0xCC6A, 0xAA74, 0xCC6B, 0xAA75, 0xCC6C,
+	0xAA76, 0xCC6D, 0xAA77, 0xCC6E, 0xAA78, 0xCC6F, 0xAA79, 0xCC71,
+	0xAA7A, 0xCC72, 0xAA81, 0xCC73, 0xAA82, 0xCC74, 0xAA83, 0xCC76,
+	0xAA84, 0xCC77, 0xAA85, 0xCC78, 0xAA86, 0xCC79, 0xAA87, 0xCC7A,
+	0xAA88, 0xCC7B, 0xAA89, 0xCC7C, 0xAA8A, 0xCC7D, 0xAA8B, 0xCC7E,
+	0xAA8C, 0xCC7F, 0xAA8D, 0xCC80, 0xAA8E, 0xCC81, 0xAA8F, 0xCC82,
+	0xAA90, 0xCC83, 0xAA91, 0xCC84, 0xAA92, 0xCC85, 0xAA93, 0xCC86,
+	0xAA94, 0xCC87, 0xAA95, 0xCC88, 0xAA96, 0xCC89, 0xAA97, 0xCC8A,
+	0xAA98, 0xCC8B, 0xAA99, 0xCC8C, 0xAA9A, 0xCC8D, 0xAA9B, 0xCC8E,
+	0xAA9C, 0xCC8F, 0xAA9D, 0xCC90, 0xAA9E, 0xCC91, 0xAA9F, 0xCC92,
+	0xAAA0, 0xCC93, 0xAAA1, 0x3041, 0xAAA2, 0x3042, 0xAAA3, 0x3043,
+	0xAAA4, 0x3044, 0xAAA5, 0x3045, 0xAAA6, 0x3046, 0xAAA7, 0x3047,
+	0xAAA8, 0x3048, 0xAAA9, 0x3049, 0xAAAA, 0x304A, 0xAAAB, 0x304B,
+	0xAAAC, 0x304C, 0xAAAD, 0x304D, 0xAAAE, 0x304E, 0xAAAF, 0x304F,
+	0xAAB0, 0x3050, 0xAAB1, 0x3051, 0xAAB2, 0x3052, 0xAAB3, 0x3053,
+	0xAAB4, 0x3054, 0xAAB5, 0x3055, 0xAAB6, 0x3056, 0xAAB7, 0x3057,
+	0xAAB8, 0x3058, 0xAAB9, 0x3059, 0xAABA, 0x305A, 0xAABB, 0x305B,
+	0xAABC, 0x305C, 0xAABD, 0x305D, 0xAABE, 0x305E, 0xAABF, 0x305F,
+	0xAAC0, 0x3060, 0xAAC1, 0x3061, 0xAAC2, 0x3062, 0xAAC3, 0x3063,
+	0xAAC4, 0x3064, 0xAAC5, 0x3065, 0xAAC6, 0x3066, 0xAAC7, 0x3067,
+	0xAAC8, 0x3068, 0xAAC9, 0x3069, 0xAACA, 0x306A, 0xAACB, 0x306B,
+	0xAACC, 0x306C, 0xAACD, 0x306D, 0xAACE, 0x306E, 0xAACF, 0x306F,
+	0xAAD0, 0x3070, 0xAAD1, 0x3071, 0xAAD2, 0x3072, 0xAAD3, 0x3073,
+	0xAAD4, 0x3074, 0xAAD5, 0x3075, 0xAAD6, 0x3076, 0xAAD7, 0x3077,
+	0xAAD8, 0x3078, 0xAAD9, 0x3079, 0xAADA, 0x307A, 0xAADB, 0x307B,
+	0xAADC, 0x307C, 0xAADD, 0x307D, 0xAADE, 0x307E, 0xAADF, 0x307F,
+	0xAAE0, 0x3080, 0xAAE1, 0x3081, 0xAAE2, 0x3082, 0xAAE3, 0x3083,
+	0xAAE4, 0x3084, 0xAAE5, 0x3085, 0xAAE6, 0x3086, 0xAAE7, 0x3087,
+	0xAAE8, 0x3088, 0xAAE9, 0x3089, 0xAAEA, 0x308A, 0xAAEB, 0x308B,
+	0xAAEC, 0x308C, 0xAAED, 0x308D, 0xAAEE, 0x308E, 0xAAEF, 0x308F,
+	0xAAF0, 0x3090, 0xAAF1, 0x3091, 0xAAF2, 0x3092, 0xAAF3, 0x3093,
+	0xAB41, 0xCC94, 0xAB42, 0xCC95, 0xAB43, 0xCC96, 0xAB44, 0xCC97,
+	0xAB45, 0xCC9A, 0xAB46, 0xCC9B, 0xAB47, 0xCC9D, 0xAB48, 0xCC9E,
+	0xAB49, 0xCC9F, 0xAB4A, 0xCCA1, 0xAB4B, 0xCCA2, 0xAB4C, 0xCCA3,
+	0xAB4D, 0xCCA4, 0xAB4E, 0xCCA5, 0xAB4F, 0xCCA6, 0xAB50, 0xCCA7,
+	0xAB51, 0xCCAA, 0xAB52, 0xCCAE, 0xAB53, 0xCCAF, 0xAB54, 0xCCB0,
+	0xAB55, 0xCCB1, 0xAB56, 0xCCB2, 0xAB57, 0xCCB3, 0xAB58, 0xCCB6,
+	0xAB59, 0xCCB7, 0xAB5A, 0xCCB9, 0xAB61, 0xCCBA, 0xAB62, 0xCCBB,
+	0xAB63, 0xCCBD, 0xAB64, 0xCCBE, 0xAB65, 0xCCBF, 0xAB66, 0xCCC0,
+	0xAB67, 0xCCC1, 0xAB68, 0xCCC2, 0xAB69, 0xCCC3, 0xAB6A, 0xCCC6,
+	0xAB6B, 0xCCC8, 0xAB6C, 0xCCCA, 0xAB6D, 0xCCCB, 0xAB6E, 0xCCCC,
+	0xAB6F, 0xCCCD, 0xAB70, 0xCCCE, 0xAB71, 0xCCCF, 0xAB72, 0xCCD1,
+	0xAB73, 0xCCD2, 0xAB74, 0xCCD3, 0xAB75, 0xCCD5, 0xAB76, 0xCCD6,
+	0xAB77, 0xCCD7, 0xAB78, 0xCCD8, 0xAB79, 0xCCD9, 0xAB7A, 0xCCDA,
+	0xAB81, 0xCCDB, 0xAB82, 0xCCDC, 0xAB83, 0xCCDD, 0xAB84, 0xCCDE,
+	0xAB85, 0xCCDF, 0xAB86, 0xCCE0, 0xAB87, 0xCCE1, 0xAB88, 0xCCE2,
+	0xAB89, 0xCCE3, 0xAB8A, 0xCCE5, 0xAB8B, 0xCCE6, 0xAB8C, 0xCCE7,
+	0xAB8D, 0xCCE8, 0xAB8E, 0xCCE9, 0xAB8F, 0xCCEA, 0xAB90, 0xCCEB,
+	0xAB91, 0xCCED, 0xAB92, 0xCCEE, 0xAB93, 0xCCEF, 0xAB94, 0xCCF1,
+	0xAB95, 0xCCF2, 0xAB96, 0xCCF3, 0xAB97, 0xCCF4, 0xAB98, 0xCCF5,
+	0xAB99, 0xCCF6, 0xAB9A, 0xCCF7, 0xAB9B, 0xCCF8, 0xAB9C, 0xCCF9,
+	0xAB9D, 0xCCFA, 0xAB9E, 0xCCFB, 0xAB9F, 0xCCFC, 0xABA0, 0xCCFD,
+	0xABA1, 0x30A1, 0xABA2, 0x30A2, 0xABA3, 0x30A3, 0xABA4, 0x30A4,
+	0xABA5, 0x30A5, 0xABA6, 0x30A6, 0xABA7, 0x30A7, 0xABA8, 0x30A8,
+	0xABA9, 0x30A9, 0xABAA, 0x30AA, 0xABAB, 0x30AB, 0xABAC, 0x30AC,
+	0xABAD, 0x30AD, 0xABAE, 0x30AE, 0xABAF, 0x30AF, 0xABB0, 0x30B0,
+	0xABB1, 0x30B1, 0xABB2, 0x30B2, 0xABB3, 0x30B3, 0xABB4, 0x30B4,
+	0xABB5, 0x30B5, 0xABB6, 0x30B6, 0xABB7, 0x30B7, 0xABB8, 0x30B8,
+	0xABB9, 0x30B9, 0xABBA, 0x30BA, 0xABBB, 0x30BB, 0xABBC, 0x30BC,
+	0xABBD, 0x30BD, 0xABBE, 0x30BE, 0xABBF, 0x30BF, 0xABC0, 0x30C0,
+	0xABC1, 0x30C1, 0xABC2, 0x30C2, 0xABC3, 0x30C3, 0xABC4, 0x30C4,
+	0xABC5, 0x30C5, 0xABC6, 0x30C6, 0xABC7, 0x30C7, 0xABC8, 0x30C8,
+	0xABC9, 0x30C9, 0xABCA, 0x30CA, 0xABCB, 0x30CB, 0xABCC, 0x30CC,
+	0xABCD, 0x30CD, 0xABCE, 0x30CE, 0xABCF, 0x30CF, 0xABD0, 0x30D0,
+	0xABD1, 0x30D1, 0xABD2, 0x30D2, 0xABD3, 0x30D3, 0xABD4, 0x30D4,
+	0xABD5, 0x30D5, 0xABD6, 0x30D6, 0xABD7, 0x30D7, 0xABD8, 0x30D8,
+	0xABD9, 0x30D9, 0xABDA, 0x30DA, 0xABDB, 0x30DB, 0xABDC, 0x30DC,
+	0xABDD, 0x30DD, 0xABDE, 0x30DE, 0xABDF, 0x30DF, 0xABE0, 0x30E0,
+	0xABE1, 0x30E1, 0xABE2, 0x30E2, 0xABE3, 0x30E3, 0xABE4, 0x30E4,
+	0xABE5, 0x30E5, 0xABE6, 0x30E6, 0xABE7, 0x30E7, 0xABE8, 0x30E8,
+	0xABE9, 0x30E9, 0xABEA, 0x30EA, 0xABEB, 0x30EB, 0xABEC, 0x30EC,
+	0xABED, 0x30ED, 0xABEE, 0x30EE, 0xABEF, 0x30EF, 0xABF0, 0x30F0,
+	0xABF1, 0x30F1, 0xABF2, 0x30F2, 0xABF3, 0x30F3, 0xABF4, 0x30F4,
+	0xABF5, 0x30F5, 0xABF6, 0x30F6, 0xAC41, 0xCCFE, 0xAC42, 0xCCFF,
+	0xAC43, 0xCD00, 0xAC44, 0xCD02, 0xAC45, 0xCD03, 0xAC46, 0xCD04,
+	0xAC47, 0xCD05, 0xAC48, 0xCD06, 0xAC49, 0xCD07, 0xAC4A, 0xCD0A,
+	0xAC4B, 0xCD0B, 0xAC4C, 0xCD0D, 0xAC4D, 0xCD0E, 0xAC4E, 0xCD0F,
+	0xAC4F, 0xCD11, 0xAC50, 0xCD12, 0xAC51, 0xCD13, 0xAC52, 0xCD14,
+	0xAC53, 0xCD15, 0xAC54, 0xCD16, 0xAC55, 0xCD17, 0xAC56, 0xCD1A,
+	0xAC57, 0xCD1C, 0xAC58, 0xCD1E, 0xAC59, 0xCD1F, 0xAC5A, 0xCD20,
+	0xAC61, 0xCD21, 0xAC62, 0xCD22, 0xAC63, 0xCD23, 0xAC64, 0xCD25,
+	0xAC65, 0xCD26, 0xAC66, 0xCD27, 0xAC67, 0xCD29, 0xAC68, 0xCD2A,
+	0xAC69, 0xCD2B, 0xAC6A, 0xCD2D, 0xAC6B, 0xCD2E, 0xAC6C, 0xCD2F,
+	0xAC6D, 0xCD30, 0xAC6E, 0xCD31, 0xAC6F, 0xCD32, 0xAC70, 0xCD33,
+	0xAC71, 0xCD34, 0xAC72, 0xCD35, 0xAC73, 0xCD36, 0xAC74, 0xCD37,
+	0xAC75, 0xCD38, 0xAC76, 0xCD3A, 0xAC77, 0xCD3B, 0xAC78, 0xCD3C,
+	0xAC79, 0xCD3D, 0xAC7A, 0xCD3E, 0xAC81, 0xCD3F, 0xAC82, 0xCD40,
+	0xAC83, 0xCD41, 0xAC84, 0xCD42, 0xAC85, 0xCD43, 0xAC86, 0xCD44,
+	0xAC87, 0xCD45, 0xAC88, 0xCD46, 0xAC89, 0xCD47, 0xAC8A, 0xCD48,
+	0xAC8B, 0xCD49, 0xAC8C, 0xCD4A, 0xAC8D, 0xCD4B, 0xAC8E, 0xCD4C,
+	0xAC8F, 0xCD4D, 0xAC90, 0xCD4E, 0xAC91, 0xCD4F, 0xAC92, 0xCD50,
+	0xAC93, 0xCD51, 0xAC94, 0xCD52, 0xAC95, 0xCD53, 0xAC96, 0xCD54,
+	0xAC97, 0xCD55, 0xAC98, 0xCD56, 0xAC99, 0xCD57, 0xAC9A, 0xCD58,
+	0xAC9B, 0xCD59, 0xAC9C, 0xCD5A, 0xAC9D, 0xCD5B, 0xAC9E, 0xCD5D,
+	0xAC9F, 0xCD5E, 0xACA0, 0xCD5F, 0xACA1, 0x0410, 0xACA2, 0x0411,
+	0xACA3, 0x0412, 0xACA4, 0x0413, 0xACA5, 0x0414, 0xACA6, 0x0415,
+	0xACA7, 0x0401, 0xACA8, 0x0416, 0xACA9, 0x0417, 0xACAA, 0x0418,
+	0xACAB, 0x0419, 0xACAC, 0x041A, 0xACAD, 0x041B, 0xACAE, 0x041C,
+	0xACAF, 0x041D, 0xACB0, 0x041E, 0xACB1, 0x041F, 0xACB2, 0x0420,
+	0xACB3, 0x0421, 0xACB4, 0x0422, 0xACB5, 0x0423, 0xACB6, 0x0424,
+	0xACB7, 0x0425, 0xACB8, 0x0426, 0xACB9, 0x0427, 0xACBA, 0x0428,
+	0xACBB, 0x0429, 0xACBC, 0x042A, 0xACBD, 0x042B, 0xACBE, 0x042C,
+	0xACBF, 0x042D, 0xACC0, 0x042E, 0xACC1, 0x042F, 0xACD1, 0x0430,
+	0xACD2, 0x0431, 0xACD3, 0x0432, 0xACD4, 0x0433, 0xACD5, 0x0434,
+	0xACD6, 0x0435, 0xACD7, 0x0451, 0xACD8, 0x0436, 0xACD9, 0x0437,
+	0xACDA, 0x0438, 0xACDB, 0x0439, 0xACDC, 0x043A, 0xACDD, 0x043B,
+	0xACDE, 0x043C, 0xACDF, 0x043D, 0xACE0, 0x043E, 0xACE1, 0x043F,
+	0xACE2, 0x0440, 0xACE3, 0x0441, 0xACE4, 0x0442, 0xACE5, 0x0443,
+	0xACE6, 0x0444, 0xACE7, 0x0445, 0xACE8, 0x0446, 0xACE9, 0x0447,
+	0xACEA, 0x0448, 0xACEB, 0x0449, 0xACEC, 0x044A, 0xACED, 0x044B,
+	0xACEE, 0x044C, 0xACEF, 0x044D, 0xACF0, 0x044E, 0xACF1, 0x044F,
+	0xAD41, 0xCD61, 0xAD42, 0xCD62, 0xAD43, 0xCD63, 0xAD44, 0xCD65,
+	0xAD45, 0xCD66, 0xAD46, 0xCD67, 0xAD47, 0xCD68, 0xAD48, 0xCD69,
+	0xAD49, 0xCD6A, 0xAD4A, 0xCD6B, 0xAD4B, 0xCD6E, 0xAD4C, 0xCD70,
+	0xAD4D, 0xCD72, 0xAD4E, 0xCD73, 0xAD4F, 0xCD74, 0xAD50, 0xCD75,
+	0xAD51, 0xCD76, 0xAD52, 0xCD77, 0xAD53, 0xCD79, 0xAD54, 0xCD7A,
+	0xAD55, 0xCD7B, 0xAD56, 0xCD7C, 0xAD57, 0xCD7D, 0xAD58, 0xCD7E,
+	0xAD59, 0xCD7F, 0xAD5A, 0xCD80, 0xAD61, 0xCD81, 0xAD62, 0xCD82,
+	0xAD63, 0xCD83, 0xAD64, 0xCD84, 0xAD65, 0xCD85, 0xAD66, 0xCD86,
+	0xAD67, 0xCD87, 0xAD68, 0xCD89, 0xAD69, 0xCD8A, 0xAD6A, 0xCD8B,
+	0xAD6B, 0xCD8C, 0xAD6C, 0xCD8D, 0xAD6D, 0xCD8E, 0xAD6E, 0xCD8F,
+	0xAD6F, 0xCD90, 0xAD70, 0xCD91, 0xAD71, 0xCD92, 0xAD72, 0xCD93,
+	0xAD73, 0xCD96, 0xAD74, 0xCD97, 0xAD75, 0xCD99, 0xAD76, 0xCD9A,
+	0xAD77, 0xCD9B, 0xAD78, 0xCD9D, 0xAD79, 0xCD9E, 0xAD7A, 0xCD9F,
+	0xAD81, 0xCDA0, 0xAD82, 0xCDA1, 0xAD83, 0xCDA2, 0xAD84, 0xCDA3,
+	0xAD85, 0xCDA6, 0xAD86, 0xCDA8, 0xAD87, 0xCDAA, 0xAD88, 0xCDAB,
+	0xAD89, 0xCDAC, 0xAD8A, 0xCDAD, 0xAD8B, 0xCDAE, 0xAD8C, 0xCDAF,
+	0xAD8D, 0xCDB1, 0xAD8E, 0xCDB2, 0xAD8F, 0xCDB3, 0xAD90, 0xCDB4,
+	0xAD91, 0xCDB5, 0xAD92, 0xCDB6, 0xAD93, 0xCDB7, 0xAD94, 0xCDB8,
+	0xAD95, 0xCDB9, 0xAD96, 0xCDBA, 0xAD97, 0xCDBB, 0xAD98, 0xCDBC,
+	0xAD99, 0xCDBD, 0xAD9A, 0xCDBE, 0xAD9B, 0xCDBF, 0xAD9C, 0xCDC0,
+	0xAD9D, 0xCDC1, 0xAD9E, 0xCDC2, 0xAD9F, 0xCDC3, 0xADA0, 0xCDC5,
+	0xAE41, 0xCDC6, 0xAE42, 0xCDC7, 0xAE43, 0xCDC8, 0xAE44, 0xCDC9,
+	0xAE45, 0xCDCA, 0xAE46, 0xCDCB, 0xAE47, 0xCDCD, 0xAE48, 0xCDCE,
+	0xAE49, 0xCDCF, 0xAE4A, 0xCDD1, 0xAE4B, 0xCDD2, 0xAE4C, 0xCDD3,
+	0xAE4D, 0xCDD4, 0xAE4E, 0xCDD5, 0xAE4F, 0xCDD6, 0xAE50, 0xCDD7,
+	0xAE51, 0xCDD8, 0xAE52, 0xCDD9, 0xAE53, 0xCDDA, 0xAE54, 0xCDDB,
+	0xAE55, 0xCDDC, 0xAE56, 0xCDDD, 0xAE57, 0xCDDE, 0xAE58, 0xCDDF,
+	0xAE59, 0xCDE0, 0xAE5A, 0xCDE1, 0xAE61, 0xCDE2, 0xAE62, 0xCDE3,
+	0xAE63, 0xCDE4, 0xAE64, 0xCDE5, 0xAE65, 0xCDE6, 0xAE66, 0xCDE7,
+	0xAE67, 0xCDE9, 0xAE68, 0xCDEA, 0xAE69, 0xCDEB, 0xAE6A, 0xCDED,
+	0xAE6B, 0xCDEE, 0xAE6C, 0xCDEF, 0xAE6D, 0xCDF1, 0xAE6E, 0xCDF2,
+	0xAE6F, 0xCDF3, 0xAE70, 0xCDF4, 0xAE71, 0xCDF5, 0xAE72, 0xCDF6,
+	0xAE73, 0xCDF7, 0xAE74, 0xCDFA, 0xAE75, 0xCDFC, 0xAE76, 0xCDFE,
+	0xAE77, 0xCDFF, 0xAE78, 0xCE00, 0xAE79, 0xCE01, 0xAE7A, 0xCE02,
+	0xAE81, 0xCE03, 0xAE82, 0xCE05, 0xAE83, 0xCE06, 0xAE84, 0xCE07,
+	0xAE85, 0xCE09, 0xAE86, 0xCE0A, 0xAE87, 0xCE0B, 0xAE88, 0xCE0D,
+	0xAE89, 0xCE0E, 0xAE8A, 0xCE0F, 0xAE8B, 0xCE10, 0xAE8C, 0xCE11,
+	0xAE8D, 0xCE12, 0xAE8E, 0xCE13, 0xAE8F, 0xCE15, 0xAE90, 0xCE16,
+	0xAE91, 0xCE17, 0xAE92, 0xCE18, 0xAE93, 0xCE1A, 0xAE94, 0xCE1B,
+	0xAE95, 0xCE1C, 0xAE96, 0xCE1D, 0xAE97, 0xCE1E, 0xAE98, 0xCE1F,
+	0xAE99, 0xCE22, 0xAE9A, 0xCE23, 0xAE9B, 0xCE25, 0xAE9C, 0xCE26,
+	0xAE9D, 0xCE27, 0xAE9E, 0xCE29, 0xAE9F, 0xCE2A, 0xAEA0, 0xCE2B,
+	0xAF41, 0xCE2C, 0xAF42, 0xCE2D, 0xAF43, 0xCE2E, 0xAF44, 0xCE2F,
+	0xAF45, 0xCE32, 0xAF46, 0xCE34, 0xAF47, 0xCE36, 0xAF48, 0xCE37,
+	0xAF49, 0xCE38, 0xAF4A, 0xCE39, 0xAF4B, 0xCE3A, 0xAF4C, 0xCE3B,
+	0xAF4D, 0xCE3C, 0xAF4E, 0xCE3D, 0xAF4F, 0xCE3E, 0xAF50, 0xCE3F,
+	0xAF51, 0xCE40, 0xAF52, 0xCE41, 0xAF53, 0xCE42, 0xAF54, 0xCE43,
+	0xAF55, 0xCE44, 0xAF56, 0xCE45, 0xAF57, 0xCE46, 0xAF58, 0xCE47,
+	0xAF59, 0xCE48, 0xAF5A, 0xCE49, 0xAF61, 0xCE4A, 0xAF62, 0xCE4B,
+	0xAF63, 0xCE4C, 0xAF64, 0xCE4D, 0xAF65, 0xCE4E, 0xAF66, 0xCE4F,
+	0xAF67, 0xCE50, 0xAF68, 0xCE51, 0xAF69, 0xCE52, 0xAF6A, 0xCE53,
+	0xAF6B, 0xCE54, 0xAF6C, 0xCE55, 0xAF6D, 0xCE56, 0xAF6E, 0xCE57,
+	0xAF6F, 0xCE5A, 0xAF70, 0xCE5B, 0xAF71, 0xCE5D, 0xAF72, 0xCE5E,
+	0xAF73, 0xCE62, 0xAF74, 0xCE63, 0xAF75, 0xCE64, 0xAF76, 0xCE65,
+	0xAF77, 0xCE66, 0xAF78, 0xCE67, 0xAF79, 0xCE6A, 0xAF7A, 0xCE6C,
+	0xAF81, 0xCE6E, 0xAF82, 0xCE6F, 0xAF83, 0xCE70, 0xAF84, 0xCE71,
+	0xAF85, 0xCE72, 0xAF86, 0xCE73, 0xAF87, 0xCE76, 0xAF88, 0xCE77,
+	0xAF89, 0xCE79, 0xAF8A, 0xCE7A, 0xAF8B, 0xCE7B, 0xAF8C, 0xCE7D,
+	0xAF8D, 0xCE7E, 0xAF8E, 0xCE7F, 0xAF8F, 0xCE80, 0xAF90, 0xCE81,
+	0xAF91, 0xCE82, 0xAF92, 0xCE83, 0xAF93, 0xCE86, 0xAF94, 0xCE88,
+	0xAF95, 0xCE8A, 0xAF96, 0xCE8B, 0xAF97, 0xCE8C, 0xAF98, 0xCE8D,
+	0xAF99, 0xCE8E, 0xAF9A, 0xCE8F, 0xAF9B, 0xCE92, 0xAF9C, 0xCE93,
+	0xAF9D, 0xCE95, 0xAF9E, 0xCE96, 0xAF9F, 0xCE97, 0xAFA0, 0xCE99,
+	0xB041, 0xCE9A, 0xB042, 0xCE9B, 0xB043, 0xCE9C, 0xB044, 0xCE9D,
+	0xB045, 0xCE9E, 0xB046, 0xCE9F, 0xB047, 0xCEA2, 0xB048, 0xCEA6,
+	0xB049, 0xCEA7, 0xB04A, 0xCEA8, 0xB04B, 0xCEA9, 0xB04C, 0xCEAA,
+	0xB04D, 0xCEAB, 0xB04E, 0xCEAE, 0xB04F, 0xCEAF, 0xB050, 0xCEB0,
+	0xB051, 0xCEB1, 0xB052, 0xCEB2, 0xB053, 0xCEB3, 0xB054, 0xCEB4,
+	0xB055, 0xCEB5, 0xB056, 0xCEB6, 0xB057, 0xCEB7, 0xB058, 0xCEB8,
+	0xB059, 0xCEB9, 0xB05A, 0xCEBA, 0xB061, 0xCEBB, 0xB062, 0xCEBC,
+	0xB063, 0xCEBD, 0xB064, 0xCEBE, 0xB065, 0xCEBF, 0xB066, 0xCEC0,
+	0xB067, 0xCEC2, 0xB068, 0xCEC3, 0xB069, 0xCEC4, 0xB06A, 0xCEC5,
+	0xB06B, 0xCEC6, 0xB06C, 0xCEC7, 0xB06D, 0xCEC8, 0xB06E, 0xCEC9,
+	0xB06F, 0xCECA, 0xB070, 0xCECB, 0xB071, 0xCECC, 0xB072, 0xCECD,
+	0xB073, 0xCECE, 0xB074, 0xCECF, 0xB075, 0xCED0, 0xB076, 0xCED1,
+	0xB077, 0xCED2, 0xB078, 0xCED3, 0xB079, 0xCED4, 0xB07A, 0xCED5,
+	0xB081, 0xCED6, 0xB082, 0xCED7, 0xB083, 0xCED8, 0xB084, 0xCED9,
+	0xB085, 0xCEDA, 0xB086, 0xCEDB, 0xB087, 0xCEDC, 0xB088, 0xCEDD,
+	0xB089, 0xCEDE, 0xB08A, 0xCEDF, 0xB08B, 0xCEE0, 0xB08C, 0xCEE1,
+	0xB08D, 0xCEE2, 0xB08E, 0xCEE3, 0xB08F, 0xCEE6, 0xB090, 0xCEE7,
+	0xB091, 0xCEE9, 0xB092, 0xCEEA, 0xB093, 0xCEED, 0xB094, 0xCEEE,
+	0xB095, 0xCEEF, 0xB096, 0xCEF0, 0xB097, 0xCEF1, 0xB098, 0xCEF2,
+	0xB099, 0xCEF3, 0xB09A, 0xCEF6, 0xB09B, 0xCEFA, 0xB09C, 0xCEFB,
+	0xB09D, 0xCEFC, 0xB09E, 0xCEFD, 0xB09F, 0xCEFE, 0xB0A0, 0xCEFF,
+	0xB0A1, 0xAC00, 0xB0A2, 0xAC01, 0xB0A3, 0xAC04, 0xB0A4, 0xAC07,
+	0xB0A5, 0xAC08, 0xB0A6, 0xAC09, 0xB0A7, 0xAC0A, 0xB0A8, 0xAC10,
+	0xB0A9, 0xAC11, 0xB0AA, 0xAC12, 0xB0AB, 0xAC13, 0xB0AC, 0xAC14,
+	0xB0AD, 0xAC15, 0xB0AE, 0xAC16, 0xB0AF, 0xAC17, 0xB0B0, 0xAC19,
+	0xB0B1, 0xAC1A, 0xB0B2, 0xAC1B, 0xB0B3, 0xAC1C, 0xB0B4, 0xAC1D,
+	0xB0B5, 0xAC20, 0xB0B6, 0xAC24, 0xB0B7, 0xAC2C, 0xB0B8, 0xAC2D,
+	0xB0B9, 0xAC2F, 0xB0BA, 0xAC30, 0xB0BB, 0xAC31, 0xB0BC, 0xAC38,
+	0xB0BD, 0xAC39, 0xB0BE, 0xAC3C, 0xB0BF, 0xAC40, 0xB0C0, 0xAC4B,
+	0xB0C1, 0xAC4D, 0xB0C2, 0xAC54, 0xB0C3, 0xAC58, 0xB0C4, 0xAC5C,
+	0xB0C5, 0xAC70, 0xB0C6, 0xAC71, 0xB0C7, 0xAC74, 0xB0C8, 0xAC77,
+	0xB0C9, 0xAC78, 0xB0CA, 0xAC7A, 0xB0CB, 0xAC80, 0xB0CC, 0xAC81,
+	0xB0CD, 0xAC83, 0xB0CE, 0xAC84, 0xB0CF, 0xAC85, 0xB0D0, 0xAC86,
+	0xB0D1, 0xAC89, 0xB0D2, 0xAC8A, 0xB0D3, 0xAC8B, 0xB0D4, 0xAC8C,
+	0xB0D5, 0xAC90, 0xB0D6, 0xAC94, 0xB0D7, 0xAC9C, 0xB0D8, 0xAC9D,
+	0xB0D9, 0xAC9F, 0xB0DA, 0xACA0, 0xB0DB, 0xACA1, 0xB0DC, 0xACA8,
+	0xB0DD, 0xACA9, 0xB0DE, 0xACAA, 0xB0DF, 0xACAC, 0xB0E0, 0xACAF,
+	0xB0E1, 0xACB0, 0xB0E2, 0xACB8, 0xB0E3, 0xACB9, 0xB0E4, 0xACBB,
+	0xB0E5, 0xACBC, 0xB0E6, 0xACBD, 0xB0E7, 0xACC1, 0xB0E8, 0xACC4,
+	0xB0E9, 0xACC8, 0xB0EA, 0xACCC, 0xB0EB, 0xACD5, 0xB0EC, 0xACD7,
+	0xB0ED, 0xACE0, 0xB0EE, 0xACE1, 0xB0EF, 0xACE4, 0xB0F0, 0xACE7,
+	0xB0F1, 0xACE8, 0xB0F2, 0xACEA, 0xB0F3, 0xACEC, 0xB0F4, 0xACEF,
+	0xB0F5, 0xACF0, 0xB0F6, 0xACF1, 0xB0F7, 0xACF3, 0xB0F8, 0xACF5,
+	0xB0F9, 0xACF6, 0xB0FA, 0xACFC, 0xB0FB, 0xACFD, 0xB0FC, 0xAD00,
+	0xB0FD, 0xAD04, 0xB0FE, 0xAD06, 0xB141, 0xCF02, 0xB142, 0xCF03,
+	0xB143, 0xCF05, 0xB144, 0xCF06, 0xB145, 0xCF07, 0xB146, 0xCF09,
+	0xB147, 0xCF0A, 0xB148, 0xCF0B, 0xB149, 0xCF0C, 0xB14A, 0xCF0D,
+	0xB14B, 0xCF0E, 0xB14C, 0xCF0F, 0xB14D, 0xCF12, 0xB14E, 0xCF14,
+	0xB14F, 0xCF16, 0xB150, 0xCF17, 0xB151, 0xCF18, 0xB152, 0xCF19,
+	0xB153, 0xCF1A, 0xB154, 0xCF1B, 0xB155, 0xCF1D, 0xB156, 0xCF1E,
+	0xB157, 0xCF1F, 0xB158, 0xCF21, 0xB159, 0xCF22, 0xB15A, 0xCF23,
+	0xB161, 0xCF25, 0xB162, 0xCF26, 0xB163, 0xCF27, 0xB164, 0xCF28,
+	0xB165, 0xCF29, 0xB166, 0xCF2A, 0xB167, 0xCF2B, 0xB168, 0xCF2E,
+	0xB169, 0xCF32, 0xB16A, 0xCF33, 0xB16B, 0xCF34, 0xB16C, 0xCF35,
+	0xB16D, 0xCF36, 0xB16E, 0xCF37, 0xB16F, 0xCF39, 0xB170, 0xCF3A,
+	0xB171, 0xCF3B, 0xB172, 0xCF3C, 0xB173, 0xCF3D, 0xB174, 0xCF3E,
+	0xB175, 0xCF3F, 0xB176, 0xCF40, 0xB177, 0xCF41, 0xB178, 0xCF42,
+	0xB179, 0xCF43, 0xB17A, 0xCF44, 0xB181, 0xCF45, 0xB182, 0xCF46,
+	0xB183, 0xCF47, 0xB184, 0xCF48, 0xB185, 0xCF49, 0xB186, 0xCF4A,
+	0xB187, 0xCF4B, 0xB188, 0xCF4C, 0xB189, 0xCF4D, 0xB18A, 0xCF4E,
+	0xB18B, 0xCF4F, 0xB18C, 0xCF50, 0xB18D, 0xCF51, 0xB18E, 0xCF52,
+	0xB18F, 0xCF53, 0xB190, 0xCF56, 0xB191, 0xCF57, 0xB192, 0xCF59,
+	0xB193, 0xCF5A, 0xB194, 0xCF5B, 0xB195, 0xCF5D, 0xB196, 0xCF5E,
+	0xB197, 0xCF5F, 0xB198, 0xCF60, 0xB199, 0xCF61, 0xB19A, 0xCF62,
+	0xB19B, 0xCF63, 0xB19C, 0xCF66, 0xB19D, 0xCF68, 0xB19E, 0xCF6A,
+	0xB19F, 0xCF6B, 0xB1A0, 0xCF6C, 0xB1A1, 0xAD0C, 0xB1A2, 0xAD0D,
+	0xB1A3, 0xAD0F, 0xB1A4, 0xAD11, 0xB1A5, 0xAD18, 0xB1A6, 0xAD1C,
+	0xB1A7, 0xAD20, 0xB1A8, 0xAD29, 0xB1A9, 0xAD2C, 0xB1AA, 0xAD2D,
+	0xB1AB, 0xAD34, 0xB1AC, 0xAD35, 0xB1AD, 0xAD38, 0xB1AE, 0xAD3C,
+	0xB1AF, 0xAD44, 0xB1B0, 0xAD45, 0xB1B1, 0xAD47, 0xB1B2, 0xAD49,
+	0xB1B3, 0xAD50, 0xB1B4, 0xAD54, 0xB1B5, 0xAD58, 0xB1B6, 0xAD61,
+	0xB1B7, 0xAD63, 0xB1B8, 0xAD6C, 0xB1B9, 0xAD6D, 0xB1BA, 0xAD70,
+	0xB1BB, 0xAD73, 0xB1BC, 0xAD74, 0xB1BD, 0xAD75, 0xB1BE, 0xAD76,
+	0xB1BF, 0xAD7B, 0xB1C0, 0xAD7C, 0xB1C1, 0xAD7D, 0xB1C2, 0xAD7F,
+	0xB1C3, 0xAD81, 0xB1C4, 0xAD82, 0xB1C5, 0xAD88, 0xB1C6, 0xAD89,
+	0xB1C7, 0xAD8C, 0xB1C8, 0xAD90, 0xB1C9, 0xAD9C, 0xB1CA, 0xAD9D,
+	0xB1CB, 0xADA4, 0xB1CC, 0xADB7, 0xB1CD, 0xADC0, 0xB1CE, 0xADC1,
+	0xB1CF, 0xADC4, 0xB1D0, 0xADC8, 0xB1D1, 0xADD0, 0xB1D2, 0xADD1,
+	0xB1D3, 0xADD3, 0xB1D4, 0xADDC, 0xB1D5, 0xADE0, 0xB1D6, 0xADE4,
+	0xB1D7, 0xADF8, 0xB1D8, 0xADF9, 0xB1D9, 0xADFC, 0xB1DA, 0xADFF,
+	0xB1DB, 0xAE00, 0xB1DC, 0xAE01, 0xB1DD, 0xAE08, 0xB1DE, 0xAE09,
+	0xB1DF, 0xAE0B, 0xB1E0, 0xAE0D, 0xB1E1, 0xAE14, 0xB1E2, 0xAE30,
+	0xB1E3, 0xAE31, 0xB1E4, 0xAE34, 0xB1E5, 0xAE37, 0xB1E6, 0xAE38,
+	0xB1E7, 0xAE3A, 0xB1E8, 0xAE40, 0xB1E9, 0xAE41, 0xB1EA, 0xAE43,
+	0xB1EB, 0xAE45, 0xB1EC, 0xAE46, 0xB1ED, 0xAE4A, 0xB1EE, 0xAE4C,
+	0xB1EF, 0xAE4D, 0xB1F0, 0xAE4E, 0xB1F1, 0xAE50, 0xB1F2, 0xAE54,
+	0xB1F3, 0xAE56, 0xB1F4, 0xAE5C, 0xB1F5, 0xAE5D, 0xB1F6, 0xAE5F,
+	0xB1F7, 0xAE60, 0xB1F8, 0xAE61, 0xB1F9, 0xAE65, 0xB1FA, 0xAE68,
+	0xB1FB, 0xAE69, 0xB1FC, 0xAE6C, 0xB1FD, 0xAE70, 0xB1FE, 0xAE78,
+	0xB241, 0xCF6D, 0xB242, 0xCF6E, 0xB243, 0xCF6F, 0xB244, 0xCF72,
+	0xB245, 0xCF73, 0xB246, 0xCF75, 0xB247, 0xCF76, 0xB248, 0xCF77,
+	0xB249, 0xCF79, 0xB24A, 0xCF7A, 0xB24B, 0xCF7B, 0xB24C, 0xCF7C,
+	0xB24D, 0xCF7D, 0xB24E, 0xCF7E, 0xB24F, 0xCF7F, 0xB250, 0xCF81,
+	0xB251, 0xCF82, 0xB252, 0xCF83, 0xB253, 0xCF84, 0xB254, 0xCF86,
+	0xB255, 0xCF87, 0xB256, 0xCF88, 0xB257, 0xCF89, 0xB258, 0xCF8A,
+	0xB259, 0xCF8B, 0xB25A, 0xCF8D, 0xB261, 0xCF8E, 0xB262, 0xCF8F,
+	0xB263, 0xCF90, 0xB264, 0xCF91, 0xB265, 0xCF92, 0xB266, 0xCF93,
+	0xB267, 0xCF94, 0xB268, 0xCF95, 0xB269, 0xCF96, 0xB26A, 0xCF97,
+	0xB26B, 0xCF98, 0xB26C, 0xCF99, 0xB26D, 0xCF9A, 0xB26E, 0xCF9B,
+	0xB26F, 0xCF9C, 0xB270, 0xCF9D, 0xB271, 0xCF9E, 0xB272, 0xCF9F,
+	0xB273, 0xCFA0, 0xB274, 0xCFA2, 0xB275, 0xCFA3, 0xB276, 0xCFA4,
+	0xB277, 0xCFA5, 0xB278, 0xCFA6, 0xB279, 0xCFA7, 0xB27A, 0xCFA9,
+	0xB281, 0xCFAA, 0xB282, 0xCFAB, 0xB283, 0xCFAC, 0xB284, 0xCFAD,
+	0xB285, 0xCFAE, 0xB286, 0xCFAF, 0xB287, 0xCFB1, 0xB288, 0xCFB2,
+	0xB289, 0xCFB3, 0xB28A, 0xCFB4, 0xB28B, 0xCFB5, 0xB28C, 0xCFB6,
+	0xB28D, 0xCFB7, 0xB28E, 0xCFB8, 0xB28F, 0xCFB9, 0xB290, 0xCFBA,
+	0xB291, 0xCFBB, 0xB292, 0xCFBC, 0xB293, 0xCFBD, 0xB294, 0xCFBE,
+	0xB295, 0xCFBF, 0xB296, 0xCFC0, 0xB297, 0xCFC1, 0xB298, 0xCFC2,
+	0xB299, 0xCFC3, 0xB29A, 0xCFC5, 0xB29B, 0xCFC6, 0xB29C, 0xCFC7,
+	0xB29D, 0xCFC8, 0xB29E, 0xCFC9, 0xB29F, 0xCFCA, 0xB2A0, 0xCFCB,
+	0xB2A1, 0xAE79, 0xB2A2, 0xAE7B, 0xB2A3, 0xAE7C, 0xB2A4, 0xAE7D,
+	0xB2A5, 0xAE84, 0xB2A6, 0xAE85, 0xB2A7, 0xAE8C, 0xB2A8, 0xAEBC,
+	0xB2A9, 0xAEBD, 0xB2AA, 0xAEBE, 0xB2AB, 0xAEC0, 0xB2AC, 0xAEC4,
+	0xB2AD, 0xAECC, 0xB2AE, 0xAECD, 0xB2AF, 0xAECF, 0xB2B0, 0xAED0,
+	0xB2B1, 0xAED1, 0xB2B2, 0xAED8, 0xB2B3, 0xAED9, 0xB2B4, 0xAEDC,
+	0xB2B5, 0xAEE8, 0xB2B6, 0xAEEB, 0xB2B7, 0xAEED, 0xB2B8, 0xAEF4,
+	0xB2B9, 0xAEF8, 0xB2BA, 0xAEFC, 0xB2BB, 0xAF07, 0xB2BC, 0xAF08,
+	0xB2BD, 0xAF0D, 0xB2BE, 0xAF10, 0xB2BF, 0xAF2C, 0xB2C0, 0xAF2D,
+	0xB2C1, 0xAF30, 0xB2C2, 0xAF32, 0xB2C3, 0xAF34, 0xB2C4, 0xAF3C,
+	0xB2C5, 0xAF3D, 0xB2C6, 0xAF3F, 0xB2C7, 0xAF41, 0xB2C8, 0xAF42,
+	0xB2C9, 0xAF43, 0xB2CA, 0xAF48, 0xB2CB, 0xAF49, 0xB2CC, 0xAF50,
+	0xB2CD, 0xAF5C, 0xB2CE, 0xAF5D, 0xB2CF, 0xAF64, 0xB2D0, 0xAF65,
+	0xB2D1, 0xAF79, 0xB2D2, 0xAF80, 0xB2D3, 0xAF84, 0xB2D4, 0xAF88,
+	0xB2D5, 0xAF90, 0xB2D6, 0xAF91, 0xB2D7, 0xAF95, 0xB2D8, 0xAF9C,
+	0xB2D9, 0xAFB8, 0xB2DA, 0xAFB9, 0xB2DB, 0xAFBC, 0xB2DC, 0xAFC0,
+	0xB2DD, 0xAFC7, 0xB2DE, 0xAFC8, 0xB2DF, 0xAFC9, 0xB2E0, 0xAFCB,
+	0xB2E1, 0xAFCD, 0xB2E2, 0xAFCE, 0xB2E3, 0xAFD4, 0xB2E4, 0xAFDC,
+	0xB2E5, 0xAFE8, 0xB2E6, 0xAFE9, 0xB2E7, 0xAFF0, 0xB2E8, 0xAFF1,
+	0xB2E9, 0xAFF4, 0xB2EA, 0xAFF8, 0xB2EB, 0xB000, 0xB2EC, 0xB001,
+	0xB2ED, 0xB004, 0xB2EE, 0xB00C, 0xB2EF, 0xB010, 0xB2F0, 0xB014,
+	0xB2F1, 0xB01C, 0xB2F2, 0xB01D, 0xB2F3, 0xB028, 0xB2F4, 0xB044,
+	0xB2F5, 0xB045, 0xB2F6, 0xB048, 0xB2F7, 0xB04A, 0xB2F8, 0xB04C,
+	0xB2F9, 0xB04E, 0xB2FA, 0xB053, 0xB2FB, 0xB054, 0xB2FC, 0xB055,
+	0xB2FD, 0xB057, 0xB2FE, 0xB059, 0xB341, 0xCFCC, 0xB342, 0xCFCD,
+	0xB343, 0xCFCE, 0xB344, 0xCFCF, 0xB345, 0xCFD0, 0xB346, 0xCFD1,
+	0xB347, 0xCFD2, 0xB348, 0xCFD3, 0xB349, 0xCFD4, 0xB34A, 0xCFD5,
+	0xB34B, 0xCFD6, 0xB34C, 0xCFD7, 0xB34D, 0xCFD8, 0xB34E, 0xCFD9,
+	0xB34F, 0xCFDA, 0xB350, 0xCFDB, 0xB351, 0xCFDC, 0xB352, 0xCFDD,
+	0xB353, 0xCFDE, 0xB354, 0xCFDF, 0xB355, 0xCFE2, 0xB356, 0xCFE3,
+	0xB357, 0xCFE5, 0xB358, 0xCFE6, 0xB359, 0xCFE7, 0xB35A, 0xCFE9,
+	0xB361, 0xCFEA, 0xB362, 0xCFEB, 0xB363, 0xCFEC, 0xB364, 0xCFED,
+	0xB365, 0xCFEE, 0xB366, 0xCFEF, 0xB367, 0xCFF2, 0xB368, 0xCFF4,
+	0xB369, 0xCFF6, 0xB36A, 0xCFF7, 0xB36B, 0xCFF8, 0xB36C, 0xCFF9,
+	0xB36D, 0xCFFA, 0xB36E, 0xCFFB, 0xB36F, 0xCFFD, 0xB370, 0xCFFE,
+	0xB371, 0xCFFF, 0xB372, 0xD001, 0xB373, 0xD002, 0xB374, 0xD003,
+	0xB375, 0xD005, 0xB376, 0xD006, 0xB377, 0xD007, 0xB378, 0xD008,
+	0xB379, 0xD009, 0xB37A, 0xD00A, 0xB381, 0xD00B, 0xB382, 0xD00C,
+	0xB383, 0xD00D, 0xB384, 0xD00E, 0xB385, 0xD00F, 0xB386, 0xD010,
+	0xB387, 0xD012, 0xB388, 0xD013, 0xB389, 0xD014, 0xB38A, 0xD015,
+	0xB38B, 0xD016, 0xB38C, 0xD017, 0xB38D, 0xD019, 0xB38E, 0xD01A,
+	0xB38F, 0xD01B, 0xB390, 0xD01C, 0xB391, 0xD01D, 0xB392, 0xD01E,
+	0xB393, 0xD01F, 0xB394, 0xD020, 0xB395, 0xD021, 0xB396, 0xD022,
+	0xB397, 0xD023, 0xB398, 0xD024, 0xB399, 0xD025, 0xB39A, 0xD026,
+	0xB39B, 0xD027, 0xB39C, 0xD028, 0xB39D, 0xD029, 0xB39E, 0xD02A,
+	0xB39F, 0xD02B, 0xB3A0, 0xD02C, 0xB3A1, 0xB05D, 0xB3A2, 0xB07C,
+	0xB3A3, 0xB07D, 0xB3A4, 0xB080, 0xB3A5, 0xB084, 0xB3A6, 0xB08C,
+	0xB3A7, 0xB08D, 0xB3A8, 0xB08F, 0xB3A9, 0xB091, 0xB3AA, 0xB098,
+	0xB3AB, 0xB099, 0xB3AC, 0xB09A, 0xB3AD, 0xB09C, 0xB3AE, 0xB09F,
+	0xB3AF, 0xB0A0, 0xB3B0, 0xB0A1, 0xB3B1, 0xB0A2, 0xB3B2, 0xB0A8,
+	0xB3B3, 0xB0A9, 0xB3B4, 0xB0AB, 0xB3B5, 0xB0AC, 0xB3B6, 0xB0AD,
+	0xB3B7, 0xB0AE, 0xB3B8, 0xB0AF, 0xB3B9, 0xB0B1, 0xB3BA, 0xB0B3,
+	0xB3BB, 0xB0B4, 0xB3BC, 0xB0B5, 0xB3BD, 0xB0B8, 0xB3BE, 0xB0BC,
+	0xB3BF, 0xB0C4, 0xB3C0, 0xB0C5, 0xB3C1, 0xB0C7, 0xB3C2, 0xB0C8,
+	0xB3C3, 0xB0C9, 0xB3C4, 0xB0D0, 0xB3C5, 0xB0D1, 0xB3C6, 0xB0D4,
+	0xB3C7, 0xB0D8, 0xB3C8, 0xB0E0, 0xB3C9, 0xB0E5, 0xB3CA, 0xB108,
+	0xB3CB, 0xB109, 0xB3CC, 0xB10B, 0xB3CD, 0xB10C, 0xB3CE, 0xB110,
+	0xB3CF, 0xB112, 0xB3D0, 0xB113, 0xB3D1, 0xB118, 0xB3D2, 0xB119,
+	0xB3D3, 0xB11B, 0xB3D4, 0xB11C, 0xB3D5, 0xB11D, 0xB3D6, 0xB123,
+	0xB3D7, 0xB124, 0xB3D8, 0xB125, 0xB3D9, 0xB128, 0xB3DA, 0xB12C,
+	0xB3DB, 0xB134, 0xB3DC, 0xB135, 0xB3DD, 0xB137, 0xB3DE, 0xB138,
+	0xB3DF, 0xB139, 0xB3E0, 0xB140, 0xB3E1, 0xB141, 0xB3E2, 0xB144,
+	0xB3E3, 0xB148, 0xB3E4, 0xB150, 0xB3E5, 0xB151, 0xB3E6, 0xB154,
+	0xB3E7, 0xB155, 0xB3E8, 0xB158, 0xB3E9, 0xB15C, 0xB3EA, 0xB160,
+	0xB3EB, 0xB178, 0xB3EC, 0xB179, 0xB3ED, 0xB17C, 0xB3EE, 0xB180,
+	0xB3EF, 0xB182, 0xB3F0, 0xB188, 0xB3F1, 0xB189, 0xB3F2, 0xB18B,
+	0xB3F3, 0xB18D, 0xB3F4, 0xB192, 0xB3F5, 0xB193, 0xB3F6, 0xB194,
+	0xB3F7, 0xB198, 0xB3F8, 0xB19C, 0xB3F9, 0xB1A8, 0xB3FA, 0xB1CC,
+	0xB3FB, 0xB1D0, 0xB3FC, 0xB1D4, 0xB3FD, 0xB1DC, 0xB3FE, 0xB1DD,
+	0xB441, 0xD02E, 0xB442, 0xD02F, 0xB443, 0xD030, 0xB444, 0xD031,
+	0xB445, 0xD032, 0xB446, 0xD033, 0xB447, 0xD036, 0xB448, 0xD037,
+	0xB449, 0xD039, 0xB44A, 0xD03A, 0xB44B, 0xD03B, 0xB44C, 0xD03D,
+	0xB44D, 0xD03E, 0xB44E, 0xD03F, 0xB44F, 0xD040, 0xB450, 0xD041,
+	0xB451, 0xD042, 0xB452, 0xD043, 0xB453, 0xD046, 0xB454, 0xD048,
+	0xB455, 0xD04A, 0xB456, 0xD04B, 0xB457, 0xD04C, 0xB458, 0xD04D,
+	0xB459, 0xD04E, 0xB45A, 0xD04F, 0xB461, 0xD051, 0xB462, 0xD052,
+	0xB463, 0xD053, 0xB464, 0xD055, 0xB465, 0xD056, 0xB466, 0xD057,
+	0xB467, 0xD059, 0xB468, 0xD05A, 0xB469, 0xD05B, 0xB46A, 0xD05C,
+	0xB46B, 0xD05D, 0xB46C, 0xD05E, 0xB46D, 0xD05F, 0xB46E, 0xD061,
+	0xB46F, 0xD062, 0xB470, 0xD063, 0xB471, 0xD064, 0xB472, 0xD065,
+	0xB473, 0xD066, 0xB474, 0xD067, 0xB475, 0xD068, 0xB476, 0xD069,
+	0xB477, 0xD06A, 0xB478, 0xD06B, 0xB479, 0xD06E, 0xB47A, 0xD06F,
+	0xB481, 0xD071, 0xB482, 0xD072, 0xB483, 0xD073, 0xB484, 0xD075,
+	0xB485, 0xD076, 0xB486, 0xD077, 0xB487, 0xD078, 0xB488, 0xD079,
+	0xB489, 0xD07A, 0xB48A, 0xD07B, 0xB48B, 0xD07E, 0xB48C, 0xD07F,
+	0xB48D, 0xD080, 0xB48E, 0xD082, 0xB48F, 0xD083, 0xB490, 0xD084,
+	0xB491, 0xD085, 0xB492, 0xD086, 0xB493, 0xD087, 0xB494, 0xD088,
+	0xB495, 0xD089, 0xB496, 0xD08A, 0xB497, 0xD08B, 0xB498, 0xD08C,
+	0xB499, 0xD08D, 0xB49A, 0xD08E, 0xB49B, 0xD08F, 0xB49C, 0xD090,
+	0xB49D, 0xD091, 0xB49E, 0xD092, 0xB49F, 0xD093, 0xB4A0, 0xD094,
+	0xB4A1, 0xB1DF, 0xB4A2, 0xB1E8, 0xB4A3, 0xB1E9, 0xB4A4, 0xB1EC,
+	0xB4A5, 0xB1F0, 0xB4A6, 0xB1F9, 0xB4A7, 0xB1FB, 0xB4A8, 0xB1FD,
+	0xB4A9, 0xB204, 0xB4AA, 0xB205, 0xB4AB, 0xB208, 0xB4AC, 0xB20B,
+	0xB4AD, 0xB20C, 0xB4AE, 0xB214, 0xB4AF, 0xB215, 0xB4B0, 0xB217,
+	0xB4B1, 0xB219, 0xB4B2, 0xB220, 0xB4B3, 0xB234, 0xB4B4, 0xB23C,
+	0xB4B5, 0xB258, 0xB4B6, 0xB25C, 0xB4B7, 0xB260, 0xB4B8, 0xB268,
+	0xB4B9, 0xB269, 0xB4BA, 0xB274, 0xB4BB, 0xB275, 0xB4BC, 0xB27C,
+	0xB4BD, 0xB284, 0xB4BE, 0xB285, 0xB4BF, 0xB289, 0xB4C0, 0xB290,
+	0xB4C1, 0xB291, 0xB4C2, 0xB294, 0xB4C3, 0xB298, 0xB4C4, 0xB299,
+	0xB4C5, 0xB29A, 0xB4C6, 0xB2A0, 0xB4C7, 0xB2A1, 0xB4C8, 0xB2A3,
+	0xB4C9, 0xB2A5, 0xB4CA, 0xB2A6, 0xB4CB, 0xB2AA, 0xB4CC, 0xB2AC,
+	0xB4CD, 0xB2B0, 0xB4CE, 0xB2B4, 0xB4CF, 0xB2C8, 0xB4D0, 0xB2C9,
+	0xB4D1, 0xB2CC, 0xB4D2, 0xB2D0, 0xB4D3, 0xB2D2, 0xB4D4, 0xB2D8,
+	0xB4D5, 0xB2D9, 0xB4D6, 0xB2DB, 0xB4D7, 0xB2DD, 0xB4D8, 0xB2E2,
+	0xB4D9, 0xB2E4, 0xB4DA, 0xB2E5, 0xB4DB, 0xB2E6, 0xB4DC, 0xB2E8,
+	0xB4DD, 0xB2EB, 0xB4DE, 0xB2EC, 0xB4DF, 0xB2ED, 0xB4E0, 0xB2EE,
+	0xB4E1, 0xB2EF, 0xB4E2, 0xB2F3, 0xB4E3, 0xB2F4, 0xB4E4, 0xB2F5,
+	0xB4E5, 0xB2F7, 0xB4E6, 0xB2F8, 0xB4E7, 0xB2F9, 0xB4E8, 0xB2FA,
+	0xB4E9, 0xB2FB, 0xB4EA, 0xB2FF, 0xB4EB, 0xB300, 0xB4EC, 0xB301,
+	0xB4ED, 0xB304, 0xB4EE, 0xB308, 0xB4EF, 0xB310, 0xB4F0, 0xB311,
+	0xB4F1, 0xB313, 0xB4F2, 0xB314, 0xB4F3, 0xB315, 0xB4F4, 0xB31C,
+	0xB4F5, 0xB354, 0xB4F6, 0xB355, 0xB4F7, 0xB356, 0xB4F8, 0xB358,
+	0xB4F9, 0xB35B, 0xB4FA, 0xB35C, 0xB4FB, 0xB35E, 0xB4FC, 0xB35F,
+	0xB4FD, 0xB364, 0xB4FE, 0xB365, 0xB541, 0xD095, 0xB542, 0xD096,
+	0xB543, 0xD097, 0xB544, 0xD098, 0xB545, 0xD099, 0xB546, 0xD09A,
+	0xB547, 0xD09B, 0xB548, 0xD09C, 0xB549, 0xD09D, 0xB54A, 0xD09E,
+	0xB54B, 0xD09F, 0xB54C, 0xD0A0, 0xB54D, 0xD0A1, 0xB54E, 0xD0A2,
+	0xB54F, 0xD0A3, 0xB550, 0xD0A6, 0xB551, 0xD0A7, 0xB552, 0xD0A9,
+	0xB553, 0xD0AA, 0xB554, 0xD0AB, 0xB555, 0xD0AD, 0xB556, 0xD0AE,
+	0xB557, 0xD0AF, 0xB558, 0xD0B0, 0xB559, 0xD0B1, 0xB55A, 0xD0B2,
+	0xB561, 0xD0B3, 0xB562, 0xD0B6, 0xB563, 0xD0B8, 0xB564, 0xD0BA,
+	0xB565, 0xD0BB, 0xB566, 0xD0BC, 0xB567, 0xD0BD, 0xB568, 0xD0BE,
+	0xB569, 0xD0BF, 0xB56A, 0xD0C2, 0xB56B, 0xD0C3, 0xB56C, 0xD0C5,
+	0xB56D, 0xD0C6, 0xB56E, 0xD0C7, 0xB56F, 0xD0CA, 0xB570, 0xD0CB,
+	0xB571, 0xD0CC, 0xB572, 0xD0CD, 0xB573, 0xD0CE, 0xB574, 0xD0CF,
+	0xB575, 0xD0D2, 0xB576, 0xD0D6, 0xB577, 0xD0D7, 0xB578, 0xD0D8,
+	0xB579, 0xD0D9, 0xB57A, 0xD0DA, 0xB581, 0xD0DB, 0xB582, 0xD0DE,
+	0xB583, 0xD0DF, 0xB584, 0xD0E1, 0xB585, 0xD0E2, 0xB586, 0xD0E3,
+	0xB587, 0xD0E5, 0xB588, 0xD0E6, 0xB589, 0xD0E7, 0xB58A, 0xD0E8,
+	0xB58B, 0xD0E9, 0xB58C, 0xD0EA, 0xB58D, 0xD0EB, 0xB58E, 0xD0EE,
+	0xB58F, 0xD0F2, 0xB590, 0xD0F3, 0xB591, 0xD0F4, 0xB592, 0xD0F5,
+	0xB593, 0xD0F6, 0xB594, 0xD0F7, 0xB595, 0xD0F9, 0xB596, 0xD0FA,
+	0xB597, 0xD0FB, 0xB598, 0xD0FC, 0xB599, 0xD0FD, 0xB59A, 0xD0FE,
+	0xB59B, 0xD0FF, 0xB59C, 0xD100, 0xB59D, 0xD101, 0xB59E, 0xD102,
+	0xB59F, 0xD103, 0xB5A0, 0xD104, 0xB5A1, 0xB367, 0xB5A2, 0xB369,
+	0xB5A3, 0xB36B, 0xB5A4, 0xB36E, 0xB5A5, 0xB370, 0xB5A6, 0xB371,
+	0xB5A7, 0xB374, 0xB5A8, 0xB378, 0xB5A9, 0xB380, 0xB5AA, 0xB381,
+	0xB5AB, 0xB383, 0xB5AC, 0xB384, 0xB5AD, 0xB385, 0xB5AE, 0xB38C,
+	0xB5AF, 0xB390, 0xB5B0, 0xB394, 0xB5B1, 0xB3A0, 0xB5B2, 0xB3A1,
+	0xB5B3, 0xB3A8, 0xB5B4, 0xB3AC, 0xB5B5, 0xB3C4, 0xB5B6, 0xB3C5,
+	0xB5B7, 0xB3C8, 0xB5B8, 0xB3CB, 0xB5B9, 0xB3CC, 0xB5BA, 0xB3CE,
+	0xB5BB, 0xB3D0, 0xB5BC, 0xB3D4, 0xB5BD, 0xB3D5, 0xB5BE, 0xB3D7,
+	0xB5BF, 0xB3D9, 0xB5C0, 0xB3DB, 0xB5C1, 0xB3DD, 0xB5C2, 0xB3E0,
+	0xB5C3, 0xB3E4, 0xB5C4, 0xB3E8, 0xB5C5, 0xB3FC, 0xB5C6, 0xB410,
+	0xB5C7, 0xB418, 0xB5C8, 0xB41C, 0xB5C9, 0xB420, 0xB5CA, 0xB428,
+	0xB5CB, 0xB429, 0xB5CC, 0xB42B, 0xB5CD, 0xB434, 0xB5CE, 0xB450,
+	0xB5CF, 0xB451, 0xB5D0, 0xB454, 0xB5D1, 0xB458, 0xB5D2, 0xB460,
+	0xB5D3, 0xB461, 0xB5D4, 0xB463, 0xB5D5, 0xB465, 0xB5D6, 0xB46C,
+	0xB5D7, 0xB480, 0xB5D8, 0xB488, 0xB5D9, 0xB49D, 0xB5DA, 0xB4A4,
+	0xB5DB, 0xB4A8, 0xB5DC, 0xB4AC, 0xB5DD, 0xB4B5, 0xB5DE, 0xB4B7,
+	0xB5DF, 0xB4B9, 0xB5E0, 0xB4C0, 0xB5E1, 0xB4C4, 0xB5E2, 0xB4C8,
+	0xB5E3, 0xB4D0, 0xB5E4, 0xB4D5, 0xB5E5, 0xB4DC, 0xB5E6, 0xB4DD,
+	0xB5E7, 0xB4E0, 0xB5E8, 0xB4E3, 0xB5E9, 0xB4E4, 0xB5EA, 0xB4E6,
+	0xB5EB, 0xB4EC, 0xB5EC, 0xB4ED, 0xB5ED, 0xB4EF, 0xB5EE, 0xB4F1,
+	0xB5EF, 0xB4F8, 0xB5F0, 0xB514, 0xB5F1, 0xB515, 0xB5F2, 0xB518,
+	0xB5F3, 0xB51B, 0xB5F4, 0xB51C, 0xB5F5, 0xB524, 0xB5F6, 0xB525,
+	0xB5F7, 0xB527, 0xB5F8, 0xB528, 0xB5F9, 0xB529, 0xB5FA, 0xB52A,
+	0xB5FB, 0xB530, 0xB5FC, 0xB531, 0xB5FD, 0xB534, 0xB5FE, 0xB538,
+	0xB641, 0xD105, 0xB642, 0xD106, 0xB643, 0xD107, 0xB644, 0xD108,
+	0xB645, 0xD109, 0xB646, 0xD10A, 0xB647, 0xD10B, 0xB648, 0xD10C,
+	0xB649, 0xD10E, 0xB64A, 0xD10F, 0xB64B, 0xD110, 0xB64C, 0xD111,
+	0xB64D, 0xD112, 0xB64E, 0xD113, 0xB64F, 0xD114, 0xB650, 0xD115,
+	0xB651, 0xD116, 0xB652, 0xD117, 0xB653, 0xD118, 0xB654, 0xD119,
+	0xB655, 0xD11A, 0xB656, 0xD11B, 0xB657, 0xD11C, 0xB658, 0xD11D,
+	0xB659, 0xD11E, 0xB65A, 0xD11F, 0xB661, 0xD120, 0xB662, 0xD121,
+	0xB663, 0xD122, 0xB664, 0xD123, 0xB665, 0xD124, 0xB666, 0xD125,
+	0xB667, 0xD126, 0xB668, 0xD127, 0xB669, 0xD128, 0xB66A, 0xD129,
+	0xB66B, 0xD12A, 0xB66C, 0xD12B, 0xB66D, 0xD12C, 0xB66E, 0xD12D,
+	0xB66F, 0xD12E, 0xB670, 0xD12F, 0xB671, 0xD132, 0xB672, 0xD133,
+	0xB673, 0xD135, 0xB674, 0xD136, 0xB675, 0xD137, 0xB676, 0xD139,
+	0xB677, 0xD13B, 0xB678, 0xD13C, 0xB679, 0xD13D, 0xB67A, 0xD13E,
+	0xB681, 0xD13F, 0xB682, 0xD142, 0xB683, 0xD146, 0xB684, 0xD147,
+	0xB685, 0xD148, 0xB686, 0xD149, 0xB687, 0xD14A, 0xB688, 0xD14B,
+	0xB689, 0xD14E, 0xB68A, 0xD14F, 0xB68B, 0xD151, 0xB68C, 0xD152,
+	0xB68D, 0xD153, 0xB68E, 0xD155, 0xB68F, 0xD156, 0xB690, 0xD157,
+	0xB691, 0xD158, 0xB692, 0xD159, 0xB693, 0xD15A, 0xB694, 0xD15B,
+	0xB695, 0xD15E, 0xB696, 0xD160, 0xB697, 0xD162, 0xB698, 0xD163,
+	0xB699, 0xD164, 0xB69A, 0xD165, 0xB69B, 0xD166, 0xB69C, 0xD167,
+	0xB69D, 0xD169, 0xB69E, 0xD16A, 0xB69F, 0xD16B, 0xB6A0, 0xD16D,
+	0xB6A1, 0xB540, 0xB6A2, 0xB541, 0xB6A3, 0xB543, 0xB6A4, 0xB544,
+	0xB6A5, 0xB545, 0xB6A6, 0xB54B, 0xB6A7, 0xB54C, 0xB6A8, 0xB54D,
+	0xB6A9, 0xB550, 0xB6AA, 0xB554, 0xB6AB, 0xB55C, 0xB6AC, 0xB55D,
+	0xB6AD, 0xB55F, 0xB6AE, 0xB560, 0xB6AF, 0xB561, 0xB6B0, 0xB5A0,
+	0xB6B1, 0xB5A1, 0xB6B2, 0xB5A4, 0xB6B3, 0xB5A8, 0xB6B4, 0xB5AA,
+	0xB6B5, 0xB5AB, 0xB6B6, 0xB5B0, 0xB6B7, 0xB5B1, 0xB6B8, 0xB5B3,
+	0xB6B9, 0xB5B4, 0xB6BA, 0xB5B5, 0xB6BB, 0xB5BB, 0xB6BC, 0xB5BC,
+	0xB6BD, 0xB5BD, 0xB6BE, 0xB5C0, 0xB6BF, 0xB5C4, 0xB6C0, 0xB5CC,
+	0xB6C1, 0xB5CD, 0xB6C2, 0xB5CF, 0xB6C3, 0xB5D0, 0xB6C4, 0xB5D1,
+	0xB6C5, 0xB5D8, 0xB6C6, 0xB5EC, 0xB6C7, 0xB610, 0xB6C8, 0xB611,
+	0xB6C9, 0xB614, 0xB6CA, 0xB618, 0xB6CB, 0xB625, 0xB6CC, 0xB62C,
+	0xB6CD, 0xB634, 0xB6CE, 0xB648, 0xB6CF, 0xB664, 0xB6D0, 0xB668,
+	0xB6D1, 0xB69C, 0xB6D2, 0xB69D, 0xB6D3, 0xB6A0, 0xB6D4, 0xB6A4,
+	0xB6D5, 0xB6AB, 0xB6D6, 0xB6AC, 0xB6D7, 0xB6B1, 0xB6D8, 0xB6D4,
+	0xB6D9, 0xB6F0, 0xB6DA, 0xB6F4, 0xB6DB, 0xB6F8, 0xB6DC, 0xB700,
+	0xB6DD, 0xB701, 0xB6DE, 0xB705, 0xB6DF, 0xB728, 0xB6E0, 0xB729,
+	0xB6E1, 0xB72C, 0xB6E2, 0xB72F, 0xB6E3, 0xB730, 0xB6E4, 0xB738,
+	0xB6E5, 0xB739, 0xB6E6, 0xB73B, 0xB6E7, 0xB744, 0xB6E8, 0xB748,
+	0xB6E9, 0xB74C, 0xB6EA, 0xB754, 0xB6EB, 0xB755, 0xB6EC, 0xB760,
+	0xB6ED, 0xB764, 0xB6EE, 0xB768, 0xB6EF, 0xB770, 0xB6F0, 0xB771,
+	0xB6F1, 0xB773, 0xB6F2, 0xB775, 0xB6F3, 0xB77C, 0xB6F4, 0xB77D,
+	0xB6F5, 0xB780, 0xB6F6, 0xB784, 0xB6F7, 0xB78C, 0xB6F8, 0xB78D,
+	0xB6F9, 0xB78F, 0xB6FA, 0xB790, 0xB6FB, 0xB791, 0xB6FC, 0xB792,
+	0xB6FD, 0xB796, 0xB6FE, 0xB797, 0xB741, 0xD16E, 0xB742, 0xD16F,
+	0xB743, 0xD170, 0xB744, 0xD171, 0xB745, 0xD172, 0xB746, 0xD173,
+	0xB747, 0xD174, 0xB748, 0xD175, 0xB749, 0xD176, 0xB74A, 0xD177,
+	0xB74B, 0xD178, 0xB74C, 0xD179, 0xB74D, 0xD17A, 0xB74E, 0xD17B,
+	0xB74F, 0xD17D, 0xB750, 0xD17E, 0xB751, 0xD17F, 0xB752, 0xD180,
+	0xB753, 0xD181, 0xB754, 0xD182, 0xB755, 0xD183, 0xB756, 0xD185,
+	0xB757, 0xD186, 0xB758, 0xD187, 0xB759, 0xD189, 0xB75A, 0xD18A,
+	0xB761, 0xD18B, 0xB762, 0xD18C, 0xB763, 0xD18D, 0xB764, 0xD18E,
+	0xB765, 0xD18F, 0xB766, 0xD190, 0xB767, 0xD191, 0xB768, 0xD192,
+	0xB769, 0xD193, 0xB76A, 0xD194, 0xB76B, 0xD195, 0xB76C, 0xD196,
+	0xB76D, 0xD197, 0xB76E, 0xD198, 0xB76F, 0xD199, 0xB770, 0xD19A,
+	0xB771, 0xD19B, 0xB772, 0xD19C, 0xB773, 0xD19D, 0xB774, 0xD19E,
+	0xB775, 0xD19F, 0xB776, 0xD1A2, 0xB777, 0xD1A3, 0xB778, 0xD1A5,
+	0xB779, 0xD1A6, 0xB77A, 0xD1A7, 0xB781, 0xD1A9, 0xB782, 0xD1AA,
+	0xB783, 0xD1AB, 0xB784, 0xD1AC, 0xB785, 0xD1AD, 0xB786, 0xD1AE,
+	0xB787, 0xD1AF, 0xB788, 0xD1B2, 0xB789, 0xD1B4, 0xB78A, 0xD1B6,
+	0xB78B, 0xD1B7, 0xB78C, 0xD1B8, 0xB78D, 0xD1B9, 0xB78E, 0xD1BB,
+	0xB78F, 0xD1BD, 0xB790, 0xD1BE, 0xB791, 0xD1BF, 0xB792, 0xD1C1,
+	0xB793, 0xD1C2, 0xB794, 0xD1C3, 0xB795, 0xD1C4, 0xB796, 0xD1C5,
+	0xB797, 0xD1C6, 0xB798, 0xD1C7, 0xB799, 0xD1C8, 0xB79A, 0xD1C9,
+	0xB79B, 0xD1CA, 0xB79C, 0xD1CB, 0xB79D, 0xD1CC, 0xB79E, 0xD1CD,
+	0xB79F, 0xD1CE, 0xB7A0, 0xD1CF, 0xB7A1, 0xB798, 0xB7A2, 0xB799,
+	0xB7A3, 0xB79C, 0xB7A4, 0xB7A0, 0xB7A5, 0xB7A8, 0xB7A6, 0xB7A9,
+	0xB7A7, 0xB7AB, 0xB7A8, 0xB7AC, 0xB7A9, 0xB7AD, 0xB7AA, 0xB7B4,
+	0xB7AB, 0xB7B5, 0xB7AC, 0xB7B8, 0xB7AD, 0xB7C7, 0xB7AE, 0xB7C9,
+	0xB7AF, 0xB7EC, 0xB7B0, 0xB7ED, 0xB7B1, 0xB7F0, 0xB7B2, 0xB7F4,
+	0xB7B3, 0xB7FC, 0xB7B4, 0xB7FD, 0xB7B5, 0xB7FF, 0xB7B6, 0xB800,
+	0xB7B7, 0xB801, 0xB7B8, 0xB807, 0xB7B9, 0xB808, 0xB7BA, 0xB809,
+	0xB7BB, 0xB80C, 0xB7BC, 0xB810, 0xB7BD, 0xB818, 0xB7BE, 0xB819,
+	0xB7BF, 0xB81B, 0xB7C0, 0xB81D, 0xB7C1, 0xB824, 0xB7C2, 0xB825,
+	0xB7C3, 0xB828, 0xB7C4, 0xB82C, 0xB7C5, 0xB834, 0xB7C6, 0xB835,
+	0xB7C7, 0xB837, 0xB7C8, 0xB838, 0xB7C9, 0xB839, 0xB7CA, 0xB840,
+	0xB7CB, 0xB844, 0xB7CC, 0xB851, 0xB7CD, 0xB853, 0xB7CE, 0xB85C,
+	0xB7CF, 0xB85D, 0xB7D0, 0xB860, 0xB7D1, 0xB864, 0xB7D2, 0xB86C,
+	0xB7D3, 0xB86D, 0xB7D4, 0xB86F, 0xB7D5, 0xB871, 0xB7D6, 0xB878,
+	0xB7D7, 0xB87C, 0xB7D8, 0xB88D, 0xB7D9, 0xB8A8, 0xB7DA, 0xB8B0,
+	0xB7DB, 0xB8B4, 0xB7DC, 0xB8B8, 0xB7DD, 0xB8C0, 0xB7DE, 0xB8C1,
+	0xB7DF, 0xB8C3, 0xB7E0, 0xB8C5, 0xB7E1, 0xB8CC, 0xB7E2, 0xB8D0,
+	0xB7E3, 0xB8D4, 0xB7E4, 0xB8DD, 0xB7E5, 0xB8DF, 0xB7E6, 0xB8E1,
+	0xB7E7, 0xB8E8, 0xB7E8, 0xB8E9, 0xB7E9, 0xB8EC, 0xB7EA, 0xB8F0,
+	0xB7EB, 0xB8F8, 0xB7EC, 0xB8F9, 0xB7ED, 0xB8FB, 0xB7EE, 0xB8FD,
+	0xB7EF, 0xB904, 0xB7F0, 0xB918, 0xB7F1, 0xB920, 0xB7F2, 0xB93C,
+	0xB7F3, 0xB93D, 0xB7F4, 0xB940, 0xB7F5, 0xB944, 0xB7F6, 0xB94C,
+	0xB7F7, 0xB94F, 0xB7F8, 0xB951, 0xB7F9, 0xB958, 0xB7FA, 0xB959,
+	0xB7FB, 0xB95C, 0xB7FC, 0xB960, 0xB7FD, 0xB968, 0xB7FE, 0xB969,
+	0xB841, 0xD1D0, 0xB842, 0xD1D1, 0xB843, 0xD1D2, 0xB844, 0xD1D3,
+	0xB845, 0xD1D4, 0xB846, 0xD1D5, 0xB847, 0xD1D6, 0xB848, 0xD1D7,
+	0xB849, 0xD1D9, 0xB84A, 0xD1DA, 0xB84B, 0xD1DB, 0xB84C, 0xD1DC,
+	0xB84D, 0xD1DD, 0xB84E, 0xD1DE, 0xB84F, 0xD1DF, 0xB850, 0xD1E0,
+	0xB851, 0xD1E1, 0xB852, 0xD1E2, 0xB853, 0xD1E3, 0xB854, 0xD1E4,
+	0xB855, 0xD1E5, 0xB856, 0xD1E6, 0xB857, 0xD1E7, 0xB858, 0xD1E8,
+	0xB859, 0xD1E9, 0xB85A, 0xD1EA, 0xB861, 0xD1EB, 0xB862, 0xD1EC,
+	0xB863, 0xD1ED, 0xB864, 0xD1EE, 0xB865, 0xD1EF, 0xB866, 0xD1F0,
+	0xB867, 0xD1F1, 0xB868, 0xD1F2, 0xB869, 0xD1F3, 0xB86A, 0xD1F5,
+	0xB86B, 0xD1F6, 0xB86C, 0xD1F7, 0xB86D, 0xD1F9, 0xB86E, 0xD1FA,
+	0xB86F, 0xD1FB, 0xB870, 0xD1FC, 0xB871, 0xD1FD, 0xB872, 0xD1FE,
+	0xB873, 0xD1FF, 0xB874, 0xD200, 0xB875, 0xD201, 0xB876, 0xD202,
+	0xB877, 0xD203, 0xB878, 0xD204, 0xB879, 0xD205, 0xB87A, 0xD206,
+	0xB881, 0xD208, 0xB882, 0xD20A, 0xB883, 0xD20B, 0xB884, 0xD20C,
+	0xB885, 0xD20D, 0xB886, 0xD20E, 0xB887, 0xD20F, 0xB888, 0xD211,
+	0xB889, 0xD212, 0xB88A, 0xD213, 0xB88B, 0xD214, 0xB88C, 0xD215,
+	0xB88D, 0xD216, 0xB88E, 0xD217, 0xB88F, 0xD218, 0xB890, 0xD219,
+	0xB891, 0xD21A, 0xB892, 0xD21B, 0xB893, 0xD21C, 0xB894, 0xD21D,
+	0xB895, 0xD21E, 0xB896, 0xD21F, 0xB897, 0xD220, 0xB898, 0xD221,
+	0xB899, 0xD222, 0xB89A, 0xD223, 0xB89B, 0xD224, 0xB89C, 0xD225,
+	0xB89D, 0xD226, 0xB89E, 0xD227, 0xB89F, 0xD228, 0xB8A0, 0xD229,
+	0xB8A1, 0xB96B, 0xB8A2, 0xB96D, 0xB8A3, 0xB974, 0xB8A4, 0xB975,
+	0xB8A5, 0xB978, 0xB8A6, 0xB97C, 0xB8A7, 0xB984, 0xB8A8, 0xB985,
+	0xB8A9, 0xB987, 0xB8AA, 0xB989, 0xB8AB, 0xB98A, 0xB8AC, 0xB98D,
+	0xB8AD, 0xB98E, 0xB8AE, 0xB9AC, 0xB8AF, 0xB9AD, 0xB8B0, 0xB9B0,
+	0xB8B1, 0xB9B4, 0xB8B2, 0xB9BC, 0xB8B3, 0xB9BD, 0xB8B4, 0xB9BF,
+	0xB8B5, 0xB9C1, 0xB8B6, 0xB9C8, 0xB8B7, 0xB9C9, 0xB8B8, 0xB9CC,
+	0xB8B9, 0xB9CE, 0xB8BA, 0xB9CF, 0xB8BB, 0xB9D0, 0xB8BC, 0xB9D1,
+	0xB8BD, 0xB9D2, 0xB8BE, 0xB9D8, 0xB8BF, 0xB9D9, 0xB8C0, 0xB9DB,
+	0xB8C1, 0xB9DD, 0xB8C2, 0xB9DE, 0xB8C3, 0xB9E1, 0xB8C4, 0xB9E3,
+	0xB8C5, 0xB9E4, 0xB8C6, 0xB9E5, 0xB8C7, 0xB9E8, 0xB8C8, 0xB9EC,
+	0xB8C9, 0xB9F4, 0xB8CA, 0xB9F5, 0xB8CB, 0xB9F7, 0xB8CC, 0xB9F8,
+	0xB8CD, 0xB9F9, 0xB8CE, 0xB9FA, 0xB8CF, 0xBA00, 0xB8D0, 0xBA01,
+	0xB8D1, 0xBA08, 0xB8D2, 0xBA15, 0xB8D3, 0xBA38, 0xB8D4, 0xBA39,
+	0xB8D5, 0xBA3C, 0xB8D6, 0xBA40, 0xB8D7, 0xBA42, 0xB8D8, 0xBA48,
+	0xB8D9, 0xBA49, 0xB8DA, 0xBA4B, 0xB8DB, 0xBA4D, 0xB8DC, 0xBA4E,
+	0xB8DD, 0xBA53, 0xB8DE, 0xBA54, 0xB8DF, 0xBA55, 0xB8E0, 0xBA58,
+	0xB8E1, 0xBA5C, 0xB8E2, 0xBA64, 0xB8E3, 0xBA65, 0xB8E4, 0xBA67,
+	0xB8E5, 0xBA68, 0xB8E6, 0xBA69, 0xB8E7, 0xBA70, 0xB8E8, 0xBA71,
+	0xB8E9, 0xBA74, 0xB8EA, 0xBA78, 0xB8EB, 0xBA83, 0xB8EC, 0xBA84,
+	0xB8ED, 0xBA85, 0xB8EE, 0xBA87, 0xB8EF, 0xBA8C, 0xB8F0, 0xBAA8,
+	0xB8F1, 0xBAA9, 0xB8F2, 0xBAAB, 0xB8F3, 0xBAAC, 0xB8F4, 0xBAB0,
+	0xB8F5, 0xBAB2, 0xB8F6, 0xBAB8, 0xB8F7, 0xBAB9, 0xB8F8, 0xBABB,
+	0xB8F9, 0xBABD, 0xB8FA, 0xBAC4, 0xB8FB, 0xBAC8, 0xB8FC, 0xBAD8,
+	0xB8FD, 0xBAD9, 0xB8FE, 0xBAFC, 0xB941, 0xD22A, 0xB942, 0xD22B,
+	0xB943, 0xD22E, 0xB944, 0xD22F, 0xB945, 0xD231, 0xB946, 0xD232,
+	0xB947, 0xD233, 0xB948, 0xD235, 0xB949, 0xD236, 0xB94A, 0xD237,
+	0xB94B, 0xD238, 0xB94C, 0xD239, 0xB94D, 0xD23A, 0xB94E, 0xD23B,
+	0xB94F, 0xD23E, 0xB950, 0xD240, 0xB951, 0xD242, 0xB952, 0xD243,
+	0xB953, 0xD244, 0xB954, 0xD245, 0xB955, 0xD246, 0xB956, 0xD247,
+	0xB957, 0xD249, 0xB958, 0xD24A, 0xB959, 0xD24B, 0xB95A, 0xD24C,
+	0xB961, 0xD24D, 0xB962, 0xD24E, 0xB963, 0xD24F, 0xB964, 0xD250,
+	0xB965, 0xD251, 0xB966, 0xD252, 0xB967, 0xD253, 0xB968, 0xD254,
+	0xB969, 0xD255, 0xB96A, 0xD256, 0xB96B, 0xD257, 0xB96C, 0xD258,
+	0xB96D, 0xD259, 0xB96E, 0xD25A, 0xB96F, 0xD25B, 0xB970, 0xD25D,
+	0xB971, 0xD25E, 0xB972, 0xD25F, 0xB973, 0xD260, 0xB974, 0xD261,
+	0xB975, 0xD262, 0xB976, 0xD263, 0xB977, 0xD265, 0xB978, 0xD266,
+	0xB979, 0xD267, 0xB97A, 0xD268, 0xB981, 0xD269, 0xB982, 0xD26A,
+	0xB983, 0xD26B, 0xB984, 0xD26C, 0xB985, 0xD26D, 0xB986, 0xD26E,
+	0xB987, 0xD26F, 0xB988, 0xD270, 0xB989, 0xD271, 0xB98A, 0xD272,
+	0xB98B, 0xD273, 0xB98C, 0xD274, 0xB98D, 0xD275, 0xB98E, 0xD276,
+	0xB98F, 0xD277, 0xB990, 0xD278, 0xB991, 0xD279, 0xB992, 0xD27A,
+	0xB993, 0xD27B, 0xB994, 0xD27C, 0xB995, 0xD27D, 0xB996, 0xD27E,
+	0xB997, 0xD27F, 0xB998, 0xD282, 0xB999, 0xD283, 0xB99A, 0xD285,
+	0xB99B, 0xD286, 0xB99C, 0xD287, 0xB99D, 0xD289, 0xB99E, 0xD28A,
+	0xB99F, 0xD28B, 0xB9A0, 0xD28C, 0xB9A1, 0xBB00, 0xB9A2, 0xBB04,
+	0xB9A3, 0xBB0D, 0xB9A4, 0xBB0F, 0xB9A5, 0xBB11, 0xB9A6, 0xBB18,
+	0xB9A7, 0xBB1C, 0xB9A8, 0xBB20, 0xB9A9, 0xBB29, 0xB9AA, 0xBB2B,
+	0xB9AB, 0xBB34, 0xB9AC, 0xBB35, 0xB9AD, 0xBB36, 0xB9AE, 0xBB38,
+	0xB9AF, 0xBB3B, 0xB9B0, 0xBB3C, 0xB9B1, 0xBB3D, 0xB9B2, 0xBB3E,
+	0xB9B3, 0xBB44, 0xB9B4, 0xBB45, 0xB9B5, 0xBB47, 0xB9B6, 0xBB49,
+	0xB9B7, 0xBB4D, 0xB9B8, 0xBB4F, 0xB9B9, 0xBB50, 0xB9BA, 0xBB54,
+	0xB9BB, 0xBB58, 0xB9BC, 0xBB61, 0xB9BD, 0xBB63, 0xB9BE, 0xBB6C,
+	0xB9BF, 0xBB88, 0xB9C0, 0xBB8C, 0xB9C1, 0xBB90, 0xB9C2, 0xBBA4,
+	0xB9C3, 0xBBA8, 0xB9C4, 0xBBAC, 0xB9C5, 0xBBB4, 0xB9C6, 0xBBB7,
+	0xB9C7, 0xBBC0, 0xB9C8, 0xBBC4, 0xB9C9, 0xBBC8, 0xB9CA, 0xBBD0,
+	0xB9CB, 0xBBD3, 0xB9CC, 0xBBF8, 0xB9CD, 0xBBF9, 0xB9CE, 0xBBFC,
+	0xB9CF, 0xBBFF, 0xB9D0, 0xBC00, 0xB9D1, 0xBC02, 0xB9D2, 0xBC08,
+	0xB9D3, 0xBC09, 0xB9D4, 0xBC0B, 0xB9D5, 0xBC0C, 0xB9D6, 0xBC0D,
+	0xB9D7, 0xBC0F, 0xB9D8, 0xBC11, 0xB9D9, 0xBC14, 0xB9DA, 0xBC15,
+	0xB9DB, 0xBC16, 0xB9DC, 0xBC17, 0xB9DD, 0xBC18, 0xB9DE, 0xBC1B,
+	0xB9DF, 0xBC1C, 0xB9E0, 0xBC1D, 0xB9E1, 0xBC1E, 0xB9E2, 0xBC1F,
+	0xB9E3, 0xBC24, 0xB9E4, 0xBC25, 0xB9E5, 0xBC27, 0xB9E6, 0xBC29,
+	0xB9E7, 0xBC2D, 0xB9E8, 0xBC30, 0xB9E9, 0xBC31, 0xB9EA, 0xBC34,
+	0xB9EB, 0xBC38, 0xB9EC, 0xBC40, 0xB9ED, 0xBC41, 0xB9EE, 0xBC43,
+	0xB9EF, 0xBC44, 0xB9F0, 0xBC45, 0xB9F1, 0xBC49, 0xB9F2, 0xBC4C,
+	0xB9F3, 0xBC4D, 0xB9F4, 0xBC50, 0xB9F5, 0xBC5D, 0xB9F6, 0xBC84,
+	0xB9F7, 0xBC85, 0xB9F8, 0xBC88, 0xB9F9, 0xBC8B, 0xB9FA, 0xBC8C,
+	0xB9FB, 0xBC8E, 0xB9FC, 0xBC94, 0xB9FD, 0xBC95, 0xB9FE, 0xBC97,
+	0xBA41, 0xD28D, 0xBA42, 0xD28E, 0xBA43, 0xD28F, 0xBA44, 0xD292,
+	0xBA45, 0xD293, 0xBA46, 0xD294, 0xBA47, 0xD296, 0xBA48, 0xD297,
+	0xBA49, 0xD298, 0xBA4A, 0xD299, 0xBA4B, 0xD29A, 0xBA4C, 0xD29B,
+	0xBA4D, 0xD29D, 0xBA4E, 0xD29E, 0xBA4F, 0xD29F, 0xBA50, 0xD2A1,
+	0xBA51, 0xD2A2, 0xBA52, 0xD2A3, 0xBA53, 0xD2A5, 0xBA54, 0xD2A6,
+	0xBA55, 0xD2A7, 0xBA56, 0xD2A8, 0xBA57, 0xD2A9, 0xBA58, 0xD2AA,
+	0xBA59, 0xD2AB, 0xBA5A, 0xD2AD, 0xBA61, 0xD2AE, 0xBA62, 0xD2AF,
+	0xBA63, 0xD2B0, 0xBA64, 0xD2B2, 0xBA65, 0xD2B3, 0xBA66, 0xD2B4,
+	0xBA67, 0xD2B5, 0xBA68, 0xD2B6, 0xBA69, 0xD2B7, 0xBA6A, 0xD2BA,
+	0xBA6B, 0xD2BB, 0xBA6C, 0xD2BD, 0xBA6D, 0xD2BE, 0xBA6E, 0xD2C1,
+	0xBA6F, 0xD2C3, 0xBA70, 0xD2C4, 0xBA71, 0xD2C5, 0xBA72, 0xD2C6,
+	0xBA73, 0xD2C7, 0xBA74, 0xD2CA, 0xBA75, 0xD2CC, 0xBA76, 0xD2CD,
+	0xBA77, 0xD2CE, 0xBA78, 0xD2CF, 0xBA79, 0xD2D0, 0xBA7A, 0xD2D1,
+	0xBA81, 0xD2D2, 0xBA82, 0xD2D3, 0xBA83, 0xD2D5, 0xBA84, 0xD2D6,
+	0xBA85, 0xD2D7, 0xBA86, 0xD2D9, 0xBA87, 0xD2DA, 0xBA88, 0xD2DB,
+	0xBA89, 0xD2DD, 0xBA8A, 0xD2DE, 0xBA8B, 0xD2DF, 0xBA8C, 0xD2E0,
+	0xBA8D, 0xD2E1, 0xBA8E, 0xD2E2, 0xBA8F, 0xD2E3, 0xBA90, 0xD2E6,
+	0xBA91, 0xD2E7, 0xBA92, 0xD2E8, 0xBA93, 0xD2E9, 0xBA94, 0xD2EA,
+	0xBA95, 0xD2EB, 0xBA96, 0xD2EC, 0xBA97, 0xD2ED, 0xBA98, 0xD2EE,
+	0xBA99, 0xD2EF, 0xBA9A, 0xD2F2, 0xBA9B, 0xD2F3, 0xBA9C, 0xD2F5,
+	0xBA9D, 0xD2F6, 0xBA9E, 0xD2F7, 0xBA9F, 0xD2F9, 0xBAA0, 0xD2FA,
+	0xBAA1, 0xBC99, 0xBAA2, 0xBC9A, 0xBAA3, 0xBCA0, 0xBAA4, 0xBCA1,
+	0xBAA5, 0xBCA4, 0xBAA6, 0xBCA7, 0xBAA7, 0xBCA8, 0xBAA8, 0xBCB0,
+	0xBAA9, 0xBCB1, 0xBAAA, 0xBCB3, 0xBAAB, 0xBCB4, 0xBAAC, 0xBCB5,
+	0xBAAD, 0xBCBC, 0xBAAE, 0xBCBD, 0xBAAF, 0xBCC0, 0xBAB0, 0xBCC4,
+	0xBAB1, 0xBCCD, 0xBAB2, 0xBCCF, 0xBAB3, 0xBCD0, 0xBAB4, 0xBCD1,
+	0xBAB5, 0xBCD5, 0xBAB6, 0xBCD8, 0xBAB7, 0xBCDC, 0xBAB8, 0xBCF4,
+	0xBAB9, 0xBCF5, 0xBABA, 0xBCF6, 0xBABB, 0xBCF8, 0xBABC, 0xBCFC,
+	0xBABD, 0xBD04, 0xBABE, 0xBD05, 0xBABF, 0xBD07, 0xBAC0, 0xBD09,
+	0xBAC1, 0xBD10, 0xBAC2, 0xBD14, 0xBAC3, 0xBD24, 0xBAC4, 0xBD2C,
+	0xBAC5, 0xBD40, 0xBAC6, 0xBD48, 0xBAC7, 0xBD49, 0xBAC8, 0xBD4C,
+	0xBAC9, 0xBD50, 0xBACA, 0xBD58, 0xBACB, 0xBD59, 0xBACC, 0xBD64,
+	0xBACD, 0xBD68, 0xBACE, 0xBD80, 0xBACF, 0xBD81, 0xBAD0, 0xBD84,
+	0xBAD1, 0xBD87, 0xBAD2, 0xBD88, 0xBAD3, 0xBD89, 0xBAD4, 0xBD8A,
+	0xBAD5, 0xBD90, 0xBAD6, 0xBD91, 0xBAD7, 0xBD93, 0xBAD8, 0xBD95,
+	0xBAD9, 0xBD99, 0xBADA, 0xBD9A, 0xBADB, 0xBD9C, 0xBADC, 0xBDA4,
+	0xBADD, 0xBDB0, 0xBADE, 0xBDB8, 0xBADF, 0xBDD4, 0xBAE0, 0xBDD5,
+	0xBAE1, 0xBDD8, 0xBAE2, 0xBDDC, 0xBAE3, 0xBDE9, 0xBAE4, 0xBDF0,
+	0xBAE5, 0xBDF4, 0xBAE6, 0xBDF8, 0xBAE7, 0xBE00, 0xBAE8, 0xBE03,
+	0xBAE9, 0xBE05, 0xBAEA, 0xBE0C, 0xBAEB, 0xBE0D, 0xBAEC, 0xBE10,
+	0xBAED, 0xBE14, 0xBAEE, 0xBE1C, 0xBAEF, 0xBE1D, 0xBAF0, 0xBE1F,
+	0xBAF1, 0xBE44, 0xBAF2, 0xBE45, 0xBAF3, 0xBE48, 0xBAF4, 0xBE4C,
+	0xBAF5, 0xBE4E, 0xBAF6, 0xBE54, 0xBAF7, 0xBE55, 0xBAF8, 0xBE57,
+	0xBAF9, 0xBE59, 0xBAFA, 0xBE5A, 0xBAFB, 0xBE5B, 0xBAFC, 0xBE60,
+	0xBAFD, 0xBE61, 0xBAFE, 0xBE64, 0xBB41, 0xD2FB, 0xBB42, 0xD2FC,
+	0xBB43, 0xD2FD, 0xBB44, 0xD2FE, 0xBB45, 0xD2FF, 0xBB46, 0xD302,
+	0xBB47, 0xD304, 0xBB48, 0xD306, 0xBB49, 0xD307, 0xBB4A, 0xD308,
+	0xBB4B, 0xD309, 0xBB4C, 0xD30A, 0xBB4D, 0xD30B, 0xBB4E, 0xD30F,
+	0xBB4F, 0xD311, 0xBB50, 0xD312, 0xBB51, 0xD313, 0xBB52, 0xD315,
+	0xBB53, 0xD317, 0xBB54, 0xD318, 0xBB55, 0xD319, 0xBB56, 0xD31A,
+	0xBB57, 0xD31B, 0xBB58, 0xD31E, 0xBB59, 0xD322, 0xBB5A, 0xD323,
+	0xBB61, 0xD324, 0xBB62, 0xD326, 0xBB63, 0xD327, 0xBB64, 0xD32A,
+	0xBB65, 0xD32B, 0xBB66, 0xD32D, 0xBB67, 0xD32E, 0xBB68, 0xD32F,
+	0xBB69, 0xD331, 0xBB6A, 0xD332, 0xBB6B, 0xD333, 0xBB6C, 0xD334,
+	0xBB6D, 0xD335, 0xBB6E, 0xD336, 0xBB6F, 0xD337, 0xBB70, 0xD33A,
+	0xBB71, 0xD33E, 0xBB72, 0xD33F, 0xBB73, 0xD340, 0xBB74, 0xD341,
+	0xBB75, 0xD342, 0xBB76, 0xD343, 0xBB77, 0xD346, 0xBB78, 0xD347,
+	0xBB79, 0xD348, 0xBB7A, 0xD349, 0xBB81, 0xD34A, 0xBB82, 0xD34B,
+	0xBB83, 0xD34C, 0xBB84, 0xD34D, 0xBB85, 0xD34E, 0xBB86, 0xD34F,
+	0xBB87, 0xD350, 0xBB88, 0xD351, 0xBB89, 0xD352, 0xBB8A, 0xD353,
+	0xBB8B, 0xD354, 0xBB8C, 0xD355, 0xBB8D, 0xD356, 0xBB8E, 0xD357,
+	0xBB8F, 0xD358, 0xBB90, 0xD359, 0xBB91, 0xD35A, 0xBB92, 0xD35B,
+	0xBB93, 0xD35C, 0xBB94, 0xD35D, 0xBB95, 0xD35E, 0xBB96, 0xD35F,
+	0xBB97, 0xD360, 0xBB98, 0xD361, 0xBB99, 0xD362, 0xBB9A, 0xD363,
+	0xBB9B, 0xD364, 0xBB9C, 0xD365, 0xBB9D, 0xD366, 0xBB9E, 0xD367,
+	0xBB9F, 0xD368, 0xBBA0, 0xD369, 0xBBA1, 0xBE68, 0xBBA2, 0xBE6A,
+	0xBBA3, 0xBE70, 0xBBA4, 0xBE71, 0xBBA5, 0xBE73, 0xBBA6, 0xBE74,
+	0xBBA7, 0xBE75, 0xBBA8, 0xBE7B, 0xBBA9, 0xBE7C, 0xBBAA, 0xBE7D,
+	0xBBAB, 0xBE80, 0xBBAC, 0xBE84, 0xBBAD, 0xBE8C, 0xBBAE, 0xBE8D,
+	0xBBAF, 0xBE8F, 0xBBB0, 0xBE90, 0xBBB1, 0xBE91, 0xBBB2, 0xBE98,
+	0xBBB3, 0xBE99, 0xBBB4, 0xBEA8, 0xBBB5, 0xBED0, 0xBBB6, 0xBED1,
+	0xBBB7, 0xBED4, 0xBBB8, 0xBED7, 0xBBB9, 0xBED8, 0xBBBA, 0xBEE0,
+	0xBBBB, 0xBEE3, 0xBBBC, 0xBEE4, 0xBBBD, 0xBEE5, 0xBBBE, 0xBEEC,
+	0xBBBF, 0xBF01, 0xBBC0, 0xBF08, 0xBBC1, 0xBF09, 0xBBC2, 0xBF18,
+	0xBBC3, 0xBF19, 0xBBC4, 0xBF1B, 0xBBC5, 0xBF1C, 0xBBC6, 0xBF1D,
+	0xBBC7, 0xBF40, 0xBBC8, 0xBF41, 0xBBC9, 0xBF44, 0xBBCA, 0xBF48,
+	0xBBCB, 0xBF50, 0xBBCC, 0xBF51, 0xBBCD, 0xBF55, 0xBBCE, 0xBF94,
+	0xBBCF, 0xBFB0, 0xBBD0, 0xBFC5, 0xBBD1, 0xBFCC, 0xBBD2, 0xBFCD,
+	0xBBD3, 0xBFD0, 0xBBD4, 0xBFD4, 0xBBD5, 0xBFDC, 0xBBD6, 0xBFDF,
+	0xBBD7, 0xBFE1, 0xBBD8, 0xC03C, 0xBBD9, 0xC051, 0xBBDA, 0xC058,
+	0xBBDB, 0xC05C, 0xBBDC, 0xC060, 0xBBDD, 0xC068, 0xBBDE, 0xC069,
+	0xBBDF, 0xC090, 0xBBE0, 0xC091, 0xBBE1, 0xC094, 0xBBE2, 0xC098,
+	0xBBE3, 0xC0A0, 0xBBE4, 0xC0A1, 0xBBE5, 0xC0A3, 0xBBE6, 0xC0A5,
+	0xBBE7, 0xC0AC, 0xBBE8, 0xC0AD, 0xBBE9, 0xC0AF, 0xBBEA, 0xC0B0,
+	0xBBEB, 0xC0B3, 0xBBEC, 0xC0B4, 0xBBED, 0xC0B5, 0xBBEE, 0xC0B6,
+	0xBBEF, 0xC0BC, 0xBBF0, 0xC0BD, 0xBBF1, 0xC0BF, 0xBBF2, 0xC0C0,
+	0xBBF3, 0xC0C1, 0xBBF4, 0xC0C5, 0xBBF5, 0xC0C8, 0xBBF6, 0xC0C9,
+	0xBBF7, 0xC0CC, 0xBBF8, 0xC0D0, 0xBBF9, 0xC0D8, 0xBBFA, 0xC0D9,
+	0xBBFB, 0xC0DB, 0xBBFC, 0xC0DC, 0xBBFD, 0xC0DD, 0xBBFE, 0xC0E4,
+	0xBC41, 0xD36A, 0xBC42, 0xD36B, 0xBC43, 0xD36C, 0xBC44, 0xD36D,
+	0xBC45, 0xD36E, 0xBC46, 0xD36F, 0xBC47, 0xD370, 0xBC48, 0xD371,
+	0xBC49, 0xD372, 0xBC4A, 0xD373, 0xBC4B, 0xD374, 0xBC4C, 0xD375,
+	0xBC4D, 0xD376, 0xBC4E, 0xD377, 0xBC4F, 0xD378, 0xBC50, 0xD379,
+	0xBC51, 0xD37A, 0xBC52, 0xD37B, 0xBC53, 0xD37E, 0xBC54, 0xD37F,
+	0xBC55, 0xD381, 0xBC56, 0xD382, 0xBC57, 0xD383, 0xBC58, 0xD385,
+	0xBC59, 0xD386, 0xBC5A, 0xD387, 0xBC61, 0xD388, 0xBC62, 0xD389,
+	0xBC63, 0xD38A, 0xBC64, 0xD38B, 0xBC65, 0xD38E, 0xBC66, 0xD392,
+	0xBC67, 0xD393, 0xBC68, 0xD394, 0xBC69, 0xD395, 0xBC6A, 0xD396,
+	0xBC6B, 0xD397, 0xBC6C, 0xD39A, 0xBC6D, 0xD39B, 0xBC6E, 0xD39D,
+	0xBC6F, 0xD39E, 0xBC70, 0xD39F, 0xBC71, 0xD3A1, 0xBC72, 0xD3A2,
+	0xBC73, 0xD3A3, 0xBC74, 0xD3A4, 0xBC75, 0xD3A5, 0xBC76, 0xD3A6,
+	0xBC77, 0xD3A7, 0xBC78, 0xD3AA, 0xBC79, 0xD3AC, 0xBC7A, 0xD3AE,
+	0xBC81, 0xD3AF, 0xBC82, 0xD3B0, 0xBC83, 0xD3B1, 0xBC84, 0xD3B2,
+	0xBC85, 0xD3B3, 0xBC86, 0xD3B5, 0xBC87, 0xD3B6, 0xBC88, 0xD3B7,
+	0xBC89, 0xD3B9, 0xBC8A, 0xD3BA, 0xBC8B, 0xD3BB, 0xBC8C, 0xD3BD,
+	0xBC8D, 0xD3BE, 0xBC8E, 0xD3BF, 0xBC8F, 0xD3C0, 0xBC90, 0xD3C1,
+	0xBC91, 0xD3C2, 0xBC92, 0xD3C3, 0xBC93, 0xD3C6, 0xBC94, 0xD3C7,
+	0xBC95, 0xD3CA, 0xBC96, 0xD3CB, 0xBC97, 0xD3CC, 0xBC98, 0xD3CD,
+	0xBC99, 0xD3CE, 0xBC9A, 0xD3CF, 0xBC9B, 0xD3D1, 0xBC9C, 0xD3D2,
+	0xBC9D, 0xD3D3, 0xBC9E, 0xD3D4, 0xBC9F, 0xD3D5, 0xBCA0, 0xD3D6,
+	0xBCA1, 0xC0E5, 0xBCA2, 0xC0E8, 0xBCA3, 0xC0EC, 0xBCA4, 0xC0F4,
+	0xBCA5, 0xC0F5, 0xBCA6, 0xC0F7, 0xBCA7, 0xC0F9, 0xBCA8, 0xC100,
+	0xBCA9, 0xC104, 0xBCAA, 0xC108, 0xBCAB, 0xC110, 0xBCAC, 0xC115,
+	0xBCAD, 0xC11C, 0xBCAE, 0xC11D, 0xBCAF, 0xC11E, 0xBCB0, 0xC11F,
+	0xBCB1, 0xC120, 0xBCB2, 0xC123, 0xBCB3, 0xC124, 0xBCB4, 0xC126,
+	0xBCB5, 0xC127, 0xBCB6, 0xC12C, 0xBCB7, 0xC12D, 0xBCB8, 0xC12F,
+	0xBCB9, 0xC130, 0xBCBA, 0xC131, 0xBCBB, 0xC136, 0xBCBC, 0xC138,
+	0xBCBD, 0xC139, 0xBCBE, 0xC13C, 0xBCBF, 0xC140, 0xBCC0, 0xC148,
+	0xBCC1, 0xC149, 0xBCC2, 0xC14B, 0xBCC3, 0xC14C, 0xBCC4, 0xC14D,
+	0xBCC5, 0xC154, 0xBCC6, 0xC155, 0xBCC7, 0xC158, 0xBCC8, 0xC15C,
+	0xBCC9, 0xC164, 0xBCCA, 0xC165, 0xBCCB, 0xC167, 0xBCCC, 0xC168,
+	0xBCCD, 0xC169, 0xBCCE, 0xC170, 0xBCCF, 0xC174, 0xBCD0, 0xC178,
+	0xBCD1, 0xC185, 0xBCD2, 0xC18C, 0xBCD3, 0xC18D, 0xBCD4, 0xC18E,
+	0xBCD5, 0xC190, 0xBCD6, 0xC194, 0xBCD7, 0xC196, 0xBCD8, 0xC19C,
+	0xBCD9, 0xC19D, 0xBCDA, 0xC19F, 0xBCDB, 0xC1A1, 0xBCDC, 0xC1A5,
+	0xBCDD, 0xC1A8, 0xBCDE, 0xC1A9, 0xBCDF, 0xC1AC, 0xBCE0, 0xC1B0,
+	0xBCE1, 0xC1BD, 0xBCE2, 0xC1C4, 0xBCE3, 0xC1C8, 0xBCE4, 0xC1CC,
+	0xBCE5, 0xC1D4, 0xBCE6, 0xC1D7, 0xBCE7, 0xC1D8, 0xBCE8, 0xC1E0,
+	0xBCE9, 0xC1E4, 0xBCEA, 0xC1E8, 0xBCEB, 0xC1F0, 0xBCEC, 0xC1F1,
+	0xBCED, 0xC1F3, 0xBCEE, 0xC1FC, 0xBCEF, 0xC1FD, 0xBCF0, 0xC200,
+	0xBCF1, 0xC204, 0xBCF2, 0xC20C, 0xBCF3, 0xC20D, 0xBCF4, 0xC20F,
+	0xBCF5, 0xC211, 0xBCF6, 0xC218, 0xBCF7, 0xC219, 0xBCF8, 0xC21C,
+	0xBCF9, 0xC21F, 0xBCFA, 0xC220, 0xBCFB, 0xC228, 0xBCFC, 0xC229,
+	0xBCFD, 0xC22B, 0xBCFE, 0xC22D, 0xBD41, 0xD3D7, 0xBD42, 0xD3D9,
+	0xBD43, 0xD3DA, 0xBD44, 0xD3DB, 0xBD45, 0xD3DC, 0xBD46, 0xD3DD,
+	0xBD47, 0xD3DE, 0xBD48, 0xD3DF, 0xBD49, 0xD3E0, 0xBD4A, 0xD3E2,
+	0xBD4B, 0xD3E4, 0xBD4C, 0xD3E5, 0xBD4D, 0xD3E6, 0xBD4E, 0xD3E7,
+	0xBD4F, 0xD3E8, 0xBD50, 0xD3E9, 0xBD51, 0xD3EA, 0xBD52, 0xD3EB,
+	0xBD53, 0xD3EE, 0xBD54, 0xD3EF, 0xBD55, 0xD3F1, 0xBD56, 0xD3F2,
+	0xBD57, 0xD3F3, 0xBD58, 0xD3F5, 0xBD59, 0xD3F6, 0xBD5A, 0xD3F7,
+	0xBD61, 0xD3F8, 0xBD62, 0xD3F9, 0xBD63, 0xD3FA, 0xBD64, 0xD3FB,
+	0xBD65, 0xD3FE, 0xBD66, 0xD400, 0xBD67, 0xD402, 0xBD68, 0xD403,
+	0xBD69, 0xD404, 0xBD6A, 0xD405, 0xBD6B, 0xD406, 0xBD6C, 0xD407,
+	0xBD6D, 0xD409, 0xBD6E, 0xD40A, 0xBD6F, 0xD40B, 0xBD70, 0xD40C,
+	0xBD71, 0xD40D, 0xBD72, 0xD40E, 0xBD73, 0xD40F, 0xBD74, 0xD410,
+	0xBD75, 0xD411, 0xBD76, 0xD412, 0xBD77, 0xD413, 0xBD78, 0xD414,
+	0xBD79, 0xD415, 0xBD7A, 0xD416, 0xBD81, 0xD417, 0xBD82, 0xD418,
+	0xBD83, 0xD419, 0xBD84, 0xD41A, 0xBD85, 0xD41B, 0xBD86, 0xD41C,
+	0xBD87, 0xD41E, 0xBD88, 0xD41F, 0xBD89, 0xD420, 0xBD8A, 0xD421,
+	0xBD8B, 0xD422, 0xBD8C, 0xD423, 0xBD8D, 0xD424, 0xBD8E, 0xD425,
+	0xBD8F, 0xD426, 0xBD90, 0xD427, 0xBD91, 0xD428, 0xBD92, 0xD429,
+	0xBD93, 0xD42A, 0xBD94, 0xD42B, 0xBD95, 0xD42C, 0xBD96, 0xD42D,
+	0xBD97, 0xD42E, 0xBD98, 0xD42F, 0xBD99, 0xD430, 0xBD9A, 0xD431,
+	0xBD9B, 0xD432, 0xBD9C, 0xD433, 0xBD9D, 0xD434, 0xBD9E, 0xD435,
+	0xBD9F, 0xD436, 0xBDA0, 0xD437, 0xBDA1, 0xC22F, 0xBDA2, 0xC231,
+	0xBDA3, 0xC232, 0xBDA4, 0xC234, 0xBDA5, 0xC248, 0xBDA6, 0xC250,
+	0xBDA7, 0xC251, 0xBDA8, 0xC254, 0xBDA9, 0xC258, 0xBDAA, 0xC260,
+	0xBDAB, 0xC265, 0xBDAC, 0xC26C, 0xBDAD, 0xC26D, 0xBDAE, 0xC270,
+	0xBDAF, 0xC274, 0xBDB0, 0xC27C, 0xBDB1, 0xC27D, 0xBDB2, 0xC27F,
+	0xBDB3, 0xC281, 0xBDB4, 0xC288, 0xBDB5, 0xC289, 0xBDB6, 0xC290,
+	0xBDB7, 0xC298, 0xBDB8, 0xC29B, 0xBDB9, 0xC29D, 0xBDBA, 0xC2A4,
+	0xBDBB, 0xC2A5, 0xBDBC, 0xC2A8, 0xBDBD, 0xC2AC, 0xBDBE, 0xC2AD,
+	0xBDBF, 0xC2B4, 0xBDC0, 0xC2B5, 0xBDC1, 0xC2B7, 0xBDC2, 0xC2B9,
+	0xBDC3, 0xC2DC, 0xBDC4, 0xC2DD, 0xBDC5, 0xC2E0, 0xBDC6, 0xC2E3,
+	0xBDC7, 0xC2E4, 0xBDC8, 0xC2EB, 0xBDC9, 0xC2EC, 0xBDCA, 0xC2ED,
+	0xBDCB, 0xC2EF, 0xBDCC, 0xC2F1, 0xBDCD, 0xC2F6, 0xBDCE, 0xC2F8,
+	0xBDCF, 0xC2F9, 0xBDD0, 0xC2FB, 0xBDD1, 0xC2FC, 0xBDD2, 0xC300,
+	0xBDD3, 0xC308, 0xBDD4, 0xC309, 0xBDD5, 0xC30C, 0xBDD6, 0xC30D,
+	0xBDD7, 0xC313, 0xBDD8, 0xC314, 0xBDD9, 0xC315, 0xBDDA, 0xC318,
+	0xBDDB, 0xC31C, 0xBDDC, 0xC324, 0xBDDD, 0xC325, 0xBDDE, 0xC328,
+	0xBDDF, 0xC329, 0xBDE0, 0xC345, 0xBDE1, 0xC368, 0xBDE2, 0xC369,
+	0xBDE3, 0xC36C, 0xBDE4, 0xC370, 0xBDE5, 0xC372, 0xBDE6, 0xC378,
+	0xBDE7, 0xC379, 0xBDE8, 0xC37C, 0xBDE9, 0xC37D, 0xBDEA, 0xC384,
+	0xBDEB, 0xC388, 0xBDEC, 0xC38C, 0xBDED, 0xC3C0, 0xBDEE, 0xC3D8,
+	0xBDEF, 0xC3D9, 0xBDF0, 0xC3DC, 0xBDF1, 0xC3DF, 0xBDF2, 0xC3E0,
+	0xBDF3, 0xC3E2, 0xBDF4, 0xC3E8, 0xBDF5, 0xC3E9, 0xBDF6, 0xC3ED,
+	0xBDF7, 0xC3F4, 0xBDF8, 0xC3F5, 0xBDF9, 0xC3F8, 0xBDFA, 0xC408,
+	0xBDFB, 0xC410, 0xBDFC, 0xC424, 0xBDFD, 0xC42C, 0xBDFE, 0xC430,
+	0xBE41, 0xD438, 0xBE42, 0xD439, 0xBE43, 0xD43A, 0xBE44, 0xD43B,
+	0xBE45, 0xD43C, 0xBE46, 0xD43D, 0xBE47, 0xD43E, 0xBE48, 0xD43F,
+	0xBE49, 0xD441, 0xBE4A, 0xD442, 0xBE4B, 0xD443, 0xBE4C, 0xD445,
+	0xBE4D, 0xD446, 0xBE4E, 0xD447, 0xBE4F, 0xD448, 0xBE50, 0xD449,
+	0xBE51, 0xD44A, 0xBE52, 0xD44B, 0xBE53, 0xD44C, 0xBE54, 0xD44D,
+	0xBE55, 0xD44E, 0xBE56, 0xD44F, 0xBE57, 0xD450, 0xBE58, 0xD451,
+	0xBE59, 0xD452, 0xBE5A, 0xD453, 0xBE61, 0xD454, 0xBE62, 0xD455,
+	0xBE63, 0xD456, 0xBE64, 0xD457, 0xBE65, 0xD458, 0xBE66, 0xD459,
+	0xBE67, 0xD45A, 0xBE68, 0xD45B, 0xBE69, 0xD45D, 0xBE6A, 0xD45E,
+	0xBE6B, 0xD45F, 0xBE6C, 0xD461, 0xBE6D, 0xD462, 0xBE6E, 0xD463,
+	0xBE6F, 0xD465, 0xBE70, 0xD466, 0xBE71, 0xD467, 0xBE72, 0xD468,
+	0xBE73, 0xD469, 0xBE74, 0xD46A, 0xBE75, 0xD46B, 0xBE76, 0xD46C,
+	0xBE77, 0xD46E, 0xBE78, 0xD470, 0xBE79, 0xD471, 0xBE7A, 0xD472,
+	0xBE81, 0xD473, 0xBE82, 0xD474, 0xBE83, 0xD475, 0xBE84, 0xD476,
+	0xBE85, 0xD477, 0xBE86, 0xD47A, 0xBE87, 0xD47B, 0xBE88, 0xD47D,
+	0xBE89, 0xD47E, 0xBE8A, 0xD481, 0xBE8B, 0xD483, 0xBE8C, 0xD484,
+	0xBE8D, 0xD485, 0xBE8E, 0xD486, 0xBE8F, 0xD487, 0xBE90, 0xD48A,
+	0xBE91, 0xD48C, 0xBE92, 0xD48E, 0xBE93, 0xD48F, 0xBE94, 0xD490,
+	0xBE95, 0xD491, 0xBE96, 0xD492, 0xBE97, 0xD493, 0xBE98, 0xD495,
+	0xBE99, 0xD496, 0xBE9A, 0xD497, 0xBE9B, 0xD498, 0xBE9C, 0xD499,
+	0xBE9D, 0xD49A, 0xBE9E, 0xD49B, 0xBE9F, 0xD49C, 0xBEA0, 0xD49D,
+	0xBEA1, 0xC434, 0xBEA2, 0xC43C, 0xBEA3, 0xC43D, 0xBEA4, 0xC448,
+	0xBEA5, 0xC464, 0xBEA6, 0xC465, 0xBEA7, 0xC468, 0xBEA8, 0xC46C,
+	0xBEA9, 0xC474, 0xBEAA, 0xC475, 0xBEAB, 0xC479, 0xBEAC, 0xC480,
+	0xBEAD, 0xC494, 0xBEAE, 0xC49C, 0xBEAF, 0xC4B8, 0xBEB0, 0xC4BC,
+	0xBEB1, 0xC4E9, 0xBEB2, 0xC4F0, 0xBEB3, 0xC4F1, 0xBEB4, 0xC4F4,
+	0xBEB5, 0xC4F8, 0xBEB6, 0xC4FA, 0xBEB7, 0xC4FF, 0xBEB8, 0xC500,
+	0xBEB9, 0xC501, 0xBEBA, 0xC50C, 0xBEBB, 0xC510, 0xBEBC, 0xC514,
+	0xBEBD, 0xC51C, 0xBEBE, 0xC528, 0xBEBF, 0xC529, 0xBEC0, 0xC52C,
+	0xBEC1, 0xC530, 0xBEC2, 0xC538, 0xBEC3, 0xC539, 0xBEC4, 0xC53B,
+	0xBEC5, 0xC53D, 0xBEC6, 0xC544, 0xBEC7, 0xC545, 0xBEC8, 0xC548,
+	0xBEC9, 0xC549, 0xBECA, 0xC54A, 0xBECB, 0xC54C, 0xBECC, 0xC54D,
+	0xBECD, 0xC54E, 0xBECE, 0xC553, 0xBECF, 0xC554, 0xBED0, 0xC555,
+	0xBED1, 0xC557, 0xBED2, 0xC558, 0xBED3, 0xC559, 0xBED4, 0xC55D,
+	0xBED5, 0xC55E, 0xBED6, 0xC560, 0xBED7, 0xC561, 0xBED8, 0xC564,
+	0xBED9, 0xC568, 0xBEDA, 0xC570, 0xBEDB, 0xC571, 0xBEDC, 0xC573,
+	0xBEDD, 0xC574, 0xBEDE, 0xC575, 0xBEDF, 0xC57C, 0xBEE0, 0xC57D,
+	0xBEE1, 0xC580, 0xBEE2, 0xC584, 0xBEE3, 0xC587, 0xBEE4, 0xC58C,
+	0xBEE5, 0xC58D, 0xBEE6, 0xC58F, 0xBEE7, 0xC591, 0xBEE8, 0xC595,
+	0xBEE9, 0xC597, 0xBEEA, 0xC598, 0xBEEB, 0xC59C, 0xBEEC, 0xC5A0,
+	0xBEED, 0xC5A9, 0xBEEE, 0xC5B4, 0xBEEF, 0xC5B5, 0xBEF0, 0xC5B8,
+	0xBEF1, 0xC5B9, 0xBEF2, 0xC5BB, 0xBEF3, 0xC5BC, 0xBEF4, 0xC5BD,
+	0xBEF5, 0xC5BE, 0xBEF6, 0xC5C4, 0xBEF7, 0xC5C5, 0xBEF8, 0xC5C6,
+	0xBEF9, 0xC5C7, 0xBEFA, 0xC5C8, 0xBEFB, 0xC5C9, 0xBEFC, 0xC5CA,
+	0xBEFD, 0xC5CC, 0xBEFE, 0xC5CE, 0xBF41, 0xD49E, 0xBF42, 0xD49F,
+	0xBF43, 0xD4A0, 0xBF44, 0xD4A1, 0xBF45, 0xD4A2, 0xBF46, 0xD4A3,
+	0xBF47, 0xD4A4, 0xBF48, 0xD4A5, 0xBF49, 0xD4A6, 0xBF4A, 0xD4A7,
+	0xBF4B, 0xD4A8, 0xBF4C, 0xD4AA, 0xBF4D, 0xD4AB, 0xBF4E, 0xD4AC,
+	0xBF4F, 0xD4AD, 0xBF50, 0xD4AE, 0xBF51, 0xD4AF, 0xBF52, 0xD4B0,
+	0xBF53, 0xD4B1, 0xBF54, 0xD4B2, 0xBF55, 0xD4B3, 0xBF56, 0xD4B4,
+	0xBF57, 0xD4B5, 0xBF58, 0xD4B6, 0xBF59, 0xD4B7, 0xBF5A, 0xD4B8,
+	0xBF61, 0xD4B9, 0xBF62, 0xD4BA, 0xBF63, 0xD4BB, 0xBF64, 0xD4BC,
+	0xBF65, 0xD4BD, 0xBF66, 0xD4BE, 0xBF67, 0xD4BF, 0xBF68, 0xD4C0,
+	0xBF69, 0xD4C1, 0xBF6A, 0xD4C2, 0xBF6B, 0xD4C3, 0xBF6C, 0xD4C4,
+	0xBF6D, 0xD4C5, 0xBF6E, 0xD4C6, 0xBF6F, 0xD4C7, 0xBF70, 0xD4C8,
+	0xBF71, 0xD4C9, 0xBF72, 0xD4CA, 0xBF73, 0xD4CB, 0xBF74, 0xD4CD,
+	0xBF75, 0xD4CE, 0xBF76, 0xD4CF, 0xBF77, 0xD4D1, 0xBF78, 0xD4D2,
+	0xBF79, 0xD4D3, 0xBF7A, 0xD4D5, 0xBF81, 0xD4D6, 0xBF82, 0xD4D7,
+	0xBF83, 0xD4D8, 0xBF84, 0xD4D9, 0xBF85, 0xD4DA, 0xBF86, 0xD4DB,
+	0xBF87, 0xD4DD, 0xBF88, 0xD4DE, 0xBF89, 0xD4E0, 0xBF8A, 0xD4E1,
+	0xBF8B, 0xD4E2, 0xBF8C, 0xD4E3, 0xBF8D, 0xD4E4, 0xBF8E, 0xD4E5,
+	0xBF8F, 0xD4E6, 0xBF90, 0xD4E7, 0xBF91, 0xD4E9, 0xBF92, 0xD4EA,
+	0xBF93, 0xD4EB, 0xBF94, 0xD4ED, 0xBF95, 0xD4EE, 0xBF96, 0xD4EF,
+	0xBF97, 0xD4F1, 0xBF98, 0xD4F2, 0xBF99, 0xD4F3, 0xBF9A, 0xD4F4,
+	0xBF9B, 0xD4F5, 0xBF9C, 0xD4F6, 0xBF9D, 0xD4F7, 0xBF9E, 0xD4F9,
+	0xBF9F, 0xD4FA, 0xBFA0, 0xD4FC, 0xBFA1, 0xC5D0, 0xBFA2, 0xC5D1,
+	0xBFA3, 0xC5D4, 0xBFA4, 0xC5D8, 0xBFA5, 0xC5E0, 0xBFA6, 0xC5E1,
+	0xBFA7, 0xC5E3, 0xBFA8, 0xC5E5, 0xBFA9, 0xC5EC, 0xBFAA, 0xC5ED,
+	0xBFAB, 0xC5EE, 0xBFAC, 0xC5F0, 0xBFAD, 0xC5F4, 0xBFAE, 0xC5F6,
+	0xBFAF, 0xC5F7, 0xBFB0, 0xC5FC, 0xBFB1, 0xC5FD, 0xBFB2, 0xC5FE,
+	0xBFB3, 0xC5FF, 0xBFB4, 0xC600, 0xBFB5, 0xC601, 0xBFB6, 0xC605,
+	0xBFB7, 0xC606, 0xBFB8, 0xC607, 0xBFB9, 0xC608, 0xBFBA, 0xC60C,
+	0xBFBB, 0xC610, 0xBFBC, 0xC618, 0xBFBD, 0xC619, 0xBFBE, 0xC61B,
+	0xBFBF, 0xC61C, 0xBFC0, 0xC624, 0xBFC1, 0xC625, 0xBFC2, 0xC628,
+	0xBFC3, 0xC62C, 0xBFC4, 0xC62D, 0xBFC5, 0xC62E, 0xBFC6, 0xC630,
+	0xBFC7, 0xC633, 0xBFC8, 0xC634, 0xBFC9, 0xC635, 0xBFCA, 0xC637,
+	0xBFCB, 0xC639, 0xBFCC, 0xC63B, 0xBFCD, 0xC640, 0xBFCE, 0xC641,
+	0xBFCF, 0xC644, 0xBFD0, 0xC648, 0xBFD1, 0xC650, 0xBFD2, 0xC651,
+	0xBFD3, 0xC653, 0xBFD4, 0xC654, 0xBFD5, 0xC655, 0xBFD6, 0xC65C,
+	0xBFD7, 0xC65D, 0xBFD8, 0xC660, 0xBFD9, 0xC66C, 0xBFDA, 0xC66F,
+	0xBFDB, 0xC671, 0xBFDC, 0xC678, 0xBFDD, 0xC679, 0xBFDE, 0xC67C,
+	0xBFDF, 0xC680, 0xBFE0, 0xC688, 0xBFE1, 0xC689, 0xBFE2, 0xC68B,
+	0xBFE3, 0xC68D, 0xBFE4, 0xC694, 0xBFE5, 0xC695, 0xBFE6, 0xC698,
+	0xBFE7, 0xC69C, 0xBFE8, 0xC6A4, 0xBFE9, 0xC6A5, 0xBFEA, 0xC6A7,
+	0xBFEB, 0xC6A9, 0xBFEC, 0xC6B0, 0xBFED, 0xC6B1, 0xBFEE, 0xC6B4,
+	0xBFEF, 0xC6B8, 0xBFF0, 0xC6B9, 0xBFF1, 0xC6BA, 0xBFF2, 0xC6C0,
+	0xBFF3, 0xC6C1, 0xBFF4, 0xC6C3, 0xBFF5, 0xC6C5, 0xBFF6, 0xC6CC,
+	0xBFF7, 0xC6CD, 0xBFF8, 0xC6D0, 0xBFF9, 0xC6D4, 0xBFFA, 0xC6DC,
+	0xBFFB, 0xC6DD, 0xBFFC, 0xC6E0, 0xBFFD, 0xC6E1, 0xBFFE, 0xC6E8,
+	0xC041, 0xD4FE, 0xC042, 0xD4FF, 0xC043, 0xD500, 0xC044, 0xD501,
+	0xC045, 0xD502, 0xC046, 0xD503, 0xC047, 0xD505, 0xC048, 0xD506,
+	0xC049, 0xD507, 0xC04A, 0xD509, 0xC04B, 0xD50A, 0xC04C, 0xD50B,
+	0xC04D, 0xD50D, 0xC04E, 0xD50E, 0xC04F, 0xD50F, 0xC050, 0xD510,
+	0xC051, 0xD511, 0xC052, 0xD512, 0xC053, 0xD513, 0xC054, 0xD516,
+	0xC055, 0xD518, 0xC056, 0xD519, 0xC057, 0xD51A, 0xC058, 0xD51B,
+	0xC059, 0xD51C, 0xC05A, 0xD51D, 0xC061, 0xD51E, 0xC062, 0xD51F,
+	0xC063, 0xD520, 0xC064, 0xD521, 0xC065, 0xD522, 0xC066, 0xD523,
+	0xC067, 0xD524, 0xC068, 0xD525, 0xC069, 0xD526, 0xC06A, 0xD527,
+	0xC06B, 0xD528, 0xC06C, 0xD529, 0xC06D, 0xD52A, 0xC06E, 0xD52B,
+	0xC06F, 0xD52C, 0xC070, 0xD52D, 0xC071, 0xD52E, 0xC072, 0xD52F,
+	0xC073, 0xD530, 0xC074, 0xD531, 0xC075, 0xD532, 0xC076, 0xD533,
+	0xC077, 0xD534, 0xC078, 0xD535, 0xC079, 0xD536, 0xC07A, 0xD537,
+	0xC081, 0xD538, 0xC082, 0xD539, 0xC083, 0xD53A, 0xC084, 0xD53B,
+	0xC085, 0xD53E, 0xC086, 0xD53F, 0xC087, 0xD541, 0xC088, 0xD542,
+	0xC089, 0xD543, 0xC08A, 0xD545, 0xC08B, 0xD546, 0xC08C, 0xD547,
+	0xC08D, 0xD548, 0xC08E, 0xD549, 0xC08F, 0xD54A, 0xC090, 0xD54B,
+	0xC091, 0xD54E, 0xC092, 0xD550, 0xC093, 0xD552, 0xC094, 0xD553,
+	0xC095, 0xD554, 0xC096, 0xD555, 0xC097, 0xD556, 0xC098, 0xD557,
+	0xC099, 0xD55A, 0xC09A, 0xD55B, 0xC09B, 0xD55D, 0xC09C, 0xD55E,
+	0xC09D, 0xD55F, 0xC09E, 0xD561, 0xC09F, 0xD562, 0xC0A0, 0xD563,
+	0xC0A1, 0xC6E9, 0xC0A2, 0xC6EC, 0xC0A3, 0xC6F0, 0xC0A4, 0xC6F8,
+	0xC0A5, 0xC6F9, 0xC0A6, 0xC6FD, 0xC0A7, 0xC704, 0xC0A8, 0xC705,
+	0xC0A9, 0xC708, 0xC0AA, 0xC70C, 0xC0AB, 0xC714, 0xC0AC, 0xC715,
+	0xC0AD, 0xC717, 0xC0AE, 0xC719, 0xC0AF, 0xC720, 0xC0B0, 0xC721,
+	0xC0B1, 0xC724, 0xC0B2, 0xC728, 0xC0B3, 0xC730, 0xC0B4, 0xC731,
+	0xC0B5, 0xC733, 0xC0B6, 0xC735, 0xC0B7, 0xC737, 0xC0B8, 0xC73C,
+	0xC0B9, 0xC73D, 0xC0BA, 0xC740, 0xC0BB, 0xC744, 0xC0BC, 0xC74A,
+	0xC0BD, 0xC74C, 0xC0BE, 0xC74D, 0xC0BF, 0xC74F, 0xC0C0, 0xC751,
+	0xC0C1, 0xC752, 0xC0C2, 0xC753, 0xC0C3, 0xC754, 0xC0C4, 0xC755,
+	0xC0C5, 0xC756, 0xC0C6, 0xC757, 0xC0C7, 0xC758, 0xC0C8, 0xC75C,
+	0xC0C9, 0xC760, 0xC0CA, 0xC768, 0xC0CB, 0xC76B, 0xC0CC, 0xC774,
+	0xC0CD, 0xC775, 0xC0CE, 0xC778, 0xC0CF, 0xC77C, 0xC0D0, 0xC77D,
+	0xC0D1, 0xC77E, 0xC0D2, 0xC783, 0xC0D3, 0xC784, 0xC0D4, 0xC785,
+	0xC0D5, 0xC787, 0xC0D6, 0xC788, 0xC0D7, 0xC789, 0xC0D8, 0xC78A,
+	0xC0D9, 0xC78E, 0xC0DA, 0xC790, 0xC0DB, 0xC791, 0xC0DC, 0xC794,
+	0xC0DD, 0xC796, 0xC0DE, 0xC797, 0xC0DF, 0xC798, 0xC0E0, 0xC79A,
+	0xC0E1, 0xC7A0, 0xC0E2, 0xC7A1, 0xC0E3, 0xC7A3, 0xC0E4, 0xC7A4,
+	0xC0E5, 0xC7A5, 0xC0E6, 0xC7A6, 0xC0E7, 0xC7AC, 0xC0E8, 0xC7AD,
+	0xC0E9, 0xC7B0, 0xC0EA, 0xC7B4, 0xC0EB, 0xC7BC, 0xC0EC, 0xC7BD,
+	0xC0ED, 0xC7BF, 0xC0EE, 0xC7C0, 0xC0EF, 0xC7C1, 0xC0F0, 0xC7C8,
+	0xC0F1, 0xC7C9, 0xC0F2, 0xC7CC, 0xC0F3, 0xC7CE, 0xC0F4, 0xC7D0,
+	0xC0F5, 0xC7D8, 0xC0F6, 0xC7DD, 0xC0F7, 0xC7E4, 0xC0F8, 0xC7E8,
+	0xC0F9, 0xC7EC, 0xC0FA, 0xC800, 0xC0FB, 0xC801, 0xC0FC, 0xC804,
+	0xC0FD, 0xC808, 0xC0FE, 0xC80A, 0xC141, 0xD564, 0xC142, 0xD566,
+	0xC143, 0xD567, 0xC144, 0xD56A, 0xC145, 0xD56C, 0xC146, 0xD56E,
+	0xC147, 0xD56F, 0xC148, 0xD570, 0xC149, 0xD571, 0xC14A, 0xD572,
+	0xC14B, 0xD573, 0xC14C, 0xD576, 0xC14D, 0xD577, 0xC14E, 0xD579,
+	0xC14F, 0xD57A, 0xC150, 0xD57B, 0xC151, 0xD57D, 0xC152, 0xD57E,
+	0xC153, 0xD57F, 0xC154, 0xD580, 0xC155, 0xD581, 0xC156, 0xD582,
+	0xC157, 0xD583, 0xC158, 0xD586, 0xC159, 0xD58A, 0xC15A, 0xD58B,
+	0xC161, 0xD58C, 0xC162, 0xD58D, 0xC163, 0xD58E, 0xC164, 0xD58F,
+	0xC165, 0xD591, 0xC166, 0xD592, 0xC167, 0xD593, 0xC168, 0xD594,
+	0xC169, 0xD595, 0xC16A, 0xD596, 0xC16B, 0xD597, 0xC16C, 0xD598,
+	0xC16D, 0xD599, 0xC16E, 0xD59A, 0xC16F, 0xD59B, 0xC170, 0xD59C,
+	0xC171, 0xD59D, 0xC172, 0xD59E, 0xC173, 0xD59F, 0xC174, 0xD5A0,
+	0xC175, 0xD5A1, 0xC176, 0xD5A2, 0xC177, 0xD5A3, 0xC178, 0xD5A4,
+	0xC179, 0xD5A6, 0xC17A, 0xD5A7, 0xC181, 0xD5A8, 0xC182, 0xD5A9,
+	0xC183, 0xD5AA, 0xC184, 0xD5AB, 0xC185, 0xD5AC, 0xC186, 0xD5AD,
+	0xC187, 0xD5AE, 0xC188, 0xD5AF, 0xC189, 0xD5B0, 0xC18A, 0xD5B1,
+	0xC18B, 0xD5B2, 0xC18C, 0xD5B3, 0xC18D, 0xD5B4, 0xC18E, 0xD5B5,
+	0xC18F, 0xD5B6, 0xC190, 0xD5B7, 0xC191, 0xD5B8, 0xC192, 0xD5B9,
+	0xC193, 0xD5BA, 0xC194, 0xD5BB, 0xC195, 0xD5BC, 0xC196, 0xD5BD,
+	0xC197, 0xD5BE, 0xC198, 0xD5BF, 0xC199, 0xD5C0, 0xC19A, 0xD5C1,
+	0xC19B, 0xD5C2, 0xC19C, 0xD5C3, 0xC19D, 0xD5C4, 0xC19E, 0xD5C5,
+	0xC19F, 0xD5C6, 0xC1A0, 0xD5C7, 0xC1A1, 0xC810, 0xC1A2, 0xC811,
+	0xC1A3, 0xC813, 0xC1A4, 0xC815, 0xC1A5, 0xC816, 0xC1A6, 0xC81C,
+	0xC1A7, 0xC81D, 0xC1A8, 0xC820, 0xC1A9, 0xC824, 0xC1AA, 0xC82C,
+	0xC1AB, 0xC82D, 0xC1AC, 0xC82F, 0xC1AD, 0xC831, 0xC1AE, 0xC838,
+	0xC1AF, 0xC83C, 0xC1B0, 0xC840, 0xC1B1, 0xC848, 0xC1B2, 0xC849,
+	0xC1B3, 0xC84C, 0xC1B4, 0xC84D, 0xC1B5, 0xC854, 0xC1B6, 0xC870,
+	0xC1B7, 0xC871, 0xC1B8, 0xC874, 0xC1B9, 0xC878, 0xC1BA, 0xC87A,
+	0xC1BB, 0xC880, 0xC1BC, 0xC881, 0xC1BD, 0xC883, 0xC1BE, 0xC885,
+	0xC1BF, 0xC886, 0xC1C0, 0xC887, 0xC1C1, 0xC88B, 0xC1C2, 0xC88C,
+	0xC1C3, 0xC88D, 0xC1C4, 0xC894, 0xC1C5, 0xC89D, 0xC1C6, 0xC89F,
+	0xC1C7, 0xC8A1, 0xC1C8, 0xC8A8, 0xC1C9, 0xC8BC, 0xC1CA, 0xC8BD,
+	0xC1CB, 0xC8C4, 0xC1CC, 0xC8C8, 0xC1CD, 0xC8CC, 0xC1CE, 0xC8D4,
+	0xC1CF, 0xC8D5, 0xC1D0, 0xC8D7, 0xC1D1, 0xC8D9, 0xC1D2, 0xC8E0,
+	0xC1D3, 0xC8E1, 0xC1D4, 0xC8E4, 0xC1D5, 0xC8F5, 0xC1D6, 0xC8FC,
+	0xC1D7, 0xC8FD, 0xC1D8, 0xC900, 0xC1D9, 0xC904, 0xC1DA, 0xC905,
+	0xC1DB, 0xC906, 0xC1DC, 0xC90C, 0xC1DD, 0xC90D, 0xC1DE, 0xC90F,
+	0xC1DF, 0xC911, 0xC1E0, 0xC918, 0xC1E1, 0xC92C, 0xC1E2, 0xC934,
+	0xC1E3, 0xC950, 0xC1E4, 0xC951, 0xC1E5, 0xC954, 0xC1E6, 0xC958,
+	0xC1E7, 0xC960, 0xC1E8, 0xC961, 0xC1E9, 0xC963, 0xC1EA, 0xC96C,
+	0xC1EB, 0xC970, 0xC1EC, 0xC974, 0xC1ED, 0xC97C, 0xC1EE, 0xC988,
+	0xC1EF, 0xC989, 0xC1F0, 0xC98C, 0xC1F1, 0xC990, 0xC1F2, 0xC998,
+	0xC1F3, 0xC999, 0xC1F4, 0xC99B, 0xC1F5, 0xC99D, 0xC1F6, 0xC9C0,
+	0xC1F7, 0xC9C1, 0xC1F8, 0xC9C4, 0xC1F9, 0xC9C7, 0xC1FA, 0xC9C8,
+	0xC1FB, 0xC9CA, 0xC1FC, 0xC9D0, 0xC1FD, 0xC9D1, 0xC1FE, 0xC9D3,
+	0xC241, 0xD5CA, 0xC242, 0xD5CB, 0xC243, 0xD5CD, 0xC244, 0xD5CE,
+	0xC245, 0xD5CF, 0xC246, 0xD5D1, 0xC247, 0xD5D3, 0xC248, 0xD5D4,
+	0xC249, 0xD5D5, 0xC24A, 0xD5D6, 0xC24B, 0xD5D7, 0xC24C, 0xD5DA,
+	0xC24D, 0xD5DC, 0xC24E, 0xD5DE, 0xC24F, 0xD5DF, 0xC250, 0xD5E0,
+	0xC251, 0xD5E1, 0xC252, 0xD5E2, 0xC253, 0xD5E3, 0xC254, 0xD5E6,
+	0xC255, 0xD5E7, 0xC256, 0xD5E9, 0xC257, 0xD5EA, 0xC258, 0xD5EB,
+	0xC259, 0xD5ED, 0xC25A, 0xD5EE, 0xC261, 0xD5EF, 0xC262, 0xD5F0,
+	0xC263, 0xD5F1, 0xC264, 0xD5F2, 0xC265, 0xD5F3, 0xC266, 0xD5F6,
+	0xC267, 0xD5F8, 0xC268, 0xD5FA, 0xC269, 0xD5FB, 0xC26A, 0xD5FC,
+	0xC26B, 0xD5FD, 0xC26C, 0xD5FE, 0xC26D, 0xD5FF, 0xC26E, 0xD602,
+	0xC26F, 0xD603, 0xC270, 0xD605, 0xC271, 0xD606, 0xC272, 0xD607,
+	0xC273, 0xD609, 0xC274, 0xD60A, 0xC275, 0xD60B, 0xC276, 0xD60C,
+	0xC277, 0xD60D, 0xC278, 0xD60E, 0xC279, 0xD60F, 0xC27A, 0xD612,
+	0xC281, 0xD616, 0xC282, 0xD617, 0xC283, 0xD618, 0xC284, 0xD619,
+	0xC285, 0xD61A, 0xC286, 0xD61B, 0xC287, 0xD61D, 0xC288, 0xD61E,
+	0xC289, 0xD61F, 0xC28A, 0xD621, 0xC28B, 0xD622, 0xC28C, 0xD623,
+	0xC28D, 0xD625, 0xC28E, 0xD626, 0xC28F, 0xD627, 0xC290, 0xD628,
+	0xC291, 0xD629, 0xC292, 0xD62A, 0xC293, 0xD62B, 0xC294, 0xD62C,
+	0xC295, 0xD62E, 0xC296, 0xD62F, 0xC297, 0xD630, 0xC298, 0xD631,
+	0xC299, 0xD632, 0xC29A, 0xD633, 0xC29B, 0xD634, 0xC29C, 0xD635,
+	0xC29D, 0xD636, 0xC29E, 0xD637, 0xC29F, 0xD63A, 0xC2A0, 0xD63B,
+	0xC2A1, 0xC9D5, 0xC2A2, 0xC9D6, 0xC2A3, 0xC9D9, 0xC2A4, 0xC9DA,
+	0xC2A5, 0xC9DC, 0xC2A6, 0xC9DD, 0xC2A7, 0xC9E0, 0xC2A8, 0xC9E2,
+	0xC2A9, 0xC9E4, 0xC2AA, 0xC9E7, 0xC2AB, 0xC9EC, 0xC2AC, 0xC9ED,
+	0xC2AD, 0xC9EF, 0xC2AE, 0xC9F0, 0xC2AF, 0xC9F1, 0xC2B0, 0xC9F8,
+	0xC2B1, 0xC9F9, 0xC2B2, 0xC9FC, 0xC2B3, 0xCA00, 0xC2B4, 0xCA08,
+	0xC2B5, 0xCA09, 0xC2B6, 0xCA0B, 0xC2B7, 0xCA0C, 0xC2B8, 0xCA0D,
+	0xC2B9, 0xCA14, 0xC2BA, 0xCA18, 0xC2BB, 0xCA29, 0xC2BC, 0xCA4C,
+	0xC2BD, 0xCA4D, 0xC2BE, 0xCA50, 0xC2BF, 0xCA54, 0xC2C0, 0xCA5C,
+	0xC2C1, 0xCA5D, 0xC2C2, 0xCA5F, 0xC2C3, 0xCA60, 0xC2C4, 0xCA61,
+	0xC2C5, 0xCA68, 0xC2C6, 0xCA7D, 0xC2C7, 0xCA84, 0xC2C8, 0xCA98,
+	0xC2C9, 0xCABC, 0xC2CA, 0xCABD, 0xC2CB, 0xCAC0, 0xC2CC, 0xCAC4,
+	0xC2CD, 0xCACC, 0xC2CE, 0xCACD, 0xC2CF, 0xCACF, 0xC2D0, 0xCAD1,
+	0xC2D1, 0xCAD3, 0xC2D2, 0xCAD8, 0xC2D3, 0xCAD9, 0xC2D4, 0xCAE0,
+	0xC2D5, 0xCAEC, 0xC2D6, 0xCAF4, 0xC2D7, 0xCB08, 0xC2D8, 0xCB10,
+	0xC2D9, 0xCB14, 0xC2DA, 0xCB18, 0xC2DB, 0xCB20, 0xC2DC, 0xCB21,
+	0xC2DD, 0xCB41, 0xC2DE, 0xCB48, 0xC2DF, 0xCB49, 0xC2E0, 0xCB4C,
+	0xC2E1, 0xCB50, 0xC2E2, 0xCB58, 0xC2E3, 0xCB59, 0xC2E4, 0xCB5D,
+	0xC2E5, 0xCB64, 0xC2E6, 0xCB78, 0xC2E7, 0xCB79, 0xC2E8, 0xCB9C,
+	0xC2E9, 0xCBB8, 0xC2EA, 0xCBD4, 0xC2EB, 0xCBE4, 0xC2EC, 0xCBE7,
+	0xC2ED, 0xCBE9, 0xC2EE, 0xCC0C, 0xC2EF, 0xCC0D, 0xC2F0, 0xCC10,
+	0xC2F1, 0xCC14, 0xC2F2, 0xCC1C, 0xC2F3, 0xCC1D, 0xC2F4, 0xCC21,
+	0xC2F5, 0xCC22, 0xC2F6, 0xCC27, 0xC2F7, 0xCC28, 0xC2F8, 0xCC29,
+	0xC2F9, 0xCC2C, 0xC2FA, 0xCC2E, 0xC2FB, 0xCC30, 0xC2FC, 0xCC38,
+	0xC2FD, 0xCC39, 0xC2FE, 0xCC3B, 0xC341, 0xD63D, 0xC342, 0xD63E,
+	0xC343, 0xD63F, 0xC344, 0xD641, 0xC345, 0xD642, 0xC346, 0xD643,
+	0xC347, 0xD644, 0xC348, 0xD646, 0xC349, 0xD647, 0xC34A, 0xD64A,
+	0xC34B, 0xD64C, 0xC34C, 0xD64E, 0xC34D, 0xD64F, 0xC34E, 0xD650,
+	0xC34F, 0xD652, 0xC350, 0xD653, 0xC351, 0xD656, 0xC352, 0xD657,
+	0xC353, 0xD659, 0xC354, 0xD65A, 0xC355, 0xD65B, 0xC356, 0xD65D,
+	0xC357, 0xD65E, 0xC358, 0xD65F, 0xC359, 0xD660, 0xC35A, 0xD661,
+	0xC361, 0xD662, 0xC362, 0xD663, 0xC363, 0xD664, 0xC364, 0xD665,
+	0xC365, 0xD666, 0xC366, 0xD668, 0xC367, 0xD66A, 0xC368, 0xD66B,
+	0xC369, 0xD66C, 0xC36A, 0xD66D, 0xC36B, 0xD66E, 0xC36C, 0xD66F,
+	0xC36D, 0xD672, 0xC36E, 0xD673, 0xC36F, 0xD675, 0xC370, 0xD676,
+	0xC371, 0xD677, 0xC372, 0xD678, 0xC373, 0xD679, 0xC374, 0xD67A,
+	0xC375, 0xD67B, 0xC376, 0xD67C, 0xC377, 0xD67D, 0xC378, 0xD67E,
+	0xC379, 0xD67F, 0xC37A, 0xD680, 0xC381, 0xD681, 0xC382, 0xD682,
+	0xC383, 0xD684, 0xC384, 0xD686, 0xC385, 0xD687, 0xC386, 0xD688,
+	0xC387, 0xD689, 0xC388, 0xD68A, 0xC389, 0xD68B, 0xC38A, 0xD68E,
+	0xC38B, 0xD68F, 0xC38C, 0xD691, 0xC38D, 0xD692, 0xC38E, 0xD693,
+	0xC38F, 0xD695, 0xC390, 0xD696, 0xC391, 0xD697, 0xC392, 0xD698,
+	0xC393, 0xD699, 0xC394, 0xD69A, 0xC395, 0xD69B, 0xC396, 0xD69C,
+	0xC397, 0xD69E, 0xC398, 0xD6A0, 0xC399, 0xD6A2, 0xC39A, 0xD6A3,
+	0xC39B, 0xD6A4, 0xC39C, 0xD6A5, 0xC39D, 0xD6A6, 0xC39E, 0xD6A7,
+	0xC39F, 0xD6A9, 0xC3A0, 0xD6AA, 0xC3A1, 0xCC3C, 0xC3A2, 0xCC3D,
+	0xC3A3, 0xCC3E, 0xC3A4, 0xCC44, 0xC3A5, 0xCC45, 0xC3A6, 0xCC48,
+	0xC3A7, 0xCC4C, 0xC3A8, 0xCC54, 0xC3A9, 0xCC55, 0xC3AA, 0xCC57,
+	0xC3AB, 0xCC58, 0xC3AC, 0xCC59, 0xC3AD, 0xCC60, 0xC3AE, 0xCC64,
+	0xC3AF, 0xCC66, 0xC3B0, 0xCC68, 0xC3B1, 0xCC70, 0xC3B2, 0xCC75,
+	0xC3B3, 0xCC98, 0xC3B4, 0xCC99, 0xC3B5, 0xCC9C, 0xC3B6, 0xCCA0,
+	0xC3B7, 0xCCA8, 0xC3B8, 0xCCA9, 0xC3B9, 0xCCAB, 0xC3BA, 0xCCAC,
+	0xC3BB, 0xCCAD, 0xC3BC, 0xCCB4, 0xC3BD, 0xCCB5, 0xC3BE, 0xCCB8,
+	0xC3BF, 0xCCBC, 0xC3C0, 0xCCC4, 0xC3C1, 0xCCC5, 0xC3C2, 0xCCC7,
+	0xC3C3, 0xCCC9, 0xC3C4, 0xCCD0, 0xC3C5, 0xCCD4, 0xC3C6, 0xCCE4,
+	0xC3C7, 0xCCEC, 0xC3C8, 0xCCF0, 0xC3C9, 0xCD01, 0xC3CA, 0xCD08,
+	0xC3CB, 0xCD09, 0xC3CC, 0xCD0C, 0xC3CD, 0xCD10, 0xC3CE, 0xCD18,
+	0xC3CF, 0xCD19, 0xC3D0, 0xCD1B, 0xC3D1, 0xCD1D, 0xC3D2, 0xCD24,
+	0xC3D3, 0xCD28, 0xC3D4, 0xCD2C, 0xC3D5, 0xCD39, 0xC3D6, 0xCD5C,
+	0xC3D7, 0xCD60, 0xC3D8, 0xCD64, 0xC3D9, 0xCD6C, 0xC3DA, 0xCD6D,
+	0xC3DB, 0xCD6F, 0xC3DC, 0xCD71, 0xC3DD, 0xCD78, 0xC3DE, 0xCD88,
+	0xC3DF, 0xCD94, 0xC3E0, 0xCD95, 0xC3E1, 0xCD98, 0xC3E2, 0xCD9C,
+	0xC3E3, 0xCDA4, 0xC3E4, 0xCDA5, 0xC3E5, 0xCDA7, 0xC3E6, 0xCDA9,
+	0xC3E7, 0xCDB0, 0xC3E8, 0xCDC4, 0xC3E9, 0xCDCC, 0xC3EA, 0xCDD0,
+	0xC3EB, 0xCDE8, 0xC3EC, 0xCDEC, 0xC3ED, 0xCDF0, 0xC3EE, 0xCDF8,
+	0xC3EF, 0xCDF9, 0xC3F0, 0xCDFB, 0xC3F1, 0xCDFD, 0xC3F2, 0xCE04,
+	0xC3F3, 0xCE08, 0xC3F4, 0xCE0C, 0xC3F5, 0xCE14, 0xC3F6, 0xCE19,
+	0xC3F7, 0xCE20, 0xC3F8, 0xCE21, 0xC3F9, 0xCE24, 0xC3FA, 0xCE28,
+	0xC3FB, 0xCE30, 0xC3FC, 0xCE31, 0xC3FD, 0xCE33, 0xC3FE, 0xCE35,
+	0xC441, 0xD6AB, 0xC442, 0xD6AD, 0xC443, 0xD6AE, 0xC444, 0xD6AF,
+	0xC445, 0xD6B1, 0xC446, 0xD6B2, 0xC447, 0xD6B3, 0xC448, 0xD6B4,
+	0xC449, 0xD6B5, 0xC44A, 0xD6B6, 0xC44B, 0xD6B7, 0xC44C, 0xD6B8,
+	0xC44D, 0xD6BA, 0xC44E, 0xD6BC, 0xC44F, 0xD6BD, 0xC450, 0xD6BE,
+	0xC451, 0xD6BF, 0xC452, 0xD6C0, 0xC453, 0xD6C1, 0xC454, 0xD6C2,
+	0xC455, 0xD6C3, 0xC456, 0xD6C6, 0xC457, 0xD6C7, 0xC458, 0xD6C9,
+	0xC459, 0xD6CA, 0xC45A, 0xD6CB, 0xC461, 0xD6CD, 0xC462, 0xD6CE,
+	0xC463, 0xD6CF, 0xC464, 0xD6D0, 0xC465, 0xD6D2, 0xC466, 0xD6D3,
+	0xC467, 0xD6D5, 0xC468, 0xD6D6, 0xC469, 0xD6D8, 0xC46A, 0xD6DA,
+	0xC46B, 0xD6DB, 0xC46C, 0xD6DC, 0xC46D, 0xD6DD, 0xC46E, 0xD6DE,
+	0xC46F, 0xD6DF, 0xC470, 0xD6E1, 0xC471, 0xD6E2, 0xC472, 0xD6E3,
+	0xC473, 0xD6E5, 0xC474, 0xD6E6, 0xC475, 0xD6E7, 0xC476, 0xD6E9,
+	0xC477, 0xD6EA, 0xC478, 0xD6EB, 0xC479, 0xD6EC, 0xC47A, 0xD6ED,
+	0xC481, 0xD6EE, 0xC482, 0xD6EF, 0xC483, 0xD6F1, 0xC484, 0xD6F2,
+	0xC485, 0xD6F3, 0xC486, 0xD6F4, 0xC487, 0xD6F6, 0xC488, 0xD6F7,
+	0xC489, 0xD6F8, 0xC48A, 0xD6F9, 0xC48B, 0xD6FA, 0xC48C, 0xD6FB,
+	0xC48D, 0xD6FE, 0xC48E, 0xD6FF, 0xC48F, 0xD701, 0xC490, 0xD702,
+	0xC491, 0xD703, 0xC492, 0xD705, 0xC493, 0xD706, 0xC494, 0xD707,
+	0xC495, 0xD708, 0xC496, 0xD709, 0xC497, 0xD70A, 0xC498, 0xD70B,
+	0xC499, 0xD70C, 0xC49A, 0xD70D, 0xC49B, 0xD70E, 0xC49C, 0xD70F,
+	0xC49D, 0xD710, 0xC49E, 0xD712, 0xC49F, 0xD713, 0xC4A0, 0xD714,
+	0xC4A1, 0xCE58, 0xC4A2, 0xCE59, 0xC4A3, 0xCE5C, 0xC4A4, 0xCE5F,
+	0xC4A5, 0xCE60, 0xC4A6, 0xCE61, 0xC4A7, 0xCE68, 0xC4A8, 0xCE69,
+	0xC4A9, 0xCE6B, 0xC4AA, 0xCE6D, 0xC4AB, 0xCE74, 0xC4AC, 0xCE75,
+	0xC4AD, 0xCE78, 0xC4AE, 0xCE7C, 0xC4AF, 0xCE84, 0xC4B0, 0xCE85,
+	0xC4B1, 0xCE87, 0xC4B2, 0xCE89, 0xC4B3, 0xCE90, 0xC4B4, 0xCE91,
+	0xC4B5, 0xCE94, 0xC4B6, 0xCE98, 0xC4B7, 0xCEA0, 0xC4B8, 0xCEA1,
+	0xC4B9, 0xCEA3, 0xC4BA, 0xCEA4, 0xC4BB, 0xCEA5, 0xC4BC, 0xCEAC,
+	0xC4BD, 0xCEAD, 0xC4BE, 0xCEC1, 0xC4BF, 0xCEE4, 0xC4C0, 0xCEE5,
+	0xC4C1, 0xCEE8, 0xC4C2, 0xCEEB, 0xC4C3, 0xCEEC, 0xC4C4, 0xCEF4,
+	0xC4C5, 0xCEF5, 0xC4C6, 0xCEF7, 0xC4C7, 0xCEF8, 0xC4C8, 0xCEF9,
+	0xC4C9, 0xCF00, 0xC4CA, 0xCF01, 0xC4CB, 0xCF04, 0xC4CC, 0xCF08,
+	0xC4CD, 0xCF10, 0xC4CE, 0xCF11, 0xC4CF, 0xCF13, 0xC4D0, 0xCF15,
+	0xC4D1, 0xCF1C, 0xC4D2, 0xCF20, 0xC4D3, 0xCF24, 0xC4D4, 0xCF2C,
+	0xC4D5, 0xCF2D, 0xC4D6, 0xCF2F, 0xC4D7, 0xCF30, 0xC4D8, 0xCF31,
+	0xC4D9, 0xCF38, 0xC4DA, 0xCF54, 0xC4DB, 0xCF55, 0xC4DC, 0xCF58,
+	0xC4DD, 0xCF5C, 0xC4DE, 0xCF64, 0xC4DF, 0xCF65, 0xC4E0, 0xCF67,
+	0xC4E1, 0xCF69, 0xC4E2, 0xCF70, 0xC4E3, 0xCF71, 0xC4E4, 0xCF74,
+	0xC4E5, 0xCF78, 0xC4E6, 0xCF80, 0xC4E7, 0xCF85, 0xC4E8, 0xCF8C,
+	0xC4E9, 0xCFA1, 0xC4EA, 0xCFA8, 0xC4EB, 0xCFB0, 0xC4EC, 0xCFC4,
+	0xC4ED, 0xCFE0, 0xC4EE, 0xCFE1, 0xC4EF, 0xCFE4, 0xC4F0, 0xCFE8,
+	0xC4F1, 0xCFF0, 0xC4F2, 0xCFF1, 0xC4F3, 0xCFF3, 0xC4F4, 0xCFF5,
+	0xC4F5, 0xCFFC, 0xC4F6, 0xD000, 0xC4F7, 0xD004, 0xC4F8, 0xD011,
+	0xC4F9, 0xD018, 0xC4FA, 0xD02D, 0xC4FB, 0xD034, 0xC4FC, 0xD035,
+	0xC4FD, 0xD038, 0xC4FE, 0xD03C, 0xC541, 0xD715, 0xC542, 0xD716,
+	0xC543, 0xD717, 0xC544, 0xD71A, 0xC545, 0xD71B, 0xC546, 0xD71D,
+	0xC547, 0xD71E, 0xC548, 0xD71F, 0xC549, 0xD721, 0xC54A, 0xD722,
+	0xC54B, 0xD723, 0xC54C, 0xD724, 0xC54D, 0xD725, 0xC54E, 0xD726,
+	0xC54F, 0xD727, 0xC550, 0xD72A, 0xC551, 0xD72C, 0xC552, 0xD72E,
+	0xC553, 0xD72F, 0xC554, 0xD730, 0xC555, 0xD731, 0xC556, 0xD732,
+	0xC557, 0xD733, 0xC558, 0xD736, 0xC559, 0xD737, 0xC55A, 0xD739,
+	0xC561, 0xD73A, 0xC562, 0xD73B, 0xC563, 0xD73D, 0xC564, 0xD73E,
+	0xC565, 0xD73F, 0xC566, 0xD740, 0xC567, 0xD741, 0xC568, 0xD742,
+	0xC569, 0xD743, 0xC56A, 0xD745, 0xC56B, 0xD746, 0xC56C, 0xD748,
+	0xC56D, 0xD74A, 0xC56E, 0xD74B, 0xC56F, 0xD74C, 0xC570, 0xD74D,
+	0xC571, 0xD74E, 0xC572, 0xD74F, 0xC573, 0xD752, 0xC574, 0xD753,
+	0xC575, 0xD755, 0xC576, 0xD75A, 0xC577, 0xD75B, 0xC578, 0xD75C,
+	0xC579, 0xD75D, 0xC57A, 0xD75E, 0xC581, 0xD75F, 0xC582, 0xD762,
+	0xC583, 0xD764, 0xC584, 0xD766, 0xC585, 0xD767, 0xC586, 0xD768,
+	0xC587, 0xD76A, 0xC588, 0xD76B, 0xC589, 0xD76D, 0xC58A, 0xD76E,
+	0xC58B, 0xD76F, 0xC58C, 0xD771, 0xC58D, 0xD772, 0xC58E, 0xD773,
+	0xC58F, 0xD775, 0xC590, 0xD776, 0xC591, 0xD777, 0xC592, 0xD778,
+	0xC593, 0xD779, 0xC594, 0xD77A, 0xC595, 0xD77B, 0xC596, 0xD77E,
+	0xC597, 0xD77F, 0xC598, 0xD780, 0xC599, 0xD782, 0xC59A, 0xD783,
+	0xC59B, 0xD784, 0xC59C, 0xD785, 0xC59D, 0xD786, 0xC59E, 0xD787,
+	0xC59F, 0xD78A, 0xC5A0, 0xD78B, 0xC5A1, 0xD044, 0xC5A2, 0xD045,
+	0xC5A3, 0xD047, 0xC5A4, 0xD049, 0xC5A5, 0xD050, 0xC5A6, 0xD054,
+	0xC5A7, 0xD058, 0xC5A8, 0xD060, 0xC5A9, 0xD06C, 0xC5AA, 0xD06D,
+	0xC5AB, 0xD070, 0xC5AC, 0xD074, 0xC5AD, 0xD07C, 0xC5AE, 0xD07D,
+	0xC5AF, 0xD081, 0xC5B0, 0xD0A4, 0xC5B1, 0xD0A5, 0xC5B2, 0xD0A8,
+	0xC5B3, 0xD0AC, 0xC5B4, 0xD0B4, 0xC5B5, 0xD0B5, 0xC5B6, 0xD0B7,
+	0xC5B7, 0xD0B9, 0xC5B8, 0xD0C0, 0xC5B9, 0xD0C1, 0xC5BA, 0xD0C4,
+	0xC5BB, 0xD0C8, 0xC5BC, 0xD0C9, 0xC5BD, 0xD0D0, 0xC5BE, 0xD0D1,
+	0xC5BF, 0xD0D3, 0xC5C0, 0xD0D4, 0xC5C1, 0xD0D5, 0xC5C2, 0xD0DC,
+	0xC5C3, 0xD0DD, 0xC5C4, 0xD0E0, 0xC5C5, 0xD0E4, 0xC5C6, 0xD0EC,
+	0xC5C7, 0xD0ED, 0xC5C8, 0xD0EF, 0xC5C9, 0xD0F0, 0xC5CA, 0xD0F1,
+	0xC5CB, 0xD0F8, 0xC5CC, 0xD10D, 0xC5CD, 0xD130, 0xC5CE, 0xD131,
+	0xC5CF, 0xD134, 0xC5D0, 0xD138, 0xC5D1, 0xD13A, 0xC5D2, 0xD140,
+	0xC5D3, 0xD141, 0xC5D4, 0xD143, 0xC5D5, 0xD144, 0xC5D6, 0xD145,
+	0xC5D7, 0xD14C, 0xC5D8, 0xD14D, 0xC5D9, 0xD150, 0xC5DA, 0xD154,
+	0xC5DB, 0xD15C, 0xC5DC, 0xD15D, 0xC5DD, 0xD15F, 0xC5DE, 0xD161,
+	0xC5DF, 0xD168, 0xC5E0, 0xD16C, 0xC5E1, 0xD17C, 0xC5E2, 0xD184,
+	0xC5E3, 0xD188, 0xC5E4, 0xD1A0, 0xC5E5, 0xD1A1, 0xC5E6, 0xD1A4,
+	0xC5E7, 0xD1A8, 0xC5E8, 0xD1B0, 0xC5E9, 0xD1B1, 0xC5EA, 0xD1B3,
+	0xC5EB, 0xD1B5, 0xC5EC, 0xD1BA, 0xC5ED, 0xD1BC, 0xC5EE, 0xD1C0,
+	0xC5EF, 0xD1D8, 0xC5F0, 0xD1F4, 0xC5F1, 0xD1F8, 0xC5F2, 0xD207,
+	0xC5F3, 0xD209, 0xC5F4, 0xD210, 0xC5F5, 0xD22C, 0xC5F6, 0xD22D,
+	0xC5F7, 0xD230, 0xC5F8, 0xD234, 0xC5F9, 0xD23C, 0xC5FA, 0xD23D,
+	0xC5FB, 0xD23F, 0xC5FC, 0xD241, 0xC5FD, 0xD248, 0xC5FE, 0xD25C,
+	0xC641, 0xD78D, 0xC642, 0xD78E, 0xC643, 0xD78F, 0xC644, 0xD791,
+	0xC645, 0xD792, 0xC646, 0xD793, 0xC647, 0xD794, 0xC648, 0xD795,
+	0xC649, 0xD796, 0xC64A, 0xD797, 0xC64B, 0xD79A, 0xC64C, 0xD79C,
+	0xC64D, 0xD79E, 0xC64E, 0xD79F, 0xC64F, 0xD7A0, 0xC650, 0xD7A1,
+	0xC651, 0xD7A2, 0xC652, 0xD7A3, 0xC6A1, 0xD264, 0xC6A2, 0xD280,
+	0xC6A3, 0xD281, 0xC6A4, 0xD284, 0xC6A5, 0xD288, 0xC6A6, 0xD290,
+	0xC6A7, 0xD291, 0xC6A8, 0xD295, 0xC6A9, 0xD29C, 0xC6AA, 0xD2A0,
+	0xC6AB, 0xD2A4, 0xC6AC, 0xD2AC, 0xC6AD, 0xD2B1, 0xC6AE, 0xD2B8,
+	0xC6AF, 0xD2B9, 0xC6B0, 0xD2BC, 0xC6B1, 0xD2BF, 0xC6B2, 0xD2C0,
+	0xC6B3, 0xD2C2, 0xC6B4, 0xD2C8, 0xC6B5, 0xD2C9, 0xC6B6, 0xD2CB,
+	0xC6B7, 0xD2D4, 0xC6B8, 0xD2D8, 0xC6B9, 0xD2DC, 0xC6BA, 0xD2E4,
+	0xC6BB, 0xD2E5, 0xC6BC, 0xD2F0, 0xC6BD, 0xD2F1, 0xC6BE, 0xD2F4,
+	0xC6BF, 0xD2F8, 0xC6C0, 0xD300, 0xC6C1, 0xD301, 0xC6C2, 0xD303,
+	0xC6C3, 0xD305, 0xC6C4, 0xD30C, 0xC6C5, 0xD30D, 0xC6C6, 0xD30E,
+	0xC6C7, 0xD310, 0xC6C8, 0xD314, 0xC6C9, 0xD316, 0xC6CA, 0xD31C,
+	0xC6CB, 0xD31D, 0xC6CC, 0xD31F, 0xC6CD, 0xD320, 0xC6CE, 0xD321,
+	0xC6CF, 0xD325, 0xC6D0, 0xD328, 0xC6D1, 0xD329, 0xC6D2, 0xD32C,
+	0xC6D3, 0xD330, 0xC6D4, 0xD338, 0xC6D5, 0xD339, 0xC6D6, 0xD33B,
+	0xC6D7, 0xD33C, 0xC6D8, 0xD33D, 0xC6D9, 0xD344, 0xC6DA, 0xD345,
+	0xC6DB, 0xD37C, 0xC6DC, 0xD37D, 0xC6DD, 0xD380, 0xC6DE, 0xD384,
+	0xC6DF, 0xD38C, 0xC6E0, 0xD38D, 0xC6E1, 0xD38F, 0xC6E2, 0xD390,
+	0xC6E3, 0xD391, 0xC6E4, 0xD398, 0xC6E5, 0xD399, 0xC6E6, 0xD39C,
+	0xC6E7, 0xD3A0, 0xC6E8, 0xD3A8, 0xC6E9, 0xD3A9, 0xC6EA, 0xD3AB,
+	0xC6EB, 0xD3AD, 0xC6EC, 0xD3B4, 0xC6ED, 0xD3B8, 0xC6EE, 0xD3BC,
+	0xC6EF, 0xD3C4, 0xC6F0, 0xD3C5, 0xC6F1, 0xD3C8, 0xC6F2, 0xD3C9,
+	0xC6F3, 0xD3D0, 0xC6F4, 0xD3D8, 0xC6F5, 0xD3E1, 0xC6F6, 0xD3E3,
+	0xC6F7, 0xD3EC, 0xC6F8, 0xD3ED, 0xC6F9, 0xD3F0, 0xC6FA, 0xD3F4,
+	0xC6FB, 0xD3FC, 0xC6FC, 0xD3FD, 0xC6FD, 0xD3FF, 0xC6FE, 0xD401,
+	0xC7A1, 0xD408, 0xC7A2, 0xD41D, 0xC7A3, 0xD440, 0xC7A4, 0xD444,
+	0xC7A5, 0xD45C, 0xC7A6, 0xD460, 0xC7A7, 0xD464, 0xC7A8, 0xD46D,
+	0xC7A9, 0xD46F, 0xC7AA, 0xD478, 0xC7AB, 0xD479, 0xC7AC, 0xD47C,
+	0xC7AD, 0xD47F, 0xC7AE, 0xD480, 0xC7AF, 0xD482, 0xC7B0, 0xD488,
+	0xC7B1, 0xD489, 0xC7B2, 0xD48B, 0xC7B3, 0xD48D, 0xC7B4, 0xD494,
+	0xC7B5, 0xD4A9, 0xC7B6, 0xD4CC, 0xC7B7, 0xD4D0, 0xC7B8, 0xD4D4,
+	0xC7B9, 0xD4DC, 0xC7BA, 0xD4DF, 0xC7BB, 0xD4E8, 0xC7BC, 0xD4EC,
+	0xC7BD, 0xD4F0, 0xC7BE, 0xD4F8, 0xC7BF, 0xD4FB, 0xC7C0, 0xD4FD,
+	0xC7C1, 0xD504, 0xC7C2, 0xD508, 0xC7C3, 0xD50C, 0xC7C4, 0xD514,
+	0xC7C5, 0xD515, 0xC7C6, 0xD517, 0xC7C7, 0xD53C, 0xC7C8, 0xD53D,
+	0xC7C9, 0xD540, 0xC7CA, 0xD544, 0xC7CB, 0xD54C, 0xC7CC, 0xD54D,
+	0xC7CD, 0xD54F, 0xC7CE, 0xD551, 0xC7CF, 0xD558, 0xC7D0, 0xD559,
+	0xC7D1, 0xD55C, 0xC7D2, 0xD560, 0xC7D3, 0xD565, 0xC7D4, 0xD568,
+	0xC7D5, 0xD569, 0xC7D6, 0xD56B, 0xC7D7, 0xD56D, 0xC7D8, 0xD574,
+	0xC7D9, 0xD575, 0xC7DA, 0xD578, 0xC7DB, 0xD57C, 0xC7DC, 0xD584,
+	0xC7DD, 0xD585, 0xC7DE, 0xD587, 0xC7DF, 0xD588, 0xC7E0, 0xD589,
+	0xC7E1, 0xD590, 0xC7E2, 0xD5A5, 0xC7E3, 0xD5C8, 0xC7E4, 0xD5C9,
+	0xC7E5, 0xD5CC, 0xC7E6, 0xD5D0, 0xC7E7, 0xD5D2, 0xC7E8, 0xD5D8,
+	0xC7E9, 0xD5D9, 0xC7EA, 0xD5DB, 0xC7EB, 0xD5DD, 0xC7EC, 0xD5E4,
+	0xC7ED, 0xD5E5, 0xC7EE, 0xD5E8, 0xC7EF, 0xD5EC, 0xC7F0, 0xD5F4,
+	0xC7F1, 0xD5F5, 0xC7F2, 0xD5F7, 0xC7F3, 0xD5F9, 0xC7F4, 0xD600,
+	0xC7F5, 0xD601, 0xC7F6, 0xD604, 0xC7F7, 0xD608, 0xC7F8, 0xD610,
+	0xC7F9, 0xD611, 0xC7FA, 0xD613, 0xC7FB, 0xD614, 0xC7FC, 0xD615,
+	0xC7FD, 0xD61C, 0xC7FE, 0xD620, 0xC8A1, 0xD624, 0xC8A2, 0xD62D,
+	0xC8A3, 0xD638, 0xC8A4, 0xD639, 0xC8A5, 0xD63C, 0xC8A6, 0xD640,
+	0xC8A7, 0xD645, 0xC8A8, 0xD648, 0xC8A9, 0xD649, 0xC8AA, 0xD64B,
+	0xC8AB, 0xD64D, 0xC8AC, 0xD651, 0xC8AD, 0xD654, 0xC8AE, 0xD655,
+	0xC8AF, 0xD658, 0xC8B0, 0xD65C, 0xC8B1, 0xD667, 0xC8B2, 0xD669,
+	0xC8B3, 0xD670, 0xC8B4, 0xD671, 0xC8B5, 0xD674, 0xC8B6, 0xD683,
+	0xC8B7, 0xD685, 0xC8B8, 0xD68C, 0xC8B9, 0xD68D, 0xC8BA, 0xD690,
+	0xC8BB, 0xD694, 0xC8BC, 0xD69D, 0xC8BD, 0xD69F, 0xC8BE, 0xD6A1,
+	0xC8BF, 0xD6A8, 0xC8C0, 0xD6AC, 0xC8C1, 0xD6B0, 0xC8C2, 0xD6B9,
+	0xC8C3, 0xD6BB, 0xC8C4, 0xD6C4, 0xC8C5, 0xD6C5, 0xC8C6, 0xD6C8,
+	0xC8C7, 0xD6CC, 0xC8C8, 0xD6D1, 0xC8C9, 0xD6D4, 0xC8CA, 0xD6D7,
+	0xC8CB, 0xD6D9, 0xC8CC, 0xD6E0, 0xC8CD, 0xD6E4, 0xC8CE, 0xD6E8,
+	0xC8CF, 0xD6F0, 0xC8D0, 0xD6F5, 0xC8D1, 0xD6FC, 0xC8D2, 0xD6FD,
+	0xC8D3, 0xD700, 0xC8D4, 0xD704, 0xC8D5, 0xD711, 0xC8D6, 0xD718,
+	0xC8D7, 0xD719, 0xC8D8, 0xD71C, 0xC8D9, 0xD720, 0xC8DA, 0xD728,
+	0xC8DB, 0xD729, 0xC8DC, 0xD72B, 0xC8DD, 0xD72D, 0xC8DE, 0xD734,
+	0xC8DF, 0xD735, 0xC8E0, 0xD738, 0xC8E1, 0xD73C, 0xC8E2, 0xD744,
+	0xC8E3, 0xD747, 0xC8E4, 0xD749, 0xC8E5, 0xD750, 0xC8E6, 0xD751,
+	0xC8E7, 0xD754, 0xC8E8, 0xD756, 0xC8E9, 0xD757, 0xC8EA, 0xD758,
+	0xC8EB, 0xD759, 0xC8EC, 0xD760, 0xC8ED, 0xD761, 0xC8EE, 0xD763,
+	0xC8EF, 0xD765, 0xC8F0, 0xD769, 0xC8F1, 0xD76C, 0xC8F2, 0xD770,
+	0xC8F3, 0xD774, 0xC8F4, 0xD77C, 0xC8F5, 0xD77D, 0xC8F6, 0xD781,
+	0xC8F7, 0xD788, 0xC8F8, 0xD789, 0xC8F9, 0xD78C, 0xC8FA, 0xD790,
+	0xC8FB, 0xD798, 0xC8FC, 0xD799, 0xC8FD, 0xD79B, 0xC8FE, 0xD79D,
+	0xCAA1, 0x4F3D, 0xCAA2, 0x4F73, 0xCAA3, 0x5047, 0xCAA4, 0x50F9,
+	0xCAA5, 0x52A0, 0xCAA6, 0x53EF, 0xCAA7, 0x5475, 0xCAA8, 0x54E5,
+	0xCAA9, 0x5609, 0xCAAA, 0x5AC1, 0xCAAB, 0x5BB6, 0xCAAC, 0x6687,
+	0xCAAD, 0x67B6, 0xCAAE, 0x67B7, 0xCAAF, 0x67EF, 0xCAB0, 0x6B4C,
+	0xCAB1, 0x73C2, 0xCAB2, 0x75C2, 0xCAB3, 0x7A3C, 0xCAB4, 0x82DB,
+	0xCAB5, 0x8304, 0xCAB6, 0x8857, 0xCAB7, 0x8888, 0xCAB8, 0x8A36,
+	0xCAB9, 0x8CC8, 0xCABA, 0x8DCF, 0xCABB, 0x8EFB, 0xCABC, 0x8FE6,
+	0xCABD, 0x99D5, 0xCABE, 0x523B, 0xCABF, 0x5374, 0xCAC0, 0x5404,
+	0xCAC1, 0x606A, 0xCAC2, 0x6164, 0xCAC3, 0x6BBC, 0xCAC4, 0x73CF,
+	0xCAC5, 0x811A, 0xCAC6, 0x89BA, 0xCAC7, 0x89D2, 0xCAC8, 0x95A3,
+	0xCAC9, 0x4F83, 0xCACA, 0x520A, 0xCACB, 0x58BE, 0xCACC, 0x5978,
+	0xCACD, 0x59E6, 0xCACE, 0x5E72, 0xCACF, 0x5E79, 0xCAD0, 0x61C7,
+	0xCAD1, 0x63C0, 0xCAD2, 0x6746, 0xCAD3, 0x67EC, 0xCAD4, 0x687F,
+	0xCAD5, 0x6F97, 0xCAD6, 0x764E, 0xCAD7, 0x770B, 0xCAD8, 0x78F5,
+	0xCAD9, 0x7A08, 0xCADA, 0x7AFF, 0xCADB, 0x7C21, 0xCADC, 0x809D,
+	0xCADD, 0x826E, 0xCADE, 0x8271, 0xCADF, 0x8AEB, 0xCAE0, 0x9593,
+	0xCAE1, 0x4E6B, 0xCAE2, 0x559D, 0xCAE3, 0x66F7, 0xCAE4, 0x6E34,
+	0xCAE5, 0x78A3, 0xCAE6, 0x7AED, 0xCAE7, 0x845B, 0xCAE8, 0x8910,
+	0xCAE9, 0x874E, 0xCAEA, 0x97A8, 0xCAEB, 0x52D8, 0xCAEC, 0x574E,
+	0xCAED, 0x582A, 0xCAEE, 0x5D4C, 0xCAEF, 0x611F, 0xCAF0, 0x61BE,
+	0xCAF1, 0x6221, 0xCAF2, 0x6562, 0xCAF3, 0x67D1, 0xCAF4, 0x6A44,
+	0xCAF5, 0x6E1B, 0xCAF6, 0x7518, 0xCAF7, 0x75B3, 0xCAF8, 0x76E3,
+	0xCAF9, 0x77B0, 0xCAFA, 0x7D3A, 0xCAFB, 0x90AF, 0xCAFC, 0x9451,
+	0xCAFD, 0x9452, 0xCAFE, 0x9F95, 0xCBA1, 0x5323, 0xCBA2, 0x5CAC,
+	0xCBA3, 0x7532, 0xCBA4, 0x80DB, 0xCBA5, 0x9240, 0xCBA6, 0x9598,
+	0xCBA7, 0x525B, 0xCBA8, 0x5808, 0xCBA9, 0x59DC, 0xCBAA, 0x5CA1,
+	0xCBAB, 0x5D17, 0xCBAC, 0x5EB7, 0xCBAD, 0x5F3A, 0xCBAE, 0x5F4A,
+	0xCBAF, 0x6177, 0xCBB0, 0x6C5F, 0xCBB1, 0x757A, 0xCBB2, 0x7586,
+	0xCBB3, 0x7CE0, 0xCBB4, 0x7D73, 0xCBB5, 0x7DB1, 0xCBB6, 0x7F8C,
+	0xCBB7, 0x8154, 0xCBB8, 0x8221, 0xCBB9, 0x8591, 0xCBBA, 0x8941,
+	0xCBBB, 0x8B1B, 0xCBBC, 0x92FC, 0xCBBD, 0x964D, 0xCBBE, 0x9C47,
+	0xCBBF, 0x4ECB, 0xCBC0, 0x4EF7, 0xCBC1, 0x500B, 0xCBC2, 0x51F1,
+	0xCBC3, 0x584F, 0xCBC4, 0x6137, 0xCBC5, 0x613E, 0xCBC6, 0x6168,
+	0xCBC7, 0x6539, 0xCBC8, 0x69EA, 0xCBC9, 0x6F11, 0xCBCA, 0x75A5,
+	0xCBCB, 0x7686, 0xCBCC, 0x76D6, 0xCBCD, 0x7B87, 0xCBCE, 0x82A5,
+	0xCBCF, 0x84CB, 0xCBD0, 0xF900, 0xCBD1, 0x93A7, 0xCBD2, 0x958B,
+	0xCBD3, 0x5580, 0xCBD4, 0x5BA2, 0xCBD5, 0x5751, 0xCBD6, 0xF901,
+	0xCBD7, 0x7CB3, 0xCBD8, 0x7FB9, 0xCBD9, 0x91B5, 0xCBDA, 0x5028,
+	0xCBDB, 0x53BB, 0xCBDC, 0x5C45, 0xCBDD, 0x5DE8, 0xCBDE, 0x62D2,
+	0xCBDF, 0x636E, 0xCBE0, 0x64DA, 0xCBE1, 0x64E7, 0xCBE2, 0x6E20,
+	0xCBE3, 0x70AC, 0xCBE4, 0x795B, 0xCBE5, 0x8DDD, 0xCBE6, 0x8E1E,
+	0xCBE7, 0xF902, 0xCBE8, 0x907D, 0xCBE9, 0x9245, 0xCBEA, 0x92F8,
+	0xCBEB, 0x4E7E, 0xCBEC, 0x4EF6, 0xCBED, 0x5065, 0xCBEE, 0x5DFE,
+	0xCBEF, 0x5EFA, 0xCBF0, 0x6106, 0xCBF1, 0x6957, 0xCBF2, 0x8171,
+	0xCBF3, 0x8654, 0xCBF4, 0x8E47, 0xCBF5, 0x9375, 0xCBF6, 0x9A2B,
+	0xCBF7, 0x4E5E, 0xCBF8, 0x5091, 0xCBF9, 0x6770, 0xCBFA, 0x6840,
+	0xCBFB, 0x5109, 0xCBFC, 0x528D, 0xCBFD, 0x5292, 0xCBFE, 0x6AA2,
+	0xCCA1, 0x77BC, 0xCCA2, 0x9210, 0xCCA3, 0x9ED4, 0xCCA4, 0x52AB,
+	0xCCA5, 0x602F, 0xCCA6, 0x8FF2, 0xCCA7, 0x5048, 0xCCA8, 0x61A9,
+	0xCCA9, 0x63ED, 0xCCAA, 0x64CA, 0xCCAB, 0x683C, 0xCCAC, 0x6A84,
+	0xCCAD, 0x6FC0, 0xCCAE, 0x8188, 0xCCAF, 0x89A1, 0xCCB0, 0x9694,
+	0xCCB1, 0x5805, 0xCCB2, 0x727D, 0xCCB3, 0x72AC, 0xCCB4, 0x7504,
+	0xCCB5, 0x7D79, 0xCCB6, 0x7E6D, 0xCCB7, 0x80A9, 0xCCB8, 0x898B,
+	0xCCB9, 0x8B74, 0xCCBA, 0x9063, 0xCCBB, 0x9D51, 0xCCBC, 0x6289,
+	0xCCBD, 0x6C7A, 0xCCBE, 0x6F54, 0xCCBF, 0x7D50, 0xCCC0, 0x7F3A,
+	0xCCC1, 0x8A23, 0xCCC2, 0x517C, 0xCCC3, 0x614A, 0xCCC4, 0x7B9D,
+	0xCCC5, 0x8B19, 0xCCC6, 0x9257, 0xCCC7, 0x938C, 0xCCC8, 0x4EAC,
+	0xCCC9, 0x4FD3, 0xCCCA, 0x501E, 0xCCCB, 0x50BE, 0xCCCC, 0x5106,
+	0xCCCD, 0x52C1, 0xCCCE, 0x52CD, 0xCCCF, 0x537F, 0xCCD0, 0x5770,
+	0xCCD1, 0x5883, 0xCCD2, 0x5E9A, 0xCCD3, 0x5F91, 0xCCD4, 0x6176,
+	0xCCD5, 0x61AC, 0xCCD6, 0x64CE, 0xCCD7, 0x656C, 0xCCD8, 0x666F,
+	0xCCD9, 0x66BB, 0xCCDA, 0x66F4, 0xCCDB, 0x6897, 0xCCDC, 0x6D87,
+	0xCCDD, 0x7085, 0xCCDE, 0x70F1, 0xCCDF, 0x749F, 0xCCE0, 0x74A5,
+	0xCCE1, 0x74CA, 0xCCE2, 0x75D9, 0xCCE3, 0x786C, 0xCCE4, 0x78EC,
+	0xCCE5, 0x7ADF, 0xCCE6, 0x7AF6, 0xCCE7, 0x7D45, 0xCCE8, 0x7D93,
+	0xCCE9, 0x8015, 0xCCEA, 0x803F, 0xCCEB, 0x811B, 0xCCEC, 0x8396,
+	0xCCED, 0x8B66, 0xCCEE, 0x8F15, 0xCCEF, 0x9015, 0xCCF0, 0x93E1,
+	0xCCF1, 0x9803, 0xCCF2, 0x9838, 0xCCF3, 0x9A5A, 0xCCF4, 0x9BE8,
+	0xCCF5, 0x4FC2, 0xCCF6, 0x5553, 0xCCF7, 0x583A, 0xCCF8, 0x5951,
+	0xCCF9, 0x5B63, 0xCCFA, 0x5C46, 0xCCFB, 0x60B8, 0xCCFC, 0x6212,
+	0xCCFD, 0x6842, 0xCCFE, 0x68B0, 0xCDA1, 0x68E8, 0xCDA2, 0x6EAA,
+	0xCDA3, 0x754C, 0xCDA4, 0x7678, 0xCDA5, 0x78CE, 0xCDA6, 0x7A3D,
+	0xCDA7, 0x7CFB, 0xCDA8, 0x7E6B, 0xCDA9, 0x7E7C, 0xCDAA, 0x8A08,
+	0xCDAB, 0x8AA1, 0xCDAC, 0x8C3F, 0xCDAD, 0x968E, 0xCDAE, 0x9DC4,
+	0xCDAF, 0x53E4, 0xCDB0, 0x53E9, 0xCDB1, 0x544A, 0xCDB2, 0x5471,
+	0xCDB3, 0x56FA, 0xCDB4, 0x59D1, 0xCDB5, 0x5B64, 0xCDB6, 0x5C3B,
+	0xCDB7, 0x5EAB, 0xCDB8, 0x62F7, 0xCDB9, 0x6537, 0xCDBA, 0x6545,
+	0xCDBB, 0x6572, 0xCDBC, 0x66A0, 0xCDBD, 0x67AF, 0xCDBE, 0x69C1,
+	0xCDBF, 0x6CBD, 0xCDC0, 0x75FC, 0xCDC1, 0x7690, 0xCDC2, 0x777E,
+	0xCDC3, 0x7A3F, 0xCDC4, 0x7F94, 0xCDC5, 0x8003, 0xCDC6, 0x80A1,
+	0xCDC7, 0x818F, 0xCDC8, 0x82E6, 0xCDC9, 0x82FD, 0xCDCA, 0x83F0,
+	0xCDCB, 0x85C1, 0xCDCC, 0x8831, 0xCDCD, 0x88B4, 0xCDCE, 0x8AA5,
+	0xCDCF, 0xF903, 0xCDD0, 0x8F9C, 0xCDD1, 0x932E, 0xCDD2, 0x96C7,
+	0xCDD3, 0x9867, 0xCDD4, 0x9AD8, 0xCDD5, 0x9F13, 0xCDD6, 0x54ED,
+	0xCDD7, 0x659B, 0xCDD8, 0x66F2, 0xCDD9, 0x688F, 0xCDDA, 0x7A40,
+	0xCDDB, 0x8C37, 0xCDDC, 0x9D60, 0xCDDD, 0x56F0, 0xCDDE, 0x5764,
+	0xCDDF, 0x5D11, 0xCDE0, 0x6606, 0xCDE1, 0x68B1, 0xCDE2, 0x68CD,
+	0xCDE3, 0x6EFE, 0xCDE4, 0x7428, 0xCDE5, 0x889E, 0xCDE6, 0x9BE4,
+	0xCDE7, 0x6C68, 0xCDE8, 0xF904, 0xCDE9, 0x9AA8, 0xCDEA, 0x4F9B,
+	0xCDEB, 0x516C, 0xCDEC, 0x5171, 0xCDED, 0x529F, 0xCDEE, 0x5B54,
+	0xCDEF, 0x5DE5, 0xCDF0, 0x6050, 0xCDF1, 0x606D, 0xCDF2, 0x62F1,
+	0xCDF3, 0x63A7, 0xCDF4, 0x653B, 0xCDF5, 0x73D9, 0xCDF6, 0x7A7A,
+	0xCDF7, 0x86A3, 0xCDF8, 0x8CA2, 0xCDF9, 0x978F, 0xCDFA, 0x4E32,
+	0xCDFB, 0x5BE1, 0xCDFC, 0x6208, 0xCDFD, 0x679C, 0xCDFE, 0x74DC,
+	0xCEA1, 0x79D1, 0xCEA2, 0x83D3, 0xCEA3, 0x8A87, 0xCEA4, 0x8AB2,
+	0xCEA5, 0x8DE8, 0xCEA6, 0x904E, 0xCEA7, 0x934B, 0xCEA8, 0x9846,
+	0xCEA9, 0x5ED3, 0xCEAA, 0x69E8, 0xCEAB, 0x85FF, 0xCEAC, 0x90ED,
+	0xCEAD, 0xF905, 0xCEAE, 0x51A0, 0xCEAF, 0x5B98, 0xCEB0, 0x5BEC,
+	0xCEB1, 0x6163, 0xCEB2, 0x68FA, 0xCEB3, 0x6B3E, 0xCEB4, 0x704C,
+	0xCEB5, 0x742F, 0xCEB6, 0x74D8, 0xCEB7, 0x7BA1, 0xCEB8, 0x7F50,
+	0xCEB9, 0x83C5, 0xCEBA, 0x89C0, 0xCEBB, 0x8CAB, 0xCEBC, 0x95DC,
+	0xCEBD, 0x9928, 0xCEBE, 0x522E, 0xCEBF, 0x605D, 0xCEC0, 0x62EC,
+	0xCEC1, 0x9002, 0xCEC2, 0x4F8A, 0xCEC3, 0x5149, 0xCEC4, 0x5321,
+	0xCEC5, 0x58D9, 0xCEC6, 0x5EE3, 0xCEC7, 0x66E0, 0xCEC8, 0x6D38,
+	0xCEC9, 0x709A, 0xCECA, 0x72C2, 0xCECB, 0x73D6, 0xCECC, 0x7B50,
+	0xCECD, 0x80F1, 0xCECE, 0x945B, 0xCECF, 0x5366, 0xCED0, 0x639B,
+	0xCED1, 0x7F6B, 0xCED2, 0x4E56, 0xCED3, 0x5080, 0xCED4, 0x584A,
+	0xCED5, 0x58DE, 0xCED6, 0x602A, 0xCED7, 0x6127, 0xCED8, 0x62D0,
+	0xCED9, 0x69D0, 0xCEDA, 0x9B41, 0xCEDB, 0x5B8F, 0xCEDC, 0x7D18,
+	0xCEDD, 0x80B1, 0xCEDE, 0x8F5F, 0xCEDF, 0x4EA4, 0xCEE0, 0x50D1,
+	0xCEE1, 0x54AC, 0xCEE2, 0x55AC, 0xCEE3, 0x5B0C, 0xCEE4, 0x5DA0,
+	0xCEE5, 0x5DE7, 0xCEE6, 0x652A, 0xCEE7, 0x654E, 0xCEE8, 0x6821,
+	0xCEE9, 0x6A4B, 0xCEEA, 0x72E1, 0xCEEB, 0x768E, 0xCEEC, 0x77EF,
+	0xCEED, 0x7D5E, 0xCEEE, 0x7FF9, 0xCEEF, 0x81A0, 0xCEF0, 0x854E,
+	0xCEF1, 0x86DF, 0xCEF2, 0x8F03, 0xCEF3, 0x8F4E, 0xCEF4, 0x90CA,
+	0xCEF5, 0x9903, 0xCEF6, 0x9A55, 0xCEF7, 0x9BAB, 0xCEF8, 0x4E18,
+	0xCEF9, 0x4E45, 0xCEFA, 0x4E5D, 0xCEFB, 0x4EC7, 0xCEFC, 0x4FF1,
+	0xCEFD, 0x5177, 0xCEFE, 0x52FE, 0xCFA1, 0x5340, 0xCFA2, 0x53E3,
+	0xCFA3, 0x53E5, 0xCFA4, 0x548E, 0xCFA5, 0x5614, 0xCFA6, 0x5775,
+	0xCFA7, 0x57A2, 0xCFA8, 0x5BC7, 0xCFA9, 0x5D87, 0xCFAA, 0x5ED0,
+	0xCFAB, 0x61FC, 0xCFAC, 0x62D8, 0xCFAD, 0x6551, 0xCFAE, 0x67B8,
+	0xCFAF, 0x67E9, 0xCFB0, 0x69CB, 0xCFB1, 0x6B50, 0xCFB2, 0x6BC6,
+	0xCFB3, 0x6BEC, 0xCFB4, 0x6C42, 0xCFB5, 0x6E9D, 0xCFB6, 0x7078,
+	0xCFB7, 0x72D7, 0xCFB8, 0x7396, 0xCFB9, 0x7403, 0xCFBA, 0x77BF,
+	0xCFBB, 0x77E9, 0xCFBC, 0x7A76, 0xCFBD, 0x7D7F, 0xCFBE, 0x8009,
+	0xCFBF, 0x81FC, 0xCFC0, 0x8205, 0xCFC1, 0x820A, 0xCFC2, 0x82DF,
+	0xCFC3, 0x8862, 0xCFC4, 0x8B33, 0xCFC5, 0x8CFC, 0xCFC6, 0x8EC0,
+	0xCFC7, 0x9011, 0xCFC8, 0x90B1, 0xCFC9, 0x9264, 0xCFCA, 0x92B6,
+	0xCFCB, 0x99D2, 0xCFCC, 0x9A45, 0xCFCD, 0x9CE9, 0xCFCE, 0x9DD7,
+	0xCFCF, 0x9F9C, 0xCFD0, 0x570B, 0xCFD1, 0x5C40, 0xCFD2, 0x83CA,
+	0xCFD3, 0x97A0, 0xCFD4, 0x97AB, 0xCFD5, 0x9EB4, 0xCFD6, 0x541B,
+	0xCFD7, 0x7A98, 0xCFD8, 0x7FA4, 0xCFD9, 0x88D9, 0xCFDA, 0x8ECD,
+	0xCFDB, 0x90E1, 0xCFDC, 0x5800, 0xCFDD, 0x5C48, 0xCFDE, 0x6398,
+	0xCFDF, 0x7A9F, 0xCFE0, 0x5BAE, 0xCFE1, 0x5F13, 0xCFE2, 0x7A79,
+	0xCFE3, 0x7AAE, 0xCFE4, 0x828E, 0xCFE5, 0x8EAC, 0xCFE6, 0x5026,
+	0xCFE7, 0x5238, 0xCFE8, 0x52F8, 0xCFE9, 0x5377, 0xCFEA, 0x5708,
+	0xCFEB, 0x62F3, 0xCFEC, 0x6372, 0xCFED, 0x6B0A, 0xCFEE, 0x6DC3,
+	0xCFEF, 0x7737, 0xCFF0, 0x53A5, 0xCFF1, 0x7357, 0xCFF2, 0x8568,
+	0xCFF3, 0x8E76, 0xCFF4, 0x95D5, 0xCFF5, 0x673A, 0xCFF6, 0x6AC3,
+	0xCFF7, 0x6F70, 0xCFF8, 0x8A6D, 0xCFF9, 0x8ECC, 0xCFFA, 0x994B,
+	0xCFFB, 0xF906, 0xCFFC, 0x6677, 0xCFFD, 0x6B78, 0xCFFE, 0x8CB4,
+	0xD0A1, 0x9B3C, 0xD0A2, 0xF907, 0xD0A3, 0x53EB, 0xD0A4, 0x572D,
+	0xD0A5, 0x594E, 0xD0A6, 0x63C6, 0xD0A7, 0x69FB, 0xD0A8, 0x73EA,
+	0xD0A9, 0x7845, 0xD0AA, 0x7ABA, 0xD0AB, 0x7AC5, 0xD0AC, 0x7CFE,
+	0xD0AD, 0x8475, 0xD0AE, 0x898F, 0xD0AF, 0x8D73, 0xD0B0, 0x9035,
+	0xD0B1, 0x95A8, 0xD0B2, 0x52FB, 0xD0B3, 0x5747, 0xD0B4, 0x7547,
+	0xD0B5, 0x7B60, 0xD0B6, 0x83CC, 0xD0B7, 0x921E, 0xD0B8, 0xF908,
+	0xD0B9, 0x6A58, 0xD0BA, 0x514B, 0xD0BB, 0x524B, 0xD0BC, 0x5287,
+	0xD0BD, 0x621F, 0xD0BE, 0x68D8, 0xD0BF, 0x6975, 0xD0C0, 0x9699,
+	0xD0C1, 0x50C5, 0xD0C2, 0x52A4, 0xD0C3, 0x52E4, 0xD0C4, 0x61C3,
+	0xD0C5, 0x65A4, 0xD0C6, 0x6839, 0xD0C7, 0x69FF, 0xD0C8, 0x747E,
+	0xD0C9, 0x7B4B, 0xD0CA, 0x82B9, 0xD0CB, 0x83EB, 0xD0CC, 0x89B2,
+	0xD0CD, 0x8B39, 0xD0CE, 0x8FD1, 0xD0CF, 0x9949, 0xD0D0, 0xF909,
+	0xD0D1, 0x4ECA, 0xD0D2, 0x5997, 0xD0D3, 0x64D2, 0xD0D4, 0x6611,
+	0xD0D5, 0x6A8E, 0xD0D6, 0x7434, 0xD0D7, 0x7981, 0xD0D8, 0x79BD,
+	0xD0D9, 0x82A9, 0xD0DA, 0x887E, 0xD0DB, 0x887F, 0xD0DC, 0x895F,
+	0xD0DD, 0xF90A, 0xD0DE, 0x9326, 0xD0DF, 0x4F0B, 0xD0E0, 0x53CA,
+	0xD0E1, 0x6025, 0xD0E2, 0x6271, 0xD0E3, 0x6C72, 0xD0E4, 0x7D1A,
+	0xD0E5, 0x7D66, 0xD0E6, 0x4E98, 0xD0E7, 0x5162, 0xD0E8, 0x77DC,
+	0xD0E9, 0x80AF, 0xD0EA, 0x4F01, 0xD0EB, 0x4F0E, 0xD0EC, 0x5176,
+	0xD0ED, 0x5180, 0xD0EE, 0x55DC, 0xD0EF, 0x5668, 0xD0F0, 0x573B,
+	0xD0F1, 0x57FA, 0xD0F2, 0x57FC, 0xD0F3, 0x5914, 0xD0F4, 0x5947,
+	0xD0F5, 0x5993, 0xD0F6, 0x5BC4, 0xD0F7, 0x5C90, 0xD0F8, 0x5D0E,
+	0xD0F9, 0x5DF1, 0xD0FA, 0x5E7E, 0xD0FB, 0x5FCC, 0xD0FC, 0x6280,
+	0xD0FD, 0x65D7, 0xD0FE, 0x65E3, 0xD1A1, 0x671E, 0xD1A2, 0x671F,
+	0xD1A3, 0x675E, 0xD1A4, 0x68CB, 0xD1A5, 0x68C4, 0xD1A6, 0x6A5F,
+	0xD1A7, 0x6B3A, 0xD1A8, 0x6C23, 0xD1A9, 0x6C7D, 0xD1AA, 0x6C82,
+	0xD1AB, 0x6DC7, 0xD1AC, 0x7398, 0xD1AD, 0x7426, 0xD1AE, 0x742A,
+	0xD1AF, 0x7482, 0xD1B0, 0x74A3, 0xD1B1, 0x7578, 0xD1B2, 0x757F,
+	0xD1B3, 0x7881, 0xD1B4, 0x78EF, 0xD1B5, 0x7941, 0xD1B6, 0x7947,
+	0xD1B7, 0x7948, 0xD1B8, 0x797A, 0xD1B9, 0x7B95, 0xD1BA, 0x7D00,
+	0xD1BB, 0x7DBA, 0xD1BC, 0x7F88, 0xD1BD, 0x8006, 0xD1BE, 0x802D,
+	0xD1BF, 0x808C, 0xD1C0, 0x8A18, 0xD1C1, 0x8B4F, 0xD1C2, 0x8C48,
+	0xD1C3, 0x8D77, 0xD1C4, 0x9321, 0xD1C5, 0x9324, 0xD1C6, 0x98E2,
+	0xD1C7, 0x9951, 0xD1C8, 0x9A0E, 0xD1C9, 0x9A0F, 0xD1CA, 0x9A65,
+	0xD1CB, 0x9E92, 0xD1CC, 0x7DCA, 0xD1CD, 0x4F76, 0xD1CE, 0x5409,
+	0xD1CF, 0x62EE, 0xD1D0, 0x6854, 0xD1D1, 0x91D1, 0xD1D2, 0x55AB,
+	0xD1D3, 0x513A, 0xD1D4, 0xF90B, 0xD1D5, 0xF90C, 0xD1D6, 0x5A1C,
+	0xD1D7, 0x61E6, 0xD1D8, 0xF90D, 0xD1D9, 0x62CF, 0xD1DA, 0x62FF,
+	0xD1DB, 0xF90E, 0xD1DC, 0xF90F, 0xD1DD, 0xF910, 0xD1DE, 0xF911,
+	0xD1DF, 0xF912, 0xD1E0, 0xF913, 0xD1E1, 0x90A3, 0xD1E2, 0xF914,
+	0xD1E3, 0xF915, 0xD1E4, 0xF916, 0xD1E5, 0xF917, 0xD1E6, 0xF918,
+	0xD1E7, 0x8AFE, 0xD1E8, 0xF919, 0xD1E9, 0xF91A, 0xD1EA, 0xF91B,
+	0xD1EB, 0xF91C, 0xD1EC, 0x6696, 0xD1ED, 0xF91D, 0xD1EE, 0x7156,
+	0xD1EF, 0xF91E, 0xD1F0, 0xF91F, 0xD1F1, 0x96E3, 0xD1F2, 0xF920,
+	0xD1F3, 0x634F, 0xD1F4, 0x637A, 0xD1F5, 0x5357, 0xD1F6, 0xF921,
+	0xD1F7, 0x678F, 0xD1F8, 0x6960, 0xD1F9, 0x6E73, 0xD1FA, 0xF922,
+	0xD1FB, 0x7537, 0xD1FC, 0xF923, 0xD1FD, 0xF924, 0xD1FE, 0xF925,
+	0xD2A1, 0x7D0D, 0xD2A2, 0xF926, 0xD2A3, 0xF927, 0xD2A4, 0x8872,
+	0xD2A5, 0x56CA, 0xD2A6, 0x5A18, 0xD2A7, 0xF928, 0xD2A8, 0xF929,
+	0xD2A9, 0xF92A, 0xD2AA, 0xF92B, 0xD2AB, 0xF92C, 0xD2AC, 0x4E43,
+	0xD2AD, 0xF92D, 0xD2AE, 0x5167, 0xD2AF, 0x5948, 0xD2B0, 0x67F0,
+	0xD2B1, 0x8010, 0xD2B2, 0xF92E, 0xD2B3, 0x5973, 0xD2B4, 0x5E74,
+	0xD2B5, 0x649A, 0xD2B6, 0x79CA, 0xD2B7, 0x5FF5, 0xD2B8, 0x606C,
+	0xD2B9, 0x62C8, 0xD2BA, 0x637B, 0xD2BB, 0x5BE7, 0xD2BC, 0x5BD7,
+	0xD2BD, 0x52AA, 0xD2BE, 0xF92F, 0xD2BF, 0x5974, 0xD2C0, 0x5F29,
+	0xD2C1, 0x6012, 0xD2C2, 0xF930, 0xD2C3, 0xF931, 0xD2C4, 0xF932,
+	0xD2C5, 0x7459, 0xD2C6, 0xF933, 0xD2C7, 0xF934, 0xD2C8, 0xF935,
+	0xD2C9, 0xF936, 0xD2CA, 0xF937, 0xD2CB, 0xF938, 0xD2CC, 0x99D1,
+	0xD2CD, 0xF939, 0xD2CE, 0xF93A, 0xD2CF, 0xF93B, 0xD2D0, 0xF93C,
+	0xD2D1, 0xF93D, 0xD2D2, 0xF93E, 0xD2D3, 0xF93F, 0xD2D4, 0xF940,
+	0xD2D5, 0xF941, 0xD2D6, 0xF942, 0xD2D7, 0xF943, 0xD2D8, 0x6FC3,
+	0xD2D9, 0xF944, 0xD2DA, 0xF945, 0xD2DB, 0x81BF, 0xD2DC, 0x8FB2,
+	0xD2DD, 0x60F1, 0xD2DE, 0xF946, 0xD2DF, 0xF947, 0xD2E0, 0x8166,
+	0xD2E1, 0xF948, 0xD2E2, 0xF949, 0xD2E3, 0x5C3F, 0xD2E4, 0xF94A,
+	0xD2E5, 0xF94B, 0xD2E6, 0xF94C, 0xD2E7, 0xF94D, 0xD2E8, 0xF94E,
+	0xD2E9, 0xF94F, 0xD2EA, 0xF950, 0xD2EB, 0xF951, 0xD2EC, 0x5AE9,
+	0xD2ED, 0x8A25, 0xD2EE, 0x677B, 0xD2EF, 0x7D10, 0xD2F0, 0xF952,
+	0xD2F1, 0xF953, 0xD2F2, 0xF954, 0xD2F3, 0xF955, 0xD2F4, 0xF956,
+	0xD2F5, 0xF957, 0xD2F6, 0x80FD, 0xD2F7, 0xF958, 0xD2F8, 0xF959,
+	0xD2F9, 0x5C3C, 0xD2FA, 0x6CE5, 0xD2FB, 0x533F, 0xD2FC, 0x6EBA,
+	0xD2FD, 0x591A, 0xD2FE, 0x8336, 0xD3A1, 0x4E39, 0xD3A2, 0x4EB6,
+	0xD3A3, 0x4F46, 0xD3A4, 0x55AE, 0xD3A5, 0x5718, 0xD3A6, 0x58C7,
+	0xD3A7, 0x5F56, 0xD3A8, 0x65B7, 0xD3A9, 0x65E6, 0xD3AA, 0x6A80,
+	0xD3AB, 0x6BB5, 0xD3AC, 0x6E4D, 0xD3AD, 0x77ED, 0xD3AE, 0x7AEF,
+	0xD3AF, 0x7C1E, 0xD3B0, 0x7DDE, 0xD3B1, 0x86CB, 0xD3B2, 0x8892,
+	0xD3B3, 0x9132, 0xD3B4, 0x935B, 0xD3B5, 0x64BB, 0xD3B6, 0x6FBE,
+	0xD3B7, 0x737A, 0xD3B8, 0x75B8, 0xD3B9, 0x9054, 0xD3BA, 0x5556,
+	0xD3BB, 0x574D, 0xD3BC, 0x61BA, 0xD3BD, 0x64D4, 0xD3BE, 0x66C7,
+	0xD3BF, 0x6DE1, 0xD3C0, 0x6E5B, 0xD3C1, 0x6F6D, 0xD3C2, 0x6FB9,
+	0xD3C3, 0x75F0, 0xD3C4, 0x8043, 0xD3C5, 0x81BD, 0xD3C6, 0x8541,
+	0xD3C7, 0x8983, 0xD3C8, 0x8AC7, 0xD3C9, 0x8B5A, 0xD3CA, 0x931F,
+	0xD3CB, 0x6C93, 0xD3CC, 0x7553, 0xD3CD, 0x7B54, 0xD3CE, 0x8E0F,
+	0xD3CF, 0x905D, 0xD3D0, 0x5510, 0xD3D1, 0x5802, 0xD3D2, 0x5858,
+	0xD3D3, 0x5E62, 0xD3D4, 0x6207, 0xD3D5, 0x649E, 0xD3D6, 0x68E0,
+	0xD3D7, 0x7576, 0xD3D8, 0x7CD6, 0xD3D9, 0x87B3, 0xD3DA, 0x9EE8,
+	0xD3DB, 0x4EE3, 0xD3DC, 0x5788, 0xD3DD, 0x576E, 0xD3DE, 0x5927,
+	0xD3DF, 0x5C0D, 0xD3E0, 0x5CB1, 0xD3E1, 0x5E36, 0xD3E2, 0x5F85,
+	0xD3E3, 0x6234, 0xD3E4, 0x64E1, 0xD3E5, 0x73B3, 0xD3E6, 0x81FA,
+	0xD3E7, 0x888B, 0xD3E8, 0x8CB8, 0xD3E9, 0x968A, 0xD3EA, 0x9EDB,
+	0xD3EB, 0x5B85, 0xD3EC, 0x5FB7, 0xD3ED, 0x60B3, 0xD3EE, 0x5012,
+	0xD3EF, 0x5200, 0xD3F0, 0x5230, 0xD3F1, 0x5716, 0xD3F2, 0x5835,
+	0xD3F3, 0x5857, 0xD3F4, 0x5C0E, 0xD3F5, 0x5C60, 0xD3F6, 0x5CF6,
+	0xD3F7, 0x5D8B, 0xD3F8, 0x5EA6, 0xD3F9, 0x5F92, 0xD3FA, 0x60BC,
+	0xD3FB, 0x6311, 0xD3FC, 0x6389, 0xD3FD, 0x6417, 0xD3FE, 0x6843,
+	0xD4A1, 0x68F9, 0xD4A2, 0x6AC2, 0xD4A3, 0x6DD8, 0xD4A4, 0x6E21,
+	0xD4A5, 0x6ED4, 0xD4A6, 0x6FE4, 0xD4A7, 0x71FE, 0xD4A8, 0x76DC,
+	0xD4A9, 0x7779, 0xD4AA, 0x79B1, 0xD4AB, 0x7A3B, 0xD4AC, 0x8404,
+	0xD4AD, 0x89A9, 0xD4AE, 0x8CED, 0xD4AF, 0x8DF3, 0xD4B0, 0x8E48,
+	0xD4B1, 0x9003, 0xD4B2, 0x9014, 0xD4B3, 0x9053, 0xD4B4, 0x90FD,
+	0xD4B5, 0x934D, 0xD4B6, 0x9676, 0xD4B7, 0x97DC, 0xD4B8, 0x6BD2,
+	0xD4B9, 0x7006, 0xD4BA, 0x7258, 0xD4BB, 0x72A2, 0xD4BC, 0x7368,
+	0xD4BD, 0x7763, 0xD4BE, 0x79BF, 0xD4BF, 0x7BE4, 0xD4C0, 0x7E9B,
+	0xD4C1, 0x8B80, 0xD4C2, 0x58A9, 0xD4C3, 0x60C7, 0xD4C4, 0x6566,
+	0xD4C5, 0x65FD, 0xD4C6, 0x66BE, 0xD4C7, 0x6C8C, 0xD4C8, 0x711E,
+	0xD4C9, 0x71C9, 0xD4CA, 0x8C5A, 0xD4CB, 0x9813, 0xD4CC, 0x4E6D,
+	0xD4CD, 0x7A81, 0xD4CE, 0x4EDD, 0xD4CF, 0x51AC, 0xD4D0, 0x51CD,
+	0xD4D1, 0x52D5, 0xD4D2, 0x540C, 0xD4D3, 0x61A7, 0xD4D4, 0x6771,
+	0xD4D5, 0x6850, 0xD4D6, 0x68DF, 0xD4D7, 0x6D1E, 0xD4D8, 0x6F7C,
+	0xD4D9, 0x75BC, 0xD4DA, 0x77B3, 0xD4DB, 0x7AE5, 0xD4DC, 0x80F4,
+	0xD4DD, 0x8463, 0xD4DE, 0x9285, 0xD4DF, 0x515C, 0xD4E0, 0x6597,
+	0xD4E1, 0x675C, 0xD4E2, 0x6793, 0xD4E3, 0x75D8, 0xD4E4, 0x7AC7,
+	0xD4E5, 0x8373, 0xD4E6, 0xF95A, 0xD4E7, 0x8C46, 0xD4E8, 0x9017,
+	0xD4E9, 0x982D, 0xD4EA, 0x5C6F, 0xD4EB, 0x81C0, 0xD4EC, 0x829A,
+	0xD4ED, 0x9041, 0xD4EE, 0x906F, 0xD4EF, 0x920D, 0xD4F0, 0x5F97,
+	0xD4F1, 0x5D9D, 0xD4F2, 0x6A59, 0xD4F3, 0x71C8, 0xD4F4, 0x767B,
+	0xD4F5, 0x7B49, 0xD4F6, 0x85E4, 0xD4F7, 0x8B04, 0xD4F8, 0x9127,
+	0xD4F9, 0x9A30, 0xD4FA, 0x5587, 0xD4FB, 0x61F6, 0xD4FC, 0xF95B,
+	0xD4FD, 0x7669, 0xD4FE, 0x7F85, 0xD5A1, 0x863F, 0xD5A2, 0x87BA,
+	0xD5A3, 0x88F8, 0xD5A4, 0x908F, 0xD5A5, 0xF95C, 0xD5A6, 0x6D1B,
+	0xD5A7, 0x70D9, 0xD5A8, 0x73DE, 0xD5A9, 0x7D61, 0xD5AA, 0x843D,
+	0xD5AB, 0xF95D, 0xD5AC, 0x916A, 0xD5AD, 0x99F1, 0xD5AE, 0xF95E,
+	0xD5AF, 0x4E82, 0xD5B0, 0x5375, 0xD5B1, 0x6B04, 0xD5B2, 0x6B12,
+	0xD5B3, 0x703E, 0xD5B4, 0x721B, 0xD5B5, 0x862D, 0xD5B6, 0x9E1E,
+	0xD5B7, 0x524C, 0xD5B8, 0x8FA3, 0xD5B9, 0x5D50, 0xD5BA, 0x64E5,
+	0xD5BB, 0x652C, 0xD5BC, 0x6B16, 0xD5BD, 0x6FEB, 0xD5BE, 0x7C43,
+	0xD5BF, 0x7E9C, 0xD5C0, 0x85CD, 0xD5C1, 0x8964, 0xD5C2, 0x89BD,
+	0xD5C3, 0x62C9, 0xD5C4, 0x81D8, 0xD5C5, 0x881F, 0xD5C6, 0x5ECA,
+	0xD5C7, 0x6717, 0xD5C8, 0x6D6A, 0xD5C9, 0x72FC, 0xD5CA, 0x7405,
+	0xD5CB, 0x746F, 0xD5CC, 0x8782, 0xD5CD, 0x90DE, 0xD5CE, 0x4F86,
+	0xD5CF, 0x5D0D, 0xD5D0, 0x5FA0, 0xD5D1, 0x840A, 0xD5D2, 0x51B7,
+	0xD5D3, 0x63A0, 0xD5D4, 0x7565, 0xD5D5, 0x4EAE, 0xD5D6, 0x5006,
+	0xD5D7, 0x5169, 0xD5D8, 0x51C9, 0xD5D9, 0x6881, 0xD5DA, 0x6A11,
+	0xD5DB, 0x7CAE, 0xD5DC, 0x7CB1, 0xD5DD, 0x7CE7, 0xD5DE, 0x826F,
+	0xD5DF, 0x8AD2, 0xD5E0, 0x8F1B, 0xD5E1, 0x91CF, 0xD5E2, 0x4FB6,
+	0xD5E3, 0x5137, 0xD5E4, 0x52F5, 0xD5E5, 0x5442, 0xD5E6, 0x5EEC,
+	0xD5E7, 0x616E, 0xD5E8, 0x623E, 0xD5E9, 0x65C5, 0xD5EA, 0x6ADA,
+	0xD5EB, 0x6FFE, 0xD5EC, 0x792A, 0xD5ED, 0x85DC, 0xD5EE, 0x8823,
+	0xD5EF, 0x95AD, 0xD5F0, 0x9A62, 0xD5F1, 0x9A6A, 0xD5F2, 0x9E97,
+	0xD5F3, 0x9ECE, 0xD5F4, 0x529B, 0xD5F5, 0x66C6, 0xD5F6, 0x6B77,
+	0xD5F7, 0x701D, 0xD5F8, 0x792B, 0xD5F9, 0x8F62, 0xD5FA, 0x9742,
+	0xD5FB, 0x6190, 0xD5FC, 0x6200, 0xD5FD, 0x6523, 0xD5FE, 0x6F23,
+	0xD6A1, 0x7149, 0xD6A2, 0x7489, 0xD6A3, 0x7DF4, 0xD6A4, 0x806F,
+	0xD6A5, 0x84EE, 0xD6A6, 0x8F26, 0xD6A7, 0x9023, 0xD6A8, 0x934A,
+	0xD6A9, 0x51BD, 0xD6AA, 0x5217, 0xD6AB, 0x52A3, 0xD6AC, 0x6D0C,
+	0xD6AD, 0x70C8, 0xD6AE, 0x88C2, 0xD6AF, 0x5EC9, 0xD6B0, 0x6582,
+	0xD6B1, 0x6BAE, 0xD6B2, 0x6FC2, 0xD6B3, 0x7C3E, 0xD6B4, 0x7375,
+	0xD6B5, 0x4EE4, 0xD6B6, 0x4F36, 0xD6B7, 0x56F9, 0xD6B8, 0xF95F,
+	0xD6B9, 0x5CBA, 0xD6BA, 0x5DBA, 0xD6BB, 0x601C, 0xD6BC, 0x73B2,
+	0xD6BD, 0x7B2D, 0xD6BE, 0x7F9A, 0xD6BF, 0x7FCE, 0xD6C0, 0x8046,
+	0xD6C1, 0x901E, 0xD6C2, 0x9234, 0xD6C3, 0x96F6, 0xD6C4, 0x9748,
+	0xD6C5, 0x9818, 0xD6C6, 0x9F61, 0xD6C7, 0x4F8B, 0xD6C8, 0x6FA7,
+	0xD6C9, 0x79AE, 0xD6CA, 0x91B4, 0xD6CB, 0x96B7, 0xD6CC, 0x52DE,
+	0xD6CD, 0xF960, 0xD6CE, 0x6488, 0xD6CF, 0x64C4, 0xD6D0, 0x6AD3,
+	0xD6D1, 0x6F5E, 0xD6D2, 0x7018, 0xD6D3, 0x7210, 0xD6D4, 0x76E7,
+	0xD6D5, 0x8001, 0xD6D6, 0x8606, 0xD6D7, 0x865C, 0xD6D8, 0x8DEF,
+	0xD6D9, 0x8F05, 0xD6DA, 0x9732, 0xD6DB, 0x9B6F, 0xD6DC, 0x9DFA,
+	0xD6DD, 0x9E75, 0xD6DE, 0x788C, 0xD6DF, 0x797F, 0xD6E0, 0x7DA0,
+	0xD6E1, 0x83C9, 0xD6E2, 0x9304, 0xD6E3, 0x9E7F, 0xD6E4, 0x9E93,
+	0xD6E5, 0x8AD6, 0xD6E6, 0x58DF, 0xD6E7, 0x5F04, 0xD6E8, 0x6727,
+	0xD6E9, 0x7027, 0xD6EA, 0x74CF, 0xD6EB, 0x7C60, 0xD6EC, 0x807E,
+	0xD6ED, 0x5121, 0xD6EE, 0x7028, 0xD6EF, 0x7262, 0xD6F0, 0x78CA,
+	0xD6F1, 0x8CC2, 0xD6F2, 0x8CDA, 0xD6F3, 0x8CF4, 0xD6F4, 0x96F7,
+	0xD6F5, 0x4E86, 0xD6F6, 0x50DA, 0xD6F7, 0x5BEE, 0xD6F8, 0x5ED6,
+	0xD6F9, 0x6599, 0xD6FA, 0x71CE, 0xD6FB, 0x7642, 0xD6FC, 0x77AD,
+	0xD6FD, 0x804A, 0xD6FE, 0x84FC, 0xD7A1, 0x907C, 0xD7A2, 0x9B27,
+	0xD7A3, 0x9F8D, 0xD7A4, 0x58D8, 0xD7A5, 0x5A41, 0xD7A6, 0x5C62,
+	0xD7A7, 0x6A13, 0xD7A8, 0x6DDA, 0xD7A9, 0x6F0F, 0xD7AA, 0x763B,
+	0xD7AB, 0x7D2F, 0xD7AC, 0x7E37, 0xD7AD, 0x851E, 0xD7AE, 0x8938,
+	0xD7AF, 0x93E4, 0xD7B0, 0x964B, 0xD7B1, 0x5289, 0xD7B2, 0x65D2,
+	0xD7B3, 0x67F3, 0xD7B4, 0x69B4, 0xD7B5, 0x6D41, 0xD7B6, 0x6E9C,
+	0xD7B7, 0x700F, 0xD7B8, 0x7409, 0xD7B9, 0x7460, 0xD7BA, 0x7559,
+	0xD7BB, 0x7624, 0xD7BC, 0x786B, 0xD7BD, 0x8B2C, 0xD7BE, 0x985E,
+	0xD7BF, 0x516D, 0xD7C0, 0x622E, 0xD7C1, 0x9678, 0xD7C2, 0x4F96,
+	0xD7C3, 0x502B, 0xD7C4, 0x5D19, 0xD7C5, 0x6DEA, 0xD7C6, 0x7DB8,
+	0xD7C7, 0x8F2A, 0xD7C8, 0x5F8B, 0xD7C9, 0x6144, 0xD7CA, 0x6817,
+	0xD7CB, 0xF961, 0xD7CC, 0x9686, 0xD7CD, 0x52D2, 0xD7CE, 0x808B,
+	0xD7CF, 0x51DC, 0xD7D0, 0x51CC, 0xD7D1, 0x695E, 0xD7D2, 0x7A1C,
+	0xD7D3, 0x7DBE, 0xD7D4, 0x83F1, 0xD7D5, 0x9675, 0xD7D6, 0x4FDA,
+	0xD7D7, 0x5229, 0xD7D8, 0x5398, 0xD7D9, 0x540F, 0xD7DA, 0x550E,
+	0xD7DB, 0x5C65, 0xD7DC, 0x60A7, 0xD7DD, 0x674E, 0xD7DE, 0x68A8,
+	0xD7DF, 0x6D6C, 0xD7E0, 0x7281, 0xD7E1, 0x72F8, 0xD7E2, 0x7406,
+	0xD7E3, 0x7483, 0xD7E4, 0xF962, 0xD7E5, 0x75E2, 0xD7E6, 0x7C6C,
+	0xD7E7, 0x7F79, 0xD7E8, 0x7FB8, 0xD7E9, 0x8389, 0xD7EA, 0x88CF,
+	0xD7EB, 0x88E1, 0xD7EC, 0x91CC, 0xD7ED, 0x91D0, 0xD7EE, 0x96E2,
+	0xD7EF, 0x9BC9, 0xD7F0, 0x541D, 0xD7F1, 0x6F7E, 0xD7F2, 0x71D0,
+	0xD7F3, 0x7498, 0xD7F4, 0x85FA, 0xD7F5, 0x8EAA, 0xD7F6, 0x96A3,
+	0xD7F7, 0x9C57, 0xD7F8, 0x9E9F, 0xD7F9, 0x6797, 0xD7FA, 0x6DCB,
+	0xD7FB, 0x7433, 0xD7FC, 0x81E8, 0xD7FD, 0x9716, 0xD7FE, 0x782C,
+	0xD8A1, 0x7ACB, 0xD8A2, 0x7B20, 0xD8A3, 0x7C92, 0xD8A4, 0x6469,
+	0xD8A5, 0x746A, 0xD8A6, 0x75F2, 0xD8A7, 0x78BC, 0xD8A8, 0x78E8,
+	0xD8A9, 0x99AC, 0xD8AA, 0x9B54, 0xD8AB, 0x9EBB, 0xD8AC, 0x5BDE,
+	0xD8AD, 0x5E55, 0xD8AE, 0x6F20, 0xD8AF, 0x819C, 0xD8B0, 0x83AB,
+	0xD8B1, 0x9088, 0xD8B2, 0x4E07, 0xD8B3, 0x534D, 0xD8B4, 0x5A29,
+	0xD8B5, 0x5DD2, 0xD8B6, 0x5F4E, 0xD8B7, 0x6162, 0xD8B8, 0x633D,
+	0xD8B9, 0x6669, 0xD8BA, 0x66FC, 0xD8BB, 0x6EFF, 0xD8BC, 0x6F2B,
+	0xD8BD, 0x7063, 0xD8BE, 0x779E, 0xD8BF, 0x842C, 0xD8C0, 0x8513,
+	0xD8C1, 0x883B, 0xD8C2, 0x8F13, 0xD8C3, 0x9945, 0xD8C4, 0x9C3B,
+	0xD8C5, 0x551C, 0xD8C6, 0x62B9, 0xD8C7, 0x672B, 0xD8C8, 0x6CAB,
+	0xD8C9, 0x8309, 0xD8CA, 0x896A, 0xD8CB, 0x977A, 0xD8CC, 0x4EA1,
+	0xD8CD, 0x5984, 0xD8CE, 0x5FD8, 0xD8CF, 0x5FD9, 0xD8D0, 0x671B,
+	0xD8D1, 0x7DB2, 0xD8D2, 0x7F54, 0xD8D3, 0x8292, 0xD8D4, 0x832B,
+	0xD8D5, 0x83BD, 0xD8D6, 0x8F1E, 0xD8D7, 0x9099, 0xD8D8, 0x57CB,
+	0xD8D9, 0x59B9, 0xD8DA, 0x5A92, 0xD8DB, 0x5BD0, 0xD8DC, 0x6627,
+	0xD8DD, 0x679A, 0xD8DE, 0x6885, 0xD8DF, 0x6BCF, 0xD8E0, 0x7164,
+	0xD8E1, 0x7F75, 0xD8E2, 0x8CB7, 0xD8E3, 0x8CE3, 0xD8E4, 0x9081,
+	0xD8E5, 0x9B45, 0xD8E6, 0x8108, 0xD8E7, 0x8C8A, 0xD8E8, 0x964C,
+	0xD8E9, 0x9A40, 0xD8EA, 0x9EA5, 0xD8EB, 0x5B5F, 0xD8EC, 0x6C13,
+	0xD8ED, 0x731B, 0xD8EE, 0x76F2, 0xD8EF, 0x76DF, 0xD8F0, 0x840C,
+	0xD8F1, 0x51AA, 0xD8F2, 0x8993, 0xD8F3, 0x514D, 0xD8F4, 0x5195,
+	0xD8F5, 0x52C9, 0xD8F6, 0x68C9, 0xD8F7, 0x6C94, 0xD8F8, 0x7704,
+	0xD8F9, 0x7720, 0xD8FA, 0x7DBF, 0xD8FB, 0x7DEC, 0xD8FC, 0x9762,
+	0xD8FD, 0x9EB5, 0xD8FE, 0x6EC5, 0xD9A1, 0x8511, 0xD9A2, 0x51A5,
+	0xD9A3, 0x540D, 0xD9A4, 0x547D, 0xD9A5, 0x660E, 0xD9A6, 0x669D,
+	0xD9A7, 0x6927, 0xD9A8, 0x6E9F, 0xD9A9, 0x76BF, 0xD9AA, 0x7791,
+	0xD9AB, 0x8317, 0xD9AC, 0x84C2, 0xD9AD, 0x879F, 0xD9AE, 0x9169,
+	0xD9AF, 0x9298, 0xD9B0, 0x9CF4, 0xD9B1, 0x8882, 0xD9B2, 0x4FAE,
+	0xD9B3, 0x5192, 0xD9B4, 0x52DF, 0xD9B5, 0x59C6, 0xD9B6, 0x5E3D,
+	0xD9B7, 0x6155, 0xD9B8, 0x6478, 0xD9B9, 0x6479, 0xD9BA, 0x66AE,
+	0xD9BB, 0x67D0, 0xD9BC, 0x6A21, 0xD9BD, 0x6BCD, 0xD9BE, 0x6BDB,
+	0xD9BF, 0x725F, 0xD9C0, 0x7261, 0xD9C1, 0x7441, 0xD9C2, 0x7738,
+	0xD9C3, 0x77DB, 0xD9C4, 0x8017, 0xD9C5, 0x82BC, 0xD9C6, 0x8305,
+	0xD9C7, 0x8B00, 0xD9C8, 0x8B28, 0xD9C9, 0x8C8C, 0xD9CA, 0x6728,
+	0xD9CB, 0x6C90, 0xD9CC, 0x7267, 0xD9CD, 0x76EE, 0xD9CE, 0x7766,
+	0xD9CF, 0x7A46, 0xD9D0, 0x9DA9, 0xD9D1, 0x6B7F, 0xD9D2, 0x6C92,
+	0xD9D3, 0x5922, 0xD9D4, 0x6726, 0xD9D5, 0x8499, 0xD9D6, 0x536F,
+	0xD9D7, 0x5893, 0xD9D8, 0x5999, 0xD9D9, 0x5EDF, 0xD9DA, 0x63CF,
+	0xD9DB, 0x6634, 0xD9DC, 0x6773, 0xD9DD, 0x6E3A, 0xD9DE, 0x732B,
+	0xD9DF, 0x7AD7, 0xD9E0, 0x82D7, 0xD9E1, 0x9328, 0xD9E2, 0x52D9,
+	0xD9E3, 0x5DEB, 0xD9E4, 0x61AE, 0xD9E5, 0x61CB, 0xD9E6, 0x620A,
+	0xD9E7, 0x62C7, 0xD9E8, 0x64AB, 0xD9E9, 0x65E0, 0xD9EA, 0x6959,
+	0xD9EB, 0x6B66, 0xD9EC, 0x6BCB, 0xD9ED, 0x7121, 0xD9EE, 0x73F7,
+	0xD9EF, 0x755D, 0xD9F0, 0x7E46, 0xD9F1, 0x821E, 0xD9F2, 0x8302,
+	0xD9F3, 0x856A, 0xD9F4, 0x8AA3, 0xD9F5, 0x8CBF, 0xD9F6, 0x9727,
+	0xD9F7, 0x9D61, 0xD9F8, 0x58A8, 0xD9F9, 0x9ED8, 0xD9FA, 0x5011,
+	0xD9FB, 0x520E, 0xD9FC, 0x543B, 0xD9FD, 0x554F, 0xD9FE, 0x6587,
+	0xDAA1, 0x6C76, 0xDAA2, 0x7D0A, 0xDAA3, 0x7D0B, 0xDAA4, 0x805E,
+	0xDAA5, 0x868A, 0xDAA6, 0x9580, 0xDAA7, 0x96EF, 0xDAA8, 0x52FF,
+	0xDAA9, 0x6C95, 0xDAAA, 0x7269, 0xDAAB, 0x5473, 0xDAAC, 0x5A9A,
+	0xDAAD, 0x5C3E, 0xDAAE, 0x5D4B, 0xDAAF, 0x5F4C, 0xDAB0, 0x5FAE,
+	0xDAB1, 0x672A, 0xDAB2, 0x68B6, 0xDAB3, 0x6963, 0xDAB4, 0x6E3C,
+	0xDAB5, 0x6E44, 0xDAB6, 0x7709, 0xDAB7, 0x7C73, 0xDAB8, 0x7F8E,
+	0xDAB9, 0x8587, 0xDABA, 0x8B0E, 0xDABB, 0x8FF7, 0xDABC, 0x9761,
+	0xDABD, 0x9EF4, 0xDABE, 0x5CB7, 0xDABF, 0x60B6, 0xDAC0, 0x610D,
+	0xDAC1, 0x61AB, 0xDAC2, 0x654F, 0xDAC3, 0x65FB, 0xDAC4, 0x65FC,
+	0xDAC5, 0x6C11, 0xDAC6, 0x6CEF, 0xDAC7, 0x739F, 0xDAC8, 0x73C9,
+	0xDAC9, 0x7DE1, 0xDACA, 0x9594, 0xDACB, 0x5BC6, 0xDACC, 0x871C,
+	0xDACD, 0x8B10, 0xDACE, 0x525D, 0xDACF, 0x535A, 0xDAD0, 0x62CD,
+	0xDAD1, 0x640F, 0xDAD2, 0x64B2, 0xDAD3, 0x6734, 0xDAD4, 0x6A38,
+	0xDAD5, 0x6CCA, 0xDAD6, 0x73C0, 0xDAD7, 0x749E, 0xDAD8, 0x7B94,
+	0xDAD9, 0x7C95, 0xDADA, 0x7E1B, 0xDADB, 0x818A, 0xDADC, 0x8236,
+	0xDADD, 0x8584, 0xDADE, 0x8FEB, 0xDADF, 0x96F9, 0xDAE0, 0x99C1,
+	0xDAE1, 0x4F34, 0xDAE2, 0x534A, 0xDAE3, 0x53CD, 0xDAE4, 0x53DB,
+	0xDAE5, 0x62CC, 0xDAE6, 0x642C, 0xDAE7, 0x6500, 0xDAE8, 0x6591,
+	0xDAE9, 0x69C3, 0xDAEA, 0x6CEE, 0xDAEB, 0x6F58, 0xDAEC, 0x73ED,
+	0xDAED, 0x7554, 0xDAEE, 0x7622, 0xDAEF, 0x76E4, 0xDAF0, 0x76FC,
+	0xDAF1, 0x78D0, 0xDAF2, 0x78FB, 0xDAF3, 0x792C, 0xDAF4, 0x7D46,
+	0xDAF5, 0x822C, 0xDAF6, 0x87E0, 0xDAF7, 0x8FD4, 0xDAF8, 0x9812,
+	0xDAF9, 0x98EF, 0xDAFA, 0x52C3, 0xDAFB, 0x62D4, 0xDAFC, 0x64A5,
+	0xDAFD, 0x6E24, 0xDAFE, 0x6F51, 0xDBA1, 0x767C, 0xDBA2, 0x8DCB,
+	0xDBA3, 0x91B1, 0xDBA4, 0x9262, 0xDBA5, 0x9AEE, 0xDBA6, 0x9B43,
+	0xDBA7, 0x5023, 0xDBA8, 0x508D, 0xDBA9, 0x574A, 0xDBAA, 0x59A8,
+	0xDBAB, 0x5C28, 0xDBAC, 0x5E47, 0xDBAD, 0x5F77, 0xDBAE, 0x623F,
+	0xDBAF, 0x653E, 0xDBB0, 0x65B9, 0xDBB1, 0x65C1, 0xDBB2, 0x6609,
+	0xDBB3, 0x678B, 0xDBB4, 0x699C, 0xDBB5, 0x6EC2, 0xDBB6, 0x78C5,
+	0xDBB7, 0x7D21, 0xDBB8, 0x80AA, 0xDBB9, 0x8180, 0xDBBA, 0x822B,
+	0xDBBB, 0x82B3, 0xDBBC, 0x84A1, 0xDBBD, 0x868C, 0xDBBE, 0x8A2A,
+	0xDBBF, 0x8B17, 0xDBC0, 0x90A6, 0xDBC1, 0x9632, 0xDBC2, 0x9F90,
+	0xDBC3, 0x500D, 0xDBC4, 0x4FF3, 0xDBC5, 0xF963, 0xDBC6, 0x57F9,
+	0xDBC7, 0x5F98, 0xDBC8, 0x62DC, 0xDBC9, 0x6392, 0xDBCA, 0x676F,
+	0xDBCB, 0x6E43, 0xDBCC, 0x7119, 0xDBCD, 0x76C3, 0xDBCE, 0x80CC,
+	0xDBCF, 0x80DA, 0xDBD0, 0x88F4, 0xDBD1, 0x88F5, 0xDBD2, 0x8919,
+	0xDBD3, 0x8CE0, 0xDBD4, 0x8F29, 0xDBD5, 0x914D, 0xDBD6, 0x966A,
+	0xDBD7, 0x4F2F, 0xDBD8, 0x4F70, 0xDBD9, 0x5E1B, 0xDBDA, 0x67CF,
+	0xDBDB, 0x6822, 0xDBDC, 0x767D, 0xDBDD, 0x767E, 0xDBDE, 0x9B44,
+	0xDBDF, 0x5E61, 0xDBE0, 0x6A0A, 0xDBE1, 0x7169, 0xDBE2, 0x71D4,
+	0xDBE3, 0x756A, 0xDBE4, 0xF964, 0xDBE5, 0x7E41, 0xDBE6, 0x8543,
+	0xDBE7, 0x85E9, 0xDBE8, 0x98DC, 0xDBE9, 0x4F10, 0xDBEA, 0x7B4F,
+	0xDBEB, 0x7F70, 0xDBEC, 0x95A5, 0xDBED, 0x51E1, 0xDBEE, 0x5E06,
+	0xDBEF, 0x68B5, 0xDBF0, 0x6C3E, 0xDBF1, 0x6C4E, 0xDBF2, 0x6CDB,
+	0xDBF3, 0x72AF, 0xDBF4, 0x7BC4, 0xDBF5, 0x8303, 0xDBF6, 0x6CD5,
+	0xDBF7, 0x743A, 0xDBF8, 0x50FB, 0xDBF9, 0x5288, 0xDBFA, 0x58C1,
+	0xDBFB, 0x64D8, 0xDBFC, 0x6A97, 0xDBFD, 0x74A7, 0xDBFE, 0x7656,
+	0xDCA1, 0x78A7, 0xDCA2, 0x8617, 0xDCA3, 0x95E2, 0xDCA4, 0x9739,
+	0xDCA5, 0xF965, 0xDCA6, 0x535E, 0xDCA7, 0x5F01, 0xDCA8, 0x8B8A,
+	0xDCA9, 0x8FA8, 0xDCAA, 0x8FAF, 0xDCAB, 0x908A, 0xDCAC, 0x5225,
+	0xDCAD, 0x77A5, 0xDCAE, 0x9C49, 0xDCAF, 0x9F08, 0xDCB0, 0x4E19,
+	0xDCB1, 0x5002, 0xDCB2, 0x5175, 0xDCB3, 0x5C5B, 0xDCB4, 0x5E77,
+	0xDCB5, 0x661E, 0xDCB6, 0x663A, 0xDCB7, 0x67C4, 0xDCB8, 0x68C5,
+	0xDCB9, 0x70B3, 0xDCBA, 0x7501, 0xDCBB, 0x75C5, 0xDCBC, 0x79C9,
+	0xDCBD, 0x7ADD, 0xDCBE, 0x8F27, 0xDCBF, 0x9920, 0xDCC0, 0x9A08,
+	0xDCC1, 0x4FDD, 0xDCC2, 0x5821, 0xDCC3, 0x5831, 0xDCC4, 0x5BF6,
+	0xDCC5, 0x666E, 0xDCC6, 0x6B65, 0xDCC7, 0x6D11, 0xDCC8, 0x6E7A,
+	0xDCC9, 0x6F7D, 0xDCCA, 0x73E4, 0xDCCB, 0x752B, 0xDCCC, 0x83E9,
+	0xDCCD, 0x88DC, 0xDCCE, 0x8913, 0xDCCF, 0x8B5C, 0xDCD0, 0x8F14,
+	0xDCD1, 0x4F0F, 0xDCD2, 0x50D5, 0xDCD3, 0x5310, 0xDCD4, 0x535C,
+	0xDCD5, 0x5B93, 0xDCD6, 0x5FA9, 0xDCD7, 0x670D, 0xDCD8, 0x798F,
+	0xDCD9, 0x8179, 0xDCDA, 0x832F, 0xDCDB, 0x8514, 0xDCDC, 0x8907,
+	0xDCDD, 0x8986, 0xDCDE, 0x8F39, 0xDCDF, 0x8F3B, 0xDCE0, 0x99A5,
+	0xDCE1, 0x9C12, 0xDCE2, 0x672C, 0xDCE3, 0x4E76, 0xDCE4, 0x4FF8,
+	0xDCE5, 0x5949, 0xDCE6, 0x5C01, 0xDCE7, 0x5CEF, 0xDCE8, 0x5CF0,
+	0xDCE9, 0x6367, 0xDCEA, 0x68D2, 0xDCEB, 0x70FD, 0xDCEC, 0x71A2,
+	0xDCED, 0x742B, 0xDCEE, 0x7E2B, 0xDCEF, 0x84EC, 0xDCF0, 0x8702,
+	0xDCF1, 0x9022, 0xDCF2, 0x92D2, 0xDCF3, 0x9CF3, 0xDCF4, 0x4E0D,
+	0xDCF5, 0x4ED8, 0xDCF6, 0x4FEF, 0xDCF7, 0x5085, 0xDCF8, 0x5256,
+	0xDCF9, 0x526F, 0xDCFA, 0x5426, 0xDCFB, 0x5490, 0xDCFC, 0x57E0,
+	0xDCFD, 0x592B, 0xDCFE, 0x5A66, 0xDDA1, 0x5B5A, 0xDDA2, 0x5B75,
+	0xDDA3, 0x5BCC, 0xDDA4, 0x5E9C, 0xDDA5, 0xF966, 0xDDA6, 0x6276,
+	0xDDA7, 0x6577, 0xDDA8, 0x65A7, 0xDDA9, 0x6D6E, 0xDDAA, 0x6EA5,
+	0xDDAB, 0x7236, 0xDDAC, 0x7B26, 0xDDAD, 0x7C3F, 0xDDAE, 0x7F36,
+	0xDDAF, 0x8150, 0xDDB0, 0x8151, 0xDDB1, 0x819A, 0xDDB2, 0x8240,
+	0xDDB3, 0x8299, 0xDDB4, 0x83A9, 0xDDB5, 0x8A03, 0xDDB6, 0x8CA0,
+	0xDDB7, 0x8CE6, 0xDDB8, 0x8CFB, 0xDDB9, 0x8D74, 0xDDBA, 0x8DBA,
+	0xDDBB, 0x90E8, 0xDDBC, 0x91DC, 0xDDBD, 0x961C, 0xDDBE, 0x9644,
+	0xDDBF, 0x99D9, 0xDDC0, 0x9CE7, 0xDDC1, 0x5317, 0xDDC2, 0x5206,
+	0xDDC3, 0x5429, 0xDDC4, 0x5674, 0xDDC5, 0x58B3, 0xDDC6, 0x5954,
+	0xDDC7, 0x596E, 0xDDC8, 0x5FFF, 0xDDC9, 0x61A4, 0xDDCA, 0x626E,
+	0xDDCB, 0x6610, 0xDDCC, 0x6C7E, 0xDDCD, 0x711A, 0xDDCE, 0x76C6,
+	0xDDCF, 0x7C89, 0xDDD0, 0x7CDE, 0xDDD1, 0x7D1B, 0xDDD2, 0x82AC,
+	0xDDD3, 0x8CC1, 0xDDD4, 0x96F0, 0xDDD5, 0xF967, 0xDDD6, 0x4F5B,
+	0xDDD7, 0x5F17, 0xDDD8, 0x5F7F, 0xDDD9, 0x62C2, 0xDDDA, 0x5D29,
+	0xDDDB, 0x670B, 0xDDDC, 0x68DA, 0xDDDD, 0x787C, 0xDDDE, 0x7E43,
+	0xDDDF, 0x9D6C, 0xDDE0, 0x4E15, 0xDDE1, 0x5099, 0xDDE2, 0x5315,
+	0xDDE3, 0x532A, 0xDDE4, 0x5351, 0xDDE5, 0x5983, 0xDDE6, 0x5A62,
+	0xDDE7, 0x5E87, 0xDDE8, 0x60B2, 0xDDE9, 0x618A, 0xDDEA, 0x6249,
+	0xDDEB, 0x6279, 0xDDEC, 0x6590, 0xDDED, 0x6787, 0xDDEE, 0x69A7,
+	0xDDEF, 0x6BD4, 0xDDF0, 0x6BD6, 0xDDF1, 0x6BD7, 0xDDF2, 0x6BD8,
+	0xDDF3, 0x6CB8, 0xDDF4, 0xF968, 0xDDF5, 0x7435, 0xDDF6, 0x75FA,
+	0xDDF7, 0x7812, 0xDDF8, 0x7891, 0xDDF9, 0x79D5, 0xDDFA, 0x79D8,
+	0xDDFB, 0x7C83, 0xDDFC, 0x7DCB, 0xDDFD, 0x7FE1, 0xDDFE, 0x80A5,
+	0xDEA1, 0x813E, 0xDEA2, 0x81C2, 0xDEA3, 0x83F2, 0xDEA4, 0x871A,
+	0xDEA5, 0x88E8, 0xDEA6, 0x8AB9, 0xDEA7, 0x8B6C, 0xDEA8, 0x8CBB,
+	0xDEA9, 0x9119, 0xDEAA, 0x975E, 0xDEAB, 0x98DB, 0xDEAC, 0x9F3B,
+	0xDEAD, 0x56AC, 0xDEAE, 0x5B2A, 0xDEAF, 0x5F6C, 0xDEB0, 0x658C,
+	0xDEB1, 0x6AB3, 0xDEB2, 0x6BAF, 0xDEB3, 0x6D5C, 0xDEB4, 0x6FF1,
+	0xDEB5, 0x7015, 0xDEB6, 0x725D, 0xDEB7, 0x73AD, 0xDEB8, 0x8CA7,
+	0xDEB9, 0x8CD3, 0xDEBA, 0x983B, 0xDEBB, 0x6191, 0xDEBC, 0x6C37,
+	0xDEBD, 0x8058, 0xDEBE, 0x9A01, 0xDEBF, 0x4E4D, 0xDEC0, 0x4E8B,
+	0xDEC1, 0x4E9B, 0xDEC2, 0x4ED5, 0xDEC3, 0x4F3A, 0xDEC4, 0x4F3C,
+	0xDEC5, 0x4F7F, 0xDEC6, 0x4FDF, 0xDEC7, 0x50FF, 0xDEC8, 0x53F2,
+	0xDEC9, 0x53F8, 0xDECA, 0x5506, 0xDECB, 0x55E3, 0xDECC, 0x56DB,
+	0xDECD, 0x58EB, 0xDECE, 0x5962, 0xDECF, 0x5A11, 0xDED0, 0x5BEB,
+	0xDED1, 0x5BFA, 0xDED2, 0x5C04, 0xDED3, 0x5DF3, 0xDED4, 0x5E2B,
+	0xDED5, 0x5F99, 0xDED6, 0x601D, 0xDED7, 0x6368, 0xDED8, 0x659C,
+	0xDED9, 0x65AF, 0xDEDA, 0x67F6, 0xDEDB, 0x67FB, 0xDEDC, 0x68AD,
+	0xDEDD, 0x6B7B, 0xDEDE, 0x6C99, 0xDEDF, 0x6CD7, 0xDEE0, 0x6E23,
+	0xDEE1, 0x7009, 0xDEE2, 0x7345, 0xDEE3, 0x7802, 0xDEE4, 0x793E,
+	0xDEE5, 0x7940, 0xDEE6, 0x7960, 0xDEE7, 0x79C1, 0xDEE8, 0x7BE9,
+	0xDEE9, 0x7D17, 0xDEEA, 0x7D72, 0xDEEB, 0x8086, 0xDEEC, 0x820D,
+	0xDEED, 0x838E, 0xDEEE, 0x84D1, 0xDEEF, 0x86C7, 0xDEF0, 0x88DF,
+	0xDEF1, 0x8A50, 0xDEF2, 0x8A5E, 0xDEF3, 0x8B1D, 0xDEF4, 0x8CDC,
+	0xDEF5, 0x8D66, 0xDEF6, 0x8FAD, 0xDEF7, 0x90AA, 0xDEF8, 0x98FC,
+	0xDEF9, 0x99DF, 0xDEFA, 0x9E9D, 0xDEFB, 0x524A, 0xDEFC, 0xF969,
+	0xDEFD, 0x6714, 0xDEFE, 0xF96A, 0xDFA1, 0x5098, 0xDFA2, 0x522A,
+	0xDFA3, 0x5C71, 0xDFA4, 0x6563, 0xDFA5, 0x6C55, 0xDFA6, 0x73CA,
+	0xDFA7, 0x7523, 0xDFA8, 0x759D, 0xDFA9, 0x7B97, 0xDFAA, 0x849C,
+	0xDFAB, 0x9178, 0xDFAC, 0x9730, 0xDFAD, 0x4E77, 0xDFAE, 0x6492,
+	0xDFAF, 0x6BBA, 0xDFB0, 0x715E, 0xDFB1, 0x85A9, 0xDFB2, 0x4E09,
+	0xDFB3, 0xF96B, 0xDFB4, 0x6749, 0xDFB5, 0x68EE, 0xDFB6, 0x6E17,
+	0xDFB7, 0x829F, 0xDFB8, 0x8518, 0xDFB9, 0x886B, 0xDFBA, 0x63F7,
+	0xDFBB, 0x6F81, 0xDFBC, 0x9212, 0xDFBD, 0x98AF, 0xDFBE, 0x4E0A,
+	0xDFBF, 0x50B7, 0xDFC0, 0x50CF, 0xDFC1, 0x511F, 0xDFC2, 0x5546,
+	0xDFC3, 0x55AA, 0xDFC4, 0x5617, 0xDFC5, 0x5B40, 0xDFC6, 0x5C19,
+	0xDFC7, 0x5CE0, 0xDFC8, 0x5E38, 0xDFC9, 0x5E8A, 0xDFCA, 0x5EA0,
+	0xDFCB, 0x5EC2, 0xDFCC, 0x60F3, 0xDFCD, 0x6851, 0xDFCE, 0x6A61,
+	0xDFCF, 0x6E58, 0xDFD0, 0x723D, 0xDFD1, 0x7240, 0xDFD2, 0x72C0,
+	0xDFD3, 0x76F8, 0xDFD4, 0x7965, 0xDFD5, 0x7BB1, 0xDFD6, 0x7FD4,
+	0xDFD7, 0x88F3, 0xDFD8, 0x89F4, 0xDFD9, 0x8A73, 0xDFDA, 0x8C61,
+	0xDFDB, 0x8CDE, 0xDFDC, 0x971C, 0xDFDD, 0x585E, 0xDFDE, 0x74BD,
+	0xDFDF, 0x8CFD, 0xDFE0, 0x55C7, 0xDFE1, 0xF96C, 0xDFE2, 0x7A61,
+	0xDFE3, 0x7D22, 0xDFE4, 0x8272, 0xDFE5, 0x7272, 0xDFE6, 0x751F,
+	0xDFE7, 0x7525, 0xDFE8, 0xF96D, 0xDFE9, 0x7B19, 0xDFEA, 0x5885,
+	0xDFEB, 0x58FB, 0xDFEC, 0x5DBC, 0xDFED, 0x5E8F, 0xDFEE, 0x5EB6,
+	0xDFEF, 0x5F90, 0xDFF0, 0x6055, 0xDFF1, 0x6292, 0xDFF2, 0x637F,
+	0xDFF3, 0x654D, 0xDFF4, 0x6691, 0xDFF5, 0x66D9, 0xDFF6, 0x66F8,
+	0xDFF7, 0x6816, 0xDFF8, 0x68F2, 0xDFF9, 0x7280, 0xDFFA, 0x745E,
+	0xDFFB, 0x7B6E, 0xDFFC, 0x7D6E, 0xDFFD, 0x7DD6, 0xDFFE, 0x7F72,
+	0xE0A1, 0x80E5, 0xE0A2, 0x8212, 0xE0A3, 0x85AF, 0xE0A4, 0x897F,
+	0xE0A5, 0x8A93, 0xE0A6, 0x901D, 0xE0A7, 0x92E4, 0xE0A8, 0x9ECD,
+	0xE0A9, 0x9F20, 0xE0AA, 0x5915, 0xE0AB, 0x596D, 0xE0AC, 0x5E2D,
+	0xE0AD, 0x60DC, 0xE0AE, 0x6614, 0xE0AF, 0x6673, 0xE0B0, 0x6790,
+	0xE0B1, 0x6C50, 0xE0B2, 0x6DC5, 0xE0B3, 0x6F5F, 0xE0B4, 0x77F3,
+	0xE0B5, 0x78A9, 0xE0B6, 0x84C6, 0xE0B7, 0x91CB, 0xE0B8, 0x932B,
+	0xE0B9, 0x4ED9, 0xE0BA, 0x50CA, 0xE0BB, 0x5148, 0xE0BC, 0x5584,
+	0xE0BD, 0x5B0B, 0xE0BE, 0x5BA3, 0xE0BF, 0x6247, 0xE0C0, 0x657E,
+	0xE0C1, 0x65CB, 0xE0C2, 0x6E32, 0xE0C3, 0x717D, 0xE0C4, 0x7401,
+	0xE0C5, 0x7444, 0xE0C6, 0x7487, 0xE0C7, 0x74BF, 0xE0C8, 0x766C,
+	0xE0C9, 0x79AA, 0xE0CA, 0x7DDA, 0xE0CB, 0x7E55, 0xE0CC, 0x7FA8,
+	0xE0CD, 0x817A, 0xE0CE, 0x81B3, 0xE0CF, 0x8239, 0xE0D0, 0x861A,
+	0xE0D1, 0x87EC, 0xE0D2, 0x8A75, 0xE0D3, 0x8DE3, 0xE0D4, 0x9078,
+	0xE0D5, 0x9291, 0xE0D6, 0x9425, 0xE0D7, 0x994D, 0xE0D8, 0x9BAE,
+	0xE0D9, 0x5368, 0xE0DA, 0x5C51, 0xE0DB, 0x6954, 0xE0DC, 0x6CC4,
+	0xE0DD, 0x6D29, 0xE0DE, 0x6E2B, 0xE0DF, 0x820C, 0xE0E0, 0x859B,
+	0xE0E1, 0x893B, 0xE0E2, 0x8A2D, 0xE0E3, 0x8AAA, 0xE0E4, 0x96EA,
+	0xE0E5, 0x9F67, 0xE0E6, 0x5261, 0xE0E7, 0x66B9, 0xE0E8, 0x6BB2,
+	0xE0E9, 0x7E96, 0xE0EA, 0x87FE, 0xE0EB, 0x8D0D, 0xE0EC, 0x9583,
+	0xE0ED, 0x965D, 0xE0EE, 0x651D, 0xE0EF, 0x6D89, 0xE0F0, 0x71EE,
+	0xE0F1, 0xF96E, 0xE0F2, 0x57CE, 0xE0F3, 0x59D3, 0xE0F4, 0x5BAC,
+	0xE0F5, 0x6027, 0xE0F6, 0x60FA, 0xE0F7, 0x6210, 0xE0F8, 0x661F,
+	0xE0F9, 0x665F, 0xE0FA, 0x7329, 0xE0FB, 0x73F9, 0xE0FC, 0x76DB,
+	0xE0FD, 0x7701, 0xE0FE, 0x7B6C, 0xE1A1, 0x8056, 0xE1A2, 0x8072,
+	0xE1A3, 0x8165, 0xE1A4, 0x8AA0, 0xE1A5, 0x9192, 0xE1A6, 0x4E16,
+	0xE1A7, 0x52E2, 0xE1A8, 0x6B72, 0xE1A9, 0x6D17, 0xE1AA, 0x7A05,
+	0xE1AB, 0x7B39, 0xE1AC, 0x7D30, 0xE1AD, 0xF96F, 0xE1AE, 0x8CB0,
+	0xE1AF, 0x53EC, 0xE1B0, 0x562F, 0xE1B1, 0x5851, 0xE1B2, 0x5BB5,
+	0xE1B3, 0x5C0F, 0xE1B4, 0x5C11, 0xE1B5, 0x5DE2, 0xE1B6, 0x6240,
+	0xE1B7, 0x6383, 0xE1B8, 0x6414, 0xE1B9, 0x662D, 0xE1BA, 0x68B3,
+	0xE1BB, 0x6CBC, 0xE1BC, 0x6D88, 0xE1BD, 0x6EAF, 0xE1BE, 0x701F,
+	0xE1BF, 0x70A4, 0xE1C0, 0x71D2, 0xE1C1, 0x7526, 0xE1C2, 0x758F,
+	0xE1C3, 0x758E, 0xE1C4, 0x7619, 0xE1C5, 0x7B11, 0xE1C6, 0x7BE0,
+	0xE1C7, 0x7C2B, 0xE1C8, 0x7D20, 0xE1C9, 0x7D39, 0xE1CA, 0x852C,
+	0xE1CB, 0x856D, 0xE1CC, 0x8607, 0xE1CD, 0x8A34, 0xE1CE, 0x900D,
+	0xE1CF, 0x9061, 0xE1D0, 0x90B5, 0xE1D1, 0x92B7, 0xE1D2, 0x97F6,
+	0xE1D3, 0x9A37, 0xE1D4, 0x4FD7, 0xE1D5, 0x5C6C, 0xE1D6, 0x675F,
+	0xE1D7, 0x6D91, 0xE1D8, 0x7C9F, 0xE1D9, 0x7E8C, 0xE1DA, 0x8B16,
+	0xE1DB, 0x8D16, 0xE1DC, 0x901F, 0xE1DD, 0x5B6B, 0xE1DE, 0x5DFD,
+	0xE1DF, 0x640D, 0xE1E0, 0x84C0, 0xE1E1, 0x905C, 0xE1E2, 0x98E1,
+	0xE1E3, 0x7387, 0xE1E4, 0x5B8B, 0xE1E5, 0x609A, 0xE1E6, 0x677E,
+	0xE1E7, 0x6DDE, 0xE1E8, 0x8A1F, 0xE1E9, 0x8AA6, 0xE1EA, 0x9001,
+	0xE1EB, 0x980C, 0xE1EC, 0x5237, 0xE1ED, 0xF970, 0xE1EE, 0x7051,
+	0xE1EF, 0x788E, 0xE1F0, 0x9396, 0xE1F1, 0x8870, 0xE1F2, 0x91D7,
+	0xE1F3, 0x4FEE, 0xE1F4, 0x53D7, 0xE1F5, 0x55FD, 0xE1F6, 0x56DA,
+	0xE1F7, 0x5782, 0xE1F8, 0x58FD, 0xE1F9, 0x5AC2, 0xE1FA, 0x5B88,
+	0xE1FB, 0x5CAB, 0xE1FC, 0x5CC0, 0xE1FD, 0x5E25, 0xE1FE, 0x6101,
+	0xE2A1, 0x620D, 0xE2A2, 0x624B, 0xE2A3, 0x6388, 0xE2A4, 0x641C,
+	0xE2A5, 0x6536, 0xE2A6, 0x6578, 0xE2A7, 0x6A39, 0xE2A8, 0x6B8A,
+	0xE2A9, 0x6C34, 0xE2AA, 0x6D19, 0xE2AB, 0x6F31, 0xE2AC, 0x71E7,
+	0xE2AD, 0x72E9, 0xE2AE, 0x7378, 0xE2AF, 0x7407, 0xE2B0, 0x74B2,
+	0xE2B1, 0x7626, 0xE2B2, 0x7761, 0xE2B3, 0x79C0, 0xE2B4, 0x7A57,
+	0xE2B5, 0x7AEA, 0xE2B6, 0x7CB9, 0xE2B7, 0x7D8F, 0xE2B8, 0x7DAC,
+	0xE2B9, 0x7E61, 0xE2BA, 0x7F9E, 0xE2BB, 0x8129, 0xE2BC, 0x8331,
+	0xE2BD, 0x8490, 0xE2BE, 0x84DA, 0xE2BF, 0x85EA, 0xE2C0, 0x8896,
+	0xE2C1, 0x8AB0, 0xE2C2, 0x8B90, 0xE2C3, 0x8F38, 0xE2C4, 0x9042,
+	0xE2C5, 0x9083, 0xE2C6, 0x916C, 0xE2C7, 0x9296, 0xE2C8, 0x92B9,
+	0xE2C9, 0x968B, 0xE2CA, 0x96A7, 0xE2CB, 0x96A8, 0xE2CC, 0x96D6,
+	0xE2CD, 0x9700, 0xE2CE, 0x9808, 0xE2CF, 0x9996, 0xE2D0, 0x9AD3,
+	0xE2D1, 0x9B1A, 0xE2D2, 0x53D4, 0xE2D3, 0x587E, 0xE2D4, 0x5919,
+	0xE2D5, 0x5B70, 0xE2D6, 0x5BBF, 0xE2D7, 0x6DD1, 0xE2D8, 0x6F5A,
+	0xE2D9, 0x719F, 0xE2DA, 0x7421, 0xE2DB, 0x74B9, 0xE2DC, 0x8085,
+	0xE2DD, 0x83FD, 0xE2DE, 0x5DE1, 0xE2DF, 0x5F87, 0xE2E0, 0x5FAA,
+	0xE2E1, 0x6042, 0xE2E2, 0x65EC, 0xE2E3, 0x6812, 0xE2E4, 0x696F,
+	0xE2E5, 0x6A53, 0xE2E6, 0x6B89, 0xE2E7, 0x6D35, 0xE2E8, 0x6DF3,
+	0xE2E9, 0x73E3, 0xE2EA, 0x76FE, 0xE2EB, 0x77AC, 0xE2EC, 0x7B4D,
+	0xE2ED, 0x7D14, 0xE2EE, 0x8123, 0xE2EF, 0x821C, 0xE2F0, 0x8340,
+	0xE2F1, 0x84F4, 0xE2F2, 0x8563, 0xE2F3, 0x8A62, 0xE2F4, 0x8AC4,
+	0xE2F5, 0x9187, 0xE2F6, 0x931E, 0xE2F7, 0x9806, 0xE2F8, 0x99B4,
+	0xE2F9, 0x620C, 0xE2FA, 0x8853, 0xE2FB, 0x8FF0, 0xE2FC, 0x9265,
+	0xE2FD, 0x5D07, 0xE2FE, 0x5D27, 0xE3A1, 0x5D69, 0xE3A2, 0x745F,
+	0xE3A3, 0x819D, 0xE3A4, 0x8768, 0xE3A5, 0x6FD5, 0xE3A6, 0x62FE,
+	0xE3A7, 0x7FD2, 0xE3A8, 0x8936, 0xE3A9, 0x8972, 0xE3AA, 0x4E1E,
+	0xE3AB, 0x4E58, 0xE3AC, 0x50E7, 0xE3AD, 0x52DD, 0xE3AE, 0x5347,
+	0xE3AF, 0x627F, 0xE3B0, 0x6607, 0xE3B1, 0x7E69, 0xE3B2, 0x8805,
+	0xE3B3, 0x965E, 0xE3B4, 0x4F8D, 0xE3B5, 0x5319, 0xE3B6, 0x5636,
+	0xE3B7, 0x59CB, 0xE3B8, 0x5AA4, 0xE3B9, 0x5C38, 0xE3BA, 0x5C4E,
+	0xE3BB, 0x5C4D, 0xE3BC, 0x5E02, 0xE3BD, 0x5F11, 0xE3BE, 0x6043,
+	0xE3BF, 0x65BD, 0xE3C0, 0x662F, 0xE3C1, 0x6642, 0xE3C2, 0x67BE,
+	0xE3C3, 0x67F4, 0xE3C4, 0x731C, 0xE3C5, 0x77E2, 0xE3C6, 0x793A,
+	0xE3C7, 0x7FC5, 0xE3C8, 0x8494, 0xE3C9, 0x84CD, 0xE3CA, 0x8996,
+	0xE3CB, 0x8A66, 0xE3CC, 0x8A69, 0xE3CD, 0x8AE1, 0xE3CE, 0x8C55,
+	0xE3CF, 0x8C7A, 0xE3D0, 0x57F4, 0xE3D1, 0x5BD4, 0xE3D2, 0x5F0F,
+	0xE3D3, 0x606F, 0xE3D4, 0x62ED, 0xE3D5, 0x690D, 0xE3D6, 0x6B96,
+	0xE3D7, 0x6E5C, 0xE3D8, 0x7184, 0xE3D9, 0x7BD2, 0xE3DA, 0x8755,
+	0xE3DB, 0x8B58, 0xE3DC, 0x8EFE, 0xE3DD, 0x98DF, 0xE3DE, 0x98FE,
+	0xE3DF, 0x4F38, 0xE3E0, 0x4F81, 0xE3E1, 0x4FE1, 0xE3E2, 0x547B,
+	0xE3E3, 0x5A20, 0xE3E4, 0x5BB8, 0xE3E5, 0x613C, 0xE3E6, 0x65B0,
+	0xE3E7, 0x6668, 0xE3E8, 0x71FC, 0xE3E9, 0x7533, 0xE3EA, 0x795E,
+	0xE3EB, 0x7D33, 0xE3EC, 0x814E, 0xE3ED, 0x81E3, 0xE3EE, 0x8398,
+	0xE3EF, 0x85AA, 0xE3F0, 0x85CE, 0xE3F1, 0x8703, 0xE3F2, 0x8A0A,
+	0xE3F3, 0x8EAB, 0xE3F4, 0x8F9B, 0xE3F5, 0xF971, 0xE3F6, 0x8FC5,
+	0xE3F7, 0x5931, 0xE3F8, 0x5BA4, 0xE3F9, 0x5BE6, 0xE3FA, 0x6089,
+	0xE3FB, 0x5BE9, 0xE3FC, 0x5C0B, 0xE3FD, 0x5FC3, 0xE3FE, 0x6C81,
+	0xE4A1, 0xF972, 0xE4A2, 0x6DF1, 0xE4A3, 0x700B, 0xE4A4, 0x751A,
+	0xE4A5, 0x82AF, 0xE4A6, 0x8AF6, 0xE4A7, 0x4EC0, 0xE4A8, 0x5341,
+	0xE4A9, 0xF973, 0xE4AA, 0x96D9, 0xE4AB, 0x6C0F, 0xE4AC, 0x4E9E,
+	0xE4AD, 0x4FC4, 0xE4AE, 0x5152, 0xE4AF, 0x555E, 0xE4B0, 0x5A25,
+	0xE4B1, 0x5CE8, 0xE4B2, 0x6211, 0xE4B3, 0x7259, 0xE4B4, 0x82BD,
+	0xE4B5, 0x83AA, 0xE4B6, 0x86FE, 0xE4B7, 0x8859, 0xE4B8, 0x8A1D,
+	0xE4B9, 0x963F, 0xE4BA, 0x96C5, 0xE4BB, 0x9913, 0xE4BC, 0x9D09,
+	0xE4BD, 0x9D5D, 0xE4BE, 0x580A, 0xE4BF, 0x5CB3, 0xE4C0, 0x5DBD,
+	0xE4C1, 0x5E44, 0xE4C2, 0x60E1, 0xE4C3, 0x6115, 0xE4C4, 0x63E1,
+	0xE4C5, 0x6A02, 0xE4C6, 0x6E25, 0xE4C7, 0x9102, 0xE4C8, 0x9354,
+	0xE4C9, 0x984E, 0xE4CA, 0x9C10, 0xE4CB, 0x9F77, 0xE4CC, 0x5B89,
+	0xE4CD, 0x5CB8, 0xE4CE, 0x6309, 0xE4CF, 0x664F, 0xE4D0, 0x6848,
+	0xE4D1, 0x773C, 0xE4D2, 0x96C1, 0xE4D3, 0x978D, 0xE4D4, 0x9854,
+	0xE4D5, 0x9B9F, 0xE4D6, 0x65A1, 0xE4D7, 0x8B01, 0xE4D8, 0x8ECB,
+	0xE4D9, 0x95BC, 0xE4DA, 0x5535, 0xE4DB, 0x5CA9, 0xE4DC, 0x5DD6,
+	0xE4DD, 0x5EB5, 0xE4DE, 0x6697, 0xE4DF, 0x764C, 0xE4E0, 0x83F4,
+	0xE4E1, 0x95C7, 0xE4E2, 0x58D3, 0xE4E3, 0x62BC, 0xE4E4, 0x72CE,
+	0xE4E5, 0x9D28, 0xE4E6, 0x4EF0, 0xE4E7, 0x592E, 0xE4E8, 0x600F,
+	0xE4E9, 0x663B, 0xE4EA, 0x6B83, 0xE4EB, 0x79E7, 0xE4EC, 0x9D26,
+	0xE4ED, 0x5393, 0xE4EE, 0x54C0, 0xE4EF, 0x57C3, 0xE4F0, 0x5D16,
+	0xE4F1, 0x611B, 0xE4F2, 0x66D6, 0xE4F3, 0x6DAF, 0xE4F4, 0x788D,
+	0xE4F5, 0x827E, 0xE4F6, 0x9698, 0xE4F7, 0x9744, 0xE4F8, 0x5384,
+	0xE4F9, 0x627C, 0xE4FA, 0x6396, 0xE4FB, 0x6DB2, 0xE4FC, 0x7E0A,
+	0xE4FD, 0x814B, 0xE4FE, 0x984D, 0xE5A1, 0x6AFB, 0xE5A2, 0x7F4C,
+	0xE5A3, 0x9DAF, 0xE5A4, 0x9E1A, 0xE5A5, 0x4E5F, 0xE5A6, 0x503B,
+	0xE5A7, 0x51B6, 0xE5A8, 0x591C, 0xE5A9, 0x60F9, 0xE5AA, 0x63F6,
+	0xE5AB, 0x6930, 0xE5AC, 0x723A, 0xE5AD, 0x8036, 0xE5AE, 0xF974,
+	0xE5AF, 0x91CE, 0xE5B0, 0x5F31, 0xE5B1, 0xF975, 0xE5B2, 0xF976,
+	0xE5B3, 0x7D04, 0xE5B4, 0x82E5, 0xE5B5, 0x846F, 0xE5B6, 0x84BB,
+	0xE5B7, 0x85E5, 0xE5B8, 0x8E8D, 0xE5B9, 0xF977, 0xE5BA, 0x4F6F,
+	0xE5BB, 0xF978, 0xE5BC, 0xF979, 0xE5BD, 0x58E4, 0xE5BE, 0x5B43,
+	0xE5BF, 0x6059, 0xE5C0, 0x63DA, 0xE5C1, 0x6518, 0xE5C2, 0x656D,
+	0xE5C3, 0x6698, 0xE5C4, 0xF97A, 0xE5C5, 0x694A, 0xE5C6, 0x6A23,
+	0xE5C7, 0x6D0B, 0xE5C8, 0x7001, 0xE5C9, 0x716C, 0xE5CA, 0x75D2,
+	0xE5CB, 0x760D, 0xE5CC, 0x79B3, 0xE5CD, 0x7A70, 0xE5CE, 0xF97B,
+	0xE5CF, 0x7F8A, 0xE5D0, 0xF97C, 0xE5D1, 0x8944, 0xE5D2, 0xF97D,
+	0xE5D3, 0x8B93, 0xE5D4, 0x91C0, 0xE5D5, 0x967D, 0xE5D6, 0xF97E,
+	0xE5D7, 0x990A, 0xE5D8, 0x5704, 0xE5D9, 0x5FA1, 0xE5DA, 0x65BC,
+	0xE5DB, 0x6F01, 0xE5DC, 0x7600, 0xE5DD, 0x79A6, 0xE5DE, 0x8A9E,
+	0xE5DF, 0x99AD, 0xE5E0, 0x9B5A, 0xE5E1, 0x9F6C, 0xE5E2, 0x5104,
+	0xE5E3, 0x61B6, 0xE5E4, 0x6291, 0xE5E5, 0x6A8D, 0xE5E6, 0x81C6,
+	0xE5E7, 0x5043, 0xE5E8, 0x5830, 0xE5E9, 0x5F66, 0xE5EA, 0x7109,
+	0xE5EB, 0x8A00, 0xE5EC, 0x8AFA, 0xE5ED, 0x5B7C, 0xE5EE, 0x8616,
+	0xE5EF, 0x4FFA, 0xE5F0, 0x513C, 0xE5F1, 0x56B4, 0xE5F2, 0x5944,
+	0xE5F3, 0x63A9, 0xE5F4, 0x6DF9, 0xE5F5, 0x5DAA, 0xE5F6, 0x696D,
+	0xE5F7, 0x5186, 0xE5F8, 0x4E88, 0xE5F9, 0x4F59, 0xE5FA, 0xF97F,
+	0xE5FB, 0xF980, 0xE5FC, 0xF981, 0xE5FD, 0x5982, 0xE5FE, 0xF982,
+	0xE6A1, 0xF983, 0xE6A2, 0x6B5F, 0xE6A3, 0x6C5D, 0xE6A4, 0xF984,
+	0xE6A5, 0x74B5, 0xE6A6, 0x7916, 0xE6A7, 0xF985, 0xE6A8, 0x8207,
+	0xE6A9, 0x8245, 0xE6AA, 0x8339, 0xE6AB, 0x8F3F, 0xE6AC, 0x8F5D,
+	0xE6AD, 0xF986, 0xE6AE, 0x9918, 0xE6AF, 0xF987, 0xE6B0, 0xF988,
+	0xE6B1, 0xF989, 0xE6B2, 0x4EA6, 0xE6B3, 0xF98A, 0xE6B4, 0x57DF,
+	0xE6B5, 0x5F79, 0xE6B6, 0x6613, 0xE6B7, 0xF98B, 0xE6B8, 0xF98C,
+	0xE6B9, 0x75AB, 0xE6BA, 0x7E79, 0xE6BB, 0x8B6F, 0xE6BC, 0xF98D,
+	0xE6BD, 0x9006, 0xE6BE, 0x9A5B, 0xE6BF, 0x56A5, 0xE6C0, 0x5827,
+	0xE6C1, 0x59F8, 0xE6C2, 0x5A1F, 0xE6C3, 0x5BB4, 0xE6C4, 0xF98E,
+	0xE6C5, 0x5EF6, 0xE6C6, 0xF98F, 0xE6C7, 0xF990, 0xE6C8, 0x6350,
+	0xE6C9, 0x633B, 0xE6CA, 0xF991, 0xE6CB, 0x693D, 0xE6CC, 0x6C87,
+	0xE6CD, 0x6CBF, 0xE6CE, 0x6D8E, 0xE6CF, 0x6D93, 0xE6D0, 0x6DF5,
+	0xE6D1, 0x6F14, 0xE6D2, 0xF992, 0xE6D3, 0x70DF, 0xE6D4, 0x7136,
+	0xE6D5, 0x7159, 0xE6D6, 0xF993, 0xE6D7, 0x71C3, 0xE6D8, 0x71D5,
+	0xE6D9, 0xF994, 0xE6DA, 0x784F, 0xE6DB, 0x786F, 0xE6DC, 0xF995,
+	0xE6DD, 0x7B75, 0xE6DE, 0x7DE3, 0xE6DF, 0xF996, 0xE6E0, 0x7E2F,
+	0xE6E1, 0xF997, 0xE6E2, 0x884D, 0xE6E3, 0x8EDF, 0xE6E4, 0xF998,
+	0xE6E5, 0xF999, 0xE6E6, 0xF99A, 0xE6E7, 0x925B, 0xE6E8, 0xF99B,
+	0xE6E9, 0x9CF6, 0xE6EA, 0xF99C, 0xE6EB, 0xF99D, 0xE6EC, 0xF99E,
+	0xE6ED, 0x6085, 0xE6EE, 0x6D85, 0xE6EF, 0xF99F, 0xE6F0, 0x71B1,
+	0xE6F1, 0xF9A0, 0xE6F2, 0xF9A1, 0xE6F3, 0x95B1, 0xE6F4, 0x53AD,
+	0xE6F5, 0xF9A2, 0xE6F6, 0xF9A3, 0xE6F7, 0xF9A4, 0xE6F8, 0x67D3,
+	0xE6F9, 0xF9A5, 0xE6FA, 0x708E, 0xE6FB, 0x7130, 0xE6FC, 0x7430,
+	0xE6FD, 0x8276, 0xE6FE, 0x82D2, 0xE7A1, 0xF9A6, 0xE7A2, 0x95BB,
+	0xE7A3, 0x9AE5, 0xE7A4, 0x9E7D, 0xE7A5, 0x66C4, 0xE7A6, 0xF9A7,
+	0xE7A7, 0x71C1, 0xE7A8, 0x8449, 0xE7A9, 0xF9A8, 0xE7AA, 0xF9A9,
+	0xE7AB, 0x584B, 0xE7AC, 0xF9AA, 0xE7AD, 0xF9AB, 0xE7AE, 0x5DB8,
+	0xE7AF, 0x5F71, 0xE7B0, 0xF9AC, 0xE7B1, 0x6620, 0xE7B2, 0x668E,
+	0xE7B3, 0x6979, 0xE7B4, 0x69AE, 0xE7B5, 0x6C38, 0xE7B6, 0x6CF3,
+	0xE7B7, 0x6E36, 0xE7B8, 0x6F41, 0xE7B9, 0x6FDA, 0xE7BA, 0x701B,
+	0xE7BB, 0x702F, 0xE7BC, 0x7150, 0xE7BD, 0x71DF, 0xE7BE, 0x7370,
+	0xE7BF, 0xF9AD, 0xE7C0, 0x745B, 0xE7C1, 0xF9AE, 0xE7C2, 0x74D4,
+	0xE7C3, 0x76C8, 0xE7C4, 0x7A4E, 0xE7C5, 0x7E93, 0xE7C6, 0xF9AF,
+	0xE7C7, 0xF9B0, 0xE7C8, 0x82F1, 0xE7C9, 0x8A60, 0xE7CA, 0x8FCE,
+	0xE7CB, 0xF9B1, 0xE7CC, 0x9348, 0xE7CD, 0xF9B2, 0xE7CE, 0x9719,
+	0xE7CF, 0xF9B3, 0xE7D0, 0xF9B4, 0xE7D1, 0x4E42, 0xE7D2, 0x502A,
+	0xE7D3, 0xF9B5, 0xE7D4, 0x5208, 0xE7D5, 0x53E1, 0xE7D6, 0x66F3,
+	0xE7D7, 0x6C6D, 0xE7D8, 0x6FCA, 0xE7D9, 0x730A, 0xE7DA, 0x777F,
+	0xE7DB, 0x7A62, 0xE7DC, 0x82AE, 0xE7DD, 0x85DD, 0xE7DE, 0x8602,
+	0xE7DF, 0xF9B6, 0xE7E0, 0x88D4, 0xE7E1, 0x8A63, 0xE7E2, 0x8B7D,
+	0xE7E3, 0x8C6B, 0xE7E4, 0xF9B7, 0xE7E5, 0x92B3, 0xE7E6, 0xF9B8,
+	0xE7E7, 0x9713, 0xE7E8, 0x9810, 0xE7E9, 0x4E94, 0xE7EA, 0x4F0D,
+	0xE7EB, 0x4FC9, 0xE7EC, 0x50B2, 0xE7ED, 0x5348, 0xE7EE, 0x543E,
+	0xE7EF, 0x5433, 0xE7F0, 0x55DA, 0xE7F1, 0x5862, 0xE7F2, 0x58BA,
+	0xE7F3, 0x5967, 0xE7F4, 0x5A1B, 0xE7F5, 0x5BE4, 0xE7F6, 0x609F,
+	0xE7F7, 0xF9B9, 0xE7F8, 0x61CA, 0xE7F9, 0x6556, 0xE7FA, 0x65FF,
+	0xE7FB, 0x6664, 0xE7FC, 0x68A7, 0xE7FD, 0x6C5A, 0xE7FE, 0x6FB3,
+	0xE8A1, 0x70CF, 0xE8A2, 0x71AC, 0xE8A3, 0x7352, 0xE8A4, 0x7B7D,
+	0xE8A5, 0x8708, 0xE8A6, 0x8AA4, 0xE8A7, 0x9C32, 0xE8A8, 0x9F07,
+	0xE8A9, 0x5C4B, 0xE8AA, 0x6C83, 0xE8AB, 0x7344, 0xE8AC, 0x7389,
+	0xE8AD, 0x923A, 0xE8AE, 0x6EAB, 0xE8AF, 0x7465, 0xE8B0, 0x761F,
+	0xE8B1, 0x7A69, 0xE8B2, 0x7E15, 0xE8B3, 0x860A, 0xE8B4, 0x5140,
+	0xE8B5, 0x58C5, 0xE8B6, 0x64C1, 0xE8B7, 0x74EE, 0xE8B8, 0x7515,
+	0xE8B9, 0x7670, 0xE8BA, 0x7FC1, 0xE8BB, 0x9095, 0xE8BC, 0x96CD,
+	0xE8BD, 0x9954, 0xE8BE, 0x6E26, 0xE8BF, 0x74E6, 0xE8C0, 0x7AA9,
+	0xE8C1, 0x7AAA, 0xE8C2, 0x81E5, 0xE8C3, 0x86D9, 0xE8C4, 0x8778,
+	0xE8C5, 0x8A1B, 0xE8C6, 0x5A49, 0xE8C7, 0x5B8C, 0xE8C8, 0x5B9B,
+	0xE8C9, 0x68A1, 0xE8CA, 0x6900, 0xE8CB, 0x6D63, 0xE8CC, 0x73A9,
+	0xE8CD, 0x7413, 0xE8CE, 0x742C, 0xE8CF, 0x7897, 0xE8D0, 0x7DE9,
+	0xE8D1, 0x7FEB, 0xE8D2, 0x8118, 0xE8D3, 0x8155, 0xE8D4, 0x839E,
+	0xE8D5, 0x8C4C, 0xE8D6, 0x962E, 0xE8D7, 0x9811, 0xE8D8, 0x66F0,
+	0xE8D9, 0x5F80, 0xE8DA, 0x65FA, 0xE8DB, 0x6789, 0xE8DC, 0x6C6A,
+	0xE8DD, 0x738B, 0xE8DE, 0x502D, 0xE8DF, 0x5A03, 0xE8E0, 0x6B6A,
+	0xE8E1, 0x77EE, 0xE8E2, 0x5916, 0xE8E3, 0x5D6C, 0xE8E4, 0x5DCD,
+	0xE8E5, 0x7325, 0xE8E6, 0x754F, 0xE8E7, 0xF9BA, 0xE8E8, 0xF9BB,
+	0xE8E9, 0x50E5, 0xE8EA, 0x51F9, 0xE8EB, 0x582F, 0xE8EC, 0x592D,
+	0xE8ED, 0x5996, 0xE8EE, 0x59DA, 0xE8EF, 0x5BE5, 0xE8F0, 0xF9BC,
+	0xE8F1, 0xF9BD, 0xE8F2, 0x5DA2, 0xE8F3, 0x62D7, 0xE8F4, 0x6416,
+	0xE8F5, 0x6493, 0xE8F6, 0x64FE, 0xE8F7, 0xF9BE, 0xE8F8, 0x66DC,
+	0xE8F9, 0xF9BF, 0xE8FA, 0x6A48, 0xE8FB, 0xF9C0, 0xE8FC, 0x71FF,
+	0xE8FD, 0x7464, 0xE8FE, 0xF9C1, 0xE9A1, 0x7A88, 0xE9A2, 0x7AAF,
+	0xE9A3, 0x7E47, 0xE9A4, 0x7E5E, 0xE9A5, 0x8000, 0xE9A6, 0x8170,
+	0xE9A7, 0xF9C2, 0xE9A8, 0x87EF, 0xE9A9, 0x8981, 0xE9AA, 0x8B20,
+	0xE9AB, 0x9059, 0xE9AC, 0xF9C3, 0xE9AD, 0x9080, 0xE9AE, 0x9952,
+	0xE9AF, 0x617E, 0xE9B0, 0x6B32, 0xE9B1, 0x6D74, 0xE9B2, 0x7E1F,
+	0xE9B3, 0x8925, 0xE9B4, 0x8FB1, 0xE9B5, 0x4FD1, 0xE9B6, 0x50AD,
+	0xE9B7, 0x5197, 0xE9B8, 0x52C7, 0xE9B9, 0x57C7, 0xE9BA, 0x5889,
+	0xE9BB, 0x5BB9, 0xE9BC, 0x5EB8, 0xE9BD, 0x6142, 0xE9BE, 0x6995,
+	0xE9BF, 0x6D8C, 0xE9C0, 0x6E67, 0xE9C1, 0x6EB6, 0xE9C2, 0x7194,
+	0xE9C3, 0x7462, 0xE9C4, 0x7528, 0xE9C5, 0x752C, 0xE9C6, 0x8073,
+	0xE9C7, 0x8338, 0xE9C8, 0x84C9, 0xE9C9, 0x8E0A, 0xE9CA, 0x9394,
+	0xE9CB, 0x93DE, 0xE9CC, 0xF9C4, 0xE9CD, 0x4E8E, 0xE9CE, 0x4F51,
+	0xE9CF, 0x5076, 0xE9D0, 0x512A, 0xE9D1, 0x53C8, 0xE9D2, 0x53CB,
+	0xE9D3, 0x53F3, 0xE9D4, 0x5B87, 0xE9D5, 0x5BD3, 0xE9D6, 0x5C24,
+	0xE9D7, 0x611A, 0xE9D8, 0x6182, 0xE9D9, 0x65F4, 0xE9DA, 0x725B,
+	0xE9DB, 0x7397, 0xE9DC, 0x7440, 0xE9DD, 0x76C2, 0xE9DE, 0x7950,
+	0xE9DF, 0x7991, 0xE9E0, 0x79B9, 0xE9E1, 0x7D06, 0xE9E2, 0x7FBD,
+	0xE9E3, 0x828B, 0xE9E4, 0x85D5, 0xE9E5, 0x865E, 0xE9E6, 0x8FC2,
+	0xE9E7, 0x9047, 0xE9E8, 0x90F5, 0xE9E9, 0x91EA, 0xE9EA, 0x9685,
+	0xE9EB, 0x96E8, 0xE9EC, 0x96E9, 0xE9ED, 0x52D6, 0xE9EE, 0x5F67,
+	0xE9EF, 0x65ED, 0xE9F0, 0x6631, 0xE9F1, 0x682F, 0xE9F2, 0x715C,
+	0xE9F3, 0x7A36, 0xE9F4, 0x90C1, 0xE9F5, 0x980A, 0xE9F6, 0x4E91,
+	0xE9F7, 0xF9C5, 0xE9F8, 0x6A52, 0xE9F9, 0x6B9E, 0xE9FA, 0x6F90,
+	0xE9FB, 0x7189, 0xE9FC, 0x8018, 0xE9FD, 0x82B8, 0xE9FE, 0x8553,
+	0xEAA1, 0x904B, 0xEAA2, 0x9695, 0xEAA3, 0x96F2, 0xEAA4, 0x97FB,
+	0xEAA5, 0x851A, 0xEAA6, 0x9B31, 0xEAA7, 0x4E90, 0xEAA8, 0x718A,
+	0xEAA9, 0x96C4, 0xEAAA, 0x5143, 0xEAAB, 0x539F, 0xEAAC, 0x54E1,
+	0xEAAD, 0x5713, 0xEAAE, 0x5712, 0xEAAF, 0x57A3, 0xEAB0, 0x5A9B,
+	0xEAB1, 0x5AC4, 0xEAB2, 0x5BC3, 0xEAB3, 0x6028, 0xEAB4, 0x613F,
+	0xEAB5, 0x63F4, 0xEAB6, 0x6C85, 0xEAB7, 0x6D39, 0xEAB8, 0x6E72,
+	0xEAB9, 0x6E90, 0xEABA, 0x7230, 0xEABB, 0x733F, 0xEABC, 0x7457,
+	0xEABD, 0x82D1, 0xEABE, 0x8881, 0xEABF, 0x8F45, 0xEAC0, 0x9060,
+	0xEAC1, 0xF9C6, 0xEAC2, 0x9662, 0xEAC3, 0x9858, 0xEAC4, 0x9D1B,
+	0xEAC5, 0x6708, 0xEAC6, 0x8D8A, 0xEAC7, 0x925E, 0xEAC8, 0x4F4D,
+	0xEAC9, 0x5049, 0xEACA, 0x50DE, 0xEACB, 0x5371, 0xEACC, 0x570D,
+	0xEACD, 0x59D4, 0xEACE, 0x5A01, 0xEACF, 0x5C09, 0xEAD0, 0x6170,
+	0xEAD1, 0x6690, 0xEAD2, 0x6E2D, 0xEAD3, 0x7232, 0xEAD4, 0x744B,
+	0xEAD5, 0x7DEF, 0xEAD6, 0x80C3, 0xEAD7, 0x840E, 0xEAD8, 0x8466,
+	0xEAD9, 0x853F, 0xEADA, 0x875F, 0xEADB, 0x885B, 0xEADC, 0x8918,
+	0xEADD, 0x8B02, 0xEADE, 0x9055, 0xEADF, 0x97CB, 0xEAE0, 0x9B4F,
+	0xEAE1, 0x4E73, 0xEAE2, 0x4F91, 0xEAE3, 0x5112, 0xEAE4, 0x516A,
+	0xEAE5, 0xF9C7, 0xEAE6, 0x552F, 0xEAE7, 0x55A9, 0xEAE8, 0x5B7A,
+	0xEAE9, 0x5BA5, 0xEAEA, 0x5E7C, 0xEAEB, 0x5E7D, 0xEAEC, 0x5EBE,
+	0xEAED, 0x60A0, 0xEAEE, 0x60DF, 0xEAEF, 0x6108, 0xEAF0, 0x6109,
+	0xEAF1, 0x63C4, 0xEAF2, 0x6538, 0xEAF3, 0x6709, 0xEAF4, 0xF9C8,
+	0xEAF5, 0x67D4, 0xEAF6, 0x67DA, 0xEAF7, 0xF9C9, 0xEAF8, 0x6961,
+	0xEAF9, 0x6962, 0xEAFA, 0x6CB9, 0xEAFB, 0x6D27, 0xEAFC, 0xF9CA,
+	0xEAFD, 0x6E38, 0xEAFE, 0xF9CB, 0xEBA1, 0x6FE1, 0xEBA2, 0x7336,
+	0xEBA3, 0x7337, 0xEBA4, 0xF9CC, 0xEBA5, 0x745C, 0xEBA6, 0x7531,
+	0xEBA7, 0xF9CD, 0xEBA8, 0x7652, 0xEBA9, 0xF9CE, 0xEBAA, 0xF9CF,
+	0xEBAB, 0x7DAD, 0xEBAC, 0x81FE, 0xEBAD, 0x8438, 0xEBAE, 0x88D5,
+	0xEBAF, 0x8A98, 0xEBB0, 0x8ADB, 0xEBB1, 0x8AED, 0xEBB2, 0x8E30,
+	0xEBB3, 0x8E42, 0xEBB4, 0x904A, 0xEBB5, 0x903E, 0xEBB6, 0x907A,
+	0xEBB7, 0x9149, 0xEBB8, 0x91C9, 0xEBB9, 0x936E, 0xEBBA, 0xF9D0,
+	0xEBBB, 0xF9D1, 0xEBBC, 0x5809, 0xEBBD, 0xF9D2, 0xEBBE, 0x6BD3,
+	0xEBBF, 0x8089, 0xEBC0, 0x80B2, 0xEBC1, 0xF9D3, 0xEBC2, 0xF9D4,
+	0xEBC3, 0x5141, 0xEBC4, 0x596B, 0xEBC5, 0x5C39, 0xEBC6, 0xF9D5,
+	0xEBC7, 0xF9D6, 0xEBC8, 0x6F64, 0xEBC9, 0x73A7, 0xEBCA, 0x80E4,
+	0xEBCB, 0x8D07, 0xEBCC, 0xF9D7, 0xEBCD, 0x9217, 0xEBCE, 0x958F,
+	0xEBCF, 0xF9D8, 0xEBD0, 0xF9D9, 0xEBD1, 0xF9DA, 0xEBD2, 0xF9DB,
+	0xEBD3, 0x807F, 0xEBD4, 0x620E, 0xEBD5, 0x701C, 0xEBD6, 0x7D68,
+	0xEBD7, 0x878D, 0xEBD8, 0xF9DC, 0xEBD9, 0x57A0, 0xEBDA, 0x6069,
+	0xEBDB, 0x6147, 0xEBDC, 0x6BB7, 0xEBDD, 0x8ABE, 0xEBDE, 0x9280,
+	0xEBDF, 0x96B1, 0xEBE0, 0x4E59, 0xEBE1, 0x541F, 0xEBE2, 0x6DEB,
+	0xEBE3, 0x852D, 0xEBE4, 0x9670, 0xEBE5, 0x97F3, 0xEBE6, 0x98EE,
+	0xEBE7, 0x63D6, 0xEBE8, 0x6CE3, 0xEBE9, 0x9091, 0xEBEA, 0x51DD,
+	0xEBEB, 0x61C9, 0xEBEC, 0x81BA, 0xEBED, 0x9DF9, 0xEBEE, 0x4F9D,
+	0xEBEF, 0x501A, 0xEBF0, 0x5100, 0xEBF1, 0x5B9C, 0xEBF2, 0x610F,
+	0xEBF3, 0x61FF, 0xEBF4, 0x64EC, 0xEBF5, 0x6905, 0xEBF6, 0x6BC5,
+	0xEBF7, 0x7591, 0xEBF8, 0x77E3, 0xEBF9, 0x7FA9, 0xEBFA, 0x8264,
+	0xEBFB, 0x858F, 0xEBFC, 0x87FB, 0xEBFD, 0x8863, 0xEBFE, 0x8ABC,
+	0xECA1, 0x8B70, 0xECA2, 0x91AB, 0xECA3, 0x4E8C, 0xECA4, 0x4EE5,
+	0xECA5, 0x4F0A, 0xECA6, 0xF9DD, 0xECA7, 0xF9DE, 0xECA8, 0x5937,
+	0xECA9, 0x59E8, 0xECAA, 0xF9DF, 0xECAB, 0x5DF2, 0xECAC, 0x5F1B,
+	0xECAD, 0x5F5B, 0xECAE, 0x6021, 0xECAF, 0xF9E0, 0xECB0, 0xF9E1,
+	0xECB1, 0xF9E2, 0xECB2, 0xF9E3, 0xECB3, 0x723E, 0xECB4, 0x73E5,
+	0xECB5, 0xF9E4, 0xECB6, 0x7570, 0xECB7, 0x75CD, 0xECB8, 0xF9E5,
+	0xECB9, 0x79FB, 0xECBA, 0xF9E6, 0xECBB, 0x800C, 0xECBC, 0x8033,
+	0xECBD, 0x8084, 0xECBE, 0x82E1, 0xECBF, 0x8351, 0xECC0, 0xF9E7,
+	0xECC1, 0xF9E8, 0xECC2, 0x8CBD, 0xECC3, 0x8CB3, 0xECC4, 0x9087,
+	0xECC5, 0xF9E9, 0xECC6, 0xF9EA, 0xECC7, 0x98F4, 0xECC8, 0x990C,
+	0xECC9, 0xF9EB, 0xECCA, 0xF9EC, 0xECCB, 0x7037, 0xECCC, 0x76CA,
+	0xECCD, 0x7FCA, 0xECCE, 0x7FCC, 0xECCF, 0x7FFC, 0xECD0, 0x8B1A,
+	0xECD1, 0x4EBA, 0xECD2, 0x4EC1, 0xECD3, 0x5203, 0xECD4, 0x5370,
+	0xECD5, 0xF9ED, 0xECD6, 0x54BD, 0xECD7, 0x56E0, 0xECD8, 0x59FB,
+	0xECD9, 0x5BC5, 0xECDA, 0x5F15, 0xECDB, 0x5FCD, 0xECDC, 0x6E6E,
+	0xECDD, 0xF9EE, 0xECDE, 0xF9EF, 0xECDF, 0x7D6A, 0xECE0, 0x8335,
+	0xECE1, 0xF9F0, 0xECE2, 0x8693, 0xECE3, 0x8A8D, 0xECE4, 0xF9F1,
+	0xECE5, 0x976D, 0xECE6, 0x9777, 0xECE7, 0xF9F2, 0xECE8, 0xF9F3,
+	0xECE9, 0x4E00, 0xECEA, 0x4F5A, 0xECEB, 0x4F7E, 0xECEC, 0x58F9,
+	0xECED, 0x65E5, 0xECEE, 0x6EA2, 0xECEF, 0x9038, 0xECF0, 0x93B0,
+	0xECF1, 0x99B9, 0xECF2, 0x4EFB, 0xECF3, 0x58EC, 0xECF4, 0x598A,
+	0xECF5, 0x59D9, 0xECF6, 0x6041, 0xECF7, 0xF9F4, 0xECF8, 0xF9F5,
+	0xECF9, 0x7A14, 0xECFA, 0xF9F6, 0xECFB, 0x834F, 0xECFC, 0x8CC3,
+	0xECFD, 0x5165, 0xECFE, 0x5344, 0xEDA1, 0xF9F7, 0xEDA2, 0xF9F8,
+	0xEDA3, 0xF9F9, 0xEDA4, 0x4ECD, 0xEDA5, 0x5269, 0xEDA6, 0x5B55,
+	0xEDA7, 0x82BF, 0xEDA8, 0x4ED4, 0xEDA9, 0x523A, 0xEDAA, 0x54A8,
+	0xEDAB, 0x59C9, 0xEDAC, 0x59FF, 0xEDAD, 0x5B50, 0xEDAE, 0x5B57,
+	0xEDAF, 0x5B5C, 0xEDB0, 0x6063, 0xEDB1, 0x6148, 0xEDB2, 0x6ECB,
+	0xEDB3, 0x7099, 0xEDB4, 0x716E, 0xEDB5, 0x7386, 0xEDB6, 0x74F7,
+	0xEDB7, 0x75B5, 0xEDB8, 0x78C1, 0xEDB9, 0x7D2B, 0xEDBA, 0x8005,
+	0xEDBB, 0x81EA, 0xEDBC, 0x8328, 0xEDBD, 0x8517, 0xEDBE, 0x85C9,
+	0xEDBF, 0x8AEE, 0xEDC0, 0x8CC7, 0xEDC1, 0x96CC, 0xEDC2, 0x4F5C,
+	0xEDC3, 0x52FA, 0xEDC4, 0x56BC, 0xEDC5, 0x65AB, 0xEDC6, 0x6628,
+	0xEDC7, 0x707C, 0xEDC8, 0x70B8, 0xEDC9, 0x7235, 0xEDCA, 0x7DBD,
+	0xEDCB, 0x828D, 0xEDCC, 0x914C, 0xEDCD, 0x96C0, 0xEDCE, 0x9D72,
+	0xEDCF, 0x5B71, 0xEDD0, 0x68E7, 0xEDD1, 0x6B98, 0xEDD2, 0x6F7A,
+	0xEDD3, 0x76DE, 0xEDD4, 0x5C91, 0xEDD5, 0x66AB, 0xEDD6, 0x6F5B,
+	0xEDD7, 0x7BB4, 0xEDD8, 0x7C2A, 0xEDD9, 0x8836, 0xEDDA, 0x96DC,
+	0xEDDB, 0x4E08, 0xEDDC, 0x4ED7, 0xEDDD, 0x5320, 0xEDDE, 0x5834,
+	0xEDDF, 0x58BB, 0xEDE0, 0x58EF, 0xEDE1, 0x596C, 0xEDE2, 0x5C07,
+	0xEDE3, 0x5E33, 0xEDE4, 0x5E84, 0xEDE5, 0x5F35, 0xEDE6, 0x638C,
+	0xEDE7, 0x66B2, 0xEDE8, 0x6756, 0xEDE9, 0x6A1F, 0xEDEA, 0x6AA3,
+	0xEDEB, 0x6B0C, 0xEDEC, 0x6F3F, 0xEDED, 0x7246, 0xEDEE, 0xF9FA,
+	0xEDEF, 0x7350, 0xEDF0, 0x748B, 0xEDF1, 0x7AE0, 0xEDF2, 0x7CA7,
+	0xEDF3, 0x8178, 0xEDF4, 0x81DF, 0xEDF5, 0x81E7, 0xEDF6, 0x838A,
+	0xEDF7, 0x846C, 0xEDF8, 0x8523, 0xEDF9, 0x8594, 0xEDFA, 0x85CF,
+	0xEDFB, 0x88DD, 0xEDFC, 0x8D13, 0xEDFD, 0x91AC, 0xEDFE, 0x9577,
+	0xEEA1, 0x969C, 0xEEA2, 0x518D, 0xEEA3, 0x54C9, 0xEEA4, 0x5728,
+	0xEEA5, 0x5BB0, 0xEEA6, 0x624D, 0xEEA7, 0x6750, 0xEEA8, 0x683D,
+	0xEEA9, 0x6893, 0xEEAA, 0x6E3D, 0xEEAB, 0x6ED3, 0xEEAC, 0x707D,
+	0xEEAD, 0x7E21, 0xEEAE, 0x88C1, 0xEEAF, 0x8CA1, 0xEEB0, 0x8F09,
+	0xEEB1, 0x9F4B, 0xEEB2, 0x9F4E, 0xEEB3, 0x722D, 0xEEB4, 0x7B8F,
+	0xEEB5, 0x8ACD, 0xEEB6, 0x931A, 0xEEB7, 0x4F47, 0xEEB8, 0x4F4E,
+	0xEEB9, 0x5132, 0xEEBA, 0x5480, 0xEEBB, 0x59D0, 0xEEBC, 0x5E95,
+	0xEEBD, 0x62B5, 0xEEBE, 0x6775, 0xEEBF, 0x696E, 0xEEC0, 0x6A17,
+	0xEEC1, 0x6CAE, 0xEEC2, 0x6E1A, 0xEEC3, 0x72D9, 0xEEC4, 0x732A,
+	0xEEC5, 0x75BD, 0xEEC6, 0x7BB8, 0xEEC7, 0x7D35, 0xEEC8, 0x82E7,
+	0xEEC9, 0x83F9, 0xEECA, 0x8457, 0xEECB, 0x85F7, 0xEECC, 0x8A5B,
+	0xEECD, 0x8CAF, 0xEECE, 0x8E87, 0xEECF, 0x9019, 0xEED0, 0x90B8,
+	0xEED1, 0x96CE, 0xEED2, 0x9F5F, 0xEED3, 0x52E3, 0xEED4, 0x540A,
+	0xEED5, 0x5AE1, 0xEED6, 0x5BC2, 0xEED7, 0x6458, 0xEED8, 0x6575,
+	0xEED9, 0x6EF4, 0xEEDA, 0x72C4, 0xEEDB, 0xF9FB, 0xEEDC, 0x7684,
+	0xEEDD, 0x7A4D, 0xEEDE, 0x7B1B, 0xEEDF, 0x7C4D, 0xEEE0, 0x7E3E,
+	0xEEE1, 0x7FDF, 0xEEE2, 0x837B, 0xEEE3, 0x8B2B, 0xEEE4, 0x8CCA,
+	0xEEE5, 0x8D64, 0xEEE6, 0x8DE1, 0xEEE7, 0x8E5F, 0xEEE8, 0x8FEA,
+	0xEEE9, 0x8FF9, 0xEEEA, 0x9069, 0xEEEB, 0x93D1, 0xEEEC, 0x4F43,
+	0xEEED, 0x4F7A, 0xEEEE, 0x50B3, 0xEEEF, 0x5168, 0xEEF0, 0x5178,
+	0xEEF1, 0x524D, 0xEEF2, 0x526A, 0xEEF3, 0x5861, 0xEEF4, 0x587C,
+	0xEEF5, 0x5960, 0xEEF6, 0x5C08, 0xEEF7, 0x5C55, 0xEEF8, 0x5EDB,
+	0xEEF9, 0x609B, 0xEEFA, 0x6230, 0xEEFB, 0x6813, 0xEEFC, 0x6BBF,
+	0xEEFD, 0x6C08, 0xEEFE, 0x6FB1, 0xEFA1, 0x714E, 0xEFA2, 0x7420,
+	0xEFA3, 0x7530, 0xEFA4, 0x7538, 0xEFA5, 0x7551, 0xEFA6, 0x7672,
+	0xEFA7, 0x7B4C, 0xEFA8, 0x7B8B, 0xEFA9, 0x7BAD, 0xEFAA, 0x7BC6,
+	0xEFAB, 0x7E8F, 0xEFAC, 0x8A6E, 0xEFAD, 0x8F3E, 0xEFAE, 0x8F49,
+	0xEFAF, 0x923F, 0xEFB0, 0x9293, 0xEFB1, 0x9322, 0xEFB2, 0x942B,
+	0xEFB3, 0x96FB, 0xEFB4, 0x985A, 0xEFB5, 0x986B, 0xEFB6, 0x991E,
+	0xEFB7, 0x5207, 0xEFB8, 0x622A, 0xEFB9, 0x6298, 0xEFBA, 0x6D59,
+	0xEFBB, 0x7664, 0xEFBC, 0x7ACA, 0xEFBD, 0x7BC0, 0xEFBE, 0x7D76,
+	0xEFBF, 0x5360, 0xEFC0, 0x5CBE, 0xEFC1, 0x5E97, 0xEFC2, 0x6F38,
+	0xEFC3, 0x70B9, 0xEFC4, 0x7C98, 0xEFC5, 0x9711, 0xEFC6, 0x9B8E,
+	0xEFC7, 0x9EDE, 0xEFC8, 0x63A5, 0xEFC9, 0x647A, 0xEFCA, 0x8776,
+	0xEFCB, 0x4E01, 0xEFCC, 0x4E95, 0xEFCD, 0x4EAD, 0xEFCE, 0x505C,
+	0xEFCF, 0x5075, 0xEFD0, 0x5448, 0xEFD1, 0x59C3, 0xEFD2, 0x5B9A,
+	0xEFD3, 0x5E40, 0xEFD4, 0x5EAD, 0xEFD5, 0x5EF7, 0xEFD6, 0x5F81,
+	0xEFD7, 0x60C5, 0xEFD8, 0x633A, 0xEFD9, 0x653F, 0xEFDA, 0x6574,
+	0xEFDB, 0x65CC, 0xEFDC, 0x6676, 0xEFDD, 0x6678, 0xEFDE, 0x67FE,
+	0xEFDF, 0x6968, 0xEFE0, 0x6A89, 0xEFE1, 0x6B63, 0xEFE2, 0x6C40,
+	0xEFE3, 0x6DC0, 0xEFE4, 0x6DE8, 0xEFE5, 0x6E1F, 0xEFE6, 0x6E5E,
+	0xEFE7, 0x701E, 0xEFE8, 0x70A1, 0xEFE9, 0x738E, 0xEFEA, 0x73FD,
+	0xEFEB, 0x753A, 0xEFEC, 0x775B, 0xEFED, 0x7887, 0xEFEE, 0x798E,
+	0xEFEF, 0x7A0B, 0xEFF0, 0x7A7D, 0xEFF1, 0x7CBE, 0xEFF2, 0x7D8E,
+	0xEFF3, 0x8247, 0xEFF4, 0x8A02, 0xEFF5, 0x8AEA, 0xEFF6, 0x8C9E,
+	0xEFF7, 0x912D, 0xEFF8, 0x914A, 0xEFF9, 0x91D8, 0xEFFA, 0x9266,
+	0xEFFB, 0x92CC, 0xEFFC, 0x9320, 0xEFFD, 0x9706, 0xEFFE, 0x9756,
+	0xF0A1, 0x975C, 0xF0A2, 0x9802, 0xF0A3, 0x9F0E, 0xF0A4, 0x5236,
+	0xF0A5, 0x5291, 0xF0A6, 0x557C, 0xF0A7, 0x5824, 0xF0A8, 0x5E1D,
+	0xF0A9, 0x5F1F, 0xF0AA, 0x608C, 0xF0AB, 0x63D0, 0xF0AC, 0x68AF,
+	0xF0AD, 0x6FDF, 0xF0AE, 0x796D, 0xF0AF, 0x7B2C, 0xF0B0, 0x81CD,
+	0xF0B1, 0x85BA, 0xF0B2, 0x88FD, 0xF0B3, 0x8AF8, 0xF0B4, 0x8E44,
+	0xF0B5, 0x918D, 0xF0B6, 0x9664, 0xF0B7, 0x969B, 0xF0B8, 0x973D,
+	0xF0B9, 0x984C, 0xF0BA, 0x9F4A, 0xF0BB, 0x4FCE, 0xF0BC, 0x5146,
+	0xF0BD, 0x51CB, 0xF0BE, 0x52A9, 0xF0BF, 0x5632, 0xF0C0, 0x5F14,
+	0xF0C1, 0x5F6B, 0xF0C2, 0x63AA, 0xF0C3, 0x64CD, 0xF0C4, 0x65E9,
+	0xF0C5, 0x6641, 0xF0C6, 0x66FA, 0xF0C7, 0x66F9, 0xF0C8, 0x671D,
+	0xF0C9, 0x689D, 0xF0CA, 0x68D7, 0xF0CB, 0x69FD, 0xF0CC, 0x6F15,
+	0xF0CD, 0x6F6E, 0xF0CE, 0x7167, 0xF0CF, 0x71E5, 0xF0D0, 0x722A,
+	0xF0D1, 0x74AA, 0xF0D2, 0x773A, 0xF0D3, 0x7956, 0xF0D4, 0x795A,
+	0xF0D5, 0x79DF, 0xF0D6, 0x7A20, 0xF0D7, 0x7A95, 0xF0D8, 0x7C97,
+	0xF0D9, 0x7CDF, 0xF0DA, 0x7D44, 0xF0DB, 0x7E70, 0xF0DC, 0x8087,
+	0xF0DD, 0x85FB, 0xF0DE, 0x86A4, 0xF0DF, 0x8A54, 0xF0E0, 0x8ABF,
+	0xF0E1, 0x8D99, 0xF0E2, 0x8E81, 0xF0E3, 0x9020, 0xF0E4, 0x906D,
+	0xF0E5, 0x91E3, 0xF0E6, 0x963B, 0xF0E7, 0x96D5, 0xF0E8, 0x9CE5,
+	0xF0E9, 0x65CF, 0xF0EA, 0x7C07, 0xF0EB, 0x8DB3, 0xF0EC, 0x93C3,
+	0xF0ED, 0x5B58, 0xF0EE, 0x5C0A, 0xF0EF, 0x5352, 0xF0F0, 0x62D9,
+	0xF0F1, 0x731D, 0xF0F2, 0x5027, 0xF0F3, 0x5B97, 0xF0F4, 0x5F9E,
+	0xF0F5, 0x60B0, 0xF0F6, 0x616B, 0xF0F7, 0x68D5, 0xF0F8, 0x6DD9,
+	0xF0F9, 0x742E, 0xF0FA, 0x7A2E, 0xF0FB, 0x7D42, 0xF0FC, 0x7D9C,
+	0xF0FD, 0x7E31, 0xF0FE, 0x816B, 0xF1A1, 0x8E2A, 0xF1A2, 0x8E35,
+	0xF1A3, 0x937E, 0xF1A4, 0x9418, 0xF1A5, 0x4F50, 0xF1A6, 0x5750,
+	0xF1A7, 0x5DE6, 0xF1A8, 0x5EA7, 0xF1A9, 0x632B, 0xF1AA, 0x7F6A,
+	0xF1AB, 0x4E3B, 0xF1AC, 0x4F4F, 0xF1AD, 0x4F8F, 0xF1AE, 0x505A,
+	0xF1AF, 0x59DD, 0xF1B0, 0x80C4, 0xF1B1, 0x546A, 0xF1B2, 0x5468,
+	0xF1B3, 0x55FE, 0xF1B4, 0x594F, 0xF1B5, 0x5B99, 0xF1B6, 0x5DDE,
+	0xF1B7, 0x5EDA, 0xF1B8, 0x665D, 0xF1B9, 0x6731, 0xF1BA, 0x67F1,
+	0xF1BB, 0x682A, 0xF1BC, 0x6CE8, 0xF1BD, 0x6D32, 0xF1BE, 0x6E4A,
+	0xF1BF, 0x6F8D, 0xF1C0, 0x70B7, 0xF1C1, 0x73E0, 0xF1C2, 0x7587,
+	0xF1C3, 0x7C4C, 0xF1C4, 0x7D02, 0xF1C5, 0x7D2C, 0xF1C6, 0x7DA2,
+	0xF1C7, 0x821F, 0xF1C8, 0x86DB, 0xF1C9, 0x8A3B, 0xF1CA, 0x8A85,
+	0xF1CB, 0x8D70, 0xF1CC, 0x8E8A, 0xF1CD, 0x8F33, 0xF1CE, 0x9031,
+	0xF1CF, 0x914E, 0xF1D0, 0x9152, 0xF1D1, 0x9444, 0xF1D2, 0x99D0,
+	0xF1D3, 0x7AF9, 0xF1D4, 0x7CA5, 0xF1D5, 0x4FCA, 0xF1D6, 0x5101,
+	0xF1D7, 0x51C6, 0xF1D8, 0x57C8, 0xF1D9, 0x5BEF, 0xF1DA, 0x5CFB,
+	0xF1DB, 0x6659, 0xF1DC, 0x6A3D, 0xF1DD, 0x6D5A, 0xF1DE, 0x6E96,
+	0xF1DF, 0x6FEC, 0xF1E0, 0x710C, 0xF1E1, 0x756F, 0xF1E2, 0x7AE3,
+	0xF1E3, 0x8822, 0xF1E4, 0x9021, 0xF1E5, 0x9075, 0xF1E6, 0x96CB,
+	0xF1E7, 0x99FF, 0xF1E8, 0x8301, 0xF1E9, 0x4E2D, 0xF1EA, 0x4EF2,
+	0xF1EB, 0x8846, 0xF1EC, 0x91CD, 0xF1ED, 0x537D, 0xF1EE, 0x6ADB,
+	0xF1EF, 0x696B, 0xF1F0, 0x6C41, 0xF1F1, 0x847A, 0xF1F2, 0x589E,
+	0xF1F3, 0x618E, 0xF1F4, 0x66FE, 0xF1F5, 0x62EF, 0xF1F6, 0x70DD,
+	0xF1F7, 0x7511, 0xF1F8, 0x75C7, 0xF1F9, 0x7E52, 0xF1FA, 0x84B8,
+	0xF1FB, 0x8B49, 0xF1FC, 0x8D08, 0xF1FD, 0x4E4B, 0xF1FE, 0x53EA,
+	0xF2A1, 0x54AB, 0xF2A2, 0x5730, 0xF2A3, 0x5740, 0xF2A4, 0x5FD7,
+	0xF2A5, 0x6301, 0xF2A6, 0x6307, 0xF2A7, 0x646F, 0xF2A8, 0x652F,
+	0xF2A9, 0x65E8, 0xF2AA, 0x667A, 0xF2AB, 0x679D, 0xF2AC, 0x67B3,
+	0xF2AD, 0x6B62, 0xF2AE, 0x6C60, 0xF2AF, 0x6C9A, 0xF2B0, 0x6F2C,
+	0xF2B1, 0x77E5, 0xF2B2, 0x7825, 0xF2B3, 0x7949, 0xF2B4, 0x7957,
+	0xF2B5, 0x7D19, 0xF2B6, 0x80A2, 0xF2B7, 0x8102, 0xF2B8, 0x81F3,
+	0xF2B9, 0x829D, 0xF2BA, 0x82B7, 0xF2BB, 0x8718, 0xF2BC, 0x8A8C,
+	0xF2BD, 0xF9FC, 0xF2BE, 0x8D04, 0xF2BF, 0x8DBE, 0xF2C0, 0x9072,
+	0xF2C1, 0x76F4, 0xF2C2, 0x7A19, 0xF2C3, 0x7A37, 0xF2C4, 0x7E54,
+	0xF2C5, 0x8077, 0xF2C6, 0x5507, 0xF2C7, 0x55D4, 0xF2C8, 0x5875,
+	0xF2C9, 0x632F, 0xF2CA, 0x6422, 0xF2CB, 0x6649, 0xF2CC, 0x664B,
+	0xF2CD, 0x686D, 0xF2CE, 0x699B, 0xF2CF, 0x6B84, 0xF2D0, 0x6D25,
+	0xF2D1, 0x6EB1, 0xF2D2, 0x73CD, 0xF2D3, 0x7468, 0xF2D4, 0x74A1,
+	0xF2D5, 0x755B, 0xF2D6, 0x75B9, 0xF2D7, 0x76E1, 0xF2D8, 0x771E,
+	0xF2D9, 0x778B, 0xF2DA, 0x79E6, 0xF2DB, 0x7E09, 0xF2DC, 0x7E1D,
+	0xF2DD, 0x81FB, 0xF2DE, 0x852F, 0xF2DF, 0x8897, 0xF2E0, 0x8A3A,
+	0xF2E1, 0x8CD1, 0xF2E2, 0x8EEB, 0xF2E3, 0x8FB0, 0xF2E4, 0x9032,
+	0xF2E5, 0x93AD, 0xF2E6, 0x9663, 0xF2E7, 0x9673, 0xF2E8, 0x9707,
+	0xF2E9, 0x4F84, 0xF2EA, 0x53F1, 0xF2EB, 0x59EA, 0xF2EC, 0x5AC9,
+	0xF2ED, 0x5E19, 0xF2EE, 0x684E, 0xF2EF, 0x74C6, 0xF2F0, 0x75BE,
+	0xF2F1, 0x79E9, 0xF2F2, 0x7A92, 0xF2F3, 0x81A3, 0xF2F4, 0x86ED,
+	0xF2F5, 0x8CEA, 0xF2F6, 0x8DCC, 0xF2F7, 0x8FED, 0xF2F8, 0x659F,
+	0xF2F9, 0x6715, 0xF2FA, 0xF9FD, 0xF2FB, 0x57F7, 0xF2FC, 0x6F57,
+	0xF2FD, 0x7DDD, 0xF2FE, 0x8F2F, 0xF3A1, 0x93F6, 0xF3A2, 0x96C6,
+	0xF3A3, 0x5FB5, 0xF3A4, 0x61F2, 0xF3A5, 0x6F84, 0xF3A6, 0x4E14,
+	0xF3A7, 0x4F98, 0xF3A8, 0x501F, 0xF3A9, 0x53C9, 0xF3AA, 0x55DF,
+	0xF3AB, 0x5D6F, 0xF3AC, 0x5DEE, 0xF3AD, 0x6B21, 0xF3AE, 0x6B64,
+	0xF3AF, 0x78CB, 0xF3B0, 0x7B9A, 0xF3B1, 0xF9FE, 0xF3B2, 0x8E49,
+	0xF3B3, 0x8ECA, 0xF3B4, 0x906E, 0xF3B5, 0x6349, 0xF3B6, 0x643E,
+	0xF3B7, 0x7740, 0xF3B8, 0x7A84, 0xF3B9, 0x932F, 0xF3BA, 0x947F,
+	0xF3BB, 0x9F6A, 0xF3BC, 0x64B0, 0xF3BD, 0x6FAF, 0xF3BE, 0x71E6,
+	0xF3BF, 0x74A8, 0xF3C0, 0x74DA, 0xF3C1, 0x7AC4, 0xF3C2, 0x7C12,
+	0xF3C3, 0x7E82, 0xF3C4, 0x7CB2, 0xF3C5, 0x7E98, 0xF3C6, 0x8B9A,
+	0xF3C7, 0x8D0A, 0xF3C8, 0x947D, 0xF3C9, 0x9910, 0xF3CA, 0x994C,
+	0xF3CB, 0x5239, 0xF3CC, 0x5BDF, 0xF3CD, 0x64E6, 0xF3CE, 0x672D,
+	0xF3CF, 0x7D2E, 0xF3D0, 0x50ED, 0xF3D1, 0x53C3, 0xF3D2, 0x5879,
+	0xF3D3, 0x6158, 0xF3D4, 0x6159, 0xF3D5, 0x61FA, 0xF3D6, 0x65AC,
+	0xF3D7, 0x7AD9, 0xF3D8, 0x8B92, 0xF3D9, 0x8B96, 0xF3DA, 0x5009,
+	0xF3DB, 0x5021, 0xF3DC, 0x5275, 0xF3DD, 0x5531, 0xF3DE, 0x5A3C,
+	0xF3DF, 0x5EE0, 0xF3E0, 0x5F70, 0xF3E1, 0x6134, 0xF3E2, 0x655E,
+	0xF3E3, 0x660C, 0xF3E4, 0x6636, 0xF3E5, 0x66A2, 0xF3E6, 0x69CD,
+	0xF3E7, 0x6EC4, 0xF3E8, 0x6F32, 0xF3E9, 0x7316, 0xF3EA, 0x7621,
+	0xF3EB, 0x7A93, 0xF3EC, 0x8139, 0xF3ED, 0x8259, 0xF3EE, 0x83D6,
+	0xF3EF, 0x84BC, 0xF3F0, 0x50B5, 0xF3F1, 0x57F0, 0xF3F2, 0x5BC0,
+	0xF3F3, 0x5BE8, 0xF3F4, 0x5F69, 0xF3F5, 0x63A1, 0xF3F6, 0x7826,
+	0xF3F7, 0x7DB5, 0xF3F8, 0x83DC, 0xF3F9, 0x8521, 0xF3FA, 0x91C7,
+	0xF3FB, 0x91F5, 0xF3FC, 0x518A, 0xF3FD, 0x67F5, 0xF3FE, 0x7B56,
+	0xF4A1, 0x8CAC, 0xF4A2, 0x51C4, 0xF4A3, 0x59BB, 0xF4A4, 0x60BD,
+	0xF4A5, 0x8655, 0xF4A6, 0x501C, 0xF4A7, 0xF9FF, 0xF4A8, 0x5254,
+	0xF4A9, 0x5C3A, 0xF4AA, 0x617D, 0xF4AB, 0x621A, 0xF4AC, 0x62D3,
+	0xF4AD, 0x64F2, 0xF4AE, 0x65A5, 0xF4AF, 0x6ECC, 0xF4B0, 0x7620,
+	0xF4B1, 0x810A, 0xF4B2, 0x8E60, 0xF4B3, 0x965F, 0xF4B4, 0x96BB,
+	0xF4B5, 0x4EDF, 0xF4B6, 0x5343, 0xF4B7, 0x5598, 0xF4B8, 0x5929,
+	0xF4B9, 0x5DDD, 0xF4BA, 0x64C5, 0xF4BB, 0x6CC9, 0xF4BC, 0x6DFA,
+	0xF4BD, 0x7394, 0xF4BE, 0x7A7F, 0xF4BF, 0x821B, 0xF4C0, 0x85A6,
+	0xF4C1, 0x8CE4, 0xF4C2, 0x8E10, 0xF4C3, 0x9077, 0xF4C4, 0x91E7,
+	0xF4C5, 0x95E1, 0xF4C6, 0x9621, 0xF4C7, 0x97C6, 0xF4C8, 0x51F8,
+	0xF4C9, 0x54F2, 0xF4CA, 0x5586, 0xF4CB, 0x5FB9, 0xF4CC, 0x64A4,
+	0xF4CD, 0x6F88, 0xF4CE, 0x7DB4, 0xF4CF, 0x8F1F, 0xF4D0, 0x8F4D,
+	0xF4D1, 0x9435, 0xF4D2, 0x50C9, 0xF4D3, 0x5C16, 0xF4D4, 0x6CBE,
+	0xF4D5, 0x6DFB, 0xF4D6, 0x751B, 0xF4D7, 0x77BB, 0xF4D8, 0x7C3D,
+	0xF4D9, 0x7C64, 0xF4DA, 0x8A79, 0xF4DB, 0x8AC2, 0xF4DC, 0x581E,
+	0xF4DD, 0x59BE, 0xF4DE, 0x5E16, 0xF4DF, 0x6377, 0xF4E0, 0x7252,
+	0xF4E1, 0x758A, 0xF4E2, 0x776B, 0xF4E3, 0x8ADC, 0xF4E4, 0x8CBC,
+	0xF4E5, 0x8F12, 0xF4E6, 0x5EF3, 0xF4E7, 0x6674, 0xF4E8, 0x6DF8,
+	0xF4E9, 0x807D, 0xF4EA, 0x83C1, 0xF4EB, 0x8ACB, 0xF4EC, 0x9751,
+	0xF4ED, 0x9BD6, 0xF4EE, 0xFA00, 0xF4EF, 0x5243, 0xF4F0, 0x66FF,
+	0xF4F1, 0x6D95, 0xF4F2, 0x6EEF, 0xF4F3, 0x7DE0, 0xF4F4, 0x8AE6,
+	0xF4F5, 0x902E, 0xF4F6, 0x905E, 0xF4F7, 0x9AD4, 0xF4F8, 0x521D,
+	0xF4F9, 0x527F, 0xF4FA, 0x54E8, 0xF4FB, 0x6194, 0xF4FC, 0x6284,
+	0xF4FD, 0x62DB, 0xF4FE, 0x68A2, 0xF5A1, 0x6912, 0xF5A2, 0x695A,
+	0xF5A3, 0x6A35, 0xF5A4, 0x7092, 0xF5A5, 0x7126, 0xF5A6, 0x785D,
+	0xF5A7, 0x7901, 0xF5A8, 0x790E, 0xF5A9, 0x79D2, 0xF5AA, 0x7A0D,
+	0xF5AB, 0x8096, 0xF5AC, 0x8278, 0xF5AD, 0x82D5, 0xF5AE, 0x8349,
+	0xF5AF, 0x8549, 0xF5B0, 0x8C82, 0xF5B1, 0x8D85, 0xF5B2, 0x9162,
+	0xF5B3, 0x918B, 0xF5B4, 0x91AE, 0xF5B5, 0x4FC3, 0xF5B6, 0x56D1,
+	0xF5B7, 0x71ED, 0xF5B8, 0x77D7, 0xF5B9, 0x8700, 0xF5BA, 0x89F8,
+	0xF5BB, 0x5BF8, 0xF5BC, 0x5FD6, 0xF5BD, 0x6751, 0xF5BE, 0x90A8,
+	0xF5BF, 0x53E2, 0xF5C0, 0x585A, 0xF5C1, 0x5BF5, 0xF5C2, 0x60A4,
+	0xF5C3, 0x6181, 0xF5C4, 0x6460, 0xF5C5, 0x7E3D, 0xF5C6, 0x8070,
+	0xF5C7, 0x8525, 0xF5C8, 0x9283, 0xF5C9, 0x64AE, 0xF5CA, 0x50AC,
+	0xF5CB, 0x5D14, 0xF5CC, 0x6700, 0xF5CD, 0x589C, 0xF5CE, 0x62BD,
+	0xF5CF, 0x63A8, 0xF5D0, 0x690E, 0xF5D1, 0x6978, 0xF5D2, 0x6A1E,
+	0xF5D3, 0x6E6B, 0xF5D4, 0x76BA, 0xF5D5, 0x79CB, 0xF5D6, 0x82BB,
+	0xF5D7, 0x8429, 0xF5D8, 0x8ACF, 0xF5D9, 0x8DA8, 0xF5DA, 0x8FFD,
+	0xF5DB, 0x9112, 0xF5DC, 0x914B, 0xF5DD, 0x919C, 0xF5DE, 0x9310,
+	0xF5DF, 0x9318, 0xF5E0, 0x939A, 0xF5E1, 0x96DB, 0xF5E2, 0x9A36,
+	0xF5E3, 0x9C0D, 0xF5E4, 0x4E11, 0xF5E5, 0x755C, 0xF5E6, 0x795D,
+	0xF5E7, 0x7AFA, 0xF5E8, 0x7B51, 0xF5E9, 0x7BC9, 0xF5EA, 0x7E2E,
+	0xF5EB, 0x84C4, 0xF5EC, 0x8E59, 0xF5ED, 0x8E74, 0xF5EE, 0x8EF8,
+	0xF5EF, 0x9010, 0xF5F0, 0x6625, 0xF5F1, 0x693F, 0xF5F2, 0x7443,
+	0xF5F3, 0x51FA, 0xF5F4, 0x672E, 0xF5F5, 0x9EDC, 0xF5F6, 0x5145,
+	0xF5F7, 0x5FE0, 0xF5F8, 0x6C96, 0xF5F9, 0x87F2, 0xF5FA, 0x885D,
+	0xF5FB, 0x8877, 0xF5FC, 0x60B4, 0xF5FD, 0x81B5, 0xF5FE, 0x8403,
+	0xF6A1, 0x8D05, 0xF6A2, 0x53D6, 0xF6A3, 0x5439, 0xF6A4, 0x5634,
+	0xF6A5, 0x5A36, 0xF6A6, 0x5C31, 0xF6A7, 0x708A, 0xF6A8, 0x7FE0,
+	0xF6A9, 0x805A, 0xF6AA, 0x8106, 0xF6AB, 0x81ED, 0xF6AC, 0x8DA3,
+	0xF6AD, 0x9189, 0xF6AE, 0x9A5F, 0xF6AF, 0x9DF2, 0xF6B0, 0x5074,
+	0xF6B1, 0x4EC4, 0xF6B2, 0x53A0, 0xF6B3, 0x60FB, 0xF6B4, 0x6E2C,
+	0xF6B5, 0x5C64, 0xF6B6, 0x4F88, 0xF6B7, 0x5024, 0xF6B8, 0x55E4,
+	0xF6B9, 0x5CD9, 0xF6BA, 0x5E5F, 0xF6BB, 0x6065, 0xF6BC, 0x6894,
+	0xF6BD, 0x6CBB, 0xF6BE, 0x6DC4, 0xF6BF, 0x71BE, 0xF6C0, 0x75D4,
+	0xF6C1, 0x75F4, 0xF6C2, 0x7661, 0xF6C3, 0x7A1A, 0xF6C4, 0x7A49,
+	0xF6C5, 0x7DC7, 0xF6C6, 0x7DFB, 0xF6C7, 0x7F6E, 0xF6C8, 0x81F4,
+	0xF6C9, 0x86A9, 0xF6CA, 0x8F1C, 0xF6CB, 0x96C9, 0xF6CC, 0x99B3,
+	0xF6CD, 0x9F52, 0xF6CE, 0x5247, 0xF6CF, 0x52C5, 0xF6D0, 0x98ED,
+	0xF6D1, 0x89AA, 0xF6D2, 0x4E03, 0xF6D3, 0x67D2, 0xF6D4, 0x6F06,
+	0xF6D5, 0x4FB5, 0xF6D6, 0x5BE2, 0xF6D7, 0x6795, 0xF6D8, 0x6C88,
+	0xF6D9, 0x6D78, 0xF6DA, 0x741B, 0xF6DB, 0x7827, 0xF6DC, 0x91DD,
+	0xF6DD, 0x937C, 0xF6DE, 0x87C4, 0xF6DF, 0x79E4, 0xF6E0, 0x7A31,
+	0xF6E1, 0x5FEB, 0xF6E2, 0x4ED6, 0xF6E3, 0x54A4, 0xF6E4, 0x553E,
+	0xF6E5, 0x58AE, 0xF6E6, 0x59A5, 0xF6E7, 0x60F0, 0xF6E8, 0x6253,
+	0xF6E9, 0x62D6, 0xF6EA, 0x6736, 0xF6EB, 0x6955, 0xF6EC, 0x8235,
+	0xF6ED, 0x9640, 0xF6EE, 0x99B1, 0xF6EF, 0x99DD, 0xF6F0, 0x502C,
+	0xF6F1, 0x5353, 0xF6F2, 0x5544, 0xF6F3, 0x577C, 0xF6F4, 0xFA01,
+	0xF6F5, 0x6258, 0xF6F6, 0xFA02, 0xF6F7, 0x64E2, 0xF6F8, 0x666B,
+	0xF6F9, 0x67DD, 0xF6FA, 0x6FC1, 0xF6FB, 0x6FEF, 0xF6FC, 0x7422,
+	0xF6FD, 0x7438, 0xF6FE, 0x8A17, 0xF7A1, 0x9438, 0xF7A2, 0x5451,
+	0xF7A3, 0x5606, 0xF7A4, 0x5766, 0xF7A5, 0x5F48, 0xF7A6, 0x619A,
+	0xF7A7, 0x6B4E, 0xF7A8, 0x7058, 0xF7A9, 0x70AD, 0xF7AA, 0x7DBB,
+	0xF7AB, 0x8A95, 0xF7AC, 0x596A, 0xF7AD, 0x812B, 0xF7AE, 0x63A2,
+	0xF7AF, 0x7708, 0xF7B0, 0x803D, 0xF7B1, 0x8CAA, 0xF7B2, 0x5854,
+	0xF7B3, 0x642D, 0xF7B4, 0x69BB, 0xF7B5, 0x5B95, 0xF7B6, 0x5E11,
+	0xF7B7, 0x6E6F, 0xF7B8, 0xFA03, 0xF7B9, 0x8569, 0xF7BA, 0x514C,
+	0xF7BB, 0x53F0, 0xF7BC, 0x592A, 0xF7BD, 0x6020, 0xF7BE, 0x614B,
+	0xF7BF, 0x6B86, 0xF7C0, 0x6C70, 0xF7C1, 0x6CF0, 0xF7C2, 0x7B1E,
+	0xF7C3, 0x80CE, 0xF7C4, 0x82D4, 0xF7C5, 0x8DC6, 0xF7C6, 0x90B0,
+	0xF7C7, 0x98B1, 0xF7C8, 0xFA04, 0xF7C9, 0x64C7, 0xF7CA, 0x6FA4,
+	0xF7CB, 0x6491, 0xF7CC, 0x6504, 0xF7CD, 0x514E, 0xF7CE, 0x5410,
+	0xF7CF, 0x571F, 0xF7D0, 0x8A0E, 0xF7D1, 0x615F, 0xF7D2, 0x6876,
+	0xF7D3, 0xFA05, 0xF7D4, 0x75DB, 0xF7D5, 0x7B52, 0xF7D6, 0x7D71,
+	0xF7D7, 0x901A, 0xF7D8, 0x5806, 0xF7D9, 0x69CC, 0xF7DA, 0x817F,
+	0xF7DB, 0x892A, 0xF7DC, 0x9000, 0xF7DD, 0x9839, 0xF7DE, 0x5078,
+	0xF7DF, 0x5957, 0xF7E0, 0x59AC, 0xF7E1, 0x6295, 0xF7E2, 0x900F,
+	0xF7E3, 0x9B2A, 0xF7E4, 0x615D, 0xF7E5, 0x7279, 0xF7E6, 0x95D6,
+	0xF7E7, 0x5761, 0xF7E8, 0x5A46, 0xF7E9, 0x5DF4, 0xF7EA, 0x628A,
+	0xF7EB, 0x64AD, 0xF7EC, 0x64FA, 0xF7ED, 0x6777, 0xF7EE, 0x6CE2,
+	0xF7EF, 0x6D3E, 0xF7F0, 0x722C, 0xF7F1, 0x7436, 0xF7F2, 0x7834,
+	0xF7F3, 0x7F77, 0xF7F4, 0x82AD, 0xF7F5, 0x8DDB, 0xF7F6, 0x9817,
+	0xF7F7, 0x5224, 0xF7F8, 0x5742, 0xF7F9, 0x677F, 0xF7FA, 0x7248,
+	0xF7FB, 0x74E3, 0xF7FC, 0x8CA9, 0xF7FD, 0x8FA6, 0xF7FE, 0x9211,
+	0xF8A1, 0x962A, 0xF8A2, 0x516B, 0xF8A3, 0x53ED, 0xF8A4, 0x634C,
+	0xF8A5, 0x4F69, 0xF8A6, 0x5504, 0xF8A7, 0x6096, 0xF8A8, 0x6557,
+	0xF8A9, 0x6C9B, 0xF8AA, 0x6D7F, 0xF8AB, 0x724C, 0xF8AC, 0x72FD,
+	0xF8AD, 0x7A17, 0xF8AE, 0x8987, 0xF8AF, 0x8C9D, 0xF8B0, 0x5F6D,
+	0xF8B1, 0x6F8E, 0xF8B2, 0x70F9, 0xF8B3, 0x81A8, 0xF8B4, 0x610E,
+	0xF8B5, 0x4FBF, 0xF8B6, 0x504F, 0xF8B7, 0x6241, 0xF8B8, 0x7247,
+	0xF8B9, 0x7BC7, 0xF8BA, 0x7DE8, 0xF8BB, 0x7FE9, 0xF8BC, 0x904D,
+	0xF8BD, 0x97AD, 0xF8BE, 0x9A19, 0xF8BF, 0x8CB6, 0xF8C0, 0x576A,
+	0xF8C1, 0x5E73, 0xF8C2, 0x67B0, 0xF8C3, 0x840D, 0xF8C4, 0x8A55,
+	0xF8C5, 0x5420, 0xF8C6, 0x5B16, 0xF8C7, 0x5E63, 0xF8C8, 0x5EE2,
+	0xF8C9, 0x5F0A, 0xF8CA, 0x6583, 0xF8CB, 0x80BA, 0xF8CC, 0x853D,
+	0xF8CD, 0x9589, 0xF8CE, 0x965B, 0xF8CF, 0x4F48, 0xF8D0, 0x5305,
+	0xF8D1, 0x530D, 0xF8D2, 0x530F, 0xF8D3, 0x5486, 0xF8D4, 0x54FA,
+	0xF8D5, 0x5703, 0xF8D6, 0x5E03, 0xF8D7, 0x6016, 0xF8D8, 0x629B,
+	0xF8D9, 0x62B1, 0xF8DA, 0x6355, 0xF8DB, 0xFA06, 0xF8DC, 0x6CE1,
+	0xF8DD, 0x6D66, 0xF8DE, 0x75B1, 0xF8DF, 0x7832, 0xF8E0, 0x80DE,
+	0xF8E1, 0x812F, 0xF8E2, 0x82DE, 0xF8E3, 0x8461, 0xF8E4, 0x84B2,
+	0xF8E5, 0x888D, 0xF8E6, 0x8912, 0xF8E7, 0x900B, 0xF8E8, 0x92EA,
+	0xF8E9, 0x98FD, 0xF8EA, 0x9B91, 0xF8EB, 0x5E45, 0xF8EC, 0x66B4,
+	0xF8ED, 0x66DD, 0xF8EE, 0x7011, 0xF8EF, 0x7206, 0xF8F0, 0xFA07,
+	0xF8F1, 0x4FF5, 0xF8F2, 0x527D, 0xF8F3, 0x5F6A, 0xF8F4, 0x6153,
+	0xF8F5, 0x6753, 0xF8F6, 0x6A19, 0xF8F7, 0x6F02, 0xF8F8, 0x74E2,
+	0xF8F9, 0x7968, 0xF8FA, 0x8868, 0xF8FB, 0x8C79, 0xF8FC, 0x98C7,
+	0xF8FD, 0x98C4, 0xF8FE, 0x9A43, 0xF9A1, 0x54C1, 0xF9A2, 0x7A1F,
+	0xF9A3, 0x6953, 0xF9A4, 0x8AF7, 0xF9A5, 0x8C4A, 0xF9A6, 0x98A8,
+	0xF9A7, 0x99AE, 0xF9A8, 0x5F7C, 0xF9A9, 0x62AB, 0xF9AA, 0x75B2,
+	0xF9AB, 0x76AE, 0xF9AC, 0x88AB, 0xF9AD, 0x907F, 0xF9AE, 0x9642,
+	0xF9AF, 0x5339, 0xF9B0, 0x5F3C, 0xF9B1, 0x5FC5, 0xF9B2, 0x6CCC,
+	0xF9B3, 0x73CC, 0xF9B4, 0x7562, 0xF9B5, 0x758B, 0xF9B6, 0x7B46,
+	0xF9B7, 0x82FE, 0xF9B8, 0x999D, 0xF9B9, 0x4E4F, 0xF9BA, 0x903C,
+	0xF9BB, 0x4E0B, 0xF9BC, 0x4F55, 0xF9BD, 0x53A6, 0xF9BE, 0x590F,
+	0xF9BF, 0x5EC8, 0xF9C0, 0x6630, 0xF9C1, 0x6CB3, 0xF9C2, 0x7455,
+	0xF9C3, 0x8377, 0xF9C4, 0x8766, 0xF9C5, 0x8CC0, 0xF9C6, 0x9050,
+	0xF9C7, 0x971E, 0xF9C8, 0x9C15, 0xF9C9, 0x58D1, 0xF9CA, 0x5B78,
+	0xF9CB, 0x8650, 0xF9CC, 0x8B14, 0xF9CD, 0x9DB4, 0xF9CE, 0x5BD2,
+	0xF9CF, 0x6068, 0xF9D0, 0x608D, 0xF9D1, 0x65F1, 0xF9D2, 0x6C57,
+	0xF9D3, 0x6F22, 0xF9D4, 0x6FA3, 0xF9D5, 0x701A, 0xF9D6, 0x7F55,
+	0xF9D7, 0x7FF0, 0xF9D8, 0x9591, 0xF9D9, 0x9592, 0xF9DA, 0x9650,
+	0xF9DB, 0x97D3, 0xF9DC, 0x5272, 0xF9DD, 0x8F44, 0xF9DE, 0x51FD,
+	0xF9DF, 0x542B, 0xF9E0, 0x54B8, 0xF9E1, 0x5563, 0xF9E2, 0x558A,
+	0xF9E3, 0x6ABB, 0xF9E4, 0x6DB5, 0xF9E5, 0x7DD8, 0xF9E6, 0x8266,
+	0xF9E7, 0x929C, 0xF9E8, 0x9677, 0xF9E9, 0x9E79, 0xF9EA, 0x5408,
+	0xF9EB, 0x54C8, 0xF9EC, 0x76D2, 0xF9ED, 0x86E4, 0xF9EE, 0x95A4,
+	0xF9EF, 0x95D4, 0xF9F0, 0x965C, 0xF9F1, 0x4EA2, 0xF9F2, 0x4F09,
+	0xF9F3, 0x59EE, 0xF9F4, 0x5AE6, 0xF9F5, 0x5DF7, 0xF9F6, 0x6052,
+	0xF9F7, 0x6297, 0xF9F8, 0x676D, 0xF9F9, 0x6841, 0xF9FA, 0x6C86,
+	0xF9FB, 0x6E2F, 0xF9FC, 0x7F38, 0xF9FD, 0x809B, 0xF9FE, 0x822A,
+	0xFAA1, 0xFA08, 0xFAA2, 0xFA09, 0xFAA3, 0x9805, 0xFAA4, 0x4EA5,
+	0xFAA5, 0x5055, 0xFAA6, 0x54B3, 0xFAA7, 0x5793, 0xFAA8, 0x595A,
+	0xFAA9, 0x5B69, 0xFAAA, 0x5BB3, 0xFAAB, 0x61C8, 0xFAAC, 0x6977,
+	0xFAAD, 0x6D77, 0xFAAE, 0x7023, 0xFAAF, 0x87F9, 0xFAB0, 0x89E3,
+	0xFAB1, 0x8A72, 0xFAB2, 0x8AE7, 0xFAB3, 0x9082, 0xFAB4, 0x99ED,
+	0xFAB5, 0x9AB8, 0xFAB6, 0x52BE, 0xFAB7, 0x6838, 0xFAB8, 0x5016,
+	0xFAB9, 0x5E78, 0xFABA, 0x674F, 0xFABB, 0x8347, 0xFABC, 0x884C,
+	0xFABD, 0x4EAB, 0xFABE, 0x5411, 0xFABF, 0x56AE, 0xFAC0, 0x73E6,
+	0xFAC1, 0x9115, 0xFAC2, 0x97FF, 0xFAC3, 0x9909, 0xFAC4, 0x9957,
+	0xFAC5, 0x9999, 0xFAC6, 0x5653, 0xFAC7, 0x589F, 0xFAC8, 0x865B,
+	0xFAC9, 0x8A31, 0xFACA, 0x61B2, 0xFACB, 0x6AF6, 0xFACC, 0x737B,
+	0xFACD, 0x8ED2, 0xFACE, 0x6B47, 0xFACF, 0x96AA, 0xFAD0, 0x9A57,
+	0xFAD1, 0x5955, 0xFAD2, 0x7200, 0xFAD3, 0x8D6B, 0xFAD4, 0x9769,
+	0xFAD5, 0x4FD4, 0xFAD6, 0x5CF4, 0xFAD7, 0x5F26, 0xFAD8, 0x61F8,
+	0xFAD9, 0x665B, 0xFADA, 0x6CEB, 0xFADB, 0x70AB, 0xFADC, 0x7384,
+	0xFADD, 0x73B9, 0xFADE, 0x73FE, 0xFADF, 0x7729, 0xFAE0, 0x774D,
+	0xFAE1, 0x7D43, 0xFAE2, 0x7D62, 0xFAE3, 0x7E23, 0xFAE4, 0x8237,
+	0xFAE5, 0x8852, 0xFAE6, 0xFA0A, 0xFAE7, 0x8CE2, 0xFAE8, 0x9249,
+	0xFAE9, 0x986F, 0xFAEA, 0x5B51, 0xFAEB, 0x7A74, 0xFAEC, 0x8840,
+	0xFAED, 0x9801, 0xFAEE, 0x5ACC, 0xFAEF, 0x4FE0, 0xFAF0, 0x5354,
+	0xFAF1, 0x593E, 0xFAF2, 0x5CFD, 0xFAF3, 0x633E, 0xFAF4, 0x6D79,
+	0xFAF5, 0x72F9, 0xFAF6, 0x8105, 0xFAF7, 0x8107, 0xFAF8, 0x83A2,
+	0xFAF9, 0x92CF, 0xFAFA, 0x9830, 0xFAFB, 0x4EA8, 0xFAFC, 0x5144,
+	0xFAFD, 0x5211, 0xFAFE, 0x578B, 0xFBA1, 0x5F62, 0xFBA2, 0x6CC2,
+	0xFBA3, 0x6ECE, 0xFBA4, 0x7005, 0xFBA5, 0x7050, 0xFBA6, 0x70AF,
+	0xFBA7, 0x7192, 0xFBA8, 0x73E9, 0xFBA9, 0x7469, 0xFBAA, 0x834A,
+	0xFBAB, 0x87A2, 0xFBAC, 0x8861, 0xFBAD, 0x9008, 0xFBAE, 0x90A2,
+	0xFBAF, 0x93A3, 0xFBB0, 0x99A8, 0xFBB1, 0x516E, 0xFBB2, 0x5F57,
+	0xFBB3, 0x60E0, 0xFBB4, 0x6167, 0xFBB5, 0x66B3, 0xFBB6, 0x8559,
+	0xFBB7, 0x8E4A, 0xFBB8, 0x91AF, 0xFBB9, 0x978B, 0xFBBA, 0x4E4E,
+	0xFBBB, 0x4E92, 0xFBBC, 0x547C, 0xFBBD, 0x58D5, 0xFBBE, 0x58FA,
+	0xFBBF, 0x597D, 0xFBC0, 0x5CB5, 0xFBC1, 0x5F27, 0xFBC2, 0x6236,
+	0xFBC3, 0x6248, 0xFBC4, 0x660A, 0xFBC5, 0x6667, 0xFBC6, 0x6BEB,
+	0xFBC7, 0x6D69, 0xFBC8, 0x6DCF, 0xFBC9, 0x6E56, 0xFBCA, 0x6EF8,
+	0xFBCB, 0x6F94, 0xFBCC, 0x6FE0, 0xFBCD, 0x6FE9, 0xFBCE, 0x705D,
+	0xFBCF, 0x72D0, 0xFBD0, 0x7425, 0xFBD1, 0x745A, 0xFBD2, 0x74E0,
+	0xFBD3, 0x7693, 0xFBD4, 0x795C, 0xFBD5, 0x7CCA, 0xFBD6, 0x7E1E,
+	0xFBD7, 0x80E1, 0xFBD8, 0x82A6, 0xFBD9, 0x846B, 0xFBDA, 0x84BF,
+	0xFBDB, 0x864E, 0xFBDC, 0x865F, 0xFBDD, 0x8774, 0xFBDE, 0x8B77,
+	0xFBDF, 0x8C6A, 0xFBE0, 0x93AC, 0xFBE1, 0x9800, 0xFBE2, 0x9865,
+	0xFBE3, 0x60D1, 0xFBE4, 0x6216, 0xFBE5, 0x9177, 0xFBE6, 0x5A5A,
+	0xFBE7, 0x660F, 0xFBE8, 0x6DF7, 0xFBE9, 0x6E3E, 0xFBEA, 0x743F,
+	0xFBEB, 0x9B42, 0xFBEC, 0x5FFD, 0xFBED, 0x60DA, 0xFBEE, 0x7B0F,
+	0xFBEF, 0x54C4, 0xFBF0, 0x5F18, 0xFBF1, 0x6C5E, 0xFBF2, 0x6CD3,
+	0xFBF3, 0x6D2A, 0xFBF4, 0x70D8, 0xFBF5, 0x7D05, 0xFBF6, 0x8679,
+	0xFBF7, 0x8A0C, 0xFBF8, 0x9D3B, 0xFBF9, 0x5316, 0xFBFA, 0x548C,
+	0xFBFB, 0x5B05, 0xFBFC, 0x6A3A, 0xFBFD, 0x706B, 0xFBFE, 0x7575,
+	0xFCA1, 0x798D, 0xFCA2, 0x79BE, 0xFCA3, 0x82B1, 0xFCA4, 0x83EF,
+	0xFCA5, 0x8A71, 0xFCA6, 0x8B41, 0xFCA7, 0x8CA8, 0xFCA8, 0x9774,
+	0xFCA9, 0xFA0B, 0xFCAA, 0x64F4, 0xFCAB, 0x652B, 0xFCAC, 0x78BA,
+	0xFCAD, 0x78BB, 0xFCAE, 0x7A6B, 0xFCAF, 0x4E38, 0xFCB0, 0x559A,
+	0xFCB1, 0x5950, 0xFCB2, 0x5BA6, 0xFCB3, 0x5E7B, 0xFCB4, 0x60A3,
+	0xFCB5, 0x63DB, 0xFCB6, 0x6B61, 0xFCB7, 0x6665, 0xFCB8, 0x6853,
+	0xFCB9, 0x6E19, 0xFCBA, 0x7165, 0xFCBB, 0x74B0, 0xFCBC, 0x7D08,
+	0xFCBD, 0x9084, 0xFCBE, 0x9A69, 0xFCBF, 0x9C25, 0xFCC0, 0x6D3B,
+	0xFCC1, 0x6ED1, 0xFCC2, 0x733E, 0xFCC3, 0x8C41, 0xFCC4, 0x95CA,
+	0xFCC5, 0x51F0, 0xFCC6, 0x5E4C, 0xFCC7, 0x5FA8, 0xFCC8, 0x604D,
+	0xFCC9, 0x60F6, 0xFCCA, 0x6130, 0xFCCB, 0x614C, 0xFCCC, 0x6643,
+	0xFCCD, 0x6644, 0xFCCE, 0x69A5, 0xFCCF, 0x6CC1, 0xFCD0, 0x6E5F,
+	0xFCD1, 0x6EC9, 0xFCD2, 0x6F62, 0xFCD3, 0x714C, 0xFCD4, 0x749C,
+	0xFCD5, 0x7687, 0xFCD6, 0x7BC1, 0xFCD7, 0x7C27, 0xFCD8, 0x8352,
+	0xFCD9, 0x8757, 0xFCDA, 0x9051, 0xFCDB, 0x968D, 0xFCDC, 0x9EC3,
+	0xFCDD, 0x532F, 0xFCDE, 0x56DE, 0xFCDF, 0x5EFB, 0xFCE0, 0x5F8A,
+	0xFCE1, 0x6062, 0xFCE2, 0x6094, 0xFCE3, 0x61F7, 0xFCE4, 0x6666,
+	0xFCE5, 0x6703, 0xFCE6, 0x6A9C, 0xFCE7, 0x6DEE, 0xFCE8, 0x6FAE,
+	0xFCE9, 0x7070, 0xFCEA, 0x736A, 0xFCEB, 0x7E6A, 0xFCEC, 0x81BE,
+	0xFCED, 0x8334, 0xFCEE, 0x86D4, 0xFCEF, 0x8AA8, 0xFCF0, 0x8CC4,
+	0xFCF1, 0x5283, 0xFCF2, 0x7372, 0xFCF3, 0x5B96, 0xFCF4, 0x6A6B,
+	0xFCF5, 0x9404, 0xFCF6, 0x54EE, 0xFCF7, 0x5686, 0xFCF8, 0x5B5D,
+	0xFCF9, 0x6548, 0xFCFA, 0x6585, 0xFCFB, 0x66C9, 0xFCFC, 0x689F,
+	0xFCFD, 0x6D8D, 0xFCFE, 0x6DC6, 0xFDA1, 0x723B, 0xFDA2, 0x80B4,
+	0xFDA3, 0x9175, 0xFDA4, 0x9A4D, 0xFDA5, 0x4FAF, 0xFDA6, 0x5019,
+	0xFDA7, 0x539A, 0xFDA8, 0x540E, 0xFDA9, 0x543C, 0xFDAA, 0x5589,
+	0xFDAB, 0x55C5, 0xFDAC, 0x5E3F, 0xFDAD, 0x5F8C, 0xFDAE, 0x673D,
+	0xFDAF, 0x7166, 0xFDB0, 0x73DD, 0xFDB1, 0x9005, 0xFDB2, 0x52DB,
+	0xFDB3, 0x52F3, 0xFDB4, 0x5864, 0xFDB5, 0x58CE, 0xFDB6, 0x7104,
+	0xFDB7, 0x718F, 0xFDB8, 0x71FB, 0xFDB9, 0x85B0, 0xFDBA, 0x8A13,
+	0xFDBB, 0x6688, 0xFDBC, 0x85A8, 0xFDBD, 0x55A7, 0xFDBE, 0x6684,
+	0xFDBF, 0x714A, 0xFDC0, 0x8431, 0xFDC1, 0x5349, 0xFDC2, 0x5599,
+	0xFDC3, 0x6BC1, 0xFDC4, 0x5F59, 0xFDC5, 0x5FBD, 0xFDC6, 0x63EE,
+	0xFDC7, 0x6689, 0xFDC8, 0x7147, 0xFDC9, 0x8AF1, 0xFDCA, 0x8F1D,
+	0xFDCB, 0x9EBE, 0xFDCC, 0x4F11, 0xFDCD, 0x643A, 0xFDCE, 0x70CB,
+	0xFDCF, 0x7566, 0xFDD0, 0x8667, 0xFDD1, 0x6064, 0xFDD2, 0x8B4E,
+	0xFDD3, 0x9DF8, 0xFDD4, 0x5147, 0xFDD5, 0x51F6, 0xFDD6, 0x5308,
+	0xFDD7, 0x6D36, 0xFDD8, 0x80F8, 0xFDD9, 0x9ED1, 0xFDDA, 0x6615,
+	0xFDDB, 0x6B23, 0xFDDC, 0x7098, 0xFDDD, 0x75D5, 0xFDDE, 0x5403,
+	0xFDDF, 0x5C79, 0xFDE0, 0x7D07, 0xFDE1, 0x8A16, 0xFDE2, 0x6B20,
+	0xFDE3, 0x6B3D, 0xFDE4, 0x6B46, 0xFDE5, 0x5438, 0xFDE6, 0x6070,
+	0xFDE7, 0x6D3D, 0xFDE8, 0x7FD5, 0xFDE9, 0x8208, 0xFDEA, 0x50D6,
+	0xFDEB, 0x51DE, 0xFDEC, 0x559C, 0xFDED, 0x566B, 0xFDEE, 0x56CD,
+	0xFDEF, 0x59EC, 0xFDF0, 0x5B09, 0xFDF1, 0x5E0C, 0xFDF2, 0x6199,
+	0xFDF3, 0x6198, 0xFDF4, 0x6231, 0xFDF5, 0x665E, 0xFDF6, 0x66E6,
+	0xFDF7, 0x7199, 0xFDF8, 0x71B9, 0xFDF9, 0x71BA, 0xFDFA, 0x72A7,
+	0xFDFB, 0x79A7, 0xFDFC, 0x7A00, 0xFDFD, 0x7FB2, 0xFDFE, 0x8A70,
+	0, 0
+};
+
+
+
+WCHAR ff_convert (	/* Converted code, 0 means conversion error */
+	WCHAR	chr,	/* Character code to be converted */
+	UINT	dir		/* 0: Unicode to OEMCP, 1: OEMCP to Unicode */
+)
+{
+	const WCHAR *p;
+	WCHAR c;
+	int i, n, li, hi;
+
+
+	if (chr < 0x80) {	/* ASCII */
+		c = chr;
+	} else {
+		if (dir) {		/* OEMCP to unicode */
+			p = oem2uni;
+			hi = sizeof oem2uni / 4 - 1;
+		} else {		/* Unicode to OEMCP */
+			p = uni2oem;
+			hi = sizeof uni2oem / 4 - 1;
+		}
+		li = 0;
+		for (n = 16; n; n--) {
+			i = li + (hi - li) / 2;
+			if (chr == p[i * 2]) break;
+			if (chr > p[i * 2])
+				li = i;
+			else
+				hi = i;
+		}
+		c = n ? p[i * 2 + 1] : 0;
+	}
+
+	return c;
+}
+
+
+
+
+WCHAR ff_wtoupper (	/* Upper converted character */
+	WCHAR chr		/* Input character */
+)
+{
+	static const WCHAR tbl_lower[] = { 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0xA1, 0x00A2, 0x00A3, 0x00A5, 0x00AC, 0x00AF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0x0FF, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x137, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x148, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x17E, 0x192, 0x3B1, 0x3B2, 0x3B3, 0x3B4, 0x3B5, 0x3B6, 0x3B7, 0x3B8, 0x3B9, 0x3BA, 0x3BB, 0x3BC, 0x3BD, 0x3BE, 0x3BF, 0x3C0, 0x3C1, 0x3C3, 0x3C4, 0x3C5, 0x3C6, 0x3C7, 0x3C8, 0x3C9, 0x3CA, 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437, 0x438, 0x439, 0x43A, 0x43B, 0x43C, 0x43D, 0x43E, 0x43F, 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, 0x448, 0x449, 0x44A, 0x44B, 0x44C, 0x44D, 0x44E, 0x44F, 0x451, 0x452, 0x453, 0x454, 0x455, 0x456, 0x457, 0x458, 0x459, 0x45A, 0x45B, 0x45C, 0x45E, 0x45F, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x217A, 0x217B, 0x217C, 0x217D, 0x217E, 0x217F, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0 };
+	static const WCHAR tbl_upper[] = { 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x21, 0xFFE0, 0xFFE1, 0xFFE5, 0xFFE2, 0xFFE3, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0x178, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x179, 0x17B, 0x17D, 0x191, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397, 0x398, 0x399, 0x39A, 0x39B, 0x39C, 0x39D, 0x39E, 0x39F, 0x3A0, 0x3A1, 0x3A3, 0x3A4, 0x3A5, 0x3A6, 0x3A7, 0x3A8, 0x3A9, 0x3AA, 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41A, 0x41B, 0x41C, 0x41D, 0x41E, 0x41F, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42A, 0x42B, 0x42C, 0x42D, 0x42E, 0x42F, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x407, 0x408, 0x409, 0x40A, 0x40B, 0x40C, 0x40E, 0x40F, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216A, 0x216B, 0x216C, 0x216D, 0x216E, 0x216F, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0 };
+	int i;
+
+
+	for (i = 0; tbl_lower[i] && chr != tbl_lower[i]; i++) ;
+
+	return tbl_lower[i] ? tbl_upper[i] : chr;
+}
Index: uKadecot/trunk/tools/makefsdata/option/cc950.c
===================================================================
--- uKadecot/trunk/tools/makefsdata/option/cc950.c	(revision 101)
+++ uKadecot/trunk/tools/makefsdata/option/cc950.c	(revision 101)
@@ -0,0 +1,6829 @@
+/*------------------------------------------------------------------------*/
+/* Unicode - OEM code bidirectional converter  (C)ChaN, 2009              */
+/*                                                                        */
+/* CP950 (Traditional Chinese Big5)                                       */
+/*------------------------------------------------------------------------*/
+
+#include "../ff.h"
+
+
+#if !_USE_LFN || _CODE_PAGE != 950
+#error This file is not needed in current configuration. Remove from the project.
+#endif
+
+
+static
+const WCHAR uni2oem[] = {
+/*  Unicode - OEM,  Unicode - OEM,  Unicode - OEM,  Unicode - OEM */
+	0x00A7, 0xA1B1, 0x00AF, 0xA1C2, 0x00B0, 0xA258, 0x00B1, 0xA1D3,
+	0x00B7, 0xA150, 0x00D7, 0xA1D1, 0x00F7, 0xA1D2, 0x02C7, 0xA3BE,
+	0x02C9, 0xA3BC, 0x02CA, 0xA3BD, 0x02CB, 0xA3BF, 0x02CD, 0xA1C5,
+	0x02D9, 0xA3BB, 0x0391, 0xA344, 0x0392, 0xA345, 0x0393, 0xA346,
+	0x0394, 0xA347, 0x0395, 0xA348, 0x0396, 0xA349, 0x0397, 0xA34A,
+	0x0398, 0xA34B, 0x0399, 0xA34C, 0x039A, 0xA34D, 0x039B, 0xA34E,
+	0x039C, 0xA34F, 0x039D, 0xA350, 0x039E, 0xA351, 0x039F, 0xA352,
+	0x03A0, 0xA353, 0x03A1, 0xA354, 0x03A3, 0xA355, 0x03A4, 0xA356,
+	0x03A5, 0xA357, 0x03A6, 0xA358, 0x03A7, 0xA359, 0x03A8, 0xA35A,
+	0x03A9, 0xA35B, 0x03B1, 0xA35C, 0x03B2, 0xA35D, 0x03B3, 0xA35E,
+	0x03B4, 0xA35F, 0x03B5, 0xA360, 0x03B6, 0xA361, 0x03B7, 0xA362,
+	0x03B8, 0xA363, 0x03B9, 0xA364, 0x03BA, 0xA365, 0x03BB, 0xA366,
+	0x03BC, 0xA367, 0x03BD, 0xA368, 0x03BE, 0xA369, 0x03BF, 0xA36A,
+	0x03C0, 0xA36B, 0x03C1, 0xA36C, 0x03C3, 0xA36D, 0x03C4, 0xA36E,
+	0x03C5, 0xA36F, 0x03C6, 0xA370, 0x03C7, 0xA371, 0x03C8, 0xA372,
+	0x03C9, 0xA373, 0x2013, 0xA156, 0x2014, 0xA158, 0x2018, 0xA1A5,
+	0x2019, 0xA1A6, 0x201C, 0xA1A7, 0x201D, 0xA1A8, 0x2025, 0xA14C,
+	0x2026, 0xA14B, 0x2027, 0xA145, 0x2032, 0xA1AC, 0x2035, 0xA1AB,
+	0x203B, 0xA1B0, 0x20AC, 0xA3E1, 0x2103, 0xA24A, 0x2105, 0xA1C1,
+	0x2109, 0xA24B, 0x2160, 0xA2B9, 0x2161, 0xA2BA, 0x2162, 0xA2BB,
+	0x2163, 0xA2BC, 0x2164, 0xA2BD, 0x2165, 0xA2BE, 0x2166, 0xA2BF,
+	0x2167, 0xA2C0, 0x2168, 0xA2C1, 0x2169, 0xA2C2, 0x2190, 0xA1F6,
+	0x2191, 0xA1F4, 0x2192, 0xA1F7, 0x2193, 0xA1F5, 0x2196, 0xA1F8,
+	0x2197, 0xA1F9, 0x2198, 0xA1FB, 0x2199, 0xA1FA, 0x2215, 0xA241,
+	0x221A, 0xA1D4, 0x221E, 0xA1DB, 0x221F, 0xA1E8, 0x2220, 0xA1E7,
+	0x2223, 0xA1FD, 0x2225, 0xA1FC, 0x2229, 0xA1E4, 0x222A, 0xA1E5,
+	0x222B, 0xA1EC, 0x222E, 0xA1ED, 0x2234, 0xA1EF, 0x2235, 0xA1EE,
+	0x2252, 0xA1DC, 0x2260, 0xA1DA, 0x2261, 0xA1DD, 0x2266, 0xA1D8,
+	0x2267, 0xA1D9, 0x2295, 0xA1F2, 0x2299, 0xA1F3, 0x22A5, 0xA1E6,
+	0x22BF, 0xA1E9, 0x2500, 0xA277, 0x2502, 0xA278, 0x250C, 0xA27A,
+	0x2510, 0xA27B, 0x2514, 0xA27C, 0x2518, 0xA27D, 0x251C, 0xA275,
+	0x2524, 0xA274, 0x252C, 0xA273, 0x2534, 0xA272, 0x253C, 0xA271,
+	0x2550, 0xA2A4, 0x2550, 0xF9F9, 0x2551, 0xF9F8, 0x2552, 0xF9E6,
+	0x2553, 0xF9EF, 0x2554, 0xF9DD, 0x2555, 0xF9E8, 0x2556, 0xF9F1,
+	0x2557, 0xF9DF, 0x2558, 0xF9EC, 0x2559, 0xF9F5, 0x255A, 0xF9E3,
+	0x255B, 0xF9EE, 0x255C, 0xF9F7, 0x255D, 0xF9E5, 0x255E, 0xA2A5,
+	0x255E, 0xF9E9, 0x255F, 0xF9F2, 0x2560, 0xF9E0, 0x2561, 0xA2A7,
+	0x2561, 0xF9EB, 0x2562, 0xF9F4, 0x2563, 0xF9E2, 0x2564, 0xF9E7,
+	0x2565, 0xF9F0, 0x2566, 0xF9DE, 0x2567, 0xF9ED, 0x2568, 0xF9F6,
+	0x2569, 0xF9E4, 0x256A, 0xA2A6, 0x256A, 0xF9EA, 0x256B, 0xF9F3,
+	0x256C, 0xF9E1, 0x256D, 0xA27E, 0x256D, 0xF9FA, 0x256E, 0xA2A1,
+	0x256E, 0xF9FB, 0x256F, 0xA2A3, 0x256F, 0xF9FD, 0x2570, 0xA2A2,
+	0x2570, 0xF9FC, 0x2571, 0xA2AC, 0x2572, 0xA2AD, 0x2573, 0xA2AE,
+	0x2574, 0xA15A, 0x2581, 0xA262, 0x2582, 0xA263, 0x2583, 0xA264,
+	0x2584, 0xA265, 0x2585, 0xA266, 0x2586, 0xA267, 0x2587, 0xA268,
+	0x2588, 0xA269, 0x2589, 0xA270, 0x258A, 0xA26F, 0x258B, 0xA26E,
+	0x258C, 0xA26D, 0x258D, 0xA26C, 0x258E, 0xA26B, 0x258F, 0xA26A,
+	0x2593, 0xF9FE, 0x2594, 0xA276, 0x2595, 0xA279, 0x25A0, 0xA1BD,
+	0x25A1, 0xA1BC, 0x25B2, 0xA1B6, 0x25B3, 0xA1B5, 0x25BC, 0xA1BF,
+	0x25BD, 0xA1BE, 0x25C6, 0xA1BB, 0x25C7, 0xA1BA, 0x25CB, 0xA1B3,
+	0x25CE, 0xA1B7, 0x25CF, 0xA1B4, 0x25E2, 0xA2A8, 0x25E3, 0xA2A9,
+	0x25E4, 0xA2AB, 0x25E5, 0xA2AA, 0x2605, 0xA1B9, 0x2606, 0xA1B8,
+	0x2640, 0xA1F0, 0x2642, 0xA1F1, 0x3000, 0xA140, 0x3001, 0xA142,
+	0x3002, 0xA143, 0x3003, 0xA1B2, 0x3008, 0xA171, 0x3009, 0xA172,
+	0x300A, 0xA16D, 0x300B, 0xA16E, 0x300C, 0xA175, 0x300D, 0xA176,
+	0x300E, 0xA179, 0x300F, 0xA17A, 0x3010, 0xA169, 0x3011, 0xA16A,
+	0x3012, 0xA245, 0x3014, 0xA165, 0x3015, 0xA166, 0x301D, 0xA1A9,
+	0x301E, 0xA1AA, 0x3021, 0xA2C3, 0x3022, 0xA2C4, 0x3023, 0xA2C5,
+	0x3024, 0xA2C6, 0x3025, 0xA2C7, 0x3026, 0xA2C8, 0x3027, 0xA2C9,
+	0x3028, 0xA2CA, 0x3029, 0xA2CB, 0x3105, 0xA374, 0x3106, 0xA375,
+	0x3107, 0xA376, 0x3108, 0xA377, 0x3109, 0xA378, 0x310A, 0xA379,
+	0x310B, 0xA37A, 0x310C, 0xA37B, 0x310D, 0xA37C, 0x310E, 0xA37D,
+	0x310F, 0xA37E, 0x3110, 0xA3A1, 0x3111, 0xA3A2, 0x3112, 0xA3A3,
+	0x3113, 0xA3A4, 0x3114, 0xA3A5, 0x3115, 0xA3A6, 0x3116, 0xA3A7,
+	0x3117, 0xA3A8, 0x3118, 0xA3A9, 0x3119, 0xA3AA, 0x311A, 0xA3AB,
+	0x311B, 0xA3AC, 0x311C, 0xA3AD, 0x311D, 0xA3AE, 0x311E, 0xA3AF,
+	0x311F, 0xA3B0, 0x3120, 0xA3B1, 0x3121, 0xA3B2, 0x3122, 0xA3B3,
+	0x3123, 0xA3B4, 0x3124, 0xA3B5, 0x3125, 0xA3B6, 0x3126, 0xA3B7,
+	0x3127, 0xA3B8, 0x3128, 0xA3B9, 0x3129, 0xA3BA, 0x32A3, 0xA1C0,
+	0x338E, 0xA255, 0x338F, 0xA256, 0x339C, 0xA250, 0x339D, 0xA251,
+	0x339E, 0xA252, 0x33A1, 0xA254, 0x33C4, 0xA257, 0x33CE, 0xA253,
+	0x33D1, 0xA1EB, 0x33D2, 0xA1EA, 0x33D5, 0xA24F, 0x4E00, 0xA440,
+	0x4E01, 0xA442, 0x4E03, 0xA443, 0x4E07, 0xC945, 0x4E08, 0xA456,
+	0x4E09, 0xA454, 0x4E0A, 0xA457, 0x4E0B, 0xA455, 0x4E0C, 0xC946,
+	0x4E0D, 0xA4A3, 0x4E0E, 0xC94F, 0x4E0F, 0xC94D, 0x4E10, 0xA4A2,
+	0x4E11, 0xA4A1, 0x4E14, 0xA542, 0x4E15, 0xA541, 0x4E16, 0xA540,
+	0x4E18, 0xA543, 0x4E19, 0xA4FE, 0x4E1E, 0xA5E0, 0x4E1F, 0xA5E1,
+	0x4E26, 0xA8C3, 0x4E2B, 0xA458, 0x4E2D, 0xA4A4, 0x4E2E, 0xC950,
+	0x4E30, 0xA4A5, 0x4E31, 0xC963, 0x4E32, 0xA6EA, 0x4E33, 0xCBB1,
+	0x4E38, 0xA459, 0x4E39, 0xA4A6, 0x4E3B, 0xA544, 0x4E3C, 0xC964,
+	0x4E42, 0xC940, 0x4E43, 0xA444, 0x4E45, 0xA45B, 0x4E47, 0xC947,
+	0x4E48, 0xA45C, 0x4E4B, 0xA4A7, 0x4E4D, 0xA545, 0x4E4E, 0xA547,
+	0x4E4F, 0xA546, 0x4E52, 0xA5E2, 0x4E53, 0xA5E3, 0x4E56, 0xA8C4,
+	0x4E58, 0xADBC, 0x4E59, 0xA441, 0x4E5C, 0xC941, 0x4E5D, 0xA445,
+	0x4E5E, 0xA45E, 0x4E5F, 0xA45D, 0x4E69, 0xA5E4, 0x4E73, 0xA8C5,
+	0x4E7E, 0xB0AE, 0x4E7F, 0xD44B, 0x4E82, 0xB6C3, 0x4E83, 0xDCB1,
+	0x4E84, 0xDCB2, 0x4E86, 0xA446, 0x4E88, 0xA4A9, 0x4E8B, 0xA8C6,
+	0x4E8C, 0xA447, 0x4E8D, 0xC948, 0x4E8E, 0xA45F, 0x4E91, 0xA4AA,
+	0x4E92, 0xA4AC, 0x4E93, 0xC951, 0x4E94, 0xA4AD, 0x4E95, 0xA4AB,
+	0x4E99, 0xA5E5, 0x4E9B, 0xA8C7, 0x4E9E, 0xA8C8, 0x4E9F, 0xAB45,
+	0x4EA1, 0xA460, 0x4EA2, 0xA4AE, 0x4EA4, 0xA5E6, 0x4EA5, 0xA5E8,
+	0x4EA6, 0xA5E7, 0x4EA8, 0xA6EB, 0x4EAB, 0xA8C9, 0x4EAC, 0xA8CA,
+	0x4EAD, 0xAB46, 0x4EAE, 0xAB47, 0x4EB3, 0xADBD, 0x4EB6, 0xDCB3,
+	0x4EB9, 0xF6D6, 0x4EBA, 0xA448, 0x4EC0, 0xA4B0, 0x4EC1, 0xA4AF,
+	0x4EC2, 0xC952, 0x4EC3, 0xA4B1, 0x4EC4, 0xA4B7, 0x4EC6, 0xA4B2,
+	0x4EC7, 0xA4B3, 0x4EC8, 0xC954, 0x4EC9, 0xC953, 0x4ECA, 0xA4B5,
+	0x4ECB, 0xA4B6, 0x4ECD, 0xA4B4, 0x4ED4, 0xA54A, 0x4ED5, 0xA54B,
+	0x4ED6, 0xA54C, 0x4ED7, 0xA54D, 0x4ED8, 0xA549, 0x4ED9, 0xA550,
+	0x4EDA, 0xC96A, 0x4EDC, 0xC966, 0x4EDD, 0xC969, 0x4EDE, 0xA551,
+	0x4EDF, 0xA561, 0x4EE1, 0xC968, 0x4EE3, 0xA54E, 0x4EE4, 0xA54F,
+	0x4EE5, 0xA548, 0x4EE8, 0xC965, 0x4EE9, 0xC967, 0x4EF0, 0xA5F5,
+	0x4EF1, 0xC9B0, 0x4EF2, 0xA5F2, 0x4EF3, 0xA5F6, 0x4EF4, 0xC9BA,
+	0x4EF5, 0xC9AE, 0x4EF6, 0xA5F3, 0x4EF7, 0xC9B2, 0x4EFB, 0xA5F4,
+	0x4EFD, 0xA5F7, 0x4EFF, 0xA5E9, 0x4F00, 0xC9B1, 0x4F01, 0xA5F8,
+	0x4F02, 0xC9B5, 0x4F04, 0xC9B9, 0x4F05, 0xC9B6, 0x4F08, 0xC9B3,
+	0x4F09, 0xA5EA, 0x4F0A, 0xA5EC, 0x4F0B, 0xA5F9, 0x4F0D, 0xA5EE,
+	0x4F0E, 0xC9AB, 0x4F0F, 0xA5F1, 0x4F10, 0xA5EF, 0x4F11, 0xA5F0,
+	0x4F12, 0xC9BB, 0x4F13, 0xC9B8, 0x4F14, 0xC9AF, 0x4F15, 0xA5ED,
+	0x4F18, 0xC9AC, 0x4F19, 0xA5EB, 0x4F1D, 0xC9B4, 0x4F22, 0xC9B7,
+	0x4F2C, 0xC9AD, 0x4F2D, 0xCA66, 0x4F2F, 0xA742, 0x4F30, 0xA6F4,
+	0x4F33, 0xCA67, 0x4F34, 0xA6F1, 0x4F36, 0xA744, 0x4F38, 0xA6F9,
+	0x4F3A, 0xA6F8, 0x4F3B, 0xCA5B, 0x4F3C, 0xA6FC, 0x4F3D, 0xA6F7,
+	0x4F3E, 0xCA60, 0x4F3F, 0xCA68, 0x4F41, 0xCA64, 0x4F43, 0xA6FA,
+	0x4F46, 0xA6FD, 0x4F47, 0xA6EE, 0x4F48, 0xA747, 0x4F49, 0xCA5D,
+	0x4F4C, 0xCBBD, 0x4F4D, 0xA6EC, 0x4F4E, 0xA743, 0x4F4F, 0xA6ED,
+	0x4F50, 0xA6F5, 0x4F51, 0xA6F6, 0x4F52, 0xCA62, 0x4F53, 0xCA5E,
+	0x4F54, 0xA6FB, 0x4F55, 0xA6F3, 0x4F56, 0xCA5A, 0x4F57, 0xA6EF,
+	0x4F58, 0xCA65, 0x4F59, 0xA745, 0x4F5A, 0xA748, 0x4F5B, 0xA6F2,
+	0x4F5C, 0xA740, 0x4F5D, 0xA746, 0x4F5E, 0xA6F0, 0x4F5F, 0xCA63,
+	0x4F60, 0xA741, 0x4F61, 0xCA69, 0x4F62, 0xCA5C, 0x4F63, 0xA6FE,
+	0x4F64, 0xCA5F, 0x4F67, 0xCA61, 0x4F69, 0xA8D8, 0x4F6A, 0xCBBF,
+	0x4F6B, 0xCBCB, 0x4F6C, 0xA8D0, 0x4F6E, 0xCBCC, 0x4F6F, 0xA8CB,
+	0x4F70, 0xA8D5, 0x4F73, 0xA8CE, 0x4F74, 0xCBB9, 0x4F75, 0xA8D6,
+	0x4F76, 0xCBB8, 0x4F77, 0xCBBC, 0x4F78, 0xCBC3, 0x4F79, 0xCBC1,
+	0x4F7A, 0xA8DE, 0x4F7B, 0xA8D9, 0x4F7C, 0xCBB3, 0x4F7D, 0xCBB5,
+	0x4F7E, 0xA8DB, 0x4F7F, 0xA8CF, 0x4F80, 0xCBB6, 0x4F81, 0xCBC2,
+	0x4F82, 0xCBC9, 0x4F83, 0xA8D4, 0x4F84, 0xCBBB, 0x4F85, 0xCBB4,
+	0x4F86, 0xA8D3, 0x4F87, 0xCBB7, 0x4F88, 0xA8D7, 0x4F89, 0xCBBA,
+	0x4F8B, 0xA8D2, 0x4F8D, 0xA8CD, 0x4F8F, 0xA8DC, 0x4F90, 0xCBC4,
+	0x4F91, 0xA8DD, 0x4F92, 0xCBC8, 0x4F94, 0xCBC6, 0x4F95, 0xCBCA,
+	0x4F96, 0xA8DA, 0x4F97, 0xCBBE, 0x4F98, 0xCBB2, 0x4F9A, 0xCBC0,
+	0x4F9B, 0xA8D1, 0x4F9C, 0xCBC5, 0x4F9D, 0xA8CC, 0x4F9E, 0xCBC7,
+	0x4FAE, 0xAB56, 0x4FAF, 0xAB4A, 0x4FB2, 0xCDE0, 0x4FB3, 0xCDE8,
+	0x4FB5, 0xAB49, 0x4FB6, 0xAB51, 0x4FB7, 0xAB5D, 0x4FB9, 0xCDEE,
+	0x4FBA, 0xCDEC, 0x4FBB, 0xCDE7, 0x4FBF, 0xAB4B, 0x4FC0, 0xCDED,
+	0x4FC1, 0xCDE3, 0x4FC2, 0xAB59, 0x4FC3, 0xAB50, 0x4FC4, 0xAB58,
+	0x4FC5, 0xCDDE, 0x4FC7, 0xCDEA, 0x4FC9, 0xCDE1, 0x4FCA, 0xAB54,
+	0x4FCB, 0xCDE2, 0x4FCD, 0xCDDD, 0x4FCE, 0xAB5B, 0x4FCF, 0xAB4E,
+	0x4FD0, 0xAB57, 0x4FD1, 0xAB4D, 0x4FD3, 0xCDDF, 0x4FD4, 0xCDE4,
+	0x4FD6, 0xCDEB, 0x4FD7, 0xAB55, 0x4FD8, 0xAB52, 0x4FD9, 0xCDE6,
+	0x4FDA, 0xAB5A, 0x4FDB, 0xCDE9, 0x4FDC, 0xCDE5, 0x4FDD, 0xAB4F,
+	0x4FDE, 0xAB5C, 0x4FDF, 0xAB53, 0x4FE0, 0xAB4C, 0x4FE1, 0xAB48,
+	0x4FEC, 0xCDEF, 0x4FEE, 0xADD7, 0x4FEF, 0xADC1, 0x4FF1, 0xADD1,
+	0x4FF3, 0xADD6, 0x4FF4, 0xD0D0, 0x4FF5, 0xD0CF, 0x4FF6, 0xD0D4,
+	0x4FF7, 0xD0D5, 0x4FF8, 0xADC4, 0x4FFA, 0xADCD, 0x4FFE, 0xADDA,
+	0x5000, 0xADCE, 0x5005, 0xD0C9, 0x5006, 0xADC7, 0x5007, 0xD0CA,
+	0x5009, 0xADDC, 0x500B, 0xADD3, 0x500C, 0xADBE, 0x500D, 0xADBF,
+	0x500E, 0xD0DD, 0x500F, 0xB0BF, 0x5011, 0xADCC, 0x5012, 0xADCB,
+	0x5013, 0xD0CB, 0x5014, 0xADCF, 0x5015, 0xD45B, 0x5016, 0xADC6,
+	0x5017, 0xD0D6, 0x5018, 0xADD5, 0x5019, 0xADD4, 0x501A, 0xADCA,
+	0x501B, 0xD0CE, 0x501C, 0xD0D7, 0x501E, 0xD0C8, 0x501F, 0xADC9,
+	0x5020, 0xD0D8, 0x5021, 0xADD2, 0x5022, 0xD0CC, 0x5023, 0xADC0,
+	0x5025, 0xADC3, 0x5026, 0xADC2, 0x5027, 0xD0D9, 0x5028, 0xADD0,
+	0x5029, 0xADC5, 0x502A, 0xADD9, 0x502B, 0xADDB, 0x502C, 0xD0D3,
+	0x502D, 0xADD8, 0x502F, 0xD0DB, 0x5030, 0xD0CD, 0x5031, 0xD0DC,
+	0x5033, 0xD0D1, 0x5035, 0xD0DA, 0x5037, 0xD0D2, 0x503C, 0xADC8,
+	0x5040, 0xD463, 0x5041, 0xD457, 0x5043, 0xB0B3, 0x5045, 0xD45C,
+	0x5046, 0xD462, 0x5047, 0xB0B2, 0x5048, 0xD455, 0x5049, 0xB0B6,
+	0x504A, 0xD459, 0x504B, 0xD452, 0x504C, 0xB0B4, 0x504D, 0xD456,
+	0x504E, 0xB0B9, 0x504F, 0xB0BE, 0x5051, 0xD467, 0x5053, 0xD451,
+	0x5055, 0xB0BA, 0x5057, 0xD466, 0x505A, 0xB0B5, 0x505B, 0xD458,
+	0x505C, 0xB0B1, 0x505D, 0xD453, 0x505E, 0xD44F, 0x505F, 0xD45D,
+	0x5060, 0xD450, 0x5061, 0xD44E, 0x5062, 0xD45A, 0x5063, 0xD460,
+	0x5064, 0xD461, 0x5065, 0xB0B7, 0x5068, 0xD85B, 0x5069, 0xD45E,
+	0x506A, 0xD44D, 0x506B, 0xD45F, 0x506D, 0xB0C1, 0x506E, 0xD464,
+	0x506F, 0xB0C0, 0x5070, 0xD44C, 0x5072, 0xD454, 0x5073, 0xD465,
+	0x5074, 0xB0BC, 0x5075, 0xB0BB, 0x5076, 0xB0B8, 0x5077, 0xB0BD,
+	0x507A, 0xB0AF, 0x507D, 0xB0B0, 0x5080, 0xB3C8, 0x5082, 0xD85E,
+	0x5083, 0xD857, 0x5085, 0xB3C5, 0x5087, 0xD85F, 0x508B, 0xD855,
+	0x508C, 0xD858, 0x508D, 0xB3C4, 0x508E, 0xD859, 0x5091, 0xB3C7,
+	0x5092, 0xD85D, 0x5094, 0xD853, 0x5095, 0xD852, 0x5096, 0xB3C9,
+	0x5098, 0xB3CA, 0x5099, 0xB3C6, 0x509A, 0xB3CB, 0x509B, 0xD851,
+	0x509C, 0xD85C, 0x509D, 0xD85A, 0x509E, 0xD854, 0x50A2, 0xB3C3,
+	0x50A3, 0xD856, 0x50AC, 0xB6CA, 0x50AD, 0xB6C4, 0x50AE, 0xDCB7,
+	0x50AF, 0xB6CD, 0x50B0, 0xDCBD, 0x50B1, 0xDCC0, 0x50B2, 0xB6C6,
+	0x50B3, 0xB6C7, 0x50B4, 0xDCBA, 0x50B5, 0xB6C5, 0x50B6, 0xDCC3,
+	0x50B7, 0xB6CB, 0x50B8, 0xDCC4, 0x50BA, 0xDCBF, 0x50BB, 0xB6CC,
+	0x50BD, 0xDCB4, 0x50BE, 0xB6C9, 0x50BF, 0xDCB5, 0x50C1, 0xDCBE,
+	0x50C2, 0xDCBC, 0x50C4, 0xDCB8, 0x50C5, 0xB6C8, 0x50C6, 0xDCB6,
+	0x50C7, 0xB6CE, 0x50C8, 0xDCBB, 0x50C9, 0xDCC2, 0x50CA, 0xDCB9,
+	0x50CB, 0xDCC1, 0x50CE, 0xB9B6, 0x50CF, 0xB9B3, 0x50D1, 0xB9B4,
+	0x50D3, 0xE0F9, 0x50D4, 0xE0F1, 0x50D5, 0xB9B2, 0x50D6, 0xB9AF,
+	0x50D7, 0xE0F2, 0x50DA, 0xB9B1, 0x50DB, 0xE0F5, 0x50DD, 0xE0F7,
+	0x50E0, 0xE0FE, 0x50E3, 0xE0FD, 0x50E4, 0xE0F8, 0x50E5, 0xB9AE,
+	0x50E6, 0xE0F0, 0x50E7, 0xB9AC, 0x50E8, 0xE0F3, 0x50E9, 0xB9B7,
+	0x50EA, 0xE0F6, 0x50EC, 0xE0FA, 0x50ED, 0xB9B0, 0x50EE, 0xB9AD,
+	0x50EF, 0xE0FC, 0x50F0, 0xE0FB, 0x50F1, 0xB9B5, 0x50F3, 0xE0F4,
+	0x50F5, 0xBBF8, 0x50F6, 0xE4EC, 0x50F8, 0xE4E9, 0x50F9, 0xBBF9,
+	0x50FB, 0xBBF7, 0x50FD, 0xE4F0, 0x50FE, 0xE4ED, 0x50FF, 0xE4E6,
+	0x5100, 0xBBF6, 0x5102, 0xBBFA, 0x5103, 0xE4E7, 0x5104, 0xBBF5,
+	0x5105, 0xBBFD, 0x5106, 0xE4EA, 0x5107, 0xE4EB, 0x5108, 0xBBFB,
+	0x5109, 0xBBFC, 0x510A, 0xE4F1, 0x510B, 0xE4EE, 0x510C, 0xE4EF,
+	0x5110, 0xBEAA, 0x5111, 0xE8F8, 0x5112, 0xBEA7, 0x5113, 0xE8F5,
+	0x5114, 0xBEA9, 0x5115, 0xBEAB, 0x5117, 0xE8F6, 0x5118, 0xBEA8,
+	0x511A, 0xE8F7, 0x511C, 0xE8F4, 0x511F, 0xC076, 0x5120, 0xECBD,
+	0x5121, 0xC077, 0x5122, 0xECBB, 0x5124, 0xECBC, 0x5125, 0xECBA,
+	0x5126, 0xECB9, 0x5129, 0xECBE, 0x512A, 0xC075, 0x512D, 0xEFB8,
+	0x512E, 0xEFB9, 0x5130, 0xE4E8, 0x5131, 0xEFB7, 0x5132, 0xC078,
+	0x5133, 0xC35F, 0x5134, 0xF1EB, 0x5135, 0xF1EC, 0x5137, 0xC4D7,
+	0x5138, 0xC4D8, 0x5139, 0xF5C1, 0x513A, 0xF5C0, 0x513B, 0xC56C,
+	0x513C, 0xC56B, 0x513D, 0xF7D0, 0x513F, 0xA449, 0x5140, 0xA461,
+	0x5141, 0xA4B9, 0x5143, 0xA4B8, 0x5144, 0xA553, 0x5145, 0xA552,
+	0x5146, 0xA5FC, 0x5147, 0xA5FB, 0x5148, 0xA5FD, 0x5149, 0xA5FA,
+	0x514B, 0xA74A, 0x514C, 0xA749, 0x514D, 0xA74B, 0x5152, 0xA8E0,
+	0x5154, 0xA8DF, 0x5155, 0xA8E1, 0x5157, 0xAB5E, 0x5159, 0xA259,
+	0x515A, 0xD0DE, 0x515B, 0xA25A, 0x515C, 0xB0C2, 0x515D, 0xA25C,
+	0x515E, 0xA25B, 0x515F, 0xD860, 0x5161, 0xA25D, 0x5162, 0xB9B8,
+	0x5163, 0xA25E, 0x5165, 0xA44A, 0x5167, 0xA4BA, 0x5168, 0xA5FE,
+	0x5169, 0xA8E2, 0x516B, 0xA44B, 0x516C, 0xA4BD, 0x516D, 0xA4BB,
+	0x516E, 0xA4BC, 0x5171, 0xA640, 0x5175, 0xA74C, 0x5176, 0xA8E4,
+	0x5177, 0xA8E3, 0x5178, 0xA8E5, 0x517C, 0xADDD, 0x5180, 0xBEAC,
+	0x5187, 0xC94E, 0x5189, 0xA554, 0x518A, 0xA555, 0x518D, 0xA641,
+	0x518F, 0xCA6A, 0x5191, 0xAB60, 0x5192, 0xAB5F, 0x5193, 0xD0E0,
+	0x5194, 0xD0DF, 0x5195, 0xB0C3, 0x5197, 0xA4BE, 0x5198, 0xC955,
+	0x519E, 0xCBCD, 0x51A0, 0xAB61, 0x51A2, 0xADE0, 0x51A4, 0xADDE,
+	0x51A5, 0xADDF, 0x51AA, 0xBEAD, 0x51AC, 0xA556, 0x51B0, 0xA642,
+	0x51B1, 0xC9BC, 0x51B6, 0xA74D, 0x51B7, 0xA74E, 0x51B9, 0xCA6B,
+	0x51BC, 0xCBCE, 0x51BD, 0xA8E6, 0x51BE, 0xCBCF, 0x51C4, 0xD0E2,
+	0x51C5, 0xD0E3, 0x51C6, 0xADE3, 0x51C8, 0xD0E4, 0x51CA, 0xD0E1,
+	0x51CB, 0xADE4, 0x51CC, 0xADE2, 0x51CD, 0xADE1, 0x51CE, 0xD0E5,
+	0x51D0, 0xD468, 0x51D4, 0xD861, 0x51D7, 0xDCC5, 0x51D8, 0xE140,
+	0x51DC, 0xBBFE, 0x51DD, 0xBEAE, 0x51DE, 0xE8F9, 0x51E0, 0xA44C,
+	0x51E1, 0xA45A, 0x51F0, 0xB0C4, 0x51F1, 0xB3CD, 0x51F3, 0xB9B9,
+	0x51F5, 0xC942, 0x51F6, 0xA4BF, 0x51F8, 0xA559, 0x51F9, 0xA557,
+	0x51FA, 0xA558, 0x51FD, 0xA8E7, 0x5200, 0xA44D, 0x5201, 0xA44E,
+	0x5203, 0xA462, 0x5206, 0xA4C0, 0x5207, 0xA4C1, 0x5208, 0xA4C2,
+	0x5209, 0xC9BE, 0x520A, 0xA55A, 0x520C, 0xC96B, 0x520E, 0xA646,
+	0x5210, 0xC9BF, 0x5211, 0xA644, 0x5212, 0xA645, 0x5213, 0xC9BD,
+	0x5216, 0xA647, 0x5217, 0xA643, 0x521C, 0xCA6C, 0x521D, 0xAAEC,
+	0x521E, 0xCA6D, 0x5221, 0xCA6E, 0x5224, 0xA750, 0x5225, 0xA74F,
+	0x5228, 0xA753, 0x5229, 0xA751, 0x522A, 0xA752, 0x522E, 0xA8ED,
+	0x5230, 0xA8EC, 0x5231, 0xCBD4, 0x5232, 0xCBD1, 0x5233, 0xCBD2,
+	0x5235, 0xCBD0, 0x5236, 0xA8EE, 0x5237, 0xA8EA, 0x5238, 0xA8E9,
+	0x523A, 0xA8EB, 0x523B, 0xA8E8, 0x5241, 0xA8EF, 0x5243, 0xAB63,
+	0x5244, 0xCDF0, 0x5246, 0xCBD3, 0x5247, 0xAB68, 0x5249, 0xCDF1,
+	0x524A, 0xAB64, 0x524B, 0xAB67, 0x524C, 0xAB66, 0x524D, 0xAB65,
+	0x524E, 0xAB62, 0x5252, 0xD0E8, 0x5254, 0xADE7, 0x5255, 0xD0EB,
+	0x5256, 0xADE5, 0x525A, 0xD0E7, 0x525B, 0xADE8, 0x525C, 0xADE6,
+	0x525D, 0xADE9, 0x525E, 0xD0E9, 0x525F, 0xD0EA, 0x5261, 0xD0E6,
+	0x5262, 0xD0EC, 0x5269, 0xB3D1, 0x526A, 0xB0C5, 0x526B, 0xD469,
+	0x526C, 0xD46B, 0x526D, 0xD46A, 0x526E, 0xD46C, 0x526F, 0xB0C6,
+	0x5272, 0xB3CE, 0x5274, 0xB3CF, 0x5275, 0xB3D0, 0x5277, 0xB6D0,
+	0x5278, 0xDCC7, 0x527A, 0xDCC6, 0x527B, 0xDCC8, 0x527C, 0xDCC9,
+	0x527D, 0xB6D1, 0x527F, 0xB6CF, 0x5280, 0xE141, 0x5281, 0xE142,
+	0x5282, 0xB9BB, 0x5283, 0xB9BA, 0x5284, 0xE35A, 0x5287, 0xBC40,
+	0x5288, 0xBC41, 0x5289, 0xBC42, 0x528A, 0xBC44, 0x528B, 0xE4F2,
+	0x528C, 0xE4F3, 0x528D, 0xBC43, 0x5291, 0xBEAF, 0x5293, 0xBEB0,
+	0x5296, 0xF1ED, 0x5297, 0xF5C3, 0x5298, 0xF5C2, 0x5299, 0xF7D1,
+	0x529B, 0xA44F, 0x529F, 0xA55C, 0x52A0, 0xA55B, 0x52A3, 0xA648,
+	0x52A6, 0xC9C0, 0x52A9, 0xA755, 0x52AA, 0xA756, 0x52AB, 0xA754,
+	0x52AC, 0xA757, 0x52AD, 0xCA6F, 0x52AE, 0xCA70, 0x52BB, 0xA8F1,
+	0x52BC, 0xCBD5, 0x52BE, 0xA8F0, 0x52C0, 0xCDF2, 0x52C1, 0xAB6C,
+	0x52C2, 0xCDF3, 0x52C3, 0xAB6B, 0x52C7, 0xAB69, 0x52C9, 0xAB6A,
+	0x52CD, 0xD0ED, 0x52D2, 0xB0C7, 0x52D3, 0xD46E, 0x52D5, 0xB0CA,
+	0x52D6, 0xD46D, 0x52D7, 0xB1E5, 0x52D8, 0xB0C9, 0x52D9, 0xB0C8,
+	0x52DB, 0xB3D4, 0x52DD, 0xB3D3, 0x52DE, 0xB3D2, 0x52DF, 0xB6D2,
+	0x52E2, 0xB6D5, 0x52E3, 0xB6D6, 0x52E4, 0xB6D4, 0x52E6, 0xB6D3,
+	0x52E9, 0xE143, 0x52EB, 0xE144, 0x52EF, 0xE4F5, 0x52F0, 0xBC45,
+	0x52F1, 0xE4F4, 0x52F3, 0xBEB1, 0x52F4, 0xECBF, 0x52F5, 0xC079,
+	0x52F7, 0xF1EE, 0x52F8, 0xC455, 0x52FA, 0xA463, 0x52FB, 0xA4C3,
+	0x52FC, 0xC956, 0x52FE, 0xA4C4, 0x52FF, 0xA4C5, 0x5305, 0xA55D,
+	0x5306, 0xA55E, 0x5308, 0xA649, 0x5309, 0xCA71, 0x530A, 0xCBD6,
+	0x530B, 0xCBD7, 0x530D, 0xAB6D, 0x530E, 0xD0EE, 0x530F, 0xB0CC,
+	0x5310, 0xB0CB, 0x5311, 0xD863, 0x5312, 0xD862, 0x5315, 0xA450,
+	0x5316, 0xA4C6, 0x5317, 0xA55F, 0x5319, 0xB0CD, 0x531A, 0xC943,
+	0x531C, 0xC96C, 0x531D, 0xA560, 0x531F, 0xC9C2, 0x5320, 0xA64B,
+	0x5321, 0xA64A, 0x5322, 0xC9C1, 0x5323, 0xA758, 0x532A, 0xADEA,
+	0x532D, 0xD46F, 0x532F, 0xB6D7, 0x5330, 0xE145, 0x5331, 0xB9BC,
+	0x5334, 0xE8FA, 0x5337, 0xF3FD, 0x5339, 0xA4C7, 0x533C, 0xCBD8,
+	0x533D, 0xCDF4, 0x533E, 0xB0D0, 0x533F, 0xB0CE, 0x5340, 0xB0CF,
+	0x5341, 0xA2CC, 0x5341, 0xA451, 0x5343, 0xA464, 0x5344, 0xA2CD,
+	0x5345, 0xA2CE, 0x5345, 0xA4CA, 0x5347, 0xA4C9, 0x5348, 0xA4C8,
+	0x5349, 0xA563, 0x534A, 0xA562, 0x534C, 0xC96D, 0x534D, 0xC9C3,
+	0x5351, 0xA8F5, 0x5352, 0xA8F2, 0x5353, 0xA8F4, 0x5354, 0xA8F3,
+	0x5357, 0xAB6E, 0x535A, 0xB3D5, 0x535C, 0xA452, 0x535E, 0xA4CB,
+	0x5360, 0xA565, 0x5361, 0xA564, 0x5363, 0xCA72, 0x5366, 0xA8F6,
+	0x536C, 0xC957, 0x536E, 0xA567, 0x536F, 0xA566, 0x5370, 0xA64C,
+	0x5371, 0xA64D, 0x5372, 0xCA73, 0x5373, 0xA759, 0x5375, 0xA75A,
+	0x5377, 0xA8F7, 0x5378, 0xA8F8, 0x5379, 0xA8F9, 0x537B, 0xAB6F,
+	0x537C, 0xCDF5, 0x537F, 0xADEB, 0x5382, 0xC944, 0x5384, 0xA4CC,
+	0x538A, 0xC9C4, 0x538E, 0xCA74, 0x538F, 0xCA75, 0x5392, 0xCBD9,
+	0x5394, 0xCBDA, 0x5396, 0xCDF7, 0x5397, 0xCDF6, 0x5398, 0xCDF9,
+	0x5399, 0xCDF8, 0x539A, 0xAB70, 0x539C, 0xD470, 0x539D, 0xADED,
+	0x539E, 0xD0EF, 0x539F, 0xADEC, 0x53A4, 0xD864, 0x53A5, 0xB3D6,
+	0x53A7, 0xD865, 0x53AC, 0xE146, 0x53AD, 0xB9BD, 0x53B2, 0xBC46,
+	0x53B4, 0xF1EF, 0x53B9, 0xC958, 0x53BB, 0xA568, 0x53C3, 0xB0D1,
+	0x53C8, 0xA453, 0x53C9, 0xA465, 0x53CA, 0xA4CE, 0x53CB, 0xA4CD,
+	0x53CD, 0xA4CF, 0x53D4, 0xA8FB, 0x53D6, 0xA8FA, 0x53D7, 0xA8FC,
+	0x53DB, 0xAB71, 0x53DF, 0xADEE, 0x53E1, 0xE8FB, 0x53E2, 0xC24F,
+	0x53E3, 0xA466, 0x53E4, 0xA56A, 0x53E5, 0xA579, 0x53E6, 0xA574,
+	0x53E8, 0xA56F, 0x53E9, 0xA56E, 0x53EA, 0xA575, 0x53EB, 0xA573,
+	0x53EC, 0xA56C, 0x53ED, 0xA57A, 0x53EE, 0xA56D, 0x53EF, 0xA569,
+	0x53F0, 0xA578, 0x53F1, 0xA577, 0x53F2, 0xA576, 0x53F3, 0xA56B,
+	0x53F5, 0xA572, 0x53F8, 0xA571, 0x53FB, 0xA57B, 0x53FC, 0xA570,
+	0x5401, 0xA653, 0x5403, 0xA659, 0x5404, 0xA655, 0x5406, 0xA65B,
+	0x5407, 0xC9C5, 0x5408, 0xA658, 0x5409, 0xA64E, 0x540A, 0xA651,
+	0x540B, 0xA654, 0x540C, 0xA650, 0x540D, 0xA657, 0x540E, 0xA65A,
+	0x540F, 0xA64F, 0x5410, 0xA652, 0x5411, 0xA656, 0x5412, 0xA65C,
+	0x5418, 0xCA7E, 0x5419, 0xCA7B, 0x541B, 0xA767, 0x541C, 0xCA7C,
+	0x541D, 0xA75B, 0x541E, 0xA75D, 0x541F, 0xA775, 0x5420, 0xA770,
+	0x5424, 0xCAA5, 0x5425, 0xCA7D, 0x5426, 0xA75F, 0x5427, 0xA761,
+	0x5428, 0xCAA4, 0x5429, 0xA768, 0x542A, 0xCA78, 0x542B, 0xA774,
+	0x542C, 0xA776, 0x542D, 0xA75C, 0x542E, 0xA76D, 0x5430, 0xCA76,
+	0x5431, 0xA773, 0x5433, 0xA764, 0x5435, 0xA76E, 0x5436, 0xA76F,
+	0x5437, 0xCA77, 0x5438, 0xA76C, 0x5439, 0xA76A, 0x543B, 0xA76B,
+	0x543C, 0xA771, 0x543D, 0xCAA1, 0x543E, 0xA75E, 0x5440, 0xA772,
+	0x5441, 0xCAA3, 0x5442, 0xA766, 0x5443, 0xA763, 0x5445, 0xCA7A,
+	0x5446, 0xA762, 0x5447, 0xCAA6, 0x5448, 0xA765, 0x544A, 0xA769,
+	0x544E, 0xA760, 0x544F, 0xCAA2, 0x5454, 0xCA79, 0x5460, 0xCBEB,
+	0x5461, 0xCBEA, 0x5462, 0xA94F, 0x5463, 0xCBED, 0x5464, 0xCBEF,
+	0x5465, 0xCBE4, 0x5466, 0xCBE7, 0x5467, 0xCBEE, 0x5468, 0xA950,
+	0x546B, 0xCBE1, 0x546C, 0xCBE5, 0x546F, 0xCBE9, 0x5470, 0xCE49,
+	0x5471, 0xA94B, 0x5472, 0xCE4D, 0x5473, 0xA8FD, 0x5474, 0xCBE6,
+	0x5475, 0xA8FE, 0x5476, 0xA94C, 0x5477, 0xA945, 0x5478, 0xA941,
+	0x547A, 0xCBE2, 0x547B, 0xA944, 0x547C, 0xA949, 0x547D, 0xA952,
+	0x547E, 0xCBE3, 0x547F, 0xCBDC, 0x5480, 0xA943, 0x5481, 0xCBDD,
+	0x5482, 0xCBDF, 0x5484, 0xA946, 0x5486, 0xA948, 0x5487, 0xCBDB,
+	0x5488, 0xCBE0, 0x548B, 0xA951, 0x548C, 0xA94D, 0x548D, 0xCBE8,
+	0x548E, 0xA953, 0x5490, 0xA94A, 0x5491, 0xCBDE, 0x5492, 0xA947,
+	0x5495, 0xA942, 0x5496, 0xA940, 0x5498, 0xCBEC, 0x549A, 0xA94E,
+	0x54A0, 0xCE48, 0x54A1, 0xCDFB, 0x54A2, 0xCE4B, 0x54A5, 0xCDFD,
+	0x54A6, 0xAB78, 0x54A7, 0xABA8, 0x54A8, 0xAB74, 0x54A9, 0xABA7,
+	0x54AA, 0xAB7D, 0x54AB, 0xABA4, 0x54AC, 0xAB72, 0x54AD, 0xCDFC,
+	0x54AE, 0xCE43, 0x54AF, 0xABA3, 0x54B0, 0xCE4F, 0x54B1, 0xABA5,
+	0x54B3, 0xAB79, 0x54B6, 0xCE45, 0x54B7, 0xCE42, 0x54B8, 0xAB77,
+	0x54BA, 0xCDFA, 0x54BB, 0xABA6, 0x54BC, 0xCE4A, 0x54BD, 0xAB7C,
+	0x54BE, 0xCE4C, 0x54BF, 0xABA9, 0x54C0, 0xAB73, 0x54C1, 0xAB7E,
+	0x54C2, 0xAB7B, 0x54C3, 0xCE40, 0x54C4, 0xABA1, 0x54C5, 0xCE46,
+	0x54C6, 0xCE47, 0x54C7, 0xAB7A, 0x54C8, 0xABA2, 0x54C9, 0xAB76,
+	0x54CE, 0xAB75, 0x54CF, 0xCDFE, 0x54D6, 0xCE44, 0x54DE, 0xCE4E,
+	0x54E0, 0xD144, 0x54E1, 0xADFB, 0x54E2, 0xD0F1, 0x54E4, 0xD0F6,
+	0x54E5, 0xADF4, 0x54E6, 0xAE40, 0x54E7, 0xD0F4, 0x54E8, 0xADEF,
+	0x54E9, 0xADF9, 0x54EA, 0xADFE, 0x54EB, 0xD0FB, 0x54ED, 0xADFA,
+	0x54EE, 0xADFD, 0x54F1, 0xD0FE, 0x54F2, 0xADF5, 0x54F3, 0xD0F5,
+	0x54F7, 0xD142, 0x54F8, 0xD143, 0x54FA, 0xADF7, 0x54FB, 0xD141,
+	0x54FC, 0xADF3, 0x54FD, 0xAE43, 0x54FF, 0xD0F8, 0x5501, 0xADF1,
+	0x5503, 0xD146, 0x5504, 0xD0F9, 0x5505, 0xD0FD, 0x5506, 0xADF6,
+	0x5507, 0xAE42, 0x5508, 0xD0FA, 0x5509, 0xADFC, 0x550A, 0xD140,
+	0x550B, 0xD147, 0x550C, 0xD4A1, 0x550E, 0xD145, 0x550F, 0xAE44,
+	0x5510, 0xADF0, 0x5511, 0xD0FC, 0x5512, 0xD0F3, 0x5514, 0xADF8,
+	0x5517, 0xD0F2, 0x551A, 0xD0F7, 0x5526, 0xD0F0, 0x5527, 0xAE41,
+	0x552A, 0xD477, 0x552C, 0xB0E4, 0x552D, 0xD4A7, 0x552E, 0xB0E2,
+	0x552F, 0xB0DF, 0x5530, 0xD47C, 0x5531, 0xB0DB, 0x5532, 0xD4A2,
+	0x5533, 0xB0E6, 0x5534, 0xD476, 0x5535, 0xD47B, 0x5536, 0xD47A,
+	0x5537, 0xADF2, 0x5538, 0xB0E1, 0x5539, 0xD4A5, 0x553B, 0xD4A8,
+	0x553C, 0xD473, 0x553E, 0xB3E8, 0x5540, 0xD4A9, 0x5541, 0xB0E7,
+	0x5543, 0xB0D9, 0x5544, 0xB0D6, 0x5545, 0xD47E, 0x5546, 0xB0D3,
+	0x5548, 0xD4A6, 0x554A, 0xB0DA, 0x554B, 0xD4AA, 0x554D, 0xD474,
+	0x554E, 0xD4A4, 0x554F, 0xB0DD, 0x5550, 0xD475, 0x5551, 0xD478,
+	0x5552, 0xD47D, 0x5555, 0xB0DE, 0x5556, 0xB0DC, 0x5557, 0xB0E8,
+	0x555C, 0xB0E3, 0x555E, 0xB0D7, 0x555F, 0xB1D2, 0x5561, 0xB0D8,
+	0x5562, 0xD479, 0x5563, 0xB0E5, 0x5564, 0xB0E0, 0x5565, 0xD4A3,
+	0x5566, 0xB0D5, 0x556A, 0xB0D4, 0x5575, 0xD471, 0x5576, 0xD472,
+	0x5577, 0xD86A, 0x557B, 0xB3D7, 0x557C, 0xB3DA, 0x557D, 0xD875,
+	0x557E, 0xB3EE, 0x557F, 0xD878, 0x5580, 0xB3D8, 0x5581, 0xD871,
+	0x5582, 0xB3DE, 0x5583, 0xB3E4, 0x5584, 0xB5BD, 0x5587, 0xB3E2,
+	0x5588, 0xD86E, 0x5589, 0xB3EF, 0x558A, 0xB3DB, 0x558B, 0xB3E3,
+	0x558C, 0xD876, 0x558D, 0xDCD7, 0x558E, 0xD87B, 0x558F, 0xD86F,
+	0x5591, 0xD866, 0x5592, 0xD873, 0x5593, 0xD86D, 0x5594, 0xB3E1,
+	0x5595, 0xD879, 0x5598, 0xB3DD, 0x5599, 0xB3F1, 0x559A, 0xB3EA,
+	0x559C, 0xB3DF, 0x559D, 0xB3DC, 0x559F, 0xB3E7, 0x55A1, 0xD87A,
+	0x55A2, 0xD86C, 0x55A3, 0xD872, 0x55A4, 0xD874, 0x55A5, 0xD868,
+	0x55A6, 0xD877, 0x55A7, 0xB3D9, 0x55A8, 0xD867, 0x55AA, 0xB3E0,
+	0x55AB, 0xB3F0, 0x55AC, 0xB3EC, 0x55AD, 0xD869, 0x55AE, 0xB3E6,
+	0x55B1, 0xB3ED, 0x55B2, 0xB3E9, 0x55B3, 0xB3E5, 0x55B5, 0xD870,
+	0x55BB, 0xB3EB, 0x55BF, 0xDCD5, 0x55C0, 0xDCD1, 0x55C2, 0xDCE0,
+	0x55C3, 0xDCCA, 0x55C4, 0xDCD3, 0x55C5, 0xB6E5, 0x55C6, 0xB6E6,
+	0x55C7, 0xB6DE, 0x55C8, 0xDCDC, 0x55C9, 0xB6E8, 0x55CA, 0xDCCF,
+	0x55CB, 0xDCCE, 0x55CC, 0xDCCC, 0x55CD, 0xDCDE, 0x55CE, 0xB6DC,
+	0x55CF, 0xDCD8, 0x55D0, 0xDCCD, 0x55D1, 0xB6DF, 0x55D2, 0xDCD6,
+	0x55D3, 0xB6DA, 0x55D4, 0xDCD2, 0x55D5, 0xDCD9, 0x55D6, 0xDCDB,
+	0x55D9, 0xDCDF, 0x55DA, 0xB6E3, 0x55DB, 0xDCCB, 0x55DC, 0xB6DD,
+	0x55DD, 0xDCD0, 0x55DF, 0xB6D8, 0x55E1, 0xB6E4, 0x55E2, 0xDCDA,
+	0x55E3, 0xB6E0, 0x55E4, 0xB6E1, 0x55E5, 0xB6E7, 0x55E6, 0xB6DB,
+	0x55E7, 0xA25F, 0x55E8, 0xB6D9, 0x55E9, 0xDCD4, 0x55EF, 0xB6E2,
+	0x55F2, 0xDCDD, 0x55F6, 0xB9CD, 0x55F7, 0xB9C8, 0x55F9, 0xE155,
+	0x55FA, 0xE151, 0x55FC, 0xE14B, 0x55FD, 0xB9C2, 0x55FE, 0xB9BE,
+	0x55FF, 0xE154, 0x5600, 0xB9BF, 0x5601, 0xE14E, 0x5602, 0xE150,
+	0x5604, 0xE153, 0x5606, 0xB9C4, 0x5608, 0xB9CB, 0x5609, 0xB9C5,
+	0x560C, 0xE149, 0x560D, 0xB9C6, 0x560E, 0xB9C7, 0x560F, 0xE14C,
+	0x5610, 0xB9CC, 0x5612, 0xE14A, 0x5613, 0xE14F, 0x5614, 0xB9C3,
+	0x5615, 0xE148, 0x5616, 0xB9C9, 0x5617, 0xB9C1, 0x561B, 0xB9C0,
+	0x561C, 0xE14D, 0x561D, 0xE152, 0x561F, 0xB9CA, 0x5627, 0xE147,
+	0x5629, 0xBC4D, 0x562A, 0xE547, 0x562C, 0xE544, 0x562E, 0xBC47,
+	0x562F, 0xBC53, 0x5630, 0xBC54, 0x5632, 0xBC4A, 0x5633, 0xE542,
+	0x5634, 0xBC4C, 0x5635, 0xE4F9, 0x5636, 0xBC52, 0x5638, 0xE546,
+	0x5639, 0xBC49, 0x563A, 0xE548, 0x563B, 0xBC48, 0x563D, 0xE543,
+	0x563E, 0xE545, 0x563F, 0xBC4B, 0x5640, 0xE541, 0x5641, 0xE4FA,
+	0x5642, 0xE4F7, 0x5645, 0xD86B, 0x5646, 0xE4FD, 0x5648, 0xE4F6,
+	0x5649, 0xE4FC, 0x564A, 0xE4FB, 0x564C, 0xE4F8, 0x564E, 0xBC4F,
+	0x5653, 0xBC4E, 0x5657, 0xBC50, 0x5658, 0xE4FE, 0x5659, 0xBEB2,
+	0x565A, 0xE540, 0x565E, 0xE945, 0x5660, 0xE8FD, 0x5662, 0xBEBE,
+	0x5663, 0xE942, 0x5664, 0xBEB6, 0x5665, 0xBEBA, 0x5666, 0xE941,
+	0x5668, 0xBEB9, 0x5669, 0xBEB5, 0x566A, 0xBEB8, 0x566B, 0xBEB3,
+	0x566C, 0xBEBD, 0x566D, 0xE943, 0x566E, 0xE8FE, 0x566F, 0xBEBC,
+	0x5670, 0xE8FC, 0x5671, 0xBEBB, 0x5672, 0xE944, 0x5673, 0xE940,
+	0x5674, 0xBC51, 0x5676, 0xBEBF, 0x5677, 0xE946, 0x5678, 0xBEB7,
+	0x5679, 0xBEB4, 0x567E, 0xECC6, 0x567F, 0xECC8, 0x5680, 0xC07B,
+	0x5681, 0xECC9, 0x5682, 0xECC7, 0x5683, 0xECC5, 0x5684, 0xECC4,
+	0x5685, 0xC07D, 0x5686, 0xECC3, 0x5687, 0xC07E, 0x568C, 0xECC1,
+	0x568D, 0xECC2, 0x568E, 0xC07A, 0x568F, 0xC0A1, 0x5690, 0xC07C,
+	0x5693, 0xECC0, 0x5695, 0xC250, 0x5697, 0xEFBC, 0x5698, 0xEFBA,
+	0x5699, 0xEFBF, 0x569A, 0xEFBD, 0x569C, 0xEFBB, 0x569D, 0xEFBE,
+	0x56A5, 0xC360, 0x56A6, 0xF1F2, 0x56A7, 0xF1F3, 0x56A8, 0xC456,
+	0x56AA, 0xF1F4, 0x56AB, 0xF1F0, 0x56AC, 0xF1F5, 0x56AD, 0xF1F1,
+	0x56AE, 0xC251, 0x56B2, 0xF3FE, 0x56B3, 0xF441, 0x56B4, 0xC459,
+	0x56B5, 0xF440, 0x56B6, 0xC458, 0x56B7, 0xC457, 0x56BC, 0xC45A,
+	0x56BD, 0xF5C5, 0x56BE, 0xF5C6, 0x56C0, 0xC4DA, 0x56C1, 0xC4D9,
+	0x56C2, 0xC4DB, 0x56C3, 0xF5C4, 0x56C5, 0xF6D8, 0x56C6, 0xF6D7,
+	0x56C8, 0xC56D, 0x56C9, 0xC56F, 0x56CA, 0xC56E, 0x56CB, 0xF6D9,
+	0x56CC, 0xC5C8, 0x56CD, 0xF8A6, 0x56D1, 0xC5F1, 0x56D3, 0xF8A5,
+	0x56D4, 0xF8EE, 0x56D7, 0xC949, 0x56DA, 0xA57D, 0x56DB, 0xA57C,
+	0x56DD, 0xA65F, 0x56DE, 0xA65E, 0x56DF, 0xC9C7, 0x56E0, 0xA65D,
+	0x56E1, 0xC9C6, 0x56E4, 0xA779, 0x56E5, 0xCAA9, 0x56E7, 0xCAA8,
+	0x56EA, 0xA777, 0x56EB, 0xA77A, 0x56EE, 0xCAA7, 0x56F0, 0xA778,
+	0x56F7, 0xCBF0, 0x56F9, 0xCBF1, 0x56FA, 0xA954, 0x56FF, 0xABAA,
+	0x5701, 0xD148, 0x5702, 0xD149, 0x5703, 0xAE45, 0x5704, 0xAE46,
+	0x5707, 0xD4AC, 0x5708, 0xB0E9, 0x5709, 0xB0EB, 0x570A, 0xD4AB,
+	0x570B, 0xB0EA, 0x570C, 0xD87C, 0x570D, 0xB3F2, 0x5712, 0xB6E9,
+	0x5713, 0xB6EA, 0x5714, 0xDCE1, 0x5716, 0xB9CF, 0x5718, 0xB9CE,
+	0x571A, 0xE549, 0x571B, 0xE948, 0x571C, 0xE947, 0x571E, 0xF96B,
+	0x571F, 0xA467, 0x5720, 0xC959, 0x5722, 0xC96E, 0x5723, 0xC96F,
+	0x5728, 0xA662, 0x5729, 0xA666, 0x572A, 0xC9C9, 0x572C, 0xA664,
+	0x572D, 0xA663, 0x572E, 0xC9C8, 0x572F, 0xA665, 0x5730, 0xA661,
+	0x5733, 0xA660, 0x5734, 0xC9CA, 0x573B, 0xA7A6, 0x573E, 0xA7A3,
+	0x5740, 0xA77D, 0x5741, 0xCAAA, 0x5745, 0xCAAB, 0x5747, 0xA7A1,
+	0x5749, 0xCAAD, 0x574A, 0xA77B, 0x574B, 0xCAAE, 0x574C, 0xCAAC,
+	0x574D, 0xA77E, 0x574E, 0xA7A2, 0x574F, 0xA7A5, 0x5750, 0xA7A4,
+	0x5751, 0xA77C, 0x5752, 0xCAAF, 0x5761, 0xA959, 0x5762, 0xCBFE,
+	0x5764, 0xA95B, 0x5766, 0xA95A, 0x5768, 0xCC40, 0x5769, 0xA958,
+	0x576A, 0xA957, 0x576B, 0xCBF5, 0x576D, 0xCBF4, 0x576F, 0xCBF2,
+	0x5770, 0xCBF7, 0x5771, 0xCBF6, 0x5772, 0xCBF3, 0x5773, 0xCBFC,
+	0x5774, 0xCBFD, 0x5775, 0xCBFA, 0x5776, 0xCBF8, 0x5777, 0xA956,
+	0x577B, 0xCBFB, 0x577C, 0xA95C, 0x577D, 0xCC41, 0x5780, 0xCBF9,
+	0x5782, 0xABAB, 0x5783, 0xA955, 0x578B, 0xABAC, 0x578C, 0xCE54,
+	0x578F, 0xCE5A, 0x5793, 0xABB2, 0x5794, 0xCE58, 0x5795, 0xCE5E,
+	0x5797, 0xCE55, 0x5798, 0xCE59, 0x5799, 0xCE5B, 0x579A, 0xCE5D,
+	0x579B, 0xCE57, 0x579D, 0xCE56, 0x579E, 0xCE51, 0x579F, 0xCE52,
+	0x57A0, 0xABAD, 0x57A2, 0xABAF, 0x57A3, 0xABAE, 0x57A4, 0xCE53,
+	0x57A5, 0xCE5C, 0x57AE, 0xABB1, 0x57B5, 0xCE50, 0x57B6, 0xD153,
+	0x57B8, 0xD152, 0x57B9, 0xD157, 0x57BA, 0xD14E, 0x57BC, 0xD151,
+	0x57BD, 0xD150, 0x57BF, 0xD154, 0x57C1, 0xD158, 0x57C2, 0xAE47,
+	0x57C3, 0xAE4A, 0x57C6, 0xD14F, 0x57C7, 0xD155, 0x57CB, 0xAE49,
+	0x57CC, 0xD14A, 0x57CE, 0xABB0, 0x57CF, 0xD4BA, 0x57D0, 0xD156,
+	0x57D2, 0xD14D, 0x57D4, 0xAE48, 0x57D5, 0xD14C, 0x57DC, 0xD4B1,
+	0x57DF, 0xB0EC, 0x57E0, 0xB0F0, 0x57E1, 0xD4C1, 0x57E2, 0xD4AF,
+	0x57E3, 0xD4BD, 0x57E4, 0xB0F1, 0x57E5, 0xD4BF, 0x57E7, 0xD4C5,
+	0x57E9, 0xD4C9, 0x57EC, 0xD4C0, 0x57ED, 0xD4B4, 0x57EE, 0xD4BC,
+	0x57F0, 0xD4CA, 0x57F1, 0xD4C8, 0x57F2, 0xD4BE, 0x57F3, 0xD4B9,
+	0x57F4, 0xD4B2, 0x57F5, 0xD8A6, 0x57F6, 0xD4B0, 0x57F7, 0xB0F5,
+	0x57F8, 0xD4B7, 0x57F9, 0xB0F6, 0x57FA, 0xB0F2, 0x57FB, 0xD4AD,
+	0x57FC, 0xD4C3, 0x57FD, 0xD4B5, 0x5800, 0xD4B3, 0x5801, 0xD4C6,
+	0x5802, 0xB0F3, 0x5804, 0xD4CC, 0x5805, 0xB0ED, 0x5806, 0xB0EF,
+	0x5807, 0xD4BB, 0x5808, 0xD4B6, 0x5809, 0xAE4B, 0x580A, 0xB0EE,
+	0x580B, 0xD4B8, 0x580C, 0xD4C7, 0x580D, 0xD4CB, 0x580E, 0xD4C2,
+	0x5810, 0xD4C4, 0x5814, 0xD4AE, 0x5819, 0xD8A1, 0x581B, 0xD8AA,
+	0x581C, 0xD8A9, 0x581D, 0xB3FA, 0x581E, 0xD8A2, 0x5820, 0xB3FB,
+	0x5821, 0xB3F9, 0x5823, 0xD8A4, 0x5824, 0xB3F6, 0x5825, 0xD8A8,
+	0x5827, 0xD8A3, 0x5828, 0xD8A5, 0x5829, 0xD87D, 0x582A, 0xB3F4,
+	0x582C, 0xD8B2, 0x582D, 0xD8B1, 0x582E, 0xD8AE, 0x582F, 0xB3F3,
+	0x5830, 0xB3F7, 0x5831, 0xB3F8, 0x5832, 0xD14B, 0x5833, 0xD8AB,
+	0x5834, 0xB3F5, 0x5835, 0xB0F4, 0x5836, 0xD8AD, 0x5837, 0xD87E,
+	0x5838, 0xD8B0, 0x5839, 0xD8AF, 0x583B, 0xD8B3, 0x583D, 0xDCEF,
+	0x583F, 0xD8AC, 0x5848, 0xD8A7, 0x5849, 0xDCE7, 0x584A, 0xB6F4,
+	0x584B, 0xB6F7, 0x584C, 0xB6F2, 0x584D, 0xDCE6, 0x584E, 0xDCEA,
+	0x584F, 0xDCE5, 0x5851, 0xB6EC, 0x5852, 0xB6F6, 0x5853, 0xDCE2,
+	0x5854, 0xB6F0, 0x5855, 0xDCE9, 0x5857, 0xB6EE, 0x5858, 0xB6ED,
+	0x5859, 0xDCEC, 0x585A, 0xB6EF, 0x585B, 0xDCEE, 0x585D, 0xDCEB,
+	0x585E, 0xB6EB, 0x5862, 0xB6F5, 0x5863, 0xDCF0, 0x5864, 0xDCE4,
+	0x5865, 0xDCED, 0x5868, 0xDCE3, 0x586B, 0xB6F1, 0x586D, 0xB6F3,
+	0x586F, 0xDCE8, 0x5871, 0xDCF1, 0x5874, 0xE15D, 0x5875, 0xB9D0,
+	0x5876, 0xE163, 0x5879, 0xB9D5, 0x587A, 0xE15F, 0x587B, 0xE166,
+	0x587C, 0xE157, 0x587D, 0xB9D7, 0x587E, 0xB9D1, 0x587F, 0xE15C,
+	0x5880, 0xBC55, 0x5881, 0xE15B, 0x5882, 0xE164, 0x5883, 0xB9D2,
+	0x5885, 0xB9D6, 0x5886, 0xE15A, 0x5887, 0xE160, 0x5888, 0xE165,
+	0x5889, 0xE156, 0x588A, 0xB9D4, 0x588B, 0xE15E, 0x588E, 0xE162,
+	0x588F, 0xE168, 0x5890, 0xE158, 0x5891, 0xE161, 0x5893, 0xB9D3,
+	0x5894, 0xE167, 0x5898, 0xE159, 0x589C, 0xBC59, 0x589D, 0xE54B,
+	0x589E, 0xBC57, 0x589F, 0xBC56, 0x58A0, 0xE54D, 0x58A1, 0xE552,
+	0x58A3, 0xE54E, 0x58A5, 0xE551, 0x58A6, 0xBC5C, 0x58A8, 0xBEA5,
+	0x58A9, 0xBC5B, 0x58AB, 0xE54A, 0x58AC, 0xE550, 0x58AE, 0xBC5A,
+	0x58AF, 0xE54F, 0x58B1, 0xE54C, 0x58B3, 0xBC58, 0x58BA, 0xE94D,
+	0x58BB, 0xF9D9, 0x58BC, 0xE94F, 0x58BD, 0xE94A, 0x58BE, 0xBEC1,
+	0x58BF, 0xE94C, 0x58C1, 0xBEC0, 0x58C2, 0xE94E, 0x58C5, 0xBEC3,
+	0x58C6, 0xE950, 0x58C7, 0xBEC2, 0x58C8, 0xE949, 0x58C9, 0xE94B,
+	0x58CE, 0xC0A5, 0x58CF, 0xECCC, 0x58D1, 0xC0A4, 0x58D2, 0xECCD,
+	0x58D3, 0xC0A3, 0x58D4, 0xECCB, 0x58D5, 0xC0A2, 0x58D6, 0xECCA,
+	0x58D8, 0xC253, 0x58D9, 0xC252, 0x58DA, 0xF1F6, 0x58DB, 0xF1F8,
+	0x58DD, 0xF1F7, 0x58DE, 0xC361, 0x58DF, 0xC362, 0x58E2, 0xC363,
+	0x58E3, 0xF442, 0x58E4, 0xC45B, 0x58E7, 0xF7D3, 0x58E8, 0xF7D2,
+	0x58E9, 0xC5F2, 0x58EB, 0xA468, 0x58EC, 0xA4D0, 0x58EF, 0xA7A7,
+	0x58F4, 0xCE5F, 0x58F9, 0xB3FC, 0x58FA, 0xB3FD, 0x58FC, 0xDCF2,
+	0x58FD, 0xB9D8, 0x58FE, 0xE169, 0x58FF, 0xE553, 0x5903, 0xC95A,
+	0x5906, 0xCAB0, 0x590C, 0xCC42, 0x590D, 0xCE60, 0x590E, 0xD159,
+	0x590F, 0xAE4C, 0x5912, 0xF1F9, 0x5914, 0xC4DC, 0x5915, 0xA469,
+	0x5916, 0xA57E, 0x5917, 0xC970, 0x5919, 0xA667, 0x591A, 0xA668,
+	0x591C, 0xA95D, 0x5920, 0xB0F7, 0x5922, 0xB9DA, 0x5924, 0xB9DB,
+	0x5925, 0xB9D9, 0x5927, 0xA46A, 0x5929, 0xA4D1, 0x592A, 0xA4D3,
+	0x592B, 0xA4D2, 0x592C, 0xC95B, 0x592D, 0xA4D4, 0x592E, 0xA5A1,
+	0x592F, 0xC971, 0x5931, 0xA5A2, 0x5937, 0xA669, 0x5938, 0xA66A,
+	0x593C, 0xC9CB, 0x593E, 0xA7A8, 0x5940, 0xCAB1, 0x5944, 0xA961,
+	0x5945, 0xCC43, 0x5947, 0xA95F, 0x5948, 0xA960, 0x5949, 0xA95E,
+	0x594A, 0xD15A, 0x594E, 0xABB6, 0x594F, 0xABB5, 0x5950, 0xABB7,
+	0x5951, 0xABB4, 0x5953, 0xCE61, 0x5954, 0xA962, 0x5955, 0xABB3,
+	0x5957, 0xAE4D, 0x5958, 0xAE4E, 0x595A, 0xAE4F, 0x595C, 0xD4CD,
+	0x5960, 0xB3FE, 0x5961, 0xD8B4, 0x5962, 0xB0F8, 0x5967, 0xB6F8,
+	0x5969, 0xB9DD, 0x596A, 0xB9DC, 0x596B, 0xE16A, 0x596D, 0xBC5D,
+	0x596E, 0xBEC4, 0x5970, 0xEFC0, 0x5971, 0xF6DA, 0x5972, 0xF7D4,
+	0x5973, 0xA46B, 0x5974, 0xA5A3, 0x5976, 0xA5A4, 0x5977, 0xC9D1,
+	0x5978, 0xA66C, 0x5979, 0xA66F, 0x597B, 0xC9CF, 0x597C, 0xC9CD,
+	0x597D, 0xA66E, 0x597E, 0xC9D0, 0x597F, 0xC9D2, 0x5980, 0xC9CC,
+	0x5981, 0xA671, 0x5982, 0xA670, 0x5983, 0xA66D, 0x5984, 0xA66B,
+	0x5985, 0xC9CE, 0x598A, 0xA7B3, 0x598D, 0xA7B0, 0x598E, 0xCAB6,
+	0x598F, 0xCAB9, 0x5990, 0xCAB8, 0x5992, 0xA7AA, 0x5993, 0xA7B2,
+	0x5996, 0xA7AF, 0x5997, 0xCAB5, 0x5998, 0xCAB3, 0x5999, 0xA7AE,
+	0x599D, 0xA7A9, 0x599E, 0xA7AC, 0x59A0, 0xCAB4, 0x59A1, 0xCABB,
+	0x59A2, 0xCAB7, 0x59A3, 0xA7AD, 0x59A4, 0xA7B1, 0x59A5, 0xA7B4,
+	0x59A6, 0xCAB2, 0x59A7, 0xCABA, 0x59A8, 0xA7AB, 0x59AE, 0xA967,
+	0x59AF, 0xA96F, 0x59B1, 0xCC4F, 0x59B2, 0xCC48, 0x59B3, 0xA970,
+	0x59B4, 0xCC53, 0x59B5, 0xCC44, 0x59B6, 0xCC4B, 0x59B9, 0xA966,
+	0x59BA, 0xCC45, 0x59BB, 0xA964, 0x59BC, 0xCC4C, 0x59BD, 0xCC50,
+	0x59BE, 0xA963, 0x59C0, 0xCC51, 0x59C1, 0xCC4A, 0x59C3, 0xCC4D,
+	0x59C5, 0xA972, 0x59C6, 0xA969, 0x59C7, 0xCC54, 0x59C8, 0xCC52,
+	0x59CA, 0xA96E, 0x59CB, 0xA96C, 0x59CC, 0xCC49, 0x59CD, 0xA96B,
+	0x59CE, 0xCC47, 0x59CF, 0xCC46, 0x59D0, 0xA96A, 0x59D1, 0xA968,
+	0x59D2, 0xA971, 0x59D3, 0xA96D, 0x59D4, 0xA965, 0x59D6, 0xCC4E,
+	0x59D8, 0xABB9, 0x59DA, 0xABC0, 0x59DB, 0xCE6F, 0x59DC, 0xABB8,
+	0x59DD, 0xCE67, 0x59DE, 0xCE63, 0x59E0, 0xCE73, 0x59E1, 0xCE62,
+	0x59E3, 0xABBB, 0x59E4, 0xCE6C, 0x59E5, 0xABBE, 0x59E6, 0xABC1,
+	0x59E8, 0xABBC, 0x59E9, 0xCE70, 0x59EA, 0xABBF, 0x59EC, 0xAE56,
+	0x59ED, 0xCE76, 0x59EE, 0xCE64, 0x59F1, 0xCE66, 0x59F2, 0xCE6D,
+	0x59F3, 0xCE71, 0x59F4, 0xCE75, 0x59F5, 0xCE72, 0x59F6, 0xCE6B,
+	0x59F7, 0xCE6E, 0x59FA, 0xCE68, 0x59FB, 0xABC3, 0x59FC, 0xCE6A,
+	0x59FD, 0xCE69, 0x59FE, 0xCE74, 0x59FF, 0xABBA, 0x5A00, 0xCE65,
+	0x5A01, 0xABC2, 0x5A03, 0xABBD, 0x5A09, 0xAE5C, 0x5A0A, 0xD162,
+	0x5A0C, 0xAE5B, 0x5A0F, 0xD160, 0x5A11, 0xAE50, 0x5A13, 0xAE55,
+	0x5A15, 0xD15F, 0x5A16, 0xD15C, 0x5A17, 0xD161, 0x5A18, 0xAE51,
+	0x5A19, 0xD15B, 0x5A1B, 0xAE54, 0x5A1C, 0xAE52, 0x5A1E, 0xD163,
+	0x5A1F, 0xAE53, 0x5A20, 0xAE57, 0x5A23, 0xAE58, 0x5A25, 0xAE5A,
+	0x5A29, 0xAE59, 0x5A2D, 0xD15D, 0x5A2E, 0xD15E, 0x5A33, 0xD164,
+	0x5A35, 0xD4D4, 0x5A36, 0xB0F9, 0x5A37, 0xD8C2, 0x5A38, 0xD4D3,
+	0x5A39, 0xD4E6, 0x5A3C, 0xB140, 0x5A3E, 0xD4E4, 0x5A40, 0xB0FE,
+	0x5A41, 0xB0FA, 0x5A42, 0xD4ED, 0x5A43, 0xD4DD, 0x5A44, 0xD4E0,
+	0x5A46, 0xB143, 0x5A47, 0xD4EA, 0x5A48, 0xD4E2, 0x5A49, 0xB0FB,
+	0x5A4A, 0xB144, 0x5A4C, 0xD4E7, 0x5A4D, 0xD4E5, 0x5A50, 0xD4D6,
+	0x5A51, 0xD4EB, 0x5A52, 0xD4DF, 0x5A53, 0xD4DA, 0x5A55, 0xD4D0,
+	0x5A56, 0xD4EC, 0x5A57, 0xD4DC, 0x5A58, 0xD4CF, 0x5A5A, 0xB142,
+	0x5A5B, 0xD4E1, 0x5A5C, 0xD4EE, 0x5A5D, 0xD4DE, 0x5A5E, 0xD4D2,
+	0x5A5F, 0xD4D7, 0x5A60, 0xD4CE, 0x5A62, 0xB141, 0x5A64, 0xD4DB,
+	0x5A65, 0xD4D8, 0x5A66, 0xB0FC, 0x5A67, 0xD4D1, 0x5A69, 0xD4E9,
+	0x5A6A, 0xB0FD, 0x5A6C, 0xD4D9, 0x5A6D, 0xD4D5, 0x5A70, 0xD4E8,
+	0x5A77, 0xB440, 0x5A78, 0xD8BB, 0x5A7A, 0xD8B8, 0x5A7B, 0xD8C9,
+	0x5A7C, 0xD8BD, 0x5A7D, 0xD8CA, 0x5A7F, 0xB442, 0x5A83, 0xD8C6,
+	0x5A84, 0xD8C3, 0x5A8A, 0xD8C4, 0x5A8B, 0xD8C7, 0x5A8C, 0xD8CB,
+	0x5A8E, 0xD4E3, 0x5A8F, 0xD8CD, 0x5A90, 0xDD47, 0x5A92, 0xB443,
+	0x5A93, 0xD8CE, 0x5A94, 0xD8B6, 0x5A95, 0xD8C0, 0x5A97, 0xD8C5,
+	0x5A9A, 0xB441, 0x5A9B, 0xB444, 0x5A9C, 0xD8CC, 0x5A9D, 0xD8CF,
+	0x5A9E, 0xD8BA, 0x5A9F, 0xD8B7, 0x5AA2, 0xD8B9, 0x5AA5, 0xD8BE,
+	0x5AA6, 0xD8BC, 0x5AA7, 0xB445, 0x5AA9, 0xD8C8, 0x5AAC, 0xD8BF,
+	0x5AAE, 0xD8C1, 0x5AAF, 0xD8B5, 0x5AB0, 0xDCFA, 0x5AB1, 0xDCF8,
+	0x5AB2, 0xB742, 0x5AB3, 0xB740, 0x5AB4, 0xDD43, 0x5AB5, 0xDCF9,
+	0x5AB6, 0xDD44, 0x5AB7, 0xDD40, 0x5AB8, 0xDCF7, 0x5AB9, 0xDD46,
+	0x5ABA, 0xDCF6, 0x5ABB, 0xDCFD, 0x5ABC, 0xB6FE, 0x5ABD, 0xB6FD,
+	0x5ABE, 0xB6FC, 0x5ABF, 0xDCFB, 0x5AC0, 0xDD41, 0x5AC1, 0xB6F9,
+	0x5AC2, 0xB741, 0x5AC4, 0xDCF4, 0x5AC6, 0xDCFE, 0x5AC7, 0xDCF3,
+	0x5AC8, 0xDCFC, 0x5AC9, 0xB6FA, 0x5ACA, 0xDD42, 0x5ACB, 0xDCF5,
+	0x5ACC, 0xB6FB, 0x5ACD, 0xDD45, 0x5AD5, 0xE16E, 0x5AD6, 0xB9E2,
+	0x5AD7, 0xB9E1, 0x5AD8, 0xB9E3, 0x5AD9, 0xE17A, 0x5ADA, 0xE170,
+	0x5ADB, 0xE176, 0x5ADC, 0xE16B, 0x5ADD, 0xE179, 0x5ADE, 0xE178,
+	0x5ADF, 0xE17C, 0x5AE0, 0xE175, 0x5AE1, 0xB9DE, 0x5AE2, 0xE174,
+	0x5AE3, 0xB9E4, 0x5AE5, 0xE16D, 0x5AE6, 0xB9DF, 0x5AE8, 0xE17B,
+	0x5AE9, 0xB9E0, 0x5AEA, 0xE16F, 0x5AEB, 0xE172, 0x5AEC, 0xE177,
+	0x5AED, 0xE171, 0x5AEE, 0xE16C, 0x5AF3, 0xE173, 0x5AF4, 0xE555,
+	0x5AF5, 0xBC61, 0x5AF6, 0xE558, 0x5AF7, 0xE557, 0x5AF8, 0xE55A,
+	0x5AF9, 0xE55C, 0x5AFA, 0xF9DC, 0x5AFB, 0xBC5F, 0x5AFD, 0xE556,
+	0x5AFF, 0xE554, 0x5B01, 0xE55D, 0x5B02, 0xE55B, 0x5B03, 0xE559,
+	0x5B05, 0xE55F, 0x5B07, 0xE55E, 0x5B08, 0xBC63, 0x5B09, 0xBC5E,
+	0x5B0B, 0xBC60, 0x5B0C, 0xBC62, 0x5B0F, 0xE560, 0x5B10, 0xE957,
+	0x5B13, 0xE956, 0x5B14, 0xE955, 0x5B16, 0xE958, 0x5B17, 0xE951,
+	0x5B19, 0xE952, 0x5B1A, 0xE95A, 0x5B1B, 0xE953, 0x5B1D, 0xBEC5,
+	0x5B1E, 0xE95C, 0x5B20, 0xE95B, 0x5B21, 0xE954, 0x5B23, 0xECD1,
+	0x5B24, 0xC0A8, 0x5B25, 0xECCF, 0x5B26, 0xECD4, 0x5B27, 0xECD3,
+	0x5B28, 0xE959, 0x5B2A, 0xC0A7, 0x5B2C, 0xECD2, 0x5B2D, 0xECCE,
+	0x5B2E, 0xECD6, 0x5B2F, 0xECD5, 0x5B30, 0xC0A6, 0x5B32, 0xECD0,
+	0x5B34, 0xBEC6, 0x5B38, 0xC254, 0x5B3C, 0xEFC1, 0x5B3D, 0xF1FA,
+	0x5B3E, 0xF1FB, 0x5B3F, 0xF1FC, 0x5B40, 0xC45C, 0x5B43, 0xC45D,
+	0x5B45, 0xF443, 0x5B47, 0xF5C8, 0x5B48, 0xF5C7, 0x5B4B, 0xF6DB,
+	0x5B4C, 0xF6DC, 0x5B4D, 0xF7D5, 0x5B4E, 0xF8A7, 0x5B50, 0xA46C,
+	0x5B51, 0xA46D, 0x5B53, 0xA46E, 0x5B54, 0xA4D5, 0x5B55, 0xA5A5,
+	0x5B56, 0xC9D3, 0x5B57, 0xA672, 0x5B58, 0xA673, 0x5B5A, 0xA7B7,
+	0x5B5B, 0xA7B8, 0x5B5C, 0xA7B6, 0x5B5D, 0xA7B5, 0x5B5F, 0xA973,
+	0x5B62, 0xCC55, 0x5B63, 0xA975, 0x5B64, 0xA974, 0x5B65, 0xCC56,
+	0x5B69, 0xABC4, 0x5B6B, 0xAE5D, 0x5B6C, 0xD165, 0x5B6E, 0xD4F0,
+	0x5B70, 0xB145, 0x5B71, 0xB447, 0x5B72, 0xD4EF, 0x5B73, 0xB446,
+	0x5B75, 0xB9E5, 0x5B77, 0xE17D, 0x5B78, 0xBEC7, 0x5B7A, 0xC0A9,
+	0x5B7B, 0xECD7, 0x5B7D, 0xC45E, 0x5B7F, 0xC570, 0x5B81, 0xC972,
+	0x5B83, 0xA5A6, 0x5B84, 0xC973, 0x5B85, 0xA676, 0x5B87, 0xA674,
+	0x5B88, 0xA675, 0x5B89, 0xA677, 0x5B8B, 0xA7BA, 0x5B8C, 0xA7B9,
+	0x5B8E, 0xCABC, 0x5B8F, 0xA7BB, 0x5B92, 0xCABD, 0x5B93, 0xCC57,
+	0x5B95, 0xCC58, 0x5B97, 0xA976, 0x5B98, 0xA978, 0x5B99, 0xA97A,
+	0x5B9A, 0xA977, 0x5B9B, 0xA97B, 0x5B9C, 0xA979, 0x5BA2, 0xABC8,
+	0x5BA3, 0xABC5, 0x5BA4, 0xABC7, 0x5BA5, 0xABC9, 0x5BA6, 0xABC6,
+	0x5BA7, 0xD166, 0x5BA8, 0xCE77, 0x5BAC, 0xD168, 0x5BAD, 0xD167,
+	0x5BAE, 0xAE63, 0x5BB0, 0xAE5F, 0x5BB3, 0xAE60, 0x5BB4, 0xAE62,
+	0x5BB5, 0xAE64, 0x5BB6, 0xAE61, 0x5BB8, 0xAE66, 0x5BB9, 0xAE65,
+	0x5BBF, 0xB14A, 0x5BC0, 0xD4F2, 0x5BC1, 0xD4F1, 0x5BC2, 0xB149,
+	0x5BC4, 0xB148, 0x5BC5, 0xB147, 0x5BC6, 0xB14B, 0x5BC7, 0xB146,
+	0x5BCA, 0xD8D5, 0x5BCB, 0xD8D2, 0x5BCC, 0xB449, 0x5BCD, 0xD8D1,
+	0x5BCE, 0xD8D6, 0x5BD0, 0xB44B, 0x5BD1, 0xD8D4, 0x5BD2, 0xB448,
+	0x5BD3, 0xB44A, 0x5BD4, 0xD8D3, 0x5BD6, 0xDD48, 0x5BD8, 0xDD49,
+	0x5BD9, 0xDD4A, 0x5BDE, 0xB9E6, 0x5BDF, 0xB9EE, 0x5BE0, 0xE17E,
+	0x5BE1, 0xB9E8, 0x5BE2, 0xB9EC, 0x5BE3, 0xE1A1, 0x5BE4, 0xB9ED,
+	0x5BE5, 0xB9E9, 0x5BE6, 0xB9EA, 0x5BE7, 0xB9E7, 0x5BE8, 0xB9EB,
+	0x5BE9, 0xBC66, 0x5BEA, 0xD8D0, 0x5BEB, 0xBC67, 0x5BEC, 0xBC65,
+	0x5BEE, 0xBC64, 0x5BEF, 0xE95D, 0x5BF0, 0xBEC8, 0x5BF1, 0xECD8,
+	0x5BF2, 0xECD9, 0x5BF5, 0xC364, 0x5BF6, 0xC45F, 0x5BF8, 0xA46F,
+	0x5BFA, 0xA678, 0x5C01, 0xABCA, 0x5C03, 0xD169, 0x5C04, 0xAE67,
+	0x5C07, 0xB14E, 0x5C08, 0xB14D, 0x5C09, 0xB14C, 0x5C0A, 0xB44C,
+	0x5C0B, 0xB44D, 0x5C0C, 0xD8D7, 0x5C0D, 0xB9EF, 0x5C0E, 0xBEC9,
+	0x5C0F, 0xA470, 0x5C10, 0xC95C, 0x5C11, 0xA4D6, 0x5C12, 0xC974,
+	0x5C15, 0xC9D4, 0x5C16, 0xA679, 0x5C1A, 0xA97C, 0x5C1F, 0xDD4B,
+	0x5C22, 0xA471, 0x5C24, 0xA4D7, 0x5C25, 0xC9D5, 0x5C28, 0xCABE,
+	0x5C2A, 0xCABF, 0x5C2C, 0xA7BC, 0x5C30, 0xD8D8, 0x5C31, 0xB44E,
+	0x5C33, 0xDD4C, 0x5C37, 0xC0AA, 0x5C38, 0xA472, 0x5C39, 0xA4A8,
+	0x5C3A, 0xA4D8, 0x5C3B, 0xC975, 0x5C3C, 0xA5A7, 0x5C3E, 0xA7C0,
+	0x5C3F, 0xA7BF, 0x5C40, 0xA7BD, 0x5C41, 0xA7BE, 0x5C44, 0xCC59,
+	0x5C45, 0xA97E, 0x5C46, 0xA9A1, 0x5C47, 0xCC5A, 0x5C48, 0xA97D,
+	0x5C4B, 0xABCE, 0x5C4C, 0xCE78, 0x5C4D, 0xABCD, 0x5C4E, 0xABCB,
+	0x5C4F, 0xABCC, 0x5C50, 0xAE6A, 0x5C51, 0xAE68, 0x5C54, 0xD16B,
+	0x5C55, 0xAE69, 0x5C56, 0xD16A, 0x5C58, 0xAE5E, 0x5C59, 0xD4F3,
+	0x5C5C, 0xB150, 0x5C5D, 0xB151, 0x5C60, 0xB14F, 0x5C62, 0xB9F0,
+	0x5C63, 0xE1A2, 0x5C64, 0xBC68, 0x5C65, 0xBC69, 0x5C67, 0xE561,
+	0x5C68, 0xC0AB, 0x5C69, 0xEFC2, 0x5C6A, 0xEFC3, 0x5C6C, 0xC4DD,
+	0x5C6D, 0xF8A8, 0x5C6E, 0xC94B, 0x5C6F, 0xA4D9, 0x5C71, 0xA473,
+	0x5C73, 0xC977, 0x5C74, 0xC976, 0x5C79, 0xA67A, 0x5C7A, 0xC9D7,
+	0x5C7B, 0xC9D8, 0x5C7C, 0xC9D6, 0x5C7E, 0xC9D9, 0x5C86, 0xCAC7,
+	0x5C88, 0xCAC2, 0x5C89, 0xCAC4, 0x5C8A, 0xCAC6, 0x5C8B, 0xCAC3,
+	0x5C8C, 0xA7C4, 0x5C8D, 0xCAC0, 0x5C8F, 0xCAC1, 0x5C90, 0xA7C1,
+	0x5C91, 0xA7C2, 0x5C92, 0xCAC5, 0x5C93, 0xCAC8, 0x5C94, 0xA7C3,
+	0x5C95, 0xCAC9, 0x5C9D, 0xCC68, 0x5C9F, 0xCC62, 0x5CA0, 0xCC5D,
+	0x5CA1, 0xA9A3, 0x5CA2, 0xCC65, 0x5CA3, 0xCC63, 0x5CA4, 0xCC5C,
+	0x5CA5, 0xCC69, 0x5CA6, 0xCC6C, 0x5CA7, 0xCC67, 0x5CA8, 0xCC60,
+	0x5CA9, 0xA9A5, 0x5CAA, 0xCC66, 0x5CAB, 0xA9A6, 0x5CAC, 0xCC61,
+	0x5CAD, 0xCC64, 0x5CAE, 0xCC5B, 0x5CAF, 0xCC5F, 0x5CB0, 0xCC6B,
+	0x5CB1, 0xA9A7, 0x5CB3, 0xA9A8, 0x5CB5, 0xCC5E, 0x5CB6, 0xCC6A,
+	0x5CB7, 0xA9A2, 0x5CB8, 0xA9A4, 0x5CC6, 0xCEAB, 0x5CC7, 0xCEA4,
+	0x5CC8, 0xCEAA, 0x5CC9, 0xCEA3, 0x5CCA, 0xCEA5, 0x5CCB, 0xCE7D,
+	0x5CCC, 0xCE7B, 0x5CCE, 0xCEAC, 0x5CCF, 0xCEA9, 0x5CD0, 0xCE79,
+	0x5CD2, 0xABD0, 0x5CD3, 0xCEA7, 0x5CD4, 0xCEA8, 0x5CD6, 0xCEA6,
+	0x5CD7, 0xCE7C, 0x5CD8, 0xCE7A, 0x5CD9, 0xABCF, 0x5CDA, 0xCEA2,
+	0x5CDB, 0xCE7E, 0x5CDE, 0xCEA1, 0x5CDF, 0xCEAD, 0x5CE8, 0xAE6F,
+	0x5CEA, 0xAE6E, 0x5CEC, 0xD16C, 0x5CED, 0xAE6B, 0x5CEE, 0xD16E,
+	0x5CF0, 0xAE70, 0x5CF1, 0xD16F, 0x5CF4, 0xAE73, 0x5CF6, 0xAE71,
+	0x5CF7, 0xD170, 0x5CF8, 0xCEAE, 0x5CF9, 0xD172, 0x5CFB, 0xAE6D,
+	0x5CFD, 0xAE6C, 0x5CFF, 0xD16D, 0x5D00, 0xD171, 0x5D01, 0xAE72,
+	0x5D06, 0xB153, 0x5D07, 0xB152, 0x5D0B, 0xD4F5, 0x5D0C, 0xD4F9,
+	0x5D0D, 0xD4FB, 0x5D0E, 0xB154, 0x5D0F, 0xD4FE, 0x5D11, 0xB158,
+	0x5D12, 0xD541, 0x5D14, 0xB15A, 0x5D16, 0xB156, 0x5D17, 0xB15E,
+	0x5D19, 0xB15B, 0x5D1A, 0xD4F7, 0x5D1B, 0xB155, 0x5D1D, 0xD4F6,
+	0x5D1E, 0xD4F4, 0x5D1F, 0xD543, 0x5D20, 0xD4F8, 0x5D22, 0xB157,
+	0x5D23, 0xD542, 0x5D24, 0xB15C, 0x5D25, 0xD4FD, 0x5D26, 0xD4FC,
+	0x5D27, 0xB15D, 0x5D28, 0xD4FA, 0x5D29, 0xB159, 0x5D2E, 0xD544,
+	0x5D30, 0xD540, 0x5D31, 0xD8E7, 0x5D32, 0xD8EE, 0x5D33, 0xD8E3,
+	0x5D34, 0xB451, 0x5D35, 0xD8DF, 0x5D36, 0xD8EF, 0x5D37, 0xD8D9,
+	0x5D38, 0xD8EC, 0x5D39, 0xD8EA, 0x5D3A, 0xD8E4, 0x5D3C, 0xD8ED,
+	0x5D3D, 0xD8E6, 0x5D3F, 0xD8DE, 0x5D40, 0xD8F0, 0x5D41, 0xD8DC,
+	0x5D42, 0xD8E9, 0x5D43, 0xD8DA, 0x5D45, 0xD8F1, 0x5D47, 0xB452,
+	0x5D49, 0xD8EB, 0x5D4A, 0xDD4F, 0x5D4B, 0xD8DD, 0x5D4C, 0xB44F,
+	0x5D4E, 0xD8E1, 0x5D50, 0xB450, 0x5D51, 0xD8E0, 0x5D52, 0xD8E5,
+	0x5D55, 0xD8E2, 0x5D59, 0xD8E8, 0x5D5E, 0xDD53, 0x5D62, 0xDD56,
+	0x5D63, 0xDD4E, 0x5D65, 0xDD50, 0x5D67, 0xDD55, 0x5D68, 0xDD54,
+	0x5D69, 0xB743, 0x5D6B, 0xD8DB, 0x5D6C, 0xDD52, 0x5D6F, 0xB744,
+	0x5D71, 0xDD4D, 0x5D72, 0xDD51, 0x5D77, 0xE1A9, 0x5D79, 0xE1B0,
+	0x5D7A, 0xE1A7, 0x5D7C, 0xE1AE, 0x5D7D, 0xE1A5, 0x5D7E, 0xE1AD,
+	0x5D7F, 0xE1B1, 0x5D80, 0xE1A4, 0x5D81, 0xE1A8, 0x5D82, 0xE1A3,
+	0x5D84, 0xB9F1, 0x5D86, 0xE1A6, 0x5D87, 0xB9F2, 0x5D88, 0xE1AC,
+	0x5D89, 0xE1AB, 0x5D8A, 0xE1AA, 0x5D8D, 0xE1AF, 0x5D92, 0xE565,
+	0x5D93, 0xE567, 0x5D94, 0xBC6B, 0x5D95, 0xE568, 0x5D97, 0xE563,
+	0x5D99, 0xE562, 0x5D9A, 0xE56C, 0x5D9C, 0xE56A, 0x5D9D, 0xBC6A,
+	0x5D9E, 0xE56D, 0x5D9F, 0xE564, 0x5DA0, 0xE569, 0x5DA1, 0xE56B,
+	0x5DA2, 0xE566, 0x5DA7, 0xE961, 0x5DA8, 0xE966, 0x5DA9, 0xE960,
+	0x5DAA, 0xE965, 0x5DAC, 0xE95E, 0x5DAD, 0xE968, 0x5DAE, 0xE964,
+	0x5DAF, 0xE969, 0x5DB0, 0xE963, 0x5DB1, 0xE95F, 0x5DB2, 0xE967,
+	0x5DB4, 0xE96A, 0x5DB5, 0xE962, 0x5DB7, 0xECDA, 0x5DB8, 0xC0AF,
+	0x5DBA, 0xC0AD, 0x5DBC, 0xC0AC, 0x5DBD, 0xC0AE, 0x5DC0, 0xEFC4,
+	0x5DC2, 0xF172, 0x5DC3, 0xF1FD, 0x5DC6, 0xF444, 0x5DC7, 0xF445,
+	0x5DC9, 0xC460, 0x5DCB, 0xF5C9, 0x5DCD, 0xC4DE, 0x5DCF, 0xF5CA,
+	0x5DD1, 0xF6DE, 0x5DD2, 0xC572, 0x5DD4, 0xC571, 0x5DD5, 0xF6DD,
+	0x5DD6, 0xC5C9, 0x5DD8, 0xF7D6, 0x5DDD, 0xA474, 0x5DDE, 0xA67B,
+	0x5DDF, 0xC9DA, 0x5DE0, 0xCACA, 0x5DE1, 0xA8B5, 0x5DE2, 0xB15F,
+	0x5DE5, 0xA475, 0x5DE6, 0xA5AA, 0x5DE7, 0xA5A9, 0x5DE8, 0xA5A8,
+	0x5DEB, 0xA7C5, 0x5DEE, 0xAE74, 0x5DF0, 0xDD57, 0x5DF1, 0xA476,
+	0x5DF2, 0xA477, 0x5DF3, 0xA478, 0x5DF4, 0xA4DA, 0x5DF7, 0xABD1,
+	0x5DF9, 0xCEAF, 0x5DFD, 0xB453, 0x5DFE, 0xA479, 0x5DFF, 0xC95D,
+	0x5E02, 0xA5AB, 0x5E03, 0xA5AC, 0x5E04, 0xC978, 0x5E06, 0xA67C,
+	0x5E0A, 0xCACB, 0x5E0C, 0xA7C6, 0x5E0E, 0xCACC, 0x5E11, 0xA9AE,
+	0x5E14, 0xCC6E, 0x5E15, 0xA9AC, 0x5E16, 0xA9AB, 0x5E17, 0xCC6D,
+	0x5E18, 0xA9A9, 0x5E19, 0xCC6F, 0x5E1A, 0xA9AA, 0x5E1B, 0xA9AD,
+	0x5E1D, 0xABD2, 0x5E1F, 0xABD4, 0x5E20, 0xCEB3, 0x5E21, 0xCEB0,
+	0x5E22, 0xCEB1, 0x5E23, 0xCEB2, 0x5E24, 0xCEB4, 0x5E25, 0xABD3,
+	0x5E28, 0xD174, 0x5E29, 0xD173, 0x5E2B, 0xAE76, 0x5E2D, 0xAE75,
+	0x5E33, 0xB162, 0x5E34, 0xD546, 0x5E36, 0xB161, 0x5E37, 0xB163,
+	0x5E38, 0xB160, 0x5E3D, 0xB455, 0x5E3E, 0xD545, 0x5E40, 0xB456,
+	0x5E41, 0xD8F3, 0x5E43, 0xB457, 0x5E44, 0xD8F2, 0x5E45, 0xB454,
+	0x5E4A, 0xDD5A, 0x5E4B, 0xDD5C, 0x5E4C, 0xB745, 0x5E4D, 0xDD5B,
+	0x5E4E, 0xDD59, 0x5E4F, 0xDD58, 0x5E53, 0xE1B4, 0x5E54, 0xB9F7,
+	0x5E55, 0xB9F5, 0x5E57, 0xB9F6, 0x5E58, 0xE1B2, 0x5E59, 0xE1B3,
+	0x5E5B, 0xB9F3, 0x5E5C, 0xE571, 0x5E5D, 0xE56F, 0x5E5F, 0xBC6D,
+	0x5E60, 0xE570, 0x5E61, 0xBC6E, 0x5E62, 0xBC6C, 0x5E63, 0xB9F4,
+	0x5E66, 0xE96D, 0x5E67, 0xE96B, 0x5E68, 0xE96C, 0x5E69, 0xE56E,
+	0x5E6A, 0xECDC, 0x5E6B, 0xC0B0, 0x5E6C, 0xECDB, 0x5E6D, 0xEFC5,
+	0x5E6E, 0xEFC6, 0x5E6F, 0xE96E, 0x5E70, 0xF1FE, 0x5E72, 0xA47A,
+	0x5E73, 0xA5AD, 0x5E74, 0xA67E, 0x5E75, 0xC9DB, 0x5E76, 0xA67D,
+	0x5E78, 0xA9AF, 0x5E79, 0xB746, 0x5E7B, 0xA4DB, 0x5E7C, 0xA5AE,
+	0x5E7D, 0xABD5, 0x5E7E, 0xB458, 0x5E80, 0xC979, 0x5E82, 0xC97A,
+	0x5E84, 0xC9DC, 0x5E87, 0xA7C8, 0x5E88, 0xCAD0, 0x5E89, 0xCACE,
+	0x5E8A, 0xA7C9, 0x5E8B, 0xCACD, 0x5E8C, 0xCACF, 0x5E8D, 0xCAD1,
+	0x5E8F, 0xA7C7, 0x5E95, 0xA9B3, 0x5E96, 0xA9B4, 0x5E97, 0xA9B1,
+	0x5E9A, 0xA9B0, 0x5E9B, 0xCEB8, 0x5E9C, 0xA9B2, 0x5EA0, 0xABD6,
+	0x5EA2, 0xCEB7, 0x5EA3, 0xCEB9, 0x5EA4, 0xCEB6, 0x5EA5, 0xCEBA,
+	0x5EA6, 0xABD7, 0x5EA7, 0xAE79, 0x5EA8, 0xD175, 0x5EAA, 0xD177,
+	0x5EAB, 0xAE77, 0x5EAC, 0xD178, 0x5EAD, 0xAE78, 0x5EAE, 0xD176,
+	0x5EB0, 0xCEB5, 0x5EB1, 0xD547, 0x5EB2, 0xD54A, 0x5EB3, 0xD54B,
+	0x5EB4, 0xD548, 0x5EB5, 0xB167, 0x5EB6, 0xB166, 0x5EB7, 0xB164,
+	0x5EB8, 0xB165, 0x5EB9, 0xD549, 0x5EBE, 0xB168, 0x5EC1, 0xB45A,
+	0x5EC2, 0xB45B, 0x5EC4, 0xB45C, 0x5EC5, 0xDD5D, 0x5EC6, 0xDD5F,
+	0x5EC7, 0xDD61, 0x5EC8, 0xB748, 0x5EC9, 0xB747, 0x5ECA, 0xB459,
+	0x5ECB, 0xDD60, 0x5ECC, 0xDD5E, 0x5ECE, 0xE1B8, 0x5ED1, 0xE1B6,
+	0x5ED2, 0xE1BC, 0x5ED3, 0xB9F8, 0x5ED4, 0xE1BD, 0x5ED5, 0xE1BA,
+	0x5ED6, 0xB9F9, 0x5ED7, 0xE1B7, 0x5ED8, 0xE1B5, 0x5ED9, 0xE1BB,
+	0x5EDA, 0xBC70, 0x5EDB, 0xE573, 0x5EDC, 0xE1B9, 0x5EDD, 0xBC72,
+	0x5EDE, 0xE574, 0x5EDF, 0xBC71, 0x5EE0, 0xBC74, 0x5EE1, 0xE575,
+	0x5EE2, 0xBC6F, 0x5EE3, 0xBC73, 0x5EE5, 0xE973, 0x5EE6, 0xE971,
+	0x5EE7, 0xE970, 0x5EE8, 0xE972, 0x5EE9, 0xE96F, 0x5EEC, 0xC366,
+	0x5EEE, 0xF446, 0x5EEF, 0xF447, 0x5EF1, 0xF5CB, 0x5EF2, 0xF6DF,
+	0x5EF3, 0xC655, 0x5EF6, 0xA9B5, 0x5EF7, 0xA7CA, 0x5EFA, 0xABD8,
+	0x5EFE, 0xA47B, 0x5EFF, 0xA4DC, 0x5F01, 0xA5AF, 0x5F02, 0xC9DD,
+	0x5F04, 0xA7CB, 0x5F05, 0xCAD2, 0x5F07, 0xCEBB, 0x5F08, 0xABD9,
+	0x5F0A, 0xB9FA, 0x5F0B, 0xA47C, 0x5F0F, 0xA6A1, 0x5F12, 0xB749,
+	0x5F13, 0xA47D, 0x5F14, 0xA4DD, 0x5F15, 0xA4DE, 0x5F17, 0xA5B1,
+	0x5F18, 0xA5B0, 0x5F1A, 0xC9DE, 0x5F1B, 0xA6A2, 0x5F1D, 0xCAD3,
+	0x5F1F, 0xA7CC, 0x5F22, 0xCC71, 0x5F23, 0xCC72, 0x5F24, 0xCC73,
+	0x5F26, 0xA9B6, 0x5F27, 0xA9B7, 0x5F28, 0xCC70, 0x5F29, 0xA9B8,
+	0x5F2D, 0xABDA, 0x5F2E, 0xCEBC, 0x5F30, 0xD17A, 0x5F31, 0xAE7A,
+	0x5F33, 0xD179, 0x5F35, 0xB169, 0x5F36, 0xD54C, 0x5F37, 0xB16A,
+	0x5F38, 0xD54D, 0x5F3C, 0xB45D, 0x5F40, 0xDD62, 0x5F43, 0xE1BF,
+	0x5F44, 0xE1BE, 0x5F46, 0xB9FB, 0x5F48, 0xBC75, 0x5F49, 0xE576,
+	0x5F4A, 0xBECA, 0x5F4B, 0xE974, 0x5F4C, 0xC0B1, 0x5F4E, 0xC573,
+	0x5F4F, 0xF7D8, 0x5F54, 0xCC74, 0x5F56, 0xCEBD, 0x5F57, 0xB16B,
+	0x5F58, 0xD8F4, 0x5F59, 0xB74A, 0x5F5D, 0xC255, 0x5F62, 0xA7CE,
+	0x5F64, 0xA7CD, 0x5F65, 0xABDB, 0x5F67, 0xD17B, 0x5F69, 0xB16D,
+	0x5F6A, 0xB343, 0x5F6B, 0xB16E, 0x5F6C, 0xB16C, 0x5F6D, 0xB45E,
+	0x5F6F, 0xE1C0, 0x5F70, 0xB9FC, 0x5F71, 0xBC76, 0x5F73, 0xC94C,
+	0x5F74, 0xC9DF, 0x5F76, 0xCAD5, 0x5F77, 0xA7CF, 0x5F78, 0xCAD4,
+	0x5F79, 0xA7D0, 0x5F7C, 0xA9BC, 0x5F7D, 0xCC77, 0x5F7E, 0xCC76,
+	0x5F7F, 0xA9BB, 0x5F80, 0xA9B9, 0x5F81, 0xA9BA, 0x5F82, 0xCC75,
+	0x5F85, 0xABDD, 0x5F86, 0xCEBE, 0x5F87, 0xABE0, 0x5F88, 0xABDC,
+	0x5F89, 0xABE2, 0x5F8A, 0xABDE, 0x5F8B, 0xABDF, 0x5F8C, 0xABE1,
+	0x5F90, 0xAE7D, 0x5F91, 0xAE7C, 0x5F92, 0xAE7B, 0x5F96, 0xD54F,
+	0x5F97, 0xB16F, 0x5F98, 0xB172, 0x5F99, 0xB170, 0x5F9B, 0xD54E,
+	0x5F9C, 0xB175, 0x5F9E, 0xB171, 0x5F9F, 0xD550, 0x5FA0, 0xB174,
+	0x5FA1, 0xB173, 0x5FA5, 0xD8F6, 0x5FA6, 0xD8F5, 0x5FA8, 0xB461,
+	0x5FA9, 0xB45F, 0x5FAA, 0xB460, 0x5FAB, 0xD8F7, 0x5FAC, 0xB74B,
+	0x5FAD, 0xDD64, 0x5FAE, 0xB74C, 0x5FAF, 0xDD63, 0x5FB2, 0xE577,
+	0x5FB5, 0xBC78, 0x5FB6, 0xE1C1, 0x5FB7, 0xBC77, 0x5FB9, 0xB9FD,
+	0x5FBB, 0xECDE, 0x5FBC, 0xE975, 0x5FBD, 0xC0B2, 0x5FBE, 0xECDD,
+	0x5FBF, 0xF240, 0x5FC0, 0xF448, 0x5FC1, 0xF449, 0x5FC3, 0xA4DF,
+	0x5FC5, 0xA5B2, 0x5FC9, 0xC97B, 0x5FCC, 0xA7D2, 0x5FCD, 0xA7D4,
+	0x5FCF, 0xC9E2, 0x5FD0, 0xCAD8, 0x5FD1, 0xCAD7, 0x5FD2, 0xCAD6,
+	0x5FD4, 0xC9E1, 0x5FD5, 0xC9E0, 0x5FD6, 0xA6A4, 0x5FD7, 0xA7D3,
+	0x5FD8, 0xA7D1, 0x5FD9, 0xA6A3, 0x5FDD, 0xA9BD, 0x5FDE, 0xCC78,
+	0x5FE0, 0xA9BE, 0x5FE1, 0xCADD, 0x5FE3, 0xCADF, 0x5FE4, 0xCADE,
+	0x5FE5, 0xCC79, 0x5FE8, 0xCADA, 0x5FEA, 0xA7D8, 0x5FEB, 0xA7D6,
+	0x5FED, 0xCAD9, 0x5FEE, 0xCADB, 0x5FEF, 0xCAE1, 0x5FF1, 0xA7D5,
+	0x5FF3, 0xCADC, 0x5FF4, 0xCAE5, 0x5FF5, 0xA9C0, 0x5FF7, 0xCAE2,
+	0x5FF8, 0xA7D7, 0x5FFA, 0xCAE0, 0x5FFB, 0xCAE3, 0x5FFD, 0xA9BF,
+	0x5FFF, 0xA9C1, 0x6000, 0xCAE4, 0x6009, 0xCCAF, 0x600A, 0xCCA2,
+	0x600B, 0xCC7E, 0x600C, 0xCCAE, 0x600D, 0xCCA9, 0x600E, 0xABE7,
+	0x600F, 0xA9C2, 0x6010, 0xCCAA, 0x6011, 0xCCAD, 0x6012, 0xABE3,
+	0x6013, 0xCCAC, 0x6014, 0xA9C3, 0x6015, 0xA9C8, 0x6016, 0xA9C6,
+	0x6017, 0xCCA3, 0x6019, 0xCC7C, 0x601A, 0xCCA5, 0x601B, 0xA9CD,
+	0x601C, 0xCCB0, 0x601D, 0xABE4, 0x601E, 0xCCA6, 0x6020, 0xABE5,
+	0x6021, 0xA9C9, 0x6022, 0xCCA8, 0x6024, 0xCECD, 0x6025, 0xABE6,
+	0x6026, 0xCC7B, 0x6027, 0xA9CA, 0x6028, 0xABE8, 0x6029, 0xA9CB,
+	0x602A, 0xA9C7, 0x602B, 0xA9CC, 0x602C, 0xCCA7, 0x602D, 0xCC7A,
+	0x602E, 0xCCAB, 0x602F, 0xA9C4, 0x6032, 0xCC7D, 0x6033, 0xCCA4,
+	0x6034, 0xCCA1, 0x6035, 0xA9C5, 0x6037, 0xCEBF, 0x6039, 0xCEC0,
+	0x6040, 0xCECA, 0x6041, 0xD1A1, 0x6042, 0xCECB, 0x6043, 0xABEE,
+	0x6044, 0xCECE, 0x6045, 0xCEC4, 0x6046, 0xABED, 0x6047, 0xCEC6,
+	0x6049, 0xCEC7, 0x604C, 0xCEC9, 0x604D, 0xABE9, 0x6050, 0xAEA3,
+	0x6052, 0xF9DA, 0x6053, 0xCEC5, 0x6054, 0xCEC1, 0x6055, 0xAEA4,
+	0x6058, 0xCECF, 0x6059, 0xAE7E, 0x605A, 0xD17D, 0x605B, 0xCEC8,
+	0x605D, 0xD17C, 0x605E, 0xCEC3, 0x605F, 0xCECC, 0x6062, 0xABEC,
+	0x6063, 0xAEA1, 0x6064, 0xABF2, 0x6065, 0xAEA2, 0x6066, 0xCED0,
+	0x6067, 0xD17E, 0x6068, 0xABEB, 0x6069, 0xAEA6, 0x606A, 0xABF1,
+	0x606B, 0xABF0, 0x606C, 0xABEF, 0x606D, 0xAEA5, 0x606E, 0xCED1,
+	0x606F, 0xAEA7, 0x6070, 0xABEA, 0x6072, 0xCEC2, 0x607F, 0xB176,
+	0x6080, 0xD1A4, 0x6081, 0xD1A6, 0x6083, 0xD1A8, 0x6084, 0xAEA8,
+	0x6085, 0xAEAE, 0x6086, 0xD553, 0x6087, 0xD1AC, 0x6088, 0xD1A3,
+	0x6089, 0xB178, 0x608A, 0xD551, 0x608C, 0xAEAD, 0x608D, 0xAEAB,
+	0x608E, 0xD1AE, 0x6090, 0xD552, 0x6092, 0xD1A5, 0x6094, 0xAEAC,
+	0x6095, 0xD1A9, 0x6096, 0xAEAF, 0x6097, 0xD1AB, 0x609A, 0xAEAA,
+	0x609B, 0xD1AA, 0x609C, 0xD1AD, 0x609D, 0xD1A7, 0x609F, 0xAEA9,
+	0x60A0, 0xB179, 0x60A2, 0xD1A2, 0x60A3, 0xB177, 0x60A8, 0xB17A,
+	0x60B0, 0xD555, 0x60B1, 0xD55E, 0x60B2, 0xB464, 0x60B4, 0xB17C,
+	0x60B5, 0xB1A3, 0x60B6, 0xB465, 0x60B7, 0xD560, 0x60B8, 0xB1AA,
+	0x60B9, 0xD8F9, 0x60BA, 0xD556, 0x60BB, 0xB1A2, 0x60BC, 0xB1A5,
+	0x60BD, 0xB17E, 0x60BE, 0xD554, 0x60BF, 0xD562, 0x60C0, 0xD565,
+	0x60C1, 0xD949, 0x60C3, 0xD563, 0x60C4, 0xD8FD, 0x60C5, 0xB1A1,
+	0x60C6, 0xB1A8, 0x60C7, 0xB1AC, 0x60C8, 0xD55D, 0x60C9, 0xD8F8,
+	0x60CA, 0xD561, 0x60CB, 0xB17B, 0x60CC, 0xD8FA, 0x60CD, 0xD564,
+	0x60CE, 0xD8FC, 0x60CF, 0xD559, 0x60D1, 0xB462, 0x60D3, 0xD557,
+	0x60D4, 0xD558, 0x60D5, 0xB1A7, 0x60D8, 0xB1A6, 0x60D9, 0xD55B,
+	0x60DA, 0xB1AB, 0x60DB, 0xD55F, 0x60DC, 0xB1A4, 0x60DD, 0xD55C,
+	0x60DF, 0xB1A9, 0x60E0, 0xB466, 0x60E1, 0xB463, 0x60E2, 0xD8FB,
+	0x60E4, 0xD55A, 0x60E6, 0xB17D, 0x60F0, 0xB46B, 0x60F1, 0xB46F,
+	0x60F2, 0xD940, 0x60F3, 0xB751, 0x60F4, 0xB46D, 0x60F5, 0xD944,
+	0x60F6, 0xB471, 0x60F7, 0xDD65, 0x60F8, 0xD946, 0x60F9, 0xB753,
+	0x60FA, 0xB469, 0x60FB, 0xB46C, 0x60FC, 0xD947, 0x60FE, 0xD948,
+	0x60FF, 0xD94E, 0x6100, 0xB473, 0x6101, 0xB754, 0x6103, 0xD94A,
+	0x6104, 0xD94F, 0x6105, 0xD943, 0x6106, 0xB75E, 0x6108, 0xB755,
+	0x6109, 0xB472, 0x610A, 0xD941, 0x610B, 0xD950, 0x610D, 0xB75D,
+	0x610E, 0xB470, 0x610F, 0xB74E, 0x6110, 0xD94D, 0x6112, 0xB474,
+	0x6113, 0xD945, 0x6114, 0xD8FE, 0x6115, 0xB46A, 0x6116, 0xD942,
+	0x6118, 0xD94B, 0x611A, 0xB74D, 0x611B, 0xB752, 0x611C, 0xB467,
+	0x611D, 0xD94C, 0x611F, 0xB750, 0x6123, 0xB468, 0x6127, 0xB75C,
+	0x6128, 0xE1C3, 0x6129, 0xDD70, 0x612B, 0xDD68, 0x612C, 0xE1C2,
+	0x612E, 0xDD6C, 0x612F, 0xDD6E, 0x6132, 0xDD6B, 0x6134, 0xB75B,
+	0x6136, 0xDD6A, 0x6137, 0xB75F, 0x613B, 0xE1D2, 0x613E, 0xB75A,
+	0x613F, 0xBA40, 0x6140, 0xDD71, 0x6141, 0xE1C4, 0x6144, 0xB758,
+	0x6145, 0xDD69, 0x6146, 0xDD6D, 0x6147, 0xB9FE, 0x6148, 0xB74F,
+	0x6149, 0xDD66, 0x614A, 0xDD67, 0x614B, 0xBA41, 0x614C, 0xB757,
+	0x614D, 0xB759, 0x614E, 0xB756, 0x614F, 0xDD6F, 0x6152, 0xE1C8,
+	0x6153, 0xE1C9, 0x6154, 0xE1CE, 0x6155, 0xBC7D, 0x6156, 0xE1D5,
+	0x6158, 0xBA47, 0x615A, 0xBA46, 0x615B, 0xE1D0, 0x615D, 0xBC7C,
+	0x615E, 0xE1C5, 0x615F, 0xBA45, 0x6161, 0xE1D4, 0x6162, 0xBA43,
+	0x6163, 0xBA44, 0x6165, 0xE1D1, 0x6166, 0xE5AA, 0x6167, 0xBC7A,
+	0x6168, 0xB46E, 0x616A, 0xE1D3, 0x616B, 0xBCA3, 0x616C, 0xE1CB,
+	0x616E, 0xBC7B, 0x6170, 0xBCA2, 0x6171, 0xE1C6, 0x6172, 0xE1CA,
+	0x6173, 0xE1C7, 0x6174, 0xE1CD, 0x6175, 0xBA48, 0x6176, 0xBC79,
+	0x6177, 0xBA42, 0x6179, 0xE57A, 0x617A, 0xE1CF, 0x617C, 0xBCA1,
+	0x617E, 0xBCA4, 0x6180, 0xE1CC, 0x6182, 0xBC7E, 0x6183, 0xE579,
+	0x6189, 0xE57E, 0x618A, 0xBECE, 0x618B, 0xE578, 0x618C, 0xE9A3,
+	0x618D, 0xE5A9, 0x618E, 0xBCA8, 0x6190, 0xBCA6, 0x6191, 0xBECC,
+	0x6192, 0xE5A6, 0x6193, 0xE5A2, 0x6194, 0xBCAC, 0x6196, 0xE978,
+	0x619A, 0xBCAA, 0x619B, 0xE5A1, 0x619D, 0xE976, 0x619F, 0xE5A5,
+	0x61A1, 0xE5A8, 0x61A2, 0xE57D, 0x61A4, 0xBCAB, 0x61A7, 0xBCA5,
+	0x61A8, 0xE977, 0x61A9, 0xBECD, 0x61AA, 0xE5A7, 0x61AB, 0xBCA7,
+	0x61AC, 0xBCA9, 0x61AD, 0xE5A4, 0x61AE, 0xBCAD, 0x61AF, 0xE5A3,
+	0x61B0, 0xE57C, 0x61B1, 0xE57B, 0x61B2, 0xBECB, 0x61B3, 0xE5AB,
+	0x61B4, 0xE97A, 0x61B5, 0xECE0, 0x61B6, 0xBED0, 0x61B8, 0xE9A2,
+	0x61BA, 0xE97E, 0x61BC, 0xECE1, 0x61BE, 0xBED1, 0x61BF, 0xE9A1,
+	0x61C1, 0xE97C, 0x61C2, 0xC0B4, 0x61C3, 0xECDF, 0x61C5, 0xE979,
+	0x61C6, 0xE97B, 0x61C7, 0xC0B5, 0x61C8, 0xBED3, 0x61C9, 0xC0B3,
+	0x61CA, 0xBED2, 0x61CB, 0xC0B7, 0x61CC, 0xE97D, 0x61CD, 0xBECF,
+	0x61D6, 0xEFCF, 0x61D8, 0xEFC7, 0x61DE, 0xECE7, 0x61DF, 0xEFC8,
+	0x61E0, 0xECE3, 0x61E3, 0xC256, 0x61E4, 0xECE5, 0x61E5, 0xECE4,
+	0x61E6, 0xC0B6, 0x61E7, 0xECE2, 0x61E8, 0xECE6, 0x61E9, 0xEFD0,
+	0x61EA, 0xEFCC, 0x61EB, 0xEFCE, 0x61ED, 0xEFC9, 0x61EE, 0xEFCA,
+	0x61F0, 0xEFCD, 0x61F1, 0xEFCB, 0x61F2, 0xC367, 0x61F5, 0xC36A,
+	0x61F6, 0xC369, 0x61F7, 0xC368, 0x61F8, 0xC461, 0x61F9, 0xF44A,
+	0x61FA, 0xC462, 0x61FB, 0xF241, 0x61FC, 0xC4DF, 0x61FD, 0xF5CC,
+	0x61FE, 0xC4E0, 0x61FF, 0xC574, 0x6200, 0xC5CA, 0x6201, 0xF7D9,
+	0x6203, 0xF7DA, 0x6204, 0xF7DB, 0x6207, 0xF9BA, 0x6208, 0xA4E0,
+	0x6209, 0xC97C, 0x620A, 0xA5B3, 0x620C, 0xA6A6, 0x620D, 0xA6A7,
+	0x620E, 0xA6A5, 0x6210, 0xA6A8, 0x6211, 0xA7DA, 0x6212, 0xA7D9,
+	0x6214, 0xCCB1, 0x6215, 0xA9CF, 0x6216, 0xA9CE, 0x6219, 0xD1AF,
+	0x621A, 0xB1AD, 0x621B, 0xB1AE, 0x621F, 0xB475, 0x6220, 0xDD72,
+	0x6221, 0xB760, 0x6222, 0xB761, 0x6223, 0xDD74, 0x6224, 0xDD76,
+	0x6225, 0xDD75, 0x6227, 0xE1D7, 0x6229, 0xE1D6, 0x622A, 0xBA49,
+	0x622B, 0xE1D8, 0x622D, 0xE5AC, 0x622E, 0xBCAE, 0x6230, 0xBED4,
+	0x6232, 0xC0B8, 0x6233, 0xC257, 0x6234, 0xC0B9, 0x6236, 0xA4E1,
+	0x623A, 0xCAE6, 0x623D, 0xCCB2, 0x623E, 0xA9D1, 0x623F, 0xA9D0,
+	0x6240, 0xA9D2, 0x6241, 0xABF3, 0x6242, 0xCED2, 0x6243, 0xCED3,
+	0x6246, 0xD1B0, 0x6247, 0xAEB0, 0x6248, 0xB1AF, 0x6249, 0xB476,
+	0x624A, 0xD951, 0x624B, 0xA4E2, 0x624D, 0xA47E, 0x624E, 0xA4E3,
+	0x6250, 0xC97D, 0x6251, 0xA5B7, 0x6252, 0xA5B6, 0x6253, 0xA5B4,
+	0x6254, 0xA5B5, 0x6258, 0xA6AB, 0x6259, 0xC9E9, 0x625A, 0xC9EB,
+	0x625B, 0xA6AA, 0x625C, 0xC9E3, 0x625E, 0xC9E4, 0x6260, 0xC9EA,
+	0x6261, 0xC9E6, 0x6262, 0xC9E8, 0x6263, 0xA6A9, 0x6264, 0xC9E5,
+	0x6265, 0xC9EC, 0x6266, 0xC9E7, 0x626D, 0xA7E1, 0x626E, 0xA7EA,
+	0x626F, 0xA7E8, 0x6270, 0xCAF0, 0x6271, 0xCAED, 0x6272, 0xCAF5,
+	0x6273, 0xA7E6, 0x6274, 0xCAF6, 0x6276, 0xA7DF, 0x6277, 0xCAF3,
+	0x6279, 0xA7E5, 0x627A, 0xCAEF, 0x627B, 0xCAEE, 0x627C, 0xA7E3,
+	0x627D, 0xCAF4, 0x627E, 0xA7E4, 0x627F, 0xA9D3, 0x6280, 0xA7DE,
+	0x6281, 0xCAF1, 0x6283, 0xCAE7, 0x6284, 0xA7DB, 0x6286, 0xA7EE,
+	0x6287, 0xCAEC, 0x6288, 0xCAF2, 0x6289, 0xA7E0, 0x628A, 0xA7E2,
+	0x628C, 0xCAE8, 0x628E, 0xCAE9, 0x628F, 0xCAEA, 0x6291, 0xA7ED,
+	0x6292, 0xA7E7, 0x6293, 0xA7EC, 0x6294, 0xCAEB, 0x6295, 0xA7EB,
+	0x6296, 0xA7DD, 0x6297, 0xA7DC, 0x6298, 0xA7E9, 0x62A8, 0xA9E1,
+	0x62A9, 0xCCBE, 0x62AA, 0xCCB7, 0x62AB, 0xA9DC, 0x62AC, 0xA9EF,
+	0x62AD, 0xCCB3, 0x62AE, 0xCCBA, 0x62AF, 0xCCBC, 0x62B0, 0xCCBF,
+	0x62B1, 0xA9EA, 0x62B3, 0xCCBB, 0x62B4, 0xCCB4, 0x62B5, 0xA9E8,
+	0x62B6, 0xCCB8, 0x62B8, 0xCCC0, 0x62B9, 0xA9D9, 0x62BB, 0xCCBD,
+	0x62BC, 0xA9E3, 0x62BD, 0xA9E2, 0x62BE, 0xCCB6, 0x62BF, 0xA9D7,
+	0x62C2, 0xA9D8, 0x62C4, 0xA9D6, 0x62C6, 0xA9EE, 0x62C7, 0xA9E6,
+	0x62C8, 0xA9E0, 0x62C9, 0xA9D4, 0x62CA, 0xCCB9, 0x62CB, 0xA9DF,
+	0x62CC, 0xA9D5, 0x62CD, 0xA9E7, 0x62CE, 0xA9F0, 0x62CF, 0xCED4,
+	0x62D0, 0xA9E4, 0x62D1, 0xCCB5, 0x62D2, 0xA9DA, 0x62D3, 0xA9DD,
+	0x62D4, 0xA9DE, 0x62D6, 0xA9EC, 0x62D7, 0xA9ED, 0x62D8, 0xA9EB,
+	0x62D9, 0xA9E5, 0x62DA, 0xA9E9, 0x62DB, 0xA9DB, 0x62DC, 0xABF4,
+	0x62EB, 0xCEDA, 0x62EC, 0xAC41, 0x62ED, 0xABF8, 0x62EE, 0xABFA,
+	0x62EF, 0xAC40, 0x62F0, 0xCEE6, 0x62F1, 0xABFD, 0x62F2, 0xD1B1,
+	0x62F3, 0xAEB1, 0x62F4, 0xAC43, 0x62F5, 0xCED7, 0x62F6, 0xCEDF,
+	0x62F7, 0xABFE, 0x62F8, 0xCEDE, 0x62F9, 0xCEDB, 0x62FA, 0xCEE3,
+	0x62FB, 0xCEE5, 0x62FC, 0xABF7, 0x62FD, 0xABFB, 0x62FE, 0xAC42,
+	0x62FF, 0xAEB3, 0x6300, 0xCEE0, 0x6301, 0xABF9, 0x6302, 0xAC45,
+	0x6303, 0xCED9, 0x6307, 0xABFC, 0x6308, 0xAEB2, 0x6309, 0xABF6,
+	0x630B, 0xCED6, 0x630C, 0xCEDD, 0x630D, 0xCED5, 0x630E, 0xCED8,
+	0x630F, 0xCEDC, 0x6310, 0xD1B2, 0x6311, 0xAC44, 0x6313, 0xCEE1,
+	0x6314, 0xCEE2, 0x6315, 0xCEE4, 0x6316, 0xABF5, 0x6328, 0xAEC1,
+	0x6329, 0xD1BE, 0x632A, 0xAEBF, 0x632B, 0xAEC0, 0x632C, 0xD1B4,
+	0x632D, 0xD1C4, 0x632F, 0xAEB6, 0x6332, 0xD566, 0x6333, 0xD1C6,
+	0x6334, 0xD1C0, 0x6336, 0xD1B7, 0x6338, 0xD1C9, 0x6339, 0xD1BA,
+	0x633A, 0xAEBC, 0x633B, 0xD57D, 0x633C, 0xD1BD, 0x633D, 0xAEBE,
+	0x633E, 0xAEB5, 0x6340, 0xD1CB, 0x6341, 0xD1BF, 0x6342, 0xAEB8,
+	0x6343, 0xD1B8, 0x6344, 0xD1B5, 0x6345, 0xD1B6, 0x6346, 0xAEB9,
+	0x6347, 0xD1C5, 0x6348, 0xD1CC, 0x6349, 0xAEBB, 0x634A, 0xD1BC,
+	0x634B, 0xD1BB, 0x634C, 0xAEC3, 0x634D, 0xAEC2, 0x634E, 0xAEB4,
+	0x634F, 0xAEBA, 0x6350, 0xAEBD, 0x6351, 0xD1C8, 0x6354, 0xD1C2,
+	0x6355, 0xAEB7, 0x6356, 0xD1B3, 0x6357, 0xD1CA, 0x6358, 0xD1C1,
+	0x6359, 0xD1C3, 0x635A, 0xD1C7, 0x6365, 0xD567, 0x6367, 0xB1B7,
+	0x6368, 0xB1CB, 0x6369, 0xB1CA, 0x636B, 0xB1BF, 0x636D, 0xD579,
+	0x636E, 0xD575, 0x636F, 0xD572, 0x6370, 0xD5A6, 0x6371, 0xB1BA,
+	0x6372, 0xB1B2, 0x6375, 0xD577, 0x6376, 0xB4A8, 0x6377, 0xB1B6,
+	0x6378, 0xD5A1, 0x637A, 0xB1CC, 0x637B, 0xB1C9, 0x637C, 0xD57B,
+	0x637D, 0xD56A, 0x6380, 0xB1C8, 0x6381, 0xD5A3, 0x6382, 0xD569,
+	0x6383, 0xB1BD, 0x6384, 0xB1C1, 0x6385, 0xD5A2, 0x6387, 0xD573,
+	0x6388, 0xB1C2, 0x6389, 0xB1BC, 0x638A, 0xD568, 0x638C, 0xB478,
+	0x638D, 0xD5A5, 0x638E, 0xD571, 0x638F, 0xB1C7, 0x6390, 0xD574,
+	0x6391, 0xD5A4, 0x6392, 0xB1C6, 0x6394, 0xD952, 0x6396, 0xB1B3,
+	0x6397, 0xD56F, 0x6398, 0xB1B8, 0x6399, 0xB1C3, 0x639B, 0xB1BE,
+	0x639C, 0xD578, 0x639D, 0xD56E, 0x639E, 0xD56C, 0x639F, 0xD57E,
+	0x63A0, 0xB1B0, 0x63A1, 0xB1C4, 0x63A2, 0xB1B4, 0x63A3, 0xB477,
+	0x63A4, 0xD57C, 0x63A5, 0xB1B5, 0x63A7, 0xB1B1, 0x63A8, 0xB1C0,
+	0x63A9, 0xB1BB, 0x63AA, 0xB1B9, 0x63AB, 0xD570, 0x63AC, 0xB1C5,
+	0x63AD, 0xD56D, 0x63AE, 0xD57A, 0x63AF, 0xD576, 0x63B0, 0xD954,
+	0x63B1, 0xD953, 0x63BD, 0xD56B, 0x63BE, 0xD964, 0x63C0, 0xB47A,
+	0x63C2, 0xD96A, 0x63C3, 0xD959, 0x63C4, 0xD967, 0x63C5, 0xDD77,
+	0x63C6, 0xB47D, 0x63C7, 0xD96B, 0x63C8, 0xD96E, 0x63C9, 0xB47C,
+	0x63CA, 0xD95C, 0x63CB, 0xD96D, 0x63CC, 0xD96C, 0x63CD, 0xB47E,
+	0x63CE, 0xD955, 0x63CF, 0xB479, 0x63D0, 0xB4A3, 0x63D2, 0xB4A1,
+	0x63D3, 0xD969, 0x63D5, 0xD95F, 0x63D6, 0xB4A5, 0x63D7, 0xD970,
+	0x63D8, 0xD968, 0x63D9, 0xD971, 0x63DA, 0xB4AD, 0x63DB, 0xB4AB,
+	0x63DC, 0xD966, 0x63DD, 0xD965, 0x63DF, 0xD963, 0x63E0, 0xD95D,
+	0x63E1, 0xB4A4, 0x63E3, 0xB4A2, 0x63E4, 0xD1B9, 0x63E5, 0xD956,
+	0x63E7, 0xDDB7, 0x63E8, 0xD957, 0x63E9, 0xB47B, 0x63EA, 0xB4AA,
+	0x63EB, 0xDD79, 0x63ED, 0xB4A6, 0x63EE, 0xB4A7, 0x63EF, 0xD958,
+	0x63F0, 0xD96F, 0x63F1, 0xDD78, 0x63F2, 0xD960, 0x63F3, 0xD95B,
+	0x63F4, 0xB4A9, 0x63F5, 0xD961, 0x63F6, 0xD95E, 0x63F9, 0xB4AE,
+	0x6406, 0xB770, 0x6409, 0xDD7C, 0x640A, 0xDDB1, 0x640B, 0xDDB6,
+	0x640C, 0xDDAA, 0x640D, 0xB76C, 0x640E, 0xDDBB, 0x640F, 0xB769,
+	0x6410, 0xDD7A, 0x6412, 0xDD7B, 0x6413, 0xB762, 0x6414, 0xB76B,
+	0x6415, 0xDDA4, 0x6416, 0xB76E, 0x6417, 0xB76F, 0x6418, 0xDDA5,
+	0x641A, 0xDDB2, 0x641B, 0xDDB8, 0x641C, 0xB76A, 0x641E, 0xB764,
+	0x641F, 0xDDA3, 0x6420, 0xDD7D, 0x6421, 0xDDBA, 0x6422, 0xDDA8,
+	0x6423, 0xDDA9, 0x6424, 0xDD7E, 0x6425, 0xDDB4, 0x6426, 0xDDAB,
+	0x6427, 0xDDB5, 0x6428, 0xDDAD, 0x642A, 0xB765, 0x642B, 0xE1D9,
+	0x642C, 0xB768, 0x642D, 0xB766, 0x642E, 0xDDB9, 0x642F, 0xDDB0,
+	0x6430, 0xDDAC, 0x6433, 0xDDA1, 0x6434, 0xBA53, 0x6435, 0xDDAF,
+	0x6436, 0xB76D, 0x6437, 0xDDA7, 0x6439, 0xDDA6, 0x643D, 0xB767,
+	0x643E, 0xB763, 0x643F, 0xE1EE, 0x6440, 0xDDB3, 0x6441, 0xDDAE,
+	0x6443, 0xDDA2, 0x644B, 0xE1E9, 0x644D, 0xE1DA, 0x644E, 0xE1E5,
+	0x6450, 0xE1EC, 0x6451, 0xBA51, 0x6452, 0xB4AC, 0x6453, 0xE1EA,
+	0x6454, 0xBA4C, 0x6458, 0xBA4B, 0x6459, 0xE1F1, 0x645B, 0xE1DB,
+	0x645C, 0xE1E8, 0x645D, 0xE1DC, 0x645E, 0xE1E7, 0x645F, 0xBA4F,
+	0x6460, 0xE1EB, 0x6461, 0xD962, 0x6465, 0xE1F2, 0x6466, 0xE1E3,
+	0x6467, 0xBA52, 0x6468, 0xE5BA, 0x6469, 0xBCAF, 0x646B, 0xE1F0,
+	0x646C, 0xE1EF, 0x646D, 0xBA54, 0x646E, 0xE5AD, 0x646F, 0xBCB0,
+	0x6470, 0xE5AE, 0x6472, 0xE1DF, 0x6473, 0xE1E0, 0x6474, 0xE1DD,
+	0x6475, 0xE1E2, 0x6476, 0xE1DE, 0x6477, 0xE1F3, 0x6478, 0xBA4E,
+	0x6479, 0xBCB1, 0x647A, 0xBA50, 0x647B, 0xBA55, 0x647D, 0xE1E1,
+	0x647F, 0xE1ED, 0x6482, 0xE1E6, 0x6485, 0xE5B1, 0x6487, 0xBA4A,
+	0x6488, 0xBCB4, 0x6489, 0xE9AA, 0x648A, 0xE5B6, 0x648B, 0xE5B5,
+	0x648C, 0xE5B7, 0x648F, 0xE5B4, 0x6490, 0xBCB5, 0x6492, 0xBCBB,
+	0x6493, 0xBCB8, 0x6495, 0xBCB9, 0x6496, 0xE5AF, 0x6497, 0xE5B2,
+	0x6498, 0xE5BC, 0x6499, 0xBCC1, 0x649A, 0xBCBF, 0x649C, 0xE5B3,
+	0x649D, 0xD95A, 0x649E, 0xBCB2, 0x649F, 0xE5B9, 0x64A0, 0xE5B0,
+	0x64A2, 0xBCC2, 0x64A3, 0xE5B8, 0x64A4, 0xBA4D, 0x64A5, 0xBCB7,
+	0x64A6, 0xE1E4, 0x64A9, 0xBCBA, 0x64AB, 0xBCBE, 0x64AC, 0xBCC0,
+	0x64AD, 0xBCBD, 0x64AE, 0xBCBC, 0x64B0, 0xBCB6, 0x64B1, 0xE5BB,
+	0x64B2, 0xBCB3, 0x64B3, 0xBCC3, 0x64BB, 0xBED8, 0x64BC, 0xBED9,
+	0x64BD, 0xE9A9, 0x64BE, 0xBEE2, 0x64BF, 0xBEDF, 0x64C1, 0xBED6,
+	0x64C2, 0xBEDD, 0x64C3, 0xE9AB, 0x64C4, 0xBEDB, 0x64C5, 0xBED5,
+	0x64C7, 0xBEDC, 0x64C9, 0xE9A8, 0x64CA, 0xC0BB, 0x64CB, 0xBED7,
+	0x64CD, 0xBEDE, 0x64CE, 0xC0BA, 0x64CF, 0xE9A7, 0x64D0, 0xE9A6,
+	0x64D2, 0xBEE0, 0x64D4, 0xBEE1, 0x64D6, 0xE9A5, 0x64D7, 0xE9A4,
+	0x64D8, 0xC0BC, 0x64D9, 0xE9AE, 0x64DA, 0xBEDA, 0x64DB, 0xE9AC,
+	0x64E0, 0xC0BD, 0x64E2, 0xC0C2, 0x64E3, 0xECEA, 0x64E4, 0xECEC,
+	0x64E6, 0xC0BF, 0x64E8, 0xECED, 0x64E9, 0xECE9, 0x64EB, 0xECEB,
+	0x64EC, 0xC0C0, 0x64ED, 0xC0C3, 0x64EF, 0xECE8, 0x64F0, 0xC0BE,
+	0x64F1, 0xC0C1, 0x64F2, 0xC259, 0x64F3, 0xE9AD, 0x64F4, 0xC258,
+	0x64F7, 0xC25E, 0x64F8, 0xEFD4, 0x64FA, 0xC25C, 0x64FB, 0xC25D,
+	0x64FC, 0xEFD7, 0x64FD, 0xEFD3, 0x64FE, 0xC25A, 0x64FF, 0xEFD1,
+	0x6500, 0xC36B, 0x6501, 0xEFD5, 0x6503, 0xEFD6, 0x6504, 0xEFD2,
+	0x6506, 0xC25B, 0x6507, 0xF242, 0x6509, 0xF245, 0x650C, 0xF246,
+	0x650D, 0xF244, 0x650E, 0xF247, 0x650F, 0xC36C, 0x6510, 0xF243,
+	0x6513, 0xF44E, 0x6514, 0xC464, 0x6515, 0xF44D, 0x6516, 0xF44C,
+	0x6517, 0xF44B, 0x6518, 0xC463, 0x6519, 0xC465, 0x651B, 0xF5CD,
+	0x651C, 0xC4E2, 0x651D, 0xC4E1, 0x6520, 0xF6E1, 0x6521, 0xF6E0,
+	0x6522, 0xF6E3, 0x6523, 0xC5CB, 0x6524, 0xC575, 0x6525, 0xF7DD,
+	0x6526, 0xF6E2, 0x6529, 0xF7DC, 0x652A, 0xC5CD, 0x652B, 0xC5CC,
+	0x652C, 0xC5F3, 0x652D, 0xF8A9, 0x652E, 0xF8EF, 0x652F, 0xA4E4,
+	0x6532, 0xD972, 0x6533, 0xE9AF, 0x6536, 0xA6AC, 0x6537, 0xCAF7,
+	0x6538, 0xA7F1, 0x6539, 0xA7EF, 0x653B, 0xA7F0, 0x653D, 0xCCC1,
+	0x653E, 0xA9F1, 0x653F, 0xAC46, 0x6541, 0xCEE7, 0x6543, 0xCEE8,
+	0x6545, 0xAC47, 0x6546, 0xD1CE, 0x6548, 0xAEC4, 0x6549, 0xAEC5,
+	0x654A, 0xD1CD, 0x654F, 0xB1D3, 0x6551, 0xB1CF, 0x6553, 0xD5A7,
+	0x6554, 0xB1D6, 0x6555, 0xB1D5, 0x6556, 0xB1CE, 0x6557, 0xB1D1,
+	0x6558, 0xB1D4, 0x6559, 0xB1D0, 0x655C, 0xD976, 0x655D, 0xB1CD,
+	0x655E, 0xB4AF, 0x6562, 0xB4B1, 0x6563, 0xB4B2, 0x6564, 0xD975,
+	0x6565, 0xD978, 0x6566, 0xB4B0, 0x6567, 0xD973, 0x6568, 0xD977,
+	0x656A, 0xD974, 0x656C, 0xB771, 0x656F, 0xDDBC, 0x6572, 0xBA56,
+	0x6573, 0xE1F4, 0x6574, 0xBEE3, 0x6575, 0xBCC4, 0x6576, 0xE5BD,
+	0x6577, 0xBCC5, 0x6578, 0xBCC6, 0x6579, 0xE5BF, 0x657A, 0xE5BE,
+	0x657B, 0xE5C0, 0x657C, 0xE9B1, 0x657F, 0xE9B0, 0x6580, 0xECEF,
+	0x6581, 0xECEE, 0x6582, 0xC0C4, 0x6583, 0xC0C5, 0x6584, 0xF248,
+	0x6587, 0xA4E5, 0x658C, 0xD979, 0x6590, 0xB4B4, 0x6591, 0xB4B3,
+	0x6592, 0xDDBD, 0x6594, 0xEFD8, 0x6595, 0xC4E3, 0x6596, 0xF7DE,
+	0x6597, 0xA4E6, 0x6599, 0xAEC6, 0x659B, 0xB1D8, 0x659C, 0xB1D7,
+	0x659D, 0xD97A, 0x659E, 0xD97B, 0x659F, 0xB772, 0x65A0, 0xE1F5,
+	0x65A1, 0xBA57, 0x65A2, 0xE9B2, 0x65A4, 0xA4E7, 0x65A5, 0xA5B8,
+	0x65A7, 0xA9F2, 0x65A8, 0xCCC2, 0x65AA, 0xCEE9, 0x65AB, 0xAC48,
+	0x65AC, 0xB1D9, 0x65AE, 0xD97C, 0x65AF, 0xB4B5, 0x65B0, 0xB773,
+	0x65B2, 0xE5C1, 0x65B3, 0xE5C2, 0x65B6, 0xECF0, 0x65B7, 0xC25F,
+	0x65B8, 0xF8F0, 0x65B9, 0xA4E8, 0x65BB, 0xCCC3, 0x65BC, 0xA9F3,
+	0x65BD, 0xAC49, 0x65BF, 0xCEEA, 0x65C1, 0xAEC7, 0x65C2, 0xD1D2,
+	0x65C3, 0xD1D0, 0x65C4, 0xD1D1, 0x65C5, 0xAEC8, 0x65C6, 0xD1CF,
+	0x65CB, 0xB1DB, 0x65CC, 0xB1DC, 0x65CD, 0xD5A8, 0x65CE, 0xB1DD,
+	0x65CF, 0xB1DA, 0x65D0, 0xD97D, 0x65D2, 0xD97E, 0x65D3, 0xDDBE,
+	0x65D6, 0xBA59, 0x65D7, 0xBA58, 0x65DA, 0xECF1, 0x65DB, 0xEFD9,
+	0x65DD, 0xF24A, 0x65DE, 0xF249, 0x65DF, 0xF44F, 0x65E1, 0xC95E,
+	0x65E2, 0xAC4A, 0x65E5, 0xA4E9, 0x65E6, 0xA5B9, 0x65E8, 0xA6AE,
+	0x65E9, 0xA6AD, 0x65EC, 0xA6AF, 0x65ED, 0xA6B0, 0x65EE, 0xC9EE,
+	0x65EF, 0xC9ED, 0x65F0, 0xCAF8, 0x65F1, 0xA7F2, 0x65F2, 0xCAFB,
+	0x65F3, 0xCAFA, 0x65F4, 0xCAF9, 0x65F5, 0xCAFC, 0x65FA, 0xA9F4,
+	0x65FB, 0xCCC9, 0x65FC, 0xCCC5, 0x65FD, 0xCCCE, 0x6600, 0xA9FB,
+	0x6602, 0xA9F9, 0x6603, 0xCCCA, 0x6604, 0xCCC6, 0x6605, 0xCCCD,
+	0x6606, 0xA9F8, 0x6607, 0xAA40, 0x6608, 0xCCC8, 0x6609, 0xCCC4,
+	0x660A, 0xA9FE, 0x660B, 0xCCCB, 0x660C, 0xA9F7, 0x660D, 0xCCCC,
+	0x660E, 0xA9FA, 0x660F, 0xA9FC, 0x6610, 0xCCD0, 0x6611, 0xCCCF,
+	0x6612, 0xCCC7, 0x6613, 0xA9F6, 0x6614, 0xA9F5, 0x6615, 0xA9FD,
+	0x661C, 0xCEEF, 0x661D, 0xCEF5, 0x661F, 0xAC50, 0x6620, 0xAC4D,
+	0x6621, 0xCEEC, 0x6622, 0xCEF1, 0x6624, 0xAC53, 0x6625, 0xAC4B,
+	0x6626, 0xCEF0, 0x6627, 0xAC4E, 0x6628, 0xAC51, 0x662B, 0xCEF3,
+	0x662D, 0xAC4C, 0x662E, 0xCEF8, 0x662F, 0xAC4F, 0x6631, 0xAC52,
+	0x6632, 0xCEED, 0x6633, 0xCEF2, 0x6634, 0xCEF6, 0x6635, 0xCEEE,
+	0x6636, 0xCEEB, 0x6639, 0xCEF7, 0x663A, 0xCEF4, 0x6641, 0xAED0,
+	0x6642, 0xAEC9, 0x6643, 0xAECC, 0x6645, 0xAECF, 0x6647, 0xD1D5,
+	0x6649, 0xAECA, 0x664A, 0xD1D3, 0x664C, 0xAECE, 0x664F, 0xAECB,
+	0x6651, 0xD1D6, 0x6652, 0xAECD, 0x6659, 0xD5AC, 0x665A, 0xB1DF,
+	0x665B, 0xD5AB, 0x665C, 0xD5AD, 0x665D, 0xB1DE, 0x665E, 0xB1E3,
+	0x665F, 0xD1D4, 0x6661, 0xD5AA, 0x6662, 0xD5AE, 0x6664, 0xB1E0,
+	0x6665, 0xD5A9, 0x6666, 0xB1E2, 0x6668, 0xB1E1, 0x666A, 0xD9A7,
+	0x666C, 0xD9A2, 0x666E, 0xB4B6, 0x666F, 0xB4BA, 0x6670, 0xB4B7,
+	0x6671, 0xD9A5, 0x6672, 0xD9A8, 0x6674, 0xB4B8, 0x6676, 0xB4B9,
+	0x6677, 0xB4BE, 0x6678, 0xDDC7, 0x6679, 0xD9A6, 0x667A, 0xB4BC,
+	0x667B, 0xD9A3, 0x667C, 0xD9A1, 0x667E, 0xB4BD, 0x6680, 0xD9A4,
+	0x6684, 0xB779, 0x6686, 0xDDBF, 0x6687, 0xB776, 0x6688, 0xB777,
+	0x6689, 0xB775, 0x668A, 0xDDC4, 0x668B, 0xDDC3, 0x668C, 0xDDC0,
+	0x668D, 0xB77B, 0x6690, 0xDDC2, 0x6691, 0xB4BB, 0x6694, 0xDDC6,
+	0x6695, 0xDDC1, 0x6696, 0xB778, 0x6697, 0xB774, 0x6698, 0xB77A,
+	0x6699, 0xDDC5, 0x669D, 0xBA5C, 0x669F, 0xE1F8, 0x66A0, 0xE1F7,
+	0x66A1, 0xE1F6, 0x66A2, 0xBA5A, 0x66A8, 0xBA5B, 0x66A9, 0xE5C5,
+	0x66AA, 0xE5C8, 0x66AB, 0xBCC8, 0x66AE, 0xBCC7, 0x66AF, 0xE5C9,
+	0x66B0, 0xE5C4, 0x66B1, 0xBCCA, 0x66B2, 0xE5C6, 0x66B4, 0xBCC9,
+	0x66B5, 0xE5C3, 0x66B7, 0xE5C7, 0x66B8, 0xBEE9, 0x66B9, 0xBEE6,
+	0x66BA, 0xE9BB, 0x66BB, 0xE9BA, 0x66BD, 0xE9B9, 0x66BE, 0xE9B4,
+	0x66C0, 0xE9B5, 0x66C4, 0xBEE7, 0x66C6, 0xBEE4, 0x66C7, 0xBEE8,
+	0x66C8, 0xE9B3, 0x66C9, 0xBEE5, 0x66CA, 0xE9B6, 0x66CB, 0xE9B7,
+	0x66CC, 0xE9BC, 0x66CF, 0xE9B8, 0x66D2, 0xECF2, 0x66D6, 0xC0C7,
+	0x66D8, 0xEFDC, 0x66D9, 0xC0C6, 0x66DA, 0xEFDA, 0x66DB, 0xEFDB,
+	0x66DC, 0xC260, 0x66DD, 0xC36E, 0x66DE, 0xF24B, 0x66E0, 0xC36D,
+	0x66E3, 0xF451, 0x66E4, 0xF452, 0x66E6, 0xC466, 0x66E8, 0xF450,
+	0x66E9, 0xC4E4, 0x66EB, 0xF7DF, 0x66EC, 0xC5CE, 0x66ED, 0xF8AA,
+	0x66EE, 0xF8AB, 0x66F0, 0xA4EA, 0x66F2, 0xA6B1, 0x66F3, 0xA6B2,
+	0x66F4, 0xA7F3, 0x66F6, 0xCCD1, 0x66F7, 0xAC54, 0x66F8, 0xAED1,
+	0x66F9, 0xB1E4, 0x66FC, 0xB0D2, 0x66FE, 0xB4BF, 0x66FF, 0xB4C0,
+	0x6700, 0xB3CC, 0x6701, 0xD9A9, 0x6703, 0xB77C, 0x6704, 0xE1FA,
+	0x6705, 0xE1F9, 0x6708, 0xA4EB, 0x6709, 0xA6B3, 0x670A, 0xCCD2,
+	0x670B, 0xAA42, 0x670D, 0xAA41, 0x670F, 0xCEF9, 0x6710, 0xCEFA,
+	0x6712, 0xD1D7, 0x6713, 0xD1D8, 0x6714, 0xAED2, 0x6715, 0xAED3,
+	0x6717, 0xAED4, 0x6718, 0xD5AF, 0x671B, 0xB1E6, 0x671D, 0xB4C2,
+	0x671F, 0xB4C1, 0x6720, 0xDDC8, 0x6721, 0xDF7A, 0x6722, 0xE1FB,
+	0x6723, 0xE9BD, 0x6726, 0xC261, 0x6727, 0xC467, 0x6728, 0xA4EC,
+	0x672A, 0xA5BC, 0x672B, 0xA5BD, 0x672C, 0xA5BB, 0x672D, 0xA5BE,
+	0x672E, 0xA5BA, 0x6731, 0xA6B6, 0x6733, 0xC9F6, 0x6734, 0xA6B5,
+	0x6735, 0xA6B7, 0x6738, 0xC9F1, 0x6739, 0xC9F0, 0x673A, 0xC9F3,
+	0x673B, 0xC9F2, 0x673C, 0xC9F5, 0x673D, 0xA6B4, 0x673E, 0xC9EF,
+	0x673F, 0xC9F4, 0x6745, 0xCAFD, 0x6746, 0xA7FD, 0x6747, 0xCAFE,
+	0x6748, 0xCB43, 0x6749, 0xA7FC, 0x674B, 0xCB47, 0x674C, 0xCB42,
+	0x674D, 0xCB45, 0x674E, 0xA7F5, 0x674F, 0xA7F6, 0x6750, 0xA7F7,
+	0x6751, 0xA7F8, 0x6753, 0xA840, 0x6755, 0xCB41, 0x6756, 0xA7FA,
+	0x6757, 0xA841, 0x6759, 0xCB40, 0x675A, 0xCB46, 0x675C, 0xA7F9,
+	0x675D, 0xCB44, 0x675E, 0xA7FB, 0x675F, 0xA7F4, 0x6760, 0xA7FE,
+	0x676A, 0xAA57, 0x676C, 0xCCD4, 0x676D, 0xAA43, 0x676F, 0xAA4D,
+	0x6770, 0xAA4E, 0x6771, 0xAA46, 0x6772, 0xAA58, 0x6773, 0xAA48,
+	0x6774, 0xCCDC, 0x6775, 0xAA53, 0x6776, 0xCCD7, 0x6777, 0xAA49,
+	0x6778, 0xCCE6, 0x6779, 0xCCE7, 0x677A, 0xCCDF, 0x677B, 0xCCD8,
+	0x677C, 0xAA56, 0x677D, 0xCCE4, 0x677E, 0xAA51, 0x677F, 0xAA4F,
+	0x6781, 0xCCE5, 0x6783, 0xCCE3, 0x6784, 0xCCDB, 0x6785, 0xCCD3,
+	0x6786, 0xCCDA, 0x6787, 0xAA4A, 0x6789, 0xAA50, 0x678B, 0xAA44,
+	0x678C, 0xCCDE, 0x678D, 0xCCDD, 0x678E, 0xCCD5, 0x6790, 0xAA52,
+	0x6791, 0xCCE1, 0x6792, 0xCCD6, 0x6793, 0xAA55, 0x6794, 0xCCE8,
+	0x6795, 0xAA45, 0x6797, 0xAA4C, 0x6798, 0xCCD9, 0x6799, 0xCCE2,
+	0x679A, 0xAA54, 0x679C, 0xAA47, 0x679D, 0xAA4B, 0x679F, 0xCCE0,
+	0x67AE, 0xCF5B, 0x67AF, 0xAC5C, 0x67B0, 0xAC69, 0x67B2, 0xCF56,
+	0x67B3, 0xCF4C, 0x67B4, 0xAC62, 0x67B5, 0xCF4A, 0x67B6, 0xAC5B,
+	0x67B7, 0xCF45, 0x67B8, 0xAC65, 0x67B9, 0xCF52, 0x67BA, 0xCEFE,
+	0x67BB, 0xCF41, 0x67C0, 0xCF44, 0x67C1, 0xCEFB, 0x67C2, 0xCF51,
+	0x67C3, 0xCF61, 0x67C4, 0xAC60, 0x67C5, 0xCF46, 0x67C6, 0xCF58,
+	0x67C8, 0xCEFD, 0x67C9, 0xCF5F, 0x67CA, 0xCF60, 0x67CB, 0xCF63,
+	0x67CC, 0xCF5A, 0x67CD, 0xCF4B, 0x67CE, 0xCF53, 0x67CF, 0xAC66,
+	0x67D0, 0xAC59, 0x67D1, 0xAC61, 0x67D2, 0xAC6D, 0x67D3, 0xAC56,
+	0x67D4, 0xAC58, 0x67D8, 0xCF43, 0x67D9, 0xAC6A, 0x67DA, 0xAC63,
+	0x67DB, 0xCF5D, 0x67DC, 0xCF40, 0x67DD, 0xAC6C, 0x67DE, 0xAC67,
+	0x67DF, 0xCF49, 0x67E2, 0xAC6B, 0x67E3, 0xCF50, 0x67E4, 0xCF48,
+	0x67E5, 0xAC64, 0x67E6, 0xCF5C, 0x67E7, 0xCF54, 0x67E9, 0xAC5E,
+	0x67EA, 0xCF62, 0x67EB, 0xCF47, 0x67EC, 0xAC5A, 0x67ED, 0xCF59,
+	0x67EE, 0xCF4F, 0x67EF, 0xAC5F, 0x67F0, 0xCF55, 0x67F1, 0xAC57,
+	0x67F2, 0xCEFC, 0x67F3, 0xAC68, 0x67F4, 0xAEE3, 0x67F5, 0xAC5D,
+	0x67F6, 0xCF4E, 0x67F7, 0xCF4D, 0x67F8, 0xCF42, 0x67FA, 0xCF5E,
+	0x67FC, 0xCF57, 0x67FF, 0xAC55, 0x6812, 0xD1EC, 0x6813, 0xAEEA,
+	0x6814, 0xD1ED, 0x6816, 0xD1E1, 0x6817, 0xAEDF, 0x6818, 0xAEEB,
+	0x681A, 0xD1DA, 0x681C, 0xD1E3, 0x681D, 0xD1EB, 0x681F, 0xD1D9,
+	0x6820, 0xD1F4, 0x6821, 0xAED5, 0x6825, 0xD1F3, 0x6826, 0xD1EE,
+	0x6828, 0xD1EF, 0x6829, 0xAEDD, 0x682A, 0xAEE8, 0x682B, 0xD1E5,
+	0x682D, 0xD1E6, 0x682E, 0xD1F0, 0x682F, 0xD1E7, 0x6831, 0xD1E2,
+	0x6832, 0xD1DC, 0x6833, 0xD1DD, 0x6834, 0xD1EA, 0x6835, 0xD1E4,
+	0x6838, 0xAED6, 0x6839, 0xAEDA, 0x683A, 0xD1F2, 0x683B, 0xD1DE,
+	0x683C, 0xAEE6, 0x683D, 0xAEE2, 0x6840, 0xAEE5, 0x6841, 0xAEEC,
+	0x6842, 0xAEDB, 0x6843, 0xAEE7, 0x6844, 0xD1E9, 0x6845, 0xAEE9,
+	0x6846, 0xAED8, 0x6848, 0xAED7, 0x6849, 0xD1DB, 0x684B, 0xD1DF,
+	0x684C, 0xAEE0, 0x684D, 0xD1F1, 0x684E, 0xD1E8, 0x684F, 0xD1E0,
+	0x6850, 0xAEE4, 0x6851, 0xAEE1, 0x6853, 0xAED9, 0x6854, 0xAEDC,
+	0x686B, 0xD5C4, 0x686D, 0xD5B4, 0x686E, 0xD5B5, 0x686F, 0xD5B9,
+	0x6871, 0xD5C8, 0x6872, 0xD5C5, 0x6874, 0xD5BE, 0x6875, 0xD5BD,
+	0x6876, 0xB1ED, 0x6877, 0xD5C1, 0x6878, 0xD5D0, 0x6879, 0xD5B0,
+	0x687B, 0xD5D1, 0x687C, 0xD5C3, 0x687D, 0xD5D5, 0x687E, 0xD5C9,
+	0x687F, 0xB1EC, 0x6880, 0xD5C7, 0x6881, 0xB1E7, 0x6882, 0xB1FC,
+	0x6883, 0xB1F2, 0x6885, 0xB1F6, 0x6886, 0xB1F5, 0x6887, 0xD5B1,
+	0x6889, 0xD5CE, 0x688A, 0xD5D4, 0x688B, 0xD5CC, 0x688C, 0xD5D3,
+	0x688F, 0xD5C0, 0x6890, 0xD5B2, 0x6891, 0xD5D2, 0x6892, 0xD5C2,
+	0x6893, 0xB1EA, 0x6894, 0xB1F7, 0x6896, 0xD5CB, 0x6897, 0xB1F0,
+	0x689B, 0xD5CA, 0x689C, 0xD5B3, 0x689D, 0xB1F8, 0x689F, 0xB1FA,
+	0x68A0, 0xD5CD, 0x68A1, 0xB1FB, 0x68A2, 0xB1E9, 0x68A3, 0xD5BA,
+	0x68A4, 0xD5CF, 0x68A7, 0xB1EF, 0x68A8, 0xB1F9, 0x68A9, 0xD5BC,
+	0x68AA, 0xD5C6, 0x68AB, 0xD5B7, 0x68AC, 0xD5BB, 0x68AD, 0xB1F4,
+	0x68AE, 0xD5B6, 0x68AF, 0xB1E8, 0x68B0, 0xB1F1, 0x68B1, 0xB1EE,
+	0x68B2, 0xD5BF, 0x68B3, 0xAEDE, 0x68B4, 0xD9C0, 0x68B5, 0xB1EB,
+	0x68C4, 0xB1F3, 0x68C6, 0xD9C3, 0x68C7, 0xD9D9, 0x68C8, 0xD9CE,
+	0x68C9, 0xB4D6, 0x68CB, 0xB4D1, 0x68CC, 0xD9BD, 0x68CD, 0xB4D2,
+	0x68CE, 0xD9CD, 0x68D0, 0xD9C6, 0x68D1, 0xD9D3, 0x68D2, 0xB4CE,
+	0x68D3, 0xD9AB, 0x68D4, 0xD9D5, 0x68D5, 0xB4C4, 0x68D6, 0xD9B3,
+	0x68D7, 0xB4C7, 0x68D8, 0xB4C6, 0x68DA, 0xB4D7, 0x68DC, 0xD9AD,
+	0x68DD, 0xD9CF, 0x68DE, 0xD9D0, 0x68DF, 0xB4C9, 0x68E0, 0xB4C5,
+	0x68E1, 0xD9BB, 0x68E3, 0xB4D0, 0x68E4, 0xD9B6, 0x68E6, 0xD9D1,
+	0x68E7, 0xB4CC, 0x68E8, 0xD9C9, 0x68E9, 0xD9D6, 0x68EA, 0xD9B0,
+	0x68EB, 0xD9B5, 0x68EC, 0xD9AF, 0x68EE, 0xB4CB, 0x68EF, 0xD9C2,
+	0x68F0, 0xDDDE, 0x68F1, 0xD9B1, 0x68F2, 0xB4CF, 0x68F3, 0xD9BA,
+	0x68F4, 0xD9D2, 0x68F5, 0xB4CA, 0x68F6, 0xD9B7, 0x68F7, 0xD9B4,
+	0x68F8, 0xD9C5, 0x68F9, 0xB4CD, 0x68FA, 0xB4C3, 0x68FB, 0xB4D9,
+	0x68FC, 0xD9C8, 0x68FD, 0xD9C7, 0x6904, 0xD9AC, 0x6905, 0xB4C8,
+	0x6906, 0xD9D4, 0x6907, 0xD9BC, 0x6908, 0xD9BE, 0x690A, 0xD9CB,
+	0x690B, 0xD9CA, 0x690C, 0xD9AA, 0x690D, 0xB4D3, 0x690E, 0xB4D5,
+	0x690F, 0xD9B2, 0x6910, 0xD9B9, 0x6911, 0xD9C1, 0x6912, 0xB4D4,
+	0x6913, 0xD9B8, 0x6914, 0xD9C4, 0x6915, 0xD9D7, 0x6917, 0xD9CC,
+	0x6925, 0xD9D8, 0x692A, 0xD9AE, 0x692F, 0xDDF2, 0x6930, 0xB7A6,
+	0x6932, 0xDDF0, 0x6933, 0xDDDB, 0x6934, 0xDDE0, 0x6935, 0xDDD9,
+	0x6937, 0xDDEC, 0x6938, 0xDDCB, 0x6939, 0xDDD2, 0x693B, 0xDDEA,
+	0x693C, 0xDDF4, 0x693D, 0xDDDC, 0x693F, 0xDDCF, 0x6940, 0xDDE2,
+	0x6941, 0xDDE7, 0x6942, 0xDDD3, 0x6944, 0xDDE4, 0x6945, 0xDDD0,
+	0x6948, 0xDDD7, 0x6949, 0xDDD8, 0x694A, 0xB7A8, 0x694B, 0xDDEB,
+	0x694C, 0xDDE9, 0x694E, 0xDDCC, 0x694F, 0xDDEE, 0x6951, 0xDDEF,
+	0x6952, 0xDDF1, 0x6953, 0xB7AC, 0x6954, 0xB7A4, 0x6956, 0xD5B8,
+	0x6957, 0xDDD4, 0x6958, 0xDDE6, 0x6959, 0xDDD5, 0x695A, 0xB7A1,
+	0x695B, 0xB7B1, 0x695C, 0xDDED, 0x695D, 0xB7AF, 0x695E, 0xB7AB,
+	0x695F, 0xDDCA, 0x6960, 0xB7A3, 0x6962, 0xDDCD, 0x6963, 0xB7B0,
+	0x6965, 0xDDDD, 0x6966, 0xDDC9, 0x6968, 0xB7A9, 0x6969, 0xDDE1,
+	0x696A, 0xDDD1, 0x696B, 0xB7AA, 0x696C, 0xDDDA, 0x696D, 0xB77E,
+	0x696E, 0xB4D8, 0x696F, 0xDDE3, 0x6970, 0xD9BF, 0x6971, 0xDDCE,
+	0x6974, 0xDDE8, 0x6975, 0xB7A5, 0x6976, 0xDDE5, 0x6977, 0xB7A2,
+	0x6978, 0xDDDF, 0x6979, 0xB7AD, 0x697A, 0xDDD6, 0x697B, 0xDDF3,
+	0x6982, 0xB7A7, 0x6983, 0xDEC6, 0x6986, 0xB7AE, 0x698D, 0xE24A,
+	0x698E, 0xE248, 0x6990, 0xE25E, 0x6991, 0xE246, 0x6993, 0xE258,
+	0x6994, 0xB77D, 0x6995, 0xBA5F, 0x6996, 0xE242, 0x6997, 0xE25D,
+	0x6999, 0xE247, 0x699A, 0xE255, 0x699B, 0xBA64, 0x699C, 0xBA5D,
+	0x699E, 0xE25B, 0x69A0, 0xE240, 0x69A1, 0xE25A, 0x69A3, 0xBA6F,
+	0x69A4, 0xE251, 0x69A5, 0xE261, 0x69A6, 0xBA6D, 0x69A7, 0xE249,
+	0x69A8, 0xBA5E, 0x69A9, 0xE24B, 0x69AA, 0xE259, 0x69AB, 0xBA67,
+	0x69AC, 0xE244, 0x69AD, 0xBA6B, 0x69AE, 0xBA61, 0x69AF, 0xE24D,
+	0x69B0, 0xE243, 0x69B1, 0xE1FC, 0x69B3, 0xE257, 0x69B4, 0xBA68,
+	0x69B5, 0xE260, 0x69B6, 0xE1FD, 0x69B7, 0xBA65, 0x69B9, 0xE253,
+	0x69BB, 0xBA66, 0x69BC, 0xE245, 0x69BD, 0xE250, 0x69BE, 0xE24C,
+	0x69BF, 0xE24E, 0x69C1, 0xBA60, 0x69C2, 0xE25F, 0x69C3, 0xBA6E,
+	0x69C4, 0xE24F, 0x69C6, 0xE262, 0x69C9, 0xE1FE, 0x69CA, 0xE254,
+	0x69CB, 0xBA63, 0x69CC, 0xBA6C, 0x69CD, 0xBA6A, 0x69CE, 0xE241,
+	0x69CF, 0xE256, 0x69D0, 0xBA69, 0x69D3, 0xBA62, 0x69D4, 0xE252,
+	0x69D9, 0xE25C, 0x69E2, 0xE5D5, 0x69E4, 0xE5D1, 0x69E5, 0xE5CD,
+	0x69E6, 0xE5E1, 0x69E7, 0xE5DE, 0x69E8, 0xBCCD, 0x69EB, 0xE5E5,
+	0x69EC, 0xE5D4, 0x69ED, 0xBCD8, 0x69EE, 0xE5DB, 0x69F1, 0xE5D0,
+	0x69F2, 0xE5DA, 0x69F3, 0xBCD5, 0x69F4, 0xE5EE, 0x69F6, 0xE5EB,
+	0x69F7, 0xE5DD, 0x69F8, 0xE5CE, 0x69FB, 0xE5E2, 0x69FC, 0xE5E4,
+	0x69FD, 0xBCD1, 0x69FE, 0xE5D8, 0x69FF, 0xE5D3, 0x6A00, 0xE5CA,
+	0x6A01, 0xBCCE, 0x6A02, 0xBCD6, 0x6A04, 0xE5E7, 0x6A05, 0xBCD7,
+	0x6A06, 0xE5CB, 0x6A07, 0xE5ED, 0x6A08, 0xE5E0, 0x6A09, 0xE5E6,
+	0x6A0A, 0xBCD4, 0x6A0D, 0xE5E3, 0x6A0F, 0xE5EA, 0x6A11, 0xBCD9,
+	0x6A13, 0xBCD3, 0x6A14, 0xE5DC, 0x6A15, 0xE5CF, 0x6A16, 0xE5EF,
+	0x6A17, 0xE5CC, 0x6A18, 0xE5E8, 0x6A19, 0xBCD0, 0x6A1B, 0xE5D6,
+	0x6A1D, 0xE5D7, 0x6A1E, 0xBCCF, 0x6A1F, 0xBCCC, 0x6A20, 0xE5D2,
+	0x6A21, 0xBCD2, 0x6A23, 0xBCCB, 0x6A25, 0xE5E9, 0x6A26, 0xE5EC,
+	0x6A27, 0xE5D9, 0x6A28, 0xE9CA, 0x6A32, 0xE9C2, 0x6A34, 0xE9BE,
+	0x6A35, 0xBEF6, 0x6A38, 0xBEEB, 0x6A39, 0xBEF0, 0x6A3A, 0xBEEC,
+	0x6A3B, 0xE9CC, 0x6A3C, 0xE9D7, 0x6A3D, 0xBEEA, 0x6A3E, 0xE9C4,
+	0x6A3F, 0xE9CD, 0x6A40, 0xE5DF, 0x6A41, 0xE9CE, 0x6A44, 0xBEF1,
+	0x6A46, 0xE9DD, 0x6A47, 0xBEF5, 0x6A48, 0xBEF8, 0x6A49, 0xE9C0,
+	0x6A4B, 0xBEF4, 0x6A4D, 0xE9DB, 0x6A4E, 0xE9DC, 0x6A4F, 0xE9D2,
+	0x6A50, 0xE9D1, 0x6A51, 0xE9C9, 0x6A54, 0xE9D3, 0x6A55, 0xE9DA,
+	0x6A56, 0xE9D9, 0x6A58, 0xBEEF, 0x6A59, 0xBEED, 0x6A5A, 0xE9CB,
+	0x6A5B, 0xE9C8, 0x6A5D, 0xE9C5, 0x6A5E, 0xE9D8, 0x6A5F, 0xBEF7,
+	0x6A60, 0xE9D6, 0x6A61, 0xBEF3, 0x6A62, 0xBEF2, 0x6A64, 0xE9D0,
+	0x6A66, 0xE9BF, 0x6A67, 0xE9C1, 0x6A68, 0xE9C3, 0x6A69, 0xE9D5,
+	0x6A6A, 0xE9CF, 0x6A6B, 0xBEEE, 0x6A6D, 0xE9C6, 0x6A6F, 0xE9D4,
+	0x6A76, 0xE9C7, 0x6A7E, 0xC0CF, 0x6A7F, 0xED45, 0x6A80, 0xC0C8,
+	0x6A81, 0xECF5, 0x6A83, 0xED41, 0x6A84, 0xC0CA, 0x6A85, 0xED48,
+	0x6A87, 0xECFC, 0x6A89, 0xECF7, 0x6A8C, 0xED49, 0x6A8D, 0xECF3,
+	0x6A8E, 0xECFE, 0x6A90, 0xC0D1, 0x6A91, 0xED44, 0x6A92, 0xED4A,
+	0x6A93, 0xECFD, 0x6A94, 0xC0C9, 0x6A95, 0xED40, 0x6A96, 0xECF4,
+	0x6A97, 0xC0D0, 0x6A9A, 0xED47, 0x6A9B, 0xECF9, 0x6A9C, 0xC0CC,
+	0x6A9E, 0xECFB, 0x6A9F, 0xECF8, 0x6AA0, 0xC0D2, 0x6AA1, 0xECFA,
+	0x6AA2, 0xC0CB, 0x6AA3, 0xC0CE, 0x6AA4, 0xED43, 0x6AA5, 0xECF6,
+	0x6AA6, 0xED46, 0x6AA8, 0xED42, 0x6AAC, 0xC263, 0x6AAD, 0xEFE7,
+	0x6AAE, 0xC268, 0x6AAF, 0xC269, 0x6AB3, 0xC262, 0x6AB4, 0xEFE6,
+	0x6AB6, 0xEFE3, 0x6AB7, 0xEFE4, 0x6AB8, 0xC266, 0x6AB9, 0xEFDE,
+	0x6ABA, 0xEFE2, 0x6ABB, 0xC265, 0x6ABD, 0xEFDF, 0x6AC2, 0xC267,
+	0x6AC3, 0xC264, 0x6AC5, 0xEFDD, 0x6AC6, 0xEFE1, 0x6AC7, 0xEFE5,
+	0x6ACB, 0xF251, 0x6ACC, 0xF24E, 0x6ACD, 0xF257, 0x6ACF, 0xF256,
+	0x6AD0, 0xF254, 0x6AD1, 0xF24F, 0x6AD3, 0xC372, 0x6AD9, 0xF250,
+	0x6ADA, 0xC371, 0x6ADB, 0xC0CD, 0x6ADC, 0xF253, 0x6ADD, 0xC370,
+	0x6ADE, 0xF258, 0x6ADF, 0xF252, 0x6AE0, 0xF24D, 0x6AE1, 0xEFE0,
+	0x6AE5, 0xC36F, 0x6AE7, 0xF24C, 0x6AE8, 0xF456, 0x6AEA, 0xF455,
+	0x6AEB, 0xF255, 0x6AEC, 0xC468, 0x6AEE, 0xF459, 0x6AEF, 0xF45A,
+	0x6AF0, 0xF454, 0x6AF1, 0xF458, 0x6AF3, 0xF453, 0x6AF8, 0xF5D1,
+	0x6AF9, 0xF457, 0x6AFA, 0xC4E7, 0x6AFB, 0xC4E5, 0x6AFC, 0xF5CF,
+	0x6B00, 0xF5D2, 0x6B02, 0xF5CE, 0x6B03, 0xF5D0, 0x6B04, 0xC4E6,
+	0x6B08, 0xF6E5, 0x6B09, 0xF6E6, 0x6B0A, 0xC576, 0x6B0B, 0xF6E4,
+	0x6B0F, 0xF7E2, 0x6B10, 0xC5CF, 0x6B11, 0xF7E0, 0x6B12, 0xF7E1,
+	0x6B13, 0xF8AC, 0x6B16, 0xC656, 0x6B17, 0xF8F3, 0x6B18, 0xF8F1,
+	0x6B19, 0xF8F2, 0x6B1A, 0xF8F4, 0x6B1E, 0xF9BB, 0x6B20, 0xA4ED,
+	0x6B21, 0xA6B8, 0x6B23, 0xAA59, 0x6B25, 0xCCE9, 0x6B28, 0xCF64,
+	0x6B2C, 0xD1F5, 0x6B2D, 0xD1F7, 0x6B2F, 0xD1F6, 0x6B31, 0xD1F8,
+	0x6B32, 0xB1FD, 0x6B33, 0xD5D7, 0x6B34, 0xD1F9, 0x6B36, 0xD5D6,
+	0x6B37, 0xD5D8, 0x6B38, 0xD5D9, 0x6B39, 0xD9DA, 0x6B3A, 0xB4DB,
+	0x6B3B, 0xD9DB, 0x6B3C, 0xD9DD, 0x6B3D, 0xB4DC, 0x6B3E, 0xB4DA,
+	0x6B3F, 0xD9DC, 0x6B41, 0xDDFA, 0x6B42, 0xDDF8, 0x6B43, 0xDDF7,
+	0x6B45, 0xDDF6, 0x6B46, 0xDDF5, 0x6B47, 0xB7B2, 0x6B48, 0xDDF9,
+	0x6B49, 0xBA70, 0x6B4A, 0xE263, 0x6B4B, 0xE265, 0x6B4C, 0xBA71,
+	0x6B4D, 0xE264, 0x6B4E, 0xBCDB, 0x6B50, 0xBCDA, 0x6B51, 0xE5F0,
+	0x6B54, 0xE9DF, 0x6B55, 0xE9DE, 0x6B56, 0xE9E0, 0x6B59, 0xBEF9,
+	0x6B5B, 0xED4B, 0x6B5C, 0xC0D3, 0x6B5E, 0xEFE8, 0x6B5F, 0xC26A,
+	0x6B60, 0xF259, 0x6B61, 0xC577, 0x6B62, 0xA4EE, 0x6B63, 0xA5BF,
+	0x6B64, 0xA6B9, 0x6B65, 0xA842, 0x6B66, 0xAA5A, 0x6B67, 0xAA5B,
+	0x6B6A, 0xAC6E, 0x6B6D, 0xD1FA, 0x6B72, 0xB7B3, 0x6B76, 0xE6D1,
+	0x6B77, 0xBEFA, 0x6B78, 0xC26B, 0x6B79, 0xA4EF, 0x6B7B, 0xA6BA,
+	0x6B7E, 0xCCEB, 0x6B7F, 0xAA5C, 0x6B80, 0xCCEA, 0x6B82, 0xCF65,
+	0x6B83, 0xAC6F, 0x6B84, 0xCF66, 0x6B86, 0xAC70, 0x6B88, 0xD1FC,
+	0x6B89, 0xAEEE, 0x6B8A, 0xAEED, 0x6B8C, 0xD5DE, 0x6B8D, 0xD5DC,
+	0x6B8E, 0xD5DD, 0x6B8F, 0xD5DB, 0x6B91, 0xD5DA, 0x6B94, 0xD9DE,
+	0x6B95, 0xD9E1, 0x6B96, 0xB4DE, 0x6B97, 0xD9DF, 0x6B98, 0xB4DD,
+	0x6B99, 0xD9E0, 0x6B9B, 0xDDFB, 0x6B9E, 0xE266, 0x6B9F, 0xE267,
+	0x6BA0, 0xE268, 0x6BA2, 0xE5F3, 0x6BA3, 0xE5F2, 0x6BA4, 0xBCDC,
+	0x6BA5, 0xE5F1, 0x6BA6, 0xE5F4, 0x6BA7, 0xE9E1, 0x6BAA, 0xE9E2,
+	0x6BAB, 0xE9E3, 0x6BAD, 0xED4C, 0x6BAE, 0xC0D4, 0x6BAF, 0xC26C,
+	0x6BB0, 0xF25A, 0x6BB2, 0xC4E8, 0x6BB3, 0xC95F, 0x6BB5, 0xAC71,
+	0x6BB6, 0xCF67, 0x6BB7, 0xAEEF, 0x6BBA, 0xB1FE, 0x6BBC, 0xB4DF,
+	0x6BBD, 0xD9E2, 0x6BBF, 0xB7B5, 0x6BC0, 0xB7B4, 0x6BC3, 0xE269,
+	0x6BC4, 0xE26A, 0x6BC5, 0xBCDD, 0x6BC6, 0xBCDE, 0x6BC7, 0xE9E5,
+	0x6BC8, 0xE9E4, 0x6BC9, 0xEFE9, 0x6BCA, 0xF7E3, 0x6BCB, 0xA4F0,
+	0x6BCC, 0xC960, 0x6BCD, 0xA5C0, 0x6BCF, 0xA843, 0x6BD0, 0xCB48,
+	0x6BD2, 0xAC72, 0x6BD3, 0xB7B6, 0x6BD4, 0xA4F1, 0x6BD6, 0xCF68,
+	0x6BD7, 0xAC73, 0x6BD8, 0xCF69, 0x6BDA, 0xC0D5, 0x6BDB, 0xA4F2,
+	0x6BDE, 0xCCEC, 0x6BE0, 0xCF6A, 0x6BE2, 0xD242, 0x6BE3, 0xD241,
+	0x6BE4, 0xD1FE, 0x6BE6, 0xD1FD, 0x6BE7, 0xD243, 0x6BE8, 0xD240,
+	0x6BEB, 0xB240, 0x6BEC, 0xB241, 0x6BEF, 0xB4E0, 0x6BF0, 0xD9E3,
+	0x6BF2, 0xD9E4, 0x6BF3, 0xD9E5, 0x6BF7, 0xDE41, 0x6BF8, 0xDE42,
+	0x6BF9, 0xDE40, 0x6BFB, 0xDDFD, 0x6BFC, 0xDDFE, 0x6BFD, 0xB7B7,
+	0x6BFE, 0xE26B, 0x6BFF, 0xE5F7, 0x6C00, 0xE5F6, 0x6C01, 0xE5F5,
+	0x6C02, 0xE5F8, 0x6C03, 0xE9E7, 0x6C04, 0xE9E6, 0x6C05, 0xBEFB,
+	0x6C06, 0xE9E8, 0x6C08, 0xC0D6, 0x6C09, 0xED4D, 0x6C0B, 0xEFEA,
+	0x6C0C, 0xF25B, 0x6C0D, 0xF6E7, 0x6C0F, 0xA4F3, 0x6C10, 0xA5C2,
+	0x6C11, 0xA5C1, 0x6C13, 0xAA5D, 0x6C14, 0xC961, 0x6C15, 0xC97E,
+	0x6C16, 0xA6BB, 0x6C18, 0xC9F7, 0x6C19, 0xCB49, 0x6C1A, 0xCB4A,
+	0x6C1B, 0xAA5E, 0x6C1D, 0xCCED, 0x6C1F, 0xAC74, 0x6C20, 0xCF6B,
+	0x6C21, 0xCF6C, 0x6C23, 0xAEF0, 0x6C24, 0xAEF4, 0x6C25, 0xD244,
+	0x6C26, 0xAEF3, 0x6C27, 0xAEF1, 0x6C28, 0xAEF2, 0x6C2A, 0xD5DF,
+	0x6C2B, 0xB242, 0x6C2C, 0xB4E3, 0x6C2E, 0xB4E1, 0x6C2F, 0xB4E2,
+	0x6C30, 0xD9E6, 0x6C33, 0xBA72, 0x6C34, 0xA4F4, 0x6C36, 0xC9A1,
+	0x6C38, 0xA5C3, 0x6C3B, 0xC9A4, 0x6C3E, 0xA5C6, 0x6C3F, 0xC9A3,
+	0x6C40, 0xA5C5, 0x6C41, 0xA5C4, 0x6C42, 0xA844, 0x6C43, 0xC9A2,
+	0x6C46, 0xC9F8, 0x6C4A, 0xC9FC, 0x6C4B, 0xC9FE, 0x6C4C, 0xCA40,
+	0x6C4D, 0xA6C5, 0x6C4E, 0xA6C6, 0x6C4F, 0xC9FB, 0x6C50, 0xA6C1,
+	0x6C52, 0xC9F9, 0x6C54, 0xC9FD, 0x6C55, 0xA6C2, 0x6C57, 0xA6BD,
+	0x6C59, 0xA6BE, 0x6C5B, 0xA6C4, 0x6C5C, 0xC9FA, 0x6C5D, 0xA6BC,
+	0x6C5E, 0xA845, 0x6C5F, 0xA6BF, 0x6C60, 0xA6C0, 0x6C61, 0xA6C3,
+	0x6C65, 0xCB5B, 0x6C66, 0xCB59, 0x6C67, 0xCB4C, 0x6C68, 0xA851,
+	0x6C69, 0xCB53, 0x6C6A, 0xA84C, 0x6C6B, 0xCB4D, 0x6C6D, 0xCB55,
+	0x6C6F, 0xCB52, 0x6C70, 0xA84F, 0x6C71, 0xCB51, 0x6C72, 0xA856,
+	0x6C73, 0xCB5A, 0x6C74, 0xA858, 0x6C76, 0xA85A, 0x6C78, 0xCB4B,
+	0x6C7A, 0xA84D, 0x6C7B, 0xCB5C, 0x6C7D, 0xA854, 0x6C7E, 0xA857,
+	0x6C80, 0xCD45, 0x6C81, 0xA847, 0x6C82, 0xA85E, 0x6C83, 0xA855,
+	0x6C84, 0xCB4E, 0x6C85, 0xA84A, 0x6C86, 0xA859, 0x6C87, 0xCB56,
+	0x6C88, 0xA848, 0x6C89, 0xA849, 0x6C8A, 0xCD43, 0x6C8B, 0xCB4F,
+	0x6C8C, 0xA850, 0x6C8D, 0xA85B, 0x6C8E, 0xCB5D, 0x6C8F, 0xCB50,
+	0x6C90, 0xA84E, 0x6C92, 0xA853, 0x6C93, 0xCCEE, 0x6C94, 0xA85C,
+	0x6C95, 0xCB57, 0x6C96, 0xA852, 0x6C98, 0xA85D, 0x6C99, 0xA846,
+	0x6C9A, 0xCB54, 0x6C9B, 0xA84B, 0x6C9C, 0xCB58, 0x6C9D, 0xCD44,
+	0x6CAB, 0xAA6A, 0x6CAC, 0xAA7A, 0x6CAD, 0xCCF5, 0x6CAE, 0xAA71,
+	0x6CB0, 0xCD4B, 0x6CB1, 0xAA62, 0x6CB3, 0xAA65, 0x6CB4, 0xCD42,
+	0x6CB6, 0xCCF3, 0x6CB7, 0xCCF7, 0x6CB8, 0xAA6D, 0x6CB9, 0xAA6F,
+	0x6CBA, 0xCCFA, 0x6CBB, 0xAA76, 0x6CBC, 0xAA68, 0x6CBD, 0xAA66,
+	0x6CBE, 0xAA67, 0x6CBF, 0xAA75, 0x6CC0, 0xCD47, 0x6CC1, 0xAA70,
+	0x6CC2, 0xCCF9, 0x6CC3, 0xCCFB, 0x6CC4, 0xAA6E, 0x6CC5, 0xAA73,
+	0x6CC6, 0xCCFC, 0x6CC7, 0xCD4A, 0x6CC9, 0xAC75, 0x6CCA, 0xAA79,
+	0x6CCC, 0xAA63, 0x6CCD, 0xCD49, 0x6CCF, 0xCD4D, 0x6CD0, 0xCCF8,
+	0x6CD1, 0xCD4F, 0x6CD2, 0xCD40, 0x6CD3, 0xAA6C, 0x6CD4, 0xCCF4,
+	0x6CD5, 0xAA6B, 0x6CD6, 0xAA7D, 0x6CD7, 0xAA72, 0x6CD9, 0xCCF2,
+	0x6CDA, 0xCF75, 0x6CDB, 0xAA78, 0x6CDC, 0xAA7C, 0x6CDD, 0xCD41,
+	0x6CDE, 0xCD46, 0x6CE0, 0xAA7E, 0x6CE1, 0xAA77, 0x6CE2, 0xAA69,
+	0x6CE3, 0xAA5F, 0x6CE5, 0xAA64, 0x6CE7, 0xCCF6, 0x6CE8, 0xAA60,
+	0x6CE9, 0xCD4E, 0x6CEB, 0xCCF0, 0x6CEC, 0xCCEF, 0x6CED, 0xCCFD,
+	0x6CEE, 0xCCF1, 0x6CEF, 0xAA7B, 0x6CF0, 0xAEF5, 0x6CF1, 0xAA74,
+	0x6CF2, 0xCCFE, 0x6CF3, 0xAA61, 0x6CF5, 0xACA6, 0x6CF9, 0xCD4C,
+	0x6D00, 0xCF7C, 0x6D01, 0xCFA1, 0x6D03, 0xCFA4, 0x6D04, 0xCF77,
+	0x6D07, 0xCFA7, 0x6D08, 0xCFAA, 0x6D09, 0xCFAC, 0x6D0A, 0xCF74,
+	0x6D0B, 0xAC76, 0x6D0C, 0xAC7B, 0x6D0D, 0xD249, 0x6D0E, 0xACAD,
+	0x6D0F, 0xCFA5, 0x6D10, 0xCFAD, 0x6D11, 0xCF7B, 0x6D12, 0xCF73,
+	0x6D16, 0xD264, 0x6D17, 0xAC7E, 0x6D18, 0xCFA2, 0x6D19, 0xCF78,
+	0x6D1A, 0xCF7A, 0x6D1B, 0xACA5, 0x6D1D, 0xCF7D, 0x6D1E, 0xAC7D,
+	0x6D1F, 0xCF70, 0x6D20, 0xCFA8, 0x6D22, 0xCFAB, 0x6D25, 0xAC7A,
+	0x6D27, 0xACA8, 0x6D28, 0xCF6D, 0x6D29, 0xACAA, 0x6D2A, 0xAC78,
+	0x6D2B, 0xACAE, 0x6D2C, 0xCFA9, 0x6D2D, 0xCF6F, 0x6D2E, 0xACAB,
+	0x6D2F, 0xD25E, 0x6D30, 0xCD48, 0x6D31, 0xAC7C, 0x6D32, 0xAC77,
+	0x6D33, 0xCF76, 0x6D34, 0xCF6E, 0x6D35, 0xACAC, 0x6D36, 0xACA4,
+	0x6D37, 0xCFA3, 0x6D38, 0xACA9, 0x6D39, 0xACA7, 0x6D3A, 0xCF79,
+	0x6D3B, 0xACA1, 0x6D3C, 0xCF71, 0x6D3D, 0xACA2, 0x6D3E, 0xACA3,
+	0x6D3F, 0xCF72, 0x6D40, 0xCFA6, 0x6D41, 0xAC79, 0x6D42, 0xCF7E,
+	0x6D58, 0xD24C, 0x6D59, 0xAEFD, 0x6D5A, 0xAF43, 0x6D5E, 0xD255,
+	0x6D5F, 0xD25B, 0x6D60, 0xD257, 0x6D61, 0xD24A, 0x6D62, 0xD24D,
+	0x6D63, 0xD246, 0x6D64, 0xD247, 0x6D65, 0xAF4A, 0x6D66, 0xAEFA,
+	0x6D67, 0xD256, 0x6D68, 0xD25F, 0x6D69, 0xAF45, 0x6D6A, 0xAEF6,
+	0x6D6C, 0xAF40, 0x6D6D, 0xD24E, 0x6D6E, 0xAF42, 0x6D6F, 0xD24F,
+	0x6D70, 0xD259, 0x6D74, 0xAF44, 0x6D75, 0xD268, 0x6D76, 0xD248,
+	0x6D77, 0xAEFC, 0x6D78, 0xAEFB, 0x6D79, 0xAF48, 0x6D7A, 0xD245,
+	0x6D7B, 0xD266, 0x6D7C, 0xD25A, 0x6D7D, 0xD267, 0x6D7E, 0xD261,
+	0x6D7F, 0xD253, 0x6D80, 0xD262, 0x6D82, 0xD25C, 0x6D83, 0xD265,
+	0x6D84, 0xD263, 0x6D85, 0xAF49, 0x6D86, 0xD254, 0x6D87, 0xAEF9,
+	0x6D88, 0xAEF8, 0x6D89, 0xAF41, 0x6D8A, 0xAF47, 0x6D8B, 0xD260,
+	0x6D8C, 0xAF46, 0x6D8D, 0xD251, 0x6D8E, 0xB243, 0x6D90, 0xD269,
+	0x6D91, 0xD250, 0x6D92, 0xD24B, 0x6D93, 0xAEFE, 0x6D94, 0xAF4B,
+	0x6D95, 0xAEF7, 0x6D97, 0xD258, 0x6D98, 0xD25D, 0x6DAA, 0xB265,
+	0x6DAB, 0xD5E1, 0x6DAC, 0xD5E5, 0x6DAE, 0xB252, 0x6DAF, 0xB250,
+	0x6DB2, 0xB247, 0x6DB3, 0xD5E3, 0x6DB4, 0xD5E2, 0x6DB5, 0xB25B,
+	0x6DB7, 0xD5E8, 0x6DB8, 0xB255, 0x6DBA, 0xD5FA, 0x6DBB, 0xD647,
+	0x6DBC, 0xB244, 0x6DBD, 0xD5F7, 0x6DBE, 0xD5F0, 0x6DBF, 0xB267,
+	0x6DC0, 0xD5E0, 0x6DC2, 0xD5FC, 0x6DC4, 0xB264, 0x6DC5, 0xB258,
+	0x6DC6, 0xB263, 0x6DC7, 0xB24E, 0x6DC8, 0xD5EC, 0x6DC9, 0xD5FE,
+	0x6DCA, 0xD5F6, 0x6DCB, 0xB24F, 0x6DCC, 0xB249, 0x6DCD, 0xD645,
+	0x6DCF, 0xD5FD, 0x6DD0, 0xD640, 0x6DD1, 0xB251, 0x6DD2, 0xB259,
+	0x6DD3, 0xD642, 0x6DD4, 0xD5EA, 0x6DD5, 0xD5FB, 0x6DD6, 0xD5EF,
+	0x6DD7, 0xD644, 0x6DD8, 0xB25E, 0x6DD9, 0xB246, 0x6DDA, 0xB25C,
+	0x6DDB, 0xD5F4, 0x6DDC, 0xD5F2, 0x6DDD, 0xD5F3, 0x6DDE, 0xB253,
+	0x6DDF, 0xD5EE, 0x6DE0, 0xD5ED, 0x6DE1, 0xB248, 0x6DE2, 0xD5E7,
+	0x6DE3, 0xD646, 0x6DE4, 0xB24A, 0x6DE5, 0xD5F1, 0x6DE6, 0xB268,
+	0x6DE8, 0xB262, 0x6DE9, 0xD5E6, 0x6DEA, 0xB25F, 0x6DEB, 0xB25D,
+	0x6DEC, 0xB266, 0x6DED, 0xD5F8, 0x6DEE, 0xB261, 0x6DEF, 0xD252,
+	0x6DF0, 0xD5F9, 0x6DF1, 0xB260, 0x6DF2, 0xD641, 0x6DF3, 0xB245,
+	0x6DF4, 0xD5F5, 0x6DF5, 0xB257, 0x6DF6, 0xD5E9, 0x6DF7, 0xB256,
+	0x6DF9, 0xB254, 0x6DFA, 0xB24C, 0x6DFB, 0xB24B, 0x6DFC, 0xD9E7,
+	0x6DFD, 0xD643, 0x6E00, 0xD5EB, 0x6E03, 0xD9FC, 0x6E05, 0xB24D,
+	0x6E19, 0xB541, 0x6E1A, 0xB25A, 0x6E1B, 0xB4EE, 0x6E1C, 0xD9F6,
+	0x6E1D, 0xB4FC, 0x6E1F, 0xD9EA, 0x6E20, 0xB4EB, 0x6E21, 0xB4E7,
+	0x6E22, 0xDA49, 0x6E23, 0xB4ED, 0x6E24, 0xB4F1, 0x6E25, 0xB4EC,
+	0x6E26, 0xB4F5, 0x6E27, 0xDA4D, 0x6E28, 0xDA44, 0x6E2B, 0xD9F1,
+	0x6E2C, 0xB4FA, 0x6E2D, 0xB4F4, 0x6E2E, 0xD9FD, 0x6E2F, 0xB4E4,
+	0x6E30, 0xDA4A, 0x6E31, 0xDA43, 0x6E32, 0xB4E8, 0x6E33, 0xD9F7,
+	0x6E34, 0xB4F7, 0x6E35, 0xDA55, 0x6E36, 0xDA56, 0x6E38, 0xB4E5,
+	0x6E39, 0xDA48, 0x6E3A, 0xB4F9, 0x6E3B, 0xD9FB, 0x6E3C, 0xD9ED,
+	0x6E3D, 0xD9EE, 0x6E3E, 0xB4FD, 0x6E3F, 0xD9F2, 0x6E40, 0xD9F9,
+	0x6E41, 0xD9F3, 0x6E43, 0xB4FB, 0x6E44, 0xB544, 0x6E45, 0xD9EF,
+	0x6E46, 0xD9E8, 0x6E47, 0xD9E9, 0x6E49, 0xD9EB, 0x6E4A, 0xB4EA,
+	0x6E4B, 0xD9F8, 0x6E4D, 0xB4F8, 0x6E4E, 0xB542, 0x6E51, 0xD9FA,
+	0x6E52, 0xDA53, 0x6E53, 0xDA4B, 0x6E54, 0xB4E6, 0x6E55, 0xDA51,
+	0x6E56, 0xB4F2, 0x6E58, 0xB4F0, 0x6E5A, 0xDA57, 0x6E5B, 0xB4EF,
+	0x6E5C, 0xDA41, 0x6E5D, 0xD9F4, 0x6E5E, 0xD9FE, 0x6E5F, 0xB547,
+	0x6E60, 0xDA45, 0x6E61, 0xDA42, 0x6E62, 0xD9F0, 0x6E63, 0xB543,
+	0x6E64, 0xDA4F, 0x6E65, 0xDA4C, 0x6E66, 0xDA54, 0x6E67, 0xB4E9,
+	0x6E68, 0xDA40, 0x6E69, 0xB546, 0x6E6B, 0xDA47, 0x6E6E, 0xB4F3,
+	0x6E6F, 0xB4F6, 0x6E71, 0xDA46, 0x6E72, 0xB545, 0x6E73, 0xD9F5,
+	0x6E74, 0xD5E4, 0x6E77, 0xDA50, 0x6E78, 0xDA4E, 0x6E79, 0xDA52,
+	0x6E88, 0xD9EC, 0x6E89, 0xB540, 0x6E8D, 0xDE61, 0x6E8E, 0xDE60,
+	0x6E8F, 0xDE46, 0x6E90, 0xB7BD, 0x6E92, 0xDE5F, 0x6E93, 0xDE49,
+	0x6E94, 0xDE4A, 0x6E96, 0xB7C7, 0x6E97, 0xDE68, 0x6E98, 0xB7C2,
+	0x6E99, 0xDE5E, 0x6E9B, 0xDE43, 0x6E9C, 0xB7C8, 0x6E9D, 0xB7BE,
+	0x6E9E, 0xDE52, 0x6E9F, 0xDE48, 0x6EA0, 0xDE4B, 0x6EA1, 0xDE63,
+	0x6EA2, 0xB7B8, 0x6EA3, 0xDE6A, 0x6EA4, 0xDE62, 0x6EA5, 0xB7C1,
+	0x6EA6, 0xDE57, 0x6EA7, 0xB7CC, 0x6EAA, 0xB7CB, 0x6EAB, 0xB7C5,
+	0x6EAE, 0xDE69, 0x6EAF, 0xB7B9, 0x6EB0, 0xDE55, 0x6EB1, 0xDE4C,
+	0x6EB2, 0xDE59, 0x6EB3, 0xDE65, 0x6EB4, 0xB7CD, 0x6EB6, 0xB7BB,
+	0x6EB7, 0xDE54, 0x6EB9, 0xDE4D, 0x6EBA, 0xB7C4, 0x6EBC, 0xB7C3,
+	0x6EBD, 0xDE50, 0x6EBE, 0xDE5A, 0x6EBF, 0xDE64, 0x6EC0, 0xDE47,
+	0x6EC1, 0xDE51, 0x6EC2, 0xB7BC, 0x6EC3, 0xDE5B, 0x6EC4, 0xB7C9,
+	0x6EC5, 0xB7C0, 0x6EC6, 0xDE4E, 0x6EC7, 0xB7BF, 0x6EC8, 0xDE45,
+	0x6EC9, 0xDE53, 0x6ECA, 0xDE67, 0x6ECB, 0xB4FE, 0x6ECC, 0xBAB0,
+	0x6ECD, 0xDE56, 0x6ECE, 0xE26C, 0x6ECF, 0xDE58, 0x6ED0, 0xDE66,
+	0x6ED1, 0xB7C6, 0x6ED2, 0xDE4F, 0x6ED3, 0xB7BA, 0x6ED4, 0xB7CA,
+	0x6ED5, 0xBCF0, 0x6ED6, 0xDE44, 0x6ED8, 0xDE5D, 0x6EDC, 0xDE5C,
+	0x6EEB, 0xE2AA, 0x6EEC, 0xBAAD, 0x6EED, 0xE27D, 0x6EEE, 0xE2A4,
+	0x6EEF, 0xBAA2, 0x6EF1, 0xE26E, 0x6EF2, 0xBAAF, 0x6EF4, 0xBA77,
+	0x6EF5, 0xE26D, 0x6EF6, 0xE2B0, 0x6EF7, 0xBAB1, 0x6EF8, 0xE271,
+	0x6EF9, 0xE2A3, 0x6EFB, 0xE273, 0x6EFC, 0xE2B3, 0x6EFD, 0xE2AF,
+	0x6EFE, 0xBA75, 0x6EFF, 0xBAA1, 0x6F00, 0xE653, 0x6F01, 0xBAAE,
+	0x6F02, 0xBA7D, 0x6F03, 0xE26F, 0x6F05, 0xE2AE, 0x6F06, 0xBAA3,
+	0x6F07, 0xE2AB, 0x6F08, 0xE2B8, 0x6F09, 0xE275, 0x6F0A, 0xE27E,
+	0x6F0D, 0xE2B6, 0x6F0E, 0xE2AC, 0x6F0F, 0xBA7C, 0x6F12, 0xE27C,
+	0x6F13, 0xBA76, 0x6F14, 0xBA74, 0x6F15, 0xBAA8, 0x6F18, 0xE27A,
+	0x6F19, 0xE277, 0x6F1A, 0xE278, 0x6F1C, 0xE2B2, 0x6F1E, 0xE2B7,
+	0x6F1F, 0xE2B5, 0x6F20, 0xBA7A, 0x6F21, 0xE2B9, 0x6F22, 0xBA7E,
+	0x6F23, 0xBAA7, 0x6F25, 0xE270, 0x6F26, 0xE5FA, 0x6F27, 0xE279,
+	0x6F29, 0xBA78, 0x6F2A, 0xBAAC, 0x6F2B, 0xBAA9, 0x6F2C, 0xBA7B,
+	0x6F2D, 0xE2A5, 0x6F2E, 0xE274, 0x6F2F, 0xBAAA, 0x6F30, 0xE2A7,
+	0x6F31, 0xBAA4, 0x6F32, 0xBAA6, 0x6F33, 0xBA73, 0x6F35, 0xE2A9,
+	0x6F36, 0xE2A1, 0x6F37, 0xE272, 0x6F38, 0xBAA5, 0x6F39, 0xE2B1,
+	0x6F3A, 0xE2B4, 0x6F3B, 0xE27B, 0x6F3C, 0xE2A8, 0x6F3E, 0xBA79,
+	0x6F3F, 0xBCDF, 0x6F40, 0xE2A6, 0x6F41, 0xE5F9, 0x6F43, 0xE2AD,
+	0x6F4E, 0xE276, 0x6F4F, 0xE644, 0x6F50, 0xE64E, 0x6F51, 0xBCE2,
+	0x6F52, 0xE64D, 0x6F53, 0xE659, 0x6F54, 0xBCE4, 0x6F55, 0xE64B,
+	0x6F57, 0xE64F, 0x6F58, 0xBCEF, 0x6F5A, 0xE646, 0x6F5B, 0xBCE7,
+	0x6F5D, 0xE652, 0x6F5E, 0xE9F0, 0x6F5F, 0xBCF3, 0x6F60, 0xBCF2,
+	0x6F61, 0xE654, 0x6F62, 0xE643, 0x6F63, 0xE65E, 0x6F64, 0xBCED,
+	0x6F66, 0xBCE3, 0x6F67, 0xE657, 0x6F69, 0xE65B, 0x6F6A, 0xE660,
+	0x6F6B, 0xE655, 0x6F6C, 0xE649, 0x6F6D, 0xBCE6, 0x6F6E, 0xBCE9,
+	0x6F6F, 0xBCF1, 0x6F70, 0xBCEC, 0x6F72, 0xE64C, 0x6F73, 0xE2A2,
+	0x6F76, 0xE648, 0x6F77, 0xE65F, 0x6F78, 0xBCE8, 0x6F7A, 0xBCEB,
+	0x6F7B, 0xE661, 0x6F7C, 0xBCE0, 0x6F7D, 0xE656, 0x6F7E, 0xE5FB,
+	0x6F7F, 0xE65C, 0x6F80, 0xC0DF, 0x6F82, 0xE64A, 0x6F84, 0xBCE1,
+	0x6F85, 0xE645, 0x6F86, 0xBCE5, 0x6F87, 0xE5FC, 0x6F88, 0xBAAB,
+	0x6F89, 0xE641, 0x6F8B, 0xE65A, 0x6F8C, 0xE642, 0x6F8D, 0xE640,
+	0x6F8E, 0xBCEA, 0x6F90, 0xE658, 0x6F92, 0xE5FE, 0x6F93, 0xE651,
+	0x6F94, 0xE650, 0x6F95, 0xE65D, 0x6F96, 0xE647, 0x6F97, 0xBCEE,
+	0x6F9E, 0xE9F3, 0x6FA0, 0xBF49, 0x6FA1, 0xBEFE, 0x6FA2, 0xEA40,
+	0x6FA3, 0xE9EB, 0x6FA4, 0xBF41, 0x6FA5, 0xE9F7, 0x6FA6, 0xBF48,
+	0x6FA7, 0xBF43, 0x6FA8, 0xE9F5, 0x6FA9, 0xED4F, 0x6FAA, 0xE9FB,
+	0x6FAB, 0xEA42, 0x6FAC, 0xE9FA, 0x6FAD, 0xE9E9, 0x6FAE, 0xE9F8,
+	0x6FAF, 0xEA44, 0x6FB0, 0xEA46, 0x6FB1, 0xBEFD, 0x6FB2, 0xEA45,
+	0x6FB3, 0xBF44, 0x6FB4, 0xBF4A, 0x6FB6, 0xBF47, 0x6FB8, 0xE9FE,
+	0x6FB9, 0xBF46, 0x6FBA, 0xE9F9, 0x6FBC, 0xE9ED, 0x6FBD, 0xE9F2,
+	0x6FBF, 0xE9FD, 0x6FC0, 0xBF45, 0x6FC1, 0xBF42, 0x6FC2, 0xBEFC,
+	0x6FC3, 0xBF40, 0x6FC4, 0xE9F1, 0x6FC6, 0xE5FD, 0x6FC7, 0xE9EC,
+	0x6FC8, 0xE9EF, 0x6FC9, 0xEA41, 0x6FCA, 0xE9F4, 0x6FCB, 0xE9EA,
+	0x6FCC, 0xED4E, 0x6FCD, 0xEA43, 0x6FCE, 0xE9EE, 0x6FCF, 0xE9FC,
+	0x6FD4, 0xED51, 0x6FD5, 0xC0E3, 0x6FD8, 0xC0D7, 0x6FDB, 0xC0DB,
+	0x6FDC, 0xED53, 0x6FDD, 0xED59, 0x6FDE, 0xED57, 0x6FDF, 0xC0D9,
+	0x6FE0, 0xC0DA, 0x6FE1, 0xC0E1, 0x6FE2, 0xED5A, 0x6FE3, 0xED52,
+	0x6FE4, 0xC0DC, 0x6FE6, 0xED56, 0x6FE7, 0xED55, 0x6FE8, 0xED5B,
+	0x6FE9, 0xC0E2, 0x6FEB, 0xC0DD, 0x6FEC, 0xC0E0, 0x6FED, 0xED54,
+	0x6FEE, 0xC0E4, 0x6FEF, 0xC0DE, 0x6FF0, 0xC0E5, 0x6FF1, 0xC0D8,
+	0x6FF2, 0xED58, 0x6FF4, 0xED50, 0x6FF7, 0xEFF7, 0x6FFA, 0xC271,
+	0x6FFB, 0xEFF4, 0x6FFC, 0xEFF6, 0x6FFE, 0xC26F, 0x6FFF, 0xEFF2,
+	0x7000, 0xEFF3, 0x7001, 0xEFEE, 0x7004, 0xE9F6, 0x7005, 0xEFEF,
+	0x7006, 0xC270, 0x7007, 0xEFEB, 0x7009, 0xC26D, 0x700A, 0xEFF8,
+	0x700B, 0xC26E, 0x700C, 0xEFEC, 0x700D, 0xEFED, 0x700E, 0xEFF1,
+	0x700F, 0xC273, 0x7011, 0xC272, 0x7014, 0xEFF0, 0x7015, 0xC378,
+	0x7016, 0xF25F, 0x7017, 0xF265, 0x7018, 0xC379, 0x7019, 0xF25C,
+	0x701A, 0xC376, 0x701B, 0xC373, 0x701C, 0xF267, 0x701D, 0xC377,
+	0x701F, 0xC374, 0x7020, 0xF25E, 0x7021, 0xF261, 0x7022, 0xF262,
+	0x7023, 0xF263, 0x7024, 0xF266, 0x7026, 0xEFF5, 0x7027, 0xF25D,
+	0x7028, 0xC375, 0x7029, 0xF264, 0x702A, 0xF268, 0x702B, 0xF260,
+	0x702F, 0xF45D, 0x7030, 0xC46A, 0x7031, 0xF460, 0x7032, 0xC46B,
+	0x7033, 0xF468, 0x7034, 0xF45F, 0x7035, 0xF45C, 0x7037, 0xF45E,
+	0x7038, 0xF462, 0x7039, 0xF465, 0x703A, 0xF464, 0x703B, 0xF467,
+	0x703C, 0xF45B, 0x703E, 0xC469, 0x703F, 0xF463, 0x7040, 0xF466,
+	0x7041, 0xF469, 0x7042, 0xF461, 0x7043, 0xF5D3, 0x7044, 0xF5D4,
+	0x7045, 0xF5D8, 0x7046, 0xF5D9, 0x7048, 0xF5D6, 0x7049, 0xF5D7,
+	0x704A, 0xF5D5, 0x704C, 0xC4E9, 0x7051, 0xC578, 0x7052, 0xF6EB,
+	0x7055, 0xF6E8, 0x7056, 0xF6E9, 0x7057, 0xF6EA, 0x7058, 0xC579,
+	0x705A, 0xF7E5, 0x705B, 0xF7E4, 0x705D, 0xF8AF, 0x705E, 0xC5F4,
+	0x705F, 0xF8AD, 0x7060, 0xF8B0, 0x7061, 0xF8AE, 0x7062, 0xF8F5,
+	0x7063, 0xC657, 0x7064, 0xC665, 0x7065, 0xF9A3, 0x7066, 0xF96C,
+	0x7068, 0xF9A2, 0x7069, 0xF9D0, 0x706A, 0xF9D1, 0x706B, 0xA4F5,
+	0x7070, 0xA6C7, 0x7071, 0xCA41, 0x7074, 0xCB5E, 0x7076, 0xA85F,
+	0x7078, 0xA862, 0x707A, 0xCB5F, 0x707C, 0xA860, 0x707D, 0xA861,
+	0x7082, 0xCD58, 0x7083, 0xCD5A, 0x7084, 0xCD55, 0x7085, 0xCD52,
+	0x7086, 0xCD54, 0x708A, 0xAAA4, 0x708E, 0xAAA2, 0x7091, 0xCD56,
+	0x7092, 0xAAA3, 0x7093, 0xCD53, 0x7094, 0xCD50, 0x7095, 0xAAA1,
+	0x7096, 0xCD57, 0x7098, 0xCD51, 0x7099, 0xAAA5, 0x709A, 0xCD59,
+	0x709F, 0xCFAF, 0x70A1, 0xCFB3, 0x70A4, 0xACB7, 0x70A9, 0xCFB6,
+	0x70AB, 0xACAF, 0x70AC, 0xACB2, 0x70AD, 0xACB4, 0x70AE, 0xACB6,
+	0x70AF, 0xACB3, 0x70B0, 0xCFB2, 0x70B1, 0xCFB1, 0x70B3, 0xACB1,
+	0x70B4, 0xCFB4, 0x70B5, 0xCFB5, 0x70B7, 0xCFAE, 0x70B8, 0xACB5,
+	0x70BA, 0xACB0, 0x70BE, 0xCFB0, 0x70C5, 0xD277, 0x70C6, 0xD278,
+	0x70C7, 0xD279, 0x70C8, 0xAF50, 0x70CA, 0xAF4C, 0x70CB, 0xD26E,
+	0x70CD, 0xD276, 0x70CE, 0xD27B, 0x70CF, 0xAF51, 0x70D1, 0xD26C,
+	0x70D2, 0xD272, 0x70D3, 0xD26B, 0x70D4, 0xD275, 0x70D7, 0xD271,
+	0x70D8, 0xAF4D, 0x70D9, 0xAF4F, 0x70DA, 0xD27A, 0x70DC, 0xD26A,
+	0x70DD, 0xD26D, 0x70DE, 0xD273, 0x70E0, 0xD274, 0x70E1, 0xD27C,
+	0x70E2, 0xD270, 0x70E4, 0xAF4E, 0x70EF, 0xB26D, 0x70F0, 0xD64E,
+	0x70F3, 0xD650, 0x70F4, 0xD64C, 0x70F6, 0xD658, 0x70F7, 0xD64A,
+	0x70F8, 0xD657, 0x70F9, 0xB269, 0x70FA, 0xD648, 0x70FB, 0xDA5B,
+	0x70FC, 0xD652, 0x70FD, 0xB26C, 0x70FF, 0xD653, 0x7100, 0xD656,
+	0x7102, 0xD65A, 0x7104, 0xD64F, 0x7106, 0xD654, 0x7109, 0xB26A,
+	0x710A, 0xB26B, 0x710B, 0xD659, 0x710C, 0xD64D, 0x710D, 0xD649,
+	0x710E, 0xD65B, 0x7110, 0xD651, 0x7113, 0xD655, 0x7117, 0xD64B,
+	0x7119, 0xB548, 0x711A, 0xB549, 0x711B, 0xDA65, 0x711C, 0xB54F,
+	0x711E, 0xDA59, 0x711F, 0xDA62, 0x7120, 0xDA58, 0x7121, 0xB54C,
+	0x7122, 0xDA60, 0x7123, 0xDA5E, 0x7125, 0xDA5F, 0x7126, 0xB54A,
+	0x7128, 0xDA63, 0x712E, 0xDA5C, 0x712F, 0xDA5A, 0x7130, 0xB54B,
+	0x7131, 0xDA5D, 0x7132, 0xDA61, 0x7136, 0xB54D, 0x713A, 0xDA64,
+	0x7141, 0xDE70, 0x7142, 0xDE77, 0x7143, 0xDE79, 0x7144, 0xDEA1,
+	0x7146, 0xB7DA, 0x7147, 0xDE6B, 0x7149, 0xB7D2, 0x714B, 0xDE7A,
+	0x714C, 0xB7D7, 0x714D, 0xDEA2, 0x714E, 0xB7CE, 0x7150, 0xDE7D,
+	0x7152, 0xDE6D, 0x7153, 0xDE7E, 0x7154, 0xDE6C, 0x7156, 0xB7DC,
+	0x7158, 0xDE78, 0x7159, 0xB7CF, 0x715A, 0xDEA3, 0x715C, 0xB7D4,
+	0x715D, 0xDE71, 0x715E, 0xB7D9, 0x715F, 0xDE7C, 0x7160, 0xDE6F,
+	0x7161, 0xDE76, 0x7162, 0xDE72, 0x7163, 0xDE6E, 0x7164, 0xB7D1,
+	0x7165, 0xB7D8, 0x7166, 0xB7D6, 0x7167, 0xB7D3, 0x7168, 0xB7DB,
+	0x7169, 0xB7D0, 0x716A, 0xDE75, 0x716C, 0xB7D5, 0x716E, 0xB54E,
+	0x7170, 0xDE7B, 0x7172, 0xDE73, 0x7178, 0xDE74, 0x717B, 0xE2C1,
+	0x717D, 0xBAB4, 0x7180, 0xE2BD, 0x7181, 0xE2C3, 0x7182, 0xE2BF,
+	0x7184, 0xBAB6, 0x7185, 0xE2BE, 0x7186, 0xE2C2, 0x7187, 0xE2BA,
+	0x7189, 0xE2BC, 0x718A, 0xBAB5, 0x718F, 0xE2C0, 0x7190, 0xE2BB,
+	0x7192, 0xBAB7, 0x7194, 0xBAB2, 0x7197, 0xE2C4, 0x7199, 0xBAB3,
+	0x719A, 0xE667, 0x719B, 0xE664, 0x719C, 0xE670, 0x719D, 0xE66A,
+	0x719E, 0xE66C, 0x719F, 0xBCF4, 0x71A0, 0xE666, 0x71A1, 0xE66E,
+	0x71A4, 0xE66D, 0x71A5, 0xE66B, 0x71A7, 0xE671, 0x71A8, 0xBCF7,
+	0x71A9, 0xE668, 0x71AA, 0xE66F, 0x71AC, 0xBCF5, 0x71AF, 0xE663,
+	0x71B0, 0xE665, 0x71B1, 0xBCF6, 0x71B2, 0xE662, 0x71B3, 0xE672,
+	0x71B5, 0xE669, 0x71B8, 0xEA4A, 0x71B9, 0xBF51, 0x71BC, 0xEA55,
+	0x71BD, 0xEA53, 0x71BE, 0xBF4B, 0x71BF, 0xEA49, 0x71C0, 0xEA4C,
+	0x71C1, 0xEA4D, 0x71C2, 0xEA48, 0x71C3, 0xBF55, 0x71C4, 0xBF56,
+	0x71C5, 0xEA47, 0x71C6, 0xEA56, 0x71C7, 0xEA51, 0x71C8, 0xBF4F,
+	0x71C9, 0xBF4C, 0x71CA, 0xEA50, 0x71CB, 0xEA4E, 0x71CE, 0xBF52,
+	0x71CF, 0xEA52, 0x71D0, 0xBF4D, 0x71D2, 0xBF4E, 0x71D4, 0xEA4F,
+	0x71D5, 0xBF50, 0x71D6, 0xEA4B, 0x71D8, 0xEA54, 0x71D9, 0xBF53,
+	0x71DA, 0xEA57, 0x71DB, 0xEA58, 0x71DC, 0xBF54, 0x71DF, 0xC0E7,
+	0x71E0, 0xC0EE, 0x71E1, 0xED5C, 0x71E2, 0xED62, 0x71E4, 0xED60,
+	0x71E5, 0xC0EA, 0x71E6, 0xC0E9, 0x71E7, 0xC0E6, 0x71E8, 0xED5E,
+	0x71EC, 0xC0EC, 0x71ED, 0xC0EB, 0x71EE, 0xC0E8, 0x71F0, 0xED61,
+	0x71F1, 0xED5D, 0x71F2, 0xED5F, 0x71F4, 0xC0ED, 0x71F8, 0xC277,
+	0x71F9, 0xEFFB, 0x71FB, 0xC274, 0x71FC, 0xC275, 0x71FD, 0xEFFD,
+	0x71FE, 0xC276, 0x71FF, 0xEFFA, 0x7201, 0xEFF9, 0x7202, 0xF26C,
+	0x7203, 0xEFFC, 0x7205, 0xF26D, 0x7206, 0xC37A, 0x7207, 0xF26B,
+	0x720A, 0xF26A, 0x720C, 0xF269, 0x720D, 0xC37B, 0x7210, 0xC46C,
+	0x7213, 0xF46A, 0x7214, 0xF46B, 0x7219, 0xF5DC, 0x721A, 0xF5DB,
+	0x721B, 0xC4EA, 0x721D, 0xF5DA, 0x721E, 0xF6EC, 0x721F, 0xF6ED,
+	0x7222, 0xF7E6, 0x7223, 0xF8B1, 0x7226, 0xF8F6, 0x7227, 0xF9BC,
+	0x7228, 0xC679, 0x7229, 0xF9C6, 0x722A, 0xA4F6, 0x722C, 0xAAA6,
+	0x722D, 0xAAA7, 0x7230, 0xACB8, 0x7235, 0xC0EF, 0x7236, 0xA4F7,
+	0x7238, 0xAAA8, 0x7239, 0xAF52, 0x723A, 0xB7DD, 0x723B, 0xA4F8,
+	0x723D, 0xB26E, 0x723E, 0xBAB8, 0x723F, 0xC962, 0x7241, 0xCFB7,
+	0x7242, 0xD27D, 0x7244, 0xE2C5, 0x7246, 0xC0F0, 0x7247, 0xA4F9,
+	0x7248, 0xAAA9, 0x7249, 0xCFB8, 0x724A, 0xCFB9, 0x724B, 0xDA66,
+	0x724C, 0xB550, 0x724F, 0xDEA4, 0x7252, 0xB7DE, 0x7253, 0xE2C6,
+	0x7256, 0xBCF8, 0x7258, 0xC37C, 0x7259, 0xA4FA, 0x725A, 0xDA67,
+	0x725B, 0xA4FB, 0x725D, 0xA6C9, 0x725E, 0xCA42, 0x725F, 0xA6C8,
+	0x7260, 0xA865, 0x7261, 0xA864, 0x7262, 0xA863, 0x7263, 0xCB60,
+	0x7267, 0xAAAA, 0x7269, 0xAAAB, 0x726A, 0xCD5B, 0x726C, 0xCFBA,
+	0x726E, 0xCFBD, 0x726F, 0xACBA, 0x7270, 0xCFBB, 0x7272, 0xACB9,
+	0x7273, 0xCFBC, 0x7274, 0xACBB, 0x7276, 0xD2A2, 0x7277, 0xD2A1,
+	0x7278, 0xD27E, 0x7279, 0xAF53, 0x727B, 0xD65D, 0x727C, 0xD65E,
+	0x727D, 0xB26F, 0x727E, 0xD65C, 0x727F, 0xD65F, 0x7280, 0xB552,
+	0x7281, 0xB270, 0x7284, 0xB551, 0x7285, 0xDA6B, 0x7286, 0xDA6A,
+	0x7288, 0xDA68, 0x7289, 0xDA69, 0x728B, 0xDA6C, 0x728C, 0xDEA6,
+	0x728D, 0xDEA5, 0x728E, 0xDEA9, 0x7290, 0xDEA8, 0x7291, 0xDEA7,
+	0x7292, 0xBAB9, 0x7293, 0xE2C9, 0x7295, 0xE2C8, 0x7296, 0xBABA,
+	0x7297, 0xE2C7, 0x7298, 0xE673, 0x729A, 0xE674, 0x729B, 0xBCF9,
+	0x729D, 0xEA59, 0x729E, 0xEA5A, 0x72A1, 0xF272, 0x72A2, 0xC37D,
+	0x72A3, 0xF271, 0x72A4, 0xF270, 0x72A5, 0xF26E, 0x72A6, 0xF26F,
+	0x72A7, 0xC4EB, 0x72A8, 0xF46C, 0x72A9, 0xF6EE, 0x72AA, 0xF8F7,
+	0x72AC, 0xA4FC, 0x72AE, 0xC9A5, 0x72AF, 0xA5C7, 0x72B0, 0xC9A6,
+	0x72B4, 0xCA43, 0x72B5, 0xCA44, 0x72BA, 0xCB66, 0x72BD, 0xCB62,
+	0x72BF, 0xCB61, 0x72C0, 0xAAAC, 0x72C1, 0xCB65, 0x72C2, 0xA867,
+	0x72C3, 0xCB63, 0x72C4, 0xA866, 0x72C5, 0xCB67, 0x72C6, 0xCB64,
+	0x72C9, 0xCD5F, 0x72CA, 0xCFBE, 0x72CB, 0xCD5D, 0x72CC, 0xCD64,
+	0x72CE, 0xAAAD, 0x72D0, 0xAAB0, 0x72D1, 0xCD65, 0x72D2, 0xCD61,
+	0x72D4, 0xCD62, 0x72D6, 0xCD5C, 0x72D7, 0xAAAF, 0x72D8, 0xCD5E,
+	0x72D9, 0xAAAE, 0x72DA, 0xCD63, 0x72DC, 0xCD60, 0x72DF, 0xCFC2,
+	0x72E0, 0xACBD, 0x72E1, 0xACBE, 0x72E3, 0xCFC5, 0x72E4, 0xCFBF,
+	0x72E6, 0xCFC4, 0x72E8, 0xCFC0, 0x72E9, 0xACBC, 0x72EA, 0xCFC3,
+	0x72EB, 0xCFC1, 0x72F3, 0xD2A8, 0x72F4, 0xD2A5, 0x72F6, 0xD2A7,
+	0x72F7, 0xAF58, 0x72F8, 0xAF57, 0x72F9, 0xAF55, 0x72FA, 0xD2A4,
+	0x72FB, 0xD2A9, 0x72FC, 0xAF54, 0x72FD, 0xAF56, 0x72FE, 0xD2A6,
+	0x72FF, 0xD667, 0x7300, 0xD2A3, 0x7301, 0xD2AA, 0x7307, 0xD662,
+	0x7308, 0xD666, 0x730A, 0xD665, 0x730B, 0xDA6E, 0x730C, 0xDA79,
+	0x730F, 0xD668, 0x7311, 0xD663, 0x7312, 0xDA6D, 0x7313, 0xB274,
+	0x7316, 0xB273, 0x7317, 0xD661, 0x7318, 0xD664, 0x7319, 0xB275,
+	0x731B, 0xB272, 0x731C, 0xB271, 0x731D, 0xD660, 0x731E, 0xD669,
+	0x7322, 0xDA70, 0x7323, 0xDA77, 0x7325, 0xB554, 0x7326, 0xDA76,
+	0x7327, 0xDA73, 0x7329, 0xB556, 0x732D, 0xDA75, 0x7330, 0xDA6F,
+	0x7331, 0xDA71, 0x7332, 0xDA74, 0x7333, 0xDA72, 0x7334, 0xB555,
+	0x7335, 0xDA78, 0x7336, 0xB553, 0x7337, 0xB7DF, 0x733A, 0xDEAD,
+	0x733B, 0xDEAC, 0x733C, 0xDEAA, 0x733E, 0xB7E2, 0x733F, 0xB7E1,
+	0x7340, 0xDEAE, 0x7342, 0xDEAB, 0x7343, 0xE2CA, 0x7344, 0xBABB,
+	0x7345, 0xB7E0, 0x7349, 0xDEB0, 0x734A, 0xDEAF, 0x734C, 0xE2CD,
+	0x734D, 0xE2CB, 0x734E, 0xBCFA, 0x7350, 0xBABC, 0x7351, 0xE2CC,
+	0x7352, 0xE676, 0x7357, 0xBCFB, 0x7358, 0xE675, 0x7359, 0xE67E,
+	0x735A, 0xE67D, 0x735B, 0xE67B, 0x735D, 0xE67A, 0x735E, 0xE677,
+	0x735F, 0xE678, 0x7360, 0xE679, 0x7361, 0xE67C, 0x7362, 0xE6A1,
+	0x7365, 0xEA5F, 0x7366, 0xEA5C, 0x7367, 0xEA5D, 0x7368, 0xBF57,
+	0x7369, 0xEA5B, 0x736A, 0xEA61, 0x736B, 0xEA60, 0x736C, 0xEA5E,
+	0x736E, 0xED64, 0x736F, 0xED65, 0x7370, 0xC0F1, 0x7372, 0xC0F2,
+	0x7373, 0xED63, 0x7375, 0xC279, 0x7376, 0xEFFE, 0x7377, 0xC278,
+	0x7378, 0xC37E, 0x737A, 0xC3A1, 0x737B, 0xC46D, 0x737C, 0xF46E,
+	0x737D, 0xF46D, 0x737E, 0xF5DD, 0x737F, 0xF6EF, 0x7380, 0xC57A,
+	0x7381, 0xF7E8, 0x7382, 0xF7E7, 0x7383, 0xF7E9, 0x7384, 0xA5C8,
+	0x7385, 0xCFC6, 0x7386, 0xAF59, 0x7387, 0xB276, 0x7388, 0xD66A,
+	0x7389, 0xA5C9, 0x738A, 0xC9A7, 0x738B, 0xA4FD, 0x738E, 0xCA45,
+	0x7392, 0xCB6C, 0x7393, 0xCB6A, 0x7394, 0xCB6B, 0x7395, 0xCB68,
+	0x7396, 0xA868, 0x7397, 0xCB69, 0x739D, 0xCD6D, 0x739F, 0xAAB3,
+	0x73A0, 0xCD6B, 0x73A1, 0xCD67, 0x73A2, 0xCD6A, 0x73A4, 0xCD66,
+	0x73A5, 0xAAB5, 0x73A6, 0xCD69, 0x73A8, 0xAAB2, 0x73A9, 0xAAB1,
+	0x73AB, 0xAAB4, 0x73AC, 0xCD6C, 0x73AD, 0xCD68, 0x73B2, 0xACC2,
+	0x73B3, 0xACC5, 0x73B4, 0xCFCE, 0x73B5, 0xCFCD, 0x73B6, 0xCFCC,
+	0x73B7, 0xACBF, 0x73B8, 0xCFD5, 0x73B9, 0xCFCB, 0x73BB, 0xACC1,
+	0x73BC, 0xD2AF, 0x73BE, 0xCFD2, 0x73BF, 0xCFD0, 0x73C0, 0xACC4,
+	0x73C2, 0xCFC8, 0x73C3, 0xCFD3, 0x73C5, 0xCFCA, 0x73C6, 0xCFD4,
+	0x73C7, 0xCFD1, 0x73C8, 0xCFC9, 0x73CA, 0xACC0, 0x73CB, 0xCFD6,
+	0x73CC, 0xCFC7, 0x73CD, 0xACC3, 0x73D2, 0xD2B4, 0x73D3, 0xD2AB,
+	0x73D4, 0xD2B6, 0x73D6, 0xD2AE, 0x73D7, 0xD2B9, 0x73D8, 0xD2BA,
+	0x73D9, 0xD2AC, 0x73DA, 0xD2B8, 0x73DB, 0xD2B5, 0x73DC, 0xD2B3,
+	0x73DD, 0xD2B7, 0x73DE, 0xAF5F, 0x73E0, 0xAF5D, 0x73E3, 0xD2B1,
+	0x73E5, 0xD2AD, 0x73E7, 0xD2B0, 0x73E8, 0xD2BB, 0x73E9, 0xD2B2,
+	0x73EA, 0xAF5E, 0x73EB, 0xCFCF, 0x73ED, 0xAF5A, 0x73EE, 0xAF5C,
+	0x73F4, 0xD678, 0x73F5, 0xD66D, 0x73F6, 0xD66B, 0x73F8, 0xD66C,
+	0x73FA, 0xD673, 0x73FC, 0xD674, 0x73FD, 0xD670, 0x73FE, 0xB27B,
+	0x73FF, 0xD675, 0x7400, 0xD672, 0x7401, 0xD66F, 0x7403, 0xB279,
+	0x7404, 0xD66E, 0x7405, 0xB277, 0x7406, 0xB27A, 0x7407, 0xD671,
+	0x7408, 0xD679, 0x7409, 0xAF5B, 0x740A, 0xB278, 0x740B, 0xD677,
+	0x740C, 0xD676, 0x740D, 0xB27C, 0x7416, 0xDA7E, 0x741A, 0xDAA1,
+	0x741B, 0xB560, 0x741D, 0xDAA7, 0x7420, 0xDAA9, 0x7421, 0xDAA2,
+	0x7422, 0xB55A, 0x7423, 0xDAA6, 0x7424, 0xDAA5, 0x7425, 0xB55B,
+	0x7426, 0xB561, 0x7428, 0xB562, 0x7429, 0xDAA8, 0x742A, 0xB558,
+	0x742B, 0xDA7D, 0x742C, 0xDA7B, 0x742D, 0xDAA3, 0x742E, 0xDA7A,
+	0x742F, 0xB55F, 0x7430, 0xDA7C, 0x7431, 0xDAA4, 0x7432, 0xDAAA,
+	0x7433, 0xB559, 0x7434, 0xB55E, 0x7435, 0xB55C, 0x7436, 0xB55D,
+	0x743A, 0xB557, 0x743F, 0xB7E9, 0x7440, 0xDEB7, 0x7441, 0xB7E8,
+	0x7442, 0xDEBB, 0x7444, 0xDEB1, 0x7446, 0xDEBC, 0x744A, 0xDEB2,
+	0x744B, 0xDEB3, 0x744D, 0xDEBD, 0x744E, 0xDEBA, 0x744F, 0xDEB8,
+	0x7450, 0xDEB9, 0x7451, 0xDEB5, 0x7452, 0xDEB4, 0x7454, 0xDEBE,
+	0x7455, 0xB7E5, 0x7457, 0xDEB6, 0x7459, 0xB7EA, 0x745A, 0xB7E4,
+	0x745B, 0xB7EB, 0x745C, 0xB7EC, 0x745E, 0xB7E7, 0x745F, 0xB7E6,
+	0x7462, 0xE2CE, 0x7463, 0xBABE, 0x7464, 0xBABD, 0x7467, 0xE2D3,
+	0x7469, 0xBCFC, 0x746A, 0xBABF, 0x746D, 0xBAC1, 0x746E, 0xE2D4,
+	0x746F, 0xB7E3, 0x7470, 0xBAC0, 0x7471, 0xE2D0, 0x7472, 0xE2D2,
+	0x7473, 0xE2CF, 0x7475, 0xE2D1, 0x7479, 0xE6AB, 0x747C, 0xE6AA,
+	0x747D, 0xE6A7, 0x747E, 0xBD40, 0x747F, 0xEA62, 0x7480, 0xBD41,
+	0x7481, 0xE6A6, 0x7483, 0xBCFE, 0x7485, 0xE6A8, 0x7486, 0xE6A5,
+	0x7487, 0xE6A2, 0x7488, 0xE6A9, 0x7489, 0xE6A3, 0x748A, 0xE6A4,
+	0x748B, 0xBCFD, 0x7490, 0xED69, 0x7492, 0xEA66, 0x7494, 0xEA65,
+	0x7495, 0xEA67, 0x7497, 0xED66, 0x7498, 0xBF5A, 0x749A, 0xEA63,
+	0x749C, 0xBF58, 0x749E, 0xBF5C, 0x749F, 0xBF5B, 0x74A0, 0xEA64,
+	0x74A1, 0xEA68, 0x74A3, 0xBF59, 0x74A5, 0xED6D, 0x74A6, 0xC0F5,
+	0x74A7, 0xC27A, 0x74A8, 0xC0F6, 0x74A9, 0xC0F3, 0x74AA, 0xED6A,
+	0x74AB, 0xED68, 0x74AD, 0xED6B, 0x74AF, 0xED6E, 0x74B0, 0xC0F4,
+	0x74B1, 0xED6C, 0x74B2, 0xED67, 0x74B5, 0xF042, 0x74B6, 0xF045,
+	0x74B7, 0xF275, 0x74B8, 0xF040, 0x74BA, 0xF46F, 0x74BB, 0xF046,
+	0x74BD, 0xC3A2, 0x74BE, 0xF044, 0x74BF, 0xC27B, 0x74C0, 0xF041,
+	0x74C1, 0xF043, 0x74C2, 0xF047, 0x74C3, 0xF276, 0x74C5, 0xF274,
+	0x74CA, 0xC3A3, 0x74CB, 0xF273, 0x74CF, 0xC46E, 0x74D4, 0xC4ED,
+	0x74D5, 0xF6F1, 0x74D6, 0xC4EC, 0x74D7, 0xF6F3, 0x74D8, 0xF6F0,
+	0x74D9, 0xF6F2, 0x74DA, 0xC5D0, 0x74DB, 0xF8B2, 0x74DC, 0xA5CA,
+	0x74DD, 0xCD6E, 0x74DE, 0xD2BC, 0x74DF, 0xD2BD, 0x74E0, 0xB27D,
+	0x74E1, 0xDEBF, 0x74E2, 0xBF5D, 0x74E3, 0xC3A4, 0x74E4, 0xC57B,
+	0x74E5, 0xF8B3, 0x74E6, 0xA5CB, 0x74E8, 0xCD6F, 0x74E9, 0xA260,
+	0x74EC, 0xCFD7, 0x74EE, 0xCFD8, 0x74F4, 0xD2BE, 0x74F5, 0xD2BF,
+	0x74F6, 0xB27E, 0x74F7, 0xB2A1, 0x74FB, 0xDAAB, 0x74FD, 0xDEC2,
+	0x74FE, 0xDEC1, 0x74FF, 0xDEC0, 0x7500, 0xE2D5, 0x7502, 0xE2D6,
+	0x7503, 0xE2D7, 0x7504, 0xBAC2, 0x7507, 0xE6AD, 0x7508, 0xE6AC,
+	0x750B, 0xEA69, 0x750C, 0xBF5E, 0x750D, 0xBF5F, 0x750F, 0xED72,
+	0x7510, 0xED6F, 0x7511, 0xED70, 0x7512, 0xED71, 0x7513, 0xF049,
+	0x7514, 0xF048, 0x7515, 0xC27C, 0x7516, 0xF277, 0x7517, 0xF5DE,
+	0x7518, 0xA5CC, 0x751A, 0xACC6, 0x751C, 0xB2A2, 0x751D, 0xDEC3,
+	0x751F, 0xA5CD, 0x7521, 0xD2C0, 0x7522, 0xB2A3, 0x7525, 0xB563,
+	0x7526, 0xB564, 0x7528, 0xA5CE, 0x7529, 0xA5CF, 0x752A, 0xCA46,
+	0x752B, 0xA86A, 0x752C, 0xA869, 0x752D, 0xACC7, 0x752E, 0xCFD9,
+	0x752F, 0xDAAC, 0x7530, 0xA5D0, 0x7531, 0xA5D1, 0x7532, 0xA5D2,
+	0x7533, 0xA5D3, 0x7537, 0xA86B, 0x7538, 0xA86C, 0x7539, 0xCB6E,
+	0x753A, 0xCB6D, 0x753D, 0xAAB6, 0x753E, 0xCD72, 0x753F, 0xCD70,
+	0x7540, 0xCD71, 0x7547, 0xCFDA, 0x7548, 0xCFDB, 0x754B, 0xACCB,
+	0x754C, 0xACC9, 0x754E, 0xACCA, 0x754F, 0xACC8, 0x7554, 0xAF60,
+	0x7559, 0xAF64, 0x755A, 0xAF63, 0x755B, 0xD2C1, 0x755C, 0xAF62,
+	0x755D, 0xAF61, 0x755F, 0xD2C2, 0x7562, 0xB2A6, 0x7563, 0xD67B,
+	0x7564, 0xD67A, 0x7565, 0xB2A4, 0x7566, 0xB2A5, 0x756A, 0xB566,
+	0x756B, 0xB565, 0x756C, 0xDAAE, 0x756F, 0xDAAD, 0x7570, 0xB2A7,
+	0x7576, 0xB7ED, 0x7577, 0xDEC5, 0x7578, 0xB7EE, 0x7579, 0xDEC4,
+	0x757D, 0xE2D8, 0x757E, 0xE6AE, 0x757F, 0xBD42, 0x7580, 0xEA6A,
+	0x7584, 0xED73, 0x7586, 0xC3A6, 0x7587, 0xC3A5, 0x758A, 0xC57C,
+	0x758B, 0xA5D4, 0x758C, 0xCD73, 0x758F, 0xB2A8, 0x7590, 0xE2D9,
+	0x7591, 0xBAC3, 0x7594, 0xCB6F, 0x7595, 0xCB70, 0x7598, 0xCD74,
+	0x7599, 0xAAB8, 0x759A, 0xAAB9, 0x759D, 0xAAB7, 0x75A2, 0xACCF,
+	0x75A3, 0xACD0, 0x75A4, 0xACCD, 0x75A5, 0xACCE, 0x75A7, 0xCFDC,
+	0x75AA, 0xCFDD, 0x75AB, 0xACCC, 0x75B0, 0xD2C3, 0x75B2, 0xAF68,
+	0x75B3, 0xAF69, 0x75B5, 0xB2AB, 0x75B6, 0xD2C9, 0x75B8, 0xAF6E,
+	0x75B9, 0xAF6C, 0x75BA, 0xD2CA, 0x75BB, 0xD2C5, 0x75BC, 0xAF6B,
+	0x75BD, 0xAF6A, 0x75BE, 0xAF65, 0x75BF, 0xD2C8, 0x75C0, 0xD2C7,
+	0x75C1, 0xD2C4, 0x75C2, 0xAF6D, 0x75C4, 0xD2C6, 0x75C5, 0xAF66,
+	0x75C7, 0xAF67, 0x75CA, 0xB2AC, 0x75CB, 0xD6A1, 0x75CC, 0xD6A2,
+	0x75CD, 0xB2AD, 0x75CE, 0xD67C, 0x75CF, 0xD67E, 0x75D0, 0xD6A4,
+	0x75D1, 0xD6A3, 0x75D2, 0xD67D, 0x75D4, 0xB2A9, 0x75D5, 0xB2AA,
+	0x75D7, 0xDAB6, 0x75D8, 0xB56B, 0x75D9, 0xB56A, 0x75DA, 0xDAB0,
+	0x75DB, 0xB568, 0x75DD, 0xDAB3, 0x75DE, 0xB56C, 0x75DF, 0xDAB4,
+	0x75E0, 0xB56D, 0x75E1, 0xDAB1, 0x75E2, 0xB567, 0x75E3, 0xB569,
+	0x75E4, 0xDAB5, 0x75E6, 0xDAB2, 0x75E7, 0xDAAF, 0x75ED, 0xDED2,
+	0x75EF, 0xDEC7, 0x75F0, 0xB7F0, 0x75F1, 0xB7F3, 0x75F2, 0xB7F2,
+	0x75F3, 0xB7F7, 0x75F4, 0xB7F6, 0x75F5, 0xDED3, 0x75F6, 0xDED1,
+	0x75F7, 0xDECA, 0x75F8, 0xDECE, 0x75F9, 0xDECD, 0x75FA, 0xB7F4,
+	0x75FB, 0xDED0, 0x75FC, 0xDECC, 0x75FD, 0xDED4, 0x75FE, 0xDECB,
+	0x75FF, 0xB7F5, 0x7600, 0xB7EF, 0x7601, 0xB7F1, 0x7603, 0xDEC9,
+	0x7608, 0xE2DB, 0x7609, 0xBAC7, 0x760A, 0xE2DF, 0x760B, 0xBAC6,
+	0x760C, 0xE2DC, 0x760D, 0xBAC5, 0x760F, 0xDEC8, 0x7610, 0xDECF,
+	0x7611, 0xE2DE, 0x7613, 0xBAC8, 0x7614, 0xE2E0, 0x7615, 0xE2DD,
+	0x7616, 0xE2DA, 0x7619, 0xE6B1, 0x761A, 0xE6B5, 0x761B, 0xE6B7,
+	0x761C, 0xE6B3, 0x761D, 0xE6B2, 0x761E, 0xE6B0, 0x761F, 0xBD45,
+	0x7620, 0xBD43, 0x7621, 0xBD48, 0x7622, 0xBD49, 0x7623, 0xE6B4,
+	0x7624, 0xBD46, 0x7625, 0xE6AF, 0x7626, 0xBD47, 0x7627, 0xBAC4,
+	0x7628, 0xE6B6, 0x7629, 0xBD44, 0x762D, 0xEA6C, 0x762F, 0xEA6B,
+	0x7630, 0xEA73, 0x7631, 0xEA6D, 0x7632, 0xEA72, 0x7633, 0xEA6F,
+	0x7634, 0xBF60, 0x7635, 0xEA71, 0x7638, 0xBF61, 0x763A, 0xBF62,
+	0x763C, 0xEA70, 0x763D, 0xEA6E, 0x7642, 0xC0F8, 0x7643, 0xED74,
+	0x7646, 0xC0F7, 0x7647, 0xED77, 0x7648, 0xED75, 0x7649, 0xED76,
+	0x764C, 0xC0F9, 0x7650, 0xF04D, 0x7652, 0xC2A1, 0x7653, 0xF04E,
+	0x7656, 0xC27D, 0x7657, 0xF04F, 0x7658, 0xC27E, 0x7659, 0xF04C,
+	0x765A, 0xF050, 0x765C, 0xF04A, 0x765F, 0xC3A7, 0x7660, 0xF278,
+	0x7661, 0xC3A8, 0x7662, 0xC46F, 0x7664, 0xF04B, 0x7665, 0xC470,
+	0x7669, 0xC4EE, 0x766A, 0xF5DF, 0x766C, 0xC57E, 0x766D, 0xF6F4,
+	0x766E, 0xC57D, 0x7670, 0xF7EA, 0x7671, 0xC5F5, 0x7672, 0xC5F6,
+	0x7675, 0xF9CC, 0x7678, 0xACD1, 0x7679, 0xCFDE, 0x767B, 0xB56E,
+	0x767C, 0xB56F, 0x767D, 0xA5D5, 0x767E, 0xA6CA, 0x767F, 0xCA47,
+	0x7681, 0xCB71, 0x7682, 0xA86D, 0x7684, 0xAABA, 0x7686, 0xACD2,
+	0x7687, 0xACD3, 0x7688, 0xACD4, 0x7689, 0xD6A6, 0x768A, 0xD2CB,
+	0x768B, 0xAF6F, 0x768E, 0xB2AE, 0x768F, 0xD6A5, 0x7692, 0xDAB8,
+	0x7693, 0xB571, 0x7695, 0xDAB7, 0x7696, 0xB570, 0x7699, 0xDED5,
+	0x769A, 0xBD4A, 0x769B, 0xE6BB, 0x769C, 0xE6B8, 0x769D, 0xE6B9,
+	0x769E, 0xE6BA, 0x76A4, 0xED78, 0x76A6, 0xF051, 0x76AA, 0xF471,
+	0x76AB, 0xF470, 0x76AD, 0xF6F5, 0x76AE, 0xA5D6, 0x76AF, 0xCD75,
+	0x76B0, 0xAF70, 0x76B4, 0xB572, 0x76B5, 0xDED6, 0x76B8, 0xE2E1,
+	0x76BA, 0xBD4B, 0x76BB, 0xEA74, 0x76BD, 0xF052, 0x76BE, 0xF472,
+	0x76BF, 0xA5D7, 0x76C2, 0xAABB, 0x76C3, 0xACD7, 0x76C4, 0xCFDF,
+	0x76C5, 0xACD8, 0x76C6, 0xACD6, 0x76C8, 0xACD5, 0x76C9, 0xD2CC,
+	0x76CA, 0xAF71, 0x76CD, 0xAF72, 0x76CE, 0xAF73, 0x76D2, 0xB2B0,
+	0x76D3, 0xD6A7, 0x76D4, 0xB2AF, 0x76DA, 0xDAB9, 0x76DB, 0xB2B1,
+	0x76DC, 0xB573, 0x76DD, 0xDED7, 0x76DE, 0xB7F8, 0x76DF, 0xB7F9,
+	0x76E1, 0xBAC9, 0x76E3, 0xBACA, 0x76E4, 0xBD4C, 0x76E5, 0xBF64,
+	0x76E6, 0xEA75, 0x76E7, 0xBF63, 0x76E9, 0xED79, 0x76EA, 0xC0FA,
+	0x76EC, 0xF053, 0x76ED, 0xF473, 0x76EE, 0xA5D8, 0x76EF, 0xA86E,
+	0x76F0, 0xCD78, 0x76F1, 0xCD77, 0x76F2, 0xAABC, 0x76F3, 0xCD76,
+	0x76F4, 0xAABD, 0x76F5, 0xCD79, 0x76F7, 0xCFE5, 0x76F8, 0xACDB,
+	0x76F9, 0xACDA, 0x76FA, 0xCFE7, 0x76FB, 0xCFE6, 0x76FC, 0xACDF,
+	0x76FE, 0xACDE, 0x7701, 0xACD9, 0x7703, 0xCFE1, 0x7704, 0xCFE2,
+	0x7705, 0xCFE3, 0x7707, 0xACE0, 0x7708, 0xCFE0, 0x7709, 0xACDC,
+	0x770A, 0xCFE4, 0x770B, 0xACDD, 0x7710, 0xD2CF, 0x7711, 0xD2D3,
+	0x7712, 0xD2D1, 0x7713, 0xD2D0, 0x7715, 0xD2D4, 0x7719, 0xD2D5,
+	0x771A, 0xD2D6, 0x771B, 0xD2CE, 0x771D, 0xD2CD, 0x771F, 0xAF75,
+	0x7720, 0xAF76, 0x7722, 0xD2D7, 0x7723, 0xD2D2, 0x7725, 0xD6B0,
+	0x7727, 0xD2D8, 0x7728, 0xAF77, 0x7729, 0xAF74, 0x772D, 0xD6AA,
+	0x772F, 0xD6A9, 0x7731, 0xD6AB, 0x7732, 0xD6AC, 0x7733, 0xD6AE,
+	0x7734, 0xD6AD, 0x7735, 0xD6B2, 0x7736, 0xB2B5, 0x7737, 0xB2B2,
+	0x7738, 0xB2B6, 0x7739, 0xD6A8, 0x773A, 0xB2B7, 0x773B, 0xD6B1,
+	0x773C, 0xB2B4, 0x773D, 0xD6AF, 0x773E, 0xB2B3, 0x7744, 0xDABC,
+	0x7745, 0xDABE, 0x7746, 0xDABA, 0x7747, 0xDABB, 0x774A, 0xDABF,
+	0x774B, 0xDAC1, 0x774C, 0xDAC2, 0x774D, 0xDABD, 0x774E, 0xDAC0,
+	0x774F, 0xB574, 0x7752, 0xDEDB, 0x7754, 0xDEE0, 0x7755, 0xDED8,
+	0x7756, 0xDEDC, 0x7759, 0xDEE1, 0x775A, 0xDEDD, 0x775B, 0xB7FA,
+	0x775C, 0xB843, 0x775E, 0xB7FD, 0x775F, 0xDED9, 0x7760, 0xDEDA,
+	0x7761, 0xBACE, 0x7762, 0xB846, 0x7763, 0xB7FE, 0x7765, 0xB844,
+	0x7766, 0xB7FC, 0x7767, 0xDEDF, 0x7768, 0xB845, 0x7769, 0xDEDE,
+	0x776A, 0xB841, 0x776B, 0xB7FB, 0x776C, 0xB842, 0x776D, 0xDEE2,
+	0x776E, 0xE2E6, 0x776F, 0xE2E8, 0x7779, 0xB840, 0x777C, 0xE2E3,
+	0x777D, 0xBACC, 0x777E, 0xE2E9, 0x777F, 0xBACD, 0x7780, 0xE2E7,
+	0x7781, 0xE2E2, 0x7782, 0xE2E5, 0x7783, 0xE2EA, 0x7784, 0xBACB,
+	0x7785, 0xE2E4, 0x7787, 0xBD4E, 0x7788, 0xE6BF, 0x7789, 0xE6BE,
+	0x778B, 0xBD51, 0x778C, 0xBD4F, 0x778D, 0xE6BC, 0x778E, 0xBD4D,
+	0x778F, 0xE6BD, 0x7791, 0xBD50, 0x7795, 0xEA7D, 0x7797, 0xEAA1,
+	0x7799, 0xEA7E, 0x779A, 0xEA76, 0x779B, 0xEA7A, 0x779C, 0xEA79,
+	0x779D, 0xEA77, 0x779E, 0xBF66, 0x779F, 0xBF67, 0x77A0, 0xBF65,
+	0x77A1, 0xEA78, 0x77A2, 0xEA7B, 0x77A3, 0xEA7C, 0x77A5, 0xBF68,
+	0x77A7, 0xC140, 0x77A8, 0xEDA3, 0x77AA, 0xC0FC, 0x77AB, 0xED7B,
+	0x77AC, 0xC0FE, 0x77AD, 0xC141, 0x77B0, 0xC0FD, 0x77B1, 0xEDA2,
+	0x77B2, 0xED7C, 0x77B3, 0xC0FB, 0x77B4, 0xEDA1, 0x77B5, 0xED7A,
+	0x77B6, 0xED7E, 0x77B7, 0xED7D, 0x77BA, 0xF055, 0x77BB, 0xC2A4,
+	0x77BC, 0xC2A5, 0x77BD, 0xC2A2, 0x77BF, 0xC2A3, 0x77C2, 0xF054,
+	0x77C4, 0xF27B, 0x77C7, 0xC3A9, 0x77C9, 0xF279, 0x77CA, 0xF27A,
+	0x77CC, 0xF474, 0x77CD, 0xF477, 0x77CE, 0xF475, 0x77CF, 0xF476,
+	0x77D0, 0xF5E0, 0x77D3, 0xC4EF, 0x77D4, 0xF7EB, 0x77D5, 0xF8B4,
+	0x77D7, 0xC5F7, 0x77D8, 0xF8F8, 0x77D9, 0xF8F9, 0x77DA, 0xC666,
+	0x77DB, 0xA5D9, 0x77DC, 0xACE1, 0x77DE, 0xDAC3, 0x77E0, 0xDEE3,
+	0x77E2, 0xA5DA, 0x77E3, 0xA86F, 0x77E5, 0xAABE, 0x77E7, 0xCFE8,
+	0x77E8, 0xCFE9, 0x77E9, 0xAF78, 0x77EC, 0xDAC4, 0x77ED, 0xB575,
+	0x77EE, 0xB847, 0x77EF, 0xC142, 0x77F0, 0xEDA4, 0x77F1, 0xF27C,
+	0x77F2, 0xF478, 0x77F3, 0xA5DB, 0x77F7, 0xCDA1, 0x77F8, 0xCD7A,
+	0x77F9, 0xCD7C, 0x77FA, 0xCD7E, 0x77FB, 0xCD7D, 0x77FC, 0xCD7B,
+	0x77FD, 0xAABF, 0x7802, 0xACE2, 0x7803, 0xCFF2, 0x7805, 0xCFED,
+	0x7806, 0xCFEA, 0x7809, 0xCFF1, 0x780C, 0xACE4, 0x780D, 0xACE5,
+	0x780E, 0xCFF0, 0x780F, 0xCFEF, 0x7810, 0xCFEE, 0x7811, 0xCFEB,
+	0x7812, 0xCFEC, 0x7813, 0xCFF3, 0x7814, 0xACE3, 0x781D, 0xAF7C,
+	0x781F, 0xAFA4, 0x7820, 0xAFA3, 0x7821, 0xD2E1, 0x7822, 0xD2DB,
+	0x7823, 0xD2D9, 0x7825, 0xAFA1, 0x7826, 0xD6B9, 0x7827, 0xAF7A,
+	0x7828, 0xD2DE, 0x7829, 0xD2E2, 0x782A, 0xD2E4, 0x782B, 0xD2E0,
+	0x782C, 0xD2DA, 0x782D, 0xAFA2, 0x782E, 0xD2DF, 0x782F, 0xD2DD,
+	0x7830, 0xAF79, 0x7831, 0xD2E5, 0x7832, 0xAFA5, 0x7833, 0xD2E3,
+	0x7834, 0xAF7D, 0x7835, 0xD2DC, 0x7837, 0xAF7E, 0x7838, 0xAF7B,
+	0x7843, 0xB2B9, 0x7845, 0xD6BA, 0x7848, 0xD6B3, 0x7849, 0xD6B5,
+	0x784A, 0xD6B7, 0x784C, 0xD6B8, 0x784D, 0xD6B6, 0x784E, 0xB2BA,
+	0x7850, 0xD6BB, 0x7852, 0xD6B4, 0x785C, 0xDAC8, 0x785D, 0xB576,
+	0x785E, 0xDAD0, 0x7860, 0xDAC5, 0x7862, 0xDAD1, 0x7864, 0xDAC6,
+	0x7865, 0xDAC7, 0x7868, 0xDACF, 0x7869, 0xDACE, 0x786A, 0xDACB,
+	0x786B, 0xB2B8, 0x786C, 0xB577, 0x786D, 0xDAC9, 0x786E, 0xDACC,
+	0x786F, 0xB578, 0x7870, 0xDACD, 0x7871, 0xDACA, 0x7879, 0xDEEE,
+	0x787B, 0xDEF2, 0x787C, 0xB84E, 0x787E, 0xE2F0, 0x787F, 0xB851,
+	0x7880, 0xDEF0, 0x7881, 0xF9D6, 0x7883, 0xDEED, 0x7884, 0xDEE8,
+	0x7885, 0xDEEA, 0x7886, 0xDEEB, 0x7887, 0xDEE4, 0x7889, 0xB84D,
+	0x788C, 0xB84C, 0x788E, 0xB848, 0x788F, 0xDEE7, 0x7891, 0xB84F,
+	0x7893, 0xB850, 0x7894, 0xDEE6, 0x7895, 0xDEE9, 0x7896, 0xDEF1,
+	0x7897, 0xB84A, 0x7898, 0xB84B, 0x7899, 0xDEEF, 0x789A, 0xDEE5,
+	0x789E, 0xE2F2, 0x789F, 0xBAD0, 0x78A0, 0xE2F4, 0x78A1, 0xDEEC,
+	0x78A2, 0xE2F6, 0x78A3, 0xBAD4, 0x78A4, 0xE2F7, 0x78A5, 0xE2F3,
+	0x78A7, 0xBAD1, 0x78A8, 0xE2EF, 0x78A9, 0xBAD3, 0x78AA, 0xE2EC,
+	0x78AB, 0xE2F1, 0x78AC, 0xE2F5, 0x78AD, 0xE2EE, 0x78B0, 0xB849,
+	0x78B2, 0xE2EB, 0x78B3, 0xBAD2, 0x78B4, 0xE2ED, 0x78BA, 0xBD54,
+	0x78BB, 0xE6C1, 0x78BC, 0xBD58, 0x78BE, 0xBD56, 0x78C1, 0xBACF,
+	0x78C3, 0xE6C8, 0x78C4, 0xE6C9, 0x78C5, 0xBD53, 0x78C8, 0xE6C7,
+	0x78C9, 0xE6CA, 0x78CA, 0xBD55, 0x78CB, 0xBD52, 0x78CC, 0xE6C3,
+	0x78CD, 0xE6C0, 0x78CE, 0xE6C5, 0x78CF, 0xE6C2, 0x78D0, 0xBD59,
+	0x78D1, 0xE6C4, 0x78D4, 0xE6C6, 0x78D5, 0xBD57, 0x78DA, 0xBF6A,
+	0x78DB, 0xEAA8, 0x78DD, 0xEAA2, 0x78DE, 0xEAA6, 0x78DF, 0xEAAC,
+	0x78E0, 0xEAAD, 0x78E1, 0xEAA9, 0x78E2, 0xEAAA, 0x78E3, 0xEAA7,
+	0x78E5, 0xEAA4, 0x78E7, 0xBF6C, 0x78E8, 0xBF69, 0x78E9, 0xEAA3,
+	0x78EA, 0xEAA5, 0x78EC, 0xBF6B, 0x78ED, 0xEAAB, 0x78EF, 0xC146,
+	0x78F2, 0xEDAA, 0x78F3, 0xEDA5, 0x78F4, 0xC145, 0x78F7, 0xC143,
+	0x78F9, 0xEDAC, 0x78FA, 0xC144, 0x78FB, 0xEDA8, 0x78FC, 0xEDA9,
+	0x78FD, 0xEDA6, 0x78FE, 0xEDAD, 0x78FF, 0xF056, 0x7901, 0xC147,
+	0x7902, 0xEDA7, 0x7904, 0xEDAE, 0x7905, 0xEDAB, 0x7909, 0xF05A,
+	0x790C, 0xF057, 0x790E, 0xC2A6, 0x7910, 0xF05B, 0x7911, 0xF05D,
+	0x7912, 0xF05C, 0x7913, 0xF058, 0x7914, 0xF059, 0x7917, 0xF2A3,
+	0x7919, 0xC3AA, 0x791B, 0xF27E, 0x791C, 0xF2A2, 0x791D, 0xF27D,
+	0x791E, 0xF2A4, 0x7921, 0xF2A1, 0x7923, 0xF47A, 0x7924, 0xF47D,
+	0x7925, 0xF479, 0x7926, 0xC471, 0x7927, 0xF47B, 0x7928, 0xF47C,
+	0x7929, 0xF47E, 0x792A, 0xC472, 0x792B, 0xC474, 0x792C, 0xC473,
+	0x792D, 0xF5E1, 0x792F, 0xF5E3, 0x7931, 0xF5E2, 0x7935, 0xF6F6,
+	0x7938, 0xF8B5, 0x7939, 0xF8FA, 0x793A, 0xA5DC, 0x793D, 0xCB72,
+	0x793E, 0xAAC0, 0x793F, 0xCDA3, 0x7940, 0xAAC1, 0x7941, 0xAAC2,
+	0x7942, 0xCDA2, 0x7944, 0xCFF8, 0x7945, 0xCFF7, 0x7946, 0xACE6,
+	0x7947, 0xACE9, 0x7948, 0xACE8, 0x7949, 0xACE7, 0x794A, 0xCFF4,
+	0x794B, 0xCFF6, 0x794C, 0xCFF5, 0x794F, 0xD2E8, 0x7950, 0xAFA7,
+	0x7951, 0xD2EC, 0x7952, 0xD2EB, 0x7953, 0xD2EA, 0x7954, 0xD2E6,
+	0x7955, 0xAFA6, 0x7956, 0xAFAA, 0x7957, 0xAFAD, 0x795A, 0xAFAE,
+	0x795B, 0xD2E7, 0x795C, 0xD2E9, 0x795D, 0xAFAC, 0x795E, 0xAFAB,
+	0x795F, 0xAFA9, 0x7960, 0xAFA8, 0x7961, 0xD6C2, 0x7963, 0xD6C0,
+	0x7964, 0xD6BC, 0x7965, 0xB2BB, 0x7967, 0xD6BD, 0x7968, 0xB2BC,
+	0x7969, 0xD6BE, 0x796A, 0xD6BF, 0x796B, 0xD6C1, 0x796D, 0xB2BD,
+	0x7970, 0xDAD5, 0x7972, 0xDAD4, 0x7973, 0xDAD3, 0x7974, 0xDAD2,
+	0x7979, 0xDEF6, 0x797A, 0xB852, 0x797C, 0xDEF3, 0x797D, 0xDEF5,
+	0x797F, 0xB853, 0x7981, 0xB854, 0x7982, 0xDEF4, 0x7988, 0xE341,
+	0x798A, 0xE2F9, 0x798B, 0xE2FA, 0x798D, 0xBAD7, 0x798E, 0xBAD5,
+	0x798F, 0xBAD6, 0x7990, 0xE343, 0x7992, 0xE342, 0x7993, 0xE2FE,
+	0x7994, 0xE2FD, 0x7995, 0xE2FC, 0x7996, 0xE2FB, 0x7997, 0xE340,
+	0x7998, 0xE2F8, 0x799A, 0xE6CB, 0x799B, 0xE6D0, 0x799C, 0xE6CE,
+	0x79A0, 0xE6CD, 0x79A1, 0xE6CC, 0x79A2, 0xE6CF, 0x79A4, 0xEAAE,
+	0x79A6, 0xBF6D, 0x79A7, 0xC148, 0x79A8, 0xEDB0, 0x79AA, 0xC149,
+	0x79AB, 0xEDAF, 0x79AC, 0xF05F, 0x79AD, 0xF05E, 0x79AE, 0xC2A7,
+	0x79B0, 0xF2A5, 0x79B1, 0xC3AB, 0x79B2, 0xF4A1, 0x79B3, 0xC5A1,
+	0x79B4, 0xF6F7, 0x79B6, 0xF8B7, 0x79B7, 0xF8B6, 0x79B8, 0xC9A8,
+	0x79B9, 0xACEA, 0x79BA, 0xACEB, 0x79BB, 0xD6C3, 0x79BD, 0xB856,
+	0x79BE, 0xA5DD, 0x79BF, 0xA872, 0x79C0, 0xA871, 0x79C1, 0xA870,
+	0x79C5, 0xCDA4, 0x79C8, 0xAAC4, 0x79C9, 0xAAC3, 0x79CB, 0xACEE,
+	0x79CD, 0xCFFA, 0x79CE, 0xCFFD, 0x79CF, 0xCFFB, 0x79D1, 0xACEC,
+	0x79D2, 0xACED, 0x79D5, 0xCFF9, 0x79D6, 0xCFFC, 0x79D8, 0xAFB5,
+	0x79DC, 0xD2F3, 0x79DD, 0xD2F5, 0x79DE, 0xD2F4, 0x79DF, 0xAFB2,
+	0x79E0, 0xD2EF, 0x79E3, 0xAFB0, 0x79E4, 0xAFAF, 0x79E6, 0xAFB3,
+	0x79E7, 0xAFB1, 0x79E9, 0xAFB4, 0x79EA, 0xD2F2, 0x79EB, 0xD2ED,
+	0x79EC, 0xD2EE, 0x79ED, 0xD2F1, 0x79EE, 0xD2F0, 0x79F6, 0xD6C6,
+	0x79F7, 0xD6C7, 0x79F8, 0xD6C5, 0x79FA, 0xD6C4, 0x79FB, 0xB2BE,
+	0x7A00, 0xB57D, 0x7A02, 0xDAD6, 0x7A03, 0xDAD8, 0x7A04, 0xDADA,
+	0x7A05, 0xB57C, 0x7A08, 0xB57A, 0x7A0A, 0xDAD7, 0x7A0B, 0xB57B,
+	0x7A0C, 0xDAD9, 0x7A0D, 0xB579, 0x7A10, 0xDF41, 0x7A11, 0xDEF7,
+	0x7A12, 0xDEFA, 0x7A13, 0xDEFE, 0x7A14, 0xB85A, 0x7A15, 0xDEFC,
+	0x7A17, 0xDEFB, 0x7A18, 0xDEF8, 0x7A19, 0xDEF9, 0x7A1A, 0xB858,
+	0x7A1B, 0xDF40, 0x7A1C, 0xB857, 0x7A1E, 0xB85C, 0x7A1F, 0xB85B,
+	0x7A20, 0xB859, 0x7A22, 0xDEFD, 0x7A26, 0xE349, 0x7A28, 0xE348,
+	0x7A2B, 0xE344, 0x7A2E, 0xBAD8, 0x7A2F, 0xE347, 0x7A30, 0xE346,
+	0x7A31, 0xBAD9, 0x7A37, 0xBD5E, 0x7A39, 0xE6D2, 0x7A3B, 0xBD5F,
+	0x7A3C, 0xBD5B, 0x7A3D, 0xBD5D, 0x7A3F, 0xBD5A, 0x7A40, 0xBD5C,
+	0x7A44, 0xEAAF, 0x7A46, 0xBF70, 0x7A47, 0xEAB1, 0x7A48, 0xEAB0,
+	0x7A4A, 0xE345, 0x7A4B, 0xBF72, 0x7A4C, 0xBF71, 0x7A4D, 0xBF6E,
+	0x7A4E, 0xBF6F, 0x7A54, 0xEDB5, 0x7A56, 0xEDB3, 0x7A57, 0xC14A,
+	0x7A58, 0xEDB4, 0x7A5A, 0xEDB6, 0x7A5B, 0xEDB2, 0x7A5C, 0xEDB1,
+	0x7A5F, 0xF060, 0x7A60, 0xC2AA, 0x7A61, 0xC2A8, 0x7A62, 0xC2A9,
+	0x7A67, 0xF2A6, 0x7A68, 0xF2A7, 0x7A69, 0xC3AD, 0x7A6B, 0xC3AC,
+	0x7A6C, 0xF4A3, 0x7A6D, 0xF4A4, 0x7A6E, 0xF4A2, 0x7A70, 0xF6F8,
+	0x7A71, 0xF6F9, 0x7A74, 0xA5DE, 0x7A75, 0xCA48, 0x7A76, 0xA873,
+	0x7A78, 0xCDA5, 0x7A79, 0xAAC6, 0x7A7A, 0xAAC5, 0x7A7B, 0xCDA6,
+	0x7A7E, 0xD040, 0x7A7F, 0xACEF, 0x7A80, 0xCFFE, 0x7A81, 0xACF0,
+	0x7A84, 0xAFB6, 0x7A85, 0xD2F8, 0x7A86, 0xD2F6, 0x7A87, 0xD2FC,
+	0x7A88, 0xAFB7, 0x7A89, 0xD2F7, 0x7A8A, 0xD2FB, 0x7A8B, 0xD2F9,
+	0x7A8C, 0xD2FA, 0x7A8F, 0xD6C8, 0x7A90, 0xD6CA, 0x7A92, 0xB2BF,
+	0x7A94, 0xD6C9, 0x7A95, 0xB2C0, 0x7A96, 0xB5A2, 0x7A97, 0xB5A1,
+	0x7A98, 0xB57E, 0x7A99, 0xDADB, 0x7A9E, 0xDF44, 0x7A9F, 0xB85D,
+	0x7AA0, 0xB85E, 0x7AA2, 0xDF43, 0x7AA3, 0xDF42, 0x7AA8, 0xE34A,
+	0x7AA9, 0xBADB, 0x7AAA, 0xBADA, 0x7AAB, 0xE34B, 0x7AAC, 0xE34C,
+	0x7AAE, 0xBD61, 0x7AAF, 0xBD60, 0x7AB1, 0xEAB5, 0x7AB2, 0xE6D3,
+	0x7AB3, 0xE6D5, 0x7AB4, 0xE6D4, 0x7AB5, 0xEAB4, 0x7AB6, 0xEAB2,
+	0x7AB7, 0xEAB6, 0x7AB8, 0xEAB3, 0x7ABA, 0xBF73, 0x7ABE, 0xEDB7,
+	0x7ABF, 0xC14B, 0x7AC0, 0xEDB8, 0x7AC1, 0xEDB9, 0x7AC4, 0xC2AB,
+	0x7AC5, 0xC2AC, 0x7AC7, 0xC475, 0x7ACA, 0xC5D1, 0x7ACB, 0xA5DF,
+	0x7AD1, 0xD041, 0x7AD8, 0xD2FD, 0x7AD9, 0xAFB8, 0x7ADF, 0xB3BA,
+	0x7AE0, 0xB3B9, 0x7AE3, 0xB5A4, 0x7AE4, 0xDADD, 0x7AE5, 0xB5A3,
+	0x7AE6, 0xDADC, 0x7AEB, 0xDF45, 0x7AED, 0xBADC, 0x7AEE, 0xE34D,
+	0x7AEF, 0xBADD, 0x7AF6, 0xC476, 0x7AF7, 0xF4A5, 0x7AF9, 0xA6CB,
+	0x7AFA, 0xAAC7, 0x7AFB, 0xCDA7, 0x7AFD, 0xACF2, 0x7AFF, 0xACF1,
+	0x7B00, 0xD042, 0x7B01, 0xD043, 0x7B04, 0xD340, 0x7B05, 0xD342,
+	0x7B06, 0xAFB9, 0x7B08, 0xD344, 0x7B09, 0xD347, 0x7B0A, 0xD345,
+	0x7B0E, 0xD346, 0x7B0F, 0xD343, 0x7B10, 0xD2FE, 0x7B11, 0xAFBA,
+	0x7B12, 0xD348, 0x7B13, 0xD341, 0x7B18, 0xD6D3, 0x7B19, 0xB2C6,
+	0x7B1A, 0xD6DC, 0x7B1B, 0xB2C3, 0x7B1D, 0xD6D5, 0x7B1E, 0xB2C7,
+	0x7B20, 0xB2C1, 0x7B22, 0xD6D0, 0x7B23, 0xD6DD, 0x7B24, 0xD6D1,
+	0x7B25, 0xD6CE, 0x7B26, 0xB2C5, 0x7B28, 0xB2C2, 0x7B2A, 0xD6D4,
+	0x7B2B, 0xD6D7, 0x7B2C, 0xB2C4, 0x7B2D, 0xD6D8, 0x7B2E, 0xB2C8,
+	0x7B2F, 0xD6D9, 0x7B30, 0xD6CF, 0x7B31, 0xD6D6, 0x7B32, 0xD6DA,
+	0x7B33, 0xD6D2, 0x7B34, 0xD6CD, 0x7B35, 0xD6CB, 0x7B38, 0xD6DB,
+	0x7B3B, 0xDADF, 0x7B40, 0xDAE4, 0x7B44, 0xDAE0, 0x7B45, 0xDAE6,
+	0x7B46, 0xB5A7, 0x7B47, 0xD6CC, 0x7B48, 0xDAE1, 0x7B49, 0xB5A5,
+	0x7B4A, 0xDADE, 0x7B4B, 0xB5AC, 0x7B4C, 0xDAE2, 0x7B4D, 0xB5AB,
+	0x7B4E, 0xDAE3, 0x7B4F, 0xB5AD, 0x7B50, 0xB5A8, 0x7B51, 0xB5AE,
+	0x7B52, 0xB5A9, 0x7B54, 0xB5AA, 0x7B56, 0xB5A6, 0x7B58, 0xDAE5,
+	0x7B60, 0xB861, 0x7B61, 0xDF50, 0x7B63, 0xDF53, 0x7B64, 0xDF47,
+	0x7B65, 0xDF4C, 0x7B66, 0xDF46, 0x7B67, 0xB863, 0x7B69, 0xDF4A,
+	0x7B6D, 0xDF48, 0x7B6E, 0xB862, 0x7B70, 0xDF4F, 0x7B71, 0xDF4E,
+	0x7B72, 0xDF4B, 0x7B73, 0xDF4D, 0x7B74, 0xDF49, 0x7B75, 0xBAE1,
+	0x7B76, 0xDF52, 0x7B77, 0xB85F, 0x7B78, 0xDF51, 0x7B82, 0xE35D,
+	0x7B84, 0xBAE8, 0x7B85, 0xE358, 0x7B87, 0xBAE7, 0x7B88, 0xE34E,
+	0x7B8A, 0xE350, 0x7B8B, 0xBAE0, 0x7B8C, 0xE355, 0x7B8D, 0xE354,
+	0x7B8E, 0xE357, 0x7B8F, 0xBAE5, 0x7B90, 0xE352, 0x7B91, 0xE351,
+	0x7B94, 0xBAE4, 0x7B95, 0xBADF, 0x7B96, 0xE353, 0x7B97, 0xBAE2,
+	0x7B98, 0xE359, 0x7B99, 0xE35B, 0x7B9B, 0xE356, 0x7B9C, 0xE34F,
+	0x7B9D, 0xBAE3, 0x7BA0, 0xBD69, 0x7BA1, 0xBADE, 0x7BA4, 0xE35C,
+	0x7BAC, 0xE6D9, 0x7BAD, 0xBD62, 0x7BAF, 0xE6DB, 0x7BB1, 0xBD63,
+	0x7BB4, 0xBD65, 0x7BB5, 0xE6DE, 0x7BB7, 0xE6D6, 0x7BB8, 0xBAE6,
+	0x7BB9, 0xE6DC, 0x7BBE, 0xE6D8, 0x7BC0, 0xB860, 0x7BC1, 0xBD68,
+	0x7BC4, 0xBD64, 0x7BC6, 0xBD66, 0x7BC7, 0xBD67, 0x7BC9, 0xBF76,
+	0x7BCA, 0xE6DD, 0x7BCB, 0xE6D7, 0x7BCC, 0xBD6A, 0x7BCE, 0xE6DA,
+	0x7BD4, 0xEAC0, 0x7BD5, 0xEABB, 0x7BD8, 0xEAC5, 0x7BD9, 0xBF74,
+	0x7BDA, 0xEABD, 0x7BDB, 0xBF78, 0x7BDC, 0xEAC3, 0x7BDD, 0xEABA,
+	0x7BDE, 0xEAB7, 0x7BDF, 0xEAC6, 0x7BE0, 0xC151, 0x7BE1, 0xBF79,
+	0x7BE2, 0xEAC2, 0x7BE3, 0xEAB8, 0x7BE4, 0xBF77, 0x7BE5, 0xEABC,
+	0x7BE6, 0xBF7B, 0x7BE7, 0xEAB9, 0x7BE8, 0xEABE, 0x7BE9, 0xBF7A,
+	0x7BEA, 0xEAC1, 0x7BEB, 0xEAC4, 0x7BF0, 0xEDCB, 0x7BF1, 0xEDCC,
+	0x7BF2, 0xEDBC, 0x7BF3, 0xEDC3, 0x7BF4, 0xEDC1, 0x7BF7, 0xC14F,
+	0x7BF8, 0xEDC8, 0x7BF9, 0xEABF, 0x7BFB, 0xEDBF, 0x7BFD, 0xEDC9,
+	0x7BFE, 0xC14E, 0x7BFF, 0xEDBE, 0x7C00, 0xEDBD, 0x7C01, 0xEDC7,
+	0x7C02, 0xEDC4, 0x7C03, 0xEDC6, 0x7C05, 0xEDBA, 0x7C06, 0xEDCA,
+	0x7C07, 0xC14C, 0x7C09, 0xEDC5, 0x7C0A, 0xEDCE, 0x7C0B, 0xEDC2,
+	0x7C0C, 0xC150, 0x7C0D, 0xC14D, 0x7C0E, 0xEDC0, 0x7C0F, 0xEDBB,
+	0x7C10, 0xEDCD, 0x7C11, 0xBF75, 0x7C19, 0xF063, 0x7C1C, 0xF061,
+	0x7C1D, 0xF067, 0x7C1E, 0xC2B0, 0x7C1F, 0xF065, 0x7C20, 0xF064,
+	0x7C21, 0xC2B2, 0x7C22, 0xF06A, 0x7C23, 0xC2B1, 0x7C25, 0xF06B,
+	0x7C26, 0xF068, 0x7C27, 0xC2AE, 0x7C28, 0xF069, 0x7C29, 0xF062,
+	0x7C2A, 0xC2AF, 0x7C2B, 0xC2AD, 0x7C2C, 0xF2AB, 0x7C2D, 0xF066,
+	0x7C30, 0xF06C, 0x7C33, 0xF2A8, 0x7C37, 0xC3B2, 0x7C38, 0xC3B0,
+	0x7C39, 0xF2AA, 0x7C3B, 0xF2AC, 0x7C3C, 0xF2A9, 0x7C3D, 0xC3B1,
+	0x7C3E, 0xC3AE, 0x7C3F, 0xC3AF, 0x7C40, 0xC3B3, 0x7C43, 0xC478,
+	0x7C45, 0xF4AA, 0x7C47, 0xF4A9, 0x7C48, 0xF4A7, 0x7C49, 0xF4A6,
+	0x7C4A, 0xF4A8, 0x7C4C, 0xC477, 0x7C4D, 0xC479, 0x7C50, 0xC4F0,
+	0x7C53, 0xF5E5, 0x7C54, 0xF5E4, 0x7C57, 0xF6FA, 0x7C59, 0xF6FC,
+	0x7C5A, 0xF6FE, 0x7C5B, 0xF6FD, 0x7C5C, 0xF6FB, 0x7C5F, 0xC5A3,
+	0x7C60, 0xC5A2, 0x7C63, 0xC5D3, 0x7C64, 0xC5D2, 0x7C65, 0xC5D4,
+	0x7C66, 0xF7ED, 0x7C67, 0xF7EC, 0x7C69, 0xF8FB, 0x7C6A, 0xF8B8,
+	0x7C6B, 0xF8FC, 0x7C6C, 0xC658, 0x7C6E, 0xC659, 0x7C6F, 0xF96D,
+	0x7C72, 0xC67E, 0x7C73, 0xA6CC, 0x7C75, 0xCDA8, 0x7C78, 0xD045,
+	0x7C79, 0xD046, 0x7C7A, 0xD044, 0x7C7D, 0xACF3, 0x7C7F, 0xD047,
+	0x7C80, 0xD048, 0x7C81, 0xD049, 0x7C84, 0xD349, 0x7C85, 0xD34F,
+	0x7C88, 0xD34D, 0x7C89, 0xAFBB, 0x7C8A, 0xD34B, 0x7C8C, 0xD34C,
+	0x7C8D, 0xD34E, 0x7C91, 0xD34A, 0x7C92, 0xB2C9, 0x7C94, 0xD6DE,
+	0x7C95, 0xB2CB, 0x7C96, 0xD6E0, 0x7C97, 0xB2CA, 0x7C98, 0xD6DF,
+	0x7C9E, 0xDAE8, 0x7C9F, 0xB5AF, 0x7CA1, 0xDAEA, 0x7CA2, 0xDAE7,
+	0x7CA3, 0xD6E1, 0x7CA5, 0xB5B0, 0x7CA7, 0xF9DB, 0x7CA8, 0xDAE9,
+	0x7CAF, 0xDF56, 0x7CB1, 0xB864, 0x7CB2, 0xDF54, 0x7CB3, 0xB865,
+	0x7CB4, 0xDF55, 0x7CB5, 0xB866, 0x7CB9, 0xBAE9, 0x7CBA, 0xE361,
+	0x7CBB, 0xE35E, 0x7CBC, 0xE360, 0x7CBD, 0xBAEA, 0x7CBE, 0xBAEB,
+	0x7CBF, 0xE35F, 0x7CC5, 0xE6DF, 0x7CC8, 0xE6E0, 0x7CCA, 0xBD6B,
+	0x7CCB, 0xE6E2, 0x7CCC, 0xE6E1, 0x7CCE, 0xA261, 0x7CD0, 0xEACA,
+	0x7CD1, 0xEACB, 0x7CD2, 0xEAC7, 0x7CD4, 0xEAC8, 0x7CD5, 0xBF7C,
+	0x7CD6, 0xBF7D, 0x7CD7, 0xEAC9, 0x7CD9, 0xC157, 0x7CDC, 0xC153,
+	0x7CDD, 0xC158, 0x7CDE, 0xC154, 0x7CDF, 0xC156, 0x7CE0, 0xC152,
+	0x7CE2, 0xC155, 0x7CE7, 0xC2B3, 0x7CE8, 0xEDCF, 0x7CEA, 0xF2AE,
+	0x7CEC, 0xF2AD, 0x7CEE, 0xF4AB, 0x7CEF, 0xC47A, 0x7CF0, 0xC47B,
+	0x7CF1, 0xF741, 0x7CF2, 0xF5E6, 0x7CF4, 0xF740, 0x7CF6, 0xF8FD,
+	0x7CF7, 0xF9A4, 0x7CF8, 0xA6CD, 0x7CFB, 0xA874, 0x7CFD, 0xCDA9,
+	0x7CFE, 0xAAC8, 0x7D00, 0xACF6, 0x7D01, 0xD04C, 0x7D02, 0xACF4,
+	0x7D03, 0xD04A, 0x7D04, 0xACF9, 0x7D05, 0xACF5, 0x7D06, 0xACFA,
+	0x7D07, 0xACF8, 0x7D08, 0xD04B, 0x7D09, 0xACF7, 0x7D0A, 0xAFBF,
+	0x7D0B, 0xAFBE, 0x7D0C, 0xD35A, 0x7D0D, 0xAFC7, 0x7D0E, 0xD353,
+	0x7D0F, 0xD359, 0x7D10, 0xAFC3, 0x7D11, 0xD352, 0x7D12, 0xD358,
+	0x7D13, 0xD356, 0x7D14, 0xAFC2, 0x7D15, 0xAFC4, 0x7D16, 0xD355,
+	0x7D17, 0xAFBD, 0x7D18, 0xD354, 0x7D19, 0xAFC8, 0x7D1A, 0xAFC5,
+	0x7D1B, 0xAFC9, 0x7D1C, 0xAFC6, 0x7D1D, 0xD351, 0x7D1E, 0xD350,
+	0x7D1F, 0xD357, 0x7D20, 0xAFC0, 0x7D21, 0xAFBC, 0x7D22, 0xAFC1,
+	0x7D28, 0xD6F0, 0x7D29, 0xD6E9, 0x7D2B, 0xB5B5, 0x7D2C, 0xD6E8,
+	0x7D2E, 0xB2CF, 0x7D2F, 0xB2D6, 0x7D30, 0xB2D3, 0x7D31, 0xB2D9,
+	0x7D32, 0xB2D8, 0x7D33, 0xB2D4, 0x7D35, 0xD6E2, 0x7D36, 0xD6E5,
+	0x7D38, 0xD6E4, 0x7D39, 0xB2D0, 0x7D3A, 0xD6E6, 0x7D3B, 0xD6EF,
+	0x7D3C, 0xB2D1, 0x7D3D, 0xD6E3, 0x7D3E, 0xD6EC, 0x7D3F, 0xD6ED,
+	0x7D40, 0xB2D2, 0x7D41, 0xD6EA, 0x7D42, 0xB2D7, 0x7D43, 0xB2CD,
+	0x7D44, 0xB2D5, 0x7D45, 0xD6E7, 0x7D46, 0xB2CC, 0x7D47, 0xD6EB,
+	0x7D4A, 0xD6EE, 0x7D4E, 0xDAFB, 0x7D4F, 0xDAF2, 0x7D50, 0xB5B2,
+	0x7D51, 0xDAF9, 0x7D52, 0xDAF6, 0x7D53, 0xDAEE, 0x7D54, 0xDAF7,
+	0x7D55, 0xB5B4, 0x7D56, 0xDAEF, 0x7D58, 0xDAEB, 0x7D5B, 0xB86C,
+	0x7D5C, 0xDAF4, 0x7D5E, 0xB5B1, 0x7D5F, 0xDAFA, 0x7D61, 0xB5B8,
+	0x7D62, 0xB5BA, 0x7D63, 0xDAED, 0x7D66, 0xB5B9, 0x7D67, 0xDAF0,
+	0x7D68, 0xB5B3, 0x7D69, 0xDAF8, 0x7D6A, 0xDAF1, 0x7D6B, 0xDAF5,
+	0x7D6D, 0xDAF3, 0x7D6E, 0xB5B6, 0x7D6F, 0xDAEC, 0x7D70, 0xB5BB,
+	0x7D71, 0xB2CE, 0x7D72, 0xB5B7, 0x7D73, 0xB5BC, 0x7D79, 0xB868,
+	0x7D7A, 0xDF5D, 0x7D7B, 0xDF5F, 0x7D7C, 0xDF61, 0x7D7D, 0xDF65,
+	0x7D7F, 0xDF5B, 0x7D80, 0xDF59, 0x7D81, 0xB86A, 0x7D83, 0xDF60,
+	0x7D84, 0xDF64, 0x7D85, 0xDF5C, 0x7D86, 0xDF58, 0x7D88, 0xDF57,
+	0x7D8C, 0xDF62, 0x7D8D, 0xDF5A, 0x7D8E, 0xDF5E, 0x7D8F, 0xB86B,
+	0x7D91, 0xB869, 0x7D92, 0xDF66, 0x7D93, 0xB867, 0x7D94, 0xDF63,
+	0x7D96, 0xE372, 0x7D9C, 0xBAEE, 0x7D9D, 0xE36A, 0x7D9E, 0xBD78,
+	0x7D9F, 0xE374, 0x7DA0, 0xBAF1, 0x7DA1, 0xE378, 0x7DA2, 0xBAF7,
+	0x7DA3, 0xE365, 0x7DA6, 0xE375, 0x7DA7, 0xE362, 0x7DA9, 0xE377,
+	0x7DAA, 0xE366, 0x7DAC, 0xBAFE, 0x7DAD, 0xBAFB, 0x7DAE, 0xE376,
+	0x7DAF, 0xE370, 0x7DB0, 0xBAED, 0x7DB1, 0xBAF5, 0x7DB2, 0xBAF4,
+	0x7DB4, 0xBAF3, 0x7DB5, 0xBAF9, 0x7DB7, 0xE363, 0x7DB8, 0xBAFA,
+	0x7DB9, 0xE371, 0x7DBA, 0xBAF6, 0x7DBB, 0xBAEC, 0x7DBC, 0xE373,
+	0x7DBD, 0xBAEF, 0x7DBE, 0xBAF0, 0x7DBF, 0xBAF8, 0x7DC0, 0xE368,
+	0x7DC1, 0xE367, 0x7DC2, 0xE364, 0x7DC4, 0xE36C, 0x7DC5, 0xE369,
+	0x7DC6, 0xE36D, 0x7DC7, 0xBAFD, 0x7DC9, 0xE379, 0x7DCA, 0xBAF2,
+	0x7DCB, 0xE36E, 0x7DCC, 0xE36F, 0x7DCE, 0xE36B, 0x7DD2, 0xBAFC,
+	0x7DD7, 0xE6E7, 0x7DD8, 0xBD70, 0x7DD9, 0xBD79, 0x7DDA, 0xBD75,
+	0x7DDB, 0xE6E4, 0x7DDD, 0xBD72, 0x7DDE, 0xBD76, 0x7DDF, 0xE6F0,
+	0x7DE0, 0xBD6C, 0x7DE1, 0xE6E8, 0x7DE3, 0xBD74, 0x7DE6, 0xE6EB,
+	0x7DE7, 0xE6E6, 0x7DE8, 0xBD73, 0x7DE9, 0xBD77, 0x7DEA, 0xE6E5,
+	0x7DEC, 0xBD71, 0x7DEE, 0xE6EF, 0x7DEF, 0xBD6E, 0x7DF0, 0xE6EE,
+	0x7DF1, 0xE6ED, 0x7DF2, 0xBD7A, 0x7DF3, 0xE572, 0x7DF4, 0xBD6D,
+	0x7DF6, 0xE6EC, 0x7DF7, 0xE6E3, 0x7DF9, 0xBD7B, 0x7DFA, 0xE6EA,
+	0x7DFB, 0xBD6F, 0x7E03, 0xE6E9, 0x7E08, 0xBFA2, 0x7E09, 0xBFA7,
+	0x7E0A, 0xBF7E, 0x7E0B, 0xEAD8, 0x7E0C, 0xEACF, 0x7E0D, 0xEADB,
+	0x7E0E, 0xEAD3, 0x7E0F, 0xEAD9, 0x7E10, 0xBFA8, 0x7E11, 0xBFA1,
+	0x7E12, 0xEACC, 0x7E13, 0xEAD2, 0x7E14, 0xEADC, 0x7E15, 0xEAD5,
+	0x7E16, 0xEADA, 0x7E17, 0xEACE, 0x7E1A, 0xEAD6, 0x7E1B, 0xBFA3,
+	0x7E1C, 0xEAD4, 0x7E1D, 0xBFA6, 0x7E1E, 0xBFA5, 0x7E1F, 0xEAD0,
+	0x7E20, 0xEAD1, 0x7E21, 0xEACD, 0x7E22, 0xEAD7, 0x7E23, 0xBFA4,
+	0x7E24, 0xEADE, 0x7E25, 0xEADD, 0x7E29, 0xEDDA, 0x7E2A, 0xEDD6,
+	0x7E2B, 0xC15F, 0x7E2D, 0xEDD0, 0x7E2E, 0xC159, 0x7E2F, 0xC169,
+	0x7E30, 0xEDDC, 0x7E31, 0xC161, 0x7E32, 0xC15D, 0x7E33, 0xEDD3,
+	0x7E34, 0xC164, 0x7E35, 0xC167, 0x7E36, 0xEDDE, 0x7E37, 0xC15C,
+	0x7E38, 0xEDD5, 0x7E39, 0xC165, 0x7E3A, 0xEDE0, 0x7E3B, 0xEDDD,
+	0x7E3C, 0xEDD1, 0x7E3D, 0xC160, 0x7E3E, 0xC15A, 0x7E3F, 0xC168,
+	0x7E40, 0xEDD8, 0x7E41, 0xC163, 0x7E42, 0xEDD2, 0x7E43, 0xC15E,
+	0x7E44, 0xEDDF, 0x7E45, 0xC162, 0x7E46, 0xC15B, 0x7E47, 0xEDD9,
+	0x7E48, 0xC166, 0x7E49, 0xEDD7, 0x7E4C, 0xEDDB, 0x7E50, 0xF06E,
+	0x7E51, 0xF074, 0x7E52, 0xC2B9, 0x7E53, 0xF077, 0x7E54, 0xC2B4,
+	0x7E55, 0xC2B5, 0x7E56, 0xF06F, 0x7E57, 0xF076, 0x7E58, 0xF071,
+	0x7E59, 0xC2BA, 0x7E5A, 0xC2B7, 0x7E5C, 0xF06D, 0x7E5E, 0xC2B6,
+	0x7E5F, 0xF073, 0x7E60, 0xF075, 0x7E61, 0xC2B8, 0x7E62, 0xF072,
+	0x7E63, 0xF070, 0x7E68, 0xF2B8, 0x7E69, 0xC3B7, 0x7E6A, 0xC3B8,
+	0x7E6B, 0xC3B4, 0x7E6D, 0xC3B5, 0x7E6F, 0xF2B4, 0x7E70, 0xF2B2,
+	0x7E72, 0xF2B6, 0x7E73, 0xC3BA, 0x7E74, 0xF2B7, 0x7E75, 0xF2B0,
+	0x7E76, 0xF2AF, 0x7E77, 0xF2B3, 0x7E78, 0xF2B1, 0x7E79, 0xC3B6,
+	0x7E7A, 0xF2B5, 0x7E7B, 0xF4AC, 0x7E7C, 0xC47E, 0x7E7D, 0xC47D,
+	0x7E7E, 0xF4AD, 0x7E80, 0xF4AF, 0x7E81, 0xF4AE, 0x7E82, 0xC4A1,
+	0x7E86, 0xF5EB, 0x7E87, 0xF5E8, 0x7E88, 0xF5E9, 0x7E8A, 0xF5E7,
+	0x7E8B, 0xF5EA, 0x7E8C, 0xC4F2, 0x7E8D, 0xF5EC, 0x7E8F, 0xC4F1,
+	0x7E91, 0xF742, 0x7E93, 0xC5D5, 0x7E94, 0xC5D7, 0x7E95, 0xF7EE,
+	0x7E96, 0xC5D6, 0x7E97, 0xF8B9, 0x7E98, 0xF940, 0x7E99, 0xF942,
+	0x7E9A, 0xF8FE, 0x7E9B, 0xF941, 0x7E9C, 0xC66C, 0x7F36, 0xA6CE,
+	0x7F38, 0xACFB, 0x7F39, 0xD26F, 0x7F3A, 0xAFCA, 0x7F3D, 0xB2DA,
+	0x7F3E, 0xDAFC, 0x7F3F, 0xDAFD, 0x7F43, 0xEADF, 0x7F44, 0xC16A,
+	0x7F45, 0xEDE1, 0x7F48, 0xC2BB, 0x7F4A, 0xF2BA, 0x7F4B, 0xF2B9,
+	0x7F4C, 0xC4A2, 0x7F4D, 0xF5ED, 0x7F4F, 0xF743, 0x7F50, 0xC5F8,
+	0x7F51, 0xCA49, 0x7F54, 0xAAC9, 0x7F55, 0xA875, 0x7F58, 0xD04D,
+	0x7F5B, 0xD360, 0x7F5C, 0xD35B, 0x7F5D, 0xD35F, 0x7F5E, 0xD35D,
+	0x7F5F, 0xAFCB, 0x7F60, 0xD35E, 0x7F61, 0xD35C, 0x7F63, 0xD6F1,
+	0x7F65, 0xDAFE, 0x7F66, 0xDB40, 0x7F67, 0xDF69, 0x7F68, 0xDF6A,
+	0x7F69, 0xB86E, 0x7F6A, 0xB86F, 0x7F6B, 0xDF68, 0x7F6C, 0xDF6B,
+	0x7F6D, 0xDF67, 0x7F6E, 0xB86D, 0x7F70, 0xBB40, 0x7F72, 0xB870,
+	0x7F73, 0xE37A, 0x7F75, 0xBD7C, 0x7F76, 0xE6F1, 0x7F77, 0xBD7D,
+	0x7F79, 0xBFA9, 0x7F7A, 0xEAE2, 0x7F7B, 0xEAE0, 0x7F7C, 0xEAE1,
+	0x7F7D, 0xEDE4, 0x7F7E, 0xEDE3, 0x7F7F, 0xEDE2, 0x7F83, 0xF2BB,
+	0x7F85, 0xC3B9, 0x7F86, 0xF2BC, 0x7F87, 0xF744, 0x7F88, 0xC5F9,
+	0x7F89, 0xF8BA, 0x7F8A, 0xA6CF, 0x7F8B, 0xAACB, 0x7F8C, 0xAACA,
+	0x7F8D, 0xD04F, 0x7F8E, 0xACFC, 0x7F91, 0xD04E, 0x7F92, 0xD362,
+	0x7F94, 0xAFCC, 0x7F95, 0xD6F2, 0x7F96, 0xD361, 0x7F9A, 0xB2DC,
+	0x7F9B, 0xD6F5, 0x7F9C, 0xD6F3, 0x7F9D, 0xD6F4, 0x7F9E, 0xB2DB,
+	0x7FA0, 0xDB42, 0x7FA1, 0xDB43, 0x7FA2, 0xDB41, 0x7FA4, 0xB873,
+	0x7FA5, 0xDF6D, 0x7FA6, 0xDF6C, 0x7FA7, 0xDF6E, 0x7FA8, 0xB872,
+	0x7FA9, 0xB871, 0x7FAC, 0xE6F2, 0x7FAD, 0xE6F4, 0x7FAF, 0xBD7E,
+	0x7FB0, 0xE6F3, 0x7FB1, 0xEAE3, 0x7FB2, 0xBFAA, 0x7FB3, 0xF079,
+	0x7FB5, 0xF078, 0x7FB6, 0xC3BB, 0x7FB7, 0xF2BD, 0x7FB8, 0xC3BD,
+	0x7FB9, 0xC3BC, 0x7FBA, 0xF4B0, 0x7FBB, 0xF5EE, 0x7FBC, 0xC4F3,
+	0x7FBD, 0xA6D0, 0x7FBE, 0xD050, 0x7FBF, 0xACFD, 0x7FC0, 0xD365,
+	0x7FC1, 0xAFCE, 0x7FC2, 0xD364, 0x7FC3, 0xD363, 0x7FC5, 0xAFCD,
+	0x7FC7, 0xD6FB, 0x7FC9, 0xD6FD, 0x7FCA, 0xD6F6, 0x7FCB, 0xD6F7,
+	0x7FCC, 0xB2DD, 0x7FCD, 0xD6F8, 0x7FCE, 0xB2DE, 0x7FCF, 0xD6FC,
+	0x7FD0, 0xD6F9, 0x7FD1, 0xD6FA, 0x7FD2, 0xB2DF, 0x7FD4, 0xB5BE,
+	0x7FD5, 0xB5BF, 0x7FD7, 0xDB44, 0x7FDB, 0xDF6F, 0x7FDC, 0xDF70,
+	0x7FDE, 0xE37E, 0x7FDF, 0xBB43, 0x7FE0, 0xBB41, 0x7FE1, 0xBB42,
+	0x7FE2, 0xE37B, 0x7FE3, 0xE37C, 0x7FE5, 0xE37D, 0x7FE6, 0xE6F9,
+	0x7FE8, 0xE6FA, 0x7FE9, 0xBDA1, 0x7FEA, 0xE6F7, 0x7FEB, 0xE6F6,
+	0x7FEC, 0xE6F8, 0x7FED, 0xE6F5, 0x7FEE, 0xBFAD, 0x7FEF, 0xEAE4,
+	0x7FF0, 0xBFAB, 0x7FF1, 0xBFAC, 0x7FF2, 0xEDE6, 0x7FF3, 0xC16B,
+	0x7FF4, 0xEDE5, 0x7FF5, 0xEFA8, 0x7FF7, 0xF07A, 0x7FF8, 0xF07B,
+	0x7FF9, 0xC2BC, 0x7FFB, 0xC2BD, 0x7FFC, 0xC16C, 0x7FFD, 0xF2BE,
+	0x7FFE, 0xF2BF, 0x7FFF, 0xF4B1, 0x8000, 0xC4A3, 0x8001, 0xA6D1,
+	0x8003, 0xA6D2, 0x8004, 0xACFE, 0x8005, 0xAACC, 0x8006, 0xAFCF,
+	0x8007, 0xD051, 0x800B, 0xB5C0, 0x800C, 0xA6D3, 0x800D, 0xAD41,
+	0x800E, 0xD052, 0x800F, 0xD053, 0x8010, 0xAD40, 0x8011, 0xAD42,
+	0x8012, 0xA6D4, 0x8014, 0xD054, 0x8015, 0xAFD1, 0x8016, 0xD366,
+	0x8017, 0xAFD3, 0x8018, 0xAFD0, 0x8019, 0xAFD2, 0x801B, 0xD741,
+	0x801C, 0xB2E0, 0x801E, 0xD740, 0x801F, 0xD6FE, 0x8021, 0xDF71,
+	0x8024, 0xE3A1, 0x8026, 0xBDA2, 0x8028, 0xBFAE, 0x8029, 0xEAE6,
+	0x802A, 0xEAE5, 0x802C, 0xEDE7, 0x8030, 0xF5EF, 0x8033, 0xA6D5,
+	0x8034, 0xCB73, 0x8035, 0xCDAA, 0x8036, 0xAD43, 0x8037, 0xD055,
+	0x8039, 0xD368, 0x803D, 0xAFD4, 0x803E, 0xD367, 0x803F, 0xAFD5,
+	0x8043, 0xD743, 0x8046, 0xB2E2, 0x8047, 0xD742, 0x8048, 0xD744,
+	0x804A, 0xB2E1, 0x804F, 0xDB46, 0x8050, 0xDB47, 0x8051, 0xDB45,
+	0x8052, 0xB5C1, 0x8056, 0xB874, 0x8058, 0xB875, 0x805A, 0xBB45,
+	0x805C, 0xE3A3, 0x805D, 0xE3A2, 0x805E, 0xBB44, 0x8064, 0xE6FB,
+	0x8067, 0xE6FC, 0x806C, 0xEAE7, 0x806F, 0xC170, 0x8070, 0xC16F,
+	0x8071, 0xC16D, 0x8072, 0xC16E, 0x8073, 0xC171, 0x8075, 0xF07C,
+	0x8076, 0xC2BF, 0x8077, 0xC2BE, 0x8078, 0xF2C0, 0x8079, 0xF4B2,
+	0x807D, 0xC5A5, 0x807E, 0xC5A4, 0x807F, 0xA6D6, 0x8082, 0xD1FB,
+	0x8084, 0xB877, 0x8085, 0xB5C2, 0x8086, 0xB876, 0x8087, 0xBB46,
+	0x8089, 0xA6D7, 0x808A, 0xC9A9, 0x808B, 0xA6D8, 0x808C, 0xA6D9,
+	0x808F, 0xCDAB, 0x8090, 0xCB76, 0x8092, 0xCB77, 0x8093, 0xA877,
+	0x8095, 0xCB74, 0x8096, 0xA876, 0x8098, 0xA879, 0x8099, 0xCB75,
+	0x809A, 0xA87B, 0x809B, 0xA87A, 0x809C, 0xCB78, 0x809D, 0xA878,
+	0x80A1, 0xAAD1, 0x80A2, 0xAACF, 0x80A3, 0xCDAD, 0x80A5, 0xAACE,
+	0x80A9, 0xAAD3, 0x80AA, 0xAAD5, 0x80AB, 0xAAD2, 0x80AD, 0xCDB0,
+	0x80AE, 0xCDAC, 0x80AF, 0xAAD6, 0x80B1, 0xAAD0, 0x80B2, 0xA87C,
+	0x80B4, 0xAAD4, 0x80B5, 0xCDAF, 0x80B8, 0xCDAE, 0x80BA, 0xAACD,
+	0x80C2, 0xD05B, 0x80C3, 0xAD47, 0x80C4, 0xAD48, 0x80C5, 0xD05D,
+	0x80C7, 0xD057, 0x80C8, 0xD05A, 0x80C9, 0xD063, 0x80CA, 0xD061,
+	0x80CC, 0xAD49, 0x80CD, 0xD067, 0x80CE, 0xAD4C, 0x80CF, 0xD064,
+	0x80D0, 0xD05C, 0x80D1, 0xD059, 0x80D4, 0xDB49, 0x80D5, 0xD062,
+	0x80D6, 0xAD44, 0x80D7, 0xD065, 0x80D8, 0xD056, 0x80D9, 0xD05F,
+	0x80DA, 0xAD46, 0x80DB, 0xAD4B, 0x80DC, 0xD060, 0x80DD, 0xAD4F,
+	0x80DE, 0xAD4D, 0x80E0, 0xD058, 0x80E1, 0xAD4A, 0x80E3, 0xD05E,
+	0x80E4, 0xAD4E, 0x80E5, 0xAD45, 0x80E6, 0xD066, 0x80ED, 0xAFDA,
+	0x80EF, 0xAFE3, 0x80F0, 0xAFD8, 0x80F1, 0xAFD6, 0x80F2, 0xD36A,
+	0x80F3, 0xAFDE, 0x80F4, 0xAFDB, 0x80F5, 0xD36C, 0x80F8, 0xAFDD,
+	0x80F9, 0xD36B, 0x80FA, 0xD369, 0x80FB, 0xD36E, 0x80FC, 0xAFE2,
+	0x80FD, 0xAFE0, 0x80FE, 0xDB48, 0x8100, 0xD36F, 0x8101, 0xD36D,
+	0x8102, 0xAFD7, 0x8105, 0xAFD9, 0x8106, 0xAFDC, 0x8108, 0xAFDF,
+	0x810A, 0xAFE1, 0x8115, 0xD74E, 0x8116, 0xB2E4, 0x8118, 0xD745,
+	0x8119, 0xD747, 0x811B, 0xD748, 0x811D, 0xD750, 0x811E, 0xD74C,
+	0x811F, 0xD74A, 0x8121, 0xD74D, 0x8122, 0xD751, 0x8123, 0xB2E5,
+	0x8124, 0xB2E9, 0x8125, 0xD746, 0x8127, 0xD74F, 0x8129, 0xB2E7,
+	0x812B, 0xB2E6, 0x812C, 0xD74B, 0x812D, 0xD749, 0x812F, 0xB2E3,
+	0x8130, 0xB2E8, 0x8139, 0xB5C8, 0x813A, 0xDB51, 0x813D, 0xDB4F,
+	0x813E, 0xB5CA, 0x8143, 0xDB4A, 0x8144, 0xDFA1, 0x8146, 0xB5C9,
+	0x8147, 0xDB4E, 0x814A, 0xDB4B, 0x814B, 0xB5C5, 0x814C, 0xB5CB,
+	0x814D, 0xDB50, 0x814E, 0xB5C7, 0x814F, 0xDB4D, 0x8150, 0xBB47,
+	0x8151, 0xB5C6, 0x8152, 0xDB4C, 0x8153, 0xB5CC, 0x8154, 0xB5C4,
+	0x8155, 0xB5C3, 0x815B, 0xDF77, 0x815C, 0xDF75, 0x815E, 0xDF7B,
+	0x8160, 0xDF73, 0x8161, 0xDFA2, 0x8162, 0xDF78, 0x8164, 0xDF72,
+	0x8165, 0xB87B, 0x8166, 0xB8A3, 0x8167, 0xDF7D, 0x8169, 0xDF76,
+	0x816B, 0xB87E, 0x816E, 0xB87C, 0x816F, 0xDF7E, 0x8170, 0xB879,
+	0x8171, 0xB878, 0x8172, 0xDF79, 0x8173, 0xB87D, 0x8174, 0xB5CD,
+	0x8176, 0xDF7C, 0x8177, 0xDF74, 0x8178, 0xB87A, 0x8179, 0xB8A1,
+	0x817A, 0xB8A2, 0x817F, 0xBB4C, 0x8180, 0xBB48, 0x8182, 0xBB4D,
+	0x8183, 0xE3A6, 0x8186, 0xE3A5, 0x8187, 0xE3A7, 0x8188, 0xBB4A,
+	0x8189, 0xE3A4, 0x818A, 0xBB4B, 0x818B, 0xE3AA, 0x818C, 0xE3A9,
+	0x818D, 0xE3A8, 0x818F, 0xBB49, 0x8195, 0xE741, 0x8197, 0xE744,
+	0x8198, 0xBDA8, 0x8199, 0xE743, 0x819A, 0xBDA7, 0x819B, 0xBDA3,
+	0x819C, 0xBDA4, 0x819D, 0xBDA5, 0x819E, 0xE740, 0x819F, 0xE6FE,
+	0x81A0, 0xBDA6, 0x81A2, 0xE742, 0x81A3, 0xE6FD, 0x81A6, 0xEAE9,
+	0x81A7, 0xEAF3, 0x81A8, 0xBFB1, 0x81A9, 0xBFB0, 0x81AB, 0xEAED,
+	0x81AC, 0xEAEF, 0x81AE, 0xEAEA, 0x81B0, 0xEAEE, 0x81B1, 0xEAE8,
+	0x81B2, 0xEAF1, 0x81B3, 0xBFAF, 0x81B4, 0xEAF0, 0x81B5, 0xEAEC,
+	0x81B7, 0xEAF2, 0x81B9, 0xEAEB, 0x81BA, 0xC174, 0x81BB, 0xEDE8,
+	0x81BC, 0xEDEE, 0x81BD, 0xC178, 0x81BE, 0xC17A, 0x81BF, 0xC177,
+	0x81C0, 0xC176, 0x81C2, 0xC175, 0x81C3, 0xC173, 0x81C4, 0xEDE9,
+	0x81C5, 0xEDEC, 0x81C6, 0xC172, 0x81C7, 0xEDED, 0x81C9, 0xC179,
+	0x81CA, 0xEDEB, 0x81CC, 0xEDEA, 0x81CD, 0xC2C0, 0x81CF, 0xC2C1,
+	0x81D0, 0xF0A1, 0x81D1, 0xF07D, 0x81D2, 0xF07E, 0x81D5, 0xF2C2,
+	0x81D7, 0xF2C1, 0x81D8, 0xC3BE, 0x81D9, 0xF4B4, 0x81DA, 0xC4A4,
+	0x81DB, 0xF4B3, 0x81DD, 0xF5F0, 0x81DE, 0xF745, 0x81DF, 0xC5A6,
+	0x81E0, 0xF943, 0x81E1, 0xF944, 0x81E2, 0xC5D8, 0x81E3, 0xA6DA,
+	0x81E5, 0xAAD7, 0x81E6, 0xDB52, 0x81E7, 0xBB4E, 0x81E8, 0xC17B,
+	0x81E9, 0xEDEF, 0x81EA, 0xA6DB, 0x81EC, 0xAFE5, 0x81ED, 0xAFE4,
+	0x81EE, 0xDB53, 0x81F2, 0xEAF4, 0x81F3, 0xA6DC, 0x81F4, 0xAD50,
+	0x81F7, 0xDB54, 0x81F8, 0xDB55, 0x81F9, 0xDB56, 0x81FA, 0xBB4F,
+	0x81FB, 0xBFB2, 0x81FC, 0xA6DD, 0x81FE, 0xAAD8, 0x81FF, 0xD068,
+	0x8200, 0xAFE6, 0x8201, 0xD370, 0x8202, 0xB2EA, 0x8204, 0xDB57,
+	0x8205, 0xB8A4, 0x8207, 0xBB50, 0x8208, 0xBFB3, 0x8209, 0xC17C,
+	0x820A, 0xC2C2, 0x820B, 0xF4B5, 0x820C, 0xA6DE, 0x820D, 0xAAD9,
+	0x8210, 0xAFE7, 0x8211, 0xD752, 0x8212, 0xB5CE, 0x8214, 0xBB51,
+	0x8215, 0xE3AB, 0x8216, 0xE745, 0x821B, 0xA6DF, 0x821C, 0xB5CF,
+	0x821D, 0xDFA3, 0x821E, 0xBB52, 0x821F, 0xA6E0, 0x8220, 0xCDB1,
+	0x8221, 0xD069, 0x8222, 0xAD51, 0x8225, 0xD372, 0x8228, 0xAFEA,
+	0x822A, 0xAFE8, 0x822B, 0xAFE9, 0x822C, 0xAFEB, 0x822F, 0xD371,
+	0x8232, 0xD757, 0x8233, 0xD754, 0x8234, 0xD756, 0x8235, 0xB2EB,
+	0x8236, 0xB2ED, 0x8237, 0xB2EC, 0x8238, 0xD753, 0x8239, 0xB2EE,
+	0x823A, 0xD755, 0x823C, 0xDB58, 0x823D, 0xDB59, 0x823F, 0xDB5A,
+	0x8240, 0xDFA6, 0x8242, 0xDFA7, 0x8244, 0xDFA5, 0x8245, 0xDFA8,
+	0x8247, 0xB8A5, 0x8249, 0xDFA4, 0x824B, 0xBB53, 0x824E, 0xE74A,
+	0x824F, 0xE746, 0x8250, 0xE749, 0x8251, 0xE74B, 0x8252, 0xE748,
+	0x8253, 0xE747, 0x8255, 0xEAF5, 0x8256, 0xEAF6, 0x8257, 0xEAF7,
+	0x8258, 0xBFB4, 0x8259, 0xBFB5, 0x825A, 0xEDF1, 0x825B, 0xEDF0,
+	0x825C, 0xEDF2, 0x825E, 0xF0A3, 0x825F, 0xF0A2, 0x8261, 0xF2C4,
+	0x8263, 0xF2C5, 0x8264, 0xF2C3, 0x8266, 0xC4A5, 0x8268, 0xF4B6,
+	0x8269, 0xF4B7, 0x826B, 0xF746, 0x826C, 0xF7EF, 0x826D, 0xF8BB,
+	0x826E, 0xA6E1, 0x826F, 0xA87D, 0x8271, 0xC17D, 0x8272, 0xA6E2,
+	0x8274, 0xD758, 0x8275, 0xDB5B, 0x8277, 0xC641, 0x8278, 0xCA4A,
+	0x827C, 0xCA4B, 0x827D, 0xCA4D, 0x827E, 0xA6E3, 0x827F, 0xCA4E,
+	0x8280, 0xCA4C, 0x8283, 0xCBA2, 0x8284, 0xCBA3, 0x8285, 0xCB7B,
+	0x828A, 0xCBA1, 0x828B, 0xA8A1, 0x828D, 0xA8A2, 0x828E, 0xCB7C,
+	0x828F, 0xCB7A, 0x8290, 0xCB79, 0x8291, 0xCB7D, 0x8292, 0xA87E,
+	0x8293, 0xCB7E, 0x8294, 0xD06A, 0x8298, 0xCDB6, 0x8299, 0xAADC,
+	0x829A, 0xCDB5, 0x829B, 0xCDB7, 0x829D, 0xAADB, 0x829E, 0xCDBC,
+	0x829F, 0xAADF, 0x82A0, 0xCDB2, 0x82A1, 0xCDC0, 0x82A2, 0xCDC6,
+	0x82A3, 0xAAE6, 0x82A4, 0xCDC3, 0x82A5, 0xAAE3, 0x82A7, 0xCDB9,
+	0x82A8, 0xCDBF, 0x82A9, 0xCDC1, 0x82AB, 0xCDB4, 0x82AC, 0xAAE2,
+	0x82AD, 0xAADD, 0x82AE, 0xCDBA, 0x82AF, 0xAAE4, 0x82B0, 0xAAE7,
+	0x82B1, 0xAAE1, 0x82B3, 0xAADA, 0x82B4, 0xCDBE, 0x82B5, 0xCDB8,
+	0x82B6, 0xCDC5, 0x82B7, 0xAAE9, 0x82B8, 0xAAE5, 0x82B9, 0xAAE0,
+	0x82BA, 0xCDBD, 0x82BB, 0xAFEC, 0x82BC, 0xCDBB, 0x82BD, 0xAADE,
+	0x82BE, 0xAAE8, 0x82C0, 0xCDB3, 0x82C2, 0xCDC2, 0x82C3, 0xCDC4,
+	0x82D1, 0xAD62, 0x82D2, 0xAD5C, 0x82D3, 0xAD64, 0x82D4, 0xAD61,
+	0x82D5, 0xD071, 0x82D6, 0xD074, 0x82D7, 0xAD5D, 0x82D9, 0xD06B,
+	0x82DB, 0xAD56, 0x82DC, 0xAD60, 0x82DE, 0xAD63, 0x82DF, 0xAD65,
+	0x82E0, 0xD0A2, 0x82E1, 0xD077, 0x82E3, 0xAD55, 0x82E4, 0xD0A1,
+	0x82E5, 0xAD59, 0x82E6, 0xAD57, 0x82E7, 0xAD52, 0x82E8, 0xD06F,
+	0x82EA, 0xD07E, 0x82EB, 0xD073, 0x82EC, 0xD076, 0x82ED, 0xD0A5,
+	0x82EF, 0xAD66, 0x82F0, 0xD07D, 0x82F1, 0xAD5E, 0x82F2, 0xD078,
+	0x82F3, 0xD0A4, 0x82F4, 0xD075, 0x82F5, 0xD079, 0x82F6, 0xD07C,
+	0x82F9, 0xD06D, 0x82FA, 0xD0A3, 0x82FB, 0xD07B, 0x82FE, 0xD06C,
+	0x8300, 0xD070, 0x8301, 0xAD5F, 0x8302, 0xAD5A, 0x8303, 0xAD53,
+	0x8304, 0xAD58, 0x8305, 0xAD54, 0x8306, 0xAD67, 0x8307, 0xD06E,
+	0x8308, 0xD3A5, 0x8309, 0xAD5B, 0x830C, 0xD07A, 0x830D, 0xCE41,
+	0x8316, 0xD3A8, 0x8317, 0xAFFA, 0x8319, 0xD376, 0x831B, 0xD3A3,
+	0x831C, 0xD37D, 0x831E, 0xD3B2, 0x8320, 0xD3AA, 0x8322, 0xD37E,
+	0x8324, 0xD3A9, 0x8325, 0xD378, 0x8326, 0xD37C, 0x8327, 0xD3B5,
+	0x8328, 0xAFFD, 0x8329, 0xD3AD, 0x832A, 0xD3A4, 0x832B, 0xAFED,
+	0x832C, 0xD3B3, 0x832D, 0xD374, 0x832F, 0xD3AC, 0x8331, 0xAFFC,
+	0x8332, 0xAFF7, 0x8333, 0xD373, 0x8334, 0xAFF5, 0x8335, 0xAFF4,
+	0x8336, 0xAFF9, 0x8337, 0xD3AB, 0x8338, 0xAFF1, 0x8339, 0xAFF8,
+	0x833A, 0xD072, 0x833B, 0xDB5C, 0x833C, 0xD3A6, 0x833F, 0xD37A,
+	0x8340, 0xAFFB, 0x8341, 0xD37B, 0x8342, 0xD3A1, 0x8343, 0xAFFE,
+	0x8344, 0xD375, 0x8345, 0xD3AF, 0x8347, 0xD3AE, 0x8348, 0xD3B6,
+	0x8349, 0xAFF3, 0x834A, 0xAFF0, 0x834B, 0xD3B4, 0x834C, 0xD3B0,
+	0x834D, 0xD3A7, 0x834E, 0xD3A2, 0x834F, 0xAFF6, 0x8350, 0xAFF2,
+	0x8351, 0xD377, 0x8352, 0xAFEE, 0x8353, 0xD3B1, 0x8354, 0xAFEF,
+	0x8356, 0xD379, 0x8373, 0xD75E, 0x8374, 0xD760, 0x8375, 0xD765,
+	0x8376, 0xD779, 0x8377, 0xB2FC, 0x8378, 0xB2F2, 0x837A, 0xD75D,
+	0x837B, 0xB2FD, 0x837C, 0xB2FE, 0x837D, 0xD768, 0x837E, 0xD76F,
+	0x837F, 0xD775, 0x8381, 0xD762, 0x8383, 0xD769, 0x8386, 0xB340,
+	0x8387, 0xD777, 0x8388, 0xD772, 0x8389, 0xB2FA, 0x838A, 0xB2F8,
+	0x838B, 0xD76E, 0x838C, 0xD76A, 0x838D, 0xD75C, 0x838E, 0xB2EF,
+	0x838F, 0xD761, 0x8390, 0xD759, 0x8392, 0xB2F7, 0x8393, 0xB2F9,
+	0x8394, 0xD766, 0x8395, 0xD763, 0x8396, 0xB2F4, 0x8397, 0xD773,
+	0x8398, 0xB2F1, 0x8399, 0xD764, 0x839A, 0xD77A, 0x839B, 0xD76C,
+	0x839D, 0xD76B, 0x839E, 0xB2F0, 0x83A0, 0xB2FB, 0x83A2, 0xB2F3,
+	0x83A3, 0xD75A, 0x83A4, 0xD75F, 0x83A5, 0xD770, 0x83A6, 0xD776,
+	0x83A7, 0xB341, 0x83A8, 0xD75B, 0x83A9, 0xD767, 0x83AA, 0xD76D,
+	0x83AB, 0xB2F6, 0x83AE, 0xD778, 0x83AF, 0xD771, 0x83B0, 0xD774,
+	0x83BD, 0xB2F5, 0x83BF, 0xDB6C, 0x83C0, 0xDB60, 0x83C1, 0xB5D7,
+	0x83C2, 0xDB7D, 0x83C3, 0xDBA7, 0x83C4, 0xDBAA, 0x83C5, 0xB5D5,
+	0x83C6, 0xDB68, 0x83C7, 0xDBA3, 0x83C8, 0xDB69, 0x83C9, 0xDB77,
+	0x83CA, 0xB5E2, 0x83CB, 0xDB73, 0x83CC, 0xB5DF, 0x83CE, 0xDB74,
+	0x83CF, 0xDB5D, 0x83D1, 0xDBA4, 0x83D4, 0xB5E8, 0x83D5, 0xDBA1,
+	0x83D6, 0xDB75, 0x83D7, 0xDBAC, 0x83D8, 0xDB70, 0x83D9, 0xDFC8,
+	0x83DB, 0xDBAF, 0x83DC, 0xB5E6, 0x83DD, 0xDB6E, 0x83DE, 0xDB7A,
+	0x83DF, 0xB5E9, 0x83E0, 0xB5D4, 0x83E1, 0xDB72, 0x83E2, 0xDBAD,
+	0x83E3, 0xDB6B, 0x83E4, 0xDB64, 0x83E5, 0xDB6F, 0x83E7, 0xDB63,
+	0x83E8, 0xDB61, 0x83E9, 0xB5D0, 0x83EA, 0xDBA5, 0x83EB, 0xDB6A,
+	0x83EC, 0xDBA8, 0x83EE, 0xDBA9, 0x83EF, 0xB5D8, 0x83F0, 0xB5DD,
+	0x83F1, 0xB5D9, 0x83F2, 0xB5E1, 0x83F3, 0xDB7E, 0x83F4, 0xB5DA,
+	0x83F5, 0xDB76, 0x83F6, 0xDB66, 0x83F8, 0xB5D2, 0x83F9, 0xDB5E,
+	0x83FA, 0xDBA2, 0x83FB, 0xDBAB, 0x83FC, 0xDB65, 0x83FD, 0xB5E0,
+	0x83FE, 0xDBB0, 0x83FF, 0xDB71, 0x8401, 0xDB6D, 0x8403, 0xB5D1,
+	0x8404, 0xB5E5, 0x8406, 0xDB7C, 0x8407, 0xB5E7, 0x8409, 0xDB78,
+	0x840A, 0xB5DC, 0x840B, 0xB5D6, 0x840C, 0xB5DE, 0x840D, 0xB5D3,
+	0x840E, 0xB5E4, 0x840F, 0xDB79, 0x8410, 0xDB67, 0x8411, 0xDB7B,
+	0x8412, 0xDB62, 0x8413, 0xDBA6, 0x841B, 0xDBAE, 0x8423, 0xDB5F,
+	0x8429, 0xDFC7, 0x842B, 0xDFDD, 0x842C, 0xB855, 0x842D, 0xDFCC,
+	0x842F, 0xDFCA, 0x8430, 0xDFB5, 0x8431, 0xB8A9, 0x8432, 0xDFC5,
+	0x8433, 0xDFD9, 0x8434, 0xDFC1, 0x8435, 0xB8B1, 0x8436, 0xDFD8,
+	0x8437, 0xDFBF, 0x8438, 0xB5E3, 0x8439, 0xDFCF, 0x843A, 0xDFC0,
+	0x843B, 0xDFD6, 0x843C, 0xB8B0, 0x843D, 0xB8A8, 0x843F, 0xDFAA,
+	0x8440, 0xDFB2, 0x8442, 0xDFCB, 0x8443, 0xDFC3, 0x8444, 0xDFDC,
+	0x8445, 0xDFC6, 0x8446, 0xB8B6, 0x8447, 0xDFD7, 0x8449, 0xB8AD,
+	0x844B, 0xDFC9, 0x844C, 0xDFD1, 0x844D, 0xDFB6, 0x844E, 0xDFD0,
+	0x8450, 0xDFE1, 0x8451, 0xDFB1, 0x8452, 0xDFD2, 0x8454, 0xDFDF,
+	0x8456, 0xDFAB, 0x8457, 0xB5DB, 0x8459, 0xDFB9, 0x845A, 0xDFB8,
+	0x845B, 0xB8AF, 0x845D, 0xDFBC, 0x845E, 0xDFBE, 0x845F, 0xDFCD,
+	0x8460, 0xDFDE, 0x8461, 0xB8B2, 0x8463, 0xB8B3, 0x8465, 0xDFB0,
+	0x8466, 0xB8AB, 0x8467, 0xDFB4, 0x8468, 0xDFDA, 0x8469, 0xB8B4,
+	0x846B, 0xB8AC, 0x846C, 0xB8AE, 0x846D, 0xB8B5, 0x846E, 0xDFE0,
+	0x846F, 0xDFD3, 0x8470, 0xDFCE, 0x8473, 0xDFBB, 0x8474, 0xDFBA,
+	0x8475, 0xB8AA, 0x8476, 0xDFAC, 0x8477, 0xB8A7, 0x8478, 0xDFC4,
+	0x8479, 0xDFAD, 0x847A, 0xDFC2, 0x847D, 0xDFB7, 0x847E, 0xDFDB,
+	0x8482, 0xB8A6, 0x8486, 0xDFB3, 0x848D, 0xDFAF, 0x848E, 0xDFD5,
+	0x848F, 0xDFAE, 0x8490, 0xBB60, 0x8491, 0xE3D3, 0x8494, 0xE3C2,
+	0x8497, 0xE3AC, 0x8498, 0xE3CA, 0x8499, 0xBB58, 0x849A, 0xE3BB,
+	0x849B, 0xE3C5, 0x849C, 0xBB5B, 0x849D, 0xE3BE, 0x849E, 0xBB59,
+	0x849F, 0xE3AF, 0x84A0, 0xE3CD, 0x84A1, 0xE3AE, 0x84A2, 0xE3C1,
+	0x84A4, 0xE3AD, 0x84A7, 0xE3BF, 0x84A8, 0xE3C8, 0x84A9, 0xE3C6,
+	0x84AA, 0xE3BA, 0x84AB, 0xE3B5, 0x84AC, 0xE3B3, 0x84AE, 0xE3B4,
+	0x84AF, 0xE3C7, 0x84B0, 0xE3D2, 0x84B1, 0xE3BC, 0x84B2, 0xBB5A,
+	0x84B4, 0xE3B7, 0x84B6, 0xE3CB, 0x84B8, 0xBB5D, 0x84B9, 0xE3B6,
+	0x84BA, 0xE3B0, 0x84BB, 0xE3C0, 0x84BC, 0xBB61, 0x84BF, 0xBB55,
+	0x84C0, 0xBB5E, 0x84C1, 0xE3B8, 0x84C2, 0xE3B2, 0x84C4, 0xBB57,
+	0x84C5, 0xDFD4, 0x84C6, 0xBB56, 0x84C7, 0xE3C3, 0x84C9, 0xBB54,
+	0x84CA, 0xBB63, 0x84CB, 0xBB5C, 0x84CC, 0xE3C4, 0x84CD, 0xE3B9,
+	0x84CE, 0xE3B1, 0x84CF, 0xE3CC, 0x84D0, 0xE3BD, 0x84D1, 0xBB62,
+	0x84D2, 0xE3D0, 0x84D3, 0xBB5F, 0x84D4, 0xE3CF, 0x84D6, 0xE3C9,
+	0x84D7, 0xE3CE, 0x84DB, 0xE3D1, 0x84E7, 0xE773, 0x84E8, 0xE774,
+	0x84E9, 0xE767, 0x84EA, 0xE766, 0x84EB, 0xE762, 0x84EC, 0xBDB4,
+	0x84EE, 0xBDAC, 0x84EF, 0xE776, 0x84F0, 0xE775, 0x84F1, 0xDFA9,
+	0x84F2, 0xE75F, 0x84F3, 0xE763, 0x84F4, 0xE75D, 0x84F6, 0xE770,
+	0x84F7, 0xE761, 0x84F9, 0xE777, 0x84FA, 0xE75A, 0x84FB, 0xE758,
+	0x84FC, 0xE764, 0x84FD, 0xE76E, 0x84FE, 0xE769, 0x84FF, 0xBDB6,
+	0x8500, 0xE74F, 0x8502, 0xE76D, 0x8506, 0xBDB7, 0x8507, 0xDFBD,
+	0x8508, 0xE75B, 0x8509, 0xE752, 0x850A, 0xE755, 0x850B, 0xE77B,
+	0x850C, 0xE75C, 0x850D, 0xE753, 0x850E, 0xE751, 0x850F, 0xE74E,
+	0x8511, 0xBDB0, 0x8512, 0xE765, 0x8513, 0xBDAF, 0x8514, 0xBDB3,
+	0x8515, 0xE760, 0x8516, 0xE768, 0x8517, 0xBDA9, 0x8518, 0xE778,
+	0x8519, 0xE77C, 0x851A, 0xBDAB, 0x851C, 0xE757, 0x851D, 0xE76B,
+	0x851E, 0xE76F, 0x851F, 0xE754, 0x8520, 0xE779, 0x8521, 0xBDB2,
+	0x8523, 0xBDB1, 0x8524, 0xE74C, 0x8525, 0xBDB5, 0x8526, 0xE772,
+	0x8527, 0xE756, 0x8528, 0xE76A, 0x8529, 0xE750, 0x852A, 0xE75E,
+	0x852B, 0xE759, 0x852C, 0xBDAD, 0x852D, 0xBDAE, 0x852E, 0xE76C,
+	0x852F, 0xE77D, 0x8530, 0xE77A, 0x8531, 0xE771, 0x853B, 0xE74D,
+	0x853D, 0xBDAA, 0x853E, 0xEB49, 0x8540, 0xEB40, 0x8541, 0xEB43,
+	0x8543, 0xBFBB, 0x8544, 0xEB45, 0x8545, 0xEAF9, 0x8546, 0xEB41,
+	0x8547, 0xEB47, 0x8548, 0xBFB8, 0x8549, 0xBFBC, 0x854A, 0xBFB6,
+	0x854D, 0xEAFB, 0x854E, 0xEB4C, 0x8551, 0xEB46, 0x8553, 0xEAFC,
+	0x8554, 0xEB55, 0x8555, 0xEB4F, 0x8556, 0xEAF8, 0x8557, 0xEE46,
+	0x8558, 0xEAFE, 0x8559, 0xBFB7, 0x855B, 0xEB4A, 0x855D, 0xEB54,
+	0x855E, 0xBFBF, 0x8560, 0xEB51, 0x8561, 0xEAFD, 0x8562, 0xEB44,
+	0x8563, 0xEB48, 0x8564, 0xEB42, 0x8565, 0xEB56, 0x8566, 0xEB53,
+	0x8567, 0xEB50, 0x8568, 0xBFB9, 0x8569, 0xBFBA, 0x856A, 0xBFBE,
+	0x856B, 0xEAFA, 0x856C, 0xEB57, 0x856D, 0xBFBD, 0x856E, 0xEB4D,
+	0x8571, 0xEB4B, 0x8575, 0xEB4E, 0x8576, 0xEE53, 0x8577, 0xEE40,
+	0x8578, 0xEE45, 0x8579, 0xEE52, 0x857A, 0xEE44, 0x857B, 0xEDFB,
+	0x857C, 0xEE41, 0x857E, 0xC1A2, 0x8580, 0xEDF4, 0x8581, 0xEE4D,
+	0x8582, 0xEE4F, 0x8583, 0xEDF3, 0x8584, 0xC1A1, 0x8585, 0xEE51,
+	0x8586, 0xEE49, 0x8587, 0xC1A8, 0x8588, 0xEE50, 0x8589, 0xEE42,
+	0x858A, 0xC1AA, 0x858B, 0xEDF9, 0x858C, 0xEB52, 0x858D, 0xEE4A,
+	0x858E, 0xEE47, 0x858F, 0xEDF5, 0x8590, 0xEE55, 0x8591, 0xC1A4,
+	0x8594, 0xC1A5, 0x8595, 0xEDF7, 0x8596, 0xEE48, 0x8598, 0xEE54,
+	0x8599, 0xEE4B, 0x859A, 0xEDFD, 0x859B, 0xC1A7, 0x859C, 0xC1A3,
+	0x859D, 0xEE4C, 0x859E, 0xEDFE, 0x859F, 0xEE56, 0x85A0, 0xEDF8,
+	0x85A1, 0xEE43, 0x85A2, 0xEE4E, 0x85A3, 0xEDFA, 0x85A4, 0xEDFC,
+	0x85A6, 0xC2CB, 0x85A7, 0xEDF6, 0x85A8, 0xC1A9, 0x85A9, 0xC2C4,
+	0x85AA, 0xC17E, 0x85AF, 0xC1A6, 0x85B0, 0xC2C8, 0x85B1, 0xF0B3,
+	0x85B3, 0xF0A9, 0x85B4, 0xF0A4, 0x85B5, 0xF0AA, 0x85B6, 0xF0B4,
+	0x85B7, 0xF0B8, 0x85B8, 0xF0B7, 0x85B9, 0xC2CA, 0x85BA, 0xC2C9,
+	0x85BD, 0xF0AB, 0x85BE, 0xF0B9, 0x85BF, 0xF0AE, 0x85C0, 0xF0A6,
+	0x85C2, 0xF0A8, 0x85C3, 0xF0A7, 0x85C4, 0xF0AD, 0x85C5, 0xF0B2,
+	0x85C6, 0xF0A5, 0x85C7, 0xF0AC, 0x85C8, 0xF0B1, 0x85C9, 0xC2C7,
+	0x85CB, 0xF0AF, 0x85CD, 0xC2C5, 0x85CE, 0xF0B0, 0x85CF, 0xC2C3,
+	0x85D0, 0xC2C6, 0x85D1, 0xF2D5, 0x85D2, 0xF0B5, 0x85D5, 0xC3C2,
+	0x85D7, 0xF2CD, 0x85D8, 0xF2D1, 0x85D9, 0xF2C9, 0x85DA, 0xF2CC,
+	0x85DC, 0xF2D4, 0x85DD, 0xC3C0, 0x85DE, 0xF2D9, 0x85DF, 0xF2D2,
+	0x85E1, 0xF2CA, 0x85E2, 0xF2DA, 0x85E3, 0xF2D3, 0x85E4, 0xC3C3,
+	0x85E5, 0xC3C4, 0x85E6, 0xF2D7, 0x85E8, 0xF2CB, 0x85E9, 0xC3BF,
+	0x85EA, 0xC3C1, 0x85EB, 0xF2C6, 0x85EC, 0xF2CE, 0x85ED, 0xF2C8,
+	0x85EF, 0xF2D8, 0x85F0, 0xF2D6, 0x85F1, 0xF2C7, 0x85F2, 0xF2CF,
+	0x85F6, 0xF4BE, 0x85F7, 0xC3C5, 0x85F8, 0xF2D0, 0x85F9, 0xC4A7,
+	0x85FA, 0xC4A9, 0x85FB, 0xC4A6, 0x85FD, 0xF4C3, 0x85FE, 0xF4BB,
+	0x85FF, 0xF4B9, 0x8600, 0xF4BD, 0x8601, 0xF4BA, 0x8604, 0xF4BF,
+	0x8605, 0xF4C1, 0x8606, 0xC4AA, 0x8607, 0xC4AC, 0x8609, 0xF4C0,
+	0x860A, 0xC4AD, 0x860B, 0xC4AB, 0x860C, 0xF4C2, 0x8611, 0xC4A8,
+	0x8617, 0xC4F4, 0x8618, 0xF5F1, 0x8619, 0xF5F7, 0x861A, 0xC4F6,
+	0x861B, 0xF4BC, 0x861C, 0xF5F6, 0x861E, 0xF5FD, 0x861F, 0xF5F4,
+	0x8620, 0xF5FB, 0x8621, 0xF5FA, 0x8622, 0xF4B8, 0x8623, 0xF5F5,
+	0x8624, 0xF0B6, 0x8625, 0xF5FE, 0x8626, 0xF5F3, 0x8627, 0xF5F8,
+	0x8629, 0xF5FC, 0x862A, 0xF5F2, 0x862C, 0xF74A, 0x862D, 0xC4F5,
+	0x862E, 0xF5F9, 0x8631, 0xF7F4, 0x8632, 0xF74B, 0x8633, 0xF749,
+	0x8634, 0xF747, 0x8635, 0xF748, 0x8636, 0xF74C, 0x8638, 0xC5D9,
+	0x8639, 0xF7F2, 0x863A, 0xF7F0, 0x863B, 0xF7F5, 0x863C, 0xF7F3,
+	0x863E, 0xF7F6, 0x863F, 0xC5DA, 0x8640, 0xF7F1, 0x8643, 0xF8BC,
+	0x8646, 0xF945, 0x8647, 0xF946, 0x8648, 0xF947, 0x864B, 0xF9C7,
+	0x864C, 0xF9BD, 0x864D, 0xCA4F, 0x864E, 0xAAEA, 0x8650, 0xAD68,
+	0x8652, 0xD3B8, 0x8653, 0xD3B7, 0x8654, 0xB040, 0x8655, 0xB342,
+	0x8656, 0xD77C, 0x8659, 0xD77B, 0x865B, 0xB5EA, 0x865C, 0xB8B8,
+	0x865E, 0xB8B7, 0x865F, 0xB8B9, 0x8661, 0xE3D4, 0x8662, 0xE77E,
+	0x8663, 0xEB58, 0x8664, 0xEB5A, 0x8665, 0xEB59, 0x8667, 0xC1AB,
+	0x8668, 0xEE57, 0x8669, 0xF0BA, 0x866A, 0xF9A5, 0x866B, 0xA6E4,
+	0x866D, 0xCDC9, 0x866E, 0xCDCA, 0x866F, 0xCDC8, 0x8670, 0xCDC7,
+	0x8671, 0xAAEB, 0x8673, 0xD0A9, 0x8674, 0xD0A7, 0x8677, 0xD0A6,
+	0x8679, 0xAD69, 0x867A, 0xAD6B, 0x867B, 0xAD6A, 0x867C, 0xD0A8,
+	0x8685, 0xD3C4, 0x8686, 0xD3C1, 0x8687, 0xD3BF, 0x868A, 0xB041,
+	0x868B, 0xD3C2, 0x868C, 0xB046, 0x868D, 0xD3BC, 0x868E, 0xD3CB,
+	0x8690, 0xD3CD, 0x8691, 0xD3BD, 0x8693, 0xB043, 0x8694, 0xD3CE,
+	0x8695, 0xD3C9, 0x8696, 0xD3BB, 0x8697, 0xD3C0, 0x8698, 0xD3CA,
+	0x8699, 0xD3C6, 0x869A, 0xD3C3, 0x869C, 0xB048, 0x869D, 0xD3CC,
+	0x869E, 0xD3BE, 0x86A1, 0xD3C7, 0x86A2, 0xD3B9, 0x86A3, 0xB047,
+	0x86A4, 0xB044, 0x86A5, 0xD3C5, 0x86A7, 0xD3C8, 0x86A8, 0xD3BA,
+	0x86A9, 0xB045, 0x86AA, 0xB042, 0x86AF, 0xB34C, 0x86B0, 0xD7A5,
+	0x86B1, 0xB34B, 0x86B3, 0xD7A8, 0x86B4, 0xD7AB, 0x86B5, 0xB348,
+	0x86B6, 0xB346, 0x86B7, 0xD77E, 0x86B8, 0xD7A9, 0x86B9, 0xD7A7,
+	0x86BA, 0xD7A4, 0x86BB, 0xD7AC, 0x86BC, 0xD7AD, 0x86BD, 0xD7AF,
+	0x86BE, 0xD7B0, 0x86BF, 0xD77D, 0x86C0, 0xB345, 0x86C1, 0xD7A2,
+	0x86C2, 0xD7A1, 0x86C3, 0xD7AE, 0x86C4, 0xB347, 0x86C5, 0xD7A3,
+	0x86C6, 0xB349, 0x86C7, 0xB344, 0x86C8, 0xD7A6, 0x86C9, 0xB34D,
+	0x86CB, 0xB34A, 0x86CC, 0xD7AA, 0x86D0, 0xB5F1, 0x86D1, 0xDBBF,
+	0x86D3, 0xDBB4, 0x86D4, 0xB5EE, 0x86D6, 0xDFE7, 0x86D7, 0xDBBD,
+	0x86D8, 0xDBB1, 0x86D9, 0xB5EC, 0x86DA, 0xDBB6, 0x86DB, 0xB5EF,
+	0x86DC, 0xDBBA, 0x86DD, 0xDBB8, 0x86DE, 0xB5F2, 0x86DF, 0xB5EB,
+	0x86E2, 0xDBB2, 0x86E3, 0xDBB5, 0x86E4, 0xB5F0, 0x86E6, 0xDBB3,
+	0x86E8, 0xDBBE, 0x86E9, 0xDBBC, 0x86EA, 0xDBB7, 0x86EB, 0xDBB9,
+	0x86EC, 0xDBBB, 0x86ED, 0xB5ED, 0x86F5, 0xDFE8, 0x86F6, 0xDFEE,
+	0x86F7, 0xDFE4, 0x86F8, 0xDFEA, 0x86F9, 0xB8BA, 0x86FA, 0xDFE6,
+	0x86FB, 0xB8C0, 0x86FE, 0xB8BF, 0x8700, 0xB8BE, 0x8701, 0xDFED,
+	0x8702, 0xB8C1, 0x8703, 0xB8C2, 0x8704, 0xDFE3, 0x8705, 0xDFF0,
+	0x8706, 0xB8C3, 0x8707, 0xB8BD, 0x8708, 0xB8BC, 0x8709, 0xDFEC,
+	0x870A, 0xB8C4, 0x870B, 0xDFE2, 0x870C, 0xDFE5, 0x870D, 0xDFEF,
+	0x870E, 0xDFEB, 0x8711, 0xE3F4, 0x8712, 0xE3E9, 0x8713, 0xB8BB,
+	0x8718, 0xBB6A, 0x8719, 0xE3DD, 0x871A, 0xE3F2, 0x871B, 0xE3DE,
+	0x871C, 0xBB65, 0x871E, 0xE3DB, 0x8720, 0xE3E4, 0x8721, 0xE3DC,
+	0x8722, 0xBB67, 0x8723, 0xE3D6, 0x8724, 0xE3F1, 0x8725, 0xBB68,
+	0x8726, 0xE3EE, 0x8727, 0xE3EF, 0x8728, 0xE3D7, 0x8729, 0xBB6D,
+	0x872A, 0xE3E6, 0x872C, 0xE3E0, 0x872D, 0xE3E7, 0x872E, 0xE3DA,
+	0x8730, 0xE3F3, 0x8731, 0xE3EB, 0x8732, 0xE3E5, 0x8733, 0xE3D5,
+	0x8734, 0xBB69, 0x8735, 0xE3EC, 0x8737, 0xBB6C, 0x8738, 0xE3F0,
+	0x873A, 0xE3EA, 0x873B, 0xBB66, 0x873C, 0xE3E8, 0x873E, 0xE3E2,
+	0x873F, 0xBB64, 0x8740, 0xE3D9, 0x8741, 0xE3E1, 0x8742, 0xE3ED,
+	0x8743, 0xE3DF, 0x8746, 0xE3E3, 0x874C, 0xBDC1, 0x874D, 0xDFE9,
+	0x874E, 0xE7B2, 0x874F, 0xE7BB, 0x8750, 0xE7B1, 0x8751, 0xE7AD,
+	0x8752, 0xE7AA, 0x8753, 0xBDC2, 0x8754, 0xE7A8, 0x8755, 0xBB6B,
+	0x8756, 0xE7A1, 0x8757, 0xBDC0, 0x8758, 0xE7A7, 0x8759, 0xBDBF,
+	0x875A, 0xE7AC, 0x875B, 0xE7A9, 0x875C, 0xE7B9, 0x875D, 0xE7B4,
+	0x875E, 0xE7AE, 0x875F, 0xE7B3, 0x8760, 0xBDBB, 0x8761, 0xE7AB,
+	0x8762, 0xE7BE, 0x8763, 0xE7A2, 0x8764, 0xE7A3, 0x8765, 0xE7BA,
+	0x8766, 0xBDBC, 0x8767, 0xE7BF, 0x8768, 0xBDBE, 0x8769, 0xE7C0,
+	0x876A, 0xE7B0, 0x876B, 0xE3D8, 0x876C, 0xE7B6, 0x876D, 0xE7AF,
+	0x876E, 0xE7B8, 0x876F, 0xE7B5, 0x8773, 0xE7A6, 0x8774, 0xBDB9,
+	0x8775, 0xE7BD, 0x8776, 0xBDBA, 0x8777, 0xE7A4, 0x8778, 0xBDBD,
+	0x8779, 0xEB64, 0x877A, 0xE7B7, 0x877B, 0xE7BC, 0x8781, 0xEB61,
+	0x8782, 0xBDB8, 0x8783, 0xBFC0, 0x8784, 0xEB6B, 0x8785, 0xEB67,
+	0x8787, 0xEB65, 0x8788, 0xEB60, 0x8789, 0xEB6F, 0x878D, 0xBFC4,
+	0x878F, 0xEB5C, 0x8790, 0xEB68, 0x8791, 0xEB69, 0x8792, 0xEB5F,
+	0x8793, 0xEB5E, 0x8794, 0xEB6C, 0x8796, 0xEB62, 0x8797, 0xEB5D,
+	0x8798, 0xEB63, 0x879A, 0xEB6E, 0x879B, 0xEB5B, 0x879C, 0xEB6D,
+	0x879D, 0xEB6A, 0x879E, 0xBFC2, 0x879F, 0xBFC1, 0x87A2, 0xBFC3,
+	0x87A3, 0xEB66, 0x87A4, 0xF0CB, 0x87AA, 0xEE59, 0x87AB, 0xC1B1,
+	0x87AC, 0xEE5D, 0x87AD, 0xEE5A, 0x87AE, 0xEE61, 0x87AF, 0xEE67,
+	0x87B0, 0xEE5C, 0x87B2, 0xEE70, 0x87B3, 0xC1AE, 0x87B4, 0xEE6A,
+	0x87B5, 0xEE5F, 0x87B6, 0xEE6B, 0x87B7, 0xEE66, 0x87B8, 0xEE6D,
+	0x87B9, 0xEE5E, 0x87BA, 0xC1B3, 0x87BB, 0xC1B2, 0x87BC, 0xEE60,
+	0x87BD, 0xEE6E, 0x87BE, 0xEE58, 0x87BF, 0xEE6C, 0x87C0, 0xC1AC,
+	0x87C2, 0xEE64, 0x87C3, 0xEE63, 0x87C4, 0xEE68, 0x87C5, 0xEE5B,
+	0x87C6, 0xC1B0, 0x87C8, 0xC1B4, 0x87C9, 0xEE62, 0x87CA, 0xEE69,
+	0x87CB, 0xC1B5, 0x87CC, 0xEE65, 0x87D1, 0xC1AD, 0x87D2, 0xC1AF,
+	0x87D3, 0xF0C7, 0x87D4, 0xF0C5, 0x87D7, 0xF0CC, 0x87D8, 0xF0C9,
+	0x87D9, 0xF0CD, 0x87DB, 0xF0BE, 0x87DC, 0xF0C6, 0x87DD, 0xF0D1,
+	0x87DE, 0xEE6F, 0x87DF, 0xF0C2, 0x87E0, 0xC2CF, 0x87E1, 0xE7A5,
+	0x87E2, 0xF0BD, 0x87E3, 0xF0CA, 0x87E4, 0xF0C4, 0x87E5, 0xF0C1,
+	0x87E6, 0xF0BC, 0x87E7, 0xF0BB, 0x87E8, 0xF0D0, 0x87EA, 0xF0C0,
+	0x87EB, 0xF0BF, 0x87EC, 0xC2CD, 0x87ED, 0xF0C8, 0x87EF, 0xC2CC,
+	0x87F2, 0xC2CE, 0x87F3, 0xF0C3, 0x87F4, 0xF0CF, 0x87F6, 0xF2DE,
+	0x87F7, 0xF2DF, 0x87F9, 0xC3C9, 0x87FA, 0xF2DC, 0x87FB, 0xC3C6,
+	0x87FC, 0xF2E4, 0x87FE, 0xC3CA, 0x87FF, 0xF2E6, 0x8800, 0xF2DB,
+	0x8801, 0xF0CE, 0x8802, 0xF2E8, 0x8803, 0xF2DD, 0x8805, 0xC3C7,
+	0x8806, 0xF2E3, 0x8808, 0xF2E5, 0x8809, 0xF2E0, 0x880A, 0xF2E7,
+	0x880B, 0xF2E2, 0x880C, 0xF2E1, 0x880D, 0xC3C8, 0x8810, 0xF4C5,
+	0x8811, 0xF4C6, 0x8813, 0xF4C8, 0x8814, 0xC4AE, 0x8815, 0xC4AF,
+	0x8816, 0xF4C9, 0x8817, 0xF4C7, 0x8819, 0xF4C4, 0x881B, 0xF642,
+	0x881C, 0xF645, 0x881D, 0xF641, 0x881F, 0xC4FA, 0x8820, 0xF643,
+	0x8821, 0xC4F9, 0x8822, 0xC4F8, 0x8823, 0xC4F7, 0x8824, 0xF644,
+	0x8825, 0xF751, 0x8826, 0xF74F, 0x8828, 0xF74E, 0x8829, 0xF640,
+	0x882A, 0xF750, 0x882B, 0xF646, 0x882C, 0xF74D, 0x882E, 0xF7F9,
+	0x882F, 0xF7D7, 0x8830, 0xF7F7, 0x8831, 0xC5DB, 0x8832, 0xF7F8,
+	0x8833, 0xF7FA, 0x8835, 0xF8BF, 0x8836, 0xC5FA, 0x8837, 0xF8BE,
+	0x8838, 0xF8BD, 0x8839, 0xC5FB, 0x883B, 0xC65A, 0x883C, 0xF96E,
+	0x883D, 0xF9A7, 0x883E, 0xF9A6, 0x883F, 0xF9A8, 0x8840, 0xA6E5,
+	0x8841, 0xD0AA, 0x8843, 0xD3CF, 0x8844, 0xD3D0, 0x8848, 0xDBC0,
+	0x884A, 0xF647, 0x884B, 0xF8C0, 0x884C, 0xA6E6, 0x884D, 0xAD6C,
+	0x884E, 0xD0AB, 0x8852, 0xD7B1, 0x8853, 0xB34E, 0x8855, 0xDBC2,
+	0x8856, 0xDBC1, 0x8857, 0xB5F3, 0x8859, 0xB8C5, 0x885A, 0xE7C1,
+	0x885B, 0xBDC3, 0x885D, 0xBDC4, 0x8861, 0xBFC5, 0x8862, 0xC5FC,
+	0x8863, 0xA6E7, 0x8867, 0xD0AC, 0x8868, 0xAAED, 0x8869, 0xD0AE,
+	0x886A, 0xD0AD, 0x886B, 0xAD6D, 0x886D, 0xD3D1, 0x886F, 0xD3D8,
+	0x8870, 0xB049, 0x8871, 0xD3D6, 0x8872, 0xD3D4, 0x8874, 0xD3DB,
+	0x8875, 0xD3D2, 0x8876, 0xD3D3, 0x8877, 0xB04A, 0x8879, 0xB04E,
+	0x887C, 0xD3DC, 0x887D, 0xB04D, 0x887E, 0xD3DA, 0x887F, 0xD3D7,
+	0x8880, 0xD3D5, 0x8881, 0xB04B, 0x8882, 0xB04C, 0x8883, 0xD3D9,
+	0x8888, 0xB350, 0x8889, 0xD7B2, 0x888B, 0xB355, 0x888C, 0xD7C2,
+	0x888D, 0xB354, 0x888E, 0xD7C4, 0x8891, 0xD7B8, 0x8892, 0xB352,
+	0x8893, 0xD7C3, 0x8895, 0xD7B3, 0x8896, 0xB353, 0x8897, 0xD7BF,
+	0x8898, 0xD7BB, 0x8899, 0xD7BD, 0x889A, 0xD7B7, 0x889B, 0xD7BE,
+	0x889E, 0xB34F, 0x889F, 0xD7BA, 0x88A1, 0xD7B9, 0x88A2, 0xD7B5,
+	0x88A4, 0xD7C0, 0x88A7, 0xD7BC, 0x88A8, 0xD7B4, 0x88AA, 0xD7B6,
+	0x88AB, 0xB351, 0x88AC, 0xD7C1, 0x88B1, 0xB5F6, 0x88B2, 0xDBCD,
+	0x88B6, 0xDBC9, 0x88B7, 0xDBCB, 0x88B8, 0xDBC6, 0x88B9, 0xDBC5,
+	0x88BA, 0xDBC3, 0x88BC, 0xDBCA, 0x88BD, 0xDBCC, 0x88BE, 0xDBC8,
+	0x88C0, 0xDBC7, 0x88C1, 0xB5F4, 0x88C2, 0xB5F5, 0x88C9, 0xDBCF,
+	0x88CA, 0xB8CD, 0x88CB, 0xDFF2, 0x88CC, 0xDFF8, 0x88CD, 0xDFF3,
+	0x88CE, 0xDFF4, 0x88CF, 0xF9D8, 0x88D0, 0xDFF9, 0x88D2, 0xB8CF,
+	0x88D4, 0xB8C7, 0x88D5, 0xB8CE, 0x88D6, 0xDFF1, 0x88D7, 0xDBC4,
+	0x88D8, 0xB8CA, 0x88D9, 0xB8C8, 0x88DA, 0xDFF7, 0x88DB, 0xDFF6,
+	0x88DC, 0xB8C9, 0x88DD, 0xB8CB, 0x88DE, 0xDFF5, 0x88DF, 0xB8C6,
+	0x88E1, 0xB8CC, 0x88E7, 0xE3F6, 0x88E8, 0xBB74, 0x88EB, 0xE442,
+	0x88EC, 0xE441, 0x88EE, 0xE3FB, 0x88EF, 0xBB76, 0x88F0, 0xE440,
+	0x88F1, 0xE3F7, 0x88F2, 0xE3F8, 0x88F3, 0xBB6E, 0x88F4, 0xBB70,
+	0x88F6, 0xE3FD, 0x88F7, 0xE3F5, 0x88F8, 0xBB72, 0x88F9, 0xBB71,
+	0x88FA, 0xE3F9, 0x88FB, 0xE3FE, 0x88FC, 0xE3FC, 0x88FD, 0xBB73,
+	0x88FE, 0xE3FA, 0x8901, 0xDBCE, 0x8902, 0xBB6F, 0x8905, 0xE7C2,
+	0x8906, 0xE7C9, 0x8907, 0xBDC6, 0x8909, 0xE7CD, 0x890A, 0xBDCA,
+	0x890B, 0xE7C5, 0x890C, 0xE7C3, 0x890E, 0xE7CC, 0x8910, 0xBDC5,
+	0x8911, 0xE7CB, 0x8912, 0xBDC7, 0x8913, 0xBDC8, 0x8914, 0xE7C4,
+	0x8915, 0xBDC9, 0x8916, 0xE7CA, 0x8917, 0xE7C6, 0x8918, 0xE7C7,
+	0x8919, 0xE7C8, 0x891A, 0xBB75, 0x891E, 0xEB70, 0x891F, 0xEB7C,
+	0x8921, 0xBFCA, 0x8922, 0xEB77, 0x8923, 0xEB79, 0x8925, 0xBFC8,
+	0x8926, 0xEB71, 0x8927, 0xEB75, 0x8929, 0xEB78, 0x892A, 0xBFC6,
+	0x892B, 0xBFC9, 0x892C, 0xEB7B, 0x892D, 0xEB73, 0x892E, 0xEB74,
+	0x892F, 0xEB7A, 0x8930, 0xEB72, 0x8931, 0xEB76, 0x8932, 0xBFC7,
+	0x8933, 0xEE72, 0x8935, 0xEE71, 0x8936, 0xC1B7, 0x8937, 0xEE77,
+	0x8938, 0xC1B9, 0x893B, 0xC1B6, 0x893C, 0xEE73, 0x893D, 0xC1BA,
+	0x893E, 0xEE74, 0x8941, 0xEE75, 0x8942, 0xEE78, 0x8944, 0xC1B8,
+	0x8946, 0xF0D6, 0x8949, 0xF0D9, 0x894B, 0xF0D3, 0x894C, 0xF0D5,
+	0x894F, 0xF0D4, 0x8950, 0xF0D7, 0x8951, 0xF0D8, 0x8952, 0xEE76,
+	0x8953, 0xF0D2, 0x8956, 0xC3CD, 0x8957, 0xF2EC, 0x8958, 0xF2EF,
+	0x8959, 0xF2F1, 0x895A, 0xF2EA, 0x895B, 0xF2EB, 0x895C, 0xF2EE,
+	0x895D, 0xF2F0, 0x895E, 0xC3CE, 0x895F, 0xC3CC, 0x8960, 0xC3CB,
+	0x8961, 0xF2ED, 0x8962, 0xF2E9, 0x8963, 0xF4CA, 0x8964, 0xC4B0,
+	0x8966, 0xF4CB, 0x8969, 0xF649, 0x896A, 0xC4FB, 0x896B, 0xF64B,
+	0x896C, 0xC4FC, 0x896D, 0xF648, 0x896E, 0xF64A, 0x896F, 0xC5A8,
+	0x8971, 0xF752, 0x8972, 0xC5A7, 0x8973, 0xF7FD, 0x8974, 0xF7FC,
+	0x8976, 0xF7FB, 0x8979, 0xF948, 0x897A, 0xF949, 0x897B, 0xF94B,
+	0x897C, 0xF94A, 0x897E, 0xCA50, 0x897F, 0xA6E8, 0x8981, 0xAD6E,
+	0x8982, 0xD7C5, 0x8983, 0xB5F7, 0x8985, 0xDFFA, 0x8986, 0xC2D0,
+	0x8988, 0xF2F2, 0x898B, 0xA8A3, 0x898F, 0xB357, 0x8993, 0xB356,
+	0x8995, 0xDBD0, 0x8996, 0xB5F8, 0x8997, 0xDBD2, 0x8998, 0xDBD1,
+	0x899B, 0xDFFB, 0x899C, 0xB8D0, 0x899D, 0xE443, 0x899E, 0xE446,
+	0x899F, 0xE445, 0x89A1, 0xE444, 0x89A2, 0xE7CE, 0x89A3, 0xE7D0,
+	0x89A4, 0xE7CF, 0x89A6, 0xBFCC, 0x89AA, 0xBFCB, 0x89AC, 0xC1BB,
+	0x89AD, 0xEE79, 0x89AE, 0xEE7B, 0x89AF, 0xEE7A, 0x89B2, 0xC2D1,
+	0x89B6, 0xF2F4, 0x89B7, 0xF2F3, 0x89B9, 0xF4CC, 0x89BA, 0xC4B1,
+	0x89BD, 0xC4FD, 0x89BE, 0xF754, 0x89BF, 0xF753, 0x89C0, 0xC65B,
+	0x89D2, 0xA8A4, 0x89D3, 0xD0AF, 0x89D4, 0xAD6F, 0x89D5, 0xD7C8,
+	0x89D6, 0xD7C6, 0x89D9, 0xD7C7, 0x89DA, 0xDBD4, 0x89DB, 0xDBD5,
+	0x89DC, 0xE043, 0x89DD, 0xDBD3, 0x89DF, 0xDFFC, 0x89E0, 0xE041,
+	0x89E1, 0xE040, 0x89E2, 0xE042, 0x89E3, 0xB8D1, 0x89E4, 0xDFFE,
+	0x89E5, 0xDFFD, 0x89E6, 0xE044, 0x89E8, 0xE449, 0x89E9, 0xE447,
+	0x89EB, 0xE448, 0x89EC, 0xE7D3, 0x89ED, 0xE7D1, 0x89F0, 0xE7D2,
+	0x89F1, 0xEB7D, 0x89F2, 0xEE7C, 0x89F3, 0xEE7D, 0x89F4, 0xC2D2,
+	0x89F6, 0xF2F5, 0x89F7, 0xF4CD, 0x89F8, 0xC4B2, 0x89FA, 0xF64C,
+	0x89FB, 0xF755, 0x89FC, 0xC5A9, 0x89FE, 0xF7FE, 0x89FF, 0xF94C,
+	0x8A00, 0xA8A5, 0x8A02, 0xAD71, 0x8A03, 0xAD72, 0x8A04, 0xD0B0,
+	0x8A07, 0xD0B1, 0x8A08, 0xAD70, 0x8A0A, 0xB054, 0x8A0C, 0xB052,
+	0x8A0E, 0xB051, 0x8A0F, 0xB058, 0x8A10, 0xB050, 0x8A11, 0xB059,
+	0x8A12, 0xD3DD, 0x8A13, 0xB056, 0x8A15, 0xB053, 0x8A16, 0xB057,
+	0x8A17, 0xB055, 0x8A18, 0xB04F, 0x8A1B, 0xB35F, 0x8A1D, 0xB359,
+	0x8A1E, 0xD7CC, 0x8A1F, 0xB35E, 0x8A22, 0xB360, 0x8A23, 0xB35A,
+	0x8A25, 0xB35B, 0x8A27, 0xD7CA, 0x8A2A, 0xB358, 0x8A2C, 0xD7CB,
+	0x8A2D, 0xB35D, 0x8A30, 0xD7C9, 0x8A31, 0xB35C, 0x8A34, 0xB644,
+	0x8A36, 0xB646, 0x8A39, 0xDBD8, 0x8A3A, 0xB645, 0x8A3B, 0xB5F9,
+	0x8A3C, 0xB5FD, 0x8A3E, 0xB8E4, 0x8A3F, 0xE049, 0x8A40, 0xDBDA,
+	0x8A41, 0xB5FE, 0x8A44, 0xDBDD, 0x8A45, 0xDBDE, 0x8A46, 0xB643,
+	0x8A48, 0xDBE0, 0x8A4A, 0xDBE2, 0x8A4C, 0xDBE3, 0x8A4D, 0xDBD7,
+	0x8A4E, 0xDBD6, 0x8A4F, 0xDBE4, 0x8A50, 0xB642, 0x8A51, 0xDBE1,
+	0x8A52, 0xDBDF, 0x8A54, 0xB640, 0x8A55, 0xB5FB, 0x8A56, 0xB647,
+	0x8A57, 0xDBDB, 0x8A58, 0xDBDC, 0x8A59, 0xDBD9, 0x8A5B, 0xB641,
+	0x8A5E, 0xB5FC, 0x8A60, 0xB5FA, 0x8A61, 0xE048, 0x8A62, 0xB8DF,
+	0x8A63, 0xB8DA, 0x8A66, 0xB8D5, 0x8A68, 0xB8E5, 0x8A69, 0xB8D6,
+	0x8A6B, 0xB8D2, 0x8A6C, 0xB8E1, 0x8A6D, 0xB8DE, 0x8A6E, 0xB8E0,
+	0x8A70, 0xB8D7, 0x8A71, 0xB8DC, 0x8A72, 0xB8D3, 0x8A73, 0xB8D4,
+	0x8A74, 0xE050, 0x8A75, 0xE04D, 0x8A76, 0xE045, 0x8A77, 0xE04A,
+	0x8A79, 0xB8E2, 0x8A7A, 0xE051, 0x8A7B, 0xB8E3, 0x8A7C, 0xB8D9,
+	0x8A7F, 0xE047, 0x8A81, 0xE04F, 0x8A82, 0xE04B, 0x8A83, 0xE04E,
+	0x8A84, 0xE04C, 0x8A85, 0xB8DD, 0x8A86, 0xE046, 0x8A87, 0xB8D8,
+	0x8A8B, 0xE44C, 0x8A8C, 0xBB78, 0x8A8D, 0xBB7B, 0x8A8F, 0xE44E,
+	0x8A91, 0xBBA5, 0x8A92, 0xE44D, 0x8A93, 0xBB7D, 0x8A95, 0xBDCF,
+	0x8A96, 0xE44F, 0x8A98, 0xBBA4, 0x8A99, 0xE44B, 0x8A9A, 0xBBA6,
+	0x8A9E, 0xBB79, 0x8AA0, 0xB8DB, 0x8AA1, 0xBB7C, 0x8AA3, 0xBB7A,
+	0x8AA4, 0xBB7E, 0x8AA5, 0xBBA2, 0x8AA6, 0xBB77, 0x8AA7, 0xBBA7,
+	0x8AA8, 0xBBA3, 0x8AAA, 0xBBA1, 0x8AAB, 0xE44A, 0x8AB0, 0xBDD6,
+	0x8AB2, 0xBDD2, 0x8AB6, 0xBDD9, 0x8AB8, 0xE7D6, 0x8AB9, 0xBDDA,
+	0x8ABA, 0xE7E2, 0x8ABB, 0xE7DB, 0x8ABC, 0xBDCB, 0x8ABD, 0xE7E3,
+	0x8ABE, 0xE7DD, 0x8ABF, 0xBDD5, 0x8AC0, 0xE7DE, 0x8AC2, 0xBDD4,
+	0x8AC3, 0xE7E1, 0x8AC4, 0xBDCE, 0x8AC5, 0xE7DF, 0x8AC6, 0xE7D5,
+	0x8AC7, 0xBDCD, 0x8AC8, 0xEBAA, 0x8AC9, 0xBDD3, 0x8ACB, 0xBDD0,
+	0x8ACD, 0xBDD8, 0x8ACF, 0xE7D4, 0x8AD1, 0xE7D8, 0x8AD2, 0xBDCC,
+	0x8AD3, 0xE7D7, 0x8AD4, 0xE7D9, 0x8AD5, 0xE7DA, 0x8AD6, 0xBDD7,
+	0x8AD7, 0xE7DC, 0x8AD8, 0xE7E0, 0x8AD9, 0xE7E4, 0x8ADB, 0xBDDB,
+	0x8ADC, 0xBFD2, 0x8ADD, 0xEBA5, 0x8ADE, 0xEBAB, 0x8ADF, 0xEBA8,
+	0x8AE0, 0xEB7E, 0x8AE1, 0xEBAC, 0x8AE2, 0xEBA1, 0x8AE4, 0xEBA7,
+	0x8AE6, 0xBFCD, 0x8AE7, 0xBFD3, 0x8AE8, 0xEBAD, 0x8AEB, 0xBFCF,
+	0x8AED, 0xBFD9, 0x8AEE, 0xBFD4, 0x8AEF, 0xEBAF, 0x8AF0, 0xEBA9,
+	0x8AF1, 0xBFD0, 0x8AF2, 0xEBA2, 0x8AF3, 0xBFDA, 0x8AF4, 0xEBA3,
+	0x8AF5, 0xEBA4, 0x8AF6, 0xBFDB, 0x8AF7, 0xBFD8, 0x8AF8, 0xBDD1,
+	0x8AFA, 0xBFCE, 0x8AFB, 0xEBB0, 0x8AFC, 0xBFDC, 0x8AFE, 0xBFD5,
+	0x8AFF, 0xEBAE, 0x8B00, 0xBFD1, 0x8B01, 0xBFD6, 0x8B02, 0xBFD7,
+	0x8B04, 0xC1C3, 0x8B05, 0xEEA4, 0x8B06, 0xEEAD, 0x8B07, 0xEEAA,
+	0x8B08, 0xEEAC, 0x8B0A, 0xC1C0, 0x8B0B, 0xEEA5, 0x8B0D, 0xEEAB,
+	0x8B0E, 0xC1BC, 0x8B0F, 0xEEA7, 0x8B10, 0xC1C4, 0x8B11, 0xEEA3,
+	0x8B12, 0xEEA8, 0x8B13, 0xEEAF, 0x8B14, 0xEBA6, 0x8B15, 0xEEA9,
+	0x8B16, 0xEEA2, 0x8B17, 0xC1BD, 0x8B18, 0xEEA1, 0x8B19, 0xC1BE,
+	0x8B1A, 0xEEB0, 0x8B1B, 0xC1BF, 0x8B1C, 0xEEAE, 0x8B1D, 0xC1C2,
+	0x8B1E, 0xEE7E, 0x8B20, 0xC1C1, 0x8B22, 0xEEA6, 0x8B23, 0xF0DC,
+	0x8B24, 0xF0EA, 0x8B25, 0xF0E5, 0x8B26, 0xF0E7, 0x8B27, 0xF0DB,
+	0x8B28, 0xC2D3, 0x8B2A, 0xF0DA, 0x8B2B, 0xC2D6, 0x8B2C, 0xC2D5,
+	0x8B2E, 0xF0E9, 0x8B2F, 0xF0E1, 0x8B30, 0xF0DE, 0x8B31, 0xF0E4,
+	0x8B33, 0xF0DD, 0x8B35, 0xF0DF, 0x8B36, 0xF0E8, 0x8B37, 0xF0E6,
+	0x8B39, 0xC2D4, 0x8B3A, 0xF0ED, 0x8B3B, 0xF0EB, 0x8B3C, 0xF0E2,
+	0x8B3D, 0xF0EC, 0x8B3E, 0xF0E3, 0x8B40, 0xF2F9, 0x8B41, 0xC3CF,
+	0x8B42, 0xF341, 0x8B45, 0xF64F, 0x8B46, 0xC3D6, 0x8B47, 0xF0E0,
+	0x8B48, 0xF2F7, 0x8B49, 0xC3D2, 0x8B4A, 0xF2F8, 0x8B4B, 0xF2FD,
+	0x8B4E, 0xC3D4, 0x8B4F, 0xC3D5, 0x8B50, 0xF2F6, 0x8B51, 0xF340,
+	0x8B52, 0xF342, 0x8B53, 0xF2FA, 0x8B54, 0xF2FC, 0x8B55, 0xF2FE,
+	0x8B56, 0xF2FB, 0x8B57, 0xF343, 0x8B58, 0xC3D1, 0x8B59, 0xC3D7,
+	0x8B5A, 0xC3D3, 0x8B5C, 0xC3D0, 0x8B5D, 0xF4D0, 0x8B5F, 0xC4B7,
+	0x8B60, 0xF4CE, 0x8B63, 0xF4D2, 0x8B65, 0xF4D3, 0x8B66, 0xC4B5,
+	0x8B67, 0xF4D4, 0x8B68, 0xF4D1, 0x8B6A, 0xF4CF, 0x8B6B, 0xC4B8,
+	0x8B6C, 0xC4B4, 0x8B6D, 0xF4D5, 0x8B6F, 0xC4B6, 0x8B70, 0xC4B3,
+	0x8B74, 0xC4FE, 0x8B77, 0xC540, 0x8B78, 0xF64E, 0x8B79, 0xF64D,
+	0x8B7A, 0xF650, 0x8B7B, 0xF651, 0x8B7D, 0xC541, 0x8B7E, 0xF756,
+	0x8B7F, 0xF75B, 0x8B80, 0xC5AA, 0x8B82, 0xF758, 0x8B84, 0xF757,
+	0x8B85, 0xF75A, 0x8B86, 0xF759, 0x8B88, 0xF843, 0x8B8A, 0xC5DC,
+	0x8B8B, 0xF842, 0x8B8C, 0xF840, 0x8B8E, 0xF841, 0x8B92, 0xC5FE,
+	0x8B93, 0xC5FD, 0x8B94, 0xF8C1, 0x8B95, 0xF8C2, 0x8B96, 0xC640,
+	0x8B98, 0xF94D, 0x8B99, 0xF94E, 0x8B9A, 0xC667, 0x8B9C, 0xC66D,
+	0x8B9E, 0xF9A9, 0x8B9F, 0xF9C8, 0x8C37, 0xA8A6, 0x8C39, 0xD7CD,
+	0x8C3B, 0xD7CE, 0x8C3C, 0xE052, 0x8C3D, 0xE450, 0x8C3E, 0xE7E5,
+	0x8C3F, 0xC1C6, 0x8C41, 0xC1C5, 0x8C42, 0xF0EE, 0x8C43, 0xF344,
+	0x8C45, 0xF844, 0x8C46, 0xA8A7, 0x8C47, 0xD3DE, 0x8C48, 0xB05A,
+	0x8C49, 0xB361, 0x8C4A, 0xE054, 0x8C4B, 0xE053, 0x8C4C, 0xBDDC,
+	0x8C4D, 0xE7E6, 0x8C4E, 0xBDDD, 0x8C4F, 0xEEB1, 0x8C50, 0xC2D7,
+	0x8C54, 0xC676, 0x8C55, 0xA8A8, 0x8C56, 0xCDCB, 0x8C57, 0xD3DF,
+	0x8C5A, 0xB362, 0x8C5C, 0xD7CF, 0x8C5D, 0xD7D0, 0x8C5F, 0xDBE5,
+	0x8C61, 0xB648, 0x8C62, 0xB8E6, 0x8C64, 0xE056, 0x8C65, 0xE055,
+	0x8C66, 0xE057, 0x8C68, 0xE451, 0x8C69, 0xE452, 0x8C6A, 0xBBA8,
+	0x8C6B, 0xBFDD, 0x8C6C, 0xBDDE, 0x8C6D, 0xBFDE, 0x8C6F, 0xEEB5,
+	0x8C70, 0xEEB2, 0x8C71, 0xEEB4, 0x8C72, 0xEEB3, 0x8C73, 0xC1C7,
+	0x8C75, 0xF0EF, 0x8C76, 0xF346, 0x8C77, 0xF345, 0x8C78, 0xCBA4,
+	0x8C79, 0xB05C, 0x8C7A, 0xB05B, 0x8C7B, 0xD3E0, 0x8C7D, 0xD7D1,
+	0x8C80, 0xDBE7, 0x8C81, 0xDBE6, 0x8C82, 0xB649, 0x8C84, 0xE059,
+	0x8C85, 0xE05A, 0x8C86, 0xE058, 0x8C89, 0xB8E8, 0x8C8A, 0xB8E7,
+	0x8C8C, 0xBBAA, 0x8C8D, 0xBBA9, 0x8C8F, 0xE7E7, 0x8C90, 0xEBB3,
+	0x8C91, 0xEBB1, 0x8C92, 0xEBB2, 0x8C93, 0xBFDF, 0x8C94, 0xEEB7,
+	0x8C95, 0xEEB6, 0x8C97, 0xF0F2, 0x8C98, 0xF0F1, 0x8C99, 0xF0F0,
+	0x8C9A, 0xF347, 0x8C9C, 0xF9AA, 0x8C9D, 0xA8A9, 0x8C9E, 0xAD73,
+	0x8CA0, 0xAD74, 0x8CA1, 0xB05D, 0x8CA2, 0xB05E, 0x8CA3, 0xD3E2,
+	0x8CA4, 0xD3E1, 0x8CA5, 0xD7D2, 0x8CA7, 0xB368, 0x8CA8, 0xB366,
+	0x8CA9, 0xB363, 0x8CAA, 0xB367, 0x8CAB, 0xB365, 0x8CAC, 0xB364,
+	0x8CAF, 0xB64A, 0x8CB0, 0xDBEA, 0x8CB2, 0xB8ED, 0x8CB3, 0xB64C,
+	0x8CB4, 0xB651, 0x8CB5, 0xDBEC, 0x8CB6, 0xB653, 0x8CB7, 0xB652,
+	0x8CB8, 0xB655, 0x8CB9, 0xDBEB, 0x8CBA, 0xDBE8, 0x8CBB, 0xB64F,
+	0x8CBC, 0xB64B, 0x8CBD, 0xB64D, 0x8CBE, 0xDBE9, 0x8CBF, 0xB654,
+	0x8CC0, 0xB650, 0x8CC1, 0xB64E, 0x8CC2, 0xB8EF, 0x8CC3, 0xB8EE,
+	0x8CC4, 0xB8EC, 0x8CC5, 0xB8F0, 0x8CC7, 0xB8EA, 0x8CC8, 0xB8EB,
+	0x8CCA, 0xB8E9, 0x8CCC, 0xE05B, 0x8CCF, 0xE454, 0x8CD1, 0xBBAC,
+	0x8CD2, 0xBBAD, 0x8CD3, 0xBBAB, 0x8CD5, 0xE453, 0x8CD7, 0xE455,
+	0x8CD9, 0xE7EA, 0x8CDA, 0xE7EC, 0x8CDC, 0xBDE7, 0x8CDD, 0xE7ED,
+	0x8CDE, 0xBDE0, 0x8CDF, 0xE7E9, 0x8CE0, 0xBDDF, 0x8CE1, 0xBDE9,
+	0x8CE2, 0xBDE5, 0x8CE3, 0xBDE6, 0x8CE4, 0xBDE2, 0x8CE5, 0xE7E8,
+	0x8CE6, 0xBDE1, 0x8CE7, 0xE7EE, 0x8CE8, 0xE7EB, 0x8CEA, 0xBDE8,
+	0x8CEC, 0xBDE3, 0x8CED, 0xBDE4, 0x8CEE, 0xEBB5, 0x8CF0, 0xEBB7,
+	0x8CF1, 0xEBB6, 0x8CF3, 0xEBB8, 0x8CF4, 0xBFE0, 0x8CF5, 0xEBB4,
+	0x8CF8, 0xC1CB, 0x8CF9, 0xEEB8, 0x8CFA, 0xC1C8, 0x8CFB, 0xC1CC,
+	0x8CFC, 0xC1CA, 0x8CFD, 0xC1C9, 0x8CFE, 0xF0F3, 0x8D00, 0xF0F6,
+	0x8D02, 0xF0F5, 0x8D04, 0xF0F4, 0x8D05, 0xC2D8, 0x8D06, 0xF348,
+	0x8D07, 0xF349, 0x8D08, 0xC3D8, 0x8D09, 0xF34A, 0x8D0A, 0xC3D9,
+	0x8D0D, 0xC4BA, 0x8D0F, 0xC4B9, 0x8D10, 0xF652, 0x8D13, 0xC542,
+	0x8D14, 0xF653, 0x8D15, 0xF75C, 0x8D16, 0xC5AB, 0x8D17, 0xC5AC,
+	0x8D19, 0xF845, 0x8D1B, 0xC642, 0x8D64, 0xA8AA, 0x8D66, 0xB36A,
+	0x8D67, 0xB369, 0x8D68, 0xE05C, 0x8D69, 0xE05D, 0x8D6B, 0xBBAE,
+	0x8D6C, 0xEBB9, 0x8D6D, 0xBDEA, 0x8D6E, 0xEBBA, 0x8D6F, 0xEEB9,
+	0x8D70, 0xA8AB, 0x8D72, 0xD0B2, 0x8D73, 0xAD76, 0x8D74, 0xAD75,
+	0x8D76, 0xD3E3, 0x8D77, 0xB05F, 0x8D78, 0xD3E4, 0x8D79, 0xD7D5,
+	0x8D7B, 0xD7D4, 0x8D7D, 0xD7D3, 0x8D80, 0xDBEE, 0x8D81, 0xB658,
+	0x8D84, 0xDBED, 0x8D85, 0xB657, 0x8D89, 0xDBEF, 0x8D8A, 0xB656,
+	0x8D8C, 0xE05F, 0x8D8D, 0xE062, 0x8D8E, 0xE060, 0x8D8F, 0xE061,
+	0x8D90, 0xE065, 0x8D91, 0xE05E, 0x8D92, 0xE066, 0x8D93, 0xE063,
+	0x8D94, 0xE064, 0x8D95, 0xBBB0, 0x8D96, 0xE456, 0x8D99, 0xBBAF,
+	0x8D9B, 0xE7F2, 0x8D9C, 0xE7F0, 0x8D9F, 0xBDEB, 0x8DA0, 0xE7EF,
+	0x8DA1, 0xE7F1, 0x8DA3, 0xBDEC, 0x8DA5, 0xEBBB, 0x8DA7, 0xEBBC,
+	0x8DA8, 0xC1CD, 0x8DAA, 0xF34C, 0x8DAB, 0xF34E, 0x8DAC, 0xF34B,
+	0x8DAD, 0xF34D, 0x8DAE, 0xF4D6, 0x8DAF, 0xF654, 0x8DB2, 0xF96F,
+	0x8DB3, 0xA8AC, 0x8DB4, 0xAD77, 0x8DB5, 0xD3E5, 0x8DB6, 0xD3E7,
+	0x8DB7, 0xD3E6, 0x8DB9, 0xD7D8, 0x8DBA, 0xB36C, 0x8DBC, 0xD7D6,
+	0x8DBE, 0xB36B, 0x8DBF, 0xD7D9, 0x8DC1, 0xD7DA, 0x8DC2, 0xD7D7,
+	0x8DC5, 0xDBFB, 0x8DC6, 0xB660, 0x8DC7, 0xDBF3, 0x8DC8, 0xDBF9,
+	0x8DCB, 0xB65B, 0x8DCC, 0xB65E, 0x8DCD, 0xDBF2, 0x8DCE, 0xB659,
+	0x8DCF, 0xDBF6, 0x8DD0, 0xE06C, 0x8DD1, 0xB65D, 0x8DD3, 0xDBF1,
+	0x8DD5, 0xDBF7, 0x8DD6, 0xDBF4, 0x8DD7, 0xDBFA, 0x8DD8, 0xDBF0,
+	0x8DD9, 0xDBF8, 0x8DDA, 0xB65C, 0x8DDB, 0xB65F, 0x8DDC, 0xDBF5,
+	0x8DDD, 0xB65A, 0x8DDF, 0xB8F2, 0x8DE0, 0xE068, 0x8DE1, 0xB8F1,
+	0x8DE2, 0xE06F, 0x8DE3, 0xE06E, 0x8DE4, 0xB8F8, 0x8DE6, 0xB8F9,
+	0x8DE7, 0xE070, 0x8DE8, 0xB8F3, 0x8DE9, 0xE06D, 0x8DEA, 0xB8F7,
+	0x8DEB, 0xE072, 0x8DEC, 0xE069, 0x8DEE, 0xE06B, 0x8DEF, 0xB8F4,
+	0x8DF0, 0xE067, 0x8DF1, 0xE06A, 0x8DF2, 0xE071, 0x8DF3, 0xB8F5,
+	0x8DF4, 0xE073, 0x8DFA, 0xB8F6, 0x8DFC, 0xBBB1, 0x8DFD, 0xE45B,
+	0x8DFE, 0xE461, 0x8DFF, 0xE459, 0x8E00, 0xE462, 0x8E02, 0xE458,
+	0x8E03, 0xE45D, 0x8E04, 0xE463, 0x8E05, 0xE460, 0x8E06, 0xE45F,
+	0x8E07, 0xE45E, 0x8E09, 0xE457, 0x8E0A, 0xE45C, 0x8E0D, 0xE45A,
+	0x8E0F, 0xBDF1, 0x8E10, 0xBDEE, 0x8E11, 0xE7FB, 0x8E12, 0xE841,
+	0x8E13, 0xE843, 0x8E14, 0xE840, 0x8E15, 0xE7F8, 0x8E16, 0xE7FA,
+	0x8E17, 0xE845, 0x8E18, 0xE842, 0x8E19, 0xE7FC, 0x8E1A, 0xE846,
+	0x8E1B, 0xE7F9, 0x8E1C, 0xE844, 0x8E1D, 0xBDEF, 0x8E1E, 0xBDF5,
+	0x8E1F, 0xBDF3, 0x8E20, 0xE7F3, 0x8E21, 0xBDF4, 0x8E22, 0xBDF0,
+	0x8E23, 0xE7F4, 0x8E24, 0xE7F6, 0x8E25, 0xE7F5, 0x8E26, 0xE7FD,
+	0x8E27, 0xE7FE, 0x8E29, 0xBDF2, 0x8E2B, 0xBDED, 0x8E2E, 0xE7F7,
+	0x8E30, 0xEBC6, 0x8E31, 0xBFE2, 0x8E33, 0xEBBD, 0x8E34, 0xBFE3,
+	0x8E35, 0xBFE6, 0x8E36, 0xEBC2, 0x8E38, 0xEBBF, 0x8E39, 0xBFE5,
+	0x8E3C, 0xEBC3, 0x8E3D, 0xEBC4, 0x8E3E, 0xEBBE, 0x8E3F, 0xEBC7,
+	0x8E40, 0xEBC0, 0x8E41, 0xEBC5, 0x8E42, 0xBFE4, 0x8E44, 0xBFE1,
+	0x8E45, 0xEBC1, 0x8E47, 0xEEBF, 0x8E48, 0xC1D0, 0x8E49, 0xC1CE,
+	0x8E4A, 0xC1D1, 0x8E4B, 0xC1CF, 0x8E4C, 0xEEBE, 0x8E4D, 0xEEBB,
+	0x8E4E, 0xEEBA, 0x8E50, 0xEEBD, 0x8E53, 0xEEBC, 0x8E54, 0xF145,
+	0x8E55, 0xC2DE, 0x8E56, 0xF0FB, 0x8E57, 0xF0FA, 0x8E59, 0xC2D9,
+	0x8E5A, 0xF141, 0x8E5B, 0xF140, 0x8E5C, 0xF0F7, 0x8E5D, 0xF143,
+	0x8E5E, 0xF0FC, 0x8E5F, 0xC2DD, 0x8E60, 0xF0F9, 0x8E61, 0xF142,
+	0x8E62, 0xF0F8, 0x8E63, 0xC2DA, 0x8E64, 0xC2DC, 0x8E65, 0xF0FD,
+	0x8E66, 0xC2DB, 0x8E67, 0xF0FE, 0x8E69, 0xF144, 0x8E6A, 0xF352,
+	0x8E6C, 0xC3DE, 0x8E6D, 0xF34F, 0x8E6F, 0xF353, 0x8E72, 0xC3DB,
+	0x8E73, 0xF351, 0x8E74, 0xC3E0, 0x8E76, 0xC3DD, 0x8E78, 0xF350,
+	0x8E7A, 0xC3DF, 0x8E7B, 0xF354, 0x8E7C, 0xC3DA, 0x8E81, 0xC4BC,
+	0x8E82, 0xC4BE, 0x8E84, 0xF4D9, 0x8E85, 0xC4BD, 0x8E86, 0xF4D7,
+	0x8E87, 0xC3DC, 0x8E88, 0xF4D8, 0x8E89, 0xC4BB, 0x8E8A, 0xC543,
+	0x8E8B, 0xC545, 0x8E8C, 0xF656, 0x8E8D, 0xC544, 0x8E8E, 0xF655,
+	0x8E90, 0xF761, 0x8E91, 0xC5AD, 0x8E92, 0xF760, 0x8E93, 0xC5AE,
+	0x8E94, 0xF75E, 0x8E95, 0xF75D, 0x8E96, 0xF762, 0x8E97, 0xF763,
+	0x8E98, 0xF846, 0x8E9A, 0xF75F, 0x8E9D, 0xF8C6, 0x8E9E, 0xF8C3,
+	0x8E9F, 0xF8C4, 0x8EA0, 0xF8C5, 0x8EA1, 0xC65C, 0x8EA3, 0xF951,
+	0x8EA4, 0xF950, 0x8EA5, 0xF94F, 0x8EA6, 0xF970, 0x8EA8, 0xF9BE,
+	0x8EA9, 0xF9AB, 0x8EAA, 0xC66E, 0x8EAB, 0xA8AD, 0x8EAC, 0xB060,
+	0x8EB2, 0xB8FA, 0x8EBA, 0xBDF6, 0x8EBD, 0xEBC8, 0x8EC0, 0xC2DF,
+	0x8EC2, 0xF355, 0x8EC9, 0xF9AC, 0x8ECA, 0xA8AE, 0x8ECB, 0xAAEE,
+	0x8ECC, 0xAD79, 0x8ECD, 0xAD78, 0x8ECF, 0xB063, 0x8ED1, 0xD3E8,
+	0x8ED2, 0xB061, 0x8ED3, 0xD3E9, 0x8ED4, 0xB062, 0x8ED7, 0xD7DF,
+	0x8ED8, 0xD7DB, 0x8EDB, 0xB36D, 0x8EDC, 0xD7DE, 0x8EDD, 0xD7DD,
+	0x8EDE, 0xD7DC, 0x8EDF, 0xB36E, 0x8EE0, 0xD7E0, 0x8EE1, 0xD7E1,
+	0x8EE5, 0xDC43, 0x8EE6, 0xDC41, 0x8EE7, 0xDC45, 0x8EE8, 0xDC46,
+	0x8EE9, 0xDC4C, 0x8EEB, 0xDC48, 0x8EEC, 0xDC4A, 0x8EEE, 0xDC42,
+	0x8EEF, 0xDBFC, 0x8EF1, 0xDC49, 0x8EF4, 0xDC4B, 0x8EF5, 0xDC44,
+	0x8EF6, 0xDC47, 0x8EF7, 0xDBFD, 0x8EF8, 0xB662, 0x8EF9, 0xDC40,
+	0x8EFA, 0xDBFE, 0x8EFB, 0xB661, 0x8EFC, 0xB663, 0x8EFE, 0xB8FD,
+	0x8EFF, 0xE075, 0x8F00, 0xE077, 0x8F01, 0xE076, 0x8F02, 0xE07B,
+	0x8F03, 0xB8FB, 0x8F05, 0xE078, 0x8F06, 0xE074, 0x8F07, 0xE079,
+	0x8F08, 0xE07A, 0x8F09, 0xB8FC, 0x8F0A, 0xB8FE, 0x8F0B, 0xE07C,
+	0x8F0D, 0xE467, 0x8F0E, 0xE466, 0x8F10, 0xE464, 0x8F11, 0xE465,
+	0x8F12, 0xBBB3, 0x8F13, 0xBBB5, 0x8F14, 0xBBB2, 0x8F15, 0xBBB4,
+	0x8F16, 0xE84D, 0x8F17, 0xE84E, 0x8F18, 0xE849, 0x8F1A, 0xE84A,
+	0x8F1B, 0xBDF8, 0x8F1C, 0xBDFD, 0x8F1D, 0xBDF7, 0x8F1E, 0xBDFE,
+	0x8F1F, 0xBDF9, 0x8F20, 0xE84B, 0x8F23, 0xE84C, 0x8F24, 0xE848,
+	0x8F25, 0xBE40, 0x8F26, 0xBDFB, 0x8F29, 0xBDFA, 0x8F2A, 0xBDFC,
+	0x8F2C, 0xE847, 0x8F2E, 0xEBCA, 0x8F2F, 0xBFE8, 0x8F32, 0xEBCC,
+	0x8F33, 0xBFEA, 0x8F34, 0xEBCF, 0x8F35, 0xEBCB, 0x8F36, 0xEBC9,
+	0x8F37, 0xEBCE, 0x8F38, 0xBFE9, 0x8F39, 0xEBCD, 0x8F3B, 0xBFE7,
+	0x8F3E, 0xC1D3, 0x8F3F, 0xC1D6, 0x8F40, 0xEEC1, 0x8F42, 0xC1D4,
+	0x8F43, 0xEEC0, 0x8F44, 0xC1D2, 0x8F45, 0xC1D5, 0x8F46, 0xF146,
+	0x8F47, 0xF147, 0x8F48, 0xF148, 0x8F49, 0xC2E0, 0x8F4B, 0xF149,
+	0x8F4D, 0xC2E1, 0x8F4E, 0xC3E2, 0x8F4F, 0xF358, 0x8F50, 0xF359,
+	0x8F51, 0xF357, 0x8F52, 0xF356, 0x8F53, 0xF35A, 0x8F54, 0xC3E1,
+	0x8F55, 0xF4DD, 0x8F56, 0xF4DB, 0x8F57, 0xF4DC, 0x8F58, 0xF4DE,
+	0x8F59, 0xF4DA, 0x8F5A, 0xF4DF, 0x8F5B, 0xF658, 0x8F5D, 0xF659,
+	0x8F5E, 0xF657, 0x8F5F, 0xC546, 0x8F60, 0xF764, 0x8F61, 0xC5AF,
+	0x8F62, 0xF765, 0x8F63, 0xF848, 0x8F64, 0xF847, 0x8F9B, 0xA8AF,
+	0x8F9C, 0xB664, 0x8F9F, 0xB940, 0x8FA3, 0xBBB6, 0x8FA6, 0xBFEC,
+	0x8FA8, 0xBFEB, 0x8FAD, 0xC3E3, 0x8FAE, 0xC47C, 0x8FAF, 0xC547,
+	0x8FB0, 0xA8B0, 0x8FB1, 0xB064, 0x8FB2, 0xB941, 0x8FB4, 0xF35B,
+	0x8FBF, 0xCBA6, 0x8FC2, 0xA8B1, 0x8FC4, 0xA8B4, 0x8FC5, 0xA8B3,
+	0x8FC6, 0xA8B2, 0x8FC9, 0xCBA5, 0x8FCB, 0xCDCD, 0x8FCD, 0xCDCF,
+	0x8FCE, 0xAAEF, 0x8FD1, 0xAAF1, 0x8FD2, 0xCDCC, 0x8FD3, 0xCDCE,
+	0x8FD4, 0xAAF0, 0x8FD5, 0xCDD1, 0x8FD6, 0xCDD0, 0x8FD7, 0xCDD2,
+	0x8FE0, 0xD0B6, 0x8FE1, 0xD0B4, 0x8FE2, 0xAD7C, 0x8FE3, 0xD0B3,
+	0x8FE4, 0xADA3, 0x8FE5, 0xAD7E, 0x8FE6, 0xAD7B, 0x8FE8, 0xADA4,
+	0x8FEA, 0xAD7D, 0x8FEB, 0xADA2, 0x8FED, 0xADA1, 0x8FEE, 0xD0B5,
+	0x8FF0, 0xAD7A, 0x8FF4, 0xB06A, 0x8FF5, 0xD3EB, 0x8FF6, 0xD3F1,
+	0x8FF7, 0xB067, 0x8FF8, 0xB06E, 0x8FFA, 0xB069, 0x8FFB, 0xD3EE,
+	0x8FFC, 0xD3F0, 0x8FFD, 0xB06C, 0x8FFE, 0xD3EA, 0x8FFF, 0xD3ED,
+	0x9000, 0xB068, 0x9001, 0xB065, 0x9002, 0xD3EC, 0x9003, 0xB06B,
+	0x9004, 0xD3EF, 0x9005, 0xB06D, 0x9006, 0xB066, 0x900B, 0xD7E3,
+	0x900C, 0xD7E6, 0x900D, 0xB370, 0x900F, 0xB37A, 0x9010, 0xB376,
+	0x9011, 0xD7E4, 0x9014, 0xB37E, 0x9015, 0xB377, 0x9016, 0xB37C,
+	0x9017, 0xB372, 0x9019, 0xB36F, 0x901A, 0xB371, 0x901B, 0xB37D,
+	0x901C, 0xD7E5, 0x901D, 0xB375, 0x901E, 0xB378, 0x901F, 0xB374,
+	0x9020, 0xB379, 0x9021, 0xD7E7, 0x9022, 0xB37B, 0x9023, 0xB373,
+	0x9024, 0xD7E2, 0x902D, 0xDC4D, 0x902E, 0xB665, 0x902F, 0xDC4F,
+	0x9031, 0xB667, 0x9032, 0xB669, 0x9034, 0xDC4E, 0x9035, 0xB666,
+	0x9036, 0xB66A, 0x9038, 0xB668, 0x903C, 0xB947, 0x903D, 0xE0A3,
+	0x903E, 0xB94F, 0x903F, 0xE07E, 0x9041, 0xB950, 0x9042, 0xB945,
+	0x9044, 0xE0A1, 0x9047, 0xB94A, 0x9049, 0xE0A2, 0x904A, 0xB943,
+	0x904B, 0xB942, 0x904D, 0xB94D, 0x904E, 0xB94C, 0x904F, 0xB94B,
+	0x9050, 0xB949, 0x9051, 0xB94E, 0x9052, 0xE07D, 0x9053, 0xB944,
+	0x9054, 0xB946, 0x9055, 0xB948, 0x9058, 0xBBB8, 0x9059, 0xBBBB,
+	0x905B, 0xBBBF, 0x905C, 0xBBB9, 0x905D, 0xBBBE, 0x905E, 0xBBBC,
+	0x9060, 0xBBB7, 0x9062, 0xBBBD, 0x9063, 0xBBBA, 0x9067, 0xE852,
+	0x9068, 0xBE43, 0x9069, 0xBE41, 0x906B, 0xE853, 0x906D, 0xBE44,
+	0x906E, 0xBE42, 0x906F, 0xE851, 0x9070, 0xE850, 0x9072, 0xBFF0,
+	0x9073, 0xE84F, 0x9074, 0xBFEE, 0x9075, 0xBFED, 0x9076, 0xEBD0,
+	0x9077, 0xBE45, 0x9078, 0xBFEF, 0x9079, 0xEBD1, 0x907A, 0xBFF2,
+	0x907B, 0xEBD2, 0x907C, 0xBFF1, 0x907D, 0xC1D8, 0x907E, 0xEEC3,
+	0x907F, 0xC1D7, 0x9080, 0xC1DC, 0x9081, 0xC1DA, 0x9082, 0xC1DB,
+	0x9083, 0xC2E3, 0x9084, 0xC1D9, 0x9085, 0xEEC2, 0x9086, 0xEBD3,
+	0x9087, 0xC2E2, 0x9088, 0xC2E4, 0x908A, 0xC3E4, 0x908B, 0xC3E5,
+	0x908D, 0xF4E0, 0x908F, 0xC5DE, 0x9090, 0xC5DD, 0x9091, 0xA8B6,
+	0x9094, 0xCA55, 0x9095, 0xB06F, 0x9097, 0xCA52, 0x9098, 0xCA53,
+	0x9099, 0xCA51, 0x909B, 0xCA54, 0x909E, 0xCBAA, 0x909F, 0xCBA7,
+	0x90A0, 0xCBAC, 0x90A1, 0xCBA8, 0x90A2, 0xA8B7, 0x90A3, 0xA8BA,
+	0x90A5, 0xCBA9, 0x90A6, 0xA8B9, 0x90A7, 0xCBAB, 0x90AA, 0xA8B8,
+	0x90AF, 0xCDD5, 0x90B0, 0xCDD7, 0x90B1, 0xAAF4, 0x90B2, 0xCDD3,
+	0x90B3, 0xCDD6, 0x90B4, 0xCDD4, 0x90B5, 0xAAF2, 0x90B6, 0xAAF5,
+	0x90B8, 0xAAF3, 0x90BD, 0xD0B8, 0x90BE, 0xD0BC, 0x90BF, 0xD0B9,
+	0x90C1, 0xADA7, 0x90C3, 0xADA8, 0x90C5, 0xD0BB, 0x90C7, 0xD0BD,
+	0x90C8, 0xD0BF, 0x90CA, 0xADA5, 0x90CB, 0xD0BE, 0x90CE, 0xADA6,
+	0x90D4, 0xD7EE, 0x90D5, 0xD0BA, 0x90D6, 0xD3F2, 0x90D7, 0xD3FB,
+	0x90D8, 0xD3F9, 0x90D9, 0xD3F4, 0x90DA, 0xD3F5, 0x90DB, 0xD3FA,
+	0x90DC, 0xD3FC, 0x90DD, 0xB071, 0x90DF, 0xD3F7, 0x90E0, 0xD3F3,
+	0x90E1, 0xB070, 0x90E2, 0xB072, 0x90E3, 0xD3F6, 0x90E4, 0xD3FD,
+	0x90E5, 0xD3F8, 0x90E8, 0xB3A1, 0x90E9, 0xD7F1, 0x90EA, 0xD7E9,
+	0x90EB, 0xD7EF, 0x90EC, 0xD7F0, 0x90ED, 0xB3A2, 0x90EF, 0xD7E8,
+	0x90F0, 0xD7EA, 0x90F1, 0xD0B7, 0x90F2, 0xD7EC, 0x90F3, 0xD7ED,
+	0x90F4, 0xD7EB, 0x90F5, 0xB66C, 0x90F9, 0xDC56, 0x90FA, 0xEBD4,
+	0x90FB, 0xDC57, 0x90FC, 0xDC54, 0x90FD, 0xB3A3, 0x90FE, 0xB66E,
+	0x90FF, 0xDC53, 0x9100, 0xDC59, 0x9101, 0xDC58, 0x9102, 0xB66B,
+	0x9103, 0xDC5C, 0x9104, 0xDC52, 0x9105, 0xDC5B, 0x9106, 0xDC50,
+	0x9107, 0xDC5A, 0x9108, 0xDC55, 0x9109, 0xB66D, 0x910B, 0xE0AA,
+	0x910D, 0xE0A5, 0x910E, 0xE0AB, 0x910F, 0xE0A6, 0x9110, 0xE0A4,
+	0x9111, 0xE0A7, 0x9112, 0xB951, 0x9114, 0xE0A9, 0x9116, 0xE0A8,
+	0x9117, 0xB952, 0x9118, 0xBBC1, 0x9119, 0xBBC0, 0x911A, 0xE46E,
+	0x911B, 0xE471, 0x911C, 0xE469, 0x911D, 0xE46D, 0x911E, 0xBBC2,
+	0x911F, 0xE46C, 0x9120, 0xE46A, 0x9121, 0xE470, 0x9122, 0xE46B,
+	0x9123, 0xE468, 0x9124, 0xE46F, 0x9126, 0xE859, 0x9127, 0xBE48,
+	0x9128, 0xF14A, 0x9129, 0xE856, 0x912A, 0xE857, 0x912B, 0xE855,
+	0x912C, 0xDC51, 0x912D, 0xBE47, 0x912E, 0xE85A, 0x912F, 0xE854,
+	0x9130, 0xBE46, 0x9131, 0xBE49, 0x9132, 0xE858, 0x9133, 0xEBD5,
+	0x9134, 0xBFF3, 0x9135, 0xEBD6, 0x9136, 0xEBD7, 0x9138, 0xEEC4,
+	0x9139, 0xC1DD, 0x913A, 0xF14B, 0x913B, 0xF14C, 0x913E, 0xF14D,
+	0x913F, 0xF35D, 0x9140, 0xF35C, 0x9141, 0xF4E2, 0x9143, 0xF4E1,
+	0x9144, 0xF65B, 0x9145, 0xF65C, 0x9146, 0xF65A, 0x9147, 0xF766,
+	0x9148, 0xC5B0, 0x9149, 0xA8BB, 0x914A, 0xADAA, 0x914B, 0xADA9,
+	0x914C, 0xB075, 0x914D, 0xB074, 0x914E, 0xD440, 0x914F, 0xD441,
+	0x9150, 0xD3FE, 0x9152, 0xB073, 0x9153, 0xD7F5, 0x9155, 0xD7F6,
+	0x9156, 0xD7F2, 0x9157, 0xB3A4, 0x9158, 0xD7F3, 0x915A, 0xD7F4,
+	0x915F, 0xDC5F, 0x9160, 0xDC61, 0x9161, 0xDC5D, 0x9162, 0xDC60,
+	0x9163, 0xB66F, 0x9164, 0xDC5E, 0x9165, 0xB670, 0x9168, 0xDD73,
+	0x9169, 0xB955, 0x916A, 0xB954, 0x916C, 0xB953, 0x916E, 0xE0AC,
+	0x916F, 0xE0AD, 0x9172, 0xE473, 0x9173, 0xE475, 0x9174, 0xBBC6,
+	0x9175, 0xBBC3, 0x9177, 0xBBC5, 0x9178, 0xBBC4, 0x9179, 0xE474,
+	0x917A, 0xE472, 0x9180, 0xE861, 0x9181, 0xE85E, 0x9182, 0xE85F,
+	0x9183, 0xBE4D, 0x9184, 0xE860, 0x9185, 0xE85B, 0x9186, 0xE85C,
+	0x9187, 0xBE4A, 0x9189, 0xBE4B, 0x918A, 0xE85D, 0x918B, 0xBE4C,
+	0x918D, 0xEBDB, 0x918F, 0xEBDC, 0x9190, 0xEBD9, 0x9191, 0xEBDA,
+	0x9192, 0xBFF4, 0x9193, 0xEBD8, 0x9199, 0xEEC8, 0x919A, 0xEEC5,
+	0x919B, 0xEEC7, 0x919C, 0xC1E0, 0x919D, 0xEECB, 0x919E, 0xC1DF,
+	0x919F, 0xEEC9, 0x91A0, 0xEECC, 0x91A1, 0xEECA, 0x91A2, 0xEEC6,
+	0x91A3, 0xC1DE, 0x91A5, 0xF14F, 0x91A7, 0xF150, 0x91A8, 0xF14E,
+	0x91AA, 0xF152, 0x91AB, 0xC2E5, 0x91AC, 0xC2E6, 0x91AD, 0xF35F,
+	0x91AE, 0xC3E7, 0x91AF, 0xF151, 0x91B0, 0xF35E, 0x91B1, 0xC3E6,
+	0x91B2, 0xF4E5, 0x91B3, 0xF4E6, 0x91B4, 0xC4BF, 0x91B5, 0xF4E4,
+	0x91B7, 0xF4E3, 0x91B9, 0xF65D, 0x91BA, 0xC548, 0x91BC, 0xF849,
+	0x91BD, 0xF8C8, 0x91BE, 0xF8C7, 0x91C0, 0xC643, 0x91C1, 0xC65D,
+	0x91C2, 0xF8C9, 0x91C3, 0xF971, 0x91C5, 0xC66F, 0x91C6, 0xA8BC,
+	0x91C7, 0xAAF6, 0x91C9, 0xB956, 0x91CB, 0xC4C0, 0x91CC, 0xA8BD,
+	0x91CD, 0xADAB, 0x91CE, 0xB3A5, 0x91CF, 0xB671, 0x91D0, 0xC2E7,
+	0x91D1, 0xAAF7, 0x91D3, 0xD0C1, 0x91D4, 0xD0C0, 0x91D5, 0xD442,
+	0x91D7, 0xB078, 0x91D8, 0xB076, 0x91D9, 0xB07A, 0x91DA, 0xD444,
+	0x91DC, 0xB079, 0x91DD, 0xB077, 0x91E2, 0xD443, 0x91E3, 0xB3A8,
+	0x91E4, 0xD7FC, 0x91E6, 0xB3A7, 0x91E7, 0xB3A9, 0x91E8, 0xD842,
+	0x91E9, 0xB3AB, 0x91EA, 0xD7FE, 0x91EB, 0xD840, 0x91EC, 0xD7F7,
+	0x91ED, 0xB3AA, 0x91EE, 0xD843, 0x91F1, 0xD7F9, 0x91F3, 0xD7FA,
+	0x91F4, 0xD7F8, 0x91F5, 0xB3A6, 0x91F7, 0xD841, 0x91F8, 0xD7FB,
+	0x91F9, 0xD7FD, 0x91FD, 0xDC6D, 0x91FF, 0xDC6C, 0x9200, 0xDC6A,
+	0x9201, 0xDC62, 0x9202, 0xDC71, 0x9203, 0xDC65, 0x9204, 0xDC6F,
+	0x9205, 0xDC76, 0x9206, 0xDC6E, 0x9207, 0xB679, 0x9209, 0xB675,
+	0x920A, 0xDC63, 0x920C, 0xDC69, 0x920D, 0xB677, 0x920F, 0xDC68,
+	0x9210, 0xB678, 0x9211, 0xB67A, 0x9212, 0xDC6B, 0x9214, 0xB672,
+	0x9215, 0xB673, 0x9216, 0xDC77, 0x9217, 0xDC75, 0x9219, 0xDC74,
+	0x921A, 0xDC66, 0x921C, 0xDC72, 0x921E, 0xB676, 0x9223, 0xB674,
+	0x9224, 0xDC73, 0x9225, 0xDC64, 0x9226, 0xDC67, 0x9227, 0xDC70,
+	0x922D, 0xE4BA, 0x922E, 0xE0B7, 0x9230, 0xE0B0, 0x9231, 0xE0C3,
+	0x9232, 0xE0CC, 0x9233, 0xE0B3, 0x9234, 0xB961, 0x9236, 0xE0C0,
+	0x9237, 0xB957, 0x9238, 0xB959, 0x9239, 0xB965, 0x923A, 0xE0B1,
+	0x923D, 0xB95A, 0x923E, 0xB95C, 0x923F, 0xB966, 0x9240, 0xB95B,
+	0x9245, 0xB964, 0x9246, 0xE0B9, 0x9248, 0xE0AE, 0x9249, 0xB962,
+	0x924A, 0xE0B8, 0x924B, 0xB95E, 0x924C, 0xE0CA, 0x924D, 0xB963,
+	0x924E, 0xE0C8, 0x924F, 0xE0BC, 0x9250, 0xE0C6, 0x9251, 0xB960,
+	0x9252, 0xE0AF, 0x9253, 0xE0C9, 0x9254, 0xE0C4, 0x9256, 0xE0CB,
+	0x9257, 0xB958, 0x925A, 0xB967, 0x925B, 0xB95D, 0x925E, 0xE0B5,
+	0x9260, 0xE0BD, 0x9261, 0xE0C1, 0x9263, 0xE0C5, 0x9264, 0xB95F,
+	0x9265, 0xE0B4, 0x9266, 0xE0B2, 0x9267, 0xE0BE, 0x926C, 0xE0BB,
+	0x926D, 0xE0BA, 0x926F, 0xE0BF, 0x9270, 0xE0C2, 0x9272, 0xE0C7,
+	0x9276, 0xE478, 0x9278, 0xBBC7, 0x9279, 0xE4A4, 0x927A, 0xE47A,
+	0x927B, 0xBBCC, 0x927C, 0xBBD0, 0x927D, 0xE4AD, 0x927E, 0xE4B5,
+	0x927F, 0xE4A6, 0x9280, 0xBBC8, 0x9282, 0xE4AA, 0x9283, 0xE0B6,
+	0x9285, 0xBBC9, 0x9286, 0xE4B1, 0x9287, 0xE4B6, 0x9288, 0xE4AE,
+	0x928A, 0xE4B0, 0x928B, 0xE4B9, 0x928C, 0xE4B2, 0x928D, 0xE47E,
+	0x928E, 0xE4A9, 0x9291, 0xBBD1, 0x9293, 0xBBCD, 0x9294, 0xE47C,
+	0x9295, 0xE4AB, 0x9296, 0xBBCB, 0x9297, 0xE4A5, 0x9298, 0xBBCA,
+	0x9299, 0xE4B3, 0x929A, 0xE4A2, 0x929B, 0xE479, 0x929C, 0xBBCE,
+	0x929D, 0xE4B8, 0x92A0, 0xE47B, 0x92A1, 0xE4AF, 0x92A2, 0xE4AC,
+	0x92A3, 0xE4A7, 0x92A4, 0xE477, 0x92A5, 0xE476, 0x92A6, 0xE4A1,
+	0x92A7, 0xE4B4, 0x92A8, 0xBBCF, 0x92A9, 0xE4B7, 0x92AA, 0xE47D,
+	0x92AB, 0xE4A3, 0x92AC, 0xBE52, 0x92B2, 0xBE5A, 0x92B3, 0xBE55,
+	0x92B4, 0xE8A4, 0x92B5, 0xE8A1, 0x92B6, 0xE867, 0x92B7, 0xBE50,
+	0x92B9, 0xF9D7, 0x92BB, 0xBE4F, 0x92BC, 0xBE56, 0x92C0, 0xE865,
+	0x92C1, 0xBE54, 0x92C2, 0xE871, 0x92C3, 0xE863, 0x92C4, 0xE864,
+	0x92C5, 0xBE4E, 0x92C6, 0xE8A3, 0x92C7, 0xBE58, 0x92C8, 0xE874,
+	0x92C9, 0xE879, 0x92CA, 0xE873, 0x92CB, 0xEBEE, 0x92CC, 0xE86F,
+	0x92CD, 0xE877, 0x92CE, 0xE875, 0x92CF, 0xE868, 0x92D0, 0xE862,
+	0x92D1, 0xE87D, 0x92D2, 0xBE57, 0x92D3, 0xE87E, 0x92D5, 0xE878,
+	0x92D7, 0xE86D, 0x92D8, 0xE86B, 0x92D9, 0xE866, 0x92DD, 0xE86E,
+	0x92DE, 0xE87B, 0x92DF, 0xE86A, 0x92E0, 0xE87A, 0x92E1, 0xE8A2,
+	0x92E4, 0xBE53, 0x92E6, 0xE876, 0x92E7, 0xE87C, 0x92E8, 0xE872,
+	0x92E9, 0xE86C, 0x92EA, 0xBE51, 0x92EE, 0xE4A8, 0x92EF, 0xE870,
+	0x92F0, 0xBE59, 0x92F1, 0xE869, 0x92F7, 0xEBF4, 0x92F8, 0xBFF7,
+	0x92F9, 0xEBF3, 0x92FA, 0xEBF0, 0x92FB, 0xEC44, 0x92FC, 0xBFFB,
+	0x92FE, 0xEC41, 0x92FF, 0xEBF8, 0x9300, 0xEC43, 0x9301, 0xEBE9,
+	0x9302, 0xEBF6, 0x9304, 0xBFFD, 0x9306, 0xEBE1, 0x9308, 0xEBDF,
+	0x9309, 0xEC42, 0x930B, 0xEC40, 0x930C, 0xEBFE, 0x930D, 0xEBED,
+	0x930E, 0xEBEC, 0x930F, 0xEBE2, 0x9310, 0xC040, 0x9312, 0xEBE8,
+	0x9313, 0xEBF2, 0x9314, 0xEBFD, 0x9315, 0xC043, 0x9316, 0xEC45,
+	0x9318, 0xC1E8, 0x9319, 0xC045, 0x931A, 0xBFFE, 0x931B, 0xEBE6,
+	0x931D, 0xEBEF, 0x931E, 0xEBDE, 0x931F, 0xEBE0, 0x9320, 0xBFF5,
+	0x9321, 0xC042, 0x9322, 0xBFFA, 0x9323, 0xEBE7, 0x9324, 0xEBF7,
+	0x9325, 0xEBF1, 0x9326, 0xC041, 0x9327, 0xEBDD, 0x9328, 0xC1E3,
+	0x9329, 0xEBF9, 0x932A, 0xEBFC, 0x932B, 0xBFFC, 0x932D, 0xEBEB,
+	0x932E, 0xC044, 0x932F, 0xBFF9, 0x9333, 0xBFF8, 0x9334, 0xEBF5,
+	0x9335, 0xEBFB, 0x9336, 0xBFF6, 0x9338, 0xEBE4, 0x9339, 0xEBFA,
+	0x933C, 0xEBE5, 0x9346, 0xEBEA, 0x9347, 0xEED2, 0x9349, 0xEED7,
+	0x934A, 0xC1E5, 0x934B, 0xC1E7, 0x934C, 0xEEDD, 0x934D, 0xC1E1,
+	0x934E, 0xEEEC, 0x934F, 0xEEE3, 0x9350, 0xEED8, 0x9351, 0xEED9,
+	0x9352, 0xEEE2, 0x9354, 0xC1EE, 0x9355, 0xEEE1, 0x9356, 0xEED1,
+	0x9357, 0xEEE0, 0x9358, 0xEED4, 0x9359, 0xEEED, 0x935A, 0xC1ED,
+	0x935B, 0xC1EB, 0x935C, 0xEED5, 0x935E, 0xEEE8, 0x9360, 0xEEDA,
+	0x9361, 0xEEE7, 0x9363, 0xEEE9, 0x9364, 0xEED0, 0x9365, 0xC1E6,
+	0x9367, 0xEEEA, 0x936A, 0xEEDE, 0x936C, 0xC1EA, 0x936D, 0xEEDB,
+	0x9370, 0xC1EC, 0x9371, 0xEEE4, 0x9375, 0xC1E4, 0x9376, 0xEED6,
+	0x9377, 0xEEE5, 0x9379, 0xEEDF, 0x937A, 0xEBE3, 0x937B, 0xEEE6,
+	0x937C, 0xEED3, 0x937E, 0xC1E9, 0x9380, 0xEEEB, 0x9382, 0xC1E2,
+	0x9383, 0xEECE, 0x9388, 0xF160, 0x9389, 0xF159, 0x938A, 0xC2E9,
+	0x938C, 0xF154, 0x938D, 0xF163, 0x938E, 0xF15B, 0x938F, 0xEEDC,
+	0x9391, 0xF165, 0x9392, 0xF155, 0x9394, 0xC2E8, 0x9395, 0xF15F,
+	0x9396, 0xC2EA, 0x9397, 0xC2F2, 0x9398, 0xC2F0, 0x9399, 0xF161,
+	0x939A, 0xC2F1, 0x939B, 0xF157, 0x939D, 0xF158, 0x939E, 0xF15D,
+	0x939F, 0xF162, 0x93A1, 0xEECD, 0x93A2, 0xC2EB, 0x93A3, 0xF16A,
+	0x93A4, 0xF167, 0x93A5, 0xF16B, 0x93A6, 0xF15E, 0x93A7, 0xF15A,
+	0x93A8, 0xF168, 0x93A9, 0xF36A, 0x93AA, 0xF15C, 0x93AC, 0xC2EE,
+	0x93AE, 0xC2ED, 0x93AF, 0xEECF, 0x93B0, 0xC2EF, 0x93B1, 0xF164,
+	0x93B2, 0xF166, 0x93B3, 0xC2EC, 0x93B4, 0xF169, 0x93B5, 0xF153,
+	0x93B7, 0xF156, 0x93C0, 0xF373, 0x93C2, 0xF363, 0x93C3, 0xC3EB,
+	0x93C4, 0xF371, 0x93C7, 0xF361, 0x93C8, 0xC3EC, 0x93CA, 0xF36C,
+	0x93CC, 0xF368, 0x93CD, 0xC3F1, 0x93CE, 0xF372, 0x93CF, 0xF362,
+	0x93D0, 0xF365, 0x93D1, 0xC3E9, 0x93D2, 0xF374, 0x93D4, 0xF36D,
+	0x93D5, 0xF370, 0x93D6, 0xC3EF, 0x93D7, 0xC3F4, 0x93D8, 0xC3F2,
+	0x93D9, 0xF369, 0x93DA, 0xF364, 0x93DC, 0xC3ED, 0x93DD, 0xC3EE,
+	0x93DE, 0xF360, 0x93DF, 0xC3EA, 0x93E1, 0xC3E8, 0x93E2, 0xC3F0,
+	0x93E3, 0xF36F, 0x93E4, 0xC3F3, 0x93E6, 0xF36B, 0x93E7, 0xF375,
+	0x93E8, 0xC3F5, 0x93EC, 0xF367, 0x93EE, 0xF36E, 0x93F5, 0xF4F3,
+	0x93F6, 0xF542, 0x93F7, 0xF4F5, 0x93F8, 0xF4FC, 0x93F9, 0xF366,
+	0x93FA, 0xF4FA, 0x93FB, 0xF4E9, 0x93FC, 0xF540, 0x93FD, 0xC4C3,
+	0x93FE, 0xF4ED, 0x93FF, 0xF4FE, 0x9400, 0xF4F4, 0x9403, 0xC4C2,
+	0x9406, 0xF544, 0x9407, 0xF4F6, 0x9409, 0xF4FB, 0x940A, 0xF4FD,
+	0x940B, 0xF4E7, 0x940C, 0xF541, 0x940D, 0xF4F2, 0x940E, 0xF4F7,
+	0x940F, 0xF4EB, 0x9410, 0xF4EF, 0x9411, 0xF543, 0x9412, 0xF4F9,
+	0x9413, 0xF4E8, 0x9414, 0xF4EC, 0x9415, 0xF4EE, 0x9416, 0xF4F8,
+	0x9418, 0xC4C1, 0x9419, 0xF4F1, 0x9420, 0xF4EA, 0x9428, 0xF4F0,
+	0x9429, 0xF661, 0x942A, 0xF666, 0x942B, 0xC54F, 0x942C, 0xF668,
+	0x942E, 0xC549, 0x9430, 0xF664, 0x9431, 0xF66A, 0x9432, 0xC54E,
+	0x9433, 0xC54A, 0x9435, 0xC54B, 0x9436, 0xF660, 0x9437, 0xF667,
+	0x9438, 0xC54D, 0x9439, 0xF665, 0x943A, 0xC54C, 0x943B, 0xF65F,
+	0x943C, 0xF663, 0x943D, 0xF662, 0x943F, 0xF65E, 0x9440, 0xF669,
+	0x9444, 0xC5B1, 0x9445, 0xF76D, 0x9446, 0xF770, 0x9447, 0xF76C,
+	0x9448, 0xF76E, 0x9449, 0xF76F, 0x944A, 0xF769, 0x944B, 0xF76A,
+	0x944C, 0xF767, 0x944F, 0xF76B, 0x9450, 0xF768, 0x9451, 0xC5B2,
+	0x9452, 0xC5B3, 0x9455, 0xF84B, 0x9457, 0xF84D, 0x945D, 0xF84C,
+	0x945E, 0xF84E, 0x9460, 0xC5E0, 0x9462, 0xF84A, 0x9463, 0xC5DF,
+	0x9464, 0xC5E1, 0x9468, 0xF8CB, 0x9469, 0xF8CC, 0x946A, 0xC644,
+	0x946B, 0xF8CA, 0x946D, 0xF953, 0x946E, 0xF952, 0x946F, 0xF954,
+	0x9470, 0xC65F, 0x9471, 0xF955, 0x9472, 0xC65E, 0x9473, 0xF956,
+	0x9474, 0xF972, 0x9475, 0xF975, 0x9476, 0xF974, 0x9477, 0xC668,
+	0x9478, 0xF973, 0x947C, 0xC672, 0x947D, 0xC670, 0x947E, 0xC671,
+	0x947F, 0xC677, 0x9480, 0xF9C0, 0x9481, 0xF9C1, 0x9482, 0xF9BF,
+	0x9483, 0xF9C9, 0x9577, 0xAAF8, 0x957A, 0xD844, 0x957B, 0xDC78,
+	0x957C, 0xE8A5, 0x957D, 0xF376, 0x9580, 0xAAF9, 0x9582, 0xADAC,
+	0x9583, 0xB07B, 0x9586, 0xD845, 0x9588, 0xD846, 0x9589, 0xB3AC,
+	0x958B, 0xB67D, 0x958C, 0xDC7A, 0x958D, 0xDC79, 0x958E, 0xB6A3,
+	0x958F, 0xB67C, 0x9590, 0xDC7B, 0x9591, 0xB67E, 0x9592, 0xB6A2,
+	0x9593, 0xB6A1, 0x9594, 0xB67B, 0x9598, 0xB968, 0x959B, 0xE0D0,
+	0x959C, 0xE0CE, 0x959E, 0xE0CF, 0x959F, 0xE0CD, 0x95A1, 0xBBD2,
+	0x95A3, 0xBBD5, 0x95A4, 0xBBD7, 0x95A5, 0xBBD6, 0x95A8, 0xBBD3,
+	0x95A9, 0xBBD4, 0x95AB, 0xE8A7, 0x95AC, 0xE8A6, 0x95AD, 0xBE5B,
+	0x95AE, 0xE8A8, 0x95B0, 0xE8A9, 0x95B1, 0xBE5C, 0x95B5, 0xEC4D,
+	0x95B6, 0xEC4B, 0x95B7, 0xEEF3, 0x95B9, 0xEC49, 0x95BA, 0xEC4A,
+	0x95BB, 0xC046, 0x95BC, 0xEC46, 0x95BD, 0xEC4E, 0x95BE, 0xEC48,
+	0x95BF, 0xEC4C, 0x95C0, 0xEEEF, 0x95C3, 0xEEF1, 0x95C5, 0xEEF2,
+	0x95C6, 0xC1F3, 0x95C7, 0xEEEE, 0x95C8, 0xC1F2, 0x95C9, 0xEEF0,
+	0x95CA, 0xC1EF, 0x95CB, 0xC1F0, 0x95CC, 0xC1F1, 0x95CD, 0xEC47,
+	0x95D0, 0xC2F5, 0x95D1, 0xF16E, 0x95D2, 0xF16C, 0x95D3, 0xF16D,
+	0x95D4, 0xC2F3, 0x95D5, 0xC2F6, 0x95D6, 0xC2F4, 0x95DA, 0xF377,
+	0x95DB, 0xF378, 0x95DC, 0xC3F6, 0x95DE, 0xF545, 0x95DF, 0xF547,
+	0x95E0, 0xF546, 0x95E1, 0xC4C4, 0x95E2, 0xC550, 0x95E3, 0xF66D,
+	0x95E4, 0xF66C, 0x95E5, 0xF66B, 0x961C, 0xAAFA, 0x961E, 0xC9AA,
+	0x9620, 0xCA58, 0x9621, 0xA6E9, 0x9622, 0xCA56, 0x9623, 0xCA59,
+	0x9624, 0xCA57, 0x9628, 0xCBAE, 0x962A, 0xA8C1, 0x962C, 0xA8C2,
+	0x962D, 0xCBB0, 0x962E, 0xA8BF, 0x962F, 0xCBAF, 0x9630, 0xCBAD,
+	0x9631, 0xA8C0, 0x9632, 0xA8BE, 0x9639, 0xCDD8, 0x963A, 0xCDDB,
+	0x963B, 0xAAFD, 0x963C, 0xCDDA, 0x963D, 0xCDD9, 0x963F, 0xAAFC,
+	0x9640, 0xAAFB, 0x9642, 0xAB40, 0x9643, 0xCDDC, 0x9644, 0xAAFE,
+	0x964A, 0xD0C6, 0x964B, 0xADAE, 0x964C, 0xADAF, 0x964D, 0xADB0,
+	0x964E, 0xD0C7, 0x964F, 0xD0C3, 0x9650, 0xADAD, 0x9651, 0xD0C4,
+	0x9653, 0xD0C5, 0x9654, 0xD0C2, 0x9658, 0xB0A4, 0x965B, 0xB0A1,
+	0x965C, 0xD445, 0x965D, 0xB0A2, 0x965E, 0xB0A5, 0x965F, 0xD446,
+	0x9661, 0xB07E, 0x9662, 0xB07C, 0x9663, 0xB07D, 0x9664, 0xB0A3,
+	0x966A, 0xB3AD, 0x966B, 0xD849, 0x966C, 0xB3B5, 0x966D, 0xD848,
+	0x966F, 0xD84B, 0x9670, 0xB3B1, 0x9671, 0xD84A, 0x9672, 0xB6AB,
+	0x9673, 0xB3AF, 0x9674, 0xB3B2, 0x9675, 0xB3AE, 0x9676, 0xB3B3,
+	0x9677, 0xB3B4, 0x9678, 0xB3B0, 0x967C, 0xD847, 0x967D, 0xB6A7,
+	0x967E, 0xDC7D, 0x9680, 0xDCA3, 0x9683, 0xDCA2, 0x9684, 0xB6AC,
+	0x9685, 0xB6A8, 0x9686, 0xB6A9, 0x9687, 0xDC7C, 0x9688, 0xDC7E,
+	0x9689, 0xDCA1, 0x968A, 0xB6A4, 0x968B, 0xB6A6, 0x968D, 0xB6AA,
+	0x968E, 0xB6A5, 0x9691, 0xE0D3, 0x9692, 0xE0D1, 0x9693, 0xE0D2,
+	0x9694, 0xB96A, 0x9695, 0xB96B, 0x9697, 0xE0D4, 0x9698, 0xB969,
+	0x9699, 0xBBD8, 0x969B, 0xBBDA, 0x969C, 0xBBD9, 0x969E, 0xE4BB,
+	0x96A1, 0xE4BC, 0x96A2, 0xE8AB, 0x96A4, 0xE8AA, 0x96A7, 0xC047,
+	0x96A8, 0xC048, 0x96A9, 0xEC4F, 0x96AA, 0xC049, 0x96AC, 0xEEF6,
+	0x96AE, 0xEEF4, 0x96B0, 0xEEF5, 0x96B1, 0xC1F4, 0x96B3, 0xF16F,
+	0x96B4, 0xC3F7, 0x96B8, 0xC1F5, 0x96B9, 0xAB41, 0x96BB, 0xB0A6,
+	0x96BC, 0xD447, 0x96BF, 0xD84C, 0x96C0, 0xB3B6, 0x96C1, 0xB6AD,
+	0x96C2, 0xDCA4, 0x96C3, 0xDCA6, 0x96C4, 0xB6AF, 0x96C5, 0xB6AE,
+	0x96C6, 0xB6B0, 0x96C7, 0xB6B1, 0x96C8, 0xDCA5, 0x96C9, 0xB96E,
+	0x96CA, 0xB96F, 0x96CB, 0xB96D, 0x96CC, 0xBBDB, 0x96CD, 0xB96C,
+	0x96CE, 0xE0D5, 0x96D2, 0xBBDC, 0x96D3, 0xE8AC, 0x96D4, 0xEC50,
+	0x96D5, 0xC04A, 0x96D6, 0xC1F6, 0x96D7, 0xF170, 0x96D8, 0xF174,
+	0x96D9, 0xC2F9, 0x96DA, 0xF171, 0x96DB, 0xC2FA, 0x96DC, 0xC2F8,
+	0x96DD, 0xF175, 0x96DE, 0xC2FB, 0x96DF, 0xF173, 0x96E1, 0xF379,
+	0x96E2, 0xC2F7, 0x96E3, 0xC3F8, 0x96E5, 0xF8CD, 0x96E8, 0xAB42,
+	0x96E9, 0xB3B8, 0x96EA, 0xB3B7, 0x96EF, 0xB6B2, 0x96F0, 0xDCA8,
+	0x96F1, 0xDCA7, 0x96F2, 0xB6B3, 0x96F5, 0xE0D9, 0x96F6, 0xB973,
+	0x96F7, 0xB970, 0x96F8, 0xE0D8, 0x96F9, 0xB972, 0x96FA, 0xE0D6,
+	0x96FB, 0xB971, 0x96FD, 0xE0D7, 0x96FF, 0xE4BD, 0x9700, 0xBBDD,
+	0x9702, 0xE8AF, 0x9704, 0xBE5D, 0x9705, 0xE8AD, 0x9706, 0xBE5E,
+	0x9707, 0xBE5F, 0x9708, 0xE8AE, 0x9709, 0xBE60, 0x970B, 0xEC51,
+	0x970D, 0xC04E, 0x970E, 0xC04B, 0x970F, 0xC050, 0x9710, 0xEC53,
+	0x9711, 0xC04C, 0x9712, 0xEC52, 0x9713, 0xC04F, 0x9716, 0xC04D,
+	0x9718, 0xEEF9, 0x9719, 0xEEFB, 0x971C, 0xC1F7, 0x971D, 0xEEFA,
+	0x971E, 0xC1F8, 0x971F, 0xEEF8, 0x9720, 0xEEF7, 0x9722, 0xF177,
+	0x9723, 0xF176, 0x9724, 0xC2FC, 0x9725, 0xF178, 0x9726, 0xF37E,
+	0x9727, 0xC3FA, 0x9728, 0xF37D, 0x9729, 0xF37A, 0x972A, 0xC3F9,
+	0x972B, 0xF37B, 0x972C, 0xF37C, 0x972E, 0xF548, 0x972F, 0xF549,
+	0x9730, 0xC4C5, 0x9732, 0xC553, 0x9735, 0xF66E, 0x9738, 0xC551,
+	0x9739, 0xC552, 0x973A, 0xF66F, 0x973D, 0xC5B4, 0x973E, 0xC5B5,
+	0x973F, 0xF771, 0x9742, 0xC645, 0x9743, 0xF8CF, 0x9744, 0xC647,
+	0x9746, 0xF8CE, 0x9747, 0xF8D0, 0x9748, 0xC646, 0x9749, 0xF957,
+	0x974B, 0xF9AD, 0x9752, 0xAB43, 0x9756, 0xB974, 0x9758, 0xE4BE,
+	0x975A, 0xE8B0, 0x975B, 0xC051, 0x975C, 0xC052, 0x975E, 0xAB44,
+	0x9760, 0xBE61, 0x9761, 0xC3FB, 0x9762, 0xADB1, 0x9766, 0xC053,
+	0x9768, 0xC5E2, 0x9769, 0xADB2, 0x976A, 0xD84D, 0x976C, 0xDCA9,
+	0x976E, 0xDCAB, 0x9770, 0xDCAA, 0x9772, 0xE0DD, 0x9773, 0xE0DA,
+	0x9774, 0xB975, 0x9776, 0xB976, 0x9777, 0xE0DB, 0x9778, 0xE0DC,
+	0x977A, 0xE4C0, 0x977B, 0xE4C5, 0x977C, 0xBBDE, 0x977D, 0xE4BF,
+	0x977E, 0xE4C1, 0x977F, 0xE4C8, 0x9780, 0xE4C3, 0x9781, 0xE4C7,
+	0x9782, 0xE4C4, 0x9783, 0xE4C2, 0x9784, 0xE4C6, 0x9785, 0xBBDF,
+	0x9788, 0xE8B3, 0x978A, 0xE8B1, 0x978B, 0xBE63, 0x978D, 0xBE62,
+	0x978E, 0xE8B2, 0x978F, 0xBE64, 0x9794, 0xEC56, 0x9797, 0xEC55,
+	0x9798, 0xC054, 0x9799, 0xEC54, 0x979A, 0xEEFC, 0x979C, 0xEEFE,
+	0x979D, 0xEF41, 0x979E, 0xEF40, 0x97A0, 0xC1F9, 0x97A1, 0xEEFD,
+	0x97A2, 0xF1A1, 0x97A3, 0xC2FD, 0x97A4, 0xF17D, 0x97A5, 0xF1A2,
+	0x97A6, 0xC2FE, 0x97A8, 0xF17B, 0x97AA, 0xF17E, 0x97AB, 0xF17C,
+	0x97AC, 0xF179, 0x97AD, 0xC340, 0x97AE, 0xF17A, 0x97B3, 0xF3A1,
+	0x97B6, 0xF3A3, 0x97B7, 0xF3A2, 0x97B9, 0xF54A, 0x97BB, 0xF54B,
+	0x97BF, 0xF670, 0x97C1, 0xC5B7, 0x97C3, 0xC5B6, 0x97C4, 0xF84F,
+	0x97C5, 0xF850, 0x97C6, 0xC648, 0x97C7, 0xF8D1, 0x97C9, 0xC669,
+	0x97CB, 0xADB3, 0x97CC, 0xB6B4, 0x97CD, 0xE4CA, 0x97CE, 0xE4C9,
+	0x97CF, 0xE8B5, 0x97D0, 0xE8B4, 0x97D3, 0xC1FA, 0x97D4, 0xEF43,
+	0x97D5, 0xEF42, 0x97D6, 0xF1A5, 0x97D7, 0xF1A3, 0x97D8, 0xF1A6,
+	0x97D9, 0xF1A4, 0x97DC, 0xC3FC, 0x97DD, 0xF3A4, 0x97DE, 0xF3A5,
+	0x97DF, 0xF3A6, 0x97E1, 0xF671, 0x97E3, 0xF772, 0x97E5, 0xF8D2,
+	0x97ED, 0xADB4, 0x97F0, 0xEC57, 0x97F1, 0xEF44, 0x97F3, 0xADB5,
+	0x97F6, 0xBBE0, 0x97F8, 0xEC58, 0x97F9, 0xC341, 0x97FA, 0xF1A7,
+	0x97FB, 0xC3FD, 0x97FD, 0xF54C, 0x97FE, 0xF54D, 0x97FF, 0xC554,
+	0x9800, 0xF851, 0x9801, 0xADB6, 0x9802, 0xB3BB, 0x9803, 0xB3BC,
+	0x9804, 0xD84E, 0x9805, 0xB6B5, 0x9806, 0xB6B6, 0x9807, 0xDCAC,
+	0x9808, 0xB6B7, 0x980A, 0xB97A, 0x980C, 0xB97C, 0x980D, 0xE0DF,
+	0x980E, 0xE0E0, 0x980F, 0xE0DE, 0x9810, 0xB977, 0x9811, 0xB978,
+	0x9812, 0xB97B, 0x9813, 0xB979, 0x9816, 0xE4CB, 0x9817, 0xBBE1,
+	0x9818, 0xBBE2, 0x981B, 0xE8BC, 0x981C, 0xBE67, 0x981D, 0xE8B7,
+	0x981E, 0xE8B6, 0x9820, 0xE8BB, 0x9821, 0xBE65, 0x9824, 0xC05B,
+	0x9826, 0xE8B8, 0x9827, 0xE8BD, 0x9828, 0xE8BA, 0x9829, 0xE8B9,
+	0x982B, 0xBE66, 0x982D, 0xC059, 0x982F, 0xEC5A, 0x9830, 0xC055,
+	0x9832, 0xEC5B, 0x9835, 0xEC59, 0x9837, 0xC058, 0x9838, 0xC056,
+	0x9839, 0xC05A, 0x983B, 0xC057, 0x9841, 0xEF45, 0x9843, 0xEF4A,
+	0x9844, 0xEF46, 0x9845, 0xEF49, 0x9846, 0xC1FB, 0x9848, 0xEDD4,
+	0x9849, 0xEF48, 0x984A, 0xEF47, 0x984C, 0xC344, 0x984D, 0xC342,
+	0x984E, 0xC345, 0x984F, 0xC343, 0x9850, 0xF1A8, 0x9851, 0xF1A9,
+	0x9852, 0xF1AA, 0x9853, 0xC346, 0x9857, 0xF3AA, 0x9858, 0xC440,
+	0x9859, 0xF3A8, 0x985B, 0xC441, 0x985C, 0xF3A7, 0x985D, 0xF3A9,
+	0x985E, 0xC3FE, 0x985F, 0xF551, 0x9860, 0xF54E, 0x9862, 0xF54F,
+	0x9863, 0xF550, 0x9864, 0xF672, 0x9865, 0xC556, 0x9867, 0xC555,
+	0x9869, 0xF774, 0x986A, 0xF773, 0x986B, 0xC5B8, 0x986F, 0xC5E3,
+	0x9870, 0xC649, 0x9871, 0xC660, 0x9872, 0xF958, 0x9873, 0xF9AE,
+	0x9874, 0xF9AF, 0x98A8, 0xADB7, 0x98A9, 0xDCAD, 0x98AC, 0xE0E1,
+	0x98AD, 0xE4CC, 0x98AE, 0xE4CD, 0x98AF, 0xBBE3, 0x98B1, 0xBBE4,
+	0x98B2, 0xE8BE, 0x98B3, 0xBE68, 0x98B6, 0xC1FC, 0x98B8, 0xF1AB,
+	0x98BA, 0xC347, 0x98BB, 0xF3AD, 0x98BC, 0xC442, 0x98BD, 0xF3AC,
+	0x98BE, 0xF3AE, 0x98BF, 0xF3AB, 0x98C0, 0xF675, 0x98C1, 0xF552,
+	0x98C2, 0xF553, 0x98C4, 0xC4C6, 0x98C6, 0xF674, 0x98C9, 0xF673,
+	0x98CB, 0xF775, 0x98CC, 0xF9B0, 0x98DB, 0xADB8, 0x98DF, 0xADB9,
+	0x98E2, 0xB0A7, 0x98E3, 0xD448, 0x98E5, 0xD84F, 0x98E7, 0xB6B8,
+	0x98E9, 0xB6BB, 0x98EA, 0xB6B9, 0x98EB, 0xDCAE, 0x98ED, 0xB6BD,
+	0x98EF, 0xB6BA, 0x98F2, 0xB6BC, 0x98F4, 0xB97E, 0x98F6, 0xE0E2,
+	0x98F9, 0xE0E3, 0x98FA, 0xE8C0, 0x98FC, 0xB97D, 0x98FD, 0xB9A1,
+	0x98FE, 0xB9A2, 0x9900, 0xE4CF, 0x9902, 0xE4CE, 0x9903, 0xBBE5,
+	0x9905, 0xBBE6, 0x9907, 0xE4D0, 0x9908, 0xE8BF, 0x9909, 0xBBE8,
+	0x990A, 0xBE69, 0x990C, 0xBBE7, 0x9910, 0xC05C, 0x9911, 0xE8C1,
+	0x9912, 0xBE6B, 0x9913, 0xBE6A, 0x9914, 0xE8C2, 0x9915, 0xE8C5,
+	0x9916, 0xE8C3, 0x9917, 0xE8C4, 0x9918, 0xBE6C, 0x991A, 0xC061,
+	0x991B, 0xC05F, 0x991E, 0xC05E, 0x991F, 0xEC5D, 0x9921, 0xC060,
+	0x9924, 0xEC5C, 0x9925, 0xEF4B, 0x9927, 0xEC5E, 0x9928, 0xC05D,
+	0x9929, 0xEC5F, 0x992A, 0xEF4E, 0x992B, 0xEF4C, 0x992C, 0xEF4D,
+	0x992D, 0xEF52, 0x992E, 0xC34B, 0x992F, 0xEF51, 0x9930, 0xEF54,
+	0x9931, 0xEF53, 0x9932, 0xEF50, 0x9933, 0xEF4F, 0x9935, 0xC1FD,
+	0x993A, 0xF1AE, 0x993C, 0xF1AD, 0x993D, 0xC34A, 0x993E, 0xC348,
+	0x993F, 0xC349, 0x9941, 0xF1AC, 0x9943, 0xF3B1, 0x9945, 0xC443,
+	0x9947, 0xF3B0, 0x9948, 0xF3AF, 0x9949, 0xC444, 0x994B, 0xF558,
+	0x994C, 0xF557, 0x994E, 0xF555, 0x9950, 0xF554, 0x9951, 0xC4C8,
+	0x9952, 0xC4C7, 0x9953, 0xF559, 0x9954, 0xF776, 0x9955, 0xC5B9,
+	0x9956, 0xF677, 0x9957, 0xC557, 0x9958, 0xF676, 0x9959, 0xF556,
+	0x995B, 0xF777, 0x995C, 0xC5E4, 0x995E, 0xC661, 0x995F, 0xF959,
+	0x9961, 0xF9B1, 0x9996, 0xADBA, 0x9997, 0xD850, 0x9998, 0xEF55,
+	0x9999, 0xADBB, 0x999C, 0xE4D2, 0x999D, 0xE4D1, 0x999E, 0xEC60,
+	0x99A1, 0xEF57, 0x99A3, 0xEF56, 0x99A5, 0xC34C, 0x99A6, 0xF3B2,
+	0x99A7, 0xF3B3, 0x99A8, 0xC4C9, 0x99AB, 0xF9B2, 0x99AC, 0xB0A8,
+	0x99AD, 0xB6BF, 0x99AE, 0xB6BE, 0x99AF, 0xE0E4, 0x99B0, 0xE0E6,
+	0x99B1, 0xB9A4, 0x99B2, 0xE0E5, 0x99B3, 0xB9A3, 0x99B4, 0xB9A5,
+	0x99B5, 0xE0E7, 0x99B9, 0xE4D4, 0x99BA, 0xE4D6, 0x99BB, 0xE4D5,
+	0x99BD, 0xE4D8, 0x99C1, 0xBBE9, 0x99C2, 0xE4D7, 0x99C3, 0xE4D3,
+	0x99C7, 0xE4D9, 0x99C9, 0xE8CC, 0x99CB, 0xE8CF, 0x99CC, 0xE8D1,
+	0x99CD, 0xE8C7, 0x99CE, 0xE8CB, 0x99CF, 0xE8C8, 0x99D0, 0xBE6E,
+	0x99D1, 0xBE71, 0x99D2, 0xBE73, 0x99D3, 0xE8C9, 0x99D4, 0xE8CA,
+	0x99D5, 0xBE72, 0x99D6, 0xE8CD, 0x99D7, 0xE8D0, 0x99D8, 0xE8CE,
+	0x99D9, 0xBE74, 0x99DB, 0xBE70, 0x99DC, 0xE8C6, 0x99DD, 0xBE6D,
+	0x99DF, 0xBE6F, 0x99E2, 0xC063, 0x99E3, 0xEC66, 0x99E4, 0xEC64,
+	0x99E5, 0xEC63, 0x99E7, 0xEC69, 0x99E9, 0xEC68, 0x99EA, 0xEC67,
+	0x99EC, 0xEC62, 0x99ED, 0xC062, 0x99EE, 0xEC61, 0x99F0, 0xEC65,
+	0x99F1, 0xC064, 0x99F4, 0xEF5A, 0x99F6, 0xEF5E, 0x99F7, 0xEF5B,
+	0x99F8, 0xEF5D, 0x99F9, 0xEF5C, 0x99FA, 0xEF59, 0x99FB, 0xEF5F,
+	0x99FC, 0xEF62, 0x99FD, 0xEF60, 0x99FE, 0xEF61, 0x99FF, 0xC240,
+	0x9A01, 0xC1FE, 0x9A02, 0xEF58, 0x9A03, 0xEF63, 0x9A04, 0xF1B3,
+	0x9A05, 0xF1B6, 0x9A06, 0xF1B8, 0x9A07, 0xF1B7, 0x9A09, 0xF1B1,
+	0x9A0A, 0xF1B5, 0x9A0B, 0xF1B0, 0x9A0D, 0xF1B2, 0x9A0E, 0xC34D,
+	0x9A0F, 0xF1AF, 0x9A11, 0xF1B4, 0x9A14, 0xF3C0, 0x9A15, 0xF3B5,
+	0x9A16, 0xC445, 0x9A19, 0xC446, 0x9A1A, 0xF3B4, 0x9A1B, 0xF3B9,
+	0x9A1C, 0xF3BF, 0x9A1D, 0xF3B7, 0x9A1E, 0xF3BE, 0x9A20, 0xF3BB,
+	0x9A22, 0xF3BA, 0x9A23, 0xF3BD, 0x9A24, 0xF3B8, 0x9A25, 0xF3B6,
+	0x9A27, 0xF3BC, 0x9A29, 0xF560, 0x9A2A, 0xF55E, 0x9A2B, 0xC4CA,
+	0x9A2C, 0xF55D, 0x9A2D, 0xF563, 0x9A2E, 0xF561, 0x9A30, 0xC4CB,
+	0x9A31, 0xF55C, 0x9A32, 0xF55A, 0x9A34, 0xF55B, 0x9A35, 0xC4CD,
+	0x9A36, 0xF55F, 0x9A37, 0xC4CC, 0x9A38, 0xF562, 0x9A39, 0xF678,
+	0x9A3A, 0xF67E, 0x9A3D, 0xF679, 0x9A3E, 0xC55B, 0x9A3F, 0xF6A1,
+	0x9A40, 0xC55A, 0x9A41, 0xF67D, 0x9A42, 0xF67C, 0x9A43, 0xC559,
+	0x9A44, 0xF67B, 0x9A45, 0xC558, 0x9A46, 0xF67A, 0x9A48, 0xF77D,
+	0x9A49, 0xF7A1, 0x9A4A, 0xF77E, 0x9A4C, 0xF77B, 0x9A4D, 0xC5BB,
+	0x9A4E, 0xF778, 0x9A4F, 0xF77C, 0x9A50, 0xF7A3, 0x9A52, 0xF7A2,
+	0x9A53, 0xF779, 0x9A54, 0xF77A, 0x9A55, 0xC5BA, 0x9A56, 0xF852,
+	0x9A57, 0xC5E7, 0x9A59, 0xF853, 0x9A5A, 0xC5E5, 0x9A5B, 0xC5E6,
+	0x9A5E, 0xF8D3, 0x9A5F, 0xC64A, 0x9A60, 0xF976, 0x9A62, 0xC66A,
+	0x9A64, 0xF9B3, 0x9A65, 0xC66B, 0x9A66, 0xF9B4, 0x9A67, 0xF9B5,
+	0x9A68, 0xF9C3, 0x9A69, 0xF9C2, 0x9A6A, 0xC67A, 0x9A6B, 0xF9CD,
+	0x9AA8, 0xB0A9, 0x9AAB, 0xE0E9, 0x9AAD, 0xE0E8, 0x9AAF, 0xBBEA,
+	0x9AB0, 0xBBEB, 0x9AB1, 0xE4DA, 0x9AB3, 0xE8D2, 0x9AB4, 0xEC6C,
+	0x9AB7, 0xBE75, 0x9AB8, 0xC065, 0x9AB9, 0xEC6A, 0x9ABB, 0xEC6D,
+	0x9ABC, 0xC066, 0x9ABE, 0xEF64, 0x9ABF, 0xEC6B, 0x9AC0, 0xF1B9,
+	0x9AC1, 0xC34E, 0x9AC2, 0xF3C1, 0x9AC6, 0xF566, 0x9AC7, 0xF564,
+	0x9ACA, 0xF565, 0x9ACD, 0xF6A2, 0x9ACF, 0xC55C, 0x9AD0, 0xF7A4,
+	0x9AD1, 0xC5EA, 0x9AD2, 0xC5BC, 0x9AD3, 0xC5E8, 0x9AD4, 0xC5E9,
+	0x9AD5, 0xF8D4, 0x9AD6, 0xC662, 0x9AD8, 0xB0AA, 0x9ADC, 0xF1BA,
+	0x9ADF, 0xD449, 0x9AE1, 0xB9A6, 0x9AE3, 0xE4DB, 0x9AE6, 0xBBEC,
+	0x9AE7, 0xE4DC, 0x9AEB, 0xE8D4, 0x9AEC, 0xE8D3, 0x9AED, 0xC068,
+	0x9AEE, 0xBE76, 0x9AEF, 0xBE77, 0x9AF1, 0xE8D7, 0x9AF2, 0xE8D6,
+	0x9AF3, 0xE8D5, 0x9AF6, 0xEC6E, 0x9AF7, 0xEC71, 0x9AF9, 0xEC70,
+	0x9AFA, 0xEC6F, 0x9AFB, 0xC067, 0x9AFC, 0xEF68, 0x9AFD, 0xEF66,
+	0x9AFE, 0xEF65, 0x9B01, 0xEF67, 0x9B03, 0xC34F, 0x9B04, 0xF1BC,
+	0x9B05, 0xF1BD, 0x9B06, 0xC350, 0x9B08, 0xF1BB, 0x9B0A, 0xF3C3,
+	0x9B0B, 0xF3C2, 0x9B0C, 0xF3C5, 0x9B0D, 0xC447, 0x9B0E, 0xF3C4,
+	0x9B10, 0xF567, 0x9B11, 0xF569, 0x9B12, 0xF568, 0x9B15, 0xF6A3,
+	0x9B16, 0xF6A6, 0x9B17, 0xF6A4, 0x9B18, 0xF6A5, 0x9B19, 0xF7A5,
+	0x9B1A, 0xC5BD, 0x9B1E, 0xF854, 0x9B1F, 0xF855, 0x9B20, 0xF856,
+	0x9B22, 0xC64B, 0x9B23, 0xC663, 0x9B24, 0xF9B6, 0x9B25, 0xB0AB,
+	0x9B27, 0xBE78, 0x9B28, 0xC069, 0x9B29, 0xF1BE, 0x9B2B, 0xF7A6,
+	0x9B2E, 0xF9C4, 0x9B2F, 0xD44A, 0x9B31, 0xC67B, 0x9B32, 0xB0AC,
+	0x9B33, 0xEC72, 0x9B35, 0xF1BF, 0x9B37, 0xF3C6, 0x9B3A, 0xF6A7,
+	0x9B3B, 0xF7A7, 0x9B3C, 0xB0AD, 0x9B3E, 0xE4DD, 0x9B3F, 0xE4DE,
+	0x9B41, 0xBBED, 0x9B42, 0xBBEE, 0x9B43, 0xE8D9, 0x9B44, 0xBE7A,
+	0x9B45, 0xBE79, 0x9B46, 0xE8D8, 0x9B48, 0xEF69, 0x9B4A, 0xF1C0,
+	0x9B4B, 0xF1C2, 0x9B4C, 0xF1C1, 0x9B4D, 0xC353, 0x9B4E, 0xC352,
+	0x9B4F, 0xC351, 0x9B51, 0xC55E, 0x9B52, 0xF6A8, 0x9B54, 0xC55D,
+	0x9B55, 0xF7A9, 0x9B56, 0xF7A8, 0x9B58, 0xC64C, 0x9B59, 0xF8D5,
+	0x9B5A, 0xB3BD, 0x9B5B, 0xE0EA, 0x9B5F, 0xE4E1, 0x9B60, 0xE4DF,
+	0x9B61, 0xE4E0, 0x9B64, 0xE8E2, 0x9B66, 0xE8DD, 0x9B67, 0xE8DA,
+	0x9B68, 0xE8E1, 0x9B6C, 0xE8E3, 0x9B6F, 0xBE7C, 0x9B70, 0xE8E0,
+	0x9B71, 0xE8DC, 0x9B74, 0xE8DB, 0x9B75, 0xE8DF, 0x9B76, 0xE8DE,
+	0x9B77, 0xBE7B, 0x9B7A, 0xEC7D, 0x9B7B, 0xEC78, 0x9B7C, 0xEC76,
+	0x9B7D, 0xECA1, 0x9B7E, 0xEC77, 0x9B80, 0xEC73, 0x9B82, 0xEC79,
+	0x9B85, 0xEC74, 0x9B86, 0xEF72, 0x9B87, 0xEC75, 0x9B88, 0xECA2,
+	0x9B90, 0xEC7C, 0x9B91, 0xC06A, 0x9B92, 0xEC7B, 0x9B93, 0xEC7A,
+	0x9B95, 0xEC7E, 0x9B9A, 0xEF6A, 0x9B9B, 0xEF6D, 0x9B9E, 0xEF6C,
+	0x9BA0, 0xEF74, 0x9BA1, 0xEF6F, 0x9BA2, 0xEF73, 0x9BA4, 0xEF71,
+	0x9BA5, 0xEF70, 0x9BA6, 0xEF6E, 0x9BA8, 0xEF6B, 0x9BAA, 0xC243,
+	0x9BAB, 0xC242, 0x9BAD, 0xC244, 0x9BAE, 0xC241, 0x9BAF, 0xEF75,
+	0x9BB5, 0xF1C8, 0x9BB6, 0xF1CB, 0x9BB8, 0xF1C9, 0x9BB9, 0xF1CD,
+	0x9BBD, 0xF1CE, 0x9BBF, 0xF1C6, 0x9BC0, 0xC358, 0x9BC1, 0xF1C7,
+	0x9BC3, 0xF1C5, 0x9BC4, 0xF1CC, 0x9BC6, 0xF1C4, 0x9BC7, 0xF1C3,
+	0x9BC8, 0xC357, 0x9BC9, 0xC355, 0x9BCA, 0xC354, 0x9BD3, 0xF1CA,
+	0x9BD4, 0xF3CF, 0x9BD5, 0xF3D5, 0x9BD6, 0xC44A, 0x9BD7, 0xF3D0,
+	0x9BD9, 0xF3D3, 0x9BDA, 0xF3D7, 0x9BDB, 0xC44B, 0x9BDC, 0xF3D2,
+	0x9BDE, 0xF3CA, 0x9BE0, 0xF3C9, 0x9BE1, 0xF3D6, 0x9BE2, 0xF3CD,
+	0x9BE4, 0xF3CB, 0x9BE5, 0xF3D4, 0x9BE6, 0xF3CC, 0x9BE7, 0xC449,
+	0x9BE8, 0xC448, 0x9BEA, 0xF3C7, 0x9BEB, 0xF3C8, 0x9BEC, 0xF3D1,
+	0x9BF0, 0xF3CE, 0x9BF7, 0xF56C, 0x9BF8, 0xF56F, 0x9BFD, 0xC356,
+	0x9C05, 0xF56D, 0x9C06, 0xF573, 0x9C07, 0xF571, 0x9C08, 0xF56B,
+	0x9C09, 0xF576, 0x9C0B, 0xF56A, 0x9C0D, 0xC4CF, 0x9C0E, 0xF572,
+	0x9C12, 0xF56E, 0x9C13, 0xC4CE, 0x9C14, 0xF575, 0x9C17, 0xF574,
+	0x9C1C, 0xF6AB, 0x9C1D, 0xF6AA, 0x9C21, 0xF6B1, 0x9C23, 0xF6AD,
+	0x9C24, 0xF6B0, 0x9C25, 0xC560, 0x9C28, 0xF6AE, 0x9C29, 0xF6AF,
+	0x9C2B, 0xF6A9, 0x9C2C, 0xF6AC, 0x9C2D, 0xC55F, 0x9C31, 0xC5BF,
+	0x9C32, 0xF7B4, 0x9C33, 0xF7AF, 0x9C34, 0xF7B3, 0x9C36, 0xF7B6,
+	0x9C37, 0xF7B2, 0x9C39, 0xF7AE, 0x9C3B, 0xC5C1, 0x9C3C, 0xF7B1,
+	0x9C3D, 0xF7B5, 0x9C3E, 0xC5C0, 0x9C3F, 0xF7AC, 0x9C40, 0xF570,
+	0x9C41, 0xF7B0, 0x9C44, 0xF7AD, 0x9C46, 0xF7AA, 0x9C48, 0xF7AB,
+	0x9C49, 0xC5BE, 0x9C4A, 0xF85A, 0x9C4B, 0xF85C, 0x9C4C, 0xF85F,
+	0x9C4D, 0xF85B, 0x9C4E, 0xF860, 0x9C50, 0xF859, 0x9C52, 0xF857,
+	0x9C54, 0xC5EB, 0x9C55, 0xF85D, 0x9C56, 0xC5ED, 0x9C57, 0xC5EC,
+	0x9C58, 0xF858, 0x9C59, 0xF85E, 0x9C5E, 0xF8DA, 0x9C5F, 0xC64D,
+	0x9C60, 0xF8DB, 0x9C62, 0xF8D9, 0x9C63, 0xF8D6, 0x9C66, 0xF8D8,
+	0x9C67, 0xF8D7, 0x9C68, 0xF95A, 0x9C6D, 0xF95C, 0x9C6E, 0xF95B,
+	0x9C71, 0xF979, 0x9C73, 0xF978, 0x9C74, 0xF977, 0x9C75, 0xF97A,
+	0x9C77, 0xC673, 0x9C78, 0xC674, 0x9C79, 0xF9CA, 0x9C7A, 0xF9CE,
+	0x9CE5, 0xB3BE, 0x9CE6, 0xDCAF, 0x9CE7, 0xE0ED, 0x9CE9, 0xB9A7,
+	0x9CEA, 0xE0EB, 0x9CED, 0xE0EC, 0x9CF1, 0xE4E2, 0x9CF2, 0xE4E3,
+	0x9CF3, 0xBBF1, 0x9CF4, 0xBBEF, 0x9CF5, 0xE4E4, 0x9CF6, 0xBBF0,
+	0x9CF7, 0xE8E8, 0x9CF9, 0xE8EB, 0x9CFA, 0xE8E5, 0x9CFB, 0xE8EC,
+	0x9CFC, 0xE8E4, 0x9CFD, 0xE8E6, 0x9CFF, 0xE8E7, 0x9D00, 0xE8EA,
+	0x9D03, 0xBEA1, 0x9D04, 0xE8EF, 0x9D05, 0xE8EE, 0x9D06, 0xBE7D,
+	0x9D07, 0xE8E9, 0x9D08, 0xE8ED, 0x9D09, 0xBE7E, 0x9D10, 0xECAC,
+	0x9D12, 0xC06F, 0x9D14, 0xECA7, 0x9D15, 0xC06B, 0x9D17, 0xECA4,
+	0x9D18, 0xECAA, 0x9D19, 0xECAD, 0x9D1B, 0xC070, 0x9D1D, 0xECA9,
+	0x9D1E, 0xECA6, 0x9D1F, 0xECAE, 0x9D20, 0xECA5, 0x9D22, 0xECAB,
+	0x9D23, 0xC06C, 0x9D25, 0xECA3, 0x9D26, 0xC06D, 0x9D28, 0xC06E,
+	0x9D29, 0xECA8, 0x9D2D, 0xEFA9, 0x9D2E, 0xEF7A, 0x9D2F, 0xEF7B,
+	0x9D30, 0xEF7E, 0x9D31, 0xEF7C, 0x9D33, 0xEF76, 0x9D36, 0xEF79,
+	0x9D37, 0xEFA5, 0x9D38, 0xEF7D, 0x9D3B, 0xC245, 0x9D3D, 0xEFA7,
+	0x9D3E, 0xEFA4, 0x9D3F, 0xC246, 0x9D40, 0xEFA6, 0x9D41, 0xEF77,
+	0x9D42, 0xEFA2, 0x9D43, 0xEFA3, 0x9D45, 0xEFA1, 0x9D4A, 0xF1D2,
+	0x9D4B, 0xF1D4, 0x9D4C, 0xF1D7, 0x9D4F, 0xF1D1, 0x9D51, 0xC359,
+	0x9D52, 0xF1D9, 0x9D53, 0xF1D0, 0x9D54, 0xF1DA, 0x9D56, 0xF1D6,
+	0x9D57, 0xF1D8, 0x9D58, 0xF1DC, 0x9D59, 0xF1D5, 0x9D5A, 0xF1DD,
+	0x9D5B, 0xF1D3, 0x9D5C, 0xF1CF, 0x9D5D, 0xC35A, 0x9D5F, 0xF1DB,
+	0x9D60, 0xC35B, 0x9D61, 0xC44D, 0x9D67, 0xEF78, 0x9D68, 0xF3F1,
+	0x9D69, 0xF3E8, 0x9D6A, 0xC44F, 0x9D6B, 0xF3E4, 0x9D6C, 0xC450,
+	0x9D6F, 0xF3ED, 0x9D70, 0xF3E7, 0x9D71, 0xF3DD, 0x9D72, 0xC44E,
+	0x9D73, 0xF3EA, 0x9D74, 0xF3E5, 0x9D75, 0xF3E6, 0x9D77, 0xF3D8,
+	0x9D78, 0xF3DF, 0x9D79, 0xF3EE, 0x9D7B, 0xF3EB, 0x9D7D, 0xF3E3,
+	0x9D7F, 0xF3EF, 0x9D80, 0xF3DE, 0x9D81, 0xF3D9, 0x9D82, 0xF3EC,
+	0x9D84, 0xF3DB, 0x9D85, 0xF3E9, 0x9D86, 0xF3E0, 0x9D87, 0xF3F0,
+	0x9D88, 0xF3DC, 0x9D89, 0xC44C, 0x9D8A, 0xF3DA, 0x9D8B, 0xF3E1,
+	0x9D8C, 0xF3E2, 0x9D90, 0xF57D, 0x9D92, 0xF57B, 0x9D94, 0xF5A2,
+	0x9D96, 0xF5AE, 0x9D97, 0xF5A5, 0x9D98, 0xF57C, 0x9D99, 0xF578,
+	0x9D9A, 0xF5A7, 0x9D9B, 0xF57E, 0x9D9C, 0xF5A3, 0x9D9D, 0xF57A,
+	0x9D9E, 0xF5AA, 0x9D9F, 0xF577, 0x9DA0, 0xF5A1, 0x9DA1, 0xF5A6,
+	0x9DA2, 0xF5A8, 0x9DA3, 0xF5AB, 0x9DA4, 0xF579, 0x9DA6, 0xF5AF,
+	0x9DA7, 0xF5B0, 0x9DA8, 0xF5A9, 0x9DA9, 0xF5AD, 0x9DAA, 0xF5A4,
+	0x9DAC, 0xF6C1, 0x9DAD, 0xF6C4, 0x9DAF, 0xC561, 0x9DB1, 0xF6C3,
+	0x9DB2, 0xF6C8, 0x9DB3, 0xF6C6, 0x9DB4, 0xC562, 0x9DB5, 0xF6BD,
+	0x9DB6, 0xF6B3, 0x9DB7, 0xF6B2, 0x9DB8, 0xC564, 0x9DB9, 0xF6BF,
+	0x9DBA, 0xF6C0, 0x9DBB, 0xF6BC, 0x9DBC, 0xF6B4, 0x9DBE, 0xF6B9,
+	0x9DBF, 0xF5AC, 0x9DC1, 0xF6B5, 0x9DC2, 0xC563, 0x9DC3, 0xF6BB,
+	0x9DC5, 0xF6BA, 0x9DC7, 0xF6B6, 0x9DC8, 0xF6C2, 0x9DCA, 0xF6B7,
+	0x9DCB, 0xF7BB, 0x9DCC, 0xF6C5, 0x9DCD, 0xF6C7, 0x9DCE, 0xF6BE,
+	0x9DCF, 0xF6B8, 0x9DD0, 0xF7BC, 0x9DD1, 0xF7BE, 0x9DD2, 0xF7B8,
+	0x9DD3, 0xC5C2, 0x9DD5, 0xF7C5, 0x9DD6, 0xF7C3, 0x9DD7, 0xC5C3,
+	0x9DD8, 0xF7C2, 0x9DD9, 0xF7C1, 0x9DDA, 0xF7BA, 0x9DDB, 0xF7B7,
+	0x9DDC, 0xF7BD, 0x9DDD, 0xF7C6, 0x9DDE, 0xF7B9, 0x9DDF, 0xF7BF,
+	0x9DE1, 0xF869, 0x9DE2, 0xF86E, 0x9DE3, 0xF864, 0x9DE4, 0xF867,
+	0x9DE5, 0xC5EE, 0x9DE6, 0xF86B, 0x9DE8, 0xF872, 0x9DE9, 0xF7C0,
+	0x9DEB, 0xF865, 0x9DEC, 0xF86F, 0x9DED, 0xF873, 0x9DEE, 0xF86A,
+	0x9DEF, 0xF863, 0x9DF0, 0xF86D, 0x9DF2, 0xF86C, 0x9DF3, 0xF871,
+	0x9DF4, 0xF870, 0x9DF5, 0xF7C4, 0x9DF6, 0xF868, 0x9DF7, 0xF862,
+	0x9DF8, 0xF866, 0x9DF9, 0xC64E, 0x9DFA, 0xC64F, 0x9DFB, 0xF861,
+	0x9DFD, 0xF8E6, 0x9DFE, 0xF8DD, 0x9DFF, 0xF8E5, 0x9E00, 0xF8E2,
+	0x9E01, 0xF8E3, 0x9E02, 0xF8DC, 0x9E03, 0xF8DF, 0x9E04, 0xF8E7,
+	0x9E05, 0xF8E1, 0x9E06, 0xF8E0, 0x9E07, 0xF8DE, 0x9E09, 0xF8E4,
+	0x9E0B, 0xF95D, 0x9E0D, 0xF95E, 0x9E0F, 0xF960, 0x9E10, 0xF95F,
+	0x9E11, 0xF962, 0x9E12, 0xF961, 0x9E13, 0xF97C, 0x9E14, 0xF97B,
+	0x9E15, 0xF9B7, 0x9E17, 0xF9B8, 0x9E19, 0xF9C5, 0x9E1A, 0xC678,
+	0x9E1B, 0xC67C, 0x9E1D, 0xF9CF, 0x9E1E, 0xC67D, 0x9E75, 0xB3BF,
+	0x9E79, 0xC4D0, 0x9E7A, 0xF6C9, 0x9E7C, 0xC650, 0x9E7D, 0xC651,
+	0x9E7F, 0xB3C0, 0x9E80, 0xE0EE, 0x9E82, 0xB9A8, 0x9E83, 0xE8F0,
+	0x9E86, 0xECB0, 0x9E87, 0xECB1, 0x9E88, 0xECAF, 0x9E89, 0xEFAB,
+	0x9E8A, 0xEFAA, 0x9E8B, 0xC247, 0x9E8C, 0xF1DF, 0x9E8D, 0xEFAC,
+	0x9E8E, 0xF1DE, 0x9E91, 0xF3F3, 0x9E92, 0xC451, 0x9E93, 0xC453,
+	0x9E94, 0xF3F2, 0x9E97, 0xC452, 0x9E99, 0xF5B1, 0x9E9A, 0xF5B3,
+	0x9E9B, 0xF5B2, 0x9E9C, 0xF6CA, 0x9E9D, 0xC565, 0x9E9F, 0xC5EF,
+	0x9EA0, 0xF8E8, 0x9EA1, 0xF963, 0x9EA4, 0xF9D2, 0x9EA5, 0xB3C1,
+	0x9EA7, 0xE4E5, 0x9EA9, 0xBEA2, 0x9EAD, 0xECB3, 0x9EAE, 0xECB2,
+	0x9EB0, 0xEFAD, 0x9EB4, 0xC454, 0x9EB5, 0xC4D1, 0x9EB6, 0xF7C7,
+	0x9EB7, 0xF9CB, 0x9EBB, 0xB3C2, 0x9EBC, 0xBBF2, 0x9EBE, 0xBEA3,
+	0x9EC0, 0xF3F4, 0x9EC2, 0xF874, 0x9EC3, 0xB6C0, 0x9EC8, 0xEFAE,
+	0x9ECC, 0xC664, 0x9ECD, 0xB6C1, 0x9ECE, 0xBEA4, 0x9ECF, 0xC248,
+	0x9ED0, 0xF875, 0x9ED1, 0xB6C2, 0x9ED3, 0xE8F1, 0x9ED4, 0xC072,
+	0x9ED5, 0xECB4, 0x9ED6, 0xECB5, 0x9ED8, 0xC071, 0x9EDA, 0xEFAF,
+	0x9EDB, 0xC24C, 0x9EDC, 0xC24A, 0x9EDD, 0xC24B, 0x9EDE, 0xC249,
+	0x9EDF, 0xF1E0, 0x9EE0, 0xC35C, 0x9EE4, 0xF5B5, 0x9EE5, 0xF5B4,
+	0x9EE6, 0xF5B7, 0x9EE7, 0xF5B6, 0x9EE8, 0xC4D2, 0x9EEB, 0xF6CB,
+	0x9EED, 0xF6CD, 0x9EEE, 0xF6CC, 0x9EEF, 0xC566, 0x9EF0, 0xF7C8,
+	0x9EF2, 0xF876, 0x9EF3, 0xF877, 0x9EF4, 0xC5F0, 0x9EF5, 0xF964,
+	0x9EF6, 0xF97D, 0x9EF7, 0xC675, 0x9EF9, 0xDCB0, 0x9EFA, 0xECB6,
+	0x9EFB, 0xEFB0, 0x9EFC, 0xF3F5, 0x9EFD, 0xE0EF, 0x9EFF, 0xEFB1,
+	0x9F00, 0xF1E2, 0x9F01, 0xF1E1, 0x9F06, 0xF878, 0x9F07, 0xC652,
+	0x9F09, 0xF965, 0x9F0A, 0xF97E, 0x9F0E, 0xB9A9, 0x9F0F, 0xE8F2,
+	0x9F10, 0xE8F3, 0x9F12, 0xECB7, 0x9F13, 0xB9AA, 0x9F15, 0xC35D,
+	0x9F16, 0xF1E3, 0x9F18, 0xF6CF, 0x9F19, 0xC567, 0x9F1A, 0xF6D0,
+	0x9F1B, 0xF6CE, 0x9F1C, 0xF879, 0x9F1E, 0xF8E9, 0x9F20, 0xB9AB,
+	0x9F22, 0xEFB4, 0x9F23, 0xEFB3, 0x9F24, 0xEFB2, 0x9F25, 0xF1E4,
+	0x9F28, 0xF1E8, 0x9F29, 0xF1E7, 0x9F2A, 0xF1E6, 0x9F2B, 0xF1E5,
+	0x9F2C, 0xC35E, 0x9F2D, 0xF3F6, 0x9F2E, 0xF5B9, 0x9F2F, 0xC4D3,
+	0x9F30, 0xF5B8, 0x9F31, 0xF6D1, 0x9F32, 0xF7CB, 0x9F33, 0xF7CA,
+	0x9F34, 0xC5C4, 0x9F35, 0xF7C9, 0x9F36, 0xF87C, 0x9F37, 0xF87B,
+	0x9F38, 0xF87A, 0x9F3B, 0xBBF3, 0x9F3D, 0xECB8, 0x9F3E, 0xC24D,
+	0x9F40, 0xF3F7, 0x9F41, 0xF3F8, 0x9F42, 0xF7CC, 0x9F43, 0xF87D,
+	0x9F46, 0xF8EA, 0x9F47, 0xF966, 0x9F48, 0xF9B9, 0x9F49, 0xF9D4,
+	0x9F4A, 0xBBF4, 0x9F4B, 0xC24E, 0x9F4C, 0xF1E9, 0x9F4D, 0xF3F9,
+	0x9F4E, 0xF6D2, 0x9F4F, 0xF87E, 0x9F52, 0xBEA6, 0x9F54, 0xEFB5,
+	0x9F55, 0xF1EA, 0x9F56, 0xF3FA, 0x9F57, 0xF3FB, 0x9F58, 0xF3FC,
+	0x9F59, 0xF5BE, 0x9F5B, 0xF5BA, 0x9F5C, 0xC568, 0x9F5D, 0xF5BD,
+	0x9F5E, 0xF5BC, 0x9F5F, 0xC4D4, 0x9F60, 0xF5BB, 0x9F61, 0xC4D6,
+	0x9F63, 0xC4D5, 0x9F64, 0xF6D4, 0x9F65, 0xF6D3, 0x9F66, 0xC569,
+	0x9F67, 0xC56A, 0x9F6A, 0xC5C6, 0x9F6B, 0xF7CD, 0x9F6C, 0xC5C5,
+	0x9F6E, 0xF8A3, 0x9F6F, 0xF8A4, 0x9F70, 0xF8A2, 0x9F71, 0xF8A1,
+	0x9F72, 0xC654, 0x9F74, 0xF8EB, 0x9F75, 0xF8EC, 0x9F76, 0xF8ED,
+	0x9F77, 0xC653, 0x9F78, 0xF967, 0x9F79, 0xF96A, 0x9F7A, 0xF969,
+	0x9F7B, 0xF968, 0x9F7E, 0xF9D3, 0x9F8D, 0xC073, 0x9F90, 0xC365,
+	0x9F91, 0xF5BF, 0x9F92, 0xF6D5, 0x9F94, 0xC5C7, 0x9F95, 0xF7CE,
+	0x9F98, 0xF9D5, 0x9F9C, 0xC074, 0x9FA0, 0xEFB6, 0x9FA2, 0xF7CF,
+	0x9FA4, 0xF9A1, 0xFA0C, 0xC94A, 0xFA0D, 0xDDFC, 0xFE30, 0xA14A,
+	0xFE31, 0xA157, 0xFE33, 0xA159, 0xFE34, 0xA15B, 0xFE35, 0xA15F,
+	0xFE36, 0xA160, 0xFE37, 0xA163, 0xFE38, 0xA164, 0xFE39, 0xA167,
+	0xFE3A, 0xA168, 0xFE3B, 0xA16B, 0xFE3C, 0xA16C, 0xFE3D, 0xA16F,
+	0xFE3E, 0xA170, 0xFE3F, 0xA173, 0xFE40, 0xA174, 0xFE41, 0xA177,
+	0xFE42, 0xA178, 0xFE43, 0xA17B, 0xFE44, 0xA17C, 0xFE49, 0xA1C6,
+	0xFE4A, 0xA1C7, 0xFE4B, 0xA1CA, 0xFE4C, 0xA1CB, 0xFE4D, 0xA1C8,
+	0xFE4E, 0xA1C9, 0xFE4F, 0xA15C, 0xFE50, 0xA14D, 0xFE51, 0xA14E,
+	0xFE52, 0xA14F, 0xFE54, 0xA151, 0xFE55, 0xA152, 0xFE56, 0xA153,
+	0xFE57, 0xA154, 0xFE59, 0xA17D, 0xFE5A, 0xA17E, 0xFE5B, 0xA1A1,
+	0xFE5C, 0xA1A2, 0xFE5D, 0xA1A3, 0xFE5E, 0xA1A4, 0xFE5F, 0xA1CC,
+	0xFE60, 0xA1CD, 0xFE61, 0xA1CE, 0xFE62, 0xA1DE, 0xFE63, 0xA1DF,
+	0xFE64, 0xA1E0, 0xFE65, 0xA1E1, 0xFE66, 0xA1E2, 0xFE68, 0xA242,
+	0xFE69, 0xA24C, 0xFE6A, 0xA24D, 0xFE6B, 0xA24E, 0xFF01, 0xA149,
+	0xFF03, 0xA1AD, 0xFF04, 0xA243, 0xFF05, 0xA248, 0xFF06, 0xA1AE,
+	0xFF08, 0xA15D, 0xFF09, 0xA15E, 0xFF0A, 0xA1AF, 0xFF0B, 0xA1CF,
+	0xFF0C, 0xA141, 0xFF0D, 0xA1D0, 0xFF0E, 0xA144, 0xFF0F, 0xA1FE,
+	0xFF10, 0xA2AF, 0xFF11, 0xA2B0, 0xFF12, 0xA2B1, 0xFF13, 0xA2B2,
+	0xFF14, 0xA2B3, 0xFF15, 0xA2B4, 0xFF16, 0xA2B5, 0xFF17, 0xA2B6,
+	0xFF18, 0xA2B7, 0xFF19, 0xA2B8, 0xFF1A, 0xA147, 0xFF1B, 0xA146,
+	0xFF1C, 0xA1D5, 0xFF1D, 0xA1D7, 0xFF1E, 0xA1D6, 0xFF1F, 0xA148,
+	0xFF20, 0xA249, 0xFF21, 0xA2CF, 0xFF22, 0xA2D0, 0xFF23, 0xA2D1,
+	0xFF24, 0xA2D2, 0xFF25, 0xA2D3, 0xFF26, 0xA2D4, 0xFF27, 0xA2D5,
+	0xFF28, 0xA2D6, 0xFF29, 0xA2D7, 0xFF2A, 0xA2D8, 0xFF2B, 0xA2D9,
+	0xFF2C, 0xA2DA, 0xFF2D, 0xA2DB, 0xFF2E, 0xA2DC, 0xFF2F, 0xA2DD,
+	0xFF30, 0xA2DE, 0xFF31, 0xA2DF, 0xFF32, 0xA2E0, 0xFF33, 0xA2E1,
+	0xFF34, 0xA2E2, 0xFF35, 0xA2E3, 0xFF36, 0xA2E4, 0xFF37, 0xA2E5,
+	0xFF38, 0xA2E6, 0xFF39, 0xA2E7, 0xFF3A, 0xA2E8, 0xFF3C, 0xA240,
+	0xFF3F, 0xA1C4, 0xFF41, 0xA2E9, 0xFF42, 0xA2EA, 0xFF43, 0xA2EB,
+	0xFF44, 0xA2EC, 0xFF45, 0xA2ED, 0xFF46, 0xA2EE, 0xFF47, 0xA2EF,
+	0xFF48, 0xA2F0, 0xFF49, 0xA2F1, 0xFF4A, 0xA2F2, 0xFF4B, 0xA2F3,
+	0xFF4C, 0xA2F4, 0xFF4D, 0xA2F5, 0xFF4E, 0xA2F6, 0xFF4F, 0xA2F7,
+	0xFF50, 0xA2F8, 0xFF51, 0xA2F9, 0xFF52, 0xA2FA, 0xFF53, 0xA2FB,
+	0xFF54, 0xA2FC, 0xFF55, 0xA2FD, 0xFF56, 0xA2FE, 0xFF57, 0xA340,
+	0xFF58, 0xA341, 0xFF59, 0xA342, 0xFF5A, 0xA343, 0xFF5B, 0xA161,
+	0xFF5C, 0xA155, 0xFF5D, 0xA162, 0xFF5E, 0xA1E3, 0xFFE0, 0xA246,
+	0xFFE1, 0xA247, 0xFFE3, 0xA1C3, 0xFFE5, 0xA244, 0, 0
+};
+
+static
+const WCHAR oem2uni[] = {
+/*	OEM - Unicode,  OEM - Unicode,  OEM - Unicode,  OEM - Unicode */
+	0xA140, 0x3000, 0xA141, 0xFF0C, 0xA142, 0x3001, 0xA143, 0x3002,
+	0xA144, 0xFF0E, 0xA145, 0x2027, 0xA146, 0xFF1B, 0xA147, 0xFF1A,
+	0xA148, 0xFF1F, 0xA149, 0xFF01, 0xA14A, 0xFE30, 0xA14B, 0x2026,
+	0xA14C, 0x2025, 0xA14D, 0xFE50, 0xA14E, 0xFE51, 0xA14F, 0xFE52,
+	0xA150, 0x00B7, 0xA151, 0xFE54, 0xA152, 0xFE55, 0xA153, 0xFE56,
+	0xA154, 0xFE57, 0xA155, 0xFF5C, 0xA156, 0x2013, 0xA157, 0xFE31,
+	0xA158, 0x2014, 0xA159, 0xFE33, 0xA15A, 0x2574, 0xA15B, 0xFE34,
+	0xA15C, 0xFE4F, 0xA15D, 0xFF08, 0xA15E, 0xFF09, 0xA15F, 0xFE35,
+	0xA160, 0xFE36, 0xA161, 0xFF5B, 0xA162, 0xFF5D, 0xA163, 0xFE37,
+	0xA164, 0xFE38, 0xA165, 0x3014, 0xA166, 0x3015, 0xA167, 0xFE39,
+	0xA168, 0xFE3A, 0xA169, 0x3010, 0xA16A, 0x3011, 0xA16B, 0xFE3B,
+	0xA16C, 0xFE3C, 0xA16D, 0x300A, 0xA16E, 0x300B, 0xA16F, 0xFE3D,
+	0xA170, 0xFE3E, 0xA171, 0x3008, 0xA172, 0x3009, 0xA173, 0xFE3F,
+	0xA174, 0xFE40, 0xA175, 0x300C, 0xA176, 0x300D, 0xA177, 0xFE41,
+	0xA178, 0xFE42, 0xA179, 0x300E, 0xA17A, 0x300F, 0xA17B, 0xFE43,
+	0xA17C, 0xFE44, 0xA17D, 0xFE59, 0xA17E, 0xFE5A, 0xA1A1, 0xFE5B,
+	0xA1A2, 0xFE5C, 0xA1A3, 0xFE5D, 0xA1A4, 0xFE5E, 0xA1A5, 0x2018,
+	0xA1A6, 0x2019, 0xA1A7, 0x201C, 0xA1A8, 0x201D, 0xA1A9, 0x301D,
+	0xA1AA, 0x301E, 0xA1AB, 0x2035, 0xA1AC, 0x2032, 0xA1AD, 0xFF03,
+	0xA1AE, 0xFF06, 0xA1AF, 0xFF0A, 0xA1B0, 0x203B, 0xA1B1, 0x00A7,
+	0xA1B2, 0x3003, 0xA1B3, 0x25CB, 0xA1B4, 0x25CF, 0xA1B5, 0x25B3,
+	0xA1B6, 0x25B2, 0xA1B7, 0x25CE, 0xA1B8, 0x2606, 0xA1B9, 0x2605,
+	0xA1BA, 0x25C7, 0xA1BB, 0x25C6, 0xA1BC, 0x25A1, 0xA1BD, 0x25A0,
+	0xA1BE, 0x25BD, 0xA1BF, 0x25BC, 0xA1C0, 0x32A3, 0xA1C1, 0x2105,
+	0xA1C2, 0x00AF, 0xA1C3, 0xFFE3, 0xA1C4, 0xFF3F, 0xA1C5, 0x02CD,
+	0xA1C6, 0xFE49, 0xA1C7, 0xFE4A, 0xA1C8, 0xFE4D, 0xA1C9, 0xFE4E,
+	0xA1CA, 0xFE4B, 0xA1CB, 0xFE4C, 0xA1CC, 0xFE5F, 0xA1CD, 0xFE60,
+	0xA1CE, 0xFE61, 0xA1CF, 0xFF0B, 0xA1D0, 0xFF0D, 0xA1D1, 0x00D7,
+	0xA1D2, 0x00F7, 0xA1D3, 0x00B1, 0xA1D4, 0x221A, 0xA1D5, 0xFF1C,
+	0xA1D6, 0xFF1E, 0xA1D7, 0xFF1D, 0xA1D8, 0x2266, 0xA1D9, 0x2267,
+	0xA1DA, 0x2260, 0xA1DB, 0x221E, 0xA1DC, 0x2252, 0xA1DD, 0x2261,
+	0xA1DE, 0xFE62, 0xA1DF, 0xFE63, 0xA1E0, 0xFE64, 0xA1E1, 0xFE65,
+	0xA1E2, 0xFE66, 0xA1E3, 0xFF5E, 0xA1E4, 0x2229, 0xA1E5, 0x222A,
+	0xA1E6, 0x22A5, 0xA1E7, 0x2220, 0xA1E8, 0x221F, 0xA1E9, 0x22BF,
+	0xA1EA, 0x33D2, 0xA1EB, 0x33D1, 0xA1EC, 0x222B, 0xA1ED, 0x222E,
+	0xA1EE, 0x2235, 0xA1EF, 0x2234, 0xA1F0, 0x2640, 0xA1F1, 0x2642,
+	0xA1F2, 0x2295, 0xA1F3, 0x2299, 0xA1F4, 0x2191, 0xA1F5, 0x2193,
+	0xA1F6, 0x2190, 0xA1F7, 0x2192, 0xA1F8, 0x2196, 0xA1F9, 0x2197,
+	0xA1FA, 0x2199, 0xA1FB, 0x2198, 0xA1FC, 0x2225, 0xA1FD, 0x2223,
+	0xA1FE, 0xFF0F, 0xA240, 0xFF3C, 0xA241, 0x2215, 0xA242, 0xFE68,
+	0xA243, 0xFF04, 0xA244, 0xFFE5, 0xA245, 0x3012, 0xA246, 0xFFE0,
+	0xA247, 0xFFE1, 0xA248, 0xFF05, 0xA249, 0xFF20, 0xA24A, 0x2103,
+	0xA24B, 0x2109, 0xA24C, 0xFE69, 0xA24D, 0xFE6A, 0xA24E, 0xFE6B,
+	0xA24F, 0x33D5, 0xA250, 0x339C, 0xA251, 0x339D, 0xA252, 0x339E,
+	0xA253, 0x33CE, 0xA254, 0x33A1, 0xA255, 0x338E, 0xA256, 0x338F,
+	0xA257, 0x33C4, 0xA258, 0x00B0, 0xA259, 0x5159, 0xA25A, 0x515B,
+	0xA25B, 0x515E, 0xA25C, 0x515D, 0xA25D, 0x5161, 0xA25E, 0x5163,
+	0xA25F, 0x55E7, 0xA260, 0x74E9, 0xA261, 0x7CCE, 0xA262, 0x2581,
+	0xA263, 0x2582, 0xA264, 0x2583, 0xA265, 0x2584, 0xA266, 0x2585,
+	0xA267, 0x2586, 0xA268, 0x2587, 0xA269, 0x2588, 0xA26A, 0x258F,
+	0xA26B, 0x258E, 0xA26C, 0x258D, 0xA26D, 0x258C, 0xA26E, 0x258B,
+	0xA26F, 0x258A, 0xA270, 0x2589, 0xA271, 0x253C, 0xA272, 0x2534,
+	0xA273, 0x252C, 0xA274, 0x2524, 0xA275, 0x251C, 0xA276, 0x2594,
+	0xA277, 0x2500, 0xA278, 0x2502, 0xA279, 0x2595, 0xA27A, 0x250C,
+	0xA27B, 0x2510, 0xA27C, 0x2514, 0xA27D, 0x2518, 0xA27E, 0x256D,
+	0xA2A1, 0x256E, 0xA2A2, 0x2570, 0xA2A3, 0x256F, 0xA2A4, 0x2550,
+	0xA2A5, 0x255E, 0xA2A6, 0x256A, 0xA2A7, 0x2561, 0xA2A8, 0x25E2,
+	0xA2A9, 0x25E3, 0xA2AA, 0x25E5, 0xA2AB, 0x25E4, 0xA2AC, 0x2571,
+	0xA2AD, 0x2572, 0xA2AE, 0x2573, 0xA2AF, 0xFF10, 0xA2B0, 0xFF11,
+	0xA2B1, 0xFF12, 0xA2B2, 0xFF13, 0xA2B3, 0xFF14, 0xA2B4, 0xFF15,
+	0xA2B5, 0xFF16, 0xA2B6, 0xFF17, 0xA2B7, 0xFF18, 0xA2B8, 0xFF19,
+	0xA2B9, 0x2160, 0xA2BA, 0x2161, 0xA2BB, 0x2162, 0xA2BC, 0x2163,
+	0xA2BD, 0x2164, 0xA2BE, 0x2165, 0xA2BF, 0x2166, 0xA2C0, 0x2167,
+	0xA2C1, 0x2168, 0xA2C2, 0x2169, 0xA2C3, 0x3021, 0xA2C4, 0x3022,
+	0xA2C5, 0x3023, 0xA2C6, 0x3024, 0xA2C7, 0x3025, 0xA2C8, 0x3026,
+	0xA2C9, 0x3027, 0xA2CA, 0x3028, 0xA2CB, 0x3029, 0xA2CC, 0x5341,
+	0xA2CD, 0x5344, 0xA2CE, 0x5345, 0xA2CF, 0xFF21, 0xA2D0, 0xFF22,
+	0xA2D1, 0xFF23, 0xA2D2, 0xFF24, 0xA2D3, 0xFF25, 0xA2D4, 0xFF26,
+	0xA2D5, 0xFF27, 0xA2D6, 0xFF28, 0xA2D7, 0xFF29, 0xA2D8, 0xFF2A,
+	0xA2D9, 0xFF2B, 0xA2DA, 0xFF2C, 0xA2DB, 0xFF2D, 0xA2DC, 0xFF2E,
+	0xA2DD, 0xFF2F, 0xA2DE, 0xFF30, 0xA2DF, 0xFF31, 0xA2E0, 0xFF32,
+	0xA2E1, 0xFF33, 0xA2E2, 0xFF34, 0xA2E3, 0xFF35, 0xA2E4, 0xFF36,
+	0xA2E5, 0xFF37, 0xA2E6, 0xFF38, 0xA2E7, 0xFF39, 0xA2E8, 0xFF3A,
+	0xA2E9, 0xFF41, 0xA2EA, 0xFF42, 0xA2EB, 0xFF43, 0xA2EC, 0xFF44,
+	0xA2ED, 0xFF45, 0xA2EE, 0xFF46, 0xA2EF, 0xFF47, 0xA2F0, 0xFF48,
+	0xA2F1, 0xFF49, 0xA2F2, 0xFF4A, 0xA2F3, 0xFF4B, 0xA2F4, 0xFF4C,
+	0xA2F5, 0xFF4D, 0xA2F6, 0xFF4E, 0xA2F7, 0xFF4F, 0xA2F8, 0xFF50,
+	0xA2F9, 0xFF51, 0xA2FA, 0xFF52, 0xA2FB, 0xFF53, 0xA2FC, 0xFF54,
+	0xA2FD, 0xFF55, 0xA2FE, 0xFF56, 0xA340, 0xFF57, 0xA341, 0xFF58,
+	0xA342, 0xFF59, 0xA343, 0xFF5A, 0xA344, 0x0391, 0xA345, 0x0392,
+	0xA346, 0x0393, 0xA347, 0x0394, 0xA348, 0x0395, 0xA349, 0x0396,
+	0xA34A, 0x0397, 0xA34B, 0x0398, 0xA34C, 0x0399, 0xA34D, 0x039A,
+	0xA34E, 0x039B, 0xA34F, 0x039C, 0xA350, 0x039D, 0xA351, 0x039E,
+	0xA352, 0x039F, 0xA353, 0x03A0, 0xA354, 0x03A1, 0xA355, 0x03A3,
+	0xA356, 0x03A4, 0xA357, 0x03A5, 0xA358, 0x03A6, 0xA359, 0x03A7,
+	0xA35A, 0x03A8, 0xA35B, 0x03A9, 0xA35C, 0x03B1, 0xA35D, 0x03B2,
+	0xA35E, 0x03B3, 0xA35F, 0x03B4, 0xA360, 0x03B5, 0xA361, 0x03B6,
+	0xA362, 0x03B7, 0xA363, 0x03B8, 0xA364, 0x03B9, 0xA365, 0x03BA,
+	0xA366, 0x03BB, 0xA367, 0x03BC, 0xA368, 0x03BD, 0xA369, 0x03BE,
+	0xA36A, 0x03BF, 0xA36B, 0x03C0, 0xA36C, 0x03C1, 0xA36D, 0x03C3,
+	0xA36E, 0x03C4, 0xA36F, 0x03C5, 0xA370, 0x03C6, 0xA371, 0x03C7,
+	0xA372, 0x03C8, 0xA373, 0x03C9, 0xA374, 0x3105, 0xA375, 0x3106,
+	0xA376, 0x3107, 0xA377, 0x3108, 0xA378, 0x3109, 0xA379, 0x310A,
+	0xA37A, 0x310B, 0xA37B, 0x310C, 0xA37C, 0x310D, 0xA37D, 0x310E,
+	0xA37E, 0x310F, 0xA3A1, 0x3110, 0xA3A2, 0x3111, 0xA3A3, 0x3112,
+	0xA3A4, 0x3113, 0xA3A5, 0x3114, 0xA3A6, 0x3115, 0xA3A7, 0x3116,
+	0xA3A8, 0x3117, 0xA3A9, 0x3118, 0xA3AA, 0x3119, 0xA3AB, 0x311A,
+	0xA3AC, 0x311B, 0xA3AD, 0x311C, 0xA3AE, 0x311D, 0xA3AF, 0x311E,
+	0xA3B0, 0x311F, 0xA3B1, 0x3120, 0xA3B2, 0x3121, 0xA3B3, 0x3122,
+	0xA3B4, 0x3123, 0xA3B5, 0x3124, 0xA3B6, 0x3125, 0xA3B7, 0x3126,
+	0xA3B8, 0x3127, 0xA3B9, 0x3128, 0xA3BA, 0x3129, 0xA3BB, 0x02D9,
+	0xA3BC, 0x02C9, 0xA3BD, 0x02CA, 0xA3BE, 0x02C7, 0xA3BF, 0x02CB,
+	0xA3E1, 0x20AC, 0xA440, 0x4E00, 0xA441, 0x4E59, 0xA442, 0x4E01,
+	0xA443, 0x4E03, 0xA444, 0x4E43, 0xA445, 0x4E5D, 0xA446, 0x4E86,
+	0xA447, 0x4E8C, 0xA448, 0x4EBA, 0xA449, 0x513F, 0xA44A, 0x5165,
+	0xA44B, 0x516B, 0xA44C, 0x51E0, 0xA44D, 0x5200, 0xA44E, 0x5201,
+	0xA44F, 0x529B, 0xA450, 0x5315, 0xA451, 0x5341, 0xA452, 0x535C,
+	0xA453, 0x53C8, 0xA454, 0x4E09, 0xA455, 0x4E0B, 0xA456, 0x4E08,
+	0xA457, 0x4E0A, 0xA458, 0x4E2B, 0xA459, 0x4E38, 0xA45A, 0x51E1,
+	0xA45B, 0x4E45, 0xA45C, 0x4E48, 0xA45D, 0x4E5F, 0xA45E, 0x4E5E,
+	0xA45F, 0x4E8E, 0xA460, 0x4EA1, 0xA461, 0x5140, 0xA462, 0x5203,
+	0xA463, 0x52FA, 0xA464, 0x5343, 0xA465, 0x53C9, 0xA466, 0x53E3,
+	0xA467, 0x571F, 0xA468, 0x58EB, 0xA469, 0x5915, 0xA46A, 0x5927,
+	0xA46B, 0x5973, 0xA46C, 0x5B50, 0xA46D, 0x5B51, 0xA46E, 0x5B53,
+	0xA46F, 0x5BF8, 0xA470, 0x5C0F, 0xA471, 0x5C22, 0xA472, 0x5C38,
+	0xA473, 0x5C71, 0xA474, 0x5DDD, 0xA475, 0x5DE5, 0xA476, 0x5DF1,
+	0xA477, 0x5DF2, 0xA478, 0x5DF3, 0xA479, 0x5DFE, 0xA47A, 0x5E72,
+	0xA47B, 0x5EFE, 0xA47C, 0x5F0B, 0xA47D, 0x5F13, 0xA47E, 0x624D,
+	0xA4A1, 0x4E11, 0xA4A2, 0x4E10, 0xA4A3, 0x4E0D, 0xA4A4, 0x4E2D,
+	0xA4A5, 0x4E30, 0xA4A6, 0x4E39, 0xA4A7, 0x4E4B, 0xA4A8, 0x5C39,
+	0xA4A9, 0x4E88, 0xA4AA, 0x4E91, 0xA4AB, 0x4E95, 0xA4AC, 0x4E92,
+	0xA4AD, 0x4E94, 0xA4AE, 0x4EA2, 0xA4AF, 0x4EC1, 0xA4B0, 0x4EC0,
+	0xA4B1, 0x4EC3, 0xA4B2, 0x4EC6, 0xA4B3, 0x4EC7, 0xA4B4, 0x4ECD,
+	0xA4B5, 0x4ECA, 0xA4B6, 0x4ECB, 0xA4B7, 0x4EC4, 0xA4B8, 0x5143,
+	0xA4B9, 0x5141, 0xA4BA, 0x5167, 0xA4BB, 0x516D, 0xA4BC, 0x516E,
+	0xA4BD, 0x516C, 0xA4BE, 0x5197, 0xA4BF, 0x51F6, 0xA4C0, 0x5206,
+	0xA4C1, 0x5207, 0xA4C2, 0x5208, 0xA4C3, 0x52FB, 0xA4C4, 0x52FE,
+	0xA4C5, 0x52FF, 0xA4C6, 0x5316, 0xA4C7, 0x5339, 0xA4C8, 0x5348,
+	0xA4C9, 0x5347, 0xA4CA, 0x5345, 0xA4CB, 0x535E, 0xA4CC, 0x5384,
+	0xA4CD, 0x53CB, 0xA4CE, 0x53CA, 0xA4CF, 0x53CD, 0xA4D0, 0x58EC,
+	0xA4D1, 0x5929, 0xA4D2, 0x592B, 0xA4D3, 0x592A, 0xA4D4, 0x592D,
+	0xA4D5, 0x5B54, 0xA4D6, 0x5C11, 0xA4D7, 0x5C24, 0xA4D8, 0x5C3A,
+	0xA4D9, 0x5C6F, 0xA4DA, 0x5DF4, 0xA4DB, 0x5E7B, 0xA4DC, 0x5EFF,
+	0xA4DD, 0x5F14, 0xA4DE, 0x5F15, 0xA4DF, 0x5FC3, 0xA4E0, 0x6208,
+	0xA4E1, 0x6236, 0xA4E2, 0x624B, 0xA4E3, 0x624E, 0xA4E4, 0x652F,
+	0xA4E5, 0x6587, 0xA4E6, 0x6597, 0xA4E7, 0x65A4, 0xA4E8, 0x65B9,
+	0xA4E9, 0x65E5, 0xA4EA, 0x66F0, 0xA4EB, 0x6708, 0xA4EC, 0x6728,
+	0xA4ED, 0x6B20, 0xA4EE, 0x6B62, 0xA4EF, 0x6B79, 0xA4F0, 0x6BCB,
+	0xA4F1, 0x6BD4, 0xA4F2, 0x6BDB, 0xA4F3, 0x6C0F, 0xA4F4, 0x6C34,
+	0xA4F5, 0x706B, 0xA4F6, 0x722A, 0xA4F7, 0x7236, 0xA4F8, 0x723B,
+	0xA4F9, 0x7247, 0xA4FA, 0x7259, 0xA4FB, 0x725B, 0xA4FC, 0x72AC,
+	0xA4FD, 0x738B, 0xA4FE, 0x4E19, 0xA540, 0x4E16, 0xA541, 0x4E15,
+	0xA542, 0x4E14, 0xA543, 0x4E18, 0xA544, 0x4E3B, 0xA545, 0x4E4D,
+	0xA546, 0x4E4F, 0xA547, 0x4E4E, 0xA548, 0x4EE5, 0xA549, 0x4ED8,
+	0xA54A, 0x4ED4, 0xA54B, 0x4ED5, 0xA54C, 0x4ED6, 0xA54D, 0x4ED7,
+	0xA54E, 0x4EE3, 0xA54F, 0x4EE4, 0xA550, 0x4ED9, 0xA551, 0x4EDE,
+	0xA552, 0x5145, 0xA553, 0x5144, 0xA554, 0x5189, 0xA555, 0x518A,
+	0xA556, 0x51AC, 0xA557, 0x51F9, 0xA558, 0x51FA, 0xA559, 0x51F8,
+	0xA55A, 0x520A, 0xA55B, 0x52A0, 0xA55C, 0x529F, 0xA55D, 0x5305,
+	0xA55E, 0x5306, 0xA55F, 0x5317, 0xA560, 0x531D, 0xA561, 0x4EDF,
+	0xA562, 0x534A, 0xA563, 0x5349, 0xA564, 0x5361, 0xA565, 0x5360,
+	0xA566, 0x536F, 0xA567, 0x536E, 0xA568, 0x53BB, 0xA569, 0x53EF,
+	0xA56A, 0x53E4, 0xA56B, 0x53F3, 0xA56C, 0x53EC, 0xA56D, 0x53EE,
+	0xA56E, 0x53E9, 0xA56F, 0x53E8, 0xA570, 0x53FC, 0xA571, 0x53F8,
+	0xA572, 0x53F5, 0xA573, 0x53EB, 0xA574, 0x53E6, 0xA575, 0x53EA,
+	0xA576, 0x53F2, 0xA577, 0x53F1, 0xA578, 0x53F0, 0xA579, 0x53E5,
+	0xA57A, 0x53ED, 0xA57B, 0x53FB, 0xA57C, 0x56DB, 0xA57D, 0x56DA,
+	0xA57E, 0x5916, 0xA5A1, 0x592E, 0xA5A2, 0x5931, 0xA5A3, 0x5974,
+	0xA5A4, 0x5976, 0xA5A5, 0x5B55, 0xA5A6, 0x5B83, 0xA5A7, 0x5C3C,
+	0xA5A8, 0x5DE8, 0xA5A9, 0x5DE7, 0xA5AA, 0x5DE6, 0xA5AB, 0x5E02,
+	0xA5AC, 0x5E03, 0xA5AD, 0x5E73, 0xA5AE, 0x5E7C, 0xA5AF, 0x5F01,
+	0xA5B0, 0x5F18, 0xA5B1, 0x5F17, 0xA5B2, 0x5FC5, 0xA5B3, 0x620A,
+	0xA5B4, 0x6253, 0xA5B5, 0x6254, 0xA5B6, 0x6252, 0xA5B7, 0x6251,
+	0xA5B8, 0x65A5, 0xA5B9, 0x65E6, 0xA5BA, 0x672E, 0xA5BB, 0x672C,
+	0xA5BC, 0x672A, 0xA5BD, 0x672B, 0xA5BE, 0x672D, 0xA5BF, 0x6B63,
+	0xA5C0, 0x6BCD, 0xA5C1, 0x6C11, 0xA5C2, 0x6C10, 0xA5C3, 0x6C38,
+	0xA5C4, 0x6C41, 0xA5C5, 0x6C40, 0xA5C6, 0x6C3E, 0xA5C7, 0x72AF,
+	0xA5C8, 0x7384, 0xA5C9, 0x7389, 0xA5CA, 0x74DC, 0xA5CB, 0x74E6,
+	0xA5CC, 0x7518, 0xA5CD, 0x751F, 0xA5CE, 0x7528, 0xA5CF, 0x7529,
+	0xA5D0, 0x7530, 0xA5D1, 0x7531, 0xA5D2, 0x7532, 0xA5D3, 0x7533,
+	0xA5D4, 0x758B, 0xA5D5, 0x767D, 0xA5D6, 0x76AE, 0xA5D7, 0x76BF,
+	0xA5D8, 0x76EE, 0xA5D9, 0x77DB, 0xA5DA, 0x77E2, 0xA5DB, 0x77F3,
+	0xA5DC, 0x793A, 0xA5DD, 0x79BE, 0xA5DE, 0x7A74, 0xA5DF, 0x7ACB,
+	0xA5E0, 0x4E1E, 0xA5E1, 0x4E1F, 0xA5E2, 0x4E52, 0xA5E3, 0x4E53,
+	0xA5E4, 0x4E69, 0xA5E5, 0x4E99, 0xA5E6, 0x4EA4, 0xA5E7, 0x4EA6,
+	0xA5E8, 0x4EA5, 0xA5E9, 0x4EFF, 0xA5EA, 0x4F09, 0xA5EB, 0x4F19,
+	0xA5EC, 0x4F0A, 0xA5ED, 0x4F15, 0xA5EE, 0x4F0D, 0xA5EF, 0x4F10,
+	0xA5F0, 0x4F11, 0xA5F1, 0x4F0F, 0xA5F2, 0x4EF2, 0xA5F3, 0x4EF6,
+	0xA5F4, 0x4EFB, 0xA5F5, 0x4EF0, 0xA5F6, 0x4EF3, 0xA5F7, 0x4EFD,
+	0xA5F8, 0x4F01, 0xA5F9, 0x4F0B, 0xA5FA, 0x5149, 0xA5FB, 0x5147,
+	0xA5FC, 0x5146, 0xA5FD, 0x5148, 0xA5FE, 0x5168, 0xA640, 0x5171,
+	0xA641, 0x518D, 0xA642, 0x51B0, 0xA643, 0x5217, 0xA644, 0x5211,
+	0xA645, 0x5212, 0xA646, 0x520E, 0xA647, 0x5216, 0xA648, 0x52A3,
+	0xA649, 0x5308, 0xA64A, 0x5321, 0xA64B, 0x5320, 0xA64C, 0x5370,
+	0xA64D, 0x5371, 0xA64E, 0x5409, 0xA64F, 0x540F, 0xA650, 0x540C,
+	0xA651, 0x540A, 0xA652, 0x5410, 0xA653, 0x5401, 0xA654, 0x540B,
+	0xA655, 0x5404, 0xA656, 0x5411, 0xA657, 0x540D, 0xA658, 0x5408,
+	0xA659, 0x5403, 0xA65A, 0x540E, 0xA65B, 0x5406, 0xA65C, 0x5412,
+	0xA65D, 0x56E0, 0xA65E, 0x56DE, 0xA65F, 0x56DD, 0xA660, 0x5733,
+	0xA661, 0x5730, 0xA662, 0x5728, 0xA663, 0x572D, 0xA664, 0x572C,
+	0xA665, 0x572F, 0xA666, 0x5729, 0xA667, 0x5919, 0xA668, 0x591A,
+	0xA669, 0x5937, 0xA66A, 0x5938, 0xA66B, 0x5984, 0xA66C, 0x5978,
+	0xA66D, 0x5983, 0xA66E, 0x597D, 0xA66F, 0x5979, 0xA670, 0x5982,
+	0xA671, 0x5981, 0xA672, 0x5B57, 0xA673, 0x5B58, 0xA674, 0x5B87,
+	0xA675, 0x5B88, 0xA676, 0x5B85, 0xA677, 0x5B89, 0xA678, 0x5BFA,
+	0xA679, 0x5C16, 0xA67A, 0x5C79, 0xA67B, 0x5DDE, 0xA67C, 0x5E06,
+	0xA67D, 0x5E76, 0xA67E, 0x5E74, 0xA6A1, 0x5F0F, 0xA6A2, 0x5F1B,
+	0xA6A3, 0x5FD9, 0xA6A4, 0x5FD6, 0xA6A5, 0x620E, 0xA6A6, 0x620C,
+	0xA6A7, 0x620D, 0xA6A8, 0x6210, 0xA6A9, 0x6263, 0xA6AA, 0x625B,
+	0xA6AB, 0x6258, 0xA6AC, 0x6536, 0xA6AD, 0x65E9, 0xA6AE, 0x65E8,
+	0xA6AF, 0x65EC, 0xA6B0, 0x65ED, 0xA6B1, 0x66F2, 0xA6B2, 0x66F3,
+	0xA6B3, 0x6709, 0xA6B4, 0x673D, 0xA6B5, 0x6734, 0xA6B6, 0x6731,
+	0xA6B7, 0x6735, 0xA6B8, 0x6B21, 0xA6B9, 0x6B64, 0xA6BA, 0x6B7B,
+	0xA6BB, 0x6C16, 0xA6BC, 0x6C5D, 0xA6BD, 0x6C57, 0xA6BE, 0x6C59,
+	0xA6BF, 0x6C5F, 0xA6C0, 0x6C60, 0xA6C1, 0x6C50, 0xA6C2, 0x6C55,
+	0xA6C3, 0x6C61, 0xA6C4, 0x6C5B, 0xA6C5, 0x6C4D, 0xA6C6, 0x6C4E,
+	0xA6C7, 0x7070, 0xA6C8, 0x725F, 0xA6C9, 0x725D, 0xA6CA, 0x767E,
+	0xA6CB, 0x7AF9, 0xA6CC, 0x7C73, 0xA6CD, 0x7CF8, 0xA6CE, 0x7F36,
+	0xA6CF, 0x7F8A, 0xA6D0, 0x7FBD, 0xA6D1, 0x8001, 0xA6D2, 0x8003,
+	0xA6D3, 0x800C, 0xA6D4, 0x8012, 0xA6D5, 0x8033, 0xA6D6, 0x807F,
+	0xA6D7, 0x8089, 0xA6D8, 0x808B, 0xA6D9, 0x808C, 0xA6DA, 0x81E3,
+	0xA6DB, 0x81EA, 0xA6DC, 0x81F3, 0xA6DD, 0x81FC, 0xA6DE, 0x820C,
+	0xA6DF, 0x821B, 0xA6E0, 0x821F, 0xA6E1, 0x826E, 0xA6E2, 0x8272,
+	0xA6E3, 0x827E, 0xA6E4, 0x866B, 0xA6E5, 0x8840, 0xA6E6, 0x884C,
+	0xA6E7, 0x8863, 0xA6E8, 0x897F, 0xA6E9, 0x9621, 0xA6EA, 0x4E32,
+	0xA6EB, 0x4EA8, 0xA6EC, 0x4F4D, 0xA6ED, 0x4F4F, 0xA6EE, 0x4F47,
+	0xA6EF, 0x4F57, 0xA6F0, 0x4F5E, 0xA6F1, 0x4F34, 0xA6F2, 0x4F5B,
+	0xA6F3, 0x4F55, 0xA6F4, 0x4F30, 0xA6F5, 0x4F50, 0xA6F6, 0x4F51,
+	0xA6F7, 0x4F3D, 0xA6F8, 0x4F3A, 0xA6F9, 0x4F38, 0xA6FA, 0x4F43,
+	0xA6FB, 0x4F54, 0xA6FC, 0x4F3C, 0xA6FD, 0x4F46, 0xA6FE, 0x4F63,
+	0xA740, 0x4F5C, 0xA741, 0x4F60, 0xA742, 0x4F2F, 0xA743, 0x4F4E,
+	0xA744, 0x4F36, 0xA745, 0x4F59, 0xA746, 0x4F5D, 0xA747, 0x4F48,
+	0xA748, 0x4F5A, 0xA749, 0x514C, 0xA74A, 0x514B, 0xA74B, 0x514D,
+	0xA74C, 0x5175, 0xA74D, 0x51B6, 0xA74E, 0x51B7, 0xA74F, 0x5225,
+	0xA750, 0x5224, 0xA751, 0x5229, 0xA752, 0x522A, 0xA753, 0x5228,
+	0xA754, 0x52AB, 0xA755, 0x52A9, 0xA756, 0x52AA, 0xA757, 0x52AC,
+	0xA758, 0x5323, 0xA759, 0x5373, 0xA75A, 0x5375, 0xA75B, 0x541D,
+	0xA75C, 0x542D, 0xA75D, 0x541E, 0xA75E, 0x543E, 0xA75F, 0x5426,
+	0xA760, 0x544E, 0xA761, 0x5427, 0xA762, 0x5446, 0xA763, 0x5443,
+	0xA764, 0x5433, 0xA765, 0x5448, 0xA766, 0x5442, 0xA767, 0x541B,
+	0xA768, 0x5429, 0xA769, 0x544A, 0xA76A, 0x5439, 0xA76B, 0x543B,
+	0xA76C, 0x5438, 0xA76D, 0x542E, 0xA76E, 0x5435, 0xA76F, 0x5436,
+	0xA770, 0x5420, 0xA771, 0x543C, 0xA772, 0x5440, 0xA773, 0x5431,
+	0xA774, 0x542B, 0xA775, 0x541F, 0xA776, 0x542C, 0xA777, 0x56EA,
+	0xA778, 0x56F0, 0xA779, 0x56E4, 0xA77A, 0x56EB, 0xA77B, 0x574A,
+	0xA77C, 0x5751, 0xA77D, 0x5740, 0xA77E, 0x574D, 0xA7A1, 0x5747,
+	0xA7A2, 0x574E, 0xA7A3, 0x573E, 0xA7A4, 0x5750, 0xA7A5, 0x574F,
+	0xA7A6, 0x573B, 0xA7A7, 0x58EF, 0xA7A8, 0x593E, 0xA7A9, 0x599D,
+	0xA7AA, 0x5992, 0xA7AB, 0x59A8, 0xA7AC, 0x599E, 0xA7AD, 0x59A3,
+	0xA7AE, 0x5999, 0xA7AF, 0x5996, 0xA7B0, 0x598D, 0xA7B1, 0x59A4,
+	0xA7B2, 0x5993, 0xA7B3, 0x598A, 0xA7B4, 0x59A5, 0xA7B5, 0x5B5D,
+	0xA7B6, 0x5B5C, 0xA7B7, 0x5B5A, 0xA7B8, 0x5B5B, 0xA7B9, 0x5B8C,
+	0xA7BA, 0x5B8B, 0xA7BB, 0x5B8F, 0xA7BC, 0x5C2C, 0xA7BD, 0x5C40,
+	0xA7BE, 0x5C41, 0xA7BF, 0x5C3F, 0xA7C0, 0x5C3E, 0xA7C1, 0x5C90,
+	0xA7C2, 0x5C91, 0xA7C3, 0x5C94, 0xA7C4, 0x5C8C, 0xA7C5, 0x5DEB,
+	0xA7C6, 0x5E0C, 0xA7C7, 0x5E8F, 0xA7C8, 0x5E87, 0xA7C9, 0x5E8A,
+	0xA7CA, 0x5EF7, 0xA7CB, 0x5F04, 0xA7CC, 0x5F1F, 0xA7CD, 0x5F64,
+	0xA7CE, 0x5F62, 0xA7CF, 0x5F77, 0xA7D0, 0x5F79, 0xA7D1, 0x5FD8,
+	0xA7D2, 0x5FCC, 0xA7D3, 0x5FD7, 0xA7D4, 0x5FCD, 0xA7D5, 0x5FF1,
+	0xA7D6, 0x5FEB, 0xA7D7, 0x5FF8, 0xA7D8, 0x5FEA, 0xA7D9, 0x6212,
+	0xA7DA, 0x6211, 0xA7DB, 0x6284, 0xA7DC, 0x6297, 0xA7DD, 0x6296,
+	0xA7DE, 0x6280, 0xA7DF, 0x6276, 0xA7E0, 0x6289, 0xA7E1, 0x626D,
+	0xA7E2, 0x628A, 0xA7E3, 0x627C, 0xA7E4, 0x627E, 0xA7E5, 0x6279,
+	0xA7E6, 0x6273, 0xA7E7, 0x6292, 0xA7E8, 0x626F, 0xA7E9, 0x6298,
+	0xA7EA, 0x626E, 0xA7EB, 0x6295, 0xA7EC, 0x6293, 0xA7ED, 0x6291,
+	0xA7EE, 0x6286, 0xA7EF, 0x6539, 0xA7F0, 0x653B, 0xA7F1, 0x6538,
+	0xA7F2, 0x65F1, 0xA7F3, 0x66F4, 0xA7F4, 0x675F, 0xA7F5, 0x674E,
+	0xA7F6, 0x674F, 0xA7F7, 0x6750, 0xA7F8, 0x6751, 0xA7F9, 0x675C,
+	0xA7FA, 0x6756, 0xA7FB, 0x675E, 0xA7FC, 0x6749, 0xA7FD, 0x6746,
+	0xA7FE, 0x6760, 0xA840, 0x6753, 0xA841, 0x6757, 0xA842, 0x6B65,
+	0xA843, 0x6BCF, 0xA844, 0x6C42, 0xA845, 0x6C5E, 0xA846, 0x6C99,
+	0xA847, 0x6C81, 0xA848, 0x6C88, 0xA849, 0x6C89, 0xA84A, 0x6C85,
+	0xA84B, 0x6C9B, 0xA84C, 0x6C6A, 0xA84D, 0x6C7A, 0xA84E, 0x6C90,
+	0xA84F, 0x6C70, 0xA850, 0x6C8C, 0xA851, 0x6C68, 0xA852, 0x6C96,
+	0xA853, 0x6C92, 0xA854, 0x6C7D, 0xA855, 0x6C83, 0xA856, 0x6C72,
+	0xA857, 0x6C7E, 0xA858, 0x6C74, 0xA859, 0x6C86, 0xA85A, 0x6C76,
+	0xA85B, 0x6C8D, 0xA85C, 0x6C94, 0xA85D, 0x6C98, 0xA85E, 0x6C82,
+	0xA85F, 0x7076, 0xA860, 0x707C, 0xA861, 0x707D, 0xA862, 0x7078,
+	0xA863, 0x7262, 0xA864, 0x7261, 0xA865, 0x7260, 0xA866, 0x72C4,
+	0xA867, 0x72C2, 0xA868, 0x7396, 0xA869, 0x752C, 0xA86A, 0x752B,
+	0xA86B, 0x7537, 0xA86C, 0x7538, 0xA86D, 0x7682, 0xA86E, 0x76EF,
+	0xA86F, 0x77E3, 0xA870, 0x79C1, 0xA871, 0x79C0, 0xA872, 0x79BF,
+	0xA873, 0x7A76, 0xA874, 0x7CFB, 0xA875, 0x7F55, 0xA876, 0x8096,
+	0xA877, 0x8093, 0xA878, 0x809D, 0xA879, 0x8098, 0xA87A, 0x809B,
+	0xA87B, 0x809A, 0xA87C, 0x80B2, 0xA87D, 0x826F, 0xA87E, 0x8292,
+	0xA8A1, 0x828B, 0xA8A2, 0x828D, 0xA8A3, 0x898B, 0xA8A4, 0x89D2,
+	0xA8A5, 0x8A00, 0xA8A6, 0x8C37, 0xA8A7, 0x8C46, 0xA8A8, 0x8C55,
+	0xA8A9, 0x8C9D, 0xA8AA, 0x8D64, 0xA8AB, 0x8D70, 0xA8AC, 0x8DB3,
+	0xA8AD, 0x8EAB, 0xA8AE, 0x8ECA, 0xA8AF, 0x8F9B, 0xA8B0, 0x8FB0,
+	0xA8B1, 0x8FC2, 0xA8B2, 0x8FC6, 0xA8B3, 0x8FC5, 0xA8B4, 0x8FC4,
+	0xA8B5, 0x5DE1, 0xA8B6, 0x9091, 0xA8B7, 0x90A2, 0xA8B8, 0x90AA,
+	0xA8B9, 0x90A6, 0xA8BA, 0x90A3, 0xA8BB, 0x9149, 0xA8BC, 0x91C6,
+	0xA8BD, 0x91CC, 0xA8BE, 0x9632, 0xA8BF, 0x962E, 0xA8C0, 0x9631,
+	0xA8C1, 0x962A, 0xA8C2, 0x962C, 0xA8C3, 0x4E26, 0xA8C4, 0x4E56,
+	0xA8C5, 0x4E73, 0xA8C6, 0x4E8B, 0xA8C7, 0x4E9B, 0xA8C8, 0x4E9E,
+	0xA8C9, 0x4EAB, 0xA8CA, 0x4EAC, 0xA8CB, 0x4F6F, 0xA8CC, 0x4F9D,
+	0xA8CD, 0x4F8D, 0xA8CE, 0x4F73, 0xA8CF, 0x4F7F, 0xA8D0, 0x4F6C,
+	0xA8D1, 0x4F9B, 0xA8D2, 0x4F8B, 0xA8D3, 0x4F86, 0xA8D4, 0x4F83,
+	0xA8D5, 0x4F70, 0xA8D6, 0x4F75, 0xA8D7, 0x4F88, 0xA8D8, 0x4F69,
+	0xA8D9, 0x4F7B, 0xA8DA, 0x4F96, 0xA8DB, 0x4F7E, 0xA8DC, 0x4F8F,
+	0xA8DD, 0x4F91, 0xA8DE, 0x4F7A, 0xA8DF, 0x5154, 0xA8E0, 0x5152,
+	0xA8E1, 0x5155, 0xA8E2, 0x5169, 0xA8E3, 0x5177, 0xA8E4, 0x5176,
+	0xA8E5, 0x5178, 0xA8E6, 0x51BD, 0xA8E7, 0x51FD, 0xA8E8, 0x523B,
+	0xA8E9, 0x5238, 0xA8EA, 0x5237, 0xA8EB, 0x523A, 0xA8EC, 0x5230,
+	0xA8ED, 0x522E, 0xA8EE, 0x5236, 0xA8EF, 0x5241, 0xA8F0, 0x52BE,
+	0xA8F1, 0x52BB, 0xA8F2, 0x5352, 0xA8F3, 0x5354, 0xA8F4, 0x5353,
+	0xA8F5, 0x5351, 0xA8F6, 0x5366, 0xA8F7, 0x5377, 0xA8F8, 0x5378,
+	0xA8F9, 0x5379, 0xA8FA, 0x53D6, 0xA8FB, 0x53D4, 0xA8FC, 0x53D7,
+	0xA8FD, 0x5473, 0xA8FE, 0x5475, 0xA940, 0x5496, 0xA941, 0x5478,
+	0xA942, 0x5495, 0xA943, 0x5480, 0xA944, 0x547B, 0xA945, 0x5477,
+	0xA946, 0x5484, 0xA947, 0x5492, 0xA948, 0x5486, 0xA949, 0x547C,
+	0xA94A, 0x5490, 0xA94B, 0x5471, 0xA94C, 0x5476, 0xA94D, 0x548C,
+	0xA94E, 0x549A, 0xA94F, 0x5462, 0xA950, 0x5468, 0xA951, 0x548B,
+	0xA952, 0x547D, 0xA953, 0x548E, 0xA954, 0x56FA, 0xA955, 0x5783,
+	0xA956, 0x5777, 0xA957, 0x576A, 0xA958, 0x5769, 0xA959, 0x5761,
+	0xA95A, 0x5766, 0xA95B, 0x5764, 0xA95C, 0x577C, 0xA95D, 0x591C,
+	0xA95E, 0x5949, 0xA95F, 0x5947, 0xA960, 0x5948, 0xA961, 0x5944,
+	0xA962, 0x5954, 0xA963, 0x59BE, 0xA964, 0x59BB, 0xA965, 0x59D4,
+	0xA966, 0x59B9, 0xA967, 0x59AE, 0xA968, 0x59D1, 0xA969, 0x59C6,
+	0xA96A, 0x59D0, 0xA96B, 0x59CD, 0xA96C, 0x59CB, 0xA96D, 0x59D3,
+	0xA96E, 0x59CA, 0xA96F, 0x59AF, 0xA970, 0x59B3, 0xA971, 0x59D2,
+	0xA972, 0x59C5, 0xA973, 0x5B5F, 0xA974, 0x5B64, 0xA975, 0x5B63,
+	0xA976, 0x5B97, 0xA977, 0x5B9A, 0xA978, 0x5B98, 0xA979, 0x5B9C,
+	0xA97A, 0x5B99, 0xA97B, 0x5B9B, 0xA97C, 0x5C1A, 0xA97D, 0x5C48,
+	0xA97E, 0x5C45, 0xA9A1, 0x5C46, 0xA9A2, 0x5CB7, 0xA9A3, 0x5CA1,
+	0xA9A4, 0x5CB8, 0xA9A5, 0x5CA9, 0xA9A6, 0x5CAB, 0xA9A7, 0x5CB1,
+	0xA9A8, 0x5CB3, 0xA9A9, 0x5E18, 0xA9AA, 0x5E1A, 0xA9AB, 0x5E16,
+	0xA9AC, 0x5E15, 0xA9AD, 0x5E1B, 0xA9AE, 0x5E11, 0xA9AF, 0x5E78,
+	0xA9B0, 0x5E9A, 0xA9B1, 0x5E97, 0xA9B2, 0x5E9C, 0xA9B3, 0x5E95,
+	0xA9B4, 0x5E96, 0xA9B5, 0x5EF6, 0xA9B6, 0x5F26, 0xA9B7, 0x5F27,
+	0xA9B8, 0x5F29, 0xA9B9, 0x5F80, 0xA9BA, 0x5F81, 0xA9BB, 0x5F7F,
+	0xA9BC, 0x5F7C, 0xA9BD, 0x5FDD, 0xA9BE, 0x5FE0, 0xA9BF, 0x5FFD,
+	0xA9C0, 0x5FF5, 0xA9C1, 0x5FFF, 0xA9C2, 0x600F, 0xA9C3, 0x6014,
+	0xA9C4, 0x602F, 0xA9C5, 0x6035, 0xA9C6, 0x6016, 0xA9C7, 0x602A,
+	0xA9C8, 0x6015, 0xA9C9, 0x6021, 0xA9CA, 0x6027, 0xA9CB, 0x6029,
+	0xA9CC, 0x602B, 0xA9CD, 0x601B, 0xA9CE, 0x6216, 0xA9CF, 0x6215,
+	0xA9D0, 0x623F, 0xA9D1, 0x623E, 0xA9D2, 0x6240, 0xA9D3, 0x627F,
+	0xA9D4, 0x62C9, 0xA9D5, 0x62CC, 0xA9D6, 0x62C4, 0xA9D7, 0x62BF,
+	0xA9D8, 0x62C2, 0xA9D9, 0x62B9, 0xA9DA, 0x62D2, 0xA9DB, 0x62DB,
+	0xA9DC, 0x62AB, 0xA9DD, 0x62D3, 0xA9DE, 0x62D4, 0xA9DF, 0x62CB,
+	0xA9E0, 0x62C8, 0xA9E1, 0x62A8, 0xA9E2, 0x62BD, 0xA9E3, 0x62BC,
+	0xA9E4, 0x62D0, 0xA9E5, 0x62D9, 0xA9E6, 0x62C7, 0xA9E7, 0x62CD,
+	0xA9E8, 0x62B5, 0xA9E9, 0x62DA, 0xA9EA, 0x62B1, 0xA9EB, 0x62D8,
+	0xA9EC, 0x62D6, 0xA9ED, 0x62D7, 0xA9EE, 0x62C6, 0xA9EF, 0x62AC,
+	0xA9F0, 0x62CE, 0xA9F1, 0x653E, 0xA9F2, 0x65A7, 0xA9F3, 0x65BC,
+	0xA9F4, 0x65FA, 0xA9F5, 0x6614, 0xA9F6, 0x6613, 0xA9F7, 0x660C,
+	0xA9F8, 0x6606, 0xA9F9, 0x6602, 0xA9FA, 0x660E, 0xA9FB, 0x6600,
+	0xA9FC, 0x660F, 0xA9FD, 0x6615, 0xA9FE, 0x660A, 0xAA40, 0x6607,
+	0xAA41, 0x670D, 0xAA42, 0x670B, 0xAA43, 0x676D, 0xAA44, 0x678B,
+	0xAA45, 0x6795, 0xAA46, 0x6771, 0xAA47, 0x679C, 0xAA48, 0x6773,
+	0xAA49, 0x6777, 0xAA4A, 0x6787, 0xAA4B, 0x679D, 0xAA4C, 0x6797,
+	0xAA4D, 0x676F, 0xAA4E, 0x6770, 0xAA4F, 0x677F, 0xAA50, 0x6789,
+	0xAA51, 0x677E, 0xAA52, 0x6790, 0xAA53, 0x6775, 0xAA54, 0x679A,
+	0xAA55, 0x6793, 0xAA56, 0x677C, 0xAA57, 0x676A, 0xAA58, 0x6772,
+	0xAA59, 0x6B23, 0xAA5A, 0x6B66, 0xAA5B, 0x6B67, 0xAA5C, 0x6B7F,
+	0xAA5D, 0x6C13, 0xAA5E, 0x6C1B, 0xAA5F, 0x6CE3, 0xAA60, 0x6CE8,
+	0xAA61, 0x6CF3, 0xAA62, 0x6CB1, 0xAA63, 0x6CCC, 0xAA64, 0x6CE5,
+	0xAA65, 0x6CB3, 0xAA66, 0x6CBD, 0xAA67, 0x6CBE, 0xAA68, 0x6CBC,
+	0xAA69, 0x6CE2, 0xAA6A, 0x6CAB, 0xAA6B, 0x6CD5, 0xAA6C, 0x6CD3,
+	0xAA6D, 0x6CB8, 0xAA6E, 0x6CC4, 0xAA6F, 0x6CB9, 0xAA70, 0x6CC1,
+	0xAA71, 0x6CAE, 0xAA72, 0x6CD7, 0xAA73, 0x6CC5, 0xAA74, 0x6CF1,
+	0xAA75, 0x6CBF, 0xAA76, 0x6CBB, 0xAA77, 0x6CE1, 0xAA78, 0x6CDB,
+	0xAA79, 0x6CCA, 0xAA7A, 0x6CAC, 0xAA7B, 0x6CEF, 0xAA7C, 0x6CDC,
+	0xAA7D, 0x6CD6, 0xAA7E, 0x6CE0, 0xAAA1, 0x7095, 0xAAA2, 0x708E,
+	0xAAA3, 0x7092, 0xAAA4, 0x708A, 0xAAA5, 0x7099, 0xAAA6, 0x722C,
+	0xAAA7, 0x722D, 0xAAA8, 0x7238, 0xAAA9, 0x7248, 0xAAAA, 0x7267,
+	0xAAAB, 0x7269, 0xAAAC, 0x72C0, 0xAAAD, 0x72CE, 0xAAAE, 0x72D9,
+	0xAAAF, 0x72D7, 0xAAB0, 0x72D0, 0xAAB1, 0x73A9, 0xAAB2, 0x73A8,
+	0xAAB3, 0x739F, 0xAAB4, 0x73AB, 0xAAB5, 0x73A5, 0xAAB6, 0x753D,
+	0xAAB7, 0x759D, 0xAAB8, 0x7599, 0xAAB9, 0x759A, 0xAABA, 0x7684,
+	0xAABB, 0x76C2, 0xAABC, 0x76F2, 0xAABD, 0x76F4, 0xAABE, 0x77E5,
+	0xAABF, 0x77FD, 0xAAC0, 0x793E, 0xAAC1, 0x7940, 0xAAC2, 0x7941,
+	0xAAC3, 0x79C9, 0xAAC4, 0x79C8, 0xAAC5, 0x7A7A, 0xAAC6, 0x7A79,
+	0xAAC7, 0x7AFA, 0xAAC8, 0x7CFE, 0xAAC9, 0x7F54, 0xAACA, 0x7F8C,
+	0xAACB, 0x7F8B, 0xAACC, 0x8005, 0xAACD, 0x80BA, 0xAACE, 0x80A5,
+	0xAACF, 0x80A2, 0xAAD0, 0x80B1, 0xAAD1, 0x80A1, 0xAAD2, 0x80AB,
+	0xAAD3, 0x80A9, 0xAAD4, 0x80B4, 0xAAD5, 0x80AA, 0xAAD6, 0x80AF,
+	0xAAD7, 0x81E5, 0xAAD8, 0x81FE, 0xAAD9, 0x820D, 0xAADA, 0x82B3,
+	0xAADB, 0x829D, 0xAADC, 0x8299, 0xAADD, 0x82AD, 0xAADE, 0x82BD,
+	0xAADF, 0x829F, 0xAAE0, 0x82B9, 0xAAE1, 0x82B1, 0xAAE2, 0x82AC,
+	0xAAE3, 0x82A5, 0xAAE4, 0x82AF, 0xAAE5, 0x82B8, 0xAAE6, 0x82A3,
+	0xAAE7, 0x82B0, 0xAAE8, 0x82BE, 0xAAE9, 0x82B7, 0xAAEA, 0x864E,
+	0xAAEB, 0x8671, 0xAAEC, 0x521D, 0xAAED, 0x8868, 0xAAEE, 0x8ECB,
+	0xAAEF, 0x8FCE, 0xAAF0, 0x8FD4, 0xAAF1, 0x8FD1, 0xAAF2, 0x90B5,
+	0xAAF3, 0x90B8, 0xAAF4, 0x90B1, 0xAAF5, 0x90B6, 0xAAF6, 0x91C7,
+	0xAAF7, 0x91D1, 0xAAF8, 0x9577, 0xAAF9, 0x9580, 0xAAFA, 0x961C,
+	0xAAFB, 0x9640, 0xAAFC, 0x963F, 0xAAFD, 0x963B, 0xAAFE, 0x9644,
+	0xAB40, 0x9642, 0xAB41, 0x96B9, 0xAB42, 0x96E8, 0xAB43, 0x9752,
+	0xAB44, 0x975E, 0xAB45, 0x4E9F, 0xAB46, 0x4EAD, 0xAB47, 0x4EAE,
+	0xAB48, 0x4FE1, 0xAB49, 0x4FB5, 0xAB4A, 0x4FAF, 0xAB4B, 0x4FBF,
+	0xAB4C, 0x4FE0, 0xAB4D, 0x4FD1, 0xAB4E, 0x4FCF, 0xAB4F, 0x4FDD,
+	0xAB50, 0x4FC3, 0xAB51, 0x4FB6, 0xAB52, 0x4FD8, 0xAB53, 0x4FDF,
+	0xAB54, 0x4FCA, 0xAB55, 0x4FD7, 0xAB56, 0x4FAE, 0xAB57, 0x4FD0,
+	0xAB58, 0x4FC4, 0xAB59, 0x4FC2, 0xAB5A, 0x4FDA, 0xAB5B, 0x4FCE,
+	0xAB5C, 0x4FDE, 0xAB5D, 0x4FB7, 0xAB5E, 0x5157, 0xAB5F, 0x5192,
+	0xAB60, 0x5191, 0xAB61, 0x51A0, 0xAB62, 0x524E, 0xAB63, 0x5243,
+	0xAB64, 0x524A, 0xAB65, 0x524D, 0xAB66, 0x524C, 0xAB67, 0x524B,
+	0xAB68, 0x5247, 0xAB69, 0x52C7, 0xAB6A, 0x52C9, 0xAB6B, 0x52C3,
+	0xAB6C, 0x52C1, 0xAB6D, 0x530D, 0xAB6E, 0x5357, 0xAB6F, 0x537B,
+	0xAB70, 0x539A, 0xAB71, 0x53DB, 0xAB72, 0x54AC, 0xAB73, 0x54C0,
+	0xAB74, 0x54A8, 0xAB75, 0x54CE, 0xAB76, 0x54C9, 0xAB77, 0x54B8,
+	0xAB78, 0x54A6, 0xAB79, 0x54B3, 0xAB7A, 0x54C7, 0xAB7B, 0x54C2,
+	0xAB7C, 0x54BD, 0xAB7D, 0x54AA, 0xAB7E, 0x54C1, 0xABA1, 0x54C4,
+	0xABA2, 0x54C8, 0xABA3, 0x54AF, 0xABA4, 0x54AB, 0xABA5, 0x54B1,
+	0xABA6, 0x54BB, 0xABA7, 0x54A9, 0xABA8, 0x54A7, 0xABA9, 0x54BF,
+	0xABAA, 0x56FF, 0xABAB, 0x5782, 0xABAC, 0x578B, 0xABAD, 0x57A0,
+	0xABAE, 0x57A3, 0xABAF, 0x57A2, 0xABB0, 0x57CE, 0xABB1, 0x57AE,
+	0xABB2, 0x5793, 0xABB3, 0x5955, 0xABB4, 0x5951, 0xABB5, 0x594F,
+	0xABB6, 0x594E, 0xABB7, 0x5950, 0xABB8, 0x59DC, 0xABB9, 0x59D8,
+	0xABBA, 0x59FF, 0xABBB, 0x59E3, 0xABBC, 0x59E8, 0xABBD, 0x5A03,
+	0xABBE, 0x59E5, 0xABBF, 0x59EA, 0xABC0, 0x59DA, 0xABC1, 0x59E6,
+	0xABC2, 0x5A01, 0xABC3, 0x59FB, 0xABC4, 0x5B69, 0xABC5, 0x5BA3,
+	0xABC6, 0x5BA6, 0xABC7, 0x5BA4, 0xABC8, 0x5BA2, 0xABC9, 0x5BA5,
+	0xABCA, 0x5C01, 0xABCB, 0x5C4E, 0xABCC, 0x5C4F, 0xABCD, 0x5C4D,
+	0xABCE, 0x5C4B, 0xABCF, 0x5CD9, 0xABD0, 0x5CD2, 0xABD1, 0x5DF7,
+	0xABD2, 0x5E1D, 0xABD3, 0x5E25, 0xABD4, 0x5E1F, 0xABD5, 0x5E7D,
+	0xABD6, 0x5EA0, 0xABD7, 0x5EA6, 0xABD8, 0x5EFA, 0xABD9, 0x5F08,
+	0xABDA, 0x5F2D, 0xABDB, 0x5F65, 0xABDC, 0x5F88, 0xABDD, 0x5F85,
+	0xABDE, 0x5F8A, 0xABDF, 0x5F8B, 0xABE0, 0x5F87, 0xABE1, 0x5F8C,
+	0xABE2, 0x5F89, 0xABE3, 0x6012, 0xABE4, 0x601D, 0xABE5, 0x6020,
+	0xABE6, 0x6025, 0xABE7, 0x600E, 0xABE8, 0x6028, 0xABE9, 0x604D,
+	0xABEA, 0x6070, 0xABEB, 0x6068, 0xABEC, 0x6062, 0xABED, 0x6046,
+	0xABEE, 0x6043, 0xABEF, 0x606C, 0xABF0, 0x606B, 0xABF1, 0x606A,
+	0xABF2, 0x6064, 0xABF3, 0x6241, 0xABF4, 0x62DC, 0xABF5, 0x6316,
+	0xABF6, 0x6309, 0xABF7, 0x62FC, 0xABF8, 0x62ED, 0xABF9, 0x6301,
+	0xABFA, 0x62EE, 0xABFB, 0x62FD, 0xABFC, 0x6307, 0xABFD, 0x62F1,
+	0xABFE, 0x62F7, 0xAC40, 0x62EF, 0xAC41, 0x62EC, 0xAC42, 0x62FE,
+	0xAC43, 0x62F4, 0xAC44, 0x6311, 0xAC45, 0x6302, 0xAC46, 0x653F,
+	0xAC47, 0x6545, 0xAC48, 0x65AB, 0xAC49, 0x65BD, 0xAC4A, 0x65E2,
+	0xAC4B, 0x6625, 0xAC4C, 0x662D, 0xAC4D, 0x6620, 0xAC4E, 0x6627,
+	0xAC4F, 0x662F, 0xAC50, 0x661F, 0xAC51, 0x6628, 0xAC52, 0x6631,
+	0xAC53, 0x6624, 0xAC54, 0x66F7, 0xAC55, 0x67FF, 0xAC56, 0x67D3,
+	0xAC57, 0x67F1, 0xAC58, 0x67D4, 0xAC59, 0x67D0, 0xAC5A, 0x67EC,
+	0xAC5B, 0x67B6, 0xAC5C, 0x67AF, 0xAC5D, 0x67F5, 0xAC5E, 0x67E9,
+	0xAC5F, 0x67EF, 0xAC60, 0x67C4, 0xAC61, 0x67D1, 0xAC62, 0x67B4,
+	0xAC63, 0x67DA, 0xAC64, 0x67E5, 0xAC65, 0x67B8, 0xAC66, 0x67CF,
+	0xAC67, 0x67DE, 0xAC68, 0x67F3, 0xAC69, 0x67B0, 0xAC6A, 0x67D9,
+	0xAC6B, 0x67E2, 0xAC6C, 0x67DD, 0xAC6D, 0x67D2, 0xAC6E, 0x6B6A,
+	0xAC6F, 0x6B83, 0xAC70, 0x6B86, 0xAC71, 0x6BB5, 0xAC72, 0x6BD2,
+	0xAC73, 0x6BD7, 0xAC74, 0x6C1F, 0xAC75, 0x6CC9, 0xAC76, 0x6D0B,
+	0xAC77, 0x6D32, 0xAC78, 0x6D2A, 0xAC79, 0x6D41, 0xAC7A, 0x6D25,
+	0xAC7B, 0x6D0C, 0xAC7C, 0x6D31, 0xAC7D, 0x6D1E, 0xAC7E, 0x6D17,
+	0xACA1, 0x6D3B, 0xACA2, 0x6D3D, 0xACA3, 0x6D3E, 0xACA4, 0x6D36,
+	0xACA5, 0x6D1B, 0xACA6, 0x6CF5, 0xACA7, 0x6D39, 0xACA8, 0x6D27,
+	0xACA9, 0x6D38, 0xACAA, 0x6D29, 0xACAB, 0x6D2E, 0xACAC, 0x6D35,
+	0xACAD, 0x6D0E, 0xACAE, 0x6D2B, 0xACAF, 0x70AB, 0xACB0, 0x70BA,
+	0xACB1, 0x70B3, 0xACB2, 0x70AC, 0xACB3, 0x70AF, 0xACB4, 0x70AD,
+	0xACB5, 0x70B8, 0xACB6, 0x70AE, 0xACB7, 0x70A4, 0xACB8, 0x7230,
+	0xACB9, 0x7272, 0xACBA, 0x726F, 0xACBB, 0x7274, 0xACBC, 0x72E9,
+	0xACBD, 0x72E0, 0xACBE, 0x72E1, 0xACBF, 0x73B7, 0xACC0, 0x73CA,
+	0xACC1, 0x73BB, 0xACC2, 0x73B2, 0xACC3, 0x73CD, 0xACC4, 0x73C0,
+	0xACC5, 0x73B3, 0xACC6, 0x751A, 0xACC7, 0x752D, 0xACC8, 0x754F,
+	0xACC9, 0x754C, 0xACCA, 0x754E, 0xACCB, 0x754B, 0xACCC, 0x75AB,
+	0xACCD, 0x75A4, 0xACCE, 0x75A5, 0xACCF, 0x75A2, 0xACD0, 0x75A3,
+	0xACD1, 0x7678, 0xACD2, 0x7686, 0xACD3, 0x7687, 0xACD4, 0x7688,
+	0xACD5, 0x76C8, 0xACD6, 0x76C6, 0xACD7, 0x76C3, 0xACD8, 0x76C5,
+	0xACD9, 0x7701, 0xACDA, 0x76F9, 0xACDB, 0x76F8, 0xACDC, 0x7709,
+	0xACDD, 0x770B, 0xACDE, 0x76FE, 0xACDF, 0x76FC, 0xACE0, 0x7707,
+	0xACE1, 0x77DC, 0xACE2, 0x7802, 0xACE3, 0x7814, 0xACE4, 0x780C,
+	0xACE5, 0x780D, 0xACE6, 0x7946, 0xACE7, 0x7949, 0xACE8, 0x7948,
+	0xACE9, 0x7947, 0xACEA, 0x79B9, 0xACEB, 0x79BA, 0xACEC, 0x79D1,
+	0xACED, 0x79D2, 0xACEE, 0x79CB, 0xACEF, 0x7A7F, 0xACF0, 0x7A81,
+	0xACF1, 0x7AFF, 0xACF2, 0x7AFD, 0xACF3, 0x7C7D, 0xACF4, 0x7D02,
+	0xACF5, 0x7D05, 0xACF6, 0x7D00, 0xACF7, 0x7D09, 0xACF8, 0x7D07,
+	0xACF9, 0x7D04, 0xACFA, 0x7D06, 0xACFB, 0x7F38, 0xACFC, 0x7F8E,
+	0xACFD, 0x7FBF, 0xACFE, 0x8004, 0xAD40, 0x8010, 0xAD41, 0x800D,
+	0xAD42, 0x8011, 0xAD43, 0x8036, 0xAD44, 0x80D6, 0xAD45, 0x80E5,
+	0xAD46, 0x80DA, 0xAD47, 0x80C3, 0xAD48, 0x80C4, 0xAD49, 0x80CC,
+	0xAD4A, 0x80E1, 0xAD4B, 0x80DB, 0xAD4C, 0x80CE, 0xAD4D, 0x80DE,
+	0xAD4E, 0x80E4, 0xAD4F, 0x80DD, 0xAD50, 0x81F4, 0xAD51, 0x8222,
+	0xAD52, 0x82E7, 0xAD53, 0x8303, 0xAD54, 0x8305, 0xAD55, 0x82E3,
+	0xAD56, 0x82DB, 0xAD57, 0x82E6, 0xAD58, 0x8304, 0xAD59, 0x82E5,
+	0xAD5A, 0x8302, 0xAD5B, 0x8309, 0xAD5C, 0x82D2, 0xAD5D, 0x82D7,
+	0xAD5E, 0x82F1, 0xAD5F, 0x8301, 0xAD60, 0x82DC, 0xAD61, 0x82D4,
+	0xAD62, 0x82D1, 0xAD63, 0x82DE, 0xAD64, 0x82D3, 0xAD65, 0x82DF,
+	0xAD66, 0x82EF, 0xAD67, 0x8306, 0xAD68, 0x8650, 0xAD69, 0x8679,
+	0xAD6A, 0x867B, 0xAD6B, 0x867A, 0xAD6C, 0x884D, 0xAD6D, 0x886B,
+	0xAD6E, 0x8981, 0xAD6F, 0x89D4, 0xAD70, 0x8A08, 0xAD71, 0x8A02,
+	0xAD72, 0x8A03, 0xAD73, 0x8C9E, 0xAD74, 0x8CA0, 0xAD75, 0x8D74,
+	0xAD76, 0x8D73, 0xAD77, 0x8DB4, 0xAD78, 0x8ECD, 0xAD79, 0x8ECC,
+	0xAD7A, 0x8FF0, 0xAD7B, 0x8FE6, 0xAD7C, 0x8FE2, 0xAD7D, 0x8FEA,
+	0xAD7E, 0x8FE5, 0xADA1, 0x8FED, 0xADA2, 0x8FEB, 0xADA3, 0x8FE4,
+	0xADA4, 0x8FE8, 0xADA5, 0x90CA, 0xADA6, 0x90CE, 0xADA7, 0x90C1,
+	0xADA8, 0x90C3, 0xADA9, 0x914B, 0xADAA, 0x914A, 0xADAB, 0x91CD,
+	0xADAC, 0x9582, 0xADAD, 0x9650, 0xADAE, 0x964B, 0xADAF, 0x964C,
+	0xADB0, 0x964D, 0xADB1, 0x9762, 0xADB2, 0x9769, 0xADB3, 0x97CB,
+	0xADB4, 0x97ED, 0xADB5, 0x97F3, 0xADB6, 0x9801, 0xADB7, 0x98A8,
+	0xADB8, 0x98DB, 0xADB9, 0x98DF, 0xADBA, 0x9996, 0xADBB, 0x9999,
+	0xADBC, 0x4E58, 0xADBD, 0x4EB3, 0xADBE, 0x500C, 0xADBF, 0x500D,
+	0xADC0, 0x5023, 0xADC1, 0x4FEF, 0xADC2, 0x5026, 0xADC3, 0x5025,
+	0xADC4, 0x4FF8, 0xADC5, 0x5029, 0xADC6, 0x5016, 0xADC7, 0x5006,
+	0xADC8, 0x503C, 0xADC9, 0x501F, 0xADCA, 0x501A, 0xADCB, 0x5012,
+	0xADCC, 0x5011, 0xADCD, 0x4FFA, 0xADCE, 0x5000, 0xADCF, 0x5014,
+	0xADD0, 0x5028, 0xADD1, 0x4FF1, 0xADD2, 0x5021, 0xADD3, 0x500B,
+	0xADD4, 0x5019, 0xADD5, 0x5018, 0xADD6, 0x4FF3, 0xADD7, 0x4FEE,
+	0xADD8, 0x502D, 0xADD9, 0x502A, 0xADDA, 0x4FFE, 0xADDB, 0x502B,
+	0xADDC, 0x5009, 0xADDD, 0x517C, 0xADDE, 0x51A4, 0xADDF, 0x51A5,
+	0xADE0, 0x51A2, 0xADE1, 0x51CD, 0xADE2, 0x51CC, 0xADE3, 0x51C6,
+	0xADE4, 0x51CB, 0xADE5, 0x5256, 0xADE6, 0x525C, 0xADE7, 0x5254,
+	0xADE8, 0x525B, 0xADE9, 0x525D, 0xADEA, 0x532A, 0xADEB, 0x537F,
+	0xADEC, 0x539F, 0xADED, 0x539D, 0xADEE, 0x53DF, 0xADEF, 0x54E8,
+	0xADF0, 0x5510, 0xADF1, 0x5501, 0xADF2, 0x5537, 0xADF3, 0x54FC,
+	0xADF4, 0x54E5, 0xADF5, 0x54F2, 0xADF6, 0x5506, 0xADF7, 0x54FA,
+	0xADF8, 0x5514, 0xADF9, 0x54E9, 0xADFA, 0x54ED, 0xADFB, 0x54E1,
+	0xADFC, 0x5509, 0xADFD, 0x54EE, 0xADFE, 0x54EA, 0xAE40, 0x54E6,
+	0xAE41, 0x5527, 0xAE42, 0x5507, 0xAE43, 0x54FD, 0xAE44, 0x550F,
+	0xAE45, 0x5703, 0xAE46, 0x5704, 0xAE47, 0x57C2, 0xAE48, 0x57D4,
+	0xAE49, 0x57CB, 0xAE4A, 0x57C3, 0xAE4B, 0x5809, 0xAE4C, 0x590F,
+	0xAE4D, 0x5957, 0xAE4E, 0x5958, 0xAE4F, 0x595A, 0xAE50, 0x5A11,
+	0xAE51, 0x5A18, 0xAE52, 0x5A1C, 0xAE53, 0x5A1F, 0xAE54, 0x5A1B,
+	0xAE55, 0x5A13, 0xAE56, 0x59EC, 0xAE57, 0x5A20, 0xAE58, 0x5A23,
+	0xAE59, 0x5A29, 0xAE5A, 0x5A25, 0xAE5B, 0x5A0C, 0xAE5C, 0x5A09,
+	0xAE5D, 0x5B6B, 0xAE5E, 0x5C58, 0xAE5F, 0x5BB0, 0xAE60, 0x5BB3,
+	0xAE61, 0x5BB6, 0xAE62, 0x5BB4, 0xAE63, 0x5BAE, 0xAE64, 0x5BB5,
+	0xAE65, 0x5BB9, 0xAE66, 0x5BB8, 0xAE67, 0x5C04, 0xAE68, 0x5C51,
+	0xAE69, 0x5C55, 0xAE6A, 0x5C50, 0xAE6B, 0x5CED, 0xAE6C, 0x5CFD,
+	0xAE6D, 0x5CFB, 0xAE6E, 0x5CEA, 0xAE6F, 0x5CE8, 0xAE70, 0x5CF0,
+	0xAE71, 0x5CF6, 0xAE72, 0x5D01, 0xAE73, 0x5CF4, 0xAE74, 0x5DEE,
+	0xAE75, 0x5E2D, 0xAE76, 0x5E2B, 0xAE77, 0x5EAB, 0xAE78, 0x5EAD,
+	0xAE79, 0x5EA7, 0xAE7A, 0x5F31, 0xAE7B, 0x5F92, 0xAE7C, 0x5F91,
+	0xAE7D, 0x5F90, 0xAE7E, 0x6059, 0xAEA1, 0x6063, 0xAEA2, 0x6065,
+	0xAEA3, 0x6050, 0xAEA4, 0x6055, 0xAEA5, 0x606D, 0xAEA6, 0x6069,
+	0xAEA7, 0x606F, 0xAEA8, 0x6084, 0xAEA9, 0x609F, 0xAEAA, 0x609A,
+	0xAEAB, 0x608D, 0xAEAC, 0x6094, 0xAEAD, 0x608C, 0xAEAE, 0x6085,
+	0xAEAF, 0x6096, 0xAEB0, 0x6247, 0xAEB1, 0x62F3, 0xAEB2, 0x6308,
+	0xAEB3, 0x62FF, 0xAEB4, 0x634E, 0xAEB5, 0x633E, 0xAEB6, 0x632F,
+	0xAEB7, 0x6355, 0xAEB8, 0x6342, 0xAEB9, 0x6346, 0xAEBA, 0x634F,
+	0xAEBB, 0x6349, 0xAEBC, 0x633A, 0xAEBD, 0x6350, 0xAEBE, 0x633D,
+	0xAEBF, 0x632A, 0xAEC0, 0x632B, 0xAEC1, 0x6328, 0xAEC2, 0x634D,
+	0xAEC3, 0x634C, 0xAEC4, 0x6548, 0xAEC5, 0x6549, 0xAEC6, 0x6599,
+	0xAEC7, 0x65C1, 0xAEC8, 0x65C5, 0xAEC9, 0x6642, 0xAECA, 0x6649,
+	0xAECB, 0x664F, 0xAECC, 0x6643, 0xAECD, 0x6652, 0xAECE, 0x664C,
+	0xAECF, 0x6645, 0xAED0, 0x6641, 0xAED1, 0x66F8, 0xAED2, 0x6714,
+	0xAED3, 0x6715, 0xAED4, 0x6717, 0xAED5, 0x6821, 0xAED6, 0x6838,
+	0xAED7, 0x6848, 0xAED8, 0x6846, 0xAED9, 0x6853, 0xAEDA, 0x6839,
+	0xAEDB, 0x6842, 0xAEDC, 0x6854, 0xAEDD, 0x6829, 0xAEDE, 0x68B3,
+	0xAEDF, 0x6817, 0xAEE0, 0x684C, 0xAEE1, 0x6851, 0xAEE2, 0x683D,
+	0xAEE3, 0x67F4, 0xAEE4, 0x6850, 0xAEE5, 0x6840, 0xAEE6, 0x683C,
+	0xAEE7, 0x6843, 0xAEE8, 0x682A, 0xAEE9, 0x6845, 0xAEEA, 0x6813,
+	0xAEEB, 0x6818, 0xAEEC, 0x6841, 0xAEED, 0x6B8A, 0xAEEE, 0x6B89,
+	0xAEEF, 0x6BB7, 0xAEF0, 0x6C23, 0xAEF1, 0x6C27, 0xAEF2, 0x6C28,
+	0xAEF3, 0x6C26, 0xAEF4, 0x6C24, 0xAEF5, 0x6CF0, 0xAEF6, 0x6D6A,
+	0xAEF7, 0x6D95, 0xAEF8, 0x6D88, 0xAEF9, 0x6D87, 0xAEFA, 0x6D66,
+	0xAEFB, 0x6D78, 0xAEFC, 0x6D77, 0xAEFD, 0x6D59, 0xAEFE, 0x6D93,
+	0xAF40, 0x6D6C, 0xAF41, 0x6D89, 0xAF42, 0x6D6E, 0xAF43, 0x6D5A,
+	0xAF44, 0x6D74, 0xAF45, 0x6D69, 0xAF46, 0x6D8C, 0xAF47, 0x6D8A,
+	0xAF48, 0x6D79, 0xAF49, 0x6D85, 0xAF4A, 0x6D65, 0xAF4B, 0x6D94,
+	0xAF4C, 0x70CA, 0xAF4D, 0x70D8, 0xAF4E, 0x70E4, 0xAF4F, 0x70D9,
+	0xAF50, 0x70C8, 0xAF51, 0x70CF, 0xAF52, 0x7239, 0xAF53, 0x7279,
+	0xAF54, 0x72FC, 0xAF55, 0x72F9, 0xAF56, 0x72FD, 0xAF57, 0x72F8,
+	0xAF58, 0x72F7, 0xAF59, 0x7386, 0xAF5A, 0x73ED, 0xAF5B, 0x7409,
+	0xAF5C, 0x73EE, 0xAF5D, 0x73E0, 0xAF5E, 0x73EA, 0xAF5F, 0x73DE,
+	0xAF60, 0x7554, 0xAF61, 0x755D, 0xAF62, 0x755C, 0xAF63, 0x755A,
+	0xAF64, 0x7559, 0xAF65, 0x75BE, 0xAF66, 0x75C5, 0xAF67, 0x75C7,
+	0xAF68, 0x75B2, 0xAF69, 0x75B3, 0xAF6A, 0x75BD, 0xAF6B, 0x75BC,
+	0xAF6C, 0x75B9, 0xAF6D, 0x75C2, 0xAF6E, 0x75B8, 0xAF6F, 0x768B,
+	0xAF70, 0x76B0, 0xAF71, 0x76CA, 0xAF72, 0x76CD, 0xAF73, 0x76CE,
+	0xAF74, 0x7729, 0xAF75, 0x771F, 0xAF76, 0x7720, 0xAF77, 0x7728,
+	0xAF78, 0x77E9, 0xAF79, 0x7830, 0xAF7A, 0x7827, 0xAF7B, 0x7838,
+	0xAF7C, 0x781D, 0xAF7D, 0x7834, 0xAF7E, 0x7837, 0xAFA1, 0x7825,
+	0xAFA2, 0x782D, 0xAFA3, 0x7820, 0xAFA4, 0x781F, 0xAFA5, 0x7832,
+	0xAFA6, 0x7955, 0xAFA7, 0x7950, 0xAFA8, 0x7960, 0xAFA9, 0x795F,
+	0xAFAA, 0x7956, 0xAFAB, 0x795E, 0xAFAC, 0x795D, 0xAFAD, 0x7957,
+	0xAFAE, 0x795A, 0xAFAF, 0x79E4, 0xAFB0, 0x79E3, 0xAFB1, 0x79E7,
+	0xAFB2, 0x79DF, 0xAFB3, 0x79E6, 0xAFB4, 0x79E9, 0xAFB5, 0x79D8,
+	0xAFB6, 0x7A84, 0xAFB7, 0x7A88, 0xAFB8, 0x7AD9, 0xAFB9, 0x7B06,
+	0xAFBA, 0x7B11, 0xAFBB, 0x7C89, 0xAFBC, 0x7D21, 0xAFBD, 0x7D17,
+	0xAFBE, 0x7D0B, 0xAFBF, 0x7D0A, 0xAFC0, 0x7D20, 0xAFC1, 0x7D22,
+	0xAFC2, 0x7D14, 0xAFC3, 0x7D10, 0xAFC4, 0x7D15, 0xAFC5, 0x7D1A,
+	0xAFC6, 0x7D1C, 0xAFC7, 0x7D0D, 0xAFC8, 0x7D19, 0xAFC9, 0x7D1B,
+	0xAFCA, 0x7F3A, 0xAFCB, 0x7F5F, 0xAFCC, 0x7F94, 0xAFCD, 0x7FC5,
+	0xAFCE, 0x7FC1, 0xAFCF, 0x8006, 0xAFD0, 0x8018, 0xAFD1, 0x8015,
+	0xAFD2, 0x8019, 0xAFD3, 0x8017, 0xAFD4, 0x803D, 0xAFD5, 0x803F,
+	0xAFD6, 0x80F1, 0xAFD7, 0x8102, 0xAFD8, 0x80F0, 0xAFD9, 0x8105,
+	0xAFDA, 0x80ED, 0xAFDB, 0x80F4, 0xAFDC, 0x8106, 0xAFDD, 0x80F8,
+	0xAFDE, 0x80F3, 0xAFDF, 0x8108, 0xAFE0, 0x80FD, 0xAFE1, 0x810A,
+	0xAFE2, 0x80FC, 0xAFE3, 0x80EF, 0xAFE4, 0x81ED, 0xAFE5, 0x81EC,
+	0xAFE6, 0x8200, 0xAFE7, 0x8210, 0xAFE8, 0x822A, 0xAFE9, 0x822B,
+	0xAFEA, 0x8228, 0xAFEB, 0x822C, 0xAFEC, 0x82BB, 0xAFED, 0x832B,
+	0xAFEE, 0x8352, 0xAFEF, 0x8354, 0xAFF0, 0x834A, 0xAFF1, 0x8338,
+	0xAFF2, 0x8350, 0xAFF3, 0x8349, 0xAFF4, 0x8335, 0xAFF5, 0x8334,
+	0xAFF6, 0x834F, 0xAFF7, 0x8332, 0xAFF8, 0x8339, 0xAFF9, 0x8336,
+	0xAFFA, 0x8317, 0xAFFB, 0x8340, 0xAFFC, 0x8331, 0xAFFD, 0x8328,
+	0xAFFE, 0x8343, 0xB040, 0x8654, 0xB041, 0x868A, 0xB042, 0x86AA,
+	0xB043, 0x8693, 0xB044, 0x86A4, 0xB045, 0x86A9, 0xB046, 0x868C,
+	0xB047, 0x86A3, 0xB048, 0x869C, 0xB049, 0x8870, 0xB04A, 0x8877,
+	0xB04B, 0x8881, 0xB04C, 0x8882, 0xB04D, 0x887D, 0xB04E, 0x8879,
+	0xB04F, 0x8A18, 0xB050, 0x8A10, 0xB051, 0x8A0E, 0xB052, 0x8A0C,
+	0xB053, 0x8A15, 0xB054, 0x8A0A, 0xB055, 0x8A17, 0xB056, 0x8A13,
+	0xB057, 0x8A16, 0xB058, 0x8A0F, 0xB059, 0x8A11, 0xB05A, 0x8C48,
+	0xB05B, 0x8C7A, 0xB05C, 0x8C79, 0xB05D, 0x8CA1, 0xB05E, 0x8CA2,
+	0xB05F, 0x8D77, 0xB060, 0x8EAC, 0xB061, 0x8ED2, 0xB062, 0x8ED4,
+	0xB063, 0x8ECF, 0xB064, 0x8FB1, 0xB065, 0x9001, 0xB066, 0x9006,
+	0xB067, 0x8FF7, 0xB068, 0x9000, 0xB069, 0x8FFA, 0xB06A, 0x8FF4,
+	0xB06B, 0x9003, 0xB06C, 0x8FFD, 0xB06D, 0x9005, 0xB06E, 0x8FF8,
+	0xB06F, 0x9095, 0xB070, 0x90E1, 0xB071, 0x90DD, 0xB072, 0x90E2,
+	0xB073, 0x9152, 0xB074, 0x914D, 0xB075, 0x914C, 0xB076, 0x91D8,
+	0xB077, 0x91DD, 0xB078, 0x91D7, 0xB079, 0x91DC, 0xB07A, 0x91D9,
+	0xB07B, 0x9583, 0xB07C, 0x9662, 0xB07D, 0x9663, 0xB07E, 0x9661,
+	0xB0A1, 0x965B, 0xB0A2, 0x965D, 0xB0A3, 0x9664, 0xB0A4, 0x9658,
+	0xB0A5, 0x965E, 0xB0A6, 0x96BB, 0xB0A7, 0x98E2, 0xB0A8, 0x99AC,
+	0xB0A9, 0x9AA8, 0xB0AA, 0x9AD8, 0xB0AB, 0x9B25, 0xB0AC, 0x9B32,
+	0xB0AD, 0x9B3C, 0xB0AE, 0x4E7E, 0xB0AF, 0x507A, 0xB0B0, 0x507D,
+	0xB0B1, 0x505C, 0xB0B2, 0x5047, 0xB0B3, 0x5043, 0xB0B4, 0x504C,
+	0xB0B5, 0x505A, 0xB0B6, 0x5049, 0xB0B7, 0x5065, 0xB0B8, 0x5076,
+	0xB0B9, 0x504E, 0xB0BA, 0x5055, 0xB0BB, 0x5075, 0xB0BC, 0x5074,
+	0xB0BD, 0x5077, 0xB0BE, 0x504F, 0xB0BF, 0x500F, 0xB0C0, 0x506F,
+	0xB0C1, 0x506D, 0xB0C2, 0x515C, 0xB0C3, 0x5195, 0xB0C4, 0x51F0,
+	0xB0C5, 0x526A, 0xB0C6, 0x526F, 0xB0C7, 0x52D2, 0xB0C8, 0x52D9,
+	0xB0C9, 0x52D8, 0xB0CA, 0x52D5, 0xB0CB, 0x5310, 0xB0CC, 0x530F,
+	0xB0CD, 0x5319, 0xB0CE, 0x533F, 0xB0CF, 0x5340, 0xB0D0, 0x533E,
+	0xB0D1, 0x53C3, 0xB0D2, 0x66FC, 0xB0D3, 0x5546, 0xB0D4, 0x556A,
+	0xB0D5, 0x5566, 0xB0D6, 0x5544, 0xB0D7, 0x555E, 0xB0D8, 0x5561,
+	0xB0D9, 0x5543, 0xB0DA, 0x554A, 0xB0DB, 0x5531, 0xB0DC, 0x5556,
+	0xB0DD, 0x554F, 0xB0DE, 0x5555, 0xB0DF, 0x552F, 0xB0E0, 0x5564,
+	0xB0E1, 0x5538, 0xB0E2, 0x552E, 0xB0E3, 0x555C, 0xB0E4, 0x552C,
+	0xB0E5, 0x5563, 0xB0E6, 0x5533, 0xB0E7, 0x5541, 0xB0E8, 0x5557,
+	0xB0E9, 0x5708, 0xB0EA, 0x570B, 0xB0EB, 0x5709, 0xB0EC, 0x57DF,
+	0xB0ED, 0x5805, 0xB0EE, 0x580A, 0xB0EF, 0x5806, 0xB0F0, 0x57E0,
+	0xB0F1, 0x57E4, 0xB0F2, 0x57FA, 0xB0F3, 0x5802, 0xB0F4, 0x5835,
+	0xB0F5, 0x57F7, 0xB0F6, 0x57F9, 0xB0F7, 0x5920, 0xB0F8, 0x5962,
+	0xB0F9, 0x5A36, 0xB0FA, 0x5A41, 0xB0FB, 0x5A49, 0xB0FC, 0x5A66,
+	0xB0FD, 0x5A6A, 0xB0FE, 0x5A40, 0xB140, 0x5A3C, 0xB141, 0x5A62,
+	0xB142, 0x5A5A, 0xB143, 0x5A46, 0xB144, 0x5A4A, 0xB145, 0x5B70,
+	0xB146, 0x5BC7, 0xB147, 0x5BC5, 0xB148, 0x5BC4, 0xB149, 0x5BC2,
+	0xB14A, 0x5BBF, 0xB14B, 0x5BC6, 0xB14C, 0x5C09, 0xB14D, 0x5C08,
+	0xB14E, 0x5C07, 0xB14F, 0x5C60, 0xB150, 0x5C5C, 0xB151, 0x5C5D,
+	0xB152, 0x5D07, 0xB153, 0x5D06, 0xB154, 0x5D0E, 0xB155, 0x5D1B,
+	0xB156, 0x5D16, 0xB157, 0x5D22, 0xB158, 0x5D11, 0xB159, 0x5D29,
+	0xB15A, 0x5D14, 0xB15B, 0x5D19, 0xB15C, 0x5D24, 0xB15D, 0x5D27,
+	0xB15E, 0x5D17, 0xB15F, 0x5DE2, 0xB160, 0x5E38, 0xB161, 0x5E36,
+	0xB162, 0x5E33, 0xB163, 0x5E37, 0xB164, 0x5EB7, 0xB165, 0x5EB8,
+	0xB166, 0x5EB6, 0xB167, 0x5EB5, 0xB168, 0x5EBE, 0xB169, 0x5F35,
+	0xB16A, 0x5F37, 0xB16B, 0x5F57, 0xB16C, 0x5F6C, 0xB16D, 0x5F69,
+	0xB16E, 0x5F6B, 0xB16F, 0x5F97, 0xB170, 0x5F99, 0xB171, 0x5F9E,
+	0xB172, 0x5F98, 0xB173, 0x5FA1, 0xB174, 0x5FA0, 0xB175, 0x5F9C,
+	0xB176, 0x607F, 0xB177, 0x60A3, 0xB178, 0x6089, 0xB179, 0x60A0,
+	0xB17A, 0x60A8, 0xB17B, 0x60CB, 0xB17C, 0x60B4, 0xB17D, 0x60E6,
+	0xB17E, 0x60BD, 0xB1A1, 0x60C5, 0xB1A2, 0x60BB, 0xB1A3, 0x60B5,
+	0xB1A4, 0x60DC, 0xB1A5, 0x60BC, 0xB1A6, 0x60D8, 0xB1A7, 0x60D5,
+	0xB1A8, 0x60C6, 0xB1A9, 0x60DF, 0xB1AA, 0x60B8, 0xB1AB, 0x60DA,
+	0xB1AC, 0x60C7, 0xB1AD, 0x621A, 0xB1AE, 0x621B, 0xB1AF, 0x6248,
+	0xB1B0, 0x63A0, 0xB1B1, 0x63A7, 0xB1B2, 0x6372, 0xB1B3, 0x6396,
+	0xB1B4, 0x63A2, 0xB1B5, 0x63A5, 0xB1B6, 0x6377, 0xB1B7, 0x6367,
+	0xB1B8, 0x6398, 0xB1B9, 0x63AA, 0xB1BA, 0x6371, 0xB1BB, 0x63A9,
+	0xB1BC, 0x6389, 0xB1BD, 0x6383, 0xB1BE, 0x639B, 0xB1BF, 0x636B,
+	0xB1C0, 0x63A8, 0xB1C1, 0x6384, 0xB1C2, 0x6388, 0xB1C3, 0x6399,
+	0xB1C4, 0x63A1, 0xB1C5, 0x63AC, 0xB1C6, 0x6392, 0xB1C7, 0x638F,
+	0xB1C8, 0x6380, 0xB1C9, 0x637B, 0xB1CA, 0x6369, 0xB1CB, 0x6368,
+	0xB1CC, 0x637A, 0xB1CD, 0x655D, 0xB1CE, 0x6556, 0xB1CF, 0x6551,
+	0xB1D0, 0x6559, 0xB1D1, 0x6557, 0xB1D2, 0x555F, 0xB1D3, 0x654F,
+	0xB1D4, 0x6558, 0xB1D5, 0x6555, 0xB1D6, 0x6554, 0xB1D7, 0x659C,
+	0xB1D8, 0x659B, 0xB1D9, 0x65AC, 0xB1DA, 0x65CF, 0xB1DB, 0x65CB,
+	0xB1DC, 0x65CC, 0xB1DD, 0x65CE, 0xB1DE, 0x665D, 0xB1DF, 0x665A,
+	0xB1E0, 0x6664, 0xB1E1, 0x6668, 0xB1E2, 0x6666, 0xB1E3, 0x665E,
+	0xB1E4, 0x66F9, 0xB1E5, 0x52D7, 0xB1E6, 0x671B, 0xB1E7, 0x6881,
+	0xB1E8, 0x68AF, 0xB1E9, 0x68A2, 0xB1EA, 0x6893, 0xB1EB, 0x68B5,
+	0xB1EC, 0x687F, 0xB1ED, 0x6876, 0xB1EE, 0x68B1, 0xB1EF, 0x68A7,
+	0xB1F0, 0x6897, 0xB1F1, 0x68B0, 0xB1F2, 0x6883, 0xB1F3, 0x68C4,
+	0xB1F4, 0x68AD, 0xB1F5, 0x6886, 0xB1F6, 0x6885, 0xB1F7, 0x6894,
+	0xB1F8, 0x689D, 0xB1F9, 0x68A8, 0xB1FA, 0x689F, 0xB1FB, 0x68A1,
+	0xB1FC, 0x6882, 0xB1FD, 0x6B32, 0xB1FE, 0x6BBA, 0xB240, 0x6BEB,
+	0xB241, 0x6BEC, 0xB242, 0x6C2B, 0xB243, 0x6D8E, 0xB244, 0x6DBC,
+	0xB245, 0x6DF3, 0xB246, 0x6DD9, 0xB247, 0x6DB2, 0xB248, 0x6DE1,
+	0xB249, 0x6DCC, 0xB24A, 0x6DE4, 0xB24B, 0x6DFB, 0xB24C, 0x6DFA,
+	0xB24D, 0x6E05, 0xB24E, 0x6DC7, 0xB24F, 0x6DCB, 0xB250, 0x6DAF,
+	0xB251, 0x6DD1, 0xB252, 0x6DAE, 0xB253, 0x6DDE, 0xB254, 0x6DF9,
+	0xB255, 0x6DB8, 0xB256, 0x6DF7, 0xB257, 0x6DF5, 0xB258, 0x6DC5,
+	0xB259, 0x6DD2, 0xB25A, 0x6E1A, 0xB25B, 0x6DB5, 0xB25C, 0x6DDA,
+	0xB25D, 0x6DEB, 0xB25E, 0x6DD8, 0xB25F, 0x6DEA, 0xB260, 0x6DF1,
+	0xB261, 0x6DEE, 0xB262, 0x6DE8, 0xB263, 0x6DC6, 0xB264, 0x6DC4,
+	0xB265, 0x6DAA, 0xB266, 0x6DEC, 0xB267, 0x6DBF, 0xB268, 0x6DE6,
+	0xB269, 0x70F9, 0xB26A, 0x7109, 0xB26B, 0x710A, 0xB26C, 0x70FD,
+	0xB26D, 0x70EF, 0xB26E, 0x723D, 0xB26F, 0x727D, 0xB270, 0x7281,
+	0xB271, 0x731C, 0xB272, 0x731B, 0xB273, 0x7316, 0xB274, 0x7313,
+	0xB275, 0x7319, 0xB276, 0x7387, 0xB277, 0x7405, 0xB278, 0x740A,
+	0xB279, 0x7403, 0xB27A, 0x7406, 0xB27B, 0x73FE, 0xB27C, 0x740D,
+	0xB27D, 0x74E0, 0xB27E, 0x74F6, 0xB2A1, 0x74F7, 0xB2A2, 0x751C,
+	0xB2A3, 0x7522, 0xB2A4, 0x7565, 0xB2A5, 0x7566, 0xB2A6, 0x7562,
+	0xB2A7, 0x7570, 0xB2A8, 0x758F, 0xB2A9, 0x75D4, 0xB2AA, 0x75D5,
+	0xB2AB, 0x75B5, 0xB2AC, 0x75CA, 0xB2AD, 0x75CD, 0xB2AE, 0x768E,
+	0xB2AF, 0x76D4, 0xB2B0, 0x76D2, 0xB2B1, 0x76DB, 0xB2B2, 0x7737,
+	0xB2B3, 0x773E, 0xB2B4, 0x773C, 0xB2B5, 0x7736, 0xB2B6, 0x7738,
+	0xB2B7, 0x773A, 0xB2B8, 0x786B, 0xB2B9, 0x7843, 0xB2BA, 0x784E,
+	0xB2BB, 0x7965, 0xB2BC, 0x7968, 0xB2BD, 0x796D, 0xB2BE, 0x79FB,
+	0xB2BF, 0x7A92, 0xB2C0, 0x7A95, 0xB2C1, 0x7B20, 0xB2C2, 0x7B28,
+	0xB2C3, 0x7B1B, 0xB2C4, 0x7B2C, 0xB2C5, 0x7B26, 0xB2C6, 0x7B19,
+	0xB2C7, 0x7B1E, 0xB2C8, 0x7B2E, 0xB2C9, 0x7C92, 0xB2CA, 0x7C97,
+	0xB2CB, 0x7C95, 0xB2CC, 0x7D46, 0xB2CD, 0x7D43, 0xB2CE, 0x7D71,
+	0xB2CF, 0x7D2E, 0xB2D0, 0x7D39, 0xB2D1, 0x7D3C, 0xB2D2, 0x7D40,
+	0xB2D3, 0x7D30, 0xB2D4, 0x7D33, 0xB2D5, 0x7D44, 0xB2D6, 0x7D2F,
+	0xB2D7, 0x7D42, 0xB2D8, 0x7D32, 0xB2D9, 0x7D31, 0xB2DA, 0x7F3D,
+	0xB2DB, 0x7F9E, 0xB2DC, 0x7F9A, 0xB2DD, 0x7FCC, 0xB2DE, 0x7FCE,
+	0xB2DF, 0x7FD2, 0xB2E0, 0x801C, 0xB2E1, 0x804A, 0xB2E2, 0x8046,
+	0xB2E3, 0x812F, 0xB2E4, 0x8116, 0xB2E5, 0x8123, 0xB2E6, 0x812B,
+	0xB2E7, 0x8129, 0xB2E8, 0x8130, 0xB2E9, 0x8124, 0xB2EA, 0x8202,
+	0xB2EB, 0x8235, 0xB2EC, 0x8237, 0xB2ED, 0x8236, 0xB2EE, 0x8239,
+	0xB2EF, 0x838E, 0xB2F0, 0x839E, 0xB2F1, 0x8398, 0xB2F2, 0x8378,
+	0xB2F3, 0x83A2, 0xB2F4, 0x8396, 0xB2F5, 0x83BD, 0xB2F6, 0x83AB,
+	0xB2F7, 0x8392, 0xB2F8, 0x838A, 0xB2F9, 0x8393, 0xB2FA, 0x8389,
+	0xB2FB, 0x83A0, 0xB2FC, 0x8377, 0xB2FD, 0x837B, 0xB2FE, 0x837C,
+	0xB340, 0x8386, 0xB341, 0x83A7, 0xB342, 0x8655, 0xB343, 0x5F6A,
+	0xB344, 0x86C7, 0xB345, 0x86C0, 0xB346, 0x86B6, 0xB347, 0x86C4,
+	0xB348, 0x86B5, 0xB349, 0x86C6, 0xB34A, 0x86CB, 0xB34B, 0x86B1,
+	0xB34C, 0x86AF, 0xB34D, 0x86C9, 0xB34E, 0x8853, 0xB34F, 0x889E,
+	0xB350, 0x8888, 0xB351, 0x88AB, 0xB352, 0x8892, 0xB353, 0x8896,
+	0xB354, 0x888D, 0xB355, 0x888B, 0xB356, 0x8993, 0xB357, 0x898F,
+	0xB358, 0x8A2A, 0xB359, 0x8A1D, 0xB35A, 0x8A23, 0xB35B, 0x8A25,
+	0xB35C, 0x8A31, 0xB35D, 0x8A2D, 0xB35E, 0x8A1F, 0xB35F, 0x8A1B,
+	0xB360, 0x8A22, 0xB361, 0x8C49, 0xB362, 0x8C5A, 0xB363, 0x8CA9,
+	0xB364, 0x8CAC, 0xB365, 0x8CAB, 0xB366, 0x8CA8, 0xB367, 0x8CAA,
+	0xB368, 0x8CA7, 0xB369, 0x8D67, 0xB36A, 0x8D66, 0xB36B, 0x8DBE,
+	0xB36C, 0x8DBA, 0xB36D, 0x8EDB, 0xB36E, 0x8EDF, 0xB36F, 0x9019,
+	0xB370, 0x900D, 0xB371, 0x901A, 0xB372, 0x9017, 0xB373, 0x9023,
+	0xB374, 0x901F, 0xB375, 0x901D, 0xB376, 0x9010, 0xB377, 0x9015,
+	0xB378, 0x901E, 0xB379, 0x9020, 0xB37A, 0x900F, 0xB37B, 0x9022,
+	0xB37C, 0x9016, 0xB37D, 0x901B, 0xB37E, 0x9014, 0xB3A1, 0x90E8,
+	0xB3A2, 0x90ED, 0xB3A3, 0x90FD, 0xB3A4, 0x9157, 0xB3A5, 0x91CE,
+	0xB3A6, 0x91F5, 0xB3A7, 0x91E6, 0xB3A8, 0x91E3, 0xB3A9, 0x91E7,
+	0xB3AA, 0x91ED, 0xB3AB, 0x91E9, 0xB3AC, 0x9589, 0xB3AD, 0x966A,
+	0xB3AE, 0x9675, 0xB3AF, 0x9673, 0xB3B0, 0x9678, 0xB3B1, 0x9670,
+	0xB3B2, 0x9674, 0xB3B3, 0x9676, 0xB3B4, 0x9677, 0xB3B5, 0x966C,
+	0xB3B6, 0x96C0, 0xB3B7, 0x96EA, 0xB3B8, 0x96E9, 0xB3B9, 0x7AE0,
+	0xB3BA, 0x7ADF, 0xB3BB, 0x9802, 0xB3BC, 0x9803, 0xB3BD, 0x9B5A,
+	0xB3BE, 0x9CE5, 0xB3BF, 0x9E75, 0xB3C0, 0x9E7F, 0xB3C1, 0x9EA5,
+	0xB3C2, 0x9EBB, 0xB3C3, 0x50A2, 0xB3C4, 0x508D, 0xB3C5, 0x5085,
+	0xB3C6, 0x5099, 0xB3C7, 0x5091, 0xB3C8, 0x5080, 0xB3C9, 0x5096,
+	0xB3CA, 0x5098, 0xB3CB, 0x509A, 0xB3CC, 0x6700, 0xB3CD, 0x51F1,
+	0xB3CE, 0x5272, 0xB3CF, 0x5274, 0xB3D0, 0x5275, 0xB3D1, 0x5269,
+	0xB3D2, 0x52DE, 0xB3D3, 0x52DD, 0xB3D4, 0x52DB, 0xB3D5, 0x535A,
+	0xB3D6, 0x53A5, 0xB3D7, 0x557B, 0xB3D8, 0x5580, 0xB3D9, 0x55A7,
+	0xB3DA, 0x557C, 0xB3DB, 0x558A, 0xB3DC, 0x559D, 0xB3DD, 0x5598,
+	0xB3DE, 0x5582, 0xB3DF, 0x559C, 0xB3E0, 0x55AA, 0xB3E1, 0x5594,
+	0xB3E2, 0x5587, 0xB3E3, 0x558B, 0xB3E4, 0x5583, 0xB3E5, 0x55B3,
+	0xB3E6, 0x55AE, 0xB3E7, 0x559F, 0xB3E8, 0x553E, 0xB3E9, 0x55B2,
+	0xB3EA, 0x559A, 0xB3EB, 0x55BB, 0xB3EC, 0x55AC, 0xB3ED, 0x55B1,
+	0xB3EE, 0x557E, 0xB3EF, 0x5589, 0xB3F0, 0x55AB, 0xB3F1, 0x5599,
+	0xB3F2, 0x570D, 0xB3F3, 0x582F, 0xB3F4, 0x582A, 0xB3F5, 0x5834,
+	0xB3F6, 0x5824, 0xB3F7, 0x5830, 0xB3F8, 0x5831, 0xB3F9, 0x5821,
+	0xB3FA, 0x581D, 0xB3FB, 0x5820, 0xB3FC, 0x58F9, 0xB3FD, 0x58FA,
+	0xB3FE, 0x5960, 0xB440, 0x5A77, 0xB441, 0x5A9A, 0xB442, 0x5A7F,
+	0xB443, 0x5A92, 0xB444, 0x5A9B, 0xB445, 0x5AA7, 0xB446, 0x5B73,
+	0xB447, 0x5B71, 0xB448, 0x5BD2, 0xB449, 0x5BCC, 0xB44A, 0x5BD3,
+	0xB44B, 0x5BD0, 0xB44C, 0x5C0A, 0xB44D, 0x5C0B, 0xB44E, 0x5C31,
+	0xB44F, 0x5D4C, 0xB450, 0x5D50, 0xB451, 0x5D34, 0xB452, 0x5D47,
+	0xB453, 0x5DFD, 0xB454, 0x5E45, 0xB455, 0x5E3D, 0xB456, 0x5E40,
+	0xB457, 0x5E43, 0xB458, 0x5E7E, 0xB459, 0x5ECA, 0xB45A, 0x5EC1,
+	0xB45B, 0x5EC2, 0xB45C, 0x5EC4, 0xB45D, 0x5F3C, 0xB45E, 0x5F6D,
+	0xB45F, 0x5FA9, 0xB460, 0x5FAA, 0xB461, 0x5FA8, 0xB462, 0x60D1,
+	0xB463, 0x60E1, 0xB464, 0x60B2, 0xB465, 0x60B6, 0xB466, 0x60E0,
+	0xB467, 0x611C, 0xB468, 0x6123, 0xB469, 0x60FA, 0xB46A, 0x6115,
+	0xB46B, 0x60F0, 0xB46C, 0x60FB, 0xB46D, 0x60F4, 0xB46E, 0x6168,
+	0xB46F, 0x60F1, 0xB470, 0x610E, 0xB471, 0x60F6, 0xB472, 0x6109,
+	0xB473, 0x6100, 0xB474, 0x6112, 0xB475, 0x621F, 0xB476, 0x6249,
+	0xB477, 0x63A3, 0xB478, 0x638C, 0xB479, 0x63CF, 0xB47A, 0x63C0,
+	0xB47B, 0x63E9, 0xB47C, 0x63C9, 0xB47D, 0x63C6, 0xB47E, 0x63CD,
+	0xB4A1, 0x63D2, 0xB4A2, 0x63E3, 0xB4A3, 0x63D0, 0xB4A4, 0x63E1,
+	0xB4A5, 0x63D6, 0xB4A6, 0x63ED, 0xB4A7, 0x63EE, 0xB4A8, 0x6376,
+	0xB4A9, 0x63F4, 0xB4AA, 0x63EA, 0xB4AB, 0x63DB, 0xB4AC, 0x6452,
+	0xB4AD, 0x63DA, 0xB4AE, 0x63F9, 0xB4AF, 0x655E, 0xB4B0, 0x6566,
+	0xB4B1, 0x6562, 0xB4B2, 0x6563, 0xB4B3, 0x6591, 0xB4B4, 0x6590,
+	0xB4B5, 0x65AF, 0xB4B6, 0x666E, 0xB4B7, 0x6670, 0xB4B8, 0x6674,
+	0xB4B9, 0x6676, 0xB4BA, 0x666F, 0xB4BB, 0x6691, 0xB4BC, 0x667A,
+	0xB4BD, 0x667E, 0xB4BE, 0x6677, 0xB4BF, 0x66FE, 0xB4C0, 0x66FF,
+	0xB4C1, 0x671F, 0xB4C2, 0x671D, 0xB4C3, 0x68FA, 0xB4C4, 0x68D5,
+	0xB4C5, 0x68E0, 0xB4C6, 0x68D8, 0xB4C7, 0x68D7, 0xB4C8, 0x6905,
+	0xB4C9, 0x68DF, 0xB4CA, 0x68F5, 0xB4CB, 0x68EE, 0xB4CC, 0x68E7,
+	0xB4CD, 0x68F9, 0xB4CE, 0x68D2, 0xB4CF, 0x68F2, 0xB4D0, 0x68E3,
+	0xB4D1, 0x68CB, 0xB4D2, 0x68CD, 0xB4D3, 0x690D, 0xB4D4, 0x6912,
+	0xB4D5, 0x690E, 0xB4D6, 0x68C9, 0xB4D7, 0x68DA, 0xB4D8, 0x696E,
+	0xB4D9, 0x68FB, 0xB4DA, 0x6B3E, 0xB4DB, 0x6B3A, 0xB4DC, 0x6B3D,
+	0xB4DD, 0x6B98, 0xB4DE, 0x6B96, 0xB4DF, 0x6BBC, 0xB4E0, 0x6BEF,
+	0xB4E1, 0x6C2E, 0xB4E2, 0x6C2F, 0xB4E3, 0x6C2C, 0xB4E4, 0x6E2F,
+	0xB4E5, 0x6E38, 0xB4E6, 0x6E54, 0xB4E7, 0x6E21, 0xB4E8, 0x6E32,
+	0xB4E9, 0x6E67, 0xB4EA, 0x6E4A, 0xB4EB, 0x6E20, 0xB4EC, 0x6E25,
+	0xB4ED, 0x6E23, 0xB4EE, 0x6E1B, 0xB4EF, 0x6E5B, 0xB4F0, 0x6E58,
+	0xB4F1, 0x6E24, 0xB4F2, 0x6E56, 0xB4F3, 0x6E6E, 0xB4F4, 0x6E2D,
+	0xB4F5, 0x6E26, 0xB4F6, 0x6E6F, 0xB4F7, 0x6E34, 0xB4F8, 0x6E4D,
+	0xB4F9, 0x6E3A, 0xB4FA, 0x6E2C, 0xB4FB, 0x6E43, 0xB4FC, 0x6E1D,
+	0xB4FD, 0x6E3E, 0xB4FE, 0x6ECB, 0xB540, 0x6E89, 0xB541, 0x6E19,
+	0xB542, 0x6E4E, 0xB543, 0x6E63, 0xB544, 0x6E44, 0xB545, 0x6E72,
+	0xB546, 0x6E69, 0xB547, 0x6E5F, 0xB548, 0x7119, 0xB549, 0x711A,
+	0xB54A, 0x7126, 0xB54B, 0x7130, 0xB54C, 0x7121, 0xB54D, 0x7136,
+	0xB54E, 0x716E, 0xB54F, 0x711C, 0xB550, 0x724C, 0xB551, 0x7284,
+	0xB552, 0x7280, 0xB553, 0x7336, 0xB554, 0x7325, 0xB555, 0x7334,
+	0xB556, 0x7329, 0xB557, 0x743A, 0xB558, 0x742A, 0xB559, 0x7433,
+	0xB55A, 0x7422, 0xB55B, 0x7425, 0xB55C, 0x7435, 0xB55D, 0x7436,
+	0xB55E, 0x7434, 0xB55F, 0x742F, 0xB560, 0x741B, 0xB561, 0x7426,
+	0xB562, 0x7428, 0xB563, 0x7525, 0xB564, 0x7526, 0xB565, 0x756B,
+	0xB566, 0x756A, 0xB567, 0x75E2, 0xB568, 0x75DB, 0xB569, 0x75E3,
+	0xB56A, 0x75D9, 0xB56B, 0x75D8, 0xB56C, 0x75DE, 0xB56D, 0x75E0,
+	0xB56E, 0x767B, 0xB56F, 0x767C, 0xB570, 0x7696, 0xB571, 0x7693,
+	0xB572, 0x76B4, 0xB573, 0x76DC, 0xB574, 0x774F, 0xB575, 0x77ED,
+	0xB576, 0x785D, 0xB577, 0x786C, 0xB578, 0x786F, 0xB579, 0x7A0D,
+	0xB57A, 0x7A08, 0xB57B, 0x7A0B, 0xB57C, 0x7A05, 0xB57D, 0x7A00,
+	0xB57E, 0x7A98, 0xB5A1, 0x7A97, 0xB5A2, 0x7A96, 0xB5A3, 0x7AE5,
+	0xB5A4, 0x7AE3, 0xB5A5, 0x7B49, 0xB5A6, 0x7B56, 0xB5A7, 0x7B46,
+	0xB5A8, 0x7B50, 0xB5A9, 0x7B52, 0xB5AA, 0x7B54, 0xB5AB, 0x7B4D,
+	0xB5AC, 0x7B4B, 0xB5AD, 0x7B4F, 0xB5AE, 0x7B51, 0xB5AF, 0x7C9F,
+	0xB5B0, 0x7CA5, 0xB5B1, 0x7D5E, 0xB5B2, 0x7D50, 0xB5B3, 0x7D68,
+	0xB5B4, 0x7D55, 0xB5B5, 0x7D2B, 0xB5B6, 0x7D6E, 0xB5B7, 0x7D72,
+	0xB5B8, 0x7D61, 0xB5B9, 0x7D66, 0xB5BA, 0x7D62, 0xB5BB, 0x7D70,
+	0xB5BC, 0x7D73, 0xB5BD, 0x5584, 0xB5BE, 0x7FD4, 0xB5BF, 0x7FD5,
+	0xB5C0, 0x800B, 0xB5C1, 0x8052, 0xB5C2, 0x8085, 0xB5C3, 0x8155,
+	0xB5C4, 0x8154, 0xB5C5, 0x814B, 0xB5C6, 0x8151, 0xB5C7, 0x814E,
+	0xB5C8, 0x8139, 0xB5C9, 0x8146, 0xB5CA, 0x813E, 0xB5CB, 0x814C,
+	0xB5CC, 0x8153, 0xB5CD, 0x8174, 0xB5CE, 0x8212, 0xB5CF, 0x821C,
+	0xB5D0, 0x83E9, 0xB5D1, 0x8403, 0xB5D2, 0x83F8, 0xB5D3, 0x840D,
+	0xB5D4, 0x83E0, 0xB5D5, 0x83C5, 0xB5D6, 0x840B, 0xB5D7, 0x83C1,
+	0xB5D8, 0x83EF, 0xB5D9, 0x83F1, 0xB5DA, 0x83F4, 0xB5DB, 0x8457,
+	0xB5DC, 0x840A, 0xB5DD, 0x83F0, 0xB5DE, 0x840C, 0xB5DF, 0x83CC,
+	0xB5E0, 0x83FD, 0xB5E1, 0x83F2, 0xB5E2, 0x83CA, 0xB5E3, 0x8438,
+	0xB5E4, 0x840E, 0xB5E5, 0x8404, 0xB5E6, 0x83DC, 0xB5E7, 0x8407,
+	0xB5E8, 0x83D4, 0xB5E9, 0x83DF, 0xB5EA, 0x865B, 0xB5EB, 0x86DF,
+	0xB5EC, 0x86D9, 0xB5ED, 0x86ED, 0xB5EE, 0x86D4, 0xB5EF, 0x86DB,
+	0xB5F0, 0x86E4, 0xB5F1, 0x86D0, 0xB5F2, 0x86DE, 0xB5F3, 0x8857,
+	0xB5F4, 0x88C1, 0xB5F5, 0x88C2, 0xB5F6, 0x88B1, 0xB5F7, 0x8983,
+	0xB5F8, 0x8996, 0xB5F9, 0x8A3B, 0xB5FA, 0x8A60, 0xB5FB, 0x8A55,
+	0xB5FC, 0x8A5E, 0xB5FD, 0x8A3C, 0xB5FE, 0x8A41, 0xB640, 0x8A54,
+	0xB641, 0x8A5B, 0xB642, 0x8A50, 0xB643, 0x8A46, 0xB644, 0x8A34,
+	0xB645, 0x8A3A, 0xB646, 0x8A36, 0xB647, 0x8A56, 0xB648, 0x8C61,
+	0xB649, 0x8C82, 0xB64A, 0x8CAF, 0xB64B, 0x8CBC, 0xB64C, 0x8CB3,
+	0xB64D, 0x8CBD, 0xB64E, 0x8CC1, 0xB64F, 0x8CBB, 0xB650, 0x8CC0,
+	0xB651, 0x8CB4, 0xB652, 0x8CB7, 0xB653, 0x8CB6, 0xB654, 0x8CBF,
+	0xB655, 0x8CB8, 0xB656, 0x8D8A, 0xB657, 0x8D85, 0xB658, 0x8D81,
+	0xB659, 0x8DCE, 0xB65A, 0x8DDD, 0xB65B, 0x8DCB, 0xB65C, 0x8DDA,
+	0xB65D, 0x8DD1, 0xB65E, 0x8DCC, 0xB65F, 0x8DDB, 0xB660, 0x8DC6,
+	0xB661, 0x8EFB, 0xB662, 0x8EF8, 0xB663, 0x8EFC, 0xB664, 0x8F9C,
+	0xB665, 0x902E, 0xB666, 0x9035, 0xB667, 0x9031, 0xB668, 0x9038,
+	0xB669, 0x9032, 0xB66A, 0x9036, 0xB66B, 0x9102, 0xB66C, 0x90F5,
+	0xB66D, 0x9109, 0xB66E, 0x90FE, 0xB66F, 0x9163, 0xB670, 0x9165,
+	0xB671, 0x91CF, 0xB672, 0x9214, 0xB673, 0x9215, 0xB674, 0x9223,
+	0xB675, 0x9209, 0xB676, 0x921E, 0xB677, 0x920D, 0xB678, 0x9210,
+	0xB679, 0x9207, 0xB67A, 0x9211, 0xB67B, 0x9594, 0xB67C, 0x958F,
+	0xB67D, 0x958B, 0xB67E, 0x9591, 0xB6A1, 0x9593, 0xB6A2, 0x9592,
+	0xB6A3, 0x958E, 0xB6A4, 0x968A, 0xB6A5, 0x968E, 0xB6A6, 0x968B,
+	0xB6A7, 0x967D, 0xB6A8, 0x9685, 0xB6A9, 0x9686, 0xB6AA, 0x968D,
+	0xB6AB, 0x9672, 0xB6AC, 0x9684, 0xB6AD, 0x96C1, 0xB6AE, 0x96C5,
+	0xB6AF, 0x96C4, 0xB6B0, 0x96C6, 0xB6B1, 0x96C7, 0xB6B2, 0x96EF,
+	0xB6B3, 0x96F2, 0xB6B4, 0x97CC, 0xB6B5, 0x9805, 0xB6B6, 0x9806,
+	0xB6B7, 0x9808, 0xB6B8, 0x98E7, 0xB6B9, 0x98EA, 0xB6BA, 0x98EF,
+	0xB6BB, 0x98E9, 0xB6BC, 0x98F2, 0xB6BD, 0x98ED, 0xB6BE, 0x99AE,
+	0xB6BF, 0x99AD, 0xB6C0, 0x9EC3, 0xB6C1, 0x9ECD, 0xB6C2, 0x9ED1,
+	0xB6C3, 0x4E82, 0xB6C4, 0x50AD, 0xB6C5, 0x50B5, 0xB6C6, 0x50B2,
+	0xB6C7, 0x50B3, 0xB6C8, 0x50C5, 0xB6C9, 0x50BE, 0xB6CA, 0x50AC,
+	0xB6CB, 0x50B7, 0xB6CC, 0x50BB, 0xB6CD, 0x50AF, 0xB6CE, 0x50C7,
+	0xB6CF, 0x527F, 0xB6D0, 0x5277, 0xB6D1, 0x527D, 0xB6D2, 0x52DF,
+	0xB6D3, 0x52E6, 0xB6D4, 0x52E4, 0xB6D5, 0x52E2, 0xB6D6, 0x52E3,
+	0xB6D7, 0x532F, 0xB6D8, 0x55DF, 0xB6D9, 0x55E8, 0xB6DA, 0x55D3,
+	0xB6DB, 0x55E6, 0xB6DC, 0x55CE, 0xB6DD, 0x55DC, 0xB6DE, 0x55C7,
+	0xB6DF, 0x55D1, 0xB6E0, 0x55E3, 0xB6E1, 0x55E4, 0xB6E2, 0x55EF,
+	0xB6E3, 0x55DA, 0xB6E4, 0x55E1, 0xB6E5, 0x55C5, 0xB6E6, 0x55C6,
+	0xB6E7, 0x55E5, 0xB6E8, 0x55C9, 0xB6E9, 0x5712, 0xB6EA, 0x5713,
+	0xB6EB, 0x585E, 0xB6EC, 0x5851, 0xB6ED, 0x5858, 0xB6EE, 0x5857,
+	0xB6EF, 0x585A, 0xB6F0, 0x5854, 0xB6F1, 0x586B, 0xB6F2, 0x584C,
+	0xB6F3, 0x586D, 0xB6F4, 0x584A, 0xB6F5, 0x5862, 0xB6F6, 0x5852,
+	0xB6F7, 0x584B, 0xB6F8, 0x5967, 0xB6F9, 0x5AC1, 0xB6FA, 0x5AC9,
+	0xB6FB, 0x5ACC, 0xB6FC, 0x5ABE, 0xB6FD, 0x5ABD, 0xB6FE, 0x5ABC,
+	0xB740, 0x5AB3, 0xB741, 0x5AC2, 0xB742, 0x5AB2, 0xB743, 0x5D69,
+	0xB744, 0x5D6F, 0xB745, 0x5E4C, 0xB746, 0x5E79, 0xB747, 0x5EC9,
+	0xB748, 0x5EC8, 0xB749, 0x5F12, 0xB74A, 0x5F59, 0xB74B, 0x5FAC,
+	0xB74C, 0x5FAE, 0xB74D, 0x611A, 0xB74E, 0x610F, 0xB74F, 0x6148,
+	0xB750, 0x611F, 0xB751, 0x60F3, 0xB752, 0x611B, 0xB753, 0x60F9,
+	0xB754, 0x6101, 0xB755, 0x6108, 0xB756, 0x614E, 0xB757, 0x614C,
+	0xB758, 0x6144, 0xB759, 0x614D, 0xB75A, 0x613E, 0xB75B, 0x6134,
+	0xB75C, 0x6127, 0xB75D, 0x610D, 0xB75E, 0x6106, 0xB75F, 0x6137,
+	0xB760, 0x6221, 0xB761, 0x6222, 0xB762, 0x6413, 0xB763, 0x643E,
+	0xB764, 0x641E, 0xB765, 0x642A, 0xB766, 0x642D, 0xB767, 0x643D,
+	0xB768, 0x642C, 0xB769, 0x640F, 0xB76A, 0x641C, 0xB76B, 0x6414,
+	0xB76C, 0x640D, 0xB76D, 0x6436, 0xB76E, 0x6416, 0xB76F, 0x6417,
+	0xB770, 0x6406, 0xB771, 0x656C, 0xB772, 0x659F, 0xB773, 0x65B0,
+	0xB774, 0x6697, 0xB775, 0x6689, 0xB776, 0x6687, 0xB777, 0x6688,
+	0xB778, 0x6696, 0xB779, 0x6684, 0xB77A, 0x6698, 0xB77B, 0x668D,
+	0xB77C, 0x6703, 0xB77D, 0x6994, 0xB77E, 0x696D, 0xB7A1, 0x695A,
+	0xB7A2, 0x6977, 0xB7A3, 0x6960, 0xB7A4, 0x6954, 0xB7A5, 0x6975,
+	0xB7A6, 0x6930, 0xB7A7, 0x6982, 0xB7A8, 0x694A, 0xB7A9, 0x6968,
+	0xB7AA, 0x696B, 0xB7AB, 0x695E, 0xB7AC, 0x6953, 0xB7AD, 0x6979,
+	0xB7AE, 0x6986, 0xB7AF, 0x695D, 0xB7B0, 0x6963, 0xB7B1, 0x695B,
+	0xB7B2, 0x6B47, 0xB7B3, 0x6B72, 0xB7B4, 0x6BC0, 0xB7B5, 0x6BBF,
+	0xB7B6, 0x6BD3, 0xB7B7, 0x6BFD, 0xB7B8, 0x6EA2, 0xB7B9, 0x6EAF,
+	0xB7BA, 0x6ED3, 0xB7BB, 0x6EB6, 0xB7BC, 0x6EC2, 0xB7BD, 0x6E90,
+	0xB7BE, 0x6E9D, 0xB7BF, 0x6EC7, 0xB7C0, 0x6EC5, 0xB7C1, 0x6EA5,
+	0xB7C2, 0x6E98, 0xB7C3, 0x6EBC, 0xB7C4, 0x6EBA, 0xB7C5, 0x6EAB,
+	0xB7C6, 0x6ED1, 0xB7C7, 0x6E96, 0xB7C8, 0x6E9C, 0xB7C9, 0x6EC4,
+	0xB7CA, 0x6ED4, 0xB7CB, 0x6EAA, 0xB7CC, 0x6EA7, 0xB7CD, 0x6EB4,
+	0xB7CE, 0x714E, 0xB7CF, 0x7159, 0xB7D0, 0x7169, 0xB7D1, 0x7164,
+	0xB7D2, 0x7149, 0xB7D3, 0x7167, 0xB7D4, 0x715C, 0xB7D5, 0x716C,
+	0xB7D6, 0x7166, 0xB7D7, 0x714C, 0xB7D8, 0x7165, 0xB7D9, 0x715E,
+	0xB7DA, 0x7146, 0xB7DB, 0x7168, 0xB7DC, 0x7156, 0xB7DD, 0x723A,
+	0xB7DE, 0x7252, 0xB7DF, 0x7337, 0xB7E0, 0x7345, 0xB7E1, 0x733F,
+	0xB7E2, 0x733E, 0xB7E3, 0x746F, 0xB7E4, 0x745A, 0xB7E5, 0x7455,
+	0xB7E6, 0x745F, 0xB7E7, 0x745E, 0xB7E8, 0x7441, 0xB7E9, 0x743F,
+	0xB7EA, 0x7459, 0xB7EB, 0x745B, 0xB7EC, 0x745C, 0xB7ED, 0x7576,
+	0xB7EE, 0x7578, 0xB7EF, 0x7600, 0xB7F0, 0x75F0, 0xB7F1, 0x7601,
+	0xB7F2, 0x75F2, 0xB7F3, 0x75F1, 0xB7F4, 0x75FA, 0xB7F5, 0x75FF,
+	0xB7F6, 0x75F4, 0xB7F7, 0x75F3, 0xB7F8, 0x76DE, 0xB7F9, 0x76DF,
+	0xB7FA, 0x775B, 0xB7FB, 0x776B, 0xB7FC, 0x7766, 0xB7FD, 0x775E,
+	0xB7FE, 0x7763, 0xB840, 0x7779, 0xB841, 0x776A, 0xB842, 0x776C,
+	0xB843, 0x775C, 0xB844, 0x7765, 0xB845, 0x7768, 0xB846, 0x7762,
+	0xB847, 0x77EE, 0xB848, 0x788E, 0xB849, 0x78B0, 0xB84A, 0x7897,
+	0xB84B, 0x7898, 0xB84C, 0x788C, 0xB84D, 0x7889, 0xB84E, 0x787C,
+	0xB84F, 0x7891, 0xB850, 0x7893, 0xB851, 0x787F, 0xB852, 0x797A,
+	0xB853, 0x797F, 0xB854, 0x7981, 0xB855, 0x842C, 0xB856, 0x79BD,
+	0xB857, 0x7A1C, 0xB858, 0x7A1A, 0xB859, 0x7A20, 0xB85A, 0x7A14,
+	0xB85B, 0x7A1F, 0xB85C, 0x7A1E, 0xB85D, 0x7A9F, 0xB85E, 0x7AA0,
+	0xB85F, 0x7B77, 0xB860, 0x7BC0, 0xB861, 0x7B60, 0xB862, 0x7B6E,
+	0xB863, 0x7B67, 0xB864, 0x7CB1, 0xB865, 0x7CB3, 0xB866, 0x7CB5,
+	0xB867, 0x7D93, 0xB868, 0x7D79, 0xB869, 0x7D91, 0xB86A, 0x7D81,
+	0xB86B, 0x7D8F, 0xB86C, 0x7D5B, 0xB86D, 0x7F6E, 0xB86E, 0x7F69,
+	0xB86F, 0x7F6A, 0xB870, 0x7F72, 0xB871, 0x7FA9, 0xB872, 0x7FA8,
+	0xB873, 0x7FA4, 0xB874, 0x8056, 0xB875, 0x8058, 0xB876, 0x8086,
+	0xB877, 0x8084, 0xB878, 0x8171, 0xB879, 0x8170, 0xB87A, 0x8178,
+	0xB87B, 0x8165, 0xB87C, 0x816E, 0xB87D, 0x8173, 0xB87E, 0x816B,
+	0xB8A1, 0x8179, 0xB8A2, 0x817A, 0xB8A3, 0x8166, 0xB8A4, 0x8205,
+	0xB8A5, 0x8247, 0xB8A6, 0x8482, 0xB8A7, 0x8477, 0xB8A8, 0x843D,
+	0xB8A9, 0x8431, 0xB8AA, 0x8475, 0xB8AB, 0x8466, 0xB8AC, 0x846B,
+	0xB8AD, 0x8449, 0xB8AE, 0x846C, 0xB8AF, 0x845B, 0xB8B0, 0x843C,
+	0xB8B1, 0x8435, 0xB8B2, 0x8461, 0xB8B3, 0x8463, 0xB8B4, 0x8469,
+	0xB8B5, 0x846D, 0xB8B6, 0x8446, 0xB8B7, 0x865E, 0xB8B8, 0x865C,
+	0xB8B9, 0x865F, 0xB8BA, 0x86F9, 0xB8BB, 0x8713, 0xB8BC, 0x8708,
+	0xB8BD, 0x8707, 0xB8BE, 0x8700, 0xB8BF, 0x86FE, 0xB8C0, 0x86FB,
+	0xB8C1, 0x8702, 0xB8C2, 0x8703, 0xB8C3, 0x8706, 0xB8C4, 0x870A,
+	0xB8C5, 0x8859, 0xB8C6, 0x88DF, 0xB8C7, 0x88D4, 0xB8C8, 0x88D9,
+	0xB8C9, 0x88DC, 0xB8CA, 0x88D8, 0xB8CB, 0x88DD, 0xB8CC, 0x88E1,
+	0xB8CD, 0x88CA, 0xB8CE, 0x88D5, 0xB8CF, 0x88D2, 0xB8D0, 0x899C,
+	0xB8D1, 0x89E3, 0xB8D2, 0x8A6B, 0xB8D3, 0x8A72, 0xB8D4, 0x8A73,
+	0xB8D5, 0x8A66, 0xB8D6, 0x8A69, 0xB8D7, 0x8A70, 0xB8D8, 0x8A87,
+	0xB8D9, 0x8A7C, 0xB8DA, 0x8A63, 0xB8DB, 0x8AA0, 0xB8DC, 0x8A71,
+	0xB8DD, 0x8A85, 0xB8DE, 0x8A6D, 0xB8DF, 0x8A62, 0xB8E0, 0x8A6E,
+	0xB8E1, 0x8A6C, 0xB8E2, 0x8A79, 0xB8E3, 0x8A7B, 0xB8E4, 0x8A3E,
+	0xB8E5, 0x8A68, 0xB8E6, 0x8C62, 0xB8E7, 0x8C8A, 0xB8E8, 0x8C89,
+	0xB8E9, 0x8CCA, 0xB8EA, 0x8CC7, 0xB8EB, 0x8CC8, 0xB8EC, 0x8CC4,
+	0xB8ED, 0x8CB2, 0xB8EE, 0x8CC3, 0xB8EF, 0x8CC2, 0xB8F0, 0x8CC5,
+	0xB8F1, 0x8DE1, 0xB8F2, 0x8DDF, 0xB8F3, 0x8DE8, 0xB8F4, 0x8DEF,
+	0xB8F5, 0x8DF3, 0xB8F6, 0x8DFA, 0xB8F7, 0x8DEA, 0xB8F8, 0x8DE4,
+	0xB8F9, 0x8DE6, 0xB8FA, 0x8EB2, 0xB8FB, 0x8F03, 0xB8FC, 0x8F09,
+	0xB8FD, 0x8EFE, 0xB8FE, 0x8F0A, 0xB940, 0x8F9F, 0xB941, 0x8FB2,
+	0xB942, 0x904B, 0xB943, 0x904A, 0xB944, 0x9053, 0xB945, 0x9042,
+	0xB946, 0x9054, 0xB947, 0x903C, 0xB948, 0x9055, 0xB949, 0x9050,
+	0xB94A, 0x9047, 0xB94B, 0x904F, 0xB94C, 0x904E, 0xB94D, 0x904D,
+	0xB94E, 0x9051, 0xB94F, 0x903E, 0xB950, 0x9041, 0xB951, 0x9112,
+	0xB952, 0x9117, 0xB953, 0x916C, 0xB954, 0x916A, 0xB955, 0x9169,
+	0xB956, 0x91C9, 0xB957, 0x9237, 0xB958, 0x9257, 0xB959, 0x9238,
+	0xB95A, 0x923D, 0xB95B, 0x9240, 0xB95C, 0x923E, 0xB95D, 0x925B,
+	0xB95E, 0x924B, 0xB95F, 0x9264, 0xB960, 0x9251, 0xB961, 0x9234,
+	0xB962, 0x9249, 0xB963, 0x924D, 0xB964, 0x9245, 0xB965, 0x9239,
+	0xB966, 0x923F, 0xB967, 0x925A, 0xB968, 0x9598, 0xB969, 0x9698,
+	0xB96A, 0x9694, 0xB96B, 0x9695, 0xB96C, 0x96CD, 0xB96D, 0x96CB,
+	0xB96E, 0x96C9, 0xB96F, 0x96CA, 0xB970, 0x96F7, 0xB971, 0x96FB,
+	0xB972, 0x96F9, 0xB973, 0x96F6, 0xB974, 0x9756, 0xB975, 0x9774,
+	0xB976, 0x9776, 0xB977, 0x9810, 0xB978, 0x9811, 0xB979, 0x9813,
+	0xB97A, 0x980A, 0xB97B, 0x9812, 0xB97C, 0x980C, 0xB97D, 0x98FC,
+	0xB97E, 0x98F4, 0xB9A1, 0x98FD, 0xB9A2, 0x98FE, 0xB9A3, 0x99B3,
+	0xB9A4, 0x99B1, 0xB9A5, 0x99B4, 0xB9A6, 0x9AE1, 0xB9A7, 0x9CE9,
+	0xB9A8, 0x9E82, 0xB9A9, 0x9F0E, 0xB9AA, 0x9F13, 0xB9AB, 0x9F20,
+	0xB9AC, 0x50E7, 0xB9AD, 0x50EE, 0xB9AE, 0x50E5, 0xB9AF, 0x50D6,
+	0xB9B0, 0x50ED, 0xB9B1, 0x50DA, 0xB9B2, 0x50D5, 0xB9B3, 0x50CF,
+	0xB9B4, 0x50D1, 0xB9B5, 0x50F1, 0xB9B6, 0x50CE, 0xB9B7, 0x50E9,
+	0xB9B8, 0x5162, 0xB9B9, 0x51F3, 0xB9BA, 0x5283, 0xB9BB, 0x5282,
+	0xB9BC, 0x5331, 0xB9BD, 0x53AD, 0xB9BE, 0x55FE, 0xB9BF, 0x5600,
+	0xB9C0, 0x561B, 0xB9C1, 0x5617, 0xB9C2, 0x55FD, 0xB9C3, 0x5614,
+	0xB9C4, 0x5606, 0xB9C5, 0x5609, 0xB9C6, 0x560D, 0xB9C7, 0x560E,
+	0xB9C8, 0x55F7, 0xB9C9, 0x5616, 0xB9CA, 0x561F, 0xB9CB, 0x5608,
+	0xB9CC, 0x5610, 0xB9CD, 0x55F6, 0xB9CE, 0x5718, 0xB9CF, 0x5716,
+	0xB9D0, 0x5875, 0xB9D1, 0x587E, 0xB9D2, 0x5883, 0xB9D3, 0x5893,
+	0xB9D4, 0x588A, 0xB9D5, 0x5879, 0xB9D6, 0x5885, 0xB9D7, 0x587D,
+	0xB9D8, 0x58FD, 0xB9D9, 0x5925, 0xB9DA, 0x5922, 0xB9DB, 0x5924,
+	0xB9DC, 0x596A, 0xB9DD, 0x5969, 0xB9DE, 0x5AE1, 0xB9DF, 0x5AE6,
+	0xB9E0, 0x5AE9, 0xB9E1, 0x5AD7, 0xB9E2, 0x5AD6, 0xB9E3, 0x5AD8,
+	0xB9E4, 0x5AE3, 0xB9E5, 0x5B75, 0xB9E6, 0x5BDE, 0xB9E7, 0x5BE7,
+	0xB9E8, 0x5BE1, 0xB9E9, 0x5BE5, 0xB9EA, 0x5BE6, 0xB9EB, 0x5BE8,
+	0xB9EC, 0x5BE2, 0xB9ED, 0x5BE4, 0xB9EE, 0x5BDF, 0xB9EF, 0x5C0D,
+	0xB9F0, 0x5C62, 0xB9F1, 0x5D84, 0xB9F2, 0x5D87, 0xB9F3, 0x5E5B,
+	0xB9F4, 0x5E63, 0xB9F5, 0x5E55, 0xB9F6, 0x5E57, 0xB9F7, 0x5E54,
+	0xB9F8, 0x5ED3, 0xB9F9, 0x5ED6, 0xB9FA, 0x5F0A, 0xB9FB, 0x5F46,
+	0xB9FC, 0x5F70, 0xB9FD, 0x5FB9, 0xB9FE, 0x6147, 0xBA40, 0x613F,
+	0xBA41, 0x614B, 0xBA42, 0x6177, 0xBA43, 0x6162, 0xBA44, 0x6163,
+	0xBA45, 0x615F, 0xBA46, 0x615A, 0xBA47, 0x6158, 0xBA48, 0x6175,
+	0xBA49, 0x622A, 0xBA4A, 0x6487, 0xBA4B, 0x6458, 0xBA4C, 0x6454,
+	0xBA4D, 0x64A4, 0xBA4E, 0x6478, 0xBA4F, 0x645F, 0xBA50, 0x647A,
+	0xBA51, 0x6451, 0xBA52, 0x6467, 0xBA53, 0x6434, 0xBA54, 0x646D,
+	0xBA55, 0x647B, 0xBA56, 0x6572, 0xBA57, 0x65A1, 0xBA58, 0x65D7,
+	0xBA59, 0x65D6, 0xBA5A, 0x66A2, 0xBA5B, 0x66A8, 0xBA5C, 0x669D,
+	0xBA5D, 0x699C, 0xBA5E, 0x69A8, 0xBA5F, 0x6995, 0xBA60, 0x69C1,
+	0xBA61, 0x69AE, 0xBA62, 0x69D3, 0xBA63, 0x69CB, 0xBA64, 0x699B,
+	0xBA65, 0x69B7, 0xBA66, 0x69BB, 0xBA67, 0x69AB, 0xBA68, 0x69B4,
+	0xBA69, 0x69D0, 0xBA6A, 0x69CD, 0xBA6B, 0x69AD, 0xBA6C, 0x69CC,
+	0xBA6D, 0x69A6, 0xBA6E, 0x69C3, 0xBA6F, 0x69A3, 0xBA70, 0x6B49,
+	0xBA71, 0x6B4C, 0xBA72, 0x6C33, 0xBA73, 0x6F33, 0xBA74, 0x6F14,
+	0xBA75, 0x6EFE, 0xBA76, 0x6F13, 0xBA77, 0x6EF4, 0xBA78, 0x6F29,
+	0xBA79, 0x6F3E, 0xBA7A, 0x6F20, 0xBA7B, 0x6F2C, 0xBA7C, 0x6F0F,
+	0xBA7D, 0x6F02, 0xBA7E, 0x6F22, 0xBAA1, 0x6EFF, 0xBAA2, 0x6EEF,
+	0xBAA3, 0x6F06, 0xBAA4, 0x6F31, 0xBAA5, 0x6F38, 0xBAA6, 0x6F32,
+	0xBAA7, 0x6F23, 0xBAA8, 0x6F15, 0xBAA9, 0x6F2B, 0xBAAA, 0x6F2F,
+	0xBAAB, 0x6F88, 0xBAAC, 0x6F2A, 0xBAAD, 0x6EEC, 0xBAAE, 0x6F01,
+	0xBAAF, 0x6EF2, 0xBAB0, 0x6ECC, 0xBAB1, 0x6EF7, 0xBAB2, 0x7194,
+	0xBAB3, 0x7199, 0xBAB4, 0x717D, 0xBAB5, 0x718A, 0xBAB6, 0x7184,
+	0xBAB7, 0x7192, 0xBAB8, 0x723E, 0xBAB9, 0x7292, 0xBABA, 0x7296,
+	0xBABB, 0x7344, 0xBABC, 0x7350, 0xBABD, 0x7464, 0xBABE, 0x7463,
+	0xBABF, 0x746A, 0xBAC0, 0x7470, 0xBAC1, 0x746D, 0xBAC2, 0x7504,
+	0xBAC3, 0x7591, 0xBAC4, 0x7627, 0xBAC5, 0x760D, 0xBAC6, 0x760B,
+	0xBAC7, 0x7609, 0xBAC8, 0x7613, 0xBAC9, 0x76E1, 0xBACA, 0x76E3,
+	0xBACB, 0x7784, 0xBACC, 0x777D, 0xBACD, 0x777F, 0xBACE, 0x7761,
+	0xBACF, 0x78C1, 0xBAD0, 0x789F, 0xBAD1, 0x78A7, 0xBAD2, 0x78B3,
+	0xBAD3, 0x78A9, 0xBAD4, 0x78A3, 0xBAD5, 0x798E, 0xBAD6, 0x798F,
+	0xBAD7, 0x798D, 0xBAD8, 0x7A2E, 0xBAD9, 0x7A31, 0xBADA, 0x7AAA,
+	0xBADB, 0x7AA9, 0xBADC, 0x7AED, 0xBADD, 0x7AEF, 0xBADE, 0x7BA1,
+	0xBADF, 0x7B95, 0xBAE0, 0x7B8B, 0xBAE1, 0x7B75, 0xBAE2, 0x7B97,
+	0xBAE3, 0x7B9D, 0xBAE4, 0x7B94, 0xBAE5, 0x7B8F, 0xBAE6, 0x7BB8,
+	0xBAE7, 0x7B87, 0xBAE8, 0x7B84, 0xBAE9, 0x7CB9, 0xBAEA, 0x7CBD,
+	0xBAEB, 0x7CBE, 0xBAEC, 0x7DBB, 0xBAED, 0x7DB0, 0xBAEE, 0x7D9C,
+	0xBAEF, 0x7DBD, 0xBAF0, 0x7DBE, 0xBAF1, 0x7DA0, 0xBAF2, 0x7DCA,
+	0xBAF3, 0x7DB4, 0xBAF4, 0x7DB2, 0xBAF5, 0x7DB1, 0xBAF6, 0x7DBA,
+	0xBAF7, 0x7DA2, 0xBAF8, 0x7DBF, 0xBAF9, 0x7DB5, 0xBAFA, 0x7DB8,
+	0xBAFB, 0x7DAD, 0xBAFC, 0x7DD2, 0xBAFD, 0x7DC7, 0xBAFE, 0x7DAC,
+	0xBB40, 0x7F70, 0xBB41, 0x7FE0, 0xBB42, 0x7FE1, 0xBB43, 0x7FDF,
+	0xBB44, 0x805E, 0xBB45, 0x805A, 0xBB46, 0x8087, 0xBB47, 0x8150,
+	0xBB48, 0x8180, 0xBB49, 0x818F, 0xBB4A, 0x8188, 0xBB4B, 0x818A,
+	0xBB4C, 0x817F, 0xBB4D, 0x8182, 0xBB4E, 0x81E7, 0xBB4F, 0x81FA,
+	0xBB50, 0x8207, 0xBB51, 0x8214, 0xBB52, 0x821E, 0xBB53, 0x824B,
+	0xBB54, 0x84C9, 0xBB55, 0x84BF, 0xBB56, 0x84C6, 0xBB57, 0x84C4,
+	0xBB58, 0x8499, 0xBB59, 0x849E, 0xBB5A, 0x84B2, 0xBB5B, 0x849C,
+	0xBB5C, 0x84CB, 0xBB5D, 0x84B8, 0xBB5E, 0x84C0, 0xBB5F, 0x84D3,
+	0xBB60, 0x8490, 0xBB61, 0x84BC, 0xBB62, 0x84D1, 0xBB63, 0x84CA,
+	0xBB64, 0x873F, 0xBB65, 0x871C, 0xBB66, 0x873B, 0xBB67, 0x8722,
+	0xBB68, 0x8725, 0xBB69, 0x8734, 0xBB6A, 0x8718, 0xBB6B, 0x8755,
+	0xBB6C, 0x8737, 0xBB6D, 0x8729, 0xBB6E, 0x88F3, 0xBB6F, 0x8902,
+	0xBB70, 0x88F4, 0xBB71, 0x88F9, 0xBB72, 0x88F8, 0xBB73, 0x88FD,
+	0xBB74, 0x88E8, 0xBB75, 0x891A, 0xBB76, 0x88EF, 0xBB77, 0x8AA6,
+	0xBB78, 0x8A8C, 0xBB79, 0x8A9E, 0xBB7A, 0x8AA3, 0xBB7B, 0x8A8D,
+	0xBB7C, 0x8AA1, 0xBB7D, 0x8A93, 0xBB7E, 0x8AA4, 0xBBA1, 0x8AAA,
+	0xBBA2, 0x8AA5, 0xBBA3, 0x8AA8, 0xBBA4, 0x8A98, 0xBBA5, 0x8A91,
+	0xBBA6, 0x8A9A, 0xBBA7, 0x8AA7, 0xBBA8, 0x8C6A, 0xBBA9, 0x8C8D,
+	0xBBAA, 0x8C8C, 0xBBAB, 0x8CD3, 0xBBAC, 0x8CD1, 0xBBAD, 0x8CD2,
+	0xBBAE, 0x8D6B, 0xBBAF, 0x8D99, 0xBBB0, 0x8D95, 0xBBB1, 0x8DFC,
+	0xBBB2, 0x8F14, 0xBBB3, 0x8F12, 0xBBB4, 0x8F15, 0xBBB5, 0x8F13,
+	0xBBB6, 0x8FA3, 0xBBB7, 0x9060, 0xBBB8, 0x9058, 0xBBB9, 0x905C,
+	0xBBBA, 0x9063, 0xBBBB, 0x9059, 0xBBBC, 0x905E, 0xBBBD, 0x9062,
+	0xBBBE, 0x905D, 0xBBBF, 0x905B, 0xBBC0, 0x9119, 0xBBC1, 0x9118,
+	0xBBC2, 0x911E, 0xBBC3, 0x9175, 0xBBC4, 0x9178, 0xBBC5, 0x9177,
+	0xBBC6, 0x9174, 0xBBC7, 0x9278, 0xBBC8, 0x9280, 0xBBC9, 0x9285,
+	0xBBCA, 0x9298, 0xBBCB, 0x9296, 0xBBCC, 0x927B, 0xBBCD, 0x9293,
+	0xBBCE, 0x929C, 0xBBCF, 0x92A8, 0xBBD0, 0x927C, 0xBBD1, 0x9291,
+	0xBBD2, 0x95A1, 0xBBD3, 0x95A8, 0xBBD4, 0x95A9, 0xBBD5, 0x95A3,
+	0xBBD6, 0x95A5, 0xBBD7, 0x95A4, 0xBBD8, 0x9699, 0xBBD9, 0x969C,
+	0xBBDA, 0x969B, 0xBBDB, 0x96CC, 0xBBDC, 0x96D2, 0xBBDD, 0x9700,
+	0xBBDE, 0x977C, 0xBBDF, 0x9785, 0xBBE0, 0x97F6, 0xBBE1, 0x9817,
+	0xBBE2, 0x9818, 0xBBE3, 0x98AF, 0xBBE4, 0x98B1, 0xBBE5, 0x9903,
+	0xBBE6, 0x9905, 0xBBE7, 0x990C, 0xBBE8, 0x9909, 0xBBE9, 0x99C1,
+	0xBBEA, 0x9AAF, 0xBBEB, 0x9AB0, 0xBBEC, 0x9AE6, 0xBBED, 0x9B41,
+	0xBBEE, 0x9B42, 0xBBEF, 0x9CF4, 0xBBF0, 0x9CF6, 0xBBF1, 0x9CF3,
+	0xBBF2, 0x9EBC, 0xBBF3, 0x9F3B, 0xBBF4, 0x9F4A, 0xBBF5, 0x5104,
+	0xBBF6, 0x5100, 0xBBF7, 0x50FB, 0xBBF8, 0x50F5, 0xBBF9, 0x50F9,
+	0xBBFA, 0x5102, 0xBBFB, 0x5108, 0xBBFC, 0x5109, 0xBBFD, 0x5105,
+	0xBBFE, 0x51DC, 0xBC40, 0x5287, 0xBC41, 0x5288, 0xBC42, 0x5289,
+	0xBC43, 0x528D, 0xBC44, 0x528A, 0xBC45, 0x52F0, 0xBC46, 0x53B2,
+	0xBC47, 0x562E, 0xBC48, 0x563B, 0xBC49, 0x5639, 0xBC4A, 0x5632,
+	0xBC4B, 0x563F, 0xBC4C, 0x5634, 0xBC4D, 0x5629, 0xBC4E, 0x5653,
+	0xBC4F, 0x564E, 0xBC50, 0x5657, 0xBC51, 0x5674, 0xBC52, 0x5636,
+	0xBC53, 0x562F, 0xBC54, 0x5630, 0xBC55, 0x5880, 0xBC56, 0x589F,
+	0xBC57, 0x589E, 0xBC58, 0x58B3, 0xBC59, 0x589C, 0xBC5A, 0x58AE,
+	0xBC5B, 0x58A9, 0xBC5C, 0x58A6, 0xBC5D, 0x596D, 0xBC5E, 0x5B09,
+	0xBC5F, 0x5AFB, 0xBC60, 0x5B0B, 0xBC61, 0x5AF5, 0xBC62, 0x5B0C,
+	0xBC63, 0x5B08, 0xBC64, 0x5BEE, 0xBC65, 0x5BEC, 0xBC66, 0x5BE9,
+	0xBC67, 0x5BEB, 0xBC68, 0x5C64, 0xBC69, 0x5C65, 0xBC6A, 0x5D9D,
+	0xBC6B, 0x5D94, 0xBC6C, 0x5E62, 0xBC6D, 0x5E5F, 0xBC6E, 0x5E61,
+	0xBC6F, 0x5EE2, 0xBC70, 0x5EDA, 0xBC71, 0x5EDF, 0xBC72, 0x5EDD,
+	0xBC73, 0x5EE3, 0xBC74, 0x5EE0, 0xBC75, 0x5F48, 0xBC76, 0x5F71,
+	0xBC77, 0x5FB7, 0xBC78, 0x5FB5, 0xBC79, 0x6176, 0xBC7A, 0x6167,
+	0xBC7B, 0x616E, 0xBC7C, 0x615D, 0xBC7D, 0x6155, 0xBC7E, 0x6182,
+	0xBCA1, 0x617C, 0xBCA2, 0x6170, 0xBCA3, 0x616B, 0xBCA4, 0x617E,
+	0xBCA5, 0x61A7, 0xBCA6, 0x6190, 0xBCA7, 0x61AB, 0xBCA8, 0x618E,
+	0xBCA9, 0x61AC, 0xBCAA, 0x619A, 0xBCAB, 0x61A4, 0xBCAC, 0x6194,
+	0xBCAD, 0x61AE, 0xBCAE, 0x622E, 0xBCAF, 0x6469, 0xBCB0, 0x646F,
+	0xBCB1, 0x6479, 0xBCB2, 0x649E, 0xBCB3, 0x64B2, 0xBCB4, 0x6488,
+	0xBCB5, 0x6490, 0xBCB6, 0x64B0, 0xBCB7, 0x64A5, 0xBCB8, 0x6493,
+	0xBCB9, 0x6495, 0xBCBA, 0x64A9, 0xBCBB, 0x6492, 0xBCBC, 0x64AE,
+	0xBCBD, 0x64AD, 0xBCBE, 0x64AB, 0xBCBF, 0x649A, 0xBCC0, 0x64AC,
+	0xBCC1, 0x6499, 0xBCC2, 0x64A2, 0xBCC3, 0x64B3, 0xBCC4, 0x6575,
+	0xBCC5, 0x6577, 0xBCC6, 0x6578, 0xBCC7, 0x66AE, 0xBCC8, 0x66AB,
+	0xBCC9, 0x66B4, 0xBCCA, 0x66B1, 0xBCCB, 0x6A23, 0xBCCC, 0x6A1F,
+	0xBCCD, 0x69E8, 0xBCCE, 0x6A01, 0xBCCF, 0x6A1E, 0xBCD0, 0x6A19,
+	0xBCD1, 0x69FD, 0xBCD2, 0x6A21, 0xBCD3, 0x6A13, 0xBCD4, 0x6A0A,
+	0xBCD5, 0x69F3, 0xBCD6, 0x6A02, 0xBCD7, 0x6A05, 0xBCD8, 0x69ED,
+	0xBCD9, 0x6A11, 0xBCDA, 0x6B50, 0xBCDB, 0x6B4E, 0xBCDC, 0x6BA4,
+	0xBCDD, 0x6BC5, 0xBCDE, 0x6BC6, 0xBCDF, 0x6F3F, 0xBCE0, 0x6F7C,
+	0xBCE1, 0x6F84, 0xBCE2, 0x6F51, 0xBCE3, 0x6F66, 0xBCE4, 0x6F54,
+	0xBCE5, 0x6F86, 0xBCE6, 0x6F6D, 0xBCE7, 0x6F5B, 0xBCE8, 0x6F78,
+	0xBCE9, 0x6F6E, 0xBCEA, 0x6F8E, 0xBCEB, 0x6F7A, 0xBCEC, 0x6F70,
+	0xBCED, 0x6F64, 0xBCEE, 0x6F97, 0xBCEF, 0x6F58, 0xBCF0, 0x6ED5,
+	0xBCF1, 0x6F6F, 0xBCF2, 0x6F60, 0xBCF3, 0x6F5F, 0xBCF4, 0x719F,
+	0xBCF5, 0x71AC, 0xBCF6, 0x71B1, 0xBCF7, 0x71A8, 0xBCF8, 0x7256,
+	0xBCF9, 0x729B, 0xBCFA, 0x734E, 0xBCFB, 0x7357, 0xBCFC, 0x7469,
+	0xBCFD, 0x748B, 0xBCFE, 0x7483, 0xBD40, 0x747E, 0xBD41, 0x7480,
+	0xBD42, 0x757F, 0xBD43, 0x7620, 0xBD44, 0x7629, 0xBD45, 0x761F,
+	0xBD46, 0x7624, 0xBD47, 0x7626, 0xBD48, 0x7621, 0xBD49, 0x7622,
+	0xBD4A, 0x769A, 0xBD4B, 0x76BA, 0xBD4C, 0x76E4, 0xBD4D, 0x778E,
+	0xBD4E, 0x7787, 0xBD4F, 0x778C, 0xBD50, 0x7791, 0xBD51, 0x778B,
+	0xBD52, 0x78CB, 0xBD53, 0x78C5, 0xBD54, 0x78BA, 0xBD55, 0x78CA,
+	0xBD56, 0x78BE, 0xBD57, 0x78D5, 0xBD58, 0x78BC, 0xBD59, 0x78D0,
+	0xBD5A, 0x7A3F, 0xBD5B, 0x7A3C, 0xBD5C, 0x7A40, 0xBD5D, 0x7A3D,
+	0xBD5E, 0x7A37, 0xBD5F, 0x7A3B, 0xBD60, 0x7AAF, 0xBD61, 0x7AAE,
+	0xBD62, 0x7BAD, 0xBD63, 0x7BB1, 0xBD64, 0x7BC4, 0xBD65, 0x7BB4,
+	0xBD66, 0x7BC6, 0xBD67, 0x7BC7, 0xBD68, 0x7BC1, 0xBD69, 0x7BA0,
+	0xBD6A, 0x7BCC, 0xBD6B, 0x7CCA, 0xBD6C, 0x7DE0, 0xBD6D, 0x7DF4,
+	0xBD6E, 0x7DEF, 0xBD6F, 0x7DFB, 0xBD70, 0x7DD8, 0xBD71, 0x7DEC,
+	0xBD72, 0x7DDD, 0xBD73, 0x7DE8, 0xBD74, 0x7DE3, 0xBD75, 0x7DDA,
+	0xBD76, 0x7DDE, 0xBD77, 0x7DE9, 0xBD78, 0x7D9E, 0xBD79, 0x7DD9,
+	0xBD7A, 0x7DF2, 0xBD7B, 0x7DF9, 0xBD7C, 0x7F75, 0xBD7D, 0x7F77,
+	0xBD7E, 0x7FAF, 0xBDA1, 0x7FE9, 0xBDA2, 0x8026, 0xBDA3, 0x819B,
+	0xBDA4, 0x819C, 0xBDA5, 0x819D, 0xBDA6, 0x81A0, 0xBDA7, 0x819A,
+	0xBDA8, 0x8198, 0xBDA9, 0x8517, 0xBDAA, 0x853D, 0xBDAB, 0x851A,
+	0xBDAC, 0x84EE, 0xBDAD, 0x852C, 0xBDAE, 0x852D, 0xBDAF, 0x8513,
+	0xBDB0, 0x8511, 0xBDB1, 0x8523, 0xBDB2, 0x8521, 0xBDB3, 0x8514,
+	0xBDB4, 0x84EC, 0xBDB5, 0x8525, 0xBDB6, 0x84FF, 0xBDB7, 0x8506,
+	0xBDB8, 0x8782, 0xBDB9, 0x8774, 0xBDBA, 0x8776, 0xBDBB, 0x8760,
+	0xBDBC, 0x8766, 0xBDBD, 0x8778, 0xBDBE, 0x8768, 0xBDBF, 0x8759,
+	0xBDC0, 0x8757, 0xBDC1, 0x874C, 0xBDC2, 0x8753, 0xBDC3, 0x885B,
+	0xBDC4, 0x885D, 0xBDC5, 0x8910, 0xBDC6, 0x8907, 0xBDC7, 0x8912,
+	0xBDC8, 0x8913, 0xBDC9, 0x8915, 0xBDCA, 0x890A, 0xBDCB, 0x8ABC,
+	0xBDCC, 0x8AD2, 0xBDCD, 0x8AC7, 0xBDCE, 0x8AC4, 0xBDCF, 0x8A95,
+	0xBDD0, 0x8ACB, 0xBDD1, 0x8AF8, 0xBDD2, 0x8AB2, 0xBDD3, 0x8AC9,
+	0xBDD4, 0x8AC2, 0xBDD5, 0x8ABF, 0xBDD6, 0x8AB0, 0xBDD7, 0x8AD6,
+	0xBDD8, 0x8ACD, 0xBDD9, 0x8AB6, 0xBDDA, 0x8AB9, 0xBDDB, 0x8ADB,
+	0xBDDC, 0x8C4C, 0xBDDD, 0x8C4E, 0xBDDE, 0x8C6C, 0xBDDF, 0x8CE0,
+	0xBDE0, 0x8CDE, 0xBDE1, 0x8CE6, 0xBDE2, 0x8CE4, 0xBDE3, 0x8CEC,
+	0xBDE4, 0x8CED, 0xBDE5, 0x8CE2, 0xBDE6, 0x8CE3, 0xBDE7, 0x8CDC,
+	0xBDE8, 0x8CEA, 0xBDE9, 0x8CE1, 0xBDEA, 0x8D6D, 0xBDEB, 0x8D9F,
+	0xBDEC, 0x8DA3, 0xBDED, 0x8E2B, 0xBDEE, 0x8E10, 0xBDEF, 0x8E1D,
+	0xBDF0, 0x8E22, 0xBDF1, 0x8E0F, 0xBDF2, 0x8E29, 0xBDF3, 0x8E1F,
+	0xBDF4, 0x8E21, 0xBDF5, 0x8E1E, 0xBDF6, 0x8EBA, 0xBDF7, 0x8F1D,
+	0xBDF8, 0x8F1B, 0xBDF9, 0x8F1F, 0xBDFA, 0x8F29, 0xBDFB, 0x8F26,
+	0xBDFC, 0x8F2A, 0xBDFD, 0x8F1C, 0xBDFE, 0x8F1E, 0xBE40, 0x8F25,
+	0xBE41, 0x9069, 0xBE42, 0x906E, 0xBE43, 0x9068, 0xBE44, 0x906D,
+	0xBE45, 0x9077, 0xBE46, 0x9130, 0xBE47, 0x912D, 0xBE48, 0x9127,
+	0xBE49, 0x9131, 0xBE4A, 0x9187, 0xBE4B, 0x9189, 0xBE4C, 0x918B,
+	0xBE4D, 0x9183, 0xBE4E, 0x92C5, 0xBE4F, 0x92BB, 0xBE50, 0x92B7,
+	0xBE51, 0x92EA, 0xBE52, 0x92AC, 0xBE53, 0x92E4, 0xBE54, 0x92C1,
+	0xBE55, 0x92B3, 0xBE56, 0x92BC, 0xBE57, 0x92D2, 0xBE58, 0x92C7,
+	0xBE59, 0x92F0, 0xBE5A, 0x92B2, 0xBE5B, 0x95AD, 0xBE5C, 0x95B1,
+	0xBE5D, 0x9704, 0xBE5E, 0x9706, 0xBE5F, 0x9707, 0xBE60, 0x9709,
+	0xBE61, 0x9760, 0xBE62, 0x978D, 0xBE63, 0x978B, 0xBE64, 0x978F,
+	0xBE65, 0x9821, 0xBE66, 0x982B, 0xBE67, 0x981C, 0xBE68, 0x98B3,
+	0xBE69, 0x990A, 0xBE6A, 0x9913, 0xBE6B, 0x9912, 0xBE6C, 0x9918,
+	0xBE6D, 0x99DD, 0xBE6E, 0x99D0, 0xBE6F, 0x99DF, 0xBE70, 0x99DB,
+	0xBE71, 0x99D1, 0xBE72, 0x99D5, 0xBE73, 0x99D2, 0xBE74, 0x99D9,
+	0xBE75, 0x9AB7, 0xBE76, 0x9AEE, 0xBE77, 0x9AEF, 0xBE78, 0x9B27,
+	0xBE79, 0x9B45, 0xBE7A, 0x9B44, 0xBE7B, 0x9B77, 0xBE7C, 0x9B6F,
+	0xBE7D, 0x9D06, 0xBE7E, 0x9D09, 0xBEA1, 0x9D03, 0xBEA2, 0x9EA9,
+	0xBEA3, 0x9EBE, 0xBEA4, 0x9ECE, 0xBEA5, 0x58A8, 0xBEA6, 0x9F52,
+	0xBEA7, 0x5112, 0xBEA8, 0x5118, 0xBEA9, 0x5114, 0xBEAA, 0x5110,
+	0xBEAB, 0x5115, 0xBEAC, 0x5180, 0xBEAD, 0x51AA, 0xBEAE, 0x51DD,
+	0xBEAF, 0x5291, 0xBEB0, 0x5293, 0xBEB1, 0x52F3, 0xBEB2, 0x5659,
+	0xBEB3, 0x566B, 0xBEB4, 0x5679, 0xBEB5, 0x5669, 0xBEB6, 0x5664,
+	0xBEB7, 0x5678, 0xBEB8, 0x566A, 0xBEB9, 0x5668, 0xBEBA, 0x5665,
+	0xBEBB, 0x5671, 0xBEBC, 0x566F, 0xBEBD, 0x566C, 0xBEBE, 0x5662,
+	0xBEBF, 0x5676, 0xBEC0, 0x58C1, 0xBEC1, 0x58BE, 0xBEC2, 0x58C7,
+	0xBEC3, 0x58C5, 0xBEC4, 0x596E, 0xBEC5, 0x5B1D, 0xBEC6, 0x5B34,
+	0xBEC7, 0x5B78, 0xBEC8, 0x5BF0, 0xBEC9, 0x5C0E, 0xBECA, 0x5F4A,
+	0xBECB, 0x61B2, 0xBECC, 0x6191, 0xBECD, 0x61A9, 0xBECE, 0x618A,
+	0xBECF, 0x61CD, 0xBED0, 0x61B6, 0xBED1, 0x61BE, 0xBED2, 0x61CA,
+	0xBED3, 0x61C8, 0xBED4, 0x6230, 0xBED5, 0x64C5, 0xBED6, 0x64C1,
+	0xBED7, 0x64CB, 0xBED8, 0x64BB, 0xBED9, 0x64BC, 0xBEDA, 0x64DA,
+	0xBEDB, 0x64C4, 0xBEDC, 0x64C7, 0xBEDD, 0x64C2, 0xBEDE, 0x64CD,
+	0xBEDF, 0x64BF, 0xBEE0, 0x64D2, 0xBEE1, 0x64D4, 0xBEE2, 0x64BE,
+	0xBEE3, 0x6574, 0xBEE4, 0x66C6, 0xBEE5, 0x66C9, 0xBEE6, 0x66B9,
+	0xBEE7, 0x66C4, 0xBEE8, 0x66C7, 0xBEE9, 0x66B8, 0xBEEA, 0x6A3D,
+	0xBEEB, 0x6A38, 0xBEEC, 0x6A3A, 0xBEED, 0x6A59, 0xBEEE, 0x6A6B,
+	0xBEEF, 0x6A58, 0xBEF0, 0x6A39, 0xBEF1, 0x6A44, 0xBEF2, 0x6A62,
+	0xBEF3, 0x6A61, 0xBEF4, 0x6A4B, 0xBEF5, 0x6A47, 0xBEF6, 0x6A35,
+	0xBEF7, 0x6A5F, 0xBEF8, 0x6A48, 0xBEF9, 0x6B59, 0xBEFA, 0x6B77,
+	0xBEFB, 0x6C05, 0xBEFC, 0x6FC2, 0xBEFD, 0x6FB1, 0xBEFE, 0x6FA1,
+	0xBF40, 0x6FC3, 0xBF41, 0x6FA4, 0xBF42, 0x6FC1, 0xBF43, 0x6FA7,
+	0xBF44, 0x6FB3, 0xBF45, 0x6FC0, 0xBF46, 0x6FB9, 0xBF47, 0x6FB6,
+	0xBF48, 0x6FA6, 0xBF49, 0x6FA0, 0xBF4A, 0x6FB4, 0xBF4B, 0x71BE,
+	0xBF4C, 0x71C9, 0xBF4D, 0x71D0, 0xBF4E, 0x71D2, 0xBF4F, 0x71C8,
+	0xBF50, 0x71D5, 0xBF51, 0x71B9, 0xBF52, 0x71CE, 0xBF53, 0x71D9,
+	0xBF54, 0x71DC, 0xBF55, 0x71C3, 0xBF56, 0x71C4, 0xBF57, 0x7368,
+	0xBF58, 0x749C, 0xBF59, 0x74A3, 0xBF5A, 0x7498, 0xBF5B, 0x749F,
+	0xBF5C, 0x749E, 0xBF5D, 0x74E2, 0xBF5E, 0x750C, 0xBF5F, 0x750D,
+	0xBF60, 0x7634, 0xBF61, 0x7638, 0xBF62, 0x763A, 0xBF63, 0x76E7,
+	0xBF64, 0x76E5, 0xBF65, 0x77A0, 0xBF66, 0x779E, 0xBF67, 0x779F,
+	0xBF68, 0x77A5, 0xBF69, 0x78E8, 0xBF6A, 0x78DA, 0xBF6B, 0x78EC,
+	0xBF6C, 0x78E7, 0xBF6D, 0x79A6, 0xBF6E, 0x7A4D, 0xBF6F, 0x7A4E,
+	0xBF70, 0x7A46, 0xBF71, 0x7A4C, 0xBF72, 0x7A4B, 0xBF73, 0x7ABA,
+	0xBF74, 0x7BD9, 0xBF75, 0x7C11, 0xBF76, 0x7BC9, 0xBF77, 0x7BE4,
+	0xBF78, 0x7BDB, 0xBF79, 0x7BE1, 0xBF7A, 0x7BE9, 0xBF7B, 0x7BE6,
+	0xBF7C, 0x7CD5, 0xBF7D, 0x7CD6, 0xBF7E, 0x7E0A, 0xBFA1, 0x7E11,
+	0xBFA2, 0x7E08, 0xBFA3, 0x7E1B, 0xBFA4, 0x7E23, 0xBFA5, 0x7E1E,
+	0xBFA6, 0x7E1D, 0xBFA7, 0x7E09, 0xBFA8, 0x7E10, 0xBFA9, 0x7F79,
+	0xBFAA, 0x7FB2, 0xBFAB, 0x7FF0, 0xBFAC, 0x7FF1, 0xBFAD, 0x7FEE,
+	0xBFAE, 0x8028, 0xBFAF, 0x81B3, 0xBFB0, 0x81A9, 0xBFB1, 0x81A8,
+	0xBFB2, 0x81FB, 0xBFB3, 0x8208, 0xBFB4, 0x8258, 0xBFB5, 0x8259,
+	0xBFB6, 0x854A, 0xBFB7, 0x8559, 0xBFB8, 0x8548, 0xBFB9, 0x8568,
+	0xBFBA, 0x8569, 0xBFBB, 0x8543, 0xBFBC, 0x8549, 0xBFBD, 0x856D,
+	0xBFBE, 0x856A, 0xBFBF, 0x855E, 0xBFC0, 0x8783, 0xBFC1, 0x879F,
+	0xBFC2, 0x879E, 0xBFC3, 0x87A2, 0xBFC4, 0x878D, 0xBFC5, 0x8861,
+	0xBFC6, 0x892A, 0xBFC7, 0x8932, 0xBFC8, 0x8925, 0xBFC9, 0x892B,
+	0xBFCA, 0x8921, 0xBFCB, 0x89AA, 0xBFCC, 0x89A6, 0xBFCD, 0x8AE6,
+	0xBFCE, 0x8AFA, 0xBFCF, 0x8AEB, 0xBFD0, 0x8AF1, 0xBFD1, 0x8B00,
+	0xBFD2, 0x8ADC, 0xBFD3, 0x8AE7, 0xBFD4, 0x8AEE, 0xBFD5, 0x8AFE,
+	0xBFD6, 0x8B01, 0xBFD7, 0x8B02, 0xBFD8, 0x8AF7, 0xBFD9, 0x8AED,
+	0xBFDA, 0x8AF3, 0xBFDB, 0x8AF6, 0xBFDC, 0x8AFC, 0xBFDD, 0x8C6B,
+	0xBFDE, 0x8C6D, 0xBFDF, 0x8C93, 0xBFE0, 0x8CF4, 0xBFE1, 0x8E44,
+	0xBFE2, 0x8E31, 0xBFE3, 0x8E34, 0xBFE4, 0x8E42, 0xBFE5, 0x8E39,
+	0xBFE6, 0x8E35, 0xBFE7, 0x8F3B, 0xBFE8, 0x8F2F, 0xBFE9, 0x8F38,
+	0xBFEA, 0x8F33, 0xBFEB, 0x8FA8, 0xBFEC, 0x8FA6, 0xBFED, 0x9075,
+	0xBFEE, 0x9074, 0xBFEF, 0x9078, 0xBFF0, 0x9072, 0xBFF1, 0x907C,
+	0xBFF2, 0x907A, 0xBFF3, 0x9134, 0xBFF4, 0x9192, 0xBFF5, 0x9320,
+	0xBFF6, 0x9336, 0xBFF7, 0x92F8, 0xBFF8, 0x9333, 0xBFF9, 0x932F,
+	0xBFFA, 0x9322, 0xBFFB, 0x92FC, 0xBFFC, 0x932B, 0xBFFD, 0x9304,
+	0xBFFE, 0x931A, 0xC040, 0x9310, 0xC041, 0x9326, 0xC042, 0x9321,
+	0xC043, 0x9315, 0xC044, 0x932E, 0xC045, 0x9319, 0xC046, 0x95BB,
+	0xC047, 0x96A7, 0xC048, 0x96A8, 0xC049, 0x96AA, 0xC04A, 0x96D5,
+	0xC04B, 0x970E, 0xC04C, 0x9711, 0xC04D, 0x9716, 0xC04E, 0x970D,
+	0xC04F, 0x9713, 0xC050, 0x970F, 0xC051, 0x975B, 0xC052, 0x975C,
+	0xC053, 0x9766, 0xC054, 0x9798, 0xC055, 0x9830, 0xC056, 0x9838,
+	0xC057, 0x983B, 0xC058, 0x9837, 0xC059, 0x982D, 0xC05A, 0x9839,
+	0xC05B, 0x9824, 0xC05C, 0x9910, 0xC05D, 0x9928, 0xC05E, 0x991E,
+	0xC05F, 0x991B, 0xC060, 0x9921, 0xC061, 0x991A, 0xC062, 0x99ED,
+	0xC063, 0x99E2, 0xC064, 0x99F1, 0xC065, 0x9AB8, 0xC066, 0x9ABC,
+	0xC067, 0x9AFB, 0xC068, 0x9AED, 0xC069, 0x9B28, 0xC06A, 0x9B91,
+	0xC06B, 0x9D15, 0xC06C, 0x9D23, 0xC06D, 0x9D26, 0xC06E, 0x9D28,
+	0xC06F, 0x9D12, 0xC070, 0x9D1B, 0xC071, 0x9ED8, 0xC072, 0x9ED4,
+	0xC073, 0x9F8D, 0xC074, 0x9F9C, 0xC075, 0x512A, 0xC076, 0x511F,
+	0xC077, 0x5121, 0xC078, 0x5132, 0xC079, 0x52F5, 0xC07A, 0x568E,
+	0xC07B, 0x5680, 0xC07C, 0x5690, 0xC07D, 0x5685, 0xC07E, 0x5687,
+	0xC0A1, 0x568F, 0xC0A2, 0x58D5, 0xC0A3, 0x58D3, 0xC0A4, 0x58D1,
+	0xC0A5, 0x58CE, 0xC0A6, 0x5B30, 0xC0A7, 0x5B2A, 0xC0A8, 0x5B24,
+	0xC0A9, 0x5B7A, 0xC0AA, 0x5C37, 0xC0AB, 0x5C68, 0xC0AC, 0x5DBC,
+	0xC0AD, 0x5DBA, 0xC0AE, 0x5DBD, 0xC0AF, 0x5DB8, 0xC0B0, 0x5E6B,
+	0xC0B1, 0x5F4C, 0xC0B2, 0x5FBD, 0xC0B3, 0x61C9, 0xC0B4, 0x61C2,
+	0xC0B5, 0x61C7, 0xC0B6, 0x61E6, 0xC0B7, 0x61CB, 0xC0B8, 0x6232,
+	0xC0B9, 0x6234, 0xC0BA, 0x64CE, 0xC0BB, 0x64CA, 0xC0BC, 0x64D8,
+	0xC0BD, 0x64E0, 0xC0BE, 0x64F0, 0xC0BF, 0x64E6, 0xC0C0, 0x64EC,
+	0xC0C1, 0x64F1, 0xC0C2, 0x64E2, 0xC0C3, 0x64ED, 0xC0C4, 0x6582,
+	0xC0C5, 0x6583, 0xC0C6, 0x66D9, 0xC0C7, 0x66D6, 0xC0C8, 0x6A80,
+	0xC0C9, 0x6A94, 0xC0CA, 0x6A84, 0xC0CB, 0x6AA2, 0xC0CC, 0x6A9C,
+	0xC0CD, 0x6ADB, 0xC0CE, 0x6AA3, 0xC0CF, 0x6A7E, 0xC0D0, 0x6A97,
+	0xC0D1, 0x6A90, 0xC0D2, 0x6AA0, 0xC0D3, 0x6B5C, 0xC0D4, 0x6BAE,
+	0xC0D5, 0x6BDA, 0xC0D6, 0x6C08, 0xC0D7, 0x6FD8, 0xC0D8, 0x6FF1,
+	0xC0D9, 0x6FDF, 0xC0DA, 0x6FE0, 0xC0DB, 0x6FDB, 0xC0DC, 0x6FE4,
+	0xC0DD, 0x6FEB, 0xC0DE, 0x6FEF, 0xC0DF, 0x6F80, 0xC0E0, 0x6FEC,
+	0xC0E1, 0x6FE1, 0xC0E2, 0x6FE9, 0xC0E3, 0x6FD5, 0xC0E4, 0x6FEE,
+	0xC0E5, 0x6FF0, 0xC0E6, 0x71E7, 0xC0E7, 0x71DF, 0xC0E8, 0x71EE,
+	0xC0E9, 0x71E6, 0xC0EA, 0x71E5, 0xC0EB, 0x71ED, 0xC0EC, 0x71EC,
+	0xC0ED, 0x71F4, 0xC0EE, 0x71E0, 0xC0EF, 0x7235, 0xC0F0, 0x7246,
+	0xC0F1, 0x7370, 0xC0F2, 0x7372, 0xC0F3, 0x74A9, 0xC0F4, 0x74B0,
+	0xC0F5, 0x74A6, 0xC0F6, 0x74A8, 0xC0F7, 0x7646, 0xC0F8, 0x7642,
+	0xC0F9, 0x764C, 0xC0FA, 0x76EA, 0xC0FB, 0x77B3, 0xC0FC, 0x77AA,
+	0xC0FD, 0x77B0, 0xC0FE, 0x77AC, 0xC140, 0x77A7, 0xC141, 0x77AD,
+	0xC142, 0x77EF, 0xC143, 0x78F7, 0xC144, 0x78FA, 0xC145, 0x78F4,
+	0xC146, 0x78EF, 0xC147, 0x7901, 0xC148, 0x79A7, 0xC149, 0x79AA,
+	0xC14A, 0x7A57, 0xC14B, 0x7ABF, 0xC14C, 0x7C07, 0xC14D, 0x7C0D,
+	0xC14E, 0x7BFE, 0xC14F, 0x7BF7, 0xC150, 0x7C0C, 0xC151, 0x7BE0,
+	0xC152, 0x7CE0, 0xC153, 0x7CDC, 0xC154, 0x7CDE, 0xC155, 0x7CE2,
+	0xC156, 0x7CDF, 0xC157, 0x7CD9, 0xC158, 0x7CDD, 0xC159, 0x7E2E,
+	0xC15A, 0x7E3E, 0xC15B, 0x7E46, 0xC15C, 0x7E37, 0xC15D, 0x7E32,
+	0xC15E, 0x7E43, 0xC15F, 0x7E2B, 0xC160, 0x7E3D, 0xC161, 0x7E31,
+	0xC162, 0x7E45, 0xC163, 0x7E41, 0xC164, 0x7E34, 0xC165, 0x7E39,
+	0xC166, 0x7E48, 0xC167, 0x7E35, 0xC168, 0x7E3F, 0xC169, 0x7E2F,
+	0xC16A, 0x7F44, 0xC16B, 0x7FF3, 0xC16C, 0x7FFC, 0xC16D, 0x8071,
+	0xC16E, 0x8072, 0xC16F, 0x8070, 0xC170, 0x806F, 0xC171, 0x8073,
+	0xC172, 0x81C6, 0xC173, 0x81C3, 0xC174, 0x81BA, 0xC175, 0x81C2,
+	0xC176, 0x81C0, 0xC177, 0x81BF, 0xC178, 0x81BD, 0xC179, 0x81C9,
+	0xC17A, 0x81BE, 0xC17B, 0x81E8, 0xC17C, 0x8209, 0xC17D, 0x8271,
+	0xC17E, 0x85AA, 0xC1A1, 0x8584, 0xC1A2, 0x857E, 0xC1A3, 0x859C,
+	0xC1A4, 0x8591, 0xC1A5, 0x8594, 0xC1A6, 0x85AF, 0xC1A7, 0x859B,
+	0xC1A8, 0x8587, 0xC1A9, 0x85A8, 0xC1AA, 0x858A, 0xC1AB, 0x8667,
+	0xC1AC, 0x87C0, 0xC1AD, 0x87D1, 0xC1AE, 0x87B3, 0xC1AF, 0x87D2,
+	0xC1B0, 0x87C6, 0xC1B1, 0x87AB, 0xC1B2, 0x87BB, 0xC1B3, 0x87BA,
+	0xC1B4, 0x87C8, 0xC1B5, 0x87CB, 0xC1B6, 0x893B, 0xC1B7, 0x8936,
+	0xC1B8, 0x8944, 0xC1B9, 0x8938, 0xC1BA, 0x893D, 0xC1BB, 0x89AC,
+	0xC1BC, 0x8B0E, 0xC1BD, 0x8B17, 0xC1BE, 0x8B19, 0xC1BF, 0x8B1B,
+	0xC1C0, 0x8B0A, 0xC1C1, 0x8B20, 0xC1C2, 0x8B1D, 0xC1C3, 0x8B04,
+	0xC1C4, 0x8B10, 0xC1C5, 0x8C41, 0xC1C6, 0x8C3F, 0xC1C7, 0x8C73,
+	0xC1C8, 0x8CFA, 0xC1C9, 0x8CFD, 0xC1CA, 0x8CFC, 0xC1CB, 0x8CF8,
+	0xC1CC, 0x8CFB, 0xC1CD, 0x8DA8, 0xC1CE, 0x8E49, 0xC1CF, 0x8E4B,
+	0xC1D0, 0x8E48, 0xC1D1, 0x8E4A, 0xC1D2, 0x8F44, 0xC1D3, 0x8F3E,
+	0xC1D4, 0x8F42, 0xC1D5, 0x8F45, 0xC1D6, 0x8F3F, 0xC1D7, 0x907F,
+	0xC1D8, 0x907D, 0xC1D9, 0x9084, 0xC1DA, 0x9081, 0xC1DB, 0x9082,
+	0xC1DC, 0x9080, 0xC1DD, 0x9139, 0xC1DE, 0x91A3, 0xC1DF, 0x919E,
+	0xC1E0, 0x919C, 0xC1E1, 0x934D, 0xC1E2, 0x9382, 0xC1E3, 0x9328,
+	0xC1E4, 0x9375, 0xC1E5, 0x934A, 0xC1E6, 0x9365, 0xC1E7, 0x934B,
+	0xC1E8, 0x9318, 0xC1E9, 0x937E, 0xC1EA, 0x936C, 0xC1EB, 0x935B,
+	0xC1EC, 0x9370, 0xC1ED, 0x935A, 0xC1EE, 0x9354, 0xC1EF, 0x95CA,
+	0xC1F0, 0x95CB, 0xC1F1, 0x95CC, 0xC1F2, 0x95C8, 0xC1F3, 0x95C6,
+	0xC1F4, 0x96B1, 0xC1F5, 0x96B8, 0xC1F6, 0x96D6, 0xC1F7, 0x971C,
+	0xC1F8, 0x971E, 0xC1F9, 0x97A0, 0xC1FA, 0x97D3, 0xC1FB, 0x9846,
+	0xC1FC, 0x98B6, 0xC1FD, 0x9935, 0xC1FE, 0x9A01, 0xC240, 0x99FF,
+	0xC241, 0x9BAE, 0xC242, 0x9BAB, 0xC243, 0x9BAA, 0xC244, 0x9BAD,
+	0xC245, 0x9D3B, 0xC246, 0x9D3F, 0xC247, 0x9E8B, 0xC248, 0x9ECF,
+	0xC249, 0x9EDE, 0xC24A, 0x9EDC, 0xC24B, 0x9EDD, 0xC24C, 0x9EDB,
+	0xC24D, 0x9F3E, 0xC24E, 0x9F4B, 0xC24F, 0x53E2, 0xC250, 0x5695,
+	0xC251, 0x56AE, 0xC252, 0x58D9, 0xC253, 0x58D8, 0xC254, 0x5B38,
+	0xC255, 0x5F5D, 0xC256, 0x61E3, 0xC257, 0x6233, 0xC258, 0x64F4,
+	0xC259, 0x64F2, 0xC25A, 0x64FE, 0xC25B, 0x6506, 0xC25C, 0x64FA,
+	0xC25D, 0x64FB, 0xC25E, 0x64F7, 0xC25F, 0x65B7, 0xC260, 0x66DC,
+	0xC261, 0x6726, 0xC262, 0x6AB3, 0xC263, 0x6AAC, 0xC264, 0x6AC3,
+	0xC265, 0x6ABB, 0xC266, 0x6AB8, 0xC267, 0x6AC2, 0xC268, 0x6AAE,
+	0xC269, 0x6AAF, 0xC26A, 0x6B5F, 0xC26B, 0x6B78, 0xC26C, 0x6BAF,
+	0xC26D, 0x7009, 0xC26E, 0x700B, 0xC26F, 0x6FFE, 0xC270, 0x7006,
+	0xC271, 0x6FFA, 0xC272, 0x7011, 0xC273, 0x700F, 0xC274, 0x71FB,
+	0xC275, 0x71FC, 0xC276, 0x71FE, 0xC277, 0x71F8, 0xC278, 0x7377,
+	0xC279, 0x7375, 0xC27A, 0x74A7, 0xC27B, 0x74BF, 0xC27C, 0x7515,
+	0xC27D, 0x7656, 0xC27E, 0x7658, 0xC2A1, 0x7652, 0xC2A2, 0x77BD,
+	0xC2A3, 0x77BF, 0xC2A4, 0x77BB, 0xC2A5, 0x77BC, 0xC2A6, 0x790E,
+	0xC2A7, 0x79AE, 0xC2A8, 0x7A61, 0xC2A9, 0x7A62, 0xC2AA, 0x7A60,
+	0xC2AB, 0x7AC4, 0xC2AC, 0x7AC5, 0xC2AD, 0x7C2B, 0xC2AE, 0x7C27,
+	0xC2AF, 0x7C2A, 0xC2B0, 0x7C1E, 0xC2B1, 0x7C23, 0xC2B2, 0x7C21,
+	0xC2B3, 0x7CE7, 0xC2B4, 0x7E54, 0xC2B5, 0x7E55, 0xC2B6, 0x7E5E,
+	0xC2B7, 0x7E5A, 0xC2B8, 0x7E61, 0xC2B9, 0x7E52, 0xC2BA, 0x7E59,
+	0xC2BB, 0x7F48, 0xC2BC, 0x7FF9, 0xC2BD, 0x7FFB, 0xC2BE, 0x8077,
+	0xC2BF, 0x8076, 0xC2C0, 0x81CD, 0xC2C1, 0x81CF, 0xC2C2, 0x820A,
+	0xC2C3, 0x85CF, 0xC2C4, 0x85A9, 0xC2C5, 0x85CD, 0xC2C6, 0x85D0,
+	0xC2C7, 0x85C9, 0xC2C8, 0x85B0, 0xC2C9, 0x85BA, 0xC2CA, 0x85B9,
+	0xC2CB, 0x85A6, 0xC2CC, 0x87EF, 0xC2CD, 0x87EC, 0xC2CE, 0x87F2,
+	0xC2CF, 0x87E0, 0xC2D0, 0x8986, 0xC2D1, 0x89B2, 0xC2D2, 0x89F4,
+	0xC2D3, 0x8B28, 0xC2D4, 0x8B39, 0xC2D5, 0x8B2C, 0xC2D6, 0x8B2B,
+	0xC2D7, 0x8C50, 0xC2D8, 0x8D05, 0xC2D9, 0x8E59, 0xC2DA, 0x8E63,
+	0xC2DB, 0x8E66, 0xC2DC, 0x8E64, 0xC2DD, 0x8E5F, 0xC2DE, 0x8E55,
+	0xC2DF, 0x8EC0, 0xC2E0, 0x8F49, 0xC2E1, 0x8F4D, 0xC2E2, 0x9087,
+	0xC2E3, 0x9083, 0xC2E4, 0x9088, 0xC2E5, 0x91AB, 0xC2E6, 0x91AC,
+	0xC2E7, 0x91D0, 0xC2E8, 0x9394, 0xC2E9, 0x938A, 0xC2EA, 0x9396,
+	0xC2EB, 0x93A2, 0xC2EC, 0x93B3, 0xC2ED, 0x93AE, 0xC2EE, 0x93AC,
+	0xC2EF, 0x93B0, 0xC2F0, 0x9398, 0xC2F1, 0x939A, 0xC2F2, 0x9397,
+	0xC2F3, 0x95D4, 0xC2F4, 0x95D6, 0xC2F5, 0x95D0, 0xC2F6, 0x95D5,
+	0xC2F7, 0x96E2, 0xC2F8, 0x96DC, 0xC2F9, 0x96D9, 0xC2FA, 0x96DB,
+	0xC2FB, 0x96DE, 0xC2FC, 0x9724, 0xC2FD, 0x97A3, 0xC2FE, 0x97A6,
+	0xC340, 0x97AD, 0xC341, 0x97F9, 0xC342, 0x984D, 0xC343, 0x984F,
+	0xC344, 0x984C, 0xC345, 0x984E, 0xC346, 0x9853, 0xC347, 0x98BA,
+	0xC348, 0x993E, 0xC349, 0x993F, 0xC34A, 0x993D, 0xC34B, 0x992E,
+	0xC34C, 0x99A5, 0xC34D, 0x9A0E, 0xC34E, 0x9AC1, 0xC34F, 0x9B03,
+	0xC350, 0x9B06, 0xC351, 0x9B4F, 0xC352, 0x9B4E, 0xC353, 0x9B4D,
+	0xC354, 0x9BCA, 0xC355, 0x9BC9, 0xC356, 0x9BFD, 0xC357, 0x9BC8,
+	0xC358, 0x9BC0, 0xC359, 0x9D51, 0xC35A, 0x9D5D, 0xC35B, 0x9D60,
+	0xC35C, 0x9EE0, 0xC35D, 0x9F15, 0xC35E, 0x9F2C, 0xC35F, 0x5133,
+	0xC360, 0x56A5, 0xC361, 0x58DE, 0xC362, 0x58DF, 0xC363, 0x58E2,
+	0xC364, 0x5BF5, 0xC365, 0x9F90, 0xC366, 0x5EEC, 0xC367, 0x61F2,
+	0xC368, 0x61F7, 0xC369, 0x61F6, 0xC36A, 0x61F5, 0xC36B, 0x6500,
+	0xC36C, 0x650F, 0xC36D, 0x66E0, 0xC36E, 0x66DD, 0xC36F, 0x6AE5,
+	0xC370, 0x6ADD, 0xC371, 0x6ADA, 0xC372, 0x6AD3, 0xC373, 0x701B,
+	0xC374, 0x701F, 0xC375, 0x7028, 0xC376, 0x701A, 0xC377, 0x701D,
+	0xC378, 0x7015, 0xC379, 0x7018, 0xC37A, 0x7206, 0xC37B, 0x720D,
+	0xC37C, 0x7258, 0xC37D, 0x72A2, 0xC37E, 0x7378, 0xC3A1, 0x737A,
+	0xC3A2, 0x74BD, 0xC3A3, 0x74CA, 0xC3A4, 0x74E3, 0xC3A5, 0x7587,
+	0xC3A6, 0x7586, 0xC3A7, 0x765F, 0xC3A8, 0x7661, 0xC3A9, 0x77C7,
+	0xC3AA, 0x7919, 0xC3AB, 0x79B1, 0xC3AC, 0x7A6B, 0xC3AD, 0x7A69,
+	0xC3AE, 0x7C3E, 0xC3AF, 0x7C3F, 0xC3B0, 0x7C38, 0xC3B1, 0x7C3D,
+	0xC3B2, 0x7C37, 0xC3B3, 0x7C40, 0xC3B4, 0x7E6B, 0xC3B5, 0x7E6D,
+	0xC3B6, 0x7E79, 0xC3B7, 0x7E69, 0xC3B8, 0x7E6A, 0xC3B9, 0x7F85,
+	0xC3BA, 0x7E73, 0xC3BB, 0x7FB6, 0xC3BC, 0x7FB9, 0xC3BD, 0x7FB8,
+	0xC3BE, 0x81D8, 0xC3BF, 0x85E9, 0xC3C0, 0x85DD, 0xC3C1, 0x85EA,
+	0xC3C2, 0x85D5, 0xC3C3, 0x85E4, 0xC3C4, 0x85E5, 0xC3C5, 0x85F7,
+	0xC3C6, 0x87FB, 0xC3C7, 0x8805, 0xC3C8, 0x880D, 0xC3C9, 0x87F9,
+	0xC3CA, 0x87FE, 0xC3CB, 0x8960, 0xC3CC, 0x895F, 0xC3CD, 0x8956,
+	0xC3CE, 0x895E, 0xC3CF, 0x8B41, 0xC3D0, 0x8B5C, 0xC3D1, 0x8B58,
+	0xC3D2, 0x8B49, 0xC3D3, 0x8B5A, 0xC3D4, 0x8B4E, 0xC3D5, 0x8B4F,
+	0xC3D6, 0x8B46, 0xC3D7, 0x8B59, 0xC3D8, 0x8D08, 0xC3D9, 0x8D0A,
+	0xC3DA, 0x8E7C, 0xC3DB, 0x8E72, 0xC3DC, 0x8E87, 0xC3DD, 0x8E76,
+	0xC3DE, 0x8E6C, 0xC3DF, 0x8E7A, 0xC3E0, 0x8E74, 0xC3E1, 0x8F54,
+	0xC3E2, 0x8F4E, 0xC3E3, 0x8FAD, 0xC3E4, 0x908A, 0xC3E5, 0x908B,
+	0xC3E6, 0x91B1, 0xC3E7, 0x91AE, 0xC3E8, 0x93E1, 0xC3E9, 0x93D1,
+	0xC3EA, 0x93DF, 0xC3EB, 0x93C3, 0xC3EC, 0x93C8, 0xC3ED, 0x93DC,
+	0xC3EE, 0x93DD, 0xC3EF, 0x93D6, 0xC3F0, 0x93E2, 0xC3F1, 0x93CD,
+	0xC3F2, 0x93D8, 0xC3F3, 0x93E4, 0xC3F4, 0x93D7, 0xC3F5, 0x93E8,
+	0xC3F6, 0x95DC, 0xC3F7, 0x96B4, 0xC3F8, 0x96E3, 0xC3F9, 0x972A,
+	0xC3FA, 0x9727, 0xC3FB, 0x9761, 0xC3FC, 0x97DC, 0xC3FD, 0x97FB,
+	0xC3FE, 0x985E, 0xC440, 0x9858, 0xC441, 0x985B, 0xC442, 0x98BC,
+	0xC443, 0x9945, 0xC444, 0x9949, 0xC445, 0x9A16, 0xC446, 0x9A19,
+	0xC447, 0x9B0D, 0xC448, 0x9BE8, 0xC449, 0x9BE7, 0xC44A, 0x9BD6,
+	0xC44B, 0x9BDB, 0xC44C, 0x9D89, 0xC44D, 0x9D61, 0xC44E, 0x9D72,
+	0xC44F, 0x9D6A, 0xC450, 0x9D6C, 0xC451, 0x9E92, 0xC452, 0x9E97,
+	0xC453, 0x9E93, 0xC454, 0x9EB4, 0xC455, 0x52F8, 0xC456, 0x56A8,
+	0xC457, 0x56B7, 0xC458, 0x56B6, 0xC459, 0x56B4, 0xC45A, 0x56BC,
+	0xC45B, 0x58E4, 0xC45C, 0x5B40, 0xC45D, 0x5B43, 0xC45E, 0x5B7D,
+	0xC45F, 0x5BF6, 0xC460, 0x5DC9, 0xC461, 0x61F8, 0xC462, 0x61FA,
+	0xC463, 0x6518, 0xC464, 0x6514, 0xC465, 0x6519, 0xC466, 0x66E6,
+	0xC467, 0x6727, 0xC468, 0x6AEC, 0xC469, 0x703E, 0xC46A, 0x7030,
+	0xC46B, 0x7032, 0xC46C, 0x7210, 0xC46D, 0x737B, 0xC46E, 0x74CF,
+	0xC46F, 0x7662, 0xC470, 0x7665, 0xC471, 0x7926, 0xC472, 0x792A,
+	0xC473, 0x792C, 0xC474, 0x792B, 0xC475, 0x7AC7, 0xC476, 0x7AF6,
+	0xC477, 0x7C4C, 0xC478, 0x7C43, 0xC479, 0x7C4D, 0xC47A, 0x7CEF,
+	0xC47B, 0x7CF0, 0xC47C, 0x8FAE, 0xC47D, 0x7E7D, 0xC47E, 0x7E7C,
+	0xC4A1, 0x7E82, 0xC4A2, 0x7F4C, 0xC4A3, 0x8000, 0xC4A4, 0x81DA,
+	0xC4A5, 0x8266, 0xC4A6, 0x85FB, 0xC4A7, 0x85F9, 0xC4A8, 0x8611,
+	0xC4A9, 0x85FA, 0xC4AA, 0x8606, 0xC4AB, 0x860B, 0xC4AC, 0x8607,
+	0xC4AD, 0x860A, 0xC4AE, 0x8814, 0xC4AF, 0x8815, 0xC4B0, 0x8964,
+	0xC4B1, 0x89BA, 0xC4B2, 0x89F8, 0xC4B3, 0x8B70, 0xC4B4, 0x8B6C,
+	0xC4B5, 0x8B66, 0xC4B6, 0x8B6F, 0xC4B7, 0x8B5F, 0xC4B8, 0x8B6B,
+	0xC4B9, 0x8D0F, 0xC4BA, 0x8D0D, 0xC4BB, 0x8E89, 0xC4BC, 0x8E81,
+	0xC4BD, 0x8E85, 0xC4BE, 0x8E82, 0xC4BF, 0x91B4, 0xC4C0, 0x91CB,
+	0xC4C1, 0x9418, 0xC4C2, 0x9403, 0xC4C3, 0x93FD, 0xC4C4, 0x95E1,
+	0xC4C5, 0x9730, 0xC4C6, 0x98C4, 0xC4C7, 0x9952, 0xC4C8, 0x9951,
+	0xC4C9, 0x99A8, 0xC4CA, 0x9A2B, 0xC4CB, 0x9A30, 0xC4CC, 0x9A37,
+	0xC4CD, 0x9A35, 0xC4CE, 0x9C13, 0xC4CF, 0x9C0D, 0xC4D0, 0x9E79,
+	0xC4D1, 0x9EB5, 0xC4D2, 0x9EE8, 0xC4D3, 0x9F2F, 0xC4D4, 0x9F5F,
+	0xC4D5, 0x9F63, 0xC4D6, 0x9F61, 0xC4D7, 0x5137, 0xC4D8, 0x5138,
+	0xC4D9, 0x56C1, 0xC4DA, 0x56C0, 0xC4DB, 0x56C2, 0xC4DC, 0x5914,
+	0xC4DD, 0x5C6C, 0xC4DE, 0x5DCD, 0xC4DF, 0x61FC, 0xC4E0, 0x61FE,
+	0xC4E1, 0x651D, 0xC4E2, 0x651C, 0xC4E3, 0x6595, 0xC4E4, 0x66E9,
+	0xC4E5, 0x6AFB, 0xC4E6, 0x6B04, 0xC4E7, 0x6AFA, 0xC4E8, 0x6BB2,
+	0xC4E9, 0x704C, 0xC4EA, 0x721B, 0xC4EB, 0x72A7, 0xC4EC, 0x74D6,
+	0xC4ED, 0x74D4, 0xC4EE, 0x7669, 0xC4EF, 0x77D3, 0xC4F0, 0x7C50,
+	0xC4F1, 0x7E8F, 0xC4F2, 0x7E8C, 0xC4F3, 0x7FBC, 0xC4F4, 0x8617,
+	0xC4F5, 0x862D, 0xC4F6, 0x861A, 0xC4F7, 0x8823, 0xC4F8, 0x8822,
+	0xC4F9, 0x8821, 0xC4FA, 0x881F, 0xC4FB, 0x896A, 0xC4FC, 0x896C,
+	0xC4FD, 0x89BD, 0xC4FE, 0x8B74, 0xC540, 0x8B77, 0xC541, 0x8B7D,
+	0xC542, 0x8D13, 0xC543, 0x8E8A, 0xC544, 0x8E8D, 0xC545, 0x8E8B,
+	0xC546, 0x8F5F, 0xC547, 0x8FAF, 0xC548, 0x91BA, 0xC549, 0x942E,
+	0xC54A, 0x9433, 0xC54B, 0x9435, 0xC54C, 0x943A, 0xC54D, 0x9438,
+	0xC54E, 0x9432, 0xC54F, 0x942B, 0xC550, 0x95E2, 0xC551, 0x9738,
+	0xC552, 0x9739, 0xC553, 0x9732, 0xC554, 0x97FF, 0xC555, 0x9867,
+	0xC556, 0x9865, 0xC557, 0x9957, 0xC558, 0x9A45, 0xC559, 0x9A43,
+	0xC55A, 0x9A40, 0xC55B, 0x9A3E, 0xC55C, 0x9ACF, 0xC55D, 0x9B54,
+	0xC55E, 0x9B51, 0xC55F, 0x9C2D, 0xC560, 0x9C25, 0xC561, 0x9DAF,
+	0xC562, 0x9DB4, 0xC563, 0x9DC2, 0xC564, 0x9DB8, 0xC565, 0x9E9D,
+	0xC566, 0x9EEF, 0xC567, 0x9F19, 0xC568, 0x9F5C, 0xC569, 0x9F66,
+	0xC56A, 0x9F67, 0xC56B, 0x513C, 0xC56C, 0x513B, 0xC56D, 0x56C8,
+	0xC56E, 0x56CA, 0xC56F, 0x56C9, 0xC570, 0x5B7F, 0xC571, 0x5DD4,
+	0xC572, 0x5DD2, 0xC573, 0x5F4E, 0xC574, 0x61FF, 0xC575, 0x6524,
+	0xC576, 0x6B0A, 0xC577, 0x6B61, 0xC578, 0x7051, 0xC579, 0x7058,
+	0xC57A, 0x7380, 0xC57B, 0x74E4, 0xC57C, 0x758A, 0xC57D, 0x766E,
+	0xC57E, 0x766C, 0xC5A1, 0x79B3, 0xC5A2, 0x7C60, 0xC5A3, 0x7C5F,
+	0xC5A4, 0x807E, 0xC5A5, 0x807D, 0xC5A6, 0x81DF, 0xC5A7, 0x8972,
+	0xC5A8, 0x896F, 0xC5A9, 0x89FC, 0xC5AA, 0x8B80, 0xC5AB, 0x8D16,
+	0xC5AC, 0x8D17, 0xC5AD, 0x8E91, 0xC5AE, 0x8E93, 0xC5AF, 0x8F61,
+	0xC5B0, 0x9148, 0xC5B1, 0x9444, 0xC5B2, 0x9451, 0xC5B3, 0x9452,
+	0xC5B4, 0x973D, 0xC5B5, 0x973E, 0xC5B6, 0x97C3, 0xC5B7, 0x97C1,
+	0xC5B8, 0x986B, 0xC5B9, 0x9955, 0xC5BA, 0x9A55, 0xC5BB, 0x9A4D,
+	0xC5BC, 0x9AD2, 0xC5BD, 0x9B1A, 0xC5BE, 0x9C49, 0xC5BF, 0x9C31,
+	0xC5C0, 0x9C3E, 0xC5C1, 0x9C3B, 0xC5C2, 0x9DD3, 0xC5C3, 0x9DD7,
+	0xC5C4, 0x9F34, 0xC5C5, 0x9F6C, 0xC5C6, 0x9F6A, 0xC5C7, 0x9F94,
+	0xC5C8, 0x56CC, 0xC5C9, 0x5DD6, 0xC5CA, 0x6200, 0xC5CB, 0x6523,
+	0xC5CC, 0x652B, 0xC5CD, 0x652A, 0xC5CE, 0x66EC, 0xC5CF, 0x6B10,
+	0xC5D0, 0x74DA, 0xC5D1, 0x7ACA, 0xC5D2, 0x7C64, 0xC5D3, 0x7C63,
+	0xC5D4, 0x7C65, 0xC5D5, 0x7E93, 0xC5D6, 0x7E96, 0xC5D7, 0x7E94,
+	0xC5D8, 0x81E2, 0xC5D9, 0x8638, 0xC5DA, 0x863F, 0xC5DB, 0x8831,
+	0xC5DC, 0x8B8A, 0xC5DD, 0x9090, 0xC5DE, 0x908F, 0xC5DF, 0x9463,
+	0xC5E0, 0x9460, 0xC5E1, 0x9464, 0xC5E2, 0x9768, 0xC5E3, 0x986F,
+	0xC5E4, 0x995C, 0xC5E5, 0x9A5A, 0xC5E6, 0x9A5B, 0xC5E7, 0x9A57,
+	0xC5E8, 0x9AD3, 0xC5E9, 0x9AD4, 0xC5EA, 0x9AD1, 0xC5EB, 0x9C54,
+	0xC5EC, 0x9C57, 0xC5ED, 0x9C56, 0xC5EE, 0x9DE5, 0xC5EF, 0x9E9F,
+	0xC5F0, 0x9EF4, 0xC5F1, 0x56D1, 0xC5F2, 0x58E9, 0xC5F3, 0x652C,
+	0xC5F4, 0x705E, 0xC5F5, 0x7671, 0xC5F6, 0x7672, 0xC5F7, 0x77D7,
+	0xC5F8, 0x7F50, 0xC5F9, 0x7F88, 0xC5FA, 0x8836, 0xC5FB, 0x8839,
+	0xC5FC, 0x8862, 0xC5FD, 0x8B93, 0xC5FE, 0x8B92, 0xC640, 0x8B96,
+	0xC641, 0x8277, 0xC642, 0x8D1B, 0xC643, 0x91C0, 0xC644, 0x946A,
+	0xC645, 0x9742, 0xC646, 0x9748, 0xC647, 0x9744, 0xC648, 0x97C6,
+	0xC649, 0x9870, 0xC64A, 0x9A5F, 0xC64B, 0x9B22, 0xC64C, 0x9B58,
+	0xC64D, 0x9C5F, 0xC64E, 0x9DF9, 0xC64F, 0x9DFA, 0xC650, 0x9E7C,
+	0xC651, 0x9E7D, 0xC652, 0x9F07, 0xC653, 0x9F77, 0xC654, 0x9F72,
+	0xC655, 0x5EF3, 0xC656, 0x6B16, 0xC657, 0x7063, 0xC658, 0x7C6C,
+	0xC659, 0x7C6E, 0xC65A, 0x883B, 0xC65B, 0x89C0, 0xC65C, 0x8EA1,
+	0xC65D, 0x91C1, 0xC65E, 0x9472, 0xC65F, 0x9470, 0xC660, 0x9871,
+	0xC661, 0x995E, 0xC662, 0x9AD6, 0xC663, 0x9B23, 0xC664, 0x9ECC,
+	0xC665, 0x7064, 0xC666, 0x77DA, 0xC667, 0x8B9A, 0xC668, 0x9477,
+	0xC669, 0x97C9, 0xC66A, 0x9A62, 0xC66B, 0x9A65, 0xC66C, 0x7E9C,
+	0xC66D, 0x8B9C, 0xC66E, 0x8EAA, 0xC66F, 0x91C5, 0xC670, 0x947D,
+	0xC671, 0x947E, 0xC672, 0x947C, 0xC673, 0x9C77, 0xC674, 0x9C78,
+	0xC675, 0x9EF7, 0xC676, 0x8C54, 0xC677, 0x947F, 0xC678, 0x9E1A,
+	0xC679, 0x7228, 0xC67A, 0x9A6A, 0xC67B, 0x9B31, 0xC67C, 0x9E1B,
+	0xC67D, 0x9E1E, 0xC67E, 0x7C72, 0xC940, 0x4E42, 0xC941, 0x4E5C,
+	0xC942, 0x51F5, 0xC943, 0x531A, 0xC944, 0x5382, 0xC945, 0x4E07,
+	0xC946, 0x4E0C, 0xC947, 0x4E47, 0xC948, 0x4E8D, 0xC949, 0x56D7,
+	0xC94A, 0xFA0C, 0xC94B, 0x5C6E, 0xC94C, 0x5F73, 0xC94D, 0x4E0F,
+	0xC94E, 0x5187, 0xC94F, 0x4E0E, 0xC950, 0x4E2E, 0xC951, 0x4E93,
+	0xC952, 0x4EC2, 0xC953, 0x4EC9, 0xC954, 0x4EC8, 0xC955, 0x5198,
+	0xC956, 0x52FC, 0xC957, 0x536C, 0xC958, 0x53B9, 0xC959, 0x5720,
+	0xC95A, 0x5903, 0xC95B, 0x592C, 0xC95C, 0x5C10, 0xC95D, 0x5DFF,
+	0xC95E, 0x65E1, 0xC95F, 0x6BB3, 0xC960, 0x6BCC, 0xC961, 0x6C14,
+	0xC962, 0x723F, 0xC963, 0x4E31, 0xC964, 0x4E3C, 0xC965, 0x4EE8,
+	0xC966, 0x4EDC, 0xC967, 0x4EE9, 0xC968, 0x4EE1, 0xC969, 0x4EDD,
+	0xC96A, 0x4EDA, 0xC96B, 0x520C, 0xC96C, 0x531C, 0xC96D, 0x534C,
+	0xC96E, 0x5722, 0xC96F, 0x5723, 0xC970, 0x5917, 0xC971, 0x592F,
+	0xC972, 0x5B81, 0xC973, 0x5B84, 0xC974, 0x5C12, 0xC975, 0x5C3B,
+	0xC976, 0x5C74, 0xC977, 0x5C73, 0xC978, 0x5E04, 0xC979, 0x5E80,
+	0xC97A, 0x5E82, 0xC97B, 0x5FC9, 0xC97C, 0x6209, 0xC97D, 0x6250,
+	0xC97E, 0x6C15, 0xC9A1, 0x6C36, 0xC9A2, 0x6C43, 0xC9A3, 0x6C3F,
+	0xC9A4, 0x6C3B, 0xC9A5, 0x72AE, 0xC9A6, 0x72B0, 0xC9A7, 0x738A,
+	0xC9A8, 0x79B8, 0xC9A9, 0x808A, 0xC9AA, 0x961E, 0xC9AB, 0x4F0E,
+	0xC9AC, 0x4F18, 0xC9AD, 0x4F2C, 0xC9AE, 0x4EF5, 0xC9AF, 0x4F14,
+	0xC9B0, 0x4EF1, 0xC9B1, 0x4F00, 0xC9B2, 0x4EF7, 0xC9B3, 0x4F08,
+	0xC9B4, 0x4F1D, 0xC9B5, 0x4F02, 0xC9B6, 0x4F05, 0xC9B7, 0x4F22,
+	0xC9B8, 0x4F13, 0xC9B9, 0x4F04, 0xC9BA, 0x4EF4, 0xC9BB, 0x4F12,
+	0xC9BC, 0x51B1, 0xC9BD, 0x5213, 0xC9BE, 0x5209, 0xC9BF, 0x5210,
+	0xC9C0, 0x52A6, 0xC9C1, 0x5322, 0xC9C2, 0x531F, 0xC9C3, 0x534D,
+	0xC9C4, 0x538A, 0xC9C5, 0x5407, 0xC9C6, 0x56E1, 0xC9C7, 0x56DF,
+	0xC9C8, 0x572E, 0xC9C9, 0x572A, 0xC9CA, 0x5734, 0xC9CB, 0x593C,
+	0xC9CC, 0x5980, 0xC9CD, 0x597C, 0xC9CE, 0x5985, 0xC9CF, 0x597B,
+	0xC9D0, 0x597E, 0xC9D1, 0x5977, 0xC9D2, 0x597F, 0xC9D3, 0x5B56,
+	0xC9D4, 0x5C15, 0xC9D5, 0x5C25, 0xC9D6, 0x5C7C, 0xC9D7, 0x5C7A,
+	0xC9D8, 0x5C7B, 0xC9D9, 0x5C7E, 0xC9DA, 0x5DDF, 0xC9DB, 0x5E75,
+	0xC9DC, 0x5E84, 0xC9DD, 0x5F02, 0xC9DE, 0x5F1A, 0xC9DF, 0x5F74,
+	0xC9E0, 0x5FD5, 0xC9E1, 0x5FD4, 0xC9E2, 0x5FCF, 0xC9E3, 0x625C,
+	0xC9E4, 0x625E, 0xC9E5, 0x6264, 0xC9E6, 0x6261, 0xC9E7, 0x6266,
+	0xC9E8, 0x6262, 0xC9E9, 0x6259, 0xC9EA, 0x6260, 0xC9EB, 0x625A,
+	0xC9EC, 0x6265, 0xC9ED, 0x65EF, 0xC9EE, 0x65EE, 0xC9EF, 0x673E,
+	0xC9F0, 0x6739, 0xC9F1, 0x6738, 0xC9F2, 0x673B, 0xC9F3, 0x673A,
+	0xC9F4, 0x673F, 0xC9F5, 0x673C, 0xC9F6, 0x6733, 0xC9F7, 0x6C18,
+	0xC9F8, 0x6C46, 0xC9F9, 0x6C52, 0xC9FA, 0x6C5C, 0xC9FB, 0x6C4F,
+	0xC9FC, 0x6C4A, 0xC9FD, 0x6C54, 0xC9FE, 0x6C4B, 0xCA40, 0x6C4C,
+	0xCA41, 0x7071, 0xCA42, 0x725E, 0xCA43, 0x72B4, 0xCA44, 0x72B5,
+	0xCA45, 0x738E, 0xCA46, 0x752A, 0xCA47, 0x767F, 0xCA48, 0x7A75,
+	0xCA49, 0x7F51, 0xCA4A, 0x8278, 0xCA4B, 0x827C, 0xCA4C, 0x8280,
+	0xCA4D, 0x827D, 0xCA4E, 0x827F, 0xCA4F, 0x864D, 0xCA50, 0x897E,
+	0xCA51, 0x9099, 0xCA52, 0x9097, 0xCA53, 0x9098, 0xCA54, 0x909B,
+	0xCA55, 0x9094, 0xCA56, 0x9622, 0xCA57, 0x9624, 0xCA58, 0x9620,
+	0xCA59, 0x9623, 0xCA5A, 0x4F56, 0xCA5B, 0x4F3B, 0xCA5C, 0x4F62,
+	0xCA5D, 0x4F49, 0xCA5E, 0x4F53, 0xCA5F, 0x4F64, 0xCA60, 0x4F3E,
+	0xCA61, 0x4F67, 0xCA62, 0x4F52, 0xCA63, 0x4F5F, 0xCA64, 0x4F41,
+	0xCA65, 0x4F58, 0xCA66, 0x4F2D, 0xCA67, 0x4F33, 0xCA68, 0x4F3F,
+	0xCA69, 0x4F61, 0xCA6A, 0x518F, 0xCA6B, 0x51B9, 0xCA6C, 0x521C,
+	0xCA6D, 0x521E, 0xCA6E, 0x5221, 0xCA6F, 0x52AD, 0xCA70, 0x52AE,
+	0xCA71, 0x5309, 0xCA72, 0x5363, 0xCA73, 0x5372, 0xCA74, 0x538E,
+	0xCA75, 0x538F, 0xCA76, 0x5430, 0xCA77, 0x5437, 0xCA78, 0x542A,
+	0xCA79, 0x5454, 0xCA7A, 0x5445, 0xCA7B, 0x5419, 0xCA7C, 0x541C,
+	0xCA7D, 0x5425, 0xCA7E, 0x5418, 0xCAA1, 0x543D, 0xCAA2, 0x544F,
+	0xCAA3, 0x5441, 0xCAA4, 0x5428, 0xCAA5, 0x5424, 0xCAA6, 0x5447,
+	0xCAA7, 0x56EE, 0xCAA8, 0x56E7, 0xCAA9, 0x56E5, 0xCAAA, 0x5741,
+	0xCAAB, 0x5745, 0xCAAC, 0x574C, 0xCAAD, 0x5749, 0xCAAE, 0x574B,
+	0xCAAF, 0x5752, 0xCAB0, 0x5906, 0xCAB1, 0x5940, 0xCAB2, 0x59A6,
+	0xCAB3, 0x5998, 0xCAB4, 0x59A0, 0xCAB5, 0x5997, 0xCAB6, 0x598E,
+	0xCAB7, 0x59A2, 0xCAB8, 0x5990, 0xCAB9, 0x598F, 0xCABA, 0x59A7,
+	0xCABB, 0x59A1, 0xCABC, 0x5B8E, 0xCABD, 0x5B92, 0xCABE, 0x5C28,
+	0xCABF, 0x5C2A, 0xCAC0, 0x5C8D, 0xCAC1, 0x5C8F, 0xCAC2, 0x5C88,
+	0xCAC3, 0x5C8B, 0xCAC4, 0x5C89, 0xCAC5, 0x5C92, 0xCAC6, 0x5C8A,
+	0xCAC7, 0x5C86, 0xCAC8, 0x5C93, 0xCAC9, 0x5C95, 0xCACA, 0x5DE0,
+	0xCACB, 0x5E0A, 0xCACC, 0x5E0E, 0xCACD, 0x5E8B, 0xCACE, 0x5E89,
+	0xCACF, 0x5E8C, 0xCAD0, 0x5E88, 0xCAD1, 0x5E8D, 0xCAD2, 0x5F05,
+	0xCAD3, 0x5F1D, 0xCAD4, 0x5F78, 0xCAD5, 0x5F76, 0xCAD6, 0x5FD2,
+	0xCAD7, 0x5FD1, 0xCAD8, 0x5FD0, 0xCAD9, 0x5FED, 0xCADA, 0x5FE8,
+	0xCADB, 0x5FEE, 0xCADC, 0x5FF3, 0xCADD, 0x5FE1, 0xCADE, 0x5FE4,
+	0xCADF, 0x5FE3, 0xCAE0, 0x5FFA, 0xCAE1, 0x5FEF, 0xCAE2, 0x5FF7,
+	0xCAE3, 0x5FFB, 0xCAE4, 0x6000, 0xCAE5, 0x5FF4, 0xCAE6, 0x623A,
+	0xCAE7, 0x6283, 0xCAE8, 0x628C, 0xCAE9, 0x628E, 0xCAEA, 0x628F,
+	0xCAEB, 0x6294, 0xCAEC, 0x6287, 0xCAED, 0x6271, 0xCAEE, 0x627B,
+	0xCAEF, 0x627A, 0xCAF0, 0x6270, 0xCAF1, 0x6281, 0xCAF2, 0x6288,
+	0xCAF3, 0x6277, 0xCAF4, 0x627D, 0xCAF5, 0x6272, 0xCAF6, 0x6274,
+	0xCAF7, 0x6537, 0xCAF8, 0x65F0, 0xCAF9, 0x65F4, 0xCAFA, 0x65F3,
+	0xCAFB, 0x65F2, 0xCAFC, 0x65F5, 0xCAFD, 0x6745, 0xCAFE, 0x6747,
+	0xCB40, 0x6759, 0xCB41, 0x6755, 0xCB42, 0x674C, 0xCB43, 0x6748,
+	0xCB44, 0x675D, 0xCB45, 0x674D, 0xCB46, 0x675A, 0xCB47, 0x674B,
+	0xCB48, 0x6BD0, 0xCB49, 0x6C19, 0xCB4A, 0x6C1A, 0xCB4B, 0x6C78,
+	0xCB4C, 0x6C67, 0xCB4D, 0x6C6B, 0xCB4E, 0x6C84, 0xCB4F, 0x6C8B,
+	0xCB50, 0x6C8F, 0xCB51, 0x6C71, 0xCB52, 0x6C6F, 0xCB53, 0x6C69,
+	0xCB54, 0x6C9A, 0xCB55, 0x6C6D, 0xCB56, 0x6C87, 0xCB57, 0x6C95,
+	0xCB58, 0x6C9C, 0xCB59, 0x6C66, 0xCB5A, 0x6C73, 0xCB5B, 0x6C65,
+	0xCB5C, 0x6C7B, 0xCB5D, 0x6C8E, 0xCB5E, 0x7074, 0xCB5F, 0x707A,
+	0xCB60, 0x7263, 0xCB61, 0x72BF, 0xCB62, 0x72BD, 0xCB63, 0x72C3,
+	0xCB64, 0x72C6, 0xCB65, 0x72C1, 0xCB66, 0x72BA, 0xCB67, 0x72C5,
+	0xCB68, 0x7395, 0xCB69, 0x7397, 0xCB6A, 0x7393, 0xCB6B, 0x7394,
+	0xCB6C, 0x7392, 0xCB6D, 0x753A, 0xCB6E, 0x7539, 0xCB6F, 0x7594,
+	0xCB70, 0x7595, 0xCB71, 0x7681, 0xCB72, 0x793D, 0xCB73, 0x8034,
+	0xCB74, 0x8095, 0xCB75, 0x8099, 0xCB76, 0x8090, 0xCB77, 0x8092,
+	0xCB78, 0x809C, 0xCB79, 0x8290, 0xCB7A, 0x828F, 0xCB7B, 0x8285,
+	0xCB7C, 0x828E, 0xCB7D, 0x8291, 0xCB7E, 0x8293, 0xCBA1, 0x828A,
+	0xCBA2, 0x8283, 0xCBA3, 0x8284, 0xCBA4, 0x8C78, 0xCBA5, 0x8FC9,
+	0xCBA6, 0x8FBF, 0xCBA7, 0x909F, 0xCBA8, 0x90A1, 0xCBA9, 0x90A5,
+	0xCBAA, 0x909E, 0xCBAB, 0x90A7, 0xCBAC, 0x90A0, 0xCBAD, 0x9630,
+	0xCBAE, 0x9628, 0xCBAF, 0x962F, 0xCBB0, 0x962D, 0xCBB1, 0x4E33,
+	0xCBB2, 0x4F98, 0xCBB3, 0x4F7C, 0xCBB4, 0x4F85, 0xCBB5, 0x4F7D,
+	0xCBB6, 0x4F80, 0xCBB7, 0x4F87, 0xCBB8, 0x4F76, 0xCBB9, 0x4F74,
+	0xCBBA, 0x4F89, 0xCBBB, 0x4F84, 0xCBBC, 0x4F77, 0xCBBD, 0x4F4C,
+	0xCBBE, 0x4F97, 0xCBBF, 0x4F6A, 0xCBC0, 0x4F9A, 0xCBC1, 0x4F79,
+	0xCBC2, 0x4F81, 0xCBC3, 0x4F78, 0xCBC4, 0x4F90, 0xCBC5, 0x4F9C,
+	0xCBC6, 0x4F94, 0xCBC7, 0x4F9E, 0xCBC8, 0x4F92, 0xCBC9, 0x4F82,
+	0xCBCA, 0x4F95, 0xCBCB, 0x4F6B, 0xCBCC, 0x4F6E, 0xCBCD, 0x519E,
+	0xCBCE, 0x51BC, 0xCBCF, 0x51BE, 0xCBD0, 0x5235, 0xCBD1, 0x5232,
+	0xCBD2, 0x5233, 0xCBD3, 0x5246, 0xCBD4, 0x5231, 0xCBD5, 0x52BC,
+	0xCBD6, 0x530A, 0xCBD7, 0x530B, 0xCBD8, 0x533C, 0xCBD9, 0x5392,
+	0xCBDA, 0x5394, 0xCBDB, 0x5487, 0xCBDC, 0x547F, 0xCBDD, 0x5481,
+	0xCBDE, 0x5491, 0xCBDF, 0x5482, 0xCBE0, 0x5488, 0xCBE1, 0x546B,
+	0xCBE2, 0x547A, 0xCBE3, 0x547E, 0xCBE4, 0x5465, 0xCBE5, 0x546C,
+	0xCBE6, 0x5474, 0xCBE7, 0x5466, 0xCBE8, 0x548D, 0xCBE9, 0x546F,
+	0xCBEA, 0x5461, 0xCBEB, 0x5460, 0xCBEC, 0x5498, 0xCBED, 0x5463,
+	0xCBEE, 0x5467, 0xCBEF, 0x5464, 0xCBF0, 0x56F7, 0xCBF1, 0x56F9,
+	0xCBF2, 0x576F, 0xCBF3, 0x5772, 0xCBF4, 0x576D, 0xCBF5, 0x576B,
+	0xCBF6, 0x5771, 0xCBF7, 0x5770, 0xCBF8, 0x5776, 0xCBF9, 0x5780,
+	0xCBFA, 0x5775, 0xCBFB, 0x577B, 0xCBFC, 0x5773, 0xCBFD, 0x5774,
+	0xCBFE, 0x5762, 0xCC40, 0x5768, 0xCC41, 0x577D, 0xCC42, 0x590C,
+	0xCC43, 0x5945, 0xCC44, 0x59B5, 0xCC45, 0x59BA, 0xCC46, 0x59CF,
+	0xCC47, 0x59CE, 0xCC48, 0x59B2, 0xCC49, 0x59CC, 0xCC4A, 0x59C1,
+	0xCC4B, 0x59B6, 0xCC4C, 0x59BC, 0xCC4D, 0x59C3, 0xCC4E, 0x59D6,
+	0xCC4F, 0x59B1, 0xCC50, 0x59BD, 0xCC51, 0x59C0, 0xCC52, 0x59C8,
+	0xCC53, 0x59B4, 0xCC54, 0x59C7, 0xCC55, 0x5B62, 0xCC56, 0x5B65,
+	0xCC57, 0x5B93, 0xCC58, 0x5B95, 0xCC59, 0x5C44, 0xCC5A, 0x5C47,
+	0xCC5B, 0x5CAE, 0xCC5C, 0x5CA4, 0xCC5D, 0x5CA0, 0xCC5E, 0x5CB5,
+	0xCC5F, 0x5CAF, 0xCC60, 0x5CA8, 0xCC61, 0x5CAC, 0xCC62, 0x5C9F,
+	0xCC63, 0x5CA3, 0xCC64, 0x5CAD, 0xCC65, 0x5CA2, 0xCC66, 0x5CAA,
+	0xCC67, 0x5CA7, 0xCC68, 0x5C9D, 0xCC69, 0x5CA5, 0xCC6A, 0x5CB6,
+	0xCC6B, 0x5CB0, 0xCC6C, 0x5CA6, 0xCC6D, 0x5E17, 0xCC6E, 0x5E14,
+	0xCC6F, 0x5E19, 0xCC70, 0x5F28, 0xCC71, 0x5F22, 0xCC72, 0x5F23,
+	0xCC73, 0x5F24, 0xCC74, 0x5F54, 0xCC75, 0x5F82, 0xCC76, 0x5F7E,
+	0xCC77, 0x5F7D, 0xCC78, 0x5FDE, 0xCC79, 0x5FE5, 0xCC7A, 0x602D,
+	0xCC7B, 0x6026, 0xCC7C, 0x6019, 0xCC7D, 0x6032, 0xCC7E, 0x600B,
+	0xCCA1, 0x6034, 0xCCA2, 0x600A, 0xCCA3, 0x6017, 0xCCA4, 0x6033,
+	0xCCA5, 0x601A, 0xCCA6, 0x601E, 0xCCA7, 0x602C, 0xCCA8, 0x6022,
+	0xCCA9, 0x600D, 0xCCAA, 0x6010, 0xCCAB, 0x602E, 0xCCAC, 0x6013,
+	0xCCAD, 0x6011, 0xCCAE, 0x600C, 0xCCAF, 0x6009, 0xCCB0, 0x601C,
+	0xCCB1, 0x6214, 0xCCB2, 0x623D, 0xCCB3, 0x62AD, 0xCCB4, 0x62B4,
+	0xCCB5, 0x62D1, 0xCCB6, 0x62BE, 0xCCB7, 0x62AA, 0xCCB8, 0x62B6,
+	0xCCB9, 0x62CA, 0xCCBA, 0x62AE, 0xCCBB, 0x62B3, 0xCCBC, 0x62AF,
+	0xCCBD, 0x62BB, 0xCCBE, 0x62A9, 0xCCBF, 0x62B0, 0xCCC0, 0x62B8,
+	0xCCC1, 0x653D, 0xCCC2, 0x65A8, 0xCCC3, 0x65BB, 0xCCC4, 0x6609,
+	0xCCC5, 0x65FC, 0xCCC6, 0x6604, 0xCCC7, 0x6612, 0xCCC8, 0x6608,
+	0xCCC9, 0x65FB, 0xCCCA, 0x6603, 0xCCCB, 0x660B, 0xCCCC, 0x660D,
+	0xCCCD, 0x6605, 0xCCCE, 0x65FD, 0xCCCF, 0x6611, 0xCCD0, 0x6610,
+	0xCCD1, 0x66F6, 0xCCD2, 0x670A, 0xCCD3, 0x6785, 0xCCD4, 0x676C,
+	0xCCD5, 0x678E, 0xCCD6, 0x6792, 0xCCD7, 0x6776, 0xCCD8, 0x677B,
+	0xCCD9, 0x6798, 0xCCDA, 0x6786, 0xCCDB, 0x6784, 0xCCDC, 0x6774,
+	0xCCDD, 0x678D, 0xCCDE, 0x678C, 0xCCDF, 0x677A, 0xCCE0, 0x679F,
+	0xCCE1, 0x6791, 0xCCE2, 0x6799, 0xCCE3, 0x6783, 0xCCE4, 0x677D,
+	0xCCE5, 0x6781, 0xCCE6, 0x6778, 0xCCE7, 0x6779, 0xCCE8, 0x6794,
+	0xCCE9, 0x6B25, 0xCCEA, 0x6B80, 0xCCEB, 0x6B7E, 0xCCEC, 0x6BDE,
+	0xCCED, 0x6C1D, 0xCCEE, 0x6C93, 0xCCEF, 0x6CEC, 0xCCF0, 0x6CEB,
+	0xCCF1, 0x6CEE, 0xCCF2, 0x6CD9, 0xCCF3, 0x6CB6, 0xCCF4, 0x6CD4,
+	0xCCF5, 0x6CAD, 0xCCF6, 0x6CE7, 0xCCF7, 0x6CB7, 0xCCF8, 0x6CD0,
+	0xCCF9, 0x6CC2, 0xCCFA, 0x6CBA, 0xCCFB, 0x6CC3, 0xCCFC, 0x6CC6,
+	0xCCFD, 0x6CED, 0xCCFE, 0x6CF2, 0xCD40, 0x6CD2, 0xCD41, 0x6CDD,
+	0xCD42, 0x6CB4, 0xCD43, 0x6C8A, 0xCD44, 0x6C9D, 0xCD45, 0x6C80,
+	0xCD46, 0x6CDE, 0xCD47, 0x6CC0, 0xCD48, 0x6D30, 0xCD49, 0x6CCD,
+	0xCD4A, 0x6CC7, 0xCD4B, 0x6CB0, 0xCD4C, 0x6CF9, 0xCD4D, 0x6CCF,
+	0xCD4E, 0x6CE9, 0xCD4F, 0x6CD1, 0xCD50, 0x7094, 0xCD51, 0x7098,
+	0xCD52, 0x7085, 0xCD53, 0x7093, 0xCD54, 0x7086, 0xCD55, 0x7084,
+	0xCD56, 0x7091, 0xCD57, 0x7096, 0xCD58, 0x7082, 0xCD59, 0x709A,
+	0xCD5A, 0x7083, 0xCD5B, 0x726A, 0xCD5C, 0x72D6, 0xCD5D, 0x72CB,
+	0xCD5E, 0x72D8, 0xCD5F, 0x72C9, 0xCD60, 0x72DC, 0xCD61, 0x72D2,
+	0xCD62, 0x72D4, 0xCD63, 0x72DA, 0xCD64, 0x72CC, 0xCD65, 0x72D1,
+	0xCD66, 0x73A4, 0xCD67, 0x73A1, 0xCD68, 0x73AD, 0xCD69, 0x73A6,
+	0xCD6A, 0x73A2, 0xCD6B, 0x73A0, 0xCD6C, 0x73AC, 0xCD6D, 0x739D,
+	0xCD6E, 0x74DD, 0xCD6F, 0x74E8, 0xCD70, 0x753F, 0xCD71, 0x7540,
+	0xCD72, 0x753E, 0xCD73, 0x758C, 0xCD74, 0x7598, 0xCD75, 0x76AF,
+	0xCD76, 0x76F3, 0xCD77, 0x76F1, 0xCD78, 0x76F0, 0xCD79, 0x76F5,
+	0xCD7A, 0x77F8, 0xCD7B, 0x77FC, 0xCD7C, 0x77F9, 0xCD7D, 0x77FB,
+	0xCD7E, 0x77FA, 0xCDA1, 0x77F7, 0xCDA2, 0x7942, 0xCDA3, 0x793F,
+	0xCDA4, 0x79C5, 0xCDA5, 0x7A78, 0xCDA6, 0x7A7B, 0xCDA7, 0x7AFB,
+	0xCDA8, 0x7C75, 0xCDA9, 0x7CFD, 0xCDAA, 0x8035, 0xCDAB, 0x808F,
+	0xCDAC, 0x80AE, 0xCDAD, 0x80A3, 0xCDAE, 0x80B8, 0xCDAF, 0x80B5,
+	0xCDB0, 0x80AD, 0xCDB1, 0x8220, 0xCDB2, 0x82A0, 0xCDB3, 0x82C0,
+	0xCDB4, 0x82AB, 0xCDB5, 0x829A, 0xCDB6, 0x8298, 0xCDB7, 0x829B,
+	0xCDB8, 0x82B5, 0xCDB9, 0x82A7, 0xCDBA, 0x82AE, 0xCDBB, 0x82BC,
+	0xCDBC, 0x829E, 0xCDBD, 0x82BA, 0xCDBE, 0x82B4, 0xCDBF, 0x82A8,
+	0xCDC0, 0x82A1, 0xCDC1, 0x82A9, 0xCDC2, 0x82C2, 0xCDC3, 0x82A4,
+	0xCDC4, 0x82C3, 0xCDC5, 0x82B6, 0xCDC6, 0x82A2, 0xCDC7, 0x8670,
+	0xCDC8, 0x866F, 0xCDC9, 0x866D, 0xCDCA, 0x866E, 0xCDCB, 0x8C56,
+	0xCDCC, 0x8FD2, 0xCDCD, 0x8FCB, 0xCDCE, 0x8FD3, 0xCDCF, 0x8FCD,
+	0xCDD0, 0x8FD6, 0xCDD1, 0x8FD5, 0xCDD2, 0x8FD7, 0xCDD3, 0x90B2,
+	0xCDD4, 0x90B4, 0xCDD5, 0x90AF, 0xCDD6, 0x90B3, 0xCDD7, 0x90B0,
+	0xCDD8, 0x9639, 0xCDD9, 0x963D, 0xCDDA, 0x963C, 0xCDDB, 0x963A,
+	0xCDDC, 0x9643, 0xCDDD, 0x4FCD, 0xCDDE, 0x4FC5, 0xCDDF, 0x4FD3,
+	0xCDE0, 0x4FB2, 0xCDE1, 0x4FC9, 0xCDE2, 0x4FCB, 0xCDE3, 0x4FC1,
+	0xCDE4, 0x4FD4, 0xCDE5, 0x4FDC, 0xCDE6, 0x4FD9, 0xCDE7, 0x4FBB,
+	0xCDE8, 0x4FB3, 0xCDE9, 0x4FDB, 0xCDEA, 0x4FC7, 0xCDEB, 0x4FD6,
+	0xCDEC, 0x4FBA, 0xCDED, 0x4FC0, 0xCDEE, 0x4FB9, 0xCDEF, 0x4FEC,
+	0xCDF0, 0x5244, 0xCDF1, 0x5249, 0xCDF2, 0x52C0, 0xCDF3, 0x52C2,
+	0xCDF4, 0x533D, 0xCDF5, 0x537C, 0xCDF6, 0x5397, 0xCDF7, 0x5396,
+	0xCDF8, 0x5399, 0xCDF9, 0x5398, 0xCDFA, 0x54BA, 0xCDFB, 0x54A1,
+	0xCDFC, 0x54AD, 0xCDFD, 0x54A5, 0xCDFE, 0x54CF, 0xCE40, 0x54C3,
+	0xCE41, 0x830D, 0xCE42, 0x54B7, 0xCE43, 0x54AE, 0xCE44, 0x54D6,
+	0xCE45, 0x54B6, 0xCE46, 0x54C5, 0xCE47, 0x54C6, 0xCE48, 0x54A0,
+	0xCE49, 0x5470, 0xCE4A, 0x54BC, 0xCE4B, 0x54A2, 0xCE4C, 0x54BE,
+	0xCE4D, 0x5472, 0xCE4E, 0x54DE, 0xCE4F, 0x54B0, 0xCE50, 0x57B5,
+	0xCE51, 0x579E, 0xCE52, 0x579F, 0xCE53, 0x57A4, 0xCE54, 0x578C,
+	0xCE55, 0x5797, 0xCE56, 0x579D, 0xCE57, 0x579B, 0xCE58, 0x5794,
+	0xCE59, 0x5798, 0xCE5A, 0x578F, 0xCE5B, 0x5799, 0xCE5C, 0x57A5,
+	0xCE5D, 0x579A, 0xCE5E, 0x5795, 0xCE5F, 0x58F4, 0xCE60, 0x590D,
+	0xCE61, 0x5953, 0xCE62, 0x59E1, 0xCE63, 0x59DE, 0xCE64, 0x59EE,
+	0xCE65, 0x5A00, 0xCE66, 0x59F1, 0xCE67, 0x59DD, 0xCE68, 0x59FA,
+	0xCE69, 0x59FD, 0xCE6A, 0x59FC, 0xCE6B, 0x59F6, 0xCE6C, 0x59E4,
+	0xCE6D, 0x59F2, 0xCE6E, 0x59F7, 0xCE6F, 0x59DB, 0xCE70, 0x59E9,
+	0xCE71, 0x59F3, 0xCE72, 0x59F5, 0xCE73, 0x59E0, 0xCE74, 0x59FE,
+	0xCE75, 0x59F4, 0xCE76, 0x59ED, 0xCE77, 0x5BA8, 0xCE78, 0x5C4C,
+	0xCE79, 0x5CD0, 0xCE7A, 0x5CD8, 0xCE7B, 0x5CCC, 0xCE7C, 0x5CD7,
+	0xCE7D, 0x5CCB, 0xCE7E, 0x5CDB, 0xCEA1, 0x5CDE, 0xCEA2, 0x5CDA,
+	0xCEA3, 0x5CC9, 0xCEA4, 0x5CC7, 0xCEA5, 0x5CCA, 0xCEA6, 0x5CD6,
+	0xCEA7, 0x5CD3, 0xCEA8, 0x5CD4, 0xCEA9, 0x5CCF, 0xCEAA, 0x5CC8,
+	0xCEAB, 0x5CC6, 0xCEAC, 0x5CCE, 0xCEAD, 0x5CDF, 0xCEAE, 0x5CF8,
+	0xCEAF, 0x5DF9, 0xCEB0, 0x5E21, 0xCEB1, 0x5E22, 0xCEB2, 0x5E23,
+	0xCEB3, 0x5E20, 0xCEB4, 0x5E24, 0xCEB5, 0x5EB0, 0xCEB6, 0x5EA4,
+	0xCEB7, 0x5EA2, 0xCEB8, 0x5E9B, 0xCEB9, 0x5EA3, 0xCEBA, 0x5EA5,
+	0xCEBB, 0x5F07, 0xCEBC, 0x5F2E, 0xCEBD, 0x5F56, 0xCEBE, 0x5F86,
+	0xCEBF, 0x6037, 0xCEC0, 0x6039, 0xCEC1, 0x6054, 0xCEC2, 0x6072,
+	0xCEC3, 0x605E, 0xCEC4, 0x6045, 0xCEC5, 0x6053, 0xCEC6, 0x6047,
+	0xCEC7, 0x6049, 0xCEC8, 0x605B, 0xCEC9, 0x604C, 0xCECA, 0x6040,
+	0xCECB, 0x6042, 0xCECC, 0x605F, 0xCECD, 0x6024, 0xCECE, 0x6044,
+	0xCECF, 0x6058, 0xCED0, 0x6066, 0xCED1, 0x606E, 0xCED2, 0x6242,
+	0xCED3, 0x6243, 0xCED4, 0x62CF, 0xCED5, 0x630D, 0xCED6, 0x630B,
+	0xCED7, 0x62F5, 0xCED8, 0x630E, 0xCED9, 0x6303, 0xCEDA, 0x62EB,
+	0xCEDB, 0x62F9, 0xCEDC, 0x630F, 0xCEDD, 0x630C, 0xCEDE, 0x62F8,
+	0xCEDF, 0x62F6, 0xCEE0, 0x6300, 0xCEE1, 0x6313, 0xCEE2, 0x6314,
+	0xCEE3, 0x62FA, 0xCEE4, 0x6315, 0xCEE5, 0x62FB, 0xCEE6, 0x62F0,
+	0xCEE7, 0x6541, 0xCEE8, 0x6543, 0xCEE9, 0x65AA, 0xCEEA, 0x65BF,
+	0xCEEB, 0x6636, 0xCEEC, 0x6621, 0xCEED, 0x6632, 0xCEEE, 0x6635,
+	0xCEEF, 0x661C, 0xCEF0, 0x6626, 0xCEF1, 0x6622, 0xCEF2, 0x6633,
+	0xCEF3, 0x662B, 0xCEF4, 0x663A, 0xCEF5, 0x661D, 0xCEF6, 0x6634,
+	0xCEF7, 0x6639, 0xCEF8, 0x662E, 0xCEF9, 0x670F, 0xCEFA, 0x6710,
+	0xCEFB, 0x67C1, 0xCEFC, 0x67F2, 0xCEFD, 0x67C8, 0xCEFE, 0x67BA,
+	0xCF40, 0x67DC, 0xCF41, 0x67BB, 0xCF42, 0x67F8, 0xCF43, 0x67D8,
+	0xCF44, 0x67C0, 0xCF45, 0x67B7, 0xCF46, 0x67C5, 0xCF47, 0x67EB,
+	0xCF48, 0x67E4, 0xCF49, 0x67DF, 0xCF4A, 0x67B5, 0xCF4B, 0x67CD,
+	0xCF4C, 0x67B3, 0xCF4D, 0x67F7, 0xCF4E, 0x67F6, 0xCF4F, 0x67EE,
+	0xCF50, 0x67E3, 0xCF51, 0x67C2, 0xCF52, 0x67B9, 0xCF53, 0x67CE,
+	0xCF54, 0x67E7, 0xCF55, 0x67F0, 0xCF56, 0x67B2, 0xCF57, 0x67FC,
+	0xCF58, 0x67C6, 0xCF59, 0x67ED, 0xCF5A, 0x67CC, 0xCF5B, 0x67AE,
+	0xCF5C, 0x67E6, 0xCF5D, 0x67DB, 0xCF5E, 0x67FA, 0xCF5F, 0x67C9,
+	0xCF60, 0x67CA, 0xCF61, 0x67C3, 0xCF62, 0x67EA, 0xCF63, 0x67CB,
+	0xCF64, 0x6B28, 0xCF65, 0x6B82, 0xCF66, 0x6B84, 0xCF67, 0x6BB6,
+	0xCF68, 0x6BD6, 0xCF69, 0x6BD8, 0xCF6A, 0x6BE0, 0xCF6B, 0x6C20,
+	0xCF6C, 0x6C21, 0xCF6D, 0x6D28, 0xCF6E, 0x6D34, 0xCF6F, 0x6D2D,
+	0xCF70, 0x6D1F, 0xCF71, 0x6D3C, 0xCF72, 0x6D3F, 0xCF73, 0x6D12,
+	0xCF74, 0x6D0A, 0xCF75, 0x6CDA, 0xCF76, 0x6D33, 0xCF77, 0x6D04,
+	0xCF78, 0x6D19, 0xCF79, 0x6D3A, 0xCF7A, 0x6D1A, 0xCF7B, 0x6D11,
+	0xCF7C, 0x6D00, 0xCF7D, 0x6D1D, 0xCF7E, 0x6D42, 0xCFA1, 0x6D01,
+	0xCFA2, 0x6D18, 0xCFA3, 0x6D37, 0xCFA4, 0x6D03, 0xCFA5, 0x6D0F,
+	0xCFA6, 0x6D40, 0xCFA7, 0x6D07, 0xCFA8, 0x6D20, 0xCFA9, 0x6D2C,
+	0xCFAA, 0x6D08, 0xCFAB, 0x6D22, 0xCFAC, 0x6D09, 0xCFAD, 0x6D10,
+	0xCFAE, 0x70B7, 0xCFAF, 0x709F, 0xCFB0, 0x70BE, 0xCFB1, 0x70B1,
+	0xCFB2, 0x70B0, 0xCFB3, 0x70A1, 0xCFB4, 0x70B4, 0xCFB5, 0x70B5,
+	0xCFB6, 0x70A9, 0xCFB7, 0x7241, 0xCFB8, 0x7249, 0xCFB9, 0x724A,
+	0xCFBA, 0x726C, 0xCFBB, 0x7270, 0xCFBC, 0x7273, 0xCFBD, 0x726E,
+	0xCFBE, 0x72CA, 0xCFBF, 0x72E4, 0xCFC0, 0x72E8, 0xCFC1, 0x72EB,
+	0xCFC2, 0x72DF, 0xCFC3, 0x72EA, 0xCFC4, 0x72E6, 0xCFC5, 0x72E3,
+	0xCFC6, 0x7385, 0xCFC7, 0x73CC, 0xCFC8, 0x73C2, 0xCFC9, 0x73C8,
+	0xCFCA, 0x73C5, 0xCFCB, 0x73B9, 0xCFCC, 0x73B6, 0xCFCD, 0x73B5,
+	0xCFCE, 0x73B4, 0xCFCF, 0x73EB, 0xCFD0, 0x73BF, 0xCFD1, 0x73C7,
+	0xCFD2, 0x73BE, 0xCFD3, 0x73C3, 0xCFD4, 0x73C6, 0xCFD5, 0x73B8,
+	0xCFD6, 0x73CB, 0xCFD7, 0x74EC, 0xCFD8, 0x74EE, 0xCFD9, 0x752E,
+	0xCFDA, 0x7547, 0xCFDB, 0x7548, 0xCFDC, 0x75A7, 0xCFDD, 0x75AA,
+	0xCFDE, 0x7679, 0xCFDF, 0x76C4, 0xCFE0, 0x7708, 0xCFE1, 0x7703,
+	0xCFE2, 0x7704, 0xCFE3, 0x7705, 0xCFE4, 0x770A, 0xCFE5, 0x76F7,
+	0xCFE6, 0x76FB, 0xCFE7, 0x76FA, 0xCFE8, 0x77E7, 0xCFE9, 0x77E8,
+	0xCFEA, 0x7806, 0xCFEB, 0x7811, 0xCFEC, 0x7812, 0xCFED, 0x7805,
+	0xCFEE, 0x7810, 0xCFEF, 0x780F, 0xCFF0, 0x780E, 0xCFF1, 0x7809,
+	0xCFF2, 0x7803, 0xCFF3, 0x7813, 0xCFF4, 0x794A, 0xCFF5, 0x794C,
+	0xCFF6, 0x794B, 0xCFF7, 0x7945, 0xCFF8, 0x7944, 0xCFF9, 0x79D5,
+	0xCFFA, 0x79CD, 0xCFFB, 0x79CF, 0xCFFC, 0x79D6, 0xCFFD, 0x79CE,
+	0xCFFE, 0x7A80, 0xD040, 0x7A7E, 0xD041, 0x7AD1, 0xD042, 0x7B00,
+	0xD043, 0x7B01, 0xD044, 0x7C7A, 0xD045, 0x7C78, 0xD046, 0x7C79,
+	0xD047, 0x7C7F, 0xD048, 0x7C80, 0xD049, 0x7C81, 0xD04A, 0x7D03,
+	0xD04B, 0x7D08, 0xD04C, 0x7D01, 0xD04D, 0x7F58, 0xD04E, 0x7F91,
+	0xD04F, 0x7F8D, 0xD050, 0x7FBE, 0xD051, 0x8007, 0xD052, 0x800E,
+	0xD053, 0x800F, 0xD054, 0x8014, 0xD055, 0x8037, 0xD056, 0x80D8,
+	0xD057, 0x80C7, 0xD058, 0x80E0, 0xD059, 0x80D1, 0xD05A, 0x80C8,
+	0xD05B, 0x80C2, 0xD05C, 0x80D0, 0xD05D, 0x80C5, 0xD05E, 0x80E3,
+	0xD05F, 0x80D9, 0xD060, 0x80DC, 0xD061, 0x80CA, 0xD062, 0x80D5,
+	0xD063, 0x80C9, 0xD064, 0x80CF, 0xD065, 0x80D7, 0xD066, 0x80E6,
+	0xD067, 0x80CD, 0xD068, 0x81FF, 0xD069, 0x8221, 0xD06A, 0x8294,
+	0xD06B, 0x82D9, 0xD06C, 0x82FE, 0xD06D, 0x82F9, 0xD06E, 0x8307,
+	0xD06F, 0x82E8, 0xD070, 0x8300, 0xD071, 0x82D5, 0xD072, 0x833A,
+	0xD073, 0x82EB, 0xD074, 0x82D6, 0xD075, 0x82F4, 0xD076, 0x82EC,
+	0xD077, 0x82E1, 0xD078, 0x82F2, 0xD079, 0x82F5, 0xD07A, 0x830C,
+	0xD07B, 0x82FB, 0xD07C, 0x82F6, 0xD07D, 0x82F0, 0xD07E, 0x82EA,
+	0xD0A1, 0x82E4, 0xD0A2, 0x82E0, 0xD0A3, 0x82FA, 0xD0A4, 0x82F3,
+	0xD0A5, 0x82ED, 0xD0A6, 0x8677, 0xD0A7, 0x8674, 0xD0A8, 0x867C,
+	0xD0A9, 0x8673, 0xD0AA, 0x8841, 0xD0AB, 0x884E, 0xD0AC, 0x8867,
+	0xD0AD, 0x886A, 0xD0AE, 0x8869, 0xD0AF, 0x89D3, 0xD0B0, 0x8A04,
+	0xD0B1, 0x8A07, 0xD0B2, 0x8D72, 0xD0B3, 0x8FE3, 0xD0B4, 0x8FE1,
+	0xD0B5, 0x8FEE, 0xD0B6, 0x8FE0, 0xD0B7, 0x90F1, 0xD0B8, 0x90BD,
+	0xD0B9, 0x90BF, 0xD0BA, 0x90D5, 0xD0BB, 0x90C5, 0xD0BC, 0x90BE,
+	0xD0BD, 0x90C7, 0xD0BE, 0x90CB, 0xD0BF, 0x90C8, 0xD0C0, 0x91D4,
+	0xD0C1, 0x91D3, 0xD0C2, 0x9654, 0xD0C3, 0x964F, 0xD0C4, 0x9651,
+	0xD0C5, 0x9653, 0xD0C6, 0x964A, 0xD0C7, 0x964E, 0xD0C8, 0x501E,
+	0xD0C9, 0x5005, 0xD0CA, 0x5007, 0xD0CB, 0x5013, 0xD0CC, 0x5022,
+	0xD0CD, 0x5030, 0xD0CE, 0x501B, 0xD0CF, 0x4FF5, 0xD0D0, 0x4FF4,
+	0xD0D1, 0x5033, 0xD0D2, 0x5037, 0xD0D3, 0x502C, 0xD0D4, 0x4FF6,
+	0xD0D5, 0x4FF7, 0xD0D6, 0x5017, 0xD0D7, 0x501C, 0xD0D8, 0x5020,
+	0xD0D9, 0x5027, 0xD0DA, 0x5035, 0xD0DB, 0x502F, 0xD0DC, 0x5031,
+	0xD0DD, 0x500E, 0xD0DE, 0x515A, 0xD0DF, 0x5194, 0xD0E0, 0x5193,
+	0xD0E1, 0x51CA, 0xD0E2, 0x51C4, 0xD0E3, 0x51C5, 0xD0E4, 0x51C8,
+	0xD0E5, 0x51CE, 0xD0E6, 0x5261, 0xD0E7, 0x525A, 0xD0E8, 0x5252,
+	0xD0E9, 0x525E, 0xD0EA, 0x525F, 0xD0EB, 0x5255, 0xD0EC, 0x5262,
+	0xD0ED, 0x52CD, 0xD0EE, 0x530E, 0xD0EF, 0x539E, 0xD0F0, 0x5526,
+	0xD0F1, 0x54E2, 0xD0F2, 0x5517, 0xD0F3, 0x5512, 0xD0F4, 0x54E7,
+	0xD0F5, 0x54F3, 0xD0F6, 0x54E4, 0xD0F7, 0x551A, 0xD0F8, 0x54FF,
+	0xD0F9, 0x5504, 0xD0FA, 0x5508, 0xD0FB, 0x54EB, 0xD0FC, 0x5511,
+	0xD0FD, 0x5505, 0xD0FE, 0x54F1, 0xD140, 0x550A, 0xD141, 0x54FB,
+	0xD142, 0x54F7, 0xD143, 0x54F8, 0xD144, 0x54E0, 0xD145, 0x550E,
+	0xD146, 0x5503, 0xD147, 0x550B, 0xD148, 0x5701, 0xD149, 0x5702,
+	0xD14A, 0x57CC, 0xD14B, 0x5832, 0xD14C, 0x57D5, 0xD14D, 0x57D2,
+	0xD14E, 0x57BA, 0xD14F, 0x57C6, 0xD150, 0x57BD, 0xD151, 0x57BC,
+	0xD152, 0x57B8, 0xD153, 0x57B6, 0xD154, 0x57BF, 0xD155, 0x57C7,
+	0xD156, 0x57D0, 0xD157, 0x57B9, 0xD158, 0x57C1, 0xD159, 0x590E,
+	0xD15A, 0x594A, 0xD15B, 0x5A19, 0xD15C, 0x5A16, 0xD15D, 0x5A2D,
+	0xD15E, 0x5A2E, 0xD15F, 0x5A15, 0xD160, 0x5A0F, 0xD161, 0x5A17,
+	0xD162, 0x5A0A, 0xD163, 0x5A1E, 0xD164, 0x5A33, 0xD165, 0x5B6C,
+	0xD166, 0x5BA7, 0xD167, 0x5BAD, 0xD168, 0x5BAC, 0xD169, 0x5C03,
+	0xD16A, 0x5C56, 0xD16B, 0x5C54, 0xD16C, 0x5CEC, 0xD16D, 0x5CFF,
+	0xD16E, 0x5CEE, 0xD16F, 0x5CF1, 0xD170, 0x5CF7, 0xD171, 0x5D00,
+	0xD172, 0x5CF9, 0xD173, 0x5E29, 0xD174, 0x5E28, 0xD175, 0x5EA8,
+	0xD176, 0x5EAE, 0xD177, 0x5EAA, 0xD178, 0x5EAC, 0xD179, 0x5F33,
+	0xD17A, 0x5F30, 0xD17B, 0x5F67, 0xD17C, 0x605D, 0xD17D, 0x605A,
+	0xD17E, 0x6067, 0xD1A1, 0x6041, 0xD1A2, 0x60A2, 0xD1A3, 0x6088,
+	0xD1A4, 0x6080, 0xD1A5, 0x6092, 0xD1A6, 0x6081, 0xD1A7, 0x609D,
+	0xD1A8, 0x6083, 0xD1A9, 0x6095, 0xD1AA, 0x609B, 0xD1AB, 0x6097,
+	0xD1AC, 0x6087, 0xD1AD, 0x609C, 0xD1AE, 0x608E, 0xD1AF, 0x6219,
+	0xD1B0, 0x6246, 0xD1B1, 0x62F2, 0xD1B2, 0x6310, 0xD1B3, 0x6356,
+	0xD1B4, 0x632C, 0xD1B5, 0x6344, 0xD1B6, 0x6345, 0xD1B7, 0x6336,
+	0xD1B8, 0x6343, 0xD1B9, 0x63E4, 0xD1BA, 0x6339, 0xD1BB, 0x634B,
+	0xD1BC, 0x634A, 0xD1BD, 0x633C, 0xD1BE, 0x6329, 0xD1BF, 0x6341,
+	0xD1C0, 0x6334, 0xD1C1, 0x6358, 0xD1C2, 0x6354, 0xD1C3, 0x6359,
+	0xD1C4, 0x632D, 0xD1C5, 0x6347, 0xD1C6, 0x6333, 0xD1C7, 0x635A,
+	0xD1C8, 0x6351, 0xD1C9, 0x6338, 0xD1CA, 0x6357, 0xD1CB, 0x6340,
+	0xD1CC, 0x6348, 0xD1CD, 0x654A, 0xD1CE, 0x6546, 0xD1CF, 0x65C6,
+	0xD1D0, 0x65C3, 0xD1D1, 0x65C4, 0xD1D2, 0x65C2, 0xD1D3, 0x664A,
+	0xD1D4, 0x665F, 0xD1D5, 0x6647, 0xD1D6, 0x6651, 0xD1D7, 0x6712,
+	0xD1D8, 0x6713, 0xD1D9, 0x681F, 0xD1DA, 0x681A, 0xD1DB, 0x6849,
+	0xD1DC, 0x6832, 0xD1DD, 0x6833, 0xD1DE, 0x683B, 0xD1DF, 0x684B,
+	0xD1E0, 0x684F, 0xD1E1, 0x6816, 0xD1E2, 0x6831, 0xD1E3, 0x681C,
+	0xD1E4, 0x6835, 0xD1E5, 0x682B, 0xD1E6, 0x682D, 0xD1E7, 0x682F,
+	0xD1E8, 0x684E, 0xD1E9, 0x6844, 0xD1EA, 0x6834, 0xD1EB, 0x681D,
+	0xD1EC, 0x6812, 0xD1ED, 0x6814, 0xD1EE, 0x6826, 0xD1EF, 0x6828,
+	0xD1F0, 0x682E, 0xD1F1, 0x684D, 0xD1F2, 0x683A, 0xD1F3, 0x6825,
+	0xD1F4, 0x6820, 0xD1F5, 0x6B2C, 0xD1F6, 0x6B2F, 0xD1F7, 0x6B2D,
+	0xD1F8, 0x6B31, 0xD1F9, 0x6B34, 0xD1FA, 0x6B6D, 0xD1FB, 0x8082,
+	0xD1FC, 0x6B88, 0xD1FD, 0x6BE6, 0xD1FE, 0x6BE4, 0xD240, 0x6BE8,
+	0xD241, 0x6BE3, 0xD242, 0x6BE2, 0xD243, 0x6BE7, 0xD244, 0x6C25,
+	0xD245, 0x6D7A, 0xD246, 0x6D63, 0xD247, 0x6D64, 0xD248, 0x6D76,
+	0xD249, 0x6D0D, 0xD24A, 0x6D61, 0xD24B, 0x6D92, 0xD24C, 0x6D58,
+	0xD24D, 0x6D62, 0xD24E, 0x6D6D, 0xD24F, 0x6D6F, 0xD250, 0x6D91,
+	0xD251, 0x6D8D, 0xD252, 0x6DEF, 0xD253, 0x6D7F, 0xD254, 0x6D86,
+	0xD255, 0x6D5E, 0xD256, 0x6D67, 0xD257, 0x6D60, 0xD258, 0x6D97,
+	0xD259, 0x6D70, 0xD25A, 0x6D7C, 0xD25B, 0x6D5F, 0xD25C, 0x6D82,
+	0xD25D, 0x6D98, 0xD25E, 0x6D2F, 0xD25F, 0x6D68, 0xD260, 0x6D8B,
+	0xD261, 0x6D7E, 0xD262, 0x6D80, 0xD263, 0x6D84, 0xD264, 0x6D16,
+	0xD265, 0x6D83, 0xD266, 0x6D7B, 0xD267, 0x6D7D, 0xD268, 0x6D75,
+	0xD269, 0x6D90, 0xD26A, 0x70DC, 0xD26B, 0x70D3, 0xD26C, 0x70D1,
+	0xD26D, 0x70DD, 0xD26E, 0x70CB, 0xD26F, 0x7F39, 0xD270, 0x70E2,
+	0xD271, 0x70D7, 0xD272, 0x70D2, 0xD273, 0x70DE, 0xD274, 0x70E0,
+	0xD275, 0x70D4, 0xD276, 0x70CD, 0xD277, 0x70C5, 0xD278, 0x70C6,
+	0xD279, 0x70C7, 0xD27A, 0x70DA, 0xD27B, 0x70CE, 0xD27C, 0x70E1,
+	0xD27D, 0x7242, 0xD27E, 0x7278, 0xD2A1, 0x7277, 0xD2A2, 0x7276,
+	0xD2A3, 0x7300, 0xD2A4, 0x72FA, 0xD2A5, 0x72F4, 0xD2A6, 0x72FE,
+	0xD2A7, 0x72F6, 0xD2A8, 0x72F3, 0xD2A9, 0x72FB, 0xD2AA, 0x7301,
+	0xD2AB, 0x73D3, 0xD2AC, 0x73D9, 0xD2AD, 0x73E5, 0xD2AE, 0x73D6,
+	0xD2AF, 0x73BC, 0xD2B0, 0x73E7, 0xD2B1, 0x73E3, 0xD2B2, 0x73E9,
+	0xD2B3, 0x73DC, 0xD2B4, 0x73D2, 0xD2B5, 0x73DB, 0xD2B6, 0x73D4,
+	0xD2B7, 0x73DD, 0xD2B8, 0x73DA, 0xD2B9, 0x73D7, 0xD2BA, 0x73D8,
+	0xD2BB, 0x73E8, 0xD2BC, 0x74DE, 0xD2BD, 0x74DF, 0xD2BE, 0x74F4,
+	0xD2BF, 0x74F5, 0xD2C0, 0x7521, 0xD2C1, 0x755B, 0xD2C2, 0x755F,
+	0xD2C3, 0x75B0, 0xD2C4, 0x75C1, 0xD2C5, 0x75BB, 0xD2C6, 0x75C4,
+	0xD2C7, 0x75C0, 0xD2C8, 0x75BF, 0xD2C9, 0x75B6, 0xD2CA, 0x75BA,
+	0xD2CB, 0x768A, 0xD2CC, 0x76C9, 0xD2CD, 0x771D, 0xD2CE, 0x771B,
+	0xD2CF, 0x7710, 0xD2D0, 0x7713, 0xD2D1, 0x7712, 0xD2D2, 0x7723,
+	0xD2D3, 0x7711, 0xD2D4, 0x7715, 0xD2D5, 0x7719, 0xD2D6, 0x771A,
+	0xD2D7, 0x7722, 0xD2D8, 0x7727, 0xD2D9, 0x7823, 0xD2DA, 0x782C,
+	0xD2DB, 0x7822, 0xD2DC, 0x7835, 0xD2DD, 0x782F, 0xD2DE, 0x7828,
+	0xD2DF, 0x782E, 0xD2E0, 0x782B, 0xD2E1, 0x7821, 0xD2E2, 0x7829,
+	0xD2E3, 0x7833, 0xD2E4, 0x782A, 0xD2E5, 0x7831, 0xD2E6, 0x7954,
+	0xD2E7, 0x795B, 0xD2E8, 0x794F, 0xD2E9, 0x795C, 0xD2EA, 0x7953,
+	0xD2EB, 0x7952, 0xD2EC, 0x7951, 0xD2ED, 0x79EB, 0xD2EE, 0x79EC,
+	0xD2EF, 0x79E0, 0xD2F0, 0x79EE, 0xD2F1, 0x79ED, 0xD2F2, 0x79EA,
+	0xD2F3, 0x79DC, 0xD2F4, 0x79DE, 0xD2F5, 0x79DD, 0xD2F6, 0x7A86,
+	0xD2F7, 0x7A89, 0xD2F8, 0x7A85, 0xD2F9, 0x7A8B, 0xD2FA, 0x7A8C,
+	0xD2FB, 0x7A8A, 0xD2FC, 0x7A87, 0xD2FD, 0x7AD8, 0xD2FE, 0x7B10,
+	0xD340, 0x7B04, 0xD341, 0x7B13, 0xD342, 0x7B05, 0xD343, 0x7B0F,
+	0xD344, 0x7B08, 0xD345, 0x7B0A, 0xD346, 0x7B0E, 0xD347, 0x7B09,
+	0xD348, 0x7B12, 0xD349, 0x7C84, 0xD34A, 0x7C91, 0xD34B, 0x7C8A,
+	0xD34C, 0x7C8C, 0xD34D, 0x7C88, 0xD34E, 0x7C8D, 0xD34F, 0x7C85,
+	0xD350, 0x7D1E, 0xD351, 0x7D1D, 0xD352, 0x7D11, 0xD353, 0x7D0E,
+	0xD354, 0x7D18, 0xD355, 0x7D16, 0xD356, 0x7D13, 0xD357, 0x7D1F,
+	0xD358, 0x7D12, 0xD359, 0x7D0F, 0xD35A, 0x7D0C, 0xD35B, 0x7F5C,
+	0xD35C, 0x7F61, 0xD35D, 0x7F5E, 0xD35E, 0x7F60, 0xD35F, 0x7F5D,
+	0xD360, 0x7F5B, 0xD361, 0x7F96, 0xD362, 0x7F92, 0xD363, 0x7FC3,
+	0xD364, 0x7FC2, 0xD365, 0x7FC0, 0xD366, 0x8016, 0xD367, 0x803E,
+	0xD368, 0x8039, 0xD369, 0x80FA, 0xD36A, 0x80F2, 0xD36B, 0x80F9,
+	0xD36C, 0x80F5, 0xD36D, 0x8101, 0xD36E, 0x80FB, 0xD36F, 0x8100,
+	0xD370, 0x8201, 0xD371, 0x822F, 0xD372, 0x8225, 0xD373, 0x8333,
+	0xD374, 0x832D, 0xD375, 0x8344, 0xD376, 0x8319, 0xD377, 0x8351,
+	0xD378, 0x8325, 0xD379, 0x8356, 0xD37A, 0x833F, 0xD37B, 0x8341,
+	0xD37C, 0x8326, 0xD37D, 0x831C, 0xD37E, 0x8322, 0xD3A1, 0x8342,
+	0xD3A2, 0x834E, 0xD3A3, 0x831B, 0xD3A4, 0x832A, 0xD3A5, 0x8308,
+	0xD3A6, 0x833C, 0xD3A7, 0x834D, 0xD3A8, 0x8316, 0xD3A9, 0x8324,
+	0xD3AA, 0x8320, 0xD3AB, 0x8337, 0xD3AC, 0x832F, 0xD3AD, 0x8329,
+	0xD3AE, 0x8347, 0xD3AF, 0x8345, 0xD3B0, 0x834C, 0xD3B1, 0x8353,
+	0xD3B2, 0x831E, 0xD3B3, 0x832C, 0xD3B4, 0x834B, 0xD3B5, 0x8327,
+	0xD3B6, 0x8348, 0xD3B7, 0x8653, 0xD3B8, 0x8652, 0xD3B9, 0x86A2,
+	0xD3BA, 0x86A8, 0xD3BB, 0x8696, 0xD3BC, 0x868D, 0xD3BD, 0x8691,
+	0xD3BE, 0x869E, 0xD3BF, 0x8687, 0xD3C0, 0x8697, 0xD3C1, 0x8686,
+	0xD3C2, 0x868B, 0xD3C3, 0x869A, 0xD3C4, 0x8685, 0xD3C5, 0x86A5,
+	0xD3C6, 0x8699, 0xD3C7, 0x86A1, 0xD3C8, 0x86A7, 0xD3C9, 0x8695,
+	0xD3CA, 0x8698, 0xD3CB, 0x868E, 0xD3CC, 0x869D, 0xD3CD, 0x8690,
+	0xD3CE, 0x8694, 0xD3CF, 0x8843, 0xD3D0, 0x8844, 0xD3D1, 0x886D,
+	0xD3D2, 0x8875, 0xD3D3, 0x8876, 0xD3D4, 0x8872, 0xD3D5, 0x8880,
+	0xD3D6, 0x8871, 0xD3D7, 0x887F, 0xD3D8, 0x886F, 0xD3D9, 0x8883,
+	0xD3DA, 0x887E, 0xD3DB, 0x8874, 0xD3DC, 0x887C, 0xD3DD, 0x8A12,
+	0xD3DE, 0x8C47, 0xD3DF, 0x8C57, 0xD3E0, 0x8C7B, 0xD3E1, 0x8CA4,
+	0xD3E2, 0x8CA3, 0xD3E3, 0x8D76, 0xD3E4, 0x8D78, 0xD3E5, 0x8DB5,
+	0xD3E6, 0x8DB7, 0xD3E7, 0x8DB6, 0xD3E8, 0x8ED1, 0xD3E9, 0x8ED3,
+	0xD3EA, 0x8FFE, 0xD3EB, 0x8FF5, 0xD3EC, 0x9002, 0xD3ED, 0x8FFF,
+	0xD3EE, 0x8FFB, 0xD3EF, 0x9004, 0xD3F0, 0x8FFC, 0xD3F1, 0x8FF6,
+	0xD3F2, 0x90D6, 0xD3F3, 0x90E0, 0xD3F4, 0x90D9, 0xD3F5, 0x90DA,
+	0xD3F6, 0x90E3, 0xD3F7, 0x90DF, 0xD3F8, 0x90E5, 0xD3F9, 0x90D8,
+	0xD3FA, 0x90DB, 0xD3FB, 0x90D7, 0xD3FC, 0x90DC, 0xD3FD, 0x90E4,
+	0xD3FE, 0x9150, 0xD440, 0x914E, 0xD441, 0x914F, 0xD442, 0x91D5,
+	0xD443, 0x91E2, 0xD444, 0x91DA, 0xD445, 0x965C, 0xD446, 0x965F,
+	0xD447, 0x96BC, 0xD448, 0x98E3, 0xD449, 0x9ADF, 0xD44A, 0x9B2F,
+	0xD44B, 0x4E7F, 0xD44C, 0x5070, 0xD44D, 0x506A, 0xD44E, 0x5061,
+	0xD44F, 0x505E, 0xD450, 0x5060, 0xD451, 0x5053, 0xD452, 0x504B,
+	0xD453, 0x505D, 0xD454, 0x5072, 0xD455, 0x5048, 0xD456, 0x504D,
+	0xD457, 0x5041, 0xD458, 0x505B, 0xD459, 0x504A, 0xD45A, 0x5062,
+	0xD45B, 0x5015, 0xD45C, 0x5045, 0xD45D, 0x505F, 0xD45E, 0x5069,
+	0xD45F, 0x506B, 0xD460, 0x5063, 0xD461, 0x5064, 0xD462, 0x5046,
+	0xD463, 0x5040, 0xD464, 0x506E, 0xD465, 0x5073, 0xD466, 0x5057,
+	0xD467, 0x5051, 0xD468, 0x51D0, 0xD469, 0x526B, 0xD46A, 0x526D,
+	0xD46B, 0x526C, 0xD46C, 0x526E, 0xD46D, 0x52D6, 0xD46E, 0x52D3,
+	0xD46F, 0x532D, 0xD470, 0x539C, 0xD471, 0x5575, 0xD472, 0x5576,
+	0xD473, 0x553C, 0xD474, 0x554D, 0xD475, 0x5550, 0xD476, 0x5534,
+	0xD477, 0x552A, 0xD478, 0x5551, 0xD479, 0x5562, 0xD47A, 0x5536,
+	0xD47B, 0x5535, 0xD47C, 0x5530, 0xD47D, 0x5552, 0xD47E, 0x5545,
+	0xD4A1, 0x550C, 0xD4A2, 0x5532, 0xD4A3, 0x5565, 0xD4A4, 0x554E,
+	0xD4A5, 0x5539, 0xD4A6, 0x5548, 0xD4A7, 0x552D, 0xD4A8, 0x553B,
+	0xD4A9, 0x5540, 0xD4AA, 0x554B, 0xD4AB, 0x570A, 0xD4AC, 0x5707,
+	0xD4AD, 0x57FB, 0xD4AE, 0x5814, 0xD4AF, 0x57E2, 0xD4B0, 0x57F6,
+	0xD4B1, 0x57DC, 0xD4B2, 0x57F4, 0xD4B3, 0x5800, 0xD4B4, 0x57ED,
+	0xD4B5, 0x57FD, 0xD4B6, 0x5808, 0xD4B7, 0x57F8, 0xD4B8, 0x580B,
+	0xD4B9, 0x57F3, 0xD4BA, 0x57CF, 0xD4BB, 0x5807, 0xD4BC, 0x57EE,
+	0xD4BD, 0x57E3, 0xD4BE, 0x57F2, 0xD4BF, 0x57E5, 0xD4C0, 0x57EC,
+	0xD4C1, 0x57E1, 0xD4C2, 0x580E, 0xD4C3, 0x57FC, 0xD4C4, 0x5810,
+	0xD4C5, 0x57E7, 0xD4C6, 0x5801, 0xD4C7, 0x580C, 0xD4C8, 0x57F1,
+	0xD4C9, 0x57E9, 0xD4CA, 0x57F0, 0xD4CB, 0x580D, 0xD4CC, 0x5804,
+	0xD4CD, 0x595C, 0xD4CE, 0x5A60, 0xD4CF, 0x5A58, 0xD4D0, 0x5A55,
+	0xD4D1, 0x5A67, 0xD4D2, 0x5A5E, 0xD4D3, 0x5A38, 0xD4D4, 0x5A35,
+	0xD4D5, 0x5A6D, 0xD4D6, 0x5A50, 0xD4D7, 0x5A5F, 0xD4D8, 0x5A65,
+	0xD4D9, 0x5A6C, 0xD4DA, 0x5A53, 0xD4DB, 0x5A64, 0xD4DC, 0x5A57,
+	0xD4DD, 0x5A43, 0xD4DE, 0x5A5D, 0xD4DF, 0x5A52, 0xD4E0, 0x5A44,
+	0xD4E1, 0x5A5B, 0xD4E2, 0x5A48, 0xD4E3, 0x5A8E, 0xD4E4, 0x5A3E,
+	0xD4E5, 0x5A4D, 0xD4E6, 0x5A39, 0xD4E7, 0x5A4C, 0xD4E8, 0x5A70,
+	0xD4E9, 0x5A69, 0xD4EA, 0x5A47, 0xD4EB, 0x5A51, 0xD4EC, 0x5A56,
+	0xD4ED, 0x5A42, 0xD4EE, 0x5A5C, 0xD4EF, 0x5B72, 0xD4F0, 0x5B6E,
+	0xD4F1, 0x5BC1, 0xD4F2, 0x5BC0, 0xD4F3, 0x5C59, 0xD4F4, 0x5D1E,
+	0xD4F5, 0x5D0B, 0xD4F6, 0x5D1D, 0xD4F7, 0x5D1A, 0xD4F8, 0x5D20,
+	0xD4F9, 0x5D0C, 0xD4FA, 0x5D28, 0xD4FB, 0x5D0D, 0xD4FC, 0x5D26,
+	0xD4FD, 0x5D25, 0xD4FE, 0x5D0F, 0xD540, 0x5D30, 0xD541, 0x5D12,
+	0xD542, 0x5D23, 0xD543, 0x5D1F, 0xD544, 0x5D2E, 0xD545, 0x5E3E,
+	0xD546, 0x5E34, 0xD547, 0x5EB1, 0xD548, 0x5EB4, 0xD549, 0x5EB9,
+	0xD54A, 0x5EB2, 0xD54B, 0x5EB3, 0xD54C, 0x5F36, 0xD54D, 0x5F38,
+	0xD54E, 0x5F9B, 0xD54F, 0x5F96, 0xD550, 0x5F9F, 0xD551, 0x608A,
+	0xD552, 0x6090, 0xD553, 0x6086, 0xD554, 0x60BE, 0xD555, 0x60B0,
+	0xD556, 0x60BA, 0xD557, 0x60D3, 0xD558, 0x60D4, 0xD559, 0x60CF,
+	0xD55A, 0x60E4, 0xD55B, 0x60D9, 0xD55C, 0x60DD, 0xD55D, 0x60C8,
+	0xD55E, 0x60B1, 0xD55F, 0x60DB, 0xD560, 0x60B7, 0xD561, 0x60CA,
+	0xD562, 0x60BF, 0xD563, 0x60C3, 0xD564, 0x60CD, 0xD565, 0x60C0,
+	0xD566, 0x6332, 0xD567, 0x6365, 0xD568, 0x638A, 0xD569, 0x6382,
+	0xD56A, 0x637D, 0xD56B, 0x63BD, 0xD56C, 0x639E, 0xD56D, 0x63AD,
+	0xD56E, 0x639D, 0xD56F, 0x6397, 0xD570, 0x63AB, 0xD571, 0x638E,
+	0xD572, 0x636F, 0xD573, 0x6387, 0xD574, 0x6390, 0xD575, 0x636E,
+	0xD576, 0x63AF, 0xD577, 0x6375, 0xD578, 0x639C, 0xD579, 0x636D,
+	0xD57A, 0x63AE, 0xD57B, 0x637C, 0xD57C, 0x63A4, 0xD57D, 0x633B,
+	0xD57E, 0x639F, 0xD5A1, 0x6378, 0xD5A2, 0x6385, 0xD5A3, 0x6381,
+	0xD5A4, 0x6391, 0xD5A5, 0x638D, 0xD5A6, 0x6370, 0xD5A7, 0x6553,
+	0xD5A8, 0x65CD, 0xD5A9, 0x6665, 0xD5AA, 0x6661, 0xD5AB, 0x665B,
+	0xD5AC, 0x6659, 0xD5AD, 0x665C, 0xD5AE, 0x6662, 0xD5AF, 0x6718,
+	0xD5B0, 0x6879, 0xD5B1, 0x6887, 0xD5B2, 0x6890, 0xD5B3, 0x689C,
+	0xD5B4, 0x686D, 0xD5B5, 0x686E, 0xD5B6, 0x68AE, 0xD5B7, 0x68AB,
+	0xD5B8, 0x6956, 0xD5B9, 0x686F, 0xD5BA, 0x68A3, 0xD5BB, 0x68AC,
+	0xD5BC, 0x68A9, 0xD5BD, 0x6875, 0xD5BE, 0x6874, 0xD5BF, 0x68B2,
+	0xD5C0, 0x688F, 0xD5C1, 0x6877, 0xD5C2, 0x6892, 0xD5C3, 0x687C,
+	0xD5C4, 0x686B, 0xD5C5, 0x6872, 0xD5C6, 0x68AA, 0xD5C7, 0x6880,
+	0xD5C8, 0x6871, 0xD5C9, 0x687E, 0xD5CA, 0x689B, 0xD5CB, 0x6896,
+	0xD5CC, 0x688B, 0xD5CD, 0x68A0, 0xD5CE, 0x6889, 0xD5CF, 0x68A4,
+	0xD5D0, 0x6878, 0xD5D1, 0x687B, 0xD5D2, 0x6891, 0xD5D3, 0x688C,
+	0xD5D4, 0x688A, 0xD5D5, 0x687D, 0xD5D6, 0x6B36, 0xD5D7, 0x6B33,
+	0xD5D8, 0x6B37, 0xD5D9, 0x6B38, 0xD5DA, 0x6B91, 0xD5DB, 0x6B8F,
+	0xD5DC, 0x6B8D, 0xD5DD, 0x6B8E, 0xD5DE, 0x6B8C, 0xD5DF, 0x6C2A,
+	0xD5E0, 0x6DC0, 0xD5E1, 0x6DAB, 0xD5E2, 0x6DB4, 0xD5E3, 0x6DB3,
+	0xD5E4, 0x6E74, 0xD5E5, 0x6DAC, 0xD5E6, 0x6DE9, 0xD5E7, 0x6DE2,
+	0xD5E8, 0x6DB7, 0xD5E9, 0x6DF6, 0xD5EA, 0x6DD4, 0xD5EB, 0x6E00,
+	0xD5EC, 0x6DC8, 0xD5ED, 0x6DE0, 0xD5EE, 0x6DDF, 0xD5EF, 0x6DD6,
+	0xD5F0, 0x6DBE, 0xD5F1, 0x6DE5, 0xD5F2, 0x6DDC, 0xD5F3, 0x6DDD,
+	0xD5F4, 0x6DDB, 0xD5F5, 0x6DF4, 0xD5F6, 0x6DCA, 0xD5F7, 0x6DBD,
+	0xD5F8, 0x6DED, 0xD5F9, 0x6DF0, 0xD5FA, 0x6DBA, 0xD5FB, 0x6DD5,
+	0xD5FC, 0x6DC2, 0xD5FD, 0x6DCF, 0xD5FE, 0x6DC9, 0xD640, 0x6DD0,
+	0xD641, 0x6DF2, 0xD642, 0x6DD3, 0xD643, 0x6DFD, 0xD644, 0x6DD7,
+	0xD645, 0x6DCD, 0xD646, 0x6DE3, 0xD647, 0x6DBB, 0xD648, 0x70FA,
+	0xD649, 0x710D, 0xD64A, 0x70F7, 0xD64B, 0x7117, 0xD64C, 0x70F4,
+	0xD64D, 0x710C, 0xD64E, 0x70F0, 0xD64F, 0x7104, 0xD650, 0x70F3,
+	0xD651, 0x7110, 0xD652, 0x70FC, 0xD653, 0x70FF, 0xD654, 0x7106,
+	0xD655, 0x7113, 0xD656, 0x7100, 0xD657, 0x70F8, 0xD658, 0x70F6,
+	0xD659, 0x710B, 0xD65A, 0x7102, 0xD65B, 0x710E, 0xD65C, 0x727E,
+	0xD65D, 0x727B, 0xD65E, 0x727C, 0xD65F, 0x727F, 0xD660, 0x731D,
+	0xD661, 0x7317, 0xD662, 0x7307, 0xD663, 0x7311, 0xD664, 0x7318,
+	0xD665, 0x730A, 0xD666, 0x7308, 0xD667, 0x72FF, 0xD668, 0x730F,
+	0xD669, 0x731E, 0xD66A, 0x7388, 0xD66B, 0x73F6, 0xD66C, 0x73F8,
+	0xD66D, 0x73F5, 0xD66E, 0x7404, 0xD66F, 0x7401, 0xD670, 0x73FD,
+	0xD671, 0x7407, 0xD672, 0x7400, 0xD673, 0x73FA, 0xD674, 0x73FC,
+	0xD675, 0x73FF, 0xD676, 0x740C, 0xD677, 0x740B, 0xD678, 0x73F4,
+	0xD679, 0x7408, 0xD67A, 0x7564, 0xD67B, 0x7563, 0xD67C, 0x75CE,
+	0xD67D, 0x75D2, 0xD67E, 0x75CF, 0xD6A1, 0x75CB, 0xD6A2, 0x75CC,
+	0xD6A3, 0x75D1, 0xD6A4, 0x75D0, 0xD6A5, 0x768F, 0xD6A6, 0x7689,
+	0xD6A7, 0x76D3, 0xD6A8, 0x7739, 0xD6A9, 0x772F, 0xD6AA, 0x772D,
+	0xD6AB, 0x7731, 0xD6AC, 0x7732, 0xD6AD, 0x7734, 0xD6AE, 0x7733,
+	0xD6AF, 0x773D, 0xD6B0, 0x7725, 0xD6B1, 0x773B, 0xD6B2, 0x7735,
+	0xD6B3, 0x7848, 0xD6B4, 0x7852, 0xD6B5, 0x7849, 0xD6B6, 0x784D,
+	0xD6B7, 0x784A, 0xD6B8, 0x784C, 0xD6B9, 0x7826, 0xD6BA, 0x7845,
+	0xD6BB, 0x7850, 0xD6BC, 0x7964, 0xD6BD, 0x7967, 0xD6BE, 0x7969,
+	0xD6BF, 0x796A, 0xD6C0, 0x7963, 0xD6C1, 0x796B, 0xD6C2, 0x7961,
+	0xD6C3, 0x79BB, 0xD6C4, 0x79FA, 0xD6C5, 0x79F8, 0xD6C6, 0x79F6,
+	0xD6C7, 0x79F7, 0xD6C8, 0x7A8F, 0xD6C9, 0x7A94, 0xD6CA, 0x7A90,
+	0xD6CB, 0x7B35, 0xD6CC, 0x7B47, 0xD6CD, 0x7B34, 0xD6CE, 0x7B25,
+	0xD6CF, 0x7B30, 0xD6D0, 0x7B22, 0xD6D1, 0x7B24, 0xD6D2, 0x7B33,
+	0xD6D3, 0x7B18, 0xD6D4, 0x7B2A, 0xD6D5, 0x7B1D, 0xD6D6, 0x7B31,
+	0xD6D7, 0x7B2B, 0xD6D8, 0x7B2D, 0xD6D9, 0x7B2F, 0xD6DA, 0x7B32,
+	0xD6DB, 0x7B38, 0xD6DC, 0x7B1A, 0xD6DD, 0x7B23, 0xD6DE, 0x7C94,
+	0xD6DF, 0x7C98, 0xD6E0, 0x7C96, 0xD6E1, 0x7CA3, 0xD6E2, 0x7D35,
+	0xD6E3, 0x7D3D, 0xD6E4, 0x7D38, 0xD6E5, 0x7D36, 0xD6E6, 0x7D3A,
+	0xD6E7, 0x7D45, 0xD6E8, 0x7D2C, 0xD6E9, 0x7D29, 0xD6EA, 0x7D41,
+	0xD6EB, 0x7D47, 0xD6EC, 0x7D3E, 0xD6ED, 0x7D3F, 0xD6EE, 0x7D4A,
+	0xD6EF, 0x7D3B, 0xD6F0, 0x7D28, 0xD6F1, 0x7F63, 0xD6F2, 0x7F95,
+	0xD6F3, 0x7F9C, 0xD6F4, 0x7F9D, 0xD6F5, 0x7F9B, 0xD6F6, 0x7FCA,
+	0xD6F7, 0x7FCB, 0xD6F8, 0x7FCD, 0xD6F9, 0x7FD0, 0xD6FA, 0x7FD1,
+	0xD6FB, 0x7FC7, 0xD6FC, 0x7FCF, 0xD6FD, 0x7FC9, 0xD6FE, 0x801F,
+	0xD740, 0x801E, 0xD741, 0x801B, 0xD742, 0x8047, 0xD743, 0x8043,
+	0xD744, 0x8048, 0xD745, 0x8118, 0xD746, 0x8125, 0xD747, 0x8119,
+	0xD748, 0x811B, 0xD749, 0x812D, 0xD74A, 0x811F, 0xD74B, 0x812C,
+	0xD74C, 0x811E, 0xD74D, 0x8121, 0xD74E, 0x8115, 0xD74F, 0x8127,
+	0xD750, 0x811D, 0xD751, 0x8122, 0xD752, 0x8211, 0xD753, 0x8238,
+	0xD754, 0x8233, 0xD755, 0x823A, 0xD756, 0x8234, 0xD757, 0x8232,
+	0xD758, 0x8274, 0xD759, 0x8390, 0xD75A, 0x83A3, 0xD75B, 0x83A8,
+	0xD75C, 0x838D, 0xD75D, 0x837A, 0xD75E, 0x8373, 0xD75F, 0x83A4,
+	0xD760, 0x8374, 0xD761, 0x838F, 0xD762, 0x8381, 0xD763, 0x8395,
+	0xD764, 0x8399, 0xD765, 0x8375, 0xD766, 0x8394, 0xD767, 0x83A9,
+	0xD768, 0x837D, 0xD769, 0x8383, 0xD76A, 0x838C, 0xD76B, 0x839D,
+	0xD76C, 0x839B, 0xD76D, 0x83AA, 0xD76E, 0x838B, 0xD76F, 0x837E,
+	0xD770, 0x83A5, 0xD771, 0x83AF, 0xD772, 0x8388, 0xD773, 0x8397,
+	0xD774, 0x83B0, 0xD775, 0x837F, 0xD776, 0x83A6, 0xD777, 0x8387,
+	0xD778, 0x83AE, 0xD779, 0x8376, 0xD77A, 0x839A, 0xD77B, 0x8659,
+	0xD77C, 0x8656, 0xD77D, 0x86BF, 0xD77E, 0x86B7, 0xD7A1, 0x86C2,
+	0xD7A2, 0x86C1, 0xD7A3, 0x86C5, 0xD7A4, 0x86BA, 0xD7A5, 0x86B0,
+	0xD7A6, 0x86C8, 0xD7A7, 0x86B9, 0xD7A8, 0x86B3, 0xD7A9, 0x86B8,
+	0xD7AA, 0x86CC, 0xD7AB, 0x86B4, 0xD7AC, 0x86BB, 0xD7AD, 0x86BC,
+	0xD7AE, 0x86C3, 0xD7AF, 0x86BD, 0xD7B0, 0x86BE, 0xD7B1, 0x8852,
+	0xD7B2, 0x8889, 0xD7B3, 0x8895, 0xD7B4, 0x88A8, 0xD7B5, 0x88A2,
+	0xD7B6, 0x88AA, 0xD7B7, 0x889A, 0xD7B8, 0x8891, 0xD7B9, 0x88A1,
+	0xD7BA, 0x889F, 0xD7BB, 0x8898, 0xD7BC, 0x88A7, 0xD7BD, 0x8899,
+	0xD7BE, 0x889B, 0xD7BF, 0x8897, 0xD7C0, 0x88A4, 0xD7C1, 0x88AC,
+	0xD7C2, 0x888C, 0xD7C3, 0x8893, 0xD7C4, 0x888E, 0xD7C5, 0x8982,
+	0xD7C6, 0x89D6, 0xD7C7, 0x89D9, 0xD7C8, 0x89D5, 0xD7C9, 0x8A30,
+	0xD7CA, 0x8A27, 0xD7CB, 0x8A2C, 0xD7CC, 0x8A1E, 0xD7CD, 0x8C39,
+	0xD7CE, 0x8C3B, 0xD7CF, 0x8C5C, 0xD7D0, 0x8C5D, 0xD7D1, 0x8C7D,
+	0xD7D2, 0x8CA5, 0xD7D3, 0x8D7D, 0xD7D4, 0x8D7B, 0xD7D5, 0x8D79,
+	0xD7D6, 0x8DBC, 0xD7D7, 0x8DC2, 0xD7D8, 0x8DB9, 0xD7D9, 0x8DBF,
+	0xD7DA, 0x8DC1, 0xD7DB, 0x8ED8, 0xD7DC, 0x8EDE, 0xD7DD, 0x8EDD,
+	0xD7DE, 0x8EDC, 0xD7DF, 0x8ED7, 0xD7E0, 0x8EE0, 0xD7E1, 0x8EE1,
+	0xD7E2, 0x9024, 0xD7E3, 0x900B, 0xD7E4, 0x9011, 0xD7E5, 0x901C,
+	0xD7E6, 0x900C, 0xD7E7, 0x9021, 0xD7E8, 0x90EF, 0xD7E9, 0x90EA,
+	0xD7EA, 0x90F0, 0xD7EB, 0x90F4, 0xD7EC, 0x90F2, 0xD7ED, 0x90F3,
+	0xD7EE, 0x90D4, 0xD7EF, 0x90EB, 0xD7F0, 0x90EC, 0xD7F1, 0x90E9,
+	0xD7F2, 0x9156, 0xD7F3, 0x9158, 0xD7F4, 0x915A, 0xD7F5, 0x9153,
+	0xD7F6, 0x9155, 0xD7F7, 0x91EC, 0xD7F8, 0x91F4, 0xD7F9, 0x91F1,
+	0xD7FA, 0x91F3, 0xD7FB, 0x91F8, 0xD7FC, 0x91E4, 0xD7FD, 0x91F9,
+	0xD7FE, 0x91EA, 0xD840, 0x91EB, 0xD841, 0x91F7, 0xD842, 0x91E8,
+	0xD843, 0x91EE, 0xD844, 0x957A, 0xD845, 0x9586, 0xD846, 0x9588,
+	0xD847, 0x967C, 0xD848, 0x966D, 0xD849, 0x966B, 0xD84A, 0x9671,
+	0xD84B, 0x966F, 0xD84C, 0x96BF, 0xD84D, 0x976A, 0xD84E, 0x9804,
+	0xD84F, 0x98E5, 0xD850, 0x9997, 0xD851, 0x509B, 0xD852, 0x5095,
+	0xD853, 0x5094, 0xD854, 0x509E, 0xD855, 0x508B, 0xD856, 0x50A3,
+	0xD857, 0x5083, 0xD858, 0x508C, 0xD859, 0x508E, 0xD85A, 0x509D,
+	0xD85B, 0x5068, 0xD85C, 0x509C, 0xD85D, 0x5092, 0xD85E, 0x5082,
+	0xD85F, 0x5087, 0xD860, 0x515F, 0xD861, 0x51D4, 0xD862, 0x5312,
+	0xD863, 0x5311, 0xD864, 0x53A4, 0xD865, 0x53A7, 0xD866, 0x5591,
+	0xD867, 0x55A8, 0xD868, 0x55A5, 0xD869, 0x55AD, 0xD86A, 0x5577,
+	0xD86B, 0x5645, 0xD86C, 0x55A2, 0xD86D, 0x5593, 0xD86E, 0x5588,
+	0xD86F, 0x558F, 0xD870, 0x55B5, 0xD871, 0x5581, 0xD872, 0x55A3,
+	0xD873, 0x5592, 0xD874, 0x55A4, 0xD875, 0x557D, 0xD876, 0x558C,
+	0xD877, 0x55A6, 0xD878, 0x557F, 0xD879, 0x5595, 0xD87A, 0x55A1,
+	0xD87B, 0x558E, 0xD87C, 0x570C, 0xD87D, 0x5829, 0xD87E, 0x5837,
+	0xD8A1, 0x5819, 0xD8A2, 0x581E, 0xD8A3, 0x5827, 0xD8A4, 0x5823,
+	0xD8A5, 0x5828, 0xD8A6, 0x57F5, 0xD8A7, 0x5848, 0xD8A8, 0x5825,
+	0xD8A9, 0x581C, 0xD8AA, 0x581B, 0xD8AB, 0x5833, 0xD8AC, 0x583F,
+	0xD8AD, 0x5836, 0xD8AE, 0x582E, 0xD8AF, 0x5839, 0xD8B0, 0x5838,
+	0xD8B1, 0x582D, 0xD8B2, 0x582C, 0xD8B3, 0x583B, 0xD8B4, 0x5961,
+	0xD8B5, 0x5AAF, 0xD8B6, 0x5A94, 0xD8B7, 0x5A9F, 0xD8B8, 0x5A7A,
+	0xD8B9, 0x5AA2, 0xD8BA, 0x5A9E, 0xD8BB, 0x5A78, 0xD8BC, 0x5AA6,
+	0xD8BD, 0x5A7C, 0xD8BE, 0x5AA5, 0xD8BF, 0x5AAC, 0xD8C0, 0x5A95,
+	0xD8C1, 0x5AAE, 0xD8C2, 0x5A37, 0xD8C3, 0x5A84, 0xD8C4, 0x5A8A,
+	0xD8C5, 0x5A97, 0xD8C6, 0x5A83, 0xD8C7, 0x5A8B, 0xD8C8, 0x5AA9,
+	0xD8C9, 0x5A7B, 0xD8CA, 0x5A7D, 0xD8CB, 0x5A8C, 0xD8CC, 0x5A9C,
+	0xD8CD, 0x5A8F, 0xD8CE, 0x5A93, 0xD8CF, 0x5A9D, 0xD8D0, 0x5BEA,
+	0xD8D1, 0x5BCD, 0xD8D2, 0x5BCB, 0xD8D3, 0x5BD4, 0xD8D4, 0x5BD1,
+	0xD8D5, 0x5BCA, 0xD8D6, 0x5BCE, 0xD8D7, 0x5C0C, 0xD8D8, 0x5C30,
+	0xD8D9, 0x5D37, 0xD8DA, 0x5D43, 0xD8DB, 0x5D6B, 0xD8DC, 0x5D41,
+	0xD8DD, 0x5D4B, 0xD8DE, 0x5D3F, 0xD8DF, 0x5D35, 0xD8E0, 0x5D51,
+	0xD8E1, 0x5D4E, 0xD8E2, 0x5D55, 0xD8E3, 0x5D33, 0xD8E4, 0x5D3A,
+	0xD8E5, 0x5D52, 0xD8E6, 0x5D3D, 0xD8E7, 0x5D31, 0xD8E8, 0x5D59,
+	0xD8E9, 0x5D42, 0xD8EA, 0x5D39, 0xD8EB, 0x5D49, 0xD8EC, 0x5D38,
+	0xD8ED, 0x5D3C, 0xD8EE, 0x5D32, 0xD8EF, 0x5D36, 0xD8F0, 0x5D40,
+	0xD8F1, 0x5D45, 0xD8F2, 0x5E44, 0xD8F3, 0x5E41, 0xD8F4, 0x5F58,
+	0xD8F5, 0x5FA6, 0xD8F6, 0x5FA5, 0xD8F7, 0x5FAB, 0xD8F8, 0x60C9,
+	0xD8F9, 0x60B9, 0xD8FA, 0x60CC, 0xD8FB, 0x60E2, 0xD8FC, 0x60CE,
+	0xD8FD, 0x60C4, 0xD8FE, 0x6114, 0xD940, 0x60F2, 0xD941, 0x610A,
+	0xD942, 0x6116, 0xD943, 0x6105, 0xD944, 0x60F5, 0xD945, 0x6113,
+	0xD946, 0x60F8, 0xD947, 0x60FC, 0xD948, 0x60FE, 0xD949, 0x60C1,
+	0xD94A, 0x6103, 0xD94B, 0x6118, 0xD94C, 0x611D, 0xD94D, 0x6110,
+	0xD94E, 0x60FF, 0xD94F, 0x6104, 0xD950, 0x610B, 0xD951, 0x624A,
+	0xD952, 0x6394, 0xD953, 0x63B1, 0xD954, 0x63B0, 0xD955, 0x63CE,
+	0xD956, 0x63E5, 0xD957, 0x63E8, 0xD958, 0x63EF, 0xD959, 0x63C3,
+	0xD95A, 0x649D, 0xD95B, 0x63F3, 0xD95C, 0x63CA, 0xD95D, 0x63E0,
+	0xD95E, 0x63F6, 0xD95F, 0x63D5, 0xD960, 0x63F2, 0xD961, 0x63F5,
+	0xD962, 0x6461, 0xD963, 0x63DF, 0xD964, 0x63BE, 0xD965, 0x63DD,
+	0xD966, 0x63DC, 0xD967, 0x63C4, 0xD968, 0x63D8, 0xD969, 0x63D3,
+	0xD96A, 0x63C2, 0xD96B, 0x63C7, 0xD96C, 0x63CC, 0xD96D, 0x63CB,
+	0xD96E, 0x63C8, 0xD96F, 0x63F0, 0xD970, 0x63D7, 0xD971, 0x63D9,
+	0xD972, 0x6532, 0xD973, 0x6567, 0xD974, 0x656A, 0xD975, 0x6564,
+	0xD976, 0x655C, 0xD977, 0x6568, 0xD978, 0x6565, 0xD979, 0x658C,
+	0xD97A, 0x659D, 0xD97B, 0x659E, 0xD97C, 0x65AE, 0xD97D, 0x65D0,
+	0xD97E, 0x65D2, 0xD9A1, 0x667C, 0xD9A2, 0x666C, 0xD9A3, 0x667B,
+	0xD9A4, 0x6680, 0xD9A5, 0x6671, 0xD9A6, 0x6679, 0xD9A7, 0x666A,
+	0xD9A8, 0x6672, 0xD9A9, 0x6701, 0xD9AA, 0x690C, 0xD9AB, 0x68D3,
+	0xD9AC, 0x6904, 0xD9AD, 0x68DC, 0xD9AE, 0x692A, 0xD9AF, 0x68EC,
+	0xD9B0, 0x68EA, 0xD9B1, 0x68F1, 0xD9B2, 0x690F, 0xD9B3, 0x68D6,
+	0xD9B4, 0x68F7, 0xD9B5, 0x68EB, 0xD9B6, 0x68E4, 0xD9B7, 0x68F6,
+	0xD9B8, 0x6913, 0xD9B9, 0x6910, 0xD9BA, 0x68F3, 0xD9BB, 0x68E1,
+	0xD9BC, 0x6907, 0xD9BD, 0x68CC, 0xD9BE, 0x6908, 0xD9BF, 0x6970,
+	0xD9C0, 0x68B4, 0xD9C1, 0x6911, 0xD9C2, 0x68EF, 0xD9C3, 0x68C6,
+	0xD9C4, 0x6914, 0xD9C5, 0x68F8, 0xD9C6, 0x68D0, 0xD9C7, 0x68FD,
+	0xD9C8, 0x68FC, 0xD9C9, 0x68E8, 0xD9CA, 0x690B, 0xD9CB, 0x690A,
+	0xD9CC, 0x6917, 0xD9CD, 0x68CE, 0xD9CE, 0x68C8, 0xD9CF, 0x68DD,
+	0xD9D0, 0x68DE, 0xD9D1, 0x68E6, 0xD9D2, 0x68F4, 0xD9D3, 0x68D1,
+	0xD9D4, 0x6906, 0xD9D5, 0x68D4, 0xD9D6, 0x68E9, 0xD9D7, 0x6915,
+	0xD9D8, 0x6925, 0xD9D9, 0x68C7, 0xD9DA, 0x6B39, 0xD9DB, 0x6B3B,
+	0xD9DC, 0x6B3F, 0xD9DD, 0x6B3C, 0xD9DE, 0x6B94, 0xD9DF, 0x6B97,
+	0xD9E0, 0x6B99, 0xD9E1, 0x6B95, 0xD9E2, 0x6BBD, 0xD9E3, 0x6BF0,
+	0xD9E4, 0x6BF2, 0xD9E5, 0x6BF3, 0xD9E6, 0x6C30, 0xD9E7, 0x6DFC,
+	0xD9E8, 0x6E46, 0xD9E9, 0x6E47, 0xD9EA, 0x6E1F, 0xD9EB, 0x6E49,
+	0xD9EC, 0x6E88, 0xD9ED, 0x6E3C, 0xD9EE, 0x6E3D, 0xD9EF, 0x6E45,
+	0xD9F0, 0x6E62, 0xD9F1, 0x6E2B, 0xD9F2, 0x6E3F, 0xD9F3, 0x6E41,
+	0xD9F4, 0x6E5D, 0xD9F5, 0x6E73, 0xD9F6, 0x6E1C, 0xD9F7, 0x6E33,
+	0xD9F8, 0x6E4B, 0xD9F9, 0x6E40, 0xD9FA, 0x6E51, 0xD9FB, 0x6E3B,
+	0xD9FC, 0x6E03, 0xD9FD, 0x6E2E, 0xD9FE, 0x6E5E, 0xDA40, 0x6E68,
+	0xDA41, 0x6E5C, 0xDA42, 0x6E61, 0xDA43, 0x6E31, 0xDA44, 0x6E28,
+	0xDA45, 0x6E60, 0xDA46, 0x6E71, 0xDA47, 0x6E6B, 0xDA48, 0x6E39,
+	0xDA49, 0x6E22, 0xDA4A, 0x6E30, 0xDA4B, 0x6E53, 0xDA4C, 0x6E65,
+	0xDA4D, 0x6E27, 0xDA4E, 0x6E78, 0xDA4F, 0x6E64, 0xDA50, 0x6E77,
+	0xDA51, 0x6E55, 0xDA52, 0x6E79, 0xDA53, 0x6E52, 0xDA54, 0x6E66,
+	0xDA55, 0x6E35, 0xDA56, 0x6E36, 0xDA57, 0x6E5A, 0xDA58, 0x7120,
+	0xDA59, 0x711E, 0xDA5A, 0x712F, 0xDA5B, 0x70FB, 0xDA5C, 0x712E,
+	0xDA5D, 0x7131, 0xDA5E, 0x7123, 0xDA5F, 0x7125, 0xDA60, 0x7122,
+	0xDA61, 0x7132, 0xDA62, 0x711F, 0xDA63, 0x7128, 0xDA64, 0x713A,
+	0xDA65, 0x711B, 0xDA66, 0x724B, 0xDA67, 0x725A, 0xDA68, 0x7288,
+	0xDA69, 0x7289, 0xDA6A, 0x7286, 0xDA6B, 0x7285, 0xDA6C, 0x728B,
+	0xDA6D, 0x7312, 0xDA6E, 0x730B, 0xDA6F, 0x7330, 0xDA70, 0x7322,
+	0xDA71, 0x7331, 0xDA72, 0x7333, 0xDA73, 0x7327, 0xDA74, 0x7332,
+	0xDA75, 0x732D, 0xDA76, 0x7326, 0xDA77, 0x7323, 0xDA78, 0x7335,
+	0xDA79, 0x730C, 0xDA7A, 0x742E, 0xDA7B, 0x742C, 0xDA7C, 0x7430,
+	0xDA7D, 0x742B, 0xDA7E, 0x7416, 0xDAA1, 0x741A, 0xDAA2, 0x7421,
+	0xDAA3, 0x742D, 0xDAA4, 0x7431, 0xDAA5, 0x7424, 0xDAA6, 0x7423,
+	0xDAA7, 0x741D, 0xDAA8, 0x7429, 0xDAA9, 0x7420, 0xDAAA, 0x7432,
+	0xDAAB, 0x74FB, 0xDAAC, 0x752F, 0xDAAD, 0x756F, 0xDAAE, 0x756C,
+	0xDAAF, 0x75E7, 0xDAB0, 0x75DA, 0xDAB1, 0x75E1, 0xDAB2, 0x75E6,
+	0xDAB3, 0x75DD, 0xDAB4, 0x75DF, 0xDAB5, 0x75E4, 0xDAB6, 0x75D7,
+	0xDAB7, 0x7695, 0xDAB8, 0x7692, 0xDAB9, 0x76DA, 0xDABA, 0x7746,
+	0xDABB, 0x7747, 0xDABC, 0x7744, 0xDABD, 0x774D, 0xDABE, 0x7745,
+	0xDABF, 0x774A, 0xDAC0, 0x774E, 0xDAC1, 0x774B, 0xDAC2, 0x774C,
+	0xDAC3, 0x77DE, 0xDAC4, 0x77EC, 0xDAC5, 0x7860, 0xDAC6, 0x7864,
+	0xDAC7, 0x7865, 0xDAC8, 0x785C, 0xDAC9, 0x786D, 0xDACA, 0x7871,
+	0xDACB, 0x786A, 0xDACC, 0x786E, 0xDACD, 0x7870, 0xDACE, 0x7869,
+	0xDACF, 0x7868, 0xDAD0, 0x785E, 0xDAD1, 0x7862, 0xDAD2, 0x7974,
+	0xDAD3, 0x7973, 0xDAD4, 0x7972, 0xDAD5, 0x7970, 0xDAD6, 0x7A02,
+	0xDAD7, 0x7A0A, 0xDAD8, 0x7A03, 0xDAD9, 0x7A0C, 0xDADA, 0x7A04,
+	0xDADB, 0x7A99, 0xDADC, 0x7AE6, 0xDADD, 0x7AE4, 0xDADE, 0x7B4A,
+	0xDADF, 0x7B3B, 0xDAE0, 0x7B44, 0xDAE1, 0x7B48, 0xDAE2, 0x7B4C,
+	0xDAE3, 0x7B4E, 0xDAE4, 0x7B40, 0xDAE5, 0x7B58, 0xDAE6, 0x7B45,
+	0xDAE7, 0x7CA2, 0xDAE8, 0x7C9E, 0xDAE9, 0x7CA8, 0xDAEA, 0x7CA1,
+	0xDAEB, 0x7D58, 0xDAEC, 0x7D6F, 0xDAED, 0x7D63, 0xDAEE, 0x7D53,
+	0xDAEF, 0x7D56, 0xDAF0, 0x7D67, 0xDAF1, 0x7D6A, 0xDAF2, 0x7D4F,
+	0xDAF3, 0x7D6D, 0xDAF4, 0x7D5C, 0xDAF5, 0x7D6B, 0xDAF6, 0x7D52,
+	0xDAF7, 0x7D54, 0xDAF8, 0x7D69, 0xDAF9, 0x7D51, 0xDAFA, 0x7D5F,
+	0xDAFB, 0x7D4E, 0xDAFC, 0x7F3E, 0xDAFD, 0x7F3F, 0xDAFE, 0x7F65,
+	0xDB40, 0x7F66, 0xDB41, 0x7FA2, 0xDB42, 0x7FA0, 0xDB43, 0x7FA1,
+	0xDB44, 0x7FD7, 0xDB45, 0x8051, 0xDB46, 0x804F, 0xDB47, 0x8050,
+	0xDB48, 0x80FE, 0xDB49, 0x80D4, 0xDB4A, 0x8143, 0xDB4B, 0x814A,
+	0xDB4C, 0x8152, 0xDB4D, 0x814F, 0xDB4E, 0x8147, 0xDB4F, 0x813D,
+	0xDB50, 0x814D, 0xDB51, 0x813A, 0xDB52, 0x81E6, 0xDB53, 0x81EE,
+	0xDB54, 0x81F7, 0xDB55, 0x81F8, 0xDB56, 0x81F9, 0xDB57, 0x8204,
+	0xDB58, 0x823C, 0xDB59, 0x823D, 0xDB5A, 0x823F, 0xDB5B, 0x8275,
+	0xDB5C, 0x833B, 0xDB5D, 0x83CF, 0xDB5E, 0x83F9, 0xDB5F, 0x8423,
+	0xDB60, 0x83C0, 0xDB61, 0x83E8, 0xDB62, 0x8412, 0xDB63, 0x83E7,
+	0xDB64, 0x83E4, 0xDB65, 0x83FC, 0xDB66, 0x83F6, 0xDB67, 0x8410,
+	0xDB68, 0x83C6, 0xDB69, 0x83C8, 0xDB6A, 0x83EB, 0xDB6B, 0x83E3,
+	0xDB6C, 0x83BF, 0xDB6D, 0x8401, 0xDB6E, 0x83DD, 0xDB6F, 0x83E5,
+	0xDB70, 0x83D8, 0xDB71, 0x83FF, 0xDB72, 0x83E1, 0xDB73, 0x83CB,
+	0xDB74, 0x83CE, 0xDB75, 0x83D6, 0xDB76, 0x83F5, 0xDB77, 0x83C9,
+	0xDB78, 0x8409, 0xDB79, 0x840F, 0xDB7A, 0x83DE, 0xDB7B, 0x8411,
+	0xDB7C, 0x8406, 0xDB7D, 0x83C2, 0xDB7E, 0x83F3, 0xDBA1, 0x83D5,
+	0xDBA2, 0x83FA, 0xDBA3, 0x83C7, 0xDBA4, 0x83D1, 0xDBA5, 0x83EA,
+	0xDBA6, 0x8413, 0xDBA7, 0x83C3, 0xDBA8, 0x83EC, 0xDBA9, 0x83EE,
+	0xDBAA, 0x83C4, 0xDBAB, 0x83FB, 0xDBAC, 0x83D7, 0xDBAD, 0x83E2,
+	0xDBAE, 0x841B, 0xDBAF, 0x83DB, 0xDBB0, 0x83FE, 0xDBB1, 0x86D8,
+	0xDBB2, 0x86E2, 0xDBB3, 0x86E6, 0xDBB4, 0x86D3, 0xDBB5, 0x86E3,
+	0xDBB6, 0x86DA, 0xDBB7, 0x86EA, 0xDBB8, 0x86DD, 0xDBB9, 0x86EB,
+	0xDBBA, 0x86DC, 0xDBBB, 0x86EC, 0xDBBC, 0x86E9, 0xDBBD, 0x86D7,
+	0xDBBE, 0x86E8, 0xDBBF, 0x86D1, 0xDBC0, 0x8848, 0xDBC1, 0x8856,
+	0xDBC2, 0x8855, 0xDBC3, 0x88BA, 0xDBC4, 0x88D7, 0xDBC5, 0x88B9,
+	0xDBC6, 0x88B8, 0xDBC7, 0x88C0, 0xDBC8, 0x88BE, 0xDBC9, 0x88B6,
+	0xDBCA, 0x88BC, 0xDBCB, 0x88B7, 0xDBCC, 0x88BD, 0xDBCD, 0x88B2,
+	0xDBCE, 0x8901, 0xDBCF, 0x88C9, 0xDBD0, 0x8995, 0xDBD1, 0x8998,
+	0xDBD2, 0x8997, 0xDBD3, 0x89DD, 0xDBD4, 0x89DA, 0xDBD5, 0x89DB,
+	0xDBD6, 0x8A4E, 0xDBD7, 0x8A4D, 0xDBD8, 0x8A39, 0xDBD9, 0x8A59,
+	0xDBDA, 0x8A40, 0xDBDB, 0x8A57, 0xDBDC, 0x8A58, 0xDBDD, 0x8A44,
+	0xDBDE, 0x8A45, 0xDBDF, 0x8A52, 0xDBE0, 0x8A48, 0xDBE1, 0x8A51,
+	0xDBE2, 0x8A4A, 0xDBE3, 0x8A4C, 0xDBE4, 0x8A4F, 0xDBE5, 0x8C5F,
+	0xDBE6, 0x8C81, 0xDBE7, 0x8C80, 0xDBE8, 0x8CBA, 0xDBE9, 0x8CBE,
+	0xDBEA, 0x8CB0, 0xDBEB, 0x8CB9, 0xDBEC, 0x8CB5, 0xDBED, 0x8D84,
+	0xDBEE, 0x8D80, 0xDBEF, 0x8D89, 0xDBF0, 0x8DD8, 0xDBF1, 0x8DD3,
+	0xDBF2, 0x8DCD, 0xDBF3, 0x8DC7, 0xDBF4, 0x8DD6, 0xDBF5, 0x8DDC,
+	0xDBF6, 0x8DCF, 0xDBF7, 0x8DD5, 0xDBF8, 0x8DD9, 0xDBF9, 0x8DC8,
+	0xDBFA, 0x8DD7, 0xDBFB, 0x8DC5, 0xDBFC, 0x8EEF, 0xDBFD, 0x8EF7,
+	0xDBFE, 0x8EFA, 0xDC40, 0x8EF9, 0xDC41, 0x8EE6, 0xDC42, 0x8EEE,
+	0xDC43, 0x8EE5, 0xDC44, 0x8EF5, 0xDC45, 0x8EE7, 0xDC46, 0x8EE8,
+	0xDC47, 0x8EF6, 0xDC48, 0x8EEB, 0xDC49, 0x8EF1, 0xDC4A, 0x8EEC,
+	0xDC4B, 0x8EF4, 0xDC4C, 0x8EE9, 0xDC4D, 0x902D, 0xDC4E, 0x9034,
+	0xDC4F, 0x902F, 0xDC50, 0x9106, 0xDC51, 0x912C, 0xDC52, 0x9104,
+	0xDC53, 0x90FF, 0xDC54, 0x90FC, 0xDC55, 0x9108, 0xDC56, 0x90F9,
+	0xDC57, 0x90FB, 0xDC58, 0x9101, 0xDC59, 0x9100, 0xDC5A, 0x9107,
+	0xDC5B, 0x9105, 0xDC5C, 0x9103, 0xDC5D, 0x9161, 0xDC5E, 0x9164,
+	0xDC5F, 0x915F, 0xDC60, 0x9162, 0xDC61, 0x9160, 0xDC62, 0x9201,
+	0xDC63, 0x920A, 0xDC64, 0x9225, 0xDC65, 0x9203, 0xDC66, 0x921A,
+	0xDC67, 0x9226, 0xDC68, 0x920F, 0xDC69, 0x920C, 0xDC6A, 0x9200,
+	0xDC6B, 0x9212, 0xDC6C, 0x91FF, 0xDC6D, 0x91FD, 0xDC6E, 0x9206,
+	0xDC6F, 0x9204, 0xDC70, 0x9227, 0xDC71, 0x9202, 0xDC72, 0x921C,
+	0xDC73, 0x9224, 0xDC74, 0x9219, 0xDC75, 0x9217, 0xDC76, 0x9205,
+	0xDC77, 0x9216, 0xDC78, 0x957B, 0xDC79, 0x958D, 0xDC7A, 0x958C,
+	0xDC7B, 0x9590, 0xDC7C, 0x9687, 0xDC7D, 0x967E, 0xDC7E, 0x9688,
+	0xDCA1, 0x9689, 0xDCA2, 0x9683, 0xDCA3, 0x9680, 0xDCA4, 0x96C2,
+	0xDCA5, 0x96C8, 0xDCA6, 0x96C3, 0xDCA7, 0x96F1, 0xDCA8, 0x96F0,
+	0xDCA9, 0x976C, 0xDCAA, 0x9770, 0xDCAB, 0x976E, 0xDCAC, 0x9807,
+	0xDCAD, 0x98A9, 0xDCAE, 0x98EB, 0xDCAF, 0x9CE6, 0xDCB0, 0x9EF9,
+	0xDCB1, 0x4E83, 0xDCB2, 0x4E84, 0xDCB3, 0x4EB6, 0xDCB4, 0x50BD,
+	0xDCB5, 0x50BF, 0xDCB6, 0x50C6, 0xDCB7, 0x50AE, 0xDCB8, 0x50C4,
+	0xDCB9, 0x50CA, 0xDCBA, 0x50B4, 0xDCBB, 0x50C8, 0xDCBC, 0x50C2,
+	0xDCBD, 0x50B0, 0xDCBE, 0x50C1, 0xDCBF, 0x50BA, 0xDCC0, 0x50B1,
+	0xDCC1, 0x50CB, 0xDCC2, 0x50C9, 0xDCC3, 0x50B6, 0xDCC4, 0x50B8,
+	0xDCC5, 0x51D7, 0xDCC6, 0x527A, 0xDCC7, 0x5278, 0xDCC8, 0x527B,
+	0xDCC9, 0x527C, 0xDCCA, 0x55C3, 0xDCCB, 0x55DB, 0xDCCC, 0x55CC,
+	0xDCCD, 0x55D0, 0xDCCE, 0x55CB, 0xDCCF, 0x55CA, 0xDCD0, 0x55DD,
+	0xDCD1, 0x55C0, 0xDCD2, 0x55D4, 0xDCD3, 0x55C4, 0xDCD4, 0x55E9,
+	0xDCD5, 0x55BF, 0xDCD6, 0x55D2, 0xDCD7, 0x558D, 0xDCD8, 0x55CF,
+	0xDCD9, 0x55D5, 0xDCDA, 0x55E2, 0xDCDB, 0x55D6, 0xDCDC, 0x55C8,
+	0xDCDD, 0x55F2, 0xDCDE, 0x55CD, 0xDCDF, 0x55D9, 0xDCE0, 0x55C2,
+	0xDCE1, 0x5714, 0xDCE2, 0x5853, 0xDCE3, 0x5868, 0xDCE4, 0x5864,
+	0xDCE5, 0x584F, 0xDCE6, 0x584D, 0xDCE7, 0x5849, 0xDCE8, 0x586F,
+	0xDCE9, 0x5855, 0xDCEA, 0x584E, 0xDCEB, 0x585D, 0xDCEC, 0x5859,
+	0xDCED, 0x5865, 0xDCEE, 0x585B, 0xDCEF, 0x583D, 0xDCF0, 0x5863,
+	0xDCF1, 0x5871, 0xDCF2, 0x58FC, 0xDCF3, 0x5AC7, 0xDCF4, 0x5AC4,
+	0xDCF5, 0x5ACB, 0xDCF6, 0x5ABA, 0xDCF7, 0x5AB8, 0xDCF8, 0x5AB1,
+	0xDCF9, 0x5AB5, 0xDCFA, 0x5AB0, 0xDCFB, 0x5ABF, 0xDCFC, 0x5AC8,
+	0xDCFD, 0x5ABB, 0xDCFE, 0x5AC6, 0xDD40, 0x5AB7, 0xDD41, 0x5AC0,
+	0xDD42, 0x5ACA, 0xDD43, 0x5AB4, 0xDD44, 0x5AB6, 0xDD45, 0x5ACD,
+	0xDD46, 0x5AB9, 0xDD47, 0x5A90, 0xDD48, 0x5BD6, 0xDD49, 0x5BD8,
+	0xDD4A, 0x5BD9, 0xDD4B, 0x5C1F, 0xDD4C, 0x5C33, 0xDD4D, 0x5D71,
+	0xDD4E, 0x5D63, 0xDD4F, 0x5D4A, 0xDD50, 0x5D65, 0xDD51, 0x5D72,
+	0xDD52, 0x5D6C, 0xDD53, 0x5D5E, 0xDD54, 0x5D68, 0xDD55, 0x5D67,
+	0xDD56, 0x5D62, 0xDD57, 0x5DF0, 0xDD58, 0x5E4F, 0xDD59, 0x5E4E,
+	0xDD5A, 0x5E4A, 0xDD5B, 0x5E4D, 0xDD5C, 0x5E4B, 0xDD5D, 0x5EC5,
+	0xDD5E, 0x5ECC, 0xDD5F, 0x5EC6, 0xDD60, 0x5ECB, 0xDD61, 0x5EC7,
+	0xDD62, 0x5F40, 0xDD63, 0x5FAF, 0xDD64, 0x5FAD, 0xDD65, 0x60F7,
+	0xDD66, 0x6149, 0xDD67, 0x614A, 0xDD68, 0x612B, 0xDD69, 0x6145,
+	0xDD6A, 0x6136, 0xDD6B, 0x6132, 0xDD6C, 0x612E, 0xDD6D, 0x6146,
+	0xDD6E, 0x612F, 0xDD6F, 0x614F, 0xDD70, 0x6129, 0xDD71, 0x6140,
+	0xDD72, 0x6220, 0xDD73, 0x9168, 0xDD74, 0x6223, 0xDD75, 0x6225,
+	0xDD76, 0x6224, 0xDD77, 0x63C5, 0xDD78, 0x63F1, 0xDD79, 0x63EB,
+	0xDD7A, 0x6410, 0xDD7B, 0x6412, 0xDD7C, 0x6409, 0xDD7D, 0x6420,
+	0xDD7E, 0x6424, 0xDDA1, 0x6433, 0xDDA2, 0x6443, 0xDDA3, 0x641F,
+	0xDDA4, 0x6415, 0xDDA5, 0x6418, 0xDDA6, 0x6439, 0xDDA7, 0x6437,
+	0xDDA8, 0x6422, 0xDDA9, 0x6423, 0xDDAA, 0x640C, 0xDDAB, 0x6426,
+	0xDDAC, 0x6430, 0xDDAD, 0x6428, 0xDDAE, 0x6441, 0xDDAF, 0x6435,
+	0xDDB0, 0x642F, 0xDDB1, 0x640A, 0xDDB2, 0x641A, 0xDDB3, 0x6440,
+	0xDDB4, 0x6425, 0xDDB5, 0x6427, 0xDDB6, 0x640B, 0xDDB7, 0x63E7,
+	0xDDB8, 0x641B, 0xDDB9, 0x642E, 0xDDBA, 0x6421, 0xDDBB, 0x640E,
+	0xDDBC, 0x656F, 0xDDBD, 0x6592, 0xDDBE, 0x65D3, 0xDDBF, 0x6686,
+	0xDDC0, 0x668C, 0xDDC1, 0x6695, 0xDDC2, 0x6690, 0xDDC3, 0x668B,
+	0xDDC4, 0x668A, 0xDDC5, 0x6699, 0xDDC6, 0x6694, 0xDDC7, 0x6678,
+	0xDDC8, 0x6720, 0xDDC9, 0x6966, 0xDDCA, 0x695F, 0xDDCB, 0x6938,
+	0xDDCC, 0x694E, 0xDDCD, 0x6962, 0xDDCE, 0x6971, 0xDDCF, 0x693F,
+	0xDDD0, 0x6945, 0xDDD1, 0x696A, 0xDDD2, 0x6939, 0xDDD3, 0x6942,
+	0xDDD4, 0x6957, 0xDDD5, 0x6959, 0xDDD6, 0x697A, 0xDDD7, 0x6948,
+	0xDDD8, 0x6949, 0xDDD9, 0x6935, 0xDDDA, 0x696C, 0xDDDB, 0x6933,
+	0xDDDC, 0x693D, 0xDDDD, 0x6965, 0xDDDE, 0x68F0, 0xDDDF, 0x6978,
+	0xDDE0, 0x6934, 0xDDE1, 0x6969, 0xDDE2, 0x6940, 0xDDE3, 0x696F,
+	0xDDE4, 0x6944, 0xDDE5, 0x6976, 0xDDE6, 0x6958, 0xDDE7, 0x6941,
+	0xDDE8, 0x6974, 0xDDE9, 0x694C, 0xDDEA, 0x693B, 0xDDEB, 0x694B,
+	0xDDEC, 0x6937, 0xDDED, 0x695C, 0xDDEE, 0x694F, 0xDDEF, 0x6951,
+	0xDDF0, 0x6932, 0xDDF1, 0x6952, 0xDDF2, 0x692F, 0xDDF3, 0x697B,
+	0xDDF4, 0x693C, 0xDDF5, 0x6B46, 0xDDF6, 0x6B45, 0xDDF7, 0x6B43,
+	0xDDF8, 0x6B42, 0xDDF9, 0x6B48, 0xDDFA, 0x6B41, 0xDDFB, 0x6B9B,
+	0xDDFC, 0xFA0D, 0xDDFD, 0x6BFB, 0xDDFE, 0x6BFC, 0xDE40, 0x6BF9,
+	0xDE41, 0x6BF7, 0xDE42, 0x6BF8, 0xDE43, 0x6E9B, 0xDE44, 0x6ED6,
+	0xDE45, 0x6EC8, 0xDE46, 0x6E8F, 0xDE47, 0x6EC0, 0xDE48, 0x6E9F,
+	0xDE49, 0x6E93, 0xDE4A, 0x6E94, 0xDE4B, 0x6EA0, 0xDE4C, 0x6EB1,
+	0xDE4D, 0x6EB9, 0xDE4E, 0x6EC6, 0xDE4F, 0x6ED2, 0xDE50, 0x6EBD,
+	0xDE51, 0x6EC1, 0xDE52, 0x6E9E, 0xDE53, 0x6EC9, 0xDE54, 0x6EB7,
+	0xDE55, 0x6EB0, 0xDE56, 0x6ECD, 0xDE57, 0x6EA6, 0xDE58, 0x6ECF,
+	0xDE59, 0x6EB2, 0xDE5A, 0x6EBE, 0xDE5B, 0x6EC3, 0xDE5C, 0x6EDC,
+	0xDE5D, 0x6ED8, 0xDE5E, 0x6E99, 0xDE5F, 0x6E92, 0xDE60, 0x6E8E,
+	0xDE61, 0x6E8D, 0xDE62, 0x6EA4, 0xDE63, 0x6EA1, 0xDE64, 0x6EBF,
+	0xDE65, 0x6EB3, 0xDE66, 0x6ED0, 0xDE67, 0x6ECA, 0xDE68, 0x6E97,
+	0xDE69, 0x6EAE, 0xDE6A, 0x6EA3, 0xDE6B, 0x7147, 0xDE6C, 0x7154,
+	0xDE6D, 0x7152, 0xDE6E, 0x7163, 0xDE6F, 0x7160, 0xDE70, 0x7141,
+	0xDE71, 0x715D, 0xDE72, 0x7162, 0xDE73, 0x7172, 0xDE74, 0x7178,
+	0xDE75, 0x716A, 0xDE76, 0x7161, 0xDE77, 0x7142, 0xDE78, 0x7158,
+	0xDE79, 0x7143, 0xDE7A, 0x714B, 0xDE7B, 0x7170, 0xDE7C, 0x715F,
+	0xDE7D, 0x7150, 0xDE7E, 0x7153, 0xDEA1, 0x7144, 0xDEA2, 0x714D,
+	0xDEA3, 0x715A, 0xDEA4, 0x724F, 0xDEA5, 0x728D, 0xDEA6, 0x728C,
+	0xDEA7, 0x7291, 0xDEA8, 0x7290, 0xDEA9, 0x728E, 0xDEAA, 0x733C,
+	0xDEAB, 0x7342, 0xDEAC, 0x733B, 0xDEAD, 0x733A, 0xDEAE, 0x7340,
+	0xDEAF, 0x734A, 0xDEB0, 0x7349, 0xDEB1, 0x7444, 0xDEB2, 0x744A,
+	0xDEB3, 0x744B, 0xDEB4, 0x7452, 0xDEB5, 0x7451, 0xDEB6, 0x7457,
+	0xDEB7, 0x7440, 0xDEB8, 0x744F, 0xDEB9, 0x7450, 0xDEBA, 0x744E,
+	0xDEBB, 0x7442, 0xDEBC, 0x7446, 0xDEBD, 0x744D, 0xDEBE, 0x7454,
+	0xDEBF, 0x74E1, 0xDEC0, 0x74FF, 0xDEC1, 0x74FE, 0xDEC2, 0x74FD,
+	0xDEC3, 0x751D, 0xDEC4, 0x7579, 0xDEC5, 0x7577, 0xDEC6, 0x6983,
+	0xDEC7, 0x75EF, 0xDEC8, 0x760F, 0xDEC9, 0x7603, 0xDECA, 0x75F7,
+	0xDECB, 0x75FE, 0xDECC, 0x75FC, 0xDECD, 0x75F9, 0xDECE, 0x75F8,
+	0xDECF, 0x7610, 0xDED0, 0x75FB, 0xDED1, 0x75F6, 0xDED2, 0x75ED,
+	0xDED3, 0x75F5, 0xDED4, 0x75FD, 0xDED5, 0x7699, 0xDED6, 0x76B5,
+	0xDED7, 0x76DD, 0xDED8, 0x7755, 0xDED9, 0x775F, 0xDEDA, 0x7760,
+	0xDEDB, 0x7752, 0xDEDC, 0x7756, 0xDEDD, 0x775A, 0xDEDE, 0x7769,
+	0xDEDF, 0x7767, 0xDEE0, 0x7754, 0xDEE1, 0x7759, 0xDEE2, 0x776D,
+	0xDEE3, 0x77E0, 0xDEE4, 0x7887, 0xDEE5, 0x789A, 0xDEE6, 0x7894,
+	0xDEE7, 0x788F, 0xDEE8, 0x7884, 0xDEE9, 0x7895, 0xDEEA, 0x7885,
+	0xDEEB, 0x7886, 0xDEEC, 0x78A1, 0xDEED, 0x7883, 0xDEEE, 0x7879,
+	0xDEEF, 0x7899, 0xDEF0, 0x7880, 0xDEF1, 0x7896, 0xDEF2, 0x787B,
+	0xDEF3, 0x797C, 0xDEF4, 0x7982, 0xDEF5, 0x797D, 0xDEF6, 0x7979,
+	0xDEF7, 0x7A11, 0xDEF8, 0x7A18, 0xDEF9, 0x7A19, 0xDEFA, 0x7A12,
+	0xDEFB, 0x7A17, 0xDEFC, 0x7A15, 0xDEFD, 0x7A22, 0xDEFE, 0x7A13,
+	0xDF40, 0x7A1B, 0xDF41, 0x7A10, 0xDF42, 0x7AA3, 0xDF43, 0x7AA2,
+	0xDF44, 0x7A9E, 0xDF45, 0x7AEB, 0xDF46, 0x7B66, 0xDF47, 0x7B64,
+	0xDF48, 0x7B6D, 0xDF49, 0x7B74, 0xDF4A, 0x7B69, 0xDF4B, 0x7B72,
+	0xDF4C, 0x7B65, 0xDF4D, 0x7B73, 0xDF4E, 0x7B71, 0xDF4F, 0x7B70,
+	0xDF50, 0x7B61, 0xDF51, 0x7B78, 0xDF52, 0x7B76, 0xDF53, 0x7B63,
+	0xDF54, 0x7CB2, 0xDF55, 0x7CB4, 0xDF56, 0x7CAF, 0xDF57, 0x7D88,
+	0xDF58, 0x7D86, 0xDF59, 0x7D80, 0xDF5A, 0x7D8D, 0xDF5B, 0x7D7F,
+	0xDF5C, 0x7D85, 0xDF5D, 0x7D7A, 0xDF5E, 0x7D8E, 0xDF5F, 0x7D7B,
+	0xDF60, 0x7D83, 0xDF61, 0x7D7C, 0xDF62, 0x7D8C, 0xDF63, 0x7D94,
+	0xDF64, 0x7D84, 0xDF65, 0x7D7D, 0xDF66, 0x7D92, 0xDF67, 0x7F6D,
+	0xDF68, 0x7F6B, 0xDF69, 0x7F67, 0xDF6A, 0x7F68, 0xDF6B, 0x7F6C,
+	0xDF6C, 0x7FA6, 0xDF6D, 0x7FA5, 0xDF6E, 0x7FA7, 0xDF6F, 0x7FDB,
+	0xDF70, 0x7FDC, 0xDF71, 0x8021, 0xDF72, 0x8164, 0xDF73, 0x8160,
+	0xDF74, 0x8177, 0xDF75, 0x815C, 0xDF76, 0x8169, 0xDF77, 0x815B,
+	0xDF78, 0x8162, 0xDF79, 0x8172, 0xDF7A, 0x6721, 0xDF7B, 0x815E,
+	0xDF7C, 0x8176, 0xDF7D, 0x8167, 0xDF7E, 0x816F, 0xDFA1, 0x8144,
+	0xDFA2, 0x8161, 0xDFA3, 0x821D, 0xDFA4, 0x8249, 0xDFA5, 0x8244,
+	0xDFA6, 0x8240, 0xDFA7, 0x8242, 0xDFA8, 0x8245, 0xDFA9, 0x84F1,
+	0xDFAA, 0x843F, 0xDFAB, 0x8456, 0xDFAC, 0x8476, 0xDFAD, 0x8479,
+	0xDFAE, 0x848F, 0xDFAF, 0x848D, 0xDFB0, 0x8465, 0xDFB1, 0x8451,
+	0xDFB2, 0x8440, 0xDFB3, 0x8486, 0xDFB4, 0x8467, 0xDFB5, 0x8430,
+	0xDFB6, 0x844D, 0xDFB7, 0x847D, 0xDFB8, 0x845A, 0xDFB9, 0x8459,
+	0xDFBA, 0x8474, 0xDFBB, 0x8473, 0xDFBC, 0x845D, 0xDFBD, 0x8507,
+	0xDFBE, 0x845E, 0xDFBF, 0x8437, 0xDFC0, 0x843A, 0xDFC1, 0x8434,
+	0xDFC2, 0x847A, 0xDFC3, 0x8443, 0xDFC4, 0x8478, 0xDFC5, 0x8432,
+	0xDFC6, 0x8445, 0xDFC7, 0x8429, 0xDFC8, 0x83D9, 0xDFC9, 0x844B,
+	0xDFCA, 0x842F, 0xDFCB, 0x8442, 0xDFCC, 0x842D, 0xDFCD, 0x845F,
+	0xDFCE, 0x8470, 0xDFCF, 0x8439, 0xDFD0, 0x844E, 0xDFD1, 0x844C,
+	0xDFD2, 0x8452, 0xDFD3, 0x846F, 0xDFD4, 0x84C5, 0xDFD5, 0x848E,
+	0xDFD6, 0x843B, 0xDFD7, 0x8447, 0xDFD8, 0x8436, 0xDFD9, 0x8433,
+	0xDFDA, 0x8468, 0xDFDB, 0x847E, 0xDFDC, 0x8444, 0xDFDD, 0x842B,
+	0xDFDE, 0x8460, 0xDFDF, 0x8454, 0xDFE0, 0x846E, 0xDFE1, 0x8450,
+	0xDFE2, 0x870B, 0xDFE3, 0x8704, 0xDFE4, 0x86F7, 0xDFE5, 0x870C,
+	0xDFE6, 0x86FA, 0xDFE7, 0x86D6, 0xDFE8, 0x86F5, 0xDFE9, 0x874D,
+	0xDFEA, 0x86F8, 0xDFEB, 0x870E, 0xDFEC, 0x8709, 0xDFED, 0x8701,
+	0xDFEE, 0x86F6, 0xDFEF, 0x870D, 0xDFF0, 0x8705, 0xDFF1, 0x88D6,
+	0xDFF2, 0x88CB, 0xDFF3, 0x88CD, 0xDFF4, 0x88CE, 0xDFF5, 0x88DE,
+	0xDFF6, 0x88DB, 0xDFF7, 0x88DA, 0xDFF8, 0x88CC, 0xDFF9, 0x88D0,
+	0xDFFA, 0x8985, 0xDFFB, 0x899B, 0xDFFC, 0x89DF, 0xDFFD, 0x89E5,
+	0xDFFE, 0x89E4, 0xE040, 0x89E1, 0xE041, 0x89E0, 0xE042, 0x89E2,
+	0xE043, 0x89DC, 0xE044, 0x89E6, 0xE045, 0x8A76, 0xE046, 0x8A86,
+	0xE047, 0x8A7F, 0xE048, 0x8A61, 0xE049, 0x8A3F, 0xE04A, 0x8A77,
+	0xE04B, 0x8A82, 0xE04C, 0x8A84, 0xE04D, 0x8A75, 0xE04E, 0x8A83,
+	0xE04F, 0x8A81, 0xE050, 0x8A74, 0xE051, 0x8A7A, 0xE052, 0x8C3C,
+	0xE053, 0x8C4B, 0xE054, 0x8C4A, 0xE055, 0x8C65, 0xE056, 0x8C64,
+	0xE057, 0x8C66, 0xE058, 0x8C86, 0xE059, 0x8C84, 0xE05A, 0x8C85,
+	0xE05B, 0x8CCC, 0xE05C, 0x8D68, 0xE05D, 0x8D69, 0xE05E, 0x8D91,
+	0xE05F, 0x8D8C, 0xE060, 0x8D8E, 0xE061, 0x8D8F, 0xE062, 0x8D8D,
+	0xE063, 0x8D93, 0xE064, 0x8D94, 0xE065, 0x8D90, 0xE066, 0x8D92,
+	0xE067, 0x8DF0, 0xE068, 0x8DE0, 0xE069, 0x8DEC, 0xE06A, 0x8DF1,
+	0xE06B, 0x8DEE, 0xE06C, 0x8DD0, 0xE06D, 0x8DE9, 0xE06E, 0x8DE3,
+	0xE06F, 0x8DE2, 0xE070, 0x8DE7, 0xE071, 0x8DF2, 0xE072, 0x8DEB,
+	0xE073, 0x8DF4, 0xE074, 0x8F06, 0xE075, 0x8EFF, 0xE076, 0x8F01,
+	0xE077, 0x8F00, 0xE078, 0x8F05, 0xE079, 0x8F07, 0xE07A, 0x8F08,
+	0xE07B, 0x8F02, 0xE07C, 0x8F0B, 0xE07D, 0x9052, 0xE07E, 0x903F,
+	0xE0A1, 0x9044, 0xE0A2, 0x9049, 0xE0A3, 0x903D, 0xE0A4, 0x9110,
+	0xE0A5, 0x910D, 0xE0A6, 0x910F, 0xE0A7, 0x9111, 0xE0A8, 0x9116,
+	0xE0A9, 0x9114, 0xE0AA, 0x910B, 0xE0AB, 0x910E, 0xE0AC, 0x916E,
+	0xE0AD, 0x916F, 0xE0AE, 0x9248, 0xE0AF, 0x9252, 0xE0B0, 0x9230,
+	0xE0B1, 0x923A, 0xE0B2, 0x9266, 0xE0B3, 0x9233, 0xE0B4, 0x9265,
+	0xE0B5, 0x925E, 0xE0B6, 0x9283, 0xE0B7, 0x922E, 0xE0B8, 0x924A,
+	0xE0B9, 0x9246, 0xE0BA, 0x926D, 0xE0BB, 0x926C, 0xE0BC, 0x924F,
+	0xE0BD, 0x9260, 0xE0BE, 0x9267, 0xE0BF, 0x926F, 0xE0C0, 0x9236,
+	0xE0C1, 0x9261, 0xE0C2, 0x9270, 0xE0C3, 0x9231, 0xE0C4, 0x9254,
+	0xE0C5, 0x9263, 0xE0C6, 0x9250, 0xE0C7, 0x9272, 0xE0C8, 0x924E,
+	0xE0C9, 0x9253, 0xE0CA, 0x924C, 0xE0CB, 0x9256, 0xE0CC, 0x9232,
+	0xE0CD, 0x959F, 0xE0CE, 0x959C, 0xE0CF, 0x959E, 0xE0D0, 0x959B,
+	0xE0D1, 0x9692, 0xE0D2, 0x9693, 0xE0D3, 0x9691, 0xE0D4, 0x9697,
+	0xE0D5, 0x96CE, 0xE0D6, 0x96FA, 0xE0D7, 0x96FD, 0xE0D8, 0x96F8,
+	0xE0D9, 0x96F5, 0xE0DA, 0x9773, 0xE0DB, 0x9777, 0xE0DC, 0x9778,
+	0xE0DD, 0x9772, 0xE0DE, 0x980F, 0xE0DF, 0x980D, 0xE0E0, 0x980E,
+	0xE0E1, 0x98AC, 0xE0E2, 0x98F6, 0xE0E3, 0x98F9, 0xE0E4, 0x99AF,
+	0xE0E5, 0x99B2, 0xE0E6, 0x99B0, 0xE0E7, 0x99B5, 0xE0E8, 0x9AAD,
+	0xE0E9, 0x9AAB, 0xE0EA, 0x9B5B, 0xE0EB, 0x9CEA, 0xE0EC, 0x9CED,
+	0xE0ED, 0x9CE7, 0xE0EE, 0x9E80, 0xE0EF, 0x9EFD, 0xE0F0, 0x50E6,
+	0xE0F1, 0x50D4, 0xE0F2, 0x50D7, 0xE0F3, 0x50E8, 0xE0F4, 0x50F3,
+	0xE0F5, 0x50DB, 0xE0F6, 0x50EA, 0xE0F7, 0x50DD, 0xE0F8, 0x50E4,
+	0xE0F9, 0x50D3, 0xE0FA, 0x50EC, 0xE0FB, 0x50F0, 0xE0FC, 0x50EF,
+	0xE0FD, 0x50E3, 0xE0FE, 0x50E0, 0xE140, 0x51D8, 0xE141, 0x5280,
+	0xE142, 0x5281, 0xE143, 0x52E9, 0xE144, 0x52EB, 0xE145, 0x5330,
+	0xE146, 0x53AC, 0xE147, 0x5627, 0xE148, 0x5615, 0xE149, 0x560C,
+	0xE14A, 0x5612, 0xE14B, 0x55FC, 0xE14C, 0x560F, 0xE14D, 0x561C,
+	0xE14E, 0x5601, 0xE14F, 0x5613, 0xE150, 0x5602, 0xE151, 0x55FA,
+	0xE152, 0x561D, 0xE153, 0x5604, 0xE154, 0x55FF, 0xE155, 0x55F9,
+	0xE156, 0x5889, 0xE157, 0x587C, 0xE158, 0x5890, 0xE159, 0x5898,
+	0xE15A, 0x5886, 0xE15B, 0x5881, 0xE15C, 0x587F, 0xE15D, 0x5874,
+	0xE15E, 0x588B, 0xE15F, 0x587A, 0xE160, 0x5887, 0xE161, 0x5891,
+	0xE162, 0x588E, 0xE163, 0x5876, 0xE164, 0x5882, 0xE165, 0x5888,
+	0xE166, 0x587B, 0xE167, 0x5894, 0xE168, 0x588F, 0xE169, 0x58FE,
+	0xE16A, 0x596B, 0xE16B, 0x5ADC, 0xE16C, 0x5AEE, 0xE16D, 0x5AE5,
+	0xE16E, 0x5AD5, 0xE16F, 0x5AEA, 0xE170, 0x5ADA, 0xE171, 0x5AED,
+	0xE172, 0x5AEB, 0xE173, 0x5AF3, 0xE174, 0x5AE2, 0xE175, 0x5AE0,
+	0xE176, 0x5ADB, 0xE177, 0x5AEC, 0xE178, 0x5ADE, 0xE179, 0x5ADD,
+	0xE17A, 0x5AD9, 0xE17B, 0x5AE8, 0xE17C, 0x5ADF, 0xE17D, 0x5B77,
+	0xE17E, 0x5BE0, 0xE1A1, 0x5BE3, 0xE1A2, 0x5C63, 0xE1A3, 0x5D82,
+	0xE1A4, 0x5D80, 0xE1A5, 0x5D7D, 0xE1A6, 0x5D86, 0xE1A7, 0x5D7A,
+	0xE1A8, 0x5D81, 0xE1A9, 0x5D77, 0xE1AA, 0x5D8A, 0xE1AB, 0x5D89,
+	0xE1AC, 0x5D88, 0xE1AD, 0x5D7E, 0xE1AE, 0x5D7C, 0xE1AF, 0x5D8D,
+	0xE1B0, 0x5D79, 0xE1B1, 0x5D7F, 0xE1B2, 0x5E58, 0xE1B3, 0x5E59,
+	0xE1B4, 0x5E53, 0xE1B5, 0x5ED8, 0xE1B6, 0x5ED1, 0xE1B7, 0x5ED7,
+	0xE1B8, 0x5ECE, 0xE1B9, 0x5EDC, 0xE1BA, 0x5ED5, 0xE1BB, 0x5ED9,
+	0xE1BC, 0x5ED2, 0xE1BD, 0x5ED4, 0xE1BE, 0x5F44, 0xE1BF, 0x5F43,
+	0xE1C0, 0x5F6F, 0xE1C1, 0x5FB6, 0xE1C2, 0x612C, 0xE1C3, 0x6128,
+	0xE1C4, 0x6141, 0xE1C5, 0x615E, 0xE1C6, 0x6171, 0xE1C7, 0x6173,
+	0xE1C8, 0x6152, 0xE1C9, 0x6153, 0xE1CA, 0x6172, 0xE1CB, 0x616C,
+	0xE1CC, 0x6180, 0xE1CD, 0x6174, 0xE1CE, 0x6154, 0xE1CF, 0x617A,
+	0xE1D0, 0x615B, 0xE1D1, 0x6165, 0xE1D2, 0x613B, 0xE1D3, 0x616A,
+	0xE1D4, 0x6161, 0xE1D5, 0x6156, 0xE1D6, 0x6229, 0xE1D7, 0x6227,
+	0xE1D8, 0x622B, 0xE1D9, 0x642B, 0xE1DA, 0x644D, 0xE1DB, 0x645B,
+	0xE1DC, 0x645D, 0xE1DD, 0x6474, 0xE1DE, 0x6476, 0xE1DF, 0x6472,
+	0xE1E0, 0x6473, 0xE1E1, 0x647D, 0xE1E2, 0x6475, 0xE1E3, 0x6466,
+	0xE1E4, 0x64A6, 0xE1E5, 0x644E, 0xE1E6, 0x6482, 0xE1E7, 0x645E,
+	0xE1E8, 0x645C, 0xE1E9, 0x644B, 0xE1EA, 0x6453, 0xE1EB, 0x6460,
+	0xE1EC, 0x6450, 0xE1ED, 0x647F, 0xE1EE, 0x643F, 0xE1EF, 0x646C,
+	0xE1F0, 0x646B, 0xE1F1, 0x6459, 0xE1F2, 0x6465, 0xE1F3, 0x6477,
+	0xE1F4, 0x6573, 0xE1F5, 0x65A0, 0xE1F6, 0x66A1, 0xE1F7, 0x66A0,
+	0xE1F8, 0x669F, 0xE1F9, 0x6705, 0xE1FA, 0x6704, 0xE1FB, 0x6722,
+	0xE1FC, 0x69B1, 0xE1FD, 0x69B6, 0xE1FE, 0x69C9, 0xE240, 0x69A0,
+	0xE241, 0x69CE, 0xE242, 0x6996, 0xE243, 0x69B0, 0xE244, 0x69AC,
+	0xE245, 0x69BC, 0xE246, 0x6991, 0xE247, 0x6999, 0xE248, 0x698E,
+	0xE249, 0x69A7, 0xE24A, 0x698D, 0xE24B, 0x69A9, 0xE24C, 0x69BE,
+	0xE24D, 0x69AF, 0xE24E, 0x69BF, 0xE24F, 0x69C4, 0xE250, 0x69BD,
+	0xE251, 0x69A4, 0xE252, 0x69D4, 0xE253, 0x69B9, 0xE254, 0x69CA,
+	0xE255, 0x699A, 0xE256, 0x69CF, 0xE257, 0x69B3, 0xE258, 0x6993,
+	0xE259, 0x69AA, 0xE25A, 0x69A1, 0xE25B, 0x699E, 0xE25C, 0x69D9,
+	0xE25D, 0x6997, 0xE25E, 0x6990, 0xE25F, 0x69C2, 0xE260, 0x69B5,
+	0xE261, 0x69A5, 0xE262, 0x69C6, 0xE263, 0x6B4A, 0xE264, 0x6B4D,
+	0xE265, 0x6B4B, 0xE266, 0x6B9E, 0xE267, 0x6B9F, 0xE268, 0x6BA0,
+	0xE269, 0x6BC3, 0xE26A, 0x6BC4, 0xE26B, 0x6BFE, 0xE26C, 0x6ECE,
+	0xE26D, 0x6EF5, 0xE26E, 0x6EF1, 0xE26F, 0x6F03, 0xE270, 0x6F25,
+	0xE271, 0x6EF8, 0xE272, 0x6F37, 0xE273, 0x6EFB, 0xE274, 0x6F2E,
+	0xE275, 0x6F09, 0xE276, 0x6F4E, 0xE277, 0x6F19, 0xE278, 0x6F1A,
+	0xE279, 0x6F27, 0xE27A, 0x6F18, 0xE27B, 0x6F3B, 0xE27C, 0x6F12,
+	0xE27D, 0x6EED, 0xE27E, 0x6F0A, 0xE2A1, 0x6F36, 0xE2A2, 0x6F73,
+	0xE2A3, 0x6EF9, 0xE2A4, 0x6EEE, 0xE2A5, 0x6F2D, 0xE2A6, 0x6F40,
+	0xE2A7, 0x6F30, 0xE2A8, 0x6F3C, 0xE2A9, 0x6F35, 0xE2AA, 0x6EEB,
+	0xE2AB, 0x6F07, 0xE2AC, 0x6F0E, 0xE2AD, 0x6F43, 0xE2AE, 0x6F05,
+	0xE2AF, 0x6EFD, 0xE2B0, 0x6EF6, 0xE2B1, 0x6F39, 0xE2B2, 0x6F1C,
+	0xE2B3, 0x6EFC, 0xE2B4, 0x6F3A, 0xE2B5, 0x6F1F, 0xE2B6, 0x6F0D,
+	0xE2B7, 0x6F1E, 0xE2B8, 0x6F08, 0xE2B9, 0x6F21, 0xE2BA, 0x7187,
+	0xE2BB, 0x7190, 0xE2BC, 0x7189, 0xE2BD, 0x7180, 0xE2BE, 0x7185,
+	0xE2BF, 0x7182, 0xE2C0, 0x718F, 0xE2C1, 0x717B, 0xE2C2, 0x7186,
+	0xE2C3, 0x7181, 0xE2C4, 0x7197, 0xE2C5, 0x7244, 0xE2C6, 0x7253,
+	0xE2C7, 0x7297, 0xE2C8, 0x7295, 0xE2C9, 0x7293, 0xE2CA, 0x7343,
+	0xE2CB, 0x734D, 0xE2CC, 0x7351, 0xE2CD, 0x734C, 0xE2CE, 0x7462,
+	0xE2CF, 0x7473, 0xE2D0, 0x7471, 0xE2D1, 0x7475, 0xE2D2, 0x7472,
+	0xE2D3, 0x7467, 0xE2D4, 0x746E, 0xE2D5, 0x7500, 0xE2D6, 0x7502,
+	0xE2D7, 0x7503, 0xE2D8, 0x757D, 0xE2D9, 0x7590, 0xE2DA, 0x7616,
+	0xE2DB, 0x7608, 0xE2DC, 0x760C, 0xE2DD, 0x7615, 0xE2DE, 0x7611,
+	0xE2DF, 0x760A, 0xE2E0, 0x7614, 0xE2E1, 0x76B8, 0xE2E2, 0x7781,
+	0xE2E3, 0x777C, 0xE2E4, 0x7785, 0xE2E5, 0x7782, 0xE2E6, 0x776E,
+	0xE2E7, 0x7780, 0xE2E8, 0x776F, 0xE2E9, 0x777E, 0xE2EA, 0x7783,
+	0xE2EB, 0x78B2, 0xE2EC, 0x78AA, 0xE2ED, 0x78B4, 0xE2EE, 0x78AD,
+	0xE2EF, 0x78A8, 0xE2F0, 0x787E, 0xE2F1, 0x78AB, 0xE2F2, 0x789E,
+	0xE2F3, 0x78A5, 0xE2F4, 0x78A0, 0xE2F5, 0x78AC, 0xE2F6, 0x78A2,
+	0xE2F7, 0x78A4, 0xE2F8, 0x7998, 0xE2F9, 0x798A, 0xE2FA, 0x798B,
+	0xE2FB, 0x7996, 0xE2FC, 0x7995, 0xE2FD, 0x7994, 0xE2FE, 0x7993,
+	0xE340, 0x7997, 0xE341, 0x7988, 0xE342, 0x7992, 0xE343, 0x7990,
+	0xE344, 0x7A2B, 0xE345, 0x7A4A, 0xE346, 0x7A30, 0xE347, 0x7A2F,
+	0xE348, 0x7A28, 0xE349, 0x7A26, 0xE34A, 0x7AA8, 0xE34B, 0x7AAB,
+	0xE34C, 0x7AAC, 0xE34D, 0x7AEE, 0xE34E, 0x7B88, 0xE34F, 0x7B9C,
+	0xE350, 0x7B8A, 0xE351, 0x7B91, 0xE352, 0x7B90, 0xE353, 0x7B96,
+	0xE354, 0x7B8D, 0xE355, 0x7B8C, 0xE356, 0x7B9B, 0xE357, 0x7B8E,
+	0xE358, 0x7B85, 0xE359, 0x7B98, 0xE35A, 0x5284, 0xE35B, 0x7B99,
+	0xE35C, 0x7BA4, 0xE35D, 0x7B82, 0xE35E, 0x7CBB, 0xE35F, 0x7CBF,
+	0xE360, 0x7CBC, 0xE361, 0x7CBA, 0xE362, 0x7DA7, 0xE363, 0x7DB7,
+	0xE364, 0x7DC2, 0xE365, 0x7DA3, 0xE366, 0x7DAA, 0xE367, 0x7DC1,
+	0xE368, 0x7DC0, 0xE369, 0x7DC5, 0xE36A, 0x7D9D, 0xE36B, 0x7DCE,
+	0xE36C, 0x7DC4, 0xE36D, 0x7DC6, 0xE36E, 0x7DCB, 0xE36F, 0x7DCC,
+	0xE370, 0x7DAF, 0xE371, 0x7DB9, 0xE372, 0x7D96, 0xE373, 0x7DBC,
+	0xE374, 0x7D9F, 0xE375, 0x7DA6, 0xE376, 0x7DAE, 0xE377, 0x7DA9,
+	0xE378, 0x7DA1, 0xE379, 0x7DC9, 0xE37A, 0x7F73, 0xE37B, 0x7FE2,
+	0xE37C, 0x7FE3, 0xE37D, 0x7FE5, 0xE37E, 0x7FDE, 0xE3A1, 0x8024,
+	0xE3A2, 0x805D, 0xE3A3, 0x805C, 0xE3A4, 0x8189, 0xE3A5, 0x8186,
+	0xE3A6, 0x8183, 0xE3A7, 0x8187, 0xE3A8, 0x818D, 0xE3A9, 0x818C,
+	0xE3AA, 0x818B, 0xE3AB, 0x8215, 0xE3AC, 0x8497, 0xE3AD, 0x84A4,
+	0xE3AE, 0x84A1, 0xE3AF, 0x849F, 0xE3B0, 0x84BA, 0xE3B1, 0x84CE,
+	0xE3B2, 0x84C2, 0xE3B3, 0x84AC, 0xE3B4, 0x84AE, 0xE3B5, 0x84AB,
+	0xE3B6, 0x84B9, 0xE3B7, 0x84B4, 0xE3B8, 0x84C1, 0xE3B9, 0x84CD,
+	0xE3BA, 0x84AA, 0xE3BB, 0x849A, 0xE3BC, 0x84B1, 0xE3BD, 0x84D0,
+	0xE3BE, 0x849D, 0xE3BF, 0x84A7, 0xE3C0, 0x84BB, 0xE3C1, 0x84A2,
+	0xE3C2, 0x8494, 0xE3C3, 0x84C7, 0xE3C4, 0x84CC, 0xE3C5, 0x849B,
+	0xE3C6, 0x84A9, 0xE3C7, 0x84AF, 0xE3C8, 0x84A8, 0xE3C9, 0x84D6,
+	0xE3CA, 0x8498, 0xE3CB, 0x84B6, 0xE3CC, 0x84CF, 0xE3CD, 0x84A0,
+	0xE3CE, 0x84D7, 0xE3CF, 0x84D4, 0xE3D0, 0x84D2, 0xE3D1, 0x84DB,
+	0xE3D2, 0x84B0, 0xE3D3, 0x8491, 0xE3D4, 0x8661, 0xE3D5, 0x8733,
+	0xE3D6, 0x8723, 0xE3D7, 0x8728, 0xE3D8, 0x876B, 0xE3D9, 0x8740,
+	0xE3DA, 0x872E, 0xE3DB, 0x871E, 0xE3DC, 0x8721, 0xE3DD, 0x8719,
+	0xE3DE, 0x871B, 0xE3DF, 0x8743, 0xE3E0, 0x872C, 0xE3E1, 0x8741,
+	0xE3E2, 0x873E, 0xE3E3, 0x8746, 0xE3E4, 0x8720, 0xE3E5, 0x8732,
+	0xE3E6, 0x872A, 0xE3E7, 0x872D, 0xE3E8, 0x873C, 0xE3E9, 0x8712,
+	0xE3EA, 0x873A, 0xE3EB, 0x8731, 0xE3EC, 0x8735, 0xE3ED, 0x8742,
+	0xE3EE, 0x8726, 0xE3EF, 0x8727, 0xE3F0, 0x8738, 0xE3F1, 0x8724,
+	0xE3F2, 0x871A, 0xE3F3, 0x8730, 0xE3F4, 0x8711, 0xE3F5, 0x88F7,
+	0xE3F6, 0x88E7, 0xE3F7, 0x88F1, 0xE3F8, 0x88F2, 0xE3F9, 0x88FA,
+	0xE3FA, 0x88FE, 0xE3FB, 0x88EE, 0xE3FC, 0x88FC, 0xE3FD, 0x88F6,
+	0xE3FE, 0x88FB, 0xE440, 0x88F0, 0xE441, 0x88EC, 0xE442, 0x88EB,
+	0xE443, 0x899D, 0xE444, 0x89A1, 0xE445, 0x899F, 0xE446, 0x899E,
+	0xE447, 0x89E9, 0xE448, 0x89EB, 0xE449, 0x89E8, 0xE44A, 0x8AAB,
+	0xE44B, 0x8A99, 0xE44C, 0x8A8B, 0xE44D, 0x8A92, 0xE44E, 0x8A8F,
+	0xE44F, 0x8A96, 0xE450, 0x8C3D, 0xE451, 0x8C68, 0xE452, 0x8C69,
+	0xE453, 0x8CD5, 0xE454, 0x8CCF, 0xE455, 0x8CD7, 0xE456, 0x8D96,
+	0xE457, 0x8E09, 0xE458, 0x8E02, 0xE459, 0x8DFF, 0xE45A, 0x8E0D,
+	0xE45B, 0x8DFD, 0xE45C, 0x8E0A, 0xE45D, 0x8E03, 0xE45E, 0x8E07,
+	0xE45F, 0x8E06, 0xE460, 0x8E05, 0xE461, 0x8DFE, 0xE462, 0x8E00,
+	0xE463, 0x8E04, 0xE464, 0x8F10, 0xE465, 0x8F11, 0xE466, 0x8F0E,
+	0xE467, 0x8F0D, 0xE468, 0x9123, 0xE469, 0x911C, 0xE46A, 0x9120,
+	0xE46B, 0x9122, 0xE46C, 0x911F, 0xE46D, 0x911D, 0xE46E, 0x911A,
+	0xE46F, 0x9124, 0xE470, 0x9121, 0xE471, 0x911B, 0xE472, 0x917A,
+	0xE473, 0x9172, 0xE474, 0x9179, 0xE475, 0x9173, 0xE476, 0x92A5,
+	0xE477, 0x92A4, 0xE478, 0x9276, 0xE479, 0x929B, 0xE47A, 0x927A,
+	0xE47B, 0x92A0, 0xE47C, 0x9294, 0xE47D, 0x92AA, 0xE47E, 0x928D,
+	0xE4A1, 0x92A6, 0xE4A2, 0x929A, 0xE4A3, 0x92AB, 0xE4A4, 0x9279,
+	0xE4A5, 0x9297, 0xE4A6, 0x927F, 0xE4A7, 0x92A3, 0xE4A8, 0x92EE,
+	0xE4A9, 0x928E, 0xE4AA, 0x9282, 0xE4AB, 0x9295, 0xE4AC, 0x92A2,
+	0xE4AD, 0x927D, 0xE4AE, 0x9288, 0xE4AF, 0x92A1, 0xE4B0, 0x928A,
+	0xE4B1, 0x9286, 0xE4B2, 0x928C, 0xE4B3, 0x9299, 0xE4B4, 0x92A7,
+	0xE4B5, 0x927E, 0xE4B6, 0x9287, 0xE4B7, 0x92A9, 0xE4B8, 0x929D,
+	0xE4B9, 0x928B, 0xE4BA, 0x922D, 0xE4BB, 0x969E, 0xE4BC, 0x96A1,
+	0xE4BD, 0x96FF, 0xE4BE, 0x9758, 0xE4BF, 0x977D, 0xE4C0, 0x977A,
+	0xE4C1, 0x977E, 0xE4C2, 0x9783, 0xE4C3, 0x9780, 0xE4C4, 0x9782,
+	0xE4C5, 0x977B, 0xE4C6, 0x9784, 0xE4C7, 0x9781, 0xE4C8, 0x977F,
+	0xE4C9, 0x97CE, 0xE4CA, 0x97CD, 0xE4CB, 0x9816, 0xE4CC, 0x98AD,
+	0xE4CD, 0x98AE, 0xE4CE, 0x9902, 0xE4CF, 0x9900, 0xE4D0, 0x9907,
+	0xE4D1, 0x999D, 0xE4D2, 0x999C, 0xE4D3, 0x99C3, 0xE4D4, 0x99B9,
+	0xE4D5, 0x99BB, 0xE4D6, 0x99BA, 0xE4D7, 0x99C2, 0xE4D8, 0x99BD,
+	0xE4D9, 0x99C7, 0xE4DA, 0x9AB1, 0xE4DB, 0x9AE3, 0xE4DC, 0x9AE7,
+	0xE4DD, 0x9B3E, 0xE4DE, 0x9B3F, 0xE4DF, 0x9B60, 0xE4E0, 0x9B61,
+	0xE4E1, 0x9B5F, 0xE4E2, 0x9CF1, 0xE4E3, 0x9CF2, 0xE4E4, 0x9CF5,
+	0xE4E5, 0x9EA7, 0xE4E6, 0x50FF, 0xE4E7, 0x5103, 0xE4E8, 0x5130,
+	0xE4E9, 0x50F8, 0xE4EA, 0x5106, 0xE4EB, 0x5107, 0xE4EC, 0x50F6,
+	0xE4ED, 0x50FE, 0xE4EE, 0x510B, 0xE4EF, 0x510C, 0xE4F0, 0x50FD,
+	0xE4F1, 0x510A, 0xE4F2, 0x528B, 0xE4F3, 0x528C, 0xE4F4, 0x52F1,
+	0xE4F5, 0x52EF, 0xE4F6, 0x5648, 0xE4F7, 0x5642, 0xE4F8, 0x564C,
+	0xE4F9, 0x5635, 0xE4FA, 0x5641, 0xE4FB, 0x564A, 0xE4FC, 0x5649,
+	0xE4FD, 0x5646, 0xE4FE, 0x5658, 0xE540, 0x565A, 0xE541, 0x5640,
+	0xE542, 0x5633, 0xE543, 0x563D, 0xE544, 0x562C, 0xE545, 0x563E,
+	0xE546, 0x5638, 0xE547, 0x562A, 0xE548, 0x563A, 0xE549, 0x571A,
+	0xE54A, 0x58AB, 0xE54B, 0x589D, 0xE54C, 0x58B1, 0xE54D, 0x58A0,
+	0xE54E, 0x58A3, 0xE54F, 0x58AF, 0xE550, 0x58AC, 0xE551, 0x58A5,
+	0xE552, 0x58A1, 0xE553, 0x58FF, 0xE554, 0x5AFF, 0xE555, 0x5AF4,
+	0xE556, 0x5AFD, 0xE557, 0x5AF7, 0xE558, 0x5AF6, 0xE559, 0x5B03,
+	0xE55A, 0x5AF8, 0xE55B, 0x5B02, 0xE55C, 0x5AF9, 0xE55D, 0x5B01,
+	0xE55E, 0x5B07, 0xE55F, 0x5B05, 0xE560, 0x5B0F, 0xE561, 0x5C67,
+	0xE562, 0x5D99, 0xE563, 0x5D97, 0xE564, 0x5D9F, 0xE565, 0x5D92,
+	0xE566, 0x5DA2, 0xE567, 0x5D93, 0xE568, 0x5D95, 0xE569, 0x5DA0,
+	0xE56A, 0x5D9C, 0xE56B, 0x5DA1, 0xE56C, 0x5D9A, 0xE56D, 0x5D9E,
+	0xE56E, 0x5E69, 0xE56F, 0x5E5D, 0xE570, 0x5E60, 0xE571, 0x5E5C,
+	0xE572, 0x7DF3, 0xE573, 0x5EDB, 0xE574, 0x5EDE, 0xE575, 0x5EE1,
+	0xE576, 0x5F49, 0xE577, 0x5FB2, 0xE578, 0x618B, 0xE579, 0x6183,
+	0xE57A, 0x6179, 0xE57B, 0x61B1, 0xE57C, 0x61B0, 0xE57D, 0x61A2,
+	0xE57E, 0x6189, 0xE5A1, 0x619B, 0xE5A2, 0x6193, 0xE5A3, 0x61AF,
+	0xE5A4, 0x61AD, 0xE5A5, 0x619F, 0xE5A6, 0x6192, 0xE5A7, 0x61AA,
+	0xE5A8, 0x61A1, 0xE5A9, 0x618D, 0xE5AA, 0x6166, 0xE5AB, 0x61B3,
+	0xE5AC, 0x622D, 0xE5AD, 0x646E, 0xE5AE, 0x6470, 0xE5AF, 0x6496,
+	0xE5B0, 0x64A0, 0xE5B1, 0x6485, 0xE5B2, 0x6497, 0xE5B3, 0x649C,
+	0xE5B4, 0x648F, 0xE5B5, 0x648B, 0xE5B6, 0x648A, 0xE5B7, 0x648C,
+	0xE5B8, 0x64A3, 0xE5B9, 0x649F, 0xE5BA, 0x6468, 0xE5BB, 0x64B1,
+	0xE5BC, 0x6498, 0xE5BD, 0x6576, 0xE5BE, 0x657A, 0xE5BF, 0x6579,
+	0xE5C0, 0x657B, 0xE5C1, 0x65B2, 0xE5C2, 0x65B3, 0xE5C3, 0x66B5,
+	0xE5C4, 0x66B0, 0xE5C5, 0x66A9, 0xE5C6, 0x66B2, 0xE5C7, 0x66B7,
+	0xE5C8, 0x66AA, 0xE5C9, 0x66AF, 0xE5CA, 0x6A00, 0xE5CB, 0x6A06,
+	0xE5CC, 0x6A17, 0xE5CD, 0x69E5, 0xE5CE, 0x69F8, 0xE5CF, 0x6A15,
+	0xE5D0, 0x69F1, 0xE5D1, 0x69E4, 0xE5D2, 0x6A20, 0xE5D3, 0x69FF,
+	0xE5D4, 0x69EC, 0xE5D5, 0x69E2, 0xE5D6, 0x6A1B, 0xE5D7, 0x6A1D,
+	0xE5D8, 0x69FE, 0xE5D9, 0x6A27, 0xE5DA, 0x69F2, 0xE5DB, 0x69EE,
+	0xE5DC, 0x6A14, 0xE5DD, 0x69F7, 0xE5DE, 0x69E7, 0xE5DF, 0x6A40,
+	0xE5E0, 0x6A08, 0xE5E1, 0x69E6, 0xE5E2, 0x69FB, 0xE5E3, 0x6A0D,
+	0xE5E4, 0x69FC, 0xE5E5, 0x69EB, 0xE5E6, 0x6A09, 0xE5E7, 0x6A04,
+	0xE5E8, 0x6A18, 0xE5E9, 0x6A25, 0xE5EA, 0x6A0F, 0xE5EB, 0x69F6,
+	0xE5EC, 0x6A26, 0xE5ED, 0x6A07, 0xE5EE, 0x69F4, 0xE5EF, 0x6A16,
+	0xE5F0, 0x6B51, 0xE5F1, 0x6BA5, 0xE5F2, 0x6BA3, 0xE5F3, 0x6BA2,
+	0xE5F4, 0x6BA6, 0xE5F5, 0x6C01, 0xE5F6, 0x6C00, 0xE5F7, 0x6BFF,
+	0xE5F8, 0x6C02, 0xE5F9, 0x6F41, 0xE5FA, 0x6F26, 0xE5FB, 0x6F7E,
+	0xE5FC, 0x6F87, 0xE5FD, 0x6FC6, 0xE5FE, 0x6F92, 0xE640, 0x6F8D,
+	0xE641, 0x6F89, 0xE642, 0x6F8C, 0xE643, 0x6F62, 0xE644, 0x6F4F,
+	0xE645, 0x6F85, 0xE646, 0x6F5A, 0xE647, 0x6F96, 0xE648, 0x6F76,
+	0xE649, 0x6F6C, 0xE64A, 0x6F82, 0xE64B, 0x6F55, 0xE64C, 0x6F72,
+	0xE64D, 0x6F52, 0xE64E, 0x6F50, 0xE64F, 0x6F57, 0xE650, 0x6F94,
+	0xE651, 0x6F93, 0xE652, 0x6F5D, 0xE653, 0x6F00, 0xE654, 0x6F61,
+	0xE655, 0x6F6B, 0xE656, 0x6F7D, 0xE657, 0x6F67, 0xE658, 0x6F90,
+	0xE659, 0x6F53, 0xE65A, 0x6F8B, 0xE65B, 0x6F69, 0xE65C, 0x6F7F,
+	0xE65D, 0x6F95, 0xE65E, 0x6F63, 0xE65F, 0x6F77, 0xE660, 0x6F6A,
+	0xE661, 0x6F7B, 0xE662, 0x71B2, 0xE663, 0x71AF, 0xE664, 0x719B,
+	0xE665, 0x71B0, 0xE666, 0x71A0, 0xE667, 0x719A, 0xE668, 0x71A9,
+	0xE669, 0x71B5, 0xE66A, 0x719D, 0xE66B, 0x71A5, 0xE66C, 0x719E,
+	0xE66D, 0x71A4, 0xE66E, 0x71A1, 0xE66F, 0x71AA, 0xE670, 0x719C,
+	0xE671, 0x71A7, 0xE672, 0x71B3, 0xE673, 0x7298, 0xE674, 0x729A,
+	0xE675, 0x7358, 0xE676, 0x7352, 0xE677, 0x735E, 0xE678, 0x735F,
+	0xE679, 0x7360, 0xE67A, 0x735D, 0xE67B, 0x735B, 0xE67C, 0x7361,
+	0xE67D, 0x735A, 0xE67E, 0x7359, 0xE6A1, 0x7362, 0xE6A2, 0x7487,
+	0xE6A3, 0x7489, 0xE6A4, 0x748A, 0xE6A5, 0x7486, 0xE6A6, 0x7481,
+	0xE6A7, 0x747D, 0xE6A8, 0x7485, 0xE6A9, 0x7488, 0xE6AA, 0x747C,
+	0xE6AB, 0x7479, 0xE6AC, 0x7508, 0xE6AD, 0x7507, 0xE6AE, 0x757E,
+	0xE6AF, 0x7625, 0xE6B0, 0x761E, 0xE6B1, 0x7619, 0xE6B2, 0x761D,
+	0xE6B3, 0x761C, 0xE6B4, 0x7623, 0xE6B5, 0x761A, 0xE6B6, 0x7628,
+	0xE6B7, 0x761B, 0xE6B8, 0x769C, 0xE6B9, 0x769D, 0xE6BA, 0x769E,
+	0xE6BB, 0x769B, 0xE6BC, 0x778D, 0xE6BD, 0x778F, 0xE6BE, 0x7789,
+	0xE6BF, 0x7788, 0xE6C0, 0x78CD, 0xE6C1, 0x78BB, 0xE6C2, 0x78CF,
+	0xE6C3, 0x78CC, 0xE6C4, 0x78D1, 0xE6C5, 0x78CE, 0xE6C6, 0x78D4,
+	0xE6C7, 0x78C8, 0xE6C8, 0x78C3, 0xE6C9, 0x78C4, 0xE6CA, 0x78C9,
+	0xE6CB, 0x799A, 0xE6CC, 0x79A1, 0xE6CD, 0x79A0, 0xE6CE, 0x799C,
+	0xE6CF, 0x79A2, 0xE6D0, 0x799B, 0xE6D1, 0x6B76, 0xE6D2, 0x7A39,
+	0xE6D3, 0x7AB2, 0xE6D4, 0x7AB4, 0xE6D5, 0x7AB3, 0xE6D6, 0x7BB7,
+	0xE6D7, 0x7BCB, 0xE6D8, 0x7BBE, 0xE6D9, 0x7BAC, 0xE6DA, 0x7BCE,
+	0xE6DB, 0x7BAF, 0xE6DC, 0x7BB9, 0xE6DD, 0x7BCA, 0xE6DE, 0x7BB5,
+	0xE6DF, 0x7CC5, 0xE6E0, 0x7CC8, 0xE6E1, 0x7CCC, 0xE6E2, 0x7CCB,
+	0xE6E3, 0x7DF7, 0xE6E4, 0x7DDB, 0xE6E5, 0x7DEA, 0xE6E6, 0x7DE7,
+	0xE6E7, 0x7DD7, 0xE6E8, 0x7DE1, 0xE6E9, 0x7E03, 0xE6EA, 0x7DFA,
+	0xE6EB, 0x7DE6, 0xE6EC, 0x7DF6, 0xE6ED, 0x7DF1, 0xE6EE, 0x7DF0,
+	0xE6EF, 0x7DEE, 0xE6F0, 0x7DDF, 0xE6F1, 0x7F76, 0xE6F2, 0x7FAC,
+	0xE6F3, 0x7FB0, 0xE6F4, 0x7FAD, 0xE6F5, 0x7FED, 0xE6F6, 0x7FEB,
+	0xE6F7, 0x7FEA, 0xE6F8, 0x7FEC, 0xE6F9, 0x7FE6, 0xE6FA, 0x7FE8,
+	0xE6FB, 0x8064, 0xE6FC, 0x8067, 0xE6FD, 0x81A3, 0xE6FE, 0x819F,
+	0xE740, 0x819E, 0xE741, 0x8195, 0xE742, 0x81A2, 0xE743, 0x8199,
+	0xE744, 0x8197, 0xE745, 0x8216, 0xE746, 0x824F, 0xE747, 0x8253,
+	0xE748, 0x8252, 0xE749, 0x8250, 0xE74A, 0x824E, 0xE74B, 0x8251,
+	0xE74C, 0x8524, 0xE74D, 0x853B, 0xE74E, 0x850F, 0xE74F, 0x8500,
+	0xE750, 0x8529, 0xE751, 0x850E, 0xE752, 0x8509, 0xE753, 0x850D,
+	0xE754, 0x851F, 0xE755, 0x850A, 0xE756, 0x8527, 0xE757, 0x851C,
+	0xE758, 0x84FB, 0xE759, 0x852B, 0xE75A, 0x84FA, 0xE75B, 0x8508,
+	0xE75C, 0x850C, 0xE75D, 0x84F4, 0xE75E, 0x852A, 0xE75F, 0x84F2,
+	0xE760, 0x8515, 0xE761, 0x84F7, 0xE762, 0x84EB, 0xE763, 0x84F3,
+	0xE764, 0x84FC, 0xE765, 0x8512, 0xE766, 0x84EA, 0xE767, 0x84E9,
+	0xE768, 0x8516, 0xE769, 0x84FE, 0xE76A, 0x8528, 0xE76B, 0x851D,
+	0xE76C, 0x852E, 0xE76D, 0x8502, 0xE76E, 0x84FD, 0xE76F, 0x851E,
+	0xE770, 0x84F6, 0xE771, 0x8531, 0xE772, 0x8526, 0xE773, 0x84E7,
+	0xE774, 0x84E8, 0xE775, 0x84F0, 0xE776, 0x84EF, 0xE777, 0x84F9,
+	0xE778, 0x8518, 0xE779, 0x8520, 0xE77A, 0x8530, 0xE77B, 0x850B,
+	0xE77C, 0x8519, 0xE77D, 0x852F, 0xE77E, 0x8662, 0xE7A1, 0x8756,
+	0xE7A2, 0x8763, 0xE7A3, 0x8764, 0xE7A4, 0x8777, 0xE7A5, 0x87E1,
+	0xE7A6, 0x8773, 0xE7A7, 0x8758, 0xE7A8, 0x8754, 0xE7A9, 0x875B,
+	0xE7AA, 0x8752, 0xE7AB, 0x8761, 0xE7AC, 0x875A, 0xE7AD, 0x8751,
+	0xE7AE, 0x875E, 0xE7AF, 0x876D, 0xE7B0, 0x876A, 0xE7B1, 0x8750,
+	0xE7B2, 0x874E, 0xE7B3, 0x875F, 0xE7B4, 0x875D, 0xE7B5, 0x876F,
+	0xE7B6, 0x876C, 0xE7B7, 0x877A, 0xE7B8, 0x876E, 0xE7B9, 0x875C,
+	0xE7BA, 0x8765, 0xE7BB, 0x874F, 0xE7BC, 0x877B, 0xE7BD, 0x8775,
+	0xE7BE, 0x8762, 0xE7BF, 0x8767, 0xE7C0, 0x8769, 0xE7C1, 0x885A,
+	0xE7C2, 0x8905, 0xE7C3, 0x890C, 0xE7C4, 0x8914, 0xE7C5, 0x890B,
+	0xE7C6, 0x8917, 0xE7C7, 0x8918, 0xE7C8, 0x8919, 0xE7C9, 0x8906,
+	0xE7CA, 0x8916, 0xE7CB, 0x8911, 0xE7CC, 0x890E, 0xE7CD, 0x8909,
+	0xE7CE, 0x89A2, 0xE7CF, 0x89A4, 0xE7D0, 0x89A3, 0xE7D1, 0x89ED,
+	0xE7D2, 0x89F0, 0xE7D3, 0x89EC, 0xE7D4, 0x8ACF, 0xE7D5, 0x8AC6,
+	0xE7D6, 0x8AB8, 0xE7D7, 0x8AD3, 0xE7D8, 0x8AD1, 0xE7D9, 0x8AD4,
+	0xE7DA, 0x8AD5, 0xE7DB, 0x8ABB, 0xE7DC, 0x8AD7, 0xE7DD, 0x8ABE,
+	0xE7DE, 0x8AC0, 0xE7DF, 0x8AC5, 0xE7E0, 0x8AD8, 0xE7E1, 0x8AC3,
+	0xE7E2, 0x8ABA, 0xE7E3, 0x8ABD, 0xE7E4, 0x8AD9, 0xE7E5, 0x8C3E,
+	0xE7E6, 0x8C4D, 0xE7E7, 0x8C8F, 0xE7E8, 0x8CE5, 0xE7E9, 0x8CDF,
+	0xE7EA, 0x8CD9, 0xE7EB, 0x8CE8, 0xE7EC, 0x8CDA, 0xE7ED, 0x8CDD,
+	0xE7EE, 0x8CE7, 0xE7EF, 0x8DA0, 0xE7F0, 0x8D9C, 0xE7F1, 0x8DA1,
+	0xE7F2, 0x8D9B, 0xE7F3, 0x8E20, 0xE7F4, 0x8E23, 0xE7F5, 0x8E25,
+	0xE7F6, 0x8E24, 0xE7F7, 0x8E2E, 0xE7F8, 0x8E15, 0xE7F9, 0x8E1B,
+	0xE7FA, 0x8E16, 0xE7FB, 0x8E11, 0xE7FC, 0x8E19, 0xE7FD, 0x8E26,
+	0xE7FE, 0x8E27, 0xE840, 0x8E14, 0xE841, 0x8E12, 0xE842, 0x8E18,
+	0xE843, 0x8E13, 0xE844, 0x8E1C, 0xE845, 0x8E17, 0xE846, 0x8E1A,
+	0xE847, 0x8F2C, 0xE848, 0x8F24, 0xE849, 0x8F18, 0xE84A, 0x8F1A,
+	0xE84B, 0x8F20, 0xE84C, 0x8F23, 0xE84D, 0x8F16, 0xE84E, 0x8F17,
+	0xE84F, 0x9073, 0xE850, 0x9070, 0xE851, 0x906F, 0xE852, 0x9067,
+	0xE853, 0x906B, 0xE854, 0x912F, 0xE855, 0x912B, 0xE856, 0x9129,
+	0xE857, 0x912A, 0xE858, 0x9132, 0xE859, 0x9126, 0xE85A, 0x912E,
+	0xE85B, 0x9185, 0xE85C, 0x9186, 0xE85D, 0x918A, 0xE85E, 0x9181,
+	0xE85F, 0x9182, 0xE860, 0x9184, 0xE861, 0x9180, 0xE862, 0x92D0,
+	0xE863, 0x92C3, 0xE864, 0x92C4, 0xE865, 0x92C0, 0xE866, 0x92D9,
+	0xE867, 0x92B6, 0xE868, 0x92CF, 0xE869, 0x92F1, 0xE86A, 0x92DF,
+	0xE86B, 0x92D8, 0xE86C, 0x92E9, 0xE86D, 0x92D7, 0xE86E, 0x92DD,
+	0xE86F, 0x92CC, 0xE870, 0x92EF, 0xE871, 0x92C2, 0xE872, 0x92E8,
+	0xE873, 0x92CA, 0xE874, 0x92C8, 0xE875, 0x92CE, 0xE876, 0x92E6,
+	0xE877, 0x92CD, 0xE878, 0x92D5, 0xE879, 0x92C9, 0xE87A, 0x92E0,
+	0xE87B, 0x92DE, 0xE87C, 0x92E7, 0xE87D, 0x92D1, 0xE87E, 0x92D3,
+	0xE8A1, 0x92B5, 0xE8A2, 0x92E1, 0xE8A3, 0x92C6, 0xE8A4, 0x92B4,
+	0xE8A5, 0x957C, 0xE8A6, 0x95AC, 0xE8A7, 0x95AB, 0xE8A8, 0x95AE,
+	0xE8A9, 0x95B0, 0xE8AA, 0x96A4, 0xE8AB, 0x96A2, 0xE8AC, 0x96D3,
+	0xE8AD, 0x9705, 0xE8AE, 0x9708, 0xE8AF, 0x9702, 0xE8B0, 0x975A,
+	0xE8B1, 0x978A, 0xE8B2, 0x978E, 0xE8B3, 0x9788, 0xE8B4, 0x97D0,
+	0xE8B5, 0x97CF, 0xE8B6, 0x981E, 0xE8B7, 0x981D, 0xE8B8, 0x9826,
+	0xE8B9, 0x9829, 0xE8BA, 0x9828, 0xE8BB, 0x9820, 0xE8BC, 0x981B,
+	0xE8BD, 0x9827, 0xE8BE, 0x98B2, 0xE8BF, 0x9908, 0xE8C0, 0x98FA,
+	0xE8C1, 0x9911, 0xE8C2, 0x9914, 0xE8C3, 0x9916, 0xE8C4, 0x9917,
+	0xE8C5, 0x9915, 0xE8C6, 0x99DC, 0xE8C7, 0x99CD, 0xE8C8, 0x99CF,
+	0xE8C9, 0x99D3, 0xE8CA, 0x99D4, 0xE8CB, 0x99CE, 0xE8CC, 0x99C9,
+	0xE8CD, 0x99D6, 0xE8CE, 0x99D8, 0xE8CF, 0x99CB, 0xE8D0, 0x99D7,
+	0xE8D1, 0x99CC, 0xE8D2, 0x9AB3, 0xE8D3, 0x9AEC, 0xE8D4, 0x9AEB,
+	0xE8D5, 0x9AF3, 0xE8D6, 0x9AF2, 0xE8D7, 0x9AF1, 0xE8D8, 0x9B46,
+	0xE8D9, 0x9B43, 0xE8DA, 0x9B67, 0xE8DB, 0x9B74, 0xE8DC, 0x9B71,
+	0xE8DD, 0x9B66, 0xE8DE, 0x9B76, 0xE8DF, 0x9B75, 0xE8E0, 0x9B70,
+	0xE8E1, 0x9B68, 0xE8E2, 0x9B64, 0xE8E3, 0x9B6C, 0xE8E4, 0x9CFC,
+	0xE8E5, 0x9CFA, 0xE8E6, 0x9CFD, 0xE8E7, 0x9CFF, 0xE8E8, 0x9CF7,
+	0xE8E9, 0x9D07, 0xE8EA, 0x9D00, 0xE8EB, 0x9CF9, 0xE8EC, 0x9CFB,
+	0xE8ED, 0x9D08, 0xE8EE, 0x9D05, 0xE8EF, 0x9D04, 0xE8F0, 0x9E83,
+	0xE8F1, 0x9ED3, 0xE8F2, 0x9F0F, 0xE8F3, 0x9F10, 0xE8F4, 0x511C,
+	0xE8F5, 0x5113, 0xE8F6, 0x5117, 0xE8F7, 0x511A, 0xE8F8, 0x5111,
+	0xE8F9, 0x51DE, 0xE8FA, 0x5334, 0xE8FB, 0x53E1, 0xE8FC, 0x5670,
+	0xE8FD, 0x5660, 0xE8FE, 0x566E, 0xE940, 0x5673, 0xE941, 0x5666,
+	0xE942, 0x5663, 0xE943, 0x566D, 0xE944, 0x5672, 0xE945, 0x565E,
+	0xE946, 0x5677, 0xE947, 0x571C, 0xE948, 0x571B, 0xE949, 0x58C8,
+	0xE94A, 0x58BD, 0xE94B, 0x58C9, 0xE94C, 0x58BF, 0xE94D, 0x58BA,
+	0xE94E, 0x58C2, 0xE94F, 0x58BC, 0xE950, 0x58C6, 0xE951, 0x5B17,
+	0xE952, 0x5B19, 0xE953, 0x5B1B, 0xE954, 0x5B21, 0xE955, 0x5B14,
+	0xE956, 0x5B13, 0xE957, 0x5B10, 0xE958, 0x5B16, 0xE959, 0x5B28,
+	0xE95A, 0x5B1A, 0xE95B, 0x5B20, 0xE95C, 0x5B1E, 0xE95D, 0x5BEF,
+	0xE95E, 0x5DAC, 0xE95F, 0x5DB1, 0xE960, 0x5DA9, 0xE961, 0x5DA7,
+	0xE962, 0x5DB5, 0xE963, 0x5DB0, 0xE964, 0x5DAE, 0xE965, 0x5DAA,
+	0xE966, 0x5DA8, 0xE967, 0x5DB2, 0xE968, 0x5DAD, 0xE969, 0x5DAF,
+	0xE96A, 0x5DB4, 0xE96B, 0x5E67, 0xE96C, 0x5E68, 0xE96D, 0x5E66,
+	0xE96E, 0x5E6F, 0xE96F, 0x5EE9, 0xE970, 0x5EE7, 0xE971, 0x5EE6,
+	0xE972, 0x5EE8, 0xE973, 0x5EE5, 0xE974, 0x5F4B, 0xE975, 0x5FBC,
+	0xE976, 0x619D, 0xE977, 0x61A8, 0xE978, 0x6196, 0xE979, 0x61C5,
+	0xE97A, 0x61B4, 0xE97B, 0x61C6, 0xE97C, 0x61C1, 0xE97D, 0x61CC,
+	0xE97E, 0x61BA, 0xE9A1, 0x61BF, 0xE9A2, 0x61B8, 0xE9A3, 0x618C,
+	0xE9A4, 0x64D7, 0xE9A5, 0x64D6, 0xE9A6, 0x64D0, 0xE9A7, 0x64CF,
+	0xE9A8, 0x64C9, 0xE9A9, 0x64BD, 0xE9AA, 0x6489, 0xE9AB, 0x64C3,
+	0xE9AC, 0x64DB, 0xE9AD, 0x64F3, 0xE9AE, 0x64D9, 0xE9AF, 0x6533,
+	0xE9B0, 0x657F, 0xE9B1, 0x657C, 0xE9B2, 0x65A2, 0xE9B3, 0x66C8,
+	0xE9B4, 0x66BE, 0xE9B5, 0x66C0, 0xE9B6, 0x66CA, 0xE9B7, 0x66CB,
+	0xE9B8, 0x66CF, 0xE9B9, 0x66BD, 0xE9BA, 0x66BB, 0xE9BB, 0x66BA,
+	0xE9BC, 0x66CC, 0xE9BD, 0x6723, 0xE9BE, 0x6A34, 0xE9BF, 0x6A66,
+	0xE9C0, 0x6A49, 0xE9C1, 0x6A67, 0xE9C2, 0x6A32, 0xE9C3, 0x6A68,
+	0xE9C4, 0x6A3E, 0xE9C5, 0x6A5D, 0xE9C6, 0x6A6D, 0xE9C7, 0x6A76,
+	0xE9C8, 0x6A5B, 0xE9C9, 0x6A51, 0xE9CA, 0x6A28, 0xE9CB, 0x6A5A,
+	0xE9CC, 0x6A3B, 0xE9CD, 0x6A3F, 0xE9CE, 0x6A41, 0xE9CF, 0x6A6A,
+	0xE9D0, 0x6A64, 0xE9D1, 0x6A50, 0xE9D2, 0x6A4F, 0xE9D3, 0x6A54,
+	0xE9D4, 0x6A6F, 0xE9D5, 0x6A69, 0xE9D6, 0x6A60, 0xE9D7, 0x6A3C,
+	0xE9D8, 0x6A5E, 0xE9D9, 0x6A56, 0xE9DA, 0x6A55, 0xE9DB, 0x6A4D,
+	0xE9DC, 0x6A4E, 0xE9DD, 0x6A46, 0xE9DE, 0x6B55, 0xE9DF, 0x6B54,
+	0xE9E0, 0x6B56, 0xE9E1, 0x6BA7, 0xE9E2, 0x6BAA, 0xE9E3, 0x6BAB,
+	0xE9E4, 0x6BC8, 0xE9E5, 0x6BC7, 0xE9E6, 0x6C04, 0xE9E7, 0x6C03,
+	0xE9E8, 0x6C06, 0xE9E9, 0x6FAD, 0xE9EA, 0x6FCB, 0xE9EB, 0x6FA3,
+	0xE9EC, 0x6FC7, 0xE9ED, 0x6FBC, 0xE9EE, 0x6FCE, 0xE9EF, 0x6FC8,
+	0xE9F0, 0x6F5E, 0xE9F1, 0x6FC4, 0xE9F2, 0x6FBD, 0xE9F3, 0x6F9E,
+	0xE9F4, 0x6FCA, 0xE9F5, 0x6FA8, 0xE9F6, 0x7004, 0xE9F7, 0x6FA5,
+	0xE9F8, 0x6FAE, 0xE9F9, 0x6FBA, 0xE9FA, 0x6FAC, 0xE9FB, 0x6FAA,
+	0xE9FC, 0x6FCF, 0xE9FD, 0x6FBF, 0xE9FE, 0x6FB8, 0xEA40, 0x6FA2,
+	0xEA41, 0x6FC9, 0xEA42, 0x6FAB, 0xEA43, 0x6FCD, 0xEA44, 0x6FAF,
+	0xEA45, 0x6FB2, 0xEA46, 0x6FB0, 0xEA47, 0x71C5, 0xEA48, 0x71C2,
+	0xEA49, 0x71BF, 0xEA4A, 0x71B8, 0xEA4B, 0x71D6, 0xEA4C, 0x71C0,
+	0xEA4D, 0x71C1, 0xEA4E, 0x71CB, 0xEA4F, 0x71D4, 0xEA50, 0x71CA,
+	0xEA51, 0x71C7, 0xEA52, 0x71CF, 0xEA53, 0x71BD, 0xEA54, 0x71D8,
+	0xEA55, 0x71BC, 0xEA56, 0x71C6, 0xEA57, 0x71DA, 0xEA58, 0x71DB,
+	0xEA59, 0x729D, 0xEA5A, 0x729E, 0xEA5B, 0x7369, 0xEA5C, 0x7366,
+	0xEA5D, 0x7367, 0xEA5E, 0x736C, 0xEA5F, 0x7365, 0xEA60, 0x736B,
+	0xEA61, 0x736A, 0xEA62, 0x747F, 0xEA63, 0x749A, 0xEA64, 0x74A0,
+	0xEA65, 0x7494, 0xEA66, 0x7492, 0xEA67, 0x7495, 0xEA68, 0x74A1,
+	0xEA69, 0x750B, 0xEA6A, 0x7580, 0xEA6B, 0x762F, 0xEA6C, 0x762D,
+	0xEA6D, 0x7631, 0xEA6E, 0x763D, 0xEA6F, 0x7633, 0xEA70, 0x763C,
+	0xEA71, 0x7635, 0xEA72, 0x7632, 0xEA73, 0x7630, 0xEA74, 0x76BB,
+	0xEA75, 0x76E6, 0xEA76, 0x779A, 0xEA77, 0x779D, 0xEA78, 0x77A1,
+	0xEA79, 0x779C, 0xEA7A, 0x779B, 0xEA7B, 0x77A2, 0xEA7C, 0x77A3,
+	0xEA7D, 0x7795, 0xEA7E, 0x7799, 0xEAA1, 0x7797, 0xEAA2, 0x78DD,
+	0xEAA3, 0x78E9, 0xEAA4, 0x78E5, 0xEAA5, 0x78EA, 0xEAA6, 0x78DE,
+	0xEAA7, 0x78E3, 0xEAA8, 0x78DB, 0xEAA9, 0x78E1, 0xEAAA, 0x78E2,
+	0xEAAB, 0x78ED, 0xEAAC, 0x78DF, 0xEAAD, 0x78E0, 0xEAAE, 0x79A4,
+	0xEAAF, 0x7A44, 0xEAB0, 0x7A48, 0xEAB1, 0x7A47, 0xEAB2, 0x7AB6,
+	0xEAB3, 0x7AB8, 0xEAB4, 0x7AB5, 0xEAB5, 0x7AB1, 0xEAB6, 0x7AB7,
+	0xEAB7, 0x7BDE, 0xEAB8, 0x7BE3, 0xEAB9, 0x7BE7, 0xEABA, 0x7BDD,
+	0xEABB, 0x7BD5, 0xEABC, 0x7BE5, 0xEABD, 0x7BDA, 0xEABE, 0x7BE8,
+	0xEABF, 0x7BF9, 0xEAC0, 0x7BD4, 0xEAC1, 0x7BEA, 0xEAC2, 0x7BE2,
+	0xEAC3, 0x7BDC, 0xEAC4, 0x7BEB, 0xEAC5, 0x7BD8, 0xEAC6, 0x7BDF,
+	0xEAC7, 0x7CD2, 0xEAC8, 0x7CD4, 0xEAC9, 0x7CD7, 0xEACA, 0x7CD0,
+	0xEACB, 0x7CD1, 0xEACC, 0x7E12, 0xEACD, 0x7E21, 0xEACE, 0x7E17,
+	0xEACF, 0x7E0C, 0xEAD0, 0x7E1F, 0xEAD1, 0x7E20, 0xEAD2, 0x7E13,
+	0xEAD3, 0x7E0E, 0xEAD4, 0x7E1C, 0xEAD5, 0x7E15, 0xEAD6, 0x7E1A,
+	0xEAD7, 0x7E22, 0xEAD8, 0x7E0B, 0xEAD9, 0x7E0F, 0xEADA, 0x7E16,
+	0xEADB, 0x7E0D, 0xEADC, 0x7E14, 0xEADD, 0x7E25, 0xEADE, 0x7E24,
+	0xEADF, 0x7F43, 0xEAE0, 0x7F7B, 0xEAE1, 0x7F7C, 0xEAE2, 0x7F7A,
+	0xEAE3, 0x7FB1, 0xEAE4, 0x7FEF, 0xEAE5, 0x802A, 0xEAE6, 0x8029,
+	0xEAE7, 0x806C, 0xEAE8, 0x81B1, 0xEAE9, 0x81A6, 0xEAEA, 0x81AE,
+	0xEAEB, 0x81B9, 0xEAEC, 0x81B5, 0xEAED, 0x81AB, 0xEAEE, 0x81B0,
+	0xEAEF, 0x81AC, 0xEAF0, 0x81B4, 0xEAF1, 0x81B2, 0xEAF2, 0x81B7,
+	0xEAF3, 0x81A7, 0xEAF4, 0x81F2, 0xEAF5, 0x8255, 0xEAF6, 0x8256,
+	0xEAF7, 0x8257, 0xEAF8, 0x8556, 0xEAF9, 0x8545, 0xEAFA, 0x856B,
+	0xEAFB, 0x854D, 0xEAFC, 0x8553, 0xEAFD, 0x8561, 0xEAFE, 0x8558,
+	0xEB40, 0x8540, 0xEB41, 0x8546, 0xEB42, 0x8564, 0xEB43, 0x8541,
+	0xEB44, 0x8562, 0xEB45, 0x8544, 0xEB46, 0x8551, 0xEB47, 0x8547,
+	0xEB48, 0x8563, 0xEB49, 0x853E, 0xEB4A, 0x855B, 0xEB4B, 0x8571,
+	0xEB4C, 0x854E, 0xEB4D, 0x856E, 0xEB4E, 0x8575, 0xEB4F, 0x8555,
+	0xEB50, 0x8567, 0xEB51, 0x8560, 0xEB52, 0x858C, 0xEB53, 0x8566,
+	0xEB54, 0x855D, 0xEB55, 0x8554, 0xEB56, 0x8565, 0xEB57, 0x856C,
+	0xEB58, 0x8663, 0xEB59, 0x8665, 0xEB5A, 0x8664, 0xEB5B, 0x879B,
+	0xEB5C, 0x878F, 0xEB5D, 0x8797, 0xEB5E, 0x8793, 0xEB5F, 0x8792,
+	0xEB60, 0x8788, 0xEB61, 0x8781, 0xEB62, 0x8796, 0xEB63, 0x8798,
+	0xEB64, 0x8779, 0xEB65, 0x8787, 0xEB66, 0x87A3, 0xEB67, 0x8785,
+	0xEB68, 0x8790, 0xEB69, 0x8791, 0xEB6A, 0x879D, 0xEB6B, 0x8784,
+	0xEB6C, 0x8794, 0xEB6D, 0x879C, 0xEB6E, 0x879A, 0xEB6F, 0x8789,
+	0xEB70, 0x891E, 0xEB71, 0x8926, 0xEB72, 0x8930, 0xEB73, 0x892D,
+	0xEB74, 0x892E, 0xEB75, 0x8927, 0xEB76, 0x8931, 0xEB77, 0x8922,
+	0xEB78, 0x8929, 0xEB79, 0x8923, 0xEB7A, 0x892F, 0xEB7B, 0x892C,
+	0xEB7C, 0x891F, 0xEB7D, 0x89F1, 0xEB7E, 0x8AE0, 0xEBA1, 0x8AE2,
+	0xEBA2, 0x8AF2, 0xEBA3, 0x8AF4, 0xEBA4, 0x8AF5, 0xEBA5, 0x8ADD,
+	0xEBA6, 0x8B14, 0xEBA7, 0x8AE4, 0xEBA8, 0x8ADF, 0xEBA9, 0x8AF0,
+	0xEBAA, 0x8AC8, 0xEBAB, 0x8ADE, 0xEBAC, 0x8AE1, 0xEBAD, 0x8AE8,
+	0xEBAE, 0x8AFF, 0xEBAF, 0x8AEF, 0xEBB0, 0x8AFB, 0xEBB1, 0x8C91,
+	0xEBB2, 0x8C92, 0xEBB3, 0x8C90, 0xEBB4, 0x8CF5, 0xEBB5, 0x8CEE,
+	0xEBB6, 0x8CF1, 0xEBB7, 0x8CF0, 0xEBB8, 0x8CF3, 0xEBB9, 0x8D6C,
+	0xEBBA, 0x8D6E, 0xEBBB, 0x8DA5, 0xEBBC, 0x8DA7, 0xEBBD, 0x8E33,
+	0xEBBE, 0x8E3E, 0xEBBF, 0x8E38, 0xEBC0, 0x8E40, 0xEBC1, 0x8E45,
+	0xEBC2, 0x8E36, 0xEBC3, 0x8E3C, 0xEBC4, 0x8E3D, 0xEBC5, 0x8E41,
+	0xEBC6, 0x8E30, 0xEBC7, 0x8E3F, 0xEBC8, 0x8EBD, 0xEBC9, 0x8F36,
+	0xEBCA, 0x8F2E, 0xEBCB, 0x8F35, 0xEBCC, 0x8F32, 0xEBCD, 0x8F39,
+	0xEBCE, 0x8F37, 0xEBCF, 0x8F34, 0xEBD0, 0x9076, 0xEBD1, 0x9079,
+	0xEBD2, 0x907B, 0xEBD3, 0x9086, 0xEBD4, 0x90FA, 0xEBD5, 0x9133,
+	0xEBD6, 0x9135, 0xEBD7, 0x9136, 0xEBD8, 0x9193, 0xEBD9, 0x9190,
+	0xEBDA, 0x9191, 0xEBDB, 0x918D, 0xEBDC, 0x918F, 0xEBDD, 0x9327,
+	0xEBDE, 0x931E, 0xEBDF, 0x9308, 0xEBE0, 0x931F, 0xEBE1, 0x9306,
+	0xEBE2, 0x930F, 0xEBE3, 0x937A, 0xEBE4, 0x9338, 0xEBE5, 0x933C,
+	0xEBE6, 0x931B, 0xEBE7, 0x9323, 0xEBE8, 0x9312, 0xEBE9, 0x9301,
+	0xEBEA, 0x9346, 0xEBEB, 0x932D, 0xEBEC, 0x930E, 0xEBED, 0x930D,
+	0xEBEE, 0x92CB, 0xEBEF, 0x931D, 0xEBF0, 0x92FA, 0xEBF1, 0x9325,
+	0xEBF2, 0x9313, 0xEBF3, 0x92F9, 0xEBF4, 0x92F7, 0xEBF5, 0x9334,
+	0xEBF6, 0x9302, 0xEBF7, 0x9324, 0xEBF8, 0x92FF, 0xEBF9, 0x9329,
+	0xEBFA, 0x9339, 0xEBFB, 0x9335, 0xEBFC, 0x932A, 0xEBFD, 0x9314,
+	0xEBFE, 0x930C, 0xEC40, 0x930B, 0xEC41, 0x92FE, 0xEC42, 0x9309,
+	0xEC43, 0x9300, 0xEC44, 0x92FB, 0xEC45, 0x9316, 0xEC46, 0x95BC,
+	0xEC47, 0x95CD, 0xEC48, 0x95BE, 0xEC49, 0x95B9, 0xEC4A, 0x95BA,
+	0xEC4B, 0x95B6, 0xEC4C, 0x95BF, 0xEC4D, 0x95B5, 0xEC4E, 0x95BD,
+	0xEC4F, 0x96A9, 0xEC50, 0x96D4, 0xEC51, 0x970B, 0xEC52, 0x9712,
+	0xEC53, 0x9710, 0xEC54, 0x9799, 0xEC55, 0x9797, 0xEC56, 0x9794,
+	0xEC57, 0x97F0, 0xEC58, 0x97F8, 0xEC59, 0x9835, 0xEC5A, 0x982F,
+	0xEC5B, 0x9832, 0xEC5C, 0x9924, 0xEC5D, 0x991F, 0xEC5E, 0x9927,
+	0xEC5F, 0x9929, 0xEC60, 0x999E, 0xEC61, 0x99EE, 0xEC62, 0x99EC,
+	0xEC63, 0x99E5, 0xEC64, 0x99E4, 0xEC65, 0x99F0, 0xEC66, 0x99E3,
+	0xEC67, 0x99EA, 0xEC68, 0x99E9, 0xEC69, 0x99E7, 0xEC6A, 0x9AB9,
+	0xEC6B, 0x9ABF, 0xEC6C, 0x9AB4, 0xEC6D, 0x9ABB, 0xEC6E, 0x9AF6,
+	0xEC6F, 0x9AFA, 0xEC70, 0x9AF9, 0xEC71, 0x9AF7, 0xEC72, 0x9B33,
+	0xEC73, 0x9B80, 0xEC74, 0x9B85, 0xEC75, 0x9B87, 0xEC76, 0x9B7C,
+	0xEC77, 0x9B7E, 0xEC78, 0x9B7B, 0xEC79, 0x9B82, 0xEC7A, 0x9B93,
+	0xEC7B, 0x9B92, 0xEC7C, 0x9B90, 0xEC7D, 0x9B7A, 0xEC7E, 0x9B95,
+	0xECA1, 0x9B7D, 0xECA2, 0x9B88, 0xECA3, 0x9D25, 0xECA4, 0x9D17,
+	0xECA5, 0x9D20, 0xECA6, 0x9D1E, 0xECA7, 0x9D14, 0xECA8, 0x9D29,
+	0xECA9, 0x9D1D, 0xECAA, 0x9D18, 0xECAB, 0x9D22, 0xECAC, 0x9D10,
+	0xECAD, 0x9D19, 0xECAE, 0x9D1F, 0xECAF, 0x9E88, 0xECB0, 0x9E86,
+	0xECB1, 0x9E87, 0xECB2, 0x9EAE, 0xECB3, 0x9EAD, 0xECB4, 0x9ED5,
+	0xECB5, 0x9ED6, 0xECB6, 0x9EFA, 0xECB7, 0x9F12, 0xECB8, 0x9F3D,
+	0xECB9, 0x5126, 0xECBA, 0x5125, 0xECBB, 0x5122, 0xECBC, 0x5124,
+	0xECBD, 0x5120, 0xECBE, 0x5129, 0xECBF, 0x52F4, 0xECC0, 0x5693,
+	0xECC1, 0x568C, 0xECC2, 0x568D, 0xECC3, 0x5686, 0xECC4, 0x5684,
+	0xECC5, 0x5683, 0xECC6, 0x567E, 0xECC7, 0x5682, 0xECC8, 0x567F,
+	0xECC9, 0x5681, 0xECCA, 0x58D6, 0xECCB, 0x58D4, 0xECCC, 0x58CF,
+	0xECCD, 0x58D2, 0xECCE, 0x5B2D, 0xECCF, 0x5B25, 0xECD0, 0x5B32,
+	0xECD1, 0x5B23, 0xECD2, 0x5B2C, 0xECD3, 0x5B27, 0xECD4, 0x5B26,
+	0xECD5, 0x5B2F, 0xECD6, 0x5B2E, 0xECD7, 0x5B7B, 0xECD8, 0x5BF1,
+	0xECD9, 0x5BF2, 0xECDA, 0x5DB7, 0xECDB, 0x5E6C, 0xECDC, 0x5E6A,
+	0xECDD, 0x5FBE, 0xECDE, 0x5FBB, 0xECDF, 0x61C3, 0xECE0, 0x61B5,
+	0xECE1, 0x61BC, 0xECE2, 0x61E7, 0xECE3, 0x61E0, 0xECE4, 0x61E5,
+	0xECE5, 0x61E4, 0xECE6, 0x61E8, 0xECE7, 0x61DE, 0xECE8, 0x64EF,
+	0xECE9, 0x64E9, 0xECEA, 0x64E3, 0xECEB, 0x64EB, 0xECEC, 0x64E4,
+	0xECED, 0x64E8, 0xECEE, 0x6581, 0xECEF, 0x6580, 0xECF0, 0x65B6,
+	0xECF1, 0x65DA, 0xECF2, 0x66D2, 0xECF3, 0x6A8D, 0xECF4, 0x6A96,
+	0xECF5, 0x6A81, 0xECF6, 0x6AA5, 0xECF7, 0x6A89, 0xECF8, 0x6A9F,
+	0xECF9, 0x6A9B, 0xECFA, 0x6AA1, 0xECFB, 0x6A9E, 0xECFC, 0x6A87,
+	0xECFD, 0x6A93, 0xECFE, 0x6A8E, 0xED40, 0x6A95, 0xED41, 0x6A83,
+	0xED42, 0x6AA8, 0xED43, 0x6AA4, 0xED44, 0x6A91, 0xED45, 0x6A7F,
+	0xED46, 0x6AA6, 0xED47, 0x6A9A, 0xED48, 0x6A85, 0xED49, 0x6A8C,
+	0xED4A, 0x6A92, 0xED4B, 0x6B5B, 0xED4C, 0x6BAD, 0xED4D, 0x6C09,
+	0xED4E, 0x6FCC, 0xED4F, 0x6FA9, 0xED50, 0x6FF4, 0xED51, 0x6FD4,
+	0xED52, 0x6FE3, 0xED53, 0x6FDC, 0xED54, 0x6FED, 0xED55, 0x6FE7,
+	0xED56, 0x6FE6, 0xED57, 0x6FDE, 0xED58, 0x6FF2, 0xED59, 0x6FDD,
+	0xED5A, 0x6FE2, 0xED5B, 0x6FE8, 0xED5C, 0x71E1, 0xED5D, 0x71F1,
+	0xED5E, 0x71E8, 0xED5F, 0x71F2, 0xED60, 0x71E4, 0xED61, 0x71F0,
+	0xED62, 0x71E2, 0xED63, 0x7373, 0xED64, 0x736E, 0xED65, 0x736F,
+	0xED66, 0x7497, 0xED67, 0x74B2, 0xED68, 0x74AB, 0xED69, 0x7490,
+	0xED6A, 0x74AA, 0xED6B, 0x74AD, 0xED6C, 0x74B1, 0xED6D, 0x74A5,
+	0xED6E, 0x74AF, 0xED6F, 0x7510, 0xED70, 0x7511, 0xED71, 0x7512,
+	0xED72, 0x750F, 0xED73, 0x7584, 0xED74, 0x7643, 0xED75, 0x7648,
+	0xED76, 0x7649, 0xED77, 0x7647, 0xED78, 0x76A4, 0xED79, 0x76E9,
+	0xED7A, 0x77B5, 0xED7B, 0x77AB, 0xED7C, 0x77B2, 0xED7D, 0x77B7,
+	0xED7E, 0x77B6, 0xEDA1, 0x77B4, 0xEDA2, 0x77B1, 0xEDA3, 0x77A8,
+	0xEDA4, 0x77F0, 0xEDA5, 0x78F3, 0xEDA6, 0x78FD, 0xEDA7, 0x7902,
+	0xEDA8, 0x78FB, 0xEDA9, 0x78FC, 0xEDAA, 0x78F2, 0xEDAB, 0x7905,
+	0xEDAC, 0x78F9, 0xEDAD, 0x78FE, 0xEDAE, 0x7904, 0xEDAF, 0x79AB,
+	0xEDB0, 0x79A8, 0xEDB1, 0x7A5C, 0xEDB2, 0x7A5B, 0xEDB3, 0x7A56,
+	0xEDB4, 0x7A58, 0xEDB5, 0x7A54, 0xEDB6, 0x7A5A, 0xEDB7, 0x7ABE,
+	0xEDB8, 0x7AC0, 0xEDB9, 0x7AC1, 0xEDBA, 0x7C05, 0xEDBB, 0x7C0F,
+	0xEDBC, 0x7BF2, 0xEDBD, 0x7C00, 0xEDBE, 0x7BFF, 0xEDBF, 0x7BFB,
+	0xEDC0, 0x7C0E, 0xEDC1, 0x7BF4, 0xEDC2, 0x7C0B, 0xEDC3, 0x7BF3,
+	0xEDC4, 0x7C02, 0xEDC5, 0x7C09, 0xEDC6, 0x7C03, 0xEDC7, 0x7C01,
+	0xEDC8, 0x7BF8, 0xEDC9, 0x7BFD, 0xEDCA, 0x7C06, 0xEDCB, 0x7BF0,
+	0xEDCC, 0x7BF1, 0xEDCD, 0x7C10, 0xEDCE, 0x7C0A, 0xEDCF, 0x7CE8,
+	0xEDD0, 0x7E2D, 0xEDD1, 0x7E3C, 0xEDD2, 0x7E42, 0xEDD3, 0x7E33,
+	0xEDD4, 0x9848, 0xEDD5, 0x7E38, 0xEDD6, 0x7E2A, 0xEDD7, 0x7E49,
+	0xEDD8, 0x7E40, 0xEDD9, 0x7E47, 0xEDDA, 0x7E29, 0xEDDB, 0x7E4C,
+	0xEDDC, 0x7E30, 0xEDDD, 0x7E3B, 0xEDDE, 0x7E36, 0xEDDF, 0x7E44,
+	0xEDE0, 0x7E3A, 0xEDE1, 0x7F45, 0xEDE2, 0x7F7F, 0xEDE3, 0x7F7E,
+	0xEDE4, 0x7F7D, 0xEDE5, 0x7FF4, 0xEDE6, 0x7FF2, 0xEDE7, 0x802C,
+	0xEDE8, 0x81BB, 0xEDE9, 0x81C4, 0xEDEA, 0x81CC, 0xEDEB, 0x81CA,
+	0xEDEC, 0x81C5, 0xEDED, 0x81C7, 0xEDEE, 0x81BC, 0xEDEF, 0x81E9,
+	0xEDF0, 0x825B, 0xEDF1, 0x825A, 0xEDF2, 0x825C, 0xEDF3, 0x8583,
+	0xEDF4, 0x8580, 0xEDF5, 0x858F, 0xEDF6, 0x85A7, 0xEDF7, 0x8595,
+	0xEDF8, 0x85A0, 0xEDF9, 0x858B, 0xEDFA, 0x85A3, 0xEDFB, 0x857B,
+	0xEDFC, 0x85A4, 0xEDFD, 0x859A, 0xEDFE, 0x859E, 0xEE40, 0x8577,
+	0xEE41, 0x857C, 0xEE42, 0x8589, 0xEE43, 0x85A1, 0xEE44, 0x857A,
+	0xEE45, 0x8578, 0xEE46, 0x8557, 0xEE47, 0x858E, 0xEE48, 0x8596,
+	0xEE49, 0x8586, 0xEE4A, 0x858D, 0xEE4B, 0x8599, 0xEE4C, 0x859D,
+	0xEE4D, 0x8581, 0xEE4E, 0x85A2, 0xEE4F, 0x8582, 0xEE50, 0x8588,
+	0xEE51, 0x8585, 0xEE52, 0x8579, 0xEE53, 0x8576, 0xEE54, 0x8598,
+	0xEE55, 0x8590, 0xEE56, 0x859F, 0xEE57, 0x8668, 0xEE58, 0x87BE,
+	0xEE59, 0x87AA, 0xEE5A, 0x87AD, 0xEE5B, 0x87C5, 0xEE5C, 0x87B0,
+	0xEE5D, 0x87AC, 0xEE5E, 0x87B9, 0xEE5F, 0x87B5, 0xEE60, 0x87BC,
+	0xEE61, 0x87AE, 0xEE62, 0x87C9, 0xEE63, 0x87C3, 0xEE64, 0x87C2,
+	0xEE65, 0x87CC, 0xEE66, 0x87B7, 0xEE67, 0x87AF, 0xEE68, 0x87C4,
+	0xEE69, 0x87CA, 0xEE6A, 0x87B4, 0xEE6B, 0x87B6, 0xEE6C, 0x87BF,
+	0xEE6D, 0x87B8, 0xEE6E, 0x87BD, 0xEE6F, 0x87DE, 0xEE70, 0x87B2,
+	0xEE71, 0x8935, 0xEE72, 0x8933, 0xEE73, 0x893C, 0xEE74, 0x893E,
+	0xEE75, 0x8941, 0xEE76, 0x8952, 0xEE77, 0x8937, 0xEE78, 0x8942,
+	0xEE79, 0x89AD, 0xEE7A, 0x89AF, 0xEE7B, 0x89AE, 0xEE7C, 0x89F2,
+	0xEE7D, 0x89F3, 0xEE7E, 0x8B1E, 0xEEA1, 0x8B18, 0xEEA2, 0x8B16,
+	0xEEA3, 0x8B11, 0xEEA4, 0x8B05, 0xEEA5, 0x8B0B, 0xEEA6, 0x8B22,
+	0xEEA7, 0x8B0F, 0xEEA8, 0x8B12, 0xEEA9, 0x8B15, 0xEEAA, 0x8B07,
+	0xEEAB, 0x8B0D, 0xEEAC, 0x8B08, 0xEEAD, 0x8B06, 0xEEAE, 0x8B1C,
+	0xEEAF, 0x8B13, 0xEEB0, 0x8B1A, 0xEEB1, 0x8C4F, 0xEEB2, 0x8C70,
+	0xEEB3, 0x8C72, 0xEEB4, 0x8C71, 0xEEB5, 0x8C6F, 0xEEB6, 0x8C95,
+	0xEEB7, 0x8C94, 0xEEB8, 0x8CF9, 0xEEB9, 0x8D6F, 0xEEBA, 0x8E4E,
+	0xEEBB, 0x8E4D, 0xEEBC, 0x8E53, 0xEEBD, 0x8E50, 0xEEBE, 0x8E4C,
+	0xEEBF, 0x8E47, 0xEEC0, 0x8F43, 0xEEC1, 0x8F40, 0xEEC2, 0x9085,
+	0xEEC3, 0x907E, 0xEEC4, 0x9138, 0xEEC5, 0x919A, 0xEEC6, 0x91A2,
+	0xEEC7, 0x919B, 0xEEC8, 0x9199, 0xEEC9, 0x919F, 0xEECA, 0x91A1,
+	0xEECB, 0x919D, 0xEECC, 0x91A0, 0xEECD, 0x93A1, 0xEECE, 0x9383,
+	0xEECF, 0x93AF, 0xEED0, 0x9364, 0xEED1, 0x9356, 0xEED2, 0x9347,
+	0xEED3, 0x937C, 0xEED4, 0x9358, 0xEED5, 0x935C, 0xEED6, 0x9376,
+	0xEED7, 0x9349, 0xEED8, 0x9350, 0xEED9, 0x9351, 0xEEDA, 0x9360,
+	0xEEDB, 0x936D, 0xEEDC, 0x938F, 0xEEDD, 0x934C, 0xEEDE, 0x936A,
+	0xEEDF, 0x9379, 0xEEE0, 0x9357, 0xEEE1, 0x9355, 0xEEE2, 0x9352,
+	0xEEE3, 0x934F, 0xEEE4, 0x9371, 0xEEE5, 0x9377, 0xEEE6, 0x937B,
+	0xEEE7, 0x9361, 0xEEE8, 0x935E, 0xEEE9, 0x9363, 0xEEEA, 0x9367,
+	0xEEEB, 0x9380, 0xEEEC, 0x934E, 0xEEED, 0x9359, 0xEEEE, 0x95C7,
+	0xEEEF, 0x95C0, 0xEEF0, 0x95C9, 0xEEF1, 0x95C3, 0xEEF2, 0x95C5,
+	0xEEF3, 0x95B7, 0xEEF4, 0x96AE, 0xEEF5, 0x96B0, 0xEEF6, 0x96AC,
+	0xEEF7, 0x9720, 0xEEF8, 0x971F, 0xEEF9, 0x9718, 0xEEFA, 0x971D,
+	0xEEFB, 0x9719, 0xEEFC, 0x979A, 0xEEFD, 0x97A1, 0xEEFE, 0x979C,
+	0xEF40, 0x979E, 0xEF41, 0x979D, 0xEF42, 0x97D5, 0xEF43, 0x97D4,
+	0xEF44, 0x97F1, 0xEF45, 0x9841, 0xEF46, 0x9844, 0xEF47, 0x984A,
+	0xEF48, 0x9849, 0xEF49, 0x9845, 0xEF4A, 0x9843, 0xEF4B, 0x9925,
+	0xEF4C, 0x992B, 0xEF4D, 0x992C, 0xEF4E, 0x992A, 0xEF4F, 0x9933,
+	0xEF50, 0x9932, 0xEF51, 0x992F, 0xEF52, 0x992D, 0xEF53, 0x9931,
+	0xEF54, 0x9930, 0xEF55, 0x9998, 0xEF56, 0x99A3, 0xEF57, 0x99A1,
+	0xEF58, 0x9A02, 0xEF59, 0x99FA, 0xEF5A, 0x99F4, 0xEF5B, 0x99F7,
+	0xEF5C, 0x99F9, 0xEF5D, 0x99F8, 0xEF5E, 0x99F6, 0xEF5F, 0x99FB,
+	0xEF60, 0x99FD, 0xEF61, 0x99FE, 0xEF62, 0x99FC, 0xEF63, 0x9A03,
+	0xEF64, 0x9ABE, 0xEF65, 0x9AFE, 0xEF66, 0x9AFD, 0xEF67, 0x9B01,
+	0xEF68, 0x9AFC, 0xEF69, 0x9B48, 0xEF6A, 0x9B9A, 0xEF6B, 0x9BA8,
+	0xEF6C, 0x9B9E, 0xEF6D, 0x9B9B, 0xEF6E, 0x9BA6, 0xEF6F, 0x9BA1,
+	0xEF70, 0x9BA5, 0xEF71, 0x9BA4, 0xEF72, 0x9B86, 0xEF73, 0x9BA2,
+	0xEF74, 0x9BA0, 0xEF75, 0x9BAF, 0xEF76, 0x9D33, 0xEF77, 0x9D41,
+	0xEF78, 0x9D67, 0xEF79, 0x9D36, 0xEF7A, 0x9D2E, 0xEF7B, 0x9D2F,
+	0xEF7C, 0x9D31, 0xEF7D, 0x9D38, 0xEF7E, 0x9D30, 0xEFA1, 0x9D45,
+	0xEFA2, 0x9D42, 0xEFA3, 0x9D43, 0xEFA4, 0x9D3E, 0xEFA5, 0x9D37,
+	0xEFA6, 0x9D40, 0xEFA7, 0x9D3D, 0xEFA8, 0x7FF5, 0xEFA9, 0x9D2D,
+	0xEFAA, 0x9E8A, 0xEFAB, 0x9E89, 0xEFAC, 0x9E8D, 0xEFAD, 0x9EB0,
+	0xEFAE, 0x9EC8, 0xEFAF, 0x9EDA, 0xEFB0, 0x9EFB, 0xEFB1, 0x9EFF,
+	0xEFB2, 0x9F24, 0xEFB3, 0x9F23, 0xEFB4, 0x9F22, 0xEFB5, 0x9F54,
+	0xEFB6, 0x9FA0, 0xEFB7, 0x5131, 0xEFB8, 0x512D, 0xEFB9, 0x512E,
+	0xEFBA, 0x5698, 0xEFBB, 0x569C, 0xEFBC, 0x5697, 0xEFBD, 0x569A,
+	0xEFBE, 0x569D, 0xEFBF, 0x5699, 0xEFC0, 0x5970, 0xEFC1, 0x5B3C,
+	0xEFC2, 0x5C69, 0xEFC3, 0x5C6A, 0xEFC4, 0x5DC0, 0xEFC5, 0x5E6D,
+	0xEFC6, 0x5E6E, 0xEFC7, 0x61D8, 0xEFC8, 0x61DF, 0xEFC9, 0x61ED,
+	0xEFCA, 0x61EE, 0xEFCB, 0x61F1, 0xEFCC, 0x61EA, 0xEFCD, 0x61F0,
+	0xEFCE, 0x61EB, 0xEFCF, 0x61D6, 0xEFD0, 0x61E9, 0xEFD1, 0x64FF,
+	0xEFD2, 0x6504, 0xEFD3, 0x64FD, 0xEFD4, 0x64F8, 0xEFD5, 0x6501,
+	0xEFD6, 0x6503, 0xEFD7, 0x64FC, 0xEFD8, 0x6594, 0xEFD9, 0x65DB,
+	0xEFDA, 0x66DA, 0xEFDB, 0x66DB, 0xEFDC, 0x66D8, 0xEFDD, 0x6AC5,
+	0xEFDE, 0x6AB9, 0xEFDF, 0x6ABD, 0xEFE0, 0x6AE1, 0xEFE1, 0x6AC6,
+	0xEFE2, 0x6ABA, 0xEFE3, 0x6AB6, 0xEFE4, 0x6AB7, 0xEFE5, 0x6AC7,
+	0xEFE6, 0x6AB4, 0xEFE7, 0x6AAD, 0xEFE8, 0x6B5E, 0xEFE9, 0x6BC9,
+	0xEFEA, 0x6C0B, 0xEFEB, 0x7007, 0xEFEC, 0x700C, 0xEFED, 0x700D,
+	0xEFEE, 0x7001, 0xEFEF, 0x7005, 0xEFF0, 0x7014, 0xEFF1, 0x700E,
+	0xEFF2, 0x6FFF, 0xEFF3, 0x7000, 0xEFF4, 0x6FFB, 0xEFF5, 0x7026,
+	0xEFF6, 0x6FFC, 0xEFF7, 0x6FF7, 0xEFF8, 0x700A, 0xEFF9, 0x7201,
+	0xEFFA, 0x71FF, 0xEFFB, 0x71F9, 0xEFFC, 0x7203, 0xEFFD, 0x71FD,
+	0xEFFE, 0x7376, 0xF040, 0x74B8, 0xF041, 0x74C0, 0xF042, 0x74B5,
+	0xF043, 0x74C1, 0xF044, 0x74BE, 0xF045, 0x74B6, 0xF046, 0x74BB,
+	0xF047, 0x74C2, 0xF048, 0x7514, 0xF049, 0x7513, 0xF04A, 0x765C,
+	0xF04B, 0x7664, 0xF04C, 0x7659, 0xF04D, 0x7650, 0xF04E, 0x7653,
+	0xF04F, 0x7657, 0xF050, 0x765A, 0xF051, 0x76A6, 0xF052, 0x76BD,
+	0xF053, 0x76EC, 0xF054, 0x77C2, 0xF055, 0x77BA, 0xF056, 0x78FF,
+	0xF057, 0x790C, 0xF058, 0x7913, 0xF059, 0x7914, 0xF05A, 0x7909,
+	0xF05B, 0x7910, 0xF05C, 0x7912, 0xF05D, 0x7911, 0xF05E, 0x79AD,
+	0xF05F, 0x79AC, 0xF060, 0x7A5F, 0xF061, 0x7C1C, 0xF062, 0x7C29,
+	0xF063, 0x7C19, 0xF064, 0x7C20, 0xF065, 0x7C1F, 0xF066, 0x7C2D,
+	0xF067, 0x7C1D, 0xF068, 0x7C26, 0xF069, 0x7C28, 0xF06A, 0x7C22,
+	0xF06B, 0x7C25, 0xF06C, 0x7C30, 0xF06D, 0x7E5C, 0xF06E, 0x7E50,
+	0xF06F, 0x7E56, 0xF070, 0x7E63, 0xF071, 0x7E58, 0xF072, 0x7E62,
+	0xF073, 0x7E5F, 0xF074, 0x7E51, 0xF075, 0x7E60, 0xF076, 0x7E57,
+	0xF077, 0x7E53, 0xF078, 0x7FB5, 0xF079, 0x7FB3, 0xF07A, 0x7FF7,
+	0xF07B, 0x7FF8, 0xF07C, 0x8075, 0xF07D, 0x81D1, 0xF07E, 0x81D2,
+	0xF0A1, 0x81D0, 0xF0A2, 0x825F, 0xF0A3, 0x825E, 0xF0A4, 0x85B4,
+	0xF0A5, 0x85C6, 0xF0A6, 0x85C0, 0xF0A7, 0x85C3, 0xF0A8, 0x85C2,
+	0xF0A9, 0x85B3, 0xF0AA, 0x85B5, 0xF0AB, 0x85BD, 0xF0AC, 0x85C7,
+	0xF0AD, 0x85C4, 0xF0AE, 0x85BF, 0xF0AF, 0x85CB, 0xF0B0, 0x85CE,
+	0xF0B1, 0x85C8, 0xF0B2, 0x85C5, 0xF0B3, 0x85B1, 0xF0B4, 0x85B6,
+	0xF0B5, 0x85D2, 0xF0B6, 0x8624, 0xF0B7, 0x85B8, 0xF0B8, 0x85B7,
+	0xF0B9, 0x85BE, 0xF0BA, 0x8669, 0xF0BB, 0x87E7, 0xF0BC, 0x87E6,
+	0xF0BD, 0x87E2, 0xF0BE, 0x87DB, 0xF0BF, 0x87EB, 0xF0C0, 0x87EA,
+	0xF0C1, 0x87E5, 0xF0C2, 0x87DF, 0xF0C3, 0x87F3, 0xF0C4, 0x87E4,
+	0xF0C5, 0x87D4, 0xF0C6, 0x87DC, 0xF0C7, 0x87D3, 0xF0C8, 0x87ED,
+	0xF0C9, 0x87D8, 0xF0CA, 0x87E3, 0xF0CB, 0x87A4, 0xF0CC, 0x87D7,
+	0xF0CD, 0x87D9, 0xF0CE, 0x8801, 0xF0CF, 0x87F4, 0xF0D0, 0x87E8,
+	0xF0D1, 0x87DD, 0xF0D2, 0x8953, 0xF0D3, 0x894B, 0xF0D4, 0x894F,
+	0xF0D5, 0x894C, 0xF0D6, 0x8946, 0xF0D7, 0x8950, 0xF0D8, 0x8951,
+	0xF0D9, 0x8949, 0xF0DA, 0x8B2A, 0xF0DB, 0x8B27, 0xF0DC, 0x8B23,
+	0xF0DD, 0x8B33, 0xF0DE, 0x8B30, 0xF0DF, 0x8B35, 0xF0E0, 0x8B47,
+	0xF0E1, 0x8B2F, 0xF0E2, 0x8B3C, 0xF0E3, 0x8B3E, 0xF0E4, 0x8B31,
+	0xF0E5, 0x8B25, 0xF0E6, 0x8B37, 0xF0E7, 0x8B26, 0xF0E8, 0x8B36,
+	0xF0E9, 0x8B2E, 0xF0EA, 0x8B24, 0xF0EB, 0x8B3B, 0xF0EC, 0x8B3D,
+	0xF0ED, 0x8B3A, 0xF0EE, 0x8C42, 0xF0EF, 0x8C75, 0xF0F0, 0x8C99,
+	0xF0F1, 0x8C98, 0xF0F2, 0x8C97, 0xF0F3, 0x8CFE, 0xF0F4, 0x8D04,
+	0xF0F5, 0x8D02, 0xF0F6, 0x8D00, 0xF0F7, 0x8E5C, 0xF0F8, 0x8E62,
+	0xF0F9, 0x8E60, 0xF0FA, 0x8E57, 0xF0FB, 0x8E56, 0xF0FC, 0x8E5E,
+	0xF0FD, 0x8E65, 0xF0FE, 0x8E67, 0xF140, 0x8E5B, 0xF141, 0x8E5A,
+	0xF142, 0x8E61, 0xF143, 0x8E5D, 0xF144, 0x8E69, 0xF145, 0x8E54,
+	0xF146, 0x8F46, 0xF147, 0x8F47, 0xF148, 0x8F48, 0xF149, 0x8F4B,
+	0xF14A, 0x9128, 0xF14B, 0x913A, 0xF14C, 0x913B, 0xF14D, 0x913E,
+	0xF14E, 0x91A8, 0xF14F, 0x91A5, 0xF150, 0x91A7, 0xF151, 0x91AF,
+	0xF152, 0x91AA, 0xF153, 0x93B5, 0xF154, 0x938C, 0xF155, 0x9392,
+	0xF156, 0x93B7, 0xF157, 0x939B, 0xF158, 0x939D, 0xF159, 0x9389,
+	0xF15A, 0x93A7, 0xF15B, 0x938E, 0xF15C, 0x93AA, 0xF15D, 0x939E,
+	0xF15E, 0x93A6, 0xF15F, 0x9395, 0xF160, 0x9388, 0xF161, 0x9399,
+	0xF162, 0x939F, 0xF163, 0x938D, 0xF164, 0x93B1, 0xF165, 0x9391,
+	0xF166, 0x93B2, 0xF167, 0x93A4, 0xF168, 0x93A8, 0xF169, 0x93B4,
+	0xF16A, 0x93A3, 0xF16B, 0x93A5, 0xF16C, 0x95D2, 0xF16D, 0x95D3,
+	0xF16E, 0x95D1, 0xF16F, 0x96B3, 0xF170, 0x96D7, 0xF171, 0x96DA,
+	0xF172, 0x5DC2, 0xF173, 0x96DF, 0xF174, 0x96D8, 0xF175, 0x96DD,
+	0xF176, 0x9723, 0xF177, 0x9722, 0xF178, 0x9725, 0xF179, 0x97AC,
+	0xF17A, 0x97AE, 0xF17B, 0x97A8, 0xF17C, 0x97AB, 0xF17D, 0x97A4,
+	0xF17E, 0x97AA, 0xF1A1, 0x97A2, 0xF1A2, 0x97A5, 0xF1A3, 0x97D7,
+	0xF1A4, 0x97D9, 0xF1A5, 0x97D6, 0xF1A6, 0x97D8, 0xF1A7, 0x97FA,
+	0xF1A8, 0x9850, 0xF1A9, 0x9851, 0xF1AA, 0x9852, 0xF1AB, 0x98B8,
+	0xF1AC, 0x9941, 0xF1AD, 0x993C, 0xF1AE, 0x993A, 0xF1AF, 0x9A0F,
+	0xF1B0, 0x9A0B, 0xF1B1, 0x9A09, 0xF1B2, 0x9A0D, 0xF1B3, 0x9A04,
+	0xF1B4, 0x9A11, 0xF1B5, 0x9A0A, 0xF1B6, 0x9A05, 0xF1B7, 0x9A07,
+	0xF1B8, 0x9A06, 0xF1B9, 0x9AC0, 0xF1BA, 0x9ADC, 0xF1BB, 0x9B08,
+	0xF1BC, 0x9B04, 0xF1BD, 0x9B05, 0xF1BE, 0x9B29, 0xF1BF, 0x9B35,
+	0xF1C0, 0x9B4A, 0xF1C1, 0x9B4C, 0xF1C2, 0x9B4B, 0xF1C3, 0x9BC7,
+	0xF1C4, 0x9BC6, 0xF1C5, 0x9BC3, 0xF1C6, 0x9BBF, 0xF1C7, 0x9BC1,
+	0xF1C8, 0x9BB5, 0xF1C9, 0x9BB8, 0xF1CA, 0x9BD3, 0xF1CB, 0x9BB6,
+	0xF1CC, 0x9BC4, 0xF1CD, 0x9BB9, 0xF1CE, 0x9BBD, 0xF1CF, 0x9D5C,
+	0xF1D0, 0x9D53, 0xF1D1, 0x9D4F, 0xF1D2, 0x9D4A, 0xF1D3, 0x9D5B,
+	0xF1D4, 0x9D4B, 0xF1D5, 0x9D59, 0xF1D6, 0x9D56, 0xF1D7, 0x9D4C,
+	0xF1D8, 0x9D57, 0xF1D9, 0x9D52, 0xF1DA, 0x9D54, 0xF1DB, 0x9D5F,
+	0xF1DC, 0x9D58, 0xF1DD, 0x9D5A, 0xF1DE, 0x9E8E, 0xF1DF, 0x9E8C,
+	0xF1E0, 0x9EDF, 0xF1E1, 0x9F01, 0xF1E2, 0x9F00, 0xF1E3, 0x9F16,
+	0xF1E4, 0x9F25, 0xF1E5, 0x9F2B, 0xF1E6, 0x9F2A, 0xF1E7, 0x9F29,
+	0xF1E8, 0x9F28, 0xF1E9, 0x9F4C, 0xF1EA, 0x9F55, 0xF1EB, 0x5134,
+	0xF1EC, 0x5135, 0xF1ED, 0x5296, 0xF1EE, 0x52F7, 0xF1EF, 0x53B4,
+	0xF1F0, 0x56AB, 0xF1F1, 0x56AD, 0xF1F2, 0x56A6, 0xF1F3, 0x56A7,
+	0xF1F4, 0x56AA, 0xF1F5, 0x56AC, 0xF1F6, 0x58DA, 0xF1F7, 0x58DD,
+	0xF1F8, 0x58DB, 0xF1F9, 0x5912, 0xF1FA, 0x5B3D, 0xF1FB, 0x5B3E,
+	0xF1FC, 0x5B3F, 0xF1FD, 0x5DC3, 0xF1FE, 0x5E70, 0xF240, 0x5FBF,
+	0xF241, 0x61FB, 0xF242, 0x6507, 0xF243, 0x6510, 0xF244, 0x650D,
+	0xF245, 0x6509, 0xF246, 0x650C, 0xF247, 0x650E, 0xF248, 0x6584,
+	0xF249, 0x65DE, 0xF24A, 0x65DD, 0xF24B, 0x66DE, 0xF24C, 0x6AE7,
+	0xF24D, 0x6AE0, 0xF24E, 0x6ACC, 0xF24F, 0x6AD1, 0xF250, 0x6AD9,
+	0xF251, 0x6ACB, 0xF252, 0x6ADF, 0xF253, 0x6ADC, 0xF254, 0x6AD0,
+	0xF255, 0x6AEB, 0xF256, 0x6ACF, 0xF257, 0x6ACD, 0xF258, 0x6ADE,
+	0xF259, 0x6B60, 0xF25A, 0x6BB0, 0xF25B, 0x6C0C, 0xF25C, 0x7019,
+	0xF25D, 0x7027, 0xF25E, 0x7020, 0xF25F, 0x7016, 0xF260, 0x702B,
+	0xF261, 0x7021, 0xF262, 0x7022, 0xF263, 0x7023, 0xF264, 0x7029,
+	0xF265, 0x7017, 0xF266, 0x7024, 0xF267, 0x701C, 0xF268, 0x702A,
+	0xF269, 0x720C, 0xF26A, 0x720A, 0xF26B, 0x7207, 0xF26C, 0x7202,
+	0xF26D, 0x7205, 0xF26E, 0x72A5, 0xF26F, 0x72A6, 0xF270, 0x72A4,
+	0xF271, 0x72A3, 0xF272, 0x72A1, 0xF273, 0x74CB, 0xF274, 0x74C5,
+	0xF275, 0x74B7, 0xF276, 0x74C3, 0xF277, 0x7516, 0xF278, 0x7660,
+	0xF279, 0x77C9, 0xF27A, 0x77CA, 0xF27B, 0x77C4, 0xF27C, 0x77F1,
+	0xF27D, 0x791D, 0xF27E, 0x791B, 0xF2A1, 0x7921, 0xF2A2, 0x791C,
+	0xF2A3, 0x7917, 0xF2A4, 0x791E, 0xF2A5, 0x79B0, 0xF2A6, 0x7A67,
+	0xF2A7, 0x7A68, 0xF2A8, 0x7C33, 0xF2A9, 0x7C3C, 0xF2AA, 0x7C39,
+	0xF2AB, 0x7C2C, 0xF2AC, 0x7C3B, 0xF2AD, 0x7CEC, 0xF2AE, 0x7CEA,
+	0xF2AF, 0x7E76, 0xF2B0, 0x7E75, 0xF2B1, 0x7E78, 0xF2B2, 0x7E70,
+	0xF2B3, 0x7E77, 0xF2B4, 0x7E6F, 0xF2B5, 0x7E7A, 0xF2B6, 0x7E72,
+	0xF2B7, 0x7E74, 0xF2B8, 0x7E68, 0xF2B9, 0x7F4B, 0xF2BA, 0x7F4A,
+	0xF2BB, 0x7F83, 0xF2BC, 0x7F86, 0xF2BD, 0x7FB7, 0xF2BE, 0x7FFD,
+	0xF2BF, 0x7FFE, 0xF2C0, 0x8078, 0xF2C1, 0x81D7, 0xF2C2, 0x81D5,
+	0xF2C3, 0x8264, 0xF2C4, 0x8261, 0xF2C5, 0x8263, 0xF2C6, 0x85EB,
+	0xF2C7, 0x85F1, 0xF2C8, 0x85ED, 0xF2C9, 0x85D9, 0xF2CA, 0x85E1,
+	0xF2CB, 0x85E8, 0xF2CC, 0x85DA, 0xF2CD, 0x85D7, 0xF2CE, 0x85EC,
+	0xF2CF, 0x85F2, 0xF2D0, 0x85F8, 0xF2D1, 0x85D8, 0xF2D2, 0x85DF,
+	0xF2D3, 0x85E3, 0xF2D4, 0x85DC, 0xF2D5, 0x85D1, 0xF2D6, 0x85F0,
+	0xF2D7, 0x85E6, 0xF2D8, 0x85EF, 0xF2D9, 0x85DE, 0xF2DA, 0x85E2,
+	0xF2DB, 0x8800, 0xF2DC, 0x87FA, 0xF2DD, 0x8803, 0xF2DE, 0x87F6,
+	0xF2DF, 0x87F7, 0xF2E0, 0x8809, 0xF2E1, 0x880C, 0xF2E2, 0x880B,
+	0xF2E3, 0x8806, 0xF2E4, 0x87FC, 0xF2E5, 0x8808, 0xF2E6, 0x87FF,
+	0xF2E7, 0x880A, 0xF2E8, 0x8802, 0xF2E9, 0x8962, 0xF2EA, 0x895A,
+	0xF2EB, 0x895B, 0xF2EC, 0x8957, 0xF2ED, 0x8961, 0xF2EE, 0x895C,
+	0xF2EF, 0x8958, 0xF2F0, 0x895D, 0xF2F1, 0x8959, 0xF2F2, 0x8988,
+	0xF2F3, 0x89B7, 0xF2F4, 0x89B6, 0xF2F5, 0x89F6, 0xF2F6, 0x8B50,
+	0xF2F7, 0x8B48, 0xF2F8, 0x8B4A, 0xF2F9, 0x8B40, 0xF2FA, 0x8B53,
+	0xF2FB, 0x8B56, 0xF2FC, 0x8B54, 0xF2FD, 0x8B4B, 0xF2FE, 0x8B55,
+	0xF340, 0x8B51, 0xF341, 0x8B42, 0xF342, 0x8B52, 0xF343, 0x8B57,
+	0xF344, 0x8C43, 0xF345, 0x8C77, 0xF346, 0x8C76, 0xF347, 0x8C9A,
+	0xF348, 0x8D06, 0xF349, 0x8D07, 0xF34A, 0x8D09, 0xF34B, 0x8DAC,
+	0xF34C, 0x8DAA, 0xF34D, 0x8DAD, 0xF34E, 0x8DAB, 0xF34F, 0x8E6D,
+	0xF350, 0x8E78, 0xF351, 0x8E73, 0xF352, 0x8E6A, 0xF353, 0x8E6F,
+	0xF354, 0x8E7B, 0xF355, 0x8EC2, 0xF356, 0x8F52, 0xF357, 0x8F51,
+	0xF358, 0x8F4F, 0xF359, 0x8F50, 0xF35A, 0x8F53, 0xF35B, 0x8FB4,
+	0xF35C, 0x9140, 0xF35D, 0x913F, 0xF35E, 0x91B0, 0xF35F, 0x91AD,
+	0xF360, 0x93DE, 0xF361, 0x93C7, 0xF362, 0x93CF, 0xF363, 0x93C2,
+	0xF364, 0x93DA, 0xF365, 0x93D0, 0xF366, 0x93F9, 0xF367, 0x93EC,
+	0xF368, 0x93CC, 0xF369, 0x93D9, 0xF36A, 0x93A9, 0xF36B, 0x93E6,
+	0xF36C, 0x93CA, 0xF36D, 0x93D4, 0xF36E, 0x93EE, 0xF36F, 0x93E3,
+	0xF370, 0x93D5, 0xF371, 0x93C4, 0xF372, 0x93CE, 0xF373, 0x93C0,
+	0xF374, 0x93D2, 0xF375, 0x93E7, 0xF376, 0x957D, 0xF377, 0x95DA,
+	0xF378, 0x95DB, 0xF379, 0x96E1, 0xF37A, 0x9729, 0xF37B, 0x972B,
+	0xF37C, 0x972C, 0xF37D, 0x9728, 0xF37E, 0x9726, 0xF3A1, 0x97B3,
+	0xF3A2, 0x97B7, 0xF3A3, 0x97B6, 0xF3A4, 0x97DD, 0xF3A5, 0x97DE,
+	0xF3A6, 0x97DF, 0xF3A7, 0x985C, 0xF3A8, 0x9859, 0xF3A9, 0x985D,
+	0xF3AA, 0x9857, 0xF3AB, 0x98BF, 0xF3AC, 0x98BD, 0xF3AD, 0x98BB,
+	0xF3AE, 0x98BE, 0xF3AF, 0x9948, 0xF3B0, 0x9947, 0xF3B1, 0x9943,
+	0xF3B2, 0x99A6, 0xF3B3, 0x99A7, 0xF3B4, 0x9A1A, 0xF3B5, 0x9A15,
+	0xF3B6, 0x9A25, 0xF3B7, 0x9A1D, 0xF3B8, 0x9A24, 0xF3B9, 0x9A1B,
+	0xF3BA, 0x9A22, 0xF3BB, 0x9A20, 0xF3BC, 0x9A27, 0xF3BD, 0x9A23,
+	0xF3BE, 0x9A1E, 0xF3BF, 0x9A1C, 0xF3C0, 0x9A14, 0xF3C1, 0x9AC2,
+	0xF3C2, 0x9B0B, 0xF3C3, 0x9B0A, 0xF3C4, 0x9B0E, 0xF3C5, 0x9B0C,
+	0xF3C6, 0x9B37, 0xF3C7, 0x9BEA, 0xF3C8, 0x9BEB, 0xF3C9, 0x9BE0,
+	0xF3CA, 0x9BDE, 0xF3CB, 0x9BE4, 0xF3CC, 0x9BE6, 0xF3CD, 0x9BE2,
+	0xF3CE, 0x9BF0, 0xF3CF, 0x9BD4, 0xF3D0, 0x9BD7, 0xF3D1, 0x9BEC,
+	0xF3D2, 0x9BDC, 0xF3D3, 0x9BD9, 0xF3D4, 0x9BE5, 0xF3D5, 0x9BD5,
+	0xF3D6, 0x9BE1, 0xF3D7, 0x9BDA, 0xF3D8, 0x9D77, 0xF3D9, 0x9D81,
+	0xF3DA, 0x9D8A, 0xF3DB, 0x9D84, 0xF3DC, 0x9D88, 0xF3DD, 0x9D71,
+	0xF3DE, 0x9D80, 0xF3DF, 0x9D78, 0xF3E0, 0x9D86, 0xF3E1, 0x9D8B,
+	0xF3E2, 0x9D8C, 0xF3E3, 0x9D7D, 0xF3E4, 0x9D6B, 0xF3E5, 0x9D74,
+	0xF3E6, 0x9D75, 0xF3E7, 0x9D70, 0xF3E8, 0x9D69, 0xF3E9, 0x9D85,
+	0xF3EA, 0x9D73, 0xF3EB, 0x9D7B, 0xF3EC, 0x9D82, 0xF3ED, 0x9D6F,
+	0xF3EE, 0x9D79, 0xF3EF, 0x9D7F, 0xF3F0, 0x9D87, 0xF3F1, 0x9D68,
+	0xF3F2, 0x9E94, 0xF3F3, 0x9E91, 0xF3F4, 0x9EC0, 0xF3F5, 0x9EFC,
+	0xF3F6, 0x9F2D, 0xF3F7, 0x9F40, 0xF3F8, 0x9F41, 0xF3F9, 0x9F4D,
+	0xF3FA, 0x9F56, 0xF3FB, 0x9F57, 0xF3FC, 0x9F58, 0xF3FD, 0x5337,
+	0xF3FE, 0x56B2, 0xF440, 0x56B5, 0xF441, 0x56B3, 0xF442, 0x58E3,
+	0xF443, 0x5B45, 0xF444, 0x5DC6, 0xF445, 0x5DC7, 0xF446, 0x5EEE,
+	0xF447, 0x5EEF, 0xF448, 0x5FC0, 0xF449, 0x5FC1, 0xF44A, 0x61F9,
+	0xF44B, 0x6517, 0xF44C, 0x6516, 0xF44D, 0x6515, 0xF44E, 0x6513,
+	0xF44F, 0x65DF, 0xF450, 0x66E8, 0xF451, 0x66E3, 0xF452, 0x66E4,
+	0xF453, 0x6AF3, 0xF454, 0x6AF0, 0xF455, 0x6AEA, 0xF456, 0x6AE8,
+	0xF457, 0x6AF9, 0xF458, 0x6AF1, 0xF459, 0x6AEE, 0xF45A, 0x6AEF,
+	0xF45B, 0x703C, 0xF45C, 0x7035, 0xF45D, 0x702F, 0xF45E, 0x7037,
+	0xF45F, 0x7034, 0xF460, 0x7031, 0xF461, 0x7042, 0xF462, 0x7038,
+	0xF463, 0x703F, 0xF464, 0x703A, 0xF465, 0x7039, 0xF466, 0x7040,
+	0xF467, 0x703B, 0xF468, 0x7033, 0xF469, 0x7041, 0xF46A, 0x7213,
+	0xF46B, 0x7214, 0xF46C, 0x72A8, 0xF46D, 0x737D, 0xF46E, 0x737C,
+	0xF46F, 0x74BA, 0xF470, 0x76AB, 0xF471, 0x76AA, 0xF472, 0x76BE,
+	0xF473, 0x76ED, 0xF474, 0x77CC, 0xF475, 0x77CE, 0xF476, 0x77CF,
+	0xF477, 0x77CD, 0xF478, 0x77F2, 0xF479, 0x7925, 0xF47A, 0x7923,
+	0xF47B, 0x7927, 0xF47C, 0x7928, 0xF47D, 0x7924, 0xF47E, 0x7929,
+	0xF4A1, 0x79B2, 0xF4A2, 0x7A6E, 0xF4A3, 0x7A6C, 0xF4A4, 0x7A6D,
+	0xF4A5, 0x7AF7, 0xF4A6, 0x7C49, 0xF4A7, 0x7C48, 0xF4A8, 0x7C4A,
+	0xF4A9, 0x7C47, 0xF4AA, 0x7C45, 0xF4AB, 0x7CEE, 0xF4AC, 0x7E7B,
+	0xF4AD, 0x7E7E, 0xF4AE, 0x7E81, 0xF4AF, 0x7E80, 0xF4B0, 0x7FBA,
+	0xF4B1, 0x7FFF, 0xF4B2, 0x8079, 0xF4B3, 0x81DB, 0xF4B4, 0x81D9,
+	0xF4B5, 0x820B, 0xF4B6, 0x8268, 0xF4B7, 0x8269, 0xF4B8, 0x8622,
+	0xF4B9, 0x85FF, 0xF4BA, 0x8601, 0xF4BB, 0x85FE, 0xF4BC, 0x861B,
+	0xF4BD, 0x8600, 0xF4BE, 0x85F6, 0xF4BF, 0x8604, 0xF4C0, 0x8609,
+	0xF4C1, 0x8605, 0xF4C2, 0x860C, 0xF4C3, 0x85FD, 0xF4C4, 0x8819,
+	0xF4C5, 0x8810, 0xF4C6, 0x8811, 0xF4C7, 0x8817, 0xF4C8, 0x8813,
+	0xF4C9, 0x8816, 0xF4CA, 0x8963, 0xF4CB, 0x8966, 0xF4CC, 0x89B9,
+	0xF4CD, 0x89F7, 0xF4CE, 0x8B60, 0xF4CF, 0x8B6A, 0xF4D0, 0x8B5D,
+	0xF4D1, 0x8B68, 0xF4D2, 0x8B63, 0xF4D3, 0x8B65, 0xF4D4, 0x8B67,
+	0xF4D5, 0x8B6D, 0xF4D6, 0x8DAE, 0xF4D7, 0x8E86, 0xF4D8, 0x8E88,
+	0xF4D9, 0x8E84, 0xF4DA, 0x8F59, 0xF4DB, 0x8F56, 0xF4DC, 0x8F57,
+	0xF4DD, 0x8F55, 0xF4DE, 0x8F58, 0xF4DF, 0x8F5A, 0xF4E0, 0x908D,
+	0xF4E1, 0x9143, 0xF4E2, 0x9141, 0xF4E3, 0x91B7, 0xF4E4, 0x91B5,
+	0xF4E5, 0x91B2, 0xF4E6, 0x91B3, 0xF4E7, 0x940B, 0xF4E8, 0x9413,
+	0xF4E9, 0x93FB, 0xF4EA, 0x9420, 0xF4EB, 0x940F, 0xF4EC, 0x9414,
+	0xF4ED, 0x93FE, 0xF4EE, 0x9415, 0xF4EF, 0x9410, 0xF4F0, 0x9428,
+	0xF4F1, 0x9419, 0xF4F2, 0x940D, 0xF4F3, 0x93F5, 0xF4F4, 0x9400,
+	0xF4F5, 0x93F7, 0xF4F6, 0x9407, 0xF4F7, 0x940E, 0xF4F8, 0x9416,
+	0xF4F9, 0x9412, 0xF4FA, 0x93FA, 0xF4FB, 0x9409, 0xF4FC, 0x93F8,
+	0xF4FD, 0x940A, 0xF4FE, 0x93FF, 0xF540, 0x93FC, 0xF541, 0x940C,
+	0xF542, 0x93F6, 0xF543, 0x9411, 0xF544, 0x9406, 0xF545, 0x95DE,
+	0xF546, 0x95E0, 0xF547, 0x95DF, 0xF548, 0x972E, 0xF549, 0x972F,
+	0xF54A, 0x97B9, 0xF54B, 0x97BB, 0xF54C, 0x97FD, 0xF54D, 0x97FE,
+	0xF54E, 0x9860, 0xF54F, 0x9862, 0xF550, 0x9863, 0xF551, 0x985F,
+	0xF552, 0x98C1, 0xF553, 0x98C2, 0xF554, 0x9950, 0xF555, 0x994E,
+	0xF556, 0x9959, 0xF557, 0x994C, 0xF558, 0x994B, 0xF559, 0x9953,
+	0xF55A, 0x9A32, 0xF55B, 0x9A34, 0xF55C, 0x9A31, 0xF55D, 0x9A2C,
+	0xF55E, 0x9A2A, 0xF55F, 0x9A36, 0xF560, 0x9A29, 0xF561, 0x9A2E,
+	0xF562, 0x9A38, 0xF563, 0x9A2D, 0xF564, 0x9AC7, 0xF565, 0x9ACA,
+	0xF566, 0x9AC6, 0xF567, 0x9B10, 0xF568, 0x9B12, 0xF569, 0x9B11,
+	0xF56A, 0x9C0B, 0xF56B, 0x9C08, 0xF56C, 0x9BF7, 0xF56D, 0x9C05,
+	0xF56E, 0x9C12, 0xF56F, 0x9BF8, 0xF570, 0x9C40, 0xF571, 0x9C07,
+	0xF572, 0x9C0E, 0xF573, 0x9C06, 0xF574, 0x9C17, 0xF575, 0x9C14,
+	0xF576, 0x9C09, 0xF577, 0x9D9F, 0xF578, 0x9D99, 0xF579, 0x9DA4,
+	0xF57A, 0x9D9D, 0xF57B, 0x9D92, 0xF57C, 0x9D98, 0xF57D, 0x9D90,
+	0xF57E, 0x9D9B, 0xF5A1, 0x9DA0, 0xF5A2, 0x9D94, 0xF5A3, 0x9D9C,
+	0xF5A4, 0x9DAA, 0xF5A5, 0x9D97, 0xF5A6, 0x9DA1, 0xF5A7, 0x9D9A,
+	0xF5A8, 0x9DA2, 0xF5A9, 0x9DA8, 0xF5AA, 0x9D9E, 0xF5AB, 0x9DA3,
+	0xF5AC, 0x9DBF, 0xF5AD, 0x9DA9, 0xF5AE, 0x9D96, 0xF5AF, 0x9DA6,
+	0xF5B0, 0x9DA7, 0xF5B1, 0x9E99, 0xF5B2, 0x9E9B, 0xF5B3, 0x9E9A,
+	0xF5B4, 0x9EE5, 0xF5B5, 0x9EE4, 0xF5B6, 0x9EE7, 0xF5B7, 0x9EE6,
+	0xF5B8, 0x9F30, 0xF5B9, 0x9F2E, 0xF5BA, 0x9F5B, 0xF5BB, 0x9F60,
+	0xF5BC, 0x9F5E, 0xF5BD, 0x9F5D, 0xF5BE, 0x9F59, 0xF5BF, 0x9F91,
+	0xF5C0, 0x513A, 0xF5C1, 0x5139, 0xF5C2, 0x5298, 0xF5C3, 0x5297,
+	0xF5C4, 0x56C3, 0xF5C5, 0x56BD, 0xF5C6, 0x56BE, 0xF5C7, 0x5B48,
+	0xF5C8, 0x5B47, 0xF5C9, 0x5DCB, 0xF5CA, 0x5DCF, 0xF5CB, 0x5EF1,
+	0xF5CC, 0x61FD, 0xF5CD, 0x651B, 0xF5CE, 0x6B02, 0xF5CF, 0x6AFC,
+	0xF5D0, 0x6B03, 0xF5D1, 0x6AF8, 0xF5D2, 0x6B00, 0xF5D3, 0x7043,
+	0xF5D4, 0x7044, 0xF5D5, 0x704A, 0xF5D6, 0x7048, 0xF5D7, 0x7049,
+	0xF5D8, 0x7045, 0xF5D9, 0x7046, 0xF5DA, 0x721D, 0xF5DB, 0x721A,
+	0xF5DC, 0x7219, 0xF5DD, 0x737E, 0xF5DE, 0x7517, 0xF5DF, 0x766A,
+	0xF5E0, 0x77D0, 0xF5E1, 0x792D, 0xF5E2, 0x7931, 0xF5E3, 0x792F,
+	0xF5E4, 0x7C54, 0xF5E5, 0x7C53, 0xF5E6, 0x7CF2, 0xF5E7, 0x7E8A,
+	0xF5E8, 0x7E87, 0xF5E9, 0x7E88, 0xF5EA, 0x7E8B, 0xF5EB, 0x7E86,
+	0xF5EC, 0x7E8D, 0xF5ED, 0x7F4D, 0xF5EE, 0x7FBB, 0xF5EF, 0x8030,
+	0xF5F0, 0x81DD, 0xF5F1, 0x8618, 0xF5F2, 0x862A, 0xF5F3, 0x8626,
+	0xF5F4, 0x861F, 0xF5F5, 0x8623, 0xF5F6, 0x861C, 0xF5F7, 0x8619,
+	0xF5F8, 0x8627, 0xF5F9, 0x862E, 0xF5FA, 0x8621, 0xF5FB, 0x8620,
+	0xF5FC, 0x8629, 0xF5FD, 0x861E, 0xF5FE, 0x8625, 0xF640, 0x8829,
+	0xF641, 0x881D, 0xF642, 0x881B, 0xF643, 0x8820, 0xF644, 0x8824,
+	0xF645, 0x881C, 0xF646, 0x882B, 0xF647, 0x884A, 0xF648, 0x896D,
+	0xF649, 0x8969, 0xF64A, 0x896E, 0xF64B, 0x896B, 0xF64C, 0x89FA,
+	0xF64D, 0x8B79, 0xF64E, 0x8B78, 0xF64F, 0x8B45, 0xF650, 0x8B7A,
+	0xF651, 0x8B7B, 0xF652, 0x8D10, 0xF653, 0x8D14, 0xF654, 0x8DAF,
+	0xF655, 0x8E8E, 0xF656, 0x8E8C, 0xF657, 0x8F5E, 0xF658, 0x8F5B,
+	0xF659, 0x8F5D, 0xF65A, 0x9146, 0xF65B, 0x9144, 0xF65C, 0x9145,
+	0xF65D, 0x91B9, 0xF65E, 0x943F, 0xF65F, 0x943B, 0xF660, 0x9436,
+	0xF661, 0x9429, 0xF662, 0x943D, 0xF663, 0x943C, 0xF664, 0x9430,
+	0xF665, 0x9439, 0xF666, 0x942A, 0xF667, 0x9437, 0xF668, 0x942C,
+	0xF669, 0x9440, 0xF66A, 0x9431, 0xF66B, 0x95E5, 0xF66C, 0x95E4,
+	0xF66D, 0x95E3, 0xF66E, 0x9735, 0xF66F, 0x973A, 0xF670, 0x97BF,
+	0xF671, 0x97E1, 0xF672, 0x9864, 0xF673, 0x98C9, 0xF674, 0x98C6,
+	0xF675, 0x98C0, 0xF676, 0x9958, 0xF677, 0x9956, 0xF678, 0x9A39,
+	0xF679, 0x9A3D, 0xF67A, 0x9A46, 0xF67B, 0x9A44, 0xF67C, 0x9A42,
+	0xF67D, 0x9A41, 0xF67E, 0x9A3A, 0xF6A1, 0x9A3F, 0xF6A2, 0x9ACD,
+	0xF6A3, 0x9B15, 0xF6A4, 0x9B17, 0xF6A5, 0x9B18, 0xF6A6, 0x9B16,
+	0xF6A7, 0x9B3A, 0xF6A8, 0x9B52, 0xF6A9, 0x9C2B, 0xF6AA, 0x9C1D,
+	0xF6AB, 0x9C1C, 0xF6AC, 0x9C2C, 0xF6AD, 0x9C23, 0xF6AE, 0x9C28,
+	0xF6AF, 0x9C29, 0xF6B0, 0x9C24, 0xF6B1, 0x9C21, 0xF6B2, 0x9DB7,
+	0xF6B3, 0x9DB6, 0xF6B4, 0x9DBC, 0xF6B5, 0x9DC1, 0xF6B6, 0x9DC7,
+	0xF6B7, 0x9DCA, 0xF6B8, 0x9DCF, 0xF6B9, 0x9DBE, 0xF6BA, 0x9DC5,
+	0xF6BB, 0x9DC3, 0xF6BC, 0x9DBB, 0xF6BD, 0x9DB5, 0xF6BE, 0x9DCE,
+	0xF6BF, 0x9DB9, 0xF6C0, 0x9DBA, 0xF6C1, 0x9DAC, 0xF6C2, 0x9DC8,
+	0xF6C3, 0x9DB1, 0xF6C4, 0x9DAD, 0xF6C5, 0x9DCC, 0xF6C6, 0x9DB3,
+	0xF6C7, 0x9DCD, 0xF6C8, 0x9DB2, 0xF6C9, 0x9E7A, 0xF6CA, 0x9E9C,
+	0xF6CB, 0x9EEB, 0xF6CC, 0x9EEE, 0xF6CD, 0x9EED, 0xF6CE, 0x9F1B,
+	0xF6CF, 0x9F18, 0xF6D0, 0x9F1A, 0xF6D1, 0x9F31, 0xF6D2, 0x9F4E,
+	0xF6D3, 0x9F65, 0xF6D4, 0x9F64, 0xF6D5, 0x9F92, 0xF6D6, 0x4EB9,
+	0xF6D7, 0x56C6, 0xF6D8, 0x56C5, 0xF6D9, 0x56CB, 0xF6DA, 0x5971,
+	0xF6DB, 0x5B4B, 0xF6DC, 0x5B4C, 0xF6DD, 0x5DD5, 0xF6DE, 0x5DD1,
+	0xF6DF, 0x5EF2, 0xF6E0, 0x6521, 0xF6E1, 0x6520, 0xF6E2, 0x6526,
+	0xF6E3, 0x6522, 0xF6E4, 0x6B0B, 0xF6E5, 0x6B08, 0xF6E6, 0x6B09,
+	0xF6E7, 0x6C0D, 0xF6E8, 0x7055, 0xF6E9, 0x7056, 0xF6EA, 0x7057,
+	0xF6EB, 0x7052, 0xF6EC, 0x721E, 0xF6ED, 0x721F, 0xF6EE, 0x72A9,
+	0xF6EF, 0x737F, 0xF6F0, 0x74D8, 0xF6F1, 0x74D5, 0xF6F2, 0x74D9,
+	0xF6F3, 0x74D7, 0xF6F4, 0x766D, 0xF6F5, 0x76AD, 0xF6F6, 0x7935,
+	0xF6F7, 0x79B4, 0xF6F8, 0x7A70, 0xF6F9, 0x7A71, 0xF6FA, 0x7C57,
+	0xF6FB, 0x7C5C, 0xF6FC, 0x7C59, 0xF6FD, 0x7C5B, 0xF6FE, 0x7C5A,
+	0xF740, 0x7CF4, 0xF741, 0x7CF1, 0xF742, 0x7E91, 0xF743, 0x7F4F,
+	0xF744, 0x7F87, 0xF745, 0x81DE, 0xF746, 0x826B, 0xF747, 0x8634,
+	0xF748, 0x8635, 0xF749, 0x8633, 0xF74A, 0x862C, 0xF74B, 0x8632,
+	0xF74C, 0x8636, 0xF74D, 0x882C, 0xF74E, 0x8828, 0xF74F, 0x8826,
+	0xF750, 0x882A, 0xF751, 0x8825, 0xF752, 0x8971, 0xF753, 0x89BF,
+	0xF754, 0x89BE, 0xF755, 0x89FB, 0xF756, 0x8B7E, 0xF757, 0x8B84,
+	0xF758, 0x8B82, 0xF759, 0x8B86, 0xF75A, 0x8B85, 0xF75B, 0x8B7F,
+	0xF75C, 0x8D15, 0xF75D, 0x8E95, 0xF75E, 0x8E94, 0xF75F, 0x8E9A,
+	0xF760, 0x8E92, 0xF761, 0x8E90, 0xF762, 0x8E96, 0xF763, 0x8E97,
+	0xF764, 0x8F60, 0xF765, 0x8F62, 0xF766, 0x9147, 0xF767, 0x944C,
+	0xF768, 0x9450, 0xF769, 0x944A, 0xF76A, 0x944B, 0xF76B, 0x944F,
+	0xF76C, 0x9447, 0xF76D, 0x9445, 0xF76E, 0x9448, 0xF76F, 0x9449,
+	0xF770, 0x9446, 0xF771, 0x973F, 0xF772, 0x97E3, 0xF773, 0x986A,
+	0xF774, 0x9869, 0xF775, 0x98CB, 0xF776, 0x9954, 0xF777, 0x995B,
+	0xF778, 0x9A4E, 0xF779, 0x9A53, 0xF77A, 0x9A54, 0xF77B, 0x9A4C,
+	0xF77C, 0x9A4F, 0xF77D, 0x9A48, 0xF77E, 0x9A4A, 0xF7A1, 0x9A49,
+	0xF7A2, 0x9A52, 0xF7A3, 0x9A50, 0xF7A4, 0x9AD0, 0xF7A5, 0x9B19,
+	0xF7A6, 0x9B2B, 0xF7A7, 0x9B3B, 0xF7A8, 0x9B56, 0xF7A9, 0x9B55,
+	0xF7AA, 0x9C46, 0xF7AB, 0x9C48, 0xF7AC, 0x9C3F, 0xF7AD, 0x9C44,
+	0xF7AE, 0x9C39, 0xF7AF, 0x9C33, 0xF7B0, 0x9C41, 0xF7B1, 0x9C3C,
+	0xF7B2, 0x9C37, 0xF7B3, 0x9C34, 0xF7B4, 0x9C32, 0xF7B5, 0x9C3D,
+	0xF7B6, 0x9C36, 0xF7B7, 0x9DDB, 0xF7B8, 0x9DD2, 0xF7B9, 0x9DDE,
+	0xF7BA, 0x9DDA, 0xF7BB, 0x9DCB, 0xF7BC, 0x9DD0, 0xF7BD, 0x9DDC,
+	0xF7BE, 0x9DD1, 0xF7BF, 0x9DDF, 0xF7C0, 0x9DE9, 0xF7C1, 0x9DD9,
+	0xF7C2, 0x9DD8, 0xF7C3, 0x9DD6, 0xF7C4, 0x9DF5, 0xF7C5, 0x9DD5,
+	0xF7C6, 0x9DDD, 0xF7C7, 0x9EB6, 0xF7C8, 0x9EF0, 0xF7C9, 0x9F35,
+	0xF7CA, 0x9F33, 0xF7CB, 0x9F32, 0xF7CC, 0x9F42, 0xF7CD, 0x9F6B,
+	0xF7CE, 0x9F95, 0xF7CF, 0x9FA2, 0xF7D0, 0x513D, 0xF7D1, 0x5299,
+	0xF7D2, 0x58E8, 0xF7D3, 0x58E7, 0xF7D4, 0x5972, 0xF7D5, 0x5B4D,
+	0xF7D6, 0x5DD8, 0xF7D7, 0x882F, 0xF7D8, 0x5F4F, 0xF7D9, 0x6201,
+	0xF7DA, 0x6203, 0xF7DB, 0x6204, 0xF7DC, 0x6529, 0xF7DD, 0x6525,
+	0xF7DE, 0x6596, 0xF7DF, 0x66EB, 0xF7E0, 0x6B11, 0xF7E1, 0x6B12,
+	0xF7E2, 0x6B0F, 0xF7E3, 0x6BCA, 0xF7E4, 0x705B, 0xF7E5, 0x705A,
+	0xF7E6, 0x7222, 0xF7E7, 0x7382, 0xF7E8, 0x7381, 0xF7E9, 0x7383,
+	0xF7EA, 0x7670, 0xF7EB, 0x77D4, 0xF7EC, 0x7C67, 0xF7ED, 0x7C66,
+	0xF7EE, 0x7E95, 0xF7EF, 0x826C, 0xF7F0, 0x863A, 0xF7F1, 0x8640,
+	0xF7F2, 0x8639, 0xF7F3, 0x863C, 0xF7F4, 0x8631, 0xF7F5, 0x863B,
+	0xF7F6, 0x863E, 0xF7F7, 0x8830, 0xF7F8, 0x8832, 0xF7F9, 0x882E,
+	0xF7FA, 0x8833, 0xF7FB, 0x8976, 0xF7FC, 0x8974, 0xF7FD, 0x8973,
+	0xF7FE, 0x89FE, 0xF840, 0x8B8C, 0xF841, 0x8B8E, 0xF842, 0x8B8B,
+	0xF843, 0x8B88, 0xF844, 0x8C45, 0xF845, 0x8D19, 0xF846, 0x8E98,
+	0xF847, 0x8F64, 0xF848, 0x8F63, 0xF849, 0x91BC, 0xF84A, 0x9462,
+	0xF84B, 0x9455, 0xF84C, 0x945D, 0xF84D, 0x9457, 0xF84E, 0x945E,
+	0xF84F, 0x97C4, 0xF850, 0x97C5, 0xF851, 0x9800, 0xF852, 0x9A56,
+	0xF853, 0x9A59, 0xF854, 0x9B1E, 0xF855, 0x9B1F, 0xF856, 0x9B20,
+	0xF857, 0x9C52, 0xF858, 0x9C58, 0xF859, 0x9C50, 0xF85A, 0x9C4A,
+	0xF85B, 0x9C4D, 0xF85C, 0x9C4B, 0xF85D, 0x9C55, 0xF85E, 0x9C59,
+	0xF85F, 0x9C4C, 0xF860, 0x9C4E, 0xF861, 0x9DFB, 0xF862, 0x9DF7,
+	0xF863, 0x9DEF, 0xF864, 0x9DE3, 0xF865, 0x9DEB, 0xF866, 0x9DF8,
+	0xF867, 0x9DE4, 0xF868, 0x9DF6, 0xF869, 0x9DE1, 0xF86A, 0x9DEE,
+	0xF86B, 0x9DE6, 0xF86C, 0x9DF2, 0xF86D, 0x9DF0, 0xF86E, 0x9DE2,
+	0xF86F, 0x9DEC, 0xF870, 0x9DF4, 0xF871, 0x9DF3, 0xF872, 0x9DE8,
+	0xF873, 0x9DED, 0xF874, 0x9EC2, 0xF875, 0x9ED0, 0xF876, 0x9EF2,
+	0xF877, 0x9EF3, 0xF878, 0x9F06, 0xF879, 0x9F1C, 0xF87A, 0x9F38,
+	0xF87B, 0x9F37, 0xF87C, 0x9F36, 0xF87D, 0x9F43, 0xF87E, 0x9F4F,
+	0xF8A1, 0x9F71, 0xF8A2, 0x9F70, 0xF8A3, 0x9F6E, 0xF8A4, 0x9F6F,
+	0xF8A5, 0x56D3, 0xF8A6, 0x56CD, 0xF8A7, 0x5B4E, 0xF8A8, 0x5C6D,
+	0xF8A9, 0x652D, 0xF8AA, 0x66ED, 0xF8AB, 0x66EE, 0xF8AC, 0x6B13,
+	0xF8AD, 0x705F, 0xF8AE, 0x7061, 0xF8AF, 0x705D, 0xF8B0, 0x7060,
+	0xF8B1, 0x7223, 0xF8B2, 0x74DB, 0xF8B3, 0x74E5, 0xF8B4, 0x77D5,
+	0xF8B5, 0x7938, 0xF8B6, 0x79B7, 0xF8B7, 0x79B6, 0xF8B8, 0x7C6A,
+	0xF8B9, 0x7E97, 0xF8BA, 0x7F89, 0xF8BB, 0x826D, 0xF8BC, 0x8643,
+	0xF8BD, 0x8838, 0xF8BE, 0x8837, 0xF8BF, 0x8835, 0xF8C0, 0x884B,
+	0xF8C1, 0x8B94, 0xF8C2, 0x8B95, 0xF8C3, 0x8E9E, 0xF8C4, 0x8E9F,
+	0xF8C5, 0x8EA0, 0xF8C6, 0x8E9D, 0xF8C7, 0x91BE, 0xF8C8, 0x91BD,
+	0xF8C9, 0x91C2, 0xF8CA, 0x946B, 0xF8CB, 0x9468, 0xF8CC, 0x9469,
+	0xF8CD, 0x96E5, 0xF8CE, 0x9746, 0xF8CF, 0x9743, 0xF8D0, 0x9747,
+	0xF8D1, 0x97C7, 0xF8D2, 0x97E5, 0xF8D3, 0x9A5E, 0xF8D4, 0x9AD5,
+	0xF8D5, 0x9B59, 0xF8D6, 0x9C63, 0xF8D7, 0x9C67, 0xF8D8, 0x9C66,
+	0xF8D9, 0x9C62, 0xF8DA, 0x9C5E, 0xF8DB, 0x9C60, 0xF8DC, 0x9E02,
+	0xF8DD, 0x9DFE, 0xF8DE, 0x9E07, 0xF8DF, 0x9E03, 0xF8E0, 0x9E06,
+	0xF8E1, 0x9E05, 0xF8E2, 0x9E00, 0xF8E3, 0x9E01, 0xF8E4, 0x9E09,
+	0xF8E5, 0x9DFF, 0xF8E6, 0x9DFD, 0xF8E7, 0x9E04, 0xF8E8, 0x9EA0,
+	0xF8E9, 0x9F1E, 0xF8EA, 0x9F46, 0xF8EB, 0x9F74, 0xF8EC, 0x9F75,
+	0xF8ED, 0x9F76, 0xF8EE, 0x56D4, 0xF8EF, 0x652E, 0xF8F0, 0x65B8,
+	0xF8F1, 0x6B18, 0xF8F2, 0x6B19, 0xF8F3, 0x6B17, 0xF8F4, 0x6B1A,
+	0xF8F5, 0x7062, 0xF8F6, 0x7226, 0xF8F7, 0x72AA, 0xF8F8, 0x77D8,
+	0xF8F9, 0x77D9, 0xF8FA, 0x7939, 0xF8FB, 0x7C69, 0xF8FC, 0x7C6B,
+	0xF8FD, 0x7CF6, 0xF8FE, 0x7E9A, 0xF940, 0x7E98, 0xF941, 0x7E9B,
+	0xF942, 0x7E99, 0xF943, 0x81E0, 0xF944, 0x81E1, 0xF945, 0x8646,
+	0xF946, 0x8647, 0xF947, 0x8648, 0xF948, 0x8979, 0xF949, 0x897A,
+	0xF94A, 0x897C, 0xF94B, 0x897B, 0xF94C, 0x89FF, 0xF94D, 0x8B98,
+	0xF94E, 0x8B99, 0xF94F, 0x8EA5, 0xF950, 0x8EA4, 0xF951, 0x8EA3,
+	0xF952, 0x946E, 0xF953, 0x946D, 0xF954, 0x946F, 0xF955, 0x9471,
+	0xF956, 0x9473, 0xF957, 0x9749, 0xF958, 0x9872, 0xF959, 0x995F,
+	0xF95A, 0x9C68, 0xF95B, 0x9C6E, 0xF95C, 0x9C6D, 0xF95D, 0x9E0B,
+	0xF95E, 0x9E0D, 0xF95F, 0x9E10, 0xF960, 0x9E0F, 0xF961, 0x9E12,
+	0xF962, 0x9E11, 0xF963, 0x9EA1, 0xF964, 0x9EF5, 0xF965, 0x9F09,
+	0xF966, 0x9F47, 0xF967, 0x9F78, 0xF968, 0x9F7B, 0xF969, 0x9F7A,
+	0xF96A, 0x9F79, 0xF96B, 0x571E, 0xF96C, 0x7066, 0xF96D, 0x7C6F,
+	0xF96E, 0x883C, 0xF96F, 0x8DB2, 0xF970, 0x8EA6, 0xF971, 0x91C3,
+	0xF972, 0x9474, 0xF973, 0x9478, 0xF974, 0x9476, 0xF975, 0x9475,
+	0xF976, 0x9A60, 0xF977, 0x9C74, 0xF978, 0x9C73, 0xF979, 0x9C71,
+	0xF97A, 0x9C75, 0xF97B, 0x9E14, 0xF97C, 0x9E13, 0xF97D, 0x9EF6,
+	0xF97E, 0x9F0A, 0xF9A1, 0x9FA4, 0xF9A2, 0x7068, 0xF9A3, 0x7065,
+	0xF9A4, 0x7CF7, 0xF9A5, 0x866A, 0xF9A6, 0x883E, 0xF9A7, 0x883D,
+	0xF9A8, 0x883F, 0xF9A9, 0x8B9E, 0xF9AA, 0x8C9C, 0xF9AB, 0x8EA9,
+	0xF9AC, 0x8EC9, 0xF9AD, 0x974B, 0xF9AE, 0x9873, 0xF9AF, 0x9874,
+	0xF9B0, 0x98CC, 0xF9B1, 0x9961, 0xF9B2, 0x99AB, 0xF9B3, 0x9A64,
+	0xF9B4, 0x9A66, 0xF9B5, 0x9A67, 0xF9B6, 0x9B24, 0xF9B7, 0x9E15,
+	0xF9B8, 0x9E17, 0xF9B9, 0x9F48, 0xF9BA, 0x6207, 0xF9BB, 0x6B1E,
+	0xF9BC, 0x7227, 0xF9BD, 0x864C, 0xF9BE, 0x8EA8, 0xF9BF, 0x9482,
+	0xF9C0, 0x9480, 0xF9C1, 0x9481, 0xF9C2, 0x9A69, 0xF9C3, 0x9A68,
+	0xF9C4, 0x9B2E, 0xF9C5, 0x9E19, 0xF9C6, 0x7229, 0xF9C7, 0x864B,
+	0xF9C8, 0x8B9F, 0xF9C9, 0x9483, 0xF9CA, 0x9C79, 0xF9CB, 0x9EB7,
+	0xF9CC, 0x7675, 0xF9CD, 0x9A6B, 0xF9CE, 0x9C7A, 0xF9CF, 0x9E1D,
+	0xF9D0, 0x7069, 0xF9D1, 0x706A, 0xF9D2, 0x9EA4, 0xF9D3, 0x9F7E,
+	0xF9D4, 0x9F49, 0xF9D5, 0x9F98, 0xF9D6, 0x7881, 0xF9D7, 0x92B9,
+	0xF9D8, 0x88CF, 0xF9D9, 0x58BB, 0xF9DA, 0x6052, 0xF9DB, 0x7CA7,
+	0xF9DC, 0x5AFA, 0xF9DD, 0x2554, 0xF9DE, 0x2566, 0xF9DF, 0x2557,
+	0xF9E0, 0x2560, 0xF9E1, 0x256C, 0xF9E2, 0x2563, 0xF9E3, 0x255A,
+	0xF9E4, 0x2569, 0xF9E5, 0x255D, 0xF9E6, 0x2552, 0xF9E7, 0x2564,
+	0xF9E8, 0x2555, 0xF9E9, 0x255E, 0xF9EA, 0x256A, 0xF9EB, 0x2561,
+	0xF9EC, 0x2558, 0xF9ED, 0x2567, 0xF9EE, 0x255B, 0xF9EF, 0x2553,
+	0xF9F0, 0x2565, 0xF9F1, 0x2556, 0xF9F2, 0x255F, 0xF9F3, 0x256B,
+	0xF9F4, 0x2562, 0xF9F5, 0x2559, 0xF9F6, 0x2568, 0xF9F7, 0x255C,
+	0xF9F8, 0x2551, 0xF9F9, 0x2550, 0xF9FA, 0x256D, 0xF9FB, 0x256E,
+	0xF9FC, 0x2570, 0xF9FD, 0x256F, 0xF9FE, 0x2593, 0, 0
+};
+
+
+
+WCHAR ff_convert (	/* Converted code, 0 means conversion error */
+	WCHAR	chr,	/* Character code to be converted */
+	UINT	dir		/* 0: Unicode to OEMCP, 1: OEMCP to Unicode */
+)
+{
+	const WCHAR *p;
+	WCHAR c;
+	int i, n, li, hi;
+
+
+	if (chr < 0x80) {	/* ASCII */
+		c = chr;
+	} else {
+		if (dir) {		/* OEMCP to unicode */
+			p = oem2uni;
+			hi = sizeof oem2uni / 4 - 1;
+		} else {		/* Unicode to OEMCP */
+			p = uni2oem;
+			hi = sizeof uni2oem / 4 - 1;
+		}
+		li = 0;
+		for (n = 16; n; n--) {
+			i = li + (hi - li) / 2;
+			if (chr == p[i * 2]) break;
+			if (chr > p[i * 2])
+				li = i;
+			else
+				hi = i;
+		}
+		c = n ? p[i * 2 + 1] : 0;
+	}
+
+	return c;
+}
+
+
+
+
+WCHAR ff_wtoupper (	/* Upper converted character */
+	WCHAR chr		/* Input character */
+)
+{
+	static const WCHAR tbl_lower[] = { 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0xA1, 0x00A2, 0x00A3, 0x00A5, 0x00AC, 0x00AF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0x0FF, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x137, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x148, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x17E, 0x192, 0x3B1, 0x3B2, 0x3B3, 0x3B4, 0x3B5, 0x3B6, 0x3B7, 0x3B8, 0x3B9, 0x3BA, 0x3BB, 0x3BC, 0x3BD, 0x3BE, 0x3BF, 0x3C0, 0x3C1, 0x3C3, 0x3C4, 0x3C5, 0x3C6, 0x3C7, 0x3C8, 0x3C9, 0x3CA, 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437, 0x438, 0x439, 0x43A, 0x43B, 0x43C, 0x43D, 0x43E, 0x43F, 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, 0x448, 0x449, 0x44A, 0x44B, 0x44C, 0x44D, 0x44E, 0x44F, 0x451, 0x452, 0x453, 0x454, 0x455, 0x456, 0x457, 0x458, 0x459, 0x45A, 0x45B, 0x45C, 0x45E, 0x45F, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x217A, 0x217B, 0x217C, 0x217D, 0x217E, 0x217F, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0 };
+	static const WCHAR tbl_upper[] = { 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x21, 0xFFE0, 0xFFE1, 0xFFE5, 0xFFE2, 0xFFE3, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0x178, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x179, 0x17B, 0x17D, 0x191, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397, 0x398, 0x399, 0x39A, 0x39B, 0x39C, 0x39D, 0x39E, 0x39F, 0x3A0, 0x3A1, 0x3A3, 0x3A4, 0x3A5, 0x3A6, 0x3A7, 0x3A8, 0x3A9, 0x3AA, 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41A, 0x41B, 0x41C, 0x41D, 0x41E, 0x41F, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42A, 0x42B, 0x42C, 0x42D, 0x42E, 0x42F, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x407, 0x408, 0x409, 0x40A, 0x40B, 0x40C, 0x40E, 0x40F, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216A, 0x216B, 0x216C, 0x216D, 0x216E, 0x216F, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0 };
+	int i;
+
+
+	for (i = 0; tbl_lower[i] && chr != tbl_lower[i]; i++) ;
+
+	return tbl_lower[i] ? tbl_upper[i] : chr;
+}
Index: uKadecot/trunk/tools/makefsdata/option/ccsbcs.c
===================================================================
--- uKadecot/trunk/tools/makefsdata/option/ccsbcs.c	(revision 101)
+++ uKadecot/trunk/tools/makefsdata/option/ccsbcs.c	(revision 101)
@@ -0,0 +1,540 @@
+/*------------------------------------------------------------------------*/
+/* Unicode - Local code bidirectional converter  (C)ChaN, 2012            */
+/* (SBCS code pages)                                                      */
+/*------------------------------------------------------------------------*/
+/*  437   U.S. (OEM)
+/   720   Arabic (OEM)
+/   1256  Arabic (Windows)
+/   737   Greek (OEM)
+/   1253  Greek (Windows)
+/   1250  Central Europe (Windows)
+/   775   Baltic (OEM)
+/   1257  Baltic (Windows)
+/   850   Multilingual Latin 1 (OEM)
+/   852   Latin 2 (OEM)
+/   1252  Latin 1 (Windows)
+/   855   Cyrillic (OEM)
+/   1251  Cyrillic (Windows)
+/   866   Russian (OEM)
+/   857   Turkish (OEM)
+/   1254  Turkish (Windows)
+/   858   Multilingual Latin 1 + Euro (OEM)
+/   862   Hebrew (OEM)
+/   1255  Hebrew (Windows)
+/   874   Thai (OEM, Windows)
+/   1258  Vietnam (OEM, Windows)
+*/
+
+#include "../ff.h"
+
+
+#if _CODE_PAGE == 437
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP437(0x80-0xFF) to Unicode conversion table */
+	0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
+	0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
+	0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
+	0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192,
+	0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
+	0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
+	0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+	0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
+	0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
+	0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
+	0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
+	0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
+	0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4,
+	0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229,
+	0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248,
+	0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0
+};
+
+#elif _CODE_PAGE == 720
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP720(0x80-0xFF) to Unicode conversion table */
+	0x0000, 0x0000, 0x00E9, 0x00E2, 0x0000, 0x00E0, 0x0000, 0x00E7,
+	0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x0000, 0x0000, 0x0000,
+	0x0000, 0x0651, 0x0652, 0x00F4, 0x00A4, 0x0640, 0x00FB, 0x00F9,
+	0x0621, 0x0622, 0x0623, 0x0624, 0x00A3, 0x0625, 0x0626, 0x0627,
+	0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F,
+	0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x00AB, 0x00BB,
+	0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+	0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
+	0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
+	0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
+	0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
+	0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
+	0x0636, 0x0637, 0x0638, 0x0639, 0x063A, 0x0641, 0x00B5, 0x0642,
+	0x0643, 0x0644, 0x0645, 0x0646, 0x0647, 0x0648, 0x0649, 0x064A,
+	0x2261, 0x064B, 0x064C, 0x064D, 0x064E, 0x064F, 0x0650, 0x2248,
+	0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0
+};
+
+#elif _CODE_PAGE == 737
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP737(0x80-0xFF) to Unicode conversion table */
+	0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
+	0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0,
+	0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9,
+	0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8,
+	0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0,
+	0x03C1, 0x03C3, 0x03C2, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8,
+	0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+	0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
+	0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
+	0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
+	0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
+	0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
+	0x03C9, 0x03AC, 0x03AD, 0x03AE, 0x03CA, 0x03AF, 0x03CC, 0x03CD,
+	0x03CB, 0x03CE, 0x0386, 0x0388, 0x0389, 0x038A, 0x038C, 0x038E,
+	0x038F, 0x00B1, 0x2265, 0x2264, 0x03AA, 0x03AB, 0x00F7, 0x2248,
+	0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0
+};
+
+#elif _CODE_PAGE == 775
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP775(0x80-0xFF) to Unicode conversion table */
+	0x0106, 0x00FC, 0x00E9, 0x0101, 0x00E4, 0x0123, 0x00E5, 0x0107,
+	0x0142, 0x0113, 0x0156, 0x0157, 0x012B, 0x0179, 0x00C4, 0x00C5,
+	0x00C9, 0x00E6, 0x00C6, 0x014D, 0x00F6, 0x0122, 0x00A2, 0x015A,
+	0x015B, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x00A4,
+	0x0100, 0x012A, 0x00F3, 0x017B, 0x017C, 0x017A, 0x201D, 0x00A6,
+	0x00A9, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x0141, 0x00AB, 0x00BB,
+	0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0104, 0x010C, 0x0118,
+	0x0116, 0x2563, 0x2551, 0x2557, 0x255D, 0x012E, 0x0160, 0x2510,
+	0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0172, 0x016A,
+	0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x017D,
+	0x0105, 0x010D, 0x0119, 0x0117, 0x012F, 0x0161, 0x0173, 0x016B,
+	0x017E, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
+	0x00D3, 0x00DF, 0x014C, 0x0143, 0x00F5, 0x00D5, 0x00B5, 0x0144,
+	0x0136, 0x0137, 0x013B, 0x013C, 0x0146, 0x0112, 0x0145, 0x2019,
+	0x00AD, 0x00B1, 0x201C, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x201E,
+	0x00B0, 0x2219, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0
+};
+
+#elif _CODE_PAGE == 850
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP850(0x80-0xFF) to Unicode conversion table */
+	0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
+	0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
+	0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
+	0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192,
+	0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
+	0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
+	0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0,
+	0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510,
+	0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3,
+	0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4,
+	0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x0131, 0x00CD, 0x00CE,
+	0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580,
+	0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE,
+	0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4,
+	0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8,
+	0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0
+};
+
+#elif _CODE_PAGE == 852
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP852(0x80-0xFF) to Unicode conversion table */
+	0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x016F, 0x0107, 0x00E7,
+	0x0142, 0x00EB, 0x0150, 0x0151, 0x00EE, 0x0179, 0x00C4, 0x0106,
+	0x00C9, 0x0139, 0x013A, 0x00F4, 0x00F6, 0x013D, 0x013E, 0x015A,
+	0x015B, 0x00D6, 0x00DC, 0x0164, 0x0165, 0x0141, 0x00D7, 0x010D,
+	0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x0104, 0x0105, 0x017D, 0x017E,
+	0x0118, 0x0119, 0x00AC, 0x017A, 0x010C, 0x015F, 0x00AB, 0x00BB,
+	0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x011A,
+	0x015E, 0x2563, 0x2551, 0x2557, 0x255D, 0x017B, 0x017C, 0x2510,
+	0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0102, 0x0103,
+	0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4,
+	0x0111, 0x0110, 0x010E, 0x00CB, 0x010F, 0x0147, 0x00CD, 0x00CE,
+	0x011B, 0x2518, 0x250C, 0x2588, 0x2584, 0x0162, 0x016E, 0x2580,
+	0x00D3, 0x00DF, 0x00D4, 0x0143, 0x0144, 0x0148, 0x0160, 0x0161,
+	0x0154, 0x00DA, 0x0155, 0x0170, 0x00FD, 0x00DD, 0x0163, 0x00B4,
+	0x00AD, 0x02DD, 0x02DB, 0x02C7, 0x02D8, 0x00A7, 0x00F7, 0x00B8,
+	0x00B0, 0x00A8, 0x02D9, 0x0171, 0x0158, 0x0159, 0x25A0, 0x00A0
+};
+
+#elif _CODE_PAGE == 855
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP855(0x80-0xFF) to Unicode conversion table */
+	0x0452, 0x0402, 0x0453, 0x0403, 0x0451, 0x0401, 0x0454, 0x0404,
+	0x0455, 0x0405, 0x0456, 0x0406, 0x0457, 0x0407, 0x0458, 0x0408,
+	0x0459, 0x0409, 0x045A, 0x040A, 0x045B, 0x040B, 0x045C, 0x040C,
+	0x045E, 0x040E, 0x045F, 0x040F, 0x044E, 0x042E, 0x044A, 0x042A,
+	0x0430, 0x0410, 0x0431, 0x0411, 0x0446, 0x0426, 0x0434, 0x0414,
+	0x0435, 0x0415, 0x0444, 0x0424, 0x0433, 0x0413, 0x00AB, 0x00BB,
+	0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0445, 0x0425, 0x0438,
+	0x0418, 0x2563, 0x2551, 0x2557, 0x255D, 0x0439, 0x0419, 0x2510,
+	0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x043A, 0x041A,
+	0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4,
+	0x043B, 0x041B, 0x043C, 0x041C, 0x043D, 0x041D, 0x043E, 0x041E,
+	0x043F, 0x2518, 0x250C, 0x2588, 0x2584, 0x041F, 0x044F, 0x2580,
+	0x042F, 0x0440, 0x0420, 0x0441, 0x0421, 0x0442, 0x0422, 0x0443,
+	0x0423, 0x0436, 0x0416, 0x0432, 0x0412, 0x044C, 0x042C, 0x2116,
+	0x00AD, 0x044B, 0x042B, 0x0437, 0x0417, 0x0448, 0x0428, 0x044D,
+	0x042D, 0x0449, 0x0429, 0x0447, 0x0427, 0x00A7, 0x25A0, 0x00A0
+};
+
+#elif _CODE_PAGE == 857
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP857(0x80-0xFF) to Unicode conversion table */
+	0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
+	0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x0131, 0x00C4, 0x00C5,
+	0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
+	0x0130, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x015E, 0x015F,
+	0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x011E, 0x011F,
+	0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
+	0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0,
+	0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510,
+	0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3,
+	0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4,
+	0x00BA, 0x00AA, 0x00CA, 0x00CB, 0x00C8, 0x0000, 0x00CD, 0x00CE,
+	0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580,
+	0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x0000,
+	0x00D7, 0x00DA, 0x00DB, 0x00D9, 0x00EC, 0x00FF, 0x00AF, 0x00B4,
+	0x00AD, 0x00B1, 0x0000, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8,
+	0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0
+};
+
+#elif _CODE_PAGE == 858
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP858(0x80-0xFF) to Unicode conversion table */
+	0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
+	0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
+	0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
+	0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192,
+	0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
+	0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
+	0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0,
+	0x00A9, 0x2563, 0x2551, 0x2557, 0x2550, 0x00A2, 0x00A5, 0x2510,
+	0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3,
+	0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4,
+	0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x20AC, 0x00CD, 0x00CE,
+	0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00C6, 0x00CC, 0x2580,
+	0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE,
+	0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4,
+	0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8,
+	0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0
+};
+
+#elif _CODE_PAGE == 862
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP862(0x80-0xFF) to Unicode conversion table */
+	0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7,
+	0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
+	0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7,
+	0x05E8, 0x05E9, 0x05EA, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192,
+	0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
+	0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
+	0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+	0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
+	0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
+	0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
+	0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
+	0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
+	0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4,
+	0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229,
+	0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248,
+	0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0
+};
+
+#elif _CODE_PAGE == 866
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP866(0x80-0xFF) to Unicode conversion table */
+	0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+	0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
+	0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+	0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
+	0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+	0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
+	0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+	0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
+	0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
+	0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
+	0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
+	0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
+	0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+	0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
+	0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040E, 0x045E,
+	0x00B0, 0x2219, 0x00B7, 0x221A, 0x2116, 0x00A4, 0x25A0, 0x00A0
+};
+
+#elif _CODE_PAGE == 874
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP874(0x80-0xFF) to Unicode conversion table */
+	0x20AC, 0x0000, 0x0000, 0x0000, 0x0000, 0x2026, 0x0000, 0x0000,
+	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+	0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
+	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+	0x00A0, 0x0E01, 0x0E02, 0x0E03, 0x0E04, 0x0E05, 0x0E06, 0x0E07,
+	0x0E08, 0x0E09, 0x0E0A, 0x0E0B, 0x0E0C, 0x0E0D, 0x0E0E, 0x0E0F,
+	0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14, 0x0E15, 0x0E16, 0x0E17,
+	0x0E18, 0x0E19, 0x0E1A, 0x0E1B, 0x0E1C, 0x0E1D, 0x0E1E, 0x0E1F,
+	0x0E20, 0x0E21, 0x0E22, 0x0E23, 0x0E24, 0x0E25, 0x0E26, 0x0E27,
+	0x0E28, 0x0E29, 0x0E2A, 0x0E2B, 0x0E2C, 0x0E2D, 0x0E2E, 0x0E2F,
+	0x0E30, 0x0E31, 0x0E32, 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37,
+	0x0E38, 0x0E39, 0x0E3A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0E3F,
+	0x0E40, 0x0E41, 0x0E42, 0x0E43, 0x0E44, 0x0E45, 0x0E46, 0x0E47,
+	0x0E48, 0x0E49, 0x0E4A, 0x0E4B, 0x0E4C, 0x0E4D, 0x0E4E, 0x0E4F,
+	0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, 0x0E55, 0x0E56, 0x0E57,
+	0x0E58, 0x0E59, 0x0E5A, 0x0E5B, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+#elif _CODE_PAGE == 1250
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP1250(0x80-0xFF) to Unicode conversion table */
+	0x20AC, 0x0000, 0x201A, 0x0000, 0x201E, 0x2026, 0x2020, 0x2021,
+	0x0000, 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179,
+	0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
+	0x0000, 0x2122, 0x0161, 0x203A, 0x015B, 0x0165, 0x017E, 0x017A,
+	0x00A0, 0x02C7, 0x02D8, 0x0141, 0x00A4, 0x0104, 0x00A6, 0x00A7,
+	0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x017B,
+	0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
+	0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, 0x017C,
+	0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7,
+	0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E,
+	0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7,
+	0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF,
+	0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7,
+	0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F,
+	0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7,
+	0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9
+};
+
+#elif _CODE_PAGE == 1251
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP1251(0x80-0xFF) to Unicode conversion table */
+	0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021,
+	0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F,
+	0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
+	0x0000, 0x2111, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F,
+	0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7,
+	0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407,
+	0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7,
+	0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457,
+	0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+	0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
+	0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+	0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
+	0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+	0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
+	0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+	0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F
+};
+
+#elif _CODE_PAGE == 1252
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP1252(0x80-0xFF) to Unicode conversion table */
+	0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
+	0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x017D, 0x0000,
+	0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
+	0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x0000, 0x017E, 0x0178,
+	0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
+	0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
+	0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
+	0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
+	0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
+	0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
+	0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
+	0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF,
+	0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
+	0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
+	0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
+	0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF
+};
+
+#elif _CODE_PAGE == 1253
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP1253(0x80-0xFF) to Unicode conversion table */
+	0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
+	0x0000, 0x2030, 0x0000, 0x2039, 0x000C, 0x0000, 0x0000, 0x0000,
+	0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
+	0x0000, 0x2122, 0x0000, 0x203A, 0x0000, 0x0000, 0x0000, 0x0000,
+	0x00A0, 0x0385, 0x0386, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
+	0x00A8, 0x00A9, 0x0000, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x2015,
+	0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, 0x00B6, 0x00B7,
+	0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F,
+	0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+	0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
+	0x03A0, 0x03A1, 0x0000, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7,
+	0x03A8, 0x03A9, 0x03AA, 0x03AD, 0x03AC, 0x03AD, 0x03AE, 0x03AF,
+	0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7,
+	0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,
+	0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7,
+	0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0x0000
+};
+
+#elif _CODE_PAGE == 1254
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP1254(0x80-0xFF) to Unicode conversion table */
+	0x20AC, 0x0000, 0x210A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
+	0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x0000, 0x0000,
+	0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
+	0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x0000, 0x0000, 0x0178,
+	0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
+	0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
+	0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
+	0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
+	0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
+	0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
+	0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
+	0x00D8, 0x00D9, 0x00DA, 0x00BD, 0x00DC, 0x0130, 0x015E, 0x00DF,
+	0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
+	0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
+	0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
+	0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF
+};
+
+#elif _CODE_PAGE == 1255
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP1255(0x80-0xFF) to Unicode conversion table */
+	0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
+	0x02C6, 0x2030, 0x0000, 0x2039, 0x0000, 0x0000, 0x0000, 0x0000,
+	0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
+	0x02DC, 0x2122, 0x0000, 0x203A, 0x0000, 0x0000, 0x0000, 0x0000,
+	0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
+	0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
+	0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
+	0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
+	0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7,
+	0x05B8, 0x05B9, 0x0000, 0x05BB, 0x05BC, 0x05BD, 0x05BE, 0x05BF,
+	0x05C0, 0x05C1, 0x05C2, 0x05C3, 0x05F0, 0x05F1, 0x05F2, 0x05F3,
+	0x05F4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+	0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7,
+	0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
+	0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7,
+	0x05E8, 0x05E9, 0x05EA, 0x0000, 0x0000, 0x200E, 0x200F, 0x0000
+};
+
+#elif _CODE_PAGE == 1256
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP1256(0x80-0xFF) to Unicode conversion table */
+	0x20AC, 0x067E, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
+	0x02C6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688,
+	0x06AF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
+	0x06A9, 0x2122, 0x0691, 0x203A, 0x0153, 0x200C, 0x200D, 0x06BA,
+	0x00A0, 0x060C, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
+	0x00A8, 0x00A9, 0x06BE, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
+	0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
+	0x00B8, 0x00B9, 0x061B, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x061F,
+	0x06C1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+	0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F,
+	0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00D7,
+	0x0637, 0x0638, 0x0639, 0x063A, 0x0640, 0x0640, 0x0642, 0x0643,
+	0x00E0, 0x0644, 0x00E2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00E7,
+	0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0649, 0x064A, 0x00EE, 0x00EF,
+	0x064B, 0x064C, 0x064D, 0x064E, 0x00F4, 0x064F, 0x0650, 0x00F7,
+	0x0651, 0x00F9, 0x0652, 0x00FB, 0x00FC, 0x200E, 0x200F, 0x06D2
+};
+
+#elif _CODE_PAGE == 1257
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP1257(0x80-0xFF) to Unicode conversion table */
+	0x20AC, 0x0000, 0x201A, 0x0000, 0x201E, 0x2026, 0x2020, 0x2021,
+	0x0000, 0x2030, 0x0000, 0x2039, 0x0000, 0x00A8, 0x02C7, 0x00B8,
+	0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
+	0x0000, 0x2122, 0x0000, 0x203A, 0x0000, 0x00AF, 0x02DB, 0x0000,
+	0x00A0, 0x0000, 0x00A2, 0x00A3, 0x00A4, 0x0000, 0x00A6, 0x00A7,
+	0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
+	0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
+	0x00B8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6,
+	0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112,
+	0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B,
+	0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7,
+	0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF,
+	0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113,
+	0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C,
+	0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7,
+	0x0173, 0x014E, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x02D9
+};
+
+#elif _CODE_PAGE == 1258
+#define _TBLDEF 1
+static
+const WCHAR Tbl[] = {	/*  CP1258(0x80-0xFF) to Unicode conversion table */
+	0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
+	0x02C6, 0x2030, 0x0000, 0x2039, 0x0152, 0x0000, 0x0000, 0x0000,
+	0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
+	0x02DC, 0x2122, 0x0000, 0x203A, 0x0153, 0x0000, 0x0000, 0x0178,
+	0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
+	0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
+	0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
+	0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
+	0x00C0, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
+	0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x0300, 0x00CD, 0x00CE, 0x00CF,
+	0x0110, 0x00D1, 0x0309, 0x00D3, 0x00D4, 0x01A0, 0x00D6, 0x00D7,
+	0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x01AF, 0x0303, 0x00DF,
+	0x00E0, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
+	0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0301, 0x00ED, 0x00EE, 0x00EF,
+	0x0111, 0x00F1, 0x0323, 0x00F3, 0x00F4, 0x01A1, 0x00F6, 0x00F7,
+	0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x01B0, 0x20AB, 0x00FF
+};
+
+#endif
+
+
+#if !_TBLDEF || !_USE_LFN
+#error This file is not needed in current configuration. Remove from the project.
+#endif
+
+
+WCHAR ff_convert (	/* Converted character, Returns zero on error */
+	WCHAR	chr,	/* Character code to be converted */
+	UINT	dir		/* 0: Unicode to OEMCP, 1: OEMCP to Unicode */
+)
+{
+	WCHAR c;
+
+
+	if (chr < 0x80) {	/* ASCII */
+		c = chr;
+
+	} else {
+		if (dir) {		/* OEMCP to Unicode */
+			c = (chr >= 0x100) ? 0 : Tbl[chr - 0x80];
+
+		} else {		/* Unicode to OEMCP */
+			for (c = 0; c < 0x80; c++) {
+				if (chr == Tbl[c]) break;
+			}
+			c = (c + 0x80) & 0xFF;
+		}
+	}
+
+	return c;
+}
+
+
+WCHAR ff_wtoupper (	/* Upper converted character */
+	WCHAR chr		/* Input character */
+)
+{
+	static const WCHAR tbl_lower[] = { 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0xA1, 0x00A2, 0x00A3, 0x00A5, 0x00AC, 0x00AF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0x0FF, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x137, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x148, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x17E, 0x192, 0x3B1, 0x3B2, 0x3B3, 0x3B4, 0x3B5, 0x3B6, 0x3B7, 0x3B8, 0x3B9, 0x3BA, 0x3BB, 0x3BC, 0x3BD, 0x3BE, 0x3BF, 0x3C0, 0x3C1, 0x3C3, 0x3C4, 0x3C5, 0x3C6, 0x3C7, 0x3C8, 0x3C9, 0x3CA, 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437, 0x438, 0x439, 0x43A, 0x43B, 0x43C, 0x43D, 0x43E, 0x43F, 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, 0x448, 0x449, 0x44A, 0x44B, 0x44C, 0x44D, 0x44E, 0x44F, 0x451, 0x452, 0x453, 0x454, 0x455, 0x456, 0x457, 0x458, 0x459, 0x45A, 0x45B, 0x45C, 0x45E, 0x45F, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x217A, 0x217B, 0x217C, 0x217D, 0x217E, 0x217F, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0 };
+	static const WCHAR tbl_upper[] = { 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x21, 0xFFE0, 0xFFE1, 0xFFE5, 0xFFE2, 0xFFE3, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0x178, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x179, 0x17B, 0x17D, 0x191, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397, 0x398, 0x399, 0x39A, 0x39B, 0x39C, 0x39D, 0x39E, 0x39F, 0x3A0, 0x3A1, 0x3A3, 0x3A4, 0x3A5, 0x3A6, 0x3A7, 0x3A8, 0x3A9, 0x3AA, 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41A, 0x41B, 0x41C, 0x41D, 0x41E, 0x41F, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42A, 0x42B, 0x42C, 0x42D, 0x42E, 0x42F, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x407, 0x408, 0x409, 0x40A, 0x40B, 0x40C, 0x40E, 0x40F, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216A, 0x216B, 0x216C, 0x216D, 0x216E, 0x216F, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0 };
+	int i;
+
+
+	for (i = 0; tbl_lower[i] && chr != tbl_lower[i]; i++) ;
+
+	return tbl_lower[i] ? tbl_upper[i] : chr;
+}
Index: uKadecot/trunk/tools/makefsdata/option/syscall.c
===================================================================
--- uKadecot/trunk/tools/makefsdata/option/syscall.c	(revision 101)
+++ uKadecot/trunk/tools/makefsdata/option/syscall.c	(revision 101)
@@ -0,0 +1,151 @@
+/*------------------------------------------------------------------------*/
+/* Sample code of OS dependent controls for FatFs                         */
+/* (C)ChaN, 2014                                                          */
+/*------------------------------------------------------------------------*/
+
+
+#include "../ff.h"
+
+
+#if _FS_REENTRANT
+/*------------------------------------------------------------------------*/
+/* Create a Synchronization Object
+/*------------------------------------------------------------------------*/
+/* This function is called in f_mount() function to create a new
+/  synchronization object, such as semaphore and mutex. When a 0 is returned,
+/  the f_mount() function fails with FR_INT_ERR.
+*/
+
+int ff_cre_syncobj (	/* !=0:Function succeeded, ==0:Could not create due to any error */
+	BYTE vol,			/* Corresponding logical drive being processed */
+	_SYNC_t *sobj		/* Pointer to return the created sync object */
+)
+{
+	int ret;
+
+
+	*sobj = CreateMutex(NULL, FALSE, NULL);		/* Win32 */
+	ret = (int)(*sobj != INVALID_HANDLE_VALUE);
+
+//	*sobj = SyncObjects[vol];			/* uITRON (give a static created sync object) */
+//	ret = 1;							/* The initial value of the semaphore must be 1. */
+
+//	*sobj = OSMutexCreate(0, &err);		/* uC/OS-II */
+//	ret = (int)(err == OS_NO_ERR);
+
+//	*sobj = xSemaphoreCreateMutex();	/* FreeRTOS */
+//	ret = (int)(*sobj != NULL);
+
+	return ret;
+}
+
+
+
+/*------------------------------------------------------------------------*/
+/* Delete a Synchronization Object                                        */
+/*------------------------------------------------------------------------*/
+/* This function is called in f_mount() function to delete a synchronization
+/  object that created with ff_cre_syncobj function. When a 0 is returned,
+/  the f_mount() function fails with FR_INT_ERR.
+*/
+
+int ff_del_syncobj (	/* !=0:Function succeeded, ==0:Could not delete due to any error */
+	_SYNC_t sobj		/* Sync object tied to the logical drive to be deleted */
+)
+{
+	int ret;
+
+
+	ret = CloseHandle(sobj);	/* Win32 */
+
+//	ret = 1;					/* uITRON (nothing to do) */
+
+//	OSMutexDel(sobj, OS_DEL_ALWAYS, &err);	/* uC/OS-II */
+//	ret = (int)(err == OS_NO_ERR);
+
+//  vSemaphoreDelete(sobj);		/* FreeRTOS */
+//	ret = 1;
+
+	return ret;
+}
+
+
+
+/*------------------------------------------------------------------------*/
+/* Request Grant to Access the Volume                                     */
+/*------------------------------------------------------------------------*/
+/* This function is called on entering file functions to lock the volume.
+/  When a 0 is returned, the file function fails with FR_TIMEOUT.
+*/
+
+int ff_req_grant (	/* 1:Got a grant to access the volume, 0:Could not get a grant */
+	_SYNC_t sobj	/* Sync object to wait */
+)
+{
+	int ret;
+
+	ret = (int)(WaitForSingleObject(sobj, _FS_TIMEOUT) == WAIT_OBJECT_0);	/* Win32 */
+
+//	ret = (int)(wai_sem(sobj) == E_OK);			/* uITRON */
+
+//	OSMutexPend(sobj, _FS_TIMEOUT, &err));		/* uC/OS-II */
+//	ret = (int)(err == OS_NO_ERR);
+
+//	ret = (int)(xSemaphoreTake(sobj, _FS_TIMEOUT) == pdTRUE);	/* FreeRTOS */
+
+	return ret;
+}
+
+
+
+/*------------------------------------------------------------------------*/
+/* Release Grant to Access the Volume                                     */
+/*------------------------------------------------------------------------*/
+/* This function is called on leaving file functions to unlock the volume.
+*/
+
+void ff_rel_grant (
+	_SYNC_t sobj	/* Sync object to be signaled */
+)
+{
+	ReleaseMutex(sobj);		/* Win32 */
+
+//	sig_sem(sobj);			/* uITRON */
+
+//	OSMutexPost(sobj);		/* uC/OS-II */
+
+//	xSemaphoreGive(sobj);	/* FreeRTOS */
+}
+
+#endif
+
+
+
+
+#if _USE_LFN == 3	/* LFN with a working buffer on the heap */
+/*------------------------------------------------------------------------*/
+/* Allocate a memory block                                                */
+/*------------------------------------------------------------------------*/
+/* If a NULL is returned, the file function fails with FR_NOT_ENOUGH_CORE.
+*/
+
+void* ff_memalloc (	/* Returns pointer to the allocated memory block */
+	UINT msize		/* Number of bytes to allocate */
+)
+{
+	return malloc(msize);	/* Allocate a new memory block with POSIX API */
+}
+
+
+/*------------------------------------------------------------------------*/
+/* Free a memory block                                                    */
+/*------------------------------------------------------------------------*/
+
+void ff_memfree (
+	void* mblock	/* Pointer to the memory block to free */
+)
+{
+	free(mblock);	/* Discard the memory block with POSIX API */
+}
+
+#endif
Index: uKadecot/trunk/tools/makefsdata/option/unicode.c
===================================================================
--- uKadecot/trunk/tools/makefsdata/option/unicode.c	(revision 101)
+++ uKadecot/trunk/tools/makefsdata/option/unicode.c	(revision 101)
@@ -0,0 +1,17 @@
+#include "../ff.h"
+
+#if _USE_LFN != 0
+
+#if   _CODE_PAGE == 932	/* Japanese Shift_JIS */
+#include "cc932.c"
+#elif _CODE_PAGE == 936	/* Simplified Chinese GBK */
+#include "cc936.c"
+#elif _CODE_PAGE == 949	/* Korean */
+#include "cc949.c"
+#elif _CODE_PAGE == 950	/* Traditional Chinese Big5 */
+#include "cc950.c"
+#else					/* Small character-set */
+#include "ccsbcs.c"
+#endif
+
+#endif
Index: uKadecot/trunk/tools/zlib/README
===================================================================
--- uKadecot/trunk/tools/zlib/README	(revision 101)
+++ uKadecot/trunk/tools/zlib/README	(revision 101)
@@ -0,0 +1,115 @@
+ZLIB DATA COMPRESSION LIBRARY
+
+zlib 1.2.8 is a general purpose data compression library.  All the code is
+thread safe.  The data format used by the zlib library is described by RFCs
+(Request for Comments) 1950 to 1952 in the files
+http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and
+rfc1952 (gzip format).
+
+All functions of the compression library are documented in the file zlib.h
+(volunteer to write man pages welcome, contact zlib@gzip.org).  A usage example
+of the library is given in the file test/example.c which also tests that
+the library is working correctly.  Another example is given in the file
+test/minigzip.c.  The compression library itself is composed of all source
+files in the root directory.
+
+To compile all files and run the test program, follow the instructions given at
+the top of Makefile.in.  In short "./configure; make test", and if that goes
+well, "make install" should work for most flavors of Unix.  For Windows, use
+one of the special makefiles in win32/ or contrib/vstudio/ .  For VMS, use
+make_vms.com.
+
+Questions about zlib should be sent to <zlib@gzip.org>, or to Gilles Vollant
+<info@winimage.com> for the Windows DLL version.  The zlib home page is
+http://zlib.net/ .  Before reporting a problem, please check this site to
+verify that you have the latest version of zlib; otherwise get the latest
+version and check whether the problem still exists or not.
+
+PLEASE read the zlib FAQ http://zlib.net/zlib_faq.html before asking for help.
+
+Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan.  1997
+issue of Dr.  Dobb's Journal; a copy of the article is available at
+http://marknelson.us/1997/01/01/zlib-engine/ .
+
+The changes made in version 1.2.8 are documented in the file ChangeLog.
+
+Unsupported third party contributions are provided in directory contrib/ .
+
+zlib is available in Java using the java.util.zip package, documented at
+http://java.sun.com/developer/technicalArticles/Programming/compression/ .
+
+A Perl interface to zlib written by Paul Marquess <pmqs@cpan.org> is available
+at CPAN (Comprehensive Perl Archive Network) sites, including
+http://search.cpan.org/~pmqs/IO-Compress-Zlib/ .
+
+A Python interface to zlib written by A.M. Kuchling <amk@amk.ca> is
+available in Python 1.5 and later versions, see
+http://docs.python.org/library/zlib.html .
+
+zlib is built into tcl: http://wiki.tcl.tk/4610 .
+
+An experimental package to read and write files in .zip format, written on top
+of zlib by Gilles Vollant <info@winimage.com>, is available in the
+contrib/minizip directory of zlib.
+
+
+Notes for some targets:
+
+- For Windows DLL versions, please see win32/DLL_FAQ.txt
+
+- For 64-bit Irix, deflate.c must be compiled without any optimization. With
+  -O, one libpng test fails. The test works in 32 bit mode (with the -n32
+  compiler flag). The compiler bug has been reported to SGI.
+
+- zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1 it works
+  when compiled with cc.
+
+- On Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1 is
+  necessary to get gzprintf working correctly. This is done by configure.
+
+- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with
+  other compilers. Use "make test" to check your compiler.
+
+- gzdopen is not supported on RISCOS or BEOS.
+
+- For PalmOs, see http://palmzlib.sourceforge.net/
+
+
+Acknowledgments:
+
+  The deflate format used by zlib was defined by Phil Katz.  The deflate and
+  zlib specifications were written by L.  Peter Deutsch.  Thanks to all the
+  people who reported problems and suggested various improvements in zlib; they
+  are too numerous to cite here.
+
+Copyright notice:
+
+ (C) 1995-2013 Jean-loup Gailly and Mark Adler
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jean-loup Gailly        Mark Adler
+  jloup@gzip.org          madler@alumni.caltech.edu
+
+If you use the zlib library in a product, we would appreciate *not* receiving
+lengthy legal documents to sign.  The sources are provided for free but without
+warranty of any kind.  The library has been entirely written by Jean-loup
+Gailly and Mark Adler; it does not include third-party code.
+
+If you redistribute modified sources, we would appreciate that you include in
+the file ChangeLog history information documenting your changes.  Please read
+the FAQ for more information on the distribution of modified source versions.
Index: uKadecot/trunk/tools/zlib/ReadMe.txt
===================================================================
--- uKadecot/trunk/tools/zlib/ReadMe.txt	(revision 101)
+++ uKadecot/trunk/tools/zlib/ReadMe.txt	(revision 101)
@@ -0,0 +1,21 @@
+﻿========================================================================
+    スタティック ライブラリ: zlib プロジェクトの概要
+========================================================================
+
+この zlib ライブラリ プロジェクトは、AppWizard により作成されました。
+
+ソース ファイルはプロジェクトの一部として作成されませんでした。
+
+
+zlib.vcxproj
+    これは、アプリケーション ウィザードを使用して生成された VC++ プロジェクトのメイン プロジェクト ファイルです。ファイルを生成した Visual C++ のバージョンに関する情報と、アプリケーション ウィザードで選択されたプラットフォーム、構成、およびプロジェクト機能に関する情報が含まれています。
+
+zlib.vcxproj.filters
+    これは、アプリケーション ウィザードで生成された VC++ プロジェクトのフィルター ファイルです。このファイルには、プロジェクト内のファイルとフィルターとの間の関連付けに関する情報が含まれています。この関連付けは、特定のノードで同様の拡張子を持つファイルのグループ化を示すために IDE で使用されます (たとえば、".cpp" ファイルは "ソース ファイル" フィルターに関連付けられています)。
+
+/////////////////////////////////////////////////////////////////////////////
+その他のメモ :
+
+AppWizard では "TODO:" コメントを使用して、ユーザーが追加またはカスタマイズする必要のあるソース コードを示します。
+
+/////////////////////////////////////////////////////////////////////////////
Index: uKadecot/trunk/tools/zlib/adler32.c
===================================================================
--- uKadecot/trunk/tools/zlib/adler32.c	(revision 101)
+++ uKadecot/trunk/tools/zlib/adler32.c	(revision 101)
@@ -0,0 +1,179 @@
+/* adler32.c -- compute the Adler-32 checksum of a data stream
+ * Copyright (C) 1995-2011 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/* @(#) $Id$ */
+
+#include "zutil.h"
+
+#define local static
+
+local uLong adler32_combine_ OF((uLong adler1, uLong adler2, z_off64_t len2));
+
+#define BASE 65521      /* largest prime smaller than 65536 */
+#define NMAX 5552
+/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
+
+#define DO1(buf,i)  {adler += (buf)[i]; sum2 += adler;}
+#define DO2(buf,i)  DO1(buf,i); DO1(buf,i+1);
+#define DO4(buf,i)  DO2(buf,i); DO2(buf,i+2);
+#define DO8(buf,i)  DO4(buf,i); DO4(buf,i+4);
+#define DO16(buf)   DO8(buf,0); DO8(buf,8);
+
+/* use NO_DIVIDE if your processor does not do division in hardware --
+   try it both ways to see which is faster */
+#ifdef NO_DIVIDE
+/* note that this assumes BASE is 65521, where 65536 % 65521 == 15
+   (thank you to John Reiser for pointing this out) */
+#  define CHOP(a) \
+    do { \
+        unsigned long tmp = a >> 16; \
+        a &= 0xffffUL; \
+        a += (tmp << 4) - tmp; \
+    } while (0)
+#  define MOD28(a) \
+    do { \
+        CHOP(a); \
+        if (a >= BASE) a -= BASE; \
+    } while (0)
+#  define MOD(a) \
+    do { \
+        CHOP(a); \
+        MOD28(a); \
+    } while (0)
+#  define MOD63(a) \
+    do { /* this assumes a is not negative */ \
+        z_off64_t tmp = a >> 32; \
+        a &= 0xffffffffL; \
+        a += (tmp << 8) - (tmp << 5) + tmp; \
+        tmp = a >> 16; \
+        a &= 0xffffL; \
+        a += (tmp << 4) - tmp; \
+        tmp = a >> 16; \
+        a &= 0xffffL; \
+        a += (tmp << 4) - tmp; \
+        if (a >= BASE) a -= BASE; \
+    } while (0)
+#else
+#  define MOD(a) a %= BASE
+#  define MOD28(a) a %= BASE
+#  define MOD63(a) a %= BASE
+#endif
+
+/* ========================================================================= */
+uLong ZEXPORT adler32(adler, buf, len)
+    uLong adler;
+    const Bytef *buf;
+    uInt len;
+{
+    unsigned long sum2;
+    unsigned n;
+
+    /* split Adler-32 into component sums */
+    sum2 = (adler >> 16) & 0xffff;
+    adler &= 0xffff;
+
+    /* in case user likes doing a byte at a time, keep it fast */
+    if (len == 1) {
+        adler += buf[0];
+        if (adler >= BASE)
+            adler -= BASE;
+        sum2 += adler;
+        if (sum2 >= BASE)
+            sum2 -= BASE;
+        return adler | (sum2 << 16);
+    }
+
+    /* initial Adler-32 value (deferred check for len == 1 speed) */
+    if (buf == Z_NULL)
+        return 1L;
+
+    /* in case short lengths are provided, keep it somewhat fast */
+    if (len < 16) {
+        while (len--) {
+            adler += *buf++;
+            sum2 += adler;
+        }
+        if (adler >= BASE)
+            adler -= BASE;
+        MOD28(sum2);            /* only added so many BASE's */
+        return adler | (sum2 << 16);
+    }
+
+    /* do length NMAX blocks -- requires just one modulo operation */
+    while (len >= NMAX) {
+        len -= NMAX;
+        n = NMAX / 16;          /* NMAX is divisible by 16 */
+        do {
+            DO16(buf);          /* 16 sums unrolled */
+            buf += 16;
+        } while (--n);
+        MOD(adler);
+        MOD(sum2);
+    }
+
+    /* do remaining bytes (less than NMAX, still just one modulo) */
+    if (len) {                  /* avoid modulos if none remaining */
+        while (len >= 16) {
+            len -= 16;
+            DO16(buf);
+            buf += 16;
+        }
+        while (len--) {
+            adler += *buf++;
+            sum2 += adler;
+        }
+        MOD(adler);
+        MOD(sum2);
+    }
+
+    /* return recombined sums */
+    return adler | (sum2 << 16);
+}
+
+/* ========================================================================= */
+local uLong adler32_combine_(adler1, adler2, len2)
+    uLong adler1;
+    uLong adler2;
+    z_off64_t len2;
+{
+    unsigned long sum1;
+    unsigned long sum2;
+    unsigned rem;
+
+    /* for negative len, return invalid adler32 as a clue for debugging */
+    if (len2 < 0)
+        return 0xffffffffUL;
+
+    /* the derivation of this formula is left as an exercise for the reader */
+    MOD63(len2);                /* assumes len2 >= 0 */
+    rem = (unsigned)len2;
+    sum1 = adler1 & 0xffff;
+    sum2 = rem * sum1;
+    MOD(sum2);
+    sum1 += (adler2 & 0xffff) + BASE - 1;
+    sum2 += ((adler1 >> 16) & 0xffff) + ((adler2 >> 16) & 0xffff) + BASE - rem;
+    if (sum1 >= BASE) sum1 -= BASE;
+    if (sum1 >= BASE) sum1 -= BASE;
+    if (sum2 >= (BASE << 1)) sum2 -= (BASE << 1);
+    if (sum2 >= BASE) sum2 -= BASE;
+    return sum1 | (sum2 << 16);
+}
+
+/* ========================================================================= */
+uLong ZEXPORT adler32_combine(adler1, adler2, len2)
+    uLong adler1;
+    uLong adler2;
+    z_off_t len2;
+{
+    return adler32_combine_(adler1, adler2, len2);
+}
+
+uLong ZEXPORT adler32_combine64(adler1, adler2, len2)
+    uLong adler1;
+    uLong adler2;
+    z_off64_t len2;
+{
+    return adler32_combine_(adler1, adler2, len2);
+}
Index: uKadecot/trunk/tools/zlib/compress.c
===================================================================
--- uKadecot/trunk/tools/zlib/compress.c	(revision 101)
+++ uKadecot/trunk/tools/zlib/compress.c	(revision 101)
@@ -0,0 +1,80 @@
+/* compress.c -- compress a memory buffer
+ * Copyright (C) 1995-2005 Jean-loup Gailly.
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/* @(#) $Id$ */
+
+#define ZLIB_INTERNAL
+#include "zlib.h"
+
+/* ===========================================================================
+     Compresses the source buffer into the destination buffer. The level
+   parameter has the same meaning as in deflateInit.  sourceLen is the byte
+   length of the source buffer. Upon entry, destLen is the total size of the
+   destination buffer, which must be at least 0.1% larger than sourceLen plus
+   12 bytes. Upon exit, destLen is the actual size of the compressed buffer.
+
+     compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
+   memory, Z_BUF_ERROR if there was not enough room in the output buffer,
+   Z_STREAM_ERROR if the level parameter is invalid.
+*/
+int ZEXPORT compress2 (dest, destLen, source, sourceLen, level)
+    Bytef *dest;
+    uLongf *destLen;
+    const Bytef *source;
+    uLong sourceLen;
+    int level;
+{
+    z_stream stream;
+    int err;
+
+    stream.next_in = (z_const Bytef *)source;
+    stream.avail_in = (uInt)sourceLen;
+#ifdef MAXSEG_64K
+    /* Check for source > 64K on 16-bit machine: */
+    if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
+#endif
+    stream.next_out = dest;
+    stream.avail_out = (uInt)*destLen;
+    if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
+
+    stream.zalloc = (alloc_func)0;
+    stream.zfree = (free_func)0;
+    stream.opaque = (voidpf)0;
+
+    err = deflateInit(&stream, level);
+    if (err != Z_OK) return err;
+
+    err = deflate(&stream, Z_FINISH);
+    if (err != Z_STREAM_END) {
+        deflateEnd(&stream);
+        return err == Z_OK ? Z_BUF_ERROR : err;
+    }
+    *destLen = stream.total_out;
+
+    err = deflateEnd(&stream);
+    return err;
+}
+
+/* ===========================================================================
+ */
+int ZEXPORT compress (dest, destLen, source, sourceLen)
+    Bytef *dest;
+    uLongf *destLen;
+    const Bytef *source;
+    uLong sourceLen;
+{
+    return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION);
+}
+
+/* ===========================================================================
+     If the default memLevel or windowBits for deflateInit() is changed, then
+   this function needs to be updated.
+ */
+uLong ZEXPORT compressBound (sourceLen)
+    uLong sourceLen;
+{
+    return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) +
+           (sourceLen >> 25) + 13;
+}
Index: uKadecot/trunk/tools/zlib/crc32.c
===================================================================
--- uKadecot/trunk/tools/zlib/crc32.c	(revision 101)
+++ uKadecot/trunk/tools/zlib/crc32.c	(revision 101)
@@ -0,0 +1,425 @@
+/* crc32.c -- compute the CRC-32 of a data stream
+ * Copyright (C) 1995-2006, 2010, 2011, 2012 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ *
+ * Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster
+ * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing
+ * tables for updating the shift register in one step with three exclusive-ors
+ * instead of four steps with four exclusive-ors.  This results in about a
+ * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3.
+ */
+
+/* @(#) $Id$ */
+
+/*
+  Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore
+  protection on the static variables used to control the first-use generation
+  of the crc tables.  Therefore, if you #define DYNAMIC_CRC_TABLE, you should
+  first call get_crc_table() to initialize the tables before allowing more than
+  one thread to use crc32().
+
+  DYNAMIC_CRC_TABLE and MAKECRCH can be #defined to write out crc32.h.
+ */
+
+#ifdef MAKECRCH
+#  include <stdio.h>
+#  ifndef DYNAMIC_CRC_TABLE
+#    define DYNAMIC_CRC_TABLE
+#  endif /* !DYNAMIC_CRC_TABLE */
+#endif /* MAKECRCH */
+
+#include "zutil.h"      /* for STDC and FAR definitions */
+
+#define local static
+
+/* Definitions for doing the crc four data bytes at a time. */
+#if !defined(NOBYFOUR) && defined(Z_U4)
+#  define BYFOUR
+#endif
+#ifdef BYFOUR
+   local unsigned long crc32_little OF((unsigned long,
+                        const unsigned char FAR *, unsigned));
+   local unsigned long crc32_big OF((unsigned long,
+                        const unsigned char FAR *, unsigned));
+#  define TBLS 8
+#else
+#  define TBLS 1
+#endif /* BYFOUR */
+
+/* Local functions for crc concatenation */
+local unsigned long gf2_matrix_times OF((unsigned long *mat,
+                                         unsigned long vec));
+local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat));
+local uLong crc32_combine_ OF((uLong crc1, uLong crc2, z_off64_t len2));
+
+
+#ifdef DYNAMIC_CRC_TABLE
+
+local volatile int crc_table_empty = 1;
+local z_crc_t FAR crc_table[TBLS][256];
+local void make_crc_table OF((void));
+#ifdef MAKECRCH
+   local void write_table OF((FILE *, const z_crc_t FAR *));
+#endif /* MAKECRCH */
+/*
+  Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:
+  x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
+
+  Polynomials over GF(2) are represented in binary, one bit per coefficient,
+  with the lowest powers in the most significant bit.  Then adding polynomials
+  is just exclusive-or, and multiplying a polynomial by x is a right shift by
+  one.  If we call the above polynomial p, and represent a byte as the
+  polynomial q, also with the lowest power in the most significant bit (so the
+  byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
+  where a mod b means the remainder after dividing a by b.
+
+  This calculation is done using the shift-register method of multiplying and
+  taking the remainder.  The register is initialized to zero, and for each
+  incoming bit, x^32 is added mod p to the register if the bit is a one (where
+  x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
+  x (which is shifting right by one and adding x^32 mod p if the bit shifted
+  out is a one).  We start with the highest power (least significant bit) of
+  q and repeat for all eight bits of q.
+
+  The first table is simply the CRC of all possible eight bit values.  This is
+  all the information needed to generate CRCs on data a byte at a time for all
+  combinations of CRC register values and incoming bytes.  The remaining tables
+  allow for word-at-a-time CRC calculation for both big-endian and little-
+  endian machines, where a word is four bytes.
+*/
+local void make_crc_table()
+{
+    z_crc_t c;
+    int n, k;
+    z_crc_t poly;                       /* polynomial exclusive-or pattern */
+    /* terms of polynomial defining this crc (except x^32): */
+    static volatile int first = 1;      /* flag to limit concurrent making */
+    static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
+
+    /* See if another task is already doing this (not thread-safe, but better
+       than nothing -- significantly reduces duration of vulnerability in
+       case the advice about DYNAMIC_CRC_TABLE is ignored) */
+    if (first) {
+        first = 0;
+
+        /* make exclusive-or pattern from polynomial (0xedb88320UL) */
+        poly = 0;
+        for (n = 0; n < (int)(sizeof(p)/sizeof(unsigned char)); n++)
+            poly |= (z_crc_t)1 << (31 - p[n]);
+
+        /* generate a crc for every 8-bit value */
+        for (n = 0; n < 256; n++) {
+            c = (z_crc_t)n;
+            for (k = 0; k < 8; k++)
+                c = c & 1 ? poly ^ (c >> 1) : c >> 1;
+            crc_table[0][n] = c;
+        }
+
+#ifdef BYFOUR
+        /* generate crc for each value followed by one, two, and three zeros,
+           and then the byte reversal of those as well as the first table */
+        for (n = 0; n < 256; n++) {
+            c = crc_table[0][n];
+            crc_table[4][n] = ZSWAP32(c);
+            for (k = 1; k < 4; k++) {
+                c = crc_table[0][c & 0xff] ^ (c >> 8);
+                crc_table[k][n] = c;
+                crc_table[k + 4][n] = ZSWAP32(c);
+            }
+        }
+#endif /* BYFOUR */
+
+        crc_table_empty = 0;
+    }
+    else {      /* not first */
+        /* wait for the other guy to finish (not efficient, but rare) */
+        while (crc_table_empty)
+            ;
+    }
+
+#ifdef MAKECRCH
+    /* write out CRC tables to crc32.h */
+    {
+        FILE *out;
+
+        out = fopen("crc32.h", "w");
+        if (out == NULL) return;
+        fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n");
+        fprintf(out, " * Generated automatically by crc32.c\n */\n\n");
+        fprintf(out, "local const z_crc_t FAR ");
+        fprintf(out, "crc_table[TBLS][256] =\n{\n  {\n");
+        write_table(out, crc_table[0]);
+#  ifdef BYFOUR
+        fprintf(out, "#ifdef BYFOUR\n");
+        for (k = 1; k < 8; k++) {
+            fprintf(out, "  },\n  {\n");
+            write_table(out, crc_table[k]);
+        }
+        fprintf(out, "#endif\n");
+#  endif /* BYFOUR */
+        fprintf(out, "  }\n};\n");
+        fclose(out);
+    }
+#endif /* MAKECRCH */
+}
+
+#ifdef MAKECRCH
+local void write_table(out, table)
+    FILE *out;
+    const z_crc_t FAR *table;
+{
+    int n;
+
+    for (n = 0; n < 256; n++)
+        fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : "    ",
+                (unsigned long)(table[n]),
+                n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", "));
+}
+#endif /* MAKECRCH */
+
+#else /* !DYNAMIC_CRC_TABLE */
+/* ========================================================================
+ * Tables of CRC-32s of all single-byte values, made by make_crc_table().
+ */
+#include "crc32.h"
+#endif /* DYNAMIC_CRC_TABLE */
+
+/* =========================================================================
+ * This function can be used by asm versions of crc32()
+ */
+const z_crc_t FAR * ZEXPORT get_crc_table()
+{
+#ifdef DYNAMIC_CRC_TABLE
+    if (crc_table_empty)
+        make_crc_table();
+#endif /* DYNAMIC_CRC_TABLE */
+    return (const z_crc_t FAR *)crc_table;
+}
+
+/* ========================================================================= */
+#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8)
+#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1
+
+/* ========================================================================= */
+unsigned long ZEXPORT crc32(crc, buf, len)
+    unsigned long crc;
+    const unsigned char FAR *buf;
+    uInt len;
+{
+    if (buf == Z_NULL) return 0UL;
+
+#ifdef DYNAMIC_CRC_TABLE
+    if (crc_table_empty)
+        make_crc_table();
+#endif /* DYNAMIC_CRC_TABLE */
+
+#ifdef BYFOUR
+    if (sizeof(void *) == sizeof(ptrdiff_t)) {
+        z_crc_t endian;
+
+        endian = 1;
+        if (*((unsigned char *)(&endian)))
+            return crc32_little(crc, buf, len);
+        else
+            return crc32_big(crc, buf, len);
+    }
+#endif /* BYFOUR */
+    crc = crc ^ 0xffffffffUL;
+    while (len >= 8) {
+        DO8;
+        len -= 8;
+    }
+    if (len) do {
+        DO1;
+    } while (--len);
+    return crc ^ 0xffffffffUL;
+}
+
+#ifdef BYFOUR
+
+/* ========================================================================= */
+#define DOLIT4 c ^= *buf4++; \
+        c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \
+            crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24]
+#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4
+
+/* ========================================================================= */
+local unsigned long crc32_little(crc, buf, len)
+    unsigned long crc;
+    const unsigned char FAR *buf;
+    unsigned len;
+{
+    register z_crc_t c;
+    register const z_crc_t FAR *buf4;
+
+    c = (z_crc_t)crc;
+    c = ~c;
+    while (len && ((ptrdiff_t)buf & 3)) {
+        c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
+        len--;
+    }
+
+    buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
+    while (len >= 32) {
+        DOLIT32;
+        len -= 32;
+    }
+    while (len >= 4) {
+        DOLIT4;
+        len -= 4;
+    }
+    buf = (const unsigned char FAR *)buf4;
+
+    if (len) do {
+        c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
+    } while (--len);
+    c = ~c;
+    return (unsigned long)c;
+}
+
+/* ========================================================================= */
+#define DOBIG4 c ^= *++buf4; \
+        c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \
+            crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24]
+#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4
+
+/* ========================================================================= */
+local unsigned long crc32_big(crc, buf, len)
+    unsigned long crc;
+    const unsigned char FAR *buf;
+    unsigned len;
+{
+    register z_crc_t c;
+    register const z_crc_t FAR *buf4;
+
+    c = ZSWAP32((z_crc_t)crc);
+    c = ~c;
+    while (len && ((ptrdiff_t)buf & 3)) {
+        c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
+        len--;
+    }
+
+    buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
+    buf4--;
+    while (len >= 32) {
+        DOBIG32;
+        len -= 32;
+    }
+    while (len >= 4) {
+        DOBIG4;
+        len -= 4;
+    }
+    buf4++;
+    buf = (const unsigned char FAR *)buf4;
+
+    if (len) do {
+        c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
+    } while (--len);
+    c = ~c;
+    return (unsigned long)(ZSWAP32(c));
+}
+
+#endif /* BYFOUR */
+
+#define GF2_DIM 32      /* dimension of GF(2) vectors (length of CRC) */
+
+/* ========================================================================= */
+local unsigned long gf2_matrix_times(mat, vec)
+    unsigned long *mat;
+    unsigned long vec;
+{
+    unsigned long sum;
+
+    sum = 0;
+    while (vec) {
+        if (vec & 1)
+            sum ^= *mat;
+        vec >>= 1;
+        mat++;
+    }
+    return sum;
+}
+
+/* ========================================================================= */
+local void gf2_matrix_square(square, mat)
+    unsigned long *square;
+    unsigned long *mat;
+{
+    int n;
+
+    for (n = 0; n < GF2_DIM; n++)
+        square[n] = gf2_matrix_times(mat, mat[n]);
+}
+
+/* ========================================================================= */
+local uLong crc32_combine_(crc1, crc2, len2)
+    uLong crc1;
+    uLong crc2;
+    z_off64_t len2;
+{
+    int n;
+    unsigned long row;
+    unsigned long even[GF2_DIM];    /* even-power-of-two zeros operator */
+    unsigned long odd[GF2_DIM];     /* odd-power-of-two zeros operator */
+
+    /* degenerate case (also disallow negative lengths) */
+    if (len2 <= 0)
+        return crc1;
+
+    /* put operator for one zero bit in odd */
+    odd[0] = 0xedb88320UL;          /* CRC-32 polynomial */
+    row = 1;
+    for (n = 1; n < GF2_DIM; n++) {
+        odd[n] = row;
+        row <<= 1;
+    }
+
+    /* put operator for two zero bits in even */
+    gf2_matrix_square(even, odd);
+
+    /* put operator for four zero bits in odd */
+    gf2_matrix_square(odd, even);
+
+    /* apply len2 zeros to crc1 (first square will put the operator for one
+       zero byte, eight zero bits, in even) */
+    do {
+        /* apply zeros operator for this bit of len2 */
+        gf2_matrix_square(even, odd);
+        if (len2 & 1)
+            crc1 = gf2_matrix_times(even, crc1);
+        len2 >>= 1;
+
+        /* if no more bits set, then done */
+        if (len2 == 0)
+            break;
+
+        /* another iteration of the loop with odd and even swapped */
+        gf2_matrix_square(odd, even);
+        if (len2 & 1)
+            crc1 = gf2_matrix_times(odd, crc1);
+        len2 >>= 1;
+
+        /* if no more bits set, then done */
+    } while (len2 != 0);
+
+    /* return combined crc */
+    crc1 ^= crc2;
+    return crc1;
+}
+
+/* ========================================================================= */
+uLong ZEXPORT crc32_combine(crc1, crc2, len2)
+    uLong crc1;
+    uLong crc2;
+    z_off_t len2;
+{
+    return crc32_combine_(crc1, crc2, len2);
+}
+
+uLong ZEXPORT crc32_combine64(crc1, crc2, len2)
+    uLong crc1;
+    uLong crc2;
+    z_off64_t len2;
+{
+    return crc32_combine_(crc1, crc2, len2);
+}
Index: uKadecot/trunk/tools/zlib/crc32.h
===================================================================
--- uKadecot/trunk/tools/zlib/crc32.h	(revision 101)
+++ uKadecot/trunk/tools/zlib/crc32.h	(revision 101)
@@ -0,0 +1,441 @@
+/* crc32.h -- tables for rapid CRC calculation
+ * Generated automatically by crc32.c
+ */
+
+local const z_crc_t FAR crc_table[TBLS][256] =
+{
+  {
+    0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
+    0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL,
+    0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL,
+    0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL,
+    0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL,
+    0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL,
+    0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL,
+    0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL,
+    0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL,
+    0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL,
+    0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL,
+    0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL,
+    0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL,
+    0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL,
+    0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL,
+    0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL,
+    0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL,
+    0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL,
+    0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL,
+    0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL,
+    0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL,
+    0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL,
+    0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL,
+    0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL,
+    0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL,
+    0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL,
+    0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL,
+    0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL,
+    0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL,
+    0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL,
+    0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL,
+    0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL,
+    0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL,
+    0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL,
+    0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL,
+    0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL,
+    0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL,
+    0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL,
+    0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL,
+    0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL,
+    0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL,
+    0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL,
+    0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL,
+    0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL,
+    0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL,
+    0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL,
+    0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL,
+    0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL,
+    0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL,
+    0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL,
+    0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL,
+    0x2d02ef8dUL
+#ifdef BYFOUR
+  },
+  {
+    0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL,
+    0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL,
+    0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL,
+    0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL,
+    0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL,
+    0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL,
+    0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL,
+    0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL,
+    0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL,
+    0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL,
+    0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL,
+    0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL,
+    0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL,
+    0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL,
+    0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL,
+    0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL,
+    0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL,
+    0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL,
+    0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL,
+    0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL,
+    0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL,
+    0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL,
+    0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL,
+    0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL,
+    0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL,
+    0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL,
+    0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL,
+    0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL,
+    0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL,
+    0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL,
+    0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL,
+    0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL,
+    0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL,
+    0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL,
+    0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL,
+    0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL,
+    0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL,
+    0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL,
+    0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL,
+    0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL,
+    0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL,
+    0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL,
+    0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL,
+    0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL,
+    0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL,
+    0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL,
+    0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL,
+    0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL,
+    0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL,
+    0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL,
+    0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL,
+    0x9324fd72UL
+  },
+  {
+    0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL,
+    0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL,
+    0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL,
+    0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL,
+    0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL,
+    0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL,
+    0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL,
+    0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL,
+    0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL,
+    0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL,
+    0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL,
+    0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL,
+    0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL,
+    0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL,
+    0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL,
+    0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL,
+    0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL,
+    0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL,
+    0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL,
+    0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL,
+    0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL,
+    0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL,
+    0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL,
+    0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL,
+    0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL,
+    0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL,
+    0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL,
+    0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL,
+    0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL,
+    0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL,
+    0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL,
+    0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL,
+    0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL,
+    0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL,
+    0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL,
+    0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL,
+    0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL,
+    0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL,
+    0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL,
+    0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL,
+    0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL,
+    0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL,
+    0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL,
+    0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL,
+    0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL,
+    0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL,
+    0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL,
+    0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL,
+    0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL,
+    0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL,
+    0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL,
+    0xbe9834edUL
+  },
+  {
+    0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL,
+    0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL,
+    0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL,
+    0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL,
+    0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL,
+    0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL,
+    0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL,
+    0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL,
+    0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL,
+    0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL,
+    0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL,
+    0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL,
+    0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL,
+    0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL,
+    0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL,
+    0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL,
+    0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL,
+    0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL,
+    0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL,
+    0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL,
+    0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL,
+    0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL,
+    0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL,
+    0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL,
+    0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL,
+    0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL,
+    0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL,
+    0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL,
+    0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL,
+    0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL,
+    0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL,
+    0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL,
+    0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL,
+    0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL,
+    0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL,
+    0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL,
+    0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL,
+    0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL,
+    0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL,
+    0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL,
+    0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL,
+    0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL,
+    0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL,
+    0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL,
+    0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL,
+    0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL,
+    0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL,
+    0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL,
+    0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL,
+    0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL,
+    0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL,
+    0xde0506f1UL
+  },
+  {
+    0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL,
+    0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL,
+    0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL,
+    0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL,
+    0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL,
+    0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL,
+    0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL,
+    0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL,
+    0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL,
+    0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL,
+    0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL,
+    0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL,
+    0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL,
+    0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL,
+    0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL,
+    0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL,
+    0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL,
+    0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL,
+    0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL,
+    0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL,
+    0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL,
+    0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL,
+    0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL,
+    0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL,
+    0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL,
+    0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL,
+    0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL,
+    0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL,
+    0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL,
+    0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL,
+    0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL,
+    0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL,
+    0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL,
+    0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL,
+    0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL,
+    0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL,
+    0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL,
+    0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL,
+    0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL,
+    0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL,
+    0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL,
+    0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL,
+    0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL,
+    0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL,
+    0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL,
+    0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL,
+    0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL,
+    0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL,
+    0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL,
+    0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL,
+    0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL,
+    0x8def022dUL
+  },
+  {
+    0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL,
+    0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL,
+    0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL,
+    0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL,
+    0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL,
+    0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL,
+    0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL,
+    0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL,
+    0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL,
+    0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL,
+    0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL,
+    0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL,
+    0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL,
+    0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL,
+    0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL,
+    0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL,
+    0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL,
+    0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL,
+    0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL,
+    0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL,
+    0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL,
+    0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL,
+    0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL,
+    0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL,
+    0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL,
+    0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL,
+    0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL,
+    0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL,
+    0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL,
+    0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL,
+    0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL,
+    0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL,
+    0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL,
+    0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL,
+    0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL,
+    0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL,
+    0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL,
+    0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL,
+    0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL,
+    0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL,
+    0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL,
+    0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL,
+    0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL,
+    0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL,
+    0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL,
+    0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL,
+    0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL,
+    0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL,
+    0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL,
+    0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL,
+    0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL,
+    0x72fd2493UL
+  },
+  {
+    0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL,
+    0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL,
+    0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL,
+    0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL,
+    0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL,
+    0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL,
+    0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL,
+    0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL,
+    0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL,
+    0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL,
+    0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL,
+    0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL,
+    0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL,
+    0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL,
+    0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL,
+    0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL,
+    0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL,
+    0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL,
+    0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL,
+    0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL,
+    0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL,
+    0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL,
+    0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL,
+    0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL,
+    0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL,
+    0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL,
+    0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL,
+    0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL,
+    0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL,
+    0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL,
+    0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL,
+    0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL,
+    0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL,
+    0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL,
+    0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL,
+    0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL,
+    0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL,
+    0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL,
+    0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL,
+    0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL,
+    0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL,
+    0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL,
+    0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL,
+    0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL,
+    0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL,
+    0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL,
+    0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL,
+    0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL,
+    0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL,
+    0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL,
+    0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL,
+    0xed3498beUL
+  },
+  {
+    0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL,
+    0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL,
+    0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL,
+    0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL,
+    0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL,
+    0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL,
+    0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL,
+    0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL,
+    0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL,
+    0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL,
+    0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL,
+    0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL,
+    0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL,
+    0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL,
+    0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL,
+    0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL,
+    0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL,
+    0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL,
+    0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL,
+    0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL,
+    0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL,
+    0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL,
+    0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL,
+    0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL,
+    0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL,
+    0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL,
+    0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL,
+    0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL,
+    0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL,
+    0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL,
+    0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL,
+    0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL,
+    0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL,
+    0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL,
+    0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL,
+    0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL,
+    0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL,
+    0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL,
+    0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL,
+    0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL,
+    0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL,
+    0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL,
+    0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL,
+    0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL,
+    0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL,
+    0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL,
+    0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL,
+    0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL,
+    0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL,
+    0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL,
+    0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL,
+    0xf10605deUL
+#endif
+  }
+};
Index: uKadecot/trunk/tools/zlib/deflate.c
===================================================================
--- uKadecot/trunk/tools/zlib/deflate.c	(revision 101)
+++ uKadecot/trunk/tools/zlib/deflate.c	(revision 101)
@@ -0,0 +1,1967 @@
+/* deflate.c -- compress data using the deflation algorithm
+ * Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/*
+ *  ALGORITHM
+ *
+ *      The "deflation" process depends on being able to identify portions
+ *      of the input text which are identical to earlier input (within a
+ *      sliding window trailing behind the input currently being processed).
+ *
+ *      The most straightforward technique turns out to be the fastest for
+ *      most input files: try all possible matches and select the longest.
+ *      The key feature of this algorithm is that insertions into the string
+ *      dictionary are very simple and thus fast, and deletions are avoided
+ *      completely. Insertions are performed at each input character, whereas
+ *      string matches are performed only when the previous match ends. So it
+ *      is preferable to spend more time in matches to allow very fast string
+ *      insertions and avoid deletions. The matching algorithm for small
+ *      strings is inspired from that of Rabin & Karp. A brute force approach
+ *      is used to find longer strings when a small match has been found.
+ *      A similar algorithm is used in comic (by Jan-Mark Wams) and freeze
+ *      (by Leonid Broukhis).
+ *         A previous version of this file used a more sophisticated algorithm
+ *      (by Fiala and Greene) which is guaranteed to run in linear amortized
+ *      time, but has a larger average cost, uses more memory and is patented.
+ *      However the F&G algorithm may be faster for some highly redundant
+ *      files if the parameter max_chain_length (described below) is too large.
+ *
+ *  ACKNOWLEDGEMENTS
+ *
+ *      The idea of lazy evaluation of matches is due to Jan-Mark Wams, and
+ *      I found it in 'freeze' written by Leonid Broukhis.
+ *      Thanks to many people for bug reports and testing.
+ *
+ *  REFERENCES
+ *
+ *      Deutsch, L.P.,"DEFLATE Compressed Data Format Specification".
+ *      Available in http://tools.ietf.org/html/rfc1951
+ *
+ *      A description of the Rabin and Karp algorithm is given in the book
+ *         "Algorithms" by R. Sedgewick, Addison-Wesley, p252.
+ *
+ *      Fiala,E.R., and Greene,D.H.
+ *         Data Compression with Finite Windows, Comm.ACM, 32,4 (1989) 490-595
+ *
+ */
+
+/* @(#) $Id$ */
+
+#include "deflate.h"
+
+const char deflate_copyright[] =
+   " deflate 1.2.8 Copyright 1995-2013 Jean-loup Gailly and Mark Adler ";
+/*
+  If you use the zlib library in a product, an acknowledgment is welcome
+  in the documentation of your product. If for some reason you cannot
+  include such an acknowledgment, I would appreciate that you keep this
+  copyright string in the executable of your product.
+ */
+
+/* ===========================================================================
+ *  Function prototypes.
+ */
+typedef enum {
+    need_more,      /* block not completed, need more input or more output */
+    block_done,     /* block flush performed */
+    finish_started, /* finish started, need only more output at next deflate */
+    finish_done     /* finish done, accept no more input or output */
+} block_state;
+
+typedef block_state (*compress_func) OF((deflate_state *s, int flush));
+/* Compression function. Returns the block state after the call. */
+
+local void fill_window    OF((deflate_state *s));
+local block_state deflate_stored OF((deflate_state *s, int flush));
+local block_state deflate_fast   OF((deflate_state *s, int flush));
+#ifndef FASTEST
+local block_state deflate_slow   OF((deflate_state *s, int flush));
+#endif
+local block_state deflate_rle    OF((deflate_state *s, int flush));
+local block_state deflate_huff   OF((deflate_state *s, int flush));
+local void lm_init        OF((deflate_state *s));
+local void putShortMSB    OF((deflate_state *s, uInt b));
+local void flush_pending  OF((z_streamp strm));
+local int read_buf        OF((z_streamp strm, Bytef *buf, unsigned size));
+#ifdef ASMV
+      void match_init OF((void)); /* asm code initialization */
+      uInt longest_match  OF((deflate_state *s, IPos cur_match));
+#else
+local uInt longest_match  OF((deflate_state *s, IPos cur_match));
+#endif
+
+#ifdef DEBUG
+local  void check_match OF((deflate_state *s, IPos start, IPos match,
+                            int length));
+#endif
+
+/* ===========================================================================
+ * Local data
+ */
+
+#define NIL 0
+/* Tail of hash chains */
+
+#ifndef TOO_FAR
+#  define TOO_FAR 4096
+#endif
+/* Matches of length 3 are discarded if their distance exceeds TOO_FAR */
+
+/* Values for max_lazy_match, good_match and max_chain_length, depending on
+ * the desired pack level (0..9). The values given below have been tuned to
+ * exclude worst case performance for pathological files. Better values may be
+ * found for specific files.
+ */
+typedef struct config_s {
+   ush good_length; /* reduce lazy search above this match length */
+   ush max_lazy;    /* do not perform lazy search above this match length */
+   ush nice_length; /* quit search above this match length */
+   ush max_chain;
+   compress_func func;
+} config;
+
+#ifdef FASTEST
+local const config configuration_table[2] = {
+/*      good lazy nice chain */
+/* 0 */ {0,    0,  0,    0, deflate_stored},  /* store only */
+/* 1 */ {4,    4,  8,    4, deflate_fast}}; /* max speed, no lazy matches */
+#else
+local const config configuration_table[10] = {
+/*      good lazy nice chain */
+/* 0 */ {0,    0,  0,    0, deflate_stored},  /* store only */
+/* 1 */ {4,    4,  8,    4, deflate_fast}, /* max speed, no lazy matches */
+/* 2 */ {4,    5, 16,    8, deflate_fast},
+/* 3 */ {4,    6, 32,   32, deflate_fast},
+
+/* 4 */ {4,    4, 16,   16, deflate_slow},  /* lazy matches */
+/* 5 */ {8,   16, 32,   32, deflate_slow},
+/* 6 */ {8,   16, 128, 128, deflate_slow},
+/* 7 */ {8,   32, 128, 256, deflate_slow},
+/* 8 */ {32, 128, 258, 1024, deflate_slow},
+/* 9 */ {32, 258, 258, 4096, deflate_slow}}; /* max compression */
+#endif
+
+/* Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4
+ * For deflate_fast() (levels <= 3) good is ignored and lazy has a different
+ * meaning.
+ */
+
+#define EQUAL 0
+/* result of memcmp for equal strings */
+
+#ifndef NO_DUMMY_DECL
+struct static_tree_desc_s {int dummy;}; /* for buggy compilers */
+#endif
+
+/* rank Z_BLOCK between Z_NO_FLUSH and Z_PARTIAL_FLUSH */
+#define RANK(f) (((f) << 1) - ((f) > 4 ? 9 : 0))
+
+/* ===========================================================================
+ * Update a hash value with the given input byte
+ * IN  assertion: all calls to to UPDATE_HASH are made with consecutive
+ *    input characters, so that a running hash key can be computed from the
+ *    previous key instead of complete recalculation each time.
+ */
+#define UPDATE_HASH(s,h,c) (h = (((h)<<s->hash_shift) ^ (c)) & s->hash_mask)
+
+
+/* ===========================================================================
+ * Insert string str in the dictionary and set match_head to the previous head
+ * of the hash chain (the most recent string with same hash key). Return
+ * the previous length of the hash chain.
+ * If this file is compiled with -DFASTEST, the compression level is forced
+ * to 1, and no hash chains are maintained.
+ * IN  assertion: all calls to to INSERT_STRING are made with consecutive
+ *    input characters and the first MIN_MATCH bytes of str are valid
+ *    (except for the last MIN_MATCH-1 bytes of the input file).
+ */
+#ifdef FASTEST
+#define INSERT_STRING(s, str, match_head) \
+   (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \
+    match_head = s->head[s->ins_h], \
+    s->head[s->ins_h] = (Pos)(str))
+#else
+#define INSERT_STRING(s, str, match_head) \
+   (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \
+    match_head = s->prev[(str) & s->w_mask] = s->head[s->ins_h], \
+    s->head[s->ins_h] = (Pos)(str))
+#endif
+
+/* ===========================================================================
+ * Initialize the hash table (avoiding 64K overflow for 16 bit systems).
+ * prev[] will be initialized on the fly.
+ */
+#define CLEAR_HASH(s) \
+    s->head[s->hash_size-1] = NIL; \
+    zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head));
+
+/* ========================================================================= */
+int ZEXPORT deflateInit_(strm, level, version, stream_size)
+    z_streamp strm;
+    int level;
+    const char *version;
+    int stream_size;
+{
+    return deflateInit2_(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL,
+                         Z_DEFAULT_STRATEGY, version, stream_size);
+    /* To do: ignore strm->next_in if we use it as window */
+}
+
+/* ========================================================================= */
+int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
+                  version, stream_size)
+    z_streamp strm;
+    int  level;
+    int  method;
+    int  windowBits;
+    int  memLevel;
+    int  strategy;
+    const char *version;
+    int stream_size;
+{
+    deflate_state *s;
+    int wrap = 1;
+    static const char my_version[] = ZLIB_VERSION;
+
+    ushf *overlay;
+    /* We overlay pending_buf and d_buf+l_buf. This works since the average
+     * output size for (length,distance) codes is <= 24 bits.
+     */
+
+    if (version == Z_NULL || version[0] != my_version[0] ||
+        stream_size != sizeof(z_stream)) {
+        return Z_VERSION_ERROR;
+    }
+    if (strm == Z_NULL) return Z_STREAM_ERROR;
+
+    strm->msg = Z_NULL;
+    if (strm->zalloc == (alloc_func)0) {
+#ifdef Z_SOLO
+        return Z_STREAM_ERROR;
+#else
+        strm->zalloc = zcalloc;
+        strm->opaque = (voidpf)0;
+#endif
+    }
+    if (strm->zfree == (free_func)0)
+#ifdef Z_SOLO
+        return Z_STREAM_ERROR;
+#else
+        strm->zfree = zcfree;
+#endif
+
+#ifdef FASTEST
+    if (level != 0) level = 1;
+#else
+    if (level == Z_DEFAULT_COMPRESSION) level = 6;
+#endif
+
+    if (windowBits < 0) { /* suppress zlib wrapper */
+        wrap = 0;
+        windowBits = -windowBits;
+    }
+#ifdef GZIP
+    else if (windowBits > 15) {
+        wrap = 2;       /* write gzip wrapper instead */
+        windowBits -= 16;
+    }
+#endif
+    if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED ||
+        windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
+        strategy < 0 || strategy > Z_FIXED) {
+        return Z_STREAM_ERROR;
+    }
+    if (windowBits == 8) windowBits = 9;  /* until 256-byte window bug fixed */
+    s = (deflate_state *) ZALLOC(strm, 1, sizeof(deflate_state));
+    if (s == Z_NULL) return Z_MEM_ERROR;
+    strm->state = (struct internal_state FAR *)s;
+    s->strm = strm;
+
+    s->wrap = wrap;
+    s->gzhead = Z_NULL;
+    s->w_bits = windowBits;
+    s->w_size = 1 << s->w_bits;
+    s->w_mask = s->w_size - 1;
+
+    s->hash_bits = memLevel + 7;
+    s->hash_size = 1 << s->hash_bits;
+    s->hash_mask = s->hash_size - 1;
+    s->hash_shift =  ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH);
+
+    s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte));
+    s->prev   = (Posf *)  ZALLOC(strm, s->w_size, sizeof(Pos));
+    s->head   = (Posf *)  ZALLOC(strm, s->hash_size, sizeof(Pos));
+
+    s->high_water = 0;      /* nothing written to s->window yet */
+
+    s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
+
+    overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
+    s->pending_buf = (uchf *) overlay;
+    s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L);
+
+    if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||
+        s->pending_buf == Z_NULL) {
+        s->status = FINISH_STATE;
+        strm->msg = ERR_MSG(Z_MEM_ERROR);
+        deflateEnd (strm);
+        return Z_MEM_ERROR;
+    }
+    s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
+    s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
+
+    s->level = level;
+    s->strategy = strategy;
+    s->method = (Byte)method;
+
+    return deflateReset(strm);
+}
+
+/* ========================================================================= */
+int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
+    z_streamp strm;
+    const Bytef *dictionary;
+    uInt  dictLength;
+{
+    deflate_state *s;
+    uInt str, n;
+    int wrap;
+    unsigned avail;
+    z_const unsigned char *next;
+
+    if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL)
+        return Z_STREAM_ERROR;
+    s = strm->state;
+    wrap = s->wrap;
+    if (wrap == 2 || (wrap == 1 && s->status != INIT_STATE) || s->lookahead)
+        return Z_STREAM_ERROR;
+
+    /* when using zlib wrappers, compute Adler-32 for provided dictionary */
+    if (wrap == 1)
+        strm->adler = adler32(strm->adler, dictionary, dictLength);
+    s->wrap = 0;                    /* avoid computing Adler-32 in read_buf */
+
+    /* if dictionary would fill window, just replace the history */
+    if (dictLength >= s->w_size) {
+        if (wrap == 0) {            /* already empty otherwise */
+            CLEAR_HASH(s);
+            s->strstart = 0;
+            s->block_start = 0L;
+            s->insert = 0;
+        }
+        dictionary += dictLength - s->w_size;  /* use the tail */
+        dictLength = s->w_size;
+    }
+
+    /* insert dictionary into window and hash */
+    avail = strm->avail_in;
+    next = strm->next_in;
+    strm->avail_in = dictLength;
+    strm->next_in = (z_const Bytef *)dictionary;
+    fill_window(s);
+    while (s->lookahead >= MIN_MATCH) {
+        str = s->strstart;
+        n = s->lookahead - (MIN_MATCH-1);
+        do {
+            UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]);
+#ifndef FASTEST
+            s->prev[str & s->w_mask] = s->head[s->ins_h];
+#endif
+            s->head[s->ins_h] = (Pos)str;
+            str++;
+        } while (--n);
+        s->strstart = str;
+        s->lookahead = MIN_MATCH-1;
+        fill_window(s);
+    }
+    s->strstart += s->lookahead;
+    s->block_start = (long)s->strstart;
+    s->insert = s->lookahead;
+    s->lookahead = 0;
+    s->match_length = s->prev_length = MIN_MATCH-1;
+    s->match_available = 0;
+    strm->next_in = next;
+    strm->avail_in = avail;
+    s->wrap = wrap;
+    return Z_OK;
+}
+
+/* ========================================================================= */
+int ZEXPORT deflateResetKeep (strm)
+    z_streamp strm;
+{
+    deflate_state *s;
+
+    if (strm == Z_NULL || strm->state == Z_NULL ||
+        strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) {
+        return Z_STREAM_ERROR;
+    }
+
+    strm->total_in = strm->total_out = 0;
+    strm->msg = Z_NULL; /* use zfree if we ever allocate msg dynamically */
+    strm->data_type = Z_UNKNOWN;
+
+    s = (deflate_state *)strm->state;
+    s->pending = 0;
+    s->pending_out = s->pending_buf;
+
+    if (s->wrap < 0) {
+        s->wrap = -s->wrap; /* was made negative by deflate(..., Z_FINISH); */
+    }
+    s->status = s->wrap ? INIT_STATE : BUSY_STATE;
+    strm->adler =
+#ifdef GZIP
+        s->wrap == 2 ? crc32(0L, Z_NULL, 0) :
+#endif
+        adler32(0L, Z_NULL, 0);
+    s->last_flush = Z_NO_FLUSH;
+
+    _tr_init(s);
+
+    return Z_OK;
+}
+
+/* ========================================================================= */
+int ZEXPORT deflateReset (strm)
+    z_streamp strm;
+{
+    int ret;
+
+    ret = deflateResetKeep(strm);
+    if (ret == Z_OK)
+        lm_init(strm->state);
+    return ret;
+}
+
+/* ========================================================================= */
+int ZEXPORT deflateSetHeader (strm, head)
+    z_streamp strm;
+    gz_headerp head;
+{
+    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+    if (strm->state->wrap != 2) return Z_STREAM_ERROR;
+    strm->state->gzhead = head;
+    return Z_OK;
+}
+
+/* ========================================================================= */
+int ZEXPORT deflatePending (strm, pending, bits)
+    unsigned *pending;
+    int *bits;
+    z_streamp strm;
+{
+    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+    if (pending != Z_NULL)
+        *pending = strm->state->pending;
+    if (bits != Z_NULL)
+        *bits = strm->state->bi_valid;
+    return Z_OK;
+}
+
+/* ========================================================================= */
+int ZEXPORT deflatePrime (strm, bits, value)
+    z_streamp strm;
+    int bits;
+    int value;
+{
+    deflate_state *s;
+    int put;
+
+    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+    s = strm->state;
+    if ((Bytef *)(s->d_buf) < s->pending_out + ((Buf_size + 7) >> 3))
+        return Z_BUF_ERROR;
+    do {
+        put = Buf_size - s->bi_valid;
+        if (put > bits)
+            put = bits;
+        s->bi_buf |= (ush)((value & ((1 << put) - 1)) << s->bi_valid);
+        s->bi_valid += put;
+        _tr_flush_bits(s);
+        value >>= put;
+        bits -= put;
+    } while (bits);
+    return Z_OK;
+}
+
+/* ========================================================================= */
+int ZEXPORT deflateParams(strm, level, strategy)
+    z_streamp strm;
+    int level;
+    int strategy;
+{
+    deflate_state *s;
+    compress_func func;
+    int err = Z_OK;
+
+    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+    s = strm->state;
+
+#ifdef FASTEST
+    if (level != 0) level = 1;
+#else
+    if (level == Z_DEFAULT_COMPRESSION) level = 6;
+#endif
+    if (level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) {
+        return Z_STREAM_ERROR;
+    }
+    func = configuration_table[s->level].func;
+
+    if ((strategy != s->strategy || func != configuration_table[level].func) &&
+        strm->total_in != 0) {
+        /* Flush the last buffer: */
+        err = deflate(strm, Z_BLOCK);
+        if (err == Z_BUF_ERROR && s->pending == 0)
+            err = Z_OK;
+    }
+    if (s->level != level) {
+        s->level = level;
+        s->max_lazy_match   = configuration_table[level].max_lazy;
+        s->good_match       = configuration_table[level].good_length;
+        s->nice_match       = configuration_table[level].nice_length;
+        s->max_chain_length = configuration_table[level].max_chain;
+    }
+    s->strategy = strategy;
+    return err;
+}
+
+/* ========================================================================= */
+int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain)
+    z_streamp strm;
+    int good_length;
+    int max_lazy;
+    int nice_length;
+    int max_chain;
+{
+    deflate_state *s;
+
+    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+    s = strm->state;
+    s->good_match = good_length;
+    s->max_lazy_match = max_lazy;
+    s->nice_match = nice_length;
+    s->max_chain_length = max_chain;
+    return Z_OK;
+}
+
+/* =========================================================================
+ * For the default windowBits of 15 and memLevel of 8, this function returns
+ * a close to exact, as well as small, upper bound on the compressed size.
+ * They are coded as constants here for a reason--if the #define's are
+ * changed, then this function needs to be changed as well.  The return
+ * value for 15 and 8 only works for those exact settings.
+ *
+ * For any setting other than those defaults for windowBits and memLevel,
+ * the value returned is a conservative worst case for the maximum expansion
+ * resulting from using fixed blocks instead of stored blocks, which deflate
+ * can emit on compressed data for some combinations of the parameters.
+ *
+ * This function could be more sophisticated to provide closer upper bounds for
+ * every combination of windowBits and memLevel.  But even the conservative
+ * upper bound of about 14% expansion does not seem onerous for output buffer
+ * allocation.
+ */
+uLong ZEXPORT deflateBound(strm, sourceLen)
+    z_streamp strm;
+    uLong sourceLen;
+{
+    deflate_state *s;
+    uLong complen, wraplen;
+    Bytef *str;
+
+    /* conservative upper bound for compressed data */
+    complen = sourceLen +
+              ((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5;
+
+    /* if can't get parameters, return conservative bound plus zlib wrapper */
+    if (strm == Z_NULL || strm->state == Z_NULL)
+        return complen + 6;
+
+    /* compute wrapper length */
+    s = strm->state;
+    switch (s->wrap) {
+    case 0:                                 /* raw deflate */
+        wraplen = 0;
+        break;
+    case 1:                                 /* zlib wrapper */
+        wraplen = 6 + (s->strstart ? 4 : 0);
+        break;
+    case 2:                                 /* gzip wrapper */
+        wraplen = 18;
+        if (s->gzhead != Z_NULL) {          /* user-supplied gzip header */
+            if (s->gzhead->extra != Z_NULL)
+                wraplen += 2 + s->gzhead->extra_len;
+            str = s->gzhead->name;
+            if (str != Z_NULL)
+                do {
+                    wraplen++;
+                } while (*str++);
+            str = s->gzhead->comment;
+            if (str != Z_NULL)
+                do {
+                    wraplen++;
+                } while (*str++);
+            if (s->gzhead->hcrc)
+                wraplen += 2;
+        }
+        break;
+    default:                                /* for compiler happiness */
+        wraplen = 6;
+    }
+
+    /* if not default parameters, return conservative bound */
+    if (s->w_bits != 15 || s->hash_bits != 8 + 7)
+        return complen + wraplen;
+
+    /* default settings: return tight bound for that case */
+    return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) +
+           (sourceLen >> 25) + 13 - 6 + wraplen;
+}
+
+/* =========================================================================
+ * Put a short in the pending buffer. The 16-bit value is put in MSB order.
+ * IN assertion: the stream state is correct and there is enough room in
+ * pending_buf.
+ */
+local void putShortMSB (s, b)
+    deflate_state *s;
+    uInt b;
+{
+    put_byte(s, (Byte)(b >> 8));
+    put_byte(s, (Byte)(b & 0xff));
+}
+
+/* =========================================================================
+ * Flush as much pending output as possible. All deflate() output goes
+ * through this function so some applications may wish to modify it
+ * to avoid allocating a large strm->next_out buffer and copying into it.
+ * (See also read_buf()).
+ */
+local void flush_pending(strm)
+    z_streamp strm;
+{
+    unsigned len;
+    deflate_state *s = strm->state;
+
+    _tr_flush_bits(s);
+    len = s->pending;
+    if (len > strm->avail_out) len = strm->avail_out;
+    if (len == 0) return;
+
+    zmemcpy(strm->next_out, s->pending_out, len);
+    strm->next_out  += len;
+    s->pending_out  += len;
+    strm->total_out += len;
+    strm->avail_out  -= len;
+    s->pending -= len;
+    if (s->pending == 0) {
+        s->pending_out = s->pending_buf;
+    }
+}
+
+/* ========================================================================= */
+int ZEXPORT deflate (strm, flush)
+    z_streamp strm;
+    int flush;
+{
+    int old_flush; /* value of flush param for previous deflate call */
+    deflate_state *s;
+
+    if (strm == Z_NULL || strm->state == Z_NULL ||
+        flush > Z_BLOCK || flush < 0) {
+        return Z_STREAM_ERROR;
+    }
+    s = strm->state;
+
+    if (strm->next_out == Z_NULL ||
+        (strm->next_in == Z_NULL && strm->avail_in != 0) ||
+        (s->status == FINISH_STATE && flush != Z_FINISH)) {
+        ERR_RETURN(strm, Z_STREAM_ERROR);
+    }
+    if (strm->avail_out == 0) ERR_RETURN(strm, Z_BUF_ERROR);
+
+    s->strm = strm; /* just in case */
+    old_flush = s->last_flush;
+    s->last_flush = flush;
+
+    /* Write the header */
+    if (s->status == INIT_STATE) {
+#ifdef GZIP
+        if (s->wrap == 2) {
+            strm->adler = crc32(0L, Z_NULL, 0);
+            put_byte(s, 31);
+            put_byte(s, 139);
+            put_byte(s, 8);
+            if (s->gzhead == Z_NULL) {
+                put_byte(s, 0);
+                put_byte(s, 0);
+                put_byte(s, 0);
+                put_byte(s, 0);
+                put_byte(s, 0);
+                put_byte(s, s->level == 9 ? 2 :
+                            (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ?
+                             4 : 0));
+                put_byte(s, OS_CODE);
+                s->status = BUSY_STATE;
+            }
+            else {
+                put_byte(s, (s->gzhead->text ? 1 : 0) +
+                            (s->gzhead->hcrc ? 2 : 0) +
+                            (s->gzhead->extra == Z_NULL ? 0 : 4) +
+                            (s->gzhead->name == Z_NULL ? 0 : 8) +
+                            (s->gzhead->comment == Z_NULL ? 0 : 16)
+                        );
+                put_byte(s, (Byte)(s->gzhead->time & 0xff));
+                put_byte(s, (Byte)((s->gzhead->time >> 8) & 0xff));
+                put_byte(s, (Byte)((s->gzhead->time >> 16) & 0xff));
+                put_byte(s, (Byte)((s->gzhead->time >> 24) & 0xff));
+                put_byte(s, s->level == 9 ? 2 :
+                            (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ?
+                             4 : 0));
+                put_byte(s, s->gzhead->os & 0xff);
+                if (s->gzhead->extra != Z_NULL) {
+                    put_byte(s, s->gzhead->extra_len & 0xff);
+                    put_byte(s, (s->gzhead->extra_len >> 8) & 0xff);
+                }
+                if (s->gzhead->hcrc)
+                    strm->adler = crc32(strm->adler, s->pending_buf,
+                                        s->pending);
+                s->gzindex = 0;
+                s->status = EXTRA_STATE;
+            }
+        }
+        else
+#endif
+        {
+            uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8;
+            uInt level_flags;
+
+            if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2)
+                level_flags = 0;
+            else if (s->level < 6)
+                level_flags = 1;
+            else if (s->level == 6)
+                level_flags = 2;
+            else
+                level_flags = 3;
+            header |= (level_flags << 6);
+            if (s->strstart != 0) header |= PRESET_DICT;
+            header += 31 - (header % 31);
+
+            s->status = BUSY_STATE;
+            putShortMSB(s, header);
+
+            /* Save the adler32 of the preset dictionary: */
+            if (s->strstart != 0) {
+                putShortMSB(s, (uInt)(strm->adler >> 16));
+                putShortMSB(s, (uInt)(strm->adler & 0xffff));
+            }
+            strm->adler = adler32(0L, Z_NULL, 0);
+        }
+    }
+#ifdef GZIP
+    if (s->status == EXTRA_STATE) {
+        if (s->gzhead->extra != Z_NULL) {
+            uInt beg = s->pending;  /* start of bytes to update crc */
+
+            while (s->gzindex < (s->gzhead->extra_len & 0xffff)) {
+                if (s->pending == s->pending_buf_size) {
+                    if (s->gzhead->hcrc && s->pending > beg)
+                        strm->adler = crc32(strm->adler, s->pending_buf + beg,
+                                            s->pending - beg);
+                    flush_pending(strm);
+                    beg = s->pending;
+                    if (s->pending == s->pending_buf_size)
+                        break;
+                }
+                put_byte(s, s->gzhead->extra[s->gzindex]);
+                s->gzindex++;
+            }
+            if (s->gzhead->hcrc && s->pending > beg)
+                strm->adler = crc32(strm->adler, s->pending_buf + beg,
+                                    s->pending - beg);
+            if (s->gzindex == s->gzhead->extra_len) {
+                s->gzindex = 0;
+                s->status = NAME_STATE;
+            }
+        }
+        else
+            s->status = NAME_STATE;
+    }
+    if (s->status == NAME_STATE) {
+        if (s->gzhead->name != Z_NULL) {
+            uInt beg = s->pending;  /* start of bytes to update crc */
+            int val;
+
+            do {
+                if (s->pending == s->pending_buf_size) {
+                    if (s->gzhead->hcrc && s->pending > beg)
+                        strm->adler = crc32(strm->adler, s->pending_buf + beg,
+                                            s->pending - beg);
+                    flush_pending(strm);
+                    beg = s->pending;
+                    if (s->pending == s->pending_buf_size) {
+                        val = 1;
+                        break;
+                    }
+                }
+                val = s->gzhead->name[s->gzindex++];
+                put_byte(s, val);
+            } while (val != 0);
+            if (s->gzhead->hcrc && s->pending > beg)
+                strm->adler = crc32(strm->adler, s->pending_buf + beg,
+                                    s->pending - beg);
+            if (val == 0) {
+                s->gzindex = 0;
+                s->status = COMMENT_STATE;
+            }
+        }
+        else
+            s->status = COMMENT_STATE;
+    }
+    if (s->status == COMMENT_STATE) {
+        if (s->gzhead->comment != Z_NULL) {
+            uInt beg = s->pending;  /* start of bytes to update crc */
+            int val;
+
+            do {
+                if (s->pending == s->pending_buf_size) {
+                    if (s->gzhead->hcrc && s->pending > beg)
+                        strm->adler = crc32(strm->adler, s->pending_buf + beg,
+                                            s->pending - beg);
+                    flush_pending(strm);
+                    beg = s->pending;
+                    if (s->pending == s->pending_buf_size) {
+                        val = 1;
+                        break;
+                    }
+                }
+                val = s->gzhead->comment[s->gzindex++];
+                put_byte(s, val);
+            } while (val != 0);
+            if (s->gzhead->hcrc && s->pending > beg)
+                strm->adler = crc32(strm->adler, s->pending_buf + beg,
+                                    s->pending - beg);
+            if (val == 0)
+                s->status = HCRC_STATE;
+        }
+        else
+            s->status = HCRC_STATE;
+    }
+    if (s->status == HCRC_STATE) {
+        if (s->gzhead->hcrc) {
+            if (s->pending + 2 > s->pending_buf_size)
+                flush_pending(strm);
+            if (s->pending + 2 <= s->pending_buf_size) {
+                put_byte(s, (Byte)(strm->adler & 0xff));
+                put_byte(s, (Byte)((strm->adler >> 8) & 0xff));
+                strm->adler = crc32(0L, Z_NULL, 0);
+                s->status = BUSY_STATE;
+            }
+        }
+        else
+            s->status = BUSY_STATE;
+    }
+#endif
+
+    /* Flush as much pending output as possible */
+    if (s->pending != 0) {
+        flush_pending(strm);
+        if (strm->avail_out == 0) {
+            /* Since avail_out is 0, deflate will be called again with
+             * more output space, but possibly with both pending and
+             * avail_in equal to zero. There won't be anything to do,
+             * but this is not an error situation so make sure we
+             * return OK instead of BUF_ERROR at next call of deflate:
+             */
+            s->last_flush = -1;
+            return Z_OK;
+        }
+
+    /* Make sure there is something to do and avoid duplicate consecutive
+     * flushes. For repeated and useless calls with Z_FINISH, we keep
+     * returning Z_STREAM_END instead of Z_BUF_ERROR.
+     */
+    } else if (strm->avail_in == 0 && RANK(flush) <= RANK(old_flush) &&
+               flush != Z_FINISH) {
+        ERR_RETURN(strm, Z_BUF_ERROR);
+    }
+
+    /* User must not provide more input after the first FINISH: */
+    if (s->status == FINISH_STATE && strm->avail_in != 0) {
+        ERR_RETURN(strm, Z_BUF_ERROR);
+    }
+
+    /* Start a new block or continue the current one.
+     */
+    if (strm->avail_in != 0 || s->lookahead != 0 ||
+        (flush != Z_NO_FLUSH && s->status != FINISH_STATE)) {
+        block_state bstate;
+
+        bstate = s->strategy == Z_HUFFMAN_ONLY ? deflate_huff(s, flush) :
+                    (s->strategy == Z_RLE ? deflate_rle(s, flush) :
+                        (*(configuration_table[s->level].func))(s, flush));
+
+        if (bstate == finish_started || bstate == finish_done) {
+            s->status = FINISH_STATE;
+        }
+        if (bstate == need_more || bstate == finish_started) {
+            if (strm->avail_out == 0) {
+                s->last_flush = -1; /* avoid BUF_ERROR next call, see above */
+            }
+            return Z_OK;
+            /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
+             * of deflate should use the same flush parameter to make sure
+             * that the flush is complete. So we don't have to output an
+             * empty block here, this will be done at next call. This also
+             * ensures that for a very small output buffer, we emit at most
+             * one empty block.
+             */
+        }
+        if (bstate == block_done) {
+            if (flush == Z_PARTIAL_FLUSH) {
+                _tr_align(s);
+            } else if (flush != Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */
+                _tr_stored_block(s, (char*)0, 0L, 0);
+                /* For a full flush, this empty block will be recognized
+                 * as a special marker by inflate_sync().
+                 */
+                if (flush == Z_FULL_FLUSH) {
+                    CLEAR_HASH(s);             /* forget history */
+                    if (s->lookahead == 0) {
+                        s->strstart = 0;
+                        s->block_start = 0L;
+                        s->insert = 0;
+                    }
+                }
+            }
+            flush_pending(strm);
+            if (strm->avail_out == 0) {
+              s->last_flush = -1; /* avoid BUF_ERROR at next call, see above */
+              return Z_OK;
+            }
+        }
+    }
+    Assert(strm->avail_out > 0, "bug2");
+
+    if (flush != Z_FINISH) return Z_OK;
+    if (s->wrap <= 0) return Z_STREAM_END;
+
+    /* Write the trailer */
+#ifdef GZIP
+    if (s->wrap == 2) {
+        put_byte(s, (Byte)(strm->adler & 0xff));
+        put_byte(s, (Byte)((strm->adler >> 8) & 0xff));
+        put_byte(s, (Byte)((strm->adler >> 16) & 0xff));
+        put_byte(s, (Byte)((strm->adler >> 24) & 0xff));
+        put_byte(s, (Byte)(strm->total_in & 0xff));
+        put_byte(s, (Byte)((strm->total_in >> 8) & 0xff));
+        put_byte(s, (Byte)((strm->total_in >> 16) & 0xff));
+        put_byte(s, (Byte)((strm->total_in >> 24) & 0xff));
+    }
+    else
+#endif
+    {
+        putShortMSB(s, (uInt)(strm->adler >> 16));
+        putShortMSB(s, (uInt)(strm->adler & 0xffff));
+    }
+    flush_pending(strm);
+    /* If avail_out is zero, the application will call deflate again
+     * to flush the rest.
+     */
+    if (s->wrap > 0) s->wrap = -s->wrap; /* write the trailer only once! */
+    return s->pending != 0 ? Z_OK : Z_STREAM_END;
+}
+
+/* ========================================================================= */
+int ZEXPORT deflateEnd (strm)
+    z_streamp strm;
+{
+    int status;
+
+    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+
+    status = strm->state->status;
+    if (status != INIT_STATE &&
+        status != EXTRA_STATE &&
+        status != NAME_STATE &&
+        status != COMMENT_STATE &&
+        status != HCRC_STATE &&
+        status != BUSY_STATE &&
+        status != FINISH_STATE) {
+      return Z_STREAM_ERROR;
+    }
+
+    /* Deallocate in reverse order of allocations: */
+    TRY_FREE(strm, strm->state->pending_buf);
+    TRY_FREE(strm, strm->state->head);
+    TRY_FREE(strm, strm->state->prev);
+    TRY_FREE(strm, strm->state->window);
+
+    ZFREE(strm, strm->state);
+    strm->state = Z_NULL;
+
+    return status == BUSY_STATE ? Z_DATA_ERROR : Z_OK;
+}
+
+/* =========================================================================
+ * Copy the source state to the destination state.
+ * To simplify the source, this is not supported for 16-bit MSDOS (which
+ * doesn't have enough memory anyway to duplicate compression states).
+ */
+int ZEXPORT deflateCopy (dest, source)
+    z_streamp dest;
+    z_streamp source;
+{
+#ifdef MAXSEG_64K
+    return Z_STREAM_ERROR;
+#else
+    deflate_state *ds;
+    deflate_state *ss;
+    ushf *overlay;
+
+
+    if (source == Z_NULL || dest == Z_NULL || source->state == Z_NULL) {
+        return Z_STREAM_ERROR;
+    }
+
+    ss = source->state;
+
+    zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream));
+
+    ds = (deflate_state *) ZALLOC(dest, 1, sizeof(deflate_state));
+    if (ds == Z_NULL) return Z_MEM_ERROR;
+    dest->state = (struct internal_state FAR *) ds;
+    zmemcpy((voidpf)ds, (voidpf)ss, sizeof(deflate_state));
+    ds->strm = dest;
+
+    ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte));
+    ds->prev   = (Posf *)  ZALLOC(dest, ds->w_size, sizeof(Pos));
+    ds->head   = (Posf *)  ZALLOC(dest, ds->hash_size, sizeof(Pos));
+    overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2);
+    ds->pending_buf = (uchf *) overlay;
+
+    if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL ||
+        ds->pending_buf == Z_NULL) {
+        deflateEnd (dest);
+        return Z_MEM_ERROR;
+    }
+    /* following zmemcpy do not work for 16-bit MSDOS */
+    zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte));
+    zmemcpy((voidpf)ds->prev, (voidpf)ss->prev, ds->w_size * sizeof(Pos));
+    zmemcpy((voidpf)ds->head, (voidpf)ss->head, ds->hash_size * sizeof(Pos));
+    zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size);
+
+    ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf);
+    ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush);
+    ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize;
+
+    ds->l_desc.dyn_tree = ds->dyn_ltree;
+    ds->d_desc.dyn_tree = ds->dyn_dtree;
+    ds->bl_desc.dyn_tree = ds->bl_tree;
+
+    return Z_OK;
+#endif /* MAXSEG_64K */
+}
+
+/* ===========================================================================
+ * Read a new buffer from the current input stream, update the adler32
+ * and total number of bytes read.  All deflate() input goes through
+ * this function so some applications may wish to modify it to avoid
+ * allocating a large strm->next_in buffer and copying from it.
+ * (See also flush_pending()).
+ */
+local int read_buf(strm, buf, size)
+    z_streamp strm;
+    Bytef *buf;
+    unsigned size;
+{
+    unsigned len = strm->avail_in;
+
+    if (len > size) len = size;
+    if (len == 0) return 0;
+
+    strm->avail_in  -= len;
+
+    zmemcpy(buf, strm->next_in, len);
+    if (strm->state->wrap == 1) {
+        strm->adler = adler32(strm->adler, buf, len);
+    }
+#ifdef GZIP
+    else if (strm->state->wrap == 2) {
+        strm->adler = crc32(strm->adler, buf, len);
+    }
+#endif
+    strm->next_in  += len;
+    strm->total_in += len;
+
+    return (int)len;
+}
+
+/* ===========================================================================
+ * Initialize the "longest match" routines for a new zlib stream
+ */
+local void lm_init (s)
+    deflate_state *s;
+{
+    s->window_size = (ulg)2L*s->w_size;
+
+    CLEAR_HASH(s);
+
+    /* Set the default configuration parameters:
+     */
+    s->max_lazy_match   = configuration_table[s->level].max_lazy;
+    s->good_match       = configuration_table[s->level].good_length;
+    s->nice_match       = configuration_table[s->level].nice_length;
+    s->max_chain_length = configuration_table[s->level].max_chain;
+
+    s->strstart = 0;
+    s->block_start = 0L;
+    s->lookahead = 0;
+    s->insert = 0;
+    s->match_length = s->prev_length = MIN_MATCH-1;
+    s->match_available = 0;
+    s->ins_h = 0;
+#ifndef FASTEST
+#ifdef ASMV
+    match_init(); /* initialize the asm code */
+#endif
+#endif
+}
+
+#ifndef FASTEST
+/* ===========================================================================
+ * Set match_start to the longest match starting at the given string and
+ * return its length. Matches shorter or equal to prev_length are discarded,
+ * in which case the result is equal to prev_length and match_start is
+ * garbage.
+ * IN assertions: cur_match is the head of the hash chain for the current
+ *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
+ * OUT assertion: the match length is not greater than s->lookahead.
+ */
+#ifndef ASMV
+/* For 80x86 and 680x0, an optimized version will be provided in match.asm or
+ * match.S. The code will be functionally equivalent.
+ */
+local uInt longest_match(s, cur_match)
+    deflate_state *s;
+    IPos cur_match;                             /* current match */
+{
+    unsigned chain_length = s->max_chain_length;/* max hash chain length */
+    register Bytef *scan = s->window + s->strstart; /* current string */
+    register Bytef *match;                       /* matched string */
+    register int len;                           /* length of current match */
+    int best_len = s->prev_length;              /* best match length so far */
+    int nice_match = s->nice_match;             /* stop if match long enough */
+    IPos limit = s->strstart > (IPos)MAX_DIST(s) ?
+        s->strstart - (IPos)MAX_DIST(s) : NIL;
+    /* Stop when cur_match becomes <= limit. To simplify the code,
+     * we prevent matches with the string of window index 0.
+     */
+    Posf *prev = s->prev;
+    uInt wmask = s->w_mask;
+
+#ifdef UNALIGNED_OK
+    /* Compare two bytes at a time. Note: this is not always beneficial.
+     * Try with and without -DUNALIGNED_OK to check.
+     */
+    register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1;
+    register ush scan_start = *(ushf*)scan;
+    register ush scan_end   = *(ushf*)(scan+best_len-1);
+#else
+    register Bytef *strend = s->window + s->strstart + MAX_MATCH;
+    register Byte scan_end1  = scan[best_len-1];
+    register Byte scan_end   = scan[best_len];
+#endif
+
+    /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
+     * It is easy to get rid of this optimization if necessary.
+     */
+    Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
+
+    /* Do not waste too much time if we already have a good match: */
+    if (s->prev_length >= s->good_match) {
+        chain_length >>= 2;
+    }
+    /* Do not look for matches beyond the end of the input. This is necessary
+     * to make deflate deterministic.
+     */
+    if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;
+
+    Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
+
+    do {
+        Assert(cur_match < s->strstart, "no future");
+        match = s->window + cur_match;
+
+        /* Skip to next match if the match length cannot increase
+         * or if the match length is less than 2.  Note that the checks below
+         * for insufficient lookahead only occur occasionally for performance
+         * reasons.  Therefore uninitialized memory will be accessed, and
+         * conditional jumps will be made that depend on those values.
+         * However the length of the match is limited to the lookahead, so
+         * the output of deflate is not affected by the uninitialized values.
+         */
+#if (defined(UNALIGNED_OK) && MAX_MATCH == 258)
+        /* This code assumes sizeof(unsigned short) == 2. Do not use
+         * UNALIGNED_OK if your compiler uses a different size.
+         */
+        if (*(ushf*)(match+best_len-1) != scan_end ||
+            *(ushf*)match != scan_start) continue;
+
+        /* It is not necessary to compare scan[2] and match[2] since they are
+         * always equal when the other bytes match, given that the hash keys
+         * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at
+         * strstart+3, +5, ... up to strstart+257. We check for insufficient
+         * lookahead only every 4th comparison; the 128th check will be made
+         * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is
+         * necessary to put more guard bytes at the end of the window, or
+         * to check more often for insufficient lookahead.
+         */
+        Assert(scan[2] == match[2], "scan[2]?");
+        scan++, match++;
+        do {
+        } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
+                 *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
+                 *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
+                 *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
+                 scan < strend);
+        /* The funny "do {}" generates better code on most compilers */
+
+        /* Here, scan <= window+strstart+257 */
+        Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
+        if (*scan == *match) scan++;
+
+        len = (MAX_MATCH - 1) - (int)(strend-scan);
+        scan = strend - (MAX_MATCH-1);
+
+#else /* UNALIGNED_OK */
+
+        if (match[best_len]   != scan_end  ||
+            match[best_len-1] != scan_end1 ||
+            *match            != *scan     ||
+            *++match          != scan[1])      continue;
+
+        /* The check at best_len-1 can be removed because it will be made
+         * again later. (This heuristic is not always a win.)
+         * It is not necessary to compare scan[2] and match[2] since they
+         * are always equal when the other bytes match, given that
+         * the hash keys are equal and that HASH_BITS >= 8.
+         */
+        scan += 2, match++;
+        Assert(*scan == *match, "match[2]?");
+
+        /* We check for insufficient lookahead only every 8th comparison;
+         * the 256th check will be made at strstart+258.
+         */
+        do {
+        } while (*++scan == *++match && *++scan == *++match &&
+                 *++scan == *++match && *++scan == *++match &&
+                 *++scan == *++match && *++scan == *++match &&
+                 *++scan == *++match && *++scan == *++match &&
+                 scan < strend);
+
+        Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
+
+        len = MAX_MATCH - (int)(strend - scan);
+        scan = strend - MAX_MATCH;
+
+#endif /* UNALIGNED_OK */
+
+        if (len > best_len) {
+            s->match_start = cur_match;
+            best_len = len;
+            if (len >= nice_match) break;
+#ifdef UNALIGNED_OK
+            scan_end = *(ushf*)(scan+best_len-1);
+#else
+            scan_end1  = scan[best_len-1];
+            scan_end   = scan[best_len];
+#endif
+        }
+    } while ((cur_match = prev[cur_match & wmask]) > limit
+             && --chain_length != 0);
+
+    if ((uInt)best_len <= s->lookahead) return (uInt)best_len;
+    return s->lookahead;
+}
+#endif /* ASMV */
+
+#else /* FASTEST */
+
+/* ---------------------------------------------------------------------------
+ * Optimized version for FASTEST only
+ */
+local uInt longest_match(s, cur_match)
+    deflate_state *s;
+    IPos cur_match;                             /* current match */
+{
+    register Bytef *scan = s->window + s->strstart; /* current string */
+    register Bytef *match;                       /* matched string */
+    register int len;                           /* length of current match */
+    register Bytef *strend = s->window + s->strstart + MAX_MATCH;
+
+    /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
+     * It is easy to get rid of this optimization if necessary.
+     */
+    Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
+
+    Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
+
+    Assert(cur_match < s->strstart, "no future");
+
+    match = s->window + cur_match;
+
+    /* Return failure if the match length is less than 2:
+     */
+    if (match[0] != scan[0] || match[1] != scan[1]) return MIN_MATCH-1;
+
+    /* The check at best_len-1 can be removed because it will be made
+     * again later. (This heuristic is not always a win.)
+     * It is not necessary to compare scan[2] and match[2] since they
+     * are always equal when the other bytes match, given that
+     * the hash keys are equal and that HASH_BITS >= 8.
+     */
+    scan += 2, match += 2;
+    Assert(*scan == *match, "match[2]?");
+
+    /* We check for insufficient lookahead only every 8th comparison;
+     * the 256th check will be made at strstart+258.
+     */
+    do {
+    } while (*++scan == *++match && *++scan == *++match &&
+             *++scan == *++match && *++scan == *++match &&
+             *++scan == *++match && *++scan == *++match &&
+             *++scan == *++match && *++scan == *++match &&
+             scan < strend);
+
+    Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
+
+    len = MAX_MATCH - (int)(strend - scan);
+
+    if (len < MIN_MATCH) return MIN_MATCH - 1;
+
+    s->match_start = cur_match;
+    return (uInt)len <= s->lookahead ? (uInt)len : s->lookahead;
+}
+
+#endif /* FASTEST */
+
+#ifdef DEBUG
+/* ===========================================================================
+ * Check that the match at match_start is indeed a match.
+ */
+local void check_match(s, start, match, length)
+    deflate_state *s;
+    IPos start, match;
+    int length;
+{
+    /* check that the match is indeed a match */
+    if (zmemcmp(s->window + match,
+                s->window + start, length) != EQUAL) {
+        fprintf(stderr, " start %u, match %u, length %d\n",
+                start, match, length);
+        do {
+            fprintf(stderr, "%c%c", s->window[match++], s->window[start++]);
+        } while (--length != 0);
+        z_error("invalid match");
+    }
+    if (z_verbose > 1) {
+        fprintf(stderr,"\\[%d,%d]", start-match, length);
+        do { putc(s->window[start++], stderr); } while (--length != 0);
+    }
+}
+#else
+#  define check_match(s, start, match, length)
+#endif /* DEBUG */
+
+/* ===========================================================================
+ * Fill the window when the lookahead becomes insufficient.
+ * Updates strstart and lookahead.
+ *
+ * IN assertion: lookahead < MIN_LOOKAHEAD
+ * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
+ *    At least one byte has been read, or avail_in == 0; reads are
+ *    performed for at least two bytes (required for the zip translate_eol
+ *    option -- not supported here).
+ */
+local void fill_window(s)
+    deflate_state *s;
+{
+    register unsigned n, m;
+    register Posf *p;
+    unsigned more;    /* Amount of free space at the end of the window. */
+    uInt wsize = s->w_size;
+
+    Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
+
+    do {
+        more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart);
+
+        /* Deal with !@#$% 64K limit: */
+        if (sizeof(int) <= 2) {
+            if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
+                more = wsize;
+
+            } else if (more == (unsigned)(-1)) {
+                /* Very unlikely, but possible on 16 bit machine if
+                 * strstart == 0 && lookahead == 1 (input done a byte at time)
+                 */
+                more--;
+            }
+        }
+
+        /* If the window is almost full and there is insufficient lookahead,
+         * move the upper half to the lower one to make room in the upper half.
+         */
+        if (s->strstart >= wsize+MAX_DIST(s)) {
+
+            zmemcpy(s->window, s->window+wsize, (unsigned)wsize);
+            s->match_start -= wsize;
+            s->strstart    -= wsize; /* we now have strstart >= MAX_DIST */
+            s->block_start -= (long) wsize;
+
+            /* Slide the hash table (could be avoided with 32 bit values
+               at the expense of memory usage). We slide even when level == 0
+               to keep the hash table consistent if we switch back to level > 0
+               later. (Using level 0 permanently is not an optimal usage of
+               zlib, so we don't care about this pathological case.)
+             */
+            n = s->hash_size;
+            p = &s->head[n];
+            do {
+                m = *--p;
+                *p = (Pos)(m >= wsize ? m-wsize : NIL);
+            } while (--n);
+
+            n = wsize;
+#ifndef FASTEST
+            p = &s->prev[n];
+            do {
+                m = *--p;
+                *p = (Pos)(m >= wsize ? m-wsize : NIL);
+                /* If n is not on any hash chain, prev[n] is garbage but
+                 * its value will never be used.
+                 */
+            } while (--n);
+#endif
+            more += wsize;
+        }
+        if (s->strm->avail_in == 0) break;
+
+        /* If there was no sliding:
+         *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
+         *    more == window_size - lookahead - strstart
+         * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
+         * => more >= window_size - 2*WSIZE + 2
+         * In the BIG_MEM or MMAP case (not yet supported),
+         *   window_size == input_size + MIN_LOOKAHEAD  &&
+         *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
+         * Otherwise, window_size == 2*WSIZE so more >= 2.
+         * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
+         */
+        Assert(more >= 2, "more < 2");
+
+        n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more);
+        s->lookahead += n;
+
+        /* Initialize the hash value now that we have some input: */
+        if (s->lookahead + s->insert >= MIN_MATCH) {
+            uInt str = s->strstart - s->insert;
+            s->ins_h = s->window[str];
+            UPDATE_HASH(s, s->ins_h, s->window[str + 1]);
+#if MIN_MATCH != 3
+            Call UPDATE_HASH() MIN_MATCH-3 more times
+#endif
+            while (s->insert) {
+                UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]);
+#ifndef FASTEST
+                s->prev[str & s->w_mask] = s->head[s->ins_h];
+#endif
+                s->head[s->ins_h] = (Pos)str;
+                str++;
+                s->insert--;
+                if (s->lookahead + s->insert < MIN_MATCH)
+                    break;
+            }
+        }
+        /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
+         * but this is not important since only literal bytes will be emitted.
+         */
+
+    } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0);
+
+    /* If the WIN_INIT bytes after the end of the current data have never been
+     * written, then zero those bytes in order to avoid memory check reports of
+     * the use of uninitialized (or uninitialised as Julian writes) bytes by
+     * the longest match routines.  Update the high water mark for the next
+     * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
+     * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
+     */
+    if (s->high_water < s->window_size) {
+        ulg curr = s->strstart + (ulg)(s->lookahead);
+        ulg init;
+
+        if (s->high_water < curr) {
+            /* Previous high water mark below current data -- zero WIN_INIT
+             * bytes or up to end of window, whichever is less.
+             */
+            init = s->window_size - curr;
+            if (init > WIN_INIT)
+                init = WIN_INIT;
+            zmemzero(s->window + curr, (unsigned)init);
+            s->high_water = curr + init;
+        }
+        else if (s->high_water < (ulg)curr + WIN_INIT) {
+            /* High water mark at or above current data, but below current data
+             * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
+             * to end of window, whichever is less.
+             */
+            init = (ulg)curr + WIN_INIT - s->high_water;
+            if (init > s->window_size - s->high_water)
+                init = s->window_size - s->high_water;
+            zmemzero(s->window + s->high_water, (unsigned)init);
+            s->high_water += init;
+        }
+    }
+
+    Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
+           "not enough room for search");
+}
+
+/* ===========================================================================
+ * Flush the current block, with given end-of-file flag.
+ * IN assertion: strstart is set to the end of the current match.
+ */
+#define FLUSH_BLOCK_ONLY(s, last) { \
+   _tr_flush_block(s, (s->block_start >= 0L ? \
+                   (charf *)&s->window[(unsigned)s->block_start] : \
+                   (charf *)Z_NULL), \
+                (ulg)((long)s->strstart - s->block_start), \
+                (last)); \
+   s->block_start = s->strstart; \
+   flush_pending(s->strm); \
+   Tracev((stderr,"[FLUSH]")); \
+}
+
+/* Same but force premature exit if necessary. */
+#define FLUSH_BLOCK(s, last) { \
+   FLUSH_BLOCK_ONLY(s, last); \
+   if (s->strm->avail_out == 0) return (last) ? finish_started : need_more; \
+}
+
+/* ===========================================================================
+ * Copy without compression as much as possible from the input stream, return
+ * the current block state.
+ * This function does not insert new strings in the dictionary since
+ * uncompressible data is probably not useful. This function is used
+ * only for the level=0 compression option.
+ * NOTE: this function should be optimized to avoid extra copying from
+ * window to pending_buf.
+ */
+local block_state deflate_stored(s, flush)
+    deflate_state *s;
+    int flush;
+{
+    /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
+     * to pending_buf_size, and each stored block has a 5 byte header:
+     */
+    ulg max_block_size = 0xffff;
+    ulg max_start;
+
+    if (max_block_size > s->pending_buf_size - 5) {
+        max_block_size = s->pending_buf_size - 5;
+    }
+
+    /* Copy as much as possible from input to output: */
+    for (;;) {
+        /* Fill the window as much as possible: */
+        if (s->lookahead <= 1) {
+
+            Assert(s->strstart < s->w_size+MAX_DIST(s) ||
+                   s->block_start >= (long)s->w_size, "slide too late");
+
+            fill_window(s);
+            if (s->lookahead == 0 && flush == Z_NO_FLUSH) return need_more;
+
+            if (s->lookahead == 0) break; /* flush the current block */
+        }
+        Assert(s->block_start >= 0L, "block gone");
+
+        s->strstart += s->lookahead;
+        s->lookahead = 0;
+
+        /* Emit a stored block if pending_buf will be full: */
+        max_start = s->block_start + max_block_size;
+        if (s->strstart == 0 || (ulg)s->strstart >= max_start) {
+            /* strstart == 0 is possible when wraparound on 16-bit machine */
+            s->lookahead = (uInt)(s->strstart - max_start);
+            s->strstart = (uInt)max_start;
+            FLUSH_BLOCK(s, 0);
+        }
+        /* Flush if we may have to slide, otherwise block_start may become
+         * negative and the data will be gone:
+         */
+        if (s->strstart - (uInt)s->block_start >= MAX_DIST(s)) {
+            FLUSH_BLOCK(s, 0);
+        }
+    }
+    s->insert = 0;
+    if (flush == Z_FINISH) {
+        FLUSH_BLOCK(s, 1);
+        return finish_done;
+    }
+    if ((long)s->strstart > s->block_start)
+        FLUSH_BLOCK(s, 0);
+    return block_done;
+}
+
+/* ===========================================================================
+ * Compress as much as possible from the input stream, return the current
+ * block state.
+ * This function does not perform lazy evaluation of matches and inserts
+ * new strings in the dictionary only for unmatched strings or for short
+ * matches. It is used only for the fast compression options.
+ */
+local block_state deflate_fast(s, flush)
+    deflate_state *s;
+    int flush;
+{
+    IPos hash_head;       /* head of the hash chain */
+    int bflush;           /* set if current block must be flushed */
+
+    for (;;) {
+        /* Make sure that we always have enough lookahead, except
+         * at the end of the input file. We need MAX_MATCH bytes
+         * for the next match, plus MIN_MATCH bytes to insert the
+         * string following the next match.
+         */
+        if (s->lookahead < MIN_LOOKAHEAD) {
+            fill_window(s);
+            if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) {
+                return need_more;
+            }
+            if (s->lookahead == 0) break; /* flush the current block */
+        }
+
+        /* Insert the string window[strstart .. strstart+2] in the
+         * dictionary, and set hash_head to the head of the hash chain:
+         */
+        hash_head = NIL;
+        if (s->lookahead >= MIN_MATCH) {
+            INSERT_STRING(s, s->strstart, hash_head);
+        }
+
+        /* Find the longest match, discarding those <= prev_length.
+         * At this point we have always match_length < MIN_MATCH
+         */
+        if (hash_head != NIL && s->strstart - hash_head <= MAX_DIST(s)) {
+            /* To simplify the code, we prevent matches with the string
+             * of window index 0 (in particular we have to avoid a match
+             * of the string with itself at the start of the input file).
+             */
+            s->match_length = longest_match (s, hash_head);
+            /* longest_match() sets match_start */
+        }
+        if (s->match_length >= MIN_MATCH) {
+            check_match(s, s->strstart, s->match_start, s->match_length);
+
+            _tr_tally_dist(s, s->strstart - s->match_start,
+                           s->match_length - MIN_MATCH, bflush);
+
+            s->lookahead -= s->match_length;
+
+            /* Insert new strings in the hash table only if the match length
+             * is not too large. This saves time but degrades compression.
+             */
+#ifndef FASTEST
+            if (s->match_length <= s->max_insert_length &&
+                s->lookahead >= MIN_MATCH) {
+                s->match_length--; /* string at strstart already in table */
+                do {
+                    s->strstart++;
+                    INSERT_STRING(s, s->strstart, hash_head);
+                    /* strstart never exceeds WSIZE-MAX_MATCH, so there are
+                     * always MIN_MATCH bytes ahead.
+                     */
+                } while (--s->match_length != 0);
+                s->strstart++;
+            } else
+#endif
+            {
+                s->strstart += s->match_length;
+                s->match_length = 0;
+                s->ins_h = s->window[s->strstart];
+                UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
+#if MIN_MATCH != 3
+                Call UPDATE_HASH() MIN_MATCH-3 more times
+#endif
+                /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
+                 * matter since it will be recomputed at next deflate call.
+                 */
+            }
+        } else {
+            /* No match, output a literal byte */
+            Tracevv((stderr,"%c", s->window[s->strstart]));
+            _tr_tally_lit (s, s->window[s->strstart], bflush);
+            s->lookahead--;
+            s->strstart++;
+        }
+        if (bflush) FLUSH_BLOCK(s, 0);
+    }
+    s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1;
+    if (flush == Z_FINISH) {
+        FLUSH_BLOCK(s, 1);
+        return finish_done;
+    }
+    if (s->last_lit)
+        FLUSH_BLOCK(s, 0);
+    return block_done;
+}
+
+#ifndef FASTEST
+/* ===========================================================================
+ * Same as above, but achieves better compression. We use a lazy
+ * evaluation for matches: a match is finally adopted only if there is
+ * no better match at the next window position.
+ */
+local block_state deflate_slow(s, flush)
+    deflate_state *s;
+    int flush;
+{
+    IPos hash_head;          /* head of hash chain */
+    int bflush;              /* set if current block must be flushed */
+
+    /* Process the input block. */
+    for (;;) {
+        /* Make sure that we always have enough lookahead, except
+         * at the end of the input file. We need MAX_MATCH bytes
+         * for the next match, plus MIN_MATCH bytes to insert the
+         * string following the next match.
+         */
+        if (s->lookahead < MIN_LOOKAHEAD) {
+            fill_window(s);
+            if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) {
+                return need_more;
+            }
+            if (s->lookahead == 0) break; /* flush the current block */
+        }
+
+        /* Insert the string window[strstart .. strstart+2] in the
+         * dictionary, and set hash_head to the head of the hash chain:
+         */
+        hash_head = NIL;
+        if (s->lookahead >= MIN_MATCH) {
+            INSERT_STRING(s, s->strstart, hash_head);
+        }
+
+        /* Find the longest match, discarding those <= prev_length.
+         */
+        s->prev_length = s->match_length, s->prev_match = s->match_start;
+        s->match_length = MIN_MATCH-1;
+
+        if (hash_head != NIL && s->prev_length < s->max_lazy_match &&
+            s->strstart - hash_head <= MAX_DIST(s)) {
+            /* To simplify the code, we prevent matches with the string
+             * of window index 0 (in particular we have to avoid a match
+             * of the string with itself at the start of the input file).
+             */
+            s->match_length = longest_match (s, hash_head);
+            /* longest_match() sets match_start */
+
+            if (s->match_length <= 5 && (s->strategy == Z_FILTERED
+#if TOO_FAR <= 32767
+                || (s->match_length == MIN_MATCH &&
+                    s->strstart - s->match_start > TOO_FAR)
+#endif
+                )) {
+
+                /* If prev_match is also MIN_MATCH, match_start is garbage
+                 * but we will ignore the current match anyway.
+                 */
+                s->match_length = MIN_MATCH-1;
+            }
+        }
+        /* If there was a match at the previous step and the current
+         * match is not better, output the previous match:
+         */
+        if (s->prev_length >= MIN_MATCH && s->match_length <= s->prev_length) {
+            uInt max_insert = s->strstart + s->lookahead - MIN_MATCH;
+            /* Do not insert strings in hash table beyond this. */
+
+            check_match(s, s->strstart-1, s->prev_match, s->prev_length);
+
+            _tr_tally_dist(s, s->strstart -1 - s->prev_match,
+                           s->prev_length - MIN_MATCH, bflush);
+
+            /* Insert in hash table all strings up to the end of the match.
+             * strstart-1 and strstart are already inserted. If there is not
+             * enough lookahead, the last two strings are not inserted in
+             * the hash table.
+             */
+            s->lookahead -= s->prev_length-1;
+            s->prev_length -= 2;
+            do {
+                if (++s->strstart <= max_insert) {
+                    INSERT_STRING(s, s->strstart, hash_head);
+                }
+            } while (--s->prev_length != 0);
+            s->match_available = 0;
+            s->match_length = MIN_MATCH-1;
+            s->strstart++;
+
+            if (bflush) FLUSH_BLOCK(s, 0);
+
+        } else if (s->match_available) {
+            /* If there was no match at the previous position, output a
+             * single literal. If there was a match but the current match
+             * is longer, truncate the previous match to a single literal.
+             */
+            Tracevv((stderr,"%c", s->window[s->strstart-1]));
+            _tr_tally_lit(s, s->window[s->strstart-1], bflush);
+            if (bflush) {
+                FLUSH_BLOCK_ONLY(s, 0);
+            }
+            s->strstart++;
+            s->lookahead--;
+            if (s->strm->avail_out == 0) return need_more;
+        } else {
+            /* There is no previous match to compare with, wait for
+             * the next step to decide.
+             */
+            s->match_available = 1;
+            s->strstart++;
+            s->lookahead--;
+        }
+    }
+    Assert (flush != Z_NO_FLUSH, "no flush?");
+    if (s->match_available) {
+        Tracevv((stderr,"%c", s->window[s->strstart-1]));
+        _tr_tally_lit(s, s->window[s->strstart-1], bflush);
+        s->match_available = 0;
+    }
+    s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1;
+    if (flush == Z_FINISH) {
+        FLUSH_BLOCK(s, 1);
+        return finish_done;
+    }
+    if (s->last_lit)
+        FLUSH_BLOCK(s, 0);
+    return block_done;
+}
+#endif /* FASTEST */
+
+/* ===========================================================================
+ * For Z_RLE, simply look for runs of bytes, generate matches only of distance
+ * one.  Do not maintain a hash table.  (It will be regenerated if this run of
+ * deflate switches away from Z_RLE.)
+ */
+local block_state deflate_rle(s, flush)
+    deflate_state *s;
+    int flush;
+{
+    int bflush;             /* set if current block must be flushed */
+    uInt prev;              /* byte at distance one to match */
+    Bytef *scan, *strend;   /* scan goes up to strend for length of run */
+
+    for (;;) {
+        /* Make sure that we always have enough lookahead, except
+         * at the end of the input file. We need MAX_MATCH bytes
+         * for the longest run, plus one for the unrolled loop.
+         */
+        if (s->lookahead <= MAX_MATCH) {
+            fill_window(s);
+            if (s->lookahead <= MAX_MATCH && flush == Z_NO_FLUSH) {
+                return need_more;
+            }
+            if (s->lookahead == 0) break; /* flush the current block */
+        }
+
+        /* See how many times the previous byte repeats */
+        s->match_length = 0;
+        if (s->lookahead >= MIN_MATCH && s->strstart > 0) {
+            scan = s->window + s->strstart - 1;
+            prev = *scan;
+            if (prev == *++scan && prev == *++scan && prev == *++scan) {
+                strend = s->window + s->strstart + MAX_MATCH;
+                do {
+                } while (prev == *++scan && prev == *++scan &&
+                         prev == *++scan && prev == *++scan &&
+                         prev == *++scan && prev == *++scan &&
+                         prev == *++scan && prev == *++scan &&
+                         scan < strend);
+                s->match_length = MAX_MATCH - (int)(strend - scan);
+                if (s->match_length > s->lookahead)
+                    s->match_length = s->lookahead;
+            }
+            Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
+        }
+
+        /* Emit match if have run of MIN_MATCH or longer, else emit literal */
+        if (s->match_length >= MIN_MATCH) {
+            check_match(s, s->strstart, s->strstart - 1, s->match_length);
+
+            _tr_tally_dist(s, 1, s->match_length - MIN_MATCH, bflush);
+
+            s->lookahead -= s->match_length;
+            s->strstart += s->match_length;
+            s->match_length = 0;
+        } else {
+            /* No match, output a literal byte */
+            Tracevv((stderr,"%c", s->window[s->strstart]));
+            _tr_tally_lit (s, s->window[s->strstart], bflush);
+            s->lookahead--;
+            s->strstart++;
+        }
+        if (bflush) FLUSH_BLOCK(s, 0);
+    }
+    s->insert = 0;
+    if (flush == Z_FINISH) {
+        FLUSH_BLOCK(s, 1);
+        return finish_done;
+    }
+    if (s->last_lit)
+        FLUSH_BLOCK(s, 0);
+    return block_done;
+}
+
+/* ===========================================================================
+ * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
+ * (It will be regenerated if this run of deflate switches away from Huffman.)
+ */
+local block_state deflate_huff(s, flush)
+    deflate_state *s;
+    int flush;
+{
+    int bflush;             /* set if current block must be flushed */
+
+    for (;;) {
+        /* Make sure that we have a literal to write. */
+        if (s->lookahead == 0) {
+            fill_window(s);
+            if (s->lookahead == 0) {
+                if (flush == Z_NO_FLUSH)
+                    return need_more;
+                break;      /* flush the current block */
+            }
+        }
+
+        /* Output a literal byte */
+        s->match_length = 0;
+        Tracevv((stderr,"%c", s->window[s->strstart]));
+        _tr_tally_lit (s, s->window[s->strstart], bflush);
+        s->lookahead--;
+        s->strstart++;
+        if (bflush) FLUSH_BLOCK(s, 0);
+    }
+    s->insert = 0;
+    if (flush == Z_FINISH) {
+        FLUSH_BLOCK(s, 1);
+        return finish_done;
+    }
+    if (s->last_lit)
+        FLUSH_BLOCK(s, 0);
+    return block_done;
+}
Index: uKadecot/trunk/tools/zlib/deflate.h
===================================================================
--- uKadecot/trunk/tools/zlib/deflate.h	(revision 101)
+++ uKadecot/trunk/tools/zlib/deflate.h	(revision 101)
@@ -0,0 +1,346 @@
+/* deflate.h -- internal compression state
+ * Copyright (C) 1995-2012 Jean-loup Gailly
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/* WARNING: this file should *not* be used by applications. It is
+   part of the implementation of the compression library and is
+   subject to change. Applications should only use zlib.h.
+ */
+
+/* @(#) $Id$ */
+
+#ifndef DEFLATE_H
+#define DEFLATE_H
+
+#include "zutil.h"
+
+/* define NO_GZIP when compiling if you want to disable gzip header and
+   trailer creation by deflate().  NO_GZIP would be used to avoid linking in
+   the crc code when it is not needed.  For shared libraries, gzip encoding
+   should be left enabled. */
+#ifndef NO_GZIP
+#  define GZIP
+#endif
+
+/* ===========================================================================
+ * Internal compression state.
+ */
+
+#define LENGTH_CODES 29
+/* number of length codes, not counting the special END_BLOCK code */
+
+#define LITERALS  256
+/* number of literal bytes 0..255 */
+
+#define L_CODES (LITERALS+1+LENGTH_CODES)
+/* number of Literal or Length codes, including the END_BLOCK code */
+
+#define D_CODES   30
+/* number of distance codes */
+
+#define BL_CODES  19
+/* number of codes used to transfer the bit lengths */
+
+#define HEAP_SIZE (2*L_CODES+1)
+/* maximum heap size */
+
+#define MAX_BITS 15
+/* All codes must not exceed MAX_BITS bits */
+
+#define Buf_size 16
+/* size of bit buffer in bi_buf */
+
+#define INIT_STATE    42
+#define EXTRA_STATE   69
+#define NAME_STATE    73
+#define COMMENT_STATE 91
+#define HCRC_STATE   103
+#define BUSY_STATE   113
+#define FINISH_STATE 666
+/* Stream status */
+
+
+/* Data structure describing a single value and its code string. */
+typedef struct ct_data_s {
+    union {
+        ush  freq;       /* frequency count */
+        ush  code;       /* bit string */
+    } fc;
+    union {
+        ush  dad;        /* father node in Huffman tree */
+        ush  len;        /* length of bit string */
+    } dl;
+} FAR ct_data;
+
+#define Freq fc.freq
+#define Code fc.code
+#define Dad  dl.dad
+#define Len  dl.len
+
+typedef struct static_tree_desc_s  static_tree_desc;
+
+typedef struct tree_desc_s {
+    ct_data *dyn_tree;           /* the dynamic tree */
+    int     max_code;            /* largest code with non zero frequency */
+    static_tree_desc *stat_desc; /* the corresponding static tree */
+} FAR tree_desc;
+
+typedef ush Pos;
+typedef Pos FAR Posf;
+typedef unsigned IPos;
+
+/* A Pos is an index in the character window. We use short instead of int to
+ * save space in the various tables. IPos is used only for parameter passing.
+ */
+
+typedef struct internal_state {
+    z_streamp strm;      /* pointer back to this zlib stream */
+    int   status;        /* as the name implies */
+    Bytef *pending_buf;  /* output still pending */
+    ulg   pending_buf_size; /* size of pending_buf */
+    Bytef *pending_out;  /* next pending byte to output to the stream */
+    uInt   pending;      /* nb of bytes in the pending buffer */
+    int   wrap;          /* bit 0 true for zlib, bit 1 true for gzip */
+    gz_headerp  gzhead;  /* gzip header information to write */
+    uInt   gzindex;      /* where in extra, name, or comment */
+    Byte  method;        /* can only be DEFLATED */
+    int   last_flush;    /* value of flush param for previous deflate call */
+
+                /* used by deflate.c: */
+
+    uInt  w_size;        /* LZ77 window size (32K by default) */
+    uInt  w_bits;        /* log2(w_size)  (8..16) */
+    uInt  w_mask;        /* w_size - 1 */
+
+    Bytef *window;
+    /* Sliding window. Input bytes are read into the second half of the window,
+     * and move to the first half later to keep a dictionary of at least wSize
+     * bytes. With this organization, matches are limited to a distance of
+     * wSize-MAX_MATCH bytes, but this ensures that IO is always
+     * performed with a length multiple of the block size. Also, it limits
+     * the window size to 64K, which is quite useful on MSDOS.
+     * To do: use the user input buffer as sliding window.
+     */
+
+    ulg window_size;
+    /* Actual size of window: 2*wSize, except when the user input buffer
+     * is directly used as sliding window.
+     */
+
+    Posf *prev;
+    /* Link to older string with same hash index. To limit the size of this
+     * array to 64K, this link is maintained only for the last 32K strings.
+     * An index in this array is thus a window index modulo 32K.
+     */
+
+    Posf *head; /* Heads of the hash chains or NIL. */
+
+    uInt  ins_h;          /* hash index of string to be inserted */
+    uInt  hash_size;      /* number of elements in hash table */
+    uInt  hash_bits;      /* log2(hash_size) */
+    uInt  hash_mask;      /* hash_size-1 */
+
+    uInt  hash_shift;
+    /* Number of bits by which ins_h must be shifted at each input
+     * step. It must be such that after MIN_MATCH steps, the oldest
+     * byte no longer takes part in the hash key, that is:
+     *   hash_shift * MIN_MATCH >= hash_bits
+     */
+
+    long block_start;
+    /* Window position at the beginning of the current output block. Gets
+     * negative when the window is moved backwards.
+     */
+
+    uInt match_length;           /* length of best match */
+    IPos prev_match;             /* previous match */
+    int match_available;         /* set if previous match exists */
+    uInt strstart;               /* start of string to insert */
+    uInt match_start;            /* start of matching string */
+    uInt lookahead;              /* number of valid bytes ahead in window */
+
+    uInt prev_length;
+    /* Length of the best match at previous step. Matches not greater than this
+     * are discarded. This is used in the lazy match evaluation.
+     */
+
+    uInt max_chain_length;
+    /* To speed up deflation, hash chains are never searched beyond this
+     * length.  A higher limit improves compression ratio but degrades the
+     * speed.
+     */
+
+    uInt max_lazy_match;
+    /* Attempt to find a better match only when the current match is strictly
+     * smaller than this value. This mechanism is used only for compression
+     * levels >= 4.
+     */
+#   define max_insert_length  max_lazy_match
+    /* Insert new strings in the hash table only if the match length is not
+     * greater than this length. This saves time but degrades compression.
+     * max_insert_length is used only for compression levels <= 3.
+     */
+
+    int level;    /* compression level (1..9) */
+    int strategy; /* favor or force Huffman coding*/
+
+    uInt good_match;
+    /* Use a faster search when the previous match is longer than this */
+
+    int nice_match; /* Stop searching when current match exceeds this */
+
+                /* used by trees.c: */
+    /* Didn't use ct_data typedef below to suppress compiler warning */
+    struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */
+    struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
+    struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */
+
+    struct tree_desc_s l_desc;               /* desc. for literal tree */
+    struct tree_desc_s d_desc;               /* desc. for distance tree */
+    struct tree_desc_s bl_desc;              /* desc. for bit length tree */
+
+    ush bl_count[MAX_BITS+1];
+    /* number of codes at each bit length for an optimal tree */
+
+    int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */
+    int heap_len;               /* number of elements in the heap */
+    int heap_max;               /* element of largest frequency */
+    /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
+     * The same heap array is used to build all trees.
+     */
+
+    uch depth[2*L_CODES+1];
+    /* Depth of each subtree used as tie breaker for trees of equal frequency
+     */
+
+    uchf *l_buf;          /* buffer for literals or lengths */
+
+    uInt  lit_bufsize;
+    /* Size of match buffer for literals/lengths.  There are 4 reasons for
+     * limiting lit_bufsize to 64K:
+     *   - frequencies can be kept in 16 bit counters
+     *   - if compression is not successful for the first block, all input
+     *     data is still in the window so we can still emit a stored block even
+     *     when input comes from standard input.  (This can also be done for
+     *     all blocks if lit_bufsize is not greater than 32K.)
+     *   - if compression is not successful for a file smaller than 64K, we can
+     *     even emit a stored file instead of a stored block (saving 5 bytes).
+     *     This is applicable only for zip (not gzip or zlib).
+     *   - creating new Huffman trees less frequently may not provide fast
+     *     adaptation to changes in the input data statistics. (Take for
+     *     example a binary file with poorly compressible code followed by
+     *     a highly compressible string table.) Smaller buffer sizes give
+     *     fast adaptation but have of course the overhead of transmitting
+     *     trees more frequently.
+     *   - I can't count above 4
+     */
+
+    uInt last_lit;      /* running index in l_buf */
+
+    ushf *d_buf;
+    /* Buffer for distances. To simplify the code, d_buf and l_buf have
+     * the same number of elements. To use different lengths, an extra flag
+     * array would be necessary.
+     */
+
+    ulg opt_len;        /* bit length of current block with optimal trees */
+    ulg static_len;     /* bit length of current block with static trees */
+    uInt matches;       /* number of string matches in current block */
+    uInt insert;        /* bytes at end of window left to insert */
+
+#ifdef DEBUG
+    ulg compressed_len; /* total bit length of compressed file mod 2^32 */
+    ulg bits_sent;      /* bit length of compressed data sent mod 2^32 */
+#endif
+
+    ush bi_buf;
+    /* Output buffer. bits are inserted starting at the bottom (least
+     * significant bits).
+     */
+    int bi_valid;
+    /* Number of valid bits in bi_buf.  All bits above the last valid bit
+     * are always zero.
+     */
+
+    ulg high_water;
+    /* High water mark offset in window for initialized bytes -- bytes above
+     * this are set to zero in order to avoid memory check warnings when
+     * longest match routines access bytes past the input.  This is then
+     * updated to the new high water mark.
+     */
+
+} FAR deflate_state;
+
+/* Output a byte on the stream.
+ * IN assertion: there is enough room in pending_buf.
+ */
+#define put_byte(s, c) {s->pending_buf[s->pending++] = (c);}
+
+
+#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
+/* Minimum amount of lookahead, except at the end of the input file.
+ * See deflate.c for comments about the MIN_MATCH+1.
+ */
+
+#define MAX_DIST(s)  ((s)->w_size-MIN_LOOKAHEAD)
+/* In order to simplify the code, particularly on 16 bit machines, match
+ * distances are limited to MAX_DIST instead of WSIZE.
+ */
+
+#define WIN_INIT MAX_MATCH
+/* Number of bytes after end of data in window to initialize in order to avoid
+   memory checker errors from longest match routines */
+
+        /* in trees.c */
+void ZLIB_INTERNAL _tr_init OF((deflate_state *s));
+int ZLIB_INTERNAL _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc));
+void ZLIB_INTERNAL _tr_flush_block OF((deflate_state *s, charf *buf,
+                        ulg stored_len, int last));
+void ZLIB_INTERNAL _tr_flush_bits OF((deflate_state *s));
+void ZLIB_INTERNAL _tr_align OF((deflate_state *s));
+void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf,
+                        ulg stored_len, int last));
+
+#define d_code(dist) \
+   ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)])
+/* Mapping from a distance to a distance code. dist is the distance - 1 and
+ * must not have side effects. _dist_code[256] and _dist_code[257] are never
+ * used.
+ */
+
+#ifndef DEBUG
+/* Inline versions of _tr_tally for speed: */
+
+#if defined(GEN_TREES_H) || !defined(STDC)
+  extern uch ZLIB_INTERNAL _length_code[];
+  extern uch ZLIB_INTERNAL _dist_code[];
+#else
+  extern const uch ZLIB_INTERNAL _length_code[];
+  extern const uch ZLIB_INTERNAL _dist_code[];
+#endif
+
+# define _tr_tally_lit(s, c, flush) \
+  { uch cc = (c); \
+    s->d_buf[s->last_lit] = 0; \
+    s->l_buf[s->last_lit++] = cc; \
+    s->dyn_ltree[cc].Freq++; \
+    flush = (s->last_lit == s->lit_bufsize-1); \
+   }
+# define _tr_tally_dist(s, distance, length, flush) \
+  { uch len = (length); \
+    ush dist = (distance); \
+    s->d_buf[s->last_lit] = dist; \
+    s->l_buf[s->last_lit++] = len; \
+    dist--; \
+    s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
+    s->dyn_dtree[d_code(dist)].Freq++; \
+    flush = (s->last_lit == s->lit_bufsize-1); \
+  }
+#else
+# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)
+# define _tr_tally_dist(s, distance, length, flush) \
+              flush = _tr_tally(s, distance, length)
+#endif
+
+#endif /* DEFLATE_H */
Index: uKadecot/trunk/tools/zlib/gzguts.h
===================================================================
--- uKadecot/trunk/tools/zlib/gzguts.h	(revision 101)
+++ uKadecot/trunk/tools/zlib/gzguts.h	(revision 101)
@@ -0,0 +1,209 @@
+/* gzguts.h -- zlib internal header definitions for gz* operations
+ * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+#ifdef _LARGEFILE64_SOURCE
+#  ifndef _LARGEFILE_SOURCE
+#    define _LARGEFILE_SOURCE 1
+#  endif
+#  ifdef _FILE_OFFSET_BITS
+#    undef _FILE_OFFSET_BITS
+#  endif
+#endif
+
+#ifdef HAVE_HIDDEN
+#  define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
+#else
+#  define ZLIB_INTERNAL
+#endif
+
+#include <stdio.h>
+#include "zlib.h"
+#ifdef STDC
+#  include <string.h>
+#  include <stdlib.h>
+#  include <limits.h>
+#endif
+#include <fcntl.h>
+
+#ifdef _WIN32
+#  include <stddef.h>
+#endif
+
+#if defined(__TURBOC__) || defined(_MSC_VER) || defined(_WIN32)
+#  include <io.h>
+#endif
+
+#ifdef WINAPI_FAMILY
+#  define open _open
+#  define read _read
+#  define write _write
+#  define close _close
+#endif
+
+#ifdef NO_DEFLATE       /* for compatibility with old definition */
+#  define NO_GZCOMPRESS
+#endif
+
+#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550)
+#  ifndef HAVE_VSNPRINTF
+#    define HAVE_VSNPRINTF
+#  endif
+#endif
+
+#if defined(__CYGWIN__)
+#  ifndef HAVE_VSNPRINTF
+#    define HAVE_VSNPRINTF
+#  endif
+#endif
+
+#if defined(MSDOS) && defined(__BORLANDC__) && (BORLANDC > 0x410)
+#  ifndef HAVE_VSNPRINTF
+#    define HAVE_VSNPRINTF
+#  endif
+#endif
+
+#ifndef HAVE_VSNPRINTF
+#  ifdef MSDOS
+/* vsnprintf may exist on some MS-DOS compilers (DJGPP?),
+   but for now we just assume it doesn't. */
+#    define NO_vsnprintf
+#  endif
+#  ifdef __TURBOC__
+#    define NO_vsnprintf
+#  endif
+#  ifdef WIN32
+/* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */
+#    if !defined(vsnprintf) && !defined(NO_vsnprintf)
+#      if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 )
+#         define vsnprintf _vsnprintf
+#      endif
+#    endif
+#  endif
+#  ifdef __SASC
+#    define NO_vsnprintf
+#  endif
+#  ifdef VMS
+#    define NO_vsnprintf
+#  endif
+#  ifdef __OS400__
+#    define NO_vsnprintf
+#  endif
+#  ifdef __MVS__
+#    define NO_vsnprintf
+#  endif
+#endif
+
+/* unlike snprintf (which is required in C99, yet still not supported by
+   Microsoft more than a decade later!), _snprintf does not guarantee null
+   termination of the result -- however this is only used in gzlib.c where
+   the result is assured to fit in the space provided */
+#ifdef _MSC_VER
+#  define snprintf _snprintf
+#endif
+
+#ifndef local
+#  define local static
+#endif
+/* compile with -Dlocal if your debugger can't find static symbols */
+
+/* gz* functions always use library allocation functions */
+#ifndef STDC
+  extern voidp  malloc OF((uInt size));
+  extern void   free   OF((voidpf ptr));
+#endif
+
+/* get errno and strerror definition */
+#if defined UNDER_CE
+#  include <windows.h>
+#  define zstrerror() gz_strwinerror((DWORD)GetLastError())
+#else
+#  ifndef NO_STRERROR
+#    include <errno.h>
+#    define zstrerror() strerror(errno)
+#  else
+#    define zstrerror() "stdio error (consult errno)"
+#  endif
+#endif
+
+/* provide prototypes for these when building zlib without LFS */
+#if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0
+    ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
+    ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int));
+    ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile));
+    ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
+#endif
+
+/* default memLevel */
+#if MAX_MEM_LEVEL >= 8
+#  define DEF_MEM_LEVEL 8
+#else
+#  define DEF_MEM_LEVEL  MAX_MEM_LEVEL
+#endif
+
+/* default i/o buffer size -- double this for output when reading (this and
+   twice this must be able to fit in an unsigned type) */
+#define GZBUFSIZE 8192
+
+/* gzip modes, also provide a little integrity check on the passed structure */
+#define GZ_NONE 0
+#define GZ_READ 7247
+#define GZ_WRITE 31153
+#define GZ_APPEND 1     /* mode set to GZ_WRITE after the file is opened */
+
+/* values for gz_state how */
+#define LOOK 0      /* look for a gzip header */
+#define COPY 1      /* copy input directly */
+#define GZIP 2      /* decompress a gzip stream */
+
+/* internal gzip file state data structure */
+typedef struct {
+        /* exposed contents for gzgetc() macro */
+    struct gzFile_s x;      /* "x" for exposed */
+                            /* x.have: number of bytes available at x.next */
+                            /* x.next: next output data to deliver or write */
+                            /* x.pos: current position in uncompressed data */
+        /* used for both reading and writing */
+    int mode;               /* see gzip modes above */
+    int fd;                 /* file descriptor */
+    char *path;             /* path or fd for error messages */
+    unsigned size;          /* buffer size, zero if not allocated yet */
+    unsigned want;          /* requested buffer size, default is GZBUFSIZE */
+    unsigned char *in;      /* input buffer */
+    unsigned char *out;     /* output buffer (double-sized when reading) */
+    int direct;             /* 0 if processing gzip, 1 if transparent */
+        /* just for reading */
+    int how;                /* 0: get header, 1: copy, 2: decompress */
+    z_off64_t start;        /* where the gzip data started, for rewinding */
+    int eof;                /* true if end of input file reached */
+    int past;               /* true if read requested past end */
+        /* just for writing */
+    int level;              /* compression level */
+    int strategy;           /* compression strategy */
+        /* seek request */
+    z_off64_t skip;         /* amount to skip (already rewound if backwards) */
+    int seek;               /* true if seek request pending */
+        /* error information */
+    int err;                /* error code */
+    char *msg;              /* error message */
+        /* zlib inflate or deflate stream */
+    z_stream strm;          /* stream structure in-place (not a pointer) */
+} gz_state;
+typedef gz_state FAR *gz_statep;
+
+/* shared functions */
+void ZLIB_INTERNAL gz_error OF((gz_statep, int, const char *));
+#if defined UNDER_CE
+char ZLIB_INTERNAL *gz_strwinerror OF((DWORD error));
+#endif
+
+/* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t
+   value -- needed when comparing unsigned to z_off64_t, which is signed
+   (possible z_off64_t types off_t, off64_t, and long are all signed) */
+#ifdef INT_MAX
+#  define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX)
+#else
+unsigned ZLIB_INTERNAL gz_intmax OF((void));
+#  define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax())
+#endif
Index: uKadecot/trunk/tools/zlib/infback.c
===================================================================
--- uKadecot/trunk/tools/zlib/infback.c	(revision 101)
+++ uKadecot/trunk/tools/zlib/infback.c	(revision 101)
@@ -0,0 +1,640 @@
+/* infback.c -- inflate using a call-back interface
+ * Copyright (C) 1995-2011 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/*
+   This code is largely copied from inflate.c.  Normally either infback.o or
+   inflate.o would be linked into an application--not both.  The interface
+   with inffast.c is retained so that optimized assembler-coded versions of
+   inflate_fast() can be used with either inflate.c or infback.c.
+ */
+
+#include "zutil.h"
+#include "inftrees.h"
+#include "inflate.h"
+#include "inffast.h"
+
+/* function prototypes */
+local void fixedtables OF((struct inflate_state FAR *state));
+
+/*
+   strm provides memory allocation functions in zalloc and zfree, or
+   Z_NULL to use the library memory allocation functions.
+
+   windowBits is in the range 8..15, and window is a user-supplied
+   window and output buffer that is 2**windowBits bytes.
+ */
+int ZEXPORT inflateBackInit_(strm, windowBits, window, version, stream_size)
+z_streamp strm;
+int windowBits;
+unsigned char FAR *window;
+const char *version;
+int stream_size;
+{
+    struct inflate_state FAR *state;
+
+    if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
+        stream_size != (int)(sizeof(z_stream)))
+        return Z_VERSION_ERROR;
+    if (strm == Z_NULL || window == Z_NULL ||
+        windowBits < 8 || windowBits > 15)
+        return Z_STREAM_ERROR;
+    strm->msg = Z_NULL;                 /* in case we return an error */
+    if (strm->zalloc == (alloc_func)0) {
+#ifdef Z_SOLO
+        return Z_STREAM_ERROR;
+#else
+        strm->zalloc = zcalloc;
+        strm->opaque = (voidpf)0;
+#endif
+    }
+    if (strm->zfree == (free_func)0)
+#ifdef Z_SOLO
+        return Z_STREAM_ERROR;
+#else
+    strm->zfree = zcfree;
+#endif
+    state = (struct inflate_state FAR *)ZALLOC(strm, 1,
+                                               sizeof(struct inflate_state));
+    if (state == Z_NULL) return Z_MEM_ERROR;
+    Tracev((stderr, "inflate: allocated\n"));
+    strm->state = (struct internal_state FAR *)state;
+    state->dmax = 32768U;
+    state->wbits = windowBits;
+    state->wsize = 1U << windowBits;
+    state->window = window;
+    state->wnext = 0;
+    state->whave = 0;
+    return Z_OK;
+}
+
+/*
+   Return state with length and distance decoding tables and index sizes set to
+   fixed code decoding.  Normally this returns fixed tables from inffixed.h.
+   If BUILDFIXED is defined, then instead this routine builds the tables the
+   first time it's called, and returns those tables the first time and
+   thereafter.  This reduces the size of the code by about 2K bytes, in
+   exchange for a little execution time.  However, BUILDFIXED should not be
+   used for threaded applications, since the rewriting of the tables and virgin
+   may not be thread-safe.
+ */
+local void fixedtables(state)
+struct inflate_state FAR *state;
+{
+#ifdef BUILDFIXED
+    static int virgin = 1;
+    static code *lenfix, *distfix;
+    static code fixed[544];
+
+    /* build fixed huffman tables if first call (may not be thread safe) */
+    if (virgin) {
+        unsigned sym, bits;
+        static code *next;
+
+        /* literal/length table */
+        sym = 0;
+        while (sym < 144) state->lens[sym++] = 8;
+        while (sym < 256) state->lens[sym++] = 9;
+        while (sym < 280) state->lens[sym++] = 7;
+        while (sym < 288) state->lens[sym++] = 8;
+        next = fixed;
+        lenfix = next;
+        bits = 9;
+        inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work);
+
+        /* distance table */
+        sym = 0;
+        while (sym < 32) state->lens[sym++] = 5;
+        distfix = next;
+        bits = 5;
+        inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work);
+
+        /* do this just once */
+        virgin = 0;
+    }
+#else /* !BUILDFIXED */
+#   include "inffixed.h"
+#endif /* BUILDFIXED */
+    state->lencode = lenfix;
+    state->lenbits = 9;
+    state->distcode = distfix;
+    state->distbits = 5;
+}
+
+/* Macros for inflateBack(): */
+
+/* Load returned state from inflate_fast() */
+#define LOAD() \
+    do { \
+        put = strm->next_out; \
+        left = strm->avail_out; \
+        next = strm->next_in; \
+        have = strm->avail_in; \
+        hold = state->hold; \
+        bits = state->bits; \
+    } while (0)
+
+/* Set state from registers for inflate_fast() */
+#define RESTORE() \
+    do { \
+        strm->next_out = put; \
+        strm->avail_out = left; \
+        strm->next_in = next; \
+        strm->avail_in = have; \
+        state->hold = hold; \
+        state->bits = bits; \
+    } while (0)
+
+/* Clear the input bit accumulator */
+#define INITBITS() \
+    do { \
+        hold = 0; \
+        bits = 0; \
+    } while (0)
+
+/* Assure that some input is available.  If input is requested, but denied,
+   then return a Z_BUF_ERROR from inflateBack(). */
+#define PULL() \
+    do { \
+        if (have == 0) { \
+            have = in(in_desc, &next); \
+            if (have == 0) { \
+                next = Z_NULL; \
+                ret = Z_BUF_ERROR; \
+                goto inf_leave; \
+            } \
+        } \
+    } while (0)
+
+/* Get a byte of input into the bit accumulator, or return from inflateBack()
+   with an error if there is no input available. */
+#define PULLBYTE() \
+    do { \
+        PULL(); \
+        have--; \
+        hold += (unsigned long)(*next++) << bits; \
+        bits += 8; \
+    } while (0)
+
+/* Assure that there are at least n bits in the bit accumulator.  If there is
+   not enough available input to do that, then return from inflateBack() with
+   an error. */
+#define NEEDBITS(n) \
+    do { \
+        while (bits < (unsigned)(n)) \
+            PULLBYTE(); \
+    } while (0)
+
+/* Return the low n bits of the bit accumulator (n < 16) */
+#define BITS(n) \
+    ((unsigned)hold & ((1U << (n)) - 1))
+
+/* Remove n bits from the bit accumulator */
+#define DROPBITS(n) \
+    do { \
+        hold >>= (n); \
+        bits -= (unsigned)(n); \
+    } while (0)
+
+/* Remove zero to seven bits as needed to go to a byte boundary */
+#define BYTEBITS() \
+    do { \
+        hold >>= bits & 7; \
+        bits -= bits & 7; \
+    } while (0)
+
+/* Assure that some output space is available, by writing out the window
+   if it's full.  If the write fails, return from inflateBack() with a
+   Z_BUF_ERROR. */
+#define ROOM() \
+    do { \
+        if (left == 0) { \
+            put = state->window; \
+            left = state->wsize; \
+            state->whave = left; \
+            if (out(out_desc, put, left)) { \
+                ret = Z_BUF_ERROR; \
+                goto inf_leave; \
+            } \
+        } \
+    } while (0)
+
+/*
+   strm provides the memory allocation functions and window buffer on input,
+   and provides information on the unused input on return.  For Z_DATA_ERROR
+   returns, strm will also provide an error message.
+
+   in() and out() are the call-back input and output functions.  When
+   inflateBack() needs more input, it calls in().  When inflateBack() has
+   filled the window with output, or when it completes with data in the
+   window, it calls out() to write out the data.  The application must not
+   change the provided input until in() is called again or inflateBack()
+   returns.  The application must not change the window/output buffer until
+   inflateBack() returns.
+
+   in() and out() are called with a descriptor parameter provided in the
+   inflateBack() call.  This parameter can be a structure that provides the
+   information required to do the read or write, as well as accumulated
+   information on the input and output such as totals and check values.
+
+   in() should return zero on failure.  out() should return non-zero on
+   failure.  If either in() or out() fails, than inflateBack() returns a
+   Z_BUF_ERROR.  strm->next_in can be checked for Z_NULL to see whether it
+   was in() or out() that caused in the error.  Otherwise,  inflateBack()
+   returns Z_STREAM_END on success, Z_DATA_ERROR for an deflate format
+   error, or Z_MEM_ERROR if it could not allocate memory for the state.
+   inflateBack() can also return Z_STREAM_ERROR if the input parameters
+   are not correct, i.e. strm is Z_NULL or the state was not initialized.
+ */
+int ZEXPORT inflateBack(strm, in, in_desc, out, out_desc)
+z_streamp strm;
+in_func in;
+void FAR *in_desc;
+out_func out;
+void FAR *out_desc;
+{
+    struct inflate_state FAR *state;
+    z_const unsigned char FAR *next;    /* next input */
+    unsigned char FAR *put;     /* next output */
+    unsigned have, left;        /* available input and output */
+    unsigned long hold;         /* bit buffer */
+    unsigned bits;              /* bits in bit buffer */
+    unsigned copy;              /* number of stored or match bytes to copy */
+    unsigned char FAR *from;    /* where to copy match bytes from */
+    code here;                  /* current decoding table entry */
+    code last;                  /* parent table entry */
+    unsigned len;               /* length to copy for repeats, bits to drop */
+    int ret;                    /* return code */
+    static const unsigned short order[19] = /* permutation of code lengths */
+        {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
+
+    /* Check that the strm exists and that the state was initialized */
+    if (strm == Z_NULL || strm->state == Z_NULL)
+        return Z_STREAM_ERROR;
+    state = (struct inflate_state FAR *)strm->state;
+
+    /* Reset the state */
+    strm->msg = Z_NULL;
+    state->mode = TYPE;
+    state->last = 0;
+    state->whave = 0;
+    next = strm->next_in;
+    have = next != Z_NULL ? strm->avail_in : 0;
+    hold = 0;
+    bits = 0;
+    put = state->window;
+    left = state->wsize;
+
+    /* Inflate until end of block marked as last */
+    for (;;)
+        switch (state->mode) {
+        case TYPE:
+            /* determine and dispatch block type */
+            if (state->last) {
+                BYTEBITS();
+                state->mode = DONE;
+                break;
+            }
+            NEEDBITS(3);
+            state->last = BITS(1);
+            DROPBITS(1);
+            switch (BITS(2)) {
+            case 0:                             /* stored block */
+                Tracev((stderr, "inflate:     stored block%s\n",
+                        state->last ? " (last)" : ""));
+                state->mode = STORED;
+                break;
+            case 1:                             /* fixed block */
+                fixedtables(state);
+                Tracev((stderr, "inflate:     fixed codes block%s\n",
+                        state->last ? " (last)" : ""));
+                state->mode = LEN;              /* decode codes */
+                break;
+            case 2:                             /* dynamic block */
+                Tracev((stderr, "inflate:     dynamic codes block%s\n",
+                        state->last ? " (last)" : ""));
+                state->mode = TABLE;
+                break;
+            case 3:
+                strm->msg = (char *)"invalid block type";
+                state->mode = BAD;
+            }
+            DROPBITS(2);
+            break;
+
+        case STORED:
+            /* get and verify stored block length */
+            BYTEBITS();                         /* go to byte boundary */
+            NEEDBITS(32);
+            if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) {
+                strm->msg = (char *)"invalid stored block lengths";
+                state->mode = BAD;
+                break;
+            }
+            state->length = (unsigned)hold & 0xffff;
+            Tracev((stderr, "inflate:       stored length %u\n",
+                    state->length));
+            INITBITS();
+
+            /* copy stored block from input to output */
+            while (state->length != 0) {
+                copy = state->length;
+                PULL();
+                ROOM();
+                if (copy > have) copy = have;
+                if (copy > left) copy = left;
+                zmemcpy(put, next, copy);
+                have -= copy;
+                next += copy;
+                left -= copy;
+                put += copy;
+                state->length -= copy;
+            }
+            Tracev((stderr, "inflate:       stored end\n"));
+            state->mode = TYPE;
+            break;
+
+        case TABLE:
+            /* get dynamic table entries descriptor */
+            NEEDBITS(14);
+            state->nlen = BITS(5) + 257;
+            DROPBITS(5);
+            state->ndist = BITS(5) + 1;
+            DROPBITS(5);
+            state->ncode = BITS(4) + 4;
+            DROPBITS(4);
+#ifndef PKZIP_BUG_WORKAROUND
+            if (state->nlen > 286 || state->ndist > 30) {
+                strm->msg = (char *)"too many length or distance symbols";
+                state->mode = BAD;
+                break;
+            }
+#endif
+            Tracev((stderr, "inflate:       table sizes ok\n"));
+
+            /* get code length code lengths (not a typo) */
+            state->have = 0;
+            while (state->have < state->ncode) {
+                NEEDBITS(3);
+                state->lens[order[state->have++]] = (unsigned short)BITS(3);
+                DROPBITS(3);
+            }
+            while (state->have < 19)
+                state->lens[order[state->have++]] = 0;
+            state->next = state->codes;
+            state->lencode = (code const FAR *)(state->next);
+            state->lenbits = 7;
+            ret = inflate_table(CODES, state->lens, 19, &(state->next),
+                                &(state->lenbits), state->work);
+            if (ret) {
+                strm->msg = (char *)"invalid code lengths set";
+                state->mode = BAD;
+                break;
+            }
+            Tracev((stderr, "inflate:       code lengths ok\n"));
+
+            /* get length and distance code code lengths */
+            state->have = 0;
+            while (state->have < state->nlen + state->ndist) {
+                for (;;) {
+                    here = state->lencode[BITS(state->lenbits)];
+                    if ((unsigned)(here.bits) <= bits) break;
+                    PULLBYTE();
+                }
+                if (here.val < 16) {
+                    DROPBITS(here.bits);
+                    state->lens[state->have++] = here.val;
+                }
+                else {
+                    if (here.val == 16) {
+                        NEEDBITS(here.bits + 2);
+                        DROPBITS(here.bits);
+                        if (state->have == 0) {
+                            strm->msg = (char *)"invalid bit length repeat";
+                            state->mode = BAD;
+                            break;
+                        }
+                        len = (unsigned)(state->lens[state->have - 1]);
+                        copy = 3 + BITS(2);
+                        DROPBITS(2);
+                    }
+                    else if (here.val == 17) {
+                        NEEDBITS(here.bits + 3);
+                        DROPBITS(here.bits);
+                        len = 0;
+                        copy = 3 + BITS(3);
+                        DROPBITS(3);
+                    }
+                    else {
+                        NEEDBITS(here.bits + 7);
+                        DROPBITS(here.bits);
+                        len = 0;
+                        copy = 11 + BITS(7);
+                        DROPBITS(7);
+                    }
+                    if (state->have + copy > state->nlen + state->ndist) {
+                        strm->msg = (char *)"invalid bit length repeat";
+                        state->mode = BAD;
+                        break;
+                    }
+                    while (copy--)
+                        state->lens[state->have++] = (unsigned short)len;
+                }
+            }
+
+            /* handle error breaks in while */
+            if (state->mode == BAD) break;
+
+            /* check for end-of-block code (better have one) */
+            if (state->lens[256] == 0) {
+                strm->msg = (char *)"invalid code -- missing end-of-block";
+                state->mode = BAD;
+                break;
+            }
+
+            /* build code tables -- note: do not change the lenbits or distbits
+               values here (9 and 6) without reading the comments in inftrees.h
+               concerning the ENOUGH constants, which depend on those values */
+            state->next = state->codes;
+            state->lencode = (code const FAR *)(state->next);
+            state->lenbits = 9;
+            ret = inflate_table(LENS, state->lens, state->nlen, &(state->next),
+                                &(state->lenbits), state->work);
+            if (ret) {
+                strm->msg = (char *)"invalid literal/lengths set";
+                state->mode = BAD;
+                break;
+            }
+            state->distcode = (code const FAR *)(state->next);
+            state->distbits = 6;
+            ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist,
+                            &(state->next), &(state->distbits), state->work);
+            if (ret) {
+                strm->msg = (char *)"invalid distances set";
+                state->mode = BAD;
+                break;
+            }
+            Tracev((stderr, "inflate:       codes ok\n"));
+            state->mode = LEN;
+
+        case LEN:
+            /* use inflate_fast() if we have enough input and output */
+            if (have >= 6 && left >= 258) {
+                RESTORE();
+                if (state->whave < state->wsize)
+                    state->whave = state->wsize - left;
+                inflate_fast(strm, state->wsize);
+                LOAD();
+                break;
+            }
+
+            /* get a literal, length, or end-of-block code */
+            for (;;) {
+                here = state->lencode[BITS(state->lenbits)];
+                if ((unsigned)(here.bits) <= bits) break;
+                PULLBYTE();
+            }
+            if (here.op && (here.op & 0xf0) == 0) {
+                last = here;
+                for (;;) {
+                    here = state->lencode[last.val +
+                            (BITS(last.bits + last.op) >> last.bits)];
+                    if ((unsigned)(last.bits + here.bits) <= bits) break;
+                    PULLBYTE();
+                }
+                DROPBITS(last.bits);
+            }
+            DROPBITS(here.bits);
+            state->length = (unsigned)here.val;
+
+            /* process literal */
+            if (here.op == 0) {
+                Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+                        "inflate:         literal '%c'\n" :
+                        "inflate:         literal 0x%02x\n", here.val));
+                ROOM();
+                *put++ = (unsigned char)(state->length);
+                left--;
+                state->mode = LEN;
+                break;
+            }
+
+            /* process end of block */
+            if (here.op & 32) {
+                Tracevv((stderr, "inflate:         end of block\n"));
+                state->mode = TYPE;
+                break;
+            }
+
+            /* invalid code */
+            if (here.op & 64) {
+                strm->msg = (char *)"invalid literal/length code";
+                state->mode = BAD;
+                break;
+            }
+
+            /* length code -- get extra bits, if any */
+            state->extra = (unsigned)(here.op) & 15;
+            if (state->extra != 0) {
+                NEEDBITS(state->extra);
+                state->length += BITS(state->extra);
+                DROPBITS(state->extra);
+            }
+            Tracevv((stderr, "inflate:         length %u\n", state->length));
+
+            /* get distance code */
+            for (;;) {
+                here = state->distcode[BITS(state->distbits)];
+                if ((unsigned)(here.bits) <= bits) break;
+                PULLBYTE();
+            }
+            if ((here.op & 0xf0) == 0) {
+                last = here;
+                for (;;) {
+                    here = state->distcode[last.val +
+                            (BITS(last.bits + last.op) >> last.bits)];
+                    if ((unsigned)(last.bits + here.bits) <= bits) break;
+                    PULLBYTE();
+                }
+                DROPBITS(last.bits);
+            }
+            DROPBITS(here.bits);
+            if (here.op & 64) {
+                strm->msg = (char *)"invalid distance code";
+                state->mode = BAD;
+                break;
+            }
+            state->offset = (unsigned)here.val;
+
+            /* get distance extra bits, if any */
+            state->extra = (unsigned)(here.op) & 15;
+            if (state->extra != 0) {
+                NEEDBITS(state->extra);
+                state->offset += BITS(state->extra);
+                DROPBITS(state->extra);
+            }
+            if (state->offset > state->wsize - (state->whave < state->wsize ?
+                                                left : 0)) {
+                strm->msg = (char *)"invalid distance too far back";
+                state->mode = BAD;
+                break;
+            }
+            Tracevv((stderr, "inflate:         distance %u\n", state->offset));
+
+            /* copy match from window to output */
+            do {
+                ROOM();
+                copy = state->wsize - state->offset;
+                if (copy < left) {
+                    from = put + copy;
+                    copy = left - copy;
+                }
+                else {
+                    from = put - state->offset;
+                    copy = left;
+                }
+                if (copy > state->length) copy = state->length;
+                state->length -= copy;
+                left -= copy;
+                do {
+                    *put++ = *from++;
+                } while (--copy);
+            } while (state->length != 0);
+            break;
+
+        case DONE:
+            /* inflate stream terminated properly -- write leftover output */
+            ret = Z_STREAM_END;
+            if (left < state->wsize) {
+                if (out(out_desc, state->window, state->wsize - left))
+                    ret = Z_BUF_ERROR;
+            }
+            goto inf_leave;
+
+        case BAD:
+            ret = Z_DATA_ERROR;
+            goto inf_leave;
+
+        default:                /* can't happen, but makes compilers happy */
+            ret = Z_STREAM_ERROR;
+            goto inf_leave;
+        }
+
+    /* Return unused input */
+  inf_leave:
+    strm->next_in = next;
+    strm->avail_in = have;
+    return ret;
+}
+
+int ZEXPORT inflateBackEnd(strm)
+z_streamp strm;
+{
+    if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0)
+        return Z_STREAM_ERROR;
+    ZFREE(strm, strm->state);
+    strm->state = Z_NULL;
+    Tracev((stderr, "inflate: end\n"));
+    return Z_OK;
+}
Index: uKadecot/trunk/tools/zlib/inffast.c
===================================================================
--- uKadecot/trunk/tools/zlib/inffast.c	(revision 101)
+++ uKadecot/trunk/tools/zlib/inffast.c	(revision 101)
@@ -0,0 +1,340 @@
+/* inffast.c -- fast decoding
+ * Copyright (C) 1995-2008, 2010, 2013 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+#include "zutil.h"
+#include "inftrees.h"
+#include "inflate.h"
+#include "inffast.h"
+
+#ifndef ASMINF
+
+/* Allow machine dependent optimization for post-increment or pre-increment.
+   Based on testing to date,
+   Pre-increment preferred for:
+   - PowerPC G3 (Adler)
+   - MIPS R5000 (Randers-Pehrson)
+   Post-increment preferred for:
+   - none
+   No measurable difference:
+   - Pentium III (Anderson)
+   - M68060 (Nikl)
+ */
+#ifdef POSTINC
+#  define OFF 0
+#  define PUP(a) *(a)++
+#else
+#  define OFF 1
+#  define PUP(a) *++(a)
+#endif
+
+/*
+   Decode literal, length, and distance codes and write out the resulting
+   literal and match bytes until either not enough input or output is
+   available, an end-of-block is encountered, or a data error is encountered.
+   When large enough input and output buffers are supplied to inflate(), for
+   example, a 16K input buffer and a 64K output buffer, more than 95% of the
+   inflate execution time is spent in this routine.
+
+   Entry assumptions:
+
+        state->mode == LEN
+        strm->avail_in >= 6
+        strm->avail_out >= 258
+        start >= strm->avail_out
+        state->bits < 8
+
+   On return, state->mode is one of:
+
+        LEN -- ran out of enough output space or enough available input
+        TYPE -- reached end of block code, inflate() to interpret next block
+        BAD -- error in block data
+
+   Notes:
+
+    - The maximum input bits used by a length/distance pair is 15 bits for the
+      length code, 5 bits for the length extra, 15 bits for the distance code,
+      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
+      Therefore if strm->avail_in >= 6, then there is enough input to avoid
+      checking for available input while decoding.
+
+    - The maximum bytes that a single length/distance pair can output is 258
+      bytes, which is the maximum length that can be coded.  inflate_fast()
+      requires strm->avail_out >= 258 for each loop to avoid checking for
+      output space.
+ */
+void ZLIB_INTERNAL inflate_fast(strm, start)
+z_streamp strm;
+unsigned start;         /* inflate()'s starting value for strm->avail_out */
+{
+    struct inflate_state FAR *state;
+    z_const unsigned char FAR *in;      /* local strm->next_in */
+    z_const unsigned char FAR *last;    /* have enough input while in < last */
+    unsigned char FAR *out;     /* local strm->next_out */
+    unsigned char FAR *beg;     /* inflate()'s initial strm->next_out */
+    unsigned char FAR *end;     /* while out < end, enough space available */
+#ifdef INFLATE_STRICT
+    unsigned dmax;              /* maximum distance from zlib header */
+#endif
+    unsigned wsize;             /* window size or zero if not using window */
+    unsigned whave;             /* valid bytes in the window */
+    unsigned wnext;             /* window write index */
+    unsigned char FAR *window;  /* allocated sliding window, if wsize != 0 */
+    unsigned long hold;         /* local strm->hold */
+    unsigned bits;              /* local strm->bits */
+    code const FAR *lcode;      /* local strm->lencode */
+    code const FAR *dcode;      /* local strm->distcode */
+    unsigned lmask;             /* mask for first level of length codes */
+    unsigned dmask;             /* mask for first level of distance codes */
+    code here;                  /* retrieved table entry */
+    unsigned op;                /* code bits, operation, extra bits, or */
+                                /*  window position, window bytes to copy */
+    unsigned len;               /* match length, unused bytes */
+    unsigned dist;              /* match distance */
+    unsigned char FAR *from;    /* where to copy match from */
+
+    /* copy state to local variables */
+    state = (struct inflate_state FAR *)strm->state;
+    in = strm->next_in - OFF;
+    last = in + (strm->avail_in - 5);
+    out = strm->next_out - OFF;
+    beg = out - (start - strm->avail_out);
+    end = out + (strm->avail_out - 257);
+#ifdef INFLATE_STRICT
+    dmax = state->dmax;
+#endif
+    wsize = state->wsize;
+    whave = state->whave;
+    wnext = state->wnext;
+    window = state->window;
+    hold = state->hold;
+    bits = state->bits;
+    lcode = state->lencode;
+    dcode = state->distcode;
+    lmask = (1U << state->lenbits) - 1;
+    dmask = (1U << state->distbits) - 1;
+
+    /* decode literals and length/distances until end-of-block or not enough
+       input data or output space */
+    do {
+        if (bits < 15) {
+            hold += (unsigned long)(PUP(in)) << bits;
+            bits += 8;
+            hold += (unsigned long)(PUP(in)) << bits;
+            bits += 8;
+        }
+        here = lcode[hold & lmask];
+      dolen:
+        op = (unsigned)(here.bits);
+        hold >>= op;
+        bits -= op;
+        op = (unsigned)(here.op);
+        if (op == 0) {                          /* literal */
+            Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+                    "inflate:         literal '%c'\n" :
+                    "inflate:         literal 0x%02x\n", here.val));
+            PUP(out) = (unsigned char)(here.val);
+        }
+        else if (op & 16) {                     /* length base */
+            len = (unsigned)(here.val);
+            op &= 15;                           /* number of extra bits */
+            if (op) {
+                if (bits < op) {
+                    hold += (unsigned long)(PUP(in)) << bits;
+                    bits += 8;
+                }
+                len += (unsigned)hold & ((1U << op) - 1);
+                hold >>= op;
+                bits -= op;
+            }
+            Tracevv((stderr, "inflate:         length %u\n", len));
+            if (bits < 15) {
+                hold += (unsigned long)(PUP(in)) << bits;
+                bits += 8;
+                hold += (unsigned long)(PUP(in)) << bits;
+                bits += 8;
+            }
+            here = dcode[hold & dmask];
+          dodist:
+            op = (unsigned)(here.bits);
+            hold >>= op;
+            bits -= op;
+            op = (unsigned)(here.op);
+            if (op & 16) {                      /* distance base */
+                dist = (unsigned)(here.val);
+                op &= 15;                       /* number of extra bits */
+                if (bits < op) {
+                    hold += (unsigned long)(PUP(in)) << bits;
+                    bits += 8;
+                    if (bits < op) {
+                        hold += (unsigned long)(PUP(in)) << bits;
+                        bits += 8;
+                    }
+                }
+                dist += (unsigned)hold & ((1U << op) - 1);
+#ifdef INFLATE_STRICT
+                if (dist > dmax) {
+                    strm->msg = (char *)"invalid distance too far back";
+                    state->mode = BAD;
+                    break;
+                }
+#endif
+                hold >>= op;
+                bits -= op;
+                Tracevv((stderr, "inflate:         distance %u\n", dist));
+                op = (unsigned)(out - beg);     /* max distance in output */
+                if (dist > op) {                /* see if copy from window */
+                    op = dist - op;             /* distance back in window */
+                    if (op > whave) {
+                        if (state->sane) {
+                            strm->msg =
+                                (char *)"invalid distance too far back";
+                            state->mode = BAD;
+                            break;
+                        }
+#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+                        if (len <= op - whave) {
+                            do {
+                                PUP(out) = 0;
+                            } while (--len);
+                            continue;
+                        }
+                        len -= op - whave;
+                        do {
+                            PUP(out) = 0;
+                        } while (--op > whave);
+                        if (op == 0) {
+                            from = out - dist;
+                            do {
+                                PUP(out) = PUP(from);
+                            } while (--len);
+                            continue;
+                        }
+#endif
+                    }
+                    from = window - OFF;
+                    if (wnext == 0) {           /* very common case */
+                        from += wsize - op;
+                        if (op < len) {         /* some from window */
+                            len -= op;
+                            do {
+                                PUP(out) = PUP(from);
+                            } while (--op);
+                            from = out - dist;  /* rest from output */
+                        }
+                    }
+                    else if (wnext < op) {      /* wrap around window */
+                        from += wsize + wnext - op;
+                        op -= wnext;
+                        if (op < len) {         /* some from end of window */
+                            len -= op;
+                            do {
+                                PUP(out) = PUP(from);
+                            } while (--op);
+                            from = window - OFF;
+                            if (wnext < len) {  /* some from start of window */
+                                op = wnext;
+                                len -= op;
+                                do {
+                                    PUP(out) = PUP(from);
+                                } while (--op);
+                                from = out - dist;      /* rest from output */
+                            }
+                        }
+                    }
+                    else {                      /* contiguous in window */
+                        from += wnext - op;
+                        if (op < len) {         /* some from window */
+                            len -= op;
+                            do {
+                                PUP(out) = PUP(from);
+                            } while (--op);
+                            from = out - dist;  /* rest from output */
+                        }
+                    }
+                    while (len > 2) {
+                        PUP(out) = PUP(from);
+                        PUP(out) = PUP(from);
+                        PUP(out) = PUP(from);
+                        len -= 3;
+                    }
+                    if (len) {
+                        PUP(out) = PUP(from);
+                        if (len > 1)
+                            PUP(out) = PUP(from);
+                    }
+                }
+                else {
+                    from = out - dist;          /* copy direct from output */
+                    do {                        /* minimum length is three */
+                        PUP(out) = PUP(from);
+                        PUP(out) = PUP(from);
+                        PUP(out) = PUP(from);
+                        len -= 3;
+                    } while (len > 2);
+                    if (len) {
+                        PUP(out) = PUP(from);
+                        if (len > 1)
+                            PUP(out) = PUP(from);
+                    }
+                }
+            }
+            else if ((op & 64) == 0) {          /* 2nd level distance code */
+                here = dcode[here.val + (hold & ((1U << op) - 1))];
+                goto dodist;
+            }
+            else {
+                strm->msg = (char *)"invalid distance code";
+                state->mode = BAD;
+                break;
+            }
+        }
+        else if ((op & 64) == 0) {              /* 2nd level length code */
+            here = lcode[here.val + (hold & ((1U << op) - 1))];
+            goto dolen;
+        }
+        else if (op & 32) {                     /* end-of-block */
+            Tracevv((stderr, "inflate:         end of block\n"));
+            state->mode = TYPE;
+            break;
+        }
+        else {
+            strm->msg = (char *)"invalid literal/length code";
+            state->mode = BAD;
+            break;
+        }
+    } while (in < last && out < end);
+
+    /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
+    len = bits >> 3;
+    in -= len;
+    bits -= len << 3;
+    hold &= (1U << bits) - 1;
+
+    /* update state and return */
+    strm->next_in = in + OFF;
+    strm->next_out = out + OFF;
+    strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last));
+    strm->avail_out = (unsigned)(out < end ?
+                                 257 + (end - out) : 257 - (out - end));
+    state->hold = hold;
+    state->bits = bits;
+    return;
+}
+
+/*
+   inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe):
+   - Using bit fields for code structure
+   - Different op definition to avoid & for extra bits (do & for table bits)
+   - Three separate decoding do-loops for direct, window, and wnext == 0
+   - Special case for distance > 1 copies to do overlapped load and store copy
+   - Explicit branch predictions (based on measured branch probabilities)
+   - Deferring match copy and interspersed it with decoding subsequent codes
+   - Swapping literal/length else
+   - Swapping window/direct else
+   - Larger unrolled copy loops (three is about right)
+   - Moving len -= 3 statement into middle of loop
+ */
+
+#endif /* !ASMINF */
Index: uKadecot/trunk/tools/zlib/inffast.h
===================================================================
--- uKadecot/trunk/tools/zlib/inffast.h	(revision 101)
+++ uKadecot/trunk/tools/zlib/inffast.h	(revision 101)
@@ -0,0 +1,11 @@
+/* inffast.h -- header to use inffast.c
+ * Copyright (C) 1995-2003, 2010 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/* WARNING: this file should *not* be used by applications. It is
+   part of the implementation of the compression library and is
+   subject to change. Applications should only use zlib.h.
+ */
+
+void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start));
Index: uKadecot/trunk/tools/zlib/inffixed.h
===================================================================
--- uKadecot/trunk/tools/zlib/inffixed.h	(revision 101)
+++ uKadecot/trunk/tools/zlib/inffixed.h	(revision 101)
@@ -0,0 +1,94 @@
+    /* inffixed.h -- table for decoding fixed codes
+     * Generated automatically by makefixed().
+     */
+
+    /* WARNING: this file should *not* be used by applications.
+       It is part of the implementation of this library and is
+       subject to change. Applications should only use zlib.h.
+     */
+
+    static const code lenfix[512] = {
+        {96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48},
+        {0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128},
+        {0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59},
+        {0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176},
+        {0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20},
+        {21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100},
+        {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8},
+        {0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216},
+        {18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76},
+        {0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114},
+        {0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2},
+        {0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148},
+        {20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42},
+        {0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86},
+        {0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15},
+        {0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236},
+        {16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62},
+        {0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142},
+        {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31},
+        {0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162},
+        {0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25},
+        {0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105},
+        {0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4},
+        {0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202},
+        {17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69},
+        {0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125},
+        {0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13},
+        {0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195},
+        {19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35},
+        {0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91},
+        {0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19},
+        {0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246},
+        {16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55},
+        {0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135},
+        {0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99},
+        {0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190},
+        {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16},
+        {20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96},
+        {0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6},
+        {0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209},
+        {17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72},
+        {0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116},
+        {0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4},
+        {0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153},
+        {20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44},
+        {0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82},
+        {0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11},
+        {0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229},
+        {16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58},
+        {0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138},
+        {0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51},
+        {0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173},
+        {0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30},
+        {0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110},
+        {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0},
+        {0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195},
+        {16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65},
+        {0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121},
+        {0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9},
+        {0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258},
+        {19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37},
+        {0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93},
+        {0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23},
+        {0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251},
+        {16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51},
+        {0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131},
+        {0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67},
+        {0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183},
+        {0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23},
+        {64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103},
+        {0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9},
+        {0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223},
+        {18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79},
+        {0,9,255}
+    };
+
+    static const code distfix[32] = {
+        {16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025},
+        {21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193},
+        {18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385},
+        {19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577},
+        {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073},
+        {22,5,193},{64,5,0}
+    };
Index: uKadecot/trunk/tools/zlib/inflate.c
===================================================================
--- uKadecot/trunk/tools/zlib/inflate.c	(revision 101)
+++ uKadecot/trunk/tools/zlib/inflate.c	(revision 101)
@@ -0,0 +1,1512 @@
+/* inflate.c -- zlib decompression
+ * Copyright (C) 1995-2012 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/*
+ * Change history:
+ *
+ * 1.2.beta0    24 Nov 2002
+ * - First version -- complete rewrite of inflate to simplify code, avoid
+ *   creation of window when not needed, minimize use of window when it is
+ *   needed, make inffast.c even faster, implement gzip decoding, and to
+ *   improve code readability and style over the previous zlib inflate code
+ *
+ * 1.2.beta1    25 Nov 2002
+ * - Use pointers for available input and output checking in inffast.c
+ * - Remove input and output counters in inffast.c
+ * - Change inffast.c entry and loop from avail_in >= 7 to >= 6
+ * - Remove unnecessary second byte pull from length extra in inffast.c
+ * - Unroll direct copy to three copies per loop in inffast.c
+ *
+ * 1.2.beta2    4 Dec 2002
+ * - Change external routine names to reduce potential conflicts
+ * - Correct filename to inffixed.h for fixed tables in inflate.c
+ * - Make hbuf[] unsigned char to match parameter type in inflate.c
+ * - Change strm->next_out[-state->offset] to *(strm->next_out - state->offset)
+ *   to avoid negation problem on Alphas (64 bit) in inflate.c
+ *
+ * 1.2.beta3    22 Dec 2002
+ * - Add comments on state->bits assertion in inffast.c
+ * - Add comments on op field in inftrees.h
+ * - Fix bug in reuse of allocated window after inflateReset()
+ * - Remove bit fields--back to byte structure for speed
+ * - Remove distance extra == 0 check in inflate_fast()--only helps for lengths
+ * - Change post-increments to pre-increments in inflate_fast(), PPC biased?
+ * - Add compile time option, POSTINC, to use post-increments instead (Intel?)
+ * - Make MATCH copy in inflate() much faster for when inflate_fast() not used
+ * - Use local copies of stream next and avail values, as well as local bit
+ *   buffer and bit count in inflate()--for speed when inflate_fast() not used
+ *
+ * 1.2.beta4    1 Jan 2003
+ * - Split ptr - 257 statements in inflate_table() to avoid compiler warnings
+ * - Move a comment on output buffer sizes from inffast.c to inflate.c
+ * - Add comments in inffast.c to introduce the inflate_fast() routine
+ * - Rearrange window copies in inflate_fast() for speed and simplification
+ * - Unroll last copy for window match in inflate_fast()
+ * - Use local copies of window variables in inflate_fast() for speed
+ * - Pull out common wnext == 0 case for speed in inflate_fast()
+ * - Make op and len in inflate_fast() unsigned for consistency
+ * - Add FAR to lcode and dcode declarations in inflate_fast()
+ * - Simplified bad distance check in inflate_fast()
+ * - Added inflateBackInit(), inflateBack(), and inflateBackEnd() in new
+ *   source file infback.c to provide a call-back interface to inflate for
+ *   programs like gzip and unzip -- uses window as output buffer to avoid
+ *   window copying
+ *
+ * 1.2.beta5    1 Jan 2003
+ * - Improved inflateBack() interface to allow the caller to provide initial
+ *   input in strm.
+ * - Fixed stored blocks bug in inflateBack()
+ *
+ * 1.2.beta6    4 Jan 2003
+ * - Added comments in inffast.c on effectiveness of POSTINC
+ * - Typecasting all around to reduce compiler warnings
+ * - Changed loops from while (1) or do {} while (1) to for (;;), again to
+ *   make compilers happy
+ * - Changed type of window in inflateBackInit() to unsigned char *
+ *
+ * 1.2.beta7    27 Jan 2003
+ * - Changed many types to unsigned or unsigned short to avoid warnings
+ * - Added inflateCopy() function
+ *
+ * 1.2.0        9 Mar 2003
+ * - Changed inflateBack() interface to provide separate opaque descriptors
+ *   for the in() and out() functions
+ * - Changed inflateBack() argument and in_func typedef to swap the length
+ *   and buffer address return values for the input function
+ * - Check next_in and next_out for Z_NULL on entry to inflate()
+ *
+ * The history for versions after 1.2.0 are in ChangeLog in zlib distribution.
+ */
+
+#include "zutil.h"
+#include "inftrees.h"
+#include "inflate.h"
+#include "inffast.h"
+
+#ifdef MAKEFIXED
+#  ifndef BUILDFIXED
+#    define BUILDFIXED
+#  endif
+#endif
+
+/* function prototypes */
+local void fixedtables OF((struct inflate_state FAR *state));
+local int updatewindow OF((z_streamp strm, const unsigned char FAR *end,
+                           unsigned copy));
+#ifdef BUILDFIXED
+   void makefixed OF((void));
+#endif
+local unsigned syncsearch OF((unsigned FAR *have, const unsigned char FAR *buf,
+                              unsigned len));
+
+int ZEXPORT inflateResetKeep(strm)
+z_streamp strm;
+{
+    struct inflate_state FAR *state;
+
+    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+    state = (struct inflate_state FAR *)strm->state;
+    strm->total_in = strm->total_out = state->total = 0;
+    strm->msg = Z_NULL;
+    if (state->wrap)        /* to support ill-conceived Java test suite */
+        strm->adler = state->wrap & 1;
+    state->mode = HEAD;
+    state->last = 0;
+    state->havedict = 0;
+    state->dmax = 32768U;
+    state->head = Z_NULL;
+    state->hold = 0;
+    state->bits = 0;
+    state->lencode = state->distcode = state->next = state->codes;
+    state->sane = 1;
+    state->back = -1;
+    Tracev((stderr, "inflate: reset\n"));
+    return Z_OK;
+}
+
+int ZEXPORT inflateReset(strm)
+z_streamp strm;
+{
+    struct inflate_state FAR *state;
+
+    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+    state = (struct inflate_state FAR *)strm->state;
+    state->wsize = 0;
+    state->whave = 0;
+    state->wnext = 0;
+    return inflateResetKeep(strm);
+}
+
+int ZEXPORT inflateReset2(strm, windowBits)
+z_streamp strm;
+int windowBits;
+{
+    int wrap;
+    struct inflate_state FAR *state;
+
+    /* get the state */
+    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+    state = (struct inflate_state FAR *)strm->state;
+
+    /* extract wrap request from windowBits parameter */
+    if (windowBits < 0) {
+        wrap = 0;
+        windowBits = -windowBits;
+    }
+    else {
+        wrap = (windowBits >> 4) + 1;
+#ifdef GUNZIP
+        if (windowBits < 48)
+            windowBits &= 15;
+#endif
+    }
+
+    /* set number of window bits, free window if different */
+    if (windowBits && (windowBits < 8 || windowBits > 15))
+        return Z_STREAM_ERROR;
+    if (state->window != Z_NULL && state->wbits != (unsigned)windowBits) {
+        ZFREE(strm, state->window);
+        state->window = Z_NULL;
+    }
+
+    /* update state and reset the rest of it */
+    state->wrap = wrap;
+    state->wbits = (unsigned)windowBits;
+    return inflateReset(strm);
+}
+
+int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size)
+z_streamp strm;
+int windowBits;
+const char *version;
+int stream_size;
+{
+    int ret;
+    struct inflate_state FAR *state;
+
+    if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
+        stream_size != (int)(sizeof(z_stream)))
+        return Z_VERSION_ERROR;
+    if (strm == Z_NULL) return Z_STREAM_ERROR;
+    strm->msg = Z_NULL;                 /* in case we return an error */
+    if (strm->zalloc == (alloc_func)0) {
+#ifdef Z_SOLO
+        return Z_STREAM_ERROR;
+#else
+        strm->zalloc = zcalloc;
+        strm->opaque = (voidpf)0;
+#endif
+    }
+    if (strm->zfree == (free_func)0)
+#ifdef Z_SOLO
+        return Z_STREAM_ERROR;
+#else
+        strm->zfree = zcfree;
+#endif
+    state = (struct inflate_state FAR *)
+            ZALLOC(strm, 1, sizeof(struct inflate_state));
+    if (state == Z_NULL) return Z_MEM_ERROR;
+    Tracev((stderr, "inflate: allocated\n"));
+    strm->state = (struct internal_state FAR *)state;
+    state->window = Z_NULL;
+    ret = inflateReset2(strm, windowBits);
+    if (ret != Z_OK) {
+        ZFREE(strm, state);
+        strm->state = Z_NULL;
+    }
+    return ret;
+}
+
+int ZEXPORT inflateInit_(strm, version, stream_size)
+z_streamp strm;
+const char *version;
+int stream_size;
+{
+    return inflateInit2_(strm, DEF_WBITS, version, stream_size);
+}
+
+int ZEXPORT inflatePrime(strm, bits, value)
+z_streamp strm;
+int bits;
+int value;
+{
+    struct inflate_state FAR *state;
+
+    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+    state = (struct inflate_state FAR *)strm->state;
+    if (bits < 0) {
+        state->hold = 0;
+        state->bits = 0;
+        return Z_OK;
+    }
+    if (bits > 16 || state->bits + bits > 32) return Z_STREAM_ERROR;
+    value &= (1L << bits) - 1;
+    state->hold += value << state->bits;
+    state->bits += bits;
+    return Z_OK;
+}
+
+/*
+   Return state with length and distance decoding tables and index sizes set to
+   fixed code decoding.  Normally this returns fixed tables from inffixed.h.
+   If BUILDFIXED is defined, then instead this routine builds the tables the
+   first time it's called, and returns those tables the first time and
+   thereafter.  This reduces the size of the code by about 2K bytes, in
+   exchange for a little execution time.  However, BUILDFIXED should not be
+   used for threaded applications, since the rewriting of the tables and virgin
+   may not be thread-safe.
+ */
+local void fixedtables(state)
+struct inflate_state FAR *state;
+{
+#ifdef BUILDFIXED
+    static int virgin = 1;
+    static code *lenfix, *distfix;
+    static code fixed[544];
+
+    /* build fixed huffman tables if first call (may not be thread safe) */
+    if (virgin) {
+        unsigned sym, bits;
+        static code *next;
+
+        /* literal/length table */
+        sym = 0;
+        while (sym < 144) state->lens[sym++] = 8;
+        while (sym < 256) state->lens[sym++] = 9;
+        while (sym < 280) state->lens[sym++] = 7;
+        while (sym < 288) state->lens[sym++] = 8;
+        next = fixed;
+        lenfix = next;
+        bits = 9;
+        inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work);
+
+        /* distance table */
+        sym = 0;
+        while (sym < 32) state->lens[sym++] = 5;
+        distfix = next;
+        bits = 5;
+        inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work);
+
+        /* do this just once */
+        virgin = 0;
+    }
+#else /* !BUILDFIXED */
+#   include "inffixed.h"
+#endif /* BUILDFIXED */
+    state->lencode = lenfix;
+    state->lenbits = 9;
+    state->distcode = distfix;
+    state->distbits = 5;
+}
+
+#ifdef MAKEFIXED
+#include <stdio.h>
+
+/*
+   Write out the inffixed.h that is #include'd above.  Defining MAKEFIXED also
+   defines BUILDFIXED, so the tables are built on the fly.  makefixed() writes
+   those tables to stdout, which would be piped to inffixed.h.  A small program
+   can simply call makefixed to do this:
+
+    void makefixed(void);
+
+    int main(void)
+    {
+        makefixed();
+        return 0;
+    }
+
+   Then that can be linked with zlib built with MAKEFIXED defined and run:
+
+    a.out > inffixed.h
+ */
+void makefixed()
+{
+    unsigned low, size;
+    struct inflate_state state;
+
+    fixedtables(&state);
+    puts("    /* inffixed.h -- table for decoding fixed codes");
+    puts("     * Generated automatically by makefixed().");
+    puts("     */");
+    puts("");
+    puts("    /* WARNING: this file should *not* be used by applications.");
+    puts("       It is part of the implementation of this library and is");
+    puts("       subject to change. Applications should only use zlib.h.");
+    puts("     */");
+    puts("");
+    size = 1U << 9;
+    printf("    static const code lenfix[%u] = {", size);
+    low = 0;
+    for (;;) {
+        if ((low % 7) == 0) printf("\n        ");
+        printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op,
+               state.lencode[low].bits, state.lencode[low].val);
+        if (++low == size) break;
+        putchar(',');
+    }
+    puts("\n    };");
+    size = 1U << 5;
+    printf("\n    static const code distfix[%u] = {", size);
+    low = 0;
+    for (;;) {
+        if ((low % 6) == 0) printf("\n        ");
+        printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits,
+               state.distcode[low].val);
+        if (++low == size) break;
+        putchar(',');
+    }
+    puts("\n    };");
+}
+#endif /* MAKEFIXED */
+
+/*
+   Update the window with the last wsize (normally 32K) bytes written before
+   returning.  If window does not exist yet, create it.  This is only called
+   when a window is already in use, or when output has been written during this
+   inflate call, but the end of the deflate stream has not been reached yet.
+   It is also called to create a window for dictionary data when a dictionary
+   is loaded.
+
+   Providing output buffers larger than 32K to inflate() should provide a speed
+   advantage, since only the last 32K of output is copied to the sliding window
+   upon return from inflate(), and since all distances after the first 32K of
+   output will fall in the output data, making match copies simpler and faster.
+   The advantage may be dependent on the size of the processor's data caches.
+ */
+local int updatewindow(strm, end, copy)
+z_streamp strm;
+const Bytef *end;
+unsigned copy;
+{
+    struct inflate_state FAR *state;
+    unsigned dist;
+
+    state = (struct inflate_state FAR *)strm->state;
+
+    /* if it hasn't been done already, allocate space for the window */
+    if (state->window == Z_NULL) {
+        state->window = (unsigned char FAR *)
+                        ZALLOC(strm, 1U << state->wbits,
+                               sizeof(unsigned char));
+        if (state->window == Z_NULL) return 1;
+    }
+
+    /* if window not in use yet, initialize */
+    if (state->wsize == 0) {
+        state->wsize = 1U << state->wbits;
+        state->wnext = 0;
+        state->whave = 0;
+    }
+
+    /* copy state->wsize or less output bytes into the circular window */
+    if (copy >= state->wsize) {
+        zmemcpy(state->window, end - state->wsize, state->wsize);
+        state->wnext = 0;
+        state->whave = state->wsize;
+    }
+    else {
+        dist = state->wsize - state->wnext;
+        if (dist > copy) dist = copy;
+        zmemcpy(state->window + state->wnext, end - copy, dist);
+        copy -= dist;
+        if (copy) {
+            zmemcpy(state->window, end - copy, copy);
+            state->wnext = copy;
+            state->whave = state->wsize;
+        }
+        else {
+            state->wnext += dist;
+            if (state->wnext == state->wsize) state->wnext = 0;
+            if (state->whave < state->wsize) state->whave += dist;
+        }
+    }
+    return 0;
+}
+
+/* Macros for inflate(): */
+
+/* check function to use adler32() for zlib or crc32() for gzip */
+#ifdef GUNZIP
+#  define UPDATE(check, buf, len) \
+    (state->flags ? crc32(check, buf, len) : adler32(check, buf, len))
+#else
+#  define UPDATE(check, buf, len) adler32(check, buf, len)
+#endif
+
+/* check macros for header crc */
+#ifdef GUNZIP
+#  define CRC2(check, word) \
+    do { \
+        hbuf[0] = (unsigned char)(word); \
+        hbuf[1] = (unsigned char)((word) >> 8); \
+        check = crc32(check, hbuf, 2); \
+    } while (0)
+
+#  define CRC4(check, word) \
+    do { \
+        hbuf[0] = (unsigned char)(word); \
+        hbuf[1] = (unsigned char)((word) >> 8); \
+        hbuf[2] = (unsigned char)((word) >> 16); \
+        hbuf[3] = (unsigned char)((word) >> 24); \
+        check = crc32(check, hbuf, 4); \
+    } while (0)
+#endif
+
+/* Load registers with state in inflate() for speed */
+#define LOAD() \
+    do { \
+        put = strm->next_out; \
+        left = strm->avail_out; \
+        next = strm->next_in; \
+        have = strm->avail_in; \
+        hold = state->hold; \
+        bits = state->bits; \
+    } while (0)
+
+/* Restore state from registers in inflate() */
+#define RESTORE() \
+    do { \
+        strm->next_out = put; \
+        strm->avail_out = left; \
+        strm->next_in = next; \
+        strm->avail_in = have; \
+        state->hold = hold; \
+        state->bits = bits; \
+    } while (0)
+
+/* Clear the input bit accumulator */
+#define INITBITS() \
+    do { \
+        hold = 0; \
+        bits = 0; \
+    } while (0)
+
+/* Get a byte of input into the bit accumulator, or return from inflate()
+   if there is no input available. */
+#define PULLBYTE() \
+    do { \
+        if (have == 0) goto inf_leave; \
+        have--; \
+        hold += (unsigned long)(*next++) << bits; \
+        bits += 8; \
+    } while (0)
+
+/* Assure that there are at least n bits in the bit accumulator.  If there is
+   not enough available input to do that, then return from inflate(). */
+#define NEEDBITS(n) \
+    do { \
+        while (bits < (unsigned)(n)) \
+            PULLBYTE(); \
+    } while (0)
+
+/* Return the low n bits of the bit accumulator (n < 16) */
+#define BITS(n) \
+    ((unsigned)hold & ((1U << (n)) - 1))
+
+/* Remove n bits from the bit accumulator */
+#define DROPBITS(n) \
+    do { \
+        hold >>= (n); \
+        bits -= (unsigned)(n); \
+    } while (0)
+
+/* Remove zero to seven bits as needed to go to a byte boundary */
+#define BYTEBITS() \
+    do { \
+        hold >>= bits & 7; \
+        bits -= bits & 7; \
+    } while (0)
+
+/*
+   inflate() uses a state machine to process as much input data and generate as
+   much output data as possible before returning.  The state machine is
+   structured roughly as follows:
+
+    for (;;) switch (state) {
+    ...
+    case STATEn:
+        if (not enough input data or output space to make progress)
+            return;
+        ... make progress ...
+        state = STATEm;
+        break;
+    ...
+    }
+
+   so when inflate() is called again, the same case is attempted again, and
+   if the appropriate resources are provided, the machine proceeds to the
+   next state.  The NEEDBITS() macro is usually the way the state evaluates
+   whether it can proceed or should return.  NEEDBITS() does the return if
+   the requested bits are not available.  The typical use of the BITS macros
+   is:
+
+        NEEDBITS(n);
+        ... do something with BITS(n) ...
+        DROPBITS(n);
+
+   where NEEDBITS(n) either returns from inflate() if there isn't enough
+   input left to load n bits into the accumulator, or it continues.  BITS(n)
+   gives the low n bits in the accumulator.  When done, DROPBITS(n) drops
+   the low n bits off the accumulator.  INITBITS() clears the accumulator
+   and sets the number of available bits to zero.  BYTEBITS() discards just
+   enough bits to put the accumulator on a byte boundary.  After BYTEBITS()
+   and a NEEDBITS(8), then BITS(8) would return the next byte in the stream.
+
+   NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return
+   if there is no input available.  The decoding of variable length codes uses
+   PULLBYTE() directly in order to pull just enough bytes to decode the next
+   code, and no more.
+
+   Some states loop until they get enough input, making sure that enough
+   state information is maintained to continue the loop where it left off
+   if NEEDBITS() returns in the loop.  For example, want, need, and keep
+   would all have to actually be part of the saved state in case NEEDBITS()
+   returns:
+
+    case STATEw:
+        while (want < need) {
+            NEEDBITS(n);
+            keep[want++] = BITS(n);
+            DROPBITS(n);
+        }
+        state = STATEx;
+    case STATEx:
+
+   As shown above, if the next state is also the next case, then the break
+   is omitted.
+
+   A state may also return if there is not enough output space available to
+   complete that state.  Those states are copying stored data, writing a
+   literal byte, and copying a matching string.
+
+   When returning, a "goto inf_leave" is used to update the total counters,
+   update the check value, and determine whether any progress has been made
+   during that inflate() call in order to return the proper return code.
+   Progress is defined as a change in either strm->avail_in or strm->avail_out.
+   When there is a window, goto inf_leave will update the window with the last
+   output written.  If a goto inf_leave occurs in the middle of decompression
+   and there is no window currently, goto inf_leave will create one and copy
+   output to the window for the next call of inflate().
+
+   In this implementation, the flush parameter of inflate() only affects the
+   return code (per zlib.h).  inflate() always writes as much as possible to
+   strm->next_out, given the space available and the provided input--the effect
+   documented in zlib.h of Z_SYNC_FLUSH.  Furthermore, inflate() always defers
+   the allocation of and copying into a sliding window until necessary, which
+   provides the effect documented in zlib.h for Z_FINISH when the entire input
+   stream available.  So the only thing the flush parameter actually does is:
+   when flush is set to Z_FINISH, inflate() cannot return Z_OK.  Instead it
+   will return Z_BUF_ERROR if it has not reached the end of the stream.
+ */
+
+int ZEXPORT inflate(strm, flush)
+z_streamp strm;
+int flush;
+{
+    struct inflate_state FAR *state;
+    z_const unsigned char FAR *next;    /* next input */
+    unsigned char FAR *put;     /* next output */
+    unsigned have, left;        /* available input and output */
+    unsigned long hold;         /* bit buffer */
+    unsigned bits;              /* bits in bit buffer */
+    unsigned in, out;           /* save starting available input and output */
+    unsigned copy;              /* number of stored or match bytes to copy */
+    unsigned char FAR *from;    /* where to copy match bytes from */
+    code here;                  /* current decoding table entry */
+    code last;                  /* parent table entry */
+    unsigned len;               /* length to copy for repeats, bits to drop */
+    int ret;                    /* return code */
+#ifdef GUNZIP
+    unsigned char hbuf[4];      /* buffer for gzip header crc calculation */
+#endif
+    static const unsigned short order[19] = /* permutation of code lengths */
+        {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
+
+    if (strm == Z_NULL || strm->state == Z_NULL || strm->next_out == Z_NULL ||
+        (strm->next_in == Z_NULL && strm->avail_in != 0))
+        return Z_STREAM_ERROR;
+
+    state = (struct inflate_state FAR *)strm->state;
+    if (state->mode == TYPE) state->mode = TYPEDO;      /* skip check */
+    LOAD();
+    in = have;
+    out = left;
+    ret = Z_OK;
+    for (;;)
+        switch (state->mode) {
+        case HEAD:
+            if (state->wrap == 0) {
+                state->mode = TYPEDO;
+                break;
+            }
+            NEEDBITS(16);
+#ifdef GUNZIP
+            if ((state->wrap & 2) && hold == 0x8b1f) {  /* gzip header */
+                state->check = crc32(0L, Z_NULL, 0);
+                CRC2(state->check, hold);
+                INITBITS();
+                state->mode = FLAGS;
+                break;
+            }
+            state->flags = 0;           /* expect zlib header */
+            if (state->head != Z_NULL)
+                state->head->done = -1;
+            if (!(state->wrap & 1) ||   /* check if zlib header allowed */
+#else
+            if (
+#endif
+                ((BITS(8) << 8) + (hold >> 8)) % 31) {
+                strm->msg = (char *)"incorrect header check";
+                state->mode = BAD;
+                break;
+            }
+            if (BITS(4) != Z_DEFLATED) {
+                strm->msg = (char *)"unknown compression method";
+                state->mode = BAD;
+                break;
+            }
+            DROPBITS(4);
+            len = BITS(4) + 8;
+            if (state->wbits == 0)
+                state->wbits = len;
+            else if (len > state->wbits) {
+                strm->msg = (char *)"invalid window size";
+                state->mode = BAD;
+                break;
+            }
+            state->dmax = 1U << len;
+            Tracev((stderr, "inflate:   zlib header ok\n"));
+            strm->adler = state->check = adler32(0L, Z_NULL, 0);
+            state->mode = hold & 0x200 ? DICTID : TYPE;
+            INITBITS();
+            break;
+#ifdef GUNZIP
+        case FLAGS:
+            NEEDBITS(16);
+            state->flags = (int)(hold);
+            if ((state->flags & 0xff) != Z_DEFLATED) {
+                strm->msg = (char *)"unknown compression method";
+                state->mode = BAD;
+                break;
+            }
+            if (state->flags & 0xe000) {
+                strm->msg = (char *)"unknown header flags set";
+                state->mode = BAD;
+                break;
+            }
+            if (state->head != Z_NULL)
+                state->head->text = (int)((hold >> 8) & 1);
+            if (state->flags & 0x0200) CRC2(state->check, hold);
+            INITBITS();
+            state->mode = TIME;
+        case TIME:
+            NEEDBITS(32);
+            if (state->head != Z_NULL)
+                state->head->time = hold;
+            if (state->flags & 0x0200) CRC4(state->check, hold);
+            INITBITS();
+            state->mode = OS;
+        case OS:
+            NEEDBITS(16);
+            if (state->head != Z_NULL) {
+                state->head->xflags = (int)(hold & 0xff);
+                state->head->os = (int)(hold >> 8);
+            }
+            if (state->flags & 0x0200) CRC2(state->check, hold);
+            INITBITS();
+            state->mode = EXLEN;
+        case EXLEN:
+            if (state->flags & 0x0400) {
+                NEEDBITS(16);
+                state->length = (unsigned)(hold);
+                if (state->head != Z_NULL)
+                    state->head->extra_len = (unsigned)hold;
+                if (state->flags & 0x0200) CRC2(state->check, hold);
+                INITBITS();
+            }
+            else if (state->head != Z_NULL)
+                state->head->extra = Z_NULL;
+            state->mode = EXTRA;
+        case EXTRA:
+            if (state->flags & 0x0400) {
+                copy = state->length;
+                if (copy > have) copy = have;
+                if (copy) {
+                    if (state->head != Z_NULL &&
+                        state->head->extra != Z_NULL) {
+                        len = state->head->extra_len - state->length;
+                        zmemcpy(state->head->extra + len, next,
+                                len + copy > state->head->extra_max ?
+                                state->head->extra_max - len : copy);
+                    }
+                    if (state->flags & 0x0200)
+                        state->check = crc32(state->check, next, copy);
+                    have -= copy;
+                    next += copy;
+                    state->length -= copy;
+                }
+                if (state->length) goto inf_leave;
+            }
+            state->length = 0;
+            state->mode = NAME;
+        case NAME:
+            if (state->flags & 0x0800) {
+                if (have == 0) goto inf_leave;
+                copy = 0;
+                do {
+                    len = (unsigned)(next[copy++]);
+                    if (state->head != Z_NULL &&
+                            state->head->name != Z_NULL &&
+                            state->length < state->head->name_max)
+                        state->head->name[state->length++] = len;
+                } while (len && copy < have);
+                if (state->flags & 0x0200)
+                    state->check = crc32(state->check, next, copy);
+                have -= copy;
+                next += copy;
+                if (len) goto inf_leave;
+            }
+            else if (state->head != Z_NULL)
+                state->head->name = Z_NULL;
+            state->length = 0;
+            state->mode = COMMENT;
+        case COMMENT:
+            if (state->flags & 0x1000) {
+                if (have == 0) goto inf_leave;
+                copy = 0;
+                do {
+                    len = (unsigned)(next[copy++]);
+                    if (state->head != Z_NULL &&
+                            state->head->comment != Z_NULL &&
+                            state->length < state->head->comm_max)
+                        state->head->comment[state->length++] = len;
+                } while (len && copy < have);
+                if (state->flags & 0x0200)
+                    state->check = crc32(state->check, next, copy);
+                have -= copy;
+                next += copy;
+                if (len) goto inf_leave;
+            }
+            else if (state->head != Z_NULL)
+                state->head->comment = Z_NULL;
+            state->mode = HCRC;
+        case HCRC:
+            if (state->flags & 0x0200) {
+                NEEDBITS(16);
+                if (hold != (state->check & 0xffff)) {
+                    strm->msg = (char *)"header crc mismatch";
+                    state->mode = BAD;
+                    break;
+                }
+                INITBITS();
+            }
+            if (state->head != Z_NULL) {
+                state->head->hcrc = (int)((state->flags >> 9) & 1);
+                state->head->done = 1;
+            }
+            strm->adler = state->check = crc32(0L, Z_NULL, 0);
+            state->mode = TYPE;
+            break;
+#endif
+        case DICTID:
+            NEEDBITS(32);
+            strm->adler = state->check = ZSWAP32(hold);
+            INITBITS();
+            state->mode = DICT;
+        case DICT:
+            if (state->havedict == 0) {
+                RESTORE();
+                return Z_NEED_DICT;
+            }
+            strm->adler = state->check = adler32(0L, Z_NULL, 0);
+            state->mode = TYPE;
+        case TYPE:
+            if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave;
+        case TYPEDO:
+            if (state->last) {
+                BYTEBITS();
+                state->mode = CHECK;
+                break;
+            }
+            NEEDBITS(3);
+            state->last = BITS(1);
+            DROPBITS(1);
+            switch (BITS(2)) {
+            case 0:                             /* stored block */
+                Tracev((stderr, "inflate:     stored block%s\n",
+                        state->last ? " (last)" : ""));
+                state->mode = STORED;
+                break;
+            case 1:                             /* fixed block */
+                fixedtables(state);
+                Tracev((stderr, "inflate:     fixed codes block%s\n",
+                        state->last ? " (last)" : ""));
+                state->mode = LEN_;             /* decode codes */
+                if (flush == Z_TREES) {
+                    DROPBITS(2);
+                    goto inf_leave;
+                }
+                break;
+            case 2:                             /* dynamic block */
+                Tracev((stderr, "inflate:     dynamic codes block%s\n",
+                        state->last ? " (last)" : ""));
+                state->mode = TABLE;
+                break;
+            case 3:
+                strm->msg = (char *)"invalid block type";
+                state->mode = BAD;
+            }
+            DROPBITS(2);
+            break;
+        case STORED:
+            BYTEBITS();                         /* go to byte boundary */
+            NEEDBITS(32);
+            if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) {
+                strm->msg = (char *)"invalid stored block lengths";
+                state->mode = BAD;
+                break;
+            }
+            state->length = (unsigned)hold & 0xffff;
+            Tracev((stderr, "inflate:       stored length %u\n",
+                    state->length));
+            INITBITS();
+            state->mode = COPY_;
+            if (flush == Z_TREES) goto inf_leave;
+        case COPY_:
+            state->mode = COPY;
+        case COPY:
+            copy = state->length;
+            if (copy) {
+                if (copy > have) copy = have;
+                if (copy > left) copy = left;
+                if (copy == 0) goto inf_leave;
+                zmemcpy(put, next, copy);
+                have -= copy;
+                next += copy;
+                left -= copy;
+                put += copy;
+                state->length -= copy;
+                break;
+            }
+            Tracev((stderr, "inflate:       stored end\n"));
+            state->mode = TYPE;
+            break;
+        case TABLE:
+            NEEDBITS(14);
+            state->nlen = BITS(5) + 257;
+            DROPBITS(5);
+            state->ndist = BITS(5) + 1;
+            DROPBITS(5);
+            state->ncode = BITS(4) + 4;
+            DROPBITS(4);
+#ifndef PKZIP_BUG_WORKAROUND
+            if (state->nlen > 286 || state->ndist > 30) {
+                strm->msg = (char *)"too many length or distance symbols";
+                state->mode = BAD;
+                break;
+            }
+#endif
+            Tracev((stderr, "inflate:       table sizes ok\n"));
+            state->have = 0;
+            state->mode = LENLENS;
+        case LENLENS:
+            while (state->have < state->ncode) {
+                NEEDBITS(3);
+                state->lens[order[state->have++]] = (unsigned short)BITS(3);
+                DROPBITS(3);
+            }
+            while (state->have < 19)
+                state->lens[order[state->have++]] = 0;
+            state->next = state->codes;
+            state->lencode = (const code FAR *)(state->next);
+            state->lenbits = 7;
+            ret = inflate_table(CODES, state->lens, 19, &(state->next),
+                                &(state->lenbits), state->work);
+            if (ret) {
+                strm->msg = (char *)"invalid code lengths set";
+                state->mode = BAD;
+                break;
+            }
+            Tracev((stderr, "inflate:       code lengths ok\n"));
+            state->have = 0;
+            state->mode = CODELENS;
+        case CODELENS:
+            while (state->have < state->nlen + state->ndist) {
+                for (;;) {
+                    here = state->lencode[BITS(state->lenbits)];
+                    if ((unsigned)(here.bits) <= bits) break;
+                    PULLBYTE();
+                }
+                if (here.val < 16) {
+                    DROPBITS(here.bits);
+                    state->lens[state->have++] = here.val;
+                }
+                else {
+                    if (here.val == 16) {
+                        NEEDBITS(here.bits + 2);
+                        DROPBITS(here.bits);
+                        if (state->have == 0) {
+                            strm->msg = (char *)"invalid bit length repeat";
+                            state->mode = BAD;
+                            break;
+                        }
+                        len = state->lens[state->have - 1];
+                        copy = 3 + BITS(2);
+                        DROPBITS(2);
+                    }
+                    else if (here.val == 17) {
+                        NEEDBITS(here.bits + 3);
+                        DROPBITS(here.bits);
+                        len = 0;
+                        copy = 3 + BITS(3);
+                        DROPBITS(3);
+                    }
+                    else {
+                        NEEDBITS(here.bits + 7);
+                        DROPBITS(here.bits);
+                        len = 0;
+                        copy = 11 + BITS(7);
+                        DROPBITS(7);
+                    }
+                    if (state->have + copy > state->nlen + state->ndist) {
+                        strm->msg = (char *)"invalid bit length repeat";
+                        state->mode = BAD;
+                        break;
+                    }
+                    while (copy--)
+                        state->lens[state->have++] = (unsigned short)len;
+                }
+            }
+
+            /* handle error breaks in while */
+            if (state->mode == BAD) break;
+
+            /* check for end-of-block code (better have one) */
+            if (state->lens[256] == 0) {
+                strm->msg = (char *)"invalid code -- missing end-of-block";
+                state->mode = BAD;
+                break;
+            }
+
+            /* build code tables -- note: do not change the lenbits or distbits
+               values here (9 and 6) without reading the comments in inftrees.h
+               concerning the ENOUGH constants, which depend on those values */
+            state->next = state->codes;
+            state->lencode = (const code FAR *)(state->next);
+            state->lenbits = 9;
+            ret = inflate_table(LENS, state->lens, state->nlen, &(state->next),
+                                &(state->lenbits), state->work);
+            if (ret) {
+                strm->msg = (char *)"invalid literal/lengths set";
+                state->mode = BAD;
+                break;
+            }
+            state->distcode = (const code FAR *)(state->next);
+            state->distbits = 6;
+            ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist,
+                            &(state->next), &(state->distbits), state->work);
+            if (ret) {
+                strm->msg = (char *)"invalid distances set";
+                state->mode = BAD;
+                break;
+            }
+            Tracev((stderr, "inflate:       codes ok\n"));
+            state->mode = LEN_;
+            if (flush == Z_TREES) goto inf_leave;
+        case LEN_:
+            state->mode = LEN;
+        case LEN:
+            if (have >= 6 && left >= 258) {
+                RESTORE();
+                inflate_fast(strm, out);
+                LOAD();
+                if (state->mode == TYPE)
+                    state->back = -1;
+                break;
+            }
+            state->back = 0;
+            for (;;) {
+                here = state->lencode[BITS(state->lenbits)];
+                if ((unsigned)(here.bits) <= bits) break;
+                PULLBYTE();
+            }
+            if (here.op && (here.op & 0xf0) == 0) {
+                last = here;
+                for (;;) {
+                    here = state->lencode[last.val +
+                            (BITS(last.bits + last.op) >> last.bits)];
+                    if ((unsigned)(last.bits + here.bits) <= bits) break;
+                    PULLBYTE();
+                }
+                DROPBITS(last.bits);
+                state->back += last.bits;
+            }
+            DROPBITS(here.bits);
+            state->back += here.bits;
+            state->length = (unsigned)here.val;
+            if ((int)(here.op) == 0) {
+                Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+                        "inflate:         literal '%c'\n" :
+                        "inflate:         literal 0x%02x\n", here.val));
+                state->mode = LIT;
+                break;
+            }
+            if (here.op & 32) {
+                Tracevv((stderr, "inflate:         end of block\n"));
+                state->back = -1;
+                state->mode = TYPE;
+                break;
+            }
+            if (here.op & 64) {
+                strm->msg = (char *)"invalid literal/length code";
+                state->mode = BAD;
+                break;
+            }
+            state->extra = (unsigned)(here.op) & 15;
+            state->mode = LENEXT;
+        case LENEXT:
+            if (state->extra) {
+                NEEDBITS(state->extra);
+                state->length += BITS(state->extra);
+                DROPBITS(state->extra);
+                state->back += state->extra;
+            }
+            Tracevv((stderr, "inflate:         length %u\n", state->length));
+            state->was = state->length;
+            state->mode = DIST;
+        case DIST:
+            for (;;) {
+                here = state->distcode[BITS(state->distbits)];
+                if ((unsigned)(here.bits) <= bits) break;
+                PULLBYTE();
+            }
+            if ((here.op & 0xf0) == 0) {
+                last = here;
+                for (;;) {
+                    here = state->distcode[last.val +
+                            (BITS(last.bits + last.op) >> last.bits)];
+                    if ((unsigned)(last.bits + here.bits) <= bits) break;
+                    PULLBYTE();
+                }
+                DROPBITS(last.bits);
+                state->back += last.bits;
+            }
+            DROPBITS(here.bits);
+            state->back += here.bits;
+            if (here.op & 64) {
+                strm->msg = (char *)"invalid distance code";
+                state->mode = BAD;
+                break;
+            }
+            state->offset = (unsigned)here.val;
+            state->extra = (unsigned)(here.op) & 15;
+            state->mode = DISTEXT;
+        case DISTEXT:
+            if (state->extra) {
+                NEEDBITS(state->extra);
+                state->offset += BITS(state->extra);
+                DROPBITS(state->extra);
+                state->back += state->extra;
+            }
+#ifdef INFLATE_STRICT
+            if (state->offset > state->dmax) {
+                strm->msg = (char *)"invalid distance too far back";
+                state->mode = BAD;
+                break;
+            }
+#endif
+            Tracevv((stderr, "inflate:         distance %u\n", state->offset));
+            state->mode = MATCH;
+        case MATCH:
+            if (left == 0) goto inf_leave;
+            copy = out - left;
+            if (state->offset > copy) {         /* copy from window */
+                copy = state->offset - copy;
+                if (copy > state->whave) {
+                    if (state->sane) {
+                        strm->msg = (char *)"invalid distance too far back";
+                        state->mode = BAD;
+                        break;
+                    }
+#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+                    Trace((stderr, "inflate.c too far\n"));
+                    copy -= state->whave;
+                    if (copy > state->length) copy = state->length;
+                    if (copy > left) copy = left;
+                    left -= copy;
+                    state->length -= copy;
+                    do {
+                        *put++ = 0;
+                    } while (--copy);
+                    if (state->length == 0) state->mode = LEN;
+                    break;
+#endif
+                }
+                if (copy > state->wnext) {
+                    copy -= state->wnext;
+                    from = state->window + (state->wsize - copy);
+                }
+                else
+                    from = state->window + (state->wnext - copy);
+                if (copy > state->length) copy = state->length;
+            }
+            else {                              /* copy from output */
+                from = put - state->offset;
+                copy = state->length;
+            }
+            if (copy > left) copy = left;
+            left -= copy;
+            state->length -= copy;
+            do {
+                *put++ = *from++;
+            } while (--copy);
+            if (state->length == 0) state->mode = LEN;
+            break;
+        case LIT:
+            if (left == 0) goto inf_leave;
+            *put++ = (unsigned char)(state->length);
+            left--;
+            state->mode = LEN;
+            break;
+        case CHECK:
+            if (state->wrap) {
+                NEEDBITS(32);
+                out -= left;
+                strm->total_out += out;
+                state->total += out;
+                if (out)
+                    strm->adler = state->check =
+                        UPDATE(state->check, put - out, out);
+                out = left;
+                if ((
+#ifdef GUNZIP
+                     state->flags ? hold :
+#endif
+                     ZSWAP32(hold)) != state->check) {
+                    strm->msg = (char *)"incorrect data check";
+                    state->mode = BAD;
+                    break;
+                }
+                INITBITS();
+                Tracev((stderr, "inflate:   check matches trailer\n"));
+            }
+#ifdef GUNZIP
+            state->mode = LENGTH;
+        case LENGTH:
+            if (state->wrap && state->flags) {
+                NEEDBITS(32);
+                if (hold != (state->total & 0xffffffffUL)) {
+                    strm->msg = (char *)"incorrect length check";
+                    state->mode = BAD;
+                    break;
+                }
+                INITBITS();
+                Tracev((stderr, "inflate:   length matches trailer\n"));
+            }
+#endif
+            state->mode = DONE;
+        case DONE:
+            ret = Z_STREAM_END;
+            goto inf_leave;
+        case BAD:
+            ret = Z_DATA_ERROR;
+            goto inf_leave;
+        case MEM:
+            return Z_MEM_ERROR;
+        case SYNC:
+        default:
+            return Z_STREAM_ERROR;
+        }
+
+    /*
+       Return from inflate(), updating the total counts and the check value.
+       If there was no progress during the inflate() call, return a buffer
+       error.  Call updatewindow() to create and/or update the window state.
+       Note: a memory error from inflate() is non-recoverable.
+     */
+  inf_leave:
+    RESTORE();
+    if (state->wsize || (out != strm->avail_out && state->mode < BAD &&
+            (state->mode < CHECK || flush != Z_FINISH)))
+        if (updatewindow(strm, strm->next_out, out - strm->avail_out)) {
+            state->mode = MEM;
+            return Z_MEM_ERROR;
+        }
+    in -= strm->avail_in;
+    out -= strm->avail_out;
+    strm->total_in += in;
+    strm->total_out += out;
+    state->total += out;
+    if (state->wrap && out)
+        strm->adler = state->check =
+            UPDATE(state->check, strm->next_out - out, out);
+    strm->data_type = state->bits + (state->last ? 64 : 0) +
+                      (state->mode == TYPE ? 128 : 0) +
+                      (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0);
+    if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK)
+        ret = Z_BUF_ERROR;
+    return ret;
+}
+
+int ZEXPORT inflateEnd(strm)
+z_streamp strm;
+{
+    struct inflate_state FAR *state;
+    if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0)
+        return Z_STREAM_ERROR;
+    state = (struct inflate_state FAR *)strm->state;
+    if (state->window != Z_NULL) ZFREE(strm, state->window);
+    ZFREE(strm, strm->state);
+    strm->state = Z_NULL;
+    Tracev((stderr, "inflate: end\n"));
+    return Z_OK;
+}
+
+int ZEXPORT inflateGetDictionary(strm, dictionary, dictLength)
+z_streamp strm;
+Bytef *dictionary;
+uInt *dictLength;
+{
+    struct inflate_state FAR *state;
+
+    /* check state */
+    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+    state = (struct inflate_state FAR *)strm->state;
+
+    /* copy dictionary */
+    if (state->whave && dictionary != Z_NULL) {
+        zmemcpy(dictionary, state->window + state->wnext,
+                state->whave - state->wnext);
+        zmemcpy(dictionary + state->whave - state->wnext,
+                state->window, state->wnext);
+    }
+    if (dictLength != Z_NULL)
+        *dictLength = state->whave;
+    return Z_OK;
+}
+
+int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength)
+z_streamp strm;
+const Bytef *dictionary;
+uInt dictLength;
+{
+    struct inflate_state FAR *state;
+    unsigned long dictid;
+    int ret;
+
+    /* check state */
+    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+    state = (struct inflate_state FAR *)strm->state;
+    if (state->wrap != 0 && state->mode != DICT)
+        return Z_STREAM_ERROR;
+
+    /* check for correct dictionary identifier */
+    if (state->mode == DICT) {
+        dictid = adler32(0L, Z_NULL, 0);
+        dictid = adler32(dictid, dictionary, dictLength);
+        if (dictid != state->check)
+            return Z_DATA_ERROR;
+    }
+
+    /* copy dictionary to window using updatewindow(), which will amend the
+       existing dictionary if appropriate */
+    ret = updatewindow(strm, dictionary + dictLength, dictLength);
+    if (ret) {
+        state->mode = MEM;
+        return Z_MEM_ERROR;
+    }
+    state->havedict = 1;
+    Tracev((stderr, "inflate:   dictionary set\n"));
+    return Z_OK;
+}
+
+int ZEXPORT inflateGetHeader(strm, head)
+z_streamp strm;
+gz_headerp head;
+{
+    struct inflate_state FAR *state;
+
+    /* check state */
+    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+    state = (struct inflate_state FAR *)strm->state;
+    if ((state->wrap & 2) == 0) return Z_STREAM_ERROR;
+
+    /* save header structure */
+    state->head = head;
+    head->done = 0;
+    return Z_OK;
+}
+
+/*
+   Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff.  Return when found
+   or when out of input.  When called, *have is the number of pattern bytes
+   found in order so far, in 0..3.  On return *have is updated to the new
+   state.  If on return *have equals four, then the pattern was found and the
+   return value is how many bytes were read including the last byte of the
+   pattern.  If *have is less than four, then the pattern has not been found
+   yet and the return value is len.  In the latter case, syncsearch() can be
+   called again with more data and the *have state.  *have is initialized to
+   zero for the first call.
+ */
+local unsigned syncsearch(have, buf, len)
+unsigned FAR *have;
+const unsigned char FAR *buf;
+unsigned len;
+{
+    unsigned got;
+    unsigned next;
+
+    got = *have;
+    next = 0;
+    while (next < len && got < 4) {
+        if ((int)(buf[next]) == (got < 2 ? 0 : 0xff))
+            got++;
+        else if (buf[next])
+            got = 0;
+        else
+            got = 4 - got;
+        next++;
+    }
+    *have = got;
+    return next;
+}
+
+int ZEXPORT inflateSync(strm)
+z_streamp strm;
+{
+    unsigned len;               /* number of bytes to look at or looked at */
+    unsigned long in, out;      /* temporary to save total_in and total_out */
+    unsigned char buf[4];       /* to restore bit buffer to byte string */
+    struct inflate_state FAR *state;
+
+    /* check parameters */
+    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+    state = (struct inflate_state FAR *)strm->state;
+    if (strm->avail_in == 0 && state->bits < 8) return Z_BUF_ERROR;
+
+    /* if first time, start search in bit buffer */
+    if (state->mode != SYNC) {
+        state->mode = SYNC;
+        state->hold <<= state->bits & 7;
+        state->bits -= state->bits & 7;
+        len = 0;
+        while (state->bits >= 8) {
+            buf[len++] = (unsigned char)(state->hold);
+            state->hold >>= 8;
+            state->bits -= 8;
+        }
+        state->have = 0;
+        syncsearch(&(state->have), buf, len);
+    }
+
+    /* search available input */
+    len = syncsearch(&(state->have), strm->next_in, strm->avail_in);
+    strm->avail_in -= len;
+    strm->next_in += len;
+    strm->total_in += len;
+
+    /* return no joy or set up to restart inflate() on a new block */
+    if (state->have != 4) return Z_DATA_ERROR;
+    in = strm->total_in;  out = strm->total_out;
+    inflateReset(strm);
+    strm->total_in = in;  strm->total_out = out;
+    state->mode = TYPE;
+    return Z_OK;
+}
+
+/*
+   Returns true if inflate is currently at the end of a block generated by
+   Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP
+   implementation to provide an additional safety check. PPP uses
+   Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored
+   block. When decompressing, PPP checks that at the end of input packet,
+   inflate is waiting for these length bytes.
+ */
+int ZEXPORT inflateSyncPoint(strm)
+z_streamp strm;
+{
+    struct inflate_state FAR *state;
+
+    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+    state = (struct inflate_state FAR *)strm->state;
+    return state->mode == STORED && state->bits == 0;
+}
+
+int ZEXPORT inflateCopy(dest, source)
+z_streamp dest;
+z_streamp source;
+{
+    struct inflate_state FAR *state;
+    struct inflate_state FAR *copy;
+    unsigned char FAR *window;
+    unsigned wsize;
+
+    /* check input */
+    if (dest == Z_NULL || source == Z_NULL || source->state == Z_NULL ||
+        source->zalloc == (alloc_func)0 || source->zfree == (free_func)0)
+        return Z_STREAM_ERROR;
+    state = (struct inflate_state FAR *)source->state;
+
+    /* allocate space */
+    copy = (struct inflate_state FAR *)
+           ZALLOC(source, 1, sizeof(struct inflate_state));
+    if (copy == Z_NULL) return Z_MEM_ERROR;
+    window = Z_NULL;
+    if (state->window != Z_NULL) {
+        window = (unsigned char FAR *)
+                 ZALLOC(source, 1U << state->wbits, sizeof(unsigned char));
+        if (window == Z_NULL) {
+            ZFREE(source, copy);
+            return Z_MEM_ERROR;
+        }
+    }
+
+    /* copy state */
+    zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream));
+    zmemcpy((voidpf)copy, (voidpf)state, sizeof(struct inflate_state));
+    if (state->lencode >= state->codes &&
+        state->lencode <= state->codes + ENOUGH - 1) {
+        copy->lencode = copy->codes + (state->lencode - state->codes);
+        copy->distcode = copy->codes + (state->distcode - state->codes);
+    }
+    copy->next = copy->codes + (state->next - state->codes);
+    if (window != Z_NULL) {
+        wsize = 1U << state->wbits;
+        zmemcpy(window, state->window, wsize);
+    }
+    copy->window = window;
+    dest->state = (struct internal_state FAR *)copy;
+    return Z_OK;
+}
+
+int ZEXPORT inflateUndermine(strm, subvert)
+z_streamp strm;
+int subvert;
+{
+    struct inflate_state FAR *state;
+
+    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
+    state = (struct inflate_state FAR *)strm->state;
+    state->sane = !subvert;
+#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+    return Z_OK;
+#else
+    state->sane = 1;
+    return Z_DATA_ERROR;
+#endif
+}
+
+long ZEXPORT inflateMark(strm)
+z_streamp strm;
+{
+    struct inflate_state FAR *state;
+
+    if (strm == Z_NULL || strm->state == Z_NULL) return -1L << 16;
+    state = (struct inflate_state FAR *)strm->state;
+    return ((long)(state->back) << 16) +
+        (state->mode == COPY ? state->length :
+            (state->mode == MATCH ? state->was - state->length : 0));
+}
Index: uKadecot/trunk/tools/zlib/inflate.h
===================================================================
--- uKadecot/trunk/tools/zlib/inflate.h	(revision 101)
+++ uKadecot/trunk/tools/zlib/inflate.h	(revision 101)
@@ -0,0 +1,122 @@
+/* inflate.h -- internal inflate state definition
+ * Copyright (C) 1995-2009 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/* WARNING: this file should *not* be used by applications. It is
+   part of the implementation of the compression library and is
+   subject to change. Applications should only use zlib.h.
+ */
+
+/* define NO_GZIP when compiling if you want to disable gzip header and
+   trailer decoding by inflate().  NO_GZIP would be used to avoid linking in
+   the crc code when it is not needed.  For shared libraries, gzip decoding
+   should be left enabled. */
+#ifndef NO_GZIP
+#  define GUNZIP
+#endif
+
+/* Possible inflate modes between inflate() calls */
+typedef enum {
+    HEAD,       /* i: waiting for magic header */
+    FLAGS,      /* i: waiting for method and flags (gzip) */
+    TIME,       /* i: waiting for modification time (gzip) */
+    OS,         /* i: waiting for extra flags and operating system (gzip) */
+    EXLEN,      /* i: waiting for extra length (gzip) */
+    EXTRA,      /* i: waiting for extra bytes (gzip) */
+    NAME,       /* i: waiting for end of file name (gzip) */
+    COMMENT,    /* i: waiting for end of comment (gzip) */
+    HCRC,       /* i: waiting for header crc (gzip) */
+    DICTID,     /* i: waiting for dictionary check value */
+    DICT,       /* waiting for inflateSetDictionary() call */
+        TYPE,       /* i: waiting for type bits, including last-flag bit */
+        TYPEDO,     /* i: same, but skip check to exit inflate on new block */
+        STORED,     /* i: waiting for stored size (length and complement) */
+        COPY_,      /* i/o: same as COPY below, but only first time in */
+        COPY,       /* i/o: waiting for input or output to copy stored block */
+        TABLE,      /* i: waiting for dynamic block table lengths */
+        LENLENS,    /* i: waiting for code length code lengths */
+        CODELENS,   /* i: waiting for length/lit and distance code lengths */
+            LEN_,       /* i: same as LEN below, but only first time in */
+            LEN,        /* i: waiting for length/lit/eob code */
+            LENEXT,     /* i: waiting for length extra bits */
+            DIST,       /* i: waiting for distance code */
+            DISTEXT,    /* i: waiting for distance extra bits */
+            MATCH,      /* o: waiting for output space to copy string */
+            LIT,        /* o: waiting for output space to write literal */
+    CHECK,      /* i: waiting for 32-bit check value */
+    LENGTH,     /* i: waiting for 32-bit length (gzip) */
+    DONE,       /* finished check, done -- remain here until reset */
+    BAD,        /* got a data error -- remain here until reset */
+    MEM,        /* got an inflate() memory error -- remain here until reset */
+    SYNC        /* looking for synchronization bytes to restart inflate() */
+} inflate_mode;
+
+/*
+    State transitions between above modes -
+
+    (most modes can go to BAD or MEM on error -- not shown for clarity)
+
+    Process header:
+        HEAD -> (gzip) or (zlib) or (raw)
+        (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME -> COMMENT ->
+                  HCRC -> TYPE
+        (zlib) -> DICTID or TYPE
+        DICTID -> DICT -> TYPE
+        (raw) -> TYPEDO
+    Read deflate blocks:
+            TYPE -> TYPEDO -> STORED or TABLE or LEN_ or CHECK
+            STORED -> COPY_ -> COPY -> TYPE
+            TABLE -> LENLENS -> CODELENS -> LEN_
+            LEN_ -> LEN
+    Read deflate codes in fixed or dynamic block:
+                LEN -> LENEXT or LIT or TYPE
+                LENEXT -> DIST -> DISTEXT -> MATCH -> LEN
+                LIT -> LEN
+    Process trailer:
+        CHECK -> LENGTH -> DONE
+ */
+
+/* state maintained between inflate() calls.  Approximately 10K bytes. */
+struct inflate_state {
+    inflate_mode mode;          /* current inflate mode */
+    int last;                   /* true if processing last block */
+    int wrap;                   /* bit 0 true for zlib, bit 1 true for gzip */
+    int havedict;               /* true if dictionary provided */
+    int flags;                  /* gzip header method and flags (0 if zlib) */
+    unsigned dmax;              /* zlib header max distance (INFLATE_STRICT) */
+    unsigned long check;        /* protected copy of check value */
+    unsigned long total;        /* protected copy of output count */
+    gz_headerp head;            /* where to save gzip header information */
+        /* sliding window */
+    unsigned wbits;             /* log base 2 of requested window size */
+    unsigned wsize;             /* window size or zero if not using window */
+    unsigned whave;             /* valid bytes in the window */
+    unsigned wnext;             /* window write index */
+    unsigned char FAR *window;  /* allocated sliding window, if needed */
+        /* bit accumulator */
+    unsigned long hold;         /* input bit accumulator */
+    unsigned bits;              /* number of bits in "in" */
+        /* for string and stored block copying */
+    unsigned length;            /* literal or length of data to copy */
+    unsigned offset;            /* distance back to copy string from */
+        /* for table and code decoding */
+    unsigned extra;             /* extra bits needed */
+        /* fixed and dynamic code tables */
+    code const FAR *lencode;    /* starting table for length/literal codes */
+    code const FAR *distcode;   /* starting table for distance codes */
+    unsigned lenbits;           /* index bits for lencode */
+    unsigned distbits;          /* index bits for distcode */
+        /* dynamic table building */
+    unsigned ncode;             /* number of code length code lengths */
+    unsigned nlen;              /* number of length code lengths */
+    unsigned ndist;             /* number of distance code lengths */
+    unsigned have;              /* number of code lengths in lens[] */
+    code FAR *next;             /* next available space in codes[] */
+    unsigned short lens[320];   /* temporary storage for code lengths */
+    unsigned short work[288];   /* work area for code table building */
+    code codes[ENOUGH];         /* space for code tables */
+    int sane;                   /* if false, allow invalid distance too far */
+    int back;                   /* bits back of last unprocessed length/lit */
+    unsigned was;               /* initial length of match */
+};
Index: uKadecot/trunk/tools/zlib/inftrees.c
===================================================================
--- uKadecot/trunk/tools/zlib/inftrees.c	(revision 101)
+++ uKadecot/trunk/tools/zlib/inftrees.c	(revision 101)
@@ -0,0 +1,306 @@
+/* inftrees.c -- generate Huffman trees for efficient decoding
+ * Copyright (C) 1995-2013 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+#include "zutil.h"
+#include "inftrees.h"
+
+#define MAXBITS 15
+
+const char inflate_copyright[] =
+   " inflate 1.2.8 Copyright 1995-2013 Mark Adler ";
+/*
+  If you use the zlib library in a product, an acknowledgment is welcome
+  in the documentation of your product. If for some reason you cannot
+  include such an acknowledgment, I would appreciate that you keep this
+  copyright string in the executable of your product.
+ */
+
+/*
+   Build a set of tables to decode the provided canonical Huffman code.
+   The code lengths are lens[0..codes-1].  The result starts at *table,
+   whose indices are 0..2^bits-1.  work is a writable array of at least
+   lens shorts, which is used as a work area.  type is the type of code
+   to be generated, CODES, LENS, or DISTS.  On return, zero is success,
+   -1 is an invalid code, and +1 means that ENOUGH isn't enough.  table
+   on return points to the next available entry's address.  bits is the
+   requested root table index bits, and on return it is the actual root
+   table index bits.  It will differ if the request is greater than the
+   longest code or if it is less than the shortest code.
+ */
+int ZLIB_INTERNAL inflate_table(type, lens, codes, table, bits, work)
+codetype type;
+unsigned short FAR *lens;
+unsigned codes;
+code FAR * FAR *table;
+unsigned FAR *bits;
+unsigned short FAR *work;
+{
+    unsigned len;               /* a code's length in bits */
+    unsigned sym;               /* index of code symbols */
+    unsigned min, max;          /* minimum and maximum code lengths */
+    unsigned root;              /* number of index bits for root table */
+    unsigned curr;              /* number of index bits for current table */
+    unsigned drop;              /* code bits to drop for sub-table */
+    int left;                   /* number of prefix codes available */
+    unsigned used;              /* code entries in table used */
+    unsigned huff;              /* Huffman code */
+    unsigned incr;              /* for incrementing code, index */
+    unsigned fill;              /* index for replicating entries */
+    unsigned low;               /* low bits for current root entry */
+    unsigned mask;              /* mask for low root bits */
+    code here;                  /* table entry for duplication */
+    code FAR *next;             /* next available space in table */
+    const unsigned short FAR *base;     /* base value table to use */
+    const unsigned short FAR *extra;    /* extra bits table to use */
+    int end;                    /* use base and extra for symbol > end */
+    unsigned short count[MAXBITS+1];    /* number of codes of each length */
+    unsigned short offs[MAXBITS+1];     /* offsets in table for each length */
+    static const unsigned short lbase[31] = { /* Length codes 257..285 base */
+        3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
+        35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
+    static const unsigned short lext[31] = { /* Length codes 257..285 extra */
+        16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
+        19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78};
+    static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
+        1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
+        257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
+        8193, 12289, 16385, 24577, 0, 0};
+    static const unsigned short dext[32] = { /* Distance codes 0..29 extra */
+        16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
+        23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
+        28, 28, 29, 29, 64, 64};
+
+    /*
+       Process a set of code lengths to create a canonical Huffman code.  The
+       code lengths are lens[0..codes-1].  Each length corresponds to the
+       symbols 0..codes-1.  The Huffman code is generated by first sorting the
+       symbols by length from short to long, and retaining the symbol order
+       for codes with equal lengths.  Then the code starts with all zero bits
+       for the first code of the shortest length, and the codes are integer
+       increments for the same length, and zeros are appended as the length
+       increases.  For the deflate format, these bits are stored backwards
+       from their more natural integer increment ordering, and so when the
+       decoding tables are built in the large loop below, the integer codes
+       are incremented backwards.
+
+       This routine assumes, but does not check, that all of the entries in
+       lens[] are in the range 0..MAXBITS.  The caller must assure this.
+       1..MAXBITS is interpreted as that code length.  zero means that that
+       symbol does not occur in this code.
+
+       The codes are sorted by computing a count of codes for each length,
+       creating from that a table of starting indices for each length in the
+       sorted table, and then entering the symbols in order in the sorted
+       table.  The sorted table is work[], with that space being provided by
+       the caller.
+
+       The length counts are used for other purposes as well, i.e. finding
+       the minimum and maximum length codes, determining if there are any
+       codes at all, checking for a valid set of lengths, and looking ahead
+       at length counts to determine sub-table sizes when building the
+       decoding tables.
+     */
+
+    /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
+    for (len = 0; len <= MAXBITS; len++)
+        count[len] = 0;
+    for (sym = 0; sym < codes; sym++)
+        count[lens[sym]]++;
+
+    /* bound code lengths, force root to be within code lengths */
+    root = *bits;
+    for (max = MAXBITS; max >= 1; max--)
+        if (count[max] != 0) break;
+    if (root > max) root = max;
+    if (max == 0) {                     /* no symbols to code at all */
+        here.op = (unsigned char)64;    /* invalid code marker */
+        here.bits = (unsigned char)1;
+        here.val = (unsigned short)0;
+        *(*table)++ = here;             /* make a table to force an error */
+        *(*table)++ = here;
+        *bits = 1;
+        return 0;     /* no symbols, but wait for decoding to report error */
+    }
+    for (min = 1; min < max; min++)
+        if (count[min] != 0) break;
+    if (root < min) root = min;
+
+    /* check for an over-subscribed or incomplete set of lengths */
+    left = 1;
+    for (len = 1; len <= MAXBITS; len++) {
+        left <<= 1;
+        left -= count[len];
+        if (left < 0) return -1;        /* over-subscribed */
+    }
+    if (left > 0 && (type == CODES || max != 1))
+        return -1;                      /* incomplete set */
+
+    /* generate offsets into symbol table for each length for sorting */
+    offs[1] = 0;
+    for (len = 1; len < MAXBITS; len++)
+        offs[len + 1] = offs[len] + count[len];
+
+    /* sort symbols by length, by symbol order within each length */
+    for (sym = 0; sym < codes; sym++)
+        if (lens[sym] != 0) work[offs[lens[sym]]++] = (unsigned short)sym;
+
+    /*
+       Create and fill in decoding tables.  In this loop, the table being
+       filled is at next and has curr index bits.  The code being used is huff
+       with length len.  That code is converted to an index by dropping drop
+       bits off of the bottom.  For codes where len is less than drop + curr,
+       those top drop + curr - len bits are incremented through all values to
+       fill the table with replicated entries.
+
+       root is the number of index bits for the root table.  When len exceeds
+       root, sub-tables are created pointed to by the root entry with an index
+       of the low root bits of huff.  This is saved in low to check for when a
+       new sub-table should be started.  drop is zero when the root table is
+       being filled, and drop is root when sub-tables are being filled.
+
+       When a new sub-table is needed, it is necessary to look ahead in the
+       code lengths to determine what size sub-table is needed.  The length
+       counts are used for this, and so count[] is decremented as codes are
+       entered in the tables.
+
+       used keeps track of how many table entries have been allocated from the
+       provided *table space.  It is checked for LENS and DIST tables against
+       the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
+       the initial root table size constants.  See the comments in inftrees.h
+       for more information.
+
+       sym increments through all symbols, and the loop terminates when
+       all codes of length max, i.e. all codes, have been processed.  This
+       routine permits incomplete codes, so another loop after this one fills
+       in the rest of the decoding tables with invalid code markers.
+     */
+
+    /* set up for code type */
+    switch (type) {
+    case CODES:
+        base = extra = work;    /* dummy value--not used */
+        end = 19;
+        break;
+    case LENS:
+        base = lbase;
+        base -= 257;
+        extra = lext;
+        extra -= 257;
+        end = 256;
+        break;
+    default:            /* DISTS */
+        base = dbase;
+        extra = dext;
+        end = -1;
+    }
+
+    /* initialize state for loop */
+    huff = 0;                   /* starting code */
+    sym = 0;                    /* starting code symbol */
+    len = min;                  /* starting code length */
+    next = *table;              /* current table to fill in */
+    curr = root;                /* current table index bits */
+    drop = 0;                   /* current bits to drop from code for index */
+    low = (unsigned)(-1);       /* trigger new sub-table when len > root */
+    used = 1U << root;          /* use root table entries */
+    mask = used - 1;            /* mask for comparing low */
+
+    /* check available table space */
+    if ((type == LENS && used > ENOUGH_LENS) ||
+        (type == DISTS && used > ENOUGH_DISTS))
+        return 1;
+
+    /* process all codes and make table entries */
+    for (;;) {
+        /* create table entry */
+        here.bits = (unsigned char)(len - drop);
+        if ((int)(work[sym]) < end) {
+            here.op = (unsigned char)0;
+            here.val = work[sym];
+        }
+        else if ((int)(work[sym]) > end) {
+            here.op = (unsigned char)(extra[work[sym]]);
+            here.val = base[work[sym]];
+        }
+        else {
+            here.op = (unsigned char)(32 + 64);         /* end of block */
+            here.val = 0;
+        }
+
+        /* replicate for those indices with low len bits equal to huff */
+        incr = 1U << (len - drop);
+        fill = 1U << curr;
+        min = fill;                 /* save offset to next table */
+        do {
+            fill -= incr;
+            next[(huff >> drop) + fill] = here;
+        } while (fill != 0);
+
+        /* backwards increment the len-bit code huff */
+        incr = 1U << (len - 1);
+        while (huff & incr)
+            incr >>= 1;
+        if (incr != 0) {
+            huff &= incr - 1;
+            huff += incr;
+        }
+        else
+            huff = 0;
+
+        /* go to next symbol, update count, len */
+        sym++;
+        if (--(count[len]) == 0) {
+            if (len == max) break;
+            len = lens[work[sym]];
+        }
+
+        /* create new sub-table if needed */
+        if (len > root && (huff & mask) != low) {
+            /* if first time, transition to sub-tables */
+            if (drop == 0)
+                drop = root;
+
+            /* increment past last table */
+            next += min;            /* here min is 1 << curr */
+
+            /* determine length of next table */
+            curr = len - drop;
+            left = (int)(1 << curr);
+            while (curr + drop < max) {
+                left -= count[curr + drop];
+                if (left <= 0) break;
+                curr++;
+                left <<= 1;
+            }
+
+            /* check for enough space */
+            used += 1U << curr;
+            if ((type == LENS && used > ENOUGH_LENS) ||
+                (type == DISTS && used > ENOUGH_DISTS))
+                return 1;
+
+            /* point entry in root table to sub-table */
+            low = huff & mask;
+            (*table)[low].op = (unsigned char)curr;
+            (*table)[low].bits = (unsigned char)root;
+            (*table)[low].val = (unsigned short)(next - *table);
+        }
+    }
+
+    /* fill in remaining table entry if code is incomplete (guaranteed to have
+       at most one remaining entry, since if the code is incomplete, the
+       maximum code length that was allowed to get this far is one bit) */
+    if (huff != 0) {
+        here.op = (unsigned char)64;            /* invalid code marker */
+        here.bits = (unsigned char)(len - drop);
+        here.val = (unsigned short)0;
+        next[huff] = here;
+    }
+
+    /* set return parameters */
+    *table += used;
+    *bits = root;
+    return 0;
+}
Index: uKadecot/trunk/tools/zlib/inftrees.h
===================================================================
--- uKadecot/trunk/tools/zlib/inftrees.h	(revision 101)
+++ uKadecot/trunk/tools/zlib/inftrees.h	(revision 101)
@@ -0,0 +1,62 @@
+/* inftrees.h -- header to use inftrees.c
+ * Copyright (C) 1995-2005, 2010 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/* WARNING: this file should *not* be used by applications. It is
+   part of the implementation of the compression library and is
+   subject to change. Applications should only use zlib.h.
+ */
+
+/* Structure for decoding tables.  Each entry provides either the
+   information needed to do the operation requested by the code that
+   indexed that table entry, or it provides a pointer to another
+   table that indexes more bits of the code.  op indicates whether
+   the entry is a pointer to another table, a literal, a length or
+   distance, an end-of-block, or an invalid code.  For a table
+   pointer, the low four bits of op is the number of index bits of
+   that table.  For a length or distance, the low four bits of op
+   is the number of extra bits to get after the code.  bits is
+   the number of bits in this code or part of the code to drop off
+   of the bit buffer.  val is the actual byte to output in the case
+   of a literal, the base length or distance, or the offset from
+   the current table to the next table.  Each entry is four bytes. */
+typedef struct {
+    unsigned char op;           /* operation, extra bits, table bits */
+    unsigned char bits;         /* bits in this part of the code */
+    unsigned short val;         /* offset in table or code value */
+} code;
+
+/* op values as set by inflate_table():
+    00000000 - literal
+    0000tttt - table link, tttt != 0 is the number of table index bits
+    0001eeee - length or distance, eeee is the number of extra bits
+    01100000 - end of block
+    01000000 - invalid code
+ */
+
+/* Maximum size of the dynamic table.  The maximum number of code structures is
+   1444, which is the sum of 852 for literal/length codes and 592 for distance
+   codes.  These values were found by exhaustive searches using the program
+   examples/enough.c found in the zlib distribtution.  The arguments to that
+   program are the number of symbols, the initial root table size, and the
+   maximum bit length of a code.  "enough 286 9 15" for literal/length codes
+   returns returns 852, and "enough 30 6 15" for distance codes returns 592.
+   The initial root table size (9 or 6) is found in the fifth argument of the
+   inflate_table() calls in inflate.c and infback.c.  If the root table size is
+   changed, then these maximum sizes would be need to be recalculated and
+   updated. */
+#define ENOUGH_LENS 852
+#define ENOUGH_DISTS 592
+#define ENOUGH (ENOUGH_LENS+ENOUGH_DISTS)
+
+/* Type of code to build for inflate_table() */
+typedef enum {
+    CODES,
+    LENS,
+    DISTS
+} codetype;
+
+int ZLIB_INTERNAL inflate_table OF((codetype type, unsigned short FAR *lens,
+                             unsigned codes, code FAR * FAR *table,
+                             unsigned FAR *bits, unsigned short FAR *work));
Index: uKadecot/trunk/tools/zlib/trees.c
===================================================================
--- uKadecot/trunk/tools/zlib/trees.c	(revision 101)
+++ uKadecot/trunk/tools/zlib/trees.c	(revision 101)
@@ -0,0 +1,1226 @@
+/* trees.c -- output deflated data using Huffman coding
+ * Copyright (C) 1995-2012 Jean-loup Gailly
+ * detect_data_type() function provided freely by Cosmin Truta, 2006
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/*
+ *  ALGORITHM
+ *
+ *      The "deflation" process uses several Huffman trees. The more
+ *      common source values are represented by shorter bit sequences.
+ *
+ *      Each code tree is stored in a compressed form which is itself
+ * a Huffman encoding of the lengths of all the code strings (in
+ * ascending order by source values).  The actual code strings are
+ * reconstructed from the lengths in the inflate process, as described
+ * in the deflate specification.
+ *
+ *  REFERENCES
+ *
+ *      Deutsch, L.P.,"'Deflate' Compressed Data Format Specification".
+ *      Available in ftp.uu.net:/pub/archiving/zip/doc/deflate-1.1.doc
+ *
+ *      Storer, James A.
+ *          Data Compression:  Methods and Theory, pp. 49-50.
+ *          Computer Science Press, 1988.  ISBN 0-7167-8156-5.
+ *
+ *      Sedgewick, R.
+ *          Algorithms, p290.
+ *          Addison-Wesley, 1983. ISBN 0-201-06672-6.
+ */
+
+/* @(#) $Id$ */
+
+/* #define GEN_TREES_H */
+
+#include "deflate.h"
+
+#ifdef DEBUG
+#  include <ctype.h>
+#endif
+
+/* ===========================================================================
+ * Constants
+ */
+
+#define MAX_BL_BITS 7
+/* Bit length codes must not exceed MAX_BL_BITS bits */
+
+#define END_BLOCK 256
+/* end of block literal code */
+
+#define REP_3_6      16
+/* repeat previous bit length 3-6 times (2 bits of repeat count) */
+
+#define REPZ_3_10    17
+/* repeat a zero length 3-10 times  (3 bits of repeat count) */
+
+#define REPZ_11_138  18
+/* repeat a zero length 11-138 times  (7 bits of repeat count) */
+
+local const int extra_lbits[LENGTH_CODES] /* extra bits for each length code */
+   = {0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0};
+
+local const int extra_dbits[D_CODES] /* extra bits for each distance code */
+   = {0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13};
+
+local const int extra_blbits[BL_CODES]/* extra bits for each bit length code */
+   = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7};
+
+local const uch bl_order[BL_CODES]
+   = {16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15};
+/* The lengths of the bit length codes are sent in order of decreasing
+ * probability, to avoid transmitting the lengths for unused bit length codes.
+ */
+
+/* ===========================================================================
+ * Local data. These are initialized only once.
+ */
+
+#define DIST_CODE_LEN  512 /* see definition of array dist_code below */
+
+#if defined(GEN_TREES_H) || !defined(STDC)
+/* non ANSI compilers may not accept trees.h */
+
+local ct_data static_ltree[L_CODES+2];
+/* The static literal tree. Since the bit lengths are imposed, there is no
+ * need for the L_CODES extra codes used during heap construction. However
+ * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
+ * below).
+ */
+
+local ct_data static_dtree[D_CODES];
+/* The static distance tree. (Actually a trivial tree since all codes use
+ * 5 bits.)
+ */
+
+uch _dist_code[DIST_CODE_LEN];
+/* Distance codes. The first 256 values correspond to the distances
+ * 3 .. 258, the last 256 values correspond to the top 8 bits of
+ * the 15 bit distances.
+ */
+
+uch _length_code[MAX_MATCH-MIN_MATCH+1];
+/* length code for each normalized match length (0 == MIN_MATCH) */
+
+local int base_length[LENGTH_CODES];
+/* First normalized length for each code (0 = MIN_MATCH) */
+
+local int base_dist[D_CODES];
+/* First normalized distance for each code (0 = distance of 1) */
+
+#else
+#  include "trees.h"
+#endif /* GEN_TREES_H */
+
+struct static_tree_desc_s {
+    const ct_data *static_tree;  /* static tree or NULL */
+    const intf *extra_bits;      /* extra bits for each code or NULL */
+    int     extra_base;          /* base index for extra_bits */
+    int     elems;               /* max number of elements in the tree */
+    int     max_length;          /* max bit length for the codes */
+};
+
+local static_tree_desc  static_l_desc =
+{static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS};
+
+local static_tree_desc  static_d_desc =
+{static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS};
+
+local static_tree_desc  static_bl_desc =
+{(const ct_data *)0, extra_blbits, 0,   BL_CODES, MAX_BL_BITS};
+
+/* ===========================================================================
+ * Local (static) routines in this file.
+ */
+
+local void tr_static_init OF((void));
+local void init_block     OF((deflate_state *s));
+local void pqdownheap     OF((deflate_state *s, ct_data *tree, int k));
+local void gen_bitlen     OF((deflate_state *s, tree_desc *desc));
+local void gen_codes      OF((ct_data *tree, int max_code, ushf *bl_count));
+local void build_tree     OF((deflate_state *s, tree_desc *desc));
+local void scan_tree      OF((deflate_state *s, ct_data *tree, int max_code));
+local void send_tree      OF((deflate_state *s, ct_data *tree, int max_code));
+local int  build_bl_tree  OF((deflate_state *s));
+local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes,
+                              int blcodes));
+local void compress_block OF((deflate_state *s, const ct_data *ltree,
+                              const ct_data *dtree));
+local int  detect_data_type OF((deflate_state *s));
+local unsigned bi_reverse OF((unsigned value, int length));
+local void bi_windup      OF((deflate_state *s));
+local void bi_flush       OF((deflate_state *s));
+local void copy_block     OF((deflate_state *s, charf *buf, unsigned len,
+                              int header));
+
+#ifdef GEN_TREES_H
+local void gen_trees_header OF((void));
+#endif
+
+#ifndef DEBUG
+#  define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len)
+   /* Send a code of the given tree. c and tree must not have side effects */
+
+#else /* DEBUG */
+#  define send_code(s, c, tree) \
+     { if (z_verbose>2) fprintf(stderr,"\ncd %3d ",(c)); \
+       send_bits(s, tree[c].Code, tree[c].Len); }
+#endif
+
+/* ===========================================================================
+ * Output a short LSB first on the stream.
+ * IN assertion: there is enough room in pendingBuf.
+ */
+#define put_short(s, w) { \
+    put_byte(s, (uch)((w) & 0xff)); \
+    put_byte(s, (uch)((ush)(w) >> 8)); \
+}
+
+/* ===========================================================================
+ * Send a value on a given number of bits.
+ * IN assertion: length <= 16 and value fits in length bits.
+ */
+#ifdef DEBUG
+local void send_bits      OF((deflate_state *s, int value, int length));
+
+local void send_bits(s, value, length)
+    deflate_state *s;
+    int value;  /* value to send */
+    int length; /* number of bits */
+{
+    Tracevv((stderr," l %2d v %4x ", length, value));
+    Assert(length > 0 && length <= 15, "invalid length");
+    s->bits_sent += (ulg)length;
+
+    /* If not enough room in bi_buf, use (valid) bits from bi_buf and
+     * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid))
+     * unused bits in value.
+     */
+    if (s->bi_valid > (int)Buf_size - length) {
+        s->bi_buf |= (ush)value << s->bi_valid;
+        put_short(s, s->bi_buf);
+        s->bi_buf = (ush)value >> (Buf_size - s->bi_valid);
+        s->bi_valid += length - Buf_size;
+    } else {
+        s->bi_buf |= (ush)value << s->bi_valid;
+        s->bi_valid += length;
+    }
+}
+#else /* !DEBUG */
+
+#define send_bits(s, value, length) \
+{ int len = length;\
+  if (s->bi_valid > (int)Buf_size - len) {\
+    int val = value;\
+    s->bi_buf |= (ush)val << s->bi_valid;\
+    put_short(s, s->bi_buf);\
+    s->bi_buf = (ush)val >> (Buf_size - s->bi_valid);\
+    s->bi_valid += len - Buf_size;\
+  } else {\
+    s->bi_buf |= (ush)(value) << s->bi_valid;\
+    s->bi_valid += len;\
+  }\
+}
+#endif /* DEBUG */
+
+
+/* the arguments must not have side effects */
+
+/* ===========================================================================
+ * Initialize the various 'constant' tables.
+ */
+local void tr_static_init()
+{
+#if defined(GEN_TREES_H) || !defined(STDC)
+    static int static_init_done = 0;
+    int n;        /* iterates over tree elements */
+    int bits;     /* bit counter */
+    int length;   /* length value */
+    int code;     /* code value */
+    int dist;     /* distance index */
+    ush bl_count[MAX_BITS+1];
+    /* number of codes at each bit length for an optimal tree */
+
+    if (static_init_done) return;
+
+    /* For some embedded targets, global variables are not initialized: */
+#ifdef NO_INIT_GLOBAL_POINTERS
+    static_l_desc.static_tree = static_ltree;
+    static_l_desc.extra_bits = extra_lbits;
+    static_d_desc.static_tree = static_dtree;
+    static_d_desc.extra_bits = extra_dbits;
+    static_bl_desc.extra_bits = extra_blbits;
+#endif
+
+    /* Initialize the mapping length (0..255) -> length code (0..28) */
+    length = 0;
+    for (code = 0; code < LENGTH_CODES-1; code++) {
+        base_length[code] = length;
+        for (n = 0; n < (1<<extra_lbits[code]); n++) {
+            _length_code[length++] = (uch)code;
+        }
+    }
+    Assert (length == 256, "tr_static_init: length != 256");
+    /* Note that the length 255 (match length 258) can be represented
+     * in two different ways: code 284 + 5 bits or code 285, so we
+     * overwrite length_code[255] to use the best encoding:
+     */
+    _length_code[length-1] = (uch)code;
+
+    /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
+    dist = 0;
+    for (code = 0 ; code < 16; code++) {
+        base_dist[code] = dist;
+        for (n = 0; n < (1<<extra_dbits[code]); n++) {
+            _dist_code[dist++] = (uch)code;
+        }
+    }
+    Assert (dist == 256, "tr_static_init: dist != 256");
+    dist >>= 7; /* from now on, all distances are divided by 128 */
+    for ( ; code < D_CODES; code++) {
+        base_dist[code] = dist << 7;
+        for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) {
+            _dist_code[256 + dist++] = (uch)code;
+        }
+    }
+    Assert (dist == 256, "tr_static_init: 256+dist != 512");
+
+    /* Construct the codes of the static literal tree */
+    for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0;
+    n = 0;
+    while (n <= 143) static_ltree[n++].Len = 8, bl_count[8]++;
+    while (n <= 255) static_ltree[n++].Len = 9, bl_count[9]++;
+    while (n <= 279) static_ltree[n++].Len = 7, bl_count[7]++;
+    while (n <= 287) static_ltree[n++].Len = 8, bl_count[8]++;
+    /* Codes 286 and 287 do not exist, but we must include them in the
+     * tree construction to get a canonical Huffman tree (longest code
+     * all ones)
+     */
+    gen_codes((ct_data *)static_ltree, L_CODES+1, bl_count);
+
+    /* The static distance tree is trivial: */
+    for (n = 0; n < D_CODES; n++) {
+        static_dtree[n].Len = 5;
+        static_dtree[n].Code = bi_reverse((unsigned)n, 5);
+    }
+    static_init_done = 1;
+
+#  ifdef GEN_TREES_H
+    gen_trees_header();
+#  endif
+#endif /* defined(GEN_TREES_H) || !defined(STDC) */
+}
+
+/* ===========================================================================
+ * Genererate the file trees.h describing the static trees.
+ */
+#ifdef GEN_TREES_H
+#  ifndef DEBUG
+#    include <stdio.h>
+#  endif
+
+#  define SEPARATOR(i, last, width) \
+      ((i) == (last)? "\n};\n\n" :    \
+       ((i) % (width) == (width)-1 ? ",\n" : ", "))
+
+void gen_trees_header()
+{
+    FILE *header = fopen("trees.h", "w");
+    int i;
+
+    Assert (header != NULL, "Can't open trees.h");
+    fprintf(header,
+            "/* header created automatically with -DGEN_TREES_H */\n\n");
+
+    fprintf(header, "local const ct_data static_ltree[L_CODES+2] = {\n");
+    for (i = 0; i < L_CODES+2; i++) {
+        fprintf(header, "{{%3u},{%3u}}%s", static_ltree[i].Code,
+                static_ltree[i].Len, SEPARATOR(i, L_CODES+1, 5));
+    }
+
+    fprintf(header, "local const ct_data static_dtree[D_CODES] = {\n");
+    for (i = 0; i < D_CODES; i++) {
+        fprintf(header, "{{%2u},{%2u}}%s", static_dtree[i].Code,
+                static_dtree[i].Len, SEPARATOR(i, D_CODES-1, 5));
+    }
+
+    fprintf(header, "const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = {\n");
+    for (i = 0; i < DIST_CODE_LEN; i++) {
+        fprintf(header, "%2u%s", _dist_code[i],
+                SEPARATOR(i, DIST_CODE_LEN-1, 20));
+    }
+
+    fprintf(header,
+        "const uch ZLIB_INTERNAL _length_code[MAX_MATCH-MIN_MATCH+1]= {\n");
+    for (i = 0; i < MAX_MATCH-MIN_MATCH+1; i++) {
+        fprintf(header, "%2u%s", _length_code[i],
+                SEPARATOR(i, MAX_MATCH-MIN_MATCH, 20));
+    }
+
+    fprintf(header, "local const int base_length[LENGTH_CODES] = {\n");
+    for (i = 0; i < LENGTH_CODES; i++) {
+        fprintf(header, "%1u%s", base_length[i],
+                SEPARATOR(i, LENGTH_CODES-1, 20));
+    }
+
+    fprintf(header, "local const int base_dist[D_CODES] = {\n");
+    for (i = 0; i < D_CODES; i++) {
+        fprintf(header, "%5u%s", base_dist[i],
+                SEPARATOR(i, D_CODES-1, 10));
+    }
+
+    fclose(header);
+}
+#endif /* GEN_TREES_H */
+
+/* ===========================================================================
+ * Initialize the tree data structures for a new zlib stream.
+ */
+void ZLIB_INTERNAL _tr_init(s)
+    deflate_state *s;
+{
+    tr_static_init();
+
+    s->l_desc.dyn_tree = s->dyn_ltree;
+    s->l_desc.stat_desc = &static_l_desc;
+
+    s->d_desc.dyn_tree = s->dyn_dtree;
+    s->d_desc.stat_desc = &static_d_desc;
+
+    s->bl_desc.dyn_tree = s->bl_tree;
+    s->bl_desc.stat_desc = &static_bl_desc;
+
+    s->bi_buf = 0;
+    s->bi_valid = 0;
+#ifdef DEBUG
+    s->compressed_len = 0L;
+    s->bits_sent = 0L;
+#endif
+
+    /* Initialize the first block of the first file: */
+    init_block(s);
+}
+
+/* ===========================================================================
+ * Initialize a new block.
+ */
+local void init_block(s)
+    deflate_state *s;
+{
+    int n; /* iterates over tree elements */
+
+    /* Initialize the trees. */
+    for (n = 0; n < L_CODES;  n++) s->dyn_ltree[n].Freq = 0;
+    for (n = 0; n < D_CODES;  n++) s->dyn_dtree[n].Freq = 0;
+    for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0;
+
+    s->dyn_ltree[END_BLOCK].Freq = 1;
+    s->opt_len = s->static_len = 0L;
+    s->last_lit = s->matches = 0;
+}
+
+#define SMALLEST 1
+/* Index within the heap array of least frequent node in the Huffman tree */
+
+
+/* ===========================================================================
+ * Remove the smallest element from the heap and recreate the heap with
+ * one less element. Updates heap and heap_len.
+ */
+#define pqremove(s, tree, top) \
+{\
+    top = s->heap[SMALLEST]; \
+    s->heap[SMALLEST] = s->heap[s->heap_len--]; \
+    pqdownheap(s, tree, SMALLEST); \
+}
+
+/* ===========================================================================
+ * Compares to subtrees, using the tree depth as tie breaker when
+ * the subtrees have equal frequency. This minimizes the worst case length.
+ */
+#define smaller(tree, n, m, depth) \
+   (tree[n].Freq < tree[m].Freq || \
+   (tree[n].Freq == tree[m].Freq && depth[n] <= depth[m]))
+
+/* ===========================================================================
+ * Restore the heap property by moving down the tree starting at node k,
+ * exchanging a node with the smallest of its two sons if necessary, stopping
+ * when the heap property is re-established (each father smaller than its
+ * two sons).
+ */
+local void pqdownheap(s, tree, k)
+    deflate_state *s;
+    ct_data *tree;  /* the tree to restore */
+    int k;               /* node to move down */
+{
+    int v = s->heap[k];
+    int j = k << 1;  /* left son of k */
+    while (j <= s->heap_len) {
+        /* Set j to the smallest of the two sons: */
+        if (j < s->heap_len &&
+            smaller(tree, s->heap[j+1], s->heap[j], s->depth)) {
+            j++;
+        }
+        /* Exit if v is smaller than both sons */
+        if (smaller(tree, v, s->heap[j], s->depth)) break;
+
+        /* Exchange v with the smallest son */
+        s->heap[k] = s->heap[j];  k = j;
+
+        /* And continue down the tree, setting j to the left son of k */
+        j <<= 1;
+    }
+    s->heap[k] = v;
+}
+
+/* ===========================================================================
+ * Compute the optimal bit lengths for a tree and update the total bit length
+ * for the current block.
+ * IN assertion: the fields freq and dad are set, heap[heap_max] and
+ *    above are the tree nodes sorted by increasing frequency.
+ * OUT assertions: the field len is set to the optimal bit length, the
+ *     array bl_count contains the frequencies for each bit length.
+ *     The length opt_len is updated; static_len is also updated if stree is
+ *     not null.
+ */
+local void gen_bitlen(s, desc)
+    deflate_state *s;
+    tree_desc *desc;    /* the tree descriptor */
+{
+    ct_data *tree        = desc->dyn_tree;
+    int max_code         = desc->max_code;
+    const ct_data *stree = desc->stat_desc->static_tree;
+    const intf *extra    = desc->stat_desc->extra_bits;
+    int base             = desc->stat_desc->extra_base;
+    int max_length       = desc->stat_desc->max_length;
+    int h;              /* heap index */
+    int n, m;           /* iterate over the tree elements */
+    int bits;           /* bit length */
+    int xbits;          /* extra bits */
+    ush f;              /* frequency */
+    int overflow = 0;   /* number of elements with bit length too large */
+
+    for (bits = 0; bits <= MAX_BITS; bits++) s->bl_count[bits] = 0;
+
+    /* In a first pass, compute the optimal bit lengths (which may
+     * overflow in the case of the bit length tree).
+     */
+    tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */
+
+    for (h = s->heap_max+1; h < HEAP_SIZE; h++) {
+        n = s->heap[h];
+        bits = tree[tree[n].Dad].Len + 1;
+        if (bits > max_length) bits = max_length, overflow++;
+        tree[n].Len = (ush)bits;
+        /* We overwrite tree[n].Dad which is no longer needed */
+
+        if (n > max_code) continue; /* not a leaf node */
+
+        s->bl_count[bits]++;
+        xbits = 0;
+        if (n >= base) xbits = extra[n-base];
+        f = tree[n].Freq;
+        s->opt_len += (ulg)f * (bits + xbits);
+        if (stree) s->static_len += (ulg)f * (stree[n].Len + xbits);
+    }
+    if (overflow == 0) return;
+
+    Trace((stderr,"\nbit length overflow\n"));
+    /* This happens for example on obj2 and pic of the Calgary corpus */
+
+    /* Find the first bit length which could increase: */
+    do {
+        bits = max_length-1;
+        while (s->bl_count[bits] == 0) bits--;
+        s->bl_count[bits]--;      /* move one leaf down the tree */
+        s->bl_count[bits+1] += 2; /* move one overflow item as its brother */
+        s->bl_count[max_length]--;
+        /* The brother of the overflow item also moves one step up,
+         * but this does not affect bl_count[max_length]
+         */
+        overflow -= 2;
+    } while (overflow > 0);
+
+    /* Now recompute all bit lengths, scanning in increasing frequency.
+     * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
+     * lengths instead of fixing only the wrong ones. This idea is taken
+     * from 'ar' written by Haruhiko Okumura.)
+     */
+    for (bits = max_length; bits != 0; bits--) {
+        n = s->bl_count[bits];
+        while (n != 0) {
+            m = s->heap[--h];
+            if (m > max_code) continue;
+            if ((unsigned) tree[m].Len != (unsigned) bits) {
+                Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
+                s->opt_len += ((long)bits - (long)tree[m].Len)
+                              *(long)tree[m].Freq;
+                tree[m].Len = (ush)bits;
+            }
+            n--;
+        }
+    }
+}
+
+/* ===========================================================================
+ * Generate the codes for a given tree and bit counts (which need not be
+ * optimal).
+ * IN assertion: the array bl_count contains the bit length statistics for
+ * the given tree and the field len is set for all tree elements.
+ * OUT assertion: the field code is set for all tree elements of non
+ *     zero code length.
+ */
+local void gen_codes (tree, max_code, bl_count)
+    ct_data *tree;             /* the tree to decorate */
+    int max_code;              /* largest code with non zero frequency */
+    ushf *bl_count;            /* number of codes at each bit length */
+{
+    ush next_code[MAX_BITS+1]; /* next code value for each bit length */
+    ush code = 0;              /* running code value */
+    int bits;                  /* bit index */
+    int n;                     /* code index */
+
+    /* The distribution counts are first used to generate the code values
+     * without bit reversal.
+     */
+    for (bits = 1; bits <= MAX_BITS; bits++) {
+        next_code[bits] = code = (code + bl_count[bits-1]) << 1;
+    }
+    /* Check that the bit counts in bl_count are consistent. The last code
+     * must be all ones.
+     */
+    Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
+            "inconsistent bit counts");
+    Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
+
+    for (n = 0;  n <= max_code; n++) {
+        int len = tree[n].Len;
+        if (len == 0) continue;
+        /* Now reverse the bits */
+        tree[n].Code = bi_reverse(next_code[len]++, len);
+
+        Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
+             n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
+    }
+}
+
+/* ===========================================================================
+ * Construct one Huffman tree and assigns the code bit strings and lengths.
+ * Update the total bit length for the current block.
+ * IN assertion: the field freq is set for all tree elements.
+ * OUT assertions: the fields len and code are set to the optimal bit length
+ *     and corresponding code. The length opt_len is updated; static_len is
+ *     also updated if stree is not null. The field max_code is set.
+ */
+local void build_tree(s, desc)
+    deflate_state *s;
+    tree_desc *desc; /* the tree descriptor */
+{
+    ct_data *tree         = desc->dyn_tree;
+    const ct_data *stree  = desc->stat_desc->static_tree;
+    int elems             = desc->stat_desc->elems;
+    int n, m;          /* iterate over heap elements */
+    int max_code = -1; /* largest code with non zero frequency */
+    int node;          /* new node being created */
+
+    /* Construct the initial heap, with least frequent element in
+     * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
+     * heap[0] is not used.
+     */
+    s->heap_len = 0, s->heap_max = HEAP_SIZE;
+
+    for (n = 0; n < elems; n++) {
+        if (tree[n].Freq != 0) {
+            s->heap[++(s->heap_len)] = max_code = n;
+            s->depth[n] = 0;
+        } else {
+            tree[n].Len = 0;
+        }
+    }
+
+    /* The pkzip format requires that at least one distance code exists,
+     * and that at least one bit should be sent even if there is only one
+     * possible code. So to avoid special checks later on we force at least
+     * two codes of non zero frequency.
+     */
+    while (s->heap_len < 2) {
+        node = s->heap[++(s->heap_len)] = (max_code < 2 ? ++max_code : 0);
+        tree[node].Freq = 1;
+        s->depth[node] = 0;
+        s->opt_len--; if (stree) s->static_len -= stree[node].Len;
+        /* node is 0 or 1 so it does not have extra bits */
+    }
+    desc->max_code = max_code;
+
+    /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
+     * establish sub-heaps of increasing lengths:
+     */
+    for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n);
+
+    /* Construct the Huffman tree by repeatedly combining the least two
+     * frequent nodes.
+     */
+    node = elems;              /* next internal node of the tree */
+    do {
+        pqremove(s, tree, n);  /* n = node of least frequency */
+        m = s->heap[SMALLEST]; /* m = node of next least frequency */
+
+        s->heap[--(s->heap_max)] = n; /* keep the nodes sorted by frequency */
+        s->heap[--(s->heap_max)] = m;
+
+        /* Create a new node father of n and m */
+        tree[node].Freq = tree[n].Freq + tree[m].Freq;
+        s->depth[node] = (uch)((s->depth[n] >= s->depth[m] ?
+                                s->depth[n] : s->depth[m]) + 1);
+        tree[n].Dad = tree[m].Dad = (ush)node;
+#ifdef DUMP_BL_TREE
+        if (tree == s->bl_tree) {
+            fprintf(stderr,"\nnode %d(%d), sons %d(%d) %d(%d)",
+                    node, tree[node].Freq, n, tree[n].Freq, m, tree[m].Freq);
+        }
+#endif
+        /* and insert the new node in the heap */
+        s->heap[SMALLEST] = node++;
+        pqdownheap(s, tree, SMALLEST);
+
+    } while (s->heap_len >= 2);
+
+    s->heap[--(s->heap_max)] = s->heap[SMALLEST];
+
+    /* At this point, the fields freq and dad are set. We can now
+     * generate the bit lengths.
+     */
+    gen_bitlen(s, (tree_desc *)desc);
+
+    /* The field len is now set, we can generate the bit codes */
+    gen_codes ((ct_data *)tree, max_code, s->bl_count);
+}
+
+/* ===========================================================================
+ * Scan a literal or distance tree to determine the frequencies of the codes
+ * in the bit length tree.
+ */
+local void scan_tree (s, tree, max_code)
+    deflate_state *s;
+    ct_data *tree;   /* the tree to be scanned */
+    int max_code;    /* and its largest code of non zero frequency */
+{
+    int n;                     /* iterates over all tree elements */
+    int prevlen = -1;          /* last emitted length */
+    int curlen;                /* length of current code */
+    int nextlen = tree[0].Len; /* length of next code */
+    int count = 0;             /* repeat count of the current code */
+    int max_count = 7;         /* max repeat count */
+    int min_count = 4;         /* min repeat count */
+
+    if (nextlen == 0) max_count = 138, min_count = 3;
+    tree[max_code+1].Len = (ush)0xffff; /* guard */
+
+    for (n = 0; n <= max_code; n++) {
+        curlen = nextlen; nextlen = tree[n+1].Len;
+        if (++count < max_count && curlen == nextlen) {
+            continue;
+        } else if (count < min_count) {
+            s->bl_tree[curlen].Freq += count;
+        } else if (curlen != 0) {
+            if (curlen != prevlen) s->bl_tree[curlen].Freq++;
+            s->bl_tree[REP_3_6].Freq++;
+        } else if (count <= 10) {
+            s->bl_tree[REPZ_3_10].Freq++;
+        } else {
+            s->bl_tree[REPZ_11_138].Freq++;
+        }
+        count = 0; prevlen = curlen;
+        if (nextlen == 0) {
+            max_count = 138, min_count = 3;
+        } else if (curlen == nextlen) {
+            max_count = 6, min_count = 3;
+        } else {
+            max_count = 7, min_count = 4;
+        }
+    }
+}
+
+/* ===========================================================================
+ * Send a literal or distance tree in compressed form, using the codes in
+ * bl_tree.
+ */
+local void send_tree (s, tree, max_code)
+    deflate_state *s;
+    ct_data *tree; /* the tree to be scanned */
+    int max_code;       /* and its largest code of non zero frequency */
+{
+    int n;                     /* iterates over all tree elements */
+    int prevlen = -1;          /* last emitted length */
+    int curlen;                /* length of current code */
+    int nextlen = tree[0].Len; /* length of next code */
+    int count = 0;             /* repeat count of the current code */
+    int max_count = 7;         /* max repeat count */
+    int min_count = 4;         /* min repeat count */
+
+    /* tree[max_code+1].Len = -1; */  /* guard already set */
+    if (nextlen == 0) max_count = 138, min_count = 3;
+
+    for (n = 0; n <= max_code; n++) {
+        curlen = nextlen; nextlen = tree[n+1].Len;
+        if (++count < max_count && curlen == nextlen) {
+            continue;
+        } else if (count < min_count) {
+            do { send_code(s, curlen, s->bl_tree); } while (--count != 0);
+
+        } else if (curlen != 0) {
+            if (curlen != prevlen) {
+                send_code(s, curlen, s->bl_tree); count--;
+            }
+            Assert(count >= 3 && count <= 6, " 3_6?");
+            send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2);
+
+        } else if (count <= 10) {
+            send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3);
+
+        } else {
+            send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7);
+        }
+        count = 0; prevlen = curlen;
+        if (nextlen == 0) {
+            max_count = 138, min_count = 3;
+        } else if (curlen == nextlen) {
+            max_count = 6, min_count = 3;
+        } else {
+            max_count = 7, min_count = 4;
+        }
+    }
+}
+
+/* ===========================================================================
+ * Construct the Huffman tree for the bit lengths and return the index in
+ * bl_order of the last bit length code to send.
+ */
+local int build_bl_tree(s)
+    deflate_state *s;
+{
+    int max_blindex;  /* index of last bit length code of non zero freq */
+
+    /* Determine the bit length frequencies for literal and distance trees */
+    scan_tree(s, (ct_data *)s->dyn_ltree, s->l_desc.max_code);
+    scan_tree(s, (ct_data *)s->dyn_dtree, s->d_desc.max_code);
+
+    /* Build the bit length tree: */
+    build_tree(s, (tree_desc *)(&(s->bl_desc)));
+    /* opt_len now includes the length of the tree representations, except
+     * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
+     */
+
+    /* Determine the number of bit length codes to send. The pkzip format
+     * requires that at least 4 bit length codes be sent. (appnote.txt says
+     * 3 but the actual value used is 4.)
+     */
+    for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) {
+        if (s->bl_tree[bl_order[max_blindex]].Len != 0) break;
+    }
+    /* Update opt_len to include the bit length tree and counts */
+    s->opt_len += 3*(max_blindex+1) + 5+5+4;
+    Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
+            s->opt_len, s->static_len));
+
+    return max_blindex;
+}
+
+/* ===========================================================================
+ * Send the header for a block using dynamic Huffman trees: the counts, the
+ * lengths of the bit length codes, the literal tree and the distance tree.
+ * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
+ */
+local void send_all_trees(s, lcodes, dcodes, blcodes)
+    deflate_state *s;
+    int lcodes, dcodes, blcodes; /* number of codes for each tree */
+{
+    int rank;                    /* index in bl_order */
+
+    Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
+    Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
+            "too many codes");
+    Tracev((stderr, "\nbl counts: "));
+    send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */
+    send_bits(s, dcodes-1,   5);
+    send_bits(s, blcodes-4,  4); /* not -3 as stated in appnote.txt */
+    for (rank = 0; rank < blcodes; rank++) {
+        Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
+        send_bits(s, s->bl_tree[bl_order[rank]].Len, 3);
+    }
+    Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
+
+    send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */
+    Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
+
+    send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */
+    Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
+}
+
+/* ===========================================================================
+ * Send a stored block
+ */
+void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last)
+    deflate_state *s;
+    charf *buf;       /* input block */
+    ulg stored_len;   /* length of input block */
+    int last;         /* one if this is the last block for a file */
+{
+    send_bits(s, (STORED_BLOCK<<1)+last, 3);    /* send block type */
+#ifdef DEBUG
+    s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;
+    s->compressed_len += (stored_len + 4) << 3;
+#endif
+    copy_block(s, buf, (unsigned)stored_len, 1); /* with header */
+}
+
+/* ===========================================================================
+ * Flush the bits in the bit buffer to pending output (leaves at most 7 bits)
+ */
+void ZLIB_INTERNAL _tr_flush_bits(s)
+    deflate_state *s;
+{
+    bi_flush(s);
+}
+
+/* ===========================================================================
+ * Send one empty static block to give enough lookahead for inflate.
+ * This takes 10 bits, of which 7 may remain in the bit buffer.
+ */
+void ZLIB_INTERNAL _tr_align(s)
+    deflate_state *s;
+{
+    send_bits(s, STATIC_TREES<<1, 3);
+    send_code(s, END_BLOCK, static_ltree);
+#ifdef DEBUG
+    s->compressed_len += 10L; /* 3 for block type, 7 for EOB */
+#endif
+    bi_flush(s);
+}
+
+/* ===========================================================================
+ * Determine the best encoding for the current block: dynamic trees, static
+ * trees or store, and output the encoded block to the zip file.
+ */
+void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
+    deflate_state *s;
+    charf *buf;       /* input block, or NULL if too old */
+    ulg stored_len;   /* length of input block */
+    int last;         /* one if this is the last block for a file */
+{
+    ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */
+    int max_blindex = 0;  /* index of last bit length code of non zero freq */
+
+    /* Build the Huffman trees unless a stored block is forced */
+    if (s->level > 0) {
+
+        /* Check if the file is binary or text */
+        if (s->strm->data_type == Z_UNKNOWN)
+            s->strm->data_type = detect_data_type(s);
+
+        /* Construct the literal and distance trees */
+        build_tree(s, (tree_desc *)(&(s->l_desc)));
+        Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
+                s->static_len));
+
+        build_tree(s, (tree_desc *)(&(s->d_desc)));
+        Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
+                s->static_len));
+        /* At this point, opt_len and static_len are the total bit lengths of
+         * the compressed block data, excluding the tree representations.
+         */
+
+        /* Build the bit length tree for the above two trees, and get the index
+         * in bl_order of the last bit length code to send.
+         */
+        max_blindex = build_bl_tree(s);
+
+        /* Determine the best encoding. Compute the block lengths in bytes. */
+        opt_lenb = (s->opt_len+3+7)>>3;
+        static_lenb = (s->static_len+3+7)>>3;
+
+        Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
+                opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
+                s->last_lit));
+
+        if (static_lenb <= opt_lenb) opt_lenb = static_lenb;
+
+    } else {
+        Assert(buf != (char*)0, "lost buf");
+        opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
+    }
+
+#ifdef FORCE_STORED
+    if (buf != (char*)0) { /* force stored block */
+#else
+    if (stored_len+4 <= opt_lenb && buf != (char*)0) {
+                       /* 4: two words for the lengths */
+#endif
+        /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
+         * Otherwise we can't have processed more than WSIZE input bytes since
+         * the last block flush, because compression would have been
+         * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
+         * transform a block into a stored block.
+         */
+        _tr_stored_block(s, buf, stored_len, last);
+
+#ifdef FORCE_STATIC
+    } else if (static_lenb >= 0) { /* force static trees */
+#else
+    } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) {
+#endif
+        send_bits(s, (STATIC_TREES<<1)+last, 3);
+        compress_block(s, (const ct_data *)static_ltree,
+                       (const ct_data *)static_dtree);
+#ifdef DEBUG
+        s->compressed_len += 3 + s->static_len;
+#endif
+    } else {
+        send_bits(s, (DYN_TREES<<1)+last, 3);
+        send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1,
+                       max_blindex+1);
+        compress_block(s, (const ct_data *)s->dyn_ltree,
+                       (const ct_data *)s->dyn_dtree);
+#ifdef DEBUG
+        s->compressed_len += 3 + s->opt_len;
+#endif
+    }
+    Assert (s->compressed_len == s->bits_sent, "bad compressed size");
+    /* The above check is made mod 2^32, for files larger than 512 MB
+     * and uLong implemented on 32 bits.
+     */
+    init_block(s);
+
+    if (last) {
+        bi_windup(s);
+#ifdef DEBUG
+        s->compressed_len += 7;  /* align on byte boundary */
+#endif
+    }
+    Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
+           s->compressed_len-7*last));
+}
+
+/* ===========================================================================
+ * Save the match info and tally the frequency counts. Return true if
+ * the current block must be flushed.
+ */
+int ZLIB_INTERNAL _tr_tally (s, dist, lc)
+    deflate_state *s;
+    unsigned dist;  /* distance of matched string */
+    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */
+{
+    s->d_buf[s->last_lit] = (ush)dist;
+    s->l_buf[s->last_lit++] = (uch)lc;
+    if (dist == 0) {
+        /* lc is the unmatched char */
+        s->dyn_ltree[lc].Freq++;
+    } else {
+        s->matches++;
+        /* Here, lc is the match length - MIN_MATCH */
+        dist--;             /* dist = match distance - 1 */
+        Assert((ush)dist < (ush)MAX_DIST(s) &&
+               (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
+               (ush)d_code(dist) < (ush)D_CODES,  "_tr_tally: bad match");
+
+        s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++;
+        s->dyn_dtree[d_code(dist)].Freq++;
+    }
+
+#ifdef TRUNCATE_BLOCK
+    /* Try to guess if it is profitable to stop the current block here */
+    if ((s->last_lit & 0x1fff) == 0 && s->level > 2) {
+        /* Compute an upper bound for the compressed length */
+        ulg out_length = (ulg)s->last_lit*8L;
+        ulg in_length = (ulg)((long)s->strstart - s->block_start);
+        int dcode;
+        for (dcode = 0; dcode < D_CODES; dcode++) {
+            out_length += (ulg)s->dyn_dtree[dcode].Freq *
+                (5L+extra_dbits[dcode]);
+        }
+        out_length >>= 3;
+        Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
+               s->last_lit, in_length, out_length,
+               100L - out_length*100L/in_length));
+        if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1;
+    }
+#endif
+    return (s->last_lit == s->lit_bufsize-1);
+    /* We avoid equality with lit_bufsize because of wraparound at 64K
+     * on 16 bit machines and because stored blocks are restricted to
+     * 64K-1 bytes.
+     */
+}
+
+/* ===========================================================================
+ * Send the block data compressed using the given Huffman trees
+ */
+local void compress_block(s, ltree, dtree)
+    deflate_state *s;
+    const ct_data *ltree; /* literal tree */
+    const ct_data *dtree; /* distance tree */
+{
+    unsigned dist;      /* distance of matched string */
+    int lc;             /* match length or unmatched char (if dist == 0) */
+    unsigned lx = 0;    /* running index in l_buf */
+    unsigned code;      /* the code to send */
+    int extra;          /* number of extra bits to send */
+
+    if (s->last_lit != 0) do {
+        dist = s->d_buf[lx];
+        lc = s->l_buf[lx++];
+        if (dist == 0) {
+            send_code(s, lc, ltree); /* send a literal byte */
+            Tracecv(isgraph(lc), (stderr," '%c' ", lc));
+        } else {
+            /* Here, lc is the match length - MIN_MATCH */
+            code = _length_code[lc];
+            send_code(s, code+LITERALS+1, ltree); /* send the length code */
+            extra = extra_lbits[code];
+            if (extra != 0) {
+                lc -= base_length[code];
+                send_bits(s, lc, extra);       /* send the extra length bits */
+            }
+            dist--; /* dist is now the match distance - 1 */
+            code = d_code(dist);
+            Assert (code < D_CODES, "bad d_code");
+
+            send_code(s, code, dtree);       /* send the distance code */
+            extra = extra_dbits[code];
+            if (extra != 0) {
+                dist -= base_dist[code];
+                send_bits(s, dist, extra);   /* send the extra distance bits */
+            }
+        } /* literal or match pair ? */
+
+        /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
+        Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
+               "pendingBuf overflow");
+
+    } while (lx < s->last_lit);
+
+    send_code(s, END_BLOCK, ltree);
+}
+
+/* ===========================================================================
+ * Check if the data type is TEXT or BINARY, using the following algorithm:
+ * - TEXT if the two conditions below are satisfied:
+ *    a) There are no non-portable control characters belonging to the
+ *       "black list" (0..6, 14..25, 28..31).
+ *    b) There is at least one printable character belonging to the
+ *       "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
+ * - BINARY otherwise.
+ * - The following partially-portable control characters form a
+ *   "gray list" that is ignored in this detection algorithm:
+ *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
+ * IN assertion: the fields Freq of dyn_ltree are set.
+ */
+local int detect_data_type(s)
+    deflate_state *s;
+{
+    /* black_mask is the bit mask of black-listed bytes
+     * set bits 0..6, 14..25, and 28..31
+     * 0xf3ffc07f = binary 11110011111111111100000001111111
+     */
+    unsigned long black_mask = 0xf3ffc07fUL;
+    int n;
+
+    /* Check for non-textual ("black-listed") bytes. */
+    for (n = 0; n <= 31; n++, black_mask >>= 1)
+        if ((black_mask & 1) && (s->dyn_ltree[n].Freq != 0))
+            return Z_BINARY;
+
+    /* Check for textual ("white-listed") bytes. */
+    if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0
+            || s->dyn_ltree[13].Freq != 0)
+        return Z_TEXT;
+    for (n = 32; n < LITERALS; n++)
+        if (s->dyn_ltree[n].Freq != 0)
+            return Z_TEXT;
+
+    /* There are no "black-listed" or "white-listed" bytes:
+     * this stream either is empty or has tolerated ("gray-listed") bytes only.
+     */
+    return Z_BINARY;
+}
+
+/* ===========================================================================
+ * Reverse the first len bits of a code, using straightforward code (a faster
+ * method would use a table)
+ * IN assertion: 1 <= len <= 15
+ */
+local unsigned bi_reverse(code, len)
+    unsigned code; /* the value to invert */
+    int len;       /* its bit length */
+{
+    register unsigned res = 0;
+    do {
+        res |= code & 1;
+        code >>= 1, res <<= 1;
+    } while (--len > 0);
+    return res >> 1;
+}
+
+/* ===========================================================================
+ * Flush the bit buffer, keeping at most 7 bits in it.
+ */
+local void bi_flush(s)
+    deflate_state *s;
+{
+    if (s->bi_valid == 16) {
+        put_short(s, s->bi_buf);
+        s->bi_buf = 0;
+        s->bi_valid = 0;
+    } else if (s->bi_valid >= 8) {
+        put_byte(s, (Byte)s->bi_buf);
+        s->bi_buf >>= 8;
+        s->bi_valid -= 8;
+    }
+}
+
+/* ===========================================================================
+ * Flush the bit buffer and align the output on a byte boundary
+ */
+local void bi_windup(s)
+    deflate_state *s;
+{
+    if (s->bi_valid > 8) {
+        put_short(s, s->bi_buf);
+    } else if (s->bi_valid > 0) {
+        put_byte(s, (Byte)s->bi_buf);
+    }
+    s->bi_buf = 0;
+    s->bi_valid = 0;
+#ifdef DEBUG
+    s->bits_sent = (s->bits_sent+7) & ~7;
+#endif
+}
+
+/* ===========================================================================
+ * Copy a stored block, storing first the length and its
+ * one's complement if requested.
+ */
+local void copy_block(s, buf, len, header)
+    deflate_state *s;
+    charf    *buf;    /* the input data */
+    unsigned len;     /* its length */
+    int      header;  /* true if block header must be written */
+{
+    bi_windup(s);        /* align on byte boundary */
+
+    if (header) {
+        put_short(s, (ush)len);
+        put_short(s, (ush)~len);
+#ifdef DEBUG
+        s->bits_sent += 2*16;
+#endif
+    }
+#ifdef DEBUG
+    s->bits_sent += (ulg)len<<3;
+#endif
+    while (len--) {
+        put_byte(s, *buf++);
+    }
+}
Index: uKadecot/trunk/tools/zlib/trees.h
===================================================================
--- uKadecot/trunk/tools/zlib/trees.h	(revision 101)
+++ uKadecot/trunk/tools/zlib/trees.h	(revision 101)
@@ -0,0 +1,128 @@
+/* header created automatically with -DGEN_TREES_H */
+
+local const ct_data static_ltree[L_CODES+2] = {
+{{ 12},{  8}}, {{140},{  8}}, {{ 76},{  8}}, {{204},{  8}}, {{ 44},{  8}},
+{{172},{  8}}, {{108},{  8}}, {{236},{  8}}, {{ 28},{  8}}, {{156},{  8}},
+{{ 92},{  8}}, {{220},{  8}}, {{ 60},{  8}}, {{188},{  8}}, {{124},{  8}},
+{{252},{  8}}, {{  2},{  8}}, {{130},{  8}}, {{ 66},{  8}}, {{194},{  8}},
+{{ 34},{  8}}, {{162},{  8}}, {{ 98},{  8}}, {{226},{  8}}, {{ 18},{  8}},
+{{146},{  8}}, {{ 82},{  8}}, {{210},{  8}}, {{ 50},{  8}}, {{178},{  8}},
+{{114},{  8}}, {{242},{  8}}, {{ 10},{  8}}, {{138},{  8}}, {{ 74},{  8}},
+{{202},{  8}}, {{ 42},{  8}}, {{170},{  8}}, {{106},{  8}}, {{234},{  8}},
+{{ 26},{  8}}, {{154},{  8}}, {{ 90},{  8}}, {{218},{  8}}, {{ 58},{  8}},
+{{186},{  8}}, {{122},{  8}}, {{250},{  8}}, {{  6},{  8}}, {{134},{  8}},
+{{ 70},{  8}}, {{198},{  8}}, {{ 38},{  8}}, {{166},{  8}}, {{102},{  8}},
+{{230},{  8}}, {{ 22},{  8}}, {{150},{  8}}, {{ 86},{  8}}, {{214},{  8}},
+{{ 54},{  8}}, {{182},{  8}}, {{118},{  8}}, {{246},{  8}}, {{ 14},{  8}},
+{{142},{  8}}, {{ 78},{  8}}, {{206},{  8}}, {{ 46},{  8}}, {{174},{  8}},
+{{110},{  8}}, {{238},{  8}}, {{ 30},{  8}}, {{158},{  8}}, {{ 94},{  8}},
+{{222},{  8}}, {{ 62},{  8}}, {{190},{  8}}, {{126},{  8}}, {{254},{  8}},
+{{  1},{  8}}, {{129},{  8}}, {{ 65},{  8}}, {{193},{  8}}, {{ 33},{  8}},
+{{161},{  8}}, {{ 97},{  8}}, {{225},{  8}}, {{ 17},{  8}}, {{145},{  8}},
+{{ 81},{  8}}, {{209},{  8}}, {{ 49},{  8}}, {{177},{  8}}, {{113},{  8}},
+{{241},{  8}}, {{  9},{  8}}, {{137},{  8}}, {{ 73},{  8}}, {{201},{  8}},
+{{ 41},{  8}}, {{169},{  8}}, {{105},{  8}}, {{233},{  8}}, {{ 25},{  8}},
+{{153},{  8}}, {{ 89},{  8}}, {{217},{  8}}, {{ 57},{  8}}, {{185},{  8}},
+{{121},{  8}}, {{249},{  8}}, {{  5},{  8}}, {{133},{  8}}, {{ 69},{  8}},
+{{197},{  8}}, {{ 37},{  8}}, {{165},{  8}}, {{101},{  8}}, {{229},{  8}},
+{{ 21},{  8}}, {{149},{  8}}, {{ 85},{  8}}, {{213},{  8}}, {{ 53},{  8}},
+{{181},{  8}}, {{117},{  8}}, {{245},{  8}}, {{ 13},{  8}}, {{141},{  8}},
+{{ 77},{  8}}, {{205},{  8}}, {{ 45},{  8}}, {{173},{  8}}, {{109},{  8}},
+{{237},{  8}}, {{ 29},{  8}}, {{157},{  8}}, {{ 93},{  8}}, {{221},{  8}},
+{{ 61},{  8}}, {{189},{  8}}, {{125},{  8}}, {{253},{  8}}, {{ 19},{  9}},
+{{275},{  9}}, {{147},{  9}}, {{403},{  9}}, {{ 83},{  9}}, {{339},{  9}},
+{{211},{  9}}, {{467},{  9}}, {{ 51},{  9}}, {{307},{  9}}, {{179},{  9}},
+{{435},{  9}}, {{115},{  9}}, {{371},{  9}}, {{243},{  9}}, {{499},{  9}},
+{{ 11},{  9}}, {{267},{  9}}, {{139},{  9}}, {{395},{  9}}, {{ 75},{  9}},
+{{331},{  9}}, {{203},{  9}}, {{459},{  9}}, {{ 43},{  9}}, {{299},{  9}},
+{{171},{  9}}, {{427},{  9}}, {{107},{  9}}, {{363},{  9}}, {{235},{  9}},
+{{491},{  9}}, {{ 27},{  9}}, {{283},{  9}}, {{155},{  9}}, {{411},{  9}},
+{{ 91},{  9}}, {{347},{  9}}, {{219},{  9}}, {{475},{  9}}, {{ 59},{  9}},
+{{315},{  9}}, {{187},{  9}}, {{443},{  9}}, {{123},{  9}}, {{379},{  9}},
+{{251},{  9}}, {{507},{  9}}, {{  7},{  9}}, {{263},{  9}}, {{135},{  9}},
+{{391},{  9}}, {{ 71},{  9}}, {{327},{  9}}, {{199},{  9}}, {{455},{  9}},
+{{ 39},{  9}}, {{295},{  9}}, {{167},{  9}}, {{423},{  9}}, {{103},{  9}},
+{{359},{  9}}, {{231},{  9}}, {{487},{  9}}, {{ 23},{  9}}, {{279},{  9}},
+{{151},{  9}}, {{407},{  9}}, {{ 87},{  9}}, {{343},{  9}}, {{215},{  9}},
+{{471},{  9}}, {{ 55},{  9}}, {{311},{  9}}, {{183},{  9}}, {{439},{  9}},
+{{119},{  9}}, {{375},{  9}}, {{247},{  9}}, {{503},{  9}}, {{ 15},{  9}},
+{{271},{  9}}, {{143},{  9}}, {{399},{  9}}, {{ 79},{  9}}, {{335},{  9}},
+{{207},{  9}}, {{463},{  9}}, {{ 47},{  9}}, {{303},{  9}}, {{175},{  9}},
+{{431},{  9}}, {{111},{  9}}, {{367},{  9}}, {{239},{  9}}, {{495},{  9}},
+{{ 31},{  9}}, {{287},{  9}}, {{159},{  9}}, {{415},{  9}}, {{ 95},{  9}},
+{{351},{  9}}, {{223},{  9}}, {{479},{  9}}, {{ 63},{  9}}, {{319},{  9}},
+{{191},{  9}}, {{447},{  9}}, {{127},{  9}}, {{383},{  9}}, {{255},{  9}},
+{{511},{  9}}, {{  0},{  7}}, {{ 64},{  7}}, {{ 32},{  7}}, {{ 96},{  7}},
+{{ 16},{  7}}, {{ 80},{  7}}, {{ 48},{  7}}, {{112},{  7}}, {{  8},{  7}},
+{{ 72},{  7}}, {{ 40},{  7}}, {{104},{  7}}, {{ 24},{  7}}, {{ 88},{  7}},
+{{ 56},{  7}}, {{120},{  7}}, {{  4},{  7}}, {{ 68},{  7}}, {{ 36},{  7}},
+{{100},{  7}}, {{ 20},{  7}}, {{ 84},{  7}}, {{ 52},{  7}}, {{116},{  7}},
+{{  3},{  8}}, {{131},{  8}}, {{ 67},{  8}}, {{195},{  8}}, {{ 35},{  8}},
+{{163},{  8}}, {{ 99},{  8}}, {{227},{  8}}
+};
+
+local const ct_data static_dtree[D_CODES] = {
+{{ 0},{ 5}}, {{16},{ 5}}, {{ 8},{ 5}}, {{24},{ 5}}, {{ 4},{ 5}},
+{{20},{ 5}}, {{12},{ 5}}, {{28},{ 5}}, {{ 2},{ 5}}, {{18},{ 5}},
+{{10},{ 5}}, {{26},{ 5}}, {{ 6},{ 5}}, {{22},{ 5}}, {{14},{ 5}},
+{{30},{ 5}}, {{ 1},{ 5}}, {{17},{ 5}}, {{ 9},{ 5}}, {{25},{ 5}},
+{{ 5},{ 5}}, {{21},{ 5}}, {{13},{ 5}}, {{29},{ 5}}, {{ 3},{ 5}},
+{{19},{ 5}}, {{11},{ 5}}, {{27},{ 5}}, {{ 7},{ 5}}, {{23},{ 5}}
+};
+
+const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = {
+ 0,  1,  2,  3,  4,  4,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,  8,  8,  8,  8,
+ 8,  8,  8,  8,  9,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10, 10, 10, 10, 10, 10,
+10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13,
+13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
+15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0, 16, 17,
+18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22,
+23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
+26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27,
+27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
+29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
+29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
+29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29
+};
+
+const uch ZLIB_INTERNAL _length_code[MAX_MATCH-MIN_MATCH+1]= {
+ 0,  1,  2,  3,  4,  5,  6,  7,  8,  8,  9,  9, 10, 10, 11, 11, 12, 12, 12, 12,
+13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16,
+17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19,
+19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22,
+22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23,
+23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
+25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26,
+26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28
+};
+
+local const int base_length[LENGTH_CODES] = {
+0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56,
+64, 80, 96, 112, 128, 160, 192, 224, 0
+};
+
+local const int base_dist[D_CODES] = {
+    0,     1,     2,     3,     4,     6,     8,    12,    16,    24,
+   32,    48,    64,    96,   128,   192,   256,   384,   512,   768,
+ 1024,  1536,  2048,  3072,  4096,  6144,  8192, 12288, 16384, 24576
+};
+
Index: uKadecot/trunk/tools/zlib/uncompr.c
===================================================================
--- uKadecot/trunk/tools/zlib/uncompr.c	(revision 101)
+++ uKadecot/trunk/tools/zlib/uncompr.c	(revision 101)
@@ -0,0 +1,59 @@
+/* uncompr.c -- decompress a memory buffer
+ * Copyright (C) 1995-2003, 2010 Jean-loup Gailly.
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/* @(#) $Id$ */
+
+#define ZLIB_INTERNAL
+#include "zlib.h"
+
+/* ===========================================================================
+     Decompresses the source buffer into the destination buffer.  sourceLen is
+   the byte length of the source buffer. Upon entry, destLen is the total
+   size of the destination buffer, which must be large enough to hold the
+   entire uncompressed data. (The size of the uncompressed data must have
+   been saved previously by the compressor and transmitted to the decompressor
+   by some mechanism outside the scope of this compression library.)
+   Upon exit, destLen is the actual size of the compressed buffer.
+
+     uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
+   enough memory, Z_BUF_ERROR if there was not enough room in the output
+   buffer, or Z_DATA_ERROR if the input data was corrupted.
+*/
+int ZEXPORT uncompress (dest, destLen, source, sourceLen)
+    Bytef *dest;
+    uLongf *destLen;
+    const Bytef *source;
+    uLong sourceLen;
+{
+    z_stream stream;
+    int err;
+
+    stream.next_in = (z_const Bytef *)source;
+    stream.avail_in = (uInt)sourceLen;
+    /* Check for source > 64K on 16-bit machine: */
+    if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
+
+    stream.next_out = dest;
+    stream.avail_out = (uInt)*destLen;
+    if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
+
+    stream.zalloc = (alloc_func)0;
+    stream.zfree = (free_func)0;
+
+    err = inflateInit(&stream);
+    if (err != Z_OK) return err;
+
+    err = inflate(&stream, Z_FINISH);
+    if (err != Z_STREAM_END) {
+        inflateEnd(&stream);
+        if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0))
+            return Z_DATA_ERROR;
+        return err;
+    }
+    *destLen = stream.total_out;
+
+    err = inflateEnd(&stream);
+    return err;
+}
Index: uKadecot/trunk/tools/zlib/zconf.h
===================================================================
--- uKadecot/trunk/tools/zlib/zconf.h	(revision 101)
+++ uKadecot/trunk/tools/zlib/zconf.h	(revision 101)
@@ -0,0 +1,511 @@
+/* zconf.h -- configuration of the zlib compression library
+ * Copyright (C) 1995-2013 Jean-loup Gailly.
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/* @(#) $Id$ */
+
+#ifndef ZCONF_H
+#define ZCONF_H
+
+/*
+ * If you *really* need a unique prefix for all types and library functions,
+ * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
+ * Even better than compiling with -DZ_PREFIX would be to use configure to set
+ * this permanently in zconf.h using "./configure --zprefix".
+ */
+#ifdef Z_PREFIX     /* may be set to #if 1 by ./configure */
+#  define Z_PREFIX_SET
+
+/* all linked symbols */
+#  define _dist_code            z__dist_code
+#  define _length_code          z__length_code
+#  define _tr_align             z__tr_align
+#  define _tr_flush_bits        z__tr_flush_bits
+#  define _tr_flush_block       z__tr_flush_block
+#  define _tr_init              z__tr_init
+#  define _tr_stored_block      z__tr_stored_block
+#  define _tr_tally             z__tr_tally
+#  define adler32               z_adler32
+#  define adler32_combine       z_adler32_combine
+#  define adler32_combine64     z_adler32_combine64
+#  ifndef Z_SOLO
+#    define compress              z_compress
+#    define compress2             z_compress2
+#    define compressBound         z_compressBound
+#  endif
+#  define crc32                 z_crc32
+#  define crc32_combine         z_crc32_combine
+#  define crc32_combine64       z_crc32_combine64
+#  define deflate               z_deflate
+#  define deflateBound          z_deflateBound
+#  define deflateCopy           z_deflateCopy
+#  define deflateEnd            z_deflateEnd
+#  define deflateInit2_         z_deflateInit2_
+#  define deflateInit_          z_deflateInit_
+#  define deflateParams         z_deflateParams
+#  define deflatePending        z_deflatePending
+#  define deflatePrime          z_deflatePrime
+#  define deflateReset          z_deflateReset
+#  define deflateResetKeep      z_deflateResetKeep
+#  define deflateSetDictionary  z_deflateSetDictionary
+#  define deflateSetHeader      z_deflateSetHeader
+#  define deflateTune           z_deflateTune
+#  define deflate_copyright     z_deflate_copyright
+#  define get_crc_table         z_get_crc_table
+#  ifndef Z_SOLO
+#    define gz_error              z_gz_error
+#    define gz_intmax             z_gz_intmax
+#    define gz_strwinerror        z_gz_strwinerror
+#    define gzbuffer              z_gzbuffer
+#    define gzclearerr            z_gzclearerr
+#    define gzclose               z_gzclose
+#    define gzclose_r             z_gzclose_r
+#    define gzclose_w             z_gzclose_w
+#    define gzdirect              z_gzdirect
+#    define gzdopen               z_gzdopen
+#    define gzeof                 z_gzeof
+#    define gzerror               z_gzerror
+#    define gzflush               z_gzflush
+#    define gzgetc                z_gzgetc
+#    define gzgetc_               z_gzgetc_
+#    define gzgets                z_gzgets
+#    define gzoffset              z_gzoffset
+#    define gzoffset64            z_gzoffset64
+#    define gzopen                z_gzopen
+#    define gzopen64              z_gzopen64
+#    ifdef _WIN32
+#      define gzopen_w              z_gzopen_w
+#    endif
+#    define gzprintf              z_gzprintf
+#    define gzvprintf             z_gzvprintf
+#    define gzputc                z_gzputc
+#    define gzputs                z_gzputs
+#    define gzread                z_gzread
+#    define gzrewind              z_gzrewind
+#    define gzseek                z_gzseek
+#    define gzseek64              z_gzseek64
+#    define gzsetparams           z_gzsetparams
+#    define gztell                z_gztell
+#    define gztell64              z_gztell64
+#    define gzungetc              z_gzungetc
+#    define gzwrite               z_gzwrite
+#  endif
+#  define inflate               z_inflate
+#  define inflateBack           z_inflateBack
+#  define inflateBackEnd        z_inflateBackEnd
+#  define inflateBackInit_      z_inflateBackInit_
+#  define inflateCopy           z_inflateCopy
+#  define inflateEnd            z_inflateEnd
+#  define inflateGetHeader      z_inflateGetHeader
+#  define inflateInit2_         z_inflateInit2_
+#  define inflateInit_          z_inflateInit_
+#  define inflateMark           z_inflateMark
+#  define inflatePrime          z_inflatePrime
+#  define inflateReset          z_inflateReset
+#  define inflateReset2         z_inflateReset2
+#  define inflateSetDictionary  z_inflateSetDictionary
+#  define inflateGetDictionary  z_inflateGetDictionary
+#  define inflateSync           z_inflateSync
+#  define inflateSyncPoint      z_inflateSyncPoint
+#  define inflateUndermine      z_inflateUndermine
+#  define inflateResetKeep      z_inflateResetKeep
+#  define inflate_copyright     z_inflate_copyright
+#  define inflate_fast          z_inflate_fast
+#  define inflate_table         z_inflate_table
+#  ifndef Z_SOLO
+#    define uncompress            z_uncompress
+#  endif
+#  define zError                z_zError
+#  ifndef Z_SOLO
+#    define zcalloc               z_zcalloc
+#    define zcfree                z_zcfree
+#  endif
+#  define zlibCompileFlags      z_zlibCompileFlags
+#  define zlibVersion           z_zlibVersion
+
+/* all zlib typedefs in zlib.h and zconf.h */
+#  define Byte                  z_Byte
+#  define Bytef                 z_Bytef
+#  define alloc_func            z_alloc_func
+#  define charf                 z_charf
+#  define free_func             z_free_func
+#  ifndef Z_SOLO
+#    define gzFile                z_gzFile
+#  endif
+#  define gz_header             z_gz_header
+#  define gz_headerp            z_gz_headerp
+#  define in_func               z_in_func
+#  define intf                  z_intf
+#  define out_func              z_out_func
+#  define uInt                  z_uInt
+#  define uIntf                 z_uIntf
+#  define uLong                 z_uLong
+#  define uLongf                z_uLongf
+#  define voidp                 z_voidp
+#  define voidpc                z_voidpc
+#  define voidpf                z_voidpf
+
+/* all zlib structs in zlib.h and zconf.h */
+#  define gz_header_s           z_gz_header_s
+#  define internal_state        z_internal_state
+
+#endif
+
+#if defined(__MSDOS__) && !defined(MSDOS)
+#  define MSDOS
+#endif
+#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
+#  define OS2
+#endif
+#if defined(_WINDOWS) && !defined(WINDOWS)
+#  define WINDOWS
+#endif
+#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
+#  ifndef WIN32
+#    define WIN32
+#  endif
+#endif
+#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
+#  if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
+#    ifndef SYS16BIT
+#      define SYS16BIT
+#    endif
+#  endif
+#endif
+
+/*
+ * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
+ * than 64k bytes at a time (needed on systems with 16-bit int).
+ */
+#ifdef SYS16BIT
+#  define MAXSEG_64K
+#endif
+#ifdef MSDOS
+#  define UNALIGNED_OK
+#endif
+
+#ifdef __STDC_VERSION__
+#  ifndef STDC
+#    define STDC
+#  endif
+#  if __STDC_VERSION__ >= 199901L
+#    ifndef STDC99
+#      define STDC99
+#    endif
+#  endif
+#endif
+#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
+#  define STDC
+#endif
+#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
+#  define STDC
+#endif
+#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
+#  define STDC
+#endif
+#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
+#  define STDC
+#endif
+
+#if defined(__OS400__) && !defined(STDC)    /* iSeries (formerly AS/400). */
+#  define STDC
+#endif
+
+#ifndef STDC
+#  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
+#    define const       /* note: need a more gentle solution here */
+#  endif
+#endif
+
+#if defined(ZLIB_CONST) && !defined(z_const)
+#  define z_const const
+#else
+#  define z_const
+#endif
+
+/* Some Mac compilers merge all .h files incorrectly: */
+#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
+#  define NO_DUMMY_DECL
+#endif
+
+/* Maximum value for memLevel in deflateInit2 */
+#ifndef MAX_MEM_LEVEL
+#  ifdef MAXSEG_64K
+#    define MAX_MEM_LEVEL 8
+#  else
+#    define MAX_MEM_LEVEL 9
+#  endif
+#endif
+
+/* Maximum value for windowBits in deflateInit2 and inflateInit2.
+ * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
+ * created by gzip. (Files created by minigzip can still be extracted by
+ * gzip.)
+ */
+#ifndef MAX_WBITS
+#  define MAX_WBITS   15 /* 32K LZ77 window */
+#endif
+
+/* The memory requirements for deflate are (in bytes):
+            (1 << (windowBits+2)) +  (1 << (memLevel+9))
+ that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)
+ plus a few kilobytes for small objects. For example, if you want to reduce
+ the default memory requirements from 256K to 128K, compile with
+     make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
+ Of course this will generally degrade compression (there's no free lunch).
+
+   The memory requirements for inflate are (in bytes) 1 << windowBits
+ that is, 32K for windowBits=15 (default value) plus a few kilobytes
+ for small objects.
+*/
+
+                        /* Type declarations */
+
+#ifndef OF /* function prototypes */
+#  ifdef STDC
+#    define OF(args)  args
+#  else
+#    define OF(args)  ()
+#  endif
+#endif
+
+#ifndef Z_ARG /* function prototypes for stdarg */
+#  if defined(STDC) || defined(Z_HAVE_STDARG_H)
+#    define Z_ARG(args)  args
+#  else
+#    define Z_ARG(args)  ()
+#  endif
+#endif
+
+/* The following definitions for FAR are needed only for MSDOS mixed
+ * model programming (small or medium model with some far allocations).
+ * This was tested only with MSC; for other MSDOS compilers you may have
+ * to define NO_MEMCPY in zutil.h.  If you don't need the mixed model,
+ * just define FAR to be empty.
+ */
+#ifdef SYS16BIT
+#  if defined(M_I86SM) || defined(M_I86MM)
+     /* MSC small or medium model */
+#    define SMALL_MEDIUM
+#    ifdef _MSC_VER
+#      define FAR _far
+#    else
+#      define FAR far
+#    endif
+#  endif
+#  if (defined(__SMALL__) || defined(__MEDIUM__))
+     /* Turbo C small or medium model */
+#    define SMALL_MEDIUM
+#    ifdef __BORLANDC__
+#      define FAR _far
+#    else
+#      define FAR far
+#    endif
+#  endif
+#endif
+
+#if defined(WINDOWS) || defined(WIN32)
+   /* If building or using zlib as a DLL, define ZLIB_DLL.
+    * This is not mandatory, but it offers a little performance increase.
+    */
+#  ifdef ZLIB_DLL
+#    if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
+#      ifdef ZLIB_INTERNAL
+#        define ZEXTERN extern __declspec(dllexport)
+#      else
+#        define ZEXTERN extern __declspec(dllimport)
+#      endif
+#    endif
+#  endif  /* ZLIB_DLL */
+   /* If building or using zlib with the WINAPI/WINAPIV calling convention,
+    * define ZLIB_WINAPI.
+    * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
+    */
+#  ifdef ZLIB_WINAPI
+#    ifdef FAR
+#      undef FAR
+#    endif
+#    include <windows.h>
+     /* No need for _export, use ZLIB.DEF instead. */
+     /* For complete Windows compatibility, use WINAPI, not __stdcall. */
+#    define ZEXPORT WINAPI
+#    ifdef WIN32
+#      define ZEXPORTVA WINAPIV
+#    else
+#      define ZEXPORTVA FAR CDECL
+#    endif
+#  endif
+#endif
+
+#if defined (__BEOS__)
+#  ifdef ZLIB_DLL
+#    ifdef ZLIB_INTERNAL
+#      define ZEXPORT   __declspec(dllexport)
+#      define ZEXPORTVA __declspec(dllexport)
+#    else
+#      define ZEXPORT   __declspec(dllimport)
+#      define ZEXPORTVA __declspec(dllimport)
+#    endif
+#  endif
+#endif
+
+#ifndef ZEXTERN
+#  define ZEXTERN extern
+#endif
+#ifndef ZEXPORT
+#  define ZEXPORT
+#endif
+#ifndef ZEXPORTVA
+#  define ZEXPORTVA
+#endif
+
+#ifndef FAR
+#  define FAR
+#endif
+
+#if !defined(__MACTYPES__)
+typedef unsigned char  Byte;  /* 8 bits */
+#endif
+typedef unsigned int   uInt;  /* 16 bits or more */
+typedef unsigned long  uLong; /* 32 bits or more */
+
+#ifdef SMALL_MEDIUM
+   /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
+#  define Bytef Byte FAR
+#else
+   typedef Byte  FAR Bytef;
+#endif
+typedef char  FAR charf;
+typedef int   FAR intf;
+typedef uInt  FAR uIntf;
+typedef uLong FAR uLongf;
+
+#ifdef STDC
+   typedef void const *voidpc;
+   typedef void FAR   *voidpf;
+   typedef void       *voidp;
+#else
+   typedef Byte const *voidpc;
+   typedef Byte FAR   *voidpf;
+   typedef Byte       *voidp;
+#endif
+
+#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)
+#  include <limits.h>
+#  if (UINT_MAX == 0xffffffffUL)
+#    define Z_U4 unsigned
+#  elif (ULONG_MAX == 0xffffffffUL)
+#    define Z_U4 unsigned long
+#  elif (USHRT_MAX == 0xffffffffUL)
+#    define Z_U4 unsigned short
+#  endif
+#endif
+
+#ifdef Z_U4
+   typedef Z_U4 z_crc_t;
+#else
+   typedef unsigned long z_crc_t;
+#endif
+
+#ifdef HAVE_UNISTD_H    /* may be set to #if 1 by ./configure */
+#  define Z_HAVE_UNISTD_H
+#endif
+
+#ifdef HAVE_STDARG_H    /* may be set to #if 1 by ./configure */
+#  define Z_HAVE_STDARG_H
+#endif
+
+#ifdef STDC
+#  ifndef Z_SOLO
+#    include <sys/types.h>      /* for off_t */
+#  endif
+#endif
+
+#if defined(STDC) || defined(Z_HAVE_STDARG_H)
+#  ifndef Z_SOLO
+#    include <stdarg.h>         /* for va_list */
+#  endif
+#endif
+
+#ifdef _WIN32
+#  ifndef Z_SOLO
+#    include <stddef.h>         /* for wchar_t */
+#  endif
+#endif
+
+/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
+ * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
+ * though the former does not conform to the LFS document), but considering
+ * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
+ * equivalently requesting no 64-bit operations
+ */
+#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
+#  undef _LARGEFILE64_SOURCE
+#endif
+
+#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
+#  define Z_HAVE_UNISTD_H
+#endif
+#ifndef Z_SOLO
+#  if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
+#    include <unistd.h>         /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
+#    ifdef VMS
+#      include <unixio.h>       /* for off_t */
+#    endif
+#    ifndef z_off_t
+#      define z_off_t off_t
+#    endif
+#  endif
+#endif
+
+#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0
+#  define Z_LFS64
+#endif
+
+#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64)
+#  define Z_LARGE64
+#endif
+
+#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64)
+#  define Z_WANT64
+#endif
+
+#if !defined(SEEK_SET) && !defined(Z_SOLO)
+#  define SEEK_SET        0       /* Seek from beginning of file.  */
+#  define SEEK_CUR        1       /* Seek from current position.  */
+#  define SEEK_END        2       /* Set file pointer to EOF plus "offset" */
+#endif
+
+#ifndef z_off_t
+#  define z_off_t long
+#endif
+
+#if !defined(_WIN32) && defined(Z_LARGE64)
+#  define z_off64_t off64_t
+#else
+#  if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO)
+#    define z_off64_t __int64
+#  else
+#    define z_off64_t z_off_t
+#  endif
+#endif
+
+/* MVS linker does not support external names larger than 8 bytes */
+#if defined(__MVS__)
+  #pragma map(deflateInit_,"DEIN")
+  #pragma map(deflateInit2_,"DEIN2")
+  #pragma map(deflateEnd,"DEEND")
+  #pragma map(deflateBound,"DEBND")
+  #pragma map(inflateInit_,"ININ")
+  #pragma map(inflateInit2_,"ININ2")
+  #pragma map(inflateEnd,"INEND")
+  #pragma map(inflateSync,"INSY")
+  #pragma map(inflateSetDictionary,"INSEDI")
+  #pragma map(compressBound,"CMBND")
+  #pragma map(inflate_table,"INTABL")
+  #pragma map(inflate_fast,"INFA")
+  #pragma map(inflate_copyright,"INCOPY")
+#endif
+
+#endif /* ZCONF_H */
Index: uKadecot/trunk/tools/zlib/zlib.h
===================================================================
--- uKadecot/trunk/tools/zlib/zlib.h	(revision 101)
+++ uKadecot/trunk/tools/zlib/zlib.h	(revision 101)
@@ -0,0 +1,1768 @@
+/* zlib.h -- interface of the 'zlib' general purpose compression library
+  version 1.2.8, April 28th, 2013
+
+  Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jean-loup Gailly        Mark Adler
+  jloup@gzip.org          madler@alumni.caltech.edu
+
+
+  The data format used by the zlib library is described by RFCs (Request for
+  Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950
+  (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format).
+*/
+
+#ifndef ZLIB_H
+#define ZLIB_H
+
+#include "zconf.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ZLIB_VERSION "1.2.8"
+#define ZLIB_VERNUM 0x1280
+#define ZLIB_VER_MAJOR 1
+#define ZLIB_VER_MINOR 2
+#define ZLIB_VER_REVISION 8
+#define ZLIB_VER_SUBREVISION 0
+
+/*
+    The 'zlib' compression library provides in-memory compression and
+  decompression functions, including integrity checks of the uncompressed data.
+  This version of the library supports only one compression method (deflation)
+  but other algorithms will be added later and will have the same stream
+  interface.
+
+    Compression can be done in a single step if the buffers are large enough,
+  or can be done by repeated calls of the compression function.  In the latter
+  case, the application must provide more input and/or consume the output
+  (providing more output space) before each call.
+
+    The compressed data format used by default by the in-memory functions is
+  the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
+  around a deflate stream, which is itself documented in RFC 1951.
+
+    The library also supports reading and writing files in gzip (.gz) format
+  with an interface similar to that of stdio using the functions that start
+  with "gz".  The gzip format is different from the zlib format.  gzip is a
+  gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
+
+    This library can optionally read and write gzip streams in memory as well.
+
+    The zlib format was designed to be compact and fast for use in memory
+  and on communications channels.  The gzip format was designed for single-
+  file compression on file systems, has a larger header than zlib to maintain
+  directory information, and uses a different, slower check method than zlib.
+
+    The library does not install any signal handler.  The decoder checks
+  the consistency of the compressed data, so the library should never crash
+  even in case of corrupted input.
+*/
+
+typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
+typedef void   (*free_func)  OF((voidpf opaque, voidpf address));
+
+struct internal_state;
+
+typedef struct z_stream_s {
+    z_const Bytef *next_in;     /* next input byte */
+    uInt     avail_in;  /* number of bytes available at next_in */
+    uLong    total_in;  /* total number of input bytes read so far */
+
+    Bytef    *next_out; /* next output byte should be put there */
+    uInt     avail_out; /* remaining free space at next_out */
+    uLong    total_out; /* total number of bytes output so far */
+
+    z_const char *msg;  /* last error message, NULL if no error */
+    struct internal_state FAR *state; /* not visible by applications */
+
+    alloc_func zalloc;  /* used to allocate the internal state */
+    free_func  zfree;   /* used to free the internal state */
+    voidpf     opaque;  /* private data object passed to zalloc and zfree */
+
+    int     data_type;  /* best guess about the data type: binary or text */
+    uLong   adler;      /* adler32 value of the uncompressed data */
+    uLong   reserved;   /* reserved for future use */
+} z_stream;
+
+typedef z_stream FAR *z_streamp;
+
+/*
+     gzip header information passed to and from zlib routines.  See RFC 1952
+  for more details on the meanings of these fields.
+*/
+typedef struct gz_header_s {
+    int     text;       /* true if compressed data believed to be text */
+    uLong   time;       /* modification time */
+    int     xflags;     /* extra flags (not used when writing a gzip file) */
+    int     os;         /* operating system */
+    Bytef   *extra;     /* pointer to extra field or Z_NULL if none */
+    uInt    extra_len;  /* extra field length (valid if extra != Z_NULL) */
+    uInt    extra_max;  /* space at extra (only when reading header) */
+    Bytef   *name;      /* pointer to zero-terminated file name or Z_NULL */
+    uInt    name_max;   /* space at name (only when reading header) */
+    Bytef   *comment;   /* pointer to zero-terminated comment or Z_NULL */
+    uInt    comm_max;   /* space at comment (only when reading header) */
+    int     hcrc;       /* true if there was or will be a header crc */
+    int     done;       /* true when done reading gzip header (not used
+                           when writing a gzip file) */
+} gz_header;
+
+typedef gz_header FAR *gz_headerp;
+
+/*
+     The application must update next_in and avail_in when avail_in has dropped
+   to zero.  It must update next_out and avail_out when avail_out has dropped
+   to zero.  The application must initialize zalloc, zfree and opaque before
+   calling the init function.  All other fields are set by the compression
+   library and must not be updated by the application.
+
+     The opaque value provided by the application will be passed as the first
+   parameter for calls of zalloc and zfree.  This can be useful for custom
+   memory management.  The compression library attaches no meaning to the
+   opaque value.
+
+     zalloc must return Z_NULL if there is not enough memory for the object.
+   If zlib is used in a multi-threaded application, zalloc and zfree must be
+   thread safe.
+
+     On 16-bit systems, the functions zalloc and zfree must be able to allocate
+   exactly 65536 bytes, but will not be required to allocate more than this if
+   the symbol MAXSEG_64K is defined (see zconf.h).  WARNING: On MSDOS, pointers
+   returned by zalloc for objects of exactly 65536 bytes *must* have their
+   offset normalized to zero.  The default allocation function provided by this
+   library ensures this (see zutil.c).  To reduce memory requirements and avoid
+   any allocation of 64K objects, at the expense of compression ratio, compile
+   the library with -DMAX_WBITS=14 (see zconf.h).
+
+     The fields total_in and total_out can be used for statistics or progress
+   reports.  After compression, total_in holds the total size of the
+   uncompressed data and may be saved for use in the decompressor (particularly
+   if the decompressor wants to decompress everything in a single step).
+*/
+
+                        /* constants */
+
+#define Z_NO_FLUSH      0
+#define Z_PARTIAL_FLUSH 1
+#define Z_SYNC_FLUSH    2
+#define Z_FULL_FLUSH    3
+#define Z_FINISH        4
+#define Z_BLOCK         5
+#define Z_TREES         6
+/* Allowed flush values; see deflate() and inflate() below for details */
+
+#define Z_OK            0
+#define Z_STREAM_END    1
+#define Z_NEED_DICT     2
+#define Z_ERRNO        (-1)
+#define Z_STREAM_ERROR (-2)
+#define Z_DATA_ERROR   (-3)
+#define Z_MEM_ERROR    (-4)
+#define Z_BUF_ERROR    (-5)
+#define Z_VERSION_ERROR (-6)
+/* Return codes for the compression/decompression functions. Negative values
+ * are errors, positive values are used for special but normal events.
+ */
+
+#define Z_NO_COMPRESSION         0
+#define Z_BEST_SPEED             1
+#define Z_BEST_COMPRESSION       9
+#define Z_DEFAULT_COMPRESSION  (-1)
+/* compression levels */
+
+#define Z_FILTERED            1
+#define Z_HUFFMAN_ONLY        2
+#define Z_RLE                 3
+#define Z_FIXED               4
+#define Z_DEFAULT_STRATEGY    0
+/* compression strategy; see deflateInit2() below for details */
+
+#define Z_BINARY   0
+#define Z_TEXT     1
+#define Z_ASCII    Z_TEXT   /* for compatibility with 1.2.2 and earlier */
+#define Z_UNKNOWN  2
+/* Possible values of the data_type field (though see inflate()) */
+
+#define Z_DEFLATED   8
+/* The deflate compression method (the only one supported in this version) */
+
+#define Z_NULL  0  /* for initializing zalloc, zfree, opaque */
+
+#define zlib_version zlibVersion()
+/* for compatibility with versions < 1.0.2 */
+
+
+                        /* basic functions */
+
+ZEXTERN const char * ZEXPORT zlibVersion OF((void));
+/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
+   If the first character differs, the library code actually used is not
+   compatible with the zlib.h header file used by the application.  This check
+   is automatically made by deflateInit and inflateInit.
+ */
+
+/*
+ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
+
+     Initializes the internal stream state for compression.  The fields
+   zalloc, zfree and opaque must be initialized before by the caller.  If
+   zalloc and zfree are set to Z_NULL, deflateInit updates them to use default
+   allocation functions.
+
+     The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
+   1 gives best speed, 9 gives best compression, 0 gives no compression at all
+   (the input data is simply copied a block at a time).  Z_DEFAULT_COMPRESSION
+   requests a default compromise between speed and compression (currently
+   equivalent to level 6).
+
+     deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
+   memory, Z_STREAM_ERROR if level is not a valid compression level, or
+   Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
+   with the version assumed by the caller (ZLIB_VERSION).  msg is set to null
+   if there is no error message.  deflateInit does not perform any compression:
+   this will be done by deflate().
+*/
+
+
+ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
+/*
+    deflate compresses as much data as possible, and stops when the input
+  buffer becomes empty or the output buffer becomes full.  It may introduce
+  some output latency (reading input without producing any output) except when
+  forced to flush.
+
+    The detailed semantics are as follows.  deflate performs one or both of the
+  following actions:
+
+  - Compress more input starting at next_in and update next_in and avail_in
+    accordingly.  If not all input can be processed (because there is not
+    enough room in the output buffer), next_in and avail_in are updated and
+    processing will resume at this point for the next call of deflate().
+
+  - Provide more output starting at next_out and update next_out and avail_out
+    accordingly.  This action is forced if the parameter flush is non zero.
+    Forcing flush frequently degrades the compression ratio, so this parameter
+    should be set only when necessary (in interactive applications).  Some
+    output may be provided even if flush is not set.
+
+    Before the call of deflate(), the application should ensure that at least
+  one of the actions is possible, by providing more input and/or consuming more
+  output, and updating avail_in or avail_out accordingly; avail_out should
+  never be zero before the call.  The application can consume the compressed
+  output when it wants, for example when the output buffer is full (avail_out
+  == 0), or after each call of deflate().  If deflate returns Z_OK and with
+  zero avail_out, it must be called again after making room in the output
+  buffer because there might be more output pending.
+
+    Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
+  decide how much data to accumulate before producing output, in order to
+  maximize compression.
+
+    If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
+  flushed to the output buffer and the output is aligned on a byte boundary, so
+  that the decompressor can get all input data available so far.  (In
+  particular avail_in is zero after the call if enough output space has been
+  provided before the call.) Flushing may degrade compression for some
+  compression algorithms and so it should be used only when necessary.  This
+  completes the current deflate block and follows it with an empty stored block
+  that is three bits plus filler bits to the next byte, followed by four bytes
+  (00 00 ff ff).
+
+    If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the
+  output buffer, but the output is not aligned to a byte boundary.  All of the
+  input data so far will be available to the decompressor, as for Z_SYNC_FLUSH.
+  This completes the current deflate block and follows it with an empty fixed
+  codes block that is 10 bits long.  This assures that enough bytes are output
+  in order for the decompressor to finish the block before the empty fixed code
+  block.
+
+    If flush is set to Z_BLOCK, a deflate block is completed and emitted, as
+  for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to
+  seven bits of the current block are held to be written as the next byte after
+  the next deflate block is completed.  In this case, the decompressor may not
+  be provided enough bits at this point in order to complete decompression of
+  the data provided so far to the compressor.  It may need to wait for the next
+  block to be emitted.  This is for advanced applications that need to control
+  the emission of deflate blocks.
+
+    If flush is set to Z_FULL_FLUSH, all output is flushed as with
+  Z_SYNC_FLUSH, and the compression state is reset so that decompression can
+  restart from this point if previous compressed data has been damaged or if
+  random access is desired.  Using Z_FULL_FLUSH too often can seriously degrade
+  compression.
+
+    If deflate returns with avail_out == 0, this function must be called again
+  with the same value of the flush parameter and more output space (updated
+  avail_out), until the flush is complete (deflate returns with non-zero
+  avail_out).  In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
+  avail_out is greater than six to avoid repeated flush markers due to
+  avail_out == 0 on return.
+
+    If the parameter flush is set to Z_FINISH, pending input is processed,
+  pending output is flushed and deflate returns with Z_STREAM_END if there was
+  enough output space; if deflate returns with Z_OK, this function must be
+  called again with Z_FINISH and more output space (updated avail_out) but no
+  more input data, until it returns with Z_STREAM_END or an error.  After
+  deflate has returned Z_STREAM_END, the only possible operations on the stream
+  are deflateReset or deflateEnd.
+
+    Z_FINISH can be used immediately after deflateInit if all the compression
+  is to be done in a single step.  In this case, avail_out must be at least the
+  value returned by deflateBound (see below).  Then deflate is guaranteed to
+  return Z_STREAM_END.  If not enough output space is provided, deflate will
+  not return Z_STREAM_END, and it must be called again as described above.
+
+    deflate() sets strm->adler to the adler32 checksum of all input read
+  so far (that is, total_in bytes).
+
+    deflate() may update strm->data_type if it can make a good guess about
+  the input data type (Z_BINARY or Z_TEXT).  In doubt, the data is considered
+  binary.  This field is only for information purposes and does not affect the
+  compression algorithm in any manner.
+
+    deflate() returns Z_OK if some progress has been made (more input
+  processed or more output produced), Z_STREAM_END if all input has been
+  consumed and all output has been produced (only when flush is set to
+  Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
+  if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible
+  (for example avail_in or avail_out was zero).  Note that Z_BUF_ERROR is not
+  fatal, and deflate() can be called again with more input and more output
+  space to continue compressing.
+*/
+
+
+ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
+/*
+     All dynamically allocated data structures for this stream are freed.
+   This function discards any unprocessed input and does not flush any pending
+   output.
+
+     deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
+   stream state was inconsistent, Z_DATA_ERROR if the stream was freed
+   prematurely (some input or output was discarded).  In the error case, msg
+   may be set but then points to a static string (which must not be
+   deallocated).
+*/
+
+
+/*
+ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
+
+     Initializes the internal stream state for decompression.  The fields
+   next_in, avail_in, zalloc, zfree and opaque must be initialized before by
+   the caller.  If next_in is not Z_NULL and avail_in is large enough (the
+   exact value depends on the compression method), inflateInit determines the
+   compression method from the zlib header and allocates all data structures
+   accordingly; otherwise the allocation will be deferred to the first call of
+   inflate.  If zalloc and zfree are set to Z_NULL, inflateInit updates them to
+   use default allocation functions.
+
+     inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
+   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
+   version assumed by the caller, or Z_STREAM_ERROR if the parameters are
+   invalid, such as a null pointer to the structure.  msg is set to null if
+   there is no error message.  inflateInit does not perform any decompression
+   apart from possibly reading the zlib header if present: actual decompression
+   will be done by inflate().  (So next_in and avail_in may be modified, but
+   next_out and avail_out are unused and unchanged.) The current implementation
+   of inflateInit() does not process any header information -- that is deferred
+   until inflate() is called.
+*/
+
+
+ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
+/*
+    inflate decompresses as much data as possible, and stops when the input
+  buffer becomes empty or the output buffer becomes full.  It may introduce
+  some output latency (reading input without producing any output) except when
+  forced to flush.
+
+  The detailed semantics are as follows.  inflate performs one or both of the
+  following actions:
+
+  - Decompress more input starting at next_in and update next_in and avail_in
+    accordingly.  If not all input can be processed (because there is not
+    enough room in the output buffer), next_in is updated and processing will
+    resume at this point for the next call of inflate().
+
+  - Provide more output starting at next_out and update next_out and avail_out
+    accordingly.  inflate() provides as much output as possible, until there is
+    no more input data or no more space in the output buffer (see below about
+    the flush parameter).
+
+    Before the call of inflate(), the application should ensure that at least
+  one of the actions is possible, by providing more input and/or consuming more
+  output, and updating the next_* and avail_* values accordingly.  The
+  application can consume the uncompressed output when it wants, for example
+  when the output buffer is full (avail_out == 0), or after each call of
+  inflate().  If inflate returns Z_OK and with zero avail_out, it must be
+  called again after making room in the output buffer because there might be
+  more output pending.
+
+    The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH,
+  Z_BLOCK, or Z_TREES.  Z_SYNC_FLUSH requests that inflate() flush as much
+  output as possible to the output buffer.  Z_BLOCK requests that inflate()
+  stop if and when it gets to the next deflate block boundary.  When decoding
+  the zlib or gzip format, this will cause inflate() to return immediately
+  after the header and before the first block.  When doing a raw inflate,
+  inflate() will go ahead and process the first block, and will return when it
+  gets to the end of that block, or when it runs out of data.
+
+    The Z_BLOCK option assists in appending to or combining deflate streams.
+  Also to assist in this, on return inflate() will set strm->data_type to the
+  number of unused bits in the last byte taken from strm->next_in, plus 64 if
+  inflate() is currently decoding the last block in the deflate stream, plus
+  128 if inflate() returned immediately after decoding an end-of-block code or
+  decoding the complete header up to just before the first byte of the deflate
+  stream.  The end-of-block will not be indicated until all of the uncompressed
+  data from that block has been written to strm->next_out.  The number of
+  unused bits may in general be greater than seven, except when bit 7 of
+  data_type is set, in which case the number of unused bits will be less than
+  eight.  data_type is set as noted here every time inflate() returns for all
+  flush options, and so can be used to determine the amount of currently
+  consumed input in bits.
+
+    The Z_TREES option behaves as Z_BLOCK does, but it also returns when the
+  end of each deflate block header is reached, before any actual data in that
+  block is decoded.  This allows the caller to determine the length of the
+  deflate block header for later use in random access within a deflate block.
+  256 is added to the value of strm->data_type when inflate() returns
+  immediately after reaching the end of the deflate block header.
+
+    inflate() should normally be called until it returns Z_STREAM_END or an
+  error.  However if all decompression is to be performed in a single step (a
+  single call of inflate), the parameter flush should be set to Z_FINISH.  In
+  this case all pending input is processed and all pending output is flushed;
+  avail_out must be large enough to hold all of the uncompressed data for the
+  operation to complete.  (The size of the uncompressed data may have been
+  saved by the compressor for this purpose.) The use of Z_FINISH is not
+  required to perform an inflation in one step.  However it may be used to
+  inform inflate that a faster approach can be used for the single inflate()
+  call.  Z_FINISH also informs inflate to not maintain a sliding window if the
+  stream completes, which reduces inflate's memory footprint.  If the stream
+  does not complete, either because not all of the stream is provided or not
+  enough output space is provided, then a sliding window will be allocated and
+  inflate() can be called again to continue the operation as if Z_NO_FLUSH had
+  been used.
+
+     In this implementation, inflate() always flushes as much output as
+  possible to the output buffer, and always uses the faster approach on the
+  first call.  So the effects of the flush parameter in this implementation are
+  on the return value of inflate() as noted below, when inflate() returns early
+  when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of
+  memory for a sliding window when Z_FINISH is used.
+
+     If a preset dictionary is needed after this call (see inflateSetDictionary
+  below), inflate sets strm->adler to the Adler-32 checksum of the dictionary
+  chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
+  strm->adler to the Adler-32 checksum of all output produced so far (that is,
+  total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
+  below.  At the end of the stream, inflate() checks that its computed adler32
+  checksum is equal to that saved by the compressor and returns Z_STREAM_END
+  only if the checksum is correct.
+
+    inflate() can decompress and check either zlib-wrapped or gzip-wrapped
+  deflate data.  The header type is detected automatically, if requested when
+  initializing with inflateInit2().  Any information contained in the gzip
+  header is not retained, so applications that need that information should
+  instead use raw inflate, see inflateInit2() below, or inflateBack() and
+  perform their own processing of the gzip header and trailer.  When processing
+  gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output
+  producted so far.  The CRC-32 is checked against the gzip trailer.
+
+    inflate() returns Z_OK if some progress has been made (more input processed
+  or more output produced), Z_STREAM_END if the end of the compressed data has
+  been reached and all uncompressed output has been produced, Z_NEED_DICT if a
+  preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
+  corrupted (input stream not conforming to the zlib format or incorrect check
+  value), Z_STREAM_ERROR if the stream structure was inconsistent (for example
+  next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory,
+  Z_BUF_ERROR if no progress is possible or if there was not enough room in the
+  output buffer when Z_FINISH is used.  Note that Z_BUF_ERROR is not fatal, and
+  inflate() can be called again with more input and more output space to
+  continue decompressing.  If Z_DATA_ERROR is returned, the application may
+  then call inflateSync() to look for a good compression block if a partial
+  recovery of the data is desired.
+*/
+
+
+ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
+/*
+     All dynamically allocated data structures for this stream are freed.
+   This function discards any unprocessed input and does not flush any pending
+   output.
+
+     inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
+   was inconsistent.  In the error case, msg may be set but then points to a
+   static string (which must not be deallocated).
+*/
+
+
+                        /* Advanced functions */
+
+/*
+    The following functions are needed only in some special applications.
+*/
+
+/*
+ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
+                                     int  level,
+                                     int  method,
+                                     int  windowBits,
+                                     int  memLevel,
+                                     int  strategy));
+
+     This is another version of deflateInit with more compression options.  The
+   fields next_in, zalloc, zfree and opaque must be initialized before by the
+   caller.
+
+     The method parameter is the compression method.  It must be Z_DEFLATED in
+   this version of the library.
+
+     The windowBits parameter is the base two logarithm of the window size
+   (the size of the history buffer).  It should be in the range 8..15 for this
+   version of the library.  Larger values of this parameter result in better
+   compression at the expense of memory usage.  The default value is 15 if
+   deflateInit is used instead.
+
+     windowBits can also be -8..-15 for raw deflate.  In this case, -windowBits
+   determines the window size.  deflate() will then generate raw deflate data
+   with no zlib header or trailer, and will not compute an adler32 check value.
+
+     windowBits can also be greater than 15 for optional gzip encoding.  Add
+   16 to windowBits to write a simple gzip header and trailer around the
+   compressed data instead of a zlib wrapper.  The gzip header will have no
+   file name, no extra data, no comment, no modification time (set to zero), no
+   header crc, and the operating system will be set to 255 (unknown).  If a
+   gzip stream is being written, strm->adler is a crc32 instead of an adler32.
+
+     The memLevel parameter specifies how much memory should be allocated
+   for the internal compression state.  memLevel=1 uses minimum memory but is
+   slow and reduces compression ratio; memLevel=9 uses maximum memory for
+   optimal speed.  The default value is 8.  See zconf.h for total memory usage
+   as a function of windowBits and memLevel.
+
+     The strategy parameter is used to tune the compression algorithm.  Use the
+   value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
+   filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no
+   string match), or Z_RLE to limit match distances to one (run-length
+   encoding).  Filtered data consists mostly of small values with a somewhat
+   random distribution.  In this case, the compression algorithm is tuned to
+   compress them better.  The effect of Z_FILTERED is to force more Huffman
+   coding and less string matching; it is somewhat intermediate between
+   Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY.  Z_RLE is designed to be almost as
+   fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data.  The
+   strategy parameter only affects the compression ratio but not the
+   correctness of the compressed output even if it is not set appropriately.
+   Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler
+   decoder for special applications.
+
+     deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
+   memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid
+   method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is
+   incompatible with the version assumed by the caller (ZLIB_VERSION).  msg is
+   set to null if there is no error message.  deflateInit2 does not perform any
+   compression: this will be done by deflate().
+*/
+
+ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
+                                             const Bytef *dictionary,
+                                             uInt  dictLength));
+/*
+     Initializes the compression dictionary from the given byte sequence
+   without producing any compressed output.  When using the zlib format, this
+   function must be called immediately after deflateInit, deflateInit2 or
+   deflateReset, and before any call of deflate.  When doing raw deflate, this
+   function must be called either before any call of deflate, or immediately
+   after the completion of a deflate block, i.e. after all input has been
+   consumed and all output has been delivered when using any of the flush
+   options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH.  The
+   compressor and decompressor must use exactly the same dictionary (see
+   inflateSetDictionary).
+
+     The dictionary should consist of strings (byte sequences) that are likely
+   to be encountered later in the data to be compressed, with the most commonly
+   used strings preferably put towards the end of the dictionary.  Using a
+   dictionary is most useful when the data to be compressed is short and can be
+   predicted with good accuracy; the data can then be compressed better than
+   with the default empty dictionary.
+
+     Depending on the size of the compression data structures selected by
+   deflateInit or deflateInit2, a part of the dictionary may in effect be
+   discarded, for example if the dictionary is larger than the window size
+   provided in deflateInit or deflateInit2.  Thus the strings most likely to be
+   useful should be put at the end of the dictionary, not at the front.  In
+   addition, the current implementation of deflate will use at most the window
+   size minus 262 bytes of the provided dictionary.
+
+     Upon return of this function, strm->adler is set to the adler32 value
+   of the dictionary; the decompressor may later use this value to determine
+   which dictionary has been used by the compressor.  (The adler32 value
+   applies to the whole dictionary even if only a subset of the dictionary is
+   actually used by the compressor.) If a raw deflate was requested, then the
+   adler32 value is not computed and strm->adler is not set.
+
+     deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
+   parameter is invalid (e.g.  dictionary being Z_NULL) or the stream state is
+   inconsistent (for example if deflate has already been called for this stream
+   or if not at a block boundary for raw deflate).  deflateSetDictionary does
+   not perform any compression: this will be done by deflate().
+*/
+
+ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
+                                    z_streamp source));
+/*
+     Sets the destination stream as a complete copy of the source stream.
+
+     This function can be useful when several compression strategies will be
+   tried, for example when there are several ways of pre-processing the input
+   data with a filter.  The streams that will be discarded should then be freed
+   by calling deflateEnd.  Note that deflateCopy duplicates the internal
+   compression state which can be quite large, so this strategy is slow and can
+   consume lots of memory.
+
+     deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
+   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
+   (such as zalloc being Z_NULL).  msg is left unchanged in both source and
+   destination.
+*/
+
+ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
+/*
+     This function is equivalent to deflateEnd followed by deflateInit,
+   but does not free and reallocate all the internal compression state.  The
+   stream will keep the same compression level and any other attributes that
+   may have been set by deflateInit2.
+
+     deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
+   stream state was inconsistent (such as zalloc or state being Z_NULL).
+*/
+
+ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
+                                      int level,
+                                      int strategy));
+/*
+     Dynamically update the compression level and compression strategy.  The
+   interpretation of level and strategy is as in deflateInit2.  This can be
+   used to switch between compression and straight copy of the input data, or
+   to switch to a different kind of input data requiring a different strategy.
+   If the compression level is changed, the input available so far is
+   compressed with the old level (and may be flushed); the new level will take
+   effect only at the next call of deflate().
+
+     Before the call of deflateParams, the stream state must be set as for
+   a call of deflate(), since the currently available input may have to be
+   compressed and flushed.  In particular, strm->avail_out must be non-zero.
+
+     deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
+   stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if
+   strm->avail_out was zero.
+*/
+
+ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
+                                    int good_length,
+                                    int max_lazy,
+                                    int nice_length,
+                                    int max_chain));
+/*
+     Fine tune deflate's internal compression parameters.  This should only be
+   used by someone who understands the algorithm used by zlib's deflate for
+   searching for the best matching string, and even then only by the most
+   fanatic optimizer trying to squeeze out the last compressed bit for their
+   specific input data.  Read the deflate.c source code for the meaning of the
+   max_lazy, good_length, nice_length, and max_chain parameters.
+
+     deflateTune() can be called after deflateInit() or deflateInit2(), and
+   returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream.
+ */
+
+ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
+                                       uLong sourceLen));
+/*
+     deflateBound() returns an upper bound on the compressed size after
+   deflation of sourceLen bytes.  It must be called after deflateInit() or
+   deflateInit2(), and after deflateSetHeader(), if used.  This would be used
+   to allocate an output buffer for deflation in a single pass, and so would be
+   called before deflate().  If that first deflate() call is provided the
+   sourceLen input bytes, an output buffer allocated to the size returned by
+   deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed
+   to return Z_STREAM_END.  Note that it is possible for the compressed size to
+   be larger than the value returned by deflateBound() if flush options other
+   than Z_FINISH or Z_NO_FLUSH are used.
+*/
+
+ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm,
+                                       unsigned *pending,
+                                       int *bits));
+/*
+     deflatePending() returns the number of bytes and bits of output that have
+   been generated, but not yet provided in the available output.  The bytes not
+   provided would be due to the available output space having being consumed.
+   The number of bits of output not provided are between 0 and 7, where they
+   await more bits to join them in order to fill out a full byte.  If pending
+   or bits are Z_NULL, then those values are not set.
+
+     deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source
+   stream state was inconsistent.
+ */
+
+ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
+                                     int bits,
+                                     int value));
+/*
+     deflatePrime() inserts bits in the deflate output stream.  The intent
+   is that this function is used to start off the deflate output with the bits
+   leftover from a previous deflate stream when appending to it.  As such, this
+   function can only be used for raw deflate, and must be used before the first
+   deflate() call after a deflateInit2() or deflateReset().  bits must be less
+   than or equal to 16, and that many of the least significant bits of value
+   will be inserted in the output.
+
+     deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough
+   room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the
+   source stream state was inconsistent.
+*/
+
+ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
+                                         gz_headerp head));
+/*
+     deflateSetHeader() provides gzip header information for when a gzip
+   stream is requested by deflateInit2().  deflateSetHeader() may be called
+   after deflateInit2() or deflateReset() and before the first call of
+   deflate().  The text, time, os, extra field, name, and comment information
+   in the provided gz_header structure are written to the gzip header (xflag is
+   ignored -- the extra flags are set according to the compression level).  The
+   caller must assure that, if not Z_NULL, name and comment are terminated with
+   a zero byte, and that if extra is not Z_NULL, that extra_len bytes are
+   available there.  If hcrc is true, a gzip header crc is included.  Note that
+   the current versions of the command-line version of gzip (up through version
+   1.3.x) do not support header crc's, and will report that it is a "multi-part
+   gzip file" and give up.
+
+     If deflateSetHeader is not used, the default gzip header has text false,
+   the time set to zero, and os set to 255, with no extra, name, or comment
+   fields.  The gzip header is returned to the default state by deflateReset().
+
+     deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
+   stream state was inconsistent.
+*/
+
+/*
+ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
+                                     int  windowBits));
+
+     This is another version of inflateInit with an extra parameter.  The
+   fields next_in, avail_in, zalloc, zfree and opaque must be initialized
+   before by the caller.
+
+     The windowBits parameter is the base two logarithm of the maximum window
+   size (the size of the history buffer).  It should be in the range 8..15 for
+   this version of the library.  The default value is 15 if inflateInit is used
+   instead.  windowBits must be greater than or equal to the windowBits value
+   provided to deflateInit2() while compressing, or it must be equal to 15 if
+   deflateInit2() was not used.  If a compressed stream with a larger window
+   size is given as input, inflate() will return with the error code
+   Z_DATA_ERROR instead of trying to allocate a larger window.
+
+     windowBits can also be zero to request that inflate use the window size in
+   the zlib header of the compressed stream.
+
+     windowBits can also be -8..-15 for raw inflate.  In this case, -windowBits
+   determines the window size.  inflate() will then process raw deflate data,
+   not looking for a zlib or gzip header, not generating a check value, and not
+   looking for any check values for comparison at the end of the stream.  This
+   is for use with other formats that use the deflate compressed data format
+   such as zip.  Those formats provide their own check values.  If a custom
+   format is developed using the raw deflate format for compressed data, it is
+   recommended that a check value such as an adler32 or a crc32 be applied to
+   the uncompressed data as is done in the zlib, gzip, and zip formats.  For
+   most applications, the zlib format should be used as is.  Note that comments
+   above on the use in deflateInit2() applies to the magnitude of windowBits.
+
+     windowBits can also be greater than 15 for optional gzip decoding.  Add
+   32 to windowBits to enable zlib and gzip decoding with automatic header
+   detection, or add 16 to decode only the gzip format (the zlib format will
+   return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is a
+   crc32 instead of an adler32.
+
+     inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
+   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
+   version assumed by the caller, or Z_STREAM_ERROR if the parameters are
+   invalid, such as a null pointer to the structure.  msg is set to null if
+   there is no error message.  inflateInit2 does not perform any decompression
+   apart from possibly reading the zlib header if present: actual decompression
+   will be done by inflate().  (So next_in and avail_in may be modified, but
+   next_out and avail_out are unused and unchanged.) The current implementation
+   of inflateInit2() does not process any header information -- that is
+   deferred until inflate() is called.
+*/
+
+ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
+                                             const Bytef *dictionary,
+                                             uInt  dictLength));
+/*
+     Initializes the decompression dictionary from the given uncompressed byte
+   sequence.  This function must be called immediately after a call of inflate,
+   if that call returned Z_NEED_DICT.  The dictionary chosen by the compressor
+   can be determined from the adler32 value returned by that call of inflate.
+   The compressor and decompressor must use exactly the same dictionary (see
+   deflateSetDictionary).  For raw inflate, this function can be called at any
+   time to set the dictionary.  If the provided dictionary is smaller than the
+   window and there is already data in the window, then the provided dictionary
+   will amend what's there.  The application must insure that the dictionary
+   that was used for compression is provided.
+
+     inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
+   parameter is invalid (e.g.  dictionary being Z_NULL) or the stream state is
+   inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
+   expected one (incorrect adler32 value).  inflateSetDictionary does not
+   perform any decompression: this will be done by subsequent calls of
+   inflate().
+*/
+
+ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm,
+                                             Bytef *dictionary,
+                                             uInt  *dictLength));
+/*
+     Returns the sliding dictionary being maintained by inflate.  dictLength is
+   set to the number of bytes in the dictionary, and that many bytes are copied
+   to dictionary.  dictionary must have enough space, where 32768 bytes is
+   always enough.  If inflateGetDictionary() is called with dictionary equal to
+   Z_NULL, then only the dictionary length is returned, and nothing is copied.
+   Similary, if dictLength is Z_NULL, then it is not set.
+
+     inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the
+   stream state is inconsistent.
+*/
+
+ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
+/*
+     Skips invalid compressed data until a possible full flush point (see above
+   for the description of deflate with Z_FULL_FLUSH) can be found, or until all
+   available input is skipped.  No output is provided.
+
+     inflateSync searches for a 00 00 FF FF pattern in the compressed data.
+   All full flush points have this pattern, but not all occurrences of this
+   pattern are full flush points.
+
+     inflateSync returns Z_OK if a possible full flush point has been found,
+   Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point
+   has been found, or Z_STREAM_ERROR if the stream structure was inconsistent.
+   In the success case, the application may save the current current value of
+   total_in which indicates where valid compressed data was found.  In the
+   error case, the application may repeatedly call inflateSync, providing more
+   input each time, until success or end of the input data.
+*/
+
+ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
+                                    z_streamp source));
+/*
+     Sets the destination stream as a complete copy of the source stream.
+
+     This function can be useful when randomly accessing a large stream.  The
+   first pass through the stream can periodically record the inflate state,
+   allowing restarting inflate at those points when randomly accessing the
+   stream.
+
+     inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
+   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
+   (such as zalloc being Z_NULL).  msg is left unchanged in both source and
+   destination.
+*/
+
+ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
+/*
+     This function is equivalent to inflateEnd followed by inflateInit,
+   but does not free and reallocate all the internal decompression state.  The
+   stream will keep attributes that may have been set by inflateInit2.
+
+     inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
+   stream state was inconsistent (such as zalloc or state being Z_NULL).
+*/
+
+ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm,
+                                      int windowBits));
+/*
+     This function is the same as inflateReset, but it also permits changing
+   the wrap and window size requests.  The windowBits parameter is interpreted
+   the same as it is for inflateInit2.
+
+     inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source
+   stream state was inconsistent (such as zalloc or state being Z_NULL), or if
+   the windowBits parameter is invalid.
+*/
+
+ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
+                                     int bits,
+                                     int value));
+/*
+     This function inserts bits in the inflate input stream.  The intent is
+   that this function is used to start inflating at a bit position in the
+   middle of a byte.  The provided bits will be used before any bytes are used
+   from next_in.  This function should only be used with raw inflate, and
+   should be used before the first inflate() call after inflateInit2() or
+   inflateReset().  bits must be less than or equal to 16, and that many of the
+   least significant bits of value will be inserted in the input.
+
+     If bits is negative, then the input stream bit buffer is emptied.  Then
+   inflatePrime() can be called again to put bits in the buffer.  This is used
+   to clear out bits leftover after feeding inflate a block description prior
+   to feeding inflate codes.
+
+     inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
+   stream state was inconsistent.
+*/
+
+ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm));
+/*
+     This function returns two values, one in the lower 16 bits of the return
+   value, and the other in the remaining upper bits, obtained by shifting the
+   return value down 16 bits.  If the upper value is -1 and the lower value is
+   zero, then inflate() is currently decoding information outside of a block.
+   If the upper value is -1 and the lower value is non-zero, then inflate is in
+   the middle of a stored block, with the lower value equaling the number of
+   bytes from the input remaining to copy.  If the upper value is not -1, then
+   it is the number of bits back from the current bit position in the input of
+   the code (literal or length/distance pair) currently being processed.  In
+   that case the lower value is the number of bytes already emitted for that
+   code.
+
+     A code is being processed if inflate is waiting for more input to complete
+   decoding of the code, or if it has completed decoding but is waiting for
+   more output space to write the literal or match data.
+
+     inflateMark() is used to mark locations in the input data for random
+   access, which may be at bit positions, and to note those cases where the
+   output of a code may span boundaries of random access blocks.  The current
+   location in the input stream can be determined from avail_in and data_type
+   as noted in the description for the Z_BLOCK flush parameter for inflate.
+
+     inflateMark returns the value noted above or -1 << 16 if the provided
+   source stream state was inconsistent.
+*/
+
+ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
+                                         gz_headerp head));
+/*
+     inflateGetHeader() requests that gzip header information be stored in the
+   provided gz_header structure.  inflateGetHeader() may be called after
+   inflateInit2() or inflateReset(), and before the first call of inflate().
+   As inflate() processes the gzip stream, head->done is zero until the header
+   is completed, at which time head->done is set to one.  If a zlib stream is
+   being decoded, then head->done is set to -1 to indicate that there will be
+   no gzip header information forthcoming.  Note that Z_BLOCK or Z_TREES can be
+   used to force inflate() to return immediately after header processing is
+   complete and before any actual data is decompressed.
+
+     The text, time, xflags, and os fields are filled in with the gzip header
+   contents.  hcrc is set to true if there is a header CRC.  (The header CRC
+   was valid if done is set to one.) If extra is not Z_NULL, then extra_max
+   contains the maximum number of bytes to write to extra.  Once done is true,
+   extra_len contains the actual extra field length, and extra contains the
+   extra field, or that field truncated if extra_max is less than extra_len.
+   If name is not Z_NULL, then up to name_max characters are written there,
+   terminated with a zero unless the length is greater than name_max.  If
+   comment is not Z_NULL, then up to comm_max characters are written there,
+   terminated with a zero unless the length is greater than comm_max.  When any
+   of extra, name, or comment are not Z_NULL and the respective field is not
+   present in the header, then that field is set to Z_NULL to signal its
+   absence.  This allows the use of deflateSetHeader() with the returned
+   structure to duplicate the header.  However if those fields are set to
+   allocated memory, then the application will need to save those pointers
+   elsewhere so that they can be eventually freed.
+
+     If inflateGetHeader is not used, then the header information is simply
+   discarded.  The header is always checked for validity, including the header
+   CRC if present.  inflateReset() will reset the process to discard the header
+   information.  The application would need to call inflateGetHeader() again to
+   retrieve the header from the next gzip stream.
+
+     inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
+   stream state was inconsistent.
+*/
+
+/*
+ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
+                                        unsigned char FAR *window));
+
+     Initialize the internal stream state for decompression using inflateBack()
+   calls.  The fields zalloc, zfree and opaque in strm must be initialized
+   before the call.  If zalloc and zfree are Z_NULL, then the default library-
+   derived memory allocation routines are used.  windowBits is the base two
+   logarithm of the window size, in the range 8..15.  window is a caller
+   supplied buffer of that size.  Except for special applications where it is
+   assured that deflate was used with small window sizes, windowBits must be 15
+   and a 32K byte window must be supplied to be able to decompress general
+   deflate streams.
+
+     See inflateBack() for the usage of these routines.
+
+     inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
+   the parameters are invalid, Z_MEM_ERROR if the internal state could not be
+   allocated, or Z_VERSION_ERROR if the version of the library does not match
+   the version of the header file.
+*/
+
+typedef unsigned (*in_func) OF((void FAR *,
+                                z_const unsigned char FAR * FAR *));
+typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
+
+ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
+                                    in_func in, void FAR *in_desc,
+                                    out_func out, void FAR *out_desc));
+/*
+     inflateBack() does a raw inflate with a single call using a call-back
+   interface for input and output.  This is potentially more efficient than
+   inflate() for file i/o applications, in that it avoids copying between the
+   output and the sliding window by simply making the window itself the output
+   buffer.  inflate() can be faster on modern CPUs when used with large
+   buffers.  inflateBack() trusts the application to not change the output
+   buffer passed by the output function, at least until inflateBack() returns.
+
+     inflateBackInit() must be called first to allocate the internal state
+   and to initialize the state with the user-provided window buffer.
+   inflateBack() may then be used multiple times to inflate a complete, raw
+   deflate stream with each call.  inflateBackEnd() is then called to free the
+   allocated state.
+
+     A raw deflate stream is one with no zlib or gzip header or trailer.
+   This routine would normally be used in a utility that reads zip or gzip
+   files and writes out uncompressed files.  The utility would decode the
+   header and process the trailer on its own, hence this routine expects only
+   the raw deflate stream to decompress.  This is different from the normal
+   behavior of inflate(), which expects either a zlib or gzip header and
+   trailer around the deflate stream.
+
+     inflateBack() uses two subroutines supplied by the caller that are then
+   called by inflateBack() for input and output.  inflateBack() calls those
+   routines until it reads a complete deflate stream and writes out all of the
+   uncompressed data, or until it encounters an error.  The function's
+   parameters and return types are defined above in the in_func and out_func
+   typedefs.  inflateBack() will call in(in_desc, &buf) which should return the
+   number of bytes of provided input, and a pointer to that input in buf.  If
+   there is no input available, in() must return zero--buf is ignored in that
+   case--and inflateBack() will return a buffer error.  inflateBack() will call
+   out(out_desc, buf, len) to write the uncompressed data buf[0..len-1].  out()
+   should return zero on success, or non-zero on failure.  If out() returns
+   non-zero, inflateBack() will return with an error.  Neither in() nor out()
+   are permitted to change the contents of the window provided to
+   inflateBackInit(), which is also the buffer that out() uses to write from.
+   The length written by out() will be at most the window size.  Any non-zero
+   amount of input may be provided by in().
+
+     For convenience, inflateBack() can be provided input on the first call by
+   setting strm->next_in and strm->avail_in.  If that input is exhausted, then
+   in() will be called.  Therefore strm->next_in must be initialized before
+   calling inflateBack().  If strm->next_in is Z_NULL, then in() will be called
+   immediately for input.  If strm->next_in is not Z_NULL, then strm->avail_in
+   must also be initialized, and then if strm->avail_in is not zero, input will
+   initially be taken from strm->next_in[0 ..  strm->avail_in - 1].
+
+     The in_desc and out_desc parameters of inflateBack() is passed as the
+   first parameter of in() and out() respectively when they are called.  These
+   descriptors can be optionally used to pass any information that the caller-
+   supplied in() and out() functions need to do their job.
+
+     On return, inflateBack() will set strm->next_in and strm->avail_in to
+   pass back any unused input that was provided by the last in() call.  The
+   return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR
+   if in() or out() returned an error, Z_DATA_ERROR if there was a format error
+   in the deflate stream (in which case strm->msg is set to indicate the nature
+   of the error), or Z_STREAM_ERROR if the stream was not properly initialized.
+   In the case of Z_BUF_ERROR, an input or output error can be distinguished
+   using strm->next_in which will be Z_NULL only if in() returned an error.  If
+   strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning
+   non-zero.  (in() will always be called before out(), so strm->next_in is
+   assured to be defined if out() returns non-zero.) Note that inflateBack()
+   cannot return Z_OK.
+*/
+
+ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
+/*
+     All memory allocated by inflateBackInit() is freed.
+
+     inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream
+   state was inconsistent.
+*/
+
+ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
+/* Return flags indicating compile-time options.
+
+    Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:
+     1.0: size of uInt
+     3.2: size of uLong
+     5.4: size of voidpf (pointer)
+     7.6: size of z_off_t
+
+    Compiler, assembler, and debug options:
+     8: DEBUG
+     9: ASMV or ASMINF -- use ASM code
+     10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention
+     11: 0 (reserved)
+
+    One-time table building (smaller code, but not thread-safe if true):
+     12: BUILDFIXED -- build static block decoding tables when needed
+     13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed
+     14,15: 0 (reserved)
+
+    Library content (indicates missing functionality):
+     16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking
+                          deflate code when not needed)
+     17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect
+                    and decode gzip streams (to avoid linking crc code)
+     18-19: 0 (reserved)
+
+    Operation variations (changes in library functionality):
+     20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate
+     21: FASTEST -- deflate algorithm with only one, lowest compression level
+     22,23: 0 (reserved)
+
+    The sprintf variant used by gzprintf (zero is best):
+     24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format
+     25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure!
+     26: 0 = returns value, 1 = void -- 1 means inferred string length returned
+
+    Remainder:
+     27-31: 0 (reserved)
+ */
+
+#ifndef Z_SOLO
+
+                        /* utility functions */
+
+/*
+     The following utility functions are implemented on top of the basic
+   stream-oriented functions.  To simplify the interface, some default options
+   are assumed (compression level and memory usage, standard memory allocation
+   functions).  The source code of these utility functions can be modified if
+   you need special options.
+*/
+
+ZEXTERN int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,
+                                 const Bytef *source, uLong sourceLen));
+/*
+     Compresses the source buffer into the destination buffer.  sourceLen is
+   the byte length of the source buffer.  Upon entry, destLen is the total size
+   of the destination buffer, which must be at least the value returned by
+   compressBound(sourceLen).  Upon exit, destLen is the actual size of the
+   compressed buffer.
+
+     compress returns Z_OK if success, Z_MEM_ERROR if there was not
+   enough memory, Z_BUF_ERROR if there was not enough room in the output
+   buffer.
+*/
+
+ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
+                                  const Bytef *source, uLong sourceLen,
+                                  int level));
+/*
+     Compresses the source buffer into the destination buffer.  The level
+   parameter has the same meaning as in deflateInit.  sourceLen is the byte
+   length of the source buffer.  Upon entry, destLen is the total size of the
+   destination buffer, which must be at least the value returned by
+   compressBound(sourceLen).  Upon exit, destLen is the actual size of the
+   compressed buffer.
+
+     compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
+   memory, Z_BUF_ERROR if there was not enough room in the output buffer,
+   Z_STREAM_ERROR if the level parameter is invalid.
+*/
+
+ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
+/*
+     compressBound() returns an upper bound on the compressed size after
+   compress() or compress2() on sourceLen bytes.  It would be used before a
+   compress() or compress2() call to allocate the destination buffer.
+*/
+
+ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
+                                   const Bytef *source, uLong sourceLen));
+/*
+     Decompresses the source buffer into the destination buffer.  sourceLen is
+   the byte length of the source buffer.  Upon entry, destLen is the total size
+   of the destination buffer, which must be large enough to hold the entire
+   uncompressed data.  (The size of the uncompressed data must have been saved
+   previously by the compressor and transmitted to the decompressor by some
+   mechanism outside the scope of this compression library.) Upon exit, destLen
+   is the actual size of the uncompressed buffer.
+
+     uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
+   enough memory, Z_BUF_ERROR if there was not enough room in the output
+   buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete.  In
+   the case where there is not enough room, uncompress() will fill the output
+   buffer with the uncompressed data up to that point.
+*/
+
+                        /* gzip file access functions */
+
+/*
+     This library supports reading and writing files in gzip (.gz) format with
+   an interface similar to that of stdio, using the functions that start with
+   "gz".  The gzip format is different from the zlib format.  gzip is a gzip
+   wrapper, documented in RFC 1952, wrapped around a deflate stream.
+*/
+
+typedef struct gzFile_s *gzFile;    /* semi-opaque gzip file descriptor */
+
+/*
+ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
+
+     Opens a gzip (.gz) file for reading or writing.  The mode parameter is as
+   in fopen ("rb" or "wb") but can also include a compression level ("wb9") or
+   a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only
+   compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F'
+   for fixed code compression as in "wb9F".  (See the description of
+   deflateInit2 for more information about the strategy parameter.)  'T' will
+   request transparent writing or appending with no compression and not using
+   the gzip format.
+
+     "a" can be used instead of "w" to request that the gzip stream that will
+   be written be appended to the file.  "+" will result in an error, since
+   reading and writing to the same gzip file is not supported.  The addition of
+   "x" when writing will create the file exclusively, which fails if the file
+   already exists.  On systems that support it, the addition of "e" when
+   reading or writing will set the flag to close the file on an execve() call.
+
+     These functions, as well as gzip, will read and decode a sequence of gzip
+   streams in a file.  The append function of gzopen() can be used to create
+   such a file.  (Also see gzflush() for another way to do this.)  When
+   appending, gzopen does not test whether the file begins with a gzip stream,
+   nor does it look for the end of the gzip streams to begin appending.  gzopen
+   will simply append a gzip stream to the existing file.
+
+     gzopen can be used to read a file which is not in gzip format; in this
+   case gzread will directly read from the file without decompression.  When
+   reading, this will be detected automatically by looking for the magic two-
+   byte gzip header.
+
+     gzopen returns NULL if the file could not be opened, if there was
+   insufficient memory to allocate the gzFile state, or if an invalid mode was
+   specified (an 'r', 'w', or 'a' was not provided, or '+' was provided).
+   errno can be checked to determine if the reason gzopen failed was that the
+   file could not be opened.
+*/
+
+ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
+/*
+     gzdopen associates a gzFile with the file descriptor fd.  File descriptors
+   are obtained from calls like open, dup, creat, pipe or fileno (if the file
+   has been previously opened with fopen).  The mode parameter is as in gzopen.
+
+     The next call of gzclose on the returned gzFile will also close the file
+   descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor
+   fd.  If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd,
+   mode);.  The duplicated descriptor should be saved to avoid a leak, since
+   gzdopen does not close fd if it fails.  If you are using fileno() to get the
+   file descriptor from a FILE *, then you will have to use dup() to avoid
+   double-close()ing the file descriptor.  Both gzclose() and fclose() will
+   close the associated file descriptor, so they need to have different file
+   descriptors.
+
+     gzdopen returns NULL if there was insufficient memory to allocate the
+   gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not
+   provided, or '+' was provided), or if fd is -1.  The file descriptor is not
+   used until the next gz* read, write, seek, or close operation, so gzdopen
+   will not detect if fd is invalid (unless fd is -1).
+*/
+
+ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
+/*
+     Set the internal buffer size used by this library's functions.  The
+   default buffer size is 8192 bytes.  This function must be called after
+   gzopen() or gzdopen(), and before any other calls that read or write the
+   file.  The buffer memory allocation is always deferred to the first read or
+   write.  Two buffers are allocated, either both of the specified size when
+   writing, or one of the specified size and the other twice that size when
+   reading.  A larger buffer size of, for example, 64K or 128K bytes will
+   noticeably increase the speed of decompression (reading).
+
+     The new buffer size also affects the maximum length for gzprintf().
+
+     gzbuffer() returns 0 on success, or -1 on failure, such as being called
+   too late.
+*/
+
+ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
+/*
+     Dynamically update the compression level or strategy.  See the description
+   of deflateInit2 for the meaning of these parameters.
+
+     gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
+   opened for writing.
+*/
+
+ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
+/*
+     Reads the given number of uncompressed bytes from the compressed file.  If
+   the input file is not in gzip format, gzread copies the given number of
+   bytes into the buffer directly from the file.
+
+     After reaching the end of a gzip stream in the input, gzread will continue
+   to read, looking for another gzip stream.  Any number of gzip streams may be
+   concatenated in the input file, and will all be decompressed by gzread().
+   If something other than a gzip stream is encountered after a gzip stream,
+   that remaining trailing garbage is ignored (and no error is returned).
+
+     gzread can be used to read a gzip file that is being concurrently written.
+   Upon reaching the end of the input, gzread will return with the available
+   data.  If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then
+   gzclearerr can be used to clear the end of file indicator in order to permit
+   gzread to be tried again.  Z_OK indicates that a gzip stream was completed
+   on the last gzread.  Z_BUF_ERROR indicates that the input file ended in the
+   middle of a gzip stream.  Note that gzread does not return -1 in the event
+   of an incomplete gzip stream.  This error is deferred until gzclose(), which
+   will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip
+   stream.  Alternatively, gzerror can be used before gzclose to detect this
+   case.
+
+     gzread returns the number of uncompressed bytes actually read, less than
+   len for end of file, or -1 for error.
+*/
+
+ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
+                                voidpc buf, unsigned len));
+/*
+     Writes the given number of uncompressed bytes into the compressed file.
+   gzwrite returns the number of uncompressed bytes written or 0 in case of
+   error.
+*/
+
+ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
+/*
+     Converts, formats, and writes the arguments to the compressed file under
+   control of the format string, as in fprintf.  gzprintf returns the number of
+   uncompressed bytes actually written, or 0 in case of error.  The number of
+   uncompressed bytes written is limited to 8191, or one less than the buffer
+   size given to gzbuffer().  The caller should assure that this limit is not
+   exceeded.  If it is exceeded, then gzprintf() will return an error (0) with
+   nothing written.  In this case, there may also be a buffer overflow with
+   unpredictable consequences, which is possible only if zlib was compiled with
+   the insecure functions sprintf() or vsprintf() because the secure snprintf()
+   or vsnprintf() functions were not available.  This can be determined using
+   zlibCompileFlags().
+*/
+
+ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
+/*
+     Writes the given null-terminated string to the compressed file, excluding
+   the terminating null character.
+
+     gzputs returns the number of characters written, or -1 in case of error.
+*/
+
+ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
+/*
+     Reads bytes from the compressed file until len-1 characters are read, or a
+   newline character is read and transferred to buf, or an end-of-file
+   condition is encountered.  If any characters are read or if len == 1, the
+   string is terminated with a null character.  If no characters are read due
+   to an end-of-file or len < 1, then the buffer is left untouched.
+
+     gzgets returns buf which is a null-terminated string, or it returns NULL
+   for end-of-file or in case of error.  If there was an error, the contents at
+   buf are indeterminate.
+*/
+
+ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
+/*
+     Writes c, converted to an unsigned char, into the compressed file.  gzputc
+   returns the value that was written, or -1 in case of error.
+*/
+
+ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
+/*
+     Reads one byte from the compressed file.  gzgetc returns this byte or -1
+   in case of end of file or error.  This is implemented as a macro for speed.
+   As such, it does not do all of the checking the other functions do.  I.e.
+   it does not check to see if file is NULL, nor whether the structure file
+   points to has been clobbered or not.
+*/
+
+ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
+/*
+     Push one character back onto the stream to be read as the first character
+   on the next read.  At least one character of push-back is allowed.
+   gzungetc() returns the character pushed, or -1 on failure.  gzungetc() will
+   fail if c is -1, and may fail if a character has been pushed but not read
+   yet.  If gzungetc is used immediately after gzopen or gzdopen, at least the
+   output buffer size of pushed characters is allowed.  (See gzbuffer above.)
+   The pushed character will be discarded if the stream is repositioned with
+   gzseek() or gzrewind().
+*/
+
+ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
+/*
+     Flushes all pending output into the compressed file.  The parameter flush
+   is as in the deflate() function.  The return value is the zlib error number
+   (see function gzerror below).  gzflush is only permitted when writing.
+
+     If the flush parameter is Z_FINISH, the remaining data is written and the
+   gzip stream is completed in the output.  If gzwrite() is called again, a new
+   gzip stream will be started in the output.  gzread() is able to read such
+   concatented gzip streams.
+
+     gzflush should be called only when strictly necessary because it will
+   degrade compression if called too often.
+*/
+
+/*
+ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
+                                   z_off_t offset, int whence));
+
+     Sets the starting position for the next gzread or gzwrite on the given
+   compressed file.  The offset represents a number of bytes in the
+   uncompressed data stream.  The whence parameter is defined as in lseek(2);
+   the value SEEK_END is not supported.
+
+     If the file is opened for reading, this function is emulated but can be
+   extremely slow.  If the file is opened for writing, only forward seeks are
+   supported; gzseek then compresses a sequence of zeroes up to the new
+   starting position.
+
+     gzseek returns the resulting offset location as measured in bytes from
+   the beginning of the uncompressed stream, or -1 in case of error, in
+   particular if the file is opened for writing and the new starting position
+   would be before the current position.
+*/
+
+ZEXTERN int ZEXPORT    gzrewind OF((gzFile file));
+/*
+     Rewinds the given file. This function is supported only for reading.
+
+     gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
+*/
+
+/*
+ZEXTERN z_off_t ZEXPORT    gztell OF((gzFile file));
+
+     Returns the starting position for the next gzread or gzwrite on the given
+   compressed file.  This position represents a number of bytes in the
+   uncompressed data stream, and is zero when starting, even if appending or
+   reading a gzip stream from the middle of a file using gzdopen().
+
+     gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
+*/
+
+/*
+ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file));
+
+     Returns the current offset in the file being read or written.  This offset
+   includes the count of bytes that precede the gzip stream, for example when
+   appending or when using gzdopen() for reading.  When reading, the offset
+   does not include as yet unused buffered input.  This information can be used
+   for a progress indicator.  On error, gzoffset() returns -1.
+*/
+
+ZEXTERN int ZEXPORT gzeof OF((gzFile file));
+/*
+     Returns true (1) if the end-of-file indicator has been set while reading,
+   false (0) otherwise.  Note that the end-of-file indicator is set only if the
+   read tried to go past the end of the input, but came up short.  Therefore,
+   just like feof(), gzeof() may return false even if there is no more data to
+   read, in the event that the last read request was for the exact number of
+   bytes remaining in the input file.  This will happen if the input file size
+   is an exact multiple of the buffer size.
+
+     If gzeof() returns true, then the read functions will return no more data,
+   unless the end-of-file indicator is reset by gzclearerr() and the input file
+   has grown since the previous end of file was detected.
+*/
+
+ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
+/*
+     Returns true (1) if file is being copied directly while reading, or false
+   (0) if file is a gzip stream being decompressed.
+
+     If the input file is empty, gzdirect() will return true, since the input
+   does not contain a gzip stream.
+
+     If gzdirect() is used immediately after gzopen() or gzdopen() it will
+   cause buffers to be allocated to allow reading the file to determine if it
+   is a gzip file.  Therefore if gzbuffer() is used, it should be called before
+   gzdirect().
+
+     When writing, gzdirect() returns true (1) if transparent writing was
+   requested ("wT" for the gzopen() mode), or false (0) otherwise.  (Note:
+   gzdirect() is not needed when writing.  Transparent writing must be
+   explicitly requested, so the application already knows the answer.  When
+   linking statically, using gzdirect() will include all of the zlib code for
+   gzip file reading and decompression, which may not be desired.)
+*/
+
+ZEXTERN int ZEXPORT    gzclose OF((gzFile file));
+/*
+     Flushes all pending output if necessary, closes the compressed file and
+   deallocates the (de)compression state.  Note that once file is closed, you
+   cannot call gzerror with file, since its structures have been deallocated.
+   gzclose must not be called more than once on the same file, just as free
+   must not be called more than once on the same allocation.
+
+     gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a
+   file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the
+   last read ended in the middle of a gzip stream, or Z_OK on success.
+*/
+
+ZEXTERN int ZEXPORT gzclose_r OF((gzFile file));
+ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
+/*
+     Same as gzclose(), but gzclose_r() is only for use when reading, and
+   gzclose_w() is only for use when writing or appending.  The advantage to
+   using these instead of gzclose() is that they avoid linking in zlib
+   compression or decompression code that is not used when only reading or only
+   writing respectively.  If gzclose() is used, then both compression and
+   decompression code will be included the application when linking to a static
+   zlib library.
+*/
+
+ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
+/*
+     Returns the error message for the last error which occurred on the given
+   compressed file.  errnum is set to zlib error number.  If an error occurred
+   in the file system and not in the compression library, errnum is set to
+   Z_ERRNO and the application may consult errno to get the exact error code.
+
+     The application must not modify the returned string.  Future calls to
+   this function may invalidate the previously returned string.  If file is
+   closed, then the string previously returned by gzerror will no longer be
+   available.
+
+     gzerror() should be used to distinguish errors from end-of-file for those
+   functions above that do not distinguish those cases in their return values.
+*/
+
+ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
+/*
+     Clears the error and end-of-file flags for file.  This is analogous to the
+   clearerr() function in stdio.  This is useful for continuing to read a gzip
+   file that is being written concurrently.
+*/
+
+#endif /* !Z_SOLO */
+
+                        /* checksum functions */
+
+/*
+     These functions are not related to compression but are exported
+   anyway because they might be useful in applications using the compression
+   library.
+*/
+
+ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
+/*
+     Update a running Adler-32 checksum with the bytes buf[0..len-1] and
+   return the updated checksum.  If buf is Z_NULL, this function returns the
+   required initial value for the checksum.
+
+     An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
+   much faster.
+
+   Usage example:
+
+     uLong adler = adler32(0L, Z_NULL, 0);
+
+     while (read_buffer(buffer, length) != EOF) {
+       adler = adler32(adler, buffer, length);
+     }
+     if (adler != original_adler) error();
+*/
+
+/*
+ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
+                                          z_off_t len2));
+
+     Combine two Adler-32 checksums into one.  For two sequences of bytes, seq1
+   and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
+   each, adler1 and adler2.  adler32_combine() returns the Adler-32 checksum of
+   seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.  Note
+   that the z_off_t type (like off_t) is a signed integer.  If len2 is
+   negative, the result has no meaning or utility.
+*/
+
+ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));
+/*
+     Update a running CRC-32 with the bytes buf[0..len-1] and return the
+   updated CRC-32.  If buf is Z_NULL, this function returns the required
+   initial value for the crc.  Pre- and post-conditioning (one's complement) is
+   performed within this function so it shouldn't be done by the application.
+
+   Usage example:
+
+     uLong crc = crc32(0L, Z_NULL, 0);
+
+     while (read_buffer(buffer, length) != EOF) {
+       crc = crc32(crc, buffer, length);
+     }
+     if (crc != original_crc) error();
+*/
+
+/*
+ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
+
+     Combine two CRC-32 check values into one.  For two sequences of bytes,
+   seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
+   calculated for each, crc1 and crc2.  crc32_combine() returns the CRC-32
+   check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and
+   len2.
+*/
+
+
+                        /* various hacks, don't look :) */
+
+/* deflateInit and inflateInit are macros to allow checking the zlib version
+ * and the compiler's view of z_stream:
+ */
+ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
+                                     const char *version, int stream_size));
+ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
+                                     const char *version, int stream_size));
+ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int  level, int  method,
+                                      int windowBits, int memLevel,
+                                      int strategy, const char *version,
+                                      int stream_size));
+ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int  windowBits,
+                                      const char *version, int stream_size));
+ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
+                                         unsigned char FAR *window,
+                                         const char *version,
+                                         int stream_size));
+#define deflateInit(strm, level) \
+        deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream))
+#define inflateInit(strm) \
+        inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream))
+#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
+        deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
+                      (strategy), ZLIB_VERSION, (int)sizeof(z_stream))
+#define inflateInit2(strm, windowBits) \
+        inflateInit2_((strm), (windowBits), ZLIB_VERSION, \
+                      (int)sizeof(z_stream))
+#define inflateBackInit(strm, windowBits, window) \
+        inflateBackInit_((strm), (windowBits), (window), \
+                      ZLIB_VERSION, (int)sizeof(z_stream))
+
+#ifndef Z_SOLO
+
+/* gzgetc() macro and its supporting function and exposed data structure.  Note
+ * that the real internal state is much larger than the exposed structure.
+ * This abbreviated structure exposes just enough for the gzgetc() macro.  The
+ * user should not mess with these exposed elements, since their names or
+ * behavior could change in the future, perhaps even capriciously.  They can
+ * only be used by the gzgetc() macro.  You have been warned.
+ */
+struct gzFile_s {
+    unsigned have;
+    unsigned char *next;
+    z_off64_t pos;
+};
+ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file));  /* backward compatibility */
+#ifdef Z_PREFIX_SET
+#  undef z_gzgetc
+#  define z_gzgetc(g) \
+          ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g))
+#else
+#  define gzgetc(g) \
+          ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g))
+#endif
+
+/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or
+ * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if
+ * both are true, the application gets the *64 functions, and the regular
+ * functions are changed to 64 bits) -- in case these are set on systems
+ * without large file support, _LFS64_LARGEFILE must also be true
+ */
+#ifdef Z_LARGE64
+   ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
+   ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int));
+   ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile));
+   ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
+   ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t));
+   ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t));
+#endif
+
+#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64)
+#  ifdef Z_PREFIX_SET
+#    define z_gzopen z_gzopen64
+#    define z_gzseek z_gzseek64
+#    define z_gztell z_gztell64
+#    define z_gzoffset z_gzoffset64
+#    define z_adler32_combine z_adler32_combine64
+#    define z_crc32_combine z_crc32_combine64
+#  else
+#    define gzopen gzopen64
+#    define gzseek gzseek64
+#    define gztell gztell64
+#    define gzoffset gzoffset64
+#    define adler32_combine adler32_combine64
+#    define crc32_combine crc32_combine64
+#  endif
+#  ifndef Z_LARGE64
+     ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
+     ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int));
+     ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile));
+     ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile));
+     ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
+     ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
+#  endif
+#else
+   ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *));
+   ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int));
+   ZEXTERN z_off_t ZEXPORT gztell OF((gzFile));
+   ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile));
+   ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
+   ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
+#endif
+
+#else /* Z_SOLO */
+
+   ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
+   ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
+
+#endif /* !Z_SOLO */
+
+/* hack for buggy compilers */
+#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
+    struct internal_state {int dummy;};
+#endif
+
+/* undocumented functions */
+ZEXTERN const char   * ZEXPORT zError           OF((int));
+ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp));
+ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table    OF((void));
+ZEXTERN int            ZEXPORT inflateUndermine OF((z_streamp, int));
+ZEXTERN int            ZEXPORT inflateResetKeep OF((z_streamp));
+ZEXTERN int            ZEXPORT deflateResetKeep OF((z_streamp));
+#if defined(_WIN32) && !defined(Z_SOLO)
+ZEXTERN gzFile         ZEXPORT gzopen_w OF((const wchar_t *path,
+                                            const char *mode));
+#endif
+#if defined(STDC) || defined(Z_HAVE_STDARG_H)
+#  ifndef Z_SOLO
+ZEXTERN int            ZEXPORTVA gzvprintf Z_ARG((gzFile file,
+                                                  const char *format,
+                                                  va_list va));
+#  endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ZLIB_H */
Index: uKadecot/trunk/tools/zlib/zlib.sln
===================================================================
--- uKadecot/trunk/tools/zlib/zlib.sln	(revision 101)
+++ uKadecot/trunk/tools/zlib/zlib.sln	(revision 101)
@@ -0,0 +1,22 @@
+﻿
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.31101.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib.vcxproj", "{3FBC7619-AF55-4664-89F5-FE1D40BBB323}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{3FBC7619-AF55-4664-89F5-FE1D40BBB323}.Debug|Win32.ActiveCfg = Debug|Win32
+		{3FBC7619-AF55-4664-89F5-FE1D40BBB323}.Debug|Win32.Build.0 = Debug|Win32
+		{3FBC7619-AF55-4664-89F5-FE1D40BBB323}.Release|Win32.ActiveCfg = Release|Win32
+		{3FBC7619-AF55-4664-89F5-FE1D40BBB323}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
Index: uKadecot/trunk/tools/zlib/zlib.vcxproj
===================================================================
--- uKadecot/trunk/tools/zlib/zlib.vcxproj	(revision 101)
+++ uKadecot/trunk/tools/zlib/zlib.vcxproj	(revision 101)
@@ -0,0 +1,106 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{3FBC7619-AF55-4664-89F5-FE1D40BBB323}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>zlib</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v110</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v110</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup />
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;DYNAMIC_CRC_TABLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;DYNAMIC_CRC_TABLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <Text Include="ReadMe.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="adler32.c" />
+    <ClCompile Include="compress.c" />
+    <ClCompile Include="crc32.c" />
+    <ClCompile Include="deflate.c" />
+    <ClCompile Include="infback.c" />
+    <ClCompile Include="inffast.c" />
+    <ClCompile Include="inflate.c" />
+    <ClCompile Include="inftrees.c" />
+    <ClCompile Include="trees.c" />
+    <ClCompile Include="uncompr.c" />
+    <ClCompile Include="zutil.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="crc32.h" />
+    <ClInclude Include="deflate.h" />
+    <ClInclude Include="inffast.h" />
+    <ClInclude Include="inffixed.h" />
+    <ClInclude Include="inflate.h" />
+    <ClInclude Include="inftrees.h" />
+    <ClInclude Include="trees.h" />
+    <ClInclude Include="zconf.h" />
+    <ClInclude Include="zlib.h" />
+    <ClInclude Include="zutil.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
Index: uKadecot/trunk/tools/zlib/zlib.vcxproj.filters
===================================================================
--- uKadecot/trunk/tools/zlib/zlib.vcxproj.filters	(revision 101)
+++ uKadecot/trunk/tools/zlib/zlib.vcxproj.filters	(revision 101)
@@ -0,0 +1,87 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="ソース ファイル">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="ヘッダー ファイル">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="リソース ファイル">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <Text Include="ReadMe.txt" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="adler32.c">
+      <Filter>ソース ファイル</Filter>
+    </ClCompile>
+    <ClCompile Include="compress.c">
+      <Filter>ソース ファイル</Filter>
+    </ClCompile>
+    <ClCompile Include="crc32.c">
+      <Filter>ソース ファイル</Filter>
+    </ClCompile>
+    <ClCompile Include="deflate.c">
+      <Filter>ソース ファイル</Filter>
+    </ClCompile>
+    <ClCompile Include="infback.c">
+      <Filter>ソース ファイル</Filter>
+    </ClCompile>
+    <ClCompile Include="inffast.c">
+      <Filter>ソース ファイル</Filter>
+    </ClCompile>
+    <ClCompile Include="inflate.c">
+      <Filter>ソース ファイル</Filter>
+    </ClCompile>
+    <ClCompile Include="inftrees.c">
+      <Filter>ソース ファイル</Filter>
+    </ClCompile>
+    <ClCompile Include="trees.c">
+      <Filter>ソース ファイル</Filter>
+    </ClCompile>
+    <ClCompile Include="uncompr.c">
+      <Filter>ソース ファイル</Filter>
+    </ClCompile>
+    <ClCompile Include="zutil.c">
+      <Filter>ソース ファイル</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="crc32.h">
+      <Filter>ヘッダー ファイル</Filter>
+    </ClInclude>
+    <ClInclude Include="deflate.h">
+      <Filter>ヘッダー ファイル</Filter>
+    </ClInclude>
+    <ClInclude Include="inffast.h">
+      <Filter>ヘッダー ファイル</Filter>
+    </ClInclude>
+    <ClInclude Include="inffixed.h">
+      <Filter>ヘッダー ファイル</Filter>
+    </ClInclude>
+    <ClInclude Include="inflate.h">
+      <Filter>ヘッダー ファイル</Filter>
+    </ClInclude>
+    <ClInclude Include="inftrees.h">
+      <Filter>ヘッダー ファイル</Filter>
+    </ClInclude>
+    <ClInclude Include="trees.h">
+      <Filter>ヘッダー ファイル</Filter>
+    </ClInclude>
+    <ClInclude Include="zconf.h">
+      <Filter>ヘッダー ファイル</Filter>
+    </ClInclude>
+    <ClInclude Include="zlib.h">
+      <Filter>ヘッダー ファイル</Filter>
+    </ClInclude>
+    <ClInclude Include="zutil.h">
+      <Filter>ヘッダー ファイル</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
Index: uKadecot/trunk/tools/zlib/zutil.c
===================================================================
--- uKadecot/trunk/tools/zlib/zutil.c	(revision 101)
+++ uKadecot/trunk/tools/zlib/zutil.c	(revision 101)
@@ -0,0 +1,324 @@
+/* zutil.c -- target dependent utility functions for the compression library
+ * Copyright (C) 1995-2005, 2010, 2011, 2012 Jean-loup Gailly.
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/* @(#) $Id$ */
+
+#include "zutil.h"
+#ifndef Z_SOLO
+#  include "gzguts.h"
+#endif
+
+#ifndef NO_DUMMY_DECL
+struct internal_state      {int dummy;}; /* for buggy compilers */
+#endif
+
+z_const char * const z_errmsg[10] = {
+"need dictionary",     /* Z_NEED_DICT       2  */
+"stream end",          /* Z_STREAM_END      1  */
+"",                    /* Z_OK              0  */
+"file error",          /* Z_ERRNO         (-1) */
+"stream error",        /* Z_STREAM_ERROR  (-2) */
+"data error",          /* Z_DATA_ERROR    (-3) */
+"insufficient memory", /* Z_MEM_ERROR     (-4) */
+"buffer error",        /* Z_BUF_ERROR     (-5) */
+"incompatible version",/* Z_VERSION_ERROR (-6) */
+""};
+
+
+const char * ZEXPORT zlibVersion()
+{
+    return ZLIB_VERSION;
+}
+
+uLong ZEXPORT zlibCompileFlags()
+{
+    uLong flags;
+
+    flags = 0;
+    switch ((int)(sizeof(uInt))) {
+    case 2:     break;
+    case 4:     flags += 1;     break;
+    case 8:     flags += 2;     break;
+    default:    flags += 3;
+    }
+    switch ((int)(sizeof(uLong))) {
+    case 2:     break;
+    case 4:     flags += 1 << 2;        break;
+    case 8:     flags += 2 << 2;        break;
+    default:    flags += 3 << 2;
+    }
+    switch ((int)(sizeof(voidpf))) {
+    case 2:     break;
+    case 4:     flags += 1 << 4;        break;
+    case 8:     flags += 2 << 4;        break;
+    default:    flags += 3 << 4;
+    }
+    switch ((int)(sizeof(z_off_t))) {
+    case 2:     break;
+    case 4:     flags += 1 << 6;        break;
+    case 8:     flags += 2 << 6;        break;
+    default:    flags += 3 << 6;
+    }
+#ifdef DEBUG
+    flags += 1 << 8;
+#endif
+#if defined(ASMV) || defined(ASMINF)
+    flags += 1 << 9;
+#endif
+#ifdef ZLIB_WINAPI
+    flags += 1 << 10;
+#endif
+#ifdef BUILDFIXED
+    flags += 1 << 12;
+#endif
+#ifdef DYNAMIC_CRC_TABLE
+    flags += 1 << 13;
+#endif
+#ifdef NO_GZCOMPRESS
+    flags += 1L << 16;
+#endif
+#ifdef NO_GZIP
+    flags += 1L << 17;
+#endif
+#ifdef PKZIP_BUG_WORKAROUND
+    flags += 1L << 20;
+#endif
+#ifdef FASTEST
+    flags += 1L << 21;
+#endif
+#if defined(STDC) || defined(Z_HAVE_STDARG_H)
+#  ifdef NO_vsnprintf
+    flags += 1L << 25;
+#    ifdef HAS_vsprintf_void
+    flags += 1L << 26;
+#    endif
+#  else
+#    ifdef HAS_vsnprintf_void
+    flags += 1L << 26;
+#    endif
+#  endif
+#else
+    flags += 1L << 24;
+#  ifdef NO_snprintf
+    flags += 1L << 25;
+#    ifdef HAS_sprintf_void
+    flags += 1L << 26;
+#    endif
+#  else
+#    ifdef HAS_snprintf_void
+    flags += 1L << 26;
+#    endif
+#  endif
+#endif
+    return flags;
+}
+
+#ifdef DEBUG
+
+#  ifndef verbose
+#    define verbose 0
+#  endif
+int ZLIB_INTERNAL z_verbose = verbose;
+
+void ZLIB_INTERNAL z_error (m)
+    char *m;
+{
+    fprintf(stderr, "%s\n", m);
+    exit(1);
+}
+#endif
+
+/* exported to allow conversion of error code to string for compress() and
+ * uncompress()
+ */
+const char * ZEXPORT zError(err)
+    int err;
+{
+    return ERR_MSG(err);
+}
+
+#if defined(_WIN32_WCE)
+    /* The Microsoft C Run-Time Library for Windows CE doesn't have
+     * errno.  We define it as a global variable to simplify porting.
+     * Its value is always 0 and should not be used.
+     */
+    int errno = 0;
+#endif
+
+#ifndef HAVE_MEMCPY
+
+void ZLIB_INTERNAL zmemcpy(dest, source, len)
+    Bytef* dest;
+    const Bytef* source;
+    uInt  len;
+{
+    if (len == 0) return;
+    do {
+        *dest++ = *source++; /* ??? to be unrolled */
+    } while (--len != 0);
+}
+
+int ZLIB_INTERNAL zmemcmp(s1, s2, len)
+    const Bytef* s1;
+    const Bytef* s2;
+    uInt  len;
+{
+    uInt j;
+
+    for (j = 0; j < len; j++) {
+        if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1;
+    }
+    return 0;
+}
+
+void ZLIB_INTERNAL zmemzero(dest, len)
+    Bytef* dest;
+    uInt  len;
+{
+    if (len == 0) return;
+    do {
+        *dest++ = 0;  /* ??? to be unrolled */
+    } while (--len != 0);
+}
+#endif
+
+#ifndef Z_SOLO
+
+#ifdef SYS16BIT
+
+#ifdef __TURBOC__
+/* Turbo C in 16-bit mode */
+
+#  define MY_ZCALLOC
+
+/* Turbo C malloc() does not allow dynamic allocation of 64K bytes
+ * and farmalloc(64K) returns a pointer with an offset of 8, so we
+ * must fix the pointer. Warning: the pointer must be put back to its
+ * original form in order to free it, use zcfree().
+ */
+
+#define MAX_PTR 10
+/* 10*64K = 640K */
+
+local int next_ptr = 0;
+
+typedef struct ptr_table_s {
+    voidpf org_ptr;
+    voidpf new_ptr;
+} ptr_table;
+
+local ptr_table table[MAX_PTR];
+/* This table is used to remember the original form of pointers
+ * to large buffers (64K). Such pointers are normalized with a zero offset.
+ * Since MSDOS is not a preemptive multitasking OS, this table is not
+ * protected from concurrent access. This hack doesn't work anyway on
+ * a protected system like OS/2. Use Microsoft C instead.
+ */
+
+voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size)
+{
+    voidpf buf = opaque; /* just to make some compilers happy */
+    ulg bsize = (ulg)items*size;
+
+    /* If we allocate less than 65520 bytes, we assume that farmalloc
+     * will return a usable pointer which doesn't have to be normalized.
+     */
+    if (bsize < 65520L) {
+        buf = farmalloc(bsize);
+        if (*(ush*)&buf != 0) return buf;
+    } else {
+        buf = farmalloc(bsize + 16L);
+    }
+    if (buf == NULL || next_ptr >= MAX_PTR) return NULL;
+    table[next_ptr].org_ptr = buf;
+
+    /* Normalize the pointer to seg:0 */
+    *((ush*)&buf+1) += ((ush)((uch*)buf-0) + 15) >> 4;
+    *(ush*)&buf = 0;
+    table[next_ptr++].new_ptr = buf;
+    return buf;
+}
+
+void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
+{
+    int n;
+    if (*(ush*)&ptr != 0) { /* object < 64K */
+        farfree(ptr);
+        return;
+    }
+    /* Find the original pointer */
+    for (n = 0; n < next_ptr; n++) {
+        if (ptr != table[n].new_ptr) continue;
+
+        farfree(table[n].org_ptr);
+        while (++n < next_ptr) {
+            table[n-1] = table[n];
+        }
+        next_ptr--;
+        return;
+    }
+    ptr = opaque; /* just to make some compilers happy */
+    Assert(0, "zcfree: ptr not found");
+}
+
+#endif /* __TURBOC__ */
+
+
+#ifdef M_I86
+/* Microsoft C in 16-bit mode */
+
+#  define MY_ZCALLOC
+
+#if (!defined(_MSC_VER) || (_MSC_VER <= 600))
+#  define _halloc  halloc
+#  define _hfree   hfree
+#endif
+
+voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, uInt items, uInt size)
+{
+    if (opaque) opaque = 0; /* to make compiler happy */
+    return _halloc((long)items, size);
+}
+
+void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
+{
+    if (opaque) opaque = 0; /* to make compiler happy */
+    _hfree(ptr);
+}
+
+#endif /* M_I86 */
+
+#endif /* SYS16BIT */
+
+
+#ifndef MY_ZCALLOC /* Any system without a special alloc function */
+
+#ifndef STDC
+extern voidp  malloc OF((uInt size));
+extern voidp  calloc OF((uInt items, uInt size));
+extern void   free   OF((voidpf ptr));
+#endif
+
+voidpf ZLIB_INTERNAL zcalloc (opaque, items, size)
+    voidpf opaque;
+    unsigned items;
+    unsigned size;
+{
+    if (opaque) items += size - size; /* make compiler happy */
+    return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) :
+                              (voidpf)calloc(items, size);
+}
+
+void ZLIB_INTERNAL zcfree (opaque, ptr)
+    voidpf opaque;
+    voidpf ptr;
+{
+    free(ptr);
+    if (opaque) return; /* make compiler happy */
+}
+
+#endif /* MY_ZCALLOC */
+
+#endif /* !Z_SOLO */
Index: uKadecot/trunk/tools/zlib/zutil.h
===================================================================
--- uKadecot/trunk/tools/zlib/zutil.h	(revision 101)
+++ uKadecot/trunk/tools/zlib/zutil.h	(revision 101)
@@ -0,0 +1,253 @@
+/* zutil.h -- internal interface and configuration of the compression library
+ * Copyright (C) 1995-2013 Jean-loup Gailly.
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/* WARNING: this file should *not* be used by applications. It is
+   part of the implementation of the compression library and is
+   subject to change. Applications should only use zlib.h.
+ */
+
+/* @(#) $Id$ */
+
+#ifndef ZUTIL_H
+#define ZUTIL_H
+
+#ifdef HAVE_HIDDEN
+#  define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
+#else
+#  define ZLIB_INTERNAL
+#endif
+
+#include "zlib.h"
+
+#if defined(STDC) && !defined(Z_SOLO)
+#  if !(defined(_WIN32_WCE) && defined(_MSC_VER))
+#    include <stddef.h>
+#  endif
+#  include <string.h>
+#  include <stdlib.h>
+#endif
+
+#ifdef Z_SOLO
+   typedef long ptrdiff_t;  /* guess -- will be caught if guess is wrong */
+#endif
+
+#ifndef local
+#  define local static
+#endif
+/* compile with -Dlocal if your debugger can't find static symbols */
+
+typedef unsigned char  uch;
+typedef uch FAR uchf;
+typedef unsigned short ush;
+typedef ush FAR ushf;
+typedef unsigned long  ulg;
+
+extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
+/* (size given to avoid silly warnings with Visual C++) */
+
+#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
+
+#define ERR_RETURN(strm,err) \
+  return (strm->msg = ERR_MSG(err), (err))
+/* To be used only when the state is known to be valid */
+
+        /* common constants */
+
+#ifndef DEF_WBITS
+#  define DEF_WBITS MAX_WBITS
+#endif
+/* default windowBits for decompression. MAX_WBITS is for compression only */
+
+#if MAX_MEM_LEVEL >= 8
+#  define DEF_MEM_LEVEL 8
+#else
+#  define DEF_MEM_LEVEL  MAX_MEM_LEVEL
+#endif
+/* default memLevel */
+
+#define STORED_BLOCK 0
+#define STATIC_TREES 1
+#define DYN_TREES    2
+/* The three kinds of block type */
+
+#define MIN_MATCH  3
+#define MAX_MATCH  258
+/* The minimum and maximum match lengths */
+
+#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */
+
+        /* target dependencies */
+
+#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32))
+#  define OS_CODE  0x00
+#  ifndef Z_SOLO
+#    if defined(__TURBOC__) || defined(__BORLANDC__)
+#      if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
+         /* Allow compilation with ANSI keywords only enabled */
+         void _Cdecl farfree( void *block );
+         void *_Cdecl farmalloc( unsigned long nbytes );
+#      else
+#        include <alloc.h>
+#      endif
+#    else /* MSC or DJGPP */
+#      include <malloc.h>
+#    endif
+#  endif
+#endif
+
+#ifdef AMIGA
+#  define OS_CODE  0x01
+#endif
+
+#if defined(VAXC) || defined(VMS)
+#  define OS_CODE  0x02
+#  define F_OPEN(name, mode) \
+     fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
+#endif
+
+#if defined(ATARI) || defined(atarist)
+#  define OS_CODE  0x05
+#endif
+
+#ifdef OS2
+#  define OS_CODE  0x06
+#  if defined(M_I86) && !defined(Z_SOLO)
+#    include <malloc.h>
+#  endif
+#endif
+
+#if defined(MACOS) || defined(TARGET_OS_MAC)
+#  define OS_CODE  0x07
+#  ifndef Z_SOLO
+#    if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
+#      include <unix.h> /* for fdopen */
+#    else
+#      ifndef fdopen
+#        define fdopen(fd,mode) NULL /* No fdopen() */
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef TOPS20
+#  define OS_CODE  0x0a
+#endif
+
+#ifdef WIN32
+#  ifndef __CYGWIN__  /* Cygwin is Unix, not Win32 */
+#    define OS_CODE  0x0b
+#  endif
+#endif
+
+#ifdef __50SERIES /* Prime/PRIMOS */
+#  define OS_CODE  0x0f
+#endif
+
+#if defined(_BEOS_) || defined(RISCOS)
+#  define fdopen(fd,mode) NULL /* No fdopen() */
+#endif
+
+#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX
+#  if defined(_WIN32_WCE)
+#    define fdopen(fd,mode) NULL /* No fdopen() */
+#    ifndef _PTRDIFF_T_DEFINED
+       typedef int ptrdiff_t;
+#      define _PTRDIFF_T_DEFINED
+#    endif
+#  else
+#    define fdopen(fd,type)  _fdopen(fd,type)
+#  endif
+#endif
+
+#if defined(__BORLANDC__) && !defined(MSDOS)
+  #pragma warn -8004
+  #pragma warn -8008
+  #pragma warn -8066
+#endif
+
+/* provide prototypes for these when building zlib without LFS */
+#if !defined(_WIN32) && \
+    (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)
+    ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
+    ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
+#endif
+
+        /* common defaults */
+
+#ifndef OS_CODE
+#  define OS_CODE  0x03  /* assume Unix */
+#endif
+
+#ifndef F_OPEN
+#  define F_OPEN(name, mode) fopen((name), (mode))
+#endif
+
+         /* functions */
+
+#if defined(pyr) || defined(Z_SOLO)
+#  define NO_MEMCPY
+#endif
+#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__)
+ /* Use our own functions for small and medium model with MSC <= 5.0.
+  * You may have to use the same strategy for Borland C (untested).
+  * The __SC__ check is for Symantec.
+  */
+#  define NO_MEMCPY
+#endif
+#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
+#  define HAVE_MEMCPY
+#endif
+#ifdef HAVE_MEMCPY
+#  ifdef SMALL_MEDIUM /* MSDOS small or medium model */
+#    define zmemcpy _fmemcpy
+#    define zmemcmp _fmemcmp
+#    define zmemzero(dest, len) _fmemset(dest, 0, len)
+#  else
+#    define zmemcpy memcpy
+#    define zmemcmp memcmp
+#    define zmemzero(dest, len) memset(dest, 0, len)
+#  endif
+#else
+   void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len));
+   int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len));
+   void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len));
+#endif
+
+/* Diagnostic functions */
+#ifdef DEBUG
+#  include <stdio.h>
+   extern int ZLIB_INTERNAL z_verbose;
+   extern void ZLIB_INTERNAL z_error OF((char *m));
+#  define Assert(cond,msg) {if(!(cond)) z_error(msg);}
+#  define Trace(x) {if (z_verbose>=0) fprintf x ;}
+#  define Tracev(x) {if (z_verbose>0) fprintf x ;}
+#  define Tracevv(x) {if (z_verbose>1) fprintf x ;}
+#  define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;}
+#  define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;}
+#else
+#  define Assert(cond,msg)
+#  define Trace(x)
+#  define Tracev(x)
+#  define Tracevv(x)
+#  define Tracec(c,x)
+#  define Tracecv(c,x)
+#endif
+
+#ifndef Z_SOLO
+   voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items,
+                                    unsigned size));
+   void ZLIB_INTERNAL zcfree  OF((voidpf opaque, voidpf ptr));
+#endif
+
+#define ZALLOC(strm, items, size) \
+           (*((strm)->zalloc))((strm)->opaque, (items), (size))
+#define ZFREE(strm, addr)  (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))
+#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}
+
+/* Reverse the bytes in a 32-bit value */
+#define ZSWAP32(q) ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \
+                    (((q) & 0xff00) << 8) + (((q) & 0xff) << 24))
+
+#endif /* ZUTIL_H */
Index: uKadecot/trunk/uip/apps/dhcpc/Makefile.dhcpc
===================================================================
--- uKadecot/trunk/uip/apps/dhcpc/Makefile.dhcpc	(revision 101)
+++ uKadecot/trunk/uip/apps/dhcpc/Makefile.dhcpc	(revision 101)
@@ -0,0 +1,1 @@
+APP_SOURCES += dhcpc.c timer.c
Index: uKadecot/trunk/uip/apps/dhcpc/dhcpc.c
===================================================================
--- uKadecot/trunk/uip/apps/dhcpc/dhcpc.c	(revision 101)
+++ uKadecot/trunk/uip/apps/dhcpc/dhcpc.c	(revision 101)
@@ -0,0 +1,390 @@
+/*
+ * Copyright (c) 2005, Swedish Institute of Computer Science
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * @(#)$Id$
+ */
+
+#include <stdio.h>
+#include <string.h>
+
+#include "uip.h"
+#include "dhcpc.h"
+#include "timer.h"
+#include "pt.h"
+
+#define STATE_INITIAL         0
+#define STATE_SENDING         1
+#define STATE_OFFER_RECEIVED  2
+#define STATE_CONFIG_RECEIVED 3
+
+#ifdef __RX
+#pragma pack
+#elif _MSC_VER
+#pragma pack(push, 1)
+#endif
+
+struct dhcp_msg {
+  u8_t op, htype, hlen, hops;
+  u8_t xid[4];
+  u16_t secs, flags;
+  u8_t ciaddr[4];
+  u8_t yiaddr[4];
+  u8_t siaddr[4];
+  u8_t giaddr[4];
+  u8_t chaddr[16];
+#ifndef UIP_CONF_DHCP_LIGHT
+  u8_t sname[64];
+  u8_t file[128];
+#endif
+  u8_t options[312];
+};
+
+#ifdef __RX
+#pragma unpack
+#elif _MSC_VER
+#pragma pack(pop)
+#endif
+
+#define BOOTP_BROADCAST 0x8000
+
+#define DHCP_REQUEST        1
+#define DHCP_REPLY          2
+#define DHCP_HTYPE_ETHERNET 1
+#define DHCP_HLEN_ETHERNET  6
+#define DHCP_MSG_LEN      236
+
+#define DHCPC_SERVER_PORT  67
+#define DHCPC_CLIENT_PORT  68
+
+#define DHCPDISCOVER  1
+#define DHCPOFFER     2
+#define DHCPREQUEST   3
+#define DHCPDECLINE   4
+#define DHCPACK       5
+#define DHCPNAK       6
+#define DHCPRELEASE   7
+
+#define DHCP_OPTION_SUBNET_MASK   1
+#define DHCP_OPTION_ROUTER        3
+#define DHCP_OPTION_DNS_SERVER    6
+#define DHCP_OPTION_REQ_IPADDR   50
+#define DHCP_OPTION_LEASE_TIME   51
+#define DHCP_OPTION_MSG_TYPE     53
+#define DHCP_OPTION_SERVER_ID    54
+#define DHCP_OPTION_REQ_LIST     55
+#define DHCP_OPTION_END         255
+
+static const u8_t xid[4] = {0xad, 0xde, 0x12, 0x23};
+static const u8_t magic_cookie[4] = {99, 130, 83, 99};
+/*---------------------------------------------------------------------------*/
+static u8_t *
+add_msg_type(u8_t *optptr, u8_t type)
+{
+  *optptr++ = DHCP_OPTION_MSG_TYPE;
+  *optptr++ = 1;
+  *optptr++ = type;
+  return optptr;
+}
+/*---------------------------------------------------------------------------*/
+static u8_t *
+add_server_id(struct dhcpc_state *s, u8_t *optptr)
+{
+  *optptr++ = DHCP_OPTION_SERVER_ID;
+  *optptr++ = 4;
+  memcpy(optptr, s->serverid, 4);
+  return optptr + 4;
+}
+/*---------------------------------------------------------------------------*/
+static u8_t *
+add_req_ipaddr(struct dhcpc_state *s, u8_t *optptr)
+{
+  *optptr++ = DHCP_OPTION_REQ_IPADDR;
+  *optptr++ = 4;
+  memcpy(optptr, s->ipaddr, 4);
+  return optptr + 4;
+}
+/*---------------------------------------------------------------------------*/
+static u8_t *
+add_req_options(u8_t *optptr)
+{
+  *optptr++ = DHCP_OPTION_REQ_LIST;
+  *optptr++ = 3;
+  *optptr++ = DHCP_OPTION_SUBNET_MASK;
+  *optptr++ = DHCP_OPTION_ROUTER;
+  *optptr++ = DHCP_OPTION_DNS_SERVER;
+  return optptr;
+}
+/*---------------------------------------------------------------------------*/
+static u8_t *
+add_end(u8_t *optptr)
+{
+  *optptr++ = DHCP_OPTION_END;
+  return optptr;
+}
+/*---------------------------------------------------------------------------*/
+static void
+create_msg(struct dhcpc_state *s, struct dhcp_msg *m)
+{
+  m->op = DHCP_REQUEST;
+  m->htype = DHCP_HTYPE_ETHERNET;
+  m->hlen = s->mac_len;
+  m->hops = 0;
+  memcpy(m->xid, xid, sizeof(m->xid));
+  m->secs = 0;
+  m->flags = HTONS(BOOTP_BROADCAST); /*  Broadcast bit. */
+  /*  uip_ipaddr_copy(m->ciaddr, uip_hostaddr);*/
+  memcpy(m->ciaddr, uip_hostaddr, sizeof(m->ciaddr));
+  memset(m->yiaddr, 0, sizeof(m->yiaddr));
+  memset(m->siaddr, 0, sizeof(m->siaddr));
+  memset(m->giaddr, 0, sizeof(m->giaddr));
+  memcpy(m->chaddr, s->mac_addr, s->mac_len);
+  memset(&m->chaddr[s->mac_len], 0, sizeof(m->chaddr) - s->mac_len);
+#ifndef UIP_CONF_DHCP_LIGHT
+  memset(m->sname, 0, sizeof(m->sname));
+  memset(m->file, 0, sizeof(m->file));
+#endif
+
+  memcpy(m->options, magic_cookie, sizeof(magic_cookie));
+}
+/*---------------------------------------------------------------------------*/
+static void
+send_discover(struct dhcpc_state *s)
+{
+  u8_t *end;
+  struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
+
+  create_msg(s, m);
+
+  end = add_msg_type(&m->options[4], DHCPDISCOVER);
+  end = add_req_options(end);
+  end = add_end(end);
+
+  uip_send(uip_appdata, end - (u8_t *)uip_appdata);
+}
+/*---------------------------------------------------------------------------*/
+static void
+send_request(struct dhcpc_state *s)
+{
+  u8_t *end;
+  struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
+
+  create_msg(s, m);
+
+  end = add_msg_type(&m->options[4], DHCPREQUEST);
+  end = add_server_id(s, end);
+  end = add_req_ipaddr(s, end);
+  end = add_end(end);
+
+  uip_send(uip_appdata, end - (u8_t *)uip_appdata);
+}
+/*---------------------------------------------------------------------------*/
+static u8_t
+parse_options(struct dhcpc_state *s, u8_t *optptr, int len)
+{
+  u8_t *end = optptr + len;
+  u8_t type = 0;
+
+  while(optptr < end) {
+    switch(*optptr) {
+    case DHCP_OPTION_SUBNET_MASK:
+      memcpy(s->netmask, optptr + 2, 4);
+      break;
+    case DHCP_OPTION_ROUTER:
+      memcpy(s->default_router, optptr + 2, 4);
+      break;
+    case DHCP_OPTION_DNS_SERVER:
+      memcpy(s->dnsaddr, optptr + 2, 4);
+      break;
+    case DHCP_OPTION_MSG_TYPE:
+      type = *(optptr + 2);
+      break;
+    case DHCP_OPTION_SERVER_ID:
+      memcpy(s->serverid, optptr + 2, 4);
+      break;
+    case DHCP_OPTION_LEASE_TIME:
+      memcpy(s->lease_time, optptr + 2, 4);
+      break;
+    case DHCP_OPTION_END:
+      return type;
+    }
+
+    optptr += optptr[1] + 2;
+  }
+  return type;
+}
+/*---------------------------------------------------------------------------*/
+static u8_t
+parse_msg(struct dhcpc_state *s)
+{
+  struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
+
+  if(m->op == DHCP_REPLY &&
+    memcmp(m->xid, xid, sizeof(xid)) == 0 &&
+    memcmp(m->chaddr, s->mac_addr, s->mac_len) == 0) {
+    memcpy(s->ipaddr, m->yiaddr, 4);
+    return parse_options(s, &m->options[4], uip_datalen());
+  }
+  return 0;
+}
+/*---------------------------------------------------------------------------*/
+static
+PT_THREAD(handle_dhcp(struct dhcpc_state *s))
+{
+  int ret;
+  PT_BEGIN(&s->pt);
+
+  /* try_again:*/
+  s->state = STATE_SENDING;
+  s->ticks = 5 * CLOCK_SECOND;
+
+  send_discover(s);
+  timer_set(&s->timer, s->ticks);
+
+  do {
+    PT_WAIT_UNTIL(&s->pt, (ret = uip_newdata() ? 1 : (timer_expired(&s->timer) ? 2 : 0)) != 0);
+
+    if((ret == 1) && parse_msg(s) == DHCPOFFER) {
+      s->state = STATE_OFFER_RECEIVED;
+      break;
+    }
+    if(ret != 2)
+      continue;
+
+    if(s->ticks < CLOCK_SECOND * 60) {
+      s->ticks += CLOCK_SECOND;
+    }
+    timer_set(&s->timer, s->ticks);
+  } while(s->state != STATE_OFFER_RECEIVED);
+
+  s->ticks = CLOCK_SECOND;
+
+  PT_YIELD(&s->pt);
+
+  send_request(s);
+  timer_set(&s->timer, s->ticks);
+
+  do {
+    PT_WAIT_UNTIL(&s->pt, (ret = uip_newdata() ? 1 : (timer_expired(&s->timer) ? 2 : 0)) != 0);
+
+    if((ret == 1) && parse_msg(s) == DHCPACK) {
+      s->state = STATE_CONFIG_RECEIVED;
+      break;
+    }
+    if(ret != 2)
+      continue;
+
+    if(s->ticks <= CLOCK_SECOND * 60) {
+      s->ticks += CLOCK_SECOND;
+      timer_set(&s->timer, s->ticks);
+    } else {
+      PT_RESTART(&s->pt);
+    }
+  } while(s->state != STATE_CONFIG_RECEIVED);
+
+#if 0
+  printf("Got IP address %d.%d.%d.%d\n",
+         uip_ipaddr1(s->ipaddr), uip_ipaddr2(s->ipaddr),
+         uip_ipaddr3(s->ipaddr), uip_ipaddr4(s->ipaddr));
+  printf("Got netmask %d.%d.%d.%d\n",
+         uip_ipaddr1(s->netmask), uip_ipaddr2(s->netmask),
+         uip_ipaddr3(s->netmask), uip_ipaddr4(s->netmask));
+  printf("Got DNS server %d.%d.%d.%d\n",
+         uip_ipaddr1(s->dnsaddr), uip_ipaddr2(s->dnsaddr),
+         uip_ipaddr3(s->dnsaddr), uip_ipaddr4(s->dnsaddr));
+  printf("Got default router %d.%d.%d.%d\n",
+         uip_ipaddr1(s->default_router), uip_ipaddr2(s->default_router),
+         uip_ipaddr3(s->default_router), uip_ipaddr4(s->default_router));
+  printf("Lease expires in %ld seconds\n",
+         ntohs(s->lease_time[0])*65536ul + ntohs(s->lease_time[1]));
+#endif
+
+  dhcpc_configured(s);
+
+  /*  timer_stop(&s->timer);*/
+
+  /*
+   * PT_END restarts the thread so we do this instead. Eventually we
+   * should reacquire expired leases here.
+   */
+  while(1) {
+    PT_YIELD(&s->pt);
+    if(s->state == STATE_INITIAL)
+      PT_RESTART(&s->pt);
+  }
+
+  PT_END(&s->pt);
+}
+/*---------------------------------------------------------------------------*/
+struct dhcpc_state *
+dhcpc_init(const void *mac_addr, int mac_len)
+{
+  struct uip_udp_conn *conn;
+  struct dhcpc_state *s;
+  uip_ipaddr_t addr;
+
+  uip_ipaddr(addr, 255,255,255,255);
+  conn = uip_udp_new(&addr, HTONS(DHCPC_SERVER_PORT));
+  if(conn != NULL) {
+    s = &conn->appstate.parblk.dhcpc;
+    s->conn = conn;
+    s->mac_addr = mac_addr;
+    s->mac_len  = mac_len;
+
+    s->state = STATE_INITIAL;
+    s->conn->appstate.udp_callback = dhcpc_appcall;
+
+    uip_udp_bind(conn, HTONS(DHCPC_CLIENT_PORT));
+
+    PT_INIT(&s->pt);
+
+    return s;
+  }
+
+  return NULL;
+}
+/*---------------------------------------------------------------------------*/
+void
+dhcpc_appcall(struct uip_udp_conn *uip_udp_conn, int fncd, void *p_parblk)
+{
+  handle_dhcp((struct dhcpc_state *)p_parblk);
+}
+/*---------------------------------------------------------------------------*/
+void
+dhcpc_request(struct dhcpc_state *s)
+{
+  u16_t ipaddr[2];
+
+  s->state = STATE_INITIAL;
+  uip_ipaddr(ipaddr, 0,0,0,0);
+  uip_sethostaddr(ipaddr);
+  uip_udp_conn = s->conn;
+  uip_process(UIP_UDP_TIMER);
+}
+/*---------------------------------------------------------------------------*/
Index: uKadecot/trunk/uip/apps/dhcpc/dhcpc.h
===================================================================
--- uKadecot/trunk/uip/apps/dhcpc/dhcpc.h	(revision 101)
+++ uKadecot/trunk/uip/apps/dhcpc/dhcpc.h	(revision 101)
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2005, Swedish Institute of Computer Science
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * @(#)$Id$
+ */
+#ifndef __DHCPC_H__
+#define __DHCPC_H__
+
+#include "timer.h"
+#include "pt.h"
+
+struct dhcpc_state {
+  struct pt pt;
+  char state;
+  struct uip_udp_conn *conn;
+  struct uip_timer timer;
+  u16_t ticks;
+  const void *mac_addr;
+  int mac_len;
+
+  u8_t serverid[4];
+
+  u16_t lease_time[2];
+  u16_t ipaddr[2];
+  u16_t netmask[2];
+  u16_t dnsaddr[2];
+  u16_t default_router[2];
+};
+
+struct dhcpc_state *dhcpc_init(const void *mac_addr, int mac_len);
+void dhcpc_request(struct dhcpc_state *s);
+
+void dhcpc_appcall(struct uip_udp_conn *uip_udp_conn, int fncd, void *p_parblk);
+
+void dhcpc_configured(const struct dhcpc_state *s);
+
+
+#endif /* __DHCPC_H__ */
Index: uKadecot/trunk/uip/apps/webserver/base64.c
===================================================================
--- uKadecot/trunk/uip/apps/webserver/base64.c	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/base64.c	(revision 101)
@@ -0,0 +1,112 @@
+/*
+ * Copyright(c) 2010, Norio Kobota, All rights reserved.
+ */
+
+#include <string.h>
+#include <stdlib.h>
+
+#include "base64.h"
+
+static const char base64_encode_chars[] =
+	"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+	"abcdefghijklmnopqrstuvwxyz"
+	"0123456789+/";
+
+static const signed char base64_decode_chars[] = {
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1,  62, - 1, - 1, - 1,  63,
+	 52,  53,  54,  55,  56,  57,  58,  59,
+	 60,  61, - 1, - 1, - 1,   0, - 1, - 1,
+	- 1,   0,   1,   2,   3,   4,   5,   6,
+	  7,   8,   9,  10,  11,  12,  13,  14,
+	 15,  16,  17,  18,  19,  20,  21,  22,
+	 23,  24,  25, - 1, - 1, - 1, - 1, - 1,
+	- 1,  26,  27,  28,  29,  30,  31,  32,
+	 33,  34,  35,  36,  37,  38,  39,  40,
+	 41,  42,  43,  44,  45,  46,  47,  48,
+	 49,  50,  51, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1,
+	- 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1};
+
+int base64_encode(unsigned char *dst, size_t dstsiz, const unsigned char *src, size_t srcsiz) {
+    unsigned long x = 0UL;
+    int i = 0, l = 0;
+    unsigned char *pdst;
+
+    pdst = dst;
+    for (; srcsiz > 0; src++, srcsiz--) {
+        x = x << 8 | *src;
+        for (l += 8; l >= 6; l -= 6) {
+            if (i >= dstsiz)
+              return -1;
+            pdst[i++] = base64_encode_chars[(x >> (l - 6)) & 0x3f];
+        }
+    }
+    if (l > 0) {
+        x <<= 6 - l;
+        if (i >= dstsiz)
+          return -1;
+        pdst[i++] = base64_encode_chars[x & 0x3f];
+    }
+    for (; i % 4;) {
+        if (i >= dstsiz)
+          return -1;
+        pdst[i++] = '=';
+    }
+    if (i >= dstsiz)
+      return -1;
+    pdst[i] = '\0';
+    return i;
+}
+
+int base64_decode(unsigned char *dst, size_t dstsiz, const unsigned char *src) {
+    union {
+        unsigned long x;
+        char c[4];
+    } base64;
+    unsigned char *pdst;
+    int i, j = 0, k = 0;
+    size_t srcsiz = strlen((const char *)src);
+
+    if ((srcsiz % 4) != 0) {
+        return -1;
+    }
+    base64.x = 0UL;
+    pdst = dst;
+    for (; srcsiz > 0; src+=4, srcsiz-=4) {
+        for (i = 0; i < 4; i++) {
+            if (base64_decode_chars[src[i]] == -1) {
+                return -1;
+            }
+            base64.x = base64.x << 6 | base64_decode_chars[src[i]];
+            j += (src[i] == '=');
+        }
+        for (i = 3; i > j; i--, k++) {
+            if (k >= dstsiz)
+              return -1;
+            *pdst++ = base64.c[i - 1];
+        }
+    }
+    if (k >= dstsiz)
+      return -1;
+    *pdst = '\0';
+    return 0;
+}
Index: uKadecot/trunk/uip/apps/webserver/base64.h
===================================================================
--- uKadecot/trunk/uip/apps/webserver/base64.h	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/base64.h	(revision 101)
@@ -0,0 +1,45 @@
+/**
+ * Copyright(c) 2010, Norio Kobota, All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice,
+ *   this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright notice,
+ *   this list of conditions and the following disclaimer in the documentation
+ *   and/or other materials provided with the distribution.
+ * - Neither the name of the 'incremental' nor the names of its contributors
+ *   may be used to endorse or promote products derived from this software
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef	_BASE64_H_
+#define	_BASE64_H_
+
+#include "stdio.h"
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+int base64_encode(unsigned char *, size_t , const unsigned char *, size_t);
+int base64_decode(unsigned char *, size_t , const unsigned char *);
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* _BASE64_H_ */
Index: uKadecot/trunk/uip/apps/webserver/http-strings
===================================================================
--- uKadecot/trunk/uip/apps/webserver/http-strings	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/http-strings	(revision 101)
@@ -0,0 +1,49 @@
+http_http "http://"
+http_200 "200 "
+http_301 "301 "
+http_302 "302 "
+http_get "GET "
+http_10 "HTTP/1.0"
+http_11 "HTTP/1.1"
+http_content_type "content-type: "
+http_texthtml "text/html"
+http_location "location: "
+http_host "host: "
+http_crnl "\r\n"
+http_index_html "/index.html"
+http_404_html "/404.html"
+http_websocket "WebSocket"
+http_referer "Referer: "
+http_upgrade "Upgrade: "
+http_connection "Connection: "
+http_sec_websocket_accept "Sec-WebSocket-Accept: "
+http_sec_websocket_protocol "Sec-WebSocket-Protocol: "
+http_header_101 "HTTP/1.1 101 Switching Protocols\r\n"
+http_header_200 "HTTP/1.1 200 OK\r\nServer: uIP/1.0 http://www.toppers.jp/\r\nConnection: close\r\n"
+http_header_404 "HTTP/1.1 404 Not found\r\nServer: uIP/1.0 http://www.toppers.jp/\r\nConnection: close\r\n"
+http_content_encoding_gzip "Content-Encoding: gzip\r\n"
+http_websocket_guid "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
+http_content_type_plain "Content-type: text/plain\r\n\r\n"
+http_content_type_html "Content-type: text/html\r\n\r\n"
+http_content_type_css "Content-type: text/css\r\n\r\n"
+http_content_type_js "Content-type: text/javascript\r\n\r\n"
+http_content_type_json "Content-type: application/json\r\n\r\n"
+http_content_type_text "Content-type: text/text\r\n\r\n"
+http_content_type_png "Content-type: image/png\r\n\r\n"
+http_content_type_gif "Content-type: image/gif\r\n\r\n"
+http_content_type_jpg "Content-type: image/jpeg\r\n\r\n"
+http_content_type_svg "Content-type: image/svg+xml\r\n\r\n"
+http_content_type_binary "Content-type: application/octet-stream\r\n\r\n"
+http_html ".html"
+http_shtml ".shtml"
+http_htm ".htm"
+http_css ".css"
+http_js  ".js"
+http_json ".json"
+http_png ".png"
+http_gif ".gif"
+http_jpg ".jpg"
+http_svg ".svg"
+http_text ".txt"
+http_txt ".txt"
+
Index: uKadecot/trunk/uip/apps/webserver/http-strings.c
===================================================================
--- uKadecot/trunk/uip/apps/webserver/http-strings.c	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/http-strings.c	(revision 101)
@@ -0,0 +1,144 @@
+const char http_http[8] = 
+/* "http://" */
+{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, };
+const char http_200[5] = 
+/* "200 " */
+{0x32, 0x30, 0x30, 0x20, };
+const char http_301[5] = 
+/* "301 " */
+{0x33, 0x30, 0x31, 0x20, };
+const char http_302[5] = 
+/* "302 " */
+{0x33, 0x30, 0x32, 0x20, };
+const char http_get[5] = 
+/* "GET " */
+{0x47, 0x45, 0x54, 0x20, };
+const char http_10[9] = 
+/* "HTTP/1.0" */
+{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, };
+const char http_11[9] = 
+/* "HTTP/1.1" */
+{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, };
+const char http_content_type[15] = 
+/* "content-type: " */
+{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, };
+const char http_texthtml[10] = 
+/* "text/html" */
+{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, };
+const char http_location[11] = 
+/* "location: " */
+{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, };
+const char http_host[7] = 
+/* "host: " */
+{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, };
+const char http_crnl[3] = 
+/* "\r\n" */
+{0xd, 0xa, };
+const char http_index_html[12] = 
+/* "/index.html" */
+{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, };
+const char http_404_html[10] = 
+/* "/404.html" */
+{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, };
+const char http_websocket[10] = 
+/* "WebSocket" */
+{0x57, 0x65, 0x62, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, };
+const char http_referer[10] = 
+/* "Referer: " */
+{0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x72, 0x3a, 0x20, };
+const char http_upgrade[10] = 
+/* "Upgrade: " */
+{0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x3a, 0x20, };
+const char http_connection[13] = 
+/* "Connection: " */
+{0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, };
+const char http_sec_websocket_accept[23] = 
+/* "Sec-WebSocket-Accept: " */
+{0x53, 0x65, 0x63, 0x2d, 0x57, 0x65, 0x62, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2d, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20, };
+const char http_sec_websocket_protocol[25] = 
+/* "Sec-WebSocket-Protocol: " */
+{0x53, 0x65, 0x63, 0x2d, 0x57, 0x65, 0x62, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x3a, 0x20, };
+const char http_header_101[35] = 
+/* "HTTP/1.1 101 Switching Protocols\r\n" */
+{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x20, 0x31, 0x30, 0x31, 0x20, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0xd, 0xa, };
+const char http_header_200[77] = 
+/* "HTTP/1.1 200 OK\r\nServer: uIP/1.0 http://www.toppers.jp/\r\nConnection: close\r\n" */
+{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x6a, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, };
+const char http_header_404[84] = 
+/* "HTTP/1.1 404 Not found\r\nServer: uIP/1.0 http://www.toppers.jp/\r\nConnection: close\r\n" */
+{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x6a, 0x70, 0x2f, 0xd, 0xa, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, };
+const char http_content_encoding_gzip[25] = 
+/* "Content-Encoding: gzip\r\n" */
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x20, 0x67, 0x7a, 0x69, 0x70, 0xd, 0xa, };
+const char http_websocket_guid[37] = 
+/* "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" */
+{0x32, 0x35, 0x38, 0x45, 0x41, 0x46, 0x41, 0x35, 0x2d, 0x45, 0x39, 0x31, 0x34, 0x2d, 0x34, 0x37, 0x44, 0x41, 0x2d, 0x39, 0x35, 0x43, 0x41, 0x2d, 0x43, 0x35, 0x41, 0x42, 0x30, 0x44, 0x43, 0x38, 0x35, 0x42, 0x31, 0x31, };
+const char http_content_type_plain[29] = 
+/* "Content-type: text/plain\r\n\r\n" */
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xd, 0xa, 0xd, 0xa, };
+const char http_content_type_html[28] = 
+/* "Content-type: text/html\r\n\r\n" */
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, };
+const char http_content_type_css[27] = 
+/* "Content-type: text/css\r\n\r\n" */
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd, 0xa, 0xd, 0xa, };
+const char http_content_type_js[34] = 
+/* "Content-type: text/javascript\r\n\r\n" */
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0xd, 0xa, 0xd, 0xa, };
+const char http_content_type_json[35] = 
+/* "Content-type: application/json\r\n\r\n" */
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0xd, 0xa, 0xd, 0xa, };
+const char http_content_type_text[28] = 
+/* "Content-type: text/text\r\n\r\n" */
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x74, 0x65, 0x78, 0x74, 0xd, 0xa, 0xd, 0xa, };
+const char http_content_type_png[28] = 
+/* "Content-type: image/png\r\n\r\n" */
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 0xd, 0xa, 0xd, 0xa, };
+const char http_content_type_gif[28] = 
+/* "Content-type: image/gif\r\n\r\n" */
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0xd, 0xa, 0xd, 0xa, };
+const char http_content_type_jpg[29] = 
+/* "Content-type: image/jpeg\r\n\r\n" */
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, 0x65, 0x67, 0xd, 0xa, 0xd, 0xa, };
+const char http_content_type_svg[32] = 
+/* "Content-type: image/svg+xml\r\n\r\n" */
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x73, 0x76, 0x67, 0x2b, 0x78, 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, };
+const char http_content_type_binary[43] = 
+/* "Content-type: application/octet-stream\r\n\r\n" */
+{0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0xd, 0xa, 0xd, 0xa, };
+const char http_html[6] = 
+/* ".html" */
+{0x2e, 0x68, 0x74, 0x6d, 0x6c, };
+const char http_shtml[7] = 
+/* ".shtml" */
+{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, };
+const char http_htm[5] = 
+/* ".htm" */
+{0x2e, 0x68, 0x74, 0x6d, };
+const char http_css[5] = 
+/* ".css" */
+{0x2e, 0x63, 0x73, 0x73, };
+const char http_js [4] = 
+/* ".js" */
+{0x2e, 0x6a, 0x73, };
+const char http_json[6] = 
+/* ".json" */
+{0x2e, 0x6a, 0x73, 0x6f, 0x6e, };
+const char http_png[5] = 
+/* ".png" */
+{0x2e, 0x70, 0x6e, 0x67, };
+const char http_gif[5] = 
+/* ".gif" */
+{0x2e, 0x67, 0x69, 0x66, };
+const char http_jpg[5] = 
+/* ".jpg" */
+{0x2e, 0x6a, 0x70, 0x67, };
+const char http_svg[5] = 
+/* ".svg" */
+{0x2e, 0x73, 0x76, 0x67, };
+const char http_text[5] = 
+/* ".txt" */
+{0x2e, 0x74, 0x78, 0x74, };
+const char http_txt[5] = 
+/* ".txt" */
+{0x2e, 0x74, 0x78, 0x74, };
Index: uKadecot/trunk/uip/apps/webserver/http-strings.h
===================================================================
--- uKadecot/trunk/uip/apps/webserver/http-strings.h	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/http-strings.h	(revision 101)
@@ -0,0 +1,48 @@
+extern const char http_http[8];
+extern const char http_200[5];
+extern const char http_301[5];
+extern const char http_302[5];
+extern const char http_get[5];
+extern const char http_10[9];
+extern const char http_11[9];
+extern const char http_content_type[15];
+extern const char http_texthtml[10];
+extern const char http_location[11];
+extern const char http_host[7];
+extern const char http_crnl[3];
+extern const char http_index_html[12];
+extern const char http_404_html[10];
+extern const char http_websocket[10];
+extern const char http_referer[10];
+extern const char http_upgrade[10];
+extern const char http_connection[13];
+extern const char http_sec_websocket_accept[23];
+extern const char http_sec_websocket_protocol[25];
+extern const char http_header_101[35];
+extern const char http_header_200[77];
+extern const char http_header_404[84];
+extern const char http_content_encoding_gzip[25];
+extern const char http_websocket_guid[37];
+extern const char http_content_type_plain[29];
+extern const char http_content_type_html[28];
+extern const char http_content_type_css[27];
+extern const char http_content_type_js[34];
+extern const char http_content_type_json[35];
+extern const char http_content_type_text[28];
+extern const char http_content_type_png[28];
+extern const char http_content_type_gif[28];
+extern const char http_content_type_jpg[29];
+extern const char http_content_type_svg[32];
+extern const char http_content_type_binary[43];
+extern const char http_html[6];
+extern const char http_shtml[7];
+extern const char http_htm[5];
+extern const char http_css[5];
+extern const char http_js [4];
+extern const char http_json[6];
+extern const char http_png[5];
+extern const char http_gif[5];
+extern const char http_jpg[5];
+extern const char http_svg[5];
+extern const char http_text[5];
+extern const char http_txt[5];
Index: uKadecot/trunk/uip/apps/webserver/http_parser.c
===================================================================
--- uKadecot/trunk/uip/apps/webserver/http_parser.c	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/http_parser.c	(revision 101)
@@ -0,0 +1,2410 @@
+/* Based on src/http/ngx_http_parse.c from NGINX copyright Igor Sysoev
+ *
+ * Additional changes are licensed under the same terms as NGINX and
+ * copyright Joyent, Inc. and other Node contributors. All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+#include "http_parser.h"
+//#include <assert.h>
+#include <stddef.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#include <limits.h>
+
+#ifndef ULLONG_MAX
+# define ULLONG_MAX ((uint64_t) -1) /* 2^64-1 */
+#endif
+
+#ifndef MIN
+# define MIN(a,b) ((a) < (b) ? (a) : (b))
+#endif
+
+#ifndef ARRAY_SIZE
+# define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
+#endif
+
+#ifndef BIT_AT
+# define BIT_AT(a, i)                                                \
+  (!!((unsigned int) (a)[(unsigned int) (i) >> 3] &                  \
+   (1 << ((unsigned int) (i) & 7))))
+#endif
+
+#ifndef ELEM_AT
+# define ELEM_AT(a, i, v) ((unsigned int) (i) < ARRAY_SIZE(a) ? (a)[(i)] : (v))
+#endif
+
+#define SET_ERRNO(e)                                                 \
+do {                                                                 \
+  parser->http_errno = (e);                                          \
+} while(0)
+
+#define CURRENT_STATE() p_state
+#define UPDATE_STATE(V) p_state = (enum state) (V);
+#define RETURN(V)                                                    \
+do {                                                                 \
+  parser->state = CURRENT_STATE();                                   \
+  return (V);                                                        \
+} while (0);
+#define REEXECUTE()                                                  \
+  --p;                                                               \
+  break;
+
+
+#ifdef __GNUC__
+# define LIKELY(X) __builtin_expect(!!(X), 1)
+# define UNLIKELY(X) __builtin_expect(!!(X), 0)
+#else
+# define LIKELY(X) (X)
+# define UNLIKELY(X) (X)
+#endif
+
+
+/* Run the notify callback FOR, returning ER if it fails */
+#define CALLBACK_NOTIFY_(FOR, ER)                                    \
+do {                                                                 \
+  assert(HTTP_PARSER_ERRNO(parser) == HPE_OK);                       \
+                                                                     \
+  if (LIKELY(settings->on_##FOR)) {                                  \
+    parser->state = CURRENT_STATE();                                 \
+    if (UNLIKELY(0 != settings->on_##FOR(parser))) {                 \
+      SET_ERRNO(HPE_CB_##FOR);                                       \
+    }                                                                \
+    UPDATE_STATE(parser->state);                                     \
+                                                                     \
+    /* We either errored above or got paused; get out */             \
+    if (UNLIKELY(HTTP_PARSER_ERRNO(parser) != HPE_OK)) {             \
+      return (ER);                                                   \
+    }                                                                \
+  }                                                                  \
+} while (0)
+
+/* Run the notify callback FOR and consume the current byte */
+#define CALLBACK_NOTIFY(FOR)            CALLBACK_NOTIFY_(FOR, p - data + 1)
+
+/* Run the notify callback FOR and don't consume the current byte */
+#define CALLBACK_NOTIFY_NOADVANCE(FOR)  CALLBACK_NOTIFY_(FOR, p - data)
+
+/* Run data callback FOR with LEN bytes, returning ER if it fails */
+#define CALLBACK_DATA_(FOR, LEN, ER)                                 \
+do {                                                                 \
+  assert(HTTP_PARSER_ERRNO(parser) == HPE_OK);                       \
+                                                                     \
+  if (FOR##_mark) {                                                  \
+    if (LIKELY(settings->on_##FOR)) {                                \
+      parser->state = CURRENT_STATE();                               \
+      if (UNLIKELY(0 !=                                              \
+                   settings->on_##FOR(parser, FOR##_mark, (LEN)))) { \
+        SET_ERRNO(HPE_CB_##FOR);                                     \
+      }                                                              \
+      UPDATE_STATE(parser->state);                                   \
+                                                                     \
+      /* We either errored above or got paused; get out */           \
+      if (UNLIKELY(HTTP_PARSER_ERRNO(parser) != HPE_OK)) {           \
+        return (ER);                                                 \
+      }                                                              \
+    }                                                                \
+    FOR##_mark = NULL;                                               \
+  }                                                                  \
+} while (0)
+  
+/* Run the data callback FOR and consume the current byte */
+#define CALLBACK_DATA(FOR)                                           \
+    CALLBACK_DATA_(FOR, p - FOR##_mark, p - data + 1)
+
+/* Run the data callback FOR and don't consume the current byte */
+#define CALLBACK_DATA_NOADVANCE(FOR)                                 \
+    CALLBACK_DATA_(FOR, p - FOR##_mark, p - data)
+
+/* Set the mark FOR; non-destructive if mark is already set */
+#define MARK(FOR)                                                    \
+do {                                                                 \
+  if (!FOR##_mark) {                                                 \
+    FOR##_mark = p;                                                  \
+  }                                                                  \
+} while (0)
+
+/* Don't allow the total size of the HTTP headers (including the status
+ * line) to exceed HTTP_MAX_HEADER_SIZE.  This check is here to protect
+ * embedders against denial-of-service attacks where the attacker feeds
+ * us a never-ending header that the embedder keeps buffering.
+ *
+ * This check is arguably the responsibility of embedders but we're doing
+ * it on the embedder's behalf because most won't bother and this way we
+ * make the web a little safer.  HTTP_MAX_HEADER_SIZE is still far bigger
+ * than any reasonable request or response so this should never affect
+ * day-to-day operation.
+ */
+#define COUNT_HEADER_SIZE(V)                                         \
+do {                                                                 \
+  parser->nread += (V);                                              \
+  if (UNLIKELY(parser->nread > (HTTP_MAX_HEADER_SIZE))) {            \
+    SET_ERRNO(HPE_HEADER_OVERFLOW);                                  \
+    goto error;                                                      \
+  }                                                                  \
+} while (0)
+
+
+#define PROXY_CONNECTION "proxy-connection"
+#define CONNECTION "connection"
+#define CONTENT_LENGTH "content-length"
+#define TRANSFER_ENCODING "transfer-encoding"
+#define UPGRADE "upgrade"
+#define CHUNKED "chunked"
+#define KEEP_ALIVE "keep-alive"
+#define CLOSE "close"
+
+
+static const char *method_strings[] =
+  {
+#define XX(num, name, string) #string,
+  HTTP_METHOD_MAP(XX)
+#undef XX
+  };
+
+
+/* Tokens as defined by rfc 2616. Also lowercases them.
+ *        token       = 1*<any CHAR except CTLs or separators>
+ *     separators     = "(" | ")" | "<" | ">" | "@"
+ *                    | "," | ";" | ":" | "\" | <">
+ *                    | "/" | "[" | "]" | "?" | "="
+ *                    | "{" | "}" | SP | HT
+ */
+static const char tokens[256] = {
+/*   0 nul    1 soh    2 stx    3 etx    4 eot    5 enq    6 ack    7 bel  */
+        0,       0,       0,       0,       0,       0,       0,       0,
+/*   8 bs     9 ht    10 nl    11 vt    12 np    13 cr    14 so    15 si   */
+        0,       0,       0,       0,       0,       0,       0,       0,
+/*  16 dle   17 dc1   18 dc2   19 dc3   20 dc4   21 nak   22 syn   23 etb */
+        0,       0,       0,       0,       0,       0,       0,       0,
+/*  24 can   25 em    26 sub   27 esc   28 fs    29 gs    30 rs    31 us  */
+        0,       0,       0,       0,       0,       0,       0,       0,
+/*  32 sp    33  !    34  "    35  #    36  $    37  %    38  &    39  '  */
+        0,      '!',      0,      '#',     '$',     '%',     '&',    '\'',
+/*  40  (    41  )    42  *    43  +    44  ,    45  -    46  .    47  /  */
+        0,       0,      '*',     '+',      0,      '-',     '.',      0,
+/*  48  0    49  1    50  2    51  3    52  4    53  5    54  6    55  7  */
+       '0',     '1',     '2',     '3',     '4',     '5',     '6',     '7',
+/*  56  8    57  9    58  :    59  ;    60  <    61  =    62  >    63  ?  */
+       '8',     '9',      0,       0,       0,       0,       0,       0,
+/*  64  @    65  A    66  B    67  C    68  D    69  E    70  F    71  G  */
+        0,      'a',     'b',     'c',     'd',     'e',     'f',     'g',
+/*  72  H    73  I    74  J    75  K    76  L    77  M    78  N    79  O  */
+       'h',     'i',     'j',     'k',     'l',     'm',     'n',     'o',
+/*  80  P    81  Q    82  R    83  S    84  T    85  U    86  V    87  W  */
+       'p',     'q',     'r',     's',     't',     'u',     'v',     'w',
+/*  88  X    89  Y    90  Z    91  [    92  \    93  ]    94  ^    95  _  */
+       'x',     'y',     'z',      0,       0,       0,      '^',     '_',
+/*  96  `    97  a    98  b    99  c   100  d   101  e   102  f   103  g  */
+       '`',     'a',     'b',     'c',     'd',     'e',     'f',     'g',
+/* 104  h   105  i   106  j   107  k   108  l   109  m   110  n   111  o  */
+       'h',     'i',     'j',     'k',     'l',     'm',     'n',     'o',
+/* 112  p   113  q   114  r   115  s   116  t   117  u   118  v   119  w  */
+       'p',     'q',     'r',     's',     't',     'u',     'v',     'w',
+/* 120  x   121  y   122  z   123  {   124  |   125  }   126  ~   127 del */
+       'x',     'y',     'z',      0,      '|',      0,      '~',       0 };
+
+
+static const int8_t unhex[256] =
+  {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
+  ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
+  ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
+  , 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1
+  ,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1
+  ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
+  ,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1
+  ,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
+  };
+
+
+#if HTTP_PARSER_STRICT
+# define T(v) 0
+#else
+# define T(v) v
+#endif
+
+
+static const uint8_t normal_url_char[32] = {
+/*   0 nul    1 soh    2 stx    3 etx    4 eot    5 enq    6 ack    7 bel  */
+        0    |   0    |   0    |   0    |   0    |   0    |   0    |   0,
+/*   8 bs     9 ht    10 nl    11 vt    12 np    13 cr    14 so    15 si   */
+        0    | T(2)   |   0    |   0    | T(16)  |   0    |   0    |   0,
+/*  16 dle   17 dc1   18 dc2   19 dc3   20 dc4   21 nak   22 syn   23 etb */
+        0    |   0    |   0    |   0    |   0    |   0    |   0    |   0,
+/*  24 can   25 em    26 sub   27 esc   28 fs    29 gs    30 rs    31 us  */
+        0    |   0    |   0    |   0    |   0    |   0    |   0    |   0,
+/*  32 sp    33  !    34  "    35  #    36  $    37  %    38  &    39  '  */
+        0    |   2    |   4    |   0    |   16   |   32   |   64   |  128,
+/*  40  (    41  )    42  *    43  +    44  ,    45  -    46  .    47  /  */
+        1    |   2    |   4    |   8    |   16   |   32   |   64   |  128,
+/*  48  0    49  1    50  2    51  3    52  4    53  5    54  6    55  7  */
+        1    |   2    |   4    |   8    |   16   |   32   |   64   |  128,
+/*  56  8    57  9    58  :    59  ;    60  <    61  =    62  >    63  ?  */
+        1    |   2    |   4    |   8    |   16   |   32   |   64   |   0,
+/*  64  @    65  A    66  B    67  C    68  D    69  E    70  F    71  G  */
+        1    |   2    |   4    |   8    |   16   |   32   |   64   |  128,
+/*  72  H    73  I    74  J    75  K    76  L    77  M    78  N    79  O  */
+        1    |   2    |   4    |   8    |   16   |   32   |   64   |  128,
+/*  80  P    81  Q    82  R    83  S    84  T    85  U    86  V    87  W  */
+        1    |   2    |   4    |   8    |   16   |   32   |   64   |  128,
+/*  88  X    89  Y    90  Z    91  [    92  \    93  ]    94  ^    95  _  */
+        1    |   2    |   4    |   8    |   16   |   32   |   64   |  128,
+/*  96  `    97  a    98  b    99  c   100  d   101  e   102  f   103  g  */
+        1    |   2    |   4    |   8    |   16   |   32   |   64   |  128,
+/* 104  h   105  i   106  j   107  k   108  l   109  m   110  n   111  o  */
+        1    |   2    |   4    |   8    |   16   |   32   |   64   |  128,
+/* 112  p   113  q   114  r   115  s   116  t   117  u   118  v   119  w  */
+        1    |   2    |   4    |   8    |   16   |   32   |   64   |  128,
+/* 120  x   121  y   122  z   123  {   124  |   125  }   126  ~   127 del */
+        1    |   2    |   4    |   8    |   16   |   32   |   64   |   0, };
+
+#undef T
+
+enum state
+  { s_dead = 1 /* important that this is > 0 */
+
+  , s_start_req_or_res
+  , s_res_or_resp_H
+  , s_start_res
+  , s_res_H
+  , s_res_HT
+  , s_res_HTT
+  , s_res_HTTP
+  , s_res_first_http_major
+  , s_res_http_major
+  , s_res_first_http_minor
+  , s_res_http_minor
+  , s_res_first_status_code
+  , s_res_status_code
+  , s_res_status_start
+  , s_res_status
+  , s_res_line_almost_done
+
+  , s_start_req
+
+  , s_req_method
+  , s_req_spaces_before_url
+  , s_req_schema
+  , s_req_schema_slash
+  , s_req_schema_slash_slash
+  , s_req_server_start
+  , s_req_server
+  , s_req_server_with_at
+  , s_req_path
+  , s_req_query_string_start
+  , s_req_query_string
+  , s_req_fragment_start
+  , s_req_fragment
+  , s_req_http_start
+  , s_req_http_H
+  , s_req_http_HT
+  , s_req_http_HTT
+  , s_req_http_HTTP
+  , s_req_first_http_major
+  , s_req_http_major
+  , s_req_first_http_minor
+  , s_req_http_minor
+  , s_req_line_almost_done
+
+  , s_header_field_start
+  , s_header_field
+  , s_header_value_discard_ws
+  , s_header_value_discard_ws_almost_done
+  , s_header_value_discard_lws
+  , s_header_value_start
+  , s_header_value
+  , s_header_value_lws
+
+  , s_header_almost_done
+
+  , s_chunk_size_start
+  , s_chunk_size
+  , s_chunk_parameters
+  , s_chunk_size_almost_done
+
+  , s_headers_almost_done
+  , s_headers_done
+
+  /* Important: 's_headers_done' must be the last 'header' state. All
+   * states beyond this must be 'body' states. It is used for overflow
+   * checking. See the PARSING_HEADER() macro.
+   */
+
+  , s_chunk_data
+  , s_chunk_data_almost_done
+  , s_chunk_data_done
+
+  , s_body_identity
+  , s_body_identity_eof
+
+  , s_message_done
+  };
+
+
+#define PARSING_HEADER(state) (state <= s_headers_done)
+
+
+enum header_states
+  { h_general = 0
+  , h_C
+  , h_CO
+  , h_CON
+
+  , h_matching_connection
+  , h_matching_proxy_connection
+  , h_matching_content_length
+  , h_matching_transfer_encoding
+  , h_matching_upgrade
+
+  , h_connection
+  , h_content_length
+  , h_transfer_encoding
+  , h_upgrade
+
+  , h_matching_transfer_encoding_chunked
+  , h_matching_connection_token_start
+  , h_matching_connection_keep_alive
+  , h_matching_connection_close
+  , h_matching_connection_upgrade
+  , h_matching_connection_token
+
+  , h_transfer_encoding_chunked
+  , h_connection_keep_alive
+  , h_connection_close
+  , h_connection_upgrade
+  };
+
+enum http_host_state
+  {
+    s_http_host_dead = 1
+  , s_http_userinfo_start
+  , s_http_userinfo
+  , s_http_host_start
+  , s_http_host_v6_start
+  , s_http_host
+  , s_http_host_v6
+  , s_http_host_v6_end
+  , s_http_host_port_start
+  , s_http_host_port
+};
+
+/* Macros for character classes; depends on strict-mode  */
+#define CR                  '\r'
+#define LF                  '\n'
+#define LOWER(c)            (unsigned char)(c | 0x20)
+#define IS_ALPHA(c)         (LOWER(c) >= 'a' && LOWER(c) <= 'z')
+#define IS_NUM(c)           ((c) >= '0' && (c) <= '9')
+#define IS_ALPHANUM(c)      (IS_ALPHA(c) || IS_NUM(c))
+#define IS_HEX(c)           (IS_NUM(c) || (LOWER(c) >= 'a' && LOWER(c) <= 'f'))
+#define IS_MARK(c)          ((c) == '-' || (c) == '_' || (c) == '.' || \
+  (c) == '!' || (c) == '~' || (c) == '*' || (c) == '\'' || (c) == '(' || \
+  (c) == ')')
+#define IS_USERINFO_CHAR(c) (IS_ALPHANUM(c) || IS_MARK(c) || (c) == '%' || \
+  (c) == ';' || (c) == ':' || (c) == '&' || (c) == '=' || (c) == '+' || \
+  (c) == '$' || (c) == ',')
+
+#define STRICT_TOKEN(c)     (tokens[(unsigned char)c])
+
+#if HTTP_PARSER_STRICT
+#define TOKEN(c)            (tokens[(unsigned char)c])
+#define IS_URL_CHAR(c)      (BIT_AT(normal_url_char, (unsigned char)c))
+#define IS_HOST_CHAR(c)     (IS_ALPHANUM(c) || (c) == '.' || (c) == '-')
+#else
+#define TOKEN(c)            ((c == ' ') ? ' ' : tokens[(unsigned char)c])
+#define IS_URL_CHAR(c)                                                         \
+  (BIT_AT(normal_url_char, (unsigned char)c) || ((c) & 0x80))
+#define IS_HOST_CHAR(c)                                                        \
+  (IS_ALPHANUM(c) || (c) == '.' || (c) == '-' || (c) == '_')
+#endif
+
+
+#define start_state (parser->type == HTTP_REQUEST ? s_start_req : s_start_res)
+
+
+#if HTTP_PARSER_STRICT
+# define STRICT_CHECK(cond)                                          \
+do {                                                                 \
+  if (cond) {                                                        \
+    SET_ERRNO(HPE_STRICT);                                           \
+    goto error;                                                      \
+  }                                                                  \
+} while (0)
+# define NEW_MESSAGE() (http_should_keep_alive(parser) ? start_state : s_dead)
+#else
+# define STRICT_CHECK(cond)
+# define NEW_MESSAGE() start_state
+#endif
+
+
+/* Map errno values to strings for human-readable output */
+#define HTTP_STRERROR_GEN(n, s) { "HPE_" #n, s },
+static struct {
+  const char *name;
+  const char *description;
+} http_strerror_tab[] = {
+  HTTP_ERRNO_MAP(HTTP_STRERROR_GEN)
+};
+#undef HTTP_STRERROR_GEN
+
+int http_message_needs_eof(const http_parser *parser);
+
+/* Our URL parser.
+ *
+ * This is designed to be shared by http_parser_execute() for URL validation,
+ * hence it has a state transition + byte-for-byte interface. In addition, it
+ * is meant to be embedded in http_parser_parse_url(), which does the dirty
+ * work of turning state transitions URL components for its API.
+ *
+ * This function should only be invoked with non-space characters. It is
+ * assumed that the caller cares about (and can detect) the transition between
+ * URL and non-URL states by looking for these.
+ */
+static enum state
+parse_url_char(enum state s, const char ch)
+{
+  if (ch == ' ' || ch == '\r' || ch == '\n') {
+    return s_dead;
+  }
+
+#if HTTP_PARSER_STRICT
+  if (ch == '\t' || ch == '\f') {
+    return s_dead;
+  }
+#endif
+
+  switch (s) {
+    case s_req_spaces_before_url:
+      /* Proxied requests are followed by scheme of an absolute URI (alpha).
+       * All methods except CONNECT are followed by '/' or '*'.
+       */
+
+      if (ch == '/' || ch == '*') {
+        return s_req_path;
+      }
+
+      if (IS_ALPHA(ch)) {
+        return s_req_schema;
+      }
+
+      break;
+
+    case s_req_schema:
+      if (IS_ALPHA(ch)) {
+        return s;
+      }
+
+      if (ch == ':') {
+        return s_req_schema_slash;
+      }
+
+      break;
+
+    case s_req_schema_slash:
+      if (ch == '/') {
+        return s_req_schema_slash_slash;
+      }
+
+      break;
+
+    case s_req_schema_slash_slash:
+      if (ch == '/') {
+        return s_req_server_start;
+      }
+
+      break;
+
+    case s_req_server_with_at:
+      if (ch == '@') {
+        return s_dead;
+      }
+
+    /* FALLTHROUGH */
+    case s_req_server_start:
+    case s_req_server:
+      if (ch == '/') {
+        return s_req_path;
+      }
+
+      if (ch == '?') {
+        return s_req_query_string_start;
+      }
+
+      if (ch == '@') {
+        return s_req_server_with_at;
+      }
+
+      if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') {
+        return s_req_server;
+      }
+
+      break;
+
+    case s_req_path:
+      if (IS_URL_CHAR(ch)) {
+        return s;
+      }
+
+      switch (ch) {
+        case '?':
+          return s_req_query_string_start;
+
+        case '#':
+          return s_req_fragment_start;
+      }
+
+      break;
+
+    case s_req_query_string_start:
+    case s_req_query_string:
+      if (IS_URL_CHAR(ch)) {
+        return s_req_query_string;
+      }
+
+      switch (ch) {
+        case '?':
+          /* allow extra '?' in query string */
+          return s_req_query_string;
+
+        case '#':
+          return s_req_fragment_start;
+      }
+
+      break;
+
+    case s_req_fragment_start:
+      if (IS_URL_CHAR(ch)) {
+        return s_req_fragment;
+      }
+
+      switch (ch) {
+        case '?':
+          return s_req_fragment;
+
+        case '#':
+          return s;
+      }
+
+      break;
+
+    case s_req_fragment:
+      if (IS_URL_CHAR(ch)) {
+        return s;
+      }
+
+      switch (ch) {
+        case '?':
+        case '#':
+          return s;
+      }
+
+      break;
+
+    default:
+      break;
+  }
+
+  /* We should never fall out of the switch above unless there's an error */
+  return s_dead;
+}
+
+size_t http_parser_execute (http_parser *parser,
+                            const http_parser_settings *settings,
+                            const char *data,
+                            size_t len)
+{
+  char c, ch;
+  int8_t unhex_val;
+  const char *p = data;
+  const char *header_field_mark = 0;
+  const char *header_value_mark = 0;
+  const char *url_mark = 0;
+  const char *body_mark = 0;
+  const char *status_mark = 0;
+  enum state p_state = (enum state) parser->state;
+
+  /* We're in an error state. Don't bother doing anything. */
+  if (HTTP_PARSER_ERRNO(parser) != HPE_OK) {
+    return 0;
+  }
+
+  if (len == 0) {
+    switch (CURRENT_STATE()) {
+      case s_body_identity_eof:
+        /* Use of CALLBACK_NOTIFY() here would erroneously return 1 byte read if
+         * we got paused.
+         */
+        CALLBACK_NOTIFY_NOADVANCE(message_complete);
+        return 0;
+
+      case s_dead:
+      case s_start_req_or_res:
+      case s_start_res:
+      case s_start_req:
+        return 0;
+
+      default:
+        SET_ERRNO(HPE_INVALID_EOF_STATE);
+        return 1;
+    }
+  }
+
+
+  if (CURRENT_STATE() == s_header_field)
+    header_field_mark = data;
+  if (CURRENT_STATE() == s_header_value)
+    header_value_mark = data;
+  switch (CURRENT_STATE()) {
+  case s_req_path:
+  case s_req_schema:
+  case s_req_schema_slash:
+  case s_req_schema_slash_slash:
+  case s_req_server_start:
+  case s_req_server:
+  case s_req_server_with_at:
+  case s_req_query_string_start:
+  case s_req_query_string:
+  case s_req_fragment_start:
+  case s_req_fragment:
+    url_mark = data;
+    break;
+  case s_res_status:
+    status_mark = data;
+    break;
+  default:
+    break;
+  }
+
+  for (p=data; p != data + len; p++) {
+    ch = *p;
+
+    if (PARSING_HEADER(CURRENT_STATE()))
+      COUNT_HEADER_SIZE(1);
+
+    switch (CURRENT_STATE()) {
+
+      case s_dead:
+        /* this state is used after a 'Connection: close' message
+         * the parser will error out if it reads another message
+         */
+        if (LIKELY(ch == CR || ch == LF))
+          break;
+
+        SET_ERRNO(HPE_CLOSED_CONNECTION);
+        goto error;
+
+      case s_start_req_or_res:
+      {
+        if (ch == CR || ch == LF)
+          break;
+        parser->flags = 0;
+        parser->content_length = ULLONG_MAX;
+
+        if (ch == 'H') {
+          UPDATE_STATE(s_res_or_resp_H);
+
+          CALLBACK_NOTIFY(message_begin);
+        } else {
+          parser->type = HTTP_REQUEST;
+          UPDATE_STATE(s_start_req);
+          REEXECUTE();
+        }
+
+        break;
+      }
+
+      case s_res_or_resp_H:
+        if (ch == 'T') {
+          parser->type = HTTP_RESPONSE;
+          UPDATE_STATE(s_res_HT);
+        } else {
+          if (UNLIKELY(ch != 'E')) {
+            SET_ERRNO(HPE_INVALID_CONSTANT);
+            goto error;
+          }
+
+          parser->type = HTTP_REQUEST;
+          parser->method = HTTP_HEAD;
+          parser->index = 2;
+          UPDATE_STATE(s_req_method);
+        }
+        break;
+
+      case s_start_res:
+      {
+        parser->flags = 0;
+        parser->content_length = ULLONG_MAX;
+
+        switch (ch) {
+          case 'H':
+            UPDATE_STATE(s_res_H);
+            break;
+
+          case CR:
+          case LF:
+            break;
+
+          default:
+            SET_ERRNO(HPE_INVALID_CONSTANT);
+            goto error;
+        }
+
+        CALLBACK_NOTIFY(message_begin);
+        break;
+      }
+
+      case s_res_H:
+        STRICT_CHECK(ch != 'T');
+        UPDATE_STATE(s_res_HT);
+        break;
+
+      case s_res_HT:
+        STRICT_CHECK(ch != 'T');
+        UPDATE_STATE(s_res_HTT);
+        break;
+
+      case s_res_HTT:
+        STRICT_CHECK(ch != 'P');
+        UPDATE_STATE(s_res_HTTP);
+        break;
+
+      case s_res_HTTP:
+        STRICT_CHECK(ch != '/');
+        UPDATE_STATE(s_res_first_http_major);
+        break;
+
+      case s_res_first_http_major:
+        if (UNLIKELY(ch < '0' || ch > '9')) {
+          SET_ERRNO(HPE_INVALID_VERSION);
+          goto error;
+        }
+
+        parser->http_major = ch - '0';
+        UPDATE_STATE(s_res_http_major);
+        break;
+
+      /* major HTTP version or dot */
+      case s_res_http_major:
+      {
+        if (ch == '.') {
+          UPDATE_STATE(s_res_first_http_minor);
+          break;
+        }
+
+        if (!IS_NUM(ch)) {
+          SET_ERRNO(HPE_INVALID_VERSION);
+          goto error;
+        }
+
+        parser->http_major *= 10;
+        parser->http_major += ch - '0';
+
+        if (UNLIKELY(parser->http_major > 999)) {
+          SET_ERRNO(HPE_INVALID_VERSION);
+          goto error;
+        }
+
+        break;
+      }
+
+      /* first digit of minor HTTP version */
+      case s_res_first_http_minor:
+        if (UNLIKELY(!IS_NUM(ch))) {
+          SET_ERRNO(HPE_INVALID_VERSION);
+          goto error;
+        }
+
+        parser->http_minor = ch - '0';
+        UPDATE_STATE(s_res_http_minor);
+        break;
+
+      /* minor HTTP version or end of request line */
+      case s_res_http_minor:
+      {
+        if (ch == ' ') {
+          UPDATE_STATE(s_res_first_status_code);
+          break;
+        }
+
+        if (UNLIKELY(!IS_NUM(ch))) {
+          SET_ERRNO(HPE_INVALID_VERSION);
+          goto error;
+        }
+
+        parser->http_minor *= 10;
+        parser->http_minor += ch - '0';
+
+        if (UNLIKELY(parser->http_minor > 999)) {
+          SET_ERRNO(HPE_INVALID_VERSION);
+          goto error;
+        }
+
+        break;
+      }
+
+      case s_res_first_status_code:
+      {
+        if (!IS_NUM(ch)) {
+          if (ch == ' ') {
+            break;
+          }
+
+          SET_ERRNO(HPE_INVALID_STATUS);
+          goto error;
+        }
+        parser->status_code = ch - '0';
+        UPDATE_STATE(s_res_status_code);
+        break;
+      }
+
+      case s_res_status_code:
+      {
+        if (!IS_NUM(ch)) {
+          switch (ch) {
+            case ' ':
+              UPDATE_STATE(s_res_status_start);
+              break;
+            case CR:
+              UPDATE_STATE(s_res_line_almost_done);
+              break;
+            case LF:
+              UPDATE_STATE(s_header_field_start);
+              break;
+            default:
+              SET_ERRNO(HPE_INVALID_STATUS);
+              goto error;
+          }
+          break;
+        }
+
+        parser->status_code *= 10;
+        parser->status_code += ch - '0';
+
+        if (UNLIKELY(parser->status_code > 999)) {
+          SET_ERRNO(HPE_INVALID_STATUS);
+          goto error;
+        }
+
+        break;
+      }
+
+      case s_res_status_start:
+      {
+        if (ch == CR) {
+          UPDATE_STATE(s_res_line_almost_done);
+          break;
+        }
+
+        if (ch == LF) {
+          UPDATE_STATE(s_header_field_start);
+          break;
+        }
+
+        MARK(status);
+        UPDATE_STATE(s_res_status);
+        parser->index = 0;
+        break;
+      }
+
+      case s_res_status:
+        if (ch == CR) {
+          UPDATE_STATE(s_res_line_almost_done);
+          CALLBACK_DATA(status);
+          break;
+        }
+
+        if (ch == LF) {
+          UPDATE_STATE(s_header_field_start);
+          CALLBACK_DATA(status);
+          break;
+        }
+
+        break;
+
+      case s_res_line_almost_done:
+        STRICT_CHECK(ch != LF);
+        UPDATE_STATE(s_header_field_start);
+        break;
+
+      case s_start_req:
+      {
+        if (ch == CR || ch == LF)
+          break;
+        parser->flags = 0;
+        parser->content_length = ULLONG_MAX;
+
+        if (UNLIKELY(!IS_ALPHA(ch))) {
+          SET_ERRNO(HPE_INVALID_METHOD);
+          goto error;
+        }
+
+        parser->method = (enum http_method) 0;
+        parser->index = 1;
+        switch (ch) {
+          case 'C': parser->method = HTTP_CONNECT; /* or COPY, CHECKOUT */ break;
+          case 'D': parser->method = HTTP_DELETE; break;
+          case 'G': parser->method = HTTP_GET; break;
+          case 'H': parser->method = HTTP_HEAD; break;
+          case 'L': parser->method = HTTP_LOCK; break;
+          case 'M': parser->method = HTTP_MKCOL; /* or MOVE, MKACTIVITY, MERGE, M-SEARCH, MKCALENDAR */ break;
+          case 'N': parser->method = HTTP_NOTIFY; break;
+          case 'O': parser->method = HTTP_OPTIONS; break;
+          case 'P': parser->method = HTTP_POST;
+            /* or PROPFIND|PROPPATCH|PUT|PATCH|PURGE */
+            break;
+          case 'R': parser->method = HTTP_REPORT; break;
+          case 'S': parser->method = HTTP_SUBSCRIBE; /* or SEARCH */ break;
+          case 'T': parser->method = HTTP_TRACE; break;
+          case 'U': parser->method = HTTP_UNLOCK; /* or UNSUBSCRIBE */ break;
+          default:
+            SET_ERRNO(HPE_INVALID_METHOD);
+            goto error;
+        }
+        UPDATE_STATE(s_req_method);
+
+        CALLBACK_NOTIFY(message_begin);
+
+        break;
+      }
+
+      case s_req_method:
+      {
+        const char *matcher;
+        if (UNLIKELY(ch == '\0')) {
+          SET_ERRNO(HPE_INVALID_METHOD);
+          goto error;
+        }
+
+        matcher = method_strings[parser->method];
+        if (ch == ' ' && matcher[parser->index] == '\0') {
+          UPDATE_STATE(s_req_spaces_before_url);
+        } else if (ch == matcher[parser->index]) {
+          ; /* nada */
+        } else if (parser->method == HTTP_CONNECT) {
+          if (parser->index == 1 && ch == 'H') {
+            parser->method = HTTP_CHECKOUT;
+          } else if (parser->index == 2  && ch == 'P') {
+            parser->method = HTTP_COPY;
+          } else {
+            SET_ERRNO(HPE_INVALID_METHOD);
+            goto error;
+          }
+        } else if (parser->method == HTTP_MKCOL) {
+          if (parser->index == 1 && ch == 'O') {
+            parser->method = HTTP_MOVE;
+          } else if (parser->index == 1 && ch == 'E') {
+            parser->method = HTTP_MERGE;
+          } else if (parser->index == 1 && ch == '-') {
+            parser->method = HTTP_MSEARCH;
+          } else if (parser->index == 2 && ch == 'A') {
+            parser->method = HTTP_MKACTIVITY;
+          } else if (parser->index == 3 && ch == 'A') {
+            parser->method = HTTP_MKCALENDAR;
+          } else {
+            SET_ERRNO(HPE_INVALID_METHOD);
+            goto error;
+          }
+        } else if (parser->method == HTTP_SUBSCRIBE) {
+          if (parser->index == 1 && ch == 'E') {
+            parser->method = HTTP_SEARCH;
+          } else {
+            SET_ERRNO(HPE_INVALID_METHOD);
+            goto error;
+          }
+        } else if (parser->index == 1 && parser->method == HTTP_POST) {
+          if (ch == 'R') {
+            parser->method = HTTP_PROPFIND; /* or HTTP_PROPPATCH */
+          } else if (ch == 'U') {
+            parser->method = HTTP_PUT; /* or HTTP_PURGE */
+          } else if (ch == 'A') {
+            parser->method = HTTP_PATCH;
+          } else {
+            SET_ERRNO(HPE_INVALID_METHOD);
+            goto error;
+          }
+        } else if (parser->index == 2) {
+          if (parser->method == HTTP_PUT) {
+            if (ch == 'R') {
+              parser->method = HTTP_PURGE;
+            } else {
+              SET_ERRNO(HPE_INVALID_METHOD);
+              goto error;
+            }
+          } else if (parser->method == HTTP_UNLOCK) {
+            if (ch == 'S') {
+              parser->method = HTTP_UNSUBSCRIBE;
+            } else {
+              SET_ERRNO(HPE_INVALID_METHOD);
+              goto error;
+            }
+          } else {
+            SET_ERRNO(HPE_INVALID_METHOD);
+            goto error;
+          }
+        } else if (parser->index == 4 && parser->method == HTTP_PROPFIND && ch == 'P') {
+          parser->method = HTTP_PROPPATCH;
+        } else {
+          SET_ERRNO(HPE_INVALID_METHOD);
+          goto error;
+        }
+
+        ++parser->index;
+        break;
+      }
+
+      case s_req_spaces_before_url:
+      {
+        if (ch == ' ') break;
+
+        MARK(url);
+        if (parser->method == HTTP_CONNECT) {
+          UPDATE_STATE(s_req_server_start);
+        }
+
+        UPDATE_STATE(parse_url_char(CURRENT_STATE(), ch));
+        if (UNLIKELY(CURRENT_STATE() == s_dead)) {
+          SET_ERRNO(HPE_INVALID_URL);
+          goto error;
+        }
+
+        break;
+      }
+
+      case s_req_schema:
+      case s_req_schema_slash:
+      case s_req_schema_slash_slash:
+      case s_req_server_start:
+      {
+        switch (ch) {
+          /* No whitespace allowed here */
+          case ' ':
+          case CR:
+          case LF:
+            SET_ERRNO(HPE_INVALID_URL);
+            goto error;
+          default:
+            UPDATE_STATE(parse_url_char(CURRENT_STATE(), ch));
+            if (UNLIKELY(CURRENT_STATE() == s_dead)) {
+              SET_ERRNO(HPE_INVALID_URL);
+              goto error;
+            }
+        }
+
+        break;
+      }
+
+      case s_req_server:
+      case s_req_server_with_at:
+      case s_req_path:
+      case s_req_query_string_start:
+      case s_req_query_string:
+      case s_req_fragment_start:
+      case s_req_fragment:
+      {
+        switch (ch) {
+          case ' ':
+            UPDATE_STATE(s_req_http_start);
+            CALLBACK_DATA(url);
+            break;
+          case CR:
+          case LF:
+            parser->http_major = 0;
+            parser->http_minor = 9;
+            UPDATE_STATE((ch == CR) ?
+              s_req_line_almost_done :
+              s_header_field_start);
+            CALLBACK_DATA(url);
+            break;
+          default:
+            UPDATE_STATE(parse_url_char(CURRENT_STATE(), ch));
+            if (UNLIKELY(CURRENT_STATE() == s_dead)) {
+              SET_ERRNO(HPE_INVALID_URL);
+              goto error;
+            }
+        }
+        break;
+      }
+
+      case s_req_http_start:
+        switch (ch) {
+          case 'H':
+            UPDATE_STATE(s_req_http_H);
+            break;
+          case ' ':
+            break;
+          default:
+            SET_ERRNO(HPE_INVALID_CONSTANT);
+            goto error;
+        }
+        break;
+
+      case s_req_http_H:
+        STRICT_CHECK(ch != 'T');
+        UPDATE_STATE(s_req_http_HT);
+        break;
+
+      case s_req_http_HT:
+        STRICT_CHECK(ch != 'T');
+        UPDATE_STATE(s_req_http_HTT);
+        break;
+
+      case s_req_http_HTT:
+        STRICT_CHECK(ch != 'P');
+        UPDATE_STATE(s_req_http_HTTP);
+        break;
+
+      case s_req_http_HTTP:
+        STRICT_CHECK(ch != '/');
+        UPDATE_STATE(s_req_first_http_major);
+        break;
+
+      /* first digit of major HTTP version */
+      case s_req_first_http_major:
+        if (UNLIKELY(ch < '1' || ch > '9')) {
+          SET_ERRNO(HPE_INVALID_VERSION);
+          goto error;
+        }
+
+        parser->http_major = ch - '0';
+        UPDATE_STATE(s_req_http_major);
+        break;
+
+      /* major HTTP version or dot */
+      case s_req_http_major:
+      {
+        if (ch == '.') {
+          UPDATE_STATE(s_req_first_http_minor);
+          break;
+        }
+
+        if (UNLIKELY(!IS_NUM(ch))) {
+          SET_ERRNO(HPE_INVALID_VERSION);
+          goto error;
+        }
+
+        parser->http_major *= 10;
+        parser->http_major += ch - '0';
+
+        if (UNLIKELY(parser->http_major > 999)) {
+          SET_ERRNO(HPE_INVALID_VERSION);
+          goto error;
+        }
+
+        break;
+      }
+
+      /* first digit of minor HTTP version */
+      case s_req_first_http_minor:
+        if (UNLIKELY(!IS_NUM(ch))) {
+          SET_ERRNO(HPE_INVALID_VERSION);
+          goto error;
+        }
+
+        parser->http_minor = ch - '0';
+        UPDATE_STATE(s_req_http_minor);
+        break;
+
+      /* minor HTTP version or end of request line */
+      case s_req_http_minor:
+      {
+        if (ch == CR) {
+          UPDATE_STATE(s_req_line_almost_done);
+          break;
+        }
+
+        if (ch == LF) {
+          UPDATE_STATE(s_header_field_start);
+          break;
+        }
+
+        /* XXX allow spaces after digit? */
+
+        if (UNLIKELY(!IS_NUM(ch))) {
+          SET_ERRNO(HPE_INVALID_VERSION);
+          goto error;
+        }
+
+        parser->http_minor *= 10;
+        parser->http_minor += ch - '0';
+
+        if (UNLIKELY(parser->http_minor > 999)) {
+          SET_ERRNO(HPE_INVALID_VERSION);
+          goto error;
+        }
+
+        break;
+      }
+
+      /* end of request line */
+      case s_req_line_almost_done:
+      {
+        if (UNLIKELY(ch != LF)) {
+          SET_ERRNO(HPE_LF_EXPECTED);
+          goto error;
+        }
+
+        UPDATE_STATE(s_header_field_start);
+        break;
+      }
+
+      case s_header_field_start:
+      {
+        if (ch == CR) {
+          UPDATE_STATE(s_headers_almost_done);
+          break;
+        }
+
+        if (ch == LF) {
+          /* they might be just sending \n instead of \r\n so this would be
+           * the second \n to denote the end of headers*/
+          UPDATE_STATE(s_headers_almost_done);
+          REEXECUTE();
+        }
+
+        c = TOKEN(ch);
+
+        if (UNLIKELY(!c)) {
+          SET_ERRNO(HPE_INVALID_HEADER_TOKEN);
+          goto error;
+        }
+
+        MARK(header_field);
+
+        parser->index = 0;
+        UPDATE_STATE(s_header_field);
+
+        switch (c) {
+          case 'c':
+            parser->header_state = h_C;
+            break;
+
+          case 'p':
+            parser->header_state = h_matching_proxy_connection;
+            break;
+
+          case 't':
+            parser->header_state = h_matching_transfer_encoding;
+            break;
+
+          case 'u':
+            parser->header_state = h_matching_upgrade;
+            break;
+
+          default:
+            parser->header_state = h_general;
+            break;
+        }
+        break;
+      }
+
+      case s_header_field:
+      {
+        const char* start = p;
+        for (; p != data + len; p++) {
+          ch = *p;
+          c = TOKEN(ch);
+
+          if (!c)
+            break;
+
+          switch (parser->header_state) {
+            case h_general:
+              break;
+
+            case h_C:
+              parser->index++;
+              parser->header_state = (c == 'o' ? h_CO : h_general);
+              break;
+
+            case h_CO:
+              parser->index++;
+              parser->header_state = (c == 'n' ? h_CON : h_general);
+              break;
+
+            case h_CON:
+              parser->index++;
+              switch (c) {
+                case 'n':
+                  parser->header_state = h_matching_connection;
+                  break;
+                case 't':
+                  parser->header_state = h_matching_content_length;
+                  break;
+                default:
+                  parser->header_state = h_general;
+                  break;
+              }
+              break;
+
+            /* connection */
+
+            case h_matching_connection:
+              parser->index++;
+              if (parser->index > sizeof(CONNECTION)-1
+                  || c != CONNECTION[parser->index]) {
+                parser->header_state = h_general;
+              } else if (parser->index == sizeof(CONNECTION)-2) {
+                parser->header_state = h_connection;
+              }
+              break;
+
+            /* proxy-connection */
+
+            case h_matching_proxy_connection:
+              parser->index++;
+              if (parser->index > sizeof(PROXY_CONNECTION)-1
+                  || c != PROXY_CONNECTION[parser->index]) {
+                parser->header_state = h_general;
+              } else if (parser->index == sizeof(PROXY_CONNECTION)-2) {
+                parser->header_state = h_connection;
+              }
+              break;
+
+            /* content-length */
+
+            case h_matching_content_length:
+              parser->index++;
+              if (parser->index > sizeof(CONTENT_LENGTH)-1
+                  || c != CONTENT_LENGTH[parser->index]) {
+                parser->header_state = h_general;
+              } else if (parser->index == sizeof(CONTENT_LENGTH)-2) {
+                parser->header_state = h_content_length;
+              }
+              break;
+
+            /* transfer-encoding */
+
+            case h_matching_transfer_encoding:
+              parser->index++;
+              if (parser->index > sizeof(TRANSFER_ENCODING)-1
+                  || c != TRANSFER_ENCODING[parser->index]) {
+                parser->header_state = h_general;
+              } else if (parser->index == sizeof(TRANSFER_ENCODING)-2) {
+                parser->header_state = h_transfer_encoding;
+              }
+              break;
+
+            /* upgrade */
+
+            case h_matching_upgrade:
+              parser->index++;
+              if (parser->index > sizeof(UPGRADE)-1
+                  || c != UPGRADE[parser->index]) {
+                parser->header_state = h_general;
+              } else if (parser->index == sizeof(UPGRADE)-2) {
+                parser->header_state = h_upgrade;
+              }
+              break;
+
+            case h_connection:
+            case h_content_length:
+            case h_transfer_encoding:
+            case h_upgrade:
+              if (ch != ' ') parser->header_state = h_general;
+              break;
+
+            default:
+              assert(0 && "Unknown header_state");
+              break;
+          }
+        }
+
+        COUNT_HEADER_SIZE(p - start);
+
+        if (p == data + len) {
+          --p;
+          break;
+        }
+
+        if (ch == ':') {
+          UPDATE_STATE(s_header_value_discard_ws);
+          CALLBACK_DATA(header_field);
+          break;
+        }
+
+        SET_ERRNO(HPE_INVALID_HEADER_TOKEN);
+        goto error;
+      }
+
+      case s_header_value_discard_ws:
+        if (ch == ' ' || ch == '\t') break;
+
+        if (ch == CR) {
+          UPDATE_STATE(s_header_value_discard_ws_almost_done);
+          break;
+        }
+
+        if (ch == LF) {
+          UPDATE_STATE(s_header_value_discard_lws);
+          break;
+        }
+
+        /* FALLTHROUGH */
+
+      case s_header_value_start:
+      {
+        MARK(header_value);
+
+        UPDATE_STATE(s_header_value);
+        parser->index = 0;
+
+        c = LOWER(ch);
+
+        switch (parser->header_state) {
+          case h_upgrade:
+            parser->flags |= F_UPGRADE;
+            parser->header_state = h_general;
+            break;
+
+          case h_transfer_encoding:
+            /* looking for 'Transfer-Encoding: chunked' */
+            if ('c' == c) {
+              parser->header_state = h_matching_transfer_encoding_chunked;
+            } else {
+              parser->header_state = h_general;
+            }
+            break;
+
+          case h_content_length:
+            if (UNLIKELY(!IS_NUM(ch))) {
+              SET_ERRNO(HPE_INVALID_CONTENT_LENGTH);
+              goto error;
+            }
+
+            parser->content_length = ch - '0';
+            break;
+
+          case h_connection:
+            /* looking for 'Connection: keep-alive' */
+            if (c == 'k') {
+              parser->header_state = h_matching_connection_keep_alive;
+            /* looking for 'Connection: close' */
+            } else if (c == 'c') {
+              parser->header_state = h_matching_connection_close;
+            } else if (c == 'u') {
+              parser->header_state = h_matching_connection_upgrade;
+            } else {
+              parser->header_state = h_matching_connection_token;
+            }
+            break;
+
+          /* Multi-value `Connection` header */
+          case h_matching_connection_token_start:
+            break;
+
+          default:
+            parser->header_state = h_general;
+            break;
+        }
+        break;
+      }
+
+      case s_header_value:
+      {
+        const char* start = p;
+        enum header_states h_state = (enum header_states) parser->header_state;
+        for (; p != data + len; p++) {
+          ch = *p;
+          if (ch == CR) {
+            UPDATE_STATE(s_header_almost_done);
+            parser->header_state = h_state;
+            CALLBACK_DATA(header_value);
+            break;
+          }
+
+          if (ch == LF) {
+            UPDATE_STATE(s_header_almost_done);
+            COUNT_HEADER_SIZE(p - start);
+            parser->header_state = h_state;
+            CALLBACK_DATA_NOADVANCE(header_value);
+            REEXECUTE();
+          }
+
+          c = LOWER(ch);
+
+          switch (h_state) {
+            case h_general:
+            {
+              const char* p_cr;
+              const char* p_lf;
+              size_t limit = data + len - p;
+
+              limit = MIN(limit, HTTP_MAX_HEADER_SIZE);
+
+              p_cr = (const char*) memchr(p, CR, limit);
+              p_lf = (const char*) memchr(p, LF, limit);
+              if (p_cr != NULL) {
+                if (p_lf != NULL && p_cr >= p_lf)
+                  p = p_lf;
+                else
+                  p = p_cr;
+              } else if (UNLIKELY(p_lf != NULL)) {
+                p = p_lf;
+              } else {
+                p = data + len;
+              }
+              --p;
+
+              break;
+            }
+
+            case h_connection:
+            case h_transfer_encoding:
+              assert(0 && "Shouldn't get here.");
+              break;
+
+            case h_content_length:
+            {
+              uint64_t t;
+
+              if (ch == ' ') break;
+
+              if (UNLIKELY(!IS_NUM(ch))) {
+                SET_ERRNO(HPE_INVALID_CONTENT_LENGTH);
+                parser->header_state = h_state;
+                goto error;
+              }
+
+              t = parser->content_length;
+              t *= 10;
+              t += ch - '0';
+
+              /* Overflow? Test against a conservative limit for simplicity. */
+              if (UNLIKELY((ULLONG_MAX - 10) / 10 < parser->content_length)) {
+                SET_ERRNO(HPE_INVALID_CONTENT_LENGTH);
+                parser->header_state = h_state;
+                goto error;
+              }
+
+              parser->content_length = t;
+              break;
+            }
+
+            /* Transfer-Encoding: chunked */
+            case h_matching_transfer_encoding_chunked:
+              parser->index++;
+              if (parser->index > sizeof(CHUNKED)-1
+                  || c != CHUNKED[parser->index]) {
+                h_state = h_general;
+              } else if (parser->index == sizeof(CHUNKED)-2) {
+                h_state = h_transfer_encoding_chunked;
+              }
+              break;
+
+            case h_matching_connection_token_start:
+              /* looking for 'Connection: keep-alive' */
+              if (c == 'k') {
+                h_state = h_matching_connection_keep_alive;
+              /* looking for 'Connection: close' */
+              } else if (c == 'c') {
+                h_state = h_matching_connection_close;
+              } else if (c == 'u') {
+                h_state = h_matching_connection_upgrade;
+              } else if (STRICT_TOKEN(c)) {
+                h_state = h_matching_connection_token;
+              } else {
+                h_state = h_general;
+              }
+              break;
+
+            /* looking for 'Connection: keep-alive' */
+            case h_matching_connection_keep_alive:
+              parser->index++;
+              if (parser->index > sizeof(KEEP_ALIVE)-1
+                  || c != KEEP_ALIVE[parser->index]) {
+                h_state = h_matching_connection_token;
+              } else if (parser->index == sizeof(KEEP_ALIVE)-2) {
+                h_state = h_connection_keep_alive;
+              }
+              break;
+
+            /* looking for 'Connection: close' */
+            case h_matching_connection_close:
+              parser->index++;
+              if (parser->index > sizeof(CLOSE)-1 || c != CLOSE[parser->index]) {
+                h_state = h_matching_connection_token;
+              } else if (parser->index == sizeof(CLOSE)-2) {
+                h_state = h_connection_close;
+              }
+              break;
+
+            /* looking for 'Connection: upgrade' */
+            case h_matching_connection_upgrade:
+              parser->index++;
+              if (parser->index > sizeof(UPGRADE) - 1 ||
+                  c != UPGRADE[parser->index]) {
+                h_state = h_matching_connection_token;
+              } else if (parser->index == sizeof(UPGRADE)-2) {
+                h_state = h_connection_upgrade;
+              }
+              break;
+
+            case h_matching_connection_token:
+              if (ch == ',') {
+                h_state = h_matching_connection_token_start;
+                parser->index = 0;
+              }
+              break;
+
+            case h_transfer_encoding_chunked:
+              if (ch != ' ') h_state = h_general;
+              break;
+
+            case h_connection_keep_alive:
+            case h_connection_close:
+            case h_connection_upgrade:
+              if (ch == ',') {
+                if (h_state == h_connection_keep_alive) {
+                  parser->flags |= F_CONNECTION_KEEP_ALIVE;
+                } else if (h_state == h_connection_close) {
+                  parser->flags |= F_CONNECTION_CLOSE;
+                } else if (h_state == h_connection_upgrade) {
+                  parser->flags |= F_CONNECTION_UPGRADE;
+                }
+                h_state = h_matching_connection_token_start;
+                parser->index = 0;
+              } else if (ch != ' ') {
+                h_state = h_matching_connection_token;
+              }
+              break;
+
+            default:
+              UPDATE_STATE(s_header_value);
+              h_state = h_general;
+              break;
+          }
+        }
+        parser->header_state = h_state;
+
+        COUNT_HEADER_SIZE(p - start);
+
+        if (p == data + len)
+          --p;
+        break;
+      }
+
+      case s_header_almost_done:
+      {
+        STRICT_CHECK(ch != LF);
+
+        UPDATE_STATE(s_header_value_lws);
+        break;
+      }
+
+      case s_header_value_lws:
+      {
+        if (ch == ' ' || ch == '\t') {
+          UPDATE_STATE(s_header_value_start);
+          REEXECUTE();
+        }
+
+        /* finished the header */
+        switch (parser->header_state) {
+          case h_connection_keep_alive:
+            parser->flags |= F_CONNECTION_KEEP_ALIVE;
+            break;
+          case h_connection_close:
+            parser->flags |= F_CONNECTION_CLOSE;
+            break;
+          case h_transfer_encoding_chunked:
+            parser->flags |= F_CHUNKED;
+            break;
+          case h_connection_upgrade:
+            parser->flags |= F_CONNECTION_UPGRADE;
+            break;
+          default:
+            break;
+        }
+
+        UPDATE_STATE(s_header_field_start);
+        REEXECUTE();
+      }
+
+      case s_header_value_discard_ws_almost_done:
+      {
+        STRICT_CHECK(ch != LF);
+        UPDATE_STATE(s_header_value_discard_lws);
+        break;
+      }
+
+      case s_header_value_discard_lws:
+      {
+        if (ch == ' ' || ch == '\t') {
+          UPDATE_STATE(s_header_value_discard_ws);
+          break;
+        } else {
+          switch (parser->header_state) {
+            case h_connection_keep_alive:
+              parser->flags |= F_CONNECTION_KEEP_ALIVE;
+              break;
+            case h_connection_close:
+              parser->flags |= F_CONNECTION_CLOSE;
+              break;
+            case h_connection_upgrade:
+              parser->flags |= F_CONNECTION_UPGRADE;
+              break;
+            case h_transfer_encoding_chunked:
+              parser->flags |= F_CHUNKED;
+              break;
+            default:
+              break;
+          }
+
+          /* header value was empty */
+          MARK(header_value);
+          UPDATE_STATE(s_header_field_start);
+          CALLBACK_DATA_NOADVANCE(header_value);
+          REEXECUTE();
+        }
+      }
+
+      case s_headers_almost_done:
+      {
+        STRICT_CHECK(ch != LF);
+
+        if (parser->flags & F_TRAILING) {
+          /* End of a chunked request */
+          UPDATE_STATE(NEW_MESSAGE());
+          CALLBACK_NOTIFY(message_complete);
+          break;
+        }
+
+        UPDATE_STATE(s_headers_done);
+
+        /* Set this here so that on_headers_complete() callbacks can see it */
+        parser->upgrade =
+          ((parser->flags & (F_UPGRADE | F_CONNECTION_UPGRADE)) ==
+           (F_UPGRADE | F_CONNECTION_UPGRADE) ||
+           parser->method == HTTP_CONNECT);
+
+        /* Here we call the headers_complete callback. This is somewhat
+         * different than other callbacks because if the user returns 1, we
+         * will interpret that as saying that this message has no body. This
+         * is needed for the annoying case of recieving a response to a HEAD
+         * request.
+         *
+         * We'd like to use CALLBACK_NOTIFY_NOADVANCE() here but we cannot, so
+         * we have to simulate it by handling a change in errno below.
+         */
+        if (settings->on_headers_complete) {
+          switch (settings->on_headers_complete(parser)) {
+            case 0:
+              break;
+
+            case 1:
+              parser->flags |= F_SKIPBODY;
+              break;
+
+            default:
+              SET_ERRNO(HPE_CB_headers_complete);
+              RETURN(p - data); /* Error */
+          }
+        }
+
+        if (HTTP_PARSER_ERRNO(parser) != HPE_OK) {
+          RETURN(p - data);
+        }
+
+        REEXECUTE();
+      }
+
+      case s_headers_done:
+      {
+        STRICT_CHECK(ch != LF);
+
+        parser->nread = 0;
+
+        /* Exit, the rest of the connect is in a different protocol. */
+        if (parser->upgrade) {
+          UPDATE_STATE(NEW_MESSAGE());
+          CALLBACK_NOTIFY(message_complete);
+          RETURN((p - data) + 1);
+        }
+
+        if (parser->flags & F_SKIPBODY) {
+          UPDATE_STATE(NEW_MESSAGE());
+          CALLBACK_NOTIFY(message_complete);
+        } else if (parser->flags & F_CHUNKED) {
+          /* chunked encoding - ignore Content-Length header */
+          UPDATE_STATE(s_chunk_size_start);
+        } else {
+          if (parser->content_length == 0) {
+            /* Content-Length header given but zero: Content-Length: 0\r\n */
+            UPDATE_STATE(NEW_MESSAGE());
+            CALLBACK_NOTIFY(message_complete);
+          } else if (parser->content_length != ULLONG_MAX) {
+            /* Content-Length header given and non-zero */
+            UPDATE_STATE(s_body_identity);
+          } else {
+            if (parser->type == HTTP_REQUEST ||
+                !http_message_needs_eof(parser)) {
+              /* Assume content-length 0 - read the next */
+              UPDATE_STATE(NEW_MESSAGE());
+              CALLBACK_NOTIFY(message_complete);
+            } else {
+              /* Read body until EOF */
+              UPDATE_STATE(s_body_identity_eof);
+            }
+          }
+        }
+
+        break;
+      }
+
+      case s_body_identity:
+      {
+        uint64_t to_read = MIN(parser->content_length,
+                               (uint64_t) ((data + len) - p));
+
+        assert(parser->content_length != 0
+            && parser->content_length != ULLONG_MAX);
+
+        /* The difference between advancing content_length and p is because
+         * the latter will automaticaly advance on the next loop iteration.
+         * Further, if content_length ends up at 0, we want to see the last
+         * byte again for our message complete callback.
+         */
+        MARK(body);
+        parser->content_length -= to_read;
+        p += to_read - 1;
+
+        if (parser->content_length == 0) {
+          UPDATE_STATE(s_message_done);
+
+          /* Mimic CALLBACK_DATA_NOADVANCE() but with one extra byte.
+           *
+           * The alternative to doing this is to wait for the next byte to
+           * trigger the data callback, just as in every other case. The
+           * problem with this is that this makes it difficult for the test
+           * harness to distinguish between complete-on-EOF and
+           * complete-on-length. It's not clear that this distinction is
+           * important for applications, but let's keep it for now.
+           */
+          CALLBACK_DATA_(body, p - body_mark + 1, p - data);
+          REEXECUTE();
+        }
+
+        break;
+      }
+
+      /* read until EOF */
+      case s_body_identity_eof:
+        MARK(body);
+        p = data + len - 1;
+
+        break;
+
+      case s_message_done:
+        UPDATE_STATE(NEW_MESSAGE());
+        CALLBACK_NOTIFY(message_complete);
+        break;
+
+      case s_chunk_size_start:
+      {
+        assert(parser->nread == 1);
+        assert(parser->flags & F_CHUNKED);
+
+        unhex_val = unhex[(unsigned char)ch];
+        if (UNLIKELY(unhex_val == -1)) {
+          SET_ERRNO(HPE_INVALID_CHUNK_SIZE);
+          goto error;
+        }
+
+        parser->content_length = unhex_val;
+        UPDATE_STATE(s_chunk_size);
+        break;
+      }
+
+      case s_chunk_size:
+      {
+        uint64_t t;
+
+        assert(parser->flags & F_CHUNKED);
+
+        if (ch == CR) {
+          UPDATE_STATE(s_chunk_size_almost_done);
+          break;
+        }
+
+        unhex_val = unhex[(unsigned char)ch];
+
+        if (unhex_val == -1) {
+          if (ch == ';' || ch == ' ') {
+            UPDATE_STATE(s_chunk_parameters);
+            break;
+          }
+
+          SET_ERRNO(HPE_INVALID_CHUNK_SIZE);
+          goto error;
+        }
+
+        t = parser->content_length;
+        t *= 16;
+        t += unhex_val;
+
+        /* Overflow? Test against a conservative limit for simplicity. */
+        if (UNLIKELY((ULLONG_MAX - 16) / 16 < parser->content_length)) {
+          SET_ERRNO(HPE_INVALID_CONTENT_LENGTH);
+          goto error;
+        }
+
+        parser->content_length = t;
+        break;
+      }
+
+      case s_chunk_parameters:
+      {
+        assert(parser->flags & F_CHUNKED);
+        /* just ignore this shit. TODO check for overflow */
+        if (ch == CR) {
+          UPDATE_STATE(s_chunk_size_almost_done);
+          break;
+        }
+        break;
+      }
+
+      case s_chunk_size_almost_done:
+      {
+        assert(parser->flags & F_CHUNKED);
+        STRICT_CHECK(ch != LF);
+
+        parser->nread = 0;
+
+        if (parser->content_length == 0) {
+          parser->flags |= F_TRAILING;
+          UPDATE_STATE(s_header_field_start);
+        } else {
+          UPDATE_STATE(s_chunk_data);
+        }
+        break;
+      }
+
+      case s_chunk_data:
+      {
+        uint64_t to_read = MIN(parser->content_length,
+                               (uint64_t) ((data + len) - p));
+
+        assert(parser->flags & F_CHUNKED);
+        assert(parser->content_length != 0
+            && parser->content_length != ULLONG_MAX);
+
+        /* See the explanation in s_body_identity for why the content
+         * length and data pointers are managed this way.
+         */
+        MARK(body);
+        parser->content_length -= to_read;
+        p += to_read - 1;
+
+        if (parser->content_length == 0) {
+          UPDATE_STATE(s_chunk_data_almost_done);
+        }
+
+        break;
+      }
+
+      case s_chunk_data_almost_done:
+        assert(parser->flags & F_CHUNKED);
+        assert(parser->content_length == 0);
+        STRICT_CHECK(ch != CR);
+        UPDATE_STATE(s_chunk_data_done);
+        CALLBACK_DATA(body);
+        break;
+
+      case s_chunk_data_done:
+        assert(parser->flags & F_CHUNKED);
+        STRICT_CHECK(ch != LF);
+        parser->nread = 0;
+        UPDATE_STATE(s_chunk_size_start);
+        break;
+
+      default:
+        assert(0 && "unhandled state");
+        SET_ERRNO(HPE_INVALID_INTERNAL_STATE);
+        goto error;
+    }
+  }
+
+  /* Run callbacks for any marks that we have leftover after we ran our of
+   * bytes. There should be at most one of these set, so it's OK to invoke
+   * them in series (unset marks will not result in callbacks).
+   *
+   * We use the NOADVANCE() variety of callbacks here because 'p' has already
+   * overflowed 'data' and this allows us to correct for the off-by-one that
+   * we'd otherwise have (since CALLBACK_DATA() is meant to be run with a 'p'
+   * value that's in-bounds).
+   */
+
+  assert(((header_field_mark ? 1 : 0) +
+          (header_value_mark ? 1 : 0) +
+          (url_mark ? 1 : 0)  +
+          (body_mark ? 1 : 0) +
+          (status_mark ? 1 : 0)) <= 1);
+
+  CALLBACK_DATA_NOADVANCE(header_field);
+  CALLBACK_DATA_NOADVANCE(header_value);
+  CALLBACK_DATA_NOADVANCE(url);
+  CALLBACK_DATA_NOADVANCE(body);
+  CALLBACK_DATA_NOADVANCE(status);
+
+  RETURN(len);
+
+error:
+  if (HTTP_PARSER_ERRNO(parser) == HPE_OK) {
+    SET_ERRNO(HPE_UNKNOWN);
+  }
+
+  RETURN(p - data);
+}
+
+
+/* Does the parser need to see an EOF to find the end of the message? */
+int
+http_message_needs_eof (const http_parser *parser)
+{
+  if (parser->type == HTTP_REQUEST) {
+    return 0;
+  }
+
+  /* See RFC 2616 section 4.4 */
+  if (parser->status_code / 100 == 1 || /* 1xx e.g. Continue */
+      parser->status_code == 204 ||     /* No Content */
+      parser->status_code == 304 ||     /* Not Modified */
+      parser->flags & F_SKIPBODY) {     /* response to a HEAD request */
+    return 0;
+  }
+
+  if ((parser->flags & F_CHUNKED) || parser->content_length != ULLONG_MAX) {
+    return 0;
+  }
+
+  return 1;
+}
+
+
+int
+http_should_keep_alive (const http_parser *parser)
+{
+  if (parser->http_major > 0 && parser->http_minor > 0) {
+    /* HTTP/1.1 */
+    if (parser->flags & F_CONNECTION_CLOSE) {
+      return 0;
+    }
+  } else {
+    /* HTTP/1.0 or earlier */
+    if (!(parser->flags & F_CONNECTION_KEEP_ALIVE)) {
+      return 0;
+    }
+  }
+
+  return !http_message_needs_eof(parser);
+}
+
+
+const char *
+http_method_str (enum http_method m)
+{
+  return ELEM_AT(method_strings, m, "<unknown>");
+}
+
+
+void
+http_parser_init (http_parser *parser, enum http_parser_type t)
+{
+  void *data = parser->data; /* preserve application data */
+  memset(parser, 0, sizeof(*parser));
+  parser->data = data;
+  parser->type = t;
+  parser->state = (t == HTTP_REQUEST ? s_start_req : (t == HTTP_RESPONSE ? s_start_res : s_start_req_or_res));
+  parser->http_errno = HPE_OK;
+}
+
+const char *
+http_errno_name(enum http_errno err) {
+  assert(err < (sizeof(http_strerror_tab)/sizeof(http_strerror_tab[0])));
+  return http_strerror_tab[err].name;
+}
+
+const char *
+http_errno_description(enum http_errno err) {
+  assert(err < (sizeof(http_strerror_tab)/sizeof(http_strerror_tab[0])));
+  return http_strerror_tab[err].description;
+}
+
+static enum http_host_state
+http_parse_host_char(enum http_host_state s, const char ch) {
+  switch(s) {
+    case s_http_userinfo:
+    case s_http_userinfo_start:
+      if (ch == '@') {
+        return s_http_host_start;
+      }
+
+      if (IS_USERINFO_CHAR(ch)) {
+        return s_http_userinfo;
+      }
+      break;
+
+    case s_http_host_start:
+      if (ch == '[') {
+        return s_http_host_v6_start;
+      }
+
+      if (IS_HOST_CHAR(ch)) {
+        return s_http_host;
+      }
+
+      break;
+
+    case s_http_host:
+      if (IS_HOST_CHAR(ch)) {
+        return s_http_host;
+      }
+
+    /* FALLTHROUGH */
+    case s_http_host_v6_end:
+      if (ch == ':') {
+        return s_http_host_port_start;
+      }
+
+      break;
+
+    case s_http_host_v6:
+      if (ch == ']') {
+        return s_http_host_v6_end;
+      }
+
+    /* FALLTHROUGH */
+    case s_http_host_v6_start:
+      if (IS_HEX(ch) || ch == ':' || ch == '.') {
+        return s_http_host_v6;
+      }
+
+      break;
+
+    case s_http_host_port:
+    case s_http_host_port_start:
+      if (IS_NUM(ch)) {
+        return s_http_host_port;
+      }
+
+      break;
+
+    default:
+      break;
+  }
+  return s_http_host_dead;
+}
+
+static int
+http_parse_host(const char * buf, struct http_parser_url *u, int found_at) {
+  enum http_host_state s;
+
+  const char *p;
+  size_t buflen = u->field_data[UF_HOST].off + u->field_data[UF_HOST].len;
+
+  u->field_data[UF_HOST].len = 0;
+
+  s = found_at ? s_http_userinfo_start : s_http_host_start;
+
+  for (p = buf + u->field_data[UF_HOST].off; p < buf + buflen; p++) {
+    enum http_host_state new_s = http_parse_host_char(s, *p);
+
+    if (new_s == s_http_host_dead) {
+      return 1;
+    }
+
+    switch(new_s) {
+      case s_http_host:
+        if (s != s_http_host) {
+          u->field_data[UF_HOST].off = p - buf;
+        }
+        u->field_data[UF_HOST].len++;
+        break;
+
+      case s_http_host_v6:
+        if (s != s_http_host_v6) {
+          u->field_data[UF_HOST].off = p - buf;
+        }
+        u->field_data[UF_HOST].len++;
+        break;
+
+      case s_http_host_port:
+        if (s != s_http_host_port) {
+          u->field_data[UF_PORT].off = p - buf;
+          u->field_data[UF_PORT].len = 0;
+          u->field_set |= (1 << UF_PORT);
+        }
+        u->field_data[UF_PORT].len++;
+        break;
+
+      case s_http_userinfo:
+        if (s != s_http_userinfo) {
+          u->field_data[UF_USERINFO].off = p - buf ;
+          u->field_data[UF_USERINFO].len = 0;
+          u->field_set |= (1 << UF_USERINFO);
+        }
+        u->field_data[UF_USERINFO].len++;
+        break;
+
+      default:
+        break;
+    }
+    s = new_s;
+  }
+
+  /* Make sure we don't end somewhere unexpected */
+  switch (s) {
+    case s_http_host_start:
+    case s_http_host_v6_start:
+    case s_http_host_v6:
+    case s_http_host_port_start:
+    case s_http_userinfo:
+    case s_http_userinfo_start:
+      return 1;
+    default:
+      break;
+  }
+
+  return 0;
+}
+
+int
+http_parser_parse_url(const char *buf, size_t buflen, int is_connect,
+                      struct http_parser_url *u)
+{
+  enum state s;
+  const char *p;
+  enum http_parser_url_fields uf, old_uf;
+  int found_at = 0;
+
+  u->port = u->field_set = 0;
+  s = is_connect ? s_req_server_start : s_req_spaces_before_url;
+  old_uf = UF_MAX;
+
+  for (p = buf; p < buf + buflen; p++) {
+    s = parse_url_char(s, *p);
+
+    /* Figure out the next field that we're operating on */
+    switch (s) {
+      case s_dead:
+        return 1;
+
+      /* Skip delimeters */
+      case s_req_schema_slash:
+      case s_req_schema_slash_slash:
+      case s_req_server_start:
+      case s_req_query_string_start:
+      case s_req_fragment_start:
+        continue;
+
+      case s_req_schema:
+        uf = UF_SCHEMA;
+        break;
+
+      case s_req_server_with_at:
+        found_at = 1;
+
+      /* FALLTROUGH */
+      case s_req_server:
+        uf = UF_HOST;
+        break;
+
+      case s_req_path:
+        uf = UF_PATH;
+        break;
+
+      case s_req_query_string:
+        uf = UF_QUERY;
+        break;
+
+      case s_req_fragment:
+        uf = UF_FRAGMENT;
+        break;
+
+      default:
+        assert(!"Unexpected state");
+        return 1;
+    }
+
+    /* Nothing's changed; soldier on */
+    if (uf == old_uf) {
+      u->field_data[uf].len++;
+      continue;
+    }
+
+    u->field_data[uf].off = p - buf;
+    u->field_data[uf].len = 1;
+
+    u->field_set |= (1 << uf);
+    old_uf = uf;
+  }
+
+  /* host must be present if there is a schema */
+  /* parsing http:///toto will fail */
+  if ((u->field_set & ((1 << UF_SCHEMA) | (1 << UF_HOST))) != 0) {
+    if (http_parse_host(buf, u, found_at) != 0) {
+      return 1;
+    }
+  }
+
+  /* CONNECT requests can only contain "hostname:port" */
+  if (is_connect && u->field_set != ((1 << UF_HOST)|(1 << UF_PORT))) {
+    return 1;
+  }
+
+  if (u->field_set & (1 << UF_PORT)) {
+    /* Don't bother with endp; we've already validated the string */
+    unsigned long v = strtoul(buf + u->field_data[UF_PORT].off, NULL, 10);
+
+    /* Ports have a max value of 2^16 */
+    if (v > 0xffff) {
+      return 1;
+    }
+
+    u->port = (uint16_t) v;
+  }
+
+  return 0;
+}
+
+void
+http_parser_pause(http_parser *parser, int paused) {
+  /* Users should only be pausing/unpausing a parser that is not in an error
+   * state. In non-debug builds, there's not much that we can do about this
+   * other than ignore it.
+   */
+  if (HTTP_PARSER_ERRNO(parser) == HPE_OK ||
+      HTTP_PARSER_ERRNO(parser) == HPE_PAUSED) {
+    SET_ERRNO((paused) ? HPE_PAUSED : HPE_OK);
+  } else {
+    assert(0 && "Attempting to pause parser in error state");
+  }
+}
+
+int
+http_body_is_final(const struct http_parser *parser) {
+    return parser->state == s_message_done;
+}
+
+unsigned long
+http_parser_version(void) {
+  return HTTP_PARSER_VERSION_MAJOR * 0x10000 |
+         HTTP_PARSER_VERSION_MINOR * 0x00100 |
+         HTTP_PARSER_VERSION_PATCH * 0x00001;
+}
Index: uKadecot/trunk/uip/apps/webserver/http_parser.h
===================================================================
--- uKadecot/trunk/uip/apps/webserver/http_parser.h	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/http_parser.h	(revision 101)
@@ -0,0 +1,331 @@
+/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+#ifndef http_parser_h
+#define http_parser_h
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Also update SONAME in the Makefile whenever you change these. */
+#define HTTP_PARSER_VERSION_MAJOR 2
+#define HTTP_PARSER_VERSION_MINOR 4
+#define HTTP_PARSER_VERSION_PATCH 1
+
+#include <t_stddef.h>
+#include <t_syslog.h>
+#if defined(_WIN32) && !defined(__MINGW32__) && (!defined(_MSC_VER) || _MSC_VER<1600)
+#include <BaseTsd.h>
+#include <stddef.h>
+typedef __int8 int8_t;
+typedef unsigned __int8 uint8_t;
+typedef __int16 int16_t;
+typedef unsigned __int16 uint16_t;
+typedef __int32 int32_t;
+typedef unsigned __int32 uint32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+#else
+#include <stdint.h>
+#endif
+
+/* Compile with -DHTTP_PARSER_STRICT=0 to make less checks, but run
+ * faster
+ */
+#ifndef HTTP_PARSER_STRICT
+# define HTTP_PARSER_STRICT 1
+#endif
+
+/* Maximium header size allowed. If the macro is not defined
+ * before including this header then the default is used. To
+ * change the maximum header size, define the macro in the build
+ * environment (e.g. -DHTTP_MAX_HEADER_SIZE=<value>). To remove
+ * the effective limit on the size of the header, define the macro
+ * to a very large number (e.g. -DHTTP_MAX_HEADER_SIZE=0x7fffffff)
+ */
+#ifndef HTTP_MAX_HEADER_SIZE
+# define HTTP_MAX_HEADER_SIZE (80*1024)
+#endif
+
+typedef struct http_parser http_parser;
+typedef struct http_parser_settings http_parser_settings;
+
+
+/* Callbacks should return non-zero to indicate an error. The parser will
+ * then halt execution.
+ *
+ * The one exception is on_headers_complete. In a HTTP_RESPONSE parser
+ * returning '1' from on_headers_complete will tell the parser that it
+ * should not expect a body. This is used when receiving a response to a
+ * HEAD request which may contain 'Content-Length' or 'Transfer-Encoding:
+ * chunked' headers that indicate the presence of a body.
+ *
+ * http_data_cb does not return data chunks. It will be called arbitrarily
+ * many times for each string. E.G. you might get 10 callbacks for "on_url"
+ * each providing just a few characters more data.
+ */
+typedef int (*http_data_cb) (http_parser*, const char *at, size_t length);
+typedef int (*http_cb) (http_parser*);
+
+
+/* Request Methods */
+#define HTTP_METHOD_MAP(XX)         \
+  XX(0,  DELETE,      DELETE)       \
+  XX(1,  GET,         GET)          \
+  XX(2,  HEAD,        HEAD)         \
+  XX(3,  POST,        POST)         \
+  XX(4,  PUT,         PUT)          \
+  /* pathological */                \
+  XX(5,  CONNECT,     CONNECT)      \
+  XX(6,  OPTIONS,     OPTIONS)      \
+  XX(7,  TRACE,       TRACE)        \
+  /* webdav */                      \
+  XX(8,  COPY,        COPY)         \
+  XX(9,  LOCK,        LOCK)         \
+  XX(10, MKCOL,       MKCOL)        \
+  XX(11, MOVE,        MOVE)         \
+  XX(12, PROPFIND,    PROPFIND)     \
+  XX(13, PROPPATCH,   PROPPATCH)    \
+  XX(14, SEARCH,      SEARCH)       \
+  XX(15, UNLOCK,      UNLOCK)       \
+  /* subversion */                  \
+  XX(16, REPORT,      REPORT)       \
+  XX(17, MKACTIVITY,  MKACTIVITY)   \
+  XX(18, CHECKOUT,    CHECKOUT)     \
+  XX(19, MERGE,       MERGE)        \
+  /* upnp */                        \
+  XX(20, MSEARCH,     M-SEARCH)     \
+  XX(21, NOTIFY,      NOTIFY)       \
+  XX(22, SUBSCRIBE,   SUBSCRIBE)    \
+  XX(23, UNSUBSCRIBE, UNSUBSCRIBE)  \
+  /* RFC-5789 */                    \
+  XX(24, PATCH,       PATCH)        \
+  XX(25, PURGE,       PURGE)        \
+  /* CalDAV */                      \
+  XX(26, MKCALENDAR,  MKCALENDAR)   \
+
+enum http_method
+  {
+#define XX(num, name, string) HTTP_##name = num,
+  HTTP_METHOD_MAP(XX)
+#undef XX
+  };
+
+
+enum http_parser_type { HTTP_REQUEST, HTTP_RESPONSE, HTTP_BOTH };
+
+
+/* Flag values for http_parser.flags field */
+enum flags
+  { F_CHUNKED               = 1 << 0
+  , F_CONNECTION_KEEP_ALIVE = 1 << 1
+  , F_CONNECTION_CLOSE      = 1 << 2
+  , F_CONNECTION_UPGRADE    = 1 << 3
+  , F_TRAILING              = 1 << 4
+  , F_UPGRADE               = 1 << 5
+  , F_SKIPBODY              = 1 << 6
+  };
+
+
+/* Map for errno-related constants
+ * 
+ * The provided argument should be a macro that takes 2 arguments.
+ */
+#define HTTP_ERRNO_MAP(XX)                                           \
+  /* No error */                                                     \
+  XX(OK, "success")                                                  \
+                                                                     \
+  /* Callback-related errors */                                      \
+  XX(CB_message_begin, "the on_message_begin callback failed")       \
+  XX(CB_url, "the on_url callback failed")                           \
+  XX(CB_header_field, "the on_header_field callback failed")         \
+  XX(CB_header_value, "the on_header_value callback failed")         \
+  XX(CB_headers_complete, "the on_headers_complete callback failed") \
+  XX(CB_body, "the on_body callback failed")                         \
+  XX(CB_message_complete, "the on_message_complete callback failed") \
+  XX(CB_status, "the on_status callback failed")                     \
+                                                                     \
+  /* Parsing-related errors */                                       \
+  XX(INVALID_EOF_STATE, "stream ended at an unexpected time")        \
+  XX(HEADER_OVERFLOW,                                                \
+     "too many header bytes seen; overflow detected")                \
+  XX(CLOSED_CONNECTION,                                              \
+     "data received after completed connection: close message")      \
+  XX(INVALID_VERSION, "invalid HTTP version")                        \
+  XX(INVALID_STATUS, "invalid HTTP status code")                     \
+  XX(INVALID_METHOD, "invalid HTTP method")                          \
+  XX(INVALID_URL, "invalid URL")                                     \
+  XX(INVALID_HOST, "invalid host")                                   \
+  XX(INVALID_PORT, "invalid port")                                   \
+  XX(INVALID_PATH, "invalid path")                                   \
+  XX(INVALID_QUERY_STRING, "invalid query string")                   \
+  XX(INVALID_FRAGMENT, "invalid fragment")                           \
+  XX(LF_EXPECTED, "LF character expected")                           \
+  XX(INVALID_HEADER_TOKEN, "invalid character in header")            \
+  XX(INVALID_CONTENT_LENGTH,                                         \
+     "invalid character in content-length header")                   \
+  XX(INVALID_CHUNK_SIZE,                                             \
+     "invalid character in chunk size header")                       \
+  XX(INVALID_CONSTANT, "invalid constant string")                    \
+  XX(INVALID_INTERNAL_STATE, "encountered unexpected internal state")\
+  XX(STRICT, "strict mode assertion failed")                         \
+  XX(PAUSED, "parser is paused")                                     \
+  XX(UNKNOWN, "an unknown error occurred")
+
+
+/* Define HPE_* values for each errno value above */
+#define HTTP_ERRNO_GEN(n, s) HPE_##n,
+enum http_errno {
+  HTTP_ERRNO_MAP(HTTP_ERRNO_GEN)
+};
+#undef HTTP_ERRNO_GEN
+
+
+/* Get an http_errno value from an http_parser */
+#define HTTP_PARSER_ERRNO(p)            ((enum http_errno) (p)->http_errno)
+
+
+struct http_parser {
+  /** PRIVATE **/
+  unsigned int type : 2;         /* enum http_parser_type */
+  unsigned int flags : 6;        /* F_* values from 'flags' enum; semi-public */
+  unsigned int state : 8;        /* enum state from http_parser.c */
+  unsigned int header_state : 8; /* enum header_state from http_parser.c */
+  unsigned int index : 8;        /* index into current matcher */
+
+  uint32_t nread;          /* # bytes read in various scenarios */
+  uint64_t content_length; /* # bytes in body (0 if no Content-Length header) */
+
+  /** READ-ONLY **/
+  unsigned short http_major;
+  unsigned short http_minor;
+  unsigned int status_code : 16; /* responses only */
+  unsigned int method : 8;       /* requests only */
+  unsigned int http_errno : 7;
+
+  /* 1 = Upgrade header was present and the parser has exited because of that.
+   * 0 = No upgrade header present.
+   * Should be checked when http_parser_execute() returns in addition to
+   * error checking.
+   */
+  unsigned int upgrade : 1;
+
+  /** PUBLIC **/
+  void *data; /* A pointer to get hook to the "connection" or "socket" object */
+};
+
+
+struct http_parser_settings {
+  http_cb      on_message_begin;
+  http_data_cb on_url;
+  http_data_cb on_status;
+  http_data_cb on_header_field;
+  http_data_cb on_header_value;
+  http_cb      on_headers_complete;
+  http_data_cb on_body;
+  http_cb      on_message_complete;
+};
+
+
+enum http_parser_url_fields
+  { UF_SCHEMA           = 0
+  , UF_HOST             = 1
+  , UF_PORT             = 2
+  , UF_PATH             = 3
+  , UF_QUERY            = 4
+  , UF_FRAGMENT         = 5
+  , UF_USERINFO         = 6
+  , UF_MAX              = 7
+  };
+
+
+/* Result structure for http_parser_parse_url().
+ *
+ * Callers should index into field_data[] with UF_* values iff field_set
+ * has the relevant (1 << UF_*) bit set. As a courtesy to clients (and
+ * because we probably have padding left over), we convert any port to
+ * a uint16_t.
+ */
+struct http_parser_url {
+  uint16_t field_set;           /* Bitmask of (1 << UF_*) values */
+  uint16_t port;                /* Converted UF_PORT string */
+
+  struct {
+    uint16_t off;               /* Offset into buffer in which field starts */
+    uint16_t len;               /* Length of run in buffer */
+  } field_data[UF_MAX];
+};
+
+
+/* Returns the library version. Bits 16-23 contain the major version number,
+ * bits 8-15 the minor version number and bits 0-7 the patch level.
+ * Usage example:
+ *
+ *   unsigned long version = http_parser_version();
+ *   unsigned major = (version >> 16) & 255;
+ *   unsigned minor = (version >> 8) & 255;
+ *   unsigned patch = version & 255;
+ *   printf("http_parser v%u.%u.%u\n", major, minor, patch);
+ */
+unsigned long http_parser_version(void);
+
+void http_parser_init(http_parser *parser, enum http_parser_type type);
+
+
+/* Executes the parser. Returns number of parsed bytes. Sets
+ * `parser->http_errno` on error. */
+size_t http_parser_execute(http_parser *parser,
+                           const http_parser_settings *settings,
+                           const char *data,
+                           size_t len);
+
+
+/* If http_should_keep_alive() in the on_headers_complete or
+ * on_message_complete callback returns 0, then this should be
+ * the last message on the connection.
+ * If you are the server, respond with the "Connection: close" header.
+ * If you are the client, close the connection.
+ */
+int http_should_keep_alive(const http_parser *parser);
+
+/* Returns a string version of the HTTP method. */
+const char *http_method_str(enum http_method m);
+
+/* Return a string name of the given error */
+const char *http_errno_name(enum http_errno err);
+
+/* Return a string description of the given error */
+const char *http_errno_description(enum http_errno err);
+
+/* Parse a URL; return nonzero on failure */
+int http_parser_parse_url(const char *buf, size_t buflen,
+                          int is_connect,
+                          struct http_parser_url *u);
+
+/* Pause or un-pause the parser; a nonzero value pauses */
+void http_parser_pause(http_parser *parser, int paused);
+
+/* Checks if this is the final chunk of the body. */
+int http_body_is_final(const http_parser *parser);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
Index: uKadecot/trunk/uip/apps/webserver/http_pcb.c
===================================================================
--- uKadecot/trunk/uip/apps/webserver/http_pcb.c	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/http_pcb.c	(revision 101)
@@ -0,0 +1,248 @@
+/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include "httpd.h"
+#include "http_pcb.h"
+#include <string.h>
+#include <stdlib.h>
+
+#define TRUE 1
+#define FALSE 0
+
+#ifndef _MSC_VER
+/* strnlen() is a POSIX.2008 addition. Can't rely on it being available so
+ * define it ourselves.
+ */
+size_t
+strnlen(const char *s, size_t maxlen)
+{
+  const char *p;
+
+  p = memchr(s, '\0', maxlen);
+  if (p == NULL)
+    return maxlen;
+
+  return p - s;
+}
+#endif
+
+size_t
+strlncat(char *dst, size_t len, const char *src, size_t n)
+{
+  size_t slen;
+  size_t dlen;
+  size_t rlen;
+  size_t ncpy;
+
+  slen = strnlen(src, n);
+  dlen = strnlen(dst, len);
+
+  if (dlen < len) {
+    rlen = len - dlen;
+    ncpy = slen < rlen ? slen : (rlen - 1);
+    memcpy(dst + dlen, src, ncpy);
+    dst[dlen + ncpy] = '\0';
+  }
+
+  assert(len > slen + dlen);
+  return slen + dlen;
+}
+
+int
+websvr_request_url(http_parser *p, const char *buf, size_t len)
+{
+  struct httpd_state *context = get_context(p);
+  strlncat(context->message.request_url,
+    sizeof(context->message.request_url),
+    buf,
+    len);
+  return 0;
+}
+
+int
+websvr_header_field(http_parser *p, const char *buf, size_t len)
+{
+  struct httpd_state *context = get_context(p);
+  struct message *m = &context->message;
+
+  if (strncmp("Referer", buf, len) == 0) {
+    m->num_headers = 1;
+  } else if (strncmp("Host", buf, len) == 0) {
+    m->num_headers = 2;
+  } else if (strncmp("Upgrade", buf, len) == 0) {
+    m->num_headers = 3;
+  } else if (strncmp("Connection", buf, len) == 0) {
+    m->num_headers = 4;
+  } else if (strncmp("Sec-WebSocket-Key", buf, len) == 0) {
+    m->num_headers = 5;
+  } else if (strncmp("Origin", buf, len) == 0) {
+    m->num_headers = 6;
+  } else if (strncmp("Sec-WebSocket-Protocol", buf, len) == 0) {
+    m->num_headers = 7;
+  } else if (strncmp("Sec-WebSocket-Version", buf, len) == 0) {
+    m->num_headers = 8;
+  } else {
+    m->num_headers = 0;
+  }
+
+  return 0;
+}
+
+int
+websvr_header_value(http_parser *p, const char *buf, size_t len)
+{
+  struct httpd_state *context = get_context(p);
+  struct message *m = &context->message;
+
+  switch (m->num_headers) {
+  case 1:
+    strlncat(m->referer, sizeof(m->referer), buf, len);
+    break;
+  case 2:
+    strlncat(m->host, sizeof(m->host), buf, len);
+    break;
+  case 3:
+    strlncat(m->upgrade, sizeof(m->upgrade), buf, len);
+    break;
+  case 4:
+    strlncat(m->connection, sizeof(m->connection), buf, len);
+    break;
+  case 5:
+    strlncat(m->sec_websocket_key, sizeof(m->sec_websocket_key), buf, len);
+    break;
+  case 6:
+    strlncat(m->origin, sizeof(m->origin), buf, len);
+    break;
+  case 7:
+    strlncat(m->sec_websocket_protocol, sizeof(m->sec_websocket_protocol), buf, len);
+    break;
+  case 8:
+    strlncat(m->sec_websocket_version, sizeof(m->sec_websocket_version), buf, len);
+    break;
+  }
+
+  return 0;
+}
+
+void
+websvr_check_body_is_final(const http_parser *p)
+{
+  struct httpd_state *context = get_context(p);
+  if (context->message.body_is_final) {
+    printf("\n\n *** Error http_body_is_final() should return 1 "
+      "on last on_body callback call "
+      "but it doesn't! ***\n\n");
+    assert(0);
+  }
+  context->message.body_is_final = http_body_is_final(p);
+}
+
+int
+websvr_body(http_parser *p, const char *buf, size_t len)
+{
+  struct httpd_state *context = get_context(p);
+  strlncat(context->message.body,
+    sizeof(context->message.body),
+    buf,
+    len);
+  context->message.body_size += len;
+  websvr_check_body_is_final(p);
+  // printf("websvr_body: '%s'\n", requests[num_messages].body);
+  return 0;
+}
+
+int
+websvr_count_body(http_parser *p, const char *buf, size_t len)
+{
+  struct httpd_state *context = get_context(p);
+  assert(buf);
+  context->message.body_size += len;
+  websvr_check_body_is_final(p);
+  return 0;
+}
+
+int
+websvr_message_begin(http_parser *p)
+{
+  struct httpd_state *context = get_context(p);
+  context->message.message_begin_cb_called = TRUE;
+  return 0;
+}
+
+int
+websvr_headers_complete(http_parser *p)
+{
+  struct httpd_state *context = get_context(p);
+  context->message.method = p->method;
+  context->message.http_major = p->http_major;
+  context->message.http_minor = p->http_minor;
+  context->message.headers_complete_cb_called = TRUE;
+  context->message.should_keep_alive = http_should_keep_alive(p);
+  return 0;
+}
+
+int
+websvr_message_complete(http_parser *p)
+{
+  struct httpd_state *context = get_context(p);
+  if (context->message.should_keep_alive != http_should_keep_alive(p)) {
+    printf("\n\n *** Error http_should_keep_alive() should have same "
+      "value in both on_message_complete and on_headers_complete "
+      "but it doesn't! ***\n\n");
+    assert(0);
+  }
+
+  if (context->message.body_size &&
+    http_body_is_final(p) &&
+    !context->message.body_is_final) {
+    printf("\n\n *** Error http_body_is_final() should return 1 "
+      "on last on_body callback call "
+      "but it doesn't! ***\n\n");
+    assert(0);
+  }
+
+  context->message.message_complete_cb_called = TRUE;
+  return 0;
+}
+
+int
+websvr_response_status(http_parser *p, const char *buf, size_t len)
+{
+  struct httpd_state *context = get_context(p);
+  strlncat(context->message.response_status,
+    sizeof(context->message.response_status),
+    buf,
+    len);
+  return 0;
+}
+
+http_parser_settings websvr_settings =
+{
+  websvr_message_begin,
+  websvr_request_url,
+  websvr_response_status,
+  websvr_header_field,
+  websvr_header_value,
+  websvr_headers_complete,
+  websvr_body,
+  websvr_message_complete,
+};
+
Index: uKadecot/trunk/uip/apps/webserver/http_pcb.h
===================================================================
--- uKadecot/trunk/uip/apps/webserver/http_pcb.h	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/http_pcb.h	(revision 101)
@@ -0,0 +1,61 @@
+/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#ifndef __HTTP_PCB_H__
+#define __HTTP_PCB_H__
+
+#include "http_parser.h"
+
+#define MAX_ELEMENT_SIZE 256
+
+struct message
+{
+	enum http_method method;
+	unsigned short http_major;
+	unsigned short http_minor;
+	char request_url[MAX_ELEMENT_SIZE];
+	char response_status[64];
+	int num_headers;
+	char host[MAX_ELEMENT_SIZE];
+	char referer[MAX_ELEMENT_SIZE];
+	char upgrade[32];
+	char connection[32];
+	char sec_websocket_key[64];
+	char origin[MAX_ELEMENT_SIZE];
+	char sec_websocket_protocol[64];
+	char sec_websocket_version[4];
+	char response_key[86];
+	size_t body_size;
+	char body[MAX_ELEMENT_SIZE];
+	int should_keep_alive;
+	int headers_complete_cb_called;
+	int message_begin_cb_called;
+	int message_complete_cb_called;
+	int body_is_final;
+};
+
+#ifndef _MSC_VER
+size_t strnlen(const char *s, size_t maxlen);
+#endif
+size_t strlncat(char *dst, size_t len, const char *src, size_t n);
+extern http_parser_settings websvr_settings;
+
+#endif /* __HTTP_PCB_H__ */
Index: uKadecot/trunk/uip/apps/webserver/httpd-fs.c
===================================================================
--- uKadecot/trunk/uip/apps/webserver/httpd-fs.c	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/httpd-fs.c	(revision 101)
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) 2001, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id$
+ */
+
+#include "httpd.h"
+#include "httpd-fs.h"
+#include "pff.h"
+#include "diskio.h"
+
+//#define FILE_DUMP
+#ifdef FILE_DUMP
+#include <string.h>
+char path[256] = "";
+FATFS fs;
+#endif
+
+#ifndef NULL
+#define NULL 0
+#endif /* NULL */
+
+/*-----------------------------------------------------------------------------------*/
+#ifdef FILE_DUMP
+FRESULT scan_files (FATFS *fs, char* path, int size)
+{
+	FRESULT res;
+	FILINFO fno;
+	DIR dir;
+	int i;
+	char *fn;   /* This function assumes non-Unicode configuration */
+#if _USE_LFN
+	char LFName[256];
+	fno.lfname = LFName;
+	fno.lfsize = sizeof(LFName);
+#endif
+
+	dir.fs = fs;
+	res = pf_opendir(&dir, path);
+	if (res == FR_OK) {
+		i = strlen(path);
+		for (;;) {
+			res = pf_readdir(&dir, &fno);
+			if (res != FR_OK || fno.fname[0] == 0) break;
+#if _USE_LFN
+			fn = *fno.lfname ? fno.lfname : fno.fname;
+#else
+			fn = fno.fname;
+#endif
+			if (fno.fattrib & AM_DIR) {
+				sprintf_s(&path[i], size - i, "/%s", fn);
+				res = scan_files(fs, path, size);
+				if (res != FR_OK) break;
+				path[i] = 0;
+			} else {
+				printf("%s/%s\n", path, fn);
+			}
+		}
+	}
+
+	return res;
+}
+#endif
+/*-----------------------------------------------------------------------------------*/
+void
+httpd_fs_init(void)
+{
+#ifdef FILE_DUMP
+	FRESULT res;
+#endif
+	disk_initialize();
+#ifdef FILE_DUMP
+	if((res = pf_mount(&fs)) != FR_OK){
+		printf("pf_mount() => %d\n", res);
+		return;
+	}
+	if((res = scan_files(&fs, path, sizeof(path))) != FR_OK){
+		printf("scan_files() => %d\n", res);
+		return;
+	}
+#endif
+}
+/*-----------------------------------------------------------------------------------*/
+int
+httpd_fs_open(const char *name, struct httpd_fs_file *file)
+{
+	FRESULT res;
+	FATFS *fs = (FATFS *)&file->fs;
+
+	if (fs->fs_type == 0){
+		if((res = pf_mount(fs)) != FR_OK){
+			printf("pf_mount() => %d\n", res);
+			return 0;
+		}
+	}
+
+	if((res = pf_open(fs, name)) != FR_OK){
+		printf("pf_open(%s) => %d\n", name, res);
+		return 0;
+	}
+
+	file->pos = 0;
+	file->len = fs->fsize;
+	file->name = name;
+
+	//printf("httpd_fs_open(%s) %d\n", name, file->len);
+
+	return 1;
+}
+/*-----------------------------------------------------------------------------------*/
+int
+httpd_fs_read(struct httpd_fs_file *file, void *dst, int len)
+{
+	FRESULT ret;
+	UINT rlen;
+	FATFS *fs = (FATFS *)&file->fs;
+
+	if((ret = pf_lseek(fs, file->pos)) != FR_OK){
+		printf("pf_lseek(%d) => %d\n", file->pos, ret);
+		return 0;
+	}
+
+	if(file->pos != fs->fptr){
+		printf("pf_lseek(%d) != %d\n", file->pos, fs->fptr);
+	}
+
+	if((ret = pf_read(fs, dst, len, &rlen)) != FR_OK){
+		printf("pf_read(%x, %d) => %d\n", dst, len, ret);
+		return 0;
+	}
+
+	//printf("httpd_fs_read(%s, %d, %d) => %d\n", file->name, file->pos, len, rlen);
+
+	return rlen;
+}
+/*-----------------------------------------------------------------------------------*/
Index: uKadecot/trunk/uip/apps/webserver/httpd-fs.h
===================================================================
--- uKadecot/trunk/uip/apps/webserver/httpd-fs.h	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/httpd-fs.h	(revision 101)
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2001, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id$
+ */
+#ifndef __HTTPD_FS_H__
+#define __HTTPD_FS_H__
+
+#define HTTPD_FS_STATISTICS 0
+
+struct httpd_fs_file {
+  int pos;
+  int len;
+  const char *name;
+  char fs[64/*>sizeof(FATFS)*/];
+};
+
+/* file must be allocated by caller and will be filled in
+   by the function. */
+int httpd_fs_open(const char *name, struct httpd_fs_file *file);
+int httpd_fs_read(struct httpd_fs_file *file, void *dst, int len);
+
+#ifdef HTTPD_FS_STATISTICS
+#if HTTPD_FS_STATISTICS == 1
+u16_t httpd_fs_count(char *name);
+#endif /* HTTPD_FS_STATISTICS */
+#endif /* HTTPD_FS_STATISTICS */
+
+void httpd_fs_init(void);
+
+#endif /* __HTTPD_FS_H__ */
Index: uKadecot/trunk/uip/apps/webserver/httpd-fs/404.html
===================================================================
--- uKadecot/trunk/uip/apps/webserver/httpd-fs/404.html	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/httpd-fs/404.html	(revision 101)
@@ -0,0 +1,8 @@
+<html>
+  <body bgcolor="white">
+    <center>
+      <h1>404 - file not found</h1>
+      <h3>Go <a href="/">here</a> instead.</h3>
+    </center>
+  </body>
+</html>
Index: uKadecot/trunk/uip/apps/webserver/httpd-fs/index.html
===================================================================
--- uKadecot/trunk/uip/apps/webserver/httpd-fs/index.html	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/httpd-fs/index.html	(revision 101)
@@ -0,0 +1,112 @@
+﻿<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+    <title>コントローラWebアプリケーション</title>
+	<link rel="shortcut icon" href="favicon.ico">
+	<link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile.icons-1.4.5.min.css">
+	<link rel="stylesheet" href="themes/ecn-theme.min.css">
+	<link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile.structure-1.4.5.min.css">
+	<link rel="stylesheet" href="http://cdn.jtsage.com/datebox/1.4.5/jqm-datebox-1.4.5.css" />
+	<link rel="stylesheet" href="css/ecn_gen.css">
+	<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
+	<script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
+	<script src="js/mscorlib.min.js"></script>
+	<script src="js/linq.min.js"></script>
+	<script src="http://cdn.jtsage.com/datebox/1.4.5/jqm-datebox-1.4.5.core.min.js"></script>
+	<script src="http://cdn.jtsage.com/datebox/1.4.5/jqm-datebox-1.4.5.mode.calbox.min.js"></script>
+	<script src="http://cdn.jtsage.com/datebox/1.4.5/jqm-datebox-1.4.5.mode.datebox.min.js"></script>
+	<script src="http://cdn.jtsage.com/datebox/i18n/jqm-datebox.lang.utf8.js"></script>
+	<script src="js/ctrlui.min.js"></script>
+	<script type="text/javascript">
+		CtrlUI.main();
+	</script>
+</head>
+<body>
+	<div data-role="page" id="index">
+		<div data-role="header">
+			<h1 id="header_logo" style="margin: 0px; text-align: left; background-color: white;">
+				<a target='_blank' href="http://www.toppers.jp/index.html">
+					<img src="./imgs/logo.gif" width="353" height="74" border="0" alt="TOPPERS LOGO">
+				</a>
+			</h1>
+			<a data-role="button" href="#information" data-rel="popup" data-icon="info" class="ui-btn-right"
+				style="-webkit-border-radius: 6em; border-radius: 6em;"
+				onclick="CtrlUI.info.update(this, 'information');">情報
+			</a>
+		</div>
+        <h2><strong>TOPPERS/ECNL</strong>コントローラWebアプリケーション</h2>
+		<div data-role="panel" class="ecn-navmenu-panel" data-position="left" data-display="overlay" style="background-color: #f9f9f9;">
+			<div class="ui-field-contain" id="fs_connection_ctn">
+				<label for="fs_connection">接続</label>
+				<input type="checkbox" name="fs_connection" id="fs_connection" data-role="flipswitch" data-on-text="On" data-off-text="Off">
+			</div>
+			<button id="bt_search" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-alert ui-btn-c"
+				onclick="CtrlUI.page.search(this);">
+				機器検索
+			</button>
+			<h2>インスタンス</h2>
+			<div id="node_list" data-role="collapsibleset" data-inset="true" data-collapsed-icon="carat-r" data-expanded-icon="carat-d">
+			</div>
+			<button id="bt_set_property" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-star ui-btn-c">
+				設定
+			</button>
+			<button id="bt_get_property" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-eye ui-btn-c">
+				取得
+			</button>
+			<button id="bt_set_get_property" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-recycle ui-btn-c">
+				設定と取得
+			</button>
+			<button id="bt_kadecot" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-action ui-btn-b">
+				Kadecot App list
+			</button>
+		</div>
+		<div role="main" class="ui-content ecn-content">
+			<ul id="lv_property_list" data-role="listview" data-inset="true"></ul>
+		</div>
+		<div data-role="footer" data-position="fixed">
+			<p style="padding-left: 1em">
+				Copyright &copy; 2015 by TOPPERS Project, Inc. All Rights Reserved.
+			</p>
+			<a data-role="button" href="#setting_panel" data-icon="gear" class="ui-btn-right"
+				style="-webkit-border-radius: 6em; border-radius: 6em;">設定
+			</a>
+		</div>
+		<div data-role="popup" id="popup_dialog" data-overlay-theme="b" data-theme="b" data-dismissible="false" style="max-width: 400px;">
+			<div data-role="header" data-theme="a">
+				<h1 id="popup_dialog_caption">エラー</h1>
+			</div>
+			<div role="main" class="ui-content">
+				<h3 id="popup_dialog_title" class="ui-title">エラー</h3>
+				<p id="popup_dialog_text">エラー</p>
+				<a href="#" class="ui-btn ui-corner-all ui-shadow ui-btn-b" data-rel="back">OK</a>
+			</div>
+		</div>
+		<div id="information-screen"></div>
+		<div id="information-popup">
+			<div data-role="popup" id="information" data-theme="b">
+				<img src="js/images/ajax-loader.gif" />
+			</div>
+		</div>
+		<div data-role="panel" id="setting_panel" data-position="right" data-display="overlay" data-theme="b">
+			<h3>設定</h3>
+			<label for="txt_mac_addr">MACアドレス</label>
+			<input name="txt_mac_addr" id="txt_mac_addr" value="12:34:56:78:9A:BC" type="text">
+			<button id="bt_set_init_params" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-check ui-btn-c">
+				設定
+			</button>
+			<button id="bt_get_init_params" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-check ui-btn-c">
+				取得
+			</button>
+			<h3>ライセンス</h3>
+			<p>
+				このサイトは<a target='_blank' href="http://www.toppers.jp/license.html">TOPPERSライセンス</a>で公開しています。<br>
+				このサイトは、いくつかのJavaScriptライブラリを使用しています。サイト右上のソフトウェア情報をご覧ください。
+			</p>
+			<a href="#" data-rel="close" class="ui-btn ui-shadow ui-corner-all ui-btn-a ui-icon-delete ui-btn-icon-left ui-btn-inline">閉じる</a>
+		</div>
+	</div>
+</body>
+</html>
Index: uKadecot/trunk/uip/apps/webserver/httpd.c
===================================================================
--- uKadecot/trunk/uip/apps/webserver/httpd.c	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/httpd.c	(revision 101)
@@ -0,0 +1,444 @@
+/**
+ * \addtogroup apps
+ * @{
+ */
+
+/**
+ * \defgroup httpd Web server
+ * @{
+ * The uIP web server is a very simplistic implementation of an HTTP
+ * server. It can serve web pages and files from a read-only ROM
+ * filesystem, and provides a very small scripting language.
+
+ */
+
+/**
+ * \file
+ *         Web server
+ * \author
+ *         Adam Dunkels <adam@sics.se>
+ */
+
+
+/*
+ * Copyright (c) 2004, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id$
+ */
+
+#include "uip.h"
+#include "httpd.h"
+#include "httpd-fs.h"
+#include "http-strings.h"
+#include "base64.h"
+#include "sha1.h"
+#include "kadecot_names.h"
+#include "uip_adpt.h"
+
+#include <string.h>
+
+#define STATE_WAITING 0
+#define STATE_OUTPUT  1
+#define STATE_WS_OUTPUT  2
+
+#define ISO_nl      0x0a
+#define ISO_space   0x20
+#define ISO_bang    0x21
+#define ISO_percent 0x25
+#define ISO_period  0x2e
+#define ISO_slash   0x2f
+#define ISO_colon   0x3a
+
+#ifndef _MSC_VER
+#ifndef strcpy_s
+#define strcpy_s(s1, s1m, s2) strcpy(s1, s2)
+#endif
+
+#ifndef strncpy_s
+#define strncpy_s(dst, dsz, src, sz) strncpy(dst, src, sz)
+#endif
+#endif
+
+int httpd_strnicmp(const char *s1, const char *s2, size_t n)
+{
+	int i;
+	char c1, c2;
+
+	for(i = 0; i < n; i++, s1++, s2++){
+		c1 = *s1;
+		c2 = *s2;
+		if(c1 == '\0' && c2 == '\0')
+			return 0;
+
+		if(c1 >= 'a' && c1 <= 'z')
+			c1 += 'A' - 'a';
+
+		if(c2 >= 'a' && c2 <= 'z')
+			c2 += 'A' - 'a';
+
+		if(c1 < c2)
+			return -1;
+
+		if(c1 > c2)
+			return 1;
+	}
+
+	return 0;
+}
+
+struct websocket *websocket_getws(ID wbsid)
+{
+	struct uip_conn *conn = uip_getconn(wbsid);
+	if (conn == NULL)
+		return NULL;
+
+	return &conn->appstate.websocket;
+}
+
+/*---------------------------------------------------------------------------*/
+static unsigned short
+generate_part_of_file(void *state)
+{
+  struct httpd_state *s = (struct httpd_state *)state;
+  int len;
+
+  if (s->file.len > uip_mss()) {
+    len = uip_mss();
+  } else {
+    len = s->file.len;
+  }
+  s->len = httpd_fs_read(&s->file, uip_appdata, len);
+
+  return s->len;
+}
+/*---------------------------------------------------------------------------*/
+static
+PT_THREAD(send_file(struct httpd_state *s))
+{
+  PSOCK_BEGIN(&s->sout);
+
+  do {
+    PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s);
+    s->file.len -= s->len;
+    s->file.pos += s->len;
+  } while (s->file.len > 0);
+
+  PSOCK_END(&s->sout);
+}
+/*---------------------------------------------------------------------------*/
+static
+PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr))
+{
+  char *ptr;
+
+  PSOCK_BEGIN(&s->sout);
+
+  PSOCK_SEND_STR(&s->sout, statushdr);
+
+  PSOCK_SEND_STR(&s->sout, http_content_encoding_gzip);
+
+  ptr = strrchr(s->message.request_url, ISO_period);
+  if (ptr == NULL) {
+    PSOCK_SEND_STR(&s->sout, http_content_type_binary);
+  } else if (strncmp(http_html, ptr, 5) == 0 ||
+    strncmp(http_shtml, ptr, 6) == 0) {
+    PSOCK_SEND_STR(&s->sout, http_content_type_html);
+  } else if (strncmp(http_css, ptr, 4) == 0) {
+    PSOCK_SEND_STR(&s->sout, http_content_type_css);
+  } else if (strncmp(http_js, ptr, 3) == 0) {
+    PSOCK_SEND_STR(&s->sout, http_content_type_js);
+  } else if (strncmp(http_json, ptr, 5) == 0) {
+    PSOCK_SEND_STR(&s->sout, http_content_type_json);
+  } else if (strncmp(http_png, ptr, 4) == 0) {
+    PSOCK_SEND_STR(&s->sout, http_content_type_png);
+  } else if (strncmp(http_gif, ptr, 4) == 0) {
+    PSOCK_SEND_STR(&s->sout, http_content_type_gif);
+  } else if (strncmp(http_jpg, ptr, 4) == 0) {
+    PSOCK_SEND_STR(&s->sout, http_content_type_jpg);
+  } else if (strncmp(http_svg, ptr, 4) == 0) {
+    PSOCK_SEND_STR(&s->sout, http_content_type_svg);
+  } else {
+    PSOCK_SEND_STR(&s->sout, http_content_type_plain);
+  }
+  PSOCK_END(&s->sout);
+}
+/*---------------------------------------------------------------------------*/
+static
+PT_THREAD(handle_output(struct httpd_state *s))
+{
+  char *ptr;
+
+  PT_BEGIN(&s->outputpt);
+
+  if (!httpd_fs_open(s->message.request_url, &s->file)) {
+    httpd_fs_open(http_404_html, &s->file);
+    strcpy_s(s->message.request_url, sizeof(s->message.request_url), http_404_html);
+    PT_WAIT_THREAD(&s->outputpt,
+      send_headers(s,
+      http_header_404));
+    PT_WAIT_THREAD(&s->outputpt, send_file(s));
+  } else {
+    PT_WAIT_THREAD(&s->outputpt,
+      send_headers(s,
+      http_header_200));
+    ptr = strchr(s->message.request_url, ISO_period);
+    PT_WAIT_THREAD(&s->outputpt, send_file(s));
+  }
+
+  PSOCK_CLOSE(&s->sout);
+  PT_END(&s->outputpt);
+}
+/*---------------------------------------------------------------------------*/
+static
+PT_THREAD(send_ws_headers(struct httpd_state *s, const char *statushdr))
+{
+  PSOCK_BEGIN(&s->sout);
+
+  PSOCK_SEND_STR(&s->sout, statushdr);
+
+  PSOCK_SEND_STR(&s->sout, http_upgrade);
+  PSOCK_SEND_STR(&s->sout, s->message.upgrade);
+  PSOCK_SEND_STR(&s->sout, http_crnl);
+
+  PSOCK_SEND_STR(&s->sout, http_connection);
+  PSOCK_SEND_STR(&s->sout, s->message.connection);
+  PSOCK_SEND_STR(&s->sout, http_crnl);
+
+  PSOCK_SEND_STR(&s->sout, http_sec_websocket_accept);
+  PSOCK_SEND_STR(&s->sout, s->message.response_key);
+  PSOCK_SEND_STR(&s->sout, http_crnl);
+
+  PSOCK_SEND_STR(&s->sout, http_sec_websocket_protocol);
+  PSOCK_SEND_STR(&s->sout, s->message.sec_websocket_protocol);
+  PSOCK_SEND_STR(&s->sout, http_crnl);
+
+  PSOCK_SEND_STR(&s->sout, http_crnl);
+
+  PSOCK_END(&s->sout);
+}
+/*---------------------------------------------------------------------------*/
+static unsigned short
+generate_part_of_ws_data(void *state)
+{
+  struct httpd_state *s = (struct httpd_state *)state;
+
+  s->len = websocket_output(&s->websocket, uip_appdata, uip_mss());
+
+  return s->len;
+}
+/*---------------------------------------------------------------------------*/
+static
+PT_THREAD(send_ws_data(struct httpd_state *s))
+{
+  PSOCK_BEGIN(&s->sout);
+
+  PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_ws_data, s);
+
+  PSOCK_END(&s->sout);
+}
+/*---------------------------------------------------------------------------*/
+static
+PT_THREAD(handle_ws_output(struct httpd_state *s))
+{
+  char shaHash[20];
+  SHA_CTX sha1;
+  int len;
+
+  PT_BEGIN(&s->outputpt);
+
+  strlncat(s->message.response_key, sizeof(s->message.response_key),
+    s->message.sec_websocket_key, sizeof(s->message.sec_websocket_key));
+  len = strlncat(s->message.response_key, sizeof(s->message.response_key),
+    http_websocket_guid, sizeof(http_websocket_guid));
+  memset(shaHash, 0, sizeof(shaHash));
+  SHA1_Init(&sha1);
+  SHA1_Update(&sha1, (sha1_byte *)s->message.response_key, len);
+  SHA1_Final((sha1_byte *)shaHash, &sha1);
+  base64_encode((unsigned char *)s->message.response_key,
+    sizeof(s->message.response_key), (unsigned char *)shaHash, sizeof(shaHash));
+
+  PT_WAIT_THREAD(&s->outputpt, send_ws_headers(s, http_header_101));
+
+  s->message.response_key[0] = '\0';
+
+  do {
+    while(!websocket_newdata(&s->websocket))
+      PT_YIELD(&s->outputpt);
+
+    PT_WAIT_THREAD(&s->outputpt, send_ws_data(s));
+  } while ((s->state == STATE_WS_OUTPUT) && (!s->close_req));
+  s->state = STATE_WAITING;
+  websocket_destroy(&s->websocket);
+  s->close_req = 0;
+
+  PSOCK_CLOSE(&s->sout);
+
+  PT_END(&s->outputpt);
+}
+/*---------------------------------------------------------------------------*/
+static
+PT_THREAD(handle_input(struct httpd_state *s))
+{
+  size_t done;
+  const char *data;
+  PSOCK_BEGIN(&s->sin);
+
+  memset(&s->message, 0, sizeof(s->message));
+  http_parser_init(&s->parser, HTTP_REQUEST);
+
+  for (;;) {
+    PSOCK_WAIT_UNTIL(&s->sin, psock_newdata(&s->sin));
+
+    s->parse_pos = 0;
+    s->parse_len = uip_datalen();
+    data = &((const char *)uip_appdata)[s->parse_pos];
+    done = http_parser_execute(&s->parser, &websvr_settings, data, s->parse_len);
+    if (done != 0) {
+      s->parse_pos += done;
+      s->parse_len -= done;
+      break;
+    }
+  }
+
+  if (!s->message.message_complete_cb_called
+    && s->message.method != HTTP_GET) {
+    PSOCK_CLOSE_EXIT(&s->sin);
+  }
+
+  /* ""©"/"Èç"index.html"ÉÏX */
+  if ((s->message.request_url[0] == '\0') || ((s->message.request_url[0] == '/') && (s->message.request_url[1] == '\0'))) {
+    strncpy_s(s->message.request_url, sizeof(s->message.request_url), http_index_html, sizeof(s->message.request_url));
+  }
+
+  /*  httpd_log_file(uip_conn->ripaddr, s->message.request_url);*/
+  /*  httpd_log(s->message.referer);*/
+
+  if (httpd_strnicmp(http_websocket, s->message.upgrade, sizeof(s->message.upgrade)) == 0) {
+    s->state = STATE_WS_OUTPUT;
+
+    websocket_init(&s->websocket, uip_getid((struct uip_conn *)((intptr_t)s - offsetof(struct uip_conn, appstate))));
+    for (;;) {
+      if(s->parse_len <= 0){
+        PT_YIELD(&s->sin.pt);
+        PSOCK_WAIT_UNTIL(&s->sin, psock_newdata(&s->sin));
+
+        s->parse_pos = 0;
+        s->parse_len = uip_datalen();
+      }
+      data = &((const char *)uip_appdata)[s->parse_pos];
+      done = websocket_input(&s->websocket, (void *)data, s->parse_len);
+      if ((done != 0) || (s->websocket.rstate.opecode == connection_close)) {
+        s->close_req = 1;
+        PSOCK_CLOSE_EXIT(&s->sin);
+        break;
+      }
+      s->parse_pos = s->parse_len;
+      s->parse_len = 0;
+    }
+  }
+  else {
+    s->state = STATE_OUTPUT;
+
+    while (1) {
+      PSOCK_READTO(&s->sin, ISO_nl);
+    }
+  }
+
+  PSOCK_END(&s->sin);
+}
+/*---------------------------------------------------------------------------*/
+static void
+handle_connection(struct httpd_state *s)
+{
+  handle_input(s);
+  switch (s->state) {
+  case STATE_OUTPUT:
+    handle_output(s);
+    break;
+  case STATE_WS_OUTPUT:
+    handle_ws_output(s);
+    break;
+  }
+}
+/*---------------------------------------------------------------------------*/
+void
+httpd_appcall(void)
+{
+  struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate);
+
+  if (uip_closed() || uip_aborted() || uip_timedout()) {
+  } else if (uip_connected()) {
+    if(s->state != STATE_WS_OUTPUT){
+      PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1);
+      PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1);
+      PT_INIT(&s->outputpt);
+      s->state = STATE_WAITING;
+      /*    timer_set(&s->timer, CLOCK_SECOND * 100);*/
+      s->timer = 0;
+      handle_connection(s);
+    }
+    else {
+      handle_connection(s);
+    }
+  } else if (s != NULL) {
+    if(s->state != STATE_WS_OUTPUT){
+      if (uip_poll()) {
+        ++s->timer;
+        if (s->timer >= 20) {
+          uip_abort();
+        }
+      } else {
+        s->timer = 0;
+      }
+    }
+    handle_connection(s);
+  } else {
+    uip_abort();
+  }
+}
+/*---------------------------------------------------------------------------*/
+/**
+ * \brief      Initialize the web server
+ *
+ *             This function initializes the web server and should be
+ *             called at system boot-up.
+ */
+void
+httpd_init(void)
+{
+  uip_listen(HTONS(41314));
+
+  httpd_fs_init();
+  kadecot_names_init();
+}
+/*---------------------------------------------------------------------------*/
+/** @} */
Index: uKadecot/trunk/uip/apps/webserver/httpd.h
===================================================================
--- uKadecot/trunk/uip/apps/webserver/httpd.h	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/httpd.h	(revision 101)
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2001-2005, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id$
+ *
+ */
+
+#ifndef __HTTPD_H__
+#define __HTTPD_H__
+
+#include "psock.h"
+#include "httpd-fs.h"
+#include "http_pcb.h"
+#include "websocket.h"
+
+struct httpd_state {
+  unsigned char timer;
+  struct psock sin, sout;
+  struct pt outputpt;
+  char inputbuf[50];
+  char state;
+  struct httpd_fs_file file;
+  int len;
+  unsigned short count;
+  int parse_pos;
+  int parse_len;
+  struct http_parser parser;
+  struct http_parser_url handle;
+  struct message message;
+  struct websocket websocket;
+  int close_req;
+};
+#define get_context(p) (struct httpd_state *)((intptr_t)p - (intptr_t)&((struct httpd_state *)0)->parser)
+
+void httpd_init(void);
+void httpd_appcall(void);
+
+void httpd_log(char *msg);
+void httpd_log_file(u16_t *requester, char *file);
+
+#endif /* __HTTPD_H__ */
Index: uKadecot/trunk/uip/apps/webserver/makestrings
===================================================================
--- uKadecot/trunk/uip/apps/webserver/makestrings	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/makestrings	(revision 101)
@@ -0,0 +1,40 @@
+#!/usr/bin/perl
+
+
+sub stringify {
+  my $name = shift(@_);
+  open(OUTPUTC, "> $name.c");
+  open(OUTPUTH, "> $name.h");
+  
+  open(FILE, "$name");
+  
+  while(<FILE>) {
+    if(/(.+) "(.+)"/) {
+      $var = $1;
+      $data = $2;
+      
+      $datan = $data;
+      $datan =~ s/\\r/\r/g;
+      $datan =~ s/\\n/\n/g;
+      $datan =~ s/\\01/\01/g;      
+      $datan =~ s/\\0/\0/g;
+      
+      printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1);
+      printf(OUTPUTC "/* \"$data\" */\n");
+      printf(OUTPUTC "{");
+      for($j = 0; $j < length($datan); $j++) {
+	printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1)));
+      }
+      printf(OUTPUTC "};\n");
+      
+      printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1);
+      
+    }
+  }
+  close(OUTPUTC);
+  close(OUTPUTH);
+}
+stringify("http-strings");
+
+exit 0;
+
Index: uKadecot/trunk/uip/apps/webserver/sha1.c
===================================================================
--- uKadecot/trunk/uip/apps/webserver/sha1.c	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/sha1.c	(revision 101)
@@ -0,0 +1,160 @@
+/*
+ * sha1.c
+ *
+ * Originally witten by Steve Reid <steve@edmweb.com>
+ *
+ * Modified by Aaron D. Gifford <agifford@infowest.com>
+ *
+ * NO COPYRIGHT - THIS IS 100% IN THE PUBLIC DOMAIN
+ *
+ * The original unmodified version is available at:
+ *    ftp://ftp.funet.fi/pub/crypt/hash/sha/sha1.c
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR(S) OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <string.h>
+
+#include "sha1.h"
+
+#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
+
+/* blk0() and blk() perform the initial expand. */
+/* I got the idea of expanding during the round function from SSLeay */
+
+#ifdef LITTLE_ENDIAN
+#define blk0(i) (block->l[i] = (rol(block->l[i],24)&(sha1_quadbyte)0xFF00FF00) \
+    |(rol(block->l[i],8)&(sha1_quadbyte)0x00FF00FF))
+#else
+#define blk0(i) block->l[i]
+#endif
+
+#define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \
+    ^block->l[(i+2)&15]^block->l[i&15],1))
+
+/* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */
+#define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol(v,5);w=rol(w,30);
+#define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5);w=rol(w,30);
+#define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30);
+#define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30);
+#define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol(v,5);w=rol(w,30);
+
+typedef union _BYTE64QUAD16 {
+    sha1_byte c[64];
+    sha1_quadbyte l[16];
+} BYTE64QUAD16;
+
+/* Hash a single 512-bit block. This is the core of the algorithm. */
+void SHA1_Transform(sha1_quadbyte state[5], sha1_byte buffer[64]) {
+    sha1_quadbyte a, b, c, d, e;
+    BYTE64QUAD16 src;
+    BYTE64QUAD16 *block;
+
+    /* slow but cast-align */
+    memcpy(src.c, buffer, sizeof(sha1_byte) * 64);
+    block = &src;
+    /* Copy context->state[] to working vars */
+    a = state[0];
+    b = state[1];
+    c = state[2];
+    d = state[3];
+    e = state[4];
+    /* 4 rounds of 20 operations each. Loop unrolled. */
+    R0(a,b,c,d,e, 0); R0(e,a,b,c,d, 1); R0(d,e,a,b,c, 2); R0(c,d,e,a,b, 3);
+    R0(b,c,d,e,a, 4); R0(a,b,c,d,e, 5); R0(e,a,b,c,d, 6); R0(d,e,a,b,c, 7);
+    R0(c,d,e,a,b, 8); R0(b,c,d,e,a, 9); R0(a,b,c,d,e,10); R0(e,a,b,c,d,11);
+    R0(d,e,a,b,c,12); R0(c,d,e,a,b,13); R0(b,c,d,e,a,14); R0(a,b,c,d,e,15);
+    R1(e,a,b,c,d,16); R1(d,e,a,b,c,17); R1(c,d,e,a,b,18); R1(b,c,d,e,a,19);
+    R2(a,b,c,d,e,20); R2(e,a,b,c,d,21); R2(d,e,a,b,c,22); R2(c,d,e,a,b,23);
+    R2(b,c,d,e,a,24); R2(a,b,c,d,e,25); R2(e,a,b,c,d,26); R2(d,e,a,b,c,27);
+    R2(c,d,e,a,b,28); R2(b,c,d,e,a,29); R2(a,b,c,d,e,30); R2(e,a,b,c,d,31);
+    R2(d,e,a,b,c,32); R2(c,d,e,a,b,33); R2(b,c,d,e,a,34); R2(a,b,c,d,e,35);
+    R2(e,a,b,c,d,36); R2(d,e,a,b,c,37); R2(c,d,e,a,b,38); R2(b,c,d,e,a,39);
+    R3(a,b,c,d,e,40); R3(e,a,b,c,d,41); R3(d,e,a,b,c,42); R3(c,d,e,a,b,43);
+    R3(b,c,d,e,a,44); R3(a,b,c,d,e,45); R3(e,a,b,c,d,46); R3(d,e,a,b,c,47);
+    R3(c,d,e,a,b,48); R3(b,c,d,e,a,49); R3(a,b,c,d,e,50); R3(e,a,b,c,d,51);
+    R3(d,e,a,b,c,52); R3(c,d,e,a,b,53); R3(b,c,d,e,a,54); R3(a,b,c,d,e,55);
+    R3(e,a,b,c,d,56); R3(d,e,a,b,c,57); R3(c,d,e,a,b,58); R3(b,c,d,e,a,59);
+    R4(a,b,c,d,e,60); R4(e,a,b,c,d,61); R4(d,e,a,b,c,62); R4(c,d,e,a,b,63);
+    R4(b,c,d,e,a,64); R4(a,b,c,d,e,65); R4(e,a,b,c,d,66); R4(d,e,a,b,c,67);
+    R4(c,d,e,a,b,68); R4(b,c,d,e,a,69); R4(a,b,c,d,e,70); R4(e,a,b,c,d,71);
+    R4(d,e,a,b,c,72); R4(c,d,e,a,b,73); R4(b,c,d,e,a,74); R4(a,b,c,d,e,75);
+    R4(e,a,b,c,d,76); R4(d,e,a,b,c,77); R4(c,d,e,a,b,78); R4(b,c,d,e,a,79);
+    /* Add the working vars back into context.state[] */
+    state[0] += a;
+    state[1] += b;
+    state[2] += c;
+    state[3] += d;
+    state[4] += e;
+    /* Wipe variables */
+    a = b = c = d = e = 0;
+}
+
+
+/* SHA1_Init - Initialize new context */
+void SHA1_Init(SHA_CTX* context) {
+    /* SHA1 initialization constants */
+    context->state[0] = 0x67452301;
+    context->state[1] = 0xEFCDAB89;
+    context->state[2] = 0x98BADCFE;
+    context->state[3] = 0x10325476;
+    context->state[4] = 0xC3D2E1F0;
+    context->count[0] = context->count[1] = 0;
+}
+
+/* Run your data through this. */
+void SHA1_Update(SHA_CTX *context, sha1_byte *data, unsigned int len) {
+    unsigned int i, j;
+
+    j = (context->count[0] >> 3) & 63;
+    if ((context->count[0] += len << 3) < (len << 3)) context->count[1]++;
+    context->count[1] += (len >> 29);
+    if ((j + len) > 63) {
+        memcpy(&context->buffer[j], data, (i = 64-j));
+        SHA1_Transform(context->state, context->buffer);
+        for ( ; i + 63 < len; i += 64) {
+            SHA1_Transform(context->state, &data[i]);
+        }
+        j = 0;
+    }
+    else i = 0;
+    memcpy(&context->buffer[j], &data[i], len - i);
+}
+
+
+/* Add padding and return the message digest. */
+void SHA1_Final(sha1_byte digest[SHA1_DIGEST_LENGTH], SHA_CTX *context) {
+    sha1_quadbyte i, j;
+    sha1_byte finalcount[8];
+
+    for (i = 0; i < 8; i++) {
+        finalcount[i] = (sha1_byte)((context->count[(i >= 4 ? 0 : 1)]
+         >> ((3-(i & 3)) * 8) ) & 255);  /* Endian independent */
+    }
+    SHA1_Update(context, (sha1_byte *)"\200", 1);
+    while ((context->count[0] & 504) != 448) {
+        SHA1_Update(context, (sha1_byte *)"\0", 1);
+    }
+    /* Should cause a SHA1_Transform() */
+    SHA1_Update(context, finalcount, 8);
+    for (i = 0; i < SHA1_DIGEST_LENGTH; i++) {
+        digest[i] = (sha1_byte)
+         ((context->state[i>>2] >> ((3-(i & 3)) * 8) ) & 255);
+    }
+    /* Wipe variables */
+    i = j = 0;
+    memset(context->buffer, 0, SHA1_BLOCK_LENGTH);
+    memset(context->state, 0, SHA1_DIGEST_LENGTH);
+    memset(context->count, 0, 8);
+    memset(&finalcount, 0, 8);
+}
Index: uKadecot/trunk/uip/apps/webserver/sha1.h
===================================================================
--- uKadecot/trunk/uip/apps/webserver/sha1.h	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/sha1.h	(revision 101)
@@ -0,0 +1,80 @@
+/*
+ * sha.h
+ *
+ * Originally taken from the public domain SHA1 implementation
+ * written by by Steve Reid <steve@edmweb.com>
+ * 
+ * Modified by Aaron D. Gifford <agifford@infowest.com>
+ *
+ * NO COPYRIGHT - THIS IS 100% IN THE PUBLIC DOMAIN
+ *
+ * The original unmodified version is available at:
+ *    ftp://ftp.funet.fi/pub/crypt/hash/sha/sha1.c
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR(S) OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef __SHA1_H__
+#define __SHA1_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Define this if your machine is LITTLE_ENDIAN, otherwise #undef it: */
+#ifdef WORDS_BIGENDIAN
+# undef		LITTLE_ENDIAN
+#else
+# ifndef LITTLE_ENDIAN
+#  define	LITTLE_ENDIAN
+# endif
+#endif
+
+/* Make sure you define these types for your architecture: */
+typedef unsigned int sha1_quadbyte;	/* 4 byte type */
+typedef unsigned char sha1_byte;	/* single byte type */
+
+/*
+ * Be sure to get the above definitions right.  For instance, on my
+ * x86 based FreeBSD box, I define LITTLE_ENDIAN and use the type
+ * "unsigned long" for the quadbyte.  On FreeBSD on the Alpha, however,
+ * while I still use LITTLE_ENDIAN, I must define the quadbyte type
+ * as "unsigned int" instead.
+ */
+
+#define SHA1_BLOCK_LENGTH	64
+#define SHA1_DIGEST_LENGTH	20
+
+/* The SHA1 structure: */
+typedef struct _SHA_CTX {
+	sha1_quadbyte	state[5];
+	sha1_quadbyte	count[2];
+	sha1_byte	buffer[SHA1_BLOCK_LENGTH];
+} SHA_CTX;
+
+#ifndef NOPROTO
+void SHA1_Init(SHA_CTX *context);
+void SHA1_Update(SHA_CTX *context, sha1_byte *data, unsigned int len);
+void SHA1_Final(sha1_byte digest[SHA1_DIGEST_LENGTH],
+                   SHA_CTX* context);
+#else
+void SHA1_Init();
+void SHA1_Update();
+void SHA1_Final();
+#endif
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif
Index: uKadecot/trunk/uip/apps/webserver/webserver.h
===================================================================
--- uKadecot/trunk/uip/apps/webserver/webserver.h	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/webserver.h	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * $Id$
+ *
+ */
+#ifndef __WEBSERVER_H__
+#define __WEBSERVER_H__
+
+#include "httpd.h"
+
+typedef struct httpd_state uip_tcp_appstate_t;
+/* UIP_APPCALL: the name of the application function. This function
+   must return void and take no arguments (i.e., C type "void
+   appfunc(void)"). */
+#ifndef UIP_APPCALL
+#define UIP_APPCALL     httpd_appcall
+#endif
+
+
+#endif /* __WEBSERVER_H__ */
Index: uKadecot/trunk/uip/apps/webserver/websocket.c
===================================================================
--- uKadecot/trunk/uip/apps/webserver/websocket.c	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/websocket.c	(revision 101)
@@ -0,0 +1,285 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#include <string.h>
+#include "websocket.h"
+#include "uip.h"
+#include "kernel.h"
+#include "kernel_cfg.h"
+
+static ECN_FBS_ID cur_out_msg;
+
+void websocket_init(struct websocket *ws, ID wbsid)
+{
+	memset(ws, 0, sizeof(*ws));
+	ws->wbsid = wbsid;
+}
+
+void websocket_destroy(struct websocket *ws)
+{
+	if ((cur_out_msg.ptr != NULL) && (((ID *)cur_out_msg.ptr->_gap)[0] == ws->wbsid))
+	{
+		_ecn_fbs_del(cur_out_msg);
+		memset(&cur_out_msg, 0, sizeof(cur_out_msg));
+	}
+
+	if (ws->cur_in_msg.ptr != NULL) {
+		_ecn_fbs_del(ws->cur_in_msg);
+		memset(&ws->cur_in_msg, 0, sizeof(ws->cur_in_msg));
+	}
+
+	ws->wbsid = 0;
+}
+
+int websocket_input(struct websocket *ws, const void *data, int len)
+{
+	ws_state_t *s = &ws->rstate;
+	const u8_t *pos = (const u8_t *)data, *end = &((const u8_t *)data)[len];
+
+	for(; pos < end; pos++){
+		switch (s->state)
+		{
+		// FIN RSV1-3 OPECODE
+		case 0:
+			s->fin = (*pos & 0x80) != 0;
+			s->opecode = (enum opecode_t)(*pos & 0x0F);
+			s->state = 1;
+			break;
+		// MASK Payload len
+		case 1:
+			// MASK=0ÍNG
+			if((*pos & 0x80) == 0)
+				return -1/*MASK_ERROR*/;
+
+			switch(*pos & 0x7F){
+			case 127:
+				s->payload_len = 0;
+				s->state = 2/*7+64bit*/;
+				break;
+			case 126:
+				s->payload_len = 0;
+				s->state = 8/*7+16bit*/;
+				break;
+			default:
+				s->payload_len = *pos & 0x7F;
+				s->state = 10/*7bit*/;
+				break;
+			}
+			break;
+		// 64bit Extended payload length
+		case 2: case 3: case 4: case 5: case 6: case 7:
+		// 16bit Extended payload length
+		case 8: case 9:
+			s->payload_len = (s->payload_len << 8) + *pos;
+			s->state++;
+			break;
+		// Masking-key
+		case 10: case 11: case 12:
+			s->masking_key[s->state - 10] = *pos;
+			s->state++;
+			break;
+		case 13:
+			s->masking_key[3] = *pos;
+
+			s->data_pos = 0;
+			if (s->payload_len <= 0) {
+				s->state = 0;
+			}
+			else {
+				_ecn_fbs_cre(1, &ws->cur_in_msg);
+				s->state++;
+			}
+			break;
+		// Payload buffer
+		default:
+			_ecn_fbs_poke(ws->cur_in_msg, s->data_pos, *pos ^ s->masking_key[s->data_pos % 4]);
+
+			s->data_pos++;
+			if (s->data_pos >= s->payload_len) {
+				ER ret;
+				s->state = 0;
+				((ID *)ws->cur_in_msg.ptr->_gap)[0] = ws->wbsid;
+				ret = psnd_dtq(ecn_api_mailboxid, (intptr_t)ws->cur_in_msg.ptr);
+				if (ret != E_OK) {
+					syslog(LOG_WARNING, "websocket_input() : psnd_dtq(%d) result = %d", ecn_api_mailboxid, ret);
+					_ecn_fbs_del(ws->cur_in_msg);
+				}
+				memset(&ws->cur_in_msg, 0, sizeof(ws->cur_in_msg));
+			}
+			break;
+		}
+	}
+
+	return 0;
+}
+
+bool_t websocket_newdata(struct websocket *ws)
+{
+	ws_state_t *s = &ws->wstate;
+	struct websocket *mws;
+	ER ret;
+	ECN_FBS_ID data;
+	ID wbsid;
+
+	if(s->state != 0)
+		return true;
+
+	if (cur_out_msg.ptr != NULL)
+		return (((ID *)cur_out_msg.ptr->_gap)[0] == ws->wbsid);
+
+	for (;;) {
+		ret = prcv_dtq(WEBSOCKET_MBXID, (intptr_t *)&data.ptr);
+		if (ret == E_TMOUT)
+			return false;
+
+		if (ret != E_OK) {
+			TOPPERS_assert_abort();
+			return false;
+		}
+
+		wbsid = ((ID *)data.ptr->_gap)[0];
+		mws = websocket_getws(wbsid);
+		if ((mws != NULL) && (mws->wbsid != 0))
+			break;
+
+		_ecn_fbs_del(cur_out_msg);
+	}
+
+	cur_out_msg.ptr = data.ptr;
+
+	return (wbsid == ws->wbsid);
+}
+
+int websocket_output(struct websocket *ws, void *data, int len)
+{
+	ws_state_t *s = &ws->wstate;
+	u8_t *pos = (u8_t *)data, *end = &((u8_t *)data)[len];
+
+	for(; pos < end; pos++){
+		switch (s->state)
+		{
+		// FIN RSV1-3 OPECODE
+		case 0:
+			if ((cur_out_msg.ptr == NULL) || (((ID *)cur_out_msg.ptr->_gap)[0] != ws->wbsid))
+				return (intptr_t)pos - (intptr_t)data;
+
+			s->payload_len = _ecn_fbs_get_datalen(cur_out_msg);
+			if(s->payload_len == 0){
+				goto next;
+			}
+
+			s->fin = 1;
+			s->opecode = text_frame;
+			s->masked = 0;//
+			s->masking_key[0] = 0;//0x01;
+			s->masking_key[1] = 0;//0x23;
+			s->masking_key[2] = 0;//0x45;
+			s->masking_key[3] = 0;//0x67;
+
+			*pos = ((s->fin != 0) ? 0x80 : 0)
+				| ((char)s->opecode & 0x0F);
+			s->state = 1;
+			break;
+		// MASK Payload len
+		case 1:
+			if(s->payload_len < 126){
+				*pos = ((s->masked != 0) ? 0x80 : 0) | s->payload_len;
+				if (s->masked != 0) {
+					s->state = 10/*7bit*/;
+				}
+				else{
+					goto payload_check;
+				}
+			}
+			else if(s->payload_len < 0x10000){
+				*pos = ((s->masked != 0) ? 0x80 : 0) | 126;
+				s->state = 8/*7+16bit*/;
+			}
+			else{
+				*pos = ((s->masked != 0) ? 0x80 : 0) | 127;
+				s->state = 2/*7+64bit*/;
+			}
+			break;
+		// 64bit Extended payload length
+		case 2: case 3: case 4: case 5: case 6: case 7:
+		// 16bit Extended payload length
+		case 8: case 9:
+			*pos = (s->payload_len >> (8 * (9 - s->state)));
+			s->state++;
+			if((s->state == 10) && (s->masked == 0)){
+				goto payload_check;
+			}
+			break;
+		// Masking-key
+		case 10: case 11: case 12:
+			*pos = s->masking_key[s->state - 10];
+			s->state++;
+			break;
+		case 13:
+			*pos = s->masking_key[3];
+			s->state++;
+		payload_check:
+			s->data_pos = 0;
+			if (s->data_pos < s->payload_len)
+				s->state = 14;
+			else
+				goto next;
+			break;
+		// Payload buffer
+		default:
+			*pos = _ecn_fbs_peek(cur_out_msg, s->data_pos) ^ s->masking_key[s->data_pos % 4];
+
+			s->data_pos++;
+			if(s->data_pos >= s->payload_len){
+				goto next;
+			}
+			break;
+		next:
+			_ecn_fbs_del(cur_out_msg);
+			memset(&cur_out_msg, 0, sizeof(cur_out_msg));
+			s->state = 0;
+			websocket_newdata(ws);
+			break;
+		}
+	}
+
+	return (intptr_t)pos - (intptr_t)data;
+}
Index: uKadecot/trunk/uip/apps/webserver/websocket.h
===================================================================
--- uKadecot/trunk/uip/apps/webserver/websocket.h	(revision 101)
+++ uKadecot/trunk/uip/apps/webserver/websocket.h	(revision 101)
@@ -0,0 +1,82 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2015 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#ifndef WEBSOCKET_H
+#define WEBSOCKET_H
+
+#include "echonet_fbs.h"
+
+typedef struct ws_state
+{
+	int state;
+	int fin;
+	enum opecode_t
+	{
+		continuation_frame = 0,
+		text_frame = 1,
+		binary_frame = 2,
+		connection_close = 8,
+		ping = 9,
+		pong = 10
+	} opecode;
+	int payload_len;
+	int masked;
+	char masking_key[4];
+	int data_pos;
+} ws_state_t;
+
+struct websocket
+{
+	ID wbsid;
+	ws_state_t wstate;
+	ws_state_t rstate;
+	ECN_FBS_ID cur_in_msg;
+};
+
+void websocket_init(struct websocket *ws, ID wbsid);
+void websocket_destroy(struct websocket *ws);
+struct websocket *websocket_getws(ID wbsid);
+
+int websocket_input(struct websocket *ws, const void *data, int len);
+bool_t websocket_newdata(struct websocket *ws);
+int websocket_output(struct websocket *ws, void *data, int len);
+
+#endif  /* WEBSOCKET_H */
Index: uKadecot/trunk/uip/target/if_rx62n/ether_phy.c
===================================================================
--- uKadecot/trunk/uip/target/if_rx62n/ether_phy.c	(revision 101)
+++ uKadecot/trunk/uip/target/if_rx62n/ether_phy.c	(revision 101)
@@ -0,0 +1,372 @@
+/*
+ *  TINET (TCP/IP Protocol Stack)
+ * 
+ *  Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering
+ *                   Tomakomai National College of Technology, JAPAN
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#include "ether_phy.h"
+#include <kernel.h>
+#include "uip.h"
+#include <sil.h>
+
+#define PHY_CONTROL_REGISTER	0x00
+
+#define PHY_CONTROL_RESET			0x8000
+#define PHY_CONTROL_LOOPBACK		0x4000
+#define PHY_CONTROL_SPEED_SELECT	0x2000
+#define PHY_CONTROL_A_N_ENABLE		0x1000
+#define PHY_CONTROL_POWER_DOWN		0x0800
+#define PHY_CONTROL_ISOLATE			0x0400
+#define PHY_CONTROL_RESTART_A_N		0x0200
+#define PHY_CONTROL_DUPLEX_MODE		0x0100
+#define PHY_CONTROL_COLLISION_TEST	0x0080
+
+#define PHY_STATUS_REGISTER		0x01
+
+#define PHY_STATUS_100BASE_T4				0x8000
+#define PHY_STATUS_100BASE_TX_FULL_DUPLEX	0x4000
+#define PHY_STATUS_100BASE_TX_HALF_DUPLEX	0x2000
+#define PHY_STATUS_10BASE_T_FULL_DUPLEX		0x1000
+#define PHY_STATUS_10BASE_T_HALF_DUPLEX		0x0800
+#define PHY_STATUS_A_N_COMPLETE				0x0020
+#define PHY_STATUS_REMOTE_FAULT				0x0010
+#define PHY_STATUS_A_N_ABILITY				0x0008
+#define PHY_STATUS_LINK_STATUS				0x0004
+#define PHY_STATUS_JABBER_DETECT			0x0002
+#define PHY_STATUS_EXTENDED_CAPABILITY		0x0001
+
+#define PHY_AN_ADVERTISEMENT_REGISTER	0x04
+
+#define PHY_AN_AD_100BASE_T4				0x0200
+#define PHY_AN_AD_100BASE_TX_FULL_DUPLEX	0x0100
+#define PHY_AN_AD_100BASE_TX_HALF_DUPLEX	0x0080
+#define PHY_AN_AD_10BASE_T_FULL_DUPLEX		0x0040
+#define PHY_AN_AD_10BASE_T_HALF_DUPLEX		0x0020
+#define PHY_AN_AD_SELECTOR_FIELD			0x0001
+
+#define PHY_AN_STATUS_REGISTER	0x05
+
+#define PHY_AN_STATUS_100BASE_T4				0x0200
+#define PHY_AN_STATUS_100BASE_TX_FULL_DUPLEX	0x0100
+#define PHY_AN_STATUS_100BASE_TX_HALF_DUPLEX	0x0080
+#define PHY_AN_STATUS_10BASE_T_FULL_DUPLEX		0x0040
+#define PHY_AN_STATUS_10BASE_T_HALF_DUPLEX		0x0020
+
+static void phy_write_bit(bool_t bit);
+static void phy_release_bus();
+static bool_t phy_read_bit();
+static void phy_single_rel_bus();
+
+PHY_STATE_T phy_reset(PHY_STATE_T state, uint8_t phy_addr)
+{
+	switch(state){
+	case PHY_STATE_UNINIT:
+		/* PHYÌZbg */
+		phy_write_reg(phy_addr, PHY_CONTROL_REGISTER, PHY_CONTROL_RESET);
+
+		/* 500msÒÂ */
+		/* tslp_tsk(500); svH */
+		/* continue; */
+	case PHY_STATE_RESETING:
+		/* Zbg®¹ÌmF */
+		if((phy_read_reg(phy_addr, PHY_CONTROL_REGISTER) & PHY_CONTROL_RESET) != 0)
+			return PHY_STATE_RESETING;
+
+		return PHY_STATE_RESET;
+	default:
+		return state;
+	}
+}
+
+PHY_STATE_T phy_initialize(PHY_STATE_T state, uint8_t phy_addr, PHY_MODE_T *mode)
+{
+#ifndef __RX
+	static int reset = 0;
+#endif
+	uint16_t status;
+	*mode = (PHY_MODE_T)0;
+
+	switch(state){
+	case PHY_STATE_RESET:
+#ifndef __RX
+		reset++;
+		if(reset < 2){
+#endif
+		/* N®¹ÌmF */
+		if(!phy_is_link(phy_addr))
+			return PHY_STATE_RESET;
+#ifndef __RX
+		}
+		reset = 0;
+#endif
+		/* I[glSVG[VÌ¨mç¹ðLøÉÝè */
+		phy_write_reg(phy_addr, PHY_AN_ADVERTISEMENT_REGISTER, 
+			PHY_AN_AD_100BASE_T4 | PHY_AN_AD_100BASE_TX_FULL_DUPLEX | PHY_AN_AD_100BASE_TX_HALF_DUPLEX
+			| PHY_AN_AD_10BASE_T_FULL_DUPLEX | PHY_AN_AD_10BASE_T_HALF_DUPLEX | PHY_AN_AD_SELECTOR_FIELD);
+
+		/* I[glSVG[VðLøÉÝè */
+		phy_write_reg(phy_addr, PHY_CONTROL_REGISTER, PHY_CONTROL_SPEED_SELECT | PHY_CONTROL_A_N_ENABLE);
+
+		/* continue; */
+	case PHY_STATE_LINKED:
+#ifndef __RX
+		reset++;
+		if(reset < 2){
+#endif
+		/* I[glSVG[V®¹ÌmF */
+		if((phy_read_reg(phy_addr, PHY_STATUS_REGISTER) & PHY_STATUS_A_N_COMPLETE) == 0)
+			return PHY_STATE_LINKED;
+#ifndef __RX
+		}
+#endif
+		status = phy_read_reg(phy_addr, PHY_AN_STATUS_REGISTER);
+
+		if ((status & (PHY_AN_STATUS_100BASE_T4 | PHY_AN_STATUS_10BASE_T_FULL_DUPLEX | PHY_AN_STATUS_100BASE_TX_FULL_DUPLEX)) != 0)
+			*mode = (PHY_MODE_T)(((int)*mode) | 0x01);
+
+		if ((status & (PHY_AN_STATUS_100BASE_T4 | PHY_AN_STATUS_100BASE_TX_FULL_DUPLEX | PHY_AN_STATUS_100BASE_TX_HALF_DUPLEX)) != 0)
+			*mode = (PHY_MODE_T)(((int)*mode) | 0x02);
+
+		return PHY_STATE_NEGOTIATED;
+	}
+
+	return state;
+}
+
+bool_t phy_is_link(uint8_t phy_addr)
+{
+#ifdef __RX
+	/* NÌmF */
+	return (phy_read_reg(phy_addr, PHY_STATUS_REGISTER) & PHY_STATUS_LINK_STATUS) != 0;
+#else
+	return true;
+#endif
+}
+
+uint16_t phy_read_reg(uint8_t phy_addr, uint8_t reg_addr)
+{
+	uint16_t result = 0, bit;
+	int i;
+
+	/* PRE F32ÂÌA±µ½1b */
+	for (i = 0; i < 32; i++)
+		phy_write_bit(true);
+
+	/* ST Ft[Ìæªð¦·01bÌCg */
+	phy_write_bit(false);
+	phy_write_bit(true);
+
+	/* OP FANZXíÊð¦·R[hÌCg */
+	phy_write_bit(true);
+	phy_write_bit(false);
+
+	/* PHYAD FPHY-LSIÌAhXª1ÔÌêA00001bðCgiMSB ©çCgjB */
+	phy_write_bit((phy_addr & 0x10) != 0);
+	phy_write_bit((phy_addr & 0x08) != 0);
+	phy_write_bit((phy_addr & 0x04) != 0);
+	phy_write_bit((phy_addr & 0x02) != 0);
+	phy_write_bit((phy_addr & 0x01) != 0);
+
+	/* REGAD FWX^AhXª1ÔÌêA00001bðCgiMSB©çCgjB */
+	phy_write_bit((reg_addr & 0x10) != 0);
+	phy_write_bit((reg_addr & 0x08) != 0);
+	phy_write_bit((reg_addr & 0x04) != 0);
+	phy_write_bit((reg_addr & 0x02) != 0);
+	phy_write_bit((reg_addr & 0x01) != 0);
+
+	/* TA FMII/RMIIC^tF[XãÅf[^ÌM³ðØèÖ¦éÔ */
+	/* uoXðúviZ0Æ\Ljðs¤ */
+	phy_release_bus();
+
+	/* DATA F16rbgÌf[^BMSB©ç[h */
+	for (bit = 0x8000; bit != 0; bit >>= 1) {
+		if(phy_read_bit())
+			result |= bit;
+	}
+
+	/* IDLE FÌMIIÇtH[}bgüÍÜÅÌÒ@Ô */
+	/* ·ÅÉTAÉoXðúÏÝÅ è§äsv */
+	phy_release_bus();
+
+	return result;
+}
+
+void phy_write_reg(uint8_t phy_addr, uint8_t reg_addr, uint16_t reg_data)
+{
+	int i;
+	uint16_t bit;
+
+	/* PRE F32ÂÌA±µ½1b */
+	for (i = 0; i < 32; i++)
+		phy_write_bit(true);
+
+	/* ST Ft[Ìæªð¦·01bÌCg */
+	phy_write_bit(false);
+	phy_write_bit(true);
+
+	/* OP FANZXíÊð¦·R[hÌCg */
+	phy_write_bit(false);
+	phy_write_bit(true);
+
+	/* PHYAD FPHY-LSIÌAhXª1ÔÌêA00001bðCgiMSB ©çCgjB */
+	phy_write_bit((phy_addr & 0x10) != 0);
+	phy_write_bit((phy_addr & 0x08) != 0);
+	phy_write_bit((phy_addr & 0x04) != 0);
+	phy_write_bit((phy_addr & 0x02) != 0);
+	phy_write_bit((phy_addr & 0x01) != 0);
+
+	/* REGAD FWX^AhXª1ÔÌêA00001bðCgiMSB©çCgjB */
+	phy_write_bit((reg_addr & 0x10) != 0);
+	phy_write_bit((reg_addr & 0x08) != 0);
+	phy_write_bit((reg_addr & 0x04) != 0);
+	phy_write_bit((reg_addr & 0x02) != 0);
+	phy_write_bit((reg_addr & 0x01) != 0);
+
+	/* TA FMII/RMIIC^tF[XãÅf[^ÌM³ðØèÖ¦éÔ */
+	/* 10bðCg */
+	phy_write_bit(true);
+	phy_write_bit(false);
+
+	/* DATA F16rbgÌf[^BMSB©çCg */
+	for (bit = 0x8000; bit != 0; bit >>= 1) {
+		phy_write_bit((reg_data & bit) != 0);
+	}
+
+	/* IDLE FÌMIIÇtH[}bgüÍÜÅÌÒ@Ô */
+	/* uPÆoXðúviXÆ\Ljðs¤ */
+	phy_single_rel_bus();
+}
+
+#define ETHERC_PIR_WAIT 4
+
+/*
+ * 1 rbgf[^ÌCg
+ */
+static void phy_write_bit(bool_t bit)
+{
+	int i;
+	uint32_t data = bit ? ETHERC_PIR_MDO : 0;
+
+	/* PHYC^tF[XWX^ÖÌCg */
+	sil_wrw_mem(ETHERC_PIR, data | ETHERC_PIR_MMD | 0/*ETHERC_PIR_MDC*/);
+
+	for(i = ETHERC_PIR_WAIT; i > 0; i--);
+
+	/* PHYC^tF[XWX^ÖÌCg */
+	sil_wrw_mem(ETHERC_PIR, data | ETHERC_PIR_MMD | ETHERC_PIR_MDC);
+
+	for(i = 2 * ETHERC_PIR_WAIT; i > 0; i--);
+
+	/* PHYC^tF[XWX^ÖÌCg */
+	sil_wrw_mem(ETHERC_PIR, data | ETHERC_PIR_MMD | 0/*ETHERC_PIR_MDC*/);
+
+	for(i = ETHERC_PIR_WAIT; i > 0; i--);
+}
+
+/*
+ * oXðú
+ */
+static void phy_release_bus()
+{
+	int i;
+
+	/* PHYC^tF[XWX^ÖÌCg */
+	sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | 0/*ETHERC_PIR_MDC*/);
+
+	for(i = ETHERC_PIR_WAIT; i > 0; i--);
+
+	/* PHYC^tF[XWX^ÖÌCg */
+	sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | ETHERC_PIR_MDC);
+
+	for(i = 2 * ETHERC_PIR_WAIT; i > 0; i--);
+
+	/* PHYC^tF[XWX^ÖÌCg */
+	sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | 0/*ETHERC_PIR_MDC*/);
+
+	for(i = ETHERC_PIR_WAIT; i > 0; i--);
+}
+
+/*
+ * 1 rbgf[^Ì[h
+ */
+static bool_t phy_read_bit()
+{
+	bool_t bit;
+	int i;
+
+	for(i = ETHERC_PIR_WAIT; i > 0; i--);
+
+	/* PHYC^tF[XWX^ÖÌCg */
+	sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | ETHERC_PIR_MDC);
+
+	for(i = ETHERC_PIR_WAIT; i > 0; i--);
+
+	/* PHYC^tF[XWX^ÖÌCg */
+	bit = (sil_rew_mem(ETHERC_PIR) & ETHERC_PIR_MDI) != 0;
+
+	for(i = ETHERC_PIR_WAIT; i > 0; i--);
+
+	/* PHYC^tF[XWX^ÖÌCg */
+	sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | 0/*ETHERC_PIR_MDC*/);
+
+	for(i = ETHERC_PIR_WAIT; i > 0; i--);
+
+	return bit;
+}
+
+/*
+ * PÆoXðú
+ */
+static void phy_single_rel_bus()
+{
+	int i;
+
+	for(i = ETHERC_PIR_WAIT; i > 0; i--);
+
+	/* PHYC^tF[XWX^ÖÌCg */
+	sil_wrw_mem(ETHERC_PIR, ETHERC_PIR_MMD | ETHERC_PIR_MDC);
+
+	for(i = 2 * ETHERC_PIR_WAIT; i > 0; i--);
+
+	/* PHYC^tF[XWX^ÖÌCg */
+	sil_wrw_mem(ETHERC_PIR, 0/*ETHERC_PIR_MMD*/ | 0/*ETHERC_PIR_MDC*/);
+
+	for(i = ETHERC_PIR_WAIT; i > 0; i--);
+}
Index: uKadecot/trunk/uip/target/if_rx62n/ether_phy.h
===================================================================
--- uKadecot/trunk/uip/target/if_rx62n/ether_phy.h	(revision 101)
+++ uKadecot/trunk/uip/target/if_rx62n/ether_phy.h	(revision 101)
@@ -0,0 +1,70 @@
+/*
+ *  TINET (TCP/IP Protocol Stack)
+ * 
+ *  Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering
+ *                   Tomakomai National College of Technology, JAPAN
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#ifndef ETHER_PHY
+#define ETHER_PHY
+
+#include "if_rx62nreg.h"
+
+typedef enum _phy_mode_t{
+	PHY_MODE_10BASE_HALF	= 0x00,
+	PHY_MODE_10BASE_FULL	= 0x01,
+	PHY_MODE_100BASE_HALF	= 0x02,
+	PHY_MODE_100BASE_FULL	= 0x03,
+} PHY_MODE_T;
+
+typedef enum _phy_state_t{
+	PHY_STATE_UNINIT,
+	PHY_STATE_RESETING,
+	PHY_STATE_RESET,
+	PHY_STATE_LINKED,
+	PHY_STATE_NEGOTIATED,
+} PHY_STATE_T;
+
+extern PHY_STATE_T phy_reset(PHY_STATE_T state, uint8_t phy_addr);
+extern PHY_STATE_T phy_initialize(PHY_STATE_T state, uint8_t phy_addr, PHY_MODE_T *mode);
+extern bool_t phy_is_link(uint8_t phy_addr);
+extern uint16_t phy_read_reg(uint8_t phy_addr, uint8_t rReg);
+extern void phy_write_reg(uint8_t phy_addr, uint8_t wReg, uint16_t wdata);
+
+#endif
Index: uKadecot/trunk/uip/target/if_rx62n/if_rx62n.c
===================================================================
--- uKadecot/trunk/uip/target/if_rx62n/if_rx62n.c	(revision 101)
+++ uKadecot/trunk/uip/target/if_rx62n/if_rx62n.c	(revision 101)
@@ -0,0 +1,496 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ *
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#define CAST(type, val)		((type)(val))
+
+#include <kernel.h>
+#include <sil.h>
+#include <t_syslog.h>
+#include <string.h>
+#include "kernel_cfg.h"
+#include "kernel/kernel_impl.h"
+#include "uip_target_config.h"
+#include "uip_arp.h"
+#include "if_rx62n.h"
+#include "ether_phy.h"
+
+extern uint8_t mac_addr[ETHER_ADDR_LEN];
+
+/*
+ *  lbg[NC^tF[XÉË¶·é\tgEFAîñ 
+ */
+
+typedef struct t_rx62n_softc {
+	T_RX62N_TX_DESC *tx_write;
+	T_RX62N_RX_DESC *rx_read;
+	PHY_STATE_T state;
+} T_RX62N_SOFTC;
+
+/*
+ *  lbg[NC^tF[XÌ\tgEFAîñ
+ */
+
+/* lbg[NC^tF[XÉË¶·é\tgEFAîñ */
+
+static T_RX62N_SOFTC rx62n_softc;
+
+typedef struct t_rx62n_buf {
+	uint8_t rx_buff[NUM_IF_RX62N_RXBUF][32 * ((IF_RX62N_BUF_PAGE_SIZE + 31) / 32)];
+	uint8_t tx_buff[NUM_IF_RX62N_TXBUF][32 * ((IF_RX62N_BUF_PAGE_SIZE + 31) / 32)];
+	T_RX62N_RX_DESC rx_desc[NUM_IF_RX62N_RXBUF];
+	T_RX62N_TX_DESC tx_desc[NUM_IF_RX62N_TXBUF];
+} T_RX62N_BUF;
+
+#if defined(__RX)
+#pragma	section	ETH_MEMORY
+#endif
+T_RX62N_BUF rx62n_buf;
+#if defined(__RX)
+#pragma	section
+#endif
+
+/* lbg[NC^tF[XÉË¶µÈ¢\tgEFAîñ */
+
+T_IF_SOFTC if_softc = {
+//	{0,},						/* lbg[NC^tF[XÌAhX	*/
+//	0,							/* M^CAEg			*/
+	&rx62n_softc,				/* fBoCXË¶Ì\tgEFAîñ	*/
+};
+
+/*
+ *  ÇÏ
+ */
+
+static void rx62n_stop (T_RX62N_SOFTC *sc);
+static void rx62n_init_sub (T_IF_SOFTC *ic);
+static void rx62n_set_ecmr (T_IF_SOFTC *ic, PHY_MODE_T mode);
+
+/*
+ *  rx62n_stop -- lbg[NC^tF[Xðâ~·éB
+ * 
+ *    Ó: NIC èÝÖ~óÔÅÄÑo·±ÆB
+ */
+
+static void
+rx62n_stop (T_RX62N_SOFTC *sc)
+{
+	/* ®ì[hNA */
+	sil_wrw_mem(ETHERC_ECMR, 0x00000000);
+}
+
+/*
+ *  rx62n_init_sub -- lbg[NC^tF[XÌú»
+ * 
+ *    Ó: NIC èÝÖ~óÔÅÄÑo·±ÆB
+ */
+
+static void
+rx62n_init_sub (T_IF_SOFTC *ic)
+{
+	int i;
+	PHY_STATE_T state = PHY_STATE_UNINIT;
+
+	/* MAC\tgEGAEZbg */
+	sil_wrw_mem(EDMAC_EDMR, sil_rew_mem(EDMAC_EDMR) | EDMAC_EDMR_SWR_BIT);
+
+	/* Zbg®¹Ò¿ */
+	for (i = 0; i < 10000; i++) {
+	}
+
+	sil_wrw_mem(ETHERC_MAHR, ((uint32_t)mac_addr[0] << 24)
+		| ((uint32_t)mac_addr[1] << 16) | ((uint32_t)mac_addr[2] << 8 )
+		|  (uint32_t)mac_addr[3]);
+	sil_wrw_mem(ETHERC_MALR, ((uint32_t)mac_addr[4] << 8 )
+		| (uint32_t)mac_addr[5]);
+
+	/* PHYZbg */
+	while((state = phy_reset(state, 0)) != PHY_STATE_RESET);
+	ic->sc->state = state;
+
+	/* Clear all ETHERC status BFR, PSRTO, LCHNG, MPD, ICD */
+	sil_wrw_mem(ETHERC_ECSR, 0x00000037);
+
+	/* NÏ»èÝLø */
+	sil_wrw_mem(ETHERC_ECSIPR, sil_rew_mem(ETHERC_ECSIPR) | ETHERC_ECSIPR_LCHNGIP);
+
+	/* Clear all ETHERC and EDMAC status bits */
+	sil_wrw_mem(EDMAC_EESR, 0x47FF0F9F);
+
+	/* óMèÝLø */
+	sil_wrw_mem(EDMAC_EESIPR, (EDMAC_EESIPR_TCIP | EDMAC_EESIPR_FRIP | EDMAC_EESIPR_RDEIP | EDMAC_EESIPR_FROFIP));
+
+	/* óMt[·ãÀiobt@TCYj */
+	sil_wrw_mem(ETHERC_RFLR, IF_RX62N_BUF_PAGE_SIZE);
+
+	/* 96rbgÔiúlj */
+	sil_wrw_mem(ETHERC_IPGR, 0x00000014);
+
+	/* Set little endian mode */
+	sil_wrw_mem(EDMAC_EDMR, sil_rew_mem(EDMAC_EDMR) | EDMAC_EDMR_DE_BIT);
+
+	/* Initialize Rx descriptor list address */
+	sil_wrw_mem(EDMAC_RDLAR, (uint32_t)rx62n_buf.rx_desc);
+	/* Initialize Tx descriptor list address */
+	sil_wrw_mem(EDMAC_TDLAR, (uint32_t)rx62n_buf.tx_desc);
+	/* Copy-back status is RFE & TFE only */
+	sil_wrw_mem(EDMAC_TRSCER, 0x00000000);
+	/* Threshold of Tx_FIFO */
+	sil_wrw_mem(EDMAC_TFTR, 0x00000000);
+	/* Transmit fifo & receive fifo is 2048 bytes */
+	sil_wrw_mem(EDMAC_FDR, 0x00000707);
+	/* RR in EDRRR is under driver control */
+	sil_wrw_mem(EDMAC_RMCR, 0x00000001);
+
+	/* PHYÌú»ð£· */
+	ic->link_pre = true;
+	ic->link_now = false;
+
+	/* ^[QbgË¶ÌÝú» */
+	rx62n_inter_init();
+}
+
+/*
+ *  rx62n_set_ecmr -- ECMRWX^ÌÝè
+ */
+
+static void
+rx62n_set_ecmr (T_IF_SOFTC *ic, PHY_MODE_T mode)
+{
+	uint32_t ecmr;
+
+	ecmr = ETHERC_ECMR_RE | ETHERC_ECMR_TE/* | ETHERC_ECMR_PRM*/;
+
+	if ((mode & 0x01) != 0)
+		ecmr |= ETHERC_ECMR_DM;
+	if ((mode & 0x02) != 0)
+		ecmr |= ETHERC_ECMR_RTM;
+
+	/* ®ì[hÝè */
+	sil_wrw_mem(ETHERC_ECMR, ecmr);
+}
+
+/*
+ * rx62n_reset -- lbg[NC^tF[XðZbg·éB
+ */
+
+void
+rx62n_reset (T_IF_SOFTC *ic)
+{
+	/* NIC ©çÌèÝðÖ~·éB*/
+	dis_int(INTNO_IF_RX62N_TRX);
+
+	rx62n_stop(ic->sc);
+	rx62n_init_sub(ic);
+
+	/* NIC ©çÌèÝðÂ·éB*/
+	ena_int(INTNO_IF_RX62N_TRX);
+}
+
+/*
+ *  get_rx62n_softc -- lbg[NC^tF[XÌ\tgEFAîñðÔ·B
+ */
+
+T_IF_SOFTC *
+rx62n_get_softc (void)
+{
+	return &if_softc;
+}
+
+/*
+ * rx62n_watchdog -- lbg[NC^tF[XÌb`hbO^CAEg
+ */
+
+void
+rx62n_watchdog (T_IF_SOFTC *ic)
+{
+	rx62n_reset(ic);
+}
+
+/*
+ * rx62n_probe -- lbg[NC^tF[XÌo
+ */
+
+void
+rx62n_probe (T_IF_SOFTC *ic)
+{
+	/* ^[QbgË¶ÌoXÌú» */
+	rx62n_bus_init();
+
+	memcpy(uip_ethaddr.addr, mac_addr, sizeof(uip_ethaddr.addr));
+}
+
+/*
+ * rx62n_init -- lbg[NC^tF[XÌú»
+ */
+
+void
+rx62n_init (T_IF_SOFTC *ic)
+{
+	T_RX62N_SOFTC *sc = ic->sc;
+	T_RX62N_TX_DESC *tdsc;
+	T_RX62N_RX_DESC *rdsc;
+	int i;
+
+	/* NIC ©çÌèÝðÖ~·éB*/
+	dis_int(INTNO_IF_RX62N_TRX);
+
+	tdsc = (T_RX62N_TX_DESC *)rx62n_buf.tx_desc;
+	sc->tx_write = tdsc;
+	for ( i=0 ; i < NUM_IF_RX62N_TXBUF ; i++ ) {
+		memset(tdsc, 0, sizeof(*tdsc));
+		tdsc->tbl = 0;
+		tdsc->tba = (uint32_t)&rx62n_buf.tx_buff[i];
+		tdsc++;
+	}
+	tdsc--;
+	tdsc->tdle = 1;
+
+	rdsc = (T_RX62N_RX_DESC *)rx62n_buf.rx_desc;
+	sc->rx_read = rdsc;
+	for ( i=0 ; i < NUM_IF_RX62N_RXBUF ; i++ ) {
+		memset(rdsc, 0, sizeof(*rdsc));
+		rdsc->rbl = IF_RX62N_BUF_PAGE_SIZE;
+		rdsc->rba = (uint32_t)&rx62n_buf.rx_buff[i];
+		rdsc->rfl = 0;
+		rdsc->ract = 1;
+		rdsc++;
+	}
+	rdsc--;
+	rdsc->rdle = 1;
+
+	/* rx62n_init {ÌðÄÑo·B*/
+	rx62n_init_sub(ic);
+
+	if (sil_rew_mem(EDMAC_EDRRR) == 0) {
+		sil_wrw_mem(EDMAC_EDRRR, EDMAC_EDRRR_RR);
+	}
+
+	/* NIC ©çÌèÝðÂ·éB*/
+	ena_int(INTNO_IF_RX62N_TRX);
+}
+
+/* 
+ * rx62n_link -- NóÔÌÏ»ÉÎ·é
+ */
+bool_t
+rx62n_link(T_IF_SOFTC *ic)
+{
+	T_RX62N_SOFTC *sc = ic->sc;
+	PHY_MODE_T mode;
+
+	if(sc->state == PHY_STATE_NEGOTIATED){
+		ic->link_now = phy_is_link(0);
+		if(!ic->link_now)
+			sc->state = PHY_STATE_RESET;
+		return true;
+	}
+
+	/* PHYÌú» */
+	sc->state = phy_initialize(sc->state, 0, &mode);
+	if(sc->state != PHY_STATE_NEGOTIATED){
+		return false;
+	}
+
+	/* ECMRWX^ÌÝè */
+	rx62n_set_ecmr(ic, mode);
+	return true;
+}
+
+/*
+ * rx62n_read -- t[ÌÇÝÝ
+ */
+
+int
+rx62n_read (T_IF_SOFTC *ic, void **input)
+{
+	T_RX62N_SOFTC *sc = ic->sc;
+	T_RX62N_RX_DESC *desc;
+	uint16_t len;
+
+	if (ic->over_flow) {
+		ic->over_flow = false;
+	}
+
+	desc = sc->rx_read;
+
+	if (desc->ract != 0) {
+		return 0;
+	}
+
+	len = desc->rfl;
+	memcpy(*input, (void *)desc->rba, len);
+
+	desc->rfp = 0;
+	desc->ract = 1;
+
+	desc++;
+	if (desc == &rx62n_buf.rx_desc[NUM_IF_RX62N_RXBUF]) {
+		desc = rx62n_buf.rx_desc;
+	}
+	sc->rx_read = desc;
+
+	if (sil_rew_mem(EDMAC_EDRRR) == 0) {
+		sil_wrw_mem(EDMAC_EDRRR, EDMAC_EDRRR_RR);
+	}
+
+	if ((ic->rxb_read == ic->rxb_write) && (desc->ract == 0))
+		ic->rxb_read--;
+
+	return len;
+}
+
+/*
+ * rx62n_start -- Mt[ðobt@O·éB
+ */
+
+void
+rx62n_start (T_IF_SOFTC *ic, void *output, int size)
+{
+	T_RX62N_SOFTC *sc = ic->sc;
+	T_RX62N_TX_DESC *desc, *next;
+	uint8_t *buf = NULL;
+	int32_t len, res, pos;
+	uint32_t tfp;
+
+	for ( res = size, pos = 0; res > 0; res -= len, pos += len ) {
+		desc = sc->tx_write;
+
+		if (desc->tact != 0) {
+			break;
+		}
+
+		buf = (uint8_t *)desc->tba;
+
+		next = desc + 1;
+		if (next == &rx62n_buf.tx_desc[NUM_IF_RX62N_TXBUF]) {
+			next = rx62n_buf.tx_desc;
+		}
+		sc->tx_write = next;
+
+		len = res;
+		if ( len > IF_RX62N_BUF_PAGE_SIZE ) {
+			len = IF_RX62N_BUF_PAGE_SIZE;
+			tfp = 0x0;
+		}
+		else
+			tfp = 0x1;
+
+		if (pos == 0)
+			tfp |= 0x2;
+
+		memcpy(buf, (uint8_t *)output + pos, len);
+
+		desc->tbl = len;
+		desc->tfp = tfp;
+		desc->tact = 1;
+	}
+
+	if (sil_rew_mem(EDMAC_EDTRR) == 0) {
+		sil_wrw_mem(EDMAC_EDTRR, EDMAC_EDTRR_TR);
+	}
+}
+
+/*
+ *  RX62N Ethernet Controler óMèÝnh
+ */
+
+void
+if_rx62n_trx_handler (void)
+{
+	T_IF_SOFTC *ic;
+	T_RX62N_SOFTC *sc;
+	uint32_t ecsr, eesr, psr;
+	bool_t acttsk;
+
+	i_begin_int(INTNO_IF_RX62N_TRX);
+
+	ic = &if_softc;
+	sc = ic->sc;
+
+	ecsr = sil_rew_mem(ETHERC_ECSR);
+
+	if (ecsr & ETHERC_ECSR_LCHNG) {
+		/* ETHERCèÝvöNA */
+		sil_wrw_mem(ETHERC_ECSR, ETHERC_ECSR_LCHNG);
+
+		psr = sil_rew_mem(ETHERC_PSR);
+		ic->link_now = (psr & ETHERC_PSR_LMON) != 0;
+
+		/* NóÔÉÏ» è */
+		if (ic->link_pre != ic->link_now) {
+			/* óMèÝ */
+			acttsk = true;
+		}
+	}
+
+	eesr = sil_rew_mem(EDMAC_EESR);
+
+	if (eesr & EDMAC_EESR_FR) {
+		/* DMAèÝvöNA */
+		sil_wrw_mem(EDMAC_EESR, EDMAC_EESR_FR);
+
+		/* óMèÝ */
+		acttsk = true;
+		ic->rxb_write++;
+	}
+	if (eesr & EDMAC_EESR_TC) {
+		/* DMAèÝvöNA */
+		sil_wrw_mem(EDMAC_EESR, EDMAC_EESR_TC);
+
+		/* MèÝ */
+		acttsk = true;
+	}
+	if (eesr & (EDMAC_EESR_FROF | EDMAC_EESR_RDE)) {
+		/* DMAèÝvöNA */
+		sil_wrw_mem(EDMAC_EESR, EDMAC_EESR_FROF | EDMAC_EESR_RDE);
+
+		ic->over_flow = true;
+
+		/* óMèÝ */
+		acttsk = true;
+		ic->rxb_write++;
+	}
+
+	if(acttsk)
+		iact_tsk(UIP_TASK);
+
+	i_end_int(INTNO_IF_RX62N_TRX);
+}
Index: uKadecot/trunk/uip/target/if_rx62n/if_rx62n.cfg
===================================================================
--- uKadecot/trunk/uip/target/if_rx62n/if_rx62n.cfg	(revision 101)
+++ uKadecot/trunk/uip/target/if_rx62n/if_rx62n.cfg	(revision 101)
@@ -0,0 +1,57 @@
+/*
+ *  TINET (TCP/IP Protocol Stack)
+ * 
+ *  Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering
+ *                   Tomakomai National College of Technology, JAPAN
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *  if_rx62n RtBM
+[Vt@C
+ */
+
+#include "uip_target_config.h"
+#include "if_rx62nreg.h"
+#include "if_rx62n.h"
+
+/* èÝnh */
+
+DEF_INH(INHNO_IF_RX62N_TRX, { TA_HLNG, if_rx62n_trx_handler });
+CFG_INT(INTNO_IF_RX62N_TRX, { INTATR_IF_RX62N_TRX, INTPRI_IF_RX62N_TRX });
+
Index: uKadecot/trunk/uip/target/if_rx62n/if_rx62n.h
===================================================================
--- uKadecot/trunk/uip/target/if_rx62n/if_rx62n.h	(revision 101)
+++ uKadecot/trunk/uip/target/if_rx62n/if_rx62n.h	(revision 101)
@@ -0,0 +1,132 @@
+/*
+ *  TINET (TCP/IP Protocol Stack)
+ * 
+ *  Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering
+ *                   Tomakomai National College of Technology, JAPAN
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ * Copyright (C) 1993, David Greenman. This software may be used, modified,
+ *   copied, distributed, and sold, in both source and binary form provided
+ *   that the above copyright and these terms are retained. Under no
+ *   circumstances is the author responsible for the proper functioning
+ *   of this software, nor does the author assume any responsibility
+ *   for damages incurred with its use.
+ */
+
+#ifndef _IF_RX62N_H_
+#define _IF_RX62N_H_
+
+/*
+ *  tB[h·
+ */
+
+#define ETHER_ADDR_LEN		6	/* Ethernet (MAC) Address	*/
+
+/*
+ *  RX62N Ethernet Controler ÉÖ·éè`
+ */
+
+#define NUM_IF_RX62N_TXBUF		8	/* Mobt@			*/
+#define NUM_IF_RX62N_RXBUF		8	/* óMobt@			*/
+#define IF_RX62N_BUF_PAGE_SIZE	1518	/* obt@TCY */
+
+/*
+ *  NIC ÌIð}N
+ */
+
+#define IF_ETHER_NIC_GET_SOFTC()	rx62n_get_softc()
+#define IF_ETHER_NIC_WATCHDOG(i)	rx62n_watchdog(i)
+#define IF_ETHER_NIC_PROBE(i)		rx62n_probe(i)
+#define IF_ETHER_NIC_INIT(i)		rx62n_init(i)
+#define IF_ETHER_NIC_LINK(i)		rx62n_link(i)
+#define IF_ETHER_NIC_READ(i,b)		rx62n_read(i,b)
+#define IF_ETHER_NIC_RESET(i)		rx62n_reset(i)
+#define IF_ETHER_NIC_START(i,o,l)	rx62n_start(i,o,l)
+
+#define T_IF_ETHER_NIC_SOFTC		struct t_rx62n_softc
+struct t_if_softc {
+	//T_IF_ADDR		ifaddr;			/* lbg[NC^tF[XÌAhX	*/
+	//uint16_t		timer;			/* M^CAEg			*/
+	T_IF_ETHER_NIC_SOFTC	*sc;	/* fBoCXË¶Ì\tgEFAîñ	*/
+	uint8_t rxb_write;
+	uint8_t rxb_read;
+	bool_t link_pre;
+	bool_t link_now;
+	bool_t over_flow;
+	int udp_pos;
+};
+
+/* IPv6 ÖW */
+
+#define IF_ETHER_NIC_IN6_IFID(i,a)	get_mac6_ifid(i,a)	/* C^tF[X¯ÊqÌÝè		*/
+#define IF_ETHER_NIC_ADDMULTI(s)	rx62n_addmulti(s)		/* }`LXgAhXÌo^		*/
+
+#if !defined(TOPPERS_MACRO_ONLY) && !defined(_MACRO_ONLY)
+
+/*
+ *  OûQÆ
+ */
+
+#ifndef T_IF_SOFTC_DEFINED
+
+typedef struct t_if_softc T_IF_SOFTC;
+
+#define T_IF_SOFTC_DEFINED
+
+#endif	/* of #ifndef T_IF_SOFTC_DEFINED */
+
+/*
+ *  Ö
+ */
+
+extern T_IF_SOFTC *rx62n_get_softc(void);
+extern void rx62n_watchdog(T_IF_SOFTC *ic);
+extern void rx62n_probe(T_IF_SOFTC *ic);
+extern void rx62n_init(T_IF_SOFTC *ic);
+extern void rx62n_reset(T_IF_SOFTC *ic);
+extern bool_t rx62n_link(T_IF_SOFTC *ic);
+extern int rx62n_read(T_IF_SOFTC *ic, void **input);
+extern void rx62n_start(T_IF_SOFTC *ic, void *output, int size);
+extern ER rx62n_addmulti(T_IF_SOFTC *ic);
+extern void if_rx62n_trx_handler(void);
+
+#endif /* #if !defined(TOPPERS_MACRO_ONLY) && !defined(_MACRO_ONLY) */
+
+#endif	/* of #ifndef _IF_RX62N_H_ */
Index: uKadecot/trunk/uip/target/if_rx62n/if_rx62nreg.h
===================================================================
--- uKadecot/trunk/uip/target/if_rx62n/if_rx62nreg.h	(revision 101)
+++ uKadecot/trunk/uip/target/if_rx62n/if_rx62nreg.h	(revision 101)
@@ -0,0 +1,162 @@
+/*
+ *  TINET (TCP/IP Protocol Stack)
+ * 
+ *  Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering
+ *                   Tomakomai National College of Technology, JAPAN
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#ifndef RX62NRegH
+#define RX62NRegH
+
+#include "t_stddef.h"
+
+#define EDMAC_EDMR			((uint32_t *)0x000C0000)	/* EDMAC[hWX^ */
+#define EDMAC_EDMR_SWR_BIT	0x00000001
+#define EDMAC_EDMR_DE_BIT	0x00000040
+
+#define EDMAC_EDTRR			((uint32_t *)0x000C0008)	/* EDMACMvWX^ */
+#define EDMAC_EDTRR_TR		0x00000001
+
+#define EDMAC_EDRRR			((uint32_t *)0x000C0010)	/* EDMACóMvWX^ */
+#define EDMAC_EDRRR_RR		0x00000001
+
+#define EDMAC_TDLAR			((uint32_t *)0x000C0018)	/* MfBXNv^XgæªAhXWX^ */
+#define EDMAC_RDLAR			((uint32_t *)0x000C0020)	/* óMfBXNv^XgæªAhXWX^ */
+
+#define EDMAC_EESR			((uint32_t *)0x000C0028)	/* ETHERC/EDMACXe[^XWX^ */
+#define EDMAC_EESR_FROF		0x00010000
+#define EDMAC_EESR_RDE		0x00020000
+#define EDMAC_EESR_FR		0x00040000
+#define EDMAC_EESR_TC		0x00200000
+#define EDMAC_EESR_TWB		0x40000000
+
+#define EDMAC_EESIPR		((uint32_t *)0x000C0030)	/* ETHERC/EDMACXe[^XèÝÂWX^ */
+#define EDMAC_EESIPR_RMAFIP	0x00000080
+#define EDMAC_EESIPR_FROFIP	0x00010000
+#define EDMAC_EESIPR_RDEIP	0x00020000
+#define EDMAC_EESIPR_FRIP	0x00040000
+#define EDMAC_EESIPR_TCIP	0x00200000
+#define EDMAC_EESIPR_TWBIP	0x40000000
+
+#define EDMAC_TRSCER		((uint32_t *)0x000C0038)	/* óMXe[^XRs[w¦WX^ */
+#define EDMAC_RMFCR			((uint32_t *)0x000C0040)	/* ~Xht[JE^WX^ */
+#define EDMAC_TFTR			((uint32_t *)0x000C0048)	/* MFIFOµ«¢lwèWX^ */
+#define EDMAC_FDR			((uint32_t *)0x000C0050)	/* FIFOeÊwèWX^ */
+#define EDMAC_RMCR			((uint32_t *)0x000C0058)	/* óMû®§äWX^ */
+#define EDMAC_TFUCR			((uint32_t *)0x000C0064)	/* MFIFOA_JEg */
+#define EDMAC_RFOCR			((uint32_t *)0x000C0068)	/* óMFIFOI[ot[JEg */
+#define EDMAC_IOSR			((uint32_t *)0x000C006C)	/* ÂÊoÍMÝèWX^ */
+#define EDMAC_FCFTR			((uint32_t *)0x000C0070)	/* t[§äJnFIFOµ«¢lÝèWX^ */
+#define EDMAC_RPADIR		((uint32_t *)0x000C0078)	/* óMf[^pfBO}üÝèWX^ */
+#define EDMAC_TRIMD			((uint32_t *)0x000C007C)	/* MèÝÝèWX^ */
+#define EDMAC_RBWAR			((uint32_t *)0x000C00C8)	/* óMobt@CgAhXWX^ */
+#define EDMAC_RDFAR			((uint32_t *)0x000C00CC)	/* óMfBXNv^tFb`AhXWX^ */
+#define EDMAC_TBRAR			((uint32_t *)0x000C00D4)	/* Mobt@[hAhXWX^ */
+#define EDMAC_TDFAR			((uint32_t *)0x000C00D8)	/* MfBXNv^tFb`AhXWX^ */
+
+#define ETHERC_ECMR			((uint32_t *)0x000C0100)	/* ETHERC[hWX^ */
+#define ETHERC_ECMR_PRM		0x00000001
+#define ETHERC_ECMR_DM		0x00000002
+#define ETHERC_ECMR_RTM		0x00000004
+#define ETHERC_ECMR_TE		0x00000020
+#define ETHERC_ECMR_RE		0x00000040
+
+#define ETHERC_RFLR			((uint32_t *)0x000C0108)	/* óMt[·ãÀWX^ */
+#define ETHERC_ECSR			((uint32_t *)0x000C0110)	/* ETHERCXe[^XWX^ */
+#define ETHERC_ECSR_LCHNG	0x00000004
+#define ETHERC_ECSIPR		((uint32_t *)0x000C0118)	/* ETHERCèÝÂWX^ */
+#define ETHERC_ECSIPR_LCHNGIP	0x00000004
+#define ETHERC_PIR			((uint32_t *)0x000C0120)	/* PHYC^tF[XWX^ */
+#define ETHERC_PIR_MDC		0x00000001
+#define ETHERC_PIR_MMD		0x00000002
+#define ETHERC_PIR_MDO		0x00000004
+#define ETHERC_PIR_MDI		0x00000008
+
+#define ETHERC_PSR			((uint32_t *)0x000C0128)	/* PHYXe[^XWX^ */
+#define ETHERC_PSR_LMON		0x00000001
+
+#define ETHERC_RDMLR		((uint32_t *)0x000C0140)	/* ¶¬JE^ãÀlÝèWX^ */
+#define ETHERC_IPGR			((uint32_t *)0x000C0150)	/* IPGÝèWX^ */
+#define ETHERC_APR			((uint32_t *)0x000C0154)	/* ©®PAUSEt[ÝèWX^ */
+#define ETHERC_MPR			((uint32_t *)0x000C0158)	/* è®PAUSEt[ÝèWX^ */
+#define ETHERC_RFCF			((uint32_t *)0x000C0160)	/* óMPAUSEt[JE^ */
+#define ETHERC_TPAUSER		((uint32_t *)0x000C0164)	/* ©®PAUSEt[ÄñÝèWX^ */
+#define ETHERC_TPAUSECR		((uint32_t *)0x000C0168)	/* PAUSEt[ÄñJE^ */
+#define ETHERC_BCFRR		((uint32_t *)0x000C016C)	/* Broadcastt[óMñÝèWX^ */
+#define ETHERC_MAHR			((uint32_t *)0x000C01C0)	/* MACAhXãÊÝèWX^ */
+#define ETHERC_MALR			((uint32_t *)0x000C01C8)	/* MACAhXºÊÝèWX^ */
+#define ETHERC_TROCR		((uint32_t *)0x000C01D0)	/* MgCI[oJE^WX^ */
+#define ETHERC_CDCR			((uint32_t *)0x000C01D4)	/* xÕËoJE^WX^ */
+#define ETHERC_LCCR			((uint32_t *)0x000C01D8)	/* LAÁ¸JE^WX^ */
+#define ETHERC_CNDCR		((uint32_t *)0x000C01DC)	/* LA¢oJE^WX^ */
+#define ETHERC_CEFCR		((uint32_t *)0x000C01E4)	/* CRCG[t[óMJE^WX^ */
+#define ETHERC_FRECR		((uint32_t *)0x000C01E8)	/* t[óMG[JE^WX^ */
+#define ETHERC_TSFRCR		((uint32_t *)0x000C01EC)	/* 64oCg¢t[óMJE^WX^ */
+#define ETHERC_TLFRCR		((uint32_t *)0x000C01F0)	/* wèoCg´t[óMJE^WX^ */
+#define ETHERC_RFCR			((uint32_t *)0x000C01F4)	/* [rbgt[óMJE^WX^ */
+#define ETHERC_MAFCR		((uint32_t *)0x000C01F8)	/* }`LXgAhXt[óMJE^WX^ */
+
+/* MfBXNv^ */
+typedef struct t_rx62n_tx_desc {
+	uint32_t	tfs : 26;
+	uint32_t	twbi : 1;
+	uint32_t	tfe : 1;
+	uint32_t	tfp : 2;
+	uint32_t	tdle : 1;
+	uint32_t	tact : 1;
+	uint32_t	: 16;
+	uint32_t	tbl : 16;
+	uint32_t	tba;
+	uint32_t	binding;
+} T_RX62N_TX_DESC;
+
+/* óMfBXNv^ */
+typedef struct t_rx62n_rx_desc {
+	uint32_t	rfs : 27;
+	uint32_t	rfe : 1;
+	uint32_t	rfp : 2;
+	uint32_t	rdle : 1;
+	uint32_t	ract : 1;
+	uint32_t	rfl : 16;
+	uint32_t	rbl : 16;
+	uint32_t	rba;
+	uint32_t	binding;
+} T_RX62N_RX_DESC;
+
+#endif /* RX62NRegH */
Index: uKadecot/trunk/uip/target/if_rx62n/nic_ssp.cfg
===================================================================
--- uKadecot/trunk/uip/target/if_rx62n/nic_ssp.cfg	(revision 101)
+++ uKadecot/trunk/uip/target/if_rx62n/nic_ssp.cfg	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ *  TINET (TCP/IP Protocol Stack)
+ * 
+ *  Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering
+ *                   Tomakomai National College of Technology, JAPAN
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+/*
+ *  if_rx62n RtBM
+[Vt@C
+ */
+INCLUDE("if_rx62n.cfg");
+
Index: uKadecot/trunk/uip/target/if_rx62n/uip_nic_config.h
===================================================================
--- uKadecot/trunk/uip/target/if_rx62n/uip_nic_config.h	(revision 101)
+++ uKadecot/trunk/uip/target/if_rx62n/uip_nic_config.h	(revision 101)
@@ -0,0 +1,55 @@
+/*
+ *  TINET (TCP/IP Protocol Stack)
+ * 
+ *  Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering
+ *                   Tomakomai National College of Technology, JAPAN
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#ifndef _TINET_NIC_CONFIG_H_
+#define _TINET_NIC_CONFIG_H_
+
+/*
+ *  lbg[NC^tF[XÌà¯Ê¼Ìl[
+ */
+
+/*TODO:#include "nic_rename.h"*/
+
+#include "if_rx62n.h"
+
+#endif	/* of #ifndef _TINET_NIC_CONFIG_H_ */
Index: uKadecot/trunk/uip/task/clock-arch.h
===================================================================
--- uKadecot/trunk/uip/task/clock-arch.h	(revision 101)
+++ uKadecot/trunk/uip/task/clock-arch.h	(revision 101)
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2006, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * $Id$
+ */
+
+#ifndef __CLOCK_ARCH_H__
+#define __CLOCK_ARCH_H__
+
+typedef unsigned long clock_time_t;
+#define CLOCK_CONF_SECOND 1000
+
+void  timer_init(void);
+
+#endif /* __CLOCK_ARCH_H__ */
Index: uKadecot/trunk/uip/task/uip_adpt.c
===================================================================
--- uKadecot/trunk/uip/task/uip_adpt.c	(revision 101)
+++ uKadecot/trunk/uip/task/uip_adpt.c	(revision 101)
@@ -0,0 +1,128 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#include <kernel.h>
+#include "uip.h"
+#include "uip_adpt.h"
+#include "t_syslog.h"
+#include "kernel_cfg.h"
+
+/*
+ *  uip_taskðN®
+ */
+ER uip_start()
+{
+	ER ret;
+
+	/* uip_taskpüúnhÌN® */
+	ret = sta_cyc(UIP_CYCHDR);
+	if (ret != E_OK) {
+		syslog(LOG_DEBUG, "sta_cyc() result = %d", ret);
+		return ret;
+	}
+
+	return E_OK;
+}
+
+/*
+ *  convert_hexdigit -- 16i¨¶ñÏ·
+ */
+int_t convert_hexdigit (char *buf, uint_t val, int_t radix, int_t width, char padchar)
+{
+	static const char radhex[] = "0123456789abcdef";
+
+	char	digits[11], *start;
+	int_t	ix, pad;
+
+	ix = 0;
+	start = buf;
+	do {
+		digits[ix ++] = radhex[(val % radix) & 0x0f];
+		val /= radix;
+	} while (val != 0);
+	for (pad = ix; pad < width; pad ++)
+		*buf ++ = padchar;
+	while (ix -- > 0)
+		*buf ++ = digits[ix];
+	*buf = '\0';
+	return (int_t)(buf - start);
+}
+
+/*
+ *  ip2str -- IPv4 AhXð¶ñÉÏ··éB
+ */
+char *ip2str(char *buf, const T_IN4_ADDR ipaddr)
+{
+	char *start;
+
+	start = buf;
+	buf += convert_hexdigit(buf, (uint_t)((ipaddr[0] >> 0) & 0xff), 10, 0, ' ');
+	*(buf ++) = '.';
+	buf += convert_hexdigit(buf, (uint_t)((ipaddr[0] >> 8) & 0xff), 10, 0, ' ');
+	*(buf ++) = '.';
+	buf += convert_hexdigit(buf, (uint_t)((ipaddr[1] >> 0) & 0xff), 10, 0, ' ');
+	*(buf ++) = '.';
+	buf += convert_hexdigit(buf, (uint_t)((ipaddr[1] >> 8) & 0xff), 10, 0, ' ');
+	*buf = '\0';
+
+	return start;
+}
+
+ID uip_getid(struct uip_conn *conn)
+{
+	int index;
+
+	index = ((intptr_t)conn - (intptr_t)uip_conns) / sizeof(uip_conns[0]);
+	if ((index < 0) || (index >= sizeof(uip_conns) / sizeof(uip_conns[0])))
+		return -1;
+
+	return index + 1;
+}
+
+struct uip_conn *uip_getconn(ID connid)
+{
+	int index = connid - 1;
+
+	if ((index < 0) || (index >= sizeof(uip_conns) / sizeof(uip_conns[0])))
+		return NULL;
+
+	return &uip_conns[index];
+}
Index: uKadecot/trunk/uip/task/uip_adpt.h
===================================================================
--- uKadecot/trunk/uip/task/uip_adpt.h	(revision 101)
+++ uKadecot/trunk/uip/task/uip_adpt.h	(revision 101)
@@ -0,0 +1,99 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#ifndef __UIP_ADPT_H__
+#define __UIP_ADPT_H__
+
+#if defined __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  IPv4 AhX
+ */
+
+#define T_IN4_ADDR uip_ipaddr_t
+
+/*
+ *  ITRON TCP/IPv4 AhX/|[gÔÌè`
+ */
+
+typedef struct t_ipv4ep {
+	T_IN4_ADDR	ipaddr;		/* IPv4AhX		*/
+	u16_t		portno;		/* |[gÔ		*/
+} T_IPV4EP;
+
+#define MAKE_IPV4_ADDR(a,b,c,d) a,b,c,d
+
+typedef struct t_tcp_ccep
+{
+	T_IN4_ADDR	ripaddr;		/* [gIPv4AhX		*/
+	u16_t		rport;			/* [g|[gÔ		*/
+	u16_t		lport;			/* [J|[gÔ		*/
+	void(*callback)(struct uip_conn *uip_conn, int fncd, void *p_parblk);
+} T_TCP_CCEP;
+
+struct uip_conn *tcp_acre_cep(const T_TCP_CCEP *pk_ccep);
+int tcp_snd_dat(struct uip_conn *cepid, T_IPV4EP *p_dstaddr, void *data, int len);
+int tcp_rcv_dat(struct uip_conn *cepid, T_IPV4EP *p_srcaddr, void *data, int len);
+
+typedef struct t_udp_ccep
+{
+	T_IN4_ADDR	ripaddr;		/* [gIPv4AhX		*/
+	u16_t		rport;			/* [g|[gÔ		*/
+	u16_t		lport;			/* [J|[gÔ		*/
+	void (*callback)(struct uip_udp_conn *uip_udp_conn, int fncd, void *p_parblk);
+} T_UDP_CCEP;
+
+struct uip_udp_conn *udp_acre_cep(const T_UDP_CCEP *pk_ccep);
+int udp_snd_dat(struct uip_udp_conn *cepid, T_IPV4EP *p_dstaddr, void *data, int len);
+int udp_rcv_dat(struct uip_udp_conn *cepid, T_IPV4EP *p_srcaddr, void *data, int len);
+
+ER uip_start();
+char *ip2str(char *buf, const T_IN4_ADDR ipaddr);
+ID uip_getid(struct uip_conn *conn);
+struct uip_conn *uip_getconn(ID connid);
+
+#if defined __cplusplus
+}
+#endif
+
+#endif /* __UIP_ADPT_H__ */
Index: uKadecot/trunk/uip/task/uip_task.c
===================================================================
--- uKadecot/trunk/uip/task/uip_task.c	(revision 101)
+++ uKadecot/trunk/uip/task/uip_task.c	(revision 101)
@@ -0,0 +1,443 @@
+/*
+ * Copyright (c) 2001, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.	IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id$
+ *
+ */
+
+#include <string.h>
+#include <kernel.h>
+#include "uip.h"
+#include "uip_arp.h"
+#include "timer.h"
+#include "uip_task.h"
+#include "uip_nic_config.h"
+#include "kernel_cfg.h"
+#include "uip_adpt.h"
+#include "uip_app_config.h"
+#include "sil.h"
+
+#ifndef NULL
+#define NULL (void *)0
+#endif /* NULL */
+
+struct uip_task_t {
+	ID tskid;
+	struct pt pt;
+	struct uip_timer periodic_timer, arp_timer;
+	clock_time_t timer;
+	u8_t uip_buf[UIP_BUFSIZE + 2];
+};
+
+struct uip_task_t uiptsk = {
+	UIP_TASK
+};
+
+u8_t *uip_buf = uiptsk.uip_buf;
+
+typedef struct _uip_out_buf_t
+{
+	union {
+		struct uip_conn *tcp;
+		struct uip_udp_conn *udp;
+	} cepid;
+	uip_ipaddr_t ripaddr;
+	u16_t rport;
+	int len;
+	u8_t data[UIP_BUFSIZE + 2];
+} UIP_OUT_BUF_T;
+
+#define UIP_BUF_COUNT 6
+UIP_OUT_BUF_T uip_out_buf[UIP_BUF_COUNT];
+int uip_out_wpos = 0;
+int uip_out_rpos = 0;
+const u8_t my_ip[4] = { IPV4_ADDR_LOCAL };
+const u8_t my_netmask[4] = { IPV4_ADDR_LOCAL_MASK };
+const u8_t my_default_router[4] = { IPV4_ADDR_DEFAULT_GW };
+int ws_out_req;
+int ws_out_res;
+#ifdef __DHCPC_H__
+struct dhcpc_state *dhcpc;
+#endif
+
+/*---------------------------------------------------------------------------*/
+static
+PT_THREAD(uip_task_pt(struct uip_task_t *uiptsk))
+{
+	T_IF_SOFTC	*ic = IF_ETHER_NIC_GET_SOFTC();
+	int ret;
+
+	PT_BEGIN(&uiptsk->pt);
+
+	/* NIC ðú»·éB*/
+	IF_ETHER_NIC_PROBE(ic);
+	IF_ETHER_NIC_INIT(ic);
+
+	uip_sethostaddr(my_ip);
+	uip_setnetmask(my_netmask);
+	uip_setdraddr(my_default_router);
+
+	timer_set(&uiptsk->periodic_timer, CLOCK_SECOND / 2);
+	timer_set(&uiptsk->arp_timer, CLOCK_SECOND * 10);
+
+	uip_init();
+#ifdef __DHCPC_H__
+	dhcpc = dhcpc_init(uip_ethaddr.addr, sizeof(uip_ethaddr.addr));
+#endif
+	uip_task_init((intptr_t)uiptsk);
+
+	for (;;) {
+		sil_wrb_mem((uint8_t *)0x0008C02A, sil_reb_mem((uint8_t *)0x0008C02A) & ~0x03);
+
+		PT_WAIT_UNTIL(&uiptsk->pt, (ret = ic->link_pre != ic->link_now ? 1 :
+			(ic->rxb_read != ic->rxb_write ? 2 :
+			(uip_out_buf[uip_out_rpos].len > 0 ? 3 :
+			(ws_out_req != ws_out_res ? 4 :
+			(timer_expired(&uiptsk->periodic_timer) ? 5 : 0))))) != 0);
+
+		if(ret == 1){
+			sil_wrb_mem((uint8_t *)0x0008C02A, sil_reb_mem((uint8_t *)0x0008C02A) | 0x01);
+			if(IF_ETHER_NIC_LINK(ic)){
+				bool_t cng = ic->link_pre != ic->link_now;
+				ic->link_pre = ic->link_now;
+				if(cng && ic->link_pre){
+					sil_wrb_mem((uint8_t *)0x0008C02A, sil_reb_mem((uint8_t *)0x0008C02A) | 0x04);
+#ifdef __DHCPC_H__
+					uip_buf = uiptsk->uip_buf;
+					uip_len = 0;
+					dhcpc_request(dhcpc);
+					/* If the above function invocation resulted in data that
+						should be sent out on the network, the global variable
+						uip_len is set to a value > 0. */
+					if (uip_len > 0) {
+						uip_arp_out();
+						IF_ETHER_NIC_START(ic, uip_buf, uip_len);
+					}
+#else
+					DHCP4_CLI_SET_ADDR_CALLBACK();
+#endif
+				}
+			}
+			PT_YIELD(&uiptsk->pt);
+			continue;
+		}
+		else if (ret == 2) {
+			sil_wrb_mem((uint8_t *)0x0008C02A, sil_reb_mem((uint8_t *)0x0008C02A) | 0x02);
+			ic->rxb_read++;
+			uip_buf = uiptsk->uip_buf;
+			uip_len = IF_ETHER_NIC_READ(ic, (void **)&uip_buf);
+			if ((uip_len > 0) && (uip_buf != NULL)){
+				if (((struct uip_eth_hdr *)uip_buf)->type == htons(UIP_ETHTYPE_IP)) {
+					uip_arp_ipin();
+					uip_input();
+					/* If the above function invocation resulted in data that
+					   should be sent out on the network, the global variable
+					   uip_len is set to a value > 0. */
+					if (uip_len > 0) {
+						uip_arp_out();
+						IF_ETHER_NIC_START(ic, uip_buf, uip_len);
+						PT_YIELD(&uiptsk->pt);
+						continue;
+					}
+				}
+				else if (((struct uip_eth_hdr *)uip_buf)->type == htons(UIP_ETHTYPE_ARP)) {
+					uip_arp_arpin();
+					/* If the above function invocation resulted in data that
+					   should be sent out on the network, the global variable
+					   uip_len is set to a value > 0. */
+					if (uip_len > 0) {
+						IF_ETHER_NIC_START(ic, uip_buf, uip_len);
+						PT_YIELD(&uiptsk->pt);
+						continue;
+					}
+				}
+			}
+		}
+#if UIP_UDP
+		else if (ret == 3) {
+			UIP_OUT_BUF_T *buf = &uip_out_buf[uip_out_rpos];
+			struct uip_udp_conn *cepid = buf->cepid.udp;
+
+			sil_wrb_mem((uint8_t *)0x0008C02A, sil_reb_mem((uint8_t *)0x0008C02A) | 0x02);
+
+			uip_ipaddr_copy(cepid->ripaddr, buf->ripaddr);
+			cepid->rport = buf->rport;
+			uip_buf = buf->data;
+			uip_udp_send(buf->len);
+
+			buf->len = 0;
+			uip_out_rpos++;
+			if (uip_out_rpos >= UIP_BUF_COUNT)
+				uip_out_rpos = 0;
+
+			uip_udp_conn = cepid;
+			uip_process(UIP_UDP_SEND_CONN);
+			uip_ipaddr(cepid->ripaddr, 0, 0, 0, 0);
+			cepid->rport = 0;
+			uip_arp_out();
+			IF_ETHER_NIC_START(ic, uip_buf, uip_len);
+			PT_YIELD(&uiptsk->pt);
+			continue;
+		}
+#endif /* UIP_UDP */
+		else if (ret == 4) {
+			sil_wrb_mem((uint8_t *)0x0008C02A, sil_reb_mem((uint8_t *)0x0008C02A) | 0x02);
+			ws_out_res++;
+			for (ic->udp_pos = 0; ic->udp_pos < UIP_CONNS; ic->udp_pos++) {
+				uip_buf = uiptsk->uip_buf;
+				uip_len = 0;
+				uip_poll_conn(&uip_conns[ic->udp_pos]);
+				/* If the above function invocation resulted in data that
+				   should be sent out on the network, the global variable
+				   uip_len is set to a value > 0. */
+				if (uip_len > 0) {
+					uip_arp_out();
+					IF_ETHER_NIC_START(ic, uip_buf, uip_len);
+					PT_YIELD(&uiptsk->pt);
+				}
+			}
+		}
+		else if (ret == 5) {
+			timer_reset(&uiptsk->periodic_timer);
+			for (ic->udp_pos = 0; ic->udp_pos < UIP_CONNS; ic->udp_pos++) {
+				uip_buf = uiptsk->uip_buf;
+				uip_len = 0;
+				uip_periodic(ic->udp_pos);
+				/* If the above function invocation resulted in data that
+				   should be sent out on the network, the global variable
+				   uip_len is set to a value > 0. */
+				if (uip_len > 0) {
+					uip_arp_out();
+					IF_ETHER_NIC_START(ic, uip_buf, uip_len);
+					PT_YIELD(&uiptsk->pt);
+				}
+			}
+#if UIP_UDP
+			for (ic->udp_pos = 0; ic->udp_pos < UIP_UDP_CONNS; ic->udp_pos++) {
+				uip_buf = uiptsk->uip_buf;
+				uip_len = 0;
+				uip_udp_periodic(ic->udp_pos);
+				/* If the above function invocation resulted in data that
+				   should be sent out on the network, the global variable
+				   uip_len is set to a value > 0. */
+				if (uip_len > 0) {
+					uip_arp_out();
+					IF_ETHER_NIC_START(ic, uip_buf, uip_len);
+					PT_YIELD(&uiptsk->pt);
+				}
+			}
+#endif /* UIP_UDP */
+
+			/* Call the ARP timer function every 10 seconds. */
+			if (timer_expired(&uiptsk->arp_timer)) {
+				timer_reset(&uiptsk->arp_timer);
+				uip_buf = uiptsk->uip_buf;
+				uip_len = 0;
+				uip_arp_timer();
+			}
+		}
+	}
+
+	PT_END(&uiptsk->pt);
+}
+
+/*
+ *  uIP vgXbhN®^XN
+ */
+void uip_task(intptr_t exinf)
+{
+	struct uip_task_t *uiptsk = (struct uip_task_t *)exinf;
+
+	uip_task_pt(uiptsk);
+}
+
+/*
+ *  uIP ^XNN®püúnh[
+ */
+void uip_cychdr(intptr_t exinf)
+{
+	struct uip_task_t *uiptsk = (struct uip_task_t *)exinf;
+	uiptsk->timer++;
+#ifndef UIP_ACT_TSK_ONLY_ON_SEND
+	if(timer_expired(&uiptsk->periodic_timer))
+		(void)iact_tsk(uiptsk->tskid);
+#endif
+}
+
+struct uip_conn *
+tcp_acre_cep(const T_TCP_CCEP *pk_ccep)
+{
+	struct uip_conn *cepid;
+
+	cepid = uip_connect((uip_ipaddr_t *)&pk_ccep->ripaddr, htons(pk_ccep->rport));
+	if (cepid != NULL) {
+		//cepid->appstate.tcp_callback = pk_ccep->callback;
+	}
+
+	return cepid;
+}
+
+int
+tcp_snd_dat(struct uip_conn *cepid, T_IPV4EP *p_dstaddr, void *data, int len)
+{
+	UIP_OUT_BUF_T *buf = &uip_out_buf[uip_out_wpos];
+
+	if (buf->len == 0) {
+		buf->cepid.tcp = cepid;
+		uip_ipaddr_copy(buf->ripaddr, p_dstaddr->ipaddr);
+		buf->rport = htons(p_dstaddr->portno);
+		memcpy(&buf->data[UIP_IPTCPH_LEN + UIP_LLH_LEN], data, len);
+		uip_out_buf[uip_out_wpos].len = len;
+		uip_out_wpos++;
+		if (uip_out_wpos >= UIP_BUF_COUNT)
+			uip_out_wpos = 0;
+#ifndef UIP_ACT_TSK_ONLY_ON_SEND
+		act_tsk(UIP_TASK);
+#endif
+		return len;
+	}
+
+	return 0;
+}
+
+int
+tcp_rcv_dat(struct uip_conn *cepid, T_IPV4EP *p_srcaddr, void *data, int len)
+{
+	int rlen;
+
+	if (!uip_newdata())
+		return 0;
+
+	rlen = uip_datalen();
+	if (rlen > len)
+		rlen = len;
+
+	uip_ipaddr_copy(p_srcaddr->ipaddr, ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])->srcipaddr);
+	p_srcaddr->portno = ntohs(((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])->srcport);
+	memcpy(data, uip_appdata, rlen);
+
+	return rlen;
+}
+
+void uip_appcall(void)
+{
+	uip_tcp_appstate_t *s = &uip_conn->appstate;
+	//s->tcp_callback(uip_conn, 0, &s->parblk);
+}
+#if UIP_UDP
+/*---------------------------------------------------------------------------*/
+struct uip_udp_conn *
+udp_acre_cep(const T_UDP_CCEP *pk_ccep)
+{
+	struct uip_udp_conn *cepid;
+
+	cepid = uip_udp_new((uip_ipaddr_t *)&pk_ccep->ripaddr, htons(pk_ccep->rport));
+	if (cepid != NULL) {
+		cepid->appstate.udp_callback = pk_ccep->callback;
+		uip_udp_bind(cepid, htons(pk_ccep->lport));
+	}
+
+	return cepid;
+}
+
+int
+udp_snd_dat(struct uip_udp_conn *cepid, T_IPV4EP *p_dstaddr, void *data, int len)
+{
+	UIP_OUT_BUF_T *buf = &uip_out_buf[uip_out_wpos];
+
+	if (buf->len == 0) {
+		buf->cepid.udp = cepid;
+		uip_ipaddr_copy(buf->ripaddr, p_dstaddr->ipaddr);
+		buf->rport = htons(p_dstaddr->portno);
+		memcpy(&buf->data[UIP_IPUDPH_LEN + UIP_LLH_LEN], data, len);
+		uip_out_buf[uip_out_wpos].len = len;
+		uip_out_wpos++;
+		if (uip_out_wpos >= UIP_BUF_COUNT)
+			uip_out_wpos = 0;
+#ifndef UIP_ACT_TSK_ONLY_ON_SEND
+		act_tsk(UIP_TASK);
+#endif
+		return len;
+	}
+
+	return 0;
+}
+
+int
+udp_rcv_dat(struct uip_udp_conn *cepid, T_IPV4EP *p_srcaddr, void *data, int len)
+{
+	int rlen;
+
+	if (!uip_newdata())
+		return 0;
+
+	rlen = uip_datalen();
+	if (rlen > len)
+		rlen = len;
+
+	uip_ipaddr_copy(p_srcaddr->ipaddr, ((struct uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN])->srcipaddr);
+	p_srcaddr->portno = ntohs(((struct uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN])->srcport);
+	memcpy(data, uip_appdata, rlen);
+
+	return rlen;
+}
+
+void uip_udp_appcall(void)
+{
+	uip_udp_appstate_t *s = &uip_udp_conn->appstate;
+	s->udp_callback(uip_udp_conn, 0, &s->parblk);
+}
+#endif
+/*---------------------------------------------------------------------------*/
+void
+uip_log(char *m)
+{
+	printf("uIP log message: %s\n", m);
+}
+#ifdef __DHCPC_H__
+void
+dhcpc_configured(const struct dhcpc_state *s)
+{
+	sil_wrb_mem((uint8_t *)0x0008C02A, sil_reb_mem((uint8_t *)0x0008C02A) & ~0x04);
+	uip_sethostaddr(s->ipaddr);
+	uip_setnetmask(s->netmask);
+	uip_setdraddr(s->default_router);
+	// resolv_conf(s->dnsaddr);
+	DHCP4_CLI_SET_ADDR_CALLBACK();
+}
+#endif /* __DHCPC_H__ */
+/*---------------------------------------------------------------------------*/
+clock_time_t clock_time(void)
+{
+	return uiptsk.timer;
+}
Index: uKadecot/trunk/uip/task/uip_task.cfg
===================================================================
--- uKadecot/trunk/uip/task/uip_task.cfg	(revision 101)
+++ uKadecot/trunk/uip/task/uip_task.cfg	(revision 101)
@@ -0,0 +1,49 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#include "uip_task.h"
+
+CRE_TSK(UIP_TASK, { TA_NULL, &uiptsk, uip_task, UIP_TASK_PRIORITY, UIP_TASK_STACK_SIZE, NULL });
+
+/*
+ * uIP ^XNN®püúnh[
+ */
+CRE_CYC(UIP_CYCHDR, { TA_NULL, &uiptsk, uip_cychdr, 1, 0 });
Index: uKadecot/trunk/uip/task/uip_task.h
===================================================================
--- uKadecot/trunk/uip/task/uip_task.h	(revision 101)
+++ uKadecot/trunk/uip/task/uip_task.h	(revision 101)
@@ -0,0 +1,72 @@
+/*
+ *  TOPPERS ECHONET Lite Communication Middleware
+ * 
+ *  Copyright (C) 2014 Cores Co., Ltd. Japan
+ * 
+ *  ãLì ÒÍCÈºÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
+ *  Ai{\tgEFAðüÏµ½àÌðÜÞDÈº¯¶jðgpE¡»Eü
+ *  ÏEÄzziÈºCpÆÄÔj·é±Æð³Åø·éD
+ *  (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
+ *       \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
+ *      XR[hÉÜÜêÄ¢é±ÆD
+ *  (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«é`ÅÄzz·éêÉÍCÄzzÉº¤hL
+gip
+ *      Ò}j
+AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
+ *      Ì³ÛØKèðfÚ·é±ÆD
+ *  (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJ­Ég
+ *      pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
+ *      ÆD
+ *    (a) ÄzzÉº¤hL
+gipÒ}j
+AÈÇjÉCãLÌ
+ *        ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
+ *    (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
+ *        ñ·é±ÆD
+ *  (4) {\tgEFAÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶é¢©Èé¹
+ *      Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
+ *      Ü½C{\tgEFAÌ[UÜ½ÍGh[U©çÌ¢©Èé
+ *      RÉîÃ­¿©çàCãLì Ò¨æÑTOPPERSvWFNgð
+ *      ÆÓ·é±ÆD
+ * 
+ *  {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
+ *  æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
+ *  ÉÎ·éK«àÜßÄC¢©ÈéÛØàsíÈ¢DÜ½C{\tgEF
+ *  AÌpÉæè¼ÚIÜ½ÍÔÚIÉ¶¶½¢©Èé¹QÉÖµÄàC»
+ *  ÌÓCðíÈ¢D
+ * 
+ *  @(#) $Id$
+ */
+
+#ifndef __UIP_TASK_H__
+#define __UIP_TASK_H__
+
+#include "uip_target_config.h"
+
+#if defined __cplusplus
+extern "C" {
+#endif
+
+/*
+ *  uIP ^XNÖAÌèÌftHglÌè`
+ */ 
+#ifndef UIP_TASK_PRIORITY
+#define UIP_TASK_PRIORITY	3		/* úDæx */
+#endif /* UIP_TASK_PRIORITY */
+
+#ifndef UIP_TASK_STACK_SIZE
+#define UIP_TASK_STACK_SIZE	256	/* X^bNÌæÌTCY */
+#endif /* UIP_TASK_STACK_SIZE */
+
+extern struct uip_task_t uiptsk;
+
+void uip_task_init(intptr_t exinf);
+void uip_task(intptr_t exinf);
+void uip_cychdr(intptr_t exinf);
+
+#if defined __cplusplus
+}
+#endif
+
+#endif /* __UIP_TASK_H__ */
Index: uKadecot/trunk/uip/uip/Makefile.include
===================================================================
--- uKadecot/trunk/uip/uip/Makefile.include	(revision 101)
+++ uKadecot/trunk/uip/uip/Makefile.include	(revision 101)
@@ -0,0 +1,47 @@
+
+
+ifdef APPS
+  APPDIRS = $(foreach APP, $(APPS), ../apps/$(APP))
+  -include $(foreach APP, $(APPS), ../apps/$(APP)/Makefile.$(APP))
+  CFLAGS += $(addprefix -I../apps/,$(APPS))
+endif
+
+ifndef CCDEP
+  CCDEP = $(CC)
+endif
+ifndef CCDEPCFLAGS
+  CCDEPCFLAGS = $(CFLAGS)
+endif
+ifndef OBJECTDIR
+  OBJECTDIR = obj
+endif
+
+ifeq (${wildcard $(OBJECTDIR)},)
+  DUMMY := ${shell mkdir $(OBJECTDIR)}
+endif
+
+
+vpath %.c . ../uip ../lib $(APPDIRS)
+
+$(OBJECTDIR)/%.o: %.c
+        $(CC) $(CFLAGS) -c $< -o $@
+
+$(OBJECTDIR)/%.d: %.c
+        @set -e; rm -f $@; \
+        $(CCDEP) -MM $(CCDEPCFLAGS) $< > $@.$$$$; \
+        sed 's,\($*\)\.o[ :]*,$(OBJECTDIR)/\1.o $@ : ,g' < $@.$$$$ > $@; \
+        rm -f $@.$$$$
+
+UIP_SOURCES=uip.c uip_arp.c uiplib.c psock.c timer.c uip-neighbor.c
+
+
+ifneq ($(MAKECMDGOALS),clean)
+-include $(addprefix $(OBJECTDIR)/,$(UIP_SOURCES:.c=.d) \
+                                   $(APP_SOURCES:.c=.d))
+endif
+
+uip.a: ${addprefix $(OBJECTDIR)/, $(UIP_SOURCES:.c=.o)}
+        $(AR) rcf $@ $^
+
+apps.a: ${addprefix $(OBJECTDIR)/, $(APP_SOURCES:.c=.o)}
+        $(AR) rcf $@ $^
Index: uKadecot/trunk/uip/uip/clock.h
===================================================================
--- uKadecot/trunk/uip/uip/clock.h	(revision 101)
+++ uKadecot/trunk/uip/uip/clock.h	(revision 101)
@@ -0,0 +1,88 @@
+/**
+ * \defgroup clock Clock interface
+ *
+ * The clock interface is the interface between the \ref timer "timer library"
+ * and the platform specific clock functionality. The clock
+ * interface must be implemented for each platform that uses the \ref
+ * timer "timer library".
+ *
+ * The clock interface does only one this: it measures time. The clock
+ * interface provides a macro, CLOCK_SECOND, which corresponds to one
+ * second of system time.
+ *
+ * \sa \ref timer "Timer library"
+ *
+ * @{
+ */
+
+/*
+ * Copyright (c) 2004, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id$
+ */
+#ifndef __CLOCK_H__
+#define __CLOCK_H__
+
+#include "clock-arch.h"
+
+/**
+ * Initialize the clock library.
+ *
+ * This function initializes the clock library and should be called
+ * from the main() function of the system.
+ *
+ */
+void clock_init(void);
+
+/**
+ * Get the current clock time.
+ *
+ * This function returns the current system clock time.
+ *
+ * \return The current clock time, measured in system ticks.
+ */
+clock_time_t clock_time(void);
+
+/**
+ * A second, measured in system clock time.
+ *
+ * \hideinitializer
+ */
+#ifdef CLOCK_CONF_SECOND
+#define CLOCK_SECOND CLOCK_CONF_SECOND
+#else
+#define CLOCK_SECOND (clock_time_t)32
+#endif
+
+#endif /* __CLOCK_H__ */
+
+/** @} */
Index: uKadecot/trunk/uip/uip/lc-addrlabels.h
===================================================================
--- uKadecot/trunk/uip/uip/lc-addrlabels.h	(revision 101)
+++ uKadecot/trunk/uip/uip/lc-addrlabels.h	(revision 101)
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2004-2005, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id$
+ */
+
+/**
+ * \addtogroup lc
+ * @{
+ */
+
+/**
+ * \file
+ * Implementation of local continuations based on the "Labels as
+ * values" feature of gcc
+ * \author
+ * Adam Dunkels <adam@sics.se>
+ *
+ * This implementation of local continuations is based on a special
+ * feature of the GCC C compiler called "labels as values". This
+ * feature allows assigning pointers with the address of the code
+ * corresponding to a particular C label.
+ *
+ * For more information, see the GCC documentation:
+ * http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
+ *
+ * Thanks to dividuum for finding the nice local scope label
+ * implementation.
+ */
+
+#ifndef __LC_ADDRLABELS_H__
+#define __LC_ADDRLABELS_H__
+
+/** \hideinitializer */
+typedef void * lc_t;
+
+#define LC_INIT(s) s = NULL
+
+
+#define LC_RESUME(s)                            \
+  do {                                          \
+    if(s != NULL) {                             \
+      goto *s;                                  \
+    }                                           \
+  } while(0)
+
+#define LC_SET(s)                               \
+  do { ({ __label__ resume; resume: (s) = &&resume; }); }while(0)
+
+#define LC_END(s)
+
+#endif /* __LC_ADDRLABELS_H__ */
+
+/**  @} */
Index: uKadecot/trunk/uip/uip/lc-switch.h
===================================================================
--- uKadecot/trunk/uip/uip/lc-switch.h	(revision 101)
+++ uKadecot/trunk/uip/uip/lc-switch.h	(revision 101)
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2004-2005, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id$
+ */
+
+/**
+ * \addtogroup lc
+ * @{
+ */
+
+/**
+ * \file
+ * Implementation of local continuations based on switch() statment
+ * \author Adam Dunkels <adam@sics.se>
+ *
+ * This implementation of local continuations uses the C switch()
+ * statement to resume execution of a function somewhere inside the
+ * function's body. The implementation is based on the fact that
+ * switch() statements are able to jump directly into the bodies of
+ * control structures such as if() or while() statmenets.
+ *
+ * This implementation borrows heavily from Simon Tatham's coroutines
+ * implementation in C:
+ * http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
+ */
+
+#ifndef __LC_SWITCH_H__
+#define __LC_SWITCH_H__
+
+/* WARNING! lc implementation using switch() does not work if an
+   LC_SET() is done within another switch() statement! */
+
+/** \hideinitializer */
+typedef unsigned short lc_t;
+
+#define LC_INIT(s) s = 0;
+
+#define LC_RESUME(s) switch(s) { case 0:
+
+#define LC_SET(s) s = __LINE__; case __LINE__:
+
+#define LC_END(s) break; }
+
+#endif /* __LC_SWITCH_H__ */
+
+/** @} */
Index: uKadecot/trunk/uip/uip/lc.h
===================================================================
--- uKadecot/trunk/uip/uip/lc.h	(revision 101)
+++ uKadecot/trunk/uip/uip/lc.h	(revision 101)
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 2004-2005, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id$
+ */
+
+/**
+ * \addtogroup pt
+ * @{
+ */
+
+/**
+ * \defgroup lc Local continuations
+ * @{
+ *
+ * Local continuations form the basis for implementing protothreads. A
+ * local continuation can be <i>set</i> in a specific function to
+ * capture the state of the function. After a local continuation has
+ * been set can be <i>resumed</i> in order to restore the state of the
+ * function at the point where the local continuation was set.
+ *
+ *
+ */
+
+/**
+ * \file lc.h
+ * Local continuations
+ * \author
+ * Adam Dunkels <adam@sics.se>
+ *
+ */
+
+#ifdef DOXYGEN
+/**
+ * Initialize a local continuation.
+ *
+ * This operation initializes the local continuation, thereby
+ * unsetting any previously set continuation state.
+ *
+ * \hideinitializer
+ */
+#define LC_INIT(lc)
+
+/**
+ * Set a local continuation.
+ *
+ * The set operation saves the state of the function at the point
+ * where the operation is executed. As far as the set operation is
+ * concerned, the state of the function does <b>not</b> include the
+ * call-stack or local (automatic) variables, but only the program
+ * counter and such CPU registers that needs to be saved.
+ *
+ * \hideinitializer
+ */
+#define LC_SET(lc)
+
+/**
+ * Resume a local continuation.
+ *
+ * The resume operation resumes a previously set local continuation, thus
+ * restoring the state in which the function was when the local
+ * continuation was set. If the local continuation has not been
+ * previously set, the resume operation does nothing.
+ *
+ * \hideinitializer
+ */
+#define LC_RESUME(lc)
+
+/**
+ * Mark the end of local continuation usage.
+ *
+ * The end operation signifies that local continuations should not be
+ * used any more in the function. This operation is not needed for
+ * most implementations of local continuation, but is required by a
+ * few implementations.
+ *
+ * \hideinitializer
+ */
+#define LC_END(lc)
+
+/**
+ * \var typedef lc_t;
+ *
+ * The local continuation type.
+ *
+ * \hideinitializer
+ */
+#endif /* DOXYGEN */
+
+#ifndef __LC_H__
+#define __LC_H__
+
+#ifdef LC_CONF_INCLUDE
+#include LC_CONF_INCLUDE
+#else
+#include "lc-switch.h"
+#endif /* LC_CONF_INCLUDE */
+
+#endif /* __LC_H__ */
+
+/** @} */
+/** @} */
Index: uKadecot/trunk/uip/uip/psock.c
===================================================================
--- uKadecot/trunk/uip/uip/psock.c	(revision 101)
+++ uKadecot/trunk/uip/uip/psock.c	(revision 101)
@@ -0,0 +1,338 @@
+/*
+ * Copyright (c) 2004, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id$
+ */
+
+#include <stdio.h>
+#include <string.h>
+
+#include "uipopt.h"
+#include "psock.h"
+#include "uip.h"
+
+#define STATE_NONE 0
+#define STATE_ACKED 1
+#define STATE_READ 2
+#define STATE_BLOCKED_NEWDATA 3
+#define STATE_BLOCKED_CLOSE 4
+#define STATE_BLOCKED_SEND 5
+#define STATE_DATA_SENT 6
+
+/*
+ * Return value of the buffering functions that indicates that a
+ * buffer was not filled by incoming data.
+ *
+ */
+#define BUF_NOT_FULL 0
+#define BUF_NOT_FOUND 0
+
+/*
+ * Return value of the buffering functions that indicates that a
+ * buffer was completely filled by incoming data.
+ *
+ */
+#define BUF_FULL 1
+
+/*
+ * Return value of the buffering functions that indicates that an
+ * end-marker byte was found.
+ *
+ */
+#define BUF_FOUND 2
+
+/*---------------------------------------------------------------------------*/
+static void
+buf_setup(struct psock_buf *buf,
+          u8_t *bufptr, u16_t bufsize)
+{
+  buf->ptr = bufptr;
+  buf->left = bufsize;
+}
+/*---------------------------------------------------------------------------*/
+static u8_t
+buf_bufdata(struct psock_buf *buf, u16_t len,
+            u8_t **dataptr, u16_t *datalen)
+{
+  if(*datalen < buf->left) {
+    memcpy(buf->ptr, *dataptr, *datalen);
+    buf->ptr += *datalen;
+    buf->left -= *datalen;
+    *dataptr += *datalen;
+    *datalen = 0;
+    return BUF_NOT_FULL;
+  } else if(*datalen == buf->left) {
+    memcpy(buf->ptr, *dataptr, *datalen);
+    buf->ptr += *datalen;
+    buf->left = 0;
+    *dataptr += *datalen;
+    *datalen = 0;
+    return BUF_FULL;
+  } else {
+    memcpy(buf->ptr, *dataptr, buf->left);
+    buf->ptr += buf->left;
+    *datalen -= buf->left;
+    *dataptr += buf->left;
+    buf->left = 0;
+    return BUF_FULL;
+  }
+}
+/*---------------------------------------------------------------------------*/
+static u8_t
+buf_bufto(register struct psock_buf *buf, u8_t endmarker,
+          register u8_t **dataptr, register u16_t *datalen)
+{
+  u8_t c;
+  while(buf->left > 0 && *datalen > 0) {
+    c = *buf->ptr = **dataptr;
+    ++*dataptr;
+    ++buf->ptr;
+    --*datalen;
+    --buf->left;
+
+    if(c == endmarker) {
+      return BUF_FOUND;
+    }
+  }
+
+  if(*datalen == 0) {
+    return BUF_NOT_FOUND;
+  }
+
+  while(*datalen > 0) {
+    c = **dataptr;
+    --*datalen;
+    ++*dataptr;
+
+    if(c == endmarker) {
+      return BUF_FOUND | BUF_FULL;
+    }
+  }
+
+  return BUF_FULL;
+}
+/*---------------------------------------------------------------------------*/
+static char
+send_data(register struct psock *s)
+{
+  if(s->state != STATE_DATA_SENT || uip_rexmit()) {
+    if(s->sendlen > uip_mss()) {
+      uip_send(s->sendptr, uip_mss());
+    } else {
+      uip_send(s->sendptr, s->sendlen);
+    }
+    s->state = STATE_DATA_SENT;
+    return 1;
+  }
+  return 0;
+}
+/*---------------------------------------------------------------------------*/
+static char
+data_acked(register struct psock *s)
+{
+  if(s->state == STATE_DATA_SENT && uip_acked()) {
+    if(s->sendlen > uip_mss()) {
+      s->sendlen -= uip_mss();
+      s->sendptr += uip_mss();
+    } else {
+      s->sendptr += s->sendlen;
+      s->sendlen = 0;
+    }
+    s->state = STATE_ACKED;
+    return 1;
+  }
+  return 0;
+}
+/*---------------------------------------------------------------------------*/
+PT_THREAD(psock_send(register struct psock *s, const char *buf,
+                     unsigned int len))
+{
+  PT_BEGIN(&s->psockpt);
+
+  /* If there is no data to send, we exit immediately. */
+  if(len == 0) {
+    PT_EXIT(&s->psockpt);
+  }
+
+  /* Save the length of and a pointer to the data that is to be
+     sent. */
+  s->sendptr = buf;
+  s->sendlen = len;
+
+  s->state = STATE_NONE;
+
+  /* We loop here until all data is sent. The s->sendlen variable is
+     updated by the data_sent() function. */
+  while(s->sendlen > 0) {
+
+    /*
+     * The condition for this PT_WAIT_UNTIL is a little tricky: the
+     * protothread will wait here until all data has been acknowledged
+     * (data_acked() returns true) and until all data has been sent
+     * (send_data() returns true). The two functions data_acked() and
+     * send_data() must be called in succession to ensure that all
+     * data is sent. Therefore the & operator is used instead of the
+     * && operator, which would cause only the data_acked() function
+     * to be called when it returns false.
+     */
+    PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s));
+  }
+
+  s->state = STATE_NONE;
+
+  PT_END(&s->psockpt);
+}
+/*---------------------------------------------------------------------------*/
+PT_THREAD(psock_generator_send(register struct psock *s,
+                               unsigned short (*generate)(void *), void *arg))
+{
+  PT_BEGIN(&s->psockpt);
+
+  /* Ensure that there is a generator function to call. */
+  if(generate == NULL) {
+    PT_EXIT(&s->psockpt);
+  }
+
+  /* Call the generator function to generate the data in the
+     uip_appdata buffer. */
+  s->sendlen = generate(arg);
+  s->sendptr = uip_appdata;
+
+  s->state = STATE_NONE;
+  do {
+    /* Call the generator function again if we are called to perform a
+       retransmission. */
+    if(uip_rexmit()) {
+      generate(arg);
+    }
+    /* Wait until all data is sent and acknowledged. */
+    PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s));
+  } while(s->sendlen > 0);
+
+  s->state = STATE_NONE;
+
+  PT_END(&s->psockpt);
+}
+/*---------------------------------------------------------------------------*/
+u16_t
+psock_datalen(struct psock *psock)
+{
+  return psock->bufsize - psock->buf.left;
+}
+/*---------------------------------------------------------------------------*/
+char
+psock_newdata(struct psock *s)
+{
+  if(s->readlen > 0) {
+    /* There is data in the uip_appdata buffer that has not yet been
+       read with the PSOCK_READ functions. */
+    return 1;
+  } else if(s->state == STATE_READ) {
+    /* All data in uip_appdata buffer already consumed. */
+    s->state = STATE_BLOCKED_NEWDATA;
+    return 0;
+  } else if(uip_newdata()) {
+    /* There is new data that has not been consumed. */
+    return 1;
+  } else {
+    /* There is no new data. */
+    return 0;
+  }
+}
+/*---------------------------------------------------------------------------*/
+PT_THREAD(psock_readto(register struct psock *psock, unsigned char c))
+{
+  PT_BEGIN(&psock->psockpt);
+
+  buf_setup(&psock->buf, psock->bufptr, psock->bufsize);
+
+  /* XXX: Should add buf_checkmarker() before do{} loop, if
+     incoming data has been handled while waiting for a write. */
+
+  do {
+    if(psock->readlen == 0) {
+      PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock));
+      psock->state = STATE_READ;
+      psock->readptr = (u8_t *)uip_appdata;
+      psock->readlen = uip_datalen();
+    }
+  } while((buf_bufto(&psock->buf, c,
+                     &psock->readptr,
+                     &psock->readlen) & BUF_FOUND) == 0);
+
+  if(psock_datalen(psock) == 0) {
+    psock->state = STATE_NONE;
+    PT_RESTART(&psock->psockpt);
+  }
+  PT_END(&psock->psockpt);
+}
+/*---------------------------------------------------------------------------*/
+PT_THREAD(psock_readbuf(register struct psock *psock))
+{
+  PT_BEGIN(&psock->psockpt);
+
+  buf_setup(&psock->buf, psock->bufptr, psock->bufsize);
+
+  /* XXX: Should add buf_checkmarker() before do{} loop, if
+     incoming data has been handled while waiting for a write. */
+
+  do {
+    if(psock->readlen == 0) {
+      PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock));
+      printf("Waited for newdata\n");
+      psock->state = STATE_READ;
+      psock->readptr = (u8_t *)uip_appdata;
+      psock->readlen = uip_datalen();
+    }
+  } while(buf_bufdata(&psock->buf, psock->bufsize,
+                         &psock->readptr,
+                         &psock->readlen) != BUF_FULL);
+
+  if(psock_datalen(psock) == 0) {
+    psock->state = STATE_NONE;
+    PT_RESTART(&psock->psockpt);
+  }
+  PT_END(&psock->psockpt);
+}
+/*---------------------------------------------------------------------------*/
+void
+psock_init(register struct psock *psock, char *buffer, unsigned int buffersize)
+{
+  psock->state = STATE_NONE;
+  psock->readlen = 0;
+  psock->bufptr = buffer;
+  psock->bufsize = buffersize;
+  buf_setup(&psock->buf, buffer, buffersize);
+  PT_INIT(&psock->pt);
+  PT_INIT(&psock->psockpt);
+}
+/*---------------------------------------------------------------------------*/
Index: uKadecot/trunk/uip/uip/psock.h
===================================================================
--- uKadecot/trunk/uip/uip/psock.h	(revision 101)
+++ uKadecot/trunk/uip/uip/psock.h	(revision 101)
@@ -0,0 +1,380 @@
+/*
+ * Copyright (c) 2004, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id$
+ */
+
+/**
+ * \defgroup psock Protosockets library
+ * @{
+ *
+ * The protosocket library provides an interface to the uIP stack that is
+ * similar to the traditional BSD socket interface. Unlike programs
+ * written for the ordinary uIP event-driven interface, programs
+ * written with the protosocket library are executed in a sequential
+ * fashion and does not have to be implemented as explicit state
+ * machines.
+ *
+ * Protosockets only work with TCP connections.
+ *
+ * The protosocket library uses \ref pt protothreads to provide
+ * sequential control flow. This makes the protosockets lightweight in
+ * terms of memory, but also means that protosockets inherits the
+ * functional limitations of protothreads. Each protosocket lives only
+ * within a single function. Automatic variables (stack variables) are
+ * not retained across a protosocket library function call.
+ *
+ * \note Because the protosocket library uses protothreads, local
+ * variables will not always be saved across a call to a protosocket
+ * library function. It is therefore advised that local variables are
+ * used with extreme care.
+ *
+ * The protosocket library provides functions for sending data without
+ * having to deal with retransmissions and acknowledgements, as well
+ * as functions for reading data without having to deal with data
+ * being split across more than one TCP segment.
+ *
+ * Because each protosocket runs as a protothread, the protosocket has to be
+ * started with a call to PSOCK_BEGIN() at the start of the function
+ * in which the protosocket is used. Similarly, the protosocket protothread can
+ * be terminated by a call to PSOCK_EXIT().
+ *
+ */
+
+/**
+ * \file
+ * Protosocket library header file
+ * \author
+ * Adam Dunkels <adam@sics.se>
+ *
+ */
+
+#ifndef __PSOCK_H__
+#define __PSOCK_H__
+
+#include "uipopt.h"
+#include "pt.h"
+
+ /*
+ * The structure that holds the state of a buffer.
+ *
+ * This structure holds the state of a uIP buffer. The structure has
+ * no user-visible elements, but is used through the functions
+ * provided by the library.
+ *
+ */
+struct psock_buf {
+  u8_t *ptr;
+  unsigned short left;
+};
+
+/**
+ * The representation of a protosocket.
+ *
+ * The protosocket structrure is an opaque structure with no user-visible
+ * elements.
+ */
+struct psock {
+  struct pt pt, psockpt; /* Protothreads - one that's using the psock
+                            functions, and one that runs inside the
+                            psock functions. */
+  const u8_t *sendptr;   /* Pointer to the next data to be sent. */
+  u8_t *readptr;         /* Pointer to the next data to be read. */
+
+  char *bufptr;          /* Pointer to the buffer used for buffering
+                            incoming data. */
+
+  u16_t sendlen;         /* The number of bytes left to be sent. */
+  u16_t readlen;         /* The number of bytes left to be read. */
+
+  struct psock_buf buf;  /* The structure holding the state of the
+                            input buffer. */
+  unsigned int bufsize;  /* The size of the input buffer. */
+
+  unsigned char state;   /* The state of the protosocket. */
+};
+
+void psock_init(struct psock *psock, char *buffer, unsigned int buffersize);
+/**
+ * Initialize a protosocket.
+ *
+ * This macro initializes a protosocket and must be called before the
+ * protosocket is used. The initialization also specifies the input buffer
+ * for the protosocket.
+ *
+ * \param psock (struct psock *) A pointer to the protosocket to be
+ * initialized
+ *
+ * \param buffer (char *) A pointer to the input buffer for the
+ * protosocket.
+ *
+ * \param buffersize (unsigned int) The size of the input buffer.
+ *
+ * \hideinitializer
+ */
+#define PSOCK_INIT(psock, buffer, buffersize) \
+  psock_init(psock, buffer, buffersize)
+
+/**
+ * Start the protosocket protothread in a function.
+ *
+ * This macro starts the protothread associated with the protosocket and
+ * must come before other protosocket calls in the function it is used.
+ *
+ * \param psock (struct psock *) A pointer to the protosocket to be
+ * started.
+ *
+ * \hideinitializer
+ */
+#define PSOCK_BEGIN(psock) PT_BEGIN(&((psock)->pt))
+
+PT_THREAD(psock_send(struct psock *psock, const char *buf, unsigned int len));
+/**
+ * Send data.
+ *
+ * This macro sends data over a protosocket. The protosocket protothread blocks
+ * until all data has been sent and is known to have been received by
+ * the remote end of the TCP connection.
+ *
+ * \param psock (struct psock *) A pointer to the protosocket over which
+ * data is to be sent.
+ *
+ * \param data (char *) A pointer to the data that is to be sent.
+ *
+ * \param datalen (unsigned int) The length of the data that is to be
+ * sent.
+ *
+ * \hideinitializer
+ */
+#define PSOCK_SEND(psock, data, datalen)		\
+    PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, data, datalen))
+
+/**
+ * \brief      Send a null-terminated string.
+ * \param psock Pointer to the protosocket.
+ * \param str  The string to be sent.
+ *
+ *             This function sends a null-terminated string over the
+ *             protosocket.
+ *
+ * \hideinitializer
+ */
+#define PSOCK_SEND_STR(psock, str)      		\
+    PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, str, strlen(str)))
+
+PT_THREAD(psock_generator_send(struct psock *psock,
+                                unsigned short (*f)(void *), void *arg));
+
+/**
+ * \brief      Generate data with a function and send it
+ * \param psock Pointer to the protosocket.
+ * \param generator Pointer to the generator function
+ * \param arg   Argument to the generator function
+ *
+ *             This function generates data and sends it over the
+ *             protosocket. This can be used to dynamically generate
+ *             data for a transmission, instead of generating the data
+ *             in a buffer beforehand. This function reduces the need for
+ *             buffer memory. The generator function is implemented by
+ *             the application, and a pointer to the function is given
+ *             as an argument with the call to PSOCK_GENERATOR_SEND().
+ *
+ *             The generator function should place the generated data
+ *             directly in the uip_appdata buffer, and return the
+ *             length of the generated data. The generator function is
+ *             called by the protosocket layer when the data first is
+ *             sent, and once for every retransmission that is needed.
+ *
+ * \hideinitializer
+ */
+#define PSOCK_GENERATOR_SEND(psock, generator, arg)     \
+    PT_WAIT_THREAD(&((psock)->pt),					\
+                   psock_generator_send(psock, generator, arg))
+
+
+/**
+ * Close a protosocket.
+ *
+ * This macro closes a protosocket and can only be called from within the
+ * protothread in which the protosocket lives.
+ *
+ * \param psock (struct psock *) A pointer to the protosocket that is to
+ * be closed.
+ *
+ * \hideinitializer
+ */
+#define PSOCK_CLOSE(psock) uip_close()
+
+PT_THREAD(psock_readbuf(struct psock *psock));
+/**
+ * Read data until the buffer is full.
+ *
+ * This macro will block waiting for data and read the data into the
+ * input buffer specified with the call to PSOCK_INIT(). Data is read
+ * until the buffer is full..
+ *
+ * \param psock (struct psock *) A pointer to the protosocket from which
+ * data should be read.
+ *
+ * \hideinitializer
+ */
+#define PSOCK_READBUF(psock)				\
+  PT_WAIT_THREAD(&((psock)->pt), psock_readbuf(psock))
+
+PT_THREAD(psock_readto(struct psock *psock, unsigned char c));
+/**
+ * Read data up to a specified character.
+ *
+ * This macro will block waiting for data and read the data into the
+ * input buffer specified with the call to PSOCK_INIT(). Data is only
+ * read until the specifieed character appears in the data stream.
+ *
+ * \param psock (struct psock *) A pointer to the protosocket from which
+ * data should be read.
+ *
+ * \param c (char) The character at which to stop reading.
+ *
+ * \hideinitializer
+ */
+#define PSOCK_READTO(psock, c)				\
+  PT_WAIT_THREAD(&((psock)->pt), psock_readto(psock, c))
+
+/**
+ * The length of the data that was previously read.
+ *
+ * This macro returns the length of the data that was previously read
+ * using PSOCK_READTO() or PSOCK_READ().
+ *
+ * \param psock (struct psock *) A pointer to the protosocket holding the data.
+ *
+ * \hideinitializer
+ */
+#define PSOCK_DATALEN(psock) psock_datalen(psock)
+
+u16_t psock_datalen(struct psock *psock);
+
+/**
+ * Exit the protosocket's protothread.
+ *
+ * This macro terminates the protothread of the protosocket and should
+ * almost always be used in conjunction with PSOCK_CLOSE().
+ *
+ * \sa PSOCK_CLOSE_EXIT()
+ *
+ * \param psock (struct psock *) A pointer to the protosocket.
+ *
+ * \hideinitializer
+ */
+#define PSOCK_EXIT(psock) PT_EXIT(&((psock)->pt))
+
+/**
+ * Close a protosocket and exit the protosocket's protothread.
+ *
+ * This macro closes a protosocket and exits the protosocket's protothread.
+ *
+ * \param psock (struct psock *) A pointer to the protosocket.
+ *
+ * \hideinitializer
+ */
+#define PSOCK_CLOSE_EXIT(psock)		\
+  do {						\
+    PSOCK_CLOSE(psock);			\
+    PSOCK_EXIT(psock);			\
+  } while(0)
+
+/**
+ * Declare the end of a protosocket's protothread.
+ *
+ * This macro is used for declaring that the protosocket's protothread
+ * ends. It must always be used together with a matching PSOCK_BEGIN()
+ * macro.
+ *
+ * \param psock (struct psock *) A pointer to the protosocket.
+ *
+ * \hideinitializer
+ */
+#define PSOCK_END(psock) PT_END(&((psock)->pt))
+
+char psock_newdata(struct psock *s);
+
+/**
+ * Check if new data has arrived on a protosocket.
+ *
+ * This macro is used in conjunction with the PSOCK_WAIT_UNTIL()
+ * macro to check if data has arrived on a protosocket.
+ *
+ * \param psock (struct psock *) A pointer to the protosocket.
+ *
+ * \hideinitializer
+ */
+#define PSOCK_NEWDATA(psock) psock_newdata(psock)
+
+/**
+ * Wait until a condition is true.
+ *
+ * This macro blocks the protothread until the specified condition is
+ * true. The macro PSOCK_NEWDATA() can be used to check if new data
+ * arrives when the protosocket is waiting.
+ *
+ * Typically, this macro is used as follows:
+ *
+ \code
+ PT_THREAD(thread(struct psock *s, struct uip_timer *t))
+ {
+   PSOCK_BEGIN(s);
+
+   PSOCK_WAIT_UNTIL(s, PSOCK_NEWADATA(s) || timer_expired(t));
+
+   if(PSOCK_NEWDATA(s)) {
+     PSOCK_READTO(s, '\n');
+   } else {
+     handle_timed_out(s);
+   }
+
+   PSOCK_END(s);
+ }
+ \endcode
+ *
+ * \param psock (struct psock *) A pointer to the protosocket.
+ * \param condition The condition to wait for.
+ *
+ * \hideinitializer
+ */
+#define PSOCK_WAIT_UNTIL(psock, condition)    \
+  PT_WAIT_UNTIL(&((psock)->pt), (condition));
+
+#define PSOCK_WAIT_THREAD(psock, condition)   \
+  PT_WAIT_THREAD(&((psock)->pt), (condition))
+
+#endif /* __PSOCK_H__ */
+
+/** @} */
Index: uKadecot/trunk/uip/uip/pt.h
===================================================================
--- uKadecot/trunk/uip/uip/pt.h	(revision 101)
+++ uKadecot/trunk/uip/uip/pt.h	(revision 101)
@@ -0,0 +1,323 @@
+/*
+ * Copyright (c) 2004-2005, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id$
+ */
+
+/**
+ * \addtogroup pt
+ * @{
+ */
+
+/**
+ * \file
+ * Protothreads implementation.
+ * \author
+ * Adam Dunkels <adam@sics.se>
+ *
+ */
+
+#ifndef __PT_H__
+#define __PT_H__
+
+#include "lc.h"
+
+struct pt {
+  lc_t lc;
+};
+
+#define PT_WAITING 0
+#define PT_EXITED  1
+#define PT_ENDED   2
+#define PT_YIELDED 3
+
+/**
+ * \name Initialization
+ * @{
+ */
+
+/**
+ * Initialize a protothread.
+ *
+ * Initializes a protothread. Initialization must be done prior to
+ * starting to execute the protothread.
+ *
+ * \param pt A pointer to the protothread control structure.
+ *
+ * \sa PT_SPAWN()
+ *
+ * \hideinitializer
+ */
+#define PT_INIT(pt)   LC_INIT((pt)->lc)
+
+/** @} */
+
+/**
+ * \name Declaration and definition
+ * @{
+ */
+
+/**
+ * Declaration of a protothread.
+ *
+ * This macro is used to declare a protothread. All protothreads must
+ * be declared with this macro.
+ *
+ * \param name_args The name and arguments of the C function
+ * implementing the protothread.
+ *
+ * \hideinitializer
+ */
+#define PT_THREAD(name_args) char name_args
+
+/**
+ * Declare the start of a protothread inside the C function
+ * implementing the protothread.
+ *
+ * This macro is used to declare the starting point of a
+ * protothread. It should be placed at the start of the function in
+ * which the protothread runs. All C statements above the PT_BEGIN()
+ * invokation will be executed each time the protothread is scheduled.
+ *
+ * \param pt A pointer to the protothread control structure.
+ *
+ * \hideinitializer
+ */
+#define PT_BEGIN(pt) { char PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc)
+
+/**
+ * Declare the end of a protothread.
+ *
+ * This macro is used for declaring that a protothread ends. It must
+ * always be used together with a matching PT_BEGIN() macro.
+ *
+ * \param pt A pointer to the protothread control structure.
+ *
+ * \hideinitializer
+ */
+#define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \
+                   PT_INIT(pt); return PT_ENDED; }
+
+/** @} */
+
+/**
+ * \name Blocked wait
+ * @{
+ */
+
+/**
+ * Block and wait until condition is true.
+ *
+ * This macro blocks the protothread until the specified condition is
+ * true.
+ *
+ * \param pt A pointer to the protothread control structure.
+ * \param condition The condition.
+ *
+ * \hideinitializer
+ */
+#define PT_WAIT_UNTIL(pt, condition)	        \
+  do {						\
+    LC_SET((pt)->lc);				\
+    if(!(condition)) {				\
+      return PT_WAITING;			\
+    }						\
+  } while(0)
+
+/**
+ * Block and wait while condition is true.
+ *
+ * This function blocks and waits while condition is true. See
+ * PT_WAIT_UNTIL().
+ *
+ * \param pt A pointer to the protothread control structure.
+ * \param cond The condition.
+ *
+ * \hideinitializer
+ */
+#define PT_WAIT_WHILE(pt, cond)  PT_WAIT_UNTIL((pt), !(cond))
+
+/** @} */
+
+/**
+ * \name Hierarchical protothreads
+ * @{
+ */
+
+/**
+ * Block and wait until a child protothread completes.
+ *
+ * This macro schedules a child protothread. The current protothread
+ * will block until the child protothread completes.
+ *
+ * \note The child protothread must be manually initialized with the
+ * PT_INIT() function before this function is used.
+ *
+ * \param pt A pointer to the protothread control structure.
+ * \param thread The child protothread with arguments
+ *
+ * \sa PT_SPAWN()
+ *
+ * \hideinitializer
+ */
+#define PT_WAIT_THREAD(pt, thread) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread))
+
+/**
+ * Spawn a child protothread and wait until it exits.
+ *
+ * This macro spawns a child protothread and waits until it exits. The
+ * macro can only be used within a protothread.
+ *
+ * \param pt A pointer to the protothread control structure.
+ * \param child A pointer to the child protothread's control structure.
+ * \param thread The child protothread with arguments
+ *
+ * \hideinitializer
+ */
+#define PT_SPAWN(pt, child, thread)		\
+  do {						\
+    PT_INIT((child));				\
+    PT_WAIT_THREAD((pt), (thread));		\
+  } while(0)
+
+/** @} */
+
+/**
+ * \name Exiting and restarting
+ * @{
+ */
+
+/**
+ * Restart the protothread.
+ *
+ * This macro will block and cause the running protothread to restart
+ * its execution at the place of the PT_BEGIN() call.
+ *
+ * \param pt A pointer to the protothread control structure.
+ *
+ * \hideinitializer
+ */
+#define PT_RESTART(pt)				\
+  do {						\
+    PT_INIT(pt);				\
+    return PT_WAITING;			\
+  } while(0)
+
+/**
+ * Exit the protothread.
+ *
+ * This macro causes the protothread to exit. If the protothread was
+ * spawned by another protothread, the parent protothread will become
+ * unblocked and can continue to run.
+ *
+ * \param pt A pointer to the protothread control structure.
+ *
+ * \hideinitializer
+ */
+#define PT_EXIT(pt)				\
+  do {						\
+    PT_INIT(pt);				\
+    return PT_EXITED;			\
+  } while(0)
+
+/** @} */
+
+/**
+ * \name Calling a protothread
+ * @{
+ */
+
+/**
+ * Schedule a protothread.
+ *
+ * This function shedules a protothread. The return value of the
+ * function is non-zero if the protothread is running or zero if the
+ * protothread has exited.
+ *
+ * \param f The call to the C function implementing the protothread to
+ * be scheduled
+ *
+ * \hideinitializer
+ */
+#define PT_SCHEDULE(f) ((f) == PT_WAITING)
+
+/** @} */
+
+/**
+ * \name Yielding from a protothread
+ * @{
+ */
+
+/**
+ * Yield from the current protothread.
+ *
+ * This function will yield the protothread, thereby allowing other
+ * processing to take place in the system.
+ *
+ * \param pt A pointer to the protothread control structure.
+ *
+ * \hideinitializer
+ */
+#define PT_YIELD(pt)				\
+  do {						\
+    PT_YIELD_FLAG = 0;				\
+    LC_SET((pt)->lc);				\
+    if(PT_YIELD_FLAG == 0) {			\
+      return PT_YIELDED;			\
+    }						\
+  } while(0)
+
+/**
+ * \brief      Yield from the protothread until a condition occurs.
+ * \param pt   A pointer to the protothread control structure.
+ * \param cond The condition.
+ *
+ *             This function will yield the protothread, until the
+ *             specified condition evaluates to true.
+ *
+ *
+ * \hideinitializer
+ */
+#define PT_YIELD_UNTIL(pt, cond)		\
+  do {						\
+    PT_YIELD_FLAG = 0;				\
+    LC_SET((pt)->lc);				\
+    if((PT_YIELD_FLAG == 0) || !(cond)) {	\
+      return PT_YIELDED;			\
+    }						\
+  } while(0)
+
+/** @} */
+
+#endif /* __PT_H__ */
+
+/** @} */
Index: uKadecot/trunk/uip/uip/timer.c
===================================================================
--- uKadecot/trunk/uip/uip/timer.c	(revision 101)
+++ uKadecot/trunk/uip/uip/timer.c	(revision 101)
@@ -0,0 +1,127 @@
+/**
+ * \addtogroup timer
+ * @{
+ */
+
+/**
+ * \file
+ * Timer library implementation.
+ * \author
+ * Adam Dunkels <adam@sics.se>
+ */
+
+/*
+ * Copyright (c) 2004, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id$
+ */
+
+#include "clock.h"
+#include "timer.h"
+
+/*---------------------------------------------------------------------------*/
+/**
+ * Set a timer.
+ *
+ * This function is used to set a timer for a time sometime in the
+ * future. The function timer_expired() will evaluate to true after
+ * the timer has expired.
+ *
+ * \param t A pointer to the timer
+ * \param interval The interval before the timer expires.
+ *
+ */
+void
+timer_set(struct uip_timer *t, clock_time_t interval)
+{
+  t->interval = interval;
+  t->start = clock_time();
+}
+/*---------------------------------------------------------------------------*/
+/**
+ * Reset the timer with the same interval.
+ *
+ * This function resets the timer with the same interval that was
+ * given to the timer_set() function. The start point of the interval
+ * is the exact time that the timer last expired. Therefore, this
+ * function will cause the timer to be stable over time, unlike the
+ * timer_rester() function.
+ *
+ * \param t A pointer to the timer.
+ *
+ * \sa timer_restart()
+ */
+void
+timer_reset(struct uip_timer *t)
+{
+  t->start += t->interval;
+}
+/*---------------------------------------------------------------------------*/
+/**
+ * Restart the timer from the current point in time
+ *
+ * This function restarts a timer with the same interval that was
+ * given to the timer_set() function. The timer will start at the
+ * current time.
+ *
+ * \note A periodic timer will drift if this function is used to reset
+ * it. For preioric timers, use the timer_reset() function instead.
+ *
+ * \param t A pointer to the timer.
+ *
+ * \sa timer_reset()
+ */
+void
+timer_restart(struct uip_timer *t)
+{
+  t->start = clock_time();
+}
+/*---------------------------------------------------------------------------*/
+/**
+ * Check if a timer has expired.
+ *
+ * This function tests if a timer has expired and returns true or
+ * false depending on its status.
+ *
+ * \param t A pointer to the timer
+ *
+ * \return Non-zero if the timer has expired, zero otherwise.
+ *
+ */
+int
+timer_expired(struct uip_timer *t)
+{
+  return (clock_time_t)(clock_time() - t->start) >= (clock_time_t)t->interval;
+}
+/*---------------------------------------------------------------------------*/
+
+/** @} */
Index: uKadecot/trunk/uip/uip/timer.h
===================================================================
--- uKadecot/trunk/uip/uip/timer.h	(revision 101)
+++ uKadecot/trunk/uip/uip/timer.h	(revision 101)
@@ -0,0 +1,86 @@
+/**
+ * \defgroup timer Timer library
+ *
+ * The timer library provides functions for setting, resetting and
+ * restarting timers, and for checking if a timer has expired. An
+ * application must "manually" check if its timers have expired; this
+ * is not done automatically.
+ *
+ * A timer is declared as a \c struct \c timer and all access to the
+ * timer is made by a pointer to the declared timer.
+ *
+ * \note The timer library uses the \ref clock "Clock library" to
+ * measure time. Intervals should be specified in the format used by
+ * the clock library.
+ *
+ * @{
+ */
+
+
+/**
+ * \file
+ * Timer library header file.
+ * \author
+ * Adam Dunkels <adam@sics.se>
+ */
+
+/*
+ * Copyright (c) 2004, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id$
+ */
+#ifndef __TIMER_H__
+#define __TIMER_H__
+
+#include "clock.h"
+
+/**
+ * A timer.
+ *
+ * This structure is used for declaring a timer. The timer must be set
+ * with timer_set() before it can be used.
+ *
+ * \hideinitializer
+ */
+struct uip_timer {
+  clock_time_t start;
+  clock_time_t interval;
+};
+
+void timer_set(struct uip_timer *t, clock_time_t interval);
+void timer_reset(struct uip_timer *t);
+void timer_restart(struct uip_timer *t);
+int timer_expired(struct uip_timer *t);
+
+#endif /* __TIMER_H__ */
+
+/** @} */
Index: uKadecot/trunk/uip/uip/uip-fw.c
===================================================================
--- uKadecot/trunk/uip/uip/uip-fw.c	(revision 101)
+++ uKadecot/trunk/uip/uip/uip-fw.c	(revision 101)
@@ -0,0 +1,544 @@
+/*
+ * Copyright (c) 2004, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id$
+ */
+/**
+ * \addtogroup uip
+ * @{
+ */
+
+/**
+ * \defgroup uipfw uIP packet forwarding
+ * @{
+ *
+ */
+
+/**
+ * \file
+ * uIP packet forwarding.
+ * \author Adam Dunkels <adam@sics.se>
+ *
+ * This file implements a number of simple functions which do packet
+ * forwarding over multiple network interfaces with uIP.
+ *
+ */
+
+#include "uip.h"
+#include "uip_arch.h"
+#include "uip-fw.h"
+
+#include <string.h> /* for memcpy() */
+
+#ifdef __RX
+#pragma pack
+#elif _MSC_VER
+#pragma pack(push, 1)
+#endif
+
+/*
+ * The list of registered network interfaces.
+ */
+static struct uip_fw_netif *netifs = NULL;
+
+/*
+ * A pointer to the default network interface.
+ */
+static struct uip_fw_netif *defaultnetif = NULL;
+
+struct tcpip_hdr {
+  /* IP header. */
+  u8_t vhl,
+    tos;
+  u16_t len,
+    ipid,
+    ipoffset;
+  u8_t ttl,
+    proto;
+  u16_t ipchksum;
+  u16_t srcipaddr[2],
+    destipaddr[2];
+  
+  /* TCP header. */
+  u16_t srcport,
+    destport;
+  u8_t seqno[4],
+    ackno[4],
+    tcpoffset,
+    flags,
+    wnd[2];
+  u16_t tcpchksum;
+  u8_t urgp[2];
+  u8_t optdata[4];
+};
+
+struct icmpip_hdr {
+  /* IP header. */
+  u8_t vhl,
+    tos,
+    len[2],
+    ipid[2],
+    ipoffset[2],
+    ttl,
+    proto;
+  u16_t ipchksum;
+  u16_t srcipaddr[2],
+    destipaddr[2];
+  /* ICMP (echo) header. */
+  u8_t type, icode;
+  u16_t icmpchksum;
+  u16_t id, seqno;
+  u8_t payload[1];
+};
+
+/* ICMP ECHO. */
+#define ICMP_ECHO 8
+
+/* ICMP TIME-EXCEEDED. */
+#define ICMP_TE 11
+
+/*
+ * Pointer to the TCP/IP headers of the packet in the uip_buf buffer.
+ */
+#define BUF ((struct tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
+
+/*
+ * Pointer to the ICMP/IP headers of the packet in the uip_buf buffer.
+ */
+#define ICMPBUF ((struct icmpip_hdr *)&uip_buf[UIP_LLH_LEN])
+
+/*
+ * Certain fields of an IP packet that are used for identifying
+ * duplicate packets.
+ */
+struct fwcache_entry {
+  u16_t timer;
+  
+  u16_t srcipaddr[2];
+  u16_t destipaddr[2];
+  u16_t ipid;
+  u8_t proto;
+  u8_t unused;
+
+#if notdef
+  u16_t payload[2];
+#endif
+
+#if UIP_REASSEMBLY > 0
+  u16_t len, offset;
+#endif
+};
+
+#ifdef __RX
+#pragma unpack
+#elif _MSC_VER
+#pragma pack(pop)
+#endif
+
+/*
+ * The number of packets to remember when looking for duplicates.
+ */
+#ifdef UIP_CONF_FWCACHE_SIZE
+#define FWCACHE_SIZE UIP_CONF_FWCACHE_SIZE
+#else
+#define FWCACHE_SIZE 2
+#endif
+
+
+/*
+ * A cache of packet header fields which are used for
+ * identifying duplicate packets.
+ */
+static struct fwcache_entry fwcache[FWCACHE_SIZE];
+
+/**
+ * \internal
+ * The time that a packet cache is active.
+ */
+#define FW_TIME 20
+
+/*------------------------------------------------------------------------------*/
+/**
+ * Initialize the uIP packet forwarding module.
+ */
+/*------------------------------------------------------------------------------*/
+void
+uip_fw_init(void)
+{
+  struct uip_fw_netif *t;
+  defaultnetif = NULL;
+  while(netifs != NULL) {
+    t = netifs;
+    netifs = netifs->next;
+    t->next = NULL;
+  }
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Check if an IP address is within the network defined by an IP
+ * address and a netmask.
+ *
+ * \param ipaddr The IP address to be checked.
+ * \param netipaddr The IP address of the network.
+ * \param netmask The netmask of the network.
+ *
+ * \return Non-zero if IP address is in network, zero otherwise.
+ */
+/*------------------------------------------------------------------------------*/
+static unsigned char
+ipaddr_maskcmp(u16_t *ipaddr, u16_t *netipaddr, u16_t *netmask)
+{
+  return (ipaddr[0] & netmask [0]) == (netipaddr[0] & netmask[0]) &&
+    (ipaddr[1] & netmask[1]) == (netipaddr[1] & netmask[1]);
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Send out an ICMP TIME-EXCEEDED message.
+ *
+ * This function replaces the packet in the uip_buf buffer with the
+ * ICMP packet.
+ */
+/*------------------------------------------------------------------------------*/
+static void
+time_exceeded(void)
+{
+  u16_t tmp16;
+
+  /* We don't send out ICMP errors for ICMP messages. */
+  if(ICMPBUF->proto == UIP_PROTO_ICMP) {
+    uip_len = 0;
+    return;
+  }
+  /* Copy fields from packet header into payload of this ICMP packet. */
+  memcpy(&(ICMPBUF->payload[0]), ICMPBUF, 28);
+
+  /* Set the ICMP type and code. */
+  ICMPBUF->type = ICMP_TE;
+  ICMPBUF->icode = 0;
+
+  /* Calculate the ICMP checksum. */
+  ICMPBUF->icmpchksum = 0;
+  ICMPBUF->icmpchksum = ~uip_chksum((u16_t *)&(ICMPBUF->type), 36);
+
+  /* Set the IP destination address to be the source address of the
+     original packet. */
+  tmp16= BUF->destipaddr[0];
+  BUF->destipaddr[0] = BUF->srcipaddr[0];
+  BUF->srcipaddr[0] = tmp16;
+  tmp16 = BUF->destipaddr[1];
+  BUF->destipaddr[1] = BUF->srcipaddr[1];
+  BUF->srcipaddr[1] = tmp16;
+
+  /* Set our IP address as the source address. */
+  BUF->srcipaddr[0] = uip_hostaddr[0];
+  BUF->srcipaddr[1] = uip_hostaddr[1];
+
+  /* The size of the ICMP time exceeded packet is 36 + the size of the
+     IP header (20) = 56. */
+  uip_len = 56;
+  ICMPBUF->len[0] = 0;
+  ICMPBUF->len[1] = uip_len;
+
+  /* Fill in the other fields in the IP header. */
+  ICMPBUF->vhl = 0x45;
+  ICMPBUF->tos = 0;
+  ICMPBUF->ipoffset[0] = ICMPBUF->ipoffset[1] = 0;
+  ICMPBUF->ttl  = UIP_TTL;
+  ICMPBUF->proto = UIP_PROTO_ICMP;
+  
+  /* Calculate IP checksum. */
+  ICMPBUF->ipchksum = 0;
+  ICMPBUF->ipchksum = ~(uip_ipchksum());
+
+
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Register a packet in the forwarding cache so that it won't be
+ * forwarded again.
+ */
+/*------------------------------------------------------------------------------*/
+static void
+fwcache_register(void)
+{
+  struct fwcache_entry *fw;
+  int i, oldest;
+
+  oldest = FW_TIME;
+  fw = NULL;
+  
+  /* Find the oldest entry in the cache. */
+  for(i = 0; i < FWCACHE_SIZE; ++i) {
+    if(fwcache[i].timer == 0) {
+      fw = &fwcache[i];
+      break;
+    } else if(fwcache[i].timer <= oldest) {
+      fw = &fwcache[i];
+      oldest = fwcache[i].timer;
+    }
+  }
+
+  fw->timer = FW_TIME;
+  fw->ipid = BUF->ipid;
+  fw->srcipaddr[0] = BUF->srcipaddr[0];
+  fw->srcipaddr[1] = BUF->srcipaddr[1];
+  fw->destipaddr[0] = BUF->destipaddr[0];
+  fw->destipaddr[1] = BUF->destipaddr[1];
+  fw->proto = BUF->proto;
+#if notdef
+  fw->payload[0] = BUF->srcport;
+  fw->payload[1] = BUF->destport;
+#endif
+#if UIP_REASSEMBLY > 0
+  fw->len = BUF->len;
+  fw->offset = BUF->ipoffset;
+#endif
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Find a network interface for the IP packet in uip_buf.
+ */
+/*------------------------------------------------------------------------------*/
+static struct uip_fw_netif *
+find_netif(void)
+{
+  struct uip_fw_netif *netif;
+  
+  /* Walk through every network interface to check for a match. */
+  for(netif = netifs; netif != NULL; netif = netif->next) {
+    if(ipaddr_maskcmp(BUF->destipaddr, netif->ipaddr,
+                      netif->netmask)) {
+      /* If there was a match, we break the loop. */
+      return netif;
+    }
+  }
+  
+  /* If no matching netif was found, we use default netif. */
+  return defaultnetif;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * Output an IP packet on the correct network interface.
+ *
+ * The IP packet should be present in the uip_buf buffer and its
+ * length in the global uip_len variable.
+ *
+ * \retval UIP_FW_ZEROLEN Indicates that a zero-length packet
+ * transmission was attempted and that no packet was sent.
+ *
+ * \retval UIP_FW_NOROUTE No suitable network interface could be found
+ * for the outbound packet, and the packet was not sent.
+ *
+ * \return The return value from the actual network interface output
+ * function is passed unmodified as a return value.
+ */
+/*------------------------------------------------------------------------------*/
+u8_t
+uip_fw_output(void)
+{
+  struct uip_fw_netif *netif;
+
+  if(uip_len == 0) {
+    return UIP_FW_ZEROLEN;
+  }
+
+  fwcache_register();
+
+#if UIP_BROADCAST
+  /* Link local broadcasts go out on all interfaces. */
+  if(/*BUF->proto == UIP_PROTO_UDP &&*/
+     BUF->destipaddr[0] == 0xffff &&
+     BUF->destipaddr[1] == 0xffff) {
+    if(defaultnetif != NULL) {
+      defaultnetif->output();
+    }
+    for(netif = netifs; netif != NULL; netif = netif->next) {
+      netif->output();
+    }
+    return UIP_FW_OK;
+  }
+#endif /* UIP_BROADCAST */
+  
+  netif = find_netif();
+  /*  printf("uip_fw_output: netif %p ->output %p len %d\n", netif,
+         netif->output,
+         uip_len);*/
+
+  if(netif == NULL) {
+    return UIP_FW_NOROUTE;
+  }
+  /* If we now have found a suitable network interface, we call its
+     output function to send out the packet. */
+  return netif->output();
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * Forward an IP packet in the uip_buf buffer.
+ *
+ *
+ *
+ * \return UIP_FW_FORWARDED if the packet was forwarded, UIP_FW_LOCAL if
+ * the packet should be processed locally.
+ */
+/*------------------------------------------------------------------------------*/
+u8_t
+uip_fw_forward(void)
+{
+  struct fwcache_entry *fw;
+
+  /* First check if the packet is destined for ourselves and return 0
+     to indicate that the packet should be processed locally. */
+  if(BUF->destipaddr[0] == uip_hostaddr[0] &&
+     BUF->destipaddr[1] == uip_hostaddr[1]) {
+    return UIP_FW_LOCAL;
+  }
+
+  /* If we use ping IP address configuration, and our IP address is
+     not yet configured, we should intercept all ICMP echo packets. */
+#if UIP_PINGADDRCONF
+  if((uip_hostaddr[0] | uip_hostaddr[1]) == 0 &&
+     BUF->proto == UIP_PROTO_ICMP &&
+     ICMPBUF->type == ICMP_ECHO) {
+    return UIP_FW_LOCAL;
+  }
+#endif /* UIP_PINGADDRCONF */
+
+  /* Check if the packet is in the forwarding cache already, and if so
+     we drop it. */
+
+  for(fw = fwcache; fw < &fwcache[FWCACHE_SIZE]; ++fw) {
+    if(fw->timer != 0 &&
+#if UIP_REASSEMBLY > 0
+       fw->len == BUF->len &&
+       fw->offset == BUF->ipoffset &&
+#endif
+       fw->ipid == BUF->ipid &&
+       fw->srcipaddr[0] == BUF->srcipaddr[0] &&
+       fw->srcipaddr[1] == BUF->srcipaddr[1] &&
+       fw->destipaddr[0] == BUF->destipaddr[0] &&
+       fw->destipaddr[1] == BUF->destipaddr[1] &&
+#if notdef
+       fw->payload[0] == BUF->srcport &&
+       fw->payload[1] == BUF->destport &&
+#endif
+       fw->proto == BUF->proto) {
+      /* Drop packet. */
+      return UIP_FW_FORWARDED;
+    }
+  }
+
+  /* If the TTL reaches zero we produce an ICMP time exceeded message
+     in the uip_buf buffer and forward that packet back to the sender
+     of the packet. */
+  if(BUF->ttl <= 1) {
+    /* No time exceeded for broadcasts and multicasts! */
+    if(BUF->destipaddr[0] == 0xffff && BUF->destipaddr[1] == 0xffff) {
+      return UIP_FW_LOCAL;
+    }
+    time_exceeded();
+  }
+  
+  /* Decrement the TTL (time-to-live) value in the IP header */
+  BUF->ttl = BUF->ttl - 1;
+  
+  /* Update the IP checksum. */
+  if(BUF->ipchksum >= HTONS(0xffff - 0x0100)) {
+    BUF->ipchksum = BUF->ipchksum + HTONS(0x0100) + 1;
+  } else {
+    BUF->ipchksum = BUF->ipchksum + HTONS(0x0100);
+  }
+
+  if(uip_len > 0) {
+    uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_TCPIP_HLEN];
+    uip_fw_output();
+  }
+
+#if UIP_BROADCAST
+  if(BUF->destipaddr[0] == 0xffff && BUF->destipaddr[1] == 0xffff) {
+    return UIP_FW_LOCAL;
+  }
+#endif /* UIP_BROADCAST */
+
+  /* Return non-zero to indicate that the packet was forwarded and that no
+     other processing should be made. */
+  return UIP_FW_FORWARDED;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * Register a network interface with the forwarding module.
+ *
+ * \param netif A pointer to the network interface that is to be
+ * registered.
+ */
+/*------------------------------------------------------------------------------*/
+void
+uip_fw_register(struct uip_fw_netif *netif)
+{
+  netif->next = netifs;
+  netifs = netif;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * Register a default network interface.
+ *
+ * All packets that don't go out on any of the other interfaces will
+ * be routed to the default interface.
+ *
+ * \param netif A pointer to the network interface that is to be
+ * registered.
+ */
+/*------------------------------------------------------------------------------*/
+void
+uip_fw_default(struct uip_fw_netif *netif)
+{
+  defaultnetif = netif;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * Perform periodic processing.
+ */
+/*------------------------------------------------------------------------------*/
+void
+uip_fw_periodic(void)
+{
+  struct fwcache_entry *fw;
+  for(fw = fwcache; fw < &fwcache[FWCACHE_SIZE]; ++fw) {
+    if(fw->timer > 0) {
+      --fw->timer;
+    }
+  }
+}
+/*------------------------------------------------------------------------------*/
Index: uKadecot/trunk/uip/uip/uip-fw.h
===================================================================
--- uKadecot/trunk/uip/uip/uip-fw.h	(revision 101)
+++ uKadecot/trunk/uip/uip/uip-fw.h	(revision 101)
@@ -0,0 +1,176 @@
+/**
+ * \addtogroup uipfw
+ * @{
+ */
+
+/**
+ * \file
+ * uIP packet forwarding header file.
+ * \author Adam Dunkels <adam@sics.se>
+ */
+
+/*
+ * Copyright (c) 2004, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id$
+ */
+#ifndef __UIP_FW_H__
+#define __UIP_FW_H__
+
+#include "uip.h"
+
+/**
+ * Representation of a uIP network interface.
+ */
+struct uip_fw_netif {
+  struct uip_fw_netif *next;  /**< Pointer to the next interface when
+                                 linked in a list. */
+  u16_t ipaddr[2];            /**< The IP address of this interface. */
+  u16_t netmask[2];           /**< The netmask of the interface. */
+  u8_t (* output)(void);
+                              /**< A pointer to the function that
+                                 sends a packet. */
+};
+
+/**
+ * Intantiating macro for a uIP network interface.
+ *
+ * Example:
+ \code
+ struct uip_fw_netif slipnetif =
+   {UIP_FW_NETIF(192,168,76,1, 255,255,255,0, slip_output)};
+ \endcode
+ * \param ip1,ip2,ip3,ip4 The IP address of the network interface.
+ *
+ * \param nm1,nm2,nm3,nm4 The netmask of the network interface.
+ *
+ * \param outputfunc A pointer to the output function of the network interface.
+ *
+ * \hideinitializer
+ */
+#define UIP_FW_NETIF(ip1,ip2,ip3,ip4, nm1,nm2,nm3,nm4, outputfunc) \
+        NULL, \
+        {HTONS((ip1 << 8) | ip2), HTONS((ip3 << 8) | ip4)}, \
+        {HTONS((nm1 << 8) | nm2), HTONS((nm3 << 8) | nm4)}, \
+        outputfunc
+
+/**
+ * Set the IP address of a network interface.
+ *
+ * \param netif A pointer to the uip_fw_netif structure for the network interface.
+ *
+ * \param addr A pointer to an IP address.
+ *
+ * \hideinitializer
+ */
+#define uip_fw_setipaddr(netif, addr) \
+        do { (netif)->ipaddr[0] = ((u16_t *)(addr))[0]; \
+             (netif)->ipaddr[1] = ((u16_t *)(addr))[1]; } while(0)
+/**
+ * Set the netmask of a network interface.
+ *
+ * \param netif A pointer to the uip_fw_netif structure for the network interface.
+ *
+ * \param addr A pointer to an IP address representing the netmask.
+ *
+ * \hideinitializer
+ */
+#define uip_fw_setnetmask(netif, addr) \
+        do { (netif)->netmask[0] = ((u16_t *)(addr))[0]; \
+             (netif)->netmask[1] = ((u16_t *)(addr))[1]; } while(0)
+
+void uip_fw_init(void);
+u8_t uip_fw_forward(void);
+u8_t uip_fw_output(void);
+void uip_fw_register(struct uip_fw_netif *netif);
+void uip_fw_default(struct uip_fw_netif *netif);
+void uip_fw_periodic(void);
+
+
+/**
+ * A non-error message that indicates that a packet should be
+ * processed locally.
+ *
+ * \hideinitializer
+ */
+#define UIP_FW_LOCAL     0
+
+/**
+ * A non-error message that indicates that something went OK.
+ *
+ * \hideinitializer
+ */
+#define UIP_FW_OK        0
+
+/**
+ * A non-error message that indicates that a packet was forwarded.
+ *
+ * \hideinitializer
+ */
+#define UIP_FW_FORWARDED 1
+
+/**
+ * A non-error message that indicates that a zero-length packet
+ * transmission was attempted, and that no packet was sent.
+ *
+ * \hideinitializer
+ */
+#define UIP_FW_ZEROLEN   2
+
+/**
+ * An error message that indicates that a packet that was too large
+ * for the outbound network interface was detected.
+ *
+ * \hideinitializer
+ */
+#define UIP_FW_TOOLARGE  3
+
+/**
+ * An error message that indicates that no suitable interface could be
+ * found for an outbound packet.
+ *
+ * \hideinitializer
+ */
+#define UIP_FW_NOROUTE   4
+
+/**
+ * An error message that indicates that a packet that should be
+ * forwarded or output was dropped.
+ *
+ * \hideinitializer
+ */
+#define UIP_FW_DROPPED   5
+
+
+#endif /* __UIP_FW_H__ */
+
+/** @} */
Index: uKadecot/trunk/uip/uip/uip-neighbor.c
===================================================================
--- uKadecot/trunk/uip/uip/uip-neighbor.c	(revision 101)
+++ uKadecot/trunk/uip/uip/uip-neighbor.c	(revision 101)
@@ -0,0 +1,158 @@
+/*
+ * Copyright (c) 2006, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * $Id$
+ */
+
+/**
+ * \file
+ *         Database of link-local neighbors, used by IPv6 code and
+ *         to be used by a future ARP code rewrite.
+ * \author
+ *         Adam Dunkels <adam@sics.se>
+ */
+
+#include "uip-neighbor.h"
+
+#include <string.h>
+
+#define MAX_TIME 128
+
+#ifdef UIP_NEIGHBOR_CONF_ENTRIES
+#define ENTRIES UIP_NEIGHBOR_CONF_ENTRIES
+#else /* UIP_NEIGHBOR_CONF_ENTRIES */
+#define ENTRIES 8
+#endif /* UIP_NEIGHBOR_CONF_ENTRIES */
+
+struct neighbor_entry {
+  uip_ipaddr_t ipaddr;
+  struct uip_neighbor_addr addr;
+  u8_t time;
+};
+static struct neighbor_entry entries[ENTRIES];
+
+/*---------------------------------------------------------------------------*/
+void
+uip_neighbor_init(void)
+{
+  int i;
+
+  for(i = 0; i < ENTRIES; ++i) {
+    entries[i].time = MAX_TIME;
+  }
+}
+/*---------------------------------------------------------------------------*/
+void
+uip_neighbor_periodic(void)
+{
+  int i;
+
+  for(i = 0; i < ENTRIES; ++i) {
+    if(entries[i].time < MAX_TIME) {
+      entries[i].time++;
+    }
+  }
+}
+/*---------------------------------------------------------------------------*/
+void
+uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr)
+{
+  int i, oldest;
+  u8_t oldest_time;
+
+  printf("Adding neighbor with link address %02x:%02x:%02x:%02x:%02x:%02x\n",
+         addr->addr.addr[0], addr->addr.addr[1], addr->addr.addr[2], addr->addr.addr[3],
+         addr->addr.addr[4], addr->addr.addr[5]);
+  
+  /* Find the first unused entry or the oldest used entry. */
+  oldest_time = 0;
+  oldest = 0;
+  for(i = 0; i < ENTRIES; ++i) {
+    if(entries[i].time == MAX_TIME) {
+      oldest = i;
+      break;
+    }
+    if(uip_ipaddr_cmp(entries[i].ipaddr, addr)) {
+      oldest = i;
+      break;
+    }
+    if(entries[i].time > oldest_time) {
+      oldest = i;
+      oldest_time = entries[i].time;
+    }
+  }
+
+  /* Use the oldest or first free entry (either pointed to by the
+     "oldest" variable). */
+  entries[oldest].time = 0;
+  uip_ipaddr_copy(entries[oldest].ipaddr, ipaddr);
+  memcpy(&entries[oldest].addr, addr, sizeof(struct uip_neighbor_addr));
+}
+/*---------------------------------------------------------------------------*/
+static struct neighbor_entry *
+find_entry(uip_ipaddr_t ipaddr)
+{
+  int i;
+  
+  for(i = 0; i < ENTRIES; ++i) {
+    if(uip_ipaddr_cmp(entries[i].ipaddr, ipaddr)) {
+      return &entries[i];
+    }
+  }
+  return NULL;
+}
+/*---------------------------------------------------------------------------*/
+void
+uip_neighbor_update(uip_ipaddr_t ipaddr)
+{
+  struct neighbor_entry *e;
+
+  e = find_entry(ipaddr);
+  if(e != NULL) {
+    e->time = 0;
+  }
+}
+/*---------------------------------------------------------------------------*/
+struct uip_neighbor_addr *
+uip_neighbor_lookup(uip_ipaddr_t ipaddr)
+{
+  struct neighbor_entry *e;
+
+  e = find_entry(ipaddr);
+  if(e != NULL) {
+    /*    printf("Lookup neighbor with link address %02x:%02x:%02x:%02x:%02x:%02x\n",
+           e->addr.addr.addr[0], e->addr.addr.addr[1], e->addr.addr.addr[2], e->addr.addr.addr[3],
+           e->addr.addr.addr[4], e->addr.addr.addr[5]);*/
+
+    return &e->addr;
+  }
+  return NULL;
+}
+/*---------------------------------------------------------------------------*/
Index: uKadecot/trunk/uip/uip/uip-neighbor.h
===================================================================
--- uKadecot/trunk/uip/uip/uip-neighbor.h	(revision 101)
+++ uKadecot/trunk/uip/uip/uip-neighbor.h	(revision 101)
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2006, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * $Id$
+ */
+
+/**
+ * \file
+ *         Header file for database of link-local neighbors, used by
+ *         IPv6 code and to be used by future ARP code.
+ * \author
+ *         Adam Dunkels <adam@sics.se>
+ */
+
+#ifndef __UIP_NEIGHBOR_H__
+#define __UIP_NEIGHBOR_H__
+
+#include "uip.h"
+
+struct uip_neighbor_addr {
+#if UIP_NEIGHBOR_CONF_ADDRTYPE
+  UIP_NEIGHBOR_CONF_ADDRTYPE addr;
+#else
+  struct uip_eth_addr addr;
+#endif
+};
+
+void uip_neighbor_init(void);
+void uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr);
+void uip_neighbor_update(uip_ipaddr_t ipaddr);
+struct uip_neighbor_addr *uip_neighbor_lookup(uip_ipaddr_t ipaddr);
+void uip_neighbor_periodic(void);
+
+#endif /* __UIP-NEIGHBOR_H__ */
Index: uKadecot/trunk/uip/uip/uip-split.c
===================================================================
--- uKadecot/trunk/uip/uip/uip-split.c	(revision 101)
+++ uKadecot/trunk/uip/uip/uip-split.c	(revision 101)
@@ -0,0 +1,136 @@
+/*
+ * Copyright (c) 2004, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id$
+ */
+
+#include <string.h>
+
+#include "uip-split.h"
+#include "uip.h"
+#include "uip-fw.h"
+#include "uip_arch.h"
+
+
+
+#define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
+
+/*-----------------------------------------------------------------------------*/
+void
+uip_split_output(void)
+{
+  u16_t tcplen, len1, len2;
+
+  /* We only try to split maximum sized TCP segments. */
+  if(BUF->proto == UIP_PROTO_TCP &&
+     uip_len == UIP_BUFSIZE - UIP_LLH_LEN) {
+
+    tcplen = uip_len - UIP_TCPIP_HLEN;
+    /* Split the segment in two. If the original packet length was
+       odd, we make the second packet one byte larger. */
+    len1 = len2 = tcplen / 2;
+    if(len1 + len2 < tcplen) {
+      ++len2;
+    }
+
+    /* Create the first packet. This is done by altering the length
+       field of the IP header and updating the checksums. */
+    uip_len = len1 + UIP_TCPIP_HLEN;
+#if UIP_CONF_IPV6
+    /* For IPv6, the IP length field does not include the IPv6 IP header
+       length. */
+    BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
+    BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
+#else /* UIP_CONF_IPV6 */
+    BUF->len[0] = uip_len >> 8;
+    BUF->len[1] = uip_len & 0xff;
+#endif /* UIP_CONF_IPV6 */
+    
+    /* Recalculate the TCP checksum. */
+    BUF->tcpchksum = 0;
+    BUF->tcpchksum = ~(uip_tcpchksum());
+
+#if !UIP_CONF_IPV6
+    /* Recalculate the IP checksum. */
+    BUF->ipchksum = 0;
+    BUF->ipchksum = ~(uip_ipchksum());
+#endif /* UIP_CONF_IPV6 */
+    
+    /* Transmit the first packet. */
+    /*    uip_fw_output();*/
+    tcpip_output();
+
+    /* Now, create the second packet. To do this, it is not enough to
+       just alter the length field, but we must also update the TCP
+       sequence number and point the uip_appdata to a new place in
+       memory. This place is detemined by the length of the first
+       packet (len1). */
+    uip_len = len2 + UIP_TCPIP_HLEN;
+#if UIP_CONF_IPV6
+    /* For IPv6, the IP length field does not include the IPv6 IP header
+       length. */
+    BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
+    BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
+#else /* UIP_CONF_IPV6 */
+    BUF->len[0] = uip_len >> 8;
+    BUF->len[1] = uip_len & 0xff;
+#endif /* UIP_CONF_IPV6 */
+    
+    /*    uip_appdata += len1;*/
+    memcpy(uip_appdata, (u8_t *)uip_appdata + len1, len2);
+
+    uip_add32(BUF->seqno, len1);
+    BUF->seqno[0] = uip_acc32[0];
+    BUF->seqno[1] = uip_acc32[1];
+    BUF->seqno[2] = uip_acc32[2];
+    BUF->seqno[3] = uip_acc32[3];
+    
+    /* Recalculate the TCP checksum. */
+    BUF->tcpchksum = 0;
+    BUF->tcpchksum = ~(uip_tcpchksum());
+
+#if !UIP_CONF_IPV6
+    /* Recalculate the IP checksum. */
+    BUF->ipchksum = 0;
+    BUF->ipchksum = ~(uip_ipchksum());
+#endif /* UIP_CONF_IPV6 */
+
+    /* Transmit the second packet. */
+    /*    uip_fw_output();*/
+    tcpip_output();
+  } else {
+    /*    uip_fw_output();*/
+    tcpip_output();
+  }
+     
+}
+/*-----------------------------------------------------------------------------*/
Index: uKadecot/trunk/uip/uip/uip-split.h
===================================================================
--- uKadecot/trunk/uip/uip/uip-split.h	(revision 101)
+++ uKadecot/trunk/uip/uip/uip-split.h	(revision 101)
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2004, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id$
+ */
+/**
+ * \addtogroup uip
+ * @{
+ */
+
+/**
+ * \defgroup uipsplit uIP TCP throughput booster hack
+ * @{
+ *
+ * The basic uIP TCP implementation only allows each TCP connection to
+ * have a single TCP segment in flight at any given time. Because of
+ * the delayed ACK algorithm employed by most TCP receivers, uIP's
+ * limit on the amount of in-flight TCP segments seriously reduces the
+ * maximum achievable throughput for sending data from uIP.
+ *
+ * The uip-split module is a hack which tries to remedy this
+ * situation. By splitting maximum sized outgoing TCP segments into
+ * two, the delayed ACK algorithm is not invoked at TCP
+ * receivers. This improves the throughput when sending data from uIP
+ * by orders of magnitude.
+ *
+ * The uip-split module uses the uip-fw module (uIP IP packet
+ * forwarding) for sending packets. Therefore, the uip-fw module must
+ * be set up with the appropriate network interfaces for this module
+ * to work.
+ */
+
+
+/**
+ * \file
+ * Module for splitting outbound TCP segments in two to avoid the
+ * delayed ACK throughput degradation.
+ * \author
+ * Adam Dunkels <adam@sics.se>
+ *
+ */
+
+#ifndef __UIP_SPLIT_H__
+#define __UIP_SPLIT_H__
+
+/**
+ * Handle outgoing packets.
+ *
+ * This function inspects an outgoing packet in the uip_buf buffer and
+ * sends it out using the uip_fw_output() function. If the packet is a
+ * full-sized TCP segment it will be split into two segments and
+ * transmitted separately. This function should be called instead of
+ * the actual device driver output function, or the uip_fw_output()
+ * function.
+ *
+ * The headers of the outgoing packet is assumed to be in the uip_buf
+ * buffer and the payload is assumed to be wherever uip_appdata
+ * points. The length of the outgoing packet is assumed to be in the
+ * uip_len variable.
+ *
+ */
+void uip_split_output(void);
+
+#endif /* __UIP_SPLIT_H__ */
+
+/** @} */
+/** @} */
Index: uKadecot/trunk/uip/uip/uip.c
===================================================================
--- uKadecot/trunk/uip/uip/uip.c	(revision 101)
+++ uKadecot/trunk/uip/uip/uip.c	(revision 101)
@@ -0,0 +1,1909 @@
+#define DEBUG_PRINTF(...) /*printf(__VA_ARGS__)*/
+
+/**
+ * \defgroup uip The uIP TCP/IP stack
+ * @{
+ *
+ * uIP is an implementation of the TCP/IP protocol stack intended for
+ * small 8-bit and 16-bit microcontrollers.
+ *
+ * uIP provides the necessary protocols for Internet communication,
+ * with a very small code footprint and RAM requirements - the uIP
+ * code size is on the order of a few kilobytes and RAM usage is on
+ * the order of a few hundred bytes.
+ */
+
+/**
+ * \file
+ * The uIP TCP/IP stack code.
+ * \author Adam Dunkels <adam@dunkels.com>
+ */
+
+/*
+ * Copyright (c) 2001-2003, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id$
+ *
+ */
+
+/*
+ * uIP is a small implementation of the IP, UDP and TCP protocols (as
+ * well as some basic ICMP stuff). The implementation couples the IP,
+ * UDP, TCP and the application layers very tightly. To keep the size
+ * of the compiled code down, this code frequently uses the goto
+ * statement. While it would be possible to break the uip_process()
+ * function into many smaller functions, this would increase the code
+ * size because of the overhead of parameter passing and the fact that
+ * the optimier would not be as efficient.
+ *
+ * The principle is that we have a small buffer, called the uip_buf,
+ * in which the device driver puts an incoming packet. The TCP/IP
+ * stack parses the headers in the packet, and calls the
+ * application. If the remote host has sent data to the application,
+ * this data is present in the uip_buf and the application read the
+ * data from there. It is up to the application to put this data into
+ * a byte stream if needed. The application will not be fed with data
+ * that is out of sequence.
+ *
+ * If the application whishes to send data to the peer, it should put
+ * its data into the uip_buf. The uip_appdata pointer points to the
+ * first available byte. The TCP/IP stack will calculate the
+ * checksums, and fill in the necessary header fields and finally send
+ * the packet back to the peer.
+*/
+
+#include "uip.h"
+#include "uipopt.h"
+#include "uip_arch.h"
+
+#if UIP_CONF_IPV6
+#include "uip-neighbor.h"
+#endif /* UIP_CONF_IPV6 */
+
+#include <string.h>
+
+/*---------------------------------------------------------------------------*/
+/* Variable definitions. */
+
+
+/* The IP address of this host. If it is defined to be fixed (by
+   setting UIP_FIXEDADDR to 1 in uipopt.h), the address is set
+   here. Otherwise, the address */
+#if UIP_FIXEDADDR > 0
+const uip_ipaddr_t uip_hostaddr =
+  {HTONS((UIP_IPADDR0 << 8) | UIP_IPADDR1),
+   HTONS((UIP_IPADDR2 << 8) | UIP_IPADDR3)};
+const uip_ipaddr_t uip_draddr =
+  {HTONS((UIP_DRIPADDR0 << 8) | UIP_DRIPADDR1),
+   HTONS((UIP_DRIPADDR2 << 8) | UIP_DRIPADDR3)};
+const uip_ipaddr_t uip_netmask =
+  {HTONS((UIP_NETMASK0 << 8) | UIP_NETMASK1),
+   HTONS((UIP_NETMASK2 << 8) | UIP_NETMASK3)};
+#else
+uip_ipaddr_t uip_hostaddr, uip_draddr, uip_netmask;
+#endif /* UIP_FIXEDADDR */
+
+static const uip_ipaddr_t all_ones_addr =
+#if UIP_CONF_IPV6
+  {0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff};
+#else /* UIP_CONF_IPV6 */
+  {0xffff,0xffff};
+#endif /* UIP_CONF_IPV6 */
+static const uip_ipaddr_t all_zeroes_addr =
+#if UIP_CONF_IPV6
+  {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000};
+#else /* UIP_CONF_IPV6 */
+  {0x0000,0x0000};
+#endif /* UIP_CONF_IPV6 */
+
+
+#if UIP_FIXEDETHADDR
+const struct uip_eth_addr uip_ethaddr = {{UIP_ETHADDR0,
+                                          UIP_ETHADDR1,
+                                          UIP_ETHADDR2,
+                                          UIP_ETHADDR3,
+                                          UIP_ETHADDR4,
+                                          UIP_ETHADDR5}};
+#else
+struct uip_eth_addr uip_ethaddr = {{0,0,0,0,0,0}};
+#endif
+
+#ifndef UIP_CONF_EXTERNAL_BUFFER
+u8_t uip_buf[UIP_BUFSIZE + 2];   /* The packet buffer that contains
+                                    incoming packets. */
+#endif /* UIP_CONF_EXTERNAL_BUFFER */
+
+void *uip_appdata;               /* The uip_appdata pointer points to
+                                    application data. */
+void *uip_sappdata;              /* The uip_appdata pointer points to
+                                    the application data which is to
+                                    be sent. */
+#if UIP_URGDATA > 0
+void *uip_urgdata;               /* The uip_urgdata pointer points to
+                                       urgent data (out-of-band data), if
+                                       present. */
+u16_t uip_urglen, uip_surglen;
+#endif /* UIP_URGDATA > 0 */
+
+u16_t uip_len, uip_slen;
+                             /* The uip_len is either 8 or 16 bits,
+                                depending on the maximum packet
+                                size. */
+
+u8_t uip_flags;     /* The uip_flags variable is used for
+                                communication between the TCP/IP stack
+                                and the application program. */
+struct uip_conn *uip_conn;   /* uip_conn always points to the current
+                                connection. */
+
+struct uip_conn uip_conns[UIP_CONNS];
+                             /* The uip_conns array holds all TCP
+                                connections. */
+u16_t uip_listenports[UIP_LISTENPORTS];
+                             /* The uip_listenports list all currently
+                                listning ports. */
+#if UIP_UDP
+struct uip_udp_conn *uip_udp_conn;
+struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS];
+#endif /* UIP_UDP */
+
+static u16_t ipid;           /* Ths ipid variable is an increasing
+                                number that is used for the IP ID
+                                field. */
+
+void uip_setipid(u16_t id) { ipid = id; }
+
+static u8_t iss[4];          /* The iss variable is used for the TCP
+                                initial sequence number. */
+
+#if UIP_ACTIVE_OPEN
+static u16_t lastport;       /* Keeps track of the last port used for
+                                a new connection. */
+#endif /* UIP_ACTIVE_OPEN */
+
+/* Temporary variables. */
+u8_t uip_acc32[4];
+static u8_t c, opt;
+static u16_t tmp16;
+
+/* Structures and definitions. */
+#define TCP_FIN 0x01
+#define TCP_SYN 0x02
+#define TCP_RST 0x04
+#define TCP_PSH 0x08
+#define TCP_ACK 0x10
+#define TCP_URG 0x20
+#define TCP_CTL 0x3f
+
+#define TCP_OPT_END     0   /* End of TCP options list */
+#define TCP_OPT_NOOP    1   /* "No-operation" TCP option */
+#define TCP_OPT_MSS     2   /* Maximum segment size TCP option */
+
+#define TCP_OPT_MSS_LEN 4   /* Length of TCP MSS option. */
+
+#define ICMP_ECHO_REPLY 0
+#define ICMP_ECHO       8
+
+#define ICMP6_ECHO_REPLY             129
+#define ICMP6_ECHO                   128
+#define ICMP6_NEIGHBOR_SOLICITATION  135
+#define ICMP6_NEIGHBOR_ADVERTISEMENT 136
+
+#define ICMP6_FLAG_S (1 << 6)
+
+#define ICMP6_OPTION_SOURCE_LINK_ADDRESS 1
+#define ICMP6_OPTION_TARGET_LINK_ADDRESS 2
+
+
+/* Macros. */
+#define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
+#define FBUF ((struct uip_tcpip_hdr *)&uip_reassbuf[0])
+#define ICMPBUF ((struct uip_icmpip_hdr *)&uip_buf[UIP_LLH_LEN])
+#define UDPBUF ((struct uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN])
+
+
+#if UIP_STATISTICS == 1
+struct uip_stats uip_stat;
+#define UIP_STAT(s) s
+#else
+#define UIP_STAT(s)
+#endif /* UIP_STATISTICS == 1 */
+
+#if UIP_LOGGING == 1
+#include <stdio.h>
+void uip_log(char *msg);
+#define UIP_LOG(m) uip_log(m)
+#else
+#define UIP_LOG(m)
+#endif /* UIP_LOGGING == 1 */
+
+#if ! UIP_ARCH_ADD32
+void
+uip_add32(u8_t *op32, u16_t op16)
+{
+  uip_acc32[3] = op32[3] + (op16 & 0xff);
+  uip_acc32[2] = op32[2] + (op16 >> 8);
+  uip_acc32[1] = op32[1];
+  uip_acc32[0] = op32[0];
+
+  if(uip_acc32[2] < (op16 >> 8)) {
+    ++uip_acc32[1];
+    if(uip_acc32[1] == 0) {
+      ++uip_acc32[0];
+    }
+  }
+
+
+  if(uip_acc32[3] < (op16 & 0xff)) {
+    ++uip_acc32[2];
+    if(uip_acc32[2] == 0) {
+      ++uip_acc32[1];
+      if(uip_acc32[1] == 0) {
+        ++uip_acc32[0];
+      }
+    }
+  }
+}
+
+#endif /* UIP_ARCH_ADD32 */
+
+#if ! UIP_ARCH_CHKSUM
+/*---------------------------------------------------------------------------*/
+static u16_t
+chksum(u16_t sum, const u8_t *data, u16_t len)
+{
+  u16_t t;
+  const u8_t *dataptr;
+  const u8_t *last_byte;
+
+  dataptr = data;
+  last_byte = data + len - 1;
+
+  while(dataptr < last_byte) {	/* At least two more bytes */
+    t = (dataptr[0] << 8) + dataptr[1];
+    sum += t;
+    if(sum < t) {
+      sum++;		/* carry */
+    }
+    dataptr += 2;
+  }
+
+  if(dataptr == last_byte) {
+    t = (dataptr[0] << 8) + 0;
+    sum += t;
+    if(sum < t) {
+      sum++;		/* carry */
+    }
+  }
+
+  /* Return sum in host byte order. */
+  return sum;
+}
+/*---------------------------------------------------------------------------*/
+u16_t
+uip_chksum(u16_t *data, u16_t len)
+{
+  return htons(chksum(0, (u8_t *)data, len));
+}
+/*---------------------------------------------------------------------------*/
+#ifndef UIP_ARCH_IPCHKSUM
+u16_t
+uip_ipchksum(void)
+{
+  u16_t sum;
+
+  sum = chksum(0, &uip_buf[UIP_LLH_LEN], UIP_IPH_LEN);
+  DEBUG_PRINTF("uip_ipchksum: sum 0x%04x\n", sum);
+  return (sum == 0) ? 0xffff : htons(sum);
+}
+#endif
+/*---------------------------------------------------------------------------*/
+static u16_t
+upper_layer_chksum(u8_t proto)
+{
+  u16_t upper_layer_len;
+  u16_t sum;
+
+#if UIP_CONF_IPV6
+  upper_layer_len = (((u16_t)(BUF->len[0]) << 8) + BUF->len[1]);
+#else /* UIP_CONF_IPV6 */
+  upper_layer_len = (((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - UIP_IPH_LEN;
+#endif /* UIP_CONF_IPV6 */
+
+  /* First sum pseudoheader. */
+
+  /* IP protocol and length fields. This addition cannot carry. */
+  sum = upper_layer_len + proto;
+  /* Sum IP source and destination addresses. */
+  sum = chksum(sum, (u8_t *)&BUF->srcipaddr[0], 2 * sizeof(uip_ipaddr_t));
+
+  /* Sum TCP header and data. */
+  sum = chksum(sum, &uip_buf[UIP_IPH_LEN + UIP_LLH_LEN],
+               upper_layer_len);
+
+  return (sum == 0) ? 0xffff : htons(sum);
+}
+/*---------------------------------------------------------------------------*/
+#if UIP_CONF_IPV6
+u16_t
+uip_icmp6chksum(void)
+{
+  return upper_layer_chksum(UIP_PROTO_ICMP6);
+
+}
+#endif /* UIP_CONF_IPV6 */
+/*---------------------------------------------------------------------------*/
+u16_t
+uip_tcpchksum(void)
+{
+  return upper_layer_chksum(UIP_PROTO_TCP);
+}
+/*---------------------------------------------------------------------------*/
+#if UIP_UDP_CHECKSUMS
+u16_t
+uip_udpchksum(void)
+{
+  return upper_layer_chksum(UIP_PROTO_UDP);
+}
+#endif /* UIP_UDP_CHECKSUMS */
+#endif /* UIP_ARCH_CHKSUM */
+u8_t
+uip_ismulticast(uip_ipaddr_t ipaddr)
+{
+#if UIP_CONF_IPV6
+  return 0;
+#else
+  static const u16_t multicast_ipaddr[2] = { 0x00e0, 0x0000 };
+  static const u16_t multicast_mask[2] = { 0x00f0, 0x0000 };
+  return uip_ipaddr_maskcmp(ipaddr, multicast_ipaddr, multicast_mask);
+#endif
+}
+/*---------------------------------------------------------------------------*/
+void
+uip_init(void)
+{
+  for(c = 0; c < UIP_LISTENPORTS; ++c) {
+    uip_listenports[c] = 0;
+  }
+  for(c = 0; c < UIP_CONNS; ++c) {
+    uip_conns[c].tcpstateflags = UIP_CLOSED;
+  }
+#if UIP_ACTIVE_OPEN
+  lastport = 1024;
+#endif /* UIP_ACTIVE_OPEN */
+
+#if UIP_UDP
+  for(c = 0; c < UIP_UDP_CONNS; ++c) {
+    uip_udp_conns[c].lport = 0;
+  }
+#endif /* UIP_UDP */
+
+
+  /* IPv4 initialization. */
+#if UIP_FIXEDADDR == 0
+  /*  uip_hostaddr[0] = uip_hostaddr[1] = 0;*/
+#endif /* UIP_FIXEDADDR */
+
+}
+/*---------------------------------------------------------------------------*/
+#if UIP_ACTIVE_OPEN
+struct uip_conn *
+uip_connect(uip_ipaddr_t *ripaddr, u16_t rport)
+{
+  register struct uip_conn *conn, *cconn;
+
+  /* Find an unused local port. */
+ again:
+  ++lastport;
+
+  if(lastport >= 32000) {
+    lastport = 4096;
+  }
+
+  /* Check if this port is already in use, and if so try to find
+     another one. */
+  for(c = 0; c < UIP_CONNS; ++c) {
+    conn = &uip_conns[c];
+    if(conn->tcpstateflags != UIP_CLOSED &&
+       conn->lport == htons(lastport)) {
+      goto again;
+    }
+  }
+
+  conn = 0;
+  for(c = 0; c < UIP_CONNS; ++c) {
+    cconn = &uip_conns[c];
+    if(cconn->tcpstateflags == UIP_CLOSED) {
+      conn = cconn;
+      break;
+    }
+    if(cconn->tcpstateflags == UIP_TIME_WAIT) {
+      if(conn == 0 ||
+         cconn->timer > conn->timer) {
+        conn = cconn;
+      }
+    }
+  }
+
+  if(conn == 0) {
+    return 0;
+  }
+
+  conn->tcpstateflags = UIP_SYN_SENT;
+
+  conn->snd_nxt[0] = iss[0];
+  conn->snd_nxt[1] = iss[1];
+  conn->snd_nxt[2] = iss[2];
+  conn->snd_nxt[3] = iss[3];
+
+  conn->initialmss = conn->mss = UIP_TCP_MSS;
+
+  conn->len = 1;   /* TCP length of the SYN is one. */
+  conn->nrtx = 0;
+  conn->timer = 1; /* Send the SYN next time around. */
+  conn->rto = UIP_RTO;
+  conn->sa = 0;
+  conn->sv = 16;   /* Initial value of the RTT variance. */
+  conn->lport = htons(lastport);
+  conn->rport = rport;
+  uip_ipaddr_copy(&conn->ripaddr, ripaddr);
+
+  return conn;
+}
+#endif /* UIP_ACTIVE_OPEN */
+/*---------------------------------------------------------------------------*/
+#if UIP_UDP
+struct uip_udp_conn *
+uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport)
+{
+  register struct uip_udp_conn *conn;
+
+  /* Find an unused local port. */
+ again:
+  ++lastport;
+
+  if(lastport >= 32000) {
+    lastport = 4096;
+  }
+
+  for(c = 0; c < UIP_UDP_CONNS; ++c) {
+    if(uip_udp_conns[c].lport == htons(lastport)) {
+      goto again;
+    }
+  }
+
+
+  conn = 0;
+  for(c = 0; c < UIP_UDP_CONNS; ++c) {
+    if(uip_udp_conns[c].lport == 0) {
+      conn = &uip_udp_conns[c];
+      break;
+    }
+  }
+
+  if(conn == 0) {
+    return 0;
+  }
+
+  conn->lport = HTONS(lastport);
+  conn->rport = rport;
+  if(ripaddr == NULL) {
+    memset(conn->ripaddr, 0, sizeof(uip_ipaddr_t));
+  } else {
+    uip_ipaddr_copy(&conn->ripaddr, ripaddr);
+  }
+  conn->ttl = UIP_TTL;
+
+  return conn;
+}
+#endif /* UIP_UDP */
+/*---------------------------------------------------------------------------*/
+void
+uip_unlisten(u16_t port)
+{
+  for(c = 0; c < UIP_LISTENPORTS; ++c) {
+    if(uip_listenports[c] == port) {
+      uip_listenports[c] = 0;
+      return;
+    }
+  }
+}
+/*---------------------------------------------------------------------------*/
+void
+uip_listen(u16_t port)
+{
+  for(c = 0; c < UIP_LISTENPORTS; ++c) {
+    if(uip_listenports[c] == 0) {
+      uip_listenports[c] = port;
+      return;
+    }
+  }
+}
+/*---------------------------------------------------------------------------*/
+/* XXX: IP fragment reassembly: not well-tested. */
+
+#if UIP_REASSEMBLY && !UIP_CONF_IPV6
+#define UIP_REASS_BUFSIZE (UIP_BUFSIZE - UIP_LLH_LEN)
+static u8_t uip_reassbuf[UIP_REASS_BUFSIZE];
+static u8_t uip_reassbitmap[UIP_REASS_BUFSIZE / (8 * 8)];
+static const u8_t bitmap_bits[8] = {0xff, 0x7f, 0x3f, 0x1f,
+                                    0x0f, 0x07, 0x03, 0x01};
+static u16_t uip_reasslen;
+static u8_t uip_reassflags;
+#define UIP_REASS_FLAG_LASTFRAG 0x01
+static u8_t uip_reasstmr;
+
+#define IP_MF   0x20
+
+static u8_t
+uip_reass(void)
+{
+  u16_t offset, len;
+  u16_t i;
+
+  /* If ip_reasstmr is zero, no packet is present in the buffer, so we
+     write the IP header of the fragment into the reassembly
+     buffer. The timer is updated with the maximum age. */
+  if(uip_reasstmr == 0) {
+    memcpy(uip_reassbuf, &BUF->vhl, UIP_IPH_LEN);
+    uip_reasstmr = UIP_REASS_MAXAGE;
+    uip_reassflags = 0;
+    /* Clear the bitmap. */
+    memset(uip_reassbitmap, 0, sizeof(uip_reassbitmap));
+  }
+
+  /* Check if the incoming fragment matches the one currently present
+     in the reasembly buffer. If so, we proceed with copying the
+     fragment into the buffer. */
+  if(BUF->srcipaddr[0] == FBUF->srcipaddr[0] &&
+     BUF->srcipaddr[1] == FBUF->srcipaddr[1] &&
+     BUF->destipaddr[0] == FBUF->destipaddr[0] &&
+     BUF->destipaddr[1] == FBUF->destipaddr[1] &&
+     BUF->ipid[0] == FBUF->ipid[0] &&
+     BUF->ipid[1] == FBUF->ipid[1]) {
+
+    len = (BUF->len[0] << 8) + BUF->len[1] - (BUF->vhl & 0x0f) * 4;
+    offset = (((BUF->ipoffset[0] & 0x3f) << 8) + BUF->ipoffset[1]) * 8;
+
+    /* If the offset or the offset + fragment length overflows the
+       reassembly buffer, we discard the entire packet. */
+    if(offset > UIP_REASS_BUFSIZE ||
+       offset + len > UIP_REASS_BUFSIZE) {
+      uip_reasstmr = 0;
+      goto nullreturn;
+    }
+
+    /* Copy the fragment into the reassembly buffer, at the right
+       offset. */
+    memcpy(&uip_reassbuf[UIP_IPH_LEN + offset],
+           (char *)BUF + (int)((BUF->vhl & 0x0f) * 4),
+           len);
+
+    /* Update the bitmap. */
+    if(offset / (8 * 8) == (offset + len) / (8 * 8)) {
+      /* If the two endpoints are in the same byte, we only update
+         that byte. */
+
+      uip_reassbitmap[offset / (8 * 8)] |=
+             bitmap_bits[(offset / 8 ) & 7] &
+             ~bitmap_bits[((offset + len) / 8 ) & 7];
+    } else {
+      /* If the two endpoints are in different bytes, we update the
+         bytes in the endpoints and fill the stuff inbetween with
+         0xff. */
+      uip_reassbitmap[offset / (8 * 8)] |=
+        bitmap_bits[(offset / 8 ) & 7];
+      for(i = 1 + offset / (8 * 8); i < (offset + len) / (8 * 8); ++i) {
+        uip_reassbitmap[i] = 0xff;
+      }
+      uip_reassbitmap[(offset + len) / (8 * 8)] |=
+        ~bitmap_bits[((offset + len) / 8 ) & 7];
+    }
+
+    /* If this fragment has the More Fragments flag set to zero, we
+       know that this is the last fragment, so we can calculate the
+       size of the entire packet. We also set the
+       IP_REASS_FLAG_LASTFRAG flag to indicate that we have received
+       the final fragment. */
+
+    if((BUF->ipoffset[0] & IP_MF) == 0) {
+      uip_reassflags |= UIP_REASS_FLAG_LASTFRAG;
+      uip_reasslen = offset + len;
+    }
+
+    /* Finally, we check if we have a full packet in the buffer. We do
+       this by checking if we have the last fragment and if all bits
+       in the bitmap are set. */
+    if(uip_reassflags & UIP_REASS_FLAG_LASTFRAG) {
+      /* Check all bytes up to and including all but the last byte in
+         the bitmap. */
+      for(i = 0; i < uip_reasslen / (8 * 8) - 1; ++i) {
+        if(uip_reassbitmap[i] != 0xff) {
+          goto nullreturn;
+        }
+      }
+      /* Check the last byte in the bitmap. It should contain just the
+         right amount of bits. */
+      if(uip_reassbitmap[uip_reasslen / (8 * 8)] !=
+         (u8_t)~bitmap_bits[uip_reasslen / 8 & 7]) {
+        goto nullreturn;
+      }
+
+      /* If we have come this far, we have a full packet in the
+         buffer, so we allocate a pbuf and copy the packet into it. We
+         also reset the timer. */
+      uip_reasstmr = 0;
+      memcpy(BUF, FBUF, uip_reasslen);
+
+      /* Pretend to be a "normal" (i.e., not fragmented) IP packet
+         from now on. */
+      BUF->ipoffset[0] = BUF->ipoffset[1] = 0;
+      BUF->len[0] = uip_reasslen >> 8;
+      BUF->len[1] = uip_reasslen & 0xff;
+      BUF->ipchksum = 0;
+      BUF->ipchksum = ~(uip_ipchksum());
+
+      return uip_reasslen;
+    }
+  }
+
+ nullreturn:
+  return 0;
+}
+#endif /* UIP_REASSEMBLY */
+/*---------------------------------------------------------------------------*/
+static void
+uip_add_rcv_nxt(u16_t n)
+{
+  uip_add32(uip_conn->rcv_nxt, n);
+  uip_conn->rcv_nxt[0] = uip_acc32[0];
+  uip_conn->rcv_nxt[1] = uip_acc32[1];
+  uip_conn->rcv_nxt[2] = uip_acc32[2];
+  uip_conn->rcv_nxt[3] = uip_acc32[3];
+}
+/*---------------------------------------------------------------------------*/
+void
+uip_process(u8_t flag)
+{
+  register struct uip_conn *uip_connr = uip_conn;
+
+#if UIP_UDP
+  if(flag == UIP_UDP_SEND_CONN) {
+    goto udp_send;
+  }
+#endif /* UIP_UDP */
+
+  uip_sappdata = uip_appdata = &uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN];
+
+  /* Check if we were invoked because of a poll request for a
+     particular connection. */
+  if(flag == UIP_POLL_REQUEST) {
+    if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED &&
+       !uip_outstanding(uip_connr)) {
+        uip_flags = UIP_POLL;
+        UIP_APPCALL();
+        goto appsend;
+    }
+    goto drop;
+
+    /* Check if we were invoked because of the perodic timer fireing. */
+  } else if(flag == UIP_TIMER) {
+#if UIP_REASSEMBLY
+    if(uip_reasstmr != 0) {
+      --uip_reasstmr;
+    }
+#endif /* UIP_REASSEMBLY */
+    /* Increase the initial sequence number. */
+    if(++iss[3] == 0) {
+      if(++iss[2] == 0) {
+        if(++iss[1] == 0) {
+          ++iss[0];
+        }
+      }
+    }
+
+    /* Reset the length variables. */
+    uip_len = 0;
+    uip_slen = 0;
+
+    /* Check if the connection is in a state in which we simply wait
+       for the connection to time out. If so, we increase the
+       connection's timer and remove the connection if it times
+       out. */
+    if(uip_connr->tcpstateflags == UIP_TIME_WAIT ||
+       uip_connr->tcpstateflags == UIP_FIN_WAIT_2) {
+      ++(uip_connr->timer);
+      if(uip_connr->timer == UIP_TIME_WAIT_TIMEOUT) {
+        uip_connr->tcpstateflags = UIP_CLOSED;
+      }
+    } else if(uip_connr->tcpstateflags != UIP_CLOSED) {
+      /* If the connection has outstanding data, we increase the
+         connection's timer and see if it has reached the RTO value
+         in which case we retransmit. */
+      if(uip_outstanding(uip_connr)) {
+        if(uip_connr->timer-- == 0) {
+          if(uip_connr->nrtx == UIP_MAXRTX ||
+             ((uip_connr->tcpstateflags == UIP_SYN_SENT ||
+               uip_connr->tcpstateflags == UIP_SYN_RCVD) &&
+              uip_connr->nrtx == UIP_MAXSYNRTX)) {
+            uip_connr->tcpstateflags = UIP_CLOSED;
+
+            /* We call UIP_APPCALL() with uip_flags set to
+               UIP_TIMEDOUT to inform the application that the
+               connection has timed out. */
+            uip_flags = UIP_TIMEDOUT;
+            UIP_APPCALL();
+
+            /* We also send a reset packet to the remote host. */
+            BUF->flags = TCP_RST | TCP_ACK;
+            goto tcp_send_nodata;
+          }
+
+          /* Exponential backoff. */
+          uip_connr->timer = UIP_RTO << (uip_connr->nrtx > 4?
+                                         4:
+                                         uip_connr->nrtx);
+          ++(uip_connr->nrtx);
+
+          /* Ok, so we need to retransmit. We do this differently
+             depending on which state we are in. In ESTABLISHED, we
+             call upon the application so that it may prepare the
+             data for the retransmit. In SYN_RCVD, we resend the
+             SYNACK that we sent earlier and in LAST_ACK we have to
+             retransmit our FINACK. */
+          UIP_STAT(++uip_stat.tcp.rexmit);
+          switch(uip_connr->tcpstateflags & UIP_TS_MASK) {
+          case UIP_SYN_RCVD:
+            /* In the SYN_RCVD state, we should retransmit our
+               SYNACK. */
+            goto tcp_send_synack;
+
+#if UIP_ACTIVE_OPEN
+          case UIP_SYN_SENT:
+            /* In the SYN_SENT state, we retransmit out SYN. */
+            BUF->flags = 0;
+            goto tcp_send_syn;
+#endif /* UIP_ACTIVE_OPEN */
+
+          case UIP_ESTABLISHED:
+            /* In the ESTABLISHED state, we call upon the application
+               to do the actual retransmit after which we jump into
+               the code for sending out the packet (the apprexmit
+               label). */
+            uip_flags = UIP_REXMIT;
+            UIP_APPCALL();
+            goto apprexmit;
+
+          case UIP_FIN_WAIT_1:
+          case UIP_CLOSING:
+          case UIP_LAST_ACK:
+            /* In all these states we should retransmit a FINACK. */
+            goto tcp_send_finack;
+
+          }
+        }
+      } else if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED) {
+        /* If there was no need for a retransmission, we poll the
+           application for new data. */
+        uip_flags = UIP_POLL;
+        UIP_APPCALL();
+        goto appsend;
+      }
+    }
+    goto drop;
+  }
+#if UIP_UDP
+  if(flag == UIP_UDP_TIMER) {
+    if(uip_udp_conn->lport != 0) {
+      uip_conn = NULL;
+      uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN];
+      uip_len = uip_slen = 0;
+      uip_flags = UIP_POLL;
+      UIP_UDP_APPCALL();
+      goto udp_send;
+    } else {
+      goto drop;
+    }
+  }
+#endif
+
+  /* This is where the input processing starts. */
+  UIP_STAT(++uip_stat.ip.recv);
+
+  /* Start of IP input header processing code. */
+
+#if UIP_CONF_IPV6
+  /* Check validity of the IP header. */
+  if((BUF->vtc & 0xf0) != 0x60)  { /* IP version and header length. */
+    UIP_STAT(++uip_stat.ip.drop);
+    UIP_STAT(++uip_stat.ip.vhlerr);
+    UIP_LOG("ipv6: invalid version.");
+    goto drop;
+  }
+#else /* UIP_CONF_IPV6 */
+  /* Check validity of the IP header. */
+  if(BUF->vhl != 0x45)  { /* IP version and header length. */
+    UIP_STAT(++uip_stat.ip.drop);
+    UIP_STAT(++uip_stat.ip.vhlerr);
+    UIP_LOG("ip: invalid version or header length.");
+    goto drop;
+  }
+#endif /* UIP_CONF_IPV6 */
+
+  /* Check the size of the packet. If the size reported to us in
+     uip_len is smaller the size reported in the IP header, we assume
+     that the packet has been corrupted in transit. If the size of
+     uip_len is larger than the size reported in the IP packet header,
+     the packet has been padded and we set uip_len to the correct
+     value.. */
+
+  if((BUF->len[0] << 8) + BUF->len[1] <= uip_len) {
+    uip_len = (BUF->len[0] << 8) + BUF->len[1];
+#if UIP_CONF_IPV6
+    uip_len += 40; /* The length reported in the IPv6 header is the
+                      length of the payload that follows the
+                      header. However, uIP uses the uip_len variable
+                      for holding the size of the entire packet,
+                      including the IP header. For IPv4 this is not a
+                      problem as the length field in the IPv4 header
+                      contains the length of the entire packet. But
+                      for IPv6 we need to add the size of the IPv6
+                      header (40 bytes). */
+#endif /* UIP_CONF_IPV6 */
+  } else {
+    UIP_LOG("ip: packet shorter than reported in IP header.");
+    goto drop;
+  }
+
+#if !UIP_CONF_IPV6
+  /* Check the fragment flag. */
+  if((BUF->ipoffset[0] & 0x3f) != 0 ||
+     BUF->ipoffset[1] != 0) {
+#if UIP_REASSEMBLY
+    uip_len = uip_reass();
+    if(uip_len == 0) {
+      goto drop;
+    }
+#else /* UIP_REASSEMBLY */
+    UIP_STAT(++uip_stat.ip.drop);
+    UIP_STAT(++uip_stat.ip.fragerr);
+    UIP_LOG("ip: fragment dropped.");
+    goto drop;
+#endif /* UIP_REASSEMBLY */
+  }
+#endif /* UIP_CONF_IPV6 */
+
+  if(uip_ipaddr_cmp(uip_hostaddr, all_zeroes_addr)) {
+    /* If we are configured to use ping IP address configuration and
+       hasn't been assigned an IP address yet, we accept all ICMP
+       packets. */
+#if UIP_PINGADDRCONF && !UIP_CONF_IPV6
+    if(BUF->proto == UIP_PROTO_ICMP) {
+      UIP_LOG("ip: possible ping config packet received.");
+      goto icmp_input;
+    } else {
+      UIP_LOG("ip: packet dropped since no address assigned.");
+      goto drop;
+    }
+#endif /* UIP_PINGADDRCONF */
+
+  } else {
+    /* If IP broadcast support is configured, we check for a broadcast
+       UDP packet, which may be destined to us. */
+#if UIP_BROADCAST
+    DEBUG_PRINTF("UDP IP checksum 0x%04x\n", uip_ipchksum());
+    if(BUF->proto == UIP_PROTO_UDP &&
+       (uip_ipaddr_cmp(BUF->destipaddr, all_ones_addr) ||
+       uip_ismulticast(BUF->destipaddr))
+       /*&&
+         uip_ipchksum() == 0xffff*/) {
+      goto udp_input;
+    }
+#endif /* UIP_BROADCAST */
+
+    /* Check if the packet is destined for our IP address. */
+#if !UIP_CONF_IPV6
+    if(!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr)) {
+      UIP_STAT(++uip_stat.ip.drop);
+      goto drop;
+    }
+#else /* UIP_CONF_IPV6 */
+    /* For IPv6, packet reception is a little trickier as we need to
+       make sure that we listen to certain multicast addresses (all
+       hosts multicast address, and the solicited-node multicast
+       address) as well. However, we will cheat here and accept all
+       multicast packets that are sent to the ff02::/16 addresses. */
+    if(!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr) &&
+       BUF->destipaddr[0] != HTONS(0xff02)) {
+      UIP_STAT(++uip_stat.ip.drop);
+      goto drop;
+    }
+#endif /* UIP_CONF_IPV6 */
+  }
+
+#if !UIP_CONF_IPV6
+  if(uip_ipchksum() != 0xffff) { /* Compute and check the IP header
+                                    checksum. */
+    UIP_STAT(++uip_stat.ip.drop);
+    UIP_STAT(++uip_stat.ip.chkerr);
+    UIP_LOG("ip: bad checksum.");
+    goto drop;
+  }
+#endif /* UIP_CONF_IPV6 */
+
+  if(BUF->proto == UIP_PROTO_TCP) { /* Check for TCP packet. If so,
+                                       proceed with TCP input
+                                       processing. */
+    goto tcp_input;
+  }
+
+#if UIP_UDP
+  if(BUF->proto == UIP_PROTO_UDP) {
+    goto udp_input;
+  }
+#endif /* UIP_UDP */
+
+#if !UIP_CONF_IPV6
+  /* ICMPv4 processing code follows. */
+  if(BUF->proto != UIP_PROTO_ICMP) { /* We only allow ICMP packets from
+                                        here. */
+    UIP_STAT(++uip_stat.ip.drop);
+    UIP_STAT(++uip_stat.ip.protoerr);
+    UIP_LOG("ip: neither tcp nor icmp.");
+    goto drop;
+  }
+
+#if UIP_PINGADDRCONF
+ icmp_input:
+#endif /* UIP_PINGADDRCONF */
+  UIP_STAT(++uip_stat.icmp.recv);
+
+  /* ICMP echo (i.e., ping) processing. This is simple, we only change
+     the ICMP type from ECHO to ECHO_REPLY and adjust the ICMP
+     checksum before we return the packet. */
+  if(ICMPBUF->type != ICMP_ECHO) {
+    UIP_STAT(++uip_stat.icmp.drop);
+    UIP_STAT(++uip_stat.icmp.typeerr);
+    UIP_LOG("icmp: not icmp echo.");
+    goto drop;
+  }
+
+  /* If we are configured to use ping IP address assignment, we use
+     the destination IP address of this ping packet and assign it to
+     ourself. */
+#if UIP_PINGADDRCONF
+  if((uip_hostaddr[0] | uip_hostaddr[1]) == 0) {
+    uip_hostaddr[0] = BUF->destipaddr[0];
+    uip_hostaddr[1] = BUF->destipaddr[1];
+  }
+#endif /* UIP_PINGADDRCONF */
+
+  ICMPBUF->type = ICMP_ECHO_REPLY;
+
+  if(ICMPBUF->icmpchksum >= HTONS(0xffff - (ICMP_ECHO << 8))) {
+    ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8) + 1;
+  } else {
+    ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8);
+  }
+
+  /* Swap IP addresses. */
+  uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr);
+  uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
+
+  UIP_STAT(++uip_stat.icmp.sent);
+  goto send;
+
+  /* End of IPv4 input header processing code. */
+#else /* !UIP_CONF_IPV6 */
+
+  /* This is IPv6 ICMPv6 processing code. */
+  DEBUG_PRINTF("icmp6_input: length %d\n", uip_len);
+
+  if(BUF->proto != UIP_PROTO_ICMP6) { /* We only allow ICMPv6 packets from
+                                         here. */
+    UIP_STAT(++uip_stat.ip.drop);
+    UIP_STAT(++uip_stat.ip.protoerr);
+    UIP_LOG("ip: neither tcp nor icmp6.");
+    goto drop;
+  }
+
+  UIP_STAT(++uip_stat.icmp.recv);
+
+  /* If we get a neighbor solicitation for our address we should send
+     a neighbor advertisement message back. */
+  if(ICMPBUF->type == ICMP6_NEIGHBOR_SOLICITATION) {
+    if(uip_ipaddr_cmp(ICMPBUF->icmp6data, uip_hostaddr)) {
+
+      if(ICMPBUF->options[0] == ICMP6_OPTION_SOURCE_LINK_ADDRESS) {
+        /* Save the sender's address in our neighbor list. */
+        uip_neighbor_add(ICMPBUF->srcipaddr, &(ICMPBUF->options[2]));
+      }
+
+      /* We should now send a neighbor advertisement back to where the
+         neighbor solicication came from. */
+      ICMPBUF->type = ICMP6_NEIGHBOR_ADVERTISEMENT;
+      ICMPBUF->flags = ICMP6_FLAG_S; /* Solicited flag. */
+
+      ICMPBUF->reserved1 = ICMPBUF->reserved2 = ICMPBUF->reserved3 = 0;
+
+      uip_ipaddr_copy(ICMPBUF->destipaddr, ICMPBUF->srcipaddr);
+      uip_ipaddr_copy(ICMPBUF->srcipaddr, uip_hostaddr);
+      ICMPBUF->options[0] = ICMP6_OPTION_TARGET_LINK_ADDRESS;
+      ICMPBUF->options[1] = 1;  /* Options length, 1 = 8 bytes. */
+      memcpy(&(ICMPBUF->options[2]), &uip_ethaddr, sizeof(uip_ethaddr));
+      ICMPBUF->icmpchksum = 0;
+      ICMPBUF->icmpchksum = ~uip_icmp6chksum();
+      goto send;
+
+    }
+    goto drop;
+  } else if(ICMPBUF->type == ICMP6_ECHO) {
+    /* ICMP echo (i.e., ping) processing. This is simple, we only
+       change the ICMP type from ECHO to ECHO_REPLY and update the
+       ICMP checksum before we return the packet. */
+
+    ICMPBUF->type = ICMP6_ECHO_REPLY;
+
+    uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr);
+    uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
+    ICMPBUF->icmpchksum = 0;
+    ICMPBUF->icmpchksum = ~uip_icmp6chksum();
+
+    UIP_STAT(++uip_stat.icmp.sent);
+    goto send;
+  } else {
+    DEBUG_PRINTF("Unknown icmp6 message type %d\n", ICMPBUF->type);
+    UIP_STAT(++uip_stat.icmp.drop);
+    UIP_STAT(++uip_stat.icmp.typeerr);
+    UIP_LOG("icmp: unknown ICMP message.");
+    goto drop;
+  }
+
+  /* End of IPv6 ICMP processing. */
+
+#endif /* !UIP_CONF_IPV6 */
+
+#if UIP_UDP
+  /* UDP input processing. */
+ udp_input:
+  /* UDP processing is really just a hack. We don't do anything to the
+     UDP/IP headers, but let the UDP application do all the hard
+     work. If the application sets uip_slen, it has a packet to
+     send. */
+#if UIP_UDP_CHECKSUMS
+  uip_len = uip_len - UIP_IPUDPH_LEN;
+  uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN];
+  if(UDPBUF->udpchksum != 0 && uip_udpchksum() != 0xffff) {
+    UIP_STAT(++uip_stat.udp.drop);
+    UIP_STAT(++uip_stat.udp.chkerr);
+    UIP_LOG("udp: bad checksum.");
+    goto drop;
+  }
+#else /* UIP_UDP_CHECKSUMS */
+  uip_len = uip_len - UIP_IPUDPH_LEN;
+#endif /* UIP_UDP_CHECKSUMS */
+
+  /* Demultiplex this UDP packet between the UDP "connections". */
+  for(uip_udp_conn = &uip_udp_conns[0];
+      uip_udp_conn < &uip_udp_conns[UIP_UDP_CONNS];
+      ++uip_udp_conn) {
+    /* If the local UDP port is non-zero, the connection is considered
+       to be used. If so, the local port number is checked against the
+       destination port number in the received packet. If the two port
+       numbers match, the remote port number is checked if the
+       connection is bound to a remote port. Finally, if the
+       connection is bound to a remote IP address, the source IP
+       address of the packet is checked. */
+    if(uip_udp_conn->lport != 0 &&
+       UDPBUF->destport == uip_udp_conn->lport &&
+       (uip_udp_conn->rport == 0 ||
+        UDPBUF->srcport == uip_udp_conn->rport) &&
+       (uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_zeroes_addr) ||
+        uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_ones_addr) ||
+        uip_ipaddr_cmp(BUF->srcipaddr, uip_udp_conn->ripaddr))) {
+      goto udp_found;
+    }
+  }
+  UIP_LOG("udp: no matching connection found");
+  goto drop;
+
+ udp_found:
+  uip_conn = NULL;
+  uip_flags = UIP_NEWDATA;
+  uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN];
+  uip_slen = 0;
+  UIP_UDP_APPCALL();
+ udp_send:
+  if(uip_slen == 0) {
+    goto drop;
+  }
+  uip_len = uip_slen + UIP_IPUDPH_LEN;
+
+#if UIP_CONF_IPV6
+  /* For IPv6, the IP length field does not include the IPv6 IP header
+     length. */
+  BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
+  BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
+#else /* UIP_CONF_IPV6 */
+  BUF->len[0] = (uip_len >> 8);
+  BUF->len[1] = (uip_len & 0xff);
+#endif /* UIP_CONF_IPV6 */
+
+  BUF->ttl = uip_udp_conn->ttl;
+  BUF->proto = UIP_PROTO_UDP;
+
+  UDPBUF->udplen = HTONS(uip_slen + UIP_UDPH_LEN);
+  UDPBUF->udpchksum = 0;
+
+  BUF->srcport  = uip_udp_conn->lport;
+  BUF->destport = uip_udp_conn->rport;
+
+  uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
+  uip_ipaddr_copy(BUF->destipaddr, uip_udp_conn->ripaddr);
+
+  uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPTCPH_LEN];
+
+#if UIP_UDP_CHECKSUMS
+  /* Calculate UDP checksum. */
+  UDPBUF->udpchksum = ~(uip_udpchksum());
+  if(UDPBUF->udpchksum == 0) {
+    UDPBUF->udpchksum = 0xffff;
+  }
+#endif /* UIP_UDP_CHECKSUMS */
+
+  goto ip_send_nolen;
+#endif /* UIP_UDP */
+
+  /* TCP input processing. */
+ tcp_input:
+  UIP_STAT(++uip_stat.tcp.recv);
+
+  /* Start of TCP input header processing code. */
+
+  if(uip_tcpchksum() != 0xffff) {   /* Compute and check the TCP
+                                       checksum. */
+    UIP_STAT(++uip_stat.tcp.drop);
+    UIP_STAT(++uip_stat.tcp.chkerr);
+    UIP_LOG("tcp: bad checksum.");
+    goto drop;
+  }
+
+
+  /* Demultiplex this segment. */
+  /* First check any active connections. */
+  for(uip_connr = &uip_conns[0]; uip_connr <= &uip_conns[UIP_CONNS - 1];
+      ++uip_connr) {
+    if(uip_connr->tcpstateflags != UIP_CLOSED &&
+       BUF->destport == uip_connr->lport &&
+       BUF->srcport == uip_connr->rport &&
+       uip_ipaddr_cmp(BUF->srcipaddr, uip_connr->ripaddr)) {
+      goto found;
+    }
+  }
+
+  /* If we didn't find and active connection that expected the packet,
+     either this packet is an old duplicate, or this is a SYN packet
+     destined for a connection in LISTEN. If the SYN flag isn't set,
+     it is an old packet and we send a RST. */
+  if((BUF->flags & TCP_CTL) != TCP_SYN) {
+    goto reset;
+  }
+
+  tmp16 = BUF->destport;
+  /* Next, check listening connections. */
+  for(c = 0; c < UIP_LISTENPORTS; ++c) {
+    if(tmp16 == uip_listenports[c])
+      goto found_listen;
+  }
+
+  /* No matching connection found, so we send a RST packet. */
+  UIP_STAT(++uip_stat.tcp.synrst);
+ reset:
+
+  /* We do not send resets in response to resets. */
+  if(BUF->flags & TCP_RST) {
+    goto drop;
+  }
+
+  UIP_STAT(++uip_stat.tcp.rst);
+
+  BUF->flags = TCP_RST | TCP_ACK;
+  uip_len = UIP_IPTCPH_LEN;
+  BUF->tcpoffset = 5 << 4;
+
+  /* Flip the seqno and ackno fields in the TCP header. */
+  c = BUF->seqno[3];
+  BUF->seqno[3] = BUF->ackno[3];
+  BUF->ackno[3] = c;
+
+  c = BUF->seqno[2];
+  BUF->seqno[2] = BUF->ackno[2];
+  BUF->ackno[2] = c;
+
+  c = BUF->seqno[1];
+  BUF->seqno[1] = BUF->ackno[1];
+  BUF->ackno[1] = c;
+
+  c = BUF->seqno[0];
+  BUF->seqno[0] = BUF->ackno[0];
+  BUF->ackno[0] = c;
+
+  /* We also have to increase the sequence number we are
+     acknowledging. If the least significant byte overflowed, we need
+     to propagate the carry to the other bytes as well. */
+  if(++BUF->ackno[3] == 0) {
+    if(++BUF->ackno[2] == 0) {
+      if(++BUF->ackno[1] == 0) {
+        ++BUF->ackno[0];
+      }
+    }
+  }
+
+  /* Swap port numbers. */
+  tmp16 = BUF->srcport;
+  BUF->srcport = BUF->destport;
+  BUF->destport = tmp16;
+
+  /* Swap IP addresses. */
+  uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr);
+  uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
+
+  /* And send out the RST packet! */
+  goto tcp_send_noconn;
+
+  /* This label will be jumped to if we matched the incoming packet
+     with a connection in LISTEN. In that case, we should create a new
+     connection and send a SYNACK in return. */
+ found_listen:
+  /* First we check if there are any connections avaliable. Unused
+     connections are kept in the same table as used connections, but
+     unused ones have the tcpstate set to CLOSED. Also, connections in
+     TIME_WAIT are kept track of and we'll use the oldest one if no
+     CLOSED connections are found. Thanks to Eddie C. Dost for a very
+     nice algorithm for the TIME_WAIT search. */
+  uip_connr = 0;
+  for(c = 0; c < UIP_CONNS; ++c) {
+    if(uip_conns[c].tcpstateflags == UIP_CLOSED) {
+      uip_connr = &uip_conns[c];
+      break;
+    }
+    if(uip_conns[c].tcpstateflags == UIP_TIME_WAIT) {
+      if(uip_connr == 0 ||
+         uip_conns[c].timer > uip_connr->timer) {
+        uip_connr = &uip_conns[c];
+      }
+    }
+  }
+
+  if(uip_connr == 0) {
+    /* All connections are used already, we drop packet and hope that
+       the remote end will retransmit the packet at a time when we
+       have more spare connections. */
+    UIP_STAT(++uip_stat.tcp.syndrop);
+    UIP_LOG("tcp: found no unused connections.");
+    goto drop;
+  }
+  uip_conn = uip_connr;
+
+  /* Fill in the necessary fields for the new connection. */
+  uip_connr->rto = uip_connr->timer = UIP_RTO;
+  uip_connr->sa = 0;
+  uip_connr->sv = 4;
+  uip_connr->nrtx = 0;
+  uip_connr->lport = BUF->destport;
+  uip_connr->rport = BUF->srcport;
+  uip_ipaddr_copy(uip_connr->ripaddr, BUF->srcipaddr);
+  uip_connr->tcpstateflags = UIP_SYN_RCVD;
+
+  uip_connr->snd_nxt[0] = iss[0];
+  uip_connr->snd_nxt[1] = iss[1];
+  uip_connr->snd_nxt[2] = iss[2];
+  uip_connr->snd_nxt[3] = iss[3];
+  uip_connr->len = 1;
+
+  /* rcv_nxt should be the seqno from the incoming packet + 1. */
+  uip_connr->rcv_nxt[3] = BUF->seqno[3];
+  uip_connr->rcv_nxt[2] = BUF->seqno[2];
+  uip_connr->rcv_nxt[1] = BUF->seqno[1];
+  uip_connr->rcv_nxt[0] = BUF->seqno[0];
+  uip_add_rcv_nxt(1);
+
+  /* Parse the TCP MSS option, if present. */
+  if((BUF->tcpoffset & 0xf0) > 0x50) {
+    for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) {
+      opt = uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + c];
+      if(opt == TCP_OPT_END) {
+        /* End of options. */
+        break;
+      } else if(opt == TCP_OPT_NOOP) {
+        ++c;
+        /* NOP option. */
+      } else if(opt == TCP_OPT_MSS &&
+                uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) {
+        /* An MSS option with the right option length. */
+        tmp16 = ((u16_t)uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) |
+          (u16_t)uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + 3 + c];
+        uip_connr->initialmss = uip_connr->mss =
+          tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16;
+
+        /* And we are done processing options. */
+        break;
+      } else {
+        /* All other options have a length field, so that we easily
+           can skip past them. */
+        if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) {
+          /* If the length field is zero, the options are malformed
+             and we don't process them further. */
+          break;
+        }
+        c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c];
+      }
+    }
+  }
+
+  /* Our response will be a SYNACK. */
+#if UIP_ACTIVE_OPEN
+ tcp_send_synack:
+  BUF->flags = TCP_ACK;
+
+ tcp_send_syn:
+  BUF->flags |= TCP_SYN;
+#else /* UIP_ACTIVE_OPEN */
+ tcp_send_synack:
+  BUF->flags = TCP_SYN | TCP_ACK;
+#endif /* UIP_ACTIVE_OPEN */
+
+  /* We send out the TCP Maximum Segment Size option with our
+     SYNACK. */
+  BUF->optdata[0] = TCP_OPT_MSS;
+  BUF->optdata[1] = TCP_OPT_MSS_LEN;
+  BUF->optdata[2] = (UIP_TCP_MSS) / 256;
+  BUF->optdata[3] = (UIP_TCP_MSS) & 255;
+  uip_len = UIP_IPTCPH_LEN + TCP_OPT_MSS_LEN;
+  BUF->tcpoffset = ((UIP_TCPH_LEN + TCP_OPT_MSS_LEN) / 4) << 4;
+  goto tcp_send;
+
+  /* This label will be jumped to if we found an active connection. */
+ found:
+  uip_conn = uip_connr;
+  uip_flags = 0;
+  /* We do a very naive form of TCP reset processing; we just accept
+     any RST and kill our connection. We should in fact check if the
+     sequence number of this reset is wihtin our advertised window
+     before we accept the reset. */
+  if(BUF->flags & TCP_RST) {
+    uip_connr->tcpstateflags = UIP_CLOSED;
+    UIP_LOG("tcp: got reset, aborting connection.");
+    uip_flags = UIP_ABORT;
+    UIP_APPCALL();
+    goto drop;
+  }
+  /* Calculated the length of the data, if the application has sent
+     any data to us. */
+  c = (BUF->tcpoffset >> 4) << 2;
+  /* uip_len will contain the length of the actual TCP data. This is
+     calculated by subtracing the length of the TCP header (in
+     c) and the length of the IP header (20 bytes). */
+  uip_len = uip_len - c - UIP_IPH_LEN;
+
+  /* First, check if the sequence number of the incoming packet is
+     what we're expecting next. If not, we send out an ACK with the
+     correct numbers in. */
+  if(!(((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_SYN_SENT) &&
+       ((BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)))) {
+    if((uip_len > 0 || ((BUF->flags & (TCP_SYN | TCP_FIN)) != 0)) &&
+       (BUF->seqno[0] != uip_connr->rcv_nxt[0] ||
+        BUF->seqno[1] != uip_connr->rcv_nxt[1] ||
+        BUF->seqno[2] != uip_connr->rcv_nxt[2] ||
+        BUF->seqno[3] != uip_connr->rcv_nxt[3])) {
+      goto tcp_send_ack;
+    }
+  }
+
+  /* Next, check if the incoming segment acknowledges any outstanding
+     data. If so, we update the sequence number, reset the length of
+     the outstanding data, calculate RTT estimations, and reset the
+     retransmission timer. */
+  if((BUF->flags & TCP_ACK) && uip_outstanding(uip_connr)) {
+    uip_add32(uip_connr->snd_nxt, uip_connr->len);
+
+    if(BUF->ackno[0] == uip_acc32[0] &&
+       BUF->ackno[1] == uip_acc32[1] &&
+       BUF->ackno[2] == uip_acc32[2] &&
+       BUF->ackno[3] == uip_acc32[3]) {
+      /* Update sequence number. */
+      uip_connr->snd_nxt[0] = uip_acc32[0];
+      uip_connr->snd_nxt[1] = uip_acc32[1];
+      uip_connr->snd_nxt[2] = uip_acc32[2];
+      uip_connr->snd_nxt[3] = uip_acc32[3];
+
+
+      /* Do RTT estimation, unless we have done retransmissions. */
+      if(uip_connr->nrtx == 0) {
+        signed char m;
+        m = uip_connr->rto - uip_connr->timer;
+        /* This is taken directly from VJs original code in his paper */
+        m = m - (uip_connr->sa >> 3);
+        uip_connr->sa += m;
+        if(m < 0) {
+          m = -m;
+        }
+        m = m - (uip_connr->sv >> 2);
+        uip_connr->sv += m;
+        uip_connr->rto = (uip_connr->sa >> 3) + uip_connr->sv;
+
+      }
+      /* Set the acknowledged flag. */
+      uip_flags = UIP_ACKDATA;
+      /* Reset the retransmission timer. */
+      uip_connr->timer = uip_connr->rto;
+
+      /* Reset length of outstanding data. */
+      uip_connr->len = 0;
+    }
+
+  }
+
+  /* Do different things depending on in what state the connection is. */
+  switch(uip_connr->tcpstateflags & UIP_TS_MASK) {
+    /* CLOSED and LISTEN are not handled here. CLOSE_WAIT is not
+        implemented, since we force the application to close when the
+        peer sends a FIN (hence the application goes directly from
+        ESTABLISHED to LAST_ACK). */
+  case UIP_SYN_RCVD:
+    /* In SYN_RCVD we have sent out a SYNACK in response to a SYN, and
+       we are waiting for an ACK that acknowledges the data we sent
+       out the last time. Therefore, we want to have the UIP_ACKDATA
+       flag set. If so, we enter the ESTABLISHED state. */
+    if(uip_flags & UIP_ACKDATA) {
+      uip_connr->tcpstateflags = UIP_ESTABLISHED;
+      uip_flags = UIP_CONNECTED;
+      uip_connr->len = 0;
+      if(uip_len > 0) {
+        uip_flags |= UIP_NEWDATA;
+        uip_add_rcv_nxt(uip_len);
+      }
+      uip_slen = 0;
+      UIP_APPCALL();
+      goto appsend;
+    }
+    goto drop;
+#if UIP_ACTIVE_OPEN
+  case UIP_SYN_SENT:
+    /* In SYN_SENT, we wait for a SYNACK that is sent in response to
+       our SYN. The rcv_nxt is set to sequence number in the SYNACK
+       plus one, and we send an ACK. We move into the ESTABLISHED
+       state. */
+    if((uip_flags & UIP_ACKDATA) &&
+       (BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)) {
+
+      /* Parse the TCP MSS option, if present. */
+      if((BUF->tcpoffset & 0xf0) > 0x50) {
+        for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) {
+          opt = uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + c];
+          if(opt == TCP_OPT_END) {
+            /* End of options. */
+            break;
+          } else if(opt == TCP_OPT_NOOP) {
+            ++c;
+            /* NOP option. */
+          } else if(opt == TCP_OPT_MSS &&
+                    uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) {
+            /* An MSS option with the right option length. */
+            tmp16 = (uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) |
+              uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 3 + c];
+            uip_connr->initialmss =
+              uip_connr->mss = tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16;
+
+            /* And we are done processing options. */
+            break;
+          } else {
+            /* All other options have a length field, so that we easily
+               can skip past them. */
+            if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) {
+              /* If the length field is zero, the options are malformed
+                 and we don't process them further. */
+              break;
+            }
+            c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c];
+          }
+        }
+      }
+      uip_connr->tcpstateflags = UIP_ESTABLISHED;
+      uip_connr->rcv_nxt[0] = BUF->seqno[0];
+      uip_connr->rcv_nxt[1] = BUF->seqno[1];
+      uip_connr->rcv_nxt[2] = BUF->seqno[2];
+      uip_connr->rcv_nxt[3] = BUF->seqno[3];
+      uip_add_rcv_nxt(1);
+      uip_flags = UIP_CONNECTED | UIP_NEWDATA;
+      uip_connr->len = 0;
+      uip_len = 0;
+      uip_slen = 0;
+      UIP_APPCALL();
+      goto appsend;
+    }
+    /* Inform the application that the connection failed */
+    uip_flags = UIP_ABORT;
+    UIP_APPCALL();
+    /* The connection is closed after we send the RST */
+    uip_conn->tcpstateflags = UIP_CLOSED;
+    goto reset;
+#endif /* UIP_ACTIVE_OPEN */
+
+  case UIP_ESTABLISHED:
+    /* In the ESTABLISHED state, we call upon the application to feed
+    data into the uip_buf. If the UIP_ACKDATA flag is set, the
+    application should put new data into the buffer, otherwise we are
+    retransmitting an old segment, and the application should put that
+    data into the buffer.
+
+    If the incoming packet is a FIN, we should close the connection on
+    this side as well, and we send out a FIN and enter the LAST_ACK
+    state. We require that there is no outstanding data; otherwise the
+    sequence numbers will be screwed up. */
+
+    if(BUF->flags & TCP_FIN && !(uip_connr->tcpstateflags & UIP_STOPPED)) {
+      if(uip_outstanding(uip_connr)) {
+        goto drop;
+      }
+      uip_add_rcv_nxt(1 + uip_len);
+      uip_flags |= UIP_CLOSE;
+      if(uip_len > 0) {
+        uip_flags |= UIP_NEWDATA;
+      }
+      UIP_APPCALL();
+      uip_connr->len = 1;
+      uip_connr->tcpstateflags = UIP_LAST_ACK;
+      uip_connr->nrtx = 0;
+    tcp_send_finack:
+      BUF->flags = TCP_FIN | TCP_ACK;
+      goto tcp_send_nodata;
+    }
+
+    /* Check the URG flag. If this is set, the segment carries urgent
+       data that we must pass to the application. */
+    if((BUF->flags & TCP_URG) != 0) {
+#if UIP_URGDATA > 0
+      uip_urglen = (BUF->urgp[0] << 8) | BUF->urgp[1];
+      if(uip_urglen > uip_len) {
+        /* There is more urgent data in the next segment to come. */
+        uip_urglen = uip_len;
+      }
+      uip_add_rcv_nxt(uip_urglen);
+      uip_len -= uip_urglen;
+      uip_urgdata = uip_appdata;
+      uip_appdata += uip_urglen;
+    } else {
+      uip_urglen = 0;
+#else /* UIP_URGDATA > 0 */
+      uip_appdata = ((char *)uip_appdata) + ((BUF->urgp[0] << 8) | BUF->urgp[1]);
+      uip_len -= (BUF->urgp[0] << 8) | BUF->urgp[1];
+#endif /* UIP_URGDATA > 0 */
+    }
+
+    /* If uip_len > 0 we have TCP data in the packet, and we flag this
+       by setting the UIP_NEWDATA flag and update the sequence number
+       we acknowledge. If the application has stopped the dataflow
+       using uip_stop(), we must not accept any data packets from the
+       remote host. */
+    if(uip_len > 0 && !(uip_connr->tcpstateflags & UIP_STOPPED)) {
+      uip_flags |= UIP_NEWDATA;
+      uip_add_rcv_nxt(uip_len);
+    }
+
+    /* Check if the available buffer space advertised by the other end
+       is smaller than the initial MSS for this connection. If so, we
+       set the current MSS to the window size to ensure that the
+       application does not send more data than the other end can
+       handle.
+
+       If the remote host advertises a zero window, we set the MSS to
+       the initial MSS so that the application will send an entire MSS
+       of data. This data will not be acknowledged by the receiver,
+       and the application will retransmit it. This is called the
+       "persistent timer" and uses the retransmission mechanim.
+    */
+    tmp16 = ((u16_t)BUF->wnd[0] << 8) + (u16_t)BUF->wnd[1];
+    if(tmp16 > uip_connr->initialmss ||
+       tmp16 == 0) {
+      tmp16 = uip_connr->initialmss;
+    }
+    uip_connr->mss = tmp16;
+
+    /* If this packet constitutes an ACK for outstanding data (flagged
+       by the UIP_ACKDATA flag, we should call the application since it
+       might want to send more data. If the incoming packet had data
+       from the peer (as flagged by the UIP_NEWDATA flag), the
+       application must also be notified.
+
+       When the application is called, the global variable uip_len
+       contains the length of the incoming data. The application can
+       access the incoming data through the global pointer
+       uip_appdata, which usually points UIP_IPTCPH_LEN + UIP_LLH_LEN
+       bytes into the uip_buf array.
+
+       If the application wishes to send any data, this data should be
+       put into the uip_appdata and the length of the data should be
+       put into uip_len. If the application don't have any data to
+       send, uip_len must be set to 0. */
+    if(uip_flags & (UIP_NEWDATA | UIP_ACKDATA)) {
+      uip_slen = 0;
+      UIP_APPCALL();
+
+    appsend:
+
+      if(uip_flags & UIP_ABORT) {
+        uip_slen = 0;
+        uip_connr->tcpstateflags = UIP_CLOSED;
+        BUF->flags = TCP_RST | TCP_ACK;
+        goto tcp_send_nodata;
+      }
+
+      if(uip_flags & UIP_CLOSE) {
+        uip_slen = 0;
+        uip_connr->len = 1;
+        uip_connr->tcpstateflags = UIP_FIN_WAIT_1;
+        uip_connr->nrtx = 0;
+        BUF->flags = TCP_FIN | TCP_ACK;
+        goto tcp_send_nodata;
+      }
+
+      /* If uip_slen > 0, the application has data to be sent. */
+      if(uip_slen > 0) {
+
+        /* If the connection has acknowledged data, the contents of
+           the ->len variable should be discarded. */
+        if((uip_flags & UIP_ACKDATA) != 0) {
+          uip_connr->len = 0;
+        }
+
+        /* If the ->len variable is non-zero the connection has
+           already data in transit and cannot send anymore right
+           now. */
+        if(uip_connr->len == 0) {
+
+          /* The application cannot send more than what is allowed by
+             the mss (the minumum of the MSS and the available
+             window). */
+          if(uip_slen > uip_connr->mss) {
+            uip_slen = uip_connr->mss;
+          }
+
+          /* Remember how much data we send out now so that we know
+             when everything has been acknowledged. */
+          uip_connr->len = uip_slen;
+        } else {
+
+          /* If the application already had unacknowledged data, we
+             make sure that the application does not send (i.e.,
+             retransmit) out more than it previously sent out. */
+          uip_slen = uip_connr->len;
+        }
+      }
+      uip_connr->nrtx = 0;
+    apprexmit:
+      uip_appdata = uip_sappdata;
+
+      /* If the application has data to be sent, or if the incoming
+         packet had new data in it, we must send out a packet. */
+      if(uip_slen > 0 && uip_connr->len > 0) {
+        /* Add the length of the IP and TCP headers. */
+        uip_len = uip_connr->len + UIP_TCPIP_HLEN;
+        /* We always set the ACK flag in response packets. */
+        BUF->flags = TCP_ACK | TCP_PSH;
+        /* Send the packet. */
+        goto tcp_send_noopts;
+      }
+      /* If there is no data to send, just send out a pure ACK if
+         there is newdata. */
+      if(uip_flags & UIP_NEWDATA) {
+        uip_len = UIP_TCPIP_HLEN;
+        BUF->flags = TCP_ACK;
+        goto tcp_send_noopts;
+      }
+    }
+    goto drop;
+  case UIP_LAST_ACK:
+    /* We can close this connection if the peer has acknowledged our
+       FIN. This is indicated by the UIP_ACKDATA flag. */
+    if(uip_flags & UIP_ACKDATA) {
+      uip_connr->tcpstateflags = UIP_CLOSED;
+      uip_flags = UIP_CLOSE;
+      UIP_APPCALL();
+    }
+    break;
+
+  case UIP_FIN_WAIT_1:
+    /* The application has closed the connection, but the remote host
+       hasn't closed its end yet. Thus we do nothing but wait for a
+       FIN from the other side. */
+    if(uip_len > 0) {
+      uip_add_rcv_nxt(uip_len);
+    }
+    if(BUF->flags & TCP_FIN) {
+      if(uip_flags & UIP_ACKDATA) {
+        uip_connr->tcpstateflags = UIP_TIME_WAIT;
+        uip_connr->timer = 0;
+        uip_connr->len = 0;
+      } else {
+        uip_connr->tcpstateflags = UIP_CLOSING;
+      }
+      uip_add_rcv_nxt(1);
+      uip_flags = UIP_CLOSE;
+      UIP_APPCALL();
+      goto tcp_send_ack;
+    } else if(uip_flags & UIP_ACKDATA) {
+      uip_connr->tcpstateflags = UIP_FIN_WAIT_2;
+      uip_connr->len = 0;
+      goto drop;
+    }
+    if(uip_len > 0) {
+      goto tcp_send_ack;
+    }
+    goto drop;
+
+  case UIP_FIN_WAIT_2:
+    if(uip_len > 0) {
+      uip_add_rcv_nxt(uip_len);
+    }
+    if(BUF->flags & TCP_FIN) {
+      uip_connr->tcpstateflags = UIP_TIME_WAIT;
+      uip_connr->timer = 0;
+      uip_add_rcv_nxt(1);
+      uip_flags = UIP_CLOSE;
+      UIP_APPCALL();
+      goto tcp_send_ack;
+    }
+    if(uip_len > 0) {
+      goto tcp_send_ack;
+    }
+    goto drop;
+
+  case UIP_TIME_WAIT:
+    goto tcp_send_ack;
+
+  case UIP_CLOSING:
+    if(uip_flags & UIP_ACKDATA) {
+      uip_connr->tcpstateflags = UIP_TIME_WAIT;
+      uip_connr->timer = 0;
+    }
+  }
+  goto drop;
+
+
+  /* We jump here when we are ready to send the packet, and just want
+     to set the appropriate TCP sequence numbers in the TCP header. */
+ tcp_send_ack:
+  BUF->flags = TCP_ACK;
+ tcp_send_nodata:
+  uip_len = UIP_IPTCPH_LEN;
+ tcp_send_noopts:
+  BUF->tcpoffset = (UIP_TCPH_LEN / 4) << 4;
+ tcp_send:
+  /* We're done with the input processing. We are now ready to send a
+     reply. Our job is to fill in all the fields of the TCP and IP
+     headers before calculating the checksum and finally send the
+     packet. */
+  BUF->ackno[0] = uip_connr->rcv_nxt[0];
+  BUF->ackno[1] = uip_connr->rcv_nxt[1];
+  BUF->ackno[2] = uip_connr->rcv_nxt[2];
+  BUF->ackno[3] = uip_connr->rcv_nxt[3];
+
+  BUF->seqno[0] = uip_connr->snd_nxt[0];
+  BUF->seqno[1] = uip_connr->snd_nxt[1];
+  BUF->seqno[2] = uip_connr->snd_nxt[2];
+  BUF->seqno[3] = uip_connr->snd_nxt[3];
+
+  BUF->proto = UIP_PROTO_TCP;
+
+  BUF->srcport  = uip_connr->lport;
+  BUF->destport = uip_connr->rport;
+
+  uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
+  uip_ipaddr_copy(BUF->destipaddr, uip_connr->ripaddr);
+
+  if(uip_connr->tcpstateflags & UIP_STOPPED) {
+    /* If the connection has issued uip_stop(), we advertise a zero
+       window so that the remote host will stop sending data. */
+    BUF->wnd[0] = BUF->wnd[1] = 0;
+  } else {
+    BUF->wnd[0] = ((UIP_RECEIVE_WINDOW) >> 8);
+    BUF->wnd[1] = ((UIP_RECEIVE_WINDOW) & 0xff);
+  }
+
+ tcp_send_noconn:
+  BUF->ttl = UIP_TTL;
+#if UIP_CONF_IPV6
+  /* For IPv6, the IP length field does not include the IPv6 IP header
+     length. */
+  BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
+  BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
+#else /* UIP_CONF_IPV6 */
+  BUF->len[0] = (uip_len >> 8);
+  BUF->len[1] = (uip_len & 0xff);
+#endif /* UIP_CONF_IPV6 */
+
+  BUF->urgp[0] = BUF->urgp[1] = 0;
+
+  /* Calculate TCP checksum. */
+  BUF->tcpchksum = 0;
+  BUF->tcpchksum = ~(uip_tcpchksum());
+
+ ip_send_nolen:
+
+#if UIP_CONF_IPV6
+  BUF->vtc = 0x60;
+  BUF->tcflow = 0x00;
+  BUF->flow = 0x00;
+#else /* UIP_CONF_IPV6 */
+  BUF->vhl = 0x45;
+  BUF->tos = 0;
+  BUF->ipoffset[0] = BUF->ipoffset[1] = 0;
+  ++ipid;
+  BUF->ipid[0] = ipid >> 8;
+  BUF->ipid[1] = ipid & 0xff;
+  /* Calculate IP checksum. */
+  BUF->ipchksum = 0;
+  BUF->ipchksum = ~(uip_ipchksum());
+  DEBUG_PRINTF("uip ip_send_nolen: chkecum 0x%04x\n", uip_ipchksum());
+#endif /* UIP_CONF_IPV6 */
+
+  UIP_STAT(++uip_stat.tcp.sent);
+ send:
+  DEBUG_PRINTF("Sending packet with length %d (%d)\n", uip_len,
+               (BUF->len[0] << 8) | BUF->len[1]);
+
+  UIP_STAT(++uip_stat.ip.sent);
+  /* Return and let the caller do the actual transmission. */
+  uip_flags = 0;
+  return;
+ drop:
+  uip_len = 0;
+  uip_flags = 0;
+  return;
+}
+/*---------------------------------------------------------------------------*/
+u16_t
+htons(u16_t val)
+{
+  return HTONS(val);
+}
+/*---------------------------------------------------------------------------*/
+void
+uip_send(const void *data, int len)
+{
+  if(len > 0) {
+    uip_slen = len;
+    if(data != uip_sappdata) {
+      memcpy(uip_sappdata, (data), uip_slen);
+    }
+  }
+}
+/** @} */
Index: uKadecot/trunk/uip/uip/uip.h
===================================================================
--- uKadecot/trunk/uip/uip/uip.h	(revision 101)
+++ uKadecot/trunk/uip/uip/uip.h	(revision 101)
@@ -0,0 +1,1615 @@
+
+/**
+ * \addtogroup uip
+ * @{
+ */
+
+/**
+ * \file
+ * Header file for the uIP TCP/IP stack.
+ * \author Adam Dunkels <adam@dunkels.com>
+ *
+ * The uIP TCP/IP stack header file contains definitions for a number
+ * of C macros that are used by uIP programs as well as internal uIP
+ * structures, TCP/IP header structures and function declarations.
+ *
+ */
+
+
+/*
+ * Copyright (c) 2001-2003, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id$
+ *
+ */
+
+#ifndef __UIP_H__
+#define __UIP_H__
+
+#include "uipopt.h"
+
+/**
+ * Repressentation of an IP address.
+ *
+ */
+typedef u16_t uip_ip4addr_t[2];
+typedef u16_t uip_ip6addr_t[8];
+#if UIP_CONF_IPV6
+typedef uip_ip6addr_t uip_ipaddr_t;
+#else /* UIP_CONF_IPV6 */
+typedef uip_ip4addr_t uip_ipaddr_t;
+#endif /* UIP_CONF_IPV6 */
+
+/*---------------------------------------------------------------------------*/
+/* First, the functions that should be called from the
+ * system. Initialization, the periodic timer and incoming packets are
+ * handled by the following three functions.
+ */
+
+/**
+ * \defgroup uipconffunc uIP configuration functions
+ * @{
+ *
+ * The uIP configuration functions are used for setting run-time
+ * parameters in uIP such as IP addresses.
+ */
+
+/**
+ * Set the IP address of this host.
+ *
+ * The IP address is represented as a 4-byte array where the first
+ * octet of the IP address is put in the first member of the 4-byte
+ * array.
+ *
+ * Example:
+ \code
+
+ uip_ipaddr_t addr;
+
+ uip_ipaddr(&addr, 192,168,1,2);
+ uip_sethostaddr(&addr);
+
+ \endcode
+ * \param addr A pointer to an IP address of type uip_ipaddr_t;
+ *
+ * \sa uip_ipaddr()
+ *
+ * \hideinitializer
+ */
+#define uip_sethostaddr(addr) uip_ipaddr_copy(uip_hostaddr, (addr))
+
+/**
+ * Get the IP address of this host.
+ *
+ * The IP address is represented as a 4-byte array where the first
+ * octet of the IP address is put in the first member of the 4-byte
+ * array.
+ *
+ * Example:
+ \code
+ uip_ipaddr_t hostaddr;
+
+ uip_gethostaddr(&hostaddr);
+ \endcode
+ * \param addr A pointer to a uip_ipaddr_t variable that will be
+ * filled in with the currently configured IP address.
+ *
+ * \hideinitializer
+ */
+#define uip_gethostaddr(addr) uip_ipaddr_copy((addr), uip_hostaddr)
+
+/**
+ * Set the default router's IP address.
+ *
+ * \param addr A pointer to a uip_ipaddr_t variable containing the IP
+ * address of the default router.
+ *
+ * \sa uip_ipaddr()
+ *
+ * \hideinitializer
+ */
+#define uip_setdraddr(addr) uip_ipaddr_copy(uip_draddr, (addr))
+
+/**
+ * Set the netmask.
+ *
+ * \param addr A pointer to a uip_ipaddr_t variable containing the IP
+ * address of the netmask.
+ *
+ * \sa uip_ipaddr()
+ *
+ * \hideinitializer
+ */
+#define uip_setnetmask(addr) uip_ipaddr_copy(uip_netmask, (addr))
+
+
+/**
+ * Get the default router's IP address.
+ *
+ * \param addr A pointer to a uip_ipaddr_t variable that will be
+ * filled in with the IP address of the default router.
+ *
+ * \hideinitializer
+ */
+#define uip_getdraddr(addr) uip_ipaddr_copy((addr), uip_draddr)
+
+/**
+ * Get the netmask.
+ *
+ * \param addr A pointer to a uip_ipaddr_t variable that will be
+ * filled in with the value of the netmask.
+ *
+ * \hideinitializer
+ */
+#define uip_getnetmask(addr) uip_ipaddr_copy((addr), uip_netmask)
+
+/** @} */
+
+/**
+ * \defgroup uipinit uIP initialization functions
+ * @{
+ *
+ * The uIP initialization functions are used for booting uIP.
+ */
+
+/**
+ * uIP initialization function.
+ *
+ * This function should be called at boot up to initilize the uIP
+ * TCP/IP stack.
+ */
+void uip_init(void);
+
+/**
+ * uIP initialization function.
+ *
+ * This function may be used at boot time to set the initial ip_id.
+ */
+void uip_setipid(u16_t id);
+
+/** @} */
+
+/**
+ * \defgroup uipdevfunc uIP device driver functions
+ * @{
+ *
+ * These functions are used by a network device driver for interacting
+ * with uIP.
+ */
+
+/**
+ * Process an incoming packet.
+ *
+ * This function should be called when the device driver has received
+ * a packet from the network. The packet from the device driver must
+ * be present in the uip_buf buffer, and the length of the packet
+ * should be placed in the uip_len variable.
+ *
+ * When the function returns, there may be an outbound packet placed
+ * in the uip_buf packet buffer. If so, the uip_len variable is set to
+ * the length of the packet. If no packet is to be sent out, the
+ * uip_len variable is set to 0.
+ *
+ * The usual way of calling the function is presented by the source
+ * code below.
+ \code
+  uip_len = devicedriver_poll();
+  if(uip_len > 0) {
+    uip_input();
+    if(uip_len > 0) {
+      devicedriver_send();
+    }
+  }
+ \endcode
+ *
+ * \note If you are writing a uIP device driver that needs ARP
+ * (Address Resolution Protocol), e.g., when running uIP over
+ * Ethernet, you will need to call the uIP ARP code before calling
+ * this function:
+ \code
+  #define BUF ((struct uip_eth_hdr *)&uip_buf[0])
+  uip_len = ethernet_devicedrver_poll();
+  if(uip_len > 0) {
+    if(BUF->type == HTONS(UIP_ETHTYPE_IP)) {
+      uip_arp_ipin();
+      uip_input();
+      if(uip_len > 0) {
+        uip_arp_out();
+        ethernet_devicedriver_send();
+      }
+    } else if(BUF->type == HTONS(UIP_ETHTYPE_ARP)) {
+      uip_arp_arpin();
+      if(uip_len > 0) {
+        ethernet_devicedriver_send();
+      }
+    }
+ \endcode
+ *
+ * \hideinitializer
+ */
+#define uip_input()        uip_process(UIP_DATA)
+
+/**
+ * Periodic processing for a connection identified by its number.
+ *
+ * This function does the necessary periodic processing (timers,
+ * polling) for a uIP TCP conneciton, and should be called when the
+ * periodic uIP timer goes off. It should be called for every
+ * connection, regardless of whether they are open of closed.
+ *
+ * When the function returns, it may have an outbound packet waiting
+ * for service in the uIP packet buffer, and if so the uip_len
+ * variable is set to a value larger than zero. The device driver
+ * should be called to send out the packet.
+ *
+ * The ususal way of calling the function is through a for() loop like
+ * this:
+ \code
+  for(i = 0; i < UIP_CONNS; ++i) {
+    uip_periodic(i);
+    if(uip_len > 0) {
+      devicedriver_send();
+    }
+  }
+ \endcode
+ *
+ * \note If you are writing a uIP device driver that needs ARP
+ * (Address Resolution Protocol), e.g., when running uIP over
+ * Ethernet, you will need to call the uip_arp_out() function before
+ * calling the device driver:
+ \code
+  for(i = 0; i < UIP_CONNS; ++i) {
+    uip_periodic(i);
+    if(uip_len > 0) {
+      uip_arp_out();
+      ethernet_devicedriver_send();
+    }
+  }
+ \endcode
+ *
+ * \param conn The number of the connection which is to be periodically polled.
+ *
+ * \hideinitializer
+ */
+#define uip_periodic(conn) do { uip_conn = &uip_conns[conn]; \
+                                uip_process(UIP_TIMER); } while (0)
+
+/**
+ *
+ *
+ */
+#define uip_conn_active(conn) (uip_conns[conn].tcpstateflags != UIP_CLOSED)
+
+/**
+ * Perform periodic processing for a connection identified by a pointer
+ * to its structure.
+ *
+ * Same as uip_periodic() but takes a pointer to the actual uip_conn
+ * struct instead of an integer as its argument. This function can be
+ * used to force periodic processing of a specific connection.
+ *
+ * \param conn A pointer to the uip_conn struct for the connection to
+ * be processed.
+ *
+ * \hideinitializer
+ */
+#define uip_periodic_conn(conn) do { uip_conn = conn; \
+                                     uip_process(UIP_TIMER); } while (0)
+
+/**
+ * Reuqest that a particular connection should be polled.
+ *
+ * Similar to uip_periodic_conn() but does not perform any timer
+ * processing. The application is polled for new data.
+ *
+ * \param conn A pointer to the uip_conn struct for the connection to
+ * be processed.
+ *
+ * \hideinitializer
+ */
+#define uip_poll_conn(conn) do { uip_conn = conn; \
+                                 uip_process(UIP_POLL_REQUEST); } while (0)
+
+
+#if UIP_UDP
+/**
+ * Periodic processing for a UDP connection identified by its number.
+ *
+ * This function is essentially the same as uip_periodic(), but for
+ * UDP connections. It is called in a similar fashion as the
+ * uip_periodic() function:
+ \code
+  for(i = 0; i < UIP_UDP_CONNS; i++) {
+    uip_udp_periodic(i);
+    if(uip_len > 0) {
+      devicedriver_send();
+    }
+  }
+ \endcode
+ *
+ * \note As for the uip_periodic() function, special care has to be
+ * taken when using uIP together with ARP and Ethernet:
+ \code
+  for(i = 0; i < UIP_UDP_CONNS; i++) {
+    uip_udp_periodic(i);
+    if(uip_len > 0) {
+      uip_arp_out();
+      ethernet_devicedriver_send();
+    }
+  }
+ \endcode
+ *
+ * \param conn The number of the UDP connection to be processed.
+ *
+ * \hideinitializer
+ */
+#define uip_udp_periodic(conn) do { uip_udp_conn = &uip_udp_conns[conn]; \
+                                uip_process(UIP_UDP_TIMER); } while (0)
+
+/**
+ * Periodic processing for a UDP connection identified by a pointer to
+ * its structure.
+ *
+ * Same as uip_udp_periodic() but takes a pointer to the actual
+ * uip_conn struct instead of an integer as its argument. This
+ * function can be used to force periodic processing of a specific
+ * connection.
+ *
+ * \param conn A pointer to the uip_udp_conn struct for the connection
+ * to be processed.
+ *
+ * \hideinitializer
+ */
+#define uip_udp_periodic_conn(conn) do { uip_udp_conn = conn; \
+                                         uip_process(UIP_UDP_TIMER); } while (0)
+
+
+#endif /* UIP_UDP */
+
+/**
+ * The uIP packet buffer.
+ *
+ * The uip_buf array is used to hold incoming and outgoing
+ * packets. The device driver should place incoming data into this
+ * buffer. When sending data, the device driver should read the link
+ * level headers and the TCP/IP headers from this buffer. The size of
+ * the link level headers is configured by the UIP_LLH_LEN define.
+ *
+ * \note The application data need not be placed in this buffer, so
+ * the device driver must read it from the place pointed to by the
+ * uip_appdata pointer as illustrated by the following example:
+ \code
+ void
+ devicedriver_send(void)
+ {
+    hwsend(&uip_buf[0], UIP_LLH_LEN);
+    if(uip_len <= UIP_LLH_LEN + UIP_TCPIP_HLEN) {
+      hwsend(&uip_buf[UIP_LLH_LEN], uip_len - UIP_LLH_LEN);
+    } else {
+      hwsend(&uip_buf[UIP_LLH_LEN], UIP_TCPIP_HLEN);
+      hwsend(uip_appdata, uip_len - UIP_TCPIP_HLEN - UIP_LLH_LEN);
+    }
+ }
+ \endcode
+ */
+#if 0
+extern u8_t uip_buf[UIP_BUFSIZE+2];
+#else
+extern u8_t *uip_buf;
+#endif
+
+/** @} */
+
+/*---------------------------------------------------------------------------*/
+/* Functions that are used by the uIP application program. Opening and
+ * closing connections, sending and receiving data, etc. is all
+ * handled by the functions below.
+*/
+/**
+ * \defgroup uipappfunc uIP application functions
+ * @{
+ *
+ * Functions used by an application running of top of uIP.
+ */
+
+/**
+ * Start listening to the specified port.
+ *
+ * \note Since this function expects the port number in network byte
+ * order, a conversion using HTONS() or htons() is necessary.
+ *
+ \code
+ uip_listen(HTONS(80));
+ \endcode
+ *
+ * \param port A 16-bit port number in network byte order.
+ */
+void uip_listen(u16_t port);
+
+/**
+ * Stop listening to the specified port.
+ *
+ * \note Since this function expects the port number in network byte
+ * order, a conversion using HTONS() or htons() is necessary.
+ *
+ \code
+ uip_unlisten(HTONS(80));
+ \endcode
+ *
+ * \param port A 16-bit port number in network byte order.
+ */
+void uip_unlisten(u16_t port);
+
+/**
+ * Connect to a remote host using TCP.
+ *
+ * This function is used to start a new connection to the specified
+ * port on the specied host. It allocates a new connection identifier,
+ * sets the connection to the SYN_SENT state and sets the
+ * retransmission timer to 0. This will cause a TCP SYN segment to be
+ * sent out the next time this connection is periodically processed,
+ * which usually is done within 0.5 seconds after the call to
+ * uip_connect().
+ *
+ * \note This function is avaliable only if support for active open
+ * has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h.
+ *
+ * \note Since this function requires the port number to be in network
+ * byte order, a conversion using HTONS() or htons() is necessary.
+ *
+ \code
+ uip_ipaddr_t ipaddr;
+
+ uip_ipaddr(&ipaddr, 192,168,1,2);
+ uip_connect(&ipaddr, HTONS(80));
+ \endcode
+ *
+ * \param ripaddr The IP address of the remote hot.
+ *
+ * \param port A 16-bit port number in network byte order.
+ *
+ * \return A pointer to the uIP connection identifier for the new connection,
+ * or NULL if no connection could be allocated.
+ *
+ */
+struct uip_conn *uip_connect(uip_ipaddr_t *ripaddr, u16_t port);
+
+
+
+/**
+ * \internal
+ *
+ * Check if a connection has outstanding (i.e., unacknowledged) data.
+ *
+ * \param conn A pointer to the uip_conn structure for the connection.
+ *
+ * \hideinitializer
+ */
+#define uip_outstanding(conn) ((conn)->len)
+
+/**
+ * Send data on the current connection.
+ *
+ * This function is used to send out a single segment of TCP
+ * data. Only applications that have been invoked by uIP for event
+ * processing can send data.
+ *
+ * The amount of data that actually is sent out after a call to this
+ * funcion is determined by the maximum amount of data TCP allows. uIP
+ * will automatically crop the data so that only the appropriate
+ * amount of data is sent. The function uip_mss() can be used to query
+ * uIP for the amount of data that actually will be sent.
+ *
+ * \note This function does not guarantee that the sent data will
+ * arrive at the destination. If the data is lost in the network, the
+ * application will be invoked with the uip_rexmit() event being
+ * set. The application will then have to resend the data using this
+ * function.
+ *
+ * \param data A pointer to the data which is to be sent.
+ *
+ * \param len The maximum amount of data bytes to be sent.
+ *
+ * \hideinitializer
+ */
+void uip_send(const void *data, int len);
+
+/**
+ * The length of any incoming data that is currently avaliable (if avaliable)
+ * in the uip_appdata buffer.
+ *
+ * The test function uip_data() must first be used to check if there
+ * is any data available at all.
+ *
+ * \hideinitializer
+ */
+/*void uip_datalen(void);*/
+#define uip_datalen()       uip_len
+
+/**
+ * The length of any out-of-band data (urgent data) that has arrived
+ * on the connection.
+ *
+ * \note The configuration parameter UIP_URGDATA must be set for this
+ * function to be enabled.
+ *
+ * \hideinitializer
+ */
+#define uip_urgdatalen()    uip_urglen
+
+/**
+ * Close the current connection.
+ *
+ * This function will close the current connection in a nice way.
+ *
+ * \hideinitializer
+ */
+#define uip_close()         (uip_flags = UIP_CLOSE)
+
+/**
+ * Abort the current connection.
+ *
+ * This function will abort (reset) the current connection, and is
+ * usually used when an error has occured that prevents using the
+ * uip_close() function.
+ *
+ * \hideinitializer
+ */
+#define uip_abort()         (uip_flags = UIP_ABORT)
+
+/**
+ * Tell the sending host to stop sending data.
+ *
+ * This function will close our receiver's window so that we stop
+ * receiving data for the current connection.
+ *
+ * \hideinitializer
+ */
+#define uip_stop()          (uip_conn->tcpstateflags |= UIP_STOPPED)
+
+/**
+ * Find out if the current connection has been previously stopped with
+ * uip_stop().
+ *
+ * \hideinitializer
+ */
+#define uip_stopped(conn)   ((conn)->tcpstateflags & UIP_STOPPED)
+
+/**
+ * Restart the current connection, if is has previously been stopped
+ * with uip_stop().
+ *
+ * This function will open the receiver's window again so that we
+ * start receiving data for the current connection.
+ *
+ * \hideinitializer
+ */
+#define uip_restart()         do { uip_flags |= UIP_NEWDATA; \
+                                   uip_conn->tcpstateflags &= ~UIP_STOPPED; \
+                              } while(0)
+
+
+/* uIP tests that can be made to determine in what state the current
+   connection is, and what the application function should do. */
+
+/**
+ * Is the current connection a UDP connection?
+ *
+ * This function checks whether the current connection is a UDP connection.
+ *
+ * \hideinitializer
+ *
+ */
+#define uip_udpconnection() (uip_conn == NULL)
+
+/**
+ * Is new incoming data available?
+ *
+ * Will reduce to non-zero if there is new data for the application
+ * present at the uip_appdata pointer. The size of the data is
+ * avaliable through the uip_len variable.
+ *
+ * \hideinitializer
+ */
+#define uip_newdata()   (uip_flags & UIP_NEWDATA)
+
+/**
+ * Has previously sent data been acknowledged?
+ *
+ * Will reduce to non-zero if the previously sent data has been
+ * acknowledged by the remote host. This means that the application
+ * can send new data.
+ *
+ * \hideinitializer
+ */
+#define uip_acked()   (uip_flags & UIP_ACKDATA)
+
+/**
+ * Has the connection just been connected?
+ *
+ * Reduces to non-zero if the current connection has been connected to
+ * a remote host. This will happen both if the connection has been
+ * actively opened (with uip_connect()) or passively opened (with
+ * uip_listen()).
+ *
+ * \hideinitializer
+ */
+#define uip_connected() (uip_flags & UIP_CONNECTED)
+
+/**
+ * Has the connection been closed by the other end?
+ *
+ * Is non-zero if the connection has been closed by the remote
+ * host. The application may then do the necessary clean-ups.
+ *
+ * \hideinitializer
+ */
+#define uip_closed()    (uip_flags & UIP_CLOSE)
+
+/**
+ * Has the connection been aborted by the other end?
+ *
+ * Non-zero if the current connection has been aborted (reset) by the
+ * remote host.
+ *
+ * \hideinitializer
+ */
+#define uip_aborted()    (uip_flags & UIP_ABORT)
+
+/**
+ * Has the connection timed out?
+ *
+ * Non-zero if the current connection has been aborted due to too many
+ * retransmissions.
+ *
+ * \hideinitializer
+ */
+#define uip_timedout()    (uip_flags & UIP_TIMEDOUT)
+
+/**
+ * Do we need to retransmit previously data?
+ *
+ * Reduces to non-zero if the previously sent data has been lost in
+ * the network, and the application should retransmit it. The
+ * application should send the exact same data as it did the last
+ * time, using the uip_send() function.
+ *
+ * \hideinitializer
+ */
+#define uip_rexmit()     (uip_flags & UIP_REXMIT)
+
+/**
+ * Is the connection being polled by uIP?
+ *
+ * Is non-zero if the reason the application is invoked is that the
+ * current connection has been idle for a while and should be
+ * polled.
+ *
+ * The polling event can be used for sending data without having to
+ * wait for the remote host to send data.
+ *
+ * \hideinitializer
+ */
+#define uip_poll()       (uip_flags & UIP_POLL)
+
+/**
+ * Get the initial maxium segment size (MSS) of the current
+ * connection.
+ *
+ * \hideinitializer
+ */
+#define uip_initialmss()             (uip_conn->initialmss)
+
+/**
+ * Get the current maxium segment size that can be sent on the current
+ * connection.
+ *
+ * The current maxiumum segment size that can be sent on the
+ * connection is computed from the receiver's window and the MSS of
+ * the connection (which also is available by calling
+ * uip_initialmss()).
+ *
+ * \hideinitializer
+ */
+#define uip_mss()             (uip_conn->mss)
+
+/**
+ * Set up a new UDP connection.
+ *
+ * This function sets up a new UDP connection. The function will
+ * automatically allocate an unused local port for the new
+ * connection. However, another port can be chosen by using the
+ * uip_udp_bind() call, after the uip_udp_new() function has been
+ * called.
+ *
+ * Example:
+ \code
+ uip_ipaddr_t addr;
+ struct uip_udp_conn *c;
+
+ uip_ipaddr(&addr, 192,168,2,1);
+ c = uip_udp_new(&addr, HTONS(12345));
+ if(c != NULL) {
+   uip_udp_bind(c, HTONS(12344));
+ }
+ \endcode
+ * \param ripaddr The IP address of the remote host.
+ *
+ * \param rport The remote port number in network byte order.
+ *
+ * \return The uip_udp_conn structure for the new connection or NULL
+ * if no connection could be allocated.
+ */
+struct uip_udp_conn *uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport);
+
+/**
+ * Removed a UDP connection.
+ *
+ * \param conn A pointer to the uip_udp_conn structure for the connection.
+ *
+ * \hideinitializer
+ */
+#define uip_udp_remove(conn) (conn)->lport = 0
+
+/**
+ * Bind a UDP connection to a local port.
+ *
+ * \param conn A pointer to the uip_udp_conn structure for the
+ * connection.
+ *
+ * \param port The local port number, in network byte order.
+ *
+ * \hideinitializer
+ */
+#define uip_udp_bind(conn, port) (conn)->lport = port
+
+/**
+ * Send a UDP datagram of length len on the current connection.
+ *
+ * This function can only be called in response to a UDP event (poll
+ * or newdata). The data must be present in the uip_buf buffer, at the
+ * place pointed to by the uip_appdata pointer.
+ *
+ * \param len The length of the data in the uip_buf buffer.
+ *
+ * \hideinitializer
+ */
+#define uip_udp_send(len) uip_send((char *)uip_appdata, len)
+
+/** @} */
+
+/* uIP convenience and converting functions. */
+
+/**
+ * \defgroup uipconvfunc uIP conversion functions
+ * @{
+ *
+ * These functions can be used for converting between different data
+ * formats used by uIP.
+ */
+
+/**
+ * Construct an IP address from four bytes.
+ *
+ * This function constructs an IP address of the type that uIP handles
+ * internally from four bytes. The function is handy for specifying IP
+ * addresses to use with e.g. the uip_connect() function.
+ *
+ * Example:
+ \code
+ uip_ipaddr_t ipaddr;
+ struct uip_conn *c;
+
+ uip_ipaddr(&ipaddr, 192,168,1,2);
+ c = uip_connect(&ipaddr, HTONS(80));
+ \endcode
+ *
+ * \param addr A pointer to a uip_ipaddr_t variable that will be
+ * filled in with the IP address.
+ *
+ * \param addr0 The first octet of the IP address.
+ * \param addr1 The second octet of the IP address.
+ * \param addr2 The third octet of the IP address.
+ * \param addr3 The forth octet of the IP address.
+ *
+ * \hideinitializer
+ */
+#define uip_ipaddr(addr, addr0,addr1,addr2,addr3) do { \
+                     ((u16_t *)(addr))[0] = HTONS(((addr0) << 8) | (addr1)); \
+                     ((u16_t *)(addr))[1] = HTONS(((addr2) << 8) | (addr3)); \
+                  } while(0)
+
+/**
+ * Construct an IPv6 address from eight 16-bit words.
+ *
+ * This function constructs an IPv6 address.
+ *
+ * \hideinitializer
+ */
+#define uip_ip6addr(addr, addr0,addr1,addr2,addr3,addr4,addr5,addr6,addr7) do { \
+                     ((u16_t *)(addr))[0] = HTONS((addr0)); \
+                     ((u16_t *)(addr))[1] = HTONS((addr1)); \
+                     ((u16_t *)(addr))[2] = HTONS((addr2)); \
+                     ((u16_t *)(addr))[3] = HTONS((addr3)); \
+                     ((u16_t *)(addr))[4] = HTONS((addr4)); \
+                     ((u16_t *)(addr))[5] = HTONS((addr5)); \
+                     ((u16_t *)(addr))[6] = HTONS((addr6)); \
+                     ((u16_t *)(addr))[7] = HTONS((addr7)); \
+                  } while(0)
+
+/**
+ * Copy an IP address to another IP address.
+ *
+ * Copies an IP address from one place to another.
+ *
+ * Example:
+ \code
+ uip_ipaddr_t ipaddr1, ipaddr2;
+
+ uip_ipaddr(&ipaddr1, 192,16,1,2);
+ uip_ipaddr_copy(&ipaddr2, &ipaddr1);
+ \endcode
+ *
+ * \param dest The destination for the copy.
+ * \param src The source from where to copy.
+ *
+ * \hideinitializer
+ */
+#if !UIP_CONF_IPV6
+#define uip_ipaddr_copy(dest, src) do { \
+                     ((u16_t *)dest)[0] = ((u16_t *)src)[0]; \
+                     ((u16_t *)dest)[1] = ((u16_t *)src)[1]; \
+                  } while(0)
+#else /* !UIP_CONF_IPV6 */
+#define uip_ipaddr_copy(dest, src) memcpy(dest, src, sizeof(uip_ip6addr_t))
+#endif /* !UIP_CONF_IPV6 */
+
+/**
+ * Compare two IP addresses
+ *
+ * Compares two IP addresses.
+ *
+ * Example:
+ \code
+ uip_ipaddr_t ipaddr1, ipaddr2;
+
+ uip_ipaddr(&ipaddr1, 192,16,1,2);
+ if(uip_ipaddr_cmp(&ipaddr2, &ipaddr1)) {
+    printf("They are the same");
+ }
+ \endcode
+ *
+ * \param addr1 The first IP address.
+ * \param addr2 The second IP address.
+ *
+ * \hideinitializer
+ */
+#if !UIP_CONF_IPV6
+#define uip_ipaddr_cmp(addr1, addr2) (((u16_t *)addr1)[0] == ((u16_t *)addr2)[0] && \
+                                      ((u16_t *)addr1)[1] == ((u16_t *)addr2)[1])
+#else /* !UIP_CONF_IPV6 */
+#define uip_ipaddr_cmp(addr1, addr2) (memcmp(addr1, addr2, sizeof(uip_ip6addr_t)) == 0)
+#endif /* !UIP_CONF_IPV6 */
+
+/**
+ * Compare two IP addresses with netmasks
+ *
+ * Compares two IP addresses with netmasks. The masks are used to mask
+ * out the bits that are to be compared.
+ *
+ * Example:
+ \code
+ uip_ipaddr_t ipaddr1, ipaddr2, mask;
+
+ uip_ipaddr(&mask, 255,255,255,0);
+ uip_ipaddr(&ipaddr1, 192,16,1,2);
+ uip_ipaddr(&ipaddr2, 192,16,1,3);
+ if(uip_ipaddr_maskcmp(&ipaddr1, &ipaddr2, &mask)) {
+    printf("They are the same");
+ }
+ \endcode
+ *
+ * \param addr1 The first IP address.
+ * \param addr2 The second IP address.
+ * \param mask The netmask.
+ *
+ * \hideinitializer
+ */
+#define uip_ipaddr_maskcmp(addr1, addr2, mask) \
+                          (((((u16_t *)addr1)[0] & ((u16_t *)mask)[0]) == \
+                            (((u16_t *)addr2)[0] & ((u16_t *)mask)[0])) && \
+                           ((((u16_t *)addr1)[1] & ((u16_t *)mask)[1]) == \
+                            (((u16_t *)addr2)[1] & ((u16_t *)mask)[1])))
+
+
+/**
+ * Mask out the network part of an IP address.
+ *
+ * Masks out the network part of an IP address, given the address and
+ * the netmask.
+ *
+ * Example:
+ \code
+ uip_ipaddr_t ipaddr1, ipaddr2, netmask;
+
+ uip_ipaddr(&ipaddr1, 192,16,1,2);
+ uip_ipaddr(&netmask, 255,255,255,0);
+ uip_ipaddr_mask(&ipaddr2, &ipaddr1, &netmask);
+ \endcode
+ *
+ * In the example above, the variable "ipaddr2" will contain the IP
+ * address 192.168.1.0.
+ *
+ * \param dest Where the result is to be placed.
+ * \param src The IP address.
+ * \param mask The netmask.
+ *
+ * \hideinitializer
+ */
+#define uip_ipaddr_mask(dest, src, mask) do { \
+                     ((u16_t *)dest)[0] = ((u16_t *)src)[0] & ((u16_t *)mask)[0]; \
+                     ((u16_t *)dest)[1] = ((u16_t *)src)[1] & ((u16_t *)mask)[1]; \
+                  } while(0)
+
+/**
+ * Pick the first octet of an IP address.
+ *
+ * Picks out the first octet of an IP address.
+ *
+ * Example:
+ \code
+ uip_ipaddr_t ipaddr;
+ u8_t octet;
+
+ uip_ipaddr(&ipaddr, 1,2,3,4);
+ octet = uip_ipaddr1(&ipaddr);
+ \endcode
+ *
+ * In the example above, the variable "octet" will contain the value 1.
+ *
+ * \hideinitializer
+ */
+#define uip_ipaddr1(addr) (htons(((u16_t *)(addr))[0]) >> 8)
+
+/**
+ * Pick the second octet of an IP address.
+ *
+ * Picks out the second octet of an IP address.
+ *
+ * Example:
+ \code
+ uip_ipaddr_t ipaddr;
+ u8_t octet;
+
+ uip_ipaddr(&ipaddr, 1,2,3,4);
+ octet = uip_ipaddr2(&ipaddr);
+ \endcode
+ *
+ * In the example above, the variable "octet" will contain the value 2.
+ *
+ * \hideinitializer
+ */
+#define uip_ipaddr2(addr) (htons(((u16_t *)(addr))[0]) & 0xff)
+
+/**
+ * Pick the third octet of an IP address.
+ *
+ * Picks out the third octet of an IP address.
+ *
+ * Example:
+ \code
+ uip_ipaddr_t ipaddr;
+ u8_t octet;
+
+ uip_ipaddr(&ipaddr, 1,2,3,4);
+ octet = uip_ipaddr3(&ipaddr);
+ \endcode
+ *
+ * In the example above, the variable "octet" will contain the value 3.
+ *
+ * \hideinitializer
+ */
+#define uip_ipaddr3(addr) (htons(((u16_t *)(addr))[1]) >> 8)
+
+/**
+ * Pick the fourth octet of an IP address.
+ *
+ * Picks out the fourth octet of an IP address.
+ *
+ * Example:
+ \code
+ uip_ipaddr_t ipaddr;
+ u8_t octet;
+
+ uip_ipaddr(&ipaddr, 1,2,3,4);
+ octet = uip_ipaddr4(&ipaddr);
+ \endcode
+ *
+ * In the example above, the variable "octet" will contain the value 4.
+ *
+ * \hideinitializer
+ */
+#define uip_ipaddr4(addr) (htons(((u16_t *)(addr))[1]) & 0xff)
+
+/**
+ * Convert 16-bit quantity from host byte order to network byte order.
+ *
+ * This macro is primarily used for converting constants from host
+ * byte order to network byte order. For converting variables to
+ * network byte order, use the htons() function instead.
+ *
+ * \hideinitializer
+ */
+#ifndef HTONS
+#   if UIP_BYTE_ORDER == UIP_BIG_ENDIAN
+#      define HTONS(n) (n)
+#   else /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */
+#      define HTONS(n) (u16_t)((((u16_t) (n)) << 8) | (((u16_t) (n)) >> 8))
+#   endif /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */
+#else
+#error "HTONS already defined!"
+#endif /* HTONS */
+
+/**
+ * Convert 16-bit quantity from host byte order to network byte order.
+ *
+ * This function is primarily used for converting variables from host
+ * byte order to network byte order. For converting constants to
+ * network byte order, use the HTONS() macro instead.
+ */
+#ifndef htons
+u16_t htons(u16_t val);
+#endif /* htons */
+#ifndef ntohs
+#define ntohs htons
+#endif
+
+/** @} */
+
+/**
+ * Pointer to the application data in the packet buffer.
+ *
+ * This pointer points to the application data when the application is
+ * called. If the application wishes to send data, the application may
+ * use this space to write the data into before calling uip_send().
+ */
+extern void *uip_appdata;
+
+#if UIP_URGDATA > 0
+/* u8_t *uip_urgdata:
+ *
+ * This pointer points to any urgent data that has been received. Only
+ * present if compiled with support for urgent data (UIP_URGDATA).
+ */
+extern void *uip_urgdata;
+#endif /* UIP_URGDATA > 0 */
+
+
+/**
+ * \defgroup uipdrivervars Variables used in uIP device drivers
+ * @{
+ *
+ * uIP has a few global variables that are used in device drivers for
+ * uIP.
+ */
+
+/**
+ * The length of the packet in the uip_buf buffer.
+ *
+ * The global variable uip_len holds the length of the packet in the
+ * uip_buf buffer.
+ *
+ * When the network device driver calls the uIP input function,
+ * uip_len should be set to the length of the packet in the uip_buf
+ * buffer.
+ *
+ * When sending packets, the device driver should use the contents of
+ * the uip_len variable to determine the length of the outgoing
+ * packet.
+ *
+ */
+extern u16_t uip_len;
+
+/** @} */
+
+#if UIP_URGDATA > 0
+extern u16_t uip_urglen, uip_surglen;
+#endif /* UIP_URGDATA > 0 */
+
+
+/**
+ * Representation of a uIP TCP connection.
+ *
+ * The uip_conn structure is used for identifying a connection. All
+ * but one field in the structure are to be considered read-only by an
+ * application. The only exception is the appstate field whos purpose
+ * is to let the application store application-specific state (e.g.,
+ * file pointers) for the connection. The type of this field is
+ * configured in the "uipopt.h" header file.
+ */
+struct uip_conn {
+  uip_ipaddr_t ripaddr;   /**< The IP address of the remote host. */
+
+  u16_t lport;        /**< The local TCP port, in network byte order. */
+  u16_t rport;        /**< The local remote TCP port, in network byte
+                         order. */
+
+  u8_t rcv_nxt[4];    /**< The sequence number that we expect to
+                         receive next. */
+  u8_t snd_nxt[4];    /**< The sequence number that was last sent by
+                         us. */
+  u16_t len;          /**< Length of the data that was previously sent. */
+  u16_t mss;          /**< Current maximum segment size for the
+                         connection. */
+  u16_t initialmss;   /**< Initial maximum segment size for the
+                         connection. */
+  u8_t sa;            /**< Retransmission time-out calculation state
+                         variable. */
+  u8_t sv;            /**< Retransmission time-out calculation state
+                         variable. */
+  u8_t rto;           /**< Retransmission time-out. */
+  u8_t tcpstateflags; /**< TCP state and flags. */
+  u8_t timer;         /**< The retransmission timer. */
+  u8_t nrtx;          /**< The number of retransmissions for the last
+                         segment sent. */
+
+  /** The application state. */
+  uip_tcp_appstate_t appstate;
+};
+
+
+/**
+ * Pointer to the current TCP connection.
+ *
+ * The uip_conn pointer can be used to access the current TCP
+ * connection.
+ */
+extern struct uip_conn *uip_conn;
+/* The array containing all uIP connections. */
+extern struct uip_conn uip_conns[UIP_CONNS];
+/**
+ * \addtogroup uiparch
+ * @{
+ */
+
+/**
+ * 4-byte array used for the 32-bit sequence number calculations.
+ */
+extern u8_t uip_acc32[4];
+
+/** @} */
+
+
+#if UIP_UDP
+/**
+ * Representation of a uIP UDP connection.
+ */
+struct uip_udp_conn {
+  uip_ipaddr_t ripaddr;   /**< The IP address of the remote peer. */
+  u16_t lport;        /**< The local port number in network byte order. */
+  u16_t rport;        /**< The remote port number in network byte order. */
+  u8_t  ttl;          /**< Default time-to-live. */
+
+  /** The application state. */
+  uip_udp_appstate_t appstate;
+};
+
+/**
+ * The current UDP connection.
+ */
+extern struct uip_udp_conn *uip_udp_conn;
+extern struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS];
+#endif /* UIP_UDP */
+
+/**
+ * The structure holding the TCP/IP statistics that are gathered if
+ * UIP_STATISTICS is set to 1.
+ *
+ */
+struct uip_stats {
+  struct {
+    uip_stats_t drop;     /**< Number of dropped packets at the IP
+                             layer. */
+    uip_stats_t recv;     /**< Number of received packets at the IP
+                             layer. */
+    uip_stats_t sent;     /**< Number of sent packets at the IP
+                             layer. */
+    uip_stats_t vhlerr;   /**< Number of packets dropped due to wrong
+                             IP version or header length. */
+    uip_stats_t hblenerr; /**< Number of packets dropped due to wrong
+                             IP length, high byte. */
+    uip_stats_t lblenerr; /**< Number of packets dropped due to wrong
+                             IP length, low byte. */
+    uip_stats_t fragerr;  /**< Number of packets dropped since they
+                             were IP fragments. */
+    uip_stats_t chkerr;   /**< Number of packets dropped due to IP
+                             checksum errors. */
+    uip_stats_t protoerr; /**< Number of packets dropped since they
+                             were neither ICMP, UDP nor TCP. */
+  } ip;                   /**< IP statistics. */
+  struct {
+    uip_stats_t drop;     /**< Number of dropped ICMP packets. */
+    uip_stats_t recv;     /**< Number of received ICMP packets. */
+    uip_stats_t sent;     /**< Number of sent ICMP packets. */
+    uip_stats_t typeerr;  /**< Number of ICMP packets with a wrong
+                             type. */
+  } icmp;                 /**< ICMP statistics. */
+  struct {
+    uip_stats_t drop;     /**< Number of dropped TCP segments. */
+    uip_stats_t recv;     /**< Number of recived TCP segments. */
+    uip_stats_t sent;     /**< Number of sent TCP segments. */
+    uip_stats_t chkerr;   /**< Number of TCP segments with a bad
+                             checksum. */
+    uip_stats_t ackerr;   /**< Number of TCP segments with a bad ACK
+                             number. */
+    uip_stats_t rst;      /**< Number of recevied TCP RST (reset) segments. */
+    uip_stats_t rexmit;   /**< Number of retransmitted TCP segments. */
+    uip_stats_t syndrop;  /**< Number of dropped SYNs due to too few
+                             connections was avaliable. */
+    uip_stats_t synrst;   /**< Number of SYNs for closed ports,
+                             triggering a RST. */
+  } tcp;                  /**< TCP statistics. */
+#if UIP_UDP
+  struct {
+    uip_stats_t drop;     /**< Number of dropped UDP segments. */
+    uip_stats_t recv;     /**< Number of recived UDP segments. */
+    uip_stats_t sent;     /**< Number of sent UDP segments. */
+    uip_stats_t chkerr;   /**< Number of UDP segments with a bad
+                             checksum. */
+  } udp;                  /**< UDP statistics. */
+#endif /* UIP_UDP */
+};
+
+/**
+ * The uIP TCP/IP statistics.
+ *
+ * This is the variable in which the uIP TCP/IP statistics are gathered.
+ */
+extern struct uip_stats uip_stat;
+
+
+/*---------------------------------------------------------------------------*/
+/* All the stuff below this point is internal to uIP and should not be
+ * used directly by an application or by a device driver.
+ */
+/*---------------------------------------------------------------------------*/
+/* u8_t uip_flags:
+ *
+ * When the application is called, uip_flags will contain the flags
+ * that are defined in this file. Please read below for more
+ * infomation.
+ */
+extern u8_t uip_flags;
+
+/* The following flags may be set in the global variable uip_flags
+   before calling the application callback. The UIP_ACKDATA,
+   UIP_NEWDATA, and UIP_CLOSE flags may both be set at the same time,
+   whereas the others are mutualy exclusive. Note that these flags
+   should *NOT* be accessed directly, but only through the uIP
+   functions/macros. */
+
+#define UIP_ACKDATA   1     /* Signifies that the outstanding data was
+                               acked and the application should send
+                               out new data instead of retransmitting
+                               the last data. */
+#define UIP_NEWDATA   2     /* Flags the fact that the peer has sent
+                               us new data. */
+#define UIP_REXMIT    4     /* Tells the application to retransmit the
+                               data that was last sent. */
+#define UIP_POLL      8     /* Used for polling the application, to
+                               check if the application has data that
+                               it wants to send. */
+#define UIP_CLOSE     16    /* The remote host has closed the
+                               connection, thus the connection has
+                               gone away. Or the application signals
+                               that it wants to close the
+                               connection. */
+#define UIP_ABORT     32    /* The remote host has aborted the
+                               connection, thus the connection has
+                               gone away. Or the application signals
+                               that it wants to abort the
+                               connection. */
+#define UIP_CONNECTED 64    /* We have got a connection from a remote
+                               host and have set up a new connection
+                               for it, or an active connection has
+                               been successfully established. */
+
+#define UIP_TIMEDOUT  128   /* The connection has been aborted due to
+                               too many retransmissions. */
+
+/* uip_process(flag):
+ *
+ * The actual uIP function which does all the work.
+ */
+void uip_process(u8_t flag);
+
+/* The following flags are passed as an argument to the uip_process()
+   function. They are used to distinguish between the two cases where
+   uip_process() is called. It can be called either because we have
+   incoming data that should be processed, or because the periodic
+   timer has fired. These values are never used directly, but only in
+   the macrose defined in this file. */
+
+#define UIP_DATA          1     /* Tells uIP that there is incoming
+                                   data in the uip_buf buffer. The
+                                   length of the data is stored in the
+                                   global variable uip_len. */
+#define UIP_TIMER         2     /* Tells uIP that the periodic timer
+                                   has fired. */
+#define UIP_POLL_REQUEST  3     /* Tells uIP that a connection should
+                                   be polled. */
+#define UIP_UDP_SEND_CONN 4     /* Tells uIP that a UDP datagram
+                                   should be constructed in the
+                                   uip_buf buffer. */
+#if UIP_UDP
+#define UIP_UDP_TIMER     5
+#endif /* UIP_UDP */
+
+/* The TCP states used in the uip_conn->tcpstateflags. */
+#define UIP_CLOSED      0
+#define UIP_SYN_RCVD    1
+#define UIP_SYN_SENT    2
+#define UIP_ESTABLISHED 3
+#define UIP_FIN_WAIT_1  4
+#define UIP_FIN_WAIT_2  5
+#define UIP_CLOSING     6
+#define UIP_TIME_WAIT   7
+#define UIP_LAST_ACK    8
+#define UIP_TS_MASK     15
+
+#define UIP_STOPPED      16
+
+#ifdef __RX
+#pragma pack
+#elif _MSC_VER
+#pragma pack(push, 1)
+#endif
+
+/* The TCP and IP headers. */
+struct uip_tcpip_hdr {
+#if UIP_CONF_IPV6
+  /* IPv6 header. */
+  u8_t vtc,
+    tcflow;
+  u16_t flow;
+  u8_t len[2];
+  u8_t proto, ttl;
+  uip_ip6addr_t srcipaddr, destipaddr;
+#else /* UIP_CONF_IPV6 */
+  /* IPv4 header. */
+  u8_t vhl,
+    tos,
+    len[2],
+    ipid[2],
+    ipoffset[2],
+    ttl,
+    proto;
+  u16_t ipchksum;
+  u16_t srcipaddr[2],
+    destipaddr[2];
+#endif /* UIP_CONF_IPV6 */
+
+  /* TCP header. */
+  u16_t srcport,
+    destport;
+  u8_t seqno[4],
+    ackno[4],
+    tcpoffset,
+    flags,
+    wnd[2];
+  u16_t tcpchksum;
+  u8_t urgp[2];
+  u8_t optdata[4];
+};
+
+/* The ICMP and IP headers. */
+struct uip_icmpip_hdr {
+#if UIP_CONF_IPV6
+  /* IPv6 header. */
+  u8_t vtc,
+    tcf;
+  u16_t flow;
+  u8_t len[2];
+  u8_t proto, ttl;
+  uip_ip6addr_t srcipaddr, destipaddr;
+#else /* UIP_CONF_IPV6 */
+  /* IPv4 header. */
+  u8_t vhl,
+    tos,
+    len[2],
+    ipid[2],
+    ipoffset[2],
+    ttl,
+    proto;
+  u16_t ipchksum;
+  u16_t srcipaddr[2],
+    destipaddr[2];
+#endif /* UIP_CONF_IPV6 */
+
+  /* ICMP (echo) header. */
+  u8_t type, icode;
+  u16_t icmpchksum;
+#if !UIP_CONF_IPV6
+  u16_t id, seqno;
+#else /* !UIP_CONF_IPV6 */
+  u8_t flags, reserved1, reserved2, reserved3;
+  u8_t icmp6data[16];
+  u8_t options[1];
+#endif /* !UIP_CONF_IPV6 */
+};
+
+
+/* The UDP and IP headers. */
+struct uip_udpip_hdr {
+#if UIP_CONF_IPV6
+  /* IPv6 header. */
+  u8_t vtc,
+    tcf;
+  u16_t flow;
+  u8_t len[2];
+  u8_t proto, ttl;
+  uip_ip6addr_t srcipaddr, destipaddr;
+#else /* UIP_CONF_IPV6 */
+  /* IP header. */
+  u8_t vhl,
+    tos,
+    len[2],
+    ipid[2],
+    ipoffset[2],
+    ttl,
+    proto;
+  u16_t ipchksum;
+  u16_t srcipaddr[2],
+    destipaddr[2];
+#endif /* UIP_CONF_IPV6 */
+
+  /* UDP header. */
+  u16_t srcport,
+    destport;
+  u16_t udplen;
+  u16_t udpchksum;
+};
+
+#ifdef __RX
+#pragma unpack
+#elif _MSC_VER
+#pragma pack(pop)
+#endif
+
+/**
+ * The buffer size available for user data in the \ref uip_buf buffer.
+ *
+ * This macro holds the available size for user data in the \ref
+ * uip_buf buffer. The macro is intended to be used for checking
+ * bounds of available user data.
+ *
+ * Example:
+ \code
+ snprintf(uip_appdata, UIP_APPDATA_SIZE, "%u\n", i);
+ \endcode
+ *
+ * \hideinitializer
+ */
+#define UIP_APPDATA_SIZE (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN)
+
+
+#define UIP_PROTO_ICMP  1
+#define UIP_PROTO_TCP   6
+#define UIP_PROTO_UDP   17
+#define UIP_PROTO_ICMP6 58
+
+/* Header sizes. */
+#if UIP_CONF_IPV6
+#define UIP_IPH_LEN    40
+#else /* UIP_CONF_IPV6 */
+#define UIP_IPH_LEN    20    /* Size of IP header */
+#endif /* UIP_CONF_IPV6 */
+#define UIP_UDPH_LEN    8    /* Size of UDP header */
+#define UIP_TCPH_LEN   20    /* Size of TCP header */
+#define UIP_IPUDPH_LEN (UIP_UDPH_LEN + UIP_IPH_LEN)    /* Size of IP +
+                                                          UDP
+                                                          header */
+#define UIP_IPTCPH_LEN (UIP_TCPH_LEN + UIP_IPH_LEN)    /* Size of IP +
+                                                          TCP
+                                                          header */
+#define UIP_TCPIP_HLEN UIP_IPTCPH_LEN
+
+
+#if UIP_FIXEDADDR
+extern const uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr;
+#else /* UIP_FIXEDADDR */
+extern uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr;
+#endif /* UIP_FIXEDADDR */
+
+
+
+/**
+ * Representation of a 48-bit Ethernet address.
+ */
+struct uip_eth_addr {
+  u8_t addr[6];
+};
+
+/**
+ * Calculate the Internet checksum over a buffer.
+ *
+ * The Internet checksum is the one's complement of the one's
+ * complement sum of all 16-bit words in the buffer.
+ *
+ * See RFC1071.
+ *
+ * \param buf A pointer to the buffer over which the checksum is to be
+ * computed.
+ *
+ * \param len The length of the buffer over which the checksum is to
+ * be computed.
+ *
+ * \return The Internet checksum of the buffer.
+ */
+u16_t uip_chksum(u16_t *buf, u16_t len);
+
+/**
+ * Calculate the IP header checksum of the packet header in uip_buf.
+ *
+ * The IP header checksum is the Internet checksum of the 20 bytes of
+ * the IP header.
+ *
+ * \return The IP header checksum of the IP header in the uip_buf
+ * buffer.
+ */
+u16_t uip_ipchksum(void);
+
+/**
+ * Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
+ *
+ * The TCP checksum is the Internet checksum of data contents of the
+ * TCP segment, and a pseudo-header as defined in RFC793.
+ *
+ * \return The TCP checksum of the TCP segment in uip_buf and pointed
+ * to by uip_appdata.
+ */
+u16_t uip_tcpchksum(void);
+
+/**
+ * Calculate the UDP checksum of the packet in uip_buf and uip_appdata.
+ *
+ * The UDP checksum is the Internet checksum of data contents of the
+ * UDP segment, and a pseudo-header as defined in RFC768.
+ *
+ * \return The UDP checksum of the UDP segment in uip_buf and pointed
+ * to by uip_appdata.
+ */
+u16_t uip_udpchksum(void);
+
+
+#endif /* __UIP_H__ */
+
+
+/** @} */
Index: uKadecot/trunk/uip/uip/uip_arch.h
===================================================================
--- uKadecot/trunk/uip/uip/uip_arch.h	(revision 101)
+++ uKadecot/trunk/uip/uip/uip_arch.h	(revision 101)
@@ -0,0 +1,138 @@
+/**
+ * \addtogroup uip
+ * {@
+ */
+
+/**
+ * \defgroup uiparch Architecture specific uIP functions
+ * @{
+ *
+ * The functions in the architecture specific module implement the IP
+ * check sum and 32-bit additions.
+ *
+ * The IP checksum calculation is the most computationally expensive
+ * operation in the TCP/IP stack and it therefore pays off to
+ * implement this in efficient assembler. The purpose of the uip-arch
+ * module is to let the checksum functions to be implemented in
+ * architecture specific assembler.
+ *
+ */
+
+/**
+ * \file
+ * Declarations of architecture specific functions.
+ * \author Adam Dunkels <adam@dunkels.com>
+ */
+
+/*
+ * Copyright (c) 2001, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id$
+ *
+ */
+
+#ifndef __UIP_ARCH_H__
+#define __UIP_ARCH_H__
+
+#include "uip.h"
+
+/**
+ * Carry out a 32-bit addition.
+ *
+ * Because not all architectures for which uIP is intended has native
+ * 32-bit arithmetic, uIP uses an external C function for doing the
+ * required 32-bit additions in the TCP protocol processing. This
+ * function should add the two arguments and place the result in the
+ * global variable uip_acc32.
+ *
+ * \note The 32-bit integer pointed to by the op32 parameter and the
+ * result in the uip_acc32 variable are in network byte order (big
+ * endian).
+ *
+ * \param op32 A pointer to a 4-byte array representing a 32-bit
+ * integer in network byte order (big endian).
+ *
+ * \param op16 A 16-bit integer in host byte order.
+ */
+void uip_add32(u8_t *op32, u16_t op16);
+
+/**
+ * Calculate the Internet checksum over a buffer.
+ *
+ * The Internet checksum is the one's complement of the one's
+ * complement sum of all 16-bit words in the buffer.
+ *
+ * See RFC1071.
+ *
+ * \note This function is not called in the current version of uIP,
+ * but future versions might make use of it.
+ *
+ * \param buf A pointer to the buffer over which the checksum is to be
+ * computed.
+ *
+ * \param len The length of the buffer over which the checksum is to
+ * be computed.
+ *
+ * \return The Internet checksum of the buffer.
+ */
+u16_t uip_chksum(u16_t *buf, u16_t len);
+
+/**
+ * Calculate the IP header checksum of the packet header in uip_buf.
+ *
+ * The IP header checksum is the Internet checksum of the 20 bytes of
+ * the IP header.
+ *
+ * \return The IP header checksum of the IP header in the uip_buf
+ * buffer.
+ */
+u16_t uip_ipchksum(void);
+
+/**
+ * Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
+ *
+ * The TCP checksum is the Internet checksum of data contents of the
+ * TCP segment, and a pseudo-header as defined in RFC793.
+ *
+ * \note The uip_appdata pointer that points to the packet data may
+ * point anywhere in memory, so it is not possible to simply calculate
+ * the Internet checksum of the contents of the uip_buf buffer.
+ *
+ * \return The TCP checksum of the TCP segment in uip_buf and pointed
+ * to by uip_appdata.
+ */
+u16_t uip_tcpchksum(void);
+
+u16_t uip_udpchksum(void);
+
+/** @} */
+/** @} */
+
+#endif /* __UIP_ARCH_H__ */
Index: uKadecot/trunk/uip/uip/uip_arp.c
===================================================================
--- uKadecot/trunk/uip/uip/uip_arp.c	(revision 101)
+++ uKadecot/trunk/uip/uip/uip_arp.c	(revision 101)
@@ -0,0 +1,445 @@
+/**
+ * \addtogroup uip
+ * @{
+ */
+
+/**
+ * \defgroup uiparp uIP Address Resolution Protocol
+ * @{
+ *
+ * The Address Resolution Protocol ARP is used for mapping between IP
+ * addresses and link level addresses such as the Ethernet MAC
+ * addresses. ARP uses broadcast queries to ask for the link level
+ * address of a known IP address and the host which is configured with
+ * the IP address for which the query was meant, will respond with its
+ * link level address.
+ *
+ * \note This ARP implementation only supports Ethernet.
+ */
+
+/**
+ * \file
+ * Implementation of the ARP Address Resolution Protocol.
+ * \author Adam Dunkels <adam@dunkels.com>
+ *
+ */
+
+/*
+ * Copyright (c) 2001-2003, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id$
+ *
+ */
+
+
+#include "uip_arp.h"
+
+#include <string.h>
+
+#ifdef __RX
+#pragma pack
+#elif _MSC_VER
+#pragma pack(push, 1)
+#endif
+
+struct arp_hdr {
+  struct uip_eth_hdr ethhdr;
+  u16_t hwtype;
+  u16_t protocol;
+  u8_t hwlen;
+  u8_t protolen;
+  u16_t opcode;
+  struct uip_eth_addr shwaddr;
+  u16_t sipaddr[2];
+  struct uip_eth_addr dhwaddr;
+  u16_t dipaddr[2];
+};
+
+struct ethip_hdr {
+  struct uip_eth_hdr ethhdr;
+  /* IP header. */
+  u8_t vhl,
+    tos,
+    len[2],
+    ipid[2],
+    ipoffset[2],
+    ttl,
+    proto;
+  u16_t ipchksum;
+  u16_t srcipaddr[2],
+    destipaddr[2];
+};
+
+#ifdef __RX
+#pragma unpack
+#elif _MSC_VER
+#pragma pack(pop)
+#endif
+
+#define ARP_REQUEST 1
+#define ARP_REPLY   2
+
+#define ARP_HWTYPE_ETH 1
+
+struct arp_entry {
+  u16_t ipaddr[2];
+  struct uip_eth_addr ethaddr;
+  u8_t time;
+};
+
+static const struct uip_eth_addr broadcast_ethaddr =
+  {{0xff,0xff,0xff,0xff,0xff,0xff}};
+static const u16_t broadcast_ipaddr[2] = {0xffff,0xffff};
+static const u16_t multicast_ipaddr[2] = { 0x00e0, 0x0000 };
+static const u16_t multicast_mask[2] = { 0x00f0, 0x0000 };
+
+static struct arp_entry arp_table[UIP_ARPTAB_SIZE];
+static u16_t ipaddr[2];
+static u8_t i, c;
+
+static u8_t arptime;
+static u8_t tmpage;
+
+#define BUF   ((struct arp_hdr *)&uip_buf[0])
+#define IPBUF ((struct ethip_hdr *)&uip_buf[0])
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Initialize the ARP module.
+ *
+ */
+/*-----------------------------------------------------------------------------------*/
+void
+uip_arp_init(void)
+{
+  for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
+    memset(arp_table[i].ipaddr, 0, 4);
+  }
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Periodic ARP processing function.
+ *
+ * This function performs periodic timer processing in the ARP module
+ * and should be called at regular intervals. The recommended interval
+ * is 10 seconds between the calls.
+ *
+ */
+/*-----------------------------------------------------------------------------------*/
+void
+uip_arp_timer(void)
+{
+  struct arp_entry *tabptr;
+
+  ++arptime;
+  for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
+    tabptr = &arp_table[i];
+    if((tabptr->ipaddr[0] | tabptr->ipaddr[1]) != 0 &&
+       arptime - tabptr->time >= UIP_ARP_MAXAGE) {
+      memset(tabptr->ipaddr, 0, 4);
+    }
+  }
+
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+uip_arp_update(u16_t *ipaddr, struct uip_eth_addr *ethaddr)
+{
+  register struct arp_entry *tabptr = NULL;
+  /* Walk through the ARP mapping table and try to find an entry to
+     update. If none is found, the IP -> MAC address mapping is
+     inserted in the ARP table. */
+  for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
+
+    tabptr = &arp_table[i];
+    /* Only check those entries that are actually in use. */
+    if(tabptr->ipaddr[0] != 0 &&
+       tabptr->ipaddr[1] != 0) {
+
+      /* Check if the source IP address of the incoming packet matches
+         the IP address in this ARP table entry. */
+      if(ipaddr[0] == tabptr->ipaddr[0] &&
+         ipaddr[1] == tabptr->ipaddr[1]) {
+
+        /* An old entry found, update this and return. */
+        memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6);
+        tabptr->time = arptime;
+
+        return;
+      }
+    }
+  }
+
+  /* If we get here, no existing ARP table entry was found, so we
+     create one. */
+
+  /* First, we try to find an unused entry in the ARP table. */
+  for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
+    tabptr = &arp_table[i];
+    if(tabptr->ipaddr[0] == 0 &&
+       tabptr->ipaddr[1] == 0) {
+      break;
+    }
+  }
+
+  /* If no unused entry is found, we try to find the oldest entry and
+     throw it away. */
+  if(i == UIP_ARPTAB_SIZE) {
+    tmpage = 0;
+    c = 0;
+    for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
+      tabptr = &arp_table[i];
+      if(arptime - tabptr->time > tmpage) {
+        tmpage = arptime - tabptr->time;
+        c = i;
+      }
+    }
+    i = c;
+    tabptr = &arp_table[i];
+  }
+
+  /* Now, i is the ARP table entry which we will fill with the new
+     information. */
+  memcpy(tabptr->ipaddr, ipaddr, 4);
+  memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6);
+  tabptr->time = arptime;
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * ARP processing for incoming IP packets
+ *
+ * This function should be called by the device driver when an IP
+ * packet has been received. The function will check if the address is
+ * in the ARP cache, and if so the ARP cache entry will be
+ * refreshed. If no ARP cache entry was found, a new one is created.
+ *
+ * This function expects an IP packet with a prepended Ethernet header
+ * in the uip_buf[] buffer, and the length of the packet in the global
+ * variable uip_len.
+ */
+/*-----------------------------------------------------------------------------------*/
+#if 0
+void
+uip_arp_ipin(void)
+{
+  uip_len -= sizeof(struct uip_eth_hdr);
+
+  /* Only insert/update an entry if the source IP address of the
+     incoming IP packet comes from a host on the local network. */
+  if((IPBUF->srcipaddr[0] & uip_netmask[0]) !=
+     (uip_hostaddr[0] & uip_netmask[0])) {
+    return;
+  }
+  if((IPBUF->srcipaddr[1] & uip_netmask[1]) !=
+     (uip_hostaddr[1] & uip_netmask[1])) {
+    return;
+  }
+  uip_arp_update(IPBUF->srcipaddr, &(IPBUF->ethhdr.src));
+
+  return;
+}
+#endif /* 0 */
+/*-----------------------------------------------------------------------------------*/
+/**
+ * ARP processing for incoming ARP packets.
+ *
+ * This function should be called by the device driver when an ARP
+ * packet has been received. The function will act differently
+ * depending on the ARP packet type: if it is a reply for a request
+ * that we previously sent out, the ARP cache will be filled in with
+ * the values from the ARP reply. If the incoming ARP packet is an ARP
+ * request for our IP address, an ARP reply packet is created and put
+ * into the uip_buf[] buffer.
+ *
+ * When the function returns, the value of the global variable uip_len
+ * indicates whether the device driver should send out a packet or
+ * not. If uip_len is zero, no packet should be sent. If uip_len is
+ * non-zero, it contains the length of the outbound packet that is
+ * present in the uip_buf[] buffer.
+ *
+ * This function expects an ARP packet with a prepended Ethernet
+ * header in the uip_buf[] buffer, and the length of the packet in the
+ * global variable uip_len.
+ */
+/*-----------------------------------------------------------------------------------*/
+void
+uip_arp_arpin(void)
+{
+
+  if(uip_len < sizeof(struct arp_hdr)) {
+    uip_len = 0;
+    return;
+  }
+  uip_len = 0;
+
+  switch(BUF->opcode) {
+  case HTONS(ARP_REQUEST):
+    /* ARP request. If it asked for our address, we send out a
+       reply. */
+    if(uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr)) {
+      /* First, we register the one who made the request in our ARP
+         table, since it is likely that we will do more communication
+         with this host in the future. */
+      uip_arp_update(BUF->sipaddr, &BUF->shwaddr);
+
+      /* The reply opcode is 2. */
+      BUF->opcode = HTONS(2);
+
+      memcpy(BUF->dhwaddr.addr, BUF->shwaddr.addr, 6);
+      memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6);
+      memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6);
+      memcpy(BUF->ethhdr.dest.addr, BUF->dhwaddr.addr, 6);
+
+      BUF->dipaddr[0] = BUF->sipaddr[0];
+      BUF->dipaddr[1] = BUF->sipaddr[1];
+      BUF->sipaddr[0] = uip_hostaddr[0];
+      BUF->sipaddr[1] = uip_hostaddr[1];
+
+      BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP);
+      uip_len = sizeof(struct arp_hdr);
+    }
+    break;
+  case HTONS(ARP_REPLY):
+    /* ARP reply. We insert or update the ARP table if it was meant
+       for us. */
+    if(uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr)) {
+      uip_arp_update(BUF->sipaddr, &BUF->shwaddr);
+    }
+    break;
+  }
+
+  return;
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Prepend Ethernet header to an outbound IP packet and see if we need
+ * to send out an ARP request.
+ *
+ * This function should be called before sending out an IP packet. The
+ * function checks the destination IP address of the IP packet to see
+ * what Ethernet MAC address that should be used as a destination MAC
+ * address on the Ethernet.
+ *
+ * If the destination IP address is in the local network (determined
+ * by logical ANDing of netmask and our IP address), the function
+ * checks the ARP cache to see if an entry for the destination IP
+ * address is found. If so, an Ethernet header is prepended and the
+ * function returns. If no ARP cache entry is found for the
+ * destination IP address, the packet in the uip_buf[] is replaced by
+ * an ARP request packet for the IP address. The IP packet is dropped
+ * and it is assumed that they higher level protocols (e.g., TCP)
+ * eventually will retransmit the dropped packet.
+ *
+ * If the destination IP address is not on the local network, the IP
+ * address of the default router is used instead.
+ *
+ * When the function returns, a packet is present in the uip_buf[]
+ * buffer, and the length of the packet is in the global variable
+ * uip_len.
+ */
+/*-----------------------------------------------------------------------------------*/
+void
+uip_arp_out(void)
+{
+  struct arp_entry *tabptr = NULL;
+
+  /* Find the destination IP address in the ARP table and construct
+     the Ethernet header. If the destination IP addres isn't on the
+     local network, we use the default router's IP address instead.
+
+     If not ARP table entry is found, we overwrite the original IP
+     packet with an ARP request for the IP address. */
+
+  /* First check if destination is a local broadcast. */
+  if(uip_ipaddr_cmp(IPBUF->destipaddr, broadcast_ipaddr)) {
+    memcpy(IPBUF->ethhdr.dest.addr, broadcast_ethaddr.addr, 6);
+  }
+  else if(uip_ipaddr_maskcmp(IPBUF->destipaddr, multicast_ipaddr, multicast_mask)) {
+    IPBUF->ethhdr.dest.addr[0] = 0x01;
+    IPBUF->ethhdr.dest.addr[1] = 0x00;
+    IPBUF->ethhdr.dest.addr[2] = 0x5E;
+    IPBUF->ethhdr.dest.addr[3] = uip_ipaddr2(IPBUF->destipaddr) & 0x7F;
+    IPBUF->ethhdr.dest.addr[4] = uip_ipaddr3(IPBUF->destipaddr);
+    IPBUF->ethhdr.dest.addr[5] = uip_ipaddr4(IPBUF->destipaddr);
+  } else {
+    /* Check if the destination address is on the local network. */
+    if(!uip_ipaddr_maskcmp(IPBUF->destipaddr, uip_hostaddr, uip_netmask)) {
+      /* Destination address was not on the local network, so we need to
+         use the default router's IP address instead of the destination
+         address when determining the MAC address. */
+      uip_ipaddr_copy(ipaddr, uip_draddr);
+    } else {
+      /* Else, we use the destination IP address. */
+      uip_ipaddr_copy(ipaddr, IPBUF->destipaddr);
+    }
+
+    for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
+      tabptr = &arp_table[i];
+      if(uip_ipaddr_cmp(ipaddr, tabptr->ipaddr)) {
+        break;
+      }
+    }
+
+    if(i == UIP_ARPTAB_SIZE) {
+      /* The destination address was not in our ARP table, so we
+         overwrite the IP packet with an ARP request. */
+
+      memset(BUF->ethhdr.dest.addr, 0xff, 6);
+      memset(BUF->dhwaddr.addr, 0x00, 6);
+      memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6);
+      memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6);
+
+      uip_ipaddr_copy(BUF->dipaddr, ipaddr);
+      uip_ipaddr_copy(BUF->sipaddr, uip_hostaddr);
+      BUF->opcode = HTONS(ARP_REQUEST); /* ARP request. */
+      BUF->hwtype = HTONS(ARP_HWTYPE_ETH);
+      BUF->protocol = HTONS(UIP_ETHTYPE_IP);
+      BUF->hwlen = 6;
+      BUF->protolen = 4;
+      BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP);
+
+      uip_appdata = &uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN];
+
+      uip_len = sizeof(struct arp_hdr);
+      return;
+    }
+
+    /* Build an ethernet header. */
+    memcpy(IPBUF->ethhdr.dest.addr, tabptr->ethaddr.addr, 6);
+  }
+  memcpy(IPBUF->ethhdr.src.addr, uip_ethaddr.addr, 6);
+
+  IPBUF->ethhdr.type = HTONS(UIP_ETHTYPE_IP);
+
+  uip_len += sizeof(struct uip_eth_hdr);
+}
+/*-----------------------------------------------------------------------------------*/
+
+/** @} */
+/** @} */
Index: uKadecot/trunk/uip/uip/uip_arp.h
===================================================================
--- uKadecot/trunk/uip/uip/uip_arp.h	(revision 101)
+++ uKadecot/trunk/uip/uip/uip_arp.h	(revision 101)
@@ -0,0 +1,155 @@
+/**
+ * \addtogroup uip
+ * @{
+ */
+
+/**
+ * \addtogroup uiparp
+ * @{
+ */
+
+/**
+ * \file
+ * Macros and definitions for the ARP module.
+ * \author Adam Dunkels <adam@dunkels.com>
+ */
+
+
+/*
+ * Copyright (c) 2001-2003, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id$
+ *
+ */
+
+#ifndef __UIP_ARP_H__
+#define __UIP_ARP_H__
+
+#include "uip.h"
+
+#ifdef __RX
+#pragma pack
+#elif _MSC_VER
+#pragma pack(push, 1)
+#endif
+
+extern struct uip_eth_addr uip_ethaddr;
+
+/**
+ * The Ethernet header.
+ */
+struct uip_eth_hdr {
+  struct uip_eth_addr dest;
+  struct uip_eth_addr src;
+  u16_t type;
+};
+
+#ifdef __RX
+#pragma unpack
+#elif _MSC_VER
+#pragma pack(pop)
+#endif
+
+#define UIP_ETHTYPE_ARP 0x0806
+#define UIP_ETHTYPE_IP  0x0800
+#define UIP_ETHTYPE_IP6 0x86dd
+
+
+/* The uip_arp_init() function must be called before any of the other
+   ARP functions. */
+void uip_arp_init(void);
+
+/* The uip_arp_ipin() function should be called whenever an IP packet
+   arrives from the Ethernet. This function refreshes the ARP table or
+   inserts a new mapping if none exists. The function assumes that an
+   IP packet with an Ethernet header is present in the uip_buf buffer
+   and that the length of the packet is in the uip_len variable. */
+/*void uip_arp_ipin(void);*/
+#define uip_arp_ipin()
+
+/* The uip_arp_arpin() should be called when an ARP packet is received
+   by the Ethernet driver. This function also assumes that the
+   Ethernet frame is present in the uip_buf buffer. When the
+   uip_arp_arpin() function returns, the contents of the uip_buf
+   buffer should be sent out on the Ethernet if the uip_len variable
+   is > 0. */
+void uip_arp_arpin(void);
+
+/* The uip_arp_out() function should be called when an IP packet
+   should be sent out on the Ethernet. This function creates an
+   Ethernet header before the IP header in the uip_buf buffer. The
+   Ethernet header will have the correct Ethernet MAC destination
+   address filled in if an ARP table entry for the destination IP
+   address (or the IP address of the default router) is present. If no
+   such table entry is found, the IP packet is overwritten with an ARP
+   request and we rely on TCP to retransmit the packet that was
+   overwritten. In any case, the uip_len variable holds the length of
+   the Ethernet frame that should be transmitted. */
+void uip_arp_out(void);
+
+/* The uip_arp_timer() function should be called every ten seconds. It
+   is responsible for flushing old entries in the ARP table. */
+void uip_arp_timer(void);
+
+/** @} */
+
+/**
+ * \addtogroup uipconffunc
+ * @{
+ */
+
+
+/**
+ * Specifiy the Ethernet MAC address.
+ *
+ * The ARP code needs to know the MAC address of the Ethernet card in
+ * order to be able to respond to ARP queries and to generate working
+ * Ethernet headers.
+ *
+ * \note This macro only specifies the Ethernet MAC address to the ARP
+ * code. It cannot be used to change the MAC address of the Ethernet
+ * card.
+ *
+ * \param eaddr A pointer to a struct uip_eth_addr containing the
+ * Ethernet MAC address of the Ethernet card.
+ *
+ * \hideinitializer
+ */
+#define uip_setethaddr(eaddr) do {uip_ethaddr.addr[0] = eaddr.addr[0]; \
+                              uip_ethaddr.addr[1] = eaddr.addr[1];\
+                              uip_ethaddr.addr[2] = eaddr.addr[2];\
+                              uip_ethaddr.addr[3] = eaddr.addr[3];\
+                              uip_ethaddr.addr[4] = eaddr.addr[4];\
+                              uip_ethaddr.addr[5] = eaddr.addr[5];} while(0)
+
+/** @} */
+/** @} */
+
+#endif /* __UIP_ARP_H__ */
Index: uKadecot/trunk/uip/uip/uiplib.c
===================================================================
--- uKadecot/trunk/uip/uip/uiplib.c	(revision 101)
+++ uKadecot/trunk/uip/uip/uiplib.c	(revision 101)
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2004, Adam Dunkels and the Swedish Institute of
+ * Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * $Id$
+ *
+ */
+
+
+#include "uip.h"
+#include "uiplib.h"
+
+
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+uiplib_ipaddrconv(char *addrstr, unsigned char *ipaddr)
+{
+  unsigned char tmp;
+  char c;
+  unsigned char i, j;
+
+  tmp = 0;
+  
+  for(i = 0; i < 4; ++i) {
+    j = 0;
+    do {
+      c = *addrstr;
+      ++j;
+      if(j > 4) {
+        return 0;
+      }
+      if(c == '.' || c == 0) {
+        *ipaddr = tmp;
+        ++ipaddr;
+        tmp = 0;
+      } else if(c >= '0' && c <= '9') {
+        tmp = (tmp * 10) + (c - '0');
+      } else {
+        return 0;
+      }
+      ++addrstr;
+    } while(c != '.' && c != 0);
+  }
+  return 1;
+}
+
+/*-----------------------------------------------------------------------------------*/
Index: uKadecot/trunk/uip/uip/uiplib.h
===================================================================
--- uKadecot/trunk/uip/uip/uiplib.h	(revision 101)
+++ uKadecot/trunk/uip/uip/uiplib.h	(revision 101)
@@ -0,0 +1,71 @@
+/**
+ * \file
+ * Various uIP library functions.
+ * \author
+ * Adam Dunkels <adam@sics.se>
+ *
+ */
+
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack
+ *
+ * $Id$
+ *
+ */
+#ifndef __UIPLIB_H__
+#define __UIPLIB_H__
+
+/**
+ * \addtogroup uipconvfunc
+ * @{
+ */
+
+/**
+ * Convert a textual representation of an IP address to a numerical representation.
+ *
+ * This function takes a textual representation of an IP address in
+ * the form a.b.c.d and converts it into a 4-byte array that can be
+ * used by other uIP functions.
+ *
+ * \param addrstr A pointer to a string containing the IP address in
+ * textual form.
+ *
+ * \param addr A pointer to a 4-byte array that will be filled in with
+ * the numerical representation of the address.
+ *
+ * \retval 0 If the IP address could not be parsed.
+ * \retval Non-zero If the IP address was parsed.
+ */
+unsigned char uiplib_ipaddrconv(char *addrstr, unsigned char *addr);
+
+/** @} */
+
+#endif /* __UIPLIB_H__ */
Index: uKadecot/trunk/uip/uip/uipopt.h
===================================================================
--- uKadecot/trunk/uip/uip/uipopt.h	(revision 101)
+++ uKadecot/trunk/uip/uip/uipopt.h	(revision 101)
@@ -0,0 +1,539 @@
+/**
+ * \defgroup uipopt Configuration options for uIP
+ * @{
+ *
+ * uIP is configured using the per-project configuration file
+ * uipopt.h. This file contains all compile-time options for uIP and
+ * should be tweaked to match each specific project. The uIP
+ * distribution contains a documented example "uipopt.h" that can be
+ * copied and modified for each project.
+ *
+ * \note Most of the configuration options in the uipopt.h should not
+ * be changed, but rather the per-project uip-conf.h file.
+ */
+
+/**
+ * \file
+ * Configuration options for uIP.
+ * \author Adam Dunkels <adam@dunkels.com>
+ *
+ * This file is used for tweaking various configuration options for
+ * uIP. You should make a copy of this file into one of your project's
+ * directories instead of editing this example "uipopt.h" file that
+ * comes with the uIP distribution.
+ */
+
+/*
+ * Copyright (c) 2001-2003, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id$
+ *
+ */
+
+#ifndef __UIPOPT_H__
+#define __UIPOPT_H__
+
+#ifndef UIP_LITTLE_ENDIAN
+#define UIP_LITTLE_ENDIAN  3412
+#endif /* UIP_LITTLE_ENDIAN */
+#ifndef UIP_BIG_ENDIAN
+#define UIP_BIG_ENDIAN     1234
+#endif /* UIP_BIG_ENDIAN */
+
+#include "uip-conf.h"
+
+/*------------------------------------------------------------------------------*/
+
+/**
+ * \name Static configuration options
+ * @{
+ *
+ * These configuration options can be used for setting the IP address
+ * settings statically, but only if UIP_FIXEDADDR is set to 1. The
+ * configuration options for a specific node includes IP address,
+ * netmask and default router as well as the Ethernet address. The
+ * netmask, default router and Ethernet address are appliciable only
+ * if uIP should be run over Ethernet.
+ *
+ * All of these should be changed to suit your project.
+*/
+
+/**
+ * Determines if uIP should use a fixed IP address or not.
+ *
+ * If uIP should use a fixed IP address, the settings are set in the
+ * uipopt.h file. If not, the macros uip_sethostaddr(),
+ * uip_setdraddr() and uip_setnetmask() should be used instead.
+ *
+ * \hideinitializer
+ */
+#define UIP_FIXEDADDR    0
+
+/**
+ * Ping IP address asignment.
+ *
+ * uIP uses a "ping" packets for setting its own IP address if this
+ * option is set. If so, uIP will start with an empty IP address and
+ * the destination IP address of the first incoming "ping" (ICMP echo)
+ * packet will be used for setting the hosts IP address.
+ *
+ * \note This works only if UIP_FIXEDADDR is 0.
+ *
+ * \hideinitializer
+ */
+#ifdef UIP_CONF_PINGADDRCONF
+#define UIP_PINGADDRCONF UIP_CONF_PINGADDRCONF
+#else /* UIP_CONF_PINGADDRCONF */
+#define UIP_PINGADDRCONF 0
+#endif /* UIP_CONF_PINGADDRCONF */
+
+
+/**
+ * Specifies if the uIP ARP module should be compiled with a fixed
+ * Ethernet MAC address or not.
+ *
+ * If this configuration option is 0, the macro uip_setethaddr() can
+ * be used to specify the Ethernet address at run-time.
+ *
+ * \hideinitializer
+ */
+#define UIP_FIXEDETHADDR 0
+
+/** @} */
+/*------------------------------------------------------------------------------*/
+/**
+ * \name IP configuration options
+ * @{
+ *
+ */
+/**
+ * The IP TTL (time to live) of IP packets sent by uIP.
+ *
+ * This should normally not be changed.
+ */
+#define UIP_TTL         64
+
+/**
+ * Turn on support for IP packet reassembly.
+ *
+ * uIP supports reassembly of fragmented IP packets. This features
+ * requires an additonal amount of RAM to hold the reassembly buffer
+ * and the reassembly code size is approximately 700 bytes.  The
+ * reassembly buffer is of the same size as the uip_buf buffer
+ * (configured by UIP_BUFSIZE).
+ *
+ * \note IP packet reassembly is not heavily tested.
+ *
+ * \hideinitializer
+ */
+#define UIP_REASSEMBLY 0
+
+/**
+ * The maximum time an IP fragment should wait in the reassembly
+ * buffer before it is dropped.
+ *
+ */
+#define UIP_REASS_MAXAGE 40
+
+/** @} */
+
+/*------------------------------------------------------------------------------*/
+/**
+ * \name UDP configuration options
+ * @{
+ */
+
+/**
+ * Toggles wether UDP support should be compiled in or not.
+ *
+ * \hideinitializer
+ */
+#ifdef UIP_CONF_UDP
+#define UIP_UDP UIP_CONF_UDP
+#else /* UIP_CONF_UDP */
+#define UIP_UDP           0
+#endif /* UIP_CONF_UDP */
+
+/**
+ * Toggles if UDP checksums should be used or not.
+ *
+ * \note Support for UDP checksums is currently not included in uIP,
+ * so this option has no function.
+ *
+ * \hideinitializer
+ */
+#ifdef UIP_CONF_UDP_CHECKSUMS
+#define UIP_UDP_CHECKSUMS UIP_CONF_UDP_CHECKSUMS
+#else
+#define UIP_UDP_CHECKSUMS 0
+#endif
+
+/**
+ * The maximum amount of concurrent UDP connections.
+ *
+ * \hideinitializer
+ */
+#ifdef UIP_CONF_UDP_CONNS
+#define UIP_UDP_CONNS UIP_CONF_UDP_CONNS
+#else /* UIP_CONF_UDP_CONNS */
+#define UIP_UDP_CONNS    10
+#endif /* UIP_CONF_UDP_CONNS */
+
+/**
+ * The name of the function that should be called when UDP datagrams arrive.
+ *
+ * \hideinitializer
+ */
+
+
+/** @} */
+/*------------------------------------------------------------------------------*/
+/**
+ * \name TCP configuration options
+ * @{
+ */
+
+/**
+ * Determines if support for opening connections from uIP should be
+ * compiled in.
+ *
+ * If the applications that are running on top of uIP for this project
+ * do not need to open outgoing TCP connections, this configration
+ * option can be turned off to reduce the code size of uIP.
+ *
+ * \hideinitializer
+ */
+#define UIP_ACTIVE_OPEN 1
+
+/**
+ * The maximum number of simultaneously open TCP connections.
+ *
+ * Since the TCP connections are statically allocated, turning this
+ * configuration knob down results in less RAM used. Each TCP
+ * connection requires approximatly 30 bytes of memory.
+ *
+ * \hideinitializer
+ */
+#ifndef UIP_CONF_MAX_CONNECTIONS
+#define UIP_CONNS       10
+#else /* UIP_CONF_MAX_CONNECTIONS */
+#define UIP_CONNS UIP_CONF_MAX_CONNECTIONS
+#endif /* UIP_CONF_MAX_CONNECTIONS */
+
+
+/**
+ * The maximum number of simultaneously listening TCP ports.
+ *
+ * Each listening TCP port requires 2 bytes of memory.
+ *
+ * \hideinitializer
+ */
+#ifndef UIP_CONF_MAX_LISTENPORTS
+#define UIP_LISTENPORTS 20
+#else /* UIP_CONF_MAX_LISTENPORTS */
+#define UIP_LISTENPORTS UIP_CONF_MAX_LISTENPORTS
+#endif /* UIP_CONF_MAX_LISTENPORTS */
+
+/**
+ * Determines if support for TCP urgent data notification should be
+ * compiled in.
+ *
+ * Urgent data (out-of-band data) is a rarely used TCP feature that
+ * very seldom would be required.
+ *
+ * \hideinitializer
+ */
+#define UIP_URGDATA      0
+
+/**
+ * The initial retransmission timeout counted in timer pulses.
+ *
+ * This should not be changed.
+ */
+#define UIP_RTO         3
+
+/**
+ * The maximum number of times a segment should be retransmitted
+ * before the connection should be aborted.
+ *
+ * This should not be changed.
+ */
+#define UIP_MAXRTX      8
+
+/**
+ * The maximum number of times a SYN segment should be retransmitted
+ * before a connection request should be deemed to have been
+ * unsuccessful.
+ *
+ * This should not need to be changed.
+ */
+#define UIP_MAXSYNRTX      5
+
+/**
+ * The TCP maximum segment size.
+ *
+ * This is should not be to set to more than
+ * UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN.
+ */
+#define UIP_TCP_MSS     (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN)
+
+/**
+ * The size of the advertised receiver's window.
+ *
+ * Should be set low (i.e., to the size of the uip_buf buffer) is the
+ * application is slow to process incoming data, or high (32768 bytes)
+ * if the application processes data quickly.
+ *
+ * \hideinitializer
+ */
+#ifndef UIP_CONF_RECEIVE_WINDOW
+#define UIP_RECEIVE_WINDOW UIP_TCP_MSS
+#else
+#define UIP_RECEIVE_WINDOW UIP_CONF_RECEIVE_WINDOW
+#endif
+
+/**
+ * How long a connection should stay in the TIME_WAIT state.
+ *
+ * This configiration option has no real implication, and it should be
+ * left untouched.
+ */
+#define UIP_TIME_WAIT_TIMEOUT 120
+
+
+/** @} */
+/*------------------------------------------------------------------------------*/
+/**
+ * \name ARP configuration options
+ * @{
+ */
+
+/**
+ * The size of the ARP table.
+ *
+ * This option should be set to a larger value if this uIP node will
+ * have many connections from the local network.
+ *
+ * \hideinitializer
+ */
+#ifdef UIP_CONF_ARPTAB_SIZE
+#define UIP_ARPTAB_SIZE UIP_CONF_ARPTAB_SIZE
+#else
+#define UIP_ARPTAB_SIZE 8
+#endif
+
+/**
+ * The maxium age of ARP table entries measured in 10ths of seconds.
+ *
+ * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD
+ * default).
+ */
+#define UIP_ARP_MAXAGE 120
+
+/** @} */
+
+/*------------------------------------------------------------------------------*/
+
+/**
+ * \name General configuration options
+ * @{
+ */
+
+/**
+ * The size of the uIP packet buffer.
+ *
+ * The uIP packet buffer should not be smaller than 60 bytes, and does
+ * not need to be larger than 1500 bytes. Lower size results in lower
+ * TCP throughput, larger size results in higher TCP throughput.
+ *
+ * \hideinitializer
+ */
+#ifndef UIP_CONF_BUFFER_SIZE
+#define UIP_BUFSIZE     400
+#else /* UIP_CONF_BUFFER_SIZE */
+#define UIP_BUFSIZE UIP_CONF_BUFFER_SIZE
+#endif /* UIP_CONF_BUFFER_SIZE */
+
+
+/**
+ * Determines if statistics support should be compiled in.
+ *
+ * The statistics is useful for debugging and to show the user.
+ *
+ * \hideinitializer
+ */
+#ifndef UIP_CONF_STATISTICS
+#define UIP_STATISTICS  0
+#else /* UIP_CONF_STATISTICS */
+#define UIP_STATISTICS UIP_CONF_STATISTICS
+#endif /* UIP_CONF_STATISTICS */
+
+/**
+ * Determines if logging of certain events should be compiled in.
+ *
+ * This is useful mostly for debugging. The function uip_log()
+ * must be implemented to suit the architecture of the project, if
+ * logging is turned on.
+ *
+ * \hideinitializer
+ */
+#ifndef UIP_CONF_LOGGING
+#define UIP_LOGGING     0
+#else /* UIP_CONF_LOGGING */
+#define UIP_LOGGING     UIP_CONF_LOGGING
+#endif /* UIP_CONF_LOGGING */
+
+/**
+ * Broadcast support.
+ *
+ * This flag configures IP broadcast support. This is useful only
+ * together with UDP.
+ *
+ * \hideinitializer
+ *
+ */
+#ifndef UIP_CONF_BROADCAST
+#define UIP_BROADCAST 0
+#else /* UIP_CONF_BROADCAST */
+#define UIP_BROADCAST UIP_CONF_BROADCAST
+#endif /* UIP_CONF_BROADCAST */
+
+/**
+ * Print out a uIP log message.
+ *
+ * This function must be implemented by the module that uses uIP, and
+ * is called by uIP whenever a log message is generated.
+ */
+void uip_log(char *msg);
+
+/**
+ * The link level header length.
+ *
+ * This is the offset into the uip_buf where the IP header can be
+ * found. For Ethernet, this should be set to 14. For SLIP, this
+ * should be set to 0.
+ *
+ * \hideinitializer
+ */
+#ifdef UIP_CONF_LLH_LEN
+#define UIP_LLH_LEN UIP_CONF_LLH_LEN
+#else /* UIP_CONF_LLH_LEN */
+#define UIP_LLH_LEN     14
+#endif /* UIP_CONF_LLH_LEN */
+
+/** @} */
+/*------------------------------------------------------------------------------*/
+/**
+ * \name CPU architecture configuration
+ * @{
+ *
+ * The CPU architecture configuration is where the endianess of the
+ * CPU on which uIP is to be run is specified. Most CPUs today are
+ * little endian, and the most notable exception are the Motorolas
+ * which are big endian. The BYTE_ORDER macro should be changed to
+ * reflect the CPU architecture on which uIP is to be run.
+ */
+
+/**
+ * The byte order of the CPU architecture on which uIP is to be run.
+ *
+ * This option can be either BIG_ENDIAN (Motorola byte order) or
+ * LITTLE_ENDIAN (Intel byte order).
+ *
+ * \hideinitializer
+ */
+#ifdef UIP_CONF_BYTE_ORDER
+#define UIP_BYTE_ORDER     UIP_CONF_BYTE_ORDER
+#else /* UIP_CONF_BYTE_ORDER */
+#define UIP_BYTE_ORDER     UIP_LITTLE_ENDIAN
+#endif /* UIP_CONF_BYTE_ORDER */
+
+/** @} */
+/*------------------------------------------------------------------------------*/
+
+/**
+ * \name Appication specific configurations
+ * @{
+ *
+ * An uIP application is implemented using a single application
+ * function that is called by uIP whenever a TCP/IP event occurs. The
+ * name of this function must be registered with uIP at compile time
+ * using the UIP_APPCALL definition.
+ *
+ * uIP applications can store the application state within the
+ * uip_conn structure by specifying the type of the application
+ * structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t.
+ *
+ * The file containing the definitions must be included in the
+ * uipopt.h file.
+ *
+ * The following example illustrates how this can look.
+ \code
+
+void httpd_appcall(void);
+#define UIP_APPCALL     httpd_appcall
+
+struct httpd_state {
+  u8_t state;
+  u16_t count;
+  char *dataptr;
+  char *script;
+};
+typedef struct httpd_state uip_tcp_appstate_t
+ \endcode
+ */
+
+/**
+ * \var #define UIP_APPCALL
+ *
+ * The name of the application function that uIP should call in
+ * response to TCP/IP events.
+ *
+ */
+
+/**
+ * \var typedef uip_tcp_appstate_t
+ *
+ * The type of the application state that is to be stored in the
+ * uip_conn structure. This usually is typedef:ed to a struct holding
+ * application state information.
+ */
+
+/**
+ * \var typedef uip_udp_appstate_t
+ *
+ * The type of the application state that is to be stored in the
+ * uip_conn structure. This usually is typedef:ed to a struct holding
+ * application state information.
+ */
+/** @} */
+/** @} */
+
+#endif /* __UIPOPT_H__ */
